my-orders-tickets-widget 1.0.0-beta.14 → 1.0.0-beta.16
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/i18n.js +1 -1
- package/dist/index.js +77 -128
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -1078,7 +1078,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
1078
1078
|
|
|
1079
1079
|
|
|
1080
1080
|
|
|
1081
|
-
|
|
1081
|
+
const MultiStepSlider = _ref => {
|
|
1082
1082
|
let {
|
|
1083
1083
|
children,
|
|
1084
1084
|
open,
|
|
@@ -1088,6 +1088,9 @@ function MultiStepSlider(_ref) {
|
|
|
1088
1088
|
anchor: "right",
|
|
1089
1089
|
open: open,
|
|
1090
1090
|
onClose: onCloseSlider,
|
|
1091
|
+
style: {
|
|
1092
|
+
zIndex: 1000
|
|
1093
|
+
},
|
|
1091
1094
|
PaperProps: {
|
|
1092
1095
|
sx: {
|
|
1093
1096
|
width: "60%"
|
|
@@ -1103,7 +1106,7 @@ function MultiStepSlider(_ref) {
|
|
|
1103
1106
|
}), children]
|
|
1104
1107
|
})
|
|
1105
1108
|
});
|
|
1106
|
-
}
|
|
1109
|
+
};
|
|
1107
1110
|
MultiStepSlider.propTypes = {
|
|
1108
1111
|
children: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().node),
|
|
1109
1112
|
open: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().bool),
|
|
@@ -1769,7 +1772,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
1769
1772
|
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../utils */ "./src/utils/index.js");
|
|
1770
1773
|
/* harmony import */ var _AttendeeStatus__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./AttendeeStatus */ "./src/components/OrdersList/AttendeeStatus.js");
|
|
1771
1774
|
/* harmony import */ var _TicketDetail__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../TicketDetail */ "./src/components/TicketDetail/index.js");
|
|
1772
|
-
/* harmony import */ var
|
|
1775
|
+
/* harmony import */ var _hooks_useTicketDetails__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../hooks/useTicketDetails */ "./src/hooks/useTicketDetails.js");
|
|
1773
1776
|
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
|
|
1774
1777
|
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__);
|
|
1775
1778
|
|
|
@@ -1839,10 +1842,7 @@ const OrderListTickets = _ref2 => {
|
|
|
1839
1842
|
isRefundable,
|
|
1840
1843
|
isUnassigned,
|
|
1841
1844
|
isIncomplete
|
|
1842
|
-
} = (0,
|
|
1843
|
-
ticket,
|
|
1844
|
-
summit
|
|
1845
|
-
});
|
|
1845
|
+
} = (0,_hooks_useTicketDetails__WEBPACK_IMPORTED_MODULE_13__.useTicketDetails)(ticket);
|
|
1846
1846
|
const [openTicket, setOpenTicket] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);
|
|
1847
1847
|
const reassignDate = (0,_utils_summitUtils__WEBPACK_IMPORTED_MODULE_9__.getSummitReassignDate)(summit);
|
|
1848
1848
|
const isReassignable = reassignDate > now;
|
|
@@ -4225,8 +4225,8 @@ const TicketDetail = _ref => {
|
|
|
4225
4225
|
} = (0,react_redux__WEBPACK_IMPORTED_MODULE_2__.useSelector)(state => state.widgetState);
|
|
4226
4226
|
const [saveMessage, setSaveMessage] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);
|
|
4227
4227
|
const isOpen = ticketId && orderId && ownerId;
|
|
4228
|
-
const isUserOrderOwner = (ticket === null || ticket === void 0 || (_ticket$order = ticket.order) === null || _ticket$order === void 0 ? void 0 : _ticket$order.owner_id) === userProfile.id;
|
|
4229
|
-
const isUserTicketOwner = (ticket === null || ticket === void 0 || (_ticket$owner = ticket.owner) === null || _ticket$owner === void 0 ? void 0 : _ticket$owner.email) === userProfile.email;
|
|
4228
|
+
const isUserOrderOwner = (ticket === null || ticket === void 0 || (_ticket$order = ticket.order) === null || _ticket$order === void 0 ? void 0 : _ticket$order.owner_id) === (userProfile === null || userProfile === void 0 ? void 0 : userProfile.id);
|
|
4229
|
+
const isUserTicketOwner = (ticket === null || ticket === void 0 || (_ticket$owner = ticket.owner) === null || _ticket$owner === void 0 ? void 0 : _ticket$owner.email) === (userProfile === null || userProfile === void 0 ? void 0 : userProfile.email);
|
|
4230
4230
|
const canEditTicketData = (isUserTicketOwner || isUserOrderOwner) && summit.allow_update_attendee_extra_questions;
|
|
4231
4231
|
const {
|
|
4232
4232
|
isComplete
|
|
@@ -4235,13 +4235,13 @@ const TicketDetail = _ref => {
|
|
|
4235
4235
|
const answers = (0,_components_ExtraQuestionsFields_components_utils__WEBPACK_IMPORTED_MODULE_12__.transformAnwersFormat)(val);
|
|
4236
4236
|
return dispatch((0,_actions__WEBPACK_IMPORTED_MODULE_10__.saveTicketDetails)(ticket, answers)).then(() => {
|
|
4237
4237
|
setSaveMessage({
|
|
4238
|
-
title: "
|
|
4239
|
-
description: "
|
|
4238
|
+
title: t("ticket_detail.saving_success"),
|
|
4239
|
+
description: t("ticket_detail.saving_success_description")
|
|
4240
4240
|
});
|
|
4241
4241
|
return Promise.resolve();
|
|
4242
4242
|
}).catch(err => {
|
|
4243
4243
|
setSaveMessage({
|
|
4244
|
-
title: "
|
|
4244
|
+
title: t("ticket_detail.saving_error"),
|
|
4245
4245
|
description: err.toString()
|
|
4246
4246
|
});
|
|
4247
4247
|
return Promise.reject();
|
|
@@ -4368,10 +4368,10 @@ const TicketDetail = _ref => {
|
|
|
4368
4368
|
};
|
|
4369
4369
|
TicketDetail.propTypes = {
|
|
4370
4370
|
summit: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().object),
|
|
4371
|
-
onClose: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func),
|
|
4372
4371
|
ticketId: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().number),
|
|
4373
4372
|
orderId: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().number),
|
|
4374
|
-
ownerId: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().number)
|
|
4373
|
+
ownerId: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().number),
|
|
4374
|
+
onClose: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func)
|
|
4375
4375
|
};
|
|
4376
4376
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (TicketDetail);
|
|
4377
4377
|
|
|
@@ -4395,12 +4395,10 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
4395
4395
|
/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_i18next__WEBPACK_IMPORTED_MODULE_2__);
|
|
4396
4396
|
/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/material */ "@mui/material");
|
|
4397
4397
|
/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_mui_material__WEBPACK_IMPORTED_MODULE_3__);
|
|
4398
|
-
/* harmony import */ var
|
|
4399
|
-
/* harmony import */ var
|
|
4400
|
-
/* harmony import */ var
|
|
4401
|
-
/* harmony import */ var
|
|
4402
|
-
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__);
|
|
4403
|
-
|
|
4398
|
+
/* harmony import */ var _hooks_useTicketDetails__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../hooks/useTicketDetails */ "./src/hooks/useTicketDetails.js");
|
|
4399
|
+
/* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./styles.module.scss */ "./src/components/TicketStatus/styles.module.scss");
|
|
4400
|
+
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
|
|
4401
|
+
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__);
|
|
4404
4402
|
|
|
4405
4403
|
|
|
4406
4404
|
|
|
@@ -4408,7 +4406,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
4408
4406
|
|
|
4409
4407
|
|
|
4410
4408
|
|
|
4411
|
-
|
|
4409
|
+
const TicketStatus = _ref => {
|
|
4412
4410
|
var _ticket$refund_reques;
|
|
4413
4411
|
let {
|
|
4414
4412
|
ticket
|
|
@@ -4417,48 +4415,50 @@ function TicketStatus(_ref) {
|
|
|
4417
4415
|
t
|
|
4418
4416
|
} = (0,react_i18next__WEBPACK_IMPORTED_MODULE_2__.useTranslation)();
|
|
4419
4417
|
const isActive = ticket.is_active;
|
|
4420
|
-
const
|
|
4421
|
-
const
|
|
4422
|
-
|
|
4423
|
-
|
|
4424
|
-
|
|
4425
|
-
|
|
4426
|
-
|
|
4427
|
-
|
|
4418
|
+
const refundRequests = (_ticket$refund_reques = ticket.refund_requests) === null || _ticket$refund_reques === void 0 ? void 0 : _ticket$refund_reques.find(r => r.status === "Requested");
|
|
4419
|
+
const {
|
|
4420
|
+
isIncomplete,
|
|
4421
|
+
isUnassigned,
|
|
4422
|
+
isComplete
|
|
4423
|
+
} = (0,_hooks_useTicketDetails__WEBPACK_IMPORTED_MODULE_4__.useTicketDetails)(ticket);
|
|
4424
|
+
return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Container, {
|
|
4425
|
+
className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.ticketStatusContainer,
|
|
4426
|
+
children: isActive ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.Fragment, {
|
|
4427
|
+
children: [refundRequests && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
|
|
4428
4428
|
role: "button",
|
|
4429
4429
|
"aria-label": "ticket status refund requested",
|
|
4430
|
-
className: "".concat(
|
|
4430
|
+
className: "".concat(_styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.buttonPill, " ").concat(_styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.buttonRefundRequested),
|
|
4431
4431
|
children: t("ticket_status.status_refund_requested")
|
|
4432
|
-
}),
|
|
4432
|
+
}), isIncomplete && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
|
|
4433
4433
|
role: "button",
|
|
4434
4434
|
"aria-label": "ticket status incomplete",
|
|
4435
|
-
className: "".concat(
|
|
4435
|
+
className: "".concat(_styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.buttonPill, " ").concat(_styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.buttonIncomplete),
|
|
4436
4436
|
children: t("ticket_status.status_incomplete")
|
|
4437
|
-
}),
|
|
4437
|
+
}), isUnassigned && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
|
|
4438
4438
|
role: "button",
|
|
4439
4439
|
"aria-label": "ticket status unassigned",
|
|
4440
|
-
className: "".concat(
|
|
4440
|
+
className: "".concat(_styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.buttonPill, " ").concat(_styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.buttonUnassigned),
|
|
4441
4441
|
children: t("ticket_status.status_unassigned")
|
|
4442
|
-
}),
|
|
4442
|
+
}), isComplete && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
|
|
4443
4443
|
role: "button",
|
|
4444
4444
|
"aria-label": "ticket status complete",
|
|
4445
|
-
className: "".concat(
|
|
4445
|
+
className: "".concat(_styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.buttonPill, " ").concat(_styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.buttonComplete),
|
|
4446
4446
|
children: t("ticket_status.status_complete")
|
|
4447
4447
|
})]
|
|
4448
|
-
}) : /*#__PURE__*/(0,
|
|
4448
|
+
}) : /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
|
|
4449
4449
|
role: "button",
|
|
4450
4450
|
"aria-label": "ticket status cancelled",
|
|
4451
|
-
className: "".concat(
|
|
4451
|
+
className: "".concat(_styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.buttonPill, " ").concat(_styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.buttonCancelled),
|
|
4452
4452
|
children: t("ticket_status.status_cancelled")
|
|
4453
4453
|
})
|
|
4454
4454
|
});
|
|
4455
|
-
}
|
|
4455
|
+
};
|
|
4456
4456
|
TicketStatus.propTypes = {
|
|
4457
4457
|
ticket: prop_types__WEBPACK_IMPORTED_MODULE_1___default().shape({
|
|
4458
4458
|
owner: prop_types__WEBPACK_IMPORTED_MODULE_1___default().shape({
|
|
4459
4459
|
status: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string)
|
|
4460
4460
|
}),
|
|
4461
|
-
|
|
4461
|
+
refundRequests: prop_types__WEBPACK_IMPORTED_MODULE_1___default().arrayOf(Object)
|
|
4462
4462
|
})
|
|
4463
4463
|
};
|
|
4464
4464
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (TicketStatus);
|
|
@@ -4479,12 +4479,14 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
4479
4479
|
/* harmony export */ STATUS_UNASSIGNED: () => (/* binding */ STATUS_UNASSIGNED),
|
|
4480
4480
|
/* harmony export */ useTicketDetails: () => (/* binding */ useTicketDetails)
|
|
4481
4481
|
/* harmony export */ });
|
|
4482
|
+
/* harmony import */ var _utils_ticketUtils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/ticketUtils */ "./src/utils/ticketUtils.js");
|
|
4483
|
+
|
|
4482
4484
|
const STATUS_COMPLETE = "Complete";
|
|
4483
4485
|
const STATUS_INCOMPLETE = "Incomplete";
|
|
4484
4486
|
const STATUS_CANCELLED = "Cancelled";
|
|
4485
4487
|
const STATUS_UNASSIGNED = "Unassigned";
|
|
4486
4488
|
const useTicketDetails = ticket => {
|
|
4487
|
-
var _ticket$promo_code, _ticket$owner3, _ticket$owner4;
|
|
4489
|
+
var _ticket$ticket_type, _ticket$promo_code, _ticket$owner3, _ticket$owner4;
|
|
4488
4490
|
const getStatus = () => {
|
|
4489
4491
|
var _ticket$owner, _ticket$owner2;
|
|
4490
4492
|
if (!ticket.is_active) return STATUS_CANCELLED;
|
|
@@ -4495,8 +4497,8 @@ const useTicketDetails = ticket => {
|
|
|
4495
4497
|
if (!ticket) return {};
|
|
4496
4498
|
const status = getStatus();
|
|
4497
4499
|
const isActive = ticket.is_active && status !== STATUS_CANCELLED;
|
|
4498
|
-
const isRefundable =
|
|
4499
|
-
const allowsDelegate = (ticket.ticket_type.allows_to_delegate || ((_ticket$promo_code = ticket.promo_code) === null || _ticket$promo_code === void 0 ? void 0 : _ticket$promo_code.allows_to_delegate)) && status !== STATUS_UNASSIGNED && !((_ticket$owner3 = ticket.owner) !== null && _ticket$owner3 !== void 0 && (_ticket$owner3 = _ticket$owner3.manager) !== null && _ticket$owner3 !== void 0 && _ticket$owner3.id) && !((_ticket$owner4 = ticket.owner) !== null && _ticket$owner4 !== void 0 && _ticket$owner4.manager_id);
|
|
4500
|
+
const isRefundable = (0,_utils_ticketUtils__WEBPACK_IMPORTED_MODULE_0__.isTicketRefundable)(ticket);
|
|
4501
|
+
const allowsDelegate = ((ticket === null || ticket === void 0 || (_ticket$ticket_type = ticket.ticket_type) === null || _ticket$ticket_type === void 0 ? void 0 : _ticket$ticket_type.allows_to_delegate) || (ticket === null || ticket === void 0 || (_ticket$promo_code = ticket.promo_code) === null || _ticket$promo_code === void 0 ? void 0 : _ticket$promo_code.allows_to_delegate)) && status !== STATUS_UNASSIGNED && !((_ticket$owner3 = ticket.owner) !== null && _ticket$owner3 !== void 0 && (_ticket$owner3 = _ticket$owner3.manager) !== null && _ticket$owner3 !== void 0 && _ticket$owner3.id) && !((_ticket$owner4 = ticket.owner) !== null && _ticket$owner4 !== void 0 && _ticket$owner4.manager_id);
|
|
4500
4502
|
const isComplete = status === STATUS_COMPLETE;
|
|
4501
4503
|
const isUnassigned = status === STATUS_UNASSIGNED;
|
|
4502
4504
|
const isIncomplete = status === STATUS_INCOMPLETE;
|
|
@@ -4691,7 +4693,7 @@ const WidgetReducer = function () {
|
|
|
4691
4693
|
var _ticketsRefundRequest;
|
|
4692
4694
|
return o.id === ((_ticketsRefundRequest = ticketsRefundRequested[0]) === null || _ticketsRefundRequest === void 0 ? void 0 : _ticketsRefundRequest.order_id);
|
|
4693
4695
|
});
|
|
4694
|
-
const updatedTickets = order.memberTickets.map(ticket => ticketsRefundRequested.find(trr => trr.id === ticket.id) || ticket);
|
|
4696
|
+
const updatedTickets = order === null || order === void 0 ? void 0 : order.memberTickets.map(ticket => ticketsRefundRequested.find(trr => trr.id === ticket.id) || ticket);
|
|
4695
4697
|
const updatedOrder = _objectSpread(_objectSpread({}, order), {}, {
|
|
4696
4698
|
memberTickets: updatedTickets
|
|
4697
4699
|
});
|
|
@@ -4718,15 +4720,20 @@ const WidgetReducer = function () {
|
|
|
4718
4720
|
case _actions__WEBPACK_IMPORTED_MODULE_2__.UPDATE_TICKET:
|
|
4719
4721
|
{
|
|
4720
4722
|
const ticketData = payload.response;
|
|
4721
|
-
state.memberOrders.
|
|
4722
|
-
|
|
4723
|
+
const newOrders = state.memberOrders.map(order => {
|
|
4724
|
+
const newTickets = order.memberTickets.map(ticket => {
|
|
4723
4725
|
if (ticket.id === ticketData.id) {
|
|
4724
4726
|
return ticketData;
|
|
4725
4727
|
}
|
|
4726
4728
|
return ticket;
|
|
4727
4729
|
});
|
|
4730
|
+
return _objectSpread(_objectSpread({}, order), {}, {
|
|
4731
|
+
memberTickets: newTickets
|
|
4732
|
+
});
|
|
4733
|
+
});
|
|
4734
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
4735
|
+
memberOrders: newOrders
|
|
4728
4736
|
});
|
|
4729
|
-
return state;
|
|
4730
4737
|
}
|
|
4731
4738
|
default:
|
|
4732
4739
|
return state;
|
|
@@ -5141,44 +5148,38 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
5141
5148
|
/* harmony export */ getTicketType: () => (/* binding */ getTicketType),
|
|
5142
5149
|
/* harmony export */ isTicketRefundable: () => (/* binding */ isTicketRefundable),
|
|
5143
5150
|
/* harmony export */ statusData: () => (/* binding */ statusData),
|
|
5144
|
-
/* harmony export */ ticketsRefundable: () => (/* binding */ ticketsRefundable)
|
|
5145
|
-
/* harmony export */ useTicketDetails: () => (/* binding */ useTicketDetails)
|
|
5151
|
+
/* harmony export */ ticketsRefundable: () => (/* binding */ ticketsRefundable)
|
|
5146
5152
|
/* harmony export */ });
|
|
5147
|
-
/* harmony import */ var
|
|
5148
|
-
/* harmony import */ var
|
|
5149
|
-
/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../i18n */ "./src/i18n/index.js");
|
|
5150
|
-
/* harmony import */ var _summitUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./summitUtils */ "./src/utils/summitUtils.js");
|
|
5151
|
-
/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./constants */ "./src/utils/constants.js");
|
|
5152
|
-
|
|
5153
|
-
|
|
5153
|
+
/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../i18n */ "./src/i18n/index.js");
|
|
5154
|
+
/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./constants */ "./src/utils/constants.js");
|
|
5154
5155
|
|
|
5155
5156
|
|
|
5156
5157
|
const statusData = {
|
|
5157
|
-
[
|
|
5158
|
-
type:
|
|
5159
|
-
text:
|
|
5158
|
+
[_constants__WEBPACK_IMPORTED_MODULE_1__.STATUS_UNASSIGNED]: {
|
|
5159
|
+
type: _constants__WEBPACK_IMPORTED_MODULE_1__.STATUS_UNASSIGNED,
|
|
5160
|
+
text: _i18n__WEBPACK_IMPORTED_MODULE_0__["default"].t("ticket_status.unassigned")
|
|
5160
5161
|
},
|
|
5161
|
-
[
|
|
5162
|
-
type:
|
|
5163
|
-
text:
|
|
5162
|
+
[_constants__WEBPACK_IMPORTED_MODULE_1__.STATUS_INCOMPLETE]: {
|
|
5163
|
+
type: _constants__WEBPACK_IMPORTED_MODULE_1__.STATUS_INCOMPLETE,
|
|
5164
|
+
text: _i18n__WEBPACK_IMPORTED_MODULE_0__["default"].t("ticket_status.incomplete")
|
|
5164
5165
|
},
|
|
5165
|
-
[
|
|
5166
|
-
type:
|
|
5167
|
-
text:
|
|
5166
|
+
[_constants__WEBPACK_IMPORTED_MODULE_1__.STATUS_COMPLETE]: {
|
|
5167
|
+
type: _constants__WEBPACK_IMPORTED_MODULE_1__.STATUS_COMPLETE,
|
|
5168
|
+
text: _i18n__WEBPACK_IMPORTED_MODULE_0__["default"].t("ticket_status.complete")
|
|
5168
5169
|
},
|
|
5169
|
-
[
|
|
5170
|
-
type:
|
|
5171
|
-
text:
|
|
5170
|
+
[_constants__WEBPACK_IMPORTED_MODULE_1__.STATUS_CANCELLED]: {
|
|
5171
|
+
type: _constants__WEBPACK_IMPORTED_MODULE_1__.STATUS_CANCELLED,
|
|
5172
|
+
text: _i18n__WEBPACK_IMPORTED_MODULE_0__["default"].t("ticket_status.cancelled")
|
|
5172
5173
|
}
|
|
5173
5174
|
};
|
|
5174
5175
|
const getTicketStatusKey = ticket => {
|
|
5175
5176
|
var _ticket$owner, _ticket$owner2, _ticket$owner3, _ticket$owner4;
|
|
5176
|
-
if (!ticket.is_active) return
|
|
5177
|
-
if (ticket.owner_id === 0) return
|
|
5178
|
-
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
|
|
5179
|
-
if (ticket.owner && ((_ticket$owner3 = ticket.owner) === null || _ticket$owner3 === void 0 ? void 0 : _ticket$owner3.status) === "Incomplete") return
|
|
5180
|
-
if (ticket.owner && ((_ticket$owner4 = ticket.owner) === null || _ticket$owner4 === void 0 ? void 0 : _ticket$owner4.status) === "Complete") return
|
|
5181
|
-
return
|
|
5177
|
+
if (!ticket.is_active) return _constants__WEBPACK_IMPORTED_MODULE_1__.STATUS_CANCELLED;
|
|
5178
|
+
if (ticket.owner_id === 0) return _constants__WEBPACK_IMPORTED_MODULE_1__.STATUS_UNASSIGNED;
|
|
5179
|
+
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_1__.STATUS_INCOMPLETE;
|
|
5180
|
+
if (ticket.owner && ((_ticket$owner3 = ticket.owner) === null || _ticket$owner3 === void 0 ? void 0 : _ticket$owner3.status) === "Incomplete") return _constants__WEBPACK_IMPORTED_MODULE_1__.STATUS_INCOMPLETE;
|
|
5181
|
+
if (ticket.owner && ((_ticket$owner4 = ticket.owner) === null || _ticket$owner4 === void 0 ? void 0 : _ticket$owner4.status) === "Complete") return _constants__WEBPACK_IMPORTED_MODULE_1__.STATUS_COMPLETE;
|
|
5182
|
+
return _constants__WEBPACK_IMPORTED_MODULE_1__.STATUS_INCOMPLETE;
|
|
5182
5183
|
};
|
|
5183
5184
|
const getTicketStatusData = (ticket, isSummitPast) => statusData[getTicketStatusKey(ticket, isSummitPast)];
|
|
5184
5185
|
const getTicketRole = ticket => {
|
|
@@ -5195,58 +5196,6 @@ const isTicketRefundable = ticket => {
|
|
|
5195
5196
|
return (ticket === null || ticket === void 0 ? void 0 : ticket.final_amount) > 0 && (ticket === null || ticket === void 0 ? void 0 : ticket.final_amount) > (ticket === null || ticket === void 0 ? void 0 : 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 === "Requested"));
|
|
5196
5197
|
};
|
|
5197
5198
|
const ticketsRefundable = tickets => (tickets === null || tickets === void 0 ? void 0 : tickets.filter(ticket => isTicketRefundable(ticket)).length) || 0;
|
|
5198
|
-
const useTicketDetails = _ref => {
|
|
5199
|
-
var _ticket$promo_code, _ticket$owner5, _ticket$owner6;
|
|
5200
|
-
let {
|
|
5201
|
-
ticket,
|
|
5202
|
-
summit
|
|
5203
|
-
} = _ref;
|
|
5204
|
-
const {
|
|
5205
|
-
isPast,
|
|
5206
|
-
isStarted,
|
|
5207
|
-
isReassignable,
|
|
5208
|
-
formattedDate,
|
|
5209
|
-
formattedReassignDate,
|
|
5210
|
-
daysUntilReassignDeadline
|
|
5211
|
-
} = (0,_summitUtils__WEBPACK_IMPORTED_MODULE_2__.useSummitDetails)({
|
|
5212
|
-
summit
|
|
5213
|
-
});
|
|
5214
|
-
const [showPopup, setShowPopup] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);
|
|
5215
|
-
if (!summit || !ticket) return null;
|
|
5216
|
-
const status = getTicketStatusData(ticket, isPast);
|
|
5217
|
-
const role = getTicketRole(ticket);
|
|
5218
|
-
const type = summit.ticket_types.find(type => type.id === ticket.ticket_type.id);
|
|
5219
|
-
const isActive = ticket.is_active && status.type !== _constants__WEBPACK_IMPORTED_MODULE_3__.STATUS_CANCELLED;
|
|
5220
|
-
const isUnassigned = status.type === _constants__WEBPACK_IMPORTED_MODULE_3__.STATUS_UNASSIGNED;
|
|
5221
|
-
const isRefundable = isTicketRefundable(ticket);
|
|
5222
|
-
const allowsDelegate = (ticket.ticket_type.allows_to_delegate || ((_ticket$promo_code = ticket.promo_code) === null || _ticket$promo_code === void 0 ? void 0 : _ticket$promo_code.allows_to_delegate)) && !isUnassigned && !((_ticket$owner5 = ticket.owner) !== null && _ticket$owner5 !== void 0 && (_ticket$owner5 = _ticket$owner5.manager) !== null && _ticket$owner5 !== void 0 && _ticket$owner5.id) && !((_ticket$owner6 = ticket.owner) !== null && _ticket$owner6 !== void 0 && _ticket$owner6.manager_id);
|
|
5223
|
-
const togglePopup = () => setShowPopup(!showPopup);
|
|
5224
|
-
const handleClick = () => {
|
|
5225
|
-
if (!isActive) return;
|
|
5226
|
-
togglePopup();
|
|
5227
|
-
};
|
|
5228
|
-
const handlePopupClose = () => togglePopup();
|
|
5229
|
-
return {
|
|
5230
|
-
status,
|
|
5231
|
-
role,
|
|
5232
|
-
type,
|
|
5233
|
-
isSummitPast: isPast,
|
|
5234
|
-
isSummitStarted: isStarted,
|
|
5235
|
-
isActive,
|
|
5236
|
-
isUnassigned,
|
|
5237
|
-
isReassignable,
|
|
5238
|
-
isRefundable,
|
|
5239
|
-
allowsDelegate,
|
|
5240
|
-
formattedDate,
|
|
5241
|
-
formattedReassignDate,
|
|
5242
|
-
daysUntilReassignDeadline,
|
|
5243
|
-
showPopup,
|
|
5244
|
-
setShowPopup,
|
|
5245
|
-
togglePopup,
|
|
5246
|
-
handleClick,
|
|
5247
|
-
handlePopupClose
|
|
5248
|
-
};
|
|
5249
|
-
};
|
|
5250
5199
|
|
|
5251
5200
|
/***/ }),
|
|
5252
5201
|
|
|
@@ -6113,7 +6062,7 @@ module.exports = require("yup");
|
|
|
6113
6062
|
\**********************************/
|
|
6114
6063
|
/***/ ((module) => {
|
|
6115
6064
|
|
|
6116
|
-
module.exports = /*#__PURE__*/JSON.parse('{"landing":{"sign_out":"Sign out","sign_in":"FNid Sign In","not_logged_in":"You are not logged in. Please log in to continue:"},"errors":{"user_not_authz":"Hold on. Your user is not authorized!.","user_not_set":"Hold on. Can not get any valid user.","session_expired":"Hold on. Your session expired!","server_error":"There was a problem with our server, please contact admin.","not_allowed":"You are not allowed here, please login with another user to access this page.","refund_unsuccessful":"Some of the refund requests were unsucessful. Please try again."},"general":{"continue":"Continue","save_and_continue":"Save and Continue","back":"Back","pay_now":"Pay Now","confirm":"Confirm","yes":"Yes","no":"No","cancel":"Cancel","finish":"Finish"},"labels":{"tickets":"Tickets","summary":"Summary"},"order_summary":{"order_summary":"Order Summary","order_no":"Order number","discounts":"Discount","refunds":"Refund","request_refund":"Request a Refund","refund_details":"Your Refund Details","taxes":"Taxes","total":"Total Due","amount_paid":"Amount Paid"},"event_info":{"about_title":"About the event","about_desc":"a description","directions":"Get Directions","calendar":"Add to Calendar"},"step_one":{"choose_tickets":"Choose your ticket(s)","choose_tickets_desc":"a description","expiration":"Ticket(s) available until ","free":"Free","sold_out":"Sold Out","no_tickets":"No tickets for sale!","getfnid":"Create an FNid","signin":"Sign In"},"step_two":{"basic_info":"Purchaser Information","required":"Required fields","have_account":"Do you have an FNid account?","sign_in":"Sign in","sign_in_account":"to autopopulate this info and manage this order.","first_name":"First Name","last_name":"Last Name","email":"Email","company":"Company","tickets":"Tickets","ticket":"Ticket","asterisks_bold":"NOTE: Ticket(s) can be assigned later.","asterisks":"Ticket holders will immediately receive an email to finalize their attendee information.","code":"Promo Code:","assign":"Assign to:","add_ticket":"Add additional ticket(s) to this order","no_tickets":"No tickets selected.","disclaimer_in_person_title":"Attention","placeholders":{"coupon":"Coupon (Optional)","email":"Attendee Email (Optional)"},"validator":{"first_name":"Please enter your First Name.","last_name":"Please enter your Last Name.","company":"Please enter your Company.","email":"Please enter a valid Email."}},"step_three":{"payment_info":"Payment Information","required":"Required fields","payment_subtitle":"a subtitle...","cardholder_name":"Cardholder Name","card_number":"Card Number","expiration":"Expiration & Code","billing_info":"Billing Information","billing_subtitle":"a subtitle...","billing_country":"Country","billing_address":"Address","billing_address_two":"Address 2","billing_city":"City","billing_state":"State","billing_zipcode":"ZIP Code","stripe_errors":{"cardNumber":"Please enter a valid Credit Card.","cardExpiry":"Please enter the card expiration.","cardCvc":"Please enter the card cvc."},"validator":{"billing_country":"Please enter the billing Country.","billing_address":"Please enter the billing Address.","billing_city":"Please enter the billing City.","billing_state":"Please enter the billing State.","billing_zipcode":"Please enter the billing ZipCode."}},"step_four":{"thank_you":"Thank you for your order!","subtitle":"Your Order is Now Complete","member_exclamation":"You are signed in with your FNid and will use it to log in to the event on show days. ","member_text":"You may proceed directly to the \\"","member_link_tickets":"My Tickets","member_text_1":"\\" page to review your ticket(s) and complete any required details. Visit the \\"","member_link_orders":"My Orders","member_text_2":"\\" page to manage your purchase, assign ticket(s), and edit attendee details.","required_text":"PLEASE NOTE! Ticket(s) must be assigned and all additional details must be completed before official ticket(s) are issued.","register_text":"An FNid is required to manage order(s) and assign ticket(s) ","register_link_text":"create one","register_text_2":" with the email ","register_text_3":" used for this purchase, you will then be able to manage your order.","register_email_bold":"You will now receive an email with a one-click link to create a password for your FNid.","register_email_1":"Your FNid will allow you to access the event. Visit the \\"","register_email_orders":"My Orders","register_email_2":"\\" page to manage your purchase, assign ticket(s), and edit attendee details.","help_text":"For further assistance, please email ","order_no":"ORDER NUMBER","manage":"My Orders","getfnid":"Create an FNid","signin":"Sign In"},"guests":{"invalid_thanks":"Thanks for coming to fill in the remaining details so we can issue your ticket.","invalid_text_1":"Unfortunately the link in your email has expired. Not to worry we will send you a fresh link. Click here or the button below to get a new link.","invalid_button":"Send New Link","invalid_contact":"If you have any problems please email","hash_regenerated":"Please check your new link in your email","completed_text_1":"Thank you for completing your additional details. Your ticket has now been issued. Please use your FNid to access the event.","completed_button":"Download Ticket to","completed_text_2":"You will also receive an email confirmation.","cancel":"Cancel","save":"Save"},"orders-tickets":{"loading":"Loading your orders and tickets...","empty-title":"It appears you have not placed any orders and no tickets have been assigned to you.","empty-text":"If you believe this is incorrect please email <a href=\\"mailto:{{support_email}}\\">{{support_email}}</a>. Thank you!","view_more":"View more","view_less":"View less"},"orders":{"title":"My Orders with Tickets","purchased":"Purchased on","empty":"There are no active orders so far","loading":"Loading orders...","no_orders":"No results found."},"no-summit":{"not-found":"","select-list":"Please select from available shows:"},"order_info":{"print":"Print","resend":"Resend Receipt","download":"Download Ticket PDF","cancel_order":"Request to Refund All Tickets","cancel_ticket":"Cancel Ticket","email_support":"Email Support","directions":"Get Directions","calendar":"Add to Calendar"},"order_status":{"complete":"Ticket(s) assigned and issued","incomplete":"Additional attendee details required before ticket(s) can be issued","pending":"Pending confirmation","cancelled":"Cancelled","error":"Payment error","processing":"Payment processing","past":"Past"},"tickets":{"title":"External Tickets Assigned to Me","empty":"There are no tickets so far","loading":"Loading tickets...","save_message":"Thank you! Your information has been saved and ticket updated.","assign_success_message":"The ticket was successfully assigned.","reassign_success_message":"The ticket was successfully reassigned.","unassign_success_message":"The ticket was successfully unassigned.","notify_success_message":"Notification was sent to ticket holder.","refund_request_success_1":"Your refund request has been requested successfully","refund_request_success_2":"Please allow 24 - 48 hours for a response"},"ticket_status":{"unassigned":"Unassigned","incomplete":"Required details needed","complete":"Ready to use","cancelled":"Cancelled","past":"Past","ticket_no":"Ticket #","assigned_to":"Assigned to","attendee_status_unassigned":"Attendee unassigned","view_tickets":"View Tickets","hide_tickets":"Hide Tickets","view_ticket":"View Ticket","reassign_ticket":"Reassign","assign_ticket":"Assign Ticket","status_unassigned":"Unassigned","status_complete":"Completed","status_incomplete":"Incomplete","status_refund_requested":"Refund Requested","status_details_required":"Some tickets in this order require additional details before the ticket(s) can be issued.","status_cancelled":"Cancelled","finish_ticket":"Finish Ticket","select_ticket_refund":"Select the ticket(s) for a refund:","select_all":"Select All","select_cancel":"Cancel"},"nav_bar":{"my-orders":"My Orders","my-tickets":"My Tickets"},"ticket_popup":{"tab_assign":"Assign","tab_reassign":"Reassign","tab_refund":"Refund","tab_edit":"Edit Details","tab_edit_read_only":"Details","tab_notify":"Notify Ticket Holder","assign_text":"Select the option to assign this ticket","assign_or":"Or","assign_me":"Assign to Me","assign_this":"Assign this Ticket","assign_want_text":"I want to assign this ticket to someone else!","assign_someone":"Assign to this person","assign_ticket":"Assign this Ticket","assign_expire":"Ability to assign ticket expires in ","assign_days":"days","reassign_printed_ticket":"Ticket may not be reassigned because this badge has already been printed.","reassign_text":"Select the option to reassign this ticket from","reassign_want_text":"I want to reassign this ticket to someone else!","reassign_before":"before","reassign_enter_email":"Enter the email of the person you would like to assign the ticket to below. Please note! An email will be sent to the below address with instructions on how to complete any additional information required to issue their ticket.","reassign_check":"Clean all fields","reassign_me":"Reassign to Me","reassign_someone":"Reassign to this person","edit_basic_info":"Attendee Information","edit_required":"Required","edit_email":"Ticket assigned to email:","assign_note":"Note: Should the ticket holder wish to change their name or company info, they can do so by logging into the event site and clicking on the profile icon (located on the far right of the top navigation bar).","edit_first_name":"First Name","edit_first_name_placeholder":"Attendee First Name","edit_last_name":"Last Name","edit_last_name_placeholder":"Attendee Last Name","edit_company":"Company","edit_company_placeholder":"Attendee Company","edit_required_star":"*","edit_preferences":"Additional Details","notify_text_1":"All required details must be completed before","notify_text_2":"Clicking the \\"Resend Notification\\" button will generate an email to","notify_text_3":"with instructions on how to provide their required attendee information. Once the details are complete, their official ticket will be issued and sent to","notify_message":"Personal Message","notify_message_condition":"(Optional)","notify_button":"Resend Notification","cancel_ticket":"Request a refund for this ticket","save_changes":"Save Changes","saving_changes":"Saving Changes","do_it_later":"Do this later","do_it_later_exp":"You may fill in the required information now or complete this step on the \'My Orders\' page later."},"confirm_popup":{"question_title_cancel":"Refund Ticket","question_text_cancel":"Are you sure you want to request a refund of this ticket?","question_title_cancel_order":"Refund Order","question_text_cancel_order":"Are you sure you want to request a refund of this entire order ?","question_title_assign":"Assign Request","question_text_assign":"Are you sure you want to clean all the fields?","question_title_unassign":"Unassign Request","question_text_unassign":"Are you sure you want to unassign this ticket?","question_title_reassign":"Reassign Request","question_text_reassign":"Are you sure you want to reassign this ticket?","question_title_save":"Save","question_text_save":"","question_title_notification":"Notification Request","question_text_notification":"","question_text_confirm":"Are you sure?","cancel":"Cancel","accept":"Yes","success_title":"Request Submitted","success_text":"An email notification has been sent to","success_button":"Got it"},"invitees":{"validation_error":"Invitation error","entity_not_found":"Invitation not found"},"signin":{"add_code_title_p1":"Add the","add_code_title_p2":"digit code below","email_reception_error_p1":"Didn\'t receive it? Check your spam folder or","email_reception_error_p2":"resend email","email_sent":"We\'ve sent a code to the email","go_back_title_p1":"or go back and","go_back_title_p2":"try another way","invalid_email_addr":"Please enter a valid email adress","login_with_title":"Log in with one of the following","retry":"Please try again.","send_code_option":"or get a login code emailed to you","verify_btn":"Verify","wrong_code":"The code you entered is incorrect.","fn_login_btn":"Continue with FNid","fb_login_btn":"Continue with Facebook","ln_login_btn":"Sign in with LinkedIn","ap_login_btn":"Continue with Apple","ok_login_btn":"Continue with Okta"},"logout_popup":{"title":"Re-login required","message":"You are not logged in anymore. Please log in to continue.","close_btn":"Re-login"},"filter":{"filter":"Filter","purchased_on":"Purchased on"},"sort":{"sort":"Sort","new_first":"Newest first","old_first":"Oldest first"},"order_search":{"order_number":"Search order number"},"ticket_detail":{"purchased_by":"Purchased by","status":"ready to use","qr_note":"When you check in you will be able to scan the QR code directly from your device. Or you can:","download":"Download","send":"Send to email","attendee_information":"Attendee Information","email":"Email","first_name":"First Name","last_name":"Last Name","attendee_first_name":"First Name","attendee_last_name":"Last Name","attendee_company":"Company","delegated_to":"Delegated to:","aditional_details":"Additional details","save":"save changes","cancel":"cancel","info_note":"Note: Should the ticket holder wish to change name or company info, they can do so by logging into the event site and clicking on the profile icon (located on the far right of the top navigation bar)."}}');
|
|
6065
|
+
module.exports = /*#__PURE__*/JSON.parse('{"landing":{"sign_out":"Sign out","sign_in":"FNid Sign In","not_logged_in":"You are not logged in. Please log in to continue:"},"errors":{"user_not_authz":"Hold on. Your user is not authorized!.","user_not_set":"Hold on. Can not get any valid user.","session_expired":"Hold on. Your session expired!","server_error":"There was a problem with our server, please contact admin.","not_allowed":"You are not allowed here, please login with another user to access this page.","refund_unsuccessful":"Some of the refund requests were unsucessful. Please try again."},"general":{"continue":"Continue","save_and_continue":"Save and Continue","back":"Back","pay_now":"Pay Now","confirm":"Confirm","yes":"Yes","no":"No","cancel":"Cancel","finish":"Finish"},"labels":{"tickets":"Tickets","summary":"Summary"},"order_summary":{"order_summary":"Order Summary","order_no":"Order number","discounts":"Discount","refunds":"Refund","request_refund":"Request a Refund","refund_details":"Your Refund Details","taxes":"Taxes","total":"Total Due","amount_paid":"Amount Paid"},"event_info":{"about_title":"About the event","about_desc":"a description","directions":"Get Directions","calendar":"Add to Calendar"},"step_one":{"choose_tickets":"Choose your ticket(s)","choose_tickets_desc":"a description","expiration":"Ticket(s) available until ","free":"Free","sold_out":"Sold Out","no_tickets":"No tickets for sale!","getfnid":"Create an FNid","signin":"Sign In"},"step_two":{"basic_info":"Purchaser Information","required":"Required fields","have_account":"Do you have an FNid account?","sign_in":"Sign in","sign_in_account":"to autopopulate this info and manage this order.","first_name":"First Name","last_name":"Last Name","email":"Email","company":"Company","tickets":"Tickets","ticket":"Ticket","asterisks_bold":"NOTE: Ticket(s) can be assigned later.","asterisks":"Ticket holders will immediately receive an email to finalize their attendee information.","code":"Promo Code:","assign":"Assign to:","add_ticket":"Add additional ticket(s) to this order","no_tickets":"No tickets selected.","disclaimer_in_person_title":"Attention","placeholders":{"coupon":"Coupon (Optional)","email":"Attendee Email (Optional)"},"validator":{"first_name":"Please enter your First Name.","last_name":"Please enter your Last Name.","company":"Please enter your Company.","email":"Please enter a valid Email."}},"step_three":{"payment_info":"Payment Information","required":"Required fields","payment_subtitle":"a subtitle...","cardholder_name":"Cardholder Name","card_number":"Card Number","expiration":"Expiration & Code","billing_info":"Billing Information","billing_subtitle":"a subtitle...","billing_country":"Country","billing_address":"Address","billing_address_two":"Address 2","billing_city":"City","billing_state":"State","billing_zipcode":"ZIP Code","stripe_errors":{"cardNumber":"Please enter a valid Credit Card.","cardExpiry":"Please enter the card expiration.","cardCvc":"Please enter the card cvc."},"validator":{"billing_country":"Please enter the billing Country.","billing_address":"Please enter the billing Address.","billing_city":"Please enter the billing City.","billing_state":"Please enter the billing State.","billing_zipcode":"Please enter the billing ZipCode."}},"step_four":{"thank_you":"Thank you for your order!","subtitle":"Your Order is Now Complete","member_exclamation":"You are signed in with your FNid and will use it to log in to the event on show days. ","member_text":"You may proceed directly to the \\"","member_link_tickets":"My Tickets","member_text_1":"\\" page to review your ticket(s) and complete any required details. Visit the \\"","member_link_orders":"My Orders","member_text_2":"\\" page to manage your purchase, assign ticket(s), and edit attendee details.","required_text":"PLEASE NOTE! Ticket(s) must be assigned and all additional details must be completed before official ticket(s) are issued.","register_text":"An FNid is required to manage order(s) and assign ticket(s) ","register_link_text":"create one","register_text_2":" with the email ","register_text_3":" used for this purchase, you will then be able to manage your order.","register_email_bold":"You will now receive an email with a one-click link to create a password for your FNid.","register_email_1":"Your FNid will allow you to access the event. Visit the \\"","register_email_orders":"My Orders","register_email_2":"\\" page to manage your purchase, assign ticket(s), and edit attendee details.","help_text":"For further assistance, please email ","order_no":"ORDER NUMBER","manage":"My Orders","getfnid":"Create an FNid","signin":"Sign In"},"guests":{"invalid_thanks":"Thanks for coming to fill in the remaining details so we can issue your ticket.","invalid_text_1":"Unfortunately the link in your email has expired. Not to worry we will send you a fresh link. Click here or the button below to get a new link.","invalid_button":"Send New Link","invalid_contact":"If you have any problems please email","hash_regenerated":"Please check your new link in your email","completed_text_1":"Thank you for completing your additional details. Your ticket has now been issued. Please use your FNid to access the event.","completed_button":"Download Ticket to","completed_text_2":"You will also receive an email confirmation.","cancel":"Cancel","save":"Save"},"orders-tickets":{"loading":"Loading your orders and tickets...","empty-title":"It appears you have not placed any orders and no tickets have been assigned to you.","empty-text":"If you believe this is incorrect please email <a href=\\"mailto:{{support_email}}\\">{{support_email}}</a>. Thank you!","view_more":"View more","view_less":"View less"},"orders":{"title":"My Orders with Tickets","purchased":"Purchased on","empty":"There are no active orders so far","loading":"Loading orders...","no_orders":"No results found."},"no-summit":{"not-found":"","select-list":"Please select from available shows:"},"order_info":{"print":"Print","resend":"Resend Receipt","download":"Download Ticket PDF","cancel_order":"Request to Refund All Tickets","cancel_ticket":"Cancel Ticket","email_support":"Email Support","directions":"Get Directions","calendar":"Add to Calendar"},"order_status":{"complete":"Ticket(s) assigned and issued","incomplete":"Additional attendee details required before ticket(s) can be issued","pending":"Pending confirmation","cancelled":"Cancelled","error":"Payment error","processing":"Payment processing","past":"Past"},"tickets":{"title":"External Tickets Assigned to Me","empty":"There are no tickets so far","loading":"Loading tickets...","save_message":"Thank you! Your information has been saved and ticket updated.","assign_success_message":"The ticket was successfully assigned.","reassign_success_message":"The ticket was successfully reassigned.","unassign_success_message":"The ticket was successfully unassigned.","notify_success_message":"Notification was sent to ticket holder.","refund_request_success_1":"Your refund request has been requested successfully","refund_request_success_2":"Please allow 24 - 48 hours for a response"},"ticket_status":{"unassigned":"Unassigned","incomplete":"Required details needed","complete":"Ready to use","cancelled":"Cancelled","past":"Past","ticket_no":"Ticket #","assigned_to":"Assigned to","attendee_status_unassigned":"Attendee unassigned","view_tickets":"View Tickets","hide_tickets":"Hide Tickets","view_ticket":"View Ticket","reassign_ticket":"Reassign","assign_ticket":"Assign Ticket","status_unassigned":"Unassigned","status_complete":"Completed","status_incomplete":"Incomplete","status_refund_requested":"Refund Requested","status_details_required":"Some tickets in this order require additional details before the ticket(s) can be issued.","status_cancelled":"Cancelled","finish_ticket":"Finish Ticket","select_ticket_refund":"Select the ticket(s) for a refund:","select_all":"Select All","select_cancel":"Cancel"},"nav_bar":{"my-orders":"My Orders","my-tickets":"My Tickets"},"ticket_popup":{"tab_assign":"Assign","tab_reassign":"Reassign","tab_refund":"Refund","tab_edit":"Edit Details","tab_edit_read_only":"Details","tab_notify":"Notify Ticket Holder","assign_text":"Select the option to assign this ticket","assign_or":"Or","assign_me":"Assign to Me","assign_this":"Assign this Ticket","assign_want_text":"I want to assign this ticket to someone else!","assign_someone":"Assign to this person","assign_ticket":"Assign this Ticket","assign_expire":"Ability to assign ticket expires in ","assign_days":"days","reassign_printed_ticket":"Ticket may not be reassigned because this badge has already been printed.","reassign_text":"Select the option to reassign this ticket from","reassign_want_text":"I want to reassign this ticket to someone else!","reassign_before":"before","reassign_enter_email":"Enter the email of the person you would like to assign the ticket to below. Please note! An email will be sent to the below address with instructions on how to complete any additional information required to issue their ticket.","reassign_check":"Clean all fields","reassign_me":"Reassign to Me","reassign_someone":"Reassign to this person","edit_basic_info":"Attendee Information","edit_required":"Required","edit_email":"Ticket assigned to email:","assign_note":"Note: Should the ticket holder wish to change their name or company info, they can do so by logging into the event site and clicking on the profile icon (located on the far right of the top navigation bar).","edit_first_name":"First Name","edit_first_name_placeholder":"Attendee First Name","edit_last_name":"Last Name","edit_last_name_placeholder":"Attendee Last Name","edit_company":"Company","edit_company_placeholder":"Attendee Company","edit_required_star":"*","edit_preferences":"Additional Details","notify_text_1":"All required details must be completed before","notify_text_2":"Clicking the \\"Resend Notification\\" button will generate an email to","notify_text_3":"with instructions on how to provide their required attendee information. Once the details are complete, their official ticket will be issued and sent to","notify_message":"Personal Message","notify_message_condition":"(Optional)","notify_button":"Resend Notification","cancel_ticket":"Request a refund for this ticket","save_changes":"Save Changes","saving_changes":"Saving Changes","do_it_later":"Do this later","do_it_later_exp":"You may fill in the required information now or complete this step on the \'My Orders\' page later."},"confirm_popup":{"question_title_cancel":"Refund Ticket","question_text_cancel":"Are you sure you want to request a refund of this ticket?","question_title_cancel_order":"Refund Order","question_text_cancel_order":"Are you sure you want to request a refund of this entire order ?","question_title_assign":"Assign Request","question_text_assign":"Are you sure you want to clean all the fields?","question_title_unassign":"Unassign Request","question_text_unassign":"Are you sure you want to unassign this ticket?","question_title_reassign":"Reassign Request","question_text_reassign":"Are you sure you want to reassign this ticket?","question_title_save":"Save","question_text_save":"","question_title_notification":"Notification Request","question_text_notification":"","question_text_confirm":"Are you sure?","cancel":"Cancel","accept":"Yes","success_title":"Request Submitted","success_text":"An email notification has been sent to","success_button":"Got it"},"invitees":{"validation_error":"Invitation error","entity_not_found":"Invitation not found"},"signin":{"add_code_title_p1":"Add the","add_code_title_p2":"digit code below","email_reception_error_p1":"Didn\'t receive it? Check your spam folder or","email_reception_error_p2":"resend email","email_sent":"We\'ve sent a code to the email","go_back_title_p1":"or go back and","go_back_title_p2":"try another way","invalid_email_addr":"Please enter a valid email adress","login_with_title":"Log in with one of the following","retry":"Please try again.","send_code_option":"or get a login code emailed to you","verify_btn":"Verify","wrong_code":"The code you entered is incorrect.","fn_login_btn":"Continue with FNid","fb_login_btn":"Continue with Facebook","ln_login_btn":"Sign in with LinkedIn","ap_login_btn":"Continue with Apple","ok_login_btn":"Continue with Okta"},"logout_popup":{"title":"Re-login required","message":"You are not logged in anymore. Please log in to continue.","close_btn":"Re-login"},"filter":{"filter":"Filter","purchased_on":"Purchased on"},"sort":{"sort":"Sort","new_first":"Newest first","old_first":"Oldest first"},"order_search":{"order_number":"Search order number"},"ticket_detail":{"purchased_by":"Purchased by","status":"ready to use","qr_note":"When you check in you will be able to scan the QR code directly from your device. Or you can:","download":"Download","send":"Send to email","attendee_information":"Attendee Information","email":"Email","first_name":"First Name","last_name":"Last Name","attendee_first_name":"First Name","attendee_last_name":"Last Name","attendee_company":"Company","delegated_to":"Delegated to:","aditional_details":"Additional details","save":"save changes","cancel":"cancel","info_note":"Note: Should the ticket holder wish to change name or company info, they can do so by logging into the event site and clicking on the profile icon (located on the far right of the top navigation bar).","saving_error":"Error saving ticket","saving_success":"Ticket Saved!","saving_success_description":"ticket saved successfully"}}');
|
|
6117
6066
|
|
|
6118
6067
|
/***/ }),
|
|
6119
6068
|
|
|
@@ -6325,4 +6274,4 @@ MyOrdersMyTicketsWidget.propTypes = {
|
|
|
6325
6274
|
/******/ })()
|
|
6326
6275
|
;
|
|
6327
6276
|
});
|
|
6328
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QTtBQUNpRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDSGpFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDaU47Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ1JqTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ3dqQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN2QnhqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUM0Ujs7Ozs7Ozs7Ozs7Ozs7O0FDYjVSO0FBQ0E7QUFDMEI7Ozs7Ozs7Ozs7Ozs7Ozs7QUNGMUI7QUFDQTtBQUNBO0FBQzRDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDSDVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNzYTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDckJ0YTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2dNOzs7Ozs7Ozs7Ozs7Ozs7OztBQ1JoTTtBQUNBO0FBQ0E7QUFDQTtBQUMrRTs7Ozs7Ozs7Ozs7QUNKL0U7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7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VztNQUNWUyxZQUFZLEVBQUVOLGdCQUFpQjtNQUMvQjFKLE9BQU8sRUFBRSxJQUFLO01BQ2Q2QyxTQUFTLEVBQUVBLFNBQVU7TUFBQXZxQixRQUFBLGVBRXJCaEIsdURBQUEsQ0FBQzJVLCtEQUFvQjtRQUFDdUIsV0FBVztRQUFBbFYsUUFBQSxnQkFDL0JsQixzREFBQSxDQUFDcUMsOENBQUc7VUFBQ2YsRUFBRSxFQUFFO1lBQUUwRCxPQUFPLEVBQUU7Y0FBRWtDLEVBQUUsRUFBRSxDQUFDO2NBQUUwQyxFQUFFLEVBQUUsQ0FBQztjQUFFQyxFQUFFLEVBQUU7WUFBRTtVQUFFLENBQUU7VUFBQTNJLFFBQUEsZUFDNUNsQixzREFBQTtZQUFBa0IsUUFBQSxFQUFLVixDQUFDLENBQUMsY0FBYztVQUFDLENBQUs7UUFBQyxDQUN6QixDQUFDLGVBQ05SLHNEQUFBLENBQUM2SSxtRUFBZTtVQUNkK2hCLFFBQVEsRUFBRUEsUUFBUztVQUNuQnlILFlBQVksRUFBRUEsWUFBYTtVQUMzQjE2QixNQUFNLEVBQUVBLE1BQU87VUFDZndCLFVBQVUsRUFBRUE7UUFBVyxDQUN4QixDQUFDO01BQUEsQ0FDa0I7SUFBQyxDQUNaO0VBQUMsQ0FDTixDQUFDO0FBRWYsQ0FBQztBQUVEaTVCLHVCQUF1QixDQUFDcHdCLFNBQVMsR0FBRztFQUNsQzRvQixRQUFRLEVBQUV2ckIsMERBQWdCO0VBQzFCZ3pCLFlBQVksRUFBRWh6QiwwREFBZ0I7RUFDOUIxSCxNQUFNLEVBQUUwSCwwREFBZ0I7RUFDeEJsRyxVQUFVLEVBQUVrRywwREFBZ0I7RUFDNUJ6SCxJQUFJLEVBQUV5SCwwREFBZ0I7RUFDdEJzckIsUUFBUSxFQUFFdHJCLDBEQUFnQjtFQUMxQnhCLGFBQWEsRUFBRXdCLHdEQUFjNEM7QUFDL0IsQ0FBQztBQUVELGlFQUFlbXdCLHVCQUF1QixFIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvYWN0aW9ucy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJTb3J0U2VhcmNoL0RhdGVwaWNrZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVyU29ydFNlYXJjaC9GaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVyU29ydFNlYXJjaC9TZWFyY2guanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVyU29ydFNlYXJjaC9Tb3J0LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlclNvcnRTZWFyY2gvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTGFiZWxzL0Vycm9yTGFiZWwuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTXVsdGlTdGVwU2xpZGVyL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL015T3JkZXJzVGlja2V0cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlclN1bW1hcnkvT3JkZXJTdW1tYXJ5VGFibGUuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJTdW1tYXJ5L1JlZnVuZEVtYWlsU3VwcG9ydC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlclN1bW1hcnkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9BdHRlbmRlZVN0YXR1cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L09yZGVyTGlzdEl0ZW0uanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9PcmRlckxpc3RUaWNrZXRzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvT3JkZXJOdW1iZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9PcmRlcnNMaXN0RGVza3RvcE1vYmlsZS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JlZnVuZFJlcXVlc3RzL1JlZnVuZFJlcXVlc3RlZFRpY2tldC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SZWZ1bmRSZXF1ZXN0cy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9Db21wYW55RmllbGQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy9DaGVja2JveExpc3RRdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvQ2hlY2tib3hRdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvRHJvcGRvd25RdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvUmFkaW9MaXN0UXVlc3Rpb25GaWVsZC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL1RleHRRdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvdXRpbHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29uc3RhbnRzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXIvUmVnaXN0cmF0aW9uRGlzY2xhaW1lci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9UaWNrZXREZWxlZ2F0aW9uRmllbGRzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL1RpY2tldEZvcm0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvVGlja2V0T3duZXJGaWVsZHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbnN0YW50cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0U3RhdHVzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9ob29rcy91c2VUaWNrZXREZXRhaWxzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9pMThuL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9yZWR1Y2VyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9zdG9yZS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvYXV0aC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvY29uc3RhbnRzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy91dGlscy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvc3VtbWl0VXRpbHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3V0aWxzL3RpY2tldFV0aWxzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlclNvcnRTZWFyY2gvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0xhYmVscy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTXVsdGlTdGVwU2xpZGVyL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlclN1bW1hcnkvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3Qvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JlZnVuZFJlcXVlc3RzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9SZWdpc3RyYXRpb25EaXNjbGFpbWVyL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9UaWNrZXRPd25lckZpZWxkcy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRTdGF0dXMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RXaXRob3V0UHJvcGVydGllc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWxcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NoZWNrQ2lyY2xlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DbG9zZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ29udGVudENvcHlcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0RlbGV0ZU91dGxpbmVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Vycm9yXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9GaWx0ZXJMaXN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9JbXBvcnRFeHBvcnRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL1NlYXJjaFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWxcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL0NoZWNrYm94XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9EaXZpZGVyXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9EcmF3ZXJcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL0lucHV0QmFzZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL1RhYlwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvVGFic1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC91c2VNZWRpYVF1ZXJ5XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS94LWRhdGUtcGlja2Vycy9BZGFwdGVyRGF5anNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL3gtZGF0ZS1waWNrZXJzL0RhdGVQaWNrZXJcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL3gtZGF0ZS1waWNrZXJzL0xvY2FsaXphdGlvblByb3ZpZGVyXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQHJlZHV4anMvdG9vbGtpdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBzZW50cnkvcmVhY3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJkYXlqc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcImZvcm1pa1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcImkxOG5leHRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJpMThuZXh0LWJyb3dzZXItbGFuZ3VhZ2VkZXRlY3RvclwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcImlkdG9rZW4tdmVyaWZpZXJcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJtb21lbnQtdGltZXpvbmVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL2NvbXBvbmVudHMvcmF3LWh0bWxcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L2FjdGlvbnNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L21ldGhvZHNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL2FjdGlvbnNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL3F1ZXJ5LWFjdGlvbnNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJwLWxpbWl0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicHJvcC10eXBlc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QtaTE4bmV4dFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0LWluZmluaXRlLXNjcm9sbC1jb21wb25lbnRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC1xci1jb2RlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QtcmVkdXhcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC9qc3gtcnVudGltZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlZHV4XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVkdXgtcGVyc2lzdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlZHV4LXBlcnNpc3QvaW50ZWdyYXRpb24vcmVhY3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWR1eC1wZXJzaXN0L2xpYi9zdG9yYWdlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwieXVwXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL3J1bnRpbWUvY29tcGF0IGdldCBkZWZhdWx0IGV4cG9ydCIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL3J1bnRpbWUvbWFrZSBuYW1lc3BhY2Ugb2JqZWN0Iiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoXCJteS1vcmRlcnMtdGlja2V0cy13aWRnZXRcIiwgW10sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wibXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0XCJdID0gZmFjdG9yeSgpO1xuXHRlbHNlXG5cdFx0cm9vdFtcIm15LW9yZGVycy10aWNrZXRzLXdpZGdldFwiXSA9IGZhY3RvcnkoKTtcbn0pKHRoaXMsICgpID0+IHtcbnJldHVybiAiLCJpbXBvcnQge1xuICBhdXRoRXJyb3JIYW5kbGVyLFxuICBnZXRSZXF1ZXN0LFxuICBkZWxldGVSZXF1ZXN0LFxuICBjcmVhdGVBY3Rpb24sXG4gIHN0b3BMb2FkaW5nLFxuICBzdGFydExvYWRpbmcsXG4gIHB1dFJlcXVlc3Rcbn0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvYWN0aW9uc1wiO1xuaW1wb3J0IHBMaW1pdCBmcm9tIFwicC1saW1pdFwiO1xuaW1wb3J0IHsgZ2V0SWRUb2tlbiB9IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L21ldGhvZHNcIjtcbmltcG9ydCBJZFRva2VuVmVyaWZpZXIgZnJvbSBcImlkdG9rZW4tdmVyaWZpZXJcIjtcbmltcG9ydCB7IGdldEFjY2Vzc1Rva2VuU2FmZWx5IH0gZnJvbSBcIi4vdXRpbHMvYXV0aFwiO1xuaW1wb3J0IHtcbiAgRklSU1RfUEFHRSxcbiAgREVGQVVMVF9JVEVNU19QRVJfUEFHRSxcbiAgT05FX1BBR0VfTkVYVCxcbiAgUFJPTUlTRV9CQVRDSF9MSU1JVCxcbiAgRklGVFlfUEVSX1BBR0Vcbn0gZnJvbSBcIi4vdXRpbHMvY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBjb25zdCBSRVNFVF9TVEFURSA9IFwiUkVTRVRfU1RBVEVcIjtcbmV4cG9ydCBjb25zdCBSRVNFVF9GSUxURVIgPSBcIlJFU0VUX0ZJTFRFUlwiO1xuZXhwb3J0IGNvbnN0IFNFVF9TVEFURSA9IFwiU0VUX1NUQVRFXCI7XG5cbi8vIE9SREVSUyBDT05TVFNcbmV4cG9ydCBjb25zdCBHRVRfVVNFUl9PUkRFUlMgPSBcIkdFVF9PUkRFUlNcIjtcbmV4cG9ydCBjb25zdCBSRUZVTkRfT1JERVIgPSBcIlJFRlVORF9PUkRFUlwiO1xuZXhwb3J0IGNvbnN0IFNFVF9BQ1RJVkVfT1JERVJfSUQgPSBcIlNFVF9BQ1RJVkVfT1JERVJfSURcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVVNFUl9PUkRFUlMgPSBcIkZJTFRFUl9VU0VSX09SREVSU1wiO1xuXG4vLyBUSUNLRVRTIENPTlNUU1xuZXhwb3J0IGNvbnN0IEdFVF9USUNLRVRTID0gXCJHRVRfVElDS0VUU1wiO1xuZXhwb3J0IGNvbnN0IFVQREFURV9USUNLRVQgPSBcIlVQREFURV9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBSRUNFSVZFX1RJQ0tFVCA9IFwiUkVDRUlWRV9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBSRU1PVkVfVElDS0VUX0FUVEVOREVFID0gXCJSRU1PVkVfVElDS0VUX0FUVEVOREVFXCI7XG5leHBvcnQgY29uc3QgUkVGVU5EX1RJQ0tFVCA9IFwiUkVGVU5EX1RJQ0tFVFwiO1xuZXhwb3J0IGNvbnN0IFJFU0VORF9OT1RJRklDQVRJT04gPSBcIlJFU0VORF9OT1RJRklDQVRJT05cIjtcbmV4cG9ydCBjb25zdCBHRVRfVElDS0VUU19CWV9PUkRFUiA9IFwiR0VUX1RJQ0tFVFNfQllfT1JERVJcIjtcbmV4cG9ydCBjb25zdCBHRVRfVElDS0VUU19CWV9PUkRFUl9FUlJPUiA9IFwiR0VUX1RJQ0tFVFNfQllfT1JERVJfRVJST1JcIjtcbmV4cG9ydCBjb25zdCBHRVRfT1JERVJfVElDS0VUX0RFVEFJTFMgPSBcIkdFVF9PUkRFUl9USUNLRVRfREVUQUlMU1wiO1xuZXhwb3J0IGNvbnN0IEdFVF9USUNLRVRfREVUQUlMUyA9IFwiR0VUX1RJQ0tFVF9ERVRBSUxTXCI7XG5leHBvcnQgY29uc3QgUkVDRUlWRV9FWFRSQV9RVUVTVElPTlMgPSBcIlJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TXCI7XG5leHBvcnQgY29uc3QgVElDS0VUX0FUVEVOREVFX0tFWVMgPSB7XG4gIGVtYWlsOiBcImF0dGVuZGVlX2VtYWlsXCIsXG4gIGZpcnN0TmFtZTogXCJhdHRlbmRlZV9maXJzdF9uYW1lXCIsXG4gIGxhc3ROYW1lOiBcImF0dGVuZGVlX2xhc3RfbmFtZVwiLFxuICBjb21wYW55OiBcImF0dGVuZGVlX2NvbXBhbnlcIixcbiAgZGlzY2xhaW1lckFjY2VwdGVkOiBcImRpc2NsYWltZXJfYWNjZXB0ZWRcIixcbiAgZXh0cmFRdWVzdGlvbnM6IFwiZXh0cmFfcXVlc3Rpb25zXCJcbn07XG5leHBvcnQgY29uc3QgVVBEQVRFX1RJQ0tFVFNfUkVGVU5EX1JFUVVFU1RFRCA9XG4gIFwiVVBEQVRFX1RJQ0tFVFNfUkVGVU5EX1JFUVVFU1RFRFwiO1xuXG4vLyBVU0VSIENPTlRTXG5leHBvcnQgY29uc3QgU1RBUlRfTE9BRElOR19JRFBfUFJPRklMRSA9IFwiU1RBUlRfTE9BRElOR19JRFBfUFJPRklMRVwiO1xuZXhwb3J0IGNvbnN0IFNUT1BfTE9BRElOR19JRFBfUFJPRklMRSA9IFwiU1RPUF9MT0FESU5HX0lEUF9QUk9GSUxFXCI7XG5leHBvcnQgY29uc3QgVVBEQVRFX0lEUF9QUk9GSUxFID0gXCJVUERBVEVfSURQX1BST0ZJTEVcIjtcbmV4cG9ydCBjb25zdCBTRVRfVVNFUiA9IFwiU0VUX1VTRVJcIjtcblxuLy8gU1VNTUlUIENPTlNUU1xuZXhwb3J0IGNvbnN0IFNFVF9TVU1NSVQgPSBcIlNFVF9TVU1NSVRcIjtcbmV4cG9ydCBjb25zdCBHRVRfTUFJTl9FWFRSQV9RVUVTVElPTlMgPSBcIkdFVF9NQUlOX0VYVFJBX1FVRVNUSU9OU1wiO1xuZXhwb3J0IGNvbnN0IFJFQ0VJVkVfTUFSS0VUSU5HX1NFVFRJTkdTID0gXCJSRUNFSVZFX01BUktFVElOR19TRVRUSU5HU1wiO1xuZXhwb3J0IGNvbnN0IENMRUFSX01BUktFVElOR19TRVRUSU5HUyA9IFwiQ0xFQVJfTUFSS0VUSU5HX1NFVFRJTkdTXCI7XG5cbmV4cG9ydCBjb25zdCByZXNldFN0YXRlID0gKCkgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihSRVNFVF9TVEFURSkoe30pKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZXNldEZpbHRlciA9ICgpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oUkVTRVRfRklMVEVSKSh7fSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IHNldFJlZHVjZXJTdGF0ZSA9IChzdW1taXQsIHVzZXIpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oU0VUX1NUQVRFKSh7IHN1bW1pdCwgdXNlciB9KSk7XG59O1xuXG4vLyBGSUxURVIgLyBTT1JUIENPTlNUQU5UU1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfREFURSA9IFwiRklMVEVSX1ZBUl9EQVRFXCI7XG5leHBvcnQgY29uc3QgRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVIgPSBcIkZJTFRFUl9WQVJfT1JERVJfTlVNQkVSXCI7XG5cbi8vIEZJTFRFUi9TT1JUIEFDVElPTlNcbmV4cG9ydCBjb25zdCBwYXJzZUZpbHRlciA9IChmaWx0ZXJPYmopID0+IHtcbiAgY29uc3QgZmlsdGVyID0gW107XG4gIGlmIChmaWx0ZXJPYmoudHlwZSA9PT0gRklMVEVSX1ZBUl9EQVRFKSB7XG4gICAgZmlsdGVyLnB1c2goYCR7ZmlsdGVyT2JqLm5hbWV9W10ke2ZpbHRlck9iai5sb3dlcn0mJiR7ZmlsdGVyT2JqLnVwcGVyfWApO1xuICB9XG4gIGlmIChmaWx0ZXJPYmoudHlwZSA9PT0gRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVIpIHtcbiAgICBmaWx0ZXIucHVzaChgJHtmaWx0ZXJPYmoubmFtZX09QCR7ZmlsdGVyT2JqLnZhbHVlfWApO1xuICB9XG4gIHJldHVybiBmaWx0ZXI7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U29ydERpcmVjdGlvbiA9IChkaXJlY3Rpb24pID0+XG4gIGRpcmVjdGlvbiA9PT0gXCJhc2NcIiA/IFwiK1wiIDogXCItXCI7XG5cbi8vIE9SREVSUyBBQ1RJT05TXG5leHBvcnQgY29uc3QgZ2V0VXNlck9yZGVycyA9XG4gICh7XG4gICAgcGFnZSA9IEZJUlNUX1BBR0UsXG4gICAgcGVyUGFnZSA9IERFRkFVTFRfSVRFTVNfUEVSX1BBR0UsXG4gICAgZmlsdGVyID0ge30sXG4gICAgc29ydCA9IHt9LFxuICAgIG5leHQgPSBmYWxzZVxuICB9KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHdpZGdldFN0YXRlOiB7IHN1bW1pdCB9XG4gICAgfSA9IGdldFN0YXRlKCk7XG5cbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goKCkgPT5cbiAgICAgIFByb21pc2UucmVqZWN0KClcbiAgICApO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBvcmRlcjogXCItaWRcIixcbiAgICAgIFwiZmlsdGVyW11cIjogW1wic3RhdHVzPT1QYWlkXCJdLFxuICAgICAgcmVsYXRpb25zOiBcIm5vbmVcIixcbiAgICAgIHBhZ2U6IG5leHQgPyBwYWdlICsgT05FX1BBR0VfTkVYVCA6IHBhZ2UsXG4gICAgICBwZXJfcGFnZTogcGVyUGFnZVxuICAgIH07XG5cbiAgICBpZiAoT2JqZWN0LmtleXMoZmlsdGVyKS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBmaWx0ZXJzID0gcGFyc2VGaWx0ZXIoZmlsdGVyKTtcbiAgICAgIHBhcmFtc1tcImZpbHRlcltdXCJdID0gWy4uLnBhcmFtc1tcImZpbHRlcltdXCJdLCAuLi5maWx0ZXJzXTtcbiAgICB9XG4gICAgaWYgKE9iamVjdC5rZXlzKHNvcnQpLmxlbmd0aCA+IDApIHtcbiAgICAgIHBhcmFtcy5vcmRlciA9IGAke2dldFNvcnREaXJlY3Rpb24oc29ydC5kaXJlY3Rpb24pfSR7c29ydC5uYW1lfWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdldFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKEdFVF9VU0VSX09SREVSUyksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy8ke3N1bW1pdC5pZH0vb3JkZXJzL21lYCxcbiAgICAgIGF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAudGhlbigocGF5bG9hZCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3Qgc2V0QWN0aXZlT3JkZXJJZCA9IChvcmRlcklkKSA9PiBhc3luYyAoZGlzcGF0Y2gpID0+XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihTRVRfQUNUSVZFX09SREVSX0lEKShvcmRlcklkKSk7XG5cbi8vIFVTRVIgQUNUSU9OU1xuZXhwb3J0IGNvbnN0IHNldFVzZXIgPSAodXNlcikgPT4gKGRpc3BhdGNoKSA9PlxuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oU0VUX1VTRVIpKHVzZXIpKTtcblxuLy8gVElDS0VUIEFDVElPTlNcblxuZXhwb3J0IGNvbnN0IGdldFVzZXJUaWNrZXRzID1cbiAgKHsgcGFnZSA9IEZJUlNUX1BBR0UsIHBlclBhZ2UgPSBERUZBVUxUX0lURU1TX1BFUl9QQUdFIH0pID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgdXNlclN0YXRlOiB7IHVzZXJQcm9maWxlIH0sXG4gICAgICBzdW1taXRcbiAgICB9ID0gZ2V0U3RhdGUoKTtcbiAgICBpZiAoIXN1bW1pdCkgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKCgpID0+XG4gICAgICBQcm9taXNlLnJlamVjdCgpXG4gICAgKTtcblxuICAgIGlmICghdXNlclByb2ZpbGUuaWQpIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZmlsdGVyOiBcInN0YXR1cz09UGFpZFwiLFxuICAgICAgZXhwYW5kOiBcIm9yZGVyLCBvd25lciwgdGlja2V0X3R5cGVcIixcbiAgICAgIG9yZGVyOiBcIi1pZFwiLFxuICAgICAgZmllbGRzOlxuICAgICAgICBcIm9yZGVyLmlkLG9yZGVyLm93bmVyX2ZpcnN0X25hbWUsb3JkZXIub3duZXJfbGFzdF9uYW1lLG9yZGVyLm93bmVyX2VtYWlsLG93bmVyLmZpcnN0X25hbWUsb3duZXIubGFzdF9uYW1lLG93bmVyLnN0YXR1c1wiLFxuICAgICAgcmVsYXRpb25zOiBcIm5vbmVcIixcbiAgICAgIHBhZ2UsXG4gICAgICBwZXJfcGFnZTogcGVyUGFnZVxuICAgIH07XG4gICAgcmV0dXJuIGdldFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKEdFVF9USUNLRVRTKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzLyR7c3VtbWl0LmlkfS9vcmRlcnMvYWxsL3RpY2tldHMvbWVgLFxuICAgICAgYXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgZ2V0VGlja2V0c0J5T3JkZXIgPVxuICAoeyBvcmRlcklkLCBwYWdlID0gRklSU1RfUEFHRSwgcGVyUGFnZSA9IERFRkFVTFRfSVRFTVNfUEVSX1BBR0UgfSkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKCgpID0+XG4gICAgICBQcm9taXNlLnJlamVjdCgpXG4gICAgKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6XG4gICAgICAgIFwicmVmdW5kX3JlcXVlc3RzLG93bmVyLG93bmVyLmV4dHJhX3F1ZXN0aW9ucyxiYWRnZSxiYWRnZS5mZWF0dXJlcyx0aWNrZXRfdHlwZVwiLFxuICAgICAgb3JkZXI6IFwiK2lkXCIsXG4gICAgICBwYWdlLFxuICAgICAgcGVyX3BhZ2U6IHBlclBhZ2VcbiAgICB9O1xuICAgIHJldHVybiBnZXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihHRVRfVElDS0VUU19CWV9PUkRFUiksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0c2AsXG4gICAgICBhdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKHBheWxvYWQpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKEdFVF9USUNLRVRTX0JZX09SREVSX0VSUk9SKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCByZXNlbmROb3RpZmljYXRpb24gPVxuICAodGlja2V0KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKCgpID0+XG4gICAgICBQcm9taXNlLnJlamVjdCgpXG4gICAgKTtcblxuICAgIGNvbnN0IHsgbWVzc2FnZSB9ID0gdGlja2V0O1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3Qgb3JkZXJJZCA9IHRpY2tldC5vcmRlciA/IHRpY2tldC5vcmRlci5pZCA6IHRpY2tldC5vcmRlcl9pZDtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW5cbiAgICB9O1xuXG4gICAgcmV0dXJuIHB1dFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKFJFU0VORF9OT1RJRklDQVRJT04pLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXQuaWR9L2F0dGVuZGVlL3JlaW52aXRlYCxcbiAgICAgIHsgbWVzc2FnZSB9LFxuICAgICAgYXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgcmVmdW5kVGlja2V0ID1cbiAgKHsgdGlja2V0IH0pID0+XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaCgoKSA9PlxuICAgICAgUHJvbWlzZS5yZWplY3QoKVxuICAgICk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBvcmRlcklkID0gdGlja2V0Lm9yZGVyID8gdGlja2V0Lm9yZGVyLmlkIDogdGlja2V0Lm9yZGVyX2lkO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDogXCJyZWZ1bmRfcmVxdWVzdHMsdGlja2V0X3R5cGVcIixcbiAgICAgIGZpZWxkczogXCJyZWZ1bmRfcmVxdWVzdHMuc3RhdHVzXCJcbiAgICB9O1xuXG4gICAgcmV0dXJuIGRlbGV0ZVJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKFJFRlVORF9USUNLRVQpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXQuaWR9L3JlZnVuZGAsXG4gICAgICB7fSxcbiAgICAgIGF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAudGhlbigocGF5bG9hZCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgcmVmdW5kQnVsa1RpY2tldHMgPVxuICAoeyB0aWNrZXRzIH0pID0+XG4gIGFzeW5jIChkaXNwYXRjaCkgPT4ge1xuICAgIGNvbnN0IGxpbWl0ID0gcExpbWl0KFBST01JU0VfQkFUQ0hfTElNSVQpO1xuICAgIGNvbnN0IGFsbFJlZnVuZFRpY2tldENhbGxzID0gdGlja2V0cy5tYXAoKHRpY2tldCkgPT5cbiAgICAgIGxpbWl0KCgpID0+IGRpc3BhdGNoKHJlZnVuZFRpY2tldCh7IHRpY2tldCB9KSkpXG4gICAgKTtcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwoWy4uLmFsbFJlZnVuZFRpY2tldENhbGxzXSlcbiAgICAgIC50aGVuKChyZXMpID0+IHtcbiAgICAgICAgY29uc3Qgc3VjY2Vzc2Z1bGx5UmVxdWVzdGVkID0gcmVzXG4gICAgICAgICAgLmZpbHRlcigocikgPT4gci5yZXNwb25zZT8ucmVmdW5kX3JlcXVlc3RzPy5sZW5ndGgpXG4gICAgICAgICAgLm1hcCgocikgPT4gci5yZXNwb25zZSk7XG4gICAgICAgIHJldHVybiBzdWNjZXNzZnVsbHlSZXF1ZXN0ZWQ7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiBlKTtcbiAgfTtcblxuLy8gdXBkYXRlIHRoZSB0aWNrZXRzIHRoYXQgaGF2ZSBiZWVuIHN1Y2Vzc2Z1bGx5IHJlZnVuZGVkXG5leHBvcnQgY29uc3QgdXBkYXRlVGlja2V0c1JlZnVuZFJlcXVlc3RlZCA9XG4gICh0aWNrZXRzUmVmdW5kUmVxdWVzdGVkKSA9PiAoZGlzcGF0Y2gpID0+XG4gICAgZGlzcGF0Y2goXG4gICAgICBjcmVhdGVBY3Rpb24oVVBEQVRFX1RJQ0tFVFNfUkVGVU5EX1JFUVVFU1RFRCkodGlja2V0c1JlZnVuZFJlcXVlc3RlZClcbiAgICApO1xuXG4vLyBTVU1NSVQgQUNUSU9OU1xuXG5leHBvcnQgY29uc3QgZ2V0RXh0cmFRdWVzdGlvbnMgPVxuICAoYXR0ZW5kZWVJZCkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCB7XG4gICAgICB3aWRnZXRTdGF0ZTogeyBzdW1taXQgfVxuICAgIH0gPSBnZXRTdGF0ZSgpO1xuXG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKCgpID0+XG4gICAgICBQcm9taXNlLnJlamVjdCgpXG4gICAgKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIHBhZ2U6IDEsXG4gICAgICBwZXJfcGFnZTogRklGVFlfUEVSX1BBR0UsXG4gICAgICBleHBhbmQ6IFwiKnN1Yl9xdWVzdGlvbl9ydWxlcywqc3ViX3F1ZXN0aW9uLCp2YWx1ZXNcIixcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBcImZpbHRlcltdXCI6IFwidGlja2V0c19leGNsdWRlX2luYWN0aXZlcz09dHJ1ZVwiXG4gICAgfTtcblxuICAgIGNvbnN0IGVuZHBvaW50ID0gYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvJHtzdW1taXQuaWR9L2F0dGVuZGVlcy8ke2F0dGVuZGVlSWR9L2FsbG93ZWQtZXh0cmEtcXVlc3Rpb25zYDtcblxuICAgIHJldHVybiBnZXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihSRUNFSVZFX0VYVFJBX1FVRVNUSU9OUyksXG4gICAgICBlbmRwb2ludCxcbiAgICAgIGF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpLnRoZW4oKCkgPT4ge1xuICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXQgPVxuICAodGlja2V0SWQsIG9yZGVySWQpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKCgpID0+XG4gICAgICBQcm9taXNlLnJlamVjdCgpXG4gICAgKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6XG4gICAgICAgIFwib3duZXIsb3duZXIuZXh0cmFfcXVlc3Rpb25zLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbix0aWNrZXRfdHlwZSxvcmRlclwiLFxuICAgICAgcmVsYXRpb25zOiBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5ub25lXCIsXG4gICAgICBmaWVsZHM6XG4gICAgICAgIFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLmlkLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5uYW1lLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi50eXBlXCJcbiAgICB9O1xuXG4gICAgY29uc3QgZW5kcG9pbnQgPSBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldElkfWA7XG5cbiAgICByZXR1cm4gZ2V0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oUkVDRUlWRV9USUNLRVQpLFxuICAgICAgZW5kcG9pbnQsXG4gICAgICBhdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKS5maW5hbGx5KCgpID0+IHtcbiAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgIH0pO1xuICB9O1xuXG5jb25zdCBub3JtYWxpemVUaWNrZXQgPSAoZW50aXR5KSA9PiB7XG4gIGNvbnN0IG5vcm1hbGl6ZWRFbnRpdHkgPSB7IC4uLmVudGl0eSB9O1xuXG4gIGlmICghZW50aXR5LmF0dGVuZGVlX2NvbXBhbnkuaWQpIHtcbiAgICBub3JtYWxpemVkRW50aXR5LmF0dGVuZGVlX2NvbXBhbnkgPSBlbnRpdHkuYXR0ZW5kZWVfY29tcGFueTtcbiAgfSBlbHNlIHtcbiAgICBkZWxldGUgbm9ybWFsaXplZEVudGl0eS5hdHRlbmRlZV9jb21wYW55O1xuICAgIG5vcm1hbGl6ZWRFbnRpdHkuYXR0ZW5kZWVfY29tcGFueV9pZCA9IGVudGl0eS5hdHRlbmRlZV9jb21wYW55LmlkO1xuICB9XG5cbiAgcmV0dXJuIG5vcm1hbGl6ZWRFbnRpdHk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVmcmVzaFByb2ZpbGUgPVxuICAoZGF0YSwgY29tcGFueSwgdGlja2V0T3duZXIpID0+XG4gIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgdXBkYXRlUHJvZmlsZSB9KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgd2lkZ2V0U3RhdGU6IHsgdXNlciB9XG4gICAgfSA9IGdldFN0YXRlKCk7XG4gICAgY29uc3QgeyB1c2VyUHJvZmlsZSB9ID0gdXNlcjtcblxuICAgIC8vIGVtYWlsIHNob3VsZCBtYXRjaCAoIG9ubHkgdXBkYXRlIG15IHByb2ZpbGUgaXMgdGlja2V0IGJlbG9uZ3MgdG8gbWUhKVxuICAgIC8vIGFuZCBpZiB0aGUgdGlja2V0IGRvZXNuJ3QgaGF2ZSBhIG1hbmFnZXJcbiAgICAvLyBDaGVjayBpZiB0aGVyZSdzIGNoYW5nZXMgaW4gdGhlIHRpY2tldCBkYXRhIHRvIHVwZGF0ZSB0aGUgcHJvZmlsZVxuICAgIGNvbnN0IHtcbiAgICAgIGF0dGVuZGVlX2VtYWlsLFxuICAgICAgYXR0ZW5kZWVfZmlyc3RfbmFtZSxcbiAgICAgIGF0dGVuZGVlX2xhc3RfbmFtZSxcbiAgICAgIGF0dGVuZGVlX2NvbXBhbnlcbiAgICB9ID0gZGF0YTtcbiAgICBjb25zdCBoYXNNYW5hZ2VyID0gdGlja2V0T3duZXI/Lm1hbmFnZXI/LmlkIHx8IHRpY2tldE93bmVyPy5tYW5hZ2VyX2lkO1xuICAgIGNvbnN0IGl0c01lID0gdXNlclByb2ZpbGUuZW1haWwgPT09IGF0dGVuZGVlX2VtYWlsO1xuICAgIGNvbnN0IHByb2ZpbGVDaGFuZ2VkID1cbiAgICAgIGF0dGVuZGVlX2NvbXBhbnkubmFtZSAhPT0gY29tcGFueSB8fFxuICAgICAgYXR0ZW5kZWVfZmlyc3RfbmFtZSAhPT0gdXNlclByb2ZpbGUuZmlyc3RfbmFtZSB8fFxuICAgICAgYXR0ZW5kZWVfbGFzdF9uYW1lICE9PSB1c2VyUHJvZmlsZS5sYXN0X25hbWU7XG5cbiAgICBpZiAoaXRzTWUgJiYgIWhhc01hbmFnZXIgJiYgcHJvZmlsZUNoYW5nZWQpIHtcbiAgICAgIGNvbnN0IG5ld1Byb2ZpbGUgPSB7XG4gICAgICAgIGZpcnN0X25hbWU6IGF0dGVuZGVlX2ZpcnN0X25hbWUsXG4gICAgICAgIGxhc3RfbmFtZTogYXR0ZW5kZWVfbGFzdF9uYW1lLFxuICAgICAgICBjb21wYW55OiBhdHRlbmRlZV9jb21wYW55Lm5hbWUgfHwgYXR0ZW5kZWVfY29tcGFueVxuICAgICAgfTtcblxuICAgICAgLy8gdGhpcyBpcyBhIGNhbGxiYWNrIG1ldGhvZCB0aGF0IHVwZGF0ZXMgdXNlclByb2ZpbGUgaW4gQVBJIGFuZCBldmVudC1zaXRlXG4gICAgICB1cGRhdGVQcm9maWxlKG5ld1Byb2ZpbGUpO1xuICAgIH1cbiAgfTtcblxuZXhwb3J0IGNvbnN0IHNhdmVUaWNrZXREZXRhaWxzID1cbiAgKHRpY2tldCwgYW5zd2VycykgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goUHJvbWlzZS5yZWplY3QpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOlxuICAgICAgICBcInJlZnVuZF9yZXF1ZXN0cyxvd25lcixvd25lci5leHRyYV9xdWVzdGlvbnMsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLGJhZGdlLGJhZGdlLmZlYXR1cmVzLHRpY2tldF90eXBlLG9yZGVyXCIsXG4gICAgICByZWxhdGlvbnM6IFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5vbmVcIixcbiAgICAgIGZpZWxkczpcbiAgICAgICAgXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24uaWQsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5hbWUsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLnR5cGVcIlxuICAgIH07XG5cbiAgICBjb25zdCBpZFRva2VuID0gZ2V0SWRUb2tlbigpO1xuICAgIGxldCBjb21wYW55ID0gXCJcIjtcbiAgICBpZiAoaWRUb2tlbikge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgdmVyaWZpZXIgPSBuZXcgSWRUb2tlblZlcmlmaWVyKCk7XG4gICAgICAgIGNvbnN0IGp3dCA9IHZlcmlmaWVyLmRlY29kZShpZFRva2VuKTtcbiAgICAgICAgY29tcGFueSA9IGp3dC5wYXlsb2FkLmNvbXBhbnk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiZXJyb3JcIiwgZSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IG5vcm1hbGl6ZWRFbnRpdHkgPSBub3JtYWxpemVUaWNrZXQoYW5zd2Vycyk7XG5cbiAgICByZXR1cm4gcHV0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oVVBEQVRFX1RJQ0tFVCksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzL2FsbC90aWNrZXRzLyR7dGlja2V0LmlkfWAsXG4gICAgICBub3JtYWxpemVkRW50aXR5LFxuICAgICAgYXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKGFzeW5jICgpID0+IHtcbiAgICAgICAgZGlzcGF0Y2gocmVmcmVzaFByb2ZpbGUoYW5zd2VycywgY29tcGFueSwgdGlja2V0Lm93bmVyKSk7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KTtcbiAgfTtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCJAbXVpL21hdGVyaWFsL1N0YWNrXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgZGF5anMgZnJvbSBcImRheWpzXCI7XG5pbXBvcnQgeyBBZGFwdGVyRGF5anMgfSBmcm9tIFwiQG11aS94LWRhdGUtcGlja2Vycy9BZGFwdGVyRGF5anNcIjtcbmltcG9ydCB7IExvY2FsaXphdGlvblByb3ZpZGVyIH0gZnJvbSBcIkBtdWkveC1kYXRlLXBpY2tlcnMvTG9jYWxpemF0aW9uUHJvdmlkZXJcIjtcbmltcG9ydCB7IERhdGVQaWNrZXIgfSBmcm9tIFwiQG11aS94LWRhdGUtcGlja2Vycy9EYXRlUGlja2VyXCI7XG5pbXBvcnQgQ2xvc2VJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Nsb3NlXCI7XG5pbXBvcnQgeyBGSUxURVJfVkFSX0RBVEUgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsgZ2V0RXBvY2hMb3dlclVwcGVySW5TZWNvbmRzIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEJhc2ljRGF0ZVBpY2tlcih7IG9uRmlsdGVyLCBvblJlc2V0IH0pIHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBub3cgPSBkYXlqcygpO1xuICBjb25zdCBbZGF0ZVZhbHVlLCBzZXREYXRlVmFsdWVdID0gdXNlU3RhdGUobm93KTtcbiAgY29uc3Qgb25EYXRlQ2hhbmdlID0gKHZhbCkgPT4ge1xuICAgIHNldERhdGVWYWx1ZSh2YWwpO1xuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh2YWwuJGQpO1xuICAgIGNvbnN0IHsgbG93ZXIsIHVwcGVyIH0gPSBnZXRFcG9jaExvd2VyVXBwZXJJblNlY29uZHMoZGF0ZSk7XG4gICAgb25GaWx0ZXIoe1xuICAgICAgdHlwZTogRklMVEVSX1ZBUl9EQVRFLFxuICAgICAgbmFtZTogXCJjcmVhdGVkXCIsXG4gICAgICBkYXRlLFxuICAgICAgbG93ZXIsXG4gICAgICB1cHBlclxuICAgIH0pO1xuICB9O1xuICBjb25zdCBvblJlc2V0QWN0aW9uID0gKCkgPT4ge1xuICAgIG9uUmVzZXQoKTtcbiAgICBzZXREYXRlVmFsdWUobm93KTtcbiAgfTtcbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5maWx0ZXJEYXRlTGFiZWx9Pnt0KFwiZmlsdGVyLnB1cmNoYXNlZF9vblwiKX08L2Rpdj5cbiAgICAgIDxTdGFja1xuICAgICAgICBhbGlnbkl0ZW1zPVwiY2VudGVyXCJcbiAgICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICAgICAgc3g9e3sgcHQ6IDIsIHBiOiAyIH19XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmRhdGVQaWNrZXJDb250YWluZXJ9XG4gICAgICA+XG4gICAgICAgIDxDbG9zZUljb25cbiAgICAgICAgICBmb250U2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5kYXRlcGlja2VyQ2xvc2V9XG4gICAgICAgICAgb25DbGljaz17b25SZXNldEFjdGlvbn1cbiAgICAgICAgLz5cbiAgICAgICAgPExvY2FsaXphdGlvblByb3ZpZGVyIGRhdGVBZGFwdGVyPXtBZGFwdGVyRGF5anN9PlxuICAgICAgICAgIDxEYXRlUGlja2VyXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jYWxlbmRhckRpc3BsYXl9XG4gICAgICAgICAgICBvbkNoYW5nZT17b25EYXRlQ2hhbmdlfVxuICAgICAgICAgICAgdmFsdWU9e2RhdGVWYWx1ZX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L0xvY2FsaXphdGlvblByb3ZpZGVyPlxuICAgICAgPC9TdGFjaz5cbiAgICA8Lz5cbiAgKTtcbn1cblxuQmFzaWNEYXRlUGlja2VyLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jLFxuICBvblJlc2V0OiBQcm9wVHlwZXMuZnVuY1xufTtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlUmVmLCB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCBTdGFjayBmcm9tIFwiQG11aS9tYXRlcmlhbC9TdGFja1wiO1xuaW1wb3J0IEZpbHRlckxpc3RJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ZpbHRlckxpc3RcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgQmFzaWNEYXRlUGlja2VyIGZyb20gXCIuL0RhdGVwaWNrZXJcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuZnVuY3Rpb24gRmlsdGVyKHsgb25GaWx0ZXIsIG9uUmVzZXQgfSkge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtzaG93RmlsdGVyTGlzdCwgc2V0U2hvd0ZpbHRlckxpc3RdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbc2hvd0RhdGVwaWNrZXIsIHNldFNob3dEYXRlcGlja2VyXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2ZpbHRlck51bUFjdGl2ZSwgc2V0RmlsdGVyTnVtQWN0aXZlXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgZmlsdGVyUmVmID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCBoYW5kbGVGaWx0ZXJDbGlja091dHNpZGUgPSAoZXZlbnQpID0+IHtcbiAgICBpZiAoZmlsdGVyUmVmLmN1cnJlbnQgJiYgIWZpbHRlclJlZi5jdXJyZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgIGlmIChzaG93RmlsdGVyTGlzdCkge1xuICAgICAgICBzZXRTaG93RmlsdGVyTGlzdChmYWxzZSk7XG4gICAgICAgIHNldFNob3dEYXRlcGlja2VyKGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZUZpbHRlckNsaWNrT3V0c2lkZSwgZmFsc2UpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlRmlsdGVyQ2xpY2tPdXRzaWRlLCBmYWxzZSk7XG4gICAgfTtcbiAgfSwgW3Nob3dGaWx0ZXJMaXN0XSk7XG5cbiAgY29uc3QgdG9nZ2xlID0gKCkgPT4ge1xuICAgIHNldFNob3dGaWx0ZXJMaXN0KCFzaG93RmlsdGVyTGlzdCk7XG4gICAgc2V0U2hvd0RhdGVwaWNrZXIoIXNob3dEYXRlcGlja2VyKTtcbiAgfTtcbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlckNvbnRhaW5lcn0gcmVmPXtmaWx0ZXJSZWZ9PlxuICAgICAgPFN0YWNrXG4gICAgICAgIGFsaWduSXRlbXM9XCJjZW50ZXJcIlxuICAgICAgICBkaXJlY3Rpb249XCJyb3dcIlxuICAgICAgICBzeD17eyBwdDogMiwgcGI6IDIgfX1cbiAgICAgICAgb25DbGljaz17dG9nZ2xlfVxuICAgICAgPlxuICAgICAgICA8RmlsdGVyTGlzdEljb24gZm9udFNpemU9XCJsYXJnZVwiIGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlckljb259IC8+XG4gICAgICAgIHsvKiogY3VycmVudGx5IGp1c3Qgc2hvd2luZyBcIjFcIiBiZWNhdXNlIHdlJ3JlIGN1cnJlbnRseSBvbmx5IGZpbHRlcmluZyBvbmUgY3JpdGVyaWEgLSBjcmVhdGVkIGRhdGUgKi99XG4gICAgICAgIHtmaWx0ZXJOdW1BY3RpdmUgJiYgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5maWx0ZXJOdW1BY3RpdmV9PjE8L2Rpdj59XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlckxhYmVsfT57dChcImZpbHRlci5maWx0ZXJcIil9PC9zcGFuPlxuICAgICAgPC9TdGFjaz5cbiAgICAgIDxCb3hcbiAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuZmlsdGVyTGlzdENvbnRhaW5lcn0gJHtzdHlsZXMuY29udGFpbmVyfSAke1xuICAgICAgICAgIHNob3dGaWx0ZXJMaXN0ID8gc3R5bGVzLnNob3dEYXRlUGlja2VyIDogXCJcIlxuICAgICAgICB9YH1cbiAgICAgID5cbiAgICAgICAgPEJhc2ljRGF0ZVBpY2tlclxuICAgICAgICAgIG9uUmVzZXQ9eygpID0+IHtcbiAgICAgICAgICAgIG9uUmVzZXQoKTtcbiAgICAgICAgICAgIHNldEZpbHRlck51bUFjdGl2ZShmYWxzZSk7XG4gICAgICAgICAgICB0b2dnbGUoKTtcbiAgICAgICAgICB9fVxuICAgICAgICAgIG9uRmlsdGVyPXsoZmlsdGVyKSA9PiB7XG4gICAgICAgICAgICBvbkZpbHRlcihmaWx0ZXIpO1xuICAgICAgICAgICAgc2V0RmlsdGVyTnVtQWN0aXZlKHRydWUpO1xuICAgICAgICAgIH19XG4gICAgICAgIC8+XG4gICAgICA8L0JveD5cbiAgICA8L0JveD5cbiAgKTtcbn1cblxuRmlsdGVyLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBGaWx0ZXI7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHN0eWxlZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiO1xuaW1wb3J0IFNlYXJjaEljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvU2VhcmNoXCI7XG5pbXBvcnQgQ2xvc2VJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Nsb3NlXCI7XG5pbXBvcnQgSW5wdXRCYXNlIGZyb20gXCJAbXVpL21hdGVyaWFsL0lucHV0QmFzZVwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfT1JERVJfTlVNQkVSIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuY29uc3QgU2VhcmNoQ29udGFpbmVyID0gc3R5bGVkKFwiZGl2XCIpKCgpID0+ICh7XG4gIHBvc2l0aW9uOiBcInJlbGF0aXZlXCIsXG4gIG1hcmdpblJpZ2h0OiBcIjBcIixcbiAgbWFyZ2luTGVmdDogXCIwXCIsXG4gIHdpZHRoOiBcIjEwMCVcIixcbiAgZGlzcGxheTogXCJibG9ja1wiXG59KSk7XG5jb25zdCBTZWFyY2hJY29uV3JhcHBlciA9IHN0eWxlZChcImRpdlwiKSgoKSA9PiAoe1xuICBoZWlnaHQ6IFwiMTAwJVwiLFxuICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICBkaXNwbGF5OiBcImZsZXhcIixcbiAgYWxpZ25JdGVtczogXCJjZW50ZXJcIixcbiAganVzdGlmeUNvbnRlbnQ6IFwiY2VudGVyXCJcbn0pKTtcbmNvbnN0IFN0eWxlZElucHV0QmFzZSA9IHN0eWxlZChJbnB1dEJhc2UpKCgpID0+ICh7XG4gIGNvbG9yOiBcImluaGVyaXRcIixcbiAgYm9yZGVyQm90dG9tOiBcIjFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuNDIpXCIsXG4gIHBhZGRpbmdMZWZ0OiBcIjI1cHhcIixcbiAgcGFkZGluZ1JpZ2h0OiBcIjI1cHhcIixcbiAgZm9udFNpemU6IFwiMWVtXCJcbn0pKTtcbmNvbnN0IENsb3NlSWNvbldyYXBwZXIgPSBzdHlsZWQoQ2xvc2VJY29uKSgoKSA9PiAoe1xuICBwYWRkaW5nOiBcIjJweFwiLFxuICBmb250U2l6ZTogXCIxLjVlbVwiLFxuICBoZWlnaHQ6IFwiMTAwJVwiLFxuICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICB0b3A6IFwiMFwiLFxuICByaWdodDogXCIwXCIsXG4gIGRpc3BsYXk6IFwiZmxleFwiLFxuICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLFxuICBqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIixcbiAgY3Vyc29yOiBcInBvaW50ZXJcIixcbiAgekluZGV4OiBcIjEwMDBcIlxufSkpO1xuXG5mdW5jdGlvbiBTZWFyY2goeyBvblNlYXJjaCwgb25SZXNldCB9KSB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW3Nob3dDbG9zZSwgc2V0U2hvd0Nsb3NlXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW3NlYXJjaFZhbHVlLCBzZXRTZWFyY2hWYWx1ZV0gPSB1c2VTdGF0ZShcIlwiKTtcbiAgY29uc3Qgb25LZXlEb3duID0gKGV2ZW50KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAga2V5LFxuICAgICAgbmF0aXZlRXZlbnQ6IHtcbiAgICAgICAgdGFyZ2V0OiB7IHZhbHVlIH1cbiAgICAgIH1cbiAgICB9ID0gZXZlbnQ7XG4gICAgaWYgKGtleSA9PT0gXCJFbnRlclwiKSB7XG4gICAgICBvblNlYXJjaCh7XG4gICAgICAgIHZhbHVlLFxuICAgICAgICBuYW1lOiBcIm51bWJlclwiLFxuICAgICAgICB0eXBlOiBGSUxURVJfVkFSX09SREVSX05VTUJFUlxuICAgICAgfSk7XG4gICAgICBzZXRTaG93Q2xvc2UodHJ1ZSk7XG4gICAgfVxuICB9O1xuICBjb25zdCByZXNldFNlYXJjaCA9ICgpID0+IHtcbiAgICBzZXRTZWFyY2hWYWx1ZShcIlwiKTtcbiAgICBzZXRTaG93Q2xvc2UoZmFsc2UpO1xuICAgIG9uUmVzZXQoKTtcbiAgfTtcbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPFNlYXJjaENvbnRhaW5lcj5cbiAgICAgICAge3Nob3dDbG9zZSAmJiAoXG4gICAgICAgICAgPENsb3NlSWNvbldyYXBwZXIgb25DbGljaz17cmVzZXRTZWFyY2h9PlxuICAgICAgICAgICAgPENsb3NlSWNvbiAvPlxuICAgICAgICAgIDwvQ2xvc2VJY29uV3JhcHBlcj5cbiAgICAgICAgKX1cbiAgICAgICAgPFNlYXJjaEljb25XcmFwcGVyPlxuICAgICAgICAgIDxTZWFyY2hJY29uIC8+XG4gICAgICAgIDwvU2VhcmNoSWNvbldyYXBwZXI+XG4gICAgICAgIDxTdHlsZWRJbnB1dEJhc2VcbiAgICAgICAgICBwbGFjZWhvbGRlcj17dChcIm9yZGVyX3NlYXJjaC5vcmRlcl9udW1iZXJcIil9XG4gICAgICAgICAgaW5wdXRQcm9wcz17eyBcImFyaWEtbGFiZWxcIjogXCJzZWFyY2hcIiB9fVxuICAgICAgICAgIHZhbHVlPXtzZWFyY2hWYWx1ZX1cbiAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNldFNlYXJjaFZhbHVlKGUudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICBvbktleURvd249e29uS2V5RG93bn1cbiAgICAgICAgLz5cbiAgICAgIDwvU2VhcmNoQ29udGFpbmVyPlxuICAgIDwvQm94PlxuICApO1xufVxuXG5TZWFyY2gucHJvcFR5cGVzID0ge1xuICBvblNlYXJjaDogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uUmVzZXQ6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBTZWFyY2g7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZVJlZiwgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgU3RhY2sgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIjtcbmltcG9ydCB7IEJveCwgQnV0dG9uIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBJbXBvcnRFeHBvcnRJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ltcG9ydEV4cG9ydFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBTb3J0KHsgb25Tb3J0IH0pIHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbc2hvd1NvcnQsIHNldFNob3dTb3J0XSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3Qgc29ydFJlZiA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgaGFuZGxlU29ydENsaWNrT3V0c2lkZSA9IChldmVudCkgPT4ge1xuICAgIGlmIChzb3J0UmVmLmN1cnJlbnQgJiYgIXNvcnRSZWYuY3VycmVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICBzZXRTaG93U29ydChmYWxzZSk7XG4gICAgfVxuICB9O1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVTb3J0Q2xpY2tPdXRzaWRlLCBmYWxzZSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVTb3J0Q2xpY2tPdXRzaWRlLCBmYWxzZSk7XG4gICAgfTtcbiAgfSwgW3Nob3dTb3J0XSk7XG5cbiAgY29uc3QgdG9nZ2xlID0gKCkgPT4ge1xuICAgIHNldFNob3dTb3J0KCFzaG93U29ydCk7XG4gIH07XG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5zb3J0Q29udGFpbmVyfSBvbkNsaWNrPXt0b2dnbGV9PlxuICAgICAgPFN0YWNrXG4gICAgICAgIHJlZj17c29ydFJlZn1cbiAgICAgICAgYWxpZ25JdGVtcz1cImNlbnRlclwiXG4gICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgICAgIHN4PXt7IHB0OiAyLCBwYjogMiB9fVxuICAgICAgPlxuICAgICAgICA8SW1wb3J0RXhwb3J0SWNvbiBmb250U2l6ZT1cImxhcmdlXCIgY2xhc3NOYW1lPXtzdHlsZXMuc29ydEljb259IC8+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLnNvcnRMYWJlbH0+e3QoXCJzb3J0LnNvcnRcIil9PC9zcGFuPlxuICAgICAgPC9TdGFjaz5cbiAgICAgIHtzaG93U29ydCAmJiAoXG4gICAgICAgIDxCb3ggY2xhc3NOYW1lPXtgJHtzdHlsZXMuc29ydExpc3RDb250YWluZXJ9ICR7c3R5bGVzLmNvbnRhaW5lcn1gfT5cbiAgICAgICAgICA8QnV0dG9uIGNsYXNzTmFtZT17c3R5bGVzLmxhYmVsfSBvbkNsaWNrPXsoKSA9PiBvblNvcnQoXCJkZXNjXCIpfT5cbiAgICAgICAgICAgIHt0KFwic29ydC5uZXdfZmlyc3RcIil9XG4gICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgPEJ1dHRvbiBjbGFzc05hbWU9e3N0eWxlcy5sYWJlbH0gb25DbGljaz17KCkgPT4gb25Tb3J0KFwiYXNjXCIpfT5cbiAgICAgICAgICAgIHt0KFwic29ydC5vbGRfZmlyc3RcIil9XG4gICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIDwvQm94PlxuICAgICAgKX1cbiAgICA8L0JveD5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgU29ydDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEdyaWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEZpbHRlciBmcm9tIFwiLi9GaWx0ZXJcIjtcbmltcG9ydCBTb3J0IGZyb20gXCIuL1NvcnRcIjtcbmltcG9ydCBTZWFyY2ggZnJvbSBcIi4vU2VhcmNoXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmZ1bmN0aW9uIEZpbHRlclNvcnRTZWFyY2goeyBvbkZpbHRlciwgb25Tb3J0LCBvblNlYXJjaCwgb25SZXNldCB9KSB7XG4gIHJldHVybiAoXG4gICAgPEdyaWQgY29udGFpbmVyIGp1c3RpZnk9XCJmbGV4LWVuZFwiIGFsaWduSXRlbXM9XCJjZW50ZXJcIj5cbiAgICAgIDxHcmlkXG4gICAgICAgIGl0ZW1cbiAgICAgICAgeHM9ezZ9XG4gICAgICAgIGNvbnRhaW5lclxuICAgICAgICBwYWRkaW5nPXsxfVxuICAgICAgICBnYXA9ezJ9XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlclNvcnRDb250YWluZXJ9XG4gICAgICAgIHN4PXt7IHB0OiAyLCBwYjogMiB9fVxuICAgICAgPlxuICAgICAgICA8R3JpZCBpdGVtPlxuICAgICAgICAgIDxGaWx0ZXIgb25GaWx0ZXI9e29uRmlsdGVyfSBvblJlc2V0PXtvblJlc2V0fSAvPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDxHcmlkIGl0ZW0+XG4gICAgICAgICAgPFNvcnQgb25Tb3J0PXtvblNvcnR9IC8+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgIDwvR3JpZD5cbiAgICAgIDxHcmlkIGl0ZW0geHM9ezZ9IGNvbnRhaW5lciBqdXN0aWZ5Q29udGVudD1cImZsZXgtZW5kXCI+XG4gICAgICAgIDxTZWFyY2ggb25TZWFyY2g9e29uU2VhcmNofSBvblJlc2V0PXtvblJlc2V0fSAvPlxuICAgICAgPC9HcmlkPlxuICAgIDwvR3JpZD5cbiAgKTtcbn1cblxuRmlsdGVyU29ydFNlYXJjaC5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25Tb3J0OiBQcm9wVHlwZXMuZnVuYyxcbiAgb25TZWFyY2g6IFByb3BUeXBlcy5mdW5jLFxuICBvblJlc2V0OiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgRmlsdGVyU29ydFNlYXJjaDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBFcnJvckljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXJyb3JcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuZnVuY3Rpb24gRXJyb3JMYWJlbCh7IG1lc3NhZ2UsIGNvbG9yLCBjbGFzc05hbWVzLCBkYXRhVGVzdElkIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8c3BhblxuICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuZXJyb3JMYWJlbH0gJHtjbGFzc05hbWVzICYmIGNsYXNzTmFtZXN9YH1cbiAgICAgIHN0eWxlPXt7IGNvbG9yIH19XG4gICAgICBkYXRhLXRlc3RpZD17ZGF0YVRlc3RJZH1cbiAgICA+XG4gICAgICA8RXJyb3JJY29uIHN4PXt7IGNvbG9yIH19IC8+XG4gICAgICB7bWVzc2FnZX1cbiAgICA8L3NwYW4+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IEVycm9yTGFiZWw7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgRHJhd2VyIGZyb20gXCJAbXVpL21hdGVyaWFsL0RyYXdlclwiO1xuaW1wb3J0IHsgQ29udGFpbmVyIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBDbG9zZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2xvc2VcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuZnVuY3Rpb24gTXVsdGlTdGVwU2xpZGVyKHsgY2hpbGRyZW4sIG9wZW4sIG9uQ2xvc2VTbGlkZXIgfSkge1xuICByZXR1cm4gKFxuICAgIDxEcmF3ZXJcbiAgICAgIGFuY2hvcj1cInJpZ2h0XCJcbiAgICAgIG9wZW49e29wZW59XG4gICAgICBvbkNsb3NlPXtvbkNsb3NlU2xpZGVyfVxuICAgICAgUGFwZXJQcm9wcz17e1xuICAgICAgICBzeDoge1xuICAgICAgICAgIHdpZHRoOiBcIjYwJVwiXG4gICAgICAgIH1cbiAgICAgIH19XG4gICAgPlxuICAgICAgPENvbnRhaW5lciBjbGFzc05hbWU9e3N0eWxlcy5tdWx0aXN0ZXBDb250YWluZXJ9PlxuICAgICAgICA8Q2xvc2VJY29uXG4gICAgICAgICAgZm9udFNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMubXVsdGlzdGVwQ2xvc2VJY29ufVxuICAgICAgICAgIG9uQ2xpY2s9e29uQ2xvc2VTbGlkZXJ9XG4gICAgICAgICAgZGF0YS10ZXN0aWQ9XCJjbG9zZS1zbGlkZXJcIlxuICAgICAgICAvPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0NvbnRhaW5lcj5cbiAgICA8L0RyYXdlcj5cbiAgKTtcbn1cblxuTXVsdGlTdGVwU2xpZGVyLnByb3BUeXBlcyA9IHtcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBvcGVuOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25DbG9zZVNsaWRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE11bHRpU3RlcFNsaWRlcjtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBJbmZpbml0ZVNjcm9sbCBmcm9tIFwicmVhY3QtaW5maW5pdGUtc2Nyb2xsLWNvbXBvbmVudFwiO1xuaW1wb3J0IEZpbHRlclNvcnRTZWFyY2ggZnJvbSBcIi4vRmlsdGVyU29ydFNlYXJjaFwiO1xuaW1wb3J0IE9yZGVyc0xpc3QgZnJvbSBcIi4vT3JkZXJzTGlzdFwiO1xuaW1wb3J0IHsgZ2V0U3VtbWl0Rm9ybWF0dGVkRGF0ZSB9IGZyb20gXCIuLi91dGlscy9zdW1taXRVdGlsc1wiO1xuaW1wb3J0IHsgZ2V0VXNlck9yZGVycywgcmVzZXRGaWx0ZXIgfSBmcm9tIFwiLi4vYWN0aW9uc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBNeU9yZGVyc1RpY2tldHMgPSAoKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCB7XG4gICAgc3VtbWl0LFxuICAgIG1lbWJlck9yZGVycyxcbiAgICBvcmRlcnNfY3VycmVudF9wYWdlLFxuICAgIG9yZGVyc19wZXJfcGFnZSxcbiAgICBvcmRlcnNfdG90YWxcbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG4gIGNvbnN0IFtoYXNNb3JlLCBzZXRIYXNNb3JlXSA9IHVzZVN0YXRlKHRydWUpO1xuICBjb25zdCBbc2VhcmNoTmV4dCwgc2V0U2VhcmNoTmV4dF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtmaWx0ZXIsIHNldEZpbHRlcl0gPSB1c2VTdGF0ZSh7fSk7XG4gIGNvbnN0IFtzb3J0LCBzZXRTb3J0XSA9IHVzZVN0YXRlKHt9KTtcblxuICBjb25zdCBvblJlc2V0ID0gKCkgPT4ge1xuICAgIHNldFNvcnQoe30pO1xuICAgIHNldEZpbHRlcih7fSk7XG4gICAgc2V0U2VhcmNoTmV4dChmYWxzZSk7XG4gICAgZGlzcGF0Y2gocmVzZXRGaWx0ZXIoKSk7XG4gIH07XG5cbiAgY29uc3QgZmV0Y2hEYXRhID0gYXN5bmMgKCkgPT4ge1xuICAgIGRpc3BhdGNoKFxuICAgICAgZ2V0VXNlck9yZGVycyh7XG4gICAgICAgIHBhZ2U6IG9yZGVyc19jdXJyZW50X3BhZ2UsXG4gICAgICAgIHBlclBhZ2U6IG9yZGVyc19wZXJfcGFnZSxcbiAgICAgICAgbmV4dDogc2VhcmNoTmV4dCxcbiAgICAgICAgZmlsdGVyLFxuICAgICAgICBzb3J0XG4gICAgICB9KVxuICAgICkudGhlbigocmVzKSA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgIHJlcy5yZXNwb25zZT8uZGF0YT8ubGVuZ3RoID4gb3JkZXJzX3Blcl9wYWdlICYmXG4gICAgICAgIG1lbWJlck9yZGVycy5sZW5ndGggPT09IG9yZGVyc190b3RhbFxuICAgICAgKVxuICAgICAgICBzZXRIYXNNb3JlKGZhbHNlKTtcbiAgICB9KTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGZldGNoRGF0YSgpO1xuICB9LCBbZmlsdGVyLCBzb3J0LCBzZWFyY2hOZXh0XSk7XG5cbiAgY29uc3Qgb25GaWx0ZXIgPSAoZmlsdGVyKSA9PiB7XG4gICAgc2V0U29ydCh7fSk7XG4gICAgc2V0RmlsdGVyKGZpbHRlcik7XG4gIH07XG4gIGNvbnN0IG9uU29ydCA9IChkaXJlY3Rpb24pID0+IHtcbiAgICBzZXRGaWx0ZXIoe30pO1xuICAgIHNldFNvcnQoeyBkaXJlY3Rpb24sIG5hbWU6IFwiY3JlYXRlZFwiIH0pO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxGaWx0ZXJTb3J0U2VhcmNoXG4gICAgICAgIG9uRmlsdGVyPXtvbkZpbHRlcn1cbiAgICAgICAgb25Tb3J0PXtvblNvcnR9XG4gICAgICAgIG9uU2VhcmNoPXtvbkZpbHRlcn1cbiAgICAgICAgb25SZXNldD17b25SZXNldH1cbiAgICAgIC8+XG4gICAgICA8Qm94XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLndpZGdldEhlYWRlcn1cbiAgICAgICAgc3g9e3sgcGFkZGluZzogeyB4czogMiwgbWQ6IDAsIGxnOiAwIH0gfX1cbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJteS1vcmRlcnMtdGlja2V0LWhlYWRlclwiXG4gICAgICA+XG4gICAgICAgIDxoMiBjbGFzc05hbWU9e3N0eWxlcy5zdW1taXRUaXRsZURhdGV9PntzdW1taXQ/Lm5hbWV9PC9oMj5cbiAgICAgICAgPGgyIGNsYXNzTmFtZT17c3R5bGVzLnN1bW1pdFRpdGxlRGF0ZX0+XG4gICAgICAgICAge2dldFN1bW1pdEZvcm1hdHRlZERhdGUoc3VtbWl0KX1cbiAgICAgICAgPC9oMj5cbiAgICAgIDwvQm94PlxuICAgICAge21lbWJlck9yZGVycz8ubGVuZ3RoID8gKFxuICAgICAgICA8SW5maW5pdGVTY3JvbGxcbiAgICAgICAgICBkYXRhTGVuZ3RoPXttZW1iZXJPcmRlcnMubGVuZ3RofVxuICAgICAgICAgIG5leHQ9eygpID0+IHNldFNlYXJjaE5leHQodHJ1ZSl9XG4gICAgICAgICAgaGFzTW9yZT17aGFzTW9yZX1cbiAgICAgICAgICBzY3JvbGxUaHJlc2hvbGQ9ezF9XG4gICAgICAgID5cbiAgICAgICAgICB7bWVtYmVyT3JkZXJzPy5tYXAoKG9yZGVyKSA9PiAoXG4gICAgICAgICAgICA8T3JkZXJzTGlzdFxuICAgICAgICAgICAgICBrZXk9e29yZGVyLm51bWJlciArIG9yZGVyLmlkfVxuICAgICAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9JbmZpbml0ZVNjcm9sbD5cbiAgICAgICkgOiAoXG4gICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMubm9PcmRlcnNGb3VuZH0+e3QoXCJvcmRlcnMubm9fb3JkZXJzXCIpfTwvQm94PlxuICAgICAgKX1cbiAgICA8Lz5cbiAgKTtcbn07XG5leHBvcnQgZGVmYXVsdCBNeU9yZGVyc1RpY2tldHM7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkLCBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IERpdmlkZXIgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvRGl2aWRlclwiO1xuaW1wb3J0IHsgY2FsY3VsYXRlT3JkZXJUb3RhbHMsIGZvcm1hdEN1cnJlbmN5IH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmZ1bmN0aW9uIE9yZGVyU3VtbWFyeVRhYmxlKHsgb3JkZXIsIHN1bW1pdCwgdGlja2V0cyB9KSB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgeyBkaXNjb3VudFRvdGFsLCByZWZ1bmRUb3RhbCwgdGF4ZXNUb3RhbCwgYW1vdW50VG90YWwsIHRpY2tldFN1bW1hcnkgfSA9XG4gICAgY2FsY3VsYXRlT3JkZXJUb3RhbHMoeyBvcmRlciwgc3VtbWl0LCB0aWNrZXRzIH0pO1xuICBjb25zdCBodW5kcmVkID0gMTAwO1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlUYWJsZX0+XG4gICAgICB7dGlja2V0U3VtbWFyeT8ubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgIDw+XG4gICAgICAgICAge3RpY2tldFN1bW1hcnkubWFwKCh0aWNrZXQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRpY2tldFRvdGFsID1cbiAgICAgICAgICAgICAgKHRpY2tldC5xdHkgKiAodGlja2V0LnRpY2tldF90eXBlLmNvc3QgKiBodW5kcmVkKSkgLyBodW5kcmVkO1xuXG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICA8R3JpZFxuICAgICAgICAgICAgICAgIGNvbnRhaW5lclxuICAgICAgICAgICAgICAgIGtleT17YHRpeG9yZGVyXyR7dGlja2V0LnRpY2tldF90eXBlLmNyZWF0ZWR9YH1cbiAgICAgICAgICAgICAgICBzeD17eyBwYjogMSB9fVxuICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwib3JkZXItc3VtbWFyeS1pdGVtaXplZFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICB4e3RpY2tldC5xdHl9IHt0aWNrZXQudGlja2V0X3R5cGUubmFtZX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAgICAgICAge2Zvcm1hdEN1cnJlbmN5KHRpY2tldFRvdGFsLCB7IGN1cnJlbmN5OiBvcmRlci5jdXJyZW5jeSB9KX1cbiAgICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSl9XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICAgIHtvcmRlci5kaXNjb3VudF9hbW91bnQgPiAwICYmIChcbiAgICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHBiOiAxIH19PlxuICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LmRpc2NvdW50c1wiKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAgLXtkaXNjb3VudFRvdGFsfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIHtvcmRlci50YXhlc19hbW91bnQgPiAwICYmIChcbiAgICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHBiOiAxIH19PlxuICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnRheGVzXCIpfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICB7dGF4ZXNUb3RhbH1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICB7b3JkZXIuc3RhdHVzID09PSBcIlBhaWRcIiAmJiAoXG4gICAgICAgIDxHcmlkIGNvbnRhaW5lciBzeD17eyBwYjogMSB9fT5cbiAgICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5hbW91bnRfcGFpZFwiKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAgLXthbW91bnRUb3RhbH1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICB7cmVmdW5kVG90YWwgPiAwICYmIChcbiAgICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHBiOiAxIH19PlxuICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnJlZnVuZHNcIil9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICAgIHtyZWZ1bmRUb3RhbH1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICA8RGl2aWRlciAvPlxuICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHB0OiAxLCBwYjogMSB9fT5cbiAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnRvdGFsXCIpfVxuICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICB7b3JkZXIuc3RhdHVzID09PSBcIlBhaWRcIiA/IFwiJDAuMDBcIiA6IGFtb3VudFRvdGFsfVxuICAgICAgICA8L0dyaWQ+XG4gICAgICA8L0dyaWQ+XG4gICAgPC9Cb3g+XG4gICk7XG59XG5cbk9yZGVyU3VtbWFyeVRhYmxlLnByb3BUeXBlcyA9IHtcbiAgb3JkZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgY3VycmVuY3k6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgZGlzY291bnRfYW1vdW50OiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIHRheGVzX2Ftb3VudDogUHJvcFR5cGVzLm51bWJlcixcbiAgICBzdGF0dXM6IFByb3BUeXBlcy5zdHJpbmdcbiAgfSksXG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgdGlja2V0czogUHJvcFR5cGVzLmFycmF5T2YoT2JqZWN0KVxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJTdW1tYXJ5VGFibGU7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlTm93IH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgeyB0aWNrZXRzUmVmdW5kYWJsZSB9IGZyb20gXCIuLi8uLi91dGlscy90aWNrZXRVdGlsc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBSZWZ1bmRFbWFpbFN1cHBvcnQoe1xuICBzdW1taXQsXG4gIHJlZnVuZFJlcXVlc3RlZCxcbiAgdGlja2V0cyxcbiAgdGlja2V0c1RvUmVmdW5kLFxuICBzdWJtaXRSZXF1ZXN0LFxuICBvblJlZnVuZENsaWNrLFxuICBvblJlZnVuZERldGFpbENsaWNrLFxuICBvbkVtYWlsU3VwcG9ydENsaWNrXG59KSB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3Qgbm93ID0gdXNlTm93KCk7XG4gIGNvbnN0IGlzSW5SZWZ1bmRhYmxlUGVyaW9kID1cbiAgICBzdW1taXQucmVnaXN0cmF0aW9uX2FsbG93ZWRfcmVmdW5kX3JlcXVlc3RfdGlsbF9kYXRlID4gbm93O1xuICBjb25zdCBhdExlYXN0T25lUmVmdW5kYWJsZVRpY2tldCA9IHRpY2tldHNSZWZ1bmRhYmxlKHRpY2tldHMpO1xuICBjb25zdCBpc1JlZnVuZGFibGUgPSAhIShpc0luUmVmdW5kYWJsZVBlcmlvZCAmJiBhdExlYXN0T25lUmVmdW5kYWJsZVRpY2tldCk7XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHtpc1JlZnVuZGFibGUgJiYgKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZCByZXF1ZXN0IGJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMub3JkZXJTdW1tYXJ5QnV0dG9ufSAke1xuICAgICAgICAgICAgcmVmdW5kUmVxdWVzdGVkICYmIHRpY2tldHNUb1JlZnVuZC5sZW5ndGggPT09IDAgJiYgIXN1Ym1pdFJlcXVlc3RcbiAgICAgICAgICAgICAgPyBzdHlsZXMucmVmdW5kRGlzYWJsZWRcbiAgICAgICAgICAgICAgOiBcIlwiXG4gICAgICAgICAgfWB9XG4gICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgIG9uQ2xpY2s9e29uUmVmdW5kQ2xpY2t9XG4gICAgICAgICAgZGlzYWJsZWQ9e1xuICAgICAgICAgICAgcmVmdW5kUmVxdWVzdGVkICYmIHRpY2tldHNUb1JlZnVuZC5sZW5ndGggPT09IDAgJiYgIXN1Ym1pdFJlcXVlc3RcbiAgICAgICAgICB9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkucmVxdWVzdF9yZWZ1bmRcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKX1cbiAgICAgIDxCdXR0b25cbiAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZCBkZXRhaWxzIGJ1dHRvblwiXG4gICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlCdXR0b259XG4gICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgIG9uQ2xpY2s9e29uUmVmdW5kRGV0YWlsQ2xpY2t9XG4gICAgICA+XG4gICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5yZWZ1bmRfZGV0YWlsc1wiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgICAgPEJ1dHRvblxuICAgICAgICBhcmlhLWxhYmVsPVwiZW1haWwgc3VwcG9ydCBidXR0b25cIlxuICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJTdW1tYXJ5QnV0dG9ufVxuICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICBvbkNsaWNrPXtvbkVtYWlsU3VwcG9ydENsaWNrfVxuICAgICAgPlxuICAgICAgICB7dChcIm9yZGVyX2luZm8uZW1haWxfc3VwcG9ydFwiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgIDwvPlxuICApO1xufVxuXG5SZWZ1bmRFbWFpbFN1cHBvcnQucHJvcFR5cGVzID0ge1xuICBvblJlZnVuZENsaWNrOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25SZWZ1bmREZXRhaWxDbGljazogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uRW1haWxTdXBwb3J0Q2xpY2s6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWZ1bmRFbWFpbFN1cHBvcnQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBHcmlkLCBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IE9yZGVyU3VtbWFyeVRhYmxlIGZyb20gXCIuL09yZGVyU3VtbWFyeVRhYmxlXCI7XG5pbXBvcnQgUmVmdW5kRW1haWxTdXBwb3J0IGZyb20gXCIuL1JlZnVuZEVtYWlsU3VwcG9ydFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBPcmRlclN1bW1hcnkoe1xuICBvcmRlcixcbiAgc3VtbWl0LFxuICB0aWNrZXRzLFxuICBvblJlZnVuZENsaWNrLFxuICByZWZ1bmRSZXF1ZXN0ZWQsXG4gIHRpY2tldHNUb1JlZnVuZCxcbiAgc3VibWl0UmVxdWVzdFxufSkge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxCb3hcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJTdW1tYXJ5V3JhcHBlcn1cbiAgICAgICAgc3g9e3sgcHQ6IDQsIHB4OiA0IH19XG4gICAgICAgIGRhdGEtdGVzdGlkPVwib3JkZXItc3VtbWFyeS1jb250YWluZXJcIlxuICAgICAgPlxuICAgICAgICA8aDM+e3QoXCJvcmRlcl9zdW1tYXJ5Lm9yZGVyX3N1bW1hcnlcIil9PC9oMz5cbiAgICAgICAgPEdyaWQgY29udGFpbmVyPlxuICAgICAgICAgIDxHcmlkXG4gICAgICAgICAgICB4cz17MTJ9XG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlQdXJjaGFzZWRJbmZvfVxuICAgICAgICAgICAgc3g9e3sgcGI6IDMgfX1cbiAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8T3JkZXJTdW1tYXJ5VGFibGVcbiAgICAgICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICAgICAgdGlja2V0cz17dGlja2V0c31cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICA8L0JveD5cbiAgICAgIDxCb3ggeHM9ezEyfSBzeD17eyBwYjogMyB9fT5cbiAgICAgICAgPFJlZnVuZEVtYWlsU3VwcG9ydFxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIHJlZnVuZFJlcXVlc3RlZD17cmVmdW5kUmVxdWVzdGVkfVxuICAgICAgICAgIHRpY2tldHM9e3RpY2tldHN9XG4gICAgICAgICAgdGlja2V0c1RvUmVmdW5kPXt0aWNrZXRzVG9SZWZ1bmR9XG4gICAgICAgICAgc3VibWl0UmVxdWVzdD17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgICBvblJlZnVuZENsaWNrPXtvblJlZnVuZENsaWNrfVxuICAgICAgICAgIG9uUmVmdW5kRGV0YWlsQ2xpY2s9eygpID0+IHt9fVxuICAgICAgICAgIG9uRW1haWxTdXBwb3J0Q2xpY2s9eygpID0+IHt9fVxuICAgICAgICAvPlxuICAgICAgPC9Cb3g+XG4gICAgPC8+XG4gICk7XG59XG5cbk9yZGVyU3VtbWFyeS5wcm9wVHlwZXMgPSB7XG4gIG9yZGVyOiBQcm9wVHlwZXMub2JqZWN0LFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIHRpY2tldHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdClcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyU3VtbWFyeTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmZ1bmN0aW9uIEF0dGVuZGVlU3RhdHVzKHsgdGlja2V0IH0pIHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICByZXR1cm4gdGlja2V0Lm93bmVyPy5lbWFpbCA/IChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmxhYmVsfT5cbiAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5hc3NpZ25lZF90b1wiKX06XG4gICAgICA8c3BhblxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRPd25lckVtYWlsfVxuICAgICAgICBkYXRhLXRlc3RpZD1cImF0dGVuZGVlLXN0YXR1cy1hc3NpZ25lZFwiXG4gICAgICA+XG4gICAgICAgIHtcIiBcIn1cbiAgICAgICAge3RpY2tldC5vd25lcj8uZW1haWx9XG4gICAgICA8L3NwYW4+XG4gICAgPC9Cb3g+XG4gICkgOiAoXG4gICAgdGlja2V0LmlzX2FjdGl2ZSAmJiAoXG4gICAgICA8c3BhblxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRPd25lckVtYWlsfVxuICAgICAgICBkYXRhLXRlc3RpZD1cImF0dGVuZGVlLXN0YXR1cy11bmFzc2lnbmVkXCJcbiAgICAgID5cbiAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLmF0dGVuZGVlX3N0YXR1c191bmFzc2lnbmVkXCIpfVxuICAgICAgPC9zcGFuPlxuICAgIClcbiAgKTtcbn1cblxuQXR0ZW5kZWVTdGF0dXMucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgb3duZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBlbWFpbDogUHJvcFR5cGVzLnN0cmluZ1xuICAgIH0pLFxuICAgIGlzX2FjdGl2ZTogUHJvcFR5cGVzLmJvb2xcbiAgfSlcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEF0dGVuZGVlU3RhdHVzO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IE9yZGVyTGlzdFRpY2tldHMgZnJvbSBcIi4vT3JkZXJMaXN0VGlja2V0c1wiO1xuaW1wb3J0IHsgUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBPcmRlckxpc3RJdGVtKHtcbiAgdGlja2V0cyxcbiAgdG90YWwsXG4gIG9uUGFnaW5hdGVDbGljayxcbiAgc3VtbWl0LFxuICByZWZ1bmRSZXF1ZXN0ZWQsXG4gIHRpY2tldHNUb1JlZnVuZCxcbiAgc2VsZWN0VG9SZWZ1bmRcbn0pIHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbaXRlbXNUb0Rpc3BsYXksIHNldEl0ZW1zVG9EaXNwbGF5XSA9IHVzZVN0YXRlKFxuICAgIFBBR0lOQVRJT05fRElTUExBWV9DT1VOVFxuICApO1xuICBjb25zdCBzbGljZWRUaWNrZXRzID0gdGlja2V0cz8uc2xpY2UoMCwgaXRlbXNUb0Rpc3BsYXkpO1xuICBjb25zdCBvblZpZXdNb3JlID0gKCkgPT4ge1xuICAgIGlmICh0b3RhbCA+IHRpY2tldHMubGVuZ3RoKSB7XG4gICAgICBvblBhZ2luYXRlQ2xpY2soKTtcbiAgICB9XG4gICAgc2V0SXRlbXNUb0Rpc3BsYXkoaXRlbXNUb0Rpc3BsYXkgKyBQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQpO1xuICB9O1xuXG4gIGNvbnN0IG9uVmlld0xlc3MgPSAoKSA9PiBzZXRJdGVtc1RvRGlzcGxheShQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQpO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHtzbGljZWRUaWNrZXRzPy5tYXAoKHRpY2tldCkgPT4gKFxuICAgICAgICA8T3JkZXJMaXN0VGlja2V0c1xuICAgICAgICAgIGtleT17dGlja2V0LmlkfVxuICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIHJlZnVuZFJlcXVlc3RlZD17cmVmdW5kUmVxdWVzdGVkfVxuICAgICAgICAgIGlzU2VsZWN0ZWRUb1JlZnVuZD17ISF0aWNrZXRzVG9SZWZ1bmQuZmluZCgodCkgPT4gdC5pZCA9PT0gdGlja2V0LmlkKX1cbiAgICAgICAgICBzZWxlY3RUb1JlZnVuZD17c2VsZWN0VG9SZWZ1bmR9XG4gICAgICAgIC8+XG4gICAgICApKX1cbiAgICAgIHt0aWNrZXRzPy5sZW5ndGggPj0gaXRlbXNUb0Rpc3BsYXkgJiYgdGlja2V0cz8ubGVuZ3RoICE9PSB0b3RhbCA/IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJ2aWV3IG1vcmUgYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy52aWV3TW9yZUJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXtvblZpZXdNb3JlfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJvcmRlcnMtdGlja2V0cy52aWV3X21vcmVcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKSA6IChcbiAgICAgICAgXCJcIlxuICAgICAgKX1cbiAgICAgIHtzbGljZWRUaWNrZXRzPy5sZW5ndGggPiBQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQgJiZcbiAgICAgIHNsaWNlZFRpY2tldHM/Lmxlbmd0aCA9PT0gdG90YWwgPyAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwidmlldyBsZXNzIGJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudmlld01vcmVCdXR0b259XG4gICAgICAgICAgb25DbGljaz17b25WaWV3TGVzc31cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwib3JkZXJzLXRpY2tldHMudmlld19sZXNzXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICkgOiAoXG4gICAgICAgIFwiXCJcbiAgICAgICl9XG4gICAgPC8+XG4gICk7XG59XG5cbk9yZGVyTGlzdEl0ZW0ucHJvcFR5cGVzID0ge1xuICB0aWNrZXRzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpXG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlckxpc3RJdGVtO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkLCBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCJAbXVpL21hdGVyaWFsL1N0YWNrXCI7XG5pbXBvcnQgQ2hlY2tib3ggZnJvbSBcIkBtdWkvbWF0ZXJpYWwvQ2hlY2tib3hcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCBUaWNrZXRTdGF0dXMgZnJvbSBcIi4uL1RpY2tldFN0YXR1c1wiO1xuaW1wb3J0IE9yZGVyTnVtYmVyIGZyb20gXCIuL09yZGVyTnVtYmVyXCI7XG5pbXBvcnQgeyBnZXRTdW1taXRSZWFzc2lnbkRhdGUgfSBmcm9tIFwiLi4vLi4vdXRpbHMvc3VtbWl0VXRpbHNcIjtcbmltcG9ydCB7IHVzZU5vdyB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0IEF0dGVuZGVlU3RhdHVzIGZyb20gXCIuL0F0dGVuZGVlU3RhdHVzXCI7XG5pbXBvcnQgVGlja2V0RGV0YWlsIGZyb20gXCIuLi9UaWNrZXREZXRhaWxcIjtcbmltcG9ydCB7IHVzZVRpY2tldERldGFpbHMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvdGlja2V0VXRpbHNcIjtcblxuXG5jb25zdCBUaWNrZXRDVEFzID0gKHtcbiAgICAgICAgICAgICAgICAgICAgICBpc0luY29tcGxldGUsXG4gICAgICAgICAgICAgICAgICAgICAgaXNVbmFzc2lnbmVkLFxuICAgICAgICAgICAgICAgICAgICAgIGlzUmVhc3NpZ25hYmxlLFxuICAgICAgICAgICAgICAgICAgICAgIG9uT3BlbkNsaWNrXG4gICAgICAgICAgICAgICAgICAgIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGlmIChpc1VuYXNzaWduZWQpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPEJ1dHRvbiBjbGFzc05hbWU9e3N0eWxlcy5hc3NpZ25UaWNrZXRCdXR0b259PlxuICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuYXNzaWduX3RpY2tldFwiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxTdGFja1xuICAgICAgc3g9e3tcbiAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwic3BhY2UtYmV0d2VlblwiLFxuICAgICAgICB3aWR0aDogXCIxMDAlXCJcbiAgICAgIH19XG4gICAgICBhbGlnbkl0ZW1zPVwiY2VudGVyXCJcbiAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgPlxuICAgICAgPEJ1dHRvbiBjbGFzc05hbWU9e3N0eWxlcy52aWV3RmluaXNoVGlja2V0QnV0dG9ufSBvbkNsaWNrPXtvbk9wZW5DbGlja30+XG4gICAgICAgIHtpc0luY29tcGxldGVcbiAgICAgICAgICA/IHQoXCJ0aWNrZXRfc3RhdHVzLmZpbmlzaF90aWNrZXRcIilcbiAgICAgICAgICA6IHQoXCJ0aWNrZXRfc3RhdHVzLnZpZXdfdGlja2V0XCIpfVxuICAgICAgPC9CdXR0b24+XG4gICAgICB7aXNSZWFzc2lnbmFibGUgJiYgKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlYXNzaWduIHRpY2tldCBidXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnJlYXNzaWduQnV0dG9ufVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnJlYXNzaWduX3RpY2tldFwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApfVxuICAgIDwvU3RhY2s+XG4gICk7XG59O1xuXG5jb25zdCBPcmRlckxpc3RUaWNrZXRzID0gKHtcbiAgdGlja2V0LFxuICBzdW1taXQsXG4gIHJlZnVuZFJlcXVlc3RlZCxcbiAgaXNTZWxlY3RlZFRvUmVmdW5kLFxuICBzZWxlY3RUb1JlZnVuZFxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IG5vdyA9IHVzZU5vdygpO1xuICBjb25zdCB7IGlzUmVmdW5kYWJsZSwgaXNVbmFzc2lnbmVkLCBpc0luY29tcGxldGUgfSA9IHVzZVRpY2tldERldGFpbHMoeyB0aWNrZXQsIHN1bW1pdCB9KTtcbiAgY29uc3QgW29wZW5UaWNrZXQsIHNldE9wZW5UaWNrZXRdID0gdXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IHJlYXNzaWduRGF0ZSA9IGdldFN1bW1pdFJlYXNzaWduRGF0ZShzdW1taXQpO1xuICBjb25zdCBpc1JlYXNzaWduYWJsZSA9IHJlYXNzaWduRGF0ZSA+IG5vdztcblxuICByZXR1cm4gKFxuICAgIDxHcmlkXG4gICAgICBrZXk9e3RpY2tldC5pZH1cbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyV3JhcHBlcn1cbiAgICAgIGNvbnRhaW5lclxuICAgICAgZGF0YS10ZXN0aWQ9XCJvcmRlci1saXN0LXRpY2tldFwiXG4gICAgPlxuICAgICAgPEdyaWRcbiAgICAgICAgeHM9ezh9XG4gICAgICAgIHBhZGRpbmc9ezJ9XG4gICAgICAgIGl0ZW1cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0VGlja2V0VHlwZX1cbiAgICAgICAganVzdGlmeT1cInNwYWNlLWJldHdlZW5cIlxuICAgICAgPlxuICAgICAgICA8U3RhY2tcbiAgICAgICAgICBzeD17e1xuICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwiZmxleC1zdGFydFwiXG4gICAgICAgICAgfX1cbiAgICAgICAgICBkaXJlY3Rpb249XCJyb3dcIlxuICAgICAgICA+XG4gICAgICAgICAge3JlZnVuZFJlcXVlc3RlZCAmJiBpc1JlZnVuZGFibGUgJiYgKFxuICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQgdGlja2V0IGNoZWNrYm94XCJcbiAgICAgICAgICAgICAgcm9sZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgY2hlY2tlZD17aXNTZWxlY3RlZFRvUmVmdW5kfVxuICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNlbGVjdFRvUmVmdW5kKGUsIHRpY2tldCl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICAgICAgPGg0Pnt0aWNrZXQudGlja2V0X3R5cGU/Lm5hbWV9PC9oND5cbiAgICAgICAgPC9TdGFjaz5cbiAgICAgIDwvR3JpZD5cbiAgICAgIDxHcmlkIHhzPXs0fSBwYWRkaW5nPXsyfSBpdGVtPlxuICAgICAgICB7LyogVG8gYWRkIGJhZGdlIGZlYXR1cmVzICovfVxuICAgICAgPC9HcmlkPlxuICAgICAgPEdyaWQgeHM9ezEyfSBzeD17eyBweDogMiwgcGI6IDIgfX0gaXRlbT5cbiAgICAgICAgPEF0dGVuZGVlU3RhdHVzIHRpY2tldD17dGlja2V0fSAvPlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXROb30+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnRpY2tldF9ub1wiKX06e1wiIFwifVxuICAgICAgICAgIDxPcmRlck51bWJlciBudW1iZXI9e3RpY2tldC5udW1iZXJ9IGNvcHkgdHJ1bmNhdGVkIC8+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvR3JpZD5cbiAgICAgIDxHcmlkIGNvbnRhaW5lcj5cbiAgICAgICAgPEdyaWQgY29udGFpbmVyIGRpcmVjdGlvbj1cInJvd1wiIHhzPXsxMn0gbGc9ezZ9IGFsaWduSXRlbXM9XCJjZW50ZXJcIiBpdGVtPlxuICAgICAgICAgIDxUaWNrZXRTdGF0dXMgdGlja2V0PXt0aWNrZXR9IC8+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAgPEdyaWQgcGFkZGluZz17Mn0geHM9ezEyfSBsZz17Nn0gY29udGFpbmVyIGl0ZW0+XG4gICAgICAgICAgPEdyaWRcbiAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgIGNvbnRhaW5lclxuICAgICAgICAgICAgYWxpZ249XCJjZW50ZXJcIlxuICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwic3BhY2UtYmV0d2VlblwiXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0QWN0aW9uQnV0dG9uc31cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dGlja2V0LmlzX2FjdGl2ZSAmJiAoXG4gICAgICAgICAgICAgIDxUaWNrZXRDVEFzXG4gICAgICAgICAgICAgICAgaXNVbmFzc2lnbmVkPXtpc1VuYXNzaWduZWR9XG4gICAgICAgICAgICAgICAgaXNJbmNvbXBsZXRlPXtpc0luY29tcGxldGV9XG4gICAgICAgICAgICAgICAgaXNSZWFzc2lnbmFibGU9e2lzUmVhc3NpZ25hYmxlfVxuICAgICAgICAgICAgICAgIG9uT3BlbkNsaWNrPXsoKSA9PiBzZXRPcGVuVGlja2V0KHRpY2tldCl9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgPC9HcmlkPlxuICAgICAgPFRpY2tldERldGFpbFxuICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgdGlja2V0SWQ9e29wZW5UaWNrZXQ/LmlkfVxuICAgICAgICBvcmRlcklkPXtvcGVuVGlja2V0Py5vcmRlcl9pZH1cbiAgICAgICAgb3duZXJJZD17b3BlblRpY2tldD8ub3duZXI/LmlkfVxuICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRPcGVuVGlja2V0KG51bGwpfVxuICAgICAgLz5cbiAgICA8L0dyaWQ+XG4gICk7XG59O1xuXG5PcmRlckxpc3RUaWNrZXRzLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIGlkOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIG93bmVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgZW1haWw6IFByb3BUeXBlcy5zdHJpbmdcbiAgICB9KSxcbiAgICBudW1iZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgdG90YWxfcmVmdW5kZWRfYW1vdW50OiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIHRpY2tldF90eXBlOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgbmFtZTogUHJvcFR5cGVzLnN0cmluZ1xuICAgIH0pXG4gIH0pXG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlckxpc3RUaWNrZXRzO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IENvbnRlbnRDb3B5SWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9Db250ZW50Q29weVwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBkZWZhdWx0V2lkdGggPSA5MDtcblxuZnVuY3Rpb24gT3JkZXJOdW1iZXIoe1xuICBudW1iZXIsXG4gIGNvcHkgPSBmYWxzZSxcbiAgdHJ1bmNhdGVkID0gZmFsc2UsXG4gIHJldmVyc2VkID0gZmFsc2UsXG4gIHdpZHRoID0gZGVmYXVsdFdpZHRoXG59KSB7XG4gIGNvbnN0IGNsYXNzTmFtZXMgPSBgJHt0cnVuY2F0ZWQgJiYgc3R5bGVzLm9yZGVyVGlja2V0TnVtYmVyVHJ1bmNhdGVkfSAke1xuICAgIHJldmVyc2VkICYmIHN0eWxlcy5yZXZlcnNlZFxuICB9YDtcbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyVGlja2V0Tm9Db250YWluZXJ9PlxuICAgICAgPHNwYW4gY2xhc3NOYW1lPXtjbGFzc05hbWVzfSBzdHlsZT17eyB3aWR0aCB9fT5cbiAgICAgICAge251bWJlcn1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIHtjb3B5ICYmIChcbiAgICAgICAgPENvbnRlbnRDb3B5SWNvblxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNvcHlJY29ufVxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KG51bWJlcil9XG4gICAgICAgICAgZGF0YS10ZXN0aWQ9XCJjb3B5LW51bWJlci1idXR0b25cIlxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuT3JkZXJOdW1iZXIucHJvcFR5cGVzID0ge1xuICBudW1iZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGNvcHk6IFByb3BUeXBlcy5ib29sLFxuICB0cnVuY2F0ZWQ6IFByb3BUeXBlcy5ib29sLFxuICByZXZlcnNlZDogUHJvcFR5cGVzLmJvb2wsXG4gIHdpZHRoOiBQcm9wVHlwZXMubnVtYmVyXG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlck51bWJlcjtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgR3JpZCwgQm94LCBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCJAbXVpL21hdGVyaWFsL1N0YWNrXCI7XG5pbXBvcnQgVGFicyBmcm9tIFwiQG11aS9tYXRlcmlhbC9UYWJzXCI7XG5pbXBvcnQgVGFiIGZyb20gXCJAbXVpL21hdGVyaWFsL1RhYlwiO1xuaW1wb3J0IE9yZGVyTGlzdEl0ZW0gZnJvbSBcIi4vT3JkZXJMaXN0SXRlbVwiO1xuaW1wb3J0IE9yZGVyU3VtbWFyeSBmcm9tIFwiLi4vT3JkZXJTdW1tYXJ5XCI7XG5pbXBvcnQgUmVmdW5kUmVxdWVzdHNNb2RhbCBmcm9tIFwiLi4vUmVmdW5kUmVxdWVzdHNcIjtcbmltcG9ydCBFcnJvckxhYmVsIGZyb20gXCIuLi9MYWJlbHMvRXJyb3JMYWJlbFwiO1xuaW1wb3J0IHsgaXNUaWNrZXRSZWZ1bmRhYmxlIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3RpY2tldFV0aWxzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmZ1bmN0aW9uIFRhYlBhbmVsKHByb3BzKSB7XG4gIGNvbnN0IHsgY2hpbGRyZW4sIHZhbHVlLCBpbmRleCB9ID0gcHJvcHM7XG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgcm9sZT1cInRhYnBhbmVsXCJcbiAgICAgIGhpZGRlbj17dmFsdWUgIT09IGluZGV4fVxuICAgICAgaWQ9e2B0YWJwYW5lbC0ke2luZGV4fWB9XG4gICAgICBhcmlhLWxhYmVsbGVkYnk9e2B0YWItJHtpbmRleH1gfVxuICAgID5cbiAgICAgIHt2YWx1ZSA9PT0gaW5kZXggJiYgY2hpbGRyZW59XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbmZ1bmN0aW9uIE9yZGVyc0xpc3REZXNrdG9wTW9iaWxlKHtcbiAgaXNNb2JpbGUsXG4gIHN1bW1pdCxcbiAgdGlja2V0cyxcbiAgb3JkZXIsXG4gIHRvdGFsLFxuICBkZXRhaWxzUmVxdWlyZWQsXG4gIG9uUGFnaW5hdGVDbGlja1xufSkge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGUoMCk7XG4gIGNvbnN0IGhhbmRsZUNoYW5nZSA9IChfLCBuZXdWYWx1ZSkgPT4ge1xuICAgIHNldFZhbHVlKG5ld1ZhbHVlKTtcbiAgfTtcbiAgY29uc3QgW3JlZnVuZFJlcXVlc3RlZCwgc2V0UmVmdW5kUmVxdWVzdGVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW3RpY2tldHNUb1JlZnVuZCwgc2V0VGlja2V0c1RvUmVmdW5kXSA9IHVzZVN0YXRlKFtdKTtcbiAgY29uc3QgW3N1Ym1pdFJlcXVlc3QsIHNldFN1Ym1pdFJlcXVlc3RdID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gIGNvbnN0IG9uUmVmdW5kQ2xpY2sgPSAoKSA9PiB7XG4gICAgaWYgKHRpY2tldHNUb1JlZnVuZC5sZW5ndGggPT09IDApIHtcbiAgICAgIHNldFJlZnVuZFJlcXVlc3RlZCh0cnVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0U3VibWl0UmVxdWVzdCh0cnVlKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IHVuc2VsZWN0UmVmdW5kVGlja2V0cyA9ICh0aWNrZXQpID0+IHtcbiAgICBjb25zdCBmaWx0ZXJTZWxlY3RlZCA9IHRpY2tldHNUb1JlZnVuZC5maWx0ZXIoKHQpID0+IHQuaWQgIT09IHRpY2tldC5pZCk7XG4gICAgc2V0VGlja2V0c1RvUmVmdW5kKGZpbHRlclNlbGVjdGVkKTtcbiAgfTtcbiAgY29uc3Qgc2VsZWN0VG9SZWZ1bmQgPSAoZSwgdGlja2V0KSA9PiB7XG4gICAgY29uc3QgeyBjaGVja2VkIH0gPSBlLnRhcmdldDtcbiAgICBpZiAoY2hlY2tlZCkge1xuICAgICAgY29uc3Qgc2VsZWN0ZWRUaWNrZXQgPSB0aWNrZXRzLmZpbmQoKHQpID0+IHQuaWQgPT09IHRpY2tldC5pZCk7XG4gICAgICBzZXRUaWNrZXRzVG9SZWZ1bmQoWy4uLnRpY2tldHNUb1JlZnVuZCwgc2VsZWN0ZWRUaWNrZXRdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzKHRpY2tldCk7XG4gICAgfVxuICB9O1xuICBjb25zdCBjYW5jZWxUaWNrZXRzVG9SZWZ1bmQgPSAoKSA9PiB7XG4gICAgc2V0UmVmdW5kUmVxdWVzdGVkKGZhbHNlKTtcbiAgICBzZXRUaWNrZXRzVG9SZWZ1bmQoW10pO1xuICB9O1xuXG4gIGNvbnN0IHNlbGVjdEFsbFRpY2tldHMgPSAoKSA9PiB7XG4gICAgY29uc3QgcmVmdW5kYWJsZVRpY2tldHMgPSB0aWNrZXRzLmZpbHRlcihcbiAgICAgICh0aWNrZXQpID0+IGlzVGlja2V0UmVmdW5kYWJsZSh0aWNrZXQpID09PSB0cnVlXG4gICAgKTtcbiAgICBzZXRUaWNrZXRzVG9SZWZ1bmQocmVmdW5kYWJsZVRpY2tldHMpO1xuICB9O1xuXG4gIGNvbnN0IHJlc2V0QWxsUmVmdW5kU3RhdHVzZXMgPSAoKSA9PiB7XG4gICAgc2V0UmVmdW5kUmVxdWVzdGVkKGZhbHNlKTtcbiAgICBzZXRTdWJtaXRSZXF1ZXN0KGZhbHNlKTtcbiAgICBzZXRUaWNrZXRzVG9SZWZ1bmQoW10pO1xuICB9O1xuXG4gIGNvbnN0IG1vcmVEZXRhaWxzID0gKCkgPT5cbiAgICBkZXRhaWxzUmVxdWlyZWQgJiYgKFxuICAgICAgPEVycm9yTGFiZWxcbiAgICAgICAgbWVzc2FnZT17dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX2RldGFpbHNfcmVxdWlyZWRcIil9XG4gICAgICAgIGNvbG9yPVwiI2ZmOTgwMFwiXG4gICAgICAgIGRhdGFUZXN0SWQ9XCJtb3JlLWRldGFpbHMtbGFiZWxcIlxuICAgICAgLz5cbiAgICApO1xuXG4gIHJldHVybiBpc01vYmlsZSA/IChcbiAgICA8Qm94XG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRMaXN0Q29udGFpbmVyfVxuICAgICAgZGF0YS10ZXN0aWQ9XCJtb2JpbGUtb3JkZXJzLWxpc3QtY29udGFpbmVyXCJcbiAgICA+XG4gICAgICA8Qm94IHN4PXt7IGJvcmRlckNvbG9yOiBcImRpdmlkZXJcIiwgcGI6IDIgfX0+XG4gICAgICAgIDxUYWJzXG4gICAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgdGV4dENvbG9yPVwiIzAwMFwiXG4gICAgICAgICAgYXJpYS1sYWJlbD1cIlRpY2tldHMgJiBTdW1tYXJ5XCJcbiAgICAgICAgICBUYWJJbmRpY2F0b3JQcm9wcz17e1xuICAgICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgICAgYmFja2dyb3VuZDogXCIjMDAwXCJcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgPFRhYiBsYWJlbD17dChcImxhYmVscy50aWNrZXRzXCIpfSBjbGFzc05hbWU9e3N0eWxlcy50YWJCdXR0b25zfSAvPlxuICAgICAgICAgIDxUYWIgbGFiZWw9e3QoXCJsYWJlbHMuc3VtbWFyeVwiKX0gY2xhc3NOYW1lPXtzdHlsZXMudGFiQnV0dG9uc30gLz5cbiAgICAgICAgPC9UYWJzPlxuICAgICAgPC9Cb3g+XG4gICAgICB7bW9yZURldGFpbHMoKX1cbiAgICAgIDxUYWJQYW5lbCB2YWx1ZT17dmFsdWV9IGluZGV4PXswfT5cbiAgICAgICAgPE9yZGVyTGlzdEl0ZW1cbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgdGlja2V0cz17dGlja2V0c31cbiAgICAgICAgICB0b3RhbD17dG90YWx9XG4gICAgICAgICAgb25QYWdpbmF0ZUNsaWNrPXtvblBhZ2luYXRlQ2xpY2t9XG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgcmVmdW5kUmVxdWVzdGVkPXtyZWZ1bmRSZXF1ZXN0ZWR9XG4gICAgICAgICAgdGlja2V0c1RvUmVmdW5kPXt0aWNrZXRzVG9SZWZ1bmR9XG4gICAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e3NlbGVjdFRvUmVmdW5kfVxuICAgICAgICAgIHN1Ym1pdFJlcXVlc3Q9e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgICAgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzPXt1bnNlbGVjdFJlZnVuZFRpY2tldHN9XG4gICAgICAgIC8+XG4gICAgICA8L1RhYlBhbmVsPlxuICAgICAgPFRhYlBhbmVsIHZhbHVlPXt2YWx1ZX0gaW5kZXg9ezF9PlxuICAgICAgICA8T3JkZXJTdW1tYXJ5XG4gICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIHRpY2tldHM9e3RpY2tldHN9XG4gICAgICAgICAgb25SZWZ1bmRDbGljaz17b25SZWZ1bmRDbGlja31cbiAgICAgICAgICB0aWNrZXRzVG9SZWZ1bmQ9e3RpY2tldHNUb1JlZnVuZH1cbiAgICAgICAgICByZWZ1bmRSZXF1ZXN0ZWQ9e3JlZnVuZFJlcXVlc3RlZH1cbiAgICAgICAgICBzdWJtaXRSZXF1ZXN0PXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICAvPlxuICAgICAgPC9UYWJQYW5lbD5cbiAgICA8L0JveD5cbiAgKSA6IChcbiAgICA8PlxuICAgICAgPEdyaWQgaXRlbSBtZD17MTJ9PlxuICAgICAgICB7bW9yZURldGFpbHMoKX1cbiAgICAgIDwvR3JpZD5cbiAgICAgIHtyZWZ1bmRSZXF1ZXN0ZWQgJiYgKFxuICAgICAgICA8R3JpZCBpdGVtIG1kPXsxMn0+XG4gICAgICAgICAgPHNwYW4+e3QoXCJ0aWNrZXRfc3RhdHVzLnNlbGVjdF90aWNrZXRfcmVmdW5kXCIpfTwvc3Bhbj5cbiAgICAgICAgICA8U3RhY2tcbiAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiBcImZsZXgtc3RhcnRcIlxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIGFsaWduSXRlbXM9XCJjZW50ZXJcIlxuICAgICAgICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgICAgICAgIHNpemU9XCJtZWRpdW1cIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5yZWZ1bmRCdXR0b25zfVxuICAgICAgICAgICAgICBvbkNsaWNrPXtzZWxlY3RBbGxUaWNrZXRzfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc2VsZWN0X2FsbFwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgICAgICAgICBzaXplPVwibWVkaXVtXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMucmVmdW5kQnV0dG9uc31cbiAgICAgICAgICAgICAgb25DbGljaz17Y2FuY2VsVGlja2V0c1RvUmVmdW5kfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc2VsZWN0X2NhbmNlbFwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgIDwvU3RhY2s+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICA8R3JpZFxuICAgICAgICBwYWRkaW5nPXsxfVxuICAgICAgICBpdGVtXG4gICAgICAgIG1kPXs3fVxuICAgICAgICBvcmRlcj17eyBtZDogMSB9fVxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRMaXN0Q29udGFpbmVyfVxuICAgICAgICBkYXRhLXRlc3RpZD1cImRlc2t0b3Atb3JkZXJzLWxpc3QtY29udGFpbmVyXCJcbiAgICAgID5cbiAgICAgICAgPE9yZGVyTGlzdEl0ZW1cbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgdGlja2V0cz17dGlja2V0c31cbiAgICAgICAgICB0b3RhbD17dG90YWx9XG4gICAgICAgICAgb25QYWdpbmF0ZUNsaWNrPXtvblBhZ2luYXRlQ2xpY2t9XG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgcmVmdW5kUmVxdWVzdGVkPXtyZWZ1bmRSZXF1ZXN0ZWR9XG4gICAgICAgICAgdGlja2V0c1RvUmVmdW5kPXt0aWNrZXRzVG9SZWZ1bmR9XG4gICAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e3NlbGVjdFRvUmVmdW5kfVxuICAgICAgICAgIHN1Ym1pdFJlcXVlc3Q9e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgICAgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzPXt1bnNlbGVjdFJlZnVuZFRpY2tldHN9XG4gICAgICAgIC8+XG4gICAgICA8L0dyaWQ+XG4gICAgICA8R3JpZCBwYWRkaW5nPXsxfSBpdGVtIG1kPXs1fSBvcmRlcj17eyBtZDogMSB9fT5cbiAgICAgICAgPE9yZGVyU3VtbWFyeVxuICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICB0aWNrZXRzPXt0aWNrZXRzfVxuICAgICAgICAgIG9uUmVmdW5kQ2xpY2s9e29uUmVmdW5kQ2xpY2t9XG4gICAgICAgICAgdGlja2V0c1RvUmVmdW5kPXt0aWNrZXRzVG9SZWZ1bmR9XG4gICAgICAgICAgcmVmdW5kUmVxdWVzdGVkPXtyZWZ1bmRSZXF1ZXN0ZWR9XG4gICAgICAgICAgc3VibWl0UmVxdWVzdD17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgLz5cbiAgICAgIDwvR3JpZD5cbiAgICAgIDxSZWZ1bmRSZXF1ZXN0c01vZGFsXG4gICAgICAgIHRpY2tldHM9e3RpY2tldHNUb1JlZnVuZH1cbiAgICAgICAgb3Blbj17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgb25SZW1vdmVTZWxlY3RlZFJlZnVuZFRpY2tldHM9e3Vuc2VsZWN0UmVmdW5kVGlja2V0c31cbiAgICAgICAgb25SZWZ1bmRTdWNjZXNzQ2xvc2U9eygpID0+IHJlc2V0QWxsUmVmdW5kU3RhdHVzZXMoKX1cbiAgICAgICAgb25DbG9zZVNsaWRlcj17KCkgPT4gc2V0U3VibWl0UmVxdWVzdChmYWxzZSl9XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBPcmRlcnNMaXN0RGVza3RvcE1vYmlsZTtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgR3JpZCwgQm94LCBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCB1c2VNZWRpYVF1ZXJ5IGZyb20gXCJAbXVpL21hdGVyaWFsL3VzZU1lZGlhUXVlcnlcIjtcbmltcG9ydCB7IGdldFRpY2tldHNCeU9yZGVyIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCB7IGdldE9yZGVyVGlja2V0cywgZ2V0Rm9ybWF0dGVkRGF0ZSB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0IHsgT05FX1BBR0VfTkVYVCB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCBPcmRlck51bWJlciBmcm9tIFwiLi9PcmRlck51bWJlclwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IE9yZGVyc0xpc3REZXNrdG9wTW9iaWxlIGZyb20gXCIuL09yZGVyc0xpc3REZXNrdG9wTW9iaWxlXCI7XG5cbmZ1bmN0aW9uIE9yZGVyc0xpc3QocHJvcHMpIHtcbiAgY29uc3QgeyBzdW1taXQsIG9yZGVyIH0gPSBwcm9wcztcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IHsgcGVyX3BhZ2UsIGxhc3RfcGFnZSwgbWVtYmVyT3JkZXJzIH0gPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LFxuICAgIHNoYWxsb3dFcXVhbFxuICApO1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG4gIGNvbnN0IGlzTW9iaWxlID0gdXNlTWVkaWFRdWVyeSh0aGVtZS5icmVha3BvaW50cy5kb3duKFwibGdcIikpO1xuICBjb25zdCBbaXNNb2JpbGVWaWV3YWJsZSwgc2V0TW9iaWxlVmlld2FibGVdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBkZXRhaWxzUmVxdWlyZWQgPSBvcmRlci5tZW1iZXJUaWNrZXRzPy5maW5kKFxuICAgICh0aWNrZXQpID0+IHRpY2tldC5vd25lcj8uc3RhdHVzID09PSBcIkluY29tcGxldGVcIlxuICApO1xuICBjb25zdCBmZXRjaFRpY2tldHNCeU9yZGVyID0gYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IGRpc3BhdGNoKFxuICAgICAgZ2V0VGlja2V0c0J5T3JkZXIoe1xuICAgICAgICBvcmRlcklkOiBvcmRlci5pZCxcbiAgICAgICAgY3VycmVudF9wYWdlOiBsYXN0X3BhZ2UsXG4gICAgICAgIHBlclBhZ2U6IHBlcl9wYWdlXG4gICAgICB9KVxuICAgICkuY2F0Y2goKGUpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKGUpO1xuICAgIH0pO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZmV0Y2hUaWNrZXRzQnlPcmRlcigpO1xuICB9LCBbXSk7XG5cbiAgY29uc3Qgb25QYWdpbmF0ZUNsaWNrID0gKCkgPT5cbiAgICBkaXNwYXRjaChcbiAgICAgIGdldFRpY2tldHNCeU9yZGVyKHtcbiAgICAgICAgb3JkZXJJZDogb3JkZXIuaWQsXG4gICAgICAgIHBhZ2U6IG9yZGVyLnRpY2tldHNfcGFnZV9jdXJyZW50ICsgT05FX1BBR0VfTkVYVCxcbiAgICAgICAgcGVyUGFnZTogcGVyX3BhZ2UsXG4gICAgICAgIG5leHQ6IHRydWVcbiAgICAgIH0pXG4gICAgKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8Qm94XG4gICAgICAgIHN4PXt7XG4gICAgICAgICAgcGFkZGluZzoge1xuICAgICAgICAgICAgeHM6IDIsXG4gICAgICAgICAgICBtZDogMSxcbiAgICAgICAgICAgIGxnOiAwXG4gICAgICAgICAgfVxuICAgICAgICB9fVxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclRpY2tldEluZm9Db250YWluZXJ9XG4gICAgICA+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJUaWNrZXRJbmZvfVxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwib3JkZXItdGlja2V0LWluZm8tY29udGFpbmVyXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwib3JkZXJzLnB1cmNoYXNlZFwiKX06IHtnZXRGb3JtYXR0ZWREYXRlKG9yZGVyLmNyZWF0ZWQpfSB8e1wiIFwifVxuICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5vcmRlcl9ub1wiKX06e1wiIFwifVxuICAgICAgICAgIDxPcmRlck51bWJlciBudW1iZXI9e29yZGVyLm51bWJlcn0gY29weSB0cnVuY2F0ZWQgLz5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICB7aXNNb2JpbGUgJiYgKFxuICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIHN4PXt7IHBhZGRpbmc6IDAgfX1cbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmJsYWNrQnV0dG9ufVxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0TW9iaWxlVmlld2FibGUoIWlzTW9iaWxlVmlld2FibGUpfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtpc01vYmlsZVZpZXdhYmxlXG4gICAgICAgICAgICAgID8gdChcInRpY2tldF9zdGF0dXMuaGlkZV90aWNrZXRzXCIpXG4gICAgICAgICAgICAgIDogdChcInRpY2tldF9zdGF0dXMudmlld190aWNrZXRzXCIpfVxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICApfVxuICAgICAgPC9Cb3g+XG4gICAgICA8R3JpZFxuICAgICAgICBrZXk9e29yZGVyLmlkfVxuICAgICAgICBjb250YWluZXJcbiAgICAgICAgcm93U3BhY2luZz17MX1cbiAgICAgICAgY29sdW1uU3BhY2luZz17eyB4czogMSwgc206IDIsIG1kOiAzIH19XG4gICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLm9yZGVyVGlja2V0Q29udGFpbmVyfSAke1xuICAgICAgICAgIGlzTW9iaWxlICYmICFpc01vYmlsZVZpZXdhYmxlID8gc3R5bGVzLmRpc3BsYXlfbm9uZSA6IFwiXCJcbiAgICAgICAgfWB9XG4gICAgICAgIHN4PXt7XG4gICAgICAgICAgZmxleERpcmVjdGlvbjoge1xuICAgICAgICAgICAgbWQ6IFwicm93XCIsXG4gICAgICAgICAgICBsZzogXCJyb3dcIlxuICAgICAgICAgIH0sXG4gICAgICAgICAgcGFkZGluZzoge1xuICAgICAgICAgICAgeHM6IDIsXG4gICAgICAgICAgICBtZDogMCxcbiAgICAgICAgICAgIGxnOiAwXG4gICAgICAgICAgfVxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICA8T3JkZXJzTGlzdERlc2t0b3BNb2JpbGVcbiAgICAgICAgICBpc01vYmlsZT17aXNNb2JpbGV9XG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgIHRpY2tldHM9e2dldE9yZGVyVGlja2V0cyhtZW1iZXJPcmRlcnMsIG9yZGVyLmlkKX1cbiAgICAgICAgICB0b3RhbD17b3JkZXIudGlja2V0c190b3RhbH1cbiAgICAgICAgICBkZXRhaWxzUmVxdWlyZWQ9e2RldGFpbHNSZXF1aXJlZH1cbiAgICAgICAgICBvblBhZ2luYXRlQ2xpY2s9e29uUGFnaW5hdGVDbGlja31cbiAgICAgICAgLz5cbiAgICAgIDwvR3JpZD5cbiAgICA8Lz5cbiAgKTtcbn1cblxuT3JkZXJzTGlzdC5wcm9wVHlwZXMgPSB7XG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgb3JkZXI6IFByb3BUeXBlcy5vYmplY3Rcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyc0xpc3Q7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBTdGFjayBmcm9tIFwiQG11aS9tYXRlcmlhbC9TdGFja1wiO1xuaW1wb3J0IERlbGV0ZU91dGxpbmVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0RlbGV0ZU91dGxpbmVcIjtcbmltcG9ydCBBdHRlbmRlZVN0YXR1cyBmcm9tIFwiLi4vT3JkZXJzTGlzdC9BdHRlbmRlZVN0YXR1c1wiO1xuaW1wb3J0IE9yZGVyTnVtYmVyIGZyb20gXCIuLi9PcmRlcnNMaXN0L09yZGVyTnVtYmVyXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmZ1bmN0aW9uIFJlZnVuZFJlcXVlc3RlZFRpY2tldCh7IHRpY2tldCwgb25SZW1vdmUgfSkge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIHJldHVybiAoXG4gICAgPEdyaWRcbiAgICAgIGNvbnRhaW5lclxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMucmVmdW5kVGlja2V0Qm94Q29udGFpbmVyfVxuICAgICAgZGF0YS10ZXN0aWQ9XCJyZWZ1bmQtcmVxdWVzdGVkLXRpY2tldC1jb250YWluZXJcIlxuICAgID5cbiAgICAgIDxHcmlkIHhzPXsxMn0gcGFkZGluZz17Mn0gaXRlbSBqdXN0aWZ5PVwic3BhY2UtYmV0d2VlblwiPlxuICAgICAgICA8U3RhY2tcbiAgICAgICAgICBzeD17e1xuICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwic3BhY2UtYmV0d2VlblwiXG4gICAgICAgICAgfX1cbiAgICAgICAgICBkaXJlY3Rpb249XCJyb3dcIlxuICAgICAgICA+XG4gICAgICAgICAgPGg0Pnt0aWNrZXQudGlja2V0X3R5cGU/Lm5hbWV9PC9oND5cbiAgICAgICAgICA8RGVsZXRlT3V0bGluZUljb25cbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwicmVmdW5kLXJlbW92ZS1idXR0b25cIlxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuZGVsZXRlSWNvbn1cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uUmVtb3ZlKHRpY2tldCl9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9TdGFjaz5cbiAgICAgIDwvR3JpZD5cbiAgICAgIDxHcmlkIHhzPXsxMn0gcGFkZGluZz17Mn0gaXRlbT5cbiAgICAgICAgPEF0dGVuZGVlU3RhdHVzIHRpY2tldD17dGlja2V0fSAvPlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXROb30+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnRpY2tldF9ub1wiKX06e1wiIFwifVxuICAgICAgICAgIDxPcmRlck51bWJlciBudW1iZXI9e3RpY2tldC5udW1iZXJ9IHRydW5jYXRlZCAvPlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L0dyaWQ+XG4gICAgPC9HcmlkPlxuICApO1xufVxuXG5SZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIG9uUmVtb3ZlOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVmdW5kUmVxdWVzdGVkVGlja2V0O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgQm94LCBCdXR0b24gLCBTdHlsZWRFbmdpbmVQcm92aWRlciB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgQ2hlY2tDaXJjbGVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NoZWNrQ2lyY2xlXCI7XG5pbXBvcnQgTXVsdGlTdGVwU2xpZGVyIGZyb20gXCIuLi9NdWx0aVN0ZXBTbGlkZXJcIjtcbmltcG9ydCBSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQgZnJvbSBcIi4vUmVmdW5kUmVxdWVzdGVkVGlja2V0XCI7XG5pbXBvcnQgRXJyb3JMYWJlbCBmcm9tIFwiLi4vTGFiZWxzL0Vycm9yTGFiZWxcIjtcbmltcG9ydCB7IHJlZnVuZEJ1bGtUaWNrZXRzLCB1cGRhdGVUaWNrZXRzUmVmdW5kUmVxdWVzdGVkIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCB7IFNURVBfT05FLCBTVEVQX1RXTyB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuZnVuY3Rpb24gUmVmdW5kUmVxdWVzdHNNb2RhbCh7XG4gIHRpY2tldHMsXG4gIG9wZW4sXG4gIG9uUmVtb3ZlU2VsZWN0ZWRSZWZ1bmRUaWNrZXRzLFxuICBvblJlZnVuZFN1Y2Nlc3NDbG9zZSxcbiAgb25DbG9zZVNsaWRlclxufSkge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgW3N0ZXAsIHNldFN0ZXBdID0gdXNlU3RhdGUoU1RFUF9PTkUpO1xuICBjb25zdCBbZXJyb3JNc2csIHNldEVycm9yTXNnXSA9IHVzZVN0YXRlKFwiXCIpO1xuICBjb25zdCBbcmVmdW5kU3VjY2Vzcywgc2V0UmVmdW5kU3VjY2Vzc10gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgY29uc3QgY2xvc2VTbGlkZXIgPSAoKSA9PiB7XG4gICAgc2V0RXJyb3JNc2coXCJcIik7XG4gICAgb25DbG9zZVNsaWRlcigpO1xuICAgIHNldFN0ZXAoU1RFUF9PTkUpO1xuICAgIGlmIChyZWZ1bmRTdWNjZXNzKSB7XG4gICAgICBvblJlZnVuZFN1Y2Nlc3NDbG9zZSgpOyAvLyBpZiB0aGUgcmVmdW5kIGlzIGEgc3VjY2VzcywgdHJpZ2dlciBhbmQgcmUtcmV0cmlldmUgdGlja2V0cyBieSBvcmRlclxuICAgICAgc2V0UmVmdW5kU3VjY2VzcyhmYWxzZSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IHJlZnVuZFRpY2tldHMgPSBhc3luYyAoKSA9PiB7XG4gICAgZGlzcGF0Y2gocmVmdW5kQnVsa1RpY2tldHMoeyB0aWNrZXRzIH0pKS50aGVuKChyZXMpID0+IHtcbiAgICAgIGRpc3BhdGNoKHVwZGF0ZVRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQocmVzKSk7IC8vIHJldHVybmluZyB3aGljaCB0aWNrZXRzIHdlcmUgc3VjY2Vzc2Z1bFxuICAgICAgaWYgKHJlcz8ubGVuZ3RoID09PSB0aWNrZXRzLmxlbmd0aCkge1xuICAgICAgICBzZXRTdGVwKFNURVBfVFdPKTsgLy8gc3VjY2VzcywgYWxsIHJlZnVuZHMgd2VyZSByZXF1ZXN0ZWRcbiAgICAgICAgc2V0UmVmdW5kU3VjY2Vzcyh0cnVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldEVycm9yTXNnKHQoXCJlcnJvcnMucmVmdW5kX3Vuc3VjY2Vzc2Z1bFwiKSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgc2V0RXJyb3JNc2coXCJcIik7XG4gIH07XG5cbiAgY29uc3QgcmVmdW5kU3RlcE9uZSA9ICgpID0+IChcbiAgICA8PlxuICAgICAgPGgyIGNsYXNzTmFtZT17c3R5bGVzLnJlZnVuZFRleHR9PlxuICAgICAgICB7dChcImNvbmZpcm1fcG9wdXAucXVlc3Rpb25fdGV4dF9jYW5jZWxcIil9XG4gICAgICA8L2gyPlxuICAgICAge2Vycm9yTXNnICYmIChcbiAgICAgICAgPEVycm9yTGFiZWxcbiAgICAgICAgICBjbGFzc05hbWVzPXtzdHlsZXMucmVmdW5kRXJyb3JNc2d9XG4gICAgICAgICAgY29sb3I9XCIjRkYwMDAwXCJcbiAgICAgICAgICBkYXRhVGVzdElkPVwiZmFpbGVkLXJlZnVuZC1tZXNzYWdlXCJcbiAgICAgICAgICBtZXNzYWdlPXtlcnJvck1zZ31cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgICA8Qm94PlxuICAgICAgICB7dGlja2V0cy5tYXAoKHRpY2tldCkgPT4gKFxuICAgICAgICAgIDxSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRcbiAgICAgICAgICAgIGtleT17dGlja2V0LmlkfVxuICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICBvblJlbW92ZT17b25SZW1vdmVTZWxlY3RlZFJlZnVuZFRpY2tldHN9XG4gICAgICAgICAgLz5cbiAgICAgICAgKSl9XG4gICAgICA8L0JveD5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYWN0aW9uQnV0dG9uc30+XG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kLWNhbmNlbC1idXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNhbmNlbEJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXtjbG9zZVNsaWRlcn1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwiZ2VuZXJhbC5jYW5jZWxcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZC1jb250aW51ZS1idXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNvbnRpbnVlQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9e3JlZnVuZFRpY2tldHN9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcImdlbmVyYWwuY29udGludWVcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgPC9Cb3g+XG4gICAgPC8+XG4gICk7XG5cbiAgY29uc3QgcmVmdW5kU3RlcFR3byA9ICgpID0+IChcbiAgICA8Qm94XG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy5yZWZ1bmRTdWNjZXNzZnVsfVxuICAgICAgZGF0YS10ZXN0aWQ9XCJyZWZ1bmQtcmVxdWVzdC1zdWNjZXNzZnVsXCJcbiAgICA+XG4gICAgICA8Q2hlY2tDaXJjbGVJY29uIHN4PXt7IGNvbG9yOiBcIiM0Y2FmNTBcIiB9fSAvPlxuICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMuc3VjY2Vzc01zZ30+XG4gICAgICAgIHt0KFwidGlja2V0cy5yZWZ1bmRfcmVxdWVzdF9zdWNjZXNzXzFcIil9XG4gICAgICA8L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy5zdWNjZXNzTXNnMn0+XG4gICAgICAgIHt0KFwidGlja2V0cy5yZWZ1bmRfcmVxdWVzdF9zdWNjZXNzXzJcIil9XG4gICAgICA8L3NwYW4+XG4gICAgICA8QnV0dG9uXG4gICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQtZmluaXNoLWJ1dHRvblwiXG4gICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jb250aW51ZUJ1dHRvbn1cbiAgICAgICAgb25DbGljaz17Y2xvc2VTbGlkZXJ9XG4gICAgICA+XG4gICAgICAgIHt0KFwiZ2VuZXJhbC5maW5pc2hcIil9XG4gICAgICA8L0J1dHRvbj5cbiAgICA8L0JveD5cbiAgKTtcblxuICBjb25zdCByZW5kZXJTdGVwcyA9ICgpID0+IHtcbiAgICBzd2l0Y2ggKHN0ZXApIHtcbiAgICAgIGNhc2UgU1RFUF9PTkU6XG4gICAgICAgIHJldHVybiByZWZ1bmRTdGVwT25lKCk7XG4gICAgICBjYXNlIFNURVBfVFdPOlxuICAgICAgICByZXR1cm4gcmVmdW5kU3RlcFR3bygpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHJlZnVuZFN0ZXBPbmUoKTtcbiAgICB9XG4gIH07XG4gIHJldHVybiAoXG4gICAgPFN0eWxlZEVuZ2luZVByb3ZpZGVyIGluamVjdEZpcnN0PlxuICAgICAgPE11bHRpU3RlcFNsaWRlciBvcGVuPXtvcGVufSBvbkNsb3NlU2xpZGVyPXtjbG9zZVNsaWRlcn0+XG4gICAgICAgIDxCb3hcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5yZWZ1bmRIZWFkZXJzfVxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwicmVmdW5kLXJlcXVlc3QtbW9kYWxcIlxuICAgICAgICA+XG4gICAgICAgICAgPGgzPnt0KFwib3JkZXJfc3VtbWFyeS5yZXF1ZXN0X3JlZnVuZFwiKX08L2gzPlxuICAgICAgICA8L0JveD5cbiAgICAgICAge3JlbmRlclN0ZXBzKCl9XG4gICAgICA8L011bHRpU3RlcFNsaWRlcj5cbiAgICA8L1N0eWxlZEVuZ2luZVByb3ZpZGVyPlxuICApO1xufVxuXG5SZWZ1bmRSZXF1ZXN0c01vZGFsLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0czogUHJvcFR5cGVzLmFycmF5XG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWZ1bmRSZXF1ZXN0c01vZGFsO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgVGV4dEZpZWxkLCBBdXRvY29tcGxldGUsIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgcXVlcnlSZWdpc3RyYXRpb25Db21wYW5pZXMgfSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9xdWVyeS1hY3Rpb25zXCI7XG5pbXBvcnQgeyBUSUNLRVRfQVRURU5ERUVfS0VZUyB9IGZyb20gXCIuLi8uLi9jb25zdGFudHNcIjtcblxuY29uc3QgQ29tcGFueUZpZWxkID0gKHsgZm9ybWlrLCBzdW1taXRJZCwgaXNSZXF1aXJlZCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW2lucHV0VmFsdWUsIHNldElucHV0VmFsdWVdID0gUmVhY3QudXNlU3RhdGUoXCJcIik7XG4gIGNvbnN0IFtvcHRpb25zLCBzZXRPcHRpb25zXSA9IFJlYWN0LnVzZVN0YXRlKFtdKTtcbiAgY29uc3QgeyBlcnJvcnMsIHZhbHVlcywgdG91Y2hlZCwgc2V0RmllbGRUb3VjaGVkLCBzZXRGaWVsZFZhbHVlIH0gPSBmb3JtaWs7XG4gIGNvbnN0IG5hbWUgPSBUSUNLRVRfQVRURU5ERUVfS0VZUy5jb21wYW55O1xuICBjb25zdCB2YWx1ZSA9IHZhbHVlc1tuYW1lXTtcbiAgY29uc3QgZXJyb3IgPSB0b3VjaGVkW25hbWVdICYmIEJvb2xlYW4oZXJyb3JzW25hbWVdKTtcbiAgY29uc3QgaGVscGVyVGV4dCA9IHRvdWNoZWRbbmFtZV0gJiYgZXJyb3JzW25hbWVdO1xuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlucHV0VmFsdWUgPT09IFwiXCIpIHtcbiAgICAgIHNldE9wdGlvbnModmFsdWUgPyBbdmFsdWVdIDogW10pO1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBxdWVyeVJlZ2lzdHJhdGlvbkNvbXBhbmllcyhzdW1taXRJZCwgaW5wdXRWYWx1ZSwgKHJlc3VsdHMpID0+IHtcbiAgICAgIGxldCBuZXdPcHRpb25zID0gW107XG5cbiAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICBuZXdPcHRpb25zID0gW3ZhbHVlXTtcbiAgICAgIH1cblxuICAgICAgaWYgKHJlc3VsdHMpIHtcbiAgICAgICAgbmV3T3B0aW9ucyA9IFsuLi5uZXdPcHRpb25zLCAuLi5yZXN1bHRzXTtcbiAgICAgIH1cblxuICAgICAgc2V0T3B0aW9ucyhuZXdPcHRpb25zKTtcbiAgICB9KTtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9LCBbdmFsdWUsIGlucHV0VmFsdWVdKTtcblxuICByZXR1cm4gKFxuICAgIDxBdXRvY29tcGxldGVcbiAgICAgIG5hbWU9e25hbWV9XG4gICAgICBvcHRpb25zPXtvcHRpb25zfVxuICAgICAgYXV0b0NvbXBsZXRlXG4gICAgICBmcmVlU29sb1xuICAgICAgaW5jbHVkZUlucHV0SW5MaXN0XG4gICAgICBmaWx0ZXJTZWxlY3RlZE9wdGlvbnNcbiAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgIG9uQmx1cj17KCkgPT4gc2V0RmllbGRUb3VjaGVkKG5hbWUsIHRydWUsIHRydWUpfVxuICAgICAgZ2V0T3B0aW9uTGFiZWw9eyhvcHRpb24pID0+IHtcbiAgICAgICAgLy8gVmFsdWUgc2VsZWN0ZWQgd2l0aCBlbnRlciwgcmlnaHQgZnJvbSB0aGUgaW5wdXRcbiAgICAgICAgaWYgKHR5cGVvZiBvcHRpb24gPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICByZXR1cm4gb3B0aW9uO1xuICAgICAgICB9XG4gICAgICAgIC8vIEFkZCBcInh4eFwiIG9wdGlvbiBjcmVhdGVkIGR5bmFtaWNhbGx5XG4gICAgICAgIGlmIChvcHRpb24uaW5wdXRWYWx1ZSkge1xuICAgICAgICAgIHJldHVybiBvcHRpb24uaW5wdXRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBSZWd1bGFyIG9wdGlvblxuICAgICAgICByZXR1cm4gb3B0aW9uLm5hbWU7XG4gICAgICB9fVxuICAgICAgb25DaGFuZ2U9eyhldmVudCwgbmV3VmFsdWUpID0+IHtcbiAgICAgICAgY29uc3QgdG1wVmFsdWUgPSBuZXdWYWx1ZT8uaW5wdXRWYWx1ZSB8fCBuZXdWYWx1ZTtcbiAgICAgICAgc2V0T3B0aW9ucyh0bXBWYWx1ZSA/IFt0bXBWYWx1ZSwgLi4ub3B0aW9uc10gOiBvcHRpb25zKTtcbiAgICAgICAgc2V0RmllbGRWYWx1ZShuYW1lLCB0bXBWYWx1ZSk7XG4gICAgICB9fVxuICAgICAgb25JbnB1dENoYW5nZT17KGV2ZW50LCBuZXdJbnB1dFZhbHVlKSA9PiB7XG4gICAgICAgIHNldElucHV0VmFsdWUobmV3SW5wdXRWYWx1ZSk7XG4gICAgICB9fVxuICAgICAgZmlsdGVyT3B0aW9ucz17KG9wdGlvbnMsIHBhcmFtcykgPT4ge1xuICAgICAgICBjb25zdCB7IGlucHV0VmFsdWUgfSA9IHBhcmFtcztcbiAgICAgICAgY29uc3QgZmlsdGVyZWQgPSBbLi4ub3B0aW9uc107XG4gICAgICAgIC8vIFN1Z2dlc3QgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZhbHVlXG4gICAgICAgIGNvbnN0IGlzRXhpc3RpbmcgPSBvcHRpb25zLnNvbWUoXG4gICAgICAgICAgKG9wdGlvbikgPT4gaW5wdXRWYWx1ZSA9PT0gb3B0aW9uLnRpdGxlXG4gICAgICAgICk7XG4gICAgICAgIGlmIChpbnB1dFZhbHVlICE9PSBcIlwiICYmICFpc0V4aXN0aW5nKSB7XG4gICAgICAgICAgZmlsdGVyZWQucHVzaCh7XG4gICAgICAgICAgICBpbnB1dFZhbHVlLFxuICAgICAgICAgICAgbmFtZTogYFNlbGVjdCBcIiR7aW5wdXRWYWx1ZX1cImBcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmaWx0ZXJlZDtcbiAgICAgIH19XG4gICAgICByZW5kZXJJbnB1dD17KHBhcmFtcykgPT4gKFxuICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgICB7Li4ucGFyYW1zfVxuICAgICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2RldGFpbC5hdHRlbmRlZV9jb21wYW55XCIpfVxuICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICAgIGhlbHBlclRleHQ9e2hlbHBlclRleHR9XG4gICAgICAgICAgZXJyb3I9e2Vycm9yfVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIHJlbmRlck9wdGlvbj17KHByb3BzLCBvcHRpb24pID0+IHtcbiAgICAgICAgY29uc3QgeyBrZXksIC4uLm9wdGlvblByb3BzIH0gPSBwcm9wcztcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZ1xuICAgICAgICAgIDxsaSBrZXk9e2tleX0gey4uLm9wdGlvblByb3BzfT5cbiAgICAgICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MlwiIHN4PXt7IGNvbG9yOiBcInRleHQuc2Vjb25kYXJ5XCIgfX0+XG4gICAgICAgICAgICAgIHtvcHRpb24ubmFtZX1cbiAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICA8L2xpPlxuICAgICAgICApO1xuICAgICAgfX1cbiAgICAvPlxuICApO1xufTtcblxuQ29tcGFueUZpZWxkLnByb3BUeXBlcyA9IHtcbiAgZm9ybWlrOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHN1bW1pdElkOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IENvbXBhbnlGaWVsZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIENoZWNrYm94LFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgRm9ybUdyb3VwLFxuICBGb3JtSGVscGVyVGV4dCxcbiAgRm9ybUxhYmVsXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBnZXRMYWJlbCwgdG9TbHVnIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZCA9ICh7XG4gIHF1ZXN0aW9uLFxuICBxdWVzdGlvbkNsYXNzTmFtZSA9IFwiXCIsXG4gIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgY2hpbGRyZW4sXG4gIHZhbHVlLFxuICBvbkNoYW5nZSxcbiAgc2V0RmllbGRWYWx1ZSxcbiAgZXJyb3IsXG4gIGhlbHBlclRleHQsXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHF1ZXN0aW9uLm5hbWUsIHF1ZXN0aW9uLmlkKTtcbiAgY29uc3QgcXVlc3Rpb25MYWJlbCA9IGdldExhYmVsKHF1ZXN0aW9uKTtcbiAgY29uc3QgaXNSZXF1aXJlZCA9IHF1ZXN0aW9uLm1hbmRhdG9yeTtcbiAgY29uc3QgcXVlc3Rpb25NYXhWYWx1ZXMgPSBxdWVzdGlvbi5tYXhfc2VsZWN0ZWRfdmFsdWVzO1xuXG4gIGNvbnN0IHF1ZXN0aW9uT3B0aW9ucyA9XG4gICAgcXVlc3Rpb24udmFsdWVzPy5tYXAoKHZhbCkgPT4gKHtcbiAgICAgIGxhYmVsOiB2YWwubGFiZWwsXG4gICAgICB2YWx1ZTogdmFsLmlkLnRvU3RyaW5nKClcbiAgICB9KSkgfHwgW107XG5cbiAgY29uc3QgaGFuZGxlQ2hlY2tib3hMaXN0Q2hhbmdlID0gKGNoZWNrZWQsIHZhbCkgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRBbnMgPSB2YWx1ZSB8fCBbXTtcbiAgICBjb25zdCBtYXhTZWxlY3Rpb25SZWFjaGVkID0gY3VycmVudEFucy5sZW5ndGggPT09IHF1ZXN0aW9uTWF4VmFsdWVzO1xuICAgIGxldCBuZXdWYWx1ZTtcblxuICAgIGlmIChjaGVja2VkKSB7XG4gICAgICBuZXdWYWx1ZSA9IG1heFNlbGVjdGlvblJlYWNoZWQgPyBjdXJyZW50QW5zIDogWy4uLmN1cnJlbnRBbnMsIHZhbF07XG4gICAgfSBlbHNlIHtcbiAgICAgIG5ld1ZhbHVlID0gY3VycmVudEFucy5maWx0ZXIoKHYpID0+IHYgIT09IHZhbCk7XG4gICAgfVxuXG4gICAgc2V0RmllbGRWYWx1ZShxdWVzdGlvblNsdWcsIG5ld1ZhbHVlKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Db250cm9sXG4gICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgID5cbiAgICAgICAgPEZvcm1MYWJlbD57cXVlc3Rpb25MYWJlbH08L0Zvcm1MYWJlbD5cbiAgICAgICAge2Vycm9yICYmIDxGb3JtSGVscGVyVGV4dD57aGVscGVyVGV4dCA/PyBcIiBcIn08L0Zvcm1IZWxwZXJUZXh0Pn1cbiAgICAgICAgPEZvcm1Hcm91cD5cbiAgICAgICAgICB7cXVlc3Rpb25PcHRpb25zLm1hcCgob3ApID0+IChcbiAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgIGtleT17b3AubGFiZWx9XG4gICAgICAgICAgICAgIG5hbWU9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgICAgICBjaGVja2VkPXt2YWx1ZT8uaW5jbHVkZXMob3AudmFsdWUpfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhldikgPT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2hlY2tib3hMaXN0Q2hhbmdlKGV2LnRhcmdldC5jaGVja2VkLCBvcC52YWx1ZSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGxhYmVsPXtvcC5sYWJlbH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvRm9ybUdyb3VwPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHZhbHVlOiBQcm9wVHlwZXMuYXJyYXksXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIGVycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgaGVscGVyVGV4dDogUHJvcFR5cGVzLnN0cmluZ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIENoZWNrYm94LFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgRm9ybUhlbHBlclRleHRcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBSYXdIVE1MIGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL2NvbXBvbmVudHMvcmF3LWh0bWxcIjtcbmltcG9ydCB7IGdldExhYmVsLCB0b1NsdWcgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBDaGVja2JveFF1ZXN0aW9uRmllbGQgPSAoe1xuICBxdWVzdGlvbixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcIlwiLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIGNoaWxkcmVuLFxuICB2YWx1ZSxcbiAgZXJyb3IsXG4gIGhlbHBlclRleHQsXG4gIHNldEZpZWxkVmFsdWUsXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHF1ZXN0aW9uLm5hbWUsIHF1ZXN0aW9uLmlkKTtcbiAgY29uc3QgcXVlc3Rpb25MYWJlbCA9IGdldExhYmVsKHF1ZXN0aW9uKTtcbiAgY29uc3QgaXNSZXF1aXJlZCA9IHF1ZXN0aW9uLm1hbmRhdG9yeTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Db250cm9sIGZ1bGxXaWR0aCBlcnJvcj17ZXJyb3J9PlxuICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgIG5hbWU9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICAgICAgY2hlY2tlZD17ISF2YWx1ZX1cbiAgICAgICAgICAgICAgbGFiZWw9ezxSYXdIVE1MPntxdWVzdGlvbkxhYmVsfTwvUmF3SFRNTD59XG4gICAgICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICB9XG4gICAgICAgICAgbGFiZWw9ezxSYXdIVE1MPntxdWVzdGlvbkxhYmVsfTwvUmF3SFRNTD59XG4gICAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgIC8+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAge2Vycm9yICYmIDxGb3JtSGVscGVyVGV4dD57aGVscGVyVGV4dCA/PyBcIiBcIn08L0Zvcm1IZWxwZXJUZXh0Pn1cbiAgICAgIDwvRm9ybUNvbnRyb2w+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5DaGVja2JveFF1ZXN0aW9uRmllbGQucHJvcFR5cGVzID0ge1xuICBxdWVzdGlvbjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICB2YWx1ZTogUHJvcFR5cGVzLmJvb2wsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBzZXRGaWVsZFZhbHVlOiBQcm9wVHlwZXMuZnVuYyxcbiAgZXJyb3I6IFByb3BUeXBlcy5ib29sLFxuICBoZWxwZXJUZXh0OiBQcm9wVHlwZXMuc3RyaW5nXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDaGVja2JveFF1ZXN0aW9uRmllbGQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgSW5wdXRMYWJlbCwgTWVudUl0ZW0sIFNlbGVjdCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBnZXRMYWJlbCwgdG9TbHVnIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgRHJvcGRvd25RdWVzdGlvbkZpZWxkID0gKHtcbiAgcXVlc3Rpb24sXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJcIixcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBzZXRGaWVsZFZhbHVlLFxuICBjaGlsZHJlbixcbiAgZXJyb3IsXG4gIGhlbHBlclRleHQsXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHF1ZXN0aW9uLm5hbWUsIHF1ZXN0aW9uLmlkKTtcbiAgY29uc3QgcXVlc3Rpb25MYWJlbCA9IGdldExhYmVsKHF1ZXN0aW9uKTtcbiAgY29uc3QgaXNSZXF1aXJlZCA9IHF1ZXN0aW9uLm1hbmRhdG9yeTtcblxuICBjb25zdCBxdWVzdGlvbk9wdGlvbnMgPVxuICAgIHF1ZXN0aW9uLnZhbHVlcz8ubWFwKCh2YWwpID0+ICh7XG4gICAgICBsYWJlbDogdmFsLmxhYmVsLFxuICAgICAgdmFsdWU6IHZhbC5pZFxuICAgIH0pKSB8fCBbXTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Db250cm9sXG4gICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgID5cbiAgICAgICAgPElucHV0TGFiZWwgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fbGFiZWxgfT57cXVlc3Rpb25MYWJlbH08L0lucHV0TGFiZWw+XG4gICAgICAgIDxTZWxlY3RcbiAgICAgICAgICBsYWJlbElkPXtgJHtxdWVzdGlvblNsdWd9X2xhYmVsYH1cbiAgICAgICAgICBuYW1lPXtxdWVzdGlvblNsdWd9XG4gICAgICAgICAgaWQ9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICBsYWJlbD17cXVlc3Rpb25MYWJlbH1cbiAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAgIHN0eWxlPXt7IG1hcmdpbkJvdHRvbTogMjAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHtxdWVzdGlvbk9wdGlvbnMubWFwKChvcCkgPT4gKFxuICAgICAgICAgICAgPE1lbnVJdGVtIGtleT17b3AubGFiZWx9IHZhbHVlPXtvcC52YWx1ZX0+XG4gICAgICAgICAgICAgIHtvcC5sYWJlbH1cbiAgICAgICAgICAgIDwvTWVudUl0ZW0+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvU2VsZWN0PlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuRHJvcGRvd25RdWVzdGlvbkZpZWxkLnByb3BUeXBlcyA9IHtcbiAgcXVlc3Rpb246IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIGVycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgaGVscGVyVGV4dDogUHJvcFR5cGVzLnN0cmluZyxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IERyb3Bkb3duUXVlc3Rpb25GaWVsZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEZvcm1Db250cm9sLFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBGb3JtSGVscGVyVGV4dCxcbiAgRm9ybUxhYmVsLFxuICBSYWRpbyxcbiAgUmFkaW9Hcm91cFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgZ2V0TGFiZWwsIHRvU2x1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IFJhZGlvTGlzdFF1ZXN0aW9uRmllbGQgPSAoe1xuICBxdWVzdGlvbixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcIlwiLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIGNoaWxkcmVuLFxuICBlcnJvcixcbiAgaGVscGVyVGV4dCxcbiAgc2V0RmllbGRWYWx1ZSxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuXG4gIGNvbnN0IHF1ZXN0aW9uT3B0aW9ucyA9XG4gICAgcXVlc3Rpb24udmFsdWVzPy5tYXAoKHZhbCkgPT4gKHtcbiAgICAgIGxhYmVsOiB2YWwubGFiZWwsXG4gICAgICB2YWx1ZTogdmFsLmlkLnRvU3RyaW5nKClcbiAgICB9KSkgfHwgW107XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBrZXk9e3F1ZXN0aW9uU2x1Z31cbiAgICAgIGlkPXtgJHtxdWVzdGlvblNsdWd9X2NvbnRhaW5lcmB9XG4gICAgICBjbGFzc05hbWU9e3F1ZXN0aW9uQ2xhc3NOYW1lfVxuICAgID5cbiAgICAgIDxGb3JtQ29udHJvbFxuICAgICAgICBkaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBlcnJvcj17ZXJyb3J9XG4gICAgICA+XG4gICAgICAgIDxGb3JtTGFiZWwgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fbGFiZWxgfT57cXVlc3Rpb25MYWJlbH08L0Zvcm1MYWJlbD5cbiAgICAgICAge2Vycm9yICYmIDxGb3JtSGVscGVyVGV4dD57aGVscGVyVGV4dCA/PyBcIiBcIn08L0Zvcm1IZWxwZXJUZXh0Pn1cbiAgICAgICAgPFJhZGlvR3JvdXBcbiAgICAgICAgICBhcmlhLWxhYmVsbGVkYnk9e2Ake3F1ZXN0aW9uU2x1Z31fbGFiZWxgfVxuICAgICAgICAgIG5hbWU9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICA+XG4gICAgICAgICAge3F1ZXN0aW9uT3B0aW9ucy5tYXAoKG9wKSA9PiAoXG4gICAgICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICBrZXk9e29wLmxhYmVsfVxuICAgICAgICAgICAgICB2YWx1ZT17b3AudmFsdWV9XG4gICAgICAgICAgICAgIGNvbnRyb2w9ezxSYWRpbyAvPn1cbiAgICAgICAgICAgICAgbGFiZWw9e29wLmxhYmVsfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9SYWRpb0dyb3VwPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuUmFkaW9MaXN0UXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBlcnJvcjogUHJvcFR5cGVzLmJvb2wsXG4gIGhlbHBlclRleHQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHNldEZpZWxkVmFsdWU6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSYWRpb0xpc3RRdWVzdGlvbkZpZWxkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgRm9ybUdyb3VwLCBUZXh0RmllbGQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgZ2V0TGFiZWwsIHRvU2x1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IFRleHRRdWVzdGlvbkZpZWxkID0gKHtcbiAgcXVlc3Rpb24sXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJcIixcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBjaGlsZHJlbixcbiAgc2V0RmllbGRWYWx1ZSxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICBpZD17YCR7cXVlc3Rpb25TbHVnfV9jb250YWluZXJgfVxuICAgICAgY2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICA+XG4gICAgICA8Rm9ybUdyb3VwPlxuICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgbmFtZT17cXVlc3Rpb25TbHVnfVxuICAgICAgICAgIGxhYmVsPXtxdWVzdGlvbkxhYmVsfVxuICAgICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgey4uLnJlc3R9XG4gICAgICAgIC8+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvRm9ybUdyb3VwPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuVGV4dFF1ZXN0aW9uRmllbGQucHJvcFR5cGVzID0ge1xuICBxdWVzdGlvbjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBxdWVzdGlvbkNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgaXNEaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRleHRRdWVzdGlvbkZpZWxkO1xuIiwiaW1wb3J0IHtcbiAgUXVlc3Rpb25UeXBlX0NoZWNrYm94LFxuICBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0LFxuICBRdWVzdGlvblR5cGVfQ29tYm9Cb3gsXG4gIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3gsXG4gIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3Rcbn0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgY29uc3QgY2hlY2tSdWxlID0gKHZhbHVlLCBydWxlKSA9PiB7XG4gIGNvbnN0IHZhbHVlcyA9IHJ1bGUuYW5zd2VyX3ZhbHVlcztcblxuICBpZiAoIXZhbHVlKSByZXR1cm4gZmFsc2U7XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgaWYgKCF2YWx1ZS5sZW5ndGgpIHJldHVybiBmYWxzZTtcbiAgICBsZXQgcmVzID0gcnVsZS5hbnN3ZXJfdmFsdWVzX29wZXJhdG9yID09PSBcIkFuZFwiO1xuICAgIHZhbHVlcy5mb3JFYWNoKCh2KSA9PiB7XG4gICAgICBpZiAocnVsZS5hbnN3ZXJfdmFsdWVzX29wZXJhdG9yID09PSBcIkFuZFwiKSB7XG4gICAgICAgIHJlcyA9IHJlcyAmJiB2YWx1ZS5pbmNsdWRlcyh2KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIE9yXG4gICAgICAgIHJlcyA9IHJlcyB8fCB2YWx1ZS5pbmNsdWRlcyh2KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVzO1xuICB9XG4gIHJldHVybiB2YWx1ZXMuaW5jbHVkZXModmFsdWU/LnRvU3RyaW5nKCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGNoZWNrVmlzaWJpbGl0eSA9IChydWxlLCBydWxlUmVzdWx0LCBjaGlsZHJlbikgPT4ge1xuICBpZiAocnVsZS52aXNpYmlsaXR5ID09PSBcIlZpc2libGVcIikge1xuICAgIGlmIChydWxlLnZpc2liaWxpdHlfY29uZGl0aW9uID09PSBcIkVxdWFsXCIpIHtcbiAgICAgIGlmIChydWxlUmVzdWx0KSByZXR1cm4gY2hpbGRyZW47XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgLy8gTm9uIEVxdWFsXG4gICAgaWYgKCFydWxlUmVzdWx0KSB7XG4gICAgICByZXR1cm4gY2hpbGRyZW47XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG4gIC8vIG5vdCB2aXNpYmxlXG4gIGlmIChydWxlLnZpc2liaWxpdHlfY29uZGl0aW9uID09PSBcIkVxdWFsXCIpIHtcbiAgICBpZiAoIXJ1bGVSZXN1bHQpIHJldHVybiBjaGlsZHJlbjtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBpZiAocnVsZVJlc3VsdCkgcmV0dXJuIGNoaWxkcmVuO1xuICByZXR1cm4gbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCB0b1NsdWcgPSAodGV4dCwgcXVlc3Rpb25JZCkgPT4ge1xuICBjb25zdCB0ZXh0TEMgPSB0ZXh0LnRvTG93ZXJDYXNlKCk7XG4gIHJldHVybiBgJHt0ZXh0TEMucmVwbGFjZSgvW15hLXpBLVowLTldKy9nLCBcIl9cIil9XyR7cXVlc3Rpb25JZH1gO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldExhYmVsID0gKHEpID0+XG4gIC8vIHJlcGxhY2UgbGluZSBicmVha3MgYW5kIHJlbW92ZSBvdXRlciA8cD5cbiAgcT8ubGFiZWw/LnJlcGxhY2UoL1xcbi9nLCBcIiBcIikucmVwbGFjZSgvPHA+KC4qKTxcXC9wPi9naSwgXCIkMVwiKTtcblxuZXhwb3J0IGNvbnN0IGlzQW5zd2VyZWQgPSAoYW5zd2VyKSA9PiB7XG4gIGlmICghYW5zd2VyKSByZXR1cm4gZmFsc2U7XG4gIC8vIGNoZWNrIHR5cGVcbiAgaWYgKEFycmF5LmlzQXJyYXkoYW5zd2VyKSkgcmV0dXJuIGFuc3dlci5sZW5ndGggPiAwO1xuICBpZiAodHlwZW9mIGFuc3dlciA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIGFuc3dlci5sZW5ndGggPiAwO1xuICBpZiAodHlwZW9mIGFuc3dlciA9PT0gXCJudW1iZXJcIikgcmV0dXJuIGFuc3dlciA+IDA7XG4gIGlmICh0eXBlb2YgYW5zd2VyID09PSBcImJvb2xlYW5cIikgcmV0dXJuIGFuc3dlcjtcbiAgcmV0dXJuIGZhbHNlO1xufTtcblxuZXhwb3J0IGNvbnN0IGNoZWNrSWZWYWx1ZU1hdGNoID0gKGFuc3dlciwgY29tcGFyZVZhbCkgPT4ge1xuICBjb25zdCBhbnN3ZXJBcnJheSA9IEFycmF5LmlzQXJyYXkoYW5zd2VyKSA/IGFuc3dlciA6IFthbnN3ZXJdO1xuXG4gIHJldHVybiBhbnN3ZXJBcnJheS5zb21lKCh2KSA9PiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY29tcGFyZVZhbCkpIHtcbiAgICAgIHJldHVybiBjb21wYXJlVmFsLmluY2x1ZGVzKHYpO1xuICAgIH1cbiAgICByZXR1cm4gdiA9PT0gY29tcGFyZVZhbDtcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VHlwZUluaXRpYWxWYWx1ZSA9IChxKSA9PiB7XG4gIHN3aXRjaCAocS50eXBlKSB7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tib3g6XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0OlxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0OlxuICAgICAgcmV0dXJuIFtdO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveDpcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db21ib0JveDpcbiAgICAgIHJldHVybiBcIlwiO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gXCJcIjtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGdldFR5cGVWYWx1ZSA9IChhbnMsIHR5cGUpID0+IHtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tib3g6XG4gICAgICByZXR1cm4gYW5zID09PSBcInRydWVcIjtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3Q6XG4gICAgICByZXR1cm4gYW5zPy5zcGxpdChcIixcIikgfHwgW107XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94OlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvbWJvQm94OlxuICAgICAgcmV0dXJuIGFucyB8fCBcIlwiO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdDpcbiAgICAgIHJldHVybiBhbnMgfHwgbnVsbDtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGFucztcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHRyYW5zZm9ybUFud2Vyc0Zvcm1hdCA9IChhbnN3ZXJzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBhdHRlbmRlZV9lbWFpbCxcbiAgICBhdHRlbmRlZV9maXJzdF9uYW1lLFxuICAgIGF0dGVuZGVlX2xhc3RfbmFtZSxcbiAgICBhdHRlbmRlZV9jb21wYW55LFxuICAgIGRpc2NsYWltZXJfYWNjZXB0ZWQsXG4gICAgLi4uZXh0cmFfcXVlc3Rpb25zXG4gIH0gPSBhbnN3ZXJzO1xuXG4gIGNvbnN0IGZvcm1hdHRlZEVRID0gT2JqZWN0LmVudHJpZXMoZXh0cmFfcXVlc3Rpb25zKS5tYXAoKFtrZXksIHZhbHVlXSkgPT4gKHtcbiAgICBxdWVzdGlvbl9pZDogcGFyc2VJbnQoa2V5LnNwbGl0KFwiX1wiKS5wb3AoKSwgMTApLFxuICAgIGFuc3dlcjogdmFsdWUudG9TdHJpbmcoKVxuICB9KSk7XG5cbiAgcmV0dXJuIHtcbiAgICBhdHRlbmRlZV9lbWFpbCxcbiAgICBhdHRlbmRlZV9maXJzdF9uYW1lLFxuICAgIGF0dGVuZGVlX2xhc3RfbmFtZSxcbiAgICBhdHRlbmRlZV9jb21wYW55LFxuICAgIGRpc2NsYWltZXJfYWNjZXB0ZWQsXG4gICAgZXh0cmFfcXVlc3Rpb25zOiBmb3JtYXR0ZWRFUVxuICB9O1xufTtcbiIsImV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfVGV4dCA9IFwiVGV4dFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9UZXh0QXJlYSA9IFwiVGV4dEFyZWFcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfQ2hlY2tib3ggPSBcIkNoZWNrQm94XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdCA9IFwiUmFkaW9CdXR0b25MaXN0XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX0NvbWJvQm94ID0gXCJDb21ib0JveFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QgPSBcIkNoZWNrQm94TGlzdFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3ggPSBcIkNvdW50cnlDb21ib0JveFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbiA9IFwiUmFkaW9CdXR0b25cIjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcblxuaW1wb3J0IHtcbiAgdG9TbHVnLFxuICBpc0Fuc3dlcmVkLFxuICBjaGVja1Zpc2liaWxpdHksXG4gIGNoZWNrUnVsZVxufSBmcm9tIFwiLi9jb21wb25lbnRzL3V0aWxzXCI7XG5pbXBvcnQge1xuICBRdWVzdGlvblR5cGVfQ2hlY2tib3gsXG4gIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QsXG4gIFF1ZXN0aW9uVHlwZV9Db21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdCxcbiAgUXVlc3Rpb25UeXBlX1RleHQsXG4gIFF1ZXN0aW9uVHlwZV9UZXh0QXJlYVxufSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCBUZXh0UXVlc3Rpb25GaWVsZCBmcm9tIFwiLi9jb21wb25lbnRzL1RleHRRdWVzdGlvbkZpZWxkXCI7XG5pbXBvcnQgQ2hlY2tib3hRdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvQ2hlY2tib3hRdWVzdGlvbkZpZWxkXCI7XG5pbXBvcnQgUmFkaW9MaXN0UXVlc3Rpb25GaWVsZCBmcm9tIFwiLi9jb21wb25lbnRzL1JhZGlvTGlzdFF1ZXN0aW9uRmllbGRcIjtcbmltcG9ydCBDaGVja2JveExpc3RRdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZFwiO1xuaW1wb3J0IERyb3Bkb3duUXVlc3Rpb25GaWVsZCBmcm9tIFwiLi9jb21wb25lbnRzL0Ryb3Bkb3duUXVlc3Rpb25GaWVsZFwiO1xuXG5jb25zdCBnZXRRdWVzdGlvbkZpZWxkQ29tcG9uZW50ID0gKHF1ZXN0aW9uVHlwZSkgPT4ge1xuICBzd2l0Y2ggKHF1ZXN0aW9uVHlwZSkge1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1RleHRBcmVhOlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1RleHQ6IHtcbiAgICAgIHJldHVybiBUZXh0UXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tib3g6IHtcbiAgICAgIHJldHVybiBDaGVja2JveFF1ZXN0aW9uRmllbGQ7XG4gICAgfVxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdDoge1xuICAgICAgcmV0dXJuIFJhZGlvTGlzdFF1ZXN0aW9uRmllbGQ7XG4gICAgfVxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdDoge1xuICAgICAgcmV0dXJuIENoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQ7XG4gICAgfVxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveDpcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db21ib0JveDoge1xuICAgICAgcmV0dXJuIERyb3Bkb3duUXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgZGVmYXVsdDoge1xuICAgICAgcmV0dXJuIFJlYWN0LkZyYWdtZW50O1xuICAgIH1cbiAgfVxufTtcblxuY29uc3QgRXh0cmFRdWVzdGlvbnNGaWVsZHMgPSAoe1xuICBleHRyYVF1ZXN0aW9ucyxcbiAgY2xhc3NOYW1lID0gXCJleHRyYVF1ZXN0aW9uc1wiLFxuICBxdWVzdGlvbkNsYXNzTmFtZSA9IFwiZXh0cmFRdWVzdGlvblwiLFxuICByZWFkT25seSA9IGZhbHNlLFxuICBhbGxvd0VkaXQgPSB0cnVlLFxuICBmb3JtaWtcbn0pID0+IHtcbiAgY29uc3QgcmVuZGVyUnVsZSA9IChydWxlLCBxdWVzdGlvblNsdWcpID0+XG4gICAgY2hlY2tWaXNpYmlsaXR5KFxuICAgICAgcnVsZSxcbiAgICAgIGNoZWNrUnVsZShmb3JtaWsudmFsdWVzW3F1ZXN0aW9uU2x1Z10sIHJ1bGUpLFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZS1iZWZvcmUtZGVmaW5lXG4gICAgICByZW5kZXJRdWVzdGlvbihydWxlLnN1Yl9xdWVzdGlvbilcbiAgICApO1xuXG4gIGNvbnN0IHJlbmRlclF1ZXN0aW9uID0gKHEpID0+IHtcbiAgICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocS5uYW1lLCBxLmlkKTtcbiAgICAvLyBkaXNhYmxlIGZpZWxkIGlmIGVkaXQgaXNuJ3QgYWxsb3dlZCBhbmQgdGhlIHF1ZXN0aW9ucyBpcyBhbnN3ZXJlZFxuICAgIGNvbnN0IGlzRGlzYWJsZWQgPVxuICAgICAgKCFhbGxvd0VkaXQgJiYgaXNBbnN3ZXJlZChmb3JtaWsudmFsdWVzW3F1ZXN0aW9uU2x1Z10pKSB8fCByZWFkT25seTtcbiAgICBjb25zdCBRdWVzdGlvbkZpZWxkQ29tcG9uZW50ID0gZ2V0UXVlc3Rpb25GaWVsZENvbXBvbmVudChxLnR5cGUpO1xuXG4gICAgY29uc3QgZm9ybWlrUHJvcHMgPSB7XG4gICAgICB2YWx1ZTogZm9ybWlrLnZhbHVlc1txdWVzdGlvblNsdWddLFxuICAgICAgb25DaGFuZ2U6IGZvcm1pay5oYW5kbGVDaGFuZ2UsXG4gICAgICBvbkJsdXI6IGZvcm1pay5oYW5kbGVCbHVyLFxuICAgICAgZXJyb3I6XG4gICAgICAgIGZvcm1pay50b3VjaGVkW3F1ZXN0aW9uU2x1Z10gJiYgQm9vbGVhbihmb3JtaWsuZXJyb3JzW3F1ZXN0aW9uU2x1Z10pLFxuICAgICAgaGVscGVyVGV4dDogZm9ybWlrLnRvdWNoZWRbcXVlc3Rpb25TbHVnXSAmJiBmb3JtaWsuZXJyb3JzW3F1ZXN0aW9uU2x1Z10sXG4gICAgICBzZXRGaWVsZFZhbHVlOiBmb3JtaWsuc2V0RmllbGRWYWx1ZVxuICAgIH07XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFF1ZXN0aW9uRmllbGRDb21wb25lbnRcbiAgICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICAgIHF1ZXN0aW9uPXtxfVxuICAgICAgICBxdWVzdGlvbkNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgICAgIGlzRGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgIHsuLi5mb3JtaWtQcm9wc31cbiAgICAgID5cbiAgICAgICAge3Euc3ViX3F1ZXN0aW9uX3J1bGVzPy5tYXAoKHJ1bGUpID0+IHJlbmRlclJ1bGUocnVsZSwgcXVlc3Rpb25TbHVnKSl9XG4gICAgICA8L1F1ZXN0aW9uRmllbGRDb21wb25lbnQ+XG4gICAgKTtcbiAgfTtcblxuICByZXR1cm4gPGRpdiBjbGFzc05hbWU9e2NsYXNzTmFtZX0+e2V4dHJhUXVlc3Rpb25zLm1hcChyZW5kZXJRdWVzdGlvbil9PC9kaXY+O1xufTtcblxuRXh0cmFRdWVzdGlvbnNGaWVsZHMucHJvcFR5cGVzID0ge1xuICBleHRyYVF1ZXN0aW9uczogUHJvcFR5cGVzLmFycmF5LmlzUmVxdWlyZWQsXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGFsbG93RWRpdDogUHJvcFR5cGVzLmJvb2wsXG4gIHJlYWRPbmx5OiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgRXh0cmFRdWVzdGlvbnNGaWVsZHM7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBCb3gsXG4gIENoZWNrYm94LFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgRm9ybUhlbHBlclRleHRcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBSYXdIVE1MIGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL2NvbXBvbmVudHMvcmF3LWh0bWxcIjtcbmltcG9ydCB7IFRJQ0tFVF9BVFRFTkRFRV9LRVlTIH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50c1wiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFJlZ2lzdHJhdGlvbkRpc2NsYWltZXIgPSAoe1xuICBkaXNjbGFpbWVyLFxuICBmb3JtaWssXG4gIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgaXNSZXF1aXJlZCA9IHRydWVcbn0pID0+IHtcbiAgY29uc3QgbmFtZSA9IFRJQ0tFVF9BVFRFTkRFRV9LRVlTLmRpc2NsYWltZXJBY2NlcHRlZDtcbiAgY29uc3QgeyBlcnJvcnMsIHZhbHVlcywgdG91Y2hlZCwgaGFuZGxlQ2hhbmdlLCBoYW5kbGVCbHVyIH0gPSBmb3JtaWs7XG4gIGNvbnN0IHZhbHVlID0gdmFsdWVzW25hbWVdO1xuICBjb25zdCBlcnJvciA9IHRvdWNoZWRbbmFtZV0gJiYgQm9vbGVhbihlcnJvcnNbbmFtZV0pO1xuICBjb25zdCBoZWxwZXJUZXh0ID0gdG91Y2hlZFtuYW1lXSAmJiBlcnJvcnNbbmFtZV07XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLndyYXBwZXJ9PlxuICAgICAgPEZvcm1Db250cm9sIGZ1bGxXaWR0aCBlcnJvcj17ZXJyb3J9PlxuICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgIG5hbWU9e25hbWV9XG4gICAgICAgICAgICAgIGNoZWNrZWQ9eyEhdmFsdWV9XG4gICAgICAgICAgICAgIGxhYmVsPXs8UmF3SFRNTD57ZGlzY2xhaW1lcn08L1Jhd0hUTUw+fVxuICAgICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgICAgICBvbkJsdXI9e2hhbmRsZUJsdXJ9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICBsYWJlbD17PFJhd0hUTUw+e2Rpc2NsYWltZXJ9PC9SYXdIVE1MPn1cbiAgICAgICAgICBkaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgLz5cbiAgICAgICAge2Vycm9yICYmIDxGb3JtSGVscGVyVGV4dD57aGVscGVyVGV4dCA/PyBcIiBcIn08L0Zvcm1IZWxwZXJUZXh0Pn1cbiAgICAgIDwvRm9ybUNvbnRyb2w+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5SZWdpc3RyYXRpb25EaXNjbGFpbWVyLnByb3BUeXBlcyA9IHtcbiAgZGlzY2xhaW1lcjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICBmb3JtaWs6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgaXNEaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIGlzUmVxdWlyZWQ6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWdpc3RyYXRpb25EaXNjbGFpbWVyO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgVGV4dEZpZWxkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcblxuY29uc3QgVGlja2V0RGVsZWdhdGlvbkZpZWxkcyA9ICh7IGZvcm1payB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8VGV4dEZpZWxkXG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBpZD1cImRlbGVnYXRlZF9maXJzdF9uYW1lXCJcbiAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfZGV0YWlsLmZpcnN0X25hbWVcIil9XG4gICAgICAgIHZhbHVlPXtmb3JtaWsudmFsdWVzLmRlbGVnYXRlZF9maXJzdF9uYW1lfVxuICAgICAgICBvbkNoYW5nZT17Zm9ybWlrLmhhbmRsZUNoYW5nZX1cbiAgICAgICAgb25CbHVyPXtmb3JtaWsuaGFuZGxlQmx1cn1cbiAgICAgICAgZXJyb3I9e1xuICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlZF9maXJzdF9uYW1lICYmXG4gICAgICAgICAgQm9vbGVhbihmb3JtaWsuZXJyb3JzLmRlbGVnYXRlZF9maXJzdF9uYW1lKVxuICAgICAgICB9XG4gICAgICAgIGhlbHBlclRleHQ9e1xuICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlZF9maXJzdF9uYW1lICYmXG4gICAgICAgICAgZm9ybWlrLmVycm9ycy5kZWxlZ2F0ZWRfZmlyc3RfbmFtZVxuICAgICAgICB9XG4gICAgICAvPlxuICAgICAgPFRleHRGaWVsZFxuICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgaWQ9XCJkZWxlZ2F0ZWRfbGFzdF9uYW1lXCJcbiAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfZGV0YWlsLmxhc3RfbmFtZVwiKX1cbiAgICAgICAgdmFsdWU9e2Zvcm1pay52YWx1ZXMuZGVsZWdhdGVkX2xhc3RfbmFtZX1cbiAgICAgICAgb25DaGFuZ2U9e2Zvcm1pay5oYW5kbGVDaGFuZ2V9XG4gICAgICAgIG9uQmx1cj17Zm9ybWlrLmhhbmRsZUJsdXJ9XG4gICAgICAgIGVycm9yPXtcbiAgICAgICAgICBmb3JtaWsudG91Y2hlZC5kZWxlZ2F0ZWRfbGFzdF9uYW1lICYmXG4gICAgICAgICAgQm9vbGVhbihmb3JtaWsuZXJyb3JzLmRlbGVnYXRlZF9sYXN0X25hbWUpXG4gICAgICAgIH1cbiAgICAgICAgaGVscGVyVGV4dD17XG4gICAgICAgICAgZm9ybWlrLnRvdWNoZWQuZGVsZWdhdGVkX2xhc3RfbmFtZSAmJlxuICAgICAgICAgIGZvcm1pay5lcnJvcnMuZGVsZWdhdGVkX2xhc3RfbmFtZVxuICAgICAgICB9XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufTtcblxuVGlja2V0RGVsZWdhdGlvbkZpZWxkcy5wcm9wVHlwZXMgPSB7XG4gIGZvcm1pazogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXREZWxlZ2F0aW9uRmllbGRzO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94LCBCdXR0b24sIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlRm9ybWlrIH0gZnJvbSBcImZvcm1pa1wiO1xuaW1wb3J0ICogYXMgeXVwIGZyb20gXCJ5dXBcIjtcbmltcG9ydCBFeHRyYVF1ZXN0aW9uc0ZpZWxkcyBmcm9tIFwiLi4vRXh0cmFRdWVzdGlvbnNGaWVsZHNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuLi8uLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7XG4gIGNoZWNrSWZWYWx1ZU1hdGNoLFxuICBnZXRUeXBlSW5pdGlhbFZhbHVlLFxuICBnZXRUeXBlVmFsdWUsXG4gIHRvU2x1Z1xufSBmcm9tIFwiLi4vRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy91dGlsc1wiO1xuaW1wb3J0IHtcbiAgUXVlc3Rpb25UeXBlX0NoZWNrYm94LFxuICBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0LFxuICBRdWVzdGlvblR5cGVfQ29tYm9Cb3gsXG4gIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3gsXG4gIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3Rcbn0gZnJvbSBcIi4uL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbnN0YW50c1wiO1xuaW1wb3J0IFRpY2tldERlbGVnYXRpb25GaWVsZHMgZnJvbSBcIi4uL1RpY2tldERlbGVnYXRpb25GaWVsZHNcIjtcbmltcG9ydCBUaWNrZXRPd25lckZpZWxkcyBmcm9tIFwiLi4vVGlja2V0T3duZXJGaWVsZHNcIjtcbmltcG9ydCBSZWdpc3RyYXRpb25EaXNjbGFpbWVyIGZyb20gXCIuLi9SZWdpc3RyYXRpb25EaXNjbGFpbWVyL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXJcIjtcbmltcG9ydCB7IFRJQ0tFVF9BVFRFTkRFRV9LRVlTIH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50c1wiO1xuXG5jb25zdCBnZXRUeXBlVmFsaWRhdGlvbiA9ICh0eXBlLCBuYW1lLCBpc1JlcXVpcmVkKSA9PiB7XG4gIGxldCBzY2hlbWE7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrYm94OlxuICAgICAgc2NoZW1hID0geXVwLmJvb2woKS5vbmVPZihbdHJ1ZV0sIFwiRmllbGQgbXVzdCBiZSBjaGVja2VkXCIpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0OlxuICAgICAgc2NoZW1hID0geXVwLnN0cmluZyhgRW50ZXIgJHtuYW1lfWApO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0OlxuICAgICAgc2NoZW1hID0geXVwLmFycmF5KCkub2YoeXVwLnN0cmluZygpKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveDpcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db21ib0JveDpcbiAgICAgIHNjaGVtYSA9IHl1cC5zdHJpbmcoYEVudGVyICR7bmFtZX1gKTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBzY2hlbWEgPSB5dXAuc3RyaW5nKGBFbnRlciAke25hbWV9YCk7XG4gICAgICBicmVhaztcbiAgfVxuXG4gIGlmIChpc1JlcXVpcmVkKSB7XG4gICAgc2NoZW1hID0gc2NoZW1hLnJlcXVpcmVkKGAke25hbWV9IGlzIHJlcXVpcmVkYCk7XG4gIH1cblxuICByZXR1cm4gc2NoZW1hO1xufTtcblxuY29uc3QgYnVpbGRWYWxpZGF0aW9uU2NoZW1hID0gKFxuICBleHRyYVF1ZXN0aW9ucyxcbiAgYWxsb3dzRGVsZWdhdGlvbixcbiAgZGlzY2xhaW1lck1hbmRhdG9yeVxuKSA9PiB7XG4gIGNvbnN0IHNjaGVtYSA9IHtcbiAgICBbVElDS0VUX0FUVEVOREVFX0tFWVMuZW1haWxdOiB5dXBcbiAgICAgIC5zdHJpbmcoXCJFbnRlciBlbWFpbFwiKVxuICAgICAgLmVtYWlsKFwiRW1haWwgaW52YWxpZFwiKVxuICAgICAgLnJlcXVpcmVkKFwiRW1haWwgaXMgcmVxdWlyZWRcIiksXG4gICAgW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmZpcnN0TmFtZV06IHl1cFxuICAgICAgLnN0cmluZyhcIkVudGVyIGZpcnN0IG5hbWVcIilcbiAgICAgIC5yZXF1aXJlZChcIkZpcnN0IG5hbWUgaXMgcmVxdWlyZWRcIiksXG4gICAgW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmxhc3ROYW1lXTogeXVwXG4gICAgICAuc3RyaW5nKFwiRW50ZXIgbGFzdCBuYW1lXCIpXG4gICAgICAucmVxdWlyZWQoXCJMYXN0IG5hbWUgaXMgcmVxdWlyZWRcIiksXG4gICAgW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmNvbXBhbnldOiB5dXAubGF6eSgodmFsdWUpID0+XG4gICAgICB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCJcbiAgICAgICAgPyB5dXBcbiAgICAgICAgICAgIC5vYmplY3QoKVxuICAgICAgICAgICAgLnJlcXVpcmVkKFwiQ29tcGFueSBpcyByZXF1aXJlZFwiKVxuICAgICAgICAgICAgLnR5cGVFcnJvcihcIlJlcXVpcmVkIGZpZWxkXCIpXG4gICAgICAgIDogeXVwLnN0cmluZygpLnJlcXVpcmVkKFwiQ29tcGFueSBpcyByZXF1aXJlZFwiKVxuICAgIClcbiAgfTtcblxuICBpZiAoZGlzY2xhaW1lck1hbmRhdG9yeSkge1xuICAgIHNjaGVtYVtUSUNLRVRfQVRURU5ERUVfS0VZUy5kaXNjbGFpbWVyQWNjZXB0ZWRdID0geXVwXG4gICAgICAuYm9vbCgpXG4gICAgICAub25lT2YoW3RydWVdLCBcIkZpZWxkIG11c3QgYmUgY2hlY2tlZFwiKTtcbiAgfVxuXG4gIGlmIChhbGxvd3NEZWxlZ2F0aW9uKSB7XG4gICAgc2NoZW1hLmRlbGVnYXRlZF9maXJzdF9uYW1lID0geXVwXG4gICAgICAuc3RyaW5nKFwiRW50ZXIgZmlyc3QgbmFtZVwiKVxuICAgICAgLnJlcXVpcmVkKFwiRmlyc3QgbmFtZSBpcyByZXF1aXJlZFwiKTtcblxuICAgIHNjaGVtYS5kZWxlZ2F0ZWRfbGFzdF9uYW1lID0geXVwXG4gICAgICAuc3RyaW5nKFwiRW50ZXIgbGFzdCBuYW1lXCIpXG4gICAgICAucmVxdWlyZWQoXCJMYXN0IG5hbWUgaXMgcmVxdWlyZWRcIik7XG4gIH1cblxuICBleHRyYVF1ZXN0aW9ucy5mb3JFYWNoKChxKSA9PiB7XG4gICAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHEubmFtZSwgcS5pZCk7XG4gICAgc2NoZW1hW3F1ZXN0aW9uU2x1Z10gPSBnZXRUeXBlVmFsaWRhdGlvbihxLnR5cGUsIHEubmFtZSwgcS5tYW5kYXRvcnkpO1xuXG4gICAgaWYgKHEuc3ViX3F1ZXN0aW9uX3J1bGVzPy5sZW5ndGggPiAwKSB7XG4gICAgICBxLnN1Yl9xdWVzdGlvbl9ydWxlcy5mb3JFYWNoKChydWxlKSA9PiB7XG4gICAgICAgIGNvbnN0IHN1YlF1ZXN0aW9uID0gcnVsZS5zdWJfcXVlc3Rpb247XG4gICAgICAgIGNvbnN0IHN1YlF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhzdWJRdWVzdGlvbi5uYW1lLCBzdWJRdWVzdGlvbi5pZCk7XG4gICAgICAgIHNjaGVtYVtzdWJRdWVzdGlvblNsdWddID0gZ2V0VHlwZVZhbGlkYXRpb24oXG4gICAgICAgICAgc3ViUXVlc3Rpb24udHlwZSxcbiAgICAgICAgICBzdWJRdWVzdGlvbi5uYW1lLFxuICAgICAgICAgIGZhbHNlXG4gICAgICAgIClcbiAgICAgICAgICAubnVsbGFibGUoKVxuICAgICAgICAgIC53aGVuKHF1ZXN0aW9uU2x1Zywge1xuICAgICAgICAgICAgaXM6IChxdWVzdGlvbkFucykgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBtYXRjaCA9IGNoZWNrSWZWYWx1ZU1hdGNoKHF1ZXN0aW9uQW5zLCBydWxlLmFuc3dlcl92YWx1ZXMpO1xuICAgICAgICAgICAgICByZXR1cm4gbWF0Y2g7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGhlbjogKHNjaCkgPT4gc2NoLnJlcXVpcmVkKFwiVGhpcyBxdWVzdGlvbiBpcyByZXF1aXJlZFwiKVxuICAgICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4geXVwLm9iamVjdChzY2hlbWEpO1xufTtcblxuLy8gb24gZm9ybWlrIHdlIG5lZWQgdG8gaW5pdGlhbGl6ZSBhbGwgc3VicXVlc3Rpb25zIHdpdGggYSB2YWx1ZVxuLy8gb24gc3VibWl0LCB3ZSBvbmx5IG5lZWQgcmVsZXZhbnQgYW5zd2Vyc1xuY29uc3QgcGFyc2VBbnN3ZXJzID0gKFxuICBvd25lcixcbiAgZXh0cmFRdWVzdGlvbnMsXG4gIGFuc3dlcnMsXG4gIGFsbG93c0RlbGVnYXRpb24sXG4gIG1hbmFnZXIsXG4gIG9ubHlSZWxldmFudCA9IGZhbHNlXG4pID0+IHtcbiAgY29uc3QgaW5pdGlhbFZhbHVlcyA9IHtcbiAgICBbVElDS0VUX0FUVEVOREVFX0tFWVMuZW1haWxdOlxuICAgICAgYW5zd2Vyc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbF0gfHwgb3duZXIuZW1haWwsXG4gICAgW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmZpcnN0TmFtZV06XG4gICAgICBhbnN3ZXJzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmZpcnN0TmFtZV0gfHwgb3duZXIuZmlyc3RfbmFtZSxcbiAgICBbVElDS0VUX0FUVEVOREVFX0tFWVMubGFzdE5hbWVdOlxuICAgICAgYW5zd2Vyc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5sYXN0TmFtZV0gfHwgb3duZXIubGFzdF9uYW1lLFxuICAgIFtUSUNLRVRfQVRURU5ERUVfS0VZUy5jb21wYW55XTpcbiAgICAgIGFuc3dlcnNbVElDS0VUX0FUVEVOREVFX0tFWVMuY29tcGFueV0gfHwgb3duZXIuY29tcGFueSxcbiAgICBbVElDS0VUX0FUVEVOREVFX0tFWVMuZGlzY2xhaW1lckFjY2VwdGVkXTpcbiAgICAgIGFuc3dlcnNbVElDS0VUX0FUVEVOREVFX0tFWVMuZGlzY2xhaW1lckFjY2VwdGVkXSB8fFxuICAgICAgb3duZXIuZGlzY2xhaW1lcl9hY2NlcHRlZFxuICB9O1xuXG4gIGlmIChhbGxvd3NEZWxlZ2F0aW9uKSB7XG4gICAgaW5pdGlhbFZhbHVlcy5kZWxlZ2F0ZWRfZmlyc3RfbmFtZSA9XG4gICAgICBhbnN3ZXJzLmRlbGVnYXRlZF9maXJzdF9uYW1lIHx8IG1hbmFnZXI/LmZpcnN0X25hbWUgfHwgXCJcIjtcbiAgICBpbml0aWFsVmFsdWVzLmRlbGVnYXRlZF9sYXN0X25hbWUgPVxuICAgICAgYW5zd2Vycy5kZWxlZ2F0ZWRfbGFzdF9uYW1lIHx8IG1hbmFnZXI/Lmxhc3RfbmFtZSB8fCBcIlwiO1xuICB9XG5cbiAgZXh0cmFRdWVzdGlvbnMuZm9yRWFjaCgocSkgPT4ge1xuICAgIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxLm5hbWUsIHEuaWQpO1xuICAgIGNvbnN0IGFuc3dlciA9IGFuc3dlcnNbcXVlc3Rpb25TbHVnXTtcbiAgICBpbml0aWFsVmFsdWVzW3F1ZXN0aW9uU2x1Z10gPSBhbnN3ZXIgfHwgZ2V0VHlwZUluaXRpYWxWYWx1ZShxKTtcblxuICAgIGlmIChxLnN1Yl9xdWVzdGlvbl9ydWxlcz8ubGVuZ3RoID4gMCkge1xuICAgICAgcS5zdWJfcXVlc3Rpb25fcnVsZXMuZm9yRWFjaCgocnVsZSkgPT4ge1xuICAgICAgICBjb25zdCBzdWJRdWVzdGlvblNsdWcgPSB0b1NsdWcoXG4gICAgICAgICAgcnVsZS5zdWJfcXVlc3Rpb24ubmFtZSxcbiAgICAgICAgICBydWxlLnN1Yl9xdWVzdGlvbi5pZFxuICAgICAgICApO1xuICAgICAgICBjb25zdCBzdWJBbnN3ZXIgPSBhbnN3ZXJzW3N1YlF1ZXN0aW9uU2x1Z107XG4gICAgICAgIGNvbnN0IG1hdGNoID0gY2hlY2tJZlZhbHVlTWF0Y2goYW5zd2VyLCBydWxlLmFuc3dlcl92YWx1ZXMpO1xuXG4gICAgICAgIGlmICghb25seVJlbGV2YW50IHx8IG1hdGNoKSB7XG4gICAgICAgICAgaW5pdGlhbFZhbHVlc1tzdWJRdWVzdGlvblNsdWddID1cbiAgICAgICAgICAgIHN1YkFuc3dlciB8fCBnZXRUeXBlSW5pdGlhbFZhbHVlKHJ1bGUuc3ViX3F1ZXN0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gaW5pdGlhbFZhbHVlcztcbn07XG5cbmNvbnN0IHVzZVNjcm9sbFRvRXJyb3IgPSAoZm9ybWlrKSA9PiB7XG4gIGNvbnN0IHsgZXJyb3JzLCBpc1ZhbGlkLCBzdWJtaXRDb3VudCB9ID0gZm9ybWlrO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgZXJyb3JBcnJheSA9IE9iamVjdC5rZXlzKGVycm9ycyk7XG4gICAgaWYgKGlzVmFsaWQgfHwgZXJyb3JBcnJheS5sZW5ndGggPT09IDApIHJldHVybjtcbiAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgaW5wdXRbbmFtZT0nJHtlcnJvckFycmF5WzBdfSddYCk7XG4gICAgaWYgKCFlbGVtZW50KSByZXR1cm47XG4gICAgLy8gU2Nyb2xsIHRvIGZpcnN0IGtub3duIGVycm9yIGludG8gdmlld1xuICAgIGVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogXCJzbW9vdGhcIiwgYmxvY2s6IFwiY2VudGVyXCIgfSk7XG4gIH0sIFtzdWJtaXRDb3VudF0pO1xufTtcblxuY29uc3QgVGlja2V0Rm9ybSA9ICh7XG4gIHRpY2tldCxcbiAgZXh0cmFRdWVzdGlvbnMsXG4gIHN1bW1pdCxcbiAgY2FuRWRpdCxcbiAgb25TdWJtaXQsXG4gIG9uQ2xvc2Vcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCB0aWNrZXRNYW5hZ2VyID0gdGlja2V0Py5tYW5hZ2VyO1xuICAvKiBESVNBQkxFIERFTEVHQVRJT04gRlRNICovXG4gIGNvbnN0IGFsbG93c0RlbGVnYXRpb24gPSB0aWNrZXQ/LnRpY2tldF90eXBlPy5hbGxvd3NfdG9fZGVsZWdhdGUgJiYgZmFsc2U7XG4gIGNvbnN0IGFuc3dlcnMgPSB0aWNrZXQ/Lm93bmVyPy5leHRyYV9xdWVzdGlvbnMucmVkdWNlKChyZXMsIGFucykgPT4ge1xuICAgIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhhbnMucXVlc3Rpb24ubmFtZSwgYW5zLnF1ZXN0aW9uLmlkKTtcbiAgICByZXNbcXVlc3Rpb25TbHVnXSA9IGdldFR5cGVWYWx1ZShhbnMudmFsdWUsIGFucy5xdWVzdGlvbi50eXBlKTtcbiAgICByZXR1cm4gcmVzO1xuICB9LCB7fSk7XG5cbiAgY29uc3QgZm9ybWlrID0gdXNlRm9ybWlrKHtcbiAgICBpbml0aWFsVmFsdWVzOiBwYXJzZUFuc3dlcnMoXG4gICAgICB0aWNrZXQub3duZXIsXG4gICAgICBleHRyYVF1ZXN0aW9ucyxcbiAgICAgIGFuc3dlcnMsXG4gICAgICB0aWNrZXRNYW5hZ2VyLFxuICAgICAgYWxsb3dzRGVsZWdhdGlvblxuICAgICksXG4gICAgdmFsaWRhdGlvblNjaGVtYTogYnVpbGRWYWxpZGF0aW9uU2NoZW1hKFxuICAgICAgZXh0cmFRdWVzdGlvbnMsXG4gICAgICBhbGxvd3NEZWxlZ2F0aW9uLFxuICAgICAgc3VtbWl0LnJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX21hbmRhdG9yeVxuICAgICksXG4gICAgb25TdWJtaXQ6ICh2YWx1ZXMpID0+IHtcbiAgICAgIGNvbnN0IHJlbGV2YW50QW5zd2VycyA9IHBhcnNlQW5zd2VycyhcbiAgICAgICAgdGlja2V0Lm93bmVyLFxuICAgICAgICBleHRyYVF1ZXN0aW9ucyxcbiAgICAgICAgdmFsdWVzLFxuICAgICAgICB0aWNrZXRNYW5hZ2VyLFxuICAgICAgICBhbGxvd3NEZWxlZ2F0aW9uLFxuICAgICAgICB0cnVlXG4gICAgICApO1xuXG4gICAgICByZXR1cm4gb25TdWJtaXQocmVsZXZhbnRBbnN3ZXJzKTtcbiAgICB9LFxuICAgIGVuYWJsZVJlaW5pdGlhbGl6ZTogdHJ1ZVxuICB9KTtcblxuICAvLyBjb25zb2xlLmxvZyhcIlNVTU1JVDogXCIsIHN1bW1pdCk7XG4gIC8vIGNvbnNvbGUubG9nKFwiVElDS0VUOiBcIiwgdGlja2V0KTtcbiAgLy8gY29uc29sZS5sb2coXCJRVUVTVElVT05zOiBcIiwgZXh0cmFRdWVzdGlvbnMpO1xuICAvLyBjb25zb2xlLmxvZyhcIkFOU1dFUlM6IFwiLCBhbnN3ZXJzKTtcbiAgLy8gY29uc29sZS5sb2coXCJFUlJPUnM6IFwiLCBmb3JtaWsuZXJyb3JzKTtcbiAgLy8gY29uc29sZS5sb2coXCJWQUxVRVM6IFwiLCBmb3JtaWsudmFsdWVzKTtcbiAgLy8gY29uc29sZS5sb2coXCJJTklUSUFMOiBcIiwgZm9ybWlrLmluaXRpYWxWYWx1ZXMpO1xuICAvLyBjb25zb2xlLmxvZyhcIlRPVUNIRUQ6IFwiLCBmb3JtaWsudG91Y2hlZCk7XG5cbiAgLy8gU0NST0xMIFRPIEVSUk9SXG4gIHVzZVNjcm9sbFRvRXJyb3IoZm9ybWlrKTtcblxuICByZXR1cm4gKFxuICAgIDxmb3JtIG9uU3VibWl0PXtmb3JtaWsuaGFuZGxlU3VibWl0fSBub1ZhbGlkYXRlPlxuICAgICAgPFRpY2tldE93bmVyRmllbGRzXG4gICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICBvd25lcj17dGlja2V0Lm93bmVyfVxuICAgICAgICBzdW1taXRJZD17c3VtbWl0LmlkfVxuICAgICAgICBkaXNhYmxlZD17IWNhbkVkaXR9XG4gICAgICAvPlxuXG4gICAgICB7YWxsb3dzRGVsZWdhdGlvbiAmJiAoXG4gICAgICAgIDxCb3g+XG4gICAgICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgICAgIHZhcmlhbnQ9XCJzdWJ0aXRsZTJcIlxuICAgICAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5kZWxlZ2F0ZWRUb31cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwuZGVsZWdhdGVkX3RvXCIpfVxuICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICA8VGlja2V0RGVsZWdhdGlvbkZpZWxkcyBmb3JtaWs9e2Zvcm1pa30gLz5cbiAgICAgICAgPC9Cb3g+XG4gICAgICApfVxuXG4gICAgICB7ZXh0cmFRdWVzdGlvbnM/Lmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICA8Qm94PlxuICAgICAgICAgIDxoNiBjbGFzc05hbWU9e3N0eWxlcy5hZGRpdGlvbmFsRGV0YWlsc30+XG4gICAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwuYWRpdGlvbmFsX2RldGFpbHNcIil9XG4gICAgICAgICAgPC9oNj5cbiAgICAgICAgICA8RXh0cmFRdWVzdGlvbnNGaWVsZHNcbiAgICAgICAgICAgIGV4dHJhUXVlc3Rpb25zPXtleHRyYVF1ZXN0aW9uc31cbiAgICAgICAgICAgIGFsbG93RWRpdD17Y2FuRWRpdH1cbiAgICAgICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvQm94PlxuICAgICAgKX1cblxuICAgICAge3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9jb250ZW50ICYmIChcbiAgICAgICAgPFJlZ2lzdHJhdGlvbkRpc2NsYWltZXJcbiAgICAgICAgICBmb3JtaWs9e2Zvcm1pa31cbiAgICAgICAgICBkaXNjbGFpbWVyPXtzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfY29udGVudH1cbiAgICAgICAgICBpc1JlcXVpcmVkPXtzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfbWFuZGF0b3J5fVxuICAgICAgICAgIGlzRGlzYWJsZWQ9eyFjYW5FZGl0fVxuICAgICAgICAvPlxuICAgICAgKX1cblxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5mb290ZXJ9PlxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuc2F2ZUJ0bn1cbiAgICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgZGlzYWJsZWQ9e2Zvcm1pay5pc1N1Ym1pdHRpbmd9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwuc2F2ZVwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jYW5jZWxCdG59XG4gICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgIG9uQ2xpY2s9e29uQ2xvc2V9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwuY2FuY2VsXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgIDwvQm94PlxuICAgIDwvZm9ybT5cbiAgKTtcbn07XG5cblRpY2tldEZvcm0ucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIGV4dHJhUXVlc3Rpb25zOiBQcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGNhbkVkaXQ6IFByb3BUeXBlcy5ib29sLFxuICBvblN1Ym1pdDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0Rm9ybTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEJveCwgVGV4dEZpZWxkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgVElDS0VUX0FUVEVOREVFX0tFWVMgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgQ29tcGFueUZpZWxkIGZyb20gXCIuLi9Db21wYW55RmllbGRcIjtcblxuY29uc3QgVGlja2V0T3duZXJGaWVsZHMgPSAoeyBmb3JtaWssIHN1bW1pdElkLCBkaXNhYmxlZCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgeyBlcnJvcnMsIHZhbHVlcywgdG91Y2hlZCwgaGFuZGxlQ2hhbmdlLCBoYW5kbGVCbHVyIH0gPSBmb3JtaWs7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLndyYXBwZXJ9PlxuICAgICAgPFRleHRGaWVsZFxuICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgbmFtZT17VElDS0VUX0FUVEVOREVFX0tFWVMuZW1haWx9XG4gICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2RldGFpbC5lbWFpbFwiKX1cbiAgICAgICAgZGlzYWJsZWRcbiAgICAgICAgdmFsdWU9e3ZhbHVlc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbF19XG4gICAgICAvPlxuICAgICAge1tUSUNLRVRfQVRURU5ERUVfS0VZUy5maXJzdE5hbWUsIFRJQ0tFVF9BVFRFTkRFRV9LRVlTLmxhc3ROYW1lXS5tYXAoXG4gICAgICAgIChuYW1lKSA9PiAoXG4gICAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgICBrZXk9e25hbWV9XG4gICAgICAgICAgICBuYW1lPXtuYW1lfVxuICAgICAgICAgICAgbGFiZWw9e3QoYHRpY2tldF9kZXRhaWwuJHtuYW1lfWApfVxuICAgICAgICAgICAgdmFsdWU9e3ZhbHVlc1tuYW1lXX1cbiAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICBvbkJsdXI9e2hhbmRsZUJsdXJ9XG4gICAgICAgICAgICBlcnJvcj17dG91Y2hlZFtuYW1lXSAmJiBCb29sZWFuKGVycm9yc1tuYW1lXSl9XG4gICAgICAgICAgICBoZWxwZXJUZXh0PXtmb3JtaWsudG91Y2hlZFtuYW1lXSAmJiBmb3JtaWsuZXJyb3JzW25hbWVdfVxuICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAvPlxuICAgICAgICApXG4gICAgICApfVxuICAgICAgPENvbXBhbnlGaWVsZCBmb3JtaWs9e2Zvcm1pa30gc3VtbWl0SWQ9e3N1bW1pdElkfSBpc1JlcXVpcmVkIC8+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmluZm9Ob3RlfT57dChcInRpY2tldF9kZXRhaWwuaW5mb19ub3RlXCIpfTwvQm94PlxuICAgIDwvQm94PlxuICApO1xufTtcblxuVGlja2V0T3duZXJGaWVsZHMucHJvcFR5cGVzID0ge1xuICBmb3JtaWs6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0T3duZXJGaWVsZHM7XG4iLCJleHBvcnQgY29uc3QgVElDS0VUX0FUVEVOREVFX0tFWVMgPSB7XG4gIGVtYWlsOiBcImF0dGVuZGVlX2VtYWlsXCIsXG4gIGZpcnN0TmFtZTogXCJhdHRlbmRlZV9maXJzdF9uYW1lXCIsXG4gIGxhc3ROYW1lOiBcImF0dGVuZGVlX2xhc3RfbmFtZVwiLFxuICBjb21wYW55OiBcImF0dGVuZGVlX2NvbXBhbnlcIixcbiAgZGlzY2xhaW1lckFjY2VwdGVkOiBcImRpc2NsYWltZXJfYWNjZXB0ZWRcIlxufTtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCBRUkNvZGUgZnJvbSBcInJlYWN0LXFyLWNvZGVcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgQnV0dG9uLFxuICBEcmF3ZXIsXG4gIEljb25CdXR0b24sXG4gIFR5cG9ncmFwaHksXG4gIERpYWxvZyxcbiAgRGlhbG9nVGl0bGUsXG4gIERpYWxvZ0NvbnRlbnQsXG4gIERpYWxvZ0NvbnRlbnRUZXh0XG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQge1xuICBDbG9zZSBhcyBDbG9zZUljb24sXG4gIEZpbGVEb3dubG9hZE91dGxpbmVkIGFzIERvd25sb2FkSWNvbixcbiAgRW1haWxPdXRsaW5lZCBhcyBFbWFpbEljb25cbn0gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWxcIjtcbmltcG9ydCBPcmRlck51bWJlciBmcm9tIFwiLi4vT3JkZXJzTGlzdC9PcmRlck51bWJlclwiO1xuaW1wb3J0IHsgdXNlVGlja2V0RGV0YWlscyB9IGZyb20gXCIuLi8uLi9ob29rcy91c2VUaWNrZXREZXRhaWxzXCI7XG5pbXBvcnQgVGlja2V0Rm9ybSBmcm9tIFwiLi9jb21wb25lbnRzL1RpY2tldEZvcm1cIjtcbmltcG9ydCB7IGdldEV4dHJhUXVlc3Rpb25zLCBnZXRUaWNrZXQsIHNhdmVUaWNrZXREZXRhaWxzIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgdHJhbnNmb3JtQW53ZXJzRm9ybWF0IH0gZnJvbSBcIi4vY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL3V0aWxzXCI7XG5pbXBvcnQgeyBNSUxMSVNFQ19UT19TRUMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5cbmNvbnN0IFRpY2tldERldGFpbCA9ICh7IHN1bW1pdCwgdGlja2V0SWQsIG9yZGVySWQsIG93bmVySWQsIG9uQ2xvc2UgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3Qge1xuICAgIHVzZXI6IHsgdXNlclByb2ZpbGUgfSxcbiAgICBleHRyYVF1ZXN0aW9ucyxcbiAgICBjdXJyZW50VGlja2V0OiB0aWNrZXRcbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUpO1xuICBjb25zdCBbc2F2ZU1lc3NhZ2UsIHNldFNhdmVNZXNzYWdlXSA9IHVzZVN0YXRlKG51bGwpO1xuICBjb25zdCBpc09wZW4gPSB0aWNrZXRJZCAmJiBvcmRlcklkICYmIG93bmVySWQ7XG4gIGNvbnN0IGlzVXNlck9yZGVyT3duZXIgPSB0aWNrZXQ/Lm9yZGVyPy5vd25lcl9pZCA9PT0gdXNlclByb2ZpbGUuaWQ7XG4gIGNvbnN0IGlzVXNlclRpY2tldE93bmVyID0gdGlja2V0Py5vd25lcj8uZW1haWwgPT09IHVzZXJQcm9maWxlLmVtYWlsO1xuICBjb25zdCBjYW5FZGl0VGlja2V0RGF0YSA9XG4gICAgKGlzVXNlclRpY2tldE93bmVyIHx8IGlzVXNlck9yZGVyT3duZXIpICYmXG4gICAgc3VtbWl0LmFsbG93X3VwZGF0ZV9hdHRlbmRlZV9leHRyYV9xdWVzdGlvbnM7XG4gIGNvbnN0IHsgaXNDb21wbGV0ZSB9ID0gdXNlVGlja2V0RGV0YWlscyh0aWNrZXQpO1xuXG4gIGNvbnN0IG9uU2F2ZSA9ICh2YWwpID0+IHtcbiAgICBjb25zdCBhbnN3ZXJzID0gdHJhbnNmb3JtQW53ZXJzRm9ybWF0KHZhbCk7XG5cbiAgICByZXR1cm4gZGlzcGF0Y2goc2F2ZVRpY2tldERldGFpbHModGlja2V0LCBhbnN3ZXJzKSlcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgc2V0U2F2ZU1lc3NhZ2Uoe1xuICAgICAgICAgIHRpdGxlOiBcIlRpY2tldCBTYXZlZCFcIixcbiAgICAgICAgICBkZXNjcmlwdGlvbjogXCJ0aWNrZXQgc2F2ZWQgc3VjY2Vzc2Z1bGx5XCJcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGVycikgPT4ge1xuICAgICAgICBzZXRTYXZlTWVzc2FnZSh7XG4gICAgICAgICAgdGl0bGU6IFwiRXJyb3Igc2F2aW5nIHRpY2tldC5cIixcbiAgICAgICAgICBkZXNjcmlwdGlvbjogZXJyLnRvU3RyaW5nKClcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICAgICAgfSk7XG4gIH07XG5cbiAgY29uc3Qgb25DbG9zZVNhdmVNZXNzYWdlID0gKCkgPT4ge1xuICAgIHNldFNhdmVNZXNzYWdlKG51bGwpO1xuICAgIHNldFRpbWVvdXQob25DbG9zZSwgTUlMTElTRUNfVE9fU0VDKTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh0aWNrZXRJZCAmJiBvcmRlcklkICYmIG93bmVySWQpIHtcbiAgICAgIGRpc3BhdGNoKGdldEV4dHJhUXVlc3Rpb25zKG93bmVySWQpKTtcbiAgICAgIGRpc3BhdGNoKGdldFRpY2tldCh0aWNrZXRJZCwgb3JkZXJJZCkpO1xuICAgIH1cbiAgfSwgW3RpY2tldElkLCBvcmRlcklkLCBvd25lcklkXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPERyYXdlclxuICAgICAgICBvcGVuPXshIWlzT3Blbn1cbiAgICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgICAgYW5jaG9yPVwicmlnaHRcIlxuICAgICAgICBNb2RhbFByb3BzPXt7IGtlZXBNb3VudGVkOiBmYWxzZSB9fVxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXREZXRhaWxDb250YWluZXJ9XG4gICAgICA+XG4gICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuaGVhZGVyfT5cbiAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY2xvc2VCdG59XG4gICAgICAgICAgICBvbkNsaWNrPXtvbkNsb3NlfVxuICAgICAgICAgICAgc3g9e3sgZmxvYXQ6IFwicmlnaHRcIiB9fVxuICAgICAgICAgICAgZm9udFNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPENsb3NlSWNvbiAvPlxuICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiaDRcIiBndXR0ZXJCb3R0b20gY2xhc3NOYW1lPXtzdHlsZXMudGl0bGV9PlxuICAgICAgICAgICAge3RpY2tldD8udGlja2V0X3R5cGU/Lm5hbWV9XG4gICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MlwiIGd1dHRlckJvdHRvbSBjbGFzc05hbWU9e3N0eWxlcy5zdWJ0aXRsZX0+XG4gICAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwucHVyY2hhc2VkX2J5XCIpfSB7dGlja2V0Py5vd25lcj8uZW1haWx9XG4gICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuXG4gICAgICAgICAge2lzQ29tcGxldGUgJiYgKFxuICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5xckNvZGV9PlxuICAgICAgICAgICAgICAgIDxRUkNvZGVcbiAgICAgICAgICAgICAgICAgIHNpemU9ezI1Nn1cbiAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IGhlaWdodDogXCJhdXRvXCIsIG1heFdpZHRoOiBcIjEwMCVcIiwgd2lkdGg6IFwiMTAwJVwiIH19XG4gICAgICAgICAgICAgICAgICB2YWx1ZT17dGlja2V0LnFyX2NvZGV9XG4gICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI1NiAyNTZcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9e3N0eWxlcy5zdGF0dXN9Pnt0KFwidGlja2V0X2RldGFpbC5zdGF0dXNcIil9PC9wPlxuICAgICAgICAgICAgICA8VHlwb2dyYXBoeVxuICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJib2R5MlwiXG4gICAgICAgICAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMucXJOb3RlfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLnFyX25vdGVcIil9XG4gICAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICAgIDwvPlxuICAgICAgICAgICl9XG5cbiAgICAgICAgICB7IXN1bW1pdD8uaXNfdmlydHVhbCAmJiBpc0NvbXBsZXRlICYmIChcbiAgICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYWN0aW9uQnV0dG9uc0NvbnRhaW5lcn0+XG4gICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5kb3dubG9hZEJ0bn1cbiAgICAgICAgICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPERvd25sb2FkSWNvbiBmb250U2l6ZT1cImxhcmdlXCIgLz5cbiAgICAgICAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwuZG93bmxvYWRcIil9XG4gICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICA8QnV0dG9uIGNsYXNzTmFtZT17c3R5bGVzLnNlbmRCdG59PlxuICAgICAgICAgICAgICAgIDxFbWFpbEljb24gZm9udFNpemU9XCJsYXJnZVwiIC8+XG4gICAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLnNlbmRcIil9XG4gICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgKX1cblxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJOdW1iZXJ9PlxuICAgICAgICAgICAgPE9yZGVyTnVtYmVyXG4gICAgICAgICAgICAgIG51bWJlcj17dGlja2V0Py5vcmRlcj8ubnVtYmVyfVxuICAgICAgICAgICAgICBjb3B5XG4gICAgICAgICAgICAgIHRydW5jYXRlZFxuICAgICAgICAgICAgICByZXZlcnNlZFxuICAgICAgICAgICAgICB3aWR0aD17MTUwfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9Cb3g+XG5cbiAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5hdHRlbmRlZUNvbnRhaW5lcn0+XG4gICAgICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgICAgIHZhcmlhbnQ9XCJoNFwiXG4gICAgICAgICAgICBndXR0ZXJCb3R0b21cbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmF0dGVuZGVlSW5mb1RpdGxlfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5hdHRlbmRlZV9pbmZvcm1hdGlvblwiKX1cbiAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAge3RpY2tldCAmJiAoXG4gICAgICAgICAgICA8VGlja2V0Rm9ybVxuICAgICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgICAgZXh0cmFRdWVzdGlvbnM9e2V4dHJhUXVlc3Rpb25zfVxuICAgICAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICAgICAgY2FuRWRpdD17Y2FuRWRpdFRpY2tldERhdGF9XG4gICAgICAgICAgICAgIG9uU3VibWl0PXtvblNhdmV9XG4gICAgICAgICAgICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvQm94PlxuICAgICAgPC9EcmF3ZXI+XG4gICAgICA8RGlhbG9nXG4gICAgICAgIG9wZW49eyEhc2F2ZU1lc3NhZ2V9XG4gICAgICAgIG9uQ2xvc2U9e29uQ2xvc2VTYXZlTWVzc2FnZX1cbiAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PVwiYWxlcnQtZGlhbG9nLXRpdGxlXCJcbiAgICAgICAgYXJpYS1kZXNjcmliZWRieT1cImFsZXJ0LWRpYWxvZy1kZXNjcmlwdGlvblwiXG4gICAgICA+XG4gICAgICAgIDxEaWFsb2dUaXRsZSBpZD1cImFsZXJ0LWRpYWxvZy10aXRsZVwiPntzYXZlTWVzc2FnZT8udGl0bGV9PC9EaWFsb2dUaXRsZT5cbiAgICAgICAgPERpYWxvZ0NvbnRlbnQ+XG4gICAgICAgICAgPERpYWxvZ0NvbnRlbnRUZXh0IGlkPVwiYWxlcnQtZGlhbG9nLWRlc2NyaXB0aW9uXCI+XG4gICAgICAgICAgICB7c2F2ZU1lc3NhZ2U/LmRlc2NyaXB0aW9ufVxuICAgICAgICAgIDwvRGlhbG9nQ29udGVudFRleHQ+XG4gICAgICAgIDwvRGlhbG9nQ29udGVudD5cbiAgICAgIDwvRGlhbG9nPlxuICAgIDwvPlxuICApO1xufTtcblxuVGlja2V0RGV0YWlsLnByb3BUeXBlcyA9IHtcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYyxcbiAgdGlja2V0SWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9yZGVySWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG93bmVySWQ6IFByb3BUeXBlcy5udW1iZXIsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXREZXRhaWw7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBDb250YWluZXIsIEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBnZXRUaWNrZXRTdGF0dXNLZXkgfSBmcm9tIFwiLi4vLi4vdXRpbHMvdGlja2V0VXRpbHNcIjtcbmltcG9ydCB7XG4gIFNUQVRVU19DT01QTEVURSxcbiAgU1RBVFVTX0lOQ09NUExFVEUsXG4gIFNUQVRVU19VTkFTU0lHTkVEXG59IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuZnVuY3Rpb24gVGlja2V0U3RhdHVzKHsgdGlja2V0IH0pIHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBpc0FjdGl2ZSA9IHRpY2tldC5pc19hY3RpdmU7XG4gIGNvbnN0IHJlZnVuZF9yZXF1ZXN0cyA9IHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LmZpbmQoXG4gICAgKHIpID0+IHIuc3RhdHVzID09PSBcIlJlcXVlc3RlZFwiXG4gICk7XG4gIGNvbnN0IHRpY2tldF9zdGF0dXNfaW5jb21wbGV0ZSA9XG4gICAgZ2V0VGlja2V0U3RhdHVzS2V5KHRpY2tldCkgPT09IFNUQVRVU19JTkNPTVBMRVRFO1xuICBjb25zdCB0aWNrZXRfdW5hc3NpZ25lZCA9IGdldFRpY2tldFN0YXR1c0tleSh0aWNrZXQpID09PSBTVEFUVVNfVU5BU1NJR05FRDtcbiAgY29uc3QgdGlja2V0X2NvbXBsZXRlID0gZ2V0VGlja2V0U3RhdHVzS2V5KHRpY2tldCkgPT09IFNUQVRVU19DT01QTEVURTtcblxuICByZXR1cm4gKFxuICAgIDxDb250YWluZXIgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0U3RhdHVzQ29udGFpbmVyfT5cbiAgICAgIHtpc0FjdGl2ZSA/IChcbiAgICAgICAgPD5cbiAgICAgICAgICB7cmVmdW5kX3JlcXVlc3RzICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIHJlZnVuZCByZXF1ZXN0ZWRcIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlcy5idXR0b25SZWZ1bmRSZXF1ZXN0ZWR9YH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c19yZWZ1bmRfcmVxdWVzdGVkXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7dGlja2V0X3N0YXR1c19pbmNvbXBsZXRlICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIGluY29tcGxldGVcIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlcy5idXR0b25JbmNvbXBsZXRlfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfaW5jb21wbGV0ZVwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICl9XG4gICAgICAgICAge3RpY2tldF91bmFzc2lnbmVkICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIHVuYXNzaWduZWRcIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlcy5idXR0b25VbmFzc2lnbmVkfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfdW5hc3NpZ25lZFwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICl9XG4gICAgICAgICAge3RpY2tldF9jb21wbGV0ZSAmJiAoXG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHN0YXR1cyBjb21wbGV0ZVwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzLmJ1dHRvbkNvbXBsZXRlfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfY29tcGxldGVcIil9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICApfVxuICAgICAgICA8Lz5cbiAgICAgICkgOiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHN0YXR1cyBjYW5jZWxsZWRcIlxuICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzLmJ1dHRvbkNhbmNlbGxlZH1gfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c19jYW5jZWxsZWRcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKX1cbiAgICA8L0NvbnRhaW5lcj5cbiAgKTtcbn1cblxuVGlja2V0U3RhdHVzLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIG93bmVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgc3RhdHVzOiBQcm9wVHlwZXMuc3RyaW5nXG4gICAgfSksXG4gICAgcmVmdW5kX3JlcXVlc3RzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpXG4gIH0pXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXRTdGF0dXM7XG4iLCJleHBvcnQgY29uc3QgU1RBVFVTX0NPTVBMRVRFID0gXCJDb21wbGV0ZVwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19JTkNPTVBMRVRFID0gXCJJbmNvbXBsZXRlXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0NBTkNFTExFRCA9IFwiQ2FuY2VsbGVkXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1VOQVNTSUdORUQgPSBcIlVuYXNzaWduZWRcIjtcblxuZXhwb3J0IGNvbnN0IHVzZVRpY2tldERldGFpbHMgPSAodGlja2V0KSA9PiB7XG4gIGNvbnN0IGdldFN0YXR1cyA9ICgpID0+IHtcbiAgICBpZiAoIXRpY2tldC5pc19hY3RpdmUpIHJldHVybiBTVEFUVVNfQ0FOQ0VMTEVEO1xuICAgIGlmICh0aWNrZXQub3duZXJfaWQgPT09IDApIHJldHVybiBTVEFUVVNfVU5BU1NJR05FRDtcbiAgICBpZiAoIXRpY2tldC5vd25lcj8uZmlyc3RfbmFtZSB8fCAhdGlja2V0Lm93bmVyPy5sYXN0X25hbWUpXG4gICAgICByZXR1cm4gU1RBVFVTX0lOQ09NUExFVEU7XG4gICAgcmV0dXJuIHRpY2tldC5vd25lci5zdGF0dXM7XG4gIH07XG5cbiAgaWYgKCF0aWNrZXQpIHJldHVybiB7fTtcblxuICBjb25zdCBzdGF0dXMgPSBnZXRTdGF0dXMoKTtcbiAgY29uc3QgaXNBY3RpdmUgPSB0aWNrZXQuaXNfYWN0aXZlICYmIHN0YXR1cyAhPT0gU1RBVFVTX0NBTkNFTExFRDtcbiAgY29uc3QgaXNSZWZ1bmRhYmxlID1cbiAgICB0aWNrZXQuZmluYWxfYW1vdW50ID4gMCAmJiB0aWNrZXQuZmluYWxfYW1vdW50ID4gdGlja2V0LnJlZnVuZGVkX2Ftb3VudDtcbiAgY29uc3QgYWxsb3dzRGVsZWdhdGUgPVxuICAgICh0aWNrZXQudGlja2V0X3R5cGUuYWxsb3dzX3RvX2RlbGVnYXRlIHx8XG4gICAgICB0aWNrZXQucHJvbW9fY29kZT8uYWxsb3dzX3RvX2RlbGVnYXRlKSAmJlxuICAgIHN0YXR1cyAhPT0gU1RBVFVTX1VOQVNTSUdORUQgJiZcbiAgICAhdGlja2V0Lm93bmVyPy5tYW5hZ2VyPy5pZCAmJlxuICAgICF0aWNrZXQub3duZXI/Lm1hbmFnZXJfaWQ7XG4gIGNvbnN0IGlzQ29tcGxldGUgPSBzdGF0dXMgPT09IFNUQVRVU19DT01QTEVURTtcbiAgY29uc3QgaXNVbmFzc2lnbmVkID0gc3RhdHVzID09PSBTVEFUVVNfVU5BU1NJR05FRDtcbiAgY29uc3QgaXNJbmNvbXBsZXRlID0gc3RhdHVzID09PSBTVEFUVVNfSU5DT01QTEVURTtcblxuICByZXR1cm4ge1xuICAgIHN0YXR1cyxcbiAgICBpc0NvbXBsZXRlLFxuICAgIGlzVW5hc3NpZ25lZCxcbiAgICBpc0luY29tcGxldGUsXG4gICAgaXNBY3RpdmUsXG4gICAgaXNSZWZ1bmRhYmxlLFxuICAgIGFsbG93c0RlbGVnYXRlXG4gIH07XG59O1xuIiwiaW1wb3J0IGkxOG4gZnJvbSBcImkxOG5leHRcIjtcbmltcG9ydCB7IGluaXRSZWFjdEkxOG5leHQgfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IExhbmd1YWdlRGV0ZWN0b3IgZnJvbSBcImkxOG5leHQtYnJvd3Nlci1sYW5ndWFnZWRldGVjdG9yXCI7XG5pbXBvcnQgZW4gZnJvbSBcIi4vbG9jYWxlcy9lbi5qc29uXCI7XG5pbXBvcnQgZXMgZnJvbSBcIi4vbG9jYWxlcy9lcy5qc29uXCI7XG5cbi8vIGltcG9ydCBCYWNrZW5kIGZyb20gJ2kxOG5leHQtaHR0cC1iYWNrZW5kJztcbi8vIGRvbid0IHdhbnQgdG8gdXNlIHRoaXM/XG4vLyBoYXZlIGEgbG9vayBhdCB0aGUgUXVpY2sgc3RhcnQgZ3VpZGVcbi8vIGZvciBwYXNzaW5nIGluIGxuZyBhbmQgdHJhbnNsYXRpb25zIG9uIGluaXRcblxuaTE4blxuICAvLyBsb2FkIHRyYW5zbGF0aW9uIHVzaW5nIGh0dHAgLT4gc2VlIC9wdWJsaWMvbG9jYWxlcyAoaS5lLiBodHRwczovL2dpdGh1Yi5jb20vaTE4bmV4dC9yZWFjdC1pMThuZXh0L3RyZWUvbWFzdGVyL2V4YW1wbGUvcmVhY3QvcHVibGljL2xvY2FsZXMpXG4gIC8vIGxlYXJuIG1vcmU6IGh0dHBzOi8vZ2l0aHViLmNvbS9pMThuZXh0L2kxOG5leHQtaHR0cC1iYWNrZW5kXG4gIC8vIHdhbnQgeW91ciB0cmFuc2xhdGlvbnMgdG8gYmUgbG9hZGVkIGZyb20gYSBwcm9mZXNzaW9uYWwgQ0ROPyA9PiBodHRwczovL2dpdGh1Yi5jb20vbG9jaXplL3JlYWN0LXR1dG9yaWFsI3N0ZXAtMi0tLXVzZS10aGUtbG9jaXplLWNkblxuICAvLyAudXNlKEJhY2tlbmQpXG4gIC8vIGRldGVjdCB1c2VyIGxhbmd1YWdlXG4gIC8vIGxlYXJuIG1vcmU6IGh0dHBzOi8vZ2l0aHViLmNvbS9pMThuZXh0L2kxOG5leHQtYnJvd3Nlci1sYW5ndWFnZURldGVjdG9yXG4gIC51c2UoTGFuZ3VhZ2VEZXRlY3RvcilcbiAgLy8gcGFzcyB0aGUgaTE4biBpbnN0YW5jZSB0byByZWFjdC1pMThuZXh0LlxuICAudXNlKGluaXRSZWFjdEkxOG5leHQpXG4gIC8vIGluaXQgaTE4bmV4dFxuICAvLyBmb3IgYWxsIG9wdGlvbnMgcmVhZDogaHR0cHM6Ly93d3cuaTE4bmV4dC5jb20vb3ZlcnZpZXcvY29uZmlndXJhdGlvbi1vcHRpb25zXG4gIC5pbml0KHtcbiAgICBmYWxsYmFja0xuZzogXCJlblwiLFxuICAgIGRlYnVnOiBmYWxzZSxcbiAgICByZXNvdXJjZXM6IHtcbiAgICAgIGVuOiB7IHRyYW5zbGF0aW9uOiBlbiB9LFxuICAgICAgZXM6IHsgdHJhbnNsYXRpb246IGVzIH1cbiAgICB9LFxuICAgIGludGVycG9sYXRpb246IHtcbiAgICAgIGVzY2FwZVZhbHVlOiBmYWxzZSAvLyBub3QgbmVlZGVkIGZvciByZWFjdCBhcyBpdCBlc2NhcGVzIGJ5IGRlZmF1bHRcbiAgICB9XG4gIH0pO1xuXG5leHBvcnQgZGVmYXVsdCBpMThuO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cbmltcG9ydCB7IExPR09VVF9VU0VSIH0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvYWN0aW9uc1wiO1xuaW1wb3J0IHtcbiAgUkVTRVRfU1RBVEUsXG4gIFJFU0VUX0ZJTFRFUixcbiAgU0VUX1NUQVRFLFxuICBTRVRfVVNFUixcbiAgR0VUX1VTRVJfT1JERVJTLFxuICBHRVRfVElDS0VUU19CWV9PUkRFUixcbiAgVVBEQVRFX1RJQ0tFVFNfUkVGVU5EX1JFUVVFU1RFRCxcbiAgUkVDRUlWRV9USUNLRVQsXG4gIFJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TLFxuICBVUERBVEVfVElDS0VUXG59IGZyb20gXCIuL2FjdGlvbnNcIjtcbmltcG9ydCB7IEZJUlNUX1BBR0UgfSBmcm9tIFwiLi91dGlscy9jb25zdGFudHNcIjtcblxuY29uc3QgREVGQVVMVF9TVEFURSA9IHtcbiAgc3VtbWl0OiBudWxsLFxuICB1c2VyOiB7fSxcbiAgd2lkZ2V0TG9hZGluZzogZmFsc2UsXG4gIG1lbWJlck9yZGVyczogW10sXG4gIGV4dHJhUXVlc3Rpb25zOiBbXSxcbiAgY3VycmVudFRpY2tldDogbnVsbCxcbiAgZXJyb3JzOiB7fSxcbiAgbG9hZGluZzogZmFsc2UsXG4gIGlzT3JkZXJMb2FkaW5nOiBmYWxzZSxcbiAgb3JkZXJzX2N1cnJlbnRfcGFnZTogMSxcbiAgb3JkZXJzX2xhc3RfcGFnZTogMSxcbiAgb3JkZXJzX3Blcl9wYWdlOiA1LFxuICBvcmRlcnNfdG90YWw6IDAsXG4gIHRpY2tldF9jdXJyZW50X3BhZ2U6IDEsXG4gIHRpY2tldF9sYXN0X3BhZ2U6IDEsXG4gIHRpY2tldF9wZXJfcGFnZTogNSxcbiAgdGlja2V0X3RvdGFsOiAwXG59O1xuXG5jb25zdCBXaWRnZXRSZWR1Y2VyID0gKHN0YXRlID0gREVGQVVMVF9TVEFURSwgeyB0eXBlLCBwYXlsb2FkIH0gPSB7fSkgPT4ge1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIExPR09VVF9VU0VSOlxuICAgIGNhc2UgUkVTRVRfU1RBVEU6XG4gICAgICByZXR1cm4gREVGQVVMVF9TVEFURTtcbiAgICBjYXNlIFJFU0VUX0ZJTFRFUjpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBvcmRlcnNfY3VycmVudF9wYWdlOiAxLFxuICAgICAgICBvcmRlcnNfbGFzdF9wYWdlOiAxXG4gICAgICB9O1xuICAgIGNhc2UgU0VUX1NUQVRFOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIC4uLnBheWxvYWQgfTtcbiAgICBjYXNlIFNFVF9VU0VSOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIHVzZXI6IHBheWxvYWQgfTtcbiAgICBjYXNlIEdFVF9VU0VSX09SREVSUzoge1xuICAgICAgY29uc3QgeyBtZW1iZXJPcmRlcnMgfSA9IHN0YXRlO1xuICAgICAgY29uc3QgeyBkYXRhLCB0b3RhbCwgY3VycmVudF9wYWdlIH0gPSBwYXlsb2FkLnJlc3BvbnNlO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIG1lbWJlck9yZGVyczpcbiAgICAgICAgICBjdXJyZW50X3BhZ2UgPT09IEZJUlNUX1BBR0UgPyBkYXRhIDogWy4uLm1lbWJlck9yZGVycywgLi4uZGF0YV0sXG4gICAgICAgIG9yZGVyc190b3RhbDogdG90YWwsXG4gICAgICAgIG9yZGVyc19jdXJyZW50X3BhZ2U6IGN1cnJlbnRfcGFnZVxuICAgICAgfTtcbiAgICB9XG4gICAgY2FzZSBHRVRfVElDS0VUU19CWV9PUkRFUjoge1xuICAgICAgY29uc3QgeyBtZW1iZXJPcmRlcnMgfSA9IHN0YXRlO1xuICAgICAgY29uc3QgeyBkYXRhLCB0b3RhbCwgY3VycmVudF9wYWdlLCBsYXN0X3BhZ2UgfSA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICBjb25zdCBmb3JtZXJPcmRlciA9IG1lbWJlck9yZGVycy5maW5kKChvKSA9PiBvLmlkID09PSBkYXRhWzBdPy5vcmRlcl9pZCk7XG5cbiAgICAgIGNvbnN0IHVwZGF0ZWRPcmRlciA9IHtcbiAgICAgICAgLi4uZm9ybWVyT3JkZXIsXG4gICAgICAgIG1lbWJlclRpY2tldHM6XG4gICAgICAgICAgY3VycmVudF9wYWdlID09PSBGSVJTVF9QQUdFXG4gICAgICAgICAgICA/IGRhdGFcbiAgICAgICAgICAgIDogWy4uLmZvcm1lck9yZGVyLm1lbWJlclRpY2tldHMsIC4uLmRhdGFdLFxuICAgICAgICB0aWNrZXRzX3BhZ2VfY3VycmVudDogY3VycmVudF9wYWdlLFxuICAgICAgICB0aWNrZXRzX3BhZ2VfbGFzdDogbGFzdF9wYWdlLFxuICAgICAgICB0aWNrZXRzX3RvdGFsOiB0b3RhbFxuICAgICAgfTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBtZW1iZXJPcmRlcnM6IG1lbWJlck9yZGVycy5tYXAoKG1vKSA9PlxuICAgICAgICAgIG1vLmlkID09PSB1cGRhdGVkT3JkZXIuaWQgPyB1cGRhdGVkT3JkZXIgOiBtb1xuICAgICAgICApXG4gICAgICB9O1xuICAgIH1cbiAgICBjYXNlIFVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURUQ6IHtcbiAgICAgIGNvbnN0IHsgbWVtYmVyT3JkZXJzIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQgPSBwYXlsb2FkO1xuICAgICAgY29uc3Qgb3JkZXIgPSBtZW1iZXJPcmRlcnMuZmluZChcbiAgICAgICAgKG8pID0+IG8uaWQgPT09IHRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWRbMF0/Lm9yZGVyX2lkXG4gICAgICApO1xuICAgICAgY29uc3QgdXBkYXRlZFRpY2tldHMgPSBvcmRlci5tZW1iZXJUaWNrZXRzLm1hcChcbiAgICAgICAgKHRpY2tldCkgPT5cbiAgICAgICAgICB0aWNrZXRzUmVmdW5kUmVxdWVzdGVkLmZpbmQoKHRycikgPT4gdHJyLmlkID09PSB0aWNrZXQuaWQpIHx8IHRpY2tldFxuICAgICAgKTtcbiAgICAgIGNvbnN0IHVwZGF0ZWRPcmRlciA9IHtcbiAgICAgICAgLi4ub3JkZXIsXG4gICAgICAgIG1lbWJlclRpY2tldHM6IHVwZGF0ZWRUaWNrZXRzXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIG1lbWJlck9yZGVyczogbWVtYmVyT3JkZXJzLm1hcCgobW8pID0+XG4gICAgICAgICAgbW8uaWQgPT09IHVwZGF0ZWRPcmRlci5pZCA/IHVwZGF0ZWRPcmRlciA6IG1vXG4gICAgICAgIClcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgUkVDRUlWRV9USUNLRVQ6IHtcbiAgICAgIGNvbnN0IHRpY2tldCA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgY3VycmVudFRpY2tldDogdGlja2V0IH07XG4gICAgfVxuICAgIGNhc2UgUkVDRUlWRV9FWFRSQV9RVUVTVElPTlM6IHtcbiAgICAgIGNvbnN0IHsgZGF0YSB9ID0gcGF5bG9hZC5yZXNwb25zZTtcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBleHRyYVF1ZXN0aW9uczogZGF0YSB9O1xuICAgIH1cbiAgICBjYXNlIFVQREFURV9USUNLRVQ6IHtcbiAgICAgIGNvbnN0IHRpY2tldERhdGEgPSBwYXlsb2FkLnJlc3BvbnNlO1xuXG4gICAgICBzdGF0ZS5tZW1iZXJPcmRlcnMuZm9yRWFjaCgob3JkZXIpID0+IHtcbiAgICAgICAgb3JkZXIubWVtYmVyVGlja2V0cyA9IG9yZGVyLm1lbWJlclRpY2tldHMubWFwKCh0aWNrZXQpID0+IHtcbiAgICAgICAgICBpZiAodGlja2V0LmlkID09PSB0aWNrZXREYXRhLmlkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGlja2V0RGF0YTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRpY2tldDtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHN0YXRlO1xuICAgIH1cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHN0YXRlO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBXaWRnZXRSZWR1Y2VyO1xuIiwiaW1wb3J0IHsgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgY29uZmlndXJlU3RvcmUgfSBmcm9tIFwiQHJlZHV4anMvdG9vbGtpdFwiO1xuaW1wb3J0IHtcbiAgcGVyc2lzdFN0b3JlLFxuICBwZXJzaXN0UmVkdWNlcixcbiAgRkxVU0gsXG4gIFJFSFlEUkFURSxcbiAgUEFVU0UsXG4gIFBFUlNJU1QsXG4gIFBVUkdFLFxuICBSRUdJU1RFUlxufSBmcm9tIFwicmVkdXgtcGVyc2lzdFwiO1xuaW1wb3J0IHN0b3JhZ2UgZnJvbSBcInJlZHV4LXBlcnNpc3QvbGliL3N0b3JhZ2VcIjtcbmltcG9ydCB7IGNvbWJpbmVSZWR1Y2VycyB9IGZyb20gXCJyZWR1eFwiO1xuaW1wb3J0IFdpZGdldFJlZHVjZXIgZnJvbSBcIi4vcmVkdWNlclwiO1xuXG5leHBvcnQgY29uc3QgZ2V0U3RvcmUgPSAoe1xuICBjbGllbnRJZCxcbiAgbG9naW5VcmwsXG4gIHN1bW1pdCxcbiAgYXBpQmFzZVVybCxcbiAgdXBkYXRlUHJvZmlsZVxufSkgPT4ge1xuICAvLyB0byBhZGQgb3RoZXIgcmVkdWNlcnMgbGF0ZXJcbiAgY29uc3QgcmVkdWNlcnMgPSBjb21iaW5lUmVkdWNlcnMoe1xuICAgIHdpZGdldFN0YXRlOiBXaWRnZXRSZWR1Y2VyXG4gIH0pO1xuXG4gIGNvbnN0IHN0b3JlID0gY29uZmlndXJlU3RvcmUoe1xuICAgIHJlZHVjZXI6IHBlcnNpc3RSZWR1Y2VyKFxuICAgICAge1xuICAgICAgICBrZXk6IGByb290X215X29yZGVyc190aWNrZXRzXyR7Y2xpZW50SWR9YCxcbiAgICAgICAgc3RvcmFnZVxuICAgICAgfSxcbiAgICAgIHJlZHVjZXJzXG4gICAgKSxcbiAgICBtaWRkbGV3YXJlOiAoZ2V0RGVmYXVsdE1pZGRsZXdhcmUpID0+XG4gICAgICBnZXREZWZhdWx0TWlkZGxld2FyZSh7XG4gICAgICAgIHRodW5rOiB7XG4gICAgICAgICAgZXh0cmFBcmd1bWVudDoge1xuICAgICAgICAgICAgY2xpZW50SWQsXG4gICAgICAgICAgICBhcGlCYXNlVXJsLFxuICAgICAgICAgICAgc3VtbWl0LFxuICAgICAgICAgICAgbG9naW5VcmwsXG4gICAgICAgICAgICB1cGRhdGVQcm9maWxlXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBpbW11dGFibGVDaGVjazogZmFsc2UsXG4gICAgICAgIHNlcmlhbGl6YWJsZUNoZWNrOiB7XG4gICAgICAgICAgaWdub3JlZEFjdGlvbnM6IFtGTFVTSCwgUkVIWURSQVRFLCBQQVVTRSwgUEVSU0lTVCwgUFVSR0UsIFJFR0lTVEVSXVxuICAgICAgICB9XG4gICAgICB9KVxuICB9KTtcblxuICByZXR1cm4gc3RvcmU7XG59O1xuXG5leHBvcnQgY29uc3QgdXNlSW5pdFN0b3JlID0gKGNvbmZpZykgPT4ge1xuICBjb25zdCBzdG9yZSA9IHVzZU1lbW8oKCkgPT4gZ2V0U3RvcmUoY29uZmlnKSwgW10pO1xuICBjb25zdCBwZXJzaXN0b3IgPSB1c2VNZW1vKCgpID0+IHBlcnNpc3RTdG9yZShzdG9yZSksIFtzdG9yZV0pO1xuXG4gIHJldHVybiB7XG4gICAgc3RvcmUsXG4gICAgcGVyc2lzdG9yXG4gIH07XG59O1xuIiwiaW1wb3J0IHtcbiAgaW5pdExvZ091dCxcbiAgZ2V0QWNjZXNzVG9rZW5cbn0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvbWV0aG9kc1wiO1xuaW1wb3J0ICogYXMgU2VudHJ5IGZyb20gXCJAc2VudHJ5L3JlYWN0XCI7XG5cbmV4cG9ydCBjb25zdCBnZXRBY2Nlc3NUb2tlblNhZmVseSA9IGFzeW5jICgpID0+IHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgZ2V0QWNjZXNzVG9rZW4oKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUubG9nKFwibXktb3JkZXJzLXRpY2tldHMtd2lkZ2U6OiBnZXRBY2Nlc3NUb2tlblNhZmVseSBlcnJvcjogXCIsIGUpO1xuICAgIFNlbnRyeS5jYXB0dXJlRXhjZXB0aW9uKGUpO1xuICAgIGluaXRMb2dPdXQoKTtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcbiAgfVxufTtcbiIsImV4cG9ydCBjb25zdCBMQVNUX0hPVVJfT0ZfMjRfSE9VUiA9IDIzO1xuZXhwb3J0IGNvbnN0IExBU1RfTUlOVVRFX09GX0hPVVIgPSA1OTtcbmV4cG9ydCBjb25zdCBPTkVfUEFHRV9ORVhUID0gMTtcbmV4cG9ydCBjb25zdCBNSUxMSVNFQ19UT19TRUMgPSAxMDAwO1xuZXhwb3J0IGNvbnN0IE9ORV9EQVkgPSAxO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfSVRFTVNfUEVSX1BBR0UgPSA1O1xuZXhwb3J0IGNvbnN0IEZJUlNUX1BBR0UgPSAxO1xuZXhwb3J0IGNvbnN0IFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCA9IDU7XG5leHBvcnQgY29uc3QgU1RFUF9PTkUgPSAxO1xuZXhwb3J0IGNvbnN0IFNURVBfVFdPID0gMjtcblxuZXhwb3J0IGNvbnN0IFNUQVRVU19DT01QTEVURSA9IFwiU1RBVFVTX0NPTVBMRVRFXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0lOQ09NUExFVEUgPSBcIlNUQVRVU19JTkNPTVBMRVRFXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1BFTkRJTkcgPSBcIlNUQVRVU19QRU5ESU5HXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0NBTkNFTExFRCA9IFwiU1RBVFVTX0NBTkNFTExFRFwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19FUlJPUiA9IFwiU1RBVFVTX0VSUk9SXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1BST0NFU1NJTkcgPSBcIlNUQVRVU19QUk9DRVNTSU5HXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1VOQVNTSUdORUQgPSBcIlNUQVRVU19VTkFTU0lHTkVEXCI7XG5cbmV4cG9ydCBjb25zdCBKRVNUX1RJTUVPVVRfSU5fTUlMTElTRUMgPSAxMDAwMDtcblxuZXhwb3J0IGNvbnN0IE9ORV9JVEVNID0gMTtcbmV4cG9ydCBjb25zdCBUV09fSVRFTSA9IDI7XG5leHBvcnQgY29uc3QgRklWRV9JVEVNID0gNTtcbmV4cG9ydCBjb25zdCBTSVhfSVRFTSA9IDY7XG5cbmV4cG9ydCBjb25zdCBQUk9NSVNFX0JBVENIX0xJTUlUID0gMTA7XG5leHBvcnQgY29uc3QgRklGVFlfUEVSX1BBR0UgPSA1MDtcbiIsImltcG9ydCBtb21lbnQgZnJvbSBcIm1vbWVudC10aW1lem9uZVwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2ggfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7XG4gIExBU1RfSE9VUl9PRl8yNF9IT1VSLFxuICBMQVNUX01JTlVURV9PRl9IT1VSLFxuICBNSUxMSVNFQ19UT19TRUNcbn0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBjb25zdCBmb3JtYXRDdXJyZW5jeSA9ICh2YWx1ZSwgeyBsb2NhbGUgPSBcImVuLVVTXCIsIC4uLm9wdGlvbnMgfSkgPT4ge1xuICBjb25zdCBkZWZhdWx0T3B0aW9ucyA9IHtcbiAgICBjdXJyZW5jeTogXCJVU0RcIixcbiAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsXG4gICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyXG4gIH07XG5cbiAgY29uc3QgZm9ybWF0dGVyID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KGxvY2FsZSwge1xuICAgIHN0eWxlOiBcImN1cnJlbmN5XCIsXG4gICAgLi4uZGVmYXVsdE9wdGlvbnMsXG4gICAgLi4ub3B0aW9uc1xuICB9KTtcblxuICByZXR1cm4gZm9ybWF0dGVyLmZvcm1hdCh2YWx1ZSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Rm9ybWF0dGVkRGF0ZSA9IChkYXRldGltZSwgdGltZVpvbmUpID0+IHtcbiAgaWYgKHRpbWVab25lKVxuICAgIHJldHVybiBtb21lbnRcbiAgICAgIC50eihkYXRldGltZSAqIE1JTExJU0VDX1RPX1NFQywgdGltZVpvbmUpXG4gICAgICAuZm9ybWF0KFwiTU1NTSBERCwgWVlZWVwiKTtcblxuICByZXR1cm4gbW9tZW50LnVuaXgoZGF0ZXRpbWUpLmZvcm1hdChcIk1NTU0gREQsIFlZWVlcIik7XG59O1xuXG5leHBvcnQgY29uc3QgY2FsY3VsYXRlT3JkZXJUb3RhbHMgPSAoeyBvcmRlciwgc3VtbWl0LCB0aWNrZXRzIH0pID0+IHtcbiAgaWYgKCFvcmRlciB8fCAhc3VtbWl0IHx8ICF0aWNrZXRzKSByZXR1cm4ge307XG5cbiAgY29uc3QgeyByZWZ1bmRlZF9hbW91bnQsIGRpc2NvdW50X2Ftb3VudCwgdGF4ZXNfYW1vdW50LCBhbW91bnQgfSA9IG9yZGVyO1xuICBjb25zdCB7IHRpY2tldF90eXBlcyB9ID0gc3VtbWl0O1xuXG4gIGNvbnN0IHRpY2tldFN1bW1hcnkgPSBbXTtcbiAgbGV0IHB1cmNoYXNlVGlja2V0VG90YWwgPSAwO1xuXG4gIGNvbnN0IGN1cnJlbmN5T2JqZWN0ID0geyBjdXJyZW5jeTogb3JkZXIuY3VycmVuY3kgfTtcblxuICBPYmplY3Qua2V5cyhvcmRlci50aWNrZXRzX2V4Y2VycHRfYnlfdGlja2V0X3R5cGUpLm1hcCgodGlja2V0KSA9PiB7XG4gICAgY29uc3QgdGlja2V0VHlwZSA9IHRpY2tldF90eXBlcz8uZmluZCgodHQpID0+IHR0Lm5hbWUgPT09IHRpY2tldCk7XG4gICAgaWYgKCF0aWNrZXRUeXBlKSByZXR1cm4gbnVsbDtcbiAgICB0aWNrZXRTdW1tYXJ5LnB1c2goe1xuICAgICAgdGlja2V0X3R5cGVfaWQ6IHRpY2tldFR5cGUuaWQsXG4gICAgICB0aWNrZXRfdHlwZTogdGlja2V0VHlwZSxcbiAgICAgIG5hbWU6IHRpY2tldCxcbiAgICAgIHF0eTogb3JkZXIudGlja2V0c19leGNlcnB0X2J5X3RpY2tldF90eXBlW3RpY2tldF1cbiAgICB9KTtcbiAgICBwdXJjaGFzZVRpY2tldFRvdGFsICs9XG4gICAgICB0aWNrZXRUeXBlLmNvc3QgKiBvcmRlci50aWNrZXRzX2V4Y2VycHRfYnlfdGlja2V0X3R5cGVbdGlja2V0XTtcblxuICAgIHJldHVybiB0aWNrZXRTdW1tYXJ5O1xuICB9KTtcblxuICBjb25zdCBwdXJjaGFzZVRvdGFsID0gZm9ybWF0Q3VycmVuY3kocHVyY2hhc2VUaWNrZXRUb3RhbCwgY3VycmVuY3lPYmplY3QpO1xuXG4gIGNvbnN0IGRpc2NvdW50VG90YWwgPSBmb3JtYXRDdXJyZW5jeShkaXNjb3VudF9hbW91bnQsIGN1cnJlbmN5T2JqZWN0KTtcbiAgY29uc3QgcmVmdW5kVG90YWwgPSBmb3JtYXRDdXJyZW5jeShyZWZ1bmRlZF9hbW91bnQsIGN1cnJlbmN5T2JqZWN0KTtcbiAgY29uc3QgdGF4ZXNUb3RhbCA9IGZvcm1hdEN1cnJlbmN5KHRheGVzX2Ftb3VudCwgY3VycmVuY3lPYmplY3QpO1xuICBjb25zdCBhbW91bnRUb3RhbCA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvcmRlciwgXCJhbW91bnRcIilcbiAgICA/IGZvcm1hdEN1cnJlbmN5KGFtb3VudCwgY3VycmVuY3lPYmplY3QpXG4gICAgOiBmb3JtYXRDdXJyZW5jeShwdXJjaGFzZVRvdGFsLCBjdXJyZW5jeU9iamVjdCk7XG5cbiAgcmV0dXJuIHtcbiAgICBkaXNjb3VudFRvdGFsLFxuICAgIHJlZnVuZFRvdGFsLFxuICAgIHRheGVzVG90YWwsXG4gICAgYW1vdW50VG90YWwsXG4gICAgdGlja2V0U3VtbWFyeVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldE9yZGVyVGlja2V0cyA9IChtZW1iZXJPcmRlcnMsIG9yZGVySWQpID0+IHtcbiAgY29uc3Qgb3JkZXJzID0gbWVtYmVyT3JkZXJzLmZpbHRlcigobykgPT4gby5pZCA9PT0gb3JkZXJJZCk7XG4gIHJldHVybiBvcmRlcnNbMF0/Lm1lbWJlclRpY2tldHM7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RXBvY2hMb3dlclVwcGVySW5TZWNvbmRzID0gKHRzKSA9PiB7XG4gIGNvbnN0IGxvd2VyID0gdHMuc2V0SG91cnMoMCwgMCwgMCwgMCkgLyBNSUxMSVNFQ19UT19TRUM7XG4gIGNvbnN0IHVwcGVyID1cbiAgICB0cy5zZXRIb3VycyhMQVNUX0hPVVJfT0ZfMjRfSE9VUiwgTEFTVF9NSU5VVEVfT0ZfSE9VUiwgMCwgMCkgL1xuICAgIE1JTExJU0VDX1RPX1NFQztcbiAgcmV0dXJuIHtcbiAgICBsb3dlcixcbiAgICB1cHBlclxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRDdXJyZW50VGltZSA9ICgpID0+XG4gIE1hdGgucm91bmQoK25ldyBEYXRlKCkgLyBNSUxMSVNFQ19UT19TRUMpO1xuXG5leHBvcnQgY29uc3QgZ2V0Tm93ID0gKCkgPT4gKGRpc3BhdGNoLCBnZXRTdGF0ZSkgPT4ge1xuICBjb25zdCB7IHRpbWVyU3RhdGUgfSA9IGdldFN0YXRlKCk7XG4gIHJldHVybiB0aW1lclN0YXRlPy5ub3dVdGMgPT0gbnVsbCA/IGRlZmF1bHRDdXJyZW50VGltZSgpIDogdGltZXJTdGF0ZT8ubm93VXRjO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZU5vdyA9ICgpID0+IHtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuXG4gIHJldHVybiBkaXNwYXRjaChnZXROb3coKSk7XG59O1xuIiwiaW1wb3J0IG1vbWVudCBmcm9tIFwibW9tZW50LXRpbWV6b25lXCI7XG5pbXBvcnQgeyBNSUxMSVNFQ19UT19TRUMsIE9ORV9EQVkgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IHVzZU5vdyB9IGZyb20gXCIuXCI7XG5cbmV4cG9ydCBjb25zdCBjaGVja1N1bW1pdFBhc3QgPSAoc3VtbWl0LCBub3cpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuXG4gIGNvbnN0IHJlYXNzaWduX2RhdGUgPVxuICAgIHN1bW1pdD8ucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZSAmJlxuICAgIHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlIDwgc3VtbWl0LmVuZF9kYXRlXG4gICAgICA/IHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlXG4gICAgICA6IHN1bW1pdC5lbmRfZGF0ZTtcblxuICByZXR1cm4gbm93ID4gcmVhc3NpZ25fZGF0ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBjaGVja1N1bW1pdFN0YXJ0ZWQgPSAoc3VtbWl0LCBub3cpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuXG4gIHJldHVybiBzdW1taXQuc3RhcnRfZGF0ZSA8IG5vdztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTdW1taXREYXlzRGlmZiA9IChzdW1taXQpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuICBjb25zdCBzdGFydERheSA9IG1vbWVudChzdW1taXQuc3RhcnRfZGF0ZSAqIE1JTExJU0VDX1RPX1NFQykudHooXG4gICAgc3VtbWl0LnRpbWVfem9uZV9pZFxuICApO1xuICBjb25zdCBlbmREYXkgPSBtb21lbnQoc3VtbWl0LmVuZF9kYXRlICogTUlMTElTRUNfVE9fU0VDKS50eihcbiAgICBzdW1taXQudGltZV96b25lX2lkXG4gICk7XG4gIGNvbnN0IGRheXMgPSBlbmREYXk/LmRpZmYoc3RhcnREYXksIFwiZGF5c1wiKTtcbiAgcmV0dXJuIHtcbiAgICBzdGFydERheSxcbiAgICBlbmREYXksXG4gICAgZGF5c1xuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFN1bW1pdEZvcm1hdHRlZERhdGUgPSAoc3VtbWl0KSA9PiB7XG4gIGlmICghc3VtbWl0KSByZXR1cm4gbnVsbDtcbiAgY29uc3QgeyBzdGFydERheSwgZW5kRGF5LCBkYXlzIH0gPSBnZXRTdW1taXREYXlzRGlmZihzdW1taXQpO1xuICBpZiAoIXN0YXJ0RGF5IHx8ICFlbmREYXkpIHJldHVybiBudWxsO1xuICBsZXQgZm9ybWF0U3RhcnREYXRlID0gXCJNTU1NIERELCBZWVlZXCI7XG4gIGxldCBmb3JtYXRFbmREYXRlID0gXCJNTU1NIERELCBZWVlZXCI7XG4gIGlmIChzdGFydERheS55ZWFyKCkgPT09IGVuZERheS55ZWFyKCkpIGZvcm1hdFN0YXJ0RGF0ZSA9IFwiTU1NTSBERFwiO1xuICBpZiAoc3RhcnREYXkubW9udGgoKSA9PT0gZW5kRGF5Lm1vbnRoKCkpIGZvcm1hdEVuZERhdGUgPSBcIkRELCBZWVlZXCI7XG5cbiAgY29uc3Qgc3RhcnREYXRlID0gc3RhcnREYXkuZm9ybWF0KGZvcm1hdFN0YXJ0RGF0ZSk7XG4gIGNvbnN0IGVuZERhdGUgPSBlbmREYXkuZm9ybWF0KGZvcm1hdEVuZERhdGUpO1xuXG4gIGlmIChkYXlzID4gT05FX0RBWSkgcmV0dXJuIGAke3N0YXJ0RGF0ZX0gLSAke2VuZERhdGV9YDtcblxuICByZXR1cm4gc3RhcnREYXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFN1bW1pdExvY2F0aW9uID0gKHN1bW1pdCkgPT4ge1xuICBpZiAoIXN1bW1pdCkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3QgbG9jYXRpb24gPSBzdW1taXQubG9jYXRpb25zPy5maW5kKFxuICAgIChsKSA9PiBsLmNsYXNzX25hbWUgPT09IFwiU3VtbWl0VmVudWVcIiAmJiBsLmlzX21haW4gPT09IHRydWVcbiAgKTtcblxuICBpZiAoIWxvY2F0aW9uKSByZXR1cm4gbnVsbDtcblxuICByZXR1cm4gYCR7bG9jYXRpb24uY2l0eX0sICR7bG9jYXRpb24uY291bnRyeX1gO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFN1bW1pdFJlYXNzaWduRGF0ZSA9IChzdW1taXQpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuXG4gIHJldHVybiBzdW1taXQucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZSAmJlxuICAgIHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlIDwgc3VtbWl0LmVuZF9kYXRlXG4gICAgPyBzdW1taXQucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZVxuICAgIDogc3VtbWl0LmVuZF9kYXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZVN1bW1pdERldGFpbHMgPSAoeyBzdW1taXQgfSkgPT4ge1xuICBjb25zdCBub3cgPSB1c2VOb3coKTtcblxuICBpZiAoIXN1bW1pdCkgcmV0dXJuIHt9O1xuXG4gIGNvbnN0IGxvY2F0aW9uID0gZ2V0U3VtbWl0TG9jYXRpb24oc3VtbWl0KTtcbiAgY29uc3QgZm9ybWF0dGVkRGF0ZSA9IGdldFN1bW1pdEZvcm1hdHRlZERhdGUoc3VtbWl0KTtcbiAgY29uc3QgcmVhc3NpZ25EYXRlID0gZ2V0U3VtbWl0UmVhc3NpZ25EYXRlKHN1bW1pdCk7XG4gIGNvbnN0IGZvcm1hdHRlZFJlYXNzaWduRGF0ZSA9IG1vbWVudC50eihcbiAgICByZWFzc2lnbkRhdGUsXG4gICAgc3VtbWl0LnRpbWVfem9uZT8udGltZV96b25lX2lkXG4gICk7XG4gIGNvbnN0IGRheXNVbnRpbFJlYXNzaWduRGVhZGxpbmUgPSBnZXRTdW1taXREYXlzRGlmZihcbiAgICBub3csXG4gICAgcmVhc3NpZ25EYXRlLFxuICAgIHN1bW1pdC50aW1lX3pvbmU/Lm5hbWVcbiAgKTtcblxuICBjb25zdCBpc1Bhc3QgPSBjaGVja1N1bW1pdFBhc3Qoc3VtbWl0LCBub3cpO1xuICBjb25zdCBpc1N0YXJ0ZWQgPSBjaGVja1N1bW1pdFN0YXJ0ZWQoc3VtbWl0LCBub3cpO1xuICBjb25zdCBpc1JlYXNzaWduYWJsZSA9IHJlYXNzaWduRGF0ZSA+IG5vdztcblxuICByZXR1cm4ge1xuICAgIG5hbWU6IHN1bW1pdD8ubmFtZSxcbiAgICBub3csXG4gICAgbG9jYXRpb24sXG4gICAgZm9ybWF0dGVkRGF0ZSxcbiAgICByZWFzc2lnbkRhdGUsXG4gICAgZm9ybWF0dGVkUmVhc3NpZ25EYXRlLFxuICAgIGRheXNVbnRpbFJlYXNzaWduRGVhZGxpbmUsXG4gICAgaXNQYXN0LFxuICAgIGlzU3RhcnRlZCxcbiAgICBpc1JlYXNzaWduYWJsZVxuICB9O1xufTtcbiIsImltcG9ydCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgaTE4biBmcm9tIFwiLi4vaTE4blwiO1xuaW1wb3J0IHsgdXNlU3VtbWl0RGV0YWlscyB9IGZyb20gXCIuL3N1bW1pdFV0aWxzXCI7XG5pbXBvcnQge1xuICBTVEFUVVNfQ0FOQ0VMTEVELFxuICBTVEFUVVNfQ09NUExFVEUsXG4gIFNUQVRVU19JTkNPTVBMRVRFLFxuICBTVEFUVVNfVU5BU1NJR05FRFxufSBmcm9tIFwiLi9jb25zdGFudHNcIjtcblxuZXhwb3J0IGNvbnN0IHN0YXR1c0RhdGEgPSB7XG4gIFtTVEFUVVNfVU5BU1NJR05FRF06IHtcbiAgICB0eXBlOiBTVEFUVVNfVU5BU1NJR05FRCxcbiAgICB0ZXh0OiBpMThuLnQoXCJ0aWNrZXRfc3RhdHVzLnVuYXNzaWduZWRcIilcbiAgfSxcbiAgW1NUQVRVU19JTkNPTVBMRVRFXToge1xuICAgIHR5cGU6IFNUQVRVU19JTkNPTVBMRVRFLFxuICAgIHRleHQ6IGkxOG4udChcInRpY2tldF9zdGF0dXMuaW5jb21wbGV0ZVwiKVxuICB9LFxuICBbU1RBVFVTX0NPTVBMRVRFXToge1xuICAgIHR5cGU6IFNUQVRVU19DT01QTEVURSxcbiAgICB0ZXh0OiBpMThuLnQoXCJ0aWNrZXRfc3RhdHVzLmNvbXBsZXRlXCIpXG4gIH0sXG4gIFtTVEFUVVNfQ0FOQ0VMTEVEXToge1xuICAgIHR5cGU6IFNUQVRVU19DQU5DRUxMRUQsXG4gICAgdGV4dDogaTE4bi50KFwidGlja2V0X3N0YXR1cy5jYW5jZWxsZWRcIilcbiAgfVxufTtcbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRTdGF0dXNLZXkgPSAodGlja2V0KSA9PiB7XG4gIGlmICghdGlja2V0LmlzX2FjdGl2ZSkgcmV0dXJuIFNUQVRVU19DQU5DRUxMRUQ7XG5cbiAgaWYgKHRpY2tldC5vd25lcl9pZCA9PT0gMCkgcmV0dXJuIFNUQVRVU19VTkFTU0lHTkVEO1xuXG4gIGlmICghdGlja2V0Lm93bmVyPy5maXJzdF9uYW1lIHx8ICF0aWNrZXQub3duZXI/Lmxhc3RfbmFtZSlcbiAgICByZXR1cm4gU1RBVFVTX0lOQ09NUExFVEU7XG5cbiAgaWYgKHRpY2tldC5vd25lciAmJiB0aWNrZXQub3duZXI/LnN0YXR1cyA9PT0gXCJJbmNvbXBsZXRlXCIpXG4gICAgcmV0dXJuIFNUQVRVU19JTkNPTVBMRVRFO1xuXG4gIGlmICh0aWNrZXQub3duZXIgJiYgdGlja2V0Lm93bmVyPy5zdGF0dXMgPT09IFwiQ29tcGxldGVcIilcbiAgICByZXR1cm4gU1RBVFVTX0NPTVBMRVRFO1xuXG4gIHJldHVybiBTVEFUVVNfSU5DT01QTEVURTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRTdGF0dXNEYXRhID0gKHRpY2tldCwgaXNTdW1taXRQYXN0KSA9PlxuICBzdGF0dXNEYXRhW2dldFRpY2tldFN0YXR1c0tleSh0aWNrZXQsIGlzU3VtbWl0UGFzdCldO1xuXG5leHBvcnQgY29uc3QgZ2V0VGlja2V0Um9sZSA9ICh0aWNrZXQpID0+IHtcbiAgaWYgKCF0aWNrZXQuYmFkZ2UpIHJldHVybiBudWxsO1xuXG4gIGNvbnN0IHsgZmVhdHVyZXMgfSA9IHRpY2tldC5iYWRnZTtcblxuICBpZiAoZmVhdHVyZXMubGVuZ3RoID4gMClcbiAgICByZXR1cm4gZmVhdHVyZXMubWFwKChmZWF0dXJlKSA9PiBmZWF0dXJlLm5hbWUpLmpvaW4oXCIsIFwiKTtcblxuICByZXR1cm4gbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRUeXBlID0gKHRpY2tldCwgc3VtbWl0KSA9PlxuICBzdW1taXQudGlja2V0X3R5cGVzLmZpbmQoKHR5cGUpID0+IHR5cGUuaWQgPT09IHRpY2tldC50aWNrZXRfdHlwZV9pZCk7XG5cbmV4cG9ydCBjb25zdCBpc1RpY2tldFJlZnVuZGFibGUgPSAodGlja2V0KSA9PlxuICB0aWNrZXQ/LmZpbmFsX2Ftb3VudCA+IDAgJiZcbiAgdGlja2V0Py5maW5hbF9hbW91bnQgPiB0aWNrZXQ/LnJlZnVuZGVkX2Ftb3VudCAmJlxuICAhdGlja2V0Py5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoKHJyKSA9PiByci5zdGF0dXMgPT09IFwiUmVxdWVzdGVkXCIpO1xuXG5leHBvcnQgY29uc3QgdGlja2V0c1JlZnVuZGFibGUgPSAodGlja2V0cykgPT5cbiAgdGlja2V0cz8uZmlsdGVyKCh0aWNrZXQpID0+IGlzVGlja2V0UmVmdW5kYWJsZSh0aWNrZXQpKS5sZW5ndGggfHwgMDtcblxuZXhwb3J0IGNvbnN0IHVzZVRpY2tldERldGFpbHMgPSAoeyB0aWNrZXQsIHN1bW1pdCB9KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBpc1Bhc3QsXG4gICAgaXNTdGFydGVkLFxuICAgIGlzUmVhc3NpZ25hYmxlLFxuICAgIGZvcm1hdHRlZERhdGUsXG4gICAgZm9ybWF0dGVkUmVhc3NpZ25EYXRlLFxuICAgIGRheXNVbnRpbFJlYXNzaWduRGVhZGxpbmVcbiAgfSA9IHVzZVN1bW1pdERldGFpbHMoeyBzdW1taXQgfSk7XG4gIGNvbnN0IFtzaG93UG9wdXAsIHNldFNob3dQb3B1cF0gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgaWYgKCFzdW1taXQgfHwgIXRpY2tldCkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3Qgc3RhdHVzID0gZ2V0VGlja2V0U3RhdHVzRGF0YSh0aWNrZXQsIGlzUGFzdCk7XG4gIGNvbnN0IHJvbGUgPSBnZXRUaWNrZXRSb2xlKHRpY2tldCk7XG4gIGNvbnN0IHR5cGUgPSBzdW1taXQudGlja2V0X3R5cGVzLmZpbmQoXG4gICAgKHR5cGUpID0+IHR5cGUuaWQgPT09IHRpY2tldC50aWNrZXRfdHlwZS5pZFxuICApO1xuXG4gIGNvbnN0IGlzQWN0aXZlID0gdGlja2V0LmlzX2FjdGl2ZSAmJiBzdGF0dXMudHlwZSAhPT0gU1RBVFVTX0NBTkNFTExFRDtcbiAgY29uc3QgaXNVbmFzc2lnbmVkID0gc3RhdHVzLnR5cGUgPT09IFNUQVRVU19VTkFTU0lHTkVEO1xuICBjb25zdCBpc1JlZnVuZGFibGUgPSBpc1RpY2tldFJlZnVuZGFibGUodGlja2V0KTtcblxuICBjb25zdCBhbGxvd3NEZWxlZ2F0ZSA9XG4gICAgKHRpY2tldC50aWNrZXRfdHlwZS5hbGxvd3NfdG9fZGVsZWdhdGUgfHxcbiAgICAgIHRpY2tldC5wcm9tb19jb2RlPy5hbGxvd3NfdG9fZGVsZWdhdGUpICYmXG4gICAgIWlzVW5hc3NpZ25lZCAmJlxuICAgICF0aWNrZXQub3duZXI/Lm1hbmFnZXI/LmlkICYmXG4gICAgIXRpY2tldC5vd25lcj8ubWFuYWdlcl9pZDtcblxuICBjb25zdCB0b2dnbGVQb3B1cCA9ICgpID0+IHNldFNob3dQb3B1cCghc2hvd1BvcHVwKTtcblxuICBjb25zdCBoYW5kbGVDbGljayA9ICgpID0+IHtcbiAgICBpZiAoIWlzQWN0aXZlKSByZXR1cm47XG5cbiAgICB0b2dnbGVQb3B1cCgpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVBvcHVwQ2xvc2UgPSAoKSA9PiB0b2dnbGVQb3B1cCgpO1xuXG4gIHJldHVybiB7XG4gICAgc3RhdHVzLFxuICAgIHJvbGUsXG4gICAgdHlwZSxcbiAgICBpc1N1bW1pdFBhc3Q6IGlzUGFzdCxcbiAgICBpc1N1bW1pdFN0YXJ0ZWQ6IGlzU3RhcnRlZCxcbiAgICBpc0FjdGl2ZSxcbiAgICBpc1VuYXNzaWduZWQsXG4gICAgaXNSZWFzc2lnbmFibGUsXG4gICAgaXNSZWZ1bmRhYmxlLFxuICAgIGFsbG93c0RlbGVnYXRlLFxuICAgIGZvcm1hdHRlZERhdGUsXG4gICAgZm9ybWF0dGVkUmVhc3NpZ25EYXRlLFxuICAgIGRheXNVbnRpbFJlYXNzaWduRGVhZGxpbmUsXG4gICAgc2hvd1BvcHVwLFxuICAgIHNldFNob3dQb3B1cCxcbiAgICB0b2dnbGVQb3B1cCxcbiAgICBoYW5kbGVDbGljayxcbiAgICBoYW5kbGVQb3B1cENsb3NlXG4gIH07XG59O1xuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcIk11aU91dGxpbmVkSW5wdXQtbm90Y2hlZE91dGxpbmVfX19Sb2ltUlwiO1xudmFyIF8yID0gXCJNdWlQaWNrZXJzQ2FsZW5kYXJIZWFkZXItbGFiZWxDb250YWluZXJfX19vb0kwVlwiO1xudmFyIF8zID0gXCJjYWxlbmRhckRpc3BsYXlfX19pbV9qaFwiO1xudmFyIF80ID0gXCJjb250YWluZXJfX19OM1k0WFwiO1xudmFyIF81ID0gXCJkYXRlUGlja2VyQ29udGFpbmVyX19fSlcybE9cIjtcbnZhciBfNiA9IFwiZGF0ZXBpY2tlckNsb3NlX19fVjlnSENcIjtcbnZhciBfNyA9IFwiZmlsdGVyQ29udGFpbmVyX19fckdwWVZcIjtcbnZhciBfOCA9IFwiZmlsdGVyRGF0ZUxhYmVsX19faWZENHBcIjtcbnZhciBfOSA9IFwiZmlsdGVySWNvbl9fX2wyMUtJXCI7XG52YXIgX2EgPSBcImZpbHRlckxhYmVsX19fX1Awd25cIjtcbnZhciBfYiA9IFwiZmlsdGVyTGlzdENvbnRhaW5lcl9fX1ZtZEdxXCI7XG52YXIgX2MgPSBcImZpbHRlck51bUFjdGl2ZV9fX1Z1SENKXCI7XG52YXIgX2QgPSBcImZpbHRlclNvcnRDb250YWluZXJfX19hckJ2UVwiO1xudmFyIF9lID0gXCJsYWJlbF9fX3lORnlqXCI7XG52YXIgX2YgPSBcInNob3dEYXRlUGlja2VyX19fVXBRYnBcIjtcbnZhciBfMTAgPSBcInNvcnRDb250YWluZXJfX19sUnNqVVwiO1xudmFyIF8xMSA9IFwic29ydEljb25fX19mVlY1S1wiO1xudmFyIF8xMiA9IFwic29ydExhYmVsX19fVXFMVENcIjtcbnZhciBfMTMgPSBcInNvcnRMaXN0Q29udGFpbmVyX19fY21uQkRcIjtcbmV4cG9ydCB7IF8xIGFzIFwiTXVpT3V0bGluZWRJbnB1dC1ub3RjaGVkT3V0bGluZVwiLCBfMiBhcyBcIk11aVBpY2tlcnNDYWxlbmRhckhlYWRlci1sYWJlbENvbnRhaW5lclwiLCBfMyBhcyBcImNhbGVuZGFyRGlzcGxheVwiLCBfNCBhcyBcImNvbnRhaW5lclwiLCBfNSBhcyBcImRhdGVQaWNrZXJDb250YWluZXJcIiwgXzYgYXMgXCJkYXRlcGlja2VyQ2xvc2VcIiwgXzcgYXMgXCJmaWx0ZXJDb250YWluZXJcIiwgXzggYXMgXCJmaWx0ZXJEYXRlTGFiZWxcIiwgXzkgYXMgXCJmaWx0ZXJJY29uXCIsIF9hIGFzIFwiZmlsdGVyTGFiZWxcIiwgX2IgYXMgXCJmaWx0ZXJMaXN0Q29udGFpbmVyXCIsIF9jIGFzIFwiZmlsdGVyTnVtQWN0aXZlXCIsIF9kIGFzIFwiZmlsdGVyU29ydENvbnRhaW5lclwiLCBfZSBhcyBcImxhYmVsXCIsIF9mIGFzIFwic2hvd0RhdGVQaWNrZXJcIiwgXzEwIGFzIFwic29ydENvbnRhaW5lclwiLCBfMTEgYXMgXCJzb3J0SWNvblwiLCBfMTIgYXMgXCJzb3J0TGFiZWxcIiwgXzEzIGFzIFwic29ydExpc3RDb250YWluZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiZXJyb3JMYWJlbF9fX25vY3lYXCI7XG5leHBvcnQgeyBfMSBhcyBcImVycm9yTGFiZWxcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwibXVsdGlzdGVwQ2xvc2VJY29uX19fcWM2TkRcIjtcbnZhciBfMiA9IFwibXVsdGlzdGVwQ29udGFpbmVyX19fZFBhUzVcIjtcbmV4cG9ydCB7IF8xIGFzIFwibXVsdGlzdGVwQ2xvc2VJY29uXCIsIF8yIGFzIFwibXVsdGlzdGVwQ29udGFpbmVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcIm9yZGVyRGV0YWlsc01tb3VudF9fX3Iza1JBXCI7XG52YXIgXzIgPSBcIm9yZGVyRGV0YWlsc1RpY2tldHNfX19tNElqS1wiO1xudmFyIF8zID0gXCJvcmRlclN1bW1hcnlCdXR0b25fX191eGpodFwiO1xudmFyIF80ID0gXCJvcmRlclN1bW1hcnlQdXJjaGFzZWRJbmZvX19fX1JCWEVcIjtcbnZhciBfNSA9IFwib3JkZXJTdW1tYXJ5VGFibGVfX19ZRG54VlwiO1xudmFyIF82ID0gXCJvcmRlclN1bW1hcnlXcmFwcGVyX19fUndJRVJcIjtcbnZhciBfNyA9IFwicmVmdW5kRGlzYWJsZWRfX19qdnJrM1wiO1xuZXhwb3J0IHsgXzEgYXMgXCJvcmRlckRldGFpbHNNbW91bnRcIiwgXzIgYXMgXCJvcmRlckRldGFpbHNUaWNrZXRzXCIsIF8zIGFzIFwib3JkZXJTdW1tYXJ5QnV0dG9uXCIsIF80IGFzIFwib3JkZXJTdW1tYXJ5UHVyY2hhc2VkSW5mb1wiLCBfNSBhcyBcIm9yZGVyU3VtbWFyeVRhYmxlXCIsIF82IGFzIFwib3JkZXJTdW1tYXJ5V3JhcHBlclwiLCBfNyBhcyBcInJlZnVuZERpc2FibGVkXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImFzc2lnblRpY2tldEJ1dHRvbl9fX3p6THNjXCI7XG52YXIgXzIgPSBcImJsYWNrQnV0dG9uX19fbDloajlcIjtcbnZhciBfMyA9IFwiY29weUljb25fX19Oa0hHT1wiO1xudmFyIF80ID0gXCJkaXNwbGF5X25vbmVfX19DcXBMM1wiO1xudmFyIF81ID0gXCJsYWJlbF9fX3pYRFd6XCI7XG52YXIgXzYgPSBcIm9yZGVyVGlja2V0Q29udGFpbmVyX19fWkpMemtcIjtcbnZhciBfNyA9IFwib3JkZXJUaWNrZXRJbmZvX19fZ2VtcUJcIjtcbnZhciBfOCA9IFwib3JkZXJUaWNrZXRJbmZvQ29udGFpbmVyX19fX3A2NlZcIjtcbnZhciBfOSA9IFwib3JkZXJUaWNrZXROb0NvbnRhaW5lcl9fX3Zxb2hOXCI7XG52YXIgX2EgPSBcIm9yZGVyVGlja2V0TnVtYmVyVHJ1bmNhdGVkX19fSFhtZHdcIjtcbnZhciBfYiA9IFwib3JkZXJXcmFwcGVyX19feURCQW9cIjtcbnZhciBfYyA9IFwicmVhc3NpZ25CdXR0b25fX19Sb2pNNVwiO1xudmFyIF9kID0gXCJyZWZ1bmRCdXR0b25zX19fakRsNEhcIjtcbnZhciBfZSA9IFwicmV2ZXJzZWRfX19ERmVhX1wiO1xudmFyIF9mID0gXCJ0YWJCdXR0b25zX19feFR5SkFcIjtcbnZhciBfMTAgPSBcInRpY2tldEFjdGlvbkJ1dHRvbnNfX19ycFNNUVwiO1xudmFyIF8xMSA9IFwidGlja2V0TGlzdENvbnRhaW5lcl9fX2NmbXJyXCI7XG52YXIgXzEyID0gXCJ0aWNrZXROb19fX2EyaU05XCI7XG52YXIgXzEzID0gXCJ0aWNrZXRPd25lckVtYWlsX19fWnQ0T0VcIjtcbnZhciBfMTQgPSBcInRpY2tldFRpY2tldFR5cGVfX19acV9mMFwiO1xudmFyIF8xNSA9IFwidmlld0ZpbmlzaFRpY2tldEJ1dHRvbl9fX0hGNkltXCI7XG52YXIgXzE2ID0gXCJ2aWV3TW9yZUJ1dHRvbl9fX0tfMXpUXCI7XG5leHBvcnQgeyBfMSBhcyBcImFzc2lnblRpY2tldEJ1dHRvblwiLCBfMiBhcyBcImJsYWNrQnV0dG9uXCIsIF8zIGFzIFwiY29weUljb25cIiwgXzQgYXMgXCJkaXNwbGF5X25vbmVcIiwgXzUgYXMgXCJsYWJlbFwiLCBfNiBhcyBcIm9yZGVyVGlja2V0Q29udGFpbmVyXCIsIF83IGFzIFwib3JkZXJUaWNrZXRJbmZvXCIsIF84IGFzIFwib3JkZXJUaWNrZXRJbmZvQ29udGFpbmVyXCIsIF85IGFzIFwib3JkZXJUaWNrZXROb0NvbnRhaW5lclwiLCBfYSBhcyBcIm9yZGVyVGlja2V0TnVtYmVyVHJ1bmNhdGVkXCIsIF9iIGFzIFwib3JkZXJXcmFwcGVyXCIsIF9jIGFzIFwicmVhc3NpZ25CdXR0b25cIiwgX2QgYXMgXCJyZWZ1bmRCdXR0b25zXCIsIF9lIGFzIFwicmV2ZXJzZWRcIiwgX2YgYXMgXCJ0YWJCdXR0b25zXCIsIF8xMCBhcyBcInRpY2tldEFjdGlvbkJ1dHRvbnNcIiwgXzExIGFzIFwidGlja2V0TGlzdENvbnRhaW5lclwiLCBfMTIgYXMgXCJ0aWNrZXROb1wiLCBfMTMgYXMgXCJ0aWNrZXRPd25lckVtYWlsXCIsIF8xNCBhcyBcInRpY2tldFRpY2tldFR5cGVcIiwgXzE1IGFzIFwidmlld0ZpbmlzaFRpY2tldEJ1dHRvblwiLCBfMTYgYXMgXCJ2aWV3TW9yZUJ1dHRvblwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJhY3Rpb25CdXR0b25zX19fdTdtUFNcIjtcbnZhciBfMiA9IFwiY2FuY2VsQnV0dG9uX19feWZoWWJcIjtcbnZhciBfMyA9IFwiY29udGludWVCdXR0b25fX19OeVgzc1wiO1xudmFyIF80ID0gXCJkZWxldGVJY29uX19fRlN3eWVcIjtcbnZhciBfNSA9IFwicmVmdW5kRXJyb3JNc2dfX19BYWh6clwiO1xudmFyIF82ID0gXCJyZWZ1bmRIZWFkZXJzX19fSFZJbWtcIjtcbnZhciBfNyA9IFwicmVmdW5kU3VjY2Vzc2Z1bF9fX3pyRFFZXCI7XG52YXIgXzggPSBcInJlZnVuZFRleHRfX19hRW5MOVwiO1xudmFyIF85ID0gXCJyZWZ1bmRUaWNrZXRCb3hDb250YWluZXJfX195YTYxM1wiO1xudmFyIF9hID0gXCJzdWNjZXNzTXNnX19fSHRNc2VcIjtcbnZhciBfYiA9IFwic3VjY2Vzc01zZzJfX19RNnpuYVwiO1xudmFyIF9jID0gXCJ0aWNrZXROb19fX19FQUQ0XCI7XG5leHBvcnQgeyBfMSBhcyBcImFjdGlvbkJ1dHRvbnNcIiwgXzIgYXMgXCJjYW5jZWxCdXR0b25cIiwgXzMgYXMgXCJjb250aW51ZUJ1dHRvblwiLCBfNCBhcyBcImRlbGV0ZUljb25cIiwgXzUgYXMgXCJyZWZ1bmRFcnJvck1zZ1wiLCBfNiBhcyBcInJlZnVuZEhlYWRlcnNcIiwgXzcgYXMgXCJyZWZ1bmRTdWNjZXNzZnVsXCIsIF84IGFzIFwicmVmdW5kVGV4dFwiLCBfOSBhcyBcInJlZnVuZFRpY2tldEJveENvbnRhaW5lclwiLCBfYSBhcyBcInN1Y2Nlc3NNc2dcIiwgX2IgYXMgXCJzdWNjZXNzTXNnMlwiLCBfYyBhcyBcInRpY2tldE5vXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcIndyYXBwZXJfX19Fd09SelwiO1xuZXhwb3J0IHsgXzEgYXMgXCJ3cmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImluZm9Ob3RlX19faTFYWTlcIjtcbnZhciBfMiA9IFwid3JhcHBlcl9fX01BdU5TXCI7XG5leHBvcnQgeyBfMSBhcyBcImluZm9Ob3RlXCIsIF8yIGFzIFwid3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJhY3Rpb25CdXR0b25zQ29udGFpbmVyX19fQXV2cm5cIjtcbnZhciBfMiA9IFwiYWRkaXRpb25hbERldGFpbHNfX19tUDFpSlwiO1xudmFyIF8zID0gXCJhdHRlbmRlZUNvbnRhaW5lcl9fX1EwVlV6XCI7XG52YXIgXzQgPSBcImF0dGVuZGVlSW5mb1RpdGxlX19fTG1ybTRcIjtcbnZhciBfNSA9IFwiY2FuY2VsQnRuX19fZ2dDZGpcIjtcbnZhciBfNiA9IFwiY2xvc2VCdG5fX19XTkpsRVwiO1xudmFyIF83ID0gXCJjb3B5QnRuX19fX3V0QTZcIjtcbnZhciBfOCA9IFwiZGVsZWdhdGVkVG9fX19TR1ZRSVwiO1xudmFyIF85ID0gXCJkb3dubG9hZEJ0bl9fX3FqWWh6XCI7XG52YXIgX2EgPSBcImZvb3Rlcl9fX05JTTdkXCI7XG52YXIgX2IgPSBcImhlYWRlcl9fX0F1Z256XCI7XG52YXIgX2MgPSBcIm9yZGVyTnVtYmVyX19fTDVRNWFcIjtcbnZhciBfZCA9IFwicXJDb2RlX19fZndxWnFcIjtcbnZhciBfZSA9IFwicXJOb3RlX19fR2M3S25cIjtcbnZhciBfZiA9IFwic2F2ZUJ0bl9fX05wT0VWXCI7XG52YXIgXzEwID0gXCJzZW5kQnRuX19fa29XTTJcIjtcbnZhciBfMTEgPSBcInN0YXR1c19fX2t3Qzh5XCI7XG52YXIgXzEyID0gXCJzdWJ0aXRsZV9fX3lfTnVPXCI7XG52YXIgXzEzID0gXCJ0aWNrZXREZXRhaWxDb250YWluZXJfX19iMlRMUlwiO1xudmFyIF8xNCA9IFwidGl0bGVfX193UXpVTlwiO1xuZXhwb3J0IHsgXzEgYXMgXCJhY3Rpb25CdXR0b25zQ29udGFpbmVyXCIsIF8yIGFzIFwiYWRkaXRpb25hbERldGFpbHNcIiwgXzMgYXMgXCJhdHRlbmRlZUNvbnRhaW5lclwiLCBfNCBhcyBcImF0dGVuZGVlSW5mb1RpdGxlXCIsIF81IGFzIFwiY2FuY2VsQnRuXCIsIF82IGFzIFwiY2xvc2VCdG5cIiwgXzcgYXMgXCJjb3B5QnRuXCIsIF84IGFzIFwiZGVsZWdhdGVkVG9cIiwgXzkgYXMgXCJkb3dubG9hZEJ0blwiLCBfYSBhcyBcImZvb3RlclwiLCBfYiBhcyBcImhlYWRlclwiLCBfYyBhcyBcIm9yZGVyTnVtYmVyXCIsIF9kIGFzIFwicXJDb2RlXCIsIF9lIGFzIFwicXJOb3RlXCIsIF9mIGFzIFwic2F2ZUJ0blwiLCBfMTAgYXMgXCJzZW5kQnRuXCIsIF8xMSBhcyBcInN0YXR1c1wiLCBfMTIgYXMgXCJzdWJ0aXRsZVwiLCBfMTMgYXMgXCJ0aWNrZXREZXRhaWxDb250YWluZXJcIiwgXzE0IGFzIFwidGl0bGVcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiYnV0dG9uQ2FuY2VsbGVkX19fRXJsRFpcIjtcbnZhciBfMiA9IFwiYnV0dG9uQ29tcGxldGVfX19sbFdrWlwiO1xudmFyIF8zID0gXCJidXR0b25JbmNvbXBsZXRlX19fVG9sSGdcIjtcbnZhciBfNCA9IFwiYnV0dG9uUGlsbF9fX3pxMnRjXCI7XG52YXIgXzUgPSBcImJ1dHRvblJlZnVuZFJlcXVlc3RlZF9fX3BXdDMwXCI7XG52YXIgXzYgPSBcImJ1dHRvblVuYXNzaWduZWRfX19ZRGQ4WFwiO1xudmFyIF83ID0gXCJ0aWNrZXRTdGF0dXNDb250YWluZXJfX19xajZmYlwiO1xuZXhwb3J0IHsgXzEgYXMgXCJidXR0b25DYW5jZWxsZWRcIiwgXzIgYXMgXCJidXR0b25Db21wbGV0ZVwiLCBfMyBhcyBcImJ1dHRvbkluY29tcGxldGVcIiwgXzQgYXMgXCJidXR0b25QaWxsXCIsIF81IGFzIFwiYnV0dG9uUmVmdW5kUmVxdWVzdGVkXCIsIF82IGFzIFwiYnV0dG9uVW5hc3NpZ25lZFwiLCBfNyBhcyBcInRpY2tldFN0YXR1c0NvbnRhaW5lclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJub09yZGVyc0ZvdW5kX19fQW9nMnBcIjtcbnZhciBfMiA9IFwic3VtbWl0VGl0bGVEYXRlX19fWjE5UG1cIjtcbnZhciBfMyA9IFwid2lkZ2V0SGVhZGVyX19feVk1Z2VcIjtcbmV4cG9ydCB7IF8xIGFzIFwibm9PcmRlcnNGb3VuZFwiLCBfMiBhcyBcInN1bW1pdFRpdGxlRGF0ZVwiLCBfMyBhcyBcIndpZGdldEhlYWRlclwiIH1cbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RXaXRob3V0UHJvcGVydGllc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2hlY2tDaXJjbGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9DbG9zZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NvbnRlbnRDb3B5XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRGVsZXRlT3V0bGluZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Vycm9yXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRmlsdGVyTGlzdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ltcG9ydEV4cG9ydFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL1NlYXJjaFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvQ2hlY2tib3hcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9EaXZpZGVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvRHJhd2VyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvSW5wdXRCYXNlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9UYWJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9UYWJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvdXNlTWVkaWFRdWVyeVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL3gtZGF0ZS1waWNrZXJzL0FkYXB0ZXJEYXlqc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL3gtZGF0ZS1waWNrZXJzL0RhdGVQaWNrZXJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS94LWRhdGUtcGlja2Vycy9Mb2NhbGl6YXRpb25Qcm92aWRlclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAcmVkdXhqcy90b29sa2l0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBzZW50cnkvcmVhY3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZGF5anNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZm9ybWlrXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImkxOG5leHRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiaTE4bmV4dC1icm93c2VyLWxhbmd1YWdlZGV0ZWN0b3JcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiaWR0b2tlbi12ZXJpZmllclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb21lbnQtdGltZXpvbmVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9jb21wb25lbnRzL3Jhdy1odG1sXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvYWN0aW9uc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L21ldGhvZHNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9hY3Rpb25zXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvcXVlcnktYWN0aW9uc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJwLWxpbWl0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInByb3AtdHlwZXNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QtaTE4bmV4dFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC1pbmZpbml0ZS1zY3JvbGwtY29tcG9uZW50XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LXFyLWNvZGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QtcmVkdXhcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QvanN4LXJ1bnRpbWVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVkdXhcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVkdXgtcGVyc2lzdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWR1eC1wZXJzaXN0L2ludGVncmF0aW9uL3JlYWN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlZHV4LXBlcnNpc3QvbGliL3N0b3JhZ2VcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwieXVwXCIpOyIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0Ly8gbm8gbW9kdWxlLmlkIG5lZWRlZFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCIvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5uID0gKG1vZHVsZSkgPT4ge1xuXHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cblx0XHQoKSA9PiAobW9kdWxlWydkZWZhdWx0J10pIDpcblx0XHQoKSA9PiAobW9kdWxlKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgeyBhOiBnZXR0ZXIgfSk7XG5cdHJldHVybiBnZXR0ZXI7XG59OyIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IChleHBvcnRzLCBkZWZpbml0aW9uKSA9PiB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgUHJvdmlkZXIgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IFBlcnNpc3RHYXRlIH0gZnJvbSBcInJlZHV4LXBlcnNpc3QvaW50ZWdyYXRpb24vcmVhY3RcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCAsIFN0eWxlZEVuZ2luZVByb3ZpZGVyIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZUluaXRTdG9yZSB9IGZyb20gXCIuL3N0b3JlXCI7XG5pbXBvcnQgTXlPcmRlcnNUaWNrZXRzIGZyb20gXCIuL2NvbXBvbmVudHMvTXlPcmRlcnNUaWNrZXRzXCI7XG5pbXBvcnQgeyBSRVNFVF9TVEFURSwgc2V0UmVkdWNlclN0YXRlIH0gZnJvbSBcIi4vYWN0aW9uc1wiO1xuXG5jb25zdCBNeU9yZGVyc015VGlja2V0c1dpZGdldCA9IChwcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgbG9naW5VcmwsXG4gICAgc3VwcG9ydEVtYWlsLFxuICAgIHN1bW1pdCxcbiAgICBhcGlCYXNlVXJsLFxuICAgIHVzZXIsXG4gICAgY2xpZW50SWQsXG4gICAgdXBkYXRlUHJvZmlsZVxuICB9ID0gcHJvcHM7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICBjb25zdCB7IHN0b3JlLCBwZXJzaXN0b3IgfSA9IHVzZUluaXRTdG9yZSh7XG4gICAgbG9naW5VcmwsXG4gICAgc3VwcG9ydEVtYWlsLFxuICAgIHN1bW1pdCxcbiAgICB1c2VyLFxuICAgIGFwaUJhc2VVcmwsXG4gICAgY2xpZW50SWQsXG4gICAgdXBkYXRlUHJvZmlsZVxuICB9KTtcblxuICBjb25zdCBoYW5kbGVCZWZvcmVMaWZ0ID0gKCkgPT4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7XG4gICAgY29uc3QgZmx1c2ggPSBwYXJhbXMuaGFzKFwiZmx1c2hTdGF0ZVwiKTtcbiAgICBpZiAoZmx1c2gpIHN0b3JlLmRpc3BhdGNoKHsgdHlwZTogUkVTRVRfU1RBVEUsIHBheWxvYWQ6IG51bGwgfSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzdG9yZS5kaXNwYXRjaChzZXRSZWR1Y2VyU3RhdGUoc3VtbWl0LCB1c2VyKSk7XG4gIH0sIFtzdW1taXQsIHVzZXJdKTtcblxuICByZXR1cm4gKFxuICAgIDxQcm92aWRlciBzdG9yZT17c3RvcmV9PlxuICAgICAgPFBlcnNpc3RHYXRlXG4gICAgICAgIG9uQmVmb3JlTGlmdD17aGFuZGxlQmVmb3JlTGlmdH1cbiAgICAgICAgbG9hZGluZz17bnVsbH1cbiAgICAgICAgcGVyc2lzdG9yPXtwZXJzaXN0b3J9XG4gICAgICA+XG4gICAgICAgIDxTdHlsZWRFbmdpbmVQcm92aWRlciBpbmplY3RGaXJzdD5cbiAgICAgICAgICA8Qm94IHN4PXt7IHBhZGRpbmc6IHsgeHM6IDIsIG1kOiAwLCBsZzogMCB9IH19PlxuICAgICAgICAgICAgPGgzPnt0KFwib3JkZXJzLnRpdGxlXCIpfTwvaDM+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgPE15T3JkZXJzVGlja2V0c1xuICAgICAgICAgICAgbG9naW5Vcmw9e2xvZ2luVXJsfVxuICAgICAgICAgICAgc3VwcG9ydEVtYWlsPXtzdXBwb3J0RW1haWx9XG4gICAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICAgIGFwaUJhc2VVcmw9e2FwaUJhc2VVcmx9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9TdHlsZWRFbmdpbmVQcm92aWRlcj5cbiAgICAgIDwvUGVyc2lzdEdhdGU+XG4gICAgPC9Qcm92aWRlcj5cbiAgKTtcbn07XG5cbk15T3JkZXJzTXlUaWNrZXRzV2lkZ2V0LnByb3BUeXBlcyA9IHtcbiAgbG9naW5Vcmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHN1cHBvcnRFbWFpbDogUHJvcFR5cGVzLnN0cmluZyxcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICBhcGlCYXNlVXJsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICB1c2VyOiBQcm9wVHlwZXMub2JqZWN0LFxuICBjbGllbnRJZDogUHJvcFR5cGVzLnN0cmluZyxcbiAgdXBkYXRlUHJvZmlsZTogUHJvcFR5cGVzLmZ1bmMsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBNeU9yZGVyc015VGlja2V0c1dpZGdldDtcbiJdLCJuYW1lcyI6WyJhdXRoRXJyb3JIYW5kbGVyIiwiZ2V0UmVxdWVzdCIsImRlbGV0ZVJlcXVlc3QiLCJjcmVhdGVBY3Rpb24iLCJzdG9wTG9hZGluZyIsInN0YXJ0TG9hZGluZyIsInB1dFJlcXVlc3QiLCJwTGltaXQiLCJnZXRJZFRva2VuIiwiSWRUb2tlblZlcmlmaWVyIiwiZ2V0QWNjZXNzVG9rZW5TYWZlbHkiLCJGSVJTVF9QQUdFIiwiREVGQVVMVF9JVEVNU19QRVJfUEFHRSIsIk9ORV9QQUdFX05FWFQiLCJQUk9NSVNFX0JBVENIX0xJTUlUIiwiRklGVFlfUEVSX1BBR0UiLCJSRVNFVF9TVEFURSIsIlJFU0VUX0ZJTFRFUiIsIlNFVF9TVEFURSIsIkdFVF9VU0VSX09SREVSUyIsIlJFRlVORF9PUkRFUiIsIlNFVF9BQ1RJVkVfT1JERVJfSUQiLCJGSUxURVJfVVNFUl9PUkRFUlMiLCJHRVRfVElDS0VUUyIsIlVQREFURV9USUNLRVQiLCJSRUNFSVZFX1RJQ0tFVCIsIlJFTU9WRV9USUNLRVRfQVRURU5ERUUiLCJSRUZVTkRfVElDS0VUIiwiUkVTRU5EX05PVElGSUNBVElPTiIsIkdFVF9USUNLRVRTX0JZX09SREVSIiwiR0VUX1RJQ0tFVFNfQllfT1JERVJfRVJST1IiLCJHRVRfT1JERVJfVElDS0VUX0RFVEFJTFMiLCJHRVRfVElDS0VUX0RFVEFJTFMiLCJSRUNFSVZFX0VYVFJBX1FVRVNUSU9OUyIsIlRJQ0tFVF9BVFRFTkRFRV9LRVlTIiwiZW1haWwiLCJmaXJzdE5hbWUiLCJsYXN0TmFtZSIsImNvbXBhbnkiLCJkaXNjbGFpbWVyQWNjZXB0ZWQiLCJleHRyYVF1ZXN0aW9ucyIsIlVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURUQiLCJTVEFSVF9MT0FESU5HX0lEUF9QUk9GSUxFIiwiU1RPUF9MT0FESU5HX0lEUF9QUk9GSUxFIiwiVVBEQVRFX0lEUF9QUk9GSUxFIiwiU0VUX1VTRVIiLCJTRVRfU1VNTUlUIiwiR0VUX01BSU5fRVhUUkFfUVVFU1RJT05TIiwiUkVDRUlWRV9NQVJLRVRJTkdfU0VUVElOR1MiLCJDTEVBUl9NQVJLRVRJTkdfU0VUVElOR1MiLCJyZXNldFN0YXRlIiwiZGlzcGF0Y2giLCJyZXNldEZpbHRlciIsInNldFJlZHVjZXJTdGF0ZSIsInN1bW1pdCIsInVzZXIiLCJGSUxURVJfVkFSX0RBVEUiLCJGSUxURVJfVkFSX09SREVSX05VTUJFUiIsInBhcnNlRmlsdGVyIiwiZmlsdGVyT2JqIiwiZmlsdGVyIiwidHlwZSIsInB1c2giLCJjb25jYXQiLCJuYW1lIiwibG93ZXIiLCJ1cHBlciIsInZhbHVlIiwiZ2V0U29ydERpcmVjdGlvbiIsImRpcmVjdGlvbiIsImdldFVzZXJPcmRlcnMiLCJfcmVmIiwicGFnZSIsInBlclBhZ2UiLCJzb3J0IiwibmV4dCIsImdldFN0YXRlIiwiX3JlZjIiLCJhcGlCYXNlVXJsIiwid2lkZ2V0U3RhdGUiLCJhY2Nlc3NUb2tlbiIsImNhdGNoIiwiUHJvbWlzZSIsInJlamVjdCIsInBhcmFtcyIsImFjY2Vzc190b2tlbiIsIm9yZGVyIiwicmVsYXRpb25zIiwicGVyX3BhZ2UiLCJPYmplY3QiLCJrZXlzIiwibGVuZ3RoIiwiZmlsdGVycyIsImlkIiwidGhlbiIsInBheWxvYWQiLCJlIiwic2V0QWN0aXZlT3JkZXJJZCIsIm9yZGVySWQiLCJzZXRVc2VyIiwiZ2V0VXNlclRpY2tldHMiLCJfcmVmMyIsIl9yZWY0IiwidXNlclN0YXRlIiwidXNlclByb2ZpbGUiLCJleHBhbmQiLCJmaWVsZHMiLCJnZXRUaWNrZXRzQnlPcmRlciIsIl9yZWY1IiwiX3JlZjYiLCJyZXNlbmROb3RpZmljYXRpb24iLCJ0aWNrZXQiLCJfcmVmNyIsIm1lc3NhZ2UiLCJvcmRlcl9pZCIsInJlZnVuZFRpY2tldCIsIl9yZWY4IiwiX3JlZjkiLCJyZWZ1bmRCdWxrVGlja2V0cyIsIl9yZWYxMCIsInRpY2tldHMiLCJsaW1pdCIsImFsbFJlZnVuZFRpY2tldENhbGxzIiwibWFwIiwiYWxsIiwicmVzIiwic3VjY2Vzc2Z1bGx5UmVxdWVzdGVkIiwiciIsIl9yJHJlc3BvbnNlIiwicmVzcG9uc2UiLCJyZWZ1bmRfcmVxdWVzdHMiLCJ1cGRhdGVUaWNrZXRzUmVmdW5kUmVxdWVzdGVkIiwidGlja2V0c1JlZnVuZFJlcXVlc3RlZCIsImdldEV4dHJhUXVlc3Rpb25zIiwiYXR0ZW5kZWVJZCIsIl9yZWYxMSIsImVuZHBvaW50IiwiZ2V0VGlja2V0IiwidGlja2V0SWQiLCJfcmVmMTIiLCJmaW5hbGx5Iiwibm9ybWFsaXplVGlja2V0IiwiZW50aXR5Iiwibm9ybWFsaXplZEVudGl0eSIsIl9vYmplY3RTcHJlYWQiLCJhdHRlbmRlZV9jb21wYW55IiwiYXR0ZW5kZWVfY29tcGFueV9pZCIsInJlZnJlc2hQcm9maWxlIiwiZGF0YSIsInRpY2tldE93bmVyIiwiX3JlZjEzIiwiX3RpY2tldE93bmVyJG1hbmFnZXIiLCJ1cGRhdGVQcm9maWxlIiwiYXR0ZW5kZWVfZW1haWwiLCJhdHRlbmRlZV9maXJzdF9uYW1lIiwiYXR0ZW5kZWVfbGFzdF9uYW1lIiwiaGFzTWFuYWdlciIsIm1hbmFnZXIiLCJtYW5hZ2VyX2lkIiwiaXRzTWUiLCJwcm9maWxlQ2hhbmdlZCIsImZpcnN0X25hbWUiLCJsYXN0X25hbWUiLCJuZXdQcm9maWxlIiwic2F2ZVRpY2tldERldGFpbHMiLCJhbnN3ZXJzIiwiX3JlZjE0IiwiaWRUb2tlbiIsInZlcmlmaWVyIiwiand0IiwiZGVjb2RlIiwiY29uc29sZSIsImxvZyIsIm93bmVyIiwiUmVhY3QiLCJ1c2VTdGF0ZSIsIlByb3BUeXBlcyIsIlN0YWNrIiwidXNlVHJhbnNsYXRpb24iLCJkYXlqcyIsIkFkYXB0ZXJEYXlqcyIsIkxvY2FsaXphdGlvblByb3ZpZGVyIiwiRGF0ZVBpY2tlciIsIkNsb3NlSWNvbiIsImdldEVwb2NoTG93ZXJVcHBlckluU2Vjb25kcyIsInN0eWxlcyIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJGcmFnbWVudCIsIl9GcmFnbWVudCIsIkJhc2ljRGF0ZVBpY2tlciIsIm9uRmlsdGVyIiwib25SZXNldCIsInQiLCJub3ciLCJkYXRlVmFsdWUiLCJzZXREYXRlVmFsdWUiLCJvbkRhdGVDaGFuZ2UiLCJ2YWwiLCJkYXRlIiwiRGF0ZSIsIiRkIiwib25SZXNldEFjdGlvbiIsImNoaWxkcmVuIiwiY2xhc3NOYW1lIiwiZmlsdGVyRGF0ZUxhYmVsIiwiYWxpZ25JdGVtcyIsInN4IiwicHQiLCJwYiIsImRhdGVQaWNrZXJDb250YWluZXIiLCJmb250U2l6ZSIsImRhdGVwaWNrZXJDbG9zZSIsIm9uQ2xpY2siLCJkYXRlQWRhcHRlciIsImNhbGVuZGFyRGlzcGxheSIsIm9uQ2hhbmdlIiwicHJvcFR5cGVzIiwiZnVuYyIsInVzZVJlZiIsInVzZUVmZmVjdCIsIkZpbHRlckxpc3RJY29uIiwiQm94IiwiRmlsdGVyIiwic2hvd0ZpbHRlckxpc3QiLCJzZXRTaG93RmlsdGVyTGlzdCIsInNob3dEYXRlcGlja2VyIiwic2V0U2hvd0RhdGVwaWNrZXIiLCJmaWx0ZXJOdW1BY3RpdmUiLCJzZXRGaWx0ZXJOdW1BY3RpdmUiLCJmaWx0ZXJSZWYiLCJoYW5kbGVGaWx0ZXJDbGlja091dHNpZGUiLCJldmVudCIsImN1cnJlbnQiLCJjb250YWlucyIsInRhcmdldCIsImRvY3VtZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJ0b2dnbGUiLCJmaWx0ZXJDb250YWluZXIiLCJyZWYiLCJmaWx0ZXJJY29uIiwiZmlsdGVyTGFiZWwiLCJmaWx0ZXJMaXN0Q29udGFpbmVyIiwiY29udGFpbmVyIiwic2hvd0RhdGVQaWNrZXIiLCJzdHlsZWQiLCJTZWFyY2hJY29uIiwiSW5wdXRCYXNlIiwiU2VhcmNoQ29udGFpbmVyIiwicG9zaXRpb24iLCJtYXJnaW5SaWdodCIsIm1hcmdpbkxlZnQiLCJ3aWR0aCIsImRpc3BsYXkiLCJTZWFyY2hJY29uV3JhcHBlciIsImhlaWdodCIsImp1c3RpZnlDb250ZW50IiwiU3R5bGVkSW5wdXRCYXNlIiwiY29sb3IiLCJib3JkZXJCb3R0b20iLCJwYWRkaW5nTGVmdCIsInBhZGRpbmdSaWdodCIsIkNsb3NlSWNvbldyYXBwZXIiLCJwYWRkaW5nIiwidG9wIiwicmlnaHQiLCJjdXJzb3IiLCJ6SW5kZXgiLCJTZWFyY2giLCJvblNlYXJjaCIsInNob3dDbG9zZSIsInNldFNob3dDbG9zZSIsInNlYXJjaFZhbHVlIiwic2V0U2VhcmNoVmFsdWUiLCJvbktleURvd24iLCJrZXkiLCJuYXRpdmVFdmVudCIsInJlc2V0U2VhcmNoIiwicGxhY2Vob2xkZXIiLCJpbnB1dFByb3BzIiwiQnV0dG9uIiwiSW1wb3J0RXhwb3J0SWNvbiIsIlNvcnQiLCJvblNvcnQiLCJzaG93U29ydCIsInNldFNob3dTb3J0Iiwic29ydFJlZiIsImhhbmRsZVNvcnRDbGlja091dHNpZGUiLCJzb3J0Q29udGFpbmVyIiwic29ydEljb24iLCJzb3J0TGFiZWwiLCJzb3J0TGlzdENvbnRhaW5lciIsImxhYmVsIiwiR3JpZCIsIkZpbHRlclNvcnRTZWFyY2giLCJqdXN0aWZ5IiwiaXRlbSIsInhzIiwiZ2FwIiwiZmlsdGVyU29ydENvbnRhaW5lciIsIkVycm9ySWNvbiIsIkVycm9yTGFiZWwiLCJjbGFzc05hbWVzIiwiZGF0YVRlc3RJZCIsImVycm9yTGFiZWwiLCJzdHlsZSIsIkRyYXdlciIsIkNvbnRhaW5lciIsIk11bHRpU3RlcFNsaWRlciIsIm9wZW4iLCJvbkNsb3NlU2xpZGVyIiwiYW5jaG9yIiwib25DbG9zZSIsIlBhcGVyUHJvcHMiLCJtdWx0aXN0ZXBDb250YWluZXIiLCJtdWx0aXN0ZXBDbG9zZUljb24iLCJub2RlIiwiYm9vbCIsInVzZURpc3BhdGNoIiwidXNlU2VsZWN0b3IiLCJzaGFsbG93RXF1YWwiLCJJbmZpbml0ZVNjcm9sbCIsIk9yZGVyc0xpc3QiLCJnZXRTdW1taXRGb3JtYXR0ZWREYXRlIiwiTXlPcmRlcnNUaWNrZXRzIiwibWVtYmVyT3JkZXJzIiwib3JkZXJzX2N1cnJlbnRfcGFnZSIsIm9yZGVyc19wZXJfcGFnZSIsIm9yZGVyc190b3RhbCIsInN0YXRlIiwiaGFzTW9yZSIsInNldEhhc01vcmUiLCJzZWFyY2hOZXh0Iiwic2V0U2VhcmNoTmV4dCIsInNldEZpbHRlciIsInNldFNvcnQiLCJmZXRjaERhdGEiLCJfcmVzJHJlc3BvbnNlIiwid2lkZ2V0SGVhZGVyIiwibWQiLCJsZyIsInN1bW1pdFRpdGxlRGF0ZSIsImRhdGFMZW5ndGgiLCJzY3JvbGxUaHJlc2hvbGQiLCJudW1iZXIiLCJub09yZGVyc0ZvdW5kIiwiRGl2aWRlciIsImNhbGN1bGF0ZU9yZGVyVG90YWxzIiwiZm9ybWF0Q3VycmVuY3kiLCJPcmRlclN1bW1hcnlUYWJsZSIsImRpc2NvdW50VG90YWwiLCJyZWZ1bmRUb3RhbCIsInRheGVzVG90YWwiLCJhbW91bnRUb3RhbCIsInRpY2tldFN1bW1hcnkiLCJodW5kcmVkIiwib3JkZXJTdW1tYXJ5VGFibGUiLCJ0aWNrZXRUb3RhbCIsInF0eSIsInRpY2tldF90eXBlIiwiY29zdCIsImFsaWduIiwiY3VycmVuY3kiLCJjcmVhdGVkIiwiZGlzY291bnRfYW1vdW50IiwidGF4ZXNfYW1vdW50Iiwic3RhdHVzIiwic2hhcGUiLCJzdHJpbmciLCJvYmplY3QiLCJhcnJheU9mIiwidXNlTm93IiwidGlja2V0c1JlZnVuZGFibGUiLCJSZWZ1bmRFbWFpbFN1cHBvcnQiLCJyZWZ1bmRSZXF1ZXN0ZWQiLCJ0aWNrZXRzVG9SZWZ1bmQiLCJzdWJtaXRSZXF1ZXN0Iiwib25SZWZ1bmRDbGljayIsIm9uUmVmdW5kRGV0YWlsQ2xpY2siLCJvbkVtYWlsU3VwcG9ydENsaWNrIiwiaXNJblJlZnVuZGFibGVQZXJpb2QiLCJyZWdpc3RyYXRpb25fYWxsb3dlZF9yZWZ1bmRfcmVxdWVzdF90aWxsX2RhdGUiLCJhdExlYXN0T25lUmVmdW5kYWJsZVRpY2tldCIsImlzUmVmdW5kYWJsZSIsInJvbGUiLCJvcmRlclN1bW1hcnlCdXR0b24iLCJyZWZ1bmREaXNhYmxlZCIsInZhcmlhbnQiLCJzaXplIiwiZGlzYWJsZWQiLCJPcmRlclN1bW1hcnkiLCJvcmRlclN1bW1hcnlXcmFwcGVyIiwicHgiLCJvcmRlclN1bW1hcnlQdXJjaGFzZWRJbmZvIiwiQXR0ZW5kZWVTdGF0dXMiLCJfdGlja2V0JG93bmVyIiwiX3RpY2tldCRvd25lcjIiLCJ0aWNrZXRPd25lckVtYWlsIiwiaXNfYWN0aXZlIiwiT3JkZXJMaXN0VGlja2V0cyIsIlBBR0lOQVRJT05fRElTUExBWV9DT1VOVCIsIk9yZGVyTGlzdEl0ZW0iLCJ0b3RhbCIsIm9uUGFnaW5hdGVDbGljayIsInNlbGVjdFRvUmVmdW5kIiwiaXRlbXNUb0Rpc3BsYXkiLCJzZXRJdGVtc1RvRGlzcGxheSIsInNsaWNlZFRpY2tldHMiLCJzbGljZSIsIm9uVmlld01vcmUiLCJvblZpZXdMZXNzIiwiaXNTZWxlY3RlZFRvUmVmdW5kIiwiZmluZCIsInZpZXdNb3JlQnV0dG9uIiwiQ2hlY2tib3giLCJUaWNrZXRTdGF0dXMiLCJPcmRlck51bWJlciIsImdldFN1bW1pdFJlYXNzaWduRGF0ZSIsIlRpY2tldERldGFpbCIsInVzZVRpY2tldERldGFpbHMiLCJUaWNrZXRDVEFzIiwiaXNJbmNvbXBsZXRlIiwiaXNVbmFzc2lnbmVkIiwiaXNSZWFzc2lnbmFibGUiLCJvbk9wZW5DbGljayIsImFzc2lnblRpY2tldEJ1dHRvbiIsInZpZXdGaW5pc2hUaWNrZXRCdXR0b24iLCJyZWFzc2lnbkJ1dHRvbiIsIl90aWNrZXQkdGlja2V0X3R5cGUiLCJfb3BlblRpY2tldCRvd25lciIsIm9wZW5UaWNrZXQiLCJzZXRPcGVuVGlja2V0IiwicmVhc3NpZ25EYXRlIiwib3JkZXJXcmFwcGVyIiwidGlja2V0VGlja2V0VHlwZSIsImNoZWNrZWQiLCJ0aWNrZXRObyIsImNvcHkiLCJ0cnVuY2F0ZWQiLCJ0aWNrZXRBY3Rpb25CdXR0b25zIiwib3duZXJJZCIsInRvdGFsX3JlZnVuZGVkX2Ftb3VudCIsIkNvbnRlbnRDb3B5SWNvbiIsImRlZmF1bHRXaWR0aCIsInJldmVyc2VkIiwib3JkZXJUaWNrZXROdW1iZXJUcnVuY2F0ZWQiLCJvcmRlclRpY2tldE5vQ29udGFpbmVyIiwiY29weUljb24iLCJuYXZpZ2F0b3IiLCJjbGlwYm9hcmQiLCJ3cml0ZVRleHQiLCJUYWJzIiwiVGFiIiwiUmVmdW5kUmVxdWVzdHNNb2RhbCIsImlzVGlja2V0UmVmdW5kYWJsZSIsIlRhYlBhbmVsIiwicHJvcHMiLCJpbmRleCIsImhpZGRlbiIsIk9yZGVyc0xpc3REZXNrdG9wTW9iaWxlIiwiaXNNb2JpbGUiLCJkZXRhaWxzUmVxdWlyZWQiLCJzZXRWYWx1ZSIsImhhbmRsZUNoYW5nZSIsIl8iLCJuZXdWYWx1ZSIsInNldFJlZnVuZFJlcXVlc3RlZCIsInNldFRpY2tldHNUb1JlZnVuZCIsInNldFN1Ym1pdFJlcXVlc3QiLCJ1bnNlbGVjdFJlZnVuZFRpY2tldHMiLCJmaWx0ZXJTZWxlY3RlZCIsInNlbGVjdGVkVGlja2V0IiwiY2FuY2VsVGlja2V0c1RvUmVmdW5kIiwic2VsZWN0QWxsVGlja2V0cyIsInJlZnVuZGFibGVUaWNrZXRzIiwicmVzZXRBbGxSZWZ1bmRTdGF0dXNlcyIsIm1vcmVEZXRhaWxzIiwidGlja2V0TGlzdENvbnRhaW5lciIsImJvcmRlckNvbG9yIiwidGV4dENvbG9yIiwiVGFiSW5kaWNhdG9yUHJvcHMiLCJiYWNrZ3JvdW5kIiwidGFiQnV0dG9ucyIsInJlZnVuZEJ1dHRvbnMiLCJvblJlbW92ZVNlbGVjdGVkUmVmdW5kVGlja2V0cyIsIm9uUmVmdW5kU3VjY2Vzc0Nsb3NlIiwidXNlVGhlbWUiLCJ1c2VNZWRpYVF1ZXJ5IiwiZ2V0T3JkZXJUaWNrZXRzIiwiZ2V0Rm9ybWF0dGVkRGF0ZSIsIl9vcmRlciRtZW1iZXJUaWNrZXRzIiwibGFzdF9wYWdlIiwidGhlbWUiLCJicmVha3BvaW50cyIsImRvd24iLCJpc01vYmlsZVZpZXdhYmxlIiwic2V0TW9iaWxlVmlld2FibGUiLCJtZW1iZXJUaWNrZXRzIiwiZmV0Y2hUaWNrZXRzQnlPcmRlciIsImN1cnJlbnRfcGFnZSIsInRpY2tldHNfcGFnZV9jdXJyZW50Iiwib3JkZXJUaWNrZXRJbmZvQ29udGFpbmVyIiwib3JkZXJUaWNrZXRJbmZvIiwiYmxhY2tCdXR0b24iLCJyb3dTcGFjaW5nIiwiY29sdW1uU3BhY2luZyIsInNtIiwib3JkZXJUaWNrZXRDb250YWluZXIiLCJkaXNwbGF5X25vbmUiLCJmbGV4RGlyZWN0aW9uIiwidGlja2V0c190b3RhbCIsIkRlbGV0ZU91dGxpbmVJY29uIiwiUmVmdW5kUmVxdWVzdGVkVGlja2V0Iiwib25SZW1vdmUiLCJyZWZ1bmRUaWNrZXRCb3hDb250YWluZXIiLCJkZWxldGVJY29uIiwiU3R5bGVkRW5naW5lUHJvdmlkZXIiLCJDaGVja0NpcmNsZUljb24iLCJTVEVQX09ORSIsIlNURVBfVFdPIiwic3RlcCIsInNldFN0ZXAiLCJlcnJvck1zZyIsInNldEVycm9yTXNnIiwicmVmdW5kU3VjY2VzcyIsInNldFJlZnVuZFN1Y2Nlc3MiLCJjbG9zZVNsaWRlciIsInJlZnVuZFRpY2tldHMiLCJyZWZ1bmRTdGVwT25lIiwicmVmdW5kVGV4dCIsInJlZnVuZEVycm9yTXNnIiwiYWN0aW9uQnV0dG9ucyIsImNhbmNlbEJ1dHRvbiIsImNvbnRpbnVlQnV0dG9uIiwicmVmdW5kU3RlcFR3byIsInJlZnVuZFN1Y2Nlc3NmdWwiLCJzdWNjZXNzTXNnIiwic3VjY2Vzc01zZzIiLCJyZW5kZXJTdGVwcyIsImluamVjdEZpcnN0IiwicmVmdW5kSGVhZGVycyIsImFycmF5IiwiVGV4dEZpZWxkIiwiQXV0b2NvbXBsZXRlIiwiVHlwb2dyYXBoeSIsInF1ZXJ5UmVnaXN0cmF0aW9uQ29tcGFuaWVzIiwiQ29tcGFueUZpZWxkIiwiZm9ybWlrIiwic3VtbWl0SWQiLCJpc1JlcXVpcmVkIiwiaW5wdXRWYWx1ZSIsInNldElucHV0VmFsdWUiLCJvcHRpb25zIiwic2V0T3B0aW9ucyIsImVycm9ycyIsInZhbHVlcyIsInRvdWNoZWQiLCJzZXRGaWVsZFRvdWNoZWQiLCJzZXRGaWVsZFZhbHVlIiwiZXJyb3IiLCJCb29sZWFuIiwiaGVscGVyVGV4dCIsInVuZGVmaW5lZCIsInJlc3VsdHMiLCJuZXdPcHRpb25zIiwiYXV0b0NvbXBsZXRlIiwiZnJlZVNvbG8iLCJpbmNsdWRlSW5wdXRJbkxpc3QiLCJmaWx0ZXJTZWxlY3RlZE9wdGlvbnMiLCJvbkJsdXIiLCJnZXRPcHRpb25MYWJlbCIsIm9wdGlvbiIsInRtcFZhbHVlIiwib25JbnB1dENoYW5nZSIsIm5ld0lucHV0VmFsdWUiLCJmaWx0ZXJPcHRpb25zIiwiZmlsdGVyZWQiLCJpc0V4aXN0aW5nIiwic29tZSIsInRpdGxlIiwicmVuZGVySW5wdXQiLCJmdWxsV2lkdGgiLCJyZXF1aXJlZCIsInJlbmRlck9wdGlvbiIsIm9wdGlvblByb3BzIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiX2V4Y2x1ZGVkIiwiRm9ybUNvbnRyb2wiLCJGb3JtQ29udHJvbExhYmVsIiwiRm9ybUdyb3VwIiwiRm9ybUhlbHBlclRleHQiLCJGb3JtTGFiZWwiLCJnZXRMYWJlbCIsInRvU2x1ZyIsIkNoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQiLCJfcXVlc3Rpb24kdmFsdWVzIiwicXVlc3Rpb24iLCJxdWVzdGlvbkNsYXNzTmFtZSIsImlzRGlzYWJsZWQiLCJyZXN0IiwicXVlc3Rpb25TbHVnIiwicXVlc3Rpb25MYWJlbCIsIm1hbmRhdG9yeSIsInF1ZXN0aW9uTWF4VmFsdWVzIiwibWF4X3NlbGVjdGVkX3ZhbHVlcyIsInF1ZXN0aW9uT3B0aW9ucyIsInRvU3RyaW5nIiwiaGFuZGxlQ2hlY2tib3hMaXN0Q2hhbmdlIiwiY3VycmVudEFucyIsIm1heFNlbGVjdGlvblJlYWNoZWQiLCJ2Iiwib3AiLCJjb250cm9sIiwiaW5jbHVkZXMiLCJldiIsIlJhd0hUTUwiLCJDaGVja2JveFF1ZXN0aW9uRmllbGQiLCJJbnB1dExhYmVsIiwiTWVudUl0ZW0iLCJTZWxlY3QiLCJEcm9wZG93blF1ZXN0aW9uRmllbGQiLCJsYWJlbElkIiwibWFyZ2luQm90dG9tIiwiUmFkaW8iLCJSYWRpb0dyb3VwIiwiUmFkaW9MaXN0UXVlc3Rpb25GaWVsZCIsIlRleHRRdWVzdGlvbkZpZWxkIiwiUXVlc3Rpb25UeXBlX0NoZWNrYm94IiwiUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCIsIlF1ZXN0aW9uVHlwZV9Db21ib0JveCIsIlF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3giLCJRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0IiwiY2hlY2tSdWxlIiwicnVsZSIsImFuc3dlcl92YWx1ZXMiLCJBcnJheSIsImlzQXJyYXkiLCJhbnN3ZXJfdmFsdWVzX29wZXJhdG9yIiwiZm9yRWFjaCIsImNoZWNrVmlzaWJpbGl0eSIsInJ1bGVSZXN1bHQiLCJ2aXNpYmlsaXR5IiwidmlzaWJpbGl0eV9jb25kaXRpb24iLCJ0ZXh0IiwicXVlc3Rpb25JZCIsInRleHRMQyIsInRvTG93ZXJDYXNlIiwicmVwbGFjZSIsInEiLCJfcSRsYWJlbCIsImlzQW5zd2VyZWQiLCJhbnN3ZXIiLCJjaGVja0lmVmFsdWVNYXRjaCIsImNvbXBhcmVWYWwiLCJhbnN3ZXJBcnJheSIsImdldFR5cGVJbml0aWFsVmFsdWUiLCJnZXRUeXBlVmFsdWUiLCJhbnMiLCJzcGxpdCIsInRyYW5zZm9ybUFud2Vyc0Zvcm1hdCIsImRpc2NsYWltZXJfYWNjZXB0ZWQiLCJleHRyYV9xdWVzdGlvbnMiLCJmb3JtYXR0ZWRFUSIsImVudHJpZXMiLCJxdWVzdGlvbl9pZCIsInBhcnNlSW50IiwicG9wIiwiUXVlc3Rpb25UeXBlX1RleHQiLCJRdWVzdGlvblR5cGVfVGV4dEFyZWEiLCJRdWVzdGlvblR5cGVfUmFkaW9CdXR0b24iLCJnZXRRdWVzdGlvbkZpZWxkQ29tcG9uZW50IiwicXVlc3Rpb25UeXBlIiwiRXh0cmFRdWVzdGlvbnNGaWVsZHMiLCJyZWFkT25seSIsImFsbG93RWRpdCIsInJlbmRlclJ1bGUiLCJyZW5kZXJRdWVzdGlvbiIsInN1Yl9xdWVzdGlvbiIsIl9xJHN1Yl9xdWVzdGlvbl9ydWxlcyIsIlF1ZXN0aW9uRmllbGRDb21wb25lbnQiLCJmb3JtaWtQcm9wcyIsImhhbmRsZUJsdXIiLCJzdWJfcXVlc3Rpb25fcnVsZXMiLCJSZWdpc3RyYXRpb25EaXNjbGFpbWVyIiwiZGlzY2xhaW1lciIsIndyYXBwZXIiLCJUaWNrZXREZWxlZ2F0aW9uRmllbGRzIiwiZGVsZWdhdGVkX2ZpcnN0X25hbWUiLCJkZWxlZ2F0ZWRfbGFzdF9uYW1lIiwidXNlRm9ybWlrIiwieXVwIiwiVGlja2V0T3duZXJGaWVsZHMiLCJnZXRUeXBlVmFsaWRhdGlvbiIsInNjaGVtYSIsIm9uZU9mIiwib2YiLCJidWlsZFZhbGlkYXRpb25TY2hlbWEiLCJhbGxvd3NEZWxlZ2F0aW9uIiwiZGlzY2xhaW1lck1hbmRhdG9yeSIsImxhenkiLCJ0eXBlRXJyb3IiLCJzdWJRdWVzdGlvbiIsInN1YlF1ZXN0aW9uU2x1ZyIsIm51bGxhYmxlIiwid2hlbiIsImlzIiwicXVlc3Rpb25BbnMiLCJtYXRjaCIsInNjaCIsInBhcnNlQW5zd2VycyIsIm9ubHlSZWxldmFudCIsImFyZ3VtZW50cyIsImluaXRpYWxWYWx1ZXMiLCJfcSRzdWJfcXVlc3Rpb25fcnVsZXMyIiwic3ViQW5zd2VyIiwidXNlU2Nyb2xsVG9FcnJvciIsImlzVmFsaWQiLCJzdWJtaXRDb3VudCIsImVycm9yQXJyYXkiLCJlbGVtZW50IiwicXVlcnlTZWxlY3RvciIsInNjcm9sbEludG9WaWV3IiwiYmVoYXZpb3IiLCJibG9jayIsIlRpY2tldEZvcm0iLCJjYW5FZGl0Iiwib25TdWJtaXQiLCJ0aWNrZXRNYW5hZ2VyIiwiYWxsb3dzX3RvX2RlbGVnYXRlIiwicmVkdWNlIiwidmFsaWRhdGlvblNjaGVtYSIsInJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX21hbmRhdG9yeSIsInJlbGV2YW50QW5zd2VycyIsImVuYWJsZVJlaW5pdGlhbGl6ZSIsImhhbmRsZVN1Ym1pdCIsIm5vVmFsaWRhdGUiLCJndXR0ZXJCb3R0b20iLCJkZWxlZ2F0ZWRUbyIsImFkZGl0aW9uYWxEZXRhaWxzIiwicmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfY29udGVudCIsImZvb3RlciIsInNhdmVCdG4iLCJpc1N1Ym1pdHRpbmciLCJjYW5jZWxCdG4iLCJpbmZvTm90ZSIsIlFSQ29kZSIsIkljb25CdXR0b24iLCJEaWFsb2ciLCJEaWFsb2dUaXRsZSIsIkRpYWxvZ0NvbnRlbnQiLCJEaWFsb2dDb250ZW50VGV4dCIsIkNsb3NlIiwiRmlsZURvd25sb2FkT3V0bGluZWQiLCJEb3dubG9hZEljb24iLCJFbWFpbE91dGxpbmVkIiwiRW1haWxJY29uIiwiTUlMTElTRUNfVE9fU0VDIiwiX3RpY2tldCRvcmRlciIsIl90aWNrZXQkb3JkZXIyIiwiY3VycmVudFRpY2tldCIsInNhdmVNZXNzYWdlIiwic2V0U2F2ZU1lc3NhZ2UiLCJpc09wZW4iLCJpc1VzZXJPcmRlck93bmVyIiwib3duZXJfaWQiLCJpc1VzZXJUaWNrZXRPd25lciIsImNhbkVkaXRUaWNrZXREYXRhIiwiYWxsb3dfdXBkYXRlX2F0dGVuZGVlX2V4dHJhX3F1ZXN0aW9ucyIsImlzQ29tcGxldGUiLCJvblNhdmUiLCJkZXNjcmlwdGlvbiIsInJlc29sdmUiLCJlcnIiLCJvbkNsb3NlU2F2ZU1lc3NhZ2UiLCJzZXRUaW1lb3V0IiwiTW9kYWxQcm9wcyIsImtlZXBNb3VudGVkIiwidGlja2V0RGV0YWlsQ29udGFpbmVyIiwiaGVhZGVyIiwiY2xvc2VCdG4iLCJmbG9hdCIsInN1YnRpdGxlIiwicXJDb2RlIiwibWF4V2lkdGgiLCJxcl9jb2RlIiwidmlld0JveCIsInFyTm90ZSIsImlzX3ZpcnR1YWwiLCJhY3Rpb25CdXR0b25zQ29udGFpbmVyIiwiZG93bmxvYWRCdG4iLCJzZW5kQnRuIiwib3JkZXJOdW1iZXIiLCJhdHRlbmRlZUNvbnRhaW5lciIsImF0dGVuZGVlSW5mb1RpdGxlIiwiZ2V0VGlja2V0U3RhdHVzS2V5IiwiU1RBVFVTX0NPTVBMRVRFIiwiU1RBVFVTX0lOQ09NUExFVEUiLCJTVEFUVVNfVU5BU1NJR05FRCIsIl90aWNrZXQkcmVmdW5kX3JlcXVlcyIsImlzQWN0aXZlIiwidGlja2V0X3N0YXR1c19pbmNvbXBsZXRlIiwidGlja2V0X3VuYXNzaWduZWQiLCJ0aWNrZXRfY29tcGxldGUiLCJ0aWNrZXRTdGF0dXNDb250YWluZXIiLCJidXR0b25QaWxsIiwiYnV0dG9uUmVmdW5kUmVxdWVzdGVkIiwiYnV0dG9uSW5jb21wbGV0ZSIsImJ1dHRvblVuYXNzaWduZWQiLCJidXR0b25Db21wbGV0ZSIsImJ1dHRvbkNhbmNlbGxlZCIsIlNUQVRVU19DQU5DRUxMRUQiLCJfdGlja2V0JHByb21vX2NvZGUiLCJfdGlja2V0JG93bmVyMyIsIl90aWNrZXQkb3duZXI0IiwiZ2V0U3RhdHVzIiwiZmluYWxfYW1vdW50IiwicmVmdW5kZWRfYW1vdW50IiwiYWxsb3dzRGVsZWdhdGUiLCJwcm9tb19jb2RlIiwiaTE4biIsImluaXRSZWFjdEkxOG5leHQiLCJMYW5ndWFnZURldGVjdG9yIiwiZW4iLCJlcyIsInVzZSIsImluaXQiLCJmYWxsYmFja0xuZyIsImRlYnVnIiwicmVzb3VyY2VzIiwidHJhbnNsYXRpb24iLCJpbnRlcnBvbGF0aW9uIiwiZXNjYXBlVmFsdWUiLCJMT0dPVVRfVVNFUiIsIkRFRkFVTFRfU1RBVEUiLCJ3aWRnZXRMb2FkaW5nIiwibG9hZGluZyIsImlzT3JkZXJMb2FkaW5nIiwib3JkZXJzX2xhc3RfcGFnZSIsInRpY2tldF9jdXJyZW50X3BhZ2UiLCJ0aWNrZXRfbGFzdF9wYWdlIiwidGlja2V0X3Blcl9wYWdlIiwidGlja2V0X3RvdGFsIiwiV2lkZ2V0UmVkdWNlciIsImZvcm1lck9yZGVyIiwibyIsIl9kYXRhJCIsInVwZGF0ZWRPcmRlciIsInRpY2tldHNfcGFnZV9sYXN0IiwibW8iLCJfdGlja2V0c1JlZnVuZFJlcXVlc3QiLCJ1cGRhdGVkVGlja2V0cyIsInRyciIsInRpY2tldERhdGEiLCJ1c2VNZW1vIiwiY29uZmlndXJlU3RvcmUiLCJwZXJzaXN0U3RvcmUiLCJwZXJzaXN0UmVkdWNlciIsIkZMVVNIIiwiUkVIWURSQVRFIiwiUEFVU0UiLCJQRVJTSVNUIiwiUFVSR0UiLCJSRUdJU1RFUiIsInN0b3JhZ2UiLCJjb21iaW5lUmVkdWNlcnMiLCJnZXRTdG9yZSIsImNsaWVudElkIiwibG9naW5VcmwiLCJyZWR1Y2VycyIsInN0b3JlIiwicmVkdWNlciIsIm1pZGRsZXdhcmUiLCJnZXREZWZhdWx0TWlkZGxld2FyZSIsInRodW5rIiwiZXh0cmFBcmd1bWVudCIsImltbXV0YWJsZUNoZWNrIiwic2VyaWFsaXphYmxlQ2hlY2siLCJpZ25vcmVkQWN0aW9ucyIsInVzZUluaXRTdG9yZSIsImNvbmZpZyIsInBlcnNpc3RvciIsImluaXRMb2dPdXQiLCJnZXRBY2Nlc3NUb2tlbiIsIlNlbnRyeSIsImNhcHR1cmVFeGNlcHRpb24iLCJMQVNUX0hPVVJfT0ZfMjRfSE9VUiIsIkxBU1RfTUlOVVRFX09GX0hPVVIiLCJPTkVfREFZIiwiU1RBVFVTX1BFTkRJTkciLCJTVEFUVVNfRVJST1IiLCJTVEFUVVNfUFJPQ0VTU0lORyIsIkpFU1RfVElNRU9VVF9JTl9NSUxMSVNFQyIsIk9ORV9JVEVNIiwiVFdPX0lURU0iLCJGSVZFX0lURU0iLCJTSVhfSVRFTSIsIm1vbWVudCIsImxvY2FsZSIsImRlZmF1bHRPcHRpb25zIiwibWluaW11bUZyYWN0aW9uRGlnaXRzIiwibWF4aW11bUZyYWN0aW9uRGlnaXRzIiwiZm9ybWF0dGVyIiwiSW50bCIsIk51bWJlckZvcm1hdCIsImZvcm1hdCIsImRhdGV0aW1lIiwidGltZVpvbmUiLCJ0eiIsInVuaXgiLCJhbW91bnQiLCJ0aWNrZXRfdHlwZXMiLCJwdXJjaGFzZVRpY2tldFRvdGFsIiwiY3VycmVuY3lPYmplY3QiLCJ0aWNrZXRzX2V4Y2VycHRfYnlfdGlja2V0X3R5cGUiLCJ0aWNrZXRUeXBlIiwidHQiLCJ0aWNrZXRfdHlwZV9pZCIsInB1cmNoYXNlVG90YWwiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJfb3JkZXJzJCIsIm9yZGVycyIsInRzIiwic2V0SG91cnMiLCJkZWZhdWx0Q3VycmVudFRpbWUiLCJNYXRoIiwicm91bmQiLCJnZXROb3ciLCJ0aW1lclN0YXRlIiwibm93VXRjIiwiY2hlY2tTdW1taXRQYXN0IiwicmVhc3NpZ25fZGF0ZSIsInJlYXNzaWduX3RpY2tldF90aWxsX2RhdGUiLCJlbmRfZGF0ZSIsImNoZWNrU3VtbWl0U3RhcnRlZCIsInN0YXJ0X2RhdGUiLCJnZXRTdW1taXREYXlzRGlmZiIsInN0YXJ0RGF5IiwidGltZV96b25lX2lkIiwiZW5kRGF5IiwiZGF5cyIsImRpZmYiLCJmb3JtYXRTdGFydERhdGUiLCJmb3JtYXRFbmREYXRlIiwieWVhciIsIm1vbnRoIiwic3RhcnREYXRlIiwiZW5kRGF0ZSIsImdldFN1bW1pdExvY2F0aW9uIiwiX3N1bW1pdCRsb2NhdGlvbnMiLCJsb2NhdGlvbiIsImxvY2F0aW9ucyIsImwiLCJjbGFzc19uYW1lIiwiaXNfbWFpbiIsImNpdHkiLCJjb3VudHJ5IiwidXNlU3VtbWl0RGV0YWlscyIsIl9zdW1taXQkdGltZV96b25lIiwiX3N1bW1pdCR0aW1lX3pvbmUyIiwiZm9ybWF0dGVkRGF0ZSIsImZvcm1hdHRlZFJlYXNzaWduRGF0ZSIsInRpbWVfem9uZSIsImRheXNVbnRpbFJlYXNzaWduRGVhZGxpbmUiLCJpc1Bhc3QiLCJpc1N0YXJ0ZWQiLCJzdGF0dXNEYXRhIiwiZ2V0VGlja2V0U3RhdHVzRGF0YSIsImlzU3VtbWl0UGFzdCIsImdldFRpY2tldFJvbGUiLCJiYWRnZSIsImZlYXR1cmVzIiwiZmVhdHVyZSIsImpvaW4iLCJnZXRUaWNrZXRUeXBlIiwicnIiLCJfdGlja2V0JG93bmVyNSIsIl90aWNrZXQkb3duZXI2Iiwic2hvd1BvcHVwIiwic2V0U2hvd1BvcHVwIiwidG9nZ2xlUG9wdXAiLCJoYW5kbGVDbGljayIsImhhbmRsZVBvcHVwQ2xvc2UiLCJpc1N1bW1pdFN0YXJ0ZWQiLCJQcm92aWRlciIsIlBlcnNpc3RHYXRlIiwiTXlPcmRlcnNNeVRpY2tldHNXaWRnZXQiLCJzdXBwb3J0RW1haWwiLCJoYW5kbGVCZWZvcmVMaWZ0IiwiVVJMU2VhcmNoUGFyYW1zIiwid2luZG93Iiwic2VhcmNoIiwiZmx1c2giLCJoYXMiLCJvbkJlZm9yZUxpZnQiXSwic291cmNlUm9vdCI6IiJ9
|
|
6277
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2dNOzs7Ozs7Ozs7Ozs7Ozs7OztBQ1JoTTtBQUNBO0FBQ0E7QUFDQTtBQUMrRTs7Ozs7Ozs7Ozs7QUNKL0U7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VUNBQTtVQUNBOztVQUVBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBOztVQUVBO1VBQ0E7O1VB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Q2xDeW9CLFFBQVEsRUFBRXByQiwwREFBZ0I7RUFDMUJ3eUIsWUFBWSxFQUFFeHlCLDBEQUFnQjtFQUM5QjFILE1BQU0sRUFBRTBILDBEQUFnQjtFQUN4QmxHLFVBQVUsRUFBRWtHLDBEQUFnQjtFQUM1QnpILElBQUksRUFBRXlILDBEQUFnQjtFQUN0Qm1yQixRQUFRLEVBQUVuckIsMERBQWdCO0VBQzFCeEIsYUFBYSxFQUFFd0Isd0RBQWM0QztBQUMvQixDQUFDO0FBRUQsaUVBQWUydkIsdUJBQXVCLEUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9hY3Rpb25zLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlclNvcnRTZWFyY2gvRGF0ZXBpY2tlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJTb3J0U2VhcmNoL0ZpbHRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJTb3J0U2VhcmNoL1NlYXJjaC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJTb3J0U2VhcmNoL1NvcnQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVyU29ydFNlYXJjaC9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9MYWJlbHMvRXJyb3JMYWJlbC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9NdWx0aVN0ZXBTbGlkZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTXlPcmRlcnNUaWNrZXRzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyU3VtbWFyeS9PcmRlclN1bW1hcnlUYWJsZS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlclN1bW1hcnkvUmVmdW5kRW1haWxTdXBwb3J0LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyU3VtbWFyeS9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L0F0dGVuZGVlU3RhdHVzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvT3JkZXJMaXN0SXRlbS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L09yZGVyTGlzdFRpY2tldHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9PcmRlck51bWJlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L09yZGVyc0xpc3REZXNrdG9wTW9iaWxlLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmVmdW5kUmVxdWVzdHMvUmVmdW5kUmVxdWVzdGVkVGlja2V0LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JlZnVuZFJlcXVlc3RzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL0NvbXBhbnlGaWVsZC9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL0NoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy9DaGVja2JveFF1ZXN0aW9uRmllbGQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy9Ecm9wZG93blF1ZXN0aW9uRmllbGQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy9SYWRpb0xpc3RRdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvVGV4dFF1ZXN0aW9uRmllbGQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy91dGlscy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb25zdGFudHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvUmVnaXN0cmF0aW9uRGlzY2xhaW1lci9SZWdpc3RyYXRpb25EaXNjbGFpbWVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL1RpY2tldERlbGVnYXRpb25GaWVsZHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvVGlja2V0Rm9ybS9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9UaWNrZXRPd25lckZpZWxkcy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29uc3RhbnRzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRTdGF0dXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2hvb2tzL3VzZVRpY2tldERldGFpbHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2kxOG4vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3JlZHVjZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3N0b3JlLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy91dGlscy9hdXRoLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy91dGlscy9jb25zdGFudHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3V0aWxzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy91dGlscy9zdW1taXRVdGlscy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvdGlja2V0VXRpbHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVyU29ydFNlYXJjaC9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTGFiZWxzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9NdWx0aVN0ZXBTbGlkZXIvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyU3VtbWFyeS9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmVmdW5kUmVxdWVzdHMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXIvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL1RpY2tldE93bmVyRmllbGRzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldFN0YXR1cy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2hlY2tDaXJjbGVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Nsb3NlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9Db250ZW50Q29weVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRGVsZXRlT3V0bGluZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXJyb3JcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ZpbHRlckxpc3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ltcG9ydEV4cG9ydFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvU2VhcmNoXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvQ2hlY2tib3hcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL0RpdmlkZXJcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL0RyYXdlclwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvSW5wdXRCYXNlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9TdGFja1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvVGFiXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9UYWJzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL3VzZU1lZGlhUXVlcnlcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL3gtZGF0ZS1waWNrZXJzL0FkYXB0ZXJEYXlqc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkveC1kYXRlLXBpY2tlcnMvRGF0ZVBpY2tlclwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkveC1kYXRlLXBpY2tlcnMvTG9jYWxpemF0aW9uUHJvdmlkZXJcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAcmVkdXhqcy90b29sa2l0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQHNlbnRyeS9yZWFjdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcImRheWpzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiZm9ybWlrXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiaTE4bmV4dFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcImkxOG5leHQtYnJvd3Nlci1sYW5ndWFnZWRldGVjdG9yXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiaWR0b2tlbi12ZXJpZmllclwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm1vbWVudC10aW1lem9uZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvY29tcG9uZW50cy9yYXctaHRtbFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvYWN0aW9uc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvbWV0aG9kc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvYWN0aW9uc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvcXVlcnktYWN0aW9uc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInAtbGltaXRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJwcm9wLXR5cGVzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC1pMThuZXh0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QtaW5maW5pdGUtc2Nyb2xsLWNvbXBvbmVudFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0LXFyLWNvZGVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC1yZWR1eFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0L2pzeC1ydW50aW1lXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVkdXhcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWR1eC1wZXJzaXN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVkdXgtcGVyc2lzdC9pbnRlZ3JhdGlvbi9yZWFjdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlZHV4LXBlcnNpc3QvbGliL3N0b3JhZ2VcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJ5dXBcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0Iiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL215LW9yZGVycy10aWNrZXRzLXdpZGdldC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShcIm15LW9yZGVycy10aWNrZXRzLXdpZGdldFwiLCBbXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJteS1vcmRlcnMtdGlja2V0cy13aWRnZXRcIl0gPSBmYWN0b3J5KCk7XG5cdGVsc2Vcblx0XHRyb290W1wibXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0XCJdID0gZmFjdG9yeSgpO1xufSkodGhpcywgKCkgPT4ge1xucmV0dXJuICIsImltcG9ydCB7XG4gIGF1dGhFcnJvckhhbmRsZXIsXG4gIGdldFJlcXVlc3QsXG4gIGRlbGV0ZVJlcXVlc3QsXG4gIGNyZWF0ZUFjdGlvbixcbiAgc3RvcExvYWRpbmcsXG4gIHN0YXJ0TG9hZGluZyxcbiAgcHV0UmVxdWVzdFxufSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9hY3Rpb25zXCI7XG5pbXBvcnQgcExpbWl0IGZyb20gXCJwLWxpbWl0XCI7XG5pbXBvcnQgeyBnZXRJZFRva2VuIH0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvbWV0aG9kc1wiO1xuaW1wb3J0IElkVG9rZW5WZXJpZmllciBmcm9tIFwiaWR0b2tlbi12ZXJpZmllclwiO1xuaW1wb3J0IHsgZ2V0QWNjZXNzVG9rZW5TYWZlbHkgfSBmcm9tIFwiLi91dGlscy9hdXRoXCI7XG5pbXBvcnQge1xuICBGSVJTVF9QQUdFLFxuICBERUZBVUxUX0lURU1TX1BFUl9QQUdFLFxuICBPTkVfUEFHRV9ORVhULFxuICBQUk9NSVNFX0JBVENIX0xJTUlULFxuICBGSUZUWV9QRVJfUEFHRVxufSBmcm9tIFwiLi91dGlscy9jb25zdGFudHNcIjtcblxuZXhwb3J0IGNvbnN0IFJFU0VUX1NUQVRFID0gXCJSRVNFVF9TVEFURVwiO1xuZXhwb3J0IGNvbnN0IFJFU0VUX0ZJTFRFUiA9IFwiUkVTRVRfRklMVEVSXCI7XG5leHBvcnQgY29uc3QgU0VUX1NUQVRFID0gXCJTRVRfU1RBVEVcIjtcblxuLy8gT1JERVJTIENPTlNUU1xuZXhwb3J0IGNvbnN0IEdFVF9VU0VSX09SREVSUyA9IFwiR0VUX09SREVSU1wiO1xuZXhwb3J0IGNvbnN0IFJFRlVORF9PUkRFUiA9IFwiUkVGVU5EX09SREVSXCI7XG5leHBvcnQgY29uc3QgU0VUX0FDVElWRV9PUkRFUl9JRCA9IFwiU0VUX0FDVElWRV9PUkRFUl9JRFwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9VU0VSX09SREVSUyA9IFwiRklMVEVSX1VTRVJfT1JERVJTXCI7XG5cbi8vIFRJQ0tFVFMgQ09OU1RTXG5leHBvcnQgY29uc3QgR0VUX1RJQ0tFVFMgPSBcIkdFVF9USUNLRVRTXCI7XG5leHBvcnQgY29uc3QgVVBEQVRFX1RJQ0tFVCA9IFwiVVBEQVRFX1RJQ0tFVFwiO1xuZXhwb3J0IGNvbnN0IFJFQ0VJVkVfVElDS0VUID0gXCJSRUNFSVZFX1RJQ0tFVFwiO1xuZXhwb3J0IGNvbnN0IFJFTU9WRV9USUNLRVRfQVRURU5ERUUgPSBcIlJFTU9WRV9USUNLRVRfQVRURU5ERUVcIjtcbmV4cG9ydCBjb25zdCBSRUZVTkRfVElDS0VUID0gXCJSRUZVTkRfVElDS0VUXCI7XG5leHBvcnQgY29uc3QgUkVTRU5EX05PVElGSUNBVElPTiA9IFwiUkVTRU5EX05PVElGSUNBVElPTlwiO1xuZXhwb3J0IGNvbnN0IEdFVF9USUNLRVRTX0JZX09SREVSID0gXCJHRVRfVElDS0VUU19CWV9PUkRFUlwiO1xuZXhwb3J0IGNvbnN0IEdFVF9USUNLRVRTX0JZX09SREVSX0VSUk9SID0gXCJHRVRfVElDS0VUU19CWV9PUkRFUl9FUlJPUlwiO1xuZXhwb3J0IGNvbnN0IEdFVF9PUkRFUl9USUNLRVRfREVUQUlMUyA9IFwiR0VUX09SREVSX1RJQ0tFVF9ERVRBSUxTXCI7XG5leHBvcnQgY29uc3QgR0VUX1RJQ0tFVF9ERVRBSUxTID0gXCJHRVRfVElDS0VUX0RFVEFJTFNcIjtcbmV4cG9ydCBjb25zdCBSRUNFSVZFX0VYVFJBX1FVRVNUSU9OUyA9IFwiUkVDRUlWRV9FWFRSQV9RVUVTVElPTlNcIjtcbmV4cG9ydCBjb25zdCBUSUNLRVRfQVRURU5ERUVfS0VZUyA9IHtcbiAgZW1haWw6IFwiYXR0ZW5kZWVfZW1haWxcIixcbiAgZmlyc3ROYW1lOiBcImF0dGVuZGVlX2ZpcnN0X25hbWVcIixcbiAgbGFzdE5hbWU6IFwiYXR0ZW5kZWVfbGFzdF9uYW1lXCIsXG4gIGNvbXBhbnk6IFwiYXR0ZW5kZWVfY29tcGFueVwiLFxuICBkaXNjbGFpbWVyQWNjZXB0ZWQ6IFwiZGlzY2xhaW1lcl9hY2NlcHRlZFwiLFxuICBleHRyYVF1ZXN0aW9uczogXCJleHRyYV9xdWVzdGlvbnNcIlxufTtcbmV4cG9ydCBjb25zdCBVUERBVEVfVElDS0VUU19SRUZVTkRfUkVRVUVTVEVEID1cbiAgXCJVUERBVEVfVElDS0VUU19SRUZVTkRfUkVRVUVTVEVEXCI7XG5cbi8vIFVTRVIgQ09OVFNcbmV4cG9ydCBjb25zdCBTVEFSVF9MT0FESU5HX0lEUF9QUk9GSUxFID0gXCJTVEFSVF9MT0FESU5HX0lEUF9QUk9GSUxFXCI7XG5leHBvcnQgY29uc3QgU1RPUF9MT0FESU5HX0lEUF9QUk9GSUxFID0gXCJTVE9QX0xPQURJTkdfSURQX1BST0ZJTEVcIjtcbmV4cG9ydCBjb25zdCBVUERBVEVfSURQX1BST0ZJTEUgPSBcIlVQREFURV9JRFBfUFJPRklMRVwiO1xuZXhwb3J0IGNvbnN0IFNFVF9VU0VSID0gXCJTRVRfVVNFUlwiO1xuXG4vLyBTVU1NSVQgQ09OU1RTXG5leHBvcnQgY29uc3QgU0VUX1NVTU1JVCA9IFwiU0VUX1NVTU1JVFwiO1xuZXhwb3J0IGNvbnN0IEdFVF9NQUlOX0VYVFJBX1FVRVNUSU9OUyA9IFwiR0VUX01BSU5fRVhUUkFfUVVFU1RJT05TXCI7XG5leHBvcnQgY29uc3QgUkVDRUlWRV9NQVJLRVRJTkdfU0VUVElOR1MgPSBcIlJFQ0VJVkVfTUFSS0VUSU5HX1NFVFRJTkdTXCI7XG5leHBvcnQgY29uc3QgQ0xFQVJfTUFSS0VUSU5HX1NFVFRJTkdTID0gXCJDTEVBUl9NQVJLRVRJTkdfU0VUVElOR1NcIjtcblxuZXhwb3J0IGNvbnN0IHJlc2V0U3RhdGUgPSAoKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFJFU0VUX1NUQVRFKSh7fSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlc2V0RmlsdGVyID0gKCkgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihSRVNFVF9GSUxURVIpKHt9KSk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2V0UmVkdWNlclN0YXRlID0gKHN1bW1pdCwgdXNlcikgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihTRVRfU1RBVEUpKHsgc3VtbWl0LCB1c2VyIH0pKTtcbn07XG5cbi8vIEZJTFRFUiAvIFNPUlQgQ09OU1RBTlRTXG5leHBvcnQgY29uc3QgRklMVEVSX1ZBUl9EQVRFID0gXCJGSUxURVJfVkFSX0RBVEVcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX09SREVSX05VTUJFUiA9IFwiRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJcIjtcblxuLy8gRklMVEVSL1NPUlQgQUNUSU9OU1xuZXhwb3J0IGNvbnN0IHBhcnNlRmlsdGVyID0gKGZpbHRlck9iaikgPT4ge1xuICBjb25zdCBmaWx0ZXIgPSBbXTtcbiAgaWYgKGZpbHRlck9iai50eXBlID09PSBGSUxURVJfVkFSX0RBVEUpIHtcbiAgICBmaWx0ZXIucHVzaChgJHtmaWx0ZXJPYmoubmFtZX1bXSR7ZmlsdGVyT2JqLmxvd2VyfSYmJHtmaWx0ZXJPYmoudXBwZXJ9YCk7XG4gIH1cbiAgaWYgKGZpbHRlck9iai50eXBlID09PSBGSUxURVJfVkFSX09SREVSX05VTUJFUikge1xuICAgIGZpbHRlci5wdXNoKGAke2ZpbHRlck9iai5uYW1lfT1AJHtmaWx0ZXJPYmoudmFsdWV9YCk7XG4gIH1cbiAgcmV0dXJuIGZpbHRlcjtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTb3J0RGlyZWN0aW9uID0gKGRpcmVjdGlvbikgPT5cbiAgZGlyZWN0aW9uID09PSBcImFzY1wiID8gXCIrXCIgOiBcIi1cIjtcblxuLy8gT1JERVJTIEFDVElPTlNcbmV4cG9ydCBjb25zdCBnZXRVc2VyT3JkZXJzID1cbiAgKHtcbiAgICBwYWdlID0gRklSU1RfUEFHRSxcbiAgICBwZXJQYWdlID0gREVGQVVMVF9JVEVNU19QRVJfUEFHRSxcbiAgICBmaWx0ZXIgPSB7fSxcbiAgICBzb3J0ID0ge30sXG4gICAgbmV4dCA9IGZhbHNlXG4gIH0pID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgd2lkZ2V0U3RhdGU6IHsgc3VtbWl0IH1cbiAgICB9ID0gZ2V0U3RhdGUoKTtcblxuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaCgoKSA9PlxuICAgICAgUHJvbWlzZS5yZWplY3QoKVxuICAgICk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIG9yZGVyOiBcIi1pZFwiLFxuICAgICAgXCJmaWx0ZXJbXVwiOiBbXCJzdGF0dXM9PVBhaWRcIl0sXG4gICAgICByZWxhdGlvbnM6IFwibm9uZVwiLFxuICAgICAgcGFnZTogbmV4dCA/IHBhZ2UgKyBPTkVfUEFHRV9ORVhUIDogcGFnZSxcbiAgICAgIHBlcl9wYWdlOiBwZXJQYWdlXG4gICAgfTtcblxuICAgIGlmIChPYmplY3Qua2V5cyhmaWx0ZXIpLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZpbHRlcnMgPSBwYXJzZUZpbHRlcihmaWx0ZXIpO1xuICAgICAgcGFyYW1zW1wiZmlsdGVyW11cIl0gPSBbLi4ucGFyYW1zW1wiZmlsdGVyW11cIl0sIC4uLmZpbHRlcnNdO1xuICAgIH1cbiAgICBpZiAoT2JqZWN0LmtleXMoc29ydCkubGVuZ3RoID4gMCkge1xuICAgICAgcGFyYW1zLm9yZGVyID0gYCR7Z2V0U29ydERpcmVjdGlvbihzb3J0LmRpcmVjdGlvbil9JHtzb3J0Lm5hbWV9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gZ2V0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oR0VUX1VTRVJfT1JERVJTKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzLyR7c3VtbWl0LmlkfS9vcmRlcnMvbWVgLFxuICAgICAgYXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBzZXRBY3RpdmVPcmRlcklkID0gKG9yZGVySWQpID0+IGFzeW5jIChkaXNwYXRjaCkgPT5cbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFNFVF9BQ1RJVkVfT1JERVJfSUQpKG9yZGVySWQpKTtcblxuLy8gVVNFUiBBQ1RJT05TXG5leHBvcnQgY29uc3Qgc2V0VXNlciA9ICh1c2VyKSA9PiAoZGlzcGF0Y2gpID0+XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihTRVRfVVNFUikodXNlcikpO1xuXG4vLyBUSUNLRVQgQUNUSU9OU1xuXG5leHBvcnQgY29uc3QgZ2V0VXNlclRpY2tldHMgPVxuICAoeyBwYWdlID0gRklSU1RfUEFHRSwgcGVyUGFnZSA9IERFRkFVTFRfSVRFTVNfUEVSX1BBR0UgfSkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCB7XG4gICAgICB1c2VyU3RhdGU6IHsgdXNlclByb2ZpbGUgfSxcbiAgICAgIHN1bW1pdFxuICAgIH0gPSBnZXRTdGF0ZSgpO1xuICAgIGlmICghc3VtbWl0KSByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goKCkgPT5cbiAgICAgIFByb21pc2UucmVqZWN0KClcbiAgICApO1xuXG4gICAgaWYgKCF1c2VyUHJvZmlsZS5pZCkgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBmaWx0ZXI6IFwic3RhdHVzPT1QYWlkXCIsXG4gICAgICBleHBhbmQ6IFwib3JkZXIsIG93bmVyLCB0aWNrZXRfdHlwZVwiLFxuICAgICAgb3JkZXI6IFwiLWlkXCIsXG4gICAgICBmaWVsZHM6XG4gICAgICAgIFwib3JkZXIuaWQsb3JkZXIub3duZXJfZmlyc3RfbmFtZSxvcmRlci5vd25lcl9sYXN0X25hbWUsb3JkZXIub3duZXJfZW1haWwsb3duZXIuZmlyc3RfbmFtZSxvd25lci5sYXN0X25hbWUsb3duZXIuc3RhdHVzXCIsXG4gICAgICByZWxhdGlvbnM6IFwibm9uZVwiLFxuICAgICAgcGFnZSxcbiAgICAgIHBlcl9wYWdlOiBwZXJQYWdlXG4gICAgfTtcbiAgICByZXR1cm4gZ2V0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oR0VUX1RJQ0tFVFMpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvJHtzdW1taXQuaWR9L29yZGVycy9hbGwvdGlja2V0cy9tZWAsXG4gICAgICBhdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRzQnlPcmRlciA9XG4gICh7IG9yZGVySWQsIHBhZ2UgPSBGSVJTVF9QQUdFLCBwZXJQYWdlID0gREVGQVVMVF9JVEVNU19QRVJfUEFHRSB9KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goKCkgPT5cbiAgICAgIFByb21pc2UucmVqZWN0KClcbiAgICApO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDpcbiAgICAgICAgXCJyZWZ1bmRfcmVxdWVzdHMsb3duZXIsb3duZXIuZXh0cmFfcXVlc3Rpb25zLGJhZGdlLGJhZGdlLmZlYXR1cmVzLHRpY2tldF90eXBlXCIsXG4gICAgICBvcmRlcjogXCIraWRcIixcbiAgICAgIHBhZ2UsXG4gICAgICBwZXJfcGFnZTogcGVyUGFnZVxuICAgIH07XG4gICAgcmV0dXJuIGdldFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKEdFVF9USUNLRVRTX0JZX09SREVSKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzYCxcbiAgICAgIGF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAudGhlbigocGF5bG9hZCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oR0VUX1RJQ0tFVFNfQllfT1JERVJfRVJST1IpKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IHJlc2VuZE5vdGlmaWNhdGlvbiA9XG4gICh0aWNrZXQpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goKCkgPT5cbiAgICAgIFByb21pc2UucmVqZWN0KClcbiAgICApO1xuXG4gICAgY29uc3QgeyBtZXNzYWdlIH0gPSB0aWNrZXQ7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBvcmRlcklkID0gdGlja2V0Lm9yZGVyID8gdGlja2V0Lm9yZGVyLmlkIDogdGlja2V0Lm9yZGVyX2lkO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlblxuICAgIH07XG5cbiAgICByZXR1cm4gcHV0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oUkVTRU5EX05PVElGSUNBVElPTiksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldC5pZH0vYXR0ZW5kZWUvcmVpbnZpdGVgLFxuICAgICAgeyBtZXNzYWdlIH0sXG4gICAgICBhdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCByZWZ1bmRUaWNrZXQgPVxuICAoeyB0aWNrZXQgfSkgPT5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKCgpID0+XG4gICAgICBQcm9taXNlLnJlamVjdCgpXG4gICAgKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IG9yZGVySWQgPSB0aWNrZXQub3JkZXIgPyB0aWNrZXQub3JkZXIuaWQgOiB0aWNrZXQub3JkZXJfaWQ7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOiBcInJlZnVuZF9yZXF1ZXN0cyx0aWNrZXRfdHlwZVwiLFxuICAgICAgZmllbGRzOiBcInJlZnVuZF9yZXF1ZXN0cy5zdGF0dXNcIlxuICAgIH07XG5cbiAgICByZXR1cm4gZGVsZXRlUmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oUkVGVU5EX1RJQ0tFVCksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldC5pZH0vcmVmdW5kYCxcbiAgICAgIHt9LFxuICAgICAgYXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCByZWZ1bmRCdWxrVGlja2V0cyA9XG4gICh7IHRpY2tldHMgfSkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoKSA9PiB7XG4gICAgY29uc3QgbGltaXQgPSBwTGltaXQoUFJPTUlTRV9CQVRDSF9MSU1JVCk7XG4gICAgY29uc3QgYWxsUmVmdW5kVGlja2V0Q2FsbHMgPSB0aWNrZXRzLm1hcCgodGlja2V0KSA9PlxuICAgICAgbGltaXQoKCkgPT4gZGlzcGF0Y2gocmVmdW5kVGlja2V0KHsgdGlja2V0IH0pKSlcbiAgICApO1xuICAgIHJldHVybiBQcm9taXNlLmFsbChbLi4uYWxsUmVmdW5kVGlja2V0Q2FsbHNdKVxuICAgICAgLnRoZW4oKHJlcykgPT4ge1xuICAgICAgICBjb25zdCBzdWNjZXNzZnVsbHlSZXF1ZXN0ZWQgPSByZXNcbiAgICAgICAgICAuZmlsdGVyKChyKSA9PiByLnJlc3BvbnNlPy5yZWZ1bmRfcmVxdWVzdHM/Lmxlbmd0aClcbiAgICAgICAgICAubWFwKChyKSA9PiByLnJlc3BvbnNlKTtcbiAgICAgICAgcmV0dXJuIHN1Y2Nlc3NmdWxseVJlcXVlc3RlZDtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IGUpO1xuICB9O1xuXG4vLyB1cGRhdGUgdGhlIHRpY2tldHMgdGhhdCBoYXZlIGJlZW4gc3VjZXNzZnVsbHkgcmVmdW5kZWRcbmV4cG9ydCBjb25zdCB1cGRhdGVUaWNrZXRzUmVmdW5kUmVxdWVzdGVkID1cbiAgKHRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQpID0+IChkaXNwYXRjaCkgPT5cbiAgICBkaXNwYXRjaChcbiAgICAgIGNyZWF0ZUFjdGlvbihVUERBVEVfVElDS0VUU19SRUZVTkRfUkVRVUVTVEVEKSh0aWNrZXRzUmVmdW5kUmVxdWVzdGVkKVxuICAgICk7XG5cbi8vIFNVTU1JVCBBQ1RJT05TXG5cbmV4cG9ydCBjb25zdCBnZXRFeHRyYVF1ZXN0aW9ucyA9XG4gIChhdHRlbmRlZUlkKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHdpZGdldFN0YXRlOiB7IHN1bW1pdCB9XG4gICAgfSA9IGdldFN0YXRlKCk7XG5cbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goKCkgPT5cbiAgICAgIFByb21pc2UucmVqZWN0KClcbiAgICApO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgcGFnZTogMSxcbiAgICAgIHBlcl9wYWdlOiBGSUZUWV9QRVJfUEFHRSxcbiAgICAgIGV4cGFuZDogXCIqc3ViX3F1ZXN0aW9uX3J1bGVzLCpzdWJfcXVlc3Rpb24sKnZhbHVlc1wiLFxuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIFwiZmlsdGVyW11cIjogXCJ0aWNrZXRzX2V4Y2x1ZGVfaW5hY3RpdmVzPT10cnVlXCJcbiAgICB9O1xuXG4gICAgY29uc3QgZW5kcG9pbnQgPSBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy8ke3N1bW1pdC5pZH0vYXR0ZW5kZWVzLyR7YXR0ZW5kZWVJZH0vYWxsb3dlZC1leHRyYS1xdWVzdGlvbnNgO1xuXG4gICAgcmV0dXJuIGdldFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKFJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TKSxcbiAgICAgIGVuZHBvaW50LFxuICAgICAgYXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaCkudGhlbigoKSA9PiB7XG4gICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldCA9XG4gICh0aWNrZXRJZCwgb3JkZXJJZCkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goKCkgPT5cbiAgICAgIFByb21pc2UucmVqZWN0KClcbiAgICApO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDpcbiAgICAgICAgXCJvd25lcixvd25lci5leHRyYV9xdWVzdGlvbnMsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLHRpY2tldF90eXBlLG9yZGVyXCIsXG4gICAgICByZWxhdGlvbnM6IFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5vbmVcIixcbiAgICAgIGZpZWxkczpcbiAgICAgICAgXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24uaWQsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5hbWUsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLnR5cGVcIlxuICAgIH07XG5cbiAgICBjb25zdCBlbmRwb2ludCA9IGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzLyR7dGlja2V0SWR9YDtcblxuICAgIHJldHVybiBnZXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihSRUNFSVZFX1RJQ0tFVCksXG4gICAgICBlbmRwb2ludCxcbiAgICAgIGF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgfSk7XG4gIH07XG5cbmNvbnN0IG5vcm1hbGl6ZVRpY2tldCA9IChlbnRpdHkpID0+IHtcbiAgY29uc3Qgbm9ybWFsaXplZEVudGl0eSA9IHsgLi4uZW50aXR5IH07XG5cbiAgaWYgKCFlbnRpdHkuYXR0ZW5kZWVfY29tcGFueS5pZCkge1xuICAgIG5vcm1hbGl6ZWRFbnRpdHkuYXR0ZW5kZWVfY29tcGFueSA9IGVudGl0eS5hdHRlbmRlZV9jb21wYW55O1xuICB9IGVsc2Uge1xuICAgIGRlbGV0ZSBub3JtYWxpemVkRW50aXR5LmF0dGVuZGVlX2NvbXBhbnk7XG4gICAgbm9ybWFsaXplZEVudGl0eS5hdHRlbmRlZV9jb21wYW55X2lkID0gZW50aXR5LmF0dGVuZGVlX2NvbXBhbnkuaWQ7XG4gIH1cblxuICByZXR1cm4gbm9ybWFsaXplZEVudGl0eTtcbn07XG5cbmV4cG9ydCBjb25zdCByZWZyZXNoUHJvZmlsZSA9XG4gIChkYXRhLCBjb21wYW55LCB0aWNrZXRPd25lcikgPT5cbiAgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyB1cGRhdGVQcm9maWxlIH0pID0+IHtcbiAgICBjb25zdCB7XG4gICAgICB3aWRnZXRTdGF0ZTogeyB1c2VyIH1cbiAgICB9ID0gZ2V0U3RhdGUoKTtcbiAgICBjb25zdCB7IHVzZXJQcm9maWxlIH0gPSB1c2VyO1xuXG4gICAgLy8gZW1haWwgc2hvdWxkIG1hdGNoICggb25seSB1cGRhdGUgbXkgcHJvZmlsZSBpcyB0aWNrZXQgYmVsb25ncyB0byBtZSEpXG4gICAgLy8gYW5kIGlmIHRoZSB0aWNrZXQgZG9lc24ndCBoYXZlIGEgbWFuYWdlclxuICAgIC8vIENoZWNrIGlmIHRoZXJlJ3MgY2hhbmdlcyBpbiB0aGUgdGlja2V0IGRhdGEgdG8gdXBkYXRlIHRoZSBwcm9maWxlXG4gICAgY29uc3Qge1xuICAgICAgYXR0ZW5kZWVfZW1haWwsXG4gICAgICBhdHRlbmRlZV9maXJzdF9uYW1lLFxuICAgICAgYXR0ZW5kZWVfbGFzdF9uYW1lLFxuICAgICAgYXR0ZW5kZWVfY29tcGFueVxuICAgIH0gPSBkYXRhO1xuICAgIGNvbnN0IGhhc01hbmFnZXIgPSB0aWNrZXRPd25lcj8ubWFuYWdlcj8uaWQgfHwgdGlja2V0T3duZXI/Lm1hbmFnZXJfaWQ7XG4gICAgY29uc3QgaXRzTWUgPSB1c2VyUHJvZmlsZS5lbWFpbCA9PT0gYXR0ZW5kZWVfZW1haWw7XG4gICAgY29uc3QgcHJvZmlsZUNoYW5nZWQgPVxuICAgICAgYXR0ZW5kZWVfY29tcGFueS5uYW1lICE9PSBjb21wYW55IHx8XG4gICAgICBhdHRlbmRlZV9maXJzdF9uYW1lICE9PSB1c2VyUHJvZmlsZS5maXJzdF9uYW1lIHx8XG4gICAgICBhdHRlbmRlZV9sYXN0X25hbWUgIT09IHVzZXJQcm9maWxlLmxhc3RfbmFtZTtcblxuICAgIGlmIChpdHNNZSAmJiAhaGFzTWFuYWdlciAmJiBwcm9maWxlQ2hhbmdlZCkge1xuICAgICAgY29uc3QgbmV3UHJvZmlsZSA9IHtcbiAgICAgICAgZmlyc3RfbmFtZTogYXR0ZW5kZWVfZmlyc3RfbmFtZSxcbiAgICAgICAgbGFzdF9uYW1lOiBhdHRlbmRlZV9sYXN0X25hbWUsXG4gICAgICAgIGNvbXBhbnk6IGF0dGVuZGVlX2NvbXBhbnkubmFtZSB8fCBhdHRlbmRlZV9jb21wYW55XG4gICAgICB9O1xuXG4gICAgICAvLyB0aGlzIGlzIGEgY2FsbGJhY2sgbWV0aG9kIHRoYXQgdXBkYXRlcyB1c2VyUHJvZmlsZSBpbiBBUEkgYW5kIGV2ZW50LXNpdGVcbiAgICAgIHVwZGF0ZVByb2ZpbGUobmV3UHJvZmlsZSk7XG4gICAgfVxuICB9O1xuXG5leHBvcnQgY29uc3Qgc2F2ZVRpY2tldERldGFpbHMgPVxuICAodGlja2V0LCBhbnN3ZXJzKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaChQcm9taXNlLnJlamVjdCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6XG4gICAgICAgIFwicmVmdW5kX3JlcXVlc3RzLG93bmVyLG93bmVyLmV4dHJhX3F1ZXN0aW9ucyxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24sYmFkZ2UsYmFkZ2UuZmVhdHVyZXMsdGlja2V0X3R5cGUsb3JkZXJcIixcbiAgICAgIHJlbGF0aW9uczogXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubm9uZVwiLFxuICAgICAgZmllbGRzOlxuICAgICAgICBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5pZCxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubmFtZSxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24udHlwZVwiXG4gICAgfTtcblxuICAgIGNvbnN0IGlkVG9rZW4gPSBnZXRJZFRva2VuKCk7XG4gICAgbGV0IGNvbXBhbnkgPSBcIlwiO1xuICAgIGlmIChpZFRva2VuKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCB2ZXJpZmllciA9IG5ldyBJZFRva2VuVmVyaWZpZXIoKTtcbiAgICAgICAgY29uc3Qgand0ID0gdmVyaWZpZXIuZGVjb2RlKGlkVG9rZW4pO1xuICAgICAgICBjb21wYW55ID0gand0LnBheWxvYWQuY29tcGFueTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJlcnJvclwiLCBlKTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgbm9ybWFsaXplZEVudGl0eSA9IG5vcm1hbGl6ZVRpY2tldChhbnN3ZXJzKTtcblxuICAgIHJldHVybiBwdXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihVUERBVEVfVElDS0VUKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvYWxsL3RpY2tldHMvJHt0aWNrZXQuaWR9YCxcbiAgICAgIG5vcm1hbGl6ZWRFbnRpdHksXG4gICAgICBhdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oYXN5bmMgKCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChyZWZyZXNoUHJvZmlsZShhbnN3ZXJzLCBjb21wYW55LCB0aWNrZXQub3duZXIpKTtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgU3RhY2sgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCBkYXlqcyBmcm9tIFwiZGF5anNcIjtcbmltcG9ydCB7IEFkYXB0ZXJEYXlqcyB9IGZyb20gXCJAbXVpL3gtZGF0ZS1waWNrZXJzL0FkYXB0ZXJEYXlqc1wiO1xuaW1wb3J0IHsgTG9jYWxpemF0aW9uUHJvdmlkZXIgfSBmcm9tIFwiQG11aS94LWRhdGUtcGlja2Vycy9Mb2NhbGl6YXRpb25Qcm92aWRlclwiO1xuaW1wb3J0IHsgRGF0ZVBpY2tlciB9IGZyb20gXCJAbXVpL3gtZGF0ZS1waWNrZXJzL0RhdGVQaWNrZXJcIjtcbmltcG9ydCBDbG9zZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2xvc2VcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfREFURSB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgeyBnZXRFcG9jaExvd2VyVXBwZXJJblNlY29uZHMgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQmFzaWNEYXRlUGlja2VyKHsgb25GaWx0ZXIsIG9uUmVzZXQgfSkge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IG5vdyA9IGRheWpzKCk7XG4gIGNvbnN0IFtkYXRlVmFsdWUsIHNldERhdGVWYWx1ZV0gPSB1c2VTdGF0ZShub3cpO1xuICBjb25zdCBvbkRhdGVDaGFuZ2UgPSAodmFsKSA9PiB7XG4gICAgc2V0RGF0ZVZhbHVlKHZhbCk7XG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHZhbC4kZCk7XG4gICAgY29uc3QgeyBsb3dlciwgdXBwZXIgfSA9IGdldEVwb2NoTG93ZXJVcHBlckluU2Vjb25kcyhkYXRlKTtcbiAgICBvbkZpbHRlcih7XG4gICAgICB0eXBlOiBGSUxURVJfVkFSX0RBVEUsXG4gICAgICBuYW1lOiBcImNyZWF0ZWRcIixcbiAgICAgIGRhdGUsXG4gICAgICBsb3dlcixcbiAgICAgIHVwcGVyXG4gICAgfSk7XG4gIH07XG4gIGNvbnN0IG9uUmVzZXRBY3Rpb24gPSAoKSA9PiB7XG4gICAgb25SZXNldCgpO1xuICAgIHNldERhdGVWYWx1ZShub3cpO1xuICB9O1xuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlckRhdGVMYWJlbH0+e3QoXCJmaWx0ZXIucHVyY2hhc2VkX29uXCIpfTwvZGl2PlxuICAgICAgPFN0YWNrXG4gICAgICAgIGFsaWduSXRlbXM9XCJjZW50ZXJcIlxuICAgICAgICBkaXJlY3Rpb249XCJyb3dcIlxuICAgICAgICBzeD17eyBwdDogMiwgcGI6IDIgfX1cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuZGF0ZVBpY2tlckNvbnRhaW5lcn1cbiAgICAgID5cbiAgICAgICAgPENsb3NlSWNvblxuICAgICAgICAgIGZvbnRTaXplPVwibGFyZ2VcIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmRhdGVwaWNrZXJDbG9zZX1cbiAgICAgICAgICBvbkNsaWNrPXtvblJlc2V0QWN0aW9ufVxuICAgICAgICAvPlxuICAgICAgICA8TG9jYWxpemF0aW9uUHJvdmlkZXIgZGF0ZUFkYXB0ZXI9e0FkYXB0ZXJEYXlqc30+XG4gICAgICAgICAgPERhdGVQaWNrZXJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNhbGVuZGFyRGlzcGxheX1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtvbkRhdGVDaGFuZ2V9XG4gICAgICAgICAgICB2YWx1ZT17ZGF0ZVZhbHVlfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvTG9jYWxpemF0aW9uUHJvdmlkZXI+XG4gICAgICA8L1N0YWNrPlxuICAgIDwvPlxuICApO1xufVxuXG5CYXNpY0RhdGVQaWNrZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uUmVzZXQ6IFByb3BUeXBlcy5mdW5jXG59O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VSZWYsIHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCJAbXVpL21hdGVyaWFsL1N0YWNrXCI7XG5pbXBvcnQgRmlsdGVyTGlzdEljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRmlsdGVyTGlzdFwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCBCYXNpY0RhdGVQaWNrZXIgZnJvbSBcIi4vRGF0ZXBpY2tlclwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBGaWx0ZXIoeyBvbkZpbHRlciwgb25SZXNldCB9KSB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW3Nob3dGaWx0ZXJMaXN0LCBzZXRTaG93RmlsdGVyTGlzdF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtzaG93RGF0ZXBpY2tlciwgc2V0U2hvd0RhdGVwaWNrZXJdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbZmlsdGVyTnVtQWN0aXZlLCBzZXRGaWx0ZXJOdW1BY3RpdmVdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBmaWx0ZXJSZWYgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IGhhbmRsZUZpbHRlckNsaWNrT3V0c2lkZSA9IChldmVudCkgPT4ge1xuICAgIGlmIChmaWx0ZXJSZWYuY3VycmVudCAmJiAhZmlsdGVyUmVmLmN1cnJlbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgaWYgKHNob3dGaWx0ZXJMaXN0KSB7XG4gICAgICAgIHNldFNob3dGaWx0ZXJMaXN0KGZhbHNlKTtcbiAgICAgICAgc2V0U2hvd0RhdGVwaWNrZXIoZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlRmlsdGVyQ2xpY2tPdXRzaWRlLCBmYWxzZSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVGaWx0ZXJDbGlja091dHNpZGUsIGZhbHNlKTtcbiAgICB9O1xuICB9LCBbc2hvd0ZpbHRlckxpc3RdKTtcblxuICBjb25zdCB0b2dnbGUgPSAoKSA9PiB7XG4gICAgc2V0U2hvd0ZpbHRlckxpc3QoIXNob3dGaWx0ZXJMaXN0KTtcbiAgICBzZXRTaG93RGF0ZXBpY2tlcighc2hvd0RhdGVwaWNrZXIpO1xuICB9O1xuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyQ29udGFpbmVyfSByZWY9e2ZpbHRlclJlZn0+XG4gICAgICA8U3RhY2tcbiAgICAgICAgYWxpZ25JdGVtcz1cImNlbnRlclwiXG4gICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgICAgIHN4PXt7IHB0OiAyLCBwYjogMiB9fVxuICAgICAgICBvbkNsaWNrPXt0b2dnbGV9XG4gICAgICA+XG4gICAgICAgIDxGaWx0ZXJMaXN0SWNvbiBmb250U2l6ZT1cImxhcmdlXCIgY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVySWNvbn0gLz5cbiAgICAgICAgey8qKiBjdXJyZW50bHkganVzdCBzaG93aW5nIFwiMVwiIGJlY2F1c2Ugd2UncmUgY3VycmVudGx5IG9ubHkgZmlsdGVyaW5nIG9uZSBjcml0ZXJpYSAtIGNyZWF0ZWQgZGF0ZSAqL31cbiAgICAgICAge2ZpbHRlck51bUFjdGl2ZSAmJiA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlck51bUFjdGl2ZX0+MTwvZGl2Pn1cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyTGFiZWx9Pnt0KFwiZmlsdGVyLmZpbHRlclwiKX08L3NwYW4+XG4gICAgICA8L1N0YWNrPlxuICAgICAgPEJveFxuICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5maWx0ZXJMaXN0Q29udGFpbmVyfSAke3N0eWxlcy5jb250YWluZXJ9ICR7XG4gICAgICAgICAgc2hvd0ZpbHRlckxpc3QgPyBzdHlsZXMuc2hvd0RhdGVQaWNrZXIgOiBcIlwiXG4gICAgICAgIH1gfVxuICAgICAgPlxuICAgICAgICA8QmFzaWNEYXRlUGlja2VyXG4gICAgICAgICAgb25SZXNldD17KCkgPT4ge1xuICAgICAgICAgICAgb25SZXNldCgpO1xuICAgICAgICAgICAgc2V0RmlsdGVyTnVtQWN0aXZlKGZhbHNlKTtcbiAgICAgICAgICAgIHRvZ2dsZSgpO1xuICAgICAgICAgIH19XG4gICAgICAgICAgb25GaWx0ZXI9eyhmaWx0ZXIpID0+IHtcbiAgICAgICAgICAgIG9uRmlsdGVyKGZpbHRlcik7XG4gICAgICAgICAgICBzZXRGaWx0ZXJOdW1BY3RpdmUodHJ1ZSk7XG4gICAgICAgICAgfX1cbiAgICAgICAgLz5cbiAgICAgIDwvQm94PlxuICAgIDwvQm94PlxuICApO1xufVxuXG5GaWx0ZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEZpbHRlcjtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgc3R5bGVkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCI7XG5pbXBvcnQgU2VhcmNoSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9TZWFyY2hcIjtcbmltcG9ydCBDbG9zZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2xvc2VcIjtcbmltcG9ydCBJbnB1dEJhc2UgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvSW5wdXRCYXNlXCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVIgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuXG5jb25zdCBTZWFyY2hDb250YWluZXIgPSBzdHlsZWQoXCJkaXZcIikoKCkgPT4gKHtcbiAgcG9zaXRpb246IFwicmVsYXRpdmVcIixcbiAgbWFyZ2luUmlnaHQ6IFwiMFwiLFxuICBtYXJnaW5MZWZ0OiBcIjBcIixcbiAgd2lkdGg6IFwiMTAwJVwiLFxuICBkaXNwbGF5OiBcImJsb2NrXCJcbn0pKTtcbmNvbnN0IFNlYXJjaEljb25XcmFwcGVyID0gc3R5bGVkKFwiZGl2XCIpKCgpID0+ICh7XG4gIGhlaWdodDogXCIxMDAlXCIsXG4gIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gIGRpc3BsYXk6IFwiZmxleFwiLFxuICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLFxuICBqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIlxufSkpO1xuY29uc3QgU3R5bGVkSW5wdXRCYXNlID0gc3R5bGVkKElucHV0QmFzZSkoKCkgPT4gKHtcbiAgY29sb3I6IFwiaW5oZXJpdFwiLFxuICBib3JkZXJCb3R0b206IFwiMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC40MilcIixcbiAgcGFkZGluZ0xlZnQ6IFwiMjVweFwiLFxuICBwYWRkaW5nUmlnaHQ6IFwiMjVweFwiLFxuICBmb250U2l6ZTogXCIxZW1cIlxufSkpO1xuY29uc3QgQ2xvc2VJY29uV3JhcHBlciA9IHN0eWxlZChDbG9zZUljb24pKCgpID0+ICh7XG4gIHBhZGRpbmc6IFwiMnB4XCIsXG4gIGZvbnRTaXplOiBcIjEuNWVtXCIsXG4gIGhlaWdodDogXCIxMDAlXCIsXG4gIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gIHRvcDogXCIwXCIsXG4gIHJpZ2h0OiBcIjBcIixcbiAgZGlzcGxheTogXCJmbGV4XCIsXG4gIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG4gIGp1c3RpZnlDb250ZW50OiBcImNlbnRlclwiLFxuICBjdXJzb3I6IFwicG9pbnRlclwiLFxuICB6SW5kZXg6IFwiMTAwMFwiXG59KSk7XG5cbmZ1bmN0aW9uIFNlYXJjaCh7IG9uU2VhcmNoLCBvblJlc2V0IH0pIHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbc2hvd0Nsb3NlLCBzZXRTaG93Q2xvc2VdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbc2VhcmNoVmFsdWUsIHNldFNlYXJjaFZhbHVlXSA9IHVzZVN0YXRlKFwiXCIpO1xuICBjb25zdCBvbktleURvd24gPSAoZXZlbnQpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBrZXksXG4gICAgICBuYXRpdmVFdmVudDoge1xuICAgICAgICB0YXJnZXQ6IHsgdmFsdWUgfVxuICAgICAgfVxuICAgIH0gPSBldmVudDtcbiAgICBpZiAoa2V5ID09PSBcIkVudGVyXCIpIHtcbiAgICAgIG9uU2VhcmNoKHtcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIG5hbWU6IFwibnVtYmVyXCIsXG4gICAgICAgIHR5cGU6IEZJTFRFUl9WQVJfT1JERVJfTlVNQkVSXG4gICAgICB9KTtcbiAgICAgIHNldFNob3dDbG9zZSh0cnVlKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IHJlc2V0U2VhcmNoID0gKCkgPT4ge1xuICAgIHNldFNlYXJjaFZhbHVlKFwiXCIpO1xuICAgIHNldFNob3dDbG9zZShmYWxzZSk7XG4gICAgb25SZXNldCgpO1xuICB9O1xuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8U2VhcmNoQ29udGFpbmVyPlxuICAgICAgICB7c2hvd0Nsb3NlICYmIChcbiAgICAgICAgICA8Q2xvc2VJY29uV3JhcHBlciBvbkNsaWNrPXtyZXNldFNlYXJjaH0+XG4gICAgICAgICAgICA8Q2xvc2VJY29uIC8+XG4gICAgICAgICAgPC9DbG9zZUljb25XcmFwcGVyPlxuICAgICAgICApfVxuICAgICAgICA8U2VhcmNoSWNvbldyYXBwZXI+XG4gICAgICAgICAgPFNlYXJjaEljb24gLz5cbiAgICAgICAgPC9TZWFyY2hJY29uV3JhcHBlcj5cbiAgICAgICAgPFN0eWxlZElucHV0QmFzZVxuICAgICAgICAgIHBsYWNlaG9sZGVyPXt0KFwib3JkZXJfc2VhcmNoLm9yZGVyX251bWJlclwiKX1cbiAgICAgICAgICBpbnB1dFByb3BzPXt7IFwiYXJpYS1sYWJlbFwiOiBcInNlYXJjaFwiIH19XG4gICAgICAgICAgdmFsdWU9e3NlYXJjaFZhbHVlfVxuICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0U2VhcmNoVmFsdWUoZS50YXJnZXQudmFsdWUpfVxuICAgICAgICAgIG9uS2V5RG93bj17b25LZXlEb3dufVxuICAgICAgICAvPlxuICAgICAgPC9TZWFyY2hDb250YWluZXI+XG4gICAgPC9Cb3g+XG4gICk7XG59XG5cblNlYXJjaC5wcm9wVHlwZXMgPSB7XG4gIG9uU2VhcmNoOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25SZXNldDogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFNlYXJjaDtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlUmVmLCB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBTdGFjayBmcm9tIFwiQG11aS9tYXRlcmlhbC9TdGFja1wiO1xuaW1wb3J0IHsgQm94LCBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEltcG9ydEV4cG9ydEljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvSW1wb3J0RXhwb3J0XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmZ1bmN0aW9uIFNvcnQoeyBvblNvcnQgfSkge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtzaG93U29ydCwgc2V0U2hvd1NvcnRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBzb3J0UmVmID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCBoYW5kbGVTb3J0Q2xpY2tPdXRzaWRlID0gKGV2ZW50KSA9PiB7XG4gICAgaWYgKHNvcnRSZWYuY3VycmVudCAmJiAhc29ydFJlZi5jdXJyZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgIHNldFNob3dTb3J0KGZhbHNlKTtcbiAgICB9XG4gIH07XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZVNvcnRDbGlja091dHNpZGUsIGZhbHNlKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZVNvcnRDbGlja091dHNpZGUsIGZhbHNlKTtcbiAgICB9O1xuICB9LCBbc2hvd1NvcnRdKTtcblxuICBjb25zdCB0b2dnbGUgPSAoKSA9PiB7XG4gICAgc2V0U2hvd1NvcnQoIXNob3dTb3J0KTtcbiAgfTtcbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnNvcnRDb250YWluZXJ9IG9uQ2xpY2s9e3RvZ2dsZX0+XG4gICAgICA8U3RhY2tcbiAgICAgICAgcmVmPXtzb3J0UmVmfVxuICAgICAgICBhbGlnbkl0ZW1zPVwiY2VudGVyXCJcbiAgICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICAgICAgc3g9e3sgcHQ6IDIsIHBiOiAyIH19XG4gICAgICA+XG4gICAgICAgIDxJbXBvcnRFeHBvcnRJY29uIGZvbnRTaXplPVwibGFyZ2VcIiBjbGFzc05hbWU9e3N0eWxlcy5zb3J0SWNvbn0gLz5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMuc29ydExhYmVsfT57dChcInNvcnQuc29ydFwiKX08L3NwYW4+XG4gICAgICA8L1N0YWNrPlxuICAgICAge3Nob3dTb3J0ICYmIChcbiAgICAgICAgPEJveCBjbGFzc05hbWU9e2Ake3N0eWxlcy5zb3J0TGlzdENvbnRhaW5lcn0gJHtzdHlsZXMuY29udGFpbmVyfWB9PlxuICAgICAgICAgIDxCdXR0b24gY2xhc3NOYW1lPXtzdHlsZXMubGFiZWx9IG9uQ2xpY2s9eygpID0+IG9uU29ydChcImRlc2NcIil9PlxuICAgICAgICAgICAge3QoXCJzb3J0Lm5ld19maXJzdFwiKX1cbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICA8QnV0dG9uIGNsYXNzTmFtZT17c3R5bGVzLmxhYmVsfSBvbkNsaWNrPXsoKSA9PiBvblNvcnQoXCJhc2NcIil9PlxuICAgICAgICAgICAge3QoXCJzb3J0Lm9sZF9maXJzdFwiKX1cbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgPC9Cb3g+XG4gICAgICApfVxuICAgIDwvQm94PlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBTb3J0O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgR3JpZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgRmlsdGVyIGZyb20gXCIuL0ZpbHRlclwiO1xuaW1wb3J0IFNvcnQgZnJvbSBcIi4vU29ydFwiO1xuaW1wb3J0IFNlYXJjaCBmcm9tIFwiLi9TZWFyY2hcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuZnVuY3Rpb24gRmlsdGVyU29ydFNlYXJjaCh7IG9uRmlsdGVyLCBvblNvcnQsIG9uU2VhcmNoLCBvblJlc2V0IH0pIHtcbiAgcmV0dXJuIChcbiAgICA8R3JpZCBjb250YWluZXIganVzdGlmeT1cImZsZXgtZW5kXCIgYWxpZ25JdGVtcz1cImNlbnRlclwiPlxuICAgICAgPEdyaWRcbiAgICAgICAgaXRlbVxuICAgICAgICB4cz17Nn1cbiAgICAgICAgY29udGFpbmVyXG4gICAgICAgIHBhZGRpbmc9ezF9XG4gICAgICAgIGdhcD17Mn1cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyU29ydENvbnRhaW5lcn1cbiAgICAgICAgc3g9e3sgcHQ6IDIsIHBiOiAyIH19XG4gICAgICA+XG4gICAgICAgIDxHcmlkIGl0ZW0+XG4gICAgICAgICAgPEZpbHRlciBvbkZpbHRlcj17b25GaWx0ZXJ9IG9uUmVzZXQ9e29uUmVzZXR9IC8+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAgPEdyaWQgaXRlbT5cbiAgICAgICAgICA8U29ydCBvblNvcnQ9e29uU29ydH0gLz5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgPC9HcmlkPlxuICAgICAgPEdyaWQgaXRlbSB4cz17Nn0gY29udGFpbmVyIGp1c3RpZnlDb250ZW50PVwiZmxleC1lbmRcIj5cbiAgICAgICAgPFNlYXJjaCBvblNlYXJjaD17b25TZWFyY2h9IG9uUmVzZXQ9e29uUmVzZXR9IC8+XG4gICAgICA8L0dyaWQ+XG4gICAgPC9HcmlkPlxuICApO1xufVxuXG5GaWx0ZXJTb3J0U2VhcmNoLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jLFxuICBvblNvcnQ6IFByb3BUeXBlcy5mdW5jLFxuICBvblNlYXJjaDogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uUmVzZXQ6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBGaWx0ZXJTb3J0U2VhcmNoO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IEVycm9ySWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FcnJvclwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBFcnJvckxhYmVsKHsgbWVzc2FnZSwgY29sb3IsIGNsYXNzTmFtZXMsIGRhdGFUZXN0SWQgfSkge1xuICByZXR1cm4gKFxuICAgIDxzcGFuXG4gICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5lcnJvckxhYmVsfSAke2NsYXNzTmFtZXMgJiYgY2xhc3NOYW1lc31gfVxuICAgICAgc3R5bGU9e3sgY29sb3IgfX1cbiAgICAgIGRhdGEtdGVzdGlkPXtkYXRhVGVzdElkfVxuICAgID5cbiAgICAgIDxFcnJvckljb24gc3g9e3sgY29sb3IgfX0gLz5cbiAgICAgIHttZXNzYWdlfVxuICAgIDwvc3Bhbj5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgRXJyb3JMYWJlbDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCBEcmF3ZXIgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvRHJhd2VyXCI7XG5pbXBvcnQgeyBDb250YWluZXIgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IENsb3NlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DbG9zZVwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBNdWx0aVN0ZXBTbGlkZXIgPSAoeyBjaGlsZHJlbiwgb3Blbiwgb25DbG9zZVNsaWRlciB9KSA9PiAoXG4gICAgPERyYXdlclxuICAgICAgYW5jaG9yPVwicmlnaHRcIlxuICAgICAgb3Blbj17b3Blbn1cbiAgICAgIG9uQ2xvc2U9e29uQ2xvc2VTbGlkZXJ9XG4gICAgICBzdHlsZT17eyB6SW5kZXg6IDEwMDAgfX1cbiAgICAgIFBhcGVyUHJvcHM9e3tcbiAgICAgICAgc3g6IHtcbiAgICAgICAgICB3aWR0aDogXCI2MCVcIlxuICAgICAgICB9XG4gICAgICB9fVxuICAgID5cbiAgICAgIDxDb250YWluZXIgY2xhc3NOYW1lPXtzdHlsZXMubXVsdGlzdGVwQ29udGFpbmVyfT5cbiAgICAgICAgPENsb3NlSWNvblxuICAgICAgICAgIGZvbnRTaXplPVwibGFyZ2VcIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm11bHRpc3RlcENsb3NlSWNvbn1cbiAgICAgICAgICBvbkNsaWNrPXtvbkNsb3NlU2xpZGVyfVxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwiY2xvc2Utc2xpZGVyXCJcbiAgICAgICAgLz5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9Db250YWluZXI+XG4gICAgPC9EcmF3ZXI+XG4gIClcblxuTXVsdGlTdGVwU2xpZGVyLnByb3BUeXBlcyA9IHtcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBvcGVuOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25DbG9zZVNsaWRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE11bHRpU3RlcFNsaWRlcjtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBJbmZpbml0ZVNjcm9sbCBmcm9tIFwicmVhY3QtaW5maW5pdGUtc2Nyb2xsLWNvbXBvbmVudFwiO1xuaW1wb3J0IEZpbHRlclNvcnRTZWFyY2ggZnJvbSBcIi4vRmlsdGVyU29ydFNlYXJjaFwiO1xuaW1wb3J0IE9yZGVyc0xpc3QgZnJvbSBcIi4vT3JkZXJzTGlzdFwiO1xuaW1wb3J0IHsgZ2V0U3VtbWl0Rm9ybWF0dGVkRGF0ZSB9IGZyb20gXCIuLi91dGlscy9zdW1taXRVdGlsc1wiO1xuaW1wb3J0IHsgZ2V0VXNlck9yZGVycywgcmVzZXRGaWx0ZXIgfSBmcm9tIFwiLi4vYWN0aW9uc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBNeU9yZGVyc1RpY2tldHMgPSAoKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCB7XG4gICAgc3VtbWl0LFxuICAgIG1lbWJlck9yZGVycyxcbiAgICBvcmRlcnNfY3VycmVudF9wYWdlLFxuICAgIG9yZGVyc19wZXJfcGFnZSxcbiAgICBvcmRlcnNfdG90YWxcbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG4gIGNvbnN0IFtoYXNNb3JlLCBzZXRIYXNNb3JlXSA9IHVzZVN0YXRlKHRydWUpO1xuICBjb25zdCBbc2VhcmNoTmV4dCwgc2V0U2VhcmNoTmV4dF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtmaWx0ZXIsIHNldEZpbHRlcl0gPSB1c2VTdGF0ZSh7fSk7XG4gIGNvbnN0IFtzb3J0LCBzZXRTb3J0XSA9IHVzZVN0YXRlKHt9KTtcblxuICBjb25zdCBvblJlc2V0ID0gKCkgPT4ge1xuICAgIHNldFNvcnQoe30pO1xuICAgIHNldEZpbHRlcih7fSk7XG4gICAgc2V0U2VhcmNoTmV4dChmYWxzZSk7XG4gICAgZGlzcGF0Y2gocmVzZXRGaWx0ZXIoKSk7XG4gIH07XG5cbiAgY29uc3QgZmV0Y2hEYXRhID0gYXN5bmMgKCkgPT4ge1xuICAgIGRpc3BhdGNoKFxuICAgICAgZ2V0VXNlck9yZGVycyh7XG4gICAgICAgIHBhZ2U6IG9yZGVyc19jdXJyZW50X3BhZ2UsXG4gICAgICAgIHBlclBhZ2U6IG9yZGVyc19wZXJfcGFnZSxcbiAgICAgICAgbmV4dDogc2VhcmNoTmV4dCxcbiAgICAgICAgZmlsdGVyLFxuICAgICAgICBzb3J0XG4gICAgICB9KVxuICAgICkudGhlbigocmVzKSA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgIHJlcy5yZXNwb25zZT8uZGF0YT8ubGVuZ3RoID4gb3JkZXJzX3Blcl9wYWdlICYmXG4gICAgICAgIG1lbWJlck9yZGVycy5sZW5ndGggPT09IG9yZGVyc190b3RhbFxuICAgICAgKVxuICAgICAgICBzZXRIYXNNb3JlKGZhbHNlKTtcbiAgICB9KTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGZldGNoRGF0YSgpO1xuICB9LCBbZmlsdGVyLCBzb3J0LCBzZWFyY2hOZXh0XSk7XG5cbiAgY29uc3Qgb25GaWx0ZXIgPSAoZmlsdGVyKSA9PiB7XG4gICAgc2V0U29ydCh7fSk7XG4gICAgc2V0RmlsdGVyKGZpbHRlcik7XG4gIH07XG4gIGNvbnN0IG9uU29ydCA9IChkaXJlY3Rpb24pID0+IHtcbiAgICBzZXRGaWx0ZXIoe30pO1xuICAgIHNldFNvcnQoeyBkaXJlY3Rpb24sIG5hbWU6IFwiY3JlYXRlZFwiIH0pO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxGaWx0ZXJTb3J0U2VhcmNoXG4gICAgICAgIG9uRmlsdGVyPXtvbkZpbHRlcn1cbiAgICAgICAgb25Tb3J0PXtvblNvcnR9XG4gICAgICAgIG9uU2VhcmNoPXtvbkZpbHRlcn1cbiAgICAgICAgb25SZXNldD17b25SZXNldH1cbiAgICAgIC8+XG4gICAgICA8Qm94XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLndpZGdldEhlYWRlcn1cbiAgICAgICAgc3g9e3sgcGFkZGluZzogeyB4czogMiwgbWQ6IDAsIGxnOiAwIH0gfX1cbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJteS1vcmRlcnMtdGlja2V0LWhlYWRlclwiXG4gICAgICA+XG4gICAgICAgIDxoMiBjbGFzc05hbWU9e3N0eWxlcy5zdW1taXRUaXRsZURhdGV9PntzdW1taXQ/Lm5hbWV9PC9oMj5cbiAgICAgICAgPGgyIGNsYXNzTmFtZT17c3R5bGVzLnN1bW1pdFRpdGxlRGF0ZX0+XG4gICAgICAgICAge2dldFN1bW1pdEZvcm1hdHRlZERhdGUoc3VtbWl0KX1cbiAgICAgICAgPC9oMj5cbiAgICAgIDwvQm94PlxuICAgICAge21lbWJlck9yZGVycz8ubGVuZ3RoID8gKFxuICAgICAgICA8SW5maW5pdGVTY3JvbGxcbiAgICAgICAgICBkYXRhTGVuZ3RoPXttZW1iZXJPcmRlcnMubGVuZ3RofVxuICAgICAgICAgIG5leHQ9eygpID0+IHNldFNlYXJjaE5leHQodHJ1ZSl9XG4gICAgICAgICAgaGFzTW9yZT17aGFzTW9yZX1cbiAgICAgICAgICBzY3JvbGxUaHJlc2hvbGQ9ezF9XG4gICAgICAgID5cbiAgICAgICAgICB7bWVtYmVyT3JkZXJzPy5tYXAoKG9yZGVyKSA9PiAoXG4gICAgICAgICAgICA8T3JkZXJzTGlzdFxuICAgICAgICAgICAgICBrZXk9e29yZGVyLm51bWJlciArIG9yZGVyLmlkfVxuICAgICAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9JbmZpbml0ZVNjcm9sbD5cbiAgICAgICkgOiAoXG4gICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMubm9PcmRlcnNGb3VuZH0+e3QoXCJvcmRlcnMubm9fb3JkZXJzXCIpfTwvQm94PlxuICAgICAgKX1cbiAgICA8Lz5cbiAgKTtcbn07XG5leHBvcnQgZGVmYXVsdCBNeU9yZGVyc1RpY2tldHM7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkLCBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IERpdmlkZXIgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvRGl2aWRlclwiO1xuaW1wb3J0IHsgY2FsY3VsYXRlT3JkZXJUb3RhbHMsIGZvcm1hdEN1cnJlbmN5IH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmZ1bmN0aW9uIE9yZGVyU3VtbWFyeVRhYmxlKHsgb3JkZXIsIHN1bW1pdCwgdGlja2V0cyB9KSB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgeyBkaXNjb3VudFRvdGFsLCByZWZ1bmRUb3RhbCwgdGF4ZXNUb3RhbCwgYW1vdW50VG90YWwsIHRpY2tldFN1bW1hcnkgfSA9XG4gICAgY2FsY3VsYXRlT3JkZXJUb3RhbHMoeyBvcmRlciwgc3VtbWl0LCB0aWNrZXRzIH0pO1xuICBjb25zdCBodW5kcmVkID0gMTAwO1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlUYWJsZX0+XG4gICAgICB7dGlja2V0U3VtbWFyeT8ubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgIDw+XG4gICAgICAgICAge3RpY2tldFN1bW1hcnkubWFwKCh0aWNrZXQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRpY2tldFRvdGFsID1cbiAgICAgICAgICAgICAgKHRpY2tldC5xdHkgKiAodGlja2V0LnRpY2tldF90eXBlLmNvc3QgKiBodW5kcmVkKSkgLyBodW5kcmVkO1xuXG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICA8R3JpZFxuICAgICAgICAgICAgICAgIGNvbnRhaW5lclxuICAgICAgICAgICAgICAgIGtleT17YHRpeG9yZGVyXyR7dGlja2V0LnRpY2tldF90eXBlLmNyZWF0ZWR9YH1cbiAgICAgICAgICAgICAgICBzeD17eyBwYjogMSB9fVxuICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwib3JkZXItc3VtbWFyeS1pdGVtaXplZFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICB4e3RpY2tldC5xdHl9IHt0aWNrZXQudGlja2V0X3R5cGUubmFtZX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAgICAgICAge2Zvcm1hdEN1cnJlbmN5KHRpY2tldFRvdGFsLCB7IGN1cnJlbmN5OiBvcmRlci5jdXJyZW5jeSB9KX1cbiAgICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSl9XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICAgIHtvcmRlci5kaXNjb3VudF9hbW91bnQgPiAwICYmIChcbiAgICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHBiOiAxIH19PlxuICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LmRpc2NvdW50c1wiKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAgLXtkaXNjb3VudFRvdGFsfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIHtvcmRlci50YXhlc19hbW91bnQgPiAwICYmIChcbiAgICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHBiOiAxIH19PlxuICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnRheGVzXCIpfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICB7dGF4ZXNUb3RhbH1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICB7b3JkZXIuc3RhdHVzID09PSBcIlBhaWRcIiAmJiAoXG4gICAgICAgIDxHcmlkIGNvbnRhaW5lciBzeD17eyBwYjogMSB9fT5cbiAgICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5hbW91bnRfcGFpZFwiKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAgLXthbW91bnRUb3RhbH1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICB7cmVmdW5kVG90YWwgPiAwICYmIChcbiAgICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHBiOiAxIH19PlxuICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnJlZnVuZHNcIil9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICAgIHtyZWZ1bmRUb3RhbH1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICA8RGl2aWRlciAvPlxuICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHB0OiAxLCBwYjogMSB9fT5cbiAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnRvdGFsXCIpfVxuICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICB7b3JkZXIuc3RhdHVzID09PSBcIlBhaWRcIiA/IFwiJDAuMDBcIiA6IGFtb3VudFRvdGFsfVxuICAgICAgICA8L0dyaWQ+XG4gICAgICA8L0dyaWQ+XG4gICAgPC9Cb3g+XG4gICk7XG59XG5cbk9yZGVyU3VtbWFyeVRhYmxlLnByb3BUeXBlcyA9IHtcbiAgb3JkZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgY3VycmVuY3k6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgZGlzY291bnRfYW1vdW50OiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIHRheGVzX2Ftb3VudDogUHJvcFR5cGVzLm51bWJlcixcbiAgICBzdGF0dXM6IFByb3BUeXBlcy5zdHJpbmdcbiAgfSksXG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgdGlja2V0czogUHJvcFR5cGVzLmFycmF5T2YoT2JqZWN0KVxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJTdW1tYXJ5VGFibGU7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlTm93IH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgeyB0aWNrZXRzUmVmdW5kYWJsZSB9IGZyb20gXCIuLi8uLi91dGlscy90aWNrZXRVdGlsc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBSZWZ1bmRFbWFpbFN1cHBvcnQoe1xuICBzdW1taXQsXG4gIHJlZnVuZFJlcXVlc3RlZCxcbiAgdGlja2V0cyxcbiAgdGlja2V0c1RvUmVmdW5kLFxuICBzdWJtaXRSZXF1ZXN0LFxuICBvblJlZnVuZENsaWNrLFxuICBvblJlZnVuZERldGFpbENsaWNrLFxuICBvbkVtYWlsU3VwcG9ydENsaWNrXG59KSB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3Qgbm93ID0gdXNlTm93KCk7XG4gIGNvbnN0IGlzSW5SZWZ1bmRhYmxlUGVyaW9kID1cbiAgICBzdW1taXQucmVnaXN0cmF0aW9uX2FsbG93ZWRfcmVmdW5kX3JlcXVlc3RfdGlsbF9kYXRlID4gbm93O1xuICBjb25zdCBhdExlYXN0T25lUmVmdW5kYWJsZVRpY2tldCA9IHRpY2tldHNSZWZ1bmRhYmxlKHRpY2tldHMpO1xuICBjb25zdCBpc1JlZnVuZGFibGUgPSAhIShpc0luUmVmdW5kYWJsZVBlcmlvZCAmJiBhdExlYXN0T25lUmVmdW5kYWJsZVRpY2tldCk7XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHtpc1JlZnVuZGFibGUgJiYgKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZCByZXF1ZXN0IGJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMub3JkZXJTdW1tYXJ5QnV0dG9ufSAke1xuICAgICAgICAgICAgcmVmdW5kUmVxdWVzdGVkICYmIHRpY2tldHNUb1JlZnVuZC5sZW5ndGggPT09IDAgJiYgIXN1Ym1pdFJlcXVlc3RcbiAgICAgICAgICAgICAgPyBzdHlsZXMucmVmdW5kRGlzYWJsZWRcbiAgICAgICAgICAgICAgOiBcIlwiXG4gICAgICAgICAgfWB9XG4gICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgIG9uQ2xpY2s9e29uUmVmdW5kQ2xpY2t9XG4gICAgICAgICAgZGlzYWJsZWQ9e1xuICAgICAgICAgICAgcmVmdW5kUmVxdWVzdGVkICYmIHRpY2tldHNUb1JlZnVuZC5sZW5ndGggPT09IDAgJiYgIXN1Ym1pdFJlcXVlc3RcbiAgICAgICAgICB9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkucmVxdWVzdF9yZWZ1bmRcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKX1cbiAgICAgIDxCdXR0b25cbiAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZCBkZXRhaWxzIGJ1dHRvblwiXG4gICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlCdXR0b259XG4gICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgIG9uQ2xpY2s9e29uUmVmdW5kRGV0YWlsQ2xpY2t9XG4gICAgICA+XG4gICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5yZWZ1bmRfZGV0YWlsc1wiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgICAgPEJ1dHRvblxuICAgICAgICBhcmlhLWxhYmVsPVwiZW1haWwgc3VwcG9ydCBidXR0b25cIlxuICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJTdW1tYXJ5QnV0dG9ufVxuICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICBvbkNsaWNrPXtvbkVtYWlsU3VwcG9ydENsaWNrfVxuICAgICAgPlxuICAgICAgICB7dChcIm9yZGVyX2luZm8uZW1haWxfc3VwcG9ydFwiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgIDwvPlxuICApO1xufVxuXG5SZWZ1bmRFbWFpbFN1cHBvcnQucHJvcFR5cGVzID0ge1xuICBvblJlZnVuZENsaWNrOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25SZWZ1bmREZXRhaWxDbGljazogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uRW1haWxTdXBwb3J0Q2xpY2s6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWZ1bmRFbWFpbFN1cHBvcnQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBHcmlkLCBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IE9yZGVyU3VtbWFyeVRhYmxlIGZyb20gXCIuL09yZGVyU3VtbWFyeVRhYmxlXCI7XG5pbXBvcnQgUmVmdW5kRW1haWxTdXBwb3J0IGZyb20gXCIuL1JlZnVuZEVtYWlsU3VwcG9ydFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBPcmRlclN1bW1hcnkoe1xuICBvcmRlcixcbiAgc3VtbWl0LFxuICB0aWNrZXRzLFxuICBvblJlZnVuZENsaWNrLFxuICByZWZ1bmRSZXF1ZXN0ZWQsXG4gIHRpY2tldHNUb1JlZnVuZCxcbiAgc3VibWl0UmVxdWVzdFxufSkge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxCb3hcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJTdW1tYXJ5V3JhcHBlcn1cbiAgICAgICAgc3g9e3sgcHQ6IDQsIHB4OiA0IH19XG4gICAgICAgIGRhdGEtdGVzdGlkPVwib3JkZXItc3VtbWFyeS1jb250YWluZXJcIlxuICAgICAgPlxuICAgICAgICA8aDM+e3QoXCJvcmRlcl9zdW1tYXJ5Lm9yZGVyX3N1bW1hcnlcIil9PC9oMz5cbiAgICAgICAgPEdyaWQgY29udGFpbmVyPlxuICAgICAgICAgIDxHcmlkXG4gICAgICAgICAgICB4cz17MTJ9XG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlQdXJjaGFzZWRJbmZvfVxuICAgICAgICAgICAgc3g9e3sgcGI6IDMgfX1cbiAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8T3JkZXJTdW1tYXJ5VGFibGVcbiAgICAgICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICAgICAgdGlja2V0cz17dGlja2V0c31cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICA8L0JveD5cbiAgICAgIDxCb3ggeHM9ezEyfSBzeD17eyBwYjogMyB9fT5cbiAgICAgICAgPFJlZnVuZEVtYWlsU3VwcG9ydFxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIHJlZnVuZFJlcXVlc3RlZD17cmVmdW5kUmVxdWVzdGVkfVxuICAgICAgICAgIHRpY2tldHM9e3RpY2tldHN9XG4gICAgICAgICAgdGlja2V0c1RvUmVmdW5kPXt0aWNrZXRzVG9SZWZ1bmR9XG4gICAgICAgICAgc3VibWl0UmVxdWVzdD17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgICBvblJlZnVuZENsaWNrPXtvblJlZnVuZENsaWNrfVxuICAgICAgICAgIG9uUmVmdW5kRGV0YWlsQ2xpY2s9eygpID0+IHt9fVxuICAgICAgICAgIG9uRW1haWxTdXBwb3J0Q2xpY2s9eygpID0+IHt9fVxuICAgICAgICAvPlxuICAgICAgPC9Cb3g+XG4gICAgPC8+XG4gICk7XG59XG5cbk9yZGVyU3VtbWFyeS5wcm9wVHlwZXMgPSB7XG4gIG9yZGVyOiBQcm9wVHlwZXMub2JqZWN0LFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIHRpY2tldHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdClcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyU3VtbWFyeTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmZ1bmN0aW9uIEF0dGVuZGVlU3RhdHVzKHsgdGlja2V0IH0pIHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICByZXR1cm4gdGlja2V0Lm93bmVyPy5lbWFpbCA/IChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmxhYmVsfT5cbiAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5hc3NpZ25lZF90b1wiKX06XG4gICAgICA8c3BhblxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRPd25lckVtYWlsfVxuICAgICAgICBkYXRhLXRlc3RpZD1cImF0dGVuZGVlLXN0YXR1cy1hc3NpZ25lZFwiXG4gICAgICA+XG4gICAgICAgIHtcIiBcIn1cbiAgICAgICAge3RpY2tldC5vd25lcj8uZW1haWx9XG4gICAgICA8L3NwYW4+XG4gICAgPC9Cb3g+XG4gICkgOiAoXG4gICAgdGlja2V0LmlzX2FjdGl2ZSAmJiAoXG4gICAgICA8c3BhblxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRPd25lckVtYWlsfVxuICAgICAgICBkYXRhLXRlc3RpZD1cImF0dGVuZGVlLXN0YXR1cy11bmFzc2lnbmVkXCJcbiAgICAgID5cbiAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLmF0dGVuZGVlX3N0YXR1c191bmFzc2lnbmVkXCIpfVxuICAgICAgPC9zcGFuPlxuICAgIClcbiAgKTtcbn1cblxuQXR0ZW5kZWVTdGF0dXMucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgb3duZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBlbWFpbDogUHJvcFR5cGVzLnN0cmluZ1xuICAgIH0pLFxuICAgIGlzX2FjdGl2ZTogUHJvcFR5cGVzLmJvb2xcbiAgfSlcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEF0dGVuZGVlU3RhdHVzO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IE9yZGVyTGlzdFRpY2tldHMgZnJvbSBcIi4vT3JkZXJMaXN0VGlja2V0c1wiO1xuaW1wb3J0IHsgUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBPcmRlckxpc3RJdGVtKHtcbiAgdGlja2V0cyxcbiAgdG90YWwsXG4gIG9uUGFnaW5hdGVDbGljayxcbiAgc3VtbWl0LFxuICByZWZ1bmRSZXF1ZXN0ZWQsXG4gIHRpY2tldHNUb1JlZnVuZCxcbiAgc2VsZWN0VG9SZWZ1bmRcbn0pIHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbaXRlbXNUb0Rpc3BsYXksIHNldEl0ZW1zVG9EaXNwbGF5XSA9IHVzZVN0YXRlKFxuICAgIFBBR0lOQVRJT05fRElTUExBWV9DT1VOVFxuICApO1xuICBjb25zdCBzbGljZWRUaWNrZXRzID0gdGlja2V0cz8uc2xpY2UoMCwgaXRlbXNUb0Rpc3BsYXkpO1xuICBjb25zdCBvblZpZXdNb3JlID0gKCkgPT4ge1xuICAgIGlmICh0b3RhbCA+IHRpY2tldHMubGVuZ3RoKSB7XG4gICAgICBvblBhZ2luYXRlQ2xpY2soKTtcbiAgICB9XG4gICAgc2V0SXRlbXNUb0Rpc3BsYXkoaXRlbXNUb0Rpc3BsYXkgKyBQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQpO1xuICB9O1xuXG4gIGNvbnN0IG9uVmlld0xlc3MgPSAoKSA9PiBzZXRJdGVtc1RvRGlzcGxheShQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQpO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHtzbGljZWRUaWNrZXRzPy5tYXAoKHRpY2tldCkgPT4gKFxuICAgICAgICA8T3JkZXJMaXN0VGlja2V0c1xuICAgICAgICAgIGtleT17dGlja2V0LmlkfVxuICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIHJlZnVuZFJlcXVlc3RlZD17cmVmdW5kUmVxdWVzdGVkfVxuICAgICAgICAgIGlzU2VsZWN0ZWRUb1JlZnVuZD17ISF0aWNrZXRzVG9SZWZ1bmQuZmluZCgodCkgPT4gdC5pZCA9PT0gdGlja2V0LmlkKX1cbiAgICAgICAgICBzZWxlY3RUb1JlZnVuZD17c2VsZWN0VG9SZWZ1bmR9XG4gICAgICAgIC8+XG4gICAgICApKX1cbiAgICAgIHt0aWNrZXRzPy5sZW5ndGggPj0gaXRlbXNUb0Rpc3BsYXkgJiYgdGlja2V0cz8ubGVuZ3RoICE9PSB0b3RhbCA/IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJ2aWV3IG1vcmUgYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy52aWV3TW9yZUJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXtvblZpZXdNb3JlfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJvcmRlcnMtdGlja2V0cy52aWV3X21vcmVcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKSA6IChcbiAgICAgICAgXCJcIlxuICAgICAgKX1cbiAgICAgIHtzbGljZWRUaWNrZXRzPy5sZW5ndGggPiBQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQgJiZcbiAgICAgIHNsaWNlZFRpY2tldHM/Lmxlbmd0aCA9PT0gdG90YWwgPyAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwidmlldyBsZXNzIGJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudmlld01vcmVCdXR0b259XG4gICAgICAgICAgb25DbGljaz17b25WaWV3TGVzc31cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwib3JkZXJzLXRpY2tldHMudmlld19sZXNzXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICkgOiAoXG4gICAgICAgIFwiXCJcbiAgICAgICl9XG4gICAgPC8+XG4gICk7XG59XG5cbk9yZGVyTGlzdEl0ZW0ucHJvcFR5cGVzID0ge1xuICB0aWNrZXRzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpXG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlckxpc3RJdGVtO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkLCBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCJAbXVpL21hdGVyaWFsL1N0YWNrXCI7XG5pbXBvcnQgQ2hlY2tib3ggZnJvbSBcIkBtdWkvbWF0ZXJpYWwvQ2hlY2tib3hcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCBUaWNrZXRTdGF0dXMgZnJvbSBcIi4uL1RpY2tldFN0YXR1c1wiO1xuaW1wb3J0IE9yZGVyTnVtYmVyIGZyb20gXCIuL09yZGVyTnVtYmVyXCI7XG5pbXBvcnQgeyBnZXRTdW1taXRSZWFzc2lnbkRhdGUgfSBmcm9tIFwiLi4vLi4vdXRpbHMvc3VtbWl0VXRpbHNcIjtcbmltcG9ydCB7IHVzZU5vdyB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0IEF0dGVuZGVlU3RhdHVzIGZyb20gXCIuL0F0dGVuZGVlU3RhdHVzXCI7XG5pbXBvcnQgVGlja2V0RGV0YWlsIGZyb20gXCIuLi9UaWNrZXREZXRhaWxcIjtcbmltcG9ydCB7IHVzZVRpY2tldERldGFpbHMgfSBmcm9tIFwiLi4vLi4vaG9va3MvdXNlVGlja2V0RGV0YWlsc1wiO1xuXG5jb25zdCBUaWNrZXRDVEFzID0gKHtcbiAgaXNJbmNvbXBsZXRlLFxuICBpc1VuYXNzaWduZWQsXG4gIGlzUmVhc3NpZ25hYmxlLFxuICBvbk9wZW5DbGlja1xufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgaWYgKGlzVW5hc3NpZ25lZCkge1xuICAgIHJldHVybiAoXG4gICAgICA8QnV0dG9uIGNsYXNzTmFtZT17c3R5bGVzLmFzc2lnblRpY2tldEJ1dHRvbn0+XG4gICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5hc3NpZ25fdGlja2V0XCIpfVxuICAgICAgPC9CdXR0b24+XG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFN0YWNrXG4gICAgICBzeD17e1xuICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJzcGFjZS1iZXR3ZWVuXCIsXG4gICAgICAgIHdpZHRoOiBcIjEwMCVcIlxuICAgICAgfX1cbiAgICAgIGFsaWduSXRlbXM9XCJjZW50ZXJcIlxuICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICA+XG4gICAgICA8QnV0dG9uIGNsYXNzTmFtZT17c3R5bGVzLnZpZXdGaW5pc2hUaWNrZXRCdXR0b259IG9uQ2xpY2s9e29uT3BlbkNsaWNrfT5cbiAgICAgICAge2lzSW5jb21wbGV0ZVxuICAgICAgICAgID8gdChcInRpY2tldF9zdGF0dXMuZmluaXNoX3RpY2tldFwiKVxuICAgICAgICAgIDogdChcInRpY2tldF9zdGF0dXMudmlld190aWNrZXRcIil9XG4gICAgICA8L0J1dHRvbj5cbiAgICAgIHtpc1JlYXNzaWduYWJsZSAmJiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwicmVhc3NpZ24gdGlja2V0IGJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMucmVhc3NpZ25CdXR0b259XG4gICAgICAgID5cbiAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMucmVhc3NpZ25fdGlja2V0XCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICl9XG4gICAgPC9TdGFjaz5cbiAgKTtcbn07XG5cbmNvbnN0IE9yZGVyTGlzdFRpY2tldHMgPSAoe1xuICB0aWNrZXQsXG4gIHN1bW1pdCxcbiAgcmVmdW5kUmVxdWVzdGVkLFxuICBpc1NlbGVjdGVkVG9SZWZ1bmQsXG4gIHNlbGVjdFRvUmVmdW5kXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3Qgbm93ID0gdXNlTm93KCk7XG4gIGNvbnN0IHsgaXNSZWZ1bmRhYmxlLCBpc1VuYXNzaWduZWQsIGlzSW5jb21wbGV0ZSB9ID0gdXNlVGlja2V0RGV0YWlscyh0aWNrZXQpO1xuICBjb25zdCBbb3BlblRpY2tldCwgc2V0T3BlblRpY2tldF0gPSB1c2VTdGF0ZShudWxsKTtcbiAgY29uc3QgcmVhc3NpZ25EYXRlID0gZ2V0U3VtbWl0UmVhc3NpZ25EYXRlKHN1bW1pdCk7XG4gIGNvbnN0IGlzUmVhc3NpZ25hYmxlID0gcmVhc3NpZ25EYXRlID4gbm93O1xuXG4gIHJldHVybiAoXG4gICAgPEdyaWRcbiAgICAgIGtleT17dGlja2V0LmlkfVxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJXcmFwcGVyfVxuICAgICAgY29udGFpbmVyXG4gICAgICBkYXRhLXRlc3RpZD1cIm9yZGVyLWxpc3QtdGlja2V0XCJcbiAgICA+XG4gICAgICA8R3JpZFxuICAgICAgICB4cz17OH1cbiAgICAgICAgcGFkZGluZz17Mn1cbiAgICAgICAgaXRlbVxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRUaWNrZXRUeXBlfVxuICAgICAgICBqdXN0aWZ5PVwic3BhY2UtYmV0d2VlblwiXG4gICAgICA+XG4gICAgICAgIDxTdGFja1xuICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJmbGV4LXN0YXJ0XCJcbiAgICAgICAgICB9fVxuICAgICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgICAgID5cbiAgICAgICAgICB7cmVmdW5kUmVxdWVzdGVkICYmIGlzUmVmdW5kYWJsZSAmJiAoXG4gICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZCB0aWNrZXQgY2hlY2tib3hcIlxuICAgICAgICAgICAgICByb2xlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICBjaGVja2VkPXtpc1NlbGVjdGVkVG9SZWZ1bmR9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2VsZWN0VG9SZWZ1bmQoZSwgdGlja2V0KX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgICA8aDQ+e3RpY2tldC50aWNrZXRfdHlwZT8ubmFtZX08L2g0PlxuICAgICAgICA8L1N0YWNrPlxuICAgICAgPC9HcmlkPlxuICAgICAgPEdyaWQgeHM9ezR9IHBhZGRpbmc9ezJ9IGl0ZW0+XG4gICAgICAgIHsvKiBUbyBhZGQgYmFkZ2UgZmVhdHVyZXMgKi99XG4gICAgICA8L0dyaWQ+XG4gICAgICA8R3JpZCB4cz17MTJ9IHN4PXt7IHB4OiAyLCBwYjogMiB9fSBpdGVtPlxuICAgICAgICA8QXR0ZW5kZWVTdGF0dXMgdGlja2V0PXt0aWNrZXR9IC8+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldE5vfT5cbiAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMudGlja2V0X25vXCIpfTp7XCIgXCJ9XG4gICAgICAgICAgPE9yZGVyTnVtYmVyIG51bWJlcj17dGlja2V0Lm51bWJlcn0gY29weSB0cnVuY2F0ZWQgLz5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9HcmlkPlxuICAgICAgPEdyaWQgY29udGFpbmVyPlxuICAgICAgICA8R3JpZCBjb250YWluZXIgZGlyZWN0aW9uPVwicm93XCIgeHM9ezEyfSBsZz17Nn0gYWxpZ25JdGVtcz1cImNlbnRlclwiIGl0ZW0+XG4gICAgICAgICAgPFRpY2tldFN0YXR1cyB0aWNrZXQ9e3RpY2tldH0gLz5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgICA8R3JpZCBwYWRkaW5nPXsyfSB4cz17MTJ9IGxnPXs2fSBjb250YWluZXIgaXRlbT5cbiAgICAgICAgICA8R3JpZFxuICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgY29udGFpbmVyXG4gICAgICAgICAgICBhbGlnbj1cImNlbnRlclwiXG4gICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJzcGFjZS1iZXR3ZWVuXCJcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRBY3Rpb25CdXR0b25zfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt0aWNrZXQuaXNfYWN0aXZlICYmIChcbiAgICAgICAgICAgICAgPFRpY2tldENUQXNcbiAgICAgICAgICAgICAgICBpc1VuYXNzaWduZWQ9e2lzVW5hc3NpZ25lZH1cbiAgICAgICAgICAgICAgICBpc0luY29tcGxldGU9e2lzSW5jb21wbGV0ZX1cbiAgICAgICAgICAgICAgICBpc1JlYXNzaWduYWJsZT17aXNSZWFzc2lnbmFibGV9XG4gICAgICAgICAgICAgICAgb25PcGVuQ2xpY2s9eygpID0+IHNldE9wZW5UaWNrZXQodGlja2V0KX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICA8L0dyaWQ+XG4gICAgICA8VGlja2V0RGV0YWlsXG4gICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICB0aWNrZXRJZD17b3BlblRpY2tldD8uaWR9XG4gICAgICAgIG9yZGVySWQ9e29wZW5UaWNrZXQ/Lm9yZGVyX2lkfVxuICAgICAgICBvd25lcklkPXtvcGVuVGlja2V0Py5vd25lcj8uaWR9XG4gICAgICAgIG9uQ2xvc2U9eygpID0+IHNldE9wZW5UaWNrZXQobnVsbCl9XG4gICAgICAvPlxuICAgIDwvR3JpZD5cbiAgKTtcbn07XG5cbk9yZGVyTGlzdFRpY2tldHMucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgaWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgb3duZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBlbWFpbDogUHJvcFR5cGVzLnN0cmluZ1xuICAgIH0pLFxuICAgIG51bWJlcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgICB0b3RhbF9yZWZ1bmRlZF9hbW91bnQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgdGlja2V0X3R5cGU6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBuYW1lOiBQcm9wVHlwZXMuc3RyaW5nXG4gICAgfSlcbiAgfSlcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyTGlzdFRpY2tldHM7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgQ29udGVudENvcHlJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NvbnRlbnRDb3B5XCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IGRlZmF1bHRXaWR0aCA9IDkwO1xuXG5mdW5jdGlvbiBPcmRlck51bWJlcih7XG4gIG51bWJlcixcbiAgY29weSA9IGZhbHNlLFxuICB0cnVuY2F0ZWQgPSBmYWxzZSxcbiAgcmV2ZXJzZWQgPSBmYWxzZSxcbiAgd2lkdGggPSBkZWZhdWx0V2lkdGhcbn0pIHtcbiAgY29uc3QgY2xhc3NOYW1lcyA9IGAke3RydW5jYXRlZCAmJiBzdHlsZXMub3JkZXJUaWNrZXROdW1iZXJUcnVuY2F0ZWR9ICR7XG4gICAgcmV2ZXJzZWQgJiYgc3R5bGVzLnJldmVyc2VkXG4gIH1gO1xuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJUaWNrZXROb0NvbnRhaW5lcn0+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9e2NsYXNzTmFtZXN9IHN0eWxlPXt7IHdpZHRoIH19PlxuICAgICAgICB7bnVtYmVyfVxuICAgICAgPC9zcGFuPlxuICAgICAge2NvcHkgJiYgKFxuICAgICAgICA8Q29udGVudENvcHlJY29uXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY29weUljb259XG4gICAgICAgICAgb25DbGljaz17KCkgPT4gbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQobnVtYmVyKX1cbiAgICAgICAgICBkYXRhLXRlc3RpZD1cImNvcHktbnVtYmVyLWJ1dHRvblwiXG4gICAgICAgIC8+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApO1xufVxuXG5PcmRlck51bWJlci5wcm9wVHlwZXMgPSB7XG4gIG51bWJlcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgY29weTogUHJvcFR5cGVzLmJvb2wsXG4gIHRydW5jYXRlZDogUHJvcFR5cGVzLmJvb2wsXG4gIHJldmVyc2VkOiBQcm9wVHlwZXMuYm9vbCxcbiAgd2lkdGg6IFByb3BUeXBlcy5udW1iZXJcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyTnVtYmVyO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkLCBCb3gsIEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgU3RhY2sgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIjtcbmltcG9ydCBUYWJzIGZyb20gXCJAbXVpL21hdGVyaWFsL1RhYnNcIjtcbmltcG9ydCBUYWIgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvVGFiXCI7XG5pbXBvcnQgT3JkZXJMaXN0SXRlbSBmcm9tIFwiLi9PcmRlckxpc3RJdGVtXCI7XG5pbXBvcnQgT3JkZXJTdW1tYXJ5IGZyb20gXCIuLi9PcmRlclN1bW1hcnlcIjtcbmltcG9ydCBSZWZ1bmRSZXF1ZXN0c01vZGFsIGZyb20gXCIuLi9SZWZ1bmRSZXF1ZXN0c1wiO1xuaW1wb3J0IEVycm9yTGFiZWwgZnJvbSBcIi4uL0xhYmVscy9FcnJvckxhYmVsXCI7XG5pbXBvcnQgeyBpc1RpY2tldFJlZnVuZGFibGUgfSBmcm9tIFwiLi4vLi4vdXRpbHMvdGlja2V0VXRpbHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuZnVuY3Rpb24gVGFiUGFuZWwocHJvcHMpIHtcbiAgY29uc3QgeyBjaGlsZHJlbiwgdmFsdWUsIGluZGV4IH0gPSBwcm9wcztcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICByb2xlPVwidGFicGFuZWxcIlxuICAgICAgaGlkZGVuPXt2YWx1ZSAhPT0gaW5kZXh9XG4gICAgICBpZD17YHRhYnBhbmVsLSR7aW5kZXh9YH1cbiAgICAgIGFyaWEtbGFiZWxsZWRieT17YHRhYi0ke2luZGV4fWB9XG4gICAgPlxuICAgICAge3ZhbHVlID09PSBpbmRleCAmJiBjaGlsZHJlbn1cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuZnVuY3Rpb24gT3JkZXJzTGlzdERlc2t0b3BNb2JpbGUoe1xuICBpc01vYmlsZSxcbiAgc3VtbWl0LFxuICB0aWNrZXRzLFxuICBvcmRlcixcbiAgdG90YWwsXG4gIGRldGFpbHNSZXF1aXJlZCxcbiAgb25QYWdpbmF0ZUNsaWNrXG59KSB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW3ZhbHVlLCBzZXRWYWx1ZV0gPSB1c2VTdGF0ZSgwKTtcbiAgY29uc3QgaGFuZGxlQ2hhbmdlID0gKF8sIG5ld1ZhbHVlKSA9PiB7XG4gICAgc2V0VmFsdWUobmV3VmFsdWUpO1xuICB9O1xuICBjb25zdCBbcmVmdW5kUmVxdWVzdGVkLCBzZXRSZWZ1bmRSZXF1ZXN0ZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbdGlja2V0c1RvUmVmdW5kLCBzZXRUaWNrZXRzVG9SZWZ1bmRdID0gdXNlU3RhdGUoW10pO1xuICBjb25zdCBbc3VibWl0UmVxdWVzdCwgc2V0U3VibWl0UmVxdWVzdF0gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgY29uc3Qgb25SZWZ1bmRDbGljayA9ICgpID0+IHtcbiAgICBpZiAodGlja2V0c1RvUmVmdW5kLmxlbmd0aCA9PT0gMCkge1xuICAgICAgc2V0UmVmdW5kUmVxdWVzdGVkKHRydWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXRTdWJtaXRSZXF1ZXN0KHRydWUpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzID0gKHRpY2tldCkgPT4ge1xuICAgIGNvbnN0IGZpbHRlclNlbGVjdGVkID0gdGlja2V0c1RvUmVmdW5kLmZpbHRlcigodCkgPT4gdC5pZCAhPT0gdGlja2V0LmlkKTtcbiAgICBzZXRUaWNrZXRzVG9SZWZ1bmQoZmlsdGVyU2VsZWN0ZWQpO1xuICB9O1xuICBjb25zdCBzZWxlY3RUb1JlZnVuZCA9IChlLCB0aWNrZXQpID0+IHtcbiAgICBjb25zdCB7IGNoZWNrZWQgfSA9IGUudGFyZ2V0O1xuICAgIGlmIChjaGVja2VkKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZFRpY2tldCA9IHRpY2tldHMuZmluZCgodCkgPT4gdC5pZCA9PT0gdGlja2V0LmlkKTtcbiAgICAgIHNldFRpY2tldHNUb1JlZnVuZChbLi4udGlja2V0c1RvUmVmdW5kLCBzZWxlY3RlZFRpY2tldF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB1bnNlbGVjdFJlZnVuZFRpY2tldHModGlja2V0KTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IGNhbmNlbFRpY2tldHNUb1JlZnVuZCA9ICgpID0+IHtcbiAgICBzZXRSZWZ1bmRSZXF1ZXN0ZWQoZmFsc2UpO1xuICAgIHNldFRpY2tldHNUb1JlZnVuZChbXSk7XG4gIH07XG5cbiAgY29uc3Qgc2VsZWN0QWxsVGlja2V0cyA9ICgpID0+IHtcbiAgICBjb25zdCByZWZ1bmRhYmxlVGlja2V0cyA9IHRpY2tldHMuZmlsdGVyKFxuICAgICAgKHRpY2tldCkgPT4gaXNUaWNrZXRSZWZ1bmRhYmxlKHRpY2tldCkgPT09IHRydWVcbiAgICApO1xuICAgIHNldFRpY2tldHNUb1JlZnVuZChyZWZ1bmRhYmxlVGlja2V0cyk7XG4gIH07XG5cbiAgY29uc3QgcmVzZXRBbGxSZWZ1bmRTdGF0dXNlcyA9ICgpID0+IHtcbiAgICBzZXRSZWZ1bmRSZXF1ZXN0ZWQoZmFsc2UpO1xuICAgIHNldFN1Ym1pdFJlcXVlc3QoZmFsc2UpO1xuICAgIHNldFRpY2tldHNUb1JlZnVuZChbXSk7XG4gIH07XG5cbiAgY29uc3QgbW9yZURldGFpbHMgPSAoKSA9PlxuICAgIGRldGFpbHNSZXF1aXJlZCAmJiAoXG4gICAgICA8RXJyb3JMYWJlbFxuICAgICAgICBtZXNzYWdlPXt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfZGV0YWlsc19yZXF1aXJlZFwiKX1cbiAgICAgICAgY29sb3I9XCIjZmY5ODAwXCJcbiAgICAgICAgZGF0YVRlc3RJZD1cIm1vcmUtZGV0YWlscy1sYWJlbFwiXG4gICAgICAvPlxuICAgICk7XG5cbiAgcmV0dXJuIGlzTW9iaWxlID8gKFxuICAgIDxCb3hcbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldExpc3RDb250YWluZXJ9XG4gICAgICBkYXRhLXRlc3RpZD1cIm1vYmlsZS1vcmRlcnMtbGlzdC1jb250YWluZXJcIlxuICAgID5cbiAgICAgIDxCb3ggc3g9e3sgYm9yZGVyQ29sb3I6IFwiZGl2aWRlclwiLCBwYjogMiB9fT5cbiAgICAgICAgPFRhYnNcbiAgICAgICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICB0ZXh0Q29sb3I9XCIjMDAwXCJcbiAgICAgICAgICBhcmlhLWxhYmVsPVwiVGlja2V0cyAmIFN1bW1hcnlcIlxuICAgICAgICAgIFRhYkluZGljYXRvclByb3BzPXt7XG4gICAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiBcIiMwMDBcIlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICA8VGFiIGxhYmVsPXt0KFwibGFiZWxzLnRpY2tldHNcIil9IGNsYXNzTmFtZT17c3R5bGVzLnRhYkJ1dHRvbnN9IC8+XG4gICAgICAgICAgPFRhYiBsYWJlbD17dChcImxhYmVscy5zdW1tYXJ5XCIpfSBjbGFzc05hbWU9e3N0eWxlcy50YWJCdXR0b25zfSAvPlxuICAgICAgICA8L1RhYnM+XG4gICAgICA8L0JveD5cbiAgICAgIHttb3JlRGV0YWlscygpfVxuICAgICAgPFRhYlBhbmVsIHZhbHVlPXt2YWx1ZX0gaW5kZXg9ezB9PlxuICAgICAgICA8T3JkZXJMaXN0SXRlbVxuICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICB0aWNrZXRzPXt0aWNrZXRzfVxuICAgICAgICAgIHRvdGFsPXt0b3RhbH1cbiAgICAgICAgICBvblBhZ2luYXRlQ2xpY2s9e29uUGFnaW5hdGVDbGlja31cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICByZWZ1bmRSZXF1ZXN0ZWQ9e3JlZnVuZFJlcXVlc3RlZH1cbiAgICAgICAgICB0aWNrZXRzVG9SZWZ1bmQ9e3RpY2tldHNUb1JlZnVuZH1cbiAgICAgICAgICBzZWxlY3RUb1JlZnVuZD17c2VsZWN0VG9SZWZ1bmR9XG4gICAgICAgICAgc3VibWl0UmVxdWVzdD17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgICB1bnNlbGVjdFJlZnVuZFRpY2tldHM9e3Vuc2VsZWN0UmVmdW5kVGlja2V0c31cbiAgICAgICAgLz5cbiAgICAgIDwvVGFiUGFuZWw+XG4gICAgICA8VGFiUGFuZWwgdmFsdWU9e3ZhbHVlfSBpbmRleD17MX0+XG4gICAgICAgIDxPcmRlclN1bW1hcnlcbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgdGlja2V0cz17dGlja2V0c31cbiAgICAgICAgICBvblJlZnVuZENsaWNrPXtvblJlZnVuZENsaWNrfVxuICAgICAgICAgIHRpY2tldHNUb1JlZnVuZD17dGlja2V0c1RvUmVmdW5kfVxuICAgICAgICAgIHJlZnVuZFJlcXVlc3RlZD17cmVmdW5kUmVxdWVzdGVkfVxuICAgICAgICAgIHN1Ym1pdFJlcXVlc3Q9e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgIC8+XG4gICAgICA8L1RhYlBhbmVsPlxuICAgIDwvQm94PlxuICApIDogKFxuICAgIDw+XG4gICAgICA8R3JpZCBpdGVtIG1kPXsxMn0+XG4gICAgICAgIHttb3JlRGV0YWlscygpfVxuICAgICAgPC9HcmlkPlxuICAgICAge3JlZnVuZFJlcXVlc3RlZCAmJiAoXG4gICAgICAgIDxHcmlkIGl0ZW0gbWQ9ezEyfT5cbiAgICAgICAgICA8c3Bhbj57dChcInRpY2tldF9zdGF0dXMuc2VsZWN0X3RpY2tldF9yZWZ1bmRcIil9PC9zcGFuPlxuICAgICAgICAgIDxTdGFja1xuICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwiZmxleC1zdGFydFwiXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgYWxpZ25JdGVtcz1cImNlbnRlclwiXG4gICAgICAgICAgICBkaXJlY3Rpb249XCJyb3dcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgICAgICAgICAgc2l6ZT1cIm1lZGl1bVwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnJlZnVuZEJ1dHRvbnN9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9e3NlbGVjdEFsbFRpY2tldHN9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zZWxlY3RfYWxsXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgICAgICAgIHNpemU9XCJtZWRpdW1cIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5yZWZ1bmRCdXR0b25zfVxuICAgICAgICAgICAgICBvbkNsaWNrPXtjYW5jZWxUaWNrZXRzVG9SZWZ1bmR9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zZWxlY3RfY2FuY2VsXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIDxHcmlkXG4gICAgICAgIHBhZGRpbmc9ezF9XG4gICAgICAgIGl0ZW1cbiAgICAgICAgbWQ9ezd9XG4gICAgICAgIG9yZGVyPXt7IG1kOiAxIH19XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldExpc3RDb250YWluZXJ9XG4gICAgICAgIGRhdGEtdGVzdGlkPVwiZGVza3RvcC1vcmRlcnMtbGlzdC1jb250YWluZXJcIlxuICAgICAgPlxuICAgICAgICA8T3JkZXJMaXN0SXRlbVxuICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICB0aWNrZXRzPXt0aWNrZXRzfVxuICAgICAgICAgIHRvdGFsPXt0b3RhbH1cbiAgICAgICAgICBvblBhZ2luYXRlQ2xpY2s9e29uUGFnaW5hdGVDbGlja31cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICByZWZ1bmRSZXF1ZXN0ZWQ9e3JlZnVuZFJlcXVlc3RlZH1cbiAgICAgICAgICB0aWNrZXRzVG9SZWZ1bmQ9e3RpY2tldHNUb1JlZnVuZH1cbiAgICAgICAgICBzZWxlY3RUb1JlZnVuZD17c2VsZWN0VG9SZWZ1bmR9XG4gICAgICAgICAgc3VibWl0UmVxdWVzdD17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgICB1bnNlbGVjdFJlZnVuZFRpY2tldHM9e3Vuc2VsZWN0UmVmdW5kVGlja2V0c31cbiAgICAgICAgLz5cbiAgICAgIDwvR3JpZD5cbiAgICAgIDxHcmlkIHBhZGRpbmc9ezF9IGl0ZW0gbWQ9ezV9IG9yZGVyPXt7IG1kOiAxIH19PlxuICAgICAgICA8T3JkZXJTdW1tYXJ5XG4gICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIHRpY2tldHM9e3RpY2tldHN9XG4gICAgICAgICAgb25SZWZ1bmRDbGljaz17b25SZWZ1bmRDbGlja31cbiAgICAgICAgICB0aWNrZXRzVG9SZWZ1bmQ9e3RpY2tldHNUb1JlZnVuZH1cbiAgICAgICAgICByZWZ1bmRSZXF1ZXN0ZWQ9e3JlZnVuZFJlcXVlc3RlZH1cbiAgICAgICAgICBzdWJtaXRSZXF1ZXN0PXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICAvPlxuICAgICAgPC9HcmlkPlxuICAgICAgPFJlZnVuZFJlcXVlc3RzTW9kYWxcbiAgICAgICAgdGlja2V0cz17dGlja2V0c1RvUmVmdW5kfVxuICAgICAgICBvcGVuPXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICBvblJlbW92ZVNlbGVjdGVkUmVmdW5kVGlja2V0cz17dW5zZWxlY3RSZWZ1bmRUaWNrZXRzfVxuICAgICAgICBvblJlZnVuZFN1Y2Nlc3NDbG9zZT17KCkgPT4gcmVzZXRBbGxSZWZ1bmRTdGF0dXNlcygpfVxuICAgICAgICBvbkNsb3NlU2xpZGVyPXsoKSA9PiBzZXRTdWJtaXRSZXF1ZXN0KGZhbHNlKX1cbiAgICAgIC8+XG4gICAgPC8+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyc0xpc3REZXNrdG9wTW9iaWxlO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkLCBCb3gsIEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiO1xuaW1wb3J0IHVzZU1lZGlhUXVlcnkgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvdXNlTWVkaWFRdWVyeVwiO1xuaW1wb3J0IHsgZ2V0VGlja2V0c0J5T3JkZXIgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsgZ2V0T3JkZXJUaWNrZXRzLCBnZXRGb3JtYXR0ZWREYXRlIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgeyBPTkVfUEFHRV9ORVhUIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0IE9yZGVyTnVtYmVyIGZyb20gXCIuL09yZGVyTnVtYmVyXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgT3JkZXJzTGlzdERlc2t0b3BNb2JpbGUgZnJvbSBcIi4vT3JkZXJzTGlzdERlc2t0b3BNb2JpbGVcIjtcblxuZnVuY3Rpb24gT3JkZXJzTGlzdChwcm9wcykge1xuICBjb25zdCB7IHN1bW1pdCwgb3JkZXIgfSA9IHByb3BzO1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgeyBwZXJfcGFnZSwgbGFzdF9wYWdlLCBtZW1iZXJPcmRlcnMgfSA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sXG4gICAgc2hhbGxvd0VxdWFsXG4gICk7XG4gIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUoKTtcbiAgY29uc3QgaXNNb2JpbGUgPSB1c2VNZWRpYVF1ZXJ5KHRoZW1lLmJyZWFrcG9pbnRzLmRvd24oXCJsZ1wiKSk7XG4gIGNvbnN0IFtpc01vYmlsZVZpZXdhYmxlLCBzZXRNb2JpbGVWaWV3YWJsZV0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IGRldGFpbHNSZXF1aXJlZCA9IG9yZGVyLm1lbWJlclRpY2tldHM/LmZpbmQoXG4gICAgKHRpY2tldCkgPT4gdGlja2V0Lm93bmVyPy5zdGF0dXMgPT09IFwiSW5jb21wbGV0ZVwiXG4gICk7XG4gIGNvbnN0IGZldGNoVGlja2V0c0J5T3JkZXIgPSBhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgZGlzcGF0Y2goXG4gICAgICBnZXRUaWNrZXRzQnlPcmRlcih7XG4gICAgICAgIG9yZGVySWQ6IG9yZGVyLmlkLFxuICAgICAgICBjdXJyZW50X3BhZ2U6IGxhc3RfcGFnZSxcbiAgICAgICAgcGVyUGFnZTogcGVyX3BhZ2VcbiAgICAgIH0pXG4gICAgKS5jYXRjaCgoZSkgPT4ge1xuICAgICAgY29uc29sZS5sb2coZSk7XG4gICAgfSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBmZXRjaFRpY2tldHNCeU9yZGVyKCk7XG4gIH0sIFtdKTtcblxuICBjb25zdCBvblBhZ2luYXRlQ2xpY2sgPSAoKSA9PlxuICAgIGRpc3BhdGNoKFxuICAgICAgZ2V0VGlja2V0c0J5T3JkZXIoe1xuICAgICAgICBvcmRlcklkOiBvcmRlci5pZCxcbiAgICAgICAgcGFnZTogb3JkZXIudGlja2V0c19wYWdlX2N1cnJlbnQgKyBPTkVfUEFHRV9ORVhULFxuICAgICAgICBwZXJQYWdlOiBwZXJfcGFnZSxcbiAgICAgICAgbmV4dDogdHJ1ZVxuICAgICAgfSlcbiAgICApO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxCb3hcbiAgICAgICAgc3g9e3tcbiAgICAgICAgICBwYWRkaW5nOiB7XG4gICAgICAgICAgICB4czogMixcbiAgICAgICAgICAgIG1kOiAxLFxuICAgICAgICAgICAgbGc6IDBcbiAgICAgICAgICB9XG4gICAgICAgIH19XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyVGlja2V0SW5mb0NvbnRhaW5lcn1cbiAgICAgID5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclRpY2tldEluZm99XG4gICAgICAgICAgZGF0YS10ZXN0aWQ9XCJvcmRlci10aWNrZXQtaW5mby1jb250YWluZXJcIlxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJvcmRlcnMucHVyY2hhc2VkXCIpfToge2dldEZvcm1hdHRlZERhdGUob3JkZXIuY3JlYXRlZCl9IHx7XCIgXCJ9XG4gICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5Lm9yZGVyX25vXCIpfTp7XCIgXCJ9XG4gICAgICAgICAgPE9yZGVyTnVtYmVyIG51bWJlcj17b3JkZXIubnVtYmVyfSBjb3B5IHRydW5jYXRlZCAvPlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIHtpc01vYmlsZSAmJiAoXG4gICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgc3g9e3sgcGFkZGluZzogMCB9fVxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYmxhY2tCdXR0b259XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRNb2JpbGVWaWV3YWJsZSghaXNNb2JpbGVWaWV3YWJsZSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2lzTW9iaWxlVmlld2FibGVcbiAgICAgICAgICAgICAgPyB0KFwidGlja2V0X3N0YXR1cy5oaWRlX3RpY2tldHNcIilcbiAgICAgICAgICAgICAgOiB0KFwidGlja2V0X3N0YXR1cy52aWV3X3RpY2tldHNcIil9XG4gICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICl9XG4gICAgICA8L0JveD5cbiAgICAgIDxHcmlkXG4gICAgICAgIGtleT17b3JkZXIuaWR9XG4gICAgICAgIGNvbnRhaW5lclxuICAgICAgICByb3dTcGFjaW5nPXsxfVxuICAgICAgICBjb2x1bW5TcGFjaW5nPXt7IHhzOiAxLCBzbTogMiwgbWQ6IDMgfX1cbiAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMub3JkZXJUaWNrZXRDb250YWluZXJ9ICR7XG4gICAgICAgICAgaXNNb2JpbGUgJiYgIWlzTW9iaWxlVmlld2FibGUgPyBzdHlsZXMuZGlzcGxheV9ub25lIDogXCJcIlxuICAgICAgICB9YH1cbiAgICAgICAgc3g9e3tcbiAgICAgICAgICBmbGV4RGlyZWN0aW9uOiB7XG4gICAgICAgICAgICBtZDogXCJyb3dcIixcbiAgICAgICAgICAgIGxnOiBcInJvd1wiXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwYWRkaW5nOiB7XG4gICAgICAgICAgICB4czogMixcbiAgICAgICAgICAgIG1kOiAwLFxuICAgICAgICAgICAgbGc6IDBcbiAgICAgICAgICB9XG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxPcmRlcnNMaXN0RGVza3RvcE1vYmlsZVxuICAgICAgICAgIGlzTW9iaWxlPXtpc01vYmlsZX1cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgdGlja2V0cz17Z2V0T3JkZXJUaWNrZXRzKG1lbWJlck9yZGVycywgb3JkZXIuaWQpfVxuICAgICAgICAgIHRvdGFsPXtvcmRlci50aWNrZXRzX3RvdGFsfVxuICAgICAgICAgIGRldGFpbHNSZXF1aXJlZD17ZGV0YWlsc1JlcXVpcmVkfVxuICAgICAgICAgIG9uUGFnaW5hdGVDbGljaz17b25QYWdpbmF0ZUNsaWNrfVxuICAgICAgICAvPlxuICAgICAgPC9HcmlkPlxuICAgIDwvPlxuICApO1xufVxuXG5PcmRlcnNMaXN0LnByb3BUeXBlcyA9IHtcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICBvcmRlcjogUHJvcFR5cGVzLm9iamVjdFxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJzTGlzdDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEdyaWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCJAbXVpL21hdGVyaWFsL1N0YWNrXCI7XG5pbXBvcnQgRGVsZXRlT3V0bGluZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRGVsZXRlT3V0bGluZVwiO1xuaW1wb3J0IEF0dGVuZGVlU3RhdHVzIGZyb20gXCIuLi9PcmRlcnNMaXN0L0F0dGVuZGVlU3RhdHVzXCI7XG5pbXBvcnQgT3JkZXJOdW1iZXIgZnJvbSBcIi4uL09yZGVyc0xpc3QvT3JkZXJOdW1iZXJcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuZnVuY3Rpb24gUmVmdW5kUmVxdWVzdGVkVGlja2V0KHsgdGlja2V0LCBvblJlbW92ZSB9KSB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgcmV0dXJuIChcbiAgICA8R3JpZFxuICAgICAgY29udGFpbmVyXG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy5yZWZ1bmRUaWNrZXRCb3hDb250YWluZXJ9XG4gICAgICBkYXRhLXRlc3RpZD1cInJlZnVuZC1yZXF1ZXN0ZWQtdGlja2V0LWNvbnRhaW5lclwiXG4gICAgPlxuICAgICAgPEdyaWQgeHM9ezEyfSBwYWRkaW5nPXsyfSBpdGVtIGp1c3RpZnk9XCJzcGFjZS1iZXR3ZWVuXCI+XG4gICAgICAgIDxTdGFja1xuICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJzcGFjZS1iZXR3ZWVuXCJcbiAgICAgICAgICB9fVxuICAgICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgICAgID5cbiAgICAgICAgICA8aDQ+e3RpY2tldC50aWNrZXRfdHlwZT8ubmFtZX08L2g0PlxuICAgICAgICAgIDxEZWxldGVPdXRsaW5lSWNvblxuICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJyZWZ1bmQtcmVtb3ZlLWJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5kZWxldGVJY29ufVxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25SZW1vdmUodGlja2V0KX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L1N0YWNrPlxuICAgICAgPC9HcmlkPlxuICAgICAgPEdyaWQgeHM9ezEyfSBwYWRkaW5nPXsyfSBpdGVtPlxuICAgICAgICA8QXR0ZW5kZWVTdGF0dXMgdGlja2V0PXt0aWNrZXR9IC8+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldE5vfT5cbiAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMudGlja2V0X25vXCIpfTp7XCIgXCJ9XG4gICAgICAgICAgPE9yZGVyTnVtYmVyIG51bWJlcj17dGlja2V0Lm51bWJlcn0gdHJ1bmNhdGVkIC8+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvR3JpZD5cbiAgICA8L0dyaWQ+XG4gICk7XG59XG5cblJlZnVuZFJlcXVlc3RlZFRpY2tldC5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLm9iamVjdCxcbiAgb25SZW1vdmU6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQ7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyBCb3gsIEJ1dHRvbiAsIFN0eWxlZEVuZ2luZVByb3ZpZGVyIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBDaGVja0NpcmNsZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2hlY2tDaXJjbGVcIjtcbmltcG9ydCBNdWx0aVN0ZXBTbGlkZXIgZnJvbSBcIi4uL011bHRpU3RlcFNsaWRlclwiO1xuaW1wb3J0IFJlZnVuZFJlcXVlc3RlZFRpY2tldCBmcm9tIFwiLi9SZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRcIjtcbmltcG9ydCBFcnJvckxhYmVsIGZyb20gXCIuLi9MYWJlbHMvRXJyb3JMYWJlbFwiO1xuaW1wb3J0IHsgcmVmdW5kQnVsa1RpY2tldHMsIHVwZGF0ZVRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsgU1RFUF9PTkUsIFNURVBfVFdPIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBSZWZ1bmRSZXF1ZXN0c01vZGFsKHtcbiAgdGlja2V0cyxcbiAgb3BlbixcbiAgb25SZW1vdmVTZWxlY3RlZFJlZnVuZFRpY2tldHMsXG4gIG9uUmVmdW5kU3VjY2Vzc0Nsb3NlLFxuICBvbkNsb3NlU2xpZGVyXG59KSB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCBbc3RlcCwgc2V0U3RlcF0gPSB1c2VTdGF0ZShTVEVQX09ORSk7XG4gIGNvbnN0IFtlcnJvck1zZywgc2V0RXJyb3JNc2ddID0gdXNlU3RhdGUoXCJcIik7XG4gIGNvbnN0IFtyZWZ1bmRTdWNjZXNzLCBzZXRSZWZ1bmRTdWNjZXNzXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCBjbG9zZVNsaWRlciA9ICgpID0+IHtcbiAgICBzZXRFcnJvck1zZyhcIlwiKTtcbiAgICBvbkNsb3NlU2xpZGVyKCk7XG4gICAgc2V0U3RlcChTVEVQX09ORSk7XG4gICAgaWYgKHJlZnVuZFN1Y2Nlc3MpIHtcbiAgICAgIG9uUmVmdW5kU3VjY2Vzc0Nsb3NlKCk7IC8vIGlmIHRoZSByZWZ1bmQgaXMgYSBzdWNjZXNzLCB0cmlnZ2VyIGFuZCByZS1yZXRyaWV2ZSB0aWNrZXRzIGJ5IG9yZGVyXG4gICAgICBzZXRSZWZ1bmRTdWNjZXNzKGZhbHNlKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgcmVmdW5kVGlja2V0cyA9IGFzeW5jICgpID0+IHtcbiAgICBkaXNwYXRjaChyZWZ1bmRCdWxrVGlja2V0cyh7IHRpY2tldHMgfSkpLnRoZW4oKHJlcykgPT4ge1xuICAgICAgZGlzcGF0Y2godXBkYXRlVGlja2V0c1JlZnVuZFJlcXVlc3RlZChyZXMpKTsgLy8gcmV0dXJuaW5nIHdoaWNoIHRpY2tldHMgd2VyZSBzdWNjZXNzZnVsXG4gICAgICBpZiAocmVzPy5sZW5ndGggPT09IHRpY2tldHMubGVuZ3RoKSB7XG4gICAgICAgIHNldFN0ZXAoU1RFUF9UV08pOyAvLyBzdWNjZXNzLCBhbGwgcmVmdW5kcyB3ZXJlIHJlcXVlc3RlZFxuICAgICAgICBzZXRSZWZ1bmRTdWNjZXNzKHRydWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0RXJyb3JNc2codChcImVycm9ycy5yZWZ1bmRfdW5zdWNjZXNzZnVsXCIpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBzZXRFcnJvck1zZyhcIlwiKTtcbiAgfTtcblxuICBjb25zdCByZWZ1bmRTdGVwT25lID0gKCkgPT4gKFxuICAgIDw+XG4gICAgICA8aDIgY2xhc3NOYW1lPXtzdHlsZXMucmVmdW5kVGV4dH0+XG4gICAgICAgIHt0KFwiY29uZmlybV9wb3B1cC5xdWVzdGlvbl90ZXh0X2NhbmNlbFwiKX1cbiAgICAgIDwvaDI+XG4gICAgICB7ZXJyb3JNc2cgJiYgKFxuICAgICAgICA8RXJyb3JMYWJlbFxuICAgICAgICAgIGNsYXNzTmFtZXM9e3N0eWxlcy5yZWZ1bmRFcnJvck1zZ31cbiAgICAgICAgICBjb2xvcj1cIiNGRjAwMDBcIlxuICAgICAgICAgIGRhdGFUZXN0SWQ9XCJmYWlsZWQtcmVmdW5kLW1lc3NhZ2VcIlxuICAgICAgICAgIG1lc3NhZ2U9e2Vycm9yTXNnfVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIDxCb3g+XG4gICAgICAgIHt0aWNrZXRzLm1hcCgodGlja2V0KSA9PiAoXG4gICAgICAgICAgPFJlZnVuZFJlcXVlc3RlZFRpY2tldFxuICAgICAgICAgICAga2V5PXt0aWNrZXQuaWR9XG4gICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgIG9uUmVtb3ZlPXtvblJlbW92ZVNlbGVjdGVkUmVmdW5kVGlja2V0c31cbiAgICAgICAgICAvPlxuICAgICAgICApKX1cbiAgICAgIDwvQm94PlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5hY3Rpb25CdXR0b25zfT5cbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQtY2FuY2VsLWJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY2FuY2VsQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9e2Nsb3NlU2xpZGVyfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJnZW5lcmFsLmNhbmNlbFwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kLWNvbnRpbnVlLWJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY29udGludWVCdXR0b259XG4gICAgICAgICAgb25DbGljaz17cmVmdW5kVGlja2V0c31cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwiZ2VuZXJhbC5jb250aW51ZVwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICA8L0JveD5cbiAgICA8Lz5cbiAgKTtcblxuICBjb25zdCByZWZ1bmRTdGVwVHdvID0gKCkgPT4gKFxuICAgIDxCb3hcbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnJlZnVuZFN1Y2Nlc3NmdWx9XG4gICAgICBkYXRhLXRlc3RpZD1cInJlZnVuZC1yZXF1ZXN0LXN1Y2Nlc3NmdWxcIlxuICAgID5cbiAgICAgIDxDaGVja0NpcmNsZUljb24gc3g9e3sgY29sb3I6IFwiIzRjYWY1MFwiIH19IC8+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy5zdWNjZXNzTXNnfT5cbiAgICAgICAge3QoXCJ0aWNrZXRzLnJlZnVuZF9yZXF1ZXN0X3N1Y2Nlc3NfMVwiKX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLnN1Y2Nlc3NNc2cyfT5cbiAgICAgICAge3QoXCJ0aWNrZXRzLnJlZnVuZF9yZXF1ZXN0X3N1Y2Nlc3NfMlwiKX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxCdXR0b25cbiAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZC1maW5pc2gtYnV0dG9uXCJcbiAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNvbnRpbnVlQnV0dG9ufVxuICAgICAgICBvbkNsaWNrPXtjbG9zZVNsaWRlcn1cbiAgICAgID5cbiAgICAgICAge3QoXCJnZW5lcmFsLmZpbmlzaFwiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgIDwvQm94PlxuICApO1xuXG4gIGNvbnN0IHJlbmRlclN0ZXBzID0gKCkgPT4ge1xuICAgIHN3aXRjaCAoc3RlcCkge1xuICAgICAgY2FzZSBTVEVQX09ORTpcbiAgICAgICAgcmV0dXJuIHJlZnVuZFN0ZXBPbmUoKTtcbiAgICAgIGNhc2UgU1RFUF9UV086XG4gICAgICAgIHJldHVybiByZWZ1bmRTdGVwVHdvKCk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gcmVmdW5kU3RlcE9uZSgpO1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIChcbiAgICA8U3R5bGVkRW5naW5lUHJvdmlkZXIgaW5qZWN0Rmlyc3Q+XG4gICAgICA8TXVsdGlTdGVwU2xpZGVyIG9wZW49e29wZW59IG9uQ2xvc2VTbGlkZXI9e2Nsb3NlU2xpZGVyfT5cbiAgICAgICAgPEJveFxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnJlZnVuZEhlYWRlcnN9XG4gICAgICAgICAgZGF0YS10ZXN0aWQ9XCJyZWZ1bmQtcmVxdWVzdC1tb2RhbFwiXG4gICAgICAgID5cbiAgICAgICAgICA8aDM+e3QoXCJvcmRlcl9zdW1tYXJ5LnJlcXVlc3RfcmVmdW5kXCIpfTwvaDM+XG4gICAgICAgIDwvQm94PlxuICAgICAgICB7cmVuZGVyU3RlcHMoKX1cbiAgICAgIDwvTXVsdGlTdGVwU2xpZGVyPlxuICAgIDwvU3R5bGVkRW5naW5lUHJvdmlkZXI+XG4gICk7XG59XG5cblJlZnVuZFJlcXVlc3RzTW9kYWwucHJvcFR5cGVzID0ge1xuICB0aWNrZXRzOiBQcm9wVHlwZXMuYXJyYXlcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlZnVuZFJlcXVlc3RzTW9kYWw7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBUZXh0RmllbGQsIEF1dG9jb21wbGV0ZSwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBxdWVyeVJlZ2lzdHJhdGlvbkNvbXBhbmllcyB9IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL3F1ZXJ5LWFjdGlvbnNcIjtcbmltcG9ydCB7IFRJQ0tFVF9BVFRFTkRFRV9LRVlTIH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50c1wiO1xuXG5jb25zdCBDb21wYW55RmllbGQgPSAoeyBmb3JtaWssIHN1bW1pdElkLCBpc1JlcXVpcmVkIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbaW5wdXRWYWx1ZSwgc2V0SW5wdXRWYWx1ZV0gPSBSZWFjdC51c2VTdGF0ZShcIlwiKTtcbiAgY29uc3QgW29wdGlvbnMsIHNldE9wdGlvbnNdID0gUmVhY3QudXNlU3RhdGUoW10pO1xuICBjb25zdCB7IGVycm9ycywgdmFsdWVzLCB0b3VjaGVkLCBzZXRGaWVsZFRvdWNoZWQsIHNldEZpZWxkVmFsdWUgfSA9IGZvcm1paztcbiAgY29uc3QgbmFtZSA9IFRJQ0tFVF9BVFRFTkRFRV9LRVlTLmNvbXBhbnk7XG4gIGNvbnN0IHZhbHVlID0gdmFsdWVzW25hbWVdO1xuICBjb25zdCBlcnJvciA9IHRvdWNoZWRbbmFtZV0gJiYgQm9vbGVhbihlcnJvcnNbbmFtZV0pO1xuICBjb25zdCBoZWxwZXJUZXh0ID0gdG91Y2hlZFtuYW1lXSAmJiBlcnJvcnNbbmFtZV07XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaW5wdXRWYWx1ZSA9PT0gXCJcIikge1xuICAgICAgc2V0T3B0aW9ucyh2YWx1ZSA/IFt2YWx1ZV0gOiBbXSk7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHF1ZXJ5UmVnaXN0cmF0aW9uQ29tcGFuaWVzKHN1bW1pdElkLCBpbnB1dFZhbHVlLCAocmVzdWx0cykgPT4ge1xuICAgICAgbGV0IG5ld09wdGlvbnMgPSBbXTtcblxuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIG5ld09wdGlvbnMgPSBbdmFsdWVdO1xuICAgICAgfVxuXG4gICAgICBpZiAocmVzdWx0cykge1xuICAgICAgICBuZXdPcHRpb25zID0gWy4uLm5ld09wdGlvbnMsIC4uLnJlc3VsdHNdO1xuICAgICAgfVxuXG4gICAgICBzZXRPcHRpb25zKG5ld09wdGlvbnMpO1xuICAgIH0pO1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH0sIFt2YWx1ZSwgaW5wdXRWYWx1ZV0pO1xuXG4gIHJldHVybiAoXG4gICAgPEF1dG9jb21wbGV0ZVxuICAgICAgbmFtZT17bmFtZX1cbiAgICAgIG9wdGlvbnM9e29wdGlvbnN9XG4gICAgICBhdXRvQ29tcGxldGVcbiAgICAgIGZyZWVTb2xvXG4gICAgICBpbmNsdWRlSW5wdXRJbkxpc3RcbiAgICAgIGZpbHRlclNlbGVjdGVkT3B0aW9uc1xuICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgb25CbHVyPXsoKSA9PiBzZXRGaWVsZFRvdWNoZWQobmFtZSwgdHJ1ZSwgdHJ1ZSl9XG4gICAgICBnZXRPcHRpb25MYWJlbD17KG9wdGlvbikgPT4ge1xuICAgICAgICAvLyBWYWx1ZSBzZWxlY3RlZCB3aXRoIGVudGVyLCByaWdodCBmcm9tIHRoZSBpbnB1dFxuICAgICAgICBpZiAodHlwZW9mIG9wdGlvbiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgIHJldHVybiBvcHRpb247XG4gICAgICAgIH1cbiAgICAgICAgLy8gQWRkIFwieHh4XCIgb3B0aW9uIGNyZWF0ZWQgZHluYW1pY2FsbHlcbiAgICAgICAgaWYgKG9wdGlvbi5pbnB1dFZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuIG9wdGlvbi5pbnB1dFZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIC8vIFJlZ3VsYXIgb3B0aW9uXG4gICAgICAgIHJldHVybiBvcHRpb24ubmFtZTtcbiAgICAgIH19XG4gICAgICBvbkNoYW5nZT17KGV2ZW50LCBuZXdWYWx1ZSkgPT4ge1xuICAgICAgICBjb25zdCB0bXBWYWx1ZSA9IG5ld1ZhbHVlPy5pbnB1dFZhbHVlIHx8IG5ld1ZhbHVlO1xuICAgICAgICBzZXRPcHRpb25zKHRtcFZhbHVlID8gW3RtcFZhbHVlLCAuLi5vcHRpb25zXSA6IG9wdGlvbnMpO1xuICAgICAgICBzZXRGaWVsZFZhbHVlKG5hbWUsIHRtcFZhbHVlKTtcbiAgICAgIH19XG4gICAgICBvbklucHV0Q2hhbmdlPXsoZXZlbnQsIG5ld0lucHV0VmFsdWUpID0+IHtcbiAgICAgICAgc2V0SW5wdXRWYWx1ZShuZXdJbnB1dFZhbHVlKTtcbiAgICAgIH19XG4gICAgICBmaWx0ZXJPcHRpb25zPXsob3B0aW9ucywgcGFyYW1zKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgaW5wdXRWYWx1ZSB9ID0gcGFyYW1zO1xuICAgICAgICBjb25zdCBmaWx0ZXJlZCA9IFsuLi5vcHRpb25zXTtcbiAgICAgICAgLy8gU3VnZ2VzdCB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmFsdWVcbiAgICAgICAgY29uc3QgaXNFeGlzdGluZyA9IG9wdGlvbnMuc29tZShcbiAgICAgICAgICAob3B0aW9uKSA9PiBpbnB1dFZhbHVlID09PSBvcHRpb24udGl0bGVcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGlucHV0VmFsdWUgIT09IFwiXCIgJiYgIWlzRXhpc3RpbmcpIHtcbiAgICAgICAgICBmaWx0ZXJlZC5wdXNoKHtcbiAgICAgICAgICAgIGlucHV0VmFsdWUsXG4gICAgICAgICAgICBuYW1lOiBgU2VsZWN0IFwiJHtpbnB1dFZhbHVlfVwiYFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZpbHRlcmVkO1xuICAgICAgfX1cbiAgICAgIHJlbmRlcklucHV0PXsocGFyYW1zKSA9PiAoXG4gICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgIHsuLi5wYXJhbXN9XG4gICAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfZGV0YWlsLmF0dGVuZGVlX2NvbXBhbnlcIil9XG4gICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgICAgaGVscGVyVGV4dD17aGVscGVyVGV4dH1cbiAgICAgICAgICBlcnJvcj17ZXJyb3J9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAgcmVuZGVyT3B0aW9uPXsocHJvcHMsIG9wdGlvbikgPT4ge1xuICAgICAgICBjb25zdCB7IGtleSwgLi4ub3B0aW9uUHJvcHMgfSA9IHByb3BzO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nXG4gICAgICAgICAgPGxpIGtleT17a2V5fSB7Li4ub3B0aW9uUHJvcHN9PlxuICAgICAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkyXCIgc3g9e3sgY29sb3I6IFwidGV4dC5zZWNvbmRhcnlcIiB9fT5cbiAgICAgICAgICAgICAge29wdGlvbi5uYW1lfVxuICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgIDwvbGk+XG4gICAgICAgICk7XG4gICAgICB9fVxuICAgIC8+XG4gICk7XG59O1xuXG5Db21wYW55RmllbGQucHJvcFR5cGVzID0ge1xuICBmb3JtaWs6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgc3VtbWl0SWQ6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgQ29tcGFueUZpZWxkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQ2hlY2tib3gsXG4gIEZvcm1Db250cm9sLFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBGb3JtR3JvdXAsXG4gIEZvcm1IZWxwZXJUZXh0LFxuICBGb3JtTGFiZWxcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IGdldExhYmVsLCB0b1NsdWcgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBDaGVja2JveExpc3RRdWVzdGlvbkZpZWxkID0gKHtcbiAgcXVlc3Rpb24sXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJcIixcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBjaGlsZHJlbixcbiAgdmFsdWUsXG4gIG9uQ2hhbmdlLFxuICBzZXRGaWVsZFZhbHVlLFxuICBlcnJvcixcbiAgaGVscGVyVGV4dCxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuICBjb25zdCBxdWVzdGlvbk1heFZhbHVlcyA9IHF1ZXN0aW9uLm1heF9zZWxlY3RlZF92YWx1ZXM7XG5cbiAgY29uc3QgcXVlc3Rpb25PcHRpb25zID1cbiAgICBxdWVzdGlvbi52YWx1ZXM/Lm1hcCgodmFsKSA9PiAoe1xuICAgICAgbGFiZWw6IHZhbC5sYWJlbCxcbiAgICAgIHZhbHVlOiB2YWwuaWQudG9TdHJpbmcoKVxuICAgIH0pKSB8fCBbXTtcblxuICBjb25zdCBoYW5kbGVDaGVja2JveExpc3RDaGFuZ2UgPSAoY2hlY2tlZCwgdmFsKSA9PiB7XG4gICAgY29uc3QgY3VycmVudEFucyA9IHZhbHVlIHx8IFtdO1xuICAgIGNvbnN0IG1heFNlbGVjdGlvblJlYWNoZWQgPSBjdXJyZW50QW5zLmxlbmd0aCA9PT0gcXVlc3Rpb25NYXhWYWx1ZXM7XG4gICAgbGV0IG5ld1ZhbHVlO1xuXG4gICAgaWYgKGNoZWNrZWQpIHtcbiAgICAgIG5ld1ZhbHVlID0gbWF4U2VsZWN0aW9uUmVhY2hlZCA/IGN1cnJlbnRBbnMgOiBbLi4uY3VycmVudEFucywgdmFsXTtcbiAgICB9IGVsc2Uge1xuICAgICAgbmV3VmFsdWUgPSBjdXJyZW50QW5zLmZpbHRlcigodikgPT4gdiAhPT0gdmFsKTtcbiAgICB9XG5cbiAgICBzZXRGaWVsZFZhbHVlKHF1ZXN0aW9uU2x1ZywgbmV3VmFsdWUpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICBpZD17YCR7cXVlc3Rpb25TbHVnfV9jb250YWluZXJgfVxuICAgICAgY2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICA+XG4gICAgICA8Rm9ybUNvbnRyb2xcbiAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgZXJyb3I9e2Vycm9yfVxuICAgICAgPlxuICAgICAgICA8Rm9ybUxhYmVsPntxdWVzdGlvbkxhYmVsfTwvRm9ybUxhYmVsPlxuICAgICAgICB7ZXJyb3IgJiYgPEZvcm1IZWxwZXJUZXh0PntoZWxwZXJUZXh0ID8/IFwiIFwifTwvRm9ybUhlbHBlclRleHQ+fVxuICAgICAgICA8Rm9ybUdyb3VwPlxuICAgICAgICAgIHtxdWVzdGlvbk9wdGlvbnMubWFwKChvcCkgPT4gKFxuICAgICAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAga2V5PXtvcC5sYWJlbH1cbiAgICAgICAgICAgICAgbmFtZT17cXVlc3Rpb25TbHVnfVxuICAgICAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3ZhbHVlPy5pbmNsdWRlcyhvcC52YWx1ZSl9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGV2KSA9PlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVDaGVja2JveExpc3RDaGFuZ2UoZXYudGFyZ2V0LmNoZWNrZWQsIG9wLnZhbHVlKVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgbGFiZWw9e29wLmxhYmVsfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9Gb3JtR3JvdXA+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvRm9ybUNvbnRyb2w+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5DaGVja2JveExpc3RRdWVzdGlvbkZpZWxkLnByb3BUeXBlcyA9IHtcbiAgcXVlc3Rpb246IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgdmFsdWU6IFByb3BUeXBlcy5hcnJheSxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBzZXRGaWVsZFZhbHVlOiBQcm9wVHlwZXMuZnVuYyxcbiAgZXJyb3I6IFByb3BUeXBlcy5ib29sLFxuICBoZWxwZXJUZXh0OiBQcm9wVHlwZXMuc3RyaW5nXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDaGVja2JveExpc3RRdWVzdGlvbkZpZWxkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQ2hlY2tib3gsXG4gIEZvcm1Db250cm9sLFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBGb3JtSGVscGVyVGV4dFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFJhd0hUTUwgZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvY29tcG9uZW50cy9yYXctaHRtbFwiO1xuaW1wb3J0IHsgZ2V0TGFiZWwsIHRvU2x1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IENoZWNrYm94UXVlc3Rpb25GaWVsZCA9ICh7XG4gIHF1ZXN0aW9uLFxuICBxdWVzdGlvbkNsYXNzTmFtZSA9IFwiXCIsXG4gIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgY2hpbGRyZW4sXG4gIHZhbHVlLFxuICBlcnJvcixcbiAgaGVscGVyVGV4dCxcbiAgc2V0RmllbGRWYWx1ZSxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICBpZD17YCR7cXVlc3Rpb25TbHVnfV9jb250YWluZXJgfVxuICAgICAgY2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICA+XG4gICAgICA8Rm9ybUNvbnRyb2wgZnVsbFdpZHRoIGVycm9yPXtlcnJvcn0+XG4gICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgbmFtZT17cXVlc3Rpb25TbHVnfVxuICAgICAgICAgICAgICBjaGVja2VkPXshIXZhbHVlfVxuICAgICAgICAgICAgICBsYWJlbD17PFJhd0hUTUw+e3F1ZXN0aW9uTGFiZWx9PC9SYXdIVE1MPn1cbiAgICAgICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgICAgICAgey4uLnJlc3R9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICBsYWJlbD17PFJhd0hUTUw+e3F1ZXN0aW9uTGFiZWx9PC9SYXdIVE1MPn1cbiAgICAgICAgICBkaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgLz5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgICB7ZXJyb3IgJiYgPEZvcm1IZWxwZXJUZXh0PntoZWxwZXJUZXh0ID8/IFwiIFwifTwvRm9ybUhlbHBlclRleHQ+fVxuICAgICAgPC9Gb3JtQ29udHJvbD5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbkNoZWNrYm94UXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHZhbHVlOiBQcm9wVHlwZXMuYm9vbCxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIHNldEZpZWxkVmFsdWU6IFByb3BUeXBlcy5mdW5jLFxuICBlcnJvcjogUHJvcFR5cGVzLmJvb2wsXG4gIGhlbHBlclRleHQ6IFByb3BUeXBlcy5zdHJpbmdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IENoZWNrYm94UXVlc3Rpb25GaWVsZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEZvcm1Db250cm9sLCBJbnB1dExhYmVsLCBNZW51SXRlbSwgU2VsZWN0IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IGdldExhYmVsLCB0b1NsdWcgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBEcm9wZG93blF1ZXN0aW9uRmllbGQgPSAoe1xuICBxdWVzdGlvbixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcIlwiLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIHNldEZpZWxkVmFsdWUsXG4gIGNoaWxkcmVuLFxuICBlcnJvcixcbiAgaGVscGVyVGV4dCxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuXG4gIGNvbnN0IHF1ZXN0aW9uT3B0aW9ucyA9XG4gICAgcXVlc3Rpb24udmFsdWVzPy5tYXAoKHZhbCkgPT4gKHtcbiAgICAgIGxhYmVsOiB2YWwubGFiZWwsXG4gICAgICB2YWx1ZTogdmFsLmlkXG4gICAgfSkpIHx8IFtdO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICBpZD17YCR7cXVlc3Rpb25TbHVnfV9jb250YWluZXJgfVxuICAgICAgY2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICA+XG4gICAgICA8Rm9ybUNvbnRyb2xcbiAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgZXJyb3I9e2Vycm9yfVxuICAgICAgPlxuICAgICAgICA8SW5wdXRMYWJlbCBpZD17YCR7cXVlc3Rpb25TbHVnfV9sYWJlbGB9PntxdWVzdGlvbkxhYmVsfTwvSW5wdXRMYWJlbD5cbiAgICAgICAgPFNlbGVjdFxuICAgICAgICAgIGxhYmVsSWQ9e2Ake3F1ZXN0aW9uU2x1Z31fbGFiZWxgfVxuICAgICAgICAgIG5hbWU9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICBpZD17cXVlc3Rpb25TbHVnfVxuICAgICAgICAgIGxhYmVsPXtxdWVzdGlvbkxhYmVsfVxuICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgey4uLnJlc3R9XG4gICAgICAgICAgc3R5bGU9e3sgbWFyZ2luQm90dG9tOiAyMCB9fVxuICAgICAgICA+XG4gICAgICAgICAge3F1ZXN0aW9uT3B0aW9ucy5tYXAoKG9wKSA9PiAoXG4gICAgICAgICAgICA8TWVudUl0ZW0ga2V5PXtvcC5sYWJlbH0gdmFsdWU9e29wLnZhbHVlfT5cbiAgICAgICAgICAgICAge29wLmxhYmVsfVxuICAgICAgICAgICAgPC9NZW51SXRlbT5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9TZWxlY3Q+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvRm9ybUNvbnRyb2w+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5Ecm9wZG93blF1ZXN0aW9uRmllbGQucHJvcFR5cGVzID0ge1xuICBxdWVzdGlvbjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBxdWVzdGlvbkNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgaXNEaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgZXJyb3I6IFByb3BUeXBlcy5ib29sLFxuICBoZWxwZXJUZXh0OiBQcm9wVHlwZXMuc3RyaW5nLFxuICBzZXRGaWVsZFZhbHVlOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgRHJvcGRvd25RdWVzdGlvbkZpZWxkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgRm9ybUNvbnRyb2wsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIEZvcm1IZWxwZXJUZXh0LFxuICBGb3JtTGFiZWwsXG4gIFJhZGlvLFxuICBSYWRpb0dyb3VwXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBnZXRMYWJlbCwgdG9TbHVnIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgUmFkaW9MaXN0UXVlc3Rpb25GaWVsZCA9ICh7XG4gIHF1ZXN0aW9uLFxuICBxdWVzdGlvbkNsYXNzTmFtZSA9IFwiXCIsXG4gIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgY2hpbGRyZW4sXG4gIGVycm9yLFxuICBoZWxwZXJUZXh0LFxuICBzZXRGaWVsZFZhbHVlLFxuICAuLi5yZXN0XG59KSA9PiB7XG4gIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxdWVzdGlvbi5uYW1lLCBxdWVzdGlvbi5pZCk7XG4gIGNvbnN0IHF1ZXN0aW9uTGFiZWwgPSBnZXRMYWJlbChxdWVzdGlvbik7XG4gIGNvbnN0IGlzUmVxdWlyZWQgPSBxdWVzdGlvbi5tYW5kYXRvcnk7XG5cbiAgY29uc3QgcXVlc3Rpb25PcHRpb25zID1cbiAgICBxdWVzdGlvbi52YWx1ZXM/Lm1hcCgodmFsKSA9PiAoe1xuICAgICAgbGFiZWw6IHZhbC5sYWJlbCxcbiAgICAgIHZhbHVlOiB2YWwuaWQudG9TdHJpbmcoKVxuICAgIH0pKSB8fCBbXTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Db250cm9sXG4gICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgID5cbiAgICAgICAgPEZvcm1MYWJlbCBpZD17YCR7cXVlc3Rpb25TbHVnfV9sYWJlbGB9PntxdWVzdGlvbkxhYmVsfTwvRm9ybUxhYmVsPlxuICAgICAgICB7ZXJyb3IgJiYgPEZvcm1IZWxwZXJUZXh0PntoZWxwZXJUZXh0ID8/IFwiIFwifTwvRm9ybUhlbHBlclRleHQ+fVxuICAgICAgICA8UmFkaW9Hcm91cFxuICAgICAgICAgIGFyaWEtbGFiZWxsZWRieT17YCR7cXVlc3Rpb25TbHVnfV9sYWJlbGB9XG4gICAgICAgICAgbmFtZT17cXVlc3Rpb25TbHVnfVxuICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgey4uLnJlc3R9XG4gICAgICAgID5cbiAgICAgICAgICB7cXVlc3Rpb25PcHRpb25zLm1hcCgob3ApID0+IChcbiAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgIGtleT17b3AubGFiZWx9XG4gICAgICAgICAgICAgIHZhbHVlPXtvcC52YWx1ZX1cbiAgICAgICAgICAgICAgY29udHJvbD17PFJhZGlvIC8+fVxuICAgICAgICAgICAgICBsYWJlbD17b3AubGFiZWx9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L1JhZGlvR3JvdXA+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvRm9ybUNvbnRyb2w+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5SYWRpb0xpc3RRdWVzdGlvbkZpZWxkLnByb3BUeXBlcyA9IHtcbiAgcXVlc3Rpb246IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIGVycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgaGVscGVyVGV4dDogUHJvcFR5cGVzLnN0cmluZyxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJhZGlvTGlzdFF1ZXN0aW9uRmllbGQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBGb3JtR3JvdXAsIFRleHRGaWVsZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBnZXRMYWJlbCwgdG9TbHVnIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgVGV4dFF1ZXN0aW9uRmllbGQgPSAoe1xuICBxdWVzdGlvbixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcIlwiLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIGNoaWxkcmVuLFxuICBzZXRGaWVsZFZhbHVlLFxuICAuLi5yZXN0XG59KSA9PiB7XG4gIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxdWVzdGlvbi5uYW1lLCBxdWVzdGlvbi5pZCk7XG4gIGNvbnN0IHF1ZXN0aW9uTGFiZWwgPSBnZXRMYWJlbChxdWVzdGlvbik7XG4gIGNvbnN0IGlzUmVxdWlyZWQgPSBxdWVzdGlvbi5tYW5kYXRvcnk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBrZXk9e3F1ZXN0aW9uU2x1Z31cbiAgICAgIGlkPXtgJHtxdWVzdGlvblNsdWd9X2NvbnRhaW5lcmB9XG4gICAgICBjbGFzc05hbWU9e3F1ZXN0aW9uQ2xhc3NOYW1lfVxuICAgID5cbiAgICAgIDxGb3JtR3JvdXA+XG4gICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICBuYW1lPXtxdWVzdGlvblNsdWd9XG4gICAgICAgICAgbGFiZWw9e3F1ZXN0aW9uTGFiZWx9XG4gICAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgLz5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9Gb3JtR3JvdXA+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5UZXh0UXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBzZXRGaWVsZFZhbHVlOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgVGV4dFF1ZXN0aW9uRmllbGQ7XG4iLCJpbXBvcnQge1xuICBRdWVzdGlvblR5cGVfQ2hlY2tib3gsXG4gIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QsXG4gIFF1ZXN0aW9uVHlwZV9Db21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdFxufSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBjb25zdCBjaGVja1J1bGUgPSAodmFsdWUsIHJ1bGUpID0+IHtcbiAgY29uc3QgdmFsdWVzID0gcnVsZS5hbnN3ZXJfdmFsdWVzO1xuXG4gIGlmICghdmFsdWUpIHJldHVybiBmYWxzZTtcblxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICBpZiAoIXZhbHVlLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuICAgIGxldCByZXMgPSBydWxlLmFuc3dlcl92YWx1ZXNfb3BlcmF0b3IgPT09IFwiQW5kXCI7XG4gICAgdmFsdWVzLmZvckVhY2goKHYpID0+IHtcbiAgICAgIGlmIChydWxlLmFuc3dlcl92YWx1ZXNfb3BlcmF0b3IgPT09IFwiQW5kXCIpIHtcbiAgICAgICAgcmVzID0gcmVzICYmIHZhbHVlLmluY2x1ZGVzKHYpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gT3JcbiAgICAgICAgcmVzID0gcmVzIHx8IHZhbHVlLmluY2x1ZGVzKHYpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXM7XG4gIH1cbiAgcmV0dXJuIHZhbHVlcy5pbmNsdWRlcyh2YWx1ZT8udG9TdHJpbmcoKSk7XG59O1xuXG5leHBvcnQgY29uc3QgY2hlY2tWaXNpYmlsaXR5ID0gKHJ1bGUsIHJ1bGVSZXN1bHQsIGNoaWxkcmVuKSA9PiB7XG4gIGlmIChydWxlLnZpc2liaWxpdHkgPT09IFwiVmlzaWJsZVwiKSB7XG4gICAgaWYgKHJ1bGUudmlzaWJpbGl0eV9jb25kaXRpb24gPT09IFwiRXF1YWxcIikge1xuICAgICAgaWYgKHJ1bGVSZXN1bHQpIHJldHVybiBjaGlsZHJlbjtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICAvLyBOb24gRXF1YWxcbiAgICBpZiAoIXJ1bGVSZXN1bHQpIHtcbiAgICAgIHJldHVybiBjaGlsZHJlbjtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgLy8gbm90IHZpc2libGVcbiAgaWYgKHJ1bGUudmlzaWJpbGl0eV9jb25kaXRpb24gPT09IFwiRXF1YWxcIikge1xuICAgIGlmICghcnVsZVJlc3VsdCkgcmV0dXJuIGNoaWxkcmVuO1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGlmIChydWxlUmVzdWx0KSByZXR1cm4gY2hpbGRyZW47XG4gIHJldHVybiBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IHRvU2x1ZyA9ICh0ZXh0LCBxdWVzdGlvbklkKSA9PiB7XG4gIGNvbnN0IHRleHRMQyA9IHRleHQudG9Mb3dlckNhc2UoKTtcbiAgcmV0dXJuIGAke3RleHRMQy5yZXBsYWNlKC9bXmEtekEtWjAtOV0rL2csIFwiX1wiKX1fJHtxdWVzdGlvbklkfWA7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TGFiZWwgPSAocSkgPT5cbiAgLy8gcmVwbGFjZSBsaW5lIGJyZWFrcyBhbmQgcmVtb3ZlIG91dGVyIDxwPlxuICBxPy5sYWJlbD8ucmVwbGFjZSgvXFxuL2csIFwiIFwiKS5yZXBsYWNlKC88cD4oLiopPFxcL3A+L2dpLCBcIiQxXCIpO1xuXG5leHBvcnQgY29uc3QgaXNBbnN3ZXJlZCA9IChhbnN3ZXIpID0+IHtcbiAgaWYgKCFhbnN3ZXIpIHJldHVybiBmYWxzZTtcbiAgLy8gY2hlY2sgdHlwZVxuICBpZiAoQXJyYXkuaXNBcnJheShhbnN3ZXIpKSByZXR1cm4gYW5zd2VyLmxlbmd0aCA+IDA7XG4gIGlmICh0eXBlb2YgYW5zd2VyID09PSBcInN0cmluZ1wiKSByZXR1cm4gYW5zd2VyLmxlbmd0aCA+IDA7XG4gIGlmICh0eXBlb2YgYW5zd2VyID09PSBcIm51bWJlclwiKSByZXR1cm4gYW5zd2VyID4gMDtcbiAgaWYgKHR5cGVvZiBhbnN3ZXIgPT09IFwiYm9vbGVhblwiKSByZXR1cm4gYW5zd2VyO1xuICByZXR1cm4gZmFsc2U7XG59O1xuXG5leHBvcnQgY29uc3QgY2hlY2tJZlZhbHVlTWF0Y2ggPSAoYW5zd2VyLCBjb21wYXJlVmFsKSA9PiB7XG4gIGNvbnN0IGFuc3dlckFycmF5ID0gQXJyYXkuaXNBcnJheShhbnN3ZXIpID8gYW5zd2VyIDogW2Fuc3dlcl07XG5cbiAgcmV0dXJuIGFuc3dlckFycmF5LnNvbWUoKHYpID0+IHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjb21wYXJlVmFsKSkge1xuICAgICAgcmV0dXJuIGNvbXBhcmVWYWwuaW5jbHVkZXModik7XG4gICAgfVxuICAgIHJldHVybiB2ID09PSBjb21wYXJlVmFsO1xuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUeXBlSW5pdGlhbFZhbHVlID0gKHEpID0+IHtcbiAgc3dpdGNoIChxLnR5cGUpIHtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja2JveDpcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3Q6XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3Q6XG4gICAgICByZXR1cm4gW107XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94OlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvbWJvQm94OlxuICAgICAgcmV0dXJuIFwiXCI7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBcIlwiO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VHlwZVZhbHVlID0gKGFucywgdHlwZSkgPT4ge1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja2JveDpcbiAgICAgIHJldHVybiBhbnMgPT09IFwidHJ1ZVwiO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdDpcbiAgICAgIHJldHVybiBhbnM/LnNwbGl0KFwiLFwiKSB8fCBbXTtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3g6XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ29tYm9Cb3g6XG4gICAgICByZXR1cm4gYW5zIHx8IFwiXCI7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0OlxuICAgICAgcmV0dXJuIGFucyB8fCBudWxsO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gYW5zO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgdHJhbnNmb3JtQW53ZXJzRm9ybWF0ID0gKGFuc3dlcnMpID0+IHtcbiAgY29uc3Qge1xuICAgIGF0dGVuZGVlX2VtYWlsLFxuICAgIGF0dGVuZGVlX2ZpcnN0X25hbWUsXG4gICAgYXR0ZW5kZWVfbGFzdF9uYW1lLFxuICAgIGF0dGVuZGVlX2NvbXBhbnksXG4gICAgZGlzY2xhaW1lcl9hY2NlcHRlZCxcbiAgICAuLi5leHRyYV9xdWVzdGlvbnNcbiAgfSA9IGFuc3dlcnM7XG5cbiAgY29uc3QgZm9ybWF0dGVkRVEgPSBPYmplY3QuZW50cmllcyhleHRyYV9xdWVzdGlvbnMpLm1hcCgoW2tleSwgdmFsdWVdKSA9PiAoe1xuICAgIHF1ZXN0aW9uX2lkOiBwYXJzZUludChrZXkuc3BsaXQoXCJfXCIpLnBvcCgpLCAxMCksXG4gICAgYW5zd2VyOiB2YWx1ZS50b1N0cmluZygpXG4gIH0pKTtcblxuICByZXR1cm4ge1xuICAgIGF0dGVuZGVlX2VtYWlsLFxuICAgIGF0dGVuZGVlX2ZpcnN0X25hbWUsXG4gICAgYXR0ZW5kZWVfbGFzdF9uYW1lLFxuICAgIGF0dGVuZGVlX2NvbXBhbnksXG4gICAgZGlzY2xhaW1lcl9hY2NlcHRlZCxcbiAgICBleHRyYV9xdWVzdGlvbnM6IGZvcm1hdHRlZEVRXG4gIH07XG59O1xuIiwiZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9UZXh0ID0gXCJUZXh0XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX1RleHRBcmVhID0gXCJUZXh0QXJlYVwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9DaGVja2JveCA9IFwiQ2hlY2tCb3hcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0ID0gXCJSYWRpb0J1dHRvbkxpc3RcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfQ29tYm9Cb3ggPSBcIkNvbWJvQm94XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCA9IFwiQ2hlY2tCb3hMaXN0XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCA9IFwiQ291bnRyeUNvbWJvQm94XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uID0gXCJSYWRpb0J1dHRvblwiO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuXG5pbXBvcnQge1xuICB0b1NsdWcsXG4gIGlzQW5zd2VyZWQsXG4gIGNoZWNrVmlzaWJpbGl0eSxcbiAgY2hlY2tSdWxlXG59IGZyb20gXCIuL2NvbXBvbmVudHMvdXRpbHNcIjtcbmltcG9ydCB7XG4gIFF1ZXN0aW9uVHlwZV9DaGVja2JveCxcbiAgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCxcbiAgUXVlc3Rpb25UeXBlX0NvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0LFxuICBRdWVzdGlvblR5cGVfVGV4dCxcbiAgUXVlc3Rpb25UeXBlX1RleHRBcmVhXG59IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IFRleHRRdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvVGV4dFF1ZXN0aW9uRmllbGRcIjtcbmltcG9ydCBDaGVja2JveFF1ZXN0aW9uRmllbGQgZnJvbSBcIi4vY29tcG9uZW50cy9DaGVja2JveFF1ZXN0aW9uRmllbGRcIjtcbmltcG9ydCBSYWRpb0xpc3RRdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvUmFkaW9MaXN0UXVlc3Rpb25GaWVsZFwiO1xuaW1wb3J0IENoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQgZnJvbSBcIi4vY29tcG9uZW50cy9DaGVja2JveExpc3RRdWVzdGlvbkZpZWxkXCI7XG5pbXBvcnQgRHJvcGRvd25RdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvRHJvcGRvd25RdWVzdGlvbkZpZWxkXCI7XG5cbmNvbnN0IGdldFF1ZXN0aW9uRmllbGRDb21wb25lbnQgPSAocXVlc3Rpb25UeXBlKSA9PiB7XG4gIHN3aXRjaCAocXVlc3Rpb25UeXBlKSB7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfVGV4dEFyZWE6XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfVGV4dDoge1xuICAgICAgcmV0dXJuIFRleHRRdWVzdGlvbkZpZWxkO1xuICAgIH1cbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja2JveDoge1xuICAgICAgcmV0dXJuIENoZWNrYm94UXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0OiB7XG4gICAgICByZXR1cm4gUmFkaW9MaXN0UXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0OiB7XG4gICAgICByZXR1cm4gQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94OlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvbWJvQm94OiB7XG4gICAgICByZXR1cm4gRHJvcGRvd25RdWVzdGlvbkZpZWxkO1xuICAgIH1cbiAgICBkZWZhdWx0OiB7XG4gICAgICByZXR1cm4gUmVhY3QuRnJhZ21lbnQ7XG4gICAgfVxuICB9XG59O1xuXG5jb25zdCBFeHRyYVF1ZXN0aW9uc0ZpZWxkcyA9ICh7XG4gIGV4dHJhUXVlc3Rpb25zLFxuICBjbGFzc05hbWUgPSBcImV4dHJhUXVlc3Rpb25zXCIsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJleHRyYVF1ZXN0aW9uXCIsXG4gIHJlYWRPbmx5ID0gZmFsc2UsXG4gIGFsbG93RWRpdCA9IHRydWUsXG4gIGZvcm1pa1xufSkgPT4ge1xuICBjb25zdCByZW5kZXJSdWxlID0gKHJ1bGUsIHF1ZXN0aW9uU2x1ZykgPT5cbiAgICBjaGVja1Zpc2liaWxpdHkoXG4gICAgICBydWxlLFxuICAgICAgY2hlY2tSdWxlKGZvcm1pay52YWx1ZXNbcXVlc3Rpb25TbHVnXSwgcnVsZSksXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICAgIHJlbmRlclF1ZXN0aW9uKHJ1bGUuc3ViX3F1ZXN0aW9uKVxuICAgICk7XG5cbiAgY29uc3QgcmVuZGVyUXVlc3Rpb24gPSAocSkgPT4ge1xuICAgIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxLm5hbWUsIHEuaWQpO1xuICAgIC8vIGRpc2FibGUgZmllbGQgaWYgZWRpdCBpc24ndCBhbGxvd2VkIGFuZCB0aGUgcXVlc3Rpb25zIGlzIGFuc3dlcmVkXG4gICAgY29uc3QgaXNEaXNhYmxlZCA9XG4gICAgICAoIWFsbG93RWRpdCAmJiBpc0Fuc3dlcmVkKGZvcm1pay52YWx1ZXNbcXVlc3Rpb25TbHVnXSkpIHx8IHJlYWRPbmx5O1xuICAgIGNvbnN0IFF1ZXN0aW9uRmllbGRDb21wb25lbnQgPSBnZXRRdWVzdGlvbkZpZWxkQ29tcG9uZW50KHEudHlwZSk7XG5cbiAgICBjb25zdCBmb3JtaWtQcm9wcyA9IHtcbiAgICAgIHZhbHVlOiBmb3JtaWsudmFsdWVzW3F1ZXN0aW9uU2x1Z10sXG4gICAgICBvbkNoYW5nZTogZm9ybWlrLmhhbmRsZUNoYW5nZSxcbiAgICAgIG9uQmx1cjogZm9ybWlrLmhhbmRsZUJsdXIsXG4gICAgICBlcnJvcjpcbiAgICAgICAgZm9ybWlrLnRvdWNoZWRbcXVlc3Rpb25TbHVnXSAmJiBCb29sZWFuKGZvcm1pay5lcnJvcnNbcXVlc3Rpb25TbHVnXSksXG4gICAgICBoZWxwZXJUZXh0OiBmb3JtaWsudG91Y2hlZFtxdWVzdGlvblNsdWddICYmIGZvcm1pay5lcnJvcnNbcXVlc3Rpb25TbHVnXSxcbiAgICAgIHNldEZpZWxkVmFsdWU6IGZvcm1pay5zZXRGaWVsZFZhbHVlXG4gICAgfTtcblxuICAgIHJldHVybiAoXG4gICAgICA8UXVlc3Rpb25GaWVsZENvbXBvbmVudFxuICAgICAgICBrZXk9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgcXVlc3Rpb249e3F9XG4gICAgICAgIHF1ZXN0aW9uQ2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICAgICAgaXNEaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgey4uLmZvcm1pa1Byb3BzfVxuICAgICAgPlxuICAgICAgICB7cS5zdWJfcXVlc3Rpb25fcnVsZXM/Lm1hcCgocnVsZSkgPT4gcmVuZGVyUnVsZShydWxlLCBxdWVzdGlvblNsdWcpKX1cbiAgICAgIDwvUXVlc3Rpb25GaWVsZENvbXBvbmVudD5cbiAgICApO1xuICB9O1xuXG4gIHJldHVybiA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NOYW1lfT57ZXh0cmFRdWVzdGlvbnMubWFwKHJlbmRlclF1ZXN0aW9uKX08L2Rpdj47XG59O1xuXG5FeHRyYVF1ZXN0aW9uc0ZpZWxkcy5wcm9wVHlwZXMgPSB7XG4gIGV4dHJhUXVlc3Rpb25zOiBQcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxcbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBxdWVzdGlvbkNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgYWxsb3dFZGl0OiBQcm9wVHlwZXMuYm9vbCxcbiAgcmVhZE9ubHk6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBFeHRyYVF1ZXN0aW9uc0ZpZWxkcztcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgQ2hlY2tib3gsXG4gIEZvcm1Db250cm9sLFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBGb3JtSGVscGVyVGV4dFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFJhd0hUTUwgZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvY29tcG9uZW50cy9yYXctaHRtbFwiO1xuaW1wb3J0IHsgVElDS0VUX0FUVEVOREVFX0tFWVMgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgUmVnaXN0cmF0aW9uRGlzY2xhaW1lciA9ICh7XG4gIGRpc2NsYWltZXIsXG4gIGZvcm1payxcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBpc1JlcXVpcmVkID0gdHJ1ZVxufSkgPT4ge1xuICBjb25zdCBuYW1lID0gVElDS0VUX0FUVEVOREVFX0tFWVMuZGlzY2xhaW1lckFjY2VwdGVkO1xuICBjb25zdCB7IGVycm9ycywgdmFsdWVzLCB0b3VjaGVkLCBoYW5kbGVDaGFuZ2UsIGhhbmRsZUJsdXIgfSA9IGZvcm1paztcbiAgY29uc3QgdmFsdWUgPSB2YWx1ZXNbbmFtZV07XG4gIGNvbnN0IGVycm9yID0gdG91Y2hlZFtuYW1lXSAmJiBCb29sZWFuKGVycm9yc1tuYW1lXSk7XG4gIGNvbnN0IGhlbHBlclRleHQgPSB0b3VjaGVkW25hbWVdICYmIGVycm9yc1tuYW1lXTtcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMud3JhcHBlcn0+XG4gICAgICA8Rm9ybUNvbnRyb2wgZnVsbFdpZHRoIGVycm9yPXtlcnJvcn0+XG4gICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgbmFtZT17bmFtZX1cbiAgICAgICAgICAgICAgY2hlY2tlZD17ISF2YWx1ZX1cbiAgICAgICAgICAgICAgbGFiZWw9ezxSYXdIVE1MPntkaXNjbGFpbWVyfTwvUmF3SFRNTD59XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICAgIG9uQmx1cj17aGFuZGxlQmx1cn1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgfVxuICAgICAgICAgIGxhYmVsPXs8UmF3SFRNTD57ZGlzY2xhaW1lcn08L1Jhd0hUTUw+fVxuICAgICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICAvPlxuICAgICAgICB7ZXJyb3IgJiYgPEZvcm1IZWxwZXJUZXh0PntoZWxwZXJUZXh0ID8/IFwiIFwifTwvRm9ybUhlbHBlclRleHQ+fVxuICAgICAgPC9Gb3JtQ29udHJvbD5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cblJlZ2lzdHJhdGlvbkRpc2NsYWltZXIucHJvcFR5cGVzID0ge1xuICBkaXNjbGFpbWVyOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIGZvcm1pazogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgaXNSZXF1aXJlZDogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlZ2lzdHJhdGlvbkRpc2NsYWltZXI7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBUZXh0RmllbGQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuXG5jb25zdCBUaWNrZXREZWxlZ2F0aW9uRmllbGRzID0gKHsgZm9ybWlrIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIGlkPVwiZGVsZWdhdGVkX2ZpcnN0X25hbWVcIlxuICAgICAgICBsYWJlbD17dChcInRpY2tldF9kZXRhaWwuZmlyc3RfbmFtZVwiKX1cbiAgICAgICAgdmFsdWU9e2Zvcm1pay52YWx1ZXMuZGVsZWdhdGVkX2ZpcnN0X25hbWV9XG4gICAgICAgIG9uQ2hhbmdlPXtmb3JtaWsuaGFuZGxlQ2hhbmdlfVxuICAgICAgICBvbkJsdXI9e2Zvcm1pay5oYW5kbGVCbHVyfVxuICAgICAgICBlcnJvcj17XG4gICAgICAgICAgZm9ybWlrLnRvdWNoZWQuZGVsZWdhdGVkX2ZpcnN0X25hbWUgJiZcbiAgICAgICAgICBCb29sZWFuKGZvcm1pay5lcnJvcnMuZGVsZWdhdGVkX2ZpcnN0X25hbWUpXG4gICAgICAgIH1cbiAgICAgICAgaGVscGVyVGV4dD17XG4gICAgICAgICAgZm9ybWlrLnRvdWNoZWQuZGVsZWdhdGVkX2ZpcnN0X25hbWUgJiZcbiAgICAgICAgICBmb3JtaWsuZXJyb3JzLmRlbGVnYXRlZF9maXJzdF9uYW1lXG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgICA8VGV4dEZpZWxkXG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBpZD1cImRlbGVnYXRlZF9sYXN0X25hbWVcIlxuICAgICAgICBsYWJlbD17dChcInRpY2tldF9kZXRhaWwubGFzdF9uYW1lXCIpfVxuICAgICAgICB2YWx1ZT17Zm9ybWlrLnZhbHVlcy5kZWxlZ2F0ZWRfbGFzdF9uYW1lfVxuICAgICAgICBvbkNoYW5nZT17Zm9ybWlrLmhhbmRsZUNoYW5nZX1cbiAgICAgICAgb25CbHVyPXtmb3JtaWsuaGFuZGxlQmx1cn1cbiAgICAgICAgZXJyb3I9e1xuICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlZF9sYXN0X25hbWUgJiZcbiAgICAgICAgICBCb29sZWFuKGZvcm1pay5lcnJvcnMuZGVsZWdhdGVkX2xhc3RfbmFtZSlcbiAgICAgICAgfVxuICAgICAgICBoZWxwZXJUZXh0PXtcbiAgICAgICAgICBmb3JtaWsudG91Y2hlZC5kZWxlZ2F0ZWRfbGFzdF9uYW1lICYmXG4gICAgICAgICAgZm9ybWlrLmVycm9ycy5kZWxlZ2F0ZWRfbGFzdF9uYW1lXG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgPC8+XG4gICk7XG59O1xuXG5UaWNrZXREZWxlZ2F0aW9uRmllbGRzLnByb3BUeXBlcyA9IHtcbiAgZm9ybWlrOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldERlbGVnYXRpb25GaWVsZHM7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3gsIEJ1dHRvbiwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VGb3JtaWsgfSBmcm9tIFwiZm9ybWlrXCI7XG5pbXBvcnQgKiBhcyB5dXAgZnJvbSBcInl1cFwiO1xuaW1wb3J0IEV4dHJhUXVlc3Rpb25zRmllbGRzIGZyb20gXCIuLi9FeHRyYVF1ZXN0aW9uc0ZpZWxkc1wiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4uLy4uL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHtcbiAgY2hlY2tJZlZhbHVlTWF0Y2gsXG4gIGdldFR5cGVJbml0aWFsVmFsdWUsXG4gIGdldFR5cGVWYWx1ZSxcbiAgdG9TbHVnXG59IGZyb20gXCIuLi9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL3V0aWxzXCI7XG5pbXBvcnQge1xuICBRdWVzdGlvblR5cGVfQ2hlY2tib3gsXG4gIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QsXG4gIFF1ZXN0aW9uVHlwZV9Db21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdFxufSBmcm9tIFwiLi4vRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgVGlja2V0RGVsZWdhdGlvbkZpZWxkcyBmcm9tIFwiLi4vVGlja2V0RGVsZWdhdGlvbkZpZWxkc1wiO1xuaW1wb3J0IFRpY2tldE93bmVyRmllbGRzIGZyb20gXCIuLi9UaWNrZXRPd25lckZpZWxkc1wiO1xuaW1wb3J0IFJlZ2lzdHJhdGlvbkRpc2NsYWltZXIgZnJvbSBcIi4uL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXIvUmVnaXN0cmF0aW9uRGlzY2xhaW1lclwiO1xuaW1wb3J0IHsgVElDS0VUX0FUVEVOREVFX0tFWVMgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzXCI7XG5cbmNvbnN0IGdldFR5cGVWYWxpZGF0aW9uID0gKHR5cGUsIG5hbWUsIGlzUmVxdWlyZWQpID0+IHtcbiAgbGV0IHNjaGVtYTtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tib3g6XG4gICAgICBzY2hlbWEgPSB5dXAuYm9vbCgpLm9uZU9mKFt0cnVlXSwgXCJGaWVsZCBtdXN0IGJlIGNoZWNrZWRcIik7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3Q6XG4gICAgICBzY2hlbWEgPSB5dXAuc3RyaW5nKGBFbnRlciAke25hbWV9YCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3Q6XG4gICAgICBzY2hlbWEgPSB5dXAuYXJyYXkoKS5vZih5dXAuc3RyaW5nKCkpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94OlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvbWJvQm94OlxuICAgICAgc2NoZW1hID0geXVwLnN0cmluZyhgRW50ZXIgJHtuYW1lfWApO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHNjaGVtYSA9IHl1cC5zdHJpbmcoYEVudGVyICR7bmFtZX1gKTtcbiAgICAgIGJyZWFrO1xuICB9XG5cbiAgaWYgKGlzUmVxdWlyZWQpIHtcbiAgICBzY2hlbWEgPSBzY2hlbWEucmVxdWlyZWQoYCR7bmFtZX0gaXMgcmVxdWlyZWRgKTtcbiAgfVxuXG4gIHJldHVybiBzY2hlbWE7XG59O1xuXG5jb25zdCBidWlsZFZhbGlkYXRpb25TY2hlbWEgPSAoXG4gIGV4dHJhUXVlc3Rpb25zLFxuICBhbGxvd3NEZWxlZ2F0aW9uLFxuICBkaXNjbGFpbWVyTWFuZGF0b3J5XG4pID0+IHtcbiAgY29uc3Qgc2NoZW1hID0ge1xuICAgIFtUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbF06IHl1cFxuICAgICAgLnN0cmluZyhcIkVudGVyIGVtYWlsXCIpXG4gICAgICAuZW1haWwoXCJFbWFpbCBpbnZhbGlkXCIpXG4gICAgICAucmVxdWlyZWQoXCJFbWFpbCBpcyByZXF1aXJlZFwiKSxcbiAgICBbVElDS0VUX0FUVEVOREVFX0tFWVMuZmlyc3ROYW1lXTogeXVwXG4gICAgICAuc3RyaW5nKFwiRW50ZXIgZmlyc3QgbmFtZVwiKVxuICAgICAgLnJlcXVpcmVkKFwiRmlyc3QgbmFtZSBpcyByZXF1aXJlZFwiKSxcbiAgICBbVElDS0VUX0FUVEVOREVFX0tFWVMubGFzdE5hbWVdOiB5dXBcbiAgICAgIC5zdHJpbmcoXCJFbnRlciBsYXN0IG5hbWVcIilcbiAgICAgIC5yZXF1aXJlZChcIkxhc3QgbmFtZSBpcyByZXF1aXJlZFwiKSxcbiAgICBbVElDS0VUX0FUVEVOREVFX0tFWVMuY29tcGFueV06IHl1cC5sYXp5KCh2YWx1ZSkgPT5cbiAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIlxuICAgICAgICA/IHl1cFxuICAgICAgICAgICAgLm9iamVjdCgpXG4gICAgICAgICAgICAucmVxdWlyZWQoXCJDb21wYW55IGlzIHJlcXVpcmVkXCIpXG4gICAgICAgICAgICAudHlwZUVycm9yKFwiUmVxdWlyZWQgZmllbGRcIilcbiAgICAgICAgOiB5dXAuc3RyaW5nKCkucmVxdWlyZWQoXCJDb21wYW55IGlzIHJlcXVpcmVkXCIpXG4gICAgKVxuICB9O1xuXG4gIGlmIChkaXNjbGFpbWVyTWFuZGF0b3J5KSB7XG4gICAgc2NoZW1hW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmRpc2NsYWltZXJBY2NlcHRlZF0gPSB5dXBcbiAgICAgIC5ib29sKClcbiAgICAgIC5vbmVPZihbdHJ1ZV0sIFwiRmllbGQgbXVzdCBiZSBjaGVja2VkXCIpO1xuICB9XG5cbiAgaWYgKGFsbG93c0RlbGVnYXRpb24pIHtcbiAgICBzY2hlbWEuZGVsZWdhdGVkX2ZpcnN0X25hbWUgPSB5dXBcbiAgICAgIC5zdHJpbmcoXCJFbnRlciBmaXJzdCBuYW1lXCIpXG4gICAgICAucmVxdWlyZWQoXCJGaXJzdCBuYW1lIGlzIHJlcXVpcmVkXCIpO1xuXG4gICAgc2NoZW1hLmRlbGVnYXRlZF9sYXN0X25hbWUgPSB5dXBcbiAgICAgIC5zdHJpbmcoXCJFbnRlciBsYXN0IG5hbWVcIilcbiAgICAgIC5yZXF1aXJlZChcIkxhc3QgbmFtZSBpcyByZXF1aXJlZFwiKTtcbiAgfVxuXG4gIGV4dHJhUXVlc3Rpb25zLmZvckVhY2goKHEpID0+IHtcbiAgICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocS5uYW1lLCBxLmlkKTtcbiAgICBzY2hlbWFbcXVlc3Rpb25TbHVnXSA9IGdldFR5cGVWYWxpZGF0aW9uKHEudHlwZSwgcS5uYW1lLCBxLm1hbmRhdG9yeSk7XG5cbiAgICBpZiAocS5zdWJfcXVlc3Rpb25fcnVsZXM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIHEuc3ViX3F1ZXN0aW9uX3J1bGVzLmZvckVhY2goKHJ1bGUpID0+IHtcbiAgICAgICAgY29uc3Qgc3ViUXVlc3Rpb24gPSBydWxlLnN1Yl9xdWVzdGlvbjtcbiAgICAgICAgY29uc3Qgc3ViUXVlc3Rpb25TbHVnID0gdG9TbHVnKHN1YlF1ZXN0aW9uLm5hbWUsIHN1YlF1ZXN0aW9uLmlkKTtcbiAgICAgICAgc2NoZW1hW3N1YlF1ZXN0aW9uU2x1Z10gPSBnZXRUeXBlVmFsaWRhdGlvbihcbiAgICAgICAgICBzdWJRdWVzdGlvbi50eXBlLFxuICAgICAgICAgIHN1YlF1ZXN0aW9uLm5hbWUsXG4gICAgICAgICAgZmFsc2VcbiAgICAgICAgKVxuICAgICAgICAgIC5udWxsYWJsZSgpXG4gICAgICAgICAgLndoZW4ocXVlc3Rpb25TbHVnLCB7XG4gICAgICAgICAgICBpczogKHF1ZXN0aW9uQW5zKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gY2hlY2tJZlZhbHVlTWF0Y2gocXVlc3Rpb25BbnMsIHJ1bGUuYW5zd2VyX3ZhbHVlcyk7XG4gICAgICAgICAgICAgIHJldHVybiBtYXRjaDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0aGVuOiAoc2NoKSA9PiBzY2gucmVxdWlyZWQoXCJUaGlzIHF1ZXN0aW9uIGlzIHJlcXVpcmVkXCIpXG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiB5dXAub2JqZWN0KHNjaGVtYSk7XG59O1xuXG4vLyBvbiBmb3JtaWsgd2UgbmVlZCB0byBpbml0aWFsaXplIGFsbCBzdWJxdWVzdGlvbnMgd2l0aCBhIHZhbHVlXG4vLyBvbiBzdWJtaXQsIHdlIG9ubHkgbmVlZCByZWxldmFudCBhbnN3ZXJzXG5jb25zdCBwYXJzZUFuc3dlcnMgPSAoXG4gIG93bmVyLFxuICBleHRyYVF1ZXN0aW9ucyxcbiAgYW5zd2VycyxcbiAgYWxsb3dzRGVsZWdhdGlvbixcbiAgbWFuYWdlcixcbiAgb25seVJlbGV2YW50ID0gZmFsc2VcbikgPT4ge1xuICBjb25zdCBpbml0aWFsVmFsdWVzID0ge1xuICAgIFtUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbF06XG4gICAgICBhbnN3ZXJzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmVtYWlsXSB8fCBvd25lci5lbWFpbCxcbiAgICBbVElDS0VUX0FUVEVOREVFX0tFWVMuZmlyc3ROYW1lXTpcbiAgICAgIGFuc3dlcnNbVElDS0VUX0FUVEVOREVFX0tFWVMuZmlyc3ROYW1lXSB8fCBvd25lci5maXJzdF9uYW1lLFxuICAgIFtUSUNLRVRfQVRURU5ERUVfS0VZUy5sYXN0TmFtZV06XG4gICAgICBhbnN3ZXJzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmxhc3ROYW1lXSB8fCBvd25lci5sYXN0X25hbWUsXG4gICAgW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmNvbXBhbnldOlxuICAgICAgYW5zd2Vyc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5jb21wYW55XSB8fCBvd25lci5jb21wYW55LFxuICAgIFtUSUNLRVRfQVRURU5ERUVfS0VZUy5kaXNjbGFpbWVyQWNjZXB0ZWRdOlxuICAgICAgYW5zd2Vyc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5kaXNjbGFpbWVyQWNjZXB0ZWRdIHx8XG4gICAgICBvd25lci5kaXNjbGFpbWVyX2FjY2VwdGVkXG4gIH07XG5cbiAgaWYgKGFsbG93c0RlbGVnYXRpb24pIHtcbiAgICBpbml0aWFsVmFsdWVzLmRlbGVnYXRlZF9maXJzdF9uYW1lID1cbiAgICAgIGFuc3dlcnMuZGVsZWdhdGVkX2ZpcnN0X25hbWUgfHwgbWFuYWdlcj8uZmlyc3RfbmFtZSB8fCBcIlwiO1xuICAgIGluaXRpYWxWYWx1ZXMuZGVsZWdhdGVkX2xhc3RfbmFtZSA9XG4gICAgICBhbnN3ZXJzLmRlbGVnYXRlZF9sYXN0X25hbWUgfHwgbWFuYWdlcj8ubGFzdF9uYW1lIHx8IFwiXCI7XG4gIH1cblxuICBleHRyYVF1ZXN0aW9ucy5mb3JFYWNoKChxKSA9PiB7XG4gICAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHEubmFtZSwgcS5pZCk7XG4gICAgY29uc3QgYW5zd2VyID0gYW5zd2Vyc1txdWVzdGlvblNsdWddO1xuICAgIGluaXRpYWxWYWx1ZXNbcXVlc3Rpb25TbHVnXSA9IGFuc3dlciB8fCBnZXRUeXBlSW5pdGlhbFZhbHVlKHEpO1xuXG4gICAgaWYgKHEuc3ViX3F1ZXN0aW9uX3J1bGVzPy5sZW5ndGggPiAwKSB7XG4gICAgICBxLnN1Yl9xdWVzdGlvbl9ydWxlcy5mb3JFYWNoKChydWxlKSA9PiB7XG4gICAgICAgIGNvbnN0IHN1YlF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhcbiAgICAgICAgICBydWxlLnN1Yl9xdWVzdGlvbi5uYW1lLFxuICAgICAgICAgIHJ1bGUuc3ViX3F1ZXN0aW9uLmlkXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IHN1YkFuc3dlciA9IGFuc3dlcnNbc3ViUXVlc3Rpb25TbHVnXTtcbiAgICAgICAgY29uc3QgbWF0Y2ggPSBjaGVja0lmVmFsdWVNYXRjaChhbnN3ZXIsIHJ1bGUuYW5zd2VyX3ZhbHVlcyk7XG5cbiAgICAgICAgaWYgKCFvbmx5UmVsZXZhbnQgfHwgbWF0Y2gpIHtcbiAgICAgICAgICBpbml0aWFsVmFsdWVzW3N1YlF1ZXN0aW9uU2x1Z10gPVxuICAgICAgICAgICAgc3ViQW5zd2VyIHx8IGdldFR5cGVJbml0aWFsVmFsdWUocnVsZS5zdWJfcXVlc3Rpb24pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBpbml0aWFsVmFsdWVzO1xufTtcblxuY29uc3QgdXNlU2Nyb2xsVG9FcnJvciA9IChmb3JtaWspID0+IHtcbiAgY29uc3QgeyBlcnJvcnMsIGlzVmFsaWQsIHN1Ym1pdENvdW50IH0gPSBmb3JtaWs7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBlcnJvckFycmF5ID0gT2JqZWN0LmtleXMoZXJyb3JzKTtcbiAgICBpZiAoaXNWYWxpZCB8fCBlcnJvckFycmF5Lmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBpbnB1dFtuYW1lPScke2Vycm9yQXJyYXlbMF19J11gKTtcbiAgICBpZiAoIWVsZW1lbnQpIHJldHVybjtcbiAgICAvLyBTY3JvbGwgdG8gZmlyc3Qga25vd24gZXJyb3IgaW50byB2aWV3XG4gICAgZWxlbWVudC5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiBcInNtb290aFwiLCBibG9jazogXCJjZW50ZXJcIiB9KTtcbiAgfSwgW3N1Ym1pdENvdW50XSk7XG59O1xuXG5jb25zdCBUaWNrZXRGb3JtID0gKHtcbiAgdGlja2V0LFxuICBleHRyYVF1ZXN0aW9ucyxcbiAgc3VtbWl0LFxuICBjYW5FZGl0LFxuICBvblN1Ym1pdCxcbiAgb25DbG9zZVxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IHRpY2tldE1hbmFnZXIgPSB0aWNrZXQ/Lm1hbmFnZXI7XG4gIC8qIERJU0FCTEUgREVMRUdBVElPTiBGVE0gKi9cbiAgY29uc3QgYWxsb3dzRGVsZWdhdGlvbiA9IHRpY2tldD8udGlja2V0X3R5cGU/LmFsbG93c190b19kZWxlZ2F0ZSAmJiBmYWxzZTtcbiAgY29uc3QgYW5zd2VycyA9IHRpY2tldD8ub3duZXI/LmV4dHJhX3F1ZXN0aW9ucy5yZWR1Y2UoKHJlcywgYW5zKSA9PiB7XG4gICAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKGFucy5xdWVzdGlvbi5uYW1lLCBhbnMucXVlc3Rpb24uaWQpO1xuICAgIHJlc1txdWVzdGlvblNsdWddID0gZ2V0VHlwZVZhbHVlKGFucy52YWx1ZSwgYW5zLnF1ZXN0aW9uLnR5cGUpO1xuICAgIHJldHVybiByZXM7XG4gIH0sIHt9KTtcblxuICBjb25zdCBmb3JtaWsgPSB1c2VGb3JtaWsoe1xuICAgIGluaXRpYWxWYWx1ZXM6IHBhcnNlQW5zd2VycyhcbiAgICAgIHRpY2tldC5vd25lcixcbiAgICAgIGV4dHJhUXVlc3Rpb25zLFxuICAgICAgYW5zd2VycyxcbiAgICAgIHRpY2tldE1hbmFnZXIsXG4gICAgICBhbGxvd3NEZWxlZ2F0aW9uXG4gICAgKSxcbiAgICB2YWxpZGF0aW9uU2NoZW1hOiBidWlsZFZhbGlkYXRpb25TY2hlbWEoXG4gICAgICBleHRyYVF1ZXN0aW9ucyxcbiAgICAgIGFsbG93c0RlbGVnYXRpb24sXG4gICAgICBzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfbWFuZGF0b3J5XG4gICAgKSxcbiAgICBvblN1Ym1pdDogKHZhbHVlcykgPT4ge1xuICAgICAgY29uc3QgcmVsZXZhbnRBbnN3ZXJzID0gcGFyc2VBbnN3ZXJzKFxuICAgICAgICB0aWNrZXQub3duZXIsXG4gICAgICAgIGV4dHJhUXVlc3Rpb25zLFxuICAgICAgICB2YWx1ZXMsXG4gICAgICAgIHRpY2tldE1hbmFnZXIsXG4gICAgICAgIGFsbG93c0RlbGVnYXRpb24sXG4gICAgICAgIHRydWVcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiBvblN1Ym1pdChyZWxldmFudEFuc3dlcnMpO1xuICAgIH0sXG4gICAgZW5hYmxlUmVpbml0aWFsaXplOiB0cnVlXG4gIH0pO1xuXG4gIC8vIGNvbnNvbGUubG9nKFwiU1VNTUlUOiBcIiwgc3VtbWl0KTtcbiAgLy8gY29uc29sZS5sb2coXCJUSUNLRVQ6IFwiLCB0aWNrZXQpO1xuICAvLyBjb25zb2xlLmxvZyhcIlFVRVNUSVVPTnM6IFwiLCBleHRyYVF1ZXN0aW9ucyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiQU5TV0VSUzogXCIsIGFuc3dlcnMpO1xuICAvLyBjb25zb2xlLmxvZyhcIkVSUk9SczogXCIsIGZvcm1pay5lcnJvcnMpO1xuICAvLyBjb25zb2xlLmxvZyhcIlZBTFVFUzogXCIsIGZvcm1pay52YWx1ZXMpO1xuICAvLyBjb25zb2xlLmxvZyhcIklOSVRJQUw6IFwiLCBmb3JtaWsuaW5pdGlhbFZhbHVlcyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiVE9VQ0hFRDogXCIsIGZvcm1pay50b3VjaGVkKTtcblxuICAvLyBTQ1JPTEwgVE8gRVJST1JcbiAgdXNlU2Nyb2xsVG9FcnJvcihmb3JtaWspO1xuXG4gIHJldHVybiAoXG4gICAgPGZvcm0gb25TdWJtaXQ9e2Zvcm1pay5oYW5kbGVTdWJtaXR9IG5vVmFsaWRhdGU+XG4gICAgICA8VGlja2V0T3duZXJGaWVsZHNcbiAgICAgICAgZm9ybWlrPXtmb3JtaWt9XG4gICAgICAgIG93bmVyPXt0aWNrZXQub3duZXJ9XG4gICAgICAgIHN1bW1pdElkPXtzdW1taXQuaWR9XG4gICAgICAgIGRpc2FibGVkPXshY2FuRWRpdH1cbiAgICAgIC8+XG5cbiAgICAgIHthbGxvd3NEZWxlZ2F0aW9uICYmIChcbiAgICAgICAgPEJveD5cbiAgICAgICAgICA8VHlwb2dyYXBoeVxuICAgICAgICAgICAgdmFyaWFudD1cInN1YnRpdGxlMlwiXG4gICAgICAgICAgICBndXR0ZXJCb3R0b21cbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmRlbGVnYXRlZFRvfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5kZWxlZ2F0ZWRfdG9cIil9XG4gICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgIDxUaWNrZXREZWxlZ2F0aW9uRmllbGRzIGZvcm1paz17Zm9ybWlrfSAvPlxuICAgICAgICA8L0JveD5cbiAgICAgICl9XG5cbiAgICAgIHtleHRyYVF1ZXN0aW9ucz8ubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgIDxCb3g+XG4gICAgICAgICAgPGg2IGNsYXNzTmFtZT17c3R5bGVzLmFkZGl0aW9uYWxEZXRhaWxzfT5cbiAgICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5hZGl0aW9uYWxfZGV0YWlsc1wiKX1cbiAgICAgICAgICA8L2g2PlxuICAgICAgICAgIDxFeHRyYVF1ZXN0aW9uc0ZpZWxkc1xuICAgICAgICAgICAgZXh0cmFRdWVzdGlvbnM9e2V4dHJhUXVlc3Rpb25zfVxuICAgICAgICAgICAgYWxsb3dFZGl0PXtjYW5FZGl0fVxuICAgICAgICAgICAgZm9ybWlrPXtmb3JtaWt9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9Cb3g+XG4gICAgICApfVxuXG4gICAgICB7c3VtbWl0LnJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX2NvbnRlbnQgJiYgKFxuICAgICAgICA8UmVnaXN0cmF0aW9uRGlzY2xhaW1lclxuICAgICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICAgIGRpc2NsYWltZXI9e3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9jb250ZW50fVxuICAgICAgICAgIGlzUmVxdWlyZWQ9e3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9tYW5kYXRvcnl9XG4gICAgICAgICAgaXNEaXNhYmxlZD17IWNhbkVkaXR9XG4gICAgICAgIC8+XG4gICAgICApfVxuXG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmZvb3Rlcn0+XG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5zYXZlQnRufVxuICAgICAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICBkaXNhYmxlZD17Zm9ybWlrLmlzU3VibWl0dGluZ31cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5zYXZlXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNhbmNlbEJ0bn1cbiAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgb25DbGljaz17b25DbG9zZX1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5jYW5jZWxcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgPC9Cb3g+XG4gICAgPC9mb3JtPlxuICApO1xufTtcblxuVGlja2V0Rm9ybS5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLm9iamVjdCxcbiAgZXh0cmFRdWVzdGlvbnM6IFByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgY2FuRWRpdDogUHJvcFR5cGVzLmJvb2wsXG4gIG9uU3VibWl0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXRGb3JtO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgQm94LCBUZXh0RmllbGQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBUSUNLRVRfQVRURU5ERUVfS0VZUyB9IGZyb20gXCIuLi8uLi9jb25zdGFudHNcIjtcbmltcG9ydCBDb21wYW55RmllbGQgZnJvbSBcIi4uL0NvbXBhbnlGaWVsZFwiO1xuXG5jb25zdCBUaWNrZXRPd25lckZpZWxkcyA9ICh7IGZvcm1paywgc3VtbWl0SWQsIGRpc2FibGVkIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCB7IGVycm9ycywgdmFsdWVzLCB0b3VjaGVkLCBoYW5kbGVDaGFuZ2UsIGhhbmRsZUJsdXIgfSA9IGZvcm1paztcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMud3JhcHBlcn0+XG4gICAgICA8VGV4dEZpZWxkXG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBuYW1lPXtUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbH1cbiAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfZGV0YWlsLmVtYWlsXCIpfVxuICAgICAgICBkaXNhYmxlZFxuICAgICAgICB2YWx1ZT17dmFsdWVzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmVtYWlsXX1cbiAgICAgIC8+XG4gICAgICB7W1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmZpcnN0TmFtZSwgVElDS0VUX0FUVEVOREVFX0tFWVMubGFzdE5hbWVdLm1hcChcbiAgICAgICAgKG5hbWUpID0+IChcbiAgICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICAgIGtleT17bmFtZX1cbiAgICAgICAgICAgIG5hbWU9e25hbWV9XG4gICAgICAgICAgICBsYWJlbD17dChgdGlja2V0X2RldGFpbC4ke25hbWV9YCl9XG4gICAgICAgICAgICB2YWx1ZT17dmFsdWVzW25hbWVdfVxuICAgICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgIG9uQmx1cj17aGFuZGxlQmx1cn1cbiAgICAgICAgICAgIGVycm9yPXt0b3VjaGVkW25hbWVdICYmIEJvb2xlYW4oZXJyb3JzW25hbWVdKX1cbiAgICAgICAgICAgIGhlbHBlclRleHQ9e2Zvcm1pay50b3VjaGVkW25hbWVdICYmIGZvcm1pay5lcnJvcnNbbmFtZV19XG4gICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgIC8+XG4gICAgICAgIClcbiAgICAgICl9XG4gICAgICA8Q29tcGFueUZpZWxkIGZvcm1paz17Zm9ybWlrfSBzdW1taXRJZD17c3VtbWl0SWR9IGlzUmVxdWlyZWQgLz5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuaW5mb05vdGV9Pnt0KFwidGlja2V0X2RldGFpbC5pbmZvX25vdGVcIil9PC9Cb3g+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5UaWNrZXRPd25lckZpZWxkcy5wcm9wVHlwZXMgPSB7XG4gIGZvcm1pazogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXRPd25lckZpZWxkcztcbiIsImV4cG9ydCBjb25zdCBUSUNLRVRfQVRURU5ERUVfS0VZUyA9IHtcbiAgZW1haWw6IFwiYXR0ZW5kZWVfZW1haWxcIixcbiAgZmlyc3ROYW1lOiBcImF0dGVuZGVlX2ZpcnN0X25hbWVcIixcbiAgbGFzdE5hbWU6IFwiYXR0ZW5kZWVfbGFzdF9uYW1lXCIsXG4gIGNvbXBhbnk6IFwiYXR0ZW5kZWVfY29tcGFueVwiLFxuICBkaXNjbGFpbWVyQWNjZXB0ZWQ6IFwiZGlzY2xhaW1lcl9hY2NlcHRlZFwiXG59O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IFFSQ29kZSBmcm9tIFwicmVhY3QtcXItY29kZVwiO1xuaW1wb3J0IHtcbiAgQm94LFxuICBCdXR0b24sXG4gIERyYXdlcixcbiAgSWNvbkJ1dHRvbixcbiAgVHlwb2dyYXBoeSxcbiAgRGlhbG9nLFxuICBEaWFsb2dUaXRsZSxcbiAgRGlhbG9nQ29udGVudCxcbiAgRGlhbG9nQ29udGVudFRleHRcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7XG4gIENsb3NlIGFzIENsb3NlSWNvbixcbiAgRmlsZURvd25sb2FkT3V0bGluZWQgYXMgRG93bmxvYWRJY29uLFxuICBFbWFpbE91dGxpbmVkIGFzIEVtYWlsSWNvblxufSBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbFwiO1xuaW1wb3J0IE9yZGVyTnVtYmVyIGZyb20gXCIuLi9PcmRlcnNMaXN0L09yZGVyTnVtYmVyXCI7XG5pbXBvcnQgeyB1c2VUaWNrZXREZXRhaWxzIH0gZnJvbSBcIi4uLy4uL2hvb2tzL3VzZVRpY2tldERldGFpbHNcIjtcbmltcG9ydCBUaWNrZXRGb3JtIGZyb20gXCIuL2NvbXBvbmVudHMvVGlja2V0Rm9ybVwiO1xuaW1wb3J0IHsgZ2V0RXh0cmFRdWVzdGlvbnMsIGdldFRpY2tldCwgc2F2ZVRpY2tldERldGFpbHMgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyB0cmFuc2Zvcm1BbndlcnNGb3JtYXQgfSBmcm9tIFwiLi9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvdXRpbHNcIjtcbmltcG9ydCB7IE1JTExJU0VDX1RPX1NFQyB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcblxuY29uc3QgVGlja2V0RGV0YWlsID0gKHsgc3VtbWl0LCB0aWNrZXRJZCwgb3JkZXJJZCwgb3duZXJJZCwgb25DbG9zZSB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCB7XG4gICAgdXNlcjogeyB1c2VyUHJvZmlsZSB9LFxuICAgIGV4dHJhUXVlc3Rpb25zLFxuICAgIGN1cnJlbnRUaWNrZXQ6IHRpY2tldFxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSk7XG4gIGNvbnN0IFtzYXZlTWVzc2FnZSwgc2V0U2F2ZU1lc3NhZ2VdID0gdXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IGlzT3BlbiA9IHRpY2tldElkICYmIG9yZGVySWQgJiYgb3duZXJJZDtcbiAgY29uc3QgaXNVc2VyT3JkZXJPd25lciA9IHRpY2tldD8ub3JkZXI/Lm93bmVyX2lkID09PSB1c2VyUHJvZmlsZT8uaWQ7XG4gIGNvbnN0IGlzVXNlclRpY2tldE93bmVyID0gdGlja2V0Py5vd25lcj8uZW1haWwgPT09IHVzZXJQcm9maWxlPy5lbWFpbDtcbiAgY29uc3QgY2FuRWRpdFRpY2tldERhdGEgPVxuICAgIChpc1VzZXJUaWNrZXRPd25lciB8fCBpc1VzZXJPcmRlck93bmVyKSAmJlxuICAgIHN1bW1pdC5hbGxvd191cGRhdGVfYXR0ZW5kZWVfZXh0cmFfcXVlc3Rpb25zO1xuICBjb25zdCB7IGlzQ29tcGxldGUgfSA9IHVzZVRpY2tldERldGFpbHModGlja2V0KTtcblxuICBjb25zdCBvblNhdmUgPSAodmFsKSA9PiB7XG4gICAgY29uc3QgYW5zd2VycyA9IHRyYW5zZm9ybUFud2Vyc0Zvcm1hdCh2YWwpO1xuXG4gICAgcmV0dXJuIGRpc3BhdGNoKHNhdmVUaWNrZXREZXRhaWxzKHRpY2tldCwgYW5zd2VycykpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIHNldFNhdmVNZXNzYWdlKHtcbiAgICAgICAgICB0aXRsZTogdChcInRpY2tldF9kZXRhaWwuc2F2aW5nX3N1Y2Nlc3NcIiksXG4gICAgICAgICAgZGVzY3JpcHRpb246IHQoXCJ0aWNrZXRfZGV0YWlsLnNhdmluZ19zdWNjZXNzX2Rlc2NyaXB0aW9uXCIpXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnIpID0+IHtcbiAgICAgICAgc2V0U2F2ZU1lc3NhZ2Uoe1xuICAgICAgICAgIHRpdGxlOiB0KFwidGlja2V0X2RldGFpbC5zYXZpbmdfZXJyb3JcIiksXG4gICAgICAgICAgZGVzY3JpcHRpb246IGVyci50b1N0cmluZygpXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcbiAgICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IG9uQ2xvc2VTYXZlTWVzc2FnZSA9ICgpID0+IHtcbiAgICBzZXRTYXZlTWVzc2FnZShudWxsKTtcbiAgICBzZXRUaW1lb3V0KG9uQ2xvc2UsIE1JTExJU0VDX1RPX1NFQyk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAodGlja2V0SWQgJiYgb3JkZXJJZCAmJiBvd25lcklkKSB7XG4gICAgICBkaXNwYXRjaChnZXRFeHRyYVF1ZXN0aW9ucyhvd25lcklkKSk7XG4gICAgICBkaXNwYXRjaChnZXRUaWNrZXQodGlja2V0SWQsIG9yZGVySWQpKTtcbiAgICB9XG4gIH0sIFt0aWNrZXRJZCwgb3JkZXJJZCwgb3duZXJJZF0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxEcmF3ZXJcbiAgICAgICAgb3Blbj17ISFpc09wZW59XG4gICAgICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgICAgIGFuY2hvcj1cInJpZ2h0XCJcbiAgICAgICAgTW9kYWxQcm9wcz17eyBrZWVwTW91bnRlZDogZmFsc2UgfX1cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0RGV0YWlsQ29udGFpbmVyfVxuICAgICAgPlxuICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmhlYWRlcn0+XG4gICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNsb3NlQnRufVxuICAgICAgICAgICAgb25DbGljaz17b25DbG9zZX1cbiAgICAgICAgICAgIHN4PXt7IGZsb2F0OiBcInJpZ2h0XCIgfX1cbiAgICAgICAgICAgIGZvbnRTaXplPVwibGFyZ2VcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxDbG9zZUljb24gLz5cbiAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImg0XCIgZ3V0dGVyQm90dG9tIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlfT5cbiAgICAgICAgICAgIHt0aWNrZXQ/LnRpY2tldF90eXBlPy5uYW1lfVxuICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTJcIiBndXR0ZXJCb3R0b20gY2xhc3NOYW1lPXtzdHlsZXMuc3VidGl0bGV9PlxuICAgICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLnB1cmNoYXNlZF9ieVwiKX0ge3RpY2tldD8ub3duZXI/LmVtYWlsfVxuICAgICAgICAgIDwvVHlwb2dyYXBoeT5cblxuICAgICAgICAgIHtpc0NvbXBsZXRlICYmIChcbiAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMucXJDb2RlfT5cbiAgICAgICAgICAgICAgICA8UVJDb2RlXG4gICAgICAgICAgICAgICAgICBzaXplPXsyNTZ9XG4gICAgICAgICAgICAgICAgICBzdHlsZT17eyBoZWlnaHQ6IFwiYXV0b1wiLCBtYXhXaWR0aDogXCIxMDAlXCIsIHdpZHRoOiBcIjEwMCVcIiB9fVxuICAgICAgICAgICAgICAgICAgdmFsdWU9e3RpY2tldC5xcl9jb2RlfVxuICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNTYgMjU2XCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPXtzdHlsZXMuc3RhdHVzfT57dChcInRpY2tldF9kZXRhaWwuc3RhdHVzXCIpfTwvcD5cbiAgICAgICAgICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgICAgICAgICB2YXJpYW50PVwiYm9keTJcIlxuICAgICAgICAgICAgICAgIGd1dHRlckJvdHRvbVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnFyTm90ZX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5xcl9ub3RlXCIpfVxuICAgICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICA8Lz5cbiAgICAgICAgICApfVxuXG4gICAgICAgICAgeyFzdW1taXQ/LmlzX3ZpcnR1YWwgJiYgaXNDb21wbGV0ZSAmJiAoXG4gICAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmFjdGlvbkJ1dHRvbnNDb250YWluZXJ9PlxuICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuZG93bmxvYWRCdG59XG4gICAgICAgICAgICAgICAgdmFyaWFudD1cImNvbnRhaW5lZFwiXG4gICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxEb3dubG9hZEljb24gZm9udFNpemU9XCJsYXJnZVwiIC8+XG4gICAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLmRvd25sb2FkXCIpfVxuICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgPEJ1dHRvbiBjbGFzc05hbWU9e3N0eWxlcy5zZW5kQnRufT5cbiAgICAgICAgICAgICAgICA8RW1haWxJY29uIGZvbnRTaXplPVwibGFyZ2VcIiAvPlxuICAgICAgICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5zZW5kXCIpfVxuICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICl9XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyTnVtYmVyfT5cbiAgICAgICAgICAgIDxPcmRlck51bWJlclxuICAgICAgICAgICAgICBudW1iZXI9e3RpY2tldD8ub3JkZXI/Lm51bWJlcn1cbiAgICAgICAgICAgICAgY29weVxuICAgICAgICAgICAgICB0cnVuY2F0ZWRcbiAgICAgICAgICAgICAgcmV2ZXJzZWRcbiAgICAgICAgICAgICAgd2lkdGg9ezE1MH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvQm94PlxuXG4gICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYXR0ZW5kZWVDb250YWluZXJ9PlxuICAgICAgICAgIDxUeXBvZ3JhcGh5XG4gICAgICAgICAgICB2YXJpYW50PVwiaDRcIlxuICAgICAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5hdHRlbmRlZUluZm9UaXRsZX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwuYXR0ZW5kZWVfaW5mb3JtYXRpb25cIil9XG4gICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgIHt0aWNrZXQgJiYgKFxuICAgICAgICAgICAgPFRpY2tldEZvcm1cbiAgICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICAgIGV4dHJhUXVlc3Rpb25zPXtleHRyYVF1ZXN0aW9uc31cbiAgICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICAgIGNhbkVkaXQ9e2NhbkVkaXRUaWNrZXREYXRhfVxuICAgICAgICAgICAgICBvblN1Ym1pdD17b25TYXZlfVxuICAgICAgICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgICA8L0JveD5cbiAgICAgIDwvRHJhd2VyPlxuICAgICAgPERpYWxvZ1xuICAgICAgICBvcGVuPXshIXNhdmVNZXNzYWdlfVxuICAgICAgICBvbkNsb3NlPXtvbkNsb3NlU2F2ZU1lc3NhZ2V9XG4gICAgICAgIGFyaWEtbGFiZWxsZWRieT1cImFsZXJ0LWRpYWxvZy10aXRsZVwiXG4gICAgICAgIGFyaWEtZGVzY3JpYmVkYnk9XCJhbGVydC1kaWFsb2ctZGVzY3JpcHRpb25cIlxuICAgICAgPlxuICAgICAgICA8RGlhbG9nVGl0bGUgaWQ9XCJhbGVydC1kaWFsb2ctdGl0bGVcIj57c2F2ZU1lc3NhZ2U/LnRpdGxlfTwvRGlhbG9nVGl0bGU+XG4gICAgICAgIDxEaWFsb2dDb250ZW50PlxuICAgICAgICAgIDxEaWFsb2dDb250ZW50VGV4dCBpZD1cImFsZXJ0LWRpYWxvZy1kZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAge3NhdmVNZXNzYWdlPy5kZXNjcmlwdGlvbn1cbiAgICAgICAgICA8L0RpYWxvZ0NvbnRlbnRUZXh0PlxuICAgICAgICA8L0RpYWxvZ0NvbnRlbnQ+XG4gICAgICA8L0RpYWxvZz5cbiAgICA8Lz5cbiAgKTtcbn07XG5cblRpY2tldERldGFpbC5wcm9wVHlwZXMgPSB7XG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgdGlja2V0SWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9yZGVySWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG93bmVySWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXREZXRhaWw7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBDb250YWluZXIsIEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUaWNrZXREZXRhaWxzIH0gZnJvbSBcIi4uLy4uL2hvb2tzL3VzZVRpY2tldERldGFpbHNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBUaWNrZXRTdGF0dXMgPSAoeyB0aWNrZXQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGlzQWN0aXZlID0gdGlja2V0LmlzX2FjdGl2ZTtcbiAgY29uc3QgcmVmdW5kUmVxdWVzdHMgPSB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5maW5kKFxuICAgIChyKSA9PiByLnN0YXR1cyA9PT0gXCJSZXF1ZXN0ZWRcIlxuICApO1xuICBjb25zdCB7IGlzSW5jb21wbGV0ZSwgaXNVbmFzc2lnbmVkLCBpc0NvbXBsZXRlIH0gPSB1c2VUaWNrZXREZXRhaWxzKHRpY2tldCk7XG5cbiAgcmV0dXJuIChcbiAgICA8Q29udGFpbmVyIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldFN0YXR1c0NvbnRhaW5lcn0+XG4gICAgICB7aXNBY3RpdmUgPyAoXG4gICAgICAgIDw+XG4gICAgICAgICAge3JlZnVuZFJlcXVlc3RzICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIHJlZnVuZCByZXF1ZXN0ZWRcIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlcy5idXR0b25SZWZ1bmRSZXF1ZXN0ZWR9YH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c19yZWZ1bmRfcmVxdWVzdGVkXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7aXNJbmNvbXBsZXRlICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIGluY29tcGxldGVcIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlcy5idXR0b25JbmNvbXBsZXRlfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfaW5jb21wbGV0ZVwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICl9XG4gICAgICAgICAge2lzVW5hc3NpZ25lZCAmJiAoXG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHN0YXR1cyB1bmFzc2lnbmVkXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uVW5hc3NpZ25lZH1gfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX3VuYXNzaWduZWRcIil9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICApfVxuICAgICAgICAgIHtpc0NvbXBsZXRlICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIGNvbXBsZXRlXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uQ29tcGxldGV9YH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c19jb21wbGV0ZVwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvPlxuICAgICAgKSA6IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIGNhbmNlbGxlZFwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uQ2FuY2VsbGVkfWB9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX2NhbmNlbGxlZFwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApfVxuICAgIDwvQ29udGFpbmVyPlxuICApO1xufTtcblxuVGlja2V0U3RhdHVzLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIG93bmVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgc3RhdHVzOiBQcm9wVHlwZXMuc3RyaW5nXG4gICAgfSksXG4gICAgcmVmdW5kUmVxdWVzdHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdClcbiAgfSlcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldFN0YXR1cztcbiIsImltcG9ydCB7IGlzVGlja2V0UmVmdW5kYWJsZSB9IGZyb20gXCIuLi91dGlscy90aWNrZXRVdGlsc1wiO1xuXG5leHBvcnQgY29uc3QgU1RBVFVTX0NPTVBMRVRFID0gXCJDb21wbGV0ZVwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19JTkNPTVBMRVRFID0gXCJJbmNvbXBsZXRlXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0NBTkNFTExFRCA9IFwiQ2FuY2VsbGVkXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1VOQVNTSUdORUQgPSBcIlVuYXNzaWduZWRcIjtcblxuZXhwb3J0IGNvbnN0IHVzZVRpY2tldERldGFpbHMgPSAodGlja2V0KSA9PiB7XG4gIGNvbnN0IGdldFN0YXR1cyA9ICgpID0+IHtcbiAgICBpZiAoIXRpY2tldC5pc19hY3RpdmUpIHJldHVybiBTVEFUVVNfQ0FOQ0VMTEVEO1xuICAgIGlmICh0aWNrZXQub3duZXJfaWQgPT09IDApIHJldHVybiBTVEFUVVNfVU5BU1NJR05FRDtcbiAgICBpZiAoIXRpY2tldC5vd25lcj8uZmlyc3RfbmFtZSB8fCAhdGlja2V0Lm93bmVyPy5sYXN0X25hbWUpXG4gICAgICByZXR1cm4gU1RBVFVTX0lOQ09NUExFVEU7XG4gICAgcmV0dXJuIHRpY2tldC5vd25lci5zdGF0dXM7XG4gIH07XG5cbiAgaWYgKCF0aWNrZXQpIHJldHVybiB7fTtcblxuICBjb25zdCBzdGF0dXMgPSBnZXRTdGF0dXMoKTtcbiAgY29uc3QgaXNBY3RpdmUgPSB0aWNrZXQuaXNfYWN0aXZlICYmIHN0YXR1cyAhPT0gU1RBVFVTX0NBTkNFTExFRDtcbiAgY29uc3QgaXNSZWZ1bmRhYmxlID0gaXNUaWNrZXRSZWZ1bmRhYmxlKHRpY2tldCk7XG4gIGNvbnN0IGFsbG93c0RlbGVnYXRlID1cbiAgICAodGlja2V0Py50aWNrZXRfdHlwZT8uYWxsb3dzX3RvX2RlbGVnYXRlIHx8XG4gICAgICB0aWNrZXQ/LnByb21vX2NvZGU/LmFsbG93c190b19kZWxlZ2F0ZSkgJiZcbiAgICBzdGF0dXMgIT09IFNUQVRVU19VTkFTU0lHTkVEICYmXG4gICAgIXRpY2tldC5vd25lcj8ubWFuYWdlcj8uaWQgJiZcbiAgICAhdGlja2V0Lm93bmVyPy5tYW5hZ2VyX2lkO1xuICBjb25zdCBpc0NvbXBsZXRlID0gc3RhdHVzID09PSBTVEFUVVNfQ09NUExFVEU7XG4gIGNvbnN0IGlzVW5hc3NpZ25lZCA9IHN0YXR1cyA9PT0gU1RBVFVTX1VOQVNTSUdORUQ7XG4gIGNvbnN0IGlzSW5jb21wbGV0ZSA9IHN0YXR1cyA9PT0gU1RBVFVTX0lOQ09NUExFVEU7XG5cbiAgcmV0dXJuIHtcbiAgICBzdGF0dXMsXG4gICAgaXNDb21wbGV0ZSxcbiAgICBpc1VuYXNzaWduZWQsXG4gICAgaXNJbmNvbXBsZXRlLFxuICAgIGlzQWN0aXZlLFxuICAgIGlzUmVmdW5kYWJsZSxcbiAgICBhbGxvd3NEZWxlZ2F0ZVxuICB9O1xufTtcbiIsImltcG9ydCBpMThuIGZyb20gXCJpMThuZXh0XCI7XG5pbXBvcnQgeyBpbml0UmVhY3RJMThuZXh0IH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCBMYW5ndWFnZURldGVjdG9yIGZyb20gXCJpMThuZXh0LWJyb3dzZXItbGFuZ3VhZ2VkZXRlY3RvclwiO1xuaW1wb3J0IGVuIGZyb20gXCIuL2xvY2FsZXMvZW4uanNvblwiO1xuaW1wb3J0IGVzIGZyb20gXCIuL2xvY2FsZXMvZXMuanNvblwiO1xuXG4vLyBpbXBvcnQgQmFja2VuZCBmcm9tICdpMThuZXh0LWh0dHAtYmFja2VuZCc7XG4vLyBkb24ndCB3YW50IHRvIHVzZSB0aGlzP1xuLy8gaGF2ZSBhIGxvb2sgYXQgdGhlIFF1aWNrIHN0YXJ0IGd1aWRlXG4vLyBmb3IgcGFzc2luZyBpbiBsbmcgYW5kIHRyYW5zbGF0aW9ucyBvbiBpbml0XG5cbmkxOG5cbiAgLy8gbG9hZCB0cmFuc2xhdGlvbiB1c2luZyBodHRwIC0+IHNlZSAvcHVibGljL2xvY2FsZXMgKGkuZS4gaHR0cHM6Ly9naXRodWIuY29tL2kxOG5leHQvcmVhY3QtaTE4bmV4dC90cmVlL21hc3Rlci9leGFtcGxlL3JlYWN0L3B1YmxpYy9sb2NhbGVzKVxuICAvLyBsZWFybiBtb3JlOiBodHRwczovL2dpdGh1Yi5jb20vaTE4bmV4dC9pMThuZXh0LWh0dHAtYmFja2VuZFxuICAvLyB3YW50IHlvdXIgdHJhbnNsYXRpb25zIHRvIGJlIGxvYWRlZCBmcm9tIGEgcHJvZmVzc2lvbmFsIENETj8gPT4gaHR0cHM6Ly9naXRodWIuY29tL2xvY2l6ZS9yZWFjdC10dXRvcmlhbCNzdGVwLTItLS11c2UtdGhlLWxvY2l6ZS1jZG5cbiAgLy8gLnVzZShCYWNrZW5kKVxuICAvLyBkZXRlY3QgdXNlciBsYW5ndWFnZVxuICAvLyBsZWFybiBtb3JlOiBodHRwczovL2dpdGh1Yi5jb20vaTE4bmV4dC9pMThuZXh0LWJyb3dzZXItbGFuZ3VhZ2VEZXRlY3RvclxuICAudXNlKExhbmd1YWdlRGV0ZWN0b3IpXG4gIC8vIHBhc3MgdGhlIGkxOG4gaW5zdGFuY2UgdG8gcmVhY3QtaTE4bmV4dC5cbiAgLnVzZShpbml0UmVhY3RJMThuZXh0KVxuICAvLyBpbml0IGkxOG5leHRcbiAgLy8gZm9yIGFsbCBvcHRpb25zIHJlYWQ6IGh0dHBzOi8vd3d3LmkxOG5leHQuY29tL292ZXJ2aWV3L2NvbmZpZ3VyYXRpb24tb3B0aW9uc1xuICAuaW5pdCh7XG4gICAgZmFsbGJhY2tMbmc6IFwiZW5cIixcbiAgICBkZWJ1ZzogZmFsc2UsXG4gICAgcmVzb3VyY2VzOiB7XG4gICAgICBlbjogeyB0cmFuc2xhdGlvbjogZW4gfSxcbiAgICAgIGVzOiB7IHRyYW5zbGF0aW9uOiBlcyB9XG4gICAgfSxcbiAgICBpbnRlcnBvbGF0aW9uOiB7XG4gICAgICBlc2NhcGVWYWx1ZTogZmFsc2UgLy8gbm90IG5lZWRlZCBmb3IgcmVhY3QgYXMgaXQgZXNjYXBlcyBieSBkZWZhdWx0XG4gICAgfVxuICB9KTtcblxuZXhwb3J0IGRlZmF1bHQgaTE4bjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5pbXBvcnQgeyBMT0dPVVRfVVNFUiB9IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L2FjdGlvbnNcIjtcbmltcG9ydCB7XG4gIFJFU0VUX1NUQVRFLFxuICBSRVNFVF9GSUxURVIsXG4gIFNFVF9TVEFURSxcbiAgU0VUX1VTRVIsXG4gIEdFVF9VU0VSX09SREVSUyxcbiAgR0VUX1RJQ0tFVFNfQllfT1JERVIsXG4gIFVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURUQsXG4gIFJFQ0VJVkVfVElDS0VULFxuICBSRUNFSVZFX0VYVFJBX1FVRVNUSU9OUyxcbiAgVVBEQVRFX1RJQ0tFVFxufSBmcm9tIFwiLi9hY3Rpb25zXCI7XG5pbXBvcnQgeyBGSVJTVF9QQUdFIH0gZnJvbSBcIi4vdXRpbHMvY29uc3RhbnRzXCI7XG5cbmNvbnN0IERFRkFVTFRfU1RBVEUgPSB7XG4gIHN1bW1pdDogbnVsbCxcbiAgdXNlcjoge30sXG4gIHdpZGdldExvYWRpbmc6IGZhbHNlLFxuICBtZW1iZXJPcmRlcnM6IFtdLFxuICBleHRyYVF1ZXN0aW9uczogW10sXG4gIGN1cnJlbnRUaWNrZXQ6IG51bGwsXG4gIGVycm9yczoge30sXG4gIGxvYWRpbmc6IGZhbHNlLFxuICBpc09yZGVyTG9hZGluZzogZmFsc2UsXG4gIG9yZGVyc19jdXJyZW50X3BhZ2U6IDEsXG4gIG9yZGVyc19sYXN0X3BhZ2U6IDEsXG4gIG9yZGVyc19wZXJfcGFnZTogNSxcbiAgb3JkZXJzX3RvdGFsOiAwLFxuICB0aWNrZXRfY3VycmVudF9wYWdlOiAxLFxuICB0aWNrZXRfbGFzdF9wYWdlOiAxLFxuICB0aWNrZXRfcGVyX3BhZ2U6IDUsXG4gIHRpY2tldF90b3RhbDogMFxufTtcblxuY29uc3QgV2lkZ2V0UmVkdWNlciA9IChzdGF0ZSA9IERFRkFVTFRfU1RBVEUsIHsgdHlwZSwgcGF5bG9hZCB9ID0ge30pID0+IHtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBMT0dPVVRfVVNFUjpcbiAgICBjYXNlIFJFU0VUX1NUQVRFOlxuICAgICAgcmV0dXJuIERFRkFVTFRfU1RBVEU7XG4gICAgY2FzZSBSRVNFVF9GSUxURVI6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgb3JkZXJzX2N1cnJlbnRfcGFnZTogMSxcbiAgICAgICAgb3JkZXJzX2xhc3RfcGFnZTogMVxuICAgICAgfTtcbiAgICBjYXNlIFNFVF9TVEFURTpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCAuLi5wYXlsb2FkIH07XG4gICAgY2FzZSBTRVRfVVNFUjpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCB1c2VyOiBwYXlsb2FkIH07XG4gICAgY2FzZSBHRVRfVVNFUl9PUkRFUlM6IHtcbiAgICAgIGNvbnN0IHsgbWVtYmVyT3JkZXJzIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHsgZGF0YSwgdG90YWwsIGN1cnJlbnRfcGFnZSB9ID0gcGF5bG9hZC5yZXNwb25zZTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBtZW1iZXJPcmRlcnM6XG4gICAgICAgICAgY3VycmVudF9wYWdlID09PSBGSVJTVF9QQUdFID8gZGF0YSA6IFsuLi5tZW1iZXJPcmRlcnMsIC4uLmRhdGFdLFxuICAgICAgICBvcmRlcnNfdG90YWw6IHRvdGFsLFxuICAgICAgICBvcmRlcnNfY3VycmVudF9wYWdlOiBjdXJyZW50X3BhZ2VcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgR0VUX1RJQ0tFVFNfQllfT1JERVI6IHtcbiAgICAgIGNvbnN0IHsgbWVtYmVyT3JkZXJzIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHsgZGF0YSwgdG90YWwsIGN1cnJlbnRfcGFnZSwgbGFzdF9wYWdlIH0gPSBwYXlsb2FkLnJlc3BvbnNlO1xuICAgICAgY29uc3QgZm9ybWVyT3JkZXIgPSBtZW1iZXJPcmRlcnMuZmluZCgobykgPT4gby5pZCA9PT0gZGF0YVswXT8ub3JkZXJfaWQpO1xuXG4gICAgICBjb25zdCB1cGRhdGVkT3JkZXIgPSB7XG4gICAgICAgIC4uLmZvcm1lck9yZGVyLFxuICAgICAgICBtZW1iZXJUaWNrZXRzOlxuICAgICAgICAgIGN1cnJlbnRfcGFnZSA9PT0gRklSU1RfUEFHRVxuICAgICAgICAgICAgPyBkYXRhXG4gICAgICAgICAgICA6IFsuLi5mb3JtZXJPcmRlci5tZW1iZXJUaWNrZXRzLCAuLi5kYXRhXSxcbiAgICAgICAgdGlja2V0c19wYWdlX2N1cnJlbnQ6IGN1cnJlbnRfcGFnZSxcbiAgICAgICAgdGlja2V0c19wYWdlX2xhc3Q6IGxhc3RfcGFnZSxcbiAgICAgICAgdGlja2V0c190b3RhbDogdG90YWxcbiAgICAgIH07XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgbWVtYmVyT3JkZXJzOiBtZW1iZXJPcmRlcnMubWFwKChtbykgPT5cbiAgICAgICAgICBtby5pZCA9PT0gdXBkYXRlZE9yZGVyLmlkID8gdXBkYXRlZE9yZGVyIDogbW9cbiAgICAgICAgKVxuICAgICAgfTtcbiAgICB9XG4gICAgY2FzZSBVUERBVEVfVElDS0VUU19SRUZVTkRfUkVRVUVTVEVEOiB7XG4gICAgICBjb25zdCB7IG1lbWJlck9yZGVycyB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB0aWNrZXRzUmVmdW5kUmVxdWVzdGVkID0gcGF5bG9hZDtcbiAgICAgIGNvbnN0IG9yZGVyID0gbWVtYmVyT3JkZXJzLmZpbmQoXG4gICAgICAgIChvKSA9PiBvLmlkID09PSB0aWNrZXRzUmVmdW5kUmVxdWVzdGVkWzBdPy5vcmRlcl9pZFxuICAgICAgKTtcbiAgICAgIGNvbnN0IHVwZGF0ZWRUaWNrZXRzID0gb3JkZXI/Lm1lbWJlclRpY2tldHMubWFwKFxuICAgICAgICAodGlja2V0KSA9PlxuICAgICAgICAgIHRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQuZmluZCgodHJyKSA9PiB0cnIuaWQgPT09IHRpY2tldC5pZCkgfHwgdGlja2V0XG4gICAgICApO1xuICAgICAgY29uc3QgdXBkYXRlZE9yZGVyID0ge1xuICAgICAgICAuLi5vcmRlcixcbiAgICAgICAgbWVtYmVyVGlja2V0czogdXBkYXRlZFRpY2tldHNcbiAgICAgIH07XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgbWVtYmVyT3JkZXJzOiBtZW1iZXJPcmRlcnMubWFwKChtbykgPT5cbiAgICAgICAgICBtby5pZCA9PT0gdXBkYXRlZE9yZGVyLmlkID8gdXBkYXRlZE9yZGVyIDogbW9cbiAgICAgICAgKVxuICAgICAgfTtcbiAgICB9XG4gICAgY2FzZSBSRUNFSVZFX1RJQ0tFVDoge1xuICAgICAgY29uc3QgdGlja2V0ID0gcGF5bG9hZC5yZXNwb25zZTtcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBjdXJyZW50VGlja2V0OiB0aWNrZXQgfTtcbiAgICB9XG4gICAgY2FzZSBSRUNFSVZFX0VYVFJBX1FVRVNUSU9OUzoge1xuICAgICAgY29uc3QgeyBkYXRhIH0gPSBwYXlsb2FkLnJlc3BvbnNlO1xuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGV4dHJhUXVlc3Rpb25zOiBkYXRhIH07XG4gICAgfVxuICAgIGNhc2UgVVBEQVRFX1RJQ0tFVDoge1xuICAgICAgY29uc3QgdGlja2V0RGF0YSA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICBjb25zdCBuZXdPcmRlcnMgPSBzdGF0ZS5tZW1iZXJPcmRlcnMubWFwKChvcmRlcikgPT4ge1xuICAgICAgICBjb25zdCBuZXdUaWNrZXRzID0gb3JkZXIubWVtYmVyVGlja2V0cy5tYXAoKHRpY2tldCkgPT4ge1xuICAgICAgICAgIGlmICh0aWNrZXQuaWQgPT09IHRpY2tldERhdGEuaWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aWNrZXREYXRhO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdGlja2V0O1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4geyAuLi5vcmRlciwgbWVtYmVyVGlja2V0czogbmV3VGlja2V0cyB9O1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBtZW1iZXJPcmRlcnM6IG5ld09yZGVycyB9O1xuICAgIH1cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHN0YXRlO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBXaWRnZXRSZWR1Y2VyO1xuIiwiaW1wb3J0IHsgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgY29uZmlndXJlU3RvcmUgfSBmcm9tIFwiQHJlZHV4anMvdG9vbGtpdFwiO1xuaW1wb3J0IHtcbiAgcGVyc2lzdFN0b3JlLFxuICBwZXJzaXN0UmVkdWNlcixcbiAgRkxVU0gsXG4gIFJFSFlEUkFURSxcbiAgUEFVU0UsXG4gIFBFUlNJU1QsXG4gIFBVUkdFLFxuICBSRUdJU1RFUlxufSBmcm9tIFwicmVkdXgtcGVyc2lzdFwiO1xuaW1wb3J0IHN0b3JhZ2UgZnJvbSBcInJlZHV4LXBlcnNpc3QvbGliL3N0b3JhZ2VcIjtcbmltcG9ydCB7IGNvbWJpbmVSZWR1Y2VycyB9IGZyb20gXCJyZWR1eFwiO1xuaW1wb3J0IFdpZGdldFJlZHVjZXIgZnJvbSBcIi4vcmVkdWNlclwiO1xuXG5leHBvcnQgY29uc3QgZ2V0U3RvcmUgPSAoe1xuICBjbGllbnRJZCxcbiAgbG9naW5VcmwsXG4gIHN1bW1pdCxcbiAgYXBpQmFzZVVybCxcbiAgdXBkYXRlUHJvZmlsZVxufSkgPT4ge1xuICAvLyB0byBhZGQgb3RoZXIgcmVkdWNlcnMgbGF0ZXJcbiAgY29uc3QgcmVkdWNlcnMgPSBjb21iaW5lUmVkdWNlcnMoe1xuICAgIHdpZGdldFN0YXRlOiBXaWRnZXRSZWR1Y2VyXG4gIH0pO1xuXG4gIGNvbnN0IHN0b3JlID0gY29uZmlndXJlU3RvcmUoe1xuICAgIHJlZHVjZXI6IHBlcnNpc3RSZWR1Y2VyKFxuICAgICAge1xuICAgICAgICBrZXk6IGByb290X215X29yZGVyc190aWNrZXRzXyR7Y2xpZW50SWR9YCxcbiAgICAgICAgc3RvcmFnZVxuICAgICAgfSxcbiAgICAgIHJlZHVjZXJzXG4gICAgKSxcbiAgICBtaWRkbGV3YXJlOiAoZ2V0RGVmYXVsdE1pZGRsZXdhcmUpID0+XG4gICAgICBnZXREZWZhdWx0TWlkZGxld2FyZSh7XG4gICAgICAgIHRodW5rOiB7XG4gICAgICAgICAgZXh0cmFBcmd1bWVudDoge1xuICAgICAgICAgICAgY2xpZW50SWQsXG4gICAgICAgICAgICBhcGlCYXNlVXJsLFxuICAgICAgICAgICAgc3VtbWl0LFxuICAgICAgICAgICAgbG9naW5VcmwsXG4gICAgICAgICAgICB1cGRhdGVQcm9maWxlXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBpbW11dGFibGVDaGVjazogZmFsc2UsXG4gICAgICAgIHNlcmlhbGl6YWJsZUNoZWNrOiB7XG4gICAgICAgICAgaWdub3JlZEFjdGlvbnM6IFtGTFVTSCwgUkVIWURSQVRFLCBQQVVTRSwgUEVSU0lTVCwgUFVSR0UsIFJFR0lTVEVSXVxuICAgICAgICB9XG4gICAgICB9KVxuICB9KTtcblxuICByZXR1cm4gc3RvcmU7XG59O1xuXG5leHBvcnQgY29uc3QgdXNlSW5pdFN0b3JlID0gKGNvbmZpZykgPT4ge1xuICBjb25zdCBzdG9yZSA9IHVzZU1lbW8oKCkgPT4gZ2V0U3RvcmUoY29uZmlnKSwgW10pO1xuICBjb25zdCBwZXJzaXN0b3IgPSB1c2VNZW1vKCgpID0+IHBlcnNpc3RTdG9yZShzdG9yZSksIFtzdG9yZV0pO1xuXG4gIHJldHVybiB7XG4gICAgc3RvcmUsXG4gICAgcGVyc2lzdG9yXG4gIH07XG59O1xuIiwiaW1wb3J0IHtcbiAgaW5pdExvZ091dCxcbiAgZ2V0QWNjZXNzVG9rZW5cbn0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvbWV0aG9kc1wiO1xuaW1wb3J0ICogYXMgU2VudHJ5IGZyb20gXCJAc2VudHJ5L3JlYWN0XCI7XG5cbmV4cG9ydCBjb25zdCBnZXRBY2Nlc3NUb2tlblNhZmVseSA9IGFzeW5jICgpID0+IHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgZ2V0QWNjZXNzVG9rZW4oKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUubG9nKFwibXktb3JkZXJzLXRpY2tldHMtd2lkZ2U6OiBnZXRBY2Nlc3NUb2tlblNhZmVseSBlcnJvcjogXCIsIGUpO1xuICAgIFNlbnRyeS5jYXB0dXJlRXhjZXB0aW9uKGUpO1xuICAgIGluaXRMb2dPdXQoKTtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcbiAgfVxufTtcbiIsImV4cG9ydCBjb25zdCBMQVNUX0hPVVJfT0ZfMjRfSE9VUiA9IDIzO1xuZXhwb3J0IGNvbnN0IExBU1RfTUlOVVRFX09GX0hPVVIgPSA1OTtcbmV4cG9ydCBjb25zdCBPTkVfUEFHRV9ORVhUID0gMTtcbmV4cG9ydCBjb25zdCBNSUxMSVNFQ19UT19TRUMgPSAxMDAwO1xuZXhwb3J0IGNvbnN0IE9ORV9EQVkgPSAxO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfSVRFTVNfUEVSX1BBR0UgPSA1O1xuZXhwb3J0IGNvbnN0IEZJUlNUX1BBR0UgPSAxO1xuZXhwb3J0IGNvbnN0IFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCA9IDU7XG5leHBvcnQgY29uc3QgU1RFUF9PTkUgPSAxO1xuZXhwb3J0IGNvbnN0IFNURVBfVFdPID0gMjtcblxuZXhwb3J0IGNvbnN0IFNUQVRVU19DT01QTEVURSA9IFwiU1RBVFVTX0NPTVBMRVRFXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0lOQ09NUExFVEUgPSBcIlNUQVRVU19JTkNPTVBMRVRFXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1BFTkRJTkcgPSBcIlNUQVRVU19QRU5ESU5HXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0NBTkNFTExFRCA9IFwiU1RBVFVTX0NBTkNFTExFRFwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19FUlJPUiA9IFwiU1RBVFVTX0VSUk9SXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1BST0NFU1NJTkcgPSBcIlNUQVRVU19QUk9DRVNTSU5HXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1VOQVNTSUdORUQgPSBcIlNUQVRVU19VTkFTU0lHTkVEXCI7XG5cbmV4cG9ydCBjb25zdCBKRVNUX1RJTUVPVVRfSU5fTUlMTElTRUMgPSAxMDAwMDtcblxuZXhwb3J0IGNvbnN0IE9ORV9JVEVNID0gMTtcbmV4cG9ydCBjb25zdCBUV09fSVRFTSA9IDI7XG5leHBvcnQgY29uc3QgRklWRV9JVEVNID0gNTtcbmV4cG9ydCBjb25zdCBTSVhfSVRFTSA9IDY7XG5cbmV4cG9ydCBjb25zdCBQUk9NSVNFX0JBVENIX0xJTUlUID0gMTA7XG5leHBvcnQgY29uc3QgRklGVFlfUEVSX1BBR0UgPSA1MDtcbiIsImltcG9ydCBtb21lbnQgZnJvbSBcIm1vbWVudC10aW1lem9uZVwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2ggfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7XG4gIExBU1RfSE9VUl9PRl8yNF9IT1VSLFxuICBMQVNUX01JTlVURV9PRl9IT1VSLFxuICBNSUxMSVNFQ19UT19TRUNcbn0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBjb25zdCBmb3JtYXRDdXJyZW5jeSA9ICh2YWx1ZSwgeyBsb2NhbGUgPSBcImVuLVVTXCIsIC4uLm9wdGlvbnMgfSkgPT4ge1xuICBjb25zdCBkZWZhdWx0T3B0aW9ucyA9IHtcbiAgICBjdXJyZW5jeTogXCJVU0RcIixcbiAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsXG4gICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyXG4gIH07XG5cbiAgY29uc3QgZm9ybWF0dGVyID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KGxvY2FsZSwge1xuICAgIHN0eWxlOiBcImN1cnJlbmN5XCIsXG4gICAgLi4uZGVmYXVsdE9wdGlvbnMsXG4gICAgLi4ub3B0aW9uc1xuICB9KTtcblxuICByZXR1cm4gZm9ybWF0dGVyLmZvcm1hdCh2YWx1ZSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Rm9ybWF0dGVkRGF0ZSA9IChkYXRldGltZSwgdGltZVpvbmUpID0+IHtcbiAgaWYgKHRpbWVab25lKVxuICAgIHJldHVybiBtb21lbnRcbiAgICAgIC50eihkYXRldGltZSAqIE1JTExJU0VDX1RPX1NFQywgdGltZVpvbmUpXG4gICAgICAuZm9ybWF0KFwiTU1NTSBERCwgWVlZWVwiKTtcblxuICByZXR1cm4gbW9tZW50LnVuaXgoZGF0ZXRpbWUpLmZvcm1hdChcIk1NTU0gREQsIFlZWVlcIik7XG59O1xuXG5leHBvcnQgY29uc3QgY2FsY3VsYXRlT3JkZXJUb3RhbHMgPSAoeyBvcmRlciwgc3VtbWl0LCB0aWNrZXRzIH0pID0+IHtcbiAgaWYgKCFvcmRlciB8fCAhc3VtbWl0IHx8ICF0aWNrZXRzKSByZXR1cm4ge307XG5cbiAgY29uc3QgeyByZWZ1bmRlZF9hbW91bnQsIGRpc2NvdW50X2Ftb3VudCwgdGF4ZXNfYW1vdW50LCBhbW91bnQgfSA9IG9yZGVyO1xuICBjb25zdCB7IHRpY2tldF90eXBlcyB9ID0gc3VtbWl0O1xuXG4gIGNvbnN0IHRpY2tldFN1bW1hcnkgPSBbXTtcbiAgbGV0IHB1cmNoYXNlVGlja2V0VG90YWwgPSAwO1xuXG4gIGNvbnN0IGN1cnJlbmN5T2JqZWN0ID0geyBjdXJyZW5jeTogb3JkZXIuY3VycmVuY3kgfTtcblxuICBPYmplY3Qua2V5cyhvcmRlci50aWNrZXRzX2V4Y2VycHRfYnlfdGlja2V0X3R5cGUpLm1hcCgodGlja2V0KSA9PiB7XG4gICAgY29uc3QgdGlja2V0VHlwZSA9IHRpY2tldF90eXBlcz8uZmluZCgodHQpID0+IHR0Lm5hbWUgPT09IHRpY2tldCk7XG4gICAgaWYgKCF0aWNrZXRUeXBlKSByZXR1cm4gbnVsbDtcbiAgICB0aWNrZXRTdW1tYXJ5LnB1c2goe1xuICAgICAgdGlja2V0X3R5cGVfaWQ6IHRpY2tldFR5cGUuaWQsXG4gICAgICB0aWNrZXRfdHlwZTogdGlja2V0VHlwZSxcbiAgICAgIG5hbWU6IHRpY2tldCxcbiAgICAgIHF0eTogb3JkZXIudGlja2V0c19leGNlcnB0X2J5X3RpY2tldF90eXBlW3RpY2tldF1cbiAgICB9KTtcbiAgICBwdXJjaGFzZVRpY2tldFRvdGFsICs9XG4gICAgICB0aWNrZXRUeXBlLmNvc3QgKiBvcmRlci50aWNrZXRzX2V4Y2VycHRfYnlfdGlja2V0X3R5cGVbdGlja2V0XTtcblxuICAgIHJldHVybiB0aWNrZXRTdW1tYXJ5O1xuICB9KTtcblxuICBjb25zdCBwdXJjaGFzZVRvdGFsID0gZm9ybWF0Q3VycmVuY3kocHVyY2hhc2VUaWNrZXRUb3RhbCwgY3VycmVuY3lPYmplY3QpO1xuXG4gIGNvbnN0IGRpc2NvdW50VG90YWwgPSBmb3JtYXRDdXJyZW5jeShkaXNjb3VudF9hbW91bnQsIGN1cnJlbmN5T2JqZWN0KTtcbiAgY29uc3QgcmVmdW5kVG90YWwgPSBmb3JtYXRDdXJyZW5jeShyZWZ1bmRlZF9hbW91bnQsIGN1cnJlbmN5T2JqZWN0KTtcbiAgY29uc3QgdGF4ZXNUb3RhbCA9IGZvcm1hdEN1cnJlbmN5KHRheGVzX2Ftb3VudCwgY3VycmVuY3lPYmplY3QpO1xuICBjb25zdCBhbW91bnRUb3RhbCA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvcmRlciwgXCJhbW91bnRcIilcbiAgICA/IGZvcm1hdEN1cnJlbmN5KGFtb3VudCwgY3VycmVuY3lPYmplY3QpXG4gICAgOiBmb3JtYXRDdXJyZW5jeShwdXJjaGFzZVRvdGFsLCBjdXJyZW5jeU9iamVjdCk7XG5cbiAgcmV0dXJuIHtcbiAgICBkaXNjb3VudFRvdGFsLFxuICAgIHJlZnVuZFRvdGFsLFxuICAgIHRheGVzVG90YWwsXG4gICAgYW1vdW50VG90YWwsXG4gICAgdGlja2V0U3VtbWFyeVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldE9yZGVyVGlja2V0cyA9IChtZW1iZXJPcmRlcnMsIG9yZGVySWQpID0+IHtcbiAgY29uc3Qgb3JkZXJzID0gbWVtYmVyT3JkZXJzLmZpbHRlcigobykgPT4gby5pZCA9PT0gb3JkZXJJZCk7XG4gIHJldHVybiBvcmRlcnNbMF0/Lm1lbWJlclRpY2tldHM7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RXBvY2hMb3dlclVwcGVySW5TZWNvbmRzID0gKHRzKSA9PiB7XG4gIGNvbnN0IGxvd2VyID0gdHMuc2V0SG91cnMoMCwgMCwgMCwgMCkgLyBNSUxMSVNFQ19UT19TRUM7XG4gIGNvbnN0IHVwcGVyID1cbiAgICB0cy5zZXRIb3VycyhMQVNUX0hPVVJfT0ZfMjRfSE9VUiwgTEFTVF9NSU5VVEVfT0ZfSE9VUiwgMCwgMCkgL1xuICAgIE1JTExJU0VDX1RPX1NFQztcbiAgcmV0dXJuIHtcbiAgICBsb3dlcixcbiAgICB1cHBlclxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRDdXJyZW50VGltZSA9ICgpID0+XG4gIE1hdGgucm91bmQoK25ldyBEYXRlKCkgLyBNSUxMSVNFQ19UT19TRUMpO1xuXG5leHBvcnQgY29uc3QgZ2V0Tm93ID0gKCkgPT4gKGRpc3BhdGNoLCBnZXRTdGF0ZSkgPT4ge1xuICBjb25zdCB7IHRpbWVyU3RhdGUgfSA9IGdldFN0YXRlKCk7XG4gIHJldHVybiB0aW1lclN0YXRlPy5ub3dVdGMgPT0gbnVsbCA/IGRlZmF1bHRDdXJyZW50VGltZSgpIDogdGltZXJTdGF0ZT8ubm93VXRjO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZU5vdyA9ICgpID0+IHtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuXG4gIHJldHVybiBkaXNwYXRjaChnZXROb3coKSk7XG59O1xuIiwiaW1wb3J0IG1vbWVudCBmcm9tIFwibW9tZW50LXRpbWV6b25lXCI7XG5pbXBvcnQgeyBNSUxMSVNFQ19UT19TRUMsIE9ORV9EQVkgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IHVzZU5vdyB9IGZyb20gXCIuXCI7XG5cbmV4cG9ydCBjb25zdCBjaGVja1N1bW1pdFBhc3QgPSAoc3VtbWl0LCBub3cpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuXG4gIGNvbnN0IHJlYXNzaWduX2RhdGUgPVxuICAgIHN1bW1pdD8ucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZSAmJlxuICAgIHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlIDwgc3VtbWl0LmVuZF9kYXRlXG4gICAgICA/IHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlXG4gICAgICA6IHN1bW1pdC5lbmRfZGF0ZTtcblxuICByZXR1cm4gbm93ID4gcmVhc3NpZ25fZGF0ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBjaGVja1N1bW1pdFN0YXJ0ZWQgPSAoc3VtbWl0LCBub3cpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuXG4gIHJldHVybiBzdW1taXQuc3RhcnRfZGF0ZSA8IG5vdztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTdW1taXREYXlzRGlmZiA9IChzdW1taXQpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuICBjb25zdCBzdGFydERheSA9IG1vbWVudChzdW1taXQuc3RhcnRfZGF0ZSAqIE1JTExJU0VDX1RPX1NFQykudHooXG4gICAgc3VtbWl0LnRpbWVfem9uZV9pZFxuICApO1xuICBjb25zdCBlbmREYXkgPSBtb21lbnQoc3VtbWl0LmVuZF9kYXRlICogTUlMTElTRUNfVE9fU0VDKS50eihcbiAgICBzdW1taXQudGltZV96b25lX2lkXG4gICk7XG4gIGNvbnN0IGRheXMgPSBlbmREYXk/LmRpZmYoc3RhcnREYXksIFwiZGF5c1wiKTtcbiAgcmV0dXJuIHtcbiAgICBzdGFydERheSxcbiAgICBlbmREYXksXG4gICAgZGF5c1xuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFN1bW1pdEZvcm1hdHRlZERhdGUgPSAoc3VtbWl0KSA9PiB7XG4gIGlmICghc3VtbWl0KSByZXR1cm4gbnVsbDtcbiAgY29uc3QgeyBzdGFydERheSwgZW5kRGF5LCBkYXlzIH0gPSBnZXRTdW1taXREYXlzRGlmZihzdW1taXQpO1xuICBpZiAoIXN0YXJ0RGF5IHx8ICFlbmREYXkpIHJldHVybiBudWxsO1xuICBsZXQgZm9ybWF0U3RhcnREYXRlID0gXCJNTU1NIERELCBZWVlZXCI7XG4gIGxldCBmb3JtYXRFbmREYXRlID0gXCJNTU1NIERELCBZWVlZXCI7XG4gIGlmIChzdGFydERheS55ZWFyKCkgPT09IGVuZERheS55ZWFyKCkpIGZvcm1hdFN0YXJ0RGF0ZSA9IFwiTU1NTSBERFwiO1xuICBpZiAoc3RhcnREYXkubW9udGgoKSA9PT0gZW5kRGF5Lm1vbnRoKCkpIGZvcm1hdEVuZERhdGUgPSBcIkRELCBZWVlZXCI7XG5cbiAgY29uc3Qgc3RhcnREYXRlID0gc3RhcnREYXkuZm9ybWF0KGZvcm1hdFN0YXJ0RGF0ZSk7XG4gIGNvbnN0IGVuZERhdGUgPSBlbmREYXkuZm9ybWF0KGZvcm1hdEVuZERhdGUpO1xuXG4gIGlmIChkYXlzID4gT05FX0RBWSkgcmV0dXJuIGAke3N0YXJ0RGF0ZX0gLSAke2VuZERhdGV9YDtcblxuICByZXR1cm4gc3RhcnREYXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFN1bW1pdExvY2F0aW9uID0gKHN1bW1pdCkgPT4ge1xuICBpZiAoIXN1bW1pdCkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3QgbG9jYXRpb24gPSBzdW1taXQubG9jYXRpb25zPy5maW5kKFxuICAgIChsKSA9PiBsLmNsYXNzX25hbWUgPT09IFwiU3VtbWl0VmVudWVcIiAmJiBsLmlzX21haW4gPT09IHRydWVcbiAgKTtcblxuICBpZiAoIWxvY2F0aW9uKSByZXR1cm4gbnVsbDtcblxuICByZXR1cm4gYCR7bG9jYXRpb24uY2l0eX0sICR7bG9jYXRpb24uY291bnRyeX1gO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFN1bW1pdFJlYXNzaWduRGF0ZSA9IChzdW1taXQpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuXG4gIHJldHVybiBzdW1taXQucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZSAmJlxuICAgIHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlIDwgc3VtbWl0LmVuZF9kYXRlXG4gICAgPyBzdW1taXQucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZVxuICAgIDogc3VtbWl0LmVuZF9kYXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZVN1bW1pdERldGFpbHMgPSAoeyBzdW1taXQgfSkgPT4ge1xuICBjb25zdCBub3cgPSB1c2VOb3coKTtcblxuICBpZiAoIXN1bW1pdCkgcmV0dXJuIHt9O1xuXG4gIGNvbnN0IGxvY2F0aW9uID0gZ2V0U3VtbWl0TG9jYXRpb24oc3VtbWl0KTtcbiAgY29uc3QgZm9ybWF0dGVkRGF0ZSA9IGdldFN1bW1pdEZvcm1hdHRlZERhdGUoc3VtbWl0KTtcbiAgY29uc3QgcmVhc3NpZ25EYXRlID0gZ2V0U3VtbWl0UmVhc3NpZ25EYXRlKHN1bW1pdCk7XG4gIGNvbnN0IGZvcm1hdHRlZFJlYXNzaWduRGF0ZSA9IG1vbWVudC50eihcbiAgICByZWFzc2lnbkRhdGUsXG4gICAgc3VtbWl0LnRpbWVfem9uZT8udGltZV96b25lX2lkXG4gICk7XG4gIGNvbnN0IGRheXNVbnRpbFJlYXNzaWduRGVhZGxpbmUgPSBnZXRTdW1taXREYXlzRGlmZihcbiAgICBub3csXG4gICAgcmVhc3NpZ25EYXRlLFxuICAgIHN1bW1pdC50aW1lX3pvbmU/Lm5hbWVcbiAgKTtcblxuICBjb25zdCBpc1Bhc3QgPSBjaGVja1N1bW1pdFBhc3Qoc3VtbWl0LCBub3cpO1xuICBjb25zdCBpc1N0YXJ0ZWQgPSBjaGVja1N1bW1pdFN0YXJ0ZWQoc3VtbWl0LCBub3cpO1xuICBjb25zdCBpc1JlYXNzaWduYWJsZSA9IHJlYXNzaWduRGF0ZSA+IG5vdztcblxuICByZXR1cm4ge1xuICAgIG5hbWU6IHN1bW1pdD8ubmFtZSxcbiAgICBub3csXG4gICAgbG9jYXRpb24sXG4gICAgZm9ybWF0dGVkRGF0ZSxcbiAgICByZWFzc2lnbkRhdGUsXG4gICAgZm9ybWF0dGVkUmVhc3NpZ25EYXRlLFxuICAgIGRheXNVbnRpbFJlYXNzaWduRGVhZGxpbmUsXG4gICAgaXNQYXN0LFxuICAgIGlzU3RhcnRlZCxcbiAgICBpc1JlYXNzaWduYWJsZVxuICB9O1xufTtcbiIsImltcG9ydCBpMThuIGZyb20gXCIuLi9pMThuXCI7XG5pbXBvcnQge1xuICBTVEFUVVNfQ0FOQ0VMTEVELFxuICBTVEFUVVNfQ09NUExFVEUsXG4gIFNUQVRVU19JTkNPTVBMRVRFLFxuICBTVEFUVVNfVU5BU1NJR05FRFxufSBmcm9tIFwiLi9jb25zdGFudHNcIjtcblxuZXhwb3J0IGNvbnN0IHN0YXR1c0RhdGEgPSB7XG4gIFtTVEFUVVNfVU5BU1NJR05FRF06IHtcbiAgICB0eXBlOiBTVEFUVVNfVU5BU1NJR05FRCxcbiAgICB0ZXh0OiBpMThuLnQoXCJ0aWNrZXRfc3RhdHVzLnVuYXNzaWduZWRcIilcbiAgfSxcbiAgW1NUQVRVU19JTkNPTVBMRVRFXToge1xuICAgIHR5cGU6IFNUQVRVU19JTkNPTVBMRVRFLFxuICAgIHRleHQ6IGkxOG4udChcInRpY2tldF9zdGF0dXMuaW5jb21wbGV0ZVwiKVxuICB9LFxuICBbU1RBVFVTX0NPTVBMRVRFXToge1xuICAgIHR5cGU6IFNUQVRVU19DT01QTEVURSxcbiAgICB0ZXh0OiBpMThuLnQoXCJ0aWNrZXRfc3RhdHVzLmNvbXBsZXRlXCIpXG4gIH0sXG4gIFtTVEFUVVNfQ0FOQ0VMTEVEXToge1xuICAgIHR5cGU6IFNUQVRVU19DQU5DRUxMRUQsXG4gICAgdGV4dDogaTE4bi50KFwidGlja2V0X3N0YXR1cy5jYW5jZWxsZWRcIilcbiAgfVxufTtcbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRTdGF0dXNLZXkgPSAodGlja2V0KSA9PiB7XG4gIGlmICghdGlja2V0LmlzX2FjdGl2ZSkgcmV0dXJuIFNUQVRVU19DQU5DRUxMRUQ7XG5cbiAgaWYgKHRpY2tldC5vd25lcl9pZCA9PT0gMCkgcmV0dXJuIFNUQVRVU19VTkFTU0lHTkVEO1xuXG4gIGlmICghdGlja2V0Lm93bmVyPy5maXJzdF9uYW1lIHx8ICF0aWNrZXQub3duZXI/Lmxhc3RfbmFtZSlcbiAgICByZXR1cm4gU1RBVFVTX0lOQ09NUExFVEU7XG5cbiAgaWYgKHRpY2tldC5vd25lciAmJiB0aWNrZXQub3duZXI/LnN0YXR1cyA9PT0gXCJJbmNvbXBsZXRlXCIpXG4gICAgcmV0dXJuIFNUQVRVU19JTkNPTVBMRVRFO1xuXG4gIGlmICh0aWNrZXQub3duZXIgJiYgdGlja2V0Lm93bmVyPy5zdGF0dXMgPT09IFwiQ29tcGxldGVcIilcbiAgICByZXR1cm4gU1RBVFVTX0NPTVBMRVRFO1xuXG4gIHJldHVybiBTVEFUVVNfSU5DT01QTEVURTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRTdGF0dXNEYXRhID0gKHRpY2tldCwgaXNTdW1taXRQYXN0KSA9PlxuICBzdGF0dXNEYXRhW2dldFRpY2tldFN0YXR1c0tleSh0aWNrZXQsIGlzU3VtbWl0UGFzdCldO1xuXG5leHBvcnQgY29uc3QgZ2V0VGlja2V0Um9sZSA9ICh0aWNrZXQpID0+IHtcbiAgaWYgKCF0aWNrZXQuYmFkZ2UpIHJldHVybiBudWxsO1xuXG4gIGNvbnN0IHsgZmVhdHVyZXMgfSA9IHRpY2tldC5iYWRnZTtcblxuICBpZiAoZmVhdHVyZXMubGVuZ3RoID4gMClcbiAgICByZXR1cm4gZmVhdHVyZXMubWFwKChmZWF0dXJlKSA9PiBmZWF0dXJlLm5hbWUpLmpvaW4oXCIsIFwiKTtcblxuICByZXR1cm4gbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRUeXBlID0gKHRpY2tldCwgc3VtbWl0KSA9PlxuICBzdW1taXQudGlja2V0X3R5cGVzLmZpbmQoKHR5cGUpID0+IHR5cGUuaWQgPT09IHRpY2tldC50aWNrZXRfdHlwZV9pZCk7XG5cbmV4cG9ydCBjb25zdCBpc1RpY2tldFJlZnVuZGFibGUgPSAodGlja2V0KSA9PlxuICB0aWNrZXQ/LmZpbmFsX2Ftb3VudCA+IDAgJiZcbiAgdGlja2V0Py5maW5hbF9hbW91bnQgPiB0aWNrZXQ/LnJlZnVuZGVkX2Ftb3VudCAmJlxuICAhdGlja2V0Py5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoKHJyKSA9PiByci5zdGF0dXMgPT09IFwiUmVxdWVzdGVkXCIpO1xuXG5leHBvcnQgY29uc3QgdGlja2V0c1JlZnVuZGFibGUgPSAodGlja2V0cykgPT5cbiAgdGlja2V0cz8uZmlsdGVyKCh0aWNrZXQpID0+IGlzVGlja2V0UmVmdW5kYWJsZSh0aWNrZXQpKS5sZW5ndGggfHwgMDtcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJNdWlPdXRsaW5lZElucHV0LW5vdGNoZWRPdXRsaW5lX19fUm9pbVJcIjtcbnZhciBfMiA9IFwiTXVpUGlja2Vyc0NhbGVuZGFySGVhZGVyLWxhYmVsQ29udGFpbmVyX19fb29JMFZcIjtcbnZhciBfMyA9IFwiY2FsZW5kYXJEaXNwbGF5X19faW1famhcIjtcbnZhciBfNCA9IFwiY29udGFpbmVyX19fTjNZNFhcIjtcbnZhciBfNSA9IFwiZGF0ZVBpY2tlckNvbnRhaW5lcl9fX0pXMmxPXCI7XG52YXIgXzYgPSBcImRhdGVwaWNrZXJDbG9zZV9fX1Y5Z0hDXCI7XG52YXIgXzcgPSBcImZpbHRlckNvbnRhaW5lcl9fX3JHcFlWXCI7XG52YXIgXzggPSBcImZpbHRlckRhdGVMYWJlbF9fX2lmRDRwXCI7XG52YXIgXzkgPSBcImZpbHRlckljb25fX19sMjFLSVwiO1xudmFyIF9hID0gXCJmaWx0ZXJMYWJlbF9fX19QMHduXCI7XG52YXIgX2IgPSBcImZpbHRlckxpc3RDb250YWluZXJfX19WbWRHcVwiO1xudmFyIF9jID0gXCJmaWx0ZXJOdW1BY3RpdmVfX19WdUhDSlwiO1xudmFyIF9kID0gXCJmaWx0ZXJTb3J0Q29udGFpbmVyX19fYXJCdlFcIjtcbnZhciBfZSA9IFwibGFiZWxfX195TkZ5alwiO1xudmFyIF9mID0gXCJzaG93RGF0ZVBpY2tlcl9fX1VwUWJwXCI7XG52YXIgXzEwID0gXCJzb3J0Q29udGFpbmVyX19fbFJzalVcIjtcbnZhciBfMTEgPSBcInNvcnRJY29uX19fZlZWNUtcIjtcbnZhciBfMTIgPSBcInNvcnRMYWJlbF9fX1VxTFRDXCI7XG52YXIgXzEzID0gXCJzb3J0TGlzdENvbnRhaW5lcl9fX2NtbkJEXCI7XG5leHBvcnQgeyBfMSBhcyBcIk11aU91dGxpbmVkSW5wdXQtbm90Y2hlZE91dGxpbmVcIiwgXzIgYXMgXCJNdWlQaWNrZXJzQ2FsZW5kYXJIZWFkZXItbGFiZWxDb250YWluZXJcIiwgXzMgYXMgXCJjYWxlbmRhckRpc3BsYXlcIiwgXzQgYXMgXCJjb250YWluZXJcIiwgXzUgYXMgXCJkYXRlUGlja2VyQ29udGFpbmVyXCIsIF82IGFzIFwiZGF0ZXBpY2tlckNsb3NlXCIsIF83IGFzIFwiZmlsdGVyQ29udGFpbmVyXCIsIF84IGFzIFwiZmlsdGVyRGF0ZUxhYmVsXCIsIF85IGFzIFwiZmlsdGVySWNvblwiLCBfYSBhcyBcImZpbHRlckxhYmVsXCIsIF9iIGFzIFwiZmlsdGVyTGlzdENvbnRhaW5lclwiLCBfYyBhcyBcImZpbHRlck51bUFjdGl2ZVwiLCBfZCBhcyBcImZpbHRlclNvcnRDb250YWluZXJcIiwgX2UgYXMgXCJsYWJlbFwiLCBfZiBhcyBcInNob3dEYXRlUGlja2VyXCIsIF8xMCBhcyBcInNvcnRDb250YWluZXJcIiwgXzExIGFzIFwic29ydEljb25cIiwgXzEyIGFzIFwic29ydExhYmVsXCIsIF8xMyBhcyBcInNvcnRMaXN0Q29udGFpbmVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImVycm9yTGFiZWxfX19ub2N5WFwiO1xuZXhwb3J0IHsgXzEgYXMgXCJlcnJvckxhYmVsXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcIm11bHRpc3RlcENsb3NlSWNvbl9fX3FjNk5EXCI7XG52YXIgXzIgPSBcIm11bHRpc3RlcENvbnRhaW5lcl9fX2RQYVM1XCI7XG5leHBvcnQgeyBfMSBhcyBcIm11bHRpc3RlcENsb3NlSWNvblwiLCBfMiBhcyBcIm11bHRpc3RlcENvbnRhaW5lclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJvcmRlckRldGFpbHNNbW91bnRfX19yM2tSQVwiO1xudmFyIF8yID0gXCJvcmRlckRldGFpbHNUaWNrZXRzX19fbTRJaktcIjtcbnZhciBfMyA9IFwib3JkZXJTdW1tYXJ5QnV0dG9uX19fdXhqaHRcIjtcbnZhciBfNCA9IFwib3JkZXJTdW1tYXJ5UHVyY2hhc2VkSW5mb19fX19SQlhFXCI7XG52YXIgXzUgPSBcIm9yZGVyU3VtbWFyeVRhYmxlX19fWURueFZcIjtcbnZhciBfNiA9IFwib3JkZXJTdW1tYXJ5V3JhcHBlcl9fX1J3SUVSXCI7XG52YXIgXzcgPSBcInJlZnVuZERpc2FibGVkX19fanZyazNcIjtcbmV4cG9ydCB7IF8xIGFzIFwib3JkZXJEZXRhaWxzTW1vdW50XCIsIF8yIGFzIFwib3JkZXJEZXRhaWxzVGlja2V0c1wiLCBfMyBhcyBcIm9yZGVyU3VtbWFyeUJ1dHRvblwiLCBfNCBhcyBcIm9yZGVyU3VtbWFyeVB1cmNoYXNlZEluZm9cIiwgXzUgYXMgXCJvcmRlclN1bW1hcnlUYWJsZVwiLCBfNiBhcyBcIm9yZGVyU3VtbWFyeVdyYXBwZXJcIiwgXzcgYXMgXCJyZWZ1bmREaXNhYmxlZFwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJhc3NpZ25UaWNrZXRCdXR0b25fX196ekxzY1wiO1xudmFyIF8yID0gXCJibGFja0J1dHRvbl9fX2w5aGo5XCI7XG52YXIgXzMgPSBcImNvcHlJY29uX19fTmtIR09cIjtcbnZhciBfNCA9IFwiZGlzcGxheV9ub25lX19fQ3FwTDNcIjtcbnZhciBfNSA9IFwibGFiZWxfX196WERXelwiO1xudmFyIF82ID0gXCJvcmRlclRpY2tldENvbnRhaW5lcl9fX1pKTHprXCI7XG52YXIgXzcgPSBcIm9yZGVyVGlja2V0SW5mb19fX2dlbXFCXCI7XG52YXIgXzggPSBcIm9yZGVyVGlja2V0SW5mb0NvbnRhaW5lcl9fX19wNjZWXCI7XG52YXIgXzkgPSBcIm9yZGVyVGlja2V0Tm9Db250YWluZXJfX192cW9oTlwiO1xudmFyIF9hID0gXCJvcmRlclRpY2tldE51bWJlclRydW5jYXRlZF9fX0hYbWR3XCI7XG52YXIgX2IgPSBcIm9yZGVyV3JhcHBlcl9fX3lEQkFvXCI7XG52YXIgX2MgPSBcInJlYXNzaWduQnV0dG9uX19fUm9qTTVcIjtcbnZhciBfZCA9IFwicmVmdW5kQnV0dG9uc19fX2pEbDRIXCI7XG52YXIgX2UgPSBcInJldmVyc2VkX19fREZlYV9cIjtcbnZhciBfZiA9IFwidGFiQnV0dG9uc19fX3hUeUpBXCI7XG52YXIgXzEwID0gXCJ0aWNrZXRBY3Rpb25CdXR0b25zX19fcnBTTVFcIjtcbnZhciBfMTEgPSBcInRpY2tldExpc3RDb250YWluZXJfX19jZm1yclwiO1xudmFyIF8xMiA9IFwidGlja2V0Tm9fX19hMmlNOVwiO1xudmFyIF8xMyA9IFwidGlja2V0T3duZXJFbWFpbF9fX1p0NE9FXCI7XG52YXIgXzE0ID0gXCJ0aWNrZXRUaWNrZXRUeXBlX19fWnFfZjBcIjtcbnZhciBfMTUgPSBcInZpZXdGaW5pc2hUaWNrZXRCdXR0b25fX19IRjZJbVwiO1xudmFyIF8xNiA9IFwidmlld01vcmVCdXR0b25fX19LXzF6VFwiO1xuZXhwb3J0IHsgXzEgYXMgXCJhc3NpZ25UaWNrZXRCdXR0b25cIiwgXzIgYXMgXCJibGFja0J1dHRvblwiLCBfMyBhcyBcImNvcHlJY29uXCIsIF80IGFzIFwiZGlzcGxheV9ub25lXCIsIF81IGFzIFwibGFiZWxcIiwgXzYgYXMgXCJvcmRlclRpY2tldENvbnRhaW5lclwiLCBfNyBhcyBcIm9yZGVyVGlja2V0SW5mb1wiLCBfOCBhcyBcIm9yZGVyVGlja2V0SW5mb0NvbnRhaW5lclwiLCBfOSBhcyBcIm9yZGVyVGlja2V0Tm9Db250YWluZXJcIiwgX2EgYXMgXCJvcmRlclRpY2tldE51bWJlclRydW5jYXRlZFwiLCBfYiBhcyBcIm9yZGVyV3JhcHBlclwiLCBfYyBhcyBcInJlYXNzaWduQnV0dG9uXCIsIF9kIGFzIFwicmVmdW5kQnV0dG9uc1wiLCBfZSBhcyBcInJldmVyc2VkXCIsIF9mIGFzIFwidGFiQnV0dG9uc1wiLCBfMTAgYXMgXCJ0aWNrZXRBY3Rpb25CdXR0b25zXCIsIF8xMSBhcyBcInRpY2tldExpc3RDb250YWluZXJcIiwgXzEyIGFzIFwidGlja2V0Tm9cIiwgXzEzIGFzIFwidGlja2V0T3duZXJFbWFpbFwiLCBfMTQgYXMgXCJ0aWNrZXRUaWNrZXRUeXBlXCIsIF8xNSBhcyBcInZpZXdGaW5pc2hUaWNrZXRCdXR0b25cIiwgXzE2IGFzIFwidmlld01vcmVCdXR0b25cIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiYWN0aW9uQnV0dG9uc19fX3U3bVBTXCI7XG52YXIgXzIgPSBcImNhbmNlbEJ1dHRvbl9fX3lmaFliXCI7XG52YXIgXzMgPSBcImNvbnRpbnVlQnV0dG9uX19fTnlYM3NcIjtcbnZhciBfNCA9IFwiZGVsZXRlSWNvbl9fX0ZTd3llXCI7XG52YXIgXzUgPSBcInJlZnVuZEVycm9yTXNnX19fQWFoenJcIjtcbnZhciBfNiA9IFwicmVmdW5kSGVhZGVyc19fX0hWSW1rXCI7XG52YXIgXzcgPSBcInJlZnVuZFN1Y2Nlc3NmdWxfX196ckRRWVwiO1xudmFyIF84ID0gXCJyZWZ1bmRUZXh0X19fYUVuTDlcIjtcbnZhciBfOSA9IFwicmVmdW5kVGlja2V0Qm94Q29udGFpbmVyX19feWE2MTNcIjtcbnZhciBfYSA9IFwic3VjY2Vzc01zZ19fX0h0TXNlXCI7XG52YXIgX2IgPSBcInN1Y2Nlc3NNc2cyX19fUTZ6bmFcIjtcbnZhciBfYyA9IFwidGlja2V0Tm9fX19fRUFENFwiO1xuZXhwb3J0IHsgXzEgYXMgXCJhY3Rpb25CdXR0b25zXCIsIF8yIGFzIFwiY2FuY2VsQnV0dG9uXCIsIF8zIGFzIFwiY29udGludWVCdXR0b25cIiwgXzQgYXMgXCJkZWxldGVJY29uXCIsIF81IGFzIFwicmVmdW5kRXJyb3JNc2dcIiwgXzYgYXMgXCJyZWZ1bmRIZWFkZXJzXCIsIF83IGFzIFwicmVmdW5kU3VjY2Vzc2Z1bFwiLCBfOCBhcyBcInJlZnVuZFRleHRcIiwgXzkgYXMgXCJyZWZ1bmRUaWNrZXRCb3hDb250YWluZXJcIiwgX2EgYXMgXCJzdWNjZXNzTXNnXCIsIF9iIGFzIFwic3VjY2Vzc01zZzJcIiwgX2MgYXMgXCJ0aWNrZXROb1wiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJ3cmFwcGVyX19fRXdPUnpcIjtcbmV4cG9ydCB7IF8xIGFzIFwid3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJpbmZvTm90ZV9fX2kxWFk5XCI7XG52YXIgXzIgPSBcIndyYXBwZXJfX19NQXVOU1wiO1xuZXhwb3J0IHsgXzEgYXMgXCJpbmZvTm90ZVwiLCBfMiBhcyBcIndyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiYWN0aW9uQnV0dG9uc0NvbnRhaW5lcl9fX0F1dnJuXCI7XG52YXIgXzIgPSBcImFkZGl0aW9uYWxEZXRhaWxzX19fbVAxaUpcIjtcbnZhciBfMyA9IFwiYXR0ZW5kZWVDb250YWluZXJfX19RMFZVelwiO1xudmFyIF80ID0gXCJhdHRlbmRlZUluZm9UaXRsZV9fX0xtcm00XCI7XG52YXIgXzUgPSBcImNhbmNlbEJ0bl9fX2dnQ2RqXCI7XG52YXIgXzYgPSBcImNsb3NlQnRuX19fV05KbEVcIjtcbnZhciBfNyA9IFwiY29weUJ0bl9fX191dEE2XCI7XG52YXIgXzggPSBcImRlbGVnYXRlZFRvX19fU0dWUUlcIjtcbnZhciBfOSA9IFwiZG93bmxvYWRCdG5fX19xalloelwiO1xudmFyIF9hID0gXCJmb290ZXJfX19OSU03ZFwiO1xudmFyIF9iID0gXCJoZWFkZXJfX19BdWduelwiO1xudmFyIF9jID0gXCJvcmRlck51bWJlcl9fX0w1UTVhXCI7XG52YXIgX2QgPSBcInFyQ29kZV9fX2Z3cVpxXCI7XG52YXIgX2UgPSBcInFyTm90ZV9fX0djN0tuXCI7XG52YXIgX2YgPSBcInNhdmVCdG5fX19OcE9FVlwiO1xudmFyIF8xMCA9IFwic2VuZEJ0bl9fX2tvV00yXCI7XG52YXIgXzExID0gXCJzdGF0dXNfX19rd0M4eVwiO1xudmFyIF8xMiA9IFwic3VidGl0bGVfX195X051T1wiO1xudmFyIF8xMyA9IFwidGlja2V0RGV0YWlsQ29udGFpbmVyX19fYjJUTFJcIjtcbnZhciBfMTQgPSBcInRpdGxlX19fd1F6VU5cIjtcbmV4cG9ydCB7IF8xIGFzIFwiYWN0aW9uQnV0dG9uc0NvbnRhaW5lclwiLCBfMiBhcyBcImFkZGl0aW9uYWxEZXRhaWxzXCIsIF8zIGFzIFwiYXR0ZW5kZWVDb250YWluZXJcIiwgXzQgYXMgXCJhdHRlbmRlZUluZm9UaXRsZVwiLCBfNSBhcyBcImNhbmNlbEJ0blwiLCBfNiBhcyBcImNsb3NlQnRuXCIsIF83IGFzIFwiY29weUJ0blwiLCBfOCBhcyBcImRlbGVnYXRlZFRvXCIsIF85IGFzIFwiZG93bmxvYWRCdG5cIiwgX2EgYXMgXCJmb290ZXJcIiwgX2IgYXMgXCJoZWFkZXJcIiwgX2MgYXMgXCJvcmRlck51bWJlclwiLCBfZCBhcyBcInFyQ29kZVwiLCBfZSBhcyBcInFyTm90ZVwiLCBfZiBhcyBcInNhdmVCdG5cIiwgXzEwIGFzIFwic2VuZEJ0blwiLCBfMTEgYXMgXCJzdGF0dXNcIiwgXzEyIGFzIFwic3VidGl0bGVcIiwgXzEzIGFzIFwidGlja2V0RGV0YWlsQ29udGFpbmVyXCIsIF8xNCBhcyBcInRpdGxlXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImJ1dHRvbkNhbmNlbGxlZF9fX0VybERaXCI7XG52YXIgXzIgPSBcImJ1dHRvbkNvbXBsZXRlX19fbGxXa1pcIjtcbnZhciBfMyA9IFwiYnV0dG9uSW5jb21wbGV0ZV9fX1RvbEhnXCI7XG52YXIgXzQgPSBcImJ1dHRvblBpbGxfX196cTJ0Y1wiO1xudmFyIF81ID0gXCJidXR0b25SZWZ1bmRSZXF1ZXN0ZWRfX19wV3QzMFwiO1xudmFyIF82ID0gXCJidXR0b25VbmFzc2lnbmVkX19fWURkOFhcIjtcbnZhciBfNyA9IFwidGlja2V0U3RhdHVzQ29udGFpbmVyX19fcWo2ZmJcIjtcbmV4cG9ydCB7IF8xIGFzIFwiYnV0dG9uQ2FuY2VsbGVkXCIsIF8yIGFzIFwiYnV0dG9uQ29tcGxldGVcIiwgXzMgYXMgXCJidXR0b25JbmNvbXBsZXRlXCIsIF80IGFzIFwiYnV0dG9uUGlsbFwiLCBfNSBhcyBcImJ1dHRvblJlZnVuZFJlcXVlc3RlZFwiLCBfNiBhcyBcImJ1dHRvblVuYXNzaWduZWRcIiwgXzcgYXMgXCJ0aWNrZXRTdGF0dXNDb250YWluZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwibm9PcmRlcnNGb3VuZF9fX0FvZzJwXCI7XG52YXIgXzIgPSBcInN1bW1pdFRpdGxlRGF0ZV9fX1oxOVBtXCI7XG52YXIgXzMgPSBcIndpZGdldEhlYWRlcl9fX3lZNWdlXCI7XG5leHBvcnQgeyBfMSBhcyBcIm5vT3JkZXJzRm91bmRcIiwgXzIgYXMgXCJzdW1taXRUaXRsZURhdGVcIiwgXzMgYXMgXCJ3aWRnZXRIZWFkZXJcIiB9XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0V2l0aG91dFByb3BlcnRpZXNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NoZWNrQ2lyY2xlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2xvc2VcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9Db250ZW50Q29weVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0RlbGV0ZU91dGxpbmVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9FcnJvclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ZpbHRlckxpc3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9JbXBvcnRFeHBvcnRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9TZWFyY2hcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL0NoZWNrYm94XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvRGl2aWRlclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL0RyYXdlclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL0lucHV0QmFzZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL1N0YWNrXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvVGFiXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvVGFic1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL3VzZU1lZGlhUXVlcnlcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS94LWRhdGUtcGlja2Vycy9BZGFwdGVyRGF5anNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS94LWRhdGUtcGlja2Vycy9EYXRlUGlja2VyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkveC1kYXRlLXBpY2tlcnMvTG9jYWxpemF0aW9uUHJvdmlkZXJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQHJlZHV4anMvdG9vbGtpdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAc2VudHJ5L3JlYWN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImRheWpzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImZvcm1pa1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJpMThuZXh0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImkxOG5leHQtYnJvd3Nlci1sYW5ndWFnZWRldGVjdG9yXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImlkdG9rZW4tdmVyaWZpZXJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibW9tZW50LXRpbWV6b25lXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvY29tcG9uZW50cy9yYXctaHRtbFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L2FjdGlvbnNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9tZXRob2RzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvYWN0aW9uc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL3F1ZXJ5LWFjdGlvbnNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicC1saW1pdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJwcm9wLXR5cGVzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LWkxOG5leHRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QtaW5maW5pdGUtc2Nyb2xsLWNvbXBvbmVudFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC1xci1jb2RlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LXJlZHV4XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0L2pzeC1ydW50aW1lXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlZHV4XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlZHV4LXBlcnNpc3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVkdXgtcGVyc2lzdC9pbnRlZ3JhdGlvbi9yZWFjdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWR1eC1wZXJzaXN0L2xpYi9zdG9yYWdlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInl1cFwiKTsiLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiLy8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbl9fd2VicGFja19yZXF1aXJlX18ubiA9IChtb2R1bGUpID0+IHtcblx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG5cdFx0KCkgPT4gKG1vZHVsZVsnZGVmYXVsdCddKSA6XG5cdFx0KCkgPT4gKG1vZHVsZSk7XG5cdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsIHsgYTogZ2V0dGVyIH0pO1xuXHRyZXR1cm4gZ2V0dGVyO1xufTsiLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwiLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gKGV4cG9ydHMpID0+IHtcblx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG5cdH1cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbn07IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cbmltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IFByb3ZpZGVyIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyBQZXJzaXN0R2F0ZSB9IGZyb20gXCJyZWR1eC1wZXJzaXN0L2ludGVncmF0aW9uL3JlYWN0XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3gsIFN0eWxlZEVuZ2luZVByb3ZpZGVyIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZUluaXRTdG9yZSB9IGZyb20gXCIuL3N0b3JlXCI7XG5pbXBvcnQgTXlPcmRlcnNUaWNrZXRzIGZyb20gXCIuL2NvbXBvbmVudHMvTXlPcmRlcnNUaWNrZXRzXCI7XG5pbXBvcnQgeyBSRVNFVF9TVEFURSwgc2V0UmVkdWNlclN0YXRlIH0gZnJvbSBcIi4vYWN0aW9uc1wiO1xuXG5jb25zdCBNeU9yZGVyc015VGlja2V0c1dpZGdldCA9IChwcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgbG9naW5VcmwsXG4gICAgc3VwcG9ydEVtYWlsLFxuICAgIHN1bW1pdCxcbiAgICBhcGlCYXNlVXJsLFxuICAgIHVzZXIsXG4gICAgY2xpZW50SWQsXG4gICAgdXBkYXRlUHJvZmlsZVxuICB9ID0gcHJvcHM7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICBjb25zdCB7IHN0b3JlLCBwZXJzaXN0b3IgfSA9IHVzZUluaXRTdG9yZSh7XG4gICAgbG9naW5VcmwsXG4gICAgc3VwcG9ydEVtYWlsLFxuICAgIHN1bW1pdCxcbiAgICB1c2VyLFxuICAgIGFwaUJhc2VVcmwsXG4gICAgY2xpZW50SWQsXG4gICAgdXBkYXRlUHJvZmlsZVxuICB9KTtcblxuICBjb25zdCBoYW5kbGVCZWZvcmVMaWZ0ID0gKCkgPT4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7XG4gICAgY29uc3QgZmx1c2ggPSBwYXJhbXMuaGFzKFwiZmx1c2hTdGF0ZVwiKTtcbiAgICBpZiAoZmx1c2gpIHN0b3JlLmRpc3BhdGNoKHsgdHlwZTogUkVTRVRfU1RBVEUsIHBheWxvYWQ6IG51bGwgfSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzdG9yZS5kaXNwYXRjaChzZXRSZWR1Y2VyU3RhdGUoc3VtbWl0LCB1c2VyKSk7XG4gIH0sIFtzdW1taXQsIHVzZXJdKTtcblxuICByZXR1cm4gKFxuICAgIDxQcm92aWRlciBzdG9yZT17c3RvcmV9PlxuICAgICAgPFBlcnNpc3RHYXRlXG4gICAgICAgIG9uQmVmb3JlTGlmdD17aGFuZGxlQmVmb3JlTGlmdH1cbiAgICAgICAgbG9hZGluZz17bnVsbH1cbiAgICAgICAgcGVyc2lzdG9yPXtwZXJzaXN0b3J9XG4gICAgICA+XG4gICAgICAgIDxTdHlsZWRFbmdpbmVQcm92aWRlciBpbmplY3RGaXJzdD5cbiAgICAgICAgICA8Qm94IHN4PXt7IHBhZGRpbmc6IHsgeHM6IDIsIG1kOiAwLCBsZzogMCB9IH19PlxuICAgICAgICAgICAgPGgzPnt0KFwib3JkZXJzLnRpdGxlXCIpfTwvaDM+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgPE15T3JkZXJzVGlja2V0c1xuICAgICAgICAgICAgbG9naW5Vcmw9e2xvZ2luVXJsfVxuICAgICAgICAgICAgc3VwcG9ydEVtYWlsPXtzdXBwb3J0RW1haWx9XG4gICAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICAgIGFwaUJhc2VVcmw9e2FwaUJhc2VVcmx9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9TdHlsZWRFbmdpbmVQcm92aWRlcj5cbiAgICAgIDwvUGVyc2lzdEdhdGU+XG4gICAgPC9Qcm92aWRlcj5cbiAgKTtcbn07XG5cbk15T3JkZXJzTXlUaWNrZXRzV2lkZ2V0LnByb3BUeXBlcyA9IHtcbiAgbG9naW5Vcmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHN1cHBvcnRFbWFpbDogUHJvcFR5cGVzLnN0cmluZyxcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICBhcGlCYXNlVXJsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICB1c2VyOiBQcm9wVHlwZXMub2JqZWN0LFxuICBjbGllbnRJZDogUHJvcFR5cGVzLnN0cmluZyxcbiAgdXBkYXRlUHJvZmlsZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE15T3JkZXJzTXlUaWNrZXRzV2lkZ2V0O1xuIl0sIm5hbWVzIjpbImF1dGhFcnJvckhhbmRsZXIiLCJnZXRSZXF1ZXN0IiwiZGVsZXRlUmVxdWVzdCIsImNyZWF0ZUFjdGlvbiIsInN0b3BMb2FkaW5nIiwic3RhcnRMb2FkaW5nIiwicHV0UmVxdWVzdCIsInBMaW1pdCIsImdldElkVG9rZW4iLCJJZFRva2VuVmVyaWZpZXIiLCJnZXRBY2Nlc3NUb2tlblNhZmVseSIsIkZJUlNUX1BBR0UiLCJERUZBVUxUX0lURU1TX1BFUl9QQUdFIiwiT05FX1BBR0VfTkVYVCIsIlBST01JU0VfQkFUQ0hfTElNSVQiLCJGSUZUWV9QRVJfUEFHRSIsIlJFU0VUX1NUQVRFIiwiUkVTRVRfRklMVEVSIiwiU0VUX1NUQVRFIiwiR0VUX1VTRVJfT1JERVJTIiwiUkVGVU5EX09SREVSIiwiU0VUX0FDVElWRV9PUkRFUl9JRCIsIkZJTFRFUl9VU0VSX09SREVSUyIsIkdFVF9USUNLRVRTIiwiVVBEQVRFX1RJQ0tFVCIsIlJFQ0VJVkVfVElDS0VUIiwiUkVNT1ZFX1RJQ0tFVF9BVFRFTkRFRSIsIlJFRlVORF9USUNLRVQiLCJSRVNFTkRfTk9USUZJQ0FUSU9OIiwiR0VUX1RJQ0tFVFNfQllfT1JERVIiLCJHRVRfVElDS0VUU19CWV9PUkRFUl9FUlJPUiIsIkdFVF9PUkRFUl9USUNLRVRfREVUQUlMUyIsIkdFVF9USUNLRVRfREVUQUlMUyIsIlJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TIiwiVElDS0VUX0FUVEVOREVFX0tFWVMiLCJlbWFpbCIsImZpcnN0TmFtZSIsImxhc3ROYW1lIiwiY29tcGFueSIsImRpc2NsYWltZXJBY2NlcHRlZCIsImV4dHJhUXVlc3Rpb25zIiwiVVBEQVRFX1RJQ0tFVFNfUkVGVU5EX1JFUVVFU1RFRCIsIlNUQVJUX0xPQURJTkdfSURQX1BST0ZJTEUiLCJTVE9QX0xPQURJTkdfSURQX1BST0ZJTEUiLCJVUERBVEVfSURQX1BST0ZJTEUiLCJTRVRfVVNFUiIsIlNFVF9TVU1NSVQiLCJHRVRfTUFJTl9FWFRSQV9RVUVTVElPTlMiLCJSRUNFSVZFX01BUktFVElOR19TRVRUSU5HUyIsIkNMRUFSX01BUktFVElOR19TRVRUSU5HUyIsInJlc2V0U3RhdGUiLCJkaXNwYXRjaCIsInJlc2V0RmlsdGVyIiwic2V0UmVkdWNlclN0YXRlIiwic3VtbWl0IiwidXNlciIsIkZJTFRFUl9WQVJfREFURSIsIkZJTFRFUl9WQVJfT1JERVJfTlVNQkVSIiwicGFyc2VGaWx0ZXIiLCJmaWx0ZXJPYmoiLCJmaWx0ZXIiLCJ0eXBlIiwicHVzaCIsImNvbmNhdCIsIm5hbWUiLCJsb3dlciIsInVwcGVyIiwidmFsdWUiLCJnZXRTb3J0RGlyZWN0aW9uIiwiZGlyZWN0aW9uIiwiZ2V0VXNlck9yZGVycyIsIl9yZWYiLCJwYWdlIiwicGVyUGFnZSIsInNvcnQiLCJuZXh0IiwiZ2V0U3RhdGUiLCJfcmVmMiIsImFwaUJhc2VVcmwiLCJ3aWRnZXRTdGF0ZSIsImFjY2Vzc1Rva2VuIiwiY2F0Y2giLCJQcm9taXNlIiwicmVqZWN0IiwicGFyYW1zIiwiYWNjZXNzX3Rva2VuIiwib3JkZXIiLCJyZWxhdGlvbnMiLCJwZXJfcGFnZSIsIk9iamVjdCIsImtleXMiLCJsZW5ndGgiLCJmaWx0ZXJzIiwiaWQiLCJ0aGVuIiwicGF5bG9hZCIsImUiLCJzZXRBY3RpdmVPcmRlcklkIiwib3JkZXJJZCIsInNldFVzZXIiLCJnZXRVc2VyVGlja2V0cyIsIl9yZWYzIiwiX3JlZjQiLCJ1c2VyU3RhdGUiLCJ1c2VyUHJvZmlsZSIsImV4cGFuZCIsImZpZWxkcyIsImdldFRpY2tldHNCeU9yZGVyIiwiX3JlZjUiLCJfcmVmNiIsInJlc2VuZE5vdGlmaWNhdGlvbiIsInRpY2tldCIsIl9yZWY3IiwibWVzc2FnZSIsIm9yZGVyX2lkIiwicmVmdW5kVGlja2V0IiwiX3JlZjgiLCJfcmVmOSIsInJlZnVuZEJ1bGtUaWNrZXRzIiwiX3JlZjEwIiwidGlja2V0cyIsImxpbWl0IiwiYWxsUmVmdW5kVGlja2V0Q2FsbHMiLCJtYXAiLCJhbGwiLCJyZXMiLCJzdWNjZXNzZnVsbHlSZXF1ZXN0ZWQiLCJyIiwiX3IkcmVzcG9uc2UiLCJyZXNwb25zZSIsInJlZnVuZF9yZXF1ZXN0cyIsInVwZGF0ZVRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQiLCJ0aWNrZXRzUmVmdW5kUmVxdWVzdGVkIiwiZ2V0RXh0cmFRdWVzdGlvbnMiLCJhdHRlbmRlZUlkIiwiX3JlZjExIiwiZW5kcG9pbnQiLCJnZXRUaWNrZXQiLCJ0aWNrZXRJZCIsIl9yZWYxMiIsImZpbmFsbHkiLCJub3JtYWxpemVUaWNrZXQiLCJlbnRpdHkiLCJub3JtYWxpemVkRW50aXR5IiwiX29iamVjdFNwcmVhZCIsImF0dGVuZGVlX2NvbXBhbnkiLCJhdHRlbmRlZV9jb21wYW55X2lkIiwicmVmcmVzaFByb2ZpbGUiLCJkYXRhIiwidGlja2V0T3duZXIiLCJfcmVmMTMiLCJfdGlja2V0T3duZXIkbWFuYWdlciIsInVwZGF0ZVByb2ZpbGUiLCJhdHRlbmRlZV9lbWFpbCIsImF0dGVuZGVlX2ZpcnN0X25hbWUiLCJhdHRlbmRlZV9sYXN0X25hbWUiLCJoYXNNYW5hZ2VyIiwibWFuYWdlciIsIm1hbmFnZXJfaWQiLCJpdHNNZSIsInByb2ZpbGVDaGFuZ2VkIiwiZmlyc3RfbmFtZSIsImxhc3RfbmFtZSIsIm5ld1Byb2ZpbGUiLCJzYXZlVGlja2V0RGV0YWlscyIsImFuc3dlcnMiLCJfcmVmMTQiLCJpZFRva2VuIiwidmVyaWZpZXIiLCJqd3QiLCJkZWNvZGUiLCJjb25zb2xlIiwibG9nIiwib3duZXIiLCJSZWFjdCIsInVzZVN0YXRlIiwiUHJvcFR5cGVzIiwiU3RhY2siLCJ1c2VUcmFuc2xhdGlvbiIsImRheWpzIiwiQWRhcHRlckRheWpzIiwiTG9jYWxpemF0aW9uUHJvdmlkZXIiLCJEYXRlUGlja2VyIiwiQ2xvc2VJY29uIiwiZ2V0RXBvY2hMb3dlclVwcGVySW5TZWNvbmRzIiwic3R5bGVzIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkZyYWdtZW50IiwiX0ZyYWdtZW50IiwiQmFzaWNEYXRlUGlja2VyIiwib25GaWx0ZXIiLCJvblJlc2V0IiwidCIsIm5vdyIsImRhdGVWYWx1ZSIsInNldERhdGVWYWx1ZSIsIm9uRGF0ZUNoYW5nZSIsInZhbCIsImRhdGUiLCJEYXRlIiwiJGQiLCJvblJlc2V0QWN0aW9uIiwiY2hpbGRyZW4iLCJjbGFzc05hbWUiLCJmaWx0ZXJEYXRlTGFiZWwiLCJhbGlnbkl0ZW1zIiwic3giLCJwdCIsInBiIiwiZGF0ZVBpY2tlckNvbnRhaW5lciIsImZvbnRTaXplIiwiZGF0ZXBpY2tlckNsb3NlIiwib25DbGljayIsImRhdGVBZGFwdGVyIiwiY2FsZW5kYXJEaXNwbGF5Iiwib25DaGFuZ2UiLCJwcm9wVHlwZXMiLCJmdW5jIiwidXNlUmVmIiwidXNlRWZmZWN0IiwiRmlsdGVyTGlzdEljb24iLCJCb3giLCJGaWx0ZXIiLCJzaG93RmlsdGVyTGlzdCIsInNldFNob3dGaWx0ZXJMaXN0Iiwic2hvd0RhdGVwaWNrZXIiLCJzZXRTaG93RGF0ZXBpY2tlciIsImZpbHRlck51bUFjdGl2ZSIsInNldEZpbHRlck51bUFjdGl2ZSIsImZpbHRlclJlZiIsImhhbmRsZUZpbHRlckNsaWNrT3V0c2lkZSIsImV2ZW50IiwiY3VycmVudCIsImNvbnRhaW5zIiwidGFyZ2V0IiwiZG9jdW1lbnQiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInRvZ2dsZSIsImZpbHRlckNvbnRhaW5lciIsInJlZiIsImZpbHRlckljb24iLCJmaWx0ZXJMYWJlbCIsImZpbHRlckxpc3RDb250YWluZXIiLCJjb250YWluZXIiLCJzaG93RGF0ZVBpY2tlciIsInN0eWxlZCIsIlNlYXJjaEljb24iLCJJbnB1dEJhc2UiLCJTZWFyY2hDb250YWluZXIiLCJwb3NpdGlvbiIsIm1hcmdpblJpZ2h0IiwibWFyZ2luTGVmdCIsIndpZHRoIiwiZGlzcGxheSIsIlNlYXJjaEljb25XcmFwcGVyIiwiaGVpZ2h0IiwianVzdGlmeUNvbnRlbnQiLCJTdHlsZWRJbnB1dEJhc2UiLCJjb2xvciIsImJvcmRlckJvdHRvbSIsInBhZGRpbmdMZWZ0IiwicGFkZGluZ1JpZ2h0IiwiQ2xvc2VJY29uV3JhcHBlciIsInBhZGRpbmciLCJ0b3AiLCJyaWdodCIsImN1cnNvciIsInpJbmRleCIsIlNlYXJjaCIsIm9uU2VhcmNoIiwic2hvd0Nsb3NlIiwic2V0U2hvd0Nsb3NlIiwic2VhcmNoVmFsdWUiLCJzZXRTZWFyY2hWYWx1ZSIsIm9uS2V5RG93biIsImtleSIsIm5hdGl2ZUV2ZW50IiwicmVzZXRTZWFyY2giLCJwbGFjZWhvbGRlciIsImlucHV0UHJvcHMiLCJCdXR0b24iLCJJbXBvcnRFeHBvcnRJY29uIiwiU29ydCIsIm9uU29ydCIsInNob3dTb3J0Iiwic2V0U2hvd1NvcnQiLCJzb3J0UmVmIiwiaGFuZGxlU29ydENsaWNrT3V0c2lkZSIsInNvcnRDb250YWluZXIiLCJzb3J0SWNvbiIsInNvcnRMYWJlbCIsInNvcnRMaXN0Q29udGFpbmVyIiwibGFiZWwiLCJHcmlkIiwiRmlsdGVyU29ydFNlYXJjaCIsImp1c3RpZnkiLCJpdGVtIiwieHMiLCJnYXAiLCJmaWx0ZXJTb3J0Q29udGFpbmVyIiwiRXJyb3JJY29uIiwiRXJyb3JMYWJlbCIsImNsYXNzTmFtZXMiLCJkYXRhVGVzdElkIiwiZXJyb3JMYWJlbCIsInN0eWxlIiwiRHJhd2VyIiwiQ29udGFpbmVyIiwiTXVsdGlTdGVwU2xpZGVyIiwib3BlbiIsIm9uQ2xvc2VTbGlkZXIiLCJhbmNob3IiLCJvbkNsb3NlIiwiUGFwZXJQcm9wcyIsIm11bHRpc3RlcENvbnRhaW5lciIsIm11bHRpc3RlcENsb3NlSWNvbiIsIm5vZGUiLCJib29sIiwidXNlRGlzcGF0Y2giLCJ1c2VTZWxlY3RvciIsInNoYWxsb3dFcXVhbCIsIkluZmluaXRlU2Nyb2xsIiwiT3JkZXJzTGlzdCIsImdldFN1bW1pdEZvcm1hdHRlZERhdGUiLCJNeU9yZGVyc1RpY2tldHMiLCJtZW1iZXJPcmRlcnMiLCJvcmRlcnNfY3VycmVudF9wYWdlIiwib3JkZXJzX3Blcl9wYWdlIiwib3JkZXJzX3RvdGFsIiwic3RhdGUiLCJoYXNNb3JlIiwic2V0SGFzTW9yZSIsInNlYXJjaE5leHQiLCJzZXRTZWFyY2hOZXh0Iiwic2V0RmlsdGVyIiwic2V0U29ydCIsImZldGNoRGF0YSIsIl9yZXMkcmVzcG9uc2UiLCJ3aWRnZXRIZWFkZXIiLCJtZCIsImxnIiwic3VtbWl0VGl0bGVEYXRlIiwiZGF0YUxlbmd0aCIsInNjcm9sbFRocmVzaG9sZCIsIm51bWJlciIsIm5vT3JkZXJzRm91bmQiLCJEaXZpZGVyIiwiY2FsY3VsYXRlT3JkZXJUb3RhbHMiLCJmb3JtYXRDdXJyZW5jeSIsIk9yZGVyU3VtbWFyeVRhYmxlIiwiZGlzY291bnRUb3RhbCIsInJlZnVuZFRvdGFsIiwidGF4ZXNUb3RhbCIsImFtb3VudFRvdGFsIiwidGlja2V0U3VtbWFyeSIsImh1bmRyZWQiLCJvcmRlclN1bW1hcnlUYWJsZSIsInRpY2tldFRvdGFsIiwicXR5IiwidGlja2V0X3R5cGUiLCJjb3N0IiwiYWxpZ24iLCJjdXJyZW5jeSIsImNyZWF0ZWQiLCJkaXNjb3VudF9hbW91bnQiLCJ0YXhlc19hbW91bnQiLCJzdGF0dXMiLCJzaGFwZSIsInN0cmluZyIsIm9iamVjdCIsImFycmF5T2YiLCJ1c2VOb3ciLCJ0aWNrZXRzUmVmdW5kYWJsZSIsIlJlZnVuZEVtYWlsU3VwcG9ydCIsInJlZnVuZFJlcXVlc3RlZCIsInRpY2tldHNUb1JlZnVuZCIsInN1Ym1pdFJlcXVlc3QiLCJvblJlZnVuZENsaWNrIiwib25SZWZ1bmREZXRhaWxDbGljayIsIm9uRW1haWxTdXBwb3J0Q2xpY2siLCJpc0luUmVmdW5kYWJsZVBlcmlvZCIsInJlZ2lzdHJhdGlvbl9hbGxvd2VkX3JlZnVuZF9yZXF1ZXN0X3RpbGxfZGF0ZSIsImF0TGVhc3RPbmVSZWZ1bmRhYmxlVGlja2V0IiwiaXNSZWZ1bmRhYmxlIiwicm9sZSIsIm9yZGVyU3VtbWFyeUJ1dHRvbiIsInJlZnVuZERpc2FibGVkIiwidmFyaWFudCIsInNpemUiLCJkaXNhYmxlZCIsIk9yZGVyU3VtbWFyeSIsIm9yZGVyU3VtbWFyeVdyYXBwZXIiLCJweCIsIm9yZGVyU3VtbWFyeVB1cmNoYXNlZEluZm8iLCJBdHRlbmRlZVN0YXR1cyIsIl90aWNrZXQkb3duZXIiLCJfdGlja2V0JG93bmVyMiIsInRpY2tldE93bmVyRW1haWwiLCJpc19hY3RpdmUiLCJPcmRlckxpc3RUaWNrZXRzIiwiUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UIiwiT3JkZXJMaXN0SXRlbSIsInRvdGFsIiwib25QYWdpbmF0ZUNsaWNrIiwic2VsZWN0VG9SZWZ1bmQiLCJpdGVtc1RvRGlzcGxheSIsInNldEl0ZW1zVG9EaXNwbGF5Iiwic2xpY2VkVGlja2V0cyIsInNsaWNlIiwib25WaWV3TW9yZSIsIm9uVmlld0xlc3MiLCJpc1NlbGVjdGVkVG9SZWZ1bmQiLCJmaW5kIiwidmlld01vcmVCdXR0b24iLCJDaGVja2JveCIsIlRpY2tldFN0YXR1cyIsIk9yZGVyTnVtYmVyIiwiZ2V0U3VtbWl0UmVhc3NpZ25EYXRlIiwiVGlja2V0RGV0YWlsIiwidXNlVGlja2V0RGV0YWlscyIsIlRpY2tldENUQXMiLCJpc0luY29tcGxldGUiLCJpc1VuYXNzaWduZWQiLCJpc1JlYXNzaWduYWJsZSIsIm9uT3BlbkNsaWNrIiwiYXNzaWduVGlja2V0QnV0dG9uIiwidmlld0ZpbmlzaFRpY2tldEJ1dHRvbiIsInJlYXNzaWduQnV0dG9uIiwiX3RpY2tldCR0aWNrZXRfdHlwZSIsIl9vcGVuVGlja2V0JG93bmVyIiwib3BlblRpY2tldCIsInNldE9wZW5UaWNrZXQiLCJyZWFzc2lnbkRhdGUiLCJvcmRlcldyYXBwZXIiLCJ0aWNrZXRUaWNrZXRUeXBlIiwiY2hlY2tlZCIsInRpY2tldE5vIiwiY29weSIsInRydW5jYXRlZCIsInRpY2tldEFjdGlvbkJ1dHRvbnMiLCJvd25lcklkIiwidG90YWxfcmVmdW5kZWRfYW1vdW50IiwiQ29udGVudENvcHlJY29uIiwiZGVmYXVsdFdpZHRoIiwicmV2ZXJzZWQiLCJvcmRlclRpY2tldE51bWJlclRydW5jYXRlZCIsIm9yZGVyVGlja2V0Tm9Db250YWluZXIiLCJjb3B5SWNvbiIsIm5hdmlnYXRvciIsImNsaXBib2FyZCIsIndyaXRlVGV4dCIsIlRhYnMiLCJUYWIiLCJSZWZ1bmRSZXF1ZXN0c01vZGFsIiwiaXNUaWNrZXRSZWZ1bmRhYmxlIiwiVGFiUGFuZWwiLCJwcm9wcyIsImluZGV4IiwiaGlkZGVuIiwiT3JkZXJzTGlzdERlc2t0b3BNb2JpbGUiLCJpc01vYmlsZSIsImRldGFpbHNSZXF1aXJlZCIsInNldFZhbHVlIiwiaGFuZGxlQ2hhbmdlIiwiXyIsIm5ld1ZhbHVlIiwic2V0UmVmdW5kUmVxdWVzdGVkIiwic2V0VGlja2V0c1RvUmVmdW5kIiwic2V0U3VibWl0UmVxdWVzdCIsInVuc2VsZWN0UmVmdW5kVGlja2V0cyIsImZpbHRlclNlbGVjdGVkIiwic2VsZWN0ZWRUaWNrZXQiLCJjYW5jZWxUaWNrZXRzVG9SZWZ1bmQiLCJzZWxlY3RBbGxUaWNrZXRzIiwicmVmdW5kYWJsZVRpY2tldHMiLCJyZXNldEFsbFJlZnVuZFN0YXR1c2VzIiwibW9yZURldGFpbHMiLCJ0aWNrZXRMaXN0Q29udGFpbmVyIiwiYm9yZGVyQ29sb3IiLCJ0ZXh0Q29sb3IiLCJUYWJJbmRpY2F0b3JQcm9wcyIsImJhY2tncm91bmQiLCJ0YWJCdXR0b25zIiwicmVmdW5kQnV0dG9ucyIsIm9uUmVtb3ZlU2VsZWN0ZWRSZWZ1bmRUaWNrZXRzIiwib25SZWZ1bmRTdWNjZXNzQ2xvc2UiLCJ1c2VUaGVtZSIsInVzZU1lZGlhUXVlcnkiLCJnZXRPcmRlclRpY2tldHMiLCJnZXRGb3JtYXR0ZWREYXRlIiwiX29yZGVyJG1lbWJlclRpY2tldHMiLCJsYXN0X3BhZ2UiLCJ0aGVtZSIsImJyZWFrcG9pbnRzIiwiZG93biIsImlzTW9iaWxlVmlld2FibGUiLCJzZXRNb2JpbGVWaWV3YWJsZSIsIm1lbWJlclRpY2tldHMiLCJmZXRjaFRpY2tldHNCeU9yZGVyIiwiY3VycmVudF9wYWdlIiwidGlja2V0c19wYWdlX2N1cnJlbnQiLCJvcmRlclRpY2tldEluZm9Db250YWluZXIiLCJvcmRlclRpY2tldEluZm8iLCJibGFja0J1dHRvbiIsInJvd1NwYWNpbmciLCJjb2x1bW5TcGFjaW5nIiwic20iLCJvcmRlclRpY2tldENvbnRhaW5lciIsImRpc3BsYXlfbm9uZSIsImZsZXhEaXJlY3Rpb24iLCJ0aWNrZXRzX3RvdGFsIiwiRGVsZXRlT3V0bGluZUljb24iLCJSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQiLCJvblJlbW92ZSIsInJlZnVuZFRpY2tldEJveENvbnRhaW5lciIsImRlbGV0ZUljb24iLCJTdHlsZWRFbmdpbmVQcm92aWRlciIsIkNoZWNrQ2lyY2xlSWNvbiIsIlNURVBfT05FIiwiU1RFUF9UV08iLCJzdGVwIiwic2V0U3RlcCIsImVycm9yTXNnIiwic2V0RXJyb3JNc2ciLCJyZWZ1bmRTdWNjZXNzIiwic2V0UmVmdW5kU3VjY2VzcyIsImNsb3NlU2xpZGVyIiwicmVmdW5kVGlja2V0cyIsInJlZnVuZFN0ZXBPbmUiLCJyZWZ1bmRUZXh0IiwicmVmdW5kRXJyb3JNc2ciLCJhY3Rpb25CdXR0b25zIiwiY2FuY2VsQnV0dG9uIiwiY29udGludWVCdXR0b24iLCJyZWZ1bmRTdGVwVHdvIiwicmVmdW5kU3VjY2Vzc2Z1bCIsInN1Y2Nlc3NNc2ciLCJzdWNjZXNzTXNnMiIsInJlbmRlclN0ZXBzIiwiaW5qZWN0Rmlyc3QiLCJyZWZ1bmRIZWFkZXJzIiwiYXJyYXkiLCJUZXh0RmllbGQiLCJBdXRvY29tcGxldGUiLCJUeXBvZ3JhcGh5IiwicXVlcnlSZWdpc3RyYXRpb25Db21wYW5pZXMiLCJDb21wYW55RmllbGQiLCJmb3JtaWsiLCJzdW1taXRJZCIsImlzUmVxdWlyZWQiLCJpbnB1dFZhbHVlIiwic2V0SW5wdXRWYWx1ZSIsIm9wdGlvbnMiLCJzZXRPcHRpb25zIiwiZXJyb3JzIiwidmFsdWVzIiwidG91Y2hlZCIsInNldEZpZWxkVG91Y2hlZCIsInNldEZpZWxkVmFsdWUiLCJlcnJvciIsIkJvb2xlYW4iLCJoZWxwZXJUZXh0IiwidW5kZWZpbmVkIiwicmVzdWx0cyIsIm5ld09wdGlvbnMiLCJhdXRvQ29tcGxldGUiLCJmcmVlU29sbyIsImluY2x1ZGVJbnB1dEluTGlzdCIsImZpbHRlclNlbGVjdGVkT3B0aW9ucyIsIm9uQmx1ciIsImdldE9wdGlvbkxhYmVsIiwib3B0aW9uIiwidG1wVmFsdWUiLCJvbklucHV0Q2hhbmdlIiwibmV3SW5wdXRWYWx1ZSIsImZpbHRlck9wdGlvbnMiLCJmaWx0ZXJlZCIsImlzRXhpc3RpbmciLCJzb21lIiwidGl0bGUiLCJyZW5kZXJJbnB1dCIsImZ1bGxXaWR0aCIsInJlcXVpcmVkIiwicmVuZGVyT3B0aW9uIiwib3B0aW9uUHJvcHMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfZXhjbHVkZWQiLCJGb3JtQ29udHJvbCIsIkZvcm1Db250cm9sTGFiZWwiLCJGb3JtR3JvdXAiLCJGb3JtSGVscGVyVGV4dCIsIkZvcm1MYWJlbCIsImdldExhYmVsIiwidG9TbHVnIiwiQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZCIsIl9xdWVzdGlvbiR2YWx1ZXMiLCJxdWVzdGlvbiIsInF1ZXN0aW9uQ2xhc3NOYW1lIiwiaXNEaXNhYmxlZCIsInJlc3QiLCJxdWVzdGlvblNsdWciLCJxdWVzdGlvbkxhYmVsIiwibWFuZGF0b3J5IiwicXVlc3Rpb25NYXhWYWx1ZXMiLCJtYXhfc2VsZWN0ZWRfdmFsdWVzIiwicXVlc3Rpb25PcHRpb25zIiwidG9TdHJpbmciLCJoYW5kbGVDaGVja2JveExpc3RDaGFuZ2UiLCJjdXJyZW50QW5zIiwibWF4U2VsZWN0aW9uUmVhY2hlZCIsInYiLCJvcCIsImNvbnRyb2wiLCJpbmNsdWRlcyIsImV2IiwiUmF3SFRNTCIsIkNoZWNrYm94UXVlc3Rpb25GaWVsZCIsIklucHV0TGFiZWwiLCJNZW51SXRlbSIsIlNlbGVjdCIsIkRyb3Bkb3duUXVlc3Rpb25GaWVsZCIsImxhYmVsSWQiLCJtYXJnaW5Cb3R0b20iLCJSYWRpbyIsIlJhZGlvR3JvdXAiLCJSYWRpb0xpc3RRdWVzdGlvbkZpZWxkIiwiVGV4dFF1ZXN0aW9uRmllbGQiLCJRdWVzdGlvblR5cGVfQ2hlY2tib3giLCJRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0IiwiUXVlc3Rpb25UeXBlX0NvbWJvQm94IiwiUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCIsIlF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3QiLCJjaGVja1J1bGUiLCJydWxlIiwiYW5zd2VyX3ZhbHVlcyIsIkFycmF5IiwiaXNBcnJheSIsImFuc3dlcl92YWx1ZXNfb3BlcmF0b3IiLCJmb3JFYWNoIiwiY2hlY2tWaXNpYmlsaXR5IiwicnVsZVJlc3VsdCIsInZpc2liaWxpdHkiLCJ2aXNpYmlsaXR5X2NvbmRpdGlvbiIsInRleHQiLCJxdWVzdGlvbklkIiwidGV4dExDIiwidG9Mb3dlckNhc2UiLCJyZXBsYWNlIiwicSIsIl9xJGxhYmVsIiwiaXNBbnN3ZXJlZCIsImFuc3dlciIsImNoZWNrSWZWYWx1ZU1hdGNoIiwiY29tcGFyZVZhbCIsImFuc3dlckFycmF5IiwiZ2V0VHlwZUluaXRpYWxWYWx1ZSIsImdldFR5cGVWYWx1ZSIsImFucyIsInNwbGl0IiwidHJhbnNmb3JtQW53ZXJzRm9ybWF0IiwiZGlzY2xhaW1lcl9hY2NlcHRlZCIsImV4dHJhX3F1ZXN0aW9ucyIsImZvcm1hdHRlZEVRIiwiZW50cmllcyIsInF1ZXN0aW9uX2lkIiwicGFyc2VJbnQiLCJwb3AiLCJRdWVzdGlvblR5cGVfVGV4dCIsIlF1ZXN0aW9uVHlwZV9UZXh0QXJlYSIsIlF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbiIsImdldFF1ZXN0aW9uRmllbGRDb21wb25lbnQiLCJxdWVzdGlvblR5cGUiLCJFeHRyYVF1ZXN0aW9uc0ZpZWxkcyIsInJlYWRPbmx5IiwiYWxsb3dFZGl0IiwicmVuZGVyUnVsZSIsInJlbmRlclF1ZXN0aW9uIiwic3ViX3F1ZXN0aW9uIiwiX3Ekc3ViX3F1ZXN0aW9uX3J1bGVzIiwiUXVlc3Rpb25GaWVsZENvbXBvbmVudCIsImZvcm1pa1Byb3BzIiwiaGFuZGxlQmx1ciIsInN1Yl9xdWVzdGlvbl9ydWxlcyIsIlJlZ2lzdHJhdGlvbkRpc2NsYWltZXIiLCJkaXNjbGFpbWVyIiwid3JhcHBlciIsIlRpY2tldERlbGVnYXRpb25GaWVsZHMiLCJkZWxlZ2F0ZWRfZmlyc3RfbmFtZSIsImRlbGVnYXRlZF9sYXN0X25hbWUiLCJ1c2VGb3JtaWsiLCJ5dXAiLCJUaWNrZXRPd25lckZpZWxkcyIsImdldFR5cGVWYWxpZGF0aW9uIiwic2NoZW1hIiwib25lT2YiLCJvZiIsImJ1aWxkVmFsaWRhdGlvblNjaGVtYSIsImFsbG93c0RlbGVnYXRpb24iLCJkaXNjbGFpbWVyTWFuZGF0b3J5IiwibGF6eSIsInR5cGVFcnJvciIsInN1YlF1ZXN0aW9uIiwic3ViUXVlc3Rpb25TbHVnIiwibnVsbGFibGUiLCJ3aGVuIiwiaXMiLCJxdWVzdGlvbkFucyIsIm1hdGNoIiwic2NoIiwicGFyc2VBbnN3ZXJzIiwib25seVJlbGV2YW50IiwiYXJndW1lbnRzIiwiaW5pdGlhbFZhbHVlcyIsIl9xJHN1Yl9xdWVzdGlvbl9ydWxlczIiLCJzdWJBbnN3ZXIiLCJ1c2VTY3JvbGxUb0Vycm9yIiwiaXNWYWxpZCIsInN1Ym1pdENvdW50IiwiZXJyb3JBcnJheSIsImVsZW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwic2Nyb2xsSW50b1ZpZXciLCJiZWhhdmlvciIsImJsb2NrIiwiVGlja2V0Rm9ybSIsImNhbkVkaXQiLCJvblN1Ym1pdCIsInRpY2tldE1hbmFnZXIiLCJhbGxvd3NfdG9fZGVsZWdhdGUiLCJyZWR1Y2UiLCJ2YWxpZGF0aW9uU2NoZW1hIiwicmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfbWFuZGF0b3J5IiwicmVsZXZhbnRBbnN3ZXJzIiwiZW5hYmxlUmVpbml0aWFsaXplIiwiaGFuZGxlU3VibWl0Iiwibm9WYWxpZGF0ZSIsImd1dHRlckJvdHRvbSIsImRlbGVnYXRlZFRvIiwiYWRkaXRpb25hbERldGFpbHMiLCJyZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9jb250ZW50IiwiZm9vdGVyIiwic2F2ZUJ0biIsImlzU3VibWl0dGluZyIsImNhbmNlbEJ0biIsImluZm9Ob3RlIiwiUVJDb2RlIiwiSWNvbkJ1dHRvbiIsIkRpYWxvZyIsIkRpYWxvZ1RpdGxlIiwiRGlhbG9nQ29udGVudCIsIkRpYWxvZ0NvbnRlbnRUZXh0IiwiQ2xvc2UiLCJGaWxlRG93bmxvYWRPdXRsaW5lZCIsIkRvd25sb2FkSWNvbiIsIkVtYWlsT3V0bGluZWQiLCJFbWFpbEljb24iLCJNSUxMSVNFQ19UT19TRUMiLCJfdGlja2V0JG9yZGVyIiwiX3RpY2tldCRvcmRlcjIiLCJjdXJyZW50VGlja2V0Iiwic2F2ZU1lc3NhZ2UiLCJzZXRTYXZlTWVzc2FnZSIsImlzT3BlbiIsImlzVXNlck9yZGVyT3duZXIiLCJvd25lcl9pZCIsImlzVXNlclRpY2tldE93bmVyIiwiY2FuRWRpdFRpY2tldERhdGEiLCJhbGxvd191cGRhdGVfYXR0ZW5kZWVfZXh0cmFfcXVlc3Rpb25zIiwiaXNDb21wbGV0ZSIsIm9uU2F2ZSIsImRlc2NyaXB0aW9uIiwicmVzb2x2ZSIsImVyciIsIm9uQ2xvc2VTYXZlTWVzc2FnZSIsInNldFRpbWVvdXQiLCJNb2RhbFByb3BzIiwia2VlcE1vdW50ZWQiLCJ0aWNrZXREZXRhaWxDb250YWluZXIiLCJoZWFkZXIiLCJjbG9zZUJ0biIsImZsb2F0Iiwic3VidGl0bGUiLCJxckNvZGUiLCJtYXhXaWR0aCIsInFyX2NvZGUiLCJ2aWV3Qm94IiwicXJOb3RlIiwiaXNfdmlydHVhbCIsImFjdGlvbkJ1dHRvbnNDb250YWluZXIiLCJkb3dubG9hZEJ0biIsInNlbmRCdG4iLCJvcmRlck51bWJlciIsImF0dGVuZGVlQ29udGFpbmVyIiwiYXR0ZW5kZWVJbmZvVGl0bGUiLCJfdGlja2V0JHJlZnVuZF9yZXF1ZXMiLCJpc0FjdGl2ZSIsInJlZnVuZFJlcXVlc3RzIiwidGlja2V0U3RhdHVzQ29udGFpbmVyIiwiYnV0dG9uUGlsbCIsImJ1dHRvblJlZnVuZFJlcXVlc3RlZCIsImJ1dHRvbkluY29tcGxldGUiLCJidXR0b25VbmFzc2lnbmVkIiwiYnV0dG9uQ29tcGxldGUiLCJidXR0b25DYW5jZWxsZWQiLCJTVEFUVVNfQ09NUExFVEUiLCJTVEFUVVNfSU5DT01QTEVURSIsIlNUQVRVU19DQU5DRUxMRUQiLCJTVEFUVVNfVU5BU1NJR05FRCIsIl90aWNrZXQkcHJvbW9fY29kZSIsIl90aWNrZXQkb3duZXIzIiwiX3RpY2tldCRvd25lcjQiLCJnZXRTdGF0dXMiLCJhbGxvd3NEZWxlZ2F0ZSIsInByb21vX2NvZGUiLCJpMThuIiwiaW5pdFJlYWN0STE4bmV4dCIsIkxhbmd1YWdlRGV0ZWN0b3IiLCJlbiIsImVzIiwidXNlIiwiaW5pdCIsImZhbGxiYWNrTG5nIiwiZGVidWciLCJyZXNvdXJjZXMiLCJ0cmFuc2xhdGlvbiIsImludGVycG9sYXRpb24iLCJlc2NhcGVWYWx1ZSIsIkxPR09VVF9VU0VSIiwiREVGQVVMVF9TVEFURSIsIndpZGdldExvYWRpbmciLCJsb2FkaW5nIiwiaXNPcmRlckxvYWRpbmciLCJvcmRlcnNfbGFzdF9wYWdlIiwidGlja2V0X2N1cnJlbnRfcGFnZSIsInRpY2tldF9sYXN0X3BhZ2UiLCJ0aWNrZXRfcGVyX3BhZ2UiLCJ0aWNrZXRfdG90YWwiLCJXaWRnZXRSZWR1Y2VyIiwiZm9ybWVyT3JkZXIiLCJvIiwiX2RhdGEkIiwidXBkYXRlZE9yZGVyIiwidGlja2V0c19wYWdlX2xhc3QiLCJtbyIsIl90aWNrZXRzUmVmdW5kUmVxdWVzdCIsInVwZGF0ZWRUaWNrZXRzIiwidHJyIiwidGlja2V0RGF0YSIsIm5ld09yZGVycyIsIm5ld1RpY2tldHMiLCJ1c2VNZW1vIiwiY29uZmlndXJlU3RvcmUiLCJwZXJzaXN0U3RvcmUiLCJwZXJzaXN0UmVkdWNlciIsIkZMVVNIIiwiUkVIWURSQVRFIiwiUEFVU0UiLCJQRVJTSVNUIiwiUFVSR0UiLCJSRUdJU1RFUiIsInN0b3JhZ2UiLCJjb21iaW5lUmVkdWNlcnMiLCJnZXRTdG9yZSIsImNsaWVudElkIiwibG9naW5VcmwiLCJyZWR1Y2VycyIsInN0b3JlIiwicmVkdWNlciIsIm1pZGRsZXdhcmUiLCJnZXREZWZhdWx0TWlkZGxld2FyZSIsInRodW5rIiwiZXh0cmFBcmd1bWVudCIsImltbXV0YWJsZUNoZWNrIiwic2VyaWFsaXphYmxlQ2hlY2siLCJpZ25vcmVkQWN0aW9ucyIsInVzZUluaXRTdG9yZSIsImNvbmZpZyIsInBlcnNpc3RvciIsImluaXRMb2dPdXQiLCJnZXRBY2Nlc3NUb2tlbiIsIlNlbnRyeSIsImNhcHR1cmVFeGNlcHRpb24iLCJMQVNUX0hPVVJfT0ZfMjRfSE9VUiIsIkxBU1RfTUlOVVRFX09GX0hPVVIiLCJPTkVfREFZIiwiU1RBVFVTX1BFTkRJTkciLCJTVEFUVVNfRVJST1IiLCJTVEFUVVNfUFJPQ0VTU0lORyIsIkpFU1RfVElNRU9VVF9JTl9NSUxMSVNFQyIsIk9ORV9JVEVNIiwiVFdPX0lURU0iLCJGSVZFX0lURU0iLCJTSVhfSVRFTSIsIm1vbWVudCIsImxvY2FsZSIsImRlZmF1bHRPcHRpb25zIiwibWluaW11bUZyYWN0aW9uRGlnaXRzIiwibWF4aW11bUZyYWN0aW9uRGlnaXRzIiwiZm9ybWF0dGVyIiwiSW50bCIsIk51bWJlckZvcm1hdCIsImZvcm1hdCIsImRhdGV0aW1lIiwidGltZVpvbmUiLCJ0eiIsInVuaXgiLCJyZWZ1bmRlZF9hbW91bnQiLCJhbW91bnQiLCJ0aWNrZXRfdHlwZXMiLCJwdXJjaGFzZVRpY2tldFRvdGFsIiwiY3VycmVuY3lPYmplY3QiLCJ0aWNrZXRzX2V4Y2VycHRfYnlfdGlja2V0X3R5cGUiLCJ0aWNrZXRUeXBlIiwidHQiLCJ0aWNrZXRfdHlwZV9pZCIsInB1cmNoYXNlVG90YWwiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJfb3JkZXJzJCIsIm9yZGVycyIsInRzIiwic2V0SG91cnMiLCJkZWZhdWx0Q3VycmVudFRpbWUiLCJNYXRoIiwicm91bmQiLCJnZXROb3ciLCJ0aW1lclN0YXRlIiwibm93VXRjIiwiY2hlY2tTdW1taXRQYXN0IiwicmVhc3NpZ25fZGF0ZSIsInJlYXNzaWduX3RpY2tldF90aWxsX2RhdGUiLCJlbmRfZGF0ZSIsImNoZWNrU3VtbWl0U3RhcnRlZCIsInN0YXJ0X2RhdGUiLCJnZXRTdW1taXREYXlzRGlmZiIsInN0YXJ0RGF5IiwidGltZV96b25lX2lkIiwiZW5kRGF5IiwiZGF5cyIsImRpZmYiLCJmb3JtYXRTdGFydERhdGUiLCJmb3JtYXRFbmREYXRlIiwieWVhciIsIm1vbnRoIiwic3RhcnREYXRlIiwiZW5kRGF0ZSIsImdldFN1bW1pdExvY2F0aW9uIiwiX3N1bW1pdCRsb2NhdGlvbnMiLCJsb2NhdGlvbiIsImxvY2F0aW9ucyIsImwiLCJjbGFzc19uYW1lIiwiaXNfbWFpbiIsImNpdHkiLCJjb3VudHJ5IiwidXNlU3VtbWl0RGV0YWlscyIsIl9zdW1taXQkdGltZV96b25lIiwiX3N1bW1pdCR0aW1lX3pvbmUyIiwiZm9ybWF0dGVkRGF0ZSIsImZvcm1hdHRlZFJlYXNzaWduRGF0ZSIsInRpbWVfem9uZSIsImRheXNVbnRpbFJlYXNzaWduRGVhZGxpbmUiLCJpc1Bhc3QiLCJpc1N0YXJ0ZWQiLCJzdGF0dXNEYXRhIiwiZ2V0VGlja2V0U3RhdHVzS2V5IiwiZ2V0VGlja2V0U3RhdHVzRGF0YSIsImlzU3VtbWl0UGFzdCIsImdldFRpY2tldFJvbGUiLCJiYWRnZSIsImZlYXR1cmVzIiwiZmVhdHVyZSIsImpvaW4iLCJnZXRUaWNrZXRUeXBlIiwiZmluYWxfYW1vdW50IiwicnIiLCJQcm92aWRlciIsIlBlcnNpc3RHYXRlIiwiTXlPcmRlcnNNeVRpY2tldHNXaWRnZXQiLCJzdXBwb3J0RW1haWwiLCJoYW5kbGVCZWZvcmVMaWZ0IiwiVVJMU2VhcmNoUGFyYW1zIiwid2luZG93Iiwic2VhcmNoIiwiZmx1c2giLCJoYXMiLCJvbkJlZm9yZUxpZnQiXSwic291cmNlUm9vdCI6IiJ9
|