my-orders-tickets-widget 1.0.5 → 1.0.7-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.css +33 -25
- package/dist/index.js +238 -217
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -377,15 +377,15 @@ const getUserTickets = (_ref4, skipLoading) => {
|
|
|
377
377
|
if (!summit) return Promise.reject();
|
|
378
378
|
const accessToken = await (0,_utils_auth__WEBPACK_IMPORTED_MODULE_7__.getAccessTokenSafely)();
|
|
379
379
|
if (!accessToken) return (0,_utils_auth__WEBPACK_IMPORTED_MODULE_7__.authPromiseReject)();
|
|
380
|
-
const fields = ["order.id", "order.owner_first_name", "order.owner_last_name", "order.owner_email", "owner.id", "owner.email", "owner.first_name", "owner.last_name", "owner.status", "badge.none"];
|
|
380
|
+
const fields = ["order.id", "order.owner_first_name", "order.owner_last_name", "order.owner_email", "owner.id", "owner.email", "owner.first_name", "owner.last_name", "owner.status", "badge.none", "promo_code.id", "promo_code.code", "promo_code.allows_to_delegate", "promo_code.allows_to_reassign", "ticket_type.id", "ticket_type.name", "ticket_type.allows_to_delegate", "ticket_type.allows_to_reassign"];
|
|
381
381
|
dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.startLoading)());
|
|
382
382
|
const params = {
|
|
383
383
|
access_token: accessToken,
|
|
384
384
|
"filter[]": ["status==Paid", "order_owner_id<>".concat(userProfile.id)],
|
|
385
|
-
expand: "order,owner,ticket_type,badge,badge.features",
|
|
385
|
+
expand: "order,owner,ticket_type,badge,badge.features,promo_code",
|
|
386
386
|
order: "-id",
|
|
387
387
|
fields: fields.join(","),
|
|
388
|
-
relations: "none,badge.features",
|
|
388
|
+
relations: "none,badge.features,promo_code.none,ticket_type.none",
|
|
389
389
|
page,
|
|
390
390
|
per_page: perPage
|
|
391
391
|
};
|
|
@@ -419,10 +419,10 @@ const getTicketsByOrder = _ref6 => {
|
|
|
419
419
|
const params = {
|
|
420
420
|
access_token: accessToken,
|
|
421
421
|
"filter[]": [],
|
|
422
|
-
fields: "badge.none",
|
|
423
|
-
expand: "refund_requests,refund_requests.refunded_taxes,refund_requests.refunded_taxes.tax,owner,owner.extra_questions,badge,badge.features,ticket_type",
|
|
422
|
+
fields: "badge.none,promo_code.id,promo_code.code,promo_code.allows_to_delegate,promo_code.allows_to_reassign,ticket_type.id,ticket_type.name,ticket_type.allows_to_delegate,ticket_type.allows_to_reassign",
|
|
423
|
+
expand: "refund_requests,refund_requests.refunded_taxes,refund_requests.refunded_taxes.tax,owner,owner.extra_questions,badge,badge.features,ticket_type,promo_code",
|
|
424
424
|
order: "+id",
|
|
425
|
-
relations: "none,badge.features",
|
|
425
|
+
relations: "none,badge.features,promo_code.none,ticket_type.none",
|
|
426
426
|
page,
|
|
427
427
|
per_page: perPage
|
|
428
428
|
};
|
|
@@ -761,6 +761,79 @@ const getTicketPDF = ticket => async (dispatch, getState, _ref20) => {
|
|
|
761
761
|
|
|
762
762
|
/***/ }),
|
|
763
763
|
|
|
764
|
+
/***/ "./src/components/BadgeFeatureIcon/index.js":
|
|
765
|
+
/*!**************************************************!*\
|
|
766
|
+
!*** ./src/components/BadgeFeatureIcon/index.js ***!
|
|
767
|
+
\**************************************************/
|
|
768
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
769
|
+
|
|
770
|
+
__webpack_require__.r(__webpack_exports__);
|
|
771
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
772
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
773
|
+
/* harmony export */ });
|
|
774
|
+
/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "@babel/runtime/helpers/defineProperty");
|
|
775
|
+
/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);
|
|
776
|
+
/* harmony import */ var _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "@babel/runtime/helpers/objectWithoutProperties");
|
|
777
|
+
/* harmony import */ var _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__);
|
|
778
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ "react");
|
|
779
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);
|
|
780
|
+
/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! prop-types */ "prop-types");
|
|
781
|
+
/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_3__);
|
|
782
|
+
/* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./styles.module.scss */ "./src/components/BadgeFeatureIcon/styles.module.scss");
|
|
783
|
+
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
|
|
784
|
+
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__);
|
|
785
|
+
|
|
786
|
+
|
|
787
|
+
const _excluded = ["name", "image", "className"];
|
|
788
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
789
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
790
|
+
|
|
791
|
+
|
|
792
|
+
|
|
793
|
+
|
|
794
|
+
const MAX_INITIALS = 2;
|
|
795
|
+
const BadgeFeatureIcon = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_2__.forwardRef)((_ref, ref) => {
|
|
796
|
+
let {
|
|
797
|
+
name,
|
|
798
|
+
image,
|
|
799
|
+
className
|
|
800
|
+
} = _ref,
|
|
801
|
+
props = _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1___default()(_ref, _excluded);
|
|
802
|
+
const [imageLoaded, setImageLoaded] = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)(false);
|
|
803
|
+
const [imageError, setImageError] = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)(false);
|
|
804
|
+
const showFallback = !image || imageError;
|
|
805
|
+
|
|
806
|
+
// Extract up to 2 initials from badge feature name (e.g., "Board Member" -> "BM")
|
|
807
|
+
const initials = name.split(" ").filter(word => word.length > 0).map(word => word[0]).join("").substring(0, MAX_INITIALS).toUpperCase();
|
|
808
|
+
return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)("div", _objectSpread(_objectSpread({
|
|
809
|
+
ref: ref,
|
|
810
|
+
className: "".concat(_styles_module_scss__WEBPACK_IMPORTED_MODULE_4__.badgeFeatureIcon).concat(className ? " ".concat(className) : '')
|
|
811
|
+
// eslint-disable-next-line react/jsx-props-no-spreading
|
|
812
|
+
}, props), {}, {
|
|
813
|
+
children: [image && !imageError && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)("img", {
|
|
814
|
+
className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_4__.badgeFeatureImage,
|
|
815
|
+
src: image,
|
|
816
|
+
alt: name,
|
|
817
|
+
onLoad: () => setImageLoaded(true),
|
|
818
|
+
onError: () => setImageError(true),
|
|
819
|
+
style: {
|
|
820
|
+
display: imageLoaded ? "block" : "none"
|
|
821
|
+
}
|
|
822
|
+
}), showFallback && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)("div", {
|
|
823
|
+
className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_4__.badgeFeatureInitials,
|
|
824
|
+
children: initials
|
|
825
|
+
})]
|
|
826
|
+
}));
|
|
827
|
+
});
|
|
828
|
+
BadgeFeatureIcon.propTypes = {
|
|
829
|
+
name: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,
|
|
830
|
+
image: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),
|
|
831
|
+
className: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string)
|
|
832
|
+
};
|
|
833
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (BadgeFeatureIcon);
|
|
834
|
+
|
|
835
|
+
/***/ }),
|
|
836
|
+
|
|
764
837
|
/***/ "./src/components/ConfirmDialog/index.js":
|
|
765
838
|
/*!***********************************************!*\
|
|
766
839
|
!*** ./src/components/ConfirmDialog/index.js ***!
|
|
@@ -4087,75 +4160,6 @@ AttendeeStatus.propTypes = {
|
|
|
4087
4160
|
|
|
4088
4161
|
/***/ }),
|
|
4089
4162
|
|
|
4090
|
-
/***/ "./src/components/OrdersList/BadgeFeatureImage.js":
|
|
4091
|
-
/*!********************************************************!*\
|
|
4092
|
-
!*** ./src/components/OrdersList/BadgeFeatureImage.js ***!
|
|
4093
|
-
\********************************************************/
|
|
4094
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
4095
|
-
|
|
4096
|
-
__webpack_require__.r(__webpack_exports__);
|
|
4097
|
-
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
4098
|
-
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
4099
|
-
/* harmony export */ });
|
|
4100
|
-
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
|
|
4101
|
-
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
|
|
4102
|
-
/* harmony import */ var _utils_constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utils/constants */ "./src/utils/constants.js");
|
|
4103
|
-
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
|
|
4104
|
-
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__);
|
|
4105
|
-
/**
|
|
4106
|
-
* Copyright 2025 OpenStack Foundation
|
|
4107
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
4108
|
-
* you may not use this file except in compliance with the License.
|
|
4109
|
-
* You may obtain a copy of the License at
|
|
4110
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
4111
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
4112
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
4113
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
4114
|
-
* See the License for the specific language governing permissions and
|
|
4115
|
-
* limitations under the License.
|
|
4116
|
-
* */
|
|
4117
|
-
|
|
4118
|
-
|
|
4119
|
-
|
|
4120
|
-
|
|
4121
|
-
const BadgeFeatureImage = _ref => {
|
|
4122
|
-
let {
|
|
4123
|
-
src,
|
|
4124
|
-
alt,
|
|
4125
|
-
className,
|
|
4126
|
-
maxRetries = _utils_constants__WEBPACK_IMPORTED_MODULE_1__.ONE_RETRY
|
|
4127
|
-
} = _ref;
|
|
4128
|
-
const [currentSrc, setCurrentSrc] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(src);
|
|
4129
|
-
const [retryCount, setRetryCount] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(0);
|
|
4130
|
-
const [hasError, setHasError] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);
|
|
4131
|
-
const handleError = () => {
|
|
4132
|
-
if (retryCount < maxRetries) {
|
|
4133
|
-
setTimeout(() => {
|
|
4134
|
-
setCurrentSrc("".concat(src, "?&t=").concat(Date.now()));
|
|
4135
|
-
setRetryCount(retryCount + _utils_constants__WEBPACK_IMPORTED_MODULE_1__.ONE_RETRY);
|
|
4136
|
-
}, _utils_constants__WEBPACK_IMPORTED_MODULE_1__.MILLISEC_TO_SEC * (retryCount + _utils_constants__WEBPACK_IMPORTED_MODULE_1__.ONE_RETRY));
|
|
4137
|
-
} else {
|
|
4138
|
-
setHasError(true);
|
|
4139
|
-
}
|
|
4140
|
-
};
|
|
4141
|
-
if (hasError) {
|
|
4142
|
-
return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)("div", {
|
|
4143
|
-
className: className,
|
|
4144
|
-
title: alt,
|
|
4145
|
-
children: alt
|
|
4146
|
-
});
|
|
4147
|
-
}
|
|
4148
|
-
return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)("img", {
|
|
4149
|
-
className: className,
|
|
4150
|
-
src: currentSrc,
|
|
4151
|
-
alt: alt,
|
|
4152
|
-
onError: handleError
|
|
4153
|
-
});
|
|
4154
|
-
};
|
|
4155
|
-
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (BadgeFeatureImage);
|
|
4156
|
-
|
|
4157
|
-
/***/ }),
|
|
4158
|
-
|
|
4159
4163
|
/***/ "./src/components/OrdersList/OrderListItem.js":
|
|
4160
4164
|
/*!****************************************************!*\
|
|
4161
4165
|
!*** ./src/components/OrdersList/OrderListItem.js ***!
|
|
@@ -4274,9 +4278,9 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
4274
4278
|
/* harmony import */ var _hooks_useTicketDetails__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../hooks/useTicketDetails */ "./src/hooks/useTicketDetails.js");
|
|
4275
4279
|
/* harmony import */ var _CopyText__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../CopyText */ "./src/components/CopyText/index.js");
|
|
4276
4280
|
/* harmony import */ var _TicketAssign__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../TicketAssign */ "./src/components/TicketAssign/index.js");
|
|
4277
|
-
/* harmony import */ var
|
|
4278
|
-
/* harmony import */ var
|
|
4279
|
-
/* harmony import */ var
|
|
4281
|
+
/* harmony import */ var _BadgeFeatureIcon__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../BadgeFeatureIcon */ "./src/components/BadgeFeatureIcon/index.js");
|
|
4282
|
+
/* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../actions */ "./src/actions.js");
|
|
4283
|
+
/* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./styles.module.scss */ "./src/components/OrdersList/styles.module.scss");
|
|
4280
4284
|
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
|
|
4281
4285
|
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__);
|
|
4282
4286
|
/**
|
|
@@ -4328,7 +4332,7 @@ const TicketCTAs = _ref => {
|
|
|
4328
4332
|
} = (0,react_i18next__WEBPACK_IMPORTED_MODULE_2__.useTranslation)();
|
|
4329
4333
|
if (isUnassigned) {
|
|
4330
4334
|
return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
|
|
4331
|
-
className:
|
|
4335
|
+
className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_17__.assignTicketButton,
|
|
4332
4336
|
onClick: () => onOpenClick(modalViews.assign),
|
|
4333
4337
|
children: t("ticket_status.assign_ticket")
|
|
4334
4338
|
});
|
|
@@ -4337,13 +4341,13 @@ const TicketCTAs = _ref => {
|
|
|
4337
4341
|
alignItems: "center",
|
|
4338
4342
|
direction: "row",
|
|
4339
4343
|
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
|
|
4340
|
-
className:
|
|
4344
|
+
className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_17__.viewFinishTicketButton,
|
|
4341
4345
|
onClick: () => onOpenClick(modalViews.detail),
|
|
4342
4346
|
children: isIncomplete ? t("ticket_status.finish_ticket") : t("ticket_status.view_ticket")
|
|
4343
4347
|
}), isReassignable && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
|
|
4344
4348
|
"aria-label": "reassign ticket button",
|
|
4345
4349
|
role: "button",
|
|
4346
|
-
className:
|
|
4350
|
+
className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_17__.reassignButton,
|
|
4347
4351
|
onClick: () => onOpenClick(modalViews.reassign),
|
|
4348
4352
|
children: t("ticket_status.reassign_ticket")
|
|
4349
4353
|
})]
|
|
@@ -4381,21 +4385,21 @@ const OrderListTickets = _ref2 => {
|
|
|
4381
4385
|
const onReassignablePeriod = reassignDate > now;
|
|
4382
4386
|
const isReassignable = onReassignablePeriod && canReassign && !isExternalAssignedTicket;
|
|
4383
4387
|
const handleCloseModal = () => {
|
|
4384
|
-
dispatch((0,
|
|
4388
|
+
dispatch((0,_actions__WEBPACK_IMPORTED_MODULE_16__.resetTicket)());
|
|
4385
4389
|
setModalOpen(null);
|
|
4386
4390
|
};
|
|
4387
4391
|
const handleOpenModal = view => {
|
|
4388
|
-
dispatch((0,
|
|
4392
|
+
dispatch((0,_actions__WEBPACK_IMPORTED_MODULE_16__.resetTicket)());
|
|
4389
4393
|
setModalOpen(view);
|
|
4390
4394
|
};
|
|
4391
4395
|
return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
|
|
4392
4396
|
container: true,
|
|
4393
|
-
className: "".concat(
|
|
4397
|
+
className: "".concat(_styles_module_scss__WEBPACK_IMPORTED_MODULE_17__.orderWrapper, " ").concat(isRefundModal ? _styles_module_scss__WEBPACK_IMPORTED_MODULE_17__.refundModal : "", " ").concat(isRefundModal && !isRefundable ? _styles_module_scss__WEBPACK_IMPORTED_MODULE_17__.disabledRefund : "", " ").concat(isSelectedToRefund ? _styles_module_scss__WEBPACK_IMPORTED_MODULE_17__.selected : ""),
|
|
4394
4398
|
children: [isRefundModal && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
|
|
4395
4399
|
item: true,
|
|
4396
4400
|
xs: 1,
|
|
4397
4401
|
padding: 2,
|
|
4398
|
-
className:
|
|
4402
|
+
className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_17__.checkbox,
|
|
4399
4403
|
children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)((_mui_material_Checkbox__WEBPACK_IMPORTED_MODULE_5___default()), {
|
|
4400
4404
|
"aria-label": "refund ticket checkbox",
|
|
4401
4405
|
role: "checkbox",
|
|
@@ -4420,7 +4424,7 @@ const OrderListTickets = _ref2 => {
|
|
|
4420
4424
|
py: 2,
|
|
4421
4425
|
pl: 4,
|
|
4422
4426
|
item: true,
|
|
4423
|
-
className:
|
|
4427
|
+
className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_17__.ticketTicketType,
|
|
4424
4428
|
justify: "space-between",
|
|
4425
4429
|
children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)((_mui_material_Stack__WEBPACK_IMPORTED_MODULE_4___default()), {
|
|
4426
4430
|
sx: {
|
|
@@ -4432,17 +4436,16 @@ const OrderListTickets = _ref2 => {
|
|
|
4432
4436
|
})
|
|
4433
4437
|
})
|
|
4434
4438
|
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
|
|
4435
|
-
className:
|
|
4439
|
+
className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_17__.badgeFeatureWrapper,
|
|
4436
4440
|
xs: 4,
|
|
4437
4441
|
py: 2,
|
|
4438
4442
|
pr: 4,
|
|
4439
4443
|
item: true,
|
|
4440
|
-
children: (_ticket$badge = ticket.badge) === null || _ticket$badge === void 0 ? void 0 : _ticket$badge.
|
|
4444
|
+
children: (_ticket$badge = ticket.badge) === null || _ticket$badge === void 0 || (_ticket$badge = _ticket$badge.features) === null || _ticket$badge === void 0 ? void 0 : _ticket$badge.map(bf => /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Tooltip, {
|
|
4441
4445
|
title: bf.name,
|
|
4442
|
-
children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(
|
|
4443
|
-
|
|
4444
|
-
|
|
4445
|
-
alt: bf.name
|
|
4446
|
+
children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_BadgeFeatureIcon__WEBPACK_IMPORTED_MODULE_15__["default"], {
|
|
4447
|
+
name: bf.name,
|
|
4448
|
+
image: bf.image
|
|
4446
4449
|
})
|
|
4447
4450
|
}, bf.name))
|
|
4448
4451
|
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
|
|
@@ -4456,14 +4459,14 @@ const OrderListTickets = _ref2 => {
|
|
|
4456
4459
|
ticket: ticket,
|
|
4457
4460
|
isExternalAssignedTicket: !!isExternalAssignedTicket
|
|
4458
4461
|
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsxs)("span", {
|
|
4459
|
-
className:
|
|
4462
|
+
className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_17__.ticketNo,
|
|
4460
4463
|
children: [t("ticket_status.ticket_no"), ":", " ", /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_CopyText__WEBPACK_IMPORTED_MODULE_13__["default"], {
|
|
4461
4464
|
text: ticket.number,
|
|
4462
4465
|
tooltipText: t("ticket_status.copy_ticket_number")
|
|
4463
4466
|
})]
|
|
4464
4467
|
})]
|
|
4465
4468
|
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Box, {
|
|
4466
|
-
className:
|
|
4469
|
+
className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_17__.ticketFooter,
|
|
4467
4470
|
px: {
|
|
4468
4471
|
xs: 1
|
|
4469
4472
|
},
|
|
@@ -4475,7 +4478,7 @@ const OrderListTickets = _ref2 => {
|
|
|
4475
4478
|
ticket: ticket
|
|
4476
4479
|
})
|
|
4477
4480
|
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Box, {
|
|
4478
|
-
className:
|
|
4481
|
+
className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_17__.ticketActionButtons,
|
|
4479
4482
|
children: ticket.is_active && !isRefundModal && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(TicketCTAs, {
|
|
4480
4483
|
isUnassigned: isUnassigned,
|
|
4481
4484
|
isIncomplete: isIncomplete,
|
|
@@ -5004,12 +5007,13 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
5004
5007
|
/* harmony import */ var _OrdersList_AttendeeStatus__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../OrdersList/AttendeeStatus */ "./src/components/OrdersList/AttendeeStatus.js");
|
|
5005
5008
|
/* harmony import */ var _RefundStatus__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./RefundStatus */ "./src/components/RefundRequests/RefundStatus.js");
|
|
5006
5009
|
/* harmony import */ var _CopyText__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../CopyText */ "./src/components/CopyText/index.js");
|
|
5007
|
-
/* harmony import */ var
|
|
5008
|
-
/* harmony import */ var
|
|
5010
|
+
/* harmony import */ var _TicketStatus__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../TicketStatus */ "./src/components/TicketStatus/index.js");
|
|
5011
|
+
/* harmony import */ var _BadgeFeatureIcon__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../BadgeFeatureIcon */ "./src/components/BadgeFeatureIcon/index.js");
|
|
5009
5012
|
/* harmony import */ var _utils_constants__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../utils/constants */ "./src/utils/constants.js");
|
|
5010
5013
|
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../utils */ "./src/utils/index.js");
|
|
5011
|
-
/* harmony import */ var
|
|
5012
|
-
/* harmony import */ var
|
|
5014
|
+
/* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./styles.module.scss */ "./src/components/RefundRequests/styles.module.scss");
|
|
5015
|
+
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
|
|
5016
|
+
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__);
|
|
5013
5017
|
|
|
5014
5018
|
|
|
5015
5019
|
const _excluded = ["className"];
|
|
@@ -5032,6 +5036,7 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
5032
5036
|
|
|
5033
5037
|
|
|
5034
5038
|
|
|
5039
|
+
|
|
5035
5040
|
const RefundRequestedTicket = _ref => {
|
|
5036
5041
|
var _ticket$ticket_type, _ticket$badge;
|
|
5037
5042
|
let {
|
|
@@ -5067,7 +5072,7 @@ const RefundRequestedTicket = _ref => {
|
|
|
5067
5072
|
return (
|
|
5068
5073
|
/*#__PURE__*/
|
|
5069
5074
|
// eslint-disable-next-line
|
|
5070
|
-
(0,
|
|
5075
|
+
(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_5__.Tooltip, _objectSpread(_objectSpread({}, props), {}, {
|
|
5071
5076
|
classes: {
|
|
5072
5077
|
popper: className
|
|
5073
5078
|
}
|
|
@@ -5082,37 +5087,36 @@ const RefundRequestedTicket = _ref => {
|
|
|
5082
5087
|
border: "1px solid #dadde9"
|
|
5083
5088
|
}
|
|
5084
5089
|
}));
|
|
5085
|
-
return /*#__PURE__*/(0,
|
|
5090
|
+
return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_5__.Grid, {
|
|
5086
5091
|
container: true,
|
|
5087
|
-
className: "".concat(
|
|
5092
|
+
className: "".concat(_styles_module_scss__WEBPACK_IMPORTED_MODULE_18__.refundTicketBoxContainer, " ").concat(refundDetails ? _styles_module_scss__WEBPACK_IMPORTED_MODULE_18__.refundDetail : "", " "),
|
|
5088
5093
|
"data-testid": "refund-requested-ticket-container",
|
|
5089
|
-
children: [/*#__PURE__*/(0,
|
|
5094
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_5__.Grid, {
|
|
5090
5095
|
xs: GRID_12,
|
|
5091
5096
|
sm: refundDetails ? GRID_8 : GRID_12,
|
|
5092
5097
|
item: true,
|
|
5093
5098
|
justify: "space-between",
|
|
5094
5099
|
pt: 2,
|
|
5095
5100
|
px: 4,
|
|
5096
|
-
children: /*#__PURE__*/(0,
|
|
5101
|
+
children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsxs)((_mui_material_Stack__WEBPACK_IMPORTED_MODULE_9___default()), {
|
|
5097
5102
|
sx: {
|
|
5098
5103
|
justifyContent: "space-between",
|
|
5099
5104
|
alignItems: "center"
|
|
5100
5105
|
},
|
|
5101
5106
|
direction: "row",
|
|
5102
|
-
children: [/*#__PURE__*/(0,
|
|
5107
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)("h4", {
|
|
5103
5108
|
children: (_ticket$ticket_type = ticket.ticket_type) === null || _ticket$ticket_type === void 0 ? void 0 : _ticket$ticket_type.name
|
|
5104
|
-
}), /*#__PURE__*/(0,
|
|
5105
|
-
className:
|
|
5109
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_5__.Grid, {
|
|
5110
|
+
className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_18__.badgeFeatureWrapper,
|
|
5106
5111
|
xs: 4,
|
|
5107
5112
|
item: true,
|
|
5108
|
-
children: (_ticket$badge = ticket.badge) === null || _ticket$badge === void 0 ? void 0 : _ticket$badge.
|
|
5109
|
-
|
|
5110
|
-
|
|
5111
|
-
alt: bf.name
|
|
5113
|
+
children: (_ticket$badge = ticket.badge) === null || _ticket$badge === void 0 || (_ticket$badge = _ticket$badge.features) === null || _ticket$badge === void 0 ? void 0 : _ticket$badge.map(bf => /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)(_BadgeFeatureIcon__WEBPACK_IMPORTED_MODULE_15__["default"], {
|
|
5114
|
+
name: bf.name,
|
|
5115
|
+
image: bf.image
|
|
5112
5116
|
}, bf.name))
|
|
5113
5117
|
})]
|
|
5114
5118
|
})
|
|
5115
|
-
}), refundDetails && /*#__PURE__*/(0,
|
|
5119
|
+
}), refundDetails && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_5__.Grid, {
|
|
5116
5120
|
sm: 4,
|
|
5117
5121
|
xs: 12,
|
|
5118
5122
|
px: {
|
|
@@ -5124,28 +5128,28 @@ const RefundRequestedTicket = _ref => {
|
|
|
5124
5128
|
sm: 2
|
|
5125
5129
|
},
|
|
5126
5130
|
item: true,
|
|
5127
|
-
children: /*#__PURE__*/(0,
|
|
5131
|
+
children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)(_RefundStatus__WEBPACK_IMPORTED_MODULE_12__["default"], {
|
|
5128
5132
|
ticket: ticket
|
|
5129
5133
|
})
|
|
5130
|
-
}), /*#__PURE__*/(0,
|
|
5134
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_5__.Grid, {
|
|
5131
5135
|
xs: 12,
|
|
5132
5136
|
item: true,
|
|
5133
5137
|
px: 4,
|
|
5134
5138
|
pb: refundDetails ? PADDING_2 : 0,
|
|
5135
5139
|
container: true,
|
|
5136
|
-
children: [/*#__PURE__*/(0,
|
|
5140
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_5__.Grid, {
|
|
5137
5141
|
xs: 12,
|
|
5138
5142
|
sm: 8,
|
|
5139
|
-
className:
|
|
5140
|
-
children: [/*#__PURE__*/(0,
|
|
5143
|
+
className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_18__.refundTicketAttendee,
|
|
5144
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)(_OrdersList_AttendeeStatus__WEBPACK_IMPORTED_MODULE_11__["default"], {
|
|
5141
5145
|
ticket: ticket
|
|
5142
|
-
}), /*#__PURE__*/(0,
|
|
5143
|
-
className:
|
|
5144
|
-
children: [t("ticket_status.ticket_no"), ": ", /*#__PURE__*/(0,
|
|
5146
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsxs)("span", {
|
|
5147
|
+
className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_18__.ticketNo,
|
|
5148
|
+
children: [t("ticket_status.ticket_no"), ": ", /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)(_CopyText__WEBPACK_IMPORTED_MODULE_13__["default"], {
|
|
5145
5149
|
text: ticket.number
|
|
5146
5150
|
})]
|
|
5147
5151
|
})]
|
|
5148
|
-
}), refundDetails && ticket.total_refunded_amount > 0 && /*#__PURE__*/(0,
|
|
5152
|
+
}), refundDetails && ticket.total_refunded_amount > 0 && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_5__.Grid, {
|
|
5149
5153
|
xs: 12,
|
|
5150
5154
|
md: 4,
|
|
5151
5155
|
pl: {
|
|
@@ -5154,39 +5158,39 @@ const RefundRequestedTicket = _ref => {
|
|
|
5154
5158
|
},
|
|
5155
5159
|
children: [(0,_utils__WEBPACK_IMPORTED_MODULE_17__.formatCurrency)(ticket.total_refunded_amount, {
|
|
5156
5160
|
currency
|
|
5157
|
-
}), " ", "Refunded", approvedRefunds.some(r => r.refunded_taxes.length > 0) && /*#__PURE__*/(0,
|
|
5158
|
-
title: /*#__PURE__*/(0,
|
|
5159
|
-
children: [/*#__PURE__*/(0,
|
|
5161
|
+
}), " ", "Refunded", approvedRefunds.some(r => r.refunded_taxes.length > 0) && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)(HtmlTooltip, {
|
|
5162
|
+
title: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.Fragment, {
|
|
5163
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsxs)("p", {
|
|
5160
5164
|
children: [(0,_utils__WEBPACK_IMPORTED_MODULE_17__.formatCurrency)(ticket.refunded_amount, {
|
|
5161
5165
|
currency
|
|
5162
5166
|
}), " ", "Ticket Amount"]
|
|
5163
|
-
}), /*#__PURE__*/(0,
|
|
5167
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)("b", {
|
|
5164
5168
|
children: "Taxes"
|
|
5165
5169
|
}), Object.keys(refundedTaxesSummatory).map(taxId => {
|
|
5166
5170
|
const {
|
|
5167
5171
|
totalRefundedTaxAmount,
|
|
5168
5172
|
name
|
|
5169
5173
|
} = refundedTaxesSummatory[taxId];
|
|
5170
|
-
return /*#__PURE__*/(0,
|
|
5174
|
+
return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)("p", {
|
|
5171
5175
|
children: "".concat(name, " - ").concat((0,_utils__WEBPACK_IMPORTED_MODULE_17__.formatCurrency)(totalRefundedTaxAmount, {
|
|
5172
5176
|
currency
|
|
5173
5177
|
}))
|
|
5174
5178
|
}, taxId);
|
|
5175
5179
|
})]
|
|
5176
5180
|
}),
|
|
5177
|
-
children: /*#__PURE__*/(0,
|
|
5178
|
-
children: /*#__PURE__*/(0,
|
|
5181
|
+
children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_5__.IconButton, {
|
|
5182
|
+
children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)((_mui_icons_material_Info__WEBPACK_IMPORTED_MODULE_8___default()), {})
|
|
5179
5183
|
})
|
|
5180
|
-
}), /*#__PURE__*/(0,
|
|
5184
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)("br", {}), moment_timezone__WEBPACK_IMPORTED_MODULE_10___default()(ticket.refund_requests[0].action_date * _utils_constants__WEBPACK_IMPORTED_MODULE_16__.MILLISEC_TO_SEC).format("MMM DD, YYYY")]
|
|
5181
5185
|
})]
|
|
5182
|
-
}), !refundDetails && /*#__PURE__*/(0,
|
|
5186
|
+
}), !refundDetails && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_5__.Grid, {
|
|
5183
5187
|
xs: 12,
|
|
5184
5188
|
pr: 4,
|
|
5185
5189
|
pb: 2,
|
|
5186
|
-
children: /*#__PURE__*/(0,
|
|
5190
|
+
children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_5__.Grid, {
|
|
5187
5191
|
xs: 12,
|
|
5188
5192
|
item: true,
|
|
5189
|
-
children: /*#__PURE__*/(0,
|
|
5193
|
+
children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)(_TicketStatus__WEBPACK_IMPORTED_MODULE_14__["default"], {
|
|
5190
5194
|
ticket: ticket
|
|
5191
5195
|
})
|
|
5192
5196
|
})
|
|
@@ -8890,6 +8894,27 @@ const updateTicketCollection = (tickets, ticket) => tickets.map(t => {
|
|
|
8890
8894
|
return t.id === ticket.id ? ticket : tmpTicket;
|
|
8891
8895
|
});
|
|
8892
8896
|
|
|
8897
|
+
/***/ }),
|
|
8898
|
+
|
|
8899
|
+
/***/ "./src/components/BadgeFeatureIcon/styles.module.scss":
|
|
8900
|
+
/*!************************************************************!*\
|
|
8901
|
+
!*** ./src/components/BadgeFeatureIcon/styles.module.scss ***!
|
|
8902
|
+
\************************************************************/
|
|
8903
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
8904
|
+
|
|
8905
|
+
__webpack_require__.r(__webpack_exports__);
|
|
8906
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
8907
|
+
/* harmony export */ badgeFeatureIcon: () => (/* binding */ _1),
|
|
8908
|
+
/* harmony export */ badgeFeatureImage: () => (/* binding */ _2),
|
|
8909
|
+
/* harmony export */ badgeFeatureInitials: () => (/* binding */ _3)
|
|
8910
|
+
/* harmony export */ });
|
|
8911
|
+
// extracted by mini-css-extract-plugin
|
|
8912
|
+
var _1 = "badgeFeatureIcon___sKVTC";
|
|
8913
|
+
var _2 = "badgeFeatureImage___YO4fs";
|
|
8914
|
+
var _3 = "badgeFeatureInitials___kW7Zk";
|
|
8915
|
+
|
|
8916
|
+
|
|
8917
|
+
|
|
8893
8918
|
/***/ }),
|
|
8894
8919
|
|
|
8895
8920
|
/***/ "./src/components/CopyText/styles.module.scss":
|
|
@@ -9098,29 +9123,28 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
9098
9123
|
/* harmony export */ assignedByText: () => (/* binding */ _3),
|
|
9099
9124
|
/* harmony export */ assignedToMeDes: () => (/* binding */ _4),
|
|
9100
9125
|
/* harmony export */ assignedToMeWrapper: () => (/* binding */ _5),
|
|
9101
|
-
/* harmony export */
|
|
9102
|
-
/* harmony export */
|
|
9103
|
-
/* harmony export */
|
|
9104
|
-
/* harmony export */
|
|
9105
|
-
/* harmony export */
|
|
9106
|
-
/* harmony export */
|
|
9107
|
-
/* harmony export */
|
|
9108
|
-
/* harmony export */
|
|
9109
|
-
/* harmony export */
|
|
9110
|
-
/* harmony export */
|
|
9111
|
-
/* harmony export */
|
|
9112
|
-
/* harmony export */
|
|
9113
|
-
/* harmony export */
|
|
9114
|
-
/* harmony export */
|
|
9115
|
-
/* harmony export */
|
|
9116
|
-
/* harmony export */
|
|
9117
|
-
/* harmony export */
|
|
9118
|
-
/* harmony export */
|
|
9119
|
-
/* harmony export */
|
|
9120
|
-
/* harmony export */
|
|
9121
|
-
/* harmony export */
|
|
9122
|
-
/* harmony export */
|
|
9123
|
-
/* harmony export */ viewMoreButton: () => (/* binding */ _1c)
|
|
9126
|
+
/* harmony export */ badgeFeatureWrapper: () => (/* binding */ _6),
|
|
9127
|
+
/* harmony export */ checkbox: () => (/* binding */ _7),
|
|
9128
|
+
/* harmony export */ disabledRefund: () => (/* binding */ _8),
|
|
9129
|
+
/* harmony export */ display_none: () => (/* binding */ _9),
|
|
9130
|
+
/* harmony export */ label: () => (/* binding */ _a),
|
|
9131
|
+
/* harmony export */ orderTicketContainer: () => (/* binding */ _b),
|
|
9132
|
+
/* harmony export */ orderTicketInfo: () => (/* binding */ _c),
|
|
9133
|
+
/* harmony export */ orderTicketInfoContainer: () => (/* binding */ _d),
|
|
9134
|
+
/* harmony export */ orderWrapper: () => (/* binding */ _e),
|
|
9135
|
+
/* harmony export */ reassignButton: () => (/* binding */ _f),
|
|
9136
|
+
/* harmony export */ refundButtons: () => (/* binding */ _10),
|
|
9137
|
+
/* harmony export */ refundModal: () => (/* binding */ _11),
|
|
9138
|
+
/* harmony export */ selected: () => (/* binding */ _12),
|
|
9139
|
+
/* harmony export */ tabButtons: () => (/* binding */ _13),
|
|
9140
|
+
/* harmony export */ ticketActionButtons: () => (/* binding */ _14),
|
|
9141
|
+
/* harmony export */ ticketFooter: () => (/* binding */ _15),
|
|
9142
|
+
/* harmony export */ ticketListContainer: () => (/* binding */ _16),
|
|
9143
|
+
/* harmony export */ ticketNo: () => (/* binding */ _17),
|
|
9144
|
+
/* harmony export */ ticketOwnerEmail: () => (/* binding */ _18),
|
|
9145
|
+
/* harmony export */ ticketTicketType: () => (/* binding */ _19),
|
|
9146
|
+
/* harmony export */ viewFinishTicketButton: () => (/* binding */ _1a),
|
|
9147
|
+
/* harmony export */ viewMoreButton: () => (/* binding */ _1b)
|
|
9124
9148
|
/* harmony export */ });
|
|
9125
9149
|
// extracted by mini-css-extract-plugin
|
|
9126
9150
|
var _1 = "assignTicketButton___zzLsc";
|
|
@@ -9128,29 +9152,28 @@ var _2 = "assignToMeText___ZPaex";
|
|
|
9128
9152
|
var _3 = "assignedByText___bNZ7z";
|
|
9129
9153
|
var _4 = "assignedToMeDes___GjFkV";
|
|
9130
9154
|
var _5 = "assignedToMeWrapper___Uxc2y";
|
|
9131
|
-
var _6 = "
|
|
9132
|
-
var _7 = "
|
|
9133
|
-
var _8 = "
|
|
9134
|
-
var _9 = "
|
|
9135
|
-
var _a = "
|
|
9136
|
-
var _b = "
|
|
9137
|
-
var _c = "
|
|
9138
|
-
var _d = "
|
|
9139
|
-
var _e = "
|
|
9140
|
-
var _f = "
|
|
9141
|
-
var _10 = "
|
|
9142
|
-
var _11 = "
|
|
9143
|
-
var _12 = "
|
|
9144
|
-
var _13 = "
|
|
9145
|
-
var _14 = "
|
|
9146
|
-
var _15 = "
|
|
9147
|
-
var _16 = "
|
|
9148
|
-
var _17 = "
|
|
9149
|
-
var _18 = "
|
|
9150
|
-
var _19 = "
|
|
9151
|
-
var _1a = "
|
|
9152
|
-
var _1b = "
|
|
9153
|
-
var _1c = "viewMoreButton___K_1zT";
|
|
9155
|
+
var _6 = "badgeFeatureWrapper___IQLNP";
|
|
9156
|
+
var _7 = "checkbox___XZJpb";
|
|
9157
|
+
var _8 = "disabledRefund___Sffl7";
|
|
9158
|
+
var _9 = "display_none___CqpL3";
|
|
9159
|
+
var _a = "label___zXDWz";
|
|
9160
|
+
var _b = "orderTicketContainer___ZJLzk";
|
|
9161
|
+
var _c = "orderTicketInfo___gemqB";
|
|
9162
|
+
var _d = "orderTicketInfoContainer____p66V";
|
|
9163
|
+
var _e = "orderWrapper___yDBAo";
|
|
9164
|
+
var _f = "reassignButton___RojM5";
|
|
9165
|
+
var _10 = "refundButtons___jDl4H";
|
|
9166
|
+
var _11 = "refundModal___EqgPF";
|
|
9167
|
+
var _12 = "selected___HWGNc";
|
|
9168
|
+
var _13 = "tabButtons___xTyJA";
|
|
9169
|
+
var _14 = "ticketActionButtons___rpSMQ";
|
|
9170
|
+
var _15 = "ticketFooter___j3bdi";
|
|
9171
|
+
var _16 = "ticketListContainer___cfmrr";
|
|
9172
|
+
var _17 = "ticketNo___a2iM9";
|
|
9173
|
+
var _18 = "ticketOwnerEmail___Zt4OE";
|
|
9174
|
+
var _19 = "ticketTicketType___Zq_f0";
|
|
9175
|
+
var _1a = "viewFinishTicketButton___HF6Im";
|
|
9176
|
+
var _1b = "viewMoreButton___K_1zT";
|
|
9154
9177
|
|
|
9155
9178
|
|
|
9156
9179
|
|
|
@@ -9167,49 +9190,47 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
9167
9190
|
/* harmony export */ CTAButtonWrapper: () => (/* binding */ _1),
|
|
9168
9191
|
/* harmony export */ actionButtons: () => (/* binding */ _2),
|
|
9169
9192
|
/* harmony export */ approved: () => (/* binding */ _3),
|
|
9170
|
-
/* harmony export */
|
|
9171
|
-
/* harmony export */
|
|
9172
|
-
/* harmony export */
|
|
9173
|
-
/* harmony export */
|
|
9174
|
-
/* harmony export */
|
|
9175
|
-
/* harmony export */
|
|
9176
|
-
/* harmony export */
|
|
9177
|
-
/* harmony export */
|
|
9178
|
-
/* harmony export */
|
|
9179
|
-
/* harmony export */
|
|
9180
|
-
/* harmony export */
|
|
9181
|
-
/* harmony export */
|
|
9182
|
-
/* harmony export */
|
|
9183
|
-
/* harmony export */
|
|
9184
|
-
/* harmony export */
|
|
9185
|
-
/* harmony export */
|
|
9186
|
-
/* harmony export */
|
|
9187
|
-
/* harmony export */
|
|
9188
|
-
/* harmony export */ ticketNo: () => (/* binding */ _16)
|
|
9193
|
+
/* harmony export */ badgeFeatureWrapper: () => (/* binding */ _4),
|
|
9194
|
+
/* harmony export */ buttonPill: () => (/* binding */ _5),
|
|
9195
|
+
/* harmony export */ cancelButton: () => (/* binding */ _6),
|
|
9196
|
+
/* harmony export */ continueButton: () => (/* binding */ _7),
|
|
9197
|
+
/* harmony export */ deleteIcon: () => (/* binding */ _8),
|
|
9198
|
+
/* harmony export */ pending: () => (/* binding */ _9),
|
|
9199
|
+
/* harmony export */ refundDetail: () => (/* binding */ _a),
|
|
9200
|
+
/* harmony export */ refundErrorMsg: () => (/* binding */ _b),
|
|
9201
|
+
/* harmony export */ refundSuccessful: () => (/* binding */ _c),
|
|
9202
|
+
/* harmony export */ refundText: () => (/* binding */ _d),
|
|
9203
|
+
/* harmony export */ refundTicketAttendee: () => (/* binding */ _e),
|
|
9204
|
+
/* harmony export */ refundTicketBoxContainer: () => (/* binding */ _f),
|
|
9205
|
+
/* harmony export */ rejected: () => (/* binding */ _10),
|
|
9206
|
+
/* harmony export */ subtitle: () => (/* binding */ _11),
|
|
9207
|
+
/* harmony export */ successMsg: () => (/* binding */ _12),
|
|
9208
|
+
/* harmony export */ successMsg2: () => (/* binding */ _13),
|
|
9209
|
+
/* harmony export */ ticketList: () => (/* binding */ _14),
|
|
9210
|
+
/* harmony export */ ticketNo: () => (/* binding */ _15)
|
|
9189
9211
|
/* harmony export */ });
|
|
9190
9212
|
// extracted by mini-css-extract-plugin
|
|
9191
9213
|
var _1 = "CTAButtonWrapper___Kgq6g";
|
|
9192
9214
|
var _2 = "actionButtons___u7mPS";
|
|
9193
9215
|
var _3 = "approved___sxEJW";
|
|
9194
|
-
var _4 = "
|
|
9195
|
-
var _5 = "
|
|
9196
|
-
var _6 = "
|
|
9197
|
-
var _7 = "
|
|
9198
|
-
var _8 = "
|
|
9199
|
-
var _9 = "
|
|
9200
|
-
var _a = "
|
|
9201
|
-
var _b = "
|
|
9202
|
-
var _c = "
|
|
9203
|
-
var _d = "
|
|
9204
|
-
var _e = "
|
|
9205
|
-
var _f = "
|
|
9206
|
-
var _10 = "
|
|
9207
|
-
var _11 = "
|
|
9208
|
-
var _12 = "
|
|
9209
|
-
var _13 = "
|
|
9210
|
-
var _14 = "
|
|
9211
|
-
var _15 = "
|
|
9212
|
-
var _16 = "ticketNo____EAD4";
|
|
9216
|
+
var _4 = "badgeFeatureWrapper____9GbD";
|
|
9217
|
+
var _5 = "buttonPill___Lesaz";
|
|
9218
|
+
var _6 = "cancelButton___yfhYb";
|
|
9219
|
+
var _7 = "continueButton___NyX3s";
|
|
9220
|
+
var _8 = "deleteIcon___FSwye";
|
|
9221
|
+
var _9 = "pending___aEbWw";
|
|
9222
|
+
var _a = "refundDetail___cQ28V";
|
|
9223
|
+
var _b = "refundErrorMsg___Aahzr";
|
|
9224
|
+
var _c = "refundSuccessful___zrDQY";
|
|
9225
|
+
var _d = "refundText___aEnL9";
|
|
9226
|
+
var _e = "refundTicketAttendee___QXCjM";
|
|
9227
|
+
var _f = "refundTicketBoxContainer___ya613";
|
|
9228
|
+
var _10 = "rejected___NJE4Z";
|
|
9229
|
+
var _11 = "subtitle___PtDe2";
|
|
9230
|
+
var _12 = "successMsg___HtMse";
|
|
9231
|
+
var _13 = "successMsg2___Q6zna";
|
|
9232
|
+
var _14 = "ticketList___eDQR3";
|
|
9233
|
+
var _15 = "ticketNo____EAD4";
|
|
9213
9234
|
|
|
9214
9235
|
|
|
9215
9236
|
|
|
@@ -10210,4 +10231,4 @@ MyOrdersMyTicketsWidget.propTypes = {
|
|
|
10210
10231
|
/******/ })()
|
|
10211
10232
|
;
|
|
10212
10233
|
});
|
|
10213
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VUNBQTtVQUNBOztVQUVBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBOztVQUVBO1VBQ0E7O1VBRUE7VUFDQTtVQUNBOzs7OztXQ3RCQTtXQUNBO1dBQ0E7V0FDQTtXQUNBO1dBQ0EsaUNBQWlDLFdBQVc7V0FDNUM7V0FDQTs7Ozs7V0NQQTtXQUNBO1dBQ0E7V0FDQTtXQUNBLHlDQUF5Qyx3Q0FBd0M7V0FDakY7V0FDQTtXQUNBOzs7OztXQ1BBOzs7OztXQ0FBO1dBQ0E7V0FDQTtXQUNBLHVEQUF1RCxpQkFBaUI7V0FDeEU7V0FDQSxnREFBZ0QsYUFBYTtXQUM3RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNOQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDeUM7QUFDTjtBQUNJO0FBQ3VCO0FBQ1Q7QUFDZDtBQUNrQjtBQUVGO0FBQUE7QUFFdkQsTUFBTUUsdUJBQXVCLEdBQUloakIsS0FBSyxJQUFLO0VBQ3pDLE1BQU07SUFDSmdaLFFBQVE7SUFDUmlLLFlBQVk7SUFDWjN4QyxNQUFNO0lBQ042RCxVQUFVO0lBQ1Y1RCxJQUFJO0lBQ0p3bkMsUUFBUTtJQUNSdi9CO0VBQ0YsQ0FBQyxHQUFHd21CLEtBQUs7RUFFVCxNQUFNO0lBQUVrWixLQUFLO0lBQUVXO0VBQVUsQ0FBQyxHQUFHRixvREFBWSxDQUFDO0lBQ3hDWCxRQUFRO0lBQ1JpSyxZQUFZO0lBQ1ozeEMsTUFBTTtJQUNOQyxJQUFJO0lBQ0o0RCxVQUFVO0lBQ1Y0akMsUUFBUTtJQUNSdi9CO0VBQ0YsQ0FBQyxDQUFDO0VBRUYsTUFBTTBwQyxnQkFBZ0IsR0FBR0EsQ0FBQSxLQUFNO0lBQzdCLE1BQU01dEMsTUFBTSxHQUFHLElBQUk2dEMsZUFBZSxDQUFDMW1DLE1BQU0sQ0FBQ3dpQyxRQUFRLENBQUNtRSxNQUFNLENBQUM7SUFDMUQsTUFBTUMsS0FBSyxHQUFHL3RDLE1BQU0sQ0FBQ2d1QyxHQUFHLENBQUMsWUFBWSxDQUFDO0lBQ3RDLElBQUlELEtBQUssRUFBRW5LLEtBQUssQ0FBQ2pvQyxRQUFRLENBQUM7TUFBRTZYLElBQUksRUFBRXZhLGlEQUFXO01BQUU4RSxPQUFPLEVBQUU7SUFBSyxDQUFDLENBQUM7RUFDakUsQ0FBQztFQUVEd1osZ0RBQVMsQ0FBQyxNQUFNO0lBQ2Rxc0IsS0FBSyxDQUFDam9DLFFBQVEsQ0FBQ0kseURBQWUsQ0FBQ0MsTUFBTSxFQUFFQyxJQUFJLENBQUMsQ0FBQztFQUMvQyxDQUFDLEVBQUUsQ0FBQ0QsTUFBTSxFQUFFQyxJQUFJLENBQUMsQ0FBQztFQUVsQixvQkFDRWtNLHNEQUFBLENBQUM4MEIsaURBQVE7SUFBQzJHLEtBQUssRUFBRUEsS0FBTTtJQUFBajdCLFFBQUEsZUFDckJSLHNEQUFBLENBQUNzbEMsd0VBQVc7TUFDVlEsWUFBWSxFQUFFTCxnQkFBaUI7TUFDL0JydEIsT0FBTyxFQUFFLElBQUs7TUFDZGdrQixTQUFTLEVBQUVBLFNBQVU7TUFBQTU3QixRQUFBLGVBRXJCUixzREFBQSxDQUFDcW5CLCtEQUFvQjtRQUFDMkIsV0FBVztRQUFBeG9CLFFBQUEsZUFDL0JSLHNEQUFBLENBQUN1MEIsaUVBQWEsSUFBRTtNQUFDLENBQ0c7SUFBQyxDQUNaO0VBQUMsQ0FDTixDQUFDO0FBRWYsQ0FBQztBQUVEZ1IsdUJBQXVCLENBQUNqakMsU0FBUyxHQUFHO0VBQ2xDaTVCLFFBQVEsRUFBRTU2QiwwREFBZ0I7RUFDMUI2a0MsWUFBWSxFQUFFN2tDLDBEQUFnQjtFQUM5QjlNLE1BQU0sRUFBRThNLDBEQUFnQjtFQUN4QmpKLFVBQVUsRUFBRWlKLDBEQUFnQjtFQUM1QjdNLElBQUksRUFBRTZNLDBEQUFnQjtFQUN0QjI2QixRQUFRLEVBQUUzNkIsMERBQWdCO0VBQzFCNUUsYUFBYSxFQUFFNEUsd0RBQWNtRDtBQUMvQixDQUFDO0FBRUQsaUVBQWV5aEMsdUJBQXVCLEUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9hY3Rpb25zLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0NvbmZpcm1EaWFsb2cvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvQ29weVRleHQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvQ3VzdG9tTm90aWZpY2F0aW9uL0NvbnRleHQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvQ3VzdG9tTm90aWZpY2F0aW9uL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0N1c3RvbVRoZW1lLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL0NoZWNrYm94UXVlc3Rpb25GaWVsZC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL0Ryb3Bkb3duUXVlc3Rpb25GaWVsZC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL1JhZGlvTGlzdFF1ZXN0aW9uRmllbGQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy9UZXh0UXVlc3Rpb25GaWVsZC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL3V0aWxzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbnN0YW50cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL0Fzc2lnbmVkRmlsdGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvQmFkZ2VGZWF0dXJlRmlsdGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvRmlsdGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvRnJlZVBhaWRGaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9Qcm9tb0NvZGVGaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9TZWFyY2guanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9Tb3J0LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvU3RhdHVzRmlsdGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvVGlja2V0VHlwZUZpbHRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0Zvcm1Gb290ZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTGFiZWxzL0Vycm9yTGFiZWwuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTG9hZGVyL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL015T3JkZXJzVGlja2V0cy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9Ob1RpY2tldHNGb3VuZC9UaWNrZXRzSWNvbi5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9Ob1RpY2tldHNGb3VuZC9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlclN1bW1hcnkvT3JkZXJTdW1tYXJ5VGFibGUuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJTdW1tYXJ5L1JlZnVuZEVtYWlsU3VwcG9ydC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlclN1bW1hcnkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9Bc3NpZ25lZFRvTWUuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9BdHRlbmRlZVN0YXR1cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L0JhZGdlRmVhdHVyZUltYWdlLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvT3JkZXJMaXN0SXRlbS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L09yZGVyTGlzdFRpY2tldHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9PcmRlcnNMaXN0RGVza3RvcE1vYmlsZS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JlZnVuZFJlcXVlc3RzL1JlZnVuZERldGFpbHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmVmdW5kUmVxdWVzdHMvUmVmdW5kUmVxdWVzdGVkVGlja2V0LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JlZnVuZFJlcXVlc3RzL1JlZnVuZFN0YXR1cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SZWZ1bmRSZXF1ZXN0cy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SaWdodERyYXdlci9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9TdW1taXRIZWFkZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGFiV3JhcHBlci9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRBc3NpZ24vY29tcG9uZW50cy9Bc3NpZ25PcHRpb25zL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9jb21wb25lbnRzL0RlbGVnYXRlRm9ybS9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRBc3NpZ24vY29tcG9uZW50cy9IZWFkZXIvQXNzaWduSGVhZGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9jb21wb25lbnRzL0hlYWRlci9SZWFzc2lnbkhlYWRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRBc3NpZ24vY29tcG9uZW50cy9SZWFzc2lnbkZvcm0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0QXNzaWduL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL0NvbXBhbnlGaWVsZC9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9SZWdpc3RyYXRpb25EaXNjbGFpbWVyL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsSGVhZGVyL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL1RpY2tldEZvcm0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvVGlja2V0T3duZXJGaWVsZHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbnN0YW50cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0U3RhdHVzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1dpZGdldFRhYnMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvV2lkZ2V0V3JhcHBlci9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvaG9va3MvdXNlR2V0VGlja2V0LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9ob29rcy91c2VTY3JvbGxUb0Vycm9yLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9ob29rcy91c2VUaWNrZXREZXRhaWxzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9pMThuL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9yZWR1Y2VyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9zdG9yZS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvYXV0aC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvY29uc3RhbnRzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy91dGlscy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvc3VtbWl0VXRpbHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3V0aWxzL3RpY2tldFV0aWxzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0NvcHlUZXh0L3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9Gb3JtRm9vdGVyL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9MYWJlbHMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL015T3JkZXJzVGlja2V0cy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTm9UaWNrZXRzRm91bmQvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyU3VtbWFyeS9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmVmdW5kUmVxdWVzdHMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JpZ2h0RHJhd2VyL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9TdW1taXRIZWFkZXIvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9jb21wb25lbnRzL0Fzc2lnbk9wdGlvbnMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9jb21wb25lbnRzL0hlYWRlci9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0QXNzaWduL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9SZWdpc3RyYXRpb25EaXNjbGFpbWVyL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9UaWNrZXRPd25lckZpZWxkcy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRTdGF0dXMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1dpZGdldFRhYnMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1dpZGdldFdyYXBwZXIvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2hlY2tDaXJjbGVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Nsb3NlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9Db250ZW50Q29weVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXJyb3JcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0V4cGFuZE1vcmVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ZpbHRlckxpc3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ltcG9ydEV4cG9ydFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvSW5mb1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvU2VhcmNoXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvQnV0dG9uXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9DaGVja2JveFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvRGlhbG9nXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9EaWFsb2dBY3Rpb25zXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9EaWFsb2dDb250ZW50XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9EaWFsb2dDb250ZW50VGV4dFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvRGlhbG9nVGl0bGVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL0RpdmlkZXJcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL0lucHV0QmFzZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL1RhYlwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvVGFic1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvVG9vbHRpcFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC91c2VNZWRpYVF1ZXJ5XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQHJlZHV4anMvdG9vbGtpdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBzZW50cnkvcmVhY3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJmb3JtaWtcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJpMThuZXh0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiaTE4bmV4dC1icm93c2VyLWxhbmd1YWdlZGV0ZWN0b3JcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJpZHRva2VuLXZlcmlmaWVyXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwibW9tZW50LXRpbWV6b25lXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9jb21wb25lbnRzL3Jhdy1odG1sXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9hY3Rpb25zXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9tZXRob2RzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9hY3Rpb25zXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9tZXRob2RzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9xdWVyeS1hY3Rpb25zXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicC1saW1pdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInByb3AtdHlwZXNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0LWkxOG5leHRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC1pbmZpbml0ZS1zY3JvbGwtY29tcG9uZW50XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QtcXItY29kZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0LXJlZHV4XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QvanN4LXJ1bnRpbWVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWR1eFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlZHV4LXBlcnNpc3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWR1eC1wZXJzaXN0L2ludGVncmF0aW9uL3JlYWN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVkdXgtcGVyc2lzdC9saWIvc3RvcmFnZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInl1cFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay9ydW50aW1lL2NvbXBhdCBnZXQgZGVmYXVsdCBleHBvcnQiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay9ydW50aW1lL21ha2UgbmFtZXNwYWNlIG9iamVjdCIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFwibXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0XCIsIFtdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcIm15LW9yZGVycy10aWNrZXRzLXdpZGdldFwiXSA9IGZhY3RvcnkoKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJteS1vcmRlcnMtdGlja2V0cy13aWRnZXRcIl0gPSBmYWN0b3J5KCk7XG59KSh0aGlzLCAoKSA9PiB7XG5yZXR1cm4gIiwiaW1wb3J0IHtcbiAgYXV0aEVycm9ySGFuZGxlcixcbiAgY3JlYXRlQWN0aW9uLFxuICBkZWxldGVSZXF1ZXN0LFxuICBnZXRSZXF1ZXN0LFxuICBwdXRSZXF1ZXN0LFxuICBzdGFydExvYWRpbmcsXG4gIHN0b3BMb2FkaW5nXG59IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL2FjdGlvbnNcIjtcbmltcG9ydCBwTGltaXQgZnJvbSBcInAtbGltaXRcIjtcbmltcG9ydCB7IGdldElkVG9rZW4gfSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9tZXRob2RzXCI7XG5pbXBvcnQgeyBvYmplY3RUb1F1ZXJ5U3RyaW5nIH0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvbWV0aG9kc1wiO1xuaW1wb3J0IElkVG9rZW5WZXJpZmllciBmcm9tIFwiaWR0b2tlbi12ZXJpZmllclwiO1xuaW1wb3J0IGkxOG4gZnJvbSBcImkxOG5leHRcIjtcbmltcG9ydCB7IGF1dGhQcm9taXNlUmVqZWN0LCBnZXRBY2Nlc3NUb2tlblNhZmVseSB9IGZyb20gXCIuL3V0aWxzL2F1dGhcIjtcbmltcG9ydCB7XG4gIERFRkFVTFRfSVRFTVNfUEVSX1BBR0UsXG4gIEVSUk9SX0NPREVTLFxuICBGSUZUWV9QRVJfUEFHRSxcbiAgRklMVEVSX0FDVElPTixcbiAgRklSU1RfUEFHRSxcbiAgUFJPTUlTRV9CQVRDSF9MSU1JVFxufSBmcm9tIFwiLi91dGlscy9jb25zdGFudHNcIjtcblxuZXhwb3J0IGNvbnN0IFJFU0VUX1NUQVRFID0gXCJSRVNFVF9TVEFURVwiO1xuZXhwb3J0IGNvbnN0IFJFU0VUX0ZJTFRFUiA9IFwiUkVTRVRfRklMVEVSXCI7XG5leHBvcnQgY29uc3QgUkVTRVRfQVBJX0VSUk9SID0gXCJSRVNFVF9BUElfRVJST1JcIjtcbmV4cG9ydCBjb25zdCBTRVRfU1RBVEUgPSBcIlNFVF9TVEFURVwiO1xuZXhwb3J0IGNvbnN0IFNFVF9BUElfRVJST1IgPSBcIlNFVF9BUElfRVJST1JcIjtcbmV4cG9ydCBjb25zdCBDSEFOR0VfRklMVEVSID0gXCJDSEFOR0VfRklMVEVSXCI7XG5leHBvcnQgY29uc3QgQ0hBTkdFX1NPUlQgPSBcIkNIQU5HRV9TT1JUXCI7XG5cbi8vIE9SREVSUyBDT05TVFNcbmV4cG9ydCBjb25zdCBHRVRfVVNFUl9PUkRFUlMgPSBcIkdFVF9PUkRFUlNcIjtcbmV4cG9ydCBjb25zdCBSRUZVTkRfT1JERVIgPSBcIlJFRlVORF9PUkRFUlwiO1xuZXhwb3J0IGNvbnN0IFNFVF9BQ1RJVkVfT1JERVJfSUQgPSBcIlNFVF9BQ1RJVkVfT1JERVJfSURcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVVNFUl9PUkRFUlMgPSBcIkZJTFRFUl9VU0VSX09SREVSU1wiO1xuXG4vLyBUSUNLRVRTIENPTlNUU1xuZXhwb3J0IGNvbnN0IEdFVF9NWV9BU1NJR05FRF9USUNLRVRTID0gXCJHRVRfTVlfQVNTSUdORURfVElDS0VUU1wiO1xuZXhwb3J0IGNvbnN0IFVQREFURV9USUNLRVQgPSBcIlVQREFURV9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBSRVNFVF9USUNLRVQgPSBcIlJFU0VUX1RJQ0tFVFwiO1xuZXhwb3J0IGNvbnN0IFJFQ0VJVkVfVElDS0VUID0gXCJSRUNFSVZFX1RJQ0tFVFwiO1xuZXhwb3J0IGNvbnN0IFJFTU9WRV9USUNLRVRfQVRURU5ERUUgPSBcIlJFTU9WRV9USUNLRVRfQVRURU5ERUVcIjtcbmV4cG9ydCBjb25zdCBBU1NJR05fVElDS0VUID0gXCJBU1NJR05fVElDS0VUXCI7XG5leHBvcnQgY29uc3QgREVMRUdBVEVfVElDS0VUID0gXCJERUxFR0FURV9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBSRUZVTkRfVElDS0VUID0gXCJSRUZVTkRfVElDS0VUXCI7XG5leHBvcnQgY29uc3QgUkVTRU5EX05PVElGSUNBVElPTiA9IFwiUkVTRU5EX05PVElGSUNBVElPTlwiO1xuZXhwb3J0IGNvbnN0IEdFVF9USUNLRVRTX0JZX09SREVSID0gXCJHRVRfVElDS0VUU19CWV9PUkRFUlwiO1xuZXhwb3J0IGNvbnN0IEdFVF9USUNLRVRTX0JZX09SREVSX0VSUk9SID0gXCJHRVRfVElDS0VUU19CWV9PUkRFUl9FUlJPUlwiO1xuZXhwb3J0IGNvbnN0IEdFVF9PUkRFUl9USUNLRVRfREVUQUlMUyA9IFwiR0VUX09SREVSX1RJQ0tFVF9ERVRBSUxTXCI7XG5leHBvcnQgY29uc3QgR0VUX1RJQ0tFVF9ERVRBSUxTID0gXCJHRVRfVElDS0VUX0RFVEFJTFNcIjtcbmV4cG9ydCBjb25zdCBSRUNFSVZFX0VYVFJBX1FVRVNUSU9OUyA9IFwiUkVDRUlWRV9FWFRSQV9RVUVTVElPTlNcIjtcbmV4cG9ydCBjb25zdCBUSUNLRVRfQVRURU5ERUVfS0VZUyA9IHtcbiAgZW1haWw6IFwiYXR0ZW5kZWVfZW1haWxcIixcbiAgZmlyc3ROYW1lOiBcImF0dGVuZGVlX2ZpcnN0X25hbWVcIixcbiAgbGFzdE5hbWU6IFwiYXR0ZW5kZWVfbGFzdF9uYW1lXCIsXG4gIGNvbXBhbnk6IFwiYXR0ZW5kZWVfY29tcGFueVwiLFxuICBkaXNjbGFpbWVyQWNjZXB0ZWQ6IFwiZGlzY2xhaW1lcl9hY2NlcHRlZFwiLFxuICBleHRyYVF1ZXN0aW9uczogXCJleHRyYV9xdWVzdGlvbnNcIlxufTtcbmV4cG9ydCBjb25zdCBVUERBVEVfVElDS0VUU19SRUZVTkRfUkVRVUVTVEVEID1cbiAgXCJVUERBVEVfVElDS0VUU19SRUZVTkRfUkVRVUVTVEVEXCI7XG5cbi8vIFVTRVIgQ09OVFNcbmV4cG9ydCBjb25zdCBTVEFSVF9MT0FESU5HX0lEUF9QUk9GSUxFID0gXCJTVEFSVF9MT0FESU5HX0lEUF9QUk9GSUxFXCI7XG5leHBvcnQgY29uc3QgU1RPUF9MT0FESU5HX0lEUF9QUk9GSUxFID0gXCJTVE9QX0xPQURJTkdfSURQX1BST0ZJTEVcIjtcbmV4cG9ydCBjb25zdCBVUERBVEVfSURQX1BST0ZJTEUgPSBcIlVQREFURV9JRFBfUFJPRklMRVwiO1xuZXhwb3J0IGNvbnN0IFNFVF9VU0VSID0gXCJTRVRfVVNFUlwiO1xuXG4vLyBTVU1NSVQgQ09OU1RTXG5leHBvcnQgY29uc3QgU0VUX1NVTU1JVCA9IFwiU0VUX1NVTU1JVFwiO1xuZXhwb3J0IGNvbnN0IEdFVF9NQUlOX0VYVFJBX1FVRVNUSU9OUyA9IFwiR0VUX01BSU5fRVhUUkFfUVVFU1RJT05TXCI7XG5leHBvcnQgY29uc3QgUkVDRUlWRV9NQVJLRVRJTkdfU0VUVElOR1MgPSBcIlJFQ0VJVkVfTUFSS0VUSU5HX1NFVFRJTkdTXCI7XG5leHBvcnQgY29uc3QgQ0xFQVJfTUFSS0VUSU5HX1NFVFRJTkdTID0gXCJDTEVBUl9NQVJLRVRJTkdfU0VUVElOR1NcIjtcblxuZXhwb3J0IGNvbnN0IHJlc2V0VGlja2V0ID0gKCkgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihSRVNFVF9USUNLRVQpKHt9KSk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVzZXRTdGF0ZSA9ICgpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oUkVTRVRfU1RBVEUpKHt9KSk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVzZXRGaWx0ZXIgPSAoKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFJFU0VUX0ZJTFRFUikoe30pKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZXNldEVycm9yID0gKCkgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihSRVNFVF9BUElfRVJST1IpKHt9KSk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2V0UmVkdWNlclN0YXRlID0gKHN1bW1pdCwgdXNlcikgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihTRVRfU1RBVEUpKHsgc3VtbWl0LCB1c2VyIH0pKTtcbn07XG5cbi8vIEZJTFRFUiAvIFNPUlQgQ09OU1RBTlRTXG5leHBvcnQgY29uc3QgRklMVEVSX1ZBUl9EQVRFID0gXCJGSUxURVJfVkFSX0RBVEVcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkUgPSBcIkZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRVwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfVElDS0VUX1RZUEUgPSBcIkZJTFRFUl9WQVJfVElDS0VUX1RZUEVcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRCA9IFwiRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORURcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX09XTkVSX1NUQVRVUyA9IFwiRklMVEVSX1ZBUl9PV05FUl9TVEFUVVNcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX1BST01PQ09ERSA9IFwiRklMVEVSX1ZBUl9QUk9NT0NPREVcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX0ZSRUVfUEFJRCA9IFwiRklMVEVSX1ZBUl9GUkVFX1BBSURcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX09SREVSX05VTUJFUiA9IFwiRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJcIjtcblxuLy8gRklMVEVSIC8gU09SVCBBQ1RJT05TXG5leHBvcnQgY29uc3QgY2hhbmdlRmlsdGVyID0gKGZpbHRlcikgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihDSEFOR0VfRklMVEVSKShmaWx0ZXIpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjaGFuZ2VTb3J0ID0gKHNvcnQpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oQ0hBTkdFX1NPUlQpKHNvcnQpKTtcbn07XG5cbi8vIEZJTFRFUi9TT1JUIFBBUlNFXG5jb25zdCBwYXJzZUZpbHRlciA9IChmaWx0ZXJPYmosIGZpbHRlckFjdGlvbikgPT4ge1xuICBjb25zdCBmaWx0ZXIgPSBbXTtcbiAgaWYgKGZpbHRlck9iai5GSUxURVJfVkFSX0RBVEUpIHtcbiAgICBmaWx0ZXIucHVzaChgY3JlYXRlZFtdJHtmaWx0ZXJPYmoubG93ZXJ9JiYke2ZpbHRlck9iai51cHBlcn1gKTtcbiAgfVxuICBpZiAoXG4gICAgZmlsdGVyT2JqLkZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRSAmJlxuICAgIGZpbHRlck9iai5GSUxURVJfVkFSX0JBREdFX0ZFQVRVUkUubGVuZ3RoID4gMFxuICApIHtcbiAgICBjb25zdCBmaWx0ZXJOYW1lID1cbiAgICAgIGZpbHRlckFjdGlvbiA9PT0gRklMVEVSX0FDVElPTi5PUkRFUlNcbiAgICAgICAgPyBcInRpY2tldHNfYmFkZ2VfZmVhdHVyZXNfaWRcIlxuICAgICAgICA6IFwiYmFkZ2VfZmVhdHVyZXNfaWRcIjtcbiAgICBmaWx0ZXIucHVzaChcbiAgICAgIGAke2ZpbHRlck5hbWV9PT0ke2ZpbHRlck9iai5GSUxURVJfVkFSX0JBREdFX0ZFQVRVUkUuam9pbihcInx8XCIpfWBcbiAgICApO1xuICB9XG4gIGlmIChcbiAgICBmaWx0ZXJPYmouRklMVEVSX1ZBUl9USUNLRVRfVFlQRSAmJlxuICAgIGZpbHRlck9iai5GSUxURVJfVkFSX1RJQ0tFVF9UWVBFLmxlbmd0aCA+IDBcbiAgKSB7XG4gICAgY29uc3QgZmlsdGVyTmFtZSA9XG4gICAgICBmaWx0ZXJBY3Rpb24gPT09IEZJTFRFUl9BQ1RJT04uT1JERVJTXG4gICAgICAgID8gXCJ0aWNrZXRzX3R5cGVfaWRcIlxuICAgICAgICA6IFwidGlja2V0X3R5cGVfaWRcIjtcbiAgICBmaWx0ZXIucHVzaChcbiAgICAgIGAke2ZpbHRlck5hbWV9PT0ke2ZpbHRlck9iai5GSUxURVJfVkFSX1RJQ0tFVF9UWVBFLmpvaW4oXCJ8fFwiKX1gXG4gICAgKTtcbiAgfVxuICBpZiAoZmlsdGVyT2JqLkZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEKSB7XG4gICAgY29uc3QgZmlsdGVyTmFtZSA9XG4gICAgICBmaWx0ZXJBY3Rpb24gPT09IEZJTFRFUl9BQ1RJT04uT1JERVJTXG4gICAgICAgID8gXCJ0aWNrZXRzX2Fzc2lnbmVkX3RvXCJcbiAgICAgICAgOiBcImFzc2lnbmVkX3RvXCI7XG4gICAgZmlsdGVyLnB1c2goYCR7ZmlsdGVyTmFtZX09PSR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEfWApO1xuICB9XG4gIGlmIChmaWx0ZXJPYmouRklMVEVSX1ZBUl9PV05FUl9TVEFUVVMpIHtcbiAgICBjb25zdCBmaWx0ZXJOYW1lID1cbiAgICAgIGZpbHRlckFjdGlvbiA9PT0gRklMVEVSX0FDVElPTi5PUkRFUlNcbiAgICAgICAgPyBcInRpY2tldHNfb3duZXJfc3RhdHVzXCJcbiAgICAgICAgOiBcIm93bmVyX3N0YXR1c1wiO1xuICAgIGZpbHRlci5wdXNoKGAke2ZpbHRlck5hbWV9PT0ke2ZpbHRlck9iai5GSUxURVJfVkFSX09XTkVSX1NUQVRVU31gKTtcbiAgfVxuICBpZiAoZmlsdGVyT2JqLkZJTFRFUl9WQVJfRlJFRV9QQUlEKSB7XG4gICAgY29uc3QgZmlsdGVyTmFtZSA9XG4gICAgICBmaWx0ZXJBY3Rpb24gPT09IEZJTFRFUl9BQ1RJT04uT1JERVJTID8gXCJhbW91bnRcIiA6IFwiZmluYWxfYW1vdW50XCI7XG4gICAgZmlsdGVyLnB1c2goXG4gICAgICBgJHtmaWx0ZXJOYW1lfSR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfRlJFRV9QQUlEID09PSBcIkZyZWVcIiA/IFwiPT0wXCIgOiBcIj4wXCJ9YFxuICAgICk7XG4gIH1cbiAgaWYgKGZpbHRlck9iai5GSUxURVJfVkFSX1BST01PQ09ERSkge1xuICAgIGNvbnN0IGZpbHRlck5hbWUgPVxuICAgICAgZmlsdGVyQWN0aW9uID09PSBGSUxURVJfQUNUSU9OLk9SREVSU1xuICAgICAgICA/IFwidGlja2V0c19wcm9tb19jb2RlXCJcbiAgICAgICAgOiBcInByb21vX2NvZGVcIjtcbiAgICBmaWx0ZXIucHVzaChgJHtmaWx0ZXJOYW1lfT1AJHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9QUk9NT0NPREV9YCk7XG4gIH1cbiAgaWYgKGZpbHRlck9iai5GSUxURVJfVkFSX09SREVSX05VTUJFUikge1xuICAgIGxldCBpbnB1dEZpbHRlcnMgPSBcIlwiO1xuXG4gICAgc3dpdGNoIChmaWx0ZXJBY3Rpb24pIHtcbiAgICAgIGNhc2UgRklMVEVSX0FDVElPTi5PUkRFUlM6IHtcbiAgICAgICAgaW5wdXRGaWx0ZXJzID0gYG51bWJlcj1AJHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJ9LHRpY2tldHNfb3duZXJfZW1haWw9QCR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfT1JERVJfTlVNQkVSfSx0aWNrZXRzX251bWJlcj1AJHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJ9YDtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIEZJTFRFUl9BQ1RJT04uVElDS0VUU19CWV9PUkRFUlM6IHtcbiAgICAgICAgaW5wdXRGaWx0ZXJzID0gYG51bWJlcj1AJHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJ9LG93bmVyX2VtYWlsPUAke2ZpbHRlck9iai5GSUxURVJfVkFSX09SREVSX05VTUJFUn1gO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgRklMVEVSX0FDVElPTi5FWFRFUk5BTF9USUNLRVRTOiB7XG4gICAgICAgIGlucHV0RmlsdGVycyA9IGBvcmRlcl9udW1iZXI9QCR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfT1JERVJfTlVNQkVSfSxudW1iZXI9QCR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfT1JERVJfTlVNQkVSfSxvcmRlcl9vd25lcl9lbWFpbD1AJHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJ9YDtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgZmlsdGVyLnB1c2goaW5wdXRGaWx0ZXJzKTtcbiAgfVxuICByZXR1cm4gZmlsdGVyO1xufTtcblxuY29uc3QgZ2V0U29ydERpcmVjdGlvbiA9IChkaXJlY3Rpb24pID0+IChkaXJlY3Rpb24gPT09IFwiYXNjXCIgPyBcIitcIiA6IFwiLVwiKTtcblxuLy8gcGF5bG9hZDogeyBodHRwQ29kZSwgdGl0bGUsIGh0bWw6IGNvbnRlbnQsIHR5cGUgfVxuY29uc3QgZXJyb3JIYW5kbGVyTm90aWZ5ID0gKHBheWxvYWQsIGNhbGxiYWNrKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFNFVF9BUElfRVJST1IpKHBheWxvYWQpKTtcbiAgaWYgKGNhbGxiYWNrKSBjYWxsYmFjaygpO1xufTtcblxuY29uc3QgY3VzdG9tQXV0aEVycm9ySGFuZGxlciA9IChlcnIsIHJlcykgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGF1dGhFcnJvckhhbmRsZXIoZXJyLCByZXMsIGVycm9ySGFuZGxlck5vdGlmeSkpO1xufTtcblxuY29uc3QgY3VzdG9tRmV0Y2hFcnJvckhhbmRsZXIgPSAocmVzcG9uc2UpID0+IChkaXNwYXRjaCkgPT4ge1xuICBjb25zdCBjb2RlID0gcmVzcG9uc2Uuc3RhdHVzO1xuICBsZXQgbXNnO1xuICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgc3dpdGNoIChjb2RlKSB7XG4gICAgY2FzZSBFUlJPUl9DT0RFU1tcIjQwM1wiXTpcbiAgICAgIG1zZyA9IGkxOG4udChcImVycm9ycy51c2VyX25vdF9hdXRoelwiKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgRVJST1JfQ09ERVNbXCI0MDFcIl06XG4gICAgICBtc2cgPSBpMThuLnQoXCJlcnJvcnMuc2Vzc2lvbl9leHBpcmVkXCIpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBFUlJPUl9DT0RFU1tcIjQxMlwiXTpcbiAgICAgIG1zZyA9IFwiXCI7XG4gICAgICBPYmplY3QuZW50cmllcyhyZXNwb25zZS5lcnJvcnMpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICBpZiAoTnVtYmVyLmlzTmFOKGtleSkpIHtcbiAgICAgICAgICBtc2cgPSBgJHttc2d9ICR7a2V5fTogYDtcbiAgICAgICAgfVxuXG4gICAgICAgIG1zZyA9IGAke21zZ30gJHt2YWx1ZX0gPGJyPmA7XG4gICAgICB9KTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgRVJST1JfQ09ERVNbXCI1MDBcIl06XG4gICAgICBtc2cgPSBpMThuLnQoXCJlcnJvcnMuc2VydmVyX2Vycm9yXCIpO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIG1zZyA9IHJlc3BvbnNlLnN0YXR1c1RleHQ7XG4gIH1cblxuICBkaXNwYXRjaChlcnJvckhhbmRsZXJOb3RpZnkoeyB0aXRsZTogaTE4bi50KFwiZXJyb3JzLmVycm9yXCIpLCBodG1sOiBtc2cgfSkpO1xufTtcblxuLy8gT1JERVJTIEFDVElPTlNcbmV4cG9ydCBjb25zdCBnZXRVc2VyT3JkZXJzID1cbiAgKFxuICAgIHtcbiAgICAgIHBhZ2UgPSBGSVJTVF9QQUdFLFxuICAgICAgcGVyUGFnZSA9IERFRkFVTFRfSVRFTVNfUEVSX1BBR0UsXG4gICAgICBmaWx0ZXIgPSB7fSxcbiAgICAgIHNvcnQgPSB7fVxuICAgIH0sXG4gICAgc2tpcExvYWRpbmdcbiAgKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHdpZGdldFN0YXRlOiB7IHN1bW1pdCB9XG4gICAgfSA9IGdldFN0YXRlKCk7XG5cbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gYXV0aFByb21pc2VSZWplY3QoKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgb3JkZXI6IFwiLWNyZWF0ZWRcIixcbiAgICAgIFwiZmlsdGVyW11cIjogW1wic3RhdHVzPT1QYWlkXCJdLFxuICAgICAgcmVsYXRpb25zOiBcImFwcGxpZWRfdGF4ZXMsbm9uZVwiLFxuICAgICAgZmllbGRzOlxuICAgICAgICBcImlkLGNyZWF0ZWQsbnVtYmVyLGFtb3VudCxjdXJyZW5jeSx0YXhlc19hbW91bnQsZGlzY291bnRfYW1vdW50LHRpY2tldHNfZXhjZXJwdF9ieV90aWNrZXRfdHlwZSxyZWZ1bmRlZF9hbW91bnQscmF3X2Ftb3VudCxhcHBsaWVkX3RheGVzLmlkLGFwcGxpZWRfdGF4ZXMubmFtZSxhcHBsaWVkX3RheGVzLmFtb3VudFwiLFxuICAgICAgcGFnZSxcbiAgICAgIHBlcl9wYWdlOiBwZXJQYWdlXG4gICAgfTtcblxuICAgIGlmIChPYmplY3Qua2V5cyhmaWx0ZXIpLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZpbHRlcnMgPSBwYXJzZUZpbHRlcihmaWx0ZXIsIEZJTFRFUl9BQ1RJT04uT1JERVJTKTtcbiAgICAgIHBhcmFtc1tcImZpbHRlcltdXCJdID0gWy4uLnBhcmFtc1tcImZpbHRlcltdXCJdLCAuLi5maWx0ZXJzXTtcbiAgICB9XG4gICAgaWYgKE9iamVjdC5rZXlzKHNvcnQpLmxlbmd0aCA+IDApIHtcbiAgICAgIHBhcmFtcy5vcmRlciA9IGAke2dldFNvcnREaXJlY3Rpb24oc29ydC5kaXJlY3Rpb24pfSR7c29ydC5uYW1lfWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdldFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKEdFVF9VU0VSX09SREVSUyksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy8ke3N1bW1pdC5pZH0vb3JkZXJzL21lYCxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXIsXG4gICAgICB7IGZpbHRlciwgc29ydCB9XG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKHBheWxvYWQpID0+IHBheWxvYWQpXG4gICAgICAuY2F0Y2goKGUpID0+IGUpXG4gICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgIGlmICghc2tpcExvYWRpbmcpIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBzZXRBY3RpdmVPcmRlcklkID0gKG9yZGVySWQpID0+IGFzeW5jIChkaXNwYXRjaCkgPT5cbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFNFVF9BQ1RJVkVfT1JERVJfSUQpKG9yZGVySWQpKTtcblxuLy8gVVNFUiBBQ1RJT05TXG5leHBvcnQgY29uc3Qgc2V0VXNlciA9ICh1c2VyKSA9PiAoZGlzcGF0Y2gpID0+XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihTRVRfVVNFUikodXNlcikpO1xuXG4vLyBUSUNLRVQgQUNUSU9OU1xuXG5leHBvcnQgY29uc3QgZ2V0VXNlclRpY2tldHMgPVxuICAoXG4gICAge1xuICAgICAgcGFnZSA9IEZJUlNUX1BBR0UsXG4gICAgICBwZXJQYWdlID0gREVGQVVMVF9JVEVNU19QRVJfUEFHRSxcbiAgICAgIGZpbHRlciA9IHt9LFxuICAgICAgc29ydCA9IHt9XG4gICAgfSxcbiAgICBza2lwTG9hZGluZ1xuICApID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgd2lkZ2V0U3RhdGU6IHsgc3VtbWl0LCB1c2VyIH1cbiAgICB9ID0gZ2V0U3RhdGUoKTtcbiAgICBjb25zdCB7IHVzZXJQcm9maWxlIH0gPSB1c2VyO1xuICAgIGlmICghc3VtbWl0KSByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gYXV0aFByb21pc2VSZWplY3QoKTtcblxuICAgIGNvbnN0IGZpZWxkcyA9IFtcbiAgICAgIFwib3JkZXIuaWRcIixcbiAgICAgIFwib3JkZXIub3duZXJfZmlyc3RfbmFtZVwiLFxuICAgICAgXCJvcmRlci5vd25lcl9sYXN0X25hbWVcIixcbiAgICAgIFwib3JkZXIub3duZXJfZW1haWxcIixcbiAgICAgIFwib3duZXIuaWRcIixcbiAgICAgIFwib3duZXIuZW1haWxcIixcbiAgICAgIFwib3duZXIuZmlyc3RfbmFtZVwiLFxuICAgICAgXCJvd25lci5sYXN0X25hbWVcIixcbiAgICAgIFwib3duZXIuc3RhdHVzXCIsXG4gICAgICBcImJhZGdlLm5vbmVcIlxuICAgIF07XG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBcImZpbHRlcltdXCI6IFtcInN0YXR1cz09UGFpZFwiLCBgb3JkZXJfb3duZXJfaWQ8PiR7dXNlclByb2ZpbGUuaWR9YF0sXG4gICAgICBleHBhbmQ6IFwib3JkZXIsb3duZXIsdGlja2V0X3R5cGUsYmFkZ2UsYmFkZ2UuZmVhdHVyZXNcIixcbiAgICAgIG9yZGVyOiBcIi1pZFwiLFxuICAgICAgZmllbGRzOiBmaWVsZHMuam9pbihcIixcIiksXG4gICAgICByZWxhdGlvbnM6IFwibm9uZSxiYWRnZS5mZWF0dXJlc1wiLFxuICAgICAgcGFnZSxcbiAgICAgIHBlcl9wYWdlOiBwZXJQYWdlXG4gICAgfTtcbiAgICBpZiAoT2JqZWN0LmtleXMoZmlsdGVyKS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBmaWx0ZXJzID0gcGFyc2VGaWx0ZXIoZmlsdGVyLCBGSUxURVJfQUNUSU9OLkVYVEVSTkFMX1RJQ0tFVFMpO1xuICAgICAgcGFyYW1zW1wiZmlsdGVyW11cIl0gPSBbLi4ucGFyYW1zW1wiZmlsdGVyW11cIl0sIC4uLmZpbHRlcnNdO1xuICAgIH1cbiAgICBpZiAoT2JqZWN0LmtleXMoc29ydCkubGVuZ3RoID4gMCkge1xuICAgICAgcGFyYW1zLm9yZGVyID0gYCR7Z2V0U29ydERpcmVjdGlvbihzb3J0LmRpcmVjdGlvbil9JHtzb3J0Lm5hbWV9YDtcbiAgICB9XG4gICAgcmV0dXJuIGdldFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKEdFVF9NWV9BU1NJR05FRF9USUNLRVRTKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzLyR7c3VtbWl0LmlkfS9vcmRlcnMvYWxsL3RpY2tldHMvbWVgLFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC5jYXRjaCgoZSkgPT4gZSlcbiAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgaWYgKCFza2lwTG9hZGluZykgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldHNCeU9yZGVyID1cbiAgKHtcbiAgICBvcmRlcklkLFxuICAgIHBhZ2UgPSBGSVJTVF9QQUdFLFxuICAgIHBlclBhZ2UgPSBERUZBVUxUX0lURU1TX1BFUl9QQUdFLFxuICAgIGZpbHRlcixcbiAgICBzb3J0XG4gIH0pID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBhdXRoUHJvbWlzZVJlamVjdCgpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIFwiZmlsdGVyW11cIjogW10sXG4gICAgICBmaWVsZHM6IFwiYmFkZ2Uubm9uZVwiLFxuICAgICAgZXhwYW5kOlxuICAgICAgICBcInJlZnVuZF9yZXF1ZXN0cyxyZWZ1bmRfcmVxdWVzdHMucmVmdW5kZWRfdGF4ZXMscmVmdW5kX3JlcXVlc3RzLnJlZnVuZGVkX3RheGVzLnRheCxvd25lcixvd25lci5leHRyYV9xdWVzdGlvbnMsYmFkZ2UsYmFkZ2UuZmVhdHVyZXMsdGlja2V0X3R5cGVcIixcbiAgICAgIG9yZGVyOiBcIitpZFwiLFxuICAgICAgcmVsYXRpb25zOiBcIm5vbmUsYmFkZ2UuZmVhdHVyZXNcIixcbiAgICAgIHBhZ2UsXG4gICAgICBwZXJfcGFnZTogcGVyUGFnZVxuICAgIH07XG4gICAgaWYgKE9iamVjdC5rZXlzKGZpbHRlcikubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZmlsdGVycyA9IHBhcnNlRmlsdGVyKGZpbHRlciwgRklMVEVSX0FDVElPTi5USUNLRVRTX0JZX09SREVSUyk7XG4gICAgICBwYXJhbXNbXCJmaWx0ZXJbXVwiXSA9IFsuLi5wYXJhbXNbXCJmaWx0ZXJbXVwiXSwgLi4uZmlsdGVyc107XG4gICAgfVxuICAgIGlmIChPYmplY3Qua2V5cyhzb3J0KS5sZW5ndGggPiAwKSB7XG4gICAgICBwYXJhbXMub3JkZXIgPSBgJHtnZXRTb3J0RGlyZWN0aW9uKHNvcnQuZGlyZWN0aW9uKX0ke3NvcnQubmFtZX1gO1xuICAgIH1cbiAgICByZXR1cm4gZ2V0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oR0VUX1RJQ0tFVFNfQllfT1JERVIpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHNgLFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihHRVRfVElDS0VUU19CWV9PUkRFUl9FUlJPUikpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgcmVzZW5kTm90aWZpY2F0aW9uID1cbiAgKHRpY2tldCkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gYXV0aFByb21pc2VSZWplY3QoKTtcblxuICAgIGNvbnN0IHsgbWVzc2FnZSB9ID0gdGlja2V0O1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3Qgb3JkZXJJZCA9IHRpY2tldC5vcmRlciA/IHRpY2tldC5vcmRlci5pZCA6IHRpY2tldC5vcmRlcl9pZDtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW5cbiAgICB9O1xuXG4gICAgcmV0dXJuIHB1dFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKFJFU0VORF9OT1RJRklDQVRJT04pLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXQuaWR9L2F0dGVuZGVlL3JlaW52aXRlYCxcbiAgICAgIHsgbWVzc2FnZSB9LFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgcmVmdW5kVGlja2V0ID1cbiAgKHsgdGlja2V0IH0pID0+XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBhdXRoUHJvbWlzZVJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3Qgb3JkZXJJZCA9IHRpY2tldC5vcmRlciA/IHRpY2tldC5vcmRlci5pZCA6IHRpY2tldC5vcmRlcl9pZDtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6IFwicmVmdW5kX3JlcXVlc3RzLHRpY2tldF90eXBlXCIsXG4gICAgICBmaWVsZHM6IFwicmVmdW5kX3JlcXVlc3RzLnN0YXR1c1wiXG4gICAgfTtcblxuICAgIHJldHVybiBkZWxldGVSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihSRUZVTkRfVElDS0VUKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzLyR7dGlja2V0LmlkfS9yZWZ1bmRgLFxuICAgICAge30sXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKHBheWxvYWQpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IHJlZnVuZEJ1bGtUaWNrZXRzID1cbiAgKHsgdGlja2V0cyB9KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gpID0+IHtcbiAgICBjb25zdCBsaW1pdCA9IHBMaW1pdChQUk9NSVNFX0JBVENIX0xJTUlUKTtcbiAgICBjb25zdCBhbGxSZWZ1bmRUaWNrZXRDYWxscyA9IHRpY2tldHMubWFwKCh0aWNrZXQpID0+XG4gICAgICBsaW1pdCgoKSA9PiBkaXNwYXRjaChyZWZ1bmRUaWNrZXQoeyB0aWNrZXQgfSkpKVxuICAgICk7XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFsuLi5hbGxSZWZ1bmRUaWNrZXRDYWxsc10pXG4gICAgICAudGhlbigocmVzKSA9PiB7XG4gICAgICAgIGNvbnN0IHN1Y2Nlc3NmdWxseVJlcXVlc3RlZCA9IHJlc1xuICAgICAgICAgIC5maWx0ZXIoKHIpID0+IHIucmVzcG9uc2U/LnJlZnVuZF9yZXF1ZXN0cz8ubGVuZ3RoKVxuICAgICAgICAgIC5tYXAoKHIpID0+IHIucmVzcG9uc2UpO1xuICAgICAgICByZXR1cm4gc3VjY2Vzc2Z1bGx5UmVxdWVzdGVkO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4gZSk7XG4gIH07XG5cbi8vIHVwZGF0ZSB0aGUgdGlja2V0cyB0aGF0IGhhdmUgYmVlbiBzdWNlc3NmdWxseSByZWZ1bmRlZFxuZXhwb3J0IGNvbnN0IHVwZGF0ZVRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQgPVxuICAodGlja2V0c1JlZnVuZFJlcXVlc3RlZCkgPT4gKGRpc3BhdGNoKSA9PlxuICAgIGRpc3BhdGNoKFxuICAgICAgY3JlYXRlQWN0aW9uKFVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURUQpKHRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQpXG4gICAgKTtcblxuLy8gU1VNTUlUIEFDVElPTlNcblxuZXhwb3J0IGNvbnN0IGdldEV4dHJhUXVlc3Rpb25zID1cbiAgKGF0dGVuZGVlSWQpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgd2lkZ2V0U3RhdGU6IHsgc3VtbWl0IH1cbiAgICB9ID0gZ2V0U3RhdGUoKTtcblxuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBhdXRoUHJvbWlzZVJlamVjdCgpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgcGFnZTogMSxcbiAgICAgIHBlcl9wYWdlOiBGSUZUWV9QRVJfUEFHRSxcbiAgICAgIGV4cGFuZDogXCIqc3ViX3F1ZXN0aW9uX3J1bGVzLCpzdWJfcXVlc3Rpb24sKnZhbHVlc1wiLFxuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIFwiZmlsdGVyW11cIjogXCJ0aWNrZXRzX2V4Y2x1ZGVfaW5hY3RpdmVzPT10cnVlXCJcbiAgICB9O1xuXG4gICAgY29uc3QgZW5kcG9pbnQgPSBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy8ke3N1bW1pdC5pZH0vYXR0ZW5kZWVzLyR7YXR0ZW5kZWVJZH0vYWxsb3dlZC1leHRyYS1xdWVzdGlvbnNgO1xuXG4gICAgcmV0dXJuIGdldFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKFJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TKSxcbiAgICAgIGVuZHBvaW50LFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaCkudGhlbigoKSA9PiB7XG4gICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldCA9XG4gICh0aWNrZXRJZCwgb3JkZXJJZCkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gYXV0aFByb21pc2VSZWplY3QoKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6XG4gICAgICAgIFwib3duZXIsb3duZXIuZXh0cmFfcXVlc3Rpb25zLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbix0aWNrZXRfdHlwZSxvcmRlcixwcm9tb19jb2RlXCIsXG4gICAgICByZWxhdGlvbnM6XG4gICAgICAgIFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5ub25lLHByb21vX2NvZGUubm9uZSx0aWNrZXRfdHlwZS5ub25lXCIsXG4gICAgICBmaWVsZHM6XG4gICAgICAgIFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLmlkLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5uYW1lLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi50eXBlLHByb21vX2NvZGUuaWQscHJvbW9fY29kZS5jb2RlLHByb21vX2NvZGUuYWxsb3dzX3RvX2RlbGVnYXRlLHByb21vX2NvZGUuYWxsb3dzX3RvX3JlYXNzaWduLHRpY2tldF90eXBlLmlkLHRpY2tldF90eXBlLm5hbWUsdGlja2V0X3R5cGUuYWxsb3dzX3RvX2RlbGVnYXRlLHRpY2tldF90eXBlLmFsbG93c190b19yZWFzc2lnbix0aWNrZXRfdHlwZS5jb3N0LHRpY2tldF90eXBlLmNyZWF0ZWRcIlxuICAgIH07XG5cbiAgICBjb25zdCBlbmRwb2ludCA9IGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzLyR7dGlja2V0SWR9YDtcblxuICAgIHJldHVybiBnZXRSZXF1ZXN0KFxuICAgICAgY3JlYXRlQWN0aW9uKFJFU0VUX1RJQ0tFVCksXG4gICAgICBjcmVhdGVBY3Rpb24oUkVDRUlWRV9USUNLRVQpLFxuICAgICAgZW5kcG9pbnQsXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKS5maW5hbGx5KCgpID0+IHtcbiAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgIH0pO1xuICB9O1xuXG5jb25zdCBub3JtYWxpemVUaWNrZXQgPSAoZW50aXR5KSA9PiB7XG4gIGNvbnN0IG5vcm1hbGl6ZWRFbnRpdHkgPSB7IC4uLmVudGl0eSB9O1xuXG4gIGlmICghZW50aXR5LmF0dGVuZGVlX2NvbXBhbnkuaWQpIHtcbiAgICBub3JtYWxpemVkRW50aXR5LmF0dGVuZGVlX2NvbXBhbnkgPSBlbnRpdHkuYXR0ZW5kZWVfY29tcGFueTtcbiAgfSBlbHNlIHtcbiAgICBkZWxldGUgbm9ybWFsaXplZEVudGl0eS5hdHRlbmRlZV9jb21wYW55O1xuICAgIG5vcm1hbGl6ZWRFbnRpdHkuYXR0ZW5kZWVfY29tcGFueV9pZCA9IGVudGl0eS5hdHRlbmRlZV9jb21wYW55LmlkO1xuICB9XG5cbiAgcmV0dXJuIG5vcm1hbGl6ZWRFbnRpdHk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVmcmVzaFByb2ZpbGUgPVxuICAoZGF0YSwgY29tcGFueSwgdGlja2V0T3duZXIpID0+XG4gIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgdXBkYXRlUHJvZmlsZSB9KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgd2lkZ2V0U3RhdGU6IHsgdXNlciB9XG4gICAgfSA9IGdldFN0YXRlKCk7XG4gICAgY29uc3QgeyB1c2VyUHJvZmlsZSB9ID0gdXNlcjtcblxuICAgIC8vIGVtYWlsIHNob3VsZCBtYXRjaCAoIG9ubHkgdXBkYXRlIG15IHByb2ZpbGUgaXMgdGlja2V0IGJlbG9uZ3MgdG8gbWUhKVxuICAgIC8vIGFuZCBpZiB0aGUgdGlja2V0IGRvZXNuJ3QgaGF2ZSBhIG1hbmFnZXJcbiAgICAvLyBDaGVjayBpZiB0aGVyZSdzIGNoYW5nZXMgaW4gdGhlIHRpY2tldCBkYXRhIHRvIHVwZGF0ZSB0aGUgcHJvZmlsZVxuICAgIGNvbnN0IHtcbiAgICAgIGF0dGVuZGVlX2VtYWlsLFxuICAgICAgYXR0ZW5kZWVfZmlyc3RfbmFtZSxcbiAgICAgIGF0dGVuZGVlX2xhc3RfbmFtZSxcbiAgICAgIGF0dGVuZGVlX2NvbXBhbnlcbiAgICB9ID0gZGF0YTtcbiAgICBjb25zdCBoYXNNYW5hZ2VyID0gdGlja2V0T3duZXI/Lm1hbmFnZXI/LmlkIHx8IHRpY2tldE93bmVyPy5tYW5hZ2VyX2lkO1xuICAgIGNvbnN0IGl0c01lID0gdXNlclByb2ZpbGUuZW1haWwgPT09IGF0dGVuZGVlX2VtYWlsO1xuICAgIGNvbnN0IHByb2ZpbGVDaGFuZ2VkID1cbiAgICAgIGF0dGVuZGVlX2NvbXBhbnkubmFtZSAhPT0gY29tcGFueSB8fFxuICAgICAgYXR0ZW5kZWVfZmlyc3RfbmFtZSAhPT0gdXNlclByb2ZpbGUuZmlyc3RfbmFtZSB8fFxuICAgICAgYXR0ZW5kZWVfbGFzdF9uYW1lICE9PSB1c2VyUHJvZmlsZS5sYXN0X25hbWU7XG5cbiAgICBpZiAoaXRzTWUgJiYgIWhhc01hbmFnZXIgJiYgcHJvZmlsZUNoYW5nZWQpIHtcbiAgICAgIGNvbnN0IG5ld1Byb2ZpbGUgPSB7XG4gICAgICAgIGZpcnN0X25hbWU6IGF0dGVuZGVlX2ZpcnN0X25hbWUsXG4gICAgICAgIGxhc3RfbmFtZTogYXR0ZW5kZWVfbGFzdF9uYW1lLFxuICAgICAgICBjb21wYW55OiBhdHRlbmRlZV9jb21wYW55Lm5hbWUgfHwgYXR0ZW5kZWVfY29tcGFueVxuICAgICAgfTtcblxuICAgICAgLy8gdGhpcyBpcyBhIGNhbGxiYWNrIG1ldGhvZCB0aGF0IHVwZGF0ZXMgdXNlclByb2ZpbGUgaW4gQVBJIGFuZCBldmVudC1zaXRlXG4gICAgICB1cGRhdGVQcm9maWxlKG5ld1Byb2ZpbGUpO1xuICAgIH1cbiAgfTtcblxuZXhwb3J0IGNvbnN0IHNhdmVUaWNrZXREZXRhaWxzID1cbiAgKHRpY2tldCwgYW5zd2VycykgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gYXV0aFByb21pc2VSZWplY3QoKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6XG4gICAgICAgIFwicmVmdW5kX3JlcXVlc3RzLG93bmVyLG93bmVyLmV4dHJhX3F1ZXN0aW9ucyxiYWRnZSxiYWRnZS5mZWF0dXJlcyx0aWNrZXRfdHlwZVwiXG4gICAgfTtcblxuICAgIGNvbnN0IGlkVG9rZW4gPSBnZXRJZFRva2VuKCk7XG4gICAgbGV0IGNvbXBhbnkgPSBcIlwiO1xuICAgIGlmIChpZFRva2VuKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCB2ZXJpZmllciA9IG5ldyBJZFRva2VuVmVyaWZpZXIoKTtcbiAgICAgICAgY29uc3Qgand0ID0gdmVyaWZpZXIuZGVjb2RlKGlkVG9rZW4pO1xuICAgICAgICBjb21wYW55ID0gand0LnBheWxvYWQuY29tcGFueTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJlcnJvclwiLCBlKTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgbm9ybWFsaXplZEVudGl0eSA9IG5vcm1hbGl6ZVRpY2tldChhbnN3ZXJzKTtcblxuICAgIHJldHVybiBwdXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihVUERBVEVfVElDS0VUKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvYWxsL3RpY2tldHMvJHt0aWNrZXQuaWR9YCxcbiAgICAgIG5vcm1hbGl6ZWRFbnRpdHksXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oYXN5bmMgKCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChyZWZyZXNoUHJvZmlsZShhbnN3ZXJzLCBjb21wYW55LCB0aWNrZXQub3duZXIpKTtcbiAgICAgIH0pXG4gICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBhc3NpZ25BdHRlbmRlZSA9XG4gIChvcmRlcklkLCB0aWNrZXRJZCwgYXR0ZW5kZWVfZW1haWwsIG1lc3NhZ2UgPSBudWxsKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKTtcblxuICAgIGNvbnN0IHBheWxvYWQgPSB7IGF0dGVuZGVlX2VtYWlsIH07XG4gICAgaWYgKG1lc3NhZ2UpIHBheWxvYWQubWVzc2FnZSA9IG1lc3NhZ2U7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gYXV0aFByb21pc2VSZWplY3QoKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6XG4gICAgICAgIFwib3duZXIsb3duZXIuZXh0cmFfcXVlc3Rpb25zLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbix0aWNrZXRfdHlwZSxvcmRlclwiLFxuICAgICAgcmVsYXRpb25zOiBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5ub25lXCIsXG4gICAgICBmaWVsZHM6XG4gICAgICAgIFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLmlkLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5uYW1lLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi50eXBlXCJcbiAgICB9O1xuXG4gICAgcmV0dXJuIHB1dFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKEFTU0lHTl9USUNLRVQpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXRJZH0vYXR0ZW5kZWVgLFxuICAgICAgcGF5bG9hZCxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCByZW1vdmVUaWNrZXQgPVxuICAob3JkZXJJZCwgdGlja2V0SWQpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIGF1dGhQcm9taXNlUmVqZWN0KCk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOiBcIm9yZGVyLCBvd25lciwgb3duZXIuZXh0cmFfcXVlc3Rpb25zLCBvcmRlci5zdW1taXRcIlxuICAgIH07XG5cbiAgICByZXR1cm4gZGVsZXRlUmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oUkVNT1ZFX1RJQ0tFVF9BVFRFTkRFRSksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldElkfS9hdHRlbmRlZWAsXG4gICAgICB7fSxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpO1xuICB9O1xuXG5leHBvcnQgY29uc3QgcmVhc3NpZ25UaWNrZXQgPVxuICAob3JkZXJJZCwgdGlja2V0SWQsIGVtYWlsLCBtZXNzYWdlKSA9PiBhc3luYyAoZGlzcGF0Y2gpID0+XG4gICAgZGlzcGF0Y2gocmVtb3ZlVGlja2V0KG9yZGVySWQsIHRpY2tldElkKSkudGhlbigoKSA9PlxuICAgICAgZGlzcGF0Y2goYXNzaWduQXR0ZW5kZWUob3JkZXJJZCwgdGlja2V0SWQsIGVtYWlsLCBtZXNzYWdlKSlcbiAgICApO1xuXG5leHBvcnQgY29uc3QgdW5hc3NpZ25UaWNrZXQgPSAob3JkZXJJZCwgdGlja2V0SWQpID0+IGFzeW5jIChkaXNwYXRjaCkgPT5cbiAgZGlzcGF0Y2gocmVtb3ZlVGlja2V0KG9yZGVySWQsIHRpY2tldElkKSkudGhlbigoKSA9PiBkaXNwYXRjaChzdG9wTG9hZGluZygpKSk7XG5cbmV4cG9ydCBjb25zdCBkZWxlZ2F0ZVRpY2tldCA9XG4gIChvcmRlcklkLCB0aWNrZXRJZCwgZmlyc3ROYW1lLCBsYXN0TmFtZSwgZW1haWwpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpO1xuICAgIGNvbnN0IHtcbiAgICAgIHdpZGdldFN0YXRlOiB7IHN1bW1pdCB9XG4gICAgfSA9IGdldFN0YXRlKCk7XG4gICAgY29uc3QgcGF5bG9hZCA9IHtcbiAgICAgIGF0dGVuZGVlX2ZpcnN0X25hbWU6IGZpcnN0TmFtZSxcbiAgICAgIGF0dGVuZGVlX2xhc3RfbmFtZTogbGFzdE5hbWUsXG4gICAgICBhdHRlbmRlZV9lbWFpbDogZW1haWxcbiAgICB9O1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIGF1dGhQcm9taXNlUmVqZWN0KCk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOlxuICAgICAgICBcIm93bmVyLG93bmVyLmV4dHJhX3F1ZXN0aW9ucyxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24sdGlja2V0X3R5cGUsb3JkZXJcIixcbiAgICAgIHJlbGF0aW9uczogXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubm9uZVwiLFxuICAgICAgZmllbGRzOlxuICAgICAgICBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5pZCxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubmFtZSxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24udHlwZVwiXG4gICAgfTtcblxuICAgIHJldHVybiBwdXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihERUxFR0FURV9USUNLRVQpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvJHtzdW1taXQuaWR9L29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXRJZH0vZGVsZWdhdGVgLFxuICAgICAgcGF5bG9hZCxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBzYXZlRXh0cmFRdWVzdGlvbnMgPVxuICAodGlja2V0LCBhbnN3ZXJzKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBhdXRoUHJvbWlzZVJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDpcbiAgICAgICAgXCJyZWZ1bmRfcmVxdWVzdHMsb3duZXIsb3duZXIuZXh0cmFfcXVlc3Rpb25zLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbixiYWRnZSxiYWRnZS5mZWF0dXJlcyx0aWNrZXRfdHlwZSxvcmRlclwiLFxuICAgICAgcmVsYXRpb25zOiBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5ub25lXCIsXG4gICAgICBmaWVsZHM6XG4gICAgICAgIFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLmlkLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5uYW1lLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi50eXBlXCJcbiAgICB9O1xuXG4gICAgY29uc3Qgbm9ybWFsaXplZEFucyA9IG5vcm1hbGl6ZVRpY2tldChhbnN3ZXJzKTtcblxuICAgIHJldHVybiBwdXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihVUERBVEVfVElDS0VUKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvYWxsL3RpY2tldHMvJHt0aWNrZXQuaWR9YCxcbiAgICAgIG5vcm1hbGl6ZWRBbnMsXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oYXN5bmMgKCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRQREYgPVxuICAodGlja2V0KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBhdXRoUHJvbWlzZVJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlblxuICAgIH07XG5cbiAgICBjb25zdCBvcmRlcklkID0gdGlja2V0Lm9yZGVyID8gdGlja2V0Lm9yZGVyLmlkIDogdGlja2V0Lm9yZGVyX2lkO1xuXG4gICAgY29uc3QgcXVlcnlTdHJpbmcgPSBvYmplY3RUb1F1ZXJ5U3RyaW5nKHBhcmFtcyk7XG4gICAgY29uc3QgYXBpVXJsID0gYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXQuaWR9L3BkZj8ke3F1ZXJ5U3RyaW5nfWA7XG5cbiAgICByZXR1cm4gZmV0Y2goYXBpVXJsLCB7XG4gICAgICByZXNwb25zZVR5cGU6IFwiQmxvYlwiLFxuICAgICAgaGVhZGVyczogeyBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL3BkZlwiIH1cbiAgICB9KVxuICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgICB0aHJvdyByZXNwb25zZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2UuYmxvYigpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLnRoZW4oKHBkZikgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpO1xuICAgICAgICBjb25zdCB1cmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChwZGYpO1xuICAgICAgICBsaW5rLmhyZWYgPSB1cmw7XG4gICAgICAgIGxpbmsuZG93bmxvYWQgPSBcInRpY2tldC5wZGZcIjtcbiAgICAgICAgbGluay5kaXNwYXRjaEV2ZW50KG5ldyBNb3VzZUV2ZW50KFwiY2xpY2tcIikpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaChjdXN0b21GZXRjaEVycm9ySGFuZGxlcik7XG4gIH07XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgQnV0dG9uIGZyb20gXCJAbXVpL21hdGVyaWFsL0J1dHRvblwiO1xuaW1wb3J0IERpYWxvZyBmcm9tIFwiQG11aS9tYXRlcmlhbC9EaWFsb2dcIjtcbmltcG9ydCBEaWFsb2dBY3Rpb25zIGZyb20gXCJAbXVpL21hdGVyaWFsL0RpYWxvZ0FjdGlvbnNcIjtcbmltcG9ydCBEaWFsb2dDb250ZW50IGZyb20gXCJAbXVpL21hdGVyaWFsL0RpYWxvZ0NvbnRlbnRcIjtcbmltcG9ydCBEaWFsb2dDb250ZW50VGV4dCBmcm9tIFwiQG11aS9tYXRlcmlhbC9EaWFsb2dDb250ZW50VGV4dFwiO1xuaW1wb3J0IERpYWxvZ1RpdGxlIGZyb20gXCJAbXVpL21hdGVyaWFsL0RpYWxvZ1RpdGxlXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5cbmNvbnN0IENvbmZpcm1EaWFsb2cgPSAoeyBvcGVuLCB0aXRsZSwgYm9keSwgb25DbG9zZSwgb25Db25maXJtIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIHJldHVybiAoXG4gICAgPERpYWxvZ1xuICAgICAgb3Blbj17b3Blbn1cbiAgICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgICBhcmlhLWxhYmVsbGVkYnk9XCJhbGVydC1kaWFsb2ctdGl0bGVcIlxuICAgICAgYXJpYS1kZXNjcmliZWRieT1cImFsZXJ0LWRpYWxvZy1kZXNjcmlwdGlvblwiXG4gICAgPlxuICAgICAgPERpYWxvZ1RpdGxlIGlkPVwiYWxlcnQtZGlhbG9nLXRpdGxlXCI+e3RpdGxlfTwvRGlhbG9nVGl0bGU+XG4gICAgICA8RGlhbG9nQ29udGVudD5cbiAgICAgICAgPERpYWxvZ0NvbnRlbnRUZXh0IGlkPVwiYWxlcnQtZGlhbG9nLWRlc2NyaXB0aW9uXCI+XG4gICAgICAgICAge2JvZHl9XG4gICAgICAgIDwvRGlhbG9nQ29udGVudFRleHQ+XG4gICAgICA8L0RpYWxvZ0NvbnRlbnQ+XG4gICAgICA8RGlhbG9nQWN0aW9ucz5cbiAgICAgICAgPEJ1dHRvbiBvbkNsaWNrPXtvbkNsb3NlfT57dChcImdlbmVyYWwuY2FuY2VsXCIpfTwvQnV0dG9uPlxuICAgICAgICA8QnV0dG9uIG9uQ2xpY2s9e29uQ29uZmlybX0gYXV0b0ZvY3VzPlxuICAgICAgICAgIHt0KFwiZ2VuZXJhbC5jb25maXJtXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgIDwvRGlhbG9nQWN0aW9ucz5cbiAgICA8L0RpYWxvZz5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IENvbmZpcm1EaWFsb2c7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgQ29udGVudENvcHlJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NvbnRlbnRDb3B5XCI7XG5pbXBvcnQgeyBUb29sdGlwIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IE1JTExJU0VDX1RPX1NFQyB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBkZWZhdWx0V2lkdGggPSA5MDtcblxuY29uc3QgQ29weVRleHQgPSAoe1xuICB0ZXh0LFxuICB0b29sdGlwVGV4dCxcbiAgaGlkZUNvcHkgPSBmYWxzZSxcbiAgdHJ1bmNhdGVkID0gdHJ1ZSxcbiAgcmV2ZXJzZWQgPSBmYWxzZSxcbiAgd2lkdGggPSBkZWZhdWx0V2lkdGhcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCB0b29sdGlwVGV4dFRvVXNlID0gdG9vbHRpcFRleHQgfHwgdChcImdlbmVyYWwuY29weV90b19jbGlwYm9hcmRcIik7XG4gIGNvbnN0IFt0b29sdGlwLCBzZXRUb29sdGlwXSA9IFJlYWN0LnVzZVN0YXRlKHRvb2x0aXBUZXh0VG9Vc2UpO1xuICBjb25zdCBjbGFzc05hbWVzID0gYCR7dHJ1bmNhdGVkICYmIHN0eWxlcy50cnVuY2F0ZWR9ICR7XG4gICAgcmV2ZXJzZWQgJiYgc3R5bGVzLnJldmVyc2VkXG4gIH1gO1xuXG4gIGNvbnN0IGhhbmRsZUNvcHkgPSAoKSA9PiB7XG4gICAgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQodGV4dCk7XG4gICAgc2V0VG9vbHRpcCh0KFwiZ2VuZXJhbC5jb3BpZWRcIikpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgc2V0VG9vbHRpcCh0b29sdGlwVGV4dFRvVXNlKTtcbiAgICB9LCBNSUxMSVNFQ19UT19TRUMpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy53cmFwcGVyfT5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT17Y2xhc3NOYW1lc30gc3R5bGU9e3sgd2lkdGggfX0+XG4gICAgICAgIHt0ZXh0fVxuICAgICAgPC9zcGFuPlxuICAgICAgeyFoaWRlQ29weSAmJiAoXG4gICAgICAgIDxUb29sdGlwIHRpdGxlPXt0b29sdGlwfT5cbiAgICAgICAgICA8Q29udGVudENvcHlJY29uXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jb3B5SWNvbn1cbiAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUNvcHl9XG4gICAgICAgICAgICBkYXRhLXRlc3RpZD1cImNvcHktbnVtYmVyLWJ1dHRvblwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbkNvcHlUZXh0LnByb3BUeXBlcyA9IHtcbiAgdGV4dDogUHJvcFR5cGVzLnN0cmluZyxcbiAgdG9vbHRpcFRleHQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGhpZGVDb3B5OiBQcm9wVHlwZXMuYm9vbCxcbiAgdHJ1bmNhdGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgcmV2ZXJzZWQ6IFByb3BUeXBlcy5ib29sLFxuICB3aWR0aDogUHJvcFR5cGVzLm51bWJlclxufTtcblxuZXhwb3J0IGRlZmF1bHQgQ29weVRleHQ7XG4iLCJpbXBvcnQgeyBjcmVhdGVDb250ZXh0IH0gZnJvbSBcInJlYWN0XCI7XG5cbmNvbnN0IEN1c3RvbU5vdGlmaWNhdGlvbkNvbnRleHQgPSBjcmVhdGVDb250ZXh0KG51bGwpO1xuXG5leHBvcnQgZGVmYXVsdCBDdXN0b21Ob3RpZmljYXRpb25Db250ZXh0O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgQWxlcnQsIFNuYWNrYmFyLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBDaGVja0NpcmNsZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2hlY2tDaXJjbGVcIjtcbmltcG9ydCBFcnJvckljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXJyb3JcIjtcblxuY29uc3QgQ3VzdG9tTm90aWZpY2F0aW9uID0gKHsgb3Blbiwgb25DbG9zZSwgbWVzc2FnZSwgc2V2ZXJpdHkgfSkgPT4ge1xuICBpZiAoIW1lc3NhZ2UpIHJldHVybiBudWxsO1xuXG4gIHJldHVybiAoXG4gICAgPFNuYWNrYmFyXG4gICAgICBvcGVuPXtvcGVufVxuICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgIGFuY2hvck9yaWdpbj17eyB2ZXJ0aWNhbDogXCJ0b3BcIiwgaG9yaXpvbnRhbDogXCJjZW50ZXJcIiB9fVxuICAgICAgYXV0b0hpZGVEdXJhdGlvbj17MjAwMH1cbiAgICA+XG4gICAgICA8QWxlcnRcbiAgICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgICAgc2V2ZXJpdHk9e3NldmVyaXR5fVxuICAgICAgICB2YXJpYW50PVwiZmlsbGVkXCJcbiAgICAgICAgc3g9e3sgd2lkdGg6IFwiMTAwJVwiLCBiYWNrZ3JvdW5kQ29sb3I6IGAke3NldmVyaXR5fS5saWdodGAgfX1cbiAgICAgICAgaWNvbk1hcHBpbmc9e3tcbiAgICAgICAgICBzdWNjZXNzOiA8Q2hlY2tDaXJjbGVJY29uIGZvbnRTaXplPVwiaW5oZXJpdFwiIC8+LFxuICAgICAgICAgIGVycm9yOiA8RXJyb3JJY29uIGZvbnRTaXplPVwiaW5oZXJpdFwiIC8+XG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MVwiPnttZXNzYWdlfTwvVHlwb2dyYXBoeT5cbiAgICAgIDwvQWxlcnQ+XG4gICAgPC9TbmFja2Jhcj5cbiAgKTtcbn07XG5cbkN1c3RvbU5vdGlmaWNhdGlvbi5wcm9wVHlwZXMgPSB7XG4gIG9wZW46IFByb3BUeXBlcy5ib29sLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYyxcbiAgbWVzc2FnZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgc2V2ZXJpdHk6IFByb3BUeXBlcy5zdHJpbmdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEN1c3RvbU5vdGlmaWNhdGlvbjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IFRoZW1lUHJvdmlkZXIgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcblxubGV0IGRhcmtDb2xvciA9IFwiXCI7XG5pZiAodHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAvLyBHZXQgdGhlIHJvb3QgZWxlbWVudFxuICBjb25zdCByb290ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuXG4gIC8vIFJldHJpZXZlIHRoZSBjdXJyZW50IHZhbHVlIG9mIGEgQ1NTIHZhcmlhYmxlXG4gIGRhcmtDb2xvciA9IGdldENvbXB1dGVkU3R5bGUocm9vdCkuZ2V0UHJvcGVydHlWYWx1ZShcbiAgICBcIi0tY29sb3JfYmFja2dyb3VuZF9kYXJrXCJcbiAgKTtcbn1cblxuY29uc3QgdGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIHBhbGV0dGU6IHtcbiAgICBwcmltYXJ5OiB7XG4gICAgICBtYWluOiBkYXJrQ29sb3JcbiAgICB9LFxuICAgIHRleHQ6IHtcbiAgICAgIHByaW1hcnk6IFwiIzAwMDAwMERFXCIsXG4gICAgICBzZWNvbmRhcnk6IFwiIzAwMDAwMDk5XCIsXG4gICAgICBsaW5rOiBcIiMyMTk2ZjNcIlxuICAgIH1cbiAgfSxcbiAgdHlwb2dyYXBoeToge1xuICAgIGJvZHkxOiB7XG4gICAgICBmb250U2l6ZTogXCIxNHB4XCIsXG4gICAgICBmb250V2VpZ2h0OiA0MDBcbiAgICB9LFxuICAgIGg1OiB7XG4gICAgICBmb250U2l6ZTogXCIxLjZlbVwiLFxuICAgICAgZm9udFdlaWdodDogNDAwLFxuICAgICAgXCImLk11aVR5cG9ncmFwaHktZ3V0dGVyQm90dG9tXCI6IHtcbiAgICAgICAgbWFyZ2luQm90dG9tOiBcIjIwcHhcIlxuICAgICAgfVxuICAgIH0sXG4gICAgaDY6IHtcbiAgICAgIGZvbnRTaXplOiBcIjEuNGVtXCIsXG4gICAgICBmb250V2VpZ2h0OiA1MDAsXG4gICAgICBcIiYuTXVpVHlwb2dyYXBoeS1ndXR0ZXJCb3R0b21cIjoge1xuICAgICAgICBtYXJnaW5Cb3R0b206IFwiMjBweFwiXG4gICAgICB9XG4gICAgfVxuICB9LFxuICBjb21wb25lbnRzOiB7XG4gICAgTXVpRm9ybUhlbHBlclRleHQ6IHtcbiAgICAgIHN0eWxlT3ZlcnJpZGVzOiB7XG4gICAgICAgIHJvb3Q6IHtcbiAgICAgICAgICBmb250U2l6ZTogXCIuOGVtXCJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgTXVpQnV0dG9uOiB7XG4gICAgICBzdHlsZU92ZXJyaWRlczoge1xuICAgICAgICByb290OiB7XG4gICAgICAgICAgZm9udFNpemU6IFwiMWVtXCIsXG4gICAgICAgICAgZm9udFdlaWdodDogNTAwLFxuICAgICAgICAgIGxpbmVIZWlnaHQ6IFwiMjJweFwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIE11aVRhYjoge1xuICAgICAgc3R5bGVPdmVycmlkZXM6IHtcbiAgICAgICAgcm9vdDoge1xuICAgICAgICAgIGZvbnRTaXplOiBcIjE0cHhcIixcbiAgICAgICAgICBjb2xvcjogXCIjMDAwMDAwOTlcIixcbiAgICAgICAgICBcIiYuTXVpLXNlbGVjdGVkXCI6IHtcbiAgICAgICAgICAgIGNvbG9yOiBcIiMyMTk2ZjNcIlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgTXVpVGFiczoge1xuICAgICAgc3R5bGVPdmVycmlkZXM6IHtcbiAgICAgICAgaW5kaWNhdG9yOiB7XG4gICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiMyMTk2ZjNcIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59KTtcblxuY29uc3QgQ3VzdG9tVGhlbWUgPSAoeyBjaGlsZHJlbiB9KSA9PiAoXG4gIDxUaGVtZVByb3ZpZGVyIHRoZW1lPXt0aGVtZX0+e2NoaWxkcmVufTwvVGhlbWVQcm92aWRlcj5cbik7XG5cbkN1c3RvbVRoZW1lLnByb3BUeXBlcyA9IHtcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEN1c3RvbVRoZW1lO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQ2hlY2tib3gsXG4gIEZvcm1Db250cm9sLFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBGb3JtR3JvdXAsXG4gIEZvcm1IZWxwZXJUZXh0LFxuICBGb3JtTGFiZWxcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBSYXdIVE1MIGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL2NvbXBvbmVudHMvcmF3LWh0bWxcIjtcbmltcG9ydCB7IGdldExhYmVsLCB0b1NsdWcgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBDaGVja2JveExpc3RRdWVzdGlvbkZpZWxkID0gKHtcbiAgcXVlc3Rpb24sXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJcIixcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBjaGlsZHJlbixcbiAgdmFsdWUsXG4gIG9uQ2hhbmdlLFxuICBzZXRGaWVsZFZhbHVlLFxuICBlcnJvcixcbiAgaGVscGVyVGV4dCxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuICBjb25zdCBxdWVzdGlvbk1heFZhbHVlcyA9IHF1ZXN0aW9uLm1heF9zZWxlY3RlZF92YWx1ZXM7XG5cbiAgY29uc3QgcXVlc3Rpb25PcHRpb25zID1cbiAgICBxdWVzdGlvbi52YWx1ZXM/Lm1hcCgodmFsKSA9PiAoe1xuICAgICAgbGFiZWw6IHZhbC5sYWJlbCxcbiAgICAgIHZhbHVlOiB2YWwuaWQudG9TdHJpbmcoKVxuICAgIH0pKSB8fCBbXTtcblxuICBjb25zdCBoYW5kbGVDaGVja2JveExpc3RDaGFuZ2UgPSAoY2hlY2tlZCwgdmFsKSA9PiB7XG4gICAgY29uc3QgY3VycmVudEFucyA9IHZhbHVlIHx8IFtdO1xuICAgIGNvbnN0IG1heFNlbGVjdGlvblJlYWNoZWQgPVxuICAgICAgcXVlc3Rpb25NYXhWYWx1ZXMgIT09IDAgJiYgY3VycmVudEFucy5sZW5ndGggPT09IHF1ZXN0aW9uTWF4VmFsdWVzO1xuICAgIGxldCBuZXdWYWx1ZTtcblxuICAgIGlmIChjaGVja2VkKSB7XG4gICAgICBuZXdWYWx1ZSA9IG1heFNlbGVjdGlvblJlYWNoZWQgPyBjdXJyZW50QW5zIDogWy4uLmN1cnJlbnRBbnMsIHZhbF07XG4gICAgfSBlbHNlIHtcbiAgICAgIG5ld1ZhbHVlID0gY3VycmVudEFucy5maWx0ZXIoKHYpID0+IHYgIT09IHZhbCk7XG4gICAgfVxuXG4gICAgc2V0RmllbGRWYWx1ZShxdWVzdGlvblNsdWcsIG5ld1ZhbHVlKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Db250cm9sXG4gICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgID5cbiAgICAgICAgPEZvcm1MYWJlbD5cbiAgICAgICAgICA8UmF3SFRNTD57cXVlc3Rpb25MYWJlbH08L1Jhd0hUTUw+XG4gICAgICAgIDwvRm9ybUxhYmVsPlxuICAgICAgICB7ZXJyb3IgJiYgPEZvcm1IZWxwZXJUZXh0PntoZWxwZXJUZXh0ID8/IFwiIFwifTwvRm9ybUhlbHBlclRleHQ+fVxuICAgICAgICA8Rm9ybUdyb3VwPlxuICAgICAgICAgIHtxdWVzdGlvbk9wdGlvbnMubWFwKChvcCkgPT4gKFxuICAgICAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAga2V5PXtvcC5sYWJlbH1cbiAgICAgICAgICAgICAgbmFtZT17cXVlc3Rpb25TbHVnfVxuICAgICAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3ZhbHVlPy5pbmNsdWRlcyhvcC52YWx1ZSl9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGV2KSA9PlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVDaGVja2JveExpc3RDaGFuZ2UoZXYudGFyZ2V0LmNoZWNrZWQsIG9wLnZhbHVlKVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgbGFiZWw9e29wLmxhYmVsfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9Gb3JtR3JvdXA+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvRm9ybUNvbnRyb2w+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5DaGVja2JveExpc3RRdWVzdGlvbkZpZWxkLnByb3BUeXBlcyA9IHtcbiAgcXVlc3Rpb246IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgdmFsdWU6IFByb3BUeXBlcy5hcnJheSxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBzZXRGaWVsZFZhbHVlOiBQcm9wVHlwZXMuZnVuYyxcbiAgZXJyb3I6IFByb3BUeXBlcy5ib29sLFxuICBoZWxwZXJUZXh0OiBQcm9wVHlwZXMuc3RyaW5nXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDaGVja2JveExpc3RRdWVzdGlvbkZpZWxkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQ2hlY2tib3gsXG4gIEZvcm1Db250cm9sLFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBGb3JtSGVscGVyVGV4dFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFJhd0hUTUwgZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvY29tcG9uZW50cy9yYXctaHRtbFwiO1xuaW1wb3J0IHsgZ2V0TGFiZWwsIHRvU2x1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IENoZWNrYm94UXVlc3Rpb25GaWVsZCA9ICh7XG4gIHF1ZXN0aW9uLFxuICBxdWVzdGlvbkNsYXNzTmFtZSA9IFwiXCIsXG4gIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgY2hpbGRyZW4sXG4gIHZhbHVlLFxuICBlcnJvcixcbiAgaGVscGVyVGV4dCxcbiAgc2V0RmllbGRWYWx1ZSxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICBpZD17YCR7cXVlc3Rpb25TbHVnfV9jb250YWluZXJgfVxuICAgICAgY2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICA+XG4gICAgICA8Rm9ybUNvbnRyb2wgZnVsbFdpZHRoIG1hcmdpbj1cIm5vcm1hbFwiIGVycm9yPXtlcnJvcn0+XG4gICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgc3g9e3sgYWxpZ25JdGVtczogXCJmbGV4LXN0YXJ0XCIgfX1cbiAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgICBuYW1lPXtxdWVzdGlvblNsdWd9XG4gICAgICAgICAgICAgIGNoZWNrZWQ9eyEhdmFsdWV9XG4gICAgICAgICAgICAgIGxhYmVsPXs8UmF3SFRNTD57cXVlc3Rpb25MYWJlbH08L1Jhd0hUTUw+fVxuICAgICAgICAgICAgICBzeD17eyBtYXJnaW5Ub3A6IC0xIH19XG4gICAgICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICB9XG4gICAgICAgICAgbGFiZWw9ezxSYXdIVE1MPntxdWVzdGlvbkxhYmVsfTwvUmF3SFRNTD59XG4gICAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgIC8+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAge2Vycm9yICYmIDxGb3JtSGVscGVyVGV4dD57aGVscGVyVGV4dCA/PyBcIiBcIn08L0Zvcm1IZWxwZXJUZXh0Pn1cbiAgICAgIDwvRm9ybUNvbnRyb2w+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5DaGVja2JveFF1ZXN0aW9uRmllbGQucHJvcFR5cGVzID0ge1xuICBxdWVzdGlvbjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICB2YWx1ZTogUHJvcFR5cGVzLmJvb2wsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBzZXRGaWVsZFZhbHVlOiBQcm9wVHlwZXMuZnVuYyxcbiAgZXJyb3I6IFByb3BUeXBlcy5ib29sLFxuICBoZWxwZXJUZXh0OiBQcm9wVHlwZXMuc3RyaW5nXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDaGVja2JveFF1ZXN0aW9uRmllbGQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgSW5wdXRMYWJlbCwgTWVudUl0ZW0sIFNlbGVjdCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBnZXRMYWJlbCwgdG9TbHVnIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgRHJvcGRvd25RdWVzdGlvbkZpZWxkID0gKHtcbiAgcXVlc3Rpb24sXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJcIixcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBzZXRGaWVsZFZhbHVlLFxuICBjaGlsZHJlbixcbiAgZXJyb3IsXG4gIGhlbHBlclRleHQsXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHF1ZXN0aW9uLm5hbWUsIHF1ZXN0aW9uLmlkKTtcbiAgY29uc3QgcXVlc3Rpb25MYWJlbCA9IGdldExhYmVsKHF1ZXN0aW9uKTtcbiAgY29uc3QgaXNSZXF1aXJlZCA9IHF1ZXN0aW9uLm1hbmRhdG9yeTtcblxuICBjb25zdCBxdWVzdGlvbk9wdGlvbnMgPVxuICAgIHF1ZXN0aW9uLnZhbHVlcz8ubWFwKCh2YWwpID0+ICh7XG4gICAgICBsYWJlbDogdmFsLmxhYmVsLFxuICAgICAgdmFsdWU6IHZhbC5pZFxuICAgIH0pKSB8fCBbXTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Db250cm9sXG4gICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgID5cbiAgICAgICAgPElucHV0TGFiZWwgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fbGFiZWxgfT57cXVlc3Rpb25MYWJlbH08L0lucHV0TGFiZWw+XG4gICAgICAgIDxTZWxlY3RcbiAgICAgICAgICBsYWJlbElkPXtgJHtxdWVzdGlvblNsdWd9X2xhYmVsYH1cbiAgICAgICAgICBuYW1lPXtxdWVzdGlvblNsdWd9XG4gICAgICAgICAgaWQ9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICBsYWJlbD17cXVlc3Rpb25MYWJlbH1cbiAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAgIHN0eWxlPXt7IG1hcmdpbkJvdHRvbTogMjAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHtxdWVzdGlvbk9wdGlvbnMubWFwKChvcCkgPT4gKFxuICAgICAgICAgICAgPE1lbnVJdGVtIGtleT17b3AubGFiZWx9IHZhbHVlPXtvcC52YWx1ZX0+XG4gICAgICAgICAgICAgIHtvcC5sYWJlbH1cbiAgICAgICAgICAgIDwvTWVudUl0ZW0+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvU2VsZWN0PlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuRHJvcGRvd25RdWVzdGlvbkZpZWxkLnByb3BUeXBlcyA9IHtcbiAgcXVlc3Rpb246IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIGVycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgaGVscGVyVGV4dDogUHJvcFR5cGVzLnN0cmluZyxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IERyb3Bkb3duUXVlc3Rpb25GaWVsZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEZvcm1Db250cm9sLFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBGb3JtSGVscGVyVGV4dCxcbiAgRm9ybUxhYmVsLFxuICBSYWRpbyxcbiAgUmFkaW9Hcm91cFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFJhd0hUTUwgZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvY29tcG9uZW50cy9yYXctaHRtbFwiO1xuaW1wb3J0IHsgZ2V0TGFiZWwsIHRvU2x1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IFJhZGlvTGlzdFF1ZXN0aW9uRmllbGQgPSAoe1xuICBxdWVzdGlvbixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcIlwiLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIGNoaWxkcmVuLFxuICBlcnJvcixcbiAgaGVscGVyVGV4dCxcbiAgc2V0RmllbGRWYWx1ZSxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuXG4gIGNvbnN0IHF1ZXN0aW9uT3B0aW9ucyA9XG4gICAgcXVlc3Rpb24udmFsdWVzPy5tYXAoKHZhbCkgPT4gKHtcbiAgICAgIGxhYmVsOiB2YWwubGFiZWwsXG4gICAgICB2YWx1ZTogdmFsLmlkLnRvU3RyaW5nKClcbiAgICB9KSkgfHwgW107XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBrZXk9e3F1ZXN0aW9uU2x1Z31cbiAgICAgIGlkPXtgJHtxdWVzdGlvblNsdWd9X2NvbnRhaW5lcmB9XG4gICAgICBjbGFzc05hbWU9e3F1ZXN0aW9uQ2xhc3NOYW1lfVxuICAgID5cbiAgICAgIDxGb3JtQ29udHJvbFxuICAgICAgICBkaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgICBlcnJvcj17ZXJyb3J9XG4gICAgICA+XG4gICAgICAgIDxGb3JtTGFiZWwgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fbGFiZWxgfT5cbiAgICAgICAgICA8UmF3SFRNTD57cXVlc3Rpb25MYWJlbH08L1Jhd0hUTUw+XG4gICAgICAgIDwvRm9ybUxhYmVsPlxuICAgICAgICB7ZXJyb3IgJiYgPEZvcm1IZWxwZXJUZXh0PntoZWxwZXJUZXh0ID8/IFwiIFwifTwvRm9ybUhlbHBlclRleHQ+fVxuICAgICAgICA8UmFkaW9Hcm91cFxuICAgICAgICAgIGFyaWEtbGFiZWxsZWRieT17YCR7cXVlc3Rpb25TbHVnfV9sYWJlbGB9XG4gICAgICAgICAgbmFtZT17cXVlc3Rpb25TbHVnfVxuICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgey4uLnJlc3R9XG4gICAgICAgID5cbiAgICAgICAgICB7cXVlc3Rpb25PcHRpb25zLm1hcCgob3ApID0+IChcbiAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgIGtleT17b3AubGFiZWx9XG4gICAgICAgICAgICAgIHZhbHVlPXtvcC52YWx1ZX1cbiAgICAgICAgICAgICAgY29udHJvbD17PFJhZGlvIC8+fVxuICAgICAgICAgICAgICBsYWJlbD17b3AubGFiZWx9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L1JhZGlvR3JvdXA+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvRm9ybUNvbnRyb2w+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5SYWRpb0xpc3RRdWVzdGlvbkZpZWxkLnByb3BUeXBlcyA9IHtcbiAgcXVlc3Rpb246IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIGVycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgaGVscGVyVGV4dDogUHJvcFR5cGVzLnN0cmluZyxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJhZGlvTGlzdFF1ZXN0aW9uRmllbGQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBGb3JtR3JvdXAsIFRleHRGaWVsZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBnZXRMYWJlbCwgdG9TbHVnIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgVGV4dFF1ZXN0aW9uRmllbGQgPSAoe1xuICBxdWVzdGlvbixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcIlwiLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIGNoaWxkcmVuLFxuICBzZXRGaWVsZFZhbHVlLFxuICAuLi5yZXN0XG59KSA9PiB7XG4gIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxdWVzdGlvbi5uYW1lLCBxdWVzdGlvbi5pZCk7XG4gIGNvbnN0IHF1ZXN0aW9uTGFiZWwgPSBnZXRMYWJlbChxdWVzdGlvbik7XG4gIGNvbnN0IGlzUmVxdWlyZWQgPSBxdWVzdGlvbi5tYW5kYXRvcnk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBrZXk9e3F1ZXN0aW9uU2x1Z31cbiAgICAgIGlkPXtgJHtxdWVzdGlvblNsdWd9X2NvbnRhaW5lcmB9XG4gICAgICBjbGFzc05hbWU9e3F1ZXN0aW9uQ2xhc3NOYW1lfVxuICAgID5cbiAgICAgIDxGb3JtR3JvdXA+XG4gICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICBuYW1lPXtxdWVzdGlvblNsdWd9XG4gICAgICAgICAgbGFiZWw9e3F1ZXN0aW9uTGFiZWx9XG4gICAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAvPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0Zvcm1Hcm91cD5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cblRleHRRdWVzdGlvbkZpZWxkLnByb3BUeXBlcyA9IHtcbiAgcXVlc3Rpb246IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIHNldEZpZWxkVmFsdWU6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUZXh0UXVlc3Rpb25GaWVsZDtcbiIsImltcG9ydCB7XG4gIFF1ZXN0aW9uVHlwZV9DaGVja2JveCxcbiAgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCxcbiAgUXVlc3Rpb25UeXBlX0NvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0XG59IGZyb20gXCIuLi9jb25zdGFudHNcIjtcblxuZXhwb3J0IGNvbnN0IGNoZWNrUnVsZSA9ICh2YWx1ZSwgcnVsZSkgPT4ge1xuICBjb25zdCB2YWx1ZXMgPSBydWxlLmFuc3dlcl92YWx1ZXM7XG5cbiAgaWYgKCF2YWx1ZSkgcmV0dXJuIGZhbHNlO1xuXG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIGlmICghdmFsdWUubGVuZ3RoKSByZXR1cm4gZmFsc2U7XG4gICAgbGV0IHJlcyA9IHJ1bGUuYW5zd2VyX3ZhbHVlc19vcGVyYXRvciA9PT0gXCJBbmRcIjtcbiAgICB2YWx1ZXMuZm9yRWFjaCgodikgPT4ge1xuICAgICAgaWYgKHJ1bGUuYW5zd2VyX3ZhbHVlc19vcGVyYXRvciA9PT0gXCJBbmRcIikge1xuICAgICAgICByZXMgPSByZXMgJiYgdmFsdWUuaW5jbHVkZXModik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBPclxuICAgICAgICByZXMgPSByZXMgfHwgdmFsdWUuaW5jbHVkZXModik7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuICByZXR1cm4gdmFsdWVzLmluY2x1ZGVzKHZhbHVlPy50b1N0cmluZygpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjaGVja1Zpc2liaWxpdHkgPSAocnVsZSwgcnVsZVJlc3VsdCkgPT4ge1xuICBpZiAocnVsZS52aXNpYmlsaXR5ID09PSBcIlZpc2libGVcIikge1xuICAgIGlmIChydWxlLnZpc2liaWxpdHlfY29uZGl0aW9uID09PSBcIkVxdWFsXCIpIHtcbiAgICAgIHJldHVybiAhIXJ1bGVSZXN1bHQ7XG4gICAgfVxuICAgIC8vIE5vbiBFcXVhbFxuICAgIHJldHVybiAhcnVsZVJlc3VsdDtcbiAgfVxuICAvLyBub3QgdmlzaWJsZVxuICBpZiAocnVsZS52aXNpYmlsaXR5X2NvbmRpdGlvbiA9PT0gXCJFcXVhbFwiKSB7XG4gICAgcmV0dXJuICFydWxlUmVzdWx0O1xuICB9XG4gIHJldHVybiAhIXJ1bGVSZXN1bHQ7XG59O1xuXG5leHBvcnQgY29uc3QgdG9TbHVnID0gKHRleHQsIHF1ZXN0aW9uSWQpID0+IHtcbiAgY29uc3QgdGV4dExDID0gdGV4dC50b0xvd2VyQ2FzZSgpO1xuICByZXR1cm4gYCR7dGV4dExDLnJlcGxhY2UoL1teYS16QS1aMC05XSsvZywgXCJfXCIpfV8ke3F1ZXN0aW9uSWR9YDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRMYWJlbCA9IChxKSA9PlxuICAvLyByZXBsYWNlIGxpbmUgYnJlYWtzIGFuZCByZW1vdmUgb3V0ZXIgPHA+XG4gIHE/LmxhYmVsPy5yZXBsYWNlKC9cXG4vZywgXCIgXCIpLnJlcGxhY2UoLzxwPiguKik8XFwvcD4vZ2ksIFwiJDFcIik7XG5cbmV4cG9ydCBjb25zdCBpc0Fuc3dlcmVkID0gKGFuc3dlcikgPT4ge1xuICBpZiAoIWFuc3dlcikgcmV0dXJuIGZhbHNlO1xuICAvLyBjaGVjayB0eXBlXG4gIGlmIChBcnJheS5pc0FycmF5KGFuc3dlcikpIHJldHVybiBhbnN3ZXIubGVuZ3RoID4gMDtcbiAgaWYgKHR5cGVvZiBhbnN3ZXIgPT09IFwic3RyaW5nXCIpIHJldHVybiBhbnN3ZXIubGVuZ3RoID4gMDtcbiAgaWYgKHR5cGVvZiBhbnN3ZXIgPT09IFwibnVtYmVyXCIpIHJldHVybiBhbnN3ZXIgPiAwO1xuICBpZiAodHlwZW9mIGFuc3dlciA9PT0gXCJib29sZWFuXCIpIHJldHVybiBhbnN3ZXI7XG4gIHJldHVybiBmYWxzZTtcbn07XG5cbmV4cG9ydCBjb25zdCBjaGVja0lmVmFsdWVNYXRjaCA9IChhbnN3ZXIsIGNvbXBhcmVWYWwpID0+IHtcbiAgY29uc3QgYW5zd2VyQXJyYXkgPSBBcnJheS5pc0FycmF5KGFuc3dlcikgPyBhbnN3ZXIgOiBbYW5zd2VyXTtcblxuICByZXR1cm4gYW5zd2VyQXJyYXkuc29tZSgodikgPT4ge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGNvbXBhcmVWYWwpKSB7XG4gICAgICByZXR1cm4gY29tcGFyZVZhbC5pbmNsdWRlcyhgJHt2fWApO1xuICAgIH1cbiAgICByZXR1cm4gYCR7dn1gID09PSBgJHtjb21wYXJlVmFsfWA7XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFR5cGVJbml0aWFsVmFsdWUgPSAocSkgPT4ge1xuICBzd2l0Y2ggKHEudHlwZSkge1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrYm94OlxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdDpcbiAgICAgIHJldHVybiBudWxsO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdDpcbiAgICAgIHJldHVybiBbXTtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3g6XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ29tYm9Cb3g6XG4gICAgICByZXR1cm4gXCJcIjtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIFwiXCI7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUeXBlVmFsdWUgPSAoYW5zLCB0eXBlKSA9PiB7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrYm94OlxuICAgICAgcmV0dXJuIGFucyA9PT0gXCJ0cnVlXCI7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0OlxuICAgICAgcmV0dXJuIGFucz8uc3BsaXQoXCIsXCIpIHx8IFtdO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveDpcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db21ib0JveDpcbiAgICAgIHJldHVybiBhbnMgfHwgXCJcIjtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3Q6XG4gICAgICByZXR1cm4gYW5zIHx8IG51bGw7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBhbnM7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB0cmFuc2Zvcm1BbndlcnNGb3JtYXQgPSAoYW5zd2VycykgPT4ge1xuICBjb25zdCB7XG4gICAgYXR0ZW5kZWVfZW1haWwsXG4gICAgYXR0ZW5kZWVfZmlyc3RfbmFtZSxcbiAgICBhdHRlbmRlZV9sYXN0X25hbWUsXG4gICAgYXR0ZW5kZWVfY29tcGFueSxcbiAgICBkaXNjbGFpbWVyX2FjY2VwdGVkLFxuICAgIC4uLmV4dHJhX3F1ZXN0aW9uc1xuICB9ID0gYW5zd2VycztcblxuICBjb25zdCBmb3JtYXR0ZWRFUSA9IE9iamVjdC5lbnRyaWVzKGV4dHJhX3F1ZXN0aW9ucykubWFwKChba2V5LCB2YWx1ZV0pID0+ICh7XG4gICAgcXVlc3Rpb25faWQ6IHBhcnNlSW50KGtleS5zcGxpdChcIl9cIikucG9wKCksIDEwKSxcbiAgICBhbnN3ZXI6IHZhbHVlPy50b1N0cmluZygpIHx8IG51bGxcbiAgfSkpO1xuXG4gIHJldHVybiB7XG4gICAgYXR0ZW5kZWVfZW1haWwsXG4gICAgYXR0ZW5kZWVfZmlyc3RfbmFtZSxcbiAgICBhdHRlbmRlZV9sYXN0X25hbWUsXG4gICAgYXR0ZW5kZWVfY29tcGFueSxcbiAgICBkaXNjbGFpbWVyX2FjY2VwdGVkLFxuICAgIGV4dHJhX3F1ZXN0aW9uczogZm9ybWF0dGVkRVFcbiAgfTtcbn07XG4iLCJleHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX1RleHQgPSBcIlRleHRcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfVGV4dEFyZWEgPSBcIlRleHRBcmVhXCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX0NoZWNrYm94ID0gXCJDaGVja0JveFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3QgPSBcIlJhZGlvQnV0dG9uTGlzdFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9Db21ib0JveCA9IFwiQ29tYm9Cb3hcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0ID0gXCJDaGVja0JveExpc3RcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94ID0gXCJDb3VudHJ5Q29tYm9Cb3hcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b24gPSBcIlJhZGlvQnV0dG9uXCI7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5cbmltcG9ydCB7XG4gIHRvU2x1ZyxcbiAgaXNBbnN3ZXJlZCxcbiAgY2hlY2tWaXNpYmlsaXR5LFxuICBjaGVja1J1bGVcbn0gZnJvbSBcIi4vY29tcG9uZW50cy91dGlsc1wiO1xuaW1wb3J0IHtcbiAgUXVlc3Rpb25UeXBlX0NoZWNrYm94LFxuICBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0LFxuICBRdWVzdGlvblR5cGVfQ29tYm9Cb3gsXG4gIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3gsXG4gIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3QsXG4gIFF1ZXN0aW9uVHlwZV9UZXh0LFxuICBRdWVzdGlvblR5cGVfVGV4dEFyZWFcbn0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgVGV4dFF1ZXN0aW9uRmllbGQgZnJvbSBcIi4vY29tcG9uZW50cy9UZXh0UXVlc3Rpb25GaWVsZFwiO1xuaW1wb3J0IENoZWNrYm94UXVlc3Rpb25GaWVsZCBmcm9tIFwiLi9jb21wb25lbnRzL0NoZWNrYm94UXVlc3Rpb25GaWVsZFwiO1xuaW1wb3J0IFJhZGlvTGlzdFF1ZXN0aW9uRmllbGQgZnJvbSBcIi4vY29tcG9uZW50cy9SYWRpb0xpc3RRdWVzdGlvbkZpZWxkXCI7XG5pbXBvcnQgQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZCBmcm9tIFwiLi9jb21wb25lbnRzL0NoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGRcIjtcbmltcG9ydCBEcm9wZG93blF1ZXN0aW9uRmllbGQgZnJvbSBcIi4vY29tcG9uZW50cy9Ecm9wZG93blF1ZXN0aW9uRmllbGRcIjtcblxuY29uc3QgZ2V0UXVlc3Rpb25GaWVsZENvbXBvbmVudCA9IChxdWVzdGlvblR5cGUpID0+IHtcbiAgc3dpdGNoIChxdWVzdGlvblR5cGUpIHtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9UZXh0QXJlYTpcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9UZXh0OiB7XG4gICAgICByZXR1cm4gVGV4dFF1ZXN0aW9uRmllbGQ7XG4gICAgfVxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrYm94OiB7XG4gICAgICByZXR1cm4gQ2hlY2tib3hRdWVzdGlvbkZpZWxkO1xuICAgIH1cbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3Q6IHtcbiAgICAgIHJldHVybiBSYWRpb0xpc3RRdWVzdGlvbkZpZWxkO1xuICAgIH1cbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3Q6IHtcbiAgICAgIHJldHVybiBDaGVja2JveExpc3RRdWVzdGlvbkZpZWxkO1xuICAgIH1cbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3g6XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ29tYm9Cb3g6IHtcbiAgICAgIHJldHVybiBEcm9wZG93blF1ZXN0aW9uRmllbGQ7XG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIHJldHVybiBSZWFjdC5GcmFnbWVudDtcbiAgICB9XG4gIH1cbn07XG5cbmNvbnN0IEV4dHJhUXVlc3Rpb25zRmllbGRzID0gKHtcbiAgZXh0cmFRdWVzdGlvbnMsXG4gIG9yaWdpbmFsQW5zd2VycyxcbiAgY2xhc3NOYW1lID0gXCJleHRyYVF1ZXN0aW9uc1wiLFxuICBxdWVzdGlvbkNsYXNzTmFtZSA9IFwiZXh0cmFRdWVzdGlvblwiLFxuICByZWFkT25seSA9IGZhbHNlLFxuICBhbGxvd0VkaXQgPSB0cnVlLFxuICBmb3JtaWtcbn0pID0+IHtcbiAgY29uc3QgcmVuZGVyUnVsZSA9IChydWxlLCBxdWVzdGlvblNsdWcpID0+IHtcbiAgICBjb25zdCBydWxlUmVzdWx0ID0gY2hlY2tSdWxlKGZvcm1pay52YWx1ZXNbcXVlc3Rpb25TbHVnXSwgcnVsZSk7XG4gICAgY29uc3QgaXNWaXNpYmxlID0gY2hlY2tWaXNpYmlsaXR5KHJ1bGUsIHJ1bGVSZXN1bHQpO1xuXG4gICAgaWYgKGlzVmlzaWJsZSkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZS1iZWZvcmUtZGVmaW5lXG4gICAgICByZXR1cm4gcmVuZGVyUXVlc3Rpb24ocnVsZS5zdWJfcXVlc3Rpb24pO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9O1xuXG4gIGNvbnN0IHJlbmRlclF1ZXN0aW9uID0gKHEpID0+IHtcbiAgICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocS5uYW1lLCBxLmlkKTtcbiAgICAvLyBkaXNhYmxlIGZpZWxkIGlmIGVkaXQgaXNuJ3QgYWxsb3dlZCBhbmQgdGhlIHF1ZXN0aW9ucyBpcyBhbnN3ZXJlZFxuICAgIGNvbnN0IGlzRGlzYWJsZWQgPVxuICAgICAgKCFhbGxvd0VkaXQgJiYgaXNBbnN3ZXJlZChvcmlnaW5hbEFuc3dlcnNbcXVlc3Rpb25TbHVnXSkpIHx8IHJlYWRPbmx5O1xuICAgIGNvbnN0IFF1ZXN0aW9uRmllbGRDb21wb25lbnQgPSBnZXRRdWVzdGlvbkZpZWxkQ29tcG9uZW50KHEudHlwZSk7XG5cbiAgICBjb25zdCBmb3JtaWtQcm9wcyA9IHtcbiAgICAgIHZhbHVlOiBmb3JtaWsudmFsdWVzW3F1ZXN0aW9uU2x1Z10sXG4gICAgICBvbkNoYW5nZTogZm9ybWlrLmhhbmRsZUNoYW5nZSxcbiAgICAgIG9uQmx1cjogZm9ybWlrLmhhbmRsZUJsdXIsXG4gICAgICBlcnJvcjpcbiAgICAgICAgZm9ybWlrLnRvdWNoZWRbcXVlc3Rpb25TbHVnXSAmJiBCb29sZWFuKGZvcm1pay5lcnJvcnNbcXVlc3Rpb25TbHVnXSksXG4gICAgICBoZWxwZXJUZXh0OiBmb3JtaWsudG91Y2hlZFtxdWVzdGlvblNsdWddICYmIGZvcm1pay5lcnJvcnNbcXVlc3Rpb25TbHVnXSxcbiAgICAgIHNldEZpZWxkVmFsdWU6IGZvcm1pay5zZXRGaWVsZFZhbHVlXG4gICAgfTtcblxuICAgIHJldHVybiAoXG4gICAgICA8UXVlc3Rpb25GaWVsZENvbXBvbmVudFxuICAgICAgICBrZXk9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgcXVlc3Rpb249e3F9XG4gICAgICAgIHF1ZXN0aW9uQ2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICAgICAgaXNEaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgey4uLmZvcm1pa1Byb3BzfVxuICAgICAgPlxuICAgICAgICB7cS5zdWJfcXVlc3Rpb25fcnVsZXM/Lm1hcCgocnVsZSkgPT4gcmVuZGVyUnVsZShydWxlLCBxdWVzdGlvblNsdWcpKX1cbiAgICAgIDwvUXVlc3Rpb25GaWVsZENvbXBvbmVudD5cbiAgICApO1xuICB9O1xuXG4gIHJldHVybiA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NOYW1lfT57ZXh0cmFRdWVzdGlvbnMubWFwKHJlbmRlclF1ZXN0aW9uKX08L2Rpdj47XG59O1xuXG5FeHRyYVF1ZXN0aW9uc0ZpZWxkcy5wcm9wVHlwZXMgPSB7XG4gIGV4dHJhUXVlc3Rpb25zOiBQcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxcbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBxdWVzdGlvbkNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgYWxsb3dFZGl0OiBQcm9wVHlwZXMuYm9vbCxcbiAgcmVhZE9ubHk6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBFeHRyYVF1ZXN0aW9uc0ZpZWxkcztcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQm94LFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBDYXJkSGVhZGVyLFxuICBJY29uQnV0dG9uLFxuICBDb2xsYXBzZSxcbiAgQ2FyZENvbnRlbnQsXG4gIFJhZGlvR3JvdXAsXG4gIFJhZGlvXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgRXhwYW5kTW9yZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXhwYW5kTW9yZVwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORUQgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuXG5jb25zdCBBc3NpZ25lZEZpbHRlciA9ICh7IG9uRmlsdGVyIH0pID0+IHtcbiAgY29uc3Qge1xuICAgIGZpbHRlcjogeyBGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRDogZmlsdGVyVmFsdWVzIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG5cbiAgY29uc3QgW2lzRXhwYW5kZWQsIHNldElzRXhwYW5kZWRdID0gdXNlU3RhdGUoISFmaWx0ZXJWYWx1ZXMpO1xuXG4gIGNvbnN0IGFzc2lnbmVkVmFsdWVzID0gW1xuICAgIHsgdmFsdWU6IFwiTWVcIiwgbGFiZWw6IFwiTWVcIiB9LFxuICAgIHsgdmFsdWU6IFwiU29tZW9uZUVsc2VcIiwgbGFiZWw6IFwiU29tZW9uZSBFbHNlXCIgfSxcbiAgICB7IHZhbHVlOiBcIk5vYm9keVwiLCBsYWJlbDogXCJOb2JvZHlcIiB9XG4gIF07XG5cbiAgY29uc3QgaGFuZGxlRmlsdGVyQ2hhbmdlID0gKGV2LCB2YWx1ZSkgPT4ge1xuICAgIGNvbnN0IG5ld0ZpbHRlciA9IHZhbHVlO1xuICAgIG9uRmlsdGVyKHtcbiAgICAgIFtGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRF06IG5ld0ZpbHRlclxuICAgIH0pO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxDYXJkSGVhZGVyXG4gICAgICAgIHRpdGxlPVwiQXNzaWduZWRcIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aXRsZVdyYXBwZXJ9XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHNldElzRXhwYW5kZWQoIWlzRXhwYW5kZWQpfVxuICAgICAgICBhY3Rpb249e1xuICAgICAgICAgIDxJY29uQnV0dG9uIGFyaWEtbGFiZWw9XCJleHBhbmRcIiBkaXNhYmxlUmlwcGxlPlxuICAgICAgICAgICAgPEV4cGFuZE1vcmVJY29uXG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBpc0V4cGFuZGVkID8gXCJyb3RhdGUoMTgwZGVnKVwiIDogXCJyb3RhdGUoMGRlZylcIixcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBcInRyYW5zZm9ybSAwLjNzXCJcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICB9XG4gICAgICAvPlxuICAgICAgPENvbGxhcHNlIGluPXtpc0V4cGFuZGVkfSB0aW1lb3V0PVwiYXV0b1wiIHVubW91bnRPbkV4aXQ+XG4gICAgICAgIDxDYXJkQ29udGVudFxuICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICBweTogMCxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjMDAwMDAwMEFcIixcbiAgICAgICAgICAgIFwiJjpsYXN0LWNoaWxkXCI6IHtcbiAgICAgICAgICAgICAgcGI6IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgPFJhZGlvR3JvdXAgdmFsdWU9e2ZpbHRlclZhbHVlc30gb25DaGFuZ2U9e2hhbmRsZUZpbHRlckNoYW5nZX0+XG4gICAgICAgICAgICB7YXNzaWduZWRWYWx1ZXMubWFwKChhc3NpZ25lZCkgPT4gKFxuICAgICAgICAgICAgICA8Qm94XG4gICAgICAgICAgICAgICAgc3g9e3sgcHk6IDEgfX1cbiAgICAgICAgICAgICAgICBrZXk9e2BmaWx0ZXItYmFkZ2UtZmVhdHVyZS0ke2Fzc2lnbmVkLmxhYmVsfX1gfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgICAgICAgICA8UmFkaW9cbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17YXNzaWduZWQudmFsdWV9XG4gICAgICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiJiAuTXVpU3ZnSWNvbi1yb290XCI6IHsgZm9udFNpemU6IDE4IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBcIiYuTXVpLWNoZWNrZWRcIjogeyBjb2xvcjogXCIjMjE5NkYzXCIgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBsYWJlbD17YXNzaWduZWQubGFiZWx9XG4gICAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICBcIiYgLk11aUZvcm1Db250cm9sTGFiZWwtbGFiZWxcIjoge1xuICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiBcIjFlbVwiXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L1JhZGlvR3JvdXA+XG4gICAgICAgIDwvQ2FyZENvbnRlbnQ+XG4gICAgICA8L0NvbGxhcHNlPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuQXNzaWduZWRGaWx0ZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEFzc2lnbmVkRmlsdGVyO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgQ2hlY2tib3gsXG4gIENhcmRIZWFkZXIsXG4gIEljb25CdXR0b24sXG4gIENvbGxhcHNlLFxuICBDYXJkQ29udGVudFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEV4cGFuZE1vcmVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0V4cGFuZE1vcmVcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRSB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5cbmNvbnN0IEJhZGdlRmVhdHVyZUZpbHRlciA9ICh7IG9uRmlsdGVyIH0pID0+IHtcbiAgY29uc3Qge1xuICAgIHN1bW1pdDogeyBiYWRnZV9mZWF0dXJlc190eXBlcyB9LFxuICAgIGZpbHRlcjogeyBGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkU6IGZpbHRlclZhbHVlcyB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuXG4gIGNvbnN0IFtpc0V4cGFuZGVkLCBzZXRJc0V4cGFuZGVkXSA9IHVzZVN0YXRlKCEhZmlsdGVyVmFsdWVzLmxlbmd0aCk7XG5cbiAgY29uc3QgaGFuZGxlRmlsdGVyQ2hhbmdlID0gKHZhbHVlKSA9PiB7XG4gICAgY29uc3QgbmV3RmlsdGVycyA9IGZpbHRlclZhbHVlcz8uaW5jbHVkZXModmFsdWUpXG4gICAgICA/IGZpbHRlclZhbHVlcy5maWx0ZXIoKGYpID0+IGYgIT09IHZhbHVlKVxuICAgICAgOiBbLi4uZmlsdGVyVmFsdWVzLCB2YWx1ZV07XG4gICAgb25GaWx0ZXIoe1xuICAgICAgW0ZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRV06IG5ld0ZpbHRlcnNcbiAgICB9KTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldElzRXhwYW5kZWQoISFmaWx0ZXJWYWx1ZXMubGVuZ3RoKTtcbiAgfSwgW2ZpbHRlclZhbHVlc10pO1xuXG4gIGlmICghYmFkZ2VfZmVhdHVyZXNfdHlwZXMgfHwgYmFkZ2VfZmVhdHVyZXNfdHlwZXMubGVuZ3RoID09PSAwKSByZXR1cm4gbnVsbDtcblxuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8Q2FyZEhlYWRlclxuICAgICAgICB0aXRsZT1cIkJhZGdlIEZlYXR1cmVcIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aXRsZVdyYXBwZXJ9XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHNldElzRXhwYW5kZWQoIWlzRXhwYW5kZWQpfVxuICAgICAgICBhY3Rpb249e1xuICAgICAgICAgIDxJY29uQnV0dG9uIGFyaWEtbGFiZWw9XCJleHBhbmRcIiBkaXNhYmxlUmlwcGxlPlxuICAgICAgICAgICAgPEV4cGFuZE1vcmVJY29uXG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBpc0V4cGFuZGVkID8gXCJyb3RhdGUoMTgwZGVnKVwiIDogXCJyb3RhdGUoMGRlZylcIixcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBcInRyYW5zZm9ybSAwLjNzXCJcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICB9XG4gICAgICAvPlxuICAgICAgPENvbGxhcHNlIGluPXtpc0V4cGFuZGVkfSB0aW1lb3V0PVwiYXV0b1wiIHVubW91bnRPbkV4aXQ+XG4gICAgICAgIDxDYXJkQ29udGVudFxuICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICBweTogMCxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjMDAwMDAwMEFcIixcbiAgICAgICAgICAgIFwiJjpsYXN0LWNoaWxkXCI6IHtcbiAgICAgICAgICAgICAgcGI6IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAge2JhZGdlX2ZlYXR1cmVzX3R5cGVzLm1hcCgoYmYpID0+IChcbiAgICAgICAgICAgIDxCb3ggc3g9e3sgcHk6IDEgfX0ga2V5PXtgZmlsdGVyLWJhZGdlLWZlYXR1cmUtJHtiZi5uYW1lfX1gfT5cbiAgICAgICAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KCkgPT4gaGFuZGxlRmlsdGVyQ2hhbmdlKGJmLmlkKX1cbiAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17ZmlsdGVyVmFsdWVzLmluY2x1ZGVzKGJmLmlkKX1cbiAgICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgICBcIiYgLk11aVN2Z0ljb24tcm9vdFwiOiB7IGZvbnRTaXplOiAxOCB9LFxuICAgICAgICAgICAgICAgICAgICAgIFwiJi5NdWktY2hlY2tlZFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogXCIjMjE5NkYzXCJcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsYWJlbD17YmYubmFtZX1cbiAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgXCImIC5NdWlGb3JtQ29udHJvbExhYmVsLWxhYmVsXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6IFwiMWVtXCJcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvQ2FyZENvbnRlbnQ+XG4gICAgICA8L0NvbGxhcHNlPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuQmFkZ2VGZWF0dXJlRmlsdGVyLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBCYWRnZUZlYXR1cmVGaWx0ZXI7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZVJlZiwgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgU3RhY2sgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIjtcbmltcG9ydCBGaWx0ZXJMaXN0SWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9GaWx0ZXJMaXN0XCI7XG5pbXBvcnQge1xuICBCYWRnZSxcbiAgQm94LFxuICBCdXR0b24sXG4gIENhcmQsXG4gIENhcmRIZWFkZXIsXG4gIERpdmlkZXIsXG4gIFBhcGVyXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBjb25uZWN0IH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgQmFkZ2VGZWF0dXJlRmlsdGVyIGZyb20gXCIuL0JhZGdlRmVhdHVyZUZpbHRlclwiO1xuaW1wb3J0IHtcbiAgRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFLFxuICBGSUxURVJfVkFSX0ZSRUVfUEFJRCxcbiAgRklMVEVSX1ZBUl9PV05FUl9TVEFUVVMsXG4gIEZJTFRFUl9WQVJfUFJPTU9DT0RFLFxuICBGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRCxcbiAgRklMVEVSX1ZBUl9USUNLRVRfVFlQRVxufSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IFRpY2tldFR5cGVGaWx0ZXIgZnJvbSBcIi4vVGlja2V0VHlwZUZpbHRlclwiO1xuaW1wb3J0IEFzc2lnbmVkRmlsdGVyIGZyb20gXCIuL0Fzc2lnbmVkRmlsdGVyXCI7XG5pbXBvcnQgU3RhdHVzRmlsdGVyIGZyb20gXCIuL1N0YXR1c0ZpbHRlclwiO1xuaW1wb3J0IEZyZWVQYWlkRmlsdGVyIGZyb20gXCIuL0ZyZWVQYWlkRmlsdGVyXCI7XG5pbXBvcnQgUHJvbW9Db2RlRmlsdGVyIGZyb20gXCIuL1Byb21vQ29kZUZpbHRlclwiO1xuXG5jb25zdCBGaWx0ZXIgPSAoeyBvbkZpbHRlciwgb25SZXNldCwgZmlsdGVyLCBhY3RpdmVGaWx0ZXJzQ291bnQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtzaG93RmlsdGVyTGlzdCwgc2V0U2hvd0ZpbHRlckxpc3RdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbc2hvd0RhdGVwaWNrZXIsIHNldFNob3dEYXRlcGlja2VyXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgZmlsdGVyUmVmID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCBoYW5kbGVGaWx0ZXJDbGlja091dHNpZGUgPSAoZXZlbnQpID0+IHtcbiAgICBpZiAoZmlsdGVyUmVmLmN1cnJlbnQgJiYgIWZpbHRlclJlZi5jdXJyZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgIGlmIChzaG93RmlsdGVyTGlzdCkge1xuICAgICAgICBzZXRTaG93RmlsdGVyTGlzdChmYWxzZSk7XG4gICAgICAgIHNldFNob3dEYXRlcGlja2VyKGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZUZpbHRlckNsaWNrT3V0c2lkZSwgZmFsc2UpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlRmlsdGVyQ2xpY2tPdXRzaWRlLCBmYWxzZSk7XG4gICAgfTtcbiAgfSwgW3Nob3dGaWx0ZXJMaXN0XSk7XG5cbiAgY29uc3QgdG9nZ2xlID0gKCkgPT4ge1xuICAgIHNldFNob3dGaWx0ZXJMaXN0KCFzaG93RmlsdGVyTGlzdCk7XG4gICAgc2V0U2hvd0RhdGVwaWNrZXIoIXNob3dEYXRlcGlja2VyKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGaWx0ZXJSZXNldCA9ICgpID0+IHtcbiAgICBvblJlc2V0KCk7XG4gICAgdG9nZ2xlKCk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlckNvbnRhaW5lcn0gcmVmPXtmaWx0ZXJSZWZ9PlxuICAgICAgPFN0YWNrXG4gICAgICAgIGFsaWduSXRlbXM9XCJjZW50ZXJcIlxuICAgICAgICBkaXJlY3Rpb249XCJyb3dcIlxuICAgICAgICBzeD17eyBwdDogMiwgcGI6IDIgfX1cbiAgICAgICAgb25DbGljaz17dG9nZ2xlfVxuICAgICAgPlxuICAgICAgICA8QmFkZ2UgYmFkZ2VDb250ZW50PXthY3RpdmVGaWx0ZXJzQ291bnR9IGNvbG9yPVwicHJpbWFyeVwiIHN4PXt7IG1yOiAxIH19PlxuICAgICAgICAgIDxGaWx0ZXJMaXN0SWNvbiBmb250U2l6ZT1cImxhcmdlXCIgY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVySWNvbn0gLz5cbiAgICAgICAgPC9CYWRnZT5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyTGFiZWx9Pnt0KFwiZmlsdGVyLmZpbHRlclwiKX08L3NwYW4+XG4gICAgICA8L1N0YWNrPlxuICAgICAgPEJveFxuICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5maWx0ZXJMaXN0Q29udGFpbmVyfSAke3N0eWxlcy5jb250YWluZXJ9ICR7XG4gICAgICAgICAgc2hvd0ZpbHRlckxpc3QgPyBzdHlsZXMuc2hvd0ZpbHRlckxpc3QgOiBcIlwiXG4gICAgICAgIH1gfVxuICAgICAgPlxuICAgICAgICA8UGFwZXIgZWxldmF0aW9uPXs4fSBjbGFzc05hbWU9e3N0eWxlcy5maWx0ZXJDaGVja2JveENvbnRhaW5lcn0+XG4gICAgICAgICAgPENhcmQgdmFyaWFudD1cIm91dGxpbmVkXCI+XG4gICAgICAgICAgICA8Q2FyZEhlYWRlclxuICAgICAgICAgICAgICB0aXRsZT1cIkZpbHRlcnNcIlxuICAgICAgICAgICAgICBhY3Rpb249e1xuICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgIGRpc2FibGVSaXBwbGVcbiAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUZpbHRlclJlc2V0fVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY2xlYW5CdXR0b259XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3QoXCJmaWx0ZXIuY2xlYXJcIil9XG4gICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8RGl2aWRlciAvPlxuICAgICAgICAgICAgPEJhZGdlRmVhdHVyZUZpbHRlclxuICAgICAgICAgICAgICB2YWx1ZXM9e2ZpbHRlcltGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkVdfVxuICAgICAgICAgICAgICBvbkZpbHRlcj17KG5ld0ZpbHRlcikgPT4gb25GaWx0ZXIobmV3RmlsdGVyKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8QXNzaWduZWRGaWx0ZXJcbiAgICAgICAgICAgICAgdmFsdWVzPXtmaWx0ZXJbRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORURdfVxuICAgICAgICAgICAgICBvbkZpbHRlcj17KG5ld0ZpbHRlcikgPT4gb25GaWx0ZXIobmV3RmlsdGVyKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8U3RhdHVzRmlsdGVyXG4gICAgICAgICAgICAgIHZhbHVlcz17ZmlsdGVyW0ZJTFRFUl9WQVJfT1dORVJfU1RBVFVTXX1cbiAgICAgICAgICAgICAgb25GaWx0ZXI9eyhuZXdGaWx0ZXIpID0+IG9uRmlsdGVyKG5ld0ZpbHRlcil9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPFRpY2tldFR5cGVGaWx0ZXJcbiAgICAgICAgICAgICAgdmFsdWVzPXtmaWx0ZXJbRklMVEVSX1ZBUl9USUNLRVRfVFlQRV19XG4gICAgICAgICAgICAgIG9uRmlsdGVyPXsobmV3RmlsdGVyKSA9PiBvbkZpbHRlcihuZXdGaWx0ZXIpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxQcm9tb0NvZGVGaWx0ZXJcbiAgICAgICAgICAgICAgdmFsdWVzPXtmaWx0ZXJbRklMVEVSX1ZBUl9QUk9NT0NPREVdfVxuICAgICAgICAgICAgICBvbkZpbHRlcj17KG5ld0ZpbHRlcikgPT4gb25GaWx0ZXIobmV3RmlsdGVyKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8RnJlZVBhaWRGaWx0ZXJcbiAgICAgICAgICAgICAgdmFsdWVzPXtmaWx0ZXJbRklMVEVSX1ZBUl9GUkVFX1BBSURdfVxuICAgICAgICAgICAgICBvbkZpbHRlcj17KG5ld0ZpbHRlcikgPT4gb25GaWx0ZXIobmV3RmlsdGVyKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9DYXJkPlxuICAgICAgICA8L1BhcGVyPlxuICAgICAgPC9Cb3g+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5GaWx0ZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmNvbnN0IG1hcFN0YXRlVG9Qcm9wcyA9ICh7IHdpZGdldFN0YXRlIH0pID0+ICh7XG4gIHNvcnQ6IHdpZGdldFN0YXRlLnNvcnQsXG4gIGZpbHRlcjogd2lkZ2V0U3RhdGUuZmlsdGVyLFxuICBhY3RpdmVGaWx0ZXJzQ291bnQ6IHdpZGdldFN0YXRlLmFjdGl2ZUZpbHRlcnNDb3VudFxufSk7XG5cbmV4cG9ydCBkZWZhdWx0IGNvbm5lY3QobWFwU3RhdGVUb1Byb3BzLCB7fSkoRmlsdGVyKTtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQm94LFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBDYXJkSGVhZGVyLFxuICBJY29uQnV0dG9uLFxuICBDb2xsYXBzZSxcbiAgQ2FyZENvbnRlbnQsXG4gIFJhZGlvR3JvdXAsXG4gIFJhZGlvXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgRXhwYW5kTW9yZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXhwYW5kTW9yZVwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgRklMVEVSX1ZBUl9GUkVFX1BBSUQgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuXG5jb25zdCBGcmVlUGFpZEZpbHRlciA9ICh7IG9uRmlsdGVyIH0pID0+IHtcbiAgY29uc3Qge1xuICAgIGZpbHRlcjogeyBGSUxURVJfVkFSX0ZSRUVfUEFJRDogZmlsdGVyVmFsdWVzIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG5cbiAgY29uc3QgW2lzRXhwYW5kZWQsIHNldElzRXhwYW5kZWRdID0gdXNlU3RhdGUoISFmaWx0ZXJWYWx1ZXMpO1xuXG4gIGNvbnN0IGFzc2lnbmVkVmFsdWVzID0gW1xuICAgIHsgdmFsdWU6IFwiRnJlZVwiLCBsYWJlbDogXCJGcmVlXCIgfSxcbiAgICB7IHZhbHVlOiBcIlBhaWRcIiwgbGFiZWw6IFwiUGFpZFwiIH1cbiAgXTtcblxuICBjb25zdCBoYW5kbGVGaWx0ZXJDaGFuZ2UgPSAoZXYsIHZhbHVlKSA9PiB7XG4gICAgY29uc3QgbmV3RmlsdGVyID0gdmFsdWU7XG4gICAgb25GaWx0ZXIoe1xuICAgICAgW0ZJTFRFUl9WQVJfRlJFRV9QQUlEXTogbmV3RmlsdGVyXG4gICAgfSk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPENhcmRIZWFkZXJcbiAgICAgICAgdGl0bGU9XCJGcmVlIC8gUGFpZFwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlV3JhcHBlcn1cbiAgICAgICAgb25DbGljaz17KCkgPT4gc2V0SXNFeHBhbmRlZCghaXNFeHBhbmRlZCl9XG4gICAgICAgIGFjdGlvbj17XG4gICAgICAgICAgPEljb25CdXR0b24gYXJpYS1sYWJlbD1cImV4cGFuZFwiIGRpc2FibGVSaXBwbGU+XG4gICAgICAgICAgICA8RXhwYW5kTW9yZUljb25cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IGlzRXhwYW5kZWQgPyBcInJvdGF0ZSgxODBkZWcpXCIgOiBcInJvdGF0ZSgwZGVnKVwiLFxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IFwidHJhbnNmb3JtIDAuM3NcIlxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgICA8Q29sbGFwc2UgaW49e2lzRXhwYW5kZWR9IHRpbWVvdXQ9XCJhdXRvXCIgdW5tb3VudE9uRXhpdD5cbiAgICAgICAgPENhcmRDb250ZW50XG4gICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgIHB5OiAwLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiMwMDAwMDAwQVwiLFxuICAgICAgICAgICAgXCImOmxhc3QtY2hpbGRcIjoge1xuICAgICAgICAgICAgICBwYjogMFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICA8UmFkaW9Hcm91cCB2YWx1ZT17ZmlsdGVyVmFsdWVzfSBvbkNoYW5nZT17aGFuZGxlRmlsdGVyQ2hhbmdlfT5cbiAgICAgICAgICAgIHthc3NpZ25lZFZhbHVlcy5tYXAoKGFzc2lnbmVkKSA9PiAoXG4gICAgICAgICAgICAgIDxCb3hcbiAgICAgICAgICAgICAgICBzeD17eyBweTogMSB9fVxuICAgICAgICAgICAgICAgIGtleT17YGZpbHRlci1iYWRnZS1mZWF0dXJlLSR7YXNzaWduZWQubGFiZWx9fWB9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICAgICAgICAgIDxSYWRpb1xuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXthc3NpZ25lZC52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICAgICAgXCImIC5NdWlTdmdJY29uLXJvb3RcIjogeyBmb250U2l6ZTogMTggfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiJi5NdWktY2hlY2tlZFwiOiB7IGNvbG9yOiBcIiMyMTk2RjNcIiB9XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGxhYmVsPXthc3NpZ25lZC5sYWJlbH1cbiAgICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICAgIFwiJiAuTXVpRm9ybUNvbnRyb2xMYWJlbC1sYWJlbFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6IFwiMWVtXCJcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgIDwvUmFkaW9Hcm91cD5cbiAgICAgICAgPC9DYXJkQ29udGVudD5cbiAgICAgIDwvQ29sbGFwc2U+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5GcmVlUGFpZEZpbHRlci5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgRnJlZVBhaWRGaWx0ZXI7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBCb3gsXG4gIENhcmRIZWFkZXIsXG4gIEljb25CdXR0b24sXG4gIENvbGxhcHNlLFxuICBDYXJkQ29udGVudCxcbiAgVGV4dEZpZWxkXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgRXhwYW5kTW9yZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXhwYW5kTW9yZVwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgRklMVEVSX1ZBUl9QUk9NT0NPREUgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuXG5jb25zdCBQcm9tb0NvZGVGaWx0ZXIgPSAoeyBvbkZpbHRlciB9KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBmaWx0ZXI6IHsgRklMVEVSX1ZBUl9QUk9NT0NPREU6IGZpbHRlclZhbHVlcyB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuXG4gIGNvbnN0IFtpc0V4cGFuZGVkLCBzZXRJc0V4cGFuZGVkXSA9IHVzZVN0YXRlKCEhZmlsdGVyVmFsdWVzKTtcbiAgY29uc3QgW3Byb21vQ29kZSwgc2V0UHJvbW9Db2RlXSA9IHVzZVN0YXRlKGZpbHRlclZhbHVlcyB8fCBcIlwiKTtcblxuICBjb25zdCBkZWJvdW5jZVRpbWVyID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCBERUJPVU5DRV9WQUxVRSA9IDUwMDtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldFByb21vQ29kZShmaWx0ZXJWYWx1ZXMgfHwgXCJcIik7XG4gICAgc2V0SXNFeHBhbmRlZCghIWZpbHRlclZhbHVlcyk7XG4gIH0sIFtmaWx0ZXJWYWx1ZXNdKTtcblxuICBjb25zdCBoYW5kbGVGaWx0ZXJDaGFuZ2UgPSAoZXYpID0+IHtcbiAgICBjb25zdCBuZXdQcm9tb0NvZGUgPSBldi50YXJnZXQudmFsdWU7XG4gICAgLy8gdXBkYXRlIGxvY2FsIHN0YXRlIHNvIHRoZSBpbnB1dCByZWZsZWN0cyBjaGFuZ2VzXG4gICAgc2V0UHJvbW9Db2RlKG5ld1Byb21vQ29kZSk7XG5cbiAgICAvLyByZW1vdmUgY3VycmVudCBkZWJvdW5jZVxuICAgIGlmIChkZWJvdW5jZVRpbWVyLmN1cnJlbnQpIHtcbiAgICAgIGNsZWFyVGltZW91dChkZWJvdW5jZVRpbWVyLmN1cnJlbnQpO1xuICAgIH1cblxuICAgIC8vIGRlYm91bmNlIHNldCB0byA1MDAgbXNcbiAgICBkZWJvdW5jZVRpbWVyLmN1cnJlbnQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIG9uRmlsdGVyKHtcbiAgICAgICAgW0ZJTFRFUl9WQVJfUFJPTU9DT0RFXTogbmV3UHJvbW9Db2RlXG4gICAgICB9KTtcbiAgICB9LCBERUJPVU5DRV9WQUxVRSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyByZW1vdmUgZGVib3VuY2Ugb24gcmVsb2FkXG4gICAgaWYgKGRlYm91bmNlVGltZXIuY3VycmVudCkge1xuICAgICAgY2xlYXJUaW1lb3V0KGRlYm91bmNlVGltZXIuY3VycmVudCk7XG4gICAgfVxuICB9LCBbXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPENhcmRIZWFkZXJcbiAgICAgICAgdGl0bGU9XCJQcm9tbyBDb2RlXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGl0bGVXcmFwcGVyfVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRJc0V4cGFuZGVkKCFpc0V4cGFuZGVkKX1cbiAgICAgICAgYWN0aW9uPXtcbiAgICAgICAgICA8SWNvbkJ1dHRvbiBhcmlhLWxhYmVsPVwiZXhwYW5kXCIgZGlzYWJsZVJpcHBsZT5cbiAgICAgICAgICAgIDxFeHBhbmRNb3JlSWNvblxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogaXNFeHBhbmRlZCA/IFwicm90YXRlKDE4MGRlZylcIiA6IFwicm90YXRlKDBkZWcpXCIsXG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogXCJ0cmFuc2Zvcm0gMC4zc1wiXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgfVxuICAgICAgLz5cbiAgICAgIDxDb2xsYXBzZSBpbj17aXNFeHBhbmRlZH0gdGltZW91dD1cImF1dG9cIiB1bm1vdW50T25FeGl0PlxuICAgICAgICA8Q2FyZENvbnRlbnRcbiAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiMwMDAwMDAwQVwiLFxuICAgICAgICAgICAgXCImOmxhc3QtY2hpbGRcIjoge1xuICAgICAgICAgICAgICBweTogMVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJFbnRlciBwcm9tbyBjb2RlXCJcbiAgICAgICAgICAgIHZhbHVlPXtwcm9tb0NvZGV9XG4gICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlRmlsdGVyQ2hhbmdlfVxuICAgICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9DYXJkQ29udGVudD5cbiAgICAgIDwvQ29sbGFwc2U+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5Qcm9tb0NvZGVGaWx0ZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFByb21vQ29kZUZpbHRlcjtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBzaGFsbG93RXF1YWwsIHVzZVNlbGVjdG9yIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyBzdHlsZWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCBTZWFyY2hJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL1NlYXJjaFwiO1xuaW1wb3J0IENsb3NlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DbG9zZVwiO1xuaW1wb3J0IElucHV0QmFzZSBmcm9tIFwiQG11aS9tYXRlcmlhbC9JbnB1dEJhc2VcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBGSUxURVJfVkFSX09SREVSX05VTUJFUiB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5cbmNvbnN0IFNlYXJjaENvbnRhaW5lciA9IHN0eWxlZChcImRpdlwiKSgoKSA9PiAoe1xuICBwb3NpdGlvbjogXCJyZWxhdGl2ZVwiLFxuICBtYXJnaW5SaWdodDogXCIwXCIsXG4gIG1hcmdpbkxlZnQ6IFwiMFwiLFxuICB3aWR0aDogXCIxMDAlXCIsXG4gIGRpc3BsYXk6IFwiYmxvY2tcIlxufSkpO1xuY29uc3QgU2VhcmNoSWNvbldyYXBwZXIgPSBzdHlsZWQoXCJkaXZcIikoKCkgPT4gKHtcbiAgaGVpZ2h0OiBcIjEwMCVcIixcbiAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgZGlzcGxheTogXCJmbGV4XCIsXG4gIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG4gIGp1c3RpZnlDb250ZW50OiBcImNlbnRlclwiXG59KSk7XG5jb25zdCBTdHlsZWRJbnB1dEJhc2UgPSBzdHlsZWQoSW5wdXRCYXNlKSgoKSA9PiAoe1xuICBjb2xvcjogXCJpbmhlcml0XCIsXG4gIGJvcmRlckJvdHRvbTogXCIxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjQyKVwiLFxuICBwYWRkaW5nTGVmdDogXCIyNXB4XCIsXG4gIHBhZGRpbmdSaWdodDogXCIyNXB4XCIsXG4gIGZvbnRTaXplOiBcIjFlbVwiXG59KSk7XG5jb25zdCBDbG9zZUljb25XcmFwcGVyID0gc3R5bGVkKENsb3NlSWNvbikoKCkgPT4gKHtcbiAgcGFkZGluZzogXCIycHhcIixcbiAgZm9udFNpemU6IFwiMS41ZW1cIixcbiAgaGVpZ2h0OiBcIjEwMCVcIixcbiAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgdG9wOiBcIjBcIixcbiAgcmlnaHQ6IFwiMFwiLFxuICBkaXNwbGF5OiBcImZsZXhcIixcbiAgYWxpZ25JdGVtczogXCJjZW50ZXJcIixcbiAganVzdGlmeUNvbnRlbnQ6IFwiY2VudGVyXCIsXG4gIGN1cnNvcjogXCJwb2ludGVyXCIsXG4gIHpJbmRleDogXCIxMDAwXCJcbn0pKTtcblxuY29uc3QgU2VhcmNoID0gKHsgb25TZWFyY2ggfSkgPT4ge1xuICBjb25zdCB7IGZpbHRlciB9ID0gdXNlU2VsZWN0b3IoXG4gICAgKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSxcbiAgICBzaGFsbG93RXF1YWxcbiAgKTtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbc2VhcmNoVmFsdWUsIHNldFNlYXJjaFZhbHVlXSA9IHVzZVN0YXRlKFwiXCIpO1xuICBjb25zdCBzaG93Q2xvc2VCdG4gPSAhIWZpbHRlcltGSUxURVJfVkFSX09SREVSX05VTUJFUl07XG5cbiAgY29uc3Qgb25LZXlEb3duID0gKGV2ZW50KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAga2V5LFxuICAgICAgbmF0aXZlRXZlbnQ6IHtcbiAgICAgICAgdGFyZ2V0OiB7IHZhbHVlIH1cbiAgICAgIH1cbiAgICB9ID0gZXZlbnQ7XG4gICAgaWYgKGtleSA9PT0gXCJFbnRlclwiKSB7XG4gICAgICBvblNlYXJjaCh7XG4gICAgICAgIFtGSUxURVJfVkFSX09SREVSX05VTUJFUl06IHZhbHVlXG4gICAgICB9KTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IHJlc2V0U2VhcmNoID0gKCkgPT4ge1xuICAgIHNldFNlYXJjaFZhbHVlKFwiXCIpO1xuICAgIG9uU2VhcmNoKHtcbiAgICAgIFtGSUxURVJfVkFSX09SREVSX05VTUJFUl06IFwiXCJcbiAgICB9KTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIHdlIG5lZWQgdGhpcyB3aGVuIHNlYXJjaCBpcyByZXNldCBmcm9tIG91dHNpZGUgdGhpcyBjb21wb25lbnRcbiAgICBzZXRTZWFyY2hWYWx1ZShmaWx0ZXJbRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJdKTtcbiAgfSwgW2ZpbHRlcltGSUxURVJfVkFSX09SREVSX05VTUJFUl1dKTtcblxuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8U2VhcmNoQ29udGFpbmVyPlxuICAgICAgICB7c2hvd0Nsb3NlQnRuICYmIChcbiAgICAgICAgICA8Q2xvc2VJY29uV3JhcHBlciBvbkNsaWNrPXtyZXNldFNlYXJjaH0+XG4gICAgICAgICAgICA8Q2xvc2VJY29uIC8+XG4gICAgICAgICAgPC9DbG9zZUljb25XcmFwcGVyPlxuICAgICAgICApfVxuICAgICAgICA8U2VhcmNoSWNvbldyYXBwZXI+XG4gICAgICAgICAgPFNlYXJjaEljb24gLz5cbiAgICAgICAgPC9TZWFyY2hJY29uV3JhcHBlcj5cbiAgICAgICAgPFN0eWxlZElucHV0QmFzZVxuICAgICAgICAgIHBsYWNlaG9sZGVyPXt0KFwib3JkZXJfc2VhcmNoLm9yZGVyX251bWJlclwiKX1cbiAgICAgICAgICBpbnB1dFByb3BzPXt7IFwiYXJpYS1sYWJlbFwiOiBcInNlYXJjaFwiIH19XG4gICAgICAgICAgdmFsdWU9e3NlYXJjaFZhbHVlfVxuICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0U2VhcmNoVmFsdWUoZS50YXJnZXQudmFsdWUpfVxuICAgICAgICAgIG9uS2V5RG93bj17b25LZXlEb3dufVxuICAgICAgICAvPlxuICAgICAgPC9TZWFyY2hDb250YWluZXI+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5TZWFyY2gucHJvcFR5cGVzID0ge1xuICBvblNlYXJjaDogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFNlYXJjaDtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlUmVmLCB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBTdGFjayBmcm9tIFwiQG11aS9tYXRlcmlhbC9TdGFja1wiO1xuaW1wb3J0IHsgQm94LCBCdXR0b24sIFBhcGVyIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBJbXBvcnRFeHBvcnRJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ltcG9ydEV4cG9ydFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBTb3J0ID0gKHsgb25Tb3J0IH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbc2hvd1NvcnQsIHNldFNob3dTb3J0XSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3Qgc29ydFJlZiA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgaGFuZGxlU29ydENsaWNrT3V0c2lkZSA9IChldmVudCkgPT4ge1xuICAgIGlmIChzb3J0UmVmLmN1cnJlbnQgJiYgIXNvcnRSZWYuY3VycmVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICBzZXRTaG93U29ydChmYWxzZSk7XG4gICAgfVxuICB9O1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVTb3J0Q2xpY2tPdXRzaWRlLCBmYWxzZSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVTb3J0Q2xpY2tPdXRzaWRlLCBmYWxzZSk7XG4gICAgfTtcbiAgfSwgW3Nob3dTb3J0XSk7XG5cbiAgY29uc3QgdG9nZ2xlID0gKCkgPT4ge1xuICAgIHNldFNob3dTb3J0KCFzaG93U29ydCk7XG4gIH07XG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5zb3J0Q29udGFpbmVyfSBvbkNsaWNrPXt0b2dnbGV9PlxuICAgICAgPFN0YWNrXG4gICAgICAgIHJlZj17c29ydFJlZn1cbiAgICAgICAgYWxpZ25JdGVtcz1cImNlbnRlclwiXG4gICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgICAgIHN4PXt7IHB0OiAyLCBwYjogMiB9fVxuICAgICAgPlxuICAgICAgICA8SW1wb3J0RXhwb3J0SWNvbiBmb250U2l6ZT1cImxhcmdlXCIgY2xhc3NOYW1lPXtzdHlsZXMuc29ydEljb259IC8+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLnNvcnRMYWJlbH0+e3QoXCJzb3J0LnNvcnRcIil9PC9zcGFuPlxuICAgICAgPC9TdGFjaz5cbiAgICAgIHtzaG93U29ydCAmJiAoXG4gICAgICAgIDxQYXBlclxuICAgICAgICAgIGVsZXZhdGlvbj17OH1cbiAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5zb3J0TGlzdENvbnRhaW5lcn0gJHtzdHlsZXMuY29udGFpbmVyfWB9XG4gICAgICAgID5cbiAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICBkaXNhYmxlUmlwcGxlXG4gICAgICAgICAgICB2YXJpYW50PVwidGV4dFwiXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5sYWJlbH1cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uU29ydCh7IGRpcmVjdGlvbjogXCJkZXNjXCIsIG5hbWU6IFwiY3JlYXRlZFwiIH0pfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt0KFwic29ydC5uZXdfZmlyc3RcIil9XG4gICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgZGlzYWJsZVJpcHBsZVxuICAgICAgICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMubGFiZWx9XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvblNvcnQoeyBkaXJlY3Rpb246IFwiYXNjXCIsIG5hbWU6IFwiY3JlYXRlZFwiIH0pfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt0KFwic29ydC5vbGRfZmlyc3RcIil9XG4gICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIDwvUGFwZXI+XG4gICAgICApfVxuICAgIDwvQm94PlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgU29ydDtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQm94LFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBDYXJkSGVhZGVyLFxuICBJY29uQnV0dG9uLFxuICBDb2xsYXBzZSxcbiAgQ2FyZENvbnRlbnQsXG4gIFJhZGlvR3JvdXAsXG4gIFJhZGlvXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgRXhwYW5kTW9yZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXhwYW5kTW9yZVwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgRklMVEVSX1ZBUl9PV05FUl9TVEFUVVMgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuXG5jb25zdCBTdGF0dXNGaWx0ZXIgPSAoeyBvbkZpbHRlciB9KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBmaWx0ZXI6IHsgRklMVEVSX1ZBUl9PV05FUl9TVEFUVVM6IGZpbHRlclZhbHVlcyB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuXG4gIGNvbnN0IFtpc0V4cGFuZGVkLCBzZXRJc0V4cGFuZGVkXSA9IHVzZVN0YXRlKCEhZmlsdGVyVmFsdWVzKTtcblxuICBjb25zdCBhc3NpZ25lZFZhbHVlcyA9IFtcbiAgICB7IHZhbHVlOiBcIkluY29tcGxldGVcIiwgbGFiZWw6IFwiSW5jb21wbGV0ZVwiIH0sXG4gICAgeyB2YWx1ZTogXCJDb21wbGV0ZVwiLCBsYWJlbDogXCJDb21wbGV0ZVwiIH1cbiAgXTtcblxuICBjb25zdCBoYW5kbGVGaWx0ZXJDaGFuZ2UgPSAoZXYsIHZhbHVlKSA9PiB7XG4gICAgY29uc3QgbmV3RmlsdGVyID0gdmFsdWU7XG4gICAgb25GaWx0ZXIoe1xuICAgICAgW0ZJTFRFUl9WQVJfT1dORVJfU1RBVFVTXTogbmV3RmlsdGVyXG4gICAgfSk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPENhcmRIZWFkZXJcbiAgICAgICAgdGl0bGU9XCJTdGF0dXNcIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aXRsZVdyYXBwZXJ9XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHNldElzRXhwYW5kZWQoIWlzRXhwYW5kZWQpfVxuICAgICAgICBhY3Rpb249e1xuICAgICAgICAgIDxJY29uQnV0dG9uIGFyaWEtbGFiZWw9XCJleHBhbmRcIiBkaXNhYmxlUmlwcGxlPlxuICAgICAgICAgICAgPEV4cGFuZE1vcmVJY29uXG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBpc0V4cGFuZGVkID8gXCJyb3RhdGUoMTgwZGVnKVwiIDogXCJyb3RhdGUoMGRlZylcIixcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBcInRyYW5zZm9ybSAwLjNzXCJcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICB9XG4gICAgICAvPlxuICAgICAgPENvbGxhcHNlIGluPXtpc0V4cGFuZGVkfSB0aW1lb3V0PVwiYXV0b1wiIHVubW91bnRPbkV4aXQ+XG4gICAgICAgIDxDYXJkQ29udGVudFxuICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICBweTogMCxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjMDAwMDAwMEFcIixcbiAgICAgICAgICAgIFwiJjpsYXN0LWNoaWxkXCI6IHtcbiAgICAgICAgICAgICAgcGI6IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgPFJhZGlvR3JvdXAgdmFsdWU9e2ZpbHRlclZhbHVlc30gb25DaGFuZ2U9e2hhbmRsZUZpbHRlckNoYW5nZX0+XG4gICAgICAgICAgICB7YXNzaWduZWRWYWx1ZXMubWFwKChhc3NpZ25lZCkgPT4gKFxuICAgICAgICAgICAgICA8Qm94XG4gICAgICAgICAgICAgICAgc3g9e3sgcHk6IDEgfX1cbiAgICAgICAgICAgICAgICBrZXk9e2BmaWx0ZXItYmFkZ2UtZmVhdHVyZS0ke2Fzc2lnbmVkLmxhYmVsfX1gfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgICAgICAgICA8UmFkaW9cbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17YXNzaWduZWQudmFsdWV9XG4gICAgICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiJiAuTXVpU3ZnSWNvbi1yb290XCI6IHsgZm9udFNpemU6IDE4IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBcIiYuTXVpLWNoZWNrZWRcIjogeyBjb2xvcjogXCIjMjE5NkYzXCIgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBsYWJlbD17YXNzaWduZWQubGFiZWx9XG4gICAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICBcIiYgLk11aUZvcm1Db250cm9sTGFiZWwtbGFiZWxcIjoge1xuICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiBcIjFlbVwiXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L1JhZGlvR3JvdXA+XG4gICAgICAgIDwvQ2FyZENvbnRlbnQ+XG4gICAgICA8L0NvbGxhcHNlPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuU3RhdHVzRmlsdGVyLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBTdGF0dXNGaWx0ZXI7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQm94LFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBDaGVja2JveCxcbiAgQ2FyZEhlYWRlcixcbiAgSWNvbkJ1dHRvbixcbiAgQ29sbGFwc2UsXG4gIENhcmRDb250ZW50XG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgRXhwYW5kTW9yZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXhwYW5kTW9yZVwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgRklMVEVSX1ZBUl9USUNLRVRfVFlQRSB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5cbmNvbnN0IFRpY2tldFR5cGVGaWx0ZXIgPSAoeyBvbkZpbHRlciB9KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBzdW1taXQ6IHsgdGlja2V0X3R5cGVzIH0sXG4gICAgZmlsdGVyOiB7IEZJTFRFUl9WQVJfVElDS0VUX1RZUEU6IGZpbHRlclZhbHVlcyB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuXG4gIGNvbnN0IFtpc0V4cGFuZGVkLCBzZXRJc0V4cGFuZGVkXSA9IHVzZVN0YXRlKCEhZmlsdGVyVmFsdWVzLmxlbmd0aCk7XG5cbiAgY29uc3QgaGFuZGxlRmlsdGVyQ2hhbmdlID0gKHZhbHVlKSA9PiB7XG4gICAgY29uc3QgbmV3RmlsdGVycyA9IGZpbHRlclZhbHVlcz8uaW5jbHVkZXModmFsdWUpXG4gICAgICA/IGZpbHRlclZhbHVlcy5maWx0ZXIoKGYpID0+IGYgIT09IHZhbHVlKVxuICAgICAgOiBbLi4uZmlsdGVyVmFsdWVzLCB2YWx1ZV07XG4gICAgb25GaWx0ZXIoe1xuICAgICAgW0ZJTFRFUl9WQVJfVElDS0VUX1RZUEVdOiBuZXdGaWx0ZXJzXG4gICAgfSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRJc0V4cGFuZGVkKCEhZmlsdGVyVmFsdWVzLmxlbmd0aCk7XG4gIH0sIFtmaWx0ZXJWYWx1ZXNdKTtcblxuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8Q2FyZEhlYWRlclxuICAgICAgICB0aXRsZT1cIlRpY2tldCBUeXBlXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGl0bGVXcmFwcGVyfVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRJc0V4cGFuZGVkKCFpc0V4cGFuZGVkKX1cbiAgICAgICAgYWN0aW9uPXtcbiAgICAgICAgICA8SWNvbkJ1dHRvbiBhcmlhLWxhYmVsPVwiZXhwYW5kXCIgZGlzYWJsZVJpcHBsZT5cbiAgICAgICAgICAgIDxFeHBhbmRNb3JlSWNvblxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogaXNFeHBhbmRlZCA/IFwicm90YXRlKDE4MGRlZylcIiA6IFwicm90YXRlKDBkZWcpXCIsXG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogXCJ0cmFuc2Zvcm0gMC4zc1wiXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgfVxuICAgICAgLz5cbiAgICAgIDxDb2xsYXBzZSBpbj17aXNFeHBhbmRlZH0gdGltZW91dD1cImF1dG9cIiB1bm1vdW50T25FeGl0PlxuICAgICAgICA8Q2FyZENvbnRlbnRcbiAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgcHk6IDAsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiIzAwMDAwMDBBXCIsXG4gICAgICAgICAgICBcIiY6bGFzdC1jaGlsZFwiOiB7XG4gICAgICAgICAgICAgIHBiOiAwXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHt0aWNrZXRfdHlwZXMubWFwKChiZikgPT4gKFxuICAgICAgICAgICAgPEJveCBzeD17eyBweTogMSB9fSBrZXk9e2BmaWx0ZXItYmFkZ2UtZmVhdHVyZS0ke2JmLm5hbWV9fWB9PlxuICAgICAgICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiBoYW5kbGVGaWx0ZXJDaGFuZ2UoYmYuaWQpfVxuICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXtmaWx0ZXJWYWx1ZXMuaW5jbHVkZXMoYmYuaWQpfVxuICAgICAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICAgIFwiJiAuTXVpU3ZnSWNvbi1yb290XCI6IHsgZm9udFNpemU6IDE4IH0sXG4gICAgICAgICAgICAgICAgICAgICAgXCImLk11aS1jaGVja2VkXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBcIiMyMTk2RjNcIlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxhYmVsPXtiZi5uYW1lfVxuICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICBcIiYgLk11aUZvcm1Db250cm9sTGFiZWwtbGFiZWxcIjoge1xuICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogXCIxZW1cIlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9DYXJkQ29udGVudD5cbiAgICAgIDwvQ29sbGFwc2U+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5UaWNrZXRUeXBlRmlsdGVyLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXRUeXBlRmlsdGVyO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgR3JpZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgRmlsdGVyIGZyb20gXCIuL0ZpbHRlclwiO1xuaW1wb3J0IFNvcnQgZnJvbSBcIi4vU29ydFwiO1xuaW1wb3J0IFNlYXJjaCBmcm9tIFwiLi9TZWFyY2hcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgRmlsdGVycyA9ICh7IG9uRmlsdGVyLCBvblNvcnQsIG9uU2VhcmNoLCBvblJlc2V0IH0pID0+IChcbiAgPEdyaWQgY29udGFpbmVyIGp1c3RpZnk9XCJmbGV4LWVuZFwiIGFsaWduSXRlbXM9XCJjZW50ZXJcIj5cbiAgICA8R3JpZFxuICAgICAgaXRlbVxuICAgICAgeHM9ezZ9XG4gICAgICBjb250YWluZXJcbiAgICAgIHBhZGRpbmc9ezF9XG4gICAgICBnYXA9ezJ9XG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy5maWx0ZXJTb3J0Q29udGFpbmVyfVxuICAgICAgc3g9e3sgcHQ6IDIsIHBiOiAyIH19XG4gICAgPlxuICAgICAgPEdyaWQgaXRlbT5cbiAgICAgICAgPEZpbHRlciBvbkZpbHRlcj17b25GaWx0ZXJ9IG9uUmVzZXQ9e29uUmVzZXR9IC8+XG4gICAgICA8L0dyaWQ+XG4gICAgICA8R3JpZCBpdGVtPlxuICAgICAgICA8U29ydCBvblNvcnQ9e29uU29ydH0gLz5cbiAgICAgIDwvR3JpZD5cbiAgICA8L0dyaWQ+XG4gICAgPEdyaWQgaXRlbSB4cz17Nn0gY29udGFpbmVyIGp1c3RpZnlDb250ZW50PVwiZmxleC1lbmRcIj5cbiAgICAgIDxTZWFyY2ggb25TZWFyY2g9e29uU2VhcmNofSAvPlxuICAgIDwvR3JpZD5cbiAgPC9HcmlkPlxuKTtcblxuRmlsdGVycy5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25Tb3J0OiBQcm9wVHlwZXMuZnVuYyxcbiAgb25TZWFyY2g6IFByb3BUeXBlcy5mdW5jLFxuICBvblJlc2V0OiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgRmlsdGVycztcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEJveCwgQnV0dG9uIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBGb3JtRm9vdGVyID0gKHsgc2F2ZUxhYmVsLCBjYW5jZWxMYWJlbCwgb25DbG9zZSwgZGlzYWJsZWQgfSkgPT4gKFxuICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmZvb3Rlcn0+XG4gICAgPEJ1dHRvblxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY2FuY2VsQnRufVxuICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgb25DbGljaz17b25DbG9zZX1cbiAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICA+XG4gICAgICB7Y2FuY2VsTGFiZWx9XG4gICAgPC9CdXR0b24+XG4gICAgPEJ1dHRvblxuICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy5zYXZlQnRufVxuICAgICAgdmFyaWFudD1cImNvbnRhaW5lZFwiXG4gICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICA+XG4gICAgICB7c2F2ZUxhYmVsfVxuICAgIDwvQnV0dG9uPlxuICA8L0JveD5cbik7XG5cbkZvcm1Gb290ZXIucHJvcFR5cGVzID0ge1xuICBzYXZlTGFiZWw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGNhbmNlbExhYmVsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYyxcbiAgZGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBGb3JtRm9vdGVyO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IEVycm9ySWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FcnJvclwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBFcnJvckxhYmVsKHsgbWVzc2FnZSwgY29sb3IsIGNsYXNzTmFtZXMsIGRhdGFUZXN0SWQgfSkge1xuICByZXR1cm4gKFxuICAgIDxzcGFuXG4gICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5lcnJvckxhYmVsfSAke2NsYXNzTmFtZXMgJiYgY2xhc3NOYW1lc31gfVxuICAgICAgc3R5bGU9e3sgY29sb3IgfX1cbiAgICAgIGRhdGEtdGVzdGlkPXtkYXRhVGVzdElkfVxuICAgID5cbiAgICAgIDxFcnJvckljb24gc3g9e3sgY29sb3IgfX0gLz5cbiAgICAgIHttZXNzYWdlfVxuICAgIDwvc3Bhbj5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgRXJyb3JMYWJlbDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEJhY2tkcm9wLCBDaXJjdWxhclByb2dyZXNzIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcblxuY29uc3QgTG9hZGVyID0gKHsgb3BlbiB9KSA9PiAoXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tYWdpYy1udW1iZXJzXG4gIDxCYWNrZHJvcCBvcGVuPXtvcGVufSBzeD17KHRoZW1lKSA9PiAoeyB6SW5kZXg6IHRoZW1lLnpJbmRleC5kcmF3ZXIgKyAxIH0pfT5cbiAgICA8Q2lyY3VsYXJQcm9ncmVzcyBjb2xvcj1cImluaGVyaXRcIiAvPlxuICA8L0JhY2tkcm9wPlxuKTtcblxuTG9hZGVyLnByb3BUeXBlcyA9IHtcbiAgb3BlbjogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IExvYWRlcjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHNoYWxsb3dFcXVhbCwgdXNlU2VsZWN0b3IgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBJbmZpbml0ZVNjcm9sbCBmcm9tIFwicmVhY3QtaW5maW5pdGUtc2Nyb2xsLWNvbXBvbmVudFwiO1xuaW1wb3J0IE9yZGVyc0xpc3QgZnJvbSBcIi4uL09yZGVyc0xpc3RcIjtcbmltcG9ydCB7IE9ORV9QQUdFX05FWFQgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IE15T3JkZXJzVGlja2V0cyA9ICh7IGZldGNoRGF0YSB9KSA9PiB7XG4gIGNvbnN0IHsgc3VtbWl0LCBtZW1iZXJPcmRlcnMsIG9yZGVyc19jdXJyZW50X3BhZ2UsIG9yZGVyc19sYXN0X3BhZ2UgfSA9XG4gICAgdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgaWQ9XCJpbmZpbml0ZVdyYXBwZXJcIiBjbGFzc05hbWU9e3N0eWxlcy5teU9yZGVyc1dyYXBwZXJ9PlxuICAgICAgPEluZmluaXRlU2Nyb2xsXG4gICAgICAgIGRhdGFMZW5ndGg9e21lbWJlck9yZGVycz8ubGVuZ3RofVxuICAgICAgICBuZXh0PXsoKSA9PiBmZXRjaERhdGEob3JkZXJzX2N1cnJlbnRfcGFnZSArIE9ORV9QQUdFX05FWFQpfVxuICAgICAgICBoYXNNb3JlPXtvcmRlcnNfY3VycmVudF9wYWdlIDwgb3JkZXJzX2xhc3RfcGFnZX1cbiAgICAgICAgc2Nyb2xsVGhyZXNob2xkPXsxfVxuICAgICAgPlxuICAgICAgICB7bWVtYmVyT3JkZXJzPy5tYXAoKG9yZGVyKSA9PiAoXG4gICAgICAgICAgPE9yZGVyc0xpc3RcbiAgICAgICAgICAgIGtleT17b3JkZXIubnVtYmVyICsgb3JkZXIuaWR9XG4gICAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICAvPlxuICAgICAgICApKX1cbiAgICAgIDwvSW5maW5pdGVTY3JvbGw+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBNeU9yZGVyc1RpY2tldHM7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmNvbnN0IFRpY2tldHNJY29uID0gKCkgPT4gKFxuICA8c3ZnXG4gICAgd2lkdGg9XCIxMjlcIlxuICAgIGhlaWdodD1cIjgwXCJcbiAgICB2aWV3Qm94PVwiMCAwIDEyOSA4MFwiXG4gICAgZmlsbD1cIm5vbmVcIlxuICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICA+XG4gICAgPHBhdGhcbiAgICAgIGQ9XCJNMTI1LjEyMiAzNi40NzgxQzEyNC44MTQgMzcuNTExMiAxMjMuNzM4IDM4LjA4OTEgMTIyLjY2MSAzOC4wMzc2QzExOC41MDYgMzcuODM4NiAxMTQuNTkzIDQwLjQ3NTQgMTEzLjM0OSA0NC42NDEyQzExMi4xMDUgNDguODA3MyAxMTMuOTMyIDUzLjE1NzYgMTE3LjUxNyA1NS4yNjk3QzExOC40NDYgNTUuODE2OSAxMTkuMDI4IDU2Ljg4OTkgMTE4LjcyIDU3LjkyMzFMMTE2LjM2OSA2NS43OTY3QzExNi4wNTMgNjYuODU1MSAxMTQuOTM5IDY3LjQ1NyAxMTMuODgxIDY3LjE0MUwzMC43Njc1IDQyLjMyNzFDMjkuNzA5MSA0Mi4wMTEyIDI5LjEwNzIgNDAuODk3IDI5LjQyMzIgMzkuODM4Nkw0MC4zNDM5IDMuMjYwMTZDNDAuNjU5OSAyLjIwMTc2IDQxLjc3NCAxLjU5OTkxIDQyLjgzMjQgMS45MTU5TDEyNS45NDYgMjYuNzI5N0MxMjcuMDA0IDI3LjA0NTcgMTI3LjYwNiAyOC4xNTk5IDEyNy4yOSAyOS4yMTgzTDEyNS4xMjIgMzYuNDc4MVpcIlxuICAgICAgZmlsbD1cIndoaXRlXCJcbiAgICAvPlxuICAgIDxwYXRoXG4gICAgICBkPVwiTTExMy4zNDkgNDQuNjQxMkwxMTIuMzkxIDQ0LjM1NTFMMTEyLjM5MSA0NC4zNTUyTDExMy4zNDkgNDQuNjQxMlpNMTE3LjUxNyA1NS4yNjk3TDExNy4wMDkgNTYuMTMxMkwxMTcuNTE3IDU1LjI2OTdaTTEyMi42NjEgMzguMDM3NkwxMjIuNzA5IDM3LjAzODdDMTE4LjEwNSAzNi44MTgzIDExMy43NjkgMzkuNzM4MSAxMTIuMzkxIDQ0LjM1NTFMMTEzLjM0OSA0NC42NDEyTDExNC4zMDcgNDQuOTI3NEMxMTUuNDE2IDQxLjIxMjcgMTE4LjkwNiAzOC44NTg5IDEyMi42MTQgMzkuMDM2NEwxMjIuNjYxIDM4LjAzNzZaTTExMy4zNDkgNDQuNjQxMkwxMTIuMzkxIDQ0LjM1NTJDMTExLjAxMiA0OC45NzI1IDExMy4wMzggNTMuNzkxNSAxMTcuMDA5IDU2LjEzMTJMMTE3LjUxNyA1NS4yNjk3TDExOC4wMjQgNTQuNDA4MUMxMTQuODI2IDUyLjUyMzggMTEzLjE5OCA0OC42NDIxIDExNC4zMDcgNDQuOTI3M0wxMTMuMzQ5IDQ0LjY0MTJaTTExOC43MiA1Ny45MjMxTDExNy43NjIgNTcuNjM3TDExNS40MTEgNjUuNTEwNkwxMTYuMzY5IDY1Ljc5NjdMMTE3LjMyNyA2Ni4wODI4TDExOS42NzggNTguMjA5MUwxMTguNzIgNTcuOTIzMVpNMTEzLjg4MSA2Ny4xNDFMMTE0LjE2NyA2Ni4xODI4TDMxLjA1MzUgNDEuMzY4OUwzMC43Njc1IDQyLjMyNzFMMzAuNDgxNCA0My4yODU0TDExMy41OTUgNjguMDk5MkwxMTMuODgxIDY3LjE0MVpNMjkuNDIzMiAzOS44Mzg2TDMwLjM4MTQgNDAuMTI0N0w0MS4zMDIxIDMuNTQ2MjRMNDAuMzQzOSAzLjI2MDE2TDM5LjM4NTcgMi45NzQwOUwyOC40NjUgMzkuNTUyNUwyOS40MjMyIDM5LjgzODZaTTQyLjgzMjQgMS45MTU5TDQyLjU0NjQgMi44NzQxMUwxMjUuNjYgMjcuNjg3OUwxMjUuOTQ2IDI2LjcyOTdMMTI2LjIzMiAyNS43NzE1TDQzLjExODUgMC45NTc2OTdMNDIuODMyNCAxLjkxNTlaTTEyNy4yOSAyOS4yMTgzTDEyNi4zMzIgMjguOTMyMkwxMjQuMTY0IDM2LjE5MkwxMjUuMTIyIDM2LjQ3ODFMMTI2LjA4MSAzNi43NjQyTDEyOC4yNDggMjkuNTA0NEwxMjcuMjkgMjkuMjE4M1pNMTI1Ljk0NiAyNi43Mjk3TDEyNS42NiAyNy42ODc5QzEyNi4xODkgMjcuODQ1OSAxMjYuNDkgMjguNDAzIDEyNi4zMzIgMjguOTMyMkwxMjcuMjkgMjkuMjE4M0wxMjguMjQ4IDI5LjUwNDRDMTI4LjcyMiAyNy45MTY4IDEyNy44MTkgMjYuMjQ1NSAxMjYuMjMyIDI1Ljc3MTVMMTI1Ljk0NiAyNi43Mjk3Wk0zMC43Njc1IDQyLjMyNzFMMzEuMDUzNSA0MS4zNjg5QzMwLjUyNDMgNDEuMjEwOSAzMC4yMjM0IDQwLjY1MzkgMzAuMzgxNCA0MC4xMjQ3TDI5LjQyMzIgMzkuODM4NkwyOC40NjUgMzkuNTUyNUMyNy45OTEgNDEuMTQwMSAyOC44OTM4IDQyLjgxMTQgMzAuNDgxNCA0My4yODU0TDMwLjc2NzUgNDIuMzI3MVpNMTE2LjM2OSA2NS43OTY3TDExNS40MTEgNjUuNTEwNkMxMTUuMjUzIDY2LjAzOTggMTE0LjY5NiA2Ni4zNDA4IDExNC4xNjcgNjYuMTgyOEwxMTMuODgxIDY3LjE0MUwxMTMuNTk1IDY4LjA5OTJDMTE1LjE4MiA2OC41NzMyIDExNi44NTMgNjcuNjcwNCAxMTcuMzI3IDY2LjA4MjhMMTE2LjM2OSA2NS43OTY3Wk0xMTcuNTE3IDU1LjI2OTdMMTE3LjAwOSA1Ni4xMzEyQzExNy42NTMgNTYuNTEwNSAxMTcuOTA1IDU3LjE1NyAxMTcuNzYyIDU3LjYzN0wxMTguNzIgNTcuOTIzMUwxMTkuNjc4IDU4LjIwOTFDMTIwLjE1MiA1Ni42MjI4IDExOS4yMzkgNTUuMTIzNCAxMTguMDI0IDU0LjQwODFMMTE3LjUxNyA1NS4yNjk3Wk00MC4zNDM5IDMuMjYwMTZMNDEuMzAyMSAzLjU0NjI0QzQxLjQ2MDEgMy4wMTcwNCA0Mi4wMTcxIDIuNzE2MTEgNDIuNTQ2NCAyLjg3NDExTDQyLjgzMjQgMS45MTU5TDQzLjExODUgMC45NTc2OTdDNDEuNTMwOSAwLjQ4MzcxIDM5Ljg1OTYgMS4zODY0OCAzOS4zODU3IDIuOTc0MDlMNDAuMzQzOSAzLjI2MDE2Wk0xMjIuNjYxIDM4LjAzNzZMMTIyLjYxNCAzOS4wMzY0QzEyNC4wMjEgMzkuMTAzOCAxMjUuNjA3IDM4LjM1MDUgMTI2LjA4MSAzNi43NjQyTDEyNS4xMjIgMzYuNDc4MUwxMjQuMTY0IDM2LjE5MkMxMjQuMDIxIDM2LjY3MiAxMjMuNDU2IDM3LjA3NDQgMTIyLjcwOSAzNy4wMzg3TDEyMi42NjEgMzguMDM3NlpcIlxuICAgICAgZmlsbD1cIiNCREJEQkRcIlxuICAgIC8+XG4gICAgPHBhdGhcbiAgICAgIGQ9XCJNMTA3LjkwMyAyMi42NzU4TDk2LjU2OTYgNjAuNjM3OVwiXG4gICAgICBzdHJva2U9XCIjQkRCREJEXCJcbiAgICAgIHN0cm9rZVdpZHRoPVwiMlwiXG4gICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgc3Ryb2tlRGFzaGFycmF5PVwiMiA1XCJcbiAgICAvPlxuICAgIDxwYXRoXG4gICAgICBkPVwiTTkxLjc0MiA0NS44OTUyQzkxLjc0MTkgNDYuOTczNCA5MC44NzY1IDQ3LjgzNDcgODkuODI5NyA0OC4wOTMzQzg1Ljc5MDYgNDkuMDkxMyA4Mi43OTU5IDUyLjczNzYgODIuNzk1MyA1Ny4wODUyQzgyLjc5NDggNjEuNDMyOSA4NS43ODg3IDY1LjA3OTIgODkuODI3NiA2Ni4wNzc5QzkwLjg3NDIgNjYuMzM2NyA5MS43Mzk0IDY3LjE5ODMgOTEuNzM5MiA2OC4yNzY0TDkxLjczODIgNzYuNDkzNUM5MS43MzgxIDc3LjU5ODEgOTAuODQyNiA3OC40OTM0IDg5LjczOCA3OC40OTMzTDIuOTk5NzIgNzguNDgyN0MxLjg5NTE1IDc4LjQ4MjUgMC45OTk4MjUgNzcuNTg3IDAuOTk5OTYgNzYuNDgyNEwxLjAwNDY0IDM4LjMwODZDMS4wMDQ3NyAzNy4yMDQgMS45MDAzMSAzNi4zMDg3IDMuMDA0ODggMzYuMzA4OEw4OS43NDMyIDM2LjMxOTVDOTAuODQ3NyAzNi4zMTk2IDkxLjc0MzEgMzcuMjE1MSA5MS43NDI5IDM4LjMxOTdMOTEuNzQyIDQ1Ljg5NTJaXCJcbiAgICAgIGZpbGw9XCJ3aGl0ZVwiXG4gICAgLz5cbiAgICA8cGF0aFxuICAgICAgZD1cIk04Mi43OTUzIDU3LjA4NTJMODEuNzk1MyA1Ny4wODUxTDgxLjc5NTMgNTcuMDg1MUw4Mi43OTUzIDU3LjA4NTJaTTg5LjgyOTcgNDguMDkzM0w5MC4wNjk2IDQ5LjA2NDFMODkuODI5NyA0OC4wOTMzWk04OS44Mjk3IDQ4LjA5MzNMODkuNTg5OSA0Ny4xMjI1Qzg1LjExNSA0OC4yMjgxIDgxLjc5NiA1Mi4yNjY3IDgxLjc5NTMgNTcuMDg1MUw4Mi43OTUzIDU3LjA4NTJMODMuNzk1MyA1Ny4wODU0QzgzLjc5NTggNTMuMjA4NCA4Ni40NjYzIDQ5Ljk1NDQgOTAuMDY5NiA0OS4wNjQxTDg5LjgyOTcgNDguMDkzM1pNODIuNzk1MyA1Ny4wODUyTDgxLjc5NTMgNTcuMDg1MUM4MS43OTQ3IDYxLjkwMzYgODUuMTEyOSA2NS45NDIyIDg5LjU4NzUgNjcuMDQ4N0w4OS44Mjc2IDY2LjA3NzlMOTAuMDY3NiA2NS4xMDcxQzg2LjQ2NDQgNjQuMjE2MiA4My43OTQ4IDYwLjk2MjIgODMuNzk1MyA1Ny4wODUzTDgyLjc5NTMgNTcuMDg1MlpNOTEuNzM5MiA2OC4yNzY0TDkwLjczOTIgNjguMjc2M0w5MC43MzgyIDc2LjQ5MzRMOTEuNzM4MiA3Ni40OTM1TDkyLjczODIgNzYuNDkzN0w5Mi43MzkyIDY4LjI3NjZMOTEuNzM5MiA2OC4yNzY0Wk04OS43MzggNzguNDkzM0w4OS43MzgxIDc3LjQ5MzNMMi45OTk4NCA3Ny40ODI3TDIuOTk5NzIgNzguNDgyN0wyLjk5OTYgNzkuNDgyN0w4OS43Mzc5IDc5LjQ5MzNMODkuNzM4IDc4LjQ5MzNaTTAuOTk5OTYgNzYuNDgyNEwxLjk5OTk2IDc2LjQ4MjVMMi4wMDQ2NCAzOC4zMDg3TDEuMDA0NjQgMzguMzA4NkwwLjAwNDYzNzc2IDM4LjMwODVMLTMuOTYwNzVlLTA1IDc2LjQ4MjNMMC45OTk5NiA3Ni40ODI0Wk0zLjAwNDg4IDM2LjMwODhMMy4wMDQ3NiAzNy4zMDg4TDg5Ljc0MyAzNy4zMTk1TDg5Ljc0MzIgMzYuMzE5NUw4OS43NDMzIDM1LjMxOTVMMy4wMDUwMSAzNS4zMDg4TDMuMDA0ODggMzYuMzA4OFpNOTEuNzQyOSAzOC4zMTk3TDkwLjc0MjkgMzguMzE5Nkw5MC43NDIgNDUuODk1MUw5MS43NDIgNDUuODk1Mkw5Mi43NDIgNDUuODk1M0w5Mi43NDI5IDM4LjMxOThMOTEuNzQyOSAzOC4zMTk3Wk04OS43NDMyIDM2LjMxOTVMODkuNzQzIDM3LjMxOTVDOTAuMjk1MyAzNy4zMTk1IDkwLjc0MyAzNy43NjczIDkwLjc0MjkgMzguMzE5Nkw5MS43NDI5IDM4LjMxOTdMOTIuNzQyOSAzOC4zMTk4QzkyLjc0MzEgMzYuNjYzIDkxLjQwMDEgMzUuMzE5NyA4OS43NDMzIDM1LjMxOTVMODkuNzQzMiAzNi4zMTk1Wk0yLjk5OTcyIDc4LjQ4MjdMMi45OTk4NCA3Ny40ODI3QzIuNDQ3NTUgNzcuNDgyNiAxLjk5OTg5IDc3LjAzNDggMS45OTk5NiA3Ni40ODI1TDAuOTk5OTYgNzYuNDgyNEwtMy45NjA3NWUtMDUgNzYuNDgyM0MtMC4wMDAyNDI2MTkgNzguMTM5MiAxLjM0Mjc0IDc5LjQ4MjUgMi45OTk2IDc5LjQ4MjdMMi45OTk3MiA3OC40ODI3Wk05MS43MzgyIDc2LjQ5MzVMOTAuNzM4MiA3Ni40OTM0QzkwLjczODIgNzcuMDQ1NyA5MC4yOTA0IDc3LjQ5MzQgODkuNzM4MSA3Ny40OTMzTDg5LjczOCA3OC40OTMzTDg5LjczNzkgNzkuNDkzM0M5MS4zOTQ3IDc5LjQ5MzUgOTIuNzM4IDc4LjE1MDUgOTIuNzM4MiA3Ni40OTM3TDkxLjczODIgNzYuNDkzNVpNODkuODI3NiA2Ni4wNzc5TDg5LjU4NzUgNjcuMDQ4N0M5MC4zMTI4IDY3LjIyOCA5MC43MzkzIDY3Ljc3NTQgOTAuNzM5MiA2OC4yNzYzTDkxLjczOTIgNjguMjc2NEw5Mi43MzkyIDY4LjI3NjZDOTIuNzM5NSA2Ni42MjExIDkxLjQzNTYgNjUuNDQ1NCA5MC4wNjc2IDY1LjEwNzFMODkuODI3NiA2Ni4wNzc5Wk0xLjAwNDY0IDM4LjMwODZMMi4wMDQ2NCAzOC4zMDg3QzIuMDA0NzEgMzcuNzU2NCAyLjQ1MjQ4IDM3LjMwODggMy4wMDQ3NiAzNy4zMDg4TDMuMDA0ODggMzYuMzA4OEwzLjAwNTAxIDM1LjMwODhDMS4zNDgxNSAzNS4zMDg2IDAuMDA0ODQwNzcgMzYuNjUxNiAwLjAwNDYzNzc2IDM4LjMwODVMMS4wMDQ2NCAzOC4zMDg2Wk04OS44Mjk3IDQ4LjA5MzNMOTAuMDY5NiA0OS4wNjQxQzkxLjQzNzYgNDguNzI2MSA5Mi43NDE4IDQ3LjU1MDggOTIuNzQyIDQ1Ljg5NTNMOTEuNzQyIDQ1Ljg5NTJMOTAuNzQyIDQ1Ljg5NTFDOTAuNzQxOSA0Ni4zOTYgOTAuMzE1MyA0Ni45NDMzIDg5LjU4OTkgNDcuMTIyNUw4OS44Mjk3IDQ4LjA5MzNaXCJcbiAgICAgIGZpbGw9XCIjQkRCREJEXCJcbiAgICAvPlxuICAgIDxwYXRoXG4gICAgICBkPVwiTTcxLjI5NDkgMzcuNTk1N0w3MS4yOTAxIDc3LjIxMzZcIlxuICAgICAgc3Ryb2tlPVwiI0JEQkRCRFwiXG4gICAgICBzdHJva2VXaWR0aD1cIjJcIlxuICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgIHN0cm9rZURhc2hhcnJheT1cIjIgNVwiXG4gICAgLz5cbiAgPC9zdmc+XG4pO1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXRzSWNvbjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVNlbGVjdG9yIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyBCb3gsIEJ1dHRvbiwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgVGlja2V0c0ljb24gZnJvbSBcIi4vVGlja2V0c0ljb25cIjtcbmltcG9ydCB7IFRBQlMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IE5vVGlja2V0c0ZvdW5kID0gKHsgcGFnZVZpZXcsIG9uQ2xpY2sgfSkgPT4ge1xuICBjb25zdCB7IHN1bW1pdCwgbG9hZGluZyB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSk7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICBjb25zdCBnZXRDb250ZW50ID0gKCkgPT4ge1xuICAgIGNvbnN0IG1haWx0b1RhZyA9IChcbiAgICAgIDxhIGhyZWY9e2BtYWlsdG86JHtzdW1taXQuc3VwcG9ydF9lbWFpbH1gfT5cbiAgICAgICAge3QoXCJnZW5lcmFsLmNvbnRhY3Rfc3VwcG9ydFwiKX1cbiAgICAgIDwvYT5cbiAgICApO1xuXG4gICAgc3dpdGNoIChwYWdlVmlldykge1xuICAgICAgY2FzZSBUQUJTLk9SREVSUzoge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHRpdGxlOiB0KFwibm9fcmVzdWx0cy5vcmRlcnMudGl0bGVcIiksXG4gICAgICAgICAgYm9keTogKFxuICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAge3QoXCJub19yZXN1bHRzLm9yZGVycy5ib2R5XCIpfSB7bWFpbHRvVGFnfS5cbiAgICAgICAgICAgIDwvPlxuICAgICAgICAgICksXG4gICAgICAgICAgYnV0dG9uTGFiZWw6IHQoXCJsYWJlbHMuYXNzaWduZWRfdG9fbWVcIilcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGNhc2UgVEFCUy5USUNLRVRTOiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdGl0bGU6IHQoXCJub19yZXN1bHRzLmFzc2lnbmVkLnRpdGxlXCIpLFxuICAgICAgICAgIGJvZHk6IChcbiAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgIHt0KFwibm9fcmVzdWx0cy5hc3NpZ25lZC5ib2R5XCIpfSB7bWFpbHRvVGFnfS5cbiAgICAgICAgICAgIDwvPlxuICAgICAgICAgICksXG4gICAgICAgICAgYnV0dG9uTGFiZWw6IHQoXCJvcmRlcnMudGl0bGVcIilcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0aXRsZTogdChcIm5vX3Jlc3VsdHMuZmlsdGVyLnRpdGxlXCIpLFxuICAgICAgICAgIGJvZHk6IHQoXCJub19yZXN1bHRzLmZpbHRlci5ib2R5XCIpLFxuICAgICAgICAgIGJ1dHRvbkxhYmVsOiB0KFwiZmlsdGVyLmNsZWFyX2ZpbHRlcnNcIilcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgY29uc3QgeyB0aXRsZSwgYm9keSwgYnV0dG9uTGFiZWwgfSA9IGdldENvbnRlbnQoKTtcblxuICBpZiAobG9hZGluZykgcmV0dXJuIG51bGw7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLndyYXBwZXJ9PlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5pY29uV3JhcHBlcn0+XG4gICAgICAgIDxUaWNrZXRzSWNvbiAvPlxuICAgICAgPC9Cb3g+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiaDZcIiBjbGFzc05hbWU9e3N0eWxlcy50aXRsZX0+XG4gICAgICAgIHt0aXRsZX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgIDxUeXBvZ3JhcGh5XG4gICAgICAgIHZhcmlhbnQ9XCJib2R5MVwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmJvZHl9XG4gICAgICAgIHN4PXt7IGNvbG9yOiBcInRleHQuc2Vjb25kYXJ5XCIgfX1cbiAgICAgID5cbiAgICAgICAge2JvZHl9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICA8QnV0dG9uXG4gICAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgICAgPlxuICAgICAgICB7YnV0dG9uTGFiZWx9XG4gICAgICA8L0J1dHRvbj5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE5vVGlja2V0c0ZvdW5kO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgR3JpZCwgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBEaXZpZGVyIGZyb20gXCJAbXVpL21hdGVyaWFsL0RpdmlkZXJcIjtcbmltcG9ydCB7IGNhbGN1bGF0ZU9yZGVyVG90YWxzLCBmb3JtYXRDdXJyZW5jeSB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBPcmRlclN1bW1hcnlUYWJsZSA9ICh7IG9yZGVyLCBzdW1taXQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IHtcbiAgICBkaXNjb3VudFRvdGFsLFxuICAgIHJlZnVuZFRvdGFsLFxuICAgIGFtb3VudFRvdGFsLFxuICAgIHN1YlRvdGFsLFxuICAgIHRpY2tldFN1bW1hcnksXG4gICAgdGF4ZXNTdW1tYXJ5XG4gIH0gPSBjYWxjdWxhdGVPcmRlclRvdGFscyh7IG9yZGVyLCBzdW1taXQgfSk7XG5cbiAgY29uc3QgaHVuZHJlZCA9IDEwMDtcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJTdW1tYXJ5VGFibGV9PlxuICAgICAge3RpY2tldFN1bW1hcnk/Lmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICA8PlxuICAgICAgICAgIHt0aWNrZXRTdW1tYXJ5Lm1hcCgodGlja2V0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0aWNrZXRUb3RhbCA9XG4gICAgICAgICAgICAgICh0aWNrZXQucXR5ICogKHRpY2tldC50aWNrZXRfdHlwZS5jb3N0ICogaHVuZHJlZCkpIC8gaHVuZHJlZDtcblxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgPEdyaWRcbiAgICAgICAgICAgICAgICBjb250YWluZXJcbiAgICAgICAgICAgICAgICBrZXk9e2B0aXhvcmRlcl8ke3RpY2tldC50aWNrZXRfdHlwZS5jcmVhdGVkfWB9XG4gICAgICAgICAgICAgICAgc3g9e3sgcGI6IDEgfX1cbiAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cIm9yZGVyLXN1bW1hcnktaXRlbWl6ZWRcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgeHt0aWNrZXQucXR5fSB7dGlja2V0LnRpY2tldF90eXBlLm5hbWV9XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICAgICAgICAgIHtmb3JtYXRDdXJyZW5jeSh0aWNrZXRUb3RhbCwgeyBjdXJyZW5jeTogb3JkZXIuY3VycmVuY3kgfSl9XG4gICAgICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pfVxuICAgICAgICA8Lz5cbiAgICAgICl9XG4gICAgICA8RGl2aWRlciAvPlxuICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHB0OiAxLCBwYjogMSB9fT5cbiAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnN1Yl90b3RhbFwiKX1cbiAgICAgICAgPC9HcmlkPlxuICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAge3N1YlRvdGFsfVxuICAgICAgICA8L0dyaWQ+XG4gICAgICA8L0dyaWQ+XG4gICAgICB7b3JkZXIudGF4ZXNfYW1vdW50ID4gMCAmJlxuICAgICAgICB0YXhlc1N1bW1hcnk/Lmxlbmd0aCA+IDAgJiZcbiAgICAgICAgdGF4ZXNTdW1tYXJ5Lm1hcCgodGF4KSA9PiAoXG4gICAgICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHBiOiAxIH19IGtleT17dGF4LmlkfT5cbiAgICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAgICB7dGF4Lm5hbWV9XG4gICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICAgIHt0YXguYW1vdW50fVxuICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgKSl9XG4gICAgICB7b3JkZXIuZGlzY291bnRfYW1vdW50ID4gMCAmJiAoXG4gICAgICAgIDxHcmlkIGNvbnRhaW5lciBzeD17eyBwYjogMSB9fT5cbiAgICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5kaXNjb3VudHNcIil9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICAgIC17ZGlzY291bnRUb3RhbH1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICB7cmVmdW5kVG90YWwgPiAwICYmIChcbiAgICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHBiOiAxIH19PlxuICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnJlZnVuZHNcIil9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICAgIHtyZWZ1bmRUb3RhbH1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICA8RGl2aWRlciAvPlxuICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHB0OiAxLCBwYjogMSB9fT5cbiAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnRvdGFsXCIpfVxuICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICB7YW1vdW50VG90YWx9XG4gICAgICAgIDwvR3JpZD5cbiAgICAgIDwvR3JpZD5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbk9yZGVyU3VtbWFyeVRhYmxlLnByb3BUeXBlcyA9IHtcbiAgb3JkZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgY3VycmVuY3k6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgZGlzY291bnRfYW1vdW50OiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIHRheGVzX2Ftb3VudDogUHJvcFR5cGVzLm51bWJlcixcbiAgICBzdGF0dXM6IFByb3BUeXBlcy5zdHJpbmdcbiAgfSksXG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdFxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJTdW1tYXJ5VGFibGU7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlTm93IH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgeyB0aWNrZXRzUmVmdW5kYWJsZSB9IGZyb20gXCIuLi8uLi91dGlscy90aWNrZXRVdGlsc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgdXNlU3VtbWl0RGV0YWlscyB9IGZyb20gXCIuLi8uLi91dGlscy9zdW1taXRVdGlsc1wiO1xuXG5jb25zdCBSZWZ1bmRFbWFpbFN1cHBvcnQgPSAoe1xuICBzdW1taXQsXG4gIHRpY2tldHMsXG4gIHN1Ym1pdFJlcXVlc3QsXG4gIG9uUmVmdW5kQ2xpY2ssXG4gIG9uUmVmdW5kRGV0YWlsQ2xpY2tcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCB7IGlzU3RhcnRlZCB9ID0gdXNlU3VtbWl0RGV0YWlscyh7IHN1bW1pdCB9KTtcbiAgY29uc3Qgbm93ID0gdXNlTm93KCk7XG4gIGNvbnN0IGlzSW5SZWZ1bmRhYmxlUGVyaW9kID1cbiAgICBzdW1taXQucmVnaXN0cmF0aW9uX2FsbG93ZWRfcmVmdW5kX3JlcXVlc3RfdGlsbF9kYXRlID4gbm93O1xuICBjb25zdCBhdExlYXN0T25lUmVmdW5kYWJsZVRpY2tldCA9IHRpY2tldHNSZWZ1bmRhYmxlKHRpY2tldHMpO1xuICBjb25zdCBpc1JlZnVuZGFibGUgPSAhIShcbiAgICBpc0luUmVmdW5kYWJsZVBlcmlvZCAmJlxuICAgICFpc1N0YXJ0ZWQgJiZcbiAgICBhdExlYXN0T25lUmVmdW5kYWJsZVRpY2tldFxuICApO1xuICBjb25zdCBoYXNSZWZ1bmRSZXF1ZXN0cyA9IHRpY2tldHM/LnNvbWUoKHQpID0+IHQucmVmdW5kX3JlcXVlc3RzLmxlbmd0aCA+IDApO1xuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7aXNSZWZ1bmRhYmxlICYmIChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQgcmVxdWVzdCBidXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLm9yZGVyU3VtbWFyeUJ1dHRvbn1cbiAgICAgICAgICAke3N1Ym1pdFJlcXVlc3QgPyBzdHlsZXMucmVmdW5kRGlzYWJsZWQgOiBcIlwifWB9XG4gICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgIG9uQ2xpY2s9e29uUmVmdW5kQ2xpY2t9XG4gICAgICAgICAgZGlzYWJsZWQ9e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkucmVxdWVzdF9yZWZ1bmRcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKX1cbiAgICAgIHtoYXNSZWZ1bmRSZXF1ZXN0cyAmJiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kIGRldGFpbHMgYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlCdXR0b259XG4gICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgIG9uQ2xpY2s9e29uUmVmdW5kRGV0YWlsQ2xpY2t9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkucmVmdW5kX2RldGFpbHNcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKX1cbiAgICAgIDxCdXR0b25cbiAgICAgICAgYXJpYS1sYWJlbD1cImVtYWlsIHN1cHBvcnQgYnV0dG9uXCJcbiAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyU3VtbWFyeUJ1dHRvbn1cbiAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgdGFyZ2V0PVwiX3RvcFwiXG4gICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgICBocmVmPXtgbWFpbHRvOiR7c3VtbWl0LnN1cHBvcnRfZW1haWx9YH1cbiAgICAgID5cbiAgICAgICAge3QoXCJvcmRlcl9pbmZvLmVtYWlsX3N1cHBvcnRcIil9XG4gICAgICA8L0J1dHRvbj5cbiAgICA8Lz5cbiAgKTtcbn07XG5cblJlZnVuZEVtYWlsU3VwcG9ydC5wcm9wVHlwZXMgPSB7XG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgdGlja2V0czogUHJvcFR5cGVzLmFycmF5T2YoT2JqZWN0KSxcbiAgb25SZWZ1bmRDbGljazogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uUmVmdW5kRGV0YWlsQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuICBzdWJtaXRSZXF1ZXN0OiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVmdW5kRW1haWxTdXBwb3J0O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgR3JpZCwgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCBPcmRlclN1bW1hcnlUYWJsZSBmcm9tIFwiLi9PcmRlclN1bW1hcnlUYWJsZVwiO1xuaW1wb3J0IFJlZnVuZEVtYWlsU3VwcG9ydCBmcm9tIFwiLi9SZWZ1bmRFbWFpbFN1cHBvcnRcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgT3JkZXJTdW1tYXJ5ID0gKHtcbiAgb3JkZXIsXG4gIHN1bW1pdCxcbiAgb25SZWZ1bmRDbGljayxcbiAgc3VibWl0UmVxdWVzdCxcbiAgb25SZWZ1bmREZXRhaWxDbGlja1xufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxCb3hcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJTdW1tYXJ5V3JhcHBlcn1cbiAgICAgICAgc3g9e3sgcHQ6IDQsIHB4OiA0IH19XG4gICAgICAgIGRhdGEtdGVzdGlkPVwib3JkZXItc3VtbWFyeS1jb250YWluZXJcIlxuICAgICAgPlxuICAgICAgICA8aDM+e3QoXCJvcmRlcl9zdW1tYXJ5Lm9yZGVyX3N1bW1hcnlcIil9PC9oMz5cbiAgICAgICAgPEdyaWQgY29udGFpbmVyPlxuICAgICAgICAgIDxHcmlkXG4gICAgICAgICAgICB4cz17MTJ9XG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlQdXJjaGFzZWRJbmZvfVxuICAgICAgICAgICAgc3g9e3sgcGI6IDMgfX1cbiAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8T3JkZXJTdW1tYXJ5VGFibGUgb3JkZXI9e29yZGVyfSBzdW1taXQ9e3N1bW1pdH0gLz5cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgIDwvQm94PlxuICAgICAgPEJveCB4cz17MTJ9IHN4PXt7IHBiOiAzIH19PlxuICAgICAgICA8UmVmdW5kRW1haWxTdXBwb3J0XG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgdGlja2V0cz17b3JkZXI/Lm1lbWJlclRpY2tldHN9XG4gICAgICAgICAgc3VibWl0UmVxdWVzdD17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgICBvblJlZnVuZENsaWNrPXtvblJlZnVuZENsaWNrfVxuICAgICAgICAgIG9uUmVmdW5kRGV0YWlsQ2xpY2s9e29uUmVmdW5kRGV0YWlsQ2xpY2t9XG4gICAgICAgIC8+XG4gICAgICA8L0JveD5cbiAgICA8Lz5cbiAgKTtcbn07XG5PcmRlclN1bW1hcnkucHJvcFR5cGVzID0ge1xuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIG9yZGVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIG1lbWJlclRpY2tldHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdClcbiAgfSksXG4gIG9uUmVmdW5kQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuICBzdWJtaXRSZXF1ZXN0OiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJTdW1tYXJ5O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IEluZmluaXRlU2Nyb2xsIGZyb20gXCJyZWFjdC1pbmZpbml0ZS1zY3JvbGwtY29tcG9uZW50XCI7XG5pbXBvcnQgT3JkZXJMaXN0VGlja2V0cyBmcm9tIFwiLi9PcmRlckxpc3RUaWNrZXRzXCI7XG5pbXBvcnQgeyBPTkVfUEFHRV9ORVhUIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBBc3NpZ25Ub01lID0gKHsgZmV0Y2hEYXRhIH0pID0+IHtcbiAgY29uc3Qge1xuICAgIHN1bW1pdCxcbiAgICB1c2VyVGlja2V0cyxcbiAgICB1c2VyX3RpY2tldHNfY3VycmVudF9wYWdlLFxuICAgIHVzZXJfdGlja2V0c19sYXN0X3BhZ2VcbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyVGlja2V0Q29udGFpbmVyfT5cbiAgICAgIDxkaXYgaWQ9XCJhc3NpZ25lZFRvTWVXcmFwcGVyXCIgY2xhc3NOYW1lPXtzdHlsZXMuYXNzaWduZWRUb01lV3JhcHBlcn0+XG4gICAgICAgIDxJbmZpbml0ZVNjcm9sbFxuICAgICAgICAgIGRhdGFMZW5ndGg9e3VzZXJUaWNrZXRzPy5sZW5ndGh9XG4gICAgICAgICAgbmV4dD17KCkgPT4gZmV0Y2hEYXRhKHVzZXJfdGlja2V0c19jdXJyZW50X3BhZ2UgKyBPTkVfUEFHRV9ORVhUKX1cbiAgICAgICAgICBoYXNNb3JlPXt1c2VyX3RpY2tldHNfY3VycmVudF9wYWdlIDwgdXNlcl90aWNrZXRzX2xhc3RfcGFnZX1cbiAgICAgICAgICBzY3JvbGxUaHJlc2hvbGQ9ezF9XG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldExpc3RDb250YWluZXJ9PlxuICAgICAgICAgICAge3VzZXJUaWNrZXRzLm1hcCgodGlja2V0KSA9PiAoXG4gICAgICAgICAgICAgIDxPcmRlckxpc3RUaWNrZXRzXG4gICAgICAgICAgICAgICAga2V5PXt0aWNrZXQuaWR9XG4gICAgICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICAgICAgaXNSZWZ1bmRNb2RhbD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgaXNTZWxlY3RlZFRvUmVmdW5kPXtbXX1cbiAgICAgICAgICAgICAgICBzZWxlY3RUb1JlZnVuZD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9JbmZpbml0ZVNjcm9sbD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQXNzaWduVG9NZTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCwgR3JpZCwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IEFzc2lnbmVkVG8gPSAoeyBlbWFpbCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmxhYmVsfT57dChcInRpY2tldF9zdGF0dXMuYXNzaWduZWRfdG9cIil9OjwvQm94PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkxXCIgZGF0YS10ZXN0aWQ9XCJhdHRlbmRlZS1zdGF0dXMtYXNzaWduZWRcIj5cbiAgICAgICAge2VtYWlsfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgIDwvQm94PlxuICApO1xufTtcblxuY29uc3QgRXh0ZXJuYWxBc3NpZ25lZFRvID0gKHsgZmlyc3ROYW1lLCBsYXN0TmFtZSB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmxhYmVsfT57dChcInRpY2tldF9zdGF0dXMuYXNzaWduZWRfYnlcIil9OjwvQm94PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkxXCI+XG4gICAgICAgIHtmaXJzdE5hbWV9IHtsYXN0TmFtZX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbmNvbnN0IE1hbmFnZUZvciA9ICh7IGZpcnN0TmFtZSwgbGFzdE5hbWUgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5sYWJlbH0+e3QoXCJ0aWNrZXRfc3RhdHVzLm1hbmFnZV9mb3JcIil9OjwvQm94PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkxXCI+XG4gICAgICAgIHtmaXJzdE5hbWV9IHtsYXN0TmFtZX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbmNvbnN0IEF0dGVuZGVlU3RhdHVzID0gKHsgdGlja2V0LCBpc0V4dGVybmFsQXNzaWduZWRUaWNrZXQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGlzVW5hc3NpZ25lZCA9ICF0aWNrZXQub3duZXI/LmVtYWlsICYmIHRpY2tldC5pc19hY3RpdmU7XG4gIGNvbnN0IGlzRGVsZWdhdGVkID0gISF0aWNrZXQub3duZXI/Lm1hbmFnZXJfaWQ7XG5cbiAgaWYgKGlzVW5hc3NpZ25lZCkge1xuICAgIHJldHVybiAoXG4gICAgICA8c3BhblxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRPd25lckVtYWlsfVxuICAgICAgICBkYXRhLXRlc3RpZD1cImF0dGVuZGVlLXN0YXR1cy11bmFzc2lnbmVkXCJcbiAgICAgID5cbiAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLmF0dGVuZGVlX3N0YXR1c191bmFzc2lnbmVkXCIpfVxuICAgICAgPC9zcGFuPlxuICAgICk7XG4gIH1cblxuICBpZiAodGlja2V0Lm93bmVyPy5lbWFpbCkge1xuICAgIHJldHVybiAoXG4gICAgICA8R3JpZCBjb250YWluZXI+XG4gICAgICAgIDxHcmlkIGl0ZW0+XG4gICAgICAgICAgPEFzc2lnbmVkVG8gZW1haWw9e3RpY2tldC5vd25lci5lbWFpbH0gLz5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgICB7aXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0ICYmIChcbiAgICAgICAgICA8R3JpZCBpdGVtIGNsYXNzTmFtZT17c3R5bGVzLmFzc2lnbmVkQnlUZXh0fT5cbiAgICAgICAgICAgIDxFeHRlcm5hbEFzc2lnbmVkVG9cbiAgICAgICAgICAgICAgZmlyc3ROYW1lPXt0aWNrZXQub3JkZXI/Lm93bmVyX2ZpcnN0X25hbWV9XG4gICAgICAgICAgICAgIGxhc3ROYW1lPXt0aWNrZXQub3JkZXI/Lm93bmVyX2xhc3RfbmFtZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICApfVxuICAgICAgICB7aXNEZWxlZ2F0ZWQgJiYgKFxuICAgICAgICAgIDxHcmlkIGl0ZW0gY2xhc3NOYW1lPXtzdHlsZXMuYXNzaWduZWRCeVRleHR9PlxuICAgICAgICAgICAgPE1hbmFnZUZvclxuICAgICAgICAgICAgICBmaXJzdE5hbWU9e3RpY2tldC5vd25lcj8uZmlyc3RfbmFtZX1cbiAgICAgICAgICAgICAgbGFzdE5hbWU9e3RpY2tldC5vd25lcj8ubGFzdF9uYW1lfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICl9XG4gICAgICA8L0dyaWQ+XG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufTtcblxuQXR0ZW5kZWVTdGF0dXMucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgb3duZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBlbWFpbDogUHJvcFR5cGVzLnN0cmluZ1xuICAgIH0pLFxuICAgIGlzX2FjdGl2ZTogUHJvcFR5cGVzLmJvb2xcbiAgfSksXG4gIGlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldDogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEF0dGVuZGVlU3RhdHVzO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBNSUxMSVNFQ19UT19TRUMsIE9ORV9SRVRSWSB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcblxuY29uc3QgQmFkZ2VGZWF0dXJlSW1hZ2UgPSAoeyBzcmMsIGFsdCwgY2xhc3NOYW1lLCBtYXhSZXRyaWVzID0gT05FX1JFVFJZIH0pID0+IHtcbiAgY29uc3QgW2N1cnJlbnRTcmMsIHNldEN1cnJlbnRTcmNdID0gdXNlU3RhdGUoc3JjKTtcbiAgY29uc3QgW3JldHJ5Q291bnQsIHNldFJldHJ5Q291bnRdID0gdXNlU3RhdGUoMCk7XG4gIGNvbnN0IFtoYXNFcnJvciwgc2V0SGFzRXJyb3JdID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gIGNvbnN0IGhhbmRsZUVycm9yID0gKCkgPT4ge1xuICAgIGlmIChyZXRyeUNvdW50IDwgbWF4UmV0cmllcykge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHNldEN1cnJlbnRTcmMoYCR7c3JjfT8mdD0ke0RhdGUubm93KCl9YCk7XG4gICAgICAgIHNldFJldHJ5Q291bnQocmV0cnlDb3VudCArIE9ORV9SRVRSWSk7XG4gICAgICB9LCBNSUxMSVNFQ19UT19TRUMgKiAocmV0cnlDb3VudCArIE9ORV9SRVRSWSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXRIYXNFcnJvcih0cnVlKTtcbiAgICB9XG4gIH07XG5cbiAgaWYgKGhhc0Vycm9yKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc05hbWV9IHRpdGxlPXthbHR9PlxuICAgICAgICB7YWx0fVxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPGltZ1xuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICBzcmM9e2N1cnJlbnRTcmN9XG4gICAgICBhbHQ9e2FsdH1cbiAgICAgIG9uRXJyb3I9e2hhbmRsZUVycm9yfVxuICAgIC8+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBCYWRnZUZlYXR1cmVJbWFnZTtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IE9yZGVyTGlzdFRpY2tldHMgZnJvbSBcIi4vT3JkZXJMaXN0VGlja2V0c1wiO1xuaW1wb3J0IHsgUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBPcmRlckxpc3RJdGVtID0gKHtcbiAgc3VtbWl0LFxuICBvcmRlcixcbiAgb25QYWdpbmF0ZUNsaWNrLFxuICB0aWNrZXRzVG9SZWZ1bmQsXG4gIHNlbGVjdFRvUmVmdW5kXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW2l0ZW1zVG9EaXNwbGF5LCBzZXRJdGVtc1RvRGlzcGxheV0gPSB1c2VTdGF0ZShcbiAgICBQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlRcbiAgKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldEl0ZW1zVG9EaXNwbGF5KFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCk7XG4gIH0sIFtvcmRlcj8udGlja2V0c190b3RhbF0pO1xuXG4gIGlmICghb3JkZXI/Lm1lbWJlclRpY2tldHM/Lmxlbmd0aCkgcmV0dXJuIG51bGw7XG4gIGNvbnN0IHNsaWNlZFRpY2tldHMgPSBvcmRlcj8ubWVtYmVyVGlja2V0cz8uc2xpY2UoMCwgaXRlbXNUb0Rpc3BsYXkpO1xuXG4gIGNvbnN0IG9uVmlld01vcmUgPSAoKSA9PiB7XG4gICAgaWYgKG9yZGVyPy50aWNrZXRzX3RvdGFsID4gb3JkZXI/Lm1lbWJlclRpY2tldHMubGVuZ3RoKSB7XG4gICAgICBvblBhZ2luYXRlQ2xpY2soKTtcbiAgICB9XG4gICAgc2V0SXRlbXNUb0Rpc3BsYXkoaXRlbXNUb0Rpc3BsYXkgKyBQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQpO1xuICB9O1xuXG4gIGNvbnN0IG9uVmlld0xlc3MgPSAoKSA9PiBzZXRJdGVtc1RvRGlzcGxheShQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQpO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHtzbGljZWRUaWNrZXRzPy5tYXAoKHRpY2tldCkgPT4gKFxuICAgICAgICA8T3JkZXJMaXN0VGlja2V0c1xuICAgICAgICAgIGtleT17dGlja2V0LmlkfVxuICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIGlzUmVmdW5kTW9kYWw9e2ZhbHNlfVxuICAgICAgICAgIGlzU2VsZWN0ZWRUb1JlZnVuZD17ISF0aWNrZXRzVG9SZWZ1bmQuZmluZCgodCkgPT4gdC5pZCA9PT0gdGlja2V0LmlkKX1cbiAgICAgICAgICBzZWxlY3RUb1JlZnVuZD17c2VsZWN0VG9SZWZ1bmR9XG4gICAgICAgIC8+XG4gICAgICApKX1cbiAgICAgIHtvcmRlcj8udGlja2V0c190b3RhbCA+IGl0ZW1zVG9EaXNwbGF5ID8gKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInZpZXcgbW9yZSBidXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnZpZXdNb3JlQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9e29uVmlld01vcmV9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcImdlbmVyYWwudmlld19tb3JlXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICkgOiAoXG4gICAgICAgIFwiXCJcbiAgICAgICl9XG4gICAgICB7c2xpY2VkVGlja2V0cz8ubGVuZ3RoID4gUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UICYmXG4gICAgICBzbGljZWRUaWNrZXRzPy5sZW5ndGggPT09IG9yZGVyPy50aWNrZXRzX3RvdGFsID8gKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInZpZXcgbGVzcyBidXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnZpZXdNb3JlQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9e29uVmlld0xlc3N9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcImdlbmVyYWwudmlld19sZXNzXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICkgOiAoXG4gICAgICAgIFwiXCJcbiAgICAgICl9XG4gICAgPC8+XG4gICk7XG59O1xuXG5PcmRlckxpc3RJdGVtLnByb3BUeXBlcyA9IHtcbiAgb3JkZXI6IFByb3BUeXBlcy5vYmplY3QsXG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdFxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJMaXN0SXRlbTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgR3JpZCwgQnV0dG9uLCBCb3gsIFRvb2x0aXAgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCJAbXVpL21hdGVyaWFsL1N0YWNrXCI7XG5pbXBvcnQgQ2hlY2tib3ggZnJvbSBcIkBtdWkvbWF0ZXJpYWwvQ2hlY2tib3hcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgVGlja2V0U3RhdHVzIGZyb20gXCIuLi9UaWNrZXRTdGF0dXNcIjtcbmltcG9ydCB7IGdldFN1bW1pdFJlYXNzaWduRGF0ZSB9IGZyb20gXCIuLi8uLi91dGlscy9zdW1taXRVdGlsc1wiO1xuaW1wb3J0IHsgdXNlTm93IH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgQXR0ZW5kZWVTdGF0dXMgZnJvbSBcIi4vQXR0ZW5kZWVTdGF0dXNcIjtcbmltcG9ydCBUaWNrZXREZXRhaWwgZnJvbSBcIi4uL1RpY2tldERldGFpbFwiO1xuaW1wb3J0IHsgdXNlVGlja2V0RGV0YWlscyB9IGZyb20gXCIuLi8uLi9ob29rcy91c2VUaWNrZXREZXRhaWxzXCI7XG5pbXBvcnQgQ29weVRleHQgZnJvbSBcIi4uL0NvcHlUZXh0XCI7XG5pbXBvcnQgVGlja2V0QXNzaWduIGZyb20gXCIuLi9UaWNrZXRBc3NpZ25cIjtcbmltcG9ydCB7IHJlc2V0VGlja2V0IH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCBCYWRnZUZlYXR1cmVJbWFnZSBmcm9tIFwiLi9CYWRnZUZlYXR1cmVJbWFnZVwiO1xuXG5jb25zdCBtb2RhbFZpZXdzID0ge1xuICBkZXRhaWw6IFwiREVUQUlMXCIsXG4gIHJlYXNzaWduOiBcIlJFQVNTSUdOXCIsXG4gIGFzc2lnbjogXCJBU1NJR05cIlxufTtcblxuY29uc3QgVGlja2V0Q1RBcyA9ICh7XG4gIGlzSW5jb21wbGV0ZSxcbiAgaXNVbmFzc2lnbmVkLFxuICBpc1JlYXNzaWduYWJsZSxcbiAgb25PcGVuQ2xpY2tcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGlmIChpc1VuYXNzaWduZWQpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPEJ1dHRvblxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5hc3NpZ25UaWNrZXRCdXR0b259XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IG9uT3BlbkNsaWNrKG1vZGFsVmlld3MuYXNzaWduKX1cbiAgICAgID5cbiAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLmFzc2lnbl90aWNrZXRcIil9XG4gICAgICA8L0J1dHRvbj5cbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8U3RhY2sgYWxpZ25JdGVtcz1cImNlbnRlclwiIGRpcmVjdGlvbj1cInJvd1wiPlxuICAgICAgPEJ1dHRvblxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy52aWV3RmluaXNoVGlja2V0QnV0dG9ufVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBvbk9wZW5DbGljayhtb2RhbFZpZXdzLmRldGFpbCl9XG4gICAgICA+XG4gICAgICAgIHtpc0luY29tcGxldGVcbiAgICAgICAgICA/IHQoXCJ0aWNrZXRfc3RhdHVzLmZpbmlzaF90aWNrZXRcIilcbiAgICAgICAgICA6IHQoXCJ0aWNrZXRfc3RhdHVzLnZpZXdfdGlja2V0XCIpfVxuICAgICAgPC9CdXR0b24+XG4gICAgICB7aXNSZWFzc2lnbmFibGUgJiYgKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlYXNzaWduIHRpY2tldCBidXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnJlYXNzaWduQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uT3BlbkNsaWNrKG1vZGFsVmlld3MucmVhc3NpZ24pfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnJlYXNzaWduX3RpY2tldFwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApfVxuICAgIDwvU3RhY2s+XG4gICk7XG59O1xuXG5UaWNrZXRDVEFzLnByb3BUeXBlcyA9IHtcbiAgaXNJbmNvbXBsZXRlOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICBpc1VuYXNzaWduZWQ6IFByb3BUeXBlcy5ib29sLmlzUmVxdWlyZWQsXG4gIGlzUmVhc3NpZ25hYmxlOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICBvbk9wZW5DbGljazogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxufTtcblxuY29uc3QgT3JkZXJMaXN0VGlja2V0cyA9ICh7XG4gIHRpY2tldCxcbiAgc3VtbWl0LFxuICBpc1JlZnVuZE1vZGFsLFxuICBpc1NlbGVjdGVkVG9SZWZ1bmQsXG4gIHNlbGVjdFRvUmVmdW5kLFxuICBpc0V4dGVybmFsQXNzaWduZWRUaWNrZXRcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IG5vdyA9IHVzZU5vdygpO1xuICBjb25zdCB7IGlzUmVmdW5kYWJsZSwgaXNVbmFzc2lnbmVkLCBpc0luY29tcGxldGUsIGNhblJlYXNzaWduIH0gPVxuICAgIHVzZVRpY2tldERldGFpbHModGlja2V0KTtcbiAgY29uc3QgW21vZGFsT3Blbiwgc2V0TW9kYWxPcGVuXSA9IHVzZVN0YXRlKG51bGwpO1xuICBjb25zdCByZWFzc2lnbkRhdGUgPSBnZXRTdW1taXRSZWFzc2lnbkRhdGUoc3VtbWl0KTtcbiAgY29uc3Qgb25SZWFzc2lnbmFibGVQZXJpb2QgPSByZWFzc2lnbkRhdGUgPiBub3c7XG4gIGNvbnN0IGlzUmVhc3NpZ25hYmxlID1cbiAgICBvblJlYXNzaWduYWJsZVBlcmlvZCAmJiBjYW5SZWFzc2lnbiAmJiAhaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0O1xuXG4gIGNvbnN0IGhhbmRsZUNsb3NlTW9kYWwgPSAoKSA9PiB7XG4gICAgZGlzcGF0Y2gocmVzZXRUaWNrZXQoKSk7XG4gICAgc2V0TW9kYWxPcGVuKG51bGwpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZU9wZW5Nb2RhbCA9ICh2aWV3KSA9PiB7XG4gICAgZGlzcGF0Y2gocmVzZXRUaWNrZXQoKSk7XG4gICAgc2V0TW9kYWxPcGVuKHZpZXcpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEdyaWRcbiAgICAgIGNvbnRhaW5lclxuICAgICAga2V5PXt0aWNrZXQuaWR9XG4gICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5vcmRlcldyYXBwZXJ9ICR7XG4gICAgICAgIGlzUmVmdW5kTW9kYWwgPyBzdHlsZXMucmVmdW5kTW9kYWwgOiBcIlwiXG4gICAgICB9ICR7aXNSZWZ1bmRNb2RhbCAmJiAhaXNSZWZ1bmRhYmxlID8gc3R5bGVzLmRpc2FibGVkUmVmdW5kIDogXCJcIn0gJHtcbiAgICAgICAgaXNTZWxlY3RlZFRvUmVmdW5kID8gc3R5bGVzLnNlbGVjdGVkIDogXCJcIlxuICAgICAgfWB9XG4gICAgPlxuICAgICAge2lzUmVmdW5kTW9kYWwgJiYgKFxuICAgICAgICA8R3JpZCBpdGVtIHhzPXsxfSBwYWRkaW5nPXsyfSBjbGFzc05hbWU9e3N0eWxlcy5jaGVja2JveH0+XG4gICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kIHRpY2tldCBjaGVja2JveFwiXG4gICAgICAgICAgICByb2xlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgY2hlY2tlZD17aXNTZWxlY3RlZFRvUmVmdW5kfVxuICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZWxlY3RUb1JlZnVuZChlLCB0aWNrZXQpfVxuICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgXCImIC5NdWlTdmdJY29uLXJvb3RcIjoge1xuICAgICAgICAgICAgICAgIGZvbnRTaXplOiAxOFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgZGlzYWJsZWQ9eyFpc1JlZnVuZGFibGV9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIDxHcmlkXG4gICAgICAgIGl0ZW1cbiAgICAgICAgY29udGFpbmVyXG4gICAgICAgIGRhdGEtdGVzdGlkPVwib3JkZXItbGlzdC10aWNrZXRcIlxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICAgICAgeHM9e2lzUmVmdW5kTW9kYWwgPyAxMSA6IDEyfVxuICAgICAgPlxuICAgICAgICA8R3JpZFxuICAgICAgICAgIHhzPXs4fVxuICAgICAgICAgIHB5PXsyfVxuICAgICAgICAgIHBsPXs0fVxuICAgICAgICAgIGl0ZW1cbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRUaWNrZXRUeXBlfVxuICAgICAgICAgIGp1c3RpZnk9XCJzcGFjZS1iZXR3ZWVuXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxTdGFja1xuICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwiZmxleC1zdGFydFwiXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aDQ+e3RpY2tldC50aWNrZXRfdHlwZT8ubmFtZX08L2g0PlxuICAgICAgICAgIDwvU3RhY2s+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAgPEdyaWQgY2xhc3NOYW1lPXtzdHlsZXMuYmZGZWF0dXJlV3JhcHBlcn0geHM9ezR9IHB5PXsyfSBwcj17NH0gaXRlbT5cbiAgICAgICAgICB7LyogVG8gYWRkIGJhZGdlIGZlYXR1cmVzICovfVxuICAgICAgICAgIHt0aWNrZXQuYmFkZ2U/LmZlYXR1cmVzLm1hcCgoYmYpID0+IChcbiAgICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXtiZi5uYW1lfSBrZXk9e2JmLm5hbWV9PlxuICAgICAgICAgICAgICA8QmFkZ2VGZWF0dXJlSW1hZ2VcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5iZkZlYXR1cmV9XG4gICAgICAgICAgICAgICAgc3JjPXtiZi5pbWFnZX1cbiAgICAgICAgICAgICAgICBhbHQ9e2JmLm5hbWV9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAgPEdyaWQgeHM9ezEyfSBzeD17eyBweDogNCwgcGI6IDIgfX0gaXRlbT5cbiAgICAgICAgICA8QXR0ZW5kZWVTdGF0dXNcbiAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0PXshIWlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldH1cbiAgICAgICAgICAvPlxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldE5vfT5cbiAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy50aWNrZXRfbm9cIil9OntcIiBcIn1cbiAgICAgICAgICAgIDxDb3B5VGV4dFxuICAgICAgICAgICAgICB0ZXh0PXt0aWNrZXQubnVtYmVyfVxuICAgICAgICAgICAgICB0b29sdGlwVGV4dD17dChcInRpY2tldF9zdGF0dXMuY29weV90aWNrZXRfbnVtYmVyXCIpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRGb290ZXJ9IHB4PXt7IHhzOiAxIH19IHBiPXt7IHhzOiAyIH19PlxuICAgICAgICAgIDxCb3g+XG4gICAgICAgICAgICA8VGlja2V0U3RhdHVzIHRpY2tldD17dGlja2V0fSAvPlxuICAgICAgICAgIDwvQm94PlxuICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0QWN0aW9uQnV0dG9uc30+XG4gICAgICAgICAgICB7dGlja2V0LmlzX2FjdGl2ZSAmJiAhaXNSZWZ1bmRNb2RhbCAmJiAoXG4gICAgICAgICAgICAgIDxUaWNrZXRDVEFzXG4gICAgICAgICAgICAgICAgaXNVbmFzc2lnbmVkPXtpc1VuYXNzaWduZWR9XG4gICAgICAgICAgICAgICAgaXNJbmNvbXBsZXRlPXtpc0luY29tcGxldGV9XG4gICAgICAgICAgICAgICAgaXNSZWFzc2lnbmFibGU9e2lzUmVhc3NpZ25hYmxlICYmICFpc0V4dGVybmFsQXNzaWduZWRUaWNrZXR9XG4gICAgICAgICAgICAgICAgb25PcGVuQ2xpY2s9e2hhbmRsZU9wZW5Nb2RhbH1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgIDwvQm94PlxuICAgICAgICA8VGlja2V0RGV0YWlsXG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgdGlja2V0SWQ9e3RpY2tldD8uaWR9XG4gICAgICAgICAgb3JkZXJJZD17dGlja2V0Py5vcmRlcl9pZCB8fCB0aWNrZXQ/Lm9yZGVyPy5pZH1cbiAgICAgICAgICBvd25lcklkPXt0aWNrZXQ/Lm93bmVyPy5pZH1cbiAgICAgICAgICBvcGVuPXttb2RhbE9wZW4gPT09IG1vZGFsVmlld3MuZGV0YWlsfVxuICAgICAgICAgIG9uQ2xvc2U9e2hhbmRsZUNsb3NlTW9kYWx9XG4gICAgICAgIC8+XG4gICAgICAgIDxUaWNrZXRBc3NpZ25cbiAgICAgICAgICB0aWNrZXRJZD17dGlja2V0Py5pZH1cbiAgICAgICAgICBvcmRlcklkPXt0aWNrZXQ/Lm9yZGVyX2lkIHx8IHRpY2tldD8ub3JkZXI/LmlkfVxuICAgICAgICAgIG93bmVySWQ9e3RpY2tldD8ub3duZXI/LmlkfVxuICAgICAgICAgIG9wZW49e1ttb2RhbFZpZXdzLnJlYXNzaWduLCBtb2RhbFZpZXdzLmFzc2lnbl0uaW5jbHVkZXMobW9kYWxPcGVuKX1cbiAgICAgICAgICBvbkNsb3NlPXtoYW5kbGVDbG9zZU1vZGFsfVxuICAgICAgICAvPlxuICAgICAgPC9HcmlkPlxuICAgIDwvR3JpZD5cbiAgKTtcbn07XG5cbk9yZGVyTGlzdFRpY2tldHMucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgaWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgb3JkZXJfaWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgb3duZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBpZDogUHJvcFR5cGVzLm51bWJlcixcbiAgICAgIGVtYWlsOiBQcm9wVHlwZXMuc3RyaW5nXG4gICAgfSksXG4gICAgbnVtYmVyOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIHRvdGFsX3JlZnVuZGVkX2Ftb3VudDogUHJvcFR5cGVzLm51bWJlcixcbiAgICB0aWNrZXRfdHlwZTogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIG5hbWU6IFByb3BUeXBlcy5zdHJpbmdcbiAgICB9KSxcbiAgICBpc19hY3RpdmU6IFByb3BUeXBlcy5ib29sXG4gIH0pLFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIGlzUmVmdW5kTW9kYWw6IFByb3BUeXBlcy5ib29sLFxuICBpc1NlbGVjdGVkVG9SZWZ1bmQ6IFByb3BUeXBlcy5ib29sLFxuICBzZWxlY3RUb1JlZnVuZDogUHJvcFR5cGVzLmZ1bmMsXG4gIGlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldDogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyTGlzdFRpY2tldHM7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEdyaWQsIEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgVGFicyBmcm9tIFwiQG11aS9tYXRlcmlhbC9UYWJzXCI7XG5pbXBvcnQgVGFiIGZyb20gXCJAbXVpL21hdGVyaWFsL1RhYlwiO1xuaW1wb3J0IE9yZGVyTGlzdEl0ZW0gZnJvbSBcIi4vT3JkZXJMaXN0SXRlbVwiO1xuaW1wb3J0IE9yZGVyU3VtbWFyeSBmcm9tIFwiLi4vT3JkZXJTdW1tYXJ5XCI7XG5pbXBvcnQgUmVmdW5kUmVxdWVzdHNNb2RhbCBmcm9tIFwiLi4vUmVmdW5kUmVxdWVzdHNcIjtcbmltcG9ydCBFcnJvckxhYmVsIGZyb20gXCIuLi9MYWJlbHMvRXJyb3JMYWJlbFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IFJlZnVuZERldGFpbHMgZnJvbSBcIi4uL1JlZnVuZFJlcXVlc3RzL1JlZnVuZERldGFpbHNcIjtcblxuY29uc3QgVGFiUGFuZWwgPSAocHJvcHMpID0+IHtcbiAgY29uc3QgeyBjaGlsZHJlbiwgdmFsdWUsIGluZGV4IH0gPSBwcm9wcztcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICByb2xlPVwidGFicGFuZWxcIlxuICAgICAgaGlkZGVuPXt2YWx1ZSAhPT0gaW5kZXh9XG4gICAgICBpZD17YHRhYnBhbmVsLSR7aW5kZXh9YH1cbiAgICAgIGFyaWEtbGFiZWxsZWRieT17YHRhYi0ke2luZGV4fWB9XG4gICAgPlxuICAgICAge3ZhbHVlID09PSBpbmRleCAmJiBjaGlsZHJlbn1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmNvbnN0IE9yZGVyc0xpc3REZXNrdG9wTW9iaWxlID0gKHtcbiAgaXNNb2JpbGUsXG4gIHN1bW1pdCxcbiAgb3JkZXIsXG4gIGRldGFpbHNSZXF1aXJlZCxcbiAgb25QYWdpbmF0ZUNsaWNrXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW3ZhbHVlLCBzZXRWYWx1ZV0gPSB1c2VTdGF0ZSgwKTtcbiAgY29uc3QgaGFuZGxlQ2hhbmdlID0gKF8sIG5ld1ZhbHVlKSA9PiB7XG4gICAgc2V0VmFsdWUobmV3VmFsdWUpO1xuICB9O1xuICBjb25zdCBbdGlja2V0c1RvUmVmdW5kLCBzZXRUaWNrZXRzVG9SZWZ1bmRdID0gdXNlU3RhdGUoW10pO1xuICBjb25zdCBbc3VibWl0UmVxdWVzdCwgc2V0U3VibWl0UmVxdWVzdF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtyZWZ1bmREZXRhaWxzT3Blbiwgc2V0UmVmdW5kRGV0YWlsc09wZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gIGNvbnN0IG9uUmVmdW5kQ2xpY2sgPSAoKSA9PiB7XG4gICAgc2V0U3VibWl0UmVxdWVzdCh0cnVlKTtcbiAgfTtcbiAgY29uc3QgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzID0gKHRpY2tldCkgPT4ge1xuICAgIGNvbnN0IGZpbHRlclNlbGVjdGVkID0gdGlja2V0c1RvUmVmdW5kLmZpbHRlcigodCkgPT4gdC5pZCAhPT0gdGlja2V0LmlkKTtcbiAgICBzZXRUaWNrZXRzVG9SZWZ1bmQoZmlsdGVyU2VsZWN0ZWQpO1xuICB9O1xuICBjb25zdCBzZWxlY3RUb1JlZnVuZCA9IChlLCB0aWNrZXQpID0+IHtcbiAgICBjb25zdCB7IGNoZWNrZWQgfSA9IGUudGFyZ2V0O1xuICAgIGlmIChjaGVja2VkKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZFRpY2tldCA9IG9yZGVyPy5tZW1iZXJUaWNrZXRzPy5maW5kKFxuICAgICAgICAodCkgPT4gdC5pZCA9PT0gdGlja2V0LmlkXG4gICAgICApO1xuICAgICAgc2V0VGlja2V0c1RvUmVmdW5kKFsuLi50aWNrZXRzVG9SZWZ1bmQsIHNlbGVjdGVkVGlja2V0XSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHVuc2VsZWN0UmVmdW5kVGlja2V0cyh0aWNrZXQpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBjbG9zZVN1Ym1pdFJlcXVlc3QgPSAoKSA9PiB7XG4gICAgc2V0U3VibWl0UmVxdWVzdChmYWxzZSk7XG4gICAgc2V0VGlja2V0c1RvUmVmdW5kKFtdKTtcbiAgfTtcblxuICBjb25zdCByZXNldEFsbFJlZnVuZFN0YXR1c2VzID0gKCkgPT4ge1xuICAgIHNldFN1Ym1pdFJlcXVlc3QoZmFsc2UpO1xuICAgIHNldFRpY2tldHNUb1JlZnVuZChbXSk7XG4gIH07XG5cbiAgY29uc3QgbW9yZURldGFpbHMgPSAoKSA9PlxuICAgIGRldGFpbHNSZXF1aXJlZCAmJiAoXG4gICAgICA8RXJyb3JMYWJlbFxuICAgICAgICBtZXNzYWdlPXt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfZGV0YWlsc19yZXF1aXJlZFwiKX1cbiAgICAgICAgY29sb3I9XCIjZmY5ODAwXCJcbiAgICAgICAgZGF0YVRlc3RJZD1cIm1vcmUtZGV0YWlscy1sYWJlbFwiXG4gICAgICAvPlxuICAgICk7XG5cbiAgcmV0dXJuIGlzTW9iaWxlID8gKFxuICAgIDxCb3hcbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldExpc3RDb250YWluZXJ9XG4gICAgICBkYXRhLXRlc3RpZD1cIm1vYmlsZS1vcmRlcnMtbGlzdC1jb250YWluZXJcIlxuICAgID5cbiAgICAgIDxCb3ggc3g9e3sgYm9yZGVyQ29sb3I6IFwiZGl2aWRlclwiLCBwYjogMiB9fT5cbiAgICAgICAgPFRhYnNcbiAgICAgICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICBhcmlhLWxhYmVsPVwiVGlja2V0cyAmIFN1bW1hcnlcIlxuICAgICAgICA+XG4gICAgICAgICAgPFRhYiBsYWJlbD17dChcImxhYmVscy50aWNrZXRzXCIpfSBjbGFzc05hbWU9e3N0eWxlcy50YWJCdXR0b25zfSAvPlxuICAgICAgICAgIDxUYWIgbGFiZWw9e3QoXCJsYWJlbHMuc3VtbWFyeVwiKX0gY2xhc3NOYW1lPXtzdHlsZXMudGFiQnV0dG9uc30gLz5cbiAgICAgICAgPC9UYWJzPlxuICAgICAgPC9Cb3g+XG4gICAgICB7bW9yZURldGFpbHMoKX1cbiAgICAgIDxUYWJQYW5lbCB2YWx1ZT17dmFsdWV9IGluZGV4PXswfT5cbiAgICAgICAgPE9yZGVyTGlzdEl0ZW1cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgb25QYWdpbmF0ZUNsaWNrPXtvblBhZ2luYXRlQ2xpY2t9XG4gICAgICAgICAgdGlja2V0c1RvUmVmdW5kPXt0aWNrZXRzVG9SZWZ1bmR9XG4gICAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e3NlbGVjdFRvUmVmdW5kfVxuICAgICAgICAgIHN1Ym1pdFJlcXVlc3Q9e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgICAgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzPXt1bnNlbGVjdFJlZnVuZFRpY2tldHN9XG4gICAgICAgIC8+XG4gICAgICA8L1RhYlBhbmVsPlxuICAgICAgPFRhYlBhbmVsIHZhbHVlPXt2YWx1ZX0gaW5kZXg9ezF9PlxuICAgICAgICA8T3JkZXJTdW1tYXJ5XG4gICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIG9uUmVmdW5kQ2xpY2s9e29uUmVmdW5kQ2xpY2t9XG4gICAgICAgICAgc3VibWl0UmVxdWVzdD17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgICBvblJlZnVuZERldGFpbENsaWNrPXsoKSA9PiBzZXRSZWZ1bmREZXRhaWxzT3Blbih0cnVlKX1cbiAgICAgICAgLz5cbiAgICAgICAgPFJlZnVuZFJlcXVlc3RzTW9kYWxcbiAgICAgICAgICB0aWNrZXRzPXtvcmRlcj8ubWVtYmVyVGlja2V0cyB8fCBbXX1cbiAgICAgICAgICBvcGVuPXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICAgIG9uUmVmdW5kU3VjY2Vzc0Nsb3NlPXsoKSA9PiByZXNldEFsbFJlZnVuZFN0YXR1c2VzKCl9XG4gICAgICAgICAgb25DbG9zZVNsaWRlcj17KCkgPT4gY2xvc2VTdWJtaXRSZXF1ZXN0KCl9XG4gICAgICAgICAgdGlja2V0c1RvUmVmdW5kPXt0aWNrZXRzVG9SZWZ1bmR9XG4gICAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e3NlbGVjdFRvUmVmdW5kfVxuICAgICAgICAgIHVuc2VsZWN0UmVmdW5kVGlja2V0cz17dW5zZWxlY3RSZWZ1bmRUaWNrZXRzfVxuICAgICAgICAvPlxuICAgICAgICA8UmVmdW5kRGV0YWlsc1xuICAgICAgICAgIHRpY2tldHM9e29yZGVyPy5tZW1iZXJUaWNrZXRzfVxuICAgICAgICAgIGN1cnJlbmN5PXtvcmRlci5jdXJyZW5jeX1cbiAgICAgICAgICBvcGVuPXtyZWZ1bmREZXRhaWxzT3Blbn1cbiAgICAgICAgICBvbkNsb3NlU2xpZGVyPXsoKSA9PiBzZXRSZWZ1bmREZXRhaWxzT3BlbihmYWxzZSl9XG4gICAgICAgIC8+XG4gICAgICA8L1RhYlBhbmVsPlxuICAgIDwvQm94PlxuICApIDogKFxuICAgIDw+XG4gICAgICA8R3JpZCBpdGVtIG1kPXsxMn0+XG4gICAgICAgIHttb3JlRGV0YWlscygpfVxuICAgICAgPC9HcmlkPlxuICAgICAgPEdyaWRcbiAgICAgICAgcGFkZGluZz17MX1cbiAgICAgICAgaXRlbVxuICAgICAgICBtZD17N31cbiAgICAgICAgb3JkZXI9e3sgbWQ6IDEgfX1cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0TGlzdENvbnRhaW5lcn1cbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJkZXNrdG9wLW9yZGVycy1saXN0LWNvbnRhaW5lclwiXG4gICAgICA+XG4gICAgICAgIDxPcmRlckxpc3RJdGVtXG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgIG9uUGFnaW5hdGVDbGljaz17b25QYWdpbmF0ZUNsaWNrfVxuICAgICAgICAgIHRpY2tldHNUb1JlZnVuZD17dGlja2V0c1RvUmVmdW5kfVxuICAgICAgICAgIHNlbGVjdFRvUmVmdW5kPXtzZWxlY3RUb1JlZnVuZH1cbiAgICAgICAgICBzdWJtaXRSZXF1ZXN0PXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICAgIHVuc2VsZWN0UmVmdW5kVGlja2V0cz17dW5zZWxlY3RSZWZ1bmRUaWNrZXRzfVxuICAgICAgICAvPlxuICAgICAgPC9HcmlkPlxuICAgICAgPEdyaWQgcGFkZGluZz17MX0gaXRlbSBtZD17NX0gb3JkZXI9e3sgbWQ6IDEgfX0+XG4gICAgICAgIDxPcmRlclN1bW1hcnlcbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgb25SZWZ1bmRDbGljaz17b25SZWZ1bmRDbGlja31cbiAgICAgICAgICBzdWJtaXRSZXF1ZXN0PXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICAgIG9uUmVmdW5kRGV0YWlsQ2xpY2s9eygpID0+IHNldFJlZnVuZERldGFpbHNPcGVuKHRydWUpfVxuICAgICAgICAvPlxuICAgICAgPC9HcmlkPlxuICAgICAgPFJlZnVuZFJlcXVlc3RzTW9kYWxcbiAgICAgICAgdGlja2V0cz17b3JkZXI/Lm1lbWJlclRpY2tldHMgfHwgW119XG4gICAgICAgIG9wZW49e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgIG9uUmVmdW5kU3VjY2Vzc0Nsb3NlPXsoKSA9PiByZXNldEFsbFJlZnVuZFN0YXR1c2VzKCl9XG4gICAgICAgIG9uQ2xvc2VTbGlkZXI9eygpID0+IGNsb3NlU3VibWl0UmVxdWVzdCgpfVxuICAgICAgICB0aWNrZXRzVG9SZWZ1bmQ9e3RpY2tldHNUb1JlZnVuZH1cbiAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e3NlbGVjdFRvUmVmdW5kfVxuICAgICAgICB1bnNlbGVjdFJlZnVuZFRpY2tldHM9e3Vuc2VsZWN0UmVmdW5kVGlja2V0c31cbiAgICAgIC8+XG4gICAgICA8UmVmdW5kRGV0YWlsc1xuICAgICAgICB0aWNrZXRzPXtvcmRlcj8ubWVtYmVyVGlja2V0c31cbiAgICAgICAgY3VycmVuY3k9e29yZGVyLmN1cnJlbmN5fVxuICAgICAgICBvcGVuPXtyZWZ1bmREZXRhaWxzT3Blbn1cbiAgICAgICAgb25DbG9zZVNsaWRlcj17KCkgPT4gc2V0UmVmdW5kRGV0YWlsc09wZW4oZmFsc2UpfVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKTtcbn07XG5cbk9yZGVyc0xpc3REZXNrdG9wTW9iaWxlLnByb3BUeXBlcyA9IHtcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICBvcmRlcjogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBtZW1iZXJUaWNrZXRzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpXG4gIH0pLFxuICBpc01vYmlsZTogUHJvcFR5cGVzLmJvb2wsXG4gIGRldGFpbHNSZXF1aXJlZDogUHJvcFR5cGVzLmJvb2wsXG4gIG9uUGFnaW5hdGVDbGljazogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyc0xpc3REZXNrdG9wTW9iaWxlO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgR3JpZCwgQm94LCBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCB1c2VNZWRpYVF1ZXJ5IGZyb20gXCJAbXVpL21hdGVyaWFsL3VzZU1lZGlhUXVlcnlcIjtcbmltcG9ydCB7IGdldFRpY2tldHNCeU9yZGVyIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCB7IGdldEZvcm1hdHRlZERhdGUgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbmltcG9ydCB7IE9ORV9QQUdFX05FWFQgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgT3JkZXJzTGlzdERlc2t0b3BNb2JpbGUgZnJvbSBcIi4vT3JkZXJzTGlzdERlc2t0b3BNb2JpbGVcIjtcbmltcG9ydCBDb3B5VGV4dCBmcm9tIFwiLi4vQ29weVRleHRcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgT3JkZXJzTGlzdCA9ICh7IHN1bW1pdCwgb3JkZXIgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgeyB0aWNrZXRfcGVyX3BhZ2UsIGZpbHRlciwgc29ydCB9ID0gdXNlU2VsZWN0b3IoXG4gICAgKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSxcbiAgICBzaGFsbG93RXF1YWxcbiAgKTtcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpO1xuICBjb25zdCBpc01vYmlsZSA9IHVzZU1lZGlhUXVlcnkodGhlbWUuYnJlYWtwb2ludHMuZG93bihcImxnXCIpKTtcbiAgY29uc3QgW2lzTW9iaWxlVmlld2FibGUsIHNldE1vYmlsZVZpZXdhYmxlXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgZGV0YWlsc1JlcXVpcmVkID0gb3JkZXIubWVtYmVyVGlja2V0cz8uZmluZChcbiAgICAodGlja2V0KSA9PiB0aWNrZXQub3duZXI/LnN0YXR1cyA9PT0gXCJJbmNvbXBsZXRlXCJcbiAgKTtcblxuICBjb25zdCBvblBhZ2luYXRlQ2xpY2sgPSAoKSA9PlxuICAgIGRpc3BhdGNoKFxuICAgICAgZ2V0VGlja2V0c0J5T3JkZXIoe1xuICAgICAgICBvcmRlcklkOiBvcmRlci5pZCxcbiAgICAgICAgcGFnZTogb3JkZXIudGlja2V0c19wYWdlX2N1cnJlbnQgKyBPTkVfUEFHRV9ORVhULFxuICAgICAgICBwZXJQYWdlOiB0aWNrZXRfcGVyX3BhZ2UsXG4gICAgICAgIGZpbHRlcixcbiAgICAgICAgc29ydFxuICAgICAgfSlcbiAgICApO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxCb3hcbiAgICAgICAgc3g9e3sgcGFkZGluZzogeyB4czogMiwgbWQ6IDEsIGxnOiAwIH0gfX1cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJUaWNrZXRJbmZvQ29udGFpbmVyfVxuICAgICAgPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyVGlja2V0SW5mb31cbiAgICAgICAgICBkYXRhLXRlc3RpZD1cIm9yZGVyLXRpY2tldC1pbmZvLWNvbnRhaW5lclwiXG4gICAgICAgID5cbiAgICAgICAgICB7dChcIm9yZGVycy5wdXJjaGFzZWRcIil9OiB7Z2V0Rm9ybWF0dGVkRGF0ZShvcmRlci5jcmVhdGVkKX0gfHtcIiBcIn1cbiAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkub3JkZXJfbm9cIil9OntcIiBcIn1cbiAgICAgICAgICA8Q29weVRleHRcbiAgICAgICAgICAgIHRleHQ9e29yZGVyLm51bWJlcn1cbiAgICAgICAgICAgIHRvb2x0aXBUZXh0PXt0KFwib3JkZXJfc3VtbWFyeS5jb3B5X29yZGVyX251bWJlclwiKX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIHtpc01vYmlsZSAmJiAoXG4gICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgc3g9e3sgcGFkZGluZzogXCI1cHggMTBweFwiIH19XG4gICAgICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRNb2JpbGVWaWV3YWJsZSghaXNNb2JpbGVWaWV3YWJsZSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2lzTW9iaWxlVmlld2FibGVcbiAgICAgICAgICAgICAgPyB0KFwidGlja2V0X3N0YXR1cy5oaWRlX3RpY2tldHNcIilcbiAgICAgICAgICAgICAgOiB0KFwidGlja2V0X3N0YXR1cy52aWV3X3RpY2tldHNcIil9XG4gICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICl9XG4gICAgICA8L0JveD5cbiAgICAgIDxHcmlkXG4gICAgICAgIGtleT17b3JkZXIuaWR9XG4gICAgICAgIGNvbnRhaW5lclxuICAgICAgICByb3dTcGFjaW5nPXsxfVxuICAgICAgICBjb2x1bW5TcGFjaW5nPXt7IHhzOiAxLCBzbTogMiwgbWQ6IDMgfX1cbiAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMub3JkZXJUaWNrZXRDb250YWluZXJ9ICR7XG4gICAgICAgICAgaXNNb2JpbGUgJiYgIWlzTW9iaWxlVmlld2FibGUgPyBzdHlsZXMuZGlzcGxheV9ub25lIDogXCJcIlxuICAgICAgICB9YH1cbiAgICAgICAgc3g9e3tcbiAgICAgICAgICBmbGV4RGlyZWN0aW9uOiB7XG4gICAgICAgICAgICBtZDogXCJyb3dcIixcbiAgICAgICAgICAgIGxnOiBcInJvd1wiXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwYWRkaW5nOiB7XG4gICAgICAgICAgICB4czogMixcbiAgICAgICAgICAgIG1kOiA0LFxuICAgICAgICAgICAgbGc6IDBcbiAgICAgICAgICB9XG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxPcmRlcnNMaXN0RGVza3RvcE1vYmlsZVxuICAgICAgICAgIGlzTW9iaWxlPXtpc01vYmlsZX1cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgZGV0YWlsc1JlcXVpcmVkPXshIWRldGFpbHNSZXF1aXJlZH1cbiAgICAgICAgICBvblBhZ2luYXRlQ2xpY2s9e29uUGFnaW5hdGVDbGlja31cbiAgICAgICAgLz5cbiAgICAgIDwvR3JpZD5cbiAgICA8Lz5cbiAgKTtcbn07XG5cbk9yZGVyc0xpc3QucHJvcFR5cGVzID0ge1xuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIG9yZGVyOiBQcm9wVHlwZXMub2JqZWN0XG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlcnNMaXN0O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZU1lbW8gfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgUmlnaHREcmF3ZXIgZnJvbSBcIi4uL1JpZ2h0RHJhd2VyXCI7XG5pbXBvcnQgUmVmdW5kUmVxdWVzdGVkVGlja2V0IGZyb20gXCIuL1JlZnVuZFJlcXVlc3RlZFRpY2tldFwiO1xuaW1wb3J0IHsgZ2V0QWxsUmVmdW5kUmVxdWVzdGVkVGlja2V0cyB9IGZyb20gXCIuLi8uLi91dGlscy90aWNrZXRVdGlsc1wiO1xuXG5jb25zdCBSZWZ1bmREZXRhaWxzID0gKHsgdGlja2V0cywgY3VycmVuY3ksIG9wZW4sIG9uQ2xvc2VTbGlkZXIgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IHJlcXVlc3RlZFRpY2tldHMgPSB1c2VNZW1vKFxuICAgICgpID0+IGdldEFsbFJlZnVuZFJlcXVlc3RlZFRpY2tldHModGlja2V0cyksXG4gICAgW3RpY2tldHNdXG4gICk7XG4gIGNvbnN0IGNsb3NlU2xpZGVyID0gKCkgPT4ge1xuICAgIG9uQ2xvc2VTbGlkZXIoKTtcbiAgfTtcbiAgcmV0dXJuIChcbiAgICA8UmlnaHREcmF3ZXJcbiAgICAgIGlkPVwicmVmdW5kLWRldGFpbHNcIlxuICAgICAgb3Blbj17b3Blbn1cbiAgICAgIG9uQ2xvc2U9e2Nsb3NlU2xpZGVyfVxuICAgICAgdGl0bGU9e3QoXCJvcmRlcl9zdW1tYXJ5LnJlZnVuZF9kZXRhaWxzXCIpfVxuICAgID5cbiAgICAgIDxCb3hcbiAgICAgICAgc3g9e3tcbiAgICAgICAgICBkaXNwbGF5OiBcImZsZXhcIixcbiAgICAgICAgICBmbGV4RGlyZWN0aW9uOiBcImNvbHVtblwiLFxuICAgICAgICAgIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG4gICAgICAgICAgcGFkZGluZzogXCIwIDVyZW1cIlxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICB7cmVxdWVzdGVkVGlja2V0cz8ubWFwKCh0aWNrZXQpID0+IChcbiAgICAgICAgICA8UmVmdW5kUmVxdWVzdGVkVGlja2V0XG4gICAgICAgICAgICBrZXk9e2ByZWZ1bmRfcmVxXyR7dGlja2V0Py5pZH1gfVxuICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICBjdXJyZW5jeT17Y3VycmVuY3l9XG4gICAgICAgICAgICByZWZ1bmREZXRhaWxzXG4gICAgICAgICAgLz5cbiAgICAgICAgKSl9XG4gICAgICA8L0JveD5cbiAgICA8L1JpZ2h0RHJhd2VyPlxuICApO1xufTtcblxuUmVmdW5kRGV0YWlscy5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdCksXG4gIG9wZW46IFByb3BUeXBlcy5ib29sLFxuICBvbkNsb3NlU2xpZGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVmdW5kRGV0YWlscztcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEdyaWQsIEljb25CdXR0b24sIFRvb2x0aXAgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdG9vbHRpcENsYXNzZXMgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9Ub29sdGlwXCI7XG5pbXBvcnQgeyBzdHlsZWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCBJbmZvSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9JbmZvXCI7XG5pbXBvcnQgU3RhY2sgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIjtcbmltcG9ydCBtb21lbnQgZnJvbSBcIm1vbWVudC10aW1lem9uZVwiO1xuaW1wb3J0IEF0dGVuZGVlU3RhdHVzIGZyb20gXCIuLi9PcmRlcnNMaXN0L0F0dGVuZGVlU3RhdHVzXCI7XG5pbXBvcnQgUmVmdW5kU3RhdHVzIGZyb20gXCIuL1JlZnVuZFN0YXR1c1wiO1xuaW1wb3J0IENvcHlUZXh0IGZyb20gXCIuLi9Db3B5VGV4dFwiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgVGlja2V0U3RhdHVzIGZyb20gXCIuLi9UaWNrZXRTdGF0dXNcIjtcbmltcG9ydCB7IE1JTExJU0VDX1RPX1NFQyB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCB7IGZvcm1hdEN1cnJlbmN5IH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5cbmNvbnN0IFJlZnVuZFJlcXVlc3RlZFRpY2tldCA9ICh7IHRpY2tldCwgY3VycmVuY3ksIHJlZnVuZERldGFpbHMgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgY29uc3QgR1JJRF84ID0gODtcbiAgY29uc3QgR1JJRF8xMiA9IDEyO1xuXG4gIGNvbnN0IFBBRERJTkdfMiA9IDI7XG5cbiAgY29uc3QgYXBwcm92ZWRSZWZ1bmRzID0gdGlja2V0LnJlZnVuZF9yZXF1ZXN0cy5maWx0ZXIoXG4gICAgKHJlZnVuZCkgPT4gcmVmdW5kLnN0YXR1cyA9PT0gXCJBcHByb3ZlZFwiXG4gICk7XG5cbiAgY29uc3QgcmVmdW5kZWRUYXhlc1N1bW1hdG9yeSA9IHt9O1xuXG4gIGFwcHJvdmVkUmVmdW5kcy5mb3JFYWNoKChyZWZ1bmQpID0+IHtcbiAgICByZWZ1bmQucmVmdW5kZWRfdGF4ZXMuZm9yRWFjaCgocnQpID0+IHtcbiAgICAgIGNvbnN0IHRheElkID0gcnQudGF4LmlkO1xuICAgICAgaWYgKCFyZWZ1bmRlZFRheGVzU3VtbWF0b3J5W3RheElkXSkge1xuICAgICAgICByZWZ1bmRlZFRheGVzU3VtbWF0b3J5W3RheElkXSA9IHtcbiAgICAgICAgICBuYW1lOiBydC50YXgubmFtZSxcbiAgICAgICAgICB0b3RhbFJlZnVuZGVkVGF4QW1vdW50OiAwXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZWZ1bmRlZFRheGVzU3VtbWF0b3J5W3RheElkXS50b3RhbFJlZnVuZGVkVGF4QW1vdW50ICs9XG4gICAgICAgIHJ0LnJlZnVuZGVkX2Ftb3VudDtcbiAgICB9KTtcbiAgfSk7XG5cbiAgY29uc3QgSHRtbFRvb2x0aXAgPSBzdHlsZWQoKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9KSA9PiAoXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgPFRvb2x0aXAgey4uLnByb3BzfSBjbGFzc2VzPXt7IHBvcHBlcjogY2xhc3NOYW1lIH19IC8+XG4gICkpKCgpID0+ICh7XG4gICAgW2AmIC4ke3Rvb2x0aXBDbGFzc2VzLnRvb2x0aXB9YF06IHtcbiAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjZjVmNWY5XCIsXG4gICAgICBjb2xvcjogXCJyZ2JhKDAsIDAsIDAsIDAuODcpXCIsXG4gICAgICBtYXhXaWR0aDogMjIwLFxuICAgICAgZm9udFNpemU6IFwiMWVtXCIsXG4gICAgICBib3JkZXI6IFwiMXB4IHNvbGlkICNkYWRkZTlcIlxuICAgIH1cbiAgfSkpO1xuXG4gIHJldHVybiAoXG4gICAgPEdyaWRcbiAgICAgIGNvbnRhaW5lclxuICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMucmVmdW5kVGlja2V0Qm94Q29udGFpbmVyfSAke1xuICAgICAgICByZWZ1bmREZXRhaWxzID8gc3R5bGVzLnJlZnVuZERldGFpbCA6IFwiXCJcbiAgICAgIH0gYH1cbiAgICAgIGRhdGEtdGVzdGlkPVwicmVmdW5kLXJlcXVlc3RlZC10aWNrZXQtY29udGFpbmVyXCJcbiAgICA+XG4gICAgICA8R3JpZFxuICAgICAgICB4cz17R1JJRF8xMn1cbiAgICAgICAgc209e3JlZnVuZERldGFpbHMgPyBHUklEXzggOiBHUklEXzEyfVxuICAgICAgICBpdGVtXG4gICAgICAgIGp1c3RpZnk9XCJzcGFjZS1iZXR3ZWVuXCJcbiAgICAgICAgcHQ9ezJ9XG4gICAgICAgIHB4PXs0fVxuICAgICAgPlxuICAgICAgICA8U3RhY2tcbiAgICAgICAgICBzeD17e1xuICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwic3BhY2UtYmV0d2VlblwiLFxuICAgICAgICAgICAgYWxpZ25JdGVtczogXCJjZW50ZXJcIlxuICAgICAgICAgIH19XG4gICAgICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxoND57dGlja2V0LnRpY2tldF90eXBlPy5uYW1lfTwvaDQ+XG4gICAgICAgICAgPEdyaWQgY2xhc3NOYW1lPXtzdHlsZXMuYmFkZ2VGZWF0dXJlV3JhcHBlcn0geHM9ezR9IGl0ZW0+XG4gICAgICAgICAgICB7dGlja2V0LmJhZGdlPy5mZWF0dXJlcy5tYXAoKGJmKSA9PiAoXG4gICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5iYWRnZUZlYXR1cmV9XG4gICAgICAgICAgICAgICAgc3JjPXtiZi5pbWFnZX1cbiAgICAgICAgICAgICAgICBhbHQ9e2JmLm5hbWV9XG4gICAgICAgICAgICAgICAga2V5PXtiZi5uYW1lfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L1N0YWNrPlxuICAgICAgPC9HcmlkPlxuICAgICAge3JlZnVuZERldGFpbHMgJiYgKFxuICAgICAgICA8R3JpZCBzbT17NH0geHM9ezEyfSBweD17eyBzbTogMiwgeHM6IDQgfX0gcHk9e3sgeHM6IDEsIHNtOiAyIH19IGl0ZW0+XG4gICAgICAgICAgPFJlZnVuZFN0YXR1cyB0aWNrZXQ9e3RpY2tldH0gLz5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIDxHcmlkIHhzPXsxMn0gaXRlbSBweD17NH0gcGI9e3JlZnVuZERldGFpbHMgPyBQQURESU5HXzIgOiAwfSBjb250YWluZXI+XG4gICAgICAgIDxHcmlkIHhzPXsxMn0gc209ezh9IGNsYXNzTmFtZT17c3R5bGVzLnJlZnVuZFRpY2tldEF0dGVuZGVlfT5cbiAgICAgICAgICA8QXR0ZW5kZWVTdGF0dXMgdGlja2V0PXt0aWNrZXR9IC8+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0Tm99PlxuICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnRpY2tldF9ub1wiKX06IDxDb3B5VGV4dCB0ZXh0PXt0aWNrZXQubnVtYmVyfSAvPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgICB7cmVmdW5kRGV0YWlscyAmJiB0aWNrZXQudG90YWxfcmVmdW5kZWRfYW1vdW50ID4gMCAmJiAoXG4gICAgICAgICAgPEdyaWQgeHM9ezEyfSBtZD17NH0gcGw9e3sgeHM6IDAsIHNtOiA0IH19PlxuICAgICAgICAgICAge2Zvcm1hdEN1cnJlbmN5KHRpY2tldC50b3RhbF9yZWZ1bmRlZF9hbW91bnQsIHsgY3VycmVuY3kgfSl9e1wiIFwifVxuICAgICAgICAgICAgUmVmdW5kZWRcbiAgICAgICAgICAgIHthcHByb3ZlZFJlZnVuZHMuc29tZSgocikgPT4gci5yZWZ1bmRlZF90YXhlcy5sZW5ndGggPiAwKSAmJiAoXG4gICAgICAgICAgICAgIDxIdG1sVG9vbHRpcFxuICAgICAgICAgICAgICAgIHRpdGxlPXtcbiAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICAgICAgICAgIHtmb3JtYXRDdXJyZW5jeSh0aWNrZXQucmVmdW5kZWRfYW1vdW50LCB7IGN1cnJlbmN5IH0pfXtcIiBcIn1cbiAgICAgICAgICAgICAgICAgICAgICBUaWNrZXQgQW1vdW50XG4gICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgPGI+VGF4ZXM8L2I+XG4gICAgICAgICAgICAgICAgICAgIHtPYmplY3Qua2V5cyhyZWZ1bmRlZFRheGVzU3VtbWF0b3J5KS5tYXAoKHRheElkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyB0b3RhbFJlZnVuZGVkVGF4QW1vdW50LCBuYW1lIH0gPVxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmdW5kZWRUYXhlc1N1bW1hdG9yeVt0YXhJZF07XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGtleT17dGF4SWR9PntgJHtuYW1lfSAtICR7Zm9ybWF0Q3VycmVuY3koXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsUmVmdW5kZWRUYXhBbW91bnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsgY3VycmVuY3kgfVxuICAgICAgICAgICAgICAgICAgICAgICAgKX1gfTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPEluZm9JY29uIC8+XG4gICAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgICA8L0h0bWxUb29sdGlwPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDxiciAvPlxuICAgICAgICAgICAge21vbWVudChcbiAgICAgICAgICAgICAgdGlja2V0LnJlZnVuZF9yZXF1ZXN0c1swXS5hY3Rpb25fZGF0ZSAqIE1JTExJU0VDX1RPX1NFQ1xuICAgICAgICAgICAgKS5mb3JtYXQoXCJNTU0gREQsIFlZWVlcIil9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICApfVxuICAgICAgPC9HcmlkPlxuICAgICAgeyFyZWZ1bmREZXRhaWxzICYmIChcbiAgICAgICAgPEdyaWQgeHM9ezEyfSBwcj17NH0gcGI9ezJ9PlxuICAgICAgICAgIDxHcmlkIHhzPXsxMn0gaXRlbT5cbiAgICAgICAgICAgIDxUaWNrZXRTdGF0dXMgdGlja2V0PXt0aWNrZXR9IC8+XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICApfVxuICAgIDwvR3JpZD5cbiAgKTtcbn07XG5cblJlZnVuZFJlcXVlc3RlZFRpY2tldC5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLm9iamVjdCxcbiAgcmVmdW5kRGV0YWlsczogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlZnVuZFJlcXVlc3RlZFRpY2tldDtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VNZW1vIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBDaGlwIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IGdldFJlZnVuZFJlcXVlc3RlZFN0YXR1c0NvbG9yIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3RpY2tldFV0aWxzXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgUmVmdW5kU3RhdHVzID0gKHsgdGlja2V0IH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBzdGF0dXNDb2xvciA9IHVzZU1lbW8oXG4gICAgKCkgPT4gZ2V0UmVmdW5kUmVxdWVzdGVkU3RhdHVzQ29sb3IodGlja2V0KSxcbiAgICBbdGlja2V0XVxuICApO1xuICByZXR1cm4gKFxuICAgIDxDaGlwXG4gICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHJlZnVuZCBzdGF0dXMgbGFiZWxcIlxuICAgICAgbGFiZWw9e3QoYHRpY2tldF9zdGF0dXMucmVmdW5kX3JlcXVlc3RfJHtzdGF0dXNDb2xvcn1gKX1cbiAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzW3N0YXR1c0NvbG9yXX1gfVxuICAgIC8+XG4gICk7XG59O1xuXG5SZWZ1bmRTdGF0dXMucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5vYmplY3Rcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlZnVuZFN0YXR1cztcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2ggfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IEJveCwgQnV0dG9uLCBTdHlsZWRFbmdpbmVQcm92aWRlciB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgQ2hlY2tDaXJjbGVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NoZWNrQ2lyY2xlXCI7XG5pbXBvcnQgUmlnaHREcmF3ZXIgZnJvbSBcIi4uL1JpZ2h0RHJhd2VyXCI7XG5pbXBvcnQgRXJyb3JMYWJlbCBmcm9tIFwiLi4vTGFiZWxzL0Vycm9yTGFiZWxcIjtcbmltcG9ydCB7IHJlZnVuZEJ1bGtUaWNrZXRzLCB1cGRhdGVUaWNrZXRzUmVmdW5kUmVxdWVzdGVkIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCB7IFNURVBfT05FLCBTVEVQX1RIUkVFLCBTVEVQX1RXTyB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCBPcmRlckxpc3RUaWNrZXRzIGZyb20gXCIuLi9PcmRlcnNMaXN0L09yZGVyTGlzdFRpY2tldHNcIjtcbmltcG9ydCBSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQgZnJvbSBcIi4vUmVmdW5kUmVxdWVzdGVkVGlja2V0XCI7XG5cbmNvbnN0IFJlZnVuZFJlcXVlc3RzTW9kYWwgPSAoe1xuICB0aWNrZXRzLFxuICBzdW1taXQsXG4gIG9wZW4sXG4gIG9uUmVmdW5kU3VjY2Vzc0Nsb3NlLFxuICBvbkNsb3NlU2xpZGVyLFxuICB0aWNrZXRzVG9SZWZ1bmQsXG4gIHNlbGVjdFRvUmVmdW5kLFxuICB1bnNlbGVjdFJlZnVuZFRpY2tldHNcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IFtzdGVwLCBzZXRTdGVwXSA9IHVzZVN0YXRlKFNURVBfT05FKTtcbiAgY29uc3QgW2Vycm9yTXNnLCBzZXRFcnJvck1zZ10gPSB1c2VTdGF0ZShcIlwiKTtcbiAgY29uc3QgW3JlZnVuZFN1Y2Nlc3MsIHNldFJlZnVuZFN1Y2Nlc3NdID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gIGNvbnN0IGNsb3NlU2xpZGVyID0gKCkgPT4ge1xuICAgIHNldEVycm9yTXNnKFwiXCIpO1xuICAgIG9uQ2xvc2VTbGlkZXIoKTtcbiAgICBzZXRTdGVwKFNURVBfT05FKTtcbiAgICBpZiAocmVmdW5kU3VjY2Vzcykge1xuICAgICAgb25SZWZ1bmRTdWNjZXNzQ2xvc2UoKTsgLy8gaWYgdGhlIHJlZnVuZCBpcyBhIHN1Y2Nlc3MsIHRyaWdnZXIgYW5kIHJlLXJldHJpZXZlIHRpY2tldHMgYnkgb3JkZXJcbiAgICAgIHNldFJlZnVuZFN1Y2Nlc3MoZmFsc2UpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBjb25maXJtUmVmdW5kID0gKCkgPT4ge1xuICAgIHNldFN0ZXAoU1RFUF9UV08pO1xuICB9O1xuXG4gIGNvbnN0IGdvQmFja1RvUmVmdW5kID0gKCkgPT4ge1xuICAgIHNldFN0ZXAoU1RFUF9PTkUpO1xuICB9O1xuXG4gIGNvbnN0IHJlZnVuZFRpY2tldHMgPSBhc3luYyAoKSA9PiB7XG4gICAgZGlzcGF0Y2gocmVmdW5kQnVsa1RpY2tldHMoeyB0aWNrZXRzOiB0aWNrZXRzVG9SZWZ1bmQgfSkpLnRoZW4oKHJlcykgPT4ge1xuICAgICAgZGlzcGF0Y2godXBkYXRlVGlja2V0c1JlZnVuZFJlcXVlc3RlZChyZXMpKTsgLy8gcmV0dXJuaW5nIHdoaWNoIHRpY2tldHMgd2VyZSBzdWNjZXNzZnVsXG4gICAgICBpZiAocmVzPy5sZW5ndGggPT09IHRpY2tldHNUb1JlZnVuZC5sZW5ndGgpIHtcbiAgICAgICAgc2V0U3RlcChTVEVQX1RIUkVFKTsgLy8gc3VjY2VzcywgYWxsIHJlZnVuZHMgd2VyZSByZXF1ZXN0ZWRcbiAgICAgICAgc2V0UmVmdW5kU3VjY2Vzcyh0cnVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldEVycm9yTXNnKHQoXCJlcnJvcnMucmVmdW5kX3Vuc3VjY2Vzc2Z1bFwiKSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgc2V0RXJyb3JNc2coXCJcIik7XG4gIH07XG5cbiAgY29uc3QgcmVmdW5kU3RlcE9uZSA9ICgpID0+IChcbiAgICA8PlxuICAgICAgPGgyIGNsYXNzTmFtZT17c3R5bGVzLnN1YnRpdGxlfT5cbiAgICAgICAge3QoXCJjb25maXJtX3BvcHVwLnF1ZXN0aW9uX3RleHRfc2VsZWN0X3JlZnVuZFwiKX1cbiAgICAgIDwvaDI+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldExpc3R9PlxuICAgICAgICB7dGlja2V0cy5tYXAoKHRpY2tldCkgPT4gKFxuICAgICAgICAgIDxPcmRlckxpc3RUaWNrZXRzXG4gICAgICAgICAgICBrZXk9e2B0aWNrZXQtJHt0aWNrZXQuaWR9YH1cbiAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICBpc1NlbGVjdGVkVG9SZWZ1bmQ9e1xuICAgICAgICAgICAgICAhIXRpY2tldHNUb1JlZnVuZC5maW5kKCh0KSA9PiB0LmlkID09PSB0aWNrZXQuaWQpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZWxlY3RUb1JlZnVuZD17c2VsZWN0VG9SZWZ1bmR9XG4gICAgICAgICAgICB1bnNlbGVjdFJlZnVuZFRpY2tldHM9e3Vuc2VsZWN0UmVmdW5kVGlja2V0c31cbiAgICAgICAgICAgIGlzUmVmdW5kTW9kYWxcbiAgICAgICAgICAvPlxuICAgICAgICApKX1cbiAgICAgIDwvQm94PlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5hY3Rpb25CdXR0b25zfT5cbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQtY2FuY2VsLWJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY2FuY2VsQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9e2Nsb3NlU2xpZGVyfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJnZW5lcmFsLmNhbmNlbFwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kLWNvbnRpbnVlLWJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY29udGludWVCdXR0b259XG4gICAgICAgICAgb25DbGljaz17Y29uZmlybVJlZnVuZH1cbiAgICAgICAgICBkaXNhYmxlZD17dGlja2V0c1RvUmVmdW5kLmxlbmd0aCA9PT0gMH1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwiZ2VuZXJhbC5jb250aW51ZVwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICA8L0JveD5cbiAgICA8Lz5cbiAgKTtcblxuICBjb25zdCByZWZ1bmRTdGVwVHdvID0gKCkgPT4gKFxuICAgIDxCb3ggZGF0YS10ZXN0aWQ9XCJyZWZ1bmQtcmVxdWVzdC1zdWNjZXNzZnVsXCI+XG4gICAgICA8aDMgY2xhc3NOYW1lPXtzdHlsZXMuc3VidGl0bGV9PlxuICAgICAgICB7dChcImNvbmZpcm1fcG9wdXAucXVlc3Rpb25fdGV4dF9jb25maXJtX3JlZnVuZFwiKX1cbiAgICAgIDwvaDM+XG4gICAgICB7ZXJyb3JNc2cgJiYgKFxuICAgICAgICA8RXJyb3JMYWJlbFxuICAgICAgICAgIGNsYXNzTmFtZXM9e3N0eWxlcy5yZWZ1bmRFcnJvck1zZ31cbiAgICAgICAgICBjb2xvcj1cIiNGRjAwMDBcIlxuICAgICAgICAgIGRhdGFUZXN0SWQ9XCJmYWlsZWQtcmVmdW5kLW1lc3NhZ2VcIlxuICAgICAgICAgIG1lc3NhZ2U9e2Vycm9yTXNnfVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0TGlzdH0+XG4gICAgICAgIHt0aWNrZXRzVG9SZWZ1bmQubWFwKCh0aWNrZXQpID0+IChcbiAgICAgICAgICA8UmVmdW5kUmVxdWVzdGVkVGlja2V0XG4gICAgICAgICAgICBrZXk9e2ByZWZ1bmRfcmVxXyR7dGlja2V0Py5pZH1gfVxuICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgLz5cbiAgICAgICAgKSl9XG4gICAgICA8L0JveD5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuQ1RBQnV0dG9uV3JhcHBlcn0+XG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kLXJldHVybi1idXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNhbmNlbEJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXtnb0JhY2tUb1JlZnVuZH1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwiZ2VuZXJhbC5iYWNrXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQtY29udGludWUtYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jb250aW51ZUJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXtyZWZ1bmRUaWNrZXRzfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJnZW5lcmFsLmNvbnRpbnVlXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgIDwvQm94PlxuICAgIDwvQm94PlxuICApO1xuXG4gIGNvbnN0IHJlZnVuZFN0ZXBUaHJlZSA9ICgpID0+IChcbiAgICA8Qm94XG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy5yZWZ1bmRTdWNjZXNzZnVsfVxuICAgICAgZGF0YS10ZXN0aWQ9XCJyZWZ1bmQtcmVxdWVzdC1zdWNjZXNzZnVsXCJcbiAgICA+XG4gICAgICA8Q2hlY2tDaXJjbGVJY29uIHN4PXt7IGNvbG9yOiBcIiM0Y2FmNTBcIiB9fSAvPlxuICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMuc3VjY2Vzc01zZ30+XG4gICAgICAgIHt0KFwidGlja2V0cy5yZWZ1bmRfcmVxdWVzdF9zdWNjZXNzXzFcIil9XG4gICAgICA8L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy5zdWNjZXNzTXNnMn0+XG4gICAgICAgIHt0KFwidGlja2V0cy5yZWZ1bmRfcmVxdWVzdF9zdWNjZXNzXzJcIil9XG4gICAgICA8L3NwYW4+XG4gICAgICA8QnV0dG9uXG4gICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQtZmluaXNoLWJ1dHRvblwiXG4gICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jb250aW51ZUJ1dHRvbn1cbiAgICAgICAgb25DbGljaz17Y2xvc2VTbGlkZXJ9XG4gICAgICA+XG4gICAgICAgIHt0KFwiZ2VuZXJhbC5maW5pc2hcIil9XG4gICAgICA8L0J1dHRvbj5cbiAgICA8L0JveD5cbiAgKTtcblxuICBjb25zdCByZW5kZXJTdGVwcyA9ICgpID0+IHtcbiAgICBzd2l0Y2ggKHN0ZXApIHtcbiAgICAgIGNhc2UgU1RFUF9PTkU6XG4gICAgICAgIHJldHVybiByZWZ1bmRTdGVwT25lKCk7XG4gICAgICBjYXNlIFNURVBfVFdPOlxuICAgICAgICByZXR1cm4gcmVmdW5kU3RlcFR3bygpO1xuICAgICAgY2FzZSBTVEVQX1RIUkVFOlxuICAgICAgICByZXR1cm4gcmVmdW5kU3RlcFRocmVlKCk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gcmVmdW5kU3RlcE9uZSgpO1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIChcbiAgICA8U3R5bGVkRW5naW5lUHJvdmlkZXIgaW5qZWN0Rmlyc3Q+XG4gICAgICA8UmlnaHREcmF3ZXJcbiAgICAgICAgaWQ9XCJyZWZ1bmQtcmVxdWVzdHNcIlxuICAgICAgICBvcGVuPXtvcGVufVxuICAgICAgICBvbkNsb3NlPXtjbG9zZVNsaWRlcn1cbiAgICAgICAgdGl0bGU9e3QoXCJvcmRlcl9zdW1tYXJ5LnJlcXVlc3RfcmVmdW5kXCIpfVxuICAgICAgICBkYXRhLXRlc3RpZD1cInJlZnVuZC1yZXF1ZXN0LW1vZGFsXCJcbiAgICAgID5cbiAgICAgICAge3JlbmRlclN0ZXBzKCl9XG4gICAgICA8L1JpZ2h0RHJhd2VyPlxuICAgIDwvU3R5bGVkRW5naW5lUHJvdmlkZXI+XG4gICk7XG59O1xuXG5SZWZ1bmRSZXF1ZXN0c01vZGFsLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0czogUHJvcFR5cGVzLmFycmF5T2YoT2JqZWN0KSxcbiAgb3BlbjogUHJvcFR5cGVzLmJvb2wsXG4gIG9uUmVmdW5kU3VjY2Vzc0Nsb3NlOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25DbG9zZVNsaWRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlZnVuZFJlcXVlc3RzTW9kYWw7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBCb3gsIERyYXdlciwgSWNvbkJ1dHRvbiwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBDbG9zZSBhcyBDbG9zZUljb24gfSBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBSaWdodERyYXdlciA9ICh7XG4gIGlkLFxuICB0aXRsZSxcbiAgaGVhZGVyQ2hpbGRyZW4gPSBudWxsLFxuICBjaGlsZHJlbixcbiAgb3BlbixcbiAgb25DbG9zZSxcbiAgY2xhc3NOYW1lXG59KSA9PiAoXG4gIDxEcmF3ZXJcbiAgICBpZD17aWR9XG4gICAgb3Blbj17b3Blbn1cbiAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgIGFuY2hvcj1cInJpZ2h0XCJcbiAgICBNb2RhbFByb3BzPXt7IGtlZXBNb3VudGVkOiBmYWxzZSB9fVxuICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLndyYXBwZXJ9ICR7Y2xhc3NOYW1lfWB9XG4gID5cbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmhlYWRlcn0+XG4gICAgICA8SWNvbkJ1dHRvblxuICAgICAgICBkYXRhLXRlc3RpZD1cImNsb3NlLWRyYXdlclwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNsb3NlQnRufVxuICAgICAgICBvbkNsaWNrPXtvbkNsb3NlfVxuICAgICAgICBzeD17eyBmbG9hdDogXCJyaWdodFwiIH19XG4gICAgICAgIGZvbnRTaXplPVwibGFyZ2VcIlxuICAgICAgPlxuICAgICAgICA8Q2xvc2VJY29uIC8+XG4gICAgICA8L0ljb25CdXR0b24+XG4gICAgICB7dGl0bGUgJiYgKFxuICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiaDZcIiBndXR0ZXJCb3R0b20gY2xhc3NOYW1lPXtzdHlsZXMudGl0bGV9PlxuICAgICAgICAgIHt0aXRsZX1cbiAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgKX1cbiAgICAgIHtoZWFkZXJDaGlsZHJlbn1cbiAgICA8L0JveD5cbiAgICB7Y2hpbGRyZW59XG4gIDwvRHJhd2VyPlxuKTtcblxuUmlnaHREcmF3ZXIucHJvcFR5cGVzID0ge1xuICBpZDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICB0aXRsZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnN0cmluZywgUHJvcFR5cGVzLm5vZGVdKSxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBoZWFkZXJDaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIG9wZW46IFByb3BUeXBlcy5ib29sLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYyxcbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSaWdodERyYXdlcjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHNoYWxsb3dFcXVhbCwgdXNlU2VsZWN0b3IgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgU3VtbWl0SGVhZGVyID0gKCkgPT4ge1xuICBjb25zdCB7IHN1bW1pdCB9ID0gdXNlU2VsZWN0b3IoXG4gICAgKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSxcbiAgICBzaGFsbG93RXF1YWxcbiAgKTtcbiAgcmV0dXJuIChcbiAgICA8Qm94XG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy53aWRnZXRIZWFkZXJ9XG4gICAgICBzeD17eyBwYWRkaW5nOiB7IHhzOiAyLCBtZDogMCwgbGc6IDAgfSB9fVxuICAgICAgZGF0YS10ZXN0aWQ9XCJteS1vcmRlcnMtdGlja2V0LWhlYWRlclwiXG4gICAgPlxuICAgICAgPGgyIGNsYXNzTmFtZT17c3R5bGVzLnN1bW1pdFRpdGxlRGF0ZX0+e3N1bW1pdD8ubmFtZX08L2gyPlxuICAgICAgPGgyIGNsYXNzTmFtZT17c3R5bGVzLnN1bW1pdFRpdGxlRGF0ZX0+e3N1bW1pdD8uZGF0ZXNfbGFiZWx9PC9oMj5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFN1bW1pdEhlYWRlcjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHJlc2V0RmlsdGVyIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCBTdW1taXRIZWFkZXIgZnJvbSBcIi4uL1N1bW1pdEhlYWRlclwiO1xuaW1wb3J0IE5vVGlja2V0c0ZvdW5kIGZyb20gXCIuLi9Ob1RpY2tldHNGb3VuZFwiO1xuaW1wb3J0IHsgVEFCUyB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcblxuY29uc3QgVGFiV3JhcHBlciA9ICh7IHRhYiwgY2hpbGRyZW4sIHNldFRhYiB9KSA9PiB7XG4gIGNvbnN0IHsgbWVtYmVyT3JkZXJzLCB1c2VyVGlja2V0cywgYWN0aXZlRmlsdGVyc0NvdW50IH0gPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9XG4gICk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgdGlja2V0cyA9IHRhYiA9PT0gVEFCUy5USUNLRVRTID8gdXNlclRpY2tldHMgOiBtZW1iZXJPcmRlcnM7XG4gIGNvbnN0IGhhc1RpY2tldHMgPSB0aWNrZXRzLmxlbmd0aCA+IDA7XG4gIGNvbnN0IGlzRmlsdGVyZWQgPSBhY3RpdmVGaWx0ZXJzQ291bnQgPiAwO1xuXG4gIGNvbnN0IGNsZWFyRmlsdGVycyA9ICgpID0+IHtcbiAgICBkaXNwYXRjaChyZXNldEZpbHRlcigpKTtcbiAgfTtcblxuICBjb25zdCBnZXRQYWdlVmlldyA9ICgpID0+IHtcbiAgICBpZiAoaXNGaWx0ZXJlZCkgcmV0dXJuIFwiZmlsdGVyXCI7XG4gICAgcmV0dXJuIHRhYiA9PT0gVEFCUy5USUNLRVRTID8gVEFCUy5USUNLRVRTIDogVEFCUy5PUkRFUlM7XG4gIH07XG5cbiAgY29uc3QgZ2V0T25DbGljayA9ICgpID0+IHtcbiAgICBpZiAoaXNGaWx0ZXJlZCkgcmV0dXJuIGNsZWFyRmlsdGVycztcbiAgICBjb25zdCB0YWJUb0xpbmsgPSB0YWIgPT09IFRBQlMuVElDS0VUUyA/IFRBQlMuT1JERVJTIDogVEFCUy5USUNLRVRTO1xuICAgIHJldHVybiAoKSA9PiBzZXRUYWIodGFiVG9MaW5rKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7IWhhc1RpY2tldHMgJiYgKFxuICAgICAgICA8Tm9UaWNrZXRzRm91bmQgcGFnZVZpZXc9e2dldFBhZ2VWaWV3KCl9IG9uQ2xpY2s9e2dldE9uQ2xpY2soKX0gLz5cbiAgICAgICl9XG4gICAgICB7aGFzVGlja2V0cyAmJiAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPEJveCBzeD17eyBwdDogNiwgcGI6IDMgfX0+XG4gICAgICAgICAgICA8U3VtbWl0SGVhZGVyIC8+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICA8Lz5cbiAgICAgICl9XG4gICAgPC8+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBUYWJXcmFwcGVyO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgQm94LCBCdXR0b24sIENvbGxhcHNlLCBEaXZpZGVyLCBMaW5rIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCBSZWFzc2lnbkZvcm0gZnJvbSBcIi4uL1JlYXNzaWduRm9ybVwiO1xuaW1wb3J0IERlbGVnYXRlRm9ybSBmcm9tIFwiLi4vRGVsZWdhdGVGb3JtXCI7XG5pbXBvcnQgeyB1c2VUaWNrZXREZXRhaWxzIH0gZnJvbSBcIi4uLy4uLy4uLy4uL2hvb2tzL3VzZVRpY2tldERldGFpbHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCBDb25maXJtRGlhbG9nIGZyb20gXCIuLi8uLi8uLi9Db25maXJtRGlhbG9nXCI7XG5cbmNvbnN0IEFzc2lnbk9wdGlvbnMgPSAoe1xuICB0aWNrZXQsXG4gIHVzZXJQcm9maWxlLFxuICBhc3NpZ25PcHRpb24sXG4gIHNldEFzc2lnbk9wdGlvbixcbiAgb25Bc3NpZ24sXG4gIG9uRGVsZWdhdGUsXG4gIG9uVW5Bc3NpZ25cbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbb3BlbkNvbmZpcm1VbmFzc2lnbiwgc2V0T3BlbkNvbmZpcm1VbmFzc2lnbl0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IGlzQXNzaWduZWRUb01lID0gdXNlclByb2ZpbGU/LmVtYWlsID09PSB0aWNrZXQ/Lm93bmVyPy5lbWFpbDtcbiAgY29uc3QgeyBhbGxvd3NEZWxlZ2F0ZSB9ID0gdXNlVGlja2V0RGV0YWlscyh0aWNrZXQpO1xuXG4gIGNvbnN0IGhhbmRsZVVuQXNzaWduID0gKCkgPT4ge1xuICAgIHNldE9wZW5Db25maXJtVW5hc3NpZ24oZmFsc2UpO1xuICAgIG9uVW5Bc3NpZ24oKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMud3JhcHBlcn0+XG4gICAgICA8QnV0dG9uXG4gICAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICBkaXNhYmxlZD17aXNBc3NpZ25lZFRvTWV9XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IG9uQXNzaWduKHVzZXJQcm9maWxlLmVtYWlsLCBcIlwiKX1cbiAgICAgID5cbiAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLmFzc2lnbl90b19tZVwiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgICAgPERpdmlkZXIgdmFyaWFudD1cIm1pZGRsZVwiIHN4PXt7IG15OiAzLCBweDogNCB9fT5cbiAgICAgICAgb3JcbiAgICAgIDwvRGl2aWRlcj5cbiAgICAgIDxCb3g+XG4gICAgICAgIDxDb2xsYXBzZSBpbj17YXNzaWduT3B0aW9uID09PSBcIm90aGVyXCJ9IHRpbWVvdXQ9ezUwMH0+XG4gICAgICAgICAgPFJlYXNzaWduRm9ybVxuICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICBvblN1Ym1pdD17KHZhbCkgPT5cbiAgICAgICAgICAgICAgb25Bc3NpZ24odmFsLm5ld19hdHRlbmRlZV9lbWFpbCwgdmFsLnBlcnNvbmFsX21lc3NhZ2UpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRBc3NpZ25PcHRpb24obnVsbCl9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9Db2xsYXBzZT5cbiAgICAgICAge2Fzc2lnbk9wdGlvbiAhPT0gXCJvdGhlclwiICYmIChcbiAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0QXNzaWduT3B0aW9uKFwib3RoZXJcIil9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLmFzc2lnbl90b19vdGhlclwiKX1cbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgKX1cbiAgICAgIDwvQm94PlxuICAgICAge2FsbG93c0RlbGVnYXRlICYmIChcbiAgICAgICAgPD5cbiAgICAgICAgICA8RGl2aWRlciB2YXJpYW50PVwibWlkZGxlXCIgc3g9e3sgbXk6IDMsIHB4OiA0IH19PlxuICAgICAgICAgICAgb3JcbiAgICAgICAgICA8L0RpdmlkZXI+XG4gICAgICAgICAgPENvbGxhcHNlIGluPXthc3NpZ25PcHRpb24gPT09IFwibWFuYWdlXCJ9IHRpbWVvdXQ9ezUwMH0+XG4gICAgICAgICAgICA8RGVsZWdhdGVGb3JtXG4gICAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgICBvblN1Ym1pdD17KHZhbCkgPT5cbiAgICAgICAgICAgICAgICBvbkRlbGVnYXRlKFxuICAgICAgICAgICAgICAgICAgdmFsLmRlbGVnYXRlX2ZpcnN0X25hbWUsXG4gICAgICAgICAgICAgICAgICB2YWwuZGVsZWdhdGVfbGFzdF9uYW1lLFxuICAgICAgICAgICAgICAgICAgdmFsLmRlbGVnYXRlX2VtYWlsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHNldEFzc2lnbk9wdGlvbihudWxsKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9Db2xsYXBzZT5cbiAgICAgICAgICB7YXNzaWduT3B0aW9uICE9PSBcIm1hbmFnZVwiICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgdmFyaWFudD1cImNvbnRhaW5lZFwiXG4gICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldEFzc2lnbk9wdGlvbihcIm1hbmFnZVwiKX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLm1hbmFnZV90aWNrZXRcIil9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICApfVxuICAgICAgICA8Lz5cbiAgICAgICl9XG4gICAgICB7dGlja2V0Py5vd25lcj8uZW1haWwgJiYgKFxuICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnVuYXNzaWduV3JhcHBlcn0+XG4gICAgICAgICAgey8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc3gtYTExeS9hbmNob3ItaXMtdmFsaWQgKi99XG4gICAgICAgICAgPExpbmtcbiAgICAgICAgICAgIGNvbXBvbmVudD1cImJ1dHRvblwiXG4gICAgICAgICAgICB2YXJpYW50PVwiYm9keTFcIlxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0T3BlbkNvbmZpcm1VbmFzc2lnbih0cnVlKX1cbiAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgIGNvbG9yOiBcInRleHQubGlua1wiLFxuICAgICAgICAgICAgICB0ZXh0RGVjb3JhdGlvbjogXCJ1bmRlcmxpbmVcIixcbiAgICAgICAgICAgICAgdGV4dERlY29yYXRpb25Db2xvcjogXCJ0ZXh0LmxpbmtcIlxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dChcInRpY2tldF9hc3NpZ24ucmV2ZXJ0X3RvX3VuYXNzaWduZWRcIil9XG4gICAgICAgICAgPC9MaW5rPlxuICAgICAgICA8L0JveD5cbiAgICAgICl9XG4gICAgICB7LyogVE9ETzogaWYgd2UgbmVlZCB0byByZXVzZSB0aGlzIHRoZW4gd2Ugc2hvdWxkIG1vdmUgaXQgdG8gY29udGV4dCAqL31cbiAgICAgIDxDb25maXJtRGlhbG9nXG4gICAgICAgIG9wZW49e29wZW5Db25maXJtVW5hc3NpZ259XG4gICAgICAgIHRpdGxlPXt0KFwidGlja2V0X2Fzc2lnbi5jb25maXJtX3VuYXNzaWduLnRpdGxlXCIpfVxuICAgICAgICBib2R5PXt0KFwidGlja2V0X2Fzc2lnbi5jb25maXJtX3VuYXNzaWduLmJvZHlcIil9XG4gICAgICAgIG9uQ29uZmlybT17aGFuZGxlVW5Bc3NpZ259XG4gICAgICAgIG9uQ2xvc2U9eygpID0+IHNldE9wZW5Db25maXJtVW5hc3NpZ24oZmFsc2UpfVxuICAgICAgLz5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbkFzc2lnbk9wdGlvbnMucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgdXNlclByb2ZpbGU6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgYXNzaWduT3B0aW9uOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBzZXRBc3NpZ25PcHRpb246IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uQXNzaWduOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkRlbGVnYXRlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBBc3NpZ25PcHRpb25zO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgVGV4dEZpZWxkLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZUZvcm1payB9IGZyb20gXCJmb3JtaWtcIjtcbmltcG9ydCAqIGFzIHl1cCBmcm9tIFwieXVwXCI7XG5cbmltcG9ydCBGb3JtRm9vdGVyIGZyb20gXCIuLi8uLi8uLi9Gb3JtRm9vdGVyXCI7XG5cbmNvbnN0IERlbGVnYXRlRm9ybSA9ICh7IG9uU3VibWl0LCBvbkNsb3NlIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGNvbnN0IGZvcm1payA9IHVzZUZvcm1payh7XG4gICAgaW5pdGlhbFZhbHVlczoge1xuICAgICAgZGVsZWdhdGVfZmlyc3RfbmFtZTogXCJcIixcbiAgICAgIGRlbGVnYXRlX2xhc3RfbmFtZTogXCJcIixcbiAgICAgIGRlbGVnYXRlX2VtYWlsOiBcIlwiXG4gICAgfSxcbiAgICB2YWxpZGF0aW9uU2NoZW1hOiB5dXAub2JqZWN0KHtcbiAgICAgIGRlbGVnYXRlX2ZpcnN0X25hbWU6IHl1cFxuICAgICAgICAuc3RyaW5nKHQoXCJ2YWxpZGF0aW9uLmZpcnN0X25hbWUuc3RyaW5nXCIpKVxuICAgICAgICAucmVxdWlyZWQodChcInZhbGlkYXRpb24uZmlyc3RfbmFtZS5yZXF1aXJlZFwiKSksXG4gICAgICBkZWxlZ2F0ZV9sYXN0X25hbWU6IHl1cFxuICAgICAgICAuc3RyaW5nKHQoXCJ2YWxpZGF0aW9uLmxhc3RfbmFtZS5zdHJpbmdcIikpXG4gICAgICAgIC5yZXF1aXJlZCh0KFwidmFsaWRhdGlvbi5sYXN0X25hbWUucmVxdWlyZWRcIikpLFxuICAgICAgZGVsZWdhdGVfZW1haWw6IHl1cFxuICAgICAgICAuc3RyaW5nKHQoXCJ2YWxpZGF0aW9uLmVtYWlsLnN0cmluZ1wiKSlcbiAgICAgICAgLmVtYWlsKHQoXCJ2YWxpZGF0aW9uLmVtYWlsLmZvcm1hdFwiKSlcbiAgICB9KSxcbiAgICBvblN1Ym1pdDogKHZhbHVlcywgeyByZXNldEZvcm0gfSkgPT4ge1xuICAgICAgb25TdWJtaXQodmFsdWVzKTtcbiAgICAgIHJlc2V0Rm9ybSgpO1xuICAgIH1cbiAgfSk7XG5cbiAgY29uc3QgaGFuZGxlQ2FuY2VsID0gKCkgPT4ge1xuICAgIGZvcm1pay5yZXNldEZvcm0oKTtcbiAgICBvbkNsb3NlKCk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImg2XCIgZ3V0dGVyQm90dG9tPlxuICAgICAgICB7dChcInRpY2tldF9hc3NpZ24uZGVsZWdhdGVfZm9ybS50aXRsZVwiKX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MVwiIGd1dHRlckJvdHRvbSBzeD17eyBjb2xvcjogXCJ0ZXh0LnNlY29uZGFyeVwiIH19PlxuICAgICAgICB7dChcInRpY2tldF9hc3NpZ24uZGVsZWdhdGVfZm9ybS5ib2R5XCIpfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgPGZvcm0gb25TdWJtaXQ9e2Zvcm1pay5oYW5kbGVTdWJtaXR9IG5vVmFsaWRhdGU+XG4gICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICBuYW1lPVwiZGVsZWdhdGVfZmlyc3RfbmFtZVwiXG4gICAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgICBsYWJlbD17dChcInRpY2tldF9hc3NpZ24uZGVsZWdhdGVfZm9ybS5maXJzdF9uYW1lXCIpfVxuICAgICAgICAgIHZhbHVlPXtmb3JtaWsudmFsdWVzLmRlbGVnYXRlX2ZpcnN0X25hbWV9XG4gICAgICAgICAgb25DaGFuZ2U9e2Zvcm1pay5oYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgb25CbHVyPXtmb3JtaWsuaGFuZGxlQmx1cn1cbiAgICAgICAgICBlcnJvcj17XG4gICAgICAgICAgICBmb3JtaWsudG91Y2hlZC5kZWxlZ2F0ZV9maXJzdF9uYW1lICYmXG4gICAgICAgICAgICBCb29sZWFuKGZvcm1pay5lcnJvcnMuZGVsZWdhdGVfZmlyc3RfbmFtZSlcbiAgICAgICAgICB9XG4gICAgICAgICAgaGVscGVyVGV4dD17XG4gICAgICAgICAgICBmb3JtaWsudG91Y2hlZC5kZWxlZ2F0ZV9maXJzdF9uYW1lICYmXG4gICAgICAgICAgICBmb3JtaWsuZXJyb3JzLmRlbGVnYXRlX2ZpcnN0X25hbWVcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgLz5cbiAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIG5hbWU9XCJkZWxlZ2F0ZV9sYXN0X25hbWVcIlxuICAgICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLmRlbGVnYXRlX2Zvcm0ubGFzdF9uYW1lXCIpfVxuICAgICAgICAgIHZhbHVlPXtmb3JtaWsudmFsdWVzLmRlbGVnYXRlX2xhc3RfbmFtZX1cbiAgICAgICAgICBvbkNoYW5nZT17Zm9ybWlrLmhhbmRsZUNoYW5nZX1cbiAgICAgICAgICBvbkJsdXI9e2Zvcm1pay5oYW5kbGVCbHVyfVxuICAgICAgICAgIGVycm9yPXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlX2xhc3RfbmFtZSAmJlxuICAgICAgICAgICAgQm9vbGVhbihmb3JtaWsuZXJyb3JzLmRlbGVnYXRlX2xhc3RfbmFtZSlcbiAgICAgICAgICB9XG4gICAgICAgICAgaGVscGVyVGV4dD17XG4gICAgICAgICAgICBmb3JtaWsudG91Y2hlZC5kZWxlZ2F0ZV9sYXN0X25hbWUgJiZcbiAgICAgICAgICAgIGZvcm1pay5lcnJvcnMuZGVsZWdhdGVfbGFzdF9uYW1lXG4gICAgICAgICAgfVxuICAgICAgICAvPlxuICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgbmFtZT1cImRlbGVnYXRlX2VtYWlsXCJcbiAgICAgICAgICBsYWJlbD17dChcInRpY2tldF9hc3NpZ24uZGVsZWdhdGVfZm9ybS5lbWFpbFwiKX1cbiAgICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgICAgIHZhbHVlPXtmb3JtaWsudmFsdWVzLmRlbGVnYXRlX2VtYWlsfVxuICAgICAgICAgIG9uQ2hhbmdlPXtmb3JtaWsuaGFuZGxlQ2hhbmdlfVxuICAgICAgICAgIG9uQmx1cj17Zm9ybWlrLmhhbmRsZUJsdXJ9XG4gICAgICAgICAgZXJyb3I9e1xuICAgICAgICAgICAgZm9ybWlrLnRvdWNoZWQuZGVsZWdhdGVfZW1haWwgJiZcbiAgICAgICAgICAgIEJvb2xlYW4oZm9ybWlrLmVycm9ycy5kZWxlZ2F0ZV9lbWFpbClcbiAgICAgICAgICB9XG4gICAgICAgICAgaGVscGVyVGV4dD17XG4gICAgICAgICAgICBmb3JtaWsudG91Y2hlZC5kZWxlZ2F0ZV9lbWFpbCAmJiBmb3JtaWsuZXJyb3JzLmRlbGVnYXRlX2VtYWlsXG4gICAgICAgICAgfVxuICAgICAgICAvPlxuICAgICAgICA8Rm9ybUZvb3RlclxuICAgICAgICAgIHNhdmVMYWJlbD17dChcInRpY2tldF9hc3NpZ24uZGVsZWdhdGVfZm9ybS5zYXZlXCIpfVxuICAgICAgICAgIGNhbmNlbExhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5kZWxlZ2F0ZV9mb3JtLmNhbmNlbFwiKX1cbiAgICAgICAgICBvbkNsb3NlPXtoYW5kbGVDYW5jZWx9XG4gICAgICAgICAgZGlzYWJsZWQ9e2Zvcm1pay5pc1N1Ym1pdHRpbmd9XG4gICAgICAgIC8+XG4gICAgICA8L2Zvcm0+XG4gICAgPC8+XG4gICk7XG59O1xuXG5EZWxlZ2F0ZUZvcm0ucHJvcFR5cGVzID0ge1xuICBvblN1Ym1pdDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgRGVsZWdhdGVGb3JtO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94LCBMaW5rLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBDb3B5VGV4dCBmcm9tIFwiLi4vLi4vLi4vQ29weVRleHRcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgQXNzaWduSGVhZGVyID0gKHsgaW5Qcm9ncmVzcywgdGlja2V0LCB1c2VyRW1haWwsIG9uQ2xvc2UgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGFzc2lnbmVkVG9Zb3UgPSB0aWNrZXQ/Lm93bmVyPy5lbWFpbCA9PT0gdXNlckVtYWlsO1xuXG4gIGNvbnN0IGdldFNlY29uZGFyeVRpdGxlID0gKCkgPT4ge1xuICAgIGlmIChpblByb2dyZXNzID09PSBcIm1hbmFnZVwiKSB7XG4gICAgICByZXR1cm4gYCR7dChcInRpY2tldF9hc3NpZ24uaGVhZGVyX2Fzc2lnbi5kZWxlZ2F0ZWRcIil9ICR7XG4gICAgICAgIHRpY2tldC5vd25lci5maXJzdF9uYW1lXG4gICAgICB9ICR7dGlja2V0Lm93bmVyLmxhc3RfbmFtZX0uYDtcbiAgICB9XG5cbiAgICBpZiAoaW5Qcm9ncmVzcykge1xuICAgICAgY29uc3QgdXNlciA9IGFzc2lnbmVkVG9Zb3UgPyBcInlvdVwiIDogdGlja2V0Py5vd25lcj8uZW1haWw7XG4gICAgICByZXR1cm4gYCR7dChcInRpY2tldF9hc3NpZ24uaGVhZGVyX2Fzc2lnbi5hc3NpZ25lZF90b1wiKX0gJHt1c2VyfWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRpY2tldC50aWNrZXRfdHlwZS5uYW1lO1xuICB9O1xuXG4gIGNvbnN0IGdldEhlYWRlck5vdGUgPSAoKSA9PiB7XG4gICAgaWYgKGluUHJvZ3Jlc3MpIHtcbiAgICAgIGNvbnN0IHRyYW5zS2V5ID0gYXNzaWduZWRUb1lvdVxuICAgICAgICA/IFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfYXNzaWduLmFuc3dlcl95b3VyX2VxXCJcbiAgICAgICAgOiBcInRpY2tldF9hc3NpZ24uaGVhZGVyX2Fzc2lnbi5hbnN3ZXJfb3RoZXJzX2VxXCI7XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDw+XG4gICAgICAgICAge3QodHJhbnNLZXkpfVxuICAgICAgICAgIDxiciAvPlxuICAgICAgICAgIHsvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganN4LWExMXkvYW5jaG9yLWlzLXZhbGlkICovfVxuICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICBjb21wb25lbnQ9XCJidXR0b25cIlxuICAgICAgICAgICAgdmFyaWFudD1cImJvZHkxXCJcbiAgICAgICAgICAgIG9uQ2xpY2s9e29uQ2xvc2V9XG4gICAgICAgICAgICBzeD17eyBmb250V2VpZ2h0OiA3MDAsIG1hcmdpbjogXCIyMHB4IDAgMTBweFwiIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9hc3NpZ24uY29tcGxldGVfbGF0ZXJcIil9XG4gICAgICAgICAgPC9MaW5rPlxuICAgICAgICA8Lz5cbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFwiXCI7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLndyYXBwZXJ9PlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5wdXJjaGFzZWRCeVdyYXBwZXJ9PlxuICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTFcIiBndXR0ZXJCb3R0b20gY2xhc3NOYW1lPXtzdHlsZXMucHVyY2hhc2VkQnl9PlxuICAgICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfYXNzaWduLnB1cmNoYXNlZF9ieVwiKX17XCIgXCJ9XG4gICAgICAgICAge3RpY2tldD8ub3JkZXI/Lm93bmVyX2VtYWlsfVxuICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MVwiIGd1dHRlckJvdHRvbSBjbGFzc05hbWU9e3N0eWxlcy5vcmRlck5vfT5cbiAgICAgICAgICA8Q29weVRleHRcbiAgICAgICAgICAgIHRleHQ9e3RpY2tldD8ub3JkZXI/Lm51bWJlcn1cbiAgICAgICAgICAgIHJldmVyc2VkXG4gICAgICAgICAgICB3aWR0aD17MjUwfVxuICAgICAgICAgICAgdG9vbHRpcFRleHQ9e3QoXCJvcmRlcl9zdW1tYXJ5LmNvcHlfb3JkZXJfbnVtYmVyXCIpfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgIDwvQm94PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImg1XCIgZ3V0dGVyQm90dG9tPlxuICAgICAgICB7Z2V0U2Vjb25kYXJ5VGl0bGUoKX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgIDxUeXBvZ3JhcGh5XG4gICAgICAgIHZhcmlhbnQ9XCJib2R5MVwiXG4gICAgICAgIGd1dHRlckJvdHRvbVxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5oZWFkZXJOb3RlfVxuICAgICAgICBzeD17eyBjb2xvcjogXCJ0ZXh0LnNlY29uZGFyeVwiIH19XG4gICAgICA+XG4gICAgICAgIHtnZXRIZWFkZXJOb3RlKCl9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG4vLyBBZGRpbmcgcHJvcC10eXBlcyBmb3IgdHlwZS1jaGVja2luZ1xuQXNzaWduSGVhZGVyLnByb3BUeXBlcyA9IHtcbiAgaW5Qcm9ncmVzczogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICB0aWNrZXQ6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgdXNlckVtYWlsOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEFzc2lnbkhlYWRlcjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCwgTGluaywgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUaWNrZXREZXRhaWxzIH0gZnJvbSBcIi4uLy4uLy4uLy4uL2hvb2tzL3VzZVRpY2tldERldGFpbHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgUmVhc3NpZ25IZWFkZXIgPSAoeyBpblByb2dyZXNzLCB0aWNrZXQsIHVzZXJFbWFpbCwgb25DbG9zZSB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgYXNzaWduZWRUb1lvdSA9IHRpY2tldD8ub3duZXI/LmVtYWlsID09PSB1c2VyRW1haWw7XG4gIGNvbnN0IHsgYWxsb3dzRGVsZWdhdGUgfSA9IHVzZVRpY2tldERldGFpbHModGlja2V0KTtcblxuICBjb25zdCBnZXRTZWNvbmRhcnlUaXRsZSA9ICgpID0+IHtcbiAgICBjb25zdCB1c2VyID0gYXNzaWduZWRUb1lvdVxuICAgICAgPyB0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24ueW91cnNlbGZcIilcbiAgICAgIDogdGlja2V0Py5vd25lcj8uZW1haWw7XG5cbiAgICBpZiAoaW5Qcm9ncmVzcyA9PT0gXCJtYW5hZ2VcIikge1xuICAgICAgcmV0dXJuIGAke3QoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9yZWFzc2lnbi5kZWxlZ2F0ZWRcIil9ICR7XG4gICAgICAgIHRpY2tldC5vd25lci5maXJzdF9uYW1lXG4gICAgICB9ICR7dGlja2V0Lm93bmVyLmxhc3RfbmFtZX0uYDtcbiAgICB9XG5cbiAgICBpZiAoIWluUHJvZ3Jlc3MpIHtcbiAgICAgIHJldHVybiBgJHt0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24uYXNzaWduZWRfdG9cIil9ICR7dXNlcn1gO1xuICAgIH1cblxuICAgIHJldHVybiBgJHt0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24ucmVhc3NpZ25lZF90b1wiKX0gJHt1c2VyfWA7XG4gIH07XG5cbiAgY29uc3QgZ2V0SGVhZGVyTm90ZSA9ICgpID0+IHtcbiAgICBpZiAoIWluUHJvZ3Jlc3MpIHtcbiAgICAgIHJldHVybiBhbGxvd3NEZWxlZ2F0ZVxuICAgICAgICA/IHQoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9yZWFzc2lnbi5jaG9vc2Vfb3B0aW9uXCIpXG4gICAgICAgIDogdChcInRpY2tldF9hc3NpZ24uaGVhZGVyX3JlYXNzaWduLmNob29zZV9vcHRpb25fbm9fZGVsZWdhdGVcIik7XG4gICAgfVxuXG4gICAgY29uc3QgdHJhbnNLZXkgPSBhc3NpZ25lZFRvWW91XG4gICAgICA/IFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24uYW5zd2VyX3lvdXJfZXFcIlxuICAgICAgOiBcInRpY2tldF9hc3NpZ24uaGVhZGVyX3JlYXNzaWduLmFuc3dlcl9vdGhlcnNfZXFcIjtcblxuICAgIHJldHVybiAoXG4gICAgICA8PlxuICAgICAgICB7dCh0cmFuc0tleSl9XG4gICAgICAgIDxiciAvPlxuICAgICAgICB7LyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzeC1hMTF5L2FuY2hvci1pcy12YWxpZCAqL31cbiAgICAgICAgPExpbmtcbiAgICAgICAgICBjb21wb25lbnQ9XCJidXR0b25cIlxuICAgICAgICAgIHZhcmlhbnQ9XCJib2R5MVwiXG4gICAgICAgICAgb25DbGljaz17b25DbG9zZX1cbiAgICAgICAgICBzeD17eyBmb250V2VpZ2h0OiA3MDAsIG1hcmdpbjogXCIyMHB4IDAgMTBweFwiIH19XG4gICAgICAgID5cbiAgICAgICAgICB7dChcInRpY2tldF9hc3NpZ24uaGVhZGVyX3JlYXNzaWduLmNvbXBsZXRlX2xhdGVyXCIpfVxuICAgICAgICA8L0xpbms+XG4gICAgICA8Lz5cbiAgICApO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy53cmFwcGVyfT5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJoNVwiIGd1dHRlckJvdHRvbT5cbiAgICAgICAge2dldFNlY29uZGFyeVRpdGxlKCl9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICA8VHlwb2dyYXBoeVxuICAgICAgICB2YXJpYW50PVwiYm9keTFcIlxuICAgICAgICBndXR0ZXJCb3R0b21cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuaGVhZGVyTm90ZX1cbiAgICAgICAgc3g9e3sgY29sb3I6IFwidGV4dC5zZWNvbmRhcnlcIiB9fVxuICAgICAgPlxuICAgICAgICB7Z2V0SGVhZGVyTm90ZSgpfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgIDwvQm94PlxuICApO1xufTtcblxuLy8gQWRkaW5nIHByb3AtdHlwZXMgZm9yIHR5cGUtY2hlY2tpbmdcblJlYXNzaWduSGVhZGVyLnByb3BUeXBlcyA9IHtcbiAgaW5Qcm9ncmVzczogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICB0aWNrZXQ6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgdXNlckVtYWlsOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlYXNzaWduSGVhZGVyO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgVGV4dEZpZWxkLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZUZvcm1payB9IGZyb20gXCJmb3JtaWtcIjtcbmltcG9ydCAqIGFzIHl1cCBmcm9tIFwieXVwXCI7XG5cbmltcG9ydCBGb3JtRm9vdGVyIGZyb20gXCIuLi8uLi8uLi9Gb3JtRm9vdGVyXCI7XG5cbmNvbnN0IFJlYXNzaWduRm9ybSA9ICh7IG9uU3VibWl0LCBvbkNsb3NlIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGNvbnN0IGZvcm1payA9IHVzZUZvcm1payh7XG4gICAgaW5pdGlhbFZhbHVlczoge1xuICAgICAgbmV3X2F0dGVuZGVlX2VtYWlsOiBcIlwiLFxuICAgICAgcGVyc29uYWxfbWVzc2FnZTogXCJcIlxuICAgIH0sXG4gICAgdmFsaWRhdGlvblNjaGVtYTogeXVwLm9iamVjdCh7XG4gICAgICBuZXdfYXR0ZW5kZWVfZW1haWw6IHl1cFxuICAgICAgICAuc3RyaW5nKHQoXCJ2YWxpZGF0aW9uLmVtYWlsLnN0cmluZ1wiKSlcbiAgICAgICAgLmVtYWlsKHQoXCJ2YWxpZGF0aW9uLmVtYWlsLmZvcm1hdFwiKSlcbiAgICAgICAgLnJlcXVpcmVkKHQoXCJ2YWxpZGF0aW9uLmVtYWlsLnJlcXVpcmVkXCIpKSxcbiAgICAgIHBlcnNvbmFsX21lc3NhZ2U6IHl1cC5zdHJpbmcodChcInZhbGlkYXRpb24udGV4dC5zdHJpbmdcIikpXG4gICAgfSksXG4gICAgb25TdWJtaXQ6ICh2YWx1ZXMsIHsgcmVzZXRGb3JtIH0pID0+IHtcbiAgICAgIG9uU3VibWl0KHZhbHVlcyk7XG4gICAgICByZXNldEZvcm0oKTtcbiAgICB9XG4gIH0pO1xuXG4gIGNvbnN0IGhhbmRsZUNhbmNlbCA9ICgpID0+IHtcbiAgICBmb3JtaWsucmVzZXRGb3JtKCk7XG4gICAgb25DbG9zZSgpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJoNlwiIGd1dHRlckJvdHRvbT5cbiAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLnJlYXNzaWduX2Zvcm0udGl0bGVcIil9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTFcIiBndXR0ZXJCb3R0b20gc3g9e3sgY29sb3I6IFwidGV4dC5zZWNvbmRhcnlcIiB9fT5cbiAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLnJlYXNzaWduX2Zvcm0uYm9keVwiKX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgIDxmb3JtIG9uU3VibWl0PXtmb3JtaWsuaGFuZGxlU3VibWl0fSBub1ZhbGlkYXRlPlxuICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgbmFtZT1cIm5ld19hdHRlbmRlZV9lbWFpbFwiXG4gICAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLnJlYXNzaWduX2Zvcm0ubmV3X2F0dGVuZGVlX2VtYWlsXCIpfVxuICAgICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgICAgdmFsdWU9e2Zvcm1pay52YWx1ZXMubmV3X2F0dGVuZGVlX2VtYWlsfVxuICAgICAgICAgIG9uQ2hhbmdlPXtmb3JtaWsuaGFuZGxlQ2hhbmdlfVxuICAgICAgICAgIG9uQmx1cj17Zm9ybWlrLmhhbmRsZUJsdXJ9XG4gICAgICAgICAgZXJyb3I9e1xuICAgICAgICAgICAgZm9ybWlrLnRvdWNoZWQubmV3X2F0dGVuZGVlX2VtYWlsICYmXG4gICAgICAgICAgICBCb29sZWFuKGZvcm1pay5lcnJvcnMubmV3X2F0dGVuZGVlX2VtYWlsKVxuICAgICAgICAgIH1cbiAgICAgICAgICBoZWxwZXJUZXh0PXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLm5ld19hdHRlbmRlZV9lbWFpbCAmJlxuICAgICAgICAgICAgZm9ybWlrLmVycm9ycy5uZXdfYXR0ZW5kZWVfZW1haWxcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgLz5cbiAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIG5hbWU9XCJwZXJzb25hbF9tZXNzYWdlXCJcbiAgICAgICAgICBsYWJlbD17dChcInRpY2tldF9hc3NpZ24ucmVhc3NpZ25fZm9ybS5wZXJzb25hbF9tZXNzYWdlXCIpfVxuICAgICAgICAgIHZhbHVlPXtmb3JtaWsudmFsdWVzLnBlcnNvbmFsX21lc3NhZ2V9XG4gICAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgICBtdWx0aWxpbmVcbiAgICAgICAgICBtaW5Sb3dzPXs0fVxuICAgICAgICAgIG9uQ2hhbmdlPXtmb3JtaWsuaGFuZGxlQ2hhbmdlfVxuICAgICAgICAgIG9uQmx1cj17Zm9ybWlrLmhhbmRsZUJsdXJ9XG4gICAgICAgICAgZXJyb3I9e1xuICAgICAgICAgICAgZm9ybWlrLnRvdWNoZWQucGVyc29uYWxfbWVzc2FnZSAmJlxuICAgICAgICAgICAgQm9vbGVhbihmb3JtaWsuZXJyb3JzLnBlcnNvbmFsX21lc3NhZ2UpXG4gICAgICAgICAgfVxuICAgICAgICAgIGhlbHBlclRleHQ9e1xuICAgICAgICAgICAgZm9ybWlrLnRvdWNoZWQucGVyc29uYWxfbWVzc2FnZSAmJiBmb3JtaWsuZXJyb3JzLnBlcnNvbmFsX21lc3NhZ2VcbiAgICAgICAgICB9XG4gICAgICAgIC8+XG4gICAgICAgIDxGb3JtRm9vdGVyXG4gICAgICAgICAgc2F2ZUxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5yZWFzc2lnbl9mb3JtLnNhdmVcIil9XG4gICAgICAgICAgY2FuY2VsTGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLnJlYXNzaWduX2Zvcm0uY2FuY2VsXCIpfVxuICAgICAgICAgIG9uQ2xvc2U9e2hhbmRsZUNhbmNlbH1cbiAgICAgICAgICBkaXNhYmxlZD17Zm9ybWlrLmlzU3VibWl0dGluZ31cbiAgICAgICAgLz5cbiAgICAgIDwvZm9ybT5cbiAgICA8Lz5cbiAgKTtcbn07XG5cblJlYXNzaWduRm9ybS5wcm9wVHlwZXMgPSB7XG4gIG9uU3VibWl0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWFzc2lnbkZvcm07XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlQ29udGV4dCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7XG4gIGFzc2lnbkF0dGVuZGVlLFxuICBkZWxlZ2F0ZVRpY2tldCxcbiAgcmVhc3NpZ25UaWNrZXQsXG4gIHNhdmVFeHRyYVF1ZXN0aW9ucyxcbiAgdW5hc3NpZ25UaWNrZXRcbn0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCBSaWdodERyYXdlciBmcm9tIFwiLi4vUmlnaHREcmF3ZXJcIjtcbmltcG9ydCBUaWNrZXRGb3JtIGZyb20gXCIuLi9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9UaWNrZXRGb3JtXCI7XG5pbXBvcnQgQ3VzdG9tTm90aWZpY2F0aW9uQ29udGV4dCBmcm9tIFwiLi4vQ3VzdG9tTm90aWZpY2F0aW9uL0NvbnRleHRcIjtcbmltcG9ydCB7IHRyYW5zZm9ybUFud2Vyc0Zvcm1hdCB9IGZyb20gXCIuLi9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL3V0aWxzXCI7XG5pbXBvcnQgdXNlR2V0VGlja2V0IGZyb20gXCIuLi8uLi9ob29rcy91c2VHZXRUaWNrZXRcIjtcbmltcG9ydCBBc3NpZ25IZWFkZXIgZnJvbSBcIi4vY29tcG9uZW50cy9IZWFkZXIvQXNzaWduSGVhZGVyXCI7XG5pbXBvcnQgUmVhc3NpZ25IZWFkZXIgZnJvbSBcIi4vY29tcG9uZW50cy9IZWFkZXIvUmVhc3NpZ25IZWFkZXJcIjtcbmltcG9ydCBBc3NpZ25PcHRpb25zIGZyb20gXCIuL2NvbXBvbmVudHMvQXNzaWduT3B0aW9uc1wiO1xuaW1wb3J0IHsgVElDS0VUX0RSQVdFUl9JRCB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgVGlja2V0QXNzaWduID0gKHsgdGlja2V0SWQsIG9yZGVySWQsIG93bmVySWQsIG9wZW4sIG9uQ2xvc2UgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgeyBzdWNjZXNzTWVzc2FnZSwgZXJyb3JNZXNzYWdlIH0gPSB1c2VDb250ZXh0KFxuICAgIEN1c3RvbU5vdGlmaWNhdGlvbkNvbnRleHRcbiAgKTtcbiAgY29uc3QgW2Fzc2lnbk9wdGlvbiwgc2V0QXNzaWduT3B0aW9uXSA9IHVzZVN0YXRlKG51bGwpO1xuICBjb25zdCBbYXNzaWduYXRpb25JblByb2dyZXNzLCBzZXRBc3NpZ25hdGlvbkluUHJvZ3Jlc3NdID0gdXNlU3RhdGUoXCJcIik7XG4gIGNvbnN0IHtcbiAgICBzdW1taXQsXG4gICAgdXNlcjogeyB1c2VyUHJvZmlsZSB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlKTtcbiAgY29uc3QgeyB0aWNrZXQsIGV4dHJhUXVlc3Rpb25zIH0gPSB1c2VHZXRUaWNrZXQoXG4gICAgdGlja2V0SWQsXG4gICAgb3JkZXJJZCxcbiAgICBvd25lcklkLFxuICAgIG9wZW5cbiAgKTtcbiAgY29uc3QgaXNVc2VyT3JkZXJPd25lciA9IHRpY2tldD8ub3JkZXI/Lm93bmVyX2lkID09PSB1c2VyUHJvZmlsZT8uaWQ7XG4gIGNvbnN0IGlzVXNlclRpY2tldE93bmVyID0gdGlja2V0Py5vd25lcj8uZW1haWwgPT09IHVzZXJQcm9maWxlPy5lbWFpbDtcbiAgY29uc3QgY2FuRWRpdFRpY2tldERhdGEgPVxuICAgIChpc1VzZXJUaWNrZXRPd25lciB8fCBpc1VzZXJPcmRlck93bmVyKSAmJlxuICAgIHN1bW1pdC5hbGxvd191cGRhdGVfYXR0ZW5kZWVfZXh0cmFfcXVlc3Rpb25zO1xuXG4gIGNvbnN0IG9uQ2xvc2VFUUZvcm0gPSAoKSA9PiB7XG4gICAgc2V0QXNzaWduYXRpb25JblByb2dyZXNzKFwiXCIpO1xuICAgIG9uQ2xvc2UoKTtcbiAgfTtcblxuICBjb25zdCBvbkFzc2lnbiA9IChlbWFpbCwgbWVzc2FnZSA9IFwiXCIpID0+IHtcbiAgICBpZiAob3duZXJJZCkge1xuICAgICAgZGlzcGF0Y2gocmVhc3NpZ25UaWNrZXQob3JkZXJJZCwgdGlja2V0SWQsIGVtYWlsLCBtZXNzYWdlKSkudGhlbigoKSA9PiB7XG4gICAgICAgIHNldEFzc2lnbmF0aW9uSW5Qcm9ncmVzcyhgJHthc3NpZ25PcHRpb259YCk7XG4gICAgICAgIHNldEFzc2lnbk9wdGlvbihudWxsKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBkaXNwYXRjaChhc3NpZ25BdHRlbmRlZShvcmRlcklkLCB0aWNrZXRJZCwgZW1haWwpKS50aGVuKCgpID0+IHtcbiAgICAgICAgc2V0QXNzaWduYXRpb25JblByb2dyZXNzKGAke2Fzc2lnbk9wdGlvbn1gKTtcbiAgICAgICAgc2V0QXNzaWduT3B0aW9uKG51bGwpO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IG9uVW5Bc3NpZ24gPSAoKSA9PiB7XG4gICAgZGlzcGF0Y2godW5hc3NpZ25UaWNrZXQob3JkZXJJZCwgdGlja2V0SWQpKS50aGVuKCgpID0+IHtcbiAgICAgIG9uQ2xvc2VFUUZvcm0oKTtcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBvbkRlbGVnYXRlID0gKGZpcnN0TmFtZSwgbGFzdE5hbWUsIGVtYWlsKSA9PiB7XG4gICAgZGlzcGF0Y2goXG4gICAgICBkZWxlZ2F0ZVRpY2tldChvcmRlcklkLCB0aWNrZXRJZCwgZmlyc3ROYW1lLCBsYXN0TmFtZSwgZW1haWwpXG4gICAgKS50aGVuKCgpID0+IHtcbiAgICAgIHNldEFzc2lnbmF0aW9uSW5Qcm9ncmVzcyhgJHthc3NpZ25PcHRpb259YCk7XG4gICAgICBzZXRBc3NpZ25PcHRpb24obnVsbCk7XG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3Qgb25TYXZlRVEgPSAodmFsKSA9PiB7XG4gICAgY29uc3QgYW5zd2VycyA9IHRyYW5zZm9ybUFud2Vyc0Zvcm1hdCh2YWwpO1xuXG4gICAgcmV0dXJuIGRpc3BhdGNoKHNhdmVFeHRyYVF1ZXN0aW9ucyh0aWNrZXQsIGFuc3dlcnMpKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICBvbkNsb3NlRVFGb3JtKCk7XG4gICAgICAgIHN1Y2Nlc3NNZXNzYWdlKHQoXCJ0aWNrZXRfYXNzaWduLnNhdmluZ19zdWNjZXNzXCIpKTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoKSA9PiB7XG4gICAgICAgIGVycm9yTWVzc2FnZSh0KFwidGlja2V0X2Fzc2lnbi5zYXZpbmdfZXJyb3JcIikpO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcbiAgICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IHRpdGxlID0gb3duZXJJZFxuICAgID8gdChcInRpY2tldF9hc3NpZ24uaGVhZGVyX3JlYXNzaWduLnRpdGxlXCIpXG4gICAgOiB0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfYXNzaWduLnRpdGxlXCIpO1xuICBjb25zdCBIZWFkZXIgPSBvd25lcklkID8gUmVhc3NpZ25IZWFkZXIgOiBBc3NpZ25IZWFkZXI7XG5cbiAgcmV0dXJuIChcbiAgICA8UmlnaHREcmF3ZXJcbiAgICAgIGlkPXtUSUNLRVRfRFJBV0VSX0lEfVxuICAgICAgdGl0bGU9e3RpdGxlfVxuICAgICAgb3Blbj17b3Blbn1cbiAgICAgIG9uQ2xvc2U9e29uQ2xvc2VFUUZvcm19XG4gICAgPlxuICAgICAge3RpY2tldCAmJiBleHRyYVF1ZXN0aW9ucyAmJiAoXG4gICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0UmVhc3NpZ25Db250YWluZXJ9PlxuICAgICAgICAgIDxIZWFkZXJcbiAgICAgICAgICAgIGluUHJvZ3Jlc3M9e2Fzc2lnbmF0aW9uSW5Qcm9ncmVzc31cbiAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgdXNlckVtYWlsPXt1c2VyUHJvZmlsZS5lbWFpbH1cbiAgICAgICAgICAgIG9uQ2xvc2U9e29uQ2xvc2VFUUZvcm19XG4gICAgICAgICAgLz5cblxuICAgICAgICAgIHthc3NpZ25hdGlvbkluUHJvZ3Jlc3MgPyAoXG4gICAgICAgICAgICA8VGlja2V0Rm9ybVxuICAgICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICAgIGV4dHJhUXVlc3Rpb25zPXtleHRyYVF1ZXN0aW9uc31cbiAgICAgICAgICAgICAgY2FuRWRpdD17Y2FuRWRpdFRpY2tldERhdGF9XG4gICAgICAgICAgICAgIG9uU3VibWl0PXtvblNhdmVFUX1cbiAgICAgICAgICAgICAgb25DbG9zZT17b25DbG9zZUVRRm9ybX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDxBc3NpZ25PcHRpb25zXG4gICAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgICB1c2VyUHJvZmlsZT17dXNlclByb2ZpbGV9XG4gICAgICAgICAgICAgIGFzc2lnbk9wdGlvbj17YXNzaWduT3B0aW9ufVxuICAgICAgICAgICAgICBzZXRBc3NpZ25PcHRpb249e3NldEFzc2lnbk9wdGlvbn1cbiAgICAgICAgICAgICAgb25Bc3NpZ249e29uQXNzaWdufVxuICAgICAgICAgICAgICBvblVuQXNzaWduPXtvblVuQXNzaWdufVxuICAgICAgICAgICAgICBvbkRlbGVnYXRlPXtvbkRlbGVnYXRlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgICA8L0JveD5cbiAgICAgICl9XG4gICAgPC9SaWdodERyYXdlcj5cbiAgKTtcbn07XG5cblRpY2tldEFzc2lnbi5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldElkOiBQcm9wVHlwZXMubnVtYmVyLFxuICBvcmRlcklkOiBQcm9wVHlwZXMubnVtYmVyLFxuICBvd25lcklkOiBQcm9wVHlwZXMubnVtYmVyLFxuICBvcGVuOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldEFzc2lnbjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IFRleHRGaWVsZCwgQXV0b2NvbXBsZXRlLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHF1ZXJ5UmVnaXN0cmF0aW9uQ29tcGFuaWVzIH0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvcXVlcnktYWN0aW9uc1wiO1xuaW1wb3J0IHsgVElDS0VUX0FUVEVOREVFX0tFWVMgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzXCI7XG5cbmNvbnN0IENvbXBhbnlGaWVsZCA9ICh7IGZvcm1paywgc3VtbWl0SWQsIGlzUmVxdWlyZWQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtpbnB1dFZhbHVlLCBzZXRJbnB1dFZhbHVlXSA9IFJlYWN0LnVzZVN0YXRlKFwiXCIpO1xuICBjb25zdCBbb3B0aW9ucywgc2V0T3B0aW9uc10gPSBSZWFjdC51c2VTdGF0ZShbXSk7XG4gIGNvbnN0IHtcbiAgICBlcnJvcnMsXG4gICAgdmFsdWVzLFxuICAgIHRvdWNoZWQsXG4gICAgc2V0RmllbGRUb3VjaGVkLFxuICAgIHNldEZpZWxkVmFsdWUsXG4gICAgaW5pdGlhbFZhbHVlc1xuICB9ID0gZm9ybWlrO1xuICBjb25zdCBuYW1lID0gVElDS0VUX0FUVEVOREVFX0tFWVMuY29tcGFueTtcbiAgY29uc3QgdmFsdWUgPSB2YWx1ZXNbbmFtZV07XG4gIGNvbnN0IGRpc2FibGVkID0gISFpbml0aWFsVmFsdWVzW25hbWVdO1xuICBjb25zdCBlcnJvciA9IHRvdWNoZWRbbmFtZV0gJiYgQm9vbGVhbihlcnJvcnNbbmFtZV0pO1xuICBjb25zdCBoZWxwZXJUZXh0ID0gdG91Y2hlZFtuYW1lXSAmJiBlcnJvcnNbbmFtZV07XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaW5wdXRWYWx1ZSA9PT0gXCJcIikge1xuICAgICAgc2V0T3B0aW9ucyh2YWx1ZSA/IFt2YWx1ZV0gOiBbXSk7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHF1ZXJ5UmVnaXN0cmF0aW9uQ29tcGFuaWVzKHN1bW1pdElkLCBpbnB1dFZhbHVlLCAocmVzdWx0cykgPT4ge1xuICAgICAgbGV0IG5ld09wdGlvbnMgPSBbXTtcblxuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIG5ld09wdGlvbnMgPSBbdmFsdWVdO1xuICAgICAgfVxuXG4gICAgICBpZiAocmVzdWx0cykge1xuICAgICAgICBuZXdPcHRpb25zID0gWy4uLm5ld09wdGlvbnMsIC4uLnJlc3VsdHNdO1xuICAgICAgfVxuXG4gICAgICBzZXRPcHRpb25zKG5ld09wdGlvbnMpO1xuICAgIH0pO1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH0sIFt2YWx1ZSwgaW5wdXRWYWx1ZV0pO1xuXG4gIHJldHVybiAoXG4gICAgPEF1dG9jb21wbGV0ZVxuICAgICAgbmFtZT17bmFtZX1cbiAgICAgIG9wdGlvbnM9e29wdGlvbnN9XG4gICAgICBhdXRvQ29tcGxldGVcbiAgICAgIGZyZWVTb2xvXG4gICAgICBpbmNsdWRlSW5wdXRJbkxpc3RcbiAgICAgIGZpbHRlclNlbGVjdGVkT3B0aW9uc1xuICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgb25CbHVyPXsoKSA9PiBzZXRGaWVsZFRvdWNoZWQobmFtZSwgdHJ1ZSwgdHJ1ZSl9XG4gICAgICBnZXRPcHRpb25MYWJlbD17KG9wdGlvbikgPT4ge1xuICAgICAgICAvLyBWYWx1ZSBzZWxlY3RlZCB3aXRoIGVudGVyLCByaWdodCBmcm9tIHRoZSBpbnB1dFxuICAgICAgICBpZiAodHlwZW9mIG9wdGlvbiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgIHJldHVybiBvcHRpb247XG4gICAgICAgIH1cbiAgICAgICAgLy8gQWRkIFwieHh4XCIgb3B0aW9uIGNyZWF0ZWQgZHluYW1pY2FsbHlcbiAgICAgICAgaWYgKG9wdGlvbi5pbnB1dFZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuIG9wdGlvbi5pbnB1dFZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIC8vIFJlZ3VsYXIgb3B0aW9uXG4gICAgICAgIHJldHVybiBvcHRpb24ubmFtZTtcbiAgICAgIH19XG4gICAgICBvbkNoYW5nZT17KGV2ZW50LCBuZXdWYWx1ZSkgPT4ge1xuICAgICAgICBjb25zdCB0bXBWYWx1ZSA9IG5ld1ZhbHVlPy5pbnB1dFZhbHVlIHx8IG5ld1ZhbHVlO1xuXG4gICAgICAgIHNldE9wdGlvbnModG1wVmFsdWUgPyBbdG1wVmFsdWUsIC4uLm9wdGlvbnNdIDogb3B0aW9ucyk7XG4gICAgICAgIHNldEZpZWxkVmFsdWUobmFtZSwgdG1wVmFsdWUpO1xuICAgICAgfX1cbiAgICAgIG9uSW5wdXRDaGFuZ2U9eyhldmVudCwgbmV3SW5wdXRWYWx1ZSkgPT4ge1xuICAgICAgICBzZXRJbnB1dFZhbHVlKG5ld0lucHV0VmFsdWUpO1xuICAgICAgfX1cbiAgICAgIGZpbHRlck9wdGlvbnM9eyhvcHRpb25zLCBwYXJhbXMpID0+IHtcbiAgICAgICAgY29uc3QgeyBpbnB1dFZhbHVlIH0gPSBwYXJhbXM7XG4gICAgICAgIGNvbnN0IGZpbHRlcmVkID0gWy4uLm9wdGlvbnNdO1xuICAgICAgICAvLyBTdWdnZXN0IHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2YWx1ZVxuICAgICAgICBjb25zdCBpc0V4aXN0aW5nID0gb3B0aW9ucy5zb21lKChvcHRpb24pID0+IGlucHV0VmFsdWUgPT09IG9wdGlvbi5uYW1lKTtcbiAgICAgICAgaWYgKGlucHV0VmFsdWUgIT09IFwiXCIgJiYgIWlzRXhpc3RpbmcpIHtcbiAgICAgICAgICBmaWx0ZXJlZC5wdXNoKHtcbiAgICAgICAgICAgIGlucHV0VmFsdWUsXG4gICAgICAgICAgICBuYW1lOiBgU2VsZWN0IFwiJHtpbnB1dFZhbHVlfVwiYFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZpbHRlcmVkO1xuICAgICAgfX1cbiAgICAgIHJlbmRlcklucHV0PXsocGFyYW1zKSA9PiAoXG4gICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgIHsuLi5wYXJhbXN9XG4gICAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfZGV0YWlsLmF0dGVuZGVlX2NvbXBhbnlcIil9XG4gICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgICAgaGVscGVyVGV4dD17aGVscGVyVGV4dH1cbiAgICAgICAgICBlcnJvcj17ZXJyb3J9XG4gICAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgICByZW5kZXJPcHRpb249eyhwcm9wcywgb3B0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IHsga2V5LCAuLi5vcHRpb25Qcm9wcyB9ID0gcHJvcHM7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmdcbiAgICAgICAgICA8bGkga2V5PXtrZXl9IHsuLi5vcHRpb25Qcm9wc30+XG4gICAgICAgICAgICA8VHlwb2dyYXBoeVxuICAgICAgICAgICAgICB2YXJpYW50PVwiYm9keTJcIlxuICAgICAgICAgICAgICBzeD17eyBmb250U2l6ZTogXCIxZW1cIiwgY29sb3I6IFwidGV4dC5zZWNvbmRhcnlcIiB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7b3B0aW9uLm5hbWV9XG4gICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgPC9saT5cbiAgICAgICAgKTtcbiAgICAgIH19XG4gICAgLz5cbiAgKTtcbn07XG5cbkNvbXBhbnlGaWVsZC5wcm9wVHlwZXMgPSB7XG4gIGZvcm1pazogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBzdW1taXRJZDogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDb21wYW55RmllbGQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBCb3gsXG4gIENoZWNrYm94LFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgRm9ybUhlbHBlclRleHRcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBSYXdIVE1MIGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL2NvbXBvbmVudHMvcmF3LWh0bWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IFRJQ0tFVF9BVFRFTkRFRV9LRVlTIH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50c1wiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFJlZ2lzdHJhdGlvbkRpc2NsYWltZXIgPSAoe1xuICBkaXNjbGFpbWVyLFxuICBmb3JtaWssXG4gIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgaXNSZXF1aXJlZCA9IHRydWVcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBuYW1lID0gVElDS0VUX0FUVEVOREVFX0tFWVMuZGlzY2xhaW1lckFjY2VwdGVkO1xuICBjb25zdCB7IGVycm9ycywgdmFsdWVzLCB0b3VjaGVkLCBoYW5kbGVDaGFuZ2UsIGhhbmRsZUJsdXIgfSA9IGZvcm1paztcbiAgY29uc3QgdmFsdWUgPSB2YWx1ZXNbbmFtZV07XG4gIGNvbnN0IGVycm9yID0gdG91Y2hlZFtuYW1lXSAmJiBCb29sZWFuKGVycm9yc1tuYW1lXSk7XG4gIGNvbnN0IGhlbHBlclRleHQgPSB0b3VjaGVkW25hbWVdICYmIGVycm9yc1tuYW1lXTtcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMud3JhcHBlcn0+XG4gICAgICA8UmF3SFRNTD57ZGlzY2xhaW1lcn08L1Jhd0hUTUw+XG4gICAgICA8Rm9ybUNvbnRyb2wgZnVsbFdpZHRoIGVycm9yPXtlcnJvcn0+XG4gICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgbmFtZT17bmFtZX1cbiAgICAgICAgICAgICAgY2hlY2tlZD17ISF2YWx1ZX1cbiAgICAgICAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLmV4dHJhX3F1ZXN0aW9uc19mb3JtLmRpc2NsYWltZXJfbGFiZWxcIil9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICAgIG9uQmx1cj17aGFuZGxlQmx1cn1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgfVxuICAgICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5leHRyYV9xdWVzdGlvbnNfZm9ybS5kaXNjbGFpbWVyX2xhYmVsXCIpfVxuICAgICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICAvPlxuICAgICAgICB7ZXJyb3IgJiYgPEZvcm1IZWxwZXJUZXh0PntoZWxwZXJUZXh0ID8/IFwiIFwifTwvRm9ybUhlbHBlclRleHQ+fVxuICAgICAgPC9Gb3JtQ29udHJvbD5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cblJlZ2lzdHJhdGlvbkRpc2NsYWltZXIucHJvcFR5cGVzID0ge1xuICBkaXNjbGFpbWVyOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIGZvcm1pazogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgaXNSZXF1aXJlZDogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlZ2lzdHJhdGlvbkRpc2NsYWltZXI7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgUVJDb2RlIGZyb20gXCJyZWFjdC1xci1jb2RlXCI7XG5pbXBvcnQgeyBCb3gsIEJ1dHRvbiwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQge1xuICBFbWFpbE91dGxpbmVkIGFzIEVtYWlsSWNvbixcbiAgRmlsZURvd25sb2FkT3V0bGluZWQgYXMgRG93bmxvYWRJY29uXG59IGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsXCI7XG5pbXBvcnQgQ29weVRleHQgZnJvbSBcIi4uLy4uLy4uL0NvcHlUZXh0XCI7XG5pbXBvcnQgeyB1c2VUaWNrZXREZXRhaWxzIH0gZnJvbSBcIi4uLy4uLy4uLy4uL2hvb2tzL3VzZVRpY2tldERldGFpbHNcIjtcbmltcG9ydCB7IGdldFRpY2tldFBERiwgcmVzZW5kTm90aWZpY2F0aW9uIH0gZnJvbSBcIi4uLy4uLy4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCB7IE1JTExJU0VDX1RPX1NFQywgVFdPX0lURU0gfSBmcm9tIFwiLi4vLi4vLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4uLy4uL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBUaWNrZXREZXRhaWxIZWFkZXIgPSAoeyB0aWNrZXQsIGlzVmlydHVhbFN1bW1pdCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgeyBpc0NvbXBsZXRlIH0gPSB1c2VUaWNrZXREZXRhaWxzKHRpY2tldCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgW3NlbnRDb25maXJtYXRpb24sIHNldFNlbnRDb25maXJtYXRpb25dID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gIGNvbnN0IGRvd25sb2FkVGlja2V0UGRmID0gKCkgPT4ge1xuICAgIGRpc3BhdGNoKGdldFRpY2tldFBERih0aWNrZXQpKTtcbiAgfTtcblxuICBjb25zdCBvblNlbmRFbWFpbCA9ICgpID0+IHtcbiAgICBkaXNwYXRjaChyZXNlbmROb3RpZmljYXRpb24odGlja2V0KSkudGhlbigoKSA9PiB7XG4gICAgICBzZXRTZW50Q29uZmlybWF0aW9uKHRydWUpO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHNldFNlbnRDb25maXJtYXRpb24oZmFsc2UpO1xuICAgICAgfSwgTUlMTElTRUNfVE9fU0VDICogVFdPX0lURU0pO1xuICAgIH0pO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5oZWFkZXJ9PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImg0XCIgZ3V0dGVyQm90dG9tIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlfT5cbiAgICAgICAge3RpY2tldD8udGlja2V0X3R5cGU/Lm5hbWV9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTJcIiBndXR0ZXJCb3R0b20gY2xhc3NOYW1lPXtzdHlsZXMuc3VidGl0bGV9PlxuICAgICAgICB7dChcInRpY2tldF9kZXRhaWwucHVyY2hhc2VkX2J5XCIpfSB7dGlja2V0Py5vcmRlcj8ub3duZXJfZW1haWx9XG4gICAgICA8L1R5cG9ncmFwaHk+XG5cbiAgICAgIHtpc0NvbXBsZXRlICYmIChcbiAgICAgICAgPD5cbiAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnFyQ29kZX0+XG4gICAgICAgICAgICA8UVJDb2RlXG4gICAgICAgICAgICAgIHNpemU9ezI1Nn1cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IFwiYXV0b1wiLFxuICAgICAgICAgICAgICAgIG1heFdpZHRoOiBcIjEwMCVcIixcbiAgICAgICAgICAgICAgICB3aWR0aDogXCIxMDAlXCJcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgdmFsdWU9e3RpY2tldC5xcl9jb2RlfVxuICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI1NiAyNTZcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgICA8cCBjbGFzc05hbWU9e3N0eWxlcy5zdGF0dXN9Pnt0KFwidGlja2V0X2RldGFpbC5zdGF0dXNcIil9PC9wPlxuICAgICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MlwiIGd1dHRlckJvdHRvbSBjbGFzc05hbWU9e3N0eWxlcy5xck5vdGV9PlxuICAgICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLnFyX25vdGVcIil9XG4gICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICA8Lz5cbiAgICAgICl9XG5cbiAgICAgIHshaXNWaXJ0dWFsU3VtbWl0ICYmIGlzQ29tcGxldGUgJiYgKFxuICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmFjdGlvbkJ1dHRvbnNDb250YWluZXJ9PlxuICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmRvd25sb2FkQnRufVxuICAgICAgICAgICAgdmFyaWFudD1cImNvbnRhaW5lZFwiXG4gICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgb25DbGljaz17ZG93bmxvYWRUaWNrZXRQZGZ9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPERvd25sb2FkSWNvbiBmb250U2l6ZT1cImxhcmdlXCIgLz5cbiAgICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5kb3dubG9hZFwiKX1cbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5zZW5kQnRufSAke3NlbnRDb25maXJtYXRpb24gJiYgc3R5bGVzLnNlbnR9YH1cbiAgICAgICAgICAgIG9uQ2xpY2s9e29uU2VuZEVtYWlsfVxuICAgICAgICAgICAgZGlzYWJsZWQ9e3NlbnRDb25maXJtYXRpb259XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPEVtYWlsSWNvbiBmb250U2l6ZT1cImxhcmdlXCIgLz5cbiAgICAgICAgICAgIHtzZW50Q29uZmlybWF0aW9uXG4gICAgICAgICAgICAgID8gdChcInRpY2tldF9kZXRhaWwuc2VudFwiKVxuICAgICAgICAgICAgICA6IHQoXCJ0aWNrZXRfZGV0YWlsLnNlbmRcIil9XG4gICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIDwvQm94PlxuICAgICAgKX1cblxuICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5vcmRlck51bWJlcn0+XG4gICAgICAgIDxDb3B5VGV4dFxuICAgICAgICAgIHRleHQ9e3RpY2tldD8ub3JkZXI/Lm51bWJlcn1cbiAgICAgICAgICByZXZlcnNlZFxuICAgICAgICAgIHdpZHRoPXsxNTB9XG4gICAgICAgICAgdG9vbHRpcFRleHQ9e3QoXCJvcmRlcl9zdW1tYXJ5LmNvcHlfb3JkZXJfbnVtYmVyXCIpfVxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXREZXRhaWxIZWFkZXI7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3gsIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlRm9ybWlrIH0gZnJvbSBcImZvcm1pa1wiO1xuaW1wb3J0IEV4dHJhUXVlc3Rpb25zRmllbGRzIGZyb20gXCIuLi8uLi8uLi9FeHRyYVF1ZXN0aW9uc0ZpZWxkc1wiO1xuXG5pbXBvcnQge1xuICBnZXRUeXBlVmFsdWUsXG4gIHRvU2x1Z1xufSBmcm9tIFwiLi4vLi4vLi4vRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy91dGlsc1wiO1xuXG5pbXBvcnQgVGlja2V0T3duZXJGaWVsZHMgZnJvbSBcIi4uL1RpY2tldE93bmVyRmllbGRzXCI7XG5pbXBvcnQgUmVnaXN0cmF0aW9uRGlzY2xhaW1lciBmcm9tIFwiLi4vUmVnaXN0cmF0aW9uRGlzY2xhaW1lci9SZWdpc3RyYXRpb25EaXNjbGFpbWVyXCI7XG5pbXBvcnQgRm9ybUZvb3RlciBmcm9tIFwiLi4vLi4vLi4vRm9ybUZvb3RlclwiO1xuaW1wb3J0IHVzZVNjcm9sbFRvRXJyb3IgZnJvbSBcIi4uLy4uLy4uLy4uL2hvb2tzL3VzZVNjcm9sbFRvRXJyb3JcIjtcbmltcG9ydCB7XG4gIHBhcnNlQW5zd2VycyxcbiAgYnVpbGRWYWxpZGF0aW9uU2NoZW1hXG59IGZyb20gXCIuLi8uLi8uLi8uLi91dGlscy90aWNrZXRVdGlsc1wiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4uLy4uL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBUaWNrZXRGb3JtID0gKHtcbiAgdGlja2V0LFxuICBleHRyYVF1ZXN0aW9ucyxcbiAgc3VtbWl0LFxuICBjYW5FZGl0LFxuICBvblN1Ym1pdCxcbiAgb25DbG9zZVxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGFuc3dlcnMgPSB0aWNrZXQ/Lm93bmVyPy5leHRyYV9xdWVzdGlvbnMucmVkdWNlKChyZXMsIGFucykgPT4ge1xuICAgIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhhbnMucXVlc3Rpb24ubmFtZSwgYW5zLnF1ZXN0aW9uLmlkKTtcbiAgICByZXNbcXVlc3Rpb25TbHVnXSA9IGdldFR5cGVWYWx1ZShhbnMudmFsdWUsIGFucy5xdWVzdGlvbi50eXBlKTtcbiAgICByZXR1cm4gcmVzO1xuICB9LCB7fSk7XG5cbiAgY29uc3QgZm9ybWlrID0gdXNlRm9ybWlrKHtcbiAgICBpbml0aWFsVmFsdWVzOiBwYXJzZUFuc3dlcnMoXG4gICAgICB0aWNrZXQub3duZXIsXG4gICAgICBleHRyYVF1ZXN0aW9ucyxcbiAgICAgIGFuc3dlcnMsXG4gICAgICB0cnVlLFxuICAgICAgdHJ1ZVxuICAgICksXG4gICAgdmFsaWRhdGlvblNjaGVtYTogYnVpbGRWYWxpZGF0aW9uU2NoZW1hKFxuICAgICAgZXh0cmFRdWVzdGlvbnMsXG4gICAgICB0cnVlLFxuICAgICAgc3VtbWl0LnJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX21hbmRhdG9yeVxuICAgICksXG4gICAgb25TdWJtaXQ6ICh2YWx1ZXMpID0+IHtcbiAgICAgIGNvbnN0IHJlbGV2YW50QW5zd2VycyA9IHBhcnNlQW5zd2VycyhcbiAgICAgICAgdGlja2V0Lm93bmVyLFxuICAgICAgICBleHRyYVF1ZXN0aW9ucyxcbiAgICAgICAgdmFsdWVzLFxuICAgICAgICB0cnVlLFxuICAgICAgICB0cnVlLFxuICAgICAgICB0cnVlXG4gICAgICApO1xuXG4gICAgICByZXR1cm4gb25TdWJtaXQocmVsZXZhbnRBbnN3ZXJzKTtcbiAgICB9LFxuICAgIGVuYWJsZVJlaW5pdGlhbGl6ZTogdHJ1ZVxuICB9KTtcblxuICAvLyBjb25zb2xlLmxvZyhcIlNVTU1JVDogXCIsIHN1bW1pdCk7XG4gIC8vIGNvbnNvbGUubG9nKFwiVElDS0VUOiBcIiwgdGlja2V0KTtcbiAgLy8gY29uc29sZS5sb2coXCJRVUVTVElVT05zOiBcIiwgZXh0cmFRdWVzdGlvbnMpO1xuICAvLyBjb25zb2xlLmxvZyhcIkFOU1dFUlM6IFwiLCBhbnN3ZXJzKTtcbiAgLy8gY29uc29sZS5sb2coXCJFUlJPUnM6IFwiLCBmb3JtaWsuZXJyb3JzKTtcbiAgLy8gY29uc29sZS5sb2coXCJWQUxVRVM6IFwiLCBmb3JtaWsudmFsdWVzKTtcbiAgLy8gY29uc29sZS5sb2coXCJJTklUSUFMOiBcIiwgZm9ybWlrLmluaXRpYWxWYWx1ZXMpO1xuICAvLyBjb25zb2xlLmxvZyhcIlRPVUNIRUQ6IFwiLCBmb3JtaWsudG91Y2hlZCk7XG5cbiAgLy8gU0NST0xMIFRPIEVSUk9SXG4gIHVzZVNjcm9sbFRvRXJyb3IoZm9ybWlrKTtcblxuICByZXR1cm4gKFxuICAgIDxmb3JtIG9uU3VibWl0PXtmb3JtaWsuaGFuZGxlU3VibWl0fSBub1ZhbGlkYXRlPlxuICAgICAgPFRpY2tldE93bmVyRmllbGRzXG4gICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICBpc0RlbGVnYXRlZD17ISF0aWNrZXQub3duZXI/Lm1hbmFnZXJfaWR9XG4gICAgICAgIHN1bW1pdElkPXtzdW1taXQuaWR9XG4gICAgICAgIGRpc2FibGVkPXshY2FuRWRpdH1cbiAgICAgIC8+XG5cbiAgICAgIHtleHRyYVF1ZXN0aW9ucz8ubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgIDxCb3g+XG4gICAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkyXCIgY2xhc3NOYW1lPXtzdHlsZXMuYWRkaXRpb25hbERldGFpbHN9PlxuICAgICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLmFkaXRpb25hbF9kZXRhaWxzXCIpfVxuICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICA8RXh0cmFRdWVzdGlvbnNGaWVsZHNcbiAgICAgICAgICAgIGV4dHJhUXVlc3Rpb25zPXtleHRyYVF1ZXN0aW9uc31cbiAgICAgICAgICAgIG9yaWdpbmFsQW5zd2Vycz17YW5zd2Vyc31cbiAgICAgICAgICAgIGFsbG93RWRpdD17Y2FuRWRpdH1cbiAgICAgICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvQm94PlxuICAgICAgKX1cblxuICAgICAge3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9jb250ZW50ICYmIChcbiAgICAgICAgPFJlZ2lzdHJhdGlvbkRpc2NsYWltZXJcbiAgICAgICAgICBmb3JtaWs9e2Zvcm1pa31cbiAgICAgICAgICBkaXNjbGFpbWVyPXtzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfY29udGVudH1cbiAgICAgICAgICBpc1JlcXVpcmVkPXtzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfbWFuZGF0b3J5fVxuICAgICAgICAgIGlzRGlzYWJsZWQ9eyFjYW5FZGl0fVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIDxGb3JtRm9vdGVyXG4gICAgICAgIHNhdmVMYWJlbD17dChcInRpY2tldF9kZXRhaWwuc2F2ZVwiKX1cbiAgICAgICAgY2FuY2VsTGFiZWw9e3QoXCJ0aWNrZXRfZGV0YWlsLmNhbmNlbFwiKX1cbiAgICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgICAgZGlzYWJsZWQ9e2Zvcm1pay5pc1N1Ym1pdHRpbmd9XG4gICAgICAvPlxuICAgIDwvZm9ybT5cbiAgKTtcbn07XG5cblRpY2tldEZvcm0ucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIGV4dHJhUXVlc3Rpb25zOiBQcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGNhbkVkaXQ6IFByb3BUeXBlcy5ib29sLFxuICBvblN1Ym1pdDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0Rm9ybTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEJveCwgVGV4dEZpZWxkLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgVElDS0VUX0FUVEVOREVFX0tFWVMgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgQ29tcGFueUZpZWxkIGZyb20gXCIuLi9Db21wYW55RmllbGRcIjtcblxuY29uc3QgVGlja2V0T3duZXJGaWVsZHMgPSAoeyBmb3JtaWssIHN1bW1pdElkLCBkaXNhYmxlZCwgaXNEZWxlZ2F0ZWQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IHsgZXJyb3JzLCB2YWx1ZXMsIHRvdWNoZWQsIGhhbmRsZUNoYW5nZSwgaGFuZGxlQmx1ciwgaW5pdGlhbFZhbHVlcyB9ID1cbiAgICBmb3JtaWs7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLndyYXBwZXJ9PlxuICAgICAgPFRleHRGaWVsZFxuICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgbmFtZT17VElDS0VUX0FUVEVOREVFX0tFWVMuZW1haWx9XG4gICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2RldGFpbC5lbWFpbFwiKX1cbiAgICAgICAgZGlzYWJsZWRcbiAgICAgICAgdmFsdWU9e3ZhbHVlc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbF19XG4gICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAvPlxuICAgICAge2lzRGVsZWdhdGVkICYmIChcbiAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkxXCIgc3g9e3sgZm9udFdlaWdodDogNTAwLCBtYXJnaW46IFwiMTBweCAwXCIgfX0+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLm1hbmFnZV9mb3JcIil9XG4gICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICl9XG4gICAgICB7W1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmZpcnN0TmFtZSwgVElDS0VUX0FUVEVOREVFX0tFWVMubGFzdE5hbWVdLm1hcChcbiAgICAgICAgKG5hbWUpID0+IChcbiAgICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICAgIGtleT17bmFtZX1cbiAgICAgICAgICAgIG5hbWU9e25hbWV9XG4gICAgICAgICAgICBsYWJlbD17dChgdGlja2V0X2RldGFpbC4ke25hbWV9YCl9XG4gICAgICAgICAgICB2YWx1ZT17dmFsdWVzW25hbWVdfVxuICAgICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkIHx8IGlzRGVsZWdhdGVkIHx8ICEhaW5pdGlhbFZhbHVlc1tuYW1lXX1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICBvbkJsdXI9e2hhbmRsZUJsdXJ9XG4gICAgICAgICAgICBlcnJvcj17dG91Y2hlZFtuYW1lXSAmJiBCb29sZWFuKGVycm9yc1tuYW1lXSl9XG4gICAgICAgICAgICBoZWxwZXJUZXh0PXtmb3JtaWsudG91Y2hlZFtuYW1lXSAmJiBmb3JtaWsuZXJyb3JzW25hbWVdfVxuICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgKVxuICAgICAgKX1cbiAgICAgIDxDb21wYW55RmllbGQgZm9ybWlrPXtmb3JtaWt9IHN1bW1pdElkPXtzdW1taXRJZH0gaXNSZXF1aXJlZCAvPlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5pbmZvTm90ZX0+e3QoXCJ0aWNrZXRfZGV0YWlsLmluZm9fbm90ZVwiKX08L0JveD5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cblRpY2tldE93bmVyRmllbGRzLnByb3BUeXBlcyA9IHtcbiAgZm9ybWlrOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHN1bW1pdElkOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgaXNEZWxlZ2F0ZWQ6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXRPd25lckZpZWxkcztcbiIsImV4cG9ydCBjb25zdCBUSUNLRVRfQVRURU5ERUVfS0VZUyA9IHtcbiAgZW1haWw6IFwiYXR0ZW5kZWVfZW1haWxcIixcbiAgZmlyc3ROYW1lOiBcImF0dGVuZGVlX2ZpcnN0X25hbWVcIixcbiAgbGFzdE5hbWU6IFwiYXR0ZW5kZWVfbGFzdF9uYW1lXCIsXG4gIGNvbXBhbnk6IFwiYXR0ZW5kZWVfY29tcGFueVwiLFxuICBkaXNjbGFpbWVyQWNjZXB0ZWQ6IFwiZGlzY2xhaW1lcl9hY2NlcHRlZFwiXG59O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUNvbnRleHQgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94LCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB1c2VHZXRUaWNrZXQgZnJvbSBcIi4uLy4uL2hvb2tzL3VzZUdldFRpY2tldFwiO1xuaW1wb3J0IHsgdHJhbnNmb3JtQW53ZXJzRm9ybWF0IH0gZnJvbSBcIi4uL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvdXRpbHNcIjtcbmltcG9ydCB7IFRJQ0tFVF9EUkFXRVJfSUQgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgVGlja2V0Rm9ybSBmcm9tIFwiLi9jb21wb25lbnRzL1RpY2tldEZvcm1cIjtcbmltcG9ydCBDdXN0b21Ob3RpZmljYXRpb25Db250ZXh0IGZyb20gXCIuLi9DdXN0b21Ob3RpZmljYXRpb24vQ29udGV4dFwiO1xuaW1wb3J0IHsgc2F2ZVRpY2tldERldGFpbHMgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IFJpZ2h0RHJhd2VyIGZyb20gXCIuLi9SaWdodERyYXdlclwiO1xuaW1wb3J0IFRpY2tldERldGFpbEhlYWRlciBmcm9tIFwiLi9jb21wb25lbnRzL1RpY2tldERldGFpbEhlYWRlclwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBUaWNrZXREZXRhaWwgPSAoe1xuICBzdW1taXQsXG4gIHRpY2tldElkLFxuICBvcmRlcklkLFxuICBvd25lcklkLFxuICBvcGVuLFxuICBvbkNsb3NlXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgeyBzdWNjZXNzTWVzc2FnZSwgZXJyb3JNZXNzYWdlIH0gPSB1c2VDb250ZXh0KFxuICAgIEN1c3RvbU5vdGlmaWNhdGlvbkNvbnRleHRcbiAgKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCB7XG4gICAgdXNlcjogeyB1c2VyUHJvZmlsZSB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlKTtcbiAgY29uc3QgeyB0aWNrZXQsIGV4dHJhUXVlc3Rpb25zIH0gPSB1c2VHZXRUaWNrZXQoXG4gICAgdGlja2V0SWQsXG4gICAgb3JkZXJJZCxcbiAgICBvd25lcklkLFxuICAgIG9wZW5cbiAgKTtcbiAgY29uc3QgaXNVc2VyT3JkZXJPd25lciA9IHRpY2tldD8ub3JkZXI/Lm93bmVyX2lkID09PSB1c2VyUHJvZmlsZT8uaWQ7XG4gIGNvbnN0IGlzVXNlclRpY2tldE93bmVyID0gdGlja2V0Py5vd25lcj8uZW1haWwgPT09IHVzZXJQcm9maWxlPy5lbWFpbDtcbiAgY29uc3QgY2FuRWRpdFRpY2tldERhdGEgPVxuICAgIChpc1VzZXJUaWNrZXRPd25lciB8fCBpc1VzZXJPcmRlck93bmVyKSAmJlxuICAgIHN1bW1pdC5hbGxvd191cGRhdGVfYXR0ZW5kZWVfZXh0cmFfcXVlc3Rpb25zO1xuXG4gIGNvbnN0IG9uU2F2ZSA9ICh2YWwpID0+IHtcbiAgICBjb25zdCBhbnN3ZXJzID0gdHJhbnNmb3JtQW53ZXJzRm9ybWF0KHZhbCk7XG5cbiAgICByZXR1cm4gZGlzcGF0Y2goc2F2ZVRpY2tldERldGFpbHModGlja2V0LCBhbnN3ZXJzKSlcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgb25DbG9zZSgpO1xuICAgICAgICBzdWNjZXNzTWVzc2FnZSh0KFwidGlja2V0X2RldGFpbC5zYXZpbmdfc3VjY2Vzc1wiKSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICBlcnJvck1lc3NhZ2UodChcInRpY2tldF9kZXRhaWwuc2F2aW5nX2Vycm9yXCIpKTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gICAgICB9KTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxSaWdodERyYXdlclxuICAgICAgaWQ9e1RJQ0tFVF9EUkFXRVJfSUR9XG4gICAgICBvcGVuPXtvcGVufVxuICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldERldGFpbENvbnRhaW5lcn1cbiAgICAgIGhlYWRlckNoaWxkcmVuPXtcbiAgICAgICAgPFRpY2tldERldGFpbEhlYWRlclxuICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgIGlzVmlydHVhbFN1bW1pdD17c3VtbWl0Py5pc192aXJ0dWFsfVxuICAgICAgICAvPlxuICAgICAgfVxuICAgID5cbiAgICAgIHt0aWNrZXQgJiYgZXh0cmFRdWVzdGlvbnMgJiYgKFxuICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmF0dGVuZGVlQ29udGFpbmVyfT5cbiAgICAgICAgICAgIDxUeXBvZ3JhcGh5XG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJoNFwiXG4gICAgICAgICAgICAgIGd1dHRlckJvdHRvbVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5hdHRlbmRlZUluZm9UaXRsZX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLmF0dGVuZGVlX2luZm9ybWF0aW9uXCIpfVxuICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgICAge3RpY2tldCAmJiAoXG4gICAgICAgICAgICAgIDxUaWNrZXRGb3JtXG4gICAgICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICAgICAgZXh0cmFRdWVzdGlvbnM9e2V4dHJhUXVlc3Rpb25zfVxuICAgICAgICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgICAgICAgIGNhbkVkaXQ9e2NhbkVkaXRUaWNrZXREYXRhfVxuICAgICAgICAgICAgICAgIG9uU3VibWl0PXtvblNhdmV9XG4gICAgICAgICAgICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICApfVxuICAgIDwvUmlnaHREcmF3ZXI+XG4gICk7XG59O1xuXG5UaWNrZXREZXRhaWwucHJvcFR5cGVzID0ge1xuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIHRpY2tldElkOiBQcm9wVHlwZXMubnVtYmVyLFxuICBvcmRlcklkOiBQcm9wVHlwZXMubnVtYmVyLFxuICBvd25lcklkOiBQcm9wVHlwZXMubnVtYmVyLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYyxcbiAgb3BlbjogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldERldGFpbDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IENvbnRhaW5lciwgQnV0dG9uIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRpY2tldERldGFpbHMgfSBmcm9tIFwiLi4vLi4vaG9va3MvdXNlVGlja2V0RGV0YWlsc1wiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFRpY2tldFN0YXR1cyA9ICh7IHRpY2tldCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgaXNBY3RpdmUgPSB0aWNrZXQuaXNfYWN0aXZlO1xuICBjb25zdCByZWZ1bmRSZXF1ZXN0cyA9IHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LmZpbmQoXG4gICAgKHIpID0+IHIuc3RhdHVzID09PSBcIlJlcXVlc3RlZFwiXG4gICk7XG4gIGNvbnN0IHsgaXNJbmNvbXBsZXRlLCBpc1VuYXNzaWduZWQsIGlzQ29tcGxldGUgfSA9IHVzZVRpY2tldERldGFpbHModGlja2V0KTtcblxuICByZXR1cm4gKFxuICAgIDxDb250YWluZXIgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0U3RhdHVzQ29udGFpbmVyfT5cbiAgICAgIHtpc0FjdGl2ZSA/IChcbiAgICAgICAgPD5cbiAgICAgICAgICB7ISFyZWZ1bmRSZXF1ZXN0cyAmJiAoXG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHN0YXR1cyByZWZ1bmQgcmVxdWVzdGVkXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uUmVmdW5kUmVxdWVzdGVkfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfcmVmdW5kX3JlcXVlc3RlZFwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICl9XG4gICAgICAgICAge2lzSW5jb21wbGV0ZSAmJiAoXG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHN0YXR1cyBpbmNvbXBsZXRlXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uSW5jb21wbGV0ZX1gfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX2luY29tcGxldGVcIil9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICApfVxuICAgICAgICAgIHtpc1VuYXNzaWduZWQgJiYgKFxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cInRpY2tldCBzdGF0dXMgdW5hc3NpZ25lZFwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzLmJ1dHRvblVuYXNzaWduZWR9YH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c191bmFzc2lnbmVkXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7aXNDb21wbGV0ZSAmJiAoXG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHN0YXR1cyBjb21wbGV0ZVwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzLmJ1dHRvbkNvbXBsZXRlfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfY29tcGxldGVcIil9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICApfVxuICAgICAgICA8Lz5cbiAgICAgICkgOiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHN0YXR1cyBjYW5jZWxsZWRcIlxuICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzLmJ1dHRvbkNhbmNlbGxlZH1gfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c19jYW5jZWxsZWRcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKX1cbiAgICA8L0NvbnRhaW5lcj5cbiAgKTtcbn07XG5cblRpY2tldFN0YXR1cy5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBvd25lcjogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIHN0YXR1czogUHJvcFR5cGVzLnN0cmluZ1xuICAgIH0pLFxuICAgIHJlZnVuZFJlcXVlc3RzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpXG4gIH0pXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXRTdGF0dXM7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQge1xuICBCb3gsXG4gIERpdmlkZXIsXG4gIFRhYixcbiAgVGFicyxcbiAgdXNlTWVkaWFRdWVyeSxcbiAgdXNlVGhlbWVcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHN0b3BMb2FkaW5nIH0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvYWN0aW9uc1wiO1xuaW1wb3J0IHtcbiAgREVGQVVMVF9JVEVNU19QRVJfUEFHRSxcbiAgRklSU1RfUEFHRSxcbiAgVEFCU1xufSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgTXlPcmRlcnNUaWNrZXRzIGZyb20gXCIuLi9NeU9yZGVyc1RpY2tldHNcIjtcbmltcG9ydCBBc3NpZ25lZFRvTWUgZnJvbSBcIi4uL09yZGVyc0xpc3QvQXNzaWduZWRUb01lXCI7XG5pbXBvcnQge1xuICBnZXRUaWNrZXRzQnlPcmRlcixcbiAgZ2V0VXNlck9yZGVycyxcbiAgZ2V0VXNlclRpY2tldHNcbn0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCBUYWJXcmFwcGVyIGZyb20gXCIuLi9UYWJXcmFwcGVyXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFdpZGdldFRhYnMgPSAoKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW3RhYiwgc2V0VGFiXSA9IHVzZVN0YXRlKFRBQlMuT1JERVJTKTtcbiAgY29uc3QgW3RpY2tldHNGdWxseUxvYWRlZCwgc2V0VGlja2V0c0Z1bGx5TG9hZGVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCB7XG4gICAgZmlsdGVyLFxuICAgIHNvcnQsXG4gICAgb3JkZXJzX3Blcl9wYWdlOiBvcmRlcnNQZXJQYWdlLFxuICAgIHRpY2tldF9wZXJfcGFnZTogdGlja2V0UGVyUGFnZSxcbiAgICB1c2VyVGlja2V0cyxcbiAgICBtZW1iZXJPcmRlcnNcbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUpO1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG4gIGNvbnN0IGlzTW9iaWxlID0gdXNlTWVkaWFRdWVyeSh0aGVtZS5icmVha3BvaW50cy5kb3duKFwibGdcIikpO1xuXG4gIGNvbnN0IGhhbmRsZVRhYkNoYW5nZSA9IChldiwgbmV3VGFiKSA9PiB7XG4gICAgc2V0VGFiKG5ld1RhYik7XG4gIH07XG5cbiAgY29uc3QgZmV0Y2hBc3NpZ25lZFRpY2tldHMgPSAocGFnZSwgc2tpcExvYWRpbmcgPSBmYWxzZSkgPT5cbiAgICBkaXNwYXRjaChcbiAgICAgIGdldFVzZXJUaWNrZXRzKFxuICAgICAgICB7XG4gICAgICAgICAgcGFnZSxcbiAgICAgICAgICBwZXJQYWdlOiBERUZBVUxUX0lURU1TX1BFUl9QQUdFLFxuICAgICAgICAgIGZpbHRlcixcbiAgICAgICAgICBzb3J0XG4gICAgICAgIH0sXG4gICAgICAgIHNraXBMb2FkaW5nXG4gICAgICApXG4gICAgKTtcblxuICBjb25zdCBmZXRjaE9yZGVyVGlja2V0cyA9IChwYWdlLCBza2lwTG9hZGluZyA9IGZhbHNlKSA9PlxuICAgIGRpc3BhdGNoKFxuICAgICAgZ2V0VXNlck9yZGVycyhcbiAgICAgICAge1xuICAgICAgICAgIHBhZ2UsXG4gICAgICAgICAgcGVyUGFnZTogb3JkZXJzUGVyUGFnZSxcbiAgICAgICAgICBmaWx0ZXIsXG4gICAgICAgICAgc29ydFxuICAgICAgICB9LFxuICAgICAgICBza2lwTG9hZGluZ1xuICAgICAgKVxuICAgICkudGhlbigocGF5bG9hZCkgPT4ge1xuICAgICAgY29uc3QgeyBkYXRhIH0gPSBwYXlsb2FkLnJlc3BvbnNlO1xuICAgICAgY29uc3Qgb3JkZXJUaWNrZXRzUHJvbWlzZXMgPSBkYXRhLm1hcCgob3JkZXIpID0+XG4gICAgICAgIGRpc3BhdGNoKFxuICAgICAgICAgIGdldFRpY2tldHNCeU9yZGVyKHtcbiAgICAgICAgICAgIG9yZGVySWQ6IG9yZGVyLmlkLFxuICAgICAgICAgICAgY3VycmVudF9wYWdlOiBGSVJTVF9QQUdFLFxuICAgICAgICAgICAgcGVyUGFnZTogdGlja2V0UGVyUGFnZSxcbiAgICAgICAgICAgIGZpbHRlcixcbiAgICAgICAgICAgIHNvcnRcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApO1xuXG4gICAgICByZXR1cm4gUHJvbWlzZS5hbGwob3JkZXJUaWNrZXRzUHJvbWlzZXMpO1xuICAgIH0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgZmV0Y2hQcm9taXNlcyA9IFtcbiAgICAgIGZldGNoQXNzaWduZWRUaWNrZXRzKEZJUlNUX1BBR0UsIHRydWUpLFxuICAgICAgZmV0Y2hPcmRlclRpY2tldHMoRklSU1RfUEFHRSwgdHJ1ZSlcbiAgICBdO1xuICAgIFByb21pc2UuYWxsKGZldGNoUHJvbWlzZXMpXG4gICAgICAudGhlbigoKSA9PiBzZXRUaWNrZXRzRnVsbHlMb2FkZWQodHJ1ZSkpXG4gICAgICAuZmluYWxseSgoKSA9PiBkaXNwYXRjaChzdG9wTG9hZGluZygpKSk7XG4gIH0sIFtmaWx0ZXIsIHNvcnRdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh0aWNrZXRzRnVsbHlMb2FkZWQpIHtcbiAgICAgIGlmIChtZW1iZXJPcmRlcnM/Lmxlbmd0aCA9PT0gMCAmJiB1c2VyVGlja2V0cz8ubGVuZ3RoID4gMCkge1xuICAgICAgICBzZXRUYWIoVEFCUy5USUNLRVRTKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIFt0aWNrZXRzRnVsbHlMb2FkZWRdKTtcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMudGFiV3JhcHBlcn0+XG4gICAgICA8VGFic1xuICAgICAgICB2YWx1ZT17dGFifVxuICAgICAgICBvbkNoYW5nZT17aGFuZGxlVGFiQ2hhbmdlfVxuICAgICAgICB2YXJpYW50PXtpc01vYmlsZSA/IFwiZnVsbFdpZHRoXCIgOiBcInN0YW5kYXJkXCJ9XG4gICAgICA+XG4gICAgICAgIDxUYWIgbGFiZWw9e3QoXCJvcmRlcnMudGl0bGVcIil9IHZhbHVlPXtUQUJTLk9SREVSU30gLz5cbiAgICAgICAgPFRhYiBsYWJlbD17dChcImxhYmVscy5hc3NpZ25lZF90b19tZVwiKX0gdmFsdWU9e1RBQlMuVElDS0VUU30gLz5cbiAgICAgIDwvVGFicz5cbiAgICAgIDxEaXZpZGVyIC8+XG5cbiAgICAgIHt0YWIgPT09IFRBQlMuT1JERVJTICYmIChcbiAgICAgICAgPFRhYldyYXBwZXIgdGFiPXtUQUJTLk9SREVSU30gc2V0VGFiPXtzZXRUYWJ9PlxuICAgICAgICAgIDxNeU9yZGVyc1RpY2tldHMgZmV0Y2hEYXRhPXtmZXRjaE9yZGVyVGlja2V0c30gLz5cbiAgICAgICAgPC9UYWJXcmFwcGVyPlxuICAgICAgKX1cbiAgICAgIHt0YWIgPT09IFRBQlMuVElDS0VUUyAmJiAoXG4gICAgICAgIDxUYWJXcmFwcGVyIHRhYj17VEFCUy5USUNLRVRTfSBzZXRUYWI9e3NldFRhYn0+XG4gICAgICAgICAgPEFzc2lnbmVkVG9NZSBmZXRjaERhdGE9e2ZldGNoQXNzaWduZWRUaWNrZXRzfSAvPlxuICAgICAgICA8L1RhYldyYXBwZXI+XG4gICAgICApfVxuICAgIDwvQm94PlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgV2lkZ2V0VGFicztcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5pbXBvcnQgUmVhY3QsIHsgdXNlTWVtbywgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsLCBjb25uZWN0IH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgcmVzZXRGaWx0ZXIsIGNoYW5nZVNvcnQsIGNoYW5nZUZpbHRlciB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgQ3VzdG9tVGhlbWUgZnJvbSBcIi4uL0N1c3RvbVRoZW1lXCI7XG5pbXBvcnQgTG9hZGVyIGZyb20gXCIuLi9Mb2FkZXJcIjtcbmltcG9ydCBGaWx0ZXJzIGZyb20gXCIuLi9GaWx0ZXJzXCI7XG5pbXBvcnQgV2lkZ2V0VGFicyBmcm9tIFwiLi4vV2lkZ2V0VGFic1wiO1xuaW1wb3J0IEN1c3RvbU5vdGlmaWNhdGlvbkNvbnRleHQgZnJvbSBcIi4uL0N1c3RvbU5vdGlmaWNhdGlvbi9Db250ZXh0XCI7XG5pbXBvcnQgQ3VzdG9tTm90aWZpY2F0aW9uIGZyb20gXCIuLi9DdXN0b21Ob3RpZmljYXRpb25cIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgV2lkZ2V0V3JhcHBlciA9ICgpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IFttc2dEYXRhLCBzZXRNc2dEYXRhXSA9IHVzZVN0YXRlKFwiXCIpO1xuICBjb25zdCB7XG4gICAgbG9hZGluZyxcbiAgICBmaWx0ZXI6IHsgRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVI6IGZpbHRlclZhbHVlcyB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuXG4gIGNvbnN0IHN1Y2Nlc3NNZXNzYWdlID0gKG1zZykgPT5cbiAgICBzZXRNc2dEYXRhKHsgbWVzc2FnZTogbXNnLCBzZXZlcml0eTogXCJzdWNjZXNzXCIgfSk7XG4gIGNvbnN0IGVycm9yTWVzc2FnZSA9IChtc2cpID0+IHNldE1zZ0RhdGEoeyBtZXNzYWdlOiBtc2csIHNldmVyaXR5OiBcImVycm9yXCIgfSk7XG4gIGNvbnN0IG1lc3NhZ2VDb250ZXh0ID0gdXNlTWVtbygoKSA9PiAoeyBzdWNjZXNzTWVzc2FnZSwgZXJyb3JNZXNzYWdlIH0pLCBbXSk7XG5cbiAgY29uc3Qgb25SZXNldCA9ICgpID0+IHtcbiAgICBkaXNwYXRjaChyZXNldEZpbHRlcigpKTtcbiAgfTtcblxuICBjb25zdCBvbkZpbHRlciA9IChmaWx0ZXJWYWx1ZSkgPT4ge1xuICAgIGRpc3BhdGNoKGNoYW5nZUZpbHRlcihmaWx0ZXJWYWx1ZSkpO1xuICB9O1xuXG4gIGNvbnN0IG9uU29ydCA9IChzb3J0VmFsdWUpID0+IHtcbiAgICBkaXNwYXRjaChjaGFuZ2VTb3J0KHNvcnRWYWx1ZSkpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEN1c3RvbVRoZW1lPlxuICAgICAgPExvYWRlciBvcGVuPXtsb2FkaW5nfSAvPlxuICAgICAgPEN1c3RvbU5vdGlmaWNhdGlvblxuICAgICAgICBvcGVuPXshIW1zZ0RhdGF9XG4gICAgICAgIG9uQ2xvc2U9eygpID0+IHNldE1zZ0RhdGEobnVsbCl9XG4gICAgICAgIG1lc3NhZ2U9e21zZ0RhdGE/Lm1lc3NhZ2V9XG4gICAgICAgIHNldmVyaXR5PXttc2dEYXRhPy5zZXZlcml0eX1cbiAgICAgIC8+XG4gICAgICA8RmlsdGVyc1xuICAgICAgICBvbkZpbHRlcj17b25GaWx0ZXJ9XG4gICAgICAgIG9uU29ydD17b25Tb3J0fVxuICAgICAgICBvblNlYXJjaD17b25GaWx0ZXJ9XG4gICAgICAgIG9uUmVzZXQ9e29uUmVzZXR9XG4gICAgICAvPlxuICAgICAgPEJveCBzeD17eyBwYWRkaW5nOiB7IHhzOiAyLCBtZDogMCwgbGc6IDAgfSB9fT5cbiAgICAgICAgPGgzIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldHNUaXRsZVRleHR9PlxuICAgICAgICAgIHtmaWx0ZXJWYWx1ZXNcbiAgICAgICAgICAgID8gdChcImxhYmVscy5zZWFyY2hfcmVzdWx0c1wiLCB7IGZpbHRlcjogZmlsdGVyVmFsdWVzIH0pXG4gICAgICAgICAgICA6IHQoXCJsYWJlbHMudGlja2V0c1wiKX1cbiAgICAgICAgPC9oMz5cbiAgICAgIDwvQm94PlxuICAgICAgPEN1c3RvbU5vdGlmaWNhdGlvbkNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e21lc3NhZ2VDb250ZXh0fT5cbiAgICAgICAgPFdpZGdldFRhYnMgLz5cbiAgICAgIDwvQ3VzdG9tTm90aWZpY2F0aW9uQ29udGV4dC5Qcm92aWRlcj5cbiAgICA8L0N1c3RvbVRoZW1lPlxuICApO1xufTtcblxuY29uc3QgbWFwU3RhdGVUb1Byb3BzID0gKHsgd2lkZ2V0U3RhdGUgfSkgPT4gKHtcbiAgc29ydDogd2lkZ2V0U3RhdGUuc29ydCxcbiAgZmlsdGVyOiB3aWRnZXRTdGF0ZS5maWx0ZXJcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBjb25uZWN0KG1hcFN0YXRlVG9Qcm9wcywge30pKFdpZGdldFdyYXBwZXIpO1xuIiwiaW1wb3J0IHsgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IGdldEV4dHJhUXVlc3Rpb25zLCBnZXRUaWNrZXQgfSBmcm9tIFwiLi4vYWN0aW9uc1wiO1xuXG5jb25zdCB1c2VHZXRUaWNrZXQgPSAodGlja2V0SWQsIG9yZGVySWQsIG93bmVySWQsIHJ1bikgPT4ge1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAocnVuKSB7XG4gICAgICBpZiAodGlja2V0SWQgJiYgb3JkZXJJZCkge1xuICAgICAgICBkaXNwYXRjaChnZXRUaWNrZXQodGlja2V0SWQsIG9yZGVySWQpKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG93bmVySWQpIHtcbiAgICAgICAgZGlzcGF0Y2goZ2V0RXh0cmFRdWVzdGlvbnMob3duZXJJZCkpO1xuICAgICAgfVxuICAgIH1cbiAgfSwgW3RpY2tldElkLCBvcmRlcklkLCBvd25lcklkLCBydW5dKTtcblxuICBjb25zdCB7IGV4dHJhUXVlc3Rpb25zLCBjdXJyZW50VGlja2V0OiB0aWNrZXQgfSA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGVcbiAgKTtcblxuICByZXR1cm4geyB0aWNrZXQsIGV4dHJhUXVlc3Rpb25zIH07XG59O1xuXG5leHBvcnQgZGVmYXVsdCB1c2VHZXRUaWNrZXQ7XG4iLCJpbXBvcnQgeyB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IFRJQ0tFVF9EUkFXRVJfSUQgfSBmcm9tIFwiLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5cbi8vIFNtb290aCBzY3JvbGxpbmcgZnVuY3Rpb24gdXNpbmcgcmVxdWVzdEFuaW1hdGlvbkZyYW1lXG5mdW5jdGlvbiBzbW9vdGhTY3JvbGxUbyhjb250YWluZXIsIHRhcmdldFNjcm9sbFRvcCwgZHVyYXRpb24pIHtcbiAgY29uc3Qgc3RhcnRTY3JvbGxUb3AgPSBjb250YWluZXIuc2Nyb2xsVG9wO1xuICBjb25zdCBkaXN0YW5jZSA9IHRhcmdldFNjcm9sbFRvcCAtIHN0YXJ0U2Nyb2xsVG9wO1xuICBsZXQgc3RhcnRUaW1lID0gbnVsbDtcblxuICBmdW5jdGlvbiBhbmltYXRpb25TdGVwKHRpbWVzdGFtcCkge1xuICAgIGlmICghc3RhcnRUaW1lKSBzdGFydFRpbWUgPSB0aW1lc3RhbXA7XG4gICAgY29uc3QgZWxhcHNlZCA9IHRpbWVzdGFtcCAtIHN0YXJ0VGltZTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tYWdpYy1udW1iZXJzXG4gICAgY29uc3QgcHJvZ3Jlc3MgPSBNYXRoLm1pbihlbGFwc2VkIC8gZHVyYXRpb24sIDEpO1xuICAgIGNvbnN0IGVhc2VJbk91dFF1YWQgPVxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW1hZ2ljLW51bWJlcnNcbiAgICAgIHByb2dyZXNzIDwgMC41ID8gMiAqIHByb2dyZXNzICoqIDIgOiAxIC0gKC0yICogcHJvZ3Jlc3MgKyAyKSAqKiAyIC8gMjtcblxuICAgIGNvbnRhaW5lci5zY3JvbGxUb3AgPSBzdGFydFNjcm9sbFRvcCArIGRpc3RhbmNlICogZWFzZUluT3V0UXVhZDtcblxuICAgIGlmIChlbGFwc2VkIDwgZHVyYXRpb24pIHtcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShhbmltYXRpb25TdGVwKTtcbiAgICB9XG4gIH1cblxuICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYW5pbWF0aW9uU3RlcCk7XG59XG5cbmNvbnN0IHVzZVNjcm9sbFRvRXJyb3IgPSAoZm9ybWlrKSA9PiB7XG4gIGNvbnN0IHsgZXJyb3JzLCBpc1ZhbGlkLCBpc1N1Ym1pdHRpbmcgfSA9IGZvcm1paztcbiAgY29uc3QgZXJyb3JBcnJheSA9IE9iamVjdC5rZXlzKGVycm9ycyk7XG4gIGNvbnN0IGVycm9yQ291bnQgPSBlcnJvckFycmF5Lmxlbmd0aDtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpc1ZhbGlkIHx8IGVycm9yQ291bnQgPT09IDApIHJldHVybjtcblxuICAgIC8vIHNvcnQgZWxlbWVudHMgYnkgcG9zaXRpb25cbiAgICBjb25zdCBlbGVtZW50c1NvcnRlZCA9IGVycm9yQXJyYXlcbiAgICAgIC5yZWR1Y2UoKHJlc3VsdCwgZXJyb3IpID0+IHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYFtuYW1lPScke2Vycm9yfSddYCk7XG4gICAgICAgIGlmICghZWxlbWVudCkgcmV0dXJuIHJlc3VsdDtcblxuICAgICAgICBjb25zdCBlbFJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICByZXN1bHQucHVzaCh7IGVsZW1lbnQsIGVycm9yLCB0b3A6IGVsUmVjdC50b3AgfSk7XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0sIFtdKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IGEudG9wIC0gYi50b3ApO1xuXG4gICAgaWYgKGVsZW1lbnRzU29ydGVkLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgY29uc3QgY29udGFpbmVyID0gZG9jdW1lbnRcbiAgICAgIC5nZXRFbGVtZW50QnlJZChUSUNLRVRfRFJBV0VSX0lEKVxuICAgICAgLnF1ZXJ5U2VsZWN0b3IoXCIuTXVpRHJhd2VyLXBhcGVyXCIpO1xuICAgIGNvbnN0IHRhcmdldCA9IGVsZW1lbnRzU29ydGVkWzBdO1xuXG4gICAgaWYgKGNvbnRhaW5lcj8uY29udGFpbnModGFyZ2V0LmVsZW1lbnQpKSB7XG4gICAgICBjb25zdCBjb250YWluZXJSZWN0ID0gY29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgICAvLyBDYWxjdWxhdGUgdGhlIG9mZnNldCBvZiB0aGUgdGFyZ2V0IGVsZW1lbnQgcmVsYXRpdmUgdG8gdGhlIGNvbnRhaW5lclxuICAgICAgY29uc3QgZWxlbU9mZmVzdCA9IDEwMDtcbiAgICAgIGNvbnN0IGFuaW1hdGlvbkR1cmF0aW9uID0gNTAwO1xuICAgICAgY29uc3Qgc2Nyb2xsVG9wID1cbiAgICAgICAgdGFyZ2V0LnRvcCAtIGNvbnRhaW5lclJlY3QudG9wICsgY29udGFpbmVyLnNjcm9sbFRvcCAtIGVsZW1PZmZlc3Q7XG5cbiAgICAgIC8vIFNjcm9sbCB0aGUgY29udGFpbmVyIHRvIHRoZSB0YXJnZXQgZWxlbWVudCdzIHBvc2l0aW9uXG4gICAgICBzbW9vdGhTY3JvbGxUbyhjb250YWluZXIsIHNjcm9sbFRvcCwgYW5pbWF0aW9uRHVyYXRpb24pOyAvLyA1MDBtcyBkdXJhdGlvblxuICAgIH1cbiAgfSwgW2lzU3VibWl0dGluZ10pO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgdXNlU2Nyb2xsVG9FcnJvcjtcbiIsImltcG9ydCB7IGlzVGlja2V0UmVmdW5kYWJsZSB9IGZyb20gXCIuLi91dGlscy90aWNrZXRVdGlsc1wiO1xuXG5leHBvcnQgY29uc3QgU1RBVFVTX0NPTVBMRVRFID0gXCJDb21wbGV0ZVwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19JTkNPTVBMRVRFID0gXCJJbmNvbXBsZXRlXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0NBTkNFTExFRCA9IFwiQ2FuY2VsbGVkXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1VOQVNTSUdORUQgPSBcIlVuYXNzaWduZWRcIjtcblxuZXhwb3J0IGNvbnN0IHVzZVRpY2tldERldGFpbHMgPSAodGlja2V0KSA9PiB7XG4gIGNvbnN0IGdldFN0YXR1cyA9ICgpID0+IHtcbiAgICBpZiAoIXRpY2tldC5pc19hY3RpdmUpIHJldHVybiBTVEFUVVNfQ0FOQ0VMTEVEO1xuICAgIGlmICh0aWNrZXQub3duZXJfaWQgPT09IDApIHJldHVybiBTVEFUVVNfVU5BU1NJR05FRDtcbiAgICBpZiAoIXRpY2tldC5vd25lcj8uZmlyc3RfbmFtZSB8fCAhdGlja2V0Lm93bmVyPy5sYXN0X25hbWUpXG4gICAgICByZXR1cm4gU1RBVFVTX0lOQ09NUExFVEU7XG4gICAgcmV0dXJuIHRpY2tldC5vd25lci5zdGF0dXM7XG4gIH07XG5cbiAgaWYgKCF0aWNrZXQpIHJldHVybiB7fTtcblxuICBjb25zdCBzdGF0dXMgPSBnZXRTdGF0dXMoKTtcbiAgY29uc3QgaXNBY3RpdmUgPSB0aWNrZXQuaXNfYWN0aXZlICYmIHN0YXR1cyAhPT0gU1RBVFVTX0NBTkNFTExFRDtcbiAgY29uc3QgaXNSZWZ1bmRhYmxlID0gaXNUaWNrZXRSZWZ1bmRhYmxlKHRpY2tldCk7XG4gIGNvbnN0IGFsbG93c0RlbGVnYXRlID1cbiAgICB0aWNrZXQ/LnRpY2tldF90eXBlPy5hbGxvd3NfdG9fZGVsZWdhdGUgfHxcbiAgICB0aWNrZXQ/LnByb21vX2NvZGU/LmFsbG93c190b19kZWxlZ2F0ZTtcbiAgY29uc3QgaXNDb21wbGV0ZSA9IHN0YXR1cyA9PT0gU1RBVFVTX0NPTVBMRVRFO1xuICBjb25zdCBpc1VuYXNzaWduZWQgPSBzdGF0dXMgPT09IFNUQVRVU19VTkFTU0lHTkVEO1xuICBjb25zdCBpc0luY29tcGxldGUgPSBzdGF0dXMgPT09IFNUQVRVU19JTkNPTVBMRVRFO1xuICBjb25zdCBjYW5SZWFzc2lnbiA9XG4gICAgIWlzVW5hc3NpZ25lZCAmJlxuICAgIHRpY2tldC50aWNrZXRfdHlwZT8uYWxsb3dzX3RvX3JlYXNzaWduICYmXG4gICAgKCF0aWNrZXQucHJvbW9fY29kZSB8fCB0aWNrZXQucHJvbW9fY29kZT8uYWxsb3dzX3RvX3JlYXNzaWduKTtcblxuICByZXR1cm4ge1xuICAgIHN0YXR1cyxcbiAgICBpc0NvbXBsZXRlLFxuICAgIGlzVW5hc3NpZ25lZCxcbiAgICBpc0luY29tcGxldGUsXG4gICAgaXNBY3RpdmUsXG4gICAgaXNSZWZ1bmRhYmxlLFxuICAgIGFsbG93c0RlbGVnYXRlLFxuICAgIGNhblJlYXNzaWduXG4gIH07XG59O1xuIiwiaW1wb3J0IGkxOG4gZnJvbSBcImkxOG5leHRcIjtcbmltcG9ydCB7IGluaXRSZWFjdEkxOG5leHQgfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IExhbmd1YWdlRGV0ZWN0b3IgZnJvbSBcImkxOG5leHQtYnJvd3Nlci1sYW5ndWFnZWRldGVjdG9yXCI7XG5pbXBvcnQgZW4gZnJvbSBcIi4vbG9jYWxlcy9lbi5qc29uXCI7XG5pbXBvcnQgZXMgZnJvbSBcIi4vbG9jYWxlcy9lcy5qc29uXCI7XG5cbi8vIGltcG9ydCBCYWNrZW5kIGZyb20gJ2kxOG5leHQtaHR0cC1iYWNrZW5kJztcbi8vIGRvbid0IHdhbnQgdG8gdXNlIHRoaXM/XG4vLyBoYXZlIGEgbG9vayBhdCB0aGUgUXVpY2sgc3RhcnQgZ3VpZGVcbi8vIGZvciBwYXNzaW5nIGluIGxuZyBhbmQgdHJhbnNsYXRpb25zIG9uIGluaXRcblxuaTE4blxuICAvLyBsb2FkIHRyYW5zbGF0aW9uIHVzaW5nIGh0dHAgLT4gc2VlIC9wdWJsaWMvbG9jYWxlcyAoaS5lLiBodHRwczovL2dpdGh1Yi5jb20vaTE4bmV4dC9yZWFjdC1pMThuZXh0L3RyZWUvbWFzdGVyL2V4YW1wbGUvcmVhY3QvcHVibGljL2xvY2FsZXMpXG4gIC8vIGxlYXJuIG1vcmU6IGh0dHBzOi8vZ2l0aHViLmNvbS9pMThuZXh0L2kxOG5leHQtaHR0cC1iYWNrZW5kXG4gIC8vIHdhbnQgeW91ciB0cmFuc2xhdGlvbnMgdG8gYmUgbG9hZGVkIGZyb20gYSBwcm9mZXNzaW9uYWwgQ0ROPyA9PiBodHRwczovL2dpdGh1Yi5jb20vbG9jaXplL3JlYWN0LXR1dG9yaWFsI3N0ZXAtMi0tLXVzZS10aGUtbG9jaXplLWNkblxuICAvLyAudXNlKEJhY2tlbmQpXG4gIC8vIGRldGVjdCB1c2VyIGxhbmd1YWdlXG4gIC8vIGxlYXJuIG1vcmU6IGh0dHBzOi8vZ2l0aHViLmNvbS9pMThuZXh0L2kxOG5leHQtYnJvd3Nlci1sYW5ndWFnZURldGVjdG9yXG4gIC51c2UoTGFuZ3VhZ2VEZXRlY3RvcilcbiAgLy8gcGFzcyB0aGUgaTE4biBpbnN0YW5jZSB0byByZWFjdC1pMThuZXh0LlxuICAudXNlKGluaXRSZWFjdEkxOG5leHQpXG4gIC8vIGluaXQgaTE4bmV4dFxuICAvLyBmb3IgYWxsIG9wdGlvbnMgcmVhZDogaHR0cHM6Ly93d3cuaTE4bmV4dC5jb20vb3ZlcnZpZXcvY29uZmlndXJhdGlvbi1vcHRpb25zXG4gIC5pbml0KHtcbiAgICBmYWxsYmFja0xuZzogXCJlblwiLFxuICAgIGRlYnVnOiBmYWxzZSxcbiAgICByZXNvdXJjZXM6IHtcbiAgICAgIGVuOiB7IHRyYW5zbGF0aW9uOiBlbiB9LFxuICAgICAgZXM6IHsgdHJhbnNsYXRpb246IGVzIH1cbiAgICB9LFxuICAgIGludGVycG9sYXRpb246IHtcbiAgICAgIGVzY2FwZVZhbHVlOiBmYWxzZSAvLyBub3QgbmVlZGVkIGZvciByZWFjdCBhcyBpdCBlc2NhcGVzIGJ5IGRlZmF1bHRcbiAgICB9XG4gIH0pO1xuXG5leHBvcnQgZGVmYXVsdCBpMThuO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cbmltcG9ydCB7IExPR09VVF9VU0VSIH0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvYWN0aW9uc1wiO1xuaW1wb3J0IHtcbiAgU1RBUlRfTE9BRElORyxcbiAgU1RPUF9MT0FESU5HLFxuICBSRVNFVF9MT0FESU5HXG59IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL2FjdGlvbnNcIjtcbmltcG9ydCB7XG4gIFJFU0VUX1NUQVRFLFxuICBSRVNFVF9GSUxURVIsXG4gIFNFVF9TVEFURSxcbiAgU0VUX1VTRVIsXG4gIEdFVF9VU0VSX09SREVSUyxcbiAgR0VUX01ZX0FTU0lHTkVEX1RJQ0tFVFMsXG4gIEdFVF9USUNLRVRTX0JZX09SREVSLFxuICBVUERBVEVfVElDS0VUU19SRUZVTkRfUkVRVUVTVEVELFxuICBSRUNFSVZFX1RJQ0tFVCxcbiAgUkVDRUlWRV9FWFRSQV9RVUVTVElPTlMsXG4gIFVQREFURV9USUNLRVQsXG4gIEFTU0lHTl9USUNLRVQsXG4gIFJFU0VUX0FQSV9FUlJPUixcbiAgU0VUX0FQSV9FUlJPUixcbiAgUkVTRVRfVElDS0VULFxuICBDSEFOR0VfRklMVEVSLFxuICBDSEFOR0VfU09SVCxcbiAgRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFLFxuICBGSUxURVJfVkFSX09SREVSX05VTUJFUixcbiAgRklMVEVSX1ZBUl9EQVRFLFxuICBGSUxURVJfVkFSX1RJQ0tFVF9UWVBFLFxuICBGSUxURVJfVkFSX0ZSRUVfUEFJRCxcbiAgRklMVEVSX1ZBUl9PV05FUl9TVEFUVVMsXG4gIEZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVELFxuICBGSUxURVJfVkFSX1BST01PQ09ERSxcbiAgREVMRUdBVEVfVElDS0VULFxuICBSRU1PVkVfVElDS0VUX0FUVEVOREVFXG59IGZyb20gXCIuL2FjdGlvbnNcIjtcbmltcG9ydCB7IEZJUlNUX1BBR0UsIFRBQlMgfSBmcm9tIFwiLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCB7IGNhbGN1bGF0ZUFjdGl2ZUZpbHRlcnMsIGhhc0xvYWRlZEFsbERhdGEgfSBmcm9tIFwiLi91dGlsc1wiO1xuaW1wb3J0IHsgdXBkYXRlVGlja2V0Q29sbGVjdGlvbiB9IGZyb20gXCIuL3V0aWxzL3RpY2tldFV0aWxzXCI7XG5cbmNvbnN0IERFRkFVTFRfRklMVEVSX1NUQVRFID0ge1xuICBbRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFXTogW10sXG4gIFtGSUxURVJfVkFSX1RJQ0tFVF9UWVBFXTogW10sXG4gIFtGSUxURVJfVkFSX0ZSRUVfUEFJRF06IFwiXCIsXG4gIFtGSUxURVJfVkFSX09XTkVSX1NUQVRVU106IFwiXCIsXG4gIFtGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRF06IFwiXCIsXG4gIFtGSUxURVJfVkFSX1BST01PQ09ERV06IFwiXCIsXG4gIFtGSUxURVJfVkFSX09SREVSX05VTUJFUl06IFwiXCIsXG4gIFtGSUxURVJfVkFSX0RBVEVdOiBudWxsXG59O1xuXG5jb25zdCBERUZBVUxUX1NUQVRFID0ge1xuICBzdW1taXQ6IG51bGwsXG4gIHVzZXI6IHt9LFxuICB3aWRnZXRMb2FkaW5nOiBmYWxzZSxcbiAgbWVtYmVyT3JkZXJzOiBbXSxcbiAgdXNlclRpY2tldHM6IFtdLFxuICBleHRyYVF1ZXN0aW9uczogW10sXG4gIGN1cnJlbnRUaWNrZXQ6IG51bGwsXG4gIGVycm9yczoge30sXG4gIGxvYWRpbmc6IGZhbHNlLFxuICBjdXJyZW50X3RhYjogVEFCUy5PUkRFUlMsXG4gIHNvcnQ6IHt9LFxuICBmaWx0ZXI6IERFRkFVTFRfRklMVEVSX1NUQVRFLFxuICBhY3RpdmVGaWx0ZXJzQ291bnQ6IDAsXG4gIG9yZGVyc19jdXJyZW50X3BhZ2U6IDAsXG4gIG9yZGVyc19sYXN0X3BhZ2U6IDAsXG4gIG9yZGVyc19wZXJfcGFnZTogNSxcbiAgb3JkZXJzX3RvdGFsOiAwLFxuICB0aWNrZXRfY3VycmVudF9wYWdlOiAwLFxuICB0aWNrZXRfbGFzdF9wYWdlOiAwLFxuICB0aWNrZXRfcGVyX3BhZ2U6IDUsXG4gIHRpY2tldF90b3RhbDogMCxcbiAgdXNlcl90aWNrZXRzX3RvdGFsOiAwLFxuICB1c2VyX3RpY2tldHNfY3VycmVudF9wYWdlOiAwLFxuICB1c2VyX3RpY2tldHNfbGFzdF9wYWdlOiAwLFxuICBhcGlFcnJvcjogbnVsbFxufTtcblxuY29uc3QgV2lkZ2V0UmVkdWNlciA9IChzdGF0ZSA9IERFRkFVTFRfU1RBVEUsIHsgdHlwZSwgcGF5bG9hZCB9ID0ge30pID0+IHtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBMT0dPVVRfVVNFUjpcbiAgICBjYXNlIFJFU0VUX1NUQVRFOlxuICAgICAgcmV0dXJuIERFRkFVTFRfU1RBVEU7XG4gICAgY2FzZSBTVEFSVF9MT0FESU5HOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGxvYWRpbmc6IHRydWUgfTtcbiAgICBjYXNlIFNUT1BfTE9BRElORzpcbiAgICBjYXNlIFJFU0VUX0xPQURJTkc6XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgbG9hZGluZzogZmFsc2UgfTtcbiAgICBjYXNlIFJFU0VUX0FQSV9FUlJPUjpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBhcGlFcnJvcjogbnVsbCB9O1xuICAgIGNhc2UgUkVTRVRfRklMVEVSOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGZpbHRlcjogREVGQVVMVF9GSUxURVJfU1RBVEUsXG4gICAgICAgIGFjdGl2ZUZpbHRlcnNDb3VudDogMCxcbiAgICAgICAgc29ydDoge30sXG4gICAgICAgIG9yZGVyc19jdXJyZW50X3BhZ2U6IDEsXG4gICAgICAgIG9yZGVyc19sYXN0X3BhZ2U6IDEsXG4gICAgICAgIGxvYWRpbmc6IHRydWVcbiAgICAgIH07XG4gICAgY2FzZSBTRVRfU1RBVEU6XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgLi4ucGF5bG9hZCB9O1xuICAgIGNhc2UgU0VUX0FQSV9FUlJPUjoge1xuICAgICAgY29uc3QgeyB0aXRsZSwgaHRtbDogYm9keSB9ID0gcGF5bG9hZDtcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBhcGlFcnJvcjogeyB0aXRsZSwgYm9keSB9IH07XG4gICAgfVxuICAgIGNhc2UgU0VUX1VTRVI6XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgdXNlcjogcGF5bG9hZCB9O1xuICAgIGNhc2UgQ0hBTkdFX0ZJTFRFUjoge1xuICAgICAgY29uc3QgbmV3RmlsdGVycyA9IHsgLi4uc3RhdGUuZmlsdGVyLCAuLi5wYXlsb2FkIH07XG4gICAgICBjb25zdCBuZXdBY3RpdmVDb3VudCA9IGNhbGN1bGF0ZUFjdGl2ZUZpbHRlcnMobmV3RmlsdGVycyk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgZmlsdGVyOiB7IC4uLnN0YXRlLmZpbHRlciwgLi4ucGF5bG9hZCB9LFxuICAgICAgICBhY3RpdmVGaWx0ZXJzQ291bnQ6IG5ld0FjdGl2ZUNvdW50XG4gICAgICB9O1xuICAgIH1cbiAgICBjYXNlIENIQU5HRV9TT1JUOiB7XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgc29ydDogeyAuLi5wYXlsb2FkIH0gfTtcbiAgICB9XG4gICAgY2FzZSBHRVRfVVNFUl9PUkRFUlM6IHtcbiAgICAgIGNvbnN0IHsgZGF0YSwgdG90YWwsIGN1cnJlbnRfcGFnZSwgbGFzdF9wYWdlIH0gPSBwYXlsb2FkLnJlc3BvbnNlO1xuXG4gICAgICBpZiAoaGFzTG9hZGVkQWxsRGF0YShjdXJyZW50X3BhZ2UsIHN0YXRlLm1lbWJlck9yZGVycywgdG90YWwpKVxuICAgICAgICByZXR1cm4gc3RhdGU7XG5cbiAgICAgIGNvbnN0IG1lbWJlck9yZGVycyA9XG4gICAgICAgIGN1cnJlbnRfcGFnZSA9PT0gRklSU1RfUEFHRSA/IGRhdGEgOiBbLi4uc3RhdGUubWVtYmVyT3JkZXJzLCAuLi5kYXRhXTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIG1lbWJlck9yZGVycyxcbiAgICAgICAgb3JkZXJzX3RvdGFsOiB0b3RhbCxcbiAgICAgICAgb3JkZXJzX2N1cnJlbnRfcGFnZTogY3VycmVudF9wYWdlLFxuICAgICAgICBvcmRlcnNfbGFzdF9wYWdlOiBsYXN0X3BhZ2VcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgR0VUX01ZX0FTU0lHTkVEX1RJQ0tFVFM6IHtcbiAgICAgIGNvbnN0IHsgZGF0YSwgdG90YWwsIGN1cnJlbnRfcGFnZSwgbGFzdF9wYWdlIH0gPSBwYXlsb2FkLnJlc3BvbnNlO1xuXG4gICAgICBpZiAoaGFzTG9hZGVkQWxsRGF0YShjdXJyZW50X3BhZ2UsIHN0YXRlLnVzZXJUaWNrZXRzLCB0b3RhbCkpXG4gICAgICAgIHJldHVybiBzdGF0ZTtcblxuICAgICAgY29uc3QgdXNlclRpY2tldHMgPVxuICAgICAgICBjdXJyZW50X3BhZ2UgPT09IEZJUlNUX1BBR0UgPyBkYXRhIDogWy4uLnN0YXRlLnVzZXJUaWNrZXRzLCAuLi5kYXRhXTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHVzZXJUaWNrZXRzLFxuICAgICAgICB1c2VyX3RpY2tldHNfdG90YWw6IHRvdGFsLFxuICAgICAgICB1c2VyX3RpY2tldHNfY3VycmVudF9wYWdlOiBjdXJyZW50X3BhZ2UsXG4gICAgICAgIHVzZXJfdGlja2V0c19sYXN0X3BhZ2U6IGxhc3RfcGFnZVxuICAgICAgfTtcbiAgICB9XG4gICAgY2FzZSBHRVRfVElDS0VUU19CWV9PUkRFUjoge1xuICAgICAgY29uc3QgeyBtZW1iZXJPcmRlcnMgfSA9IHN0YXRlO1xuICAgICAgY29uc3QgeyBkYXRhLCB0b3RhbCwgY3VycmVudF9wYWdlLCBsYXN0X3BhZ2UgfSA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICBjb25zdCBmb3JtZXJPcmRlciA9IG1lbWJlck9yZGVycy5maW5kKChvKSA9PiBvLmlkID09PSBkYXRhWzBdPy5vcmRlcl9pZCk7XG5cbiAgICAgIGNvbnN0IG5ld09yZGVycyA9IG1lbWJlck9yZGVycy5tYXAoKG1vKSA9PiB7XG4gICAgICAgIGlmIChtby5pZCAhPT0gZGF0YVswXT8ub3JkZXJfaWQpIHJldHVybiBtbztcbiAgICAgICAgY29uc3QgbmV3VGlja2V0cyA9XG4gICAgICAgICAgY3VycmVudF9wYWdlID09PSBGSVJTVF9QQUdFXG4gICAgICAgICAgICA/IGRhdGFcbiAgICAgICAgICAgIDogWy4uLmZvcm1lck9yZGVyLm1lbWJlclRpY2tldHMsIC4uLmRhdGFdO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLm1vLFxuICAgICAgICAgIG1lbWJlclRpY2tldHM6IG5ld1RpY2tldHMsXG4gICAgICAgICAgdGlja2V0c19wYWdlX2N1cnJlbnQ6IGN1cnJlbnRfcGFnZSxcbiAgICAgICAgICB0aWNrZXRzX3BhZ2VfbGFzdDogbGFzdF9wYWdlLFxuICAgICAgICAgIHRpY2tldHNfdG90YWw6IHRvdGFsXG4gICAgICAgIH07XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIG1lbWJlck9yZGVyczogbmV3T3JkZXJzXG4gICAgICB9O1xuICAgIH1cbiAgICBjYXNlIFVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURUQ6IHtcbiAgICAgIGNvbnN0IHsgbWVtYmVyT3JkZXJzIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQgPSBwYXlsb2FkO1xuICAgICAgY29uc3Qgb3JkZXIgPSBtZW1iZXJPcmRlcnMuZmluZChcbiAgICAgICAgKG8pID0+IG8uaWQgPT09IHRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWRbMF0/Lm9yZGVyX2lkXG4gICAgICApO1xuICAgICAgY29uc3QgdXBkYXRlZFRpY2tldHMgPSBvcmRlcj8ubWVtYmVyVGlja2V0cy5tYXAoXG4gICAgICAgICh0aWNrZXQpID0+XG4gICAgICAgICAgdGlja2V0c1JlZnVuZFJlcXVlc3RlZC5maW5kKCh0cnIpID0+IHRyci5pZCA9PT0gdGlja2V0LmlkKSB8fCB0aWNrZXRcbiAgICAgICk7XG4gICAgICBjb25zdCB1cGRhdGVkT3JkZXIgPSB7XG4gICAgICAgIC4uLm9yZGVyLFxuICAgICAgICBtZW1iZXJUaWNrZXRzOiB1cGRhdGVkVGlja2V0c1xuICAgICAgfTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBtZW1iZXJPcmRlcnM6IG1lbWJlck9yZGVycy5tYXAoKG1vKSA9PlxuICAgICAgICAgIG1vLmlkID09PSB1cGRhdGVkT3JkZXIuaWQgPyB1cGRhdGVkT3JkZXIgOiBtb1xuICAgICAgICApXG4gICAgICB9O1xuICAgIH1cbiAgICBjYXNlIFJFU0VUX1RJQ0tFVDoge1xuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGN1cnJlbnRUaWNrZXQ6IG51bGwgfTtcbiAgICB9XG4gICAgY2FzZSBSRUNFSVZFX1RJQ0tFVDoge1xuICAgICAgY29uc3QgdGlja2V0ID0gcGF5bG9hZC5yZXNwb25zZTtcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBjdXJyZW50VGlja2V0OiB0aWNrZXQgfTtcbiAgICB9XG4gICAgY2FzZSBSRUNFSVZFX0VYVFJBX1FVRVNUSU9OUzoge1xuICAgICAgY29uc3QgeyBkYXRhIH0gPSBwYXlsb2FkLnJlc3BvbnNlO1xuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGV4dHJhUXVlc3Rpb25zOiBkYXRhIH07XG4gICAgfVxuICAgIGNhc2UgUkVNT1ZFX1RJQ0tFVF9BVFRFTkRFRTpcbiAgICBjYXNlIFVQREFURV9USUNLRVQ6IHtcbiAgICAgIGNvbnN0IHRpY2tldERhdGEgPSBwYXlsb2FkLnJlc3BvbnNlO1xuXG4gICAgICBjb25zdCBuZXdPcmRlcnMgPSBzdGF0ZS5tZW1iZXJPcmRlcnMubWFwKChvcmRlcikgPT4ge1xuICAgICAgICBjb25zdCBuZXdUaWNrZXRzID0gdXBkYXRlVGlja2V0Q29sbGVjdGlvbihcbiAgICAgICAgICBvcmRlci5tZW1iZXJUaWNrZXRzLFxuICAgICAgICAgIHRpY2tldERhdGFcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHsgLi4ub3JkZXIsIG1lbWJlclRpY2tldHM6IG5ld1RpY2tldHMgfTtcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBuZXdVc2VyVGlja2V0cyA9IHVwZGF0ZVRpY2tldENvbGxlY3Rpb24oXG4gICAgICAgIHN0YXRlLnVzZXJUaWNrZXRzLFxuICAgICAgICB0aWNrZXREYXRhXG4gICAgICApO1xuXG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgbWVtYmVyT3JkZXJzOiBuZXdPcmRlcnMsIHVzZXJUaWNrZXRzOiBuZXdVc2VyVGlja2V0cyB9O1xuICAgIH1cbiAgICBjYXNlIERFTEVHQVRFX1RJQ0tFVDpcbiAgICBjYXNlIEFTU0lHTl9USUNLRVQ6IHtcbiAgICAgIGNvbnN0IHRpY2tldERhdGEgPSBwYXlsb2FkLnJlc3BvbnNlO1xuICAgICAgY29uc3QgbmV3T3JkZXJzID0gc3RhdGUubWVtYmVyT3JkZXJzLm1hcCgob3JkZXIpID0+IHtcbiAgICAgICAgY29uc3QgbmV3VGlja2V0cyA9IHVwZGF0ZVRpY2tldENvbGxlY3Rpb24oXG4gICAgICAgICAgb3JkZXIubWVtYmVyVGlja2V0cyxcbiAgICAgICAgICB0aWNrZXREYXRhXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiB7IC4uLm9yZGVyLCBtZW1iZXJUaWNrZXRzOiBuZXdUaWNrZXRzIH07XG4gICAgICB9KTtcblxuICAgICAgY29uc3QgbmV3VXNlclRpY2tldHMgPSB1cGRhdGVUaWNrZXRDb2xsZWN0aW9uKFxuICAgICAgICBzdGF0ZS51c2VyVGlja2V0cyxcbiAgICAgICAgdGlja2V0RGF0YVxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGN1cnJlbnRUaWNrZXQ6IHRpY2tldERhdGEsXG4gICAgICAgIG1lbWJlck9yZGVyczogbmV3T3JkZXJzLFxuICAgICAgICB1c2VyVGlja2V0czogbmV3VXNlclRpY2tldHNcbiAgICAgIH07XG4gICAgfVxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gc3RhdGU7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IFdpZGdldFJlZHVjZXI7XG4iLCJpbXBvcnQgeyB1c2VNZW1vIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBjb25maWd1cmVTdG9yZSB9IGZyb20gXCJAcmVkdXhqcy90b29sa2l0XCI7XG5pbXBvcnQge1xuICBwZXJzaXN0U3RvcmUsXG4gIHBlcnNpc3RSZWR1Y2VyLFxuICBGTFVTSCxcbiAgUkVIWURSQVRFLFxuICBQQVVTRSxcbiAgUEVSU0lTVCxcbiAgUFVSR0UsXG4gIFJFR0lTVEVSXG59IGZyb20gXCJyZWR1eC1wZXJzaXN0XCI7XG5pbXBvcnQgc3RvcmFnZSBmcm9tIFwicmVkdXgtcGVyc2lzdC9saWIvc3RvcmFnZVwiO1xuaW1wb3J0IHsgY29tYmluZVJlZHVjZXJzIH0gZnJvbSBcInJlZHV4XCI7XG5pbXBvcnQgV2lkZ2V0UmVkdWNlciBmcm9tIFwiLi9yZWR1Y2VyXCI7XG5cbmV4cG9ydCBjb25zdCBnZXRTdG9yZSA9ICh7XG4gIGNsaWVudElkLFxuICBsb2dpblVybCxcbiAgc3VtbWl0LFxuICBhcGlCYXNlVXJsLFxuICB1cGRhdGVQcm9maWxlXG59KSA9PiB7XG4gIC8vIHRvIGFkZCBvdGhlciByZWR1Y2VycyBsYXRlclxuICBjb25zdCByZWR1Y2VycyA9IGNvbWJpbmVSZWR1Y2Vycyh7XG4gICAgd2lkZ2V0U3RhdGU6IFdpZGdldFJlZHVjZXJcbiAgfSk7XG5cbiAgY29uc3Qgc3RvcmUgPSBjb25maWd1cmVTdG9yZSh7XG4gICAgcmVkdWNlcjogcGVyc2lzdFJlZHVjZXIoXG4gICAgICB7XG4gICAgICAgIGtleTogYHJvb3RfbXlfb3JkZXJzX3RpY2tldHNfJHtjbGllbnRJZH1gLFxuICAgICAgICBzdG9yYWdlXG4gICAgICB9LFxuICAgICAgcmVkdWNlcnNcbiAgICApLFxuICAgIG1pZGRsZXdhcmU6IChnZXREZWZhdWx0TWlkZGxld2FyZSkgPT5cbiAgICAgIGdldERlZmF1bHRNaWRkbGV3YXJlKHtcbiAgICAgICAgdGh1bms6IHtcbiAgICAgICAgICBleHRyYUFyZ3VtZW50OiB7XG4gICAgICAgICAgICBjbGllbnRJZCxcbiAgICAgICAgICAgIGFwaUJhc2VVcmwsXG4gICAgICAgICAgICBzdW1taXQsXG4gICAgICAgICAgICBsb2dpblVybCxcbiAgICAgICAgICAgIHVwZGF0ZVByb2ZpbGVcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGltbXV0YWJsZUNoZWNrOiBmYWxzZSxcbiAgICAgICAgc2VyaWFsaXphYmxlQ2hlY2s6IHtcbiAgICAgICAgICBpZ25vcmVkQWN0aW9uczogW0ZMVVNILCBSRUhZRFJBVEUsIFBBVVNFLCBQRVJTSVNULCBQVVJHRSwgUkVHSVNURVJdXG4gICAgICAgIH1cbiAgICAgIH0pXG4gIH0pO1xuXG4gIHJldHVybiBzdG9yZTtcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VJbml0U3RvcmUgPSAoY29uZmlnKSA9PiB7XG4gIGNvbnN0IHN0b3JlID0gdXNlTWVtbygoKSA9PiBnZXRTdG9yZShjb25maWcpLCBbXSk7XG4gIGNvbnN0IHBlcnNpc3RvciA9IHVzZU1lbW8oKCkgPT4gcGVyc2lzdFN0b3JlKHN0b3JlKSwgW3N0b3JlXSk7XG5cbiAgcmV0dXJuIHtcbiAgICBzdG9yZSxcbiAgICBwZXJzaXN0b3JcbiAgfTtcbn07XG4iLCJpbXBvcnQge1xuICBpbml0TG9nT3V0LFxuICBnZXRBY2Nlc3NUb2tlblxufSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9tZXRob2RzXCI7XG5pbXBvcnQgKiBhcyBTZW50cnkgZnJvbSBcIkBzZW50cnkvcmVhY3RcIjtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG5jb25zdCBnZXRBY2Nlc3NUb2tlbk1vY2sgPSAoKSA9PiB7XG4gIHRocm93IG5ldyBFcnJvcihcIkFjY2VzcyB0b2tlbiBlcnJvclwiKTtcbiAgLy8gcmV0dXJuIGF1dGhQcm9taXNlUmVqZWN0KCk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0QWNjZXNzVG9rZW5TYWZlbHkgPSBhc3luYyAoKSA9PiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IGdldEFjY2Vzc1Rva2VuKCkuY2F0Y2goKGUpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKFwibXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0OjpnZXRBY2Nlc3NUb2tlblNhZmVseSBlcnJvcjogXCIsIGUpO1xuICAgICAgU2VudHJ5LmNhcHR1cmVFeGNlcHRpb24oZSk7XG4gICAgICBpbml0TG9nT3V0KCk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUubG9nKFwibXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0OjpnZXRBY2Nlc3NUb2tlblNhZmVseSBlcnJvcjogXCIsIGUpO1xuICAgIFNlbnRyeS5jYXB0dXJlRXhjZXB0aW9uKGUpO1xuICAgIGluaXRMb2dPdXQoKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGF1dGhQcm9taXNlUmVqZWN0ID0gYXN5bmMgKCkgPT5cbiAgUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKFwiQXV0aCBUb2tlbiBlcnJvclwiKSk7XG4iLCJleHBvcnQgY29uc3QgTEFTVF9IT1VSX09GXzI0X0hPVVIgPSAyMztcbmV4cG9ydCBjb25zdCBMQVNUX01JTlVURV9PRl9IT1VSID0gNTk7XG5leHBvcnQgY29uc3QgT05FX1BBR0VfTkVYVCA9IDE7XG5leHBvcnQgY29uc3QgTUlMTElTRUNfVE9fU0VDID0gMTAwMDtcbmV4cG9ydCBjb25zdCBPTkVfREFZID0gMTtcbmV4cG9ydCBjb25zdCBERUZBVUxUX0lURU1TX1BFUl9QQUdFID0gNTtcbmV4cG9ydCBjb25zdCBGSVJTVF9QQUdFID0gMTtcbmV4cG9ydCBjb25zdCBQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQgPSA1O1xuZXhwb3J0IGNvbnN0IFNURVBfT05FID0gMTtcbmV4cG9ydCBjb25zdCBTVEVQX1RXTyA9IDI7XG5leHBvcnQgY29uc3QgU1RFUF9USFJFRSA9IDM7XG5leHBvcnQgY29uc3QgTUlOX1JFUVVJUkVEID0gMTtcblxuZXhwb3J0IGNvbnN0IFNUQVRVU19DT01QTEVURSA9IFwiU1RBVFVTX0NPTVBMRVRFXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0lOQ09NUExFVEUgPSBcIlNUQVRVU19JTkNPTVBMRVRFXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1BFTkRJTkcgPSBcIlNUQVRVU19QRU5ESU5HXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0NBTkNFTExFRCA9IFwiU1RBVFVTX0NBTkNFTExFRFwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19FUlJPUiA9IFwiU1RBVFVTX0VSUk9SXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1BST0NFU1NJTkcgPSBcIlNUQVRVU19QUk9DRVNTSU5HXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1VOQVNTSUdORUQgPSBcIlNUQVRVU19VTkFTU0lHTkVEXCI7XG5cbmV4cG9ydCBjb25zdCBTVEFUVVNfUkVGVU5EX1BFTkRJTkcgPSBcIlNUQVRVU19SRUZVTkRfUEVORElOR1wiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19SRUZVTkRfQVBQUk9WRUQgPSBcIlNUQVRVU19SRUZVTkRfQVBQUk9WRURcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfUkVGVU5EX1JFSkVDVEVEID0gXCJTVEFUVVNfUkVGVU5EX1JFSkVDVEVEXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1JFRlVORF9QRU5ESU5HX0xDID0gXCJSZXF1ZXN0ZWRcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfUkVGVU5EX0FQUFJPVkVEX0xDID0gXCJBcHByb3ZlZFwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19SRUZVTkRfUkVKRUNURURfTEMgPSBcIlJlamVjdGVkXCI7XG5cbmV4cG9ydCBjb25zdCBKRVNUX1RJTUVPVVRfSU5fTUlMTElTRUMgPSAxMDAwMDtcblxuZXhwb3J0IGNvbnN0IE9ORV9JVEVNID0gMTtcbmV4cG9ydCBjb25zdCBUV09fSVRFTSA9IDI7XG5leHBvcnQgY29uc3QgRklWRV9JVEVNID0gNTtcbmV4cG9ydCBjb25zdCBTSVhfSVRFTSA9IDY7XG5cbmV4cG9ydCBjb25zdCBQUk9NSVNFX0JBVENIX0xJTUlUID0gMTA7XG5leHBvcnQgY29uc3QgRklGVFlfUEVSX1BBR0UgPSA1MDtcblxuZXhwb3J0IGNvbnN0IEVSUk9SX0NPREVTID0ge1xuICA0MDE6IDQwMSxcbiAgNDAzOiA0MDEsXG4gIDQxMjogNDAxLFxuICA1MDA6IDUwMFxufTtcblxuZXhwb3J0IGNvbnN0IFRBQlMgPSB7XG4gIE9SREVSUzogXCJPUkRFUlNcIixcbiAgVElDS0VUUzogXCJUSUNLRVRTXCJcbn07XG5cbmV4cG9ydCBjb25zdCBPTkVfUkVUUlkgPSAxO1xuXG5leHBvcnQgY29uc3QgRklMVEVSX0FDVElPTiA9IHtcbiAgT1JERVJTOiBcIk9SREVSU1wiLFxuICBFWFRFUk5BTF9USUNLRVRTOiBcIkVYVEVSTkFMX1RJQ0tFVFNcIixcbiAgVElDS0VUU19CWV9PUkRFUlM6IFwiVElDS0VUU19CWV9PUkRFUlNcIlxufTtcblxuZXhwb3J0IGNvbnN0IFRJQ0tFVF9EUkFXRVJfSUQgPSBcInRpY2tldERyYXdlclwiO1xuIiwiaW1wb3J0IG1vbWVudCBmcm9tIFwibW9tZW50LXRpbWV6b25lXCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHtcbiAgTEFTVF9IT1VSX09GXzI0X0hPVVIsXG4gIExBU1RfTUlOVVRFX09GX0hPVVIsXG4gIE1JTExJU0VDX1RPX1NFQyxcbiAgRklSU1RfUEFHRVxufSBmcm9tIFwiLi9jb25zdGFudHNcIjtcblxuZXhwb3J0IGNvbnN0IGZvcm1hdEN1cnJlbmN5ID0gKHZhbHVlLCB7IGxvY2FsZSA9IFwiZW4tVVNcIiwgLi4ub3B0aW9ucyB9KSA9PiB7XG4gIGNvbnN0IGRlZmF1bHRPcHRpb25zID0ge1xuICAgIGN1cnJlbmN5OiBcIlVTRFwiLFxuICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMixcbiAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDJcbiAgfTtcblxuICBjb25zdCBmb3JtYXR0ZXIgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQobG9jYWxlLCB7XG4gICAgc3R5bGU6IFwiY3VycmVuY3lcIixcbiAgICAuLi5kZWZhdWx0T3B0aW9ucyxcbiAgICAuLi5vcHRpb25zXG4gIH0pO1xuXG4gIHJldHVybiBmb3JtYXR0ZXIuZm9ybWF0KHZhbHVlKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRGb3JtYXR0ZWREYXRlID0gKGRhdGV0aW1lLCB0aW1lWm9uZSkgPT4ge1xuICBpZiAodGltZVpvbmUpXG4gICAgcmV0dXJuIG1vbWVudFxuICAgICAgLnR6KGRhdGV0aW1lICogTUlMTElTRUNfVE9fU0VDLCB0aW1lWm9uZSlcbiAgICAgIC5mb3JtYXQoXCJNTU1NIERELCBZWVlZXCIpO1xuXG4gIHJldHVybiBtb21lbnQudW5peChkYXRldGltZSkuZm9ybWF0KFwiTU1NTSBERCwgWVlZWVwiKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjYWxjdWxhdGVPcmRlclRvdGFscyA9ICh7IG9yZGVyLCBzdW1taXQgfSkgPT4ge1xuICBpZiAoIW9yZGVyIHx8ICFzdW1taXQpIHJldHVybiB7fTtcbiAgY29uc3QgdGlja2V0cyA9IG9yZGVyPy5tZW1iZXJUaWNrZXRzO1xuICBpZiAoIXRpY2tldHMpIHJldHVybiB7fTtcblxuICBjb25zdCB7IHJlZnVuZGVkX2Ftb3VudCwgZGlzY291bnRfYW1vdW50LCBhbW91bnQsIHJhd19hbW91bnQgfSA9IG9yZGVyO1xuICBjb25zdCB7IHRpY2tldF90eXBlcyB9ID0gc3VtbWl0O1xuXG4gIGNvbnN0IGN1cnJlbmN5T2JqZWN0ID0geyBjdXJyZW5jeTogb3JkZXIuY3VycmVuY3kgfTtcblxuICBjb25zdCB0YXhlc1N1bW1hcnkgPSBbXTtcbiAgY29uc3QgdGlja2V0U3VtbWFyeSA9IFtdO1xuICBsZXQgcHVyY2hhc2VUaWNrZXRUb3RhbCA9IDA7XG5cbiAgT2JqZWN0LmtleXMob3JkZXIudGlja2V0c19leGNlcnB0X2J5X3RpY2tldF90eXBlKS5tYXAoKHRpY2tldCkgPT4ge1xuICAgIGNvbnN0IHRpY2tldFR5cGUgPSB0aWNrZXRfdHlwZXM/LmZpbmQoKHR0KSA9PiB0dC5uYW1lID09PSB0aWNrZXQpO1xuICAgIGlmICghdGlja2V0VHlwZSkgcmV0dXJuIG51bGw7XG4gICAgdGlja2V0U3VtbWFyeS5wdXNoKHtcbiAgICAgIHRpY2tldF90eXBlX2lkOiB0aWNrZXRUeXBlLmlkLFxuICAgICAgdGlja2V0X3R5cGU6IHRpY2tldFR5cGUsXG4gICAgICBuYW1lOiB0aWNrZXQsXG4gICAgICBxdHk6IG9yZGVyLnRpY2tldHNfZXhjZXJwdF9ieV90aWNrZXRfdHlwZVt0aWNrZXRdXG4gICAgfSk7XG4gICAgcHVyY2hhc2VUaWNrZXRUb3RhbCArPVxuICAgICAgdGlja2V0VHlwZS5jb3N0ICogb3JkZXIudGlja2V0c19leGNlcnB0X2J5X3RpY2tldF90eXBlW3RpY2tldF07XG5cbiAgICByZXR1cm4gdGlja2V0U3VtbWFyeTtcbiAgfSk7XG5cbiAgb3JkZXI/LmFwcGxpZWRfdGF4ZXM/LmZvckVhY2goKHRheCkgPT4ge1xuICAgIGNvbnN0IGZvcm1hdHRlZFRheCA9IHtcbiAgICAgIC4uLnRheCxcbiAgICAgIGFtb3VudDogZm9ybWF0Q3VycmVuY3kodGF4LmFtb3VudCwgY3VycmVuY3lPYmplY3QpXG4gICAgfTtcbiAgICB0YXhlc1N1bW1hcnkucHVzaChmb3JtYXR0ZWRUYXgpO1xuICB9KTtcblxuICBjb25zdCBwdXJjaGFzZVRvdGFsID0gZm9ybWF0Q3VycmVuY3kocHVyY2hhc2VUaWNrZXRUb3RhbCwgY3VycmVuY3lPYmplY3QpO1xuXG4gIGNvbnN0IGRpc2NvdW50VG90YWwgPSBmb3JtYXRDdXJyZW5jeShkaXNjb3VudF9hbW91bnQsIGN1cnJlbmN5T2JqZWN0KTtcbiAgY29uc3QgcmVmdW5kVG90YWwgPSBmb3JtYXRDdXJyZW5jeShyZWZ1bmRlZF9hbW91bnQsIGN1cnJlbmN5T2JqZWN0KTtcbiAgY29uc3Qgc3ViVG90YWwgPSBmb3JtYXRDdXJyZW5jeShyYXdfYW1vdW50LCBjdXJyZW5jeU9iamVjdCk7XG4gIGNvbnN0IGFtb3VudFRvdGFsID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9yZGVyLCBcImFtb3VudFwiKVxuICAgID8gZm9ybWF0Q3VycmVuY3koYW1vdW50LCBjdXJyZW5jeU9iamVjdClcbiAgICA6IGZvcm1hdEN1cnJlbmN5KHB1cmNoYXNlVG90YWwsIGN1cnJlbmN5T2JqZWN0KTtcblxuICByZXR1cm4ge1xuICAgIGRpc2NvdW50VG90YWwsXG4gICAgcmVmdW5kVG90YWwsXG4gICAgc3ViVG90YWwsXG4gICAgYW1vdW50VG90YWwsXG4gICAgdGlja2V0U3VtbWFyeSxcbiAgICB0YXhlc1N1bW1hcnlcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRPcmRlclRpY2tldHMgPSAobWVtYmVyT3JkZXJzLCBvcmRlcklkKSA9PiB7XG4gIGNvbnN0IG9yZGVycyA9IG1lbWJlck9yZGVycy5maWx0ZXIoKG8pID0+IG8uaWQgPT09IG9yZGVySWQpO1xuICByZXR1cm4gb3JkZXJzWzBdPy5tZW1iZXJUaWNrZXRzO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEVwb2NoTG93ZXJVcHBlckluU2Vjb25kcyA9ICh0cykgPT4ge1xuICBjb25zdCBsb3dlciA9IHRzLnNldEhvdXJzKDAsIDAsIDAsIDApIC8gTUlMTElTRUNfVE9fU0VDO1xuICBjb25zdCB1cHBlciA9XG4gICAgdHMuc2V0SG91cnMoTEFTVF9IT1VSX09GXzI0X0hPVVIsIExBU1RfTUlOVVRFX09GX0hPVVIsIDAsIDApIC9cbiAgICBNSUxMSVNFQ19UT19TRUM7XG4gIHJldHVybiB7XG4gICAgbG93ZXIsXG4gICAgdXBwZXJcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0Q3VycmVudFRpbWUgPSAoKSA9PlxuICBNYXRoLnJvdW5kKCtuZXcgRGF0ZSgpIC8gTUlMTElTRUNfVE9fU0VDKTtcblxuZXhwb3J0IGNvbnN0IGdldE5vdyA9ICgpID0+IChkaXNwYXRjaCwgZ2V0U3RhdGUpID0+IHtcbiAgY29uc3QgeyB0aW1lclN0YXRlIH0gPSBnZXRTdGF0ZSgpO1xuICByZXR1cm4gdGltZXJTdGF0ZT8ubm93VXRjID09IG51bGwgPyBkZWZhdWx0Q3VycmVudFRpbWUoKSA6IHRpbWVyU3RhdGU/Lm5vd1V0Yztcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VOb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcblxuICByZXR1cm4gZGlzcGF0Y2goZ2V0Tm93KCkpO1xufTtcblxuLyoqXG4gKiBAcGFyYW0gY3VycmVudFBhZ2VcbiAqIEBwYXJhbSBkYXRhXG4gKiBAcGFyYW0gdG90YWxcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5leHBvcnQgY29uc3QgaGFzTG9hZGVkQWxsRGF0YSA9IChjdXJyZW50UGFnZSwgZGF0YSwgdG90YWwpID0+IHtcbiAgbGV0IHJlcyA9IGZhbHNlO1xuICBjb25zdCBkYXRhTGVuZ3RoID0gQXJyYXkuaXNBcnJheShkYXRhKSA/IGRhdGEubGVuZ3RoIDogMDtcbiAgLy8gd2UgYWxyZWFkeSBsb2FkZWQgYWxsICBkYXRhICggZmlyc3QgcGFnZSBpcyBhbHdheXMgcmVsb2FkZWQgaXQgKVxuICBpZiAoY3VycmVudFBhZ2UgPiBGSVJTVF9QQUdFICYmIGRhdGFMZW5ndGggPiAwICYmIGRhdGFMZW5ndGggPT09IHRvdGFsKVxuICAgIHJlcyA9IHRydWU7XG4gIHJldHVybiByZXM7XG59O1xuXG5leHBvcnQgY29uc3QgY2FsY3VsYXRlQWN0aXZlRmlsdGVycyA9IChmaWx0ZXJzKSA9PiB7XG4gIGxldCBjb3VudCA9IDA7XG4gIE9iamVjdC5lbnRyaWVzKGZpbHRlcnMpLmZvckVhY2goKFssIHZhbHVlXSkgPT4ge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgY291bnQgKz0gdmFsdWUubGVuZ3RoO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiICYmIHZhbHVlLnRyaW0oKSAhPT0gXCJcIikge1xuICAgICAgY291bnQrKztcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJudW1iZXJcIiAmJiB2YWx1ZSA+IDApIHtcbiAgICAgIGNvdW50Kys7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGNvdW50O1xufTtcbiIsImltcG9ydCBtb21lbnQgZnJvbSBcIm1vbWVudC10aW1lem9uZVwiO1xuaW1wb3J0IHsgTUlMTElTRUNfVE9fU0VDLCBPTkVfREFZIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyB1c2VOb3cgfSBmcm9tIFwiLlwiO1xuXG5leHBvcnQgY29uc3QgY2hlY2tTdW1taXRQYXN0ID0gKHN1bW1pdCwgbm93KSA9PiB7XG4gIGlmICghc3VtbWl0KSByZXR1cm4gbnVsbDtcblxuICBjb25zdCByZWFzc2lnbl9kYXRlID1cbiAgICBzdW1taXQ/LnJlYXNzaWduX3RpY2tldF90aWxsX2RhdGUgJiZcbiAgICBzdW1taXQucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZSA8IHN1bW1pdC5lbmRfZGF0ZVxuICAgICAgPyBzdW1taXQucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZVxuICAgICAgOiBzdW1taXQuZW5kX2RhdGU7XG5cbiAgcmV0dXJuIG5vdyA+IHJlYXNzaWduX2RhdGU7XG59O1xuXG5leHBvcnQgY29uc3QgY2hlY2tTdW1taXRTdGFydGVkID0gKHN1bW1pdCwgbm93KSA9PiB7XG4gIGlmICghc3VtbWl0KSByZXR1cm4gbnVsbDtcblxuICByZXR1cm4gc3VtbWl0LnN0YXJ0X2RhdGUgPCBub3c7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U3VtbWl0RGF5c0RpZmYgPSAoc3VtbWl0KSA9PiB7XG4gIGlmICghc3VtbWl0KSByZXR1cm4gbnVsbDtcbiAgY29uc3Qgc3RhcnREYXkgPSBtb21lbnQoc3VtbWl0LnN0YXJ0X2RhdGUgKiBNSUxMSVNFQ19UT19TRUMpLnR6KFxuICAgIHN1bW1pdC50aW1lX3pvbmVfaWRcbiAgKTtcbiAgY29uc3QgZW5kRGF5ID0gbW9tZW50KHN1bW1pdC5lbmRfZGF0ZSAqIE1JTExJU0VDX1RPX1NFQykudHooXG4gICAgc3VtbWl0LnRpbWVfem9uZV9pZFxuICApO1xuICBjb25zdCBkYXlzID0gZW5kRGF5Py5kaWZmKHN0YXJ0RGF5LCBcImRheXNcIik7XG4gIHJldHVybiB7XG4gICAgc3RhcnREYXksXG4gICAgZW5kRGF5LFxuICAgIGRheXNcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTdW1taXRGb3JtYXR0ZWREYXRlID0gKHN1bW1pdCkgPT4ge1xuICBpZiAoIXN1bW1pdCkgcmV0dXJuIG51bGw7XG4gIGNvbnN0IHsgc3RhcnREYXksIGVuZERheSwgZGF5cyB9ID0gZ2V0U3VtbWl0RGF5c0RpZmYoc3VtbWl0KTtcbiAgaWYgKCFzdGFydERheSB8fCAhZW5kRGF5KSByZXR1cm4gbnVsbDtcbiAgbGV0IGZvcm1hdFN0YXJ0RGF0ZSA9IFwiTU1NTSBERCwgWVlZWVwiO1xuICBsZXQgZm9ybWF0RW5kRGF0ZSA9IFwiTU1NTSBERCwgWVlZWVwiO1xuICBpZiAoc3RhcnREYXkueWVhcigpID09PSBlbmREYXkueWVhcigpKSBmb3JtYXRTdGFydERhdGUgPSBcIk1NTU0gRERcIjtcbiAgaWYgKHN0YXJ0RGF5Lm1vbnRoKCkgPT09IGVuZERheS5tb250aCgpKSBmb3JtYXRFbmREYXRlID0gXCJERCwgWVlZWVwiO1xuXG4gIGNvbnN0IHN0YXJ0RGF0ZSA9IHN0YXJ0RGF5LmZvcm1hdChmb3JtYXRTdGFydERhdGUpO1xuICBjb25zdCBlbmREYXRlID0gZW5kRGF5LmZvcm1hdChmb3JtYXRFbmREYXRlKTtcblxuICBpZiAoZGF5cyA+IE9ORV9EQVkpIHJldHVybiBgJHtzdGFydERhdGV9IC0gJHtlbmREYXRlfWA7XG5cbiAgcmV0dXJuIHN0YXJ0RGF0ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTdW1taXRMb2NhdGlvbiA9IChzdW1taXQpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuXG4gIGNvbnN0IGxvY2F0aW9uID0gc3VtbWl0LmxvY2F0aW9ucz8uZmluZChcbiAgICAobCkgPT4gbC5jbGFzc19uYW1lID09PSBcIlN1bW1pdFZlbnVlXCIgJiYgbC5pc19tYWluID09PSB0cnVlXG4gICk7XG5cbiAgaWYgKCFsb2NhdGlvbikgcmV0dXJuIG51bGw7XG5cbiAgcmV0dXJuIGAke2xvY2F0aW9uLmNpdHl9LCAke2xvY2F0aW9uLmNvdW50cnl9YDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTdW1taXRSZWFzc2lnbkRhdGUgPSAoc3VtbWl0KSA9PiB7XG4gIGlmICghc3VtbWl0KSByZXR1cm4gbnVsbDtcblxuICByZXR1cm4gc3VtbWl0LnJlYXNzaWduX3RpY2tldF90aWxsX2RhdGUgJiZcbiAgICBzdW1taXQucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZSA8IHN1bW1pdC5lbmRfZGF0ZVxuICAgID8gc3VtbWl0LnJlYXNzaWduX3RpY2tldF90aWxsX2RhdGVcbiAgICA6IHN1bW1pdC5lbmRfZGF0ZTtcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VTdW1taXREZXRhaWxzID0gKHsgc3VtbWl0IH0pID0+IHtcbiAgY29uc3Qgbm93ID0gdXNlTm93KCk7XG5cbiAgaWYgKCFzdW1taXQpIHJldHVybiB7fTtcblxuICBjb25zdCBsb2NhdGlvbiA9IGdldFN1bW1pdExvY2F0aW9uKHN1bW1pdCk7XG4gIGNvbnN0IGZvcm1hdHRlZERhdGUgPSBnZXRTdW1taXRGb3JtYXR0ZWREYXRlKHN1bW1pdCk7XG4gIGNvbnN0IHJlYXNzaWduRGF0ZSA9IGdldFN1bW1pdFJlYXNzaWduRGF0ZShzdW1taXQpO1xuICBjb25zdCBmb3JtYXR0ZWRSZWFzc2lnbkRhdGUgPSBtb21lbnQudHooXG4gICAgcmVhc3NpZ25EYXRlLFxuICAgIHN1bW1pdC50aW1lX3pvbmU/LnRpbWVfem9uZV9pZFxuICApO1xuICBjb25zdCBkYXlzVW50aWxSZWFzc2lnbkRlYWRsaW5lID0gZ2V0U3VtbWl0RGF5c0RpZmYoXG4gICAgbm93LFxuICAgIHJlYXNzaWduRGF0ZSxcbiAgICBzdW1taXQudGltZV96b25lPy5uYW1lXG4gICk7XG5cbiAgY29uc3QgaXNQYXN0ID0gY2hlY2tTdW1taXRQYXN0KHN1bW1pdCwgbm93KTtcbiAgY29uc3QgaXNTdGFydGVkID0gY2hlY2tTdW1taXRTdGFydGVkKHN1bW1pdCwgbm93KTtcbiAgY29uc3QgaXNSZWFzc2lnbmFibGUgPSByZWFzc2lnbkRhdGUgPiBub3c7XG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiBzdW1taXQ/Lm5hbWUsXG4gICAgbm93LFxuICAgIGxvY2F0aW9uLFxuICAgIGZvcm1hdHRlZERhdGUsXG4gICAgcmVhc3NpZ25EYXRlLFxuICAgIGZvcm1hdHRlZFJlYXNzaWduRGF0ZSxcbiAgICBkYXlzVW50aWxSZWFzc2lnbkRlYWRsaW5lLFxuICAgIGlzUGFzdCxcbiAgICBpc1N0YXJ0ZWQsXG4gICAgaXNSZWFzc2lnbmFibGVcbiAgfTtcbn07XG4iLCJpbXBvcnQgKiBhcyB5dXAgZnJvbSBcInl1cFwiO1xuaW1wb3J0IGkxOG4gZnJvbSBcIi4uL2kxOG5cIjtcbmltcG9ydCB7XG4gIE1JTl9SRVFVSVJFRCxcbiAgU1RBVFVTX0NBTkNFTExFRCxcbiAgU1RBVFVTX0NPTVBMRVRFLFxuICBTVEFUVVNfSU5DT01QTEVURSxcbiAgU1RBVFVTX1JFRlVORF9BUFBST1ZFRCxcbiAgU1RBVFVTX1JFRlVORF9BUFBST1ZFRF9MQyxcbiAgU1RBVFVTX1JFRlVORF9QRU5ESU5HLFxuICBTVEFUVVNfUkVGVU5EX1BFTkRJTkdfTEMsXG4gIFNUQVRVU19SRUZVTkRfUkVKRUNURUQsXG4gIFNUQVRVU19SRUZVTkRfUkVKRUNURURfTEMsXG4gIFNUQVRVU19VTkFTU0lHTkVEXG59IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgVElDS0VUX0FUVEVOREVFX0tFWVMgfSBmcm9tIFwiLi4vY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29uc3RhbnRzXCI7XG5pbXBvcnQge1xuICBjaGVja0lmVmFsdWVNYXRjaCxcbiAgZ2V0VHlwZUluaXRpYWxWYWx1ZSxcbiAgdG9TbHVnXG59IGZyb20gXCIuLi9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvdXRpbHNcIjtcbmltcG9ydCB7XG4gIFF1ZXN0aW9uVHlwZV9DaGVja2JveCxcbiAgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCxcbiAgUXVlc3Rpb25UeXBlX0NvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0XG59IGZyb20gXCIuLi9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgY29uc3Qgc3RhdHVzRGF0YSA9IHtcbiAgW1NUQVRVU19VTkFTU0lHTkVEXToge1xuICAgIHR5cGU6IFNUQVRVU19VTkFTU0lHTkVELFxuICAgIHRleHQ6IGkxOG4udChcInRpY2tldF9zdGF0dXMudW5hc3NpZ25lZFwiKVxuICB9LFxuICBbU1RBVFVTX0lOQ09NUExFVEVdOiB7XG4gICAgdHlwZTogU1RBVFVTX0lOQ09NUExFVEUsXG4gICAgdGV4dDogaTE4bi50KFwidGlja2V0X3N0YXR1cy5pbmNvbXBsZXRlXCIpXG4gIH0sXG4gIFtTVEFUVVNfQ09NUExFVEVdOiB7XG4gICAgdHlwZTogU1RBVFVTX0NPTVBMRVRFLFxuICAgIHRleHQ6IGkxOG4udChcInRpY2tldF9zdGF0dXMuY29tcGxldGVcIilcbiAgfSxcbiAgW1NUQVRVU19DQU5DRUxMRURdOiB7XG4gICAgdHlwZTogU1RBVFVTX0NBTkNFTExFRCxcbiAgICB0ZXh0OiBpMThuLnQoXCJ0aWNrZXRfc3RhdHVzLmNhbmNlbGxlZFwiKVxuICB9XG59O1xuZXhwb3J0IGNvbnN0IGdldFRpY2tldFN0YXR1c0tleSA9ICh0aWNrZXQpID0+IHtcbiAgaWYgKCF0aWNrZXQuaXNfYWN0aXZlKSByZXR1cm4gU1RBVFVTX0NBTkNFTExFRDtcblxuICBpZiAodGlja2V0Lm93bmVyX2lkID09PSAwKSByZXR1cm4gU1RBVFVTX1VOQVNTSUdORUQ7XG5cbiAgaWYgKCF0aWNrZXQub3duZXI/LmZpcnN0X25hbWUgfHwgIXRpY2tldC5vd25lcj8ubGFzdF9uYW1lKVxuICAgIHJldHVybiBTVEFUVVNfSU5DT01QTEVURTtcblxuICBpZiAodGlja2V0Lm93bmVyICYmIHRpY2tldC5vd25lcj8uc3RhdHVzID09PSBcIkluY29tcGxldGVcIilcbiAgICByZXR1cm4gU1RBVFVTX0lOQ09NUExFVEU7XG5cbiAgaWYgKHRpY2tldC5vd25lciAmJiB0aWNrZXQub3duZXI/LnN0YXR1cyA9PT0gXCJDb21wbGV0ZVwiKVxuICAgIHJldHVybiBTVEFUVVNfQ09NUExFVEU7XG5cbiAgcmV0dXJuIFNUQVRVU19JTkNPTVBMRVRFO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldFN0YXR1c0RhdGEgPSAodGlja2V0LCBpc1N1bW1pdFBhc3QpID0+XG4gIHN0YXR1c0RhdGFbZ2V0VGlja2V0U3RhdHVzS2V5KHRpY2tldCwgaXNTdW1taXRQYXN0KV07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRSb2xlID0gKHRpY2tldCkgPT4ge1xuICBpZiAoIXRpY2tldC5iYWRnZSkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3QgeyBmZWF0dXJlcyB9ID0gdGlja2V0LmJhZGdlO1xuXG4gIGlmIChmZWF0dXJlcy5sZW5ndGggPiAwKVxuICAgIHJldHVybiBmZWF0dXJlcy5tYXAoKGZlYXR1cmUpID0+IGZlYXR1cmUubmFtZSkuam9pbihcIiwgXCIpO1xuXG4gIHJldHVybiBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldFR5cGUgPSAodGlja2V0LCBzdW1taXQpID0+XG4gIHN1bW1pdC50aWNrZXRfdHlwZXMuZmluZCgodHlwZSkgPT4gdHlwZS5pZCA9PT0gdGlja2V0LnRpY2tldF90eXBlX2lkKTtcblxuZXhwb3J0IGNvbnN0IGlzVGlja2V0UmVmdW5kYWJsZSA9ICh0aWNrZXQpID0+XG4gIHRpY2tldD8uZmluYWxfYW1vdW50ID4gMCAmJlxuICB0aWNrZXQ/Lm5ldF9zZWxsaW5nX2Nvc3QgPiB0aWNrZXQucmVmdW5kZWRfYW1vdW50ICYmXG4gICF0aWNrZXQ/LnJlZnVuZF9yZXF1ZXN0cz8uc29tZShcbiAgICAocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9QRU5ESU5HX0xDXG4gICk7XG5cbmV4cG9ydCBjb25zdCB0aWNrZXRzUmVmdW5kYWJsZSA9ICh0aWNrZXRzKSA9PlxuICB0aWNrZXRzPy5maWx0ZXIoKHRpY2tldCkgPT4gaXNUaWNrZXRSZWZ1bmRhYmxlKHRpY2tldCkpLmxlbmd0aCB8fCAwO1xuXG5leHBvcnQgY29uc3QgZ2V0UmVmdW5kZWRSZXF1ZXN0ZWRUaWNrZXRzID0gKHRpY2tldHMpID0+XG4gIHRpY2tldHM/LmZpbHRlcigodGlja2V0KSA9PlxuICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfUEVORElOR19MQylcbiAgKTtcbmV4cG9ydCBjb25zdCBnZXRBbGxSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRzID0gKHRpY2tldHMpID0+IHtcbiAgY29uc3QgYWxsVGlja2V0cyA9IFtdO1xuICB0aWNrZXRzPy5tYXAoKHRpY2tldCkgPT4ge1xuICAgIGlmIChcbiAgICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoXG4gICAgICAgIChycikgPT4gcnIuc3RhdHVzID09PSBTVEFUVVNfUkVGVU5EX1BFTkRJTkdfTENcbiAgICAgICkgfHxcbiAgICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoXG4gICAgICAgIChycikgPT4gcnIuc3RhdHVzID09PSBTVEFUVVNfUkVGVU5EX0FQUFJPVkVEX0xDXG4gICAgICApIHx8XG4gICAgICB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5zb21lKFxuICAgICAgICAocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9SRUpFQ1RFRF9MQ1xuICAgICAgKVxuICAgICkge1xuICAgICAgYWxsVGlja2V0cy5wdXNoKHRpY2tldCk7XG4gICAgfVxuICAgIHJldHVybiB0aWNrZXQ7XG4gIH0pO1xuICByZXR1cm4gYWxsVGlja2V0cztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRSZWZ1bmRlZFJlcXVlc3RlZFN0YXR1cyA9ICh0aWNrZXQpID0+IHtcbiAgaWYgKFxuICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfUEVORElOR19MQylcbiAgKVxuICAgIHJldHVybiBTVEFUVVNfUkVGVU5EX1BFTkRJTkc7XG4gIGlmIChcbiAgICB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5zb21lKFxuICAgICAgKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfQVBQUk9WRURfTENcbiAgICApXG4gIClcbiAgICByZXR1cm4gU1RBVFVTX1JFRlVORF9BUFBST1ZFRDtcbiAgaWYgKFxuICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoXG4gICAgICAocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9SRUpFQ1RFRF9MQ1xuICAgIClcbiAgKVxuICAgIHJldHVybiBTVEFUVVNfUkVGVU5EX1JFSkVDVEVEO1xuICByZXR1cm4gU1RBVFVTX1JFRlVORF9QRU5ESU5HO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFJlZnVuZFJlcXVlc3RlZFN0YXR1c0NvbG9yID0gKHRpY2tldCkgPT4ge1xuICBjb25zdCBzdGF0dXMgPSBnZXRSZWZ1bmRlZFJlcXVlc3RlZFN0YXR1cyh0aWNrZXQpO1xuICBsZXQgc3RhdHVzQ29sb3IgPSBcIlwiO1xuICBzd2l0Y2ggKHN0YXR1cykge1xuICAgIGNhc2UgU1RBVFVTX1JFRlVORF9QRU5ESU5HOlxuICAgICAgc3RhdHVzQ29sb3IgPSBcInBlbmRpbmdcIjtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgU1RBVFVTX1JFRlVORF9BUFBST1ZFRDpcbiAgICAgIHN0YXR1c0NvbG9yID0gXCJhcHByb3ZlZFwiO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBTVEFUVVNfUkVGVU5EX1JFSkVDVEVEOlxuICAgICAgc3RhdHVzQ29sb3IgPSBcInJlamVjdGVkXCI7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc3RhdHVzQ29sb3IgPSBcInBlbmRpbmdcIjtcbiAgfVxuICByZXR1cm4gc3RhdHVzQ29sb3I7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VHlwZVZhbGlkYXRpb24gPSAodHlwZSwgbmFtZSwgaXNSZXF1aXJlZCkgPT4ge1xuICBsZXQgc2NoZW1hO1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja2JveDpcbiAgICAgIHNjaGVtYSA9IHl1cC5ib29sKCkub25lT2YoW3RydWVdLCBpMThuLnQoXCJ2YWxpZGF0aW9uLmNoZWNrYm94LnJlcXVpcmVkXCIpKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdDpcbiAgICAgIHNjaGVtYSA9IHl1cC5zdHJpbmcoYEVudGVyICR7bmFtZX1gKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdDpcbiAgICAgIHNjaGVtYSA9IHl1cC5hcnJheSgpLm9mKHl1cC5zdHJpbmcoKSk7XG4gICAgICBpZiAoaXNSZXF1aXJlZCkgc2NoZW1hID0gc2NoZW1hLm1pbihNSU5fUkVRVUlSRUQsIGAke25hbWV9IGlzIHJlcXVpcmVkYCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3g6XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ29tYm9Cb3g6XG4gICAgICBzY2hlbWEgPSB5dXAuc3RyaW5nKGBFbnRlciAke25hbWV9YCk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc2NoZW1hID0geXVwLnN0cmluZyhgRW50ZXIgJHtuYW1lfWApO1xuICAgICAgYnJlYWs7XG4gIH1cblxuICBpZiAoaXNSZXF1aXJlZCkge1xuICAgIHNjaGVtYSA9IHNjaGVtYS5yZXF1aXJlZChgJHtuYW1lfSBpcyByZXF1aXJlZGApO1xuICB9XG5cbiAgcmV0dXJuIHNjaGVtYTtcbn07XG5cbmNvbnN0IHBhcnNlU3ViUXVlc3Rpb25BbnN3ZXIgPSAoXG4gIHEsXG4gIGFuc3dlcnMsXG4gIGFuc3dlcixcbiAgaW5pdGlhbFZhbHVlcyxcbiAgb25seVJlbGV2YW50XG4pID0+IHtcbiAgaWYgKHEuc3ViX3F1ZXN0aW9uX3J1bGVzPy5sZW5ndGggPiAwKSB7XG4gICAgcS5zdWJfcXVlc3Rpb25fcnVsZXMuZm9yRWFjaCgocnVsZSkgPT4ge1xuICAgICAgY29uc3QgeyBzdWJfcXVlc3Rpb24sIGFuc3dlcl92YWx1ZXMgfSA9IHJ1bGU7XG4gICAgICBjb25zdCBzdWJRdWVzdGlvblNsdWcgPSB0b1NsdWcoc3ViX3F1ZXN0aW9uLm5hbWUsIHN1Yl9xdWVzdGlvbi5pZCk7XG4gICAgICBjb25zdCBzdWJBbnN3ZXIgPSBhbnN3ZXJzW3N1YlF1ZXN0aW9uU2x1Z107XG4gICAgICBjb25zdCBtYXRjaCA9IGNoZWNrSWZWYWx1ZU1hdGNoKGFuc3dlciwgYW5zd2VyX3ZhbHVlcyk7XG5cbiAgICAgIGlmICghb25seVJlbGV2YW50IHx8IG1hdGNoKSB7XG4gICAgICAgIGluaXRpYWxWYWx1ZXNbc3ViUXVlc3Rpb25TbHVnXSA9XG4gICAgICAgICAgc3ViQW5zd2VyIHx8IGdldFR5cGVJbml0aWFsVmFsdWUoc3ViX3F1ZXN0aW9uKTtcbiAgICAgIH1cblxuICAgICAgcGFyc2VTdWJRdWVzdGlvbkFuc3dlcihcbiAgICAgICAgc3ViX3F1ZXN0aW9uLFxuICAgICAgICBhbnN3ZXJzLFxuICAgICAgICBzdWJBbnN3ZXIsXG4gICAgICAgIGluaXRpYWxWYWx1ZXMsXG4gICAgICAgIG9ubHlSZWxldmFudFxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHBhcnNlQW5zd2VycyA9IChcbiAgb3duZXIsXG4gIGV4dHJhUXVlc3Rpb25zLFxuICBhbnN3ZXJzLFxuICBpbmNsdWRlQXR0ZW5kZWVJbmZvLFxuICBpbmNsdWRlRGlzY2xhaW1lcixcbiAgb25seVJlbGV2YW50ID0gZmFsc2VcbikgPT4ge1xuICBjb25zdCBpbml0aWFsVmFsdWVzID0ge307XG5cbiAgaWYgKGluY2x1ZGVBdHRlbmRlZUluZm8pIHtcbiAgICBpbml0aWFsVmFsdWVzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmVtYWlsXSA9XG4gICAgICBhbnN3ZXJzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmVtYWlsXSB8fCBvd25lci5lbWFpbCB8fCBcIlwiO1xuICAgIGluaXRpYWxWYWx1ZXNbVElDS0VUX0FUVEVOREVFX0tFWVMuZmlyc3ROYW1lXSA9XG4gICAgICBhbnN3ZXJzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmZpcnN0TmFtZV0gfHwgb3duZXIuZmlyc3RfbmFtZSB8fCBcIlwiO1xuICAgIGluaXRpYWxWYWx1ZXNbVElDS0VUX0FUVEVOREVFX0tFWVMubGFzdE5hbWVdID1cbiAgICAgIGFuc3dlcnNbVElDS0VUX0FUVEVOREVFX0tFWVMubGFzdE5hbWVdIHx8IG93bmVyLmxhc3RfbmFtZSB8fCBcIlwiO1xuICAgIGluaXRpYWxWYWx1ZXNbVElDS0VUX0FUVEVOREVFX0tFWVMuY29tcGFueV0gPVxuICAgICAgYW5zd2Vyc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5jb21wYW55XSB8fCBvd25lci5jb21wYW55O1xuICB9XG5cbiAgaWYgKGluY2x1ZGVEaXNjbGFpbWVyKSB7XG4gICAgaW5pdGlhbFZhbHVlc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5kaXNjbGFpbWVyQWNjZXB0ZWRdID1cbiAgICAgIGFuc3dlcnNbVElDS0VUX0FUVEVOREVFX0tFWVMuZGlzY2xhaW1lckFjY2VwdGVkXSB8fFxuICAgICAgb3duZXIuZGlzY2xhaW1lcl9hY2NlcHRlZDtcbiAgfVxuXG4gIGV4dHJhUXVlc3Rpb25zLmZvckVhY2goKHEpID0+IHtcbiAgICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocS5uYW1lLCBxLmlkKTtcbiAgICBjb25zdCBhbnN3ZXIgPSBhbnN3ZXJzW3F1ZXN0aW9uU2x1Z107XG4gICAgaW5pdGlhbFZhbHVlc1txdWVzdGlvblNsdWddID0gYW5zd2VyIHx8IGdldFR5cGVJbml0aWFsVmFsdWUocSk7XG5cbiAgICBwYXJzZVN1YlF1ZXN0aW9uQW5zd2VyKHEsIGFuc3dlcnMsIGFuc3dlciwgaW5pdGlhbFZhbHVlcywgb25seVJlbGV2YW50KTtcbiAgfSk7XG5cbiAgcmV0dXJuIGluaXRpYWxWYWx1ZXM7XG59O1xuXG5jb25zdCBidWlsZFN1YlF1ZXN0aW9uVmFsaWRhdGlvblNjaGVtYSA9IChxdWVzdGlvblNsdWcsIHJ1bGUsIHNjaGVtYSkgPT4ge1xuICBjb25zdCBzdWJRdWVzdGlvbiA9IHJ1bGUuc3ViX3F1ZXN0aW9uO1xuICBjb25zdCBzdWJRdWVzdGlvblNsdWcgPSB0b1NsdWcoc3ViUXVlc3Rpb24ubmFtZSwgc3ViUXVlc3Rpb24uaWQpO1xuXG4gIHNjaGVtYVtzdWJRdWVzdGlvblNsdWddID0gZ2V0VHlwZVZhbGlkYXRpb24oXG4gICAgc3ViUXVlc3Rpb24udHlwZSxcbiAgICBzdWJRdWVzdGlvbi5uYW1lLFxuICAgIGZhbHNlXG4gIClcbiAgICAubnVsbGFibGUoKVxuICAgIC53aGVuKHF1ZXN0aW9uU2x1Zywge1xuICAgICAgaXM6IChxdWVzdGlvbkFucykgPT4ge1xuICAgICAgICBjb25zdCBhbnNWYWx1ZU1hdGNoID0gY2hlY2tJZlZhbHVlTWF0Y2goXG4gICAgICAgICAgcXVlc3Rpb25BbnMsXG4gICAgICAgICAgcnVsZS5hbnN3ZXJfdmFsdWVzXG4gICAgICAgICk7XG4gICAgICAgIC8vIGNoZWNrIGlmIHF1ZXN0aW9uIGlzIHZpc2libGUgdG8gYWRkIHZhbGlkYXRpb25cbiAgICAgICAgY29uc3QgaXNWaXNpYmxlID0gISFkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcbiAgICAgICAgICBgJHtxdWVzdGlvblNsdWd9X2NvbnRhaW5lcmBcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIGFuc1ZhbHVlTWF0Y2ggJiYgaXNWaXNpYmxlO1xuICAgICAgfSxcbiAgICAgIHRoZW46IChzY2gpID0+IHtcbiAgICAgICAgaWYgKHN1YlF1ZXN0aW9uLnR5cGUgPT09IFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QpIHtcbiAgICAgICAgICByZXR1cm4gc2NoXG4gICAgICAgICAgICAubWluKE1JTl9SRVFVSVJFRCwgaTE4bi50KFwidmFsaWRhdGlvbi5yZXF1aXJlZF9xdWVzdGlvblwiKSlcbiAgICAgICAgICAgIC5yZXF1aXJlZChpMThuLnQoXCJ2YWxpZGF0aW9uLnJlcXVpcmVkX3F1ZXN0aW9uXCIpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2NoLnJlcXVpcmVkKGkxOG4udChcInZhbGlkYXRpb24ucmVxdWlyZWRfcXVlc3Rpb25cIikpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gIGlmIChzdWJRdWVzdGlvbi5zdWJfcXVlc3Rpb25fcnVsZXM/Lmxlbmd0aCA+IDApIHtcbiAgICBzdWJRdWVzdGlvbi5zdWJfcXVlc3Rpb25fcnVsZXMuZm9yRWFjaCgoc3ViUnVsZSkgPT4ge1xuICAgICAgYnVpbGRTdWJRdWVzdGlvblZhbGlkYXRpb25TY2hlbWEoc3ViUXVlc3Rpb25TbHVnLCBzdWJSdWxlLCBzY2hlbWEpO1xuICAgIH0pO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgYnVpbGRWYWxpZGF0aW9uU2NoZW1hID0gKFxuICBleHRyYVF1ZXN0aW9ucyxcbiAgaW5jbHVkZUF0dGVuZGVlSW5mbyxcbiAgZGlzY2xhaW1lck1hbmRhdG9yeVxuKSA9PiB7XG4gIGNvbnN0IHNjaGVtYSA9IHt9O1xuXG4gIGlmIChpbmNsdWRlQXR0ZW5kZWVJbmZvKSB7XG4gICAgc2NoZW1hW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmVtYWlsXSA9IHl1cFxuICAgICAgLnN0cmluZyhpMThuLnQoXCJ2YWxpZGF0aW9uLmVtYWlsLnN0cmluZ1wiKSlcbiAgICAgIC5lbWFpbChpMThuLnQoXCJ2YWxpZGF0aW9uLmVtYWlsLmZvcm1hdFwiKSlcbiAgICAgIC5yZXF1aXJlZChpMThuLnQoXCJ2YWxpZGF0aW9uLmVtYWlsLnJlcXVpcmVkXCIpKTtcbiAgICBzY2hlbWFbVElDS0VUX0FUVEVOREVFX0tFWVMuZmlyc3ROYW1lXSA9IHl1cFxuICAgICAgLnN0cmluZyhpMThuLnQoXCJ2YWxpZGF0aW9uLmZpcnN0X25hbWUuc3RyaW5nXCIpKVxuICAgICAgLnJlcXVpcmVkKGkxOG4udChcInZhbGlkYXRpb24uZmlyc3RfbmFtZS5yZXF1aXJlZFwiKSk7XG4gICAgc2NoZW1hW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmxhc3ROYW1lXSA9IHl1cFxuICAgICAgLnN0cmluZyhpMThuLnQoXCJ2YWxpZGF0aW9uLmxhc3RfbmFtZS5zdHJpbmdcIikpXG4gICAgICAucmVxdWlyZWQoaTE4bi50KFwidmFsaWRhdGlvbi5sYXN0X25hbWUucmVxdWlyZWRcIikpO1xuICAgIHNjaGVtYVtUSUNLRVRfQVRURU5ERUVfS0VZUy5jb21wYW55XSA9IHl1cC5sYXp5KCh2YWx1ZSkgPT5cbiAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIlxuICAgICAgICA/IHl1cFxuICAgICAgICAgICAgLm9iamVjdCgpXG4gICAgICAgICAgICAucmVxdWlyZWQoaTE4bi50KFwidmFsaWRhdGlvbi5jb21wYW55LnJlcXVpcmVkXCIpKVxuICAgICAgICAgICAgLnR5cGVFcnJvcihpMThuLnQoXCJ2YWxpZGF0aW9uLnJlcXVpcmVkX2ZpZWxkXCIpKVxuICAgICAgICA6IHl1cC5zdHJpbmcoKS5yZXF1aXJlZChpMThuLnQoXCJ2YWxpZGF0aW9uLmNvbXBhbnkucmVxdWlyZWRcIikpXG4gICAgKTtcbiAgfVxuXG4gIGlmIChkaXNjbGFpbWVyTWFuZGF0b3J5KSB7XG4gICAgc2NoZW1hW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmRpc2NsYWltZXJBY2NlcHRlZF0gPSB5dXBcbiAgICAgIC5ib29sKClcbiAgICAgIC5vbmVPZihbdHJ1ZV0sIGkxOG4udChcInZhbGlkYXRpb24uY2hlY2tib3gucmVxdWlyZWRcIikpO1xuICB9XG5cbiAgZXh0cmFRdWVzdGlvbnMuZm9yRWFjaCgocSkgPT4ge1xuICAgIGNvbnN0IHsgaWQsIG5hbWUsIHR5cGUsIG1hbmRhdG9yeSwgc3ViX3F1ZXN0aW9uX3J1bGVzIH0gPSBxO1xuICAgIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhuYW1lLCBpZCk7XG4gICAgc2NoZW1hW3F1ZXN0aW9uU2x1Z10gPSBnZXRUeXBlVmFsaWRhdGlvbih0eXBlLCBuYW1lLCBtYW5kYXRvcnkpO1xuXG4gICAgaWYgKHN1Yl9xdWVzdGlvbl9ydWxlcz8ubGVuZ3RoID4gMCkge1xuICAgICAgc3ViX3F1ZXN0aW9uX3J1bGVzLmZvckVhY2goKHJ1bGUpID0+IHtcbiAgICAgICAgYnVpbGRTdWJRdWVzdGlvblZhbGlkYXRpb25TY2hlbWEocXVlc3Rpb25TbHVnLCBydWxlLCBzY2hlbWEpO1xuICAgICAgfSk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4geXVwLm9iamVjdChzY2hlbWEpO1xufTtcblxuZXhwb3J0IGNvbnN0IHVwZGF0ZVRpY2tldENvbGxlY3Rpb24gPSAodGlja2V0cywgdGlja2V0KSA9PlxuICB0aWNrZXRzLm1hcCgodCkgPT4ge1xuICAgIGNvbnN0IHRtcFRpY2tldCA9IHsgLi4udCB9O1xuICAgIC8vIHVwZGF0ZSBhdHRlbmRlZVxuICAgIGlmIChcbiAgICAgIHQub3duZXI/LmlkID09PSB0aWNrZXQub3duZXI/LmlkICYmXG4gICAgICB0Lm93bmVyPy5zdGF0dXMgIT09IHRpY2tldC5vd25lcj8uc3RhdHVzXG4gICAgKSB7XG4gICAgICB0bXBUaWNrZXQub3duZXIgPSB0aWNrZXQub3duZXI7XG4gICAgfVxuICAgIHJldHVybiB0LmlkID09PSB0aWNrZXQuaWQgPyB0aWNrZXQgOiB0bXBUaWNrZXQ7XG4gIH0pO1xuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImNvcHlJY29uX19fbEkzZVFcIjtcbnZhciBfMiA9IFwicmV2ZXJzZWRfX196SnptRFwiO1xudmFyIF8zID0gXCJ0cnVuY2F0ZWRfX19qV1NuVVwiO1xudmFyIF80ID0gXCJ3cmFwcGVyX19fbVZQaVJcIjtcbmV4cG9ydCB7IF8xIGFzIFwiY29weUljb25cIiwgXzIgYXMgXCJyZXZlcnNlZFwiLCBfMyBhcyBcInRydW5jYXRlZFwiLCBfNCBhcyBcIndyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiTXVpT3V0bGluZWRJbnB1dC1ub3RjaGVkT3V0bGluZV9fX214RUtXXCI7XG52YXIgXzIgPSBcIk11aVBpY2tlcnNDYWxlbmRhckhlYWRlci1sYWJlbENvbnRhaW5lcl9fX080c1NzXCI7XG52YXIgXzMgPSBcImNhbGVuZGFyRGlzcGxheV9fX0YzbnVLXCI7XG52YXIgXzQgPSBcImNsZWFuQnV0dG9uX19fcXFEdlVcIjtcbnZhciBfNSA9IFwiY29udGFpbmVyX19fUWVRWV9cIjtcbnZhciBfNiA9IFwiZGF0ZVBpY2tlckNvbnRhaW5lcl9fX1o0Mm13XCI7XG52YXIgXzcgPSBcImRhdGVwaWNrZXJDbG9zZV9fX1RaN2tKXCI7XG52YXIgXzggPSBcImZpbHRlckNoZWNrYm94Q29udGFpbmVyX19fa1VuVzlcIjtcbnZhciBfOSA9IFwiZmlsdGVyQ29udGFpbmVyX19fcnJxcDlcIjtcbnZhciBfYSA9IFwiZmlsdGVyRGF0ZUxhYmVsX19fSmdiY3NcIjtcbnZhciBfYiA9IFwiZmlsdGVySWNvbl9fX2lpT3pvXCI7XG52YXIgX2MgPSBcImZpbHRlckxhYmVsX19fc2taUDdcIjtcbnZhciBfZCA9IFwiZmlsdGVyTGlzdENvbnRhaW5lcl9fX0lEcmxTXCI7XG52YXIgX2UgPSBcImZpbHRlck51bUFjdGl2ZV9fX2ttRUVLXCI7XG52YXIgX2YgPSBcImZpbHRlclNvcnRDb250YWluZXJfX19uaE5Kc1wiO1xudmFyIF8xMCA9IFwibGFiZWxfX19MQW1lX1wiO1xudmFyIF8xMSA9IFwic2hvd0ZpbHRlckxpc3RfX19JVzR4R1wiO1xudmFyIF8xMiA9IFwic29ydENvbnRhaW5lcl9fX3NiNUJkXCI7XG52YXIgXzEzID0gXCJzb3J0SWNvbl9fX2NfWFppXCI7XG52YXIgXzE0ID0gXCJzb3J0TGFiZWxfX19kWGlNeVwiO1xudmFyIF8xNSA9IFwic29ydExpc3RDb250YWluZXJfX19QcDJYZ1wiO1xudmFyIF8xNiA9IFwidGl0bGVXcmFwcGVyX19fUDZtUHVcIjtcbmV4cG9ydCB7IF8xIGFzIFwiTXVpT3V0bGluZWRJbnB1dC1ub3RjaGVkT3V0bGluZVwiLCBfMiBhcyBcIk11aVBpY2tlcnNDYWxlbmRhckhlYWRlci1sYWJlbENvbnRhaW5lclwiLCBfMyBhcyBcImNhbGVuZGFyRGlzcGxheVwiLCBfNCBhcyBcImNsZWFuQnV0dG9uXCIsIF81IGFzIFwiY29udGFpbmVyXCIsIF82IGFzIFwiZGF0ZVBpY2tlckNvbnRhaW5lclwiLCBfNyBhcyBcImRhdGVwaWNrZXJDbG9zZVwiLCBfOCBhcyBcImZpbHRlckNoZWNrYm94Q29udGFpbmVyXCIsIF85IGFzIFwiZmlsdGVyQ29udGFpbmVyXCIsIF9hIGFzIFwiZmlsdGVyRGF0ZUxhYmVsXCIsIF9iIGFzIFwiZmlsdGVySWNvblwiLCBfYyBhcyBcImZpbHRlckxhYmVsXCIsIF9kIGFzIFwiZmlsdGVyTGlzdENvbnRhaW5lclwiLCBfZSBhcyBcImZpbHRlck51bUFjdGl2ZVwiLCBfZiBhcyBcImZpbHRlclNvcnRDb250YWluZXJcIiwgXzEwIGFzIFwibGFiZWxcIiwgXzExIGFzIFwic2hvd0ZpbHRlckxpc3RcIiwgXzEyIGFzIFwic29ydENvbnRhaW5lclwiLCBfMTMgYXMgXCJzb3J0SWNvblwiLCBfMTQgYXMgXCJzb3J0TGFiZWxcIiwgXzE1IGFzIFwic29ydExpc3RDb250YWluZXJcIiwgXzE2IGFzIFwidGl0bGVXcmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImNhbmNlbEJ0bl9fX3FEZXhoXCI7XG52YXIgXzIgPSBcImZvb3Rlcl9fX1NONzB5XCI7XG52YXIgXzMgPSBcInNhdmVCdG5fX19uYlU2Y1wiO1xuZXhwb3J0IHsgXzEgYXMgXCJjYW5jZWxCdG5cIiwgXzIgYXMgXCJmb290ZXJcIiwgXzMgYXMgXCJzYXZlQnRuXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImVycm9yTGFiZWxfX19ub2N5WFwiO1xuZXhwb3J0IHsgXzEgYXMgXCJlcnJvckxhYmVsXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcIm15T3JkZXJzV3JhcHBlcl9fX0hKbXlzXCI7XG52YXIgXzIgPSBcIm5vT3JkZXJzRm91bmRfX19EUndnb1wiO1xudmFyIF8zID0gXCJub09yZGVyc0ljb25XcmFwcGVyX19fdFBUbVlcIjtcbmV4cG9ydCB7IF8xIGFzIFwibXlPcmRlcnNXcmFwcGVyXCIsIF8yIGFzIFwibm9PcmRlcnNGb3VuZFwiLCBfMyBhcyBcIm5vT3JkZXJzSWNvbldyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiYm9keV9fX0FXZGlMXCI7XG52YXIgXzIgPSBcImljb25XcmFwcGVyX19fbXpldktcIjtcbnZhciBfMyA9IFwidGl0bGVfX19NMjQybVwiO1xudmFyIF80ID0gXCJ3cmFwcGVyX19fUXN3Q1BcIjtcbmV4cG9ydCB7IF8xIGFzIFwiYm9keVwiLCBfMiBhcyBcImljb25XcmFwcGVyXCIsIF8zIGFzIFwidGl0bGVcIiwgXzQgYXMgXCJ3cmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcIm9yZGVyRGV0YWlsc01tb3VudF9fX3Iza1JBXCI7XG52YXIgXzIgPSBcIm9yZGVyRGV0YWlsc1RpY2tldHNfX19tNElqS1wiO1xudmFyIF8zID0gXCJvcmRlclN1bW1hcnlCdXR0b25fX191eGpodFwiO1xudmFyIF80ID0gXCJvcmRlclN1bW1hcnlQdXJjaGFzZWRJbmZvX19fX1JCWEVcIjtcbnZhciBfNSA9IFwib3JkZXJTdW1tYXJ5VGFibGVfX19ZRG54VlwiO1xudmFyIF82ID0gXCJvcmRlclN1bW1hcnlXcmFwcGVyX19fUndJRVJcIjtcbnZhciBfNyA9IFwicmVmdW5kRGlzYWJsZWRfX19qdnJrM1wiO1xuZXhwb3J0IHsgXzEgYXMgXCJvcmRlckRldGFpbHNNbW91bnRcIiwgXzIgYXMgXCJvcmRlckRldGFpbHNUaWNrZXRzXCIsIF8zIGFzIFwib3JkZXJTdW1tYXJ5QnV0dG9uXCIsIF80IGFzIFwib3JkZXJTdW1tYXJ5UHVyY2hhc2VkSW5mb1wiLCBfNSBhcyBcIm9yZGVyU3VtbWFyeVRhYmxlXCIsIF82IGFzIFwib3JkZXJTdW1tYXJ5V3JhcHBlclwiLCBfNyBhcyBcInJlZnVuZERpc2FibGVkXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImFzc2lnblRpY2tldEJ1dHRvbl9fX3p6THNjXCI7XG52YXIgXzIgPSBcImFzc2lnblRvTWVUZXh0X19fWlBhZXhcIjtcbnZhciBfMyA9IFwiYXNzaWduZWRCeVRleHRfX19iTlo3elwiO1xudmFyIF80ID0gXCJhc3NpZ25lZFRvTWVEZXNfX19HakZrVlwiO1xudmFyIF81ID0gXCJhc3NpZ25lZFRvTWVXcmFwcGVyX19fVXhjMnlcIjtcbnZhciBfNiA9IFwiYmZGZWF0dXJlX19fZUVpbkVcIjtcbnZhciBfNyA9IFwiYmZGZWF0dXJlV3JhcHBlcl9fX3FXazlWXCI7XG52YXIgXzggPSBcImNoZWNrYm94X19fWFpKcGJcIjtcbnZhciBfOSA9IFwiZGlzYWJsZWRSZWZ1bmRfX19TZmZsN1wiO1xudmFyIF9hID0gXCJkaXNwbGF5X25vbmVfX19DcXBMM1wiO1xudmFyIF9iID0gXCJsYWJlbF9fX3pYRFd6XCI7XG52YXIgX2MgPSBcIm9yZGVyVGlja2V0Q29udGFpbmVyX19fWkpMemtcIjtcbnZhciBfZCA9IFwib3JkZXJUaWNrZXRJbmZvX19fZ2VtcUJcIjtcbnZhciBfZSA9IFwib3JkZXJUaWNrZXRJbmZvQ29udGFpbmVyX19fX3A2NlZcIjtcbnZhciBfZiA9IFwib3JkZXJXcmFwcGVyX19feURCQW9cIjtcbnZhciBfMTAgPSBcInJlYXNzaWduQnV0dG9uX19fUm9qTTVcIjtcbnZhciBfMTEgPSBcInJlZnVuZEJ1dHRvbnNfX19qRGw0SFwiO1xudmFyIF8xMiA9IFwicmVmdW5kTW9kYWxfX19FcWdQRlwiO1xudmFyIF8xMyA9IFwic2VsZWN0ZWRfX19IV0dOY1wiO1xudmFyIF8xNCA9IFwidGFiQnV0dG9uc19fX3hUeUpBXCI7XG52YXIgXzE1ID0gXCJ0aWNrZXRBY3Rpb25CdXR0b25zX19fcnBTTVFcIjtcbnZhciBfMTYgPSBcInRpY2tldEZvb3Rlcl9fX2ozYmRpXCI7XG52YXIgXzE3ID0gXCJ0aWNrZXRMaXN0Q29udGFpbmVyX19fY2ZtcnJcIjtcbnZhciBfMTggPSBcInRpY2tldE5vX19fYTJpTTlcIjtcbnZhciBfMTkgPSBcInRpY2tldE93bmVyRW1haWxfX19adDRPRVwiO1xudmFyIF8xYSA9IFwidGlja2V0VGlja2V0VHlwZV9fX1pxX2YwXCI7XG52YXIgXzFiID0gXCJ2aWV3RmluaXNoVGlja2V0QnV0dG9uX19fSEY2SW1cIjtcbnZhciBfMWMgPSBcInZpZXdNb3JlQnV0dG9uX19fS18xelRcIjtcbmV4cG9ydCB7IF8xIGFzIFwiYXNzaWduVGlja2V0QnV0dG9uXCIsIF8yIGFzIFwiYXNzaWduVG9NZVRleHRcIiwgXzMgYXMgXCJhc3NpZ25lZEJ5VGV4dFwiLCBfNCBhcyBcImFzc2lnbmVkVG9NZURlc1wiLCBfNSBhcyBcImFzc2lnbmVkVG9NZVdyYXBwZXJcIiwgXzYgYXMgXCJiZkZlYXR1cmVcIiwgXzcgYXMgXCJiZkZlYXR1cmVXcmFwcGVyXCIsIF84IGFzIFwiY2hlY2tib3hcIiwgXzkgYXMgXCJkaXNhYmxlZFJlZnVuZFwiLCBfYSBhcyBcImRpc3BsYXlfbm9uZVwiLCBfYiBhcyBcImxhYmVsXCIsIF9jIGFzIFwib3JkZXJUaWNrZXRDb250YWluZXJcIiwgX2QgYXMgXCJvcmRlclRpY2tldEluZm9cIiwgX2UgYXMgXCJvcmRlclRpY2tldEluZm9Db250YWluZXJcIiwgX2YgYXMgXCJvcmRlcldyYXBwZXJcIiwgXzEwIGFzIFwicmVhc3NpZ25CdXR0b25cIiwgXzExIGFzIFwicmVmdW5kQnV0dG9uc1wiLCBfMTIgYXMgXCJyZWZ1bmRNb2RhbFwiLCBfMTMgYXMgXCJzZWxlY3RlZFwiLCBfMTQgYXMgXCJ0YWJCdXR0b25zXCIsIF8xNSBhcyBcInRpY2tldEFjdGlvbkJ1dHRvbnNcIiwgXzE2IGFzIFwidGlja2V0Rm9vdGVyXCIsIF8xNyBhcyBcInRpY2tldExpc3RDb250YWluZXJcIiwgXzE4IGFzIFwidGlja2V0Tm9cIiwgXzE5IGFzIFwidGlja2V0T3duZXJFbWFpbFwiLCBfMWEgYXMgXCJ0aWNrZXRUaWNrZXRUeXBlXCIsIF8xYiBhcyBcInZpZXdGaW5pc2hUaWNrZXRCdXR0b25cIiwgXzFjIGFzIFwidmlld01vcmVCdXR0b25cIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiQ1RBQnV0dG9uV3JhcHBlcl9fX0tncTZnXCI7XG52YXIgXzIgPSBcImFjdGlvbkJ1dHRvbnNfX191N21QU1wiO1xudmFyIF8zID0gXCJhcHByb3ZlZF9fX3N4RUpXXCI7XG52YXIgXzQgPSBcImJhZGdlRmVhdHVyZV9fX3RMaEVwXCI7XG52YXIgXzUgPSBcImJhZGdlRmVhdHVyZVdyYXBwZXJfX19fOUdiRFwiO1xudmFyIF82ID0gXCJidXR0b25QaWxsX19fTGVzYXpcIjtcbnZhciBfNyA9IFwiY2FuY2VsQnV0dG9uX19feWZoWWJcIjtcbnZhciBfOCA9IFwiY29udGludWVCdXR0b25fX19OeVgzc1wiO1xudmFyIF85ID0gXCJkZWxldGVJY29uX19fRlN3eWVcIjtcbnZhciBfYSA9IFwicGVuZGluZ19fX2FFYld3XCI7XG52YXIgX2IgPSBcInJlZnVuZERldGFpbF9fX2NRMjhWXCI7XG52YXIgX2MgPSBcInJlZnVuZEVycm9yTXNnX19fQWFoenJcIjtcbnZhciBfZCA9IFwicmVmdW5kU3VjY2Vzc2Z1bF9fX3pyRFFZXCI7XG52YXIgX2UgPSBcInJlZnVuZFRleHRfX19hRW5MOVwiO1xudmFyIF9mID0gXCJyZWZ1bmRUaWNrZXRBdHRlbmRlZV9fX1FYQ2pNXCI7XG52YXIgXzEwID0gXCJyZWZ1bmRUaWNrZXRCb3hDb250YWluZXJfX195YTYxM1wiO1xudmFyIF8xMSA9IFwicmVqZWN0ZWRfX19OSkU0WlwiO1xudmFyIF8xMiA9IFwic3VidGl0bGVfX19QdERlMlwiO1xudmFyIF8xMyA9IFwic3VjY2Vzc01zZ19fX0h0TXNlXCI7XG52YXIgXzE0ID0gXCJzdWNjZXNzTXNnMl9fX1E2em5hXCI7XG52YXIgXzE1ID0gXCJ0aWNrZXRMaXN0X19fZURRUjNcIjtcbnZhciBfMTYgPSBcInRpY2tldE5vX19fX0VBRDRcIjtcbmV4cG9ydCB7IF8xIGFzIFwiQ1RBQnV0dG9uV3JhcHBlclwiLCBfMiBhcyBcImFjdGlvbkJ1dHRvbnNcIiwgXzMgYXMgXCJhcHByb3ZlZFwiLCBfNCBhcyBcImJhZGdlRmVhdHVyZVwiLCBfNSBhcyBcImJhZGdlRmVhdHVyZVdyYXBwZXJcIiwgXzYgYXMgXCJidXR0b25QaWxsXCIsIF83IGFzIFwiY2FuY2VsQnV0dG9uXCIsIF84IGFzIFwiY29udGludWVCdXR0b25cIiwgXzkgYXMgXCJkZWxldGVJY29uXCIsIF9hIGFzIFwicGVuZGluZ1wiLCBfYiBhcyBcInJlZnVuZERldGFpbFwiLCBfYyBhcyBcInJlZnVuZEVycm9yTXNnXCIsIF9kIGFzIFwicmVmdW5kU3VjY2Vzc2Z1bFwiLCBfZSBhcyBcInJlZnVuZFRleHRcIiwgX2YgYXMgXCJyZWZ1bmRUaWNrZXRBdHRlbmRlZVwiLCBfMTAgYXMgXCJyZWZ1bmRUaWNrZXRCb3hDb250YWluZXJcIiwgXzExIGFzIFwicmVqZWN0ZWRcIiwgXzEyIGFzIFwic3VidGl0bGVcIiwgXzEzIGFzIFwic3VjY2Vzc01zZ1wiLCBfMTQgYXMgXCJzdWNjZXNzTXNnMlwiLCBfMTUgYXMgXCJ0aWNrZXRMaXN0XCIsIF8xNiBhcyBcInRpY2tldE5vXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImNsb3NlQnRuX19feVNRQ09cIjtcbnZhciBfMiA9IFwiaGVhZGVyX19fZkJYRzlcIjtcbnZhciBfMyA9IFwidGl0bGVfX190eVplUVwiO1xudmFyIF80ID0gXCJ3cmFwcGVyX19fUk9KR3NcIjtcbmV4cG9ydCB7IF8xIGFzIFwiY2xvc2VCdG5cIiwgXzIgYXMgXCJoZWFkZXJcIiwgXzMgYXMgXCJ0aXRsZVwiLCBfNCBhcyBcIndyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwic3VtbWl0VGl0bGVEYXRlX19fWG5ycEZcIjtcbnZhciBfMiA9IFwid2lkZ2V0SGVhZGVyX19fZ2dMdE1cIjtcbmV4cG9ydCB7IF8xIGFzIFwic3VtbWl0VGl0bGVEYXRlXCIsIF8yIGFzIFwid2lkZ2V0SGVhZGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcInVuYXNzaWduQnRuX19faTdtZ3lcIjtcbnZhciBfMiA9IFwidW5hc3NpZ25XcmFwcGVyX19fZzNlMnVcIjtcbnZhciBfMyA9IFwid3JhcHBlcl9fX1c5NFNMXCI7XG5leHBvcnQgeyBfMSBhcyBcInVuYXNzaWduQnRuXCIsIF8yIGFzIFwidW5hc3NpZ25XcmFwcGVyXCIsIF8zIGFzIFwid3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJoZWFkZXJOb3RlX19fQWU1RUFcIjtcbnZhciBfMiA9IFwib3JkZXJOb19fX1ZPUFJ3XCI7XG52YXIgXzMgPSBcInB1cmNoYXNlZEJ5X19fTU5pSFRcIjtcbnZhciBfNCA9IFwicHVyY2hhc2VkQnlXcmFwcGVyX19fRGg2SFVcIjtcbnZhciBfNSA9IFwid3JhcHBlcl9fX21WdWlaXCI7XG5leHBvcnQgeyBfMSBhcyBcImhlYWRlck5vdGVcIiwgXzIgYXMgXCJvcmRlck5vXCIsIF8zIGFzIFwicHVyY2hhc2VkQnlcIiwgXzQgYXMgXCJwdXJjaGFzZWRCeVdyYXBwZXJcIiwgXzUgYXMgXCJ3cmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcInRpY2tldFJlYXNzaWduQ29udGFpbmVyX19fZ090YUpcIjtcbmV4cG9ydCB7IF8xIGFzIFwidGlja2V0UmVhc3NpZ25Db250YWluZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwid3JhcHBlcl9fX0V3T1J6XCI7XG5leHBvcnQgeyBfMSBhcyBcIndyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiaW5mb05vdGVfX19pMVhZOVwiO1xudmFyIF8yID0gXCJ3cmFwcGVyX19fTUF1TlNcIjtcbmV4cG9ydCB7IF8xIGFzIFwiaW5mb05vdGVcIiwgXzIgYXMgXCJ3cmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImFjdGlvbkJ1dHRvbnNDb250YWluZXJfX19BdXZyblwiO1xudmFyIF8yID0gXCJhZGRpdGlvbmFsRGV0YWlsc19fX21QMWlKXCI7XG52YXIgXzMgPSBcImF0dGVuZGVlQ29udGFpbmVyX19fUTBWVXpcIjtcbnZhciBfNCA9IFwiYXR0ZW5kZWVJbmZvVGl0bGVfX19MbXJtNFwiO1xudmFyIF81ID0gXCJjbG9zZUJ0bl9fX1dOSmxFXCI7XG52YXIgXzYgPSBcImNvcHlCdG5fX19fdXRBNlwiO1xudmFyIF83ID0gXCJkZWxlZ2F0ZWRUb19fX1NHVlFJXCI7XG52YXIgXzggPSBcImRvd25sb2FkQnRuX19fcWpZaHpcIjtcbnZhciBfOSA9IFwiaGVhZGVyX19fQXVnbnpcIjtcbnZhciBfYSA9IFwib3JkZXJOdW1iZXJfX19MNVE1YVwiO1xudmFyIF9iID0gXCJxckNvZGVfX19md3FacVwiO1xudmFyIF9jID0gXCJxck5vdGVfX19HYzdLblwiO1xudmFyIF9kID0gXCJzZW5kQnRuX19fa29XTTJcIjtcbnZhciBfZSA9IFwic2VudF9fX2s2V0t4XCI7XG52YXIgX2YgPSBcInN0YXR1c19fX2t3Qzh5XCI7XG52YXIgXzEwID0gXCJzdWJ0aXRsZV9fX3lfTnVPXCI7XG52YXIgXzExID0gXCJ0aWNrZXREZXRhaWxDb250YWluZXJfX19iMlRMUlwiO1xudmFyIF8xMiA9IFwidGl0bGVfX193UXpVTlwiO1xuZXhwb3J0IHsgXzEgYXMgXCJhY3Rpb25CdXR0b25zQ29udGFpbmVyXCIsIF8yIGFzIFwiYWRkaXRpb25hbERldGFpbHNcIiwgXzMgYXMgXCJhdHRlbmRlZUNvbnRhaW5lclwiLCBfNCBhcyBcImF0dGVuZGVlSW5mb1RpdGxlXCIsIF81IGFzIFwiY2xvc2VCdG5cIiwgXzYgYXMgXCJjb3B5QnRuXCIsIF83IGFzIFwiZGVsZWdhdGVkVG9cIiwgXzggYXMgXCJkb3dubG9hZEJ0blwiLCBfOSBhcyBcImhlYWRlclwiLCBfYSBhcyBcIm9yZGVyTnVtYmVyXCIsIF9iIGFzIFwicXJDb2RlXCIsIF9jIGFzIFwicXJOb3RlXCIsIF9kIGFzIFwic2VuZEJ0blwiLCBfZSBhcyBcInNlbnRcIiwgX2YgYXMgXCJzdGF0dXNcIiwgXzEwIGFzIFwic3VidGl0bGVcIiwgXzExIGFzIFwidGlja2V0RGV0YWlsQ29udGFpbmVyXCIsIF8xMiBhcyBcInRpdGxlXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImJ1dHRvbkNhbmNlbGxlZF9fX0VybERaXCI7XG52YXIgXzIgPSBcImJ1dHRvbkNvbXBsZXRlX19fbGxXa1pcIjtcbnZhciBfMyA9IFwiYnV0dG9uSW5jb21wbGV0ZV9fX1RvbEhnXCI7XG52YXIgXzQgPSBcImJ1dHRvblBpbGxfX196cTJ0Y1wiO1xudmFyIF81ID0gXCJidXR0b25SZWZ1bmRSZXF1ZXN0ZWRfX19wV3QzMFwiO1xudmFyIF82ID0gXCJidXR0b25VbmFzc2lnbmVkX19fWURkOFhcIjtcbnZhciBfNyA9IFwidGlja2V0U3RhdHVzQ29udGFpbmVyX19fcWo2ZmJcIjtcbmV4cG9ydCB7IF8xIGFzIFwiYnV0dG9uQ2FuY2VsbGVkXCIsIF8yIGFzIFwiYnV0dG9uQ29tcGxldGVcIiwgXzMgYXMgXCJidXR0b25JbmNvbXBsZXRlXCIsIF80IGFzIFwiYnV0dG9uUGlsbFwiLCBfNSBhcyBcImJ1dHRvblJlZnVuZFJlcXVlc3RlZFwiLCBfNiBhcyBcImJ1dHRvblVuYXNzaWduZWRcIiwgXzcgYXMgXCJ0aWNrZXRTdGF0dXNDb250YWluZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiYWN0aXZlX19fdEx5V1pcIjtcbnZhciBfMiA9IFwidGFiT3B0aW9uX19fSDRIMXVcIjtcbnZhciBfMyA9IFwidGFiV3JhcHBlcl9fX3UyMXNHXCI7XG5leHBvcnQgeyBfMSBhcyBcImFjdGl2ZVwiLCBfMiBhcyBcInRhYk9wdGlvblwiLCBfMyBhcyBcInRhYldyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwidGlja2V0c1RpdGxlVGV4dF9fX1REUG1wXCI7XG5leHBvcnQgeyBfMSBhcyBcInRpY2tldHNUaXRsZVRleHRcIiB9XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0V2l0aG91dFByb3BlcnRpZXNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NoZWNrQ2lyY2xlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2xvc2VcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9Db250ZW50Q29weVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Vycm9yXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXhwYW5kTW9yZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ZpbHRlckxpc3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9JbXBvcnRFeHBvcnRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9JbmZvXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvU2VhcmNoXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWxcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9CdXR0b25cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9DaGVja2JveFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL0RpYWxvZ1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL0RpYWxvZ0FjdGlvbnNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9EaWFsb2dDb250ZW50XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvRGlhbG9nQ29udGVudFRleHRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9EaWFsb2dUaXRsZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL0RpdmlkZXJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9JbnB1dEJhc2VcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9TdGFja1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL1RhYlwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL1RhYnNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9Ub29sdGlwXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvdXNlTWVkaWFRdWVyeVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAcmVkdXhqcy90b29sa2l0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBzZW50cnkvcmVhY3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZm9ybWlrXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImkxOG5leHRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiaTE4bmV4dC1icm93c2VyLWxhbmd1YWdlZGV0ZWN0b3JcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiaWR0b2tlbi12ZXJpZmllclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb21lbnQtdGltZXpvbmVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9jb21wb25lbnRzL3Jhdy1odG1sXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvYWN0aW9uc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L21ldGhvZHNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9hY3Rpb25zXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvbWV0aG9kc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL3F1ZXJ5LWFjdGlvbnNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicC1saW1pdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJwcm9wLXR5cGVzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LWkxOG5leHRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QtaW5maW5pdGUtc2Nyb2xsLWNvbXBvbmVudFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC1xci1jb2RlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LXJlZHV4XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0L2pzeC1ydW50aW1lXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlZHV4XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlZHV4LXBlcnNpc3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVkdXgtcGVyc2lzdC9pbnRlZ3JhdGlvbi9yZWFjdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWR1eC1wZXJzaXN0L2xpYi9zdG9yYWdlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInl1cFwiKTsiLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiLy8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbl9fd2VicGFja19yZXF1aXJlX18ubiA9IChtb2R1bGUpID0+IHtcblx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG5cdFx0KCkgPT4gKG1vZHVsZVsnZGVmYXVsdCddKSA6XG5cdFx0KCkgPT4gKG1vZHVsZSk7XG5cdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsIHsgYTogZ2V0dGVyIH0pO1xuXHRyZXR1cm4gZ2V0dGVyO1xufTsiLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwiLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gKGV4cG9ydHMpID0+IHtcblx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG5cdH1cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbn07IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cbmltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IFByb3ZpZGVyIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyBQZXJzaXN0R2F0ZSB9IGZyb20gXCJyZWR1eC1wZXJzaXN0L2ludGVncmF0aW9uL3JlYWN0XCI7XG5pbXBvcnQgeyBTdHlsZWRFbmdpbmVQcm92aWRlciB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VJbml0U3RvcmUgfSBmcm9tIFwiLi9zdG9yZVwiO1xuaW1wb3J0IHsgUkVTRVRfU1RBVEUsIHNldFJlZHVjZXJTdGF0ZSB9IGZyb20gXCIuL2FjdGlvbnNcIjtcblxuaW1wb3J0IFdpZGdldFdyYXBwZXIgZnJvbSBcIi4vY29tcG9uZW50cy9XaWRnZXRXcmFwcGVyXCI7XG5cbmNvbnN0IE15T3JkZXJzTXlUaWNrZXRzV2lkZ2V0ID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBsb2dpblVybCxcbiAgICBzdXBwb3J0RW1haWwsXG4gICAgc3VtbWl0LFxuICAgIGFwaUJhc2VVcmwsXG4gICAgdXNlcixcbiAgICBjbGllbnRJZCxcbiAgICB1cGRhdGVQcm9maWxlXG4gIH0gPSBwcm9wcztcblxuICBjb25zdCB7IHN0b3JlLCBwZXJzaXN0b3IgfSA9IHVzZUluaXRTdG9yZSh7XG4gICAgbG9naW5VcmwsXG4gICAgc3VwcG9ydEVtYWlsLFxuICAgIHN1bW1pdCxcbiAgICB1c2VyLFxuICAgIGFwaUJhc2VVcmwsXG4gICAgY2xpZW50SWQsXG4gICAgdXBkYXRlUHJvZmlsZVxuICB9KTtcblxuICBjb25zdCBoYW5kbGVCZWZvcmVMaWZ0ID0gKCkgPT4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7XG4gICAgY29uc3QgZmx1c2ggPSBwYXJhbXMuaGFzKFwiZmx1c2hTdGF0ZVwiKTtcbiAgICBpZiAoZmx1c2gpIHN0b3JlLmRpc3BhdGNoKHsgdHlwZTogUkVTRVRfU1RBVEUsIHBheWxvYWQ6IG51bGwgfSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzdG9yZS5kaXNwYXRjaChzZXRSZWR1Y2VyU3RhdGUoc3VtbWl0LCB1c2VyKSk7XG4gIH0sIFtzdW1taXQsIHVzZXJdKTtcblxuICByZXR1cm4gKFxuICAgIDxQcm92aWRlciBzdG9yZT17c3RvcmV9PlxuICAgICAgPFBlcnNpc3RHYXRlXG4gICAgICAgIG9uQmVmb3JlTGlmdD17aGFuZGxlQmVmb3JlTGlmdH1cbiAgICAgICAgbG9hZGluZz17bnVsbH1cbiAgICAgICAgcGVyc2lzdG9yPXtwZXJzaXN0b3J9XG4gICAgICA+XG4gICAgICAgIDxTdHlsZWRFbmdpbmVQcm92aWRlciBpbmplY3RGaXJzdD5cbiAgICAgICAgICA8V2lkZ2V0V3JhcHBlciAvPlxuICAgICAgICA8L1N0eWxlZEVuZ2luZVByb3ZpZGVyPlxuICAgICAgPC9QZXJzaXN0R2F0ZT5cbiAgICA8L1Byb3ZpZGVyPlxuICApO1xufTtcblxuTXlPcmRlcnNNeVRpY2tldHNXaWRnZXQucHJvcFR5cGVzID0ge1xuICBsb2dpblVybDogUHJvcFR5cGVzLnN0cmluZyxcbiAgc3VwcG9ydEVtYWlsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIGFwaUJhc2VVcmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHVzZXI6IFByb3BUeXBlcy5vYmplY3QsXG4gIGNsaWVudElkOiBQcm9wVHlwZXMuc3RyaW5nLFxuICB1cGRhdGVQcm9maWxlOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgTXlPcmRlcnNNeVRpY2tldHNXaWRnZXQ7XG4iXSwibmFtZXMiOlsiYXV0aEVycm9ySGFuZGxlciIsImNyZWF0ZUFjdGlvbiIsImRlbGV0ZVJlcXVlc3QiLCJnZXRSZXF1ZXN0IiwicHV0UmVxdWVzdCIsInN0YXJ0TG9hZGluZyIsInN0b3BMb2FkaW5nIiwicExpbWl0IiwiZ2V0SWRUb2tlbiIsIm9iamVjdFRvUXVlcnlTdHJpbmciLCJJZFRva2VuVmVyaWZpZXIiLCJpMThuIiwiYXV0aFByb21pc2VSZWplY3QiLCJnZXRBY2Nlc3NUb2tlblNhZmVseSIsIkRFRkFVTFRfSVRFTVNfUEVSX1BBR0UiLCJFUlJPUl9DT0RFUyIsIkZJRlRZX1BFUl9QQUdFIiwiRklMVEVSX0FDVElPTiIsIkZJUlNUX1BBR0UiLCJQUk9NSVNFX0JBVENIX0xJTUlUIiwiUkVTRVRfU1RBVEUiLCJSRVNFVF9GSUxURVIiLCJSRVNFVF9BUElfRVJST1IiLCJTRVRfU1RBVEUiLCJTRVRfQVBJX0VSUk9SIiwiQ0hBTkdFX0ZJTFRFUiIsIkNIQU5HRV9TT1JUIiwiR0VUX1VTRVJfT1JERVJTIiwiUkVGVU5EX09SREVSIiwiU0VUX0FDVElWRV9PUkRFUl9JRCIsIkZJTFRFUl9VU0VSX09SREVSUyIsIkdFVF9NWV9BU1NJR05FRF9USUNLRVRTIiwiVVBEQVRFX1RJQ0tFVCIsIlJFU0VUX1RJQ0tFVCIsIlJFQ0VJVkVfVElDS0VUIiwiUkVNT1ZFX1RJQ0tFVF9BVFRFTkRFRSIsIkFTU0lHTl9USUNLRVQiLCJERUxFR0FURV9USUNLRVQiLCJSRUZVTkRfVElDS0VUIiwiUkVTRU5EX05PVElGSUNBVElPTiIsIkdFVF9USUNLRVRTX0JZX09SREVSIiwiR0VUX1RJQ0tFVFNfQllfT1JERVJfRVJST1IiLCJHRVRfT1JERVJfVElDS0VUX0RFVEFJTFMiLCJHRVRfVElDS0VUX0RFVEFJTFMiLCJSRUNFSVZFX0VYVFJBX1FVRVNUSU9OUyIsIlRJQ0tFVF9BVFRFTkRFRV9LRVlTIiwiZW1haWwiLCJmaXJzdE5hbWUiLCJsYXN0TmFtZSIsImNvbXBhbnkiLCJkaXNjbGFpbWVyQWNjZXB0ZWQiLCJleHRyYVF1ZXN0aW9ucyIsIlVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURUQiLCJTVEFSVF9MT0FESU5HX0lEUF9QUk9GSUxFIiwiU1RPUF9MT0FESU5HX0lEUF9QUk9GSUxFIiwiVVBEQVRFX0lEUF9QUk9GSUxFIiwiU0VUX1VTRVIiLCJTRVRfU1VNTUlUIiwiR0VUX01BSU5fRVhUUkFfUVVFU1RJT05TIiwiUkVDRUlWRV9NQVJLRVRJTkdfU0VUVElOR1MiLCJDTEVBUl9NQVJLRVRJTkdfU0VUVElOR1MiLCJyZXNldFRpY2tldCIsImRpc3BhdGNoIiwicmVzZXRTdGF0ZSIsInJlc2V0RmlsdGVyIiwicmVzZXRFcnJvciIsInNldFJlZHVjZXJTdGF0ZSIsInN1bW1pdCIsInVzZXIiLCJGSUxURVJfVkFSX0RBVEUiLCJGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkUiLCJGSUxURVJfVkFSX1RJQ0tFVF9UWVBFIiwiRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORUQiLCJGSUxURVJfVkFSX09XTkVSX1NUQVRVUyIsIkZJTFRFUl9WQVJfUFJPTU9DT0RFIiwiRklMVEVSX1ZBUl9GUkVFX1BBSUQiLCJGSUxURVJfVkFSX09SREVSX05VTUJFUiIsImNoYW5nZUZpbHRlciIsImZpbHRlciIsImNoYW5nZVNvcnQiLCJzb3J0IiwicGFyc2VGaWx0ZXIiLCJmaWx0ZXJPYmoiLCJmaWx0ZXJBY3Rpb24iLCJwdXNoIiwiY29uY2F0IiwibG93ZXIiLCJ1cHBlciIsImxlbmd0aCIsImZpbHRlck5hbWUiLCJPUkRFUlMiLCJqb2luIiwiaW5wdXRGaWx0ZXJzIiwiVElDS0VUU19CWV9PUkRFUlMiLCJFWFRFUk5BTF9USUNLRVRTIiwiZ2V0U29ydERpcmVjdGlvbiIsImRpcmVjdGlvbiIsImVycm9ySGFuZGxlck5vdGlmeSIsInBheWxvYWQiLCJjYWxsYmFjayIsImN1c3RvbUF1dGhFcnJvckhhbmRsZXIiLCJlcnIiLCJyZXMiLCJjdXN0b21GZXRjaEVycm9ySGFuZGxlciIsInJlc3BvbnNlIiwiY29kZSIsInN0YXR1cyIsIm1zZyIsInQiLCJPYmplY3QiLCJlbnRyaWVzIiwiZXJyb3JzIiwiZm9yRWFjaCIsIl9yZWYiLCJrZXkiLCJ2YWx1ZSIsIk51bWJlciIsImlzTmFOIiwic3RhdHVzVGV4dCIsInRpdGxlIiwiaHRtbCIsImdldFVzZXJPcmRlcnMiLCJfcmVmMiIsInNraXBMb2FkaW5nIiwicGFnZSIsInBlclBhZ2UiLCJnZXRTdGF0ZSIsIl9yZWYzIiwiYXBpQmFzZVVybCIsIndpZGdldFN0YXRlIiwiYWNjZXNzVG9rZW4iLCJwYXJhbXMiLCJhY2Nlc3NfdG9rZW4iLCJvcmRlciIsInJlbGF0aW9ucyIsImZpZWxkcyIsInBlcl9wYWdlIiwia2V5cyIsImZpbHRlcnMiLCJuYW1lIiwiaWQiLCJ0aGVuIiwiY2F0Y2giLCJlIiwiZmluYWxseSIsInNldEFjdGl2ZU9yZGVySWQiLCJvcmRlcklkIiwic2V0VXNlciIsImdldFVzZXJUaWNrZXRzIiwiX3JlZjQiLCJfcmVmNSIsInVzZXJQcm9maWxlIiwiUHJvbWlzZSIsInJlamVjdCIsImV4cGFuZCIsImdldFRpY2tldHNCeU9yZGVyIiwiX3JlZjYiLCJfcmVmNyIsInJlc2VuZE5vdGlmaWNhdGlvbiIsInRpY2tldCIsIl9yZWY4IiwibWVzc2FnZSIsIm9yZGVyX2lkIiwicmVmdW5kVGlja2V0IiwiX3JlZjkiLCJfcmVmMTAiLCJyZWZ1bmRCdWxrVGlja2V0cyIsIl9yZWYxMSIsInRpY2tldHMiLCJsaW1pdCIsImFsbFJlZnVuZFRpY2tldENhbGxzIiwibWFwIiwiYWxsIiwic3VjY2Vzc2Z1bGx5UmVxdWVzdGVkIiwiciIsIl9yJHJlc3BvbnNlIiwicmVmdW5kX3JlcXVlc3RzIiwidXBkYXRlVGlja2V0c1JlZnVuZFJlcXVlc3RlZCIsInRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQiLCJnZXRFeHRyYVF1ZXN0aW9ucyIsImF0dGVuZGVlSWQiLCJfcmVmMTIiLCJlbmRwb2ludCIsImdldFRpY2tldCIsInRpY2tldElkIiwiX3JlZjEzIiwibm9ybWFsaXplVGlja2V0IiwiZW50aXR5Iiwibm9ybWFsaXplZEVudGl0eSIsIl9vYmplY3RTcHJlYWQiLCJhdHRlbmRlZV9jb21wYW55IiwiYXR0ZW5kZWVfY29tcGFueV9pZCIsInJlZnJlc2hQcm9maWxlIiwiZGF0YSIsInRpY2tldE93bmVyIiwiX3JlZjE0IiwiX3RpY2tldE93bmVyJG1hbmFnZXIiLCJ1cGRhdGVQcm9maWxlIiwiYXR0ZW5kZWVfZW1haWwiLCJhdHRlbmRlZV9maXJzdF9uYW1lIiwiYXR0ZW5kZWVfbGFzdF9uYW1lIiwiaGFzTWFuYWdlciIsIm1hbmFnZXIiLCJtYW5hZ2VyX2lkIiwiaXRzTWUiLCJwcm9maWxlQ2hhbmdlZCIsImZpcnN0X25hbWUiLCJsYXN0X25hbWUiLCJuZXdQcm9maWxlIiwic2F2ZVRpY2tldERldGFpbHMiLCJhbnN3ZXJzIiwiX3JlZjE1IiwiaWRUb2tlbiIsInZlcmlmaWVyIiwiand0IiwiZGVjb2RlIiwiY29uc29sZSIsImxvZyIsIm93bmVyIiwiYXNzaWduQXR0ZW5kZWUiLCJhcmd1bWVudHMiLCJ1bmRlZmluZWQiLCJfcmVmMTYiLCJyZW1vdmVUaWNrZXQiLCJfcmVmMTciLCJyZWFzc2lnblRpY2tldCIsInVuYXNzaWduVGlja2V0IiwiZGVsZWdhdGVUaWNrZXQiLCJfcmVmMTgiLCJzYXZlRXh0cmFRdWVzdGlvbnMiLCJfcmVmMTkiLCJub3JtYWxpemVkQW5zIiwiZ2V0VGlja2V0UERGIiwiX3JlZjIwIiwicXVlcnlTdHJpbmciLCJhcGlVcmwiLCJmZXRjaCIsInJlc3BvbnNlVHlwZSIsImhlYWRlcnMiLCJvayIsImJsb2IiLCJwZGYiLCJsaW5rIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwidXJsIiwid2luZG93IiwiVVJMIiwiY3JlYXRlT2JqZWN0VVJMIiwiaHJlZiIsImRvd25sb2FkIiwiZGlzcGF0Y2hFdmVudCIsIk1vdXNlRXZlbnQiLCJSZWFjdCIsIkJ1dHRvbiIsIkRpYWxvZyIsIkRpYWxvZ0FjdGlvbnMiLCJEaWFsb2dDb250ZW50IiwiRGlhbG9nQ29udGVudFRleHQiLCJEaWFsb2dUaXRsZSIsInVzZVRyYW5zbGF0aW9uIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkNvbmZpcm1EaWFsb2ciLCJvcGVuIiwiYm9keSIsIm9uQ2xvc2UiLCJvbkNvbmZpcm0iLCJjaGlsZHJlbiIsIm9uQ2xpY2siLCJhdXRvRm9jdXMiLCJQcm9wVHlwZXMiLCJDb250ZW50Q29weUljb24iLCJUb29sdGlwIiwiTUlMTElTRUNfVE9fU0VDIiwic3R5bGVzIiwiZGVmYXVsdFdpZHRoIiwiQ29weVRleHQiLCJ0ZXh0IiwidG9vbHRpcFRleHQiLCJoaWRlQ29weSIsInRydW5jYXRlZCIsInJldmVyc2VkIiwid2lkdGgiLCJ0b29sdGlwVGV4dFRvVXNlIiwidG9vbHRpcCIsInNldFRvb2x0aXAiLCJ1c2VTdGF0ZSIsImNsYXNzTmFtZXMiLCJoYW5kbGVDb3B5IiwibmF2aWdhdG9yIiwiY2xpcGJvYXJkIiwid3JpdGVUZXh0Iiwic2V0VGltZW91dCIsImNsYXNzTmFtZSIsIndyYXBwZXIiLCJzdHlsZSIsImNvcHlJY29uIiwicHJvcFR5cGVzIiwic3RyaW5nIiwiYm9vbCIsIm51bWJlciIsImNyZWF0ZUNvbnRleHQiLCJDdXN0b21Ob3RpZmljYXRpb25Db250ZXh0IiwiQWxlcnQiLCJTbmFja2JhciIsIlR5cG9ncmFwaHkiLCJDaGVja0NpcmNsZUljb24iLCJFcnJvckljb24iLCJDdXN0b21Ob3RpZmljYXRpb24iLCJzZXZlcml0eSIsImFuY2hvck9yaWdpbiIsInZlcnRpY2FsIiwiaG9yaXpvbnRhbCIsImF1dG9IaWRlRHVyYXRpb24iLCJ2YXJpYW50Iiwic3giLCJiYWNrZ3JvdW5kQ29sb3IiLCJpY29uTWFwcGluZyIsInN1Y2Nlc3MiLCJmb250U2l6ZSIsImVycm9yIiwiZnVuYyIsIlRoZW1lUHJvdmlkZXIiLCJjcmVhdGVUaGVtZSIsImRhcmtDb2xvciIsInJvb3QiLCJkb2N1bWVudEVsZW1lbnQiLCJnZXRDb21wdXRlZFN0eWxlIiwiZ2V0UHJvcGVydHlWYWx1ZSIsInRoZW1lIiwicGFsZXR0ZSIsInByaW1hcnkiLCJtYWluIiwic2Vjb25kYXJ5IiwidHlwb2dyYXBoeSIsImJvZHkxIiwiZm9udFdlaWdodCIsImg1IiwibWFyZ2luQm90dG9tIiwiaDYiLCJjb21wb25lbnRzIiwiTXVpRm9ybUhlbHBlclRleHQiLCJzdHlsZU92ZXJyaWRlcyIsIk11aUJ1dHRvbiIsImxpbmVIZWlnaHQiLCJNdWlUYWIiLCJjb2xvciIsIk11aVRhYnMiLCJpbmRpY2F0b3IiLCJDdXN0b21UaGVtZSIsIm5vZGUiLCJpc1JlcXVpcmVkIiwiQ2hlY2tib3giLCJGb3JtQ29udHJvbCIsIkZvcm1Db250cm9sTGFiZWwiLCJGb3JtR3JvdXAiLCJGb3JtSGVscGVyVGV4dCIsIkZvcm1MYWJlbCIsIlJhd0hUTUwiLCJnZXRMYWJlbCIsInRvU2x1ZyIsIkNoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQiLCJfcXVlc3Rpb24kdmFsdWVzIiwicXVlc3Rpb24iLCJxdWVzdGlvbkNsYXNzTmFtZSIsImlzRGlzYWJsZWQiLCJvbkNoYW5nZSIsInNldEZpZWxkVmFsdWUiLCJoZWxwZXJUZXh0IiwicmVzdCIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsInF1ZXN0aW9uU2x1ZyIsInF1ZXN0aW9uTGFiZWwiLCJtYW5kYXRvcnkiLCJxdWVzdGlvbk1heFZhbHVlcyIsIm1heF9zZWxlY3RlZF92YWx1ZXMiLCJxdWVzdGlvbk9wdGlvbnMiLCJ2YWx1ZXMiLCJ2YWwiLCJsYWJlbCIsInRvU3RyaW5nIiwiaGFuZGxlQ2hlY2tib3hMaXN0Q2hhbmdlIiwiY2hlY2tlZCIsImN1cnJlbnRBbnMiLCJtYXhTZWxlY3Rpb25SZWFjaGVkIiwibmV3VmFsdWUiLCJ2IiwiZGlzYWJsZWQiLCJyZXF1aXJlZCIsImZ1bGxXaWR0aCIsIm1hcmdpbiIsIm9wIiwiY29udHJvbCIsImluY2x1ZGVzIiwiZXYiLCJ0YXJnZXQiLCJvYmplY3QiLCJhcnJheSIsIkNoZWNrYm94UXVlc3Rpb25GaWVsZCIsImFsaWduSXRlbXMiLCJtYXJnaW5Ub3AiLCJJbnB1dExhYmVsIiwiTWVudUl0ZW0iLCJTZWxlY3QiLCJEcm9wZG93blF1ZXN0aW9uRmllbGQiLCJsYWJlbElkIiwiUmFkaW8iLCJSYWRpb0dyb3VwIiwiUmFkaW9MaXN0UXVlc3Rpb25GaWVsZCIsIlRleHRGaWVsZCIsIlRleHRRdWVzdGlvbkZpZWxkIiwiUXVlc3Rpb25UeXBlX0NoZWNrYm94IiwiUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCIsIlF1ZXN0aW9uVHlwZV9Db21ib0JveCIsIlF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3giLCJRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0IiwiY2hlY2tSdWxlIiwicnVsZSIsImFuc3dlcl92YWx1ZXMiLCJBcnJheSIsImlzQXJyYXkiLCJhbnN3ZXJfdmFsdWVzX29wZXJhdG9yIiwiY2hlY2tWaXNpYmlsaXR5IiwicnVsZVJlc3VsdCIsInZpc2liaWxpdHkiLCJ2aXNpYmlsaXR5X2NvbmRpdGlvbiIsInF1ZXN0aW9uSWQiLCJ0ZXh0TEMiLCJ0b0xvd2VyQ2FzZSIsInJlcGxhY2UiLCJxIiwiX3EkbGFiZWwiLCJpc0Fuc3dlcmVkIiwiYW5zd2VyIiwiY2hlY2tJZlZhbHVlTWF0Y2giLCJjb21wYXJlVmFsIiwiYW5zd2VyQXJyYXkiLCJzb21lIiwiZ2V0VHlwZUluaXRpYWxWYWx1ZSIsInR5cGUiLCJnZXRUeXBlVmFsdWUiLCJhbnMiLCJzcGxpdCIsInRyYW5zZm9ybUFud2Vyc0Zvcm1hdCIsImRpc2NsYWltZXJfYWNjZXB0ZWQiLCJleHRyYV9xdWVzdGlvbnMiLCJmb3JtYXR0ZWRFUSIsInF1ZXN0aW9uX2lkIiwicGFyc2VJbnQiLCJwb3AiLCJRdWVzdGlvblR5cGVfVGV4dCIsIlF1ZXN0aW9uVHlwZV9UZXh0QXJlYSIsIlF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbiIsImdldFF1ZXN0aW9uRmllbGRDb21wb25lbnQiLCJxdWVzdGlvblR5cGUiLCJGcmFnbWVudCIsIkV4dHJhUXVlc3Rpb25zRmllbGRzIiwib3JpZ2luYWxBbnN3ZXJzIiwicmVhZE9ubHkiLCJhbGxvd0VkaXQiLCJmb3JtaWsiLCJyZW5kZXJSdWxlIiwiaXNWaXNpYmxlIiwicmVuZGVyUXVlc3Rpb24iLCJzdWJfcXVlc3Rpb24iLCJfcSRzdWJfcXVlc3Rpb25fcnVsZXMiLCJRdWVzdGlvbkZpZWxkQ29tcG9uZW50IiwiZm9ybWlrUHJvcHMiLCJoYW5kbGVDaGFuZ2UiLCJvbkJsdXIiLCJoYW5kbGVCbHVyIiwidG91Y2hlZCIsIkJvb2xlYW4iLCJzdWJfcXVlc3Rpb25fcnVsZXMiLCJ1c2VTZWxlY3RvciIsInNoYWxsb3dFcXVhbCIsIkJveCIsIkNhcmRIZWFkZXIiLCJJY29uQnV0dG9uIiwiQ29sbGFwc2UiLCJDYXJkQ29udGVudCIsIkV4cGFuZE1vcmVJY29uIiwiQXNzaWduZWRGaWx0ZXIiLCJvbkZpbHRlciIsImZpbHRlclZhbHVlcyIsInN0YXRlIiwiaXNFeHBhbmRlZCIsInNldElzRXhwYW5kZWQiLCJhc3NpZ25lZFZhbHVlcyIsImhhbmRsZUZpbHRlckNoYW5nZSIsIm5ld0ZpbHRlciIsInRpdGxlV3JhcHBlciIsImFjdGlvbiIsImRpc2FibGVSaXBwbGUiLCJ0cmFuc2Zvcm0iLCJ0cmFuc2l0aW9uIiwiaW4iLCJ0aW1lb3V0IiwidW5tb3VudE9uRXhpdCIsInB5IiwicGIiLCJhc3NpZ25lZCIsInVzZUVmZmVjdCIsIkJhZGdlRmVhdHVyZUZpbHRlciIsImJhZGdlX2ZlYXR1cmVzX3R5cGVzIiwibmV3RmlsdGVycyIsImYiLCJiZiIsInVzZVJlZiIsIlN0YWNrIiwiRmlsdGVyTGlzdEljb24iLCJCYWRnZSIsIkNhcmQiLCJEaXZpZGVyIiwiUGFwZXIiLCJjb25uZWN0IiwiVGlja2V0VHlwZUZpbHRlciIsIlN0YXR1c0ZpbHRlciIsIkZyZWVQYWlkRmlsdGVyIiwiUHJvbW9Db2RlRmlsdGVyIiwiRmlsdGVyIiwib25SZXNldCIsImFjdGl2ZUZpbHRlcnNDb3VudCIsInNob3dGaWx0ZXJMaXN0Iiwic2V0U2hvd0ZpbHRlckxpc3QiLCJzaG93RGF0ZXBpY2tlciIsInNldFNob3dEYXRlcGlja2VyIiwiZmlsdGVyUmVmIiwiaGFuZGxlRmlsdGVyQ2xpY2tPdXRzaWRlIiwiZXZlbnQiLCJjdXJyZW50IiwiY29udGFpbnMiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInRvZ2dsZSIsImhhbmRsZUZpbHRlclJlc2V0IiwiZmlsdGVyQ29udGFpbmVyIiwicmVmIiwicHQiLCJiYWRnZUNvbnRlbnQiLCJtciIsImZpbHRlckljb24iLCJmaWx0ZXJMYWJlbCIsImZpbHRlckxpc3RDb250YWluZXIiLCJjb250YWluZXIiLCJlbGV2YXRpb24iLCJmaWx0ZXJDaGVja2JveENvbnRhaW5lciIsImNsZWFuQnV0dG9uIiwibWFwU3RhdGVUb1Byb3BzIiwicHJvbW9Db2RlIiwic2V0UHJvbW9Db2RlIiwiZGVib3VuY2VUaW1lciIsIkRFQk9VTkNFX1ZBTFVFIiwibmV3UHJvbW9Db2RlIiwiY2xlYXJUaW1lb3V0IiwicGxhY2Vob2xkZXIiLCJzdHlsZWQiLCJTZWFyY2hJY29uIiwiQ2xvc2VJY29uIiwiSW5wdXRCYXNlIiwiU2VhcmNoQ29udGFpbmVyIiwicG9zaXRpb24iLCJtYXJnaW5SaWdodCIsIm1hcmdpbkxlZnQiLCJkaXNwbGF5IiwiU2VhcmNoSWNvbldyYXBwZXIiLCJoZWlnaHQiLCJqdXN0aWZ5Q29udGVudCIsIlN0eWxlZElucHV0QmFzZSIsImJvcmRlckJvdHRvbSIsInBhZGRpbmdMZWZ0IiwicGFkZGluZ1JpZ2h0IiwiQ2xvc2VJY29uV3JhcHBlciIsInBhZGRpbmciLCJ0b3AiLCJyaWdodCIsImN1cnNvciIsInpJbmRleCIsIlNlYXJjaCIsIm9uU2VhcmNoIiwic2VhcmNoVmFsdWUiLCJzZXRTZWFyY2hWYWx1ZSIsInNob3dDbG9zZUJ0biIsIm9uS2V5RG93biIsIm5hdGl2ZUV2ZW50IiwicmVzZXRTZWFyY2giLCJpbnB1dFByb3BzIiwiSW1wb3J0RXhwb3J0SWNvbiIsIlNvcnQiLCJvblNvcnQiLCJzaG93U29ydCIsInNldFNob3dTb3J0Iiwic29ydFJlZiIsImhhbmRsZVNvcnRDbGlja091dHNpZGUiLCJzb3J0Q29udGFpbmVyIiwic29ydEljb24iLCJzb3J0TGFiZWwiLCJzb3J0TGlzdENvbnRhaW5lciIsInRpY2tldF90eXBlcyIsIkdyaWQiLCJGaWx0ZXJzIiwianVzdGlmeSIsIml0ZW0iLCJ4cyIsImdhcCIsImZpbHRlclNvcnRDb250YWluZXIiLCJGb3JtRm9vdGVyIiwic2F2ZUxhYmVsIiwiY2FuY2VsTGFiZWwiLCJmb290ZXIiLCJjYW5jZWxCdG4iLCJzaXplIiwic2F2ZUJ0biIsIkVycm9yTGFiZWwiLCJkYXRhVGVzdElkIiwiZXJyb3JMYWJlbCIsIkJhY2tkcm9wIiwiQ2lyY3VsYXJQcm9ncmVzcyIsIkxvYWRlciIsImRyYXdlciIsIkluZmluaXRlU2Nyb2xsIiwiT3JkZXJzTGlzdCIsIk9ORV9QQUdFX05FWFQiLCJNeU9yZGVyc1RpY2tldHMiLCJmZXRjaERhdGEiLCJtZW1iZXJPcmRlcnMiLCJvcmRlcnNfY3VycmVudF9wYWdlIiwib3JkZXJzX2xhc3RfcGFnZSIsIm15T3JkZXJzV3JhcHBlciIsImRhdGFMZW5ndGgiLCJuZXh0IiwiaGFzTW9yZSIsInNjcm9sbFRocmVzaG9sZCIsIlRpY2tldHNJY29uIiwidmlld0JveCIsImZpbGwiLCJ4bWxucyIsImQiLCJzdHJva2UiLCJzdHJva2VXaWR0aCIsInN0cm9rZUxpbmVjYXAiLCJzdHJva2VEYXNoYXJyYXkiLCJUQUJTIiwiX0ZyYWdtZW50IiwiTm9UaWNrZXRzRm91bmQiLCJwYWdlVmlldyIsImxvYWRpbmciLCJnZXRDb250ZW50IiwibWFpbHRvVGFnIiwic3VwcG9ydF9lbWFpbCIsImJ1dHRvbkxhYmVsIiwiVElDS0VUUyIsImljb25XcmFwcGVyIiwiY2FsY3VsYXRlT3JkZXJUb3RhbHMiLCJmb3JtYXRDdXJyZW5jeSIsIk9yZGVyU3VtbWFyeVRhYmxlIiwiZGlzY291bnRUb3RhbCIsInJlZnVuZFRvdGFsIiwiYW1vdW50VG90YWwiLCJzdWJUb3RhbCIsInRpY2tldFN1bW1hcnkiLCJ0YXhlc1N1bW1hcnkiLCJodW5kcmVkIiwib3JkZXJTdW1tYXJ5VGFibGUiLCJ0aWNrZXRUb3RhbCIsInF0eSIsInRpY2tldF90eXBlIiwiY29zdCIsImFsaWduIiwiY3VycmVuY3kiLCJjcmVhdGVkIiwidGF4ZXNfYW1vdW50IiwidGF4IiwiYW1vdW50IiwiZGlzY291bnRfYW1vdW50Iiwic2hhcGUiLCJ1c2VOb3ciLCJ0aWNrZXRzUmVmdW5kYWJsZSIsInVzZVN1bW1pdERldGFpbHMiLCJSZWZ1bmRFbWFpbFN1cHBvcnQiLCJzdWJtaXRSZXF1ZXN0Iiwib25SZWZ1bmRDbGljayIsIm9uUmVmdW5kRGV0YWlsQ2xpY2siLCJpc1N0YXJ0ZWQiLCJub3ciLCJpc0luUmVmdW5kYWJsZVBlcmlvZCIsInJlZ2lzdHJhdGlvbl9hbGxvd2VkX3JlZnVuZF9yZXF1ZXN0X3RpbGxfZGF0ZSIsImF0TGVhc3RPbmVSZWZ1bmRhYmxlVGlja2V0IiwiaXNSZWZ1bmRhYmxlIiwiaGFzUmVmdW5kUmVxdWVzdHMiLCJyb2xlIiwib3JkZXJTdW1tYXJ5QnV0dG9uIiwicmVmdW5kRGlzYWJsZWQiLCJyZWwiLCJhcnJheU9mIiwiT3JkZXJTdW1tYXJ5Iiwib3JkZXJTdW1tYXJ5V3JhcHBlciIsInB4Iiwib3JkZXJTdW1tYXJ5UHVyY2hhc2VkSW5mbyIsIm1lbWJlclRpY2tldHMiLCJPcmRlckxpc3RUaWNrZXRzIiwiQXNzaWduVG9NZSIsInVzZXJUaWNrZXRzIiwidXNlcl90aWNrZXRzX2N1cnJlbnRfcGFnZSIsInVzZXJfdGlja2V0c19sYXN0X3BhZ2UiLCJvcmRlclRpY2tldENvbnRhaW5lciIsImFzc2lnbmVkVG9NZVdyYXBwZXIiLCJ0aWNrZXRMaXN0Q29udGFpbmVyIiwiaXNSZWZ1bmRNb2RhbCIsImlzU2VsZWN0ZWRUb1JlZnVuZCIsInNlbGVjdFRvUmVmdW5kIiwiaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0IiwiQXNzaWduZWRUbyIsIkV4dGVybmFsQXNzaWduZWRUbyIsIk1hbmFnZUZvciIsIkF0dGVuZGVlU3RhdHVzIiwiX3RpY2tldCRvd25lciIsIl90aWNrZXQkb3duZXIyIiwiX3RpY2tldCRvd25lcjMiLCJpc1VuYXNzaWduZWQiLCJpc19hY3RpdmUiLCJpc0RlbGVnYXRlZCIsInRpY2tldE93bmVyRW1haWwiLCJfdGlja2V0JG9yZGVyIiwiX3RpY2tldCRvcmRlcjIiLCJfdGlja2V0JG93bmVyNCIsIl90aWNrZXQkb3duZXI1IiwiYXNzaWduZWRCeVRleHQiLCJvd25lcl9maXJzdF9uYW1lIiwib3duZXJfbGFzdF9uYW1lIiwiT05FX1JFVFJZIiwiQmFkZ2VGZWF0dXJlSW1hZ2UiLCJzcmMiLCJhbHQiLCJtYXhSZXRyaWVzIiwiY3VycmVudFNyYyIsInNldEN1cnJlbnRTcmMiLCJyZXRyeUNvdW50Iiwic2V0UmV0cnlDb3VudCIsImhhc0Vycm9yIiwic2V0SGFzRXJyb3IiLCJoYW5kbGVFcnJvciIsIkRhdGUiLCJvbkVycm9yIiwiUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UIiwiT3JkZXJMaXN0SXRlbSIsIl9vcmRlciRtZW1iZXJUaWNrZXRzIiwiX29yZGVyJG1lbWJlclRpY2tldHMyIiwib25QYWdpbmF0ZUNsaWNrIiwidGlja2V0c1RvUmVmdW5kIiwiaXRlbXNUb0Rpc3BsYXkiLCJzZXRJdGVtc1RvRGlzcGxheSIsInRpY2tldHNfdG90YWwiLCJzbGljZWRUaWNrZXRzIiwic2xpY2UiLCJvblZpZXdNb3JlIiwib25WaWV3TGVzcyIsImZpbmQiLCJ2aWV3TW9yZUJ1dHRvbiIsInVzZURpc3BhdGNoIiwiVGlja2V0U3RhdHVzIiwiZ2V0U3VtbWl0UmVhc3NpZ25EYXRlIiwiVGlja2V0RGV0YWlsIiwidXNlVGlja2V0RGV0YWlscyIsIlRpY2tldEFzc2lnbiIsIm1vZGFsVmlld3MiLCJkZXRhaWwiLCJyZWFzc2lnbiIsImFzc2lnbiIsIlRpY2tldENUQXMiLCJpc0luY29tcGxldGUiLCJpc1JlYXNzaWduYWJsZSIsIm9uT3BlbkNsaWNrIiwiYXNzaWduVGlja2V0QnV0dG9uIiwidmlld0ZpbmlzaFRpY2tldEJ1dHRvbiIsInJlYXNzaWduQnV0dG9uIiwiX3RpY2tldCR0aWNrZXRfdHlwZSIsIl90aWNrZXQkYmFkZ2UiLCJjYW5SZWFzc2lnbiIsIm1vZGFsT3BlbiIsInNldE1vZGFsT3BlbiIsInJlYXNzaWduRGF0ZSIsIm9uUmVhc3NpZ25hYmxlUGVyaW9kIiwiaGFuZGxlQ2xvc2VNb2RhbCIsImhhbmRsZU9wZW5Nb2RhbCIsInZpZXciLCJvcmRlcldyYXBwZXIiLCJyZWZ1bmRNb2RhbCIsImRpc2FibGVkUmVmdW5kIiwic2VsZWN0ZWQiLCJjaGVja2JveCIsInBsIiwidGlja2V0VGlja2V0VHlwZSIsImJmRmVhdHVyZVdyYXBwZXIiLCJwciIsImJhZGdlIiwiZmVhdHVyZXMiLCJiZkZlYXR1cmUiLCJpbWFnZSIsInRpY2tldE5vIiwidGlja2V0Rm9vdGVyIiwidGlja2V0QWN0aW9uQnV0dG9ucyIsIm93bmVySWQiLCJ0b3RhbF9yZWZ1bmRlZF9hbW91bnQiLCJUYWJzIiwiVGFiIiwiUmVmdW5kUmVxdWVzdHNNb2RhbCIsIlJlZnVuZERldGFpbHMiLCJUYWJQYW5lbCIsInByb3BzIiwiaW5kZXgiLCJoaWRkZW4iLCJPcmRlcnNMaXN0RGVza3RvcE1vYmlsZSIsImlzTW9iaWxlIiwiZGV0YWlsc1JlcXVpcmVkIiwic2V0VmFsdWUiLCJfIiwic2V0VGlja2V0c1RvUmVmdW5kIiwic2V0U3VibWl0UmVxdWVzdCIsInJlZnVuZERldGFpbHNPcGVuIiwic2V0UmVmdW5kRGV0YWlsc09wZW4iLCJ1bnNlbGVjdFJlZnVuZFRpY2tldHMiLCJmaWx0ZXJTZWxlY3RlZCIsInNlbGVjdGVkVGlja2V0IiwiY2xvc2VTdWJtaXRSZXF1ZXN0IiwicmVzZXRBbGxSZWZ1bmRTdGF0dXNlcyIsIm1vcmVEZXRhaWxzIiwiYm9yZGVyQ29sb3IiLCJ0YWJCdXR0b25zIiwib25SZWZ1bmRTdWNjZXNzQ2xvc2UiLCJvbkNsb3NlU2xpZGVyIiwibWQiLCJ1c2VUaGVtZSIsInVzZU1lZGlhUXVlcnkiLCJnZXRGb3JtYXR0ZWREYXRlIiwidGlja2V0X3Blcl9wYWdlIiwiYnJlYWtwb2ludHMiLCJkb3duIiwiaXNNb2JpbGVWaWV3YWJsZSIsInNldE1vYmlsZVZpZXdhYmxlIiwidGlja2V0c19wYWdlX2N1cnJlbnQiLCJsZyIsIm9yZGVyVGlja2V0SW5mb0NvbnRhaW5lciIsIm9yZGVyVGlja2V0SW5mbyIsInJvd1NwYWNpbmciLCJjb2x1bW5TcGFjaW5nIiwic20iLCJkaXNwbGF5X25vbmUiLCJmbGV4RGlyZWN0aW9uIiwidXNlTWVtbyIsIlJpZ2h0RHJhd2VyIiwiUmVmdW5kUmVxdWVzdGVkVGlja2V0IiwiZ2V0QWxsUmVmdW5kUmVxdWVzdGVkVGlja2V0cyIsInJlcXVlc3RlZFRpY2tldHMiLCJjbG9zZVNsaWRlciIsInJlZnVuZERldGFpbHMiLCJ0b29sdGlwQ2xhc3NlcyIsIkluZm9JY29uIiwibW9tZW50IiwiUmVmdW5kU3RhdHVzIiwiR1JJRF84IiwiR1JJRF8xMiIsIlBBRERJTkdfMiIsImFwcHJvdmVkUmVmdW5kcyIsInJlZnVuZCIsInJlZnVuZGVkVGF4ZXNTdW1tYXRvcnkiLCJyZWZ1bmRlZF90YXhlcyIsInJ0IiwidGF4SWQiLCJ0b3RhbFJlZnVuZGVkVGF4QW1vdW50IiwicmVmdW5kZWRfYW1vdW50IiwiSHRtbFRvb2x0aXAiLCJjbGFzc2VzIiwicG9wcGVyIiwibWF4V2lkdGgiLCJib3JkZXIiLCJyZWZ1bmRUaWNrZXRCb3hDb250YWluZXIiLCJyZWZ1bmREZXRhaWwiLCJiYWRnZUZlYXR1cmVXcmFwcGVyIiwiYmFkZ2VGZWF0dXJlIiwicmVmdW5kVGlja2V0QXR0ZW5kZWUiLCJhY3Rpb25fZGF0ZSIsImZvcm1hdCIsIkNoaXAiLCJnZXRSZWZ1bmRSZXF1ZXN0ZWRTdGF0dXNDb2xvciIsInN0YXR1c0NvbG9yIiwiYnV0dG9uUGlsbCIsIlN0eWxlZEVuZ2luZVByb3ZpZGVyIiwiU1RFUF9PTkUiLCJTVEVQX1RIUkVFIiwiU1RFUF9UV08iLCJzdGVwIiwic2V0U3RlcCIsImVycm9yTXNnIiwic2V0RXJyb3JNc2ciLCJyZWZ1bmRTdWNjZXNzIiwic2V0UmVmdW5kU3VjY2VzcyIsImNvbmZpcm1SZWZ1bmQiLCJnb0JhY2tUb1JlZnVuZCIsInJlZnVuZFRpY2tldHMiLCJyZWZ1bmRTdGVwT25lIiwic3VidGl0bGUiLCJ0aWNrZXRMaXN0IiwiYWN0aW9uQnV0dG9ucyIsImNhbmNlbEJ1dHRvbiIsImNvbnRpbnVlQnV0dG9uIiwicmVmdW5kU3RlcFR3byIsInJlZnVuZEVycm9yTXNnIiwiQ1RBQnV0dG9uV3JhcHBlciIsInJlZnVuZFN0ZXBUaHJlZSIsInJlZnVuZFN1Y2Nlc3NmdWwiLCJzdWNjZXNzTXNnIiwic3VjY2Vzc01zZzIiLCJyZW5kZXJTdGVwcyIsImluamVjdEZpcnN0IiwiRHJhd2VyIiwiQ2xvc2UiLCJoZWFkZXJDaGlsZHJlbiIsImFuY2hvciIsIk1vZGFsUHJvcHMiLCJrZWVwTW91bnRlZCIsImhlYWRlciIsImNsb3NlQnRuIiwiZmxvYXQiLCJndXR0ZXJCb3R0b20iLCJvbmVPZlR5cGUiLCJTdW1taXRIZWFkZXIiLCJ3aWRnZXRIZWFkZXIiLCJzdW1taXRUaXRsZURhdGUiLCJkYXRlc19sYWJlbCIsIlRhYldyYXBwZXIiLCJ0YWIiLCJzZXRUYWIiLCJoYXNUaWNrZXRzIiwiaXNGaWx0ZXJlZCIsImNsZWFyRmlsdGVycyIsImdldFBhZ2VWaWV3IiwiZ2V0T25DbGljayIsInRhYlRvTGluayIsIkxpbmsiLCJSZWFzc2lnbkZvcm0iLCJEZWxlZ2F0ZUZvcm0iLCJBc3NpZ25PcHRpb25zIiwiYXNzaWduT3B0aW9uIiwic2V0QXNzaWduT3B0aW9uIiwib25Bc3NpZ24iLCJvbkRlbGVnYXRlIiwib25VbkFzc2lnbiIsIm9wZW5Db25maXJtVW5hc3NpZ24iLCJzZXRPcGVuQ29uZmlybVVuYXNzaWduIiwiaXNBc3NpZ25lZFRvTWUiLCJhbGxvd3NEZWxlZ2F0ZSIsImhhbmRsZVVuQXNzaWduIiwibXkiLCJvblN1Ym1pdCIsIm5ld19hdHRlbmRlZV9lbWFpbCIsInBlcnNvbmFsX21lc3NhZ2UiLCJkZWxlZ2F0ZV9maXJzdF9uYW1lIiwiZGVsZWdhdGVfbGFzdF9uYW1lIiwiZGVsZWdhdGVfZW1haWwiLCJ1bmFzc2lnbldyYXBwZXIiLCJjb21wb25lbnQiLCJ0ZXh0RGVjb3JhdGlvbiIsInRleHREZWNvcmF0aW9uQ29sb3IiLCJ1c2VGb3JtaWsiLCJ5dXAiLCJpbml0aWFsVmFsdWVzIiwidmFsaWRhdGlvblNjaGVtYSIsInJlc2V0Rm9ybSIsImhhbmRsZUNhbmNlbCIsImhhbmRsZVN1Ym1pdCIsIm5vVmFsaWRhdGUiLCJpc1N1Ym1pdHRpbmciLCJBc3NpZ25IZWFkZXIiLCJpblByb2dyZXNzIiwidXNlckVtYWlsIiwiYXNzaWduZWRUb1lvdSIsImdldFNlY29uZGFyeVRpdGxlIiwiZ2V0SGVhZGVyTm90ZSIsInRyYW5zS2V5IiwicHVyY2hhc2VkQnlXcmFwcGVyIiwicHVyY2hhc2VkQnkiLCJvd25lcl9lbWFpbCIsIm9yZGVyTm8iLCJoZWFkZXJOb3RlIiwiUmVhc3NpZ25IZWFkZXIiLCJtdWx0aWxpbmUiLCJtaW5Sb3dzIiwidXNlQ29udGV4dCIsIlRpY2tldEZvcm0iLCJ1c2VHZXRUaWNrZXQiLCJUSUNLRVRfRFJBV0VSX0lEIiwic3VjY2Vzc01lc3NhZ2UiLCJlcnJvck1lc3NhZ2UiLCJhc3NpZ25hdGlvbkluUHJvZ3Jlc3MiLCJzZXRBc3NpZ25hdGlvbkluUHJvZ3Jlc3MiLCJpc1VzZXJPcmRlck93bmVyIiwib3duZXJfaWQiLCJpc1VzZXJUaWNrZXRPd25lciIsImNhbkVkaXRUaWNrZXREYXRhIiwiYWxsb3dfdXBkYXRlX2F0dGVuZGVlX2V4dHJhX3F1ZXN0aW9ucyIsIm9uQ2xvc2VFUUZvcm0iLCJvblNhdmVFUSIsInJlc29sdmUiLCJIZWFkZXIiLCJ0aWNrZXRSZWFzc2lnbkNvbnRhaW5lciIsImNhbkVkaXQiLCJBdXRvY29tcGxldGUiLCJxdWVyeVJlZ2lzdHJhdGlvbkNvbXBhbmllcyIsIkNvbXBhbnlGaWVsZCIsInN1bW1pdElkIiwiaW5wdXRWYWx1ZSIsInNldElucHV0VmFsdWUiLCJvcHRpb25zIiwic2V0T3B0aW9ucyIsInNldEZpZWxkVG91Y2hlZCIsInJlc3VsdHMiLCJuZXdPcHRpb25zIiwiYXV0b0NvbXBsZXRlIiwiZnJlZVNvbG8iLCJpbmNsdWRlSW5wdXRJbkxpc3QiLCJmaWx0ZXJTZWxlY3RlZE9wdGlvbnMiLCJnZXRPcHRpb25MYWJlbCIsIm9wdGlvbiIsInRtcFZhbHVlIiwib25JbnB1dENoYW5nZSIsIm5ld0lucHV0VmFsdWUiLCJmaWx0ZXJPcHRpb25zIiwiZmlsdGVyZWQiLCJpc0V4aXN0aW5nIiwicmVuZGVySW5wdXQiLCJyZW5kZXJPcHRpb24iLCJvcHRpb25Qcm9wcyIsIlJlZ2lzdHJhdGlvbkRpc2NsYWltZXIiLCJkaXNjbGFpbWVyIiwiUVJDb2RlIiwiRW1haWxPdXRsaW5lZCIsIkVtYWlsSWNvbiIsIkZpbGVEb3dubG9hZE91dGxpbmVkIiwiRG93bmxvYWRJY29uIiwiVFdPX0lURU0iLCJUaWNrZXREZXRhaWxIZWFkZXIiLCJpc1ZpcnR1YWxTdW1taXQiLCJpc0NvbXBsZXRlIiwic2VudENvbmZpcm1hdGlvbiIsInNldFNlbnRDb25maXJtYXRpb24iLCJkb3dubG9hZFRpY2tldFBkZiIsIm9uU2VuZEVtYWlsIiwicXJDb2RlIiwicXJfY29kZSIsInFyTm90ZSIsImFjdGlvbkJ1dHRvbnNDb250YWluZXIiLCJkb3dubG9hZEJ0biIsInNlbmRCdG4iLCJzZW50Iiwib3JkZXJOdW1iZXIiLCJUaWNrZXRPd25lckZpZWxkcyIsInVzZVNjcm9sbFRvRXJyb3IiLCJwYXJzZUFuc3dlcnMiLCJidWlsZFZhbGlkYXRpb25TY2hlbWEiLCJyZWR1Y2UiLCJyZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9tYW5kYXRvcnkiLCJyZWxldmFudEFuc3dlcnMiLCJlbmFibGVSZWluaXRpYWxpemUiLCJhZGRpdGlvbmFsRGV0YWlscyIsInJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX2NvbnRlbnQiLCJpbmZvTm90ZSIsIm9uU2F2ZSIsInRpY2tldERldGFpbENvbnRhaW5lciIsImlzX3ZpcnR1YWwiLCJhdHRlbmRlZUNvbnRhaW5lciIsImF0dGVuZGVlSW5mb1RpdGxlIiwiQ29udGFpbmVyIiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzIiwiaXNBY3RpdmUiLCJyZWZ1bmRSZXF1ZXN0cyIsInRpY2tldFN0YXR1c0NvbnRhaW5lciIsImJ1dHRvblJlZnVuZFJlcXVlc3RlZCIsImJ1dHRvbkluY29tcGxldGUiLCJidXR0b25VbmFzc2lnbmVkIiwiYnV0dG9uQ29tcGxldGUiLCJidXR0b25DYW5jZWxsZWQiLCJBc3NpZ25lZFRvTWUiLCJXaWRnZXRUYWJzIiwidGlja2V0c0Z1bGx5TG9hZGVkIiwic2V0VGlja2V0c0Z1bGx5TG9hZGVkIiwib3JkZXJzX3Blcl9wYWdlIiwib3JkZXJzUGVyUGFnZSIsInRpY2tldFBlclBhZ2UiLCJoYW5kbGVUYWJDaGFuZ2UiLCJuZXdUYWIiLCJmZXRjaEFzc2lnbmVkVGlja2V0cyIsImZldGNoT3JkZXJUaWNrZXRzIiwib3JkZXJUaWNrZXRzUHJvbWlzZXMiLCJjdXJyZW50X3BhZ2UiLCJmZXRjaFByb21pc2VzIiwidGFiV3JhcHBlciIsIldpZGdldFdyYXBwZXIiLCJtc2dEYXRhIiwic2V0TXNnRGF0YSIsIm1lc3NhZ2VDb250ZXh0IiwiZmlsdGVyVmFsdWUiLCJzb3J0VmFsdWUiLCJ0aWNrZXRzVGl0bGVUZXh0IiwiUHJvdmlkZXIiLCJydW4iLCJjdXJyZW50VGlja2V0Iiwic21vb3RoU2Nyb2xsVG8iLCJ0YXJnZXRTY3JvbGxUb3AiLCJkdXJhdGlvbiIsInN0YXJ0U2Nyb2xsVG9wIiwic2Nyb2xsVG9wIiwiZGlzdGFuY2UiLCJzdGFydFRpbWUiLCJhbmltYXRpb25TdGVwIiwidGltZXN0YW1wIiwiZWxhcHNlZCIsInByb2dyZXNzIiwiTWF0aCIsIm1pbiIsImVhc2VJbk91dFF1YWQiLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJpc1ZhbGlkIiwiZXJyb3JBcnJheSIsImVycm9yQ291bnQiLCJlbGVtZW50c1NvcnRlZCIsInJlc3VsdCIsImVsZW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwiZWxSZWN0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiYSIsImIiLCJnZXRFbGVtZW50QnlJZCIsImNvbnRhaW5lclJlY3QiLCJlbGVtT2ZmZXN0IiwiYW5pbWF0aW9uRHVyYXRpb24iLCJpc1RpY2tldFJlZnVuZGFibGUiLCJTVEFUVVNfQ09NUExFVEUiLCJTVEFUVVNfSU5DT01QTEVURSIsIlNUQVRVU19DQU5DRUxMRUQiLCJTVEFUVVNfVU5BU1NJR05FRCIsIl90aWNrZXQkcHJvbW9fY29kZSIsIl90aWNrZXQkdGlja2V0X3R5cGUyIiwiX3RpY2tldCRwcm9tb19jb2RlMiIsImdldFN0YXR1cyIsImFsbG93c190b19kZWxlZ2F0ZSIsInByb21vX2NvZGUiLCJhbGxvd3NfdG9fcmVhc3NpZ24iLCJpbml0UmVhY3RJMThuZXh0IiwiTGFuZ3VhZ2VEZXRlY3RvciIsImVuIiwiZXMiLCJ1c2UiLCJpbml0IiwiZmFsbGJhY2tMbmciLCJkZWJ1ZyIsInJlc291cmNlcyIsInRyYW5zbGF0aW9uIiwiaW50ZXJwb2xhdGlvbiIsImVzY2FwZVZhbHVlIiwiTE9HT1VUX1VTRVIiLCJTVEFSVF9MT0FESU5HIiwiU1RPUF9MT0FESU5HIiwiUkVTRVRfTE9BRElORyIsImNhbGN1bGF0ZUFjdGl2ZUZpbHRlcnMiLCJoYXNMb2FkZWRBbGxEYXRhIiwidXBkYXRlVGlja2V0Q29sbGVjdGlvbiIsIkRFRkFVTFRfRklMVEVSX1NUQVRFIiwiREVGQVVMVF9TVEFURSIsIndpZGdldExvYWRpbmciLCJjdXJyZW50X3RhYiIsIm9yZGVyc190b3RhbCIsInRpY2tldF9jdXJyZW50X3BhZ2UiLCJ0aWNrZXRfbGFzdF9wYWdlIiwidGlja2V0X3RvdGFsIiwidXNlcl90aWNrZXRzX3RvdGFsIiwiYXBpRXJyb3IiLCJXaWRnZXRSZWR1Y2VyIiwibmV3QWN0aXZlQ291bnQiLCJ0b3RhbCIsImxhc3RfcGFnZSIsImZvcm1lck9yZGVyIiwibyIsIl9kYXRhJCIsIm5ld09yZGVycyIsIm1vIiwiX2RhdGEkMiIsIm5ld1RpY2tldHMiLCJ0aWNrZXRzX3BhZ2VfbGFzdCIsIl90aWNrZXRzUmVmdW5kUmVxdWVzdCIsInVwZGF0ZWRUaWNrZXRzIiwidHJyIiwidXBkYXRlZE9yZGVyIiwidGlja2V0RGF0YSIsIm5ld1VzZXJUaWNrZXRzIiwiY29uZmlndXJlU3RvcmUiLCJwZXJzaXN0U3RvcmUiLCJwZXJzaXN0UmVkdWNlciIsIkZMVVNIIiwiUkVIWURSQVRFIiwiUEFVU0UiLCJQRVJTSVNUIiwiUFVSR0UiLCJSRUdJU1RFUiIsInN0b3JhZ2UiLCJjb21iaW5lUmVkdWNlcnMiLCJnZXRTdG9yZSIsImNsaWVudElkIiwibG9naW5VcmwiLCJyZWR1Y2VycyIsInN0b3JlIiwicmVkdWNlciIsIm1pZGRsZXdhcmUiLCJnZXREZWZhdWx0TWlkZGxld2FyZSIsInRodW5rIiwiZXh0cmFBcmd1bWVudCIsImltbXV0YWJsZUNoZWNrIiwic2VyaWFsaXphYmxlQ2hlY2siLCJpZ25vcmVkQWN0aW9ucyIsInVzZUluaXRTdG9yZSIsImNvbmZpZyIsInBlcnNpc3RvciIsImluaXRMb2dPdXQiLCJnZXRBY2Nlc3NUb2tlbiIsIlNlbnRyeSIsImdldEFjY2Vzc1Rva2VuTW9jayIsIkVycm9yIiwiY2FwdHVyZUV4Y2VwdGlvbiIsIkxBU1RfSE9VUl9PRl8yNF9IT1VSIiwiTEFTVF9NSU5VVEVfT0ZfSE9VUiIsIk9ORV9EQVkiLCJNSU5fUkVRVUlSRUQiLCJTVEFUVVNfUEVORElORyIsIlNUQVRVU19FUlJPUiIsIlNUQVRVU19QUk9DRVNTSU5HIiwiU1RBVFVTX1JFRlVORF9QRU5ESU5HIiwiU1RBVFVTX1JFRlVORF9BUFBST1ZFRCIsIlNUQVRVU19SRUZVTkRfUkVKRUNURUQiLCJTVEFUVVNfUkVGVU5EX1BFTkRJTkdfTEMiLCJTVEFUVVNfUkVGVU5EX0FQUFJPVkVEX0xDIiwiU1RBVFVTX1JFRlVORF9SRUpFQ1RFRF9MQyIsIkpFU1RfVElNRU9VVF9JTl9NSUxMSVNFQyIsIk9ORV9JVEVNIiwiRklWRV9JVEVNIiwiU0lYX0lURU0iLCJsb2NhbGUiLCJkZWZhdWx0T3B0aW9ucyIsIm1pbmltdW1GcmFjdGlvbkRpZ2l0cyIsIm1heGltdW1GcmFjdGlvbkRpZ2l0cyIsImZvcm1hdHRlciIsIkludGwiLCJOdW1iZXJGb3JtYXQiLCJkYXRldGltZSIsInRpbWVab25lIiwidHoiLCJ1bml4IiwiX29yZGVyJGFwcGxpZWRfdGF4ZXMiLCJyYXdfYW1vdW50IiwiY3VycmVuY3lPYmplY3QiLCJwdXJjaGFzZVRpY2tldFRvdGFsIiwidGlja2V0c19leGNlcnB0X2J5X3RpY2tldF90eXBlIiwidGlja2V0VHlwZSIsInR0IiwidGlja2V0X3R5cGVfaWQiLCJhcHBsaWVkX3RheGVzIiwiZm9ybWF0dGVkVGF4IiwicHVyY2hhc2VUb3RhbCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImdldE9yZGVyVGlja2V0cyIsIl9vcmRlcnMkIiwib3JkZXJzIiwiZ2V0RXBvY2hMb3dlclVwcGVySW5TZWNvbmRzIiwidHMiLCJzZXRIb3VycyIsImRlZmF1bHRDdXJyZW50VGltZSIsInJvdW5kIiwiZ2V0Tm93IiwidGltZXJTdGF0ZSIsIm5vd1V0YyIsImN1cnJlbnRQYWdlIiwiY291bnQiLCJ0cmltIiwiY2hlY2tTdW1taXRQYXN0IiwicmVhc3NpZ25fZGF0ZSIsInJlYXNzaWduX3RpY2tldF90aWxsX2RhdGUiLCJlbmRfZGF0ZSIsImNoZWNrU3VtbWl0U3RhcnRlZCIsInN0YXJ0X2RhdGUiLCJnZXRTdW1taXREYXlzRGlmZiIsInN0YXJ0RGF5IiwidGltZV96b25lX2lkIiwiZW5kRGF5IiwiZGF5cyIsImRpZmYiLCJnZXRTdW1taXRGb3JtYXR0ZWREYXRlIiwiZm9ybWF0U3RhcnREYXRlIiwiZm9ybWF0RW5kRGF0ZSIsInllYXIiLCJtb250aCIsInN0YXJ0RGF0ZSIsImVuZERhdGUiLCJnZXRTdW1taXRMb2NhdGlvbiIsIl9zdW1taXQkbG9jYXRpb25zIiwibG9jYXRpb24iLCJsb2NhdGlvbnMiLCJsIiwiY2xhc3NfbmFtZSIsImlzX21haW4iLCJjaXR5IiwiY291bnRyeSIsIl9zdW1taXQkdGltZV96b25lIiwiX3N1bW1pdCR0aW1lX3pvbmUyIiwiZm9ybWF0dGVkRGF0ZSIsImZvcm1hdHRlZFJlYXNzaWduRGF0ZSIsInRpbWVfem9uZSIsImRheXNVbnRpbFJlYXNzaWduRGVhZGxpbmUiLCJpc1Bhc3QiLCJzdGF0dXNEYXRhIiwiZ2V0VGlja2V0U3RhdHVzS2V5IiwiZ2V0VGlja2V0U3RhdHVzRGF0YSIsImlzU3VtbWl0UGFzdCIsImdldFRpY2tldFJvbGUiLCJmZWF0dXJlIiwiZ2V0VGlja2V0VHlwZSIsImZpbmFsX2Ftb3VudCIsIm5ldF9zZWxsaW5nX2Nvc3QiLCJyciIsImdldFJlZnVuZGVkUmVxdWVzdGVkVGlja2V0cyIsIl90aWNrZXQkcmVmdW5kX3JlcXVlczIiLCJhbGxUaWNrZXRzIiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzMyIsIl90aWNrZXQkcmVmdW5kX3JlcXVlczQiLCJfdGlja2V0JHJlZnVuZF9yZXF1ZXM1IiwiZ2V0UmVmdW5kZWRSZXF1ZXN0ZWRTdGF0dXMiLCJfdGlja2V0JHJlZnVuZF9yZXF1ZXM2IiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzNyIsIl90aWNrZXQkcmVmdW5kX3JlcXVlczgiLCJnZXRUeXBlVmFsaWRhdGlvbiIsInNjaGVtYSIsIm9uZU9mIiwib2YiLCJwYXJzZVN1YlF1ZXN0aW9uQW5zd2VyIiwib25seVJlbGV2YW50Iiwic3ViUXVlc3Rpb25TbHVnIiwic3ViQW5zd2VyIiwibWF0Y2giLCJpbmNsdWRlQXR0ZW5kZWVJbmZvIiwiaW5jbHVkZURpc2NsYWltZXIiLCJidWlsZFN1YlF1ZXN0aW9uVmFsaWRhdGlvblNjaGVtYSIsIl9zdWJRdWVzdGlvbiRzdWJfcXVlcyIsInN1YlF1ZXN0aW9uIiwibnVsbGFibGUiLCJ3aGVuIiwiaXMiLCJxdWVzdGlvbkFucyIsImFuc1ZhbHVlTWF0Y2giLCJzY2giLCJzdWJSdWxlIiwiZGlzY2xhaW1lck1hbmRhdG9yeSIsImxhenkiLCJ0eXBlRXJyb3IiLCJfdCRvd25lciIsIl90JG93bmVyMiIsIl90aWNrZXQkb3duZXI2IiwidG1wVGlja2V0IiwiUGVyc2lzdEdhdGUiLCJNeU9yZGVyc015VGlja2V0c1dpZGdldCIsInN1cHBvcnRFbWFpbCIsImhhbmRsZUJlZm9yZUxpZnQiLCJVUkxTZWFyY2hQYXJhbXMiLCJzZWFyY2giLCJmbHVzaCIsImhhcyIsIm9uQmVmb3JlTGlmdCJdLCJzb3VyY2VSb290IjoiIn0=
|
|
10234
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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Q0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztVQ0FBO1VBQ0E7O1VBRUE7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7O1VBRUE7VUFDQTs7VUFFQTtVQUNBO1VBQ0E7Ozs7O1dDdEJBO1dBQ0E7V0FDQTtXQUNBO1dBQ0E7V0FDQSxpQ0FBaUMsV0FBVztXQUM1QztXQUNBOzs7OztXQ1BBO1dBQ0E7V0FDQTtXQUNBO1dBQ0EseUNBQXlDLHdDQUF3QztXQUNqRjtXQUNBO1dBQ0E7Ozs7O1dDUEE7Ozs7O1dDQUE7V0FDQTtXQUNBO1dBQ0EsdURBQXVELGlCQUFpQjtXQUN4RTtXQUNBLGdEQUFnRCxhQUFhO1dBQzdEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ05BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUN5QztBQUNOO0FBQ0k7QUFDdUI7QUFDVDtBQUNkO0FBQ2tCO0FBRUY7QUFBQTtBQUV2RCxNQUFNRSx1QkFBdUIsR0FBSXRsQyxLQUFLLElBQUs7RUFDekMsTUFBTTtJQUNKbzdCLFFBQVE7SUFDUm1LLFlBQVk7SUFDWi94QyxNQUFNO0lBQ042RCxVQUFVO0lBQ1Y1RCxJQUFJO0lBQ0owbkMsUUFBUTtJQUNSei9CO0VBQ0YsQ0FBQyxHQUFHc0UsS0FBSztFQUVULE1BQU07SUFBRXM3QixLQUFLO0lBQUVXO0VBQVUsQ0FBQyxHQUFHRixvREFBWSxDQUFDO0lBQ3hDWCxRQUFRO0lBQ1JtSyxZQUFZO0lBQ1oveEMsTUFBTTtJQUNOQyxJQUFJO0lBQ0o0RCxVQUFVO0lBQ1Y4akMsUUFBUTtJQUNSei9CO0VBQ0YsQ0FBQyxDQUFDO0VBRUYsTUFBTThwQyxnQkFBZ0IsR0FBR0EsQ0FBQSxLQUFNO0lBQzdCLE1BQU1odUMsTUFBTSxHQUFHLElBQUlpdUMsZUFBZSxDQUFDOW1DLE1BQU0sQ0FBQzRpQyxRQUFRLENBQUNtRSxNQUFNLENBQUM7SUFDMUQsTUFBTUMsS0FBSyxHQUFHbnVDLE1BQU0sQ0FBQ291QyxHQUFHLENBQUMsWUFBWSxDQUFDO0lBQ3RDLElBQUlELEtBQUssRUFBRXJLLEtBQUssQ0FBQ25vQyxRQUFRLENBQUM7TUFBRXFaLElBQUksRUFBRS9iLGlEQUFXO01BQUU4RSxPQUFPLEVBQUU7SUFBSyxDQUFDLENBQUM7RUFDakUsQ0FBQztFQUVEK2EsZ0RBQVMsQ0FBQyxNQUFNO0lBQ2RnckIsS0FBSyxDQUFDbm9DLFFBQVEsQ0FBQ0kseURBQWUsQ0FBQ0MsTUFBTSxFQUFFQyxJQUFJLENBQUMsQ0FBQztFQUMvQyxDQUFDLEVBQUUsQ0FBQ0QsTUFBTSxFQUFFQyxJQUFJLENBQUMsQ0FBQztFQUVsQixvQkFDRStMLHNEQUFBLENBQUNtMUIsaURBQVE7SUFBQzJHLEtBQUssRUFBRUEsS0FBTTtJQUFBeDZCLFFBQUEsZUFDckJ0QixzREFBQSxDQUFDNmxDLHdFQUFXO01BQ1ZRLFlBQVksRUFBRUwsZ0JBQWlCO01BQy9CcHNCLE9BQU8sRUFBRSxJQUFLO01BQ2Q2aUIsU0FBUyxFQUFFQSxTQUFVO01BQUFuN0IsUUFBQSxlQUVyQnRCLHNEQUFBLENBQUMwbkIsK0RBQW9CO1FBQUMyQixXQUFXO1FBQUEvbkIsUUFBQSxlQUMvQnRCLHNEQUFBLENBQUM0MEIsaUVBQWEsSUFBRTtNQUFDLENBQ0c7SUFBQyxDQUNaO0VBQUMsQ0FDTixDQUFDO0FBRWYsQ0FBQztBQUVEa1IsdUJBQXVCLENBQUMvakMsU0FBUyxHQUFHO0VBQ2xDNjVCLFFBQVEsRUFBRS83QiwwREFBZ0I7RUFDMUJrbUMsWUFBWSxFQUFFbG1DLDBEQUFnQjtFQUM5QjdMLE1BQU0sRUFBRTZMLDBEQUFnQjtFQUN4QmhJLFVBQVUsRUFBRWdJLDBEQUFnQjtFQUM1QjVMLElBQUksRUFBRTRMLDBEQUFnQjtFQUN0Qjg3QixRQUFRLEVBQUU5N0IsMERBQWdCO0VBQzFCM0QsYUFBYSxFQUFFMkQsd0RBQWMrRjtBQUMvQixDQUFDO0FBRUQsaUVBQWVrZ0MsdUJBQXVCLEUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9hY3Rpb25zLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0JhZGdlRmVhdHVyZUljb24vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvQ29uZmlybURpYWxvZy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9Db3B5VGV4dC9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9DdXN0b21Ob3RpZmljYXRpb24vQ29udGV4dC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9DdXN0b21Ob3RpZmljYXRpb24vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvQ3VzdG9tVGhlbWUuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy9DaGVja2JveExpc3RRdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvQ2hlY2tib3hRdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvRHJvcGRvd25RdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvUmFkaW9MaXN0UXVlc3Rpb25GaWVsZC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL1RleHRRdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvdXRpbHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29uc3RhbnRzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvQXNzaWduZWRGaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9CYWRnZUZlYXR1cmVGaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9GaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9GcmVlUGFpZEZpbHRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL1Byb21vQ29kZUZpbHRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL1NlYXJjaC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL1NvcnQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9TdGF0dXNGaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9UaWNrZXRUeXBlRmlsdGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRm9ybUZvb3Rlci9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9MYWJlbHMvRXJyb3JMYWJlbC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9Mb2FkZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTXlPcmRlcnNUaWNrZXRzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL05vVGlja2V0c0ZvdW5kL1RpY2tldHNJY29uLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL05vVGlja2V0c0ZvdW5kL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyU3VtbWFyeS9PcmRlclN1bW1hcnlUYWJsZS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlclN1bW1hcnkvUmVmdW5kRW1haWxTdXBwb3J0LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyU3VtbWFyeS9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L0Fzc2lnbmVkVG9NZS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L0F0dGVuZGVlU3RhdHVzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvT3JkZXJMaXN0SXRlbS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L09yZGVyTGlzdFRpY2tldHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9PcmRlcnNMaXN0RGVza3RvcE1vYmlsZS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JlZnVuZFJlcXVlc3RzL1JlZnVuZERldGFpbHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmVmdW5kUmVxdWVzdHMvUmVmdW5kUmVxdWVzdGVkVGlja2V0LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JlZnVuZFJlcXVlc3RzL1JlZnVuZFN0YXR1cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SZWZ1bmRSZXF1ZXN0cy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SaWdodERyYXdlci9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9TdW1taXRIZWFkZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGFiV3JhcHBlci9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRBc3NpZ24vY29tcG9uZW50cy9Bc3NpZ25PcHRpb25zL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9jb21wb25lbnRzL0RlbGVnYXRlRm9ybS9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRBc3NpZ24vY29tcG9uZW50cy9IZWFkZXIvQXNzaWduSGVhZGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9jb21wb25lbnRzL0hlYWRlci9SZWFzc2lnbkhlYWRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRBc3NpZ24vY29tcG9uZW50cy9SZWFzc2lnbkZvcm0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0QXNzaWduL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL0NvbXBhbnlGaWVsZC9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9SZWdpc3RyYXRpb25EaXNjbGFpbWVyL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsSGVhZGVyL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL1RpY2tldEZvcm0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvVGlja2V0T3duZXJGaWVsZHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbnN0YW50cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0U3RhdHVzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1dpZGdldFRhYnMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvV2lkZ2V0V3JhcHBlci9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvaG9va3MvdXNlR2V0VGlja2V0LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9ob29rcy91c2VTY3JvbGxUb0Vycm9yLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9ob29rcy91c2VUaWNrZXREZXRhaWxzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9pMThuL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9yZWR1Y2VyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9zdG9yZS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvYXV0aC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvY29uc3RhbnRzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy91dGlscy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvc3VtbWl0VXRpbHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3V0aWxzL3RpY2tldFV0aWxzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0JhZGdlRmVhdHVyZUljb24vc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0NvcHlUZXh0L3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9Gb3JtRm9vdGVyL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9MYWJlbHMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL015T3JkZXJzVGlja2V0cy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTm9UaWNrZXRzRm91bmQvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyU3VtbWFyeS9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmVmdW5kUmVxdWVzdHMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JpZ2h0RHJhd2VyL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9TdW1taXRIZWFkZXIvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9jb21wb25lbnRzL0Fzc2lnbk9wdGlvbnMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9jb21wb25lbnRzL0hlYWRlci9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0QXNzaWduL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9SZWdpc3RyYXRpb25EaXNjbGFpbWVyL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9UaWNrZXRPd25lckZpZWxkcy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRTdGF0dXMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1dpZGdldFRhYnMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1dpZGdldFdyYXBwZXIvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2hlY2tDaXJjbGVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Nsb3NlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9Db250ZW50Q29weVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXJyb3JcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0V4cGFuZE1vcmVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ZpbHRlckxpc3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ltcG9ydEV4cG9ydFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvSW5mb1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvU2VhcmNoXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvQnV0dG9uXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9DaGVja2JveFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvRGlhbG9nXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9EaWFsb2dBY3Rpb25zXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9EaWFsb2dDb250ZW50XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9EaWFsb2dDb250ZW50VGV4dFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvRGlhbG9nVGl0bGVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL0RpdmlkZXJcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL0lucHV0QmFzZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL1RhYlwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvVGFic1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvVG9vbHRpcFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC91c2VNZWRpYVF1ZXJ5XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQHJlZHV4anMvdG9vbGtpdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBzZW50cnkvcmVhY3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJmb3JtaWtcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJpMThuZXh0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiaTE4bmV4dC1icm93c2VyLWxhbmd1YWdlZGV0ZWN0b3JcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJpZHRva2VuLXZlcmlmaWVyXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwibW9tZW50LXRpbWV6b25lXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9jb21wb25lbnRzL3Jhdy1odG1sXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9hY3Rpb25zXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9tZXRob2RzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9hY3Rpb25zXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9tZXRob2RzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9xdWVyeS1hY3Rpb25zXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicC1saW1pdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInByb3AtdHlwZXNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0LWkxOG5leHRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC1pbmZpbml0ZS1zY3JvbGwtY29tcG9uZW50XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QtcXItY29kZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0LXJlZHV4XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QvanN4LXJ1bnRpbWVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWR1eFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlZHV4LXBlcnNpc3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWR1eC1wZXJzaXN0L2ludGVncmF0aW9uL3JlYWN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVkdXgtcGVyc2lzdC9saWIvc3RvcmFnZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInl1cFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay9ydW50aW1lL2NvbXBhdCBnZXQgZGVmYXVsdCBleHBvcnQiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay9ydW50aW1lL21ha2UgbmFtZXNwYWNlIG9iamVjdCIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFwibXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0XCIsIFtdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcIm15LW9yZGVycy10aWNrZXRzLXdpZGdldFwiXSA9IGZhY3RvcnkoKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJteS1vcmRlcnMtdGlja2V0cy13aWRnZXRcIl0gPSBmYWN0b3J5KCk7XG59KSh0aGlzLCAoKSA9PiB7XG5yZXR1cm4gIiwiaW1wb3J0IHtcbiAgYXV0aEVycm9ySGFuZGxlcixcbiAgY3JlYXRlQWN0aW9uLFxuICBkZWxldGVSZXF1ZXN0LFxuICBnZXRSZXF1ZXN0LFxuICBwdXRSZXF1ZXN0LFxuICBzdGFydExvYWRpbmcsXG4gIHN0b3BMb2FkaW5nXG59IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL2FjdGlvbnNcIjtcbmltcG9ydCBwTGltaXQgZnJvbSBcInAtbGltaXRcIjtcbmltcG9ydCB7IGdldElkVG9rZW4gfSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9tZXRob2RzXCI7XG5pbXBvcnQgeyBvYmplY3RUb1F1ZXJ5U3RyaW5nIH0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvbWV0aG9kc1wiO1xuaW1wb3J0IElkVG9rZW5WZXJpZmllciBmcm9tIFwiaWR0b2tlbi12ZXJpZmllclwiO1xuaW1wb3J0IGkxOG4gZnJvbSBcImkxOG5leHRcIjtcbmltcG9ydCB7IGF1dGhQcm9taXNlUmVqZWN0LCBnZXRBY2Nlc3NUb2tlblNhZmVseSB9IGZyb20gXCIuL3V0aWxzL2F1dGhcIjtcbmltcG9ydCB7XG4gIERFRkFVTFRfSVRFTVNfUEVSX1BBR0UsXG4gIEVSUk9SX0NPREVTLFxuICBGSUZUWV9QRVJfUEFHRSxcbiAgRklMVEVSX0FDVElPTixcbiAgRklSU1RfUEFHRSxcbiAgUFJPTUlTRV9CQVRDSF9MSU1JVFxufSBmcm9tIFwiLi91dGlscy9jb25zdGFudHNcIjtcblxuZXhwb3J0IGNvbnN0IFJFU0VUX1NUQVRFID0gXCJSRVNFVF9TVEFURVwiO1xuZXhwb3J0IGNvbnN0IFJFU0VUX0ZJTFRFUiA9IFwiUkVTRVRfRklMVEVSXCI7XG5leHBvcnQgY29uc3QgUkVTRVRfQVBJX0VSUk9SID0gXCJSRVNFVF9BUElfRVJST1JcIjtcbmV4cG9ydCBjb25zdCBTRVRfU1RBVEUgPSBcIlNFVF9TVEFURVwiO1xuZXhwb3J0IGNvbnN0IFNFVF9BUElfRVJST1IgPSBcIlNFVF9BUElfRVJST1JcIjtcbmV4cG9ydCBjb25zdCBDSEFOR0VfRklMVEVSID0gXCJDSEFOR0VfRklMVEVSXCI7XG5leHBvcnQgY29uc3QgQ0hBTkdFX1NPUlQgPSBcIkNIQU5HRV9TT1JUXCI7XG5cbi8vIE9SREVSUyBDT05TVFNcbmV4cG9ydCBjb25zdCBHRVRfVVNFUl9PUkRFUlMgPSBcIkdFVF9PUkRFUlNcIjtcbmV4cG9ydCBjb25zdCBSRUZVTkRfT1JERVIgPSBcIlJFRlVORF9PUkRFUlwiO1xuZXhwb3J0IGNvbnN0IFNFVF9BQ1RJVkVfT1JERVJfSUQgPSBcIlNFVF9BQ1RJVkVfT1JERVJfSURcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVVNFUl9PUkRFUlMgPSBcIkZJTFRFUl9VU0VSX09SREVSU1wiO1xuXG4vLyBUSUNLRVRTIENPTlNUU1xuZXhwb3J0IGNvbnN0IEdFVF9NWV9BU1NJR05FRF9USUNLRVRTID0gXCJHRVRfTVlfQVNTSUdORURfVElDS0VUU1wiO1xuZXhwb3J0IGNvbnN0IFVQREFURV9USUNLRVQgPSBcIlVQREFURV9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBSRVNFVF9USUNLRVQgPSBcIlJFU0VUX1RJQ0tFVFwiO1xuZXhwb3J0IGNvbnN0IFJFQ0VJVkVfVElDS0VUID0gXCJSRUNFSVZFX1RJQ0tFVFwiO1xuZXhwb3J0IGNvbnN0IFJFTU9WRV9USUNLRVRfQVRURU5ERUUgPSBcIlJFTU9WRV9USUNLRVRfQVRURU5ERUVcIjtcbmV4cG9ydCBjb25zdCBBU1NJR05fVElDS0VUID0gXCJBU1NJR05fVElDS0VUXCI7XG5leHBvcnQgY29uc3QgREVMRUdBVEVfVElDS0VUID0gXCJERUxFR0FURV9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBSRUZVTkRfVElDS0VUID0gXCJSRUZVTkRfVElDS0VUXCI7XG5leHBvcnQgY29uc3QgUkVTRU5EX05PVElGSUNBVElPTiA9IFwiUkVTRU5EX05PVElGSUNBVElPTlwiO1xuZXhwb3J0IGNvbnN0IEdFVF9USUNLRVRTX0JZX09SREVSID0gXCJHRVRfVElDS0VUU19CWV9PUkRFUlwiO1xuZXhwb3J0IGNvbnN0IEdFVF9USUNLRVRTX0JZX09SREVSX0VSUk9SID0gXCJHRVRfVElDS0VUU19CWV9PUkRFUl9FUlJPUlwiO1xuZXhwb3J0IGNvbnN0IEdFVF9PUkRFUl9USUNLRVRfREVUQUlMUyA9IFwiR0VUX09SREVSX1RJQ0tFVF9ERVRBSUxTXCI7XG5leHBvcnQgY29uc3QgR0VUX1RJQ0tFVF9ERVRBSUxTID0gXCJHRVRfVElDS0VUX0RFVEFJTFNcIjtcbmV4cG9ydCBjb25zdCBSRUNFSVZFX0VYVFJBX1FVRVNUSU9OUyA9IFwiUkVDRUlWRV9FWFRSQV9RVUVTVElPTlNcIjtcbmV4cG9ydCBjb25zdCBUSUNLRVRfQVRURU5ERUVfS0VZUyA9IHtcbiAgZW1haWw6IFwiYXR0ZW5kZWVfZW1haWxcIixcbiAgZmlyc3ROYW1lOiBcImF0dGVuZGVlX2ZpcnN0X25hbWVcIixcbiAgbGFzdE5hbWU6IFwiYXR0ZW5kZWVfbGFzdF9uYW1lXCIsXG4gIGNvbXBhbnk6IFwiYXR0ZW5kZWVfY29tcGFueVwiLFxuICBkaXNjbGFpbWVyQWNjZXB0ZWQ6IFwiZGlzY2xhaW1lcl9hY2NlcHRlZFwiLFxuICBleHRyYVF1ZXN0aW9uczogXCJleHRyYV9xdWVzdGlvbnNcIlxufTtcbmV4cG9ydCBjb25zdCBVUERBVEVfVElDS0VUU19SRUZVTkRfUkVRVUVTVEVEID1cbiAgXCJVUERBVEVfVElDS0VUU19SRUZVTkRfUkVRVUVTVEVEXCI7XG5cbi8vIFVTRVIgQ09OVFNcbmV4cG9ydCBjb25zdCBTVEFSVF9MT0FESU5HX0lEUF9QUk9GSUxFID0gXCJTVEFSVF9MT0FESU5HX0lEUF9QUk9GSUxFXCI7XG5leHBvcnQgY29uc3QgU1RPUF9MT0FESU5HX0lEUF9QUk9GSUxFID0gXCJTVE9QX0xPQURJTkdfSURQX1BST0ZJTEVcIjtcbmV4cG9ydCBjb25zdCBVUERBVEVfSURQX1BST0ZJTEUgPSBcIlVQREFURV9JRFBfUFJPRklMRVwiO1xuZXhwb3J0IGNvbnN0IFNFVF9VU0VSID0gXCJTRVRfVVNFUlwiO1xuXG4vLyBTVU1NSVQgQ09OU1RTXG5leHBvcnQgY29uc3QgU0VUX1NVTU1JVCA9IFwiU0VUX1NVTU1JVFwiO1xuZXhwb3J0IGNvbnN0IEdFVF9NQUlOX0VYVFJBX1FVRVNUSU9OUyA9IFwiR0VUX01BSU5fRVhUUkFfUVVFU1RJT05TXCI7XG5leHBvcnQgY29uc3QgUkVDRUlWRV9NQVJLRVRJTkdfU0VUVElOR1MgPSBcIlJFQ0VJVkVfTUFSS0VUSU5HX1NFVFRJTkdTXCI7XG5leHBvcnQgY29uc3QgQ0xFQVJfTUFSS0VUSU5HX1NFVFRJTkdTID0gXCJDTEVBUl9NQVJLRVRJTkdfU0VUVElOR1NcIjtcblxuZXhwb3J0IGNvbnN0IHJlc2V0VGlja2V0ID0gKCkgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihSRVNFVF9USUNLRVQpKHt9KSk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVzZXRTdGF0ZSA9ICgpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oUkVTRVRfU1RBVEUpKHt9KSk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVzZXRGaWx0ZXIgPSAoKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFJFU0VUX0ZJTFRFUikoe30pKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZXNldEVycm9yID0gKCkgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihSRVNFVF9BUElfRVJST1IpKHt9KSk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2V0UmVkdWNlclN0YXRlID0gKHN1bW1pdCwgdXNlcikgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihTRVRfU1RBVEUpKHsgc3VtbWl0LCB1c2VyIH0pKTtcbn07XG5cbi8vIEZJTFRFUiAvIFNPUlQgQ09OU1RBTlRTXG5leHBvcnQgY29uc3QgRklMVEVSX1ZBUl9EQVRFID0gXCJGSUxURVJfVkFSX0RBVEVcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkUgPSBcIkZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRVwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfVElDS0VUX1RZUEUgPSBcIkZJTFRFUl9WQVJfVElDS0VUX1RZUEVcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRCA9IFwiRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORURcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX09XTkVSX1NUQVRVUyA9IFwiRklMVEVSX1ZBUl9PV05FUl9TVEFUVVNcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX1BST01PQ09ERSA9IFwiRklMVEVSX1ZBUl9QUk9NT0NPREVcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX0ZSRUVfUEFJRCA9IFwiRklMVEVSX1ZBUl9GUkVFX1BBSURcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX09SREVSX05VTUJFUiA9IFwiRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJcIjtcblxuLy8gRklMVEVSIC8gU09SVCBBQ1RJT05TXG5leHBvcnQgY29uc3QgY2hhbmdlRmlsdGVyID0gKGZpbHRlcikgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihDSEFOR0VfRklMVEVSKShmaWx0ZXIpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjaGFuZ2VTb3J0ID0gKHNvcnQpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oQ0hBTkdFX1NPUlQpKHNvcnQpKTtcbn07XG5cbi8vIEZJTFRFUi9TT1JUIFBBUlNFXG5jb25zdCBwYXJzZUZpbHRlciA9IChmaWx0ZXJPYmosIGZpbHRlckFjdGlvbikgPT4ge1xuICBjb25zdCBmaWx0ZXIgPSBbXTtcbiAgaWYgKGZpbHRlck9iai5GSUxURVJfVkFSX0RBVEUpIHtcbiAgICBmaWx0ZXIucHVzaChgY3JlYXRlZFtdJHtmaWx0ZXJPYmoubG93ZXJ9JiYke2ZpbHRlck9iai51cHBlcn1gKTtcbiAgfVxuICBpZiAoXG4gICAgZmlsdGVyT2JqLkZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRSAmJlxuICAgIGZpbHRlck9iai5GSUxURVJfVkFSX0JBREdFX0ZFQVRVUkUubGVuZ3RoID4gMFxuICApIHtcbiAgICBjb25zdCBmaWx0ZXJOYW1lID1cbiAgICAgIGZpbHRlckFjdGlvbiA9PT0gRklMVEVSX0FDVElPTi5PUkRFUlNcbiAgICAgICAgPyBcInRpY2tldHNfYmFkZ2VfZmVhdHVyZXNfaWRcIlxuICAgICAgICA6IFwiYmFkZ2VfZmVhdHVyZXNfaWRcIjtcbiAgICBmaWx0ZXIucHVzaChcbiAgICAgIGAke2ZpbHRlck5hbWV9PT0ke2ZpbHRlck9iai5GSUxURVJfVkFSX0JBREdFX0ZFQVRVUkUuam9pbihcInx8XCIpfWBcbiAgICApO1xuICB9XG4gIGlmIChcbiAgICBmaWx0ZXJPYmouRklMVEVSX1ZBUl9USUNLRVRfVFlQRSAmJlxuICAgIGZpbHRlck9iai5GSUxURVJfVkFSX1RJQ0tFVF9UWVBFLmxlbmd0aCA+IDBcbiAgKSB7XG4gICAgY29uc3QgZmlsdGVyTmFtZSA9XG4gICAgICBmaWx0ZXJBY3Rpb24gPT09IEZJTFRFUl9BQ1RJT04uT1JERVJTXG4gICAgICAgID8gXCJ0aWNrZXRzX3R5cGVfaWRcIlxuICAgICAgICA6IFwidGlja2V0X3R5cGVfaWRcIjtcbiAgICBmaWx0ZXIucHVzaChcbiAgICAgIGAke2ZpbHRlck5hbWV9PT0ke2ZpbHRlck9iai5GSUxURVJfVkFSX1RJQ0tFVF9UWVBFLmpvaW4oXCJ8fFwiKX1gXG4gICAgKTtcbiAgfVxuICBpZiAoZmlsdGVyT2JqLkZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEKSB7XG4gICAgY29uc3QgZmlsdGVyTmFtZSA9XG4gICAgICBmaWx0ZXJBY3Rpb24gPT09IEZJTFRFUl9BQ1RJT04uT1JERVJTXG4gICAgICAgID8gXCJ0aWNrZXRzX2Fzc2lnbmVkX3RvXCJcbiAgICAgICAgOiBcImFzc2lnbmVkX3RvXCI7XG4gICAgZmlsdGVyLnB1c2goYCR7ZmlsdGVyTmFtZX09PSR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEfWApO1xuICB9XG4gIGlmIChmaWx0ZXJPYmouRklMVEVSX1ZBUl9PV05FUl9TVEFUVVMpIHtcbiAgICBjb25zdCBmaWx0ZXJOYW1lID1cbiAgICAgIGZpbHRlckFjdGlvbiA9PT0gRklMVEVSX0FDVElPTi5PUkRFUlNcbiAgICAgICAgPyBcInRpY2tldHNfb3duZXJfc3RhdHVzXCJcbiAgICAgICAgOiBcIm93bmVyX3N0YXR1c1wiO1xuICAgIGZpbHRlci5wdXNoKGAke2ZpbHRlck5hbWV9PT0ke2ZpbHRlck9iai5GSUxURVJfVkFSX09XTkVSX1NUQVRVU31gKTtcbiAgfVxuICBpZiAoZmlsdGVyT2JqLkZJTFRFUl9WQVJfRlJFRV9QQUlEKSB7XG4gICAgY29uc3QgZmlsdGVyTmFtZSA9XG4gICAgICBmaWx0ZXJBY3Rpb24gPT09IEZJTFRFUl9BQ1RJT04uT1JERVJTID8gXCJhbW91bnRcIiA6IFwiZmluYWxfYW1vdW50XCI7XG4gICAgZmlsdGVyLnB1c2goXG4gICAgICBgJHtmaWx0ZXJOYW1lfSR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfRlJFRV9QQUlEID09PSBcIkZyZWVcIiA/IFwiPT0wXCIgOiBcIj4wXCJ9YFxuICAgICk7XG4gIH1cbiAgaWYgKGZpbHRlck9iai5GSUxURVJfVkFSX1BST01PQ09ERSkge1xuICAgIGNvbnN0IGZpbHRlck5hbWUgPVxuICAgICAgZmlsdGVyQWN0aW9uID09PSBGSUxURVJfQUNUSU9OLk9SREVSU1xuICAgICAgICA/IFwidGlja2V0c19wcm9tb19jb2RlXCJcbiAgICAgICAgOiBcInByb21vX2NvZGVcIjtcbiAgICBmaWx0ZXIucHVzaChgJHtmaWx0ZXJOYW1lfT1AJHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9QUk9NT0NPREV9YCk7XG4gIH1cbiAgaWYgKGZpbHRlck9iai5GSUxURVJfVkFSX09SREVSX05VTUJFUikge1xuICAgIGxldCBpbnB1dEZpbHRlcnMgPSBcIlwiO1xuXG4gICAgc3dpdGNoIChmaWx0ZXJBY3Rpb24pIHtcbiAgICAgIGNhc2UgRklMVEVSX0FDVElPTi5PUkRFUlM6IHtcbiAgICAgICAgaW5wdXRGaWx0ZXJzID0gYG51bWJlcj1AJHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJ9LHRpY2tldHNfb3duZXJfZW1haWw9QCR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfT1JERVJfTlVNQkVSfSx0aWNrZXRzX251bWJlcj1AJHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJ9YDtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIEZJTFRFUl9BQ1RJT04uVElDS0VUU19CWV9PUkRFUlM6IHtcbiAgICAgICAgaW5wdXRGaWx0ZXJzID0gYG51bWJlcj1AJHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJ9LG93bmVyX2VtYWlsPUAke2ZpbHRlck9iai5GSUxURVJfVkFSX09SREVSX05VTUJFUn1gO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgRklMVEVSX0FDVElPTi5FWFRFUk5BTF9USUNLRVRTOiB7XG4gICAgICAgIGlucHV0RmlsdGVycyA9IGBvcmRlcl9udW1iZXI9QCR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfT1JERVJfTlVNQkVSfSxudW1iZXI9QCR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfT1JERVJfTlVNQkVSfSxvcmRlcl9vd25lcl9lbWFpbD1AJHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJ9YDtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgZmlsdGVyLnB1c2goaW5wdXRGaWx0ZXJzKTtcbiAgfVxuICByZXR1cm4gZmlsdGVyO1xufTtcblxuY29uc3QgZ2V0U29ydERpcmVjdGlvbiA9IChkaXJlY3Rpb24pID0+IChkaXJlY3Rpb24gPT09IFwiYXNjXCIgPyBcIitcIiA6IFwiLVwiKTtcblxuLy8gcGF5bG9hZDogeyBodHRwQ29kZSwgdGl0bGUsIGh0bWw6IGNvbnRlbnQsIHR5cGUgfVxuY29uc3QgZXJyb3JIYW5kbGVyTm90aWZ5ID0gKHBheWxvYWQsIGNhbGxiYWNrKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFNFVF9BUElfRVJST1IpKHBheWxvYWQpKTtcbiAgaWYgKGNhbGxiYWNrKSBjYWxsYmFjaygpO1xufTtcblxuY29uc3QgY3VzdG9tQXV0aEVycm9ySGFuZGxlciA9IChlcnIsIHJlcykgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGF1dGhFcnJvckhhbmRsZXIoZXJyLCByZXMsIGVycm9ySGFuZGxlck5vdGlmeSkpO1xufTtcblxuY29uc3QgY3VzdG9tRmV0Y2hFcnJvckhhbmRsZXIgPSAocmVzcG9uc2UpID0+IChkaXNwYXRjaCkgPT4ge1xuICBjb25zdCBjb2RlID0gcmVzcG9uc2Uuc3RhdHVzO1xuICBsZXQgbXNnO1xuICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgc3dpdGNoIChjb2RlKSB7XG4gICAgY2FzZSBFUlJPUl9DT0RFU1tcIjQwM1wiXTpcbiAgICAgIG1zZyA9IGkxOG4udChcImVycm9ycy51c2VyX25vdF9hdXRoelwiKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgRVJST1JfQ09ERVNbXCI0MDFcIl06XG4gICAgICBtc2cgPSBpMThuLnQoXCJlcnJvcnMuc2Vzc2lvbl9leHBpcmVkXCIpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBFUlJPUl9DT0RFU1tcIjQxMlwiXTpcbiAgICAgIG1zZyA9IFwiXCI7XG4gICAgICBPYmplY3QuZW50cmllcyhyZXNwb25zZS5lcnJvcnMpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICBpZiAoTnVtYmVyLmlzTmFOKGtleSkpIHtcbiAgICAgICAgICBtc2cgPSBgJHttc2d9ICR7a2V5fTogYDtcbiAgICAgICAgfVxuXG4gICAgICAgIG1zZyA9IGAke21zZ30gJHt2YWx1ZX0gPGJyPmA7XG4gICAgICB9KTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgRVJST1JfQ09ERVNbXCI1MDBcIl06XG4gICAgICBtc2cgPSBpMThuLnQoXCJlcnJvcnMuc2VydmVyX2Vycm9yXCIpO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIG1zZyA9IHJlc3BvbnNlLnN0YXR1c1RleHQ7XG4gIH1cblxuICBkaXNwYXRjaChlcnJvckhhbmRsZXJOb3RpZnkoeyB0aXRsZTogaTE4bi50KFwiZXJyb3JzLmVycm9yXCIpLCBodG1sOiBtc2cgfSkpO1xufTtcblxuLy8gT1JERVJTIEFDVElPTlNcbmV4cG9ydCBjb25zdCBnZXRVc2VyT3JkZXJzID1cbiAgKFxuICAgIHtcbiAgICAgIHBhZ2UgPSBGSVJTVF9QQUdFLFxuICAgICAgcGVyUGFnZSA9IERFRkFVTFRfSVRFTVNfUEVSX1BBR0UsXG4gICAgICBmaWx0ZXIgPSB7fSxcbiAgICAgIHNvcnQgPSB7fVxuICAgIH0sXG4gICAgc2tpcExvYWRpbmdcbiAgKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHdpZGdldFN0YXRlOiB7IHN1bW1pdCB9XG4gICAgfSA9IGdldFN0YXRlKCk7XG5cbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gYXV0aFByb21pc2VSZWplY3QoKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgb3JkZXI6IFwiLWNyZWF0ZWRcIixcbiAgICAgIFwiZmlsdGVyW11cIjogW1wic3RhdHVzPT1QYWlkXCJdLFxuICAgICAgcmVsYXRpb25zOiBcImFwcGxpZWRfdGF4ZXMsbm9uZVwiLFxuICAgICAgZmllbGRzOlxuICAgICAgICBcImlkLGNyZWF0ZWQsbnVtYmVyLGFtb3VudCxjdXJyZW5jeSx0YXhlc19hbW91bnQsZGlzY291bnRfYW1vdW50LHRpY2tldHNfZXhjZXJwdF9ieV90aWNrZXRfdHlwZSxyZWZ1bmRlZF9hbW91bnQscmF3X2Ftb3VudCxhcHBsaWVkX3RheGVzLmlkLGFwcGxpZWRfdGF4ZXMubmFtZSxhcHBsaWVkX3RheGVzLmFtb3VudFwiLFxuICAgICAgcGFnZSxcbiAgICAgIHBlcl9wYWdlOiBwZXJQYWdlXG4gICAgfTtcblxuICAgIGlmIChPYmplY3Qua2V5cyhmaWx0ZXIpLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZpbHRlcnMgPSBwYXJzZUZpbHRlcihmaWx0ZXIsIEZJTFRFUl9BQ1RJT04uT1JERVJTKTtcbiAgICAgIHBhcmFtc1tcImZpbHRlcltdXCJdID0gWy4uLnBhcmFtc1tcImZpbHRlcltdXCJdLCAuLi5maWx0ZXJzXTtcbiAgICB9XG4gICAgaWYgKE9iamVjdC5rZXlzKHNvcnQpLmxlbmd0aCA+IDApIHtcbiAgICAgIHBhcmFtcy5vcmRlciA9IGAke2dldFNvcnREaXJlY3Rpb24oc29ydC5kaXJlY3Rpb24pfSR7c29ydC5uYW1lfWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdldFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKEdFVF9VU0VSX09SREVSUyksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy8ke3N1bW1pdC5pZH0vb3JkZXJzL21lYCxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXIsXG4gICAgICB7IGZpbHRlciwgc29ydCB9XG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKHBheWxvYWQpID0+IHBheWxvYWQpXG4gICAgICAuY2F0Y2goKGUpID0+IGUpXG4gICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgIGlmICghc2tpcExvYWRpbmcpIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBzZXRBY3RpdmVPcmRlcklkID0gKG9yZGVySWQpID0+IGFzeW5jIChkaXNwYXRjaCkgPT5cbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFNFVF9BQ1RJVkVfT1JERVJfSUQpKG9yZGVySWQpKTtcblxuLy8gVVNFUiBBQ1RJT05TXG5leHBvcnQgY29uc3Qgc2V0VXNlciA9ICh1c2VyKSA9PiAoZGlzcGF0Y2gpID0+XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihTRVRfVVNFUikodXNlcikpO1xuXG4vLyBUSUNLRVQgQUNUSU9OU1xuXG5leHBvcnQgY29uc3QgZ2V0VXNlclRpY2tldHMgPVxuICAoXG4gICAge1xuICAgICAgcGFnZSA9IEZJUlNUX1BBR0UsXG4gICAgICBwZXJQYWdlID0gREVGQVVMVF9JVEVNU19QRVJfUEFHRSxcbiAgICAgIGZpbHRlciA9IHt9LFxuICAgICAgc29ydCA9IHt9XG4gICAgfSxcbiAgICBza2lwTG9hZGluZ1xuICApID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgd2lkZ2V0U3RhdGU6IHsgc3VtbWl0LCB1c2VyIH1cbiAgICB9ID0gZ2V0U3RhdGUoKTtcbiAgICBjb25zdCB7IHVzZXJQcm9maWxlIH0gPSB1c2VyO1xuICAgIGlmICghc3VtbWl0KSByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gYXV0aFByb21pc2VSZWplY3QoKTtcblxuICAgIGNvbnN0IGZpZWxkcyA9IFtcbiAgICAgIFwib3JkZXIuaWRcIixcbiAgICAgIFwib3JkZXIub3duZXJfZmlyc3RfbmFtZVwiLFxuICAgICAgXCJvcmRlci5vd25lcl9sYXN0X25hbWVcIixcbiAgICAgIFwib3JkZXIub3duZXJfZW1haWxcIixcbiAgICAgIFwib3duZXIuaWRcIixcbiAgICAgIFwib3duZXIuZW1haWxcIixcbiAgICAgIFwib3duZXIuZmlyc3RfbmFtZVwiLFxuICAgICAgXCJvd25lci5sYXN0X25hbWVcIixcbiAgICAgIFwib3duZXIuc3RhdHVzXCIsXG4gICAgICBcImJhZGdlLm5vbmVcIixcbiAgICAgIFwicHJvbW9fY29kZS5pZFwiLFxuICAgICAgXCJwcm9tb19jb2RlLmNvZGVcIixcbiAgICAgIFwicHJvbW9fY29kZS5hbGxvd3NfdG9fZGVsZWdhdGVcIixcbiAgICAgIFwicHJvbW9fY29kZS5hbGxvd3NfdG9fcmVhc3NpZ25cIixcbiAgICAgIFwidGlja2V0X3R5cGUuaWRcIixcbiAgICAgIFwidGlja2V0X3R5cGUubmFtZVwiLFxuICAgICAgXCJ0aWNrZXRfdHlwZS5hbGxvd3NfdG9fZGVsZWdhdGVcIixcbiAgICAgIFwidGlja2V0X3R5cGUuYWxsb3dzX3RvX3JlYXNzaWduXCJcbiAgICBdO1xuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgXCJmaWx0ZXJbXVwiOiBbXCJzdGF0dXM9PVBhaWRcIiwgYG9yZGVyX293bmVyX2lkPD4ke3VzZXJQcm9maWxlLmlkfWBdLFxuICAgICAgZXhwYW5kOiBcIm9yZGVyLG93bmVyLHRpY2tldF90eXBlLGJhZGdlLGJhZGdlLmZlYXR1cmVzLHByb21vX2NvZGVcIixcbiAgICAgIG9yZGVyOiBcIi1pZFwiLFxuICAgICAgZmllbGRzOiBmaWVsZHMuam9pbihcIixcIiksXG4gICAgICByZWxhdGlvbnM6IFwibm9uZSxiYWRnZS5mZWF0dXJlcyxwcm9tb19jb2RlLm5vbmUsdGlja2V0X3R5cGUubm9uZVwiLFxuICAgICAgcGFnZSxcbiAgICAgIHBlcl9wYWdlOiBwZXJQYWdlXG4gICAgfTtcbiAgICBpZiAoT2JqZWN0LmtleXMoZmlsdGVyKS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBmaWx0ZXJzID0gcGFyc2VGaWx0ZXIoZmlsdGVyLCBGSUxURVJfQUNUSU9OLkVYVEVSTkFMX1RJQ0tFVFMpO1xuICAgICAgcGFyYW1zW1wiZmlsdGVyW11cIl0gPSBbLi4ucGFyYW1zW1wiZmlsdGVyW11cIl0sIC4uLmZpbHRlcnNdO1xuICAgIH1cbiAgICBpZiAoT2JqZWN0LmtleXMoc29ydCkubGVuZ3RoID4gMCkge1xuICAgICAgcGFyYW1zLm9yZGVyID0gYCR7Z2V0U29ydERpcmVjdGlvbihzb3J0LmRpcmVjdGlvbil9JHtzb3J0Lm5hbWV9YDtcbiAgICB9XG4gICAgcmV0dXJuIGdldFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKEdFVF9NWV9BU1NJR05FRF9USUNLRVRTKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzLyR7c3VtbWl0LmlkfS9vcmRlcnMvYWxsL3RpY2tldHMvbWVgLFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC5jYXRjaCgoZSkgPT4gZSlcbiAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgaWYgKCFza2lwTG9hZGluZykgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldHNCeU9yZGVyID1cbiAgKHtcbiAgICBvcmRlcklkLFxuICAgIHBhZ2UgPSBGSVJTVF9QQUdFLFxuICAgIHBlclBhZ2UgPSBERUZBVUxUX0lURU1TX1BFUl9QQUdFLFxuICAgIGZpbHRlcixcbiAgICBzb3J0XG4gIH0pID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBhdXRoUHJvbWlzZVJlamVjdCgpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIFwiZmlsdGVyW11cIjogW10sXG4gICAgICBmaWVsZHM6XG4gICAgICAgIFwiYmFkZ2Uubm9uZSxwcm9tb19jb2RlLmlkLHByb21vX2NvZGUuY29kZSxwcm9tb19jb2RlLmFsbG93c190b19kZWxlZ2F0ZSxwcm9tb19jb2RlLmFsbG93c190b19yZWFzc2lnbix0aWNrZXRfdHlwZS5pZCx0aWNrZXRfdHlwZS5uYW1lLHRpY2tldF90eXBlLmFsbG93c190b19kZWxlZ2F0ZSx0aWNrZXRfdHlwZS5hbGxvd3NfdG9fcmVhc3NpZ25cIixcbiAgICAgIGV4cGFuZDpcbiAgICAgICAgXCJyZWZ1bmRfcmVxdWVzdHMscmVmdW5kX3JlcXVlc3RzLnJlZnVuZGVkX3RheGVzLHJlZnVuZF9yZXF1ZXN0cy5yZWZ1bmRlZF90YXhlcy50YXgsb3duZXIsb3duZXIuZXh0cmFfcXVlc3Rpb25zLGJhZGdlLGJhZGdlLmZlYXR1cmVzLHRpY2tldF90eXBlLHByb21vX2NvZGVcIixcbiAgICAgIG9yZGVyOiBcIitpZFwiLFxuICAgICAgcmVsYXRpb25zOiBcIm5vbmUsYmFkZ2UuZmVhdHVyZXMscHJvbW9fY29kZS5ub25lLHRpY2tldF90eXBlLm5vbmVcIixcbiAgICAgIHBhZ2UsXG4gICAgICBwZXJfcGFnZTogcGVyUGFnZVxuICAgIH07XG4gICAgaWYgKE9iamVjdC5rZXlzKGZpbHRlcikubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZmlsdGVycyA9IHBhcnNlRmlsdGVyKGZpbHRlciwgRklMVEVSX0FDVElPTi5USUNLRVRTX0JZX09SREVSUyk7XG4gICAgICBwYXJhbXNbXCJmaWx0ZXJbXVwiXSA9IFsuLi5wYXJhbXNbXCJmaWx0ZXJbXVwiXSwgLi4uZmlsdGVyc107XG4gICAgfVxuICAgIGlmIChPYmplY3Qua2V5cyhzb3J0KS5sZW5ndGggPiAwKSB7XG4gICAgICBwYXJhbXMub3JkZXIgPSBgJHtnZXRTb3J0RGlyZWN0aW9uKHNvcnQuZGlyZWN0aW9uKX0ke3NvcnQubmFtZX1gO1xuICAgIH1cbiAgICByZXR1cm4gZ2V0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oR0VUX1RJQ0tFVFNfQllfT1JERVIpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHNgLFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihHRVRfVElDS0VUU19CWV9PUkRFUl9FUlJPUikpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgcmVzZW5kTm90aWZpY2F0aW9uID1cbiAgKHRpY2tldCkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gYXV0aFByb21pc2VSZWplY3QoKTtcblxuICAgIGNvbnN0IHsgbWVzc2FnZSB9ID0gdGlja2V0O1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3Qgb3JkZXJJZCA9IHRpY2tldC5vcmRlciA/IHRpY2tldC5vcmRlci5pZCA6IHRpY2tldC5vcmRlcl9pZDtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW5cbiAgICB9O1xuXG4gICAgcmV0dXJuIHB1dFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKFJFU0VORF9OT1RJRklDQVRJT04pLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXQuaWR9L2F0dGVuZGVlL3JlaW52aXRlYCxcbiAgICAgIHsgbWVzc2FnZSB9LFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgcmVmdW5kVGlja2V0ID1cbiAgKHsgdGlja2V0IH0pID0+XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBhdXRoUHJvbWlzZVJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3Qgb3JkZXJJZCA9IHRpY2tldC5vcmRlciA/IHRpY2tldC5vcmRlci5pZCA6IHRpY2tldC5vcmRlcl9pZDtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6IFwicmVmdW5kX3JlcXVlc3RzLHRpY2tldF90eXBlXCIsXG4gICAgICBmaWVsZHM6IFwicmVmdW5kX3JlcXVlc3RzLnN0YXR1c1wiXG4gICAgfTtcblxuICAgIHJldHVybiBkZWxldGVSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihSRUZVTkRfVElDS0VUKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzLyR7dGlja2V0LmlkfS9yZWZ1bmRgLFxuICAgICAge30sXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKHBheWxvYWQpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IHJlZnVuZEJ1bGtUaWNrZXRzID1cbiAgKHsgdGlja2V0cyB9KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gpID0+IHtcbiAgICBjb25zdCBsaW1pdCA9IHBMaW1pdChQUk9NSVNFX0JBVENIX0xJTUlUKTtcbiAgICBjb25zdCBhbGxSZWZ1bmRUaWNrZXRDYWxscyA9IHRpY2tldHMubWFwKCh0aWNrZXQpID0+XG4gICAgICBsaW1pdCgoKSA9PiBkaXNwYXRjaChyZWZ1bmRUaWNrZXQoeyB0aWNrZXQgfSkpKVxuICAgICk7XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFsuLi5hbGxSZWZ1bmRUaWNrZXRDYWxsc10pXG4gICAgICAudGhlbigocmVzKSA9PiB7XG4gICAgICAgIGNvbnN0IHN1Y2Nlc3NmdWxseVJlcXVlc3RlZCA9IHJlc1xuICAgICAgICAgIC5maWx0ZXIoKHIpID0+IHIucmVzcG9uc2U/LnJlZnVuZF9yZXF1ZXN0cz8ubGVuZ3RoKVxuICAgICAgICAgIC5tYXAoKHIpID0+IHIucmVzcG9uc2UpO1xuICAgICAgICByZXR1cm4gc3VjY2Vzc2Z1bGx5UmVxdWVzdGVkO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4gZSk7XG4gIH07XG5cbi8vIHVwZGF0ZSB0aGUgdGlja2V0cyB0aGF0IGhhdmUgYmVlbiBzdWNlc3NmdWxseSByZWZ1bmRlZFxuZXhwb3J0IGNvbnN0IHVwZGF0ZVRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQgPVxuICAodGlja2V0c1JlZnVuZFJlcXVlc3RlZCkgPT4gKGRpc3BhdGNoKSA9PlxuICAgIGRpc3BhdGNoKFxuICAgICAgY3JlYXRlQWN0aW9uKFVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURUQpKHRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQpXG4gICAgKTtcblxuLy8gU1VNTUlUIEFDVElPTlNcblxuZXhwb3J0IGNvbnN0IGdldEV4dHJhUXVlc3Rpb25zID1cbiAgKGF0dGVuZGVlSWQpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgd2lkZ2V0U3RhdGU6IHsgc3VtbWl0IH1cbiAgICB9ID0gZ2V0U3RhdGUoKTtcblxuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBhdXRoUHJvbWlzZVJlamVjdCgpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgcGFnZTogMSxcbiAgICAgIHBlcl9wYWdlOiBGSUZUWV9QRVJfUEFHRSxcbiAgICAgIGV4cGFuZDogXCIqc3ViX3F1ZXN0aW9uX3J1bGVzLCpzdWJfcXVlc3Rpb24sKnZhbHVlc1wiLFxuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIFwiZmlsdGVyW11cIjogXCJ0aWNrZXRzX2V4Y2x1ZGVfaW5hY3RpdmVzPT10cnVlXCJcbiAgICB9O1xuXG4gICAgY29uc3QgZW5kcG9pbnQgPSBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy8ke3N1bW1pdC5pZH0vYXR0ZW5kZWVzLyR7YXR0ZW5kZWVJZH0vYWxsb3dlZC1leHRyYS1xdWVzdGlvbnNgO1xuXG4gICAgcmV0dXJuIGdldFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKFJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TKSxcbiAgICAgIGVuZHBvaW50LFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaCkudGhlbigoKSA9PiB7XG4gICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldCA9XG4gICh0aWNrZXRJZCwgb3JkZXJJZCkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gYXV0aFByb21pc2VSZWplY3QoKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6XG4gICAgICAgIFwib3duZXIsb3duZXIuZXh0cmFfcXVlc3Rpb25zLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbix0aWNrZXRfdHlwZSxvcmRlcixwcm9tb19jb2RlXCIsXG4gICAgICByZWxhdGlvbnM6XG4gICAgICAgIFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5ub25lLHByb21vX2NvZGUubm9uZSx0aWNrZXRfdHlwZS5ub25lXCIsXG4gICAgICBmaWVsZHM6XG4gICAgICAgIFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLmlkLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5uYW1lLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi50eXBlLHByb21vX2NvZGUuaWQscHJvbW9fY29kZS5jb2RlLHByb21vX2NvZGUuYWxsb3dzX3RvX2RlbGVnYXRlLHByb21vX2NvZGUuYWxsb3dzX3RvX3JlYXNzaWduLHRpY2tldF90eXBlLmlkLHRpY2tldF90eXBlLm5hbWUsdGlja2V0X3R5cGUuYWxsb3dzX3RvX2RlbGVnYXRlLHRpY2tldF90eXBlLmFsbG93c190b19yZWFzc2lnbix0aWNrZXRfdHlwZS5jb3N0LHRpY2tldF90eXBlLmNyZWF0ZWRcIlxuICAgIH07XG5cbiAgICBjb25zdCBlbmRwb2ludCA9IGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzLyR7dGlja2V0SWR9YDtcblxuICAgIHJldHVybiBnZXRSZXF1ZXN0KFxuICAgICAgY3JlYXRlQWN0aW9uKFJFU0VUX1RJQ0tFVCksXG4gICAgICBjcmVhdGVBY3Rpb24oUkVDRUlWRV9USUNLRVQpLFxuICAgICAgZW5kcG9pbnQsXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKS5maW5hbGx5KCgpID0+IHtcbiAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgIH0pO1xuICB9O1xuXG5jb25zdCBub3JtYWxpemVUaWNrZXQgPSAoZW50aXR5KSA9PiB7XG4gIGNvbnN0IG5vcm1hbGl6ZWRFbnRpdHkgPSB7IC4uLmVudGl0eSB9O1xuXG4gIGlmICghZW50aXR5LmF0dGVuZGVlX2NvbXBhbnkuaWQpIHtcbiAgICBub3JtYWxpemVkRW50aXR5LmF0dGVuZGVlX2NvbXBhbnkgPSBlbnRpdHkuYXR0ZW5kZWVfY29tcGFueTtcbiAgfSBlbHNlIHtcbiAgICBkZWxldGUgbm9ybWFsaXplZEVudGl0eS5hdHRlbmRlZV9jb21wYW55O1xuICAgIG5vcm1hbGl6ZWRFbnRpdHkuYXR0ZW5kZWVfY29tcGFueV9pZCA9IGVudGl0eS5hdHRlbmRlZV9jb21wYW55LmlkO1xuICB9XG5cbiAgcmV0dXJuIG5vcm1hbGl6ZWRFbnRpdHk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVmcmVzaFByb2ZpbGUgPVxuICAoZGF0YSwgY29tcGFueSwgdGlja2V0T3duZXIpID0+XG4gIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgdXBkYXRlUHJvZmlsZSB9KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgd2lkZ2V0U3RhdGU6IHsgdXNlciB9XG4gICAgfSA9IGdldFN0YXRlKCk7XG4gICAgY29uc3QgeyB1c2VyUHJvZmlsZSB9ID0gdXNlcjtcblxuICAgIC8vIGVtYWlsIHNob3VsZCBtYXRjaCAoIG9ubHkgdXBkYXRlIG15IHByb2ZpbGUgaXMgdGlja2V0IGJlbG9uZ3MgdG8gbWUhKVxuICAgIC8vIGFuZCBpZiB0aGUgdGlja2V0IGRvZXNuJ3QgaGF2ZSBhIG1hbmFnZXJcbiAgICAvLyBDaGVjayBpZiB0aGVyZSdzIGNoYW5nZXMgaW4gdGhlIHRpY2tldCBkYXRhIHRvIHVwZGF0ZSB0aGUgcHJvZmlsZVxuICAgIGNvbnN0IHtcbiAgICAgIGF0dGVuZGVlX2VtYWlsLFxuICAgICAgYXR0ZW5kZWVfZmlyc3RfbmFtZSxcbiAgICAgIGF0dGVuZGVlX2xhc3RfbmFtZSxcbiAgICAgIGF0dGVuZGVlX2NvbXBhbnlcbiAgICB9ID0gZGF0YTtcbiAgICBjb25zdCBoYXNNYW5hZ2VyID0gdGlja2V0T3duZXI/Lm1hbmFnZXI/LmlkIHx8IHRpY2tldE93bmVyPy5tYW5hZ2VyX2lkO1xuICAgIGNvbnN0IGl0c01lID0gdXNlclByb2ZpbGUuZW1haWwgPT09IGF0dGVuZGVlX2VtYWlsO1xuICAgIGNvbnN0IHByb2ZpbGVDaGFuZ2VkID1cbiAgICAgIGF0dGVuZGVlX2NvbXBhbnkubmFtZSAhPT0gY29tcGFueSB8fFxuICAgICAgYXR0ZW5kZWVfZmlyc3RfbmFtZSAhPT0gdXNlclByb2ZpbGUuZmlyc3RfbmFtZSB8fFxuICAgICAgYXR0ZW5kZWVfbGFzdF9uYW1lICE9PSB1c2VyUHJvZmlsZS5sYXN0X25hbWU7XG5cbiAgICBpZiAoaXRzTWUgJiYgIWhhc01hbmFnZXIgJiYgcHJvZmlsZUNoYW5nZWQpIHtcbiAgICAgIGNvbnN0IG5ld1Byb2ZpbGUgPSB7XG4gICAgICAgIGZpcnN0X25hbWU6IGF0dGVuZGVlX2ZpcnN0X25hbWUsXG4gICAgICAgIGxhc3RfbmFtZTogYXR0ZW5kZWVfbGFzdF9uYW1lLFxuICAgICAgICBjb21wYW55OiBhdHRlbmRlZV9jb21wYW55Lm5hbWUgfHwgYXR0ZW5kZWVfY29tcGFueVxuICAgICAgfTtcblxuICAgICAgLy8gdGhpcyBpcyBhIGNhbGxiYWNrIG1ldGhvZCB0aGF0IHVwZGF0ZXMgdXNlclByb2ZpbGUgaW4gQVBJIGFuZCBldmVudC1zaXRlXG4gICAgICB1cGRhdGVQcm9maWxlKG5ld1Byb2ZpbGUpO1xuICAgIH1cbiAgfTtcblxuZXhwb3J0IGNvbnN0IHNhdmVUaWNrZXREZXRhaWxzID1cbiAgKHRpY2tldCwgYW5zd2VycykgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gYXV0aFByb21pc2VSZWplY3QoKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6XG4gICAgICAgIFwicmVmdW5kX3JlcXVlc3RzLG93bmVyLG93bmVyLmV4dHJhX3F1ZXN0aW9ucyxiYWRnZSxiYWRnZS5mZWF0dXJlcyx0aWNrZXRfdHlwZVwiXG4gICAgfTtcblxuICAgIGNvbnN0IGlkVG9rZW4gPSBnZXRJZFRva2VuKCk7XG4gICAgbGV0IGNvbXBhbnkgPSBcIlwiO1xuICAgIGlmIChpZFRva2VuKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCB2ZXJpZmllciA9IG5ldyBJZFRva2VuVmVyaWZpZXIoKTtcbiAgICAgICAgY29uc3Qgand0ID0gdmVyaWZpZXIuZGVjb2RlKGlkVG9rZW4pO1xuICAgICAgICBjb21wYW55ID0gand0LnBheWxvYWQuY29tcGFueTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJlcnJvclwiLCBlKTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgbm9ybWFsaXplZEVudGl0eSA9IG5vcm1hbGl6ZVRpY2tldChhbnN3ZXJzKTtcblxuICAgIHJldHVybiBwdXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihVUERBVEVfVElDS0VUKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvYWxsL3RpY2tldHMvJHt0aWNrZXQuaWR9YCxcbiAgICAgIG5vcm1hbGl6ZWRFbnRpdHksXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oYXN5bmMgKCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChyZWZyZXNoUHJvZmlsZShhbnN3ZXJzLCBjb21wYW55LCB0aWNrZXQub3duZXIpKTtcbiAgICAgIH0pXG4gICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBhc3NpZ25BdHRlbmRlZSA9XG4gIChvcmRlcklkLCB0aWNrZXRJZCwgYXR0ZW5kZWVfZW1haWwsIG1lc3NhZ2UgPSBudWxsKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKTtcblxuICAgIGNvbnN0IHBheWxvYWQgPSB7IGF0dGVuZGVlX2VtYWlsIH07XG4gICAgaWYgKG1lc3NhZ2UpIHBheWxvYWQubWVzc2FnZSA9IG1lc3NhZ2U7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gYXV0aFByb21pc2VSZWplY3QoKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6XG4gICAgICAgIFwib3duZXIsb3duZXIuZXh0cmFfcXVlc3Rpb25zLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbix0aWNrZXRfdHlwZSxvcmRlclwiLFxuICAgICAgcmVsYXRpb25zOiBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5ub25lXCIsXG4gICAgICBmaWVsZHM6XG4gICAgICAgIFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLmlkLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5uYW1lLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi50eXBlXCJcbiAgICB9O1xuXG4gICAgcmV0dXJuIHB1dFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKEFTU0lHTl9USUNLRVQpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXRJZH0vYXR0ZW5kZWVgLFxuICAgICAgcGF5bG9hZCxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCByZW1vdmVUaWNrZXQgPVxuICAob3JkZXJJZCwgdGlja2V0SWQpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIGF1dGhQcm9taXNlUmVqZWN0KCk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOiBcIm9yZGVyLCBvd25lciwgb3duZXIuZXh0cmFfcXVlc3Rpb25zLCBvcmRlci5zdW1taXRcIlxuICAgIH07XG5cbiAgICByZXR1cm4gZGVsZXRlUmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oUkVNT1ZFX1RJQ0tFVF9BVFRFTkRFRSksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldElkfS9hdHRlbmRlZWAsXG4gICAgICB7fSxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpO1xuICB9O1xuXG5leHBvcnQgY29uc3QgcmVhc3NpZ25UaWNrZXQgPVxuICAob3JkZXJJZCwgdGlja2V0SWQsIGVtYWlsLCBtZXNzYWdlKSA9PiBhc3luYyAoZGlzcGF0Y2gpID0+XG4gICAgZGlzcGF0Y2gocmVtb3ZlVGlja2V0KG9yZGVySWQsIHRpY2tldElkKSkudGhlbigoKSA9PlxuICAgICAgZGlzcGF0Y2goYXNzaWduQXR0ZW5kZWUob3JkZXJJZCwgdGlja2V0SWQsIGVtYWlsLCBtZXNzYWdlKSlcbiAgICApO1xuXG5leHBvcnQgY29uc3QgdW5hc3NpZ25UaWNrZXQgPSAob3JkZXJJZCwgdGlja2V0SWQpID0+IGFzeW5jIChkaXNwYXRjaCkgPT5cbiAgZGlzcGF0Y2gocmVtb3ZlVGlja2V0KG9yZGVySWQsIHRpY2tldElkKSkudGhlbigoKSA9PiBkaXNwYXRjaChzdG9wTG9hZGluZygpKSk7XG5cbmV4cG9ydCBjb25zdCBkZWxlZ2F0ZVRpY2tldCA9XG4gIChvcmRlcklkLCB0aWNrZXRJZCwgZmlyc3ROYW1lLCBsYXN0TmFtZSwgZW1haWwpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpO1xuICAgIGNvbnN0IHtcbiAgICAgIHdpZGdldFN0YXRlOiB7IHN1bW1pdCB9XG4gICAgfSA9IGdldFN0YXRlKCk7XG4gICAgY29uc3QgcGF5bG9hZCA9IHtcbiAgICAgIGF0dGVuZGVlX2ZpcnN0X25hbWU6IGZpcnN0TmFtZSxcbiAgICAgIGF0dGVuZGVlX2xhc3RfbmFtZTogbGFzdE5hbWUsXG4gICAgICBhdHRlbmRlZV9lbWFpbDogZW1haWxcbiAgICB9O1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIGF1dGhQcm9taXNlUmVqZWN0KCk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOlxuICAgICAgICBcIm93bmVyLG93bmVyLmV4dHJhX3F1ZXN0aW9ucyxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24sdGlja2V0X3R5cGUsb3JkZXJcIixcbiAgICAgIHJlbGF0aW9uczogXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubm9uZVwiLFxuICAgICAgZmllbGRzOlxuICAgICAgICBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5pZCxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubmFtZSxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24udHlwZVwiXG4gICAgfTtcblxuICAgIHJldHVybiBwdXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihERUxFR0FURV9USUNLRVQpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvJHtzdW1taXQuaWR9L29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXRJZH0vZGVsZWdhdGVgLFxuICAgICAgcGF5bG9hZCxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBzYXZlRXh0cmFRdWVzdGlvbnMgPVxuICAodGlja2V0LCBhbnN3ZXJzKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBhdXRoUHJvbWlzZVJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDpcbiAgICAgICAgXCJyZWZ1bmRfcmVxdWVzdHMsb3duZXIsb3duZXIuZXh0cmFfcXVlc3Rpb25zLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbixiYWRnZSxiYWRnZS5mZWF0dXJlcyx0aWNrZXRfdHlwZSxvcmRlclwiLFxuICAgICAgcmVsYXRpb25zOiBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5ub25lXCIsXG4gICAgICBmaWVsZHM6XG4gICAgICAgIFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLmlkLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5uYW1lLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi50eXBlXCJcbiAgICB9O1xuXG4gICAgY29uc3Qgbm9ybWFsaXplZEFucyA9IG5vcm1hbGl6ZVRpY2tldChhbnN3ZXJzKTtcblxuICAgIHJldHVybiBwdXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihVUERBVEVfVElDS0VUKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvYWxsL3RpY2tldHMvJHt0aWNrZXQuaWR9YCxcbiAgICAgIG5vcm1hbGl6ZWRBbnMsXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oYXN5bmMgKCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRQREYgPVxuICAodGlja2V0KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBhdXRoUHJvbWlzZVJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlblxuICAgIH07XG5cbiAgICBjb25zdCBvcmRlcklkID0gdGlja2V0Lm9yZGVyID8gdGlja2V0Lm9yZGVyLmlkIDogdGlja2V0Lm9yZGVyX2lkO1xuXG4gICAgY29uc3QgcXVlcnlTdHJpbmcgPSBvYmplY3RUb1F1ZXJ5U3RyaW5nKHBhcmFtcyk7XG4gICAgY29uc3QgYXBpVXJsID0gYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXQuaWR9L3BkZj8ke3F1ZXJ5U3RyaW5nfWA7XG5cbiAgICByZXR1cm4gZmV0Y2goYXBpVXJsLCB7XG4gICAgICByZXNwb25zZVR5cGU6IFwiQmxvYlwiLFxuICAgICAgaGVhZGVyczogeyBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL3BkZlwiIH1cbiAgICB9KVxuICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgICB0aHJvdyByZXNwb25zZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2UuYmxvYigpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLnRoZW4oKHBkZikgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpO1xuICAgICAgICBjb25zdCB1cmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChwZGYpO1xuICAgICAgICBsaW5rLmhyZWYgPSB1cmw7XG4gICAgICAgIGxpbmsuZG93bmxvYWQgPSBcInRpY2tldC5wZGZcIjtcbiAgICAgICAgbGluay5kaXNwYXRjaEV2ZW50KG5ldyBNb3VzZUV2ZW50KFwiY2xpY2tcIikpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaChjdXN0b21GZXRjaEVycm9ySGFuZGxlcik7XG4gIH07XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIGZvcndhcmRSZWYgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgTUFYX0lOSVRJQUxTID0gMjtcblxuY29uc3QgQmFkZ2VGZWF0dXJlSWNvbiA9IGZvcndhcmRSZWYoXG4gICh7IG5hbWUsIGltYWdlLCBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICAgIGNvbnN0IFtpbWFnZUxvYWRlZCwgc2V0SW1hZ2VMb2FkZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFtpbWFnZUVycm9yLCBzZXRJbWFnZUVycm9yXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICAgIGNvbnN0IHNob3dGYWxsYmFjayA9ICFpbWFnZSB8fCBpbWFnZUVycm9yO1xuXG4gICAgLy8gRXh0cmFjdCB1cCB0byAyIGluaXRpYWxzIGZyb20gYmFkZ2UgZmVhdHVyZSBuYW1lIChlLmcuLCBcIkJvYXJkIE1lbWJlclwiIC0+IFwiQk1cIilcbiAgICBjb25zdCBpbml0aWFscyA9IG5hbWVcbiAgICAgIC5zcGxpdChcIiBcIilcbiAgICAgIC5maWx0ZXIoKHdvcmQpID0+IHdvcmQubGVuZ3RoID4gMClcbiAgICAgIC5tYXAoKHdvcmQpID0+IHdvcmRbMF0pXG4gICAgICAuam9pbihcIlwiKVxuICAgICAgLnN1YnN0cmluZygwLCBNQVhfSU5JVElBTFMpXG4gICAgICAudG9VcHBlckNhc2UoKTtcblxuICAgIHJldHVybiAoXG4gICAgICA8ZGl2XG4gICAgICAgIHJlZj17cmVmfVxuICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5iYWRnZUZlYXR1cmVJY29ufSR7Y2xhc3NOYW1lID8gYCAke2NsYXNzTmFtZX1gIDogJyd9YH1cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmdcbiAgICAgICAgey4uLnByb3BzfVxuICAgICAgPlxuICAgICAgICB7aW1hZ2UgJiYgIWltYWdlRXJyb3IgJiYgKFxuICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmJhZGdlRmVhdHVyZUltYWdlfVxuICAgICAgICAgICAgc3JjPXtpbWFnZX1cbiAgICAgICAgICAgIGFsdD17bmFtZX1cbiAgICAgICAgICAgIG9uTG9hZD17KCkgPT4gc2V0SW1hZ2VMb2FkZWQodHJ1ZSl9XG4gICAgICAgICAgICBvbkVycm9yPXsoKSA9PiBzZXRJbWFnZUVycm9yKHRydWUpfVxuICAgICAgICAgICAgc3R5bGU9e3sgZGlzcGxheTogaW1hZ2VMb2FkZWQgPyBcImJsb2NrXCIgOiBcIm5vbmVcIiB9fVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICAgIHtzaG93RmFsbGJhY2sgJiYgKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMuYmFkZ2VGZWF0dXJlSW5pdGlhbHN9Pntpbml0aWFsc308L2Rpdj5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cbik7XG5cbkJhZGdlRmVhdHVyZUljb24ucHJvcFR5cGVzID0ge1xuICBuYW1lOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIGltYWdlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEJhZGdlRmVhdHVyZUljb247XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgQnV0dG9uIGZyb20gXCJAbXVpL21hdGVyaWFsL0J1dHRvblwiO1xuaW1wb3J0IERpYWxvZyBmcm9tIFwiQG11aS9tYXRlcmlhbC9EaWFsb2dcIjtcbmltcG9ydCBEaWFsb2dBY3Rpb25zIGZyb20gXCJAbXVpL21hdGVyaWFsL0RpYWxvZ0FjdGlvbnNcIjtcbmltcG9ydCBEaWFsb2dDb250ZW50IGZyb20gXCJAbXVpL21hdGVyaWFsL0RpYWxvZ0NvbnRlbnRcIjtcbmltcG9ydCBEaWFsb2dDb250ZW50VGV4dCBmcm9tIFwiQG11aS9tYXRlcmlhbC9EaWFsb2dDb250ZW50VGV4dFwiO1xuaW1wb3J0IERpYWxvZ1RpdGxlIGZyb20gXCJAbXVpL21hdGVyaWFsL0RpYWxvZ1RpdGxlXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5cbmNvbnN0IENvbmZpcm1EaWFsb2cgPSAoeyBvcGVuLCB0aXRsZSwgYm9keSwgb25DbG9zZSwgb25Db25maXJtIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIHJldHVybiAoXG4gICAgPERpYWxvZ1xuICAgICAgb3Blbj17b3Blbn1cbiAgICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgICBhcmlhLWxhYmVsbGVkYnk9XCJhbGVydC1kaWFsb2ctdGl0bGVcIlxuICAgICAgYXJpYS1kZXNjcmliZWRieT1cImFsZXJ0LWRpYWxvZy1kZXNjcmlwdGlvblwiXG4gICAgPlxuICAgICAgPERpYWxvZ1RpdGxlIGlkPVwiYWxlcnQtZGlhbG9nLXRpdGxlXCI+e3RpdGxlfTwvRGlhbG9nVGl0bGU+XG4gICAgICA8RGlhbG9nQ29udGVudD5cbiAgICAgICAgPERpYWxvZ0NvbnRlbnRUZXh0IGlkPVwiYWxlcnQtZGlhbG9nLWRlc2NyaXB0aW9uXCI+XG4gICAgICAgICAge2JvZHl9XG4gICAgICAgIDwvRGlhbG9nQ29udGVudFRleHQ+XG4gICAgICA8L0RpYWxvZ0NvbnRlbnQ+XG4gICAgICA8RGlhbG9nQWN0aW9ucz5cbiAgICAgICAgPEJ1dHRvbiBvbkNsaWNrPXtvbkNsb3NlfT57dChcImdlbmVyYWwuY2FuY2VsXCIpfTwvQnV0dG9uPlxuICAgICAgICA8QnV0dG9uIG9uQ2xpY2s9e29uQ29uZmlybX0gYXV0b0ZvY3VzPlxuICAgICAgICAgIHt0KFwiZ2VuZXJhbC5jb25maXJtXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgIDwvRGlhbG9nQWN0aW9ucz5cbiAgICA8L0RpYWxvZz5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IENvbmZpcm1EaWFsb2c7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgQ29udGVudENvcHlJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NvbnRlbnRDb3B5XCI7XG5pbXBvcnQgeyBUb29sdGlwIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IE1JTExJU0VDX1RPX1NFQyB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBkZWZhdWx0V2lkdGggPSA5MDtcblxuY29uc3QgQ29weVRleHQgPSAoe1xuICB0ZXh0LFxuICB0b29sdGlwVGV4dCxcbiAgaGlkZUNvcHkgPSBmYWxzZSxcbiAgdHJ1bmNhdGVkID0gdHJ1ZSxcbiAgcmV2ZXJzZWQgPSBmYWxzZSxcbiAgd2lkdGggPSBkZWZhdWx0V2lkdGhcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCB0b29sdGlwVGV4dFRvVXNlID0gdG9vbHRpcFRleHQgfHwgdChcImdlbmVyYWwuY29weV90b19jbGlwYm9hcmRcIik7XG4gIGNvbnN0IFt0b29sdGlwLCBzZXRUb29sdGlwXSA9IFJlYWN0LnVzZVN0YXRlKHRvb2x0aXBUZXh0VG9Vc2UpO1xuICBjb25zdCBjbGFzc05hbWVzID0gYCR7dHJ1bmNhdGVkICYmIHN0eWxlcy50cnVuY2F0ZWR9ICR7XG4gICAgcmV2ZXJzZWQgJiYgc3R5bGVzLnJldmVyc2VkXG4gIH1gO1xuXG4gIGNvbnN0IGhhbmRsZUNvcHkgPSAoKSA9PiB7XG4gICAgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQodGV4dCk7XG4gICAgc2V0VG9vbHRpcCh0KFwiZ2VuZXJhbC5jb3BpZWRcIikpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgc2V0VG9vbHRpcCh0b29sdGlwVGV4dFRvVXNlKTtcbiAgICB9LCBNSUxMSVNFQ19UT19TRUMpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy53cmFwcGVyfT5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT17Y2xhc3NOYW1lc30gc3R5bGU9e3sgd2lkdGggfX0+XG4gICAgICAgIHt0ZXh0fVxuICAgICAgPC9zcGFuPlxuICAgICAgeyFoaWRlQ29weSAmJiAoXG4gICAgICAgIDxUb29sdGlwIHRpdGxlPXt0b29sdGlwfT5cbiAgICAgICAgICA8Q29udGVudENvcHlJY29uXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jb3B5SWNvbn1cbiAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUNvcHl9XG4gICAgICAgICAgICBkYXRhLXRlc3RpZD1cImNvcHktbnVtYmVyLWJ1dHRvblwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbkNvcHlUZXh0LnByb3BUeXBlcyA9IHtcbiAgdGV4dDogUHJvcFR5cGVzLnN0cmluZyxcbiAgdG9vbHRpcFRleHQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGhpZGVDb3B5OiBQcm9wVHlwZXMuYm9vbCxcbiAgdHJ1bmNhdGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgcmV2ZXJzZWQ6IFByb3BUeXBlcy5ib29sLFxuICB3aWR0aDogUHJvcFR5cGVzLm51bWJlclxufTtcblxuZXhwb3J0IGRlZmF1bHQgQ29weVRleHQ7XG4iLCJpbXBvcnQgeyBjcmVhdGVDb250ZXh0IH0gZnJvbSBcInJlYWN0XCI7XG5cbmNvbnN0IEN1c3RvbU5vdGlmaWNhdGlvbkNvbnRleHQgPSBjcmVhdGVDb250ZXh0KG51bGwpO1xuXG5leHBvcnQgZGVmYXVsdCBDdXN0b21Ob3RpZmljYXRpb25Db250ZXh0O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgQWxlcnQsIFNuYWNrYmFyLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBDaGVja0NpcmNsZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2hlY2tDaXJjbGVcIjtcbmltcG9ydCBFcnJvckljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXJyb3JcIjtcblxuY29uc3QgQ3VzdG9tTm90aWZpY2F0aW9uID0gKHsgb3Blbiwgb25DbG9zZSwgbWVzc2FnZSwgc2V2ZXJpdHkgfSkgPT4ge1xuICBpZiAoIW1lc3NhZ2UpIHJldHVybiBudWxsO1xuXG4gIHJldHVybiAoXG4gICAgPFNuYWNrYmFyXG4gICAgICBvcGVuPXtvcGVufVxuICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgIGFuY2hvck9yaWdpbj17eyB2ZXJ0aWNhbDogXCJ0b3BcIiwgaG9yaXpvbnRhbDogXCJjZW50ZXJcIiB9fVxuICAgICAgYXV0b0hpZGVEdXJhdGlvbj17MjAwMH1cbiAgICA+XG4gICAgICA8QWxlcnRcbiAgICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgICAgc2V2ZXJpdHk9e3NldmVyaXR5fVxuICAgICAgICB2YXJpYW50PVwiZmlsbGVkXCJcbiAgICAgICAgc3g9e3sgd2lkdGg6IFwiMTAwJVwiLCBiYWNrZ3JvdW5kQ29sb3I6IGAke3NldmVyaXR5fS5saWdodGAgfX1cbiAgICAgICAgaWNvbk1hcHBpbmc9e3tcbiAgICAgICAgICBzdWNjZXNzOiA8Q2hlY2tDaXJjbGVJY29uIGZvbnRTaXplPVwiaW5oZXJpdFwiIC8+LFxuICAgICAgICAgIGVycm9yOiA8RXJyb3JJY29uIGZvbnRTaXplPVwiaW5oZXJpdFwiIC8+XG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MVwiPnttZXNzYWdlfTwvVHlwb2dyYXBoeT5cbiAgICAgIDwvQWxlcnQ+XG4gICAgPC9TbmFja2Jhcj5cbiAgKTtcbn07XG5cbkN1c3RvbU5vdGlmaWNhdGlvbi5wcm9wVHlwZXMgPSB7XG4gIG9wZW46IFByb3BUeXBlcy5ib29sLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYyxcbiAgbWVzc2FnZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgc2V2ZXJpdHk6IFByb3BUeXBlcy5zdHJpbmdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEN1c3RvbU5vdGlmaWNhdGlvbjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IFRoZW1lUHJvdmlkZXIgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcblxubGV0IGRhcmtDb2xvciA9IFwiXCI7XG5pZiAodHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAvLyBHZXQgdGhlIHJvb3QgZWxlbWVudFxuICBjb25zdCByb290ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuXG4gIC8vIFJldHJpZXZlIHRoZSBjdXJyZW50IHZhbHVlIG9mIGEgQ1NTIHZhcmlhYmxlXG4gIGRhcmtDb2xvciA9IGdldENvbXB1dGVkU3R5bGUocm9vdCkuZ2V0UHJvcGVydHlWYWx1ZShcbiAgICBcIi0tY29sb3JfYmFja2dyb3VuZF9kYXJrXCJcbiAgKTtcbn1cblxuY29uc3QgdGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIHBhbGV0dGU6IHtcbiAgICBwcmltYXJ5OiB7XG4gICAgICBtYWluOiBkYXJrQ29sb3JcbiAgICB9LFxuICAgIHRleHQ6IHtcbiAgICAgIHByaW1hcnk6IFwiIzAwMDAwMERFXCIsXG4gICAgICBzZWNvbmRhcnk6IFwiIzAwMDAwMDk5XCIsXG4gICAgICBsaW5rOiBcIiMyMTk2ZjNcIlxuICAgIH1cbiAgfSxcbiAgdHlwb2dyYXBoeToge1xuICAgIGJvZHkxOiB7XG4gICAgICBmb250U2l6ZTogXCIxNHB4XCIsXG4gICAgICBmb250V2VpZ2h0OiA0MDBcbiAgICB9LFxuICAgIGg1OiB7XG4gICAgICBmb250U2l6ZTogXCIxLjZlbVwiLFxuICAgICAgZm9udFdlaWdodDogNDAwLFxuICAgICAgXCImLk11aVR5cG9ncmFwaHktZ3V0dGVyQm90dG9tXCI6IHtcbiAgICAgICAgbWFyZ2luQm90dG9tOiBcIjIwcHhcIlxuICAgICAgfVxuICAgIH0sXG4gICAgaDY6IHtcbiAgICAgIGZvbnRTaXplOiBcIjEuNGVtXCIsXG4gICAgICBmb250V2VpZ2h0OiA1MDAsXG4gICAgICBcIiYuTXVpVHlwb2dyYXBoeS1ndXR0ZXJCb3R0b21cIjoge1xuICAgICAgICBtYXJnaW5Cb3R0b206IFwiMjBweFwiXG4gICAgICB9XG4gICAgfVxuICB9LFxuICBjb21wb25lbnRzOiB7XG4gICAgTXVpRm9ybUhlbHBlclRleHQ6IHtcbiAgICAgIHN0eWxlT3ZlcnJpZGVzOiB7XG4gICAgICAgIHJvb3Q6IHtcbiAgICAgICAgICBmb250U2l6ZTogXCIuOGVtXCJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgTXVpQnV0dG9uOiB7XG4gICAgICBzdHlsZU92ZXJyaWRlczoge1xuICAgICAgICByb290OiB7XG4gICAgICAgICAgZm9udFNpemU6IFwiMWVtXCIsXG4gICAgICAgICAgZm9udFdlaWdodDogNTAwLFxuICAgICAgICAgIGxpbmVIZWlnaHQ6IFwiMjJweFwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIE11aVRhYjoge1xuICAgICAgc3R5bGVPdmVycmlkZXM6IHtcbiAgICAgICAgcm9vdDoge1xuICAgICAgICAgIGZvbnRTaXplOiBcIjE0cHhcIixcbiAgICAgICAgICBjb2xvcjogXCIjMDAwMDAwOTlcIixcbiAgICAgICAgICBcIiYuTXVpLXNlbGVjdGVkXCI6IHtcbiAgICAgICAgICAgIGNvbG9yOiBcIiMyMTk2ZjNcIlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgTXVpVGFiczoge1xuICAgICAgc3R5bGVPdmVycmlkZXM6IHtcbiAgICAgICAgaW5kaWNhdG9yOiB7XG4gICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiMyMTk2ZjNcIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59KTtcblxuY29uc3QgQ3VzdG9tVGhlbWUgPSAoeyBjaGlsZHJlbiB9KSA9PiAoXG4gIDxUaGVtZVByb3ZpZGVyIHRoZW1lPXt0aGVtZX0+e2NoaWxkcmVufTwvVGhlbWVQcm92aWRlcj5cbik7XG5cbkN1c3RvbVRoZW1lLnByb3BUeXBlcyA9IHtcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEN1c3RvbVRoZW1lO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQ2hlY2tib3gsXG4gIEZvcm1Db250cm9sLFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBGb3JtR3JvdXAsXG4gIEZvcm1IZWxwZXJUZXh0LFxuICBGb3JtTGFiZWxcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBSYXdIVE1MIGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL2NvbXBvbmVudHMvcmF3LWh0bWxcIjtcbmltcG9ydCB7IGdldExhYmVsLCB0b1NsdWcgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBDaGVja2JveExpc3RRdWVzdGlvbkZpZWxkID0gKHtcbiAgcXVlc3Rpb24sXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJcIixcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBjaGlsZHJlbixcbiAgdmFsdWUsXG4gIG9uQ2hhbmdlLFxuICBzZXRGaWVsZFZhbHVlLFxuICBlcnJvcixcbiAgaGVscGVyVGV4dCxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuICBjb25zdCBxdWVzdGlvbk1heFZhbHVlcyA9IHF1ZXN0aW9uLm1heF9zZWxlY3RlZF92YWx1ZXM7XG5cbiAgY29uc3QgcXVlc3Rpb25PcHRpb25zID1cbiAgICBxdWVzdGlvbi52YWx1ZXM/Lm1hcCgodmFsKSA9PiAoe1xuICAgICAgbGFiZWw6IHZhbC5sYWJlbCxcbiAgICAgIHZhbHVlOiB2YWwuaWQudG9TdHJpbmcoKVxuICAgIH0pKSB8fCBbXTtcblxuICBjb25zdCBoYW5kbGVDaGVja2JveExpc3RDaGFuZ2UgPSAoY2hlY2tlZCwgdmFsKSA9PiB7XG4gICAgY29uc3QgY3VycmVudEFucyA9IHZhbHVlIHx8IFtdO1xuICAgIGNvbnN0IG1heFNlbGVjdGlvblJlYWNoZWQgPVxuICAgICAgcXVlc3Rpb25NYXhWYWx1ZXMgIT09IDAgJiYgY3VycmVudEFucy5sZW5ndGggPT09IHF1ZXN0aW9uTWF4VmFsdWVzO1xuICAgIGxldCBuZXdWYWx1ZTtcblxuICAgIGlmIChjaGVja2VkKSB7XG4gICAgICBuZXdWYWx1ZSA9IG1heFNlbGVjdGlvblJlYWNoZWQgPyBjdXJyZW50QW5zIDogWy4uLmN1cnJlbnRBbnMsIHZhbF07XG4gICAgfSBlbHNlIHtcbiAgICAgIG5ld1ZhbHVlID0gY3VycmVudEFucy5maWx0ZXIoKHYpID0+IHYgIT09IHZhbCk7XG4gICAgfVxuXG4gICAgc2V0RmllbGRWYWx1ZShxdWVzdGlvblNsdWcsIG5ld1ZhbHVlKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Db250cm9sXG4gICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgID5cbiAgICAgICAgPEZvcm1MYWJlbD5cbiAgICAgICAgICA8UmF3SFRNTD57cXVlc3Rpb25MYWJlbH08L1Jhd0hUTUw+XG4gICAgICAgIDwvRm9ybUxhYmVsPlxuICAgICAgICB7ZXJyb3IgJiYgPEZvcm1IZWxwZXJUZXh0PntoZWxwZXJUZXh0ID8/IFwiIFwifTwvRm9ybUhlbHBlclRleHQ+fVxuICAgICAgICA8Rm9ybUdyb3VwPlxuICAgICAgICAgIHtxdWVzdGlvbk9wdGlvbnMubWFwKChvcCkgPT4gKFxuICAgICAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAga2V5PXtvcC5sYWJlbH1cbiAgICAgICAgICAgICAgbmFtZT17cXVlc3Rpb25TbHVnfVxuICAgICAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3ZhbHVlPy5pbmNsdWRlcyhvcC52YWx1ZSl9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGV2KSA9PlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVDaGVja2JveExpc3RDaGFuZ2UoZXYudGFyZ2V0LmNoZWNrZWQsIG9wLnZhbHVlKVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgbGFiZWw9e29wLmxhYmVsfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9Gb3JtR3JvdXA+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvRm9ybUNvbnRyb2w+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5DaGVja2JveExpc3RRdWVzdGlvbkZpZWxkLnByb3BUeXBlcyA9IHtcbiAgcXVlc3Rpb246IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgdmFsdWU6IFByb3BUeXBlcy5hcnJheSxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBzZXRGaWVsZFZhbHVlOiBQcm9wVHlwZXMuZnVuYyxcbiAgZXJyb3I6IFByb3BUeXBlcy5ib29sLFxuICBoZWxwZXJUZXh0OiBQcm9wVHlwZXMuc3RyaW5nXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDaGVja2JveExpc3RRdWVzdGlvbkZpZWxkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQ2hlY2tib3gsXG4gIEZvcm1Db250cm9sLFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBGb3JtSGVscGVyVGV4dFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFJhd0hUTUwgZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvY29tcG9uZW50cy9yYXctaHRtbFwiO1xuaW1wb3J0IHsgZ2V0TGFiZWwsIHRvU2x1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IENoZWNrYm94UXVlc3Rpb25GaWVsZCA9ICh7XG4gIHF1ZXN0aW9uLFxuICBxdWVzdGlvbkNsYXNzTmFtZSA9IFwiXCIsXG4gIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgY2hpbGRyZW4sXG4gIHZhbHVlLFxuICBlcnJvcixcbiAgaGVscGVyVGV4dCxcbiAgc2V0RmllbGRWYWx1ZSxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICBpZD17YCR7cXVlc3Rpb25TbHVnfV9jb250YWluZXJgfVxuICAgICAgY2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICA+XG4gICAgICA8Rm9ybUNvbnRyb2wgZnVsbFdpZHRoIG1hcmdpbj1cIm5vcm1hbFwiIGVycm9yPXtlcnJvcn0+XG4gICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgc3g9e3sgYWxpZ25JdGVtczogXCJmbGV4LXN0YXJ0XCIgfX1cbiAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgICBuYW1lPXtxdWVzdGlvblNsdWd9XG4gICAgICAgICAgICAgIGNoZWNrZWQ9eyEhdmFsdWV9XG4gICAgICAgICAgICAgIGxhYmVsPXs8UmF3SFRNTD57cXVlc3Rpb25MYWJlbH08L1Jhd0hUTUw+fVxuICAgICAgICAgICAgICBzeD17eyBtYXJnaW5Ub3A6IC0xIH19XG4gICAgICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICB9XG4gICAgICAgICAgbGFiZWw9ezxSYXdIVE1MPntxdWVzdGlvbkxhYmVsfTwvUmF3SFRNTD59XG4gICAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgIC8+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAge2Vycm9yICYmIDxGb3JtSGVscGVyVGV4dD57aGVscGVyVGV4dCA/PyBcIiBcIn08L0Zvcm1IZWxwZXJUZXh0Pn1cbiAgICAgIDwvRm9ybUNvbnRyb2w+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5DaGVja2JveFF1ZXN0aW9uRmllbGQucHJvcFR5cGVzID0ge1xuICBxdWVzdGlvbjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICB2YWx1ZTogUHJvcFR5cGVzLmJvb2wsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBzZXRGaWVsZFZhbHVlOiBQcm9wVHlwZXMuZnVuYyxcbiAgZXJyb3I6IFByb3BUeXBlcy5ib29sLFxuICBoZWxwZXJUZXh0OiBQcm9wVHlwZXMuc3RyaW5nXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDaGVja2JveFF1ZXN0aW9uRmllbGQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgSW5wdXRMYWJlbCwgTWVudUl0ZW0sIFNlbGVjdCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBnZXRMYWJlbCwgdG9TbHVnIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgRHJvcGRvd25RdWVzdGlvbkZpZWxkID0gKHtcbiAgcXVlc3Rpb24sXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJcIixcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBzZXRGaWVsZFZhbHVlLFxuICBjaGlsZHJlbixcbiAgZXJyb3IsXG4gIGhlbHBlclRleHQsXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHF1ZXN0aW9uLm5hbWUsIHF1ZXN0aW9uLmlkKTtcbiAgY29uc3QgcXVlc3Rpb25MYWJlbCA9IGdldExhYmVsKHF1ZXN0aW9uKTtcbiAgY29uc3QgaXNSZXF1aXJlZCA9IHF1ZXN0aW9uLm1hbmRhdG9yeTtcblxuICBjb25zdCBxdWVzdGlvbk9wdGlvbnMgPVxuICAgIHF1ZXN0aW9uLnZhbHVlcz8ubWFwKCh2YWwpID0+ICh7XG4gICAgICBsYWJlbDogdmFsLmxhYmVsLFxuICAgICAgdmFsdWU6IHZhbC5pZFxuICAgIH0pKSB8fCBbXTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Db250cm9sXG4gICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgID5cbiAgICAgICAgPElucHV0TGFiZWwgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fbGFiZWxgfT57cXVlc3Rpb25MYWJlbH08L0lucHV0TGFiZWw+XG4gICAgICAgIDxTZWxlY3RcbiAgICAgICAgICBsYWJlbElkPXtgJHtxdWVzdGlvblNsdWd9X2xhYmVsYH1cbiAgICAgICAgICBuYW1lPXtxdWVzdGlvblNsdWd9XG4gICAgICAgICAgaWQ9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICBsYWJlbD17cXVlc3Rpb25MYWJlbH1cbiAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAgIHN0eWxlPXt7IG1hcmdpbkJvdHRvbTogMjAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHtxdWVzdGlvbk9wdGlvbnMubWFwKChvcCkgPT4gKFxuICAgICAgICAgICAgPE1lbnVJdGVtIGtleT17b3AubGFiZWx9IHZhbHVlPXtvcC52YWx1ZX0+XG4gICAgICAgICAgICAgIHtvcC5sYWJlbH1cbiAgICAgICAgICAgIDwvTWVudUl0ZW0+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvU2VsZWN0PlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuRHJvcGRvd25RdWVzdGlvbkZpZWxkLnByb3BUeXBlcyA9IHtcbiAgcXVlc3Rpb246IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIGVycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgaGVscGVyVGV4dDogUHJvcFR5cGVzLnN0cmluZyxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IERyb3Bkb3duUXVlc3Rpb25GaWVsZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEZvcm1Db250cm9sLFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBGb3JtSGVscGVyVGV4dCxcbiAgRm9ybUxhYmVsLFxuICBSYWRpbyxcbiAgUmFkaW9Hcm91cFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFJhd0hUTUwgZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvY29tcG9uZW50cy9yYXctaHRtbFwiO1xuaW1wb3J0IHsgZ2V0TGFiZWwsIHRvU2x1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IFJhZGlvTGlzdFF1ZXN0aW9uRmllbGQgPSAoe1xuICBxdWVzdGlvbixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcIlwiLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIGNoaWxkcmVuLFxuICBlcnJvcixcbiAgaGVscGVyVGV4dCxcbiAgc2V0RmllbGRWYWx1ZSxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuXG4gIGNvbnN0IHF1ZXN0aW9uT3B0aW9ucyA9XG4gICAgcXVlc3Rpb24udmFsdWVzPy5tYXAoKHZhbCkgPT4gKHtcbiAgICAgIGxhYmVsOiB2YWwubGFiZWwsXG4gICAgICB2YWx1ZTogdmFsLmlkLnRvU3RyaW5nKClcbiAgICB9KSkgfHwgW107XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBrZXk9e3F1ZXN0aW9uU2x1Z31cbiAgICAgIGlkPXtgJHtxdWVzdGlvblNsdWd9X2NvbnRhaW5lcmB9XG4gICAgICBjbGFzc05hbWU9e3F1ZXN0aW9uQ2xhc3NOYW1lfVxuICAgID5cbiAgICAgIDxGb3JtQ29udHJvbFxuICAgICAgICBkaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgICBlcnJvcj17ZXJyb3J9XG4gICAgICA+XG4gICAgICAgIDxGb3JtTGFiZWwgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fbGFiZWxgfT5cbiAgICAgICAgICA8UmF3SFRNTD57cXVlc3Rpb25MYWJlbH08L1Jhd0hUTUw+XG4gICAgICAgIDwvRm9ybUxhYmVsPlxuICAgICAgICB7ZXJyb3IgJiYgPEZvcm1IZWxwZXJUZXh0PntoZWxwZXJUZXh0ID8/IFwiIFwifTwvRm9ybUhlbHBlclRleHQ+fVxuICAgICAgICA8UmFkaW9Hcm91cFxuICAgICAgICAgIGFyaWEtbGFiZWxsZWRieT17YCR7cXVlc3Rpb25TbHVnfV9sYWJlbGB9XG4gICAgICAgICAgbmFtZT17cXVlc3Rpb25TbHVnfVxuICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgey4uLnJlc3R9XG4gICAgICAgID5cbiAgICAgICAgICB7cXVlc3Rpb25PcHRpb25zLm1hcCgob3ApID0+IChcbiAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgIGtleT17b3AubGFiZWx9XG4gICAgICAgICAgICAgIHZhbHVlPXtvcC52YWx1ZX1cbiAgICAgICAgICAgICAgY29udHJvbD17PFJhZGlvIC8+fVxuICAgICAgICAgICAgICBsYWJlbD17b3AubGFiZWx9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L1JhZGlvR3JvdXA+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvRm9ybUNvbnRyb2w+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5SYWRpb0xpc3RRdWVzdGlvbkZpZWxkLnByb3BUeXBlcyA9IHtcbiAgcXVlc3Rpb246IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIGVycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgaGVscGVyVGV4dDogUHJvcFR5cGVzLnN0cmluZyxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJhZGlvTGlzdFF1ZXN0aW9uRmllbGQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBGb3JtR3JvdXAsIFRleHRGaWVsZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBnZXRMYWJlbCwgdG9TbHVnIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgVGV4dFF1ZXN0aW9uRmllbGQgPSAoe1xuICBxdWVzdGlvbixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcIlwiLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIGNoaWxkcmVuLFxuICBzZXRGaWVsZFZhbHVlLFxuICAuLi5yZXN0XG59KSA9PiB7XG4gIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxdWVzdGlvbi5uYW1lLCBxdWVzdGlvbi5pZCk7XG4gIGNvbnN0IHF1ZXN0aW9uTGFiZWwgPSBnZXRMYWJlbChxdWVzdGlvbik7XG4gIGNvbnN0IGlzUmVxdWlyZWQgPSBxdWVzdGlvbi5tYW5kYXRvcnk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBrZXk9e3F1ZXN0aW9uU2x1Z31cbiAgICAgIGlkPXtgJHtxdWVzdGlvblNsdWd9X2NvbnRhaW5lcmB9XG4gICAgICBjbGFzc05hbWU9e3F1ZXN0aW9uQ2xhc3NOYW1lfVxuICAgID5cbiAgICAgIDxGb3JtR3JvdXA+XG4gICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICBuYW1lPXtxdWVzdGlvblNsdWd9XG4gICAgICAgICAgbGFiZWw9e3F1ZXN0aW9uTGFiZWx9XG4gICAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAvPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0Zvcm1Hcm91cD5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cblRleHRRdWVzdGlvbkZpZWxkLnByb3BUeXBlcyA9IHtcbiAgcXVlc3Rpb246IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIHNldEZpZWxkVmFsdWU6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUZXh0UXVlc3Rpb25GaWVsZDtcbiIsImltcG9ydCB7XG4gIFF1ZXN0aW9uVHlwZV9DaGVja2JveCxcbiAgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCxcbiAgUXVlc3Rpb25UeXBlX0NvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0XG59IGZyb20gXCIuLi9jb25zdGFudHNcIjtcblxuZXhwb3J0IGNvbnN0IGNoZWNrUnVsZSA9ICh2YWx1ZSwgcnVsZSkgPT4ge1xuICBjb25zdCB2YWx1ZXMgPSBydWxlLmFuc3dlcl92YWx1ZXM7XG5cbiAgaWYgKCF2YWx1ZSkgcmV0dXJuIGZhbHNlO1xuXG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIGlmICghdmFsdWUubGVuZ3RoKSByZXR1cm4gZmFsc2U7XG4gICAgbGV0IHJlcyA9IHJ1bGUuYW5zd2VyX3ZhbHVlc19vcGVyYXRvciA9PT0gXCJBbmRcIjtcbiAgICB2YWx1ZXMuZm9yRWFjaCgodikgPT4ge1xuICAgICAgaWYgKHJ1bGUuYW5zd2VyX3ZhbHVlc19vcGVyYXRvciA9PT0gXCJBbmRcIikge1xuICAgICAgICByZXMgPSByZXMgJiYgdmFsdWUuaW5jbHVkZXModik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBPclxuICAgICAgICByZXMgPSByZXMgfHwgdmFsdWUuaW5jbHVkZXModik7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuICByZXR1cm4gdmFsdWVzLmluY2x1ZGVzKHZhbHVlPy50b1N0cmluZygpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjaGVja1Zpc2liaWxpdHkgPSAocnVsZSwgcnVsZVJlc3VsdCkgPT4ge1xuICBpZiAocnVsZS52aXNpYmlsaXR5ID09PSBcIlZpc2libGVcIikge1xuICAgIGlmIChydWxlLnZpc2liaWxpdHlfY29uZGl0aW9uID09PSBcIkVxdWFsXCIpIHtcbiAgICAgIHJldHVybiAhIXJ1bGVSZXN1bHQ7XG4gICAgfVxuICAgIC8vIE5vbiBFcXVhbFxuICAgIHJldHVybiAhcnVsZVJlc3VsdDtcbiAgfVxuICAvLyBub3QgdmlzaWJsZVxuICBpZiAocnVsZS52aXNpYmlsaXR5X2NvbmRpdGlvbiA9PT0gXCJFcXVhbFwiKSB7XG4gICAgcmV0dXJuICFydWxlUmVzdWx0O1xuICB9XG4gIHJldHVybiAhIXJ1bGVSZXN1bHQ7XG59O1xuXG5leHBvcnQgY29uc3QgdG9TbHVnID0gKHRleHQsIHF1ZXN0aW9uSWQpID0+IHtcbiAgY29uc3QgdGV4dExDID0gdGV4dC50b0xvd2VyQ2FzZSgpO1xuICByZXR1cm4gYCR7dGV4dExDLnJlcGxhY2UoL1teYS16QS1aMC05XSsvZywgXCJfXCIpfV8ke3F1ZXN0aW9uSWR9YDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRMYWJlbCA9IChxKSA9PlxuICAvLyByZXBsYWNlIGxpbmUgYnJlYWtzIGFuZCByZW1vdmUgb3V0ZXIgPHA+XG4gIHE/LmxhYmVsPy5yZXBsYWNlKC9cXG4vZywgXCIgXCIpLnJlcGxhY2UoLzxwPiguKik8XFwvcD4vZ2ksIFwiJDFcIik7XG5cbmV4cG9ydCBjb25zdCBpc0Fuc3dlcmVkID0gKGFuc3dlcikgPT4ge1xuICBpZiAoIWFuc3dlcikgcmV0dXJuIGZhbHNlO1xuICAvLyBjaGVjayB0eXBlXG4gIGlmIChBcnJheS5pc0FycmF5KGFuc3dlcikpIHJldHVybiBhbnN3ZXIubGVuZ3RoID4gMDtcbiAgaWYgKHR5cGVvZiBhbnN3ZXIgPT09IFwic3RyaW5nXCIpIHJldHVybiBhbnN3ZXIubGVuZ3RoID4gMDtcbiAgaWYgKHR5cGVvZiBhbnN3ZXIgPT09IFwibnVtYmVyXCIpIHJldHVybiBhbnN3ZXIgPiAwO1xuICBpZiAodHlwZW9mIGFuc3dlciA9PT0gXCJib29sZWFuXCIpIHJldHVybiBhbnN3ZXI7XG4gIHJldHVybiBmYWxzZTtcbn07XG5cbmV4cG9ydCBjb25zdCBjaGVja0lmVmFsdWVNYXRjaCA9IChhbnN3ZXIsIGNvbXBhcmVWYWwpID0+IHtcbiAgY29uc3QgYW5zd2VyQXJyYXkgPSBBcnJheS5pc0FycmF5KGFuc3dlcikgPyBhbnN3ZXIgOiBbYW5zd2VyXTtcblxuICByZXR1cm4gYW5zd2VyQXJyYXkuc29tZSgodikgPT4ge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGNvbXBhcmVWYWwpKSB7XG4gICAgICByZXR1cm4gY29tcGFyZVZhbC5pbmNsdWRlcyhgJHt2fWApO1xuICAgIH1cbiAgICByZXR1cm4gYCR7dn1gID09PSBgJHtjb21wYXJlVmFsfWA7XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFR5cGVJbml0aWFsVmFsdWUgPSAocSkgPT4ge1xuICBzd2l0Y2ggKHEudHlwZSkge1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrYm94OlxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdDpcbiAgICAgIHJldHVybiBudWxsO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdDpcbiAgICAgIHJldHVybiBbXTtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3g6XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ29tYm9Cb3g6XG4gICAgICByZXR1cm4gXCJcIjtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIFwiXCI7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUeXBlVmFsdWUgPSAoYW5zLCB0eXBlKSA9PiB7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrYm94OlxuICAgICAgcmV0dXJuIGFucyA9PT0gXCJ0cnVlXCI7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0OlxuICAgICAgcmV0dXJuIGFucz8uc3BsaXQoXCIsXCIpIHx8IFtdO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveDpcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db21ib0JveDpcbiAgICAgIHJldHVybiBhbnMgfHwgXCJcIjtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3Q6XG4gICAgICByZXR1cm4gYW5zIHx8IG51bGw7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBhbnM7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB0cmFuc2Zvcm1BbndlcnNGb3JtYXQgPSAoYW5zd2VycykgPT4ge1xuICBjb25zdCB7XG4gICAgYXR0ZW5kZWVfZW1haWwsXG4gICAgYXR0ZW5kZWVfZmlyc3RfbmFtZSxcbiAgICBhdHRlbmRlZV9sYXN0X25hbWUsXG4gICAgYXR0ZW5kZWVfY29tcGFueSxcbiAgICBkaXNjbGFpbWVyX2FjY2VwdGVkLFxuICAgIC4uLmV4dHJhX3F1ZXN0aW9uc1xuICB9ID0gYW5zd2VycztcblxuICBjb25zdCBmb3JtYXR0ZWRFUSA9IE9iamVjdC5lbnRyaWVzKGV4dHJhX3F1ZXN0aW9ucykubWFwKChba2V5LCB2YWx1ZV0pID0+ICh7XG4gICAgcXVlc3Rpb25faWQ6IHBhcnNlSW50KGtleS5zcGxpdChcIl9cIikucG9wKCksIDEwKSxcbiAgICBhbnN3ZXI6IHZhbHVlPy50b1N0cmluZygpIHx8IG51bGxcbiAgfSkpO1xuXG4gIHJldHVybiB7XG4gICAgYXR0ZW5kZWVfZW1haWwsXG4gICAgYXR0ZW5kZWVfZmlyc3RfbmFtZSxcbiAgICBhdHRlbmRlZV9sYXN0X25hbWUsXG4gICAgYXR0ZW5kZWVfY29tcGFueSxcbiAgICBkaXNjbGFpbWVyX2FjY2VwdGVkLFxuICAgIGV4dHJhX3F1ZXN0aW9uczogZm9ybWF0dGVkRVFcbiAgfTtcbn07XG4iLCJleHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX1RleHQgPSBcIlRleHRcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfVGV4dEFyZWEgPSBcIlRleHRBcmVhXCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX0NoZWNrYm94ID0gXCJDaGVja0JveFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3QgPSBcIlJhZGlvQnV0dG9uTGlzdFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9Db21ib0JveCA9IFwiQ29tYm9Cb3hcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0ID0gXCJDaGVja0JveExpc3RcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94ID0gXCJDb3VudHJ5Q29tYm9Cb3hcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b24gPSBcIlJhZGlvQnV0dG9uXCI7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5cbmltcG9ydCB7XG4gIHRvU2x1ZyxcbiAgaXNBbnN3ZXJlZCxcbiAgY2hlY2tWaXNpYmlsaXR5LFxuICBjaGVja1J1bGVcbn0gZnJvbSBcIi4vY29tcG9uZW50cy91dGlsc1wiO1xuaW1wb3J0IHtcbiAgUXVlc3Rpb25UeXBlX0NoZWNrYm94LFxuICBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0LFxuICBRdWVzdGlvblR5cGVfQ29tYm9Cb3gsXG4gIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3gsXG4gIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3QsXG4gIFF1ZXN0aW9uVHlwZV9UZXh0LFxuICBRdWVzdGlvblR5cGVfVGV4dEFyZWFcbn0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgVGV4dFF1ZXN0aW9uRmllbGQgZnJvbSBcIi4vY29tcG9uZW50cy9UZXh0UXVlc3Rpb25GaWVsZFwiO1xuaW1wb3J0IENoZWNrYm94UXVlc3Rpb25GaWVsZCBmcm9tIFwiLi9jb21wb25lbnRzL0NoZWNrYm94UXVlc3Rpb25GaWVsZFwiO1xuaW1wb3J0IFJhZGlvTGlzdFF1ZXN0aW9uRmllbGQgZnJvbSBcIi4vY29tcG9uZW50cy9SYWRpb0xpc3RRdWVzdGlvbkZpZWxkXCI7XG5pbXBvcnQgQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZCBmcm9tIFwiLi9jb21wb25lbnRzL0NoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGRcIjtcbmltcG9ydCBEcm9wZG93blF1ZXN0aW9uRmllbGQgZnJvbSBcIi4vY29tcG9uZW50cy9Ecm9wZG93blF1ZXN0aW9uRmllbGRcIjtcblxuY29uc3QgZ2V0UXVlc3Rpb25GaWVsZENvbXBvbmVudCA9IChxdWVzdGlvblR5cGUpID0+IHtcbiAgc3dpdGNoIChxdWVzdGlvblR5cGUpIHtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9UZXh0QXJlYTpcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9UZXh0OiB7XG4gICAgICByZXR1cm4gVGV4dFF1ZXN0aW9uRmllbGQ7XG4gICAgfVxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrYm94OiB7XG4gICAgICByZXR1cm4gQ2hlY2tib3hRdWVzdGlvbkZpZWxkO1xuICAgIH1cbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3Q6IHtcbiAgICAgIHJldHVybiBSYWRpb0xpc3RRdWVzdGlvbkZpZWxkO1xuICAgIH1cbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3Q6IHtcbiAgICAgIHJldHVybiBDaGVja2JveExpc3RRdWVzdGlvbkZpZWxkO1xuICAgIH1cbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3g6XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ29tYm9Cb3g6IHtcbiAgICAgIHJldHVybiBEcm9wZG93blF1ZXN0aW9uRmllbGQ7XG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIHJldHVybiBSZWFjdC5GcmFnbWVudDtcbiAgICB9XG4gIH1cbn07XG5cbmNvbnN0IEV4dHJhUXVlc3Rpb25zRmllbGRzID0gKHtcbiAgZXh0cmFRdWVzdGlvbnMsXG4gIG9yaWdpbmFsQW5zd2VycyxcbiAgY2xhc3NOYW1lID0gXCJleHRyYVF1ZXN0aW9uc1wiLFxuICBxdWVzdGlvbkNsYXNzTmFtZSA9IFwiZXh0cmFRdWVzdGlvblwiLFxuICByZWFkT25seSA9IGZhbHNlLFxuICBhbGxvd0VkaXQgPSB0cnVlLFxuICBmb3JtaWtcbn0pID0+IHtcbiAgY29uc3QgcmVuZGVyUnVsZSA9IChydWxlLCBxdWVzdGlvblNsdWcpID0+IHtcbiAgICBjb25zdCBydWxlUmVzdWx0ID0gY2hlY2tSdWxlKGZvcm1pay52YWx1ZXNbcXVlc3Rpb25TbHVnXSwgcnVsZSk7XG4gICAgY29uc3QgaXNWaXNpYmxlID0gY2hlY2tWaXNpYmlsaXR5KHJ1bGUsIHJ1bGVSZXN1bHQpO1xuXG4gICAgaWYgKGlzVmlzaWJsZSkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZS1iZWZvcmUtZGVmaW5lXG4gICAgICByZXR1cm4gcmVuZGVyUXVlc3Rpb24ocnVsZS5zdWJfcXVlc3Rpb24pO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9O1xuXG4gIGNvbnN0IHJlbmRlclF1ZXN0aW9uID0gKHEpID0+IHtcbiAgICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocS5uYW1lLCBxLmlkKTtcbiAgICAvLyBkaXNhYmxlIGZpZWxkIGlmIGVkaXQgaXNuJ3QgYWxsb3dlZCBhbmQgdGhlIHF1ZXN0aW9ucyBpcyBhbnN3ZXJlZFxuICAgIGNvbnN0IGlzRGlzYWJsZWQgPVxuICAgICAgKCFhbGxvd0VkaXQgJiYgaXNBbnN3ZXJlZChvcmlnaW5hbEFuc3dlcnNbcXVlc3Rpb25TbHVnXSkpIHx8IHJlYWRPbmx5O1xuICAgIGNvbnN0IFF1ZXN0aW9uRmllbGRDb21wb25lbnQgPSBnZXRRdWVzdGlvbkZpZWxkQ29tcG9uZW50KHEudHlwZSk7XG5cbiAgICBjb25zdCBmb3JtaWtQcm9wcyA9IHtcbiAgICAgIHZhbHVlOiBmb3JtaWsudmFsdWVzW3F1ZXN0aW9uU2x1Z10sXG4gICAgICBvbkNoYW5nZTogZm9ybWlrLmhhbmRsZUNoYW5nZSxcbiAgICAgIG9uQmx1cjogZm9ybWlrLmhhbmRsZUJsdXIsXG4gICAgICBlcnJvcjpcbiAgICAgICAgZm9ybWlrLnRvdWNoZWRbcXVlc3Rpb25TbHVnXSAmJiBCb29sZWFuKGZvcm1pay5lcnJvcnNbcXVlc3Rpb25TbHVnXSksXG4gICAgICBoZWxwZXJUZXh0OiBmb3JtaWsudG91Y2hlZFtxdWVzdGlvblNsdWddICYmIGZvcm1pay5lcnJvcnNbcXVlc3Rpb25TbHVnXSxcbiAgICAgIHNldEZpZWxkVmFsdWU6IGZvcm1pay5zZXRGaWVsZFZhbHVlXG4gICAgfTtcblxuICAgIHJldHVybiAoXG4gICAgICA8UXVlc3Rpb25GaWVsZENvbXBvbmVudFxuICAgICAgICBrZXk9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgcXVlc3Rpb249e3F9XG4gICAgICAgIHF1ZXN0aW9uQ2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICAgICAgaXNEaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgey4uLmZvcm1pa1Byb3BzfVxuICAgICAgPlxuICAgICAgICB7cS5zdWJfcXVlc3Rpb25fcnVsZXM/Lm1hcCgocnVsZSkgPT4gcmVuZGVyUnVsZShydWxlLCBxdWVzdGlvblNsdWcpKX1cbiAgICAgIDwvUXVlc3Rpb25GaWVsZENvbXBvbmVudD5cbiAgICApO1xuICB9O1xuXG4gIHJldHVybiA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NOYW1lfT57ZXh0cmFRdWVzdGlvbnMubWFwKHJlbmRlclF1ZXN0aW9uKX08L2Rpdj47XG59O1xuXG5FeHRyYVF1ZXN0aW9uc0ZpZWxkcy5wcm9wVHlwZXMgPSB7XG4gIGV4dHJhUXVlc3Rpb25zOiBQcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxcbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBxdWVzdGlvbkNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgYWxsb3dFZGl0OiBQcm9wVHlwZXMuYm9vbCxcbiAgcmVhZE9ubHk6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBFeHRyYVF1ZXN0aW9uc0ZpZWxkcztcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQm94LFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBDYXJkSGVhZGVyLFxuICBJY29uQnV0dG9uLFxuICBDb2xsYXBzZSxcbiAgQ2FyZENvbnRlbnQsXG4gIFJhZGlvR3JvdXAsXG4gIFJhZGlvXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgRXhwYW5kTW9yZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXhwYW5kTW9yZVwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORUQgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuXG5jb25zdCBBc3NpZ25lZEZpbHRlciA9ICh7IG9uRmlsdGVyIH0pID0+IHtcbiAgY29uc3Qge1xuICAgIGZpbHRlcjogeyBGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRDogZmlsdGVyVmFsdWVzIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG5cbiAgY29uc3QgW2lzRXhwYW5kZWQsIHNldElzRXhwYW5kZWRdID0gdXNlU3RhdGUoISFmaWx0ZXJWYWx1ZXMpO1xuXG4gIGNvbnN0IGFzc2lnbmVkVmFsdWVzID0gW1xuICAgIHsgdmFsdWU6IFwiTWVcIiwgbGFiZWw6IFwiTWVcIiB9LFxuICAgIHsgdmFsdWU6IFwiU29tZW9uZUVsc2VcIiwgbGFiZWw6IFwiU29tZW9uZSBFbHNlXCIgfSxcbiAgICB7IHZhbHVlOiBcIk5vYm9keVwiLCBsYWJlbDogXCJOb2JvZHlcIiB9XG4gIF07XG5cbiAgY29uc3QgaGFuZGxlRmlsdGVyQ2hhbmdlID0gKGV2LCB2YWx1ZSkgPT4ge1xuICAgIGNvbnN0IG5ld0ZpbHRlciA9IHZhbHVlO1xuICAgIG9uRmlsdGVyKHtcbiAgICAgIFtGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRF06IG5ld0ZpbHRlclxuICAgIH0pO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxDYXJkSGVhZGVyXG4gICAgICAgIHRpdGxlPVwiQXNzaWduZWRcIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aXRsZVdyYXBwZXJ9XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHNldElzRXhwYW5kZWQoIWlzRXhwYW5kZWQpfVxuICAgICAgICBhY3Rpb249e1xuICAgICAgICAgIDxJY29uQnV0dG9uIGFyaWEtbGFiZWw9XCJleHBhbmRcIiBkaXNhYmxlUmlwcGxlPlxuICAgICAgICAgICAgPEV4cGFuZE1vcmVJY29uXG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBpc0V4cGFuZGVkID8gXCJyb3RhdGUoMTgwZGVnKVwiIDogXCJyb3RhdGUoMGRlZylcIixcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBcInRyYW5zZm9ybSAwLjNzXCJcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICB9XG4gICAgICAvPlxuICAgICAgPENvbGxhcHNlIGluPXtpc0V4cGFuZGVkfSB0aW1lb3V0PVwiYXV0b1wiIHVubW91bnRPbkV4aXQ+XG4gICAgICAgIDxDYXJkQ29udGVudFxuICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICBweTogMCxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjMDAwMDAwMEFcIixcbiAgICAgICAgICAgIFwiJjpsYXN0LWNoaWxkXCI6IHtcbiAgICAgICAgICAgICAgcGI6IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgPFJhZGlvR3JvdXAgdmFsdWU9e2ZpbHRlclZhbHVlc30gb25DaGFuZ2U9e2hhbmRsZUZpbHRlckNoYW5nZX0+XG4gICAgICAgICAgICB7YXNzaWduZWRWYWx1ZXMubWFwKChhc3NpZ25lZCkgPT4gKFxuICAgICAgICAgICAgICA8Qm94XG4gICAgICAgICAgICAgICAgc3g9e3sgcHk6IDEgfX1cbiAgICAgICAgICAgICAgICBrZXk9e2BmaWx0ZXItYmFkZ2UtZmVhdHVyZS0ke2Fzc2lnbmVkLmxhYmVsfX1gfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgICAgICAgICA8UmFkaW9cbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17YXNzaWduZWQudmFsdWV9XG4gICAgICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiJiAuTXVpU3ZnSWNvbi1yb290XCI6IHsgZm9udFNpemU6IDE4IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBcIiYuTXVpLWNoZWNrZWRcIjogeyBjb2xvcjogXCIjMjE5NkYzXCIgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBsYWJlbD17YXNzaWduZWQubGFiZWx9XG4gICAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICBcIiYgLk11aUZvcm1Db250cm9sTGFiZWwtbGFiZWxcIjoge1xuICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiBcIjFlbVwiXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L1JhZGlvR3JvdXA+XG4gICAgICAgIDwvQ2FyZENvbnRlbnQ+XG4gICAgICA8L0NvbGxhcHNlPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuQXNzaWduZWRGaWx0ZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEFzc2lnbmVkRmlsdGVyO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgQ2hlY2tib3gsXG4gIENhcmRIZWFkZXIsXG4gIEljb25CdXR0b24sXG4gIENvbGxhcHNlLFxuICBDYXJkQ29udGVudFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEV4cGFuZE1vcmVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0V4cGFuZE1vcmVcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRSB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5cbmNvbnN0IEJhZGdlRmVhdHVyZUZpbHRlciA9ICh7IG9uRmlsdGVyIH0pID0+IHtcbiAgY29uc3Qge1xuICAgIHN1bW1pdDogeyBiYWRnZV9mZWF0dXJlc190eXBlcyB9LFxuICAgIGZpbHRlcjogeyBGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkU6IGZpbHRlclZhbHVlcyB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuXG4gIGNvbnN0IFtpc0V4cGFuZGVkLCBzZXRJc0V4cGFuZGVkXSA9IHVzZVN0YXRlKCEhZmlsdGVyVmFsdWVzLmxlbmd0aCk7XG5cbiAgY29uc3QgaGFuZGxlRmlsdGVyQ2hhbmdlID0gKHZhbHVlKSA9PiB7XG4gICAgY29uc3QgbmV3RmlsdGVycyA9IGZpbHRlclZhbHVlcz8uaW5jbHVkZXModmFsdWUpXG4gICAgICA/IGZpbHRlclZhbHVlcy5maWx0ZXIoKGYpID0+IGYgIT09IHZhbHVlKVxuICAgICAgOiBbLi4uZmlsdGVyVmFsdWVzLCB2YWx1ZV07XG4gICAgb25GaWx0ZXIoe1xuICAgICAgW0ZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRV06IG5ld0ZpbHRlcnNcbiAgICB9KTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldElzRXhwYW5kZWQoISFmaWx0ZXJWYWx1ZXMubGVuZ3RoKTtcbiAgfSwgW2ZpbHRlclZhbHVlc10pO1xuXG4gIGlmICghYmFkZ2VfZmVhdHVyZXNfdHlwZXMgfHwgYmFkZ2VfZmVhdHVyZXNfdHlwZXMubGVuZ3RoID09PSAwKSByZXR1cm4gbnVsbDtcblxuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8Q2FyZEhlYWRlclxuICAgICAgICB0aXRsZT1cIkJhZGdlIEZlYXR1cmVcIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aXRsZVdyYXBwZXJ9XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHNldElzRXhwYW5kZWQoIWlzRXhwYW5kZWQpfVxuICAgICAgICBhY3Rpb249e1xuICAgICAgICAgIDxJY29uQnV0dG9uIGFyaWEtbGFiZWw9XCJleHBhbmRcIiBkaXNhYmxlUmlwcGxlPlxuICAgICAgICAgICAgPEV4cGFuZE1vcmVJY29uXG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBpc0V4cGFuZGVkID8gXCJyb3RhdGUoMTgwZGVnKVwiIDogXCJyb3RhdGUoMGRlZylcIixcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBcInRyYW5zZm9ybSAwLjNzXCJcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICB9XG4gICAgICAvPlxuICAgICAgPENvbGxhcHNlIGluPXtpc0V4cGFuZGVkfSB0aW1lb3V0PVwiYXV0b1wiIHVubW91bnRPbkV4aXQ+XG4gICAgICAgIDxDYXJkQ29udGVudFxuICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICBweTogMCxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjMDAwMDAwMEFcIixcbiAgICAgICAgICAgIFwiJjpsYXN0LWNoaWxkXCI6IHtcbiAgICAgICAgICAgICAgcGI6IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAge2JhZGdlX2ZlYXR1cmVzX3R5cGVzLm1hcCgoYmYpID0+IChcbiAgICAgICAgICAgIDxCb3ggc3g9e3sgcHk6IDEgfX0ga2V5PXtgZmlsdGVyLWJhZGdlLWZlYXR1cmUtJHtiZi5uYW1lfX1gfT5cbiAgICAgICAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KCkgPT4gaGFuZGxlRmlsdGVyQ2hhbmdlKGJmLmlkKX1cbiAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17ZmlsdGVyVmFsdWVzLmluY2x1ZGVzKGJmLmlkKX1cbiAgICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgICBcIiYgLk11aVN2Z0ljb24tcm9vdFwiOiB7IGZvbnRTaXplOiAxOCB9LFxuICAgICAgICAgICAgICAgICAgICAgIFwiJi5NdWktY2hlY2tlZFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogXCIjMjE5NkYzXCJcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsYWJlbD17YmYubmFtZX1cbiAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgXCImIC5NdWlGb3JtQ29udHJvbExhYmVsLWxhYmVsXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6IFwiMWVtXCJcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvQ2FyZENvbnRlbnQ+XG4gICAgICA8L0NvbGxhcHNlPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuQmFkZ2VGZWF0dXJlRmlsdGVyLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBCYWRnZUZlYXR1cmVGaWx0ZXI7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZVJlZiwgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgU3RhY2sgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIjtcbmltcG9ydCBGaWx0ZXJMaXN0SWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9GaWx0ZXJMaXN0XCI7XG5pbXBvcnQge1xuICBCYWRnZSxcbiAgQm94LFxuICBCdXR0b24sXG4gIENhcmQsXG4gIENhcmRIZWFkZXIsXG4gIERpdmlkZXIsXG4gIFBhcGVyXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBjb25uZWN0IH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgQmFkZ2VGZWF0dXJlRmlsdGVyIGZyb20gXCIuL0JhZGdlRmVhdHVyZUZpbHRlclwiO1xuaW1wb3J0IHtcbiAgRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFLFxuICBGSUxURVJfVkFSX0ZSRUVfUEFJRCxcbiAgRklMVEVSX1ZBUl9PV05FUl9TVEFUVVMsXG4gIEZJTFRFUl9WQVJfUFJPTU9DT0RFLFxuICBGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRCxcbiAgRklMVEVSX1ZBUl9USUNLRVRfVFlQRVxufSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IFRpY2tldFR5cGVGaWx0ZXIgZnJvbSBcIi4vVGlja2V0VHlwZUZpbHRlclwiO1xuaW1wb3J0IEFzc2lnbmVkRmlsdGVyIGZyb20gXCIuL0Fzc2lnbmVkRmlsdGVyXCI7XG5pbXBvcnQgU3RhdHVzRmlsdGVyIGZyb20gXCIuL1N0YXR1c0ZpbHRlclwiO1xuaW1wb3J0IEZyZWVQYWlkRmlsdGVyIGZyb20gXCIuL0ZyZWVQYWlkRmlsdGVyXCI7XG5pbXBvcnQgUHJvbW9Db2RlRmlsdGVyIGZyb20gXCIuL1Byb21vQ29kZUZpbHRlclwiO1xuXG5jb25zdCBGaWx0ZXIgPSAoeyBvbkZpbHRlciwgb25SZXNldCwgZmlsdGVyLCBhY3RpdmVGaWx0ZXJzQ291bnQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtzaG93RmlsdGVyTGlzdCwgc2V0U2hvd0ZpbHRlckxpc3RdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbc2hvd0RhdGVwaWNrZXIsIHNldFNob3dEYXRlcGlja2VyXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgZmlsdGVyUmVmID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCBoYW5kbGVGaWx0ZXJDbGlja091dHNpZGUgPSAoZXZlbnQpID0+IHtcbiAgICBpZiAoZmlsdGVyUmVmLmN1cnJlbnQgJiYgIWZpbHRlclJlZi5jdXJyZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgIGlmIChzaG93RmlsdGVyTGlzdCkge1xuICAgICAgICBzZXRTaG93RmlsdGVyTGlzdChmYWxzZSk7XG4gICAgICAgIHNldFNob3dEYXRlcGlja2VyKGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZUZpbHRlckNsaWNrT3V0c2lkZSwgZmFsc2UpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlRmlsdGVyQ2xpY2tPdXRzaWRlLCBmYWxzZSk7XG4gICAgfTtcbiAgfSwgW3Nob3dGaWx0ZXJMaXN0XSk7XG5cbiAgY29uc3QgdG9nZ2xlID0gKCkgPT4ge1xuICAgIHNldFNob3dGaWx0ZXJMaXN0KCFzaG93RmlsdGVyTGlzdCk7XG4gICAgc2V0U2hvd0RhdGVwaWNrZXIoIXNob3dEYXRlcGlja2VyKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGaWx0ZXJSZXNldCA9ICgpID0+IHtcbiAgICBvblJlc2V0KCk7XG4gICAgdG9nZ2xlKCk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlckNvbnRhaW5lcn0gcmVmPXtmaWx0ZXJSZWZ9PlxuICAgICAgPFN0YWNrXG4gICAgICAgIGFsaWduSXRlbXM9XCJjZW50ZXJcIlxuICAgICAgICBkaXJlY3Rpb249XCJyb3dcIlxuICAgICAgICBzeD17eyBwdDogMiwgcGI6IDIgfX1cbiAgICAgICAgb25DbGljaz17dG9nZ2xlfVxuICAgICAgPlxuICAgICAgICA8QmFkZ2UgYmFkZ2VDb250ZW50PXthY3RpdmVGaWx0ZXJzQ291bnR9IGNvbG9yPVwicHJpbWFyeVwiIHN4PXt7IG1yOiAxIH19PlxuICAgICAgICAgIDxGaWx0ZXJMaXN0SWNvbiBmb250U2l6ZT1cImxhcmdlXCIgY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVySWNvbn0gLz5cbiAgICAgICAgPC9CYWRnZT5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyTGFiZWx9Pnt0KFwiZmlsdGVyLmZpbHRlclwiKX08L3NwYW4+XG4gICAgICA8L1N0YWNrPlxuICAgICAgPEJveFxuICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5maWx0ZXJMaXN0Q29udGFpbmVyfSAke3N0eWxlcy5jb250YWluZXJ9ICR7XG4gICAgICAgICAgc2hvd0ZpbHRlckxpc3QgPyBzdHlsZXMuc2hvd0ZpbHRlckxpc3QgOiBcIlwiXG4gICAgICAgIH1gfVxuICAgICAgPlxuICAgICAgICA8UGFwZXIgZWxldmF0aW9uPXs4fSBjbGFzc05hbWU9e3N0eWxlcy5maWx0ZXJDaGVja2JveENvbnRhaW5lcn0+XG4gICAgICAgICAgPENhcmQgdmFyaWFudD1cIm91dGxpbmVkXCI+XG4gICAgICAgICAgICA8Q2FyZEhlYWRlclxuICAgICAgICAgICAgICB0aXRsZT1cIkZpbHRlcnNcIlxuICAgICAgICAgICAgICBhY3Rpb249e1xuICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgIGRpc2FibGVSaXBwbGVcbiAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUZpbHRlclJlc2V0fVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY2xlYW5CdXR0b259XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3QoXCJmaWx0ZXIuY2xlYXJcIil9XG4gICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8RGl2aWRlciAvPlxuICAgICAgICAgICAgPEJhZGdlRmVhdHVyZUZpbHRlclxuICAgICAgICAgICAgICB2YWx1ZXM9e2ZpbHRlcltGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkVdfVxuICAgICAgICAgICAgICBvbkZpbHRlcj17KG5ld0ZpbHRlcikgPT4gb25GaWx0ZXIobmV3RmlsdGVyKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8QXNzaWduZWRGaWx0ZXJcbiAgICAgICAgICAgICAgdmFsdWVzPXtmaWx0ZXJbRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORURdfVxuICAgICAgICAgICAgICBvbkZpbHRlcj17KG5ld0ZpbHRlcikgPT4gb25GaWx0ZXIobmV3RmlsdGVyKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8U3RhdHVzRmlsdGVyXG4gICAgICAgICAgICAgIHZhbHVlcz17ZmlsdGVyW0ZJTFRFUl9WQVJfT1dORVJfU1RBVFVTXX1cbiAgICAgICAgICAgICAgb25GaWx0ZXI9eyhuZXdGaWx0ZXIpID0+IG9uRmlsdGVyKG5ld0ZpbHRlcil9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPFRpY2tldFR5cGVGaWx0ZXJcbiAgICAgICAgICAgICAgdmFsdWVzPXtmaWx0ZXJbRklMVEVSX1ZBUl9USUNLRVRfVFlQRV19XG4gICAgICAgICAgICAgIG9uRmlsdGVyPXsobmV3RmlsdGVyKSA9PiBvbkZpbHRlcihuZXdGaWx0ZXIpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxQcm9tb0NvZGVGaWx0ZXJcbiAgICAgICAgICAgICAgdmFsdWVzPXtmaWx0ZXJbRklMVEVSX1ZBUl9QUk9NT0NPREVdfVxuICAgICAgICAgICAgICBvbkZpbHRlcj17KG5ld0ZpbHRlcikgPT4gb25GaWx0ZXIobmV3RmlsdGVyKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8RnJlZVBhaWRGaWx0ZXJcbiAgICAgICAgICAgICAgdmFsdWVzPXtmaWx0ZXJbRklMVEVSX1ZBUl9GUkVFX1BBSURdfVxuICAgICAgICAgICAgICBvbkZpbHRlcj17KG5ld0ZpbHRlcikgPT4gb25GaWx0ZXIobmV3RmlsdGVyKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9DYXJkPlxuICAgICAgICA8L1BhcGVyPlxuICAgICAgPC9Cb3g+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5GaWx0ZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmNvbnN0IG1hcFN0YXRlVG9Qcm9wcyA9ICh7IHdpZGdldFN0YXRlIH0pID0+ICh7XG4gIHNvcnQ6IHdpZGdldFN0YXRlLnNvcnQsXG4gIGZpbHRlcjogd2lkZ2V0U3RhdGUuZmlsdGVyLFxuICBhY3RpdmVGaWx0ZXJzQ291bnQ6IHdpZGdldFN0YXRlLmFjdGl2ZUZpbHRlcnNDb3VudFxufSk7XG5cbmV4cG9ydCBkZWZhdWx0IGNvbm5lY3QobWFwU3RhdGVUb1Byb3BzLCB7fSkoRmlsdGVyKTtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQm94LFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBDYXJkSGVhZGVyLFxuICBJY29uQnV0dG9uLFxuICBDb2xsYXBzZSxcbiAgQ2FyZENvbnRlbnQsXG4gIFJhZGlvR3JvdXAsXG4gIFJhZGlvXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgRXhwYW5kTW9yZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXhwYW5kTW9yZVwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgRklMVEVSX1ZBUl9GUkVFX1BBSUQgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuXG5jb25zdCBGcmVlUGFpZEZpbHRlciA9ICh7IG9uRmlsdGVyIH0pID0+IHtcbiAgY29uc3Qge1xuICAgIGZpbHRlcjogeyBGSUxURVJfVkFSX0ZSRUVfUEFJRDogZmlsdGVyVmFsdWVzIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG5cbiAgY29uc3QgW2lzRXhwYW5kZWQsIHNldElzRXhwYW5kZWRdID0gdXNlU3RhdGUoISFmaWx0ZXJWYWx1ZXMpO1xuXG4gIGNvbnN0IGFzc2lnbmVkVmFsdWVzID0gW1xuICAgIHsgdmFsdWU6IFwiRnJlZVwiLCBsYWJlbDogXCJGcmVlXCIgfSxcbiAgICB7IHZhbHVlOiBcIlBhaWRcIiwgbGFiZWw6IFwiUGFpZFwiIH1cbiAgXTtcblxuICBjb25zdCBoYW5kbGVGaWx0ZXJDaGFuZ2UgPSAoZXYsIHZhbHVlKSA9PiB7XG4gICAgY29uc3QgbmV3RmlsdGVyID0gdmFsdWU7XG4gICAgb25GaWx0ZXIoe1xuICAgICAgW0ZJTFRFUl9WQVJfRlJFRV9QQUlEXTogbmV3RmlsdGVyXG4gICAgfSk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPENhcmRIZWFkZXJcbiAgICAgICAgdGl0bGU9XCJGcmVlIC8gUGFpZFwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlV3JhcHBlcn1cbiAgICAgICAgb25DbGljaz17KCkgPT4gc2V0SXNFeHBhbmRlZCghaXNFeHBhbmRlZCl9XG4gICAgICAgIGFjdGlvbj17XG4gICAgICAgICAgPEljb25CdXR0b24gYXJpYS1sYWJlbD1cImV4cGFuZFwiIGRpc2FibGVSaXBwbGU+XG4gICAgICAgICAgICA8RXhwYW5kTW9yZUljb25cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IGlzRXhwYW5kZWQgPyBcInJvdGF0ZSgxODBkZWcpXCIgOiBcInJvdGF0ZSgwZGVnKVwiLFxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IFwidHJhbnNmb3JtIDAuM3NcIlxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgICA8Q29sbGFwc2UgaW49e2lzRXhwYW5kZWR9IHRpbWVvdXQ9XCJhdXRvXCIgdW5tb3VudE9uRXhpdD5cbiAgICAgICAgPENhcmRDb250ZW50XG4gICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgIHB5OiAwLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiMwMDAwMDAwQVwiLFxuICAgICAgICAgICAgXCImOmxhc3QtY2hpbGRcIjoge1xuICAgICAgICAgICAgICBwYjogMFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICA8UmFkaW9Hcm91cCB2YWx1ZT17ZmlsdGVyVmFsdWVzfSBvbkNoYW5nZT17aGFuZGxlRmlsdGVyQ2hhbmdlfT5cbiAgICAgICAgICAgIHthc3NpZ25lZFZhbHVlcy5tYXAoKGFzc2lnbmVkKSA9PiAoXG4gICAgICAgICAgICAgIDxCb3hcbiAgICAgICAgICAgICAgICBzeD17eyBweTogMSB9fVxuICAgICAgICAgICAgICAgIGtleT17YGZpbHRlci1iYWRnZS1mZWF0dXJlLSR7YXNzaWduZWQubGFiZWx9fWB9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICAgICAgICAgIDxSYWRpb1xuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXthc3NpZ25lZC52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICAgICAgXCImIC5NdWlTdmdJY29uLXJvb3RcIjogeyBmb250U2l6ZTogMTggfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiJi5NdWktY2hlY2tlZFwiOiB7IGNvbG9yOiBcIiMyMTk2RjNcIiB9XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGxhYmVsPXthc3NpZ25lZC5sYWJlbH1cbiAgICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICAgIFwiJiAuTXVpRm9ybUNvbnRyb2xMYWJlbC1sYWJlbFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6IFwiMWVtXCJcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgIDwvUmFkaW9Hcm91cD5cbiAgICAgICAgPC9DYXJkQ29udGVudD5cbiAgICAgIDwvQ29sbGFwc2U+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5GcmVlUGFpZEZpbHRlci5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgRnJlZVBhaWRGaWx0ZXI7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBCb3gsXG4gIENhcmRIZWFkZXIsXG4gIEljb25CdXR0b24sXG4gIENvbGxhcHNlLFxuICBDYXJkQ29udGVudCxcbiAgVGV4dEZpZWxkXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgRXhwYW5kTW9yZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXhwYW5kTW9yZVwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgRklMVEVSX1ZBUl9QUk9NT0NPREUgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuXG5jb25zdCBQcm9tb0NvZGVGaWx0ZXIgPSAoeyBvbkZpbHRlciB9KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBmaWx0ZXI6IHsgRklMVEVSX1ZBUl9QUk9NT0NPREU6IGZpbHRlclZhbHVlcyB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuXG4gIGNvbnN0IFtpc0V4cGFuZGVkLCBzZXRJc0V4cGFuZGVkXSA9IHVzZVN0YXRlKCEhZmlsdGVyVmFsdWVzKTtcbiAgY29uc3QgW3Byb21vQ29kZSwgc2V0UHJvbW9Db2RlXSA9IHVzZVN0YXRlKGZpbHRlclZhbHVlcyB8fCBcIlwiKTtcblxuICBjb25zdCBkZWJvdW5jZVRpbWVyID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCBERUJPVU5DRV9WQUxVRSA9IDUwMDtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldFByb21vQ29kZShmaWx0ZXJWYWx1ZXMgfHwgXCJcIik7XG4gICAgc2V0SXNFeHBhbmRlZCghIWZpbHRlclZhbHVlcyk7XG4gIH0sIFtmaWx0ZXJWYWx1ZXNdKTtcblxuICBjb25zdCBoYW5kbGVGaWx0ZXJDaGFuZ2UgPSAoZXYpID0+IHtcbiAgICBjb25zdCBuZXdQcm9tb0NvZGUgPSBldi50YXJnZXQudmFsdWU7XG4gICAgLy8gdXBkYXRlIGxvY2FsIHN0YXRlIHNvIHRoZSBpbnB1dCByZWZsZWN0cyBjaGFuZ2VzXG4gICAgc2V0UHJvbW9Db2RlKG5ld1Byb21vQ29kZSk7XG5cbiAgICAvLyByZW1vdmUgY3VycmVudCBkZWJvdW5jZVxuICAgIGlmIChkZWJvdW5jZVRpbWVyLmN1cnJlbnQpIHtcbiAgICAgIGNsZWFyVGltZW91dChkZWJvdW5jZVRpbWVyLmN1cnJlbnQpO1xuICAgIH1cblxuICAgIC8vIGRlYm91bmNlIHNldCB0byA1MDAgbXNcbiAgICBkZWJvdW5jZVRpbWVyLmN1cnJlbnQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIG9uRmlsdGVyKHtcbiAgICAgICAgW0ZJTFRFUl9WQVJfUFJPTU9DT0RFXTogbmV3UHJvbW9Db2RlXG4gICAgICB9KTtcbiAgICB9LCBERUJPVU5DRV9WQUxVRSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyByZW1vdmUgZGVib3VuY2Ugb24gcmVsb2FkXG4gICAgaWYgKGRlYm91bmNlVGltZXIuY3VycmVudCkge1xuICAgICAgY2xlYXJUaW1lb3V0KGRlYm91bmNlVGltZXIuY3VycmVudCk7XG4gICAgfVxuICB9LCBbXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPENhcmRIZWFkZXJcbiAgICAgICAgdGl0bGU9XCJQcm9tbyBDb2RlXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGl0bGVXcmFwcGVyfVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRJc0V4cGFuZGVkKCFpc0V4cGFuZGVkKX1cbiAgICAgICAgYWN0aW9uPXtcbiAgICAgICAgICA8SWNvbkJ1dHRvbiBhcmlhLWxhYmVsPVwiZXhwYW5kXCIgZGlzYWJsZVJpcHBsZT5cbiAgICAgICAgICAgIDxFeHBhbmRNb3JlSWNvblxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogaXNFeHBhbmRlZCA/IFwicm90YXRlKDE4MGRlZylcIiA6IFwicm90YXRlKDBkZWcpXCIsXG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogXCJ0cmFuc2Zvcm0gMC4zc1wiXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgfVxuICAgICAgLz5cbiAgICAgIDxDb2xsYXBzZSBpbj17aXNFeHBhbmRlZH0gdGltZW91dD1cImF1dG9cIiB1bm1vdW50T25FeGl0PlxuICAgICAgICA8Q2FyZENvbnRlbnRcbiAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiMwMDAwMDAwQVwiLFxuICAgICAgICAgICAgXCImOmxhc3QtY2hpbGRcIjoge1xuICAgICAgICAgICAgICBweTogMVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJFbnRlciBwcm9tbyBjb2RlXCJcbiAgICAgICAgICAgIHZhbHVlPXtwcm9tb0NvZGV9XG4gICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlRmlsdGVyQ2hhbmdlfVxuICAgICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9DYXJkQ29udGVudD5cbiAgICAgIDwvQ29sbGFwc2U+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5Qcm9tb0NvZGVGaWx0ZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFByb21vQ29kZUZpbHRlcjtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBzaGFsbG93RXF1YWwsIHVzZVNlbGVjdG9yIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyBzdHlsZWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCBTZWFyY2hJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL1NlYXJjaFwiO1xuaW1wb3J0IENsb3NlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DbG9zZVwiO1xuaW1wb3J0IElucHV0QmFzZSBmcm9tIFwiQG11aS9tYXRlcmlhbC9JbnB1dEJhc2VcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBGSUxURVJfVkFSX09SREVSX05VTUJFUiB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5cbmNvbnN0IFNlYXJjaENvbnRhaW5lciA9IHN0eWxlZChcImRpdlwiKSgoKSA9PiAoe1xuICBwb3NpdGlvbjogXCJyZWxhdGl2ZVwiLFxuICBtYXJnaW5SaWdodDogXCIwXCIsXG4gIG1hcmdpbkxlZnQ6IFwiMFwiLFxuICB3aWR0aDogXCIxMDAlXCIsXG4gIGRpc3BsYXk6IFwiYmxvY2tcIlxufSkpO1xuY29uc3QgU2VhcmNoSWNvbldyYXBwZXIgPSBzdHlsZWQoXCJkaXZcIikoKCkgPT4gKHtcbiAgaGVpZ2h0OiBcIjEwMCVcIixcbiAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgZGlzcGxheTogXCJmbGV4XCIsXG4gIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG4gIGp1c3RpZnlDb250ZW50OiBcImNlbnRlclwiXG59KSk7XG5jb25zdCBTdHlsZWRJbnB1dEJhc2UgPSBzdHlsZWQoSW5wdXRCYXNlKSgoKSA9PiAoe1xuICBjb2xvcjogXCJpbmhlcml0XCIsXG4gIGJvcmRlckJvdHRvbTogXCIxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjQyKVwiLFxuICBwYWRkaW5nTGVmdDogXCIyNXB4XCIsXG4gIHBhZGRpbmdSaWdodDogXCIyNXB4XCIsXG4gIGZvbnRTaXplOiBcIjFlbVwiXG59KSk7XG5jb25zdCBDbG9zZUljb25XcmFwcGVyID0gc3R5bGVkKENsb3NlSWNvbikoKCkgPT4gKHtcbiAgcGFkZGluZzogXCIycHhcIixcbiAgZm9udFNpemU6IFwiMS41ZW1cIixcbiAgaGVpZ2h0OiBcIjEwMCVcIixcbiAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgdG9wOiBcIjBcIixcbiAgcmlnaHQ6IFwiMFwiLFxuICBkaXNwbGF5OiBcImZsZXhcIixcbiAgYWxpZ25JdGVtczogXCJjZW50ZXJcIixcbiAganVzdGlmeUNvbnRlbnQ6IFwiY2VudGVyXCIsXG4gIGN1cnNvcjogXCJwb2ludGVyXCIsXG4gIHpJbmRleDogXCIxMDAwXCJcbn0pKTtcblxuY29uc3QgU2VhcmNoID0gKHsgb25TZWFyY2ggfSkgPT4ge1xuICBjb25zdCB7IGZpbHRlciB9ID0gdXNlU2VsZWN0b3IoXG4gICAgKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSxcbiAgICBzaGFsbG93RXF1YWxcbiAgKTtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbc2VhcmNoVmFsdWUsIHNldFNlYXJjaFZhbHVlXSA9IHVzZVN0YXRlKFwiXCIpO1xuICBjb25zdCBzaG93Q2xvc2VCdG4gPSAhIWZpbHRlcltGSUxURVJfVkFSX09SREVSX05VTUJFUl07XG5cbiAgY29uc3Qgb25LZXlEb3duID0gKGV2ZW50KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAga2V5LFxuICAgICAgbmF0aXZlRXZlbnQ6IHtcbiAgICAgICAgdGFyZ2V0OiB7IHZhbHVlIH1cbiAgICAgIH1cbiAgICB9ID0gZXZlbnQ7XG4gICAgaWYgKGtleSA9PT0gXCJFbnRlclwiKSB7XG4gICAgICBvblNlYXJjaCh7XG4gICAgICAgIFtGSUxURVJfVkFSX09SREVSX05VTUJFUl06IHZhbHVlXG4gICAgICB9KTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IHJlc2V0U2VhcmNoID0gKCkgPT4ge1xuICAgIHNldFNlYXJjaFZhbHVlKFwiXCIpO1xuICAgIG9uU2VhcmNoKHtcbiAgICAgIFtGSUxURVJfVkFSX09SREVSX05VTUJFUl06IFwiXCJcbiAgICB9KTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIHdlIG5lZWQgdGhpcyB3aGVuIHNlYXJjaCBpcyByZXNldCBmcm9tIG91dHNpZGUgdGhpcyBjb21wb25lbnRcbiAgICBzZXRTZWFyY2hWYWx1ZShmaWx0ZXJbRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJdKTtcbiAgfSwgW2ZpbHRlcltGSUxURVJfVkFSX09SREVSX05VTUJFUl1dKTtcblxuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8U2VhcmNoQ29udGFpbmVyPlxuICAgICAgICB7c2hvd0Nsb3NlQnRuICYmIChcbiAgICAgICAgICA8Q2xvc2VJY29uV3JhcHBlciBvbkNsaWNrPXtyZXNldFNlYXJjaH0+XG4gICAgICAgICAgICA8Q2xvc2VJY29uIC8+XG4gICAgICAgICAgPC9DbG9zZUljb25XcmFwcGVyPlxuICAgICAgICApfVxuICAgICAgICA8U2VhcmNoSWNvbldyYXBwZXI+XG4gICAgICAgICAgPFNlYXJjaEljb24gLz5cbiAgICAgICAgPC9TZWFyY2hJY29uV3JhcHBlcj5cbiAgICAgICAgPFN0eWxlZElucHV0QmFzZVxuICAgICAgICAgIHBsYWNlaG9sZGVyPXt0KFwib3JkZXJfc2VhcmNoLm9yZGVyX251bWJlclwiKX1cbiAgICAgICAgICBpbnB1dFByb3BzPXt7IFwiYXJpYS1sYWJlbFwiOiBcInNlYXJjaFwiIH19XG4gICAgICAgICAgdmFsdWU9e3NlYXJjaFZhbHVlfVxuICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0U2VhcmNoVmFsdWUoZS50YXJnZXQudmFsdWUpfVxuICAgICAgICAgIG9uS2V5RG93bj17b25LZXlEb3dufVxuICAgICAgICAvPlxuICAgICAgPC9TZWFyY2hDb250YWluZXI+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5TZWFyY2gucHJvcFR5cGVzID0ge1xuICBvblNlYXJjaDogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFNlYXJjaDtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlUmVmLCB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBTdGFjayBmcm9tIFwiQG11aS9tYXRlcmlhbC9TdGFja1wiO1xuaW1wb3J0IHsgQm94LCBCdXR0b24sIFBhcGVyIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBJbXBvcnRFeHBvcnRJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ltcG9ydEV4cG9ydFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBTb3J0ID0gKHsgb25Tb3J0IH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbc2hvd1NvcnQsIHNldFNob3dTb3J0XSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3Qgc29ydFJlZiA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgaGFuZGxlU29ydENsaWNrT3V0c2lkZSA9IChldmVudCkgPT4ge1xuICAgIGlmIChzb3J0UmVmLmN1cnJlbnQgJiYgIXNvcnRSZWYuY3VycmVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICBzZXRTaG93U29ydChmYWxzZSk7XG4gICAgfVxuICB9O1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVTb3J0Q2xpY2tPdXRzaWRlLCBmYWxzZSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVTb3J0Q2xpY2tPdXRzaWRlLCBmYWxzZSk7XG4gICAgfTtcbiAgfSwgW3Nob3dTb3J0XSk7XG5cbiAgY29uc3QgdG9nZ2xlID0gKCkgPT4ge1xuICAgIHNldFNob3dTb3J0KCFzaG93U29ydCk7XG4gIH07XG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5zb3J0Q29udGFpbmVyfSBvbkNsaWNrPXt0b2dnbGV9PlxuICAgICAgPFN0YWNrXG4gICAgICAgIHJlZj17c29ydFJlZn1cbiAgICAgICAgYWxpZ25JdGVtcz1cImNlbnRlclwiXG4gICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgICAgIHN4PXt7IHB0OiAyLCBwYjogMiB9fVxuICAgICAgPlxuICAgICAgICA8SW1wb3J0RXhwb3J0SWNvbiBmb250U2l6ZT1cImxhcmdlXCIgY2xhc3NOYW1lPXtzdHlsZXMuc29ydEljb259IC8+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLnNvcnRMYWJlbH0+e3QoXCJzb3J0LnNvcnRcIil9PC9zcGFuPlxuICAgICAgPC9TdGFjaz5cbiAgICAgIHtzaG93U29ydCAmJiAoXG4gICAgICAgIDxQYXBlclxuICAgICAgICAgIGVsZXZhdGlvbj17OH1cbiAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5zb3J0TGlzdENvbnRhaW5lcn0gJHtzdHlsZXMuY29udGFpbmVyfWB9XG4gICAgICAgID5cbiAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICBkaXNhYmxlUmlwcGxlXG4gICAgICAgICAgICB2YXJpYW50PVwidGV4dFwiXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5sYWJlbH1cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uU29ydCh7IGRpcmVjdGlvbjogXCJkZXNjXCIsIG5hbWU6IFwiY3JlYXRlZFwiIH0pfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt0KFwic29ydC5uZXdfZmlyc3RcIil9XG4gICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgZGlzYWJsZVJpcHBsZVxuICAgICAgICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMubGFiZWx9XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvblNvcnQoeyBkaXJlY3Rpb246IFwiYXNjXCIsIG5hbWU6IFwiY3JlYXRlZFwiIH0pfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt0KFwic29ydC5vbGRfZmlyc3RcIil9XG4gICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIDwvUGFwZXI+XG4gICAgICApfVxuICAgIDwvQm94PlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgU29ydDtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQm94LFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBDYXJkSGVhZGVyLFxuICBJY29uQnV0dG9uLFxuICBDb2xsYXBzZSxcbiAgQ2FyZENvbnRlbnQsXG4gIFJhZGlvR3JvdXAsXG4gIFJhZGlvXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgRXhwYW5kTW9yZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXhwYW5kTW9yZVwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgRklMVEVSX1ZBUl9PV05FUl9TVEFUVVMgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuXG5jb25zdCBTdGF0dXNGaWx0ZXIgPSAoeyBvbkZpbHRlciB9KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBmaWx0ZXI6IHsgRklMVEVSX1ZBUl9PV05FUl9TVEFUVVM6IGZpbHRlclZhbHVlcyB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuXG4gIGNvbnN0IFtpc0V4cGFuZGVkLCBzZXRJc0V4cGFuZGVkXSA9IHVzZVN0YXRlKCEhZmlsdGVyVmFsdWVzKTtcblxuICBjb25zdCBhc3NpZ25lZFZhbHVlcyA9IFtcbiAgICB7IHZhbHVlOiBcIkluY29tcGxldGVcIiwgbGFiZWw6IFwiSW5jb21wbGV0ZVwiIH0sXG4gICAgeyB2YWx1ZTogXCJDb21wbGV0ZVwiLCBsYWJlbDogXCJDb21wbGV0ZVwiIH1cbiAgXTtcblxuICBjb25zdCBoYW5kbGVGaWx0ZXJDaGFuZ2UgPSAoZXYsIHZhbHVlKSA9PiB7XG4gICAgY29uc3QgbmV3RmlsdGVyID0gdmFsdWU7XG4gICAgb25GaWx0ZXIoe1xuICAgICAgW0ZJTFRFUl9WQVJfT1dORVJfU1RBVFVTXTogbmV3RmlsdGVyXG4gICAgfSk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPENhcmRIZWFkZXJcbiAgICAgICAgdGl0bGU9XCJTdGF0dXNcIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aXRsZVdyYXBwZXJ9XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHNldElzRXhwYW5kZWQoIWlzRXhwYW5kZWQpfVxuICAgICAgICBhY3Rpb249e1xuICAgICAgICAgIDxJY29uQnV0dG9uIGFyaWEtbGFiZWw9XCJleHBhbmRcIiBkaXNhYmxlUmlwcGxlPlxuICAgICAgICAgICAgPEV4cGFuZE1vcmVJY29uXG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBpc0V4cGFuZGVkID8gXCJyb3RhdGUoMTgwZGVnKVwiIDogXCJyb3RhdGUoMGRlZylcIixcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBcInRyYW5zZm9ybSAwLjNzXCJcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICB9XG4gICAgICAvPlxuICAgICAgPENvbGxhcHNlIGluPXtpc0V4cGFuZGVkfSB0aW1lb3V0PVwiYXV0b1wiIHVubW91bnRPbkV4aXQ+XG4gICAgICAgIDxDYXJkQ29udGVudFxuICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICBweTogMCxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjMDAwMDAwMEFcIixcbiAgICAgICAgICAgIFwiJjpsYXN0LWNoaWxkXCI6IHtcbiAgICAgICAgICAgICAgcGI6IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgPFJhZGlvR3JvdXAgdmFsdWU9e2ZpbHRlclZhbHVlc30gb25DaGFuZ2U9e2hhbmRsZUZpbHRlckNoYW5nZX0+XG4gICAgICAgICAgICB7YXNzaWduZWRWYWx1ZXMubWFwKChhc3NpZ25lZCkgPT4gKFxuICAgICAgICAgICAgICA8Qm94XG4gICAgICAgICAgICAgICAgc3g9e3sgcHk6IDEgfX1cbiAgICAgICAgICAgICAgICBrZXk9e2BmaWx0ZXItYmFkZ2UtZmVhdHVyZS0ke2Fzc2lnbmVkLmxhYmVsfX1gfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgICAgICAgICA8UmFkaW9cbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17YXNzaWduZWQudmFsdWV9XG4gICAgICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiJiAuTXVpU3ZnSWNvbi1yb290XCI6IHsgZm9udFNpemU6IDE4IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBcIiYuTXVpLWNoZWNrZWRcIjogeyBjb2xvcjogXCIjMjE5NkYzXCIgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBsYWJlbD17YXNzaWduZWQubGFiZWx9XG4gICAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICBcIiYgLk11aUZvcm1Db250cm9sTGFiZWwtbGFiZWxcIjoge1xuICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiBcIjFlbVwiXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L1JhZGlvR3JvdXA+XG4gICAgICAgIDwvQ2FyZENvbnRlbnQ+XG4gICAgICA8L0NvbGxhcHNlPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuU3RhdHVzRmlsdGVyLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBTdGF0dXNGaWx0ZXI7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQm94LFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBDaGVja2JveCxcbiAgQ2FyZEhlYWRlcixcbiAgSWNvbkJ1dHRvbixcbiAgQ29sbGFwc2UsXG4gIENhcmRDb250ZW50XG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgRXhwYW5kTW9yZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXhwYW5kTW9yZVwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgRklMVEVSX1ZBUl9USUNLRVRfVFlQRSB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5cbmNvbnN0IFRpY2tldFR5cGVGaWx0ZXIgPSAoeyBvbkZpbHRlciB9KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBzdW1taXQ6IHsgdGlja2V0X3R5cGVzIH0sXG4gICAgZmlsdGVyOiB7IEZJTFRFUl9WQVJfVElDS0VUX1RZUEU6IGZpbHRlclZhbHVlcyB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuXG4gIGNvbnN0IFtpc0V4cGFuZGVkLCBzZXRJc0V4cGFuZGVkXSA9IHVzZVN0YXRlKCEhZmlsdGVyVmFsdWVzLmxlbmd0aCk7XG5cbiAgY29uc3QgaGFuZGxlRmlsdGVyQ2hhbmdlID0gKHZhbHVlKSA9PiB7XG4gICAgY29uc3QgbmV3RmlsdGVycyA9IGZpbHRlclZhbHVlcz8uaW5jbHVkZXModmFsdWUpXG4gICAgICA/IGZpbHRlclZhbHVlcy5maWx0ZXIoKGYpID0+IGYgIT09IHZhbHVlKVxuICAgICAgOiBbLi4uZmlsdGVyVmFsdWVzLCB2YWx1ZV07XG4gICAgb25GaWx0ZXIoe1xuICAgICAgW0ZJTFRFUl9WQVJfVElDS0VUX1RZUEVdOiBuZXdGaWx0ZXJzXG4gICAgfSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRJc0V4cGFuZGVkKCEhZmlsdGVyVmFsdWVzLmxlbmd0aCk7XG4gIH0sIFtmaWx0ZXJWYWx1ZXNdKTtcblxuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8Q2FyZEhlYWRlclxuICAgICAgICB0aXRsZT1cIlRpY2tldCBUeXBlXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGl0bGVXcmFwcGVyfVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRJc0V4cGFuZGVkKCFpc0V4cGFuZGVkKX1cbiAgICAgICAgYWN0aW9uPXtcbiAgICAgICAgICA8SWNvbkJ1dHRvbiBhcmlhLWxhYmVsPVwiZXhwYW5kXCIgZGlzYWJsZVJpcHBsZT5cbiAgICAgICAgICAgIDxFeHBhbmRNb3JlSWNvblxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogaXNFeHBhbmRlZCA/IFwicm90YXRlKDE4MGRlZylcIiA6IFwicm90YXRlKDBkZWcpXCIsXG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogXCJ0cmFuc2Zvcm0gMC4zc1wiXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgfVxuICAgICAgLz5cbiAgICAgIDxDb2xsYXBzZSBpbj17aXNFeHBhbmRlZH0gdGltZW91dD1cImF1dG9cIiB1bm1vdW50T25FeGl0PlxuICAgICAgICA8Q2FyZENvbnRlbnRcbiAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgcHk6IDAsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiIzAwMDAwMDBBXCIsXG4gICAgICAgICAgICBcIiY6bGFzdC1jaGlsZFwiOiB7XG4gICAgICAgICAgICAgIHBiOiAwXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHt0aWNrZXRfdHlwZXMubWFwKChiZikgPT4gKFxuICAgICAgICAgICAgPEJveCBzeD17eyBweTogMSB9fSBrZXk9e2BmaWx0ZXItYmFkZ2UtZmVhdHVyZS0ke2JmLm5hbWV9fWB9PlxuICAgICAgICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiBoYW5kbGVGaWx0ZXJDaGFuZ2UoYmYuaWQpfVxuICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXtmaWx0ZXJWYWx1ZXMuaW5jbHVkZXMoYmYuaWQpfVxuICAgICAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICAgIFwiJiAuTXVpU3ZnSWNvbi1yb290XCI6IHsgZm9udFNpemU6IDE4IH0sXG4gICAgICAgICAgICAgICAgICAgICAgXCImLk11aS1jaGVja2VkXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBcIiMyMTk2RjNcIlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxhYmVsPXtiZi5uYW1lfVxuICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICBcIiYgLk11aUZvcm1Db250cm9sTGFiZWwtbGFiZWxcIjoge1xuICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogXCIxZW1cIlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9DYXJkQ29udGVudD5cbiAgICAgIDwvQ29sbGFwc2U+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5UaWNrZXRUeXBlRmlsdGVyLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXRUeXBlRmlsdGVyO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgR3JpZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgRmlsdGVyIGZyb20gXCIuL0ZpbHRlclwiO1xuaW1wb3J0IFNvcnQgZnJvbSBcIi4vU29ydFwiO1xuaW1wb3J0IFNlYXJjaCBmcm9tIFwiLi9TZWFyY2hcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgRmlsdGVycyA9ICh7IG9uRmlsdGVyLCBvblNvcnQsIG9uU2VhcmNoLCBvblJlc2V0IH0pID0+IChcbiAgPEdyaWQgY29udGFpbmVyIGp1c3RpZnk9XCJmbGV4LWVuZFwiIGFsaWduSXRlbXM9XCJjZW50ZXJcIj5cbiAgICA8R3JpZFxuICAgICAgaXRlbVxuICAgICAgeHM9ezZ9XG4gICAgICBjb250YWluZXJcbiAgICAgIHBhZGRpbmc9ezF9XG4gICAgICBnYXA9ezJ9XG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy5maWx0ZXJTb3J0Q29udGFpbmVyfVxuICAgICAgc3g9e3sgcHQ6IDIsIHBiOiAyIH19XG4gICAgPlxuICAgICAgPEdyaWQgaXRlbT5cbiAgICAgICAgPEZpbHRlciBvbkZpbHRlcj17b25GaWx0ZXJ9IG9uUmVzZXQ9e29uUmVzZXR9IC8+XG4gICAgICA8L0dyaWQ+XG4gICAgICA8R3JpZCBpdGVtPlxuICAgICAgICA8U29ydCBvblNvcnQ9e29uU29ydH0gLz5cbiAgICAgIDwvR3JpZD5cbiAgICA8L0dyaWQ+XG4gICAgPEdyaWQgaXRlbSB4cz17Nn0gY29udGFpbmVyIGp1c3RpZnlDb250ZW50PVwiZmxleC1lbmRcIj5cbiAgICAgIDxTZWFyY2ggb25TZWFyY2g9e29uU2VhcmNofSAvPlxuICAgIDwvR3JpZD5cbiAgPC9HcmlkPlxuKTtcblxuRmlsdGVycy5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25Tb3J0OiBQcm9wVHlwZXMuZnVuYyxcbiAgb25TZWFyY2g6IFByb3BUeXBlcy5mdW5jLFxuICBvblJlc2V0OiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgRmlsdGVycztcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEJveCwgQnV0dG9uIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBGb3JtRm9vdGVyID0gKHsgc2F2ZUxhYmVsLCBjYW5jZWxMYWJlbCwgb25DbG9zZSwgZGlzYWJsZWQgfSkgPT4gKFxuICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmZvb3Rlcn0+XG4gICAgPEJ1dHRvblxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY2FuY2VsQnRufVxuICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgb25DbGljaz17b25DbG9zZX1cbiAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICA+XG4gICAgICB7Y2FuY2VsTGFiZWx9XG4gICAgPC9CdXR0b24+XG4gICAgPEJ1dHRvblxuICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy5zYXZlQnRufVxuICAgICAgdmFyaWFudD1cImNvbnRhaW5lZFwiXG4gICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICA+XG4gICAgICB7c2F2ZUxhYmVsfVxuICAgIDwvQnV0dG9uPlxuICA8L0JveD5cbik7XG5cbkZvcm1Gb290ZXIucHJvcFR5cGVzID0ge1xuICBzYXZlTGFiZWw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGNhbmNlbExhYmVsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYyxcbiAgZGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBGb3JtRm9vdGVyO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IEVycm9ySWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FcnJvclwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBFcnJvckxhYmVsKHsgbWVzc2FnZSwgY29sb3IsIGNsYXNzTmFtZXMsIGRhdGFUZXN0SWQgfSkge1xuICByZXR1cm4gKFxuICAgIDxzcGFuXG4gICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5lcnJvckxhYmVsfSAke2NsYXNzTmFtZXMgJiYgY2xhc3NOYW1lc31gfVxuICAgICAgc3R5bGU9e3sgY29sb3IgfX1cbiAgICAgIGRhdGEtdGVzdGlkPXtkYXRhVGVzdElkfVxuICAgID5cbiAgICAgIDxFcnJvckljb24gc3g9e3sgY29sb3IgfX0gLz5cbiAgICAgIHttZXNzYWdlfVxuICAgIDwvc3Bhbj5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgRXJyb3JMYWJlbDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEJhY2tkcm9wLCBDaXJjdWxhclByb2dyZXNzIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcblxuY29uc3QgTG9hZGVyID0gKHsgb3BlbiB9KSA9PiAoXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tYWdpYy1udW1iZXJzXG4gIDxCYWNrZHJvcCBvcGVuPXtvcGVufSBzeD17KHRoZW1lKSA9PiAoeyB6SW5kZXg6IHRoZW1lLnpJbmRleC5kcmF3ZXIgKyAxIH0pfT5cbiAgICA8Q2lyY3VsYXJQcm9ncmVzcyBjb2xvcj1cImluaGVyaXRcIiAvPlxuICA8L0JhY2tkcm9wPlxuKTtcblxuTG9hZGVyLnByb3BUeXBlcyA9IHtcbiAgb3BlbjogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IExvYWRlcjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHNoYWxsb3dFcXVhbCwgdXNlU2VsZWN0b3IgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBJbmZpbml0ZVNjcm9sbCBmcm9tIFwicmVhY3QtaW5maW5pdGUtc2Nyb2xsLWNvbXBvbmVudFwiO1xuaW1wb3J0IE9yZGVyc0xpc3QgZnJvbSBcIi4uL09yZGVyc0xpc3RcIjtcbmltcG9ydCB7IE9ORV9QQUdFX05FWFQgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IE15T3JkZXJzVGlja2V0cyA9ICh7IGZldGNoRGF0YSB9KSA9PiB7XG4gIGNvbnN0IHsgc3VtbWl0LCBtZW1iZXJPcmRlcnMsIG9yZGVyc19jdXJyZW50X3BhZ2UsIG9yZGVyc19sYXN0X3BhZ2UgfSA9XG4gICAgdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgaWQ9XCJpbmZpbml0ZVdyYXBwZXJcIiBjbGFzc05hbWU9e3N0eWxlcy5teU9yZGVyc1dyYXBwZXJ9PlxuICAgICAgPEluZmluaXRlU2Nyb2xsXG4gICAgICAgIGRhdGFMZW5ndGg9e21lbWJlck9yZGVycz8ubGVuZ3RofVxuICAgICAgICBuZXh0PXsoKSA9PiBmZXRjaERhdGEob3JkZXJzX2N1cnJlbnRfcGFnZSArIE9ORV9QQUdFX05FWFQpfVxuICAgICAgICBoYXNNb3JlPXtvcmRlcnNfY3VycmVudF9wYWdlIDwgb3JkZXJzX2xhc3RfcGFnZX1cbiAgICAgICAgc2Nyb2xsVGhyZXNob2xkPXsxfVxuICAgICAgPlxuICAgICAgICB7bWVtYmVyT3JkZXJzPy5tYXAoKG9yZGVyKSA9PiAoXG4gICAgICAgICAgPE9yZGVyc0xpc3RcbiAgICAgICAgICAgIGtleT17b3JkZXIubnVtYmVyICsgb3JkZXIuaWR9XG4gICAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICAvPlxuICAgICAgICApKX1cbiAgICAgIDwvSW5maW5pdGVTY3JvbGw+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBNeU9yZGVyc1RpY2tldHM7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmNvbnN0IFRpY2tldHNJY29uID0gKCkgPT4gKFxuICA8c3ZnXG4gICAgd2lkdGg9XCIxMjlcIlxuICAgIGhlaWdodD1cIjgwXCJcbiAgICB2aWV3Qm94PVwiMCAwIDEyOSA4MFwiXG4gICAgZmlsbD1cIm5vbmVcIlxuICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICA+XG4gICAgPHBhdGhcbiAgICAgIGQ9XCJNMTI1LjEyMiAzNi40NzgxQzEyNC44MTQgMzcuNTExMiAxMjMuNzM4IDM4LjA4OTEgMTIyLjY2MSAzOC4wMzc2QzExOC41MDYgMzcuODM4NiAxMTQuNTkzIDQwLjQ3NTQgMTEzLjM0OSA0NC42NDEyQzExMi4xMDUgNDguODA3MyAxMTMuOTMyIDUzLjE1NzYgMTE3LjUxNyA1NS4yNjk3QzExOC40NDYgNTUuODE2OSAxMTkuMDI4IDU2Ljg4OTkgMTE4LjcyIDU3LjkyMzFMMTE2LjM2OSA2NS43OTY3QzExNi4wNTMgNjYuODU1MSAxMTQuOTM5IDY3LjQ1NyAxMTMuODgxIDY3LjE0MUwzMC43Njc1IDQyLjMyNzFDMjkuNzA5MSA0Mi4wMTEyIDI5LjEwNzIgNDAuODk3IDI5LjQyMzIgMzkuODM4Nkw0MC4zNDM5IDMuMjYwMTZDNDAuNjU5OSAyLjIwMTc2IDQxLjc3NCAxLjU5OTkxIDQyLjgzMjQgMS45MTU5TDEyNS45NDYgMjYuNzI5N0MxMjcuMDA0IDI3LjA0NTcgMTI3LjYwNiAyOC4xNTk5IDEyNy4yOSAyOS4yMTgzTDEyNS4xMjIgMzYuNDc4MVpcIlxuICAgICAgZmlsbD1cIndoaXRlXCJcbiAgICAvPlxuICAgIDxwYXRoXG4gICAgICBkPVwiTTExMy4zNDkgNDQuNjQxMkwxMTIuMzkxIDQ0LjM1NTFMMTEyLjM5MSA0NC4zNTUyTDExMy4zNDkgNDQuNjQxMlpNMTE3LjUxNyA1NS4yNjk3TDExNy4wMDkgNTYuMTMxMkwxMTcuNTE3IDU1LjI2OTdaTTEyMi42NjEgMzguMDM3NkwxMjIuNzA5IDM3LjAzODdDMTE4LjEwNSAzNi44MTgzIDExMy43NjkgMzkuNzM4MSAxMTIuMzkxIDQ0LjM1NTFMMTEzLjM0OSA0NC42NDEyTDExNC4zMDcgNDQuOTI3NEMxMTUuNDE2IDQxLjIxMjcgMTE4LjkwNiAzOC44NTg5IDEyMi42MTQgMzkuMDM2NEwxMjIuNjYxIDM4LjAzNzZaTTExMy4zNDkgNDQuNjQxMkwxMTIuMzkxIDQ0LjM1NTJDMTExLjAxMiA0OC45NzI1IDExMy4wMzggNTMuNzkxNSAxMTcuMDA5IDU2LjEzMTJMMTE3LjUxNyA1NS4yNjk3TDExOC4wMjQgNTQuNDA4MUMxMTQuODI2IDUyLjUyMzggMTEzLjE5OCA0OC42NDIxIDExNC4zMDcgNDQuOTI3M0wxMTMuMzQ5IDQ0LjY0MTJaTTExOC43MiA1Ny45MjMxTDExNy43NjIgNTcuNjM3TDExNS40MTEgNjUuNTEwNkwxMTYuMzY5IDY1Ljc5NjdMMTE3LjMyNyA2Ni4wODI4TDExOS42NzggNTguMjA5MUwxMTguNzIgNTcuOTIzMVpNMTEzLjg4MSA2Ny4xNDFMMTE0LjE2NyA2Ni4xODI4TDMxLjA1MzUgNDEuMzY4OUwzMC43Njc1IDQyLjMyNzFMMzAuNDgxNCA0My4yODU0TDExMy41OTUgNjguMDk5MkwxMTMuODgxIDY3LjE0MVpNMjkuNDIzMiAzOS44Mzg2TDMwLjM4MTQgNDAuMTI0N0w0MS4zMDIxIDMuNTQ2MjRMNDAuMzQzOSAzLjI2MDE2TDM5LjM4NTcgMi45NzQwOUwyOC40NjUgMzkuNTUyNUwyOS40MjMyIDM5LjgzODZaTTQyLjgzMjQgMS45MTU5TDQyLjU0NjQgMi44NzQxMUwxMjUuNjYgMjcuNjg3OUwxMjUuOTQ2IDI2LjcyOTdMMTI2LjIzMiAyNS43NzE1TDQzLjExODUgMC45NTc2OTdMNDIuODMyNCAxLjkxNTlaTTEyNy4yOSAyOS4yMTgzTDEyNi4zMzIgMjguOTMyMkwxMjQuMTY0IDM2LjE5MkwxMjUuMTIyIDM2LjQ3ODFMMTI2LjA4MSAzNi43NjQyTDEyOC4yNDggMjkuNTA0NEwxMjcuMjkgMjkuMjE4M1pNMTI1Ljk0NiAyNi43Mjk3TDEyNS42NiAyNy42ODc5QzEyNi4xODkgMjcuODQ1OSAxMjYuNDkgMjguNDAzIDEyNi4zMzIgMjguOTMyMkwxMjcuMjkgMjkuMjE4M0wxMjguMjQ4IDI5LjUwNDRDMTI4LjcyMiAyNy45MTY4IDEyNy44MTkgMjYuMjQ1NSAxMjYuMjMyIDI1Ljc3MTVMMTI1Ljk0NiAyNi43Mjk3Wk0zMC43Njc1IDQyLjMyNzFMMzEuMDUzNSA0MS4zNjg5QzMwLjUyNDMgNDEuMjEwOSAzMC4yMjM0IDQwLjY1MzkgMzAuMzgxNCA0MC4xMjQ3TDI5LjQyMzIgMzkuODM4NkwyOC40NjUgMzkuNTUyNUMyNy45OTEgNDEuMTQwMSAyOC44OTM4IDQyLjgxMTQgMzAuNDgxNCA0My4yODU0TDMwLjc2NzUgNDIuMzI3MVpNMTE2LjM2OSA2NS43OTY3TDExNS40MTEgNjUuNTEwNkMxMTUuMjUzIDY2LjAzOTggMTE0LjY5NiA2Ni4zNDA4IDExNC4xNjcgNjYuMTgyOEwxMTMuODgxIDY3LjE0MUwxMTMuNTk1IDY4LjA5OTJDMTE1LjE4MiA2OC41NzMyIDExNi44NTMgNjcuNjcwNCAxMTcuMzI3IDY2LjA4MjhMMTE2LjM2OSA2NS43OTY3Wk0xMTcuNTE3IDU1LjI2OTdMMTE3LjAwOSA1Ni4xMzEyQzExNy42NTMgNTYuNTEwNSAxMTcuOTA1IDU3LjE1NyAxMTcuNzYyIDU3LjYzN0wxMTguNzIgNTcuOTIzMUwxMTkuNjc4IDU4LjIwOTFDMTIwLjE1MiA1Ni42MjI4IDExOS4yMzkgNTUuMTIzNCAxMTguMDI0IDU0LjQwODFMMTE3LjUxNyA1NS4yNjk3Wk00MC4zNDM5IDMuMjYwMTZMNDEuMzAyMSAzLjU0NjI0QzQxLjQ2MDEgMy4wMTcwNCA0Mi4wMTcxIDIuNzE2MTEgNDIuNTQ2NCAyLjg3NDExTDQyLjgzMjQgMS45MTU5TDQzLjExODUgMC45NTc2OTdDNDEuNTMwOSAwLjQ4MzcxIDM5Ljg1OTYgMS4zODY0OCAzOS4zODU3IDIuOTc0MDlMNDAuMzQzOSAzLjI2MDE2Wk0xMjIuNjYxIDM4LjAzNzZMMTIyLjYxNCAzOS4wMzY0QzEyNC4wMjEgMzkuMTAzOCAxMjUuNjA3IDM4LjM1MDUgMTI2LjA4MSAzNi43NjQyTDEyNS4xMjIgMzYuNDc4MUwxMjQuMTY0IDM2LjE5MkMxMjQuMDIxIDM2LjY3MiAxMjMuNDU2IDM3LjA3NDQgMTIyLjcwOSAzNy4wMzg3TDEyMi42NjEgMzguMDM3NlpcIlxuICAgICAgZmlsbD1cIiNCREJEQkRcIlxuICAgIC8+XG4gICAgPHBhdGhcbiAgICAgIGQ9XCJNMTA3LjkwMyAyMi42NzU4TDk2LjU2OTYgNjAuNjM3OVwiXG4gICAgICBzdHJva2U9XCIjQkRCREJEXCJcbiAgICAgIHN0cm9rZVdpZHRoPVwiMlwiXG4gICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgc3Ryb2tlRGFzaGFycmF5PVwiMiA1XCJcbiAgICAvPlxuICAgIDxwYXRoXG4gICAgICBkPVwiTTkxLjc0MiA0NS44OTUyQzkxLjc0MTkgNDYuOTczNCA5MC44NzY1IDQ3LjgzNDcgODkuODI5NyA0OC4wOTMzQzg1Ljc5MDYgNDkuMDkxMyA4Mi43OTU5IDUyLjczNzYgODIuNzk1MyA1Ny4wODUyQzgyLjc5NDggNjEuNDMyOSA4NS43ODg3IDY1LjA3OTIgODkuODI3NiA2Ni4wNzc5QzkwLjg3NDIgNjYuMzM2NyA5MS43Mzk0IDY3LjE5ODMgOTEuNzM5MiA2OC4yNzY0TDkxLjczODIgNzYuNDkzNUM5MS43MzgxIDc3LjU5ODEgOTAuODQyNiA3OC40OTM0IDg5LjczOCA3OC40OTMzTDIuOTk5NzIgNzguNDgyN0MxLjg5NTE1IDc4LjQ4MjUgMC45OTk4MjUgNzcuNTg3IDAuOTk5OTYgNzYuNDgyNEwxLjAwNDY0IDM4LjMwODZDMS4wMDQ3NyAzNy4yMDQgMS45MDAzMSAzNi4zMDg3IDMuMDA0ODggMzYuMzA4OEw4OS43NDMyIDM2LjMxOTVDOTAuODQ3NyAzNi4zMTk2IDkxLjc0MzEgMzcuMjE1MSA5MS43NDI5IDM4LjMxOTdMOTEuNzQyIDQ1Ljg5NTJaXCJcbiAgICAgIGZpbGw9XCJ3aGl0ZVwiXG4gICAgLz5cbiAgICA8cGF0aFxuICAgICAgZD1cIk04Mi43OTUzIDU3LjA4NTJMODEuNzk1MyA1Ny4wODUxTDgxLjc5NTMgNTcuMDg1MUw4Mi43OTUzIDU3LjA4NTJaTTg5LjgyOTcgNDguMDkzM0w5MC4wNjk2IDQ5LjA2NDFMODkuODI5NyA0OC4wOTMzWk04OS44Mjk3IDQ4LjA5MzNMODkuNTg5OSA0Ny4xMjI1Qzg1LjExNSA0OC4yMjgxIDgxLjc5NiA1Mi4yNjY3IDgxLjc5NTMgNTcuMDg1MUw4Mi43OTUzIDU3LjA4NTJMODMuNzk1MyA1Ny4wODU0QzgzLjc5NTggNTMuMjA4NCA4Ni40NjYzIDQ5Ljk1NDQgOTAuMDY5NiA0OS4wNjQxTDg5LjgyOTcgNDguMDkzM1pNODIuNzk1MyA1Ny4wODUyTDgxLjc5NTMgNTcuMDg1MUM4MS43OTQ3IDYxLjkwMzYgODUuMTEyOSA2NS45NDIyIDg5LjU4NzUgNjcuMDQ4N0w4OS44Mjc2IDY2LjA3NzlMOTAuMDY3NiA2NS4xMDcxQzg2LjQ2NDQgNjQuMjE2MiA4My43OTQ4IDYwLjk2MjIgODMuNzk1MyA1Ny4wODUzTDgyLjc5NTMgNTcuMDg1MlpNOTEuNzM5MiA2OC4yNzY0TDkwLjczOTIgNjguMjc2M0w5MC43MzgyIDc2LjQ5MzRMOTEuNzM4MiA3Ni40OTM1TDkyLjczODIgNzYuNDkzN0w5Mi43MzkyIDY4LjI3NjZMOTEuNzM5MiA2OC4yNzY0Wk04OS43MzggNzguNDkzM0w4OS43MzgxIDc3LjQ5MzNMMi45OTk4NCA3Ny40ODI3TDIuOTk5NzIgNzguNDgyN0wyLjk5OTYgNzkuNDgyN0w4OS43Mzc5IDc5LjQ5MzNMODkuNzM4IDc4LjQ5MzNaTTAuOTk5OTYgNzYuNDgyNEwxLjk5OTk2IDc2LjQ4MjVMMi4wMDQ2NCAzOC4zMDg3TDEuMDA0NjQgMzguMzA4NkwwLjAwNDYzNzc2IDM4LjMwODVMLTMuOTYwNzVlLTA1IDc2LjQ4MjNMMC45OTk5NiA3Ni40ODI0Wk0zLjAwNDg4IDM2LjMwODhMMy4wMDQ3NiAzNy4zMDg4TDg5Ljc0MyAzNy4zMTk1TDg5Ljc0MzIgMzYuMzE5NUw4OS43NDMzIDM1LjMxOTVMMy4wMDUwMSAzNS4zMDg4TDMuMDA0ODggMzYuMzA4OFpNOTEuNzQyOSAzOC4zMTk3TDkwLjc0MjkgMzguMzE5Nkw5MC43NDIgNDUuODk1MUw5MS43NDIgNDUuODk1Mkw5Mi43NDIgNDUuODk1M0w5Mi43NDI5IDM4LjMxOThMOTEuNzQyOSAzOC4zMTk3Wk04OS43NDMyIDM2LjMxOTVMODkuNzQzIDM3LjMxOTVDOTAuMjk1MyAzNy4zMTk1IDkwLjc0MyAzNy43NjczIDkwLjc0MjkgMzguMzE5Nkw5MS43NDI5IDM4LjMxOTdMOTIuNzQyOSAzOC4zMTk4QzkyLjc0MzEgMzYuNjYzIDkxLjQwMDEgMzUuMzE5NyA4OS43NDMzIDM1LjMxOTVMODkuNzQzMiAzNi4zMTk1Wk0yLjk5OTcyIDc4LjQ4MjdMMi45OTk4NCA3Ny40ODI3QzIuNDQ3NTUgNzcuNDgyNiAxLjk5OTg5IDc3LjAzNDggMS45OTk5NiA3Ni40ODI1TDAuOTk5OTYgNzYuNDgyNEwtMy45NjA3NWUtMDUgNzYuNDgyM0MtMC4wMDAyNDI2MTkgNzguMTM5MiAxLjM0Mjc0IDc5LjQ4MjUgMi45OTk2IDc5LjQ4MjdMMi45OTk3MiA3OC40ODI3Wk05MS43MzgyIDc2LjQ5MzVMOTAuNzM4MiA3Ni40OTM0QzkwLjczODIgNzcuMDQ1NyA5MC4yOTA0IDc3LjQ5MzQgODkuNzM4MSA3Ny40OTMzTDg5LjczOCA3OC40OTMzTDg5LjczNzkgNzkuNDkzM0M5MS4zOTQ3IDc5LjQ5MzUgOTIuNzM4IDc4LjE1MDUgOTIuNzM4MiA3Ni40OTM3TDkxLjczODIgNzYuNDkzNVpNODkuODI3NiA2Ni4wNzc5TDg5LjU4NzUgNjcuMDQ4N0M5MC4zMTI4IDY3LjIyOCA5MC43MzkzIDY3Ljc3NTQgOTAuNzM5MiA2OC4yNzYzTDkxLjczOTIgNjguMjc2NEw5Mi43MzkyIDY4LjI3NjZDOTIuNzM5NSA2Ni42MjExIDkxLjQzNTYgNjUuNDQ1NCA5MC4wNjc2IDY1LjEwNzFMODkuODI3NiA2Ni4wNzc5Wk0xLjAwNDY0IDM4LjMwODZMMi4wMDQ2NCAzOC4zMDg3QzIuMDA0NzEgMzcuNzU2NCAyLjQ1MjQ4IDM3LjMwODggMy4wMDQ3NiAzNy4zMDg4TDMuMDA0ODggMzYuMzA4OEwzLjAwNTAxIDM1LjMwODhDMS4zNDgxNSAzNS4zMDg2IDAuMDA0ODQwNzcgMzYuNjUxNiAwLjAwNDYzNzc2IDM4LjMwODVMMS4wMDQ2NCAzOC4zMDg2Wk04OS44Mjk3IDQ4LjA5MzNMOTAuMDY5NiA0OS4wNjQxQzkxLjQzNzYgNDguNzI2MSA5Mi43NDE4IDQ3LjU1MDggOTIuNzQyIDQ1Ljg5NTNMOTEuNzQyIDQ1Ljg5NTJMOTAuNzQyIDQ1Ljg5NTFDOTAuNzQxOSA0Ni4zOTYgOTAuMzE1MyA0Ni45NDMzIDg5LjU4OTkgNDcuMTIyNUw4OS44Mjk3IDQ4LjA5MzNaXCJcbiAgICAgIGZpbGw9XCIjQkRCREJEXCJcbiAgICAvPlxuICAgIDxwYXRoXG4gICAgICBkPVwiTTcxLjI5NDkgMzcuNTk1N0w3MS4yOTAxIDc3LjIxMzZcIlxuICAgICAgc3Ryb2tlPVwiI0JEQkRCRFwiXG4gICAgICBzdHJva2VXaWR0aD1cIjJcIlxuICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgIHN0cm9rZURhc2hhcnJheT1cIjIgNVwiXG4gICAgLz5cbiAgPC9zdmc+XG4pO1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXRzSWNvbjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVNlbGVjdG9yIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyBCb3gsIEJ1dHRvbiwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgVGlja2V0c0ljb24gZnJvbSBcIi4vVGlja2V0c0ljb25cIjtcbmltcG9ydCB7IFRBQlMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IE5vVGlja2V0c0ZvdW5kID0gKHsgcGFnZVZpZXcsIG9uQ2xpY2sgfSkgPT4ge1xuICBjb25zdCB7IHN1bW1pdCwgbG9hZGluZyB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSk7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICBjb25zdCBnZXRDb250ZW50ID0gKCkgPT4ge1xuICAgIGNvbnN0IG1haWx0b1RhZyA9IChcbiAgICAgIDxhIGhyZWY9e2BtYWlsdG86JHtzdW1taXQuc3VwcG9ydF9lbWFpbH1gfT5cbiAgICAgICAge3QoXCJnZW5lcmFsLmNvbnRhY3Rfc3VwcG9ydFwiKX1cbiAgICAgIDwvYT5cbiAgICApO1xuXG4gICAgc3dpdGNoIChwYWdlVmlldykge1xuICAgICAgY2FzZSBUQUJTLk9SREVSUzoge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHRpdGxlOiB0KFwibm9fcmVzdWx0cy5vcmRlcnMudGl0bGVcIiksXG4gICAgICAgICAgYm9keTogKFxuICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAge3QoXCJub19yZXN1bHRzLm9yZGVycy5ib2R5XCIpfSB7bWFpbHRvVGFnfS5cbiAgICAgICAgICAgIDwvPlxuICAgICAgICAgICksXG4gICAgICAgICAgYnV0dG9uTGFiZWw6IHQoXCJsYWJlbHMuYXNzaWduZWRfdG9fbWVcIilcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGNhc2UgVEFCUy5USUNLRVRTOiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdGl0bGU6IHQoXCJub19yZXN1bHRzLmFzc2lnbmVkLnRpdGxlXCIpLFxuICAgICAgICAgIGJvZHk6IChcbiAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgIHt0KFwibm9fcmVzdWx0cy5hc3NpZ25lZC5ib2R5XCIpfSB7bWFpbHRvVGFnfS5cbiAgICAgICAgICAgIDwvPlxuICAgICAgICAgICksXG4gICAgICAgICAgYnV0dG9uTGFiZWw6IHQoXCJvcmRlcnMudGl0bGVcIilcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0aXRsZTogdChcIm5vX3Jlc3VsdHMuZmlsdGVyLnRpdGxlXCIpLFxuICAgICAgICAgIGJvZHk6IHQoXCJub19yZXN1bHRzLmZpbHRlci5ib2R5XCIpLFxuICAgICAgICAgIGJ1dHRvbkxhYmVsOiB0KFwiZmlsdGVyLmNsZWFyX2ZpbHRlcnNcIilcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgY29uc3QgeyB0aXRsZSwgYm9keSwgYnV0dG9uTGFiZWwgfSA9IGdldENvbnRlbnQoKTtcblxuICBpZiAobG9hZGluZykgcmV0dXJuIG51bGw7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLndyYXBwZXJ9PlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5pY29uV3JhcHBlcn0+XG4gICAgICAgIDxUaWNrZXRzSWNvbiAvPlxuICAgICAgPC9Cb3g+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiaDZcIiBjbGFzc05hbWU9e3N0eWxlcy50aXRsZX0+XG4gICAgICAgIHt0aXRsZX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgIDxUeXBvZ3JhcGh5XG4gICAgICAgIHZhcmlhbnQ9XCJib2R5MVwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmJvZHl9XG4gICAgICAgIHN4PXt7IGNvbG9yOiBcInRleHQuc2Vjb25kYXJ5XCIgfX1cbiAgICAgID5cbiAgICAgICAge2JvZHl9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICA8QnV0dG9uXG4gICAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgICAgPlxuICAgICAgICB7YnV0dG9uTGFiZWx9XG4gICAgICA8L0J1dHRvbj5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE5vVGlja2V0c0ZvdW5kO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgR3JpZCwgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBEaXZpZGVyIGZyb20gXCJAbXVpL21hdGVyaWFsL0RpdmlkZXJcIjtcbmltcG9ydCB7IGNhbGN1bGF0ZU9yZGVyVG90YWxzLCBmb3JtYXRDdXJyZW5jeSB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBPcmRlclN1bW1hcnlUYWJsZSA9ICh7IG9yZGVyLCBzdW1taXQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IHtcbiAgICBkaXNjb3VudFRvdGFsLFxuICAgIHJlZnVuZFRvdGFsLFxuICAgIGFtb3VudFRvdGFsLFxuICAgIHN1YlRvdGFsLFxuICAgIHRpY2tldFN1bW1hcnksXG4gICAgdGF4ZXNTdW1tYXJ5XG4gIH0gPSBjYWxjdWxhdGVPcmRlclRvdGFscyh7IG9yZGVyLCBzdW1taXQgfSk7XG5cbiAgY29uc3QgaHVuZHJlZCA9IDEwMDtcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJTdW1tYXJ5VGFibGV9PlxuICAgICAge3RpY2tldFN1bW1hcnk/Lmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICA8PlxuICAgICAgICAgIHt0aWNrZXRTdW1tYXJ5Lm1hcCgodGlja2V0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0aWNrZXRUb3RhbCA9XG4gICAgICAgICAgICAgICh0aWNrZXQucXR5ICogKHRpY2tldC50aWNrZXRfdHlwZS5jb3N0ICogaHVuZHJlZCkpIC8gaHVuZHJlZDtcblxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgPEdyaWRcbiAgICAgICAgICAgICAgICBjb250YWluZXJcbiAgICAgICAgICAgICAgICBrZXk9e2B0aXhvcmRlcl8ke3RpY2tldC50aWNrZXRfdHlwZS5jcmVhdGVkfWB9XG4gICAgICAgICAgICAgICAgc3g9e3sgcGI6IDEgfX1cbiAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cIm9yZGVyLXN1bW1hcnktaXRlbWl6ZWRcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgeHt0aWNrZXQucXR5fSB7dGlja2V0LnRpY2tldF90eXBlLm5hbWV9XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICAgICAgICAgIHtmb3JtYXRDdXJyZW5jeSh0aWNrZXRUb3RhbCwgeyBjdXJyZW5jeTogb3JkZXIuY3VycmVuY3kgfSl9XG4gICAgICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pfVxuICAgICAgICA8Lz5cbiAgICAgICl9XG4gICAgICA8RGl2aWRlciAvPlxuICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHB0OiAxLCBwYjogMSB9fT5cbiAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnN1Yl90b3RhbFwiKX1cbiAgICAgICAgPC9HcmlkPlxuICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAge3N1YlRvdGFsfVxuICAgICAgICA8L0dyaWQ+XG4gICAgICA8L0dyaWQ+XG4gICAgICB7b3JkZXIudGF4ZXNfYW1vdW50ID4gMCAmJlxuICAgICAgICB0YXhlc1N1bW1hcnk/Lmxlbmd0aCA+IDAgJiZcbiAgICAgICAgdGF4ZXNTdW1tYXJ5Lm1hcCgodGF4KSA9PiAoXG4gICAgICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHBiOiAxIH19IGtleT17dGF4LmlkfT5cbiAgICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAgICB7dGF4Lm5hbWV9XG4gICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICAgIHt0YXguYW1vdW50fVxuICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgKSl9XG4gICAgICB7b3JkZXIuZGlzY291bnRfYW1vdW50ID4gMCAmJiAoXG4gICAgICAgIDxHcmlkIGNvbnRhaW5lciBzeD17eyBwYjogMSB9fT5cbiAgICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5kaXNjb3VudHNcIil9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICAgIC17ZGlzY291bnRUb3RhbH1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICB7cmVmdW5kVG90YWwgPiAwICYmIChcbiAgICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHBiOiAxIH19PlxuICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnJlZnVuZHNcIil9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICAgIHtyZWZ1bmRUb3RhbH1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICA8RGl2aWRlciAvPlxuICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHB0OiAxLCBwYjogMSB9fT5cbiAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnRvdGFsXCIpfVxuICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICB7YW1vdW50VG90YWx9XG4gICAgICAgIDwvR3JpZD5cbiAgICAgIDwvR3JpZD5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbk9yZGVyU3VtbWFyeVRhYmxlLnByb3BUeXBlcyA9IHtcbiAgb3JkZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgY3VycmVuY3k6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgZGlzY291bnRfYW1vdW50OiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIHRheGVzX2Ftb3VudDogUHJvcFR5cGVzLm51bWJlcixcbiAgICBzdGF0dXM6IFByb3BUeXBlcy5zdHJpbmdcbiAgfSksXG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdFxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJTdW1tYXJ5VGFibGU7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlTm93IH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgeyB0aWNrZXRzUmVmdW5kYWJsZSB9IGZyb20gXCIuLi8uLi91dGlscy90aWNrZXRVdGlsc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgdXNlU3VtbWl0RGV0YWlscyB9IGZyb20gXCIuLi8uLi91dGlscy9zdW1taXRVdGlsc1wiO1xuXG5jb25zdCBSZWZ1bmRFbWFpbFN1cHBvcnQgPSAoe1xuICBzdW1taXQsXG4gIHRpY2tldHMsXG4gIHN1Ym1pdFJlcXVlc3QsXG4gIG9uUmVmdW5kQ2xpY2ssXG4gIG9uUmVmdW5kRGV0YWlsQ2xpY2tcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCB7IGlzU3RhcnRlZCB9ID0gdXNlU3VtbWl0RGV0YWlscyh7IHN1bW1pdCB9KTtcbiAgY29uc3Qgbm93ID0gdXNlTm93KCk7XG4gIGNvbnN0IGlzSW5SZWZ1bmRhYmxlUGVyaW9kID1cbiAgICBzdW1taXQucmVnaXN0cmF0aW9uX2FsbG93ZWRfcmVmdW5kX3JlcXVlc3RfdGlsbF9kYXRlID4gbm93O1xuICBjb25zdCBhdExlYXN0T25lUmVmdW5kYWJsZVRpY2tldCA9IHRpY2tldHNSZWZ1bmRhYmxlKHRpY2tldHMpO1xuICBjb25zdCBpc1JlZnVuZGFibGUgPSAhIShcbiAgICBpc0luUmVmdW5kYWJsZVBlcmlvZCAmJlxuICAgICFpc1N0YXJ0ZWQgJiZcbiAgICBhdExlYXN0T25lUmVmdW5kYWJsZVRpY2tldFxuICApO1xuICBjb25zdCBoYXNSZWZ1bmRSZXF1ZXN0cyA9IHRpY2tldHM/LnNvbWUoKHQpID0+IHQucmVmdW5kX3JlcXVlc3RzLmxlbmd0aCA+IDApO1xuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7aXNSZWZ1bmRhYmxlICYmIChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQgcmVxdWVzdCBidXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLm9yZGVyU3VtbWFyeUJ1dHRvbn1cbiAgICAgICAgICAke3N1Ym1pdFJlcXVlc3QgPyBzdHlsZXMucmVmdW5kRGlzYWJsZWQgOiBcIlwifWB9XG4gICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgIG9uQ2xpY2s9e29uUmVmdW5kQ2xpY2t9XG4gICAgICAgICAgZGlzYWJsZWQ9e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkucmVxdWVzdF9yZWZ1bmRcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKX1cbiAgICAgIHtoYXNSZWZ1bmRSZXF1ZXN0cyAmJiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kIGRldGFpbHMgYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlCdXR0b259XG4gICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgIG9uQ2xpY2s9e29uUmVmdW5kRGV0YWlsQ2xpY2t9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkucmVmdW5kX2RldGFpbHNcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKX1cbiAgICAgIDxCdXR0b25cbiAgICAgICAgYXJpYS1sYWJlbD1cImVtYWlsIHN1cHBvcnQgYnV0dG9uXCJcbiAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyU3VtbWFyeUJ1dHRvbn1cbiAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgdGFyZ2V0PVwiX3RvcFwiXG4gICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgICBocmVmPXtgbWFpbHRvOiR7c3VtbWl0LnN1cHBvcnRfZW1haWx9YH1cbiAgICAgID5cbiAgICAgICAge3QoXCJvcmRlcl9pbmZvLmVtYWlsX3N1cHBvcnRcIil9XG4gICAgICA8L0J1dHRvbj5cbiAgICA8Lz5cbiAgKTtcbn07XG5cblJlZnVuZEVtYWlsU3VwcG9ydC5wcm9wVHlwZXMgPSB7XG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgdGlja2V0czogUHJvcFR5cGVzLmFycmF5T2YoT2JqZWN0KSxcbiAgb25SZWZ1bmRDbGljazogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uUmVmdW5kRGV0YWlsQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuICBzdWJtaXRSZXF1ZXN0OiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVmdW5kRW1haWxTdXBwb3J0O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgR3JpZCwgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCBPcmRlclN1bW1hcnlUYWJsZSBmcm9tIFwiLi9PcmRlclN1bW1hcnlUYWJsZVwiO1xuaW1wb3J0IFJlZnVuZEVtYWlsU3VwcG9ydCBmcm9tIFwiLi9SZWZ1bmRFbWFpbFN1cHBvcnRcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgT3JkZXJTdW1tYXJ5ID0gKHtcbiAgb3JkZXIsXG4gIHN1bW1pdCxcbiAgb25SZWZ1bmRDbGljayxcbiAgc3VibWl0UmVxdWVzdCxcbiAgb25SZWZ1bmREZXRhaWxDbGlja1xufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxCb3hcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJTdW1tYXJ5V3JhcHBlcn1cbiAgICAgICAgc3g9e3sgcHQ6IDQsIHB4OiA0IH19XG4gICAgICAgIGRhdGEtdGVzdGlkPVwib3JkZXItc3VtbWFyeS1jb250YWluZXJcIlxuICAgICAgPlxuICAgICAgICA8aDM+e3QoXCJvcmRlcl9zdW1tYXJ5Lm9yZGVyX3N1bW1hcnlcIil9PC9oMz5cbiAgICAgICAgPEdyaWQgY29udGFpbmVyPlxuICAgICAgICAgIDxHcmlkXG4gICAgICAgICAgICB4cz17MTJ9XG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlQdXJjaGFzZWRJbmZvfVxuICAgICAgICAgICAgc3g9e3sgcGI6IDMgfX1cbiAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8T3JkZXJTdW1tYXJ5VGFibGUgb3JkZXI9e29yZGVyfSBzdW1taXQ9e3N1bW1pdH0gLz5cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgIDwvQm94PlxuICAgICAgPEJveCB4cz17MTJ9IHN4PXt7IHBiOiAzIH19PlxuICAgICAgICA8UmVmdW5kRW1haWxTdXBwb3J0XG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgdGlja2V0cz17b3JkZXI/Lm1lbWJlclRpY2tldHN9XG4gICAgICAgICAgc3VibWl0UmVxdWVzdD17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgICBvblJlZnVuZENsaWNrPXtvblJlZnVuZENsaWNrfVxuICAgICAgICAgIG9uUmVmdW5kRGV0YWlsQ2xpY2s9e29uUmVmdW5kRGV0YWlsQ2xpY2t9XG4gICAgICAgIC8+XG4gICAgICA8L0JveD5cbiAgICA8Lz5cbiAgKTtcbn07XG5PcmRlclN1bW1hcnkucHJvcFR5cGVzID0ge1xuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIG9yZGVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIG1lbWJlclRpY2tldHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdClcbiAgfSksXG4gIG9uUmVmdW5kQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuICBzdWJtaXRSZXF1ZXN0OiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJTdW1tYXJ5O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IEluZmluaXRlU2Nyb2xsIGZyb20gXCJyZWFjdC1pbmZpbml0ZS1zY3JvbGwtY29tcG9uZW50XCI7XG5pbXBvcnQgT3JkZXJMaXN0VGlja2V0cyBmcm9tIFwiLi9PcmRlckxpc3RUaWNrZXRzXCI7XG5pbXBvcnQgeyBPTkVfUEFHRV9ORVhUIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBBc3NpZ25Ub01lID0gKHsgZmV0Y2hEYXRhIH0pID0+IHtcbiAgY29uc3Qge1xuICAgIHN1bW1pdCxcbiAgICB1c2VyVGlja2V0cyxcbiAgICB1c2VyX3RpY2tldHNfY3VycmVudF9wYWdlLFxuICAgIHVzZXJfdGlja2V0c19sYXN0X3BhZ2VcbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyVGlja2V0Q29udGFpbmVyfT5cbiAgICAgIDxkaXYgaWQ9XCJhc3NpZ25lZFRvTWVXcmFwcGVyXCIgY2xhc3NOYW1lPXtzdHlsZXMuYXNzaWduZWRUb01lV3JhcHBlcn0+XG4gICAgICAgIDxJbmZpbml0ZVNjcm9sbFxuICAgICAgICAgIGRhdGFMZW5ndGg9e3VzZXJUaWNrZXRzPy5sZW5ndGh9XG4gICAgICAgICAgbmV4dD17KCkgPT4gZmV0Y2hEYXRhKHVzZXJfdGlja2V0c19jdXJyZW50X3BhZ2UgKyBPTkVfUEFHRV9ORVhUKX1cbiAgICAgICAgICBoYXNNb3JlPXt1c2VyX3RpY2tldHNfY3VycmVudF9wYWdlIDwgdXNlcl90aWNrZXRzX2xhc3RfcGFnZX1cbiAgICAgICAgICBzY3JvbGxUaHJlc2hvbGQ9ezF9XG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldExpc3RDb250YWluZXJ9PlxuICAgICAgICAgICAge3VzZXJUaWNrZXRzLm1hcCgodGlja2V0KSA9PiAoXG4gICAgICAgICAgICAgIDxPcmRlckxpc3RUaWNrZXRzXG4gICAgICAgICAgICAgICAga2V5PXt0aWNrZXQuaWR9XG4gICAgICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICAgICAgaXNSZWZ1bmRNb2RhbD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgaXNTZWxlY3RlZFRvUmVmdW5kPXtbXX1cbiAgICAgICAgICAgICAgICBzZWxlY3RUb1JlZnVuZD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9JbmZpbml0ZVNjcm9sbD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQXNzaWduVG9NZTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCwgR3JpZCwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IEFzc2lnbmVkVG8gPSAoeyBlbWFpbCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmxhYmVsfT57dChcInRpY2tldF9zdGF0dXMuYXNzaWduZWRfdG9cIil9OjwvQm94PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkxXCIgZGF0YS10ZXN0aWQ9XCJhdHRlbmRlZS1zdGF0dXMtYXNzaWduZWRcIj5cbiAgICAgICAge2VtYWlsfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgIDwvQm94PlxuICApO1xufTtcblxuY29uc3QgRXh0ZXJuYWxBc3NpZ25lZFRvID0gKHsgZmlyc3ROYW1lLCBsYXN0TmFtZSB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmxhYmVsfT57dChcInRpY2tldF9zdGF0dXMuYXNzaWduZWRfYnlcIil9OjwvQm94PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkxXCI+XG4gICAgICAgIHtmaXJzdE5hbWV9IHtsYXN0TmFtZX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbmNvbnN0IE1hbmFnZUZvciA9ICh7IGZpcnN0TmFtZSwgbGFzdE5hbWUgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5sYWJlbH0+e3QoXCJ0aWNrZXRfc3RhdHVzLm1hbmFnZV9mb3JcIil9OjwvQm94PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkxXCI+XG4gICAgICAgIHtmaXJzdE5hbWV9IHtsYXN0TmFtZX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbmNvbnN0IEF0dGVuZGVlU3RhdHVzID0gKHsgdGlja2V0LCBpc0V4dGVybmFsQXNzaWduZWRUaWNrZXQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGlzVW5hc3NpZ25lZCA9ICF0aWNrZXQub3duZXI/LmVtYWlsICYmIHRpY2tldC5pc19hY3RpdmU7XG4gIGNvbnN0IGlzRGVsZWdhdGVkID0gISF0aWNrZXQub3duZXI/Lm1hbmFnZXJfaWQ7XG5cbiAgaWYgKGlzVW5hc3NpZ25lZCkge1xuICAgIHJldHVybiAoXG4gICAgICA8c3BhblxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRPd25lckVtYWlsfVxuICAgICAgICBkYXRhLXRlc3RpZD1cImF0dGVuZGVlLXN0YXR1cy11bmFzc2lnbmVkXCJcbiAgICAgID5cbiAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLmF0dGVuZGVlX3N0YXR1c191bmFzc2lnbmVkXCIpfVxuICAgICAgPC9zcGFuPlxuICAgICk7XG4gIH1cblxuICBpZiAodGlja2V0Lm93bmVyPy5lbWFpbCkge1xuICAgIHJldHVybiAoXG4gICAgICA8R3JpZCBjb250YWluZXI+XG4gICAgICAgIDxHcmlkIGl0ZW0+XG4gICAgICAgICAgPEFzc2lnbmVkVG8gZW1haWw9e3RpY2tldC5vd25lci5lbWFpbH0gLz5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgICB7aXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0ICYmIChcbiAgICAgICAgICA8R3JpZCBpdGVtIGNsYXNzTmFtZT17c3R5bGVzLmFzc2lnbmVkQnlUZXh0fT5cbiAgICAgICAgICAgIDxFeHRlcm5hbEFzc2lnbmVkVG9cbiAgICAgICAgICAgICAgZmlyc3ROYW1lPXt0aWNrZXQub3JkZXI/Lm93bmVyX2ZpcnN0X25hbWV9XG4gICAgICAgICAgICAgIGxhc3ROYW1lPXt0aWNrZXQub3JkZXI/Lm93bmVyX2xhc3RfbmFtZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICApfVxuICAgICAgICB7aXNEZWxlZ2F0ZWQgJiYgKFxuICAgICAgICAgIDxHcmlkIGl0ZW0gY2xhc3NOYW1lPXtzdHlsZXMuYXNzaWduZWRCeVRleHR9PlxuICAgICAgICAgICAgPE1hbmFnZUZvclxuICAgICAgICAgICAgICBmaXJzdE5hbWU9e3RpY2tldC5vd25lcj8uZmlyc3RfbmFtZX1cbiAgICAgICAgICAgICAgbGFzdE5hbWU9e3RpY2tldC5vd25lcj8ubGFzdF9uYW1lfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICl9XG4gICAgICA8L0dyaWQ+XG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufTtcblxuQXR0ZW5kZWVTdGF0dXMucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgb3duZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBlbWFpbDogUHJvcFR5cGVzLnN0cmluZ1xuICAgIH0pLFxuICAgIGlzX2FjdGl2ZTogUHJvcFR5cGVzLmJvb2xcbiAgfSksXG4gIGlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldDogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEF0dGVuZGVlU3RhdHVzO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgT3JkZXJMaXN0VGlja2V0cyBmcm9tIFwiLi9PcmRlckxpc3RUaWNrZXRzXCI7XG5pbXBvcnQgeyBQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IE9yZGVyTGlzdEl0ZW0gPSAoe1xuICBzdW1taXQsXG4gIG9yZGVyLFxuICBvblBhZ2luYXRlQ2xpY2ssXG4gIHRpY2tldHNUb1JlZnVuZCxcbiAgc2VsZWN0VG9SZWZ1bmRcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbaXRlbXNUb0Rpc3BsYXksIHNldEl0ZW1zVG9EaXNwbGF5XSA9IHVzZVN0YXRlKFxuICAgIFBBR0lOQVRJT05fRElTUExBWV9DT1VOVFxuICApO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0SXRlbXNUb0Rpc3BsYXkoUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UKTtcbiAgfSwgW29yZGVyPy50aWNrZXRzX3RvdGFsXSk7XG5cbiAgaWYgKCFvcmRlcj8ubWVtYmVyVGlja2V0cz8ubGVuZ3RoKSByZXR1cm4gbnVsbDtcbiAgY29uc3Qgc2xpY2VkVGlja2V0cyA9IG9yZGVyPy5tZW1iZXJUaWNrZXRzPy5zbGljZSgwLCBpdGVtc1RvRGlzcGxheSk7XG5cbiAgY29uc3Qgb25WaWV3TW9yZSA9ICgpID0+IHtcbiAgICBpZiAob3JkZXI/LnRpY2tldHNfdG90YWwgPiBvcmRlcj8ubWVtYmVyVGlja2V0cy5sZW5ndGgpIHtcbiAgICAgIG9uUGFnaW5hdGVDbGljaygpO1xuICAgIH1cbiAgICBzZXRJdGVtc1RvRGlzcGxheShpdGVtc1RvRGlzcGxheSArIFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCk7XG4gIH07XG5cbiAgY29uc3Qgb25WaWV3TGVzcyA9ICgpID0+IHNldEl0ZW1zVG9EaXNwbGF5KFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAge3NsaWNlZFRpY2tldHM/Lm1hcCgodGlja2V0KSA9PiAoXG4gICAgICAgIDxPcmRlckxpc3RUaWNrZXRzXG4gICAgICAgICAga2V5PXt0aWNrZXQuaWR9XG4gICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgaXNSZWZ1bmRNb2RhbD17ZmFsc2V9XG4gICAgICAgICAgaXNTZWxlY3RlZFRvUmVmdW5kPXshIXRpY2tldHNUb1JlZnVuZC5maW5kKCh0KSA9PiB0LmlkID09PSB0aWNrZXQuaWQpfVxuICAgICAgICAgIHNlbGVjdFRvUmVmdW5kPXtzZWxlY3RUb1JlZnVuZH1cbiAgICAgICAgLz5cbiAgICAgICkpfVxuICAgICAge29yZGVyPy50aWNrZXRzX3RvdGFsID4gaXRlbXNUb0Rpc3BsYXkgPyAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwidmlldyBtb3JlIGJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudmlld01vcmVCdXR0b259XG4gICAgICAgICAgb25DbGljaz17b25WaWV3TW9yZX1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwiZ2VuZXJhbC52aWV3X21vcmVcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKSA6IChcbiAgICAgICAgXCJcIlxuICAgICAgKX1cbiAgICAgIHtzbGljZWRUaWNrZXRzPy5sZW5ndGggPiBQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQgJiZcbiAgICAgIHNsaWNlZFRpY2tldHM/Lmxlbmd0aCA9PT0gb3JkZXI/LnRpY2tldHNfdG90YWwgPyAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwidmlldyBsZXNzIGJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudmlld01vcmVCdXR0b259XG4gICAgICAgICAgb25DbGljaz17b25WaWV3TGVzc31cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwiZ2VuZXJhbC52aWV3X2xlc3NcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKSA6IChcbiAgICAgICAgXCJcIlxuICAgICAgKX1cbiAgICA8Lz5cbiAgKTtcbn07XG5cbk9yZGVyTGlzdEl0ZW0ucHJvcFR5cGVzID0ge1xuICBvcmRlcjogUHJvcFR5cGVzLm9iamVjdCxcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0XG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlckxpc3RJdGVtO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkLCBCdXR0b24sIEJveCwgVG9vbHRpcCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgU3RhY2sgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIjtcbmltcG9ydCBDaGVja2JveCBmcm9tIFwiQG11aS9tYXRlcmlhbC9DaGVja2JveFwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2ggfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBUaWNrZXRTdGF0dXMgZnJvbSBcIi4uL1RpY2tldFN0YXR1c1wiO1xuaW1wb3J0IHsgZ2V0U3VtbWl0UmVhc3NpZ25EYXRlIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3N1bW1pdFV0aWxzXCI7XG5pbXBvcnQgeyB1c2VOb3cgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbmltcG9ydCBBdHRlbmRlZVN0YXR1cyBmcm9tIFwiLi9BdHRlbmRlZVN0YXR1c1wiO1xuaW1wb3J0IFRpY2tldERldGFpbCBmcm9tIFwiLi4vVGlja2V0RGV0YWlsXCI7XG5pbXBvcnQgeyB1c2VUaWNrZXREZXRhaWxzIH0gZnJvbSBcIi4uLy4uL2hvb2tzL3VzZVRpY2tldERldGFpbHNcIjtcbmltcG9ydCBDb3B5VGV4dCBmcm9tIFwiLi4vQ29weVRleHRcIjtcbmltcG9ydCBUaWNrZXRBc3NpZ24gZnJvbSBcIi4uL1RpY2tldEFzc2lnblwiO1xuaW1wb3J0IEJhZGdlRmVhdHVyZUljb24gZnJvbSBcIi4uL0JhZGdlRmVhdHVyZUljb25cIjtcbmltcG9ydCB7IHJlc2V0VGlja2V0IH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgbW9kYWxWaWV3cyA9IHtcbiAgZGV0YWlsOiBcIkRFVEFJTFwiLFxuICByZWFzc2lnbjogXCJSRUFTU0lHTlwiLFxuICBhc3NpZ246IFwiQVNTSUdOXCJcbn07XG5cbmNvbnN0IFRpY2tldENUQXMgPSAoe1xuICBpc0luY29tcGxldGUsXG4gIGlzVW5hc3NpZ25lZCxcbiAgaXNSZWFzc2lnbmFibGUsXG4gIG9uT3BlbkNsaWNrXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICBpZiAoaXNVbmFzc2lnbmVkKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxCdXR0b25cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYXNzaWduVGlja2V0QnV0dG9ufVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBvbk9wZW5DbGljayhtb2RhbFZpZXdzLmFzc2lnbil9XG4gICAgICA+XG4gICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5hc3NpZ25fdGlja2V0XCIpfVxuICAgICAgPC9CdXR0b24+XG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFN0YWNrIGFsaWduSXRlbXM9XCJjZW50ZXJcIiBkaXJlY3Rpb249XCJyb3dcIj5cbiAgICAgIDxCdXR0b25cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudmlld0ZpbmlzaFRpY2tldEJ1dHRvbn1cbiAgICAgICAgb25DbGljaz17KCkgPT4gb25PcGVuQ2xpY2sobW9kYWxWaWV3cy5kZXRhaWwpfVxuICAgICAgPlxuICAgICAgICB7aXNJbmNvbXBsZXRlXG4gICAgICAgICAgPyB0KFwidGlja2V0X3N0YXR1cy5maW5pc2hfdGlja2V0XCIpXG4gICAgICAgICAgOiB0KFwidGlja2V0X3N0YXR1cy52aWV3X3RpY2tldFwiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgICAge2lzUmVhc3NpZ25hYmxlICYmIChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWFzc2lnbiB0aWNrZXQgYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5yZWFzc2lnbkJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvbk9wZW5DbGljayhtb2RhbFZpZXdzLnJlYXNzaWduKX1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5yZWFzc2lnbl90aWNrZXRcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKX1cbiAgICA8L1N0YWNrPlxuICApO1xufTtcblxuVGlja2V0Q1RBcy5wcm9wVHlwZXMgPSB7XG4gIGlzSW5jb21wbGV0ZTogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgaXNVbmFzc2lnbmVkOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICBpc1JlYXNzaWduYWJsZTogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgb25PcGVuQ2xpY2s6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWRcbn07XG5cbmNvbnN0IE9yZGVyTGlzdFRpY2tldHMgPSAoe1xuICB0aWNrZXQsXG4gIHN1bW1pdCxcbiAgaXNSZWZ1bmRNb2RhbCxcbiAgaXNTZWxlY3RlZFRvUmVmdW5kLFxuICBzZWxlY3RUb1JlZnVuZCxcbiAgaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0XG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCBub3cgPSB1c2VOb3coKTtcbiAgY29uc3QgeyBpc1JlZnVuZGFibGUsIGlzVW5hc3NpZ25lZCwgaXNJbmNvbXBsZXRlLCBjYW5SZWFzc2lnbiB9ID1cbiAgICB1c2VUaWNrZXREZXRhaWxzKHRpY2tldCk7XG4gIGNvbnN0IFttb2RhbE9wZW4sIHNldE1vZGFsT3Blbl0gPSB1c2VTdGF0ZShudWxsKTtcbiAgY29uc3QgcmVhc3NpZ25EYXRlID0gZ2V0U3VtbWl0UmVhc3NpZ25EYXRlKHN1bW1pdCk7XG4gIGNvbnN0IG9uUmVhc3NpZ25hYmxlUGVyaW9kID0gcmVhc3NpZ25EYXRlID4gbm93O1xuICBjb25zdCBpc1JlYXNzaWduYWJsZSA9XG4gICAgb25SZWFzc2lnbmFibGVQZXJpb2QgJiYgY2FuUmVhc3NpZ24gJiYgIWlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldDtcblxuICBjb25zdCBoYW5kbGVDbG9zZU1vZGFsID0gKCkgPT4ge1xuICAgIGRpc3BhdGNoKHJlc2V0VGlja2V0KCkpO1xuICAgIHNldE1vZGFsT3BlbihudWxsKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVPcGVuTW9kYWwgPSAodmlldykgPT4ge1xuICAgIGRpc3BhdGNoKHJlc2V0VGlja2V0KCkpO1xuICAgIHNldE1vZGFsT3Blbih2aWV3KTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxHcmlkXG4gICAgICBjb250YWluZXJcbiAgICAgIGtleT17dGlja2V0LmlkfVxuICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMub3JkZXJXcmFwcGVyfSAke1xuICAgICAgICBpc1JlZnVuZE1vZGFsID8gc3R5bGVzLnJlZnVuZE1vZGFsIDogXCJcIlxuICAgICAgfSAke2lzUmVmdW5kTW9kYWwgJiYgIWlzUmVmdW5kYWJsZSA/IHN0eWxlcy5kaXNhYmxlZFJlZnVuZCA6IFwiXCJ9ICR7XG4gICAgICAgIGlzU2VsZWN0ZWRUb1JlZnVuZCA/IHN0eWxlcy5zZWxlY3RlZCA6IFwiXCJcbiAgICAgIH1gfVxuICAgID5cbiAgICAgIHtpc1JlZnVuZE1vZGFsICYmIChcbiAgICAgICAgPEdyaWQgaXRlbSB4cz17MX0gcGFkZGluZz17Mn0gY2xhc3NOYW1lPXtzdHlsZXMuY2hlY2tib3h9PlxuICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZCB0aWNrZXQgY2hlY2tib3hcIlxuICAgICAgICAgICAgcm9sZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgIGNoZWNrZWQ9e2lzU2VsZWN0ZWRUb1JlZnVuZH1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2VsZWN0VG9SZWZ1bmQoZSwgdGlja2V0KX1cbiAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgIFwiJiAuTXVpU3ZnSWNvbi1yb290XCI6IHtcbiAgICAgICAgICAgICAgICBmb250U2l6ZTogMThcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIGRpc2FibGVkPXshaXNSZWZ1bmRhYmxlfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICA8R3JpZFxuICAgICAgICBpdGVtXG4gICAgICAgIGNvbnRhaW5lclxuICAgICAgICBkYXRhLXRlc3RpZD1cIm9yZGVyLWxpc3QtdGlja2V0XCJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgICAgIHhzPXtpc1JlZnVuZE1vZGFsID8gMTEgOiAxMn1cbiAgICAgID5cbiAgICAgICAgPEdyaWRcbiAgICAgICAgICB4cz17OH1cbiAgICAgICAgICBweT17Mn1cbiAgICAgICAgICBwbD17NH1cbiAgICAgICAgICBpdGVtXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0VGlja2V0VHlwZX1cbiAgICAgICAgICBqdXN0aWZ5PVwic3BhY2UtYmV0d2VlblwiXG4gICAgICAgID5cbiAgICAgICAgICA8U3RhY2tcbiAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiBcImZsZXgtc3RhcnRcIlxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGg0Pnt0aWNrZXQudGlja2V0X3R5cGU/Lm5hbWV9PC9oND5cbiAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDxHcmlkIGNsYXNzTmFtZT17c3R5bGVzLmJhZGdlRmVhdHVyZVdyYXBwZXJ9IHhzPXs0fSBweT17Mn0gcHI9ezR9IGl0ZW0+XG4gICAgICAgICAge3RpY2tldC5iYWRnZT8uZmVhdHVyZXM/Lm1hcCgoYmYpID0+IChcbiAgICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXtiZi5uYW1lfSBrZXk9e2JmLm5hbWV9PlxuICAgICAgICAgICAgICA8QmFkZ2VGZWF0dXJlSWNvbiBuYW1lPXtiZi5uYW1lfSBpbWFnZT17YmYuaW1hZ2V9IC8+XG4gICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAgPEdyaWQgeHM9ezEyfSBzeD17eyBweDogNCwgcGI6IDIgfX0gaXRlbT5cbiAgICAgICAgICA8QXR0ZW5kZWVTdGF0dXNcbiAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0PXshIWlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldH1cbiAgICAgICAgICAvPlxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldE5vfT5cbiAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy50aWNrZXRfbm9cIil9OntcIiBcIn1cbiAgICAgICAgICAgIDxDb3B5VGV4dFxuICAgICAgICAgICAgICB0ZXh0PXt0aWNrZXQubnVtYmVyfVxuICAgICAgICAgICAgICB0b29sdGlwVGV4dD17dChcInRpY2tldF9zdGF0dXMuY29weV90aWNrZXRfbnVtYmVyXCIpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRGb290ZXJ9IHB4PXt7IHhzOiAxIH19IHBiPXt7IHhzOiAyIH19PlxuICAgICAgICAgIDxCb3g+XG4gICAgICAgICAgICA8VGlja2V0U3RhdHVzIHRpY2tldD17dGlja2V0fSAvPlxuICAgICAgICAgIDwvQm94PlxuICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0QWN0aW9uQnV0dG9uc30+XG4gICAgICAgICAgICB7dGlja2V0LmlzX2FjdGl2ZSAmJiAhaXNSZWZ1bmRNb2RhbCAmJiAoXG4gICAgICAgICAgICAgIDxUaWNrZXRDVEFzXG4gICAgICAgICAgICAgICAgaXNVbmFzc2lnbmVkPXtpc1VuYXNzaWduZWR9XG4gICAgICAgICAgICAgICAgaXNJbmNvbXBsZXRlPXtpc0luY29tcGxldGV9XG4gICAgICAgICAgICAgICAgaXNSZWFzc2lnbmFibGU9e2lzUmVhc3NpZ25hYmxlICYmICFpc0V4dGVybmFsQXNzaWduZWRUaWNrZXR9XG4gICAgICAgICAgICAgICAgb25PcGVuQ2xpY2s9e2hhbmRsZU9wZW5Nb2RhbH1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgIDwvQm94PlxuICAgICAgICA8VGlja2V0RGV0YWlsXG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgdGlja2V0SWQ9e3RpY2tldD8uaWR9XG4gICAgICAgICAgb3JkZXJJZD17dGlja2V0Py5vcmRlcl9pZCB8fCB0aWNrZXQ/Lm9yZGVyPy5pZH1cbiAgICAgICAgICBvd25lcklkPXt0aWNrZXQ/Lm93bmVyPy5pZH1cbiAgICAgICAgICBvcGVuPXttb2RhbE9wZW4gPT09IG1vZGFsVmlld3MuZGV0YWlsfVxuICAgICAgICAgIG9uQ2xvc2U9e2hhbmRsZUNsb3NlTW9kYWx9XG4gICAgICAgIC8+XG4gICAgICAgIDxUaWNrZXRBc3NpZ25cbiAgICAgICAgICB0aWNrZXRJZD17dGlja2V0Py5pZH1cbiAgICAgICAgICBvcmRlcklkPXt0aWNrZXQ/Lm9yZGVyX2lkIHx8IHRpY2tldD8ub3JkZXI/LmlkfVxuICAgICAgICAgIG93bmVySWQ9e3RpY2tldD8ub3duZXI/LmlkfVxuICAgICAgICAgIG9wZW49e1ttb2RhbFZpZXdzLnJlYXNzaWduLCBtb2RhbFZpZXdzLmFzc2lnbl0uaW5jbHVkZXMobW9kYWxPcGVuKX1cbiAgICAgICAgICBvbkNsb3NlPXtoYW5kbGVDbG9zZU1vZGFsfVxuICAgICAgICAvPlxuICAgICAgPC9HcmlkPlxuICAgIDwvR3JpZD5cbiAgKTtcbn07XG5cbk9yZGVyTGlzdFRpY2tldHMucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgaWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgb3JkZXJfaWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgb3duZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBpZDogUHJvcFR5cGVzLm51bWJlcixcbiAgICAgIGVtYWlsOiBQcm9wVHlwZXMuc3RyaW5nXG4gICAgfSksXG4gICAgbnVtYmVyOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIHRvdGFsX3JlZnVuZGVkX2Ftb3VudDogUHJvcFR5cGVzLm51bWJlcixcbiAgICB0aWNrZXRfdHlwZTogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIG5hbWU6IFByb3BUeXBlcy5zdHJpbmdcbiAgICB9KSxcbiAgICBpc19hY3RpdmU6IFByb3BUeXBlcy5ib29sXG4gIH0pLFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIGlzUmVmdW5kTW9kYWw6IFByb3BUeXBlcy5ib29sLFxuICBpc1NlbGVjdGVkVG9SZWZ1bmQ6IFByb3BUeXBlcy5ib29sLFxuICBzZWxlY3RUb1JlZnVuZDogUHJvcFR5cGVzLmZ1bmMsXG4gIGlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldDogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyTGlzdFRpY2tldHM7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEdyaWQsIEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgVGFicyBmcm9tIFwiQG11aS9tYXRlcmlhbC9UYWJzXCI7XG5pbXBvcnQgVGFiIGZyb20gXCJAbXVpL21hdGVyaWFsL1RhYlwiO1xuaW1wb3J0IE9yZGVyTGlzdEl0ZW0gZnJvbSBcIi4vT3JkZXJMaXN0SXRlbVwiO1xuaW1wb3J0IE9yZGVyU3VtbWFyeSBmcm9tIFwiLi4vT3JkZXJTdW1tYXJ5XCI7XG5pbXBvcnQgUmVmdW5kUmVxdWVzdHNNb2RhbCBmcm9tIFwiLi4vUmVmdW5kUmVxdWVzdHNcIjtcbmltcG9ydCBFcnJvckxhYmVsIGZyb20gXCIuLi9MYWJlbHMvRXJyb3JMYWJlbFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IFJlZnVuZERldGFpbHMgZnJvbSBcIi4uL1JlZnVuZFJlcXVlc3RzL1JlZnVuZERldGFpbHNcIjtcblxuY29uc3QgVGFiUGFuZWwgPSAocHJvcHMpID0+IHtcbiAgY29uc3QgeyBjaGlsZHJlbiwgdmFsdWUsIGluZGV4IH0gPSBwcm9wcztcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICByb2xlPVwidGFicGFuZWxcIlxuICAgICAgaGlkZGVuPXt2YWx1ZSAhPT0gaW5kZXh9XG4gICAgICBpZD17YHRhYnBhbmVsLSR7aW5kZXh9YH1cbiAgICAgIGFyaWEtbGFiZWxsZWRieT17YHRhYi0ke2luZGV4fWB9XG4gICAgPlxuICAgICAge3ZhbHVlID09PSBpbmRleCAmJiBjaGlsZHJlbn1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmNvbnN0IE9yZGVyc0xpc3REZXNrdG9wTW9iaWxlID0gKHtcbiAgaXNNb2JpbGUsXG4gIHN1bW1pdCxcbiAgb3JkZXIsXG4gIGRldGFpbHNSZXF1aXJlZCxcbiAgb25QYWdpbmF0ZUNsaWNrXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW3ZhbHVlLCBzZXRWYWx1ZV0gPSB1c2VTdGF0ZSgwKTtcbiAgY29uc3QgaGFuZGxlQ2hhbmdlID0gKF8sIG5ld1ZhbHVlKSA9PiB7XG4gICAgc2V0VmFsdWUobmV3VmFsdWUpO1xuICB9O1xuICBjb25zdCBbdGlja2V0c1RvUmVmdW5kLCBzZXRUaWNrZXRzVG9SZWZ1bmRdID0gdXNlU3RhdGUoW10pO1xuICBjb25zdCBbc3VibWl0UmVxdWVzdCwgc2V0U3VibWl0UmVxdWVzdF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtyZWZ1bmREZXRhaWxzT3Blbiwgc2V0UmVmdW5kRGV0YWlsc09wZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gIGNvbnN0IG9uUmVmdW5kQ2xpY2sgPSAoKSA9PiB7XG4gICAgc2V0U3VibWl0UmVxdWVzdCh0cnVlKTtcbiAgfTtcbiAgY29uc3QgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzID0gKHRpY2tldCkgPT4ge1xuICAgIGNvbnN0IGZpbHRlclNlbGVjdGVkID0gdGlja2V0c1RvUmVmdW5kLmZpbHRlcigodCkgPT4gdC5pZCAhPT0gdGlja2V0LmlkKTtcbiAgICBzZXRUaWNrZXRzVG9SZWZ1bmQoZmlsdGVyU2VsZWN0ZWQpO1xuICB9O1xuICBjb25zdCBzZWxlY3RUb1JlZnVuZCA9IChlLCB0aWNrZXQpID0+IHtcbiAgICBjb25zdCB7IGNoZWNrZWQgfSA9IGUudGFyZ2V0O1xuICAgIGlmIChjaGVja2VkKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZFRpY2tldCA9IG9yZGVyPy5tZW1iZXJUaWNrZXRzPy5maW5kKFxuICAgICAgICAodCkgPT4gdC5pZCA9PT0gdGlja2V0LmlkXG4gICAgICApO1xuICAgICAgc2V0VGlja2V0c1RvUmVmdW5kKFsuLi50aWNrZXRzVG9SZWZ1bmQsIHNlbGVjdGVkVGlja2V0XSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHVuc2VsZWN0UmVmdW5kVGlja2V0cyh0aWNrZXQpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBjbG9zZVN1Ym1pdFJlcXVlc3QgPSAoKSA9PiB7XG4gICAgc2V0U3VibWl0UmVxdWVzdChmYWxzZSk7XG4gICAgc2V0VGlja2V0c1RvUmVmdW5kKFtdKTtcbiAgfTtcblxuICBjb25zdCByZXNldEFsbFJlZnVuZFN0YXR1c2VzID0gKCkgPT4ge1xuICAgIHNldFN1Ym1pdFJlcXVlc3QoZmFsc2UpO1xuICAgIHNldFRpY2tldHNUb1JlZnVuZChbXSk7XG4gIH07XG5cbiAgY29uc3QgbW9yZURldGFpbHMgPSAoKSA9PlxuICAgIGRldGFpbHNSZXF1aXJlZCAmJiAoXG4gICAgICA8RXJyb3JMYWJlbFxuICAgICAgICBtZXNzYWdlPXt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfZGV0YWlsc19yZXF1aXJlZFwiKX1cbiAgICAgICAgY29sb3I9XCIjZmY5ODAwXCJcbiAgICAgICAgZGF0YVRlc3RJZD1cIm1vcmUtZGV0YWlscy1sYWJlbFwiXG4gICAgICAvPlxuICAgICk7XG5cbiAgcmV0dXJuIGlzTW9iaWxlID8gKFxuICAgIDxCb3hcbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldExpc3RDb250YWluZXJ9XG4gICAgICBkYXRhLXRlc3RpZD1cIm1vYmlsZS1vcmRlcnMtbGlzdC1jb250YWluZXJcIlxuICAgID5cbiAgICAgIDxCb3ggc3g9e3sgYm9yZGVyQ29sb3I6IFwiZGl2aWRlclwiLCBwYjogMiB9fT5cbiAgICAgICAgPFRhYnNcbiAgICAgICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICBhcmlhLWxhYmVsPVwiVGlja2V0cyAmIFN1bW1hcnlcIlxuICAgICAgICA+XG4gICAgICAgICAgPFRhYiBsYWJlbD17dChcImxhYmVscy50aWNrZXRzXCIpfSBjbGFzc05hbWU9e3N0eWxlcy50YWJCdXR0b25zfSAvPlxuICAgICAgICAgIDxUYWIgbGFiZWw9e3QoXCJsYWJlbHMuc3VtbWFyeVwiKX0gY2xhc3NOYW1lPXtzdHlsZXMudGFiQnV0dG9uc30gLz5cbiAgICAgICAgPC9UYWJzPlxuICAgICAgPC9Cb3g+XG4gICAgICB7bW9yZURldGFpbHMoKX1cbiAgICAgIDxUYWJQYW5lbCB2YWx1ZT17dmFsdWV9IGluZGV4PXswfT5cbiAgICAgICAgPE9yZGVyTGlzdEl0ZW1cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgb25QYWdpbmF0ZUNsaWNrPXtvblBhZ2luYXRlQ2xpY2t9XG4gICAgICAgICAgdGlja2V0c1RvUmVmdW5kPXt0aWNrZXRzVG9SZWZ1bmR9XG4gICAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e3NlbGVjdFRvUmVmdW5kfVxuICAgICAgICAgIHN1Ym1pdFJlcXVlc3Q9e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgICAgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzPXt1bnNlbGVjdFJlZnVuZFRpY2tldHN9XG4gICAgICAgIC8+XG4gICAgICA8L1RhYlBhbmVsPlxuICAgICAgPFRhYlBhbmVsIHZhbHVlPXt2YWx1ZX0gaW5kZXg9ezF9PlxuICAgICAgICA8T3JkZXJTdW1tYXJ5XG4gICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIG9uUmVmdW5kQ2xpY2s9e29uUmVmdW5kQ2xpY2t9XG4gICAgICAgICAgc3VibWl0UmVxdWVzdD17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgICBvblJlZnVuZERldGFpbENsaWNrPXsoKSA9PiBzZXRSZWZ1bmREZXRhaWxzT3Blbih0cnVlKX1cbiAgICAgICAgLz5cbiAgICAgICAgPFJlZnVuZFJlcXVlc3RzTW9kYWxcbiAgICAgICAgICB0aWNrZXRzPXtvcmRlcj8ubWVtYmVyVGlja2V0cyB8fCBbXX1cbiAgICAgICAgICBvcGVuPXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICAgIG9uUmVmdW5kU3VjY2Vzc0Nsb3NlPXsoKSA9PiByZXNldEFsbFJlZnVuZFN0YXR1c2VzKCl9XG4gICAgICAgICAgb25DbG9zZVNsaWRlcj17KCkgPT4gY2xvc2VTdWJtaXRSZXF1ZXN0KCl9XG4gICAgICAgICAgdGlja2V0c1RvUmVmdW5kPXt0aWNrZXRzVG9SZWZ1bmR9XG4gICAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e3NlbGVjdFRvUmVmdW5kfVxuICAgICAgICAgIHVuc2VsZWN0UmVmdW5kVGlja2V0cz17dW5zZWxlY3RSZWZ1bmRUaWNrZXRzfVxuICAgICAgICAvPlxuICAgICAgICA8UmVmdW5kRGV0YWlsc1xuICAgICAgICAgIHRpY2tldHM9e29yZGVyPy5tZW1iZXJUaWNrZXRzfVxuICAgICAgICAgIGN1cnJlbmN5PXtvcmRlci5jdXJyZW5jeX1cbiAgICAgICAgICBvcGVuPXtyZWZ1bmREZXRhaWxzT3Blbn1cbiAgICAgICAgICBvbkNsb3NlU2xpZGVyPXsoKSA9PiBzZXRSZWZ1bmREZXRhaWxzT3BlbihmYWxzZSl9XG4gICAgICAgIC8+XG4gICAgICA8L1RhYlBhbmVsPlxuICAgIDwvQm94PlxuICApIDogKFxuICAgIDw+XG4gICAgICA8R3JpZCBpdGVtIG1kPXsxMn0+XG4gICAgICAgIHttb3JlRGV0YWlscygpfVxuICAgICAgPC9HcmlkPlxuICAgICAgPEdyaWRcbiAgICAgICAgcGFkZGluZz17MX1cbiAgICAgICAgaXRlbVxuICAgICAgICBtZD17N31cbiAgICAgICAgb3JkZXI9e3sgbWQ6IDEgfX1cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0TGlzdENvbnRhaW5lcn1cbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJkZXNrdG9wLW9yZGVycy1saXN0LWNvbnRhaW5lclwiXG4gICAgICA+XG4gICAgICAgIDxPcmRlckxpc3RJdGVtXG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgIG9uUGFnaW5hdGVDbGljaz17b25QYWdpbmF0ZUNsaWNrfVxuICAgICAgICAgIHRpY2tldHNUb1JlZnVuZD17dGlja2V0c1RvUmVmdW5kfVxuICAgICAgICAgIHNlbGVjdFRvUmVmdW5kPXtzZWxlY3RUb1JlZnVuZH1cbiAgICAgICAgICBzdWJtaXRSZXF1ZXN0PXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICAgIHVuc2VsZWN0UmVmdW5kVGlja2V0cz17dW5zZWxlY3RSZWZ1bmRUaWNrZXRzfVxuICAgICAgICAvPlxuICAgICAgPC9HcmlkPlxuICAgICAgPEdyaWQgcGFkZGluZz17MX0gaXRlbSBtZD17NX0gb3JkZXI9e3sgbWQ6IDEgfX0+XG4gICAgICAgIDxPcmRlclN1bW1hcnlcbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgb25SZWZ1bmRDbGljaz17b25SZWZ1bmRDbGlja31cbiAgICAgICAgICBzdWJtaXRSZXF1ZXN0PXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICAgIG9uUmVmdW5kRGV0YWlsQ2xpY2s9eygpID0+IHNldFJlZnVuZERldGFpbHNPcGVuKHRydWUpfVxuICAgICAgICAvPlxuICAgICAgPC9HcmlkPlxuICAgICAgPFJlZnVuZFJlcXVlc3RzTW9kYWxcbiAgICAgICAgdGlja2V0cz17b3JkZXI/Lm1lbWJlclRpY2tldHMgfHwgW119XG4gICAgICAgIG9wZW49e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgIG9uUmVmdW5kU3VjY2Vzc0Nsb3NlPXsoKSA9PiByZXNldEFsbFJlZnVuZFN0YXR1c2VzKCl9XG4gICAgICAgIG9uQ2xvc2VTbGlkZXI9eygpID0+IGNsb3NlU3VibWl0UmVxdWVzdCgpfVxuICAgICAgICB0aWNrZXRzVG9SZWZ1bmQ9e3RpY2tldHNUb1JlZnVuZH1cbiAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e3NlbGVjdFRvUmVmdW5kfVxuICAgICAgICB1bnNlbGVjdFJlZnVuZFRpY2tldHM9e3Vuc2VsZWN0UmVmdW5kVGlja2V0c31cbiAgICAgIC8+XG4gICAgICA8UmVmdW5kRGV0YWlsc1xuICAgICAgICB0aWNrZXRzPXtvcmRlcj8ubWVtYmVyVGlja2V0c31cbiAgICAgICAgY3VycmVuY3k9e29yZGVyLmN1cnJlbmN5fVxuICAgICAgICBvcGVuPXtyZWZ1bmREZXRhaWxzT3Blbn1cbiAgICAgICAgb25DbG9zZVNsaWRlcj17KCkgPT4gc2V0UmVmdW5kRGV0YWlsc09wZW4oZmFsc2UpfVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKTtcbn07XG5cbk9yZGVyc0xpc3REZXNrdG9wTW9iaWxlLnByb3BUeXBlcyA9IHtcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICBvcmRlcjogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBtZW1iZXJUaWNrZXRzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpXG4gIH0pLFxuICBpc01vYmlsZTogUHJvcFR5cGVzLmJvb2wsXG4gIGRldGFpbHNSZXF1aXJlZDogUHJvcFR5cGVzLmJvb2wsXG4gIG9uUGFnaW5hdGVDbGljazogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyc0xpc3REZXNrdG9wTW9iaWxlO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgR3JpZCwgQm94LCBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCB1c2VNZWRpYVF1ZXJ5IGZyb20gXCJAbXVpL21hdGVyaWFsL3VzZU1lZGlhUXVlcnlcIjtcbmltcG9ydCB7IGdldFRpY2tldHNCeU9yZGVyIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCB7IGdldEZvcm1hdHRlZERhdGUgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbmltcG9ydCB7IE9ORV9QQUdFX05FWFQgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgT3JkZXJzTGlzdERlc2t0b3BNb2JpbGUgZnJvbSBcIi4vT3JkZXJzTGlzdERlc2t0b3BNb2JpbGVcIjtcbmltcG9ydCBDb3B5VGV4dCBmcm9tIFwiLi4vQ29weVRleHRcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgT3JkZXJzTGlzdCA9ICh7IHN1bW1pdCwgb3JkZXIgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgeyB0aWNrZXRfcGVyX3BhZ2UsIGZpbHRlciwgc29ydCB9ID0gdXNlU2VsZWN0b3IoXG4gICAgKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSxcbiAgICBzaGFsbG93RXF1YWxcbiAgKTtcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpO1xuICBjb25zdCBpc01vYmlsZSA9IHVzZU1lZGlhUXVlcnkodGhlbWUuYnJlYWtwb2ludHMuZG93bihcImxnXCIpKTtcbiAgY29uc3QgW2lzTW9iaWxlVmlld2FibGUsIHNldE1vYmlsZVZpZXdhYmxlXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgZGV0YWlsc1JlcXVpcmVkID0gb3JkZXIubWVtYmVyVGlja2V0cz8uZmluZChcbiAgICAodGlja2V0KSA9PiB0aWNrZXQub3duZXI/LnN0YXR1cyA9PT0gXCJJbmNvbXBsZXRlXCJcbiAgKTtcblxuICBjb25zdCBvblBhZ2luYXRlQ2xpY2sgPSAoKSA9PlxuICAgIGRpc3BhdGNoKFxuICAgICAgZ2V0VGlja2V0c0J5T3JkZXIoe1xuICAgICAgICBvcmRlcklkOiBvcmRlci5pZCxcbiAgICAgICAgcGFnZTogb3JkZXIudGlja2V0c19wYWdlX2N1cnJlbnQgKyBPTkVfUEFHRV9ORVhULFxuICAgICAgICBwZXJQYWdlOiB0aWNrZXRfcGVyX3BhZ2UsXG4gICAgICAgIGZpbHRlcixcbiAgICAgICAgc29ydFxuICAgICAgfSlcbiAgICApO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxCb3hcbiAgICAgICAgc3g9e3sgcGFkZGluZzogeyB4czogMiwgbWQ6IDEsIGxnOiAwIH0gfX1cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJUaWNrZXRJbmZvQ29udGFpbmVyfVxuICAgICAgPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyVGlja2V0SW5mb31cbiAgICAgICAgICBkYXRhLXRlc3RpZD1cIm9yZGVyLXRpY2tldC1pbmZvLWNvbnRhaW5lclwiXG4gICAgICAgID5cbiAgICAgICAgICB7dChcIm9yZGVycy5wdXJjaGFzZWRcIil9OiB7Z2V0Rm9ybWF0dGVkRGF0ZShvcmRlci5jcmVhdGVkKX0gfHtcIiBcIn1cbiAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkub3JkZXJfbm9cIil9OntcIiBcIn1cbiAgICAgICAgICA8Q29weVRleHRcbiAgICAgICAgICAgIHRleHQ9e29yZGVyLm51bWJlcn1cbiAgICAgICAgICAgIHRvb2x0aXBUZXh0PXt0KFwib3JkZXJfc3VtbWFyeS5jb3B5X29yZGVyX251bWJlclwiKX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIHtpc01vYmlsZSAmJiAoXG4gICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgc3g9e3sgcGFkZGluZzogXCI1cHggMTBweFwiIH19XG4gICAgICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRNb2JpbGVWaWV3YWJsZSghaXNNb2JpbGVWaWV3YWJsZSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2lzTW9iaWxlVmlld2FibGVcbiAgICAgICAgICAgICAgPyB0KFwidGlja2V0X3N0YXR1cy5oaWRlX3RpY2tldHNcIilcbiAgICAgICAgICAgICAgOiB0KFwidGlja2V0X3N0YXR1cy52aWV3X3RpY2tldHNcIil9XG4gICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICl9XG4gICAgICA8L0JveD5cbiAgICAgIDxHcmlkXG4gICAgICAgIGtleT17b3JkZXIuaWR9XG4gICAgICAgIGNvbnRhaW5lclxuICAgICAgICByb3dTcGFjaW5nPXsxfVxuICAgICAgICBjb2x1bW5TcGFjaW5nPXt7IHhzOiAxLCBzbTogMiwgbWQ6IDMgfX1cbiAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMub3JkZXJUaWNrZXRDb250YWluZXJ9ICR7XG4gICAgICAgICAgaXNNb2JpbGUgJiYgIWlzTW9iaWxlVmlld2FibGUgPyBzdHlsZXMuZGlzcGxheV9ub25lIDogXCJcIlxuICAgICAgICB9YH1cbiAgICAgICAgc3g9e3tcbiAgICAgICAgICBmbGV4RGlyZWN0aW9uOiB7XG4gICAgICAgICAgICBtZDogXCJyb3dcIixcbiAgICAgICAgICAgIGxnOiBcInJvd1wiXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwYWRkaW5nOiB7XG4gICAgICAgICAgICB4czogMixcbiAgICAgICAgICAgIG1kOiA0LFxuICAgICAgICAgICAgbGc6IDBcbiAgICAgICAgICB9XG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxPcmRlcnNMaXN0RGVza3RvcE1vYmlsZVxuICAgICAgICAgIGlzTW9iaWxlPXtpc01vYmlsZX1cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgZGV0YWlsc1JlcXVpcmVkPXshIWRldGFpbHNSZXF1aXJlZH1cbiAgICAgICAgICBvblBhZ2luYXRlQ2xpY2s9e29uUGFnaW5hdGVDbGlja31cbiAgICAgICAgLz5cbiAgICAgIDwvR3JpZD5cbiAgICA8Lz5cbiAgKTtcbn07XG5cbk9yZGVyc0xpc3QucHJvcFR5cGVzID0ge1xuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIG9yZGVyOiBQcm9wVHlwZXMub2JqZWN0XG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlcnNMaXN0O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZU1lbW8gfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgUmlnaHREcmF3ZXIgZnJvbSBcIi4uL1JpZ2h0RHJhd2VyXCI7XG5pbXBvcnQgUmVmdW5kUmVxdWVzdGVkVGlja2V0IGZyb20gXCIuL1JlZnVuZFJlcXVlc3RlZFRpY2tldFwiO1xuaW1wb3J0IHsgZ2V0QWxsUmVmdW5kUmVxdWVzdGVkVGlja2V0cyB9IGZyb20gXCIuLi8uLi91dGlscy90aWNrZXRVdGlsc1wiO1xuXG5jb25zdCBSZWZ1bmREZXRhaWxzID0gKHsgdGlja2V0cywgY3VycmVuY3ksIG9wZW4sIG9uQ2xvc2VTbGlkZXIgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IHJlcXVlc3RlZFRpY2tldHMgPSB1c2VNZW1vKFxuICAgICgpID0+IGdldEFsbFJlZnVuZFJlcXVlc3RlZFRpY2tldHModGlja2V0cyksXG4gICAgW3RpY2tldHNdXG4gICk7XG4gIGNvbnN0IGNsb3NlU2xpZGVyID0gKCkgPT4ge1xuICAgIG9uQ2xvc2VTbGlkZXIoKTtcbiAgfTtcbiAgcmV0dXJuIChcbiAgICA8UmlnaHREcmF3ZXJcbiAgICAgIGlkPVwicmVmdW5kLWRldGFpbHNcIlxuICAgICAgb3Blbj17b3Blbn1cbiAgICAgIG9uQ2xvc2U9e2Nsb3NlU2xpZGVyfVxuICAgICAgdGl0bGU9e3QoXCJvcmRlcl9zdW1tYXJ5LnJlZnVuZF9kZXRhaWxzXCIpfVxuICAgID5cbiAgICAgIDxCb3hcbiAgICAgICAgc3g9e3tcbiAgICAgICAgICBkaXNwbGF5OiBcImZsZXhcIixcbiAgICAgICAgICBmbGV4RGlyZWN0aW9uOiBcImNvbHVtblwiLFxuICAgICAgICAgIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG4gICAgICAgICAgcGFkZGluZzogXCIwIDVyZW1cIlxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICB7cmVxdWVzdGVkVGlja2V0cz8ubWFwKCh0aWNrZXQpID0+IChcbiAgICAgICAgICA8UmVmdW5kUmVxdWVzdGVkVGlja2V0XG4gICAgICAgICAgICBrZXk9e2ByZWZ1bmRfcmVxXyR7dGlja2V0Py5pZH1gfVxuICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICBjdXJyZW5jeT17Y3VycmVuY3l9XG4gICAgICAgICAgICByZWZ1bmREZXRhaWxzXG4gICAgICAgICAgLz5cbiAgICAgICAgKSl9XG4gICAgICA8L0JveD5cbiAgICA8L1JpZ2h0RHJhd2VyPlxuICApO1xufTtcblxuUmVmdW5kRGV0YWlscy5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdCksXG4gIG9wZW46IFByb3BUeXBlcy5ib29sLFxuICBvbkNsb3NlU2xpZGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVmdW5kRGV0YWlscztcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEdyaWQsIEljb25CdXR0b24sIFRvb2x0aXAgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdG9vbHRpcENsYXNzZXMgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9Ub29sdGlwXCI7XG5pbXBvcnQgeyBzdHlsZWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCBJbmZvSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9JbmZvXCI7XG5pbXBvcnQgU3RhY2sgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIjtcbmltcG9ydCBtb21lbnQgZnJvbSBcIm1vbWVudC10aW1lem9uZVwiO1xuaW1wb3J0IEF0dGVuZGVlU3RhdHVzIGZyb20gXCIuLi9PcmRlcnNMaXN0L0F0dGVuZGVlU3RhdHVzXCI7XG5pbXBvcnQgUmVmdW5kU3RhdHVzIGZyb20gXCIuL1JlZnVuZFN0YXR1c1wiO1xuaW1wb3J0IENvcHlUZXh0IGZyb20gXCIuLi9Db3B5VGV4dFwiO1xuaW1wb3J0IFRpY2tldFN0YXR1cyBmcm9tIFwiLi4vVGlja2V0U3RhdHVzXCI7XG5pbXBvcnQgQmFkZ2VGZWF0dXJlSWNvbiBmcm9tIFwiLi4vQmFkZ2VGZWF0dXJlSWNvblwiO1xuaW1wb3J0IHsgTUlMTElTRUNfVE9fU0VDIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgZm9ybWF0Q3VycmVuY3kgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgUmVmdW5kUmVxdWVzdGVkVGlja2V0ID0gKHsgdGlja2V0LCBjdXJyZW5jeSwgcmVmdW5kRGV0YWlscyB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICBjb25zdCBHUklEXzggPSA4O1xuICBjb25zdCBHUklEXzEyID0gMTI7XG5cbiAgY29uc3QgUEFERElOR18yID0gMjtcblxuICBjb25zdCBhcHByb3ZlZFJlZnVuZHMgPSB0aWNrZXQucmVmdW5kX3JlcXVlc3RzLmZpbHRlcihcbiAgICAocmVmdW5kKSA9PiByZWZ1bmQuc3RhdHVzID09PSBcIkFwcHJvdmVkXCJcbiAgKTtcblxuICBjb25zdCByZWZ1bmRlZFRheGVzU3VtbWF0b3J5ID0ge307XG5cbiAgYXBwcm92ZWRSZWZ1bmRzLmZvckVhY2goKHJlZnVuZCkgPT4ge1xuICAgIHJlZnVuZC5yZWZ1bmRlZF90YXhlcy5mb3JFYWNoKChydCkgPT4ge1xuICAgICAgY29uc3QgdGF4SWQgPSBydC50YXguaWQ7XG4gICAgICBpZiAoIXJlZnVuZGVkVGF4ZXNTdW1tYXRvcnlbdGF4SWRdKSB7XG4gICAgICAgIHJlZnVuZGVkVGF4ZXNTdW1tYXRvcnlbdGF4SWRdID0ge1xuICAgICAgICAgIG5hbWU6IHJ0LnRheC5uYW1lLFxuICAgICAgICAgIHRvdGFsUmVmdW5kZWRUYXhBbW91bnQ6IDBcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJlZnVuZGVkVGF4ZXNTdW1tYXRvcnlbdGF4SWRdLnRvdGFsUmVmdW5kZWRUYXhBbW91bnQgKz1cbiAgICAgICAgcnQucmVmdW5kZWRfYW1vdW50O1xuICAgIH0pO1xuICB9KTtcblxuICBjb25zdCBIdG1sVG9vbHRpcCA9IHN0eWxlZCgoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0pID0+IChcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICA8VG9vbHRpcCB7Li4ucHJvcHN9IGNsYXNzZXM9e3sgcG9wcGVyOiBjbGFzc05hbWUgfX0gLz5cbiAgKSkoKCkgPT4gKHtcbiAgICBbYCYgLiR7dG9vbHRpcENsYXNzZXMudG9vbHRpcH1gXToge1xuICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiNmNWY1ZjlcIixcbiAgICAgIGNvbG9yOiBcInJnYmEoMCwgMCwgMCwgMC44NylcIixcbiAgICAgIG1heFdpZHRoOiAyMjAsXG4gICAgICBmb250U2l6ZTogXCIxZW1cIixcbiAgICAgIGJvcmRlcjogXCIxcHggc29saWQgI2RhZGRlOVwiXG4gICAgfVxuICB9KSk7XG5cbiAgcmV0dXJuIChcbiAgICA8R3JpZFxuICAgICAgY29udGFpbmVyXG4gICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5yZWZ1bmRUaWNrZXRCb3hDb250YWluZXJ9ICR7XG4gICAgICAgIHJlZnVuZERldGFpbHMgPyBzdHlsZXMucmVmdW5kRGV0YWlsIDogXCJcIlxuICAgICAgfSBgfVxuICAgICAgZGF0YS10ZXN0aWQ9XCJyZWZ1bmQtcmVxdWVzdGVkLXRpY2tldC1jb250YWluZXJcIlxuICAgID5cbiAgICAgIDxHcmlkXG4gICAgICAgIHhzPXtHUklEXzEyfVxuICAgICAgICBzbT17cmVmdW5kRGV0YWlscyA/IEdSSURfOCA6IEdSSURfMTJ9XG4gICAgICAgIGl0ZW1cbiAgICAgICAganVzdGlmeT1cInNwYWNlLWJldHdlZW5cIlxuICAgICAgICBwdD17Mn1cbiAgICAgICAgcHg9ezR9XG4gICAgICA+XG4gICAgICAgIDxTdGFja1xuICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJzcGFjZS1iZXR3ZWVuXCIsXG4gICAgICAgICAgICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiXG4gICAgICAgICAgfX1cbiAgICAgICAgICBkaXJlY3Rpb249XCJyb3dcIlxuICAgICAgICA+XG4gICAgICAgICAgPGg0Pnt0aWNrZXQudGlja2V0X3R5cGU/Lm5hbWV9PC9oND5cbiAgICAgICAgICA8R3JpZCBjbGFzc05hbWU9e3N0eWxlcy5iYWRnZUZlYXR1cmVXcmFwcGVyfSB4cz17NH0gaXRlbT5cbiAgICAgICAgICAgIHt0aWNrZXQuYmFkZ2U/LmZlYXR1cmVzPy5tYXAoKGJmKSA9PiAoXG4gICAgICAgICAgICAgIDxCYWRnZUZlYXR1cmVJY29uIGtleT17YmYubmFtZX0gbmFtZT17YmYubmFtZX0gaW1hZ2U9e2JmLmltYWdlfSAvPlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L1N0YWNrPlxuICAgICAgPC9HcmlkPlxuICAgICAge3JlZnVuZERldGFpbHMgJiYgKFxuICAgICAgICA8R3JpZCBzbT17NH0geHM9ezEyfSBweD17eyBzbTogMiwgeHM6IDQgfX0gcHk9e3sgeHM6IDEsIHNtOiAyIH19IGl0ZW0+XG4gICAgICAgICAgPFJlZnVuZFN0YXR1cyB0aWNrZXQ9e3RpY2tldH0gLz5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIDxHcmlkIHhzPXsxMn0gaXRlbSBweD17NH0gcGI9e3JlZnVuZERldGFpbHMgPyBQQURESU5HXzIgOiAwfSBjb250YWluZXI+XG4gICAgICAgIDxHcmlkIHhzPXsxMn0gc209ezh9IGNsYXNzTmFtZT17c3R5bGVzLnJlZnVuZFRpY2tldEF0dGVuZGVlfT5cbiAgICAgICAgICA8QXR0ZW5kZWVTdGF0dXMgdGlja2V0PXt0aWNrZXR9IC8+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0Tm99PlxuICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnRpY2tldF9ub1wiKX06IDxDb3B5VGV4dCB0ZXh0PXt0aWNrZXQubnVtYmVyfSAvPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgICB7cmVmdW5kRGV0YWlscyAmJiB0aWNrZXQudG90YWxfcmVmdW5kZWRfYW1vdW50ID4gMCAmJiAoXG4gICAgICAgICAgPEdyaWQgeHM9ezEyfSBtZD17NH0gcGw9e3sgeHM6IDAsIHNtOiA0IH19PlxuICAgICAgICAgICAge2Zvcm1hdEN1cnJlbmN5KHRpY2tldC50b3RhbF9yZWZ1bmRlZF9hbW91bnQsIHsgY3VycmVuY3kgfSl9e1wiIFwifVxuICAgICAgICAgICAgUmVmdW5kZWRcbiAgICAgICAgICAgIHthcHByb3ZlZFJlZnVuZHMuc29tZSgocikgPT4gci5yZWZ1bmRlZF90YXhlcy5sZW5ndGggPiAwKSAmJiAoXG4gICAgICAgICAgICAgIDxIdG1sVG9vbHRpcFxuICAgICAgICAgICAgICAgIHRpdGxlPXtcbiAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICAgICAgICAgIHtmb3JtYXRDdXJyZW5jeSh0aWNrZXQucmVmdW5kZWRfYW1vdW50LCB7IGN1cnJlbmN5IH0pfXtcIiBcIn1cbiAgICAgICAgICAgICAgICAgICAgICBUaWNrZXQgQW1vdW50XG4gICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgPGI+VGF4ZXM8L2I+XG4gICAgICAgICAgICAgICAgICAgIHtPYmplY3Qua2V5cyhyZWZ1bmRlZFRheGVzU3VtbWF0b3J5KS5tYXAoKHRheElkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyB0b3RhbFJlZnVuZGVkVGF4QW1vdW50LCBuYW1lIH0gPVxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmdW5kZWRUYXhlc1N1bW1hdG9yeVt0YXhJZF07XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGtleT17dGF4SWR9PntgJHtuYW1lfSAtICR7Zm9ybWF0Q3VycmVuY3koXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsUmVmdW5kZWRUYXhBbW91bnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsgY3VycmVuY3kgfVxuICAgICAgICAgICAgICAgICAgICAgICAgKX1gfTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPEluZm9JY29uIC8+XG4gICAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgICA8L0h0bWxUb29sdGlwPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDxiciAvPlxuICAgICAgICAgICAge21vbWVudChcbiAgICAgICAgICAgICAgdGlja2V0LnJlZnVuZF9yZXF1ZXN0c1swXS5hY3Rpb25fZGF0ZSAqIE1JTExJU0VDX1RPX1NFQ1xuICAgICAgICAgICAgKS5mb3JtYXQoXCJNTU0gREQsIFlZWVlcIil9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICApfVxuICAgICAgPC9HcmlkPlxuICAgICAgeyFyZWZ1bmREZXRhaWxzICYmIChcbiAgICAgICAgPEdyaWQgeHM9ezEyfSBwcj17NH0gcGI9ezJ9PlxuICAgICAgICAgIDxHcmlkIHhzPXsxMn0gaXRlbT5cbiAgICAgICAgICAgIDxUaWNrZXRTdGF0dXMgdGlja2V0PXt0aWNrZXR9IC8+XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICApfVxuICAgIDwvR3JpZD5cbiAgKTtcbn07XG5cblJlZnVuZFJlcXVlc3RlZFRpY2tldC5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLm9iamVjdCxcbiAgcmVmdW5kRGV0YWlsczogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlZnVuZFJlcXVlc3RlZFRpY2tldDtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VNZW1vIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBDaGlwIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IGdldFJlZnVuZFJlcXVlc3RlZFN0YXR1c0NvbG9yIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3RpY2tldFV0aWxzXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgUmVmdW5kU3RhdHVzID0gKHsgdGlja2V0IH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBzdGF0dXNDb2xvciA9IHVzZU1lbW8oXG4gICAgKCkgPT4gZ2V0UmVmdW5kUmVxdWVzdGVkU3RhdHVzQ29sb3IodGlja2V0KSxcbiAgICBbdGlja2V0XVxuICApO1xuICByZXR1cm4gKFxuICAgIDxDaGlwXG4gICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHJlZnVuZCBzdGF0dXMgbGFiZWxcIlxuICAgICAgbGFiZWw9e3QoYHRpY2tldF9zdGF0dXMucmVmdW5kX3JlcXVlc3RfJHtzdGF0dXNDb2xvcn1gKX1cbiAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzW3N0YXR1c0NvbG9yXX1gfVxuICAgIC8+XG4gICk7XG59O1xuXG5SZWZ1bmRTdGF0dXMucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5vYmplY3Rcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlZnVuZFN0YXR1cztcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2ggfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IEJveCwgQnV0dG9uLCBTdHlsZWRFbmdpbmVQcm92aWRlciB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgQ2hlY2tDaXJjbGVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NoZWNrQ2lyY2xlXCI7XG5pbXBvcnQgUmlnaHREcmF3ZXIgZnJvbSBcIi4uL1JpZ2h0RHJhd2VyXCI7XG5pbXBvcnQgRXJyb3JMYWJlbCBmcm9tIFwiLi4vTGFiZWxzL0Vycm9yTGFiZWxcIjtcbmltcG9ydCB7IHJlZnVuZEJ1bGtUaWNrZXRzLCB1cGRhdGVUaWNrZXRzUmVmdW5kUmVxdWVzdGVkIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCB7IFNURVBfT05FLCBTVEVQX1RIUkVFLCBTVEVQX1RXTyB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCBPcmRlckxpc3RUaWNrZXRzIGZyb20gXCIuLi9PcmRlcnNMaXN0L09yZGVyTGlzdFRpY2tldHNcIjtcbmltcG9ydCBSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQgZnJvbSBcIi4vUmVmdW5kUmVxdWVzdGVkVGlja2V0XCI7XG5cbmNvbnN0IFJlZnVuZFJlcXVlc3RzTW9kYWwgPSAoe1xuICB0aWNrZXRzLFxuICBzdW1taXQsXG4gIG9wZW4sXG4gIG9uUmVmdW5kU3VjY2Vzc0Nsb3NlLFxuICBvbkNsb3NlU2xpZGVyLFxuICB0aWNrZXRzVG9SZWZ1bmQsXG4gIHNlbGVjdFRvUmVmdW5kLFxuICB1bnNlbGVjdFJlZnVuZFRpY2tldHNcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IFtzdGVwLCBzZXRTdGVwXSA9IHVzZVN0YXRlKFNURVBfT05FKTtcbiAgY29uc3QgW2Vycm9yTXNnLCBzZXRFcnJvck1zZ10gPSB1c2VTdGF0ZShcIlwiKTtcbiAgY29uc3QgW3JlZnVuZFN1Y2Nlc3MsIHNldFJlZnVuZFN1Y2Nlc3NdID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gIGNvbnN0IGNsb3NlU2xpZGVyID0gKCkgPT4ge1xuICAgIHNldEVycm9yTXNnKFwiXCIpO1xuICAgIG9uQ2xvc2VTbGlkZXIoKTtcbiAgICBzZXRTdGVwKFNURVBfT05FKTtcbiAgICBpZiAocmVmdW5kU3VjY2Vzcykge1xuICAgICAgb25SZWZ1bmRTdWNjZXNzQ2xvc2UoKTsgLy8gaWYgdGhlIHJlZnVuZCBpcyBhIHN1Y2Nlc3MsIHRyaWdnZXIgYW5kIHJlLXJldHJpZXZlIHRpY2tldHMgYnkgb3JkZXJcbiAgICAgIHNldFJlZnVuZFN1Y2Nlc3MoZmFsc2UpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBjb25maXJtUmVmdW5kID0gKCkgPT4ge1xuICAgIHNldFN0ZXAoU1RFUF9UV08pO1xuICB9O1xuXG4gIGNvbnN0IGdvQmFja1RvUmVmdW5kID0gKCkgPT4ge1xuICAgIHNldFN0ZXAoU1RFUF9PTkUpO1xuICB9O1xuXG4gIGNvbnN0IHJlZnVuZFRpY2tldHMgPSBhc3luYyAoKSA9PiB7XG4gICAgZGlzcGF0Y2gocmVmdW5kQnVsa1RpY2tldHMoeyB0aWNrZXRzOiB0aWNrZXRzVG9SZWZ1bmQgfSkpLnRoZW4oKHJlcykgPT4ge1xuICAgICAgZGlzcGF0Y2godXBkYXRlVGlja2V0c1JlZnVuZFJlcXVlc3RlZChyZXMpKTsgLy8gcmV0dXJuaW5nIHdoaWNoIHRpY2tldHMgd2VyZSBzdWNjZXNzZnVsXG4gICAgICBpZiAocmVzPy5sZW5ndGggPT09IHRpY2tldHNUb1JlZnVuZC5sZW5ndGgpIHtcbiAgICAgICAgc2V0U3RlcChTVEVQX1RIUkVFKTsgLy8gc3VjY2VzcywgYWxsIHJlZnVuZHMgd2VyZSByZXF1ZXN0ZWRcbiAgICAgICAgc2V0UmVmdW5kU3VjY2Vzcyh0cnVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldEVycm9yTXNnKHQoXCJlcnJvcnMucmVmdW5kX3Vuc3VjY2Vzc2Z1bFwiKSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgc2V0RXJyb3JNc2coXCJcIik7XG4gIH07XG5cbiAgY29uc3QgcmVmdW5kU3RlcE9uZSA9ICgpID0+IChcbiAgICA8PlxuICAgICAgPGgyIGNsYXNzTmFtZT17c3R5bGVzLnN1YnRpdGxlfT5cbiAgICAgICAge3QoXCJjb25maXJtX3BvcHVwLnF1ZXN0aW9uX3RleHRfc2VsZWN0X3JlZnVuZFwiKX1cbiAgICAgIDwvaDI+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldExpc3R9PlxuICAgICAgICB7dGlja2V0cy5tYXAoKHRpY2tldCkgPT4gKFxuICAgICAgICAgIDxPcmRlckxpc3RUaWNrZXRzXG4gICAgICAgICAgICBrZXk9e2B0aWNrZXQtJHt0aWNrZXQuaWR9YH1cbiAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICBpc1NlbGVjdGVkVG9SZWZ1bmQ9e1xuICAgICAgICAgICAgICAhIXRpY2tldHNUb1JlZnVuZC5maW5kKCh0KSA9PiB0LmlkID09PSB0aWNrZXQuaWQpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZWxlY3RUb1JlZnVuZD17c2VsZWN0VG9SZWZ1bmR9XG4gICAgICAgICAgICB1bnNlbGVjdFJlZnVuZFRpY2tldHM9e3Vuc2VsZWN0UmVmdW5kVGlja2V0c31cbiAgICAgICAgICAgIGlzUmVmdW5kTW9kYWxcbiAgICAgICAgICAvPlxuICAgICAgICApKX1cbiAgICAgIDwvQm94PlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5hY3Rpb25CdXR0b25zfT5cbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQtY2FuY2VsLWJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY2FuY2VsQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9e2Nsb3NlU2xpZGVyfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJnZW5lcmFsLmNhbmNlbFwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kLWNvbnRpbnVlLWJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY29udGludWVCdXR0b259XG4gICAgICAgICAgb25DbGljaz17Y29uZmlybVJlZnVuZH1cbiAgICAgICAgICBkaXNhYmxlZD17dGlja2V0c1RvUmVmdW5kLmxlbmd0aCA9PT0gMH1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwiZ2VuZXJhbC5jb250aW51ZVwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICA8L0JveD5cbiAgICA8Lz5cbiAgKTtcblxuICBjb25zdCByZWZ1bmRTdGVwVHdvID0gKCkgPT4gKFxuICAgIDxCb3ggZGF0YS10ZXN0aWQ9XCJyZWZ1bmQtcmVxdWVzdC1zdWNjZXNzZnVsXCI+XG4gICAgICA8aDMgY2xhc3NOYW1lPXtzdHlsZXMuc3VidGl0bGV9PlxuICAgICAgICB7dChcImNvbmZpcm1fcG9wdXAucXVlc3Rpb25fdGV4dF9jb25maXJtX3JlZnVuZFwiKX1cbiAgICAgIDwvaDM+XG4gICAgICB7ZXJyb3JNc2cgJiYgKFxuICAgICAgICA8RXJyb3JMYWJlbFxuICAgICAgICAgIGNsYXNzTmFtZXM9e3N0eWxlcy5yZWZ1bmRFcnJvck1zZ31cbiAgICAgICAgICBjb2xvcj1cIiNGRjAwMDBcIlxuICAgICAgICAgIGRhdGFUZXN0SWQ9XCJmYWlsZWQtcmVmdW5kLW1lc3NhZ2VcIlxuICAgICAgICAgIG1lc3NhZ2U9e2Vycm9yTXNnfVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0TGlzdH0+XG4gICAgICAgIHt0aWNrZXRzVG9SZWZ1bmQubWFwKCh0aWNrZXQpID0+IChcbiAgICAgICAgICA8UmVmdW5kUmVxdWVzdGVkVGlja2V0XG4gICAgICAgICAgICBrZXk9e2ByZWZ1bmRfcmVxXyR7dGlja2V0Py5pZH1gfVxuICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgLz5cbiAgICAgICAgKSl9XG4gICAgICA8L0JveD5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuQ1RBQnV0dG9uV3JhcHBlcn0+XG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kLXJldHVybi1idXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNhbmNlbEJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXtnb0JhY2tUb1JlZnVuZH1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwiZ2VuZXJhbC5iYWNrXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQtY29udGludWUtYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jb250aW51ZUJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXtyZWZ1bmRUaWNrZXRzfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJnZW5lcmFsLmNvbnRpbnVlXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgIDwvQm94PlxuICAgIDwvQm94PlxuICApO1xuXG4gIGNvbnN0IHJlZnVuZFN0ZXBUaHJlZSA9ICgpID0+IChcbiAgICA8Qm94XG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy5yZWZ1bmRTdWNjZXNzZnVsfVxuICAgICAgZGF0YS10ZXN0aWQ9XCJyZWZ1bmQtcmVxdWVzdC1zdWNjZXNzZnVsXCJcbiAgICA+XG4gICAgICA8Q2hlY2tDaXJjbGVJY29uIHN4PXt7IGNvbG9yOiBcIiM0Y2FmNTBcIiB9fSAvPlxuICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMuc3VjY2Vzc01zZ30+XG4gICAgICAgIHt0KFwidGlja2V0cy5yZWZ1bmRfcmVxdWVzdF9zdWNjZXNzXzFcIil9XG4gICAgICA8L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy5zdWNjZXNzTXNnMn0+XG4gICAgICAgIHt0KFwidGlja2V0cy5yZWZ1bmRfcmVxdWVzdF9zdWNjZXNzXzJcIil9XG4gICAgICA8L3NwYW4+XG4gICAgICA8QnV0dG9uXG4gICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQtZmluaXNoLWJ1dHRvblwiXG4gICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jb250aW51ZUJ1dHRvbn1cbiAgICAgICAgb25DbGljaz17Y2xvc2VTbGlkZXJ9XG4gICAgICA+XG4gICAgICAgIHt0KFwiZ2VuZXJhbC5maW5pc2hcIil9XG4gICAgICA8L0J1dHRvbj5cbiAgICA8L0JveD5cbiAgKTtcblxuICBjb25zdCByZW5kZXJTdGVwcyA9ICgpID0+IHtcbiAgICBzd2l0Y2ggKHN0ZXApIHtcbiAgICAgIGNhc2UgU1RFUF9PTkU6XG4gICAgICAgIHJldHVybiByZWZ1bmRTdGVwT25lKCk7XG4gICAgICBjYXNlIFNURVBfVFdPOlxuICAgICAgICByZXR1cm4gcmVmdW5kU3RlcFR3bygpO1xuICAgICAgY2FzZSBTVEVQX1RIUkVFOlxuICAgICAgICByZXR1cm4gcmVmdW5kU3RlcFRocmVlKCk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gcmVmdW5kU3RlcE9uZSgpO1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIChcbiAgICA8U3R5bGVkRW5naW5lUHJvdmlkZXIgaW5qZWN0Rmlyc3Q+XG4gICAgICA8UmlnaHREcmF3ZXJcbiAgICAgICAgaWQ9XCJyZWZ1bmQtcmVxdWVzdHNcIlxuICAgICAgICBvcGVuPXtvcGVufVxuICAgICAgICBvbkNsb3NlPXtjbG9zZVNsaWRlcn1cbiAgICAgICAgdGl0bGU9e3QoXCJvcmRlcl9zdW1tYXJ5LnJlcXVlc3RfcmVmdW5kXCIpfVxuICAgICAgICBkYXRhLXRlc3RpZD1cInJlZnVuZC1yZXF1ZXN0LW1vZGFsXCJcbiAgICAgID5cbiAgICAgICAge3JlbmRlclN0ZXBzKCl9XG4gICAgICA8L1JpZ2h0RHJhd2VyPlxuICAgIDwvU3R5bGVkRW5naW5lUHJvdmlkZXI+XG4gICk7XG59O1xuXG5SZWZ1bmRSZXF1ZXN0c01vZGFsLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0czogUHJvcFR5cGVzLmFycmF5T2YoT2JqZWN0KSxcbiAgb3BlbjogUHJvcFR5cGVzLmJvb2wsXG4gIG9uUmVmdW5kU3VjY2Vzc0Nsb3NlOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25DbG9zZVNsaWRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlZnVuZFJlcXVlc3RzTW9kYWw7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBCb3gsIERyYXdlciwgSWNvbkJ1dHRvbiwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBDbG9zZSBhcyBDbG9zZUljb24gfSBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBSaWdodERyYXdlciA9ICh7XG4gIGlkLFxuICB0aXRsZSxcbiAgaGVhZGVyQ2hpbGRyZW4gPSBudWxsLFxuICBjaGlsZHJlbixcbiAgb3BlbixcbiAgb25DbG9zZSxcbiAgY2xhc3NOYW1lXG59KSA9PiAoXG4gIDxEcmF3ZXJcbiAgICBpZD17aWR9XG4gICAgb3Blbj17b3Blbn1cbiAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgIGFuY2hvcj1cInJpZ2h0XCJcbiAgICBNb2RhbFByb3BzPXt7IGtlZXBNb3VudGVkOiBmYWxzZSB9fVxuICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLndyYXBwZXJ9ICR7Y2xhc3NOYW1lfWB9XG4gID5cbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmhlYWRlcn0+XG4gICAgICA8SWNvbkJ1dHRvblxuICAgICAgICBkYXRhLXRlc3RpZD1cImNsb3NlLWRyYXdlclwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNsb3NlQnRufVxuICAgICAgICBvbkNsaWNrPXtvbkNsb3NlfVxuICAgICAgICBzeD17eyBmbG9hdDogXCJyaWdodFwiIH19XG4gICAgICAgIGZvbnRTaXplPVwibGFyZ2VcIlxuICAgICAgPlxuICAgICAgICA8Q2xvc2VJY29uIC8+XG4gICAgICA8L0ljb25CdXR0b24+XG4gICAgICB7dGl0bGUgJiYgKFxuICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiaDZcIiBndXR0ZXJCb3R0b20gY2xhc3NOYW1lPXtzdHlsZXMudGl0bGV9PlxuICAgICAgICAgIHt0aXRsZX1cbiAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgKX1cbiAgICAgIHtoZWFkZXJDaGlsZHJlbn1cbiAgICA8L0JveD5cbiAgICB7Y2hpbGRyZW59XG4gIDwvRHJhd2VyPlxuKTtcblxuUmlnaHREcmF3ZXIucHJvcFR5cGVzID0ge1xuICBpZDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICB0aXRsZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnN0cmluZywgUHJvcFR5cGVzLm5vZGVdKSxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBoZWFkZXJDaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIG9wZW46IFByb3BUeXBlcy5ib29sLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYyxcbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSaWdodERyYXdlcjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHNoYWxsb3dFcXVhbCwgdXNlU2VsZWN0b3IgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgU3VtbWl0SGVhZGVyID0gKCkgPT4ge1xuICBjb25zdCB7IHN1bW1pdCB9ID0gdXNlU2VsZWN0b3IoXG4gICAgKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSxcbiAgICBzaGFsbG93RXF1YWxcbiAgKTtcbiAgcmV0dXJuIChcbiAgICA8Qm94XG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy53aWRnZXRIZWFkZXJ9XG4gICAgICBzeD17eyBwYWRkaW5nOiB7IHhzOiAyLCBtZDogMCwgbGc6IDAgfSB9fVxuICAgICAgZGF0YS10ZXN0aWQ9XCJteS1vcmRlcnMtdGlja2V0LWhlYWRlclwiXG4gICAgPlxuICAgICAgPGgyIGNsYXNzTmFtZT17c3R5bGVzLnN1bW1pdFRpdGxlRGF0ZX0+e3N1bW1pdD8ubmFtZX08L2gyPlxuICAgICAgPGgyIGNsYXNzTmFtZT17c3R5bGVzLnN1bW1pdFRpdGxlRGF0ZX0+e3N1bW1pdD8uZGF0ZXNfbGFiZWx9PC9oMj5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFN1bW1pdEhlYWRlcjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHJlc2V0RmlsdGVyIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCBTdW1taXRIZWFkZXIgZnJvbSBcIi4uL1N1bW1pdEhlYWRlclwiO1xuaW1wb3J0IE5vVGlja2V0c0ZvdW5kIGZyb20gXCIuLi9Ob1RpY2tldHNGb3VuZFwiO1xuaW1wb3J0IHsgVEFCUyB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcblxuY29uc3QgVGFiV3JhcHBlciA9ICh7IHRhYiwgY2hpbGRyZW4sIHNldFRhYiB9KSA9PiB7XG4gIGNvbnN0IHsgbWVtYmVyT3JkZXJzLCB1c2VyVGlja2V0cywgYWN0aXZlRmlsdGVyc0NvdW50IH0gPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9XG4gICk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgdGlja2V0cyA9IHRhYiA9PT0gVEFCUy5USUNLRVRTID8gdXNlclRpY2tldHMgOiBtZW1iZXJPcmRlcnM7XG4gIGNvbnN0IGhhc1RpY2tldHMgPSB0aWNrZXRzLmxlbmd0aCA+IDA7XG4gIGNvbnN0IGlzRmlsdGVyZWQgPSBhY3RpdmVGaWx0ZXJzQ291bnQgPiAwO1xuXG4gIGNvbnN0IGNsZWFyRmlsdGVycyA9ICgpID0+IHtcbiAgICBkaXNwYXRjaChyZXNldEZpbHRlcigpKTtcbiAgfTtcblxuICBjb25zdCBnZXRQYWdlVmlldyA9ICgpID0+IHtcbiAgICBpZiAoaXNGaWx0ZXJlZCkgcmV0dXJuIFwiZmlsdGVyXCI7XG4gICAgcmV0dXJuIHRhYiA9PT0gVEFCUy5USUNLRVRTID8gVEFCUy5USUNLRVRTIDogVEFCUy5PUkRFUlM7XG4gIH07XG5cbiAgY29uc3QgZ2V0T25DbGljayA9ICgpID0+IHtcbiAgICBpZiAoaXNGaWx0ZXJlZCkgcmV0dXJuIGNsZWFyRmlsdGVycztcbiAgICBjb25zdCB0YWJUb0xpbmsgPSB0YWIgPT09IFRBQlMuVElDS0VUUyA/IFRBQlMuT1JERVJTIDogVEFCUy5USUNLRVRTO1xuICAgIHJldHVybiAoKSA9PiBzZXRUYWIodGFiVG9MaW5rKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7IWhhc1RpY2tldHMgJiYgKFxuICAgICAgICA8Tm9UaWNrZXRzRm91bmQgcGFnZVZpZXc9e2dldFBhZ2VWaWV3KCl9IG9uQ2xpY2s9e2dldE9uQ2xpY2soKX0gLz5cbiAgICAgICl9XG4gICAgICB7aGFzVGlja2V0cyAmJiAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPEJveCBzeD17eyBwdDogNiwgcGI6IDMgfX0+XG4gICAgICAgICAgICA8U3VtbWl0SGVhZGVyIC8+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICA8Lz5cbiAgICAgICl9XG4gICAgPC8+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBUYWJXcmFwcGVyO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgQm94LCBCdXR0b24sIENvbGxhcHNlLCBEaXZpZGVyLCBMaW5rIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCBSZWFzc2lnbkZvcm0gZnJvbSBcIi4uL1JlYXNzaWduRm9ybVwiO1xuaW1wb3J0IERlbGVnYXRlRm9ybSBmcm9tIFwiLi4vRGVsZWdhdGVGb3JtXCI7XG5pbXBvcnQgeyB1c2VUaWNrZXREZXRhaWxzIH0gZnJvbSBcIi4uLy4uLy4uLy4uL2hvb2tzL3VzZVRpY2tldERldGFpbHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCBDb25maXJtRGlhbG9nIGZyb20gXCIuLi8uLi8uLi9Db25maXJtRGlhbG9nXCI7XG5cbmNvbnN0IEFzc2lnbk9wdGlvbnMgPSAoe1xuICB0aWNrZXQsXG4gIHVzZXJQcm9maWxlLFxuICBhc3NpZ25PcHRpb24sXG4gIHNldEFzc2lnbk9wdGlvbixcbiAgb25Bc3NpZ24sXG4gIG9uRGVsZWdhdGUsXG4gIG9uVW5Bc3NpZ25cbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbb3BlbkNvbmZpcm1VbmFzc2lnbiwgc2V0T3BlbkNvbmZpcm1VbmFzc2lnbl0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IGlzQXNzaWduZWRUb01lID0gdXNlclByb2ZpbGU/LmVtYWlsID09PSB0aWNrZXQ/Lm93bmVyPy5lbWFpbDtcbiAgY29uc3QgeyBhbGxvd3NEZWxlZ2F0ZSB9ID0gdXNlVGlja2V0RGV0YWlscyh0aWNrZXQpO1xuXG4gIGNvbnN0IGhhbmRsZVVuQXNzaWduID0gKCkgPT4ge1xuICAgIHNldE9wZW5Db25maXJtVW5hc3NpZ24oZmFsc2UpO1xuICAgIG9uVW5Bc3NpZ24oKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMud3JhcHBlcn0+XG4gICAgICA8QnV0dG9uXG4gICAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICBkaXNhYmxlZD17aXNBc3NpZ25lZFRvTWV9XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IG9uQXNzaWduKHVzZXJQcm9maWxlLmVtYWlsLCBcIlwiKX1cbiAgICAgID5cbiAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLmFzc2lnbl90b19tZVwiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgICAgPERpdmlkZXIgdmFyaWFudD1cIm1pZGRsZVwiIHN4PXt7IG15OiAzLCBweDogNCB9fT5cbiAgICAgICAgb3JcbiAgICAgIDwvRGl2aWRlcj5cbiAgICAgIDxCb3g+XG4gICAgICAgIDxDb2xsYXBzZSBpbj17YXNzaWduT3B0aW9uID09PSBcIm90aGVyXCJ9IHRpbWVvdXQ9ezUwMH0+XG4gICAgICAgICAgPFJlYXNzaWduRm9ybVxuICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICBvblN1Ym1pdD17KHZhbCkgPT5cbiAgICAgICAgICAgICAgb25Bc3NpZ24odmFsLm5ld19hdHRlbmRlZV9lbWFpbCwgdmFsLnBlcnNvbmFsX21lc3NhZ2UpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRBc3NpZ25PcHRpb24obnVsbCl9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9Db2xsYXBzZT5cbiAgICAgICAge2Fzc2lnbk9wdGlvbiAhPT0gXCJvdGhlclwiICYmIChcbiAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0QXNzaWduT3B0aW9uKFwib3RoZXJcIil9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLmFzc2lnbl90b19vdGhlclwiKX1cbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgKX1cbiAgICAgIDwvQm94PlxuICAgICAge2FsbG93c0RlbGVnYXRlICYmIChcbiAgICAgICAgPD5cbiAgICAgICAgICA8RGl2aWRlciB2YXJpYW50PVwibWlkZGxlXCIgc3g9e3sgbXk6IDMsIHB4OiA0IH19PlxuICAgICAgICAgICAgb3JcbiAgICAgICAgICA8L0RpdmlkZXI+XG4gICAgICAgICAgPENvbGxhcHNlIGluPXthc3NpZ25PcHRpb24gPT09IFwibWFuYWdlXCJ9IHRpbWVvdXQ9ezUwMH0+XG4gICAgICAgICAgICA8RGVsZWdhdGVGb3JtXG4gICAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgICBvblN1Ym1pdD17KHZhbCkgPT5cbiAgICAgICAgICAgICAgICBvbkRlbGVnYXRlKFxuICAgICAgICAgICAgICAgICAgdmFsLmRlbGVnYXRlX2ZpcnN0X25hbWUsXG4gICAgICAgICAgICAgICAgICB2YWwuZGVsZWdhdGVfbGFzdF9uYW1lLFxuICAgICAgICAgICAgICAgICAgdmFsLmRlbGVnYXRlX2VtYWlsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHNldEFzc2lnbk9wdGlvbihudWxsKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9Db2xsYXBzZT5cbiAgICAgICAgICB7YXNzaWduT3B0aW9uICE9PSBcIm1hbmFnZVwiICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgdmFyaWFudD1cImNvbnRhaW5lZFwiXG4gICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldEFzc2lnbk9wdGlvbihcIm1hbmFnZVwiKX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLm1hbmFnZV90aWNrZXRcIil9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICApfVxuICAgICAgICA8Lz5cbiAgICAgICl9XG4gICAgICB7dGlja2V0Py5vd25lcj8uZW1haWwgJiYgKFxuICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnVuYXNzaWduV3JhcHBlcn0+XG4gICAgICAgICAgey8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc3gtYTExeS9hbmNob3ItaXMtdmFsaWQgKi99XG4gICAgICAgICAgPExpbmtcbiAgICAgICAgICAgIGNvbXBvbmVudD1cImJ1dHRvblwiXG4gICAgICAgICAgICB2YXJpYW50PVwiYm9keTFcIlxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0T3BlbkNvbmZpcm1VbmFzc2lnbih0cnVlKX1cbiAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgIGNvbG9yOiBcInRleHQubGlua1wiLFxuICAgICAgICAgICAgICB0ZXh0RGVjb3JhdGlvbjogXCJ1bmRlcmxpbmVcIixcbiAgICAgICAgICAgICAgdGV4dERlY29yYXRpb25Db2xvcjogXCJ0ZXh0LmxpbmtcIlxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dChcInRpY2tldF9hc3NpZ24ucmV2ZXJ0X3RvX3VuYXNzaWduZWRcIil9XG4gICAgICAgICAgPC9MaW5rPlxuICAgICAgICA8L0JveD5cbiAgICAgICl9XG4gICAgICB7LyogVE9ETzogaWYgd2UgbmVlZCB0byByZXVzZSB0aGlzIHRoZW4gd2Ugc2hvdWxkIG1vdmUgaXQgdG8gY29udGV4dCAqL31cbiAgICAgIDxDb25maXJtRGlhbG9nXG4gICAgICAgIG9wZW49e29wZW5Db25maXJtVW5hc3NpZ259XG4gICAgICAgIHRpdGxlPXt0KFwidGlja2V0X2Fzc2lnbi5jb25maXJtX3VuYXNzaWduLnRpdGxlXCIpfVxuICAgICAgICBib2R5PXt0KFwidGlja2V0X2Fzc2lnbi5jb25maXJtX3VuYXNzaWduLmJvZHlcIil9XG4gICAgICAgIG9uQ29uZmlybT17aGFuZGxlVW5Bc3NpZ259XG4gICAgICAgIG9uQ2xvc2U9eygpID0+IHNldE9wZW5Db25maXJtVW5hc3NpZ24oZmFsc2UpfVxuICAgICAgLz5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbkFzc2lnbk9wdGlvbnMucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgdXNlclByb2ZpbGU6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgYXNzaWduT3B0aW9uOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBzZXRBc3NpZ25PcHRpb246IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uQXNzaWduOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkRlbGVnYXRlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBBc3NpZ25PcHRpb25zO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgVGV4dEZpZWxkLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZUZvcm1payB9IGZyb20gXCJmb3JtaWtcIjtcbmltcG9ydCAqIGFzIHl1cCBmcm9tIFwieXVwXCI7XG5cbmltcG9ydCBGb3JtRm9vdGVyIGZyb20gXCIuLi8uLi8uLi9Gb3JtRm9vdGVyXCI7XG5cbmNvbnN0IERlbGVnYXRlRm9ybSA9ICh7IG9uU3VibWl0LCBvbkNsb3NlIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGNvbnN0IGZvcm1payA9IHVzZUZvcm1payh7XG4gICAgaW5pdGlhbFZhbHVlczoge1xuICAgICAgZGVsZWdhdGVfZmlyc3RfbmFtZTogXCJcIixcbiAgICAgIGRlbGVnYXRlX2xhc3RfbmFtZTogXCJcIixcbiAgICAgIGRlbGVnYXRlX2VtYWlsOiBcIlwiXG4gICAgfSxcbiAgICB2YWxpZGF0aW9uU2NoZW1hOiB5dXAub2JqZWN0KHtcbiAgICAgIGRlbGVnYXRlX2ZpcnN0X25hbWU6IHl1cFxuICAgICAgICAuc3RyaW5nKHQoXCJ2YWxpZGF0aW9uLmZpcnN0X25hbWUuc3RyaW5nXCIpKVxuICAgICAgICAucmVxdWlyZWQodChcInZhbGlkYXRpb24uZmlyc3RfbmFtZS5yZXF1aXJlZFwiKSksXG4gICAgICBkZWxlZ2F0ZV9sYXN0X25hbWU6IHl1cFxuICAgICAgICAuc3RyaW5nKHQoXCJ2YWxpZGF0aW9uLmxhc3RfbmFtZS5zdHJpbmdcIikpXG4gICAgICAgIC5yZXF1aXJlZCh0KFwidmFsaWRhdGlvbi5sYXN0X25hbWUucmVxdWlyZWRcIikpLFxuICAgICAgZGVsZWdhdGVfZW1haWw6IHl1cFxuICAgICAgICAuc3RyaW5nKHQoXCJ2YWxpZGF0aW9uLmVtYWlsLnN0cmluZ1wiKSlcbiAgICAgICAgLmVtYWlsKHQoXCJ2YWxpZGF0aW9uLmVtYWlsLmZvcm1hdFwiKSlcbiAgICB9KSxcbiAgICBvblN1Ym1pdDogKHZhbHVlcywgeyByZXNldEZvcm0gfSkgPT4ge1xuICAgICAgb25TdWJtaXQodmFsdWVzKTtcbiAgICAgIHJlc2V0Rm9ybSgpO1xuICAgIH1cbiAgfSk7XG5cbiAgY29uc3QgaGFuZGxlQ2FuY2VsID0gKCkgPT4ge1xuICAgIGZvcm1pay5yZXNldEZvcm0oKTtcbiAgICBvbkNsb3NlKCk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImg2XCIgZ3V0dGVyQm90dG9tPlxuICAgICAgICB7dChcInRpY2tldF9hc3NpZ24uZGVsZWdhdGVfZm9ybS50aXRsZVwiKX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MVwiIGd1dHRlckJvdHRvbSBzeD17eyBjb2xvcjogXCJ0ZXh0LnNlY29uZGFyeVwiIH19PlxuICAgICAgICB7dChcInRpY2tldF9hc3NpZ24uZGVsZWdhdGVfZm9ybS5ib2R5XCIpfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgPGZvcm0gb25TdWJtaXQ9e2Zvcm1pay5oYW5kbGVTdWJtaXR9IG5vVmFsaWRhdGU+XG4gICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICBuYW1lPVwiZGVsZWdhdGVfZmlyc3RfbmFtZVwiXG4gICAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgICBsYWJlbD17dChcInRpY2tldF9hc3NpZ24uZGVsZWdhdGVfZm9ybS5maXJzdF9uYW1lXCIpfVxuICAgICAgICAgIHZhbHVlPXtmb3JtaWsudmFsdWVzLmRlbGVnYXRlX2ZpcnN0X25hbWV9XG4gICAgICAgICAgb25DaGFuZ2U9e2Zvcm1pay5oYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgb25CbHVyPXtmb3JtaWsuaGFuZGxlQmx1cn1cbiAgICAgICAgICBlcnJvcj17XG4gICAgICAgICAgICBmb3JtaWsudG91Y2hlZC5kZWxlZ2F0ZV9maXJzdF9uYW1lICYmXG4gICAgICAgICAgICBCb29sZWFuKGZvcm1pay5lcnJvcnMuZGVsZWdhdGVfZmlyc3RfbmFtZSlcbiAgICAgICAgICB9XG4gICAgICAgICAgaGVscGVyVGV4dD17XG4gICAgICAgICAgICBmb3JtaWsudG91Y2hlZC5kZWxlZ2F0ZV9maXJzdF9uYW1lICYmXG4gICAgICAgICAgICBmb3JtaWsuZXJyb3JzLmRlbGVnYXRlX2ZpcnN0X25hbWVcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgLz5cbiAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIG5hbWU9XCJkZWxlZ2F0ZV9sYXN0X25hbWVcIlxuICAgICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLmRlbGVnYXRlX2Zvcm0ubGFzdF9uYW1lXCIpfVxuICAgICAgICAgIHZhbHVlPXtmb3JtaWsudmFsdWVzLmRlbGVnYXRlX2xhc3RfbmFtZX1cbiAgICAgICAgICBvbkNoYW5nZT17Zm9ybWlrLmhhbmRsZUNoYW5nZX1cbiAgICAgICAgICBvbkJsdXI9e2Zvcm1pay5oYW5kbGVCbHVyfVxuICAgICAgICAgIGVycm9yPXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlX2xhc3RfbmFtZSAmJlxuICAgICAgICAgICAgQm9vbGVhbihmb3JtaWsuZXJyb3JzLmRlbGVnYXRlX2xhc3RfbmFtZSlcbiAgICAgICAgICB9XG4gICAgICAgICAgaGVscGVyVGV4dD17XG4gICAgICAgICAgICBmb3JtaWsudG91Y2hlZC5kZWxlZ2F0ZV9sYXN0X25hbWUgJiZcbiAgICAgICAgICAgIGZvcm1pay5lcnJvcnMuZGVsZWdhdGVfbGFzdF9uYW1lXG4gICAgICAgICAgfVxuICAgICAgICAvPlxuICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgbmFtZT1cImRlbGVnYXRlX2VtYWlsXCJcbiAgICAgICAgICBsYWJlbD17dChcInRpY2tldF9hc3NpZ24uZGVsZWdhdGVfZm9ybS5lbWFpbFwiKX1cbiAgICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgICAgIHZhbHVlPXtmb3JtaWsudmFsdWVzLmRlbGVnYXRlX2VtYWlsfVxuICAgICAgICAgIG9uQ2hhbmdlPXtmb3JtaWsuaGFuZGxlQ2hhbmdlfVxuICAgICAgICAgIG9uQmx1cj17Zm9ybWlrLmhhbmRsZUJsdXJ9XG4gICAgICAgICAgZXJyb3I9e1xuICAgICAgICAgICAgZm9ybWlrLnRvdWNoZWQuZGVsZWdhdGVfZW1haWwgJiZcbiAgICAgICAgICAgIEJvb2xlYW4oZm9ybWlrLmVycm9ycy5kZWxlZ2F0ZV9lbWFpbClcbiAgICAgICAgICB9XG4gICAgICAgICAgaGVscGVyVGV4dD17XG4gICAgICAgICAgICBmb3JtaWsudG91Y2hlZC5kZWxlZ2F0ZV9lbWFpbCAmJiBmb3JtaWsuZXJyb3JzLmRlbGVnYXRlX2VtYWlsXG4gICAgICAgICAgfVxuICAgICAgICAvPlxuICAgICAgICA8Rm9ybUZvb3RlclxuICAgICAgICAgIHNhdmVMYWJlbD17dChcInRpY2tldF9hc3NpZ24uZGVsZWdhdGVfZm9ybS5zYXZlXCIpfVxuICAgICAgICAgIGNhbmNlbExhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5kZWxlZ2F0ZV9mb3JtLmNhbmNlbFwiKX1cbiAgICAgICAgICBvbkNsb3NlPXtoYW5kbGVDYW5jZWx9XG4gICAgICAgICAgZGlzYWJsZWQ9e2Zvcm1pay5pc1N1Ym1pdHRpbmd9XG4gICAgICAgIC8+XG4gICAgICA8L2Zvcm0+XG4gICAgPC8+XG4gICk7XG59O1xuXG5EZWxlZ2F0ZUZvcm0ucHJvcFR5cGVzID0ge1xuICBvblN1Ym1pdDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgRGVsZWdhdGVGb3JtO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94LCBMaW5rLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBDb3B5VGV4dCBmcm9tIFwiLi4vLi4vLi4vQ29weVRleHRcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgQXNzaWduSGVhZGVyID0gKHsgaW5Qcm9ncmVzcywgdGlja2V0LCB1c2VyRW1haWwsIG9uQ2xvc2UgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGFzc2lnbmVkVG9Zb3UgPSB0aWNrZXQ/Lm93bmVyPy5lbWFpbCA9PT0gdXNlckVtYWlsO1xuXG4gIGNvbnN0IGdldFNlY29uZGFyeVRpdGxlID0gKCkgPT4ge1xuICAgIGlmIChpblByb2dyZXNzID09PSBcIm1hbmFnZVwiKSB7XG4gICAgICByZXR1cm4gYCR7dChcInRpY2tldF9hc3NpZ24uaGVhZGVyX2Fzc2lnbi5kZWxlZ2F0ZWRcIil9ICR7XG4gICAgICAgIHRpY2tldC5vd25lci5maXJzdF9uYW1lXG4gICAgICB9ICR7dGlja2V0Lm93bmVyLmxhc3RfbmFtZX0uYDtcbiAgICB9XG5cbiAgICBpZiAoaW5Qcm9ncmVzcykge1xuICAgICAgY29uc3QgdXNlciA9IGFzc2lnbmVkVG9Zb3UgPyBcInlvdVwiIDogdGlja2V0Py5vd25lcj8uZW1haWw7XG4gICAgICByZXR1cm4gYCR7dChcInRpY2tldF9hc3NpZ24uaGVhZGVyX2Fzc2lnbi5hc3NpZ25lZF90b1wiKX0gJHt1c2VyfWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRpY2tldC50aWNrZXRfdHlwZS5uYW1lO1xuICB9O1xuXG4gIGNvbnN0IGdldEhlYWRlck5vdGUgPSAoKSA9PiB7XG4gICAgaWYgKGluUHJvZ3Jlc3MpIHtcbiAgICAgIGNvbnN0IHRyYW5zS2V5ID0gYXNzaWduZWRUb1lvdVxuICAgICAgICA/IFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfYXNzaWduLmFuc3dlcl95b3VyX2VxXCJcbiAgICAgICAgOiBcInRpY2tldF9hc3NpZ24uaGVhZGVyX2Fzc2lnbi5hbnN3ZXJfb3RoZXJzX2VxXCI7XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDw+XG4gICAgICAgICAge3QodHJhbnNLZXkpfVxuICAgICAgICAgIDxiciAvPlxuICAgICAgICAgIHsvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganN4LWExMXkvYW5jaG9yLWlzLXZhbGlkICovfVxuICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICBjb21wb25lbnQ9XCJidXR0b25cIlxuICAgICAgICAgICAgdmFyaWFudD1cImJvZHkxXCJcbiAgICAgICAgICAgIG9uQ2xpY2s9e29uQ2xvc2V9XG4gICAgICAgICAgICBzeD17eyBmb250V2VpZ2h0OiA3MDAsIG1hcmdpbjogXCIyMHB4IDAgMTBweFwiIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9hc3NpZ24uY29tcGxldGVfbGF0ZXJcIil9XG4gICAgICAgICAgPC9MaW5rPlxuICAgICAgICA8Lz5cbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFwiXCI7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLndyYXBwZXJ9PlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5wdXJjaGFzZWRCeVdyYXBwZXJ9PlxuICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTFcIiBndXR0ZXJCb3R0b20gY2xhc3NOYW1lPXtzdHlsZXMucHVyY2hhc2VkQnl9PlxuICAgICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfYXNzaWduLnB1cmNoYXNlZF9ieVwiKX17XCIgXCJ9XG4gICAgICAgICAge3RpY2tldD8ub3JkZXI/Lm93bmVyX2VtYWlsfVxuICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MVwiIGd1dHRlckJvdHRvbSBjbGFzc05hbWU9e3N0eWxlcy5vcmRlck5vfT5cbiAgICAgICAgICA8Q29weVRleHRcbiAgICAgICAgICAgIHRleHQ9e3RpY2tldD8ub3JkZXI/Lm51bWJlcn1cbiAgICAgICAgICAgIHJldmVyc2VkXG4gICAgICAgICAgICB3aWR0aD17MjUwfVxuICAgICAgICAgICAgdG9vbHRpcFRleHQ9e3QoXCJvcmRlcl9zdW1tYXJ5LmNvcHlfb3JkZXJfbnVtYmVyXCIpfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgIDwvQm94PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImg1XCIgZ3V0dGVyQm90dG9tPlxuICAgICAgICB7Z2V0U2Vjb25kYXJ5VGl0bGUoKX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgIDxUeXBvZ3JhcGh5XG4gICAgICAgIHZhcmlhbnQ9XCJib2R5MVwiXG4gICAgICAgIGd1dHRlckJvdHRvbVxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5oZWFkZXJOb3RlfVxuICAgICAgICBzeD17eyBjb2xvcjogXCJ0ZXh0LnNlY29uZGFyeVwiIH19XG4gICAgICA+XG4gICAgICAgIHtnZXRIZWFkZXJOb3RlKCl9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG4vLyBBZGRpbmcgcHJvcC10eXBlcyBmb3IgdHlwZS1jaGVja2luZ1xuQXNzaWduSGVhZGVyLnByb3BUeXBlcyA9IHtcbiAgaW5Qcm9ncmVzczogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICB0aWNrZXQ6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgdXNlckVtYWlsOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEFzc2lnbkhlYWRlcjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCwgTGluaywgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUaWNrZXREZXRhaWxzIH0gZnJvbSBcIi4uLy4uLy4uLy4uL2hvb2tzL3VzZVRpY2tldERldGFpbHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgUmVhc3NpZ25IZWFkZXIgPSAoeyBpblByb2dyZXNzLCB0aWNrZXQsIHVzZXJFbWFpbCwgb25DbG9zZSB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgYXNzaWduZWRUb1lvdSA9IHRpY2tldD8ub3duZXI/LmVtYWlsID09PSB1c2VyRW1haWw7XG4gIGNvbnN0IHsgYWxsb3dzRGVsZWdhdGUgfSA9IHVzZVRpY2tldERldGFpbHModGlja2V0KTtcblxuICBjb25zdCBnZXRTZWNvbmRhcnlUaXRsZSA9ICgpID0+IHtcbiAgICBjb25zdCB1c2VyID0gYXNzaWduZWRUb1lvdVxuICAgICAgPyB0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24ueW91cnNlbGZcIilcbiAgICAgIDogdGlja2V0Py5vd25lcj8uZW1haWw7XG5cbiAgICBpZiAoaW5Qcm9ncmVzcyA9PT0gXCJtYW5hZ2VcIikge1xuICAgICAgcmV0dXJuIGAke3QoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9yZWFzc2lnbi5kZWxlZ2F0ZWRcIil9ICR7XG4gICAgICAgIHRpY2tldC5vd25lci5maXJzdF9uYW1lXG4gICAgICB9ICR7dGlja2V0Lm93bmVyLmxhc3RfbmFtZX0uYDtcbiAgICB9XG5cbiAgICBpZiAoIWluUHJvZ3Jlc3MpIHtcbiAgICAgIHJldHVybiBgJHt0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24uYXNzaWduZWRfdG9cIil9ICR7dXNlcn1gO1xuICAgIH1cblxuICAgIHJldHVybiBgJHt0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24ucmVhc3NpZ25lZF90b1wiKX0gJHt1c2VyfWA7XG4gIH07XG5cbiAgY29uc3QgZ2V0SGVhZGVyTm90ZSA9ICgpID0+IHtcbiAgICBpZiAoIWluUHJvZ3Jlc3MpIHtcbiAgICAgIHJldHVybiBhbGxvd3NEZWxlZ2F0ZVxuICAgICAgICA/IHQoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9yZWFzc2lnbi5jaG9vc2Vfb3B0aW9uXCIpXG4gICAgICAgIDogdChcInRpY2tldF9hc3NpZ24uaGVhZGVyX3JlYXNzaWduLmNob29zZV9vcHRpb25fbm9fZGVsZWdhdGVcIik7XG4gICAgfVxuXG4gICAgY29uc3QgdHJhbnNLZXkgPSBhc3NpZ25lZFRvWW91XG4gICAgICA/IFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24uYW5zd2VyX3lvdXJfZXFcIlxuICAgICAgOiBcInRpY2tldF9hc3NpZ24uaGVhZGVyX3JlYXNzaWduLmFuc3dlcl9vdGhlcnNfZXFcIjtcblxuICAgIHJldHVybiAoXG4gICAgICA8PlxuICAgICAgICB7dCh0cmFuc0tleSl9XG4gICAgICAgIDxiciAvPlxuICAgICAgICB7LyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzeC1hMTF5L2FuY2hvci1pcy12YWxpZCAqL31cbiAgICAgICAgPExpbmtcbiAgICAgICAgICBjb21wb25lbnQ9XCJidXR0b25cIlxuICAgICAgICAgIHZhcmlhbnQ9XCJib2R5MVwiXG4gICAgICAgICAgb25DbGljaz17b25DbG9zZX1cbiAgICAgICAgICBzeD17eyBmb250V2VpZ2h0OiA3MDAsIG1hcmdpbjogXCIyMHB4IDAgMTBweFwiIH19XG4gICAgICAgID5cbiAgICAgICAgICB7dChcInRpY2tldF9hc3NpZ24uaGVhZGVyX3JlYXNzaWduLmNvbXBsZXRlX2xhdGVyXCIpfVxuICAgICAgICA8L0xpbms+XG4gICAgICA8Lz5cbiAgICApO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy53cmFwcGVyfT5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJoNVwiIGd1dHRlckJvdHRvbT5cbiAgICAgICAge2dldFNlY29uZGFyeVRpdGxlKCl9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICA8VHlwb2dyYXBoeVxuICAgICAgICB2YXJpYW50PVwiYm9keTFcIlxuICAgICAgICBndXR0ZXJCb3R0b21cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuaGVhZGVyTm90ZX1cbiAgICAgICAgc3g9e3sgY29sb3I6IFwidGV4dC5zZWNvbmRhcnlcIiB9fVxuICAgICAgPlxuICAgICAgICB7Z2V0SGVhZGVyTm90ZSgpfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgIDwvQm94PlxuICApO1xufTtcblxuLy8gQWRkaW5nIHByb3AtdHlwZXMgZm9yIHR5cGUtY2hlY2tpbmdcblJlYXNzaWduSGVhZGVyLnByb3BUeXBlcyA9IHtcbiAgaW5Qcm9ncmVzczogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICB0aWNrZXQ6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgdXNlckVtYWlsOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlYXNzaWduSGVhZGVyO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgVGV4dEZpZWxkLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZUZvcm1payB9IGZyb20gXCJmb3JtaWtcIjtcbmltcG9ydCAqIGFzIHl1cCBmcm9tIFwieXVwXCI7XG5cbmltcG9ydCBGb3JtRm9vdGVyIGZyb20gXCIuLi8uLi8uLi9Gb3JtRm9vdGVyXCI7XG5cbmNvbnN0IFJlYXNzaWduRm9ybSA9ICh7IG9uU3VibWl0LCBvbkNsb3NlIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGNvbnN0IGZvcm1payA9IHVzZUZvcm1payh7XG4gICAgaW5pdGlhbFZhbHVlczoge1xuICAgICAgbmV3X2F0dGVuZGVlX2VtYWlsOiBcIlwiLFxuICAgICAgcGVyc29uYWxfbWVzc2FnZTogXCJcIlxuICAgIH0sXG4gICAgdmFsaWRhdGlvblNjaGVtYTogeXVwLm9iamVjdCh7XG4gICAgICBuZXdfYXR0ZW5kZWVfZW1haWw6IHl1cFxuICAgICAgICAuc3RyaW5nKHQoXCJ2YWxpZGF0aW9uLmVtYWlsLnN0cmluZ1wiKSlcbiAgICAgICAgLmVtYWlsKHQoXCJ2YWxpZGF0aW9uLmVtYWlsLmZvcm1hdFwiKSlcbiAgICAgICAgLnJlcXVpcmVkKHQoXCJ2YWxpZGF0aW9uLmVtYWlsLnJlcXVpcmVkXCIpKSxcbiAgICAgIHBlcnNvbmFsX21lc3NhZ2U6IHl1cC5zdHJpbmcodChcInZhbGlkYXRpb24udGV4dC5zdHJpbmdcIikpXG4gICAgfSksXG4gICAgb25TdWJtaXQ6ICh2YWx1ZXMsIHsgcmVzZXRGb3JtIH0pID0+IHtcbiAgICAgIG9uU3VibWl0KHZhbHVlcyk7XG4gICAgICByZXNldEZvcm0oKTtcbiAgICB9XG4gIH0pO1xuXG4gIGNvbnN0IGhhbmRsZUNhbmNlbCA9ICgpID0+IHtcbiAgICBmb3JtaWsucmVzZXRGb3JtKCk7XG4gICAgb25DbG9zZSgpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJoNlwiIGd1dHRlckJvdHRvbT5cbiAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLnJlYXNzaWduX2Zvcm0udGl0bGVcIil9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTFcIiBndXR0ZXJCb3R0b20gc3g9e3sgY29sb3I6IFwidGV4dC5zZWNvbmRhcnlcIiB9fT5cbiAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLnJlYXNzaWduX2Zvcm0uYm9keVwiKX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgIDxmb3JtIG9uU3VibWl0PXtmb3JtaWsuaGFuZGxlU3VibWl0fSBub1ZhbGlkYXRlPlxuICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgbmFtZT1cIm5ld19hdHRlbmRlZV9lbWFpbFwiXG4gICAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLnJlYXNzaWduX2Zvcm0ubmV3X2F0dGVuZGVlX2VtYWlsXCIpfVxuICAgICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgICAgdmFsdWU9e2Zvcm1pay52YWx1ZXMubmV3X2F0dGVuZGVlX2VtYWlsfVxuICAgICAgICAgIG9uQ2hhbmdlPXtmb3JtaWsuaGFuZGxlQ2hhbmdlfVxuICAgICAgICAgIG9uQmx1cj17Zm9ybWlrLmhhbmRsZUJsdXJ9XG4gICAgICAgICAgZXJyb3I9e1xuICAgICAgICAgICAgZm9ybWlrLnRvdWNoZWQubmV3X2F0dGVuZGVlX2VtYWlsICYmXG4gICAgICAgICAgICBCb29sZWFuKGZvcm1pay5lcnJvcnMubmV3X2F0dGVuZGVlX2VtYWlsKVxuICAgICAgICAgIH1cbiAgICAgICAgICBoZWxwZXJUZXh0PXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLm5ld19hdHRlbmRlZV9lbWFpbCAmJlxuICAgICAgICAgICAgZm9ybWlrLmVycm9ycy5uZXdfYXR0ZW5kZWVfZW1haWxcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgLz5cbiAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIG5hbWU9XCJwZXJzb25hbF9tZXNzYWdlXCJcbiAgICAgICAgICBsYWJlbD17dChcInRpY2tldF9hc3NpZ24ucmVhc3NpZ25fZm9ybS5wZXJzb25hbF9tZXNzYWdlXCIpfVxuICAgICAgICAgIHZhbHVlPXtmb3JtaWsudmFsdWVzLnBlcnNvbmFsX21lc3NhZ2V9XG4gICAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgICBtdWx0aWxpbmVcbiAgICAgICAgICBtaW5Sb3dzPXs0fVxuICAgICAgICAgIG9uQ2hhbmdlPXtmb3JtaWsuaGFuZGxlQ2hhbmdlfVxuICAgICAgICAgIG9uQmx1cj17Zm9ybWlrLmhhbmRsZUJsdXJ9XG4gICAgICAgICAgZXJyb3I9e1xuICAgICAgICAgICAgZm9ybWlrLnRvdWNoZWQucGVyc29uYWxfbWVzc2FnZSAmJlxuICAgICAgICAgICAgQm9vbGVhbihmb3JtaWsuZXJyb3JzLnBlcnNvbmFsX21lc3NhZ2UpXG4gICAgICAgICAgfVxuICAgICAgICAgIGhlbHBlclRleHQ9e1xuICAgICAgICAgICAgZm9ybWlrLnRvdWNoZWQucGVyc29uYWxfbWVzc2FnZSAmJiBmb3JtaWsuZXJyb3JzLnBlcnNvbmFsX21lc3NhZ2VcbiAgICAgICAgICB9XG4gICAgICAgIC8+XG4gICAgICAgIDxGb3JtRm9vdGVyXG4gICAgICAgICAgc2F2ZUxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5yZWFzc2lnbl9mb3JtLnNhdmVcIil9XG4gICAgICAgICAgY2FuY2VsTGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLnJlYXNzaWduX2Zvcm0uY2FuY2VsXCIpfVxuICAgICAgICAgIG9uQ2xvc2U9e2hhbmRsZUNhbmNlbH1cbiAgICAgICAgICBkaXNhYmxlZD17Zm9ybWlrLmlzU3VibWl0dGluZ31cbiAgICAgICAgLz5cbiAgICAgIDwvZm9ybT5cbiAgICA8Lz5cbiAgKTtcbn07XG5cblJlYXNzaWduRm9ybS5wcm9wVHlwZXMgPSB7XG4gIG9uU3VibWl0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWFzc2lnbkZvcm07XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlQ29udGV4dCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7XG4gIGFzc2lnbkF0dGVuZGVlLFxuICBkZWxlZ2F0ZVRpY2tldCxcbiAgcmVhc3NpZ25UaWNrZXQsXG4gIHNhdmVFeHRyYVF1ZXN0aW9ucyxcbiAgdW5hc3NpZ25UaWNrZXRcbn0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCBSaWdodERyYXdlciBmcm9tIFwiLi4vUmlnaHREcmF3ZXJcIjtcbmltcG9ydCBUaWNrZXRGb3JtIGZyb20gXCIuLi9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9UaWNrZXRGb3JtXCI7XG5pbXBvcnQgQ3VzdG9tTm90aWZpY2F0aW9uQ29udGV4dCBmcm9tIFwiLi4vQ3VzdG9tTm90aWZpY2F0aW9uL0NvbnRleHRcIjtcbmltcG9ydCB7IHRyYW5zZm9ybUFud2Vyc0Zvcm1hdCB9IGZyb20gXCIuLi9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL3V0aWxzXCI7XG5pbXBvcnQgdXNlR2V0VGlja2V0IGZyb20gXCIuLi8uLi9ob29rcy91c2VHZXRUaWNrZXRcIjtcbmltcG9ydCBBc3NpZ25IZWFkZXIgZnJvbSBcIi4vY29tcG9uZW50cy9IZWFkZXIvQXNzaWduSGVhZGVyXCI7XG5pbXBvcnQgUmVhc3NpZ25IZWFkZXIgZnJvbSBcIi4vY29tcG9uZW50cy9IZWFkZXIvUmVhc3NpZ25IZWFkZXJcIjtcbmltcG9ydCBBc3NpZ25PcHRpb25zIGZyb20gXCIuL2NvbXBvbmVudHMvQXNzaWduT3B0aW9uc1wiO1xuaW1wb3J0IHsgVElDS0VUX0RSQVdFUl9JRCB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgVGlja2V0QXNzaWduID0gKHsgdGlja2V0SWQsIG9yZGVySWQsIG93bmVySWQsIG9wZW4sIG9uQ2xvc2UgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgeyBzdWNjZXNzTWVzc2FnZSwgZXJyb3JNZXNzYWdlIH0gPSB1c2VDb250ZXh0KFxuICAgIEN1c3RvbU5vdGlmaWNhdGlvbkNvbnRleHRcbiAgKTtcbiAgY29uc3QgW2Fzc2lnbk9wdGlvbiwgc2V0QXNzaWduT3B0aW9uXSA9IHVzZVN0YXRlKG51bGwpO1xuICBjb25zdCBbYXNzaWduYXRpb25JblByb2dyZXNzLCBzZXRBc3NpZ25hdGlvbkluUHJvZ3Jlc3NdID0gdXNlU3RhdGUoXCJcIik7XG4gIGNvbnN0IHtcbiAgICBzdW1taXQsXG4gICAgdXNlcjogeyB1c2VyUHJvZmlsZSB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlKTtcbiAgY29uc3QgeyB0aWNrZXQsIGV4dHJhUXVlc3Rpb25zIH0gPSB1c2VHZXRUaWNrZXQoXG4gICAgdGlja2V0SWQsXG4gICAgb3JkZXJJZCxcbiAgICBvd25lcklkLFxuICAgIG9wZW5cbiAgKTtcbiAgY29uc3QgaXNVc2VyT3JkZXJPd25lciA9IHRpY2tldD8ub3JkZXI/Lm93bmVyX2lkID09PSB1c2VyUHJvZmlsZT8uaWQ7XG4gIGNvbnN0IGlzVXNlclRpY2tldE93bmVyID0gdGlja2V0Py5vd25lcj8uZW1haWwgPT09IHVzZXJQcm9maWxlPy5lbWFpbDtcbiAgY29uc3QgY2FuRWRpdFRpY2tldERhdGEgPVxuICAgIChpc1VzZXJUaWNrZXRPd25lciB8fCBpc1VzZXJPcmRlck93bmVyKSAmJlxuICAgIHN1bW1pdC5hbGxvd191cGRhdGVfYXR0ZW5kZWVfZXh0cmFfcXVlc3Rpb25zO1xuXG4gIGNvbnN0IG9uQ2xvc2VFUUZvcm0gPSAoKSA9PiB7XG4gICAgc2V0QXNzaWduYXRpb25JblByb2dyZXNzKFwiXCIpO1xuICAgIG9uQ2xvc2UoKTtcbiAgfTtcblxuICBjb25zdCBvbkFzc2lnbiA9IChlbWFpbCwgbWVzc2FnZSA9IFwiXCIpID0+IHtcbiAgICBpZiAob3duZXJJZCkge1xuICAgICAgZGlzcGF0Y2gocmVhc3NpZ25UaWNrZXQob3JkZXJJZCwgdGlja2V0SWQsIGVtYWlsLCBtZXNzYWdlKSkudGhlbigoKSA9PiB7XG4gICAgICAgIHNldEFzc2lnbmF0aW9uSW5Qcm9ncmVzcyhgJHthc3NpZ25PcHRpb259YCk7XG4gICAgICAgIHNldEFzc2lnbk9wdGlvbihudWxsKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBkaXNwYXRjaChhc3NpZ25BdHRlbmRlZShvcmRlcklkLCB0aWNrZXRJZCwgZW1haWwpKS50aGVuKCgpID0+IHtcbiAgICAgICAgc2V0QXNzaWduYXRpb25JblByb2dyZXNzKGAke2Fzc2lnbk9wdGlvbn1gKTtcbiAgICAgICAgc2V0QXNzaWduT3B0aW9uKG51bGwpO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IG9uVW5Bc3NpZ24gPSAoKSA9PiB7XG4gICAgZGlzcGF0Y2godW5hc3NpZ25UaWNrZXQob3JkZXJJZCwgdGlja2V0SWQpKS50aGVuKCgpID0+IHtcbiAgICAgIG9uQ2xvc2VFUUZvcm0oKTtcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBvbkRlbGVnYXRlID0gKGZpcnN0TmFtZSwgbGFzdE5hbWUsIGVtYWlsKSA9PiB7XG4gICAgZGlzcGF0Y2goXG4gICAgICBkZWxlZ2F0ZVRpY2tldChvcmRlcklkLCB0aWNrZXRJZCwgZmlyc3ROYW1lLCBsYXN0TmFtZSwgZW1haWwpXG4gICAgKS50aGVuKCgpID0+IHtcbiAgICAgIHNldEFzc2lnbmF0aW9uSW5Qcm9ncmVzcyhgJHthc3NpZ25PcHRpb259YCk7XG4gICAgICBzZXRBc3NpZ25PcHRpb24obnVsbCk7XG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3Qgb25TYXZlRVEgPSAodmFsKSA9PiB7XG4gICAgY29uc3QgYW5zd2VycyA9IHRyYW5zZm9ybUFud2Vyc0Zvcm1hdCh2YWwpO1xuXG4gICAgcmV0dXJuIGRpc3BhdGNoKHNhdmVFeHRyYVF1ZXN0aW9ucyh0aWNrZXQsIGFuc3dlcnMpKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICBvbkNsb3NlRVFGb3JtKCk7XG4gICAgICAgIHN1Y2Nlc3NNZXNzYWdlKHQoXCJ0aWNrZXRfYXNzaWduLnNhdmluZ19zdWNjZXNzXCIpKTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoKSA9PiB7XG4gICAgICAgIGVycm9yTWVzc2FnZSh0KFwidGlja2V0X2Fzc2lnbi5zYXZpbmdfZXJyb3JcIikpO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcbiAgICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IHRpdGxlID0gb3duZXJJZFxuICAgID8gdChcInRpY2tldF9hc3NpZ24uaGVhZGVyX3JlYXNzaWduLnRpdGxlXCIpXG4gICAgOiB0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfYXNzaWduLnRpdGxlXCIpO1xuICBjb25zdCBIZWFkZXIgPSBvd25lcklkID8gUmVhc3NpZ25IZWFkZXIgOiBBc3NpZ25IZWFkZXI7XG5cbiAgcmV0dXJuIChcbiAgICA8UmlnaHREcmF3ZXJcbiAgICAgIGlkPXtUSUNLRVRfRFJBV0VSX0lEfVxuICAgICAgdGl0bGU9e3RpdGxlfVxuICAgICAgb3Blbj17b3Blbn1cbiAgICAgIG9uQ2xvc2U9e29uQ2xvc2VFUUZvcm19XG4gICAgPlxuICAgICAge3RpY2tldCAmJiBleHRyYVF1ZXN0aW9ucyAmJiAoXG4gICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0UmVhc3NpZ25Db250YWluZXJ9PlxuICAgICAgICAgIDxIZWFkZXJcbiAgICAgICAgICAgIGluUHJvZ3Jlc3M9e2Fzc2lnbmF0aW9uSW5Qcm9ncmVzc31cbiAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgdXNlckVtYWlsPXt1c2VyUHJvZmlsZS5lbWFpbH1cbiAgICAgICAgICAgIG9uQ2xvc2U9e29uQ2xvc2VFUUZvcm19XG4gICAgICAgICAgLz5cblxuICAgICAgICAgIHthc3NpZ25hdGlvbkluUHJvZ3Jlc3MgPyAoXG4gICAgICAgICAgICA8VGlja2V0Rm9ybVxuICAgICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICAgIGV4dHJhUXVlc3Rpb25zPXtleHRyYVF1ZXN0aW9uc31cbiAgICAgICAgICAgICAgY2FuRWRpdD17Y2FuRWRpdFRpY2tldERhdGF9XG4gICAgICAgICAgICAgIG9uU3VibWl0PXtvblNhdmVFUX1cbiAgICAgICAgICAgICAgb25DbG9zZT17b25DbG9zZUVRRm9ybX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDxBc3NpZ25PcHRpb25zXG4gICAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgICB1c2VyUHJvZmlsZT17dXNlclByb2ZpbGV9XG4gICAgICAgICAgICAgIGFzc2lnbk9wdGlvbj17YXNzaWduT3B0aW9ufVxuICAgICAgICAgICAgICBzZXRBc3NpZ25PcHRpb249e3NldEFzc2lnbk9wdGlvbn1cbiAgICAgICAgICAgICAgb25Bc3NpZ249e29uQXNzaWdufVxuICAgICAgICAgICAgICBvblVuQXNzaWduPXtvblVuQXNzaWdufVxuICAgICAgICAgICAgICBvbkRlbGVnYXRlPXtvbkRlbGVnYXRlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgICA8L0JveD5cbiAgICAgICl9XG4gICAgPC9SaWdodERyYXdlcj5cbiAgKTtcbn07XG5cblRpY2tldEFzc2lnbi5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldElkOiBQcm9wVHlwZXMubnVtYmVyLFxuICBvcmRlcklkOiBQcm9wVHlwZXMubnVtYmVyLFxuICBvd25lcklkOiBQcm9wVHlwZXMubnVtYmVyLFxuICBvcGVuOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldEFzc2lnbjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IFRleHRGaWVsZCwgQXV0b2NvbXBsZXRlLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHF1ZXJ5UmVnaXN0cmF0aW9uQ29tcGFuaWVzIH0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvcXVlcnktYWN0aW9uc1wiO1xuaW1wb3J0IHsgVElDS0VUX0FUVEVOREVFX0tFWVMgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzXCI7XG5cbmNvbnN0IENvbXBhbnlGaWVsZCA9ICh7IGZvcm1paywgc3VtbWl0SWQsIGlzUmVxdWlyZWQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtpbnB1dFZhbHVlLCBzZXRJbnB1dFZhbHVlXSA9IFJlYWN0LnVzZVN0YXRlKFwiXCIpO1xuICBjb25zdCBbb3B0aW9ucywgc2V0T3B0aW9uc10gPSBSZWFjdC51c2VTdGF0ZShbXSk7XG4gIGNvbnN0IHtcbiAgICBlcnJvcnMsXG4gICAgdmFsdWVzLFxuICAgIHRvdWNoZWQsXG4gICAgc2V0RmllbGRUb3VjaGVkLFxuICAgIHNldEZpZWxkVmFsdWUsXG4gICAgaW5pdGlhbFZhbHVlc1xuICB9ID0gZm9ybWlrO1xuICBjb25zdCBuYW1lID0gVElDS0VUX0FUVEVOREVFX0tFWVMuY29tcGFueTtcbiAgY29uc3QgdmFsdWUgPSB2YWx1ZXNbbmFtZV07XG4gIGNvbnN0IGRpc2FibGVkID0gISFpbml0aWFsVmFsdWVzW25hbWVdO1xuICBjb25zdCBlcnJvciA9IHRvdWNoZWRbbmFtZV0gJiYgQm9vbGVhbihlcnJvcnNbbmFtZV0pO1xuICBjb25zdCBoZWxwZXJUZXh0ID0gdG91Y2hlZFtuYW1lXSAmJiBlcnJvcnNbbmFtZV07XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaW5wdXRWYWx1ZSA9PT0gXCJcIikge1xuICAgICAgc2V0T3B0aW9ucyh2YWx1ZSA/IFt2YWx1ZV0gOiBbXSk7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHF1ZXJ5UmVnaXN0cmF0aW9uQ29tcGFuaWVzKHN1bW1pdElkLCBpbnB1dFZhbHVlLCAocmVzdWx0cykgPT4ge1xuICAgICAgbGV0IG5ld09wdGlvbnMgPSBbXTtcblxuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIG5ld09wdGlvbnMgPSBbdmFsdWVdO1xuICAgICAgfVxuXG4gICAgICBpZiAocmVzdWx0cykge1xuICAgICAgICBuZXdPcHRpb25zID0gWy4uLm5ld09wdGlvbnMsIC4uLnJlc3VsdHNdO1xuICAgICAgfVxuXG4gICAgICBzZXRPcHRpb25zKG5ld09wdGlvbnMpO1xuICAgIH0pO1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH0sIFt2YWx1ZSwgaW5wdXRWYWx1ZV0pO1xuXG4gIHJldHVybiAoXG4gICAgPEF1dG9jb21wbGV0ZVxuICAgICAgbmFtZT17bmFtZX1cbiAgICAgIG9wdGlvbnM9e29wdGlvbnN9XG4gICAgICBhdXRvQ29tcGxldGVcbiAgICAgIGZyZWVTb2xvXG4gICAgICBpbmNsdWRlSW5wdXRJbkxpc3RcbiAgICAgIGZpbHRlclNlbGVjdGVkT3B0aW9uc1xuICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgb25CbHVyPXsoKSA9PiBzZXRGaWVsZFRvdWNoZWQobmFtZSwgdHJ1ZSwgdHJ1ZSl9XG4gICAgICBnZXRPcHRpb25MYWJlbD17KG9wdGlvbikgPT4ge1xuICAgICAgICAvLyBWYWx1ZSBzZWxlY3RlZCB3aXRoIGVudGVyLCByaWdodCBmcm9tIHRoZSBpbnB1dFxuICAgICAgICBpZiAodHlwZW9mIG9wdGlvbiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgIHJldHVybiBvcHRpb247XG4gICAgICAgIH1cbiAgICAgICAgLy8gQWRkIFwieHh4XCIgb3B0aW9uIGNyZWF0ZWQgZHluYW1pY2FsbHlcbiAgICAgICAgaWYgKG9wdGlvbi5pbnB1dFZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuIG9wdGlvbi5pbnB1dFZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIC8vIFJlZ3VsYXIgb3B0aW9uXG4gICAgICAgIHJldHVybiBvcHRpb24ubmFtZTtcbiAgICAgIH19XG4gICAgICBvbkNoYW5nZT17KGV2ZW50LCBuZXdWYWx1ZSkgPT4ge1xuICAgICAgICBjb25zdCB0bXBWYWx1ZSA9IG5ld1ZhbHVlPy5pbnB1dFZhbHVlIHx8IG5ld1ZhbHVlO1xuXG4gICAgICAgIHNldE9wdGlvbnModG1wVmFsdWUgPyBbdG1wVmFsdWUsIC4uLm9wdGlvbnNdIDogb3B0aW9ucyk7XG4gICAgICAgIHNldEZpZWxkVmFsdWUobmFtZSwgdG1wVmFsdWUpO1xuICAgICAgfX1cbiAgICAgIG9uSW5wdXRDaGFuZ2U9eyhldmVudCwgbmV3SW5wdXRWYWx1ZSkgPT4ge1xuICAgICAgICBzZXRJbnB1dFZhbHVlKG5ld0lucHV0VmFsdWUpO1xuICAgICAgfX1cbiAgICAgIGZpbHRlck9wdGlvbnM9eyhvcHRpb25zLCBwYXJhbXMpID0+IHtcbiAgICAgICAgY29uc3QgeyBpbnB1dFZhbHVlIH0gPSBwYXJhbXM7XG4gICAgICAgIGNvbnN0IGZpbHRlcmVkID0gWy4uLm9wdGlvbnNdO1xuICAgICAgICAvLyBTdWdnZXN0IHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2YWx1ZVxuICAgICAgICBjb25zdCBpc0V4aXN0aW5nID0gb3B0aW9ucy5zb21lKChvcHRpb24pID0+IGlucHV0VmFsdWUgPT09IG9wdGlvbi5uYW1lKTtcbiAgICAgICAgaWYgKGlucHV0VmFsdWUgIT09IFwiXCIgJiYgIWlzRXhpc3RpbmcpIHtcbiAgICAgICAgICBmaWx0ZXJlZC5wdXNoKHtcbiAgICAgICAgICAgIGlucHV0VmFsdWUsXG4gICAgICAgICAgICBuYW1lOiBgU2VsZWN0IFwiJHtpbnB1dFZhbHVlfVwiYFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZpbHRlcmVkO1xuICAgICAgfX1cbiAgICAgIHJlbmRlcklucHV0PXsocGFyYW1zKSA9PiAoXG4gICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgIHsuLi5wYXJhbXN9XG4gICAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfZGV0YWlsLmF0dGVuZGVlX2NvbXBhbnlcIil9XG4gICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgICAgaGVscGVyVGV4dD17aGVscGVyVGV4dH1cbiAgICAgICAgICBlcnJvcj17ZXJyb3J9XG4gICAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgICByZW5kZXJPcHRpb249eyhwcm9wcywgb3B0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IHsga2V5LCAuLi5vcHRpb25Qcm9wcyB9ID0gcHJvcHM7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmdcbiAgICAgICAgICA8bGkga2V5PXtrZXl9IHsuLi5vcHRpb25Qcm9wc30+XG4gICAgICAgICAgICA8VHlwb2dyYXBoeVxuICAgICAgICAgICAgICB2YXJpYW50PVwiYm9keTJcIlxuICAgICAgICAgICAgICBzeD17eyBmb250U2l6ZTogXCIxZW1cIiwgY29sb3I6IFwidGV4dC5zZWNvbmRhcnlcIiB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7b3B0aW9uLm5hbWV9XG4gICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgPC9saT5cbiAgICAgICAgKTtcbiAgICAgIH19XG4gICAgLz5cbiAgKTtcbn07XG5cbkNvbXBhbnlGaWVsZC5wcm9wVHlwZXMgPSB7XG4gIGZvcm1pazogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBzdW1taXRJZDogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDb21wYW55RmllbGQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBCb3gsXG4gIENoZWNrYm94LFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgRm9ybUhlbHBlclRleHRcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBSYXdIVE1MIGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL2NvbXBvbmVudHMvcmF3LWh0bWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IFRJQ0tFVF9BVFRFTkRFRV9LRVlTIH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50c1wiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFJlZ2lzdHJhdGlvbkRpc2NsYWltZXIgPSAoe1xuICBkaXNjbGFpbWVyLFxuICBmb3JtaWssXG4gIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgaXNSZXF1aXJlZCA9IHRydWVcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBuYW1lID0gVElDS0VUX0FUVEVOREVFX0tFWVMuZGlzY2xhaW1lckFjY2VwdGVkO1xuICBjb25zdCB7IGVycm9ycywgdmFsdWVzLCB0b3VjaGVkLCBoYW5kbGVDaGFuZ2UsIGhhbmRsZUJsdXIgfSA9IGZvcm1paztcbiAgY29uc3QgdmFsdWUgPSB2YWx1ZXNbbmFtZV07XG4gIGNvbnN0IGVycm9yID0gdG91Y2hlZFtuYW1lXSAmJiBCb29sZWFuKGVycm9yc1tuYW1lXSk7XG4gIGNvbnN0IGhlbHBlclRleHQgPSB0b3VjaGVkW25hbWVdICYmIGVycm9yc1tuYW1lXTtcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMud3JhcHBlcn0+XG4gICAgICA8UmF3SFRNTD57ZGlzY2xhaW1lcn08L1Jhd0hUTUw+XG4gICAgICA8Rm9ybUNvbnRyb2wgZnVsbFdpZHRoIGVycm9yPXtlcnJvcn0+XG4gICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgbmFtZT17bmFtZX1cbiAgICAgICAgICAgICAgY2hlY2tlZD17ISF2YWx1ZX1cbiAgICAgICAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLmV4dHJhX3F1ZXN0aW9uc19mb3JtLmRpc2NsYWltZXJfbGFiZWxcIil9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICAgIG9uQmx1cj17aGFuZGxlQmx1cn1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgfVxuICAgICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5leHRyYV9xdWVzdGlvbnNfZm9ybS5kaXNjbGFpbWVyX2xhYmVsXCIpfVxuICAgICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICAvPlxuICAgICAgICB7ZXJyb3IgJiYgPEZvcm1IZWxwZXJUZXh0PntoZWxwZXJUZXh0ID8/IFwiIFwifTwvRm9ybUhlbHBlclRleHQ+fVxuICAgICAgPC9Gb3JtQ29udHJvbD5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cblJlZ2lzdHJhdGlvbkRpc2NsYWltZXIucHJvcFR5cGVzID0ge1xuICBkaXNjbGFpbWVyOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIGZvcm1pazogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgaXNSZXF1aXJlZDogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlZ2lzdHJhdGlvbkRpc2NsYWltZXI7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgUVJDb2RlIGZyb20gXCJyZWFjdC1xci1jb2RlXCI7XG5pbXBvcnQgeyBCb3gsIEJ1dHRvbiwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQge1xuICBFbWFpbE91dGxpbmVkIGFzIEVtYWlsSWNvbixcbiAgRmlsZURvd25sb2FkT3V0bGluZWQgYXMgRG93bmxvYWRJY29uXG59IGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsXCI7XG5pbXBvcnQgQ29weVRleHQgZnJvbSBcIi4uLy4uLy4uL0NvcHlUZXh0XCI7XG5pbXBvcnQgeyB1c2VUaWNrZXREZXRhaWxzIH0gZnJvbSBcIi4uLy4uLy4uLy4uL2hvb2tzL3VzZVRpY2tldERldGFpbHNcIjtcbmltcG9ydCB7IGdldFRpY2tldFBERiwgcmVzZW5kTm90aWZpY2F0aW9uIH0gZnJvbSBcIi4uLy4uLy4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCB7IE1JTExJU0VDX1RPX1NFQywgVFdPX0lURU0gfSBmcm9tIFwiLi4vLi4vLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4uLy4uL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBUaWNrZXREZXRhaWxIZWFkZXIgPSAoeyB0aWNrZXQsIGlzVmlydHVhbFN1bW1pdCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgeyBpc0NvbXBsZXRlIH0gPSB1c2VUaWNrZXREZXRhaWxzKHRpY2tldCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgW3NlbnRDb25maXJtYXRpb24sIHNldFNlbnRDb25maXJtYXRpb25dID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gIGNvbnN0IGRvd25sb2FkVGlja2V0UGRmID0gKCkgPT4ge1xuICAgIGRpc3BhdGNoKGdldFRpY2tldFBERih0aWNrZXQpKTtcbiAgfTtcblxuICBjb25zdCBvblNlbmRFbWFpbCA9ICgpID0+IHtcbiAgICBkaXNwYXRjaChyZXNlbmROb3RpZmljYXRpb24odGlja2V0KSkudGhlbigoKSA9PiB7XG4gICAgICBzZXRTZW50Q29uZmlybWF0aW9uKHRydWUpO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHNldFNlbnRDb25maXJtYXRpb24oZmFsc2UpO1xuICAgICAgfSwgTUlMTElTRUNfVE9fU0VDICogVFdPX0lURU0pO1xuICAgIH0pO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5oZWFkZXJ9PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImg0XCIgZ3V0dGVyQm90dG9tIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlfT5cbiAgICAgICAge3RpY2tldD8udGlja2V0X3R5cGU/Lm5hbWV9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTJcIiBndXR0ZXJCb3R0b20gY2xhc3NOYW1lPXtzdHlsZXMuc3VidGl0bGV9PlxuICAgICAgICB7dChcInRpY2tldF9kZXRhaWwucHVyY2hhc2VkX2J5XCIpfSB7dGlja2V0Py5vcmRlcj8ub3duZXJfZW1haWx9XG4gICAgICA8L1R5cG9ncmFwaHk+XG5cbiAgICAgIHtpc0NvbXBsZXRlICYmIChcbiAgICAgICAgPD5cbiAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnFyQ29kZX0+XG4gICAgICAgICAgICA8UVJDb2RlXG4gICAgICAgICAgICAgIHNpemU9ezI1Nn1cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IFwiYXV0b1wiLFxuICAgICAgICAgICAgICAgIG1heFdpZHRoOiBcIjEwMCVcIixcbiAgICAgICAgICAgICAgICB3aWR0aDogXCIxMDAlXCJcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgdmFsdWU9e3RpY2tldC5xcl9jb2RlfVxuICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI1NiAyNTZcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgICA8cCBjbGFzc05hbWU9e3N0eWxlcy5zdGF0dXN9Pnt0KFwidGlja2V0X2RldGFpbC5zdGF0dXNcIil9PC9wPlxuICAgICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MlwiIGd1dHRlckJvdHRvbSBjbGFzc05hbWU9e3N0eWxlcy5xck5vdGV9PlxuICAgICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLnFyX25vdGVcIil9XG4gICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICA8Lz5cbiAgICAgICl9XG5cbiAgICAgIHshaXNWaXJ0dWFsU3VtbWl0ICYmIGlzQ29tcGxldGUgJiYgKFxuICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmFjdGlvbkJ1dHRvbnNDb250YWluZXJ9PlxuICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmRvd25sb2FkQnRufVxuICAgICAgICAgICAgdmFyaWFudD1cImNvbnRhaW5lZFwiXG4gICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgb25DbGljaz17ZG93bmxvYWRUaWNrZXRQZGZ9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPERvd25sb2FkSWNvbiBmb250U2l6ZT1cImxhcmdlXCIgLz5cbiAgICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5kb3dubG9hZFwiKX1cbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5zZW5kQnRufSAke3NlbnRDb25maXJtYXRpb24gJiYgc3R5bGVzLnNlbnR9YH1cbiAgICAgICAgICAgIG9uQ2xpY2s9e29uU2VuZEVtYWlsfVxuICAgICAgICAgICAgZGlzYWJsZWQ9e3NlbnRDb25maXJtYXRpb259XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPEVtYWlsSWNvbiBmb250U2l6ZT1cImxhcmdlXCIgLz5cbiAgICAgICAgICAgIHtzZW50Q29uZmlybWF0aW9uXG4gICAgICAgICAgICAgID8gdChcInRpY2tldF9kZXRhaWwuc2VudFwiKVxuICAgICAgICAgICAgICA6IHQoXCJ0aWNrZXRfZGV0YWlsLnNlbmRcIil9XG4gICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIDwvQm94PlxuICAgICAgKX1cblxuICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5vcmRlck51bWJlcn0+XG4gICAgICAgIDxDb3B5VGV4dFxuICAgICAgICAgIHRleHQ9e3RpY2tldD8ub3JkZXI/Lm51bWJlcn1cbiAgICAgICAgICByZXZlcnNlZFxuICAgICAgICAgIHdpZHRoPXsxNTB9XG4gICAgICAgICAgdG9vbHRpcFRleHQ9e3QoXCJvcmRlcl9zdW1tYXJ5LmNvcHlfb3JkZXJfbnVtYmVyXCIpfVxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXREZXRhaWxIZWFkZXI7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3gsIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlRm9ybWlrIH0gZnJvbSBcImZvcm1pa1wiO1xuaW1wb3J0IEV4dHJhUXVlc3Rpb25zRmllbGRzIGZyb20gXCIuLi8uLi8uLi9FeHRyYVF1ZXN0aW9uc0ZpZWxkc1wiO1xuXG5pbXBvcnQge1xuICBnZXRUeXBlVmFsdWUsXG4gIHRvU2x1Z1xufSBmcm9tIFwiLi4vLi4vLi4vRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy91dGlsc1wiO1xuXG5pbXBvcnQgVGlja2V0T3duZXJGaWVsZHMgZnJvbSBcIi4uL1RpY2tldE93bmVyRmllbGRzXCI7XG5pbXBvcnQgUmVnaXN0cmF0aW9uRGlzY2xhaW1lciBmcm9tIFwiLi4vUmVnaXN0cmF0aW9uRGlzY2xhaW1lci9SZWdpc3RyYXRpb25EaXNjbGFpbWVyXCI7XG5pbXBvcnQgRm9ybUZvb3RlciBmcm9tIFwiLi4vLi4vLi4vRm9ybUZvb3RlclwiO1xuaW1wb3J0IHVzZVNjcm9sbFRvRXJyb3IgZnJvbSBcIi4uLy4uLy4uLy4uL2hvb2tzL3VzZVNjcm9sbFRvRXJyb3JcIjtcbmltcG9ydCB7XG4gIHBhcnNlQW5zd2VycyxcbiAgYnVpbGRWYWxpZGF0aW9uU2NoZW1hXG59IGZyb20gXCIuLi8uLi8uLi8uLi91dGlscy90aWNrZXRVdGlsc1wiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4uLy4uL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBUaWNrZXRGb3JtID0gKHtcbiAgdGlja2V0LFxuICBleHRyYVF1ZXN0aW9ucyxcbiAgc3VtbWl0LFxuICBjYW5FZGl0LFxuICBvblN1Ym1pdCxcbiAgb25DbG9zZVxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGFuc3dlcnMgPSB0aWNrZXQ/Lm93bmVyPy5leHRyYV9xdWVzdGlvbnMucmVkdWNlKChyZXMsIGFucykgPT4ge1xuICAgIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhhbnMucXVlc3Rpb24ubmFtZSwgYW5zLnF1ZXN0aW9uLmlkKTtcbiAgICByZXNbcXVlc3Rpb25TbHVnXSA9IGdldFR5cGVWYWx1ZShhbnMudmFsdWUsIGFucy5xdWVzdGlvbi50eXBlKTtcbiAgICByZXR1cm4gcmVzO1xuICB9LCB7fSk7XG5cbiAgY29uc3QgZm9ybWlrID0gdXNlRm9ybWlrKHtcbiAgICBpbml0aWFsVmFsdWVzOiBwYXJzZUFuc3dlcnMoXG4gICAgICB0aWNrZXQub3duZXIsXG4gICAgICBleHRyYVF1ZXN0aW9ucyxcbiAgICAgIGFuc3dlcnMsXG4gICAgICB0cnVlLFxuICAgICAgdHJ1ZVxuICAgICksXG4gICAgdmFsaWRhdGlvblNjaGVtYTogYnVpbGRWYWxpZGF0aW9uU2NoZW1hKFxuICAgICAgZXh0cmFRdWVzdGlvbnMsXG4gICAgICB0cnVlLFxuICAgICAgc3VtbWl0LnJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX21hbmRhdG9yeVxuICAgICksXG4gICAgb25TdWJtaXQ6ICh2YWx1ZXMpID0+IHtcbiAgICAgIGNvbnN0IHJlbGV2YW50QW5zd2VycyA9IHBhcnNlQW5zd2VycyhcbiAgICAgICAgdGlja2V0Lm93bmVyLFxuICAgICAgICBleHRyYVF1ZXN0aW9ucyxcbiAgICAgICAgdmFsdWVzLFxuICAgICAgICB0cnVlLFxuICAgICAgICB0cnVlLFxuICAgICAgICB0cnVlXG4gICAgICApO1xuXG4gICAgICByZXR1cm4gb25TdWJtaXQocmVsZXZhbnRBbnN3ZXJzKTtcbiAgICB9LFxuICAgIGVuYWJsZVJlaW5pdGlhbGl6ZTogdHJ1ZVxuICB9KTtcblxuICAvLyBjb25zb2xlLmxvZyhcIlNVTU1JVDogXCIsIHN1bW1pdCk7XG4gIC8vIGNvbnNvbGUubG9nKFwiVElDS0VUOiBcIiwgdGlja2V0KTtcbiAgLy8gY29uc29sZS5sb2coXCJRVUVTVElVT05zOiBcIiwgZXh0cmFRdWVzdGlvbnMpO1xuICAvLyBjb25zb2xlLmxvZyhcIkFOU1dFUlM6IFwiLCBhbnN3ZXJzKTtcbiAgLy8gY29uc29sZS5sb2coXCJFUlJPUnM6IFwiLCBmb3JtaWsuZXJyb3JzKTtcbiAgLy8gY29uc29sZS5sb2coXCJWQUxVRVM6IFwiLCBmb3JtaWsudmFsdWVzKTtcbiAgLy8gY29uc29sZS5sb2coXCJJTklUSUFMOiBcIiwgZm9ybWlrLmluaXRpYWxWYWx1ZXMpO1xuICAvLyBjb25zb2xlLmxvZyhcIlRPVUNIRUQ6IFwiLCBmb3JtaWsudG91Y2hlZCk7XG5cbiAgLy8gU0NST0xMIFRPIEVSUk9SXG4gIHVzZVNjcm9sbFRvRXJyb3IoZm9ybWlrKTtcblxuICByZXR1cm4gKFxuICAgIDxmb3JtIG9uU3VibWl0PXtmb3JtaWsuaGFuZGxlU3VibWl0fSBub1ZhbGlkYXRlPlxuICAgICAgPFRpY2tldE93bmVyRmllbGRzXG4gICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICBpc0RlbGVnYXRlZD17ISF0aWNrZXQub3duZXI/Lm1hbmFnZXJfaWR9XG4gICAgICAgIHN1bW1pdElkPXtzdW1taXQuaWR9XG4gICAgICAgIGRpc2FibGVkPXshY2FuRWRpdH1cbiAgICAgIC8+XG5cbiAgICAgIHtleHRyYVF1ZXN0aW9ucz8ubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgIDxCb3g+XG4gICAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkyXCIgY2xhc3NOYW1lPXtzdHlsZXMuYWRkaXRpb25hbERldGFpbHN9PlxuICAgICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLmFkaXRpb25hbF9kZXRhaWxzXCIpfVxuICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICA8RXh0cmFRdWVzdGlvbnNGaWVsZHNcbiAgICAgICAgICAgIGV4dHJhUXVlc3Rpb25zPXtleHRyYVF1ZXN0aW9uc31cbiAgICAgICAgICAgIG9yaWdpbmFsQW5zd2Vycz17YW5zd2Vyc31cbiAgICAgICAgICAgIGFsbG93RWRpdD17Y2FuRWRpdH1cbiAgICAgICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvQm94PlxuICAgICAgKX1cblxuICAgICAge3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9jb250ZW50ICYmIChcbiAgICAgICAgPFJlZ2lzdHJhdGlvbkRpc2NsYWltZXJcbiAgICAgICAgICBmb3JtaWs9e2Zvcm1pa31cbiAgICAgICAgICBkaXNjbGFpbWVyPXtzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfY29udGVudH1cbiAgICAgICAgICBpc1JlcXVpcmVkPXtzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfbWFuZGF0b3J5fVxuICAgICAgICAgIGlzRGlzYWJsZWQ9eyFjYW5FZGl0fVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIDxGb3JtRm9vdGVyXG4gICAgICAgIHNhdmVMYWJlbD17dChcInRpY2tldF9kZXRhaWwuc2F2ZVwiKX1cbiAgICAgICAgY2FuY2VsTGFiZWw9e3QoXCJ0aWNrZXRfZGV0YWlsLmNhbmNlbFwiKX1cbiAgICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgICAgZGlzYWJsZWQ9e2Zvcm1pay5pc1N1Ym1pdHRpbmd9XG4gICAgICAvPlxuICAgIDwvZm9ybT5cbiAgKTtcbn07XG5cblRpY2tldEZvcm0ucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIGV4dHJhUXVlc3Rpb25zOiBQcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGNhbkVkaXQ6IFByb3BUeXBlcy5ib29sLFxuICBvblN1Ym1pdDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0Rm9ybTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEJveCwgVGV4dEZpZWxkLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgVElDS0VUX0FUVEVOREVFX0tFWVMgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgQ29tcGFueUZpZWxkIGZyb20gXCIuLi9Db21wYW55RmllbGRcIjtcblxuY29uc3QgVGlja2V0T3duZXJGaWVsZHMgPSAoeyBmb3JtaWssIHN1bW1pdElkLCBkaXNhYmxlZCwgaXNEZWxlZ2F0ZWQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IHsgZXJyb3JzLCB2YWx1ZXMsIHRvdWNoZWQsIGhhbmRsZUNoYW5nZSwgaGFuZGxlQmx1ciwgaW5pdGlhbFZhbHVlcyB9ID1cbiAgICBmb3JtaWs7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLndyYXBwZXJ9PlxuICAgICAgPFRleHRGaWVsZFxuICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgbmFtZT17VElDS0VUX0FUVEVOREVFX0tFWVMuZW1haWx9XG4gICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2RldGFpbC5lbWFpbFwiKX1cbiAgICAgICAgZGlzYWJsZWRcbiAgICAgICAgdmFsdWU9e3ZhbHVlc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbF19XG4gICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAvPlxuICAgICAge2lzRGVsZWdhdGVkICYmIChcbiAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkxXCIgc3g9e3sgZm9udFdlaWdodDogNTAwLCBtYXJnaW46IFwiMTBweCAwXCIgfX0+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLm1hbmFnZV9mb3JcIil9XG4gICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICl9XG4gICAgICB7W1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmZpcnN0TmFtZSwgVElDS0VUX0FUVEVOREVFX0tFWVMubGFzdE5hbWVdLm1hcChcbiAgICAgICAgKG5hbWUpID0+IChcbiAgICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICAgIGtleT17bmFtZX1cbiAgICAgICAgICAgIG5hbWU9e25hbWV9XG4gICAgICAgICAgICBsYWJlbD17dChgdGlja2V0X2RldGFpbC4ke25hbWV9YCl9XG4gICAgICAgICAgICB2YWx1ZT17dmFsdWVzW25hbWVdfVxuICAgICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkIHx8IGlzRGVsZWdhdGVkIHx8ICEhaW5pdGlhbFZhbHVlc1tuYW1lXX1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICBvbkJsdXI9e2hhbmRsZUJsdXJ9XG4gICAgICAgICAgICBlcnJvcj17dG91Y2hlZFtuYW1lXSAmJiBCb29sZWFuKGVycm9yc1tuYW1lXSl9XG4gICAgICAgICAgICBoZWxwZXJUZXh0PXtmb3JtaWsudG91Y2hlZFtuYW1lXSAmJiBmb3JtaWsuZXJyb3JzW25hbWVdfVxuICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgKVxuICAgICAgKX1cbiAgICAgIDxDb21wYW55RmllbGQgZm9ybWlrPXtmb3JtaWt9IHN1bW1pdElkPXtzdW1taXRJZH0gaXNSZXF1aXJlZCAvPlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5pbmZvTm90ZX0+e3QoXCJ0aWNrZXRfZGV0YWlsLmluZm9fbm90ZVwiKX08L0JveD5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cblRpY2tldE93bmVyRmllbGRzLnByb3BUeXBlcyA9IHtcbiAgZm9ybWlrOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHN1bW1pdElkOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgaXNEZWxlZ2F0ZWQ6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXRPd25lckZpZWxkcztcbiIsImV4cG9ydCBjb25zdCBUSUNLRVRfQVRURU5ERUVfS0VZUyA9IHtcbiAgZW1haWw6IFwiYXR0ZW5kZWVfZW1haWxcIixcbiAgZmlyc3ROYW1lOiBcImF0dGVuZGVlX2ZpcnN0X25hbWVcIixcbiAgbGFzdE5hbWU6IFwiYXR0ZW5kZWVfbGFzdF9uYW1lXCIsXG4gIGNvbXBhbnk6IFwiYXR0ZW5kZWVfY29tcGFueVwiLFxuICBkaXNjbGFpbWVyQWNjZXB0ZWQ6IFwiZGlzY2xhaW1lcl9hY2NlcHRlZFwiXG59O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUNvbnRleHQgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94LCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB1c2VHZXRUaWNrZXQgZnJvbSBcIi4uLy4uL2hvb2tzL3VzZUdldFRpY2tldFwiO1xuaW1wb3J0IHsgdHJhbnNmb3JtQW53ZXJzRm9ybWF0IH0gZnJvbSBcIi4uL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvdXRpbHNcIjtcbmltcG9ydCB7IFRJQ0tFVF9EUkFXRVJfSUQgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgVGlja2V0Rm9ybSBmcm9tIFwiLi9jb21wb25lbnRzL1RpY2tldEZvcm1cIjtcbmltcG9ydCBDdXN0b21Ob3RpZmljYXRpb25Db250ZXh0IGZyb20gXCIuLi9DdXN0b21Ob3RpZmljYXRpb24vQ29udGV4dFwiO1xuaW1wb3J0IHsgc2F2ZVRpY2tldERldGFpbHMgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IFJpZ2h0RHJhd2VyIGZyb20gXCIuLi9SaWdodERyYXdlclwiO1xuaW1wb3J0IFRpY2tldERldGFpbEhlYWRlciBmcm9tIFwiLi9jb21wb25lbnRzL1RpY2tldERldGFpbEhlYWRlclwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBUaWNrZXREZXRhaWwgPSAoe1xuICBzdW1taXQsXG4gIHRpY2tldElkLFxuICBvcmRlcklkLFxuICBvd25lcklkLFxuICBvcGVuLFxuICBvbkNsb3NlXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgeyBzdWNjZXNzTWVzc2FnZSwgZXJyb3JNZXNzYWdlIH0gPSB1c2VDb250ZXh0KFxuICAgIEN1c3RvbU5vdGlmaWNhdGlvbkNvbnRleHRcbiAgKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCB7XG4gICAgdXNlcjogeyB1c2VyUHJvZmlsZSB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlKTtcbiAgY29uc3QgeyB0aWNrZXQsIGV4dHJhUXVlc3Rpb25zIH0gPSB1c2VHZXRUaWNrZXQoXG4gICAgdGlja2V0SWQsXG4gICAgb3JkZXJJZCxcbiAgICBvd25lcklkLFxuICAgIG9wZW5cbiAgKTtcbiAgY29uc3QgaXNVc2VyT3JkZXJPd25lciA9IHRpY2tldD8ub3JkZXI/Lm93bmVyX2lkID09PSB1c2VyUHJvZmlsZT8uaWQ7XG4gIGNvbnN0IGlzVXNlclRpY2tldE93bmVyID0gdGlja2V0Py5vd25lcj8uZW1haWwgPT09IHVzZXJQcm9maWxlPy5lbWFpbDtcbiAgY29uc3QgY2FuRWRpdFRpY2tldERhdGEgPVxuICAgIChpc1VzZXJUaWNrZXRPd25lciB8fCBpc1VzZXJPcmRlck93bmVyKSAmJlxuICAgIHN1bW1pdC5hbGxvd191cGRhdGVfYXR0ZW5kZWVfZXh0cmFfcXVlc3Rpb25zO1xuXG4gIGNvbnN0IG9uU2F2ZSA9ICh2YWwpID0+IHtcbiAgICBjb25zdCBhbnN3ZXJzID0gdHJhbnNmb3JtQW53ZXJzRm9ybWF0KHZhbCk7XG5cbiAgICByZXR1cm4gZGlzcGF0Y2goc2F2ZVRpY2tldERldGFpbHModGlja2V0LCBhbnN3ZXJzKSlcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgb25DbG9zZSgpO1xuICAgICAgICBzdWNjZXNzTWVzc2FnZSh0KFwidGlja2V0X2RldGFpbC5zYXZpbmdfc3VjY2Vzc1wiKSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICBlcnJvck1lc3NhZ2UodChcInRpY2tldF9kZXRhaWwuc2F2aW5nX2Vycm9yXCIpKTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gICAgICB9KTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxSaWdodERyYXdlclxuICAgICAgaWQ9e1RJQ0tFVF9EUkFXRVJfSUR9XG4gICAgICBvcGVuPXtvcGVufVxuICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldERldGFpbENvbnRhaW5lcn1cbiAgICAgIGhlYWRlckNoaWxkcmVuPXtcbiAgICAgICAgPFRpY2tldERldGFpbEhlYWRlclxuICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgIGlzVmlydHVhbFN1bW1pdD17c3VtbWl0Py5pc192aXJ0dWFsfVxuICAgICAgICAvPlxuICAgICAgfVxuICAgID5cbiAgICAgIHt0aWNrZXQgJiYgZXh0cmFRdWVzdGlvbnMgJiYgKFxuICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmF0dGVuZGVlQ29udGFpbmVyfT5cbiAgICAgICAgICAgIDxUeXBvZ3JhcGh5XG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJoNFwiXG4gICAgICAgICAgICAgIGd1dHRlckJvdHRvbVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5hdHRlbmRlZUluZm9UaXRsZX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLmF0dGVuZGVlX2luZm9ybWF0aW9uXCIpfVxuICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgICAge3RpY2tldCAmJiAoXG4gICAgICAgICAgICAgIDxUaWNrZXRGb3JtXG4gICAgICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICAgICAgZXh0cmFRdWVzdGlvbnM9e2V4dHJhUXVlc3Rpb25zfVxuICAgICAgICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgICAgICAgIGNhbkVkaXQ9e2NhbkVkaXRUaWNrZXREYXRhfVxuICAgICAgICAgICAgICAgIG9uU3VibWl0PXtvblNhdmV9XG4gICAgICAgICAgICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICApfVxuICAgIDwvUmlnaHREcmF3ZXI+XG4gICk7XG59O1xuXG5UaWNrZXREZXRhaWwucHJvcFR5cGVzID0ge1xuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIHRpY2tldElkOiBQcm9wVHlwZXMubnVtYmVyLFxuICBvcmRlcklkOiBQcm9wVHlwZXMubnVtYmVyLFxuICBvd25lcklkOiBQcm9wVHlwZXMubnVtYmVyLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYyxcbiAgb3BlbjogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldERldGFpbDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IENvbnRhaW5lciwgQnV0dG9uIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRpY2tldERldGFpbHMgfSBmcm9tIFwiLi4vLi4vaG9va3MvdXNlVGlja2V0RGV0YWlsc1wiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFRpY2tldFN0YXR1cyA9ICh7IHRpY2tldCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgaXNBY3RpdmUgPSB0aWNrZXQuaXNfYWN0aXZlO1xuICBjb25zdCByZWZ1bmRSZXF1ZXN0cyA9IHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LmZpbmQoXG4gICAgKHIpID0+IHIuc3RhdHVzID09PSBcIlJlcXVlc3RlZFwiXG4gICk7XG4gIGNvbnN0IHsgaXNJbmNvbXBsZXRlLCBpc1VuYXNzaWduZWQsIGlzQ29tcGxldGUgfSA9IHVzZVRpY2tldERldGFpbHModGlja2V0KTtcblxuICByZXR1cm4gKFxuICAgIDxDb250YWluZXIgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0U3RhdHVzQ29udGFpbmVyfT5cbiAgICAgIHtpc0FjdGl2ZSA/IChcbiAgICAgICAgPD5cbiAgICAgICAgICB7ISFyZWZ1bmRSZXF1ZXN0cyAmJiAoXG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHN0YXR1cyByZWZ1bmQgcmVxdWVzdGVkXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uUmVmdW5kUmVxdWVzdGVkfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfcmVmdW5kX3JlcXVlc3RlZFwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICl9XG4gICAgICAgICAge2lzSW5jb21wbGV0ZSAmJiAoXG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHN0YXR1cyBpbmNvbXBsZXRlXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uSW5jb21wbGV0ZX1gfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX2luY29tcGxldGVcIil9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICApfVxuICAgICAgICAgIHtpc1VuYXNzaWduZWQgJiYgKFxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cInRpY2tldCBzdGF0dXMgdW5hc3NpZ25lZFwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzLmJ1dHRvblVuYXNzaWduZWR9YH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c191bmFzc2lnbmVkXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7aXNDb21wbGV0ZSAmJiAoXG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHN0YXR1cyBjb21wbGV0ZVwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzLmJ1dHRvbkNvbXBsZXRlfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfY29tcGxldGVcIil9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICApfVxuICAgICAgICA8Lz5cbiAgICAgICkgOiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHN0YXR1cyBjYW5jZWxsZWRcIlxuICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzLmJ1dHRvbkNhbmNlbGxlZH1gfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c19jYW5jZWxsZWRcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKX1cbiAgICA8L0NvbnRhaW5lcj5cbiAgKTtcbn07XG5cblRpY2tldFN0YXR1cy5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBvd25lcjogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIHN0YXR1czogUHJvcFR5cGVzLnN0cmluZ1xuICAgIH0pLFxuICAgIHJlZnVuZFJlcXVlc3RzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpXG4gIH0pXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXRTdGF0dXM7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQge1xuICBCb3gsXG4gIERpdmlkZXIsXG4gIFRhYixcbiAgVGFicyxcbiAgdXNlTWVkaWFRdWVyeSxcbiAgdXNlVGhlbWVcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHN0b3BMb2FkaW5nIH0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvYWN0aW9uc1wiO1xuaW1wb3J0IHtcbiAgREVGQVVMVF9JVEVNU19QRVJfUEFHRSxcbiAgRklSU1RfUEFHRSxcbiAgVEFCU1xufSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgTXlPcmRlcnNUaWNrZXRzIGZyb20gXCIuLi9NeU9yZGVyc1RpY2tldHNcIjtcbmltcG9ydCBBc3NpZ25lZFRvTWUgZnJvbSBcIi4uL09yZGVyc0xpc3QvQXNzaWduZWRUb01lXCI7XG5pbXBvcnQge1xuICBnZXRUaWNrZXRzQnlPcmRlcixcbiAgZ2V0VXNlck9yZGVycyxcbiAgZ2V0VXNlclRpY2tldHNcbn0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCBUYWJXcmFwcGVyIGZyb20gXCIuLi9UYWJXcmFwcGVyXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFdpZGdldFRhYnMgPSAoKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW3RhYiwgc2V0VGFiXSA9IHVzZVN0YXRlKFRBQlMuT1JERVJTKTtcbiAgY29uc3QgW3RpY2tldHNGdWxseUxvYWRlZCwgc2V0VGlja2V0c0Z1bGx5TG9hZGVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCB7XG4gICAgZmlsdGVyLFxuICAgIHNvcnQsXG4gICAgb3JkZXJzX3Blcl9wYWdlOiBvcmRlcnNQZXJQYWdlLFxuICAgIHRpY2tldF9wZXJfcGFnZTogdGlja2V0UGVyUGFnZSxcbiAgICB1c2VyVGlja2V0cyxcbiAgICBtZW1iZXJPcmRlcnNcbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUpO1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG4gIGNvbnN0IGlzTW9iaWxlID0gdXNlTWVkaWFRdWVyeSh0aGVtZS5icmVha3BvaW50cy5kb3duKFwibGdcIikpO1xuXG4gIGNvbnN0IGhhbmRsZVRhYkNoYW5nZSA9IChldiwgbmV3VGFiKSA9PiB7XG4gICAgc2V0VGFiKG5ld1RhYik7XG4gIH07XG5cbiAgY29uc3QgZmV0Y2hBc3NpZ25lZFRpY2tldHMgPSAocGFnZSwgc2tpcExvYWRpbmcgPSBmYWxzZSkgPT5cbiAgICBkaXNwYXRjaChcbiAgICAgIGdldFVzZXJUaWNrZXRzKFxuICAgICAgICB7XG4gICAgICAgICAgcGFnZSxcbiAgICAgICAgICBwZXJQYWdlOiBERUZBVUxUX0lURU1TX1BFUl9QQUdFLFxuICAgICAgICAgIGZpbHRlcixcbiAgICAgICAgICBzb3J0XG4gICAgICAgIH0sXG4gICAgICAgIHNraXBMb2FkaW5nXG4gICAgICApXG4gICAgKTtcblxuICBjb25zdCBmZXRjaE9yZGVyVGlja2V0cyA9IChwYWdlLCBza2lwTG9hZGluZyA9IGZhbHNlKSA9PlxuICAgIGRpc3BhdGNoKFxuICAgICAgZ2V0VXNlck9yZGVycyhcbiAgICAgICAge1xuICAgICAgICAgIHBhZ2UsXG4gICAgICAgICAgcGVyUGFnZTogb3JkZXJzUGVyUGFnZSxcbiAgICAgICAgICBmaWx0ZXIsXG4gICAgICAgICAgc29ydFxuICAgICAgICB9LFxuICAgICAgICBza2lwTG9hZGluZ1xuICAgICAgKVxuICAgICkudGhlbigocGF5bG9hZCkgPT4ge1xuICAgICAgY29uc3QgeyBkYXRhIH0gPSBwYXlsb2FkLnJlc3BvbnNlO1xuICAgICAgY29uc3Qgb3JkZXJUaWNrZXRzUHJvbWlzZXMgPSBkYXRhLm1hcCgob3JkZXIpID0+XG4gICAgICAgIGRpc3BhdGNoKFxuICAgICAgICAgIGdldFRpY2tldHNCeU9yZGVyKHtcbiAgICAgICAgICAgIG9yZGVySWQ6IG9yZGVyLmlkLFxuICAgICAgICAgICAgY3VycmVudF9wYWdlOiBGSVJTVF9QQUdFLFxuICAgICAgICAgICAgcGVyUGFnZTogdGlja2V0UGVyUGFnZSxcbiAgICAgICAgICAgIGZpbHRlcixcbiAgICAgICAgICAgIHNvcnRcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApO1xuXG4gICAgICByZXR1cm4gUHJvbWlzZS5hbGwob3JkZXJUaWNrZXRzUHJvbWlzZXMpO1xuICAgIH0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgZmV0Y2hQcm9taXNlcyA9IFtcbiAgICAgIGZldGNoQXNzaWduZWRUaWNrZXRzKEZJUlNUX1BBR0UsIHRydWUpLFxuICAgICAgZmV0Y2hPcmRlclRpY2tldHMoRklSU1RfUEFHRSwgdHJ1ZSlcbiAgICBdO1xuICAgIFByb21pc2UuYWxsKGZldGNoUHJvbWlzZXMpXG4gICAgICAudGhlbigoKSA9PiBzZXRUaWNrZXRzRnVsbHlMb2FkZWQodHJ1ZSkpXG4gICAgICAuZmluYWxseSgoKSA9PiBkaXNwYXRjaChzdG9wTG9hZGluZygpKSk7XG4gIH0sIFtmaWx0ZXIsIHNvcnRdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh0aWNrZXRzRnVsbHlMb2FkZWQpIHtcbiAgICAgIGlmIChtZW1iZXJPcmRlcnM/Lmxlbmd0aCA9PT0gMCAmJiB1c2VyVGlja2V0cz8ubGVuZ3RoID4gMCkge1xuICAgICAgICBzZXRUYWIoVEFCUy5USUNLRVRTKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIFt0aWNrZXRzRnVsbHlMb2FkZWRdKTtcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMudGFiV3JhcHBlcn0+XG4gICAgICA8VGFic1xuICAgICAgICB2YWx1ZT17dGFifVxuICAgICAgICBvbkNoYW5nZT17aGFuZGxlVGFiQ2hhbmdlfVxuICAgICAgICB2YXJpYW50PXtpc01vYmlsZSA/IFwiZnVsbFdpZHRoXCIgOiBcInN0YW5kYXJkXCJ9XG4gICAgICA+XG4gICAgICAgIDxUYWIgbGFiZWw9e3QoXCJvcmRlcnMudGl0bGVcIil9IHZhbHVlPXtUQUJTLk9SREVSU30gLz5cbiAgICAgICAgPFRhYiBsYWJlbD17dChcImxhYmVscy5hc3NpZ25lZF90b19tZVwiKX0gdmFsdWU9e1RBQlMuVElDS0VUU30gLz5cbiAgICAgIDwvVGFicz5cbiAgICAgIDxEaXZpZGVyIC8+XG5cbiAgICAgIHt0YWIgPT09IFRBQlMuT1JERVJTICYmIChcbiAgICAgICAgPFRhYldyYXBwZXIgdGFiPXtUQUJTLk9SREVSU30gc2V0VGFiPXtzZXRUYWJ9PlxuICAgICAgICAgIDxNeU9yZGVyc1RpY2tldHMgZmV0Y2hEYXRhPXtmZXRjaE9yZGVyVGlja2V0c30gLz5cbiAgICAgICAgPC9UYWJXcmFwcGVyPlxuICAgICAgKX1cbiAgICAgIHt0YWIgPT09IFRBQlMuVElDS0VUUyAmJiAoXG4gICAgICAgIDxUYWJXcmFwcGVyIHRhYj17VEFCUy5USUNLRVRTfSBzZXRUYWI9e3NldFRhYn0+XG4gICAgICAgICAgPEFzc2lnbmVkVG9NZSBmZXRjaERhdGE9e2ZldGNoQXNzaWduZWRUaWNrZXRzfSAvPlxuICAgICAgICA8L1RhYldyYXBwZXI+XG4gICAgICApfVxuICAgIDwvQm94PlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgV2lkZ2V0VGFicztcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5pbXBvcnQgUmVhY3QsIHsgdXNlTWVtbywgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsLCBjb25uZWN0IH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgcmVzZXRGaWx0ZXIsIGNoYW5nZVNvcnQsIGNoYW5nZUZpbHRlciB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgQ3VzdG9tVGhlbWUgZnJvbSBcIi4uL0N1c3RvbVRoZW1lXCI7XG5pbXBvcnQgTG9hZGVyIGZyb20gXCIuLi9Mb2FkZXJcIjtcbmltcG9ydCBGaWx0ZXJzIGZyb20gXCIuLi9GaWx0ZXJzXCI7XG5pbXBvcnQgV2lkZ2V0VGFicyBmcm9tIFwiLi4vV2lkZ2V0VGFic1wiO1xuaW1wb3J0IEN1c3RvbU5vdGlmaWNhdGlvbkNvbnRleHQgZnJvbSBcIi4uL0N1c3RvbU5vdGlmaWNhdGlvbi9Db250ZXh0XCI7XG5pbXBvcnQgQ3VzdG9tTm90aWZpY2F0aW9uIGZyb20gXCIuLi9DdXN0b21Ob3RpZmljYXRpb25cIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgV2lkZ2V0V3JhcHBlciA9ICgpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IFttc2dEYXRhLCBzZXRNc2dEYXRhXSA9IHVzZVN0YXRlKFwiXCIpO1xuICBjb25zdCB7XG4gICAgbG9hZGluZyxcbiAgICBmaWx0ZXI6IHsgRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVI6IGZpbHRlclZhbHVlcyB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuXG4gIGNvbnN0IHN1Y2Nlc3NNZXNzYWdlID0gKG1zZykgPT5cbiAgICBzZXRNc2dEYXRhKHsgbWVzc2FnZTogbXNnLCBzZXZlcml0eTogXCJzdWNjZXNzXCIgfSk7XG4gIGNvbnN0IGVycm9yTWVzc2FnZSA9IChtc2cpID0+IHNldE1zZ0RhdGEoeyBtZXNzYWdlOiBtc2csIHNldmVyaXR5OiBcImVycm9yXCIgfSk7XG4gIGNvbnN0IG1lc3NhZ2VDb250ZXh0ID0gdXNlTWVtbygoKSA9PiAoeyBzdWNjZXNzTWVzc2FnZSwgZXJyb3JNZXNzYWdlIH0pLCBbXSk7XG5cbiAgY29uc3Qgb25SZXNldCA9ICgpID0+IHtcbiAgICBkaXNwYXRjaChyZXNldEZpbHRlcigpKTtcbiAgfTtcblxuICBjb25zdCBvbkZpbHRlciA9IChmaWx0ZXJWYWx1ZSkgPT4ge1xuICAgIGRpc3BhdGNoKGNoYW5nZUZpbHRlcihmaWx0ZXJWYWx1ZSkpO1xuICB9O1xuXG4gIGNvbnN0IG9uU29ydCA9IChzb3J0VmFsdWUpID0+IHtcbiAgICBkaXNwYXRjaChjaGFuZ2VTb3J0KHNvcnRWYWx1ZSkpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEN1c3RvbVRoZW1lPlxuICAgICAgPExvYWRlciBvcGVuPXtsb2FkaW5nfSAvPlxuICAgICAgPEN1c3RvbU5vdGlmaWNhdGlvblxuICAgICAgICBvcGVuPXshIW1zZ0RhdGF9XG4gICAgICAgIG9uQ2xvc2U9eygpID0+IHNldE1zZ0RhdGEobnVsbCl9XG4gICAgICAgIG1lc3NhZ2U9e21zZ0RhdGE/Lm1lc3NhZ2V9XG4gICAgICAgIHNldmVyaXR5PXttc2dEYXRhPy5zZXZlcml0eX1cbiAgICAgIC8+XG4gICAgICA8RmlsdGVyc1xuICAgICAgICBvbkZpbHRlcj17b25GaWx0ZXJ9XG4gICAgICAgIG9uU29ydD17b25Tb3J0fVxuICAgICAgICBvblNlYXJjaD17b25GaWx0ZXJ9XG4gICAgICAgIG9uUmVzZXQ9e29uUmVzZXR9XG4gICAgICAvPlxuICAgICAgPEJveCBzeD17eyBwYWRkaW5nOiB7IHhzOiAyLCBtZDogMCwgbGc6IDAgfSB9fT5cbiAgICAgICAgPGgzIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldHNUaXRsZVRleHR9PlxuICAgICAgICAgIHtmaWx0ZXJWYWx1ZXNcbiAgICAgICAgICAgID8gdChcImxhYmVscy5zZWFyY2hfcmVzdWx0c1wiLCB7IGZpbHRlcjogZmlsdGVyVmFsdWVzIH0pXG4gICAgICAgICAgICA6IHQoXCJsYWJlbHMudGlja2V0c1wiKX1cbiAgICAgICAgPC9oMz5cbiAgICAgIDwvQm94PlxuICAgICAgPEN1c3RvbU5vdGlmaWNhdGlvbkNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e21lc3NhZ2VDb250ZXh0fT5cbiAgICAgICAgPFdpZGdldFRhYnMgLz5cbiAgICAgIDwvQ3VzdG9tTm90aWZpY2F0aW9uQ29udGV4dC5Qcm92aWRlcj5cbiAgICA8L0N1c3RvbVRoZW1lPlxuICApO1xufTtcblxuY29uc3QgbWFwU3RhdGVUb1Byb3BzID0gKHsgd2lkZ2V0U3RhdGUgfSkgPT4gKHtcbiAgc29ydDogd2lkZ2V0U3RhdGUuc29ydCxcbiAgZmlsdGVyOiB3aWRnZXRTdGF0ZS5maWx0ZXJcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBjb25uZWN0KG1hcFN0YXRlVG9Qcm9wcywge30pKFdpZGdldFdyYXBwZXIpO1xuIiwiaW1wb3J0IHsgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IGdldEV4dHJhUXVlc3Rpb25zLCBnZXRUaWNrZXQgfSBmcm9tIFwiLi4vYWN0aW9uc1wiO1xuXG5jb25zdCB1c2VHZXRUaWNrZXQgPSAodGlja2V0SWQsIG9yZGVySWQsIG93bmVySWQsIHJ1bikgPT4ge1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAocnVuKSB7XG4gICAgICBpZiAodGlja2V0SWQgJiYgb3JkZXJJZCkge1xuICAgICAgICBkaXNwYXRjaChnZXRUaWNrZXQodGlja2V0SWQsIG9yZGVySWQpKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG93bmVySWQpIHtcbiAgICAgICAgZGlzcGF0Y2goZ2V0RXh0cmFRdWVzdGlvbnMob3duZXJJZCkpO1xuICAgICAgfVxuICAgIH1cbiAgfSwgW3RpY2tldElkLCBvcmRlcklkLCBvd25lcklkLCBydW5dKTtcblxuICBjb25zdCB7IGV4dHJhUXVlc3Rpb25zLCBjdXJyZW50VGlja2V0OiB0aWNrZXQgfSA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGVcbiAgKTtcblxuICByZXR1cm4geyB0aWNrZXQsIGV4dHJhUXVlc3Rpb25zIH07XG59O1xuXG5leHBvcnQgZGVmYXVsdCB1c2VHZXRUaWNrZXQ7XG4iLCJpbXBvcnQgeyB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IFRJQ0tFVF9EUkFXRVJfSUQgfSBmcm9tIFwiLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5cbi8vIFNtb290aCBzY3JvbGxpbmcgZnVuY3Rpb24gdXNpbmcgcmVxdWVzdEFuaW1hdGlvbkZyYW1lXG5mdW5jdGlvbiBzbW9vdGhTY3JvbGxUbyhjb250YWluZXIsIHRhcmdldFNjcm9sbFRvcCwgZHVyYXRpb24pIHtcbiAgY29uc3Qgc3RhcnRTY3JvbGxUb3AgPSBjb250YWluZXIuc2Nyb2xsVG9wO1xuICBjb25zdCBkaXN0YW5jZSA9IHRhcmdldFNjcm9sbFRvcCAtIHN0YXJ0U2Nyb2xsVG9wO1xuICBsZXQgc3RhcnRUaW1lID0gbnVsbDtcblxuICBmdW5jdGlvbiBhbmltYXRpb25TdGVwKHRpbWVzdGFtcCkge1xuICAgIGlmICghc3RhcnRUaW1lKSBzdGFydFRpbWUgPSB0aW1lc3RhbXA7XG4gICAgY29uc3QgZWxhcHNlZCA9IHRpbWVzdGFtcCAtIHN0YXJ0VGltZTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tYWdpYy1udW1iZXJzXG4gICAgY29uc3QgcHJvZ3Jlc3MgPSBNYXRoLm1pbihlbGFwc2VkIC8gZHVyYXRpb24sIDEpO1xuICAgIGNvbnN0IGVhc2VJbk91dFF1YWQgPVxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW1hZ2ljLW51bWJlcnNcbiAgICAgIHByb2dyZXNzIDwgMC41ID8gMiAqIHByb2dyZXNzICoqIDIgOiAxIC0gKC0yICogcHJvZ3Jlc3MgKyAyKSAqKiAyIC8gMjtcblxuICAgIGNvbnRhaW5lci5zY3JvbGxUb3AgPSBzdGFydFNjcm9sbFRvcCArIGRpc3RhbmNlICogZWFzZUluT3V0UXVhZDtcblxuICAgIGlmIChlbGFwc2VkIDwgZHVyYXRpb24pIHtcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShhbmltYXRpb25TdGVwKTtcbiAgICB9XG4gIH1cblxuICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYW5pbWF0aW9uU3RlcCk7XG59XG5cbmNvbnN0IHVzZVNjcm9sbFRvRXJyb3IgPSAoZm9ybWlrKSA9PiB7XG4gIGNvbnN0IHsgZXJyb3JzLCBpc1ZhbGlkLCBpc1N1Ym1pdHRpbmcgfSA9IGZvcm1paztcbiAgY29uc3QgZXJyb3JBcnJheSA9IE9iamVjdC5rZXlzKGVycm9ycyk7XG4gIGNvbnN0IGVycm9yQ291bnQgPSBlcnJvckFycmF5Lmxlbmd0aDtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpc1ZhbGlkIHx8IGVycm9yQ291bnQgPT09IDApIHJldHVybjtcblxuICAgIC8vIHNvcnQgZWxlbWVudHMgYnkgcG9zaXRpb25cbiAgICBjb25zdCBlbGVtZW50c1NvcnRlZCA9IGVycm9yQXJyYXlcbiAgICAgIC5yZWR1Y2UoKHJlc3VsdCwgZXJyb3IpID0+IHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYFtuYW1lPScke2Vycm9yfSddYCk7XG4gICAgICAgIGlmICghZWxlbWVudCkgcmV0dXJuIHJlc3VsdDtcblxuICAgICAgICBjb25zdCBlbFJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICByZXN1bHQucHVzaCh7IGVsZW1lbnQsIGVycm9yLCB0b3A6IGVsUmVjdC50b3AgfSk7XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0sIFtdKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IGEudG9wIC0gYi50b3ApO1xuXG4gICAgaWYgKGVsZW1lbnRzU29ydGVkLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgY29uc3QgY29udGFpbmVyID0gZG9jdW1lbnRcbiAgICAgIC5nZXRFbGVtZW50QnlJZChUSUNLRVRfRFJBV0VSX0lEKVxuICAgICAgLnF1ZXJ5U2VsZWN0b3IoXCIuTXVpRHJhd2VyLXBhcGVyXCIpO1xuICAgIGNvbnN0IHRhcmdldCA9IGVsZW1lbnRzU29ydGVkWzBdO1xuXG4gICAgaWYgKGNvbnRhaW5lcj8uY29udGFpbnModGFyZ2V0LmVsZW1lbnQpKSB7XG4gICAgICBjb25zdCBjb250YWluZXJSZWN0ID0gY29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgICAvLyBDYWxjdWxhdGUgdGhlIG9mZnNldCBvZiB0aGUgdGFyZ2V0IGVsZW1lbnQgcmVsYXRpdmUgdG8gdGhlIGNvbnRhaW5lclxuICAgICAgY29uc3QgZWxlbU9mZmVzdCA9IDEwMDtcbiAgICAgIGNvbnN0IGFuaW1hdGlvbkR1cmF0aW9uID0gNTAwO1xuICAgICAgY29uc3Qgc2Nyb2xsVG9wID1cbiAgICAgICAgdGFyZ2V0LnRvcCAtIGNvbnRhaW5lclJlY3QudG9wICsgY29udGFpbmVyLnNjcm9sbFRvcCAtIGVsZW1PZmZlc3Q7XG5cbiAgICAgIC8vIFNjcm9sbCB0aGUgY29udGFpbmVyIHRvIHRoZSB0YXJnZXQgZWxlbWVudCdzIHBvc2l0aW9uXG4gICAgICBzbW9vdGhTY3JvbGxUbyhjb250YWluZXIsIHNjcm9sbFRvcCwgYW5pbWF0aW9uRHVyYXRpb24pOyAvLyA1MDBtcyBkdXJhdGlvblxuICAgIH1cbiAgfSwgW2lzU3VibWl0dGluZ10pO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgdXNlU2Nyb2xsVG9FcnJvcjtcbiIsImltcG9ydCB7IGlzVGlja2V0UmVmdW5kYWJsZSB9IGZyb20gXCIuLi91dGlscy90aWNrZXRVdGlsc1wiO1xuXG5leHBvcnQgY29uc3QgU1RBVFVTX0NPTVBMRVRFID0gXCJDb21wbGV0ZVwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19JTkNPTVBMRVRFID0gXCJJbmNvbXBsZXRlXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0NBTkNFTExFRCA9IFwiQ2FuY2VsbGVkXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1VOQVNTSUdORUQgPSBcIlVuYXNzaWduZWRcIjtcblxuZXhwb3J0IGNvbnN0IHVzZVRpY2tldERldGFpbHMgPSAodGlja2V0KSA9PiB7XG4gIGNvbnN0IGdldFN0YXR1cyA9ICgpID0+IHtcbiAgICBpZiAoIXRpY2tldC5pc19hY3RpdmUpIHJldHVybiBTVEFUVVNfQ0FOQ0VMTEVEO1xuICAgIGlmICh0aWNrZXQub3duZXJfaWQgPT09IDApIHJldHVybiBTVEFUVVNfVU5BU1NJR05FRDtcbiAgICBpZiAoIXRpY2tldC5vd25lcj8uZmlyc3RfbmFtZSB8fCAhdGlja2V0Lm93bmVyPy5sYXN0X25hbWUpXG4gICAgICByZXR1cm4gU1RBVFVTX0lOQ09NUExFVEU7XG4gICAgcmV0dXJuIHRpY2tldC5vd25lci5zdGF0dXM7XG4gIH07XG5cbiAgaWYgKCF0aWNrZXQpIHJldHVybiB7fTtcblxuICBjb25zdCBzdGF0dXMgPSBnZXRTdGF0dXMoKTtcbiAgY29uc3QgaXNBY3RpdmUgPSB0aWNrZXQuaXNfYWN0aXZlICYmIHN0YXR1cyAhPT0gU1RBVFVTX0NBTkNFTExFRDtcbiAgY29uc3QgaXNSZWZ1bmRhYmxlID0gaXNUaWNrZXRSZWZ1bmRhYmxlKHRpY2tldCk7XG4gIGNvbnN0IGFsbG93c0RlbGVnYXRlID1cbiAgICB0aWNrZXQ/LnRpY2tldF90eXBlPy5hbGxvd3NfdG9fZGVsZWdhdGUgfHxcbiAgICB0aWNrZXQ/LnByb21vX2NvZGU/LmFsbG93c190b19kZWxlZ2F0ZTtcbiAgY29uc3QgaXNDb21wbGV0ZSA9IHN0YXR1cyA9PT0gU1RBVFVTX0NPTVBMRVRFO1xuICBjb25zdCBpc1VuYXNzaWduZWQgPSBzdGF0dXMgPT09IFNUQVRVU19VTkFTU0lHTkVEO1xuICBjb25zdCBpc0luY29tcGxldGUgPSBzdGF0dXMgPT09IFNUQVRVU19JTkNPTVBMRVRFO1xuICBjb25zdCBjYW5SZWFzc2lnbiA9XG4gICAgIWlzVW5hc3NpZ25lZCAmJlxuICAgIHRpY2tldC50aWNrZXRfdHlwZT8uYWxsb3dzX3RvX3JlYXNzaWduICYmXG4gICAgKCF0aWNrZXQucHJvbW9fY29kZSB8fCB0aWNrZXQucHJvbW9fY29kZT8uYWxsb3dzX3RvX3JlYXNzaWduKTtcblxuICByZXR1cm4ge1xuICAgIHN0YXR1cyxcbiAgICBpc0NvbXBsZXRlLFxuICAgIGlzVW5hc3NpZ25lZCxcbiAgICBpc0luY29tcGxldGUsXG4gICAgaXNBY3RpdmUsXG4gICAgaXNSZWZ1bmRhYmxlLFxuICAgIGFsbG93c0RlbGVnYXRlLFxuICAgIGNhblJlYXNzaWduXG4gIH07XG59O1xuIiwiaW1wb3J0IGkxOG4gZnJvbSBcImkxOG5leHRcIjtcbmltcG9ydCB7IGluaXRSZWFjdEkxOG5leHQgfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IExhbmd1YWdlRGV0ZWN0b3IgZnJvbSBcImkxOG5leHQtYnJvd3Nlci1sYW5ndWFnZWRldGVjdG9yXCI7XG5pbXBvcnQgZW4gZnJvbSBcIi4vbG9jYWxlcy9lbi5qc29uXCI7XG5pbXBvcnQgZXMgZnJvbSBcIi4vbG9jYWxlcy9lcy5qc29uXCI7XG5cbi8vIGltcG9ydCBCYWNrZW5kIGZyb20gJ2kxOG5leHQtaHR0cC1iYWNrZW5kJztcbi8vIGRvbid0IHdhbnQgdG8gdXNlIHRoaXM/XG4vLyBoYXZlIGEgbG9vayBhdCB0aGUgUXVpY2sgc3RhcnQgZ3VpZGVcbi8vIGZvciBwYXNzaW5nIGluIGxuZyBhbmQgdHJhbnNsYXRpb25zIG9uIGluaXRcblxuaTE4blxuICAvLyBsb2FkIHRyYW5zbGF0aW9uIHVzaW5nIGh0dHAgLT4gc2VlIC9wdWJsaWMvbG9jYWxlcyAoaS5lLiBodHRwczovL2dpdGh1Yi5jb20vaTE4bmV4dC9yZWFjdC1pMThuZXh0L3RyZWUvbWFzdGVyL2V4YW1wbGUvcmVhY3QvcHVibGljL2xvY2FsZXMpXG4gIC8vIGxlYXJuIG1vcmU6IGh0dHBzOi8vZ2l0aHViLmNvbS9pMThuZXh0L2kxOG5leHQtaHR0cC1iYWNrZW5kXG4gIC8vIHdhbnQgeW91ciB0cmFuc2xhdGlvbnMgdG8gYmUgbG9hZGVkIGZyb20gYSBwcm9mZXNzaW9uYWwgQ0ROPyA9PiBodHRwczovL2dpdGh1Yi5jb20vbG9jaXplL3JlYWN0LXR1dG9yaWFsI3N0ZXAtMi0tLXVzZS10aGUtbG9jaXplLWNkblxuICAvLyAudXNlKEJhY2tlbmQpXG4gIC8vIGRldGVjdCB1c2VyIGxhbmd1YWdlXG4gIC8vIGxlYXJuIG1vcmU6IGh0dHBzOi8vZ2l0aHViLmNvbS9pMThuZXh0L2kxOG5leHQtYnJvd3Nlci1sYW5ndWFnZURldGVjdG9yXG4gIC51c2UoTGFuZ3VhZ2VEZXRlY3RvcilcbiAgLy8gcGFzcyB0aGUgaTE4biBpbnN0YW5jZSB0byByZWFjdC1pMThuZXh0LlxuICAudXNlKGluaXRSZWFjdEkxOG5leHQpXG4gIC8vIGluaXQgaTE4bmV4dFxuICAvLyBmb3IgYWxsIG9wdGlvbnMgcmVhZDogaHR0cHM6Ly93d3cuaTE4bmV4dC5jb20vb3ZlcnZpZXcvY29uZmlndXJhdGlvbi1vcHRpb25zXG4gIC5pbml0KHtcbiAgICBmYWxsYmFja0xuZzogXCJlblwiLFxuICAgIGRlYnVnOiBmYWxzZSxcbiAgICByZXNvdXJjZXM6IHtcbiAgICAgIGVuOiB7IHRyYW5zbGF0aW9uOiBlbiB9LFxuICAgICAgZXM6IHsgdHJhbnNsYXRpb246IGVzIH1cbiAgICB9LFxuICAgIGludGVycG9sYXRpb246IHtcbiAgICAgIGVzY2FwZVZhbHVlOiBmYWxzZSAvLyBub3QgbmVlZGVkIGZvciByZWFjdCBhcyBpdCBlc2NhcGVzIGJ5IGRlZmF1bHRcbiAgICB9XG4gIH0pO1xuXG5leHBvcnQgZGVmYXVsdCBpMThuO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cbmltcG9ydCB7IExPR09VVF9VU0VSIH0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvYWN0aW9uc1wiO1xuaW1wb3J0IHtcbiAgU1RBUlRfTE9BRElORyxcbiAgU1RPUF9MT0FESU5HLFxuICBSRVNFVF9MT0FESU5HXG59IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL2FjdGlvbnNcIjtcbmltcG9ydCB7XG4gIFJFU0VUX1NUQVRFLFxuICBSRVNFVF9GSUxURVIsXG4gIFNFVF9TVEFURSxcbiAgU0VUX1VTRVIsXG4gIEdFVF9VU0VSX09SREVSUyxcbiAgR0VUX01ZX0FTU0lHTkVEX1RJQ0tFVFMsXG4gIEdFVF9USUNLRVRTX0JZX09SREVSLFxuICBVUERBVEVfVElDS0VUU19SRUZVTkRfUkVRVUVTVEVELFxuICBSRUNFSVZFX1RJQ0tFVCxcbiAgUkVDRUlWRV9FWFRSQV9RVUVTVElPTlMsXG4gIFVQREFURV9USUNLRVQsXG4gIEFTU0lHTl9USUNLRVQsXG4gIFJFU0VUX0FQSV9FUlJPUixcbiAgU0VUX0FQSV9FUlJPUixcbiAgUkVTRVRfVElDS0VULFxuICBDSEFOR0VfRklMVEVSLFxuICBDSEFOR0VfU09SVCxcbiAgRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFLFxuICBGSUxURVJfVkFSX09SREVSX05VTUJFUixcbiAgRklMVEVSX1ZBUl9EQVRFLFxuICBGSUxURVJfVkFSX1RJQ0tFVF9UWVBFLFxuICBGSUxURVJfVkFSX0ZSRUVfUEFJRCxcbiAgRklMVEVSX1ZBUl9PV05FUl9TVEFUVVMsXG4gIEZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVELFxuICBGSUxURVJfVkFSX1BST01PQ09ERSxcbiAgREVMRUdBVEVfVElDS0VULFxuICBSRU1PVkVfVElDS0VUX0FUVEVOREVFXG59IGZyb20gXCIuL2FjdGlvbnNcIjtcbmltcG9ydCB7IEZJUlNUX1BBR0UsIFRBQlMgfSBmcm9tIFwiLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCB7IGNhbGN1bGF0ZUFjdGl2ZUZpbHRlcnMsIGhhc0xvYWRlZEFsbERhdGEgfSBmcm9tIFwiLi91dGlsc1wiO1xuaW1wb3J0IHsgdXBkYXRlVGlja2V0Q29sbGVjdGlvbiB9IGZyb20gXCIuL3V0aWxzL3RpY2tldFV0aWxzXCI7XG5cbmNvbnN0IERFRkFVTFRfRklMVEVSX1NUQVRFID0ge1xuICBbRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFXTogW10sXG4gIFtGSUxURVJfVkFSX1RJQ0tFVF9UWVBFXTogW10sXG4gIFtGSUxURVJfVkFSX0ZSRUVfUEFJRF06IFwiXCIsXG4gIFtGSUxURVJfVkFSX09XTkVSX1NUQVRVU106IFwiXCIsXG4gIFtGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRF06IFwiXCIsXG4gIFtGSUxURVJfVkFSX1BST01PQ09ERV06IFwiXCIsXG4gIFtGSUxURVJfVkFSX09SREVSX05VTUJFUl06IFwiXCIsXG4gIFtGSUxURVJfVkFSX0RBVEVdOiBudWxsXG59O1xuXG5jb25zdCBERUZBVUxUX1NUQVRFID0ge1xuICBzdW1taXQ6IG51bGwsXG4gIHVzZXI6IHt9LFxuICB3aWRnZXRMb2FkaW5nOiBmYWxzZSxcbiAgbWVtYmVyT3JkZXJzOiBbXSxcbiAgdXNlclRpY2tldHM6IFtdLFxuICBleHRyYVF1ZXN0aW9uczogW10sXG4gIGN1cnJlbnRUaWNrZXQ6IG51bGwsXG4gIGVycm9yczoge30sXG4gIGxvYWRpbmc6IGZhbHNlLFxuICBjdXJyZW50X3RhYjogVEFCUy5PUkRFUlMsXG4gIHNvcnQ6IHt9LFxuICBmaWx0ZXI6IERFRkFVTFRfRklMVEVSX1NUQVRFLFxuICBhY3RpdmVGaWx0ZXJzQ291bnQ6IDAsXG4gIG9yZGVyc19jdXJyZW50X3BhZ2U6IDAsXG4gIG9yZGVyc19sYXN0X3BhZ2U6IDAsXG4gIG9yZGVyc19wZXJfcGFnZTogNSxcbiAgb3JkZXJzX3RvdGFsOiAwLFxuICB0aWNrZXRfY3VycmVudF9wYWdlOiAwLFxuICB0aWNrZXRfbGFzdF9wYWdlOiAwLFxuICB0aWNrZXRfcGVyX3BhZ2U6IDUsXG4gIHRpY2tldF90b3RhbDogMCxcbiAgdXNlcl90aWNrZXRzX3RvdGFsOiAwLFxuICB1c2VyX3RpY2tldHNfY3VycmVudF9wYWdlOiAwLFxuICB1c2VyX3RpY2tldHNfbGFzdF9wYWdlOiAwLFxuICBhcGlFcnJvcjogbnVsbFxufTtcblxuY29uc3QgV2lkZ2V0UmVkdWNlciA9IChzdGF0ZSA9IERFRkFVTFRfU1RBVEUsIHsgdHlwZSwgcGF5bG9hZCB9ID0ge30pID0+IHtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBMT0dPVVRfVVNFUjpcbiAgICBjYXNlIFJFU0VUX1NUQVRFOlxuICAgICAgcmV0dXJuIERFRkFVTFRfU1RBVEU7XG4gICAgY2FzZSBTVEFSVF9MT0FESU5HOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGxvYWRpbmc6IHRydWUgfTtcbiAgICBjYXNlIFNUT1BfTE9BRElORzpcbiAgICBjYXNlIFJFU0VUX0xPQURJTkc6XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgbG9hZGluZzogZmFsc2UgfTtcbiAgICBjYXNlIFJFU0VUX0FQSV9FUlJPUjpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBhcGlFcnJvcjogbnVsbCB9O1xuICAgIGNhc2UgUkVTRVRfRklMVEVSOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGZpbHRlcjogREVGQVVMVF9GSUxURVJfU1RBVEUsXG4gICAgICAgIGFjdGl2ZUZpbHRlcnNDb3VudDogMCxcbiAgICAgICAgc29ydDoge30sXG4gICAgICAgIG9yZGVyc19jdXJyZW50X3BhZ2U6IDEsXG4gICAgICAgIG9yZGVyc19sYXN0X3BhZ2U6IDEsXG4gICAgICAgIGxvYWRpbmc6IHRydWVcbiAgICAgIH07XG4gICAgY2FzZSBTRVRfU1RBVEU6XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgLi4ucGF5bG9hZCB9O1xuICAgIGNhc2UgU0VUX0FQSV9FUlJPUjoge1xuICAgICAgY29uc3QgeyB0aXRsZSwgaHRtbDogYm9keSB9ID0gcGF5bG9hZDtcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBhcGlFcnJvcjogeyB0aXRsZSwgYm9keSB9IH07XG4gICAgfVxuICAgIGNhc2UgU0VUX1VTRVI6XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgdXNlcjogcGF5bG9hZCB9O1xuICAgIGNhc2UgQ0hBTkdFX0ZJTFRFUjoge1xuICAgICAgY29uc3QgbmV3RmlsdGVycyA9IHsgLi4uc3RhdGUuZmlsdGVyLCAuLi5wYXlsb2FkIH07XG4gICAgICBjb25zdCBuZXdBY3RpdmVDb3VudCA9IGNhbGN1bGF0ZUFjdGl2ZUZpbHRlcnMobmV3RmlsdGVycyk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgZmlsdGVyOiB7IC4uLnN0YXRlLmZpbHRlciwgLi4ucGF5bG9hZCB9LFxuICAgICAgICBhY3RpdmVGaWx0ZXJzQ291bnQ6IG5ld0FjdGl2ZUNvdW50XG4gICAgICB9O1xuICAgIH1cbiAgICBjYXNlIENIQU5HRV9TT1JUOiB7XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgc29ydDogeyAuLi5wYXlsb2FkIH0gfTtcbiAgICB9XG4gICAgY2FzZSBHRVRfVVNFUl9PUkRFUlM6IHtcbiAgICAgIGNvbnN0IHsgZGF0YSwgdG90YWwsIGN1cnJlbnRfcGFnZSwgbGFzdF9wYWdlIH0gPSBwYXlsb2FkLnJlc3BvbnNlO1xuXG4gICAgICBpZiAoaGFzTG9hZGVkQWxsRGF0YShjdXJyZW50X3BhZ2UsIHN0YXRlLm1lbWJlck9yZGVycywgdG90YWwpKVxuICAgICAgICByZXR1cm4gc3RhdGU7XG5cbiAgICAgIGNvbnN0IG1lbWJlck9yZGVycyA9XG4gICAgICAgIGN1cnJlbnRfcGFnZSA9PT0gRklSU1RfUEFHRSA/IGRhdGEgOiBbLi4uc3RhdGUubWVtYmVyT3JkZXJzLCAuLi5kYXRhXTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIG1lbWJlck9yZGVycyxcbiAgICAgICAgb3JkZXJzX3RvdGFsOiB0b3RhbCxcbiAgICAgICAgb3JkZXJzX2N1cnJlbnRfcGFnZTogY3VycmVudF9wYWdlLFxuICAgICAgICBvcmRlcnNfbGFzdF9wYWdlOiBsYXN0X3BhZ2VcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgR0VUX01ZX0FTU0lHTkVEX1RJQ0tFVFM6IHtcbiAgICAgIGNvbnN0IHsgZGF0YSwgdG90YWwsIGN1cnJlbnRfcGFnZSwgbGFzdF9wYWdlIH0gPSBwYXlsb2FkLnJlc3BvbnNlO1xuXG4gICAgICBpZiAoaGFzTG9hZGVkQWxsRGF0YShjdXJyZW50X3BhZ2UsIHN0YXRlLnVzZXJUaWNrZXRzLCB0b3RhbCkpXG4gICAgICAgIHJldHVybiBzdGF0ZTtcblxuICAgICAgY29uc3QgdXNlclRpY2tldHMgPVxuICAgICAgICBjdXJyZW50X3BhZ2UgPT09IEZJUlNUX1BBR0UgPyBkYXRhIDogWy4uLnN0YXRlLnVzZXJUaWNrZXRzLCAuLi5kYXRhXTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHVzZXJUaWNrZXRzLFxuICAgICAgICB1c2VyX3RpY2tldHNfdG90YWw6IHRvdGFsLFxuICAgICAgICB1c2VyX3RpY2tldHNfY3VycmVudF9wYWdlOiBjdXJyZW50X3BhZ2UsXG4gICAgICAgIHVzZXJfdGlja2V0c19sYXN0X3BhZ2U6IGxhc3RfcGFnZVxuICAgICAgfTtcbiAgICB9XG4gICAgY2FzZSBHRVRfVElDS0VUU19CWV9PUkRFUjoge1xuICAgICAgY29uc3QgeyBtZW1iZXJPcmRlcnMgfSA9IHN0YXRlO1xuICAgICAgY29uc3QgeyBkYXRhLCB0b3RhbCwgY3VycmVudF9wYWdlLCBsYXN0X3BhZ2UgfSA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICBjb25zdCBmb3JtZXJPcmRlciA9IG1lbWJlck9yZGVycy5maW5kKChvKSA9PiBvLmlkID09PSBkYXRhWzBdPy5vcmRlcl9pZCk7XG5cbiAgICAgIGNvbnN0IG5ld09yZGVycyA9IG1lbWJlck9yZGVycy5tYXAoKG1vKSA9PiB7XG4gICAgICAgIGlmIChtby5pZCAhPT0gZGF0YVswXT8ub3JkZXJfaWQpIHJldHVybiBtbztcbiAgICAgICAgY29uc3QgbmV3VGlja2V0cyA9XG4gICAgICAgICAgY3VycmVudF9wYWdlID09PSBGSVJTVF9QQUdFXG4gICAgICAgICAgICA/IGRhdGFcbiAgICAgICAgICAgIDogWy4uLmZvcm1lck9yZGVyLm1lbWJlclRpY2tldHMsIC4uLmRhdGFdO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLm1vLFxuICAgICAgICAgIG1lbWJlclRpY2tldHM6IG5ld1RpY2tldHMsXG4gICAgICAgICAgdGlja2V0c19wYWdlX2N1cnJlbnQ6IGN1cnJlbnRfcGFnZSxcbiAgICAgICAgICB0aWNrZXRzX3BhZ2VfbGFzdDogbGFzdF9wYWdlLFxuICAgICAgICAgIHRpY2tldHNfdG90YWw6IHRvdGFsXG4gICAgICAgIH07XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIG1lbWJlck9yZGVyczogbmV3T3JkZXJzXG4gICAgICB9O1xuICAgIH1cbiAgICBjYXNlIFVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURUQ6IHtcbiAgICAgIGNvbnN0IHsgbWVtYmVyT3JkZXJzIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQgPSBwYXlsb2FkO1xuICAgICAgY29uc3Qgb3JkZXIgPSBtZW1iZXJPcmRlcnMuZmluZChcbiAgICAgICAgKG8pID0+IG8uaWQgPT09IHRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWRbMF0/Lm9yZGVyX2lkXG4gICAgICApO1xuICAgICAgY29uc3QgdXBkYXRlZFRpY2tldHMgPSBvcmRlcj8ubWVtYmVyVGlja2V0cy5tYXAoXG4gICAgICAgICh0aWNrZXQpID0+XG4gICAgICAgICAgdGlja2V0c1JlZnVuZFJlcXVlc3RlZC5maW5kKCh0cnIpID0+IHRyci5pZCA9PT0gdGlja2V0LmlkKSB8fCB0aWNrZXRcbiAgICAgICk7XG4gICAgICBjb25zdCB1cGRhdGVkT3JkZXIgPSB7XG4gICAgICAgIC4uLm9yZGVyLFxuICAgICAgICBtZW1iZXJUaWNrZXRzOiB1cGRhdGVkVGlja2V0c1xuICAgICAgfTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBtZW1iZXJPcmRlcnM6IG1lbWJlck9yZGVycy5tYXAoKG1vKSA9PlxuICAgICAgICAgIG1vLmlkID09PSB1cGRhdGVkT3JkZXIuaWQgPyB1cGRhdGVkT3JkZXIgOiBtb1xuICAgICAgICApXG4gICAgICB9O1xuICAgIH1cbiAgICBjYXNlIFJFU0VUX1RJQ0tFVDoge1xuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGN1cnJlbnRUaWNrZXQ6IG51bGwgfTtcbiAgICB9XG4gICAgY2FzZSBSRUNFSVZFX1RJQ0tFVDoge1xuICAgICAgY29uc3QgdGlja2V0ID0gcGF5bG9hZC5yZXNwb25zZTtcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBjdXJyZW50VGlja2V0OiB0aWNrZXQgfTtcbiAgICB9XG4gICAgY2FzZSBSRUNFSVZFX0VYVFJBX1FVRVNUSU9OUzoge1xuICAgICAgY29uc3QgeyBkYXRhIH0gPSBwYXlsb2FkLnJlc3BvbnNlO1xuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGV4dHJhUXVlc3Rpb25zOiBkYXRhIH07XG4gICAgfVxuICAgIGNhc2UgUkVNT1ZFX1RJQ0tFVF9BVFRFTkRFRTpcbiAgICBjYXNlIFVQREFURV9USUNLRVQ6IHtcbiAgICAgIGNvbnN0IHRpY2tldERhdGEgPSBwYXlsb2FkLnJlc3BvbnNlO1xuXG4gICAgICBjb25zdCBuZXdPcmRlcnMgPSBzdGF0ZS5tZW1iZXJPcmRlcnMubWFwKChvcmRlcikgPT4ge1xuICAgICAgICBjb25zdCBuZXdUaWNrZXRzID0gdXBkYXRlVGlja2V0Q29sbGVjdGlvbihcbiAgICAgICAgICBvcmRlci5tZW1iZXJUaWNrZXRzLFxuICAgICAgICAgIHRpY2tldERhdGFcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHsgLi4ub3JkZXIsIG1lbWJlclRpY2tldHM6IG5ld1RpY2tldHMgfTtcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBuZXdVc2VyVGlja2V0cyA9IHVwZGF0ZVRpY2tldENvbGxlY3Rpb24oXG4gICAgICAgIHN0YXRlLnVzZXJUaWNrZXRzLFxuICAgICAgICB0aWNrZXREYXRhXG4gICAgICApO1xuXG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgbWVtYmVyT3JkZXJzOiBuZXdPcmRlcnMsIHVzZXJUaWNrZXRzOiBuZXdVc2VyVGlja2V0cyB9O1xuICAgIH1cbiAgICBjYXNlIERFTEVHQVRFX1RJQ0tFVDpcbiAgICBjYXNlIEFTU0lHTl9USUNLRVQ6IHtcbiAgICAgIGNvbnN0IHRpY2tldERhdGEgPSBwYXlsb2FkLnJlc3BvbnNlO1xuICAgICAgY29uc3QgbmV3T3JkZXJzID0gc3RhdGUubWVtYmVyT3JkZXJzLm1hcCgob3JkZXIpID0+IHtcbiAgICAgICAgY29uc3QgbmV3VGlja2V0cyA9IHVwZGF0ZVRpY2tldENvbGxlY3Rpb24oXG4gICAgICAgICAgb3JkZXIubWVtYmVyVGlja2V0cyxcbiAgICAgICAgICB0aWNrZXREYXRhXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiB7IC4uLm9yZGVyLCBtZW1iZXJUaWNrZXRzOiBuZXdUaWNrZXRzIH07XG4gICAgICB9KTtcblxuICAgICAgY29uc3QgbmV3VXNlclRpY2tldHMgPSB1cGRhdGVUaWNrZXRDb2xsZWN0aW9uKFxuICAgICAgICBzdGF0ZS51c2VyVGlja2V0cyxcbiAgICAgICAgdGlja2V0RGF0YVxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGN1cnJlbnRUaWNrZXQ6IHRpY2tldERhdGEsXG4gICAgICAgIG1lbWJlck9yZGVyczogbmV3T3JkZXJzLFxuICAgICAgICB1c2VyVGlja2V0czogbmV3VXNlclRpY2tldHNcbiAgICAgIH07XG4gICAgfVxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gc3RhdGU7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IFdpZGdldFJlZHVjZXI7XG4iLCJpbXBvcnQgeyB1c2VNZW1vIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBjb25maWd1cmVTdG9yZSB9IGZyb20gXCJAcmVkdXhqcy90b29sa2l0XCI7XG5pbXBvcnQge1xuICBwZXJzaXN0U3RvcmUsXG4gIHBlcnNpc3RSZWR1Y2VyLFxuICBGTFVTSCxcbiAgUkVIWURSQVRFLFxuICBQQVVTRSxcbiAgUEVSU0lTVCxcbiAgUFVSR0UsXG4gIFJFR0lTVEVSXG59IGZyb20gXCJyZWR1eC1wZXJzaXN0XCI7XG5pbXBvcnQgc3RvcmFnZSBmcm9tIFwicmVkdXgtcGVyc2lzdC9saWIvc3RvcmFnZVwiO1xuaW1wb3J0IHsgY29tYmluZVJlZHVjZXJzIH0gZnJvbSBcInJlZHV4XCI7XG5pbXBvcnQgV2lkZ2V0UmVkdWNlciBmcm9tIFwiLi9yZWR1Y2VyXCI7XG5cbmV4cG9ydCBjb25zdCBnZXRTdG9yZSA9ICh7XG4gIGNsaWVudElkLFxuICBsb2dpblVybCxcbiAgc3VtbWl0LFxuICBhcGlCYXNlVXJsLFxuICB1cGRhdGVQcm9maWxlXG59KSA9PiB7XG4gIC8vIHRvIGFkZCBvdGhlciByZWR1Y2VycyBsYXRlclxuICBjb25zdCByZWR1Y2VycyA9IGNvbWJpbmVSZWR1Y2Vycyh7XG4gICAgd2lkZ2V0U3RhdGU6IFdpZGdldFJlZHVjZXJcbiAgfSk7XG5cbiAgY29uc3Qgc3RvcmUgPSBjb25maWd1cmVTdG9yZSh7XG4gICAgcmVkdWNlcjogcGVyc2lzdFJlZHVjZXIoXG4gICAgICB7XG4gICAgICAgIGtleTogYHJvb3RfbXlfb3JkZXJzX3RpY2tldHNfJHtjbGllbnRJZH1gLFxuICAgICAgICBzdG9yYWdlXG4gICAgICB9LFxuICAgICAgcmVkdWNlcnNcbiAgICApLFxuICAgIG1pZGRsZXdhcmU6IChnZXREZWZhdWx0TWlkZGxld2FyZSkgPT5cbiAgICAgIGdldERlZmF1bHRNaWRkbGV3YXJlKHtcbiAgICAgICAgdGh1bms6IHtcbiAgICAgICAgICBleHRyYUFyZ3VtZW50OiB7XG4gICAgICAgICAgICBjbGllbnRJZCxcbiAgICAgICAgICAgIGFwaUJhc2VVcmwsXG4gICAgICAgICAgICBzdW1taXQsXG4gICAgICAgICAgICBsb2dpblVybCxcbiAgICAgICAgICAgIHVwZGF0ZVByb2ZpbGVcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGltbXV0YWJsZUNoZWNrOiBmYWxzZSxcbiAgICAgICAgc2VyaWFsaXphYmxlQ2hlY2s6IHtcbiAgICAgICAgICBpZ25vcmVkQWN0aW9uczogW0ZMVVNILCBSRUhZRFJBVEUsIFBBVVNFLCBQRVJTSVNULCBQVVJHRSwgUkVHSVNURVJdXG4gICAgICAgIH1cbiAgICAgIH0pXG4gIH0pO1xuXG4gIHJldHVybiBzdG9yZTtcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VJbml0U3RvcmUgPSAoY29uZmlnKSA9PiB7XG4gIGNvbnN0IHN0b3JlID0gdXNlTWVtbygoKSA9PiBnZXRTdG9yZShjb25maWcpLCBbXSk7XG4gIGNvbnN0IHBlcnNpc3RvciA9IHVzZU1lbW8oKCkgPT4gcGVyc2lzdFN0b3JlKHN0b3JlKSwgW3N0b3JlXSk7XG5cbiAgcmV0dXJuIHtcbiAgICBzdG9yZSxcbiAgICBwZXJzaXN0b3JcbiAgfTtcbn07XG4iLCJpbXBvcnQge1xuICBpbml0TG9nT3V0LFxuICBnZXRBY2Nlc3NUb2tlblxufSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9tZXRob2RzXCI7XG5pbXBvcnQgKiBhcyBTZW50cnkgZnJvbSBcIkBzZW50cnkvcmVhY3RcIjtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG5jb25zdCBnZXRBY2Nlc3NUb2tlbk1vY2sgPSAoKSA9PiB7XG4gIHRocm93IG5ldyBFcnJvcihcIkFjY2VzcyB0b2tlbiBlcnJvclwiKTtcbiAgLy8gcmV0dXJuIGF1dGhQcm9taXNlUmVqZWN0KCk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0QWNjZXNzVG9rZW5TYWZlbHkgPSBhc3luYyAoKSA9PiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IGdldEFjY2Vzc1Rva2VuKCkuY2F0Y2goKGUpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKFwibXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0OjpnZXRBY2Nlc3NUb2tlblNhZmVseSBlcnJvcjogXCIsIGUpO1xuICAgICAgU2VudHJ5LmNhcHR1cmVFeGNlcHRpb24oZSk7XG4gICAgICBpbml0TG9nT3V0KCk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUubG9nKFwibXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0OjpnZXRBY2Nlc3NUb2tlblNhZmVseSBlcnJvcjogXCIsIGUpO1xuICAgIFNlbnRyeS5jYXB0dXJlRXhjZXB0aW9uKGUpO1xuICAgIGluaXRMb2dPdXQoKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGF1dGhQcm9taXNlUmVqZWN0ID0gYXN5bmMgKCkgPT5cbiAgUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKFwiQXV0aCBUb2tlbiBlcnJvclwiKSk7XG4iLCJleHBvcnQgY29uc3QgTEFTVF9IT1VSX09GXzI0X0hPVVIgPSAyMztcbmV4cG9ydCBjb25zdCBMQVNUX01JTlVURV9PRl9IT1VSID0gNTk7XG5leHBvcnQgY29uc3QgT05FX1BBR0VfTkVYVCA9IDE7XG5leHBvcnQgY29uc3QgTUlMTElTRUNfVE9fU0VDID0gMTAwMDtcbmV4cG9ydCBjb25zdCBPTkVfREFZID0gMTtcbmV4cG9ydCBjb25zdCBERUZBVUxUX0lURU1TX1BFUl9QQUdFID0gNTtcbmV4cG9ydCBjb25zdCBGSVJTVF9QQUdFID0gMTtcbmV4cG9ydCBjb25zdCBQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQgPSA1O1xuZXhwb3J0IGNvbnN0IFNURVBfT05FID0gMTtcbmV4cG9ydCBjb25zdCBTVEVQX1RXTyA9IDI7XG5leHBvcnQgY29uc3QgU1RFUF9USFJFRSA9IDM7XG5leHBvcnQgY29uc3QgTUlOX1JFUVVJUkVEID0gMTtcblxuZXhwb3J0IGNvbnN0IFNUQVRVU19DT01QTEVURSA9IFwiU1RBVFVTX0NPTVBMRVRFXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0lOQ09NUExFVEUgPSBcIlNUQVRVU19JTkNPTVBMRVRFXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1BFTkRJTkcgPSBcIlNUQVRVU19QRU5ESU5HXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0NBTkNFTExFRCA9IFwiU1RBVFVTX0NBTkNFTExFRFwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19FUlJPUiA9IFwiU1RBVFVTX0VSUk9SXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1BST0NFU1NJTkcgPSBcIlNUQVRVU19QUk9DRVNTSU5HXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1VOQVNTSUdORUQgPSBcIlNUQVRVU19VTkFTU0lHTkVEXCI7XG5cbmV4cG9ydCBjb25zdCBTVEFUVVNfUkVGVU5EX1BFTkRJTkcgPSBcIlNUQVRVU19SRUZVTkRfUEVORElOR1wiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19SRUZVTkRfQVBQUk9WRUQgPSBcIlNUQVRVU19SRUZVTkRfQVBQUk9WRURcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfUkVGVU5EX1JFSkVDVEVEID0gXCJTVEFUVVNfUkVGVU5EX1JFSkVDVEVEXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1JFRlVORF9QRU5ESU5HX0xDID0gXCJSZXF1ZXN0ZWRcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfUkVGVU5EX0FQUFJPVkVEX0xDID0gXCJBcHByb3ZlZFwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19SRUZVTkRfUkVKRUNURURfTEMgPSBcIlJlamVjdGVkXCI7XG5cbmV4cG9ydCBjb25zdCBKRVNUX1RJTUVPVVRfSU5fTUlMTElTRUMgPSAxMDAwMDtcblxuZXhwb3J0IGNvbnN0IE9ORV9JVEVNID0gMTtcbmV4cG9ydCBjb25zdCBUV09fSVRFTSA9IDI7XG5leHBvcnQgY29uc3QgRklWRV9JVEVNID0gNTtcbmV4cG9ydCBjb25zdCBTSVhfSVRFTSA9IDY7XG5cbmV4cG9ydCBjb25zdCBQUk9NSVNFX0JBVENIX0xJTUlUID0gMTA7XG5leHBvcnQgY29uc3QgRklGVFlfUEVSX1BBR0UgPSA1MDtcblxuZXhwb3J0IGNvbnN0IEVSUk9SX0NPREVTID0ge1xuICA0MDE6IDQwMSxcbiAgNDAzOiA0MDEsXG4gIDQxMjogNDAxLFxuICA1MDA6IDUwMFxufTtcblxuZXhwb3J0IGNvbnN0IFRBQlMgPSB7XG4gIE9SREVSUzogXCJPUkRFUlNcIixcbiAgVElDS0VUUzogXCJUSUNLRVRTXCJcbn07XG5cbmV4cG9ydCBjb25zdCBPTkVfUkVUUlkgPSAxO1xuXG5leHBvcnQgY29uc3QgRklMVEVSX0FDVElPTiA9IHtcbiAgT1JERVJTOiBcIk9SREVSU1wiLFxuICBFWFRFUk5BTF9USUNLRVRTOiBcIkVYVEVSTkFMX1RJQ0tFVFNcIixcbiAgVElDS0VUU19CWV9PUkRFUlM6IFwiVElDS0VUU19CWV9PUkRFUlNcIlxufTtcblxuZXhwb3J0IGNvbnN0IFRJQ0tFVF9EUkFXRVJfSUQgPSBcInRpY2tldERyYXdlclwiO1xuIiwiaW1wb3J0IG1vbWVudCBmcm9tIFwibW9tZW50LXRpbWV6b25lXCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHtcbiAgTEFTVF9IT1VSX09GXzI0X0hPVVIsXG4gIExBU1RfTUlOVVRFX09GX0hPVVIsXG4gIE1JTExJU0VDX1RPX1NFQyxcbiAgRklSU1RfUEFHRVxufSBmcm9tIFwiLi9jb25zdGFudHNcIjtcblxuZXhwb3J0IGNvbnN0IGZvcm1hdEN1cnJlbmN5ID0gKHZhbHVlLCB7IGxvY2FsZSA9IFwiZW4tVVNcIiwgLi4ub3B0aW9ucyB9KSA9PiB7XG4gIGNvbnN0IGRlZmF1bHRPcHRpb25zID0ge1xuICAgIGN1cnJlbmN5OiBcIlVTRFwiLFxuICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMixcbiAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDJcbiAgfTtcblxuICBjb25zdCBmb3JtYXR0ZXIgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQobG9jYWxlLCB7XG4gICAgc3R5bGU6IFwiY3VycmVuY3lcIixcbiAgICAuLi5kZWZhdWx0T3B0aW9ucyxcbiAgICAuLi5vcHRpb25zXG4gIH0pO1xuXG4gIHJldHVybiBmb3JtYXR0ZXIuZm9ybWF0KHZhbHVlKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRGb3JtYXR0ZWREYXRlID0gKGRhdGV0aW1lLCB0aW1lWm9uZSkgPT4ge1xuICBpZiAodGltZVpvbmUpXG4gICAgcmV0dXJuIG1vbWVudFxuICAgICAgLnR6KGRhdGV0aW1lICogTUlMTElTRUNfVE9fU0VDLCB0aW1lWm9uZSlcbiAgICAgIC5mb3JtYXQoXCJNTU1NIERELCBZWVlZXCIpO1xuXG4gIHJldHVybiBtb21lbnQudW5peChkYXRldGltZSkuZm9ybWF0KFwiTU1NTSBERCwgWVlZWVwiKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjYWxjdWxhdGVPcmRlclRvdGFscyA9ICh7IG9yZGVyLCBzdW1taXQgfSkgPT4ge1xuICBpZiAoIW9yZGVyIHx8ICFzdW1taXQpIHJldHVybiB7fTtcbiAgY29uc3QgdGlja2V0cyA9IG9yZGVyPy5tZW1iZXJUaWNrZXRzO1xuICBpZiAoIXRpY2tldHMpIHJldHVybiB7fTtcblxuICBjb25zdCB7IHJlZnVuZGVkX2Ftb3VudCwgZGlzY291bnRfYW1vdW50LCBhbW91bnQsIHJhd19hbW91bnQgfSA9IG9yZGVyO1xuICBjb25zdCB7IHRpY2tldF90eXBlcyB9ID0gc3VtbWl0O1xuXG4gIGNvbnN0IGN1cnJlbmN5T2JqZWN0ID0geyBjdXJyZW5jeTogb3JkZXIuY3VycmVuY3kgfTtcblxuICBjb25zdCB0YXhlc1N1bW1hcnkgPSBbXTtcbiAgY29uc3QgdGlja2V0U3VtbWFyeSA9IFtdO1xuICBsZXQgcHVyY2hhc2VUaWNrZXRUb3RhbCA9IDA7XG5cbiAgT2JqZWN0LmtleXMob3JkZXIudGlja2V0c19leGNlcnB0X2J5X3RpY2tldF90eXBlKS5tYXAoKHRpY2tldCkgPT4ge1xuICAgIGNvbnN0IHRpY2tldFR5cGUgPSB0aWNrZXRfdHlwZXM/LmZpbmQoKHR0KSA9PiB0dC5uYW1lID09PSB0aWNrZXQpO1xuICAgIGlmICghdGlja2V0VHlwZSkgcmV0dXJuIG51bGw7XG4gICAgdGlja2V0U3VtbWFyeS5wdXNoKHtcbiAgICAgIHRpY2tldF90eXBlX2lkOiB0aWNrZXRUeXBlLmlkLFxuICAgICAgdGlja2V0X3R5cGU6IHRpY2tldFR5cGUsXG4gICAgICBuYW1lOiB0aWNrZXQsXG4gICAgICBxdHk6IG9yZGVyLnRpY2tldHNfZXhjZXJwdF9ieV90aWNrZXRfdHlwZVt0aWNrZXRdXG4gICAgfSk7XG4gICAgcHVyY2hhc2VUaWNrZXRUb3RhbCArPVxuICAgICAgdGlja2V0VHlwZS5jb3N0ICogb3JkZXIudGlja2V0c19leGNlcnB0X2J5X3RpY2tldF90eXBlW3RpY2tldF07XG5cbiAgICByZXR1cm4gdGlja2V0U3VtbWFyeTtcbiAgfSk7XG5cbiAgb3JkZXI/LmFwcGxpZWRfdGF4ZXM/LmZvckVhY2goKHRheCkgPT4ge1xuICAgIGNvbnN0IGZvcm1hdHRlZFRheCA9IHtcbiAgICAgIC4uLnRheCxcbiAgICAgIGFtb3VudDogZm9ybWF0Q3VycmVuY3kodGF4LmFtb3VudCwgY3VycmVuY3lPYmplY3QpXG4gICAgfTtcbiAgICB0YXhlc1N1bW1hcnkucHVzaChmb3JtYXR0ZWRUYXgpO1xuICB9KTtcblxuICBjb25zdCBwdXJjaGFzZVRvdGFsID0gZm9ybWF0Q3VycmVuY3kocHVyY2hhc2VUaWNrZXRUb3RhbCwgY3VycmVuY3lPYmplY3QpO1xuXG4gIGNvbnN0IGRpc2NvdW50VG90YWwgPSBmb3JtYXRDdXJyZW5jeShkaXNjb3VudF9hbW91bnQsIGN1cnJlbmN5T2JqZWN0KTtcbiAgY29uc3QgcmVmdW5kVG90YWwgPSBmb3JtYXRDdXJyZW5jeShyZWZ1bmRlZF9hbW91bnQsIGN1cnJlbmN5T2JqZWN0KTtcbiAgY29uc3Qgc3ViVG90YWwgPSBmb3JtYXRDdXJyZW5jeShyYXdfYW1vdW50LCBjdXJyZW5jeU9iamVjdCk7XG4gIGNvbnN0IGFtb3VudFRvdGFsID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9yZGVyLCBcImFtb3VudFwiKVxuICAgID8gZm9ybWF0Q3VycmVuY3koYW1vdW50LCBjdXJyZW5jeU9iamVjdClcbiAgICA6IGZvcm1hdEN1cnJlbmN5KHB1cmNoYXNlVG90YWwsIGN1cnJlbmN5T2JqZWN0KTtcblxuICByZXR1cm4ge1xuICAgIGRpc2NvdW50VG90YWwsXG4gICAgcmVmdW5kVG90YWwsXG4gICAgc3ViVG90YWwsXG4gICAgYW1vdW50VG90YWwsXG4gICAgdGlja2V0U3VtbWFyeSxcbiAgICB0YXhlc1N1bW1hcnlcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRPcmRlclRpY2tldHMgPSAobWVtYmVyT3JkZXJzLCBvcmRlcklkKSA9PiB7XG4gIGNvbnN0IG9yZGVycyA9IG1lbWJlck9yZGVycy5maWx0ZXIoKG8pID0+IG8uaWQgPT09IG9yZGVySWQpO1xuICByZXR1cm4gb3JkZXJzWzBdPy5tZW1iZXJUaWNrZXRzO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEVwb2NoTG93ZXJVcHBlckluU2Vjb25kcyA9ICh0cykgPT4ge1xuICBjb25zdCBsb3dlciA9IHRzLnNldEhvdXJzKDAsIDAsIDAsIDApIC8gTUlMTElTRUNfVE9fU0VDO1xuICBjb25zdCB1cHBlciA9XG4gICAgdHMuc2V0SG91cnMoTEFTVF9IT1VSX09GXzI0X0hPVVIsIExBU1RfTUlOVVRFX09GX0hPVVIsIDAsIDApIC9cbiAgICBNSUxMSVNFQ19UT19TRUM7XG4gIHJldHVybiB7XG4gICAgbG93ZXIsXG4gICAgdXBwZXJcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0Q3VycmVudFRpbWUgPSAoKSA9PlxuICBNYXRoLnJvdW5kKCtuZXcgRGF0ZSgpIC8gTUlMTElTRUNfVE9fU0VDKTtcblxuZXhwb3J0IGNvbnN0IGdldE5vdyA9ICgpID0+IChkaXNwYXRjaCwgZ2V0U3RhdGUpID0+IHtcbiAgY29uc3QgeyB0aW1lclN0YXRlIH0gPSBnZXRTdGF0ZSgpO1xuICByZXR1cm4gdGltZXJTdGF0ZT8ubm93VXRjID09IG51bGwgPyBkZWZhdWx0Q3VycmVudFRpbWUoKSA6IHRpbWVyU3RhdGU/Lm5vd1V0Yztcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VOb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcblxuICByZXR1cm4gZGlzcGF0Y2goZ2V0Tm93KCkpO1xufTtcblxuLyoqXG4gKiBAcGFyYW0gY3VycmVudFBhZ2VcbiAqIEBwYXJhbSBkYXRhXG4gKiBAcGFyYW0gdG90YWxcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5leHBvcnQgY29uc3QgaGFzTG9hZGVkQWxsRGF0YSA9IChjdXJyZW50UGFnZSwgZGF0YSwgdG90YWwpID0+IHtcbiAgbGV0IHJlcyA9IGZhbHNlO1xuICBjb25zdCBkYXRhTGVuZ3RoID0gQXJyYXkuaXNBcnJheShkYXRhKSA/IGRhdGEubGVuZ3RoIDogMDtcbiAgLy8gd2UgYWxyZWFkeSBsb2FkZWQgYWxsICBkYXRhICggZmlyc3QgcGFnZSBpcyBhbHdheXMgcmVsb2FkZWQgaXQgKVxuICBpZiAoY3VycmVudFBhZ2UgPiBGSVJTVF9QQUdFICYmIGRhdGFMZW5ndGggPiAwICYmIGRhdGFMZW5ndGggPT09IHRvdGFsKVxuICAgIHJlcyA9IHRydWU7XG4gIHJldHVybiByZXM7XG59O1xuXG5leHBvcnQgY29uc3QgY2FsY3VsYXRlQWN0aXZlRmlsdGVycyA9IChmaWx0ZXJzKSA9PiB7XG4gIGxldCBjb3VudCA9IDA7XG4gIE9iamVjdC5lbnRyaWVzKGZpbHRlcnMpLmZvckVhY2goKFssIHZhbHVlXSkgPT4ge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgY291bnQgKz0gdmFsdWUubGVuZ3RoO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiICYmIHZhbHVlLnRyaW0oKSAhPT0gXCJcIikge1xuICAgICAgY291bnQrKztcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJudW1iZXJcIiAmJiB2YWx1ZSA+IDApIHtcbiAgICAgIGNvdW50Kys7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGNvdW50O1xufTtcbiIsImltcG9ydCBtb21lbnQgZnJvbSBcIm1vbWVudC10aW1lem9uZVwiO1xuaW1wb3J0IHsgTUlMTElTRUNfVE9fU0VDLCBPTkVfREFZIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyB1c2VOb3cgfSBmcm9tIFwiLlwiO1xuXG5leHBvcnQgY29uc3QgY2hlY2tTdW1taXRQYXN0ID0gKHN1bW1pdCwgbm93KSA9PiB7XG4gIGlmICghc3VtbWl0KSByZXR1cm4gbnVsbDtcblxuICBjb25zdCByZWFzc2lnbl9kYXRlID1cbiAgICBzdW1taXQ/LnJlYXNzaWduX3RpY2tldF90aWxsX2RhdGUgJiZcbiAgICBzdW1taXQucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZSA8IHN1bW1pdC5lbmRfZGF0ZVxuICAgICAgPyBzdW1taXQucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZVxuICAgICAgOiBzdW1taXQuZW5kX2RhdGU7XG5cbiAgcmV0dXJuIG5vdyA+IHJlYXNzaWduX2RhdGU7XG59O1xuXG5leHBvcnQgY29uc3QgY2hlY2tTdW1taXRTdGFydGVkID0gKHN1bW1pdCwgbm93KSA9PiB7XG4gIGlmICghc3VtbWl0KSByZXR1cm4gbnVsbDtcblxuICByZXR1cm4gc3VtbWl0LnN0YXJ0X2RhdGUgPCBub3c7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U3VtbWl0RGF5c0RpZmYgPSAoc3VtbWl0KSA9PiB7XG4gIGlmICghc3VtbWl0KSByZXR1cm4gbnVsbDtcbiAgY29uc3Qgc3RhcnREYXkgPSBtb21lbnQoc3VtbWl0LnN0YXJ0X2RhdGUgKiBNSUxMSVNFQ19UT19TRUMpLnR6KFxuICAgIHN1bW1pdC50aW1lX3pvbmVfaWRcbiAgKTtcbiAgY29uc3QgZW5kRGF5ID0gbW9tZW50KHN1bW1pdC5lbmRfZGF0ZSAqIE1JTExJU0VDX1RPX1NFQykudHooXG4gICAgc3VtbWl0LnRpbWVfem9uZV9pZFxuICApO1xuICBjb25zdCBkYXlzID0gZW5kRGF5Py5kaWZmKHN0YXJ0RGF5LCBcImRheXNcIik7XG4gIHJldHVybiB7XG4gICAgc3RhcnREYXksXG4gICAgZW5kRGF5LFxuICAgIGRheXNcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTdW1taXRGb3JtYXR0ZWREYXRlID0gKHN1bW1pdCkgPT4ge1xuICBpZiAoIXN1bW1pdCkgcmV0dXJuIG51bGw7XG4gIGNvbnN0IHsgc3RhcnREYXksIGVuZERheSwgZGF5cyB9ID0gZ2V0U3VtbWl0RGF5c0RpZmYoc3VtbWl0KTtcbiAgaWYgKCFzdGFydERheSB8fCAhZW5kRGF5KSByZXR1cm4gbnVsbDtcbiAgbGV0IGZvcm1hdFN0YXJ0RGF0ZSA9IFwiTU1NTSBERCwgWVlZWVwiO1xuICBsZXQgZm9ybWF0RW5kRGF0ZSA9IFwiTU1NTSBERCwgWVlZWVwiO1xuICBpZiAoc3RhcnREYXkueWVhcigpID09PSBlbmREYXkueWVhcigpKSBmb3JtYXRTdGFydERhdGUgPSBcIk1NTU0gRERcIjtcbiAgaWYgKHN0YXJ0RGF5Lm1vbnRoKCkgPT09IGVuZERheS5tb250aCgpKSBmb3JtYXRFbmREYXRlID0gXCJERCwgWVlZWVwiO1xuXG4gIGNvbnN0IHN0YXJ0RGF0ZSA9IHN0YXJ0RGF5LmZvcm1hdChmb3JtYXRTdGFydERhdGUpO1xuICBjb25zdCBlbmREYXRlID0gZW5kRGF5LmZvcm1hdChmb3JtYXRFbmREYXRlKTtcblxuICBpZiAoZGF5cyA+IE9ORV9EQVkpIHJldHVybiBgJHtzdGFydERhdGV9IC0gJHtlbmREYXRlfWA7XG5cbiAgcmV0dXJuIHN0YXJ0RGF0ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTdW1taXRMb2NhdGlvbiA9IChzdW1taXQpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuXG4gIGNvbnN0IGxvY2F0aW9uID0gc3VtbWl0LmxvY2F0aW9ucz8uZmluZChcbiAgICAobCkgPT4gbC5jbGFzc19uYW1lID09PSBcIlN1bW1pdFZlbnVlXCIgJiYgbC5pc19tYWluID09PSB0cnVlXG4gICk7XG5cbiAgaWYgKCFsb2NhdGlvbikgcmV0dXJuIG51bGw7XG5cbiAgcmV0dXJuIGAke2xvY2F0aW9uLmNpdHl9LCAke2xvY2F0aW9uLmNvdW50cnl9YDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTdW1taXRSZWFzc2lnbkRhdGUgPSAoc3VtbWl0KSA9PiB7XG4gIGlmICghc3VtbWl0KSByZXR1cm4gbnVsbDtcblxuICByZXR1cm4gc3VtbWl0LnJlYXNzaWduX3RpY2tldF90aWxsX2RhdGUgJiZcbiAgICBzdW1taXQucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZSA8IHN1bW1pdC5lbmRfZGF0ZVxuICAgID8gc3VtbWl0LnJlYXNzaWduX3RpY2tldF90aWxsX2RhdGVcbiAgICA6IHN1bW1pdC5lbmRfZGF0ZTtcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VTdW1taXREZXRhaWxzID0gKHsgc3VtbWl0IH0pID0+IHtcbiAgY29uc3Qgbm93ID0gdXNlTm93KCk7XG5cbiAgaWYgKCFzdW1taXQpIHJldHVybiB7fTtcblxuICBjb25zdCBsb2NhdGlvbiA9IGdldFN1bW1pdExvY2F0aW9uKHN1bW1pdCk7XG4gIGNvbnN0IGZvcm1hdHRlZERhdGUgPSBnZXRTdW1taXRGb3JtYXR0ZWREYXRlKHN1bW1pdCk7XG4gIGNvbnN0IHJlYXNzaWduRGF0ZSA9IGdldFN1bW1pdFJlYXNzaWduRGF0ZShzdW1taXQpO1xuICBjb25zdCBmb3JtYXR0ZWRSZWFzc2lnbkRhdGUgPSBtb21lbnQudHooXG4gICAgcmVhc3NpZ25EYXRlLFxuICAgIHN1bW1pdC50aW1lX3pvbmU/LnRpbWVfem9uZV9pZFxuICApO1xuICBjb25zdCBkYXlzVW50aWxSZWFzc2lnbkRlYWRsaW5lID0gZ2V0U3VtbWl0RGF5c0RpZmYoXG4gICAgbm93LFxuICAgIHJlYXNzaWduRGF0ZSxcbiAgICBzdW1taXQudGltZV96b25lPy5uYW1lXG4gICk7XG5cbiAgY29uc3QgaXNQYXN0ID0gY2hlY2tTdW1taXRQYXN0KHN1bW1pdCwgbm93KTtcbiAgY29uc3QgaXNTdGFydGVkID0gY2hlY2tTdW1taXRTdGFydGVkKHN1bW1pdCwgbm93KTtcbiAgY29uc3QgaXNSZWFzc2lnbmFibGUgPSByZWFzc2lnbkRhdGUgPiBub3c7XG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiBzdW1taXQ/Lm5hbWUsXG4gICAgbm93LFxuICAgIGxvY2F0aW9uLFxuICAgIGZvcm1hdHRlZERhdGUsXG4gICAgcmVhc3NpZ25EYXRlLFxuICAgIGZvcm1hdHRlZFJlYXNzaWduRGF0ZSxcbiAgICBkYXlzVW50aWxSZWFzc2lnbkRlYWRsaW5lLFxuICAgIGlzUGFzdCxcbiAgICBpc1N0YXJ0ZWQsXG4gICAgaXNSZWFzc2lnbmFibGVcbiAgfTtcbn07XG4iLCJpbXBvcnQgKiBhcyB5dXAgZnJvbSBcInl1cFwiO1xuaW1wb3J0IGkxOG4gZnJvbSBcIi4uL2kxOG5cIjtcbmltcG9ydCB7XG4gIE1JTl9SRVFVSVJFRCxcbiAgU1RBVFVTX0NBTkNFTExFRCxcbiAgU1RBVFVTX0NPTVBMRVRFLFxuICBTVEFUVVNfSU5DT01QTEVURSxcbiAgU1RBVFVTX1JFRlVORF9BUFBST1ZFRCxcbiAgU1RBVFVTX1JFRlVORF9BUFBST1ZFRF9MQyxcbiAgU1RBVFVTX1JFRlVORF9QRU5ESU5HLFxuICBTVEFUVVNfUkVGVU5EX1BFTkRJTkdfTEMsXG4gIFNUQVRVU19SRUZVTkRfUkVKRUNURUQsXG4gIFNUQVRVU19SRUZVTkRfUkVKRUNURURfTEMsXG4gIFNUQVRVU19VTkFTU0lHTkVEXG59IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgVElDS0VUX0FUVEVOREVFX0tFWVMgfSBmcm9tIFwiLi4vY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29uc3RhbnRzXCI7XG5pbXBvcnQge1xuICBjaGVja0lmVmFsdWVNYXRjaCxcbiAgZ2V0VHlwZUluaXRpYWxWYWx1ZSxcbiAgdG9TbHVnXG59IGZyb20gXCIuLi9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvdXRpbHNcIjtcbmltcG9ydCB7XG4gIFF1ZXN0aW9uVHlwZV9DaGVja2JveCxcbiAgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCxcbiAgUXVlc3Rpb25UeXBlX0NvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0XG59IGZyb20gXCIuLi9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgY29uc3Qgc3RhdHVzRGF0YSA9IHtcbiAgW1NUQVRVU19VTkFTU0lHTkVEXToge1xuICAgIHR5cGU6IFNUQVRVU19VTkFTU0lHTkVELFxuICAgIHRleHQ6IGkxOG4udChcInRpY2tldF9zdGF0dXMudW5hc3NpZ25lZFwiKVxuICB9LFxuICBbU1RBVFVTX0lOQ09NUExFVEVdOiB7XG4gICAgdHlwZTogU1RBVFVTX0lOQ09NUExFVEUsXG4gICAgdGV4dDogaTE4bi50KFwidGlja2V0X3N0YXR1cy5pbmNvbXBsZXRlXCIpXG4gIH0sXG4gIFtTVEFUVVNfQ09NUExFVEVdOiB7XG4gICAgdHlwZTogU1RBVFVTX0NPTVBMRVRFLFxuICAgIHRleHQ6IGkxOG4udChcInRpY2tldF9zdGF0dXMuY29tcGxldGVcIilcbiAgfSxcbiAgW1NUQVRVU19DQU5DRUxMRURdOiB7XG4gICAgdHlwZTogU1RBVFVTX0NBTkNFTExFRCxcbiAgICB0ZXh0OiBpMThuLnQoXCJ0aWNrZXRfc3RhdHVzLmNhbmNlbGxlZFwiKVxuICB9XG59O1xuZXhwb3J0IGNvbnN0IGdldFRpY2tldFN0YXR1c0tleSA9ICh0aWNrZXQpID0+IHtcbiAgaWYgKCF0aWNrZXQuaXNfYWN0aXZlKSByZXR1cm4gU1RBVFVTX0NBTkNFTExFRDtcblxuICBpZiAodGlja2V0Lm93bmVyX2lkID09PSAwKSByZXR1cm4gU1RBVFVTX1VOQVNTSUdORUQ7XG5cbiAgaWYgKCF0aWNrZXQub3duZXI/LmZpcnN0X25hbWUgfHwgIXRpY2tldC5vd25lcj8ubGFzdF9uYW1lKVxuICAgIHJldHVybiBTVEFUVVNfSU5DT01QTEVURTtcblxuICBpZiAodGlja2V0Lm93bmVyICYmIHRpY2tldC5vd25lcj8uc3RhdHVzID09PSBcIkluY29tcGxldGVcIilcbiAgICByZXR1cm4gU1RBVFVTX0lOQ09NUExFVEU7XG5cbiAgaWYgKHRpY2tldC5vd25lciAmJiB0aWNrZXQub3duZXI/LnN0YXR1cyA9PT0gXCJDb21wbGV0ZVwiKVxuICAgIHJldHVybiBTVEFUVVNfQ09NUExFVEU7XG5cbiAgcmV0dXJuIFNUQVRVU19JTkNPTVBMRVRFO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldFN0YXR1c0RhdGEgPSAodGlja2V0LCBpc1N1bW1pdFBhc3QpID0+XG4gIHN0YXR1c0RhdGFbZ2V0VGlja2V0U3RhdHVzS2V5KHRpY2tldCwgaXNTdW1taXRQYXN0KV07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRSb2xlID0gKHRpY2tldCkgPT4ge1xuICBpZiAoIXRpY2tldC5iYWRnZSkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3QgeyBmZWF0dXJlcyB9ID0gdGlja2V0LmJhZGdlO1xuXG4gIGlmIChmZWF0dXJlcy5sZW5ndGggPiAwKVxuICAgIHJldHVybiBmZWF0dXJlcy5tYXAoKGZlYXR1cmUpID0+IGZlYXR1cmUubmFtZSkuam9pbihcIiwgXCIpO1xuXG4gIHJldHVybiBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldFR5cGUgPSAodGlja2V0LCBzdW1taXQpID0+XG4gIHN1bW1pdC50aWNrZXRfdHlwZXMuZmluZCgodHlwZSkgPT4gdHlwZS5pZCA9PT0gdGlja2V0LnRpY2tldF90eXBlX2lkKTtcblxuZXhwb3J0IGNvbnN0IGlzVGlja2V0UmVmdW5kYWJsZSA9ICh0aWNrZXQpID0+XG4gIHRpY2tldD8uZmluYWxfYW1vdW50ID4gMCAmJlxuICB0aWNrZXQ/Lm5ldF9zZWxsaW5nX2Nvc3QgPiB0aWNrZXQucmVmdW5kZWRfYW1vdW50ICYmXG4gICF0aWNrZXQ/LnJlZnVuZF9yZXF1ZXN0cz8uc29tZShcbiAgICAocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9QRU5ESU5HX0xDXG4gICk7XG5cbmV4cG9ydCBjb25zdCB0aWNrZXRzUmVmdW5kYWJsZSA9ICh0aWNrZXRzKSA9PlxuICB0aWNrZXRzPy5maWx0ZXIoKHRpY2tldCkgPT4gaXNUaWNrZXRSZWZ1bmRhYmxlKHRpY2tldCkpLmxlbmd0aCB8fCAwO1xuXG5leHBvcnQgY29uc3QgZ2V0UmVmdW5kZWRSZXF1ZXN0ZWRUaWNrZXRzID0gKHRpY2tldHMpID0+XG4gIHRpY2tldHM/LmZpbHRlcigodGlja2V0KSA9PlxuICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfUEVORElOR19MQylcbiAgKTtcbmV4cG9ydCBjb25zdCBnZXRBbGxSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRzID0gKHRpY2tldHMpID0+IHtcbiAgY29uc3QgYWxsVGlja2V0cyA9IFtdO1xuICB0aWNrZXRzPy5tYXAoKHRpY2tldCkgPT4ge1xuICAgIGlmIChcbiAgICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoXG4gICAgICAgIChycikgPT4gcnIuc3RhdHVzID09PSBTVEFUVVNfUkVGVU5EX1BFTkRJTkdfTENcbiAgICAgICkgfHxcbiAgICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoXG4gICAgICAgIChycikgPT4gcnIuc3RhdHVzID09PSBTVEFUVVNfUkVGVU5EX0FQUFJPVkVEX0xDXG4gICAgICApIHx8XG4gICAgICB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5zb21lKFxuICAgICAgICAocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9SRUpFQ1RFRF9MQ1xuICAgICAgKVxuICAgICkge1xuICAgICAgYWxsVGlja2V0cy5wdXNoKHRpY2tldCk7XG4gICAgfVxuICAgIHJldHVybiB0aWNrZXQ7XG4gIH0pO1xuICByZXR1cm4gYWxsVGlja2V0cztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRSZWZ1bmRlZFJlcXVlc3RlZFN0YXR1cyA9ICh0aWNrZXQpID0+IHtcbiAgaWYgKFxuICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfUEVORElOR19MQylcbiAgKVxuICAgIHJldHVybiBTVEFUVVNfUkVGVU5EX1BFTkRJTkc7XG4gIGlmIChcbiAgICB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5zb21lKFxuICAgICAgKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfQVBQUk9WRURfTENcbiAgICApXG4gIClcbiAgICByZXR1cm4gU1RBVFVTX1JFRlVORF9BUFBST1ZFRDtcbiAgaWYgKFxuICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoXG4gICAgICAocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9SRUpFQ1RFRF9MQ1xuICAgIClcbiAgKVxuICAgIHJldHVybiBTVEFUVVNfUkVGVU5EX1JFSkVDVEVEO1xuICByZXR1cm4gU1RBVFVTX1JFRlVORF9QRU5ESU5HO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFJlZnVuZFJlcXVlc3RlZFN0YXR1c0NvbG9yID0gKHRpY2tldCkgPT4ge1xuICBjb25zdCBzdGF0dXMgPSBnZXRSZWZ1bmRlZFJlcXVlc3RlZFN0YXR1cyh0aWNrZXQpO1xuICBsZXQgc3RhdHVzQ29sb3IgPSBcIlwiO1xuICBzd2l0Y2ggKHN0YXR1cykge1xuICAgIGNhc2UgU1RBVFVTX1JFRlVORF9QRU5ESU5HOlxuICAgICAgc3RhdHVzQ29sb3IgPSBcInBlbmRpbmdcIjtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgU1RBVFVTX1JFRlVORF9BUFBST1ZFRDpcbiAgICAgIHN0YXR1c0NvbG9yID0gXCJhcHByb3ZlZFwiO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBTVEFUVVNfUkVGVU5EX1JFSkVDVEVEOlxuICAgICAgc3RhdHVzQ29sb3IgPSBcInJlamVjdGVkXCI7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc3RhdHVzQ29sb3IgPSBcInBlbmRpbmdcIjtcbiAgfVxuICByZXR1cm4gc3RhdHVzQ29sb3I7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VHlwZVZhbGlkYXRpb24gPSAodHlwZSwgbmFtZSwgaXNSZXF1aXJlZCkgPT4ge1xuICBsZXQgc2NoZW1hO1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja2JveDpcbiAgICAgIHNjaGVtYSA9IHl1cC5ib29sKCkub25lT2YoW3RydWVdLCBpMThuLnQoXCJ2YWxpZGF0aW9uLmNoZWNrYm94LnJlcXVpcmVkXCIpKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdDpcbiAgICAgIHNjaGVtYSA9IHl1cC5zdHJpbmcoYEVudGVyICR7bmFtZX1gKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdDpcbiAgICAgIHNjaGVtYSA9IHl1cC5hcnJheSgpLm9mKHl1cC5zdHJpbmcoKSk7XG4gICAgICBpZiAoaXNSZXF1aXJlZCkgc2NoZW1hID0gc2NoZW1hLm1pbihNSU5fUkVRVUlSRUQsIGAke25hbWV9IGlzIHJlcXVpcmVkYCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3g6XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ29tYm9Cb3g6XG4gICAgICBzY2hlbWEgPSB5dXAuc3RyaW5nKGBFbnRlciAke25hbWV9YCk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc2NoZW1hID0geXVwLnN0cmluZyhgRW50ZXIgJHtuYW1lfWApO1xuICAgICAgYnJlYWs7XG4gIH1cblxuICBpZiAoaXNSZXF1aXJlZCkge1xuICAgIHNjaGVtYSA9IHNjaGVtYS5yZXF1aXJlZChgJHtuYW1lfSBpcyByZXF1aXJlZGApO1xuICB9XG5cbiAgcmV0dXJuIHNjaGVtYTtcbn07XG5cbmNvbnN0IHBhcnNlU3ViUXVlc3Rpb25BbnN3ZXIgPSAoXG4gIHEsXG4gIGFuc3dlcnMsXG4gIGFuc3dlcixcbiAgaW5pdGlhbFZhbHVlcyxcbiAgb25seVJlbGV2YW50XG4pID0+IHtcbiAgaWYgKHEuc3ViX3F1ZXN0aW9uX3J1bGVzPy5sZW5ndGggPiAwKSB7XG4gICAgcS5zdWJfcXVlc3Rpb25fcnVsZXMuZm9yRWFjaCgocnVsZSkgPT4ge1xuICAgICAgY29uc3QgeyBzdWJfcXVlc3Rpb24sIGFuc3dlcl92YWx1ZXMgfSA9IHJ1bGU7XG4gICAgICBjb25zdCBzdWJRdWVzdGlvblNsdWcgPSB0b1NsdWcoc3ViX3F1ZXN0aW9uLm5hbWUsIHN1Yl9xdWVzdGlvbi5pZCk7XG4gICAgICBjb25zdCBzdWJBbnN3ZXIgPSBhbnN3ZXJzW3N1YlF1ZXN0aW9uU2x1Z107XG4gICAgICBjb25zdCBtYXRjaCA9IGNoZWNrSWZWYWx1ZU1hdGNoKGFuc3dlciwgYW5zd2VyX3ZhbHVlcyk7XG5cbiAgICAgIGlmICghb25seVJlbGV2YW50IHx8IG1hdGNoKSB7XG4gICAgICAgIGluaXRpYWxWYWx1ZXNbc3ViUXVlc3Rpb25TbHVnXSA9XG4gICAgICAgICAgc3ViQW5zd2VyIHx8IGdldFR5cGVJbml0aWFsVmFsdWUoc3ViX3F1ZXN0aW9uKTtcbiAgICAgIH1cblxuICAgICAgcGFyc2VTdWJRdWVzdGlvbkFuc3dlcihcbiAgICAgICAgc3ViX3F1ZXN0aW9uLFxuICAgICAgICBhbnN3ZXJzLFxuICAgICAgICBzdWJBbnN3ZXIsXG4gICAgICAgIGluaXRpYWxWYWx1ZXMsXG4gICAgICAgIG9ubHlSZWxldmFudFxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHBhcnNlQW5zd2VycyA9IChcbiAgb3duZXIsXG4gIGV4dHJhUXVlc3Rpb25zLFxuICBhbnN3ZXJzLFxuICBpbmNsdWRlQXR0ZW5kZWVJbmZvLFxuICBpbmNsdWRlRGlzY2xhaW1lcixcbiAgb25seVJlbGV2YW50ID0gZmFsc2VcbikgPT4ge1xuICBjb25zdCBpbml0aWFsVmFsdWVzID0ge307XG5cbiAgaWYgKGluY2x1ZGVBdHRlbmRlZUluZm8pIHtcbiAgICBpbml0aWFsVmFsdWVzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmVtYWlsXSA9XG4gICAgICBhbnN3ZXJzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmVtYWlsXSB8fCBvd25lci5lbWFpbCB8fCBcIlwiO1xuICAgIGluaXRpYWxWYWx1ZXNbVElDS0VUX0FUVEVOREVFX0tFWVMuZmlyc3ROYW1lXSA9XG4gICAgICBhbnN3ZXJzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmZpcnN0TmFtZV0gfHwgb3duZXIuZmlyc3RfbmFtZSB8fCBcIlwiO1xuICAgIGluaXRpYWxWYWx1ZXNbVElDS0VUX0FUVEVOREVFX0tFWVMubGFzdE5hbWVdID1cbiAgICAgIGFuc3dlcnNbVElDS0VUX0FUVEVOREVFX0tFWVMubGFzdE5hbWVdIHx8IG93bmVyLmxhc3RfbmFtZSB8fCBcIlwiO1xuICAgIGluaXRpYWxWYWx1ZXNbVElDS0VUX0FUVEVOREVFX0tFWVMuY29tcGFueV0gPVxuICAgICAgYW5zd2Vyc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5jb21wYW55XSB8fCBvd25lci5jb21wYW55O1xuICB9XG5cbiAgaWYgKGluY2x1ZGVEaXNjbGFpbWVyKSB7XG4gICAgaW5pdGlhbFZhbHVlc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5kaXNjbGFpbWVyQWNjZXB0ZWRdID1cbiAgICAgIGFuc3dlcnNbVElDS0VUX0FUVEVOREVFX0tFWVMuZGlzY2xhaW1lckFjY2VwdGVkXSB8fFxuICAgICAgb3duZXIuZGlzY2xhaW1lcl9hY2NlcHRlZDtcbiAgfVxuXG4gIGV4dHJhUXVlc3Rpb25zLmZvckVhY2goKHEpID0+IHtcbiAgICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocS5uYW1lLCBxLmlkKTtcbiAgICBjb25zdCBhbnN3ZXIgPSBhbnN3ZXJzW3F1ZXN0aW9uU2x1Z107XG4gICAgaW5pdGlhbFZhbHVlc1txdWVzdGlvblNsdWddID0gYW5zd2VyIHx8IGdldFR5cGVJbml0aWFsVmFsdWUocSk7XG5cbiAgICBwYXJzZVN1YlF1ZXN0aW9uQW5zd2VyKHEsIGFuc3dlcnMsIGFuc3dlciwgaW5pdGlhbFZhbHVlcywgb25seVJlbGV2YW50KTtcbiAgfSk7XG5cbiAgcmV0dXJuIGluaXRpYWxWYWx1ZXM7XG59O1xuXG5jb25zdCBidWlsZFN1YlF1ZXN0aW9uVmFsaWRhdGlvblNjaGVtYSA9IChxdWVzdGlvblNsdWcsIHJ1bGUsIHNjaGVtYSkgPT4ge1xuICBjb25zdCBzdWJRdWVzdGlvbiA9IHJ1bGUuc3ViX3F1ZXN0aW9uO1xuICBjb25zdCBzdWJRdWVzdGlvblNsdWcgPSB0b1NsdWcoc3ViUXVlc3Rpb24ubmFtZSwgc3ViUXVlc3Rpb24uaWQpO1xuXG4gIHNjaGVtYVtzdWJRdWVzdGlvblNsdWddID0gZ2V0VHlwZVZhbGlkYXRpb24oXG4gICAgc3ViUXVlc3Rpb24udHlwZSxcbiAgICBzdWJRdWVzdGlvbi5uYW1lLFxuICAgIGZhbHNlXG4gIClcbiAgICAubnVsbGFibGUoKVxuICAgIC53aGVuKHF1ZXN0aW9uU2x1Zywge1xuICAgICAgaXM6IChxdWVzdGlvbkFucykgPT4ge1xuICAgICAgICBjb25zdCBhbnNWYWx1ZU1hdGNoID0gY2hlY2tJZlZhbHVlTWF0Y2goXG4gICAgICAgICAgcXVlc3Rpb25BbnMsXG4gICAgICAgICAgcnVsZS5hbnN3ZXJfdmFsdWVzXG4gICAgICAgICk7XG4gICAgICAgIC8vIGNoZWNrIGlmIHF1ZXN0aW9uIGlzIHZpc2libGUgdG8gYWRkIHZhbGlkYXRpb25cbiAgICAgICAgY29uc3QgaXNWaXNpYmxlID0gISFkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcbiAgICAgICAgICBgJHtxdWVzdGlvblNsdWd9X2NvbnRhaW5lcmBcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIGFuc1ZhbHVlTWF0Y2ggJiYgaXNWaXNpYmxlO1xuICAgICAgfSxcbiAgICAgIHRoZW46IChzY2gpID0+IHtcbiAgICAgICAgaWYgKHN1YlF1ZXN0aW9uLnR5cGUgPT09IFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QpIHtcbiAgICAgICAgICByZXR1cm4gc2NoXG4gICAgICAgICAgICAubWluKE1JTl9SRVFVSVJFRCwgaTE4bi50KFwidmFsaWRhdGlvbi5yZXF1aXJlZF9xdWVzdGlvblwiKSlcbiAgICAgICAgICAgIC5yZXF1aXJlZChpMThuLnQoXCJ2YWxpZGF0aW9uLnJlcXVpcmVkX3F1ZXN0aW9uXCIpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2NoLnJlcXVpcmVkKGkxOG4udChcInZhbGlkYXRpb24ucmVxdWlyZWRfcXVlc3Rpb25cIikpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gIGlmIChzdWJRdWVzdGlvbi5zdWJfcXVlc3Rpb25fcnVsZXM/Lmxlbmd0aCA+IDApIHtcbiAgICBzdWJRdWVzdGlvbi5zdWJfcXVlc3Rpb25fcnVsZXMuZm9yRWFjaCgoc3ViUnVsZSkgPT4ge1xuICAgICAgYnVpbGRTdWJRdWVzdGlvblZhbGlkYXRpb25TY2hlbWEoc3ViUXVlc3Rpb25TbHVnLCBzdWJSdWxlLCBzY2hlbWEpO1xuICAgIH0pO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgYnVpbGRWYWxpZGF0aW9uU2NoZW1hID0gKFxuICBleHRyYVF1ZXN0aW9ucyxcbiAgaW5jbHVkZUF0dGVuZGVlSW5mbyxcbiAgZGlzY2xhaW1lck1hbmRhdG9yeVxuKSA9PiB7XG4gIGNvbnN0IHNjaGVtYSA9IHt9O1xuXG4gIGlmIChpbmNsdWRlQXR0ZW5kZWVJbmZvKSB7XG4gICAgc2NoZW1hW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmVtYWlsXSA9IHl1cFxuICAgICAgLnN0cmluZyhpMThuLnQoXCJ2YWxpZGF0aW9uLmVtYWlsLnN0cmluZ1wiKSlcbiAgICAgIC5lbWFpbChpMThuLnQoXCJ2YWxpZGF0aW9uLmVtYWlsLmZvcm1hdFwiKSlcbiAgICAgIC5yZXF1aXJlZChpMThuLnQoXCJ2YWxpZGF0aW9uLmVtYWlsLnJlcXVpcmVkXCIpKTtcbiAgICBzY2hlbWFbVElDS0VUX0FUVEVOREVFX0tFWVMuZmlyc3ROYW1lXSA9IHl1cFxuICAgICAgLnN0cmluZyhpMThuLnQoXCJ2YWxpZGF0aW9uLmZpcnN0X25hbWUuc3RyaW5nXCIpKVxuICAgICAgLnJlcXVpcmVkKGkxOG4udChcInZhbGlkYXRpb24uZmlyc3RfbmFtZS5yZXF1aXJlZFwiKSk7XG4gICAgc2NoZW1hW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmxhc3ROYW1lXSA9IHl1cFxuICAgICAgLnN0cmluZyhpMThuLnQoXCJ2YWxpZGF0aW9uLmxhc3RfbmFtZS5zdHJpbmdcIikpXG4gICAgICAucmVxdWlyZWQoaTE4bi50KFwidmFsaWRhdGlvbi5sYXN0X25hbWUucmVxdWlyZWRcIikpO1xuICAgIHNjaGVtYVtUSUNLRVRfQVRURU5ERUVfS0VZUy5jb21wYW55XSA9IHl1cC5sYXp5KCh2YWx1ZSkgPT5cbiAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIlxuICAgICAgICA/IHl1cFxuICAgICAgICAgICAgLm9iamVjdCgpXG4gICAgICAgICAgICAucmVxdWlyZWQoaTE4bi50KFwidmFsaWRhdGlvbi5jb21wYW55LnJlcXVpcmVkXCIpKVxuICAgICAgICAgICAgLnR5cGVFcnJvcihpMThuLnQoXCJ2YWxpZGF0aW9uLnJlcXVpcmVkX2ZpZWxkXCIpKVxuICAgICAgICA6IHl1cC5zdHJpbmcoKS5yZXF1aXJlZChpMThuLnQoXCJ2YWxpZGF0aW9uLmNvbXBhbnkucmVxdWlyZWRcIikpXG4gICAgKTtcbiAgfVxuXG4gIGlmIChkaXNjbGFpbWVyTWFuZGF0b3J5KSB7XG4gICAgc2NoZW1hW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmRpc2NsYWltZXJBY2NlcHRlZF0gPSB5dXBcbiAgICAgIC5ib29sKClcbiAgICAgIC5vbmVPZihbdHJ1ZV0sIGkxOG4udChcInZhbGlkYXRpb24uY2hlY2tib3gucmVxdWlyZWRcIikpO1xuICB9XG5cbiAgZXh0cmFRdWVzdGlvbnMuZm9yRWFjaCgocSkgPT4ge1xuICAgIGNvbnN0IHsgaWQsIG5hbWUsIHR5cGUsIG1hbmRhdG9yeSwgc3ViX3F1ZXN0aW9uX3J1bGVzIH0gPSBxO1xuICAgIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhuYW1lLCBpZCk7XG4gICAgc2NoZW1hW3F1ZXN0aW9uU2x1Z10gPSBnZXRUeXBlVmFsaWRhdGlvbih0eXBlLCBuYW1lLCBtYW5kYXRvcnkpO1xuXG4gICAgaWYgKHN1Yl9xdWVzdGlvbl9ydWxlcz8ubGVuZ3RoID4gMCkge1xuICAgICAgc3ViX3F1ZXN0aW9uX3J1bGVzLmZvckVhY2goKHJ1bGUpID0+IHtcbiAgICAgICAgYnVpbGRTdWJRdWVzdGlvblZhbGlkYXRpb25TY2hlbWEocXVlc3Rpb25TbHVnLCBydWxlLCBzY2hlbWEpO1xuICAgICAgfSk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4geXVwLm9iamVjdChzY2hlbWEpO1xufTtcblxuZXhwb3J0IGNvbnN0IHVwZGF0ZVRpY2tldENvbGxlY3Rpb24gPSAodGlja2V0cywgdGlja2V0KSA9PlxuICB0aWNrZXRzLm1hcCgodCkgPT4ge1xuICAgIGNvbnN0IHRtcFRpY2tldCA9IHsgLi4udCB9O1xuICAgIC8vIHVwZGF0ZSBhdHRlbmRlZVxuICAgIGlmIChcbiAgICAgIHQub3duZXI/LmlkID09PSB0aWNrZXQub3duZXI/LmlkICYmXG4gICAgICB0Lm93bmVyPy5zdGF0dXMgIT09IHRpY2tldC5vd25lcj8uc3RhdHVzXG4gICAgKSB7XG4gICAgICB0bXBUaWNrZXQub3duZXIgPSB0aWNrZXQub3duZXI7XG4gICAgfVxuICAgIHJldHVybiB0LmlkID09PSB0aWNrZXQuaWQgPyB0aWNrZXQgOiB0bXBUaWNrZXQ7XG4gIH0pO1xuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImJhZGdlRmVhdHVyZUljb25fX19zS1ZUQ1wiO1xudmFyIF8yID0gXCJiYWRnZUZlYXR1cmVJbWFnZV9fX1lPNGZzXCI7XG52YXIgXzMgPSBcImJhZGdlRmVhdHVyZUluaXRpYWxzX19fa1c3WmtcIjtcbmV4cG9ydCB7IF8xIGFzIFwiYmFkZ2VGZWF0dXJlSWNvblwiLCBfMiBhcyBcImJhZGdlRmVhdHVyZUltYWdlXCIsIF8zIGFzIFwiYmFkZ2VGZWF0dXJlSW5pdGlhbHNcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiY29weUljb25fX19sSTNlUVwiO1xudmFyIF8yID0gXCJyZXZlcnNlZF9fX3pKem1EXCI7XG52YXIgXzMgPSBcInRydW5jYXRlZF9fX2pXU25VXCI7XG52YXIgXzQgPSBcIndyYXBwZXJfX19tVlBpUlwiO1xuZXhwb3J0IHsgXzEgYXMgXCJjb3B5SWNvblwiLCBfMiBhcyBcInJldmVyc2VkXCIsIF8zIGFzIFwidHJ1bmNhdGVkXCIsIF80IGFzIFwid3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJNdWlPdXRsaW5lZElucHV0LW5vdGNoZWRPdXRsaW5lX19fbXhFS1dcIjtcbnZhciBfMiA9IFwiTXVpUGlja2Vyc0NhbGVuZGFySGVhZGVyLWxhYmVsQ29udGFpbmVyX19fTzRzU3NcIjtcbnZhciBfMyA9IFwiY2FsZW5kYXJEaXNwbGF5X19fRjNudUtcIjtcbnZhciBfNCA9IFwiY2xlYW5CdXR0b25fX19xcUR2VVwiO1xudmFyIF81ID0gXCJjb250YWluZXJfX19RZVFZX1wiO1xudmFyIF82ID0gXCJkYXRlUGlja2VyQ29udGFpbmVyX19fWjQybXdcIjtcbnZhciBfNyA9IFwiZGF0ZXBpY2tlckNsb3NlX19fVFo3a0pcIjtcbnZhciBfOCA9IFwiZmlsdGVyQ2hlY2tib3hDb250YWluZXJfX19rVW5XOVwiO1xudmFyIF85ID0gXCJmaWx0ZXJDb250YWluZXJfX19ycnFwOVwiO1xudmFyIF9hID0gXCJmaWx0ZXJEYXRlTGFiZWxfX19KZ2Jjc1wiO1xudmFyIF9iID0gXCJmaWx0ZXJJY29uX19faWlPem9cIjtcbnZhciBfYyA9IFwiZmlsdGVyTGFiZWxfX19za1pQN1wiO1xudmFyIF9kID0gXCJmaWx0ZXJMaXN0Q29udGFpbmVyX19fSURybFNcIjtcbnZhciBfZSA9IFwiZmlsdGVyTnVtQWN0aXZlX19fa21FRUtcIjtcbnZhciBfZiA9IFwiZmlsdGVyU29ydENvbnRhaW5lcl9fX25oTkpzXCI7XG52YXIgXzEwID0gXCJsYWJlbF9fX0xBbWVfXCI7XG52YXIgXzExID0gXCJzaG93RmlsdGVyTGlzdF9fX0lXNHhHXCI7XG52YXIgXzEyID0gXCJzb3J0Q29udGFpbmVyX19fc2I1QmRcIjtcbnZhciBfMTMgPSBcInNvcnRJY29uX19fY19YWmlcIjtcbnZhciBfMTQgPSBcInNvcnRMYWJlbF9fX2RYaU15XCI7XG52YXIgXzE1ID0gXCJzb3J0TGlzdENvbnRhaW5lcl9fX1BwMlhnXCI7XG52YXIgXzE2ID0gXCJ0aXRsZVdyYXBwZXJfX19QNm1QdVwiO1xuZXhwb3J0IHsgXzEgYXMgXCJNdWlPdXRsaW5lZElucHV0LW5vdGNoZWRPdXRsaW5lXCIsIF8yIGFzIFwiTXVpUGlja2Vyc0NhbGVuZGFySGVhZGVyLWxhYmVsQ29udGFpbmVyXCIsIF8zIGFzIFwiY2FsZW5kYXJEaXNwbGF5XCIsIF80IGFzIFwiY2xlYW5CdXR0b25cIiwgXzUgYXMgXCJjb250YWluZXJcIiwgXzYgYXMgXCJkYXRlUGlja2VyQ29udGFpbmVyXCIsIF83IGFzIFwiZGF0ZXBpY2tlckNsb3NlXCIsIF84IGFzIFwiZmlsdGVyQ2hlY2tib3hDb250YWluZXJcIiwgXzkgYXMgXCJmaWx0ZXJDb250YWluZXJcIiwgX2EgYXMgXCJmaWx0ZXJEYXRlTGFiZWxcIiwgX2IgYXMgXCJmaWx0ZXJJY29uXCIsIF9jIGFzIFwiZmlsdGVyTGFiZWxcIiwgX2QgYXMgXCJmaWx0ZXJMaXN0Q29udGFpbmVyXCIsIF9lIGFzIFwiZmlsdGVyTnVtQWN0aXZlXCIsIF9mIGFzIFwiZmlsdGVyU29ydENvbnRhaW5lclwiLCBfMTAgYXMgXCJsYWJlbFwiLCBfMTEgYXMgXCJzaG93RmlsdGVyTGlzdFwiLCBfMTIgYXMgXCJzb3J0Q29udGFpbmVyXCIsIF8xMyBhcyBcInNvcnRJY29uXCIsIF8xNCBhcyBcInNvcnRMYWJlbFwiLCBfMTUgYXMgXCJzb3J0TGlzdENvbnRhaW5lclwiLCBfMTYgYXMgXCJ0aXRsZVdyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiY2FuY2VsQnRuX19fcURleGhcIjtcbnZhciBfMiA9IFwiZm9vdGVyX19fU043MHlcIjtcbnZhciBfMyA9IFwic2F2ZUJ0bl9fX25iVTZjXCI7XG5leHBvcnQgeyBfMSBhcyBcImNhbmNlbEJ0blwiLCBfMiBhcyBcImZvb3RlclwiLCBfMyBhcyBcInNhdmVCdG5cIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiZXJyb3JMYWJlbF9fX25vY3lYXCI7XG5leHBvcnQgeyBfMSBhcyBcImVycm9yTGFiZWxcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwibXlPcmRlcnNXcmFwcGVyX19fSEpteXNcIjtcbnZhciBfMiA9IFwibm9PcmRlcnNGb3VuZF9fX0RSd2dvXCI7XG52YXIgXzMgPSBcIm5vT3JkZXJzSWNvbldyYXBwZXJfX190UFRtWVwiO1xuZXhwb3J0IHsgXzEgYXMgXCJteU9yZGVyc1dyYXBwZXJcIiwgXzIgYXMgXCJub09yZGVyc0ZvdW5kXCIsIF8zIGFzIFwibm9PcmRlcnNJY29uV3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJib2R5X19fQVdkaUxcIjtcbnZhciBfMiA9IFwiaWNvbldyYXBwZXJfX19temV2S1wiO1xudmFyIF8zID0gXCJ0aXRsZV9fX00yNDJtXCI7XG52YXIgXzQgPSBcIndyYXBwZXJfX19Rc3dDUFwiO1xuZXhwb3J0IHsgXzEgYXMgXCJib2R5XCIsIF8yIGFzIFwiaWNvbldyYXBwZXJcIiwgXzMgYXMgXCJ0aXRsZVwiLCBfNCBhcyBcIndyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwib3JkZXJEZXRhaWxzTW1vdW50X19fcjNrUkFcIjtcbnZhciBfMiA9IFwib3JkZXJEZXRhaWxzVGlja2V0c19fX200SWpLXCI7XG52YXIgXzMgPSBcIm9yZGVyU3VtbWFyeUJ1dHRvbl9fX3V4amh0XCI7XG52YXIgXzQgPSBcIm9yZGVyU3VtbWFyeVB1cmNoYXNlZEluZm9fX19fUkJYRVwiO1xudmFyIF81ID0gXCJvcmRlclN1bW1hcnlUYWJsZV9fX1lEbnhWXCI7XG52YXIgXzYgPSBcIm9yZGVyU3VtbWFyeVdyYXBwZXJfX19Sd0lFUlwiO1xudmFyIF83ID0gXCJyZWZ1bmREaXNhYmxlZF9fX2p2cmszXCI7XG5leHBvcnQgeyBfMSBhcyBcIm9yZGVyRGV0YWlsc01tb3VudFwiLCBfMiBhcyBcIm9yZGVyRGV0YWlsc1RpY2tldHNcIiwgXzMgYXMgXCJvcmRlclN1bW1hcnlCdXR0b25cIiwgXzQgYXMgXCJvcmRlclN1bW1hcnlQdXJjaGFzZWRJbmZvXCIsIF81IGFzIFwib3JkZXJTdW1tYXJ5VGFibGVcIiwgXzYgYXMgXCJvcmRlclN1bW1hcnlXcmFwcGVyXCIsIF83IGFzIFwicmVmdW5kRGlzYWJsZWRcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiYXNzaWduVGlja2V0QnV0dG9uX19fenpMc2NcIjtcbnZhciBfMiA9IFwiYXNzaWduVG9NZVRleHRfX19aUGFleFwiO1xudmFyIF8zID0gXCJhc3NpZ25lZEJ5VGV4dF9fX2JOWjd6XCI7XG52YXIgXzQgPSBcImFzc2lnbmVkVG9NZURlc19fX0dqRmtWXCI7XG52YXIgXzUgPSBcImFzc2lnbmVkVG9NZVdyYXBwZXJfX19VeGMyeVwiO1xudmFyIF82ID0gXCJiYWRnZUZlYXR1cmVXcmFwcGVyX19fSVFMTlBcIjtcbnZhciBfNyA9IFwiY2hlY2tib3hfX19YWkpwYlwiO1xudmFyIF84ID0gXCJkaXNhYmxlZFJlZnVuZF9fX1NmZmw3XCI7XG52YXIgXzkgPSBcImRpc3BsYXlfbm9uZV9fX0NxcEwzXCI7XG52YXIgX2EgPSBcImxhYmVsX19felhEV3pcIjtcbnZhciBfYiA9IFwib3JkZXJUaWNrZXRDb250YWluZXJfX19aSkx6a1wiO1xudmFyIF9jID0gXCJvcmRlclRpY2tldEluZm9fX19nZW1xQlwiO1xudmFyIF9kID0gXCJvcmRlclRpY2tldEluZm9Db250YWluZXJfX19fcDY2VlwiO1xudmFyIF9lID0gXCJvcmRlcldyYXBwZXJfX195REJBb1wiO1xudmFyIF9mID0gXCJyZWFzc2lnbkJ1dHRvbl9fX1Jvak01XCI7XG52YXIgXzEwID0gXCJyZWZ1bmRCdXR0b25zX19fakRsNEhcIjtcbnZhciBfMTEgPSBcInJlZnVuZE1vZGFsX19fRXFnUEZcIjtcbnZhciBfMTIgPSBcInNlbGVjdGVkX19fSFdHTmNcIjtcbnZhciBfMTMgPSBcInRhYkJ1dHRvbnNfX194VHlKQVwiO1xudmFyIF8xNCA9IFwidGlja2V0QWN0aW9uQnV0dG9uc19fX3JwU01RXCI7XG52YXIgXzE1ID0gXCJ0aWNrZXRGb290ZXJfX19qM2JkaVwiO1xudmFyIF8xNiA9IFwidGlja2V0TGlzdENvbnRhaW5lcl9fX2NmbXJyXCI7XG52YXIgXzE3ID0gXCJ0aWNrZXROb19fX2EyaU05XCI7XG52YXIgXzE4ID0gXCJ0aWNrZXRPd25lckVtYWlsX19fWnQ0T0VcIjtcbnZhciBfMTkgPSBcInRpY2tldFRpY2tldFR5cGVfX19acV9mMFwiO1xudmFyIF8xYSA9IFwidmlld0ZpbmlzaFRpY2tldEJ1dHRvbl9fX0hGNkltXCI7XG52YXIgXzFiID0gXCJ2aWV3TW9yZUJ1dHRvbl9fX0tfMXpUXCI7XG5leHBvcnQgeyBfMSBhcyBcImFzc2lnblRpY2tldEJ1dHRvblwiLCBfMiBhcyBcImFzc2lnblRvTWVUZXh0XCIsIF8zIGFzIFwiYXNzaWduZWRCeVRleHRcIiwgXzQgYXMgXCJhc3NpZ25lZFRvTWVEZXNcIiwgXzUgYXMgXCJhc3NpZ25lZFRvTWVXcmFwcGVyXCIsIF82IGFzIFwiYmFkZ2VGZWF0dXJlV3JhcHBlclwiLCBfNyBhcyBcImNoZWNrYm94XCIsIF84IGFzIFwiZGlzYWJsZWRSZWZ1bmRcIiwgXzkgYXMgXCJkaXNwbGF5X25vbmVcIiwgX2EgYXMgXCJsYWJlbFwiLCBfYiBhcyBcIm9yZGVyVGlja2V0Q29udGFpbmVyXCIsIF9jIGFzIFwib3JkZXJUaWNrZXRJbmZvXCIsIF9kIGFzIFwib3JkZXJUaWNrZXRJbmZvQ29udGFpbmVyXCIsIF9lIGFzIFwib3JkZXJXcmFwcGVyXCIsIF9mIGFzIFwicmVhc3NpZ25CdXR0b25cIiwgXzEwIGFzIFwicmVmdW5kQnV0dG9uc1wiLCBfMTEgYXMgXCJyZWZ1bmRNb2RhbFwiLCBfMTIgYXMgXCJzZWxlY3RlZFwiLCBfMTMgYXMgXCJ0YWJCdXR0b25zXCIsIF8xNCBhcyBcInRpY2tldEFjdGlvbkJ1dHRvbnNcIiwgXzE1IGFzIFwidGlja2V0Rm9vdGVyXCIsIF8xNiBhcyBcInRpY2tldExpc3RDb250YWluZXJcIiwgXzE3IGFzIFwidGlja2V0Tm9cIiwgXzE4IGFzIFwidGlja2V0T3duZXJFbWFpbFwiLCBfMTkgYXMgXCJ0aWNrZXRUaWNrZXRUeXBlXCIsIF8xYSBhcyBcInZpZXdGaW5pc2hUaWNrZXRCdXR0b25cIiwgXzFiIGFzIFwidmlld01vcmVCdXR0b25cIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiQ1RBQnV0dG9uV3JhcHBlcl9fX0tncTZnXCI7XG52YXIgXzIgPSBcImFjdGlvbkJ1dHRvbnNfX191N21QU1wiO1xudmFyIF8zID0gXCJhcHByb3ZlZF9fX3N4RUpXXCI7XG52YXIgXzQgPSBcImJhZGdlRmVhdHVyZVdyYXBwZXJfX19fOUdiRFwiO1xudmFyIF81ID0gXCJidXR0b25QaWxsX19fTGVzYXpcIjtcbnZhciBfNiA9IFwiY2FuY2VsQnV0dG9uX19feWZoWWJcIjtcbnZhciBfNyA9IFwiY29udGludWVCdXR0b25fX19OeVgzc1wiO1xudmFyIF84ID0gXCJkZWxldGVJY29uX19fRlN3eWVcIjtcbnZhciBfOSA9IFwicGVuZGluZ19fX2FFYld3XCI7XG52YXIgX2EgPSBcInJlZnVuZERldGFpbF9fX2NRMjhWXCI7XG52YXIgX2IgPSBcInJlZnVuZEVycm9yTXNnX19fQWFoenJcIjtcbnZhciBfYyA9IFwicmVmdW5kU3VjY2Vzc2Z1bF9fX3pyRFFZXCI7XG52YXIgX2QgPSBcInJlZnVuZFRleHRfX19hRW5MOVwiO1xudmFyIF9lID0gXCJyZWZ1bmRUaWNrZXRBdHRlbmRlZV9fX1FYQ2pNXCI7XG52YXIgX2YgPSBcInJlZnVuZFRpY2tldEJveENvbnRhaW5lcl9fX3lhNjEzXCI7XG52YXIgXzEwID0gXCJyZWplY3RlZF9fX05KRTRaXCI7XG52YXIgXzExID0gXCJzdWJ0aXRsZV9fX1B0RGUyXCI7XG52YXIgXzEyID0gXCJzdWNjZXNzTXNnX19fSHRNc2VcIjtcbnZhciBfMTMgPSBcInN1Y2Nlc3NNc2cyX19fUTZ6bmFcIjtcbnZhciBfMTQgPSBcInRpY2tldExpc3RfX19lRFFSM1wiO1xudmFyIF8xNSA9IFwidGlja2V0Tm9fX19fRUFENFwiO1xuZXhwb3J0IHsgXzEgYXMgXCJDVEFCdXR0b25XcmFwcGVyXCIsIF8yIGFzIFwiYWN0aW9uQnV0dG9uc1wiLCBfMyBhcyBcImFwcHJvdmVkXCIsIF80IGFzIFwiYmFkZ2VGZWF0dXJlV3JhcHBlclwiLCBfNSBhcyBcImJ1dHRvblBpbGxcIiwgXzYgYXMgXCJjYW5jZWxCdXR0b25cIiwgXzcgYXMgXCJjb250aW51ZUJ1dHRvblwiLCBfOCBhcyBcImRlbGV0ZUljb25cIiwgXzkgYXMgXCJwZW5kaW5nXCIsIF9hIGFzIFwicmVmdW5kRGV0YWlsXCIsIF9iIGFzIFwicmVmdW5kRXJyb3JNc2dcIiwgX2MgYXMgXCJyZWZ1bmRTdWNjZXNzZnVsXCIsIF9kIGFzIFwicmVmdW5kVGV4dFwiLCBfZSBhcyBcInJlZnVuZFRpY2tldEF0dGVuZGVlXCIsIF9mIGFzIFwicmVmdW5kVGlja2V0Qm94Q29udGFpbmVyXCIsIF8xMCBhcyBcInJlamVjdGVkXCIsIF8xMSBhcyBcInN1YnRpdGxlXCIsIF8xMiBhcyBcInN1Y2Nlc3NNc2dcIiwgXzEzIGFzIFwic3VjY2Vzc01zZzJcIiwgXzE0IGFzIFwidGlja2V0TGlzdFwiLCBfMTUgYXMgXCJ0aWNrZXROb1wiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJjbG9zZUJ0bl9fX3lTUUNPXCI7XG52YXIgXzIgPSBcImhlYWRlcl9fX2ZCWEc5XCI7XG52YXIgXzMgPSBcInRpdGxlX19fdHlaZVFcIjtcbnZhciBfNCA9IFwid3JhcHBlcl9fX1JPSkdzXCI7XG5leHBvcnQgeyBfMSBhcyBcImNsb3NlQnRuXCIsIF8yIGFzIFwiaGVhZGVyXCIsIF8zIGFzIFwidGl0bGVcIiwgXzQgYXMgXCJ3cmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcInN1bW1pdFRpdGxlRGF0ZV9fX1hucnBGXCI7XG52YXIgXzIgPSBcIndpZGdldEhlYWRlcl9fX2dnTHRNXCI7XG5leHBvcnQgeyBfMSBhcyBcInN1bW1pdFRpdGxlRGF0ZVwiLCBfMiBhcyBcIndpZGdldEhlYWRlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJ1bmFzc2lnbkJ0bl9fX2k3bWd5XCI7XG52YXIgXzIgPSBcInVuYXNzaWduV3JhcHBlcl9fX2czZTJ1XCI7XG52YXIgXzMgPSBcIndyYXBwZXJfX19XOTRTTFwiO1xuZXhwb3J0IHsgXzEgYXMgXCJ1bmFzc2lnbkJ0blwiLCBfMiBhcyBcInVuYXNzaWduV3JhcHBlclwiLCBfMyBhcyBcIndyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiaGVhZGVyTm90ZV9fX0FlNUVBXCI7XG52YXIgXzIgPSBcIm9yZGVyTm9fX19WT1BSd1wiO1xudmFyIF8zID0gXCJwdXJjaGFzZWRCeV9fX01OaUhUXCI7XG52YXIgXzQgPSBcInB1cmNoYXNlZEJ5V3JhcHBlcl9fX0RoNkhVXCI7XG52YXIgXzUgPSBcIndyYXBwZXJfX19tVnVpWlwiO1xuZXhwb3J0IHsgXzEgYXMgXCJoZWFkZXJOb3RlXCIsIF8yIGFzIFwib3JkZXJOb1wiLCBfMyBhcyBcInB1cmNoYXNlZEJ5XCIsIF80IGFzIFwicHVyY2hhc2VkQnlXcmFwcGVyXCIsIF81IGFzIFwid3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJ0aWNrZXRSZWFzc2lnbkNvbnRhaW5lcl9fX2dPdGFKXCI7XG5leHBvcnQgeyBfMSBhcyBcInRpY2tldFJlYXNzaWduQ29udGFpbmVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcIndyYXBwZXJfX19Fd09SelwiO1xuZXhwb3J0IHsgXzEgYXMgXCJ3cmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImluZm9Ob3RlX19faTFYWTlcIjtcbnZhciBfMiA9IFwid3JhcHBlcl9fX01BdU5TXCI7XG5leHBvcnQgeyBfMSBhcyBcImluZm9Ob3RlXCIsIF8yIGFzIFwid3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJhY3Rpb25CdXR0b25zQ29udGFpbmVyX19fQXV2cm5cIjtcbnZhciBfMiA9IFwiYWRkaXRpb25hbERldGFpbHNfX19tUDFpSlwiO1xudmFyIF8zID0gXCJhdHRlbmRlZUNvbnRhaW5lcl9fX1EwVlV6XCI7XG52YXIgXzQgPSBcImF0dGVuZGVlSW5mb1RpdGxlX19fTG1ybTRcIjtcbnZhciBfNSA9IFwiY2xvc2VCdG5fX19XTkpsRVwiO1xudmFyIF82ID0gXCJjb3B5QnRuX19fX3V0QTZcIjtcbnZhciBfNyA9IFwiZGVsZWdhdGVkVG9fX19TR1ZRSVwiO1xudmFyIF84ID0gXCJkb3dubG9hZEJ0bl9fX3FqWWh6XCI7XG52YXIgXzkgPSBcImhlYWRlcl9fX0F1Z256XCI7XG52YXIgX2EgPSBcIm9yZGVyTnVtYmVyX19fTDVRNWFcIjtcbnZhciBfYiA9IFwicXJDb2RlX19fZndxWnFcIjtcbnZhciBfYyA9IFwicXJOb3RlX19fR2M3S25cIjtcbnZhciBfZCA9IFwic2VuZEJ0bl9fX2tvV00yXCI7XG52YXIgX2UgPSBcInNlbnRfX19rNldLeFwiO1xudmFyIF9mID0gXCJzdGF0dXNfX19rd0M4eVwiO1xudmFyIF8xMCA9IFwic3VidGl0bGVfX195X051T1wiO1xudmFyIF8xMSA9IFwidGlja2V0RGV0YWlsQ29udGFpbmVyX19fYjJUTFJcIjtcbnZhciBfMTIgPSBcInRpdGxlX19fd1F6VU5cIjtcbmV4cG9ydCB7IF8xIGFzIFwiYWN0aW9uQnV0dG9uc0NvbnRhaW5lclwiLCBfMiBhcyBcImFkZGl0aW9uYWxEZXRhaWxzXCIsIF8zIGFzIFwiYXR0ZW5kZWVDb250YWluZXJcIiwgXzQgYXMgXCJhdHRlbmRlZUluZm9UaXRsZVwiLCBfNSBhcyBcImNsb3NlQnRuXCIsIF82IGFzIFwiY29weUJ0blwiLCBfNyBhcyBcImRlbGVnYXRlZFRvXCIsIF84IGFzIFwiZG93bmxvYWRCdG5cIiwgXzkgYXMgXCJoZWFkZXJcIiwgX2EgYXMgXCJvcmRlck51bWJlclwiLCBfYiBhcyBcInFyQ29kZVwiLCBfYyBhcyBcInFyTm90ZVwiLCBfZCBhcyBcInNlbmRCdG5cIiwgX2UgYXMgXCJzZW50XCIsIF9mIGFzIFwic3RhdHVzXCIsIF8xMCBhcyBcInN1YnRpdGxlXCIsIF8xMSBhcyBcInRpY2tldERldGFpbENvbnRhaW5lclwiLCBfMTIgYXMgXCJ0aXRsZVwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJidXR0b25DYW5jZWxsZWRfX19FcmxEWlwiO1xudmFyIF8yID0gXCJidXR0b25Db21wbGV0ZV9fX2xsV2taXCI7XG52YXIgXzMgPSBcImJ1dHRvbkluY29tcGxldGVfX19Ub2xIZ1wiO1xudmFyIF80ID0gXCJidXR0b25QaWxsX19fenEydGNcIjtcbnZhciBfNSA9IFwiYnV0dG9uUmVmdW5kUmVxdWVzdGVkX19fcFd0MzBcIjtcbnZhciBfNiA9IFwiYnV0dG9uVW5hc3NpZ25lZF9fX1lEZDhYXCI7XG52YXIgXzcgPSBcInRpY2tldFN0YXR1c0NvbnRhaW5lcl9fX3FqNmZiXCI7XG5leHBvcnQgeyBfMSBhcyBcImJ1dHRvbkNhbmNlbGxlZFwiLCBfMiBhcyBcImJ1dHRvbkNvbXBsZXRlXCIsIF8zIGFzIFwiYnV0dG9uSW5jb21wbGV0ZVwiLCBfNCBhcyBcImJ1dHRvblBpbGxcIiwgXzUgYXMgXCJidXR0b25SZWZ1bmRSZXF1ZXN0ZWRcIiwgXzYgYXMgXCJidXR0b25VbmFzc2lnbmVkXCIsIF83IGFzIFwidGlja2V0U3RhdHVzQ29udGFpbmVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImFjdGl2ZV9fX3RMeVdaXCI7XG52YXIgXzIgPSBcInRhYk9wdGlvbl9fX0g0SDF1XCI7XG52YXIgXzMgPSBcInRhYldyYXBwZXJfX191MjFzR1wiO1xuZXhwb3J0IHsgXzEgYXMgXCJhY3RpdmVcIiwgXzIgYXMgXCJ0YWJPcHRpb25cIiwgXzMgYXMgXCJ0YWJXcmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcInRpY2tldHNUaXRsZVRleHRfX19URFBtcFwiO1xuZXhwb3J0IHsgXzEgYXMgXCJ0aWNrZXRzVGl0bGVUZXh0XCIgfVxuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWxcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9DaGVja0NpcmNsZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Nsb3NlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ29udGVudENvcHlcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9FcnJvclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0V4cGFuZE1vcmVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9GaWx0ZXJMaXN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvSW1wb3J0RXhwb3J0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvSW5mb1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL1NlYXJjaFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvQnV0dG9uXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvQ2hlY2tib3hcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9EaWFsb2dcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9EaWFsb2dBY3Rpb25zXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvRGlhbG9nQ29udGVudFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL0RpYWxvZ0NvbnRlbnRUZXh0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvRGlhbG9nVGl0bGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9EaXZpZGVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvSW5wdXRCYXNlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9UYWJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9UYWJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvVG9vbHRpcFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL3VzZU1lZGlhUXVlcnlcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQHJlZHV4anMvdG9vbGtpdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAc2VudHJ5L3JlYWN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImZvcm1pa1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJpMThuZXh0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImkxOG5leHQtYnJvd3Nlci1sYW5ndWFnZWRldGVjdG9yXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImlkdG9rZW4tdmVyaWZpZXJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibW9tZW50LXRpbWV6b25lXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvY29tcG9uZW50cy9yYXctaHRtbFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L2FjdGlvbnNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9tZXRob2RzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvYWN0aW9uc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL21ldGhvZHNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9xdWVyeS1hY3Rpb25zXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInAtbGltaXRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicHJvcC10eXBlc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC1pMThuZXh0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LWluZmluaXRlLXNjcm9sbC1jb21wb25lbnRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QtcXItY29kZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC1yZWR1eFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC9qc3gtcnVudGltZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWR1eFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWR1eC1wZXJzaXN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlZHV4LXBlcnNpc3QvaW50ZWdyYXRpb24vcmVhY3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVkdXgtcGVyc2lzdC9saWIvc3RvcmFnZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ5dXBcIik7IiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHQvLyBubyBtb2R1bGUuaWQgbmVlZGVkXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXShtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbiIsIi8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSAobW9kdWxlKSA9PiB7XG5cdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuXHRcdCgpID0+IChtb2R1bGVbJ2RlZmF1bHQnXSkgOlxuXHRcdCgpID0+IChtb2R1bGUpO1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCB7IGE6IGdldHRlciB9KTtcblx0cmV0dXJuIGdldHRlcjtcbn07IiwiLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gKGV4cG9ydHMsIGRlZmluaXRpb24pID0+IHtcblx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcblx0XHR9XG5cdH1cbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gKG9iaiwgcHJvcCkgPT4gKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApKSIsIi8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uciA9IChleHBvcnRzKSA9PiB7XG5cdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuXHR9XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG59OyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5pbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBQcm92aWRlciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgUGVyc2lzdEdhdGUgfSBmcm9tIFwicmVkdXgtcGVyc2lzdC9pbnRlZ3JhdGlvbi9yZWFjdFwiO1xuaW1wb3J0IHsgU3R5bGVkRW5naW5lUHJvdmlkZXIgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlSW5pdFN0b3JlIH0gZnJvbSBcIi4vc3RvcmVcIjtcbmltcG9ydCB7IFJFU0VUX1NUQVRFLCBzZXRSZWR1Y2VyU3RhdGUgfSBmcm9tIFwiLi9hY3Rpb25zXCI7XG5cbmltcG9ydCBXaWRnZXRXcmFwcGVyIGZyb20gXCIuL2NvbXBvbmVudHMvV2lkZ2V0V3JhcHBlclwiO1xuXG5jb25zdCBNeU9yZGVyc015VGlja2V0c1dpZGdldCA9IChwcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgbG9naW5VcmwsXG4gICAgc3VwcG9ydEVtYWlsLFxuICAgIHN1bW1pdCxcbiAgICBhcGlCYXNlVXJsLFxuICAgIHVzZXIsXG4gICAgY2xpZW50SWQsXG4gICAgdXBkYXRlUHJvZmlsZVxuICB9ID0gcHJvcHM7XG5cbiAgY29uc3QgeyBzdG9yZSwgcGVyc2lzdG9yIH0gPSB1c2VJbml0U3RvcmUoe1xuICAgIGxvZ2luVXJsLFxuICAgIHN1cHBvcnRFbWFpbCxcbiAgICBzdW1taXQsXG4gICAgdXNlcixcbiAgICBhcGlCYXNlVXJsLFxuICAgIGNsaWVudElkLFxuICAgIHVwZGF0ZVByb2ZpbGVcbiAgfSk7XG5cbiAgY29uc3QgaGFuZGxlQmVmb3JlTGlmdCA9ICgpID0+IHtcbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpO1xuICAgIGNvbnN0IGZsdXNoID0gcGFyYW1zLmhhcyhcImZsdXNoU3RhdGVcIik7XG4gICAgaWYgKGZsdXNoKSBzdG9yZS5kaXNwYXRjaCh7IHR5cGU6IFJFU0VUX1NUQVRFLCBwYXlsb2FkOiBudWxsIH0pO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc3RvcmUuZGlzcGF0Y2goc2V0UmVkdWNlclN0YXRlKHN1bW1pdCwgdXNlcikpO1xuICB9LCBbc3VtbWl0LCB1c2VyXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8UHJvdmlkZXIgc3RvcmU9e3N0b3JlfT5cbiAgICAgIDxQZXJzaXN0R2F0ZVxuICAgICAgICBvbkJlZm9yZUxpZnQ9e2hhbmRsZUJlZm9yZUxpZnR9XG4gICAgICAgIGxvYWRpbmc9e251bGx9XG4gICAgICAgIHBlcnNpc3Rvcj17cGVyc2lzdG9yfVxuICAgICAgPlxuICAgICAgICA8U3R5bGVkRW5naW5lUHJvdmlkZXIgaW5qZWN0Rmlyc3Q+XG4gICAgICAgICAgPFdpZGdldFdyYXBwZXIgLz5cbiAgICAgICAgPC9TdHlsZWRFbmdpbmVQcm92aWRlcj5cbiAgICAgIDwvUGVyc2lzdEdhdGU+XG4gICAgPC9Qcm92aWRlcj5cbiAgKTtcbn07XG5cbk15T3JkZXJzTXlUaWNrZXRzV2lkZ2V0LnByb3BUeXBlcyA9IHtcbiAgbG9naW5Vcmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHN1cHBvcnRFbWFpbDogUHJvcFR5cGVzLnN0cmluZyxcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICBhcGlCYXNlVXJsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICB1c2VyOiBQcm9wVHlwZXMub2JqZWN0LFxuICBjbGllbnRJZDogUHJvcFR5cGVzLnN0cmluZyxcbiAgdXBkYXRlUHJvZmlsZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE15T3JkZXJzTXlUaWNrZXRzV2lkZ2V0O1xuIl0sIm5hbWVzIjpbImF1dGhFcnJvckhhbmRsZXIiLCJjcmVhdGVBY3Rpb24iLCJkZWxldGVSZXF1ZXN0IiwiZ2V0UmVxdWVzdCIsInB1dFJlcXVlc3QiLCJzdGFydExvYWRpbmciLCJzdG9wTG9hZGluZyIsInBMaW1pdCIsImdldElkVG9rZW4iLCJvYmplY3RUb1F1ZXJ5U3RyaW5nIiwiSWRUb2tlblZlcmlmaWVyIiwiaTE4biIsImF1dGhQcm9taXNlUmVqZWN0IiwiZ2V0QWNjZXNzVG9rZW5TYWZlbHkiLCJERUZBVUxUX0lURU1TX1BFUl9QQUdFIiwiRVJST1JfQ09ERVMiLCJGSUZUWV9QRVJfUEFHRSIsIkZJTFRFUl9BQ1RJT04iLCJGSVJTVF9QQUdFIiwiUFJPTUlTRV9CQVRDSF9MSU1JVCIsIlJFU0VUX1NUQVRFIiwiUkVTRVRfRklMVEVSIiwiUkVTRVRfQVBJX0VSUk9SIiwiU0VUX1NUQVRFIiwiU0VUX0FQSV9FUlJPUiIsIkNIQU5HRV9GSUxURVIiLCJDSEFOR0VfU09SVCIsIkdFVF9VU0VSX09SREVSUyIsIlJFRlVORF9PUkRFUiIsIlNFVF9BQ1RJVkVfT1JERVJfSUQiLCJGSUxURVJfVVNFUl9PUkRFUlMiLCJHRVRfTVlfQVNTSUdORURfVElDS0VUUyIsIlVQREFURV9USUNLRVQiLCJSRVNFVF9USUNLRVQiLCJSRUNFSVZFX1RJQ0tFVCIsIlJFTU9WRV9USUNLRVRfQVRURU5ERUUiLCJBU1NJR05fVElDS0VUIiwiREVMRUdBVEVfVElDS0VUIiwiUkVGVU5EX1RJQ0tFVCIsIlJFU0VORF9OT1RJRklDQVRJT04iLCJHRVRfVElDS0VUU19CWV9PUkRFUiIsIkdFVF9USUNLRVRTX0JZX09SREVSX0VSUk9SIiwiR0VUX09SREVSX1RJQ0tFVF9ERVRBSUxTIiwiR0VUX1RJQ0tFVF9ERVRBSUxTIiwiUkVDRUlWRV9FWFRSQV9RVUVTVElPTlMiLCJUSUNLRVRfQVRURU5ERUVfS0VZUyIsImVtYWlsIiwiZmlyc3ROYW1lIiwibGFzdE5hbWUiLCJjb21wYW55IiwiZGlzY2xhaW1lckFjY2VwdGVkIiwiZXh0cmFRdWVzdGlvbnMiLCJVUERBVEVfVElDS0VUU19SRUZVTkRfUkVRVUVTVEVEIiwiU1RBUlRfTE9BRElOR19JRFBfUFJPRklMRSIsIlNUT1BfTE9BRElOR19JRFBfUFJPRklMRSIsIlVQREFURV9JRFBfUFJPRklMRSIsIlNFVF9VU0VSIiwiU0VUX1NVTU1JVCIsIkdFVF9NQUlOX0VYVFJBX1FVRVNUSU9OUyIsIlJFQ0VJVkVfTUFSS0VUSU5HX1NFVFRJTkdTIiwiQ0xFQVJfTUFSS0VUSU5HX1NFVFRJTkdTIiwicmVzZXRUaWNrZXQiLCJkaXNwYXRjaCIsInJlc2V0U3RhdGUiLCJyZXNldEZpbHRlciIsInJlc2V0RXJyb3IiLCJzZXRSZWR1Y2VyU3RhdGUiLCJzdW1taXQiLCJ1c2VyIiwiRklMVEVSX1ZBUl9EQVRFIiwiRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFIiwiRklMVEVSX1ZBUl9USUNLRVRfVFlQRSIsIkZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEIiwiRklMVEVSX1ZBUl9PV05FUl9TVEFUVVMiLCJGSUxURVJfVkFSX1BST01PQ09ERSIsIkZJTFRFUl9WQVJfRlJFRV9QQUlEIiwiRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVIiLCJjaGFuZ2VGaWx0ZXIiLCJmaWx0ZXIiLCJjaGFuZ2VTb3J0Iiwic29ydCIsInBhcnNlRmlsdGVyIiwiZmlsdGVyT2JqIiwiZmlsdGVyQWN0aW9uIiwicHVzaCIsImNvbmNhdCIsImxvd2VyIiwidXBwZXIiLCJsZW5ndGgiLCJmaWx0ZXJOYW1lIiwiT1JERVJTIiwiam9pbiIsImlucHV0RmlsdGVycyIsIlRJQ0tFVFNfQllfT1JERVJTIiwiRVhURVJOQUxfVElDS0VUUyIsImdldFNvcnREaXJlY3Rpb24iLCJkaXJlY3Rpb24iLCJlcnJvckhhbmRsZXJOb3RpZnkiLCJwYXlsb2FkIiwiY2FsbGJhY2siLCJjdXN0b21BdXRoRXJyb3JIYW5kbGVyIiwiZXJyIiwicmVzIiwiY3VzdG9tRmV0Y2hFcnJvckhhbmRsZXIiLCJyZXNwb25zZSIsImNvZGUiLCJzdGF0dXMiLCJtc2ciLCJ0IiwiT2JqZWN0IiwiZW50cmllcyIsImVycm9ycyIsImZvckVhY2giLCJfcmVmIiwia2V5IiwidmFsdWUiLCJOdW1iZXIiLCJpc05hTiIsInN0YXR1c1RleHQiLCJ0aXRsZSIsImh0bWwiLCJnZXRVc2VyT3JkZXJzIiwiX3JlZjIiLCJza2lwTG9hZGluZyIsInBhZ2UiLCJwZXJQYWdlIiwiZ2V0U3RhdGUiLCJfcmVmMyIsImFwaUJhc2VVcmwiLCJ3aWRnZXRTdGF0ZSIsImFjY2Vzc1Rva2VuIiwicGFyYW1zIiwiYWNjZXNzX3Rva2VuIiwib3JkZXIiLCJyZWxhdGlvbnMiLCJmaWVsZHMiLCJwZXJfcGFnZSIsImtleXMiLCJmaWx0ZXJzIiwibmFtZSIsImlkIiwidGhlbiIsImNhdGNoIiwiZSIsImZpbmFsbHkiLCJzZXRBY3RpdmVPcmRlcklkIiwib3JkZXJJZCIsInNldFVzZXIiLCJnZXRVc2VyVGlja2V0cyIsIl9yZWY0IiwiX3JlZjUiLCJ1c2VyUHJvZmlsZSIsIlByb21pc2UiLCJyZWplY3QiLCJleHBhbmQiLCJnZXRUaWNrZXRzQnlPcmRlciIsIl9yZWY2IiwiX3JlZjciLCJyZXNlbmROb3RpZmljYXRpb24iLCJ0aWNrZXQiLCJfcmVmOCIsIm1lc3NhZ2UiLCJvcmRlcl9pZCIsInJlZnVuZFRpY2tldCIsIl9yZWY5IiwiX3JlZjEwIiwicmVmdW5kQnVsa1RpY2tldHMiLCJfcmVmMTEiLCJ0aWNrZXRzIiwibGltaXQiLCJhbGxSZWZ1bmRUaWNrZXRDYWxscyIsIm1hcCIsImFsbCIsInN1Y2Nlc3NmdWxseVJlcXVlc3RlZCIsInIiLCJfciRyZXNwb25zZSIsInJlZnVuZF9yZXF1ZXN0cyIsInVwZGF0ZVRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQiLCJ0aWNrZXRzUmVmdW5kUmVxdWVzdGVkIiwiZ2V0RXh0cmFRdWVzdGlvbnMiLCJhdHRlbmRlZUlkIiwiX3JlZjEyIiwiZW5kcG9pbnQiLCJnZXRUaWNrZXQiLCJ0aWNrZXRJZCIsIl9yZWYxMyIsIm5vcm1hbGl6ZVRpY2tldCIsImVudGl0eSIsIm5vcm1hbGl6ZWRFbnRpdHkiLCJfb2JqZWN0U3ByZWFkIiwiYXR0ZW5kZWVfY29tcGFueSIsImF0dGVuZGVlX2NvbXBhbnlfaWQiLCJyZWZyZXNoUHJvZmlsZSIsImRhdGEiLCJ0aWNrZXRPd25lciIsIl9yZWYxNCIsIl90aWNrZXRPd25lciRtYW5hZ2VyIiwidXBkYXRlUHJvZmlsZSIsImF0dGVuZGVlX2VtYWlsIiwiYXR0ZW5kZWVfZmlyc3RfbmFtZSIsImF0dGVuZGVlX2xhc3RfbmFtZSIsImhhc01hbmFnZXIiLCJtYW5hZ2VyIiwibWFuYWdlcl9pZCIsIml0c01lIiwicHJvZmlsZUNoYW5nZWQiLCJmaXJzdF9uYW1lIiwibGFzdF9uYW1lIiwibmV3UHJvZmlsZSIsInNhdmVUaWNrZXREZXRhaWxzIiwiYW5zd2VycyIsIl9yZWYxNSIsImlkVG9rZW4iLCJ2ZXJpZmllciIsImp3dCIsImRlY29kZSIsImNvbnNvbGUiLCJsb2ciLCJvd25lciIsImFzc2lnbkF0dGVuZGVlIiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwiX3JlZjE2IiwicmVtb3ZlVGlja2V0IiwiX3JlZjE3IiwicmVhc3NpZ25UaWNrZXQiLCJ1bmFzc2lnblRpY2tldCIsImRlbGVnYXRlVGlja2V0IiwiX3JlZjE4Iiwic2F2ZUV4dHJhUXVlc3Rpb25zIiwiX3JlZjE5Iiwibm9ybWFsaXplZEFucyIsImdldFRpY2tldFBERiIsIl9yZWYyMCIsInF1ZXJ5U3RyaW5nIiwiYXBpVXJsIiwiZmV0Y2giLCJyZXNwb25zZVR5cGUiLCJoZWFkZXJzIiwib2siLCJibG9iIiwicGRmIiwibGluayIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsInVybCIsIndpbmRvdyIsIlVSTCIsImNyZWF0ZU9iamVjdFVSTCIsImhyZWYiLCJkb3dubG9hZCIsImRpc3BhdGNoRXZlbnQiLCJNb3VzZUV2ZW50IiwiUmVhY3QiLCJ1c2VTdGF0ZSIsImZvcndhcmRSZWYiLCJQcm9wVHlwZXMiLCJzdHlsZXMiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiTUFYX0lOSVRJQUxTIiwiQmFkZ2VGZWF0dXJlSWNvbiIsInJlZiIsImltYWdlIiwiY2xhc3NOYW1lIiwicHJvcHMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfZXhjbHVkZWQiLCJpbWFnZUxvYWRlZCIsInNldEltYWdlTG9hZGVkIiwiaW1hZ2VFcnJvciIsInNldEltYWdlRXJyb3IiLCJzaG93RmFsbGJhY2siLCJpbml0aWFscyIsInNwbGl0Iiwid29yZCIsInN1YnN0cmluZyIsInRvVXBwZXJDYXNlIiwiYmFkZ2VGZWF0dXJlSWNvbiIsImNoaWxkcmVuIiwiYmFkZ2VGZWF0dXJlSW1hZ2UiLCJzcmMiLCJhbHQiLCJvbkxvYWQiLCJvbkVycm9yIiwic3R5bGUiLCJkaXNwbGF5IiwiYmFkZ2VGZWF0dXJlSW5pdGlhbHMiLCJwcm9wVHlwZXMiLCJzdHJpbmciLCJpc1JlcXVpcmVkIiwiQnV0dG9uIiwiRGlhbG9nIiwiRGlhbG9nQWN0aW9ucyIsIkRpYWxvZ0NvbnRlbnQiLCJEaWFsb2dDb250ZW50VGV4dCIsIkRpYWxvZ1RpdGxlIiwidXNlVHJhbnNsYXRpb24iLCJDb25maXJtRGlhbG9nIiwib3BlbiIsImJvZHkiLCJvbkNsb3NlIiwib25Db25maXJtIiwib25DbGljayIsImF1dG9Gb2N1cyIsIkNvbnRlbnRDb3B5SWNvbiIsIlRvb2x0aXAiLCJNSUxMSVNFQ19UT19TRUMiLCJkZWZhdWx0V2lkdGgiLCJDb3B5VGV4dCIsInRleHQiLCJ0b29sdGlwVGV4dCIsImhpZGVDb3B5IiwidHJ1bmNhdGVkIiwicmV2ZXJzZWQiLCJ3aWR0aCIsInRvb2x0aXBUZXh0VG9Vc2UiLCJ0b29sdGlwIiwic2V0VG9vbHRpcCIsImNsYXNzTmFtZXMiLCJoYW5kbGVDb3B5IiwibmF2aWdhdG9yIiwiY2xpcGJvYXJkIiwid3JpdGVUZXh0Iiwic2V0VGltZW91dCIsIndyYXBwZXIiLCJjb3B5SWNvbiIsImJvb2wiLCJudW1iZXIiLCJjcmVhdGVDb250ZXh0IiwiQ3VzdG9tTm90aWZpY2F0aW9uQ29udGV4dCIsIkFsZXJ0IiwiU25hY2tiYXIiLCJUeXBvZ3JhcGh5IiwiQ2hlY2tDaXJjbGVJY29uIiwiRXJyb3JJY29uIiwiQ3VzdG9tTm90aWZpY2F0aW9uIiwic2V2ZXJpdHkiLCJhbmNob3JPcmlnaW4iLCJ2ZXJ0aWNhbCIsImhvcml6b250YWwiLCJhdXRvSGlkZUR1cmF0aW9uIiwidmFyaWFudCIsInN4IiwiYmFja2dyb3VuZENvbG9yIiwiaWNvbk1hcHBpbmciLCJzdWNjZXNzIiwiZm9udFNpemUiLCJlcnJvciIsImZ1bmMiLCJUaGVtZVByb3ZpZGVyIiwiY3JlYXRlVGhlbWUiLCJkYXJrQ29sb3IiLCJyb290IiwiZG9jdW1lbnRFbGVtZW50IiwiZ2V0Q29tcHV0ZWRTdHlsZSIsImdldFByb3BlcnR5VmFsdWUiLCJ0aGVtZSIsInBhbGV0dGUiLCJwcmltYXJ5IiwibWFpbiIsInNlY29uZGFyeSIsInR5cG9ncmFwaHkiLCJib2R5MSIsImZvbnRXZWlnaHQiLCJoNSIsIm1hcmdpbkJvdHRvbSIsImg2IiwiY29tcG9uZW50cyIsIk11aUZvcm1IZWxwZXJUZXh0Iiwic3R5bGVPdmVycmlkZXMiLCJNdWlCdXR0b24iLCJsaW5lSGVpZ2h0IiwiTXVpVGFiIiwiY29sb3IiLCJNdWlUYWJzIiwiaW5kaWNhdG9yIiwiQ3VzdG9tVGhlbWUiLCJub2RlIiwiQ2hlY2tib3giLCJGb3JtQ29udHJvbCIsIkZvcm1Db250cm9sTGFiZWwiLCJGb3JtR3JvdXAiLCJGb3JtSGVscGVyVGV4dCIsIkZvcm1MYWJlbCIsIlJhd0hUTUwiLCJnZXRMYWJlbCIsInRvU2x1ZyIsIkNoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQiLCJfcXVlc3Rpb24kdmFsdWVzIiwicXVlc3Rpb24iLCJxdWVzdGlvbkNsYXNzTmFtZSIsImlzRGlzYWJsZWQiLCJvbkNoYW5nZSIsInNldEZpZWxkVmFsdWUiLCJoZWxwZXJUZXh0IiwicmVzdCIsInF1ZXN0aW9uU2x1ZyIsInF1ZXN0aW9uTGFiZWwiLCJtYW5kYXRvcnkiLCJxdWVzdGlvbk1heFZhbHVlcyIsIm1heF9zZWxlY3RlZF92YWx1ZXMiLCJxdWVzdGlvbk9wdGlvbnMiLCJ2YWx1ZXMiLCJ2YWwiLCJsYWJlbCIsInRvU3RyaW5nIiwiaGFuZGxlQ2hlY2tib3hMaXN0Q2hhbmdlIiwiY2hlY2tlZCIsImN1cnJlbnRBbnMiLCJtYXhTZWxlY3Rpb25SZWFjaGVkIiwibmV3VmFsdWUiLCJ2IiwiZGlzYWJsZWQiLCJyZXF1aXJlZCIsImZ1bGxXaWR0aCIsIm1hcmdpbiIsIm9wIiwiY29udHJvbCIsImluY2x1ZGVzIiwiZXYiLCJ0YXJnZXQiLCJvYmplY3QiLCJhcnJheSIsIkNoZWNrYm94UXVlc3Rpb25GaWVsZCIsImFsaWduSXRlbXMiLCJtYXJnaW5Ub3AiLCJJbnB1dExhYmVsIiwiTWVudUl0ZW0iLCJTZWxlY3QiLCJEcm9wZG93blF1ZXN0aW9uRmllbGQiLCJsYWJlbElkIiwiUmFkaW8iLCJSYWRpb0dyb3VwIiwiUmFkaW9MaXN0UXVlc3Rpb25GaWVsZCIsIlRleHRGaWVsZCIsIlRleHRRdWVzdGlvbkZpZWxkIiwiUXVlc3Rpb25UeXBlX0NoZWNrYm94IiwiUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCIsIlF1ZXN0aW9uVHlwZV9Db21ib0JveCIsIlF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3giLCJRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0IiwiY2hlY2tSdWxlIiwicnVsZSIsImFuc3dlcl92YWx1ZXMiLCJBcnJheSIsImlzQXJyYXkiLCJhbnN3ZXJfdmFsdWVzX29wZXJhdG9yIiwiY2hlY2tWaXNpYmlsaXR5IiwicnVsZVJlc3VsdCIsInZpc2liaWxpdHkiLCJ2aXNpYmlsaXR5X2NvbmRpdGlvbiIsInF1ZXN0aW9uSWQiLCJ0ZXh0TEMiLCJ0b0xvd2VyQ2FzZSIsInJlcGxhY2UiLCJxIiwiX3EkbGFiZWwiLCJpc0Fuc3dlcmVkIiwiYW5zd2VyIiwiY2hlY2tJZlZhbHVlTWF0Y2giLCJjb21wYXJlVmFsIiwiYW5zd2VyQXJyYXkiLCJzb21lIiwiZ2V0VHlwZUluaXRpYWxWYWx1ZSIsInR5cGUiLCJnZXRUeXBlVmFsdWUiLCJhbnMiLCJ0cmFuc2Zvcm1BbndlcnNGb3JtYXQiLCJkaXNjbGFpbWVyX2FjY2VwdGVkIiwiZXh0cmFfcXVlc3Rpb25zIiwiZm9ybWF0dGVkRVEiLCJxdWVzdGlvbl9pZCIsInBhcnNlSW50IiwicG9wIiwiUXVlc3Rpb25UeXBlX1RleHQiLCJRdWVzdGlvblR5cGVfVGV4dEFyZWEiLCJRdWVzdGlvblR5cGVfUmFkaW9CdXR0b24iLCJnZXRRdWVzdGlvbkZpZWxkQ29tcG9uZW50IiwicXVlc3Rpb25UeXBlIiwiRnJhZ21lbnQiLCJFeHRyYVF1ZXN0aW9uc0ZpZWxkcyIsIm9yaWdpbmFsQW5zd2VycyIsInJlYWRPbmx5IiwiYWxsb3dFZGl0IiwiZm9ybWlrIiwicmVuZGVyUnVsZSIsImlzVmlzaWJsZSIsInJlbmRlclF1ZXN0aW9uIiwic3ViX3F1ZXN0aW9uIiwiX3Ekc3ViX3F1ZXN0aW9uX3J1bGVzIiwiUXVlc3Rpb25GaWVsZENvbXBvbmVudCIsImZvcm1pa1Byb3BzIiwiaGFuZGxlQ2hhbmdlIiwib25CbHVyIiwiaGFuZGxlQmx1ciIsInRvdWNoZWQiLCJCb29sZWFuIiwic3ViX3F1ZXN0aW9uX3J1bGVzIiwidXNlU2VsZWN0b3IiLCJzaGFsbG93RXF1YWwiLCJCb3giLCJDYXJkSGVhZGVyIiwiSWNvbkJ1dHRvbiIsIkNvbGxhcHNlIiwiQ2FyZENvbnRlbnQiLCJFeHBhbmRNb3JlSWNvbiIsIkFzc2lnbmVkRmlsdGVyIiwib25GaWx0ZXIiLCJmaWx0ZXJWYWx1ZXMiLCJzdGF0ZSIsImlzRXhwYW5kZWQiLCJzZXRJc0V4cGFuZGVkIiwiYXNzaWduZWRWYWx1ZXMiLCJoYW5kbGVGaWx0ZXJDaGFuZ2UiLCJuZXdGaWx0ZXIiLCJ0aXRsZVdyYXBwZXIiLCJhY3Rpb24iLCJkaXNhYmxlUmlwcGxlIiwidHJhbnNmb3JtIiwidHJhbnNpdGlvbiIsImluIiwidGltZW91dCIsInVubW91bnRPbkV4aXQiLCJweSIsInBiIiwiYXNzaWduZWQiLCJ1c2VFZmZlY3QiLCJCYWRnZUZlYXR1cmVGaWx0ZXIiLCJiYWRnZV9mZWF0dXJlc190eXBlcyIsIm5ld0ZpbHRlcnMiLCJmIiwiYmYiLCJ1c2VSZWYiLCJTdGFjayIsIkZpbHRlckxpc3RJY29uIiwiQmFkZ2UiLCJDYXJkIiwiRGl2aWRlciIsIlBhcGVyIiwiY29ubmVjdCIsIlRpY2tldFR5cGVGaWx0ZXIiLCJTdGF0dXNGaWx0ZXIiLCJGcmVlUGFpZEZpbHRlciIsIlByb21vQ29kZUZpbHRlciIsIkZpbHRlciIsIm9uUmVzZXQiLCJhY3RpdmVGaWx0ZXJzQ291bnQiLCJzaG93RmlsdGVyTGlzdCIsInNldFNob3dGaWx0ZXJMaXN0Iiwic2hvd0RhdGVwaWNrZXIiLCJzZXRTaG93RGF0ZXBpY2tlciIsImZpbHRlclJlZiIsImhhbmRsZUZpbHRlckNsaWNrT3V0c2lkZSIsImV2ZW50IiwiY3VycmVudCIsImNvbnRhaW5zIiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJ0b2dnbGUiLCJoYW5kbGVGaWx0ZXJSZXNldCIsImZpbHRlckNvbnRhaW5lciIsInB0IiwiYmFkZ2VDb250ZW50IiwibXIiLCJmaWx0ZXJJY29uIiwiZmlsdGVyTGFiZWwiLCJmaWx0ZXJMaXN0Q29udGFpbmVyIiwiY29udGFpbmVyIiwiZWxldmF0aW9uIiwiZmlsdGVyQ2hlY2tib3hDb250YWluZXIiLCJjbGVhbkJ1dHRvbiIsIm1hcFN0YXRlVG9Qcm9wcyIsInByb21vQ29kZSIsInNldFByb21vQ29kZSIsImRlYm91bmNlVGltZXIiLCJERUJPVU5DRV9WQUxVRSIsIm5ld1Byb21vQ29kZSIsImNsZWFyVGltZW91dCIsInBsYWNlaG9sZGVyIiwic3R5bGVkIiwiU2VhcmNoSWNvbiIsIkNsb3NlSWNvbiIsIklucHV0QmFzZSIsIlNlYXJjaENvbnRhaW5lciIsInBvc2l0aW9uIiwibWFyZ2luUmlnaHQiLCJtYXJnaW5MZWZ0IiwiU2VhcmNoSWNvbldyYXBwZXIiLCJoZWlnaHQiLCJqdXN0aWZ5Q29udGVudCIsIlN0eWxlZElucHV0QmFzZSIsImJvcmRlckJvdHRvbSIsInBhZGRpbmdMZWZ0IiwicGFkZGluZ1JpZ2h0IiwiQ2xvc2VJY29uV3JhcHBlciIsInBhZGRpbmciLCJ0b3AiLCJyaWdodCIsImN1cnNvciIsInpJbmRleCIsIlNlYXJjaCIsIm9uU2VhcmNoIiwic2VhcmNoVmFsdWUiLCJzZXRTZWFyY2hWYWx1ZSIsInNob3dDbG9zZUJ0biIsIm9uS2V5RG93biIsIm5hdGl2ZUV2ZW50IiwicmVzZXRTZWFyY2giLCJpbnB1dFByb3BzIiwiSW1wb3J0RXhwb3J0SWNvbiIsIlNvcnQiLCJvblNvcnQiLCJzaG93U29ydCIsInNldFNob3dTb3J0Iiwic29ydFJlZiIsImhhbmRsZVNvcnRDbGlja091dHNpZGUiLCJzb3J0Q29udGFpbmVyIiwic29ydEljb24iLCJzb3J0TGFiZWwiLCJzb3J0TGlzdENvbnRhaW5lciIsInRpY2tldF90eXBlcyIsIkdyaWQiLCJGaWx0ZXJzIiwianVzdGlmeSIsIml0ZW0iLCJ4cyIsImdhcCIsImZpbHRlclNvcnRDb250YWluZXIiLCJGb3JtRm9vdGVyIiwic2F2ZUxhYmVsIiwiY2FuY2VsTGFiZWwiLCJmb290ZXIiLCJjYW5jZWxCdG4iLCJzaXplIiwic2F2ZUJ0biIsIkVycm9yTGFiZWwiLCJkYXRhVGVzdElkIiwiZXJyb3JMYWJlbCIsIkJhY2tkcm9wIiwiQ2lyY3VsYXJQcm9ncmVzcyIsIkxvYWRlciIsImRyYXdlciIsIkluZmluaXRlU2Nyb2xsIiwiT3JkZXJzTGlzdCIsIk9ORV9QQUdFX05FWFQiLCJNeU9yZGVyc1RpY2tldHMiLCJmZXRjaERhdGEiLCJtZW1iZXJPcmRlcnMiLCJvcmRlcnNfY3VycmVudF9wYWdlIiwib3JkZXJzX2xhc3RfcGFnZSIsIm15T3JkZXJzV3JhcHBlciIsImRhdGFMZW5ndGgiLCJuZXh0IiwiaGFzTW9yZSIsInNjcm9sbFRocmVzaG9sZCIsIlRpY2tldHNJY29uIiwidmlld0JveCIsImZpbGwiLCJ4bWxucyIsImQiLCJzdHJva2UiLCJzdHJva2VXaWR0aCIsInN0cm9rZUxpbmVjYXAiLCJzdHJva2VEYXNoYXJyYXkiLCJUQUJTIiwiX0ZyYWdtZW50IiwiTm9UaWNrZXRzRm91bmQiLCJwYWdlVmlldyIsImxvYWRpbmciLCJnZXRDb250ZW50IiwibWFpbHRvVGFnIiwic3VwcG9ydF9lbWFpbCIsImJ1dHRvbkxhYmVsIiwiVElDS0VUUyIsImljb25XcmFwcGVyIiwiY2FsY3VsYXRlT3JkZXJUb3RhbHMiLCJmb3JtYXRDdXJyZW5jeSIsIk9yZGVyU3VtbWFyeVRhYmxlIiwiZGlzY291bnRUb3RhbCIsInJlZnVuZFRvdGFsIiwiYW1vdW50VG90YWwiLCJzdWJUb3RhbCIsInRpY2tldFN1bW1hcnkiLCJ0YXhlc1N1bW1hcnkiLCJodW5kcmVkIiwib3JkZXJTdW1tYXJ5VGFibGUiLCJ0aWNrZXRUb3RhbCIsInF0eSIsInRpY2tldF90eXBlIiwiY29zdCIsImFsaWduIiwiY3VycmVuY3kiLCJjcmVhdGVkIiwidGF4ZXNfYW1vdW50IiwidGF4IiwiYW1vdW50IiwiZGlzY291bnRfYW1vdW50Iiwic2hhcGUiLCJ1c2VOb3ciLCJ0aWNrZXRzUmVmdW5kYWJsZSIsInVzZVN1bW1pdERldGFpbHMiLCJSZWZ1bmRFbWFpbFN1cHBvcnQiLCJzdWJtaXRSZXF1ZXN0Iiwib25SZWZ1bmRDbGljayIsIm9uUmVmdW5kRGV0YWlsQ2xpY2siLCJpc1N0YXJ0ZWQiLCJub3ciLCJpc0luUmVmdW5kYWJsZVBlcmlvZCIsInJlZ2lzdHJhdGlvbl9hbGxvd2VkX3JlZnVuZF9yZXF1ZXN0X3RpbGxfZGF0ZSIsImF0TGVhc3RPbmVSZWZ1bmRhYmxlVGlja2V0IiwiaXNSZWZ1bmRhYmxlIiwiaGFzUmVmdW5kUmVxdWVzdHMiLCJyb2xlIiwib3JkZXJTdW1tYXJ5QnV0dG9uIiwicmVmdW5kRGlzYWJsZWQiLCJyZWwiLCJhcnJheU9mIiwiT3JkZXJTdW1tYXJ5Iiwib3JkZXJTdW1tYXJ5V3JhcHBlciIsInB4Iiwib3JkZXJTdW1tYXJ5UHVyY2hhc2VkSW5mbyIsIm1lbWJlclRpY2tldHMiLCJPcmRlckxpc3RUaWNrZXRzIiwiQXNzaWduVG9NZSIsInVzZXJUaWNrZXRzIiwidXNlcl90aWNrZXRzX2N1cnJlbnRfcGFnZSIsInVzZXJfdGlja2V0c19sYXN0X3BhZ2UiLCJvcmRlclRpY2tldENvbnRhaW5lciIsImFzc2lnbmVkVG9NZVdyYXBwZXIiLCJ0aWNrZXRMaXN0Q29udGFpbmVyIiwiaXNSZWZ1bmRNb2RhbCIsImlzU2VsZWN0ZWRUb1JlZnVuZCIsInNlbGVjdFRvUmVmdW5kIiwiaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0IiwiQXNzaWduZWRUbyIsIkV4dGVybmFsQXNzaWduZWRUbyIsIk1hbmFnZUZvciIsIkF0dGVuZGVlU3RhdHVzIiwiX3RpY2tldCRvd25lciIsIl90aWNrZXQkb3duZXIyIiwiX3RpY2tldCRvd25lcjMiLCJpc1VuYXNzaWduZWQiLCJpc19hY3RpdmUiLCJpc0RlbGVnYXRlZCIsInRpY2tldE93bmVyRW1haWwiLCJfdGlja2V0JG9yZGVyIiwiX3RpY2tldCRvcmRlcjIiLCJfdGlja2V0JG93bmVyNCIsIl90aWNrZXQkb3duZXI1IiwiYXNzaWduZWRCeVRleHQiLCJvd25lcl9maXJzdF9uYW1lIiwib3duZXJfbGFzdF9uYW1lIiwiUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UIiwiT3JkZXJMaXN0SXRlbSIsIl9vcmRlciRtZW1iZXJUaWNrZXRzIiwiX29yZGVyJG1lbWJlclRpY2tldHMyIiwib25QYWdpbmF0ZUNsaWNrIiwidGlja2V0c1RvUmVmdW5kIiwiaXRlbXNUb0Rpc3BsYXkiLCJzZXRJdGVtc1RvRGlzcGxheSIsInRpY2tldHNfdG90YWwiLCJzbGljZWRUaWNrZXRzIiwic2xpY2UiLCJvblZpZXdNb3JlIiwib25WaWV3TGVzcyIsImZpbmQiLCJ2aWV3TW9yZUJ1dHRvbiIsInVzZURpc3BhdGNoIiwiVGlja2V0U3RhdHVzIiwiZ2V0U3VtbWl0UmVhc3NpZ25EYXRlIiwiVGlja2V0RGV0YWlsIiwidXNlVGlja2V0RGV0YWlscyIsIlRpY2tldEFzc2lnbiIsIm1vZGFsVmlld3MiLCJkZXRhaWwiLCJyZWFzc2lnbiIsImFzc2lnbiIsIlRpY2tldENUQXMiLCJpc0luY29tcGxldGUiLCJpc1JlYXNzaWduYWJsZSIsIm9uT3BlbkNsaWNrIiwiYXNzaWduVGlja2V0QnV0dG9uIiwidmlld0ZpbmlzaFRpY2tldEJ1dHRvbiIsInJlYXNzaWduQnV0dG9uIiwiX3RpY2tldCR0aWNrZXRfdHlwZSIsIl90aWNrZXQkYmFkZ2UiLCJjYW5SZWFzc2lnbiIsIm1vZGFsT3BlbiIsInNldE1vZGFsT3BlbiIsInJlYXNzaWduRGF0ZSIsIm9uUmVhc3NpZ25hYmxlUGVyaW9kIiwiaGFuZGxlQ2xvc2VNb2RhbCIsImhhbmRsZU9wZW5Nb2RhbCIsInZpZXciLCJvcmRlcldyYXBwZXIiLCJyZWZ1bmRNb2RhbCIsImRpc2FibGVkUmVmdW5kIiwic2VsZWN0ZWQiLCJjaGVja2JveCIsInBsIiwidGlja2V0VGlja2V0VHlwZSIsImJhZGdlRmVhdHVyZVdyYXBwZXIiLCJwciIsImJhZGdlIiwiZmVhdHVyZXMiLCJ0aWNrZXRObyIsInRpY2tldEZvb3RlciIsInRpY2tldEFjdGlvbkJ1dHRvbnMiLCJvd25lcklkIiwidG90YWxfcmVmdW5kZWRfYW1vdW50IiwiVGFicyIsIlRhYiIsIlJlZnVuZFJlcXVlc3RzTW9kYWwiLCJSZWZ1bmREZXRhaWxzIiwiVGFiUGFuZWwiLCJpbmRleCIsImhpZGRlbiIsIk9yZGVyc0xpc3REZXNrdG9wTW9iaWxlIiwiaXNNb2JpbGUiLCJkZXRhaWxzUmVxdWlyZWQiLCJzZXRWYWx1ZSIsIl8iLCJzZXRUaWNrZXRzVG9SZWZ1bmQiLCJzZXRTdWJtaXRSZXF1ZXN0IiwicmVmdW5kRGV0YWlsc09wZW4iLCJzZXRSZWZ1bmREZXRhaWxzT3BlbiIsInVuc2VsZWN0UmVmdW5kVGlja2V0cyIsImZpbHRlclNlbGVjdGVkIiwic2VsZWN0ZWRUaWNrZXQiLCJjbG9zZVN1Ym1pdFJlcXVlc3QiLCJyZXNldEFsbFJlZnVuZFN0YXR1c2VzIiwibW9yZURldGFpbHMiLCJib3JkZXJDb2xvciIsInRhYkJ1dHRvbnMiLCJvblJlZnVuZFN1Y2Nlc3NDbG9zZSIsIm9uQ2xvc2VTbGlkZXIiLCJtZCIsInVzZVRoZW1lIiwidXNlTWVkaWFRdWVyeSIsImdldEZvcm1hdHRlZERhdGUiLCJ0aWNrZXRfcGVyX3BhZ2UiLCJicmVha3BvaW50cyIsImRvd24iLCJpc01vYmlsZVZpZXdhYmxlIiwic2V0TW9iaWxlVmlld2FibGUiLCJ0aWNrZXRzX3BhZ2VfY3VycmVudCIsImxnIiwib3JkZXJUaWNrZXRJbmZvQ29udGFpbmVyIiwib3JkZXJUaWNrZXRJbmZvIiwicm93U3BhY2luZyIsImNvbHVtblNwYWNpbmciLCJzbSIsImRpc3BsYXlfbm9uZSIsImZsZXhEaXJlY3Rpb24iLCJ1c2VNZW1vIiwiUmlnaHREcmF3ZXIiLCJSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQiLCJnZXRBbGxSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRzIiwicmVxdWVzdGVkVGlja2V0cyIsImNsb3NlU2xpZGVyIiwicmVmdW5kRGV0YWlscyIsInRvb2x0aXBDbGFzc2VzIiwiSW5mb0ljb24iLCJtb21lbnQiLCJSZWZ1bmRTdGF0dXMiLCJHUklEXzgiLCJHUklEXzEyIiwiUEFERElOR18yIiwiYXBwcm92ZWRSZWZ1bmRzIiwicmVmdW5kIiwicmVmdW5kZWRUYXhlc1N1bW1hdG9yeSIsInJlZnVuZGVkX3RheGVzIiwicnQiLCJ0YXhJZCIsInRvdGFsUmVmdW5kZWRUYXhBbW91bnQiLCJyZWZ1bmRlZF9hbW91bnQiLCJIdG1sVG9vbHRpcCIsImNsYXNzZXMiLCJwb3BwZXIiLCJtYXhXaWR0aCIsImJvcmRlciIsInJlZnVuZFRpY2tldEJveENvbnRhaW5lciIsInJlZnVuZERldGFpbCIsInJlZnVuZFRpY2tldEF0dGVuZGVlIiwiYWN0aW9uX2RhdGUiLCJmb3JtYXQiLCJDaGlwIiwiZ2V0UmVmdW5kUmVxdWVzdGVkU3RhdHVzQ29sb3IiLCJzdGF0dXNDb2xvciIsImJ1dHRvblBpbGwiLCJTdHlsZWRFbmdpbmVQcm92aWRlciIsIlNURVBfT05FIiwiU1RFUF9USFJFRSIsIlNURVBfVFdPIiwic3RlcCIsInNldFN0ZXAiLCJlcnJvck1zZyIsInNldEVycm9yTXNnIiwicmVmdW5kU3VjY2VzcyIsInNldFJlZnVuZFN1Y2Nlc3MiLCJjb25maXJtUmVmdW5kIiwiZ29CYWNrVG9SZWZ1bmQiLCJyZWZ1bmRUaWNrZXRzIiwicmVmdW5kU3RlcE9uZSIsInN1YnRpdGxlIiwidGlja2V0TGlzdCIsImFjdGlvbkJ1dHRvbnMiLCJjYW5jZWxCdXR0b24iLCJjb250aW51ZUJ1dHRvbiIsInJlZnVuZFN0ZXBUd28iLCJyZWZ1bmRFcnJvck1zZyIsIkNUQUJ1dHRvbldyYXBwZXIiLCJyZWZ1bmRTdGVwVGhyZWUiLCJyZWZ1bmRTdWNjZXNzZnVsIiwic3VjY2Vzc01zZyIsInN1Y2Nlc3NNc2cyIiwicmVuZGVyU3RlcHMiLCJpbmplY3RGaXJzdCIsIkRyYXdlciIsIkNsb3NlIiwiaGVhZGVyQ2hpbGRyZW4iLCJhbmNob3IiLCJNb2RhbFByb3BzIiwia2VlcE1vdW50ZWQiLCJoZWFkZXIiLCJjbG9zZUJ0biIsImZsb2F0IiwiZ3V0dGVyQm90dG9tIiwib25lT2ZUeXBlIiwiU3VtbWl0SGVhZGVyIiwid2lkZ2V0SGVhZGVyIiwic3VtbWl0VGl0bGVEYXRlIiwiZGF0ZXNfbGFiZWwiLCJUYWJXcmFwcGVyIiwidGFiIiwic2V0VGFiIiwiaGFzVGlja2V0cyIsImlzRmlsdGVyZWQiLCJjbGVhckZpbHRlcnMiLCJnZXRQYWdlVmlldyIsImdldE9uQ2xpY2siLCJ0YWJUb0xpbmsiLCJMaW5rIiwiUmVhc3NpZ25Gb3JtIiwiRGVsZWdhdGVGb3JtIiwiQXNzaWduT3B0aW9ucyIsImFzc2lnbk9wdGlvbiIsInNldEFzc2lnbk9wdGlvbiIsIm9uQXNzaWduIiwib25EZWxlZ2F0ZSIsIm9uVW5Bc3NpZ24iLCJvcGVuQ29uZmlybVVuYXNzaWduIiwic2V0T3BlbkNvbmZpcm1VbmFzc2lnbiIsImlzQXNzaWduZWRUb01lIiwiYWxsb3dzRGVsZWdhdGUiLCJoYW5kbGVVbkFzc2lnbiIsIm15Iiwib25TdWJtaXQiLCJuZXdfYXR0ZW5kZWVfZW1haWwiLCJwZXJzb25hbF9tZXNzYWdlIiwiZGVsZWdhdGVfZmlyc3RfbmFtZSIsImRlbGVnYXRlX2xhc3RfbmFtZSIsImRlbGVnYXRlX2VtYWlsIiwidW5hc3NpZ25XcmFwcGVyIiwiY29tcG9uZW50IiwidGV4dERlY29yYXRpb24iLCJ0ZXh0RGVjb3JhdGlvbkNvbG9yIiwidXNlRm9ybWlrIiwieXVwIiwiaW5pdGlhbFZhbHVlcyIsInZhbGlkYXRpb25TY2hlbWEiLCJyZXNldEZvcm0iLCJoYW5kbGVDYW5jZWwiLCJoYW5kbGVTdWJtaXQiLCJub1ZhbGlkYXRlIiwiaXNTdWJtaXR0aW5nIiwiQXNzaWduSGVhZGVyIiwiaW5Qcm9ncmVzcyIsInVzZXJFbWFpbCIsImFzc2lnbmVkVG9Zb3UiLCJnZXRTZWNvbmRhcnlUaXRsZSIsImdldEhlYWRlck5vdGUiLCJ0cmFuc0tleSIsInB1cmNoYXNlZEJ5V3JhcHBlciIsInB1cmNoYXNlZEJ5Iiwib3duZXJfZW1haWwiLCJvcmRlck5vIiwiaGVhZGVyTm90ZSIsIlJlYXNzaWduSGVhZGVyIiwibXVsdGlsaW5lIiwibWluUm93cyIsInVzZUNvbnRleHQiLCJUaWNrZXRGb3JtIiwidXNlR2V0VGlja2V0IiwiVElDS0VUX0RSQVdFUl9JRCIsInN1Y2Nlc3NNZXNzYWdlIiwiZXJyb3JNZXNzYWdlIiwiYXNzaWduYXRpb25JblByb2dyZXNzIiwic2V0QXNzaWduYXRpb25JblByb2dyZXNzIiwiaXNVc2VyT3JkZXJPd25lciIsIm93bmVyX2lkIiwiaXNVc2VyVGlja2V0T3duZXIiLCJjYW5FZGl0VGlja2V0RGF0YSIsImFsbG93X3VwZGF0ZV9hdHRlbmRlZV9leHRyYV9xdWVzdGlvbnMiLCJvbkNsb3NlRVFGb3JtIiwib25TYXZlRVEiLCJyZXNvbHZlIiwiSGVhZGVyIiwidGlja2V0UmVhc3NpZ25Db250YWluZXIiLCJjYW5FZGl0IiwiQXV0b2NvbXBsZXRlIiwicXVlcnlSZWdpc3RyYXRpb25Db21wYW5pZXMiLCJDb21wYW55RmllbGQiLCJzdW1taXRJZCIsImlucHV0VmFsdWUiLCJzZXRJbnB1dFZhbHVlIiwib3B0aW9ucyIsInNldE9wdGlvbnMiLCJzZXRGaWVsZFRvdWNoZWQiLCJyZXN1bHRzIiwibmV3T3B0aW9ucyIsImF1dG9Db21wbGV0ZSIsImZyZWVTb2xvIiwiaW5jbHVkZUlucHV0SW5MaXN0IiwiZmlsdGVyU2VsZWN0ZWRPcHRpb25zIiwiZ2V0T3B0aW9uTGFiZWwiLCJvcHRpb24iLCJ0bXBWYWx1ZSIsIm9uSW5wdXRDaGFuZ2UiLCJuZXdJbnB1dFZhbHVlIiwiZmlsdGVyT3B0aW9ucyIsImZpbHRlcmVkIiwiaXNFeGlzdGluZyIsInJlbmRlcklucHV0IiwicmVuZGVyT3B0aW9uIiwib3B0aW9uUHJvcHMiLCJSZWdpc3RyYXRpb25EaXNjbGFpbWVyIiwiZGlzY2xhaW1lciIsIlFSQ29kZSIsIkVtYWlsT3V0bGluZWQiLCJFbWFpbEljb24iLCJGaWxlRG93bmxvYWRPdXRsaW5lZCIsIkRvd25sb2FkSWNvbiIsIlRXT19JVEVNIiwiVGlja2V0RGV0YWlsSGVhZGVyIiwiaXNWaXJ0dWFsU3VtbWl0IiwiaXNDb21wbGV0ZSIsInNlbnRDb25maXJtYXRpb24iLCJzZXRTZW50Q29uZmlybWF0aW9uIiwiZG93bmxvYWRUaWNrZXRQZGYiLCJvblNlbmRFbWFpbCIsInFyQ29kZSIsInFyX2NvZGUiLCJxck5vdGUiLCJhY3Rpb25CdXR0b25zQ29udGFpbmVyIiwiZG93bmxvYWRCdG4iLCJzZW5kQnRuIiwic2VudCIsIm9yZGVyTnVtYmVyIiwiVGlja2V0T3duZXJGaWVsZHMiLCJ1c2VTY3JvbGxUb0Vycm9yIiwicGFyc2VBbnN3ZXJzIiwiYnVpbGRWYWxpZGF0aW9uU2NoZW1hIiwicmVkdWNlIiwicmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfbWFuZGF0b3J5IiwicmVsZXZhbnRBbnN3ZXJzIiwiZW5hYmxlUmVpbml0aWFsaXplIiwiYWRkaXRpb25hbERldGFpbHMiLCJyZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9jb250ZW50IiwiaW5mb05vdGUiLCJvblNhdmUiLCJ0aWNrZXREZXRhaWxDb250YWluZXIiLCJpc192aXJ0dWFsIiwiYXR0ZW5kZWVDb250YWluZXIiLCJhdHRlbmRlZUluZm9UaXRsZSIsIkNvbnRhaW5lciIsIl90aWNrZXQkcmVmdW5kX3JlcXVlcyIsImlzQWN0aXZlIiwicmVmdW5kUmVxdWVzdHMiLCJ0aWNrZXRTdGF0dXNDb250YWluZXIiLCJidXR0b25SZWZ1bmRSZXF1ZXN0ZWQiLCJidXR0b25JbmNvbXBsZXRlIiwiYnV0dG9uVW5hc3NpZ25lZCIsImJ1dHRvbkNvbXBsZXRlIiwiYnV0dG9uQ2FuY2VsbGVkIiwiQXNzaWduZWRUb01lIiwiV2lkZ2V0VGFicyIsInRpY2tldHNGdWxseUxvYWRlZCIsInNldFRpY2tldHNGdWxseUxvYWRlZCIsIm9yZGVyc19wZXJfcGFnZSIsIm9yZGVyc1BlclBhZ2UiLCJ0aWNrZXRQZXJQYWdlIiwiaGFuZGxlVGFiQ2hhbmdlIiwibmV3VGFiIiwiZmV0Y2hBc3NpZ25lZFRpY2tldHMiLCJmZXRjaE9yZGVyVGlja2V0cyIsIm9yZGVyVGlja2V0c1Byb21pc2VzIiwiY3VycmVudF9wYWdlIiwiZmV0Y2hQcm9taXNlcyIsInRhYldyYXBwZXIiLCJXaWRnZXRXcmFwcGVyIiwibXNnRGF0YSIsInNldE1zZ0RhdGEiLCJtZXNzYWdlQ29udGV4dCIsImZpbHRlclZhbHVlIiwic29ydFZhbHVlIiwidGlja2V0c1RpdGxlVGV4dCIsIlByb3ZpZGVyIiwicnVuIiwiY3VycmVudFRpY2tldCIsInNtb290aFNjcm9sbFRvIiwidGFyZ2V0U2Nyb2xsVG9wIiwiZHVyYXRpb24iLCJzdGFydFNjcm9sbFRvcCIsInNjcm9sbFRvcCIsImRpc3RhbmNlIiwic3RhcnRUaW1lIiwiYW5pbWF0aW9uU3RlcCIsInRpbWVzdGFtcCIsImVsYXBzZWQiLCJwcm9ncmVzcyIsIk1hdGgiLCJtaW4iLCJlYXNlSW5PdXRRdWFkIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiaXNWYWxpZCIsImVycm9yQXJyYXkiLCJlcnJvckNvdW50IiwiZWxlbWVudHNTb3J0ZWQiLCJyZXN1bHQiLCJlbGVtZW50IiwicXVlcnlTZWxlY3RvciIsImVsUmVjdCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsImEiLCJiIiwiZ2V0RWxlbWVudEJ5SWQiLCJjb250YWluZXJSZWN0IiwiZWxlbU9mZmVzdCIsImFuaW1hdGlvbkR1cmF0aW9uIiwiaXNUaWNrZXRSZWZ1bmRhYmxlIiwiU1RBVFVTX0NPTVBMRVRFIiwiU1RBVFVTX0lOQ09NUExFVEUiLCJTVEFUVVNfQ0FOQ0VMTEVEIiwiU1RBVFVTX1VOQVNTSUdORUQiLCJfdGlja2V0JHByb21vX2NvZGUiLCJfdGlja2V0JHRpY2tldF90eXBlMiIsIl90aWNrZXQkcHJvbW9fY29kZTIiLCJnZXRTdGF0dXMiLCJhbGxvd3NfdG9fZGVsZWdhdGUiLCJwcm9tb19jb2RlIiwiYWxsb3dzX3RvX3JlYXNzaWduIiwiaW5pdFJlYWN0STE4bmV4dCIsIkxhbmd1YWdlRGV0ZWN0b3IiLCJlbiIsImVzIiwidXNlIiwiaW5pdCIsImZhbGxiYWNrTG5nIiwiZGVidWciLCJyZXNvdXJjZXMiLCJ0cmFuc2xhdGlvbiIsImludGVycG9sYXRpb24iLCJlc2NhcGVWYWx1ZSIsIkxPR09VVF9VU0VSIiwiU1RBUlRfTE9BRElORyIsIlNUT1BfTE9BRElORyIsIlJFU0VUX0xPQURJTkciLCJjYWxjdWxhdGVBY3RpdmVGaWx0ZXJzIiwiaGFzTG9hZGVkQWxsRGF0YSIsInVwZGF0ZVRpY2tldENvbGxlY3Rpb24iLCJERUZBVUxUX0ZJTFRFUl9TVEFURSIsIkRFRkFVTFRfU1RBVEUiLCJ3aWRnZXRMb2FkaW5nIiwiY3VycmVudF90YWIiLCJvcmRlcnNfdG90YWwiLCJ0aWNrZXRfY3VycmVudF9wYWdlIiwidGlja2V0X2xhc3RfcGFnZSIsInRpY2tldF90b3RhbCIsInVzZXJfdGlja2V0c190b3RhbCIsImFwaUVycm9yIiwiV2lkZ2V0UmVkdWNlciIsIm5ld0FjdGl2ZUNvdW50IiwidG90YWwiLCJsYXN0X3BhZ2UiLCJmb3JtZXJPcmRlciIsIm8iLCJfZGF0YSQiLCJuZXdPcmRlcnMiLCJtbyIsIl9kYXRhJDIiLCJuZXdUaWNrZXRzIiwidGlja2V0c19wYWdlX2xhc3QiLCJfdGlja2V0c1JlZnVuZFJlcXVlc3QiLCJ1cGRhdGVkVGlja2V0cyIsInRyciIsInVwZGF0ZWRPcmRlciIsInRpY2tldERhdGEiLCJuZXdVc2VyVGlja2V0cyIsImNvbmZpZ3VyZVN0b3JlIiwicGVyc2lzdFN0b3JlIiwicGVyc2lzdFJlZHVjZXIiLCJGTFVTSCIsIlJFSFlEUkFURSIsIlBBVVNFIiwiUEVSU0lTVCIsIlBVUkdFIiwiUkVHSVNURVIiLCJzdG9yYWdlIiwiY29tYmluZVJlZHVjZXJzIiwiZ2V0U3RvcmUiLCJjbGllbnRJZCIsImxvZ2luVXJsIiwicmVkdWNlcnMiLCJzdG9yZSIsInJlZHVjZXIiLCJtaWRkbGV3YXJlIiwiZ2V0RGVmYXVsdE1pZGRsZXdhcmUiLCJ0aHVuayIsImV4dHJhQXJndW1lbnQiLCJpbW11dGFibGVDaGVjayIsInNlcmlhbGl6YWJsZUNoZWNrIiwiaWdub3JlZEFjdGlvbnMiLCJ1c2VJbml0U3RvcmUiLCJjb25maWciLCJwZXJzaXN0b3IiLCJpbml0TG9nT3V0IiwiZ2V0QWNjZXNzVG9rZW4iLCJTZW50cnkiLCJnZXRBY2Nlc3NUb2tlbk1vY2siLCJFcnJvciIsImNhcHR1cmVFeGNlcHRpb24iLCJMQVNUX0hPVVJfT0ZfMjRfSE9VUiIsIkxBU1RfTUlOVVRFX09GX0hPVVIiLCJPTkVfREFZIiwiTUlOX1JFUVVJUkVEIiwiU1RBVFVTX1BFTkRJTkciLCJTVEFUVVNfRVJST1IiLCJTVEFUVVNfUFJPQ0VTU0lORyIsIlNUQVRVU19SRUZVTkRfUEVORElORyIsIlNUQVRVU19SRUZVTkRfQVBQUk9WRUQiLCJTVEFUVVNfUkVGVU5EX1JFSkVDVEVEIiwiU1RBVFVTX1JFRlVORF9QRU5ESU5HX0xDIiwiU1RBVFVTX1JFRlVORF9BUFBST1ZFRF9MQyIsIlNUQVRVU19SRUZVTkRfUkVKRUNURURfTEMiLCJKRVNUX1RJTUVPVVRfSU5fTUlMTElTRUMiLCJPTkVfSVRFTSIsIkZJVkVfSVRFTSIsIlNJWF9JVEVNIiwiT05FX1JFVFJZIiwibG9jYWxlIiwiZGVmYXVsdE9wdGlvbnMiLCJtaW5pbXVtRnJhY3Rpb25EaWdpdHMiLCJtYXhpbXVtRnJhY3Rpb25EaWdpdHMiLCJmb3JtYXR0ZXIiLCJJbnRsIiwiTnVtYmVyRm9ybWF0IiwiZGF0ZXRpbWUiLCJ0aW1lWm9uZSIsInR6IiwidW5peCIsIl9vcmRlciRhcHBsaWVkX3RheGVzIiwicmF3X2Ftb3VudCIsImN1cnJlbmN5T2JqZWN0IiwicHVyY2hhc2VUaWNrZXRUb3RhbCIsInRpY2tldHNfZXhjZXJwdF9ieV90aWNrZXRfdHlwZSIsInRpY2tldFR5cGUiLCJ0dCIsInRpY2tldF90eXBlX2lkIiwiYXBwbGllZF90YXhlcyIsImZvcm1hdHRlZFRheCIsInB1cmNoYXNlVG90YWwiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJnZXRPcmRlclRpY2tldHMiLCJfb3JkZXJzJCIsIm9yZGVycyIsImdldEVwb2NoTG93ZXJVcHBlckluU2Vjb25kcyIsInRzIiwic2V0SG91cnMiLCJkZWZhdWx0Q3VycmVudFRpbWUiLCJyb3VuZCIsIkRhdGUiLCJnZXROb3ciLCJ0aW1lclN0YXRlIiwibm93VXRjIiwiY3VycmVudFBhZ2UiLCJjb3VudCIsInRyaW0iLCJjaGVja1N1bW1pdFBhc3QiLCJyZWFzc2lnbl9kYXRlIiwicmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZSIsImVuZF9kYXRlIiwiY2hlY2tTdW1taXRTdGFydGVkIiwic3RhcnRfZGF0ZSIsImdldFN1bW1pdERheXNEaWZmIiwic3RhcnREYXkiLCJ0aW1lX3pvbmVfaWQiLCJlbmREYXkiLCJkYXlzIiwiZGlmZiIsImdldFN1bW1pdEZvcm1hdHRlZERhdGUiLCJmb3JtYXRTdGFydERhdGUiLCJmb3JtYXRFbmREYXRlIiwieWVhciIsIm1vbnRoIiwic3RhcnREYXRlIiwiZW5kRGF0ZSIsImdldFN1bW1pdExvY2F0aW9uIiwiX3N1bW1pdCRsb2NhdGlvbnMiLCJsb2NhdGlvbiIsImxvY2F0aW9ucyIsImwiLCJjbGFzc19uYW1lIiwiaXNfbWFpbiIsImNpdHkiLCJjb3VudHJ5IiwiX3N1bW1pdCR0aW1lX3pvbmUiLCJfc3VtbWl0JHRpbWVfem9uZTIiLCJmb3JtYXR0ZWREYXRlIiwiZm9ybWF0dGVkUmVhc3NpZ25EYXRlIiwidGltZV96b25lIiwiZGF5c1VudGlsUmVhc3NpZ25EZWFkbGluZSIsImlzUGFzdCIsInN0YXR1c0RhdGEiLCJnZXRUaWNrZXRTdGF0dXNLZXkiLCJnZXRUaWNrZXRTdGF0dXNEYXRhIiwiaXNTdW1taXRQYXN0IiwiZ2V0VGlja2V0Um9sZSIsImZlYXR1cmUiLCJnZXRUaWNrZXRUeXBlIiwiZmluYWxfYW1vdW50IiwibmV0X3NlbGxpbmdfY29zdCIsInJyIiwiZ2V0UmVmdW5kZWRSZXF1ZXN0ZWRUaWNrZXRzIiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzMiIsImFsbFRpY2tldHMiLCJfdGlja2V0JHJlZnVuZF9yZXF1ZXMzIiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzNCIsIl90aWNrZXQkcmVmdW5kX3JlcXVlczUiLCJnZXRSZWZ1bmRlZFJlcXVlc3RlZFN0YXR1cyIsIl90aWNrZXQkcmVmdW5kX3JlcXVlczYiLCJfdGlja2V0JHJlZnVuZF9yZXF1ZXM3IiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzOCIsImdldFR5cGVWYWxpZGF0aW9uIiwic2NoZW1hIiwib25lT2YiLCJvZiIsInBhcnNlU3ViUXVlc3Rpb25BbnN3ZXIiLCJvbmx5UmVsZXZhbnQiLCJzdWJRdWVzdGlvblNsdWciLCJzdWJBbnN3ZXIiLCJtYXRjaCIsImluY2x1ZGVBdHRlbmRlZUluZm8iLCJpbmNsdWRlRGlzY2xhaW1lciIsImJ1aWxkU3ViUXVlc3Rpb25WYWxpZGF0aW9uU2NoZW1hIiwiX3N1YlF1ZXN0aW9uJHN1Yl9xdWVzIiwic3ViUXVlc3Rpb24iLCJudWxsYWJsZSIsIndoZW4iLCJpcyIsInF1ZXN0aW9uQW5zIiwiYW5zVmFsdWVNYXRjaCIsInNjaCIsInN1YlJ1bGUiLCJkaXNjbGFpbWVyTWFuZGF0b3J5IiwibGF6eSIsInR5cGVFcnJvciIsIl90JG93bmVyIiwiX3Qkb3duZXIyIiwiX3RpY2tldCRvd25lcjYiLCJ0bXBUaWNrZXQiLCJQZXJzaXN0R2F0ZSIsIk15T3JkZXJzTXlUaWNrZXRzV2lkZ2V0Iiwic3VwcG9ydEVtYWlsIiwiaGFuZGxlQmVmb3JlTGlmdCIsIlVSTFNlYXJjaFBhcmFtcyIsInNlYXJjaCIsImZsdXNoIiwiaGFzIiwib25CZWZvcmVMaWZ0Il0sInNvdXJjZVJvb3QiOiIifQ==
|