my-orders-tickets-widget 1.0.7-beta.1 → 1.0.8-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/__mocks__/@react-pdf/renderer.js +39 -0
- package/dist/i18n.js +2 -2
- package/dist/index.css +666 -526
- package/dist/index.js +1092 -129
- package/package.json +2 -1
package/dist/index.js
CHANGED
|
@@ -67,6 +67,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
67
67
|
/* harmony export */ changeFilter: () => (/* binding */ changeFilter),
|
|
68
68
|
/* harmony export */ changeSort: () => (/* binding */ changeSort),
|
|
69
69
|
/* harmony export */ delegateTicket: () => (/* binding */ delegateTicket),
|
|
70
|
+
/* harmony export */ downloadOrderReceipt: () => (/* binding */ downloadOrderReceipt),
|
|
70
71
|
/* harmony export */ getExtraQuestions: () => (/* binding */ getExtraQuestions),
|
|
71
72
|
/* harmony export */ getTicket: () => (/* binding */ getTicket),
|
|
72
73
|
/* harmony export */ getTicketPDF: () => (/* binding */ getTicketPDF),
|
|
@@ -106,7 +107,8 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
106
107
|
/* harmony import */ var i18next__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! i18next */ "i18next");
|
|
107
108
|
/* harmony import */ var i18next__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(i18next__WEBPACK_IMPORTED_MODULE_6__);
|
|
108
109
|
/* harmony import */ var _utils_auth__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./utils/auth */ "./src/utils/auth.js");
|
|
109
|
-
/* harmony import */ var
|
|
110
|
+
/* harmony import */ var _components_OrderReceipt__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./components/OrderReceipt */ "./src/components/OrderReceipt/index.js");
|
|
111
|
+
/* harmony import */ var _utils_constants__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./utils/constants */ "./src/utils/constants.js");
|
|
110
112
|
|
|
111
113
|
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; }
|
|
112
114
|
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; }
|
|
@@ -118,6 +120,7 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
118
120
|
|
|
119
121
|
|
|
120
122
|
|
|
123
|
+
|
|
121
124
|
const RESET_STATE = "RESET_STATE";
|
|
122
125
|
const RESET_FILTER = "RESET_FILTER";
|
|
123
126
|
const RESET_API_ERROR = "RESET_API_ERROR";
|
|
@@ -212,43 +215,43 @@ const parseFilter = (filterObj, filterAction) => {
|
|
|
212
215
|
filter.push("created[]".concat(filterObj.lower, "&&").concat(filterObj.upper));
|
|
213
216
|
}
|
|
214
217
|
if (filterObj.FILTER_VAR_BADGE_FEATURE && filterObj.FILTER_VAR_BADGE_FEATURE.length > 0) {
|
|
215
|
-
const filterName = filterAction ===
|
|
218
|
+
const filterName = filterAction === _utils_constants__WEBPACK_IMPORTED_MODULE_9__.FILTER_ACTION.ORDERS ? "tickets_badge_features_id" : "badge_features_id";
|
|
216
219
|
filter.push("".concat(filterName, "==").concat(filterObj.FILTER_VAR_BADGE_FEATURE.join("||")));
|
|
217
220
|
}
|
|
218
221
|
if (filterObj.FILTER_VAR_TICKET_TYPE && filterObj.FILTER_VAR_TICKET_TYPE.length > 0) {
|
|
219
|
-
const filterName = filterAction ===
|
|
222
|
+
const filterName = filterAction === _utils_constants__WEBPACK_IMPORTED_MODULE_9__.FILTER_ACTION.ORDERS ? "tickets_type_id" : "ticket_type_id";
|
|
220
223
|
filter.push("".concat(filterName, "==").concat(filterObj.FILTER_VAR_TICKET_TYPE.join("||")));
|
|
221
224
|
}
|
|
222
225
|
if (filterObj.FILTER_VAR_TICKET_ASSIGNED) {
|
|
223
|
-
const filterName = filterAction ===
|
|
226
|
+
const filterName = filterAction === _utils_constants__WEBPACK_IMPORTED_MODULE_9__.FILTER_ACTION.ORDERS ? "tickets_assigned_to" : "assigned_to";
|
|
224
227
|
filter.push("".concat(filterName, "==").concat(filterObj.FILTER_VAR_TICKET_ASSIGNED));
|
|
225
228
|
}
|
|
226
229
|
if (filterObj.FILTER_VAR_OWNER_STATUS) {
|
|
227
|
-
const filterName = filterAction ===
|
|
230
|
+
const filterName = filterAction === _utils_constants__WEBPACK_IMPORTED_MODULE_9__.FILTER_ACTION.ORDERS ? "tickets_owner_status" : "owner_status";
|
|
228
231
|
filter.push("".concat(filterName, "==").concat(filterObj.FILTER_VAR_OWNER_STATUS));
|
|
229
232
|
}
|
|
230
233
|
if (filterObj.FILTER_VAR_FREE_PAID) {
|
|
231
|
-
const filterName = filterAction ===
|
|
234
|
+
const filterName = filterAction === _utils_constants__WEBPACK_IMPORTED_MODULE_9__.FILTER_ACTION.ORDERS ? "amount" : "final_amount";
|
|
232
235
|
filter.push("".concat(filterName).concat(filterObj.FILTER_VAR_FREE_PAID === "Free" ? "==0" : ">0"));
|
|
233
236
|
}
|
|
234
237
|
if (filterObj.FILTER_VAR_PROMOCODE) {
|
|
235
|
-
const filterName = filterAction ===
|
|
238
|
+
const filterName = filterAction === _utils_constants__WEBPACK_IMPORTED_MODULE_9__.FILTER_ACTION.ORDERS ? "tickets_promo_code" : "promo_code";
|
|
236
239
|
filter.push("".concat(filterName, "=@").concat(filterObj.FILTER_VAR_PROMOCODE));
|
|
237
240
|
}
|
|
238
241
|
if (filterObj.FILTER_VAR_ORDER_NUMBER) {
|
|
239
242
|
let inputFilters = "";
|
|
240
243
|
switch (filterAction) {
|
|
241
|
-
case
|
|
244
|
+
case _utils_constants__WEBPACK_IMPORTED_MODULE_9__.FILTER_ACTION.ORDERS:
|
|
242
245
|
{
|
|
243
246
|
inputFilters = "number=@".concat(filterObj.FILTER_VAR_ORDER_NUMBER, ",tickets_owner_email=@").concat(filterObj.FILTER_VAR_ORDER_NUMBER, ",tickets_number=@").concat(filterObj.FILTER_VAR_ORDER_NUMBER);
|
|
244
247
|
break;
|
|
245
248
|
}
|
|
246
|
-
case
|
|
249
|
+
case _utils_constants__WEBPACK_IMPORTED_MODULE_9__.FILTER_ACTION.TICKETS_BY_ORDERS:
|
|
247
250
|
{
|
|
248
251
|
inputFilters = "number=@".concat(filterObj.FILTER_VAR_ORDER_NUMBER, ",owner_email=@").concat(filterObj.FILTER_VAR_ORDER_NUMBER);
|
|
249
252
|
break;
|
|
250
253
|
}
|
|
251
|
-
case
|
|
254
|
+
case _utils_constants__WEBPACK_IMPORTED_MODULE_9__.FILTER_ACTION.EXTERNAL_TICKETS:
|
|
252
255
|
{
|
|
253
256
|
inputFilters = "order_number=@".concat(filterObj.FILTER_VAR_ORDER_NUMBER, ",number=@").concat(filterObj.FILTER_VAR_ORDER_NUMBER, ",order_owner_email=@").concat(filterObj.FILTER_VAR_ORDER_NUMBER);
|
|
254
257
|
break;
|
|
@@ -275,13 +278,13 @@ const customFetchErrorHandler = response => dispatch => {
|
|
|
275
278
|
let msg;
|
|
276
279
|
dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.stopLoading)());
|
|
277
280
|
switch (code) {
|
|
278
|
-
case
|
|
281
|
+
case _utils_constants__WEBPACK_IMPORTED_MODULE_9__.ERROR_CODES["403"]:
|
|
279
282
|
msg = i18next__WEBPACK_IMPORTED_MODULE_6___default().t("errors.user_not_authz");
|
|
280
283
|
break;
|
|
281
|
-
case
|
|
284
|
+
case _utils_constants__WEBPACK_IMPORTED_MODULE_9__.ERROR_CODES["401"]:
|
|
282
285
|
msg = i18next__WEBPACK_IMPORTED_MODULE_6___default().t("errors.session_expired");
|
|
283
286
|
break;
|
|
284
|
-
case
|
|
287
|
+
case _utils_constants__WEBPACK_IMPORTED_MODULE_9__.ERROR_CODES["412"]:
|
|
285
288
|
msg = "";
|
|
286
289
|
Object.entries(response.errors).forEach(_ref => {
|
|
287
290
|
let [key, value] = _ref;
|
|
@@ -291,7 +294,7 @@ const customFetchErrorHandler = response => dispatch => {
|
|
|
291
294
|
msg = "".concat(msg, " ").concat(value, " <br>");
|
|
292
295
|
});
|
|
293
296
|
break;
|
|
294
|
-
case
|
|
297
|
+
case _utils_constants__WEBPACK_IMPORTED_MODULE_9__.ERROR_CODES["500"]:
|
|
295
298
|
msg = i18next__WEBPACK_IMPORTED_MODULE_6___default().t("errors.server_error");
|
|
296
299
|
break;
|
|
297
300
|
default:
|
|
@@ -306,8 +309,8 @@ const customFetchErrorHandler = response => dispatch => {
|
|
|
306
309
|
// ORDERS ACTIONS
|
|
307
310
|
const getUserOrders = (_ref2, skipLoading) => {
|
|
308
311
|
let {
|
|
309
|
-
page =
|
|
310
|
-
perPage =
|
|
312
|
+
page = _utils_constants__WEBPACK_IMPORTED_MODULE_9__.FIRST_PAGE,
|
|
313
|
+
perPage = _utils_constants__WEBPACK_IMPORTED_MODULE_9__.DEFAULT_ITEMS_PER_PAGE,
|
|
311
314
|
filter = {},
|
|
312
315
|
sort = {}
|
|
313
316
|
} = _ref2;
|
|
@@ -328,12 +331,12 @@ const getUserOrders = (_ref2, skipLoading) => {
|
|
|
328
331
|
order: "-created",
|
|
329
332
|
"filter[]": ["status==Paid"],
|
|
330
333
|
relations: "applied_taxes,none",
|
|
331
|
-
fields: "id,created,number,amount,currency,taxes_amount,discount_amount,tickets_excerpt_by_ticket_type,refunded_amount,raw_amount,applied_taxes.id,applied_taxes.name,applied_taxes.amount",
|
|
334
|
+
fields: "id,created,number,status,amount,currency,taxes_amount,discount_amount,tickets_excerpt_by_ticket_type,refunded_amount,raw_amount,applied_taxes.id,applied_taxes.name,applied_taxes.amount,payment_method,credit_card_type,credit_card_4number,owner_first_name,owner_last_name,owner_email,owner_company",
|
|
332
335
|
page,
|
|
333
336
|
per_page: perPage
|
|
334
337
|
};
|
|
335
338
|
if (Object.keys(filter).length > 0) {
|
|
336
|
-
const filters = parseFilter(filter,
|
|
339
|
+
const filters = parseFilter(filter, _utils_constants__WEBPACK_IMPORTED_MODULE_9__.FILTER_ACTION.ORDERS);
|
|
337
340
|
params["filter[]"] = [...params["filter[]"], ...filters];
|
|
338
341
|
}
|
|
339
342
|
if (Object.keys(sort).length > 0) {
|
|
@@ -356,8 +359,8 @@ const setUser = user => dispatch => dispatch((0,openstack_uicore_foundation_lib_
|
|
|
356
359
|
|
|
357
360
|
const getUserTickets = (_ref4, skipLoading) => {
|
|
358
361
|
let {
|
|
359
|
-
page =
|
|
360
|
-
perPage =
|
|
362
|
+
page = _utils_constants__WEBPACK_IMPORTED_MODULE_9__.FIRST_PAGE,
|
|
363
|
+
perPage = _utils_constants__WEBPACK_IMPORTED_MODULE_9__.DEFAULT_ITEMS_PER_PAGE,
|
|
361
364
|
filter = {},
|
|
362
365
|
sort = {}
|
|
363
366
|
} = _ref4;
|
|
@@ -390,7 +393,7 @@ const getUserTickets = (_ref4, skipLoading) => {
|
|
|
390
393
|
per_page: perPage
|
|
391
394
|
};
|
|
392
395
|
if (Object.keys(filter).length > 0) {
|
|
393
|
-
const filters = parseFilter(filter,
|
|
396
|
+
const filters = parseFilter(filter, _utils_constants__WEBPACK_IMPORTED_MODULE_9__.FILTER_ACTION.EXTERNAL_TICKETS);
|
|
394
397
|
params["filter[]"] = [...params["filter[]"], ...filters];
|
|
395
398
|
}
|
|
396
399
|
if (Object.keys(sort).length > 0) {
|
|
@@ -404,8 +407,8 @@ const getUserTickets = (_ref4, skipLoading) => {
|
|
|
404
407
|
const getTicketsByOrder = _ref6 => {
|
|
405
408
|
let {
|
|
406
409
|
orderId,
|
|
407
|
-
page =
|
|
408
|
-
perPage =
|
|
410
|
+
page = _utils_constants__WEBPACK_IMPORTED_MODULE_9__.FIRST_PAGE,
|
|
411
|
+
perPage = _utils_constants__WEBPACK_IMPORTED_MODULE_9__.DEFAULT_ITEMS_PER_PAGE,
|
|
409
412
|
filter,
|
|
410
413
|
sort
|
|
411
414
|
} = _ref6;
|
|
@@ -427,7 +430,7 @@ const getTicketsByOrder = _ref6 => {
|
|
|
427
430
|
per_page: perPage
|
|
428
431
|
};
|
|
429
432
|
if (Object.keys(filter).length > 0) {
|
|
430
|
-
const filters = parseFilter(filter,
|
|
433
|
+
const filters = parseFilter(filter, _utils_constants__WEBPACK_IMPORTED_MODULE_9__.FILTER_ACTION.TICKETS_BY_ORDERS);
|
|
431
434
|
params["filter[]"] = [...params["filter[]"], ...filters];
|
|
432
435
|
}
|
|
433
436
|
if (Object.keys(sort).length > 0) {
|
|
@@ -500,7 +503,7 @@ const refundBulkTickets = _ref11 => {
|
|
|
500
503
|
tickets
|
|
501
504
|
} = _ref11;
|
|
502
505
|
return async dispatch => {
|
|
503
|
-
const limit = p_limit__WEBPACK_IMPORTED_MODULE_2___default()(
|
|
506
|
+
const limit = p_limit__WEBPACK_IMPORTED_MODULE_2___default()(_utils_constants__WEBPACK_IMPORTED_MODULE_9__.PROMISE_BATCH_LIMIT);
|
|
504
507
|
const allRefundTicketCalls = tickets.map(ticket => limit(() => dispatch(refundTicket({
|
|
505
508
|
ticket
|
|
506
509
|
}))));
|
|
@@ -532,7 +535,7 @@ const getExtraQuestions = attendeeId => async (dispatch, getState, _ref12) => {
|
|
|
532
535
|
if (!accessToken) return (0,_utils_auth__WEBPACK_IMPORTED_MODULE_7__.authPromiseReject)();
|
|
533
536
|
const params = {
|
|
534
537
|
page: 1,
|
|
535
|
-
per_page:
|
|
538
|
+
per_page: _utils_constants__WEBPACK_IMPORTED_MODULE_9__.FIFTY_PER_PAGE,
|
|
536
539
|
expand: "*sub_question_rules,*sub_question,*values",
|
|
537
540
|
access_token: accessToken,
|
|
538
541
|
"filter[]": "tickets_exclude_inactives==true"
|
|
@@ -724,10 +727,26 @@ const saveExtraQuestions = (ticket, answers) => async (dispatch, getState, _ref1
|
|
|
724
727
|
return e;
|
|
725
728
|
});
|
|
726
729
|
};
|
|
727
|
-
const
|
|
730
|
+
const downloadOrderReceipt = _ref20 => {
|
|
728
731
|
let {
|
|
729
|
-
|
|
732
|
+
order,
|
|
733
|
+
summit
|
|
730
734
|
} = _ref20;
|
|
735
|
+
return async (dispatch, getState, _ref21) => {
|
|
736
|
+
let {
|
|
737
|
+
receiptSettings
|
|
738
|
+
} = _ref21;
|
|
739
|
+
return (0,_components_OrderReceipt__WEBPACK_IMPORTED_MODULE_8__.generateReceiptPDF)({
|
|
740
|
+
order,
|
|
741
|
+
summit,
|
|
742
|
+
receiptSettings
|
|
743
|
+
});
|
|
744
|
+
};
|
|
745
|
+
};
|
|
746
|
+
const getTicketPDF = ticket => async (dispatch, getState, _ref22) => {
|
|
747
|
+
let {
|
|
748
|
+
apiBaseUrl
|
|
749
|
+
} = _ref22;
|
|
731
750
|
const accessToken = await (0,_utils_auth__WEBPACK_IMPORTED_MODULE_7__.getAccessTokenSafely)();
|
|
732
751
|
if (!accessToken) return (0,_utils_auth__WEBPACK_IMPORTED_MODULE_7__.authPromiseReject)();
|
|
733
752
|
dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.startLoading)());
|
|
@@ -3591,6 +3610,1016 @@ const NoTicketsFound = _ref => {
|
|
|
3591
3610
|
|
|
3592
3611
|
/***/ }),
|
|
3593
3612
|
|
|
3613
|
+
/***/ "./src/components/OrderReceipt/generateReceiptPDF.js":
|
|
3614
|
+
/*!***********************************************************!*\
|
|
3615
|
+
!*** ./src/components/OrderReceipt/generateReceiptPDF.js ***!
|
|
3616
|
+
\***********************************************************/
|
|
3617
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
3618
|
+
|
|
3619
|
+
__webpack_require__.r(__webpack_exports__);
|
|
3620
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
3621
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__),
|
|
3622
|
+
/* harmony export */ generateReceiptPDF: () => (/* binding */ generateReceiptPDF)
|
|
3623
|
+
/* harmony export */ });
|
|
3624
|
+
/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "@babel/runtime/helpers/defineProperty");
|
|
3625
|
+
/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);
|
|
3626
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");
|
|
3627
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
|
|
3628
|
+
/* harmony import */ var _react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @react-pdf/renderer */ "@react-pdf/renderer");
|
|
3629
|
+
/* harmony import */ var _react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__);
|
|
3630
|
+
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
|
|
3631
|
+
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__);
|
|
3632
|
+
|
|
3633
|
+
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; }
|
|
3634
|
+
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; }
|
|
3635
|
+
/**
|
|
3636
|
+
* Copyright 2026 OpenStack Foundation
|
|
3637
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
3638
|
+
* you may not use this file except in compliance with the License.
|
|
3639
|
+
* You may obtain a copy of the License at
|
|
3640
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
3641
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
3642
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
3643
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
3644
|
+
* See the License for the specific language governing permissions and
|
|
3645
|
+
* limitations under the License.
|
|
3646
|
+
* */
|
|
3647
|
+
|
|
3648
|
+
|
|
3649
|
+
|
|
3650
|
+
|
|
3651
|
+
// Track registered fonts to avoid re-registering
|
|
3652
|
+
|
|
3653
|
+
const registeredFonts = new Set();
|
|
3654
|
+
|
|
3655
|
+
// Built-in fallback font (available in @react-pdf/renderer without registration)
|
|
3656
|
+
const FALLBACK_FONT = "Helvetica";
|
|
3657
|
+
|
|
3658
|
+
// Default receipt settings
|
|
3659
|
+
const DEFAULT_RECEIPT_SETTINGS = {
|
|
3660
|
+
primaryColor: "#333333",
|
|
3661
|
+
fontFamily: null,
|
|
3662
|
+
// Font family name (consumer should provide this)
|
|
3663
|
+
fontFile: null,
|
|
3664
|
+
// URL to font file (ttf) - required if fontFamily is provided
|
|
3665
|
+
printLogo: null,
|
|
3666
|
+
organizerLegalName: null,
|
|
3667
|
+
organizerAddressLine1: null,
|
|
3668
|
+
organizerAddressLine2: null,
|
|
3669
|
+
organizerCity: null,
|
|
3670
|
+
organizerState: null,
|
|
3671
|
+
organizerPostalCode: null,
|
|
3672
|
+
organizerCountry: null,
|
|
3673
|
+
organizerTaxId: null,
|
|
3674
|
+
organizerTaxIdLabel: null,
|
|
3675
|
+
supportEmail: null
|
|
3676
|
+
};
|
|
3677
|
+
|
|
3678
|
+
/**
|
|
3679
|
+
* Register a custom font for PDF generation
|
|
3680
|
+
* @param {string} fontFamily - Font family name
|
|
3681
|
+
* @param {string} fontFile - URL to the font file (must be ttf)
|
|
3682
|
+
* @returns {boolean} - Whether registration was successful
|
|
3683
|
+
*/
|
|
3684
|
+
const registerFont = (fontFamily, fontFile) => {
|
|
3685
|
+
if (!fontFamily || !fontFile) return false;
|
|
3686
|
+
if (registeredFonts.has(fontFamily)) return true;
|
|
3687
|
+
try {
|
|
3688
|
+
_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Font.register({
|
|
3689
|
+
family: fontFamily,
|
|
3690
|
+
fonts: [{
|
|
3691
|
+
src: fontFile,
|
|
3692
|
+
fontWeight: "normal"
|
|
3693
|
+
}, {
|
|
3694
|
+
src: fontFile,
|
|
3695
|
+
fontWeight: "bold"
|
|
3696
|
+
}]
|
|
3697
|
+
});
|
|
3698
|
+
registeredFonts.add(fontFamily);
|
|
3699
|
+
return true;
|
|
3700
|
+
} catch (error) {
|
|
3701
|
+
console.warn("Failed to register font:", error);
|
|
3702
|
+
return false;
|
|
3703
|
+
}
|
|
3704
|
+
};
|
|
3705
|
+
|
|
3706
|
+
// Validate image URL before PDF generation (same pattern as certificate)
|
|
3707
|
+
const validateImageUrl = async url => {
|
|
3708
|
+
if (!url) return null;
|
|
3709
|
+
try {
|
|
3710
|
+
const response = await fetch(url, {
|
|
3711
|
+
method: "GET",
|
|
3712
|
+
mode: "cors"
|
|
3713
|
+
});
|
|
3714
|
+
if (response.ok) {
|
|
3715
|
+
return url;
|
|
3716
|
+
}
|
|
3717
|
+
return null;
|
|
3718
|
+
} catch (error) {
|
|
3719
|
+
console.warn("Image validation failed:", error);
|
|
3720
|
+
return null;
|
|
3721
|
+
}
|
|
3722
|
+
};
|
|
3723
|
+
const CURRENCY_DECIMALS = 2;
|
|
3724
|
+
const MS_PER_SECOND = 1000;
|
|
3725
|
+
const MIN_MASK_LENGTH = 2;
|
|
3726
|
+
const MAX_MASK_CHARS = 4;
|
|
3727
|
+
const formatCurrency = function (amount) {
|
|
3728
|
+
let currencySymbol = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "$";
|
|
3729
|
+
let currency = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "USD";
|
|
3730
|
+
const numAmount = parseFloat(amount) || 0;
|
|
3731
|
+
return "".concat(currencySymbol).concat(numAmount.toFixed(CURRENCY_DECIMALS), " ").concat(currency);
|
|
3732
|
+
};
|
|
3733
|
+
const formatDate = timestamp => {
|
|
3734
|
+
if (!timestamp) return "";
|
|
3735
|
+
const date = new Date(timestamp * MS_PER_SECOND);
|
|
3736
|
+
return date.toLocaleDateString("en-US", {
|
|
3737
|
+
year: "numeric",
|
|
3738
|
+
month: "long",
|
|
3739
|
+
day: "2-digit"
|
|
3740
|
+
});
|
|
3741
|
+
};
|
|
3742
|
+
const maskPromoCode = code => {
|
|
3743
|
+
if (!code || code.length <= MIN_MASK_LENGTH) return code;
|
|
3744
|
+
const chars = [...code];
|
|
3745
|
+
const first = chars.shift();
|
|
3746
|
+
const last = chars.pop();
|
|
3747
|
+
const maskLength = Math.min(chars.length, MAX_MASK_CHARS);
|
|
3748
|
+
return "".concat(first).concat("*".repeat(maskLength)).concat(last);
|
|
3749
|
+
};
|
|
3750
|
+
const capitalize = str => {
|
|
3751
|
+
if (!str) return null;
|
|
3752
|
+
const [first, ...rest] = str;
|
|
3753
|
+
return first.toUpperCase() + rest.join("");
|
|
3754
|
+
};
|
|
3755
|
+
const getBadgeStatus = (amount, refundedAmount) => {
|
|
3756
|
+
const numAmount = parseFloat(amount) || 0;
|
|
3757
|
+
const numRefunded = parseFloat(refundedAmount) || 0;
|
|
3758
|
+
if (numAmount > 0 && numRefunded >= numAmount) {
|
|
3759
|
+
return {
|
|
3760
|
+
text: "REFUNDED",
|
|
3761
|
+
color: "#666666"
|
|
3762
|
+
};
|
|
3763
|
+
}
|
|
3764
|
+
if (numRefunded > 0) {
|
|
3765
|
+
return {
|
|
3766
|
+
text: "PARTIAL REFUND",
|
|
3767
|
+
color: "#e67e22"
|
|
3768
|
+
};
|
|
3769
|
+
}
|
|
3770
|
+
return {
|
|
3771
|
+
text: "PAID",
|
|
3772
|
+
color: "#0a7a2f"
|
|
3773
|
+
};
|
|
3774
|
+
};
|
|
3775
|
+
const getPaymentMethodLabel = order => {
|
|
3776
|
+
const {
|
|
3777
|
+
payment_info_type,
|
|
3778
|
+
payment_method
|
|
3779
|
+
} = order;
|
|
3780
|
+
switch (payment_info_type) {
|
|
3781
|
+
case "card":
|
|
3782
|
+
return "Credit / Debit Card";
|
|
3783
|
+
case "link":
|
|
3784
|
+
return "Link Payment";
|
|
3785
|
+
case "us_bank_account":
|
|
3786
|
+
return "Bank Transfer (ACH)";
|
|
3787
|
+
case "alipay":
|
|
3788
|
+
return "Alipay";
|
|
3789
|
+
default:
|
|
3790
|
+
if (payment_method === "Offline") return "Offline Payment";
|
|
3791
|
+
return "N/A";
|
|
3792
|
+
}
|
|
3793
|
+
};
|
|
3794
|
+
const formatAddress = settings => {
|
|
3795
|
+
const parts = [];
|
|
3796
|
+
if (settings.organizerAddressLine1) parts.push(settings.organizerAddressLine1);
|
|
3797
|
+
if (settings.organizerAddressLine2) parts.push(settings.organizerAddressLine2);
|
|
3798
|
+
const cityStateZip = [settings.organizerCity, settings.organizerState, settings.organizerPostalCode].filter(Boolean).join(", ");
|
|
3799
|
+
if (cityStateZip) parts.push(cityStateZip);
|
|
3800
|
+
if (settings.organizerCountry) parts.push(settings.organizerCountry);
|
|
3801
|
+
return parts;
|
|
3802
|
+
};
|
|
3803
|
+
const ReceiptPDF = _ref => {
|
|
3804
|
+
let {
|
|
3805
|
+
order,
|
|
3806
|
+
summit,
|
|
3807
|
+
settings,
|
|
3808
|
+
logoUrl
|
|
3809
|
+
} = _ref;
|
|
3810
|
+
const primaryColor = settings.primaryColor || "#333333";
|
|
3811
|
+
const fontFamily = settings.fontFamily || FALLBACK_FONT;
|
|
3812
|
+
const styles = _react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.StyleSheet.create({
|
|
3813
|
+
page: {
|
|
3814
|
+
backgroundColor: "#ffffff",
|
|
3815
|
+
fontFamily,
|
|
3816
|
+
fontSize: 10,
|
|
3817
|
+
color: "#333333",
|
|
3818
|
+
padding: 40
|
|
3819
|
+
},
|
|
3820
|
+
header: {
|
|
3821
|
+
flexDirection: "row",
|
|
3822
|
+
justifyContent: "space-between",
|
|
3823
|
+
alignItems: "flex-start",
|
|
3824
|
+
marginBottom: 8,
|
|
3825
|
+
borderBottomWidth: 2,
|
|
3826
|
+
borderBottomColor: "#eeeeee",
|
|
3827
|
+
paddingBottom: 8
|
|
3828
|
+
},
|
|
3829
|
+
headerLeft: {
|
|
3830
|
+
flex: 1,
|
|
3831
|
+
marginRight: 12
|
|
3832
|
+
},
|
|
3833
|
+
headerSubtitle: {
|
|
3834
|
+
fontSize: 9,
|
|
3835
|
+
color: "#777777",
|
|
3836
|
+
marginBottom: 4
|
|
3837
|
+
},
|
|
3838
|
+
headerTitleRow: {
|
|
3839
|
+
flexDirection: "row",
|
|
3840
|
+
alignItems: "center",
|
|
3841
|
+
flexWrap: "wrap",
|
|
3842
|
+
marginBottom: 4,
|
|
3843
|
+
gap: 8
|
|
3844
|
+
},
|
|
3845
|
+
headerTitle: {
|
|
3846
|
+
fontSize: 16,
|
|
3847
|
+
fontWeight: "bold",
|
|
3848
|
+
color: primaryColor
|
|
3849
|
+
},
|
|
3850
|
+
headerTagline: {
|
|
3851
|
+
fontSize: 9,
|
|
3852
|
+
color: "#666666"
|
|
3853
|
+
},
|
|
3854
|
+
paidBadge: {
|
|
3855
|
+
backgroundColor: "#0a7a2f",
|
|
3856
|
+
color: "#ffffff",
|
|
3857
|
+
fontSize: 9,
|
|
3858
|
+
fontWeight: "bold",
|
|
3859
|
+
paddingVertical: 4,
|
|
3860
|
+
paddingHorizontal: 12,
|
|
3861
|
+
borderRadius: 10
|
|
3862
|
+
},
|
|
3863
|
+
headerRight: {
|
|
3864
|
+
alignItems: "flex-end"
|
|
3865
|
+
},
|
|
3866
|
+
logo: {
|
|
3867
|
+
maxWidth: 100,
|
|
3868
|
+
maxHeight: 40,
|
|
3869
|
+
objectFit: "contain"
|
|
3870
|
+
},
|
|
3871
|
+
twoCol: {
|
|
3872
|
+
flexDirection: "row",
|
|
3873
|
+
justifyContent: "space-between",
|
|
3874
|
+
gap: 24
|
|
3875
|
+
},
|
|
3876
|
+
colHalf: {
|
|
3877
|
+
flex: 1
|
|
3878
|
+
},
|
|
3879
|
+
sectionTitle: {
|
|
3880
|
+
fontSize: 9,
|
|
3881
|
+
fontWeight: "bold",
|
|
3882
|
+
marginTop: 10,
|
|
3883
|
+
marginBottom: 6,
|
|
3884
|
+
textTransform: "uppercase",
|
|
3885
|
+
letterSpacing: 0.6,
|
|
3886
|
+
color: "#555555"
|
|
3887
|
+
},
|
|
3888
|
+
fieldLabel: {
|
|
3889
|
+
fontSize: 8,
|
|
3890
|
+
color: "#777777",
|
|
3891
|
+
marginBottom: 1
|
|
3892
|
+
},
|
|
3893
|
+
fieldValue: {
|
|
3894
|
+
fontSize: 10,
|
|
3895
|
+
fontWeight: "bold",
|
|
3896
|
+
marginBottom: 4
|
|
3897
|
+
},
|
|
3898
|
+
smallMuted: {
|
|
3899
|
+
fontSize: 8,
|
|
3900
|
+
color: "#777777"
|
|
3901
|
+
},
|
|
3902
|
+
table: {
|
|
3903
|
+
marginTop: 4
|
|
3904
|
+
},
|
|
3905
|
+
tableHeader: {
|
|
3906
|
+
flexDirection: "row",
|
|
3907
|
+
borderBottomWidth: 1,
|
|
3908
|
+
borderBottomColor: "#cccccc",
|
|
3909
|
+
padding: 6
|
|
3910
|
+
},
|
|
3911
|
+
tableHeaderCell: {
|
|
3912
|
+
fontSize: 8,
|
|
3913
|
+
textTransform: "uppercase",
|
|
3914
|
+
letterSpacing: 0.5,
|
|
3915
|
+
color: "#555555",
|
|
3916
|
+
fontWeight: "bold"
|
|
3917
|
+
},
|
|
3918
|
+
tableRow: {
|
|
3919
|
+
flexDirection: "row",
|
|
3920
|
+
borderBottomWidth: 1,
|
|
3921
|
+
borderBottomColor: "#eeeeee",
|
|
3922
|
+
padding: 6
|
|
3923
|
+
},
|
|
3924
|
+
tableCell: {
|
|
3925
|
+
fontSize: 9
|
|
3926
|
+
},
|
|
3927
|
+
textRight: {
|
|
3928
|
+
textAlign: "right"
|
|
3929
|
+
},
|
|
3930
|
+
totalsTable: {
|
|
3931
|
+
marginTop: 16,
|
|
3932
|
+
marginLeft: "auto",
|
|
3933
|
+
width: 220
|
|
3934
|
+
},
|
|
3935
|
+
totalsRow: {
|
|
3936
|
+
flexDirection: "row",
|
|
3937
|
+
justifyContent: "space-between",
|
|
3938
|
+
padding: 4
|
|
3939
|
+
},
|
|
3940
|
+
totalsLabel: {
|
|
3941
|
+
fontSize: 9,
|
|
3942
|
+
color: "#555555"
|
|
3943
|
+
},
|
|
3944
|
+
totalsValue: {
|
|
3945
|
+
fontSize: 9,
|
|
3946
|
+
fontWeight: "bold",
|
|
3947
|
+
textAlign: "right"
|
|
3948
|
+
},
|
|
3949
|
+
totalsTotalRow: {
|
|
3950
|
+
borderTopWidth: 1,
|
|
3951
|
+
borderTopColor: "#cccccc",
|
|
3952
|
+
paddingTop: 6,
|
|
3953
|
+
marginTop: 4
|
|
3954
|
+
},
|
|
3955
|
+
totalsBalanceRow: {
|
|
3956
|
+
color: "#0a7a2f"
|
|
3957
|
+
},
|
|
3958
|
+
box: {
|
|
3959
|
+
borderWidth: 1,
|
|
3960
|
+
borderColor: primaryColor,
|
|
3961
|
+
borderRadius: 6,
|
|
3962
|
+
padding: 10,
|
|
3963
|
+
backgroundColor: "#fff8f8",
|
|
3964
|
+
marginTop: 16
|
|
3965
|
+
},
|
|
3966
|
+
boxTitle: {
|
|
3967
|
+
fontSize: 10,
|
|
3968
|
+
fontWeight: "bold",
|
|
3969
|
+
color: primaryColor,
|
|
3970
|
+
marginBottom: 6
|
|
3971
|
+
},
|
|
3972
|
+
footer: {
|
|
3973
|
+
marginTop: 24,
|
|
3974
|
+
fontSize: 8,
|
|
3975
|
+
color: "#666666",
|
|
3976
|
+
borderTopWidth: 1,
|
|
3977
|
+
borderTopColor: "#eeeeee",
|
|
3978
|
+
paddingTop: 10
|
|
3979
|
+
}
|
|
3980
|
+
});
|
|
3981
|
+
const tickets = order.tickets || [];
|
|
3982
|
+
const currencySymbol = order.currency_symbol || "$";
|
|
3983
|
+
const currency = order.currency || "USD";
|
|
3984
|
+
const addressLines = formatAddress(settings);
|
|
3985
|
+
const badge = getBadgeStatus(order.amount, order.refunded_amount);
|
|
3986
|
+
return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Document, {
|
|
3987
|
+
children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Page, {
|
|
3988
|
+
size: "A4",
|
|
3989
|
+
style: styles.page,
|
|
3990
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.View, {
|
|
3991
|
+
style: styles.header,
|
|
3992
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.View, {
|
|
3993
|
+
style: styles.headerLeft,
|
|
3994
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
3995
|
+
style: styles.headerSubtitle,
|
|
3996
|
+
children: [summit.name, summit.tagline ? " \u2014 ".concat(summit.tagline) : ""]
|
|
3997
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.View, {
|
|
3998
|
+
style: styles.headerTitleRow,
|
|
3999
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4000
|
+
style: styles.headerTitle,
|
|
4001
|
+
children: "Payment Receipt / Invoice for Reimbursement"
|
|
4002
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4003
|
+
style: [styles.paidBadge, {
|
|
4004
|
+
backgroundColor: badge.color
|
|
4005
|
+
}],
|
|
4006
|
+
children: badge.text
|
|
4007
|
+
})]
|
|
4008
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4009
|
+
style: styles.headerTagline,
|
|
4010
|
+
children: "This document confirms that your registration has been paid in full. Keep it for your records or submit it for employer reimbursement."
|
|
4011
|
+
})]
|
|
4012
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.View, {
|
|
4013
|
+
style: styles.headerRight,
|
|
4014
|
+
children: logoUrl && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Image, {
|
|
4015
|
+
src: logoUrl,
|
|
4016
|
+
style: styles.logo
|
|
4017
|
+
})
|
|
4018
|
+
})]
|
|
4019
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.View, {
|
|
4020
|
+
style: styles.twoCol,
|
|
4021
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.View, {
|
|
4022
|
+
style: styles.colHalf,
|
|
4023
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4024
|
+
style: styles.sectionTitle,
|
|
4025
|
+
children: "Organizer"
|
|
4026
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4027
|
+
style: styles.fieldValue,
|
|
4028
|
+
children: settings.organizerLegalName || summit.name
|
|
4029
|
+
}), addressLines.map(line => /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4030
|
+
style: styles.tableCell,
|
|
4031
|
+
children: line
|
|
4032
|
+
}, line)), settings.organizerTaxId && settings.organizerTaxIdLabel && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4033
|
+
style: styles.smallMuted,
|
|
4034
|
+
children: [settings.organizerTaxIdLabel, ": ", settings.organizerTaxId]
|
|
4035
|
+
}), settings.supportEmail && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4036
|
+
style: styles.smallMuted,
|
|
4037
|
+
children: ["Support: ", settings.supportEmail]
|
|
4038
|
+
})]
|
|
4039
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.View, {
|
|
4040
|
+
style: styles.colHalf,
|
|
4041
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4042
|
+
style: styles.sectionTitle,
|
|
4043
|
+
children: "Document Details"
|
|
4044
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4045
|
+
style: styles.fieldLabel,
|
|
4046
|
+
children: "Document Number"
|
|
4047
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4048
|
+
style: styles.fieldValue,
|
|
4049
|
+
children: order.number
|
|
4050
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4051
|
+
style: styles.fieldLabel,
|
|
4052
|
+
children: "Issue Date"
|
|
4053
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4054
|
+
style: styles.fieldValue,
|
|
4055
|
+
children: order.issue_date
|
|
4056
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4057
|
+
style: styles.fieldLabel,
|
|
4058
|
+
children: "Purchase Date"
|
|
4059
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4060
|
+
style: styles.fieldValue,
|
|
4061
|
+
children: order.purchased_date
|
|
4062
|
+
}), order.confirmation_date && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.Fragment, {
|
|
4063
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4064
|
+
style: styles.fieldLabel,
|
|
4065
|
+
children: "Order Confirmation Email"
|
|
4066
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4067
|
+
style: styles.fieldValue,
|
|
4068
|
+
children: order.confirmation_date
|
|
4069
|
+
})]
|
|
4070
|
+
})]
|
|
4071
|
+
})]
|
|
4072
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.View, {
|
|
4073
|
+
style: [styles.twoCol, {
|
|
4074
|
+
marginTop: 4
|
|
4075
|
+
}],
|
|
4076
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.View, {
|
|
4077
|
+
style: styles.colHalf,
|
|
4078
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4079
|
+
style: styles.sectionTitle,
|
|
4080
|
+
children: "Billed To"
|
|
4081
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4082
|
+
style: styles.fieldValue,
|
|
4083
|
+
children: order.owner_full_name
|
|
4084
|
+
}), order.owner_company && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4085
|
+
style: styles.tableCell,
|
|
4086
|
+
children: order.owner_company
|
|
4087
|
+
}), order.owner_email && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4088
|
+
style: styles.smallMuted,
|
|
4089
|
+
children: order.owner_email
|
|
4090
|
+
})]
|
|
4091
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.View, {
|
|
4092
|
+
style: styles.colHalf,
|
|
4093
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4094
|
+
style: styles.sectionTitle,
|
|
4095
|
+
children: "Event"
|
|
4096
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4097
|
+
style: styles.fieldValue,
|
|
4098
|
+
children: summit.name
|
|
4099
|
+
})]
|
|
4100
|
+
})]
|
|
4101
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4102
|
+
style: [styles.sectionTitle, {
|
|
4103
|
+
marginTop: 20
|
|
4104
|
+
}],
|
|
4105
|
+
children: "Registration Summary"
|
|
4106
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.View, {
|
|
4107
|
+
style: styles.table,
|
|
4108
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.View, {
|
|
4109
|
+
style: styles.tableHeader,
|
|
4110
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4111
|
+
style: [styles.tableHeaderCell, {
|
|
4112
|
+
width: "40%"
|
|
4113
|
+
}],
|
|
4114
|
+
children: "Description"
|
|
4115
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4116
|
+
style: [styles.tableHeaderCell, styles.textRight, {
|
|
4117
|
+
width: "15%"
|
|
4118
|
+
}],
|
|
4119
|
+
children: "Qty"
|
|
4120
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4121
|
+
style: [styles.tableHeaderCell, styles.textRight, {
|
|
4122
|
+
width: "22%"
|
|
4123
|
+
}],
|
|
4124
|
+
children: "Unit Price"
|
|
4125
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4126
|
+
style: [styles.tableHeaderCell, styles.textRight, {
|
|
4127
|
+
width: "23%"
|
|
4128
|
+
}],
|
|
4129
|
+
children: "Amount"
|
|
4130
|
+
})]
|
|
4131
|
+
}), tickets.length > 0 ? tickets.map(ticket => {
|
|
4132
|
+
var _ticket$ticket_type;
|
|
4133
|
+
return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.View, {
|
|
4134
|
+
style: styles.tableRow,
|
|
4135
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.View, {
|
|
4136
|
+
style: {
|
|
4137
|
+
width: "40%"
|
|
4138
|
+
},
|
|
4139
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4140
|
+
style: styles.tableCell,
|
|
4141
|
+
children: ticket.ticket_type_name || ((_ticket$ticket_type = ticket.ticket_type) === null || _ticket$ticket_type === void 0 ? void 0 : _ticket$ticket_type.name)
|
|
4142
|
+
}), ticket.owner_email && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4143
|
+
style: styles.smallMuted,
|
|
4144
|
+
children: ["Attendee: ", ticket.owner_email]
|
|
4145
|
+
}), ticket.promo_code && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4146
|
+
style: styles.smallMuted,
|
|
4147
|
+
children: ["Promo Code: ", maskPromoCode(ticket.promo_code)]
|
|
4148
|
+
})]
|
|
4149
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4150
|
+
style: [styles.tableCell, styles.textRight, {
|
|
4151
|
+
width: "15%"
|
|
4152
|
+
}],
|
|
4153
|
+
children: "1"
|
|
4154
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4155
|
+
style: [styles.tableCell, styles.textRight, {
|
|
4156
|
+
width: "22%"
|
|
4157
|
+
}],
|
|
4158
|
+
children: formatCurrency(ticket.final_amount || ticket.raw_cost, currencySymbol, currency)
|
|
4159
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4160
|
+
style: [styles.tableCell, styles.textRight, {
|
|
4161
|
+
width: "23%"
|
|
4162
|
+
}],
|
|
4163
|
+
children: formatCurrency(ticket.final_amount || ticket.raw_cost, currencySymbol, currency)
|
|
4164
|
+
})]
|
|
4165
|
+
}, ticket.number);
|
|
4166
|
+
}) : /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.View, {
|
|
4167
|
+
style: styles.tableRow,
|
|
4168
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4169
|
+
style: [styles.tableCell, {
|
|
4170
|
+
width: "40%"
|
|
4171
|
+
}],
|
|
4172
|
+
children: "Conference Registration"
|
|
4173
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4174
|
+
style: [styles.tableCell, styles.textRight, {
|
|
4175
|
+
width: "15%"
|
|
4176
|
+
}],
|
|
4177
|
+
children: "1"
|
|
4178
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4179
|
+
style: [styles.tableCell, styles.textRight, {
|
|
4180
|
+
width: "22%"
|
|
4181
|
+
}],
|
|
4182
|
+
children: formatCurrency(order.raw_amount || order.amount, currencySymbol, currency)
|
|
4183
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4184
|
+
style: [styles.tableCell, styles.textRight, {
|
|
4185
|
+
width: "23%"
|
|
4186
|
+
}],
|
|
4187
|
+
children: formatCurrency(order.raw_amount || order.amount, currencySymbol, currency)
|
|
4188
|
+
})]
|
|
4189
|
+
})]
|
|
4190
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.View, {
|
|
4191
|
+
style: styles.totalsTable,
|
|
4192
|
+
children: [order.raw_amount !== undefined && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.View, {
|
|
4193
|
+
style: styles.totalsRow,
|
|
4194
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4195
|
+
style: styles.totalsLabel,
|
|
4196
|
+
children: "Amount"
|
|
4197
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4198
|
+
style: styles.totalsValue,
|
|
4199
|
+
children: formatCurrency(order.raw_amount, currencySymbol, currency)
|
|
4200
|
+
})]
|
|
4201
|
+
}), order.discount && parseFloat(order.discount) > 0 && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.View, {
|
|
4202
|
+
style: styles.totalsRow,
|
|
4203
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4204
|
+
style: styles.totalsLabel,
|
|
4205
|
+
children: "Discount"
|
|
4206
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4207
|
+
style: styles.totalsValue,
|
|
4208
|
+
children: ["-", formatCurrency(order.discount, currencySymbol, currency)]
|
|
4209
|
+
})]
|
|
4210
|
+
}), order.applied_taxes.map(tax => /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.View, {
|
|
4211
|
+
style: styles.totalsRow,
|
|
4212
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4213
|
+
style: styles.totalsLabel,
|
|
4214
|
+
children: tax.name
|
|
4215
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4216
|
+
style: styles.totalsValue,
|
|
4217
|
+
children: ["+", formatCurrency(tax.amount, currencySymbol, currency)]
|
|
4218
|
+
})]
|
|
4219
|
+
}, tax.id)), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.View, {
|
|
4220
|
+
style: [styles.totalsRow, styles.totalsTotalRow],
|
|
4221
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4222
|
+
style: [styles.totalsLabel, {
|
|
4223
|
+
fontWeight: "bold"
|
|
4224
|
+
}],
|
|
4225
|
+
children: "Amount Paid"
|
|
4226
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4227
|
+
style: [styles.totalsValue, {
|
|
4228
|
+
fontWeight: "bold"
|
|
4229
|
+
}],
|
|
4230
|
+
children: formatCurrency(order.amount, currencySymbol, currency)
|
|
4231
|
+
})]
|
|
4232
|
+
}), parseFloat(order.refunded_amount) > 0 && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.View, {
|
|
4233
|
+
style: styles.totalsRow,
|
|
4234
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4235
|
+
style: styles.totalsLabel,
|
|
4236
|
+
children: "Refunded"
|
|
4237
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4238
|
+
style: styles.totalsValue,
|
|
4239
|
+
children: ["-", formatCurrency(order.refunded_amount, currencySymbol, currency)]
|
|
4240
|
+
})]
|
|
4241
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.View, {
|
|
4242
|
+
style: [styles.totalsRow, styles.totalsBalanceRow],
|
|
4243
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4244
|
+
style: [styles.totalsLabel, {
|
|
4245
|
+
fontWeight: "bold"
|
|
4246
|
+
}],
|
|
4247
|
+
children: "Balance Due"
|
|
4248
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4249
|
+
style: [styles.totalsValue, {
|
|
4250
|
+
fontWeight: "bold"
|
|
4251
|
+
}],
|
|
4252
|
+
children: formatCurrency(0, currencySymbol, currency)
|
|
4253
|
+
})]
|
|
4254
|
+
})]
|
|
4255
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4256
|
+
style: styles.sectionTitle,
|
|
4257
|
+
children: "Payment Information"
|
|
4258
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.View, {
|
|
4259
|
+
style: styles.table,
|
|
4260
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.View, {
|
|
4261
|
+
style: styles.tableHeader,
|
|
4262
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4263
|
+
style: [styles.tableHeaderCell, {
|
|
4264
|
+
width: "35%"
|
|
4265
|
+
}],
|
|
4266
|
+
children: "Field"
|
|
4267
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4268
|
+
style: [styles.tableHeaderCell, {
|
|
4269
|
+
width: "65%"
|
|
4270
|
+
}],
|
|
4271
|
+
children: "Value"
|
|
4272
|
+
})]
|
|
4273
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.View, {
|
|
4274
|
+
style: styles.tableRow,
|
|
4275
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4276
|
+
style: [styles.tableCell, {
|
|
4277
|
+
width: "35%"
|
|
4278
|
+
}],
|
|
4279
|
+
children: "Payment Method"
|
|
4280
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4281
|
+
style: [styles.tableCell, {
|
|
4282
|
+
width: "65%"
|
|
4283
|
+
}],
|
|
4284
|
+
children: order.payment_method_readable
|
|
4285
|
+
})]
|
|
4286
|
+
}), order.credit_card_type && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.View, {
|
|
4287
|
+
style: styles.tableRow,
|
|
4288
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4289
|
+
style: [styles.tableCell, {
|
|
4290
|
+
width: "35%"
|
|
4291
|
+
}],
|
|
4292
|
+
children: "Card Type"
|
|
4293
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4294
|
+
style: [styles.tableCell, {
|
|
4295
|
+
width: "65%"
|
|
4296
|
+
}],
|
|
4297
|
+
children: order.credit_card_type
|
|
4298
|
+
})]
|
|
4299
|
+
}), order.credit_card_4number && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.View, {
|
|
4300
|
+
style: styles.tableRow,
|
|
4301
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4302
|
+
style: [styles.tableCell, {
|
|
4303
|
+
width: "35%"
|
|
4304
|
+
}],
|
|
4305
|
+
children: "Last Four"
|
|
4306
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4307
|
+
style: [styles.tableCell, {
|
|
4308
|
+
width: "65%"
|
|
4309
|
+
}],
|
|
4310
|
+
children: order.credit_card_4number
|
|
4311
|
+
})]
|
|
4312
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.View, {
|
|
4313
|
+
style: styles.tableRow,
|
|
4314
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4315
|
+
style: [styles.tableCell, {
|
|
4316
|
+
width: "35%"
|
|
4317
|
+
}],
|
|
4318
|
+
children: "Order Number"
|
|
4319
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4320
|
+
style: [styles.tableCell, {
|
|
4321
|
+
width: "65%"
|
|
4322
|
+
}],
|
|
4323
|
+
children: order.number
|
|
4324
|
+
})]
|
|
4325
|
+
})]
|
|
4326
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.View, {
|
|
4327
|
+
style: styles.box,
|
|
4328
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4329
|
+
style: styles.boxTitle,
|
|
4330
|
+
children: "For Employer / Reimbursement Use"
|
|
4331
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4332
|
+
style: {
|
|
4333
|
+
fontSize: 10
|
|
4334
|
+
},
|
|
4335
|
+
children: ["This is a payment receipt confirming the", " ", /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4336
|
+
style: {
|
|
4337
|
+
fontWeight: "bold"
|
|
4338
|
+
},
|
|
4339
|
+
children: "amount paid"
|
|
4340
|
+
}), " has been paid in full and serves as both an invoice and receipt."]
|
|
4341
|
+
})]
|
|
4342
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.View, {
|
|
4343
|
+
style: styles.footer,
|
|
4344
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4345
|
+
children: ["Thank you for registering for ", summit.name, "."]
|
|
4346
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4347
|
+
style: {
|
|
4348
|
+
marginTop: 4
|
|
4349
|
+
},
|
|
4350
|
+
children: "This PDF/receipt is generated from your order confirmation and is intended for recordkeeping and reimbursement purposes."
|
|
4351
|
+
})]
|
|
4352
|
+
})]
|
|
4353
|
+
})
|
|
4354
|
+
});
|
|
4355
|
+
};
|
|
4356
|
+
|
|
4357
|
+
/**
|
|
4358
|
+
* Generate and download a receipt PDF
|
|
4359
|
+
* @param {Object} params
|
|
4360
|
+
* @param {Object} params.order - Order data
|
|
4361
|
+
* @param {Object} params.summit - Summit data
|
|
4362
|
+
* @param {Object} [params.receiptSettings] - Receipt branding settings (optional, has defaults)
|
|
4363
|
+
*/
|
|
4364
|
+
const generateReceiptPDF = async _ref2 => {
|
|
4365
|
+
var _tickets$;
|
|
4366
|
+
let {
|
|
4367
|
+
order,
|
|
4368
|
+
summit,
|
|
4369
|
+
receiptSettings = {}
|
|
4370
|
+
} = _ref2;
|
|
4371
|
+
// Merge with defaults
|
|
4372
|
+
const settings = _objectSpread(_objectSpread({}, DEFAULT_RECEIPT_SETTINGS), receiptSettings);
|
|
4373
|
+
|
|
4374
|
+
// Register custom font if provided, otherwise use built-in fallback
|
|
4375
|
+
if (settings.fontFamily && settings.fontFile) {
|
|
4376
|
+
const fontRegistered = registerFont(settings.fontFamily, settings.fontFile);
|
|
4377
|
+
if (!fontRegistered) {
|
|
4378
|
+
// Fall back to built-in font if registration fails
|
|
4379
|
+
settings.fontFamily = FALLBACK_FONT;
|
|
4380
|
+
}
|
|
4381
|
+
} else {
|
|
4382
|
+
// No custom font provided - use built-in fallback
|
|
4383
|
+
settings.fontFamily = FALLBACK_FONT;
|
|
4384
|
+
}
|
|
4385
|
+
const logoUrl = await validateImageUrl(settings.printLogo || summit.logo);
|
|
4386
|
+
|
|
4387
|
+
// Prepare order data
|
|
4388
|
+
const tickets = order.tickets || order.memberTickets || [];
|
|
4389
|
+
const orderData = {
|
|
4390
|
+
number: order.number,
|
|
4391
|
+
amount: order.amount,
|
|
4392
|
+
raw_amount: order.raw_amount,
|
|
4393
|
+
discount: order.discount_amount,
|
|
4394
|
+
currency: order.currency,
|
|
4395
|
+
currency_symbol: order.currency_symbol || ((_tickets$ = tickets[0]) === null || _tickets$ === void 0 ? void 0 : _tickets$.currency_symbol) || "$",
|
|
4396
|
+
purchased_date: formatDate(order.created),
|
|
4397
|
+
confirmation_date: order.created ? new Date(order.created * MS_PER_SECOND).toLocaleDateString("en-US", {
|
|
4398
|
+
year: "numeric",
|
|
4399
|
+
month: "long",
|
|
4400
|
+
day: "2-digit",
|
|
4401
|
+
hour: "2-digit",
|
|
4402
|
+
minute: "2-digit",
|
|
4403
|
+
hour12: false,
|
|
4404
|
+
timeZoneName: "short"
|
|
4405
|
+
}) : "",
|
|
4406
|
+
issue_date: new Date().toLocaleDateString("en-US", {
|
|
4407
|
+
year: "numeric",
|
|
4408
|
+
month: "long",
|
|
4409
|
+
day: "2-digit"
|
|
4410
|
+
}),
|
|
4411
|
+
owner_full_name: "".concat(order.owner_first_name, " ").concat(order.owner_last_name),
|
|
4412
|
+
owner_company: order.owner_company,
|
|
4413
|
+
owner_email: order.owner_email,
|
|
4414
|
+
payment_method: order.payment_method,
|
|
4415
|
+
payment_info_type: order.payment_info_type,
|
|
4416
|
+
payment_method_readable: getPaymentMethodLabel(order),
|
|
4417
|
+
credit_card_type: capitalize(order.credit_card_type),
|
|
4418
|
+
credit_card_4number: order.credit_card_4number,
|
|
4419
|
+
refunded_amount: order.refunded_amount,
|
|
4420
|
+
applied_taxes: order.applied_taxes || [],
|
|
4421
|
+
tickets: tickets.map(t => {
|
|
4422
|
+
var _t$promo_code;
|
|
4423
|
+
return {
|
|
4424
|
+
number: t.number,
|
|
4425
|
+
ticket_type_name: t.ticket_type.name,
|
|
4426
|
+
owner_email: t.owner.email,
|
|
4427
|
+
final_amount: t.raw_cost,
|
|
4428
|
+
promo_code: (_t$promo_code = t.promo_code) === null || _t$promo_code === void 0 ? void 0 : _t$promo_code.code
|
|
4429
|
+
};
|
|
4430
|
+
})
|
|
4431
|
+
};
|
|
4432
|
+
const summitData = {
|
|
4433
|
+
name: summit.name,
|
|
4434
|
+
tagline: summit.tagline || "",
|
|
4435
|
+
dates_label: summit.dates_label || "",
|
|
4436
|
+
location: summit.location || "",
|
|
4437
|
+
website: summit.link || summit.website || ""
|
|
4438
|
+
};
|
|
4439
|
+
|
|
4440
|
+
// Generate PDF
|
|
4441
|
+
const doc = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(ReceiptPDF, {
|
|
4442
|
+
order: orderData,
|
|
4443
|
+
summit: summitData,
|
|
4444
|
+
settings: settings,
|
|
4445
|
+
logoUrl: logoUrl
|
|
4446
|
+
});
|
|
4447
|
+
const blob = await (0,_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.pdf)(doc).toBlob();
|
|
4448
|
+
|
|
4449
|
+
// Download
|
|
4450
|
+
const url = URL.createObjectURL(blob);
|
|
4451
|
+
const link = document.createElement("a");
|
|
4452
|
+
link.href = url;
|
|
4453
|
+
link.download = "receipt-".concat(order.number, ".pdf").toLowerCase().replace(/\s+/g, "-");
|
|
4454
|
+
document.body.appendChild(link);
|
|
4455
|
+
link.click();
|
|
4456
|
+
document.body.removeChild(link);
|
|
4457
|
+
URL.revokeObjectURL(url);
|
|
4458
|
+
};
|
|
4459
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (generateReceiptPDF);
|
|
4460
|
+
|
|
4461
|
+
/***/ }),
|
|
4462
|
+
|
|
4463
|
+
/***/ "./src/components/OrderReceipt/index.js":
|
|
4464
|
+
/*!**********************************************!*\
|
|
4465
|
+
!*** ./src/components/OrderReceipt/index.js ***!
|
|
4466
|
+
\**********************************************/
|
|
4467
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
4468
|
+
|
|
4469
|
+
__webpack_require__.r(__webpack_exports__);
|
|
4470
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
4471
|
+
/* harmony export */ generateReceiptPDF: () => (/* reexport safe */ _generateReceiptPDF__WEBPACK_IMPORTED_MODULE_0__.generateReceiptPDF)
|
|
4472
|
+
/* harmony export */ });
|
|
4473
|
+
/* harmony import */ var _generateReceiptPDF__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./generateReceiptPDF */ "./src/components/OrderReceipt/generateReceiptPDF.js");
|
|
4474
|
+
/**
|
|
4475
|
+
* Copyright 2026 OpenStack Foundation
|
|
4476
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
4477
|
+
* you may not use this file except in compliance with the License.
|
|
4478
|
+
* You may obtain a copy of the License at
|
|
4479
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
4480
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
4481
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
4482
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
4483
|
+
* See the License for the specific language governing permissions and
|
|
4484
|
+
* limitations under the License.
|
|
4485
|
+
* */
|
|
4486
|
+
|
|
4487
|
+
|
|
4488
|
+
|
|
4489
|
+
/***/ }),
|
|
4490
|
+
|
|
4491
|
+
/***/ "./src/components/OrderSummary/OrderActions.js":
|
|
4492
|
+
/*!*****************************************************!*\
|
|
4493
|
+
!*** ./src/components/OrderSummary/OrderActions.js ***!
|
|
4494
|
+
\*****************************************************/
|
|
4495
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
4496
|
+
|
|
4497
|
+
__webpack_require__.r(__webpack_exports__);
|
|
4498
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
4499
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
4500
|
+
/* harmony export */ });
|
|
4501
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
|
|
4502
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
|
|
4503
|
+
/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "prop-types");
|
|
4504
|
+
/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);
|
|
4505
|
+
/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-i18next */ "react-i18next");
|
|
4506
|
+
/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_i18next__WEBPACK_IMPORTED_MODULE_2__);
|
|
4507
|
+
/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/material */ "@mui/material");
|
|
4508
|
+
/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_mui_material__WEBPACK_IMPORTED_MODULE_3__);
|
|
4509
|
+
/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react-redux */ "react-redux");
|
|
4510
|
+
/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_4__);
|
|
4511
|
+
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../utils */ "./src/utils/index.js");
|
|
4512
|
+
/* harmony import */ var _utils_ticketUtils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../utils/ticketUtils */ "./src/utils/ticketUtils.js");
|
|
4513
|
+
/* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./styles.module.scss */ "./src/components/OrderSummary/styles.module.scss");
|
|
4514
|
+
/* harmony import */ var _utils_summitUtils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../utils/summitUtils */ "./src/utils/summitUtils.js");
|
|
4515
|
+
/* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../actions */ "./src/actions.js");
|
|
4516
|
+
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
|
|
4517
|
+
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__);
|
|
4518
|
+
|
|
4519
|
+
|
|
4520
|
+
|
|
4521
|
+
|
|
4522
|
+
|
|
4523
|
+
|
|
4524
|
+
|
|
4525
|
+
|
|
4526
|
+
|
|
4527
|
+
|
|
4528
|
+
|
|
4529
|
+
const OrderActions = _ref => {
|
|
4530
|
+
let {
|
|
4531
|
+
summit,
|
|
4532
|
+
order,
|
|
4533
|
+
tickets,
|
|
4534
|
+
submitRequest,
|
|
4535
|
+
onRefundClick,
|
|
4536
|
+
onRefundDetailClick
|
|
4537
|
+
} = _ref;
|
|
4538
|
+
const {
|
|
4539
|
+
t
|
|
4540
|
+
} = (0,react_i18next__WEBPACK_IMPORTED_MODULE_2__.useTranslation)();
|
|
4541
|
+
const {
|
|
4542
|
+
isStarted
|
|
4543
|
+
} = (0,_utils_summitUtils__WEBPACK_IMPORTED_MODULE_8__.useSummitDetails)({
|
|
4544
|
+
summit
|
|
4545
|
+
});
|
|
4546
|
+
const now = (0,_utils__WEBPACK_IMPORTED_MODULE_5__.useNow)();
|
|
4547
|
+
const dispatch = (0,react_redux__WEBPACK_IMPORTED_MODULE_4__.useDispatch)();
|
|
4548
|
+
const [isDownloading, setIsDownloading] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);
|
|
4549
|
+
const isInRefundablePeriod = summit.registration_allowed_refund_request_till_date > now;
|
|
4550
|
+
const atLeastOneRefundableTicket = (0,_utils_ticketUtils__WEBPACK_IMPORTED_MODULE_6__.ticketsRefundable)(tickets);
|
|
4551
|
+
const isRefundable = !!(isInRefundablePeriod && !isStarted && atLeastOneRefundableTicket);
|
|
4552
|
+
const hasRefundRequests = tickets === null || tickets === void 0 ? void 0 : tickets.some(t => {
|
|
4553
|
+
var _t$refund_requests;
|
|
4554
|
+
return ((_t$refund_requests = t.refund_requests) === null || _t$refund_requests === void 0 ? void 0 : _t$refund_requests.length) > 0;
|
|
4555
|
+
});
|
|
4556
|
+
const canDownloadReceipt = (order === null || order === void 0 ? void 0 : order.status) === "Paid";
|
|
4557
|
+
const handleDownloadReceipt = async () => {
|
|
4558
|
+
if (isDownloading || !order) return;
|
|
4559
|
+
setIsDownloading(true);
|
|
4560
|
+
try {
|
|
4561
|
+
await dispatch((0,_actions__WEBPACK_IMPORTED_MODULE_9__.downloadOrderReceipt)({
|
|
4562
|
+
order,
|
|
4563
|
+
summit
|
|
4564
|
+
}));
|
|
4565
|
+
} catch (error) {
|
|
4566
|
+
console.error("Error downloading receipt:", error);
|
|
4567
|
+
} finally {
|
|
4568
|
+
setIsDownloading(false);
|
|
4569
|
+
}
|
|
4570
|
+
};
|
|
4571
|
+
return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.Fragment, {
|
|
4572
|
+
children: [canDownloadReceipt && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
|
|
4573
|
+
"aria-label": "download receipt button",
|
|
4574
|
+
role: "button",
|
|
4575
|
+
className: "".concat(_styles_module_scss__WEBPACK_IMPORTED_MODULE_7__.orderSummaryButton, " ").concat(isDownloading ? _styles_module_scss__WEBPACK_IMPORTED_MODULE_7__.refundDisabled : ""),
|
|
4576
|
+
variant: "outlined",
|
|
4577
|
+
size: "large",
|
|
4578
|
+
onClick: handleDownloadReceipt,
|
|
4579
|
+
disabled: isDownloading,
|
|
4580
|
+
children: isDownloading ? t("order_summary.generating_receipt") : t("order_summary.download_receipt")
|
|
4581
|
+
}), isRefundable && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
|
|
4582
|
+
"aria-label": "refund request button",
|
|
4583
|
+
role: "button",
|
|
4584
|
+
className: "".concat(_styles_module_scss__WEBPACK_IMPORTED_MODULE_7__.orderSummaryButton, "\n ").concat(submitRequest ? _styles_module_scss__WEBPACK_IMPORTED_MODULE_7__.refundDisabled : ""),
|
|
4585
|
+
variant: "outlined",
|
|
4586
|
+
size: "large",
|
|
4587
|
+
onClick: onRefundClick,
|
|
4588
|
+
disabled: submitRequest,
|
|
4589
|
+
children: t("order_summary.request_refund")
|
|
4590
|
+
}), hasRefundRequests && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
|
|
4591
|
+
"aria-label": "refund details button",
|
|
4592
|
+
role: "button",
|
|
4593
|
+
className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_7__.orderSummaryButton,
|
|
4594
|
+
variant: "outlined",
|
|
4595
|
+
size: "large",
|
|
4596
|
+
onClick: onRefundDetailClick,
|
|
4597
|
+
children: t("order_summary.refund_details")
|
|
4598
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
|
|
4599
|
+
"aria-label": "email support button",
|
|
4600
|
+
role: "button",
|
|
4601
|
+
className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_7__.orderSummaryButton,
|
|
4602
|
+
variant: "outlined",
|
|
4603
|
+
size: "large",
|
|
4604
|
+
target: "_top",
|
|
4605
|
+
rel: "noopener noreferrer",
|
|
4606
|
+
href: "mailto:".concat(summit.support_email),
|
|
4607
|
+
children: t("order_info.email_support")
|
|
4608
|
+
})]
|
|
4609
|
+
});
|
|
4610
|
+
};
|
|
4611
|
+
OrderActions.propTypes = {
|
|
4612
|
+
summit: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().object),
|
|
4613
|
+
order: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().object),
|
|
4614
|
+
tickets: prop_types__WEBPACK_IMPORTED_MODULE_1___default().arrayOf(Object),
|
|
4615
|
+
onRefundClick: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func),
|
|
4616
|
+
onRefundDetailClick: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func),
|
|
4617
|
+
submitRequest: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().bool)
|
|
4618
|
+
};
|
|
4619
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (OrderActions);
|
|
4620
|
+
|
|
4621
|
+
/***/ }),
|
|
4622
|
+
|
|
3594
4623
|
/***/ "./src/components/OrderSummary/OrderSummaryTable.js":
|
|
3595
4624
|
/*!**********************************************************!*\
|
|
3596
4625
|
!*** ./src/components/OrderSummary/OrderSummaryTable.js ***!
|
|
@@ -3763,102 +4792,6 @@ OrderSummaryTable.propTypes = {
|
|
|
3763
4792
|
|
|
3764
4793
|
/***/ }),
|
|
3765
4794
|
|
|
3766
|
-
/***/ "./src/components/OrderSummary/RefundEmailSupport.js":
|
|
3767
|
-
/*!***********************************************************!*\
|
|
3768
|
-
!*** ./src/components/OrderSummary/RefundEmailSupport.js ***!
|
|
3769
|
-
\***********************************************************/
|
|
3770
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
3771
|
-
|
|
3772
|
-
__webpack_require__.r(__webpack_exports__);
|
|
3773
|
-
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
3774
|
-
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
3775
|
-
/* harmony export */ });
|
|
3776
|
-
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
|
|
3777
|
-
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
|
|
3778
|
-
/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "prop-types");
|
|
3779
|
-
/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);
|
|
3780
|
-
/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-i18next */ "react-i18next");
|
|
3781
|
-
/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_i18next__WEBPACK_IMPORTED_MODULE_2__);
|
|
3782
|
-
/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/material */ "@mui/material");
|
|
3783
|
-
/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_mui_material__WEBPACK_IMPORTED_MODULE_3__);
|
|
3784
|
-
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../utils */ "./src/utils/index.js");
|
|
3785
|
-
/* harmony import */ var _utils_ticketUtils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../utils/ticketUtils */ "./src/utils/ticketUtils.js");
|
|
3786
|
-
/* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./styles.module.scss */ "./src/components/OrderSummary/styles.module.scss");
|
|
3787
|
-
/* harmony import */ var _utils_summitUtils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../utils/summitUtils */ "./src/utils/summitUtils.js");
|
|
3788
|
-
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
|
|
3789
|
-
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__);
|
|
3790
|
-
|
|
3791
|
-
|
|
3792
|
-
|
|
3793
|
-
|
|
3794
|
-
|
|
3795
|
-
|
|
3796
|
-
|
|
3797
|
-
|
|
3798
|
-
|
|
3799
|
-
const RefundEmailSupport = _ref => {
|
|
3800
|
-
let {
|
|
3801
|
-
summit,
|
|
3802
|
-
tickets,
|
|
3803
|
-
submitRequest,
|
|
3804
|
-
onRefundClick,
|
|
3805
|
-
onRefundDetailClick
|
|
3806
|
-
} = _ref;
|
|
3807
|
-
const {
|
|
3808
|
-
t
|
|
3809
|
-
} = (0,react_i18next__WEBPACK_IMPORTED_MODULE_2__.useTranslation)();
|
|
3810
|
-
const {
|
|
3811
|
-
isStarted
|
|
3812
|
-
} = (0,_utils_summitUtils__WEBPACK_IMPORTED_MODULE_7__.useSummitDetails)({
|
|
3813
|
-
summit
|
|
3814
|
-
});
|
|
3815
|
-
const now = (0,_utils__WEBPACK_IMPORTED_MODULE_4__.useNow)();
|
|
3816
|
-
const isInRefundablePeriod = summit.registration_allowed_refund_request_till_date > now;
|
|
3817
|
-
const atLeastOneRefundableTicket = (0,_utils_ticketUtils__WEBPACK_IMPORTED_MODULE_5__.ticketsRefundable)(tickets);
|
|
3818
|
-
const isRefundable = !!(isInRefundablePeriod && !isStarted && atLeastOneRefundableTicket);
|
|
3819
|
-
const hasRefundRequests = tickets === null || tickets === void 0 ? void 0 : tickets.some(t => t.refund_requests.length > 0);
|
|
3820
|
-
return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.Fragment, {
|
|
3821
|
-
children: [isRefundable && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
|
|
3822
|
-
"aria-label": "refund request button",
|
|
3823
|
-
role: "button",
|
|
3824
|
-
className: "".concat(_styles_module_scss__WEBPACK_IMPORTED_MODULE_6__.orderSummaryButton, "\n ").concat(submitRequest ? _styles_module_scss__WEBPACK_IMPORTED_MODULE_6__.refundDisabled : ""),
|
|
3825
|
-
variant: "outlined",
|
|
3826
|
-
size: "large",
|
|
3827
|
-
onClick: onRefundClick,
|
|
3828
|
-
disabled: submitRequest,
|
|
3829
|
-
children: t("order_summary.request_refund")
|
|
3830
|
-
}), hasRefundRequests && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
|
|
3831
|
-
"aria-label": "refund details button",
|
|
3832
|
-
role: "button",
|
|
3833
|
-
className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_6__.orderSummaryButton,
|
|
3834
|
-
variant: "outlined",
|
|
3835
|
-
size: "large",
|
|
3836
|
-
onClick: onRefundDetailClick,
|
|
3837
|
-
children: t("order_summary.refund_details")
|
|
3838
|
-
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
|
|
3839
|
-
"aria-label": "email support button",
|
|
3840
|
-
role: "button",
|
|
3841
|
-
className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_6__.orderSummaryButton,
|
|
3842
|
-
variant: "outlined",
|
|
3843
|
-
size: "large",
|
|
3844
|
-
target: "_top",
|
|
3845
|
-
rel: "noopener noreferrer",
|
|
3846
|
-
href: "mailto:".concat(summit.support_email),
|
|
3847
|
-
children: t("order_info.email_support")
|
|
3848
|
-
})]
|
|
3849
|
-
});
|
|
3850
|
-
};
|
|
3851
|
-
RefundEmailSupport.propTypes = {
|
|
3852
|
-
summit: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().object),
|
|
3853
|
-
tickets: prop_types__WEBPACK_IMPORTED_MODULE_1___default().arrayOf(Object),
|
|
3854
|
-
onRefundClick: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func),
|
|
3855
|
-
onRefundDetailClick: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func),
|
|
3856
|
-
submitRequest: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().bool)
|
|
3857
|
-
};
|
|
3858
|
-
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (RefundEmailSupport);
|
|
3859
|
-
|
|
3860
|
-
/***/ }),
|
|
3861
|
-
|
|
3862
4795
|
/***/ "./src/components/OrderSummary/index.js":
|
|
3863
4796
|
/*!**********************************************!*\
|
|
3864
4797
|
!*** ./src/components/OrderSummary/index.js ***!
|
|
@@ -3878,7 +4811,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
3878
4811
|
/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-i18next */ "react-i18next");
|
|
3879
4812
|
/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react_i18next__WEBPACK_IMPORTED_MODULE_3__);
|
|
3880
4813
|
/* harmony import */ var _OrderSummaryTable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./OrderSummaryTable */ "./src/components/OrderSummary/OrderSummaryTable.js");
|
|
3881
|
-
/* harmony import */ var
|
|
4814
|
+
/* harmony import */ var _OrderActions__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./OrderActions */ "./src/components/OrderSummary/OrderActions.js");
|
|
3882
4815
|
/* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./styles.module.scss */ "./src/components/OrderSummary/styles.module.scss");
|
|
3883
4816
|
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
|
|
3884
4817
|
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__);
|
|
@@ -3931,8 +4864,9 @@ const OrderSummary = _ref => {
|
|
|
3931
4864
|
sx: {
|
|
3932
4865
|
pb: 3
|
|
3933
4866
|
},
|
|
3934
|
-
children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(
|
|
4867
|
+
children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_OrderActions__WEBPACK_IMPORTED_MODULE_5__["default"], {
|
|
3935
4868
|
summit: summit,
|
|
4869
|
+
order: order,
|
|
3936
4870
|
tickets: order === null || order === void 0 ? void 0 : order.memberTickets,
|
|
3937
4871
|
submitRequest: submitRequest,
|
|
3938
4872
|
onRefundClick: onRefundClick,
|
|
@@ -8195,6 +9129,7 @@ const getStore = _ref => {
|
|
|
8195
9129
|
loginUrl,
|
|
8196
9130
|
summit,
|
|
8197
9131
|
apiBaseUrl,
|
|
9132
|
+
receiptSettings,
|
|
8198
9133
|
updateProfile
|
|
8199
9134
|
} = _ref;
|
|
8200
9135
|
// to add other reducers later
|
|
@@ -8211,6 +9146,7 @@ const getStore = _ref => {
|
|
|
8211
9146
|
extraArgument: {
|
|
8212
9147
|
clientId,
|
|
8213
9148
|
apiBaseUrl,
|
|
9149
|
+
receiptSettings,
|
|
8214
9150
|
summit,
|
|
8215
9151
|
loginUrl,
|
|
8216
9152
|
updateProfile
|
|
@@ -9775,6 +10711,16 @@ module.exports = require("@mui/material/useMediaQuery");
|
|
|
9775
10711
|
|
|
9776
10712
|
/***/ }),
|
|
9777
10713
|
|
|
10714
|
+
/***/ "@react-pdf/renderer":
|
|
10715
|
+
/*!**************************************!*\
|
|
10716
|
+
!*** external "@react-pdf/renderer" ***!
|
|
10717
|
+
\**************************************/
|
|
10718
|
+
/***/ ((module) => {
|
|
10719
|
+
|
|
10720
|
+
module.exports = require("@react-pdf/renderer");
|
|
10721
|
+
|
|
10722
|
+
/***/ }),
|
|
10723
|
+
|
|
9778
10724
|
/***/ "@reduxjs/toolkit":
|
|
9779
10725
|
/*!***********************************!*\
|
|
9780
10726
|
!*** external "@reduxjs/toolkit" ***!
|
|
@@ -10041,7 +10987,7 @@ module.exports = require("yup");
|
|
|
10041
10987
|
\**********************************/
|
|
10042
10988
|
/***/ ((module) => {
|
|
10043
10989
|
|
|
10044
|
-
module.exports = /*#__PURE__*/JSON.parse('{"landing":{"sign_out":"Sign out","sign_in":"FNid Sign In","not_logged_in":"You are not logged in. Please log in to continue:"},"errors":{"error":"Error","user_not_authz":"Hold on. Your user is not authorized!.","user_not_set":"Hold on. Can not get any valid user.","session_expired":"Hold on. Your session expired!","server_error":"There was a problem with our server, please contact admin.","not_allowed":"You are not allowed here, please login with another user to access this page.","refund_unsuccessful":"Some of the refund requests were unsucessful. Please try again."},"general":{"continue":"Continue","save_and_continue":"Save and Continue","back":"Back","pay_now":"Pay Now","confirm":"Confirm","yes":"Yes","no":"No","cancel":"Cancel","finish":"Finish","copy_to_clipboard":"Copy to clipboard","copied":"Copied!","view_more":"View more","view_less":"View less","contact_support":"contact support"},"labels":{"tickets":"Tickets","summary":"Summary","assigned_to_me":"Assigned Tickets","search_results":"Search results for {{filter}}"},"order_summary":{"order_summary":"Order Summary","order_no":"Order number","discounts":"Promo Code Discount","refunds":"Refund","request_refund":"Request a Refund","refund_details":"Your Refund Details","taxes":"Taxes","sub_total":"Subtotal","total":"Total Paid","amount_paid":"Amount Paid","copy_order_number":"Copy Order Number"},"event_info":{"about_title":"About the event","about_desc":"a description","directions":"Get Directions","calendar":"Add to Calendar"},"step_one":{"choose_tickets":"Choose your ticket(s)","choose_tickets_desc":"a description","expiration":"Ticket(s) available until ","free":"Free","sold_out":"Sold Out","no_tickets":"No tickets for sale!","getfnid":"Create an FNid","signin":"Sign In"},"step_two":{"basic_info":"Purchaser Information","required":"Required fields","have_account":"Do you have an FNid account?","sign_in":"Sign in","sign_in_account":"to autopopulate this info and manage this order.","first_name":"First Name","last_name":"Last Name","email":"Email","company":"Company","tickets":"Tickets","ticket":"Ticket","asterisks_bold":"NOTE: Ticket(s) can be assigned later.","asterisks":"Ticket holders will immediately receive an email to finalize their attendee information.","code":"Promo Code:","assign":"Assign to:","add_ticket":"Add additional ticket(s) to this order","no_tickets":"No tickets selected.","disclaimer_in_person_title":"Attention","placeholders":{"coupon":"Coupon (Optional)","email":"Attendee Email (Optional)"},"validator":{"first_name":"Please enter your First Name.","last_name":"Please enter your Last Name.","company":"Please enter your Company.","email":"Please enter a valid Email."}},"step_three":{"payment_info":"Payment Information","required":"Required fields","payment_subtitle":"a subtitle...","cardholder_name":"Cardholder Name","card_number":"Card Number","expiration":"Expiration & Code","billing_info":"Billing Information","billing_subtitle":"a subtitle...","billing_country":"Country","billing_address":"Address","billing_address_two":"Address 2","billing_city":"City","billing_state":"State","billing_zipcode":"ZIP Code","stripe_errors":{"cardNumber":"Please enter a valid Credit Card.","cardExpiry":"Please enter the card expiration.","cardCvc":"Please enter the card cvc."},"validator":{"billing_country":"Please enter the billing Country.","billing_address":"Please enter the billing Address.","billing_city":"Please enter the billing City.","billing_state":"Please enter the billing State.","billing_zipcode":"Please enter the billing ZipCode."}},"step_four":{"thank_you":"Thank you for your order!","subtitle":"Your Order is Now Complete","member_exclamation":"You are signed in with your FNid and will use it to log in to the event on show days. ","member_text":"You may proceed directly to the \\"","member_link_tickets":"My Tickets","member_text_1":"\\" page to review your ticket(s) and complete any required details. Visit the \\"","member_link_orders":"My Orders","member_text_2":"\\" page to manage your purchase, assign ticket(s), and edit attendee details.","required_text":"PLEASE NOTE! Ticket(s) must be assigned and all additional details must be completed before official ticket(s) are issued.","register_text":"An FNid is required to manage order(s) and assign ticket(s) ","register_link_text":"create one","register_text_2":" with the email ","register_text_3":" used for this purchase, you will then be able to manage your order.","register_email_bold":"You will now receive an email with a one-click link to create a password for your FNid.","register_email_1":"Your FNid will allow you to access the event. Visit the \\"","register_email_orders":"My Orders","register_email_2":"\\" page to manage your purchase, assign ticket(s), and edit attendee details.","help_text":"For further assistance, please email ","order_no":"ORDER NUMBER","manage":"My Orders","getfnid":"Create an FNid","signin":"Sign In"},"guests":{"invalid_thanks":"Thanks for coming to fill in the remaining details so we can issue your ticket.","invalid_text_1":"Unfortunately the link in your email has expired. Not to worry we will send you a fresh link. Click here or the button below to get a new link.","invalid_button":"Send New Link","invalid_contact":"If you have any problems please email","hash_regenerated":"Please check your new link in your email","completed_text_1":"Thank you for completing your additional details. Your ticket has now been issued. Please use your FNid to access the event.","completed_button":"Download Ticket to","completed_text_2":"You will also receive an email confirmation.","cancel":"Cancel","save":"Save"},"orders":{"title":"My Orders with Tickets","purchased":"Purchased on","empty":"There are no active orders so far","loading":"Loading orders..."},"no-summit":{"not-found":"","select-list":"Please select from available shows:"},"order_info":{"print":"Print","resend":"Resend Receipt","download":"Download Ticket PDF","cancel_order":"Request to Refund All Tickets","cancel_ticket":"Cancel Ticket","email_support":"Email Support","directions":"Get Directions","calendar":"Add to Calendar"},"order_status":{"complete":"Ticket(s) assigned and issued","incomplete":"Additional attendee details required before ticket(s) can be issued","pending":"Pending confirmation","cancelled":"Cancelled","error":"Payment error","processing":"Payment processing","past":"Past"},"tickets":{"title":"External Tickets Assigned to Me","empty":"There are no tickets so far","loading":"Loading tickets...","save_message":"Thank you! Your information has been saved and ticket updated.","assign_success_message":"The ticket was successfully assigned.","reassign_success_message":"The ticket was successfully reassigned.","unassign_success_message":"The ticket was successfully unassigned.","notify_success_message":"Notification was sent to ticket holder.","refund_request_success_1":"Your refund request has been requested successfully","refund_request_success_2":"Please allow 24 - 48 hours for a response"},"ticket_status":{"unassigned":"Unassigned","incomplete":"Required details needed","complete":"Ready to use","cancelled":"Cancelled","past":"Past","ticket_no":"Ticket #","assigned_to":"Assigned to","assigned_by":"Assigned by","manage_for":"Manage for","attendee_status_unassigned":"Attendee unassigned","view_tickets":"View Tickets","hide_tickets":"Hide Tickets","view_ticket":"View Ticket","reassign_ticket":"Reassign","assign_ticket":"Assign Ticket","status_unassigned":"Unassigned","status_complete":"Completed","status_incomplete":"Incomplete","status_refund_requested":"Refund Requested","status_details_required":"Some tickets in this order require additional details before the ticket(s) can be issued.","status_cancelled":"Cancelled","finish_ticket":"Finish Ticket","select_ticket_refund":"Select the ticket(s) for a refund:","select_all":"Select All","select_cancel":"Cancel","copy_ticket_number":"Copy Ticket Number","refund_request_approved":"Approved","refund_request_rejected":"Rejected","refund_request_pending":"Requested"},"nav_bar":{"my-orders":"My Orders","my-tickets":"My Tickets"},"ticket_popup":{"tab_assign":"Assign","tab_reassign":"Reassign","tab_refund":"Refund","tab_edit":"Edit Details","tab_edit_read_only":"Details","tab_notify":"Notify Ticket Holder","assign_text":"Select the option to assign this ticket","assign_or":"Or","assign_me":"Assign to Me","assign_this":"Assign this Ticket","assign_want_text":"I want to assign this ticket to someone else!","assign_someone":"Assign to this person","assign_ticket":"Assign this Ticket","assign_expire":"Ability to assign ticket expires in ","assign_days":"days","reassign_printed_ticket":"Ticket may not be reassigned because this badge has already been printed.","reassign_text":"Select the option to reassign this ticket from","reassign_want_text":"I want to reassign this ticket to someone else!","reassign_before":"before","reassign_enter_email":"Enter the email of the person you would like to assign the ticket to below. Please note! An email will be sent to the below address with instructions on how to complete any additional information required to issue their ticket.","reassign_check":"Clean all fields","reassign_me":"Reassign to Me","reassign_someone":"Reassign to this person","edit_basic_info":"Attendee Information","edit_required":"Required","edit_email":"Ticket assigned to email:","assign_note":"Note: Should the ticket holder wish to change their name or company info, they can do so by logging into the event site and clicking on the profile icon (located on the far right of the top navigation bar).","edit_first_name":"First Name","edit_first_name_placeholder":"Attendee First Name","edit_last_name":"Last Name","edit_last_name_placeholder":"Attendee Last Name","edit_company":"Company","edit_company_placeholder":"Attendee Company","edit_required_star":"*","edit_preferences":"Additional Details","notify_text_1":"All required details must be completed before","notify_text_2":"Clicking the \\"Resend Notification\\" button will generate an email to","notify_text_3":"with instructions on how to provide their required attendee information. Once the details are complete, their official ticket will be issued and sent to","notify_message":"Personal Message","notify_message_condition":"(Optional)","notify_button":"Resend Notification","cancel_ticket":"Request a refund for this ticket","save_changes":"Save Changes","saving_changes":"Saving Changes","do_it_later":"Do this later","do_it_later_exp":"You may fill in the required information now or complete this step on the \'My Orders\' page later."},"confirm_popup":{"question_title_cancel":"Refund Ticket","question_text_select_refund":"Select the ticket you want a refund","question_text_confirm_refund":"Are you sure you want to request a refund for the below ticket(s)?","question_text_cancel":"Are you sure you want to request a refund of this ticket?","question_title_cancel_order":"Refund Order","question_text_cancel_order":"Are you sure you want to request a refund of this entire order ?","question_title_assign":"Assign Request","question_text_assign":"Are you sure you want to clean all the fields?","question_title_unassign":"Unassign Request","question_text_unassign":"Are you sure you want to unassign this ticket?","question_title_reassign":"Reassign Request","question_text_reassign":"Are you sure you want to reassign this ticket?","question_title_save":"Save","question_text_save":"","question_title_notification":"Notification Request","question_text_notification":"","question_text_confirm":"Are you sure?","cancel":"Cancel","accept":"Yes","success_title":"Request Submitted","success_text":"An email notification has been sent to","success_button":"Got it"},"invitees":{"validation_error":"Invitation error","entity_not_found":"Invitation not found"},"signin":{"add_code_title_p1":"Add the","add_code_title_p2":"digit code below","email_reception_error_p1":"Didn\'t receive it? Check your spam folder or","email_reception_error_p2":"resend email","email_sent":"We\'ve sent a code to the email","go_back_title_p1":"or go back and","go_back_title_p2":"try another way","invalid_email_addr":"Please enter a valid email adress","login_with_title":"Log in with one of the following","retry":"Please try again.","send_code_option":"or get a login code emailed to you","verify_btn":"Verify","wrong_code":"The code you entered is incorrect.","fn_login_btn":"Continue with FNid","fb_login_btn":"Continue with Facebook","ln_login_btn":"Sign in with LinkedIn","ap_login_btn":"Continue with Apple","ok_login_btn":"Continue with Okta"},"logout_popup":{"title":"Re-login required","message":"You are not logged in anymore. Please log in to continue.","close_btn":"Re-login"},"filter":{"filter":"Filter","purchased_on":"Purchased on","clear":"Clear","clear_filters":"Clear Filters"},"sort":{"sort":"Sort","new_first":"Newest first","old_first":"Oldest first"},"order_search":{"order_number":"Search order number"},"ticket_detail":{"purchased_by":"Purchased by","status":"ready to use","qr_note":"When you check in you will be able to scan the QR code directly from your device. Or you can:","download":"Download","send":"Send to email","sent":"Email sent!","attendee_information":"Attendee Information","email":"Email","manage_for":"Manage for: ","first_name":"First Name","last_name":"Last Name","attendee_first_name":"First Name","attendee_last_name":"Last Name","attendee_company":"Company","delegated_to":"Delegated to:","aditional_details":"Additional details","save":"save changes","cancel":"cancel","info_note":"Note: Should the ticket holder wish to change name or company info, they can do so by logging into the event site and clicking on the profile icon (located on the far right of the top navigation bar).","saving_error":"Error saving Ticket, please try again.","saving_success":"Complete Ticket saved successfully!"},"ticket_assign":{"header_assign":{"title":"Assign ticket","purchased_by":"Purchased by","assigned_to":"This ticket have been assigned to","delegated":"This ticket was assigned to you so you can manage it on behalf of","answer_your_eq":"You may enter the required information now to complete the ticket, or you may select \\"Complete Later\\".","answer_others_eq":"You may enter the required information for them to complete the ticket, or select \\"Complete Later\\" to let them do it.","complete_later":"Complete Later"},"header_reassign":{"title":"REASSIGN ticket","choose_option":"Below you can assign the ticket to yourself, assign it to someone else, or manage the ticket for someone else. We will notify the previous ticketholder via email that the ticket is no longer assigned to them.","choose_option_no_delegate":"Below you can assign the ticket to yourself or assign it to someone else. We will notify the previous ticketholder via email that the ticket is no longer assigned to them.","assigned_to":"This ticket is currently assigned to","reassigned_to":"You have assigned the ticket to","delegated":"You are now managing the ticket for","yourself":"yourself","answer_your_eq":"You may enter the required information now to complete the ticket, or you may select \\"Complete Later\\".","answer_others_eq":"You may enter the required information for them to complete the ticket, or select \\"Complete Later\\" to let them do it.","complete_later":"Complete Later"},"assign_to_me":"Assign to me","assign_to_other":"Assign to someone else","manage_ticket":"Manage ticket for someone else","revert_to_unassigned":"Revert to Unassigned","reassign_form":{"title":"I want to assign this ticket to someone else:","body":"Enter the email of the person you would like to assign the ticket to below. Please note! An email will be sent to the below address with instructions on how to complete any additional information required to issue their ticket.","new_attendee_email":"New attendee email","personal_message":"Personal Message (optional)","cancel":"cancel","save":"assign to this person"},"delegate_form":{"first_name":"First Name","last_name":"Last Name","email":"Email (optional)","title":"I want to manage this ticket for someone else:","body":"Enter the name of the person you would like to manage the ticket for below. Managing a ticket keeps it under your control. To give someone control you should assign it to the person instead.","save":"MANAGE FOR THIS PERSON","cancel":"cancel"},"extra_questions_form":{"cancel":"complete later","save":"save","disclaimer_label":"I agree with the above."},"saving_error":"Error saving Ticket, please try again.","saving_success":"Complete Ticket saved successfully!","confirm_unassign":{"title":"Unassign Ticket","body":"Are you sure you want to unassign this ticket?"}},"validation":{"required_question":"This question is required","required_field":"Required field","first_name":{"string":"Enter first name","required":"First name is required"},"last_name":{"string":"Enter last name","required":"Last name is required"},"email":{"string":"Enter email","format":"Must be a valid email address","required":"Email is required"},"text":{"string":"Enter text"},"checkbox":{"required":"Field must be checked"},"company":{"required":"Company is required"}},"no_results":{"assigned":{"title":"No tickets found assigned to you","body":"We did not find any tickets assigned to this account.\\n You may still have orders with tickets assigned to others.\\n If this seems incorrect please "},"filter":{"title":"No results found","body":"Try using fewer filters or clearing them to see more results."},"orders":{"title":"No orders found","body":"We did not find any orders associated with your account.\\nYou may still have tickets assigned to you.\\nIf this seems incorrect please "}}}');
|
|
10990
|
+
module.exports = /*#__PURE__*/JSON.parse('{"landing":{"sign_out":"Sign out","sign_in":"FNid Sign In","not_logged_in":"You are not logged in. Please log in to continue:"},"errors":{"error":"Error","user_not_authz":"Hold on. Your user is not authorized!.","user_not_set":"Hold on. Can not get any valid user.","session_expired":"Hold on. Your session expired!","server_error":"There was a problem with our server, please contact admin.","not_allowed":"You are not allowed here, please login with another user to access this page.","refund_unsuccessful":"Some of the refund requests were unsucessful. Please try again."},"general":{"continue":"Continue","save_and_continue":"Save and Continue","back":"Back","pay_now":"Pay Now","confirm":"Confirm","yes":"Yes","no":"No","cancel":"Cancel","finish":"Finish","copy_to_clipboard":"Copy to clipboard","copied":"Copied!","view_more":"View more","view_less":"View less","contact_support":"contact support"},"labels":{"tickets":"Tickets","summary":"Summary","assigned_to_me":"Assigned Tickets","search_results":"Search results for {{filter}}"},"order_summary":{"order_summary":"Order Summary","order_no":"Order number","discounts":"Promo Code Discount","refunds":"Refund","request_refund":"Request a Refund","refund_details":"Your Refund Details","download_receipt":"Download Receipt","generating_receipt":"Generating...","taxes":"Taxes","sub_total":"Subtotal","total":"Total","amount_paid":"Amount Paid","copy_order_number":"Copy Order Number"},"event_info":{"about_title":"About the event","about_desc":"a description","directions":"Get Directions","calendar":"Add to Calendar"},"step_one":{"choose_tickets":"Choose your ticket(s)","choose_tickets_desc":"a description","expiration":"Ticket(s) available until ","free":"Free","sold_out":"Sold Out","no_tickets":"No tickets for sale!","getfnid":"Create an FNid","signin":"Sign In"},"step_two":{"basic_info":"Purchaser Information","required":"Required fields","have_account":"Do you have an FNid account?","sign_in":"Sign in","sign_in_account":"to autopopulate this info and manage this order.","first_name":"First Name","last_name":"Last Name","email":"Email","company":"Company","tickets":"Tickets","ticket":"Ticket","asterisks_bold":"NOTE: Ticket(s) can be assigned later.","asterisks":"Ticket holders will immediately receive an email to finalize their attendee information.","code":"Promo Code:","assign":"Assign to:","add_ticket":"Add additional ticket(s) to this order","no_tickets":"No tickets selected.","disclaimer_in_person_title":"Attention","placeholders":{"coupon":"Coupon (Optional)","email":"Attendee Email (Optional)"},"validator":{"first_name":"Please enter your First Name.","last_name":"Please enter your Last Name.","company":"Please enter your Company.","email":"Please enter a valid Email."}},"step_three":{"payment_info":"Payment Information","required":"Required fields","payment_subtitle":"a subtitle...","cardholder_name":"Cardholder Name","card_number":"Card Number","expiration":"Expiration & Code","billing_info":"Billing Information","billing_subtitle":"a subtitle...","billing_country":"Country","billing_address":"Address","billing_address_two":"Address 2","billing_city":"City","billing_state":"State","billing_zipcode":"ZIP Code","stripe_errors":{"cardNumber":"Please enter a valid Credit Card.","cardExpiry":"Please enter the card expiration.","cardCvc":"Please enter the card cvc."},"validator":{"billing_country":"Please enter the billing Country.","billing_address":"Please enter the billing Address.","billing_city":"Please enter the billing City.","billing_state":"Please enter the billing State.","billing_zipcode":"Please enter the billing ZipCode."}},"step_four":{"thank_you":"Thank you for your order!","subtitle":"Your Order is Now Complete","member_exclamation":"You are signed in with your FNid and will use it to log in to the event on show days. ","member_text":"You may proceed directly to the \\"","member_link_tickets":"My Tickets","member_text_1":"\\" page to review your ticket(s) and complete any required details. Visit the \\"","member_link_orders":"My Orders","member_text_2":"\\" page to manage your purchase, assign ticket(s), and edit attendee details.","required_text":"PLEASE NOTE! Ticket(s) must be assigned and all additional details must be completed before official ticket(s) are issued.","register_text":"An FNid is required to manage order(s) and assign ticket(s) ","register_link_text":"create one","register_text_2":" with the email ","register_text_3":" used for this purchase, you will then be able to manage your order.","register_email_bold":"You will now receive an email with a one-click link to create a password for your FNid.","register_email_1":"Your FNid will allow you to access the event. Visit the \\"","register_email_orders":"My Orders","register_email_2":"\\" page to manage your purchase, assign ticket(s), and edit attendee details.","help_text":"For further assistance, please email ","order_no":"ORDER NUMBER","manage":"My Orders","getfnid":"Create an FNid","signin":"Sign In"},"guests":{"invalid_thanks":"Thanks for coming to fill in the remaining details so we can issue your ticket.","invalid_text_1":"Unfortunately the link in your email has expired. Not to worry we will send you a fresh link. Click here or the button below to get a new link.","invalid_button":"Send New Link","invalid_contact":"If you have any problems please email","hash_regenerated":"Please check your new link in your email","completed_text_1":"Thank you for completing your additional details. Your ticket has now been issued. Please use your FNid to access the event.","completed_button":"Download Ticket to","completed_text_2":"You will also receive an email confirmation.","cancel":"Cancel","save":"Save"},"orders":{"title":"My Orders with Tickets","purchased":"Purchased on","empty":"There are no active orders so far","loading":"Loading orders..."},"no-summit":{"not-found":"","select-list":"Please select from available shows:"},"order_info":{"print":"Print","resend":"Resend Receipt","download":"Download Ticket PDF","cancel_order":"Request to Refund All Tickets","cancel_ticket":"Cancel Ticket","email_support":"Email Support","directions":"Get Directions","calendar":"Add to Calendar"},"order_status":{"complete":"Ticket(s) assigned and issued","incomplete":"Additional attendee details required before ticket(s) can be issued","pending":"Pending confirmation","cancelled":"Cancelled","error":"Payment error","processing":"Payment processing","past":"Past"},"tickets":{"title":"External Tickets Assigned to Me","empty":"There are no tickets so far","loading":"Loading tickets...","save_message":"Thank you! Your information has been saved and ticket updated.","assign_success_message":"The ticket was successfully assigned.","reassign_success_message":"The ticket was successfully reassigned.","unassign_success_message":"The ticket was successfully unassigned.","notify_success_message":"Notification was sent to ticket holder.","refund_request_success_1":"Your refund request has been requested successfully","refund_request_success_2":"Please allow 24 - 48 hours for a response"},"ticket_status":{"unassigned":"Unassigned","incomplete":"Required details needed","complete":"Ready to use","cancelled":"Cancelled","past":"Past","ticket_no":"Ticket #","assigned_to":"Assigned to","assigned_by":"Assigned by","manage_for":"Manage for","attendee_status_unassigned":"Attendee unassigned","view_tickets":"View Tickets","hide_tickets":"Hide Tickets","view_ticket":"View Ticket","reassign_ticket":"Reassign","assign_ticket":"Assign Ticket","status_unassigned":"Unassigned","status_complete":"Completed","status_incomplete":"Incomplete","status_refund_requested":"Refund Requested","status_details_required":"Some tickets in this order require additional details before the ticket(s) can be issued.","status_cancelled":"Cancelled","finish_ticket":"Finish Ticket","select_ticket_refund":"Select the ticket(s) for a refund:","select_all":"Select All","select_cancel":"Cancel","copy_ticket_number":"Copy Ticket Number","refund_request_approved":"Approved","refund_request_rejected":"Rejected","refund_request_pending":"Requested"},"nav_bar":{"my-orders":"My Orders","my-tickets":"My Tickets"},"ticket_popup":{"tab_assign":"Assign","tab_reassign":"Reassign","tab_refund":"Refund","tab_edit":"Edit Details","tab_edit_read_only":"Details","tab_notify":"Notify Ticket Holder","assign_text":"Select the option to assign this ticket","assign_or":"Or","assign_me":"Assign to Me","assign_this":"Assign this Ticket","assign_want_text":"I want to assign this ticket to someone else!","assign_someone":"Assign to this person","assign_ticket":"Assign this Ticket","assign_expire":"Ability to assign ticket expires in ","assign_days":"days","reassign_printed_ticket":"Ticket may not be reassigned because this badge has already been printed.","reassign_text":"Select the option to reassign this ticket from","reassign_want_text":"I want to reassign this ticket to someone else!","reassign_before":"before","reassign_enter_email":"Enter the email of the person you would like to assign the ticket to below. Please note! An email will be sent to the below address with instructions on how to complete any additional information required to issue their ticket.","reassign_check":"Clean all fields","reassign_me":"Reassign to Me","reassign_someone":"Reassign to this person","edit_basic_info":"Attendee Information","edit_required":"Required","edit_email":"Ticket assigned to email:","assign_note":"Note: Should the ticket holder wish to change their name or company info, they can do so by logging into the event site and clicking on the profile icon (located on the far right of the top navigation bar).","edit_first_name":"First Name","edit_first_name_placeholder":"Attendee First Name","edit_last_name":"Last Name","edit_last_name_placeholder":"Attendee Last Name","edit_company":"Company","edit_company_placeholder":"Attendee Company","edit_required_star":"*","edit_preferences":"Additional Details","notify_text_1":"All required details must be completed before","notify_text_2":"Clicking the \\"Resend Notification\\" button will generate an email to","notify_text_3":"with instructions on how to provide their required attendee information. Once the details are complete, their official ticket will be issued and sent to","notify_message":"Personal Message","notify_message_condition":"(Optional)","notify_button":"Resend Notification","cancel_ticket":"Request a refund for this ticket","save_changes":"Save Changes","saving_changes":"Saving Changes","do_it_later":"Do this later","do_it_later_exp":"You may fill in the required information now or complete this step on the \'My Orders\' page later."},"confirm_popup":{"question_title_cancel":"Refund Ticket","question_text_select_refund":"Select the ticket you want a refund","question_text_confirm_refund":"Are you sure you want to request a refund for the below ticket(s)?","question_text_cancel":"Are you sure you want to request a refund of this ticket?","question_title_cancel_order":"Refund Order","question_text_cancel_order":"Are you sure you want to request a refund of this entire order ?","question_title_assign":"Assign Request","question_text_assign":"Are you sure you want to clean all the fields?","question_title_unassign":"Unassign Request","question_text_unassign":"Are you sure you want to unassign this ticket?","question_title_reassign":"Reassign Request","question_text_reassign":"Are you sure you want to reassign this ticket?","question_title_save":"Save","question_text_save":"","question_title_notification":"Notification Request","question_text_notification":"","question_text_confirm":"Are you sure?","cancel":"Cancel","accept":"Yes","success_title":"Request Submitted","success_text":"An email notification has been sent to","success_button":"Got it"},"invitees":{"validation_error":"Invitation error","entity_not_found":"Invitation not found"},"signin":{"add_code_title_p1":"Add the","add_code_title_p2":"digit code below","email_reception_error_p1":"Didn\'t receive it? Check your spam folder or","email_reception_error_p2":"resend email","email_sent":"We\'ve sent a code to the email","go_back_title_p1":"or go back and","go_back_title_p2":"try another way","invalid_email_addr":"Please enter a valid email adress","login_with_title":"Log in with one of the following","retry":"Please try again.","send_code_option":"or get a login code emailed to you","verify_btn":"Verify","wrong_code":"The code you entered is incorrect.","fn_login_btn":"Continue with FNid","fb_login_btn":"Continue with Facebook","ln_login_btn":"Sign in with LinkedIn","ap_login_btn":"Continue with Apple","ok_login_btn":"Continue with Okta"},"logout_popup":{"title":"Re-login required","message":"You are not logged in anymore. Please log in to continue.","close_btn":"Re-login"},"filter":{"filter":"Filter","purchased_on":"Purchased on","clear":"Clear","clear_filters":"Clear Filters"},"sort":{"sort":"Sort","new_first":"Newest first","old_first":"Oldest first"},"order_search":{"order_number":"Search order number"},"ticket_detail":{"purchased_by":"Purchased by","status":"ready to use","qr_note":"When you check in you will be able to scan the QR code directly from your device. Or you can:","download":"Download","send":"Send to email","sent":"Email sent!","attendee_information":"Attendee Information","email":"Email","manage_for":"Manage for: ","first_name":"First Name","last_name":"Last Name","attendee_first_name":"First Name","attendee_last_name":"Last Name","attendee_company":"Company","delegated_to":"Delegated to:","aditional_details":"Additional details","save":"save changes","cancel":"cancel","info_note":"Note: Should the ticket holder wish to change name or company info, they can do so by logging into the event site and clicking on the profile icon (located on the far right of the top navigation bar).","saving_error":"Error saving Ticket, please try again.","saving_success":"Complete Ticket saved successfully!"},"ticket_assign":{"header_assign":{"title":"Assign ticket","purchased_by":"Purchased by","assigned_to":"This ticket have been assigned to","delegated":"This ticket was assigned to you so you can manage it on behalf of","answer_your_eq":"You may enter the required information now to complete the ticket, or you may select \\"Complete Later\\".","answer_others_eq":"You may enter the required information for them to complete the ticket, or select \\"Complete Later\\" to let them do it.","complete_later":"Complete Later"},"header_reassign":{"title":"REASSIGN ticket","choose_option":"Below you can assign the ticket to yourself, assign it to someone else, or manage the ticket for someone else. We will notify the previous ticketholder via email that the ticket is no longer assigned to them.","choose_option_no_delegate":"Below you can assign the ticket to yourself or assign it to someone else. We will notify the previous ticketholder via email that the ticket is no longer assigned to them.","assigned_to":"This ticket is currently assigned to","reassigned_to":"You have assigned the ticket to","delegated":"You are now managing the ticket for","yourself":"yourself","answer_your_eq":"You may enter the required information now to complete the ticket, or you may select \\"Complete Later\\".","answer_others_eq":"You may enter the required information for them to complete the ticket, or select \\"Complete Later\\" to let them do it.","complete_later":"Complete Later"},"assign_to_me":"Assign to me","assign_to_other":"Assign to someone else","manage_ticket":"Manage ticket for someone else","revert_to_unassigned":"Revert to Unassigned","reassign_form":{"title":"I want to assign this ticket to someone else:","body":"Enter the email of the person you would like to assign the ticket to below. Please note! An email will be sent to the below address with instructions on how to complete any additional information required to issue their ticket.","new_attendee_email":"New attendee email","personal_message":"Personal Message (optional)","cancel":"cancel","save":"assign to this person"},"delegate_form":{"first_name":"First Name","last_name":"Last Name","email":"Email (optional)","title":"I want to manage this ticket for someone else:","body":"Enter the name of the person you would like to manage the ticket for below. Managing a ticket keeps it under your control. To give someone control you should assign it to the person instead.","save":"MANAGE FOR THIS PERSON","cancel":"cancel"},"extra_questions_form":{"cancel":"complete later","save":"save","disclaimer_label":"I agree with the above."},"saving_error":"Error saving Ticket, please try again.","saving_success":"Complete Ticket saved successfully!","confirm_unassign":{"title":"Unassign Ticket","body":"Are you sure you want to unassign this ticket?"}},"validation":{"required_question":"This question is required","required_field":"Required field","first_name":{"string":"Enter first name","required":"First name is required"},"last_name":{"string":"Enter last name","required":"Last name is required"},"email":{"string":"Enter email","format":"Must be a valid email address","required":"Email is required"},"text":{"string":"Enter text"},"checkbox":{"required":"Field must be checked"},"company":{"required":"Company is required"}},"no_results":{"assigned":{"title":"No tickets found assigned to you","body":"We did not find any tickets assigned to this account.\\n You may still have orders with tickets assigned to others.\\n If this seems incorrect please "},"filter":{"title":"No results found","body":"Try using fewer filters or clearing them to see more results."},"orders":{"title":"No orders found","body":"We did not find any orders associated with your account.\\nYou may still have tickets assigned to you.\\nIf this seems incorrect please "}}}');
|
|
10045
10991
|
|
|
10046
10992
|
/***/ }),
|
|
10047
10993
|
|
|
@@ -10051,7 +10997,7 @@ module.exports = /*#__PURE__*/JSON.parse('{"landing":{"sign_out":"Sign out","sig
|
|
|
10051
10997
|
\**********************************/
|
|
10052
10998
|
/***/ ((module) => {
|
|
10053
10999
|
|
|
10054
|
-
module.exports = /*#__PURE__*/JSON.parse('{"landing":{"sign_out":"Sign out","sign_in":"FNid Sign In","not_logged_in":"You are not logged in. Please log in to continue:"},"errors":{"error":"Error","user_not_authz":"Hold on. Your user is not authorized!.","user_not_set":"Hold on. Can not get any valid user.","session_expired":"Hold on. Your session expired!","server_error":"There was a problem with our server, please contact admin.","not_allowed":"You are not allowed here, please login with another user to access this page.","refund_unsuccessful":"Some of the refund requests were unsucessful. Please try again."},"general":{"continue":"Continue","save_and_continue":"Save and Continue","back":"Back","pay_now":"Pay Now","confirm":"Confirm","yes":"Yes","no":"No","cancel":"Cancel","finish":"Finish","copy_to_clipboard":"Copy to clipboard","copied":"Copied!","view_more":"View more","view_less":"View less","contact_support":"contact support"},"labels":{"tickets":"Tickets","summary":"Summary","assigned_to_me":"Assigned Tickets","search_results":"Search results for {{filter}}"},"order_summary":{"order_summary":"Order Summary","order_no":"Order number","discounts":"Promo Code Discount","refunds":"Refund","request_refund":"Request a Refund","refund_details":"Your Refund Details","taxes":"Taxes","sub_total":"Subtotal","total":"Total Paid","amount_paid":"Amount Paid","copy_order_number":"Copy Order Number"},"event_info":{"about_title":"About the event","about_desc":"a description","directions":"Get Directions","calendar":"Add to Calendar"},"step_one":{"choose_tickets":"Choose your ticket(s)","choose_tickets_desc":"a description","expiration":"Ticket(s) available until ","free":"Free","sold_out":"Sold Out","no_tickets":"No tickets for sale!","getfnid":"Create an FNid","signin":"Sign In"},"step_two":{"basic_info":"Purchaser Information","required":"Required fields","have_account":"Do you have an FNid account?","sign_in":"Sign in","sign_in_account":"to autopopulate this info and manage this order.","first_name":"First Name","last_name":"Last Name","email":"Email","company":"Company","tickets":"Tickets","ticket":"Ticket","asterisks_bold":"NOTE: Ticket(s) can be assigned later.","asterisks":"Ticket holders will immediately receive an email to finalize their attendee information.","code":"Promo Code:","assign":"Assign to:","add_ticket":"Add additional ticket(s) to this order","no_tickets":"No tickets selected.","disclaimer_in_person_title":"Attention","placeholders":{"coupon":"Coupon (Optional)","email":"Attendee Email (Optional)"},"validator":{"first_name":"Please enter your First Name.","last_name":"Please enter your Last Name.","company":"Please enter your Company.","email":"Please enter a valid Email."}},"step_three":{"payment_info":"Payment Information","required":"Required fields","payment_subtitle":"a subtitle...","cardholder_name":"Cardholder Name","card_number":"Card Number","expiration":"Expiration & Code","billing_info":"Billing Information","billing_subtitle":"a subtitle...","billing_country":"Country","billing_address":"Address","billing_address_two":"Address 2","billing_city":"City","billing_state":"State","billing_zipcode":"ZIP Code","stripe_errors":{"cardNumber":"Please enter a valid Credit Card.","cardExpiry":"Please enter the card expiration.","cardCvc":"Please enter the card cvc."},"validator":{"billing_country":"Please enter the billing Country.","billing_address":"Please enter the billing Address.","billing_city":"Please enter the billing City.","billing_state":"Please enter the billing State.","billing_zipcode":"Please enter the billing ZipCode."}},"step_four":{"thank_you":"Thank you for your order!","subtitle":"Your Order is Now Complete","member_exclamation":"You are signed in with your FNid and will use it to log in to the event on show days. ","member_text":"You may proceed directly to the \\"","member_link_tickets":"My Tickets","member_text_1":"\\" page to review your ticket(s) and complete any required details. Visit the \\"","member_link_orders":"My Orders","member_text_2":"\\" page to manage your purchase, assign ticket(s), and edit attendee details.","required_text":"PLEASE NOTE! Ticket(s) must be assigned and all additional details must be completed before official ticket(s) are issued.","register_text":"An FNid is required to manage order(s) and assign ticket(s) ","register_link_text":"create one","register_text_2":" with the email ","register_text_3":" used for this purchase, you will then be able to manage your order.","register_email_bold":"You will now receive an email with a one-click link to create a password for your FNid.","register_email_1":"Your FNid will allow you to access the event. Visit the \\"","register_email_orders":"My Orders","register_email_2":"\\" page to manage your purchase, assign ticket(s), and edit attendee details.","help_text":"For further assistance, please email ","order_no":"ORDER NUMBER","manage":"My Orders","getfnid":"Create an FNid","signin":"Sign In"},"guests":{"invalid_thanks":"Thanks for coming to fill in the remaining details so we can issue your ticket.","invalid_text_1":"Unfortunately the link in your email has expired. Not to worry we will send you a fresh link. Click here or the button below to get a new link.","invalid_button":"Send New Link","invalid_contact":"If you have any problems please email","hash_regenerated":"Please check your new link in your email","completed_text_1":"Thank you for completing your additional details. Your ticket has now been issued. Please use your FNid to access the event.","completed_button":"Download Ticket to","completed_text_2":"You will also receive an email confirmation.","cancel":"Cancel","save":"Save"},"orders":{"title":"My Orders with Tickets","purchased":"Purchased on","empty":"There are no active orders so far","loading":"Loading orders..."},"no-summit":{"not-found":"","select-list":"Please select from available shows:"},"order_info":{"print":"Print","resend":"Resend Receipt","download":"Download Ticket PDF","cancel_order":"Request to Refund All Tickets","cancel_ticket":"Cancel Ticket","email_support":"Email Support","directions":"Get Directions","calendar":"Add to Calendar"},"order_status":{"complete":"Ticket(s) assigned and issued","incomplete":"Additional attendee details required before ticket(s) can be issued","pending":"Pending confirmation","cancelled":"Cancelled","error":"Payment error","processing":"Payment processing","past":"Past"},"tickets":{"title":"External Tickets Assigned to Me","empty":"There are no tickets so far","loading":"Loading tickets...","save_message":"Thank you! Your information has been saved and ticket updated.","assign_success_message":"The ticket was successfully assigned.","reassign_success_message":"The ticket was successfully reassigned.","unassign_success_message":"The ticket was successfully unassigned.","notify_success_message":"Notification was sent to ticket holder.","refund_request_success_1":"Your refund request has been requested successfully","refund_request_success_2":"Please allow 24 - 48 hours for a response"},"ticket_status":{"unassigned":"Unassigned","incomplete":"Required details needed","complete":"Ready to use","cancelled":"Cancelled","past":"Past","ticket_no":"Ticket #","assigned_to":"Assigned to","assigned_by":"Assigned by","manage_for":"Manage for","attendee_status_unassigned":"Attendee unassigned","view_tickets":"View Tickets","hide_tickets":"Hide Tickets","view_ticket":"View Ticket","reassign_ticket":"Reassign","assign_ticket":"Assign Ticket","status_unassigned":"Unassigned","status_complete":"Completed","status_incomplete":"Incomplete","status_refund_requested":"Refund Requested","status_details_required":"Some tickets in this order require additional details before the ticket(s) can be issued.","status_cancelled":"Cancelled","finish_ticket":"Finish Ticket","select_ticket_refund":"Select the ticket(s) for a refund:","select_all":"Select All","select_cancel":"Cancel","copy_ticket_number":"Copy Ticket Number","refund_request_approved":"Approved","refund_request_rejected":"Rejected","refund_request_pending":"Requested"},"nav_bar":{"my-orders":"My Orders","my-tickets":"My Tickets"},"ticket_popup":{"tab_assign":"Assign","tab_reassign":"Reassign","tab_refund":"Refund","tab_edit":"Edit Details","tab_edit_read_only":"Details","tab_notify":"Notify Ticket Holder","assign_text":"Select the option to assign this ticket","assign_or":"Or","assign_me":"Assign to Me","assign_this":"Assign this Ticket","assign_want_text":"I want to assign this ticket to someone else!","assign_someone":"Assign to this person","assign_ticket":"Assign this Ticket","assign_expire":"Ability to assign ticket expires in ","assign_days":"days","reassign_printed_ticket":"Ticket may not be reassigned because this badge has already been printed.","reassign_text":"Select the option to reassign this ticket from","reassign_want_text":"I want to reassign this ticket to someone else!","reassign_before":"before","reassign_enter_email":"Enter the email of the person you would like to assign the ticket to below. Please note! An email will be sent to the below address with instructions on how to complete any additional information required to issue their ticket.","reassign_check":"Clean all fields","reassign_me":"Reassign to Me","reassign_someone":"Reassign to this person","edit_basic_info":"Attendee Information","edit_required":"Required","edit_email":"Ticket assigned to email:","assign_note":"Note: Should the ticket holder wish to change their name or company info, they can do so by logging into the event site and clicking on the profile icon (located on the far right of the top navigation bar).","edit_first_name":"First Name","edit_first_name_placeholder":"Attendee First Name","edit_last_name":"Last Name","edit_last_name_placeholder":"Attendee Last Name","edit_company":"Company","edit_company_placeholder":"Attendee Company","edit_required_star":"*","edit_preferences":"Additional Details","notify_text_1":"All required details must be completed before","notify_text_2":"Clicking the \\"Resend Notification\\" button will generate an email to","notify_text_3":"with instructions on how to provide their required attendee information. Once the details are complete, their official ticket will be issued and sent to","notify_message":"Personal Message","notify_message_condition":"(Optional)","notify_button":"Resend Notification","cancel_ticket":"Request a refund for this ticket","save_changes":"Save Changes","saving_changes":"Saving Changes","do_it_later":"Do this later","do_it_later_exp":"You may fill in the required information now or complete this step on the \'My Orders\' page later."},"confirm_popup":{"question_title_cancel":"Refund Ticket","question_text_select_refund":"Select the ticket you want a refund","question_text_confirm_refund":"Are you sure you want to request a refund for the below ticket(s)?","question_text_cancel":"Are you sure you want to request a refund of this ticket?","question_title_cancel_order":"Refund Order","question_text_cancel_order":"Are you sure you want to request a refund of this entire order ?","question_title_assign":"Assign Request","question_text_assign":"Are you sure you want to clean all the fields?","question_title_unassign":"Unassign Request","question_text_unassign":"Are you sure you want to unassign this ticket?","question_title_reassign":"Reassign Request","question_text_reassign":"Are you sure you want to reassign this ticket?","question_title_save":"Save","question_text_save":"","question_title_notification":"Notification Request","question_text_notification":"","question_text_confirm":"Are you sure?","cancel":"Cancel","accept":"Yes","success_title":"Request Submitted","success_text":"An email notification has been sent to","success_button":"Got it"},"invitees":{"validation_error":"Invitation error","entity_not_found":"Invitation not found"},"signin":{"add_code_title_p1":"Add the","add_code_title_p2":"digit code below","email_reception_error_p1":"Didn\'t receive it? Check your spam folder or","email_reception_error_p2":"resend email","email_sent":"We\'ve sent a code to the email","go_back_title_p1":"or go back and","go_back_title_p2":"try another way","invalid_email_addr":"Please enter a valid email adress","login_with_title":"Log in with one of the following","retry":"Please try again.","send_code_option":"or get a login code emailed to you","verify_btn":"Verify","wrong_code":"The code you entered is incorrect.","fn_login_btn":"Continue with FNid","fb_login_btn":"Continue with Facebook","ln_login_btn":"Sign in with LinkedIn","ap_login_btn":"Continue with Apple","ok_login_btn":"Continue with Okta"},"logout_popup":{"title":"Re-login required","message":"You are not logged in anymore. Please log in to continue.","close_btn":"Re-login"},"filter":{"filter":"Filter","purchased_on":"Purchased on","clear":"Clear","clear_filters":"Clear Filters"},"sort":{"sort":"Sort","new_first":"Newest first","old_first":"Oldest first"},"order_search":{"order_number":"Search order number"},"ticket_detail":{"purchased_by":"Purchased by","status":"ready to use","qr_note":"When you check in you will be able to scan the QR code directly from your device. Or you can:","download":"Download","send":"Send to email","sent":"Email sent!","attendee_information":"Attendee Information","email":"Email","manage_for":"Manage for: ","first_name":"First Name","last_name":"Last Name","attendee_first_name":"First Name","attendee_last_name":"Last Name","attendee_company":"Company","delegated_to":"Delegated to:","aditional_details":"Additional details","save":"save changes","cancel":"cancel","info_note":"Note: Should the ticket holder wish to change name or company info, they can do so by logging into the event site and clicking on the profile icon (located on the far right of the top navigation bar).","saving_error":"Error saving Ticket, please try again.","saving_success":"Complete Ticket saved successfully!"},"ticket_assign":{"header_assign":{"title":"Assign ticket","purchased_by":"Purchased by","assigned_to":"This ticket have been assigned to","delegated":"This ticket was assigned to you so you can manage it on behalf of","answer_your_eq":"You may enter the required information now to complete the ticket, or you may select \\"Complete Later\\".","answer_others_eq":"You may enter the required information for them to complete the ticket, or select \\"Complete Later\\" to let them do it.","complete_later":"Complete Later"},"header_reassign":{"title":"REASSIGN ticket","choose_option":"Below you can assign the ticket to yourself, assign it to someone else, or manage the ticket for someone else. We will notify the previous ticketholder via email that the ticket is no longer assigned to them.","choose_option_no_delegate":"Below you can assign the ticket to yourself or assign it to someone else. We will notify the previous ticketholder via email that the ticket is no longer assigned to them.","assigned_to":"This ticket is currently assigned to","reassigned_to":"You have assigned the ticket to","delegated":"You are now managing the ticket for","yourself":"yourself","answer_your_eq":"You may enter the required information now to complete the ticket, or you may select \\"Complete Later\\".","answer_others_eq":"You may enter the required information for them to complete the ticket, or select \\"Complete Later\\" to let them do it.","complete_later":"Complete Later"},"assign_to_me":"Assign to me","assign_to_other":"Assign to someone else","manage_ticket":"Manage ticket for someone else","revert_to_unassigned":"Revert to Unassigned","reassign_form":{"title":"I want to assign this ticket to someone else:","body":"Enter the email of the person you would like to assign the ticket to below. Please note! An email will be sent to the below address with instructions on how to complete any additional information required to issue their ticket.","new_attendee_email":"New attendee email","personal_message":"Personal Message (optional)","cancel":"cancel","save":"assign to this person"},"delegate_form":{"first_name":"First Name","last_name":"Last Name","email":"Email (optional)","title":"I want to manage this ticket for someone else:","body":"Enter the name of the person you would like to manage the ticket for below. Managing a ticket keeps it under your control. To give someone control you should assign it to the person instead.","save":"MANAGE FOR THIS PERSON","cancel":"cancel"},"extra_questions_form":{"cancel":"complete later","save":"save","disclaimer_label":"I agree with the above."},"saving_error":"Error saving Ticket, please try again.","saving_success":"Complete Ticket saved successfully!","confirm_unassign":{"title":"Unassign Ticket","body":"Are you sure you want to unassign this ticket?"}},"validation":{"required_question":"This question is required","required_field":"Required field","first_name":{"string":"Enter first name","required":"First name is required"},"last_name":{"string":"Enter last name","required":"Last name is required"},"email":{"string":"Enter email","format":"Must be a valid email address","required":"Email is required"},"text":{"string":"Enter text"},"checkbox":{"required":"Field must be checked"},"company":{"required":"Company is required"}},"no_results":{"assigned":{"title":"No tickets found assigned to you","body":"We did not find any tickets assigned to this account.\\n You may still have orders with tickets assigned to others.\\n If this seems incorrect please "},"filter":{"title":"No results found","body":"Try using fewer filters or clearing them to see more results."},"orders":{"title":"No orders found","body":"We did not find any orders associated with your account.\\nYou may still have tickets assigned to you.\\nIf this seems incorrect please "}}}');
|
|
11000
|
+
module.exports = /*#__PURE__*/JSON.parse('{"landing":{"sign_out":"Sign out","sign_in":"FNid Sign In","not_logged_in":"You are not logged in. Please log in to continue:"},"errors":{"error":"Error","user_not_authz":"Hold on. Your user is not authorized!.","user_not_set":"Hold on. Can not get any valid user.","session_expired":"Hold on. Your session expired!","server_error":"There was a problem with our server, please contact admin.","not_allowed":"You are not allowed here, please login with another user to access this page.","refund_unsuccessful":"Some of the refund requests were unsucessful. Please try again."},"general":{"continue":"Continue","save_and_continue":"Save and Continue","back":"Back","pay_now":"Pay Now","confirm":"Confirm","yes":"Yes","no":"No","cancel":"Cancel","finish":"Finish","copy_to_clipboard":"Copy to clipboard","copied":"Copied!","view_more":"View more","view_less":"View less","contact_support":"contact support"},"labels":{"tickets":"Tickets","summary":"Summary","assigned_to_me":"Assigned Tickets","search_results":"Search results for {{filter}}"},"order_summary":{"order_summary":"Resumen del Pedido","order_no":"Número de pedido","discounts":"Descuento de Código Promocional","refunds":"Reembolso","request_refund":"Solicitar Reembolso","refund_details":"Detalles de tu Reembolso","download_receipt":"Descargar Recibo","generating_receipt":"Generando...","taxes":"Impuestos","sub_total":"Subtotal","total":"Total","amount_paid":"Monto Pagado","copy_order_number":"Copiar Número de Pedido"},"event_info":{"about_title":"About the event","about_desc":"a description","directions":"Get Directions","calendar":"Add to Calendar"},"step_one":{"choose_tickets":"Choose your ticket(s)","choose_tickets_desc":"a description","expiration":"Ticket(s) available until ","free":"Free","sold_out":"Sold Out","no_tickets":"No tickets for sale!","getfnid":"Create an FNid","signin":"Sign In"},"step_two":{"basic_info":"Purchaser Information","required":"Required fields","have_account":"Do you have an FNid account?","sign_in":"Sign in","sign_in_account":"to autopopulate this info and manage this order.","first_name":"First Name","last_name":"Last Name","email":"Email","company":"Company","tickets":"Tickets","ticket":"Ticket","asterisks_bold":"NOTE: Ticket(s) can be assigned later.","asterisks":"Ticket holders will immediately receive an email to finalize their attendee information.","code":"Promo Code:","assign":"Assign to:","add_ticket":"Add additional ticket(s) to this order","no_tickets":"No tickets selected.","disclaimer_in_person_title":"Attention","placeholders":{"coupon":"Coupon (Optional)","email":"Attendee Email (Optional)"},"validator":{"first_name":"Please enter your First Name.","last_name":"Please enter your Last Name.","company":"Please enter your Company.","email":"Please enter a valid Email."}},"step_three":{"payment_info":"Payment Information","required":"Required fields","payment_subtitle":"a subtitle...","cardholder_name":"Cardholder Name","card_number":"Card Number","expiration":"Expiration & Code","billing_info":"Billing Information","billing_subtitle":"a subtitle...","billing_country":"Country","billing_address":"Address","billing_address_two":"Address 2","billing_city":"City","billing_state":"State","billing_zipcode":"ZIP Code","stripe_errors":{"cardNumber":"Please enter a valid Credit Card.","cardExpiry":"Please enter the card expiration.","cardCvc":"Please enter the card cvc."},"validator":{"billing_country":"Please enter the billing Country.","billing_address":"Please enter the billing Address.","billing_city":"Please enter the billing City.","billing_state":"Please enter the billing State.","billing_zipcode":"Please enter the billing ZipCode."}},"step_four":{"thank_you":"Thank you for your order!","subtitle":"Your Order is Now Complete","member_exclamation":"You are signed in with your FNid and will use it to log in to the event on show days. ","member_text":"You may proceed directly to the \\"","member_link_tickets":"My Tickets","member_text_1":"\\" page to review your ticket(s) and complete any required details. Visit the \\"","member_link_orders":"My Orders","member_text_2":"\\" page to manage your purchase, assign ticket(s), and edit attendee details.","required_text":"PLEASE NOTE! Ticket(s) must be assigned and all additional details must be completed before official ticket(s) are issued.","register_text":"An FNid is required to manage order(s) and assign ticket(s) ","register_link_text":"create one","register_text_2":" with the email ","register_text_3":" used for this purchase, you will then be able to manage your order.","register_email_bold":"You will now receive an email with a one-click link to create a password for your FNid.","register_email_1":"Your FNid will allow you to access the event. Visit the \\"","register_email_orders":"My Orders","register_email_2":"\\" page to manage your purchase, assign ticket(s), and edit attendee details.","help_text":"For further assistance, please email ","order_no":"ORDER NUMBER","manage":"My Orders","getfnid":"Create an FNid","signin":"Sign In"},"guests":{"invalid_thanks":"Thanks for coming to fill in the remaining details so we can issue your ticket.","invalid_text_1":"Unfortunately the link in your email has expired. Not to worry we will send you a fresh link. Click here or the button below to get a new link.","invalid_button":"Send New Link","invalid_contact":"If you have any problems please email","hash_regenerated":"Please check your new link in your email","completed_text_1":"Thank you for completing your additional details. Your ticket has now been issued. Please use your FNid to access the event.","completed_button":"Download Ticket to","completed_text_2":"You will also receive an email confirmation.","cancel":"Cancel","save":"Save"},"orders":{"title":"My Orders with Tickets","purchased":"Purchased on","empty":"There are no active orders so far","loading":"Loading orders..."},"no-summit":{"not-found":"","select-list":"Please select from available shows:"},"order_info":{"print":"Print","resend":"Resend Receipt","download":"Download Ticket PDF","cancel_order":"Request to Refund All Tickets","cancel_ticket":"Cancel Ticket","email_support":"Email Support","directions":"Get Directions","calendar":"Add to Calendar"},"order_status":{"complete":"Ticket(s) assigned and issued","incomplete":"Additional attendee details required before ticket(s) can be issued","pending":"Pending confirmation","cancelled":"Cancelled","error":"Payment error","processing":"Payment processing","past":"Past"},"tickets":{"title":"External Tickets Assigned to Me","empty":"There are no tickets so far","loading":"Loading tickets...","save_message":"Thank you! Your information has been saved and ticket updated.","assign_success_message":"The ticket was successfully assigned.","reassign_success_message":"The ticket was successfully reassigned.","unassign_success_message":"The ticket was successfully unassigned.","notify_success_message":"Notification was sent to ticket holder.","refund_request_success_1":"Your refund request has been requested successfully","refund_request_success_2":"Please allow 24 - 48 hours for a response"},"ticket_status":{"unassigned":"Unassigned","incomplete":"Required details needed","complete":"Ready to use","cancelled":"Cancelled","past":"Past","ticket_no":"Ticket #","assigned_to":"Assigned to","assigned_by":"Assigned by","manage_for":"Manage for","attendee_status_unassigned":"Attendee unassigned","view_tickets":"View Tickets","hide_tickets":"Hide Tickets","view_ticket":"View Ticket","reassign_ticket":"Reassign","assign_ticket":"Assign Ticket","status_unassigned":"Unassigned","status_complete":"Completed","status_incomplete":"Incomplete","status_refund_requested":"Refund Requested","status_details_required":"Some tickets in this order require additional details before the ticket(s) can be issued.","status_cancelled":"Cancelled","finish_ticket":"Finish Ticket","select_ticket_refund":"Select the ticket(s) for a refund:","select_all":"Select All","select_cancel":"Cancel","copy_ticket_number":"Copy Ticket Number","refund_request_approved":"Approved","refund_request_rejected":"Rejected","refund_request_pending":"Requested"},"nav_bar":{"my-orders":"My Orders","my-tickets":"My Tickets"},"ticket_popup":{"tab_assign":"Assign","tab_reassign":"Reassign","tab_refund":"Refund","tab_edit":"Edit Details","tab_edit_read_only":"Details","tab_notify":"Notify Ticket Holder","assign_text":"Select the option to assign this ticket","assign_or":"Or","assign_me":"Assign to Me","assign_this":"Assign this Ticket","assign_want_text":"I want to assign this ticket to someone else!","assign_someone":"Assign to this person","assign_ticket":"Assign this Ticket","assign_expire":"Ability to assign ticket expires in ","assign_days":"days","reassign_printed_ticket":"Ticket may not be reassigned because this badge has already been printed.","reassign_text":"Select the option to reassign this ticket from","reassign_want_text":"I want to reassign this ticket to someone else!","reassign_before":"before","reassign_enter_email":"Enter the email of the person you would like to assign the ticket to below. Please note! An email will be sent to the below address with instructions on how to complete any additional information required to issue their ticket.","reassign_check":"Clean all fields","reassign_me":"Reassign to Me","reassign_someone":"Reassign to this person","edit_basic_info":"Attendee Information","edit_required":"Required","edit_email":"Ticket assigned to email:","assign_note":"Note: Should the ticket holder wish to change their name or company info, they can do so by logging into the event site and clicking on the profile icon (located on the far right of the top navigation bar).","edit_first_name":"First Name","edit_first_name_placeholder":"Attendee First Name","edit_last_name":"Last Name","edit_last_name_placeholder":"Attendee Last Name","edit_company":"Company","edit_company_placeholder":"Attendee Company","edit_required_star":"*","edit_preferences":"Additional Details","notify_text_1":"All required details must be completed before","notify_text_2":"Clicking the \\"Resend Notification\\" button will generate an email to","notify_text_3":"with instructions on how to provide their required attendee information. Once the details are complete, their official ticket will be issued and sent to","notify_message":"Personal Message","notify_message_condition":"(Optional)","notify_button":"Resend Notification","cancel_ticket":"Request a refund for this ticket","save_changes":"Save Changes","saving_changes":"Saving Changes","do_it_later":"Do this later","do_it_later_exp":"You may fill in the required information now or complete this step on the \'My Orders\' page later."},"confirm_popup":{"question_title_cancel":"Refund Ticket","question_text_select_refund":"Select the ticket you want a refund","question_text_confirm_refund":"Are you sure you want to request a refund for the below ticket(s)?","question_text_cancel":"Are you sure you want to request a refund of this ticket?","question_title_cancel_order":"Refund Order","question_text_cancel_order":"Are you sure you want to request a refund of this entire order ?","question_title_assign":"Assign Request","question_text_assign":"Are you sure you want to clean all the fields?","question_title_unassign":"Unassign Request","question_text_unassign":"Are you sure you want to unassign this ticket?","question_title_reassign":"Reassign Request","question_text_reassign":"Are you sure you want to reassign this ticket?","question_title_save":"Save","question_text_save":"","question_title_notification":"Notification Request","question_text_notification":"","question_text_confirm":"Are you sure?","cancel":"Cancel","accept":"Yes","success_title":"Request Submitted","success_text":"An email notification has been sent to","success_button":"Got it"},"invitees":{"validation_error":"Invitation error","entity_not_found":"Invitation not found"},"signin":{"add_code_title_p1":"Add the","add_code_title_p2":"digit code below","email_reception_error_p1":"Didn\'t receive it? Check your spam folder or","email_reception_error_p2":"resend email","email_sent":"We\'ve sent a code to the email","go_back_title_p1":"or go back and","go_back_title_p2":"try another way","invalid_email_addr":"Please enter a valid email adress","login_with_title":"Log in with one of the following","retry":"Please try again.","send_code_option":"or get a login code emailed to you","verify_btn":"Verify","wrong_code":"The code you entered is incorrect.","fn_login_btn":"Continue with FNid","fb_login_btn":"Continue with Facebook","ln_login_btn":"Sign in with LinkedIn","ap_login_btn":"Continue with Apple","ok_login_btn":"Continue with Okta"},"logout_popup":{"title":"Re-login required","message":"You are not logged in anymore. Please log in to continue.","close_btn":"Re-login"},"filter":{"filter":"Filter","purchased_on":"Purchased on","clear":"Clear","clear_filters":"Clear Filters"},"sort":{"sort":"Sort","new_first":"Newest first","old_first":"Oldest first"},"order_search":{"order_number":"Search order number"},"ticket_detail":{"purchased_by":"Purchased by","status":"ready to use","qr_note":"When you check in you will be able to scan the QR code directly from your device. Or you can:","download":"Download","send":"Send to email","sent":"Email sent!","attendee_information":"Attendee Information","email":"Email","manage_for":"Manage for: ","first_name":"First Name","last_name":"Last Name","attendee_first_name":"First Name","attendee_last_name":"Last Name","attendee_company":"Company","delegated_to":"Delegated to:","aditional_details":"Additional details","save":"save changes","cancel":"cancel","info_note":"Note: Should the ticket holder wish to change name or company info, they can do so by logging into the event site and clicking on the profile icon (located on the far right of the top navigation bar).","saving_error":"Error saving Ticket, please try again.","saving_success":"Complete Ticket saved successfully!"},"ticket_assign":{"header_assign":{"title":"Assign ticket","purchased_by":"Purchased by","assigned_to":"This ticket have been assigned to","delegated":"This ticket was assigned to you so you can manage it on behalf of","answer_your_eq":"You may enter the required information now to complete the ticket, or you may select \\"Complete Later\\".","answer_others_eq":"You may enter the required information for them to complete the ticket, or select \\"Complete Later\\" to let them do it.","complete_later":"Complete Later"},"header_reassign":{"title":"REASSIGN ticket","choose_option":"Below you can assign the ticket to yourself, assign it to someone else, or manage the ticket for someone else. We will notify the previous ticketholder via email that the ticket is no longer assigned to them.","choose_option_no_delegate":"Below you can assign the ticket to yourself or assign it to someone else. We will notify the previous ticketholder via email that the ticket is no longer assigned to them.","assigned_to":"This ticket is currently assigned to","reassigned_to":"You have assigned the ticket to","delegated":"You are now managing the ticket for","yourself":"yourself","answer_your_eq":"You may enter the required information now to complete the ticket, or you may select \\"Complete Later\\".","answer_others_eq":"You may enter the required information for them to complete the ticket, or select \\"Complete Later\\" to let them do it.","complete_later":"Complete Later"},"assign_to_me":"Assign to me","assign_to_other":"Assign to someone else","manage_ticket":"Manage ticket for someone else","revert_to_unassigned":"Revert to Unassigned","reassign_form":{"title":"I want to assign this ticket to someone else:","body":"Enter the email of the person you would like to assign the ticket to below. Please note! An email will be sent to the below address with instructions on how to complete any additional information required to issue their ticket.","new_attendee_email":"New attendee email","personal_message":"Personal Message (optional)","cancel":"cancel","save":"assign to this person"},"delegate_form":{"first_name":"First Name","last_name":"Last Name","email":"Email (optional)","title":"I want to manage this ticket for someone else:","body":"Enter the name of the person you would like to manage the ticket for below. Managing a ticket keeps it under your control. To give someone control you should assign it to the person instead.","save":"MANAGE FOR THIS PERSON","cancel":"cancel"},"extra_questions_form":{"cancel":"complete later","save":"save","disclaimer_label":"I agree with the above."},"saving_error":"Error saving Ticket, please try again.","saving_success":"Complete Ticket saved successfully!","confirm_unassign":{"title":"Unassign Ticket","body":"Are you sure you want to unassign this ticket?"}},"validation":{"required_question":"This question is required","required_field":"Required field","first_name":{"string":"Enter first name","required":"First name is required"},"last_name":{"string":"Enter last name","required":"Last name is required"},"email":{"string":"Enter email","format":"Must be a valid email address","required":"Email is required"},"text":{"string":"Enter text"},"checkbox":{"required":"Field must be checked"},"company":{"required":"Company is required"}},"no_results":{"assigned":{"title":"No tickets found assigned to you","body":"We did not find any tickets assigned to this account.\\n You may still have orders with tickets assigned to others.\\n If this seems incorrect please "},"filter":{"title":"No results found","body":"Try using fewer filters or clearing them to see more results."},"orders":{"title":"No orders found","body":"We did not find any orders associated with your account.\\nYou may still have tickets assigned to you.\\nIf this seems incorrect please "}}}');
|
|
10055
11001
|
|
|
10056
11002
|
/***/ })
|
|
10057
11003
|
|
|
@@ -10175,6 +11121,7 @@ const MyOrdersMyTicketsWidget = props => {
|
|
|
10175
11121
|
supportEmail,
|
|
10176
11122
|
summit,
|
|
10177
11123
|
apiBaseUrl,
|
|
11124
|
+
receiptSettings,
|
|
10178
11125
|
user,
|
|
10179
11126
|
clientId,
|
|
10180
11127
|
updateProfile
|
|
@@ -10188,6 +11135,7 @@ const MyOrdersMyTicketsWidget = props => {
|
|
|
10188
11135
|
summit,
|
|
10189
11136
|
user,
|
|
10190
11137
|
apiBaseUrl,
|
|
11138
|
+
receiptSettings,
|
|
10191
11139
|
clientId,
|
|
10192
11140
|
updateProfile
|
|
10193
11141
|
});
|
|
@@ -10220,6 +11168,21 @@ MyOrdersMyTicketsWidget.propTypes = {
|
|
|
10220
11168
|
supportEmail: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string),
|
|
10221
11169
|
summit: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().object),
|
|
10222
11170
|
apiBaseUrl: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string),
|
|
11171
|
+
receiptSettings: prop_types__WEBPACK_IMPORTED_MODULE_1___default().shape({
|
|
11172
|
+
primaryColor: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string),
|
|
11173
|
+
fontFamily: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string),
|
|
11174
|
+
printLogo: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string),
|
|
11175
|
+
organizerLegalName: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string),
|
|
11176
|
+
organizerAddressLine1: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string),
|
|
11177
|
+
organizerAddressLine2: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string),
|
|
11178
|
+
organizerCity: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string),
|
|
11179
|
+
organizerState: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string),
|
|
11180
|
+
organizerPostalCode: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string),
|
|
11181
|
+
organizerCountry: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string),
|
|
11182
|
+
organizerTaxId: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string),
|
|
11183
|
+
organizerTaxIdLabel: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string),
|
|
11184
|
+
supportEmail: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string)
|
|
11185
|
+
}),
|
|
10223
11186
|
user: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().object),
|
|
10224
11187
|
clientId: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string),
|
|
10225
11188
|
updateProfile: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func)
|
|
@@ -10231,4 +11194,4 @@ MyOrdersMyTicketsWidget.propTypes = {
|
|
|
10231
11194
|
/******/ })()
|
|
10232
11195
|
;
|
|
10233
11196
|
});
|
|
10234
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0Z1RDtBQUMxQjtBQUNpRDtBQUNNO0FBQ3JDO0FBQ3BCO0FBQzRDO0FBUTVDO0FBRXBCLE1BQU1vQixXQUFXLEdBQUcsYUFBYTtBQUNqQyxNQUFNQyxZQUFZLEdBQUcsY0FBYztBQUNuQyxNQUFNQyxlQUFlLEdBQUcsaUJBQWlCO0FBQ3pDLE1BQU1DLFNBQVMsR0FBRyxXQUFXO0FBQzdCLE1BQU1DLGFBQWEsR0FBRyxlQUFlO0FBQ3JDLE1BQU1DLGFBQWEsR0FBRyxlQUFlO0FBQ3JDLE1BQU1DLFdBQVcsR0FBRyxhQUFhOztBQUV4QztBQUNPLE1BQU1DLGVBQWUsR0FBRyxZQUFZO0FBQ3BDLE1BQU1DLFlBQVksR0FBRyxjQUFjO0FBQ25DLE1BQU1DLG1CQUFtQixHQUFHLHFCQUFxQjtBQUNqRCxNQUFNQyxrQkFBa0IsR0FBRyxvQkFBb0I7O0FBRXREO0FBQ08sTUFBTUMsdUJBQXVCLEdBQUcseUJBQXlCO0FBQ3pELE1BQU1DLGFBQWEsR0FBRyxlQUFlO0FBQ3JDLE1BQU1DLFlBQVksR0FBRyxjQUFjO0FBQ25DLE1BQU1DLGNBQWMsR0FBRyxnQkFBZ0I7QUFDdkMsTUFBTUMsc0JBQXNCLEdBQUcsd0JBQXdCO0FBQ3ZELE1BQU1DLGFBQWEsR0FBRyxlQUFlO0FBQ3JDLE1BQU1DLGVBQWUsR0FBRyxpQkFBaUI7QUFDekMsTUFBTUMsYUFBYSxHQUFHLGVBQWU7QUFDckMsTUFBTUMsbUJBQW1CLEdBQUcscUJBQXFCO0FBQ2pELE1BQU1DLG9CQUFvQixHQUFHLHNCQUFzQjtBQUNuRCxNQUFNQywwQkFBMEIsR0FBRyw0QkFBNEI7QUFDL0QsTUFBTUMsd0JBQXdCLEdBQUcsMEJBQTBCO0FBQzNELE1BQU1DLGtCQUFrQixHQUFHLG9CQUFvQjtBQUMvQyxNQUFNQyx1QkFBdUIsR0FBRyx5QkFBeUI7QUFDekQsTUFBTUMsb0JBQW9CLEdBQUc7RUFDbENDLEtBQUssRUFBRSxnQkFBZ0I7RUFDdkJDLFNBQVMsRUFBRSxxQkFBcUI7RUFDaENDLFFBQVEsRUFBRSxvQkFBb0I7RUFDOUJDLE9BQU8sRUFBRSxrQkFBa0I7RUFDM0JDLGtCQUFrQixFQUFFLHFCQUFxQjtFQUN6Q0MsY0FBYyxFQUFFO0FBQ2xCLENBQUM7QUFDTSxNQUFNQywrQkFBK0IsR0FDMUMsaUNBQWlDOztBQUVuQztBQUNPLE1BQU1DLHlCQUF5QixHQUFHLDJCQUEyQjtBQUM3RCxNQUFNQyx3QkFBd0IsR0FBRywwQkFBMEI7QUFDM0QsTUFBTUMsa0JBQWtCLEdBQUcsb0JBQW9CO0FBQy9DLE1BQU1DLFFBQVEsR0FBRyxVQUFVOztBQUVsQztBQUNPLE1BQU1DLFVBQVUsR0FBRyxZQUFZO0FBQy9CLE1BQU1DLHdCQUF3QixHQUFHLDBCQUEwQjtBQUMzRCxNQUFNQywwQkFBMEIsR0FBRyw0QkFBNEI7QUFDL0QsTUFBTUMsd0JBQXdCLEdBQUcsMEJBQTBCO0FBRTNELE1BQU1DLFdBQVcsR0FBR0EsQ0FBQSxLQUFPQyxRQUFRLElBQUs7RUFDN0NBLFFBQVEsQ0FBQzdELDJGQUFZLENBQUNnQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFDLENBQUM7QUFFTSxNQUFNOEIsVUFBVSxHQUFHQSxDQUFBLEtBQU9ELFFBQVEsSUFBSztFQUM1Q0EsUUFBUSxDQUFDN0QsMkZBQVksQ0FBQ21CLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekMsQ0FBQztBQUVNLE1BQU00QyxXQUFXLEdBQUdBLENBQUEsS0FBT0YsUUFBUSxJQUFLO0VBQzdDQSxRQUFRLENBQUM3RCwyRkFBWSxDQUFDb0IsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxQyxDQUFDO0FBRU0sTUFBTTRDLFVBQVUsR0FBR0EsQ0FBQSxLQUFPSCxRQUFRLElBQUs7RUFDNUNBLFFBQVEsQ0FBQzdELDJGQUFZLENBQUNxQixlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdDLENBQUM7QUFFTSxNQUFNNEMsZUFBZSxHQUFHQSxDQUFDQyxNQUFNLEVBQUVDLElBQUksS0FBTU4sUUFBUSxJQUFLO0VBQzdEQSxRQUFRLENBQUM3RCwyRkFBWSxDQUFDc0IsU0FBUyxDQUFDLENBQUM7SUFBRTRDLE1BQU07SUFBRUM7RUFBSyxDQUFDLENBQUMsQ0FBQztBQUNyRCxDQUFDOztBQUVEO0FBQ08sTUFBTUMsZUFBZSxHQUFHLGlCQUFpQjtBQUN6QyxNQUFNQyx3QkFBd0IsR0FBRywwQkFBMEI7QUFDM0QsTUFBTUMsc0JBQXNCLEdBQUcsd0JBQXdCO0FBQ3ZELE1BQU1DLDBCQUEwQixHQUFHLDRCQUE0QjtBQUMvRCxNQUFNQyx1QkFBdUIsR0FBRyx5QkFBeUI7QUFDekQsTUFBTUMsb0JBQW9CLEdBQUcsc0JBQXNCO0FBQ25ELE1BQU1DLG9CQUFvQixHQUFHLHNCQUFzQjtBQUNuRCxNQUFNQyx1QkFBdUIsR0FBRyx5QkFBeUI7O0FBRWhFO0FBQ08sTUFBTUMsWUFBWSxHQUFJQyxNQUFNLElBQU1oQixRQUFRLElBQUs7RUFDcERBLFFBQVEsQ0FBQzdELDJGQUFZLENBQUN3QixhQUFhLENBQUMsQ0FBQ3FELE1BQU0sQ0FBQyxDQUFDO0FBQy9DLENBQUM7QUFFTSxNQUFNQyxVQUFVLEdBQUlDLElBQUksSUFBTWxCLFFBQVEsSUFBSztFQUNoREEsUUFBUSxDQUFDN0QsMkZBQVksQ0FBQ3lCLFdBQVcsQ0FBQyxDQUFDc0QsSUFBSSxDQUFDLENBQUM7QUFDM0MsQ0FBQzs7QUFFRDtBQUNBLE1BQU1DLFdBQVcsR0FBR0EsQ0FBQ0MsU0FBUyxFQUFFQyxZQUFZLEtBQUs7RUFDL0MsTUFBTUwsTUFBTSxHQUFHLEVBQUU7RUFDakIsSUFBSUksU0FBUyxDQUFDYixlQUFlLEVBQUU7SUFDN0JTLE1BQU0sQ0FBQ00sSUFBSSxhQUFBQyxNQUFBLENBQWFILFNBQVMsQ0FBQ0ksS0FBSyxRQUFBRCxNQUFBLENBQUtILFNBQVMsQ0FBQ0ssS0FBSyxDQUFFLENBQUM7RUFDaEU7RUFDQSxJQUNFTCxTQUFTLENBQUNaLHdCQUF3QixJQUNsQ1ksU0FBUyxDQUFDWix3QkFBd0IsQ0FBQ2tCLE1BQU0sR0FBRyxDQUFDLEVBQzdDO0lBQ0EsTUFBTUMsVUFBVSxHQUNkTixZQUFZLEtBQUtsRSwyREFBYSxDQUFDeUUsTUFBTSxHQUNqQywyQkFBMkIsR0FDM0IsbUJBQW1CO0lBQ3pCWixNQUFNLENBQUNNLElBQUksSUFBQUMsTUFBQSxDQUNOSSxVQUFVLFFBQUFKLE1BQUEsQ0FBS0gsU0FBUyxDQUFDWix3QkFBd0IsQ0FBQ3FCLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FDakUsQ0FBQztFQUNIO0VBQ0EsSUFDRVQsU0FBUyxDQUFDWCxzQkFBc0IsSUFDaENXLFNBQVMsQ0FBQ1gsc0JBQXNCLENBQUNpQixNQUFNLEdBQUcsQ0FBQyxFQUMzQztJQUNBLE1BQU1DLFVBQVUsR0FDZE4sWUFBWSxLQUFLbEUsMkRBQWEsQ0FBQ3lFLE1BQU0sR0FDakMsaUJBQWlCLEdBQ2pCLGdCQUFnQjtJQUN0QlosTUFBTSxDQUFDTSxJQUFJLElBQUFDLE1BQUEsQ0FDTkksVUFBVSxRQUFBSixNQUFBLENBQUtILFNBQVMsQ0FBQ1gsc0JBQXNCLENBQUNvQixJQUFJLENBQUMsSUFBSSxDQUFDLENBQy9ELENBQUM7RUFDSDtFQUNBLElBQUlULFNBQVMsQ0FBQ1YsMEJBQTBCLEVBQUU7SUFDeEMsTUFBTWlCLFVBQVUsR0FDZE4sWUFBWSxLQUFLbEUsMkRBQWEsQ0FBQ3lFLE1BQU0sR0FDakMscUJBQXFCLEdBQ3JCLGFBQWE7SUFDbkJaLE1BQU0sQ0FBQ00sSUFBSSxJQUFBQyxNQUFBLENBQUlJLFVBQVUsUUFBQUosTUFBQSxDQUFLSCxTQUFTLENBQUNWLDBCQUEwQixDQUFFLENBQUM7RUFDdkU7RUFDQSxJQUFJVSxTQUFTLENBQUNULHVCQUF1QixFQUFFO0lBQ3JDLE1BQU1nQixVQUFVLEdBQ2ROLFlBQVksS0FBS2xFLDJEQUFhLENBQUN5RSxNQUFNLEdBQ2pDLHNCQUFzQixHQUN0QixjQUFjO0lBQ3BCWixNQUFNLENBQUNNLElBQUksSUFBQUMsTUFBQSxDQUFJSSxVQUFVLFFBQUFKLE1BQUEsQ0FBS0gsU0FBUyxDQUFDVCx1QkFBdUIsQ0FBRSxDQUFDO0VBQ3BFO0VBQ0EsSUFBSVMsU0FBUyxDQUFDUCxvQkFBb0IsRUFBRTtJQUNsQyxNQUFNYyxVQUFVLEdBQ2ROLFlBQVksS0FBS2xFLDJEQUFhLENBQUN5RSxNQUFNLEdBQUcsUUFBUSxHQUFHLGNBQWM7SUFDbkVaLE1BQU0sQ0FBQ00sSUFBSSxJQUFBQyxNQUFBLENBQ05JLFVBQVUsRUFBQUosTUFBQSxDQUFHSCxTQUFTLENBQUNQLG9CQUFvQixLQUFLLE1BQU0sR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUMxRSxDQUFDO0VBQ0g7RUFDQSxJQUFJTyxTQUFTLENBQUNSLG9CQUFvQixFQUFFO0lBQ2xDLE1BQU1lLFVBQVUsR0FDZE4sWUFBWSxLQUFLbEUsMkRBQWEsQ0FBQ3lFLE1BQU0sR0FDakMsb0JBQW9CLEdBQ3BCLFlBQVk7SUFDbEJaLE1BQU0sQ0FBQ00sSUFBSSxJQUFBQyxNQUFBLENBQUlJLFVBQVUsUUFBQUosTUFBQSxDQUFLSCxTQUFTLENBQUNSLG9CQUFvQixDQUFFLENBQUM7RUFDakU7RUFDQSxJQUFJUSxTQUFTLENBQUNOLHVCQUF1QixFQUFFO0lBQ3JDLElBQUlnQixZQUFZLEdBQUcsRUFBRTtJQUVyQixRQUFRVCxZQUFZO01BQ2xCLEtBQUtsRSwyREFBYSxDQUFDeUUsTUFBTTtRQUFFO1VBQ3pCRSxZQUFZLGNBQUFQLE1BQUEsQ0FBY0gsU0FBUyxDQUFDTix1QkFBdUIsNEJBQUFTLE1BQUEsQ0FBeUJILFNBQVMsQ0FBQ04sdUJBQXVCLHVCQUFBUyxNQUFBLENBQW9CSCxTQUFTLENBQUNOLHVCQUF1QixDQUFFO1VBQzVLO1FBQ0Y7TUFDQSxLQUFLM0QsMkRBQWEsQ0FBQzRFLGlCQUFpQjtRQUFFO1VBQ3BDRCxZQUFZLGNBQUFQLE1BQUEsQ0FBY0gsU0FBUyxDQUFDTix1QkFBdUIsb0JBQUFTLE1BQUEsQ0FBaUJILFNBQVMsQ0FBQ04sdUJBQXVCLENBQUU7VUFDL0c7UUFDRjtNQUNBLEtBQUszRCwyREFBYSxDQUFDNkUsZ0JBQWdCO1FBQUU7VUFDbkNGLFlBQVksb0JBQUFQLE1BQUEsQ0FBb0JILFNBQVMsQ0FBQ04sdUJBQXVCLGVBQUFTLE1BQUEsQ0FBWUgsU0FBUyxDQUFDTix1QkFBdUIsMEJBQUFTLE1BQUEsQ0FBdUJILFNBQVMsQ0FBQ04sdUJBQXVCLENBQUU7VUFDeEs7UUFDRjtNQUNBO1FBQ0U7SUFDSjtJQUNBRSxNQUFNLENBQUNNLElBQUksQ0FBQ1EsWUFBWSxDQUFDO0VBQzNCO0VBQ0EsT0FBT2QsTUFBTTtBQUNmLENBQUM7QUFFRCxNQUFNaUIsZ0JBQWdCLEdBQUlDLFNBQVMsSUFBTUEsU0FBUyxLQUFLLEtBQUssR0FBRyxHQUFHLEdBQUcsR0FBSTs7QUFFekU7QUFDQSxNQUFNQyxrQkFBa0IsR0FBR0EsQ0FBQ0MsT0FBTyxFQUFFQyxRQUFRLEtBQU1yQyxRQUFRLElBQUs7RUFDOURBLFFBQVEsQ0FBQzdELDJGQUFZLENBQUN1QixhQUFhLENBQUMsQ0FBQzBFLE9BQU8sQ0FBQyxDQUFDO0VBQzlDLElBQUlDLFFBQVEsRUFBRUEsUUFBUSxDQUFDLENBQUM7QUFDMUIsQ0FBQztBQUVELE1BQU1DLHNCQUFzQixHQUFHQSxDQUFDQyxHQUFHLEVBQUVDLEdBQUcsS0FBTXhDLFFBQVEsSUFBSztFQUN6REEsUUFBUSxDQUFDOUQsK0ZBQWdCLENBQUNxRyxHQUFHLEVBQUVDLEdBQUcsRUFBRUwsa0JBQWtCLENBQUMsQ0FBQztBQUMxRCxDQUFDO0FBRUQsTUFBTU0sdUJBQXVCLEdBQUlDLFFBQVEsSUFBTTFDLFFBQVEsSUFBSztFQUMxRCxNQUFNMkMsSUFBSSxHQUFHRCxRQUFRLENBQUNFLE1BQU07RUFDNUIsSUFBSUMsR0FBRztFQUNQN0MsUUFBUSxDQUFDeEQsMEZBQVcsQ0FBQyxDQUFDLENBQUM7RUFDdkIsUUFBUW1HLElBQUk7SUFDVixLQUFLMUYseURBQVcsQ0FBQyxLQUFLLENBQUM7TUFDckI0RixHQUFHLEdBQUdoRyxnREFBTSxDQUFDLHVCQUF1QixDQUFDO01BQ3JDO0lBQ0YsS0FBS0kseURBQVcsQ0FBQyxLQUFLLENBQUM7TUFDckI0RixHQUFHLEdBQUdoRyxnREFBTSxDQUFDLHdCQUF3QixDQUFDO01BQ3RDO0lBQ0YsS0FBS0kseURBQVcsQ0FBQyxLQUFLLENBQUM7TUFDckI0RixHQUFHLEdBQUcsRUFBRTtNQUNSRSxNQUFNLENBQUNDLE9BQU8sQ0FBQ04sUUFBUSxDQUFDTyxNQUFNLENBQUMsQ0FBQ0MsT0FBTyxDQUFDQyxJQUFBLElBQWtCO1FBQUEsSUFBakIsQ0FBQ0MsR0FBRyxFQUFFQyxLQUFLLENBQUMsR0FBQUYsSUFBQTtRQUNuRCxJQUFJRyxNQUFNLENBQUNDLEtBQUssQ0FBQ0gsR0FBRyxDQUFDLEVBQUU7VUFDckJQLEdBQUcsTUFBQXRCLE1BQUEsQ0FBTXNCLEdBQUcsT0FBQXRCLE1BQUEsQ0FBSTZCLEdBQUcsT0FBSTtRQUN6QjtRQUVBUCxHQUFHLE1BQUF0QixNQUFBLENBQU1zQixHQUFHLE9BQUF0QixNQUFBLENBQUk4QixLQUFLLFVBQU87TUFDOUIsQ0FBQyxDQUFDO01BQ0Y7SUFDRixLQUFLcEcseURBQVcsQ0FBQyxLQUFLLENBQUM7TUFDckI0RixHQUFHLEdBQUdoRyxnREFBTSxDQUFDLHFCQUFxQixDQUFDO01BQ25DO0lBQ0Y7TUFDRWdHLEdBQUcsR0FBR0gsUUFBUSxDQUFDYyxVQUFVO0VBQzdCO0VBRUF4RCxRQUFRLENBQUNtQyxrQkFBa0IsQ0FBQztJQUFFc0IsS0FBSyxFQUFFNUcsZ0RBQU0sQ0FBQyxjQUFjLENBQUM7SUFBRTZHLElBQUksRUFBRWI7RUFBSSxDQUFDLENBQUMsQ0FBQztBQUM1RSxDQUFDOztBQUVEO0FBQ08sTUFBTWMsYUFBYSxHQUN4QkEsQ0FBQUMsS0FBQSxFQU9FQyxXQUFXO0VBQUEsSUFOWDtJQUNFQyxJQUFJLEdBQUcxRyx3REFBVTtJQUNqQjJHLE9BQU8sR0FBRy9HLG9FQUFzQjtJQUNoQ2dFLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDWEUsSUFBSSxHQUFHLENBQUM7RUFDVixDQUFDLEdBQUEwQyxLQUFBO0VBQUEsT0FHSCxPQUFPNUQsUUFBUSxFQUFFZ0UsUUFBUSxFQUFBQyxLQUFBLEtBQXFCO0lBQUEsSUFBbkI7TUFBRUM7SUFBVyxDQUFDLEdBQUFELEtBQUE7SUFDdkMsTUFBTTtNQUNKRSxXQUFXLEVBQUU7UUFBRTlEO01BQU87SUFDeEIsQ0FBQyxHQUFHMkQsUUFBUSxDQUFDLENBQUM7SUFFZCxNQUFNSSxXQUFXLEdBQUcsTUFBTXJILGlFQUFvQixDQUFDLENBQUM7SUFFaEQsSUFBSSxDQUFDcUgsV0FBVyxFQUFFLE9BQU90SCw4REFBaUIsQ0FBQyxDQUFDO0lBRTVDa0QsUUFBUSxDQUFDekQsMkZBQVksQ0FBQyxDQUFDLENBQUM7SUFDeEIsTUFBTThILE1BQU0sR0FBRztNQUNiQyxZQUFZLEVBQUVGLFdBQVc7TUFDekJHLEtBQUssRUFBRSxVQUFVO01BQ2pCLFVBQVUsRUFBRSxDQUFDLGNBQWMsQ0FBQztNQUM1QkMsU0FBUyxFQUFFLG9CQUFvQjtNQUMvQkMsTUFBTSxFQUNKLG1MQUFtTDtNQUNyTFgsSUFBSTtNQUNKWSxRQUFRLEVBQUVYO0lBQ1osQ0FBQztJQUVELElBQUloQixNQUFNLENBQUM0QixJQUFJLENBQUMzRCxNQUFNLENBQUMsQ0FBQ1UsTUFBTSxHQUFHLENBQUMsRUFBRTtNQUNsQyxNQUFNa0QsT0FBTyxHQUFHekQsV0FBVyxDQUFDSCxNQUFNLEVBQUU3RCwyREFBYSxDQUFDeUUsTUFBTSxDQUFDO01BQ3pEeUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBR0EsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEdBQUdPLE9BQU8sQ0FBQztJQUMxRDtJQUNBLElBQUk3QixNQUFNLENBQUM0QixJQUFJLENBQUN6RCxJQUFJLENBQUMsQ0FBQ1EsTUFBTSxHQUFHLENBQUMsRUFBRTtNQUNoQzJDLE1BQU0sQ0FBQ0UsS0FBSyxNQUFBaEQsTUFBQSxDQUFNVSxnQkFBZ0IsQ0FBQ2YsSUFBSSxDQUFDZ0IsU0FBUyxDQUFDLEVBQUFYLE1BQUEsQ0FBR0wsSUFBSSxDQUFDMkQsSUFBSSxDQUFFO0lBQ2xFO0lBRUEsT0FBT3hJLHlGQUFVLENBQ2YsSUFBSSxFQUNKRiwyRkFBWSxDQUFDMEIsZUFBZSxDQUFDLEtBQUEwRCxNQUFBLENBQzFCMkMsVUFBVSxzQkFBQTNDLE1BQUEsQ0FBbUJsQixNQUFNLENBQUN5RSxFQUFFLGlCQUN6Q3hDLHNCQUFzQixFQUN0QjtNQUFFdEIsTUFBTTtNQUFFRTtJQUFLLENBQ2pCLENBQUMsQ0FBQ21ELE1BQU0sQ0FBQyxDQUFDckUsUUFBUSxDQUFDLENBQ2hCK0UsSUFBSSxDQUFFM0MsT0FBTyxJQUFLQSxPQUFPLENBQUMsQ0FDMUI0QyxLQUFLLENBQUVDLENBQUMsSUFBS0EsQ0FBQyxDQUFDLENBQ2ZDLE9BQU8sQ0FBQyxNQUFNO01BQ2IsSUFBSSxDQUFDckIsV0FBVyxFQUFFN0QsUUFBUSxDQUFDeEQsMEZBQVcsQ0FBQyxDQUFDLENBQUM7SUFDM0MsQ0FBQyxDQUFDO0VBQ04sQ0FBQztBQUFBO0FBRUksTUFBTTJJLGdCQUFnQixHQUFJQyxPQUFPLElBQUssTUFBT3BGLFFBQVEsSUFDMURBLFFBQVEsQ0FBQzdELDJGQUFZLENBQUM0QixtQkFBbUIsQ0FBQyxDQUFDcUgsT0FBTyxDQUFDLENBQUM7O0FBRXREO0FBQ08sTUFBTUMsT0FBTyxHQUFJL0UsSUFBSSxJQUFNTixRQUFRLElBQ3hDQSxRQUFRLENBQUM3RCwyRkFBWSxDQUFDdUQsUUFBUSxDQUFDLENBQUNZLElBQUksQ0FBQyxDQUFDOztBQUV4Qzs7QUFFTyxNQUFNZ0YsY0FBYyxHQUN6QkEsQ0FBQUMsS0FBQSxFQU9FMUIsV0FBVztFQUFBLElBTlg7SUFDRUMsSUFBSSxHQUFHMUcsd0RBQVU7SUFDakIyRyxPQUFPLEdBQUcvRyxvRUFBc0I7SUFDaENnRSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ1hFLElBQUksR0FBRyxDQUFDO0VBQ1YsQ0FBQyxHQUFBcUUsS0FBQTtFQUFBLE9BR0gsT0FBT3ZGLFFBQVEsRUFBRWdFLFFBQVEsRUFBQXdCLEtBQUEsS0FBcUI7SUFBQSxJQUFuQjtNQUFFdEI7SUFBVyxDQUFDLEdBQUFzQixLQUFBO0lBQ3ZDLE1BQU07TUFDSnJCLFdBQVcsRUFBRTtRQUFFOUQsTUFBTTtRQUFFQztNQUFLO0lBQzlCLENBQUMsR0FBRzBELFFBQVEsQ0FBQyxDQUFDO0lBQ2QsTUFBTTtNQUFFeUI7SUFBWSxDQUFDLEdBQUduRixJQUFJO0lBQzVCLElBQUksQ0FBQ0QsTUFBTSxFQUFFLE9BQU9xRixPQUFPLENBQUNDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BDLE1BQU12QixXQUFXLEdBQUcsTUFBTXJILGlFQUFvQixDQUFDLENBQUM7SUFFaEQsSUFBSSxDQUFDcUgsV0FBVyxFQUFFLE9BQU90SCw4REFBaUIsQ0FBQyxDQUFDO0lBRTVDLE1BQU0ySCxNQUFNLEdBQUcsQ0FDYixVQUFVLEVBQ1Ysd0JBQXdCLEVBQ3hCLHVCQUF1QixFQUN2QixtQkFBbUIsRUFDbkIsVUFBVSxFQUNWLGFBQWEsRUFDYixrQkFBa0IsRUFDbEIsaUJBQWlCLEVBQ2pCLGNBQWMsRUFDZCxZQUFZLEVBQ1osZUFBZSxFQUNmLGlCQUFpQixFQUNqQiwrQkFBK0IsRUFDL0IsK0JBQStCLEVBQy9CLGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsZ0NBQWdDLEVBQ2hDLGdDQUFnQyxDQUNqQztJQUNEekUsUUFBUSxDQUFDekQsMkZBQVksQ0FBQyxDQUFDLENBQUM7SUFDeEIsTUFBTThILE1BQU0sR0FBRztNQUNiQyxZQUFZLEVBQUVGLFdBQVc7TUFDekIsVUFBVSxFQUFFLENBQUMsY0FBYyxxQkFBQTdDLE1BQUEsQ0FBcUJrRSxXQUFXLENBQUNYLEVBQUUsRUFBRztNQUNqRWMsTUFBTSxFQUFFLHlEQUF5RDtNQUNqRXJCLEtBQUssRUFBRSxLQUFLO01BQ1pFLE1BQU0sRUFBRUEsTUFBTSxDQUFDNUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztNQUN4QjJDLFNBQVMsRUFBRSxzREFBc0Q7TUFDakVWLElBQUk7TUFDSlksUUFBUSxFQUFFWDtJQUNaLENBQUM7SUFDRCxJQUFJaEIsTUFBTSxDQUFDNEIsSUFBSSxDQUFDM0QsTUFBTSxDQUFDLENBQUNVLE1BQU0sR0FBRyxDQUFDLEVBQUU7TUFDbEMsTUFBTWtELE9BQU8sR0FBR3pELFdBQVcsQ0FBQ0gsTUFBTSxFQUFFN0QsMkRBQWEsQ0FBQzZFLGdCQUFnQixDQUFDO01BQ25FcUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBR0EsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEdBQUdPLE9BQU8sQ0FBQztJQUMxRDtJQUNBLElBQUk3QixNQUFNLENBQUM0QixJQUFJLENBQUN6RCxJQUFJLENBQUMsQ0FBQ1EsTUFBTSxHQUFHLENBQUMsRUFBRTtNQUNoQzJDLE1BQU0sQ0FBQ0UsS0FBSyxNQUFBaEQsTUFBQSxDQUFNVSxnQkFBZ0IsQ0FBQ2YsSUFBSSxDQUFDZ0IsU0FBUyxDQUFDLEVBQUFYLE1BQUEsQ0FBR0wsSUFBSSxDQUFDMkQsSUFBSSxDQUFFO0lBQ2xFO0lBQ0EsT0FBT3hJLHlGQUFVLENBQ2YsSUFBSSxFQUNKRiwyRkFBWSxDQUFDOEIsdUJBQXVCLENBQUMsS0FBQXNELE1BQUEsQ0FDbEMyQyxVQUFVLHNCQUFBM0MsTUFBQSxDQUFtQmxCLE1BQU0sQ0FBQ3lFLEVBQUUsNkJBQ3pDeEMsc0JBQ0YsQ0FBQyxDQUFDK0IsTUFBTSxDQUFDLENBQUNyRSxRQUFRLENBQUMsQ0FDaEJnRixLQUFLLENBQUVDLENBQUMsSUFBS0EsQ0FBQyxDQUFDLENBQ2ZDLE9BQU8sQ0FBQyxNQUFNO01BQ2IsSUFBSSxDQUFDckIsV0FBVyxFQUFFN0QsUUFBUSxDQUFDeEQsMEZBQVcsQ0FBQyxDQUFDLENBQUM7SUFDM0MsQ0FBQyxDQUFDO0VBQ04sQ0FBQztBQUFBO0FBRUksTUFBTXFKLGlCQUFpQixHQUM1QkMsS0FBQTtFQUFBLElBQUM7SUFDQ1YsT0FBTztJQUNQdEIsSUFBSSxHQUFHMUcsd0RBQVU7SUFDakIyRyxPQUFPLEdBQUcvRyxvRUFBc0I7SUFDaENnRSxNQUFNO0lBQ05FO0VBQ0YsQ0FBQyxHQUFBNEUsS0FBQTtFQUFBLE9BQ0QsT0FBTzlGLFFBQVEsRUFBRWdFLFFBQVEsRUFBQStCLEtBQUEsS0FBcUI7SUFBQSxJQUFuQjtNQUFFN0I7SUFBVyxDQUFDLEdBQUE2QixLQUFBO0lBQ3ZDL0YsUUFBUSxDQUFDekQsMkZBQVksQ0FBQyxDQUFDLENBQUM7SUFDeEIsTUFBTTZILFdBQVcsR0FBRyxNQUFNckgsaUVBQW9CLENBQUMsQ0FBQztJQUVoRCxJQUFJLENBQUNxSCxXQUFXLEVBQUUsT0FBT3RILDhEQUFpQixDQUFDLENBQUM7SUFFNUMsTUFBTXVILE1BQU0sR0FBRztNQUNiQyxZQUFZLEVBQUVGLFdBQVc7TUFDekIsVUFBVSxFQUFFLEVBQUU7TUFDZEssTUFBTSxFQUNKLG9NQUFvTTtNQUN0TW1CLE1BQU0sRUFDSiwySkFBMko7TUFDN0pyQixLQUFLLEVBQUUsS0FBSztNQUNaQyxTQUFTLEVBQUUsc0RBQXNEO01BQ2pFVixJQUFJO01BQ0pZLFFBQVEsRUFBRVg7SUFDWixDQUFDO0lBQ0QsSUFBSWhCLE1BQU0sQ0FBQzRCLElBQUksQ0FBQzNELE1BQU0sQ0FBQyxDQUFDVSxNQUFNLEdBQUcsQ0FBQyxFQUFFO01BQ2xDLE1BQU1rRCxPQUFPLEdBQUd6RCxXQUFXLENBQUNILE1BQU0sRUFBRTdELDJEQUFhLENBQUM0RSxpQkFBaUIsQ0FBQztNQUNwRXNDLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUdBLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRSxHQUFHTyxPQUFPLENBQUM7SUFDMUQ7SUFDQSxJQUFJN0IsTUFBTSxDQUFDNEIsSUFBSSxDQUFDekQsSUFBSSxDQUFDLENBQUNRLE1BQU0sR0FBRyxDQUFDLEVBQUU7TUFDaEMyQyxNQUFNLENBQUNFLEtBQUssTUFBQWhELE1BQUEsQ0FBTVUsZ0JBQWdCLENBQUNmLElBQUksQ0FBQ2dCLFNBQVMsQ0FBQyxFQUFBWCxNQUFBLENBQUdMLElBQUksQ0FBQzJELElBQUksQ0FBRTtJQUNsRTtJQUNBLE9BQU94SSx5RkFBVSxDQUNmLElBQUksRUFDSkYsMkZBQVksQ0FBQ3VDLG9CQUFvQixDQUFDLEtBQUE2QyxNQUFBLENBQy9CMkMsVUFBVSxpQ0FBQTNDLE1BQUEsQ0FBOEI2RCxPQUFPLGVBQ2xEOUMsc0JBQ0YsQ0FBQyxDQUFDK0IsTUFBTSxDQUFDLENBQUNyRSxRQUFRLENBQUMsQ0FDaEIrRSxJQUFJLENBQUUzQyxPQUFPLElBQUs7TUFDakJwQyxRQUFRLENBQUN4RCwwRkFBVyxDQUFDLENBQUMsQ0FBQztNQUN2QixPQUFPNEYsT0FBTztJQUNoQixDQUFDLENBQUMsQ0FDRDRDLEtBQUssQ0FBRUMsQ0FBQyxJQUFLO01BQ1pqRixRQUFRLENBQUN4RCwwRkFBVyxDQUFDLENBQUMsQ0FBQztNQUN2QndELFFBQVEsQ0FBQzdELDJGQUFZLENBQUN3QywwQkFBMEIsQ0FBQyxDQUFDO01BQ2xELE9BQU9zRyxDQUFDO0lBQ1YsQ0FBQyxDQUFDO0VBQ04sQ0FBQztBQUFBO0FBRUksTUFBTWUsa0JBQWtCLEdBQzVCQyxNQUFNLElBQ1AsT0FBT2pHLFFBQVEsRUFBRWdFLFFBQVEsRUFBQWtDLEtBQUEsS0FBcUI7RUFBQSxJQUFuQjtJQUFFaEM7RUFBVyxDQUFDLEdBQUFnQyxLQUFBO0VBQ3ZDLE1BQU05QixXQUFXLEdBQUcsTUFBTXJILGlFQUFvQixDQUFDLENBQUM7RUFFaEQsSUFBSSxDQUFDcUgsV0FBVyxFQUFFLE9BQU90SCw4REFBaUIsQ0FBQyxDQUFDO0VBRTVDLE1BQU07SUFBRXFKO0VBQVEsQ0FBQyxHQUFHRixNQUFNO0VBRTFCakcsUUFBUSxDQUFDekQsMkZBQVksQ0FBQyxDQUFDLENBQUM7RUFFeEIsTUFBTTZJLE9BQU8sR0FBR2EsTUFBTSxDQUFDMUIsS0FBSyxHQUFHMEIsTUFBTSxDQUFDMUIsS0FBSyxDQUFDTyxFQUFFLEdBQUdtQixNQUFNLENBQUNHLFFBQVE7RUFFaEUsTUFBTS9CLE1BQU0sR0FBRztJQUNiQyxZQUFZLEVBQUVGO0VBQ2hCLENBQUM7RUFFRCxPQUFPOUgseUZBQVUsQ0FDZixJQUFJLEVBQ0pILDJGQUFZLENBQUNzQyxtQkFBbUIsQ0FBQyxLQUFBOEMsTUFBQSxDQUM5QjJDLFVBQVUsaUNBQUEzQyxNQUFBLENBQThCNkQsT0FBTyxlQUFBN0QsTUFBQSxDQUFZMEUsTUFBTSxDQUFDbkIsRUFBRSx5QkFDdkU7SUFBRXFCO0VBQVEsQ0FBQyxFQUNYN0Qsc0JBQ0YsQ0FBQyxDQUFDK0IsTUFBTSxDQUFDLENBQUNyRSxRQUFRLENBQUMsQ0FDaEIrRSxJQUFJLENBQUMsTUFBTTtJQUNWL0UsUUFBUSxDQUFDeEQsMEZBQVcsQ0FBQyxDQUFDLENBQUM7RUFDekIsQ0FBQyxDQUFDLENBQ0R3SSxLQUFLLENBQUVDLENBQUMsSUFBSztJQUNaakYsUUFBUSxDQUFDeEQsMEZBQVcsQ0FBQyxDQUFDLENBQUM7SUFDdkIsT0FBT3lJLENBQUM7RUFDVixDQUFDLENBQUM7QUFDTixDQUFDO0FBRUksTUFBTW9CLFlBQVksR0FDdkJDLEtBQUE7RUFBQSxJQUFDO0lBQUVMO0VBQU8sQ0FBQyxHQUFBSyxLQUFBO0VBQUE7SUFDWDtJQUNBLE9BQU90RyxRQUFRLEVBQUVnRSxRQUFRLEVBQUF1QyxNQUFBLEtBQXFCO01BQUEsSUFBbkI7UUFBRXJDO01BQVcsQ0FBQyxHQUFBcUMsTUFBQTtNQUN2QyxNQUFNbkMsV0FBVyxHQUFHLE1BQU1ySCxpRUFBb0IsQ0FBQyxDQUFDO01BRWhELElBQUksQ0FBQ3FILFdBQVcsRUFBRSxPQUFPdEgsOERBQWlCLENBQUMsQ0FBQztNQUU1Q2tELFFBQVEsQ0FBQ3pELDJGQUFZLENBQUMsQ0FBQyxDQUFDO01BRXhCLE1BQU02SSxPQUFPLEdBQUdhLE1BQU0sQ0FBQzFCLEtBQUssR0FBRzBCLE1BQU0sQ0FBQzFCLEtBQUssQ0FBQ08sRUFBRSxHQUFHbUIsTUFBTSxDQUFDRyxRQUFRO01BRWhFLE1BQU0vQixNQUFNLEdBQUc7UUFDYkMsWUFBWSxFQUFFRixXQUFXO1FBQ3pCd0IsTUFBTSxFQUFFLDZCQUE2QjtRQUNyQ25CLE1BQU0sRUFBRTtNQUNWLENBQUM7TUFFRCxPQUFPckksNEZBQWEsQ0FDbEIsSUFBSSxFQUNKRCwyRkFBWSxDQUFDcUMsYUFBYSxDQUFDLEtBQUErQyxNQUFBLENBQ3hCMkMsVUFBVSxpQ0FBQTNDLE1BQUEsQ0FBOEI2RCxPQUFPLGVBQUE3RCxNQUFBLENBQVkwRSxNQUFNLENBQUNuQixFQUFFLGNBQ3ZFLENBQUMsQ0FBQyxFQUNGeEMsc0JBQ0YsQ0FBQyxDQUFDK0IsTUFBTSxDQUFDLENBQUNyRSxRQUFRLENBQUMsQ0FDaEIrRSxJQUFJLENBQUUzQyxPQUFPLElBQUs7UUFDakJwQyxRQUFRLENBQUN4RCwwRkFBVyxDQUFDLENBQUMsQ0FBQztRQUN2QixPQUFPNEYsT0FBTztNQUNoQixDQUFDLENBQUMsQ0FDRDRDLEtBQUssQ0FBRUMsQ0FBQyxJQUFLO1FBQ1pqRixRQUFRLENBQUN4RCwwRkFBVyxDQUFDLENBQUMsQ0FBQztRQUN2QixPQUFPeUksQ0FBQztNQUNWLENBQUMsQ0FBQztJQUNOO0VBQUM7QUFBQTtBQUVJLE1BQU11QixpQkFBaUIsR0FDNUJDLE1BQUE7RUFBQSxJQUFDO0lBQUVDO0VBQVEsQ0FBQyxHQUFBRCxNQUFBO0VBQUEsT0FDWixNQUFPekcsUUFBUSxJQUFLO0lBQ2xCLE1BQU0yRyxLQUFLLEdBQUdsSyw4Q0FBTSxDQUFDWSxpRUFBbUIsQ0FBQztJQUN6QyxNQUFNdUosb0JBQW9CLEdBQUdGLE9BQU8sQ0FBQ0csR0FBRyxDQUFFWixNQUFNLElBQzlDVSxLQUFLLENBQUMsTUFBTTNHLFFBQVEsQ0FBQ3FHLFlBQVksQ0FBQztNQUFFSjtJQUFPLENBQUMsQ0FBQyxDQUFDLENBQ2hELENBQUM7SUFDRCxPQUFPUCxPQUFPLENBQUNvQixHQUFHLENBQUMsQ0FBQyxHQUFHRixvQkFBb0IsQ0FBQyxDQUFDLENBQzFDN0IsSUFBSSxDQUFFdkMsR0FBRyxJQUFLO01BQ2IsTUFBTXVFLHFCQUFxQixHQUFHdkUsR0FBRyxDQUM5QnhCLE1BQU0sQ0FBRWdHLENBQUM7UUFBQSxJQUFBQyxXQUFBO1FBQUEsUUFBQUEsV0FBQSxHQUFLRCxDQUFDLENBQUN0RSxRQUFRLGNBQUF1RSxXQUFBLGdCQUFBQSxXQUFBLEdBQVZBLFdBQUEsQ0FBWUMsZUFBZSxjQUFBRCxXQUFBLHVCQUEzQkEsV0FBQSxDQUE2QnZGLE1BQU07TUFBQSxFQUFDLENBQ2xEbUYsR0FBRyxDQUFFRyxDQUFDLElBQUtBLENBQUMsQ0FBQ3RFLFFBQVEsQ0FBQztNQUN6QixPQUFPcUUscUJBQXFCO0lBQzlCLENBQUMsQ0FBQyxDQUNEL0IsS0FBSyxDQUFFQyxDQUFDLElBQUtBLENBQUMsQ0FBQztFQUNwQixDQUFDO0FBQUE7O0FBRUg7QUFDTyxNQUFNa0MsNEJBQTRCLEdBQ3RDQyxzQkFBc0IsSUFBTXBILFFBQVEsSUFDbkNBLFFBQVEsQ0FDTjdELDJGQUFZLENBQUNtRCwrQkFBK0IsQ0FBQyxDQUFDOEgsc0JBQXNCLENBQ3RFLENBQUM7O0FBRUw7O0FBRU8sTUFBTUMsaUJBQWlCLEdBQzNCQyxVQUFVLElBQ1gsT0FBT3RILFFBQVEsRUFBRWdFLFFBQVEsRUFBQXVELE1BQUEsS0FBcUI7RUFBQSxJQUFuQjtJQUFFckQ7RUFBVyxDQUFDLEdBQUFxRCxNQUFBO0VBQ3ZDLE1BQU07SUFDSnBELFdBQVcsRUFBRTtNQUFFOUQ7SUFBTztFQUN4QixDQUFDLEdBQUcyRCxRQUFRLENBQUMsQ0FBQztFQUVkLE1BQU1JLFdBQVcsR0FBRyxNQUFNckgsaUVBQW9CLENBQUMsQ0FBQztFQUVoRCxJQUFJLENBQUNxSCxXQUFXLEVBQUUsT0FBT3RILDhEQUFpQixDQUFDLENBQUM7RUFFNUMsTUFBTXVILE1BQU0sR0FBRztJQUNiUCxJQUFJLEVBQUUsQ0FBQztJQUNQWSxRQUFRLEVBQUV4SCw0REFBYztJQUN4QjBJLE1BQU0sRUFBRSwyQ0FBMkM7SUFDbkR0QixZQUFZLEVBQUVGLFdBQVc7SUFDekIsVUFBVSxFQUFFO0VBQ2QsQ0FBQztFQUVELE1BQU1vRCxRQUFRLE1BQUFqRyxNQUFBLENBQU0yQyxVQUFVLHNCQUFBM0MsTUFBQSxDQUFtQmxCLE1BQU0sQ0FBQ3lFLEVBQUUsaUJBQUF2RCxNQUFBLENBQWMrRixVQUFVLDZCQUEwQjtFQUU1RyxPQUFPakwseUZBQVUsQ0FDZixJQUFJLEVBQ0pGLDJGQUFZLENBQUMyQyx1QkFBdUIsQ0FBQyxFQUNyQzBJLFFBQVEsRUFDUmxGLHNCQUNGLENBQUMsQ0FBQytCLE1BQU0sQ0FBQyxDQUFDckUsUUFBUSxDQUFDLENBQUMrRSxJQUFJLENBQUMsTUFBTTtJQUM3Qi9FLFFBQVEsQ0FBQ3hELDBGQUFXLENBQUMsQ0FBQyxDQUFDO0VBQ3pCLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFSSxNQUFNaUwsU0FBUyxHQUNwQkEsQ0FBQ0MsUUFBUSxFQUFFdEMsT0FBTyxLQUNsQixPQUFPcEYsUUFBUSxFQUFFZ0UsUUFBUSxFQUFBMkQsTUFBQSxLQUFxQjtFQUFBLElBQW5CO0lBQUV6RDtFQUFXLENBQUMsR0FBQXlELE1BQUE7RUFDdkMsTUFBTXZELFdBQVcsR0FBRyxNQUFNckgsaUVBQW9CLENBQUMsQ0FBQztFQUVoRCxJQUFJLENBQUNxSCxXQUFXLEVBQUUsT0FBT3RILDhEQUFpQixDQUFDLENBQUM7RUFFNUNrRCxRQUFRLENBQUN6RCwyRkFBWSxDQUFDLENBQUMsQ0FBQztFQUV4QixNQUFNOEgsTUFBTSxHQUFHO0lBQ2JDLFlBQVksRUFBRUYsV0FBVztJQUN6QndCLE1BQU0sRUFDSix5RkFBeUY7SUFDM0ZwQixTQUFTLEVBQ1AsNEZBQTRGO0lBQzlGQyxNQUFNLEVBQ0o7RUFDSixDQUFDO0VBRUQsTUFBTStDLFFBQVEsTUFBQWpHLE1BQUEsQ0FBTTJDLFVBQVUsaUNBQUEzQyxNQUFBLENBQThCNkQsT0FBTyxlQUFBN0QsTUFBQSxDQUFZbUcsUUFBUSxDQUFFO0VBRXpGLE9BQU9yTCx5RkFBVSxDQUNmRiwyRkFBWSxDQUFDZ0MsWUFBWSxDQUFDLEVBQzFCaEMsMkZBQVksQ0FBQ2lDLGNBQWMsQ0FBQyxFQUM1Qm9KLFFBQVEsRUFDUmxGLHNCQUNGLENBQUMsQ0FBQytCLE1BQU0sQ0FBQyxDQUFDckUsUUFBUSxDQUFDLENBQUNrRixPQUFPLENBQUMsTUFBTTtJQUNoQ2xGLFFBQVEsQ0FBQ3hELDBGQUFXLENBQUMsQ0FBQyxDQUFDO0VBQ3pCLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFSCxNQUFNb0wsZUFBZSxHQUFJQyxNQUFNLElBQUs7RUFDbEMsTUFBTUMsZ0JBQWdCLEdBQUFDLGFBQUEsS0FBUUYsTUFBTSxDQUFFO0VBRXRDLElBQUksQ0FBQ0EsTUFBTSxDQUFDRyxnQkFBZ0IsQ0FBQ2xELEVBQUUsRUFBRTtJQUMvQmdELGdCQUFnQixDQUFDRSxnQkFBZ0IsR0FBR0gsTUFBTSxDQUFDRyxnQkFBZ0I7RUFDN0QsQ0FBQyxNQUFNO0lBQ0wsT0FBT0YsZ0JBQWdCLENBQUNFLGdCQUFnQjtJQUN4Q0YsZ0JBQWdCLENBQUNHLG1CQUFtQixHQUFHSixNQUFNLENBQUNHLGdCQUFnQixDQUFDbEQsRUFBRTtFQUNuRTtFQUVBLE9BQU9nRCxnQkFBZ0I7QUFDekIsQ0FBQztBQUVNLE1BQU1JLGNBQWMsR0FDekJBLENBQUNDLElBQUksRUFBRWhKLE9BQU8sRUFBRWlKLFdBQVcsS0FDM0IsQ0FBQ3BJLFFBQVEsRUFBRWdFLFFBQVEsRUFBQXFFLE1BQUEsS0FBd0I7RUFBQSxJQUFBQyxvQkFBQTtFQUFBLElBQXRCO0lBQUVDO0VBQWMsQ0FBQyxHQUFBRixNQUFBO0VBQ3BDLE1BQU07SUFDSmxFLFdBQVcsRUFBRTtNQUFFN0Q7SUFBSztFQUN0QixDQUFDLEdBQUcwRCxRQUFRLENBQUMsQ0FBQztFQUNkLE1BQU07SUFBRXlCO0VBQVksQ0FBQyxHQUFHbkYsSUFBSTs7RUFFNUI7RUFDQTtFQUNBO0VBQ0EsTUFBTTtJQUNKa0ksY0FBYztJQUNkQyxtQkFBbUI7SUFDbkJDLGtCQUFrQjtJQUNsQlY7RUFDRixDQUFDLEdBQUdHLElBQUk7RUFDUixNQUFNUSxVQUFVLEdBQUcsQ0FBQVAsV0FBVyxhQUFYQSxXQUFXLGdCQUFBRSxvQkFBQSxHQUFYRixXQUFXLENBQUVRLE9BQU8sY0FBQU4sb0JBQUEsdUJBQXBCQSxvQkFBQSxDQUFzQnhELEVBQUUsTUFBSXNELFdBQVcsYUFBWEEsV0FBVyx1QkFBWEEsV0FBVyxDQUFFUyxVQUFVO0VBQ3RFLE1BQU1DLEtBQUssR0FBR3JELFdBQVcsQ0FBQ3pHLEtBQUssS0FBS3dKLGNBQWM7RUFDbEQsTUFBTU8sY0FBYyxHQUNsQmYsZ0JBQWdCLENBQUNuRCxJQUFJLEtBQUsxRixPQUFPLElBQ2pDc0osbUJBQW1CLEtBQUtoRCxXQUFXLENBQUN1RCxVQUFVLElBQzlDTixrQkFBa0IsS0FBS2pELFdBQVcsQ0FBQ3dELFNBQVM7RUFFOUMsSUFBSUgsS0FBSyxJQUFJLENBQUNILFVBQVUsSUFBSUksY0FBYyxFQUFFO0lBQzFDLE1BQU1HLFVBQVUsR0FBRztNQUNqQkYsVUFBVSxFQUFFUCxtQkFBbUI7TUFDL0JRLFNBQVMsRUFBRVAsa0JBQWtCO01BQzdCdkosT0FBTyxFQUFFNkksZ0JBQWdCLENBQUNuRCxJQUFJLElBQUltRDtJQUNwQyxDQUFDOztJQUVEO0lBQ0FPLGFBQWEsQ0FBQ1csVUFBVSxDQUFDO0VBQzNCO0FBQ0YsQ0FBQztBQUVJLE1BQU1DLGlCQUFpQixHQUM1QkEsQ0FBQ2xELE1BQU0sRUFBRW1ELE9BQU8sS0FDaEIsT0FBT3BKLFFBQVEsRUFBRWdFLFFBQVEsRUFBQXFGLE1BQUEsS0FBcUI7RUFBQSxJQUFuQjtJQUFFbkY7RUFBVyxDQUFDLEdBQUFtRixNQUFBO0VBQ3ZDLE1BQU1qRixXQUFXLEdBQUcsTUFBTXJILGlFQUFvQixDQUFDLENBQUM7RUFFaEQsSUFBSSxDQUFDcUgsV0FBVyxFQUFFLE9BQU90SCw4REFBaUIsQ0FBQyxDQUFDO0VBRTVDa0QsUUFBUSxDQUFDekQsMkZBQVksQ0FBQyxDQUFDLENBQUM7RUFFeEIsTUFBTThILE1BQU0sR0FBRztJQUNiQyxZQUFZLEVBQUVGLFdBQVc7SUFDekJ3QixNQUFNLEVBQ0o7RUFDSixDQUFDO0VBRUQsTUFBTTBELE9BQU8sR0FBRzVNLDRGQUFVLENBQUMsQ0FBQztFQUM1QixJQUFJeUMsT0FBTyxHQUFHLEVBQUU7RUFDaEIsSUFBSW1LLE9BQU8sRUFBRTtJQUNYLElBQUk7TUFDRixNQUFNQyxRQUFRLEdBQUcsSUFBSTNNLHlEQUFlLENBQUMsQ0FBQztNQUN0QyxNQUFNNE0sR0FBRyxHQUFHRCxRQUFRLENBQUNFLE1BQU0sQ0FBQ0gsT0FBTyxDQUFDO01BQ3BDbkssT0FBTyxHQUFHcUssR0FBRyxDQUFDcEgsT0FBTyxDQUFDakQsT0FBTztJQUMvQixDQUFDLENBQUMsT0FBTzhGLENBQUMsRUFBRTtNQUNWeUUsT0FBTyxDQUFDQyxHQUFHLENBQUMsT0FBTyxFQUFFMUUsQ0FBQyxDQUFDO01BQ3ZCLE9BQU9TLE9BQU8sQ0FBQ0MsTUFBTSxDQUFDLENBQUM7SUFDekI7RUFDRjtFQUVBLE1BQU1tQyxnQkFBZ0IsR0FBR0YsZUFBZSxDQUFDd0IsT0FBTyxDQUFDO0VBRWpELE9BQU85TSx5RkFBVSxDQUNmLElBQUksRUFDSkgsMkZBQVksQ0FBQytCLGFBQWEsQ0FBQyxLQUFBcUQsTUFBQSxDQUN4QjJDLFVBQVUsNkNBQUEzQyxNQUFBLENBQTBDMEUsTUFBTSxDQUFDbkIsRUFBRSxHQUNoRWdELGdCQUFnQixFQUNoQnhGLHNCQUNGLENBQUMsQ0FBQytCLE1BQU0sQ0FBQyxDQUFDckUsUUFBUSxDQUFDLENBQ2hCK0UsSUFBSSxDQUFDLFlBQVk7SUFDaEIvRSxRQUFRLENBQUNrSSxjQUFjLENBQUNrQixPQUFPLEVBQUVqSyxPQUFPLEVBQUU4RyxNQUFNLENBQUMyRCxLQUFLLENBQUMsQ0FBQztFQUMxRCxDQUFDLENBQUMsQ0FDRDFFLE9BQU8sQ0FBQyxNQUFNO0lBQ2JsRixRQUFRLENBQUN4RCwwRkFBVyxDQUFDLENBQUMsQ0FBQztFQUN6QixDQUFDLENBQUM7QUFDTixDQUFDO0FBRUksTUFBTXFOLGNBQWMsR0FDekIsU0FBQUEsQ0FBQ3pFLE9BQU8sRUFBRXNDLFFBQVEsRUFBRWMsY0FBYztFQUFBLElBQUVyQyxPQUFPLEdBQUEyRCxTQUFBLENBQUFwSSxNQUFBLFFBQUFvSSxTQUFBLFFBQUFDLFNBQUEsR0FBQUQsU0FBQSxNQUFHLElBQUk7RUFBQSxPQUNsRCxPQUFPOUosUUFBUSxFQUFFZ0UsUUFBUSxFQUFBZ0csTUFBQSxLQUFxQjtJQUFBLElBQW5CO01BQUU5RjtJQUFXLENBQUMsR0FBQThGLE1BQUE7SUFDdkMsTUFBTTVGLFdBQVcsR0FBRyxNQUFNckgsaUVBQW9CLENBQUMsQ0FBQztJQUVoRCxNQUFNcUYsT0FBTyxHQUFHO01BQUVvRztJQUFlLENBQUM7SUFDbEMsSUFBSXJDLE9BQU8sRUFBRS9ELE9BQU8sQ0FBQytELE9BQU8sR0FBR0EsT0FBTztJQUV0QyxJQUFJLENBQUMvQixXQUFXLEVBQUUsT0FBT3RILDhEQUFpQixDQUFDLENBQUM7SUFFNUNrRCxRQUFRLENBQUN6RCwyRkFBWSxDQUFDLENBQUMsQ0FBQztJQUV4QixNQUFNOEgsTUFBTSxHQUFHO01BQ2JDLFlBQVksRUFBRUYsV0FBVztNQUN6QndCLE1BQU0sRUFDSiw4RUFBOEU7TUFDaEZwQixTQUFTLEVBQUUscUNBQXFDO01BQ2hEQyxNQUFNLEVBQ0o7SUFDSixDQUFDO0lBRUQsT0FBT25JLHlGQUFVLENBQ2YsSUFBSSxFQUNKSCwyRkFBWSxDQUFDbUMsYUFBYSxDQUFDLEtBQUFpRCxNQUFBLENBQ3hCMkMsVUFBVSxpQ0FBQTNDLE1BQUEsQ0FBOEI2RCxPQUFPLGVBQUE3RCxNQUFBLENBQVltRyxRQUFRLGdCQUN0RXRGLE9BQU8sRUFDUEUsc0JBQ0YsQ0FBQyxDQUFDK0IsTUFBTSxDQUFDLENBQUNyRSxRQUFRLENBQUMsQ0FBQ2tGLE9BQU8sQ0FBQyxNQUFNO01BQ2hDbEYsUUFBUSxDQUFDeEQsMEZBQVcsQ0FBQyxDQUFDLENBQUM7SUFDekIsQ0FBQyxDQUFDO0VBQ0osQ0FBQztBQUFBO0FBRUksTUFBTXlOLFlBQVksR0FDdkJBLENBQUM3RSxPQUFPLEVBQUVzQyxRQUFRLEtBQ2xCLE9BQU8xSCxRQUFRLEVBQUVnRSxRQUFRLEVBQUFrRyxNQUFBLEtBQXFCO0VBQUEsSUFBbkI7SUFBRWhHO0VBQVcsQ0FBQyxHQUFBZ0csTUFBQTtFQUN2QyxNQUFNOUYsV0FBVyxHQUFHLE1BQU1ySCxpRUFBb0IsQ0FBQyxDQUFDO0VBRWhELElBQUksQ0FBQ3FILFdBQVcsRUFBRSxPQUFPdEgsOERBQWlCLENBQUMsQ0FBQztFQUU1Q2tELFFBQVEsQ0FBQ3pELDJGQUFZLENBQUMsQ0FBQyxDQUFDO0VBRXhCLE1BQU04SCxNQUFNLEdBQUc7SUFDYkMsWUFBWSxFQUFFRixXQUFXO0lBQ3pCd0IsTUFBTSxFQUFFO0VBQ1YsQ0FBQztFQUVELE9BQU94Siw0RkFBYSxDQUNsQixJQUFJLEVBQ0pELDJGQUFZLENBQUNrQyxzQkFBc0IsQ0FBQyxLQUFBa0QsTUFBQSxDQUNqQzJDLFVBQVUsaUNBQUEzQyxNQUFBLENBQThCNkQsT0FBTyxlQUFBN0QsTUFBQSxDQUFZbUcsUUFBUSxnQkFDdEUsQ0FBQyxDQUFDLEVBQ0ZwRixzQkFDRixDQUFDLENBQUMrQixNQUFNLENBQUMsQ0FBQ3JFLFFBQVEsQ0FBQztBQUNyQixDQUFDO0FBRUksTUFBTW1LLGNBQWMsR0FDekJBLENBQUMvRSxPQUFPLEVBQUVzQyxRQUFRLEVBQUUxSSxLQUFLLEVBQUVtSCxPQUFPLEtBQUssTUFBT25HLFFBQVEsSUFDcERBLFFBQVEsQ0FBQ2lLLFlBQVksQ0FBQzdFLE9BQU8sRUFBRXNDLFFBQVEsQ0FBQyxDQUFDLENBQUMzQyxJQUFJLENBQUMsTUFDN0MvRSxRQUFRLENBQUM2SixjQUFjLENBQUN6RSxPQUFPLEVBQUVzQyxRQUFRLEVBQUUxSSxLQUFLLEVBQUVtSCxPQUFPLENBQUMsQ0FDNUQsQ0FBQztBQUVFLE1BQU1pRSxjQUFjLEdBQUdBLENBQUNoRixPQUFPLEVBQUVzQyxRQUFRLEtBQUssTUFBTzFILFFBQVEsSUFDbEVBLFFBQVEsQ0FBQ2lLLFlBQVksQ0FBQzdFLE9BQU8sRUFBRXNDLFFBQVEsQ0FBQyxDQUFDLENBQUMzQyxJQUFJLENBQUMsTUFBTS9FLFFBQVEsQ0FBQ3hELDBGQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFFeEUsTUFBTTZOLGNBQWMsR0FDekJBLENBQUNqRixPQUFPLEVBQUVzQyxRQUFRLEVBQUV6SSxTQUFTLEVBQUVDLFFBQVEsRUFBRUYsS0FBSyxLQUM5QyxPQUFPZ0IsUUFBUSxFQUFFZ0UsUUFBUSxFQUFBc0csTUFBQSxLQUFxQjtFQUFBLElBQW5CO0lBQUVwRztFQUFXLENBQUMsR0FBQW9HLE1BQUE7RUFDdkMsTUFBTWxHLFdBQVcsR0FBRyxNQUFNckgsaUVBQW9CLENBQUMsQ0FBQztFQUNoRCxNQUFNO0lBQ0pvSCxXQUFXLEVBQUU7TUFBRTlEO0lBQU87RUFDeEIsQ0FBQyxHQUFHMkQsUUFBUSxDQUFDLENBQUM7RUFDZCxNQUFNNUIsT0FBTyxHQUFHO0lBQ2RxRyxtQkFBbUIsRUFBRXhKLFNBQVM7SUFDOUJ5SixrQkFBa0IsRUFBRXhKLFFBQVE7SUFDNUJzSixjQUFjLEVBQUV4SjtFQUNsQixDQUFDO0VBRUQsSUFBSSxDQUFDb0YsV0FBVyxFQUFFLE9BQU90SCw4REFBaUIsQ0FBQyxDQUFDO0VBRTVDa0QsUUFBUSxDQUFDekQsMkZBQVksQ0FBQyxDQUFDLENBQUM7RUFFeEIsTUFBTThILE1BQU0sR0FBRztJQUNiQyxZQUFZLEVBQUVGLFdBQVc7SUFDekJ3QixNQUFNLEVBQ0osOEVBQThFO0lBQ2hGcEIsU0FBUyxFQUFFLHFDQUFxQztJQUNoREMsTUFBTSxFQUNKO0VBQ0osQ0FBQztFQUVELE9BQU9uSSx5RkFBVSxDQUNmLElBQUksRUFDSkgsMkZBQVksQ0FBQ29DLGVBQWUsQ0FBQyxLQUFBZ0QsTUFBQSxDQUMxQjJDLFVBQVUsc0JBQUEzQyxNQUFBLENBQW1CbEIsTUFBTSxDQUFDeUUsRUFBRSxjQUFBdkQsTUFBQSxDQUFXNkQsT0FBTyxlQUFBN0QsTUFBQSxDQUFZbUcsUUFBUSxnQkFDL0V0RixPQUFPLEVBQ1BFLHNCQUNGLENBQUMsQ0FBQytCLE1BQU0sQ0FBQyxDQUFDckUsUUFBUSxDQUFDLENBQUNrRixPQUFPLENBQUMsTUFBTTtJQUNoQ2xGLFFBQVEsQ0FBQ3hELDBGQUFXLENBQUMsQ0FBQyxDQUFDO0VBQ3pCLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFSSxNQUFNK04sa0JBQWtCLEdBQzdCQSxDQUFDdEUsTUFBTSxFQUFFbUQsT0FBTyxLQUNoQixPQUFPcEosUUFBUSxFQUFFZ0UsUUFBUSxFQUFBd0csTUFBQSxLQUFxQjtFQUFBLElBQW5CO0lBQUV0RztFQUFXLENBQUMsR0FBQXNHLE1BQUE7RUFDdkMsTUFBTXBHLFdBQVcsR0FBRyxNQUFNckgsaUVBQW9CLENBQUMsQ0FBQztFQUVoRCxJQUFJLENBQUNxSCxXQUFXLEVBQUUsT0FBT3RILDhEQUFpQixDQUFDLENBQUM7RUFFNUNrRCxRQUFRLENBQUN6RCwyRkFBWSxDQUFDLENBQUMsQ0FBQztFQUV4QixNQUFNOEgsTUFBTSxHQUFHO0lBQ2JDLFlBQVksRUFBRUYsV0FBVztJQUN6QndCLE1BQU0sRUFDSixtSEFBbUg7SUFDckhwQixTQUFTLEVBQUUscUNBQXFDO0lBQ2hEQyxNQUFNLEVBQ0o7RUFDSixDQUFDO0VBRUQsTUFBTWdHLGFBQWEsR0FBRzdDLGVBQWUsQ0FBQ3dCLE9BQU8sQ0FBQztFQUU5QyxPQUFPOU0seUZBQVUsQ0FDZixJQUFJLEVBQ0pILDJGQUFZLENBQUMrQixhQUFhLENBQUMsS0FBQXFELE1BQUEsQ0FDeEIyQyxVQUFVLDZDQUFBM0MsTUFBQSxDQUEwQzBFLE1BQU0sQ0FBQ25CLEVBQUUsR0FDaEUyRixhQUFhLEVBQ2JuSSxzQkFDRixDQUFDLENBQUMrQixNQUFNLENBQUMsQ0FBQ3JFLFFBQVEsQ0FBQyxDQUNoQitFLElBQUksQ0FBQyxZQUFZO0lBQ2hCL0UsUUFBUSxDQUFDeEQsMEZBQVcsQ0FBQyxDQUFDLENBQUM7RUFDekIsQ0FBQyxDQUFDLENBQ0R3SSxLQUFLLENBQUVDLENBQUMsSUFBSztJQUNaakYsUUFBUSxDQUFDeEQsMEZBQVcsQ0FBQyxDQUFDLENBQUM7SUFDdkIsT0FBT3lJLENBQUM7RUFDVixDQUFDLENBQUM7QUFDTixDQUFDO0FBRUksTUFBTXlGLFlBQVksR0FDdEJ6RSxNQUFNLElBQ1AsT0FBT2pHLFFBQVEsRUFBRWdFLFFBQVEsRUFBQTJHLE1BQUEsS0FBcUI7RUFBQSxJQUFuQjtJQUFFekc7RUFBVyxDQUFDLEdBQUF5RyxNQUFBO0VBQ3ZDLE1BQU12RyxXQUFXLEdBQUcsTUFBTXJILGlFQUFvQixDQUFDLENBQUM7RUFFaEQsSUFBSSxDQUFDcUgsV0FBVyxFQUFFLE9BQU90SCw4REFBaUIsQ0FBQyxDQUFDO0VBRTVDa0QsUUFBUSxDQUFDekQsMkZBQVksQ0FBQyxDQUFDLENBQUM7RUFFeEIsTUFBTThILE1BQU0sR0FBRztJQUNiQyxZQUFZLEVBQUVGO0VBQ2hCLENBQUM7RUFFRCxNQUFNZ0IsT0FBTyxHQUFHYSxNQUFNLENBQUMxQixLQUFLLEdBQUcwQixNQUFNLENBQUMxQixLQUFLLENBQUNPLEVBQUUsR0FBR21CLE1BQU0sQ0FBQ0csUUFBUTtFQUVoRSxNQUFNd0UsV0FBVyxHQUFHak8sa0dBQW1CLENBQUMwSCxNQUFNLENBQUM7RUFDL0MsTUFBTXdHLE1BQU0sTUFBQXRKLE1BQUEsQ0FBTTJDLFVBQVUsaUNBQUEzQyxNQUFBLENBQThCNkQsT0FBTyxlQUFBN0QsTUFBQSxDQUFZMEUsTUFBTSxDQUFDbkIsRUFBRSxXQUFBdkQsTUFBQSxDQUFRcUosV0FBVyxDQUFFO0VBRTNHLE9BQU9FLEtBQUssQ0FBQ0QsTUFBTSxFQUFFO0lBQ25CRSxZQUFZLEVBQUUsTUFBTTtJQUNwQkMsT0FBTyxFQUFFO01BQUUsY0FBYyxFQUFFO0lBQWtCO0VBQy9DLENBQUMsQ0FBQyxDQUNDakcsSUFBSSxDQUFFckMsUUFBUSxJQUFLO0lBQ2xCLElBQUksQ0FBQ0EsUUFBUSxDQUFDdUksRUFBRSxFQUFFO01BQ2hCakwsUUFBUSxDQUFDeEQsMEZBQVcsQ0FBQyxDQUFDLENBQUM7TUFDdkIsTUFBTWtHLFFBQVE7SUFDaEIsQ0FBQyxNQUFNO01BQ0wsT0FBT0EsUUFBUSxDQUFDd0ksSUFBSSxDQUFDLENBQUM7SUFDeEI7RUFDRixDQUFDLENBQUMsQ0FDRG5HLElBQUksQ0FBRW9HLEdBQUcsSUFBSztJQUNibkwsUUFBUSxDQUFDeEQsMEZBQVcsQ0FBQyxDQUFDLENBQUM7SUFDdkIsTUFBTTRPLElBQUksR0FBR0MsUUFBUSxDQUFDQyxhQUFhLENBQUMsR0FBRyxDQUFDO0lBQ3hDLE1BQU1DLEdBQUcsR0FBR0MsTUFBTSxDQUFDQyxHQUFHLENBQUNDLGVBQWUsQ0FBQ1AsR0FBRyxDQUFDO0lBQzNDQyxJQUFJLENBQUNPLElBQUksR0FBR0osR0FBRztJQUNmSCxJQUFJLENBQUNRLFFBQVEsR0FBRyxZQUFZO0lBQzVCUixJQUFJLENBQUNTLGFBQWEsQ0FBQyxJQUFJQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7RUFDN0MsQ0FBQyxDQUFDLENBQ0Q5RyxLQUFLLENBQUN2Qyx1QkFBdUIsQ0FBQztBQUNuQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNqMUJpRDtBQUNqQjtBQUNZO0FBQUE7QUFFL0MsTUFBTStKLFlBQVksR0FBRyxDQUFDO0FBRXRCLE1BQU1DLGdCQUFnQixnQkFBR1IsaURBQVUsQ0FDakMsQ0FBQTlJLElBQUEsRUFBdUN1SixHQUFHLEtBQUs7RUFBQSxJQUE5QztNQUFFN0gsSUFBSTtNQUFFOEgsS0FBSztNQUFFQztJQUFvQixDQUFDLEdBQUF6SixJQUFBO0lBQVAwSixLQUFLLEdBQUFDLHFGQUFBLENBQUEzSixJQUFBLEVBQUE0SixTQUFBO0VBQ2pDLE1BQU0sQ0FBQ0MsV0FBVyxFQUFFQyxjQUFjLENBQUMsR0FBR2pCLCtDQUFRLENBQUMsS0FBSyxDQUFDO0VBQ3JELE1BQU0sQ0FBQ2tCLFVBQVUsRUFBRUMsYUFBYSxDQUFDLEdBQUduQiwrQ0FBUSxDQUFDLEtBQUssQ0FBQztFQUVuRCxNQUFNb0IsWUFBWSxHQUFHLENBQUNULEtBQUssSUFBSU8sVUFBVTs7RUFFekM7RUFDQSxNQUFNRyxRQUFRLEdBQUd4SSxJQUFJLENBQ2xCeUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUNWdE0sTUFBTSxDQUFFdU0sSUFBSSxJQUFLQSxJQUFJLENBQUM3TCxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQ2pDbUYsR0FBRyxDQUFFMEcsSUFBSSxJQUFLQSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDdEIxTCxJQUFJLENBQUMsRUFBRSxDQUFDLENBQ1IyTCxTQUFTLENBQUMsQ0FBQyxFQUFFaEIsWUFBWSxDQUFDLENBQzFCaUIsV0FBVyxDQUFDLENBQUM7RUFFaEIsb0JBQ0VsQix1REFBQSxRQUFBeEUsYUFBQSxDQUFBQSxhQUFBO0lBQ0UyRSxHQUFHLEVBQUVBLEdBQUk7SUFDVEUsU0FBUyxLQUFBckwsTUFBQSxDQUFLNEssaUVBQXVCLEVBQUE1SyxNQUFBLENBQUdxTCxTQUFTLE9BQUFyTCxNQUFBLENBQU9xTCxTQUFTLElBQUssRUFBRTtJQUN4RTtFQUFBLEdBQ0lDLEtBQUs7SUFBQWMsUUFBQSxHQUVSaEIsS0FBSyxJQUFJLENBQUNPLFVBQVUsaUJBQ25CYixzREFBQTtNQUNFTyxTQUFTLEVBQUVULGtFQUF5QjtNQUNwQzBCLEdBQUcsRUFBRWxCLEtBQU07TUFDWG1CLEdBQUcsRUFBRWpKLElBQUs7TUFDVmtKLE1BQU0sRUFBRUEsQ0FBQSxLQUFNZCxjQUFjLENBQUMsSUFBSSxDQUFFO01BQ25DZSxPQUFPLEVBQUVBLENBQUEsS0FBTWIsYUFBYSxDQUFDLElBQUksQ0FBRTtNQUNuQ2MsS0FBSyxFQUFFO1FBQUVDLE9BQU8sRUFBRWxCLFdBQVcsR0FBRyxPQUFPLEdBQUc7TUFBTztJQUFFLENBQ3BELENBQ0YsRUFDQUksWUFBWSxpQkFDWGYsc0RBQUE7TUFBS08sU0FBUyxFQUFFVCxxRUFBNEI7TUFBQXdCLFFBQUEsRUFBRU47SUFBUSxDQUFNLENBQzdEO0VBQUEsRUFDRSxDQUFDO0FBRVYsQ0FDRixDQUFDO0FBRURaLGdCQUFnQixDQUFDMkIsU0FBUyxHQUFHO0VBQzNCdkosSUFBSSxFQUFFcUgsMERBQWdCLENBQUNvQyxVQUFVO0VBQ2pDM0IsS0FBSyxFQUFFVCwwREFBZ0I7RUFDdkJVLFNBQVMsRUFBRVYsMERBQWdCbUM7QUFDN0IsQ0FBQztBQUVELGlFQUFlNUIsZ0JBQWdCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3JETDtBQUNnQjtBQUNBO0FBQ2M7QUFDQTtBQUNRO0FBQ1o7QUFDTDtBQUFBO0FBRS9DLE1BQU1xQyxhQUFhLEdBQUczTCxJQUFBLElBQStDO0VBQUEsSUFBOUM7SUFBRTRMLElBQUk7SUFBRXRMLEtBQUs7SUFBRXVMLElBQUk7SUFBRUMsT0FBTztJQUFFQztFQUFVLENBQUMsR0FBQS9MLElBQUE7RUFDOUQsTUFBTTtJQUFFTDtFQUFFLENBQUMsR0FBRytMLDZEQUFjLENBQUMsQ0FBQztFQUU5QixvQkFDRXRDLHVEQUFBLENBQUNpQyw2REFBTTtJQUNMTyxJQUFJLEVBQUVBLElBQUs7SUFDWEUsT0FBTyxFQUFFQSxPQUFRO0lBQ2pCLG1CQUFnQixvQkFBb0I7SUFDcEMsb0JBQWlCLDBCQUEwQjtJQUFBdEIsUUFBQSxnQkFFM0N0QixzREFBQSxDQUFDdUMsa0VBQVc7TUFBQzlKLEVBQUUsRUFBQyxvQkFBb0I7TUFBQTZJLFFBQUEsRUFBRWxLO0lBQUssQ0FBYyxDQUFDLGVBQzFENEksc0RBQUEsQ0FBQ3FDLG9FQUFhO01BQUFmLFFBQUEsZUFDWnRCLHNEQUFBLENBQUNzQyx3RUFBaUI7UUFBQzdKLEVBQUUsRUFBQywwQkFBMEI7UUFBQTZJLFFBQUEsRUFDN0NxQjtNQUFJLENBQ1k7SUFBQyxDQUNQLENBQUMsZUFDaEJ6Qyx1REFBQSxDQUFDa0Msb0VBQWE7TUFBQWQsUUFBQSxnQkFDWnRCLHNEQUFBLENBQUNrQyw2REFBTTtRQUFDWSxPQUFPLEVBQUVGLE9BQVE7UUFBQXRCLFFBQUEsRUFBRTdLLENBQUMsQ0FBQyxnQkFBZ0I7TUFBQyxDQUFTLENBQUMsZUFDeER1SixzREFBQSxDQUFDa0MsNkRBQU07UUFBQ1ksT0FBTyxFQUFFRCxTQUFVO1FBQUNFLFNBQVM7UUFBQXpCLFFBQUEsRUFDbEM3SyxDQUFDLENBQUMsaUJBQWlCO01BQUMsQ0FDZixDQUFDO0lBQUEsQ0FDSSxDQUFDO0VBQUEsQ0FDVixDQUFDO0FBRWIsQ0FBQztBQUVELGlFQUFlZ00sYUFBYTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ25DRjtBQUNTO0FBQzJCO0FBQ3RCO0FBQ087QUFDUztBQUVUO0FBQUE7QUFFL0MsTUFBTVUsWUFBWSxHQUFHLEVBQUU7QUFFdkIsTUFBTUMsUUFBUSxHQUFHdE0sSUFBQSxJQU9YO0VBQUEsSUFQWTtJQUNoQnVNLElBQUk7SUFDSkMsV0FBVztJQUNYQyxRQUFRLEdBQUcsS0FBSztJQUNoQkMsU0FBUyxHQUFHLElBQUk7SUFDaEJDLFFBQVEsR0FBRyxLQUFLO0lBQ2hCQyxLQUFLLEdBQUdQO0VBQ1YsQ0FBQyxHQUFBck0sSUFBQTtFQUNDLE1BQU07SUFBRUw7RUFBRSxDQUFDLEdBQUcrTCw2REFBYyxDQUFDLENBQUM7RUFDOUIsTUFBTW1CLGdCQUFnQixHQUFHTCxXQUFXLElBQUk3TSxDQUFDLENBQUMsMkJBQTJCLENBQUM7RUFDdEUsTUFBTSxDQUFDbU4sT0FBTyxFQUFFQyxVQUFVLENBQUMsR0FBR25FLHFEQUFjLENBQUNpRSxnQkFBZ0IsQ0FBQztFQUM5RCxNQUFNRyxVQUFVLE1BQUE1TyxNQUFBLENBQU1zTyxTQUFTLElBQUkxRCwwREFBZ0IsT0FBQTVLLE1BQUEsQ0FDakR1TyxRQUFRLElBQUkzRCx5REFBZSxDQUMzQjtFQUVGLE1BQU1pRSxVQUFVLEdBQUdBLENBQUEsS0FBTTtJQUN2QkMsU0FBUyxDQUFDQyxTQUFTLENBQUNDLFNBQVMsQ0FBQ2IsSUFBSSxDQUFDO0lBQ25DUSxVQUFVLENBQUNwTixDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUMvQjBOLFVBQVUsQ0FBQyxNQUFNO01BQ2ZOLFVBQVUsQ0FBQ0YsZ0JBQWdCLENBQUM7SUFDOUIsQ0FBQyxFQUFFVCw2REFBZSxDQUFDO0VBQ3JCLENBQUM7RUFFRCxvQkFDRWhELHVEQUFBO0lBQUtLLFNBQVMsRUFBRVQsd0RBQWU7SUFBQXdCLFFBQUEsZ0JBQzdCdEIsc0RBQUE7TUFBTU8sU0FBUyxFQUFFdUQsVUFBVztNQUFDbEMsS0FBSyxFQUFFO1FBQUU4QjtNQUFNLENBQUU7TUFBQXBDLFFBQUEsRUFDM0MrQjtJQUFJLENBQ0QsQ0FBQyxFQUNOLENBQUNFLFFBQVEsaUJBQ1J2RCxzREFBQSxDQUFDaUQsa0RBQU87TUFBQzdMLEtBQUssRUFBRXdNLE9BQVE7TUFBQXRDLFFBQUEsZUFDdEJ0QixzREFBQSxDQUFDZ0Qsd0VBQWU7UUFDZHpDLFNBQVMsRUFBRVQseURBQWdCO1FBQzNCZ0QsT0FBTyxFQUFFaUIsVUFBVztRQUNwQixlQUFZO01BQW9CLENBQ2pDO0lBQUMsQ0FDSyxDQUNWO0VBQUEsQ0FDRSxDQUFDO0FBRVYsQ0FBQztBQUVEWCxRQUFRLENBQUNyQixTQUFTLEdBQUc7RUFDbkJzQixJQUFJLEVBQUV4RCwwREFBZ0I7RUFDdEJ5RCxXQUFXLEVBQUV6RCwwREFBZ0I7RUFDN0IwRCxRQUFRLEVBQUUxRCx3REFBYztFQUN4QjJELFNBQVMsRUFBRTNELHdEQUFjO0VBQ3pCNEQsUUFBUSxFQUFFNUQsd0RBQWM7RUFDeEI2RCxLQUFLLEVBQUU3RCwwREFBZ0IwRTtBQUN6QixDQUFDO0FBRUQsaUVBQWVuQixRQUFROzs7Ozs7Ozs7Ozs7Ozs7O0FDN0RlO0FBRXRDLE1BQU1xQix5QkFBeUIsZ0JBQUdELG9EQUFhLENBQUMsSUFBSSxDQUFDO0FBRXJELGlFQUFlQyx5QkFBeUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDSmQ7QUFDUztBQUN5QjtBQUNFO0FBQ1o7QUFBQTtBQUVsRCxNQUFNTSxrQkFBa0IsR0FBR2pPLElBQUEsSUFBMEM7RUFBQSxJQUF6QztJQUFFNEwsSUFBSTtJQUFFRSxPQUFPO0lBQUU5SSxPQUFPO0lBQUVrTDtFQUFTLENBQUMsR0FBQWxPLElBQUE7RUFDOUQsSUFBSSxDQUFDZ0QsT0FBTyxFQUFFLE9BQU8sSUFBSTtFQUV6QixvQkFDRWtHLHNEQUFBLENBQUMyRSxtREFBUTtJQUNQakMsSUFBSSxFQUFFQSxJQUFLO0lBQ1hFLE9BQU8sRUFBRUEsT0FBUTtJQUNqQnFDLFlBQVksRUFBRTtNQUFFQyxRQUFRLEVBQUUsS0FBSztNQUFFQyxVQUFVLEVBQUU7SUFBUyxDQUFFO0lBQ3hEQyxnQkFBZ0IsRUFBRSxJQUFLO0lBQUE5RCxRQUFBLGVBRXZCdEIsc0RBQUEsQ0FBQzBFLGdEQUFLO01BQ0o5QixPQUFPLEVBQUVBLE9BQVE7TUFDakJvQyxRQUFRLEVBQUVBLFFBQVM7TUFDbkJLLE9BQU8sRUFBQyxRQUFRO01BQ2hCQyxFQUFFLEVBQUU7UUFBRTVCLEtBQUssRUFBRSxNQUFNO1FBQUU2QixlQUFlLEtBQUFyUSxNQUFBLENBQUs4UCxRQUFRO01BQVMsQ0FBRTtNQUM1RFEsV0FBVyxFQUFFO1FBQ1hDLE9BQU8sZUFBRXpGLHNEQUFBLENBQUM2RSx3RUFBZTtVQUFDYSxRQUFRLEVBQUM7UUFBUyxDQUFFLENBQUM7UUFDL0NDLEtBQUssZUFBRTNGLHNEQUFBLENBQUM4RSxrRUFBUztVQUFDWSxRQUFRLEVBQUM7UUFBUyxDQUFFO01BQ3hDLENBQUU7TUFBQXBFLFFBQUEsZUFFRnRCLHNEQUFBLENBQUM0RSxxREFBVTtRQUFDUyxPQUFPLEVBQUMsT0FBTztRQUFBL0QsUUFBQSxFQUFFeEg7TUFBTyxDQUFhO0lBQUMsQ0FDN0M7RUFBQyxDQUNBLENBQUM7QUFFZixDQUFDO0FBRURpTCxrQkFBa0IsQ0FBQ2hELFNBQVMsR0FBRztFQUM3QlcsSUFBSSxFQUFFN0Msd0RBQWM7RUFDcEIrQyxPQUFPLEVBQUUvQyx3REFBYztFQUN2Qi9GLE9BQU8sRUFBRStGLDBEQUFnQjtFQUN6Qm1GLFFBQVEsRUFBRW5GLDBEQUFnQm1DO0FBQzVCLENBQUM7QUFFRCxpRUFBZStDLGtCQUFrQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDdkNQO0FBQ29CO0FBQ0s7QUFDaEI7QUFBQTtBQUVuQyxJQUFJZ0IsU0FBUyxHQUFHLEVBQUU7QUFDbEIsSUFBSSxPQUFPNUcsTUFBTSxLQUFLLFdBQVcsRUFBRTtFQUNqQztFQUNBLE1BQU02RyxJQUFJLEdBQUdoSCxRQUFRLENBQUNpSCxlQUFlOztFQUVyQztFQUNBRixTQUFTLEdBQUdHLGdCQUFnQixDQUFDRixJQUFJLENBQUMsQ0FBQ0csZ0JBQWdCLENBQ2pELHlCQUNGLENBQUM7QUFDSDtBQUVBLE1BQU1DLEtBQUssR0FBR04saUVBQVcsQ0FBQztFQUN4Qk8sT0FBTyxFQUFFO0lBQ1BDLE9BQU8sRUFBRTtNQUNQQyxJQUFJLEVBQUVSO0lBQ1IsQ0FBQztJQUNEMUMsSUFBSSxFQUFFO01BQ0ppRCxPQUFPLEVBQUUsV0FBVztNQUNwQkUsU0FBUyxFQUFFLFdBQVc7TUFDdEJ6SCxJQUFJLEVBQUU7SUFDUjtFQUNGLENBQUM7RUFDRDBILFVBQVUsRUFBRTtJQUNWQyxLQUFLLEVBQUU7TUFDTGhCLFFBQVEsRUFBRSxNQUFNO01BQ2hCaUIsVUFBVSxFQUFFO0lBQ2QsQ0FBQztJQUNEQyxFQUFFLEVBQUU7TUFDRmxCLFFBQVEsRUFBRSxPQUFPO01BQ2pCaUIsVUFBVSxFQUFFLEdBQUc7TUFDZiw4QkFBOEIsRUFBRTtRQUM5QkUsWUFBWSxFQUFFO01BQ2hCO0lBQ0YsQ0FBQztJQUNEQyxFQUFFLEVBQUU7TUFDRnBCLFFBQVEsRUFBRSxPQUFPO01BQ2pCaUIsVUFBVSxFQUFFLEdBQUc7TUFDZiw4QkFBOEIsRUFBRTtRQUM5QkUsWUFBWSxFQUFFO01BQ2hCO0lBQ0Y7RUFDRixDQUFDO0VBQ0RFLFVBQVUsRUFBRTtJQUNWQyxpQkFBaUIsRUFBRTtNQUNqQkMsY0FBYyxFQUFFO1FBQ2RqQixJQUFJLEVBQUU7VUFDSk4sUUFBUSxFQUFFO1FBQ1o7TUFDRjtJQUNGLENBQUM7SUFDRHdCLFNBQVMsRUFBRTtNQUNURCxjQUFjLEVBQUU7UUFDZGpCLElBQUksRUFBRTtVQUNKTixRQUFRLEVBQUUsS0FBSztVQUNmaUIsVUFBVSxFQUFFLEdBQUc7VUFDZlEsVUFBVSxFQUFFO1FBQ2Q7TUFDRjtJQUNGLENBQUM7SUFDREMsTUFBTSxFQUFFO01BQ05ILGNBQWMsRUFBRTtRQUNkakIsSUFBSSxFQUFFO1VBQ0pOLFFBQVEsRUFBRSxNQUFNO1VBQ2hCMkIsS0FBSyxFQUFFLFdBQVc7VUFDbEIsZ0JBQWdCLEVBQUU7WUFDaEJBLEtBQUssRUFBRTtVQUNUO1FBQ0Y7TUFDRjtJQUNGLENBQUM7SUFDREMsT0FBTyxFQUFFO01BQ1BMLGNBQWMsRUFBRTtRQUNkTSxTQUFTLEVBQUU7VUFDVGhDLGVBQWUsRUFBRTtRQUNuQjtNQUNGO0lBQ0Y7RUFDRjtBQUNGLENBQUMsQ0FBQztBQUVGLE1BQU1pQyxXQUFXLEdBQUcxUSxJQUFBO0VBQUEsSUFBQztJQUFFd0s7RUFBUyxDQUFDLEdBQUF4SyxJQUFBO0VBQUEsb0JBQy9Ca0osc0RBQUEsQ0FBQzZGLHdEQUFhO0lBQUNPLEtBQUssRUFBRUEsS0FBTTtJQUFBOUUsUUFBQSxFQUFFQTtFQUFRLENBQWdCLENBQUM7QUFBQSxDQUN4RDtBQUVEa0csV0FBVyxDQUFDekYsU0FBUyxHQUFHO0VBQ3RCVCxRQUFRLEVBQUV6Qix3REFBYyxDQUFDb0M7QUFDM0IsQ0FBQztBQUVELGlFQUFldUYsV0FBVzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzdGQTtBQUNTO0FBUVo7QUFDbUQ7QUFDL0I7QUFBQTtBQUUzQyxNQUFNVyx5QkFBeUIsR0FBR3JSLElBQUEsSUFXNUI7RUFBQSxJQUFBc1IsZ0JBQUE7RUFBQSxJQVg2QjtNQUNqQ0MsUUFBUTtNQUNSQyxpQkFBaUIsR0FBRyxFQUFFO01BQ3RCQyxVQUFVLEdBQUcsS0FBSztNQUNsQmpILFFBQVE7TUFDUnRLLEtBQUs7TUFDTHdSLFFBQVE7TUFDUkMsYUFBYTtNQUNiOUMsS0FBSztNQUNMK0M7SUFFRixDQUFDLEdBQUE1UixJQUFBO0lBREk2UixJQUFJLEdBQUFsSSxxRkFBQSxDQUFBM0osSUFBQSxFQUFBNEosU0FBQTtFQUVQLE1BQU1rSSxZQUFZLEdBQUdWLDhDQUFNLENBQUNHLFFBQVEsQ0FBQzdQLElBQUksRUFBRTZQLFFBQVEsQ0FBQzVQLEVBQUUsQ0FBQztFQUN2RCxNQUFNb1EsYUFBYSxHQUFHWixnREFBUSxDQUFDSSxRQUFRLENBQUM7RUFDeEMsTUFBTXBHLFVBQVUsR0FBR29HLFFBQVEsQ0FBQ1MsU0FBUztFQUNyQyxNQUFNQyxpQkFBaUIsR0FBR1YsUUFBUSxDQUFDVyxtQkFBbUI7RUFFdEQsTUFBTUMsZUFBZSxHQUNuQixFQUFBYixnQkFBQSxHQUFBQyxRQUFRLENBQUNhLE1BQU0sY0FBQWQsZ0JBQUEsdUJBQWZBLGdCQUFBLENBQWlCNU4sR0FBRyxDQUFFMk8sR0FBRyxLQUFNO0lBQzdCQyxLQUFLLEVBQUVELEdBQUcsQ0FBQ0MsS0FBSztJQUNoQnBTLEtBQUssRUFBRW1TLEdBQUcsQ0FBQzFRLEVBQUUsQ0FBQzRRLFFBQVEsQ0FBQztFQUN6QixDQUFDLENBQUMsQ0FBQyxLQUFJLEVBQUU7RUFFWCxNQUFNQyx3QkFBd0IsR0FBR0EsQ0FBQ0MsT0FBTyxFQUFFSixHQUFHLEtBQUs7SUFDakQsTUFBTUssVUFBVSxHQUFHeFMsS0FBSyxJQUFJLEVBQUU7SUFDOUIsTUFBTXlTLG1CQUFtQixHQUN2QlYsaUJBQWlCLEtBQUssQ0FBQyxJQUFJUyxVQUFVLENBQUNuVSxNQUFNLEtBQUswVCxpQkFBaUI7SUFDcEUsSUFBSVcsUUFBUTtJQUVaLElBQUlILE9BQU8sRUFBRTtNQUNYRyxRQUFRLEdBQUdELG1CQUFtQixHQUFHRCxVQUFVLEdBQUcsQ0FBQyxHQUFHQSxVQUFVLEVBQUVMLEdBQUcsQ0FBQztJQUNwRSxDQUFDLE1BQU07TUFDTE8sUUFBUSxHQUFHRixVQUFVLENBQUM3VSxNQUFNLENBQUVnVixDQUFDLElBQUtBLENBQUMsS0FBS1IsR0FBRyxDQUFDO0lBQ2hEO0lBRUFWLGFBQWEsQ0FBQ0csWUFBWSxFQUFFYyxRQUFRLENBQUM7RUFDdkMsQ0FBQztFQUVELG9CQUNFMUosc0RBQUE7SUFFRXZILEVBQUUsS0FBQXZELE1BQUEsQ0FBSzBULFlBQVksZUFBYTtJQUNoQ3JJLFNBQVMsRUFBRStILGlCQUFrQjtJQUFBaEgsUUFBQSxlQUU3QnBCLHVEQUFBLENBQUN5SCxzREFBVztNQUNWaUMsUUFBUSxFQUFFckIsVUFBVztNQUNyQnNCLFFBQVEsRUFBRTVILFVBQVc7TUFDckI2SCxTQUFTO01BQ1RDLE1BQU0sRUFBQyxRQUFRO01BQ2ZwRSxLQUFLLEVBQUVBLEtBQU07TUFBQXJFLFFBQUEsZ0JBRWJ0QixzREFBQSxDQUFDK0gsb0RBQVM7UUFBQXpHLFFBQUEsZUFDUnRCLHNEQUFBLENBQUNnSSw0RkFBTztVQUFBMUcsUUFBQSxFQUFFdUg7UUFBYSxDQUFVO01BQUMsQ0FDekIsQ0FBQyxFQUNYbEQsS0FBSyxpQkFBSTNGLHNEQUFBLENBQUM4SCx5REFBYztRQUFBeEcsUUFBQSxFQUFFb0gsVUFBVSxhQUFWQSxVQUFVLGNBQVZBLFVBQVUsR0FBSTtNQUFHLENBQWlCLENBQUMsZUFDOUQxSSxzREFBQSxDQUFDNkgsb0RBQVM7UUFBQXZHLFFBQUEsRUFDUDJILGVBQWUsQ0FBQ3pPLEdBQUcsQ0FBRXdQLEVBQUUsaUJBQ3RCaEssc0RBQUEsQ0FBQzRILDJEQUFnQjtVQUVmcFAsSUFBSSxFQUFFb1EsWUFBYTtVQUNuQnFCLE9BQU8sZUFDTGpLLHNEQUFBLENBQUMwSCxtREFBUSxFQUFBaE0sYUFBQTtZQUNQNk4sT0FBTyxFQUFFdlMsS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUVrVCxRQUFRLENBQUNGLEVBQUUsQ0FBQ2hULEtBQUssQ0FBRTtZQUNuQ3dSLFFBQVEsRUFBRzJCLEVBQUUsSUFDWGIsd0JBQXdCLENBQUNhLEVBQUUsQ0FBQ0MsTUFBTSxDQUFDYixPQUFPLEVBQUVTLEVBQUUsQ0FBQ2hULEtBQUs7WUFFdEQ7VUFBQSxHQUNJMlIsSUFBSSxDQUNULENBQ0Y7VUFDRFMsS0FBSyxFQUFFWSxFQUFFLENBQUNaO1FBQU0sR0FaWFksRUFBRSxDQUFDWixLQWFULENBQ0Y7TUFBQyxDQUNPLENBQUMsRUFDWDlILFFBQVE7SUFBQSxDQUNFO0VBQUMsR0FuQ1RzSCxZQW9DRixDQUFDO0FBRVYsQ0FBQztBQUVEVCx5QkFBeUIsQ0FBQ3BHLFNBQVMsR0FBRztFQUNwQ3NHLFFBQVEsRUFBRXhJLDBEQUFnQixDQUFDb0MsVUFBVTtFQUNyQ2pMLEtBQUssRUFBRTZJLHlEQUFlO0VBQ3RCeUksaUJBQWlCLEVBQUV6SSwwREFBZ0I7RUFDbkMwSSxVQUFVLEVBQUUxSSx3REFBYztFQUMxQjJJLFFBQVEsRUFBRTNJLHdEQUFjLENBQUNvQyxVQUFVO0VBQ25DWCxRQUFRLEVBQUV6Qix3REFBYztFQUN4QjRJLGFBQWEsRUFBRTVJLHdEQUFjO0VBQzdCOEYsS0FBSyxFQUFFOUYsd0RBQWM7RUFDckI2SSxVQUFVLEVBQUU3SSwwREFBZ0JtQztBQUM5QixDQUFDO0FBRUQsaUVBQWVtRyx5QkFBeUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN6R2Q7QUFDUztBQU1aO0FBQ21EO0FBQy9CO0FBQUE7QUFFM0MsTUFBTW9DLHFCQUFxQixHQUFHelQsSUFBQSxJQVV4QjtFQUFBLElBVnlCO01BQzdCdVIsUUFBUTtNQUNSQyxpQkFBaUIsR0FBRyxFQUFFO01BQ3RCQyxVQUFVLEdBQUcsS0FBSztNQUNsQmpILFFBQVE7TUFDUnRLLEtBQUs7TUFDTDJPLEtBQUs7TUFDTCtDLFVBQVU7TUFDVkQ7SUFFRixDQUFDLEdBQUEzUixJQUFBO0lBREk2UixJQUFJLEdBQUFsSSxxRkFBQSxDQUFBM0osSUFBQSxFQUFBNEosU0FBQTtFQUVQLE1BQU1rSSxZQUFZLEdBQUdWLDhDQUFNLENBQUNHLFFBQVEsQ0FBQzdQLElBQUksRUFBRTZQLFFBQVEsQ0FBQzVQLEVBQUUsQ0FBQztFQUN2RCxNQUFNb1EsYUFBYSxHQUFHWixnREFBUSxDQUFDSSxRQUFRLENBQUM7RUFDeEMsTUFBTXBHLFVBQVUsR0FBR29HLFFBQVEsQ0FBQ1MsU0FBUztFQUVyQyxvQkFDRTlJLHNEQUFBO0lBRUV2SCxFQUFFLEtBQUF2RCxNQUFBLENBQUswVCxZQUFZLGVBQWE7SUFDaENySSxTQUFTLEVBQUUrSCxpQkFBa0I7SUFBQWhILFFBQUEsZUFFN0JwQix1REFBQSxDQUFDeUgsc0RBQVc7TUFBQ21DLFNBQVM7TUFBQ0MsTUFBTSxFQUFDLFFBQVE7TUFBQ3BFLEtBQUssRUFBRUEsS0FBTTtNQUFBckUsUUFBQSxnQkFDbER0QixzREFBQSxDQUFDNEgsMkRBQWdCO1FBQ2Z0QyxFQUFFLEVBQUU7VUFBRWtGLFVBQVUsRUFBRTtRQUFhLENBQUU7UUFDakNQLE9BQU8sZUFDTGpLLHNEQUFBLENBQUMwSCxtREFBUSxFQUFBaE0sYUFBQTtVQUNQbEQsSUFBSSxFQUFFb1EsWUFBYTtVQUNuQlcsT0FBTyxFQUFFLENBQUMsQ0FBQ3ZTLEtBQU07VUFDakJvUyxLQUFLLGVBQUVwSixzREFBQSxDQUFDZ0ksNEZBQU87WUFBQTFHLFFBQUEsRUFBRXVIO1VBQWEsQ0FBVSxDQUFFO1VBQzFDdkQsRUFBRSxFQUFFO1lBQUVtRixTQUFTLEVBQUUsQ0FBQztVQUFFO1VBQ3BCO1FBQUEsR0FDSTlCLElBQUksQ0FDVCxDQUNGO1FBQ0RTLEtBQUssZUFBRXBKLHNEQUFBLENBQUNnSSw0RkFBTztVQUFBMUcsUUFBQSxFQUFFdUg7UUFBYSxDQUFVLENBQUU7UUFDMUNlLFFBQVEsRUFBRXJCLFVBQVc7UUFDckJzQixRQUFRLEVBQUU1SDtNQUFXLENBQ3RCLENBQUMsRUFDRFgsUUFBUSxFQUNScUUsS0FBSyxpQkFBSTNGLHNEQUFBLENBQUM4SCx5REFBYztRQUFBeEcsUUFBQSxFQUFFb0gsVUFBVSxhQUFWQSxVQUFVLGNBQVZBLFVBQVUsR0FBSTtNQUFHLENBQWlCLENBQUM7SUFBQSxDQUNuRDtFQUFDLEdBdkJURSxZQXdCRixDQUFDO0FBRVYsQ0FBQztBQUVEMkIscUJBQXFCLENBQUN4SSxTQUFTLEdBQUc7RUFDaENzRyxRQUFRLEVBQUV4SSwwREFBZ0IsQ0FBQ29DLFVBQVU7RUFDckNqTCxLQUFLLEVBQUU2SSx3REFBYztFQUNyQnlJLGlCQUFpQixFQUFFekksMERBQWdCO0VBQ25DMEksVUFBVSxFQUFFMUksd0RBQWM7RUFDMUJ5QixRQUFRLEVBQUV6Qix3REFBYztFQUN4QjRJLGFBQWEsRUFBRTVJLHdEQUFjO0VBQzdCOEYsS0FBSyxFQUFFOUYsd0RBQWM7RUFDckI2SSxVQUFVLEVBQUU3SSwwREFBZ0JtQztBQUM5QixDQUFDO0FBRUQsaUVBQWV1SSxxQkFBcUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDbkVWO0FBQ1M7QUFDdUM7QUFDL0I7QUFBQTtBQUUzQyxNQUFNTSxxQkFBcUIsR0FBRy9ULElBQUEsSUFTeEI7RUFBQSxJQUFBc1IsZ0JBQUE7RUFBQSxJQVR5QjtNQUM3QkMsUUFBUTtNQUNSQyxpQkFBaUIsR0FBRyxFQUFFO01BQ3RCQyxVQUFVLEdBQUcsS0FBSztNQUNsQkUsYUFBYTtNQUNibkgsUUFBUTtNQUNScUUsS0FBSztNQUNMK0M7SUFFRixDQUFDLEdBQUE1UixJQUFBO0lBREk2UixJQUFJLEdBQUFsSSxxRkFBQSxDQUFBM0osSUFBQSxFQUFBNEosU0FBQTtFQUVQLE1BQU1rSSxZQUFZLEdBQUdWLDhDQUFNLENBQUNHLFFBQVEsQ0FBQzdQLElBQUksRUFBRTZQLFFBQVEsQ0FBQzVQLEVBQUUsQ0FBQztFQUN2RCxNQUFNb1EsYUFBYSxHQUFHWixnREFBUSxDQUFDSSxRQUFRLENBQUM7RUFDeEMsTUFBTXBHLFVBQVUsR0FBR29HLFFBQVEsQ0FBQ1MsU0FBUztFQUVyQyxNQUFNRyxlQUFlLEdBQ25CLEVBQUFiLGdCQUFBLEdBQUFDLFFBQVEsQ0FBQ2EsTUFBTSxjQUFBZCxnQkFBQSx1QkFBZkEsZ0JBQUEsQ0FBaUI1TixHQUFHLENBQUUyTyxHQUFHLEtBQU07SUFDN0JDLEtBQUssRUFBRUQsR0FBRyxDQUFDQyxLQUFLO0lBQ2hCcFMsS0FBSyxFQUFFbVMsR0FBRyxDQUFDMVE7RUFDYixDQUFDLENBQUMsQ0FBQyxLQUFJLEVBQUU7RUFFWCxvQkFDRXVILHNEQUFBO0lBRUV2SCxFQUFFLEtBQUF2RCxNQUFBLENBQUswVCxZQUFZLGVBQWE7SUFDaENySSxTQUFTLEVBQUUrSCxpQkFBa0I7SUFBQWhILFFBQUEsZUFFN0JwQix1REFBQSxDQUFDeUgsc0RBQVc7TUFDVmlDLFFBQVEsRUFBRXJCLFVBQVc7TUFDckJzQixRQUFRLEVBQUU1SCxVQUFXO01BQ3JCNkgsU0FBUztNQUNUQyxNQUFNLEVBQUMsUUFBUTtNQUNmcEUsS0FBSyxFQUFFQSxLQUFNO01BQUFyRSxRQUFBLGdCQUVidEIsc0RBQUEsQ0FBQzBLLHFEQUFVO1FBQUNqUyxFQUFFLEtBQUF2RCxNQUFBLENBQUswVCxZQUFZLFdBQVM7UUFBQXRILFFBQUEsRUFBRXVIO01BQWEsQ0FBYSxDQUFDLGVBQ3JFN0ksc0RBQUEsQ0FBQzRLLGlEQUFNLEVBQUFsUCxhQUFBLENBQUFBLGFBQUE7UUFDTG9QLE9BQU8sS0FBQTVWLE1BQUEsQ0FBSzBULFlBQVksV0FBUztRQUNqQ3BRLElBQUksRUFBRW9RLFlBQWE7UUFDbkJuUSxFQUFFLEVBQUVtUSxZQUFhO1FBQ2pCUSxLQUFLLEVBQUVQO1FBQ1A7TUFBQSxHQUNJRixJQUFJO1FBQ1IvRyxLQUFLLEVBQUU7VUFBRWlGLFlBQVksRUFBRTtRQUFHLENBQUU7UUFBQXZGLFFBQUEsRUFFM0IySCxlQUFlLENBQUN6TyxHQUFHLENBQUV3UCxFQUFFLGlCQUN0QmhLLHNEQUFBLENBQUMySyxtREFBUTtVQUFnQjNULEtBQUssRUFBRWdULEVBQUUsQ0FBQ2hULEtBQU07VUFBQXNLLFFBQUEsRUFDdEMwSSxFQUFFLENBQUNaO1FBQUssR0FESVksRUFBRSxDQUFDWixLQUVSLENBQ1g7TUFBQyxFQUNJLENBQUMsRUFDUjlILFFBQVE7SUFBQSxDQUNFO0VBQUMsR0E1QlRzSCxZQTZCRixDQUFDO0FBRVYsQ0FBQztBQUVEaUMscUJBQXFCLENBQUM5SSxTQUFTLEdBQUc7RUFDaENzRyxRQUFRLEVBQUV4SSwwREFBZ0IsQ0FBQ29DLFVBQVU7RUFDckNxRyxpQkFBaUIsRUFBRXpJLDBEQUFnQjtFQUNuQzBJLFVBQVUsRUFBRTFJLHdEQUFjO0VBQzFCeUIsUUFBUSxFQUFFekIsd0RBQWM7RUFDeEI4RixLQUFLLEVBQUU5Rix3REFBYztFQUNyQjZJLFVBQVUsRUFBRTdJLDBEQUFnQjtFQUM1QjRJLGFBQWEsRUFBRTVJLHdEQUFjK0Y7QUFDL0IsQ0FBQztBQUVELGlFQUFlaUYscUJBQXFCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDdEVWO0FBQ1M7QUFRWjtBQUNtRDtBQUMvQjtBQUFBO0FBRTNDLE1BQU1JLHNCQUFzQixHQUFHblUsSUFBQSxJQVN6QjtFQUFBLElBQUFzUixnQkFBQTtFQUFBLElBVDBCO01BQzlCQyxRQUFRO01BQ1JDLGlCQUFpQixHQUFHLEVBQUU7TUFDdEJDLFVBQVUsR0FBRyxLQUFLO01BQ2xCakgsUUFBUTtNQUNScUUsS0FBSztNQUNMK0MsVUFBVTtNQUNWRDtJQUVGLENBQUMsR0FBQTNSLElBQUE7SUFESTZSLElBQUksR0FBQWxJLHFGQUFBLENBQUEzSixJQUFBLEVBQUE0SixTQUFBO0VBRVAsTUFBTWtJLFlBQVksR0FBR1YsOENBQU0sQ0FBQ0csUUFBUSxDQUFDN1AsSUFBSSxFQUFFNlAsUUFBUSxDQUFDNVAsRUFBRSxDQUFDO0VBQ3ZELE1BQU1vUSxhQUFhLEdBQUdaLGdEQUFRLENBQUNJLFFBQVEsQ0FBQztFQUN4QyxNQUFNcEcsVUFBVSxHQUFHb0csUUFBUSxDQUFDUyxTQUFTO0VBRXJDLE1BQU1HLGVBQWUsR0FDbkIsRUFBQWIsZ0JBQUEsR0FBQUMsUUFBUSxDQUFDYSxNQUFNLGNBQUFkLGdCQUFBLHVCQUFmQSxnQkFBQSxDQUFpQjVOLEdBQUcsQ0FBRTJPLEdBQUcsS0FBTTtJQUM3QkMsS0FBSyxFQUFFRCxHQUFHLENBQUNDLEtBQUs7SUFDaEJwUyxLQUFLLEVBQUVtUyxHQUFHLENBQUMxUSxFQUFFLENBQUM0USxRQUFRLENBQUM7RUFDekIsQ0FBQyxDQUFDLENBQUMsS0FBSSxFQUFFO0VBRVgsb0JBQ0VySixzREFBQTtJQUVFdkgsRUFBRSxLQUFBdkQsTUFBQSxDQUFLMFQsWUFBWSxlQUFhO0lBQ2hDckksU0FBUyxFQUFFK0gsaUJBQWtCO0lBQUFoSCxRQUFBLGVBRTdCcEIsdURBQUEsQ0FBQ3lILHNEQUFXO01BQ1ZpQyxRQUFRLEVBQUVyQixVQUFXO01BQ3JCc0IsUUFBUSxFQUFFNUgsVUFBVztNQUNyQjZILFNBQVM7TUFDVEMsTUFBTSxFQUFDLFFBQVE7TUFDZnBFLEtBQUssRUFBRUEsS0FBTTtNQUFBckUsUUFBQSxnQkFFYnRCLHNEQUFBLENBQUMrSCxvREFBUztRQUFDdFAsRUFBRSxLQUFBdkQsTUFBQSxDQUFLMFQsWUFBWSxXQUFTO1FBQUF0SCxRQUFBLGVBQ3JDdEIsc0RBQUEsQ0FBQ2dJLDRGQUFPO1VBQUExRyxRQUFBLEVBQUV1SDtRQUFhLENBQVU7TUFBQyxDQUN6QixDQUFDLEVBQ1hsRCxLQUFLLGlCQUFJM0Ysc0RBQUEsQ0FBQzhILHlEQUFjO1FBQUF4RyxRQUFBLEVBQUVvSCxVQUFVLGFBQVZBLFVBQVUsY0FBVkEsVUFBVSxHQUFJO01BQUcsQ0FBaUIsQ0FBQyxlQUM5RDFJLHNEQUFBLENBQUNnTCxxREFBVSxFQUFBdFAsYUFBQSxDQUFBQSxhQUFBO1FBQ1Qsc0JBQUF4RyxNQUFBLENBQW9CMFQsWUFBWSxXQUFTO1FBQ3pDcFEsSUFBSSxFQUFFb1E7UUFDTjtNQUFBLEdBQ0lELElBQUk7UUFBQXJILFFBQUEsRUFFUDJILGVBQWUsQ0FBQ3pPLEdBQUcsQ0FBRXdQLEVBQUUsaUJBQ3RCaEssc0RBQUEsQ0FBQzRILDJEQUFnQjtVQUVmNVEsS0FBSyxFQUFFZ1QsRUFBRSxDQUFDaFQsS0FBTTtVQUNoQmlULE9BQU8sZUFBRWpLLHNEQUFBLENBQUMrSyxnREFBSyxJQUFFLENBQUU7VUFDbkIzQixLQUFLLEVBQUVZLEVBQUUsQ0FBQ1o7UUFBTSxHQUhYWSxFQUFFLENBQUNaLEtBSVQsQ0FDRjtNQUFDLEVBQ1EsQ0FBQyxFQUNaOUgsUUFBUTtJQUFBLENBQ0U7RUFBQyxHQS9CVHNILFlBZ0NGLENBQUM7QUFFVixDQUFDO0FBRURxQyxzQkFBc0IsQ0FBQ2xKLFNBQVMsR0FBRztFQUNqQ3NHLFFBQVEsRUFBRXhJLDBEQUFnQixDQUFDb0MsVUFBVTtFQUNyQ3FHLGlCQUFpQixFQUFFekksMERBQWdCO0VBQ25DMEksVUFBVSxFQUFFMUksd0RBQWM7RUFDMUJ5QixRQUFRLEVBQUV6Qix3REFBYztFQUN4QjhGLEtBQUssRUFBRTlGLHdEQUFjO0VBQ3JCNkksVUFBVSxFQUFFN0ksMERBQWdCO0VBQzVCNEksYUFBYSxFQUFFNUksd0RBQWMrRjtBQUMvQixDQUFDO0FBRUQsaUVBQWVxRixzQkFBc0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDakZYO0FBQ1M7QUFDa0I7QUFDVjtBQUFBO0FBRTNDLE1BQU1FLGlCQUFpQixHQUFHclUsSUFBQSxJQU9wQjtFQUFBLElBUHFCO01BQ3pCdVIsUUFBUTtNQUNSQyxpQkFBaUIsR0FBRyxFQUFFO01BQ3RCQyxVQUFVLEdBQUcsS0FBSztNQUNsQmpILFFBQVE7TUFDUm1IO0lBRUYsQ0FBQyxHQUFBM1IsSUFBQTtJQURJNlIsSUFBSSxHQUFBbEkscUZBQUEsQ0FBQTNKLElBQUEsRUFBQTRKLFNBQUE7RUFFUCxNQUFNa0ksWUFBWSxHQUFHViw4Q0FBTSxDQUFDRyxRQUFRLENBQUM3UCxJQUFJLEVBQUU2UCxRQUFRLENBQUM1UCxFQUFFLENBQUM7RUFDdkQsTUFBTW9RLGFBQWEsR0FBR1osZ0RBQVEsQ0FBQ0ksUUFBUSxDQUFDO0VBQ3hDLE1BQU1wRyxVQUFVLEdBQUdvRyxRQUFRLENBQUNTLFNBQVM7RUFFckMsb0JBQ0U5SSxzREFBQTtJQUVFdkgsRUFBRSxLQUFBdkQsTUFBQSxDQUFLMFQsWUFBWSxlQUFhO0lBQ2hDckksU0FBUyxFQUFFK0gsaUJBQWtCO0lBQUFoSCxRQUFBLGVBRTdCcEIsdURBQUEsQ0FBQzJILG9EQUFTO01BQUF2RyxRQUFBLGdCQUNSdEIsc0RBQUEsQ0FBQ2tMLG9EQUFTLEVBQUF4UCxhQUFBO1FBQ1JsRCxJQUFJLEVBQUVvUSxZQUFhO1FBQ25CUSxLQUFLLEVBQUVQLGFBQWM7UUFDckJlLFFBQVEsRUFBRXJCLFVBQVc7UUFDckJzQixRQUFRLEVBQUU1SCxVQUFXO1FBQ3JCNkgsU0FBUztRQUNUQyxNQUFNLEVBQUM7UUFDUDtNQUFBLEdBQ0lwQixJQUFJLENBQ1QsQ0FBQyxFQUNEckgsUUFBUTtJQUFBLENBQ0E7RUFBQyxHQWhCUHNILFlBaUJGLENBQUM7QUFFVixDQUFDO0FBRUR1QyxpQkFBaUIsQ0FBQ3BKLFNBQVMsR0FBRztFQUM1QnNHLFFBQVEsRUFBRXhJLDBEQUFnQixDQUFDb0MsVUFBVTtFQUNyQ3FHLGlCQUFpQixFQUFFekksMERBQWdCO0VBQ25DMEksVUFBVSxFQUFFMUksd0RBQWM7RUFDMUJ5QixRQUFRLEVBQUV6Qix3REFBYztFQUN4QjRJLGFBQWEsRUFBRTVJLHdEQUFjK0Y7QUFDL0IsQ0FBQztBQUVELGlFQUFldUYsaUJBQWlCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUMxQ1Y7QUFFZixNQUFNTSxTQUFTLEdBQUdBLENBQUN6VSxLQUFLLEVBQUUwVSxJQUFJLEtBQUs7RUFDeEMsTUFBTXhDLE1BQU0sR0FBR3dDLElBQUksQ0FBQ0MsYUFBYTtFQUVqQyxJQUFJLENBQUMzVSxLQUFLLEVBQUUsT0FBTyxLQUFLO0VBRXhCLElBQUk0VSxLQUFLLENBQUNDLE9BQU8sQ0FBQzdVLEtBQUssQ0FBQyxFQUFFO0lBQ3hCLElBQUksQ0FBQ0EsS0FBSyxDQUFDM0IsTUFBTSxFQUFFLE9BQU8sS0FBSztJQUMvQixJQUFJYyxHQUFHLEdBQUd1VixJQUFJLENBQUNJLHNCQUFzQixLQUFLLEtBQUs7SUFDL0M1QyxNQUFNLENBQUNyUyxPQUFPLENBQUU4UyxDQUFDLElBQUs7TUFDcEIsSUFBSStCLElBQUksQ0FBQ0ksc0JBQXNCLEtBQUssS0FBSyxFQUFFO1FBQ3pDM1YsR0FBRyxHQUFHQSxHQUFHLElBQUlhLEtBQUssQ0FBQ2tULFFBQVEsQ0FBQ1AsQ0FBQyxDQUFDO01BQ2hDLENBQUMsTUFBTTtRQUNMO1FBQ0F4VCxHQUFHLEdBQUdBLEdBQUcsSUFBSWEsS0FBSyxDQUFDa1QsUUFBUSxDQUFDUCxDQUFDLENBQUM7TUFDaEM7SUFDRixDQUFDLENBQUM7SUFDRixPQUFPeFQsR0FBRztFQUNaO0VBQ0EsT0FBTytTLE1BQU0sQ0FBQ2dCLFFBQVEsQ0FBQ2xULEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFcVMsUUFBUSxDQUFDLENBQUMsQ0FBQztBQUMzQyxDQUFDO0FBRU0sTUFBTTBDLGVBQWUsR0FBR0EsQ0FBQ0wsSUFBSSxFQUFFTSxVQUFVLEtBQUs7RUFDbkQsSUFBSU4sSUFBSSxDQUFDTyxVQUFVLEtBQUssU0FBUyxFQUFFO0lBQ2pDLElBQUlQLElBQUksQ0FBQ1Esb0JBQW9CLEtBQUssT0FBTyxFQUFFO01BQ3pDLE9BQU8sQ0FBQyxDQUFDRixVQUFVO0lBQ3JCO0lBQ0E7SUFDQSxPQUFPLENBQUNBLFVBQVU7RUFDcEI7RUFDQTtFQUNBLElBQUlOLElBQUksQ0FBQ1Esb0JBQW9CLEtBQUssT0FBTyxFQUFFO0lBQ3pDLE9BQU8sQ0FBQ0YsVUFBVTtFQUNwQjtFQUNBLE9BQU8sQ0FBQyxDQUFDQSxVQUFVO0FBQ3JCLENBQUM7QUFFTSxNQUFNOUQsTUFBTSxHQUFHQSxDQUFDN0UsSUFBSSxFQUFFOEksVUFBVSxLQUFLO0VBQzFDLE1BQU1DLE1BQU0sR0FBRy9JLElBQUksQ0FBQ2dKLFdBQVcsQ0FBQyxDQUFDO0VBQ2pDLFVBQUFuWCxNQUFBLENBQVVrWCxNQUFNLENBQUNFLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLENBQUMsT0FBQXBYLE1BQUEsQ0FBSWlYLFVBQVU7QUFDL0QsQ0FBQztBQUVNLE1BQU1sRSxRQUFRLEdBQUlzRSxDQUFDO0VBQUEsSUFBQUMsUUFBQTtFQUFBLFFBQ3hCO0lBQ0FELENBQUMsYUFBREEsQ0FBQyxnQkFBQUMsUUFBQSxHQUFERCxDQUFDLENBQUVuRCxLQUFLLGNBQUFvRCxRQUFBLHVCQUFSQSxRQUFBLENBQVVGLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUNBLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJO0VBQUM7QUFBQTtBQUV4RCxNQUFNRyxVQUFVLEdBQUlDLE1BQU0sSUFBSztFQUNwQyxJQUFJLENBQUNBLE1BQU0sRUFBRSxPQUFPLEtBQUs7RUFDekI7RUFDQSxJQUFJZCxLQUFLLENBQUNDLE9BQU8sQ0FBQ2EsTUFBTSxDQUFDLEVBQUUsT0FBT0EsTUFBTSxDQUFDclgsTUFBTSxHQUFHLENBQUM7RUFDbkQsSUFBSSxPQUFPcVgsTUFBTSxLQUFLLFFBQVEsRUFBRSxPQUFPQSxNQUFNLENBQUNyWCxNQUFNLEdBQUcsQ0FBQztFQUN4RCxJQUFJLE9BQU9xWCxNQUFNLEtBQUssUUFBUSxFQUFFLE9BQU9BLE1BQU0sR0FBRyxDQUFDO0VBQ2pELElBQUksT0FBT0EsTUFBTSxLQUFLLFNBQVMsRUFBRSxPQUFPQSxNQUFNO0VBQzlDLE9BQU8sS0FBSztBQUNkLENBQUM7QUFFTSxNQUFNQyxpQkFBaUIsR0FBR0EsQ0FBQ0QsTUFBTSxFQUFFRSxVQUFVLEtBQUs7RUFDdkQsTUFBTUMsV0FBVyxHQUFHakIsS0FBSyxDQUFDQyxPQUFPLENBQUNhLE1BQU0sQ0FBQyxHQUFHQSxNQUFNLEdBQUcsQ0FBQ0EsTUFBTSxDQUFDO0VBRTdELE9BQU9HLFdBQVcsQ0FBQ0MsSUFBSSxDQUFFbkQsQ0FBQyxJQUFLO0lBQzdCLElBQUlpQyxLQUFLLENBQUNDLE9BQU8sQ0FBQ2UsVUFBVSxDQUFDLEVBQUU7TUFDN0IsT0FBT0EsVUFBVSxDQUFDMUMsUUFBUSxJQUFBaFYsTUFBQSxDQUFJeVUsQ0FBQyxDQUFFLENBQUM7SUFDcEM7SUFDQSxPQUFPLEdBQUF6VSxNQUFBLENBQUd5VSxDQUFDLFNBQUF6VSxNQUFBLENBQVUwWCxVQUFVLENBQUU7RUFDbkMsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVNLE1BQU1HLG1CQUFtQixHQUFJUixDQUFDLElBQUs7RUFDeEMsUUFBUUEsQ0FBQyxDQUFDUyxJQUFJO0lBQ1osS0FBSzVCLDZEQUFxQjtNQUN4QixPQUFPLEtBQUs7SUFDZCxLQUFLSSxvRUFBNEI7TUFDL0IsT0FBTyxJQUFJO0lBQ2IsS0FBS0gsaUVBQXlCO01BQzVCLE9BQU8sRUFBRTtJQUNYLEtBQUtFLG9FQUE0QjtJQUNqQyxLQUFLRCw2REFBcUI7TUFDeEIsT0FBTyxFQUFFO0lBQ1g7TUFDRSxPQUFPLEVBQUU7RUFDYjtBQUNGLENBQUM7QUFFTSxNQUFNMkIsWUFBWSxHQUFHQSxDQUFDQyxHQUFHLEVBQUVGLElBQUksS0FBSztFQUN6QyxRQUFRQSxJQUFJO0lBQ1YsS0FBSzVCLDZEQUFxQjtNQUN4QixPQUFPOEIsR0FBRyxLQUFLLE1BQU07SUFDdkIsS0FBSzdCLGlFQUF5QjtNQUM1QixPQUFPLENBQUE2QixHQUFHLGFBQUhBLEdBQUcsdUJBQUhBLEdBQUcsQ0FBRWpNLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSSxFQUFFO0lBQzlCLEtBQUtzSyxvRUFBNEI7SUFDakMsS0FBS0QsNkRBQXFCO01BQ3hCLE9BQU80QixHQUFHLElBQUksRUFBRTtJQUNsQixLQUFLMUIsb0VBQTRCO01BQy9CLE9BQU8wQixHQUFHLElBQUksSUFBSTtJQUNwQjtNQUNFLE9BQU9BLEdBQUc7RUFDZDtBQUNGLENBQUM7QUFFTSxNQUFNQyxxQkFBcUIsR0FBSXBRLE9BQU8sSUFBSztFQUNoRCxNQUFNO01BQ0paLGNBQWM7TUFDZEMsbUJBQW1CO01BQ25CQyxrQkFBa0I7TUFDbEJWLGdCQUFnQjtNQUNoQnlSO0lBRUYsQ0FBQyxHQUFHclEsT0FBTztJQUROc1EsZUFBZSxHQUFBNU0scUZBQUEsQ0FDaEIxRCxPQUFPLEVBQUEyRCxTQUFBO0VBRVgsTUFBTTRNLFdBQVcsR0FBRzVXLE1BQU0sQ0FBQ0MsT0FBTyxDQUFDMFcsZUFBZSxDQUFDLENBQUM3UyxHQUFHLENBQUMxRCxJQUFBO0lBQUEsSUFBQyxDQUFDQyxHQUFHLEVBQUVDLEtBQUssQ0FBQyxHQUFBRixJQUFBO0lBQUEsT0FBTTtNQUN6RXlXLFdBQVcsRUFBRUMsUUFBUSxDQUFDelcsR0FBRyxDQUFDa0ssS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDd00sR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7TUFDL0NmLE1BQU0sRUFBRSxDQUFBMVYsS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUVxUyxRQUFRLENBQUMsQ0FBQyxLQUFJO0lBQy9CLENBQUM7RUFBQSxDQUFDLENBQUM7RUFFSCxPQUFPO0lBQ0xsTixjQUFjO0lBQ2RDLG1CQUFtQjtJQUNuQkMsa0JBQWtCO0lBQ2xCVixnQkFBZ0I7SUFDaEJ5UixtQkFBbUI7SUFDbkJDLGVBQWUsRUFBRUM7RUFDbkIsQ0FBQztBQUNILENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ2pJTSxNQUFNSSxpQkFBaUIsR0FBRyxNQUFNO0FBQ2hDLE1BQU1DLHFCQUFxQixHQUFHLFVBQVU7QUFDeEMsTUFBTXZDLHFCQUFxQixHQUFHLFVBQVU7QUFDeEMsTUFBTUksNEJBQTRCLEdBQUcsaUJBQWlCO0FBQ3RELE1BQU1GLHFCQUFxQixHQUFHLFVBQVU7QUFDeEMsTUFBTUQseUJBQXlCLEdBQUcsY0FBYztBQUNoRCxNQUFNRSw0QkFBNEIsR0FBRyxpQkFBaUI7QUFDdEQsTUFBTXFDLHdCQUF3QixHQUFHLGFBQWE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDUHJEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFMEI7QUFDUztBQU9QO0FBU1A7QUFDMEM7QUFDUTtBQUNFO0FBQ007QUFDUjtBQUFBO0FBRXZFLE1BQU1DLHlCQUF5QixHQUFJQyxZQUFZLElBQUs7RUFDbEQsUUFBUUEsWUFBWTtJQUNsQixLQUFLSCw2REFBcUI7SUFDMUIsS0FBS0QseURBQWlCO01BQUU7UUFDdEIsT0FBT3ZDLHFFQUFpQjtNQUMxQjtJQUNBLEtBQUtDLDZEQUFxQjtNQUFFO1FBQzFCLE9BQU9iLHlFQUFxQjtNQUM5QjtJQUNBLEtBQUtpQixvRUFBNEI7TUFBRTtRQUNqQyxPQUFPUCwwRUFBc0I7TUFDL0I7SUFDQSxLQUFLSSxpRUFBeUI7TUFBRTtRQUM5QixPQUFPbEQsNkVBQXlCO01BQ2xDO0lBQ0EsS0FBS29ELG9FQUE0QjtJQUNqQyxLQUFLRCw2REFBcUI7TUFBRTtRQUMxQixPQUFPVCx5RUFBcUI7TUFDOUI7SUFDQTtNQUFTO1FBQ1AsT0FBT25MLHVEQUFjO01BQ3ZCO0VBQ0Y7QUFDRixDQUFDO0FBRUQsTUFBTXNPLG9CQUFvQixHQUFHbFgsSUFBQSxJQVF2QjtFQUFBLElBUndCO0lBQzVCOUQsY0FBYztJQUNkaWIsZUFBZTtJQUNmMU4sU0FBUyxHQUFHLGdCQUFnQjtJQUM1QitILGlCQUFpQixHQUFHLGVBQWU7SUFDbkM0RixRQUFRLEdBQUcsS0FBSztJQUNoQkMsU0FBUyxHQUFHLElBQUk7SUFDaEJDO0VBQ0YsQ0FBQyxHQUFBdFgsSUFBQTtFQUNDLE1BQU11WCxVQUFVLEdBQUdBLENBQUMzQyxJQUFJLEVBQUU5QyxZQUFZLEtBQUs7SUFDekMsTUFBTW9ELFVBQVUsR0FBR1AsNERBQVMsQ0FBQzJDLE1BQU0sQ0FBQ2xGLE1BQU0sQ0FBQ04sWUFBWSxDQUFDLEVBQUU4QyxJQUFJLENBQUM7SUFDL0QsTUFBTTRDLFNBQVMsR0FBR3ZDLGtFQUFlLENBQUNMLElBQUksRUFBRU0sVUFBVSxDQUFDO0lBRW5ELElBQUlzQyxTQUFTLEVBQUU7TUFDYjtNQUNBLE9BQU9DLGNBQWMsQ0FBQzdDLElBQUksQ0FBQzhDLFlBQVksQ0FBQztJQUMxQztJQUVBLE9BQU8sSUFBSTtFQUNiLENBQUM7RUFFRCxNQUFNRCxjQUFjLEdBQUloQyxDQUFDLElBQUs7SUFBQSxJQUFBa0MscUJBQUE7SUFDNUIsTUFBTTdGLFlBQVksR0FBR1YseURBQU0sQ0FBQ3FFLENBQUMsQ0FBQy9ULElBQUksRUFBRStULENBQUMsQ0FBQzlULEVBQUUsQ0FBQztJQUN6QztJQUNBLE1BQU04UCxVQUFVLEdBQ2IsQ0FBQzRGLFNBQVMsSUFBSTFCLDZEQUFVLENBQUN3QixlQUFlLENBQUNyRixZQUFZLENBQUMsQ0FBQyxJQUFLc0YsUUFBUTtJQUN2RSxNQUFNUSxzQkFBc0IsR0FBR2IseUJBQXlCLENBQUN0QixDQUFDLENBQUNTLElBQUksQ0FBQztJQUVoRSxNQUFNMkIsV0FBVyxHQUFHO01BQ2xCM1gsS0FBSyxFQUFFb1gsTUFBTSxDQUFDbEYsTUFBTSxDQUFDTixZQUFZLENBQUM7TUFDbENKLFFBQVEsRUFBRTRGLE1BQU0sQ0FBQ1EsWUFBWTtNQUM3QkMsTUFBTSxFQUFFVCxNQUFNLENBQUNVLFVBQVU7TUFDekJuSixLQUFLLEVBQ0h5SSxNQUFNLENBQUNXLE9BQU8sQ0FBQ25HLFlBQVksQ0FBQyxJQUFJb0csT0FBTyxDQUFDWixNQUFNLENBQUN4WCxNQUFNLENBQUNnUyxZQUFZLENBQUMsQ0FBQztNQUN0RUYsVUFBVSxFQUFFMEYsTUFBTSxDQUFDVyxPQUFPLENBQUNuRyxZQUFZLENBQUMsSUFBSXdGLE1BQU0sQ0FBQ3hYLE1BQU0sQ0FBQ2dTLFlBQVksQ0FBQztNQUN2RUgsYUFBYSxFQUFFMkYsTUFBTSxDQUFDM0Y7SUFDeEIsQ0FBQztJQUVELG9CQUNFekksdURBQUEsQ0FBQzBPLHNCQUFzQixFQUFBaFQsYUFBQSxDQUFBQSxhQUFBO01BRXJCMk0sUUFBUSxFQUFFa0UsQ0FBRTtNQUNaakUsaUJBQWlCLEVBQUVBLGlCQUFrQjtNQUNyQ0MsVUFBVSxFQUFFQTtNQUNaO0lBQUEsR0FDSW9HLFdBQVc7TUFBQXJOLFFBQUEsR0FBQW1OLHFCQUFBLEdBRWRsQyxDQUFDLENBQUMwQyxrQkFBa0IsY0FBQVIscUJBQUEsdUJBQXBCQSxxQkFBQSxDQUFzQmpVLEdBQUcsQ0FBRWtSLElBQUksSUFBSzJDLFVBQVUsQ0FBQzNDLElBQUksRUFBRTlDLFlBQVksQ0FBQztJQUFDLElBUC9EQSxZQVFpQixDQUFDO0VBRTdCLENBQUM7RUFFRCxvQkFBTzVJLHVEQUFBO0lBQUtPLFNBQVMsRUFBRUEsU0FBVTtJQUFBZSxRQUFBLEVBQUV0TyxjQUFjLENBQUN3SCxHQUFHLENBQUMrVCxjQUFjO0VBQUMsQ0FBTSxDQUFDO0FBQzlFLENBQUM7QUFFRFAsb0JBQW9CLENBQUNqTSxTQUFTLEdBQUc7RUFDL0IvTyxjQUFjLEVBQUU2TSx5REFBZSxDQUFDb0MsVUFBVTtFQUMxQzFCLFNBQVMsRUFBRVYsMERBQWdCO0VBQzNCeUksaUJBQWlCLEVBQUV6SSwwREFBZ0I7RUFDbkNzTyxTQUFTLEVBQUV0Tyx3REFBYztFQUN6QnFPLFFBQVEsRUFBRXJPLHdEQUFjeUU7QUFDMUIsQ0FBQztBQUVELGlFQUFlMEosb0JBQW9COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDN0hLO0FBQ2dCO0FBQ3JCO0FBVVo7QUFDcUM7QUFDYjtBQUNZO0FBQUE7QUFFM0QsTUFBTTBCLGNBQWMsR0FBRzVZLElBQUEsSUFBa0I7RUFBQSxJQUFqQjtJQUFFNlk7RUFBUyxDQUFDLEdBQUE3WSxJQUFBO0VBQ2xDLE1BQU07SUFDSm5DLE1BQU0sRUFBRTtNQUFFTiwwQkFBMEIsRUFBRXViO0lBQWE7RUFDckQsQ0FBQyxHQUFHVix3REFBVyxDQUFFVyxLQUFLLElBQUtBLEtBQUssQ0FBQy9YLFdBQVcsSUFBSSxDQUFDLENBQUMsRUFBRXFYLHFEQUFZLENBQUM7RUFFakUsTUFBTSxDQUFDVyxVQUFVLEVBQUVDLGFBQWEsQ0FBQyxHQUFHcFEsK0NBQVEsQ0FBQyxDQUFDLENBQUNpUSxZQUFZLENBQUM7RUFFNUQsTUFBTUksY0FBYyxHQUFHLENBQ3JCO0lBQUVoWixLQUFLLEVBQUUsSUFBSTtJQUFFb1MsS0FBSyxFQUFFO0VBQUssQ0FBQyxFQUM1QjtJQUFFcFMsS0FBSyxFQUFFLGFBQWE7SUFBRW9TLEtBQUssRUFBRTtFQUFlLENBQUMsRUFDL0M7SUFBRXBTLEtBQUssRUFBRSxRQUFRO0lBQUVvUyxLQUFLLEVBQUU7RUFBUyxDQUFDLENBQ3JDO0VBRUQsTUFBTTZHLGtCQUFrQixHQUFHQSxDQUFDOUYsRUFBRSxFQUFFblQsS0FBSyxLQUFLO0lBQ3hDLE1BQU1rWixTQUFTLEdBQUdsWixLQUFLO0lBQ3ZCMlksUUFBUSxDQUFDO01BQ1AsQ0FBQ3RiLGdFQUEwQixHQUFHNmI7SUFDaEMsQ0FBQyxDQUFDO0VBQ0osQ0FBQztFQUVELG9CQUNFaFEsdURBQUEsQ0FBQ2tQLDhDQUFHO0lBQUE5TixRQUFBLGdCQUNGdEIsc0RBQUEsQ0FBQ3FQLHFEQUFVO01BQ1RqWSxLQUFLLEVBQUMsVUFBVTtNQUNoQm1KLFNBQVMsRUFBRVQsNkRBQW9CO01BQy9CZ0QsT0FBTyxFQUFFQSxDQUFBLEtBQU1pTixhQUFhLENBQUMsQ0FBQ0QsVUFBVSxDQUFFO01BQzFDTSxNQUFNLGVBQ0pwUSxzREFBQSxDQUFDc1AscURBQVU7UUFBQyxjQUFXLFFBQVE7UUFBQ2UsYUFBYTtRQUFBL08sUUFBQSxlQUMzQ3RCLHNEQUFBLENBQUN5UCx1RUFBYztVQUNiN04sS0FBSyxFQUFFO1lBQ0wwTyxTQUFTLEVBQUVSLFVBQVUsR0FBRyxnQkFBZ0IsR0FBRyxjQUFjO1lBQ3pEUyxVQUFVLEVBQUU7VUFDZDtRQUFFLENBQ0g7TUFBQyxDQUNRO0lBQ2IsQ0FDRixDQUFDLGVBQ0Z2USxzREFBQSxDQUFDdVAsbURBQVE7TUFBQ2lCLEVBQUUsRUFBRVYsVUFBVztNQUFDVyxPQUFPLEVBQUMsTUFBTTtNQUFDQyxhQUFhO01BQUFwUCxRQUFBLGVBQ3BEdEIsc0RBQUEsQ0FBQ3dQLHNEQUFXO1FBQ1ZsSyxFQUFFLEVBQUU7VUFDRnFMLEVBQUUsRUFBRSxDQUFDO1VBQ0xwTCxlQUFlLEVBQUUsV0FBVztVQUM1QixjQUFjLEVBQUU7WUFDZHFMLEVBQUUsRUFBRTtVQUNOO1FBQ0YsQ0FBRTtRQUFBdFAsUUFBQSxlQUVGdEIsc0RBQUEsQ0FBQ2dMLHFEQUFVO1VBQUNoVSxLQUFLLEVBQUU0WSxZQUFhO1VBQUNwSCxRQUFRLEVBQUV5SCxrQkFBbUI7VUFBQTNPLFFBQUEsRUFDM0QwTyxjQUFjLENBQUN4VixHQUFHLENBQUVxVyxRQUFRLGlCQUMzQjdRLHNEQUFBLENBQUNvUCw4Q0FBRztZQUNGOUosRUFBRSxFQUFFO2NBQUVxTCxFQUFFLEVBQUU7WUFBRSxDQUFFO1lBQUFyUCxRQUFBLGVBR2R0QixzREFBQSxDQUFDNEgsMkRBQWdCO2NBQ2ZxQyxPQUFPLGVBQ0xqSyxzREFBQSxDQUFDK0ssZ0RBQUs7Z0JBQ0ovVCxLQUFLLEVBQUU2WixRQUFRLENBQUM3WixLQUFNO2dCQUN0QnNPLEVBQUUsRUFBRTtrQkFDRixvQkFBb0IsRUFBRTtvQkFBRUksUUFBUSxFQUFFO2tCQUFHLENBQUM7a0JBQ3RDLGVBQWUsRUFBRTtvQkFBRTJCLEtBQUssRUFBRTtrQkFBVTtnQkFDdEM7Y0FBRSxDQUNILENBQ0Y7Y0FDRCtCLEtBQUssRUFBRXlILFFBQVEsQ0FBQ3pILEtBQU07Y0FDdEI5RCxFQUFFLEVBQUU7Z0JBQ0YsOEJBQThCLEVBQUU7a0JBQzlCSSxRQUFRLEVBQUU7Z0JBQ1o7Y0FDRjtZQUFFLENBQ0g7VUFBQywyQkFBQXhRLE1BQUEsQ0FsQjJCMmIsUUFBUSxDQUFDekgsS0FBSyxNQW1CeEMsQ0FDTjtRQUFDLENBQ1E7TUFBQyxDQUNGO0lBQUMsQ0FDTixDQUFDO0VBQUEsQ0FDUixDQUFDO0FBRVYsQ0FBQztBQUVEc0csY0FBYyxDQUFDM04sU0FBUyxHQUFHO0VBQ3pCNE4sUUFBUSxFQUFFOVAsd0RBQWMrRjtBQUMxQixDQUFDO0FBRUQsaUVBQWU4SixjQUFjOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDcEdzQjtBQUNLO0FBQ3JCO0FBU1o7QUFDcUM7QUFDYjtBQUNVO0FBQUE7QUFFekQsTUFBTXFCLGtCQUFrQixHQUFHamEsSUFBQSxJQUFrQjtFQUFBLElBQWpCO0lBQUU2WTtFQUFTLENBQUMsR0FBQTdZLElBQUE7RUFDdEMsTUFBTTtJQUNKOUMsTUFBTSxFQUFFO01BQUVnZDtJQUFxQixDQUFDO0lBQ2hDcmMsTUFBTSxFQUFFO01BQUVSLHdCQUF3QixFQUFFeWI7SUFBYTtFQUNuRCxDQUFDLEdBQUdWLHdEQUFXLENBQUVXLEtBQUssSUFBS0EsS0FBSyxDQUFDL1gsV0FBVyxJQUFJLENBQUMsQ0FBQyxFQUFFcVgscURBQVksQ0FBQztFQUVqRSxNQUFNLENBQUNXLFVBQVUsRUFBRUMsYUFBYSxDQUFDLEdBQUdwUSwrQ0FBUSxDQUFDLENBQUMsQ0FBQ2lRLFlBQVksQ0FBQ3ZhLE1BQU0sQ0FBQztFQUVuRSxNQUFNNGEsa0JBQWtCLEdBQUlqWixLQUFLLElBQUs7SUFDcEMsTUFBTWlhLFVBQVUsR0FBR3JCLFlBQVksYUFBWkEsWUFBWSxlQUFaQSxZQUFZLENBQUUxRixRQUFRLENBQUNsVCxLQUFLLENBQUMsR0FDNUM0WSxZQUFZLENBQUNqYixNQUFNLENBQUV1YyxDQUFDLElBQUtBLENBQUMsS0FBS2xhLEtBQUssQ0FBQyxHQUN2QyxDQUFDLEdBQUc0WSxZQUFZLEVBQUU1WSxLQUFLLENBQUM7SUFDNUIyWSxRQUFRLENBQUM7TUFDUCxDQUFDeGIsOERBQXdCLEdBQUc4YztJQUM5QixDQUFDLENBQUM7RUFDSixDQUFDO0VBRURILGdEQUFTLENBQUMsTUFBTTtJQUNkZixhQUFhLENBQUMsQ0FBQyxDQUFDSCxZQUFZLENBQUN2YSxNQUFNLENBQUM7RUFDdEMsQ0FBQyxFQUFFLENBQUN1YSxZQUFZLENBQUMsQ0FBQztFQUVsQixJQUFJLENBQUNvQixvQkFBb0IsSUFBSUEsb0JBQW9CLENBQUMzYixNQUFNLEtBQUssQ0FBQyxFQUFFLE9BQU8sSUFBSTtFQUUzRSxvQkFDRTZLLHVEQUFBLENBQUNrUCw4Q0FBRztJQUFBOU4sUUFBQSxnQkFDRnRCLHNEQUFBLENBQUNxUCxxREFBVTtNQUNUalksS0FBSyxFQUFDLGVBQWU7TUFDckJtSixTQUFTLEVBQUVULDZEQUFvQjtNQUMvQmdELE9BQU8sRUFBRUEsQ0FBQSxLQUFNaU4sYUFBYSxDQUFDLENBQUNELFVBQVUsQ0FBRTtNQUMxQ00sTUFBTSxlQUNKcFEsc0RBQUEsQ0FBQ3NQLHFEQUFVO1FBQUMsY0FBVyxRQUFRO1FBQUNlLGFBQWE7UUFBQS9PLFFBQUEsZUFDM0N0QixzREFBQSxDQUFDeVAsdUVBQWM7VUFDYjdOLEtBQUssRUFBRTtZQUNMME8sU0FBUyxFQUFFUixVQUFVLEdBQUcsZ0JBQWdCLEdBQUcsY0FBYztZQUN6RFMsVUFBVSxFQUFFO1VBQ2Q7UUFBRSxDQUNIO01BQUMsQ0FDUTtJQUNiLENBQ0YsQ0FBQyxlQUNGdlEsc0RBQUEsQ0FBQ3VQLG1EQUFRO01BQUNpQixFQUFFLEVBQUVWLFVBQVc7TUFBQ1csT0FBTyxFQUFDLE1BQU07TUFBQ0MsYUFBYTtNQUFBcFAsUUFBQSxlQUNwRHRCLHNEQUFBLENBQUN3UCxzREFBVztRQUNWbEssRUFBRSxFQUFFO1VBQ0ZxTCxFQUFFLEVBQUUsQ0FBQztVQUNMcEwsZUFBZSxFQUFFLFdBQVc7VUFDNUIsY0FBYyxFQUFFO1lBQ2RxTCxFQUFFLEVBQUU7VUFDTjtRQUNGLENBQUU7UUFBQXRQLFFBQUEsRUFFRDBQLG9CQUFvQixDQUFDeFcsR0FBRyxDQUFFMlcsRUFBRSxpQkFDM0JuUixzREFBQSxDQUFDb1AsOENBQUc7VUFBQzlKLEVBQUUsRUFBRTtZQUFFcUwsRUFBRSxFQUFFO1VBQUUsQ0FBRTtVQUFBclAsUUFBQSxlQUNqQnRCLHNEQUFBLENBQUM0SCwyREFBZ0I7WUFDZnFDLE9BQU8sZUFDTGpLLHNEQUFBLENBQUMwSCxtREFBUTtjQUNQYyxRQUFRLEVBQUVBLENBQUEsS0FBTXlILGtCQUFrQixDQUFDa0IsRUFBRSxDQUFDMVksRUFBRSxDQUFFO2NBQzFDOFEsT0FBTyxFQUFFcUcsWUFBWSxDQUFDMUYsUUFBUSxDQUFDaUgsRUFBRSxDQUFDMVksRUFBRSxDQUFFO2NBQ3RDNk0sRUFBRSxFQUFFO2dCQUNGLG9CQUFvQixFQUFFO2tCQUFFSSxRQUFRLEVBQUU7Z0JBQUcsQ0FBQztnQkFDdEMsZUFBZSxFQUFFO2tCQUNmMkIsS0FBSyxFQUFFO2dCQUNUO2NBQ0Y7WUFBRSxDQUNILENBQ0Y7WUFDRCtCLEtBQUssRUFBRStILEVBQUUsQ0FBQzNZLElBQUs7WUFDZjhNLEVBQUUsRUFBRTtjQUNGLDhCQUE4QixFQUFFO2dCQUM5QkksUUFBUSxFQUFFO2NBQ1o7WUFDRjtVQUFFLENBQ0g7UUFBQywyQkFBQXhRLE1BQUEsQ0FwQjZDaWMsRUFBRSxDQUFDM1ksSUFBSSxNQXFCbkQsQ0FDTjtNQUFDLENBQ1M7SUFBQyxDQUNOLENBQUM7RUFBQSxDQUNSLENBQUM7QUFFVixDQUFDO0FBRUR1WSxrQkFBa0IsQ0FBQ2hQLFNBQVMsR0FBRztFQUM3QjROLFFBQVEsRUFBRTlQLHdEQUFjK0Y7QUFDMUIsQ0FBQztBQUVELGlFQUFlbUwsa0JBQWtCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3BHMEI7QUFDeEI7QUFDSztBQUNvQjtBQVNyQztBQUN3QjtBQUNUO0FBQ1M7QUFDTztBQVEvQjtBQUMyQjtBQUNKO0FBQ0o7QUFDSTtBQUNFO0FBQUE7QUFFaEQsTUFBTWlCLE1BQU0sR0FBR2xiLElBQUEsSUFBdUQ7RUFBQSxJQUF0RDtJQUFFNlksUUFBUTtJQUFFc0MsT0FBTztJQUFFdGQsTUFBTTtJQUFFdWQ7RUFBbUIsQ0FBQyxHQUFBcGIsSUFBQTtFQUMvRCxNQUFNO0lBQUVMO0VBQUUsQ0FBQyxHQUFHK0wsNkRBQWMsQ0FBQyxDQUFDO0VBQzlCLE1BQU0sQ0FBQzJQLGNBQWMsRUFBRUMsaUJBQWlCLENBQUMsR0FBR3pTLCtDQUFRLENBQUMsS0FBSyxDQUFDO0VBQzNELE1BQU0sQ0FBQzBTLGNBQWMsRUFBRUMsaUJBQWlCLENBQUMsR0FBRzNTLCtDQUFRLENBQUMsS0FBSyxDQUFDO0VBQzNELE1BQU00UyxTQUFTLEdBQUduQiw2Q0FBTSxDQUFDLElBQUksQ0FBQztFQUM5QixNQUFNb0Isd0JBQXdCLEdBQUlDLEtBQUssSUFBSztJQUMxQyxJQUFJRixTQUFTLENBQUNHLE9BQU8sSUFBSSxDQUFDSCxTQUFTLENBQUNHLE9BQU8sQ0FBQ0MsUUFBUSxDQUFDRixLQUFLLENBQUNySSxNQUFNLENBQUMsRUFBRTtNQUNsRSxJQUFJK0gsY0FBYyxFQUFFO1FBQ2xCQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUM7UUFDeEJFLGlCQUFpQixDQUFDLEtBQUssQ0FBQztNQUMxQjtJQUNGO0VBQ0YsQ0FBQztFQUNEeEIsZ0RBQVMsQ0FBQyxNQUFNO0lBQ2Q5UixRQUFRLENBQUM0VCxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUVKLHdCQUF3QixFQUFFLEtBQUssQ0FBQztJQUNuRSxPQUFPLE1BQU07TUFDWHhULFFBQVEsQ0FBQzZULG1CQUFtQixDQUFDLE9BQU8sRUFBRUwsd0JBQXdCLEVBQUUsS0FBSyxDQUFDO0lBQ3hFLENBQUM7RUFDSCxDQUFDLEVBQUUsQ0FBQ0wsY0FBYyxDQUFDLENBQUM7RUFFcEIsTUFBTVcsTUFBTSxHQUFHQSxDQUFBLEtBQU07SUFDbkJWLGlCQUFpQixDQUFDLENBQUNELGNBQWMsQ0FBQztJQUNsQ0csaUJBQWlCLENBQUMsQ0FBQ0QsY0FBYyxDQUFDO0VBQ3BDLENBQUM7RUFFRCxNQUFNVSxpQkFBaUIsR0FBR0EsQ0FBQSxLQUFNO0lBQzlCZCxPQUFPLENBQUMsQ0FBQztJQUNUYSxNQUFNLENBQUMsQ0FBQztFQUNWLENBQUM7RUFFRCxvQkFDRTVTLHdEQUFBLENBQUNrUCw4Q0FBRztJQUFDN08sU0FBUyxFQUFFVCxnRUFBdUI7SUFBQ08sR0FBRyxFQUFFa1MsU0FBVTtJQUFBalIsUUFBQSxnQkFDckRwQix3REFBQSxDQUFDbVIsNERBQUs7TUFDSjdHLFVBQVUsRUFBQyxRQUFRO01BQ25CM1UsU0FBUyxFQUFDLEtBQUs7TUFDZnlQLEVBQUUsRUFBRTtRQUFFMk4sRUFBRSxFQUFFLENBQUM7UUFBRXJDLEVBQUUsRUFBRTtNQUFFLENBQUU7TUFDckI5TixPQUFPLEVBQUVnUSxNQUFPO01BQUF4UixRQUFBLGdCQUVoQnRCLHVEQUFBLENBQUN1UixnREFBSztRQUFDMkIsWUFBWSxFQUFFaEIsa0JBQW1CO1FBQUM3SyxLQUFLLEVBQUMsU0FBUztRQUFDL0IsRUFBRSxFQUFFO1VBQUU2TixFQUFFLEVBQUU7UUFBRSxDQUFFO1FBQUE3UixRQUFBLGVBQ3JFdEIsdURBQUEsQ0FBQ3NSLHVFQUFjO1VBQUM1TCxRQUFRLEVBQUMsT0FBTztVQUFDbkYsU0FBUyxFQUFFVCwyREFBaUJzVDtRQUFDLENBQUU7TUFBQyxDQUM1RCxDQUFDLGVBQ1JwVCx1REFBQTtRQUFNTyxTQUFTLEVBQUVULDREQUFtQjtRQUFBd0IsUUFBQSxFQUFFN0ssQ0FBQyxDQUFDLGVBQWU7TUFBQyxDQUFPLENBQUM7SUFBQSxDQUMzRCxDQUFDLGVBQ1J1Six1REFBQSxDQUFDb1AsOENBQUc7TUFDRjdPLFNBQVMsS0FBQXJMLE1BQUEsQ0FBSzRLLG9FQUEwQixPQUFBNUssTUFBQSxDQUFJNEssMERBQWdCLE9BQUE1SyxNQUFBLENBQzFEaWQsY0FBYyxHQUFHclMsK0RBQXFCLEdBQUcsRUFBRSxDQUMxQztNQUFBd0IsUUFBQSxlQUVIdEIsdURBQUEsQ0FBQzBSLGdEQUFLO1FBQUM4QixTQUFTLEVBQUUsQ0FBRTtRQUFDalQsU0FBUyxFQUFFVCx3RUFBK0I7UUFBQXdCLFFBQUEsZUFDN0RwQix3REFBQSxDQUFDc1IsK0NBQUk7VUFBQ25NLE9BQU8sRUFBQyxVQUFVO1VBQUEvRCxRQUFBLGdCQUN0QnRCLHVEQUFBLENBQUNxUCxxREFBVTtZQUNUalksS0FBSyxFQUFDLFNBQVM7WUFDZmdaLE1BQU0sZUFDSnBRLHVEQUFBLENBQUNrQyxpREFBTTtjQUNMbU8sYUFBYTtjQUNiaEwsT0FBTyxFQUFDLE1BQU07Y0FDZHZDLE9BQU8sRUFBRWlRLGlCQUFrQjtjQUMzQnhTLFNBQVMsRUFBRVQsNERBQW1CO2NBQUF3QixRQUFBLEVBRTdCN0ssQ0FBQyxDQUFDLGNBQWM7WUFBQyxDQUNaO1VBQ1QsQ0FDRixDQUFDLGVBQ0Z1Six1REFBQSxDQUFDeVIsa0RBQU8sSUFBRSxDQUFDLGVBQ1h6Uix1REFBQSxDQUFDK1EsMkRBQWtCO1lBQ2pCN0gsTUFBTSxFQUFFdlUsTUFBTSxDQUFDUiw4REFBd0IsQ0FBRTtZQUN6Q3diLFFBQVEsRUFBR08sU0FBUyxJQUFLUCxRQUFRLENBQUNPLFNBQVM7VUFBRSxDQUM5QyxDQUFDLGVBQ0ZsUSx1REFBQSxDQUFDMFAsd0RBQWM7WUFDYnhHLE1BQU0sRUFBRXZVLE1BQU0sQ0FBQ04sZ0VBQTBCLENBQUU7WUFDM0NzYixRQUFRLEVBQUdPLFNBQVMsSUFBS1AsUUFBUSxDQUFDTyxTQUFTO1VBQUUsQ0FDOUMsQ0FBQyxlQUNGbFEsdURBQUEsQ0FBQzZSLHNEQUFZO1lBQ1gzSSxNQUFNLEVBQUV2VSxNQUFNLENBQUNMLDZEQUF1QixDQUFFO1lBQ3hDcWIsUUFBUSxFQUFHTyxTQUFTLElBQUtQLFFBQVEsQ0FBQ08sU0FBUztVQUFFLENBQzlDLENBQUMsZUFDRmxRLHVEQUFBLENBQUM0UiwwREFBZ0I7WUFDZjFJLE1BQU0sRUFBRXZVLE1BQU0sQ0FBQ1AsNERBQXNCLENBQUU7WUFDdkN1YixRQUFRLEVBQUdPLFNBQVMsSUFBS1AsUUFBUSxDQUFDTyxTQUFTO1VBQUUsQ0FDOUMsQ0FBQyxlQUNGbFEsdURBQUEsQ0FBQytSLHlEQUFlO1lBQ2Q3SSxNQUFNLEVBQUV2VSxNQUFNLENBQUNKLDBEQUFvQixDQUFFO1lBQ3JDb2IsUUFBUSxFQUFHTyxTQUFTLElBQUtQLFFBQVEsQ0FBQ08sU0FBUztVQUFFLENBQzlDLENBQUMsZUFDRmxRLHVEQUFBLENBQUM4Uix3REFBYztZQUNiNUksTUFBTSxFQUFFdlUsTUFBTSxDQUFDSCwwREFBb0IsQ0FBRTtZQUNyQ21iLFFBQVEsRUFBR08sU0FBUyxJQUFLUCxRQUFRLENBQUNPLFNBQVM7VUFBRSxDQUM5QyxDQUFDO1FBQUEsQ0FDRTtNQUFDLENBQ0Y7SUFBQyxDQUNMLENBQUM7RUFBQSxDQUNILENBQUM7QUFFVixDQUFDO0FBRUQ4QixNQUFNLENBQUNqUSxTQUFTLEdBQUc7RUFDakI0TixRQUFRLEVBQUU5UCx3REFBYytGO0FBQzFCLENBQUM7QUFFRCxNQUFNK04sZUFBZSxHQUFHcGMsS0FBQTtFQUFBLElBQUM7SUFBRU87RUFBWSxDQUFDLEdBQUFQLEtBQUE7RUFBQSxPQUFNO0lBQzVDMUMsSUFBSSxFQUFFaUQsV0FBVyxDQUFDakQsSUFBSTtJQUN0QkYsTUFBTSxFQUFFbUQsV0FBVyxDQUFDbkQsTUFBTTtJQUMxQnVkLGtCQUFrQixFQUFFcGEsV0FBVyxDQUFDb2E7RUFDbEMsQ0FBQztBQUFBLENBQUM7QUFFRixpRUFBZVAsb0RBQU8sQ0FBQ2dDLGVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDM0IsTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDeElYO0FBQ2dCO0FBQ3JCO0FBVVo7QUFDcUM7QUFDYjtBQUNNO0FBQUE7QUFFckQsTUFBTUYsY0FBYyxHQUFHaGIsSUFBQSxJQUFrQjtFQUFBLElBQWpCO0lBQUU2WTtFQUFTLENBQUMsR0FBQTdZLElBQUE7RUFDbEMsTUFBTTtJQUNKbkMsTUFBTSxFQUFFO01BQUVILG9CQUFvQixFQUFFb2I7SUFBYTtFQUMvQyxDQUFDLEdBQUdWLHdEQUFXLENBQUVXLEtBQUssSUFBS0EsS0FBSyxDQUFDL1gsV0FBVyxJQUFJLENBQUMsQ0FBQyxFQUFFcVgscURBQVksQ0FBQztFQUVqRSxNQUFNLENBQUNXLFVBQVUsRUFBRUMsYUFBYSxDQUFDLEdBQUdwUSwrQ0FBUSxDQUFDLENBQUMsQ0FBQ2lRLFlBQVksQ0FBQztFQUU1RCxNQUFNSSxjQUFjLEdBQUcsQ0FDckI7SUFBRWhaLEtBQUssRUFBRSxNQUFNO0lBQUVvUyxLQUFLLEVBQUU7RUFBTyxDQUFDLEVBQ2hDO0lBQUVwUyxLQUFLLEVBQUUsTUFBTTtJQUFFb1MsS0FBSyxFQUFFO0VBQU8sQ0FBQyxDQUNqQztFQUVELE1BQU02RyxrQkFBa0IsR0FBR0EsQ0FBQzlGLEVBQUUsRUFBRW5ULEtBQUssS0FBSztJQUN4QyxNQUFNa1osU0FBUyxHQUFHbFosS0FBSztJQUN2QjJZLFFBQVEsQ0FBQztNQUNQLENBQUNuYiwwREFBb0IsR0FBRzBiO0lBQzFCLENBQUMsQ0FBQztFQUNKLENBQUM7RUFFRCxvQkFDRWhRLHVEQUFBLENBQUNrUCw4Q0FBRztJQUFBOU4sUUFBQSxnQkFDRnRCLHNEQUFBLENBQUNxUCxxREFBVTtNQUNUalksS0FBSyxFQUFDLGFBQWE7TUFDbkJtSixTQUFTLEVBQUVULDZEQUFvQjtNQUMvQmdELE9BQU8sRUFBRUEsQ0FBQSxLQUFNaU4sYUFBYSxDQUFDLENBQUNELFVBQVUsQ0FBRTtNQUMxQ00sTUFBTSxlQUNKcFEsc0RBQUEsQ0FBQ3NQLHFEQUFVO1FBQUMsY0FBVyxRQUFRO1FBQUNlLGFBQWE7UUFBQS9PLFFBQUEsZUFDM0N0QixzREFBQSxDQUFDeVAsdUVBQWM7VUFDYjdOLEtBQUssRUFBRTtZQUNMME8sU0FBUyxFQUFFUixVQUFVLEdBQUcsZ0JBQWdCLEdBQUcsY0FBYztZQUN6RFMsVUFBVSxFQUFFO1VBQ2Q7UUFBRSxDQUNIO01BQUMsQ0FDUTtJQUNiLENBQ0YsQ0FBQyxlQUNGdlEsc0RBQUEsQ0FBQ3VQLG1EQUFRO01BQUNpQixFQUFFLEVBQUVWLFVBQVc7TUFBQ1csT0FBTyxFQUFDLE1BQU07TUFBQ0MsYUFBYTtNQUFBcFAsUUFBQSxlQUNwRHRCLHNEQUFBLENBQUN3UCxzREFBVztRQUNWbEssRUFBRSxFQUFFO1VBQ0ZxTCxFQUFFLEVBQUUsQ0FBQztVQUNMcEwsZUFBZSxFQUFFLFdBQVc7VUFDNUIsY0FBYyxFQUFFO1lBQ2RxTCxFQUFFLEVBQUU7VUFDTjtRQUNGLENBQUU7UUFBQXRQLFFBQUEsZUFFRnRCLHNEQUFBLENBQUNnTCxxREFBVTtVQUFDaFUsS0FBSyxFQUFFNFksWUFBYTtVQUFDcEgsUUFBUSxFQUFFeUgsa0JBQW1CO1VBQUEzTyxRQUFBLEVBQzNEME8sY0FBYyxDQUFDeFYsR0FBRyxDQUFFcVcsUUFBUSxpQkFDM0I3USxzREFBQSxDQUFDb1AsOENBQUc7WUFDRjlKLEVBQUUsRUFBRTtjQUFFcUwsRUFBRSxFQUFFO1lBQUUsQ0FBRTtZQUFBclAsUUFBQSxlQUdkdEIsc0RBQUEsQ0FBQzRILDJEQUFnQjtjQUNmcUMsT0FBTyxlQUNMakssc0RBQUEsQ0FBQytLLGdEQUFLO2dCQUNKL1QsS0FBSyxFQUFFNlosUUFBUSxDQUFDN1osS0FBTTtnQkFDdEJzTyxFQUFFLEVBQUU7a0JBQ0Ysb0JBQW9CLEVBQUU7b0JBQUVJLFFBQVEsRUFBRTtrQkFBRyxDQUFDO2tCQUN0QyxlQUFlLEVBQUU7b0JBQUUyQixLQUFLLEVBQUU7a0JBQVU7Z0JBQ3RDO2NBQUUsQ0FDSCxDQUNGO2NBQ0QrQixLQUFLLEVBQUV5SCxRQUFRLENBQUN6SCxLQUFNO2NBQ3RCOUQsRUFBRSxFQUFFO2dCQUNGLDhCQUE4QixFQUFFO2tCQUM5QkksUUFBUSxFQUFFO2dCQUNaO2NBQ0Y7WUFBRSxDQUNIO1VBQUMsMkJBQUF4USxNQUFBLENBbEIyQjJiLFFBQVEsQ0FBQ3pILEtBQUssTUFtQnhDLENBQ047UUFBQyxDQUNRO01BQUMsQ0FDRjtJQUFDLENBQ04sQ0FBQztFQUFBLENBQ1IsQ0FBQztBQUVWLENBQUM7QUFFRDBJLGNBQWMsQ0FBQy9QLFNBQVMsR0FBRztFQUN6QjROLFFBQVEsRUFBRTlQLHdEQUFjK0Y7QUFDMUIsQ0FBQztBQUVELGlFQUFla00sY0FBYzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ25HOEI7QUFDSDtBQUNyQjtBQVFaO0FBQ3FDO0FBQ2I7QUFDTTtBQUFBO0FBRXJELE1BQU1DLGVBQWUsR0FBR2piLElBQUEsSUFBa0I7RUFBQSxJQUFqQjtJQUFFNlk7RUFBUyxDQUFDLEdBQUE3WSxJQUFBO0VBQ25DLE1BQU07SUFDSm5DLE1BQU0sRUFBRTtNQUFFSixvQkFBb0IsRUFBRXFiO0lBQWE7RUFDL0MsQ0FBQyxHQUFHVix3REFBVyxDQUFFVyxLQUFLLElBQUtBLEtBQUssQ0FBQy9YLFdBQVcsSUFBSSxDQUFDLENBQUMsRUFBRXFYLHFEQUFZLENBQUM7RUFFakUsTUFBTSxDQUFDVyxVQUFVLEVBQUVDLGFBQWEsQ0FBQyxHQUFHcFEsK0NBQVEsQ0FBQyxDQUFDLENBQUNpUSxZQUFZLENBQUM7RUFDNUQsTUFBTSxDQUFDZ0UsU0FBUyxFQUFFQyxZQUFZLENBQUMsR0FBR2xVLCtDQUFRLENBQUNpUSxZQUFZLElBQUksRUFBRSxDQUFDO0VBRTlELE1BQU1rRSxhQUFhLEdBQUcxQyw2Q0FBTSxDQUFDLElBQUksQ0FBQztFQUNsQyxNQUFNMkMsY0FBYyxHQUFHLEdBQUc7RUFFMUJqRCxnREFBUyxDQUFDLE1BQU07SUFDZCtDLFlBQVksQ0FBQ2pFLFlBQVksSUFBSSxFQUFFLENBQUM7SUFDaENHLGFBQWEsQ0FBQyxDQUFDLENBQUNILFlBQVksQ0FBQztFQUMvQixDQUFDLEVBQUUsQ0FBQ0EsWUFBWSxDQUFDLENBQUM7RUFFbEIsTUFBTUssa0JBQWtCLEdBQUk5RixFQUFFLElBQUs7SUFDakMsTUFBTTZKLFlBQVksR0FBRzdKLEVBQUUsQ0FBQ0MsTUFBTSxDQUFDcFQsS0FBSztJQUNwQztJQUNBNmMsWUFBWSxDQUFDRyxZQUFZLENBQUM7O0lBRTFCO0lBQ0EsSUFBSUYsYUFBYSxDQUFDcEIsT0FBTyxFQUFFO01BQ3pCdUIsWUFBWSxDQUFDSCxhQUFhLENBQUNwQixPQUFPLENBQUM7SUFDckM7O0lBRUE7SUFDQW9CLGFBQWEsQ0FBQ3BCLE9BQU8sR0FBR3ZPLFVBQVUsQ0FBQyxNQUFNO01BQ3ZDd0wsUUFBUSxDQUFDO1FBQ1AsQ0FBQ3BiLDBEQUFvQixHQUFHeWY7TUFDMUIsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxFQUFFRCxjQUFjLENBQUM7RUFDcEIsQ0FBQztFQUVEakQsZ0RBQVMsQ0FBQyxNQUFNO0lBQ2Q7SUFDQSxJQUFJZ0QsYUFBYSxDQUFDcEIsT0FBTyxFQUFFO01BQ3pCdUIsWUFBWSxDQUFDSCxhQUFhLENBQUNwQixPQUFPLENBQUM7SUFDckM7RUFDRixDQUFDLEVBQUUsRUFBRSxDQUFDO0VBRU4sb0JBQ0V4Uyx1REFBQSxDQUFDa1AsOENBQUc7SUFBQTlOLFFBQUEsZ0JBQ0Z0QixzREFBQSxDQUFDcVAscURBQVU7TUFDVGpZLEtBQUssRUFBQyxZQUFZO01BQ2xCbUosU0FBUyxFQUFFVCw2REFBb0I7TUFDL0JnRCxPQUFPLEVBQUVBLENBQUEsS0FBTWlOLGFBQWEsQ0FBQyxDQUFDRCxVQUFVLENBQUU7TUFDMUNNLE1BQU0sZUFDSnBRLHNEQUFBLENBQUNzUCxxREFBVTtRQUFDLGNBQVcsUUFBUTtRQUFDZSxhQUFhO1FBQUEvTyxRQUFBLGVBQzNDdEIsc0RBQUEsQ0FBQ3lQLHVFQUFjO1VBQ2I3TixLQUFLLEVBQUU7WUFDTDBPLFNBQVMsRUFBRVIsVUFBVSxHQUFHLGdCQUFnQixHQUFHLGNBQWM7WUFDekRTLFVBQVUsRUFBRTtVQUNkO1FBQUUsQ0FDSDtNQUFDLENBQ1E7SUFDYixDQUNGLENBQUMsZUFDRnZRLHNEQUFBLENBQUN1UCxtREFBUTtNQUFDaUIsRUFBRSxFQUFFVixVQUFXO01BQUNXLE9BQU8sRUFBQyxNQUFNO01BQUNDLGFBQWE7TUFBQXBQLFFBQUEsZUFDcER0QixzREFBQSxDQUFDd1Asc0RBQVc7UUFDVmxLLEVBQUUsRUFBRTtVQUNGQyxlQUFlLEVBQUUsV0FBVztVQUM1QixjQUFjLEVBQUU7WUFDZG9MLEVBQUUsRUFBRTtVQUNOO1FBQ0YsQ0FBRTtRQUFBclAsUUFBQSxlQUVGdEIsc0RBQUEsQ0FBQ2tMLG9EQUFTO1VBQ1I3RixPQUFPLEVBQUMsVUFBVTtVQUNsQjZPLFdBQVcsRUFBQyxrQkFBa0I7VUFDOUJsZCxLQUFLLEVBQUU0YyxTQUFVO1VBQ2pCcEwsUUFBUSxFQUFFeUgsa0JBQW1CO1VBQzdCbkcsU0FBUztRQUFBLENBQ1Y7TUFBQyxDQUNTO0lBQUMsQ0FDTixDQUFDO0VBQUEsQ0FDUixDQUFDO0FBRVYsQ0FBQztBQUVEaUksZUFBZSxDQUFDaFEsU0FBUyxHQUFHO0VBQzFCNE4sUUFBUSxFQUFFOVAsd0RBQWMrRjtBQUMxQixDQUFDO0FBRUQsaUVBQWVtTSxlQUFlOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ25HcUI7QUFDaEI7QUFDcUI7QUFDVjtBQUNNO0FBQ0Y7QUFDRjtBQUNaO0FBQ1c7QUFDUztBQUFBO0FBRXhELE1BQU13QyxlQUFlLEdBQUdKLDREQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTztFQUMzQ0ssUUFBUSxFQUFFLFVBQVU7RUFDcEJDLFdBQVcsRUFBRSxHQUFHO0VBQ2hCQyxVQUFVLEVBQUUsR0FBRztFQUNmaFIsS0FBSyxFQUFFLE1BQU07RUFDYjdCLE9BQU8sRUFBRTtBQUNYLENBQUMsQ0FBQyxDQUFDO0FBQ0gsTUFBTThTLGlCQUFpQixHQUFHUiw0REFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU87RUFDN0NTLE1BQU0sRUFBRSxNQUFNO0VBQ2RKLFFBQVEsRUFBRSxVQUFVO0VBQ3BCM1MsT0FBTyxFQUFFLE1BQU07RUFDZjJJLFVBQVUsRUFBRSxRQUFRO0VBQ3BCcUssY0FBYyxFQUFFO0FBQ2xCLENBQUMsQ0FBQyxDQUFDO0FBQ0gsTUFBTUMsZUFBZSxHQUFHWCw0REFBTSxDQUFDRyxnRUFBUyxDQUFDLENBQUMsT0FBTztFQUMvQ2pOLEtBQUssRUFBRSxTQUFTO0VBQ2hCME4sWUFBWSxFQUFFLCtCQUErQjtFQUM3Q0MsV0FBVyxFQUFFLE1BQU07RUFDbkJDLFlBQVksRUFBRSxNQUFNO0VBQ3BCdlAsUUFBUSxFQUFFO0FBQ1osQ0FBQyxDQUFDLENBQUM7QUFDSCxNQUFNd1AsZ0JBQWdCLEdBQUdmLDREQUFNLENBQUNFLGtFQUFTLENBQUMsQ0FBQyxPQUFPO0VBQ2hEYyxPQUFPLEVBQUUsS0FBSztFQUNkelAsUUFBUSxFQUFFLE9BQU87RUFDakJrUCxNQUFNLEVBQUUsTUFBTTtFQUNkSixRQUFRLEVBQUUsVUFBVTtFQUNwQlksR0FBRyxFQUFFLEdBQUc7RUFDUkMsS0FBSyxFQUFFLEdBQUc7RUFDVnhULE9BQU8sRUFBRSxNQUFNO0VBQ2YySSxVQUFVLEVBQUUsUUFBUTtFQUNwQnFLLGNBQWMsRUFBRSxRQUFRO0VBQ3hCUyxNQUFNLEVBQUUsU0FBUztFQUNqQkMsTUFBTSxFQUFFO0FBQ1YsQ0FBQyxDQUFDLENBQUM7QUFFSCxNQUFNQyxNQUFNLEdBQUcxZSxJQUFBLElBQWtCO0VBQUEsSUFBakI7SUFBRTJlO0VBQVMsQ0FBQyxHQUFBM2UsSUFBQTtFQUMxQixNQUFNO0lBQUVuQztFQUFPLENBQUMsR0FBR3VhLHdEQUFXLENBQzNCVyxLQUFLLElBQUtBLEtBQUssQ0FBQy9YLFdBQVcsSUFBSSxDQUFDLENBQUMsRUFDbENxWCxxREFDRixDQUFDO0VBQ0QsTUFBTTtJQUFFMVk7RUFBRSxDQUFDLEdBQUcrTCw2REFBYyxDQUFDLENBQUM7RUFDOUIsTUFBTSxDQUFDa1QsV0FBVyxFQUFFQyxjQUFjLENBQUMsR0FBR2hXLCtDQUFRLENBQUMsRUFBRSxDQUFDO0VBQ2xELE1BQU1pVyxZQUFZLEdBQUcsQ0FBQyxDQUFDamhCLE1BQU0sQ0FBQ0YsNkRBQXVCLENBQUM7RUFFdEQsTUFBTW9oQixTQUFTLEdBQUlwRCxLQUFLLElBQUs7SUFDM0IsTUFBTTtNQUNKMWIsR0FBRztNQUNIK2UsV0FBVyxFQUFFO1FBQ1gxTCxNQUFNLEVBQUU7VUFBRXBUO1FBQU07TUFDbEI7SUFDRixDQUFDLEdBQUd5YixLQUFLO0lBQ1QsSUFBSTFiLEdBQUcsS0FBSyxPQUFPLEVBQUU7TUFDbkIwZSxRQUFRLENBQUM7UUFDUCxDQUFDaGhCLDZEQUF1QixHQUFHdUM7TUFDN0IsQ0FBQyxDQUFDO0lBQ0o7RUFDRixDQUFDO0VBQ0QsTUFBTStlLFdBQVcsR0FBR0EsQ0FBQSxLQUFNO0lBQ3hCSixjQUFjLENBQUMsRUFBRSxDQUFDO0lBQ2xCRixRQUFRLENBQUM7TUFDUCxDQUFDaGhCLDZEQUF1QixHQUFHO0lBQzdCLENBQUMsQ0FBQztFQUNKLENBQUM7RUFFRHFjLGdEQUFTLENBQUMsTUFBTTtJQUNkO0lBQ0E2RSxjQUFjLENBQUNoaEIsTUFBTSxDQUFDRiw2REFBdUIsQ0FBQyxDQUFDO0VBQ2pELENBQUMsRUFBRSxDQUFDRSxNQUFNLENBQUNGLDZEQUF1QixDQUFDLENBQUMsQ0FBQztFQUVyQyxvQkFDRXVMLHVEQUFBLENBQUNvUCw4Q0FBRztJQUFBOU4sUUFBQSxlQUNGcEIsd0RBQUEsQ0FBQ3FVLGVBQWU7TUFBQWpULFFBQUEsR0FDYnNVLFlBQVksaUJBQ1g1Vix1REFBQSxDQUFDa1YsZ0JBQWdCO1FBQUNwUyxPQUFPLEVBQUVpVCxXQUFZO1FBQUF6VSxRQUFBLGVBQ3JDdEIsdURBQUEsQ0FBQ3FVLGtFQUFTLElBQUU7TUFBQyxDQUNHLENBQ25CLGVBQ0RyVSx1REFBQSxDQUFDMlUsaUJBQWlCO1FBQUFyVCxRQUFBLGVBQ2hCdEIsdURBQUEsQ0FBQ29VLG1FQUFVLElBQUU7TUFBQyxDQUNHLENBQUMsZUFDcEJwVSx1REFBQSxDQUFDOFUsZUFBZTtRQUNkWixXQUFXLEVBQUV6ZCxDQUFDLENBQUMsMkJBQTJCLENBQUU7UUFDNUN1ZixVQUFVLEVBQUU7VUFBRSxZQUFZLEVBQUU7UUFBUyxDQUFFO1FBQ3ZDaGYsS0FBSyxFQUFFMGUsV0FBWTtRQUNuQmxOLFFBQVEsRUFBRzVQLENBQUMsSUFBSytjLGNBQWMsQ0FBQy9jLENBQUMsQ0FBQ3dSLE1BQU0sQ0FBQ3BULEtBQUssQ0FBRTtRQUNoRDZlLFNBQVMsRUFBRUE7TUFBVSxDQUN0QixDQUFDO0lBQUEsQ0FDYTtFQUFDLENBQ2YsQ0FBQztBQUVWLENBQUM7QUFFREwsTUFBTSxDQUFDelQsU0FBUyxHQUFHO0VBQ2pCMFQsUUFBUSxFQUFFNVYsd0RBQWMrRjtBQUMxQixDQUFDO0FBRUQsaUVBQWU0UCxNQUFNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUMzR3NDO0FBQ25CO0FBQ1c7QUFDYTtBQUNqQjtBQUNBO0FBQUE7QUFFL0MsTUFBTVUsSUFBSSxHQUFHcGYsSUFBQSxJQUFnQjtFQUFBLElBQWY7SUFBRXFmO0VBQU8sQ0FBQyxHQUFBcmYsSUFBQTtFQUN0QixNQUFNO0lBQUVMO0VBQUUsQ0FBQyxHQUFHK0wsNkRBQWMsQ0FBQyxDQUFDO0VBQzlCLE1BQU0sQ0FBQzRULFFBQVEsRUFBRUMsV0FBVyxDQUFDLEdBQUcxVywrQ0FBUSxDQUFDLEtBQUssQ0FBQztFQUMvQyxNQUFNMlcsT0FBTyxHQUFHbEYsNkNBQU0sQ0FBQyxJQUFJLENBQUM7RUFDNUIsTUFBTW1GLHNCQUFzQixHQUFJOUQsS0FBSyxJQUFLO0lBQ3hDLElBQUk2RCxPQUFPLENBQUM1RCxPQUFPLElBQUksQ0FBQzRELE9BQU8sQ0FBQzVELE9BQU8sQ0FBQ0MsUUFBUSxDQUFDRixLQUFLLENBQUNySSxNQUFNLENBQUMsRUFBRTtNQUM5RGlNLFdBQVcsQ0FBQyxLQUFLLENBQUM7SUFDcEI7RUFDRixDQUFDO0VBQ0R2RixnREFBUyxDQUFDLE1BQU07SUFDZDlSLFFBQVEsQ0FBQzRULGdCQUFnQixDQUFDLE9BQU8sRUFBRTJELHNCQUFzQixFQUFFLEtBQUssQ0FBQztJQUNqRSxPQUFPLE1BQU07TUFDWHZYLFFBQVEsQ0FBQzZULG1CQUFtQixDQUFDLE9BQU8sRUFBRTBELHNCQUFzQixFQUFFLEtBQUssQ0FBQztJQUN0RSxDQUFDO0VBQ0gsQ0FBQyxFQUFFLENBQUNILFFBQVEsQ0FBQyxDQUFDO0VBRWQsTUFBTXRELE1BQU0sR0FBR0EsQ0FBQSxLQUFNO0lBQ25CdUQsV0FBVyxDQUFDLENBQUNELFFBQVEsQ0FBQztFQUN4QixDQUFDO0VBQ0Qsb0JBQ0VsVyx1REFBQSxDQUFDa1AsOENBQUc7SUFBQzdPLFNBQVMsRUFBRVQsOERBQXFCO0lBQUNnRCxPQUFPLEVBQUVnUSxNQUFPO0lBQUF4UixRQUFBLGdCQUNwRHBCLHVEQUFBLENBQUNtUiw0REFBSztNQUNKaFIsR0FBRyxFQUFFaVcsT0FBUTtNQUNiOUwsVUFBVSxFQUFDLFFBQVE7TUFDbkIzVSxTQUFTLEVBQUMsS0FBSztNQUNmeVAsRUFBRSxFQUFFO1FBQUUyTixFQUFFLEVBQUUsQ0FBQztRQUFFckMsRUFBRSxFQUFFO01BQUUsQ0FBRTtNQUFBdFAsUUFBQSxnQkFFckJ0QixzREFBQSxDQUFDaVcseUVBQWdCO1FBQUN2USxRQUFRLEVBQUMsT0FBTztRQUFDbkYsU0FBUyxFQUFFVCx5REFBZTJXO01BQUMsQ0FBRSxDQUFDLGVBQ2pFelcsc0RBQUE7UUFBTU8sU0FBUyxFQUFFVCwwREFBaUI7UUFBQXdCLFFBQUEsRUFBRTdLLENBQUMsQ0FBQyxXQUFXO01BQUMsQ0FBTyxDQUFDO0lBQUEsQ0FDckQsQ0FBQyxFQUNQMmYsUUFBUSxpQkFDUGxXLHVEQUFBLENBQUN3UixnREFBSztNQUNKOEIsU0FBUyxFQUFFLENBQUU7TUFDYmpULFNBQVMsS0FBQXJMLE1BQUEsQ0FBSzRLLGtFQUF3QixPQUFBNUssTUFBQSxDQUFJNEssMERBQWdCLENBQUc7TUFBQXdCLFFBQUEsZ0JBRTdEdEIsc0RBQUEsQ0FBQ2tDLGlEQUFNO1FBQ0xtTyxhQUFhO1FBQ2JoTCxPQUFPLEVBQUMsTUFBTTtRQUNkOUUsU0FBUyxFQUFFVCxzREFBYTtRQUN4QmdELE9BQU8sRUFBRUEsQ0FBQSxLQUFNcVQsTUFBTSxDQUFDO1VBQUV0Z0IsU0FBUyxFQUFFLE1BQU07VUFBRTJDLElBQUksRUFBRTtRQUFVLENBQUMsQ0FBRTtRQUFBOEksUUFBQSxFQUU3RDdLLENBQUMsQ0FBQyxnQkFBZ0I7TUFBQyxDQUNkLENBQUMsZUFDVHVKLHNEQUFBLENBQUNrQyxpREFBTTtRQUNMbU8sYUFBYTtRQUNiaEwsT0FBTyxFQUFDLE1BQU07UUFDZDlFLFNBQVMsRUFBRVQsc0RBQWE7UUFDeEJnRCxPQUFPLEVBQUVBLENBQUEsS0FBTXFULE1BQU0sQ0FBQztVQUFFdGdCLFNBQVMsRUFBRSxLQUFLO1VBQUUyQyxJQUFJLEVBQUU7UUFBVSxDQUFDLENBQUU7UUFBQThJLFFBQUEsRUFFNUQ3SyxDQUFDLENBQUMsZ0JBQWdCO01BQUMsQ0FDZCxDQUFDO0lBQUEsQ0FDSixDQUNSO0VBQUEsQ0FDRSxDQUFDO0FBRVYsQ0FBQztBQUVELGlFQUFleWYsSUFBSTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ2hFcUI7QUFDZ0I7QUFDckI7QUFVWjtBQUNxQztBQUNiO0FBQ1M7QUFBQTtBQUV4RCxNQUFNckUsWUFBWSxHQUFHL2EsSUFBQSxJQUFrQjtFQUFBLElBQWpCO0lBQUU2WTtFQUFTLENBQUMsR0FBQTdZLElBQUE7RUFDaEMsTUFBTTtJQUNKbkMsTUFBTSxFQUFFO01BQUVMLHVCQUF1QixFQUFFc2I7SUFBYTtFQUNsRCxDQUFDLEdBQUdWLHdEQUFXLENBQUVXLEtBQUssSUFBS0EsS0FBSyxDQUFDL1gsV0FBVyxJQUFJLENBQUMsQ0FBQyxFQUFFcVgscURBQVksQ0FBQztFQUVqRSxNQUFNLENBQUNXLFVBQVUsRUFBRUMsYUFBYSxDQUFDLEdBQUdwUSwrQ0FBUSxDQUFDLENBQUMsQ0FBQ2lRLFlBQVksQ0FBQztFQUU1RCxNQUFNSSxjQUFjLEdBQUcsQ0FDckI7SUFBRWhaLEtBQUssRUFBRSxZQUFZO0lBQUVvUyxLQUFLLEVBQUU7RUFBYSxDQUFDLEVBQzVDO0lBQUVwUyxLQUFLLEVBQUUsVUFBVTtJQUFFb1MsS0FBSyxFQUFFO0VBQVcsQ0FBQyxDQUN6QztFQUVELE1BQU02RyxrQkFBa0IsR0FBR0EsQ0FBQzlGLEVBQUUsRUFBRW5ULEtBQUssS0FBSztJQUN4QyxNQUFNa1osU0FBUyxHQUFHbFosS0FBSztJQUN2QjJZLFFBQVEsQ0FBQztNQUNQLENBQUNyYiw2REFBdUIsR0FBRzRiO0lBQzdCLENBQUMsQ0FBQztFQUNKLENBQUM7RUFFRCxvQkFDRWhRLHVEQUFBLENBQUNrUCw4Q0FBRztJQUFBOU4sUUFBQSxnQkFDRnRCLHNEQUFBLENBQUNxUCxxREFBVTtNQUNUalksS0FBSyxFQUFDLFFBQVE7TUFDZG1KLFNBQVMsRUFBRVQsNkRBQW9CO01BQy9CZ0QsT0FBTyxFQUFFQSxDQUFBLEtBQU1pTixhQUFhLENBQUMsQ0FBQ0QsVUFBVSxDQUFFO01BQzFDTSxNQUFNLGVBQ0pwUSxzREFBQSxDQUFDc1AscURBQVU7UUFBQyxjQUFXLFFBQVE7UUFBQ2UsYUFBYTtRQUFBL08sUUFBQSxlQUMzQ3RCLHNEQUFBLENBQUN5UCx1RUFBYztVQUNiN04sS0FBSyxFQUFFO1lBQ0wwTyxTQUFTLEVBQUVSLFVBQVUsR0FBRyxnQkFBZ0IsR0FBRyxjQUFjO1lBQ3pEUyxVQUFVLEVBQUU7VUFDZDtRQUFFLENBQ0g7TUFBQyxDQUNRO0lBQ2IsQ0FDRixDQUFDLGVBQ0Z2USxzREFBQSxDQUFDdVAsbURBQVE7TUFBQ2lCLEVBQUUsRUFBRVYsVUFBVztNQUFDVyxPQUFPLEVBQUMsTUFBTTtNQUFDQyxhQUFhO01BQUFwUCxRQUFBLGVBQ3BEdEIsc0RBQUEsQ0FBQ3dQLHNEQUFXO1FBQ1ZsSyxFQUFFLEVBQUU7VUFDRnFMLEVBQUUsRUFBRSxDQUFDO1VBQ0xwTCxlQUFlLEVBQUUsV0FBVztVQUM1QixjQUFjLEVBQUU7WUFDZHFMLEVBQUUsRUFBRTtVQUNOO1FBQ0YsQ0FBRTtRQUFBdFAsUUFBQSxlQUVGdEIsc0RBQUEsQ0FBQ2dMLHFEQUFVO1VBQUNoVSxLQUFLLEVBQUU0WSxZQUFhO1VBQUNwSCxRQUFRLEVBQUV5SCxrQkFBbUI7VUFBQTNPLFFBQUEsRUFDM0QwTyxjQUFjLENBQUN4VixHQUFHLENBQUVxVyxRQUFRLGlCQUMzQjdRLHNEQUFBLENBQUNvUCw4Q0FBRztZQUNGOUosRUFBRSxFQUFFO2NBQUVxTCxFQUFFLEVBQUU7WUFBRSxDQUFFO1lBQUFyUCxRQUFBLGVBR2R0QixzREFBQSxDQUFDNEgsMkRBQWdCO2NBQ2ZxQyxPQUFPLGVBQ0xqSyxzREFBQSxDQUFDK0ssZ0RBQUs7Z0JBQ0ovVCxLQUFLLEVBQUU2WixRQUFRLENBQUM3WixLQUFNO2dCQUN0QnNPLEVBQUUsRUFBRTtrQkFDRixvQkFBb0IsRUFBRTtvQkFBRUksUUFBUSxFQUFFO2tCQUFHLENBQUM7a0JBQ3RDLGVBQWUsRUFBRTtvQkFBRTJCLEtBQUssRUFBRTtrQkFBVTtnQkFDdEM7Y0FBRSxDQUNILENBQ0Y7Y0FDRCtCLEtBQUssRUFBRXlILFFBQVEsQ0FBQ3pILEtBQU07Y0FDdEI5RCxFQUFFLEVBQUU7Z0JBQ0YsOEJBQThCLEVBQUU7a0JBQzlCSSxRQUFRLEVBQUU7Z0JBQ1o7Y0FDRjtZQUFFLENBQ0g7VUFBQywyQkFBQXhRLE1BQUEsQ0FsQjJCMmIsUUFBUSxDQUFDekgsS0FBSyxNQW1CeEMsQ0FDTjtRQUFDLENBQ1E7TUFBQyxDQUNGO0lBQUMsQ0FDTixDQUFDO0VBQUEsQ0FDUixDQUFDO0FBRVYsQ0FBQztBQUVEeUksWUFBWSxDQUFDOVAsU0FBUyxHQUFHO0VBQ3ZCNE4sUUFBUSxFQUFFOVAsd0RBQWMrRjtBQUMxQixDQUFDO0FBRUQsaUVBQWVpTSxZQUFZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDbkd3QjtBQUNLO0FBQ3JCO0FBU1o7QUFDcUM7QUFDYjtBQUNRO0FBQUE7QUFFdkQsTUFBTUQsZ0JBQWdCLEdBQUc5YSxJQUFBLElBQWtCO0VBQUEsSUFBakI7SUFBRTZZO0VBQVMsQ0FBQyxHQUFBN1ksSUFBQTtFQUNwQyxNQUFNO0lBQ0o5QyxNQUFNLEVBQUU7TUFBRTRpQjtJQUFhLENBQUM7SUFDeEJqaUIsTUFBTSxFQUFFO01BQUVQLHNCQUFzQixFQUFFd2I7SUFBYTtFQUNqRCxDQUFDLEdBQUdWLHdEQUFXLENBQUVXLEtBQUssSUFBS0EsS0FBSyxDQUFDL1gsV0FBVyxJQUFJLENBQUMsQ0FBQyxFQUFFcVgscURBQVksQ0FBQztFQUVqRSxNQUFNLENBQUNXLFVBQVUsRUFBRUMsYUFBYSxDQUFDLEdBQUdwUSwrQ0FBUSxDQUFDLENBQUMsQ0FBQ2lRLFlBQVksQ0FBQ3ZhLE1BQU0sQ0FBQztFQUVuRSxNQUFNNGEsa0JBQWtCLEdBQUlqWixLQUFLLElBQUs7SUFDcEMsTUFBTWlhLFVBQVUsR0FBR3JCLFlBQVksYUFBWkEsWUFBWSxlQUFaQSxZQUFZLENBQUUxRixRQUFRLENBQUNsVCxLQUFLLENBQUMsR0FDNUM0WSxZQUFZLENBQUNqYixNQUFNLENBQUV1YyxDQUFDLElBQUtBLENBQUMsS0FBS2xhLEtBQUssQ0FBQyxHQUN2QyxDQUFDLEdBQUc0WSxZQUFZLEVBQUU1WSxLQUFLLENBQUM7SUFDNUIyWSxRQUFRLENBQUM7TUFDUCxDQUFDdmIsNERBQXNCLEdBQUc2YztJQUM1QixDQUFDLENBQUM7RUFDSixDQUFDO0VBRURILGdEQUFTLENBQUMsTUFBTTtJQUNkZixhQUFhLENBQUMsQ0FBQyxDQUFDSCxZQUFZLENBQUN2YSxNQUFNLENBQUM7RUFDdEMsQ0FBQyxFQUFFLENBQUN1YSxZQUFZLENBQUMsQ0FBQztFQUVsQixvQkFDRTFQLHVEQUFBLENBQUNrUCw4Q0FBRztJQUFBOU4sUUFBQSxnQkFDRnRCLHNEQUFBLENBQUNxUCxxREFBVTtNQUNUalksS0FBSyxFQUFDLGFBQWE7TUFDbkJtSixTQUFTLEVBQUVULDZEQUFvQjtNQUMvQmdELE9BQU8sRUFBRUEsQ0FBQSxLQUFNaU4sYUFBYSxDQUFDLENBQUNELFVBQVUsQ0FBRTtNQUMxQ00sTUFBTSxlQUNKcFEsc0RBQUEsQ0FBQ3NQLHFEQUFVO1FBQUMsY0FBVyxRQUFRO1FBQUNlLGFBQWE7UUFBQS9PLFFBQUEsZUFDM0N0QixzREFBQSxDQUFDeVAsdUVBQWM7VUFDYjdOLEtBQUssRUFBRTtZQUNMME8sU0FBUyxFQUFFUixVQUFVLEdBQUcsZ0JBQWdCLEdBQUcsY0FBYztZQUN6RFMsVUFBVSxFQUFFO1VBQ2Q7UUFBRSxDQUNIO01BQUMsQ0FDUTtJQUNiLENBQ0YsQ0FBQyxlQUNGdlEsc0RBQUEsQ0FBQ3VQLG1EQUFRO01BQUNpQixFQUFFLEVBQUVWLFVBQVc7TUFBQ1csT0FBTyxFQUFDLE1BQU07TUFBQ0MsYUFBYTtNQUFBcFAsUUFBQSxlQUNwRHRCLHNEQUFBLENBQUN3UCxzREFBVztRQUNWbEssRUFBRSxFQUFFO1VBQ0ZxTCxFQUFFLEVBQUUsQ0FBQztVQUNMcEwsZUFBZSxFQUFFLFdBQVc7VUFDNUIsY0FBYyxFQUFFO1lBQ2RxTCxFQUFFLEVBQUU7VUFDTjtRQUNGLENBQUU7UUFBQXRQLFFBQUEsRUFFRHNWLFlBQVksQ0FBQ3BjLEdBQUcsQ0FBRTJXLEVBQUUsaUJBQ25CblIsc0RBQUEsQ0FBQ29QLDhDQUFHO1VBQUM5SixFQUFFLEVBQUU7WUFBRXFMLEVBQUUsRUFBRTtVQUFFLENBQUU7VUFBQXJQLFFBQUEsZUFDakJ0QixzREFBQSxDQUFDNEgsMkRBQWdCO1lBQ2ZxQyxPQUFPLGVBQ0xqSyxzREFBQSxDQUFDMEgsbURBQVE7Y0FDUGMsUUFBUSxFQUFFQSxDQUFBLEtBQU15SCxrQkFBa0IsQ0FBQ2tCLEVBQUUsQ0FBQzFZLEVBQUUsQ0FBRTtjQUMxQzhRLE9BQU8sRUFBRXFHLFlBQVksQ0FBQzFGLFFBQVEsQ0FBQ2lILEVBQUUsQ0FBQzFZLEVBQUUsQ0FBRTtjQUN0QzZNLEVBQUUsRUFBRTtnQkFDRixvQkFBb0IsRUFBRTtrQkFBRUksUUFBUSxFQUFFO2dCQUFHLENBQUM7Z0JBQ3RDLGVBQWUsRUFBRTtrQkFDZjJCLEtBQUssRUFBRTtnQkFDVDtjQUNGO1lBQUUsQ0FDSCxDQUNGO1lBQ0QrQixLQUFLLEVBQUUrSCxFQUFFLENBQUMzWSxJQUFLO1lBQ2Y4TSxFQUFFLEVBQUU7Y0FDRiw4QkFBOEIsRUFBRTtnQkFDOUJJLFFBQVEsRUFBRTtjQUNaO1lBQ0Y7VUFBRSxDQUNIO1FBQUMsMkJBQUF4USxNQUFBLENBcEI2Q2ljLEVBQUUsQ0FBQzNZLElBQUksTUFxQm5ELENBQ047TUFBQyxDQUNTO0lBQUMsQ0FDTixDQUFDO0VBQUEsQ0FDUixDQUFDO0FBRVYsQ0FBQztBQUVEb1osZ0JBQWdCLENBQUM3UCxTQUFTLEdBQUc7RUFDM0I0TixRQUFRLEVBQUU5UCx3REFBYytGO0FBQzFCLENBQUM7QUFFRCxpRUFBZWdNLGdCQUFnQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNsR0w7QUFDUztBQUNFO0FBQ1A7QUFDSjtBQUNJO0FBQ2lCO0FBQUE7QUFFL0MsTUFBTWtGLE9BQU8sR0FBR2hnQixJQUFBO0VBQUEsSUFBQztJQUFFNlksUUFBUTtJQUFFd0csTUFBTTtJQUFFVixRQUFRO0lBQUV4RDtFQUFRLENBQUMsR0FBQW5iLElBQUE7RUFBQSxvQkFDdERvSix1REFBQSxDQUFDMlcsK0NBQUk7SUFBQ3RELFNBQVM7SUFBQ3dELE9BQU8sRUFBQyxVQUFVO0lBQUN2TSxVQUFVLEVBQUMsUUFBUTtJQUFBbEosUUFBQSxnQkFDcERwQix1REFBQSxDQUFDMlcsK0NBQUk7TUFDSEcsSUFBSTtNQUNKQyxFQUFFLEVBQUUsQ0FBRTtNQUNOMUQsU0FBUztNQUNUNEIsT0FBTyxFQUFFLENBQUU7TUFDWCtCLEdBQUcsRUFBRSxDQUFFO01BQ1AzVyxTQUFTLEVBQUVULG9FQUEyQjtNQUN0Q3dGLEVBQUUsRUFBRTtRQUFFMk4sRUFBRSxFQUFFLENBQUM7UUFBRXJDLEVBQUUsRUFBRTtNQUFFLENBQUU7TUFBQXRQLFFBQUEsZ0JBRXJCdEIsc0RBQUEsQ0FBQzZXLCtDQUFJO1FBQUNHLElBQUk7UUFBQTFWLFFBQUEsZUFDUnRCLHNEQUFBLENBQUNnUywrQ0FBTTtVQUFDckMsUUFBUSxFQUFFQSxRQUFTO1VBQUNzQyxPQUFPLEVBQUVBO1FBQVEsQ0FBRTtNQUFDLENBQzVDLENBQUMsZUFDUGpTLHNEQUFBLENBQUM2VywrQ0FBSTtRQUFDRyxJQUFJO1FBQUExVixRQUFBLGVBQ1J0QixzREFBQSxDQUFDa1csNkNBQUk7VUFBQ0MsTUFBTSxFQUFFQTtRQUFPLENBQUU7TUFBQyxDQUNwQixDQUFDO0lBQUEsQ0FDSCxDQUFDLGVBQ1BuVyxzREFBQSxDQUFDNlcsK0NBQUk7TUFBQ0csSUFBSTtNQUFDQyxFQUFFLEVBQUUsQ0FBRTtNQUFDMUQsU0FBUztNQUFDc0IsY0FBYyxFQUFDLFVBQVU7TUFBQXZULFFBQUEsZUFDbkR0QixzREFBQSxDQUFDd1YsK0NBQU07UUFBQ0MsUUFBUSxFQUFFQTtNQUFTLENBQUU7SUFBQyxDQUMxQixDQUFDO0VBQUEsQ0FDSCxDQUFDO0FBQUEsQ0FDUjtBQUVEcUIsT0FBTyxDQUFDL1UsU0FBUyxHQUFHO0VBQ2xCNE4sUUFBUSxFQUFFOVAsd0RBQWM7RUFDeEJzVyxNQUFNLEVBQUV0Vyx3REFBYztFQUN0QjRWLFFBQVEsRUFBRTVWLHdEQUFjO0VBQ3hCb1MsT0FBTyxFQUFFcFMsd0RBQWMrRjtBQUN6QixDQUFDO0FBRUQsaUVBQWVrUixPQUFPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3ZDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUUwQjtBQUNTO0FBQ1M7QUFFRztBQUFBO0FBRS9DLE1BQU1NLFVBQVUsR0FBR3RnQixJQUFBO0VBQUEsSUFBQztJQUFFdWdCLFNBQVM7SUFBRUMsV0FBVztJQUFFMVUsT0FBTztJQUFFZ0g7RUFBUyxDQUFDLEdBQUE5UyxJQUFBO0VBQUEsb0JBQy9Eb0osdURBQUEsQ0FBQ2tQLDhDQUFHO0lBQUM3TyxTQUFTLEVBQUVULHVEQUFjO0lBQUF3QixRQUFBLGdCQUM1QnRCLHNEQUFBLENBQUNrQyxpREFBTTtNQUNMM0IsU0FBUyxFQUFFVCwwREFBaUI7TUFDNUJ1SCxLQUFLLEVBQUMsU0FBUztNQUNmb1EsSUFBSSxFQUFDLE9BQU87TUFDWnBTLE9BQU8sRUFBQyxVQUFVO01BQ2xCdkMsT0FBTyxFQUFFRixPQUFRO01BQ2pCZ0gsUUFBUSxFQUFFQSxRQUFTO01BQUF0SSxRQUFBLEVBRWxCZ1c7SUFBVyxDQUNOLENBQUMsZUFDVHRYLHNEQUFBLENBQUNrQyxpREFBTTtNQUNMOEssSUFBSSxFQUFDLFFBQVE7TUFDYnpNLFNBQVMsRUFBRVQsd0RBQWU7TUFDMUJ1RixPQUFPLEVBQUMsV0FBVztNQUNuQmdDLEtBQUssRUFBQyxTQUFTO01BQ2ZvUSxJQUFJLEVBQUMsT0FBTztNQUNaN04sUUFBUSxFQUFFQSxRQUFTO01BQUF0SSxRQUFBLEVBRWxCK1Y7SUFBUyxDQUNKLENBQUM7RUFBQSxDQUNOLENBQUM7QUFBQSxDQUNQO0FBRURELFVBQVUsQ0FBQ3JWLFNBQVMsR0FBRztFQUNyQnNWLFNBQVMsRUFBRXhYLDBEQUFnQjtFQUMzQnlYLFdBQVcsRUFBRXpYLDBEQUFnQjtFQUM3QitDLE9BQU8sRUFBRS9DLHdEQUFjO0VBQ3ZCK0osUUFBUSxFQUFFL0osd0RBQWN5RTtBQUMxQixDQUFDO0FBRUQsaUVBQWU4UyxVQUFVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNuREM7QUFDd0I7QUFDSDtBQUFBO0FBRS9DLFNBQVNPLFVBQVVBLENBQUE3Z0IsSUFBQSxFQUE2QztFQUFBLElBQTVDO0lBQUVnRCxPQUFPO0lBQUV1TixLQUFLO0lBQUV2RCxVQUFVO0lBQUU4VDtFQUFXLENBQUMsR0FBQTlnQixJQUFBO0VBQzVELG9CQUNFb0osdURBQUE7SUFDRUssU0FBUyxLQUFBckwsTUFBQSxDQUFLNEssMkRBQWlCLE9BQUE1SyxNQUFBLENBQUk0TyxVQUFVLElBQUlBLFVBQVUsQ0FBRztJQUM5RGxDLEtBQUssRUFBRTtNQUFFeUY7SUFBTSxDQUFFO0lBQ2pCLGVBQWF1USxVQUFXO0lBQUF0VyxRQUFBLGdCQUV4QnRCLHNEQUFBLENBQUM4RSxrRUFBUztNQUFDUSxFQUFFLEVBQUU7UUFBRStCO01BQU07SUFBRSxDQUFFLENBQUMsRUFDM0J2TixPQUFPO0VBQUEsQ0FDSixDQUFDO0FBRVg7QUFFQSxpRUFBZTZkLFVBQVU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNqQkM7QUFDUztBQUN3QjtBQUFBO0FBRTNELE1BQU1LLE1BQU0sR0FBR2xoQixJQUFBO0VBQUEsSUFBQztJQUFFNEw7RUFBSyxDQUFDLEdBQUE1TCxJQUFBO0VBQUE7SUFBQTtJQUN0QjtJQUNBa0osc0RBQUEsQ0FBQzhYLG1EQUFRO01BQUNwVixJQUFJLEVBQUVBLElBQUs7TUFBQzRDLEVBQUUsRUFBR2MsS0FBSyxLQUFNO1FBQUVtUCxNQUFNLEVBQUVuUCxLQUFLLENBQUNtUCxNQUFNLENBQUMwQyxNQUFNLEdBQUc7TUFBRSxDQUFDLENBQUU7TUFBQTNXLFFBQUEsZUFDekV0QixzREFBQSxDQUFDK1gsMkRBQWdCO1FBQUMxUSxLQUFLLEVBQUM7TUFBUyxDQUFFO0lBQUMsQ0FDNUI7RUFBQztBQUFBLENBQ1o7QUFFRDJRLE1BQU0sQ0FBQ2pXLFNBQVMsR0FBRztFQUNqQlcsSUFBSSxFQUFFN0Msd0RBQWN5RTtBQUN0QixDQUFDO0FBRUQsaUVBQWUwVCxNQUFNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDZks7QUFDOEI7QUFDSztBQUN0QjtBQUNlO0FBQ1A7QUFBQTtBQUUvQyxNQUFNSyxlQUFlLEdBQUd2aEIsSUFBQSxJQUFtQjtFQUFBLElBQWxCO0lBQUV3aEI7RUFBVSxDQUFDLEdBQUF4aEIsSUFBQTtFQUNwQyxNQUFNO0lBQUU5QyxNQUFNO0lBQUV1a0IsWUFBWTtJQUFFQyxtQkFBbUI7SUFBRUM7RUFBaUIsQ0FBQyxHQUNuRXZKLHdEQUFXLENBQUVXLEtBQUssSUFBS0EsS0FBSyxDQUFDL1gsV0FBVyxJQUFJLENBQUMsQ0FBQyxFQUFFcVgscURBQVksQ0FBQztFQUUvRCxvQkFDRW5QLHNEQUFBO0lBQUt2SCxFQUFFLEVBQUMsaUJBQWlCO0lBQUM4SCxTQUFTLEVBQUVULGdFQUF1QjtJQUFBd0IsUUFBQSxlQUMxRHRCLHNEQUFBLENBQUNrWSx3RUFBYztNQUNiUyxVQUFVLEVBQUVKLFlBQVksYUFBWkEsWUFBWSx1QkFBWkEsWUFBWSxDQUFFbGpCLE1BQU87TUFDakN1akIsSUFBSSxFQUFFQSxDQUFBLEtBQU1OLFNBQVMsQ0FBQ0UsbUJBQW1CLEdBQUdKLDJEQUFhLENBQUU7TUFDM0RTLE9BQU8sRUFBRUwsbUJBQW1CLEdBQUdDLGdCQUFpQjtNQUNoREssZUFBZSxFQUFFLENBQUU7TUFBQXhYLFFBQUEsRUFFbEJpWCxZQUFZLGFBQVpBLFlBQVksdUJBQVpBLFlBQVksQ0FBRS9kLEdBQUcsQ0FBRXRDLEtBQUssaUJBQ3ZCOEgsc0RBQUEsQ0FBQ21ZLG1EQUFVO1FBRVRqZ0IsS0FBSyxFQUFFQSxLQUFNO1FBQ2JsRSxNQUFNLEVBQUVBO01BQU8sR0FGVmtFLEtBQUssQ0FBQ3FNLE1BQU0sR0FBR3JNLEtBQUssQ0FBQ08sRUFHM0IsQ0FDRjtJQUFDLENBQ1k7RUFBQyxDQUNkLENBQUM7QUFFVixDQUFDO0FBRUQsaUVBQWU0ZixlQUFlOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUMvQko7QUFBQTtBQUUxQixNQUFNVSxXQUFXLEdBQUdBLENBQUEsa0JBQ2xCN1ksdURBQUE7RUFDRXdELEtBQUssRUFBQyxLQUFLO0VBQ1hrUixNQUFNLEVBQUMsSUFBSTtFQUNYb0UsT0FBTyxFQUFDLFlBQVk7RUFDcEJDLElBQUksRUFBQyxNQUFNO0VBQ1hDLEtBQUssRUFBQyw0QkFBNEI7RUFBQTVYLFFBQUEsZ0JBRWxDdEIsc0RBQUE7SUFDRW1aLENBQUMsRUFBQyw0ZEFBNGQ7SUFDOWRGLElBQUksRUFBQztFQUFPLENBQ2IsQ0FBQyxlQUNGalosc0RBQUE7SUFDRW1aLENBQUMsRUFBQywwaEVBQTBoRTtJQUM1aEVGLElBQUksRUFBQztFQUFTLENBQ2YsQ0FBQyxlQUNGalosc0RBQUE7SUFDRW1aLENBQUMsRUFBQyxrQ0FBa0M7SUFDcENDLE1BQU0sRUFBQyxTQUFTO0lBQ2hCQyxXQUFXLEVBQUMsR0FBRztJQUNmQyxhQUFhLEVBQUMsT0FBTztJQUNyQkMsZUFBZSxFQUFDO0VBQUssQ0FDdEIsQ0FBQyxlQUNGdlosc0RBQUE7SUFDRW1aLENBQUMsRUFBQywrZEFBK2Q7SUFDamVGLElBQUksRUFBQztFQUFPLENBQ2IsQ0FBQyxlQUNGalosc0RBQUE7SUFDRW1aLENBQUMsRUFBQyxxakVBQXFqRTtJQUN2akVGLElBQUksRUFBQztFQUFTLENBQ2YsQ0FBQyxlQUNGalosc0RBQUE7SUFDRW1aLENBQUMsRUFBQyxrQ0FBa0M7SUFDcENDLE1BQU0sRUFBQyxTQUFTO0lBQ2hCQyxXQUFXLEVBQUMsR0FBRztJQUNmQyxhQUFhLEVBQUMsT0FBTztJQUNyQkMsZUFBZSxFQUFDO0VBQUssQ0FDdEIsQ0FBQztBQUFBLENBQ0MsQ0FDTjtBQUVELGlFQUFlUixXQUFXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUMzQ0E7QUFDZ0I7QUFDYztBQUNUO0FBQ1A7QUFDSztBQUNFO0FBQUE7QUFFL0MsTUFBTVcsY0FBYyxHQUFHNWlCLElBQUEsSUFBMkI7RUFBQSxJQUExQjtJQUFFNmlCLFFBQVE7SUFBRTdXO0VBQVEsQ0FBQyxHQUFBaE0sSUFBQTtFQUMzQyxNQUFNO0lBQUU5QyxNQUFNO0lBQUU0bEI7RUFBUSxDQUFDLEdBQUcxSyx3REFBVyxDQUFFVyxLQUFLLElBQUtBLEtBQUssQ0FBQy9YLFdBQVcsSUFBSSxDQUFDLENBQUMsQ0FBQztFQUMzRSxNQUFNO0lBQUVyQjtFQUFFLENBQUMsR0FBRytMLDZEQUFjLENBQUMsQ0FBQztFQUU5QixNQUFNcVgsVUFBVSxHQUFHQSxDQUFBLEtBQU07SUFDdkIsTUFBTUMsU0FBUyxnQkFDYjlaLHNEQUFBO01BQUdWLElBQUksWUFBQXBLLE1BQUEsQ0FBWWxCLE1BQU0sQ0FBQytsQixhQUFhLENBQUc7TUFBQXpZLFFBQUEsRUFDdkM3SyxDQUFDLENBQUMseUJBQXlCO0lBQUMsQ0FDNUIsQ0FDSjtJQUVELFFBQVFrakIsUUFBUTtNQUNkLEtBQUtILGtEQUFJLENBQUNqa0IsTUFBTTtRQUFFO1VBQ2hCLE9BQU87WUFDTDZCLEtBQUssRUFBRVgsQ0FBQyxDQUFDLHlCQUF5QixDQUFDO1lBQ25Da00sSUFBSSxlQUNGekMsdURBQUEsQ0FBQXVaLHVEQUFBO2NBQUFuWSxRQUFBLEdBQ0c3SyxDQUFDLENBQUMsd0JBQXdCLENBQUMsRUFBQyxHQUFDLEVBQUNxakIsU0FBUyxFQUFDLEdBQzNDO1lBQUEsQ0FBRSxDQUNIO1lBQ0RFLFdBQVcsRUFBRXZqQixDQUFDLENBQUMsdUJBQXVCO1VBQ3hDLENBQUM7UUFDSDtNQUNBLEtBQUsraUIsa0RBQUksQ0FBQ1MsT0FBTztRQUFFO1VBQ2pCLE9BQU87WUFDTDdpQixLQUFLLEVBQUVYLENBQUMsQ0FBQywyQkFBMkIsQ0FBQztZQUNyQ2tNLElBQUksZUFDRnpDLHVEQUFBLENBQUF1Wix1REFBQTtjQUFBblksUUFBQSxHQUNHN0ssQ0FBQyxDQUFDLDBCQUEwQixDQUFDLEVBQUMsR0FBQyxFQUFDcWpCLFNBQVMsRUFBQyxHQUM3QztZQUFBLENBQUUsQ0FDSDtZQUNERSxXQUFXLEVBQUV2akIsQ0FBQyxDQUFDLGNBQWM7VUFDL0IsQ0FBQztRQUNIO01BQ0E7UUFBUztVQUNQLE9BQU87WUFDTFcsS0FBSyxFQUFFWCxDQUFDLENBQUMseUJBQXlCLENBQUM7WUFDbkNrTSxJQUFJLEVBQUVsTSxDQUFDLENBQUMsd0JBQXdCLENBQUM7WUFDakN1akIsV0FBVyxFQUFFdmpCLENBQUMsQ0FBQyxzQkFBc0I7VUFDdkMsQ0FBQztRQUNIO0lBQ0Y7RUFDRixDQUFDO0VBRUQsTUFBTTtJQUFFVyxLQUFLO0lBQUV1TCxJQUFJO0lBQUVxWDtFQUFZLENBQUMsR0FBR0gsVUFBVSxDQUFDLENBQUM7RUFFakQsSUFBSUQsT0FBTyxFQUFFLE9BQU8sSUFBSTtFQUV4QixvQkFDRTFaLHVEQUFBLENBQUNrUCw4Q0FBRztJQUFDN08sU0FBUyxFQUFFVCx3REFBZTtJQUFBd0IsUUFBQSxnQkFDN0J0QixzREFBQSxDQUFDb1AsOENBQUc7TUFBQzdPLFNBQVMsRUFBRVQsNERBQW1CO01BQUF3QixRQUFBLGVBQ2pDdEIsc0RBQUEsQ0FBQytZLG9EQUFXLElBQUU7SUFBQyxDQUNaLENBQUMsZUFDTi9ZLHNEQUFBLENBQUM0RSxxREFBVTtNQUFDUyxPQUFPLEVBQUMsSUFBSTtNQUFDOUUsU0FBUyxFQUFFVCxzREFBYTtNQUFBd0IsUUFBQSxFQUM5Q2xLO0lBQUssQ0FDSSxDQUFDLGVBQ2I0SSxzREFBQSxDQUFDNEUscURBQVU7TUFDVFMsT0FBTyxFQUFDLE9BQU87TUFDZjlFLFNBQVMsRUFBRVQscURBQVk7TUFDdkJ3RixFQUFFLEVBQUU7UUFBRStCLEtBQUssRUFBRTtNQUFpQixDQUFFO01BQUEvRixRQUFBLEVBRS9CcUI7SUFBSSxDQUNLLENBQUMsZUFDYjNDLHNEQUFBLENBQUNrQyxpREFBTTtNQUNMbUQsT0FBTyxFQUFDLFdBQVc7TUFDbkJnQyxLQUFLLEVBQUMsU0FBUztNQUNmb1EsSUFBSSxFQUFDLE9BQU87TUFDWjNVLE9BQU8sRUFBRUEsT0FBUTtNQUFBeEIsUUFBQSxFQUVoQjBZO0lBQVcsQ0FDTixDQUFDO0VBQUEsQ0FDTixDQUFDO0FBRVYsQ0FBQztBQUVELGlFQUFlTixjQUFjOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDbkZIO0FBQ1M7QUFDWTtBQUNMO0FBQ0U7QUFDdUI7QUFDcEI7QUFBQTtBQUUvQyxNQUFNVyxpQkFBaUIsR0FBR3ZqQixJQUFBLElBQXVCO0VBQUEsSUFBdEI7SUFBRW9CLEtBQUs7SUFBRWxFO0VBQU8sQ0FBQyxHQUFBOEMsSUFBQTtFQUMxQyxNQUFNO0lBQUVMO0VBQUUsQ0FBQyxHQUFHK0wsNkRBQWMsQ0FBQyxDQUFDO0VBQzlCLE1BQU07SUFDSjhYLGFBQWE7SUFDYkMsV0FBVztJQUNYQyxXQUFXO0lBQ1hDLFFBQVE7SUFDUkMsYUFBYTtJQUNiQztFQUNGLENBQUMsR0FBR1IsNERBQW9CLENBQUM7SUFBRWppQixLQUFLO0lBQUVsRTtFQUFPLENBQUMsQ0FBQztFQUUzQyxNQUFNNG1CLE9BQU8sR0FBRyxHQUFHO0VBRW5CLG9CQUNFMWEsdURBQUEsQ0FBQ2tQLDhDQUFHO0lBQUM3TyxTQUFTLEVBQUVULGtFQUF5QjtJQUFBd0IsUUFBQSxHQUN0QyxDQUFBb1osYUFBYSxhQUFiQSxhQUFhLHVCQUFiQSxhQUFhLENBQUVybEIsTUFBTSxJQUFHLENBQUMsaUJBQ3hCMkssc0RBQUEsQ0FBQXlaLHVEQUFBO01BQUFuWSxRQUFBLEVBQ0dvWixhQUFhLENBQUNsZ0IsR0FBRyxDQUFFWixNQUFNLElBQUs7UUFDN0IsTUFBTWtoQixXQUFXLEdBQ2RsaEIsTUFBTSxDQUFDbWhCLEdBQUcsSUFBSW5oQixNQUFNLENBQUNvaEIsV0FBVyxDQUFDQyxJQUFJLEdBQUdMLE9BQU8sQ0FBQyxHQUFJQSxPQUFPO1FBRTlELG9CQUNFMWEsdURBQUEsQ0FBQzJXLCtDQUFJO1VBQ0h0RCxTQUFTO1VBRVRqTyxFQUFFLEVBQUU7WUFBRXNMLEVBQUUsRUFBRTtVQUFFLENBQUU7VUFDZCxlQUFZLHdCQUF3QjtVQUFBdFAsUUFBQSxnQkFFcEN0QixzREFBQSxDQUFDNlcsK0NBQUk7WUFBQ0ksRUFBRSxFQUFFLENBQUU7WUFBQ0QsSUFBSTtZQUFBMVYsUUFBQSxlQUNmcEIsdURBQUE7Y0FBQW9CLFFBQUEsR0FBTSxHQUNILEVBQUMxSCxNQUFNLENBQUNtaEIsR0FBRyxFQUFDLEdBQUMsRUFBQ25oQixNQUFNLENBQUNvaEIsV0FBVyxDQUFDeGlCLElBQUk7WUFBQSxDQUNsQztVQUFDLENBQ0gsQ0FBQyxlQUNQd0gsc0RBQUEsQ0FBQzZXLCtDQUFJO1lBQUNJLEVBQUUsRUFBRSxDQUFFO1lBQUNELElBQUk7WUFBQ2tFLEtBQUssRUFBQyxPQUFPO1lBQUE1WixRQUFBLEVBQzVCOFksc0RBQWMsQ0FBQ1UsV0FBVyxFQUFFO2NBQUVLLFFBQVEsRUFBRWpqQixLQUFLLENBQUNpakI7WUFBUyxDQUFDO1VBQUMsQ0FDdEQsQ0FBQztRQUFBLGVBQUFqbUIsTUFBQSxDQVhVMEUsTUFBTSxDQUFDb2hCLFdBQVcsQ0FBQ0ksT0FBTyxDQVl2QyxDQUFDO01BRVgsQ0FBQztJQUFDLENBQ0YsQ0FDSCxlQUNEcGIsc0RBQUEsQ0FBQ3lSLDhEQUFPLElBQUUsQ0FBQyxlQUNYdlIsdURBQUEsQ0FBQzJXLCtDQUFJO01BQUN0RCxTQUFTO01BQUNqTyxFQUFFLEVBQUU7UUFBRTJOLEVBQUUsRUFBRSxDQUFDO1FBQUVyQyxFQUFFLEVBQUU7TUFBRSxDQUFFO01BQUF0UCxRQUFBLGdCQUNuQ3RCLHNEQUFBLENBQUM2VywrQ0FBSTtRQUFDSSxFQUFFLEVBQUUsQ0FBRTtRQUFDRCxJQUFJO1FBQUExVixRQUFBLEVBQ2Q3SyxDQUFDLENBQUMseUJBQXlCO01BQUMsQ0FDekIsQ0FBQyxlQUNQdUosc0RBQUEsQ0FBQzZXLCtDQUFJO1FBQUNJLEVBQUUsRUFBRSxDQUFFO1FBQUNELElBQUk7UUFBQ2tFLEtBQUssRUFBQyxPQUFPO1FBQUE1WixRQUFBLEVBQzVCbVo7TUFBUSxDQUNMLENBQUM7SUFBQSxDQUNILENBQUMsRUFDTnZpQixLQUFLLENBQUNtakIsWUFBWSxHQUFHLENBQUMsSUFDckIsQ0FBQVYsWUFBWSxhQUFaQSxZQUFZLHVCQUFaQSxZQUFZLENBQUV0bEIsTUFBTSxJQUFHLENBQUMsSUFDeEJzbEIsWUFBWSxDQUFDbmdCLEdBQUcsQ0FBRThnQixHQUFHLGlCQUNuQnBiLHVEQUFBLENBQUMyVywrQ0FBSTtNQUFDdEQsU0FBUztNQUFDak8sRUFBRSxFQUFFO1FBQUVzTCxFQUFFLEVBQUU7TUFBRSxDQUFFO01BQUF0UCxRQUFBLGdCQUM1QnRCLHNEQUFBLENBQUM2VywrQ0FBSTtRQUFDSSxFQUFFLEVBQUUsQ0FBRTtRQUFDRCxJQUFJO1FBQUExVixRQUFBLEVBQ2RnYSxHQUFHLENBQUM5aUI7TUFBSSxDQUNMLENBQUMsZUFDUHdILHNEQUFBLENBQUM2VywrQ0FBSTtRQUFDSSxFQUFFLEVBQUUsQ0FBRTtRQUFDRCxJQUFJO1FBQUNrRSxLQUFLLEVBQUMsT0FBTztRQUFBNVosUUFBQSxFQUM1QmdhLEdBQUcsQ0FBQ0M7TUFBTSxDQUNQLENBQUM7SUFBQSxHQU4yQkQsR0FBRyxDQUFDN2lCLEVBT2xDLENBQ1AsQ0FBQyxFQUNIUCxLQUFLLENBQUNzakIsZUFBZSxHQUFHLENBQUMsaUJBQ3hCdGIsdURBQUEsQ0FBQzJXLCtDQUFJO01BQUN0RCxTQUFTO01BQUNqTyxFQUFFLEVBQUU7UUFBRXNMLEVBQUUsRUFBRTtNQUFFLENBQUU7TUFBQXRQLFFBQUEsZ0JBQzVCdEIsc0RBQUEsQ0FBQzZXLCtDQUFJO1FBQUNJLEVBQUUsRUFBRSxDQUFFO1FBQUNELElBQUk7UUFBQTFWLFFBQUEsRUFDZDdLLENBQUMsQ0FBQyx5QkFBeUI7TUFBQyxDQUN6QixDQUFDLGVBQ1B5Six1REFBQSxDQUFDMlcsK0NBQUk7UUFBQ0ksRUFBRSxFQUFFLENBQUU7UUFBQ0QsSUFBSTtRQUFDa0UsS0FBSyxFQUFDLE9BQU87UUFBQTVaLFFBQUEsR0FBQyxHQUM3QixFQUFDZ1osYUFBYTtNQUFBLENBQ1gsQ0FBQztJQUFBLENBQ0gsQ0FDUCxFQUNBQyxXQUFXLEdBQUcsQ0FBQyxpQkFDZHJhLHVEQUFBLENBQUMyVywrQ0FBSTtNQUFDdEQsU0FBUztNQUFDak8sRUFBRSxFQUFFO1FBQUVzTCxFQUFFLEVBQUU7TUFBRSxDQUFFO01BQUF0UCxRQUFBLGdCQUM1QnRCLHNEQUFBLENBQUM2VywrQ0FBSTtRQUFDSSxFQUFFLEVBQUUsQ0FBRTtRQUFDRCxJQUFJO1FBQUExVixRQUFBLEVBQ2Q3SyxDQUFDLENBQUMsdUJBQXVCO01BQUMsQ0FDdkIsQ0FBQyxlQUNQdUosc0RBQUEsQ0FBQzZXLCtDQUFJO1FBQUNJLEVBQUUsRUFBRSxDQUFFO1FBQUNELElBQUk7UUFBQ2tFLEtBQUssRUFBQyxPQUFPO1FBQUE1WixRQUFBLEVBQzVCaVo7TUFBVyxDQUNSLENBQUM7SUFBQSxDQUNILENBQ1AsZUFDRHZhLHNEQUFBLENBQUN5Uiw4REFBTyxJQUFFLENBQUMsZUFDWHZSLHVEQUFBLENBQUMyVywrQ0FBSTtNQUFDdEQsU0FBUztNQUFDak8sRUFBRSxFQUFFO1FBQUUyTixFQUFFLEVBQUUsQ0FBQztRQUFFckMsRUFBRSxFQUFFO01BQUUsQ0FBRTtNQUFBdFAsUUFBQSxnQkFDbkN0QixzREFBQSxDQUFDNlcsK0NBQUk7UUFBQ0ksRUFBRSxFQUFFLENBQUU7UUFBQ0QsSUFBSTtRQUFBMVYsUUFBQSxFQUNkN0ssQ0FBQyxDQUFDLHFCQUFxQjtNQUFDLENBQ3JCLENBQUMsZUFDUHVKLHNEQUFBLENBQUM2VywrQ0FBSTtRQUFDSSxFQUFFLEVBQUUsQ0FBRTtRQUFDRCxJQUFJO1FBQUNrRSxLQUFLLEVBQUMsT0FBTztRQUFBNVosUUFBQSxFQUM1QmtaO01BQVcsQ0FDUixDQUFDO0lBQUEsQ0FDSCxDQUFDO0VBQUEsQ0FDSixDQUFDO0FBRVYsQ0FBQztBQUVESCxpQkFBaUIsQ0FBQ3RZLFNBQVMsR0FBRztFQUM1QjdKLEtBQUssRUFBRTJILHVEQUFlLENBQUM7SUFDckJzYixRQUFRLEVBQUV0YiwwREFBZ0I7SUFDMUIyYixlQUFlLEVBQUUzYiwwREFBZ0I7SUFDakN3YixZQUFZLEVBQUV4YiwwREFBZ0I7SUFDOUJ0SixNQUFNLEVBQUVzSiwwREFBZ0JtQztFQUMxQixDQUFDLENBQUM7RUFDRmhPLE1BQU0sRUFBRTZMLDBEQUFnQndLO0FBQzFCLENBQUM7QUFFRCxpRUFBZWdRLGlCQUFpQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ2pITjtBQUNTO0FBQ1k7QUFDUjtBQUNGO0FBQ3VCO0FBQ2I7QUFDWTtBQUFBO0FBRTNELE1BQU13QixrQkFBa0IsR0FBRy9rQixJQUFBLElBTXJCO0VBQUEsSUFOc0I7SUFDMUI5QyxNQUFNO0lBQ05xRyxPQUFPO0lBQ1B5aEIsYUFBYTtJQUNiQyxhQUFhO0lBQ2JDO0VBQ0YsQ0FBQyxHQUFBbGxCLElBQUE7RUFDQyxNQUFNO0lBQUVMO0VBQUUsQ0FBQyxHQUFHK0wsNkRBQWMsQ0FBQyxDQUFDO0VBQzlCLE1BQU07SUFBRXlaO0VBQVUsQ0FBQyxHQUFHTCxvRUFBZ0IsQ0FBQztJQUFFNW5CO0VBQU8sQ0FBQyxDQUFDO0VBQ2xELE1BQU1rb0IsR0FBRyxHQUFHUiw4Q0FBTSxDQUFDLENBQUM7RUFDcEIsTUFBTVMsb0JBQW9CLEdBQ3hCbm9CLE1BQU0sQ0FBQ29vQiw2Q0FBNkMsR0FBR0YsR0FBRztFQUM1RCxNQUFNRywwQkFBMEIsR0FBR1YscUVBQWlCLENBQUN0aEIsT0FBTyxDQUFDO0VBQzdELE1BQU1paUIsWUFBWSxHQUFHLENBQUMsRUFDcEJILG9CQUFvQixJQUNwQixDQUFDRixTQUFTLElBQ1ZJLDBCQUEwQixDQUMzQjtFQUNELE1BQU1FLGlCQUFpQixHQUFHbGlCLE9BQU8sYUFBUEEsT0FBTyx1QkFBUEEsT0FBTyxDQUFFeVMsSUFBSSxDQUFFclcsQ0FBQyxJQUFLQSxDQUFDLENBQUNvRSxlQUFlLENBQUN4RixNQUFNLEdBQUcsQ0FBQyxDQUFDO0VBQzVFLG9CQUNFNkssdURBQUEsQ0FBQXVaLHVEQUFBO0lBQUFuWSxRQUFBLEdBQ0dnYixZQUFZLGlCQUNYdGMsc0RBQUEsQ0FBQ2tDLGlEQUFNO01BQ0wsY0FBVyx1QkFBdUI7TUFDbENzYSxJQUFJLEVBQUMsUUFBUTtNQUNiamMsU0FBUyxLQUFBckwsTUFBQSxDQUFLNEssbUVBQXlCLGtCQUFBNUssTUFBQSxDQUNyQzRtQixhQUFhLEdBQUdoYywrREFBcUIsR0FBRyxFQUFFLENBQUc7TUFDL0N1RixPQUFPLEVBQUMsVUFBVTtNQUNsQm9TLElBQUksRUFBQyxPQUFPO01BQ1ozVSxPQUFPLEVBQUVpWixhQUFjO01BQ3ZCblMsUUFBUSxFQUFFa1MsYUFBYztNQUFBeGEsUUFBQSxFQUV2QjdLLENBQUMsQ0FBQyw4QkFBOEI7SUFBQyxDQUM1QixDQUNULEVBQ0E4bEIsaUJBQWlCLGlCQUNoQnZjLHNEQUFBLENBQUNrQyxpREFBTTtNQUNMLGNBQVcsdUJBQXVCO01BQ2xDc2EsSUFBSSxFQUFDLFFBQVE7TUFDYmpjLFNBQVMsRUFBRVQsbUVBQTBCO01BQ3JDdUYsT0FBTyxFQUFDLFVBQVU7TUFDbEJvUyxJQUFJLEVBQUMsT0FBTztNQUNaM1UsT0FBTyxFQUFFa1osbUJBQW9CO01BQUExYSxRQUFBLEVBRTVCN0ssQ0FBQyxDQUFDLDhCQUE4QjtJQUFDLENBQzVCLENBQ1QsZUFDRHVKLHNEQUFBLENBQUNrQyxpREFBTTtNQUNMLGNBQVcsc0JBQXNCO01BQ2pDc2EsSUFBSSxFQUFDLFFBQVE7TUFDYmpjLFNBQVMsRUFBRVQsbUVBQTBCO01BQ3JDdUYsT0FBTyxFQUFDLFVBQVU7TUFDbEJvUyxJQUFJLEVBQUMsT0FBTztNQUNack4sTUFBTSxFQUFDLE1BQU07TUFDYnVTLEdBQUcsRUFBQyxxQkFBcUI7TUFDekJyZCxJQUFJLFlBQUFwSyxNQUFBLENBQVlsQixNQUFNLENBQUMrbEIsYUFBYSxDQUFHO01BQUF6WSxRQUFBLEVBRXRDN0ssQ0FBQyxDQUFDLDBCQUEwQjtJQUFDLENBQ3hCLENBQUM7RUFBQSxDQUNULENBQUM7QUFFUCxDQUFDO0FBRURvbEIsa0JBQWtCLENBQUM5WixTQUFTLEdBQUc7RUFDN0IvTixNQUFNLEVBQUU2TCwwREFBZ0I7RUFDeEJ4RixPQUFPLEVBQUV3Rix5REFBaUIsQ0FBQ25KLE1BQU0sQ0FBQztFQUNsQ3FsQixhQUFhLEVBQUVsYyx3REFBYztFQUM3Qm1jLG1CQUFtQixFQUFFbmMsd0RBQWM7RUFDbkNpYyxhQUFhLEVBQUVqYyx3REFBY3lFO0FBQy9CLENBQUM7QUFFRCxpRUFBZXVYLGtCQUFrQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDaEZQO0FBQ1M7QUFDTztBQUNLO0FBQ0s7QUFDRTtBQUNQO0FBQUE7QUFFL0MsTUFBTWdCLFlBQVksR0FBRy9sQixJQUFBLElBTWY7RUFBQSxJQU5nQjtJQUNwQm9CLEtBQUs7SUFDTGxFLE1BQU07SUFDTituQixhQUFhO0lBQ2JELGFBQWE7SUFDYkU7RUFDRixDQUFDLEdBQUFsbEIsSUFBQTtFQUNDLE1BQU07SUFBRUw7RUFBRSxDQUFDLEdBQUcrTCw2REFBYyxDQUFDLENBQUM7RUFDOUIsb0JBQ0V0Qyx1REFBQSxDQUFBdVosdURBQUE7SUFBQW5ZLFFBQUEsZ0JBQ0VwQix1REFBQSxDQUFDa1AsOENBQUc7TUFDRjdPLFNBQVMsRUFBRVQsb0VBQTJCO01BQ3RDd0YsRUFBRSxFQUFFO1FBQUUyTixFQUFFLEVBQUUsQ0FBQztRQUFFOEosRUFBRSxFQUFFO01BQUUsQ0FBRTtNQUNyQixlQUFZLHlCQUF5QjtNQUFBemIsUUFBQSxnQkFFckN0QixzREFBQTtRQUFBc0IsUUFBQSxFQUFLN0ssQ0FBQyxDQUFDLDZCQUE2QjtNQUFDLENBQUssQ0FBQyxlQUMzQ3VKLHNEQUFBLENBQUM2VywrQ0FBSTtRQUFDdEQsU0FBUztRQUFBalMsUUFBQSxlQUNidEIsc0RBQUEsQ0FBQzZXLCtDQUFJO1VBQ0hJLEVBQUUsRUFBRSxFQUFHO1VBQ1AxVyxTQUFTLEVBQUVULDBFQUFpQztVQUM1Q3dGLEVBQUUsRUFBRTtZQUFFc0wsRUFBRSxFQUFFO1VBQUUsQ0FBRTtVQUNkb0csSUFBSTtVQUFBMVYsUUFBQSxlQUVKdEIsc0RBQUEsQ0FBQ3FhLDBEQUFpQjtZQUFDbmlCLEtBQUssRUFBRUEsS0FBTTtZQUFDbEUsTUFBTSxFQUFFQTtVQUFPLENBQUU7UUFBQyxDQUMvQztNQUFDLENBQ0gsQ0FBQztJQUFBLENBQ0osQ0FBQyxlQUNOZ00sc0RBQUEsQ0FBQ29QLDhDQUFHO01BQUM2SCxFQUFFLEVBQUUsRUFBRztNQUFDM1IsRUFBRSxFQUFFO1FBQUVzTCxFQUFFLEVBQUU7TUFBRSxDQUFFO01BQUF0UCxRQUFBLGVBQ3pCdEIsc0RBQUEsQ0FBQzZiLDJEQUFrQjtRQUNqQjduQixNQUFNLEVBQUVBLE1BQU87UUFDZnFHLE9BQU8sRUFBRW5DLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFK2tCLGFBQWM7UUFDOUJuQixhQUFhLEVBQUVBLGFBQWM7UUFDN0JDLGFBQWEsRUFBRUEsYUFBYztRQUM3QkMsbUJBQW1CLEVBQUVBO01BQW9CLENBQzFDO0lBQUMsQ0FDQyxDQUFDO0VBQUEsQ0FDTixDQUFDO0FBRVAsQ0FBQztBQUNEYSxZQUFZLENBQUM5YSxTQUFTLEdBQUc7RUFDdkIvTixNQUFNLEVBQUU2TCwwREFBZ0I7RUFDeEIzSCxLQUFLLEVBQUUySCx1REFBZSxDQUFDO0lBQ3JCb2QsYUFBYSxFQUFFcGQseURBQWlCLENBQUNuSixNQUFNO0VBQ3pDLENBQUMsQ0FBQztFQUNGcWxCLGFBQWEsRUFBRWxjLHdEQUFjO0VBQzdCaWMsYUFBYSxFQUFFamMsd0RBQWN5RTtBQUMvQixDQUFDO0FBRUQsaUVBQWV1WSxZQUFZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDeEREO0FBQzhCO0FBQ0s7QUFDWDtBQUNJO0FBQ1A7QUFBQTtBQUUvQyxNQUFNTSxVQUFVLEdBQUdybUIsSUFBQSxJQUFtQjtFQUFBLElBQWxCO0lBQUV3aEI7RUFBVSxDQUFDLEdBQUF4aEIsSUFBQTtFQUMvQixNQUFNO0lBQ0o5QyxNQUFNO0lBQ05vcEIsV0FBVztJQUNYQyx5QkFBeUI7SUFDekJDO0VBQ0YsQ0FBQyxHQUFHcE8sd0RBQVcsQ0FBRVcsS0FBSyxJQUFLQSxLQUFLLENBQUMvWCxXQUFXLElBQUksQ0FBQyxDQUFDLEVBQUVxWCxxREFBWSxDQUFDO0VBRWpFLG9CQUNFblAsc0RBQUE7SUFBS08sU0FBUyxFQUFFVCxxRUFBNEI7SUFBQXdCLFFBQUEsZUFDMUN0QixzREFBQTtNQUFLdkgsRUFBRSxFQUFDLHFCQUFxQjtNQUFDOEgsU0FBUyxFQUFFVCxvRUFBMkI7TUFBQXdCLFFBQUEsZUFDbEV0QixzREFBQSxDQUFDa1ksd0VBQWM7UUFDYlMsVUFBVSxFQUFFeUUsV0FBVyxhQUFYQSxXQUFXLHVCQUFYQSxXQUFXLENBQUUvbkIsTUFBTztRQUNoQ3VqQixJQUFJLEVBQUVBLENBQUEsS0FBTU4sU0FBUyxDQUFDK0UseUJBQXlCLEdBQUdqRiwyREFBYSxDQUFFO1FBQ2pFUyxPQUFPLEVBQUV3RSx5QkFBeUIsR0FBR0Msc0JBQXVCO1FBQzVEeEUsZUFBZSxFQUFFLENBQUU7UUFBQXhYLFFBQUEsZUFFbkJ0QixzREFBQTtVQUFLTyxTQUFTLEVBQUVULG9FQUEyQjtVQUFBd0IsUUFBQSxFQUN4QzhiLFdBQVcsQ0FBQzVpQixHQUFHLENBQUVaLE1BQU0saUJBQ3RCb0csc0RBQUEsQ0FBQ2tkLHlEQUFnQjtZQUVmdGpCLE1BQU0sRUFBRUEsTUFBTztZQUNmNUYsTUFBTSxFQUFFQSxNQUFPO1lBQ2YwcEIsYUFBYSxFQUFFLEtBQU07WUFDckJDLGtCQUFrQixFQUFFLEVBQUc7WUFDdkJDLGNBQWMsRUFBRSxLQUFNO1lBQ3RCQyx3QkFBd0I7VUFBQSxHQU5uQmprQixNQUFNLENBQUNuQixFQU9iLENBQ0Y7UUFBQyxDQUNDO01BQUMsQ0FDUTtJQUFDLENBQ2Q7RUFBQyxDQUNILENBQUM7QUFFVixDQUFDO0FBRUQsaUVBQWUwa0IsVUFBVTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzNDQztBQUNTO0FBQ1k7QUFDTztBQUNQO0FBQUE7QUFFL0MsTUFBTVcsVUFBVSxHQUFHaG5CLElBQUEsSUFBZTtFQUFBLElBQWQ7SUFBRW5FO0VBQU0sQ0FBQyxHQUFBbUUsSUFBQTtFQUMzQixNQUFNO0lBQUVMO0VBQUUsQ0FBQyxHQUFHK0wsNkRBQWMsQ0FBQyxDQUFDO0VBRTlCLG9CQUNFdEMsdURBQUEsQ0FBQ2tQLDhDQUFHO0lBQUE5TixRQUFBLGdCQUNGcEIsdURBQUEsQ0FBQ2tQLDhDQUFHO01BQUM3TyxTQUFTLEVBQUVULHNEQUFhO01BQUF3QixRQUFBLEdBQUU3SyxDQUFDLENBQUMsMkJBQTJCLENBQUMsRUFBQyxHQUFDO0lBQUEsQ0FBSyxDQUFDLGVBQ3JFdUosc0RBQUEsQ0FBQzRFLHFEQUFVO01BQUNTLE9BQU8sRUFBQyxPQUFPO01BQUMsZUFBWSwwQkFBMEI7TUFBQS9ELFFBQUEsRUFDL0QzTztJQUFLLENBQ0ksQ0FBQztFQUFBLENBQ1YsQ0FBQztBQUVWLENBQUM7QUFFRCxNQUFNb3JCLGtCQUFrQixHQUFHeG1CLEtBQUEsSUFBNkI7RUFBQSxJQUE1QjtJQUFFM0UsU0FBUztJQUFFQztFQUFTLENBQUMsR0FBQTBFLEtBQUE7RUFDakQsTUFBTTtJQUFFZDtFQUFFLENBQUMsR0FBRytMLDZEQUFjLENBQUMsQ0FBQztFQUU5QixvQkFDRXRDLHVEQUFBLENBQUNrUCw4Q0FBRztJQUFBOU4sUUFBQSxnQkFDRnBCLHVEQUFBLENBQUNrUCw4Q0FBRztNQUFDN08sU0FBUyxFQUFFVCxzREFBYTtNQUFBd0IsUUFBQSxHQUFFN0ssQ0FBQyxDQUFDLDJCQUEyQixDQUFDLEVBQUMsR0FBQztJQUFBLENBQUssQ0FBQyxlQUNyRXlKLHVEQUFBLENBQUMwRSxxREFBVTtNQUFDUyxPQUFPLEVBQUMsT0FBTztNQUFBL0QsUUFBQSxHQUN4QjFPLFNBQVMsRUFBQyxHQUFDLEVBQUNDLFFBQVE7SUFBQSxDQUNYLENBQUM7RUFBQSxDQUNWLENBQUM7QUFFVixDQUFDO0FBRUQsTUFBTW1yQixTQUFTLEdBQUdwbUIsS0FBQSxJQUE2QjtFQUFBLElBQTVCO0lBQUVoRixTQUFTO0lBQUVDO0VBQVMsQ0FBQyxHQUFBK0UsS0FBQTtFQUN4QyxNQUFNO0lBQUVuQjtFQUFFLENBQUMsR0FBRytMLDZEQUFjLENBQUMsQ0FBQztFQUU5QixvQkFDRXRDLHVEQUFBLENBQUNrUCw4Q0FBRztJQUFBOU4sUUFBQSxnQkFDRnBCLHVEQUFBLENBQUNrUCw4Q0FBRztNQUFDN08sU0FBUyxFQUFFVCxzREFBYTtNQUFBd0IsUUFBQSxHQUFFN0ssQ0FBQyxDQUFDLDBCQUEwQixDQUFDLEVBQUMsR0FBQztJQUFBLENBQUssQ0FBQyxlQUNwRXlKLHVEQUFBLENBQUMwRSxxREFBVTtNQUFDUyxPQUFPLEVBQUMsT0FBTztNQUFBL0QsUUFBQSxHQUN4QjFPLFNBQVMsRUFBQyxHQUFDLEVBQUNDLFFBQVE7SUFBQSxDQUNYLENBQUM7RUFBQSxDQUNWLENBQUM7QUFFVixDQUFDO0FBRUQsTUFBTW9yQixjQUFjLEdBQUcva0IsS0FBQSxJQUEwQztFQUFBLElBQUFnbEIsYUFBQSxFQUFBQyxjQUFBLEVBQUFDLGNBQUE7RUFBQSxJQUF6QztJQUFFeGtCLE1BQU07SUFBRWlrQjtFQUF5QixDQUFDLEdBQUEza0IsS0FBQTtFQUMxRCxNQUFNO0lBQUV6QztFQUFFLENBQUMsR0FBRytMLDZEQUFjLENBQUMsQ0FBQztFQUM5QixNQUFNNmIsWUFBWSxHQUFHLEdBQUFILGFBQUEsR0FBQ3RrQixNQUFNLENBQUMyRCxLQUFLLGNBQUEyZ0IsYUFBQSxlQUFaQSxhQUFBLENBQWN2ckIsS0FBSyxLQUFJaUgsTUFBTSxDQUFDMGtCLFNBQVM7RUFDN0QsTUFBTUMsV0FBVyxHQUFHLENBQUMsR0FBQUosY0FBQSxHQUFDdmtCLE1BQU0sQ0FBQzJELEtBQUssY0FBQTRnQixjQUFBLGVBQVpBLGNBQUEsQ0FBYzNoQixVQUFVO0VBRTlDLElBQUk2aEIsWUFBWSxFQUFFO0lBQ2hCLG9CQUNFcmUsc0RBQUE7TUFDRU8sU0FBUyxFQUFFVCxpRUFBd0I7TUFDbkMsZUFBWSw0QkFBNEI7TUFBQXdCLFFBQUEsRUFFdkM3SyxDQUFDLENBQUMsMENBQTBDO0lBQUMsQ0FDMUMsQ0FBQztFQUVYO0VBRUEsS0FBQTJuQixjQUFBLEdBQUl4a0IsTUFBTSxDQUFDMkQsS0FBSyxjQUFBNmdCLGNBQUEsZUFBWkEsY0FBQSxDQUFjenJCLEtBQUssRUFBRTtJQUFBLElBQUE4ckIsYUFBQSxFQUFBQyxjQUFBLEVBQUFDLGNBQUEsRUFBQUMsY0FBQTtJQUN2QixvQkFDRTFlLHVEQUFBLENBQUMyVywrQ0FBSTtNQUFDdEQsU0FBUztNQUFBalMsUUFBQSxnQkFDYnRCLHNEQUFBLENBQUM2VywrQ0FBSTtRQUFDRyxJQUFJO1FBQUExVixRQUFBLGVBQ1J0QixzREFBQSxDQUFDOGQsVUFBVTtVQUFDbnJCLEtBQUssRUFBRWlILE1BQU0sQ0FBQzJELEtBQUssQ0FBQzVLO1FBQU0sQ0FBRTtNQUFDLENBQ3JDLENBQUMsRUFDTmtyQix3QkFBd0IsaUJBQ3ZCN2Qsc0RBQUEsQ0FBQzZXLCtDQUFJO1FBQUNHLElBQUk7UUFBQ3pXLFNBQVMsRUFBRVQsK0RBQXNCO1FBQUF3QixRQUFBLGVBQzFDdEIsc0RBQUEsQ0FBQytkLGtCQUFrQjtVQUNqQm5yQixTQUFTLEdBQUE2ckIsYUFBQSxHQUFFN2tCLE1BQU0sQ0FBQzFCLEtBQUssY0FBQXVtQixhQUFBLHVCQUFaQSxhQUFBLENBQWNLLGdCQUFpQjtVQUMxQ2pzQixRQUFRLEdBQUE2ckIsY0FBQSxHQUFFOWtCLE1BQU0sQ0FBQzFCLEtBQUssY0FBQXdtQixjQUFBLHVCQUFaQSxjQUFBLENBQWNLO1FBQWdCLENBQ3pDO01BQUMsQ0FDRSxDQUNQLEVBQ0FSLFdBQVcsaUJBQ1Z2ZSxzREFBQSxDQUFDNlcsK0NBQUk7UUFBQ0csSUFBSTtRQUFDelcsU0FBUyxFQUFFVCwrREFBc0I7UUFBQXdCLFFBQUEsZUFDMUN0QixzREFBQSxDQUFDZ2UsU0FBUztVQUNScHJCLFNBQVMsR0FBQStyQixjQUFBLEdBQUUva0IsTUFBTSxDQUFDMkQsS0FBSyxjQUFBb2hCLGNBQUEsdUJBQVpBLGNBQUEsQ0FBY2hpQixVQUFXO1VBQ3BDOUosUUFBUSxHQUFBK3JCLGNBQUEsR0FBRWhsQixNQUFNLENBQUMyRCxLQUFLLGNBQUFxaEIsY0FBQSx1QkFBWkEsY0FBQSxDQUFjaGlCO1FBQVUsQ0FDbkM7TUFBQyxDQUNFLENBQ1A7SUFBQSxDQUNHLENBQUM7RUFFWDtFQUVBLE9BQU8sSUFBSTtBQUNiLENBQUM7QUFFRHFoQixjQUFjLENBQUNsYyxTQUFTLEdBQUc7RUFDekJuSSxNQUFNLEVBQUVpRyx1REFBZSxDQUFDO0lBQ3RCdEMsS0FBSyxFQUFFc0MsdURBQWUsQ0FBQztNQUNyQmxOLEtBQUssRUFBRWtOLDBEQUFnQm1DO0lBQ3pCLENBQUMsQ0FBQztJQUNGc2MsU0FBUyxFQUFFemUsd0RBQWN5RTtFQUMzQixDQUFDLENBQUM7RUFDRnVaLHdCQUF3QixFQUFFaGUsd0RBQWN5RTtBQUMxQyxDQUFDO0FBRUQsaUVBQWUyWixjQUFjOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNwR3NCO0FBQ2hCO0FBQ1k7QUFDUjtBQUNXO0FBQ2U7QUFDbEI7QUFBQTtBQUUvQyxNQUFNZ0IsYUFBYSxHQUFHbm9CLElBQUEsSUFNaEI7RUFBQSxJQUFBb29CLG9CQUFBLEVBQUFDLHFCQUFBO0VBQUEsSUFOaUI7SUFDckJuckIsTUFBTTtJQUNOa0UsS0FBSztJQUNMa25CLGVBQWU7SUFDZkMsZUFBZTtJQUNmekI7RUFDRixDQUFDLEdBQUE5bUIsSUFBQTtFQUNDLE1BQU07SUFBRUw7RUFBRSxDQUFDLEdBQUcrTCw2REFBYyxDQUFDLENBQUM7RUFDOUIsTUFBTSxDQUFDOGMsY0FBYyxFQUFFQyxpQkFBaUIsQ0FBQyxHQUFHNWYsK0NBQVEsQ0FDbERxZixzRUFDRixDQUFDO0VBRURsTyxnREFBUyxDQUFDLE1BQU07SUFDZHlPLGlCQUFpQixDQUFDUCxzRUFBd0IsQ0FBQztFQUM3QyxDQUFDLEVBQUUsQ0FBQzltQixLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRXNuQixhQUFhLENBQUMsQ0FBQztFQUUxQixJQUFJLEVBQUN0bkIsS0FBSyxhQUFMQSxLQUFLLGdCQUFBZ25CLG9CQUFBLEdBQUxobkIsS0FBSyxDQUFFK2tCLGFBQWEsY0FBQWlDLG9CQUFBLGVBQXBCQSxvQkFBQSxDQUFzQjdwQixNQUFNLEdBQUUsT0FBTyxJQUFJO0VBQzlDLE1BQU1vcUIsYUFBYSxHQUFHdm5CLEtBQUssYUFBTEEsS0FBSyxnQkFBQWluQixxQkFBQSxHQUFMam5CLEtBQUssQ0FBRStrQixhQUFhLGNBQUFrQyxxQkFBQSx1QkFBcEJBLHFCQUFBLENBQXNCTyxLQUFLLENBQUMsQ0FBQyxFQUFFSixjQUFjLENBQUM7RUFFcEUsTUFBTUssVUFBVSxHQUFHQSxDQUFBLEtBQU07SUFDdkIsSUFBSSxDQUFBem5CLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFc25CLGFBQWEsS0FBR3RuQixLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRStrQixhQUFhLENBQUM1bkIsTUFBTSxHQUFFO01BQ3REK3BCLGVBQWUsQ0FBQyxDQUFDO0lBQ25CO0lBQ0FHLGlCQUFpQixDQUFDRCxjQUFjLEdBQUdOLHNFQUF3QixDQUFDO0VBQzlELENBQUM7RUFFRCxNQUFNWSxVQUFVLEdBQUdBLENBQUEsS0FBTUwsaUJBQWlCLENBQUNQLHNFQUF3QixDQUFDO0VBRXBFLG9CQUNFOWUsdURBQUEsQ0FBQXVaLHVEQUFBO0lBQUFuWSxRQUFBLEdBQ0dtZSxhQUFhLGFBQWJBLGFBQWEsdUJBQWJBLGFBQWEsQ0FBRWpsQixHQUFHLENBQUVaLE1BQU0saUJBQ3pCb0csc0RBQUEsQ0FBQ2tkLHlEQUFnQjtNQUVmdGpCLE1BQU0sRUFBRUEsTUFBTztNQUNmNUYsTUFBTSxFQUFFQSxNQUFPO01BQ2YwcEIsYUFBYSxFQUFFLEtBQU07TUFDckJDLGtCQUFrQixFQUFFLENBQUMsQ0FBQzBCLGVBQWUsQ0FBQ1EsSUFBSSxDQUFFcHBCLENBQUMsSUFBS0EsQ0FBQyxDQUFDZ0MsRUFBRSxLQUFLbUIsTUFBTSxDQUFDbkIsRUFBRSxDQUFFO01BQ3RFbWxCLGNBQWMsRUFBRUE7SUFBZSxHQUwxQmhrQixNQUFNLENBQUNuQixFQU1iLENBQ0YsQ0FBQyxFQUNELENBQUFQLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFc25CLGFBQWEsSUFBR0YsY0FBYyxnQkFDcEN0ZixzREFBQSxDQUFDa0MsaURBQU07TUFDTCxjQUFXLGtCQUFrQjtNQUM3QnNhLElBQUksRUFBQyxRQUFRO01BQ2JqYyxTQUFTLEVBQUVULCtEQUFzQjtNQUNqQ2dELE9BQU8sRUFBRTZjLFVBQVc7TUFBQXJlLFFBQUEsRUFFbkI3SyxDQUFDLENBQUMsbUJBQW1CO0lBQUMsQ0FDakIsQ0FBQyxHQUVULEVBQ0QsRUFDQSxDQUFBZ3BCLGFBQWEsYUFBYkEsYUFBYSx1QkFBYkEsYUFBYSxDQUFFcHFCLE1BQU0sSUFBRzJwQixzRUFBd0IsSUFDakQsQ0FBQVMsYUFBYSxhQUFiQSxhQUFhLHVCQUFiQSxhQUFhLENBQUVwcUIsTUFBTSxPQUFLNkMsS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUVzbkIsYUFBYSxpQkFDNUN4ZixzREFBQSxDQUFDa0MsaURBQU07TUFDTCxjQUFXLGtCQUFrQjtNQUM3QnNhLElBQUksRUFBQyxRQUFRO01BQ2JqYyxTQUFTLEVBQUVULCtEQUFzQjtNQUNqQ2dELE9BQU8sRUFBRThjLFVBQVc7TUFBQXRlLFFBQUEsRUFFbkI3SyxDQUFDLENBQUMsbUJBQW1CO0lBQUMsQ0FDakIsQ0FBQyxHQUVULEVBQ0Q7RUFBQSxDQUNELENBQUM7QUFFUCxDQUFDO0FBRUR3b0IsYUFBYSxDQUFDbGQsU0FBUyxHQUFHO0VBQ3hCN0osS0FBSyxFQUFFMkgsMERBQWdCO0VBQ3ZCN0wsTUFBTSxFQUFFNkwsMERBQWdCd0s7QUFDMUIsQ0FBQztBQUVELGlFQUFlNFUsYUFBYTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNsRjVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFd0M7QUFDTDtBQUNZO0FBQ1k7QUFDbkI7QUFDTTtBQUNKO0FBQ0M7QUFDcUI7QUFDM0I7QUFDUztBQUNIO0FBQ3FCO0FBQzdCO0FBQ1E7QUFDUTtBQUNQO0FBQ0c7QUFBQTtBQUUvQyxNQUFNb0IsVUFBVSxHQUFHO0VBQ2pCQyxNQUFNLEVBQUUsUUFBUTtFQUNoQkMsUUFBUSxFQUFFLFVBQVU7RUFDcEJDLE1BQU0sRUFBRTtBQUNWLENBQUM7QUFFRCxNQUFNQyxVQUFVLEdBQUczcEIsSUFBQSxJQUtiO0VBQUEsSUFMYztJQUNsQjRwQixZQUFZO0lBQ1pyQyxZQUFZO0lBQ1pzQyxjQUFjO0lBQ2RDO0VBQ0YsQ0FBQyxHQUFBOXBCLElBQUE7RUFDQyxNQUFNO0lBQUVMO0VBQUUsQ0FBQyxHQUFHK0wsNkRBQWMsQ0FBQyxDQUFDO0VBRTlCLElBQUk2YixZQUFZLEVBQUU7SUFDaEIsb0JBQ0VyZSx1REFBQSxDQUFDa0MsaURBQU07TUFDTDNCLFNBQVMsRUFBRVQsb0VBQTBCO01BQ3JDZ0QsT0FBTyxFQUFFQSxDQUFBLEtBQU04ZCxXQUFXLENBQUNQLFVBQVUsQ0FBQ0csTUFBTSxDQUFFO01BQUFsZixRQUFBLEVBRTdDN0ssQ0FBQyxDQUFDLDZCQUE2QjtJQUFDLENBQzNCLENBQUM7RUFFYjtFQUVBLG9CQUNFeUosd0RBQUEsQ0FBQ21SLDREQUFLO0lBQUM3RyxVQUFVLEVBQUMsUUFBUTtJQUFDM1UsU0FBUyxFQUFDLEtBQUs7SUFBQXlMLFFBQUEsZ0JBQ3hDdEIsdURBQUEsQ0FBQ2tDLGlEQUFNO01BQ0wzQixTQUFTLEVBQUVULHdFQUE4QjtNQUN6Q2dELE9BQU8sRUFBRUEsQ0FBQSxLQUFNOGQsV0FBVyxDQUFDUCxVQUFVLENBQUNDLE1BQU0sQ0FBRTtNQUFBaGYsUUFBQSxFQUU3Q29mLFlBQVksR0FDVGpxQixDQUFDLENBQUMsNkJBQTZCLENBQUMsR0FDaENBLENBQUMsQ0FBQywyQkFBMkI7SUFBQyxDQUM1QixDQUFDLEVBQ1JrcUIsY0FBYyxpQkFDYjNnQix1REFBQSxDQUFDa0MsaURBQU07TUFDTCxjQUFXLHdCQUF3QjtNQUNuQ3NhLElBQUksRUFBQyxRQUFRO01BQ2JqYyxTQUFTLEVBQUVULGdFQUFzQjtNQUNqQ2dELE9BQU8sRUFBRUEsQ0FBQSxLQUFNOGQsV0FBVyxDQUFDUCxVQUFVLENBQUNFLFFBQVEsQ0FBRTtNQUFBamYsUUFBQSxFQUUvQzdLLENBQUMsQ0FBQywrQkFBK0I7SUFBQyxDQUM3QixDQUNUO0VBQUEsQ0FDSSxDQUFDO0FBRVosQ0FBQztBQUVEZ3FCLFVBQVUsQ0FBQzFlLFNBQVMsR0FBRztFQUNyQjJlLFlBQVksRUFBRTdnQix3REFBYyxDQUFDb0MsVUFBVTtFQUN2Q29jLFlBQVksRUFBRXhlLHdEQUFjLENBQUNvQyxVQUFVO0VBQ3ZDMGUsY0FBYyxFQUFFOWdCLHdEQUFjLENBQUNvQyxVQUFVO0VBQ3pDMmUsV0FBVyxFQUFFL2dCLHdEQUFjLENBQUNvQztBQUM5QixDQUFDO0FBRUQsTUFBTWliLGdCQUFnQixHQUFHM2xCLEtBQUEsSUFPbkI7RUFBQSxJQUFBeXBCLG1CQUFBLEVBQUFDLGFBQUEsRUFBQXhDLGFBQUEsRUFBQVAsYUFBQSxFQUFBUSxjQUFBLEVBQUFQLGNBQUE7RUFBQSxJQVBvQjtJQUN4QnZrQixNQUFNO0lBQ041RixNQUFNO0lBQ04wcEIsYUFBYTtJQUNiQyxrQkFBa0I7SUFDbEJDLGNBQWM7SUFDZEM7RUFDRixDQUFDLEdBQUF0bUIsS0FBQTtFQUNDLE1BQU07SUFBRWQ7RUFBRSxDQUFDLEdBQUcrTCw2REFBYyxDQUFDLENBQUM7RUFDOUIsTUFBTTdPLFFBQVEsR0FBR29zQix3REFBVyxDQUFDLENBQUM7RUFDOUIsTUFBTTdELEdBQUcsR0FBR1IsOENBQU0sQ0FBQyxDQUFDO0VBQ3BCLE1BQU07SUFBRVksWUFBWTtJQUFFK0IsWUFBWTtJQUFFcUMsWUFBWTtJQUFFUTtFQUFZLENBQUMsR0FDN0RmLDBFQUFnQixDQUFDdm1CLE1BQU0sQ0FBQztFQUMxQixNQUFNLENBQUN1bkIsU0FBUyxFQUFFQyxZQUFZLENBQUMsR0FBR3poQiwrQ0FBUSxDQUFDLElBQUksQ0FBQztFQUNoRCxNQUFNMGhCLFlBQVksR0FBR3BCLHlFQUFxQixDQUFDanNCLE1BQU0sQ0FBQztFQUNsRCxNQUFNc3RCLG9CQUFvQixHQUFHRCxZQUFZLEdBQUduRixHQUFHO0VBQy9DLE1BQU15RSxjQUFjLEdBQ2xCVyxvQkFBb0IsSUFBSUosV0FBVyxJQUFJLENBQUNyRCx3QkFBd0I7RUFFbEUsTUFBTTBELGdCQUFnQixHQUFHQSxDQUFBLEtBQU07SUFDN0I1dEIsUUFBUSxDQUFDRCxzREFBVyxDQUFDLENBQUMsQ0FBQztJQUN2QjB0QixZQUFZLENBQUMsSUFBSSxDQUFDO0VBQ3BCLENBQUM7RUFFRCxNQUFNSSxlQUFlLEdBQUlDLElBQUksSUFBSztJQUNoQzl0QixRQUFRLENBQUNELHNEQUFXLENBQUMsQ0FBQyxDQUFDO0lBQ3ZCMHRCLFlBQVksQ0FBQ0ssSUFBSSxDQUFDO0VBQ3BCLENBQUM7RUFFRCxvQkFDRXZoQix3REFBQSxDQUFDMlcsK0NBQUk7SUFDSHRELFNBQVM7SUFFVGhULFNBQVMsS0FBQXJMLE1BQUEsQ0FBSzRLLDhEQUFtQixPQUFBNUssTUFBQSxDQUMvQndvQixhQUFhLEdBQUc1ZCw2REFBa0IsR0FBRyxFQUFFLE9BQUE1SyxNQUFBLENBQ3JDd29CLGFBQWEsSUFBSSxDQUFDcEIsWUFBWSxHQUFHeGMsZ0VBQXFCLEdBQUcsRUFBRSxPQUFBNUssTUFBQSxDQUM3RHlvQixrQkFBa0IsR0FBRzdkLDBEQUFlLEdBQUcsRUFBRSxDQUN4QztJQUFBd0IsUUFBQSxHQUVGb2MsYUFBYSxpQkFDWjFkLHVEQUFBLENBQUM2VywrQ0FBSTtNQUFDRyxJQUFJO01BQUNDLEVBQUUsRUFBRSxDQUFFO01BQUM5QixPQUFPLEVBQUUsQ0FBRTtNQUFDNVUsU0FBUyxFQUFFVCwwREFBZ0I7TUFBQXdCLFFBQUEsZUFDdkR0Qix1REFBQSxDQUFDMEgsK0RBQVE7UUFDUCxjQUFXLHdCQUF3QjtRQUNuQzhVLElBQUksRUFBQyxVQUFVO1FBQ2ZqVCxPQUFPLEVBQUVvVSxrQkFBbUI7UUFDNUJuVixRQUFRLEVBQUc1UCxDQUFDLElBQUtnbEIsY0FBYyxDQUFDaGxCLENBQUMsRUFBRWdCLE1BQU0sQ0FBRTtRQUMzQzBMLEVBQUUsRUFBRTtVQUNGLG9CQUFvQixFQUFFO1lBQ3BCSSxRQUFRLEVBQUU7VUFDWjtRQUNGLENBQUU7UUFDRmtFLFFBQVEsRUFBRSxDQUFDMFM7TUFBYSxDQUN6QjtJQUFDLENBQ0UsQ0FDUCxlQUNEcGMsd0RBQUEsQ0FBQzJXLCtDQUFJO01BQ0hHLElBQUk7TUFDSnpELFNBQVM7TUFDVCxlQUFZO01BQ1o7TUFBQTtNQUNBMEQsRUFBRSxFQUFFeUcsYUFBYSxHQUFHLEVBQUUsR0FBRyxFQUFHO01BQUFwYyxRQUFBLGdCQUU1QnRCLHVEQUFBLENBQUM2VywrQ0FBSTtRQUNISSxFQUFFLEVBQUUsQ0FBRTtRQUNOdEcsRUFBRSxFQUFFLENBQUU7UUFDTm9SLEVBQUUsRUFBRSxDQUFFO1FBQ04vSyxJQUFJO1FBQ0p6VyxTQUFTLEVBQUVULGtFQUF3QjtRQUNuQ2lYLE9BQU8sRUFBQyxlQUFlO1FBQUF6VixRQUFBLGVBRXZCdEIsdURBQUEsQ0FBQ3FSLDREQUFLO1VBQ0ovTCxFQUFFLEVBQUU7WUFDRnVQLGNBQWMsRUFBRTtVQUNsQixDQUFFO1VBQ0ZoZixTQUFTLEVBQUMsS0FBSztVQUFBeUwsUUFBQSxlQUVmdEIsdURBQUE7WUFBQXNCLFFBQUEsR0FBQTBmLG1CQUFBLEdBQUtwbkIsTUFBTSxDQUFDb2hCLFdBQVcsY0FBQWdHLG1CQUFBLHVCQUFsQkEsbUJBQUEsQ0FBb0J4b0I7VUFBSSxDQUFLO1FBQUMsQ0FDOUI7TUFBQyxDQUNKLENBQUMsZUFDUHdILHVEQUFBLENBQUM2VywrQ0FBSTtRQUFDdFcsU0FBUyxFQUFFVCxxRUFBMkI7UUFBQ21YLEVBQUUsRUFBRSxDQUFFO1FBQUN0RyxFQUFFLEVBQUUsQ0FBRTtRQUFDdVIsRUFBRSxFQUFFLENBQUU7UUFBQ2xMLElBQUk7UUFBQTFWLFFBQUEsR0FBQTJmLGFBQUEsR0FDbkVybkIsTUFBTSxDQUFDdW9CLEtBQUssY0FBQWxCLGFBQUEsZ0JBQUFBLGFBQUEsR0FBWkEsYUFBQSxDQUFjbUIsUUFBUSxjQUFBbkIsYUFBQSx1QkFBdEJBLGFBQUEsQ0FBd0J6bUIsR0FBRyxDQUFFMlcsRUFBRSxpQkFDOUJuUix1REFBQSxDQUFDaUQsa0RBQU87VUFBQzdMLEtBQUssRUFBRStaLEVBQUUsQ0FBQzNZLElBQUs7VUFBQThJLFFBQUEsZUFDdEJ0Qix1REFBQSxDQUFDSSwwREFBZ0I7WUFBQzVILElBQUksRUFBRTJZLEVBQUUsQ0FBQzNZLElBQUs7WUFBQzhILEtBQUssRUFBRTZRLEVBQUUsQ0FBQzdRO1VBQU0sQ0FBRTtRQUFDLEdBRHhCNlEsRUFBRSxDQUFDM1ksSUFFeEIsQ0FDVjtNQUFDLENBQ0UsQ0FBQyxlQUNQMEgsd0RBQUEsQ0FBQzJXLCtDQUFJO1FBQUNJLEVBQUUsRUFBRSxFQUFHO1FBQUMzUixFQUFFLEVBQUU7VUFBRXlYLEVBQUUsRUFBRSxDQUFDO1VBQUVuTSxFQUFFLEVBQUU7UUFBRSxDQUFFO1FBQUNvRyxJQUFJO1FBQUExVixRQUFBLGdCQUN0Q3RCLHVEQUFBLENBQUNpZSx3REFBYztVQUNicmtCLE1BQU0sRUFBRUEsTUFBTztVQUNmaWtCLHdCQUF3QixFQUFFLENBQUMsQ0FBQ0E7UUFBeUIsQ0FDdEQsQ0FBQyxlQUNGM2Qsd0RBQUE7VUFBTUssU0FBUyxFQUFFVCwwREFBZ0I7VUFBQXdCLFFBQUEsR0FDOUI3SyxDQUFDLENBQUMseUJBQXlCLENBQUMsRUFBQyxHQUFDLEVBQUMsR0FBRyxlQUNuQ3VKLHVEQUFBLENBQUNvRCxrREFBUTtZQUNQQyxJQUFJLEVBQUV6SixNQUFNLENBQUMySyxNQUFPO1lBQ3BCakIsV0FBVyxFQUFFN00sQ0FBQyxDQUFDLGtDQUFrQztVQUFFLENBQ3BELENBQUM7UUFBQSxDQUNFLENBQUM7TUFBQSxDQUNILENBQUMsZUFDUHlKLHdEQUFBLENBQUNrUCw4Q0FBRztRQUFDN08sU0FBUyxFQUFFVCw4REFBb0I7UUFBQ2lkLEVBQUUsRUFBRTtVQUFFOUYsRUFBRSxFQUFFO1FBQUUsQ0FBRTtRQUFDckcsRUFBRSxFQUFFO1VBQUVxRyxFQUFFLEVBQUU7UUFBRSxDQUFFO1FBQUEzVixRQUFBLGdCQUNoRXRCLHVEQUFBLENBQUNvUCw4Q0FBRztVQUFBOU4sUUFBQSxlQUNGdEIsdURBQUEsQ0FBQ2dnQixxREFBWTtZQUFDcG1CLE1BQU0sRUFBRUE7VUFBTyxDQUFFO1FBQUMsQ0FDN0IsQ0FBQyxlQUNOb0csdURBQUEsQ0FBQ29QLDhDQUFHO1VBQUM3TyxTQUFTLEVBQUVULHFFQUEyQjtVQUFBd0IsUUFBQSxFQUN4QzFILE1BQU0sQ0FBQzBrQixTQUFTLElBQUksQ0FBQ1osYUFBYSxpQkFDakMxZCx1REFBQSxDQUFDeWdCLFVBQVU7WUFDVHBDLFlBQVksRUFBRUEsWUFBYTtZQUMzQnFDLFlBQVksRUFBRUEsWUFBYTtZQUMzQkMsY0FBYyxFQUFFQSxjQUFjLElBQUksQ0FBQzlDLHdCQUF5QjtZQUM1RCtDLFdBQVcsRUFBRVk7VUFBZ0IsQ0FDOUI7UUFDRixDQUNFLENBQUM7TUFBQSxDQUNILENBQUMsZUFDTnhoQix1REFBQSxDQUFDa2dCLHNEQUFZO1FBQ1hsc0IsTUFBTSxFQUFFQSxNQUFPO1FBQ2ZxSCxRQUFRLEVBQUV6QixNQUFNLGFBQU5BLE1BQU0sdUJBQU5BLE1BQU0sQ0FBRW5CLEVBQUc7UUFDckJNLE9BQU8sRUFBRSxDQUFBYSxNQUFNLGFBQU5BLE1BQU0sdUJBQU5BLE1BQU0sQ0FBRUcsUUFBUSxNQUFJSCxNQUFNLGFBQU5BLE1BQU0sZ0JBQUE2a0IsYUFBQSxHQUFON2tCLE1BQU0sQ0FBRTFCLEtBQUssY0FBQXVtQixhQUFBLHVCQUFiQSxhQUFBLENBQWVobUIsRUFBRSxDQUFDO1FBQy9DK3BCLE9BQU8sRUFBRTVvQixNQUFNLGFBQU5BLE1BQU0sZ0JBQUFza0IsYUFBQSxHQUFOdGtCLE1BQU0sQ0FBRTJELEtBQUssY0FBQTJnQixhQUFBLHVCQUFiQSxhQUFBLENBQWV6bEIsRUFBRztRQUMzQmlLLElBQUksRUFBRXllLFNBQVMsS0FBS2QsVUFBVSxDQUFDQyxNQUFPO1FBQ3RDMWQsT0FBTyxFQUFFMmU7TUFBaUIsQ0FDM0IsQ0FBQyxlQUNGdmhCLHVEQUFBLENBQUNvZ0Isc0RBQVk7UUFDWC9rQixRQUFRLEVBQUV6QixNQUFNLGFBQU5BLE1BQU0sdUJBQU5BLE1BQU0sQ0FBRW5CLEVBQUc7UUFDckJNLE9BQU8sRUFBRSxDQUFBYSxNQUFNLGFBQU5BLE1BQU0sdUJBQU5BLE1BQU0sQ0FBRUcsUUFBUSxNQUFJSCxNQUFNLGFBQU5BLE1BQU0sZ0JBQUE4a0IsY0FBQSxHQUFOOWtCLE1BQU0sQ0FBRTFCLEtBQUssY0FBQXdtQixjQUFBLHVCQUFiQSxjQUFBLENBQWVqbUIsRUFBRSxDQUFDO1FBQy9DK3BCLE9BQU8sRUFBRTVvQixNQUFNLGFBQU5BLE1BQU0sZ0JBQUF1a0IsY0FBQSxHQUFOdmtCLE1BQU0sQ0FBRTJELEtBQUssY0FBQTRnQixjQUFBLHVCQUFiQSxjQUFBLENBQWUxbEIsRUFBRztRQUMzQmlLLElBQUksRUFBRSxDQUFDMmQsVUFBVSxDQUFDRSxRQUFRLEVBQUVGLFVBQVUsQ0FBQ0csTUFBTSxDQUFDLENBQUN0VyxRQUFRLENBQUNpWCxTQUFTLENBQUU7UUFDbkV2ZSxPQUFPLEVBQUUyZTtNQUFpQixDQUMzQixDQUFDO0lBQUEsQ0FDRSxDQUFDO0VBQUEsR0FqR0YzbkIsTUFBTSxDQUFDbkIsRUFrR1IsQ0FBQztBQUVYLENBQUM7QUFFRHlrQixnQkFBZ0IsQ0FBQ25iLFNBQVMsR0FBRztFQUMzQm5JLE1BQU0sRUFBRWlHLHVEQUFlLENBQUM7SUFDdEJwSCxFQUFFLEVBQUVvSCwwREFBZ0I7SUFDcEI5RixRQUFRLEVBQUU4RiwwREFBZ0I7SUFDMUJ0QyxLQUFLLEVBQUVzQyx1REFBZSxDQUFDO01BQ3JCcEgsRUFBRSxFQUFFb0gsMERBQWdCO01BQ3BCbE4sS0FBSyxFQUFFa04sMERBQWdCbUM7SUFDekIsQ0FBQyxDQUFDO0lBQ0Z1QyxNQUFNLEVBQUUxRSwwREFBZ0I7SUFDeEI0aUIscUJBQXFCLEVBQUU1aUIsMERBQWdCO0lBQ3ZDbWIsV0FBVyxFQUFFbmIsdURBQWUsQ0FBQztNQUMzQnJILElBQUksRUFBRXFILDBEQUFnQm1DO0lBQ3hCLENBQUMsQ0FBQztJQUNGc2MsU0FBUyxFQUFFemUsd0RBQWN5RTtFQUMzQixDQUFDLENBQUM7RUFDRnRRLE1BQU0sRUFBRTZMLDBEQUFnQjtFQUN4QjZkLGFBQWEsRUFBRTdkLHdEQUFjO0VBQzdCOGQsa0JBQWtCLEVBQUU5ZCx3REFBYztFQUNsQytkLGNBQWMsRUFBRS9kLHdEQUFjO0VBQzlCZ2Usd0JBQXdCLEVBQUVoZSx3REFBY3lFO0FBQzFDLENBQUM7QUFFRCxpRUFBZTRZLGdCQUFnQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3BQUztBQUNMO0FBQ1k7QUFDTDtBQUNKO0FBQ0Y7QUFDUTtBQUNEO0FBQ1M7QUFDTjtBQUNDO0FBQ2E7QUFBQTtBQUU1RCxNQUFNNEYsUUFBUSxHQUFJdGlCLEtBQUssSUFBSztFQUMxQixNQUFNO0lBQUVjLFFBQVE7SUFBRXRLLEtBQUs7SUFBRStyQjtFQUFNLENBQUMsR0FBR3ZpQixLQUFLO0VBQ3hDLG9CQUNFUix1REFBQTtJQUNFd2MsSUFBSSxFQUFDLFVBQVU7SUFDZndHLE1BQU0sRUFBRWhzQixLQUFLLEtBQUsrckIsS0FBTTtJQUN4QnRxQixFQUFFLGNBQUF2RCxNQUFBLENBQWM2dEIsS0FBSyxDQUFHO0lBQ3hCLDBCQUFBN3RCLE1BQUEsQ0FBd0I2dEIsS0FBSyxDQUFHO0lBQUF6aEIsUUFBQSxFQUUvQnRLLEtBQUssS0FBSytyQixLQUFLLElBQUl6aEI7RUFBUSxDQUN6QixDQUFDO0FBRVYsQ0FBQztBQUVELE1BQU0yaEIsdUJBQXVCLEdBQUduc0IsSUFBQSxJQU0xQjtFQUFBLElBTjJCO0lBQy9Cb3NCLFFBQVE7SUFDUmx2QixNQUFNO0lBQ05rRSxLQUFLO0lBQ0xpckIsZUFBZTtJQUNmL0Q7RUFDRixDQUFDLEdBQUF0b0IsSUFBQTtFQUNDLE1BQU07SUFBRUw7RUFBRSxDQUFDLEdBQUcrTCw2REFBYyxDQUFDLENBQUM7RUFDOUIsTUFBTSxDQUFDeEwsS0FBSyxFQUFFb3NCLFFBQVEsQ0FBQyxHQUFHempCLCtDQUFRLENBQUMsQ0FBQyxDQUFDO0VBQ3JDLE1BQU1pUCxZQUFZLEdBQUdBLENBQUN5VSxDQUFDLEVBQUUzWixRQUFRLEtBQUs7SUFDcEMwWixRQUFRLENBQUMxWixRQUFRLENBQUM7RUFDcEIsQ0FBQztFQUNELE1BQU0sQ0FBQzJWLGVBQWUsRUFBRWlFLGtCQUFrQixDQUFDLEdBQUczakIsK0NBQVEsQ0FBQyxFQUFFLENBQUM7RUFDMUQsTUFBTSxDQUFDbWMsYUFBYSxFQUFFeUgsZ0JBQWdCLENBQUMsR0FBRzVqQiwrQ0FBUSxDQUFDLEtBQUssQ0FBQztFQUN6RCxNQUFNLENBQUM2akIsaUJBQWlCLEVBQUVDLG9CQUFvQixDQUFDLEdBQUc5akIsK0NBQVEsQ0FBQyxLQUFLLENBQUM7RUFFakUsTUFBTW9jLGFBQWEsR0FBR0EsQ0FBQSxLQUFNO0lBQzFCd0gsZ0JBQWdCLENBQUMsSUFBSSxDQUFDO0VBQ3hCLENBQUM7RUFDRCxNQUFNRyxxQkFBcUIsR0FBSTlwQixNQUFNLElBQUs7SUFDeEMsTUFBTStwQixjQUFjLEdBQUd0RSxlQUFlLENBQUMxcUIsTUFBTSxDQUFFOEIsQ0FBQyxJQUFLQSxDQUFDLENBQUNnQyxFQUFFLEtBQUttQixNQUFNLENBQUNuQixFQUFFLENBQUM7SUFDeEU2cUIsa0JBQWtCLENBQUNLLGNBQWMsQ0FBQztFQUNwQyxDQUFDO0VBQ0QsTUFBTS9GLGNBQWMsR0FBR0EsQ0FBQ2hsQixDQUFDLEVBQUVnQixNQUFNLEtBQUs7SUFDcEMsTUFBTTtNQUFFMlA7SUFBUSxDQUFDLEdBQUczUSxDQUFDLENBQUN3UixNQUFNO0lBQzVCLElBQUliLE9BQU8sRUFBRTtNQUFBLElBQUEyVixvQkFBQTtNQUNYLE1BQU0wRSxjQUFjLEdBQUcxckIsS0FBSyxhQUFMQSxLQUFLLGdCQUFBZ25CLG9CQUFBLEdBQUxobkIsS0FBSyxDQUFFK2tCLGFBQWEsY0FBQWlDLG9CQUFBLHVCQUFwQkEsb0JBQUEsQ0FBc0JXLElBQUksQ0FDOUNwcEIsQ0FBQyxJQUFLQSxDQUFDLENBQUNnQyxFQUFFLEtBQUttQixNQUFNLENBQUNuQixFQUN6QixDQUFDO01BQ0Q2cUIsa0JBQWtCLENBQUMsQ0FBQyxHQUFHakUsZUFBZSxFQUFFdUUsY0FBYyxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNO01BQ0xGLHFCQUFxQixDQUFDOXBCLE1BQU0sQ0FBQztJQUMvQjtFQUNGLENBQUM7RUFFRCxNQUFNaXFCLGtCQUFrQixHQUFHQSxDQUFBLEtBQU07SUFDL0JOLGdCQUFnQixDQUFDLEtBQUssQ0FBQztJQUN2QkQsa0JBQWtCLENBQUMsRUFBRSxDQUFDO0VBQ3hCLENBQUM7RUFFRCxNQUFNUSxzQkFBc0IsR0FBR0EsQ0FBQSxLQUFNO0lBQ25DUCxnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7SUFDdkJELGtCQUFrQixDQUFDLEVBQUUsQ0FBQztFQUN4QixDQUFDO0VBRUQsTUFBTVMsV0FBVyxHQUFHQSxDQUFBLEtBQ2xCWixlQUFlLGlCQUNibmpCLHVEQUFBLENBQUMyWCwwREFBVTtJQUNUN2QsT0FBTyxFQUFFckQsQ0FBQyxDQUFDLHVDQUF1QyxDQUFFO0lBQ3BENFEsS0FBSyxFQUFDLFNBQVM7SUFDZnVRLFVBQVUsRUFBQztFQUFvQixDQUNoQyxDQUNGO0VBRUgsT0FBT3NMLFFBQVEsZ0JBQ2JoakIsd0RBQUEsQ0FBQ2tQLDhDQUFHO0lBQ0Y3TyxTQUFTLEVBQUVULHFFQUEyQjtJQUN0QyxlQUFZLDhCQUE4QjtJQUFBd0IsUUFBQSxnQkFFMUN0Qix1REFBQSxDQUFDb1AsOENBQUc7TUFBQzlKLEVBQUUsRUFBRTtRQUFFMGUsV0FBVyxFQUFFLFNBQVM7UUFBRXBULEVBQUUsRUFBRTtNQUFFLENBQUU7TUFBQXRQLFFBQUEsZUFDekNwQix3REFBQSxDQUFDd2lCLDJEQUFJO1FBQ0gxckIsS0FBSyxFQUFFQSxLQUFNO1FBQ2J3UixRQUFRLEVBQUVvRyxZQUFhO1FBQ3ZCLGNBQVcsbUJBQW1CO1FBQUF0TixRQUFBLGdCQUU5QnRCLHVEQUFBLENBQUMyaUIsMERBQUc7VUFBQ3ZaLEtBQUssRUFBRTNTLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBRTtVQUFDOEosU0FBUyxFQUFFVCw0REFBaUJta0I7UUFBQyxDQUFFLENBQUMsZUFDakVqa0IsdURBQUEsQ0FBQzJpQiwwREFBRztVQUFDdlosS0FBSyxFQUFFM1MsQ0FBQyxDQUFDLGdCQUFnQixDQUFFO1VBQUM4SixTQUFTLEVBQUVULDREQUFpQm1rQjtRQUFDLENBQUUsQ0FBQztNQUFBLENBQzdEO0lBQUMsQ0FDSixDQUFDLEVBQ0xGLFdBQVcsQ0FBQyxDQUFDLGVBQ2QvakIsdURBQUEsQ0FBQzhpQixRQUFRO01BQUM5ckIsS0FBSyxFQUFFQSxLQUFNO01BQUMrckIsS0FBSyxFQUFFLENBQUU7TUFBQXpoQixRQUFBLGVBQy9CdEIsdURBQUEsQ0FBQ2lmLHNEQUFhO1FBQ1pqckIsTUFBTSxFQUFFQSxNQUFPO1FBQ2ZrRSxLQUFLLEVBQUVBLEtBQU07UUFDYmtuQixlQUFlLEVBQUVBLGVBQWdCO1FBQ2pDQyxlQUFlLEVBQUVBLGVBQWdCO1FBQ2pDekIsY0FBYyxFQUFFQSxjQUFlO1FBQy9COUIsYUFBYSxFQUFFQSxhQUFjO1FBQzdCNEgscUJBQXFCLEVBQUVBO01BQXNCLENBQzlDO0lBQUMsQ0FDTSxDQUFDLGVBQ1h4akIsd0RBQUEsQ0FBQzRpQixRQUFRO01BQUM5ckIsS0FBSyxFQUFFQSxLQUFNO01BQUMrckIsS0FBSyxFQUFFLENBQUU7TUFBQXpoQixRQUFBLGdCQUMvQnRCLHVEQUFBLENBQUM2YyxxREFBWTtRQUNYM2tCLEtBQUssRUFBRUEsS0FBTTtRQUNibEUsTUFBTSxFQUFFQSxNQUFPO1FBQ2YrbkIsYUFBYSxFQUFFQSxhQUFjO1FBQzdCRCxhQUFhLEVBQUVBLGFBQWM7UUFDN0JFLG1CQUFtQixFQUFFQSxDQUFBLEtBQU15SCxvQkFBb0IsQ0FBQyxJQUFJO01BQUUsQ0FDdkQsQ0FBQyxlQUNGempCLHVEQUFBLENBQUM0aUIsdURBQW1CO1FBQ2xCdm9CLE9BQU8sRUFBRSxDQUFBbkMsS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUUra0IsYUFBYSxLQUFJLEVBQUc7UUFDcEN2YSxJQUFJLEVBQUVvWixhQUFjO1FBQ3BCb0ksb0JBQW9CLEVBQUVBLENBQUEsS0FBTUosc0JBQXNCLENBQUMsQ0FBRTtRQUNyREssYUFBYSxFQUFFQSxDQUFBLEtBQU1OLGtCQUFrQixDQUFDLENBQUU7UUFDMUN4RSxlQUFlLEVBQUVBLGVBQWdCO1FBQ2pDekIsY0FBYyxFQUFFQSxjQUFlO1FBQy9COEYscUJBQXFCLEVBQUVBO01BQXNCLENBQzlDLENBQUMsZUFDRjFqQix1REFBQSxDQUFDNmlCLHNFQUFhO1FBQ1p4b0IsT0FBTyxFQUFFbkMsS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUUra0IsYUFBYztRQUM5QjlCLFFBQVEsRUFBRWpqQixLQUFLLENBQUNpakIsUUFBUztRQUN6QnpZLElBQUksRUFBRThnQixpQkFBa0I7UUFDeEJXLGFBQWEsRUFBRUEsQ0FBQSxLQUFNVixvQkFBb0IsQ0FBQyxLQUFLO01BQUUsQ0FDbEQsQ0FBQztJQUFBLENBQ00sQ0FBQztFQUFBLENBQ1IsQ0FBQyxnQkFFTnZqQix3REFBQSxDQUFBdVosd0RBQUE7SUFBQW5ZLFFBQUEsZ0JBQ0V0Qix1REFBQSxDQUFDNlcsK0NBQUk7TUFBQ0csSUFBSTtNQUFDb04sRUFBRSxFQUFFLEVBQUc7TUFBQTlpQixRQUFBLEVBQ2Z5aUIsV0FBVyxDQUFDO0lBQUMsQ0FDVixDQUFDLGVBQ1AvakIsdURBQUEsQ0FBQzZXLCtDQUFJO01BQ0gxQixPQUFPLEVBQUUsQ0FBRTtNQUNYNkIsSUFBSTtNQUNKb04sRUFBRSxFQUFFLENBQUU7TUFDTmxzQixLQUFLLEVBQUU7UUFBRWtzQixFQUFFLEVBQUU7TUFBRSxDQUFFO01BQ2pCN2pCLFNBQVMsRUFBRVQscUVBQTJCO01BQ3RDLGVBQVksK0JBQStCO01BQUF3QixRQUFBLGVBRTNDdEIsdURBQUEsQ0FBQ2lmLHNEQUFhO1FBQ1pqckIsTUFBTSxFQUFFQSxNQUFPO1FBQ2ZrRSxLQUFLLEVBQUVBLEtBQU07UUFDYmtuQixlQUFlLEVBQUVBLGVBQWdCO1FBQ2pDQyxlQUFlLEVBQUVBLGVBQWdCO1FBQ2pDekIsY0FBYyxFQUFFQSxjQUFlO1FBQy9COUIsYUFBYSxFQUFFQSxhQUFjO1FBQzdCNEgscUJBQXFCLEVBQUVBO01BQXNCLENBQzlDO0lBQUMsQ0FDRSxDQUFDLGVBQ1AxakIsdURBQUEsQ0FBQzZXLCtDQUFJO01BQUMxQixPQUFPLEVBQUUsQ0FBRTtNQUFDNkIsSUFBSTtNQUFDb04sRUFBRSxFQUFFLENBQUU7TUFBQ2xzQixLQUFLLEVBQUU7UUFBRWtzQixFQUFFLEVBQUU7TUFBRSxDQUFFO01BQUE5aUIsUUFBQSxlQUM3Q3RCLHVEQUFBLENBQUM2YyxxREFBWTtRQUNYN29CLE1BQU0sRUFBRUEsTUFBTztRQUNma0UsS0FBSyxFQUFFQSxLQUFNO1FBQ2I2akIsYUFBYSxFQUFFQSxhQUFjO1FBQzdCRCxhQUFhLEVBQUVBLGFBQWM7UUFDN0JFLG1CQUFtQixFQUFFQSxDQUFBLEtBQU15SCxvQkFBb0IsQ0FBQyxJQUFJO01BQUUsQ0FDdkQ7SUFBQyxDQUNFLENBQUMsZUFDUHpqQix1REFBQSxDQUFDNGlCLHVEQUFtQjtNQUNsQnZvQixPQUFPLEVBQUUsQ0FBQW5DLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFK2tCLGFBQWEsS0FBSSxFQUFHO01BQ3BDdmEsSUFBSSxFQUFFb1osYUFBYztNQUNwQm9JLG9CQUFvQixFQUFFQSxDQUFBLEtBQU1KLHNCQUFzQixDQUFDLENBQUU7TUFDckRLLGFBQWEsRUFBRUEsQ0FBQSxLQUFNTixrQkFBa0IsQ0FBQyxDQUFFO01BQzFDeEUsZUFBZSxFQUFFQSxlQUFnQjtNQUNqQ3pCLGNBQWMsRUFBRUEsY0FBZTtNQUMvQjhGLHFCQUFxQixFQUFFQTtJQUFzQixDQUM5QyxDQUFDLGVBQ0YxakIsdURBQUEsQ0FBQzZpQixzRUFBYTtNQUNaeG9CLE9BQU8sRUFBRW5DLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFK2tCLGFBQWM7TUFDOUI5QixRQUFRLEVBQUVqakIsS0FBSyxDQUFDaWpCLFFBQVM7TUFDekJ6WSxJQUFJLEVBQUU4Z0IsaUJBQWtCO01BQ3hCVyxhQUFhLEVBQUVBLENBQUEsS0FBTVYsb0JBQW9CLENBQUMsS0FBSztJQUFFLENBQ2xELENBQUM7RUFBQSxDQUNGLENBQ0g7QUFDSCxDQUFDO0FBRURSLHVCQUF1QixDQUFDbGhCLFNBQVMsR0FBRztFQUNsQy9OLE1BQU0sRUFBRTZMLDBEQUFnQjtFQUN4QjNILEtBQUssRUFBRTJILHVEQUFlLENBQUM7SUFDckJvZCxhQUFhLEVBQUVwZCx5REFBaUIsQ0FBQ25KLE1BQU07RUFDekMsQ0FBQyxDQUFDO0VBQ0Z3c0IsUUFBUSxFQUFFcmpCLHdEQUFjO0VBQ3hCc2pCLGVBQWUsRUFBRXRqQix3REFBYztFQUMvQnVmLGVBQWUsRUFBRXZmLHdEQUFjK0Y7QUFDakMsQ0FBQztBQUVELGlFQUFlcWQsdUJBQXVCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNsTUU7QUFDTDtBQUNrQztBQUN0QjtBQUNHO0FBQ0Y7QUFDUTtBQUNOO0FBQ0g7QUFDTztBQUNVO0FBQzdCO0FBQ1k7QUFBQTtBQUUvQyxNQUFNOUssVUFBVSxHQUFHcmhCLElBQUEsSUFBdUI7RUFBQSxJQUFBb29CLG9CQUFBO0VBQUEsSUFBdEI7SUFBRWxyQixNQUFNO0lBQUVrRTtFQUFNLENBQUMsR0FBQXBCLElBQUE7RUFDbkMsTUFBTTtJQUFFTDtFQUFFLENBQUMsR0FBRytMLDZEQUFjLENBQUMsQ0FBQztFQUM5QixNQUFNN08sUUFBUSxHQUFHb3NCLHdEQUFXLENBQUMsQ0FBQztFQUM5QixNQUFNO0lBQUV5RSxlQUFlO0lBQUU3dkIsTUFBTTtJQUFFRTtFQUFLLENBQUMsR0FBR3FhLHdEQUFXLENBQ2xEVyxLQUFLLElBQUtBLEtBQUssQ0FBQy9YLFdBQVcsSUFBSSxDQUFDLENBQUMsRUFDbENxWCxxREFDRixDQUFDO0VBQ0QsTUFBTS9JLEtBQUssR0FBR2llLDhEQUFRLENBQUMsQ0FBQztFQUN4QixNQUFNbkIsUUFBUSxHQUFHb0Isa0VBQWEsQ0FBQ2xlLEtBQUssQ0FBQ3FlLFdBQVcsQ0FBQ0MsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0VBQzVELE1BQU0sQ0FBQ0MsZ0JBQWdCLEVBQUVDLGlCQUFpQixDQUFDLEdBQUdqbEIsK0NBQVEsQ0FBQyxLQUFLLENBQUM7RUFDN0QsTUFBTXdqQixlQUFlLElBQUFqRSxvQkFBQSxHQUFHaG5CLEtBQUssQ0FBQytrQixhQUFhLGNBQUFpQyxvQkFBQSx1QkFBbkJBLG9CQUFBLENBQXFCVyxJQUFJLENBQzlDam1CLE1BQU07SUFBQSxJQUFBc2tCLGFBQUE7SUFBQSxPQUFLLEVBQUFBLGFBQUEsR0FBQXRrQixNQUFNLENBQUMyRCxLQUFLLGNBQUEyZ0IsYUFBQSx1QkFBWkEsYUFBQSxDQUFjM25CLE1BQU0sTUFBSyxZQUFZO0VBQUEsQ0FDbkQsQ0FBQztFQUVELE1BQU02b0IsZUFBZSxHQUFHQSxDQUFBLEtBQ3RCenJCLFFBQVEsQ0FDTjZGLDJEQUFpQixDQUFDO0lBQ2hCVCxPQUFPLEVBQUViLEtBQUssQ0FBQ08sRUFBRTtJQUNqQmhCLElBQUksRUFBRVMsS0FBSyxDQUFDMnNCLG9CQUFvQixHQUFHek0sMkRBQWE7SUFDaEQxZ0IsT0FBTyxFQUFFOHNCLGVBQWU7SUFDeEI3dkIsTUFBTTtJQUNORTtFQUNGLENBQUMsQ0FDSCxDQUFDO0VBRUgsb0JBQ0VxTCx3REFBQSxDQUFBdVosd0RBQUE7SUFBQW5ZLFFBQUEsZ0JBQ0VwQix3REFBQSxDQUFDa1AsOENBQUc7TUFDRjlKLEVBQUUsRUFBRTtRQUFFNlAsT0FBTyxFQUFFO1VBQUU4QixFQUFFLEVBQUUsQ0FBQztVQUFFbU4sRUFBRSxFQUFFLENBQUM7VUFBRVUsRUFBRSxFQUFFO1FBQUU7TUFBRSxDQUFFO01BQ3pDdmtCLFNBQVMsRUFBRVQsMEVBQWdDO01BQUF3QixRQUFBLGdCQUUzQ3BCLHdEQUFBO1FBQ0VLLFNBQVMsRUFBRVQsaUVBQXVCO1FBQ2xDLGVBQVksNkJBQTZCO1FBQUF3QixRQUFBLEdBRXhDN0ssQ0FBQyxDQUFDLGtCQUFrQixDQUFDLEVBQUMsSUFBRSxFQUFDOHRCLHdEQUFnQixDQUFDcnNCLEtBQUssQ0FBQ2tqQixPQUFPLENBQUMsRUFBQyxJQUFFLEVBQUMsR0FBRyxFQUMvRDNrQixDQUFDLENBQUMsd0JBQXdCLENBQUMsRUFBQyxHQUFDLEVBQUMsR0FBRyxlQUNsQ3VKLHVEQUFBLENBQUNvRCxrREFBUTtVQUNQQyxJQUFJLEVBQUVuTCxLQUFLLENBQUNxTSxNQUFPO1VBQ25CakIsV0FBVyxFQUFFN00sQ0FBQyxDQUFDLGlDQUFpQztRQUFFLENBQ25ELENBQUM7TUFBQSxDQUNFLENBQUMsRUFDTnlzQixRQUFRLGlCQUNQbGpCLHVEQUFBLENBQUNrQyxpREFBTTtRQUNMb0QsRUFBRSxFQUFFO1VBQUU2UCxPQUFPLEVBQUU7UUFBVyxDQUFFO1FBQzVCOVAsT0FBTyxFQUFDLFdBQVc7UUFDbkJnQyxLQUFLLEVBQUMsU0FBUztRQUNmb1EsSUFBSSxFQUFDLE9BQU87UUFDWjNOLFNBQVM7UUFDVGhILE9BQU8sRUFBRUEsQ0FBQSxLQUFNOGhCLGlCQUFpQixDQUFDLENBQUNELGdCQUFnQixDQUFFO1FBQUFyakIsUUFBQSxFQUVuRHFqQixnQkFBZ0IsR0FDYmx1QixDQUFDLENBQUMsNEJBQTRCLENBQUMsR0FDL0JBLENBQUMsQ0FBQyw0QkFBNEI7TUFBQyxDQUM3QixDQUNUO0lBQUEsQ0FDRSxDQUFDLGVBQ051Six1REFBQSxDQUFDNlcsK0NBQUk7TUFFSHRELFNBQVM7TUFDVDBSLFVBQVUsRUFBRSxDQUFFO01BQ2RDLGFBQWEsRUFBRTtRQUFFak8sRUFBRSxFQUFFLENBQUM7UUFBRWtPLEVBQUUsRUFBRSxDQUFDO1FBQUVmLEVBQUUsRUFBRTtNQUFFLENBQUU7TUFDdkM3akIsU0FBUyxLQUFBckwsTUFBQSxDQUFLNEssc0VBQTJCLE9BQUE1SyxNQUFBLENBQ3ZDZ3VCLFFBQVEsSUFBSSxDQUFDeUIsZ0JBQWdCLEdBQUc3a0IsOERBQW1CLEdBQUcsRUFBRSxDQUN2RDtNQUNId0YsRUFBRSxFQUFFO1FBQ0YrZixhQUFhLEVBQUU7VUFDYmpCLEVBQUUsRUFBRSxLQUFLO1VBQ1RVLEVBQUUsRUFBRTtRQUNOLENBQUM7UUFDRDNQLE9BQU8sRUFBRTtVQUNQOEIsRUFBRSxFQUFFLENBQUM7VUFDTG1OLEVBQUUsRUFBRSxDQUFDO1VBQ0xVLEVBQUUsRUFBRTtRQUNOO01BQ0YsQ0FBRTtNQUFBeGpCLFFBQUEsZUFFRnRCLHVEQUFBLENBQUNpakIsaUVBQXVCO1FBQ3RCQyxRQUFRLEVBQUVBLFFBQVM7UUFDbkJsdkIsTUFBTSxFQUFFQSxNQUFPO1FBQ2ZrRSxLQUFLLEVBQUVBLEtBQU07UUFDYmlyQixlQUFlLEVBQUUsQ0FBQyxDQUFDQSxlQUFnQjtRQUNuQy9ELGVBQWUsRUFBRUE7TUFBZ0IsQ0FDbEM7SUFBQyxHQXpCR2xuQixLQUFLLENBQUNPLEVBMEJQLENBQUM7RUFBQSxDQUNQLENBQUM7QUFFUCxDQUFDO0FBRUQwZixVQUFVLENBQUNwVyxTQUFTLEdBQUc7RUFDckIvTixNQUFNLEVBQUU2TCwwREFBZ0I7RUFDeEIzSCxLQUFLLEVBQUUySCwwREFBZ0J3SztBQUN6QixDQUFDO0FBRUQsaUVBQWU4TixVQUFVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUM1R2M7QUFDSjtBQUNZO0FBQ1g7QUFDSztBQUNtQjtBQUNXO0FBQUE7QUFFdkUsTUFBTTBLLGFBQWEsR0FBRy9yQixJQUFBLElBQWdEO0VBQUEsSUFBL0M7SUFBRXVELE9BQU87SUFBRThnQixRQUFRO0lBQUV6WSxJQUFJO0lBQUV5aEI7RUFBYyxDQUFDLEdBQUFydEIsSUFBQTtFQUMvRCxNQUFNO0lBQUVMO0VBQUUsQ0FBQyxHQUFHK0wsNkRBQWMsQ0FBQyxDQUFDO0VBQzlCLE1BQU1rakIsZ0JBQWdCLEdBQUdKLDhDQUFPLENBQzlCLE1BQU1HLGdGQUE0QixDQUFDcHJCLE9BQU8sQ0FBQyxFQUMzQyxDQUFDQSxPQUFPLENBQ1YsQ0FBQztFQUNELE1BQU1zckIsV0FBVyxHQUFHQSxDQUFBLEtBQU07SUFDeEJ4QixhQUFhLENBQUMsQ0FBQztFQUNqQixDQUFDO0VBQ0Qsb0JBQ0Vua0Isc0RBQUEsQ0FBQ3VsQixvREFBVztJQUNWOXNCLEVBQUUsRUFBQyxnQkFBZ0I7SUFDbkJpSyxJQUFJLEVBQUVBLElBQUs7SUFDWEUsT0FBTyxFQUFFK2lCLFdBQVk7SUFDckJ2dUIsS0FBSyxFQUFFWCxDQUFDLENBQUMsOEJBQThCLENBQUU7SUFBQTZLLFFBQUEsZUFFekN0QixzREFBQSxDQUFDb1AsOENBQUc7TUFDRjlKLEVBQUUsRUFBRTtRQUNGekQsT0FBTyxFQUFFLE1BQU07UUFDZndqQixhQUFhLEVBQUUsUUFBUTtRQUN2QjdhLFVBQVUsRUFBRSxRQUFRO1FBQ3BCMkssT0FBTyxFQUFFO01BQ1gsQ0FBRTtNQUFBN1QsUUFBQSxFQUVEb2tCLGdCQUFnQixhQUFoQkEsZ0JBQWdCLHVCQUFoQkEsZ0JBQWdCLENBQUVsckIsR0FBRyxDQUFFWixNQUFNLGlCQUM1Qm9HLHNEQUFBLENBQUN3bEIsOERBQXFCO1FBRXBCNXJCLE1BQU0sRUFBRUEsTUFBTztRQUNmdWhCLFFBQVEsRUFBRUEsUUFBUztRQUNuQnlLLGFBQWE7TUFBQSxpQkFBQTF3QixNQUFBLENBSE0wRSxNQUFNLGFBQU5BLE1BQU0sdUJBQU5BLE1BQU0sQ0FBRW5CLEVBQUUsQ0FJOUIsQ0FDRjtJQUFDLENBQ0M7RUFBQyxDQUNLLENBQUM7QUFFbEIsQ0FBQztBQUVEb3FCLGFBQWEsQ0FBQzlnQixTQUFTLEdBQUc7RUFDeEIxSCxPQUFPLEVBQUV3Rix5REFBaUIsQ0FBQ25KLE1BQU0sQ0FBQztFQUNsQ2dNLElBQUksRUFBRTdDLHdEQUFjO0VBQ3BCc2tCLGFBQWEsRUFBRXRrQix3REFBYytGO0FBQy9CLENBQUM7QUFFRCxpRUFBZWlkLGFBQWE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ25ERjtBQUNTO0FBQ1k7QUFDVztBQUNIO0FBQ1Q7QUFDRTtBQUNSO0FBQ0g7QUFDcUI7QUFDaEI7QUFDUDtBQUNRO0FBQ1E7QUFDSztBQUNYO0FBQ0U7QUFBQTtBQUUvQyxNQUFNMkMscUJBQXFCLEdBQUcxdUIsSUFBQSxJQUF5QztFQUFBLElBQUFrcUIsbUJBQUEsRUFBQUMsYUFBQTtFQUFBLElBQXhDO0lBQUVybkIsTUFBTTtJQUFFdWhCLFFBQVE7SUFBRXlLO0VBQWMsQ0FBQyxHQUFBOXVCLElBQUE7RUFDaEUsTUFBTTtJQUFFTDtFQUFFLENBQUMsR0FBRytMLDZEQUFjLENBQUMsQ0FBQztFQUU5QixNQUFNeWpCLE1BQU0sR0FBRyxDQUFDO0VBQ2hCLE1BQU1DLE9BQU8sR0FBRyxFQUFFO0VBRWxCLE1BQU1DLFNBQVMsR0FBRyxDQUFDO0VBRW5CLE1BQU1DLGVBQWUsR0FBR3hzQixNQUFNLENBQUNpQixlQUFlLENBQUNsRyxNQUFNLENBQ2xEMHhCLE1BQU0sSUFBS0EsTUFBTSxDQUFDOXZCLE1BQU0sS0FBSyxVQUNoQyxDQUFDO0VBRUQsTUFBTSt2QixzQkFBc0IsR0FBRyxDQUFDLENBQUM7RUFFakNGLGVBQWUsQ0FBQ3Z2QixPQUFPLENBQUV3dkIsTUFBTSxJQUFLO0lBQ2xDQSxNQUFNLENBQUNFLGNBQWMsQ0FBQzF2QixPQUFPLENBQUUydkIsRUFBRSxJQUFLO01BQ3BDLE1BQU1DLEtBQUssR0FBR0QsRUFBRSxDQUFDbEwsR0FBRyxDQUFDN2lCLEVBQUU7TUFDdkIsSUFBSSxDQUFDNnRCLHNCQUFzQixDQUFDRyxLQUFLLENBQUMsRUFBRTtRQUNsQ0gsc0JBQXNCLENBQUNHLEtBQUssQ0FBQyxHQUFHO1VBQzlCanVCLElBQUksRUFBRWd1QixFQUFFLENBQUNsTCxHQUFHLENBQUM5aUIsSUFBSTtVQUNqQmt1QixzQkFBc0IsRUFBRTtRQUMxQixDQUFDO01BQ0g7TUFDQUosc0JBQXNCLENBQUNHLEtBQUssQ0FBQyxDQUFDQyxzQkFBc0IsSUFDbERGLEVBQUUsQ0FBQ0csZUFBZTtJQUN0QixDQUFDLENBQUM7RUFDSixDQUFDLENBQUM7RUFFRixNQUFNQyxXQUFXLEdBQUd6Uyw0REFBTSxDQUFDNWMsS0FBQTtJQUFBLElBQUM7UUFBRWdKO01BQW9CLENBQUMsR0FBQWhKLEtBQUE7TUFBUGlKLEtBQUssR0FBQUMscUZBQUEsQ0FBQWxKLEtBQUEsRUFBQW1KLFNBQUE7SUFBQTtNQUFBO01BQy9DO01BQ0FWLHVEQUFBLENBQUNpRCxrREFBTyxFQUFBdkgsYUFBQSxDQUFBQSxhQUFBLEtBQUs4RSxLQUFLO1FBQUVxbUIsT0FBTyxFQUFFO1VBQUVDLE1BQU0sRUFBRXZtQjtRQUFVO01BQUUsRUFBRTtJQUFDO0VBQUEsQ0FDdkQsQ0FBQyxDQUFDLE9BQU87SUFDUixPQUFBckwsTUFBQSxDQUFPMndCLGlFQUFjLENBQUNqaUIsT0FBTyxJQUFLO01BQ2hDMkIsZUFBZSxFQUFFLFNBQVM7TUFDMUI4QixLQUFLLEVBQUUscUJBQXFCO01BQzVCMGYsUUFBUSxFQUFFLEdBQUc7TUFDYnJoQixRQUFRLEVBQUUsS0FBSztNQUNmc2hCLE1BQU0sRUFBRTtJQUNWO0VBQ0YsQ0FBQyxDQUFDLENBQUM7RUFFSCxvQkFDRTltQix3REFBQSxDQUFDMlcsK0NBQUk7SUFDSHRELFNBQVM7SUFDVGhULFNBQVMsS0FBQXJMLE1BQUEsQ0FBSzRLLDBFQUErQixPQUFBNUssTUFBQSxDQUMzQzB3QixhQUFhLEdBQUc5bEIsOERBQW1CLEdBQUcsRUFBRSxNQUN0QztJQUNKLGVBQVksbUNBQW1DO0lBQUF3QixRQUFBLGdCQUUvQ3RCLHVEQUFBLENBQUM2VywrQ0FBSTtNQUNISSxFQUFFLEVBQUVpUCxPQUFRO01BQ1pmLEVBQUUsRUFBRVMsYUFBYSxHQUFHSyxNQUFNLEdBQUdDLE9BQVE7TUFDckNsUCxJQUFJO01BQ0pELE9BQU8sRUFBQyxlQUFlO01BQ3ZCOUQsRUFBRSxFQUFFLENBQUU7TUFDTjhKLEVBQUUsRUFBRSxDQUFFO01BQUF6YixRQUFBLGVBRU5wQix3REFBQSxDQUFDbVIsNERBQUs7UUFDSi9MLEVBQUUsRUFBRTtVQUNGdVAsY0FBYyxFQUFFLGVBQWU7VUFDL0JySyxVQUFVLEVBQUU7UUFDZCxDQUFFO1FBQ0YzVSxTQUFTLEVBQUMsS0FBSztRQUFBeUwsUUFBQSxnQkFFZnRCLHVEQUFBO1VBQUFzQixRQUFBLEdBQUEwZixtQkFBQSxHQUFLcG5CLE1BQU0sQ0FBQ29oQixXQUFXLGNBQUFnRyxtQkFBQSx1QkFBbEJBLG1CQUFBLENBQW9CeG9CO1FBQUksQ0FBSyxDQUFDLGVBQ25Dd0gsdURBQUEsQ0FBQzZXLCtDQUFJO1VBQUN0VyxTQUFTLEVBQUVULHFFQUEyQjtVQUFDbVgsRUFBRSxFQUFFLENBQUU7VUFBQ0QsSUFBSTtVQUFBMVYsUUFBQSxHQUFBMmYsYUFBQSxHQUNyRHJuQixNQUFNLENBQUN1b0IsS0FBSyxjQUFBbEIsYUFBQSxnQkFBQUEsYUFBQSxHQUFaQSxhQUFBLENBQWNtQixRQUFRLGNBQUFuQixhQUFBLHVCQUF0QkEsYUFBQSxDQUF3QnptQixHQUFHLENBQUUyVyxFQUFFLGlCQUM5Qm5SLHVEQUFBLENBQUNJLDBEQUFnQjtZQUFlNUgsSUFBSSxFQUFFMlksRUFBRSxDQUFDM1ksSUFBSztZQUFDOEgsS0FBSyxFQUFFNlEsRUFBRSxDQUFDN1E7VUFBTSxHQUF4QzZRLEVBQUUsQ0FBQzNZLElBQXVDLENBQ2xFO1FBQUMsQ0FDRSxDQUFDO01BQUEsQ0FDRjtJQUFDLENBQ0osQ0FBQyxFQUNOb3RCLGFBQWEsaUJBQ1o1bEIsdURBQUEsQ0FBQzZXLCtDQUFJO01BQUNzTyxFQUFFLEVBQUUsQ0FBRTtNQUFDbE8sRUFBRSxFQUFFLEVBQUc7TUFBQzhGLEVBQUUsRUFBRTtRQUFFb0ksRUFBRSxFQUFFLENBQUM7UUFBRWxPLEVBQUUsRUFBRTtNQUFFLENBQUU7TUFBQ3RHLEVBQUUsRUFBRTtRQUFFc0csRUFBRSxFQUFFLENBQUM7UUFBRWtPLEVBQUUsRUFBRTtNQUFFLENBQUU7TUFBQ25PLElBQUk7TUFBQTFWLFFBQUEsZUFDbkV0Qix1REFBQSxDQUFDZ21CLHNEQUFZO1FBQUNwc0IsTUFBTSxFQUFFQTtNQUFPLENBQUU7SUFBQyxDQUM1QixDQUNQLGVBQ0RzRyx3REFBQSxDQUFDMlcsK0NBQUk7TUFBQ0ksRUFBRSxFQUFFLEVBQUc7TUFBQ0QsSUFBSTtNQUFDK0YsRUFBRSxFQUFFLENBQUU7TUFBQ25NLEVBQUUsRUFBRWdWLGFBQWEsR0FBR08sU0FBUyxHQUFHLENBQUU7TUFBQzVTLFNBQVM7TUFBQWpTLFFBQUEsZ0JBQ3BFcEIsd0RBQUEsQ0FBQzJXLCtDQUFJO1FBQUNJLEVBQUUsRUFBRSxFQUFHO1FBQUNrTyxFQUFFLEVBQUUsQ0FBRTtRQUFDNWtCLFNBQVMsRUFBRVQsc0VBQTRCO1FBQUF3QixRQUFBLGdCQUMxRHRCLHVEQUFBLENBQUNpZSxtRUFBYztVQUFDcmtCLE1BQU0sRUFBRUE7UUFBTyxDQUFFLENBQUMsZUFDbENzRyx3REFBQTtVQUFNSyxTQUFTLEVBQUVULDBEQUFnQjtVQUFBd0IsUUFBQSxHQUM5QjdLLENBQUMsQ0FBQyx5QkFBeUIsQ0FBQyxFQUFDLElBQUUsZUFBQXVKLHVEQUFBLENBQUNvRCxrREFBUTtZQUFDQyxJQUFJLEVBQUV6SixNQUFNLENBQUMySztVQUFPLENBQUUsQ0FBQztRQUFBLENBQzdELENBQUM7TUFBQSxDQUNILENBQUMsRUFDTnFoQixhQUFhLElBQUloc0IsTUFBTSxDQUFDNm9CLHFCQUFxQixHQUFHLENBQUMsaUJBQ2hEdmlCLHdEQUFBLENBQUMyVywrQ0FBSTtRQUFDSSxFQUFFLEVBQUUsRUFBRztRQUFDbU4sRUFBRSxFQUFFLENBQUU7UUFBQ3JDLEVBQUUsRUFBRTtVQUFFOUssRUFBRSxFQUFFLENBQUM7VUFBRWtPLEVBQUUsRUFBRTtRQUFFLENBQUU7UUFBQTdqQixRQUFBLEdBQ3ZDOFksdURBQWMsQ0FBQ3hnQixNQUFNLENBQUM2b0IscUJBQXFCLEVBQUU7VUFBRXRIO1FBQVMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFDLFVBRWpFLEVBQUNpTCxlQUFlLENBQUN0WixJQUFJLENBQUVuUyxDQUFDLElBQUtBLENBQUMsQ0FBQzRyQixjQUFjLENBQUNseEIsTUFBTSxHQUFHLENBQUMsQ0FBQyxpQkFDdkQySyx1REFBQSxDQUFDNG1CLFdBQVc7VUFDVnh2QixLQUFLLGVBQ0g4SSx3REFBQSxDQUFBdVosd0RBQUE7WUFBQW5ZLFFBQUEsZ0JBQ0VwQix3REFBQTtjQUFBb0IsUUFBQSxHQUNHOFksdURBQWMsQ0FBQ3hnQixNQUFNLENBQUMrc0IsZUFBZSxFQUFFO2dCQUFFeEw7Y0FBUyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUMsZUFFN0Q7WUFBQSxDQUFHLENBQUMsZUFDSm5iLHVEQUFBO2NBQUFzQixRQUFBLEVBQUc7WUFBSyxDQUFHLENBQUMsRUFDWDVLLE1BQU0sQ0FBQzRCLElBQUksQ0FBQ2d1QixzQkFBc0IsQ0FBQyxDQUFDOXJCLEdBQUcsQ0FBRWlzQixLQUFLLElBQUs7Y0FDbEQsTUFBTTtnQkFBRUMsc0JBQXNCO2dCQUFFbHVCO2NBQUssQ0FBQyxHQUNwQzh0QixzQkFBc0IsQ0FBQ0csS0FBSyxDQUFDO2NBQy9CLG9CQUNFem1CLHVEQUFBO2dCQUFBc0IsUUFBQSxLQUFBcE0sTUFBQSxDQUFtQnNELElBQUksU0FBQXRELE1BQUEsQ0FBTWtsQix1REFBYyxDQUN6Q3NNLHNCQUFzQixFQUN0QjtrQkFBRXZMO2dCQUFTLENBQ2IsQ0FBQztjQUFBLEdBSE9zTCxLQUdELENBQUM7WUFFWixDQUFDLENBQUM7VUFBQSxDQUNGLENBQ0g7VUFBQW5sQixRQUFBLGVBRUR0Qix1REFBQSxDQUFDc1AscURBQVU7WUFBQWhPLFFBQUEsZUFDVHRCLHVEQUFBLENBQUM4bEIsaUVBQVEsSUFBRTtVQUFDLENBQ0Y7UUFBQyxDQUNGLENBQ2QsZUFDRDlsQix1REFBQSxTQUFLLENBQUMsRUFDTCtsQix1REFBTSxDQUNMbnNCLE1BQU0sQ0FBQ2lCLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQ3VzQixXQUFXLEdBQUdsa0IsOERBQzFDLENBQUMsQ0FBQ21rQixNQUFNLENBQUMsY0FBYyxDQUFDO01BQUEsQ0FDcEIsQ0FDUDtJQUFBLENBQ0csQ0FBQyxFQUNOLENBQUN6QixhQUFhLGlCQUNiNWxCLHVEQUFBLENBQUM2VywrQ0FBSTtNQUFDSSxFQUFFLEVBQUUsRUFBRztNQUFDaUwsRUFBRSxFQUFFLENBQUU7TUFBQ3RSLEVBQUUsRUFBRSxDQUFFO01BQUF0UCxRQUFBLGVBQ3pCdEIsdURBQUEsQ0FBQzZXLCtDQUFJO1FBQUNJLEVBQUUsRUFBRSxFQUFHO1FBQUNELElBQUk7UUFBQTFWLFFBQUEsZUFDaEJ0Qix1REFBQSxDQUFDZ2dCLHNEQUFZO1VBQUNwbUIsTUFBTSxFQUFFQTtRQUFPLENBQUU7TUFBQyxDQUM1QjtJQUFDLENBQ0gsQ0FDUDtFQUFBLENBQ0csQ0FBQztBQUVYLENBQUM7QUFFRDRyQixxQkFBcUIsQ0FBQ3pqQixTQUFTLEdBQUc7RUFDaENuSSxNQUFNLEVBQUVpRywwREFBZ0I7RUFDeEIrbEIsYUFBYSxFQUFFL2xCLHdEQUFjeUU7QUFDL0IsQ0FBQztBQUVELGlFQUFla2hCLHFCQUFxQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUM1Skc7QUFDSjtBQUNZO0FBQ1Y7QUFDbUM7QUFFekI7QUFBQTtBQUUvQyxNQUFNUSxZQUFZLEdBQUdsdkIsSUFBQSxJQUFnQjtFQUFBLElBQWY7SUFBRThDO0VBQU8sQ0FBQyxHQUFBOUMsSUFBQTtFQUM5QixNQUFNO0lBQUVMO0VBQUUsQ0FBQyxHQUFHK0wsNkRBQWMsQ0FBQyxDQUFDO0VBQzlCLE1BQU1nbEIsV0FBVyxHQUFHbEMsOENBQU8sQ0FDekIsTUFBTWlDLGlGQUE2QixDQUFDM3RCLE1BQU0sQ0FBQyxFQUMzQyxDQUFDQSxNQUFNLENBQ1QsQ0FBQztFQUNELG9CQUNFb0csc0RBQUEsQ0FBQ3NuQiwrQ0FBSTtJQUNILGNBQVcsNEJBQTRCO0lBQ3ZDbGUsS0FBSyxFQUFFM1MsQ0FBQyxpQ0FBQXZCLE1BQUEsQ0FBaUNzeUIsV0FBVyxDQUFFLENBQUU7SUFDeERqbkIsU0FBUyxLQUFBckwsTUFBQSxDQUFLNEssMkRBQWlCLE9BQUE1SyxNQUFBLENBQUk0SyxnREFBTSxDQUFDMG5CLFdBQVcsQ0FBQztFQUFHLENBQzFELENBQUM7QUFFTixDQUFDO0FBRUR4QixZQUFZLENBQUNqa0IsU0FBUyxHQUFHO0VBQ3ZCbkksTUFBTSxFQUFFaUcsMERBQWdCd0s7QUFDMUIsQ0FBQztBQUVELGlFQUFlMmIsWUFBWTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUMzQmE7QUFDTDtBQUNZO0FBQ0w7QUFDd0I7QUFDSjtBQUNyQjtBQUNLO0FBQ2tDO0FBQ1Q7QUFDeEI7QUFDZTtBQUNGO0FBQUE7QUFFNUQsTUFBTXBELG1CQUFtQixHQUFHOXJCLElBQUEsSUFTdEI7RUFBQSxJQVR1QjtJQUMzQnVELE9BQU87SUFDUHJHLE1BQU07SUFDTjBPLElBQUk7SUFDSndoQixvQkFBb0I7SUFDcEJDLGFBQWE7SUFDYjlFLGVBQWU7SUFDZnpCLGNBQWM7SUFDZDhGO0VBQ0YsQ0FBQyxHQUFBNXNCLElBQUE7RUFDQyxNQUFNO0lBQUVMO0VBQUUsQ0FBQyxHQUFHK0wsNkRBQWMsQ0FBQyxDQUFDO0VBQzlCLE1BQU03TyxRQUFRLEdBQUdvc0Isd0RBQVcsQ0FBQyxDQUFDO0VBQzlCLE1BQU0sQ0FBQytILElBQUksRUFBRUMsT0FBTyxDQUFDLEdBQUdwb0IsK0NBQVEsQ0FBQ2dvQixzREFBUSxDQUFDO0VBQzFDLE1BQU0sQ0FBQ0ssUUFBUSxFQUFFQyxXQUFXLENBQUMsR0FBR3RvQiwrQ0FBUSxDQUFDLEVBQUUsQ0FBQztFQUM1QyxNQUFNLENBQUN1b0IsYUFBYSxFQUFFQyxnQkFBZ0IsQ0FBQyxHQUFHeG9CLCtDQUFRLENBQUMsS0FBSyxDQUFDO0VBRXpELE1BQU1nbUIsV0FBVyxHQUFHQSxDQUFBLEtBQU07SUFDeEJzQyxXQUFXLENBQUMsRUFBRSxDQUFDO0lBQ2Y5RCxhQUFhLENBQUMsQ0FBQztJQUNmNEQsT0FBTyxDQUFDSixzREFBUSxDQUFDO0lBQ2pCLElBQUlPLGFBQWEsRUFBRTtNQUNqQmhFLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDO01BQ3hCaUUsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0lBQ3pCO0VBQ0YsQ0FBQztFQUVELE1BQU1DLGFBQWEsR0FBR0EsQ0FBQSxLQUFNO0lBQzFCTCxPQUFPLENBQUNGLHNEQUFRLENBQUM7RUFDbkIsQ0FBQztFQUVELE1BQU1RLGNBQWMsR0FBR0EsQ0FBQSxLQUFNO0lBQzNCTixPQUFPLENBQUNKLHNEQUFRLENBQUM7RUFDbkIsQ0FBQztFQUVELE1BQU1XLGFBQWEsR0FBRyxNQUFBQSxDQUFBLEtBQVk7SUFDaEMzMEIsUUFBUSxDQUFDd0csMkRBQWlCLENBQUM7TUFBRUUsT0FBTyxFQUFFZ2xCO0lBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMzbUIsSUFBSSxDQUFFdkMsR0FBRyxJQUFLO01BQ3RFeEMsUUFBUSxDQUFDbUgsc0VBQTRCLENBQUMzRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7TUFDN0MsSUFBSSxDQUFBQSxHQUFHLGFBQUhBLEdBQUcsdUJBQUhBLEdBQUcsQ0FBRWQsTUFBTSxNQUFLZ3FCLGVBQWUsQ0FBQ2hxQixNQUFNLEVBQUU7UUFDMUMweUIsT0FBTyxDQUFDSCx3REFBVSxDQUFDLENBQUMsQ0FBQztRQUNyQk8sZ0JBQWdCLENBQUMsSUFBSSxDQUFDO01BQ3hCLENBQUMsTUFBTTtRQUNMRixXQUFXLENBQUN4eEIsQ0FBQyxDQUFDLDRCQUE0QixDQUFDLENBQUM7TUFDOUM7SUFDRixDQUFDLENBQUM7SUFDRnd4QixXQUFXLENBQUMsRUFBRSxDQUFDO0VBQ2pCLENBQUM7RUFFRCxNQUFNTSxhQUFhLEdBQUdBLENBQUEsa0JBQ3BCcm9CLHdEQUFBLENBQUF1Wix3REFBQTtJQUFBblksUUFBQSxnQkFDRXRCLHVEQUFBO01BQUlPLFNBQVMsRUFBRVQsMERBQWdCO01BQUF3QixRQUFBLEVBQzVCN0ssQ0FBQyxDQUFDLDJDQUEyQztJQUFDLENBQzdDLENBQUMsZUFDTHVKLHVEQUFBLENBQUNvUCw4Q0FBRztNQUFDN08sU0FBUyxFQUFFVCw0REFBa0I7TUFBQXdCLFFBQUEsRUFDL0JqSCxPQUFPLENBQUNHLEdBQUcsQ0FBRVosTUFBTSxpQkFDbEJvRyx1REFBQSxDQUFDa2QscUVBQWdCO1FBRWZ0akIsTUFBTSxFQUFFQSxNQUFPO1FBQ2Y1RixNQUFNLEVBQUVBLE1BQU87UUFDZjJwQixrQkFBa0IsRUFDaEIsQ0FBQyxDQUFDMEIsZUFBZSxDQUFDUSxJQUFJLENBQUVwcEIsQ0FBQyxJQUFLQSxDQUFDLENBQUNnQyxFQUFFLEtBQUttQixNQUFNLENBQUNuQixFQUFFLENBQ2pEO1FBQ0RtbEIsY0FBYyxFQUFFQSxjQUFlO1FBQy9COEYscUJBQXFCLEVBQUVBLHFCQUFzQjtRQUM3Q2hHLGFBQWE7TUFBQSxhQUFBeG9CLE1BQUEsQ0FSRTBFLE1BQU0sQ0FBQ25CLEVBQUUsQ0FTekIsQ0FDRjtJQUFDLENBQ0MsQ0FBQyxlQUNOeUgsd0RBQUEsQ0FBQ2tQLDhDQUFHO01BQUM3TyxTQUFTLEVBQUVULCtEQUFxQjtNQUFBd0IsUUFBQSxnQkFDbkN0Qix1REFBQSxDQUFDa0MsaURBQU07UUFDTCxjQUFXLHNCQUFzQjtRQUNqQ3NhLElBQUksRUFBQyxRQUFRO1FBQ2JqYyxTQUFTLEVBQUVULDhEQUFvQjtRQUMvQmdELE9BQU8sRUFBRTZpQixXQUFZO1FBQUFya0IsUUFBQSxFQUVwQjdLLENBQUMsQ0FBQyxnQkFBZ0I7TUFBQyxDQUNkLENBQUMsZUFDVHVKLHVEQUFBLENBQUNrQyxpREFBTTtRQUNMLGNBQVcsd0JBQXdCO1FBQ25Dc2EsSUFBSSxFQUFDLFFBQVE7UUFDYmpjLFNBQVMsRUFBRVQsZ0VBQXNCO1FBQ2pDZ0QsT0FBTyxFQUFFc2xCLGFBQWM7UUFDdkJ4ZSxRQUFRLEVBQUV5VixlQUFlLENBQUNocUIsTUFBTSxLQUFLLENBQUU7UUFBQWlNLFFBQUEsRUFFdEM3SyxDQUFDLENBQUMsa0JBQWtCO01BQUMsQ0FDaEIsQ0FBQztJQUFBLENBQ04sQ0FBQztFQUFBLENBQ04sQ0FDSDtFQUVELE1BQU1veUIsYUFBYSxHQUFHQSxDQUFBLGtCQUNwQjNvQix3REFBQSxDQUFDa1AsOENBQUc7SUFBQyxlQUFZLDJCQUEyQjtJQUFBOU4sUUFBQSxnQkFDMUN0Qix1REFBQTtNQUFJTyxTQUFTLEVBQUVULDBEQUFnQjtNQUFBd0IsUUFBQSxFQUM1QjdLLENBQUMsQ0FBQyw0Q0FBNEM7SUFBQyxDQUM5QyxDQUFDLEVBQ0p1eEIsUUFBUSxpQkFDUGhvQix1REFBQSxDQUFDMlgsMERBQVU7TUFDVDdULFVBQVUsRUFBRWhFLGdFQUFzQjtNQUNsQ3VILEtBQUssRUFBQyxTQUFTO01BQ2Z1USxVQUFVLEVBQUMsdUJBQXVCO01BQ2xDOWQsT0FBTyxFQUFFa3VCO0lBQVMsQ0FDbkIsQ0FDRixlQUNEaG9CLHVEQUFBLENBQUNvUCw4Q0FBRztNQUFDN08sU0FBUyxFQUFFVCw0REFBa0I7TUFBQXdCLFFBQUEsRUFDL0IrZCxlQUFlLENBQUM3a0IsR0FBRyxDQUFFWixNQUFNLGlCQUMxQm9HLHVEQUFBLENBQUN3bEIsK0RBQXFCO1FBRXBCNXJCLE1BQU0sRUFBRUE7TUFBTyxpQkFBQTFFLE1BQUEsQ0FESTBFLE1BQU0sYUFBTkEsTUFBTSx1QkFBTkEsTUFBTSxDQUFFbkIsRUFBRSxDQUU5QixDQUNGO0lBQUMsQ0FDQyxDQUFDLGVBQ055SCx3REFBQSxDQUFDa1AsOENBQUc7TUFBQzdPLFNBQVMsRUFBRVQsa0VBQXdCO01BQUF3QixRQUFBLGdCQUN0Q3RCLHVEQUFBLENBQUNrQyxpREFBTTtRQUNMLGNBQVcsc0JBQXNCO1FBQ2pDc2EsSUFBSSxFQUFDLFFBQVE7UUFDYmpjLFNBQVMsRUFBRVQsOERBQW9CO1FBQy9CZ0QsT0FBTyxFQUFFdWxCLGNBQWU7UUFBQS9tQixRQUFBLEVBRXZCN0ssQ0FBQyxDQUFDLGNBQWM7TUFBQyxDQUNaLENBQUMsZUFDVHVKLHVEQUFBLENBQUNrQyxpREFBTTtRQUNMLGNBQVcsd0JBQXdCO1FBQ25Dc2EsSUFBSSxFQUFDLFFBQVE7UUFDYmpjLFNBQVMsRUFBRVQsZ0VBQXNCO1FBQ2pDZ0QsT0FBTyxFQUFFd2xCLGFBQWM7UUFBQWhuQixRQUFBLEVBRXRCN0ssQ0FBQyxDQUFDLGtCQUFrQjtNQUFDLENBQ2hCLENBQUM7SUFBQSxDQUNOLENBQUM7RUFBQSxDQUNILENBQ047RUFFRCxNQUFNdXlCLGVBQWUsR0FBR0EsQ0FBQSxrQkFDdEI5b0Isd0RBQUEsQ0FBQ2tQLDhDQUFHO0lBQ0Y3TyxTQUFTLEVBQUVULGtFQUF3QjtJQUNuQyxlQUFZLDJCQUEyQjtJQUFBd0IsUUFBQSxnQkFFdkN0Qix1REFBQSxDQUFDNkUsd0VBQWU7TUFBQ1MsRUFBRSxFQUFFO1FBQUUrQixLQUFLLEVBQUU7TUFBVTtJQUFFLENBQUUsQ0FBQyxlQUM3Q3JILHVEQUFBO01BQU1PLFNBQVMsRUFBRVQsNERBQWtCO01BQUF3QixRQUFBLEVBQ2hDN0ssQ0FBQyxDQUFDLGtDQUFrQztJQUFDLENBQ2xDLENBQUMsZUFDUHVKLHVEQUFBO01BQU1PLFNBQVMsRUFBRVQsNkRBQW1CO01BQUF3QixRQUFBLEVBQ2pDN0ssQ0FBQyxDQUFDLGtDQUFrQztJQUFDLENBQ2xDLENBQUMsZUFDUHVKLHVEQUFBLENBQUNrQyxpREFBTTtNQUNMLGNBQVcsc0JBQXNCO01BQ2pDc2EsSUFBSSxFQUFDLFFBQVE7TUFDYmpjLFNBQVMsRUFBRVQsZ0VBQXNCO01BQ2pDZ0QsT0FBTyxFQUFFNmlCLFdBQVk7TUFBQXJrQixRQUFBLEVBRXBCN0ssQ0FBQyxDQUFDLGdCQUFnQjtJQUFDLENBQ2QsQ0FBQztFQUFBLENBQ04sQ0FDTjtFQUVELE1BQU0yeUIsV0FBVyxHQUFHQSxDQUFBLEtBQU07SUFDeEIsUUFBUXRCLElBQUk7TUFDVixLQUFLSCxzREFBUTtRQUNYLE9BQU9ZLGFBQWEsQ0FBQyxDQUFDO01BQ3hCLEtBQUtWLHNEQUFRO1FBQ1gsT0FBT2dCLGFBQWEsQ0FBQyxDQUFDO01BQ3hCLEtBQUtqQix3REFBVTtRQUNiLE9BQU9vQixlQUFlLENBQUMsQ0FBQztNQUMxQjtRQUNFLE9BQU9ULGFBQWEsQ0FBQyxDQUFDO0lBQzFCO0VBQ0YsQ0FBQztFQUNELG9CQUNFdm9CLHVEQUFBLENBQUMwbkIsK0RBQW9CO0lBQUMyQixXQUFXO0lBQUEvbkIsUUFBQSxlQUMvQnRCLHVEQUFBLENBQUN1bEIsb0RBQVc7TUFDVjlzQixFQUFFLEVBQUMsaUJBQWlCO01BQ3BCaUssSUFBSSxFQUFFQSxJQUFLO01BQ1hFLE9BQU8sRUFBRStpQixXQUFZO01BQ3JCdnVCLEtBQUssRUFBRVgsQ0FBQyxDQUFDLDhCQUE4QixDQUFFO01BQ3pDLGVBQVksc0JBQXNCO01BQUE2SyxRQUFBLEVBRWpDOG5CLFdBQVcsQ0FBQztJQUFDLENBQ0g7RUFBQyxDQUNNLENBQUM7QUFFM0IsQ0FBQztBQUVEeEcsbUJBQW1CLENBQUM3Z0IsU0FBUyxHQUFHO0VBQzlCMUgsT0FBTyxFQUFFd0YseURBQWlCLENBQUNuSixNQUFNLENBQUM7RUFDbENnTSxJQUFJLEVBQUU3Qyx3REFBYztFQUNwQnFrQixvQkFBb0IsRUFBRXJrQix3REFBYztFQUNwQ3NrQixhQUFhLEVBQUV0a0Isd0RBQWMrRjtBQUMvQixDQUFDO0FBRUQsaUVBQWVnZCxtQkFBbUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUMxTWxDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFMEI7QUFDUztBQUNpQztBQUNYO0FBQ1Y7QUFBQTtBQUUvQyxNQUFNMkMsV0FBVyxHQUFHenVCLElBQUE7RUFBQSxJQUFDO0lBQ25CMkIsRUFBRTtJQUNGckIsS0FBSztJQUNMb3lCLGNBQWMsR0FBRyxJQUFJO0lBQ3JCbG9CLFFBQVE7SUFDUm9CLElBQUk7SUFDSkUsT0FBTztJQUNQckM7RUFDRixDQUFDLEdBQUF6SixJQUFBO0VBQUEsb0JBQ0NvSix1REFBQSxDQUFDb3BCLGlEQUFNO0lBQ0w3d0IsRUFBRSxFQUFFQSxFQUFHO0lBQ1BpSyxJQUFJLEVBQUVBLElBQUs7SUFDWEUsT0FBTyxFQUFFQSxPQUFRO0lBQ2pCNm1CLE1BQU0sRUFBQyxPQUFPO0lBQ2RDLFVBQVUsRUFBRTtNQUFFQyxXQUFXLEVBQUU7SUFBTSxDQUFFO0lBQ25DcHBCLFNBQVMsS0FBQXJMLE1BQUEsQ0FBSzRLLHdEQUFjLE9BQUE1SyxNQUFBLENBQUlxTCxTQUFTLENBQUc7SUFBQWUsUUFBQSxnQkFFNUNwQix1REFBQSxDQUFDa1AsOENBQUc7TUFBQzdPLFNBQVMsRUFBRVQsdURBQWM7TUFBQXdCLFFBQUEsZ0JBQzVCdEIsc0RBQUEsQ0FBQ3NQLHFEQUFVO1FBQ1QsZUFBWSxjQUFjO1FBQzFCL08sU0FBUyxFQUFFVCx5REFBZ0I7UUFDM0JnRCxPQUFPLEVBQUVGLE9BQVE7UUFDakIwQyxFQUFFLEVBQUU7VUFBRXdrQixLQUFLLEVBQUU7UUFBUSxDQUFFO1FBQ3ZCcGtCLFFBQVEsRUFBQyxPQUFPO1FBQUFwRSxRQUFBLGVBRWhCdEIsc0RBQUEsQ0FBQ3FVLHNEQUFTLElBQUU7TUFBQyxDQUNILENBQUMsRUFDWmpkLEtBQUssaUJBQ0o0SSxzREFBQSxDQUFDNEUscURBQVU7UUFBQ1MsT0FBTyxFQUFDLElBQUk7UUFBQzBrQixZQUFZO1FBQUN4cEIsU0FBUyxFQUFFVCxzREFBYTtRQUFBd0IsUUFBQSxFQUMzRGxLO01BQUssQ0FDSSxDQUNiLEVBQ0FveUIsY0FBYztJQUFBLENBQ1osQ0FBQyxFQUNMbG9CLFFBQVE7RUFBQSxDQUNILENBQUM7QUFBQSxDQUNWO0FBRURpa0IsV0FBVyxDQUFDeGpCLFNBQVMsR0FBRztFQUN0QnRKLEVBQUUsRUFBRW9ILDBEQUFnQixDQUFDb0MsVUFBVTtFQUMvQjdLLEtBQUssRUFBRXlJLDJEQUFtQixDQUFDLENBQUNBLDBEQUFnQixFQUFFQSx3REFBYyxDQUFDLENBQUM7RUFDOUR5QixRQUFRLEVBQUV6Qix3REFBYztFQUN4QjJwQixjQUFjLEVBQUUzcEIsd0RBQWM7RUFDOUI2QyxJQUFJLEVBQUU3Qyx3REFBYztFQUNwQitDLE9BQU8sRUFBRS9DLHdEQUFjO0VBQ3ZCVSxTQUFTLEVBQUVWLDBEQUFnQm1DO0FBQzdCLENBQUM7QUFFRCxpRUFBZXVqQixXQUFXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ25FQTtBQUM4QjtBQUNwQjtBQUVXO0FBQUE7QUFFL0MsTUFBTTBFLFlBQVksR0FBR0EsQ0FBQSxLQUFNO0VBQ3pCLE1BQU07SUFBRWoyQjtFQUFPLENBQUMsR0FBR2tiLHdEQUFXLENBQzNCVyxLQUFLLElBQUtBLEtBQUssQ0FBQy9YLFdBQVcsSUFBSSxDQUFDLENBQUMsRUFDbENxWCxxREFDRixDQUFDO0VBQ0Qsb0JBQ0VqUCx1REFBQSxDQUFDa1AsOENBQUc7SUFDRjdPLFNBQVMsRUFBRVQsNkRBQW9CO0lBQy9Cd0YsRUFBRSxFQUFFO01BQUU2UCxPQUFPLEVBQUU7UUFBRThCLEVBQUUsRUFBRSxDQUFDO1FBQUVtTixFQUFFLEVBQUUsQ0FBQztRQUFFVSxFQUFFLEVBQUU7TUFBRTtJQUFFLENBQUU7SUFDekMsZUFBWSx5QkFBeUI7SUFBQXhqQixRQUFBLGdCQUVyQ3RCLHNEQUFBO01BQUlPLFNBQVMsRUFBRVQsZ0VBQXVCO01BQUF3QixRQUFBLEVBQUV0TixNQUFNLGFBQU5BLE1BQU0sdUJBQU5BLE1BQU0sQ0FBRXdFO0lBQUksQ0FBSyxDQUFDLGVBQzFEd0gsc0RBQUE7TUFBSU8sU0FBUyxFQUFFVCxnRUFBdUI7TUFBQXdCLFFBQUEsRUFBRXROLE1BQU0sYUFBTkEsTUFBTSx1QkFBTkEsTUFBTSxDQUFFbzJCO0lBQVcsQ0FBSyxDQUFDO0VBQUEsQ0FDOUQsQ0FBQztBQUVWLENBQUM7QUFFRCxpRUFBZUgsWUFBWTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN2QkQ7QUFDNkI7QUFDbkI7QUFDUTtBQUNEO0FBQ0k7QUFDRjtBQUFBO0FBRTdDLE1BQU1JLFVBQVUsR0FBR3Z6QixJQUFBLElBQStCO0VBQUEsSUFBOUI7SUFBRXd6QixHQUFHO0lBQUVocEIsUUFBUTtJQUFFaXBCO0VBQU8sQ0FBQyxHQUFBenpCLElBQUE7RUFDM0MsTUFBTTtJQUFFeWhCLFlBQVk7SUFBRTZFLFdBQVc7SUFBRWxMO0VBQW1CLENBQUMsR0FBR2hELHdEQUFXLENBQ2xFVyxLQUFLLElBQUtBLEtBQUssQ0FBQy9YLFdBQVcsSUFBSSxDQUFDLENBQ25DLENBQUM7RUFDRCxNQUFNbkUsUUFBUSxHQUFHb3NCLHdEQUFXLENBQUMsQ0FBQztFQUM5QixNQUFNMWxCLE9BQU8sR0FBR2l3QixHQUFHLEtBQUs5USxrREFBSSxDQUFDUyxPQUFPLEdBQUdtRCxXQUFXLEdBQUc3RSxZQUFZO0VBQ2pFLE1BQU1pUyxVQUFVLEdBQUdud0IsT0FBTyxDQUFDaEYsTUFBTSxHQUFHLENBQUM7RUFDckMsTUFBTW8xQixVQUFVLEdBQUd2WSxrQkFBa0IsR0FBRyxDQUFDO0VBRXpDLE1BQU13WSxZQUFZLEdBQUdBLENBQUEsS0FBTTtJQUN6Qi8yQixRQUFRLENBQUNFLHFEQUFXLENBQUMsQ0FBQyxDQUFDO0VBQ3pCLENBQUM7RUFFRCxNQUFNODJCLFdBQVcsR0FBR0EsQ0FBQSxLQUFNO0lBQ3hCLElBQUlGLFVBQVUsRUFBRSxPQUFPLFFBQVE7SUFDL0IsT0FBT0gsR0FBRyxLQUFLOVEsa0RBQUksQ0FBQ1MsT0FBTyxHQUFHVCxrREFBSSxDQUFDUyxPQUFPLEdBQUdULGtEQUFJLENBQUNqa0IsTUFBTTtFQUMxRCxDQUFDO0VBRUQsTUFBTXExQixVQUFVLEdBQUdBLENBQUEsS0FBTTtJQUN2QixJQUFJSCxVQUFVLEVBQUUsT0FBT0MsWUFBWTtJQUNuQyxNQUFNRyxTQUFTLEdBQUdQLEdBQUcsS0FBSzlRLGtEQUFJLENBQUNTLE9BQU8sR0FBR1Qsa0RBQUksQ0FBQ2prQixNQUFNLEdBQUdpa0Isa0RBQUksQ0FBQ1MsT0FBTztJQUNuRSxPQUFPLE1BQU1zUSxNQUFNLENBQUNNLFNBQVMsQ0FBQztFQUNoQyxDQUFDO0VBRUQsb0JBQ0UzcUIsdURBQUEsQ0FBQXVaLHVEQUFBO0lBQUFuWSxRQUFBLEdBQ0csQ0FBQ2twQixVQUFVLGlCQUNWeHFCLHNEQUFBLENBQUMwWix1REFBYztNQUFDQyxRQUFRLEVBQUVnUixXQUFXLENBQUMsQ0FBRTtNQUFDN25CLE9BQU8sRUFBRThuQixVQUFVLENBQUM7SUFBRSxDQUFFLENBQ2xFLEVBQ0FKLFVBQVUsaUJBQ1R0cUIsdURBQUEsQ0FBQXVaLHVEQUFBO01BQUFuWSxRQUFBLGdCQUNFdEIsc0RBQUEsQ0FBQ29QLDhDQUFHO1FBQUM5SixFQUFFLEVBQUU7VUFBRTJOLEVBQUUsRUFBRSxDQUFDO1VBQUVyQyxFQUFFLEVBQUU7UUFBRSxDQUFFO1FBQUF0UCxRQUFBLGVBQ3hCdEIsc0RBQUEsQ0FBQ2lxQixxREFBWSxJQUFFO01BQUMsQ0FDYixDQUFDLEVBQ0wzb0IsUUFBUTtJQUFBLENBQ1QsQ0FDSDtFQUFBLENBQ0QsQ0FBQztBQUVQLENBQUM7QUFFRCxpRUFBZStvQixVQUFVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ2pEekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUUwQjtBQUNTO0FBQ2tDO0FBQ3RCO0FBQ0o7QUFDQTtBQUMyQjtBQUN2QjtBQUNJO0FBQUE7QUFFbkQsTUFBTVksYUFBYSxHQUFHbjBCLElBQUEsSUFRaEI7RUFBQSxJQUFBb25CLGFBQUEsRUFBQUMsY0FBQTtFQUFBLElBUmlCO0lBQ3JCdmtCLE1BQU07SUFDTlIsV0FBVztJQUNYOHhCLFlBQVk7SUFDWkMsZUFBZTtJQUNmQyxRQUFRO0lBQ1JDLFVBQVU7SUFDVkM7RUFDRixDQUFDLEdBQUF4MEIsSUFBQTtFQUNDLE1BQU07SUFBRUw7RUFBRSxDQUFDLEdBQUcrTCw2REFBYyxDQUFDLENBQUM7RUFDOUIsTUFBTSxDQUFDK29CLG1CQUFtQixFQUFFQyxzQkFBc0IsQ0FBQyxHQUFHOXJCLHFEQUFjLENBQUMsS0FBSyxDQUFDO0VBQzNFLE1BQU0rckIsY0FBYyxHQUFHLENBQUFyeUIsV0FBVyxhQUFYQSxXQUFXLHVCQUFYQSxXQUFXLENBQUV6RyxLQUFLLE9BQUtpSCxNQUFNLGFBQU5BLE1BQU0sZ0JBQUFza0IsYUFBQSxHQUFOdGtCLE1BQU0sQ0FBRTJELEtBQUssY0FBQTJnQixhQUFBLHVCQUFiQSxhQUFBLENBQWV2ckIsS0FBSztFQUNsRSxNQUFNO0lBQUUrNEI7RUFBZSxDQUFDLEdBQUd2TCx5RUFBZ0IsQ0FBQ3ZtQixNQUFNLENBQUM7RUFFbkQsTUFBTSt4QixjQUFjLEdBQUdBLENBQUEsS0FBTTtJQUMzQkgsc0JBQXNCLENBQUMsS0FBSyxDQUFDO0lBQzdCRixVQUFVLENBQUMsQ0FBQztFQUNkLENBQUM7RUFFRCxvQkFDRXByQix1REFBQSxDQUFDa1AsOENBQUc7SUFBQzdPLFNBQVMsRUFBRVQsd0RBQWU7SUFBQXdCLFFBQUEsZ0JBQzdCdEIsc0RBQUEsQ0FBQ2tDLGlEQUFNO01BQ0xtRCxPQUFPLEVBQUMsV0FBVztNQUNuQmdDLEtBQUssRUFBQyxTQUFTO01BQ2ZvUSxJQUFJLEVBQUMsT0FBTztNQUNaN04sUUFBUSxFQUFFNmhCLGNBQWU7TUFDekIzb0IsT0FBTyxFQUFFQSxDQUFBLEtBQU1zb0IsUUFBUSxDQUFDaHlCLFdBQVcsQ0FBQ3pHLEtBQUssRUFBRSxFQUFFLENBQUU7TUFBQTJPLFFBQUEsRUFFOUM3SyxDQUFDLENBQUMsNEJBQTRCO0lBQUMsQ0FDMUIsQ0FBQyxlQUNUdUosc0RBQUEsQ0FBQ3lSLGtEQUFPO01BQUNwTSxPQUFPLEVBQUMsUUFBUTtNQUFDQyxFQUFFLEVBQUU7UUFBRXNtQixFQUFFLEVBQUUsQ0FBQztRQUFFN08sRUFBRSxFQUFFO01BQUUsQ0FBRTtNQUFBemIsUUFBQSxFQUFDO0lBRWhELENBQVMsQ0FBQyxlQUNWcEIsdURBQUEsQ0FBQ2tQLDhDQUFHO01BQUE5TixRQUFBLGdCQUNGdEIsc0RBQUEsQ0FBQ3VQLG1EQUFRO1FBQUNpQixFQUFFLEVBQUUwYSxZQUFZLEtBQUssT0FBUTtRQUFDemEsT0FBTyxFQUFFLEdBQUk7UUFBQW5QLFFBQUEsZUFDbkR0QixzREFBQSxDQUFDK3FCLHFEQUFZO1VBQ1hueEIsTUFBTSxFQUFFQSxNQUFPO1VBQ2ZpeUIsUUFBUSxFQUFHMWlCLEdBQUcsSUFDWmlpQixRQUFRLENBQUNqaUIsR0FBRyxDQUFDMmlCLGtCQUFrQixFQUFFM2lCLEdBQUcsQ0FBQzRpQixnQkFBZ0IsQ0FDdEQ7VUFDRG5wQixPQUFPLEVBQUVBLENBQUEsS0FBTXVvQixlQUFlLENBQUMsSUFBSTtRQUFFLENBQ3RDO01BQUMsQ0FDTSxDQUFDLEVBQ1ZELFlBQVksS0FBSyxPQUFPLGlCQUN2QmxyQixzREFBQSxDQUFDa0MsaURBQU07UUFDTG1ELE9BQU8sRUFBQyxXQUFXO1FBQ25CZ0MsS0FBSyxFQUFDLFNBQVM7UUFDZm9RLElBQUksRUFBQyxPQUFPO1FBQ1ozVSxPQUFPLEVBQUVBLENBQUEsS0FBTXFvQixlQUFlLENBQUMsT0FBTyxDQUFFO1FBQUE3cEIsUUFBQSxFQUV2QzdLLENBQUMsQ0FBQywrQkFBK0I7TUFBQyxDQUM3QixDQUNUO0lBQUEsQ0FDRSxDQUFDLEVBQ0xpMUIsY0FBYyxpQkFDYnhyQix1REFBQSxDQUFBdVosdURBQUE7TUFBQW5ZLFFBQUEsZ0JBQ0V0QixzREFBQSxDQUFDeVIsa0RBQU87UUFBQ3BNLE9BQU8sRUFBQyxRQUFRO1FBQUNDLEVBQUUsRUFBRTtVQUFFc21CLEVBQUUsRUFBRSxDQUFDO1VBQUU3TyxFQUFFLEVBQUU7UUFBRSxDQUFFO1FBQUF6YixRQUFBLEVBQUM7TUFFaEQsQ0FBUyxDQUFDLGVBQ1Z0QixzREFBQSxDQUFDdVAsbURBQVE7UUFBQ2lCLEVBQUUsRUFBRTBhLFlBQVksS0FBSyxRQUFTO1FBQUN6YSxPQUFPLEVBQUUsR0FBSTtRQUFBblAsUUFBQSxlQUNwRHRCLHNEQUFBLENBQUNnckIscURBQVk7VUFDWHB4QixNQUFNLEVBQUVBLE1BQU87VUFDZml5QixRQUFRLEVBQUcxaUIsR0FBRyxJQUNaa2lCLFVBQVUsQ0FDUmxpQixHQUFHLENBQUM2aUIsbUJBQW1CLEVBQ3ZCN2lCLEdBQUcsQ0FBQzhpQixrQkFBa0IsRUFDdEI5aUIsR0FBRyxDQUFDK2lCLGNBQ04sQ0FDRDtVQUNEdHBCLE9BQU8sRUFBRUEsQ0FBQSxLQUFNdW9CLGVBQWUsQ0FBQyxJQUFJO1FBQUUsQ0FDdEM7TUFBQyxDQUNNLENBQUMsRUFDVkQsWUFBWSxLQUFLLFFBQVEsaUJBQ3hCbHJCLHNEQUFBLENBQUNrQyxpREFBTTtRQUNMbUQsT0FBTyxFQUFDLFdBQVc7UUFDbkJnQyxLQUFLLEVBQUMsU0FBUztRQUNmb1EsSUFBSSxFQUFDLE9BQU87UUFDWjNVLE9BQU8sRUFBRUEsQ0FBQSxLQUFNcW9CLGVBQWUsQ0FBQyxRQUFRLENBQUU7UUFBQTdwQixRQUFBLEVBRXhDN0ssQ0FBQyxDQUFDLDZCQUE2QjtNQUFDLENBQzNCLENBQ1Q7SUFBQSxDQUNELENBQ0gsRUFDQSxDQUFBbUQsTUFBTSxhQUFOQSxNQUFNLGdCQUFBdWtCLGNBQUEsR0FBTnZrQixNQUFNLENBQUUyRCxLQUFLLGNBQUE0Z0IsY0FBQSx1QkFBYkEsY0FBQSxDQUFleHJCLEtBQUssa0JBQ25CcU4sc0RBQUEsQ0FBQ29QLDhDQUFHO01BQUM3TyxTQUFTLEVBQUVULGdFQUF1QjtNQUFBd0IsUUFBQSxlQUVyQ3RCLHNEQUFBLENBQUM4cUIsK0NBQUk7UUFDSHNCLFNBQVMsRUFBQyxRQUFRO1FBQ2xCL21CLE9BQU8sRUFBQyxPQUFPO1FBQ2Z2QyxPQUFPLEVBQUVBLENBQUEsS0FBTTBvQixzQkFBc0IsQ0FBQyxJQUFJLENBQUU7UUFDNUNsbUIsRUFBRSxFQUFFO1VBQ0YrQixLQUFLLEVBQUUsV0FBVztVQUNsQmdsQixjQUFjLEVBQUUsV0FBVztVQUMzQkMsbUJBQW1CLEVBQUU7UUFDdkIsQ0FBRTtRQUFBaHJCLFFBQUEsRUFFRDdLLENBQUMsQ0FBQyxvQ0FBb0M7TUFBQyxDQUNwQztJQUFDLENBQ0osQ0FDTixlQUVEdUosc0RBQUEsQ0FBQ3lDLHNEQUFhO01BQ1pDLElBQUksRUFBRTZvQixtQkFBb0I7TUFDMUJuMEIsS0FBSyxFQUFFWCxDQUFDLENBQUMsc0NBQXNDLENBQUU7TUFDakRrTSxJQUFJLEVBQUVsTSxDQUFDLENBQUMscUNBQXFDLENBQUU7TUFDL0NvTSxTQUFTLEVBQUU4b0IsY0FBZTtNQUMxQi9vQixPQUFPLEVBQUVBLENBQUEsS0FBTTRvQixzQkFBc0IsQ0FBQyxLQUFLO0lBQUUsQ0FDOUMsQ0FBQztFQUFBLENBQ0MsQ0FBQztBQUVWLENBQUM7QUFFRFAsYUFBYSxDQUFDbHBCLFNBQVMsR0FBRztFQUN4Qm5JLE1BQU0sRUFBRWlHLDBEQUFnQixDQUFDb0MsVUFBVTtFQUNuQzdJLFdBQVcsRUFBRXlHLDBEQUFnQixDQUFDb0MsVUFBVTtFQUN4Q2lwQixZQUFZLEVBQUVyckIsMERBQWdCO0VBQzlCc3JCLGVBQWUsRUFBRXRyQix3REFBYyxDQUFDb0MsVUFBVTtFQUMxQ21wQixRQUFRLEVBQUV2ckIsd0RBQWMsQ0FBQ29DLFVBQVU7RUFDbkNvcEIsVUFBVSxFQUFFeHJCLHdEQUFjLENBQUNvQztBQUM3QixDQUFDO0FBRUQsaUVBQWVncEIsYUFBYTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNqSjVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFMEI7QUFDUztBQUNZO0FBQ087QUFDbkI7QUFDUjtBQUVrQjtBQUFBO0FBRTdDLE1BQU1ELFlBQVksR0FBR2wwQixJQUFBLElBQTJCO0VBQUEsSUFBMUI7SUFBRSswQixRQUFRO0lBQUVqcEI7RUFBUSxDQUFDLEdBQUE5TCxJQUFBO0VBQ3pDLE1BQU07SUFBRUw7RUFBRSxDQUFDLEdBQUcrTCw2REFBYyxDQUFDLENBQUM7RUFFOUIsTUFBTTRMLE1BQU0sR0FBR21lLGlEQUFTLENBQUM7SUFDdkJFLGFBQWEsRUFBRTtNQUNiVCxtQkFBbUIsRUFBRSxFQUFFO01BQ3ZCQyxrQkFBa0IsRUFBRSxFQUFFO01BQ3RCQyxjQUFjLEVBQUU7SUFDbEIsQ0FBQztJQUNEUSxnQkFBZ0IsRUFBRUYsdUNBQVUsQ0FBQztNQUMzQlIsbUJBQW1CLEVBQUVRLHVDQUNaLENBQUMvMUIsQ0FBQyxDQUFDLDhCQUE4QixDQUFDLENBQUMsQ0FDekNvVCxRQUFRLENBQUNwVCxDQUFDLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztNQUNoRHcxQixrQkFBa0IsRUFBRU8sdUNBQ1gsQ0FBQy8xQixDQUFDLENBQUMsNkJBQTZCLENBQUMsQ0FBQyxDQUN4Q29ULFFBQVEsQ0FBQ3BULENBQUMsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO01BQy9DeTFCLGNBQWMsRUFBRU0sdUNBQ1AsQ0FBQy8xQixDQUFDLENBQUMseUJBQXlCLENBQUMsQ0FBQyxDQUNwQzlELEtBQUssQ0FBQzhELENBQUMsQ0FBQyx5QkFBeUIsQ0FBQztJQUN2QyxDQUFDLENBQUM7SUFDRm8xQixRQUFRLEVBQUVBLENBQUMzaUIsTUFBTSxFQUFBM1IsS0FBQSxLQUFvQjtNQUFBLElBQWxCO1FBQUVvMUI7TUFBVSxDQUFDLEdBQUFwMUIsS0FBQTtNQUM5QnMwQixRQUFRLENBQUMzaUIsTUFBTSxDQUFDO01BQ2hCeWpCLFNBQVMsQ0FBQyxDQUFDO0lBQ2I7RUFDRixDQUFDLENBQUM7RUFFRixNQUFNQyxZQUFZLEdBQUdBLENBQUEsS0FBTTtJQUN6QnhlLE1BQU0sQ0FBQ3VlLFNBQVMsQ0FBQyxDQUFDO0lBQ2xCL3BCLE9BQU8sQ0FBQyxDQUFDO0VBQ1gsQ0FBQztFQUVELG9CQUNFMUMsdURBQUEsQ0FBQXVaLHVEQUFBO0lBQUFuWSxRQUFBLGdCQUNFdEIsc0RBQUEsQ0FBQzRFLHFEQUFVO01BQUNTLE9BQU8sRUFBQyxJQUFJO01BQUMwa0IsWUFBWTtNQUFBem9CLFFBQUEsRUFDbEM3SyxDQUFDLENBQUMsbUNBQW1DO0lBQUMsQ0FDN0IsQ0FBQyxlQUNidUosc0RBQUEsQ0FBQzRFLHFEQUFVO01BQUNTLE9BQU8sRUFBQyxPQUFPO01BQUMwa0IsWUFBWTtNQUFDemtCLEVBQUUsRUFBRTtRQUFFK0IsS0FBSyxFQUFFO01BQWlCLENBQUU7TUFBQS9GLFFBQUEsRUFDdEU3SyxDQUFDLENBQUMsa0NBQWtDO0lBQUMsQ0FDNUIsQ0FBQyxlQUNieUosdURBQUE7TUFBTTJyQixRQUFRLEVBQUV6ZCxNQUFNLENBQUN5ZSxZQUFhO01BQUNDLFVBQVU7TUFBQXhyQixRQUFBLGdCQUM3Q3RCLHNEQUFBLENBQUNrTCxvREFBUztRQUNScEIsU0FBUztRQUNUdFIsSUFBSSxFQUFDLHFCQUFxQjtRQUMxQnVSLE1BQU0sRUFBQyxRQUFRO1FBQ2ZYLEtBQUssRUFBRTNTLENBQUMsQ0FBQyx3Q0FBd0MsQ0FBRTtRQUNuRE8sS0FBSyxFQUFFb1gsTUFBTSxDQUFDbEYsTUFBTSxDQUFDOGlCLG1CQUFvQjtRQUN6Q3hqQixRQUFRLEVBQUU0RixNQUFNLENBQUNRLFlBQWE7UUFDOUJDLE1BQU0sRUFBRVQsTUFBTSxDQUFDVSxVQUFXO1FBQzFCbkosS0FBSyxFQUNIeUksTUFBTSxDQUFDVyxPQUFPLENBQUNpZCxtQkFBbUIsSUFDbENoZCxPQUFPLENBQUNaLE1BQU0sQ0FBQ3hYLE1BQU0sQ0FBQ28xQixtQkFBbUIsQ0FDMUM7UUFDRHRqQixVQUFVLEVBQ1IwRixNQUFNLENBQUNXLE9BQU8sQ0FBQ2lkLG1CQUFtQixJQUNsQzVkLE1BQU0sQ0FBQ3hYLE1BQU0sQ0FBQ28xQixtQkFDZjtRQUNEbmlCLFFBQVE7TUFBQSxDQUNULENBQUMsZUFDRjdKLHNEQUFBLENBQUNrTCxvREFBUztRQUNScEIsU0FBUztRQUNUdFIsSUFBSSxFQUFDLG9CQUFvQjtRQUN6QnVSLE1BQU0sRUFBQyxRQUFRO1FBQ2ZYLEtBQUssRUFBRTNTLENBQUMsQ0FBQyx1Q0FBdUMsQ0FBRTtRQUNsRE8sS0FBSyxFQUFFb1gsTUFBTSxDQUFDbEYsTUFBTSxDQUFDK2lCLGtCQUFtQjtRQUN4Q3pqQixRQUFRLEVBQUU0RixNQUFNLENBQUNRLFlBQWE7UUFDOUJDLE1BQU0sRUFBRVQsTUFBTSxDQUFDVSxVQUFXO1FBQzFCbkosS0FBSyxFQUNIeUksTUFBTSxDQUFDVyxPQUFPLENBQUNrZCxrQkFBa0IsSUFDakNqZCxPQUFPLENBQUNaLE1BQU0sQ0FBQ3hYLE1BQU0sQ0FBQ3ExQixrQkFBa0IsQ0FDekM7UUFDRHZqQixVQUFVLEVBQ1IwRixNQUFNLENBQUNXLE9BQU8sQ0FBQ2tkLGtCQUFrQixJQUNqQzdkLE1BQU0sQ0FBQ3hYLE1BQU0sQ0FBQ3ExQjtNQUNmLENBQ0YsQ0FBQyxlQUNGanNCLHNEQUFBLENBQUNrTCxvREFBUztRQUNScEIsU0FBUztRQUNUdFIsSUFBSSxFQUFDLGdCQUFnQjtRQUNyQjRRLEtBQUssRUFBRTNTLENBQUMsQ0FBQyxtQ0FBbUMsQ0FBRTtRQUM5Q3NULE1BQU0sRUFBQyxRQUFRO1FBQ2YvUyxLQUFLLEVBQUVvWCxNQUFNLENBQUNsRixNQUFNLENBQUNnakIsY0FBZTtRQUNwQzFqQixRQUFRLEVBQUU0RixNQUFNLENBQUNRLFlBQWE7UUFDOUJDLE1BQU0sRUFBRVQsTUFBTSxDQUFDVSxVQUFXO1FBQzFCbkosS0FBSyxFQUNIeUksTUFBTSxDQUFDVyxPQUFPLENBQUNtZCxjQUFjLElBQzdCbGQsT0FBTyxDQUFDWixNQUFNLENBQUN4WCxNQUFNLENBQUNzMUIsY0FBYyxDQUNyQztRQUNEeGpCLFVBQVUsRUFDUjBGLE1BQU0sQ0FBQ1csT0FBTyxDQUFDbWQsY0FBYyxJQUFJOWQsTUFBTSxDQUFDeFgsTUFBTSxDQUFDczFCO01BQ2hELENBQ0YsQ0FBQyxlQUNGbHNCLHNEQUFBLENBQUNvWCxtREFBVTtRQUNUQyxTQUFTLEVBQUU1Z0IsQ0FBQyxDQUFDLGtDQUFrQyxDQUFFO1FBQ2pENmdCLFdBQVcsRUFBRTdnQixDQUFDLENBQUMsb0NBQW9DLENBQUU7UUFDckRtTSxPQUFPLEVBQUVncUIsWUFBYTtRQUN0QmhqQixRQUFRLEVBQUV3RSxNQUFNLENBQUMyZTtNQUFhLENBQy9CLENBQUM7SUFBQSxDQUNFLENBQUM7RUFBQSxDQUNQLENBQUM7QUFFUCxDQUFDO0FBRUQvQixZQUFZLENBQUNqcEIsU0FBUyxHQUFHO0VBQ3ZCOHBCLFFBQVEsRUFBRWhzQix3REFBYyxDQUFDb0MsVUFBVTtFQUNuQ1csT0FBTyxFQUFFL0Msd0RBQWMsQ0FBQ29DO0FBQzFCLENBQUM7QUFFRCxpRUFBZStvQixZQUFZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ2pJRDtBQUNTO0FBQ1k7QUFDTztBQUNiO0FBQ007QUFBQTtBQUUvQyxNQUFNZ0MsWUFBWSxHQUFHbDJCLElBQUEsSUFBZ0Q7RUFBQSxJQUFBb25CLGFBQUEsRUFBQU8sYUFBQSxFQUFBQyxjQUFBO0VBQUEsSUFBL0M7SUFBRXVPLFVBQVU7SUFBRXJ6QixNQUFNO0lBQUVzekIsU0FBUztJQUFFdHFCO0VBQVEsQ0FBQyxHQUFBOUwsSUFBQTtFQUM5RCxNQUFNO0lBQUVMO0VBQUUsQ0FBQyxHQUFHK0wsNkRBQWMsQ0FBQyxDQUFDO0VBQzlCLE1BQU0ycUIsYUFBYSxHQUFHLENBQUF2ekIsTUFBTSxhQUFOQSxNQUFNLGdCQUFBc2tCLGFBQUEsR0FBTnRrQixNQUFNLENBQUUyRCxLQUFLLGNBQUEyZ0IsYUFBQSx1QkFBYkEsYUFBQSxDQUFldnJCLEtBQUssTUFBS3U2QixTQUFTO0VBRXhELE1BQU1FLGlCQUFpQixHQUFHQSxDQUFBLEtBQU07SUFDOUIsSUFBSUgsVUFBVSxLQUFLLFFBQVEsRUFBRTtNQUMzQixVQUFBLzNCLE1BQUEsQ0FBVXVCLENBQUMsQ0FBQyx1Q0FBdUMsQ0FBQyxPQUFBdkIsTUFBQSxDQUNsRDBFLE1BQU0sQ0FBQzJELEtBQUssQ0FBQ1osVUFBVSxPQUFBekgsTUFBQSxDQUNyQjBFLE1BQU0sQ0FBQzJELEtBQUssQ0FBQ1gsU0FBUztJQUM1QjtJQUVBLElBQUlxd0IsVUFBVSxFQUFFO01BQUEsSUFBQTlPLGNBQUE7TUFDZCxNQUFNbHFCLElBQUksR0FBR2s1QixhQUFhLEdBQUcsS0FBSyxHQUFHdnpCLE1BQU0sYUFBTkEsTUFBTSxnQkFBQXVrQixjQUFBLEdBQU52a0IsTUFBTSxDQUFFMkQsS0FBSyxjQUFBNGdCLGNBQUEsdUJBQWJBLGNBQUEsQ0FBZXhyQixLQUFLO01BQ3pELFVBQUF1QyxNQUFBLENBQVV1QixDQUFDLENBQUMseUNBQXlDLENBQUMsT0FBQXZCLE1BQUEsQ0FBSWpCLElBQUk7SUFDaEU7SUFFQSxPQUFPMkYsTUFBTSxDQUFDb2hCLFdBQVcsQ0FBQ3hpQixJQUFJO0VBQ2hDLENBQUM7RUFFRCxNQUFNNjBCLGFBQWEsR0FBR0EsQ0FBQSxLQUFNO0lBQzFCLElBQUlKLFVBQVUsRUFBRTtNQUNkLE1BQU1LLFFBQVEsR0FBR0gsYUFBYSxHQUMxQiw0Q0FBNEMsR0FDNUMsOENBQThDO01BRWxELG9CQUNFanRCLHVEQUFBLENBQUF1Wix1REFBQTtRQUFBblksUUFBQSxHQUNHN0ssQ0FBQyxDQUFDNjJCLFFBQVEsQ0FBQyxlQUNadHRCLHNEQUFBLFNBQUssQ0FBQyxlQUVOQSxzREFBQSxDQUFDOHFCLCtDQUFJO1VBQ0hzQixTQUFTLEVBQUMsUUFBUTtVQUNsQi9tQixPQUFPLEVBQUMsT0FBTztVQUNmdkMsT0FBTyxFQUFFRixPQUFRO1VBQ2pCMEMsRUFBRSxFQUFFO1lBQUVxQixVQUFVLEVBQUUsR0FBRztZQUFFb0QsTUFBTSxFQUFFO1VBQWMsQ0FBRTtVQUFBekksUUFBQSxFQUU5QzdLLENBQUMsQ0FBQyw0Q0FBNEM7UUFBQyxDQUM1QyxDQUFDO01BQUEsQ0FDUCxDQUFDO0lBRVA7SUFFQSxPQUFPLEVBQUU7RUFDWCxDQUFDO0VBRUQsb0JBQ0V5Six1REFBQSxDQUFDa1AsOENBQUc7SUFBQzdPLFNBQVMsRUFBRVQsd0RBQWU7SUFBQXdCLFFBQUEsZ0JBQzdCcEIsdURBQUEsQ0FBQ2tQLDhDQUFHO01BQUM3TyxTQUFTLEVBQUVULG1FQUEwQjtNQUFBd0IsUUFBQSxnQkFDeENwQix1REFBQSxDQUFDMEUscURBQVU7UUFBQ1MsT0FBTyxFQUFDLE9BQU87UUFBQzBrQixZQUFZO1FBQUN4cEIsU0FBUyxFQUFFVCw0REFBbUI7UUFBQXdCLFFBQUEsR0FDcEU3SyxDQUFDLENBQUMsMENBQTBDLENBQUMsRUFBRSxHQUFHLEVBQ2xEbUQsTUFBTSxhQUFOQSxNQUFNLGdCQUFBNmtCLGFBQUEsR0FBTjdrQixNQUFNLENBQUUxQixLQUFLLGNBQUF1bUIsYUFBQSx1QkFBYkEsYUFBQSxDQUFlZ1AsV0FBVztNQUFBLENBQ2pCLENBQUMsZUFDYnp0QixzREFBQSxDQUFDNEUscURBQVU7UUFBQ1MsT0FBTyxFQUFDLE9BQU87UUFBQzBrQixZQUFZO1FBQUN4cEIsU0FBUyxFQUFFVCx3REFBZTtRQUFBd0IsUUFBQSxlQUNqRXRCLHNEQUFBLENBQUNvRCxpREFBUTtVQUNQQyxJQUFJLEVBQUV6SixNQUFNLGFBQU5BLE1BQU0sZ0JBQUE4a0IsY0FBQSxHQUFOOWtCLE1BQU0sQ0FBRTFCLEtBQUssY0FBQXdtQixjQUFBLHVCQUFiQSxjQUFBLENBQWVuYSxNQUFPO1VBQzVCZCxRQUFRO1VBQ1JDLEtBQUssRUFBRSxHQUFJO1VBQ1hKLFdBQVcsRUFBRTdNLENBQUMsQ0FBQyxpQ0FBaUM7UUFBRSxDQUNuRDtNQUFDLENBQ1EsQ0FBQztJQUFBLENBQ1YsQ0FBQyxlQUNOdUosc0RBQUEsQ0FBQzRFLHFEQUFVO01BQUNTLE9BQU8sRUFBQyxJQUFJO01BQUMwa0IsWUFBWTtNQUFBem9CLFFBQUEsRUFDbEM4ckIsaUJBQWlCLENBQUM7SUFBQyxDQUNWLENBQUMsZUFDYnB0QixzREFBQSxDQUFDNEUscURBQVU7TUFDVFMsT0FBTyxFQUFDLE9BQU87TUFDZjBrQixZQUFZO01BQ1p4cEIsU0FBUyxFQUFFVCwyREFBa0I7TUFDN0J3RixFQUFFLEVBQUU7UUFBRStCLEtBQUssRUFBRTtNQUFpQixDQUFFO01BQUEvRixRQUFBLEVBRS9CK3JCLGFBQWEsQ0FBQztJQUFDLENBQ04sQ0FBQztFQUFBLENBQ1YsQ0FBQztBQUVWLENBQUM7O0FBRUQ7QUFDQUwsWUFBWSxDQUFDanJCLFNBQVMsR0FBRztFQUN2QmtyQixVQUFVLEVBQUVwdEIsMERBQWdCLENBQUNvQyxVQUFVO0VBQ3ZDckksTUFBTSxFQUFFaUcsMERBQWdCLENBQUNvQyxVQUFVO0VBQ25DaXJCLFNBQVMsRUFBRXJ0QiwwREFBZ0IsQ0FBQ29DO0FBQzlCLENBQUM7QUFFRCxpRUFBZStxQixZQUFZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzFGRDtBQUNTO0FBQ1k7QUFDTztBQUNnQjtBQUN2QjtBQUFBO0FBRS9DLE1BQU1ZLGNBQWMsR0FBRzkyQixJQUFBLElBQWdEO0VBQUEsSUFBQW9uQixhQUFBO0VBQUEsSUFBL0M7SUFBRStPLFVBQVU7SUFBRXJ6QixNQUFNO0lBQUVzekIsU0FBUztJQUFFdHFCO0VBQVEsQ0FBQyxHQUFBOUwsSUFBQTtFQUNoRSxNQUFNO0lBQUVMO0VBQUUsQ0FBQyxHQUFHK0wsNkRBQWMsQ0FBQyxDQUFDO0VBQzlCLE1BQU0ycUIsYUFBYSxHQUFHLENBQUF2ekIsTUFBTSxhQUFOQSxNQUFNLGdCQUFBc2tCLGFBQUEsR0FBTnRrQixNQUFNLENBQUUyRCxLQUFLLGNBQUEyZ0IsYUFBQSx1QkFBYkEsYUFBQSxDQUFldnJCLEtBQUssTUFBS3U2QixTQUFTO0VBQ3hELE1BQU07SUFBRXhCO0VBQWUsQ0FBQyxHQUFHdkwseUVBQWdCLENBQUN2bUIsTUFBTSxDQUFDO0VBRW5ELE1BQU13ekIsaUJBQWlCLEdBQUdBLENBQUEsS0FBTTtJQUFBLElBQUFqUCxjQUFBO0lBQzlCLE1BQU1scUIsSUFBSSxHQUFHazVCLGFBQWEsR0FDdEIxMkIsQ0FBQyxDQUFDLHdDQUF3QyxDQUFDLEdBQzNDbUQsTUFBTSxhQUFOQSxNQUFNLGdCQUFBdWtCLGNBQUEsR0FBTnZrQixNQUFNLENBQUUyRCxLQUFLLGNBQUE0Z0IsY0FBQSx1QkFBYkEsY0FBQSxDQUFleHJCLEtBQUs7SUFFeEIsSUFBSXM2QixVQUFVLEtBQUssUUFBUSxFQUFFO01BQzNCLFVBQUEvM0IsTUFBQSxDQUFVdUIsQ0FBQyxDQUFDLHlDQUF5QyxDQUFDLE9BQUF2QixNQUFBLENBQ3BEMEUsTUFBTSxDQUFDMkQsS0FBSyxDQUFDWixVQUFVLE9BQUF6SCxNQUFBLENBQ3JCMEUsTUFBTSxDQUFDMkQsS0FBSyxDQUFDWCxTQUFTO0lBQzVCO0lBRUEsSUFBSSxDQUFDcXdCLFVBQVUsRUFBRTtNQUNmLFVBQUEvM0IsTUFBQSxDQUFVdUIsQ0FBQyxDQUFDLDJDQUEyQyxDQUFDLE9BQUF2QixNQUFBLENBQUlqQixJQUFJO0lBQ2xFO0lBRUEsVUFBQWlCLE1BQUEsQ0FBVXVCLENBQUMsQ0FBQyw2Q0FBNkMsQ0FBQyxPQUFBdkIsTUFBQSxDQUFJakIsSUFBSTtFQUNwRSxDQUFDO0VBRUQsTUFBTW81QixhQUFhLEdBQUdBLENBQUEsS0FBTTtJQUMxQixJQUFJLENBQUNKLFVBQVUsRUFBRTtNQUNmLE9BQU92QixjQUFjLEdBQ2pCajFCLENBQUMsQ0FBQyw2Q0FBNkMsQ0FBQyxHQUNoREEsQ0FBQyxDQUFDLHlEQUF5RCxDQUFDO0lBQ2xFO0lBRUEsTUFBTTYyQixRQUFRLEdBQUdILGFBQWEsR0FDMUIsOENBQThDLEdBQzlDLGdEQUFnRDtJQUVwRCxvQkFDRWp0Qix1REFBQSxDQUFBdVosdURBQUE7TUFBQW5ZLFFBQUEsR0FDRzdLLENBQUMsQ0FBQzYyQixRQUFRLENBQUMsZUFDWnR0QixzREFBQSxTQUFLLENBQUMsZUFFTkEsc0RBQUEsQ0FBQzhxQiwrQ0FBSTtRQUNIc0IsU0FBUyxFQUFDLFFBQVE7UUFDbEIvbUIsT0FBTyxFQUFDLE9BQU87UUFDZnZDLE9BQU8sRUFBRUYsT0FBUTtRQUNqQjBDLEVBQUUsRUFBRTtVQUFFcUIsVUFBVSxFQUFFLEdBQUc7VUFBRW9ELE1BQU0sRUFBRTtRQUFjLENBQUU7UUFBQXpJLFFBQUEsRUFFOUM3SyxDQUFDLENBQUMsOENBQThDO01BQUMsQ0FDOUMsQ0FBQztJQUFBLENBQ1AsQ0FBQztFQUVQLENBQUM7RUFFRCxvQkFDRXlKLHVEQUFBLENBQUNrUCw4Q0FBRztJQUFDN08sU0FBUyxFQUFFVCx3REFBZTtJQUFBd0IsUUFBQSxnQkFDN0J0QixzREFBQSxDQUFDNEUscURBQVU7TUFBQ1MsT0FBTyxFQUFDLElBQUk7TUFBQzBrQixZQUFZO01BQUF6b0IsUUFBQSxFQUNsQzhyQixpQkFBaUIsQ0FBQztJQUFDLENBQ1YsQ0FBQyxlQUNicHRCLHNEQUFBLENBQUM0RSxxREFBVTtNQUNUUyxPQUFPLEVBQUMsT0FBTztNQUNmMGtCLFlBQVk7TUFDWnhwQixTQUFTLEVBQUVULDJEQUFrQjtNQUM3QndGLEVBQUUsRUFBRTtRQUFFK0IsS0FBSyxFQUFFO01BQWlCLENBQUU7TUFBQS9GLFFBQUEsRUFFL0IrckIsYUFBYSxDQUFDO0lBQUMsQ0FDTixDQUFDO0VBQUEsQ0FDVixDQUFDO0FBRVYsQ0FBQzs7QUFFRDtBQUNBTyxjQUFjLENBQUM3ckIsU0FBUyxHQUFHO0VBQ3pCa3JCLFVBQVUsRUFBRXB0QiwwREFBZ0IsQ0FBQ29DLFVBQVU7RUFDdkNySSxNQUFNLEVBQUVpRywwREFBZ0IsQ0FBQ29DLFVBQVU7RUFDbkNpckIsU0FBUyxFQUFFcnRCLDBEQUFnQixDQUFDb0M7QUFDOUIsQ0FBQztBQUVELGlFQUFlMnJCLGNBQWM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDbEY3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRTBCO0FBQ1M7QUFDWTtBQUNPO0FBQ25CO0FBQ1I7QUFFa0I7QUFBQTtBQUU3QyxNQUFNN0MsWUFBWSxHQUFHajBCLElBQUEsSUFBMkI7RUFBQSxJQUExQjtJQUFFKzBCLFFBQVE7SUFBRWpwQjtFQUFRLENBQUMsR0FBQTlMLElBQUE7RUFDekMsTUFBTTtJQUFFTDtFQUFFLENBQUMsR0FBRytMLDZEQUFjLENBQUMsQ0FBQztFQUU5QixNQUFNNEwsTUFBTSxHQUFHbWUsaURBQVMsQ0FBQztJQUN2QkUsYUFBYSxFQUFFO01BQ2JYLGtCQUFrQixFQUFFLEVBQUU7TUFDdEJDLGdCQUFnQixFQUFFO0lBQ3BCLENBQUM7SUFDRFcsZ0JBQWdCLEVBQUVGLHVDQUFVLENBQUM7TUFDM0JWLGtCQUFrQixFQUFFVSx1Q0FDWCxDQUFDLzFCLENBQUMsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLENBQ3BDOUQsS0FBSyxDQUFDOEQsQ0FBQyxDQUFDLHlCQUF5QixDQUFDLENBQUMsQ0FDbkNvVCxRQUFRLENBQUNwVCxDQUFDLENBQUMsMkJBQTJCLENBQUMsQ0FBQztNQUMzQ3MxQixnQkFBZ0IsRUFBRVMsdUNBQVUsQ0FBQy8xQixDQUFDLENBQUMsd0JBQXdCLENBQUM7SUFDMUQsQ0FBQyxDQUFDO0lBQ0ZvMUIsUUFBUSxFQUFFQSxDQUFDM2lCLE1BQU0sRUFBQTNSLEtBQUEsS0FBb0I7TUFBQSxJQUFsQjtRQUFFbzFCO01BQVUsQ0FBQyxHQUFBcDFCLEtBQUE7TUFDOUJzMEIsUUFBUSxDQUFDM2lCLE1BQU0sQ0FBQztNQUNoQnlqQixTQUFTLENBQUMsQ0FBQztJQUNiO0VBQ0YsQ0FBQyxDQUFDO0VBRUYsTUFBTUMsWUFBWSxHQUFHQSxDQUFBLEtBQU07SUFDekJ4ZSxNQUFNLENBQUN1ZSxTQUFTLENBQUMsQ0FBQztJQUNsQi9wQixPQUFPLENBQUMsQ0FBQztFQUNYLENBQUM7RUFFRCxvQkFDRTFDLHVEQUFBLENBQUF1Wix1REFBQTtJQUFBblksUUFBQSxnQkFDRXRCLHNEQUFBLENBQUM0RSxxREFBVTtNQUFDUyxPQUFPLEVBQUMsSUFBSTtNQUFDMGtCLFlBQVk7TUFBQXpvQixRQUFBLEVBQ2xDN0ssQ0FBQyxDQUFDLG1DQUFtQztJQUFDLENBQzdCLENBQUMsZUFDYnVKLHNEQUFBLENBQUM0RSxxREFBVTtNQUFDUyxPQUFPLEVBQUMsT0FBTztNQUFDMGtCLFlBQVk7TUFBQ3prQixFQUFFLEVBQUU7UUFBRStCLEtBQUssRUFBRTtNQUFpQixDQUFFO01BQUEvRixRQUFBLEVBQ3RFN0ssQ0FBQyxDQUFDLGtDQUFrQztJQUFDLENBQzVCLENBQUMsZUFDYnlKLHVEQUFBO01BQU0yckIsUUFBUSxFQUFFemQsTUFBTSxDQUFDeWUsWUFBYTtNQUFDQyxVQUFVO01BQUF4ckIsUUFBQSxnQkFDN0N0QixzREFBQSxDQUFDa0wsb0RBQVM7UUFDUnBCLFNBQVM7UUFDVHRSLElBQUksRUFBQyxvQkFBb0I7UUFDekI0USxLQUFLLEVBQUUzUyxDQUFDLENBQUMsZ0RBQWdELENBQUU7UUFDM0RzVCxNQUFNLEVBQUMsUUFBUTtRQUNmL1MsS0FBSyxFQUFFb1gsTUFBTSxDQUFDbEYsTUFBTSxDQUFDNGlCLGtCQUFtQjtRQUN4Q3RqQixRQUFRLEVBQUU0RixNQUFNLENBQUNRLFlBQWE7UUFDOUJDLE1BQU0sRUFBRVQsTUFBTSxDQUFDVSxVQUFXO1FBQzFCbkosS0FBSyxFQUNIeUksTUFBTSxDQUFDVyxPQUFPLENBQUMrYyxrQkFBa0IsSUFDakM5YyxPQUFPLENBQUNaLE1BQU0sQ0FBQ3hYLE1BQU0sQ0FBQ2sxQixrQkFBa0IsQ0FDekM7UUFDRHBqQixVQUFVLEVBQ1IwRixNQUFNLENBQUNXLE9BQU8sQ0FBQytjLGtCQUFrQixJQUNqQzFkLE1BQU0sQ0FBQ3hYLE1BQU0sQ0FBQ2sxQixrQkFDZjtRQUNEamlCLFFBQVE7TUFBQSxDQUNULENBQUMsZUFDRjdKLHNEQUFBLENBQUNrTCxvREFBUztRQUNScEIsU0FBUztRQUNUdFIsSUFBSSxFQUFDLGtCQUFrQjtRQUN2QjRRLEtBQUssRUFBRTNTLENBQUMsQ0FBQyw4Q0FBOEMsQ0FBRTtRQUN6RE8sS0FBSyxFQUFFb1gsTUFBTSxDQUFDbEYsTUFBTSxDQUFDNmlCLGdCQUFpQjtRQUN0Q2hpQixNQUFNLEVBQUMsUUFBUTtRQUNmOGpCLFNBQVM7UUFDVEMsT0FBTyxFQUFFLENBQUU7UUFDWHRsQixRQUFRLEVBQUU0RixNQUFNLENBQUNRLFlBQWE7UUFDOUJDLE1BQU0sRUFBRVQsTUFBTSxDQUFDVSxVQUFXO1FBQzFCbkosS0FBSyxFQUNIeUksTUFBTSxDQUFDVyxPQUFPLENBQUNnZCxnQkFBZ0IsSUFDL0IvYyxPQUFPLENBQUNaLE1BQU0sQ0FBQ3hYLE1BQU0sQ0FBQ20xQixnQkFBZ0IsQ0FDdkM7UUFDRHJqQixVQUFVLEVBQ1IwRixNQUFNLENBQUNXLE9BQU8sQ0FBQ2dkLGdCQUFnQixJQUFJM2QsTUFBTSxDQUFDeFgsTUFBTSxDQUFDbTFCO01BQ2xELENBQ0YsQ0FBQyxlQUNGL3JCLHNEQUFBLENBQUNvWCxtREFBVTtRQUNUQyxTQUFTLEVBQUU1Z0IsQ0FBQyxDQUFDLGtDQUFrQyxDQUFFO1FBQ2pENmdCLFdBQVcsRUFBRTdnQixDQUFDLENBQUMsb0NBQW9DLENBQUU7UUFDckRtTSxPQUFPLEVBQUVncUIsWUFBYTtRQUN0QmhqQixRQUFRLEVBQUV3RSxNQUFNLENBQUMyZTtNQUFhLENBQy9CLENBQUM7SUFBQSxDQUNFLENBQUM7RUFBQSxDQUNQLENBQUM7QUFFUCxDQUFDO0FBRURoQyxZQUFZLENBQUNocEIsU0FBUyxHQUFHO0VBQ3ZCOHBCLFFBQVEsRUFBRWhzQix3REFBYyxDQUFDb0MsVUFBVTtFQUNuQ1csT0FBTyxFQUFFL0Msd0RBQWMsQ0FBQ29DO0FBQzFCLENBQUM7QUFFRCxpRUFBZThvQixZQUFZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDN0d5QjtBQUNqQjtBQUNvQjtBQUNSO0FBQ1g7QUFPYjtBQUNrQjtBQUNzQjtBQUNPO0FBQ1c7QUFDN0I7QUFDUTtBQUNJO0FBQ1Q7QUFDRTtBQUNWO0FBQUE7QUFFL0MsTUFBTTNLLFlBQVksR0FBR3RwQixJQUFBLElBQW1EO0VBQUEsSUFBQTJuQixhQUFBLEVBQUFQLGFBQUE7RUFBQSxJQUFsRDtJQUFFN2lCLFFBQVE7SUFBRXRDLE9BQU87SUFBRXlwQixPQUFPO0lBQUU5ZixJQUFJO0lBQUVFO0VBQVEsQ0FBQyxHQUFBOUwsSUFBQTtFQUNqRSxNQUFNO0lBQUVMO0VBQUUsQ0FBQyxHQUFHK0wsNkRBQWMsQ0FBQyxDQUFDO0VBQzlCLE1BQU03TyxRQUFRLEdBQUdvc0Isd0RBQVcsQ0FBQyxDQUFDO0VBQzlCLE1BQU07SUFBRW9PLGNBQWM7SUFBRUM7RUFBYSxDQUFDLEdBQUdMLGlEQUFVLENBQ2pEdHBCLG1FQUNGLENBQUM7RUFDRCxNQUFNLENBQUN5bUIsWUFBWSxFQUFFQyxlQUFlLENBQUMsR0FBR3hyQiwrQ0FBUSxDQUFDLElBQUksQ0FBQztFQUN0RCxNQUFNLENBQUMwdUIscUJBQXFCLEVBQUVDLHdCQUF3QixDQUFDLEdBQUczdUIsK0NBQVEsQ0FBQyxFQUFFLENBQUM7RUFDdEUsTUFBTTtJQUNKM0wsTUFBTTtJQUNOQyxJQUFJLEVBQUU7TUFBRW1GO0lBQVk7RUFDdEIsQ0FBQyxHQUFHOFYsd0RBQVcsQ0FBRVcsS0FBSyxJQUFLQSxLQUFLLENBQUMvWCxXQUFXLENBQUM7RUFDN0MsTUFBTTtJQUFFOEIsTUFBTTtJQUFFNUc7RUFBZSxDQUFDLEdBQUdpN0IsZ0VBQVksQ0FDN0M1eUIsUUFBUSxFQUNSdEMsT0FBTyxFQUNQeXBCLE9BQU8sRUFDUDlmLElBQ0YsQ0FBQztFQUNELE1BQU02ckIsZ0JBQWdCLEdBQUcsQ0FBQTMwQixNQUFNLGFBQU5BLE1BQU0sZ0JBQUE2a0IsYUFBQSxHQUFON2tCLE1BQU0sQ0FBRTFCLEtBQUssY0FBQXVtQixhQUFBLHVCQUFiQSxhQUFBLENBQWUrUCxRQUFRLE9BQUtwMUIsV0FBVyxhQUFYQSxXQUFXLHVCQUFYQSxXQUFXLENBQUVYLEVBQUU7RUFDcEUsTUFBTWcyQixpQkFBaUIsR0FBRyxDQUFBNzBCLE1BQU0sYUFBTkEsTUFBTSxnQkFBQXNrQixhQUFBLEdBQU50a0IsTUFBTSxDQUFFMkQsS0FBSyxjQUFBMmdCLGFBQUEsdUJBQWJBLGFBQUEsQ0FBZXZyQixLQUFLLE9BQUt5RyxXQUFXLGFBQVhBLFdBQVcsdUJBQVhBLFdBQVcsQ0FBRXpHLEtBQUs7RUFDckUsTUFBTSs3QixpQkFBaUIsR0FDckIsQ0FBQ0QsaUJBQWlCLElBQUlGLGdCQUFnQixLQUN0Q3Y2QixNQUFNLENBQUMyNkIscUNBQXFDO0VBRTlDLE1BQU1DLGFBQWEsR0FBR0EsQ0FBQSxLQUFNO0lBQzFCTix3QkFBd0IsQ0FBQyxFQUFFLENBQUM7SUFDNUIxckIsT0FBTyxDQUFDLENBQUM7RUFDWCxDQUFDO0VBRUQsTUFBTXdvQixRQUFRLEdBQUcsU0FBQUEsQ0FBQ3o0QixLQUFLLEVBQW1CO0lBQUEsSUFBakJtSCxPQUFPLEdBQUEyRCxTQUFBLENBQUFwSSxNQUFBLFFBQUFvSSxTQUFBLFFBQUFDLFNBQUEsR0FBQUQsU0FBQSxNQUFHLEVBQUU7SUFDbkMsSUFBSStrQixPQUFPLEVBQUU7TUFDWDd1QixRQUFRLENBQUNtSyx3REFBYyxDQUFDL0UsT0FBTyxFQUFFc0MsUUFBUSxFQUFFMUksS0FBSyxFQUFFbUgsT0FBTyxDQUFDLENBQUMsQ0FBQ3BCLElBQUksQ0FBQyxNQUFNO1FBQ3JFNDFCLHdCQUF3QixJQUFBcDVCLE1BQUEsQ0FBSWcyQixZQUFZLENBQUUsQ0FBQztRQUMzQ0MsZUFBZSxDQUFDLElBQUksQ0FBQztNQUN2QixDQUFDLENBQUM7SUFDSixDQUFDLE1BQU07TUFDTHgzQixRQUFRLENBQUM2Six3REFBYyxDQUFDekUsT0FBTyxFQUFFc0MsUUFBUSxFQUFFMUksS0FBSyxDQUFDLENBQUMsQ0FBQytGLElBQUksQ0FBQyxNQUFNO1FBQzVENDFCLHdCQUF3QixJQUFBcDVCLE1BQUEsQ0FBSWcyQixZQUFZLENBQUUsQ0FBQztRQUMzQ0MsZUFBZSxDQUFDLElBQUksQ0FBQztNQUN2QixDQUFDLENBQUM7SUFDSjtFQUNGLENBQUM7RUFFRCxNQUFNRyxVQUFVLEdBQUdBLENBQUEsS0FBTTtJQUN2QjMzQixRQUFRLENBQUNvSyx3REFBYyxDQUFDaEYsT0FBTyxFQUFFc0MsUUFBUSxDQUFDLENBQUMsQ0FBQzNDLElBQUksQ0FBQyxNQUFNO01BQ3JEazJCLGFBQWEsQ0FBQyxDQUFDO0lBQ2pCLENBQUMsQ0FBQztFQUNKLENBQUM7RUFFRCxNQUFNdkQsVUFBVSxHQUFHQSxDQUFDejRCLFNBQVMsRUFBRUMsUUFBUSxFQUFFRixLQUFLLEtBQUs7SUFDakRnQixRQUFRLENBQ05xSyx3REFBYyxDQUFDakYsT0FBTyxFQUFFc0MsUUFBUSxFQUFFekksU0FBUyxFQUFFQyxRQUFRLEVBQUVGLEtBQUssQ0FDOUQsQ0FBQyxDQUFDK0YsSUFBSSxDQUFDLE1BQU07TUFDWDQxQix3QkFBd0IsSUFBQXA1QixNQUFBLENBQUlnMkIsWUFBWSxDQUFFLENBQUM7TUFDM0NDLGVBQWUsQ0FBQyxJQUFJLENBQUM7SUFDdkIsQ0FBQyxDQUFDO0VBQ0osQ0FBQztFQUVELE1BQU0wRCxRQUFRLEdBQUkxbEIsR0FBRyxJQUFLO0lBQ3hCLE1BQU1wTSxPQUFPLEdBQUdvUSw2RkFBcUIsQ0FBQ2hFLEdBQUcsQ0FBQztJQUUxQyxPQUFPeFYsUUFBUSxDQUFDdUssNERBQWtCLENBQUN0RSxNQUFNLEVBQUVtRCxPQUFPLENBQUMsQ0FBQyxDQUNqRHJFLElBQUksQ0FBQyxNQUFNO01BQ1ZrMkIsYUFBYSxDQUFDLENBQUM7TUFDZlQsY0FBYyxDQUFDMTNCLENBQUMsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO01BQ2pELE9BQU80QyxPQUFPLENBQUN5MUIsT0FBTyxDQUFDLENBQUM7SUFDMUIsQ0FBQyxDQUFDLENBQ0RuMkIsS0FBSyxDQUFDLE1BQU07TUFDWHkxQixZQUFZLENBQUMzM0IsQ0FBQyxDQUFDLDRCQUE0QixDQUFDLENBQUM7TUFDN0MsT0FBTzRDLE9BQU8sQ0FBQ0MsTUFBTSxDQUFDLENBQUM7SUFDekIsQ0FBQyxDQUFDO0VBQ04sQ0FBQztFQUVELE1BQU1sQyxLQUFLLEdBQUdvckIsT0FBTyxHQUNqQi9yQixDQUFDLENBQUMscUNBQXFDLENBQUMsR0FDeENBLENBQUMsQ0FBQyxtQ0FBbUMsQ0FBQztFQUMxQyxNQUFNczRCLE1BQU0sR0FBR3ZNLE9BQU8sR0FBR29MLDBFQUFjLEdBQUdaLHdFQUFZO0VBRXRELG9CQUNFaHRCLHVEQUFBLENBQUN1bEIsb0RBQVc7SUFDVjlzQixFQUFFLEVBQUV5MUIsK0RBQWlCO0lBQ3JCOTJCLEtBQUssRUFBRUEsS0FBTTtJQUNic0wsSUFBSSxFQUFFQSxJQUFLO0lBQ1hFLE9BQU8sRUFBRWdzQixhQUFjO0lBQUF0dEIsUUFBQSxFQUV0QjFILE1BQU0sSUFBSTVHLGNBQWMsaUJBQ3ZCa04sd0RBQUEsQ0FBQ2tQLDhDQUFHO01BQUM3TyxTQUFTLEVBQUVULHlFQUErQjtNQUFBd0IsUUFBQSxnQkFDN0N0Qix1REFBQSxDQUFDK3VCLE1BQU07UUFDTDlCLFVBQVUsRUFBRW9CLHFCQUFzQjtRQUNsQ3owQixNQUFNLEVBQUVBLE1BQU87UUFDZnN6QixTQUFTLEVBQUU5ekIsV0FBVyxDQUFDekcsS0FBTTtRQUM3QmlRLE9BQU8sRUFBRWdzQjtNQUFjLENBQ3hCLENBQUMsRUFFRFAscUJBQXFCLGdCQUNwQnJ1Qix1REFBQSxDQUFDZ3VCLDJFQUFVO1FBQ1RwMEIsTUFBTSxFQUFFQSxNQUFPO1FBQ2Y1RixNQUFNLEVBQUVBLE1BQU87UUFDZmhCLGNBQWMsRUFBRUEsY0FBZTtRQUMvQmk4QixPQUFPLEVBQUVQLGlCQUFrQjtRQUMzQjdDLFFBQVEsRUFBRWdELFFBQVM7UUFDbkJqc0IsT0FBTyxFQUFFZ3NCO01BQWMsQ0FDeEIsQ0FBQyxnQkFFRjV1Qix1REFBQSxDQUFDaXJCLGtFQUFhO1FBQ1pyeEIsTUFBTSxFQUFFQSxNQUFPO1FBQ2ZSLFdBQVcsRUFBRUEsV0FBWTtRQUN6Qjh4QixZQUFZLEVBQUVBLFlBQWE7UUFDM0JDLGVBQWUsRUFBRUEsZUFBZ0I7UUFDakNDLFFBQVEsRUFBRUEsUUFBUztRQUNuQkUsVUFBVSxFQUFFQSxVQUFXO1FBQ3ZCRCxVQUFVLEVBQUVBO01BQVcsQ0FDeEIsQ0FDRjtJQUFBLENBQ0U7RUFDTixDQUNVLENBQUM7QUFFbEIsQ0FBQztBQUVEakwsWUFBWSxDQUFDcmUsU0FBUyxHQUFHO0VBQ3ZCMUcsUUFBUSxFQUFFd0UsMERBQWdCO0VBQzFCOUcsT0FBTyxFQUFFOEcsMERBQWdCO0VBQ3pCMmlCLE9BQU8sRUFBRTNpQiwwREFBZ0I7RUFDekI2QyxJQUFJLEVBQUU3Qyx3REFBYztFQUNwQitDLE9BQU8sRUFBRS9DLHdEQUFjK0Y7QUFDekIsQ0FBQztBQUVELGlFQUFld2EsWUFBWTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDdkozQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRTBCO0FBQ1M7QUFDWTtBQUNxQjtBQUM2QjtBQUMxQztBQUFBO0FBRXZELE1BQU1nUCxZQUFZLEdBQUd0NEIsSUFBQSxJQUFzQztFQUFBLElBQXJDO0lBQUVzWCxNQUFNO0lBQUVpaEIsUUFBUTtJQUFFcHRCO0VBQVcsQ0FBQyxHQUFBbkwsSUFBQTtFQUNwRCxNQUFNO0lBQUVMO0VBQUUsQ0FBQyxHQUFHK0wsNkRBQWMsQ0FBQyxDQUFDO0VBQzlCLE1BQU0sQ0FBQzhzQixVQUFVLEVBQUVDLGFBQWEsQ0FBQyxHQUFHN3ZCLHFEQUFjLENBQUMsRUFBRSxDQUFDO0VBQ3RELE1BQU0sQ0FBQzh2QixPQUFPLEVBQUVDLFVBQVUsQ0FBQyxHQUFHL3ZCLHFEQUFjLENBQUMsRUFBRSxDQUFDO0VBQ2hELE1BQU07SUFDSjlJLE1BQU07SUFDTnNTLE1BQU07SUFDTjZGLE9BQU87SUFDUDJnQixlQUFlO0lBQ2ZqbkIsYUFBYTtJQUNiZ2tCO0VBQ0YsQ0FBQyxHQUFHcmUsTUFBTTtFQUNWLE1BQU01VixJQUFJLEdBQUc5Riw0REFBb0IsQ0FBQ0ksT0FBTztFQUN6QyxNQUFNa0UsS0FBSyxHQUFHa1MsTUFBTSxDQUFDMVEsSUFBSSxDQUFDO0VBQzFCLE1BQU1vUixRQUFRLEdBQUcsQ0FBQyxDQUFDNmlCLGFBQWEsQ0FBQ2owQixJQUFJLENBQUM7RUFDdEMsTUFBTW1OLEtBQUssR0FBR29KLE9BQU8sQ0FBQ3ZXLElBQUksQ0FBQyxJQUFJd1csT0FBTyxDQUFDcFksTUFBTSxDQUFDNEIsSUFBSSxDQUFDLENBQUM7RUFDcEQsTUFBTWtRLFVBQVUsR0FBR3FHLE9BQU8sQ0FBQ3ZXLElBQUksQ0FBQyxJQUFJNUIsTUFBTSxDQUFDNEIsSUFBSSxDQUFDO0VBRWhEa0gsc0RBQWUsQ0FBQyxNQUFNO0lBQ3BCLElBQUk0dkIsVUFBVSxLQUFLLEVBQUUsRUFBRTtNQUNyQkcsVUFBVSxDQUFDejRCLEtBQUssR0FBRyxDQUFDQSxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7TUFDaEMsT0FBTzBHLFNBQVM7SUFDbEI7SUFFQXl4QiwrR0FBMEIsQ0FBQ0UsUUFBUSxFQUFFQyxVQUFVLEVBQUdLLE9BQU8sSUFBSztNQUM1RCxJQUFJQyxVQUFVLEdBQUcsRUFBRTtNQUVuQixJQUFJNTRCLEtBQUssRUFBRTtRQUNUNDRCLFVBQVUsR0FBRyxDQUFDNTRCLEtBQUssQ0FBQztNQUN0QjtNQUVBLElBQUkyNEIsT0FBTyxFQUFFO1FBQ1hDLFVBQVUsR0FBRyxDQUFDLEdBQUdBLFVBQVUsRUFBRSxHQUFHRCxPQUFPLENBQUM7TUFDMUM7TUFFQUYsVUFBVSxDQUFDRyxVQUFVLENBQUM7SUFDeEIsQ0FBQyxDQUFDO0lBQ0YsT0FBT2x5QixTQUFTO0VBQ2xCLENBQUMsRUFBRSxDQUFDMUcsS0FBSyxFQUFFczRCLFVBQVUsQ0FBQyxDQUFDO0VBRXZCLG9CQUNFdHZCLHNEQUFBLENBQUNrdkIsdURBQVk7SUFDWDEyQixJQUFJLEVBQUVBLElBQUs7SUFDWGczQixPQUFPLEVBQUVBLE9BQVE7SUFDakJLLFlBQVk7SUFDWkMsUUFBUTtJQUNSQyxrQkFBa0I7SUFDbEJDLHFCQUFxQjtJQUNyQnBtQixRQUFRLEVBQUVBLFFBQVM7SUFDbkI1UyxLQUFLLEVBQUVBLEtBQU07SUFDYjZYLE1BQU0sRUFBRUEsQ0FBQSxLQUFNNmdCLGVBQWUsQ0FBQ2wzQixJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBRTtJQUNoRHkzQixjQUFjLEVBQUdDLE1BQU0sSUFBSztNQUMxQjtNQUNBLElBQUksT0FBT0EsTUFBTSxLQUFLLFFBQVEsRUFBRTtRQUM5QixPQUFPQSxNQUFNO01BQ2Y7TUFDQTtNQUNBLElBQUlBLE1BQU0sQ0FBQ1osVUFBVSxFQUFFO1FBQ3JCLE9BQU9ZLE1BQU0sQ0FBQ1osVUFBVTtNQUMxQjtNQUNBO01BQ0EsT0FBT1ksTUFBTSxDQUFDMTNCLElBQUk7SUFDcEIsQ0FBRTtJQUNGZ1EsUUFBUSxFQUFFQSxDQUFDaUssS0FBSyxFQUFFL0ksUUFBUSxLQUFLO01BQzdCLE1BQU15bUIsUUFBUSxHQUFHLENBQUF6bUIsUUFBUSxhQUFSQSxRQUFRLHVCQUFSQSxRQUFRLENBQUU0bEIsVUFBVSxLQUFJNWxCLFFBQVE7TUFFakQrbEIsVUFBVSxDQUFDVSxRQUFRLEdBQUcsQ0FBQ0EsUUFBUSxFQUFFLEdBQUdYLE9BQU8sQ0FBQyxHQUFHQSxPQUFPLENBQUM7TUFDdkQvbUIsYUFBYSxDQUFDalEsSUFBSSxFQUFFMjNCLFFBQVEsQ0FBQztJQUMvQixDQUFFO0lBQ0ZDLGFBQWEsRUFBRUEsQ0FBQzNkLEtBQUssRUFBRTRkLGFBQWEsS0FBSztNQUN2Q2QsYUFBYSxDQUFDYyxhQUFhLENBQUM7SUFDOUIsQ0FBRTtJQUNGQyxhQUFhLEVBQUVBLENBQUNkLE9BQU8sRUFBRXgzQixNQUFNLEtBQUs7TUFDbEMsTUFBTTtRQUFFczNCO01BQVcsQ0FBQyxHQUFHdDNCLE1BQU07TUFDN0IsTUFBTXU0QixRQUFRLEdBQUcsQ0FBQyxHQUFHZixPQUFPLENBQUM7TUFDN0I7TUFDQSxNQUFNZ0IsVUFBVSxHQUFHaEIsT0FBTyxDQUFDMWlCLElBQUksQ0FBRW9qQixNQUFNLElBQUtaLFVBQVUsS0FBS1ksTUFBTSxDQUFDMTNCLElBQUksQ0FBQztNQUN2RSxJQUFJODJCLFVBQVUsS0FBSyxFQUFFLElBQUksQ0FBQ2tCLFVBQVUsRUFBRTtRQUNwQ0QsUUFBUSxDQUFDdDdCLElBQUksQ0FBQztVQUNacTZCLFVBQVU7VUFDVjkyQixJQUFJLGNBQUF0RCxNQUFBLENBQWFvNkIsVUFBVTtRQUM3QixDQUFDLENBQUM7TUFDSjtNQUVBLE9BQU9pQixRQUFRO0lBQ2pCLENBQUU7SUFDRkUsV0FBVyxFQUFHejRCLE1BQU0saUJBQ2xCZ0ksc0RBQUEsQ0FBQ2tMLG9EQUFTQTtJQUNSLDZEQUFBeFAsYUFBQSxDQUFBQSxhQUFBLEtBQ0kxRCxNQUFNO01BQ1ZvUixLQUFLLEVBQUUzUyxDQUFDLENBQUMsZ0NBQWdDLENBQUU7TUFDM0NxVCxTQUFTO01BQ1RELFFBQVEsRUFBRTVILFVBQVc7TUFDckJ5RyxVQUFVLEVBQUVBLFVBQVc7TUFDdkIvQyxLQUFLLEVBQUVBLEtBQU07TUFDYm9FLE1BQU0sRUFBQztJQUFRLEVBQ2hCLENBQ0Q7SUFDRjJtQixZQUFZLEVBQUVBLENBQUNsd0IsS0FBSyxFQUFFMHZCLE1BQU0sS0FBSztNQUMvQixNQUFNO1VBQUVuNUI7UUFBb0IsQ0FBQyxHQUFHeUosS0FBSztRQUFyQm13QixXQUFXLEdBQUFsd0IscUZBQUEsQ0FBS0QsS0FBSyxFQUFBRSxTQUFBO01BQ3JDO1FBQUE7UUFDRTtRQUNBVixzREFBQSxPQUFBdEUsYUFBQSxDQUFBQSxhQUFBLEtBQWtCaTFCLFdBQVc7VUFBQXJ2QixRQUFBLGVBQzNCdEIsc0RBQUEsQ0FBQzRFLHFEQUFVO1lBQ1RTLE9BQU8sRUFBQyxPQUFPO1lBQ2ZDLEVBQUUsRUFBRTtjQUFFSSxRQUFRLEVBQUUsS0FBSztjQUFFMkIsS0FBSyxFQUFFO1lBQWlCLENBQUU7WUFBQS9GLFFBQUEsRUFFaEQ0dUIsTUFBTSxDQUFDMTNCO1VBQUksQ0FDRjtRQUFDLElBTk56QixHQU9MO01BQUM7SUFFVDtFQUFFLENBQ0gsQ0FBQztBQUVOLENBQUM7QUFFRHE0QixZQUFZLENBQUNydEIsU0FBUyxHQUFHO0VBQ3ZCcU0sTUFBTSxFQUFFdk8sMERBQWdCLENBQUNvQyxVQUFVO0VBQ25Db3RCLFFBQVEsRUFBRXh2QiwwREFBZ0IsQ0FBQ29DO0FBQzdCLENBQUM7QUFFRCxpRUFBZW10QixZQUFZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDN0lEO0FBQ1M7QUFPWjtBQUNtRDtBQUMzQjtBQUNRO0FBRVI7QUFBQTtBQUUvQyxNQUFNd0Isc0JBQXNCLEdBQUc5NUIsSUFBQSxJQUt6QjtFQUFBLElBTDBCO0lBQzlCKzVCLFVBQVU7SUFDVnppQixNQUFNO0lBQ043RixVQUFVLEdBQUcsS0FBSztJQUNsQnRHLFVBQVUsR0FBRztFQUNmLENBQUMsR0FBQW5MLElBQUE7RUFDQyxNQUFNO0lBQUVMO0VBQUUsQ0FBQyxHQUFHK0wsNkRBQWMsQ0FBQyxDQUFDO0VBQzlCLE1BQU1oSyxJQUFJLEdBQUc5Riw0REFBb0IsQ0FBQ0ssa0JBQWtCO0VBQ3BELE1BQU07SUFBRTZELE1BQU07SUFBRXNTLE1BQU07SUFBRTZGLE9BQU87SUFBRUgsWUFBWTtJQUFFRTtFQUFXLENBQUMsR0FBR1YsTUFBTTtFQUNwRSxNQUFNcFgsS0FBSyxHQUFHa1MsTUFBTSxDQUFDMVEsSUFBSSxDQUFDO0VBQzFCLE1BQU1tTixLQUFLLEdBQUdvSixPQUFPLENBQUN2VyxJQUFJLENBQUMsSUFBSXdXLE9BQU8sQ0FBQ3BZLE1BQU0sQ0FBQzRCLElBQUksQ0FBQyxDQUFDO0VBQ3BELE1BQU1rUSxVQUFVLEdBQUdxRyxPQUFPLENBQUN2VyxJQUFJLENBQUMsSUFBSTVCLE1BQU0sQ0FBQzRCLElBQUksQ0FBQztFQUVoRCxvQkFDRTBILHVEQUFBLENBQUNrUCw4Q0FBRztJQUFDN08sU0FBUyxFQUFFVCx3REFBZTtJQUFBd0IsUUFBQSxnQkFDN0J0QixzREFBQSxDQUFDZ0ksNEZBQU87TUFBQTFHLFFBQUEsRUFBRXV2QjtJQUFVLENBQVUsQ0FBQyxlQUMvQjN3Qix1REFBQSxDQUFDeUgsc0RBQVc7TUFBQ21DLFNBQVM7TUFBQ25FLEtBQUssRUFBRUEsS0FBTTtNQUFBckUsUUFBQSxnQkFDbEN0QixzREFBQSxDQUFDNEgsMkRBQWdCO1FBQ2ZxQyxPQUFPLGVBQ0xqSyxzREFBQSxDQUFDMEgsbURBQVE7VUFDUGxQLElBQUksRUFBRUEsSUFBSztVQUNYK1EsT0FBTyxFQUFFLENBQUMsQ0FBQ3ZTLEtBQU07VUFDakJvUyxLQUFLLEVBQUUzUyxDQUFDLENBQUMscURBQXFELENBQUU7VUFDaEUrUixRQUFRLEVBQUVvRyxZQUFhO1VBQ3ZCQyxNQUFNLEVBQUVDO1FBQVcsQ0FDcEIsQ0FDRjtRQUNEMUYsS0FBSyxFQUFFM1MsQ0FBQyxDQUFDLHFEQUFxRCxDQUFFO1FBQ2hFbVQsUUFBUSxFQUFFckIsVUFBVztRQUNyQnNCLFFBQVEsRUFBRTVIO01BQVcsQ0FDdEIsQ0FBQyxFQUNEMEQsS0FBSyxpQkFBSTNGLHNEQUFBLENBQUM4SCx5REFBYztRQUFBeEcsUUFBQSxFQUFFb0gsVUFBVSxhQUFWQSxVQUFVLGNBQVZBLFVBQVUsR0FBSTtNQUFHLENBQWlCLENBQUM7SUFBQSxDQUNuRCxDQUFDO0VBQUEsQ0FDWCxDQUFDO0FBRVYsQ0FBQztBQUVEa29CLHNCQUFzQixDQUFDN3VCLFNBQVMsR0FBRztFQUNqQzh1QixVQUFVLEVBQUVoeEIsMERBQWdCLENBQUNvQyxVQUFVO0VBQ3ZDbU0sTUFBTSxFQUFFdk8sMERBQWdCLENBQUNvQyxVQUFVO0VBQ25Dc0csVUFBVSxFQUFFMUksd0RBQWM7RUFDMUJvQyxVQUFVLEVBQUVwQyx3REFBY3lFO0FBQzVCLENBQUM7QUFFRCxpRUFBZXNzQixzQkFBc0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzNERztBQUNFO0FBQ0s7QUFDWjtBQUNxQjtBQUkzQjtBQUNZO0FBQzZCO0FBQ0M7QUFDQztBQUNyQjtBQUFBO0FBRW5ELE1BQU1RLGtCQUFrQixHQUFHdDZCLElBQUEsSUFBaUM7RUFBQSxJQUFBa3FCLG1CQUFBLEVBQUF2QyxhQUFBLEVBQUFDLGNBQUE7RUFBQSxJQUFoQztJQUFFOWtCLE1BQU07SUFBRXkzQjtFQUFnQixDQUFDLEdBQUF2NkIsSUFBQTtFQUNyRCxNQUFNO0lBQUVMO0VBQUUsQ0FBQyxHQUFHK0wsNkRBQWMsQ0FBQyxDQUFDO0VBQzlCLE1BQU07SUFBRTh1QjtFQUFXLENBQUMsR0FBR25SLHlFQUFnQixDQUFDdm1CLE1BQU0sQ0FBQztFQUMvQyxNQUFNakcsUUFBUSxHQUFHb3NCLHdEQUFXLENBQUMsQ0FBQztFQUM5QixNQUFNLENBQUN3UixnQkFBZ0IsRUFBRUMsbUJBQW1CLENBQUMsR0FBRzd4QiwrQ0FBUSxDQUFDLEtBQUssQ0FBQztFQUUvRCxNQUFNOHhCLGlCQUFpQixHQUFHQSxDQUFBLEtBQU07SUFDOUI5OUIsUUFBUSxDQUFDMEssc0RBQVksQ0FBQ3pFLE1BQU0sQ0FBQyxDQUFDO0VBQ2hDLENBQUM7RUFFRCxNQUFNODNCLFdBQVcsR0FBR0EsQ0FBQSxLQUFNO0lBQ3hCLzlCLFFBQVEsQ0FBQ2dHLDREQUFrQixDQUFDQyxNQUFNLENBQUMsQ0FBQyxDQUFDbEIsSUFBSSxDQUFDLE1BQU07TUFDOUM4NEIsbUJBQW1CLENBQUMsSUFBSSxDQUFDO01BQ3pCcnRCLFVBQVUsQ0FBQyxNQUFNO1FBQ2ZxdEIsbUJBQW1CLENBQUMsS0FBSyxDQUFDO01BQzVCLENBQUMsRUFBRXR1Qiw2REFBZSxHQUFHaXVCLHNEQUFRLENBQUM7SUFDaEMsQ0FBQyxDQUFDO0VBQ0osQ0FBQztFQUVELG9CQUNFanhCLHdEQUFBLENBQUNrUCw4Q0FBRztJQUFDN08sU0FBUyxFQUFFVCx3REFBYztJQUFBd0IsUUFBQSxnQkFDNUJ0Qix1REFBQSxDQUFDNEUscURBQVU7TUFBQ1MsT0FBTyxFQUFDLElBQUk7TUFBQzBrQixZQUFZO01BQUN4cEIsU0FBUyxFQUFFVCx1REFBYTtNQUFBd0IsUUFBQSxFQUMzRDFILE1BQU0sYUFBTkEsTUFBTSxnQkFBQW9uQixtQkFBQSxHQUFOcG5CLE1BQU0sQ0FBRW9oQixXQUFXLGNBQUFnRyxtQkFBQSx1QkFBbkJBLG1CQUFBLENBQXFCeG9CO0lBQUksQ0FDaEIsQ0FBQyxlQUNiMEgsd0RBQUEsQ0FBQzBFLHFEQUFVO01BQUNTLE9BQU8sRUFBQyxPQUFPO01BQUMwa0IsWUFBWTtNQUFDeHBCLFNBQVMsRUFBRVQsMERBQWdCO01BQUF3QixRQUFBLEdBQ2pFN0ssQ0FBQyxDQUFDLDRCQUE0QixDQUFDLEVBQUMsR0FBQyxFQUFDbUQsTUFBTSxhQUFOQSxNQUFNLGdCQUFBNmtCLGFBQUEsR0FBTjdrQixNQUFNLENBQUUxQixLQUFLLGNBQUF1bUIsYUFBQSx1QkFBYkEsYUFBQSxDQUFlZ1AsV0FBVztJQUFBLENBQ25ELENBQUMsRUFFWjZELFVBQVUsaUJBQ1RweEIsd0RBQUEsQ0FBQXVaLHdEQUFBO01BQUFuWSxRQUFBLGdCQUNFdEIsdURBQUEsQ0FBQ29QLDhDQUFHO1FBQUM3TyxTQUFTLEVBQUVULHdEQUFjO1FBQUF3QixRQUFBLGVBQzVCdEIsdURBQUEsQ0FBQzh3QixzREFBTTtVQUNMclosSUFBSSxFQUFFLEdBQUk7VUFDVjdWLEtBQUssRUFBRTtZQUNMZ1QsTUFBTSxFQUFFLE1BQU07WUFDZG1TLFFBQVEsRUFBRSxNQUFNO1lBQ2hCcmpCLEtBQUssRUFBRTtVQUNULENBQUU7VUFDRjFNLEtBQUssRUFBRTRDLE1BQU0sQ0FBQ2c0QixPQUFRO1VBQ3RCNVksT0FBTyxFQUFDO1FBQWEsQ0FDdEI7TUFBQyxDQUNDLENBQUMsZUFDTmhaLHVEQUFBO1FBQUdPLFNBQVMsRUFBRVQsd0RBQWM7UUFBQXdCLFFBQUEsRUFBRTdLLENBQUMsQ0FBQyxzQkFBc0I7TUFBQyxDQUFJLENBQUMsZUFDNUR1Six1REFBQSxDQUFDNEUscURBQVU7UUFBQ1MsT0FBTyxFQUFDLE9BQU87UUFBQzBrQixZQUFZO1FBQUN4cEIsU0FBUyxFQUFFVCx3REFBYztRQUFBd0IsUUFBQSxFQUMvRDdLLENBQUMsQ0FBQyx1QkFBdUI7TUFBQyxDQUNqQixDQUFDO0lBQUEsQ0FDYixDQUNILEVBRUEsQ0FBQzQ2QixlQUFlLElBQUlDLFVBQVUsaUJBQzdCcHhCLHdEQUFBLENBQUNrUCw4Q0FBRztNQUFDN08sU0FBUyxFQUFFVCx3RUFBOEI7TUFBQXdCLFFBQUEsZ0JBQzVDcEIsd0RBQUEsQ0FBQ2dDLGlEQUFNO1FBQ0wzQixTQUFTLEVBQUVULDZEQUFtQjtRQUM5QnVGLE9BQU8sRUFBQyxXQUFXO1FBQ25CZ0MsS0FBSyxFQUFDLFNBQVM7UUFDZnZFLE9BQU8sRUFBRTJ1QixpQkFBa0I7UUFBQW53QixRQUFBLGdCQUUzQnRCLHVEQUFBLENBQUNreEIscUVBQVk7VUFBQ3hyQixRQUFRLEVBQUM7UUFBTyxDQUFFLENBQUMsRUFDaENqUCxDQUFDLENBQUMsd0JBQXdCLENBQUM7TUFBQSxDQUN0QixDQUFDLGVBQ1R5Six3REFBQSxDQUFDZ0MsaURBQU07UUFDTDNCLFNBQVMsS0FBQXJMLE1BQUEsQ0FBSzRLLHlEQUFjLE9BQUE1SyxNQUFBLENBQUlxOEIsZ0JBQWdCLElBQUl6eEIsc0RBQVcsQ0FBRztRQUNsRWdELE9BQU8sRUFBRTR1QixXQUFZO1FBQ3JCOW5CLFFBQVEsRUFBRTJuQixnQkFBaUI7UUFBQWp3QixRQUFBLGdCQUUzQnRCLHVEQUFBLENBQUNneEIsOERBQVM7VUFBQ3RyQixRQUFRLEVBQUM7UUFBTyxDQUFFLENBQUMsRUFDN0I2ckIsZ0JBQWdCLEdBQ2I5NkIsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLEdBQ3ZCQSxDQUFDLENBQUMsb0JBQW9CLENBQUM7TUFBQSxDQUNyQixDQUFDO0lBQUEsQ0FDTixDQUNOLGVBRUR1Six1REFBQTtNQUFLTyxTQUFTLEVBQUVULDZEQUFtQjtNQUFBd0IsUUFBQSxlQUNqQ3RCLHVEQUFBLENBQUNvRCxpREFBUTtRQUNQQyxJQUFJLEVBQUV6SixNQUFNLGFBQU5BLE1BQU0sZ0JBQUE4a0IsY0FBQSxHQUFOOWtCLE1BQU0sQ0FBRTFCLEtBQUssY0FBQXdtQixjQUFBLHVCQUFiQSxjQUFBLENBQWVuYSxNQUFPO1FBQzVCZCxRQUFRO1FBQ1JDLEtBQUssRUFBRSxHQUFJO1FBQ1hKLFdBQVcsRUFBRTdNLENBQUMsQ0FBQyxpQ0FBaUM7TUFBRSxDQUNuRDtJQUFDLENBQ0MsQ0FBQztFQUFBLENBQ0gsQ0FBQztBQUVWLENBQUM7QUFFRCxpRUFBZTI2QixrQkFBa0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNwR2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFMEI7QUFDUztBQUNZO0FBQ0M7QUFDYjtBQUM4QjtBQUtUO0FBRUg7QUFDaUM7QUFDekM7QUFDcUI7QUFJM0I7QUFFWTtBQUFBO0FBRW5ELE1BQU1wRCxVQUFVLEdBQUdsM0IsSUFBQSxJQU9iO0VBQUEsSUFBQW9uQixhQUFBLEVBQUFDLGNBQUE7RUFBQSxJQVBjO0lBQ2xCdmtCLE1BQU07SUFDTjVHLGNBQWM7SUFDZGdCLE1BQU07SUFDTmk3QixPQUFPO0lBQ1BwRCxRQUFRO0lBQ1JqcEI7RUFDRixDQUFDLEdBQUE5TCxJQUFBO0VBQ0MsTUFBTTtJQUFFTDtFQUFFLENBQUMsR0FBRytMLDZEQUFjLENBQUMsQ0FBQztFQUM5QixNQUFNekYsT0FBTyxHQUFHbkQsTUFBTSxhQUFOQSxNQUFNLGdCQUFBc2tCLGFBQUEsR0FBTnRrQixNQUFNLENBQUUyRCxLQUFLLGNBQUEyZ0IsYUFBQSx1QkFBYkEsYUFBQSxDQUFlN1EsZUFBZSxDQUFDa2xCLE1BQU0sQ0FBQyxDQUFDcDhCLEdBQUcsRUFBRStXLEdBQUcsS0FBSztJQUNsRSxNQUFNdEUsWUFBWSxHQUFHViw4RUFBTSxDQUFDZ0YsR0FBRyxDQUFDN0UsUUFBUSxDQUFDN1AsSUFBSSxFQUFFMFUsR0FBRyxDQUFDN0UsUUFBUSxDQUFDNVAsRUFBRSxDQUFDO0lBQy9EdEMsR0FBRyxDQUFDeVMsWUFBWSxDQUFDLEdBQUdxRSxvRkFBWSxDQUFDQyxHQUFHLENBQUNsVyxLQUFLLEVBQUVrVyxHQUFHLENBQUM3RSxRQUFRLENBQUMyRSxJQUFJLENBQUM7SUFDOUQsT0FBTzdXLEdBQUc7RUFDWixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7RUFFTixNQUFNaVksTUFBTSxHQUFHbWUsaURBQVMsQ0FBQztJQUN2QkUsYUFBYSxFQUFFNEYsaUVBQVksQ0FDekJ6NEIsTUFBTSxDQUFDMkQsS0FBSyxFQUNadkssY0FBYyxFQUNkK0osT0FBTyxFQUNQLElBQUksRUFDSixJQUNGLENBQUM7SUFDRDJ2QixnQkFBZ0IsRUFBRTRGLDBFQUFxQixDQUNyQ3QvQixjQUFjLEVBQ2QsSUFBSSxFQUNKZ0IsTUFBTSxDQUFDdytCLGlDQUNULENBQUM7SUFDRDNHLFFBQVEsRUFBRzNpQixNQUFNLElBQUs7TUFDcEIsTUFBTXVwQixlQUFlLEdBQUdKLGlFQUFZLENBQ2xDejRCLE1BQU0sQ0FBQzJELEtBQUssRUFDWnZLLGNBQWMsRUFDZGtXLE1BQU0sRUFDTixJQUFJLEVBQ0osSUFBSSxFQUNKLElBQ0YsQ0FBQztNQUVELE9BQU8yaUIsUUFBUSxDQUFDNEcsZUFBZSxDQUFDO0lBQ2xDLENBQUM7SUFDREMsa0JBQWtCLEVBQUU7RUFDdEIsQ0FBQyxDQUFDOztFQUVGO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0VBRUE7RUFDQU4sb0VBQWdCLENBQUNoa0IsTUFBTSxDQUFDO0VBRXhCLG9CQUNFbE8sd0RBQUE7SUFBTTJyQixRQUFRLEVBQUV6ZCxNQUFNLENBQUN5ZSxZQUFhO0lBQUNDLFVBQVU7SUFBQXhyQixRQUFBLGdCQUM3Q3RCLHVEQUFBLENBQUNteUIsMERBQWlCO01BQ2hCL2pCLE1BQU0sRUFBRUEsTUFBTztNQUNmbVEsV0FBVyxFQUFFLENBQUMsR0FBQUosY0FBQSxHQUFDdmtCLE1BQU0sQ0FBQzJELEtBQUssY0FBQTRnQixjQUFBLGVBQVpBLGNBQUEsQ0FBYzNoQixVQUFVLENBQUM7TUFDeEM2eUIsUUFBUSxFQUFFcjdCLE1BQU0sQ0FBQ3lFLEVBQUc7TUFDcEJtUixRQUFRLEVBQUUsQ0FBQ3FsQjtJQUFRLENBQ3BCLENBQUMsRUFFRCxDQUFBajhCLGNBQWMsYUFBZEEsY0FBYyx1QkFBZEEsY0FBYyxDQUFFcUMsTUFBTSxJQUFHLENBQUMsaUJBQ3pCNkssd0RBQUEsQ0FBQ2tQLDhDQUFHO01BQUE5TixRQUFBLGdCQUNGdEIsdURBQUEsQ0FBQzRFLHFEQUFVO1FBQUNTLE9BQU8sRUFBQyxPQUFPO1FBQUM5RSxTQUFTLEVBQUVULG1FQUF5QjtRQUFBd0IsUUFBQSxFQUM3RDdLLENBQUMsQ0FBQyxpQ0FBaUM7TUFBQyxDQUMzQixDQUFDLGVBQ2J1Six1REFBQSxDQUFDZ08sNkRBQW9CO1FBQ25CaGIsY0FBYyxFQUFFQSxjQUFlO1FBQy9CaWIsZUFBZSxFQUFFbFIsT0FBUTtRQUN6Qm9SLFNBQVMsRUFBRThnQixPQUFRO1FBQ25CN2dCLE1BQU0sRUFBRUE7TUFBTyxDQUNoQixDQUFDO0lBQUEsQ0FDQyxDQUNOLEVBRUFwYSxNQUFNLENBQUM0K0IsK0JBQStCLGlCQUNyQzV5Qix1REFBQSxDQUFDNHdCLHNGQUFzQjtNQUNyQnhpQixNQUFNLEVBQUVBLE1BQU87TUFDZnlpQixVQUFVLEVBQUU3OEIsTUFBTSxDQUFDNCtCLCtCQUFnQztNQUNuRDN3QixVQUFVLEVBQUVqTyxNQUFNLENBQUN3K0IsaUNBQWtDO01BQ3JEanFCLFVBQVUsRUFBRSxDQUFDMG1CO0lBQVEsQ0FDdEIsQ0FDRixlQUNEanZCLHVEQUFBLENBQUNvWCxtREFBVTtNQUNUQyxTQUFTLEVBQUU1Z0IsQ0FBQyxDQUFDLG9CQUFvQixDQUFFO01BQ25DNmdCLFdBQVcsRUFBRTdnQixDQUFDLENBQUMsc0JBQXNCLENBQUU7TUFDdkNtTSxPQUFPLEVBQUVBLE9BQVE7TUFDakJnSCxRQUFRLEVBQUV3RSxNQUFNLENBQUMyZTtJQUFhLENBQy9CLENBQUM7RUFBQSxDQUNFLENBQUM7QUFFWCxDQUFDO0FBRURpQixVQUFVLENBQUNqc0IsU0FBUyxHQUFHO0VBQ3JCbkksTUFBTSxFQUFFaUcsMERBQWdCO0VBQ3hCN00sY0FBYyxFQUFFNk0seURBQWUsQ0FBQ29DLFVBQVU7RUFDMUNqTyxNQUFNLEVBQUU2TCwwREFBZ0IsQ0FBQ29DLFVBQVU7RUFDbkNndEIsT0FBTyxFQUFFcHZCLHdEQUFjO0VBQ3ZCZ3NCLFFBQVEsRUFBRWhzQix3REFBYyxDQUFDb0MsVUFBVTtFQUNuQ1csT0FBTyxFQUFFL0Msd0RBQWMsQ0FBQ29DO0FBQzFCLENBQUM7QUFFRCxpRUFBZStyQixVQUFVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUM3SXpCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFMEI7QUFDUztBQUN3QjtBQUNaO0FBRUE7QUFDUTtBQUNaO0FBQUE7QUFFM0MsTUFBTW1FLGlCQUFpQixHQUFHcjdCLElBQUEsSUFBaUQ7RUFBQSxJQUFoRDtJQUFFc1gsTUFBTTtJQUFFaWhCLFFBQVE7SUFBRXpsQixRQUFRO0lBQUUyVTtFQUFZLENBQUMsR0FBQXpuQixJQUFBO0VBQ3BFLE1BQU07SUFBRUw7RUFBRSxDQUFDLEdBQUcrTCw2REFBYyxDQUFDLENBQUM7RUFDOUIsTUFBTTtJQUFFNUwsTUFBTTtJQUFFc1MsTUFBTTtJQUFFNkYsT0FBTztJQUFFSCxZQUFZO0lBQUVFLFVBQVU7SUFBRTJkO0VBQWMsQ0FBQyxHQUN4RXJlLE1BQU07RUFFUixvQkFDRWxPLHVEQUFBLENBQUNrUCw4Q0FBRztJQUFDN08sU0FBUyxFQUFFVCx3REFBZTtJQUFBd0IsUUFBQSxnQkFDN0J0QixzREFBQSxDQUFDa0wsb0RBQVM7TUFDUnBCLFNBQVM7TUFDVHRSLElBQUksRUFBRTlGLDREQUFvQixDQUFDQyxLQUFNO01BQ2pDeVcsS0FBSyxFQUFFM1MsQ0FBQyxDQUFDLHFCQUFxQixDQUFFO01BQ2hDbVQsUUFBUTtNQUNSNVMsS0FBSyxFQUFFa1MsTUFBTSxDQUFDeFcsNERBQW9CLENBQUNDLEtBQUssQ0FBRTtNQUMxQ29YLE1BQU0sRUFBQztJQUFRLENBQ2hCLENBQUMsRUFDRHdVLFdBQVcsaUJBQ1Z2ZSxzREFBQSxDQUFDNEUscURBQVU7TUFBQ1MsT0FBTyxFQUFDLE9BQU87TUFBQ0MsRUFBRSxFQUFFO1FBQUVxQixVQUFVLEVBQUUsR0FBRztRQUFFb0QsTUFBTSxFQUFFO01BQVMsQ0FBRTtNQUFBekksUUFBQSxFQUNuRTdLLENBQUMsQ0FBQywwQkFBMEI7SUFBQyxDQUNwQixDQUNiLEVBQ0EsQ0FBQy9ELDREQUFvQixDQUFDRSxTQUFTLEVBQUVGLDREQUFvQixDQUFDRyxRQUFRLENBQUMsQ0FBQzJILEdBQUcsQ0FDakVoQyxJQUFJLGlCQUNId0gsc0RBQUEsQ0FBQ2tMLG9EQUFTO01BQ1JwQixTQUFTO01BRVR0UixJQUFJLEVBQUVBLElBQUs7TUFDWDRRLEtBQUssRUFBRTNTLENBQUMsa0JBQUF2QixNQUFBLENBQWtCc0QsSUFBSSxDQUFFLENBQUU7TUFDbEN4QixLQUFLLEVBQUVrUyxNQUFNLENBQUMxUSxJQUFJLENBQUU7TUFDcEJvUixRQUFRLEVBQUVBLFFBQVEsSUFBSTJVLFdBQVcsSUFBSSxDQUFDLENBQUNrTyxhQUFhLENBQUNqMEIsSUFBSSxDQUFFO01BQzNEZ1EsUUFBUSxFQUFFb0csWUFBYTtNQUN2QkMsTUFBTSxFQUFFQyxVQUFXO01BQ25CbkosS0FBSyxFQUFFb0osT0FBTyxDQUFDdlcsSUFBSSxDQUFDLElBQUl3VyxPQUFPLENBQUNwWSxNQUFNLENBQUM0QixJQUFJLENBQUMsQ0FBRTtNQUM5Q2tRLFVBQVUsRUFBRTBGLE1BQU0sQ0FBQ1csT0FBTyxDQUFDdlcsSUFBSSxDQUFDLElBQUk0VixNQUFNLENBQUN4WCxNQUFNLENBQUM0QixJQUFJLENBQUU7TUFDeERxUixRQUFRO01BQ1JFLE1BQU0sRUFBQztJQUFRLEdBVlZ2UixJQVdOLENBRUwsQ0FBQyxlQUNEd0gsc0RBQUEsQ0FBQ292QixxREFBWTtNQUFDaGhCLE1BQU0sRUFBRUEsTUFBTztNQUFDaWhCLFFBQVEsRUFBRUEsUUFBUztNQUFDcHRCLFVBQVU7SUFBQSxDQUFFLENBQUMsZUFDL0RqQyxzREFBQSxDQUFDb1AsOENBQUc7TUFBQzdPLFNBQVMsRUFBRVQseURBQWdCO01BQUF3QixRQUFBLEVBQUU3SyxDQUFDLENBQUMseUJBQXlCO0lBQUMsQ0FBTSxDQUFDO0VBQUEsQ0FDbEUsQ0FBQztBQUVWLENBQUM7QUFFRDA3QixpQkFBaUIsQ0FBQ3B3QixTQUFTLEdBQUc7RUFDNUJxTSxNQUFNLEVBQUV2TywwREFBZ0IsQ0FBQ29DLFVBQVU7RUFDbkNvdEIsUUFBUSxFQUFFeHZCLDBEQUFnQixDQUFDb0MsVUFBVTtFQUNyQzJILFFBQVEsRUFBRS9KLHdEQUFjO0VBQ3hCMGUsV0FBVyxFQUFFMWUsd0RBQWN5RTtBQUM3QixDQUFDO0FBRUQsaUVBQWU2dEIsaUJBQWlCOzs7Ozs7Ozs7Ozs7OztBQ3pFekIsTUFBTXovQixvQkFBb0IsR0FBRztFQUNsQ0MsS0FBSyxFQUFFLGdCQUFnQjtFQUN2QkMsU0FBUyxFQUFFLHFCQUFxQjtFQUNoQ0MsUUFBUSxFQUFFLG9CQUFvQjtFQUM5QkMsT0FBTyxFQUFFLGtCQUFrQjtFQUMzQkMsa0JBQWtCLEVBQUU7QUFDdEIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNOeUM7QUFDUDtBQUNvQjtBQUNSO0FBQ0M7QUFDSTtBQUM2QjtBQUN4QjtBQUNSO0FBQ3FCO0FBQ3BCO0FBQ1Q7QUFDd0I7QUFDbEI7QUFBQTtBQUUvQyxNQUFNbXRCLFlBQVksR0FBR3BwQixJQUFBLElBT2Y7RUFBQSxJQUFBMm5CLGFBQUEsRUFBQVAsYUFBQTtFQUFBLElBUGdCO0lBQ3BCbHFCLE1BQU07SUFDTnFILFFBQVE7SUFDUnRDLE9BQU87SUFDUHlwQixPQUFPO0lBQ1A5ZixJQUFJO0lBQ0pFO0VBQ0YsQ0FBQyxHQUFBOUwsSUFBQTtFQUNDLE1BQU07SUFBRUw7RUFBRSxDQUFDLEdBQUcrTCw2REFBYyxDQUFDLENBQUM7RUFDOUIsTUFBTTtJQUFFMnJCLGNBQWM7SUFBRUM7RUFBYSxDQUFDLEdBQUdMLGlEQUFVLENBQ2pEdHBCLG1FQUNGLENBQUM7RUFDRCxNQUFNOVEsUUFBUSxHQUFHb3NCLHdEQUFXLENBQUMsQ0FBQztFQUM5QixNQUFNO0lBQ0o5ckIsSUFBSSxFQUFFO01BQUVtRjtJQUFZO0VBQ3RCLENBQUMsR0FBRzhWLHdEQUFXLENBQUVXLEtBQUssSUFBS0EsS0FBSyxDQUFDL1gsV0FBVyxDQUFDO0VBQzdDLE1BQU07SUFBRThCLE1BQU07SUFBRTVHO0VBQWUsQ0FBQyxHQUFHaTdCLCtEQUFZLENBQzdDNXlCLFFBQVEsRUFDUnRDLE9BQU8sRUFDUHlwQixPQUFPLEVBQ1A5ZixJQUNGLENBQUM7RUFDRCxNQUFNNnJCLGdCQUFnQixHQUFHLENBQUEzMEIsTUFBTSxhQUFOQSxNQUFNLGdCQUFBNmtCLGFBQUEsR0FBTjdrQixNQUFNLENBQUUxQixLQUFLLGNBQUF1bUIsYUFBQSx1QkFBYkEsYUFBQSxDQUFlK1AsUUFBUSxPQUFLcDFCLFdBQVcsYUFBWEEsV0FBVyx1QkFBWEEsV0FBVyxDQUFFWCxFQUFFO0VBQ3BFLE1BQU1nMkIsaUJBQWlCLEdBQUcsQ0FBQTcwQixNQUFNLGFBQU5BLE1BQU0sZ0JBQUFza0IsYUFBQSxHQUFOdGtCLE1BQU0sQ0FBRTJELEtBQUssY0FBQTJnQixhQUFBLHVCQUFiQSxhQUFBLENBQWV2ckIsS0FBSyxPQUFLeUcsV0FBVyxhQUFYQSxXQUFXLHVCQUFYQSxXQUFXLENBQUV6RyxLQUFLO0VBQ3JFLE1BQU0rN0IsaUJBQWlCLEdBQ3JCLENBQUNELGlCQUFpQixJQUFJRixnQkFBZ0IsS0FDdEN2NkIsTUFBTSxDQUFDMjZCLHFDQUFxQztFQUU5QyxNQUFNbUUsTUFBTSxHQUFJM3BCLEdBQUcsSUFBSztJQUN0QixNQUFNcE0sT0FBTyxHQUFHb1EsNkZBQXFCLENBQUNoRSxHQUFHLENBQUM7SUFFMUMsT0FBT3hWLFFBQVEsQ0FBQ21KLDREQUFpQixDQUFDbEQsTUFBTSxFQUFFbUQsT0FBTyxDQUFDLENBQUMsQ0FDaERyRSxJQUFJLENBQUMsTUFBTTtNQUNWa0ssT0FBTyxDQUFDLENBQUM7TUFDVHVyQixjQUFjLENBQUMxM0IsQ0FBQyxDQUFDLDhCQUE4QixDQUFDLENBQUM7TUFDakQsT0FBTzRDLE9BQU8sQ0FBQ3kxQixPQUFPLENBQUMsQ0FBQztJQUMxQixDQUFDLENBQUMsQ0FDRG4yQixLQUFLLENBQUMsTUFBTTtNQUNYeTFCLFlBQVksQ0FBQzMzQixDQUFDLENBQUMsNEJBQTRCLENBQUMsQ0FBQztNQUM3QyxPQUFPNEMsT0FBTyxDQUFDQyxNQUFNLENBQUMsQ0FBQztJQUN6QixDQUFDLENBQUM7RUFDTixDQUFDO0VBRUQsb0JBQ0UwRyx1REFBQSxDQUFDdWxCLHFEQUFXO0lBQ1Y5c0IsRUFBRSxFQUFFeTFCLDhEQUFpQjtJQUNyQnhyQixJQUFJLEVBQUVBLElBQUs7SUFDWEUsT0FBTyxFQUFFQSxPQUFRO0lBQ2pCckMsU0FBUyxFQUFFVCx1RUFBNkI7SUFDeEMwcEIsY0FBYyxlQUNaeHBCLHVEQUFBLENBQUNveEIsdUVBQWtCO01BQ2pCeDNCLE1BQU0sRUFBRUEsTUFBTztNQUNmeTNCLGVBQWUsRUFBRXI5QixNQUFNLGFBQU5BLE1BQU0sdUJBQU5BLE1BQU0sQ0FBRWcvQjtJQUFXLENBQ3JDLENBQ0Y7SUFBQTF4QixRQUFBLEVBRUExSCxNQUFNLElBQUk1RyxjQUFjLGlCQUN2QmtOLHdEQUFBLENBQUNrUCw4Q0FBRztNQUFDN08sU0FBUyxFQUFFVCxtRUFBeUI7TUFBQXdCLFFBQUEsZ0JBQ3JDdEIsdURBQUEsQ0FBQzRFLHFEQUFVO1FBQ1RTLE9BQU8sRUFBQyxJQUFJO1FBQ1owa0IsWUFBWTtRQUNaeHBCLFNBQVMsRUFBRVQsbUVBQXlCO1FBQUF3QixRQUFBLEVBRW5DN0ssQ0FBQyxDQUFDLG9DQUFvQztNQUFDLENBQzlCLENBQUMsRUFDWm1ELE1BQU0saUJBQ0xvRyx1REFBQSxDQUFDZ3VCLDhEQUFVO1FBQ1RwMEIsTUFBTSxFQUFFQSxNQUFPO1FBQ2Y1RyxjQUFjLEVBQUVBLGNBQWU7UUFDL0JnQixNQUFNLEVBQUVBLE1BQU87UUFDZmk3QixPQUFPLEVBQUVQLGlCQUFrQjtRQUMzQjdDLFFBQVEsRUFBRWlILE1BQU87UUFDakJsd0IsT0FBTyxFQUFFQTtNQUFRLENBQ2xCLENBQ0Y7SUFBQSxDQUNFO0VBQ1IsQ0FDVSxDQUFDO0FBRWxCLENBQUM7QUFFRHNkLFlBQVksQ0FBQ25lLFNBQVMsR0FBRztFQUN2Qi9OLE1BQU0sRUFBRTZMLDBEQUFnQjtFQUN4QnhFLFFBQVEsRUFBRXdFLDBEQUFnQjtFQUMxQjlHLE9BQU8sRUFBRThHLDBEQUFnQjtFQUN6QjJpQixPQUFPLEVBQUUzaUIsMERBQWdCO0VBQ3pCK0MsT0FBTyxFQUFFL0Msd0RBQWM7RUFDdkI2QyxJQUFJLEVBQUU3Qyx3REFBY3lFO0FBQ3RCLENBQUM7QUFFRCxpRUFBZTRiLFlBQVk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDekdEO0FBQ1M7QUFDWTtBQUNHO0FBQ2M7QUFFakI7QUFBQTtBQUUvQyxNQUFNRixZQUFZLEdBQUdscEIsSUFBQSxJQUFnQjtFQUFBLElBQUFzOEIscUJBQUE7RUFBQSxJQUFmO0lBQUV4NUI7RUFBTyxDQUFDLEdBQUE5QyxJQUFBO0VBQzlCLE1BQU07SUFBRUw7RUFBRSxDQUFDLEdBQUcrTCw2REFBYyxDQUFDLENBQUM7RUFDOUIsTUFBTTZ3QixRQUFRLEdBQUd6NUIsTUFBTSxDQUFDMGtCLFNBQVM7RUFDakMsTUFBTWdWLGNBQWMsSUFBQUYscUJBQUEsR0FBR3g1QixNQUFNLENBQUNpQixlQUFlLGNBQUF1NEIscUJBQUEsdUJBQXRCQSxxQkFBQSxDQUF3QnZULElBQUksQ0FDaERsbEIsQ0FBQyxJQUFLQSxDQUFDLENBQUNwRSxNQUFNLEtBQUssV0FDdEIsQ0FBQztFQUNELE1BQU07SUFBRW1xQixZQUFZO0lBQUVyQyxZQUFZO0lBQUVpVDtFQUFXLENBQUMsR0FBR25SLHlFQUFnQixDQUFDdm1CLE1BQU0sQ0FBQztFQUUzRSxvQkFDRW9HLHNEQUFBLENBQUNtekIsb0RBQVM7SUFBQzV5QixTQUFTLEVBQUVULHNFQUE2QjtJQUFBd0IsUUFBQSxFQUNoRCt4QixRQUFRLGdCQUNQbnpCLHVEQUFBLENBQUF1Wix1REFBQTtNQUFBblksUUFBQSxHQUNHLENBQUMsQ0FBQ2d5QixjQUFjLGlCQUNmdHpCLHNEQUFBLENBQUNrQyxpREFBTTtRQUNMc2EsSUFBSSxFQUFDLFFBQVE7UUFDYixjQUFXLGdDQUFnQztRQUMzQ2pjLFNBQVMsS0FBQXJMLE1BQUEsQ0FBSzRLLDJEQUFpQixPQUFBNUssTUFBQSxDQUFJNEssc0VBQTRCLENBQUc7UUFBQXdCLFFBQUEsRUFFakU3SyxDQUFDLENBQUMsdUNBQXVDO01BQUMsQ0FDckMsQ0FDVCxFQUNBaXFCLFlBQVksaUJBQ1gxZ0Isc0RBQUEsQ0FBQ2tDLGlEQUFNO1FBQ0xzYSxJQUFJLEVBQUMsUUFBUTtRQUNiLGNBQVcsMEJBQTBCO1FBQ3JDamMsU0FBUyxLQUFBckwsTUFBQSxDQUFLNEssMkRBQWlCLE9BQUE1SyxNQUFBLENBQUk0SyxpRUFBdUIsQ0FBRztRQUFBd0IsUUFBQSxFQUU1RDdLLENBQUMsQ0FBQyxpQ0FBaUM7TUFBQyxDQUMvQixDQUNULEVBQ0E0bkIsWUFBWSxpQkFDWHJlLHNEQUFBLENBQUNrQyxpREFBTTtRQUNMc2EsSUFBSSxFQUFDLFFBQVE7UUFDYixjQUFXLDBCQUEwQjtRQUNyQ2pjLFNBQVMsS0FBQXJMLE1BQUEsQ0FBSzRLLDJEQUFpQixPQUFBNUssTUFBQSxDQUFJNEssaUVBQXVCLENBQUc7UUFBQXdCLFFBQUEsRUFFNUQ3SyxDQUFDLENBQUMsaUNBQWlDO01BQUMsQ0FDL0IsQ0FDVCxFQUNBNjZCLFVBQVUsaUJBQ1R0eEIsc0RBQUEsQ0FBQ2tDLGlEQUFNO1FBQ0xzYSxJQUFJLEVBQUMsUUFBUTtRQUNiLGNBQVcsd0JBQXdCO1FBQ25DamMsU0FBUyxLQUFBckwsTUFBQSxDQUFLNEssMkRBQWlCLE9BQUE1SyxNQUFBLENBQUk0SywrREFBcUIsQ0FBRztRQUFBd0IsUUFBQSxFQUUxRDdLLENBQUMsQ0FBQywrQkFBK0I7TUFBQyxDQUM3QixDQUNUO0lBQUEsQ0FDRCxDQUFDLGdCQUVIdUosc0RBQUEsQ0FBQ2tDLGlEQUFNO01BQ0xzYSxJQUFJLEVBQUMsUUFBUTtNQUNiLGNBQVcseUJBQXlCO01BQ3BDamMsU0FBUyxLQUFBckwsTUFBQSxDQUFLNEssMkRBQWlCLE9BQUE1SyxNQUFBLENBQUk0SyxnRUFBc0IsQ0FBRztNQUFBd0IsUUFBQSxFQUUzRDdLLENBQUMsQ0FBQyxnQ0FBZ0M7SUFBQyxDQUM5QjtFQUNULENBQ1EsQ0FBQztBQUVoQixDQUFDO0FBRUR1cEIsWUFBWSxDQUFDamUsU0FBUyxHQUFHO0VBQ3ZCbkksTUFBTSxFQUFFaUcsdURBQWUsQ0FBQztJQUN0QnRDLEtBQUssRUFBRXNDLHVEQUFlLENBQUM7TUFDckJ0SixNQUFNLEVBQUVzSiwwREFBZ0JtQztJQUMxQixDQUFDLENBQUM7SUFDRnN4QixjQUFjLEVBQUV6ekIseURBQWlCLENBQUNuSixNQUFNO0VBQzFDLENBQUM7QUFDSCxDQUFDO0FBRUQsaUVBQWVzcEIsWUFBWTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUMvRXdCO0FBQ0o7QUFDUTtBQVFoQztBQUNxRDtBQUs3QztBQUNrQjtBQUNLO0FBSy9CO0FBQ2dCO0FBQ1E7QUFBQTtBQUUvQyxNQUFNOFQsVUFBVSxHQUFHQSxDQUFBLEtBQU07RUFDdkIsTUFBTTtJQUFFcjlCO0VBQUUsQ0FBQyxHQUFHK0wsNkRBQWMsQ0FBQyxDQUFDO0VBQzlCLE1BQU0sQ0FBQzhuQixHQUFHLEVBQUVDLE1BQU0sQ0FBQyxHQUFHNXFCLCtDQUFRLENBQUM2WixrREFBSSxDQUFDamtCLE1BQU0sQ0FBQztFQUMzQyxNQUFNLENBQUN3K0Isa0JBQWtCLEVBQUVDLHFCQUFxQixDQUFDLEdBQUdyMEIsK0NBQVEsQ0FBQyxLQUFLLENBQUM7RUFDbkUsTUFBTWhNLFFBQVEsR0FBR29zQix3REFBVyxDQUFDLENBQUM7RUFDOUIsTUFBTTtJQUNKcHJCLE1BQU07SUFDTkUsSUFBSTtJQUNKby9CLGVBQWUsRUFBRUMsYUFBYTtJQUM5QjFQLGVBQWUsRUFBRTJQLGFBQWE7SUFDOUIvVyxXQUFXO0lBQ1g3RTtFQUNGLENBQUMsR0FBR3JKLHdEQUFXLENBQUVXLEtBQUssSUFBS0EsS0FBSyxDQUFDL1gsV0FBVyxDQUFDO0VBQzdDLE1BQU1zTyxLQUFLLEdBQUdpZSx1REFBUSxDQUFDLENBQUM7RUFDeEIsTUFBTW5CLFFBQVEsR0FBR29CLDREQUFhLENBQUNsZSxLQUFLLENBQUNxZSxXQUFXLENBQUNDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztFQUU1RCxNQUFNMFAsZUFBZSxHQUFHQSxDQUFDanFCLEVBQUUsRUFBRWtxQixNQUFNLEtBQUs7SUFDdEM5SixNQUFNLENBQUM4SixNQUFNLENBQUM7RUFDaEIsQ0FBQztFQUVELE1BQU1DLG9CQUFvQixHQUFHLFNBQUFBLENBQUM3OEIsSUFBSTtJQUFBLElBQUVELFdBQVcsR0FBQWlHLFNBQUEsQ0FBQXBJLE1BQUEsUUFBQW9JLFNBQUEsUUFBQUMsU0FBQSxHQUFBRCxTQUFBLE1BQUcsS0FBSztJQUFBLE9BQ3JEOUosUUFBUSxDQUNOc0Ysd0RBQWMsQ0FDWjtNQUNFeEIsSUFBSTtNQUNKQyxPQUFPLEVBQUUvRyxvRUFBc0I7TUFDL0JnRSxNQUFNO01BQ05FO0lBQ0YsQ0FBQyxFQUNEMkMsV0FDRixDQUNGLENBQUM7RUFBQTtFQUVILE1BQU0rOEIsaUJBQWlCLEdBQUcsU0FBQUEsQ0FBQzk4QixJQUFJO0lBQUEsSUFBRUQsV0FBVyxHQUFBaUcsU0FBQSxDQUFBcEksTUFBQSxRQUFBb0ksU0FBQSxRQUFBQyxTQUFBLEdBQUFELFNBQUEsTUFBRyxLQUFLO0lBQUEsT0FDbEQ5SixRQUFRLENBQ04yRCx1REFBYSxDQUNYO01BQ0VHLElBQUk7TUFDSkMsT0FBTyxFQUFFdzhCLGFBQWE7TUFDdEJ2L0IsTUFBTTtNQUNORTtJQUNGLENBQUMsRUFDRDJDLFdBQ0YsQ0FDRixDQUFDLENBQUNrQixJQUFJLENBQUUzQyxPQUFPLElBQUs7TUFDbEIsTUFBTTtRQUFFK0Y7TUFBSyxDQUFDLEdBQUcvRixPQUFPLENBQUNNLFFBQVE7TUFDakMsTUFBTW0rQixvQkFBb0IsR0FBRzE0QixJQUFJLENBQUN0QixHQUFHLENBQUV0QyxLQUFLLElBQzFDdkUsUUFBUSxDQUNONkYsMkRBQWlCLENBQUM7UUFDaEJULE9BQU8sRUFBRWIsS0FBSyxDQUFDTyxFQUFFO1FBQ2pCZzhCLFlBQVksRUFBRTFqQyx3REFBVTtRQUN4QjJHLE9BQU8sRUFBRXk4QixhQUFhO1FBQ3RCeC9CLE1BQU07UUFDTkU7TUFDRixDQUFDLENBQ0gsQ0FDRixDQUFDO01BRUQsT0FBT3dFLE9BQU8sQ0FBQ29CLEdBQUcsQ0FBQys1QixvQkFBb0IsQ0FBQztJQUMxQyxDQUFDLENBQUM7RUFBQTtFQUVKMWpCLGdEQUFTLENBQUMsTUFBTTtJQUNkLE1BQU00akIsYUFBYSxHQUFHLENBQ3BCSixvQkFBb0IsQ0FBQ3ZqQyx3REFBVSxFQUFFLElBQUksQ0FBQyxFQUN0Q3dqQyxpQkFBaUIsQ0FBQ3hqQyx3REFBVSxFQUFFLElBQUksQ0FBQyxDQUNwQztJQUNEc0ksT0FBTyxDQUFDb0IsR0FBRyxDQUFDaTZCLGFBQWEsQ0FBQyxDQUN2Qmg4QixJQUFJLENBQUMsTUFBTXM3QixxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUN2Q243QixPQUFPLENBQUMsTUFBTWxGLFFBQVEsQ0FBQ3hELDBGQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7RUFDM0MsQ0FBQyxFQUFFLENBQUN3RSxNQUFNLEVBQUVFLElBQUksQ0FBQyxDQUFDO0VBRWxCaWMsZ0RBQVMsQ0FBQyxNQUFNO0lBQ2QsSUFBSWlqQixrQkFBa0IsRUFBRTtNQUN0QixJQUFJLENBQUF4YixZQUFZLGFBQVpBLFlBQVksdUJBQVpBLFlBQVksQ0FBRWxqQixNQUFNLE1BQUssQ0FBQyxJQUFJLENBQUErbkIsV0FBVyxhQUFYQSxXQUFXLHVCQUFYQSxXQUFXLENBQUUvbkIsTUFBTSxJQUFHLENBQUMsRUFBRTtRQUN6RGsxQixNQUFNLENBQUMvUSxrREFBSSxDQUFDUyxPQUFPLENBQUM7TUFDdEI7SUFDRjtFQUNGLENBQUMsRUFBRSxDQUFDOFosa0JBQWtCLENBQUMsQ0FBQztFQUV4QixvQkFDRTd6Qix3REFBQSxDQUFDa1AsOENBQUc7SUFBQzdPLFNBQVMsRUFBRVQsNERBQWtCO0lBQUF3QixRQUFBLGdCQUNoQ3BCLHdEQUFBLENBQUN3aUIsK0NBQUk7TUFDSDFyQixLQUFLLEVBQUVzekIsR0FBSTtNQUNYOWhCLFFBQVEsRUFBRTRyQixlQUFnQjtNQUMxQi91QixPQUFPLEVBQUU2ZCxRQUFRLEdBQUcsV0FBVyxHQUFHLFVBQVc7TUFBQTVoQixRQUFBLGdCQUU3Q3RCLHVEQUFBLENBQUMyaUIsOENBQUc7UUFBQ3ZaLEtBQUssRUFBRTNTLENBQUMsQ0FBQyxjQUFjLENBQUU7UUFBQ08sS0FBSyxFQUFFd2lCLGtEQUFJLENBQUNqa0I7TUFBTyxDQUFFLENBQUMsZUFDckR5Syx1REFBQSxDQUFDMmlCLDhDQUFHO1FBQUN2WixLQUFLLEVBQUUzUyxDQUFDLENBQUMsdUJBQXVCLENBQUU7UUFBQ08sS0FBSyxFQUFFd2lCLGtEQUFJLENBQUNTO01BQVEsQ0FBRSxDQUFDO0lBQUEsQ0FDM0QsQ0FBQyxlQUNQamEsdURBQUEsQ0FBQ3lSLGtEQUFPLElBQUUsQ0FBQyxFQUVWNlksR0FBRyxLQUFLOVEsa0RBQUksQ0FBQ2prQixNQUFNLGlCQUNsQnlLLHVEQUFBLENBQUNxcUIsbURBQVU7TUFBQ0MsR0FBRyxFQUFFOVEsa0RBQUksQ0FBQ2prQixNQUFPO01BQUNnMUIsTUFBTSxFQUFFQSxNQUFPO01BQUFqcEIsUUFBQSxlQUMzQ3RCLHVEQUFBLENBQUNxWSx3REFBZTtRQUFDQyxTQUFTLEVBQUVpYztNQUFrQixDQUFFO0lBQUMsQ0FDdkMsQ0FDYixFQUNBakssR0FBRyxLQUFLOVEsa0RBQUksQ0FBQ1MsT0FBTyxpQkFDbkJqYSx1REFBQSxDQUFDcXFCLG1EQUFVO01BQUNDLEdBQUcsRUFBRTlRLGtEQUFJLENBQUNTLE9BQVE7TUFBQ3NRLE1BQU0sRUFBRUEsTUFBTztNQUFBanBCLFFBQUEsZUFDNUN0Qix1REFBQSxDQUFDNnpCLGdFQUFZO1FBQUN2YixTQUFTLEVBQUVnYztNQUFxQixDQUFFO0lBQUMsQ0FDdkMsQ0FDYjtFQUFBLENBQ0UsQ0FBQztBQUVWLENBQUM7QUFFRCxpRUFBZVIsVUFBVTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNwSXpCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNpRDtBQUNGO0FBQytCO0FBQzFDO0FBQ2tDO0FBQzdCO0FBQ1Y7QUFDRTtBQUNNO0FBQytCO0FBQ2Y7QUFDUjtBQUFBO0FBRS9DLE1BQU1jLGFBQWEsR0FBR0EsQ0FBQSxLQUFNO0VBQzFCLE1BQU07SUFBRW4rQjtFQUFFLENBQUMsR0FBRytMLDZEQUFjLENBQUMsQ0FBQztFQUM5QixNQUFNN08sUUFBUSxHQUFHb3NCLHdEQUFXLENBQUMsQ0FBQztFQUM5QixNQUFNLENBQUM4VSxPQUFPLEVBQUVDLFVBQVUsQ0FBQyxHQUFHbjFCLCtDQUFRLENBQUMsRUFBRSxDQUFDO0VBQzFDLE1BQU07SUFDSmlhLE9BQU87SUFDUGpsQixNQUFNLEVBQUU7TUFBRUYsdUJBQXVCLEVBQUVtYjtJQUFhO0VBQ2xELENBQUMsR0FBR1Ysd0RBQVcsQ0FBRVcsS0FBSyxJQUFLQSxLQUFLLENBQUMvWCxXQUFXLElBQUksQ0FBQyxDQUFDLEVBQUVxWCxxREFBWSxDQUFDO0VBRWpFLE1BQU1nZixjQUFjLEdBQUkzM0IsR0FBRyxJQUN6QnMrQixVQUFVLENBQUM7SUFBRWg3QixPQUFPLEVBQUV0RCxHQUFHO0lBQUV3TyxRQUFRLEVBQUU7RUFBVSxDQUFDLENBQUM7RUFDbkQsTUFBTW9wQixZQUFZLEdBQUk1M0IsR0FBRyxJQUFLcytCLFVBQVUsQ0FBQztJQUFFaDdCLE9BQU8sRUFBRXRELEdBQUc7SUFBRXdPLFFBQVEsRUFBRTtFQUFRLENBQUMsQ0FBQztFQUM3RSxNQUFNK3ZCLGNBQWMsR0FBR3pQLDhDQUFPLENBQUMsT0FBTztJQUFFNkksY0FBYztJQUFFQztFQUFhLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztFQUU1RSxNQUFNbmMsT0FBTyxHQUFHQSxDQUFBLEtBQU07SUFDcEJ0ZSxRQUFRLENBQUNFLHFEQUFXLENBQUMsQ0FBQyxDQUFDO0VBQ3pCLENBQUM7RUFFRCxNQUFNOGIsUUFBUSxHQUFJcWxCLFdBQVcsSUFBSztJQUNoQ3JoQyxRQUFRLENBQUNlLHNEQUFZLENBQUNzZ0MsV0FBVyxDQUFDLENBQUM7RUFDckMsQ0FBQztFQUVELE1BQU03ZSxNQUFNLEdBQUk4ZSxTQUFTLElBQUs7SUFDNUJ0aEMsUUFBUSxDQUFDaUIsb0RBQVUsQ0FBQ3FnQyxTQUFTLENBQUMsQ0FBQztFQUNqQyxDQUFDO0VBRUQsb0JBQ0UvMEIsd0RBQUEsQ0FBQ3NILG9EQUFXO0lBQUFsRyxRQUFBLGdCQUNWdEIsdURBQUEsQ0FBQ2dZLCtDQUFNO01BQUN0VixJQUFJLEVBQUVrWDtJQUFRLENBQUUsQ0FBQyxlQUN6QjVaLHVEQUFBLENBQUMrRSw0REFBa0I7TUFDakJyQyxJQUFJLEVBQUUsQ0FBQyxDQUFDbXlCLE9BQVE7TUFDaEJqeUIsT0FBTyxFQUFFQSxDQUFBLEtBQU1reUIsVUFBVSxDQUFDLElBQUksQ0FBRTtNQUNoQ2g3QixPQUFPLEVBQUUrNkIsT0FBTyxhQUFQQSxPQUFPLHVCQUFQQSxPQUFPLENBQUUvNkIsT0FBUTtNQUMxQmtMLFFBQVEsRUFBRTZ2QixPQUFPLGFBQVBBLE9BQU8sdUJBQVBBLE9BQU8sQ0FBRTd2QjtJQUFTLENBQzdCLENBQUMsZUFDRmhGLHVEQUFBLENBQUM4VyxnREFBTztNQUNObkgsUUFBUSxFQUFFQSxRQUFTO01BQ25Cd0csTUFBTSxFQUFFQSxNQUFPO01BQ2ZWLFFBQVEsRUFBRTlGLFFBQVM7TUFDbkJzQyxPQUFPLEVBQUVBO0lBQVEsQ0FDbEIsQ0FBQyxlQUNGalMsdURBQUEsQ0FBQ29QLDhDQUFHO01BQUM5SixFQUFFLEVBQUU7UUFBRTZQLE9BQU8sRUFBRTtVQUFFOEIsRUFBRSxFQUFFLENBQUM7VUFBRW1OLEVBQUUsRUFBRSxDQUFDO1VBQUVVLEVBQUUsRUFBRTtRQUFFO01BQUUsQ0FBRTtNQUFBeGpCLFFBQUEsZUFDNUN0Qix1REFBQTtRQUFJTyxTQUFTLEVBQUVULGtFQUF3QjtRQUFBd0IsUUFBQSxFQUNwQ3NPLFlBQVksR0FDVG5aLENBQUMsQ0FBQyx1QkFBdUIsRUFBRTtVQUFFOUIsTUFBTSxFQUFFaWI7UUFBYSxDQUFDLENBQUMsR0FDcERuWixDQUFDLENBQUMsZ0JBQWdCO01BQUMsQ0FDckI7SUFBQyxDQUNGLENBQUMsZUFDTnVKLHVEQUFBLENBQUN5RSxtRUFBeUIsQ0FBQzB3QixRQUFRO01BQUNuK0IsS0FBSyxFQUFFKzlCLGNBQWU7TUFBQXp6QixRQUFBLGVBQ3hEdEIsdURBQUEsQ0FBQzh6QixtREFBVSxJQUFFO0lBQUMsQ0FDb0IsQ0FBQztFQUFBLENBQzFCLENBQUM7QUFFbEIsQ0FBQztBQUVELE1BQU1uZ0IsZUFBZSxHQUFHN2MsSUFBQTtFQUFBLElBQUM7SUFBRWdCO0VBQVksQ0FBQyxHQUFBaEIsSUFBQTtFQUFBLE9BQU07SUFDNUNqQyxJQUFJLEVBQUVpRCxXQUFXLENBQUNqRCxJQUFJO0lBQ3RCRixNQUFNLEVBQUVtRCxXQUFXLENBQUNuRDtFQUN0QixDQUFDO0FBQUEsQ0FBQztBQUVGLGlFQUFlZ2Qsb0RBQU8sQ0FBQ2dDLGVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDaWhCLGFBQWEsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3JGeEI7QUFDcUI7QUFDRztBQUUxRCxNQUFNM0csWUFBWSxHQUFHQSxDQUFDNXlCLFFBQVEsRUFBRXRDLE9BQU8sRUFBRXlwQixPQUFPLEVBQUU0UyxHQUFHLEtBQUs7RUFDeEQsTUFBTXpoQyxRQUFRLEdBQUdvc0Isd0RBQVcsQ0FBQyxDQUFDO0VBRTlCalAsZ0RBQVMsQ0FBQyxNQUFNO0lBQ2QsSUFBSXNrQixHQUFHLEVBQUU7TUFDUCxJQUFJLzVCLFFBQVEsSUFBSXRDLE9BQU8sRUFBRTtRQUN2QnBGLFFBQVEsQ0FBQ3lILG1EQUFTLENBQUNDLFFBQVEsRUFBRXRDLE9BQU8sQ0FBQyxDQUFDO01BQ3hDO01BRUEsSUFBSXlwQixPQUFPLEVBQUU7UUFDWDd1QixRQUFRLENBQUNxSCwyREFBaUIsQ0FBQ3duQixPQUFPLENBQUMsQ0FBQztNQUN0QztJQUNGO0VBQ0YsQ0FBQyxFQUFFLENBQUNubkIsUUFBUSxFQUFFdEMsT0FBTyxFQUFFeXBCLE9BQU8sRUFBRTRTLEdBQUcsQ0FBQyxDQUFDO0VBRXJDLE1BQU07SUFBRXBpQyxjQUFjO0lBQUVxaUMsYUFBYSxFQUFFejdCO0VBQU8sQ0FBQyxHQUFHc1Ysd0RBQVcsQ0FDMURXLEtBQUssSUFBS0EsS0FBSyxDQUFDL1gsV0FDbkIsQ0FBQztFQUVELE9BQU87SUFBRThCLE1BQU07SUFBRTVHO0VBQWUsQ0FBQztBQUNuQyxDQUFDO0FBRUQsaUVBQWVpN0IsWUFBWTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUMxQk87QUFDb0I7O0FBRXREO0FBQ0EsU0FBU3FILGNBQWNBLENBQUMvaEIsU0FBUyxFQUFFZ2lCLGVBQWUsRUFBRUMsUUFBUSxFQUFFO0VBQzVELE1BQU1DLGNBQWMsR0FBR2xpQixTQUFTLENBQUNtaUIsU0FBUztFQUMxQyxNQUFNQyxRQUFRLEdBQUdKLGVBQWUsR0FBR0UsY0FBYztFQUNqRCxJQUFJRyxTQUFTLEdBQUcsSUFBSTtFQUVwQixTQUFTQyxhQUFhQSxDQUFDQyxTQUFTLEVBQUU7SUFDaEMsSUFBSSxDQUFDRixTQUFTLEVBQUVBLFNBQVMsR0FBR0UsU0FBUztJQUNyQyxNQUFNQyxPQUFPLEdBQUdELFNBQVMsR0FBR0YsU0FBUzs7SUFFckM7SUFDQSxNQUFNSSxRQUFRLEdBQUdDLElBQUksQ0FBQ0MsR0FBRyxDQUFDSCxPQUFPLEdBQUdQLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDaEQsTUFBTVcsYUFBYTtJQUNqQjtJQUNBSCxRQUFRLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBR0EsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBR0EsUUFBUSxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztJQUV2RXppQixTQUFTLENBQUNtaUIsU0FBUyxHQUFHRCxjQUFjLEdBQUdFLFFBQVEsR0FBR1EsYUFBYTtJQUUvRCxJQUFJSixPQUFPLEdBQUdQLFFBQVEsRUFBRTtNQUN0QlkscUJBQXFCLENBQUNQLGFBQWEsQ0FBQztJQUN0QztFQUNGO0VBRUFPLHFCQUFxQixDQUFDUCxhQUFhLENBQUM7QUFDdEM7QUFFQSxNQUFNekQsZ0JBQWdCLEdBQUloa0IsTUFBTSxJQUFLO0VBQ25DLE1BQU07SUFBRXhYLE1BQU07SUFBRXkvQixPQUFPO0lBQUV0SjtFQUFhLENBQUMsR0FBRzNlLE1BQU07RUFDaEQsTUFBTWtvQixVQUFVLEdBQUc1L0IsTUFBTSxDQUFDNEIsSUFBSSxDQUFDMUIsTUFBTSxDQUFDO0VBQ3RDLE1BQU0yL0IsVUFBVSxHQUFHRCxVQUFVLENBQUNqaEMsTUFBTTtFQUVwQ3liLGdEQUFTLENBQUMsTUFBTTtJQUNkLElBQUl1bEIsT0FBTyxJQUFJRSxVQUFVLEtBQUssQ0FBQyxFQUFFOztJQUVqQztJQUNBLE1BQU1DLGNBQWMsR0FBR0YsVUFBVSxDQUM5Qi9ELE1BQU0sQ0FBQyxDQUFDa0UsTUFBTSxFQUFFOXdCLEtBQUssS0FBSztNQUN6QixNQUFNK3dCLE9BQU8sR0FBRzEzQixRQUFRLENBQUMyM0IsYUFBYSxXQUFBemhDLE1BQUEsQ0FBV3lRLEtBQUssT0FBSSxDQUFDO01BQzNELElBQUksQ0FBQyt3QixPQUFPLEVBQUUsT0FBT0QsTUFBTTtNQUUzQixNQUFNRyxNQUFNLEdBQUdGLE9BQU8sQ0FBQ0cscUJBQXFCLENBQUMsQ0FBQztNQUM5Q0osTUFBTSxDQUFDeGhDLElBQUksQ0FBQztRQUFFeWhDLE9BQU87UUFBRS93QixLQUFLO1FBQUV5UCxHQUFHLEVBQUV3aEIsTUFBTSxDQUFDeGhCO01BQUksQ0FBQyxDQUFDO01BRWhELE9BQU9xaEIsTUFBTTtJQUNmLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FDTDVoQyxJQUFJLENBQUMsQ0FBQ2lpQyxDQUFDLEVBQUVDLENBQUMsS0FBS0QsQ0FBQyxDQUFDMWhCLEdBQUcsR0FBRzJoQixDQUFDLENBQUMzaEIsR0FBRyxDQUFDO0lBRWhDLElBQUlvaEIsY0FBYyxDQUFDbmhDLE1BQU0sS0FBSyxDQUFDLEVBQUU7SUFFakMsTUFBTWtlLFNBQVMsR0FBR3ZVLFFBQVEsQ0FDdkJnNEIsY0FBYyxDQUFDOUksOERBQWdCLENBQUMsQ0FDaEN5SSxhQUFhLENBQUMsa0JBQWtCLENBQUM7SUFDcEMsTUFBTXZzQixNQUFNLEdBQUdvc0IsY0FBYyxDQUFDLENBQUMsQ0FBQztJQUVoQyxJQUFJampCLFNBQVMsYUFBVEEsU0FBUyxlQUFUQSxTQUFTLENBQUVaLFFBQVEsQ0FBQ3ZJLE1BQU0sQ0FBQ3NzQixPQUFPLENBQUMsRUFBRTtNQUN2QyxNQUFNTyxhQUFhLEdBQUcxakIsU0FBUyxDQUFDc2pCLHFCQUFxQixDQUFDLENBQUM7O01BRXZEO01BQ0EsTUFBTUssVUFBVSxHQUFHLEdBQUc7TUFDdEIsTUFBTUMsaUJBQWlCLEdBQUcsR0FBRztNQUM3QixNQUFNekIsU0FBUyxHQUNidHJCLE1BQU0sQ0FBQ2dMLEdBQUcsR0FBRzZoQixhQUFhLENBQUM3aEIsR0FBRyxHQUFHN0IsU0FBUyxDQUFDbWlCLFNBQVMsR0FBR3dCLFVBQVU7O01BRW5FO01BQ0E1QixjQUFjLENBQUMvaEIsU0FBUyxFQUFFbWlCLFNBQVMsRUFBRXlCLGlCQUFpQixDQUFDLENBQUMsQ0FBQztJQUMzRDtFQUNGLENBQUMsRUFBRSxDQUFDcEssWUFBWSxDQUFDLENBQUM7QUFDcEIsQ0FBQztBQUVELGlFQUFlcUYsZ0JBQWdCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDeEUyQjtBQUVuRCxNQUFNaUYsZUFBZSxHQUFHLFVBQVU7QUFDbEMsTUFBTUMsaUJBQWlCLEdBQUcsWUFBWTtBQUN0QyxNQUFNQyxnQkFBZ0IsR0FBRyxXQUFXO0FBQ3BDLE1BQU1DLGlCQUFpQixHQUFHLFlBQVk7QUFFdEMsTUFBTXJYLGdCQUFnQixHQUFJdm1CLE1BQU0sSUFBSztFQUFBLElBQUFvbkIsbUJBQUEsRUFBQXlXLGtCQUFBLEVBQUFDLG9CQUFBLEVBQUFDLG1CQUFBO0VBQzFDLE1BQU1DLFNBQVMsR0FBR0EsQ0FBQSxLQUFNO0lBQUEsSUFBQTFaLGFBQUEsRUFBQUMsY0FBQTtJQUN0QixJQUFJLENBQUN2a0IsTUFBTSxDQUFDMGtCLFNBQVMsRUFBRSxPQUFPaVosZ0JBQWdCO0lBQzlDLElBQUkzOUIsTUFBTSxDQUFDNDBCLFFBQVEsS0FBSyxDQUFDLEVBQUUsT0FBT2dKLGlCQUFpQjtJQUNuRCxJQUFJLEdBQUF0WixhQUFBLEdBQUN0a0IsTUFBTSxDQUFDMkQsS0FBSyxjQUFBMmdCLGFBQUEsZUFBWkEsYUFBQSxDQUFjdmhCLFVBQVUsS0FBSSxHQUFBd2hCLGNBQUEsR0FBQ3ZrQixNQUFNLENBQUMyRCxLQUFLLGNBQUE0Z0IsY0FBQSxlQUFaQSxjQUFBLENBQWN2aEIsU0FBUyxHQUN2RCxPQUFPMDZCLGlCQUFpQjtJQUMxQixPQUFPMTlCLE1BQU0sQ0FBQzJELEtBQUssQ0FBQ2hILE1BQU07RUFDNUIsQ0FBQztFQUVELElBQUksQ0FBQ3FELE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztFQUV0QixNQUFNckQsTUFBTSxHQUFHcWhDLFNBQVMsQ0FBQyxDQUFDO0VBQzFCLE1BQU12RSxRQUFRLEdBQUd6NUIsTUFBTSxDQUFDMGtCLFNBQVMsSUFBSS9uQixNQUFNLEtBQUtnaEMsZ0JBQWdCO0VBQ2hFLE1BQU1qYixZQUFZLEdBQUc4YSxzRUFBa0IsQ0FBQ3g5QixNQUFNLENBQUM7RUFDL0MsTUFBTTh4QixjQUFjLEdBQ2xCLENBQUE5eEIsTUFBTSxhQUFOQSxNQUFNLGdCQUFBb25CLG1CQUFBLEdBQU5wbkIsTUFBTSxDQUFFb2hCLFdBQVcsY0FBQWdHLG1CQUFBLHVCQUFuQkEsbUJBQUEsQ0FBcUI2VyxrQkFBa0IsTUFDdkNqK0IsTUFBTSxhQUFOQSxNQUFNLGdCQUFBNjlCLGtCQUFBLEdBQU43OUIsTUFBTSxDQUFFaytCLFVBQVUsY0FBQUwsa0JBQUEsdUJBQWxCQSxrQkFBQSxDQUFvQkksa0JBQWtCO0VBQ3hDLE1BQU12RyxVQUFVLEdBQUcvNkIsTUFBTSxLQUFLOGdDLGVBQWU7RUFDN0MsTUFBTWhaLFlBQVksR0FBRzluQixNQUFNLEtBQUtpaEMsaUJBQWlCO0VBQ2pELE1BQU05VyxZQUFZLEdBQUducUIsTUFBTSxLQUFLK2dDLGlCQUFpQjtFQUNqRCxNQUFNcFcsV0FBVyxHQUNmLENBQUM3QyxZQUFZLE1BQUFxWixvQkFBQSxHQUNiOTlCLE1BQU0sQ0FBQ29oQixXQUFXLGNBQUEwYyxvQkFBQSx1QkFBbEJBLG9CQUFBLENBQW9CSyxrQkFBa0IsTUFDckMsQ0FBQ24rQixNQUFNLENBQUNrK0IsVUFBVSxNQUFBSCxtQkFBQSxHQUFJLzlCLE1BQU0sQ0FBQ2srQixVQUFVLGNBQUFILG1CQUFBLHVCQUFqQkEsbUJBQUEsQ0FBbUJJLGtCQUFrQixFQUFDO0VBRS9ELE9BQU87SUFDTHhoQyxNQUFNO0lBQ04rNkIsVUFBVTtJQUNWalQsWUFBWTtJQUNacUMsWUFBWTtJQUNaMlMsUUFBUTtJQUNSL1csWUFBWTtJQUNab1AsY0FBYztJQUNkeEs7RUFDRixDQUFDO0FBQ0gsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzFDMEI7QUFDc0I7QUFDZTtBQUM3QjtBQUNBOztBQUVuQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTF3QixrREFPTSxDQUFDeW5DLHlFQUFnQjtBQUNyQjtBQUFBLENBQ0NHLEdBQUcsQ0FBQ0osMkRBQWdCO0FBQ3JCO0FBQ0E7QUFBQSxDQUNDSyxJQUFJLENBQUM7RUFDSkMsV0FBVyxFQUFFLElBQUk7RUFDakJDLEtBQUssRUFBRSxLQUFLO0VBQ1pDLFNBQVMsRUFBRTtJQUNUTixFQUFFLEVBQUU7TUFBRU8sV0FBVyxFQUFFUCw2Q0FBRUE7SUFBQyxDQUFDO0lBQ3ZCQyxFQUFFLEVBQUU7TUFBRU0sV0FBVyxFQUFFTiw2Q0FBRUE7SUFBQztFQUN4QixDQUFDO0VBQ0RPLGFBQWEsRUFBRTtJQUNiQyxXQUFXLEVBQUUsS0FBSyxDQUFDO0VBQ3JCO0FBQ0YsQ0FBQyxDQUFDO0FBRUosaUVBQWVub0MsZ0RBQUk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ25DbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQytFO0FBS3hCO0FBNkJwQztBQUNrQztBQUNjO0FBQ047QUFFN0QsTUFBTTJvQyxvQkFBb0IsR0FBRztFQUMzQixDQUFDaGxDLDhEQUF3QixHQUFHLEVBQUU7RUFDOUIsQ0FBQ0MsNERBQXNCLEdBQUcsRUFBRTtFQUM1QixDQUFDSSwwREFBb0IsR0FBRyxFQUFFO0VBQzFCLENBQUNGLDZEQUF1QixHQUFHLEVBQUU7RUFDN0IsQ0FBQ0QsZ0VBQTBCLEdBQUcsRUFBRTtFQUNoQyxDQUFDRSwwREFBb0IsR0FBRyxFQUFFO0VBQzFCLENBQUNFLDZEQUF1QixHQUFHLEVBQUU7RUFDN0IsQ0FBQ1AscURBQWUsR0FBRztBQUNyQixDQUFDO0FBRUQsTUFBTWtsQyxhQUFhLEdBQUc7RUFDcEJwbEMsTUFBTSxFQUFFLElBQUk7RUFDWkMsSUFBSSxFQUFFLENBQUMsQ0FBQztFQUNSb2xDLGFBQWEsRUFBRSxLQUFLO0VBQ3BCOWdCLFlBQVksRUFBRSxFQUFFO0VBQ2hCNkUsV0FBVyxFQUFFLEVBQUU7RUFDZnBxQixjQUFjLEVBQUUsRUFBRTtFQUNsQnFpQyxhQUFhLEVBQUUsSUFBSTtFQUNuQnorQixNQUFNLEVBQUUsQ0FBQyxDQUFDO0VBQ1ZnakIsT0FBTyxFQUFFLEtBQUs7RUFDZDBmLFdBQVcsRUFBRTlmLGtEQUFJLENBQUNqa0IsTUFBTTtFQUN4QlYsSUFBSSxFQUFFLENBQUMsQ0FBQztFQUNSRixNQUFNLEVBQUV3a0Msb0JBQW9CO0VBQzVCam5CLGtCQUFrQixFQUFFLENBQUM7RUFDckJzRyxtQkFBbUIsRUFBRSxDQUFDO0VBQ3RCQyxnQkFBZ0IsRUFBRSxDQUFDO0VBQ25Cd2IsZUFBZSxFQUFFLENBQUM7RUFDbEJzRixZQUFZLEVBQUUsQ0FBQztFQUNmQyxtQkFBbUIsRUFBRSxDQUFDO0VBQ3RCQyxnQkFBZ0IsRUFBRSxDQUFDO0VBQ25CalYsZUFBZSxFQUFFLENBQUM7RUFDbEJrVixZQUFZLEVBQUUsQ0FBQztFQUNmQyxrQkFBa0IsRUFBRSxDQUFDO0VBQ3JCdGMseUJBQXlCLEVBQUUsQ0FBQztFQUM1QkMsc0JBQXNCLEVBQUUsQ0FBQztFQUN6QnNjLFFBQVEsRUFBRTtBQUNaLENBQUM7QUFFRCxNQUFNQyxhQUFhLEdBQUcsU0FBQUEsQ0FBQSxFQUFtRDtFQUFBLElBQWxEaHFCLEtBQUssR0FBQXBTLFNBQUEsQ0FBQXBJLE1BQUEsUUFBQW9JLFNBQUEsUUFBQUMsU0FBQSxHQUFBRCxTQUFBLE1BQUcyN0IsYUFBYTtFQUFBLElBQUU7SUFBRXBzQixJQUFJO0lBQUVqWDtFQUFRLENBQUMsR0FBQTBILFNBQUEsQ0FBQXBJLE1BQUEsUUFBQW9JLFNBQUEsUUFBQUMsU0FBQSxHQUFBRCxTQUFBLE1BQUcsQ0FBQyxDQUFDO0VBQ2xFLFFBQVF1UCxJQUFJO0lBQ1YsS0FBSzRyQix5RkFBVztJQUNoQixLQUFLM25DLGlEQUFXO01BQ2QsT0FBT21vQyxhQUFhO0lBQ3RCLEtBQUtQLHdGQUFhO01BQ2hCLE9BQUFuOUIsYUFBQSxDQUFBQSxhQUFBLEtBQVltVSxLQUFLO1FBQUUrSixPQUFPLEVBQUU7TUFBSTtJQUNsQyxLQUFLa2YsdUZBQVk7SUFDakIsS0FBS0Msd0ZBQWE7TUFDaEIsT0FBQXI5QixhQUFBLENBQUFBLGFBQUEsS0FBWW1VLEtBQUs7UUFBRStKLE9BQU8sRUFBRTtNQUFLO0lBQ25DLEtBQUt6b0IscURBQWU7TUFDbEIsT0FBQXVLLGFBQUEsQ0FBQUEsYUFBQSxLQUFZbVUsS0FBSztRQUFFK3BCLFFBQVEsRUFBRTtNQUFJO0lBQ25DLEtBQUsxb0Msa0RBQVk7TUFDZixPQUFBd0ssYUFBQSxDQUFBQSxhQUFBLEtBQ0ttVSxLQUFLO1FBQ1JsYixNQUFNLEVBQUV3a0Msb0JBQW9CO1FBQzVCam5CLGtCQUFrQixFQUFFLENBQUM7UUFDckJyZCxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ1IyakIsbUJBQW1CLEVBQUUsQ0FBQztRQUN0QkMsZ0JBQWdCLEVBQUUsQ0FBQztRQUNuQm1CLE9BQU8sRUFBRTtNQUFJO0lBRWpCLEtBQUt4b0IsK0NBQVM7TUFDWixPQUFBc0ssYUFBQSxDQUFBQSxhQUFBLEtBQVltVSxLQUFLLEdBQUs5WixPQUFPO0lBQy9CLEtBQUsxRSxtREFBYTtNQUFFO1FBQ2xCLE1BQU07VUFBRStGLEtBQUs7VUFBRUMsSUFBSSxFQUFFc0w7UUFBSyxDQUFDLEdBQUc1TSxPQUFPO1FBQ3JDLE9BQUEyRixhQUFBLENBQUFBLGFBQUEsS0FBWW1VLEtBQUs7VUFBRStwQixRQUFRLEVBQUU7WUFBRXhpQyxLQUFLO1lBQUV1TDtVQUFLO1FBQUM7TUFDOUM7SUFDQSxLQUFLdFAsOENBQVE7TUFDWCxPQUFBcUksYUFBQSxDQUFBQSxhQUFBLEtBQVltVSxLQUFLO1FBQUU1YixJQUFJLEVBQUU4QjtNQUFPO0lBQ2xDLEtBQUt6RSxtREFBYTtNQUFFO1FBQ2xCLE1BQU0yZixVQUFVLEdBQUF2VixhQUFBLENBQUFBLGFBQUEsS0FBUW1VLEtBQUssQ0FBQ2xiLE1BQU0sR0FBS29CLE9BQU8sQ0FBRTtRQUNsRCxNQUFNK2pDLGNBQWMsR0FBR2QsOERBQXNCLENBQUMvbkIsVUFBVSxDQUFDO1FBQ3pELE9BQUF2VixhQUFBLENBQUFBLGFBQUEsS0FDS21VLEtBQUs7VUFDUmxiLE1BQU0sRUFBQStHLGFBQUEsQ0FBQUEsYUFBQSxLQUFPbVUsS0FBSyxDQUFDbGIsTUFBTSxHQUFLb0IsT0FBTyxDQUFFO1VBQ3ZDbWMsa0JBQWtCLEVBQUU0bkI7UUFBYztNQUV0QztJQUNBLEtBQUt2b0MsaURBQVc7TUFBRTtRQUNoQixPQUFBbUssYUFBQSxDQUFBQSxhQUFBLEtBQVltVSxLQUFLO1VBQUVoYixJQUFJLEVBQUE2RyxhQUFBLEtBQU8zRixPQUFPO1FBQUU7TUFDekM7SUFDQSxLQUFLdkUscURBQWU7TUFBRTtRQUNwQixNQUFNO1VBQUVzSyxJQUFJO1VBQUVpK0IsS0FBSztVQUFFdEYsWUFBWTtVQUFFdUY7UUFBVSxDQUFDLEdBQUdqa0MsT0FBTyxDQUFDTSxRQUFRO1FBRWpFLElBQUk0aUMsd0RBQWdCLENBQUN4RSxZQUFZLEVBQUU1a0IsS0FBSyxDQUFDMEksWUFBWSxFQUFFd2hCLEtBQUssQ0FBQyxFQUMzRCxPQUFPbHFCLEtBQUs7UUFFZCxNQUFNMEksWUFBWSxHQUNoQmtjLFlBQVksS0FBSzFqQyx3REFBVSxHQUFHK0ssSUFBSSxHQUFHLENBQUMsR0FBRytULEtBQUssQ0FBQzBJLFlBQVksRUFBRSxHQUFHemMsSUFBSSxDQUFDO1FBRXZFLE9BQUFKLGFBQUEsQ0FBQUEsYUFBQSxLQUNLbVUsS0FBSztVQUNSMEksWUFBWTtVQUNaZ2hCLFlBQVksRUFBRVEsS0FBSztVQUNuQnZoQixtQkFBbUIsRUFBRWljLFlBQVk7VUFDakNoYyxnQkFBZ0IsRUFBRXVoQjtRQUFTO01BRS9CO0lBQ0EsS0FBS3BvQyw2REFBdUI7TUFBRTtRQUM1QixNQUFNO1VBQUVrSyxJQUFJO1VBQUVpK0IsS0FBSztVQUFFdEYsWUFBWTtVQUFFdUY7UUFBVSxDQUFDLEdBQUdqa0MsT0FBTyxDQUFDTSxRQUFRO1FBRWpFLElBQUk0aUMsd0RBQWdCLENBQUN4RSxZQUFZLEVBQUU1a0IsS0FBSyxDQUFDdU4sV0FBVyxFQUFFMmMsS0FBSyxDQUFDLEVBQzFELE9BQU9scUIsS0FBSztRQUVkLE1BQU11TixXQUFXLEdBQ2ZxWCxZQUFZLEtBQUsxakMsd0RBQVUsR0FBRytLLElBQUksR0FBRyxDQUFDLEdBQUcrVCxLQUFLLENBQUN1TixXQUFXLEVBQUUsR0FBR3RoQixJQUFJLENBQUM7UUFFdEUsT0FBQUosYUFBQSxDQUFBQSxhQUFBLEtBQ0ttVSxLQUFLO1VBQ1J1TixXQUFXO1VBQ1h1YyxrQkFBa0IsRUFBRUksS0FBSztVQUN6QjFjLHlCQUF5QixFQUFFb1gsWUFBWTtVQUN2Q25YLHNCQUFzQixFQUFFMGM7UUFBUztNQUVyQztJQUNBLEtBQUszbkMsMERBQW9CO01BQUU7UUFDekIsTUFBTTtVQUFFa21CO1FBQWEsQ0FBQyxHQUFHMUksS0FBSztRQUM5QixNQUFNO1VBQUUvVCxJQUFJO1VBQUVpK0IsS0FBSztVQUFFdEYsWUFBWTtVQUFFdUY7UUFBVSxDQUFDLEdBQUdqa0MsT0FBTyxDQUFDTSxRQUFRO1FBQ2pFLE1BQU00akMsV0FBVyxHQUFHMWhCLFlBQVksQ0FBQ3NILElBQUksQ0FBRXFhLENBQUM7VUFBQSxJQUFBQyxNQUFBO1VBQUEsT0FBS0QsQ0FBQyxDQUFDemhDLEVBQUUsT0FBQTBoQyxNQUFBLEdBQUtyK0IsSUFBSSxDQUFDLENBQUMsQ0FBQyxjQUFBcStCLE1BQUEsdUJBQVBBLE1BQUEsQ0FBU3BnQyxRQUFRO1FBQUEsRUFBQztRQUV4RSxNQUFNcWdDLFNBQVMsR0FBRzdoQixZQUFZLENBQUMvZCxHQUFHLENBQUU2L0IsRUFBRSxJQUFLO1VBQUEsSUFBQUMsT0FBQTtVQUN6QyxJQUFJRCxFQUFFLENBQUM1aEMsRUFBRSxPQUFBNmhDLE9BQUEsR0FBS3grQixJQUFJLENBQUMsQ0FBQyxDQUFDLGNBQUF3K0IsT0FBQSx1QkFBUEEsT0FBQSxDQUFTdmdDLFFBQVEsR0FBRSxPQUFPc2dDLEVBQUU7VUFDMUMsTUFBTUUsVUFBVSxHQUNkOUYsWUFBWSxLQUFLMWpDLHdEQUFVLEdBQ3ZCK0ssSUFBSSxHQUNKLENBQUMsR0FBR20rQixXQUFXLENBQUNoZCxhQUFhLEVBQUUsR0FBR25oQixJQUFJLENBQUM7VUFDN0MsT0FBQUosYUFBQSxDQUFBQSxhQUFBLEtBQ0syK0IsRUFBRTtZQUNMcGQsYUFBYSxFQUFFc2QsVUFBVTtZQUN6QjFWLG9CQUFvQixFQUFFNFAsWUFBWTtZQUNsQytGLGlCQUFpQixFQUFFUixTQUFTO1lBQzVCeGEsYUFBYSxFQUFFdWE7VUFBSztRQUV4QixDQUFDLENBQUM7UUFFRixPQUFBcitCLGFBQUEsQ0FBQUEsYUFBQSxLQUNLbVUsS0FBSztVQUNSMEksWUFBWSxFQUFFNmhCO1FBQVM7TUFFM0I7SUFDQSxLQUFLbm5DLHFFQUErQjtNQUFFO1FBQ3BDLE1BQU07VUFBRXNsQjtRQUFhLENBQUMsR0FBRzFJLEtBQUs7UUFDOUIsTUFBTTlVLHNCQUFzQixHQUFHaEYsT0FBTztRQUN0QyxNQUFNbUMsS0FBSyxHQUFHcWdCLFlBQVksQ0FBQ3NILElBQUksQ0FDNUJxYSxDQUFDO1VBQUEsSUFBQU8scUJBQUE7VUFBQSxPQUFLUCxDQUFDLENBQUN6aEMsRUFBRSxPQUFBZ2lDLHFCQUFBLEdBQUsxL0Isc0JBQXNCLENBQUMsQ0FBQyxDQUFDLGNBQUEwL0IscUJBQUEsdUJBQXpCQSxxQkFBQSxDQUEyQjFnQyxRQUFRO1FBQUEsQ0FDckQsQ0FBQztRQUNELE1BQU0yZ0MsY0FBYyxHQUFHeGlDLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFK2tCLGFBQWEsQ0FBQ3ppQixHQUFHLENBQzVDWixNQUFNLElBQ0xtQixzQkFBc0IsQ0FBQzhrQixJQUFJLENBQUU4YSxHQUFHLElBQUtBLEdBQUcsQ0FBQ2xpQyxFQUFFLEtBQUttQixNQUFNLENBQUNuQixFQUFFLENBQUMsSUFBSW1CLE1BQ2xFLENBQUM7UUFDRCxNQUFNZ2hDLFlBQVksR0FBQWwvQixhQUFBLENBQUFBLGFBQUEsS0FDYnhELEtBQUs7VUFDUitrQixhQUFhLEVBQUV5ZDtRQUFjLEVBQzlCO1FBQ0QsT0FBQWgvQixhQUFBLENBQUFBLGFBQUEsS0FDS21VLEtBQUs7VUFDUjBJLFlBQVksRUFBRUEsWUFBWSxDQUFDL2QsR0FBRyxDQUFFNi9CLEVBQUUsSUFDaENBLEVBQUUsQ0FBQzVoQyxFQUFFLEtBQUttaUMsWUFBWSxDQUFDbmlDLEVBQUUsR0FBR21pQyxZQUFZLEdBQUdQLEVBQzdDO1FBQUM7TUFFTDtJQUNBLEtBQUt2b0Msa0RBQVk7TUFBRTtRQUNqQixPQUFBNEosYUFBQSxDQUFBQSxhQUFBLEtBQVltVSxLQUFLO1VBQUV3bEIsYUFBYSxFQUFFO1FBQUk7TUFDeEM7SUFDQSxLQUFLdGpDLG9EQUFjO01BQUU7UUFDbkIsTUFBTTZILE1BQU0sR0FBRzdELE9BQU8sQ0FBQ00sUUFBUTtRQUMvQixPQUFBcUYsYUFBQSxDQUFBQSxhQUFBLEtBQVltVSxLQUFLO1VBQUV3bEIsYUFBYSxFQUFFejdCO1FBQU07TUFDMUM7SUFDQSxLQUFLbkgsNkRBQXVCO01BQUU7UUFDNUIsTUFBTTtVQUFFcUo7UUFBSyxDQUFDLEdBQUcvRixPQUFPLENBQUNNLFFBQVE7UUFDakMsT0FBQXFGLGFBQUEsQ0FBQUEsYUFBQSxLQUFZbVUsS0FBSztVQUFFN2MsY0FBYyxFQUFFOEk7UUFBSTtNQUN6QztJQUNBLEtBQUs5Siw0REFBc0I7SUFDM0IsS0FBS0gsbURBQWE7TUFBRTtRQUNsQixNQUFNZ3BDLFVBQVUsR0FBRzlrQyxPQUFPLENBQUNNLFFBQVE7UUFFbkMsTUFBTStqQyxTQUFTLEdBQUd2cUIsS0FBSyxDQUFDMEksWUFBWSxDQUFDL2QsR0FBRyxDQUFFdEMsS0FBSyxJQUFLO1VBQ2xELE1BQU1xaUMsVUFBVSxHQUFHckIsMEVBQXNCLENBQ3ZDaGhDLEtBQUssQ0FBQytrQixhQUFhLEVBQ25CNGQsVUFDRixDQUFDO1VBQ0QsT0FBQW4vQixhQUFBLENBQUFBLGFBQUEsS0FBWXhELEtBQUs7WUFBRStrQixhQUFhLEVBQUVzZDtVQUFVO1FBQzlDLENBQUMsQ0FBQztRQUVGLE1BQU1PLGNBQWMsR0FBRzVCLDBFQUFzQixDQUMzQ3JwQixLQUFLLENBQUN1TixXQUFXLEVBQ2pCeWQsVUFDRixDQUFDO1FBRUQsT0FBQW4vQixhQUFBLENBQUFBLGFBQUEsS0FBWW1VLEtBQUs7VUFBRTBJLFlBQVksRUFBRTZoQixTQUFTO1VBQUVoZCxXQUFXLEVBQUUwZDtRQUFjO01BQ3pFO0lBQ0EsS0FBSzVvQyxxREFBZTtJQUNwQixLQUFLRCxtREFBYTtNQUFFO1FBQ2xCLE1BQU00b0MsVUFBVSxHQUFHOWtDLE9BQU8sQ0FBQ00sUUFBUTtRQUNuQyxNQUFNK2pDLFNBQVMsR0FBR3ZxQixLQUFLLENBQUMwSSxZQUFZLENBQUMvZCxHQUFHLENBQUV0QyxLQUFLLElBQUs7VUFDbEQsTUFBTXFpQyxVQUFVLEdBQUdyQiwwRUFBc0IsQ0FDdkNoaEMsS0FBSyxDQUFDK2tCLGFBQWEsRUFDbkI0ZCxVQUNGLENBQUM7VUFDRCxPQUFBbi9CLGFBQUEsQ0FBQUEsYUFBQSxLQUFZeEQsS0FBSztZQUFFK2tCLGFBQWEsRUFBRXNkO1VBQVU7UUFDOUMsQ0FBQyxDQUFDO1FBRUYsTUFBTU8sY0FBYyxHQUFHNUIsMEVBQXNCLENBQzNDcnBCLEtBQUssQ0FBQ3VOLFdBQVcsRUFDakJ5ZCxVQUNGLENBQUM7UUFFRCxPQUFBbi9CLGFBQUEsQ0FBQUEsYUFBQSxLQUNLbVUsS0FBSztVQUNSd2xCLGFBQWEsRUFBRXdGLFVBQVU7VUFDekJ0aUIsWUFBWSxFQUFFNmhCLFNBQVM7VUFDdkJoZCxXQUFXLEVBQUUwZDtRQUFjO01BRS9CO0lBQ0E7TUFDRSxPQUFPanJCLEtBQUs7RUFDaEI7QUFDRixDQUFDO0FBRUQsaUVBQWVncUIsYUFBYTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUM5UUk7QUFDa0I7QUFVM0I7QUFDeUI7QUFDUjtBQUNGO0FBRS9CLE1BQU02QixRQUFRLEdBQUc1a0MsSUFBQSxJQU1sQjtFQUFBLElBTm1CO0lBQ3ZCNmtDLFFBQVE7SUFDUkMsUUFBUTtJQUNSNW5DLE1BQU07SUFDTjZELFVBQVU7SUFDVnFFO0VBQ0YsQ0FBQyxHQUFBcEYsSUFBQTtFQUNDO0VBQ0EsTUFBTStrQyxRQUFRLEdBQUdKLHNEQUFlLENBQUM7SUFDL0IzakMsV0FBVyxFQUFFK2hDLGdEQUFhQTtFQUM1QixDQUFDLENBQUM7RUFFRixNQUFNaUMsS0FBSyxHQUFHZixnRUFBYyxDQUFDO0lBQzNCZ0IsT0FBTyxFQUFFZCw2REFBYyxDQUNyQjtNQUNFbGtDLEdBQUcsNEJBQUE3QixNQUFBLENBQTRCeW1DLFFBQVEsQ0FBRTtNQUN6Q0gsT0FBT0Esb0VBQUFBO0lBQ1QsQ0FBQyxFQUNESyxRQUNGLENBQUM7SUFDREcsVUFBVSxFQUFHQyxvQkFBb0IsSUFDL0JBLG9CQUFvQixDQUFDO01BQ25CQyxLQUFLLEVBQUU7UUFDTEMsYUFBYSxFQUFFO1VBQ2JSLFFBQVE7VUFDUjlqQyxVQUFVO1VBQ1Y3RCxNQUFNO1VBQ040bkMsUUFBUTtVQUNSMS9CO1FBQ0Y7TUFDRixDQUFDO01BQ0RrZ0MsY0FBYyxFQUFFLEtBQUs7TUFDckJDLGlCQUFpQixFQUFFO1FBQ2pCQyxjQUFjLEVBQUUsQ0FBQ3BCLGdEQUFLLEVBQUVDLG9EQUFTLEVBQUVDLGdEQUFLLEVBQUVDLGtEQUFPLEVBQUVDLGdEQUFLLEVBQUVDLG1EQUFRO01BQ3BFO0lBQ0YsQ0FBQztFQUNMLENBQUMsQ0FBQztFQUVGLE9BQU9PLEtBQUs7QUFDZCxDQUFDO0FBRU0sTUFBTVMsWUFBWSxHQUFJQyxNQUFNLElBQUs7RUFDdEMsTUFBTVYsS0FBSyxHQUFHeFcsOENBQU8sQ0FBQyxNQUFNb1csUUFBUSxDQUFDYyxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUM7RUFDakQsTUFBTUMsU0FBUyxHQUFHblgsOENBQU8sQ0FBQyxNQUFNMFYsMkRBQVksQ0FBQ2MsS0FBSyxDQUFDLEVBQUUsQ0FBQ0EsS0FBSyxDQUFDLENBQUM7RUFFN0QsT0FBTztJQUNMQSxLQUFLO0lBQ0xXO0VBQ0YsQ0FBQztBQUNILENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUM5RHlEO0FBQ2xCOztBQUV4QztBQUNBLE1BQU1JLGtCQUFrQixHQUFHQSxDQUFBLEtBQU07RUFDL0IsTUFBTSxJQUFJQyxLQUFLLENBQUMsb0JBQW9CLENBQUM7RUFDckM7QUFDRixDQUFDO0FBRU0sTUFBTXBzQyxvQkFBb0IsR0FBRyxNQUFBQSxDQUFBLEtBQVk7RUFDOUMsSUFBSTtJQUNGLE9BQU8sTUFBTWlzQyxnR0FBYyxDQUFDLENBQUMsQ0FBQ2hrQyxLQUFLLENBQUVDLENBQUMsSUFBSztNQUN6Q3lFLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDLHdEQUF3RCxFQUFFMUUsQ0FBQyxDQUFDO01BQ3hFZ2tDLDJEQUF1QixDQUFDaGtDLENBQUMsQ0FBQztNQUMxQjhqQyw0RkFBVSxDQUFDLENBQUM7TUFDWixPQUFPLElBQUk7SUFDYixDQUFDLENBQUM7RUFDSixDQUFDLENBQUMsT0FBTzlqQyxDQUFDLEVBQUU7SUFDVnlFLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDLHdEQUF3RCxFQUFFMUUsQ0FBQyxDQUFDO0lBQ3hFZ2tDLDJEQUF1QixDQUFDaGtDLENBQUMsQ0FBQztJQUMxQjhqQyw0RkFBVSxDQUFDLENBQUM7SUFDWixPQUFPLElBQUk7RUFDYjtBQUNGLENBQUM7QUFFTSxNQUFNanNDLGlCQUFpQixHQUFHLE1BQUFBLENBQUEsS0FDL0I0SSxPQUFPLENBQUNDLE1BQU0sQ0FBQyxJQUFJd2pDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzdCeEMsTUFBTUUsb0JBQW9CLEdBQUcsRUFBRTtBQUMvQixNQUFNQyxtQkFBbUIsR0FBRyxFQUFFO0FBQzlCLE1BQU03a0IsYUFBYSxHQUFHLENBQUM7QUFDdkIsTUFBTWxWLGVBQWUsR0FBRyxJQUFJO0FBQzVCLE1BQU1nNkIsT0FBTyxHQUFHLENBQUM7QUFDakIsTUFBTXZzQyxzQkFBc0IsR0FBRyxDQUFDO0FBQ2hDLE1BQU1JLFVBQVUsR0FBRyxDQUFDO0FBQ3BCLE1BQU1pdUIsd0JBQXdCLEdBQUcsQ0FBQztBQUNsQyxNQUFNMkksUUFBUSxHQUFHLENBQUM7QUFDbEIsTUFBTUUsUUFBUSxHQUFHLENBQUM7QUFDbEIsTUFBTUQsVUFBVSxHQUFHLENBQUM7QUFDcEIsTUFBTXVWLFlBQVksR0FBRyxDQUFDO0FBRXRCLE1BQU05RixlQUFlLEdBQUcsaUJBQWlCO0FBQ3pDLE1BQU1DLGlCQUFpQixHQUFHLG1CQUFtQjtBQUM3QyxNQUFNOEYsY0FBYyxHQUFHLGdCQUFnQjtBQUN2QyxNQUFNN0YsZ0JBQWdCLEdBQUcsa0JBQWtCO0FBQzNDLE1BQU04RixZQUFZLEdBQUcsY0FBYztBQUNuQyxNQUFNQyxpQkFBaUIsR0FBRyxtQkFBbUI7QUFDN0MsTUFBTTlGLGlCQUFpQixHQUFHLG1CQUFtQjtBQUU3QyxNQUFNK0YscUJBQXFCLEdBQUcsdUJBQXVCO0FBQ3JELE1BQU1DLHNCQUFzQixHQUFHLHdCQUF3QjtBQUN2RCxNQUFNQyxzQkFBc0IsR0FBRyx3QkFBd0I7QUFDdkQsTUFBTUMsd0JBQXdCLEdBQUcsV0FBVztBQUM1QyxNQUFNQyx5QkFBeUIsR0FBRyxVQUFVO0FBQzVDLE1BQU1DLHlCQUF5QixHQUFHLFVBQVU7QUFFNUMsTUFBTUMsd0JBQXdCLEdBQUcsS0FBSztBQUV0QyxNQUFNQyxRQUFRLEdBQUcsQ0FBQztBQUNsQixNQUFNM00sUUFBUSxHQUFHLENBQUM7QUFDbEIsTUFBTTRNLFNBQVMsR0FBRyxDQUFDO0FBQ25CLE1BQU1DLFFBQVEsR0FBRyxDQUFDO0FBRWxCLE1BQU1odEMsbUJBQW1CLEdBQUcsRUFBRTtBQUM5QixNQUFNSCxjQUFjLEdBQUcsRUFBRTtBQUV6QixNQUFNRCxXQUFXLEdBQUc7RUFDekIsR0FBRyxFQUFFLEdBQUc7RUFDUixHQUFHLEVBQUUsR0FBRztFQUNSLEdBQUcsRUFBRSxHQUFHO0VBQ1IsR0FBRyxFQUFFO0FBQ1AsQ0FBQztBQUVNLE1BQU00b0IsSUFBSSxHQUFHO0VBQ2xCamtCLE1BQU0sRUFBRSxRQUFRO0VBQ2hCMGtCLE9BQU8sRUFBRTtBQUNYLENBQUM7QUFFTSxNQUFNZ2tCLFNBQVMsR0FBRyxDQUFDO0FBRW5CLE1BQU1udEMsYUFBYSxHQUFHO0VBQzNCeUUsTUFBTSxFQUFFLFFBQVE7RUFDaEJJLGdCQUFnQixFQUFFLGtCQUFrQjtFQUNwQ0QsaUJBQWlCLEVBQUU7QUFDckIsQ0FBQztBQUVNLE1BQU13NEIsZ0JBQWdCLEdBQUcsY0FBYzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzFEVDtBQUNLO0FBTXJCO0FBRWQsTUFBTTlULGNBQWMsR0FBR0EsQ0FBQ3BqQixLQUFLLEVBQUFGLElBQUEsS0FBdUM7RUFBQSxJQUFyQztNQUFFb25DLE1BQU0sR0FBRztJQUFvQixDQUFDLEdBQUFwbkMsSUFBQTtJQUFUMDRCLE9BQU8sR0FBQS91QixxRkFBQSxDQUFBM0osSUFBQSxFQUFBNEosU0FBQTtFQUNsRSxNQUFNeTlCLGNBQWMsR0FBRztJQUNyQmhqQixRQUFRLEVBQUUsS0FBSztJQUNmaWpCLHFCQUFxQixFQUFFLENBQUM7SUFDeEJDLHFCQUFxQixFQUFFO0VBQ3pCLENBQUM7RUFFRCxNQUFNQyxTQUFTLEdBQUcsSUFBSUMsSUFBSSxDQUFDQyxZQUFZLENBQUNOLE1BQU0sRUFBQXhpQyxhQUFBLENBQUFBLGFBQUE7SUFDNUNrRyxLQUFLLEVBQUU7RUFBVSxHQUNkdThCLGNBQWMsR0FDZDNPLE9BQU8sQ0FDWCxDQUFDO0VBRUYsT0FBTzhPLFNBQVMsQ0FBQ2pYLE1BQU0sQ0FBQ3J3QixLQUFLLENBQUM7QUFDaEMsQ0FBQztBQUVNLE1BQU11dEIsZ0JBQWdCLEdBQUdBLENBQUNrYSxRQUFRLEVBQUVDLFFBQVEsS0FBSztFQUN0RCxJQUFJQSxRQUFRLEVBQ1YsT0FBTzNZLHlEQUNGLENBQUMwWSxRQUFRLEdBQUd2N0IsdURBQWUsRUFBRXc3QixRQUFRLENBQUMsQ0FDeENyWCxNQUFNLENBQUMsZUFBZSxDQUFDO0VBRTVCLE9BQU90QiwyREFBVyxDQUFDMFksUUFBUSxDQUFDLENBQUNwWCxNQUFNLENBQUMsZUFBZSxDQUFDO0FBQ3RELENBQUM7QUFFTSxNQUFNbE4sb0JBQW9CLEdBQUc1aUIsS0FBQSxJQUF1QjtFQUFBLElBQUFzbkMsb0JBQUE7RUFBQSxJQUF0QjtJQUFFM21DLEtBQUs7SUFBRWxFO0VBQU8sQ0FBQyxHQUFBdUQsS0FBQTtFQUNwRCxJQUFJLENBQUNXLEtBQUssSUFBSSxDQUFDbEUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0VBQ2hDLE1BQU1xRyxPQUFPLEdBQUduQyxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRStrQixhQUFhO0VBQ3BDLElBQUksQ0FBQzVpQixPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7RUFFdkIsTUFBTTtJQUFFc3NCLGVBQWU7SUFBRW5MLGVBQWU7SUFBRUQsTUFBTTtJQUFFdWpCO0VBQVcsQ0FBQyxHQUFHNW1DLEtBQUs7RUFDdEUsTUFBTTtJQUFFMGU7RUFBYSxDQUFDLEdBQUc1aUIsTUFBTTtFQUUvQixNQUFNK3FDLGNBQWMsR0FBRztJQUFFNWpCLFFBQVEsRUFBRWpqQixLQUFLLENBQUNpakI7RUFBUyxDQUFDO0VBRW5ELE1BQU1SLFlBQVksR0FBRyxFQUFFO0VBQ3ZCLE1BQU1ELGFBQWEsR0FBRyxFQUFFO0VBQ3hCLElBQUlza0IsbUJBQW1CLEdBQUcsQ0FBQztFQUUzQnRvQyxNQUFNLENBQUM0QixJQUFJLENBQUNKLEtBQUssQ0FBQyttQyw4QkFBOEIsQ0FBQyxDQUFDemtDLEdBQUcsQ0FBRVosTUFBTSxJQUFLO0lBQ2hFLE1BQU1zbEMsVUFBVSxHQUFHdG9CLFlBQVksYUFBWkEsWUFBWSx1QkFBWkEsWUFBWSxDQUFFaUosSUFBSSxDQUFFc2YsRUFBRSxJQUFLQSxFQUFFLENBQUMzbUMsSUFBSSxLQUFLb0IsTUFBTSxDQUFDO0lBQ2pFLElBQUksQ0FBQ3NsQyxVQUFVLEVBQUUsT0FBTyxJQUFJO0lBQzVCeGtCLGFBQWEsQ0FBQ3psQixJQUFJLENBQUM7TUFDakJtcUMsY0FBYyxFQUFFRixVQUFVLENBQUN6bUMsRUFBRTtNQUM3QnVpQixXQUFXLEVBQUVra0IsVUFBVTtNQUN2QjFtQyxJQUFJLEVBQUVvQixNQUFNO01BQ1ptaEIsR0FBRyxFQUFFN2lCLEtBQUssQ0FBQyttQyw4QkFBOEIsQ0FBQ3JsQyxNQUFNO0lBQ2xELENBQUMsQ0FBQztJQUNGb2xDLG1CQUFtQixJQUNqQkUsVUFBVSxDQUFDamtCLElBQUksR0FBRy9pQixLQUFLLENBQUMrbUMsOEJBQThCLENBQUNybEMsTUFBTSxDQUFDO0lBRWhFLE9BQU84Z0IsYUFBYTtFQUN0QixDQUFDLENBQUM7RUFFRnhpQixLQUFLLGFBQUxBLEtBQUssZ0JBQUEybUMsb0JBQUEsR0FBTDNtQyxLQUFLLENBQUVtbkMsYUFBYSxjQUFBUixvQkFBQSxlQUFwQkEsb0JBQUEsQ0FBc0Job0MsT0FBTyxDQUFFeWtCLEdBQUcsSUFBSztJQUNyQyxNQUFNZ2tCLFlBQVksR0FBQTVqQyxhQUFBLENBQUFBLGFBQUEsS0FDYjRmLEdBQUc7TUFDTkMsTUFBTSxFQUFFbkIsY0FBYyxDQUFDa0IsR0FBRyxDQUFDQyxNQUFNLEVBQUV3akIsY0FBYztJQUFDLEVBQ25EO0lBQ0Rwa0IsWUFBWSxDQUFDMWxCLElBQUksQ0FBQ3FxQyxZQUFZLENBQUM7RUFDakMsQ0FBQyxDQUFDO0VBRUYsTUFBTUMsYUFBYSxHQUFHbmxCLGNBQWMsQ0FBQzRrQixtQkFBbUIsRUFBRUQsY0FBYyxDQUFDO0VBRXpFLE1BQU16a0IsYUFBYSxHQUFHRixjQUFjLENBQUNvQixlQUFlLEVBQUV1akIsY0FBYyxDQUFDO0VBQ3JFLE1BQU14a0IsV0FBVyxHQUFHSCxjQUFjLENBQUN1TSxlQUFlLEVBQUVvWSxjQUFjLENBQUM7RUFDbkUsTUFBTXRrQixRQUFRLEdBQUdMLGNBQWMsQ0FBQzBrQixVQUFVLEVBQUVDLGNBQWMsQ0FBQztFQUMzRCxNQUFNdmtCLFdBQVcsR0FBRzlqQixNQUFNLENBQUM4b0MsU0FBUyxDQUFDQyxjQUFjLENBQUNDLElBQUksQ0FBQ3huQyxLQUFLLEVBQUUsUUFBUSxDQUFDLEdBQ3JFa2lCLGNBQWMsQ0FBQ21CLE1BQU0sRUFBRXdqQixjQUFjLENBQUMsR0FDdEMza0IsY0FBYyxDQUFDbWxCLGFBQWEsRUFBRVIsY0FBYyxDQUFDO0VBRWpELE9BQU87SUFDTHprQixhQUFhO0lBQ2JDLFdBQVc7SUFDWEUsUUFBUTtJQUNSRCxXQUFXO0lBQ1hFLGFBQWE7SUFDYkM7RUFDRixDQUFDO0FBQ0gsQ0FBQztBQUVNLE1BQU1nbEIsZUFBZSxHQUFHQSxDQUFDcG5CLFlBQVksRUFBRXhmLE9BQU8sS0FBSztFQUFBLElBQUE2bUMsUUFBQTtFQUN4RCxNQUFNQyxNQUFNLEdBQUd0bkIsWUFBWSxDQUFDNWpCLE1BQU0sQ0FBRXVsQyxDQUFDLElBQUtBLENBQUMsQ0FBQ3poQyxFQUFFLEtBQUtNLE9BQU8sQ0FBQztFQUMzRCxRQUFBNm1DLFFBQUEsR0FBT0MsTUFBTSxDQUFDLENBQUMsQ0FBQyxjQUFBRCxRQUFBLHVCQUFUQSxRQUFBLENBQVczaUIsYUFBYTtBQUNqQyxDQUFDO0FBRU0sTUFBTTZpQiwyQkFBMkIsR0FBSUMsRUFBRSxJQUFLO0VBQ2pELE1BQU01cUMsS0FBSyxHQUFHNHFDLEVBQUUsQ0FBQ0MsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHOThCLHVEQUFlO0VBQ3ZELE1BQU05TixLQUFLLEdBQ1QycUMsRUFBRSxDQUFDQyxRQUFRLENBQUNoRCw0REFBb0IsRUFBRUMsMkRBQW1CLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUM1RC81Qix1REFBZTtFQUNqQixPQUFPO0lBQ0wvTixLQUFLO0lBQ0xDO0VBQ0YsQ0FBQztBQUNILENBQUM7QUFFTSxNQUFNNnFDLGtCQUFrQixHQUFHQSxDQUFBLEtBQ2hDaEssSUFBSSxDQUFDaUssS0FBSyxDQUFDLENBQUMsSUFBSUMsSUFBSSxDQUFDLENBQUMsR0FBR2o5Qix1REFBZSxDQUFDO0FBRXBDLE1BQU1rOUIsTUFBTSxHQUFHQSxDQUFBLEtBQU0sQ0FBQ3pzQyxRQUFRLEVBQUVnRSxRQUFRLEtBQUs7RUFDbEQsTUFBTTtJQUFFMG9DO0VBQVcsQ0FBQyxHQUFHMW9DLFFBQVEsQ0FBQyxDQUFDO0VBQ2pDLE9BQU8sQ0FBQTBvQyxVQUFVLGFBQVZBLFVBQVUsdUJBQVZBLFVBQVUsQ0FBRUMsTUFBTSxLQUFJLElBQUksR0FBR0wsa0JBQWtCLENBQUMsQ0FBQyxHQUFHSSxVQUFVLGFBQVZBLFVBQVUsdUJBQVZBLFVBQVUsQ0FBRUMsTUFBTTtBQUMvRSxDQUFDO0FBRU0sTUFBTTVrQixNQUFNLEdBQUdBLENBQUEsS0FBTTtFQUMxQixNQUFNL25CLFFBQVEsR0FBR29zQix3REFBVyxDQUFDLENBQUM7RUFFOUIsT0FBT3BzQixRQUFRLENBQUN5c0MsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUMzQixDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLE1BQU1uSCxnQkFBZ0IsR0FBR0EsQ0FBQ3NILFdBQVcsRUFBRXprQyxJQUFJLEVBQUVpK0IsS0FBSyxLQUFLO0VBQzVELElBQUk1akMsR0FBRyxHQUFHLEtBQUs7RUFDZixNQUFNd2lCLFVBQVUsR0FBRy9NLEtBQUssQ0FBQ0MsT0FBTyxDQUFDL1AsSUFBSSxDQUFDLEdBQUdBLElBQUksQ0FBQ3pHLE1BQU0sR0FBRyxDQUFDO0VBQ3hEO0VBQ0EsSUFBSWtyQyxXQUFXLEdBQUd4dkMsa0RBQVUsSUFBSTRuQixVQUFVLEdBQUcsQ0FBQyxJQUFJQSxVQUFVLEtBQUtvaEIsS0FBSyxFQUNwRTVqQyxHQUFHLEdBQUcsSUFBSTtFQUNaLE9BQU9BLEdBQUc7QUFDWixDQUFDO0FBRU0sTUFBTTZpQyxzQkFBc0IsR0FBSXpnQyxPQUFPLElBQUs7RUFDakQsSUFBSWlvQyxLQUFLLEdBQUcsQ0FBQztFQUNiOXBDLE1BQU0sQ0FBQ0MsT0FBTyxDQUFDNEIsT0FBTyxDQUFDLENBQUMxQixPQUFPLENBQUNlLEtBQUEsSUFBZTtJQUFBLElBQWQsR0FBR1osS0FBSyxDQUFDLEdBQUFZLEtBQUE7SUFDeEMsSUFBSWdVLEtBQUssQ0FBQ0MsT0FBTyxDQUFDN1UsS0FBSyxDQUFDLEVBQUU7TUFDeEJ3cEMsS0FBSyxJQUFJeHBDLEtBQUssQ0FBQzNCLE1BQU07SUFDdkIsQ0FBQyxNQUFNLElBQUksT0FBTzJCLEtBQUssS0FBSyxRQUFRLElBQUlBLEtBQUssQ0FBQ3lwQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtNQUMzREQsS0FBSyxFQUFFO0lBQ1QsQ0FBQyxNQUFNLElBQUksT0FBT3hwQyxLQUFLLEtBQUssUUFBUSxJQUFJQSxLQUFLLEdBQUcsQ0FBQyxFQUFFO01BQ2pEd3BDLEtBQUssRUFBRTtJQUNUO0VBQ0YsQ0FBQyxDQUFDO0VBQ0YsT0FBT0EsS0FBSztBQUNkLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ25Kb0M7QUFDa0I7QUFDNUI7QUFFcEIsTUFBTUUsZUFBZSxHQUFHQSxDQUFDMXNDLE1BQU0sRUFBRWtvQixHQUFHLEtBQUs7RUFDOUMsSUFBSSxDQUFDbG9CLE1BQU0sRUFBRSxPQUFPLElBQUk7RUFFeEIsTUFBTTJzQyxhQUFhLEdBQ2pCM3NDLE1BQU0sYUFBTkEsTUFBTSxlQUFOQSxNQUFNLENBQUU0c0MseUJBQXlCLElBQ2pDNXNDLE1BQU0sQ0FBQzRzQyx5QkFBeUIsR0FBRzVzQyxNQUFNLENBQUM2c0MsUUFBUSxHQUM5QzdzQyxNQUFNLENBQUM0c0MseUJBQXlCLEdBQ2hDNXNDLE1BQU0sQ0FBQzZzQyxRQUFRO0VBRXJCLE9BQU8za0IsR0FBRyxHQUFHeWtCLGFBQWE7QUFDNUIsQ0FBQztBQUVNLE1BQU1HLGtCQUFrQixHQUFHQSxDQUFDOXNDLE1BQU0sRUFBRWtvQixHQUFHLEtBQUs7RUFDakQsSUFBSSxDQUFDbG9CLE1BQU0sRUFBRSxPQUFPLElBQUk7RUFFeEIsT0FBT0EsTUFBTSxDQUFDK3NDLFVBQVUsR0FBRzdrQixHQUFHO0FBQ2hDLENBQUM7QUFFTSxNQUFNOGtCLGlCQUFpQixHQUFJaHRDLE1BQU0sSUFBSztFQUMzQyxJQUFJLENBQUNBLE1BQU0sRUFBRSxPQUFPLElBQUk7RUFDeEIsTUFBTWl0QyxRQUFRLEdBQUdsYixzREFBTSxDQUFDL3hCLE1BQU0sQ0FBQytzQyxVQUFVLEdBQUc3OUIsdURBQWUsQ0FBQyxDQUFDeTdCLEVBQUUsQ0FDN0QzcUMsTUFBTSxDQUFDa3RDLFlBQ1QsQ0FBQztFQUNELE1BQU1DLE1BQU0sR0FBR3BiLHNEQUFNLENBQUMveEIsTUFBTSxDQUFDNnNDLFFBQVEsR0FBRzM5Qix1REFBZSxDQUFDLENBQUN5N0IsRUFBRSxDQUN6RDNxQyxNQUFNLENBQUNrdEMsWUFDVCxDQUFDO0VBQ0QsTUFBTUUsSUFBSSxHQUFHRCxNQUFNLGFBQU5BLE1BQU0sdUJBQU5BLE1BQU0sQ0FBRUUsSUFBSSxDQUFDSixRQUFRLEVBQUUsTUFBTSxDQUFDO0VBQzNDLE9BQU87SUFDTEEsUUFBUTtJQUNSRSxNQUFNO0lBQ05DO0VBQ0YsQ0FBQztBQUNILENBQUM7QUFFTSxNQUFNRSxzQkFBc0IsR0FBSXR0QyxNQUFNLElBQUs7RUFDaEQsSUFBSSxDQUFDQSxNQUFNLEVBQUUsT0FBTyxJQUFJO0VBQ3hCLE1BQU07SUFBRWl0QyxRQUFRO0lBQUVFLE1BQU07SUFBRUM7RUFBSyxDQUFDLEdBQUdKLGlCQUFpQixDQUFDaHRDLE1BQU0sQ0FBQztFQUM1RCxJQUFJLENBQUNpdEMsUUFBUSxJQUFJLENBQUNFLE1BQU0sRUFBRSxPQUFPLElBQUk7RUFDckMsSUFBSUksZUFBZSxHQUFHLGVBQWU7RUFDckMsSUFBSUMsYUFBYSxHQUFHLGVBQWU7RUFDbkMsSUFBSVAsUUFBUSxDQUFDUSxJQUFJLENBQUMsQ0FBQyxLQUFLTixNQUFNLENBQUNNLElBQUksQ0FBQyxDQUFDLEVBQUVGLGVBQWUsR0FBRyxTQUFTO0VBQ2xFLElBQUlOLFFBQVEsQ0FBQ1MsS0FBSyxDQUFDLENBQUMsS0FBS1AsTUFBTSxDQUFDTyxLQUFLLENBQUMsQ0FBQyxFQUFFRixhQUFhLEdBQUcsVUFBVTtFQUVuRSxNQUFNRyxTQUFTLEdBQUdWLFFBQVEsQ0FBQzVaLE1BQU0sQ0FBQ2thLGVBQWUsQ0FBQztFQUNsRCxNQUFNSyxPQUFPLEdBQUdULE1BQU0sQ0FBQzlaLE1BQU0sQ0FBQ21hLGFBQWEsQ0FBQztFQUU1QyxJQUFJSixJQUFJLEdBQUdsRSwrQ0FBTyxFQUFFLFVBQUFob0MsTUFBQSxDQUFVeXNDLFNBQVMsU0FBQXpzQyxNQUFBLENBQU0wc0MsT0FBTztFQUVwRCxPQUFPRCxTQUFTO0FBQ2xCLENBQUM7QUFFTSxNQUFNRSxpQkFBaUIsR0FBSTd0QyxNQUFNLElBQUs7RUFBQSxJQUFBOHRDLGlCQUFBO0VBQzNDLElBQUksQ0FBQzl0QyxNQUFNLEVBQUUsT0FBTyxJQUFJO0VBRXhCLE1BQU0rdEMsUUFBUSxJQUFBRCxpQkFBQSxHQUFHOXRDLE1BQU0sQ0FBQ2d1QyxTQUFTLGNBQUFGLGlCQUFBLHVCQUFoQkEsaUJBQUEsQ0FBa0JqaUIsSUFBSSxDQUNwQ29pQixDQUFDLElBQUtBLENBQUMsQ0FBQ0MsVUFBVSxLQUFLLGFBQWEsSUFBSUQsQ0FBQyxDQUFDRSxPQUFPLEtBQUssSUFDekQsQ0FBQztFQUVELElBQUksQ0FBQ0osUUFBUSxFQUFFLE9BQU8sSUFBSTtFQUUxQixVQUFBN3NDLE1BQUEsQ0FBVTZzQyxRQUFRLENBQUNLLElBQUksUUFBQWx0QyxNQUFBLENBQUs2c0MsUUFBUSxDQUFDTSxPQUFPO0FBQzlDLENBQUM7QUFFTSxNQUFNcGlCLHFCQUFxQixHQUFJanNCLE1BQU0sSUFBSztFQUMvQyxJQUFJLENBQUNBLE1BQU0sRUFBRSxPQUFPLElBQUk7RUFFeEIsT0FBT0EsTUFBTSxDQUFDNHNDLHlCQUF5QixJQUNyQzVzQyxNQUFNLENBQUM0c0MseUJBQXlCLEdBQUc1c0MsTUFBTSxDQUFDNnNDLFFBQVEsR0FDaEQ3c0MsTUFBTSxDQUFDNHNDLHlCQUF5QixHQUNoQzVzQyxNQUFNLENBQUM2c0MsUUFBUTtBQUNyQixDQUFDO0FBRU0sTUFBTWpsQixnQkFBZ0IsR0FBRzlrQixJQUFBLElBQWdCO0VBQUEsSUFBQXdyQyxpQkFBQSxFQUFBQyxrQkFBQTtFQUFBLElBQWY7SUFBRXZ1QztFQUFPLENBQUMsR0FBQThDLElBQUE7RUFDekMsTUFBTW9sQixHQUFHLEdBQUdSLHlDQUFNLENBQUMsQ0FBQztFQUVwQixJQUFJLENBQUMxbkIsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0VBRXRCLE1BQU0rdEMsUUFBUSxHQUFHRixpQkFBaUIsQ0FBQzd0QyxNQUFNLENBQUM7RUFDMUMsTUFBTXd1QyxhQUFhLEdBQUdsQixzQkFBc0IsQ0FBQ3R0QyxNQUFNLENBQUM7RUFDcEQsTUFBTXF0QixZQUFZLEdBQUdwQixxQkFBcUIsQ0FBQ2pzQixNQUFNLENBQUM7RUFDbEQsTUFBTXl1QyxxQkFBcUIsR0FBRzFjLHlEQUFTLENBQ3JDMUUsWUFBWSxHQUFBaWhCLGlCQUFBLEdBQ1p0dUMsTUFBTSxDQUFDMHVDLFNBQVMsY0FBQUosaUJBQUEsdUJBQWhCQSxpQkFBQSxDQUFrQnBCLFlBQ3BCLENBQUM7RUFDRCxNQUFNeUIseUJBQXlCLEdBQUczQixpQkFBaUIsQ0FDakQ5a0IsR0FBRyxFQUNIbUYsWUFBWSxHQUFBa2hCLGtCQUFBLEdBQ1p2dUMsTUFBTSxDQUFDMHVDLFNBQVMsY0FBQUgsa0JBQUEsdUJBQWhCQSxrQkFBQSxDQUFrQi9wQyxJQUNwQixDQUFDO0VBRUQsTUFBTW9xQyxNQUFNLEdBQUdsQyxlQUFlLENBQUMxc0MsTUFBTSxFQUFFa29CLEdBQUcsQ0FBQztFQUMzQyxNQUFNRCxTQUFTLEdBQUc2a0Isa0JBQWtCLENBQUM5c0MsTUFBTSxFQUFFa29CLEdBQUcsQ0FBQztFQUNqRCxNQUFNeUUsY0FBYyxHQUFHVSxZQUFZLEdBQUduRixHQUFHO0VBRXpDLE9BQU87SUFDTDFqQixJQUFJLEVBQUV4RSxNQUFNLGFBQU5BLE1BQU0sdUJBQU5BLE1BQU0sQ0FBRXdFLElBQUk7SUFDbEIwakIsR0FBRztJQUNINmxCLFFBQVE7SUFDUlMsYUFBYTtJQUNibmhCLFlBQVk7SUFDWm9oQixxQkFBcUI7SUFDckJFLHlCQUF5QjtJQUN6QkMsTUFBTTtJQUNOM21CLFNBQVM7SUFDVDBFO0VBQ0YsQ0FBQztBQUNILENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUM5RzBCO0FBQ0E7QUFhTjtBQUN1RDtBQUtmO0FBT1A7QUFFL0MsTUFBTWtpQixVQUFVLEdBQUc7RUFDeEIsQ0FBQ3JMLHlEQUFpQixHQUFHO0lBQ25CeHFCLElBQUksRUFBRXdxQix5REFBaUI7SUFDdkJuMEIsSUFBSSxFQUFFN1MsNkNBQUksQ0FBQ2lHLENBQUMsQ0FBQywwQkFBMEI7RUFDekMsQ0FBQztFQUNELENBQUM2Z0MseURBQWlCLEdBQUc7SUFDbkJ0cUIsSUFBSSxFQUFFc3FCLHlEQUFpQjtJQUN2QmowQixJQUFJLEVBQUU3Uyw2Q0FBSSxDQUFDaUcsQ0FBQyxDQUFDLDBCQUEwQjtFQUN6QyxDQUFDO0VBQ0QsQ0FBQzRnQyx1REFBZSxHQUFHO0lBQ2pCcnFCLElBQUksRUFBRXFxQix1REFBZTtJQUNyQmgwQixJQUFJLEVBQUU3Uyw2Q0FBSSxDQUFDaUcsQ0FBQyxDQUFDLHdCQUF3QjtFQUN2QyxDQUFDO0VBQ0QsQ0FBQzhnQyx3REFBZ0IsR0FBRztJQUNsQnZxQixJQUFJLEVBQUV1cUIsd0RBQWdCO0lBQ3RCbDBCLElBQUksRUFBRTdTLDZDQUFJLENBQUNpRyxDQUFDLENBQUMseUJBQXlCO0VBQ3hDO0FBQ0YsQ0FBQztBQUNNLE1BQU1xc0Msa0JBQWtCLEdBQUlscEMsTUFBTSxJQUFLO0VBQUEsSUFBQXNrQixhQUFBLEVBQUFDLGNBQUEsRUFBQUMsY0FBQSxFQUFBTyxjQUFBO0VBQzVDLElBQUksQ0FBQy9rQixNQUFNLENBQUMwa0IsU0FBUyxFQUFFLE9BQU9pWix3REFBZ0I7RUFFOUMsSUFBSTM5QixNQUFNLENBQUM0MEIsUUFBUSxLQUFLLENBQUMsRUFBRSxPQUFPZ0oseURBQWlCO0VBRW5ELElBQUksR0FBQXRaLGFBQUEsR0FBQ3RrQixNQUFNLENBQUMyRCxLQUFLLGNBQUEyZ0IsYUFBQSxlQUFaQSxhQUFBLENBQWN2aEIsVUFBVSxLQUFJLEdBQUF3aEIsY0FBQSxHQUFDdmtCLE1BQU0sQ0FBQzJELEtBQUssY0FBQTRnQixjQUFBLGVBQVpBLGNBQUEsQ0FBY3ZoQixTQUFTLEdBQ3ZELE9BQU8wNkIseURBQWlCO0VBRTFCLElBQUkxOUIsTUFBTSxDQUFDMkQsS0FBSyxJQUFJLEVBQUE2Z0IsY0FBQSxHQUFBeGtCLE1BQU0sQ0FBQzJELEtBQUssY0FBQTZnQixjQUFBLHVCQUFaQSxjQUFBLENBQWM3bkIsTUFBTSxNQUFLLFlBQVksRUFDdkQsT0FBTytnQyx5REFBaUI7RUFFMUIsSUFBSTE5QixNQUFNLENBQUMyRCxLQUFLLElBQUksRUFBQW9oQixjQUFBLEdBQUEva0IsTUFBTSxDQUFDMkQsS0FBSyxjQUFBb2hCLGNBQUEsdUJBQVpBLGNBQUEsQ0FBY3BvQixNQUFNLE1BQUssVUFBVSxFQUNyRCxPQUFPOGdDLHVEQUFlO0VBRXhCLE9BQU9DLHlEQUFpQjtBQUMxQixDQUFDO0FBRU0sTUFBTXlMLG1CQUFtQixHQUFHQSxDQUFDbnBDLE1BQU0sRUFBRW9wQyxZQUFZLEtBQ3RESCxVQUFVLENBQUNDLGtCQUFrQixDQUFDbHBDLE1BQU0sRUFBRW9wQyxZQUFZLENBQUMsQ0FBQztBQUUvQyxNQUFNQyxhQUFhLEdBQUlycEMsTUFBTSxJQUFLO0VBQ3ZDLElBQUksQ0FBQ0EsTUFBTSxDQUFDdW9CLEtBQUssRUFBRSxPQUFPLElBQUk7RUFFOUIsTUFBTTtJQUFFQztFQUFTLENBQUMsR0FBR3hvQixNQUFNLENBQUN1b0IsS0FBSztFQUVqQyxJQUFJQyxRQUFRLENBQUMvc0IsTUFBTSxHQUFHLENBQUMsRUFDckIsT0FBTytzQixRQUFRLENBQUM1bkIsR0FBRyxDQUFFMG9DLE9BQU8sSUFBS0EsT0FBTyxDQUFDMXFDLElBQUksQ0FBQyxDQUFDaEQsSUFBSSxDQUFDLElBQUksQ0FBQztFQUUzRCxPQUFPLElBQUk7QUFDYixDQUFDO0FBRU0sTUFBTTJ0QyxhQUFhLEdBQUdBLENBQUN2cEMsTUFBTSxFQUFFNUYsTUFBTSxLQUMxQ0EsTUFBTSxDQUFDNGlCLFlBQVksQ0FBQ2lKLElBQUksQ0FBRTdTLElBQUksSUFBS0EsSUFBSSxDQUFDdlUsRUFBRSxLQUFLbUIsTUFBTSxDQUFDd2xDLGNBQWMsQ0FBQztBQUVoRSxNQUFNaEksa0JBQWtCLEdBQUl4OUIsTUFBTTtFQUFBLElBQUF3NUIscUJBQUE7RUFBQSxPQUN2QyxDQUFBeDVCLE1BQU0sYUFBTkEsTUFBTSx1QkFBTkEsTUFBTSxDQUFFd3BDLFlBQVksSUFBRyxDQUFDLElBQ3hCLENBQUF4cEMsTUFBTSxhQUFOQSxNQUFNLHVCQUFOQSxNQUFNLENBQUV5cEMsZ0JBQWdCLElBQUd6cEMsTUFBTSxDQUFDK3NCLGVBQWUsSUFDakQsRUFBQy9zQixNQUFNLGFBQU5BLE1BQU0sZ0JBQUF3NUIscUJBQUEsR0FBTng1QixNQUFNLENBQUVpQixlQUFlLGNBQUF1NEIscUJBQUEsZUFBdkJBLHFCQUFBLENBQXlCdG1CLElBQUksQ0FDM0J3MkIsRUFBRSxJQUFLQSxFQUFFLENBQUMvc0MsTUFBTSxLQUFLbW5DLGdFQUN4QixDQUFDO0FBQUE7QUFFSSxNQUFNL2hCLGlCQUFpQixHQUFJdGhCLE9BQU8sSUFDdkMsQ0FBQUEsT0FBTyxhQUFQQSxPQUFPLHVCQUFQQSxPQUFPLENBQUUxRixNQUFNLENBQUVpRixNQUFNLElBQUt3OUIsa0JBQWtCLENBQUN4OUIsTUFBTSxDQUFDLENBQUMsQ0FBQ3ZFLE1BQU0sS0FBSSxDQUFDO0FBRTlELE1BQU1rdUMsMkJBQTJCLEdBQUlscEMsT0FBTyxJQUNqREEsT0FBTyxhQUFQQSxPQUFPLHVCQUFQQSxPQUFPLENBQUUxRixNQUFNLENBQUVpRixNQUFNO0VBQUEsSUFBQTRwQyxzQkFBQTtFQUFBLFFBQUFBLHNCQUFBLEdBQ3JCNXBDLE1BQU0sQ0FBQ2lCLGVBQWUsY0FBQTJvQyxzQkFBQSx1QkFBdEJBLHNCQUFBLENBQXdCMTJCLElBQUksQ0FBRXcyQixFQUFFLElBQUtBLEVBQUUsQ0FBQy9zQyxNQUFNLEtBQUttbkMsZ0VBQXdCLENBQUM7QUFBQSxDQUM5RSxDQUFDO0FBQ0ksTUFBTWpZLDRCQUE0QixHQUFJcHJCLE9BQU8sSUFBSztFQUN2RCxNQUFNb3BDLFVBQVUsR0FBRyxFQUFFO0VBQ3JCcHBDLE9BQU8sYUFBUEEsT0FBTyxlQUFQQSxPQUFPLENBQUVHLEdBQUcsQ0FBRVosTUFBTSxJQUFLO0lBQUEsSUFBQThwQyxzQkFBQSxFQUFBQyxzQkFBQSxFQUFBQyxzQkFBQTtJQUN2QixJQUNFLENBQUFGLHNCQUFBLEdBQUE5cEMsTUFBTSxDQUFDaUIsZUFBZSxjQUFBNm9DLHNCQUFBLGVBQXRCQSxzQkFBQSxDQUF3QjUyQixJQUFJLENBQ3pCdzJCLEVBQUUsSUFBS0EsRUFBRSxDQUFDL3NDLE1BQU0sS0FBS21uQyxnRUFDeEIsQ0FBQyxLQUFBaUcsc0JBQUEsR0FDRC9wQyxNQUFNLENBQUNpQixlQUFlLGNBQUE4b0Msc0JBQUEsZUFBdEJBLHNCQUFBLENBQXdCNzJCLElBQUksQ0FDekJ3MkIsRUFBRSxJQUFLQSxFQUFFLENBQUMvc0MsTUFBTSxLQUFLb25DLGlFQUN4QixDQUFDLEtBQUFpRyxzQkFBQSxHQUNEaHFDLE1BQU0sQ0FBQ2lCLGVBQWUsY0FBQStvQyxzQkFBQSxlQUF0QkEsc0JBQUEsQ0FBd0I5MkIsSUFBSSxDQUN6QncyQixFQUFFLElBQUtBLEVBQUUsQ0FBQy9zQyxNQUFNLEtBQUtxbkMsaUVBQ3hCLENBQUMsRUFDRDtNQUNBNkYsVUFBVSxDQUFDeHVDLElBQUksQ0FBQzJFLE1BQU0sQ0FBQztJQUN6QjtJQUNBLE9BQU9BLE1BQU07RUFDZixDQUFDLENBQUM7RUFDRixPQUFPNnBDLFVBQVU7QUFDbkIsQ0FBQztBQUVNLE1BQU1JLDBCQUEwQixHQUFJanFDLE1BQU0sSUFBSztFQUFBLElBQUFrcUMsc0JBQUEsRUFBQUMsc0JBQUEsRUFBQUMsc0JBQUE7RUFDcEQsS0FBQUYsc0JBQUEsR0FDRWxxQyxNQUFNLENBQUNpQixlQUFlLGNBQUFpcEMsc0JBQUEsZUFBdEJBLHNCQUFBLENBQXdCaDNCLElBQUksQ0FBRXcyQixFQUFFLElBQUtBLEVBQUUsQ0FBQy9zQyxNQUFNLEtBQUttbkMsZ0VBQXdCLENBQUMsRUFFNUUsT0FBT0gsNkRBQXFCO0VBQzlCLEtBQUF3RyxzQkFBQSxHQUNFbnFDLE1BQU0sQ0FBQ2lCLGVBQWUsY0FBQWtwQyxzQkFBQSxlQUF0QkEsc0JBQUEsQ0FBd0JqM0IsSUFBSSxDQUN6QncyQixFQUFFLElBQUtBLEVBQUUsQ0FBQy9zQyxNQUFNLEtBQUtvbkMsaUVBQ3hCLENBQUMsRUFFRCxPQUFPSCw4REFBc0I7RUFDL0IsS0FBQXdHLHNCQUFBLEdBQ0VwcUMsTUFBTSxDQUFDaUIsZUFBZSxjQUFBbXBDLHNCQUFBLGVBQXRCQSxzQkFBQSxDQUF3QmwzQixJQUFJLENBQ3pCdzJCLEVBQUUsSUFBS0EsRUFBRSxDQUFDL3NDLE1BQU0sS0FBS3FuQyxpRUFDeEIsQ0FBQyxFQUVELE9BQU9ILDhEQUFzQjtFQUMvQixPQUFPRiw2REFBcUI7QUFDOUIsQ0FBQztBQUVNLE1BQU1oVyw2QkFBNkIsR0FBSTN0QixNQUFNLElBQUs7RUFDdkQsTUFBTXJELE1BQU0sR0FBR3N0QywwQkFBMEIsQ0FBQ2pxQyxNQUFNLENBQUM7RUFDakQsSUFBSTR0QixXQUFXLEdBQUcsRUFBRTtFQUNwQixRQUFRanhCLE1BQU07SUFDWixLQUFLZ25DLDZEQUFxQjtNQUN4Qi9WLFdBQVcsR0FBRyxTQUFTO01BQ3ZCO0lBQ0YsS0FBS2dXLDhEQUFzQjtNQUN6QmhXLFdBQVcsR0FBRyxVQUFVO01BQ3hCO0lBQ0YsS0FBS2lXLDhEQUFzQjtNQUN6QmpXLFdBQVcsR0FBRyxVQUFVO01BQ3hCO0lBQ0Y7TUFDRUEsV0FBVyxHQUFHLFNBQVM7RUFDM0I7RUFDQSxPQUFPQSxXQUFXO0FBQ3BCLENBQUM7QUFFTSxNQUFNeWMsaUJBQWlCLEdBQUdBLENBQUNqM0IsSUFBSSxFQUFFeFUsSUFBSSxFQUFFeUosVUFBVSxLQUFLO0VBQzNELElBQUlpaUMsTUFBTTtFQUNWLFFBQVFsM0IsSUFBSTtJQUNWLEtBQUs1Qiw2RkFBcUI7TUFDeEI4NEIsTUFBTSxHQUFHMVgscUNBQVEsQ0FBQyxDQUFDLENBQUMyWCxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRTN6Qyw2Q0FBSSxDQUFDaUcsQ0FBQyxDQUFDLDhCQUE4QixDQUFDLENBQUM7TUFDekU7SUFDRixLQUFLK1Usb0dBQTRCO01BQy9CMDRCLE1BQU0sR0FBRzFYLHVDQUFVLFVBQUF0M0IsTUFBQSxDQUFVc0QsSUFBSSxDQUFFLENBQUM7TUFDcEM7SUFDRixLQUFLNlMsaUdBQXlCO01BQzVCNjRCLE1BQU0sR0FBRzFYLHNDQUFTLENBQUMsQ0FBQyxDQUFDNFgsRUFBRSxDQUFDNVgsdUNBQVUsQ0FBQyxDQUFDLENBQUM7TUFDckMsSUFBSXZxQixVQUFVLEVBQUVpaUMsTUFBTSxHQUFHQSxNQUFNLENBQUNoTyxHQUFHLENBQUNpSCxvREFBWSxLQUFBam9DLE1BQUEsQ0FBS3NELElBQUksaUJBQWMsQ0FBQztNQUN4RTtJQUNGLEtBQUsrUyxvR0FBNEI7SUFDakMsS0FBS0QsNkZBQXFCO01BQ3hCNDRCLE1BQU0sR0FBRzFYLHVDQUFVLFVBQUF0M0IsTUFBQSxDQUFVc0QsSUFBSSxDQUFFLENBQUM7TUFDcEM7SUFDRjtNQUNFMHJDLE1BQU0sR0FBRzFYLHVDQUFVLFVBQUF0M0IsTUFBQSxDQUFVc0QsSUFBSSxDQUFFLENBQUM7TUFDcEM7RUFDSjtFQUVBLElBQUl5SixVQUFVLEVBQUU7SUFDZGlpQyxNQUFNLEdBQUdBLE1BQU0sQ0FBQ3I2QixRQUFRLElBQUEzVSxNQUFBLENBQUlzRCxJQUFJLGlCQUFjLENBQUM7RUFDakQ7RUFFQSxPQUFPMHJDLE1BQU07QUFDZixDQUFDO0FBRUQsTUFBTUcsc0JBQXNCLEdBQUdBLENBQzdCOTNCLENBQUMsRUFDRHhQLE9BQU8sRUFDUDJQLE1BQU0sRUFDTitmLGFBQWEsRUFDYjZYLFlBQVksS0FDVDtFQUFBLElBQUE3MUIscUJBQUE7RUFDSCxJQUFJLEVBQUFBLHFCQUFBLEdBQUFsQyxDQUFDLENBQUMwQyxrQkFBa0IsY0FBQVIscUJBQUEsdUJBQXBCQSxxQkFBQSxDQUFzQnBaLE1BQU0sSUFBRyxDQUFDLEVBQUU7SUFDcENrWCxDQUFDLENBQUMwQyxrQkFBa0IsQ0FBQ3BZLE9BQU8sQ0FBRTZVLElBQUksSUFBSztNQUNyQyxNQUFNO1FBQUU4QyxZQUFZO1FBQUU3QztNQUFjLENBQUMsR0FBR0QsSUFBSTtNQUM1QyxNQUFNNjRCLGVBQWUsR0FBR3I4Qix5RkFBTSxDQUFDc0csWUFBWSxDQUFDaFcsSUFBSSxFQUFFZ1csWUFBWSxDQUFDL1YsRUFBRSxDQUFDO01BQ2xFLE1BQU0rckMsU0FBUyxHQUFHem5DLE9BQU8sQ0FBQ3duQyxlQUFlLENBQUM7TUFDMUMsTUFBTUUsS0FBSyxHQUFHOTNCLG9HQUFpQixDQUFDRCxNQUFNLEVBQUVmLGFBQWEsQ0FBQztNQUV0RCxJQUFJLENBQUMyNEIsWUFBWSxJQUFJRyxLQUFLLEVBQUU7UUFDMUJoWSxhQUFhLENBQUM4WCxlQUFlLENBQUMsR0FDNUJDLFNBQVMsSUFBSXozQixzR0FBbUIsQ0FBQ3lCLFlBQVksQ0FBQztNQUNsRDtNQUVBNjFCLHNCQUFzQixDQUNwQjcxQixZQUFZLEVBQ1p6UixPQUFPLEVBQ1B5bkMsU0FBUyxFQUNUL1gsYUFBYSxFQUNiNlgsWUFDRixDQUFDO0lBQ0gsQ0FBQyxDQUFDO0VBQ0o7QUFDRixDQUFDO0FBRU0sTUFBTWpTLFlBQVksR0FBRyxTQUFBQSxDQUMxQjkwQixLQUFLLEVBQ0x2SyxjQUFjLEVBQ2QrSixPQUFPLEVBQ1AybkMsbUJBQW1CLEVBQ25CQyxpQkFBaUIsRUFFZDtFQUFBLElBREhMLFlBQVksR0FBQTdtQyxTQUFBLENBQUFwSSxNQUFBLFFBQUFvSSxTQUFBLFFBQUFDLFNBQUEsR0FBQUQsU0FBQSxNQUFHLEtBQUs7RUFFcEIsTUFBTWd2QixhQUFhLEdBQUcsQ0FBQyxDQUFDO0VBRXhCLElBQUlpWSxtQkFBbUIsRUFBRTtJQUN2QmpZLGFBQWEsQ0FBQy81QixvRkFBb0IsQ0FBQ0MsS0FBSyxDQUFDLEdBQ3ZDb0ssT0FBTyxDQUFDckssb0ZBQW9CLENBQUNDLEtBQUssQ0FBQyxJQUFJNEssS0FBSyxDQUFDNUssS0FBSyxJQUFJLEVBQUU7SUFDMUQ4NUIsYUFBYSxDQUFDLzVCLG9GQUFvQixDQUFDRSxTQUFTLENBQUMsR0FDM0NtSyxPQUFPLENBQUNySyxvRkFBb0IsQ0FBQ0UsU0FBUyxDQUFDLElBQUkySyxLQUFLLENBQUNaLFVBQVUsSUFBSSxFQUFFO0lBQ25FOHZCLGFBQWEsQ0FBQy81QixvRkFBb0IsQ0FBQ0csUUFBUSxDQUFDLEdBQzFDa0ssT0FBTyxDQUFDckssb0ZBQW9CLENBQUNHLFFBQVEsQ0FBQyxJQUFJMEssS0FBSyxDQUFDWCxTQUFTLElBQUksRUFBRTtJQUNqRTZ2QixhQUFhLENBQUMvNUIsb0ZBQW9CLENBQUNJLE9BQU8sQ0FBQyxHQUN6Q2lLLE9BQU8sQ0FBQ3JLLG9GQUFvQixDQUFDSSxPQUFPLENBQUMsSUFBSXlLLEtBQUssQ0FBQ3pLLE9BQU87RUFDMUQ7RUFFQSxJQUFJNnhDLGlCQUFpQixFQUFFO0lBQ3JCbFksYUFBYSxDQUFDLzVCLG9GQUFvQixDQUFDSyxrQkFBa0IsQ0FBQyxHQUNwRGdLLE9BQU8sQ0FBQ3JLLG9GQUFvQixDQUFDSyxrQkFBa0IsQ0FBQyxJQUNoRHdLLEtBQUssQ0FBQzZQLG1CQUFtQjtFQUM3QjtFQUVBcGEsY0FBYyxDQUFDNkQsT0FBTyxDQUFFMFYsQ0FBQyxJQUFLO0lBQzVCLE1BQU0zRCxZQUFZLEdBQUdWLHlGQUFNLENBQUNxRSxDQUFDLENBQUMvVCxJQUFJLEVBQUUrVCxDQUFDLENBQUM5VCxFQUFFLENBQUM7SUFDekMsTUFBTWlVLE1BQU0sR0FBRzNQLE9BQU8sQ0FBQzZMLFlBQVksQ0FBQztJQUNwQzZqQixhQUFhLENBQUM3akIsWUFBWSxDQUFDLEdBQUc4RCxNQUFNLElBQUlLLHNHQUFtQixDQUFDUixDQUFDLENBQUM7SUFFOUQ4M0Isc0JBQXNCLENBQUM5M0IsQ0FBQyxFQUFFeFAsT0FBTyxFQUFFMlAsTUFBTSxFQUFFK2YsYUFBYSxFQUFFNlgsWUFBWSxDQUFDO0VBQ3pFLENBQUMsQ0FBQztFQUVGLE9BQU83WCxhQUFhO0FBQ3RCLENBQUM7QUFFRCxNQUFNbVksZ0NBQWdDLEdBQUdBLENBQUNoOEIsWUFBWSxFQUFFOEMsSUFBSSxFQUFFdzRCLE1BQU0sS0FBSztFQUFBLElBQUFXLHFCQUFBO0VBQ3ZFLE1BQU1DLFdBQVcsR0FBR3A1QixJQUFJLENBQUM4QyxZQUFZO0VBQ3JDLE1BQU0rMUIsZUFBZSxHQUFHcjhCLHlGQUFNLENBQUM0OEIsV0FBVyxDQUFDdHNDLElBQUksRUFBRXNzQyxXQUFXLENBQUNyc0MsRUFBRSxDQUFDO0VBRWhFeXJDLE1BQU0sQ0FBQ0ssZUFBZSxDQUFDLEdBQUdOLGlCQUFpQixDQUN6Q2EsV0FBVyxDQUFDOTNCLElBQUksRUFDaEI4M0IsV0FBVyxDQUFDdHNDLElBQUksRUFDaEIsS0FDRixDQUFDLENBQ0V1c0MsUUFBUSxDQUFDLENBQUMsQ0FDVkMsSUFBSSxDQUFDcDhCLFlBQVksRUFBRTtJQUNsQnE4QixFQUFFLEVBQUdDLFdBQVcsSUFBSztNQUNuQixNQUFNQyxhQUFhLEdBQUd4NEIsb0dBQWlCLENBQ3JDdTRCLFdBQVcsRUFDWHg1QixJQUFJLENBQUNDLGFBQ1AsQ0FBQztNQUNEO01BQ0EsTUFBTTJDLFNBQVMsR0FBRyxDQUFDLENBQUN0UCxRQUFRLENBQUNnNEIsY0FBYyxJQUFBOWhDLE1BQUEsQ0FDdEMwVCxZQUFZLGVBQ2pCLENBQUM7TUFDRCxPQUFPdThCLGFBQWEsSUFBSTcyQixTQUFTO0lBQ25DLENBQUM7SUFDRDVWLElBQUksRUFBRzBzQyxHQUFHLElBQUs7TUFDYixJQUFJTixXQUFXLENBQUM5M0IsSUFBSSxLQUFLM0IsaUdBQXlCLEVBQUU7UUFDbEQsT0FBTys1QixHQUFHLENBQ1BsUCxHQUFHLENBQUNpSCxvREFBWSxFQUFFM3NDLDZDQUFJLENBQUNpRyxDQUFDLENBQUMsOEJBQThCLENBQUMsQ0FBQyxDQUN6RG9ULFFBQVEsQ0FBQ3JaLDZDQUFJLENBQUNpRyxDQUFDLENBQUMsOEJBQThCLENBQUMsQ0FBQztNQUNyRDtNQUNBLE9BQU8ydUMsR0FBRyxDQUFDdjdCLFFBQVEsQ0FBQ3JaLDZDQUFJLENBQUNpRyxDQUFDLENBQUMsOEJBQThCLENBQUMsQ0FBQztJQUM3RDtFQUNGLENBQUMsQ0FBQztFQUVKLElBQUksRUFBQW91QyxxQkFBQSxHQUFBQyxXQUFXLENBQUM3MUIsa0JBQWtCLGNBQUE0MUIscUJBQUEsdUJBQTlCQSxxQkFBQSxDQUFnQ3h2QyxNQUFNLElBQUcsQ0FBQyxFQUFFO0lBQzlDeXZDLFdBQVcsQ0FBQzcxQixrQkFBa0IsQ0FBQ3BZLE9BQU8sQ0FBRXd1QyxPQUFPLElBQUs7TUFDbERULGdDQUFnQyxDQUFDTCxlQUFlLEVBQUVjLE9BQU8sRUFBRW5CLE1BQU0sQ0FBQztJQUNwRSxDQUFDLENBQUM7RUFDSjtBQUNGLENBQUM7QUFFTSxNQUFNNVIscUJBQXFCLEdBQUdBLENBQ25DdC9CLGNBQWMsRUFDZDB4QyxtQkFBbUIsRUFDbkJZLG1CQUFtQixLQUNoQjtFQUNILE1BQU1wQixNQUFNLEdBQUcsQ0FBQyxDQUFDO0VBRWpCLElBQUlRLG1CQUFtQixFQUFFO0lBQ3ZCUixNQUFNLENBQUN4eEMsb0ZBQW9CLENBQUNDLEtBQUssQ0FBQyxHQUFHNjVCLHVDQUM1QixDQUFDaDhCLDZDQUFJLENBQUNpRyxDQUFDLENBQUMseUJBQXlCLENBQUMsQ0FBQyxDQUN6QzlELEtBQUssQ0FBQ25DLDZDQUFJLENBQUNpRyxDQUFDLENBQUMseUJBQXlCLENBQUMsQ0FBQyxDQUN4Q29ULFFBQVEsQ0FBQ3JaLDZDQUFJLENBQUNpRyxDQUFDLENBQUMsMkJBQTJCLENBQUMsQ0FBQztJQUNoRHl0QyxNQUFNLENBQUN4eEMsb0ZBQW9CLENBQUNFLFNBQVMsQ0FBQyxHQUFHNDVCLHVDQUNoQyxDQUFDaDhCLDZDQUFJLENBQUNpRyxDQUFDLENBQUMsOEJBQThCLENBQUMsQ0FBQyxDQUM5Q29ULFFBQVEsQ0FBQ3JaLDZDQUFJLENBQUNpRyxDQUFDLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztJQUNyRHl0QyxNQUFNLENBQUN4eEMsb0ZBQW9CLENBQUNHLFFBQVEsQ0FBQyxHQUFHMjVCLHVDQUMvQixDQUFDaDhCLDZDQUFJLENBQUNpRyxDQUFDLENBQUMsNkJBQTZCLENBQUMsQ0FBQyxDQUM3Q29ULFFBQVEsQ0FBQ3JaLDZDQUFJLENBQUNpRyxDQUFDLENBQUMsK0JBQStCLENBQUMsQ0FBQztJQUNwRHl0QyxNQUFNLENBQUN4eEMsb0ZBQW9CLENBQUNJLE9BQU8sQ0FBQyxHQUFHMDVCLHFDQUFRLENBQUV4MUIsS0FBSyxJQUNwRCxPQUFPQSxLQUFLLEtBQUssUUFBUSxHQUNyQncxQix1Q0FDUyxDQUFDLENBQUMsQ0FDUjNpQixRQUFRLENBQUNyWiw2Q0FBSSxDQUFDaUcsQ0FBQyxDQUFDLDZCQUE2QixDQUFDLENBQUMsQ0FDL0MrdUMsU0FBUyxDQUFDaDFDLDZDQUFJLENBQUNpRyxDQUFDLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxHQUNqRCsxQix1Q0FBVSxDQUFDLENBQUMsQ0FBQzNpQixRQUFRLENBQUNyWiw2Q0FBSSxDQUFDaUcsQ0FBQyxDQUFDLDZCQUE2QixDQUFDLENBQ2pFLENBQUM7RUFDSDtFQUVBLElBQUk2dUMsbUJBQW1CLEVBQUU7SUFDdkJwQixNQUFNLENBQUN4eEMsb0ZBQW9CLENBQUNLLGtCQUFrQixDQUFDLEdBQUd5NUIscUNBQzNDLENBQUMsQ0FBQyxDQUNOMlgsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUzekMsNkNBQUksQ0FBQ2lHLENBQUMsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO0VBQzFEO0VBRUF6RCxjQUFjLENBQUM2RCxPQUFPLENBQUUwVixDQUFDLElBQUs7SUFDNUIsTUFBTTtNQUFFOVQsRUFBRTtNQUFFRCxJQUFJO01BQUV3VSxJQUFJO01BQUVsRSxTQUFTO01BQUVtRztJQUFtQixDQUFDLEdBQUcxQyxDQUFDO0lBQzNELE1BQU0zRCxZQUFZLEdBQUdWLHlGQUFNLENBQUMxUCxJQUFJLEVBQUVDLEVBQUUsQ0FBQztJQUNyQ3lyQyxNQUFNLENBQUN0N0IsWUFBWSxDQUFDLEdBQUdxN0IsaUJBQWlCLENBQUNqM0IsSUFBSSxFQUFFeFUsSUFBSSxFQUFFc1EsU0FBUyxDQUFDO0lBRS9ELElBQUksQ0FBQW1HLGtCQUFrQixhQUFsQkEsa0JBQWtCLHVCQUFsQkEsa0JBQWtCLENBQUU1WixNQUFNLElBQUcsQ0FBQyxFQUFFO01BQ2xDNFosa0JBQWtCLENBQUNwWSxPQUFPLENBQUU2VSxJQUFJLElBQUs7UUFDbkNrNUIsZ0NBQWdDLENBQUNoOEIsWUFBWSxFQUFFOEMsSUFBSSxFQUFFdzRCLE1BQU0sQ0FBQztNQUM5RCxDQUFDLENBQUM7SUFDSjtFQUNGLENBQUMsQ0FBQztFQUVGLE9BQU8xWCx1Q0FBVSxDQUFDMFgsTUFBTSxDQUFDO0FBQzNCLENBQUM7QUFFTSxNQUFNaEwsc0JBQXNCLEdBQUdBLENBQUM3K0IsT0FBTyxFQUFFVCxNQUFNLEtBQ3BEUyxPQUFPLENBQUNHLEdBQUcsQ0FBRS9ELENBQUMsSUFBSztFQUFBLElBQUFndkMsUUFBQSxFQUFBN21CLGNBQUEsRUFBQThtQixTQUFBLEVBQUFDLGNBQUE7RUFDakIsTUFBTUMsU0FBUyxHQUFBbHFDLGFBQUEsS0FBUWpGLENBQUMsQ0FBRTtFQUMxQjtFQUNBLElBQ0UsRUFBQWd2QyxRQUFBLEdBQUFodkMsQ0FBQyxDQUFDOEcsS0FBSyxjQUFBa29DLFFBQUEsdUJBQVBBLFFBQUEsQ0FBU2h0QyxFQUFFLFFBQUFtbUIsY0FBQSxHQUFLaGxCLE1BQU0sQ0FBQzJELEtBQUssY0FBQXFoQixjQUFBLHVCQUFaQSxjQUFBLENBQWNubUIsRUFBRSxLQUNoQyxFQUFBaXRDLFNBQUEsR0FBQWp2QyxDQUFDLENBQUM4RyxLQUFLLGNBQUFtb0MsU0FBQSx1QkFBUEEsU0FBQSxDQUFTbnZDLE1BQU0sUUFBQW92QyxjQUFBLEdBQUsvckMsTUFBTSxDQUFDMkQsS0FBSyxjQUFBb29DLGNBQUEsdUJBQVpBLGNBQUEsQ0FBY3B2QyxNQUFNLEdBQ3hDO0lBQ0FxdkMsU0FBUyxDQUFDcm9DLEtBQUssR0FBRzNELE1BQU0sQ0FBQzJELEtBQUs7RUFDaEM7RUFDQSxPQUFPOUcsQ0FBQyxDQUFDZ0MsRUFBRSxLQUFLbUIsTUFBTSxDQUFDbkIsRUFBRSxHQUFHbUIsTUFBTSxHQUFHZ3NDLFNBQVM7QUFDaEQsQ0FBQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FDL1ZKO0FBQ0E7QUFDQTtBQUNBO0FBQzRGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNKNUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNpRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDTGpGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDb2tCOzs7Ozs7Ozs7Ozs7Ozs7OztBQ3ZCcGtCO0FBQ0E7QUFDQTtBQUNBO0FBQzZEOzs7Ozs7Ozs7Ozs7Ozs7QUNKN0Q7QUFDQTtBQUM2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNGN0I7QUFDQTtBQUNBO0FBQ0E7QUFDc0Y7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0p0RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQzRFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNMNUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNpTjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNSak47QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDMHFCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzVCMXFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ3FlOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN0QnJlO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDMkU7Ozs7Ozs7Ozs7Ozs7Ozs7QUNMM0U7QUFDQTtBQUNBO0FBQ3dEOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0h4RDtBQUNBO0FBQ0E7QUFDQTtBQUN3RTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0p4RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZ0g7Ozs7Ozs7Ozs7Ozs7OztBQ05oSDtBQUNBO0FBQzBDOzs7Ozs7Ozs7Ozs7Ozs7QUNGMUM7QUFDQTtBQUMwQjs7Ozs7Ozs7Ozs7Ozs7OztBQ0YxQjtBQUNBO0FBQ0E7QUFDNEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDSDVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQzhYOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNuQjlYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZ007Ozs7Ozs7Ozs7Ozs7Ozs7O0FDUmhNO0FBQ0E7QUFDQTtBQUNBO0FBQ2dFOzs7Ozs7Ozs7Ozs7Ozs7QUNKaEU7QUFDQTtBQUNtQzs7Ozs7Ozs7Ozs7QUNGbkM7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztVQ0FBO1VBQ0E7O1VBRUE7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7O1VBRUE7VUFDQTs7VUFFQTtVQUNBO1VBQ0E7Ozs7O1dDdEJBO1dBQ0E7V0FDQTtXQUNBO1dBQ0E7V0FDQSxpQ0FBaUMsV0FBVztXQUM1QztXQUNBOzs7OztXQ1BBO1dBQ0E7V0FDQTtXQUNBO1dBQ0EseUNBQXlDLHdDQUF3QztXQUNqRjtXQUNBO1dBQ0E7Ozs7O1dDUEE7Ozs7O1dDQUE7V0FDQTtXQUNBO1dBQ0EsdURBQXVELGlCQUFpQjtXQUN4RTtXQUNBLGdEQUFnRCxhQUFhO1dBQzdEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ05BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUN5QztBQUNOO0FBQ0k7QUFDdUI7QUFDVDtBQUNkO0FBQ2tCO0FBRUY7QUFBQTtBQUV2RCxNQUFNRSx1QkFBdUIsR0FBSXRsQyxLQUFLLElBQUs7RUFDekMsTUFBTTtJQUNKbzdCLFFBQVE7SUFDUm1LLFlBQVk7SUFDWi94QyxNQUFNO0lBQ042RCxVQUFVO0lBQ1Y1RCxJQUFJO0lBQ0owbkMsUUFBUTtJQUNSei9CO0VBQ0YsQ0FBQyxHQUFHc0UsS0FBSztFQUVULE1BQU07SUFBRXM3QixLQUFLO0lBQUVXO0VBQVUsQ0FBQyxHQUFHRixvREFBWSxDQUFDO0lBQ3hDWCxRQUFRO0lBQ1JtSyxZQUFZO0lBQ1oveEMsTUFBTTtJQUNOQyxJQUFJO0lBQ0o0RCxVQUFVO0lBQ1Y4akMsUUFBUTtJQUNSei9CO0VBQ0YsQ0FBQyxDQUFDO0VBRUYsTUFBTThwQyxnQkFBZ0IsR0FBR0EsQ0FBQSxLQUFNO0lBQzdCLE1BQU1odUMsTUFBTSxHQUFHLElBQUlpdUMsZUFBZSxDQUFDOW1DLE1BQU0sQ0FBQzRpQyxRQUFRLENBQUNtRSxNQUFNLENBQUM7SUFDMUQsTUFBTUMsS0FBSyxHQUFHbnVDLE1BQU0sQ0FBQ291QyxHQUFHLENBQUMsWUFBWSxDQUFDO0lBQ3RDLElBQUlELEtBQUssRUFBRXJLLEtBQUssQ0FBQ25vQyxRQUFRLENBQUM7TUFBRXFaLElBQUksRUFBRS9iLGlEQUFXO01BQUU4RSxPQUFPLEVBQUU7SUFBSyxDQUFDLENBQUM7RUFDakUsQ0FBQztFQUVEK2EsZ0RBQVMsQ0FBQyxNQUFNO0lBQ2RnckIsS0FBSyxDQUFDbm9DLFFBQVEsQ0FBQ0kseURBQWUsQ0FBQ0MsTUFBTSxFQUFFQyxJQUFJLENBQUMsQ0FBQztFQUMvQyxDQUFDLEVBQUUsQ0FBQ0QsTUFBTSxFQUFFQyxJQUFJLENBQUMsQ0FBQztFQUVsQixvQkFDRStMLHNEQUFBLENBQUNtMUIsaURBQVE7SUFBQzJHLEtBQUssRUFBRUEsS0FBTTtJQUFBeDZCLFFBQUEsZUFDckJ0QixzREFBQSxDQUFDNmxDLHdFQUFXO01BQ1ZRLFlBQVksRUFBRUwsZ0JBQWlCO01BQy9CcHNCLE9BQU8sRUFBRSxJQUFLO01BQ2Q2aUIsU0FBUyxFQUFFQSxTQUFVO01BQUFuN0IsUUFBQSxlQUVyQnRCLHNEQUFBLENBQUMwbkIsK0RBQW9CO1FBQUMyQixXQUFXO1FBQUEvbkIsUUFBQSxlQUMvQnRCLHNEQUFBLENBQUM0MEIsaUVBQWEsSUFBRTtNQUFDLENBQ0c7SUFBQyxDQUNaO0VBQUMsQ0FDTixDQUFDO0FBRWYsQ0FBQztBQUVEa1IsdUJBQXVCLENBQUMvakMsU0FBUyxHQUFHO0VBQ2xDNjVCLFFBQVEsRUFBRS83QiwwREFBZ0I7RUFDMUJrbUMsWUFBWSxFQUFFbG1DLDBEQUFnQjtFQUM5QjdMLE1BQU0sRUFBRTZMLDBEQUFnQjtFQUN4QmhJLFVBQVUsRUFBRWdJLDBEQUFnQjtFQUM1QjVMLElBQUksRUFBRTRMLDBEQUFnQjtFQUN0Qjg3QixRQUFRLEVBQUU5N0IsMERBQWdCO0VBQzFCM0QsYUFBYSxFQUFFMkQsd0RBQWMrRjtBQUMvQixDQUFDO0FBRUQsaUVBQWVrZ0MsdUJBQXVCLEUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9hY3Rpb25zLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0JhZGdlRmVhdHVyZUljb24vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvQ29uZmlybURpYWxvZy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9Db3B5VGV4dC9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9DdXN0b21Ob3RpZmljYXRpb24vQ29udGV4dC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9DdXN0b21Ob3RpZmljYXRpb24vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvQ3VzdG9tVGhlbWUuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy9DaGVja2JveExpc3RRdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvQ2hlY2tib3hRdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvRHJvcGRvd25RdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvUmFkaW9MaXN0UXVlc3Rpb25GaWVsZC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL1RleHRRdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvdXRpbHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29uc3RhbnRzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvQXNzaWduZWRGaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9CYWRnZUZlYXR1cmVGaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9GaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9GcmVlUGFpZEZpbHRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL1Byb21vQ29kZUZpbHRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL1NlYXJjaC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL1NvcnQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9TdGF0dXNGaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9UaWNrZXRUeXBlRmlsdGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRm9ybUZvb3Rlci9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9MYWJlbHMvRXJyb3JMYWJlbC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9Mb2FkZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTXlPcmRlcnNUaWNrZXRzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL05vVGlja2V0c0ZvdW5kL1RpY2tldHNJY29uLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL05vVGlja2V0c0ZvdW5kL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyU3VtbWFyeS9PcmRlclN1bW1hcnlUYWJsZS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlclN1bW1hcnkvUmVmdW5kRW1haWxTdXBwb3J0LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyU3VtbWFyeS9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L0Fzc2lnbmVkVG9NZS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L0F0dGVuZGVlU3RhdHVzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvT3JkZXJMaXN0SXRlbS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L09yZGVyTGlzdFRpY2tldHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9PcmRlcnNMaXN0RGVza3RvcE1vYmlsZS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JlZnVuZFJlcXVlc3RzL1JlZnVuZERldGFpbHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmVmdW5kUmVxdWVzdHMvUmVmdW5kUmVxdWVzdGVkVGlja2V0LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JlZnVuZFJlcXVlc3RzL1JlZnVuZFN0YXR1cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SZWZ1bmRSZXF1ZXN0cy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SaWdodERyYXdlci9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9TdW1taXRIZWFkZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGFiV3JhcHBlci9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRBc3NpZ24vY29tcG9uZW50cy9Bc3NpZ25PcHRpb25zL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9jb21wb25lbnRzL0RlbGVnYXRlRm9ybS9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRBc3NpZ24vY29tcG9uZW50cy9IZWFkZXIvQXNzaWduSGVhZGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9jb21wb25lbnRzL0hlYWRlci9SZWFzc2lnbkhlYWRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRBc3NpZ24vY29tcG9uZW50cy9SZWFzc2lnbkZvcm0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0QXNzaWduL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL0NvbXBhbnlGaWVsZC9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9SZWdpc3RyYXRpb25EaXNjbGFpbWVyL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsSGVhZGVyL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL1RpY2tldEZvcm0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvVGlja2V0T3duZXJGaWVsZHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbnN0YW50cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0U3RhdHVzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1dpZGdldFRhYnMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvV2lkZ2V0V3JhcHBlci9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvaG9va3MvdXNlR2V0VGlja2V0LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9ob29rcy91c2VTY3JvbGxUb0Vycm9yLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9ob29rcy91c2VUaWNrZXREZXRhaWxzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9pMThuL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9yZWR1Y2VyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9zdG9yZS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvYXV0aC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvY29uc3RhbnRzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy91dGlscy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvc3VtbWl0VXRpbHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3V0aWxzL3RpY2tldFV0aWxzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0JhZGdlRmVhdHVyZUljb24vc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0NvcHlUZXh0L3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9Gb3JtRm9vdGVyL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9MYWJlbHMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL015T3JkZXJzVGlja2V0cy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTm9UaWNrZXRzRm91bmQvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyU3VtbWFyeS9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmVmdW5kUmVxdWVzdHMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JpZ2h0RHJhd2VyL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9TdW1taXRIZWFkZXIvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9jb21wb25lbnRzL0Fzc2lnbk9wdGlvbnMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9jb21wb25lbnRzL0hlYWRlci9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0QXNzaWduL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9SZWdpc3RyYXRpb25EaXNjbGFpbWVyL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9UaWNrZXRPd25lckZpZWxkcy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRTdGF0dXMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1dpZGdldFRhYnMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1dpZGdldFdyYXBwZXIvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2hlY2tDaXJjbGVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Nsb3NlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9Db250ZW50Q29weVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXJyb3JcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0V4cGFuZE1vcmVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ZpbHRlckxpc3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ltcG9ydEV4cG9ydFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvSW5mb1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvU2VhcmNoXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvQnV0dG9uXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9DaGVja2JveFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvRGlhbG9nXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9EaWFsb2dBY3Rpb25zXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9EaWFsb2dDb250ZW50XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9EaWFsb2dDb250ZW50VGV4dFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvRGlhbG9nVGl0bGVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL0RpdmlkZXJcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL0lucHV0QmFzZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL1RhYlwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvVGFic1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvVG9vbHRpcFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC91c2VNZWRpYVF1ZXJ5XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQHJlZHV4anMvdG9vbGtpdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBzZW50cnkvcmVhY3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJmb3JtaWtcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJpMThuZXh0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiaTE4bmV4dC1icm93c2VyLWxhbmd1YWdlZGV0ZWN0b3JcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJpZHRva2VuLXZlcmlmaWVyXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwibW9tZW50LXRpbWV6b25lXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9jb21wb25lbnRzL3Jhdy1odG1sXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9hY3Rpb25zXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9tZXRob2RzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9hY3Rpb25zXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9tZXRob2RzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9xdWVyeS1hY3Rpb25zXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicC1saW1pdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInByb3AtdHlwZXNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0LWkxOG5leHRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC1pbmZpbml0ZS1zY3JvbGwtY29tcG9uZW50XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QtcXItY29kZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0LXJlZHV4XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QvanN4LXJ1bnRpbWVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWR1eFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlZHV4LXBlcnNpc3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWR1eC1wZXJzaXN0L2ludGVncmF0aW9uL3JlYWN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVkdXgtcGVyc2lzdC9saWIvc3RvcmFnZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInl1cFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay9ydW50aW1lL2NvbXBhdCBnZXQgZGVmYXVsdCBleHBvcnQiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay9ydW50aW1lL21ha2UgbmFtZXNwYWNlIG9iamVjdCIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFwibXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0XCIsIFtdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcIm15LW9yZGVycy10aWNrZXRzLXdpZGdldFwiXSA9IGZhY3RvcnkoKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJteS1vcmRlcnMtdGlja2V0cy13aWRnZXRcIl0gPSBmYWN0b3J5KCk7XG59KSh0aGlzLCAoKSA9PiB7XG5yZXR1cm4gIiwiaW1wb3J0IHtcbiAgYXV0aEVycm9ySGFuZGxlcixcbiAgY3JlYXRlQWN0aW9uLFxuICBkZWxldGVSZXF1ZXN0LFxuICBnZXRSZXF1ZXN0LFxuICBwdXRSZXF1ZXN0LFxuICBzdGFydExvYWRpbmcsXG4gIHN0b3BMb2FkaW5nXG59IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL2FjdGlvbnNcIjtcbmltcG9ydCBwTGltaXQgZnJvbSBcInAtbGltaXRcIjtcbmltcG9ydCB7IGdldElkVG9rZW4gfSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9tZXRob2RzXCI7XG5pbXBvcnQgeyBvYmplY3RUb1F1ZXJ5U3RyaW5nIH0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvbWV0aG9kc1wiO1xuaW1wb3J0IElkVG9rZW5WZXJpZmllciBmcm9tIFwiaWR0b2tlbi12ZXJpZmllclwiO1xuaW1wb3J0IGkxOG4gZnJvbSBcImkxOG5leHRcIjtcbmltcG9ydCB7IGF1dGhQcm9taXNlUmVqZWN0LCBnZXRBY2Nlc3NUb2tlblNhZmVseSB9IGZyb20gXCIuL3V0aWxzL2F1dGhcIjtcbmltcG9ydCB7XG4gIERFRkFVTFRfSVRFTVNfUEVSX1BBR0UsXG4gIEVSUk9SX0NPREVTLFxuICBGSUZUWV9QRVJfUEFHRSxcbiAgRklMVEVSX0FDVElPTixcbiAgRklSU1RfUEFHRSxcbiAgUFJPTUlTRV9CQVRDSF9MSU1JVFxufSBmcm9tIFwiLi91dGlscy9jb25zdGFudHNcIjtcblxuZXhwb3J0IGNvbnN0IFJFU0VUX1NUQVRFID0gXCJSRVNFVF9TVEFURVwiO1xuZXhwb3J0IGNvbnN0IFJFU0VUX0ZJTFRFUiA9IFwiUkVTRVRfRklMVEVSXCI7XG5leHBvcnQgY29uc3QgUkVTRVRfQVBJX0VSUk9SID0gXCJSRVNFVF9BUElfRVJST1JcIjtcbmV4cG9ydCBjb25zdCBTRVRfU1RBVEUgPSBcIlNFVF9TVEFURVwiO1xuZXhwb3J0IGNvbnN0IFNFVF9BUElfRVJST1IgPSBcIlNFVF9BUElfRVJST1JcIjtcbmV4cG9ydCBjb25zdCBDSEFOR0VfRklMVEVSID0gXCJDSEFOR0VfRklMVEVSXCI7XG5leHBvcnQgY29uc3QgQ0hBTkdFX1NPUlQgPSBcIkNIQU5HRV9TT1JUXCI7XG5cbi8vIE9SREVSUyBDT05TVFNcbmV4cG9ydCBjb25zdCBHRVRfVVNFUl9PUkRFUlMgPSBcIkdFVF9PUkRFUlNcIjtcbmV4cG9ydCBjb25zdCBSRUZVTkRfT1JERVIgPSBcIlJFRlVORF9PUkRFUlwiO1xuZXhwb3J0IGNvbnN0IFNFVF9BQ1RJVkVfT1JERVJfSUQgPSBcIlNFVF9BQ1RJVkVfT1JERVJfSURcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVVNFUl9PUkRFUlMgPSBcIkZJTFRFUl9VU0VSX09SREVSU1wiO1xuXG4vLyBUSUNLRVRTIENPTlNUU1xuZXhwb3J0IGNvbnN0IEdFVF9NWV9BU1NJR05FRF9USUNLRVRTID0gXCJHRVRfTVlfQVNTSUdORURfVElDS0VUU1wiO1xuZXhwb3J0IGNvbnN0IFVQREFURV9USUNLRVQgPSBcIlVQREFURV9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBSRVNFVF9USUNLRVQgPSBcIlJFU0VUX1RJQ0tFVFwiO1xuZXhwb3J0IGNvbnN0IFJFQ0VJVkVfVElDS0VUID0gXCJSRUNFSVZFX1RJQ0tFVFwiO1xuZXhwb3J0IGNvbnN0IFJFTU9WRV9USUNLRVRfQVRURU5ERUUgPSBcIlJFTU9WRV9USUNLRVRfQVRURU5ERUVcIjtcbmV4cG9ydCBjb25zdCBBU1NJR05fVElDS0VUID0gXCJBU1NJR05fVElDS0VUXCI7XG5leHBvcnQgY29uc3QgREVMRUdBVEVfVElDS0VUID0gXCJERUxFR0FURV9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBSRUZVTkRfVElDS0VUID0gXCJSRUZVTkRfVElDS0VUXCI7XG5leHBvcnQgY29uc3QgUkVTRU5EX05PVElGSUNBVElPTiA9IFwiUkVTRU5EX05PVElGSUNBVElPTlwiO1xuZXhwb3J0IGNvbnN0IEdFVF9USUNLRVRTX0JZX09SREVSID0gXCJHRVRfVElDS0VUU19CWV9PUkRFUlwiO1xuZXhwb3J0IGNvbnN0IEdFVF9USUNLRVRTX0JZX09SREVSX0VSUk9SID0gXCJHRVRfVElDS0VUU19CWV9PUkRFUl9FUlJPUlwiO1xuZXhwb3J0IGNvbnN0IEdFVF9PUkRFUl9USUNLRVRfREVUQUlMUyA9IFwiR0VUX09SREVSX1RJQ0tFVF9ERVRBSUxTXCI7XG5leHBvcnQgY29uc3QgR0VUX1RJQ0tFVF9ERVRBSUxTID0gXCJHRVRfVElDS0VUX0RFVEFJTFNcIjtcbmV4cG9ydCBjb25zdCBSRUNFSVZFX0VYVFJBX1FVRVNUSU9OUyA9IFwiUkVDRUlWRV9FWFRSQV9RVUVTVElPTlNcIjtcbmV4cG9ydCBjb25zdCBUSUNLRVRfQVRURU5ERUVfS0VZUyA9IHtcbiAgZW1haWw6IFwiYXR0ZW5kZWVfZW1haWxcIixcbiAgZmlyc3ROYW1lOiBcImF0dGVuZGVlX2ZpcnN0X25hbWVcIixcbiAgbGFzdE5hbWU6IFwiYXR0ZW5kZWVfbGFzdF9uYW1lXCIsXG4gIGNvbXBhbnk6IFwiYXR0ZW5kZWVfY29tcGFueVwiLFxuICBkaXNjbGFpbWVyQWNjZXB0ZWQ6IFwiZGlzY2xhaW1lcl9hY2NlcHRlZFwiLFxuICBleHRyYVF1ZXN0aW9uczogXCJleHRyYV9xdWVzdGlvbnNcIlxufTtcbmV4cG9ydCBjb25zdCBVUERBVEVfVElDS0VUU19SRUZVTkRfUkVRVUVTVEVEID1cbiAgXCJVUERBVEVfVElDS0VUU19SRUZVTkRfUkVRVUVTVEVEXCI7XG5cbi8vIFVTRVIgQ09OVFNcbmV4cG9ydCBjb25zdCBTVEFSVF9MT0FESU5HX0lEUF9QUk9GSUxFID0gXCJTVEFSVF9MT0FESU5HX0lEUF9QUk9GSUxFXCI7XG5leHBvcnQgY29uc3QgU1RPUF9MT0FESU5HX0lEUF9QUk9GSUxFID0gXCJTVE9QX0xPQURJTkdfSURQX1BST0ZJTEVcIjtcbmV4cG9ydCBjb25zdCBVUERBVEVfSURQX1BST0ZJTEUgPSBcIlVQREFURV9JRFBfUFJPRklMRVwiO1xuZXhwb3J0IGNvbnN0IFNFVF9VU0VSID0gXCJTRVRfVVNFUlwiO1xuXG4vLyBTVU1NSVQgQ09OU1RTXG5leHBvcnQgY29uc3QgU0VUX1NVTU1JVCA9IFwiU0VUX1NVTU1JVFwiO1xuZXhwb3J0IGNvbnN0IEdFVF9NQUlOX0VYVFJBX1FVRVNUSU9OUyA9IFwiR0VUX01BSU5fRVhUUkFfUVVFU1RJT05TXCI7XG5leHBvcnQgY29uc3QgUkVDRUlWRV9NQVJLRVRJTkdfU0VUVElOR1MgPSBcIlJFQ0VJVkVfTUFSS0VUSU5HX1NFVFRJTkdTXCI7XG5leHBvcnQgY29uc3QgQ0xFQVJfTUFSS0VUSU5HX1NFVFRJTkdTID0gXCJDTEVBUl9NQVJLRVRJTkdfU0VUVElOR1NcIjtcblxuZXhwb3J0IGNvbnN0IHJlc2V0VGlja2V0ID0gKCkgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihSRVNFVF9USUNLRVQpKHt9KSk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVzZXRTdGF0ZSA9ICgpID0+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==
|
|
11197
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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Q2dNOzs7Ozs7Ozs7Ozs7Ozs7OztBQ1JoTTtBQUNBO0FBQ0E7QUFDQTtBQUNnRTs7Ozs7Ozs7Ozs7Ozs7O0FDSmhFO0FBQ0E7QUFDbUM7Ozs7Ozs7Ozs7O0FDRm5DOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztVQ0FBO1VBQ0E7O1VBRUE7VUFDQTtVQUNB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Q3ZDdWIscUJBQXFCLEVBQUV2YiwwREFBZ0I7SUFDdkN3YixhQUFhLEVBQUV4YiwwREFBZ0I7SUFDL0J5YixjQUFjLEVBQUV6YiwwREFBZ0I7SUFDaEMwYixtQkFBbUIsRUFBRTFiLDBEQUFnQjtJQUNyQzJiLGdCQUFnQixFQUFFM2IsMERBQWdCO0lBQ2xDNGIsY0FBYyxFQUFFNWIsMERBQWdCO0lBQ2hDNmIsbUJBQW1CLEVBQUU3YiwwREFBZ0I7SUFDckM4YixZQUFZLEVBQUU5YiwwREFBZ0JtQztFQUNoQyxDQUFDLENBQUM7RUFDRm5PLElBQUksRUFBRWdNLDBEQUFnQjtFQUN0QjJsQyxRQUFRLEVBQUUzbEMsMERBQWdCO0VBQzFCL0QsYUFBYSxFQUFFK0Qsd0RBQWMrRjtBQUMvQixDQUFDO0FBRUQsaUVBQWV3cEMsdUJBQXVCLEUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9hY3Rpb25zLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0JhZGdlRmVhdHVyZUljb24vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvQ29uZmlybURpYWxvZy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9Db3B5VGV4dC9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9DdXN0b21Ob3RpZmljYXRpb24vQ29udGV4dC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9DdXN0b21Ob3RpZmljYXRpb24vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvQ3VzdG9tVGhlbWUuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy9DaGVja2JveExpc3RRdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvQ2hlY2tib3hRdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvRHJvcGRvd25RdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvUmFkaW9MaXN0UXVlc3Rpb25GaWVsZC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL1RleHRRdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvdXRpbHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29uc3RhbnRzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvQXNzaWduZWRGaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9CYWRnZUZlYXR1cmVGaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9GaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9GcmVlUGFpZEZpbHRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL1Byb21vQ29kZUZpbHRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL1NlYXJjaC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL1NvcnQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9TdGF0dXNGaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9UaWNrZXRUeXBlRmlsdGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRm9ybUZvb3Rlci9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9MYWJlbHMvRXJyb3JMYWJlbC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9Mb2FkZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTXlPcmRlcnNUaWNrZXRzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL05vVGlja2V0c0ZvdW5kL1RpY2tldHNJY29uLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL05vVGlja2V0c0ZvdW5kL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyUmVjZWlwdC9nZW5lcmF0ZVJlY2VpcHRQREYuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJSZWNlaXB0L2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyU3VtbWFyeS9PcmRlckFjdGlvbnMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJTdW1tYXJ5L09yZGVyU3VtbWFyeVRhYmxlLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyU3VtbWFyeS9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L0Fzc2lnbmVkVG9NZS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L0F0dGVuZGVlU3RhdHVzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvT3JkZXJMaXN0SXRlbS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L09yZGVyTGlzdFRpY2tldHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9PcmRlcnNMaXN0RGVza3RvcE1vYmlsZS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JlZnVuZFJlcXVlc3RzL1JlZnVuZERldGFpbHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmVmdW5kUmVxdWVzdHMvUmVmdW5kUmVxdWVzdGVkVGlja2V0LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JlZnVuZFJlcXVlc3RzL1JlZnVuZFN0YXR1cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SZWZ1bmRSZXF1ZXN0cy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SaWdodERyYXdlci9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9TdW1taXRIZWFkZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGFiV3JhcHBlci9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRBc3NpZ24vY29tcG9uZW50cy9Bc3NpZ25PcHRpb25zL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9jb21wb25lbnRzL0RlbGVnYXRlRm9ybS9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRBc3NpZ24vY29tcG9uZW50cy9IZWFkZXIvQXNzaWduSGVhZGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9jb21wb25lbnRzL0hlYWRlci9SZWFzc2lnbkhlYWRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRBc3NpZ24vY29tcG9uZW50cy9SZWFzc2lnbkZvcm0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0QXNzaWduL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL0NvbXBhbnlGaWVsZC9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9SZWdpc3RyYXRpb25EaXNjbGFpbWVyL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsSGVhZGVyL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL1RpY2tldEZvcm0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvVGlja2V0T3duZXJGaWVsZHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbnN0YW50cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0U3RhdHVzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1dpZGdldFRhYnMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvV2lkZ2V0V3JhcHBlci9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvaG9va3MvdXNlR2V0VGlja2V0LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9ob29rcy91c2VTY3JvbGxUb0Vycm9yLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9ob29rcy91c2VUaWNrZXREZXRhaWxzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9pMThuL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9yZWR1Y2VyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9zdG9yZS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvYXV0aC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvY29uc3RhbnRzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy91dGlscy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvc3VtbWl0VXRpbHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3V0aWxzL3RpY2tldFV0aWxzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0JhZGdlRmVhdHVyZUljb24vc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0NvcHlUZXh0L3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9Gb3JtRm9vdGVyL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9MYWJlbHMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL015T3JkZXJzVGlja2V0cy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTm9UaWNrZXRzRm91bmQvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyU3VtbWFyeS9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmVmdW5kUmVxdWVzdHMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JpZ2h0RHJhd2VyL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9TdW1taXRIZWFkZXIvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9jb21wb25lbnRzL0Fzc2lnbk9wdGlvbnMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9jb21wb25lbnRzL0hlYWRlci9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0QXNzaWduL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9SZWdpc3RyYXRpb25EaXNjbGFpbWVyL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9UaWNrZXRPd25lckZpZWxkcy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRTdGF0dXMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1dpZGdldFRhYnMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1dpZGdldFdyYXBwZXIvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2hlY2tDaXJjbGVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Nsb3NlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9Db250ZW50Q29weVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXJyb3JcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0V4cGFuZE1vcmVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ZpbHRlckxpc3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ltcG9ydEV4cG9ydFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvSW5mb1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvU2VhcmNoXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvQnV0dG9uXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9DaGVja2JveFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvRGlhbG9nXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9EaWFsb2dBY3Rpb25zXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9EaWFsb2dDb250ZW50XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9EaWFsb2dDb250ZW50VGV4dFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvRGlhbG9nVGl0bGVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL0RpdmlkZXJcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL0lucHV0QmFzZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL1RhYlwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvVGFic1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvVG9vbHRpcFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC91c2VNZWRpYVF1ZXJ5XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQHJlYWN0LXBkZi9yZW5kZXJlclwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkByZWR1eGpzL3Rvb2xraXRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAc2VudHJ5L3JlYWN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiZm9ybWlrXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiaTE4bmV4dFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcImkxOG5leHQtYnJvd3Nlci1sYW5ndWFnZWRldGVjdG9yXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiaWR0b2tlbi12ZXJpZmllclwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm1vbWVudC10aW1lem9uZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvY29tcG9uZW50cy9yYXctaHRtbFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvYWN0aW9uc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvbWV0aG9kc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvYWN0aW9uc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvbWV0aG9kc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvcXVlcnktYWN0aW9uc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInAtbGltaXRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJwcm9wLXR5cGVzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC1pMThuZXh0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QtaW5maW5pdGUtc2Nyb2xsLWNvbXBvbmVudFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0LXFyLWNvZGVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC1yZWR1eFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0L2pzeC1ydW50aW1lXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVkdXhcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWR1eC1wZXJzaXN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVkdXgtcGVyc2lzdC9pbnRlZ3JhdGlvbi9yZWFjdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlZHV4LXBlcnNpc3QvbGliL3N0b3JhZ2VcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJ5dXBcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0Iiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL215LW9yZGVycy10aWNrZXRzLXdpZGdldC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShcIm15LW9yZGVycy10aWNrZXRzLXdpZGdldFwiLCBbXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJteS1vcmRlcnMtdGlja2V0cy13aWRnZXRcIl0gPSBmYWN0b3J5KCk7XG5cdGVsc2Vcblx0XHRyb290W1wibXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0XCJdID0gZmFjdG9yeSgpO1xufSkodGhpcywgKCkgPT4ge1xucmV0dXJuICIsImltcG9ydCB7XG4gIGF1dGhFcnJvckhhbmRsZXIsXG4gIGNyZWF0ZUFjdGlvbixcbiAgZGVsZXRlUmVxdWVzdCxcbiAgZ2V0UmVxdWVzdCxcbiAgcHV0UmVxdWVzdCxcbiAgc3RhcnRMb2FkaW5nLFxuICBzdG9wTG9hZGluZ1xufSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9hY3Rpb25zXCI7XG5pbXBvcnQgcExpbWl0IGZyb20gXCJwLWxpbWl0XCI7XG5pbXBvcnQgeyBnZXRJZFRva2VuIH0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvbWV0aG9kc1wiO1xuaW1wb3J0IHsgb2JqZWN0VG9RdWVyeVN0cmluZyB9IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL21ldGhvZHNcIjtcbmltcG9ydCBJZFRva2VuVmVyaWZpZXIgZnJvbSBcImlkdG9rZW4tdmVyaWZpZXJcIjtcbmltcG9ydCBpMThuIGZyb20gXCJpMThuZXh0XCI7XG5pbXBvcnQgeyBhdXRoUHJvbWlzZVJlamVjdCwgZ2V0QWNjZXNzVG9rZW5TYWZlbHkgfSBmcm9tIFwiLi91dGlscy9hdXRoXCI7XG5pbXBvcnQgeyBnZW5lcmF0ZVJlY2VpcHRQREYgfSBmcm9tIFwiLi9jb21wb25lbnRzL09yZGVyUmVjZWlwdFwiO1xuaW1wb3J0IHtcbiAgREVGQVVMVF9JVEVNU19QRVJfUEFHRSxcbiAgRVJST1JfQ09ERVMsXG4gIEZJRlRZX1BFUl9QQUdFLFxuICBGSUxURVJfQUNUSU9OLFxuICBGSVJTVF9QQUdFLFxuICBQUk9NSVNFX0JBVENIX0xJTUlUXG59IGZyb20gXCIuL3V0aWxzL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgY29uc3QgUkVTRVRfU1RBVEUgPSBcIlJFU0VUX1NUQVRFXCI7XG5leHBvcnQgY29uc3QgUkVTRVRfRklMVEVSID0gXCJSRVNFVF9GSUxURVJcIjtcbmV4cG9ydCBjb25zdCBSRVNFVF9BUElfRVJST1IgPSBcIlJFU0VUX0FQSV9FUlJPUlwiO1xuZXhwb3J0IGNvbnN0IFNFVF9TVEFURSA9IFwiU0VUX1NUQVRFXCI7XG5leHBvcnQgY29uc3QgU0VUX0FQSV9FUlJPUiA9IFwiU0VUX0FQSV9FUlJPUlwiO1xuZXhwb3J0IGNvbnN0IENIQU5HRV9GSUxURVIgPSBcIkNIQU5HRV9GSUxURVJcIjtcbmV4cG9ydCBjb25zdCBDSEFOR0VfU09SVCA9IFwiQ0hBTkdFX1NPUlRcIjtcblxuLy8gT1JERVJTIENPTlNUU1xuZXhwb3J0IGNvbnN0IEdFVF9VU0VSX09SREVSUyA9IFwiR0VUX09SREVSU1wiO1xuZXhwb3J0IGNvbnN0IFJFRlVORF9PUkRFUiA9IFwiUkVGVU5EX09SREVSXCI7XG5leHBvcnQgY29uc3QgU0VUX0FDVElWRV9PUkRFUl9JRCA9IFwiU0VUX0FDVElWRV9PUkRFUl9JRFwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9VU0VSX09SREVSUyA9IFwiRklMVEVSX1VTRVJfT1JERVJTXCI7XG5cbi8vIFRJQ0tFVFMgQ09OU1RTXG5leHBvcnQgY29uc3QgR0VUX01ZX0FTU0lHTkVEX1RJQ0tFVFMgPSBcIkdFVF9NWV9BU1NJR05FRF9USUNLRVRTXCI7XG5leHBvcnQgY29uc3QgVVBEQVRFX1RJQ0tFVCA9IFwiVVBEQVRFX1RJQ0tFVFwiO1xuZXhwb3J0IGNvbnN0IFJFU0VUX1RJQ0tFVCA9IFwiUkVTRVRfVElDS0VUXCI7XG5leHBvcnQgY29uc3QgUkVDRUlWRV9USUNLRVQgPSBcIlJFQ0VJVkVfVElDS0VUXCI7XG5leHBvcnQgY29uc3QgUkVNT1ZFX1RJQ0tFVF9BVFRFTkRFRSA9IFwiUkVNT1ZFX1RJQ0tFVF9BVFRFTkRFRVwiO1xuZXhwb3J0IGNvbnN0IEFTU0lHTl9USUNLRVQgPSBcIkFTU0lHTl9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBERUxFR0FURV9USUNLRVQgPSBcIkRFTEVHQVRFX1RJQ0tFVFwiO1xuZXhwb3J0IGNvbnN0IFJFRlVORF9USUNLRVQgPSBcIlJFRlVORF9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBSRVNFTkRfTk9USUZJQ0FUSU9OID0gXCJSRVNFTkRfTk9USUZJQ0FUSU9OXCI7XG5leHBvcnQgY29uc3QgR0VUX1RJQ0tFVFNfQllfT1JERVIgPSBcIkdFVF9USUNLRVRTX0JZX09SREVSXCI7XG5leHBvcnQgY29uc3QgR0VUX1RJQ0tFVFNfQllfT1JERVJfRVJST1IgPSBcIkdFVF9USUNLRVRTX0JZX09SREVSX0VSUk9SXCI7XG5leHBvcnQgY29uc3QgR0VUX09SREVSX1RJQ0tFVF9ERVRBSUxTID0gXCJHRVRfT1JERVJfVElDS0VUX0RFVEFJTFNcIjtcbmV4cG9ydCBjb25zdCBHRVRfVElDS0VUX0RFVEFJTFMgPSBcIkdFVF9USUNLRVRfREVUQUlMU1wiO1xuZXhwb3J0IGNvbnN0IFJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TID0gXCJSRUNFSVZFX0VYVFJBX1FVRVNUSU9OU1wiO1xuZXhwb3J0IGNvbnN0IFRJQ0tFVF9BVFRFTkRFRV9LRVlTID0ge1xuICBlbWFpbDogXCJhdHRlbmRlZV9lbWFpbFwiLFxuICBmaXJzdE5hbWU6IFwiYXR0ZW5kZWVfZmlyc3RfbmFtZVwiLFxuICBsYXN0TmFtZTogXCJhdHRlbmRlZV9sYXN0X25hbWVcIixcbiAgY29tcGFueTogXCJhdHRlbmRlZV9jb21wYW55XCIsXG4gIGRpc2NsYWltZXJBY2NlcHRlZDogXCJkaXNjbGFpbWVyX2FjY2VwdGVkXCIsXG4gIGV4dHJhUXVlc3Rpb25zOiBcImV4dHJhX3F1ZXN0aW9uc1wiXG59O1xuZXhwb3J0IGNvbnN0IFVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURUQgPVxuICBcIlVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURURcIjtcblxuLy8gVVNFUiBDT05UU1xuZXhwb3J0IGNvbnN0IFNUQVJUX0xPQURJTkdfSURQX1BST0ZJTEUgPSBcIlNUQVJUX0xPQURJTkdfSURQX1BST0ZJTEVcIjtcbmV4cG9ydCBjb25zdCBTVE9QX0xPQURJTkdfSURQX1BST0ZJTEUgPSBcIlNUT1BfTE9BRElOR19JRFBfUFJPRklMRVwiO1xuZXhwb3J0IGNvbnN0IFVQREFURV9JRFBfUFJPRklMRSA9IFwiVVBEQVRFX0lEUF9QUk9GSUxFXCI7XG5leHBvcnQgY29uc3QgU0VUX1VTRVIgPSBcIlNFVF9VU0VSXCI7XG5cbi8vIFNVTU1JVCBDT05TVFNcbmV4cG9ydCBjb25zdCBTRVRfU1VNTUlUID0gXCJTRVRfU1VNTUlUXCI7XG5leHBvcnQgY29uc3QgR0VUX01BSU5fRVhUUkFfUVVFU1RJT05TID0gXCJHRVRfTUFJTl9FWFRSQV9RVUVTVElPTlNcIjtcbmV4cG9ydCBjb25zdCBSRUNFSVZFX01BUktFVElOR19TRVRUSU5HUyA9IFwiUkVDRUlWRV9NQVJLRVRJTkdfU0VUVElOR1NcIjtcbmV4cG9ydCBjb25zdCBDTEVBUl9NQVJLRVRJTkdfU0VUVElOR1MgPSBcIkNMRUFSX01BUktFVElOR19TRVRUSU5HU1wiO1xuXG5leHBvcnQgY29uc3QgcmVzZXRUaWNrZXQgPSAoKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFJFU0VUX1RJQ0tFVCkoe30pKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZXNldFN0YXRlID0gKCkgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihSRVNFVF9TVEFURSkoe30pKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZXNldEZpbHRlciA9ICgpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oUkVTRVRfRklMVEVSKSh7fSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlc2V0RXJyb3IgPSAoKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFJFU0VUX0FQSV9FUlJPUikoe30pKTtcbn07XG5cbmV4cG9ydCBjb25zdCBzZXRSZWR1Y2VyU3RhdGUgPSAoc3VtbWl0LCB1c2VyKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFNFVF9TVEFURSkoeyBzdW1taXQsIHVzZXIgfSkpO1xufTtcblxuLy8gRklMVEVSIC8gU09SVCBDT05TVEFOVFNcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX0RBVEUgPSBcIkZJTFRFUl9WQVJfREFURVwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRSA9IFwiRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFXCI7XG5leHBvcnQgY29uc3QgRklMVEVSX1ZBUl9USUNLRVRfVFlQRSA9IFwiRklMVEVSX1ZBUl9USUNLRVRfVFlQRVwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEID0gXCJGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRFwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfT1dORVJfU1RBVFVTID0gXCJGSUxURVJfVkFSX09XTkVSX1NUQVRVU1wiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfUFJPTU9DT0RFID0gXCJGSUxURVJfVkFSX1BST01PQ09ERVwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfRlJFRV9QQUlEID0gXCJGSUxURVJfVkFSX0ZSRUVfUEFJRFwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfT1JERVJfTlVNQkVSID0gXCJGSUxURVJfVkFSX09SREVSX05VTUJFUlwiO1xuXG4vLyBGSUxURVIgLyBTT1JUIEFDVElPTlNcbmV4cG9ydCBjb25zdCBjaGFuZ2VGaWx0ZXIgPSAoZmlsdGVyKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKENIQU5HRV9GSUxURVIpKGZpbHRlcikpO1xufTtcblxuZXhwb3J0IGNvbnN0IGNoYW5nZVNvcnQgPSAoc29ydCkgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihDSEFOR0VfU09SVCkoc29ydCkpO1xufTtcblxuLy8gRklMVEVSL1NPUlQgUEFSU0VcbmNvbnN0IHBhcnNlRmlsdGVyID0gKGZpbHRlck9iaiwgZmlsdGVyQWN0aW9uKSA9PiB7XG4gIGNvbnN0IGZpbHRlciA9IFtdO1xuICBpZiAoZmlsdGVyT2JqLkZJTFRFUl9WQVJfREFURSkge1xuICAgIGZpbHRlci5wdXNoKGBjcmVhdGVkW10ke2ZpbHRlck9iai5sb3dlcn0mJiR7ZmlsdGVyT2JqLnVwcGVyfWApO1xuICB9XG4gIGlmIChcbiAgICBmaWx0ZXJPYmouRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFICYmXG4gICAgZmlsdGVyT2JqLkZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRS5sZW5ndGggPiAwXG4gICkge1xuICAgIGNvbnN0IGZpbHRlck5hbWUgPVxuICAgICAgZmlsdGVyQWN0aW9uID09PSBGSUxURVJfQUNUSU9OLk9SREVSU1xuICAgICAgICA/IFwidGlja2V0c19iYWRnZV9mZWF0dXJlc19pZFwiXG4gICAgICAgIDogXCJiYWRnZV9mZWF0dXJlc19pZFwiO1xuICAgIGZpbHRlci5wdXNoKFxuICAgICAgYCR7ZmlsdGVyTmFtZX09PSR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRS5qb2luKFwifHxcIil9YFxuICAgICk7XG4gIH1cbiAgaWYgKFxuICAgIGZpbHRlck9iai5GSUxURVJfVkFSX1RJQ0tFVF9UWVBFICYmXG4gICAgZmlsdGVyT2JqLkZJTFRFUl9WQVJfVElDS0VUX1RZUEUubGVuZ3RoID4gMFxuICApIHtcbiAgICBjb25zdCBmaWx0ZXJOYW1lID1cbiAgICAgIGZpbHRlckFjdGlvbiA9PT0gRklMVEVSX0FDVElPTi5PUkRFUlNcbiAgICAgICAgPyBcInRpY2tldHNfdHlwZV9pZFwiXG4gICAgICAgIDogXCJ0aWNrZXRfdHlwZV9pZFwiO1xuICAgIGZpbHRlci5wdXNoKFxuICAgICAgYCR7ZmlsdGVyTmFtZX09PSR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfVElDS0VUX1RZUEUuam9pbihcInx8XCIpfWBcbiAgICApO1xuICB9XG4gIGlmIChmaWx0ZXJPYmouRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORUQpIHtcbiAgICBjb25zdCBmaWx0ZXJOYW1lID1cbiAgICAgIGZpbHRlckFjdGlvbiA9PT0gRklMVEVSX0FDVElPTi5PUkRFUlNcbiAgICAgICAgPyBcInRpY2tldHNfYXNzaWduZWRfdG9cIlxuICAgICAgICA6IFwiYXNzaWduZWRfdG9cIjtcbiAgICBmaWx0ZXIucHVzaChgJHtmaWx0ZXJOYW1lfT09JHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORUR9YCk7XG4gIH1cbiAgaWYgKGZpbHRlck9iai5GSUxURVJfVkFSX09XTkVSX1NUQVRVUykge1xuICAgIGNvbnN0IGZpbHRlck5hbWUgPVxuICAgICAgZmlsdGVyQWN0aW9uID09PSBGSUxURVJfQUNUSU9OLk9SREVSU1xuICAgICAgICA/IFwidGlja2V0c19vd25lcl9zdGF0dXNcIlxuICAgICAgICA6IFwib3duZXJfc3RhdHVzXCI7XG4gICAgZmlsdGVyLnB1c2goYCR7ZmlsdGVyTmFtZX09PSR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfT1dORVJfU1RBVFVTfWApO1xuICB9XG4gIGlmIChmaWx0ZXJPYmouRklMVEVSX1ZBUl9GUkVFX1BBSUQpIHtcbiAgICBjb25zdCBmaWx0ZXJOYW1lID1cbiAgICAgIGZpbHRlckFjdGlvbiA9PT0gRklMVEVSX0FDVElPTi5PUkRFUlMgPyBcImFtb3VudFwiIDogXCJmaW5hbF9hbW91bnRcIjtcbiAgICBmaWx0ZXIucHVzaChcbiAgICAgIGAke2ZpbHRlck5hbWV9JHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9GUkVFX1BBSUQgPT09IFwiRnJlZVwiID8gXCI9PTBcIiA6IFwiPjBcIn1gXG4gICAgKTtcbiAgfVxuICBpZiAoZmlsdGVyT2JqLkZJTFRFUl9WQVJfUFJPTU9DT0RFKSB7XG4gICAgY29uc3QgZmlsdGVyTmFtZSA9XG4gICAgICBmaWx0ZXJBY3Rpb24gPT09IEZJTFRFUl9BQ1RJT04uT1JERVJTXG4gICAgICAgID8gXCJ0aWNrZXRzX3Byb21vX2NvZGVcIlxuICAgICAgICA6IFwicHJvbW9fY29kZVwiO1xuICAgIGZpbHRlci5wdXNoKGAke2ZpbHRlck5hbWV9PUAke2ZpbHRlck9iai5GSUxURVJfVkFSX1BST01PQ09ERX1gKTtcbiAgfVxuICBpZiAoZmlsdGVyT2JqLkZJTFRFUl9WQVJfT1JERVJfTlVNQkVSKSB7XG4gICAgbGV0IGlucHV0RmlsdGVycyA9IFwiXCI7XG5cbiAgICBzd2l0Y2ggKGZpbHRlckFjdGlvbikge1xuICAgICAgY2FzZSBGSUxURVJfQUNUSU9OLk9SREVSUzoge1xuICAgICAgICBpbnB1dEZpbHRlcnMgPSBgbnVtYmVyPUAke2ZpbHRlck9iai5GSUxURVJfVkFSX09SREVSX05VTUJFUn0sdGlja2V0c19vd25lcl9lbWFpbD1AJHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJ9LHRpY2tldHNfbnVtYmVyPUAke2ZpbHRlck9iai5GSUxURVJfVkFSX09SREVSX05VTUJFUn1gO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgRklMVEVSX0FDVElPTi5USUNLRVRTX0JZX09SREVSUzoge1xuICAgICAgICBpbnB1dEZpbHRlcnMgPSBgbnVtYmVyPUAke2ZpbHRlck9iai5GSUxURVJfVkFSX09SREVSX05VTUJFUn0sb3duZXJfZW1haWw9QCR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfT1JERVJfTlVNQkVSfWA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBGSUxURVJfQUNUSU9OLkVYVEVSTkFMX1RJQ0tFVFM6IHtcbiAgICAgICAgaW5wdXRGaWx0ZXJzID0gYG9yZGVyX251bWJlcj1AJHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJ9LG51bWJlcj1AJHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJ9LG9yZGVyX293bmVyX2VtYWlsPUAke2ZpbHRlck9iai5GSUxURVJfVkFSX09SREVSX05VTUJFUn1gO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBmaWx0ZXIucHVzaChpbnB1dEZpbHRlcnMpO1xuICB9XG4gIHJldHVybiBmaWx0ZXI7XG59O1xuXG5jb25zdCBnZXRTb3J0RGlyZWN0aW9uID0gKGRpcmVjdGlvbikgPT4gKGRpcmVjdGlvbiA9PT0gXCJhc2NcIiA/IFwiK1wiIDogXCItXCIpO1xuXG4vLyBwYXlsb2FkOiB7IGh0dHBDb2RlLCB0aXRsZSwgaHRtbDogY29udGVudCwgdHlwZSB9XG5jb25zdCBlcnJvckhhbmRsZXJOb3RpZnkgPSAocGF5bG9hZCwgY2FsbGJhY2spID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oU0VUX0FQSV9FUlJPUikocGF5bG9hZCkpO1xuICBpZiAoY2FsbGJhY2spIGNhbGxiYWNrKCk7XG59O1xuXG5jb25zdCBjdXN0b21BdXRoRXJyb3JIYW5kbGVyID0gKGVyciwgcmVzKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goYXV0aEVycm9ySGFuZGxlcihlcnIsIHJlcywgZXJyb3JIYW5kbGVyTm90aWZ5KSk7XG59O1xuXG5jb25zdCBjdXN0b21GZXRjaEVycm9ySGFuZGxlciA9IChyZXNwb25zZSkgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGNvbnN0IGNvZGUgPSByZXNwb25zZS5zdGF0dXM7XG4gIGxldCBtc2c7XG4gIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICBzd2l0Y2ggKGNvZGUpIHtcbiAgICBjYXNlIEVSUk9SX0NPREVTW1wiNDAzXCJdOlxuICAgICAgbXNnID0gaTE4bi50KFwiZXJyb3JzLnVzZXJfbm90X2F1dGh6XCIpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBFUlJPUl9DT0RFU1tcIjQwMVwiXTpcbiAgICAgIG1zZyA9IGkxOG4udChcImVycm9ycy5zZXNzaW9uX2V4cGlyZWRcIik7XG4gICAgICBicmVhaztcbiAgICBjYXNlIEVSUk9SX0NPREVTW1wiNDEyXCJdOlxuICAgICAgbXNnID0gXCJcIjtcbiAgICAgIE9iamVjdC5lbnRyaWVzKHJlc3BvbnNlLmVycm9ycykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgIGlmIChOdW1iZXIuaXNOYU4oa2V5KSkge1xuICAgICAgICAgIG1zZyA9IGAke21zZ30gJHtrZXl9OiBgO1xuICAgICAgICB9XG5cbiAgICAgICAgbXNnID0gYCR7bXNnfSAke3ZhbHVlfSA8YnI+YDtcbiAgICAgIH0pO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBFUlJPUl9DT0RFU1tcIjUwMFwiXTpcbiAgICAgIG1zZyA9IGkxOG4udChcImVycm9ycy5zZXJ2ZXJfZXJyb3JcIik7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgbXNnID0gcmVzcG9uc2Uuc3RhdHVzVGV4dDtcbiAgfVxuXG4gIGRpc3BhdGNoKGVycm9ySGFuZGxlck5vdGlmeSh7IHRpdGxlOiBpMThuLnQoXCJlcnJvcnMuZXJyb3JcIiksIGh0bWw6IG1zZyB9KSk7XG59O1xuXG4vLyBPUkRFUlMgQUNUSU9OU1xuZXhwb3J0IGNvbnN0IGdldFVzZXJPcmRlcnMgPVxuICAoXG4gICAge1xuICAgICAgcGFnZSA9IEZJUlNUX1BBR0UsXG4gICAgICBwZXJQYWdlID0gREVGQVVMVF9JVEVNU19QRVJfUEFHRSxcbiAgICAgIGZpbHRlciA9IHt9LFxuICAgICAgc29ydCA9IHt9XG4gICAgfSxcbiAgICBza2lwTG9hZGluZ1xuICApID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgd2lkZ2V0U3RhdGU6IHsgc3VtbWl0IH1cbiAgICB9ID0gZ2V0U3RhdGUoKTtcblxuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBhdXRoUHJvbWlzZVJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBvcmRlcjogXCItY3JlYXRlZFwiLFxuICAgICAgXCJmaWx0ZXJbXVwiOiBbXCJzdGF0dXM9PVBhaWRcIl0sXG4gICAgICByZWxhdGlvbnM6IFwiYXBwbGllZF90YXhlcyxub25lXCIsXG4gICAgICBmaWVsZHM6XG4gICAgICAgIFwiaWQsY3JlYXRlZCxudW1iZXIsc3RhdHVzLGFtb3VudCxjdXJyZW5jeSx0YXhlc19hbW91bnQsZGlzY291bnRfYW1vdW50LHRpY2tldHNfZXhjZXJwdF9ieV90aWNrZXRfdHlwZSxyZWZ1bmRlZF9hbW91bnQscmF3X2Ftb3VudCxhcHBsaWVkX3RheGVzLmlkLGFwcGxpZWRfdGF4ZXMubmFtZSxhcHBsaWVkX3RheGVzLmFtb3VudCxwYXltZW50X21ldGhvZCxjcmVkaXRfY2FyZF90eXBlLGNyZWRpdF9jYXJkXzRudW1iZXIsb3duZXJfZmlyc3RfbmFtZSxvd25lcl9sYXN0X25hbWUsb3duZXJfZW1haWwsb3duZXJfY29tcGFueVwiLFxuICAgICAgcGFnZSxcbiAgICAgIHBlcl9wYWdlOiBwZXJQYWdlXG4gICAgfTtcblxuICAgIGlmIChPYmplY3Qua2V5cyhmaWx0ZXIpLmxlbmd0aCA+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+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBkb3dubG9hZE9yZGVyUmVjZWlwdCA9XG4gICh7IG9yZGVyLCBzdW1taXQgfSkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyByZWNlaXB0U2V0dGluZ3MgfSkgPT4gZ2VuZXJhdGVSZWNlaXB0UERGKHsgb3JkZXIsIHN1bW1pdCwgcmVjZWlwdFNldHRpbmdzIH0pO1xuXG5leHBvcnQgY29uc3QgZ2V0VGlja2V0UERGID1cbiAgKHRpY2tldCkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gYXV0aFByb21pc2VSZWplY3QoKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW5cbiAgICB9O1xuXG4gICAgY29uc3Qgb3JkZXJJZCA9IHRpY2tldC5vcmRlciA/IHRpY2tldC5vcmRlci5pZCA6IHRpY2tldC5vcmRlcl9pZDtcblxuICAgIGNvbnN0IHF1ZXJ5U3RyaW5nID0gb2JqZWN0VG9RdWVyeVN0cmluZyhwYXJhbXMpO1xuICAgIGNvbnN0IGFwaVVybCA9IGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzLyR7dGlja2V0LmlkfS9wZGY/JHtxdWVyeVN0cmluZ31gO1xuXG4gICAgcmV0dXJuIGZldGNoKGFwaVVybCwge1xuICAgICAgcmVzcG9uc2VUeXBlOiBcIkJsb2JcIixcbiAgICAgIGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9wZGZcIiB9XG4gICAgfSlcbiAgICAgIC50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgICAgdGhyb3cgcmVzcG9uc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmJsb2IoKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIC50aGVuKChwZGYpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYVwiKTtcbiAgICAgICAgY29uc3QgdXJsID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwocGRmKTtcbiAgICAgICAgbGluay5ocmVmID0gdXJsO1xuICAgICAgICBsaW5rLmRvd25sb2FkID0gXCJ0aWNrZXQucGRmXCI7XG4gICAgICAgIGxpbmsuZGlzcGF0Y2hFdmVudChuZXcgTW91c2VFdmVudChcImNsaWNrXCIpKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goY3VzdG9tRmV0Y2hFcnJvckhhbmRsZXIpO1xuICB9O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCBmb3J3YXJkUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IE1BWF9JTklUSUFMUyA9IDI7XG5cbmNvbnN0IEJhZGdlRmVhdHVyZUljb24gPSBmb3J3YXJkUmVmKFxuICAoeyBuYW1lLCBpbWFnZSwgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgICBjb25zdCBbaW1hZ2VMb2FkZWQsIHNldEltYWdlTG9hZGVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbaW1hZ2VFcnJvciwgc2V0SW1hZ2VFcnJvcl0gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgICBjb25zdCBzaG93RmFsbGJhY2sgPSAhaW1hZ2UgfHwgaW1hZ2VFcnJvcjtcblxuICAgIC8vIEV4dHJhY3QgdXAgdG8gMiBpbml0aWFscyBmcm9tIGJhZGdlIGZlYXR1cmUgbmFtZSAoZS5nLiwgXCJCb2FyZCBNZW1iZXJcIiAtPiBcIkJNXCIpXG4gICAgY29uc3QgaW5pdGlhbHMgPSBuYW1lXG4gICAgICAuc3BsaXQoXCIgXCIpXG4gICAgICAuZmlsdGVyKCh3b3JkKSA9PiB3b3JkLmxlbmd0aCA+IDApXG4gICAgICAubWFwKCh3b3JkKSA9PiB3b3JkWzBdKVxuICAgICAgLmpvaW4oXCJcIilcbiAgICAgIC5zdWJzdHJpbmcoMCwgTUFYX0lOSVRJQUxTKVxuICAgICAgLnRvVXBwZXJDYXNlKCk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdlxuICAgICAgICByZWY9e3JlZn1cbiAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYmFkZ2VGZWF0dXJlSWNvbn0ke2NsYXNzTmFtZSA/IGAgJHtjbGFzc05hbWV9YCA6ICcnfWB9XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nXG4gICAgICAgIHsuLi5wcm9wc31cbiAgICAgID5cbiAgICAgICAge2ltYWdlICYmICFpbWFnZUVycm9yICYmIChcbiAgICAgICAgICA8aW1nXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5iYWRnZUZlYXR1cmVJbWFnZX1cbiAgICAgICAgICAgIHNyYz17aW1hZ2V9XG4gICAgICAgICAgICBhbHQ9e25hbWV9XG4gICAgICAgICAgICBvbkxvYWQ9eygpID0+IHNldEltYWdlTG9hZGVkKHRydWUpfVxuICAgICAgICAgICAgb25FcnJvcj17KCkgPT4gc2V0SW1hZ2VFcnJvcih0cnVlKX1cbiAgICAgICAgICAgIHN0eWxlPXt7IGRpc3BsYXk6IGltYWdlTG9hZGVkID8gXCJibG9ja1wiIDogXCJub25lXCIgfX1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgICB7c2hvd0ZhbGxiYWNrICYmIChcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLmJhZGdlRmVhdHVyZUluaXRpYWxzfT57aW5pdGlhbHN9PC9kaXY+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG4pO1xuXG5CYWRnZUZlYXR1cmVJY29uLnByb3BUeXBlcyA9IHtcbiAgbmFtZTogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICBpbWFnZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nXG59O1xuXG5leHBvcnQgZGVmYXVsdCBCYWRnZUZlYXR1cmVJY29uO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IEJ1dHRvbiBmcm9tIFwiQG11aS9tYXRlcmlhbC9CdXR0b25cIjtcbmltcG9ydCBEaWFsb2cgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvRGlhbG9nXCI7XG5pbXBvcnQgRGlhbG9nQWN0aW9ucyBmcm9tIFwiQG11aS9tYXRlcmlhbC9EaWFsb2dBY3Rpb25zXCI7XG5pbXBvcnQgRGlhbG9nQ29udGVudCBmcm9tIFwiQG11aS9tYXRlcmlhbC9EaWFsb2dDb250ZW50XCI7XG5pbXBvcnQgRGlhbG9nQ29udGVudFRleHQgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvRGlhbG9nQ29udGVudFRleHRcIjtcbmltcG9ydCBEaWFsb2dUaXRsZSBmcm9tIFwiQG11aS9tYXRlcmlhbC9EaWFsb2dUaXRsZVwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuXG5jb25zdCBDb25maXJtRGlhbG9nID0gKHsgb3BlbiwgdGl0bGUsIGJvZHksIG9uQ2xvc2UsIG9uQ29uZmlybSB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICByZXR1cm4gKFxuICAgIDxEaWFsb2dcbiAgICAgIG9wZW49e29wZW59XG4gICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgYXJpYS1sYWJlbGxlZGJ5PVwiYWxlcnQtZGlhbG9nLXRpdGxlXCJcbiAgICAgIGFyaWEtZGVzY3JpYmVkYnk9XCJhbGVydC1kaWFsb2ctZGVzY3JpcHRpb25cIlxuICAgID5cbiAgICAgIDxEaWFsb2dUaXRsZSBpZD1cImFsZXJ0LWRpYWxvZy10aXRsZVwiPnt0aXRsZX08L0RpYWxvZ1RpdGxlPlxuICAgICAgPERpYWxvZ0NvbnRlbnQ+XG4gICAgICAgIDxEaWFsb2dDb250ZW50VGV4dCBpZD1cImFsZXJ0LWRpYWxvZy1kZXNjcmlwdGlvblwiPlxuICAgICAgICAgIHtib2R5fVxuICAgICAgICA8L0RpYWxvZ0NvbnRlbnRUZXh0PlxuICAgICAgPC9EaWFsb2dDb250ZW50PlxuICAgICAgPERpYWxvZ0FjdGlvbnM+XG4gICAgICAgIDxCdXR0b24gb25DbGljaz17b25DbG9zZX0+e3QoXCJnZW5lcmFsLmNhbmNlbFwiKX08L0J1dHRvbj5cbiAgICAgICAgPEJ1dHRvbiBvbkNsaWNrPXtvbkNvbmZpcm19IGF1dG9Gb2N1cz5cbiAgICAgICAgICB7dChcImdlbmVyYWwuY29uZmlybVwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICA8L0RpYWxvZ0FjdGlvbnM+XG4gICAgPC9EaWFsb2c+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBDb25maXJtRGlhbG9nO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IENvbnRlbnRDb3B5SWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9Db250ZW50Q29weVwiO1xuaW1wb3J0IHsgVG9vbHRpcCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBNSUxMSVNFQ19UT19TRUMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgZGVmYXVsdFdpZHRoID0gOTA7XG5cbmNvbnN0IENvcHlUZXh0ID0gKHtcbiAgdGV4dCxcbiAgdG9vbHRpcFRleHQsXG4gIGhpZGVDb3B5ID0gZmFsc2UsXG4gIHRydW5jYXRlZCA9IHRydWUsXG4gIHJldmVyc2VkID0gZmFsc2UsXG4gIHdpZHRoID0gZGVmYXVsdFdpZHRoXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgdG9vbHRpcFRleHRUb1VzZSA9IHRvb2x0aXBUZXh0IHx8IHQoXCJnZW5lcmFsLmNvcHlfdG9fY2xpcGJvYXJkXCIpO1xuICBjb25zdCBbdG9vbHRpcCwgc2V0VG9vbHRpcF0gPSBSZWFjdC51c2VTdGF0ZSh0b29sdGlwVGV4dFRvVXNlKTtcbiAgY29uc3QgY2xhc3NOYW1lcyA9IGAke3RydW5jYXRlZCAmJiBzdHlsZXMudHJ1bmNhdGVkfSAke1xuICAgIHJldmVyc2VkICYmIHN0eWxlcy5yZXZlcnNlZFxuICB9YDtcblxuICBjb25zdCBoYW5kbGVDb3B5ID0gKCkgPT4ge1xuICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHRleHQpO1xuICAgIHNldFRvb2x0aXAodChcImdlbmVyYWwuY29waWVkXCIpKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHNldFRvb2x0aXAodG9vbHRpcFRleHRUb1VzZSk7XG4gICAgfSwgTUlMTElTRUNfVE9fU0VDKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMud3JhcHBlcn0+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9e2NsYXNzTmFtZXN9IHN0eWxlPXt7IHdpZHRoIH19PlxuICAgICAgICB7dGV4dH1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIHshaGlkZUNvcHkgJiYgKFxuICAgICAgICA8VG9vbHRpcCB0aXRsZT17dG9vbHRpcH0+XG4gICAgICAgICAgPENvbnRlbnRDb3B5SWNvblxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY29weUljb259XG4gICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVDb3B5fVxuICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJjb3B5LW51bWJlci1idXR0b25cIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5Db3B5VGV4dC5wcm9wVHlwZXMgPSB7XG4gIHRleHQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHRvb2x0aXBUZXh0OiBQcm9wVHlwZXMuc3RyaW5nLFxuICBoaWRlQ29weTogUHJvcFR5cGVzLmJvb2wsXG4gIHRydW5jYXRlZDogUHJvcFR5cGVzLmJvb2wsXG4gIHJldmVyc2VkOiBQcm9wVHlwZXMuYm9vbCxcbiAgd2lkdGg6IFByb3BUeXBlcy5udW1iZXJcbn07XG5cbmV4cG9ydCBkZWZhdWx0IENvcHlUZXh0O1xuIiwiaW1wb3J0IHsgY3JlYXRlQ29udGV4dCB9IGZyb20gXCJyZWFjdFwiO1xuXG5jb25zdCBDdXN0b21Ob3RpZmljYXRpb25Db250ZXh0ID0gY3JlYXRlQ29udGV4dChudWxsKTtcblxuZXhwb3J0IGRlZmF1bHQgQ3VzdG9tTm90aWZpY2F0aW9uQ29udGV4dDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEFsZXJ0LCBTbmFja2JhciwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgQ2hlY2tDaXJjbGVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NoZWNrQ2lyY2xlXCI7XG5pbXBvcnQgRXJyb3JJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Vycm9yXCI7XG5cbmNvbnN0IEN1c3RvbU5vdGlmaWNhdGlvbiA9ICh7IG9wZW4sIG9uQ2xvc2UsIG1lc3NhZ2UsIHNldmVyaXR5IH0pID0+IHtcbiAgaWYgKCFtZXNzYWdlKSByZXR1cm4gbnVsbDtcblxuICByZXR1cm4gKFxuICAgIDxTbmFja2JhclxuICAgICAgb3Blbj17b3Blbn1cbiAgICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgICBhbmNob3JPcmlnaW49e3sgdmVydGljYWw6IFwidG9wXCIsIGhvcml6b250YWw6IFwiY2VudGVyXCIgfX1cbiAgICAgIGF1dG9IaWRlRHVyYXRpb249ezIwMDB9XG4gICAgPlxuICAgICAgPEFsZXJ0XG4gICAgICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgICAgIHNldmVyaXR5PXtzZXZlcml0eX1cbiAgICAgICAgdmFyaWFudD1cImZpbGxlZFwiXG4gICAgICAgIHN4PXt7IHdpZHRoOiBcIjEwMCVcIiwgYmFja2dyb3VuZENvbG9yOiBgJHtzZXZlcml0eX0ubGlnaHRgIH19XG4gICAgICAgIGljb25NYXBwaW5nPXt7XG4gICAgICAgICAgc3VjY2VzczogPENoZWNrQ2lyY2xlSWNvbiBmb250U2l6ZT1cImluaGVyaXRcIiAvPixcbiAgICAgICAgICBlcnJvcjogPEVycm9ySWNvbiBmb250U2l6ZT1cImluaGVyaXRcIiAvPlxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTFcIj57bWVzc2FnZX08L1R5cG9ncmFwaHk+XG4gICAgICA8L0FsZXJ0PlxuICAgIDwvU25hY2tiYXI+XG4gICk7XG59O1xuXG5DdXN0b21Ob3RpZmljYXRpb24ucHJvcFR5cGVzID0ge1xuICBvcGVuOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMsXG4gIG1lc3NhZ2U6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHNldmVyaXR5OiBQcm9wVHlwZXMuc3RyaW5nXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDdXN0b21Ob3RpZmljYXRpb247XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBUaGVtZVByb3ZpZGVyIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IGNyZWF0ZVRoZW1lIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5cbmxldCBkYXJrQ29sb3IgPSBcIlwiO1xuaWYgKHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgLy8gR2V0IHRoZSByb290IGVsZW1lbnRcbiAgY29uc3Qgcm9vdCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcblxuICAvLyBSZXRyaWV2ZSB0aGUgY3VycmVudCB2YWx1ZSBvZiBhIENTUyB2YXJpYWJsZVxuICBkYXJrQ29sb3IgPSBnZXRDb21wdXRlZFN0eWxlKHJvb3QpLmdldFByb3BlcnR5VmFsdWUoXG4gICAgXCItLWNvbG9yX2JhY2tncm91bmRfZGFya1wiXG4gICk7XG59XG5cbmNvbnN0IHRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICBwYWxldHRlOiB7XG4gICAgcHJpbWFyeToge1xuICAgICAgbWFpbjogZGFya0NvbG9yXG4gICAgfSxcbiAgICB0ZXh0OiB7XG4gICAgICBwcmltYXJ5OiBcIiMwMDAwMDBERVwiLFxuICAgICAgc2Vjb25kYXJ5OiBcIiMwMDAwMDA5OVwiLFxuICAgICAgbGluazogXCIjMjE5NmYzXCJcbiAgICB9XG4gIH0sXG4gIHR5cG9ncmFwaHk6IHtcbiAgICBib2R5MToge1xuICAgICAgZm9udFNpemU6IFwiMTRweFwiLFxuICAgICAgZm9udFdlaWdodDogNDAwXG4gICAgfSxcbiAgICBoNToge1xuICAgICAgZm9udFNpemU6IFwiMS42ZW1cIixcbiAgICAgIGZvbnRXZWlnaHQ6IDQwMCxcbiAgICAgIFwiJi5NdWlUeXBvZ3JhcGh5LWd1dHRlckJvdHRvbVwiOiB7XG4gICAgICAgIG1hcmdpbkJvdHRvbTogXCIyMHB4XCJcbiAgICAgIH1cbiAgICB9LFxuICAgIGg2OiB7XG4gICAgICBmb250U2l6ZTogXCIxLjRlbVwiLFxuICAgICAgZm9udFdlaWdodDogNTAwLFxuICAgICAgXCImLk11aVR5cG9ncmFwaHktZ3V0dGVyQm90dG9tXCI6IHtcbiAgICAgICAgbWFyZ2luQm90dG9tOiBcIjIwcHhcIlxuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgY29tcG9uZW50czoge1xuICAgIE11aUZvcm1IZWxwZXJUZXh0OiB7XG4gICAgICBzdHlsZU92ZXJyaWRlczoge1xuICAgICAgICByb290OiB7XG4gICAgICAgICAgZm9udFNpemU6IFwiLjhlbVwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIE11aUJ1dHRvbjoge1xuICAgICAgc3R5bGVPdmVycmlkZXM6IHtcbiAgICAgICAgcm9vdDoge1xuICAgICAgICAgIGZvbnRTaXplOiBcIjFlbVwiLFxuICAgICAgICAgIGZvbnRXZWlnaHQ6IDUwMCxcbiAgICAgICAgICBsaW5lSGVpZ2h0OiBcIjIycHhcIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBNdWlUYWI6IHtcbiAgICAgIHN0eWxlT3ZlcnJpZGVzOiB7XG4gICAgICAgIHJvb3Q6IHtcbiAgICAgICAgICBmb250U2l6ZTogXCIxNHB4XCIsXG4gICAgICAgICAgY29sb3I6IFwiIzAwMDAwMDk5XCIsXG4gICAgICAgICAgXCImLk11aS1zZWxlY3RlZFwiOiB7XG4gICAgICAgICAgICBjb2xvcjogXCIjMjE5NmYzXCJcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIE11aVRhYnM6IHtcbiAgICAgIHN0eWxlT3ZlcnJpZGVzOiB7XG4gICAgICAgIGluZGljYXRvcjoge1xuICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjMjE5NmYzXCJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufSk7XG5cbmNvbnN0IEN1c3RvbVRoZW1lID0gKHsgY2hpbGRyZW4gfSkgPT4gKFxuICA8VGhlbWVQcm92aWRlciB0aGVtZT17dGhlbWV9PntjaGlsZHJlbn08L1RoZW1lUHJvdmlkZXI+XG4pO1xuXG5DdXN0b21UaGVtZS5wcm9wVHlwZXMgPSB7XG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZS5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDdXN0b21UaGVtZTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIENoZWNrYm94LFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgRm9ybUdyb3VwLFxuICBGb3JtSGVscGVyVGV4dCxcbiAgRm9ybUxhYmVsXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgUmF3SFRNTCBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9jb21wb25lbnRzL3Jhdy1odG1sXCI7XG5pbXBvcnQgeyBnZXRMYWJlbCwgdG9TbHVnIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZCA9ICh7XG4gIHF1ZXN0aW9uLFxuICBxdWVzdGlvbkNsYXNzTmFtZSA9IFwiXCIsXG4gIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgY2hpbGRyZW4sXG4gIHZhbHVlLFxuICBvbkNoYW5nZSxcbiAgc2V0RmllbGRWYWx1ZSxcbiAgZXJyb3IsXG4gIGhlbHBlclRleHQsXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHF1ZXN0aW9uLm5hbWUsIHF1ZXN0aW9uLmlkKTtcbiAgY29uc3QgcXVlc3Rpb25MYWJlbCA9IGdldExhYmVsKHF1ZXN0aW9uKTtcbiAgY29uc3QgaXNSZXF1aXJlZCA9IHF1ZXN0aW9uLm1hbmRhdG9yeTtcbiAgY29uc3QgcXVlc3Rpb25NYXhWYWx1ZXMgPSBxdWVzdGlvbi5tYXhfc2VsZWN0ZWRfdmFsdWVzO1xuXG4gIGNvbnN0IHF1ZXN0aW9uT3B0aW9ucyA9XG4gICAgcXVlc3Rpb24udmFsdWVzPy5tYXAoKHZhbCkgPT4gKHtcbiAgICAgIGxhYmVsOiB2YWwubGFiZWwsXG4gICAgICB2YWx1ZTogdmFsLmlkLnRvU3RyaW5nKClcbiAgICB9KSkgfHwgW107XG5cbiAgY29uc3QgaGFuZGxlQ2hlY2tib3hMaXN0Q2hhbmdlID0gKGNoZWNrZWQsIHZhbCkgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRBbnMgPSB2YWx1ZSB8fCBbXTtcbiAgICBjb25zdCBtYXhTZWxlY3Rpb25SZWFjaGVkID1cbiAgICAgIHF1ZXN0aW9uTWF4VmFsdWVzICE9PSAwICYmIGN1cnJlbnRBbnMubGVuZ3RoID09PSBxdWVzdGlvbk1heFZhbHVlcztcbiAgICBsZXQgbmV3VmFsdWU7XG5cbiAgICBpZiAoY2hlY2tlZCkge1xuICAgICAgbmV3VmFsdWUgPSBtYXhTZWxlY3Rpb25SZWFjaGVkID8gY3VycmVudEFucyA6IFsuLi5jdXJyZW50QW5zLCB2YWxdO1xuICAgIH0gZWxzZSB7XG4gICAgICBuZXdWYWx1ZSA9IGN1cnJlbnRBbnMuZmlsdGVyKCh2KSA9PiB2ICE9PSB2YWwpO1xuICAgIH1cblxuICAgIHNldEZpZWxkVmFsdWUocXVlc3Rpb25TbHVnLCBuZXdWYWx1ZSk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBrZXk9e3F1ZXN0aW9uU2x1Z31cbiAgICAgIGlkPXtgJHtxdWVzdGlvblNsdWd9X2NvbnRhaW5lcmB9XG4gICAgICBjbGFzc05hbWU9e3F1ZXN0aW9uQ2xhc3NOYW1lfVxuICAgID5cbiAgICAgIDxGb3JtQ29udHJvbFxuICAgICAgICBkaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgICBlcnJvcj17ZXJyb3J9XG4gICAgICA+XG4gICAgICAgIDxGb3JtTGFiZWw+XG4gICAgICAgICAgPFJhd0hUTUw+e3F1ZXN0aW9uTGFiZWx9PC9SYXdIVE1MPlxuICAgICAgICA8L0Zvcm1MYWJlbD5cbiAgICAgICAge2Vycm9yICYmIDxGb3JtSGVscGVyVGV4dD57aGVscGVyVGV4dCA/PyBcIiBcIn08L0Zvcm1IZWxwZXJUZXh0Pn1cbiAgICAgICAgPEZvcm1Hcm91cD5cbiAgICAgICAgICB7cXVlc3Rpb25PcHRpb25zLm1hcCgob3ApID0+IChcbiAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgIGtleT17b3AubGFiZWx9XG4gICAgICAgICAgICAgIG5hbWU9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgICAgICBjaGVja2VkPXt2YWx1ZT8uaW5jbHVkZXMob3AudmFsdWUpfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhldikgPT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2hlY2tib3hMaXN0Q2hhbmdlKGV2LnRhcmdldC5jaGVja2VkLCBvcC52YWx1ZSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGxhYmVsPXtvcC5sYWJlbH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvRm9ybUdyb3VwPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHZhbHVlOiBQcm9wVHlwZXMuYXJyYXksXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIGVycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgaGVscGVyVGV4dDogUHJvcFR5cGVzLnN0cmluZ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIENoZWNrYm94LFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgRm9ybUhlbHBlclRleHRcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBSYXdIVE1MIGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL2NvbXBvbmVudHMvcmF3LWh0bWxcIjtcbmltcG9ydCB7IGdldExhYmVsLCB0b1NsdWcgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBDaGVja2JveFF1ZXN0aW9uRmllbGQgPSAoe1xuICBxdWVzdGlvbixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcIlwiLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIGNoaWxkcmVuLFxuICB2YWx1ZSxcbiAgZXJyb3IsXG4gIGhlbHBlclRleHQsXG4gIHNldEZpZWxkVmFsdWUsXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHF1ZXN0aW9uLm5hbWUsIHF1ZXN0aW9uLmlkKTtcbiAgY29uc3QgcXVlc3Rpb25MYWJlbCA9IGdldExhYmVsKHF1ZXN0aW9uKTtcbiAgY29uc3QgaXNSZXF1aXJlZCA9IHF1ZXN0aW9uLm1hbmRhdG9yeTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Db250cm9sIGZ1bGxXaWR0aCBtYXJnaW49XCJub3JtYWxcIiBlcnJvcj17ZXJyb3J9PlxuICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgIHN4PXt7IGFsaWduSXRlbXM6IFwiZmxleC1zdGFydFwiIH19XG4gICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgbmFtZT17cXVlc3Rpb25TbHVnfVxuICAgICAgICAgICAgICBjaGVja2VkPXshIXZhbHVlfVxuICAgICAgICAgICAgICBsYWJlbD17PFJhd0hUTUw+e3F1ZXN0aW9uTGFiZWx9PC9SYXdIVE1MPn1cbiAgICAgICAgICAgICAgc3g9e3sgbWFyZ2luVG9wOiAtMSB9fVxuICAgICAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgfVxuICAgICAgICAgIGxhYmVsPXs8UmF3SFRNTD57cXVlc3Rpb25MYWJlbH08L1Jhd0hUTUw+fVxuICAgICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICAvPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIHtlcnJvciAmJiA8Rm9ybUhlbHBlclRleHQ+e2hlbHBlclRleHQgPz8gXCIgXCJ9PC9Gb3JtSGVscGVyVGV4dD59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuQ2hlY2tib3hRdWVzdGlvbkZpZWxkLnByb3BUeXBlcyA9IHtcbiAgcXVlc3Rpb246IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgdmFsdWU6IFByb3BUeXBlcy5ib29sLFxuICBxdWVzdGlvbkNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgaXNEaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIGVycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgaGVscGVyVGV4dDogUHJvcFR5cGVzLnN0cmluZ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQ2hlY2tib3hRdWVzdGlvbkZpZWxkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIElucHV0TGFiZWwsIE1lbnVJdGVtLCBTZWxlY3QgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgZ2V0TGFiZWwsIHRvU2x1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IERyb3Bkb3duUXVlc3Rpb25GaWVsZCA9ICh7XG4gIHF1ZXN0aW9uLFxuICBxdWVzdGlvbkNsYXNzTmFtZSA9IFwiXCIsXG4gIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgc2V0RmllbGRWYWx1ZSxcbiAgY2hpbGRyZW4sXG4gIGVycm9yLFxuICBoZWxwZXJUZXh0LFxuICAuLi5yZXN0XG59KSA9PiB7XG4gIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxdWVzdGlvbi5uYW1lLCBxdWVzdGlvbi5pZCk7XG4gIGNvbnN0IHF1ZXN0aW9uTGFiZWwgPSBnZXRMYWJlbChxdWVzdGlvbik7XG4gIGNvbnN0IGlzUmVxdWlyZWQgPSBxdWVzdGlvbi5tYW5kYXRvcnk7XG5cbiAgY29uc3QgcXVlc3Rpb25PcHRpb25zID1cbiAgICBxdWVzdGlvbi52YWx1ZXM/Lm1hcCgodmFsKSA9PiAoe1xuICAgICAgbGFiZWw6IHZhbC5sYWJlbCxcbiAgICAgIHZhbHVlOiB2YWwuaWRcbiAgICB9KSkgfHwgW107XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBrZXk9e3F1ZXN0aW9uU2x1Z31cbiAgICAgIGlkPXtgJHtxdWVzdGlvblNsdWd9X2NvbnRhaW5lcmB9XG4gICAgICBjbGFzc05hbWU9e3F1ZXN0aW9uQ2xhc3NOYW1lfVxuICAgID5cbiAgICAgIDxGb3JtQ29udHJvbFxuICAgICAgICBkaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgICBlcnJvcj17ZXJyb3J9XG4gICAgICA+XG4gICAgICAgIDxJbnB1dExhYmVsIGlkPXtgJHtxdWVzdGlvblNsdWd9X2xhYmVsYH0+e3F1ZXN0aW9uTGFiZWx9PC9JbnB1dExhYmVsPlxuICAgICAgICA8U2VsZWN0XG4gICAgICAgICAgbGFiZWxJZD17YCR7cXVlc3Rpb25TbHVnfV9sYWJlbGB9XG4gICAgICAgICAgbmFtZT17cXVlc3Rpb25TbHVnfVxuICAgICAgICAgIGlkPXtxdWVzdGlvblNsdWd9XG4gICAgICAgICAgbGFiZWw9e3F1ZXN0aW9uTGFiZWx9XG4gICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgICBzdHlsZT17eyBtYXJnaW5Cb3R0b206IDIwIH19XG4gICAgICAgID5cbiAgICAgICAgICB7cXVlc3Rpb25PcHRpb25zLm1hcCgob3ApID0+IChcbiAgICAgICAgICAgIDxNZW51SXRlbSBrZXk9e29wLmxhYmVsfSB2YWx1ZT17b3AudmFsdWV9PlxuICAgICAgICAgICAgICB7b3AubGFiZWx9XG4gICAgICAgICAgICA8L01lbnVJdGVtPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L1NlbGVjdD5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9Gb3JtQ29udHJvbD5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbkRyb3Bkb3duUXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBlcnJvcjogUHJvcFR5cGVzLmJvb2wsXG4gIGhlbHBlclRleHQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHNldEZpZWxkVmFsdWU6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBEcm9wZG93blF1ZXN0aW9uRmllbGQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBGb3JtQ29udHJvbCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgRm9ybUhlbHBlclRleHQsXG4gIEZvcm1MYWJlbCxcbiAgUmFkaW8sXG4gIFJhZGlvR3JvdXBcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBSYXdIVE1MIGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL2NvbXBvbmVudHMvcmF3LWh0bWxcIjtcbmltcG9ydCB7IGdldExhYmVsLCB0b1NsdWcgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBSYWRpb0xpc3RRdWVzdGlvbkZpZWxkID0gKHtcbiAgcXVlc3Rpb24sXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJcIixcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBjaGlsZHJlbixcbiAgZXJyb3IsXG4gIGhlbHBlclRleHQsXG4gIHNldEZpZWxkVmFsdWUsXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHF1ZXN0aW9uLm5hbWUsIHF1ZXN0aW9uLmlkKTtcbiAgY29uc3QgcXVlc3Rpb25MYWJlbCA9IGdldExhYmVsKHF1ZXN0aW9uKTtcbiAgY29uc3QgaXNSZXF1aXJlZCA9IHF1ZXN0aW9uLm1hbmRhdG9yeTtcblxuICBjb25zdCBxdWVzdGlvbk9wdGlvbnMgPVxuICAgIHF1ZXN0aW9uLnZhbHVlcz8ubWFwKCh2YWwpID0+ICh7XG4gICAgICBsYWJlbDogdmFsLmxhYmVsLFxuICAgICAgdmFsdWU6IHZhbC5pZC50b1N0cmluZygpXG4gICAgfSkpIHx8IFtdO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICBpZD17YCR7cXVlc3Rpb25TbHVnfV9jb250YWluZXJgfVxuICAgICAgY2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICA+XG4gICAgICA8Rm9ybUNvbnRyb2xcbiAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgZXJyb3I9e2Vycm9yfVxuICAgICAgPlxuICAgICAgICA8Rm9ybUxhYmVsIGlkPXtgJHtxdWVzdGlvblNsdWd9X2xhYmVsYH0+XG4gICAgICAgICAgPFJhd0hUTUw+e3F1ZXN0aW9uTGFiZWx9PC9SYXdIVE1MPlxuICAgICAgICA8L0Zvcm1MYWJlbD5cbiAgICAgICAge2Vycm9yICYmIDxGb3JtSGVscGVyVGV4dD57aGVscGVyVGV4dCA/PyBcIiBcIn08L0Zvcm1IZWxwZXJUZXh0Pn1cbiAgICAgICAgPFJhZGlvR3JvdXBcbiAgICAgICAgICBhcmlhLWxhYmVsbGVkYnk9e2Ake3F1ZXN0aW9uU2x1Z31fbGFiZWxgfVxuICAgICAgICAgIG5hbWU9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICA+XG4gICAgICAgICAge3F1ZXN0aW9uT3B0aW9ucy5tYXAoKG9wKSA9PiAoXG4gICAgICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICBrZXk9e29wLmxhYmVsfVxuICAgICAgICAgICAgICB2YWx1ZT17b3AudmFsdWV9XG4gICAgICAgICAgICAgIGNvbnRyb2w9ezxSYWRpbyAvPn1cbiAgICAgICAgICAgICAgbGFiZWw9e29wLmxhYmVsfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9SYWRpb0dyb3VwPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuUmFkaW9MaXN0UXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBlcnJvcjogUHJvcFR5cGVzLmJvb2wsXG4gIGhlbHBlclRleHQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHNldEZpZWxkVmFsdWU6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSYWRpb0xpc3RRdWVzdGlvbkZpZWxkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgRm9ybUdyb3VwLCBUZXh0RmllbGQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgZ2V0TGFiZWwsIHRvU2x1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IFRleHRRdWVzdGlvbkZpZWxkID0gKHtcbiAgcXVlc3Rpb24sXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJcIixcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBjaGlsZHJlbixcbiAgc2V0RmllbGRWYWx1ZSxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICBpZD17YCR7cXVlc3Rpb25TbHVnfV9jb250YWluZXJgfVxuICAgICAgY2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICA+XG4gICAgICA8Rm9ybUdyb3VwPlxuICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgbmFtZT17cXVlc3Rpb25TbHVnfVxuICAgICAgICAgIGxhYmVsPXtxdWVzdGlvbkxhYmVsfVxuICAgICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgLz5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9Gb3JtR3JvdXA+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5UZXh0UXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBzZXRGaWVsZFZhbHVlOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgVGV4dFF1ZXN0aW9uRmllbGQ7XG4iLCJpbXBvcnQge1xuICBRdWVzdGlvblR5cGVfQ2hlY2tib3gsXG4gIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QsXG4gIFF1ZXN0aW9uVHlwZV9Db21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdFxufSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBjb25zdCBjaGVja1J1bGUgPSAodmFsdWUsIHJ1bGUpID0+IHtcbiAgY29uc3QgdmFsdWVzID0gcnVsZS5hbnN3ZXJfdmFsdWVzO1xuXG4gIGlmICghdmFsdWUpIHJldHVybiBmYWxzZTtcblxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICBpZiAoIXZhbHVlLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuICAgIGxldCByZXMgPSBydWxlLmFuc3dlcl92YWx1ZXNfb3BlcmF0b3IgPT09IFwiQW5kXCI7XG4gICAgdmFsdWVzLmZvckVhY2goKHYpID0+IHtcbiAgICAgIGlmIChydWxlLmFuc3dlcl92YWx1ZXNfb3BlcmF0b3IgPT09IFwiQW5kXCIpIHtcbiAgICAgICAgcmVzID0gcmVzICYmIHZhbHVlLmluY2x1ZGVzKHYpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gT3JcbiAgICAgICAgcmVzID0gcmVzIHx8IHZhbHVlLmluY2x1ZGVzKHYpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXM7XG4gIH1cbiAgcmV0dXJuIHZhbHVlcy5pbmNsdWRlcyh2YWx1ZT8udG9TdHJpbmcoKSk7XG59O1xuXG5leHBvcnQgY29uc3QgY2hlY2tWaXNpYmlsaXR5ID0gKHJ1bGUsIHJ1bGVSZXN1bHQpID0+IHtcbiAgaWYgKHJ1bGUudmlzaWJpbGl0eSA9PT0gXCJWaXNpYmxlXCIpIHtcbiAgICBpZiAocnVsZS52aXNpYmlsaXR5X2NvbmRpdGlvbiA9PT0gXCJFcXVhbFwiKSB7XG4gICAgICByZXR1cm4gISFydWxlUmVzdWx0O1xuICAgIH1cbiAgICAvLyBOb24gRXF1YWxcbiAgICByZXR1cm4gIXJ1bGVSZXN1bHQ7XG4gIH1cbiAgLy8gbm90IHZpc2libGVcbiAgaWYgKHJ1bGUudmlzaWJpbGl0eV9jb25kaXRpb24gPT09IFwiRXF1YWxcIikge1xuICAgIHJldHVybiAhcnVsZVJlc3VsdDtcbiAgfVxuICByZXR1cm4gISFydWxlUmVzdWx0O1xufTtcblxuZXhwb3J0IGNvbnN0IHRvU2x1ZyA9ICh0ZXh0LCBxdWVzdGlvbklkKSA9PiB7XG4gIGNvbnN0IHRleHRMQyA9IHRleHQudG9Mb3dlckNhc2UoKTtcbiAgcmV0dXJuIGAke3RleHRMQy5yZXBsYWNlKC9bXmEtekEtWjAtOV0rL2csIFwiX1wiKX1fJHtxdWVzdGlvbklkfWA7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TGFiZWwgPSAocSkgPT5cbiAgLy8gcmVwbGFjZSBsaW5lIGJyZWFrcyBhbmQgcmVtb3ZlIG91dGVyIDxwPlxuICBxPy5sYWJlbD8ucmVwbGFjZSgvXFxuL2csIFwiIFwiKS5yZXBsYWNlKC88cD4oLiopPFxcL3A+L2dpLCBcIiQxXCIpO1xuXG5leHBvcnQgY29uc3QgaXNBbnN3ZXJlZCA9IChhbnN3ZXIpID0+IHtcbiAgaWYgKCFhbnN3ZXIpIHJldHVybiBmYWxzZTtcbiAgLy8gY2hlY2sgdHlwZVxuICBpZiAoQXJyYXkuaXNBcnJheShhbnN3ZXIpKSByZXR1cm4gYW5zd2VyLmxlbmd0aCA+IDA7XG4gIGlmICh0eXBlb2YgYW5zd2VyID09PSBcInN0cmluZ1wiKSByZXR1cm4gYW5zd2VyLmxlbmd0aCA+IDA7XG4gIGlmICh0eXBlb2YgYW5zd2VyID09PSBcIm51bWJlclwiKSByZXR1cm4gYW5zd2VyID4gMDtcbiAgaWYgKHR5cGVvZiBhbnN3ZXIgPT09IFwiYm9vbGVhblwiKSByZXR1cm4gYW5zd2VyO1xuICByZXR1cm4gZmFsc2U7XG59O1xuXG5leHBvcnQgY29uc3QgY2hlY2tJZlZhbHVlTWF0Y2ggPSAoYW5zd2VyLCBjb21wYXJlVmFsKSA9PiB7XG4gIGNvbnN0IGFuc3dlckFycmF5ID0gQXJyYXkuaXNBcnJheShhbnN3ZXIpID8gYW5zd2VyIDogW2Fuc3dlcl07XG5cbiAgcmV0dXJuIGFuc3dlckFycmF5LnNvbWUoKHYpID0+IHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjb21wYXJlVmFsKSkge1xuICAgICAgcmV0dXJuIGNvbXBhcmVWYWwuaW5jbHVkZXMoYCR7dn1gKTtcbiAgICB9XG4gICAgcmV0dXJuIGAke3Z9YCA9PT0gYCR7Y29tcGFyZVZhbH1gO1xuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUeXBlSW5pdGlhbFZhbHVlID0gKHEpID0+IHtcbiAgc3dpdGNoIChxLnR5cGUpIHtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja2JveDpcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3Q6XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3Q6XG4gICAgICByZXR1cm4gW107XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94OlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvbWJvQm94OlxuICAgICAgcmV0dXJuIFwiXCI7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBcIlwiO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VHlwZVZhbHVlID0gKGFucywgdHlwZSkgPT4ge1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja2JveDpcbiAgICAgIHJldHVybiBhbnMgPT09IFwidHJ1ZVwiO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdDpcbiAgICAgIHJldHVybiBhbnM/LnNwbGl0KFwiLFwiKSB8fCBbXTtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3g6XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ29tYm9Cb3g6XG4gICAgICByZXR1cm4gYW5zIHx8IFwiXCI7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0OlxuICAgICAgcmV0dXJuIGFucyB8fCBudWxsO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gYW5zO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgdHJhbnNmb3JtQW53ZXJzRm9ybWF0ID0gKGFuc3dlcnMpID0+IHtcbiAgY29uc3Qge1xuICAgIGF0dGVuZGVlX2VtYWlsLFxuICAgIGF0dGVuZGVlX2ZpcnN0X25hbWUsXG4gICAgYXR0ZW5kZWVfbGFzdF9uYW1lLFxuICAgIGF0dGVuZGVlX2NvbXBhbnksXG4gICAgZGlzY2xhaW1lcl9hY2NlcHRlZCxcbiAgICAuLi5leHRyYV9xdWVzdGlvbnNcbiAgfSA9IGFuc3dlcnM7XG5cbiAgY29uc3QgZm9ybWF0dGVkRVEgPSBPYmplY3QuZW50cmllcyhleHRyYV9xdWVzdGlvbnMpLm1hcCgoW2tleSwgdmFsdWVdKSA9PiAoe1xuICAgIHF1ZXN0aW9uX2lkOiBwYXJzZUludChrZXkuc3BsaXQoXCJfXCIpLnBvcCgpLCAxMCksXG4gICAgYW5zd2VyOiB2YWx1ZT8udG9TdHJpbmcoKSB8fCBudWxsXG4gIH0pKTtcblxuICByZXR1cm4ge1xuICAgIGF0dGVuZGVlX2VtYWlsLFxuICAgIGF0dGVuZGVlX2ZpcnN0X25hbWUsXG4gICAgYXR0ZW5kZWVfbGFzdF9uYW1lLFxuICAgIGF0dGVuZGVlX2NvbXBhbnksXG4gICAgZGlzY2xhaW1lcl9hY2NlcHRlZCxcbiAgICBleHRyYV9xdWVzdGlvbnM6IGZvcm1hdHRlZEVRXG4gIH07XG59O1xuIiwiZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9UZXh0ID0gXCJUZXh0XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX1RleHRBcmVhID0gXCJUZXh0QXJlYVwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9DaGVja2JveCA9IFwiQ2hlY2tCb3hcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0ID0gXCJSYWRpb0J1dHRvbkxpc3RcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfQ29tYm9Cb3ggPSBcIkNvbWJvQm94XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCA9IFwiQ2hlY2tCb3hMaXN0XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCA9IFwiQ291bnRyeUNvbWJvQm94XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uID0gXCJSYWRpb0J1dHRvblwiO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuXG5pbXBvcnQge1xuICB0b1NsdWcsXG4gIGlzQW5zd2VyZWQsXG4gIGNoZWNrVmlzaWJpbGl0eSxcbiAgY2hlY2tSdWxlXG59IGZyb20gXCIuL2NvbXBvbmVudHMvdXRpbHNcIjtcbmltcG9ydCB7XG4gIFF1ZXN0aW9uVHlwZV9DaGVja2JveCxcbiAgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCxcbiAgUXVlc3Rpb25UeXBlX0NvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0LFxuICBRdWVzdGlvblR5cGVfVGV4dCxcbiAgUXVlc3Rpb25UeXBlX1RleHRBcmVhXG59IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IFRleHRRdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvVGV4dFF1ZXN0aW9uRmllbGRcIjtcbmltcG9ydCBDaGVja2JveFF1ZXN0aW9uRmllbGQgZnJvbSBcIi4vY29tcG9uZW50cy9DaGVja2JveFF1ZXN0aW9uRmllbGRcIjtcbmltcG9ydCBSYWRpb0xpc3RRdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvUmFkaW9MaXN0UXVlc3Rpb25GaWVsZFwiO1xuaW1wb3J0IENoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQgZnJvbSBcIi4vY29tcG9uZW50cy9DaGVja2JveExpc3RRdWVzdGlvbkZpZWxkXCI7XG5pbXBvcnQgRHJvcGRvd25RdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvRHJvcGRvd25RdWVzdGlvbkZpZWxkXCI7XG5cbmNvbnN0IGdldFF1ZXN0aW9uRmllbGRDb21wb25lbnQgPSAocXVlc3Rpb25UeXBlKSA9PiB7XG4gIHN3aXRjaCAocXVlc3Rpb25UeXBlKSB7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfVGV4dEFyZWE6XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfVGV4dDoge1xuICAgICAgcmV0dXJuIFRleHRRdWVzdGlvbkZpZWxkO1xuICAgIH1cbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja2JveDoge1xuICAgICAgcmV0dXJuIENoZWNrYm94UXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0OiB7XG4gICAgICByZXR1cm4gUmFkaW9MaXN0UXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0OiB7XG4gICAgICByZXR1cm4gQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94OlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvbWJvQm94OiB7XG4gICAgICByZXR1cm4gRHJvcGRvd25RdWVzdGlvbkZpZWxkO1xuICAgIH1cbiAgICBkZWZhdWx0OiB7XG4gICAgICByZXR1cm4gUmVhY3QuRnJhZ21lbnQ7XG4gICAgfVxuICB9XG59O1xuXG5jb25zdCBFeHRyYVF1ZXN0aW9uc0ZpZWxkcyA9ICh7XG4gIGV4dHJhUXVlc3Rpb25zLFxuICBvcmlnaW5hbEFuc3dlcnMsXG4gIGNsYXNzTmFtZSA9IFwiZXh0cmFRdWVzdGlvbnNcIixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcImV4dHJhUXVlc3Rpb25cIixcbiAgcmVhZE9ubHkgPSBmYWxzZSxcbiAgYWxsb3dFZGl0ID0gdHJ1ZSxcbiAgZm9ybWlrXG59KSA9PiB7XG4gIGNvbnN0IHJlbmRlclJ1bGUgPSAocnVsZSwgcXVlc3Rpb25TbHVnKSA9PiB7XG4gICAgY29uc3QgcnVsZVJlc3VsdCA9IGNoZWNrUnVsZShmb3JtaWsudmFsdWVzW3F1ZXN0aW9uU2x1Z10sIHJ1bGUpO1xuICAgIGNvbnN0IGlzVmlzaWJsZSA9IGNoZWNrVmlzaWJpbGl0eShydWxlLCBydWxlUmVzdWx0KTtcblxuICAgIGlmIChpc1Zpc2libGUpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2UtYmVmb3JlLWRlZmluZVxuICAgICAgcmV0dXJuIHJlbmRlclF1ZXN0aW9uKHJ1bGUuc3ViX3F1ZXN0aW9uKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfTtcblxuICBjb25zdCByZW5kZXJRdWVzdGlvbiA9IChxKSA9PiB7XG4gICAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHEubmFtZSwgcS5pZCk7XG4gICAgLy8gZGlzYWJsZSBmaWVsZCBpZiBlZGl0IGlzbid0IGFsbG93ZWQgYW5kIHRoZSBxdWVzdGlvbnMgaXMgYW5zd2VyZWRcbiAgICBjb25zdCBpc0Rpc2FibGVkID1cbiAgICAgICghYWxsb3dFZGl0ICYmIGlzQW5zd2VyZWQob3JpZ2luYWxBbnN3ZXJzW3F1ZXN0aW9uU2x1Z10pKSB8fCByZWFkT25seTtcbiAgICBjb25zdCBRdWVzdGlvbkZpZWxkQ29tcG9uZW50ID0gZ2V0UXVlc3Rpb25GaWVsZENvbXBvbmVudChxLnR5cGUpO1xuXG4gICAgY29uc3QgZm9ybWlrUHJvcHMgPSB7XG4gICAgICB2YWx1ZTogZm9ybWlrLnZhbHVlc1txdWVzdGlvblNsdWddLFxuICAgICAgb25DaGFuZ2U6IGZvcm1pay5oYW5kbGVDaGFuZ2UsXG4gICAgICBvbkJsdXI6IGZvcm1pay5oYW5kbGVCbHVyLFxuICAgICAgZXJyb3I6XG4gICAgICAgIGZvcm1pay50b3VjaGVkW3F1ZXN0aW9uU2x1Z10gJiYgQm9vbGVhbihmb3JtaWsuZXJyb3JzW3F1ZXN0aW9uU2x1Z10pLFxuICAgICAgaGVscGVyVGV4dDogZm9ybWlrLnRvdWNoZWRbcXVlc3Rpb25TbHVnXSAmJiBmb3JtaWsuZXJyb3JzW3F1ZXN0aW9uU2x1Z10sXG4gICAgICBzZXRGaWVsZFZhbHVlOiBmb3JtaWsuc2V0RmllbGRWYWx1ZVxuICAgIH07XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFF1ZXN0aW9uRmllbGRDb21wb25lbnRcbiAgICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICAgIHF1ZXN0aW9uPXtxfVxuICAgICAgICBxdWVzdGlvbkNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgICAgIGlzRGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgIHsuLi5mb3JtaWtQcm9wc31cbiAgICAgID5cbiAgICAgICAge3Euc3ViX3F1ZXN0aW9uX3J1bGVzPy5tYXAoKHJ1bGUpID0+IHJlbmRlclJ1bGUocnVsZSwgcXVlc3Rpb25TbHVnKSl9XG4gICAgICA8L1F1ZXN0aW9uRmllbGRDb21wb25lbnQ+XG4gICAgKTtcbiAgfTtcblxuICByZXR1cm4gPGRpdiBjbGFzc05hbWU9e2NsYXNzTmFtZX0+e2V4dHJhUXVlc3Rpb25zLm1hcChyZW5kZXJRdWVzdGlvbil9PC9kaXY+O1xufTtcblxuRXh0cmFRdWVzdGlvbnNGaWVsZHMucHJvcFR5cGVzID0ge1xuICBleHRyYVF1ZXN0aW9uczogUHJvcFR5cGVzLmFycmF5LmlzUmVxdWlyZWQsXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGFsbG93RWRpdDogUHJvcFR5cGVzLmJvb2wsXG4gIHJlYWRPbmx5OiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgRXh0cmFRdWVzdGlvbnNGaWVsZHM7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgQ2FyZEhlYWRlcixcbiAgSWNvbkJ1dHRvbixcbiAgQ29sbGFwc2UsXG4gIENhcmRDb250ZW50LFxuICBSYWRpb0dyb3VwLFxuICBSYWRpb1xufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEV4cGFuZE1vcmVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0V4cGFuZE1vcmVcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuY29uc3QgQXNzaWduZWRGaWx0ZXIgPSAoeyBvbkZpbHRlciB9KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBmaWx0ZXI6IHsgRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORUQ6IGZpbHRlclZhbHVlcyB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuXG4gIGNvbnN0IFtpc0V4cGFuZGVkLCBzZXRJc0V4cGFuZGVkXSA9IHVzZVN0YXRlKCEhZmlsdGVyVmFsdWVzKTtcblxuICBjb25zdCBhc3NpZ25lZFZhbHVlcyA9IFtcbiAgICB7IHZhbHVlOiBcIk1lXCIsIGxhYmVsOiBcIk1lXCIgfSxcbiAgICB7IHZhbHVlOiBcIlNvbWVvbmVFbHNlXCIsIGxhYmVsOiBcIlNvbWVvbmUgRWxzZVwiIH0sXG4gICAgeyB2YWx1ZTogXCJOb2JvZHlcIiwgbGFiZWw6IFwiTm9ib2R5XCIgfVxuICBdO1xuXG4gIGNvbnN0IGhhbmRsZUZpbHRlckNoYW5nZSA9IChldiwgdmFsdWUpID0+IHtcbiAgICBjb25zdCBuZXdGaWx0ZXIgPSB2YWx1ZTtcbiAgICBvbkZpbHRlcih7XG4gICAgICBbRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORURdOiBuZXdGaWx0ZXJcbiAgICB9KTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8Q2FyZEhlYWRlclxuICAgICAgICB0aXRsZT1cIkFzc2lnbmVkXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGl0bGVXcmFwcGVyfVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRJc0V4cGFuZGVkKCFpc0V4cGFuZGVkKX1cbiAgICAgICAgYWN0aW9uPXtcbiAgICAgICAgICA8SWNvbkJ1dHRvbiBhcmlhLWxhYmVsPVwiZXhwYW5kXCIgZGlzYWJsZVJpcHBsZT5cbiAgICAgICAgICAgIDxFeHBhbmRNb3JlSWNvblxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogaXNFeHBhbmRlZCA/IFwicm90YXRlKDE4MGRlZylcIiA6IFwicm90YXRlKDBkZWcpXCIsXG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogXCJ0cmFuc2Zvcm0gMC4zc1wiXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgfVxuICAgICAgLz5cbiAgICAgIDxDb2xsYXBzZSBpbj17aXNFeHBhbmRlZH0gdGltZW91dD1cImF1dG9cIiB1bm1vdW50T25FeGl0PlxuICAgICAgICA8Q2FyZENvbnRlbnRcbiAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgcHk6IDAsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiIzAwMDAwMDBBXCIsXG4gICAgICAgICAgICBcIiY6bGFzdC1jaGlsZFwiOiB7XG4gICAgICAgICAgICAgIHBiOiAwXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxSYWRpb0dyb3VwIHZhbHVlPXtmaWx0ZXJWYWx1ZXN9IG9uQ2hhbmdlPXtoYW5kbGVGaWx0ZXJDaGFuZ2V9PlxuICAgICAgICAgICAge2Fzc2lnbmVkVmFsdWVzLm1hcCgoYXNzaWduZWQpID0+IChcbiAgICAgICAgICAgICAgPEJveFxuICAgICAgICAgICAgICAgIHN4PXt7IHB5OiAxIH19XG4gICAgICAgICAgICAgICAga2V5PXtgZmlsdGVyLWJhZGdlLWZlYXR1cmUtJHthc3NpZ25lZC5sYWJlbH19YH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgICAgICAgICAgPFJhZGlvXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2Fzc2lnbmVkLnZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIiYgLk11aVN2Z0ljb24tcm9vdFwiOiB7IGZvbnRTaXplOiAxOCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgXCImLk11aS1jaGVja2VkXCI6IHsgY29sb3I6IFwiIzIxOTZGM1wiIH1cbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgbGFiZWw9e2Fzc2lnbmVkLmxhYmVsfVxuICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgXCImIC5NdWlGb3JtQ29udHJvbExhYmVsLWxhYmVsXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogXCIxZW1cIlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9SYWRpb0dyb3VwPlxuICAgICAgICA8L0NhcmRDb250ZW50PlxuICAgICAgPC9Db2xsYXBzZT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbkFzc2lnbmVkRmlsdGVyLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBBc3NpZ25lZEZpbHRlcjtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBCb3gsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIENoZWNrYm94LFxuICBDYXJkSGVhZGVyLFxuICBJY29uQnV0dG9uLFxuICBDb2xsYXBzZSxcbiAgQ2FyZENvbnRlbnRcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBFeHBhbmRNb3JlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FeHBhbmRNb3JlXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkUgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuXG5jb25zdCBCYWRnZUZlYXR1cmVGaWx0ZXIgPSAoeyBvbkZpbHRlciB9KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBzdW1taXQ6IHsgYmFkZ2VfZmVhdHVyZXNfdHlwZXMgfSxcbiAgICBmaWx0ZXI6IHsgRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFOiBmaWx0ZXJWYWx1ZXMgfVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcblxuICBjb25zdCBbaXNFeHBhbmRlZCwgc2V0SXNFeHBhbmRlZF0gPSB1c2VTdGF0ZSghIWZpbHRlclZhbHVlcy5sZW5ndGgpO1xuXG4gIGNvbnN0IGhhbmRsZUZpbHRlckNoYW5nZSA9ICh2YWx1ZSkgPT4ge1xuICAgIGNvbnN0IG5ld0ZpbHRlcnMgPSBmaWx0ZXJWYWx1ZXM/LmluY2x1ZGVzKHZhbHVlKVxuICAgICAgPyBmaWx0ZXJWYWx1ZXMuZmlsdGVyKChmKSA9PiBmICE9PSB2YWx1ZSlcbiAgICAgIDogWy4uLmZpbHRlclZhbHVlcywgdmFsdWVdO1xuICAgIG9uRmlsdGVyKHtcbiAgICAgIFtGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkVdOiBuZXdGaWx0ZXJzXG4gICAgfSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRJc0V4cGFuZGVkKCEhZmlsdGVyVmFsdWVzLmxlbmd0aCk7XG4gIH0sIFtmaWx0ZXJWYWx1ZXNdKTtcblxuICBpZiAoIWJhZGdlX2ZlYXR1cmVzX3R5cGVzIHx8IGJhZGdlX2ZlYXR1cmVzX3R5cGVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIG51bGw7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPENhcmRIZWFkZXJcbiAgICAgICAgdGl0bGU9XCJCYWRnZSBGZWF0dXJlXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGl0bGVXcmFwcGVyfVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRJc0V4cGFuZGVkKCFpc0V4cGFuZGVkKX1cbiAgICAgICAgYWN0aW9uPXtcbiAgICAgICAgICA8SWNvbkJ1dHRvbiBhcmlhLWxhYmVsPVwiZXhwYW5kXCIgZGlzYWJsZVJpcHBsZT5cbiAgICAgICAgICAgIDxFeHBhbmRNb3JlSWNvblxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogaXNFeHBhbmRlZCA/IFwicm90YXRlKDE4MGRlZylcIiA6IFwicm90YXRlKDBkZWcpXCIsXG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogXCJ0cmFuc2Zvcm0gMC4zc1wiXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgfVxuICAgICAgLz5cbiAgICAgIDxDb2xsYXBzZSBpbj17aXNFeHBhbmRlZH0gdGltZW91dD1cImF1dG9cIiB1bm1vdW50T25FeGl0PlxuICAgICAgICA8Q2FyZENvbnRlbnRcbiAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgcHk6IDAsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiIzAwMDAwMDBBXCIsXG4gICAgICAgICAgICBcIiY6bGFzdC1jaGlsZFwiOiB7XG4gICAgICAgICAgICAgIHBiOiAwXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHtiYWRnZV9mZWF0dXJlc190eXBlcy5tYXAoKGJmKSA9PiAoXG4gICAgICAgICAgICA8Qm94IHN4PXt7IHB5OiAxIH19IGtleT17YGZpbHRlci1iYWRnZS1mZWF0dXJlLSR7YmYubmFtZX19YH0+XG4gICAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IGhhbmRsZUZpbHRlckNoYW5nZShiZi5pZCl9XG4gICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e2ZpbHRlclZhbHVlcy5pbmNsdWRlcyhiZi5pZCl9XG4gICAgICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICAgICAgXCImIC5NdWlTdmdJY29uLXJvb3RcIjogeyBmb250U2l6ZTogMTggfSxcbiAgICAgICAgICAgICAgICAgICAgICBcIiYuTXVpLWNoZWNrZWRcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IFwiIzIxOTZGM1wiXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGFiZWw9e2JmLm5hbWV9XG4gICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgIFwiJiAuTXVpRm9ybUNvbnRyb2xMYWJlbC1sYWJlbFwiOiB7XG4gICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiBcIjFlbVwiXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICkpfVxuICAgICAgICA8L0NhcmRDb250ZW50PlxuICAgICAgPC9Db2xsYXBzZT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbkJhZGdlRmVhdHVyZUZpbHRlci5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQmFkZ2VGZWF0dXJlRmlsdGVyO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VSZWYsIHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCJAbXVpL21hdGVyaWFsL1N0YWNrXCI7XG5pbXBvcnQgRmlsdGVyTGlzdEljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRmlsdGVyTGlzdFwiO1xuaW1wb3J0IHtcbiAgQmFkZ2UsXG4gIEJveCxcbiAgQnV0dG9uLFxuICBDYXJkLFxuICBDYXJkSGVhZGVyLFxuICBEaXZpZGVyLFxuICBQYXBlclxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgY29ubmVjdCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IEJhZGdlRmVhdHVyZUZpbHRlciBmcm9tIFwiLi9CYWRnZUZlYXR1cmVGaWx0ZXJcIjtcbmltcG9ydCB7XG4gIEZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRSxcbiAgRklMVEVSX1ZBUl9GUkVFX1BBSUQsXG4gIEZJTFRFUl9WQVJfT1dORVJfU1RBVFVTLFxuICBGSUxURVJfVkFSX1BST01PQ09ERSxcbiAgRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORUQsXG4gIEZJTFRFUl9WQVJfVElDS0VUX1RZUEVcbn0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCBUaWNrZXRUeXBlRmlsdGVyIGZyb20gXCIuL1RpY2tldFR5cGVGaWx0ZXJcIjtcbmltcG9ydCBBc3NpZ25lZEZpbHRlciBmcm9tIFwiLi9Bc3NpZ25lZEZpbHRlclwiO1xuaW1wb3J0IFN0YXR1c0ZpbHRlciBmcm9tIFwiLi9TdGF0dXNGaWx0ZXJcIjtcbmltcG9ydCBGcmVlUGFpZEZpbHRlciBmcm9tIFwiLi9GcmVlUGFpZEZpbHRlclwiO1xuaW1wb3J0IFByb21vQ29kZUZpbHRlciBmcm9tIFwiLi9Qcm9tb0NvZGVGaWx0ZXJcIjtcblxuY29uc3QgRmlsdGVyID0gKHsgb25GaWx0ZXIsIG9uUmVzZXQsIGZpbHRlciwgYWN0aXZlRmlsdGVyc0NvdW50IH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbc2hvd0ZpbHRlckxpc3QsIHNldFNob3dGaWx0ZXJMaXN0XSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW3Nob3dEYXRlcGlja2VyLCBzZXRTaG93RGF0ZXBpY2tlcl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IGZpbHRlclJlZiA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgaGFuZGxlRmlsdGVyQ2xpY2tPdXRzaWRlID0gKGV2ZW50KSA9PiB7XG4gICAgaWYgKGZpbHRlclJlZi5jdXJyZW50ICYmICFmaWx0ZXJSZWYuY3VycmVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICBpZiAoc2hvd0ZpbHRlckxpc3QpIHtcbiAgICAgICAgc2V0U2hvd0ZpbHRlckxpc3QoZmFsc2UpO1xuICAgICAgICBzZXRTaG93RGF0ZXBpY2tlcihmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVGaWx0ZXJDbGlja091dHNpZGUsIGZhbHNlKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZUZpbHRlckNsaWNrT3V0c2lkZSwgZmFsc2UpO1xuICAgIH07XG4gIH0sIFtzaG93RmlsdGVyTGlzdF0pO1xuXG4gIGNvbnN0IHRvZ2dsZSA9ICgpID0+IHtcbiAgICBzZXRTaG93RmlsdGVyTGlzdCghc2hvd0ZpbHRlckxpc3QpO1xuICAgIHNldFNob3dEYXRlcGlja2VyKCFzaG93RGF0ZXBpY2tlcik7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRmlsdGVyUmVzZXQgPSAoKSA9PiB7XG4gICAgb25SZXNldCgpO1xuICAgIHRvZ2dsZSgpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5maWx0ZXJDb250YWluZXJ9IHJlZj17ZmlsdGVyUmVmfT5cbiAgICAgIDxTdGFja1xuICAgICAgICBhbGlnbkl0ZW1zPVwiY2VudGVyXCJcbiAgICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICAgICAgc3g9e3sgcHQ6IDIsIHBiOiAyIH19XG4gICAgICAgIG9uQ2xpY2s9e3RvZ2dsZX1cbiAgICAgID5cbiAgICAgICAgPEJhZGdlIGJhZGdlQ29udGVudD17YWN0aXZlRmlsdGVyc0NvdW50fSBjb2xvcj1cInByaW1hcnlcIiBzeD17eyBtcjogMSB9fT5cbiAgICAgICAgICA8RmlsdGVyTGlzdEljb24gZm9udFNpemU9XCJsYXJnZVwiIGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlckljb259IC8+XG4gICAgICAgIDwvQmFkZ2U+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlckxhYmVsfT57dChcImZpbHRlci5maWx0ZXJcIil9PC9zcGFuPlxuICAgICAgPC9TdGFjaz5cbiAgICAgIDxCb3hcbiAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuZmlsdGVyTGlzdENvbnRhaW5lcn0gJHtzdHlsZXMuY29udGFpbmVyfSAke1xuICAgICAgICAgIHNob3dGaWx0ZXJMaXN0ID8gc3R5bGVzLnNob3dGaWx0ZXJMaXN0IDogXCJcIlxuICAgICAgICB9YH1cbiAgICAgID5cbiAgICAgICAgPFBhcGVyIGVsZXZhdGlvbj17OH0gY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyQ2hlY2tib3hDb250YWluZXJ9PlxuICAgICAgICAgIDxDYXJkIHZhcmlhbnQ9XCJvdXRsaW5lZFwiPlxuICAgICAgICAgICAgPENhcmRIZWFkZXJcbiAgICAgICAgICAgICAgdGl0bGU9XCJGaWx0ZXJzXCJcbiAgICAgICAgICAgICAgYWN0aW9uPXtcbiAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICBkaXNhYmxlUmlwcGxlXG4gICAgICAgICAgICAgICAgICB2YXJpYW50PVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVGaWx0ZXJSZXNldH1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNsZWFuQnV0dG9ufVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHt0KFwiZmlsdGVyLmNsZWFyXCIpfVxuICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPERpdmlkZXIgLz5cbiAgICAgICAgICAgIDxCYWRnZUZlYXR1cmVGaWx0ZXJcbiAgICAgICAgICAgICAgdmFsdWVzPXtmaWx0ZXJbRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFXX1cbiAgICAgICAgICAgICAgb25GaWx0ZXI9eyhuZXdGaWx0ZXIpID0+IG9uRmlsdGVyKG5ld0ZpbHRlcil9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPEFzc2lnbmVkRmlsdGVyXG4gICAgICAgICAgICAgIHZhbHVlcz17ZmlsdGVyW0ZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEXX1cbiAgICAgICAgICAgICAgb25GaWx0ZXI9eyhuZXdGaWx0ZXIpID0+IG9uRmlsdGVyKG5ld0ZpbHRlcil9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPFN0YXR1c0ZpbHRlclxuICAgICAgICAgICAgICB2YWx1ZXM9e2ZpbHRlcltGSUxURVJfVkFSX09XTkVSX1NUQVRVU119XG4gICAgICAgICAgICAgIG9uRmlsdGVyPXsobmV3RmlsdGVyKSA9PiBvbkZpbHRlcihuZXdGaWx0ZXIpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxUaWNrZXRUeXBlRmlsdGVyXG4gICAgICAgICAgICAgIHZhbHVlcz17ZmlsdGVyW0ZJTFRFUl9WQVJfVElDS0VUX1RZUEVdfVxuICAgICAgICAgICAgICBvbkZpbHRlcj17KG5ld0ZpbHRlcikgPT4gb25GaWx0ZXIobmV3RmlsdGVyKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8UHJvbW9Db2RlRmlsdGVyXG4gICAgICAgICAgICAgIHZhbHVlcz17ZmlsdGVyW0ZJTFRFUl9WQVJfUFJPTU9DT0RFXX1cbiAgICAgICAgICAgICAgb25GaWx0ZXI9eyhuZXdGaWx0ZXIpID0+IG9uRmlsdGVyKG5ld0ZpbHRlcil9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPEZyZWVQYWlkRmlsdGVyXG4gICAgICAgICAgICAgIHZhbHVlcz17ZmlsdGVyW0ZJTFRFUl9WQVJfRlJFRV9QQUlEXX1cbiAgICAgICAgICAgICAgb25GaWx0ZXI9eyhuZXdGaWx0ZXIpID0+IG9uRmlsdGVyKG5ld0ZpbHRlcil9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvQ2FyZD5cbiAgICAgICAgPC9QYXBlcj5cbiAgICAgIDwvQm94PlxuICAgIDwvQm94PlxuICApO1xufTtcblxuRmlsdGVyLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5jb25zdCBtYXBTdGF0ZVRvUHJvcHMgPSAoeyB3aWRnZXRTdGF0ZSB9KSA9PiAoe1xuICBzb3J0OiB3aWRnZXRTdGF0ZS5zb3J0LFxuICBmaWx0ZXI6IHdpZGdldFN0YXRlLmZpbHRlcixcbiAgYWN0aXZlRmlsdGVyc0NvdW50OiB3aWRnZXRTdGF0ZS5hY3RpdmVGaWx0ZXJzQ291bnRcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBjb25uZWN0KG1hcFN0YXRlVG9Qcm9wcywge30pKEZpbHRlcik7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgQ2FyZEhlYWRlcixcbiAgSWNvbkJ1dHRvbixcbiAgQ29sbGFwc2UsXG4gIENhcmRDb250ZW50LFxuICBSYWRpb0dyb3VwLFxuICBSYWRpb1xufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEV4cGFuZE1vcmVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0V4cGFuZE1vcmVcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfRlJFRV9QQUlEIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuY29uc3QgRnJlZVBhaWRGaWx0ZXIgPSAoeyBvbkZpbHRlciB9KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBmaWx0ZXI6IHsgRklMVEVSX1ZBUl9GUkVFX1BBSUQ6IGZpbHRlclZhbHVlcyB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuXG4gIGNvbnN0IFtpc0V4cGFuZGVkLCBzZXRJc0V4cGFuZGVkXSA9IHVzZVN0YXRlKCEhZmlsdGVyVmFsdWVzKTtcblxuICBjb25zdCBhc3NpZ25lZFZhbHVlcyA9IFtcbiAgICB7IHZhbHVlOiBcIkZyZWVcIiwgbGFiZWw6IFwiRnJlZVwiIH0sXG4gICAgeyB2YWx1ZTogXCJQYWlkXCIsIGxhYmVsOiBcIlBhaWRcIiB9XG4gIF07XG5cbiAgY29uc3QgaGFuZGxlRmlsdGVyQ2hhbmdlID0gKGV2LCB2YWx1ZSkgPT4ge1xuICAgIGNvbnN0IG5ld0ZpbHRlciA9IHZhbHVlO1xuICAgIG9uRmlsdGVyKHtcbiAgICAgIFtGSUxURVJfVkFSX0ZSRUVfUEFJRF06IG5ld0ZpbHRlclxuICAgIH0pO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxDYXJkSGVhZGVyXG4gICAgICAgIHRpdGxlPVwiRnJlZSAvIFBhaWRcIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aXRsZVdyYXBwZXJ9XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHNldElzRXhwYW5kZWQoIWlzRXhwYW5kZWQpfVxuICAgICAgICBhY3Rpb249e1xuICAgICAgICAgIDxJY29uQnV0dG9uIGFyaWEtbGFiZWw9XCJleHBhbmRcIiBkaXNhYmxlUmlwcGxlPlxuICAgICAgICAgICAgPEV4cGFuZE1vcmVJY29uXG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBpc0V4cGFuZGVkID8gXCJyb3RhdGUoMTgwZGVnKVwiIDogXCJyb3RhdGUoMGRlZylcIixcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBcInRyYW5zZm9ybSAwLjNzXCJcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICB9XG4gICAgICAvPlxuICAgICAgPENvbGxhcHNlIGluPXtpc0V4cGFuZGVkfSB0aW1lb3V0PVwiYXV0b1wiIHVubW91bnRPbkV4aXQ+XG4gICAgICAgIDxDYXJkQ29udGVudFxuICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICBweTogMCxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjMDAwMDAwMEFcIixcbiAgICAgICAgICAgIFwiJjpsYXN0LWNoaWxkXCI6IHtcbiAgICAgICAgICAgICAgcGI6IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgPFJhZGlvR3JvdXAgdmFsdWU9e2ZpbHRlclZhbHVlc30gb25DaGFuZ2U9e2hhbmRsZUZpbHRlckNoYW5nZX0+XG4gICAgICAgICAgICB7YXNzaWduZWRWYWx1ZXMubWFwKChhc3NpZ25lZCkgPT4gKFxuICAgICAgICAgICAgICA8Qm94XG4gICAgICAgICAgICAgICAgc3g9e3sgcHk6IDEgfX1cbiAgICAgICAgICAgICAgICBrZXk9e2BmaWx0ZXItYmFkZ2UtZmVhdHVyZS0ke2Fzc2lnbmVkLmxhYmVsfX1gfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgICAgICAgICA8UmFkaW9cbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17YXNzaWduZWQudmFsdWV9XG4gICAgICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiJiAuTXVpU3ZnSWNvbi1yb290XCI6IHsgZm9udFNpemU6IDE4IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBcIiYuTXVpLWNoZWNrZWRcIjogeyBjb2xvcjogXCIjMjE5NkYzXCIgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBsYWJlbD17YXNzaWduZWQubGFiZWx9XG4gICAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICBcIiYgLk11aUZvcm1Db250cm9sTGFiZWwtbGFiZWxcIjoge1xuICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiBcIjFlbVwiXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L1JhZGlvR3JvdXA+XG4gICAgICAgIDwvQ2FyZENvbnRlbnQ+XG4gICAgICA8L0NvbGxhcHNlPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuRnJlZVBhaWRGaWx0ZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEZyZWVQYWlkRmlsdGVyO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQm94LFxuICBDYXJkSGVhZGVyLFxuICBJY29uQnV0dG9uLFxuICBDb2xsYXBzZSxcbiAgQ2FyZENvbnRlbnQsXG4gIFRleHRGaWVsZFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEV4cGFuZE1vcmVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0V4cGFuZE1vcmVcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfUFJPTU9DT0RFIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuY29uc3QgUHJvbW9Db2RlRmlsdGVyID0gKHsgb25GaWx0ZXIgfSkgPT4ge1xuICBjb25zdCB7XG4gICAgZmlsdGVyOiB7IEZJTFRFUl9WQVJfUFJPTU9DT0RFOiBmaWx0ZXJWYWx1ZXMgfVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcblxuICBjb25zdCBbaXNFeHBhbmRlZCwgc2V0SXNFeHBhbmRlZF0gPSB1c2VTdGF0ZSghIWZpbHRlclZhbHVlcyk7XG4gIGNvbnN0IFtwcm9tb0NvZGUsIHNldFByb21vQ29kZV0gPSB1c2VTdGF0ZShmaWx0ZXJWYWx1ZXMgfHwgXCJcIik7XG5cbiAgY29uc3QgZGVib3VuY2VUaW1lciA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgREVCT1VOQ0VfVkFMVUUgPSA1MDA7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRQcm9tb0NvZGUoZmlsdGVyVmFsdWVzIHx8IFwiXCIpO1xuICAgIHNldElzRXhwYW5kZWQoISFmaWx0ZXJWYWx1ZXMpO1xuICB9LCBbZmlsdGVyVmFsdWVzXSk7XG5cbiAgY29uc3QgaGFuZGxlRmlsdGVyQ2hhbmdlID0gKGV2KSA9PiB7XG4gICAgY29uc3QgbmV3UHJvbW9Db2RlID0gZXYudGFyZ2V0LnZhbHVlO1xuICAgIC8vIHVwZGF0ZSBsb2NhbCBzdGF0ZSBzbyB0aGUgaW5wdXQgcmVmbGVjdHMgY2hhbmdlc1xuICAgIHNldFByb21vQ29kZShuZXdQcm9tb0NvZGUpO1xuXG4gICAgLy8gcmVtb3ZlIGN1cnJlbnQgZGVib3VuY2VcbiAgICBpZiAoZGVib3VuY2VUaW1lci5jdXJyZW50KSB7XG4gICAgICBjbGVhclRpbWVvdXQoZGVib3VuY2VUaW1lci5jdXJyZW50KTtcbiAgICB9XG5cbiAgICAvLyBkZWJvdW5jZSBzZXQgdG8gNTAwIG1zXG4gICAgZGVib3VuY2VUaW1lci5jdXJyZW50ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBvbkZpbHRlcih7XG4gICAgICAgIFtGSUxURVJfVkFSX1BST01PQ09ERV06IG5ld1Byb21vQ29kZVxuICAgICAgfSk7XG4gICAgfSwgREVCT1VOQ0VfVkFMVUUpO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gcmVtb3ZlIGRlYm91bmNlIG9uIHJlbG9hZFxuICAgIGlmIChkZWJvdW5jZVRpbWVyLmN1cnJlbnQpIHtcbiAgICAgIGNsZWFyVGltZW91dChkZWJvdW5jZVRpbWVyLmN1cnJlbnQpO1xuICAgIH1cbiAgfSwgW10pO1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxDYXJkSGVhZGVyXG4gICAgICAgIHRpdGxlPVwiUHJvbW8gQ29kZVwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlV3JhcHBlcn1cbiAgICAgICAgb25DbGljaz17KCkgPT4gc2V0SXNFeHBhbmRlZCghaXNFeHBhbmRlZCl9XG4gICAgICAgIGFjdGlvbj17XG4gICAgICAgICAgPEljb25CdXR0b24gYXJpYS1sYWJlbD1cImV4cGFuZFwiIGRpc2FibGVSaXBwbGU+XG4gICAgICAgICAgICA8RXhwYW5kTW9yZUljb25cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IGlzRXhwYW5kZWQgPyBcInJvdGF0ZSgxODBkZWcpXCIgOiBcInJvdGF0ZSgwZGVnKVwiLFxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IFwidHJhbnNmb3JtIDAuM3NcIlxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgICA8Q29sbGFwc2UgaW49e2lzRXhwYW5kZWR9IHRpbWVvdXQ9XCJhdXRvXCIgdW5tb3VudE9uRXhpdD5cbiAgICAgICAgPENhcmRDb250ZW50XG4gICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjMDAwMDAwMEFcIixcbiAgICAgICAgICAgIFwiJjpsYXN0LWNoaWxkXCI6IHtcbiAgICAgICAgICAgICAgcHk6IDFcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIgcHJvbW8gY29kZVwiXG4gICAgICAgICAgICB2YWx1ZT17cHJvbW9Db2RlfVxuICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUZpbHRlckNoYW5nZX1cbiAgICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIC8+XG4gICAgICAgIDwvQ2FyZENvbnRlbnQ+XG4gICAgICA8L0NvbGxhcHNlPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuUHJvbW9Db2RlRmlsdGVyLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBQcm9tb0NvZGVGaWx0ZXI7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgc2hhbGxvd0VxdWFsLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgc3R5bGVkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCI7XG5pbXBvcnQgU2VhcmNoSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9TZWFyY2hcIjtcbmltcG9ydCBDbG9zZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2xvc2VcIjtcbmltcG9ydCBJbnB1dEJhc2UgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvSW5wdXRCYXNlXCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVIgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuXG5jb25zdCBTZWFyY2hDb250YWluZXIgPSBzdHlsZWQoXCJkaXZcIikoKCkgPT4gKHtcbiAgcG9zaXRpb246IFwicmVsYXRpdmVcIixcbiAgbWFyZ2luUmlnaHQ6IFwiMFwiLFxuICBtYXJnaW5MZWZ0OiBcIjBcIixcbiAgd2lkdGg6IFwiMTAwJVwiLFxuICBkaXNwbGF5OiBcImJsb2NrXCJcbn0pKTtcbmNvbnN0IFNlYXJjaEljb25XcmFwcGVyID0gc3R5bGVkKFwiZGl2XCIpKCgpID0+ICh7XG4gIGhlaWdodDogXCIxMDAlXCIsXG4gIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gIGRpc3BsYXk6IFwiZmxleFwiLFxuICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLFxuICBqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIlxufSkpO1xuY29uc3QgU3R5bGVkSW5wdXRCYXNlID0gc3R5bGVkKElucHV0QmFzZSkoKCkgPT4gKHtcbiAgY29sb3I6IFwiaW5oZXJpdFwiLFxuICBib3JkZXJCb3R0b206IFwiMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC40MilcIixcbiAgcGFkZGluZ0xlZnQ6IFwiMjVweFwiLFxuICBwYWRkaW5nUmlnaHQ6IFwiMjVweFwiLFxuICBmb250U2l6ZTogXCIxZW1cIlxufSkpO1xuY29uc3QgQ2xvc2VJY29uV3JhcHBlciA9IHN0eWxlZChDbG9zZUljb24pKCgpID0+ICh7XG4gIHBhZGRpbmc6IFwiMnB4XCIsXG4gIGZvbnRTaXplOiBcIjEuNWVtXCIsXG4gIGhlaWdodDogXCIxMDAlXCIsXG4gIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gIHRvcDogXCIwXCIsXG4gIHJpZ2h0OiBcIjBcIixcbiAgZGlzcGxheTogXCJmbGV4XCIsXG4gIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG4gIGp1c3RpZnlDb250ZW50OiBcImNlbnRlclwiLFxuICBjdXJzb3I6IFwicG9pbnRlclwiLFxuICB6SW5kZXg6IFwiMTAwMFwiXG59KSk7XG5cbmNvbnN0IFNlYXJjaCA9ICh7IG9uU2VhcmNoIH0pID0+IHtcbiAgY29uc3QgeyBmaWx0ZXIgfSA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sXG4gICAgc2hhbGxvd0VxdWFsXG4gICk7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW3NlYXJjaFZhbHVlLCBzZXRTZWFyY2hWYWx1ZV0gPSB1c2VTdGF0ZShcIlwiKTtcbiAgY29uc3Qgc2hvd0Nsb3NlQnRuID0gISFmaWx0ZXJbRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJdO1xuXG4gIGNvbnN0IG9uS2V5RG93biA9IChldmVudCkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIGtleSxcbiAgICAgIG5hdGl2ZUV2ZW50OiB7XG4gICAgICAgIHRhcmdldDogeyB2YWx1ZSB9XG4gICAgICB9XG4gICAgfSA9IGV2ZW50O1xuICAgIGlmIChrZXkgPT09IFwiRW50ZXJcIikge1xuICAgICAgb25TZWFyY2goe1xuICAgICAgICBbRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJdOiB2YWx1ZVxuICAgICAgfSk7XG4gICAgfVxuICB9O1xuICBjb25zdCByZXNldFNlYXJjaCA9ICgpID0+IHtcbiAgICBzZXRTZWFyY2hWYWx1ZShcIlwiKTtcbiAgICBvblNlYXJjaCh7XG4gICAgICBbRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJdOiBcIlwiXG4gICAgfSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyB3ZSBuZWVkIHRoaXMgd2hlbiBzZWFyY2ggaXMgcmVzZXQgZnJvbSBvdXRzaWRlIHRoaXMgY29tcG9uZW50XG4gICAgc2V0U2VhcmNoVmFsdWUoZmlsdGVyW0ZJTFRFUl9WQVJfT1JERVJfTlVNQkVSXSk7XG4gIH0sIFtmaWx0ZXJbRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJdXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPFNlYXJjaENvbnRhaW5lcj5cbiAgICAgICAge3Nob3dDbG9zZUJ0biAmJiAoXG4gICAgICAgICAgPENsb3NlSWNvbldyYXBwZXIgb25DbGljaz17cmVzZXRTZWFyY2h9PlxuICAgICAgICAgICAgPENsb3NlSWNvbiAvPlxuICAgICAgICAgIDwvQ2xvc2VJY29uV3JhcHBlcj5cbiAgICAgICAgKX1cbiAgICAgICAgPFNlYXJjaEljb25XcmFwcGVyPlxuICAgICAgICAgIDxTZWFyY2hJY29uIC8+XG4gICAgICAgIDwvU2VhcmNoSWNvbldyYXBwZXI+XG4gICAgICAgIDxTdHlsZWRJbnB1dEJhc2VcbiAgICAgICAgICBwbGFjZWhvbGRlcj17dChcIm9yZGVyX3NlYXJjaC5vcmRlcl9udW1iZXJcIil9XG4gICAgICAgICAgaW5wdXRQcm9wcz17eyBcImFyaWEtbGFiZWxcIjogXCJzZWFyY2hcIiB9fVxuICAgICAgICAgIHZhbHVlPXtzZWFyY2hWYWx1ZX1cbiAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNldFNlYXJjaFZhbHVlKGUudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICBvbktleURvd249e29uS2V5RG93bn1cbiAgICAgICAgLz5cbiAgICAgIDwvU2VhcmNoQ29udGFpbmVyPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuU2VhcmNoLnByb3BUeXBlcyA9IHtcbiAgb25TZWFyY2g6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBTZWFyY2g7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZVJlZiwgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgU3RhY2sgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIjtcbmltcG9ydCB7IEJveCwgQnV0dG9uLCBQYXBlciB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgSW1wb3J0RXhwb3J0SWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9JbXBvcnRFeHBvcnRcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgU29ydCA9ICh7IG9uU29ydCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW3Nob3dTb3J0LCBzZXRTaG93U29ydF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IHNvcnRSZWYgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IGhhbmRsZVNvcnRDbGlja091dHNpZGUgPSAoZXZlbnQpID0+IHtcbiAgICBpZiAoc29ydFJlZi5jdXJyZW50ICYmICFzb3J0UmVmLmN1cnJlbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgc2V0U2hvd1NvcnQoZmFsc2UpO1xuICAgIH1cbiAgfTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlU29ydENsaWNrT3V0c2lkZSwgZmFsc2UpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlU29ydENsaWNrT3V0c2lkZSwgZmFsc2UpO1xuICAgIH07XG4gIH0sIFtzaG93U29ydF0pO1xuXG4gIGNvbnN0IHRvZ2dsZSA9ICgpID0+IHtcbiAgICBzZXRTaG93U29ydCghc2hvd1NvcnQpO1xuICB9O1xuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuc29ydENvbnRhaW5lcn0gb25DbGljaz17dG9nZ2xlfT5cbiAgICAgIDxTdGFja1xuICAgICAgICByZWY9e3NvcnRSZWZ9XG4gICAgICAgIGFsaWduSXRlbXM9XCJjZW50ZXJcIlxuICAgICAgICBkaXJlY3Rpb249XCJyb3dcIlxuICAgICAgICBzeD17eyBwdDogMiwgcGI6IDIgfX1cbiAgICAgID5cbiAgICAgICAgPEltcG9ydEV4cG9ydEljb24gZm9udFNpemU9XCJsYXJnZVwiIGNsYXNzTmFtZT17c3R5bGVzLnNvcnRJY29ufSAvPlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy5zb3J0TGFiZWx9Pnt0KFwic29ydC5zb3J0XCIpfTwvc3Bhbj5cbiAgICAgIDwvU3RhY2s+XG4gICAgICB7c2hvd1NvcnQgJiYgKFxuICAgICAgICA8UGFwZXJcbiAgICAgICAgICBlbGV2YXRpb249ezh9XG4gICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuc29ydExpc3RDb250YWluZXJ9ICR7c3R5bGVzLmNvbnRhaW5lcn1gfVxuICAgICAgICA+XG4gICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgZGlzYWJsZVJpcHBsZVxuICAgICAgICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMubGFiZWx9XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvblNvcnQoeyBkaXJlY3Rpb246IFwiZGVzY1wiLCBuYW1lOiBcImNyZWF0ZWRcIiB9KX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dChcInNvcnQubmV3X2ZpcnN0XCIpfVxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIGRpc2FibGVSaXBwbGVcbiAgICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmxhYmVsfVxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25Tb3J0KHsgZGlyZWN0aW9uOiBcImFzY1wiLCBuYW1lOiBcImNyZWF0ZWRcIiB9KX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dChcInNvcnQub2xkX2ZpcnN0XCIpfVxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICA8L1BhcGVyPlxuICAgICAgKX1cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFNvcnQ7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgQ2FyZEhlYWRlcixcbiAgSWNvbkJ1dHRvbixcbiAgQ29sbGFwc2UsXG4gIENhcmRDb250ZW50LFxuICBSYWRpb0dyb3VwLFxuICBSYWRpb1xufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEV4cGFuZE1vcmVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0V4cGFuZE1vcmVcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfT1dORVJfU1RBVFVTIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuY29uc3QgU3RhdHVzRmlsdGVyID0gKHsgb25GaWx0ZXIgfSkgPT4ge1xuICBjb25zdCB7XG4gICAgZmlsdGVyOiB7IEZJTFRFUl9WQVJfT1dORVJfU1RBVFVTOiBmaWx0ZXJWYWx1ZXMgfVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcblxuICBjb25zdCBbaXNFeHBhbmRlZCwgc2V0SXNFeHBhbmRlZF0gPSB1c2VTdGF0ZSghIWZpbHRlclZhbHVlcyk7XG5cbiAgY29uc3QgYXNzaWduZWRWYWx1ZXMgPSBbXG4gICAgeyB2YWx1ZTogXCJJbmNvbXBsZXRlXCIsIGxhYmVsOiBcIkluY29tcGxldGVcIiB9LFxuICAgIHsgdmFsdWU6IFwiQ29tcGxldGVcIiwgbGFiZWw6IFwiQ29tcGxldGVcIiB9XG4gIF07XG5cbiAgY29uc3QgaGFuZGxlRmlsdGVyQ2hhbmdlID0gKGV2LCB2YWx1ZSkgPT4ge1xuICAgIGNvbnN0IG5ld0ZpbHRlciA9IHZhbHVlO1xuICAgIG9uRmlsdGVyKHtcbiAgICAgIFtGSUxURVJfVkFSX09XTkVSX1NUQVRVU106IG5ld0ZpbHRlclxuICAgIH0pO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxDYXJkSGVhZGVyXG4gICAgICAgIHRpdGxlPVwiU3RhdHVzXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGl0bGVXcmFwcGVyfVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRJc0V4cGFuZGVkKCFpc0V4cGFuZGVkKX1cbiAgICAgICAgYWN0aW9uPXtcbiAgICAgICAgICA8SWNvbkJ1dHRvbiBhcmlhLWxhYmVsPVwiZXhwYW5kXCIgZGlzYWJsZVJpcHBsZT5cbiAgICAgICAgICAgIDxFeHBhbmRNb3JlSWNvblxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogaXNFeHBhbmRlZCA/IFwicm90YXRlKDE4MGRlZylcIiA6IFwicm90YXRlKDBkZWcpXCIsXG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogXCJ0cmFuc2Zvcm0gMC4zc1wiXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgfVxuICAgICAgLz5cbiAgICAgIDxDb2xsYXBzZSBpbj17aXNFeHBhbmRlZH0gdGltZW91dD1cImF1dG9cIiB1bm1vdW50T25FeGl0PlxuICAgICAgICA8Q2FyZENvbnRlbnRcbiAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgcHk6IDAsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiIzAwMDAwMDBBXCIsXG4gICAgICAgICAgICBcIiY6bGFzdC1jaGlsZFwiOiB7XG4gICAgICAgICAgICAgIHBiOiAwXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxSYWRpb0dyb3VwIHZhbHVlPXtmaWx0ZXJWYWx1ZXN9IG9uQ2hhbmdlPXtoYW5kbGVGaWx0ZXJDaGFuZ2V9PlxuICAgICAgICAgICAge2Fzc2lnbmVkVmFsdWVzLm1hcCgoYXNzaWduZWQpID0+IChcbiAgICAgICAgICAgICAgPEJveFxuICAgICAgICAgICAgICAgIHN4PXt7IHB5OiAxIH19XG4gICAgICAgICAgICAgICAga2V5PXtgZmlsdGVyLWJhZGdlLWZlYXR1cmUtJHthc3NpZ25lZC5sYWJlbH19YH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgICAgICAgICAgPFJhZGlvXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2Fzc2lnbmVkLnZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIiYgLk11aVN2Z0ljb24tcm9vdFwiOiB7IGZvbnRTaXplOiAxOCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgXCImLk11aS1jaGVja2VkXCI6IHsgY29sb3I6IFwiIzIxOTZGM1wiIH1cbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgbGFiZWw9e2Fzc2lnbmVkLmxhYmVsfVxuICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgXCImIC5NdWlGb3JtQ29udHJvbExhYmVsLWxhYmVsXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogXCIxZW1cIlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9SYWRpb0dyb3VwPlxuICAgICAgICA8L0NhcmRDb250ZW50PlxuICAgICAgPC9Db2xsYXBzZT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cblN0YXR1c0ZpbHRlci5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgU3RhdHVzRmlsdGVyO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgQ2hlY2tib3gsXG4gIENhcmRIZWFkZXIsXG4gIEljb25CdXR0b24sXG4gIENvbGxhcHNlLFxuICBDYXJkQ29udGVudFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEV4cGFuZE1vcmVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0V4cGFuZE1vcmVcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfVElDS0VUX1RZUEUgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuXG5jb25zdCBUaWNrZXRUeXBlRmlsdGVyID0gKHsgb25GaWx0ZXIgfSkgPT4ge1xuICBjb25zdCB7XG4gICAgc3VtbWl0OiB7IHRpY2tldF90eXBlcyB9LFxuICAgIGZpbHRlcjogeyBGSUxURVJfVkFSX1RJQ0tFVF9UWVBFOiBmaWx0ZXJWYWx1ZXMgfVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcblxuICBjb25zdCBbaXNFeHBhbmRlZCwgc2V0SXNFeHBhbmRlZF0gPSB1c2VTdGF0ZSghIWZpbHRlclZhbHVlcy5sZW5ndGgpO1xuXG4gIGNvbnN0IGhhbmRsZUZpbHRlckNoYW5nZSA9ICh2YWx1ZSkgPT4ge1xuICAgIGNvbnN0IG5ld0ZpbHRlcnMgPSBmaWx0ZXJWYWx1ZXM/LmluY2x1ZGVzKHZhbHVlKVxuICAgICAgPyBmaWx0ZXJWYWx1ZXMuZmlsdGVyKChmKSA9PiBmICE9PSB2YWx1ZSlcbiAgICAgIDogWy4uLmZpbHRlclZhbHVlcywgdmFsdWVdO1xuICAgIG9uRmlsdGVyKHtcbiAgICAgIFtGSUxURVJfVkFSX1RJQ0tFVF9UWVBFXTogbmV3RmlsdGVyc1xuICAgIH0pO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0SXNFeHBhbmRlZCghIWZpbHRlclZhbHVlcy5sZW5ndGgpO1xuICB9LCBbZmlsdGVyVmFsdWVzXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPENhcmRIZWFkZXJcbiAgICAgICAgdGl0bGU9XCJUaWNrZXQgVHlwZVwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlV3JhcHBlcn1cbiAgICAgICAgb25DbGljaz17KCkgPT4gc2V0SXNFeHBhbmRlZCghaXNFeHBhbmRlZCl9XG4gICAgICAgIGFjdGlvbj17XG4gICAgICAgICAgPEljb25CdXR0b24gYXJpYS1sYWJlbD1cImV4cGFuZFwiIGRpc2FibGVSaXBwbGU+XG4gICAgICAgICAgICA8RXhwYW5kTW9yZUljb25cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IGlzRXhwYW5kZWQgPyBcInJvdGF0ZSgxODBkZWcpXCIgOiBcInJvdGF0ZSgwZGVnKVwiLFxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IFwidHJhbnNmb3JtIDAuM3NcIlxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgICA8Q29sbGFwc2UgaW49e2lzRXhwYW5kZWR9IHRpbWVvdXQ9XCJhdXRvXCIgdW5tb3VudE9uRXhpdD5cbiAgICAgICAgPENhcmRDb250ZW50XG4gICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgIHB5OiAwLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiMwMDAwMDAwQVwiLFxuICAgICAgICAgICAgXCImOmxhc3QtY2hpbGRcIjoge1xuICAgICAgICAgICAgICBwYjogMFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICB7dGlja2V0X3R5cGVzLm1hcCgoYmYpID0+IChcbiAgICAgICAgICAgIDxCb3ggc3g9e3sgcHk6IDEgfX0ga2V5PXtgZmlsdGVyLWJhZGdlLWZlYXR1cmUtJHtiZi5uYW1lfX1gfT5cbiAgICAgICAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KCkgPT4gaGFuZGxlRmlsdGVyQ2hhbmdlKGJmLmlkKX1cbiAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17ZmlsdGVyVmFsdWVzLmluY2x1ZGVzKGJmLmlkKX1cbiAgICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgICBcIiYgLk11aVN2Z0ljb24tcm9vdFwiOiB7IGZvbnRTaXplOiAxOCB9LFxuICAgICAgICAgICAgICAgICAgICAgIFwiJi5NdWktY2hlY2tlZFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogXCIjMjE5NkYzXCJcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsYWJlbD17YmYubmFtZX1cbiAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgXCImIC5NdWlGb3JtQ29udHJvbExhYmVsLWxhYmVsXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6IFwiMWVtXCJcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvQ2FyZENvbnRlbnQ+XG4gICAgICA8L0NvbGxhcHNlPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuVGlja2V0VHlwZUZpbHRlci5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0VHlwZUZpbHRlcjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEdyaWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEZpbHRlciBmcm9tIFwiLi9GaWx0ZXJcIjtcbmltcG9ydCBTb3J0IGZyb20gXCIuL1NvcnRcIjtcbmltcG9ydCBTZWFyY2ggZnJvbSBcIi4vU2VhcmNoXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IEZpbHRlcnMgPSAoeyBvbkZpbHRlciwgb25Tb3J0LCBvblNlYXJjaCwgb25SZXNldCB9KSA9PiAoXG4gIDxHcmlkIGNvbnRhaW5lciBqdXN0aWZ5PVwiZmxleC1lbmRcIiBhbGlnbkl0ZW1zPVwiY2VudGVyXCI+XG4gICAgPEdyaWRcbiAgICAgIGl0ZW1cbiAgICAgIHhzPXs2fVxuICAgICAgY29udGFpbmVyXG4gICAgICBwYWRkaW5nPXsxfVxuICAgICAgZ2FwPXsyfVxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyU29ydENvbnRhaW5lcn1cbiAgICAgIHN4PXt7IHB0OiAyLCBwYjogMiB9fVxuICAgID5cbiAgICAgIDxHcmlkIGl0ZW0+XG4gICAgICAgIDxGaWx0ZXIgb25GaWx0ZXI9e29uRmlsdGVyfSBvblJlc2V0PXtvblJlc2V0fSAvPlxuICAgICAgPC9HcmlkPlxuICAgICAgPEdyaWQgaXRlbT5cbiAgICAgICAgPFNvcnQgb25Tb3J0PXtvblNvcnR9IC8+XG4gICAgICA8L0dyaWQ+XG4gICAgPC9HcmlkPlxuICAgIDxHcmlkIGl0ZW0geHM9ezZ9IGNvbnRhaW5lciBqdXN0aWZ5Q29udGVudD1cImZsZXgtZW5kXCI+XG4gICAgICA8U2VhcmNoIG9uU2VhcmNoPXtvblNlYXJjaH0gLz5cbiAgICA8L0dyaWQ+XG4gIDwvR3JpZD5cbik7XG5cbkZpbHRlcnMucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uU29ydDogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uU2VhcmNoOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25SZXNldDogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEZpbHRlcnM7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBCb3gsIEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgRm9ybUZvb3RlciA9ICh7IHNhdmVMYWJlbCwgY2FuY2VsTGFiZWwsIG9uQ2xvc2UsIGRpc2FibGVkIH0pID0+IChcbiAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5mb290ZXJ9PlxuICAgIDxCdXR0b25cbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNhbmNlbEJ0bn1cbiAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgIG9uQ2xpY2s9e29uQ2xvc2V9XG4gICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgPlxuICAgICAge2NhbmNlbExhYmVsfVxuICAgIDwvQnV0dG9uPlxuICAgIDxCdXR0b25cbiAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuc2F2ZUJ0bn1cbiAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgPlxuICAgICAge3NhdmVMYWJlbH1cbiAgICA8L0J1dHRvbj5cbiAgPC9Cb3g+XG4pO1xuXG5Gb3JtRm9vdGVyLnByb3BUeXBlcyA9IHtcbiAgc2F2ZUxhYmVsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBjYW5jZWxMYWJlbDogUHJvcFR5cGVzLnN0cmluZyxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMsXG4gIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgRm9ybUZvb3RlcjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBFcnJvckljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXJyb3JcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuZnVuY3Rpb24gRXJyb3JMYWJlbCh7IG1lc3NhZ2UsIGNvbG9yLCBjbGFzc05hbWVzLCBkYXRhVGVzdElkIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8c3BhblxuICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuZXJyb3JMYWJlbH0gJHtjbGFzc05hbWVzICYmIGNsYXNzTmFtZXN9YH1cbiAgICAgIHN0eWxlPXt7IGNvbG9yIH19XG4gICAgICBkYXRhLXRlc3RpZD17ZGF0YVRlc3RJZH1cbiAgICA+XG4gICAgICA8RXJyb3JJY29uIHN4PXt7IGNvbG9yIH19IC8+XG4gICAgICB7bWVzc2FnZX1cbiAgICA8L3NwYW4+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IEVycm9yTGFiZWw7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBCYWNrZHJvcCwgQ2lyY3VsYXJQcm9ncmVzcyB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5cbmNvbnN0IExvYWRlciA9ICh7IG9wZW4gfSkgPT4gKFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVyc1xuICA8QmFja2Ryb3Agb3Blbj17b3Blbn0gc3g9eyh0aGVtZSkgPT4gKHsgekluZGV4OiB0aGVtZS56SW5kZXguZHJhd2VyICsgMSB9KX0+XG4gICAgPENpcmN1bGFyUHJvZ3Jlc3MgY29sb3I9XCJpbmhlcml0XCIgLz5cbiAgPC9CYWNrZHJvcD5cbik7XG5cbkxvYWRlci5wcm9wVHlwZXMgPSB7XG4gIG9wZW46IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBMb2FkZXI7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBzaGFsbG93RXF1YWwsIHVzZVNlbGVjdG9yIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgSW5maW5pdGVTY3JvbGwgZnJvbSBcInJlYWN0LWluZmluaXRlLXNjcm9sbC1jb21wb25lbnRcIjtcbmltcG9ydCBPcmRlcnNMaXN0IGZyb20gXCIuLi9PcmRlcnNMaXN0XCI7XG5pbXBvcnQgeyBPTkVfUEFHRV9ORVhUIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBNeU9yZGVyc1RpY2tldHMgPSAoeyBmZXRjaERhdGEgfSkgPT4ge1xuICBjb25zdCB7IHN1bW1pdCwgbWVtYmVyT3JkZXJzLCBvcmRlcnNfY3VycmVudF9wYWdlLCBvcmRlcnNfbGFzdF9wYWdlIH0gPVxuICAgIHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGlkPVwiaW5maW5pdGVXcmFwcGVyXCIgY2xhc3NOYW1lPXtzdHlsZXMubXlPcmRlcnNXcmFwcGVyfT5cbiAgICAgIDxJbmZpbml0ZVNjcm9sbFxuICAgICAgICBkYXRhTGVuZ3RoPXttZW1iZXJPcmRlcnM/Lmxlbmd0aH1cbiAgICAgICAgbmV4dD17KCkgPT4gZmV0Y2hEYXRhKG9yZGVyc19jdXJyZW50X3BhZ2UgKyBPTkVfUEFHRV9ORVhUKX1cbiAgICAgICAgaGFzTW9yZT17b3JkZXJzX2N1cnJlbnRfcGFnZSA8IG9yZGVyc19sYXN0X3BhZ2V9XG4gICAgICAgIHNjcm9sbFRocmVzaG9sZD17MX1cbiAgICAgID5cbiAgICAgICAge21lbWJlck9yZGVycz8ubWFwKChvcmRlcikgPT4gKFxuICAgICAgICAgIDxPcmRlcnNMaXN0XG4gICAgICAgICAgICBrZXk9e29yZGVyLm51bWJlciArIG9yZGVyLmlkfVxuICAgICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgLz5cbiAgICAgICAgKSl9XG4gICAgICA8L0luZmluaXRlU2Nyb2xsPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgTXlPcmRlcnNUaWNrZXRzO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5jb25zdCBUaWNrZXRzSWNvbiA9ICgpID0+IChcbiAgPHN2Z1xuICAgIHdpZHRoPVwiMTI5XCJcbiAgICBoZWlnaHQ9XCI4MFwiXG4gICAgdmlld0JveD1cIjAgMCAxMjkgODBcIlxuICAgIGZpbGw9XCJub25lXCJcbiAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgPlxuICAgIDxwYXRoXG4gICAgICBkPVwiTTEyNS4xMjIgMzYuNDc4MUMxMjQuODE0IDM3LjUxMTIgMTIzLjczOCAzOC4wODkxIDEyMi42NjEgMzguMDM3NkMxMTguNTA2IDM3LjgzODYgMTE0LjU5MyA0MC40NzU0IDExMy4zNDkgNDQuNjQxMkMxMTIuMTA1IDQ4LjgwNzMgMTEzLjkzMiA1My4xNTc2IDExNy41MTcgNTUuMjY5N0MxMTguNDQ2IDU1LjgxNjkgMTE5LjAyOCA1Ni44ODk5IDExOC43MiA1Ny45MjMxTDExNi4zNjkgNjUuNzk2N0MxMTYuMDUzIDY2Ljg1NTEgMTE0LjkzOSA2Ny40NTcgMTEzLjg4MSA2Ny4xNDFMMzAuNzY3NSA0Mi4zMjcxQzI5LjcwOTEgNDIuMDExMiAyOS4xMDcyIDQwLjg5NyAyOS40MjMyIDM5LjgzODZMNDAuMzQzOSAzLjI2MDE2QzQwLjY1OTkgMi4yMDE3NiA0MS43NzQgMS41OTk5MSA0Mi44MzI0IDEuOTE1OUwxMjUuOTQ2IDI2LjcyOTdDMTI3LjAwNCAyNy4wNDU3IDEyNy42MDYgMjguMTU5OSAxMjcuMjkgMjkuMjE4M0wxMjUuMTIyIDM2LjQ3ODFaXCJcbiAgICAgIGZpbGw9XCJ3aGl0ZVwiXG4gICAgLz5cbiAgICA8cGF0aFxuICAgICAgZD1cIk0xMTMuMzQ5IDQ0LjY0MTJMMTEyLjM5MSA0NC4zNTUxTDExMi4zOTEgNDQuMzU1MkwxMTMuMzQ5IDQ0LjY0MTJaTTExNy41MTcgNTUuMjY5N0wxMTcuMDA5IDU2LjEzMTJMMTE3LjUxNyA1NS4yNjk3Wk0xMjIuNjYxIDM4LjAzNzZMMTIyLjcwOSAzNy4wMzg3QzExOC4xMDUgMzYuODE4MyAxMTMuNzY5IDM5LjczODEgMTEyLjM5MSA0NC4zNTUxTDExMy4zNDkgNDQuNjQxMkwxMTQuMzA3IDQ0LjkyNzRDMTE1LjQxNiA0MS4yMTI3IDExOC45MDYgMzguODU4OSAxMjIuNjE0IDM5LjAzNjRMMTIyLjY2MSAzOC4wMzc2Wk0xMTMuMzQ5IDQ0LjY0MTJMMTEyLjM5MSA0NC4zNTUyQzExMS4wMTIgNDguOTcyNSAxMTMuMDM4IDUzLjc5MTUgMTE3LjAwOSA1Ni4xMzEyTDExNy41MTcgNTUuMjY5N0wxMTguMDI0IDU0LjQwODFDMTE0LjgyNiA1Mi41MjM4IDExMy4xOTggNDguNjQyMSAxMTQuMzA3IDQ0LjkyNzNMMTEzLjM0OSA0NC42NDEyWk0xMTguNzIgNTcuOTIzMUwxMTcuNzYyIDU3LjYzN0wxMTUuNDExIDY1LjUxMDZMMTE2LjM2OSA2NS43OTY3TDExNy4zMjcgNjYuMDgyOEwxMTkuNjc4IDU4LjIwOTFMMTE4LjcyIDU3LjkyMzFaTTExMy44ODEgNjcuMTQxTDExNC4xNjcgNjYuMTgyOEwzMS4wNTM1IDQxLjM2ODlMMzAuNzY3NSA0Mi4zMjcxTDMwLjQ4MTQgNDMuMjg1NEwxMTMuNTk1IDY4LjA5OTJMMTEzLjg4MSA2Ny4xNDFaTTI5LjQyMzIgMzkuODM4NkwzMC4zODE0IDQwLjEyNDdMNDEuMzAyMSAzLjU0NjI0TDQwLjM0MzkgMy4yNjAxNkwzOS4zODU3IDIuOTc0MDlMMjguNDY1IDM5LjU1MjVMMjkuNDIzMiAzOS44Mzg2Wk00Mi44MzI0IDEuOTE1OUw0Mi41NDY0IDIuODc0MTFMMTI1LjY2IDI3LjY4NzlMMTI1Ljk0NiAyNi43Mjk3TDEyNi4yMzIgMjUuNzcxNUw0My4xMTg1IDAuOTU3Njk3TDQyLjgzMjQgMS45MTU5Wk0xMjcuMjkgMjkuMjE4M0wxMjYuMzMyIDI4LjkzMjJMMTI0LjE2NCAzNi4xOTJMMTI1LjEyMiAzNi40NzgxTDEyNi4wODEgMzYuNzY0MkwxMjguMjQ4IDI5LjUwNDRMMTI3LjI5IDI5LjIxODNaTTEyNS45NDYgMjYuNzI5N0wxMjUuNjYgMjcuNjg3OUMxMjYuMTg5IDI3Ljg0NTkgMTI2LjQ5IDI4LjQwMyAxMjYuMzMyIDI4LjkzMjJMMTI3LjI5IDI5LjIxODNMMTI4LjI0OCAyOS41MDQ0QzEyOC43MjIgMjcuOTE2OCAxMjcuODE5IDI2LjI0NTUgMTI2LjIzMiAyNS43NzE1TDEyNS45NDYgMjYuNzI5N1pNMzAuNzY3NSA0Mi4zMjcxTDMxLjA1MzUgNDEuMzY4OUMzMC41MjQzIDQxLjIxMDkgMzAuMjIzNCA0MC42NTM5IDMwLjM4MTQgNDAuMTI0N0wyOS40MjMyIDM5LjgzODZMMjguNDY1IDM5LjU1MjVDMjcuOTkxIDQxLjE0MDEgMjguODkzOCA0Mi44MTE0IDMwLjQ4MTQgNDMuMjg1NEwzMC43Njc1IDQyLjMyNzFaTTExNi4zNjkgNjUuNzk2N0wxMTUuNDExIDY1LjUxMDZDMTE1LjI1MyA2Ni4wMzk4IDExNC42OTYgNjYuMzQwOCAxMTQuMTY3IDY2LjE4MjhMMTEzLjg4MSA2Ny4xNDFMMTEzLjU5NSA2OC4wOTkyQzExNS4xODIgNjguNTczMiAxMTYuODUzIDY3LjY3MDQgMTE3LjMyNyA2Ni4wODI4TDExNi4zNjkgNjUuNzk2N1pNMTE3LjUxNyA1NS4yNjk3TDExNy4wMDkgNTYuMTMxMkMxMTcuNjUzIDU2LjUxMDUgMTE3LjkwNSA1Ny4xNTcgMTE3Ljc2MiA1Ny42MzdMMTE4LjcyIDU3LjkyMzFMMTE5LjY3OCA1OC4yMDkxQzEyMC4xNTIgNTYuNjIyOCAxMTkuMjM5IDU1LjEyMzQgMTE4LjAyNCA1NC40MDgxTDExNy41MTcgNTUuMjY5N1pNNDAuMzQzOSAzLjI2MDE2TDQxLjMwMjEgMy41NDYyNEM0MS40NjAxIDMuMDE3MDQgNDIuMDE3MSAyLjcxNjExIDQyLjU0NjQgMi44NzQxMUw0Mi44MzI0IDEuOTE1OUw0My4xMTg1IDAuOTU3Njk3QzQxLjUzMDkgMC40ODM3MSAzOS44NTk2IDEuMzg2NDggMzkuMzg1NyAyLjk3NDA5TDQwLjM0MzkgMy4yNjAxNlpNMTIyLjY2MSAzOC4wMzc2TDEyMi42MTQgMzkuMDM2NEMxMjQuMDIxIDM5LjEwMzggMTI1LjYwNyAzOC4zNTA1IDEyNi4wODEgMzYuNzY0MkwxMjUuMTIyIDM2LjQ3ODFMMTI0LjE2NCAzNi4xOTJDMTI0LjAyMSAzNi42NzIgMTIzLjQ1NiAzNy4wNzQ0IDEyMi43MDkgMzcuMDM4N0wxMjIuNjYxIDM4LjAzNzZaXCJcbiAgICAgIGZpbGw9XCIjQkRCREJEXCJcbiAgICAvPlxuICAgIDxwYXRoXG4gICAgICBkPVwiTTEwNy45MDMgMjIuNjc1OEw5Ni41Njk2IDYwLjYzNzlcIlxuICAgICAgc3Ryb2tlPVwiI0JEQkRCRFwiXG4gICAgICBzdHJva2VXaWR0aD1cIjJcIlxuICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgIHN0cm9rZURhc2hhcnJheT1cIjIgNVwiXG4gICAgLz5cbiAgICA8cGF0aFxuICAgICAgZD1cIk05MS43NDIgNDUuODk1MkM5MS43NDE5IDQ2Ljk3MzQgOTAuODc2NSA0Ny44MzQ3IDg5LjgyOTcgNDguMDkzM0M4NS43OTA2IDQ5LjA5MTMgODIuNzk1OSA1Mi43Mzc2IDgyLjc5NTMgNTcuMDg1MkM4Mi43OTQ4IDYxLjQzMjkgODUuNzg4NyA2NS4wNzkyIDg5LjgyNzYgNjYuMDc3OUM5MC44NzQyIDY2LjMzNjcgOTEuNzM5NCA2Ny4xOTgzIDkxLjczOTIgNjguMjc2NEw5MS43MzgyIDc2LjQ5MzVDOTEuNzM4MSA3Ny41OTgxIDkwLjg0MjYgNzguNDkzNCA4OS43MzggNzguNDkzM0wyLjk5OTcyIDc4LjQ4MjdDMS44OTUxNSA3OC40ODI1IDAuOTk5ODI1IDc3LjU4NyAwLjk5OTk2IDc2LjQ4MjRMMS4wMDQ2NCAzOC4zMDg2QzEuMDA0NzcgMzcuMjA0IDEuOTAwMzEgMzYuMzA4NyAzLjAwNDg4IDM2LjMwODhMODkuNzQzMiAzNi4zMTk1QzkwLjg0NzcgMzYuMzE5NiA5MS43NDMxIDM3LjIxNTEgOTEuNzQyOSAzOC4zMTk3TDkxLjc0MiA0NS44OTUyWlwiXG4gICAgICBmaWxsPVwid2hpdGVcIlxuICAgIC8+XG4gICAgPHBhdGhcbiAgICAgIGQ9XCJNODIuNzk1MyA1Ny4wODUyTDgxLjc5NTMgNTcuMDg1MUw4MS43OTUzIDU3LjA4NTFMODIuNzk1MyA1Ny4wODUyWk04OS44Mjk3IDQ4LjA5MzNMOTAuMDY5NiA0OS4wNjQxTDg5LjgyOTcgNDguMDkzM1pNODkuODI5NyA0OC4wOTMzTDg5LjU4OTkgNDcuMTIyNUM4NS4xMTUgNDguMjI4MSA4MS43OTYgNTIuMjY2NyA4MS43OTUzIDU3LjA4NTFMODIuNzk1MyA1Ny4wODUyTDgzLjc5NTMgNTcuMDg1NEM4My43OTU4IDUzLjIwODQgODYuNDY2MyA0OS45NTQ0IDkwLjA2OTYgNDkuMDY0MUw4OS44Mjk3IDQ4LjA5MzNaTTgyLjc5NTMgNTcuMDg1Mkw4MS43OTUzIDU3LjA4NTFDODEuNzk0NyA2MS45MDM2IDg1LjExMjkgNjUuOTQyMiA4OS41ODc1IDY3LjA0ODdMODkuODI3NiA2Ni4wNzc5TDkwLjA2NzYgNjUuMTA3MUM4Ni40NjQ0IDY0LjIxNjIgODMuNzk0OCA2MC45NjIyIDgzLjc5NTMgNTcuMDg1M0w4Mi43OTUzIDU3LjA4NTJaTTkxLjczOTIgNjguMjc2NEw5MC43MzkyIDY4LjI3NjNMOTAuNzM4MiA3Ni40OTM0TDkxLjczODIgNzYuNDkzNUw5Mi43MzgyIDc2LjQ5MzdMOTIuNzM5MiA2OC4yNzY2TDkxLjczOTIgNjguMjc2NFpNODkuNzM4IDc4LjQ5MzNMODkuNzM4MSA3Ny40OTMzTDIuOTk5ODQgNzcuNDgyN0wyLjk5OTcyIDc4LjQ4MjdMMi45OTk2IDc5LjQ4MjdMODkuNzM3OSA3OS40OTMzTDg5LjczOCA3OC40OTMzWk0wLjk5OTk2IDc2LjQ4MjRMMS45OTk5NiA3Ni40ODI1TDIuMDA0NjQgMzguMzA4N0wxLjAwNDY0IDM4LjMwODZMMC4wMDQ2Mzc3NiAzOC4zMDg1TC0zLjk2MDc1ZS0wNSA3Ni40ODIzTDAuOTk5OTYgNzYuNDgyNFpNMy4wMDQ4OCAzNi4zMDg4TDMuMDA0NzYgMzcuMzA4OEw4OS43NDMgMzcuMzE5NUw4OS43NDMyIDM2LjMxOTVMODkuNzQzMyAzNS4zMTk1TDMuMDA1MDEgMzUuMzA4OEwzLjAwNDg4IDM2LjMwODhaTTkxLjc0MjkgMzguMzE5N0w5MC43NDI5IDM4LjMxOTZMOTAuNzQyIDQ1Ljg5NTFMOTEuNzQyIDQ1Ljg5NTJMOTIuNzQyIDQ1Ljg5NTNMOTIuNzQyOSAzOC4zMTk4TDkxLjc0MjkgMzguMzE5N1pNODkuNzQzMiAzNi4zMTk1TDg5Ljc0MyAzNy4zMTk1QzkwLjI5NTMgMzcuMzE5NSA5MC43NDMgMzcuNzY3MyA5MC43NDI5IDM4LjMxOTZMOTEuNzQyOSAzOC4zMTk3TDkyLjc0MjkgMzguMzE5OEM5Mi43NDMxIDM2LjY2MyA5MS40MDAxIDM1LjMxOTcgODkuNzQzMyAzNS4zMTk1TDg5Ljc0MzIgMzYuMzE5NVpNMi45OTk3MiA3OC40ODI3TDIuOTk5ODQgNzcuNDgyN0MyLjQ0NzU1IDc3LjQ4MjYgMS45OTk4OSA3Ny4wMzQ4IDEuOTk5OTYgNzYuNDgyNUwwLjk5OTk2IDc2LjQ4MjRMLTMuOTYwNzVlLTA1IDc2LjQ4MjNDLTAuMDAwMjQyNjE5IDc4LjEzOTIgMS4zNDI3NCA3OS40ODI1IDIuOTk5NiA3OS40ODI3TDIuOTk5NzIgNzguNDgyN1pNOTEuNzM4MiA3Ni40OTM1TDkwLjczODIgNzYuNDkzNEM5MC43MzgyIDc3LjA0NTcgOTAuMjkwNCA3Ny40OTM0IDg5LjczODEgNzcuNDkzM0w4OS43MzggNzguNDkzM0w4OS43Mzc5IDc5LjQ5MzNDOTEuMzk0NyA3OS40OTM1IDkyLjczOCA3OC4xNTA1IDkyLjczODIgNzYuNDkzN0w5MS43MzgyIDc2LjQ5MzVaTTg5LjgyNzYgNjYuMDc3OUw4OS41ODc1IDY3LjA0ODdDOTAuMzEyOCA2Ny4yMjggOTAuNzM5MyA2Ny43NzU0IDkwLjczOTIgNjguMjc2M0w5MS43MzkyIDY4LjI3NjRMOTIuNzM5MiA2OC4yNzY2QzkyLjczOTUgNjYuNjIxMSA5MS40MzU2IDY1LjQ0NTQgOTAuMDY3NiA2NS4xMDcxTDg5LjgyNzYgNjYuMDc3OVpNMS4wMDQ2NCAzOC4zMDg2TDIuMDA0NjQgMzguMzA4N0MyLjAwNDcxIDM3Ljc1NjQgMi40NTI0OCAzNy4zMDg4IDMuMDA0NzYgMzcuMzA4OEwzLjAwNDg4IDM2LjMwODhMMy4wMDUwMSAzNS4zMDg4QzEuMzQ4MTUgMzUuMzA4NiAwLjAwNDg0MDc3IDM2LjY1MTYgMC4wMDQ2Mzc3NiAzOC4zMDg1TDEuMDA0NjQgMzguMzA4NlpNODkuODI5NyA0OC4wOTMzTDkwLjA2OTYgNDkuMDY0MUM5MS40Mzc2IDQ4LjcyNjEgOTIuNzQxOCA0Ny41NTA4IDkyLjc0MiA0NS44OTUzTDkxLjc0MiA0NS44OTUyTDkwLjc0MiA0NS44OTUxQzkwLjc0MTkgNDYuMzk2IDkwLjMxNTMgNDYuOTQzMyA4OS41ODk5IDQ3LjEyMjVMODkuODI5NyA0OC4wOTMzWlwiXG4gICAgICBmaWxsPVwiI0JEQkRCRFwiXG4gICAgLz5cbiAgICA8cGF0aFxuICAgICAgZD1cIk03MS4yOTQ5IDM3LjU5NTdMNzEuMjkwMSA3Ny4yMTM2XCJcbiAgICAgIHN0cm9rZT1cIiNCREJEQkRcIlxuICAgICAgc3Ryb2tlV2lkdGg9XCIyXCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VEYXNoYXJyYXk9XCIyIDVcIlxuICAgIC8+XG4gIDwvc3ZnPlxuKTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0c0ljb247XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgQm94LCBCdXR0b24sIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IFRpY2tldHNJY29uIGZyb20gXCIuL1RpY2tldHNJY29uXCI7XG5pbXBvcnQgeyBUQUJTIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBOb1RpY2tldHNGb3VuZCA9ICh7IHBhZ2VWaWV3LCBvbkNsaWNrIH0pID0+IHtcbiAgY29uc3QgeyBzdW1taXQsIGxvYWRpbmcgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30pO1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgY29uc3QgZ2V0Q29udGVudCA9ICgpID0+IHtcbiAgICBjb25zdCBtYWlsdG9UYWcgPSAoXG4gICAgICA8YSBocmVmPXtgbWFpbHRvOiR7c3VtbWl0LnN1cHBvcnRfZW1haWx9YH0+XG4gICAgICAgIHt0KFwiZ2VuZXJhbC5jb250YWN0X3N1cHBvcnRcIil9XG4gICAgICA8L2E+XG4gICAgKTtcblxuICAgIHN3aXRjaCAocGFnZVZpZXcpIHtcbiAgICAgIGNhc2UgVEFCUy5PUkRFUlM6IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0aXRsZTogdChcIm5vX3Jlc3VsdHMub3JkZXJzLnRpdGxlXCIpLFxuICAgICAgICAgIGJvZHk6IChcbiAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgIHt0KFwibm9fcmVzdWx0cy5vcmRlcnMuYm9keVwiKX0ge21haWx0b1RhZ30uXG4gICAgICAgICAgICA8Lz5cbiAgICAgICAgICApLFxuICAgICAgICAgIGJ1dHRvbkxhYmVsOiB0KFwibGFiZWxzLmFzc2lnbmVkX3RvX21lXCIpXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBjYXNlIFRBQlMuVElDS0VUUzoge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHRpdGxlOiB0KFwibm9fcmVzdWx0cy5hc3NpZ25lZC50aXRsZVwiKSxcbiAgICAgICAgICBib2R5OiAoXG4gICAgICAgICAgICA8PlxuICAgICAgICAgICAgICB7dChcIm5vX3Jlc3VsdHMuYXNzaWduZWQuYm9keVwiKX0ge21haWx0b1RhZ30uXG4gICAgICAgICAgICA8Lz5cbiAgICAgICAgICApLFxuICAgICAgICAgIGJ1dHRvbkxhYmVsOiB0KFwib3JkZXJzLnRpdGxlXCIpXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdGl0bGU6IHQoXCJub19yZXN1bHRzLmZpbHRlci50aXRsZVwiKSxcbiAgICAgICAgICBib2R5OiB0KFwibm9fcmVzdWx0cy5maWx0ZXIuYm9keVwiKSxcbiAgICAgICAgICBidXR0b25MYWJlbDogdChcImZpbHRlci5jbGVhcl9maWx0ZXJzXCIpXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IHsgdGl0bGUsIGJvZHksIGJ1dHRvbkxhYmVsIH0gPSBnZXRDb250ZW50KCk7XG5cbiAgaWYgKGxvYWRpbmcpIHJldHVybiBudWxsO1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy53cmFwcGVyfT5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuaWNvbldyYXBwZXJ9PlxuICAgICAgICA8VGlja2V0c0ljb24gLz5cbiAgICAgIDwvQm94PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImg2XCIgY2xhc3NOYW1lPXtzdHlsZXMudGl0bGV9PlxuICAgICAgICB7dGl0bGV9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICA8VHlwb2dyYXBoeVxuICAgICAgICB2YXJpYW50PVwiYm9keTFcIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5ib2R5fVxuICAgICAgICBzeD17eyBjb2xvcjogXCJ0ZXh0LnNlY29uZGFyeVwiIH19XG4gICAgICA+XG4gICAgICAgIHtib2R5fVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgPEJ1dHRvblxuICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgb25DbGljaz17b25DbGlja31cbiAgICAgID5cbiAgICAgICAge2J1dHRvbkxhYmVsfVxuICAgICAgPC9CdXR0b24+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBOb1RpY2tldHNGb3VuZDtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7XG4gIERvY3VtZW50LFxuICBQYWdlLFxuICBUZXh0LFxuICBWaWV3LFxuICBJbWFnZSxcbiAgU3R5bGVTaGVldCxcbiAgRm9udCxcbiAgcGRmXG59IGZyb20gXCJAcmVhY3QtcGRmL3JlbmRlcmVyXCI7XG5cbi8vIFRyYWNrIHJlZ2lzdGVyZWQgZm9udHMgdG8gYXZvaWQgcmUtcmVnaXN0ZXJpbmdcbmNvbnN0IHJlZ2lzdGVyZWRGb250cyA9IG5ldyBTZXQoKTtcblxuLy8gQnVpbHQtaW4gZmFsbGJhY2sgZm9udCAoYXZhaWxhYmxlIGluIEByZWFjdC1wZGYvcmVuZGVyZXIgd2l0aG91dCByZWdpc3RyYXRpb24pXG5jb25zdCBGQUxMQkFDS19GT05UID0gXCJIZWx2ZXRpY2FcIjtcblxuLy8gRGVmYXVsdCByZWNlaXB0IHNldHRpbmdzXG5jb25zdCBERUZBVUxUX1JFQ0VJUFRfU0VUVElOR1MgPSB7XG4gIHByaW1hcnlDb2xvcjogXCIjMzMzMzMzXCIsXG4gIGZvbnRGYW1pbHk6IG51bGwsIC8vIEZvbnQgZmFtaWx5IG5hbWUgKGNvbnN1bWVyIHNob3VsZCBwcm92aWRlIHRoaXMpXG4gIGZvbnRGaWxlOiBudWxsLCAvLyBVUkwgdG8gZm9udCBmaWxlICh0dGYpIC0gcmVxdWlyZWQgaWYgZm9udEZhbWlseSBpcyBwcm92aWRlZFxuICBwcmludExvZ286IG51bGwsXG4gIG9yZ2FuaXplckxlZ2FsTmFtZTogbnVsbCxcbiAgb3JnYW5pemVyQWRkcmVzc0xpbmUxOiBudWxsLFxuICBvcmdhbml6ZXJBZGRyZXNzTGluZTI6IG51bGwsXG4gIG9yZ2FuaXplckNpdHk6IG51bGwsXG4gIG9yZ2FuaXplclN0YXRlOiBudWxsLFxuICBvcmdhbml6ZXJQb3N0YWxDb2RlOiBudWxsLFxuICBvcmdhbml6ZXJDb3VudHJ5OiBudWxsLFxuICBvcmdhbml6ZXJUYXhJZDogbnVsbCxcbiAgb3JnYW5pemVyVGF4SWRMYWJlbDogbnVsbCxcbiAgc3VwcG9ydEVtYWlsOiBudWxsXG59O1xuXG4vKipcbiAqIFJlZ2lzdGVyIGEgY3VzdG9tIGZvbnQgZm9yIFBERiBnZW5lcmF0aW9uXG4gKiBAcGFyYW0ge3N0cmluZ30gZm9udEZhbWlseSAtIEZvbnQgZmFtaWx5IG5hbWVcbiAqIEBwYXJhbSB7c3RyaW5nfSBmb250RmlsZSAtIFVSTCB0byB0aGUgZm9udCBmaWxlIChtdXN0IGJlIHR0ZilcbiAqIEByZXR1cm5zIHtib29sZWFufSAtIFdoZXRoZXIgcmVnaXN0cmF0aW9uIHdhcyBzdWNjZXNzZnVsXG4gKi9cbmNvbnN0IHJlZ2lzdGVyRm9udCA9IChmb250RmFtaWx5LCBmb250RmlsZSkgPT4ge1xuICBpZiAoIWZvbnRGYW1pbHkgfHwgIWZvbnRGaWxlKSByZXR1cm4gZmFsc2U7XG4gIGlmIChyZWdpc3RlcmVkRm9udHMuaGFzKGZvbnRGYW1pbHkpKSByZXR1cm4gdHJ1ZTtcblxuICB0cnkge1xuICAgIEZvbnQucmVnaXN0ZXIoe1xuICAgICAgZmFtaWx5OiBmb250RmFtaWx5LFxuICAgICAgZm9udHM6IFtcbiAgICAgICAgeyBzcmM6IGZvbnRGaWxlLCBmb250V2VpZ2h0OiBcIm5vcm1hbFwiIH0sXG4gICAgICAgIHsgc3JjOiBmb250RmlsZSwgZm9udFdlaWdodDogXCJib2xkXCIgfVxuICAgICAgXVxuICAgIH0pO1xuICAgIHJlZ2lzdGVyZWRGb250cy5hZGQoZm9udEZhbWlseSk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29uc29sZS53YXJuKFwiRmFpbGVkIHRvIHJlZ2lzdGVyIGZvbnQ6XCIsIGVycm9yKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn07XG5cbi8vIFZhbGlkYXRlIGltYWdlIFVSTCBiZWZvcmUgUERGIGdlbmVyYXRpb24gKHNhbWUgcGF0dGVybiBhcyBjZXJ0aWZpY2F0ZSlcbmNvbnN0IHZhbGlkYXRlSW1hZ2VVcmwgPSBhc3luYyAodXJsKSA9PiB7XG4gIGlmICghdXJsKSByZXR1cm4gbnVsbDtcblxuICB0cnkge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsLCB7XG4gICAgICBtZXRob2Q6IFwiR0VUXCIsXG4gICAgICBtb2RlOiBcImNvcnNcIlxuICAgIH0pO1xuXG4gICAgaWYgKHJlc3BvbnNlLm9rKSB7XG4gICAgICByZXR1cm4gdXJsO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBjb25zb2xlLndhcm4oXCJJbWFnZSB2YWxpZGF0aW9uIGZhaWxlZDpcIiwgZXJyb3IpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG59O1xuXG5jb25zdCBDVVJSRU5DWV9ERUNJTUFMUyA9IDI7XG5jb25zdCBNU19QRVJfU0VDT05EID0gMTAwMDtcbmNvbnN0IE1JTl9NQVNLX0xFTkdUSCA9IDI7XG5jb25zdCBNQVhfTUFTS19DSEFSUyA9IDQ7XG5cbmNvbnN0IGZvcm1hdEN1cnJlbmN5ID0gKGFtb3VudCwgY3VycmVuY3lTeW1ib2wgPSBcIiRcIiwgY3VycmVuY3kgPSBcIlVTRFwiKSA9PiB7XG4gIGNvbnN0IG51bUFtb3VudCA9IHBhcnNlRmxvYXQoYW1vdW50KSB8fCAwO1xuICByZXR1cm4gYCR7Y3VycmVuY3lTeW1ib2x9JHtudW1BbW91bnQudG9GaXhlZChDVVJSRU5DWV9ERUNJTUFMUyl9ICR7Y3VycmVuY3l9YDtcbn07XG5cbmNvbnN0IGZvcm1hdERhdGUgPSAodGltZXN0YW1wKSA9PiB7XG4gIGlmICghdGltZXN0YW1wKSByZXR1cm4gXCJcIjtcbiAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHRpbWVzdGFtcCAqIE1TX1BFUl9TRUNPTkQpO1xuICByZXR1cm4gZGF0ZS50b0xvY2FsZURhdGVTdHJpbmcoXCJlbi1VU1wiLCB7XG4gICAgeWVhcjogXCJudW1lcmljXCIsXG4gICAgbW9udGg6IFwibG9uZ1wiLFxuICAgIGRheTogXCIyLWRpZ2l0XCJcbiAgfSk7XG59O1xuXG5jb25zdCBtYXNrUHJvbW9Db2RlID0gKGNvZGUpID0+IHtcbiAgaWYgKCFjb2RlIHx8IGNvZGUubGVuZ3RoIDw9IE1JTl9NQVNLX0xFTkdUSCkgcmV0dXJuIGNvZGU7XG4gIGNvbnN0IGNoYXJzID0gWy4uLmNvZGVdO1xuICBjb25zdCBmaXJzdCA9IGNoYXJzLnNoaWZ0KCk7XG4gIGNvbnN0IGxhc3QgPSBjaGFycy5wb3AoKTtcbiAgY29uc3QgbWFza0xlbmd0aCA9IE1hdGgubWluKGNoYXJzLmxlbmd0aCwgTUFYX01BU0tfQ0hBUlMpO1xuICByZXR1cm4gYCR7Zmlyc3R9JHtcIipcIi5yZXBlYXQobWFza0xlbmd0aCl9JHtsYXN0fWA7XG59O1xuXG5jb25zdCBjYXBpdGFsaXplID0gKHN0cikgPT4ge1xuICBpZiAoIXN0cikgcmV0dXJuIG51bGw7XG4gIGNvbnN0IFtmaXJzdCwgLi4ucmVzdF0gPSBzdHI7XG4gIHJldHVybiBmaXJzdC50b1VwcGVyQ2FzZSgpICsgcmVzdC5qb2luKFwiXCIpO1xufTtcblxuY29uc3QgZ2V0QmFkZ2VTdGF0dXMgPSAoYW1vdW50LCByZWZ1bmRlZEFtb3VudCkgPT4ge1xuICBjb25zdCBudW1BbW91bnQgPSBwYXJzZUZsb2F0KGFtb3VudCkgfHwgMDtcbiAgY29uc3QgbnVtUmVmdW5kZWQgPSBwYXJzZUZsb2F0KHJlZnVuZGVkQW1vdW50KSB8fCAwO1xuICBpZiAobnVtQW1vdW50ID4gMCAmJiBudW1SZWZ1bmRlZCA+PSBudW1BbW91bnQpIHtcbiAgICByZXR1cm4geyB0ZXh0OiBcIlJFRlVOREVEXCIsIGNvbG9yOiBcIiM2NjY2NjZcIiB9O1xuICB9XG4gIGlmIChudW1SZWZ1bmRlZCA+IDApIHtcbiAgICByZXR1cm4geyB0ZXh0OiBcIlBBUlRJQUwgUkVGVU5EXCIsIGNvbG9yOiBcIiNlNjdlMjJcIiB9O1xuICB9XG4gIHJldHVybiB7IHRleHQ6IFwiUEFJRFwiLCBjb2xvcjogXCIjMGE3YTJmXCIgfTtcbn07XG5cbmNvbnN0IGdldFBheW1lbnRNZXRob2RMYWJlbCA9IChvcmRlcikgPT4ge1xuICBjb25zdCB7IHBheW1lbnRfaW5mb190eXBlLCBwYXltZW50X21ldGhvZCB9ID0gb3JkZXI7XG5cbiAgc3dpdGNoIChwYXltZW50X2luZm9fdHlwZSkge1xuICAgIGNhc2UgXCJjYXJkXCI6XG4gICAgICByZXR1cm4gXCJDcmVkaXQgLyBEZWJpdCBDYXJkXCI7XG4gICAgY2FzZSBcImxpbmtcIjpcbiAgICAgIHJldHVybiBcIkxpbmsgUGF5bWVudFwiO1xuICAgIGNhc2UgXCJ1c19iYW5rX2FjY291bnRcIjpcbiAgICAgIHJldHVybiBcIkJhbmsgVHJhbnNmZXIgKEFDSClcIjtcbiAgICBjYXNlIFwiYWxpcGF5XCI6XG4gICAgICByZXR1cm4gXCJBbGlwYXlcIjtcbiAgICBkZWZhdWx0OlxuICAgICAgaWYgKHBheW1lbnRfbWV0aG9kID09PSBcIk9mZmxpbmVcIikgcmV0dXJuIFwiT2ZmbGluZSBQYXltZW50XCI7XG4gICAgICByZXR1cm4gXCJOL0FcIjtcbiAgfVxufTtcblxuY29uc3QgZm9ybWF0QWRkcmVzcyA9IChzZXR0aW5ncykgPT4ge1xuICBjb25zdCBwYXJ0cyA9IFtdO1xuICBpZiAoc2V0dGluZ3Mub3JnYW5pemVyQWRkcmVzc0xpbmUxKVxuICAgIHBhcnRzLnB1c2goc2V0dGluZ3Mub3JnYW5pemVyQWRkcmVzc0xpbmUxKTtcbiAgaWYgKHNldHRpbmdzLm9yZ2FuaXplckFkZHJlc3NMaW5lMilcbiAgICBwYXJ0cy5wdXNoKHNldHRpbmdzLm9yZ2FuaXplckFkZHJlc3NMaW5lMik7XG4gIGNvbnN0IGNpdHlTdGF0ZVppcCA9IFtcbiAgICBzZXR0aW5ncy5vcmdhbml6ZXJDaXR5LFxuICAgIHNldHRpbmdzLm9yZ2FuaXplclN0YXRlLFxuICAgIHNldHRpbmdzLm9yZ2FuaXplclBvc3RhbENvZGVcbiAgXVxuICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAuam9pbihcIiwgXCIpO1xuICBpZiAoY2l0eVN0YXRlWmlwKSBwYXJ0cy5wdXNoKGNpdHlTdGF0ZVppcCk7XG4gIGlmIChzZXR0aW5ncy5vcmdhbml6ZXJDb3VudHJ5KSBwYXJ0cy5wdXNoKHNldHRpbmdzLm9yZ2FuaXplckNvdW50cnkpO1xuICByZXR1cm4gcGFydHM7XG59O1xuXG5jb25zdCBSZWNlaXB0UERGID0gKHsgb3JkZXIsIHN1bW1pdCwgc2V0dGluZ3MsIGxvZ29VcmwgfSkgPT4ge1xuICBjb25zdCBwcmltYXJ5Q29sb3IgPSBzZXR0aW5ncy5wcmltYXJ5Q29sb3IgfHwgXCIjMzMzMzMzXCI7XG4gIGNvbnN0IGZvbnRGYW1pbHkgPSBzZXR0aW5ncy5mb250RmFtaWx5IHx8IEZBTExCQUNLX0ZPTlQ7XG5cbiAgY29uc3Qgc3R5bGVzID0gU3R5bGVTaGVldC5jcmVhdGUoe1xuICAgIHBhZ2U6IHtcbiAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjZmZmZmZmXCIsXG4gICAgICBmb250RmFtaWx5LFxuICAgICAgZm9udFNpemU6IDEwLFxuICAgICAgY29sb3I6IFwiIzMzMzMzM1wiLFxuICAgICAgcGFkZGluZzogNDBcbiAgICB9LFxuICAgIGhlYWRlcjoge1xuICAgICAgZmxleERpcmVjdGlvbjogXCJyb3dcIixcbiAgICAgIGp1c3RpZnlDb250ZW50OiBcInNwYWNlLWJldHdlZW5cIixcbiAgICAgIGFsaWduSXRlbXM6IFwiZmxleC1zdGFydFwiLFxuICAgICAgbWFyZ2luQm90dG9tOiA4LFxuICAgICAgYm9yZGVyQm90dG9tV2lkdGg6IDIsXG4gICAgICBib3JkZXJCb3R0b21Db2xvcjogXCIjZWVlZWVlXCIsXG4gICAgICBwYWRkaW5nQm90dG9tOiA4XG4gICAgfSxcbiAgICBoZWFkZXJMZWZ0OiB7IGZsZXg6IDEsIG1hcmdpblJpZ2h0OiAxMiB9LFxuICAgIGhlYWRlclN1YnRpdGxlOiB7IGZvbnRTaXplOiA5LCBjb2xvcjogXCIjNzc3Nzc3XCIsIG1hcmdpbkJvdHRvbTogNCB9LFxuICAgIGhlYWRlclRpdGxlUm93OiB7XG4gICAgICBmbGV4RGlyZWN0aW9uOiBcInJvd1wiLFxuICAgICAgYWxpZ25JdGVtczogXCJjZW50ZXJcIixcbiAgICAgIGZsZXhXcmFwOiBcIndyYXBcIixcbiAgICAgIG1hcmdpbkJvdHRvbTogNCxcbiAgICAgIGdhcDogOFxuICAgIH0sXG4gICAgaGVhZGVyVGl0bGU6IHtcbiAgICAgIGZvbnRTaXplOiAxNixcbiAgICAgIGZvbnRXZWlnaHQ6IFwiYm9sZFwiLFxuICAgICAgY29sb3I6IHByaW1hcnlDb2xvclxuICAgIH0sXG4gICAgaGVhZGVyVGFnbGluZTogeyBmb250U2l6ZTogOSwgY29sb3I6IFwiIzY2NjY2NlwiIH0sXG4gICAgcGFpZEJhZGdlOiB7XG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiIzBhN2EyZlwiLFxuICAgICAgY29sb3I6IFwiI2ZmZmZmZlwiLFxuICAgICAgZm9udFNpemU6IDksXG4gICAgICBmb250V2VpZ2h0OiBcImJvbGRcIixcbiAgICAgIHBhZGRpbmdWZXJ0aWNhbDogNCxcbiAgICAgIHBhZGRpbmdIb3Jpem9udGFsOiAxMixcbiAgICAgIGJvcmRlclJhZGl1czogMTBcbiAgICB9LFxuICAgIGhlYWRlclJpZ2h0OiB7IGFsaWduSXRlbXM6IFwiZmxleC1lbmRcIiB9LFxuICAgIGxvZ286IHsgbWF4V2lkdGg6IDEwMCwgbWF4SGVpZ2h0OiA0MCwgb2JqZWN0Rml0OiBcImNvbnRhaW5cIiB9LFxuICAgIHR3b0NvbDogeyBmbGV4RGlyZWN0aW9uOiBcInJvd1wiLCBqdXN0aWZ5Q29udGVudDogXCJzcGFjZS1iZXR3ZWVuXCIsIGdhcDogMjQgfSxcbiAgICBjb2xIYWxmOiB7IGZsZXg6IDEgfSxcbiAgICBzZWN0aW9uVGl0bGU6IHtcbiAgICAgIGZvbnRTaXplOiA5LFxuICAgICAgZm9udFdlaWdodDogXCJib2xkXCIsXG4gICAgICBtYXJnaW5Ub3A6IDEwLFxuICAgICAgbWFyZ2luQm90dG9tOiA2LFxuICAgICAgdGV4dFRyYW5zZm9ybTogXCJ1cHBlcmNhc2VcIixcbiAgICAgIGxldHRlclNwYWNpbmc6IDAuNixcbiAgICAgIGNvbG9yOiBcIiM1NTU1NTVcIlxuICAgIH0sXG4gICAgZmllbGRMYWJlbDogeyBmb250U2l6ZTogOCwgY29sb3I6IFwiIzc3Nzc3N1wiLCBtYXJnaW5Cb3R0b206IDEgfSxcbiAgICBmaWVsZFZhbHVlOiB7IGZvbnRTaXplOiAxMCwgZm9udFdlaWdodDogXCJib2xkXCIsIG1hcmdpbkJvdHRvbTogNCB9LFxuICAgIHNtYWxsTXV0ZWQ6IHsgZm9udFNpemU6IDgsIGNvbG9yOiBcIiM3Nzc3NzdcIiB9LFxuICAgIHRhYmxlOiB7IG1hcmdpblRvcDogNCB9LFxuICAgIHRhYmxlSGVhZGVyOiB7XG4gICAgICBmbGV4RGlyZWN0aW9uOiBcInJvd1wiLFxuICAgICAgYm9yZGVyQm90dG9tV2lkdGg6IDEsXG4gICAgICBib3JkZXJCb3R0b21Db2xvcjogXCIjY2NjY2NjXCIsXG4gICAgICBwYWRkaW5nOiA2XG4gICAgfSxcbiAgICB0YWJsZUhlYWRlckNlbGw6IHtcbiAgICAgIGZvbnRTaXplOiA4LFxuICAgICAgdGV4dFRyYW5zZm9ybTogXCJ1cHBlcmNhc2VcIixcbiAgICAgIGxldHRlclNwYWNpbmc6IDAuNSxcbiAgICAgIGNvbG9yOiBcIiM1NTU1NTVcIixcbiAgICAgIGZvbnRXZWlnaHQ6IFwiYm9sZFwiXG4gICAgfSxcbiAgICB0YWJsZVJvdzoge1xuICAgICAgZmxleERpcmVjdGlvbjogXCJyb3dcIixcbiAgICAgIGJvcmRlckJvdHRvbVdpZHRoOiAxLFxuICAgICAgYm9yZGVyQm90dG9tQ29sb3I6IFwiI2VlZWVlZVwiLFxuICAgICAgcGFkZGluZzogNlxuICAgIH0sXG4gICAgdGFibGVDZWxsOiB7IGZvbnRTaXplOiA5IH0sXG4gICAgdGV4dFJpZ2h0OiB7IHRleHRBbGlnbjogXCJyaWdodFwiIH0sXG4gICAgdG90YWxzVGFibGU6IHsgbWFyZ2luVG9wOiAxNiwgbWFyZ2luTGVmdDogXCJhdXRvXCIsIHdpZHRoOiAyMjAgfSxcbiAgICB0b3RhbHNSb3c6IHtcbiAgICAgIGZsZXhEaXJlY3Rpb246IFwicm93XCIsXG4gICAgICBqdXN0aWZ5Q29udGVudDogXCJzcGFjZS1iZXR3ZWVuXCIsXG4gICAgICBwYWRkaW5nOiA0XG4gICAgfSxcbiAgICB0b3RhbHNMYWJlbDogeyBmb250U2l6ZTogOSwgY29sb3I6IFwiIzU1NTU1NVwiIH0sXG4gICAgdG90YWxzVmFsdWU6IHsgZm9udFNpemU6IDksIGZvbnRXZWlnaHQ6IFwiYm9sZFwiLCB0ZXh0QWxpZ246IFwicmlnaHRcIiB9LFxuICAgIHRvdGFsc1RvdGFsUm93OiB7XG4gICAgICBib3JkZXJUb3BXaWR0aDogMSxcbiAgICAgIGJvcmRlclRvcENvbG9yOiBcIiNjY2NjY2NcIixcbiAgICAgIHBhZGRpbmdUb3A6IDYsXG4gICAgICBtYXJnaW5Ub3A6IDRcbiAgICB9LFxuICAgIHRvdGFsc0JhbGFuY2VSb3c6IHsgY29sb3I6IFwiIzBhN2EyZlwiIH0sXG4gICAgYm94OiB7XG4gICAgICBib3JkZXJXaWR0aDogMSxcbiAgICAgIGJvcmRlckNvbG9yOiBwcmltYXJ5Q29sb3IsXG4gICAgICBib3JkZXJSYWRpdXM6IDYsXG4gICAgICBwYWRkaW5nOiAxMCxcbiAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjZmZmOGY4XCIsXG4gICAgICBtYXJnaW5Ub3A6IDE2XG4gICAgfSxcbiAgICBib3hUaXRsZToge1xuICAgICAgZm9udFNpemU6IDEwLFxuICAgICAgZm9udFdlaWdodDogXCJib2xkXCIsXG4gICAgICBjb2xvcjogcHJpbWFyeUNvbG9yLFxuICAgICAgbWFyZ2luQm90dG9tOiA2XG4gICAgfSxcbiAgICBmb290ZXI6IHtcbiAgICAgIG1hcmdpblRvcDogMjQsXG4gICAgICBmb250U2l6ZTogOCxcbiAgICAgIGNvbG9yOiBcIiM2NjY2NjZcIixcbiAgICAgIGJvcmRlclRvcFdpZHRoOiAxLFxuICAgICAgYm9yZGVyVG9wQ29sb3I6IFwiI2VlZWVlZVwiLFxuICAgICAgcGFkZGluZ1RvcDogMTBcbiAgICB9XG4gIH0pO1xuXG4gIGNvbnN0IHRpY2tldHMgPSBvcmRlci50aWNrZXRzIHx8IFtdO1xuICBjb25zdCBjdXJyZW5jeVN5bWJvbCA9IG9yZGVyLmN1cnJlbmN5X3N5bWJvbCB8fCBcIiRcIjtcbiAgY29uc3QgY3VycmVuY3kgPSBvcmRlci5jdXJyZW5jeSB8fCBcIlVTRFwiO1xuICBjb25zdCBhZGRyZXNzTGluZXMgPSBmb3JtYXRBZGRyZXNzKHNldHRpbmdzKTtcbiAgY29uc3QgYmFkZ2UgPSBnZXRCYWRnZVN0YXR1cyhvcmRlci5hbW91bnQsIG9yZGVyLnJlZnVuZGVkX2Ftb3VudCk7XG5cbiAgcmV0dXJuIChcbiAgICA8RG9jdW1lbnQ+XG4gICAgICA8UGFnZSBzaXplPVwiQTRcIiBzdHlsZT17c3R5bGVzLnBhZ2V9PlxuICAgICAgICA8VmlldyBzdHlsZT17c3R5bGVzLmhlYWRlcn0+XG4gICAgICAgICAgPFZpZXcgc3R5bGU9e3N0eWxlcy5oZWFkZXJMZWZ0fT5cbiAgICAgICAgICAgIDxUZXh0IHN0eWxlPXtzdHlsZXMuaGVhZGVyU3VidGl0bGV9PlxuICAgICAgICAgICAgICB7c3VtbWl0Lm5hbWV9XG4gICAgICAgICAgICAgIHtzdW1taXQudGFnbGluZSA/IGAg4oCUICR7c3VtbWl0LnRhZ2xpbmV9YCA6IFwiXCJ9XG4gICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICA8VmlldyBzdHlsZT17c3R5bGVzLmhlYWRlclRpdGxlUm93fT5cbiAgICAgICAgICAgICAgPFRleHQgc3R5bGU9e3N0eWxlcy5oZWFkZXJUaXRsZX0+XG4gICAgICAgICAgICAgICAgUGF5bWVudCBSZWNlaXB0IC8gSW52b2ljZSBmb3IgUmVpbWJ1cnNlbWVudFxuICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgc3R5bGU9e1tzdHlsZXMucGFpZEJhZGdlLCB7IGJhY2tncm91bmRDb2xvcjogYmFkZ2UuY29sb3IgfV19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7YmFkZ2UudGV4dH1cbiAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgPC9WaWV3PlxuICAgICAgICAgICAgPFRleHQgc3R5bGU9e3N0eWxlcy5oZWFkZXJUYWdsaW5lfT5cbiAgICAgICAgICAgICAgVGhpcyBkb2N1bWVudCBjb25maXJtcyB0aGF0IHlvdXIgcmVnaXN0cmF0aW9uIGhhcyBiZWVuIHBhaWQgaW5cbiAgICAgICAgICAgICAgZnVsbC4gS2VlcCBpdCBmb3IgeW91ciByZWNvcmRzIG9yIHN1Ym1pdCBpdCBmb3IgZW1wbG95ZXJcbiAgICAgICAgICAgICAgcmVpbWJ1cnNlbWVudC5cbiAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICA8L1ZpZXc+XG4gICAgICAgICAgPFZpZXcgc3R5bGU9e3N0eWxlcy5oZWFkZXJSaWdodH0+XG4gICAgICAgICAgICB7bG9nb1VybCAmJiA8SW1hZ2Ugc3JjPXtsb2dvVXJsfSBzdHlsZT17c3R5bGVzLmxvZ299IC8+fVxuICAgICAgICAgIDwvVmlldz5cbiAgICAgICAgPC9WaWV3PlxuXG4gICAgICAgIDxWaWV3IHN0eWxlPXtzdHlsZXMudHdvQ29sfT5cbiAgICAgICAgICA8VmlldyBzdHlsZT17c3R5bGVzLmNvbEhhbGZ9PlxuICAgICAgICAgICAgPFRleHQgc3R5bGU9e3N0eWxlcy5zZWN0aW9uVGl0bGV9Pk9yZ2FuaXplcjwvVGV4dD5cbiAgICAgICAgICAgIDxUZXh0IHN0eWxlPXtzdHlsZXMuZmllbGRWYWx1ZX0+XG4gICAgICAgICAgICAgIHtzZXR0aW5ncy5vcmdhbml6ZXJMZWdhbE5hbWUgfHwgc3VtbWl0Lm5hbWV9XG4gICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICB7YWRkcmVzc0xpbmVzLm1hcCgobGluZSkgPT4gKFxuICAgICAgICAgICAgICA8VGV4dCBrZXk9e2xpbmV9IHN0eWxlPXtzdHlsZXMudGFibGVDZWxsfT5cbiAgICAgICAgICAgICAgICB7bGluZX1cbiAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICB7c2V0dGluZ3Mub3JnYW5pemVyVGF4SWQgJiYgc2V0dGluZ3Mub3JnYW5pemVyVGF4SWRMYWJlbCAmJiAoXG4gICAgICAgICAgICAgIDxUZXh0IHN0eWxlPXtzdHlsZXMuc21hbGxNdXRlZH0+XG4gICAgICAgICAgICAgICAge3NldHRpbmdzLm9yZ2FuaXplclRheElkTGFiZWx9OiB7c2V0dGluZ3Mub3JnYW5pemVyVGF4SWR9XG4gICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICB7c2V0dGluZ3Muc3VwcG9ydEVtYWlsICYmIChcbiAgICAgICAgICAgICAgPFRleHQgc3R5bGU9e3N0eWxlcy5zbWFsbE11dGVkfT5cbiAgICAgICAgICAgICAgICBTdXBwb3J0OiB7c2V0dGluZ3Muc3VwcG9ydEVtYWlsfVxuICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvVmlldz5cbiAgICAgICAgICA8VmlldyBzdHlsZT17c3R5bGVzLmNvbEhhbGZ9PlxuICAgICAgICAgICAgPFRleHQgc3R5bGU9e3N0eWxlcy5zZWN0aW9uVGl0bGV9PkRvY3VtZW50IERldGFpbHM8L1RleHQ+XG4gICAgICAgICAgICA8VGV4dCBzdHlsZT17c3R5bGVzLmZpZWxkTGFiZWx9PkRvY3VtZW50IE51bWJlcjwvVGV4dD5cbiAgICAgICAgICAgIDxUZXh0IHN0eWxlPXtzdHlsZXMuZmllbGRWYWx1ZX0+e29yZGVyLm51bWJlcn08L1RleHQ+XG4gICAgICAgICAgICA8VGV4dCBzdHlsZT17c3R5bGVzLmZpZWxkTGFiZWx9Pklzc3VlIERhdGU8L1RleHQ+XG4gICAgICAgICAgICA8VGV4dCBzdHlsZT17c3R5bGVzLmZpZWxkVmFsdWV9PntvcmRlci5pc3N1ZV9kYXRlfTwvVGV4dD5cbiAgICAgICAgICAgIDxUZXh0IHN0eWxlPXtzdHlsZXMuZmllbGRMYWJlbH0+UHVyY2hhc2UgRGF0ZTwvVGV4dD5cbiAgICAgICAgICAgIDxUZXh0IHN0eWxlPXtzdHlsZXMuZmllbGRWYWx1ZX0+e29yZGVyLnB1cmNoYXNlZF9kYXRlfTwvVGV4dD5cbiAgICAgICAgICAgIHtvcmRlci5jb25maXJtYXRpb25fZGF0ZSAmJiAoXG4gICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgPFRleHQgc3R5bGU9e3N0eWxlcy5maWVsZExhYmVsfT5PcmRlciBDb25maXJtYXRpb24gRW1haWw8L1RleHQ+XG4gICAgICAgICAgICAgICAgPFRleHQgc3R5bGU9e3N0eWxlcy5maWVsZFZhbHVlfT57b3JkZXIuY29uZmlybWF0aW9uX2RhdGV9PC9UZXh0PlxuICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9WaWV3PlxuICAgICAgICA8L1ZpZXc+XG5cbiAgICAgICAgPFZpZXcgc3R5bGU9e1tzdHlsZXMudHdvQ29sLCB7IG1hcmdpblRvcDogNCB9XX0+XG4gICAgICAgICAgPFZpZXcgc3R5bGU9e3N0eWxlcy5jb2xIYWxmfT5cbiAgICAgICAgICAgIDxUZXh0IHN0eWxlPXtzdHlsZXMuc2VjdGlvblRpdGxlfT5CaWxsZWQgVG88L1RleHQ+XG4gICAgICAgICAgICA8VGV4dCBzdHlsZT17c3R5bGVzLmZpZWxkVmFsdWV9PntvcmRlci5vd25lcl9mdWxsX25hbWV9PC9UZXh0PlxuICAgICAgICAgICAge29yZGVyLm93bmVyX2NvbXBhbnkgJiYgKFxuICAgICAgICAgICAgICA8VGV4dCBzdHlsZT17c3R5bGVzLnRhYmxlQ2VsbH0+e29yZGVyLm93bmVyX2NvbXBhbnl9PC9UZXh0PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIHtvcmRlci5vd25lcl9lbWFpbCAmJiAoXG4gICAgICAgICAgICAgIDxUZXh0IHN0eWxlPXtzdHlsZXMuc21hbGxNdXRlZH0+e29yZGVyLm93bmVyX2VtYWlsfTwvVGV4dD5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9WaWV3PlxuICAgICAgICAgIDxWaWV3IHN0eWxlPXtzdHlsZXMuY29sSGFsZn0+XG4gICAgICAgICAgICA8VGV4dCBzdHlsZT17c3R5bGVzLnNlY3Rpb25UaXRsZX0+RXZlbnQ8L1RleHQ+XG4gICAgICAgICAgICA8VGV4dCBzdHlsZT17c3R5bGVzLmZpZWxkVmFsdWV9PntzdW1taXQubmFtZX08L1RleHQ+XG4gICAgICAgICAgPC9WaWV3PlxuICAgICAgICA8L1ZpZXc+XG5cbiAgICAgICAgPFRleHQgc3R5bGU9e1tzdHlsZXMuc2VjdGlvblRpdGxlLCB7IG1hcmdpblRvcDogMjAgfV19PlxuICAgICAgICAgIFJlZ2lzdHJhdGlvbiBTdW1tYXJ5XG4gICAgICAgIDwvVGV4dD5cbiAgICAgICAgPFZpZXcgc3R5bGU9e3N0eWxlcy50YWJsZX0+XG4gICAgICAgICAgPFZpZXcgc3R5bGU9e3N0eWxlcy50YWJsZUhlYWRlcn0+XG4gICAgICAgICAgICA8VGV4dCBzdHlsZT17W3N0eWxlcy50YWJsZUhlYWRlckNlbGwsIHsgd2lkdGg6IFwiNDAlXCIgfV19PlxuICAgICAgICAgICAgICBEZXNjcmlwdGlvblxuICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgPFRleHRcbiAgICAgICAgICAgICAgc3R5bGU9e1tcbiAgICAgICAgICAgICAgICBzdHlsZXMudGFibGVIZWFkZXJDZWxsLFxuICAgICAgICAgICAgICAgIHN0eWxlcy50ZXh0UmlnaHQsXG4gICAgICAgICAgICAgICAgeyB3aWR0aDogXCIxNSVcIiB9XG4gICAgICAgICAgICAgIF19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIFF0eVxuICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgPFRleHRcbiAgICAgICAgICAgICAgc3R5bGU9e1tcbiAgICAgICAgICAgICAgICBzdHlsZXMudGFibGVIZWFkZXJDZWxsLFxuICAgICAgICAgICAgICAgIHN0eWxlcy50ZXh0UmlnaHQsXG4gICAgICAgICAgICAgICAgeyB3aWR0aDogXCIyMiVcIiB9XG4gICAgICAgICAgICAgIF19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIFVuaXQgUHJpY2VcbiAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgIHN0eWxlPXtbXG4gICAgICAgICAgICAgICAgc3R5bGVzLnRhYmxlSGVhZGVyQ2VsbCxcbiAgICAgICAgICAgICAgICBzdHlsZXMudGV4dFJpZ2h0LFxuICAgICAgICAgICAgICAgIHsgd2lkdGg6IFwiMjMlXCIgfVxuICAgICAgICAgICAgICBdfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBBbW91bnRcbiAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICA8L1ZpZXc+XG4gICAgICAgICAge3RpY2tldHMubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgIHRpY2tldHMubWFwKCh0aWNrZXQpID0+IChcbiAgICAgICAgICAgICAgPFZpZXcga2V5PXt0aWNrZXQubnVtYmVyfSBzdHlsZT17c3R5bGVzLnRhYmxlUm93fT5cbiAgICAgICAgICAgICAgICA8VmlldyBzdHlsZT17eyB3aWR0aDogXCI0MCVcIiB9fT5cbiAgICAgICAgICAgICAgICAgIDxUZXh0IHN0eWxlPXtzdHlsZXMudGFibGVDZWxsfT5cbiAgICAgICAgICAgICAgICAgICAge3RpY2tldC50aWNrZXRfdHlwZV9uYW1lIHx8IHRpY2tldC50aWNrZXRfdHlwZT8ubmFtZX1cbiAgICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICAgIHt0aWNrZXQub3duZXJfZW1haWwgJiYgKFxuICAgICAgICAgICAgICAgICAgICA8VGV4dCBzdHlsZT17c3R5bGVzLnNtYWxsTXV0ZWR9PlxuICAgICAgICAgICAgICAgICAgICAgIEF0dGVuZGVlOiB7dGlja2V0Lm93bmVyX2VtYWlsfVxuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAge3RpY2tldC5wcm9tb19jb2RlICYmIChcbiAgICAgICAgICAgICAgICAgICAgPFRleHQgc3R5bGU9e3N0eWxlcy5zbWFsbE11dGVkfT5cbiAgICAgICAgICAgICAgICAgICAgICBQcm9tbyBDb2RlOiB7bWFza1Byb21vQ29kZSh0aWNrZXQucHJvbW9fY29kZSl9XG4gICAgICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9WaWV3PlxuICAgICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgICBzdHlsZT17W3N0eWxlcy50YWJsZUNlbGwsIHN0eWxlcy50ZXh0UmlnaHQsIHsgd2lkdGg6IFwiMTUlXCIgfV19XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICA8VGV4dFxuICAgICAgICAgICAgICAgICAgc3R5bGU9e1tzdHlsZXMudGFibGVDZWxsLCBzdHlsZXMudGV4dFJpZ2h0LCB7IHdpZHRoOiBcIjIyJVwiIH1dfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHtmb3JtYXRDdXJyZW5jeShcbiAgICAgICAgICAgICAgICAgICAgdGlja2V0LmZpbmFsX2Ftb3VudCB8fCB0aWNrZXQucmF3X2Nvc3QsXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbmN5U3ltYm9sLFxuICAgICAgICAgICAgICAgICAgICBjdXJyZW5jeVxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgPFRleHRcbiAgICAgICAgICAgICAgICAgIHN0eWxlPXtbc3R5bGVzLnRhYmxlQ2VsbCwgc3R5bGVzLnRleHRSaWdodCwgeyB3aWR0aDogXCIyMyVcIiB9XX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7Zm9ybWF0Q3VycmVuY3koXG4gICAgICAgICAgICAgICAgICAgIHRpY2tldC5maW5hbF9hbW91bnQgfHwgdGlja2V0LnJhd19jb3N0LFxuICAgICAgICAgICAgICAgICAgICBjdXJyZW5jeVN5bWJvbCxcbiAgICAgICAgICAgICAgICAgICAgY3VycmVuY3lcbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICA8L1ZpZXc+XG4gICAgICAgICAgICApKVxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICA8VmlldyBzdHlsZT17c3R5bGVzLnRhYmxlUm93fT5cbiAgICAgICAgICAgICAgPFRleHQgc3R5bGU9e1tzdHlsZXMudGFibGVDZWxsLCB7IHdpZHRoOiBcIjQwJVwiIH1dfT5cbiAgICAgICAgICAgICAgICBDb25mZXJlbmNlIFJlZ2lzdHJhdGlvblxuICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgc3R5bGU9e1tzdHlsZXMudGFibGVDZWxsLCBzdHlsZXMudGV4dFJpZ2h0LCB7IHdpZHRoOiBcIjE1JVwiIH1dfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgc3R5bGU9e1tzdHlsZXMudGFibGVDZWxsLCBzdHlsZXMudGV4dFJpZ2h0LCB7IHdpZHRoOiBcIjIyJVwiIH1dfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge2Zvcm1hdEN1cnJlbmN5KFxuICAgICAgICAgICAgICAgICAgb3JkZXIucmF3X2Ftb3VudCB8fCBvcmRlci5hbW91bnQsXG4gICAgICAgICAgICAgICAgICBjdXJyZW5jeVN5bWJvbCxcbiAgICAgICAgICAgICAgICAgIGN1cnJlbmN5XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICA8VGV4dFxuICAgICAgICAgICAgICAgIHN0eWxlPXtbc3R5bGVzLnRhYmxlQ2VsbCwgc3R5bGVzLnRleHRSaWdodCwgeyB3aWR0aDogXCIyMyVcIiB9XX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHtmb3JtYXRDdXJyZW5jeShcbiAgICAgICAgICAgICAgICAgIG9yZGVyLnJhd19hbW91bnQgfHwgb3JkZXIuYW1vdW50LFxuICAgICAgICAgICAgICAgICAgY3VycmVuY3lTeW1ib2wsXG4gICAgICAgICAgICAgICAgICBjdXJyZW5jeVxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgIDwvVmlldz5cbiAgICAgICAgICApfVxuICAgICAgICA8L1ZpZXc+XG5cbiAgICAgICAgPFZpZXcgc3R5bGU9e3N0eWxlcy50b3RhbHNUYWJsZX0+XG4gICAgICAgICAge29yZGVyLnJhd19hbW91bnQgIT09IHVuZGVmaW5lZCAmJiAoXG4gICAgICAgICAgICA8VmlldyBzdHlsZT17c3R5bGVzLnRvdGFsc1Jvd30+XG4gICAgICAgICAgICAgIDxUZXh0IHN0eWxlPXtzdHlsZXMudG90YWxzTGFiZWx9PkFtb3VudDwvVGV4dD5cbiAgICAgICAgICAgICAgPFRleHQgc3R5bGU9e3N0eWxlcy50b3RhbHNWYWx1ZX0+XG4gICAgICAgICAgICAgICAge2Zvcm1hdEN1cnJlbmN5KG9yZGVyLnJhd19hbW91bnQsIGN1cnJlbmN5U3ltYm9sLCBjdXJyZW5jeSl9XG4gICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgIDwvVmlldz5cbiAgICAgICAgICApfVxuICAgICAgICAgIHtvcmRlci5kaXNjb3VudCAmJiBwYXJzZUZsb2F0KG9yZGVyLmRpc2NvdW50KSA+IDAgJiYgKFxuICAgICAgICAgICAgPFZpZXcgc3R5bGU9e3N0eWxlcy50b3RhbHNSb3d9PlxuICAgICAgICAgICAgICA8VGV4dCBzdHlsZT17c3R5bGVzLnRvdGFsc0xhYmVsfT5EaXNjb3VudDwvVGV4dD5cbiAgICAgICAgICAgICAgPFRleHQgc3R5bGU9e3N0eWxlcy50b3RhbHNWYWx1ZX0+XG4gICAgICAgICAgICAgICAgLXtmb3JtYXRDdXJyZW5jeShvcmRlci5kaXNjb3VudCwgY3VycmVuY3lTeW1ib2wsIGN1cnJlbmN5KX1cbiAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgPC9WaWV3PlxuICAgICAgICAgICl9XG4gICAgICAgICAge29yZGVyLmFwcGxpZWRfdGF4ZXMubWFwKCh0YXgpID0+IChcbiAgICAgICAgICAgIDxWaWV3IGtleT17dGF4LmlkfSBzdHlsZT17c3R5bGVzLnRvdGFsc1Jvd30+XG4gICAgICAgICAgICAgIDxUZXh0IHN0eWxlPXtzdHlsZXMudG90YWxzTGFiZWx9Pnt0YXgubmFtZX08L1RleHQ+XG4gICAgICAgICAgICAgIDxUZXh0IHN0eWxlPXtzdHlsZXMudG90YWxzVmFsdWV9PlxuICAgICAgICAgICAgICAgICt7Zm9ybWF0Q3VycmVuY3kodGF4LmFtb3VudCwgY3VycmVuY3lTeW1ib2wsIGN1cnJlbmN5KX1cbiAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgPC9WaWV3PlxuICAgICAgICAgICkpfVxuICAgICAgICAgIDxWaWV3IHN0eWxlPXtbc3R5bGVzLnRvdGFsc1Jvdywgc3R5bGVzLnRvdGFsc1RvdGFsUm93XX0+XG4gICAgICAgICAgICA8VGV4dCBzdHlsZT17W3N0eWxlcy50b3RhbHNMYWJlbCwgeyBmb250V2VpZ2h0OiBcImJvbGRcIiB9XX0+XG4gICAgICAgICAgICAgIEFtb3VudCBQYWlkXG4gICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICA8VGV4dCBzdHlsZT17W3N0eWxlcy50b3RhbHNWYWx1ZSwgeyBmb250V2VpZ2h0OiBcImJvbGRcIiB9XX0+XG4gICAgICAgICAgICAgIHtmb3JtYXRDdXJyZW5jeShvcmRlci5hbW91bnQsIGN1cnJlbmN5U3ltYm9sLCBjdXJyZW5jeSl9XG4gICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgPC9WaWV3PlxuICAgICAgICAgIHtwYXJzZUZsb2F0KG9yZGVyLnJlZnVuZGVkX2Ftb3VudCkgPiAwICYmIChcbiAgICAgICAgICAgIDxWaWV3IHN0eWxlPXtzdHlsZXMudG90YWxzUm93fT5cbiAgICAgICAgICAgICAgPFRleHQgc3R5bGU9e3N0eWxlcy50b3RhbHNMYWJlbH0+UmVmdW5kZWQ8L1RleHQ+XG4gICAgICAgICAgICAgIDxUZXh0IHN0eWxlPXtzdHlsZXMudG90YWxzVmFsdWV9PlxuICAgICAgICAgICAgICAgIC1cbiAgICAgICAgICAgICAgICB7Zm9ybWF0Q3VycmVuY3koXG4gICAgICAgICAgICAgICAgICBvcmRlci5yZWZ1bmRlZF9hbW91bnQsXG4gICAgICAgICAgICAgICAgICBjdXJyZW5jeVN5bWJvbCxcbiAgICAgICAgICAgICAgICAgIGN1cnJlbmN5XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgPC9WaWV3PlxuICAgICAgICAgICl9XG4gICAgICAgICAgPFZpZXcgc3R5bGU9e1tzdHlsZXMudG90YWxzUm93LCBzdHlsZXMudG90YWxzQmFsYW5jZVJvd119PlxuICAgICAgICAgICAgPFRleHQgc3R5bGU9e1tzdHlsZXMudG90YWxzTGFiZWwsIHsgZm9udFdlaWdodDogXCJib2xkXCIgfV19PlxuICAgICAgICAgICAgICBCYWxhbmNlIER1ZVxuICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgPFRleHQgc3R5bGU9e1tzdHlsZXMudG90YWxzVmFsdWUsIHsgZm9udFdlaWdodDogXCJib2xkXCIgfV19PlxuICAgICAgICAgICAgICB7Zm9ybWF0Q3VycmVuY3koMCwgY3VycmVuY3lTeW1ib2wsIGN1cnJlbmN5KX1cbiAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICA8L1ZpZXc+XG4gICAgICAgIDwvVmlldz5cblxuICAgICAgICA8VGV4dCBzdHlsZT17c3R5bGVzLnNlY3Rpb25UaXRsZX0+UGF5bWVudCBJbmZvcm1hdGlvbjwvVGV4dD5cbiAgICAgICAgPFZpZXcgc3R5bGU9e3N0eWxlcy50YWJsZX0+XG4gICAgICAgICAgPFZpZXcgc3R5bGU9e3N0eWxlcy50YWJsZUhlYWRlcn0+XG4gICAgICAgICAgICA8VGV4dCBzdHlsZT17W3N0eWxlcy50YWJsZUhlYWRlckNlbGwsIHsgd2lkdGg6IFwiMzUlXCIgfV19PlxuICAgICAgICAgICAgICBGaWVsZFxuICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgPFRleHQgc3R5bGU9e1tzdHlsZXMudGFibGVIZWFkZXJDZWxsLCB7IHdpZHRoOiBcIjY1JVwiIH1dfT5cbiAgICAgICAgICAgICAgVmFsdWVcbiAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICA8L1ZpZXc+XG4gICAgICAgICAgPFZpZXcgc3R5bGU9e3N0eWxlcy50YWJsZVJvd30+XG4gICAgICAgICAgICA8VGV4dCBzdHlsZT17W3N0eWxlcy50YWJsZUNlbGwsIHsgd2lkdGg6IFwiMzUlXCIgfV19PlxuICAgICAgICAgICAgICBQYXltZW50IE1ldGhvZFxuICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgPFRleHQgc3R5bGU9e1tzdHlsZXMudGFibGVDZWxsLCB7IHdpZHRoOiBcIjY1JVwiIH1dfT5cbiAgICAgICAgICAgICAge29yZGVyLnBheW1lbnRfbWV0aG9kX3JlYWRhYmxlfVxuICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgIDwvVmlldz5cbiAgICAgICAgICB7b3JkZXIuY3JlZGl0X2NhcmRfdHlwZSAmJiAoXG4gICAgICAgICAgICA8VmlldyBzdHlsZT17c3R5bGVzLnRhYmxlUm93fT5cbiAgICAgICAgICAgICAgPFRleHQgc3R5bGU9e1tzdHlsZXMudGFibGVDZWxsLCB7IHdpZHRoOiBcIjM1JVwiIH1dfT5cbiAgICAgICAgICAgICAgICBDYXJkIFR5cGVcbiAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICA8VGV4dCBzdHlsZT17W3N0eWxlcy50YWJsZUNlbGwsIHsgd2lkdGg6IFwiNjUlXCIgfV19PlxuICAgICAgICAgICAgICAgIHtvcmRlci5jcmVkaXRfY2FyZF90eXBlfVxuICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICA8L1ZpZXc+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7b3JkZXIuY3JlZGl0X2NhcmRfNG51bWJlciAmJiAoXG4gICAgICAgICAgICA8VmlldyBzdHlsZT17c3R5bGVzLnRhYmxlUm93fT5cbiAgICAgICAgICAgICAgPFRleHQgc3R5bGU9e1tzdHlsZXMudGFibGVDZWxsLCB7IHdpZHRoOiBcIjM1JVwiIH1dfT5cbiAgICAgICAgICAgICAgICBMYXN0IEZvdXJcbiAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICA8VGV4dCBzdHlsZT17W3N0eWxlcy50YWJsZUNlbGwsIHsgd2lkdGg6IFwiNjUlXCIgfV19PlxuICAgICAgICAgICAgICAgIHtvcmRlci5jcmVkaXRfY2FyZF80bnVtYmVyfVxuICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICA8L1ZpZXc+XG4gICAgICAgICAgKX1cbiAgICAgICAgICA8VmlldyBzdHlsZT17c3R5bGVzLnRhYmxlUm93fT5cbiAgICAgICAgICAgIDxUZXh0IHN0eWxlPXtbc3R5bGVzLnRhYmxlQ2VsbCwgeyB3aWR0aDogXCIzNSVcIiB9XX0+XG4gICAgICAgICAgICAgIE9yZGVyIE51bWJlclxuICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgPFRleHQgc3R5bGU9e1tzdHlsZXMudGFibGVDZWxsLCB7IHdpZHRoOiBcIjY1JVwiIH1dfT5cbiAgICAgICAgICAgICAge29yZGVyLm51bWJlcn1cbiAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICA8L1ZpZXc+XG4gICAgICAgIDwvVmlldz5cblxuICAgICAgICA8VmlldyBzdHlsZT17c3R5bGVzLmJveH0+XG4gICAgICAgICAgPFRleHQgc3R5bGU9e3N0eWxlcy5ib3hUaXRsZX0+Rm9yIEVtcGxveWVyIC8gUmVpbWJ1cnNlbWVudCBVc2U8L1RleHQ+XG4gICAgICAgICAgPFRleHQgc3R5bGU9e3sgZm9udFNpemU6IDEwIH19PlxuICAgICAgICAgICAgVGhpcyBpcyBhIHBheW1lbnQgcmVjZWlwdCBjb25maXJtaW5nIHRoZXtcIiBcIn1cbiAgICAgICAgICAgIDxUZXh0IHN0eWxlPXt7IGZvbnRXZWlnaHQ6IFwiYm9sZFwiIH19PmFtb3VudCBwYWlkPC9UZXh0PiBoYXMgYmVlblxuICAgICAgICAgICAgcGFpZCBpbiBmdWxsIGFuZCBzZXJ2ZXMgYXMgYm90aCBhbiBpbnZvaWNlIGFuZCByZWNlaXB0LlxuICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgPC9WaWV3PlxuXG4gICAgICAgIDxWaWV3IHN0eWxlPXtzdHlsZXMuZm9vdGVyfT5cbiAgICAgICAgICA8VGV4dD5UaGFuayB5b3UgZm9yIHJlZ2lzdGVyaW5nIGZvciB7c3VtbWl0Lm5hbWV9LjwvVGV4dD5cbiAgICAgICAgICA8VGV4dCBzdHlsZT17eyBtYXJnaW5Ub3A6IDQgfX0+XG4gICAgICAgICAgICBUaGlzIFBERi9yZWNlaXB0IGlzIGdlbmVyYXRlZCBmcm9tIHlvdXIgb3JkZXIgY29uZmlybWF0aW9uIGFuZCBpc1xuICAgICAgICAgICAgaW50ZW5kZWQgZm9yIHJlY29yZGtlZXBpbmcgYW5kIHJlaW1idXJzZW1lbnQgcHVycG9zZXMuXG4gICAgICAgICAgPC9UZXh0PlxuICAgICAgICA8L1ZpZXc+XG4gICAgICA8L1BhZ2U+XG4gICAgPC9Eb2N1bWVudD5cbiAgKTtcbn07XG5cbi8qKlxuICogR2VuZXJhdGUgYW5kIGRvd25sb2FkIGEgcmVjZWlwdCBQREZcbiAqIEBwYXJhbSB7T2JqZWN0fSBwYXJhbXNcbiAqIEBwYXJhbSB7T2JqZWN0fSBwYXJhbXMub3JkZXIgLSBPcmRlciBkYXRhXG4gKiBAcGFyYW0ge09iamVjdH0gcGFyYW1zLnN1bW1pdCAtIFN1bW1pdCBkYXRhXG4gKiBAcGFyYW0ge09iamVjdH0gW3BhcmFtcy5yZWNlaXB0U2V0dGluZ3NdIC0gUmVjZWlwdCBicmFuZGluZyBzZXR0aW5ncyAob3B0aW9uYWwsIGhhcyBkZWZhdWx0cylcbiAqL1xuZXhwb3J0IGNvbnN0IGdlbmVyYXRlUmVjZWlwdFBERiA9IGFzeW5jICh7XG4gIG9yZGVyLFxuICBzdW1taXQsXG4gIHJlY2VpcHRTZXR0aW5ncyA9IHt9XG59KSA9PiB7XG4gIC8vIE1lcmdlIHdpdGggZGVmYXVsdHNcbiAgY29uc3Qgc2V0dGluZ3MgPSB7IC4uLkRFRkFVTFRfUkVDRUlQVF9TRVRUSU5HUywgLi4ucmVjZWlwdFNldHRpbmdzIH07XG5cbiAgLy8gUmVnaXN0ZXIgY3VzdG9tIGZvbnQgaWYgcHJvdmlkZWQsIG90aGVyd2lzZSB1c2UgYnVpbHQtaW4gZmFsbGJhY2tcbiAgaWYgKHNldHRpbmdzLmZvbnRGYW1pbHkgJiYgc2V0dGluZ3MuZm9udEZpbGUpIHtcbiAgICBjb25zdCBmb250UmVnaXN0ZXJlZCA9IHJlZ2lzdGVyRm9udChzZXR0aW5ncy5mb250RmFtaWx5LCBzZXR0aW5ncy5mb250RmlsZSk7XG4gICAgaWYgKCFmb250UmVnaXN0ZXJlZCkge1xuICAgICAgLy8gRmFsbCBiYWNrIHRvIGJ1aWx0LWluIGZvbnQgaWYgcmVnaXN0cmF0aW9uIGZhaWxzXG4gICAgICBzZXR0aW5ncy5mb250RmFtaWx5ID0gRkFMTEJBQ0tfRk9OVDtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gTm8gY3VzdG9tIGZvbnQgcHJvdmlkZWQgLSB1c2UgYnVpbHQtaW4gZmFsbGJhY2tcbiAgICBzZXR0aW5ncy5mb250RmFtaWx5ID0gRkFMTEJBQ0tfRk9OVDtcbiAgfVxuXG4gIGNvbnN0IGxvZ29VcmwgPSBhd2FpdCB2YWxpZGF0ZUltYWdlVXJsKHNldHRpbmdzLnByaW50TG9nbyB8fCBzdW1taXQubG9nbyk7XG5cbiAgLy8gUHJlcGFyZSBvcmRlciBkYXRhXG4gIGNvbnN0IHRpY2tldHMgPSBvcmRlci50aWNrZXRzIHx8IG9yZGVyLm1lbWJlclRpY2tldHMgfHwgW107XG5cbiAgY29uc3Qgb3JkZXJEYXRhID0ge1xuICAgIG51bWJlcjogb3JkZXIubnVtYmVyLFxuICAgIGFtb3VudDogb3JkZXIuYW1vdW50LFxuICAgIHJhd19hbW91bnQ6IG9yZGVyLnJhd19hbW91bnQsXG4gICAgZGlzY291bnQ6IG9yZGVyLmRpc2NvdW50X2Ftb3VudCxcbiAgICBjdXJyZW5jeTogb3JkZXIuY3VycmVuY3ksXG4gICAgY3VycmVuY3lfc3ltYm9sOlxuICAgICAgb3JkZXIuY3VycmVuY3lfc3ltYm9sIHx8IHRpY2tldHNbMF0/LmN1cnJlbmN5X3N5bWJvbCB8fCBcIiRcIixcbiAgICBwdXJjaGFzZWRfZGF0ZTogZm9ybWF0RGF0ZShvcmRlci5jcmVhdGVkKSxcbiAgICBjb25maXJtYXRpb25fZGF0ZTogb3JkZXIuY3JlYXRlZFxuICAgICAgPyBuZXcgRGF0ZShvcmRlci5jcmVhdGVkICogTVNfUEVSX1NFQ09ORCkudG9Mb2NhbGVEYXRlU3RyaW5nKFwiZW4tVVNcIiwge1xuICAgICAgICAgIHllYXI6IFwibnVtZXJpY1wiLFxuICAgICAgICAgIG1vbnRoOiBcImxvbmdcIixcbiAgICAgICAgICBkYXk6IFwiMi1kaWdpdFwiLFxuICAgICAgICAgIGhvdXI6IFwiMi1kaWdpdFwiLFxuICAgICAgICAgIG1pbnV0ZTogXCIyLWRpZ2l0XCIsXG4gICAgICAgICAgaG91cjEyOiBmYWxzZSxcbiAgICAgICAgICB0aW1lWm9uZU5hbWU6IFwic2hvcnRcIlxuICAgICAgICB9KVxuICAgICAgOiBcIlwiLFxuICAgIGlzc3VlX2RhdGU6IG5ldyBEYXRlKCkudG9Mb2NhbGVEYXRlU3RyaW5nKFwiZW4tVVNcIiwge1xuICAgICAgeWVhcjogXCJudW1lcmljXCIsXG4gICAgICBtb250aDogXCJsb25nXCIsXG4gICAgICBkYXk6IFwiMi1kaWdpdFwiXG4gICAgfSksXG4gICAgb3duZXJfZnVsbF9uYW1lOiBgJHtvcmRlci5vd25lcl9maXJzdF9uYW1lfSAke29yZGVyLm93bmVyX2xhc3RfbmFtZX1gLFxuICAgIG93bmVyX2NvbXBhbnk6IG9yZGVyLm93bmVyX2NvbXBhbnksXG4gICAgb3duZXJfZW1haWw6IG9yZGVyLm93bmVyX2VtYWlsLFxuICAgIHBheW1lbnRfbWV0aG9kOiBvcmRlci5wYXltZW50X21ldGhvZCxcbiAgICBwYXltZW50X2luZm9fdHlwZTogb3JkZXIucGF5bWVudF9pbmZvX3R5cGUsXG4gICAgcGF5bWVudF9tZXRob2RfcmVhZGFibGU6IGdldFBheW1lbnRNZXRob2RMYWJlbChvcmRlciksXG4gICAgY3JlZGl0X2NhcmRfdHlwZTogY2FwaXRhbGl6ZShvcmRlci5jcmVkaXRfY2FyZF90eXBlKSxcbiAgICBjcmVkaXRfY2FyZF80bnVtYmVyOiBvcmRlci5jcmVkaXRfY2FyZF80bnVtYmVyLFxuICAgIHJlZnVuZGVkX2Ftb3VudDogb3JkZXIucmVmdW5kZWRfYW1vdW50LFxuICAgIGFwcGxpZWRfdGF4ZXM6IG9yZGVyLmFwcGxpZWRfdGF4ZXMgfHwgW10sXG4gICAgdGlja2V0czogdGlja2V0cy5tYXAoKHQpID0+ICh7XG4gICAgICBudW1iZXI6IHQubnVtYmVyLFxuICAgICAgdGlja2V0X3R5cGVfbmFtZTogdC50aWNrZXRfdHlwZS5uYW1lLFxuICAgICAgb3duZXJfZW1haWw6IHQub3duZXIuZW1haWwsXG4gICAgICBmaW5hbF9hbW91bnQ6IHQucmF3X2Nvc3QsXG4gICAgICBwcm9tb19jb2RlOiB0LnByb21vX2NvZGU/LmNvZGVcbiAgICB9KSlcbiAgfTtcblxuICBjb25zdCBzdW1taXREYXRhID0ge1xuICAgIG5hbWU6IHN1bW1pdC5uYW1lLFxuICAgIHRhZ2xpbmU6IHN1bW1pdC50YWdsaW5lIHx8IFwiXCIsXG4gICAgZGF0ZXNfbGFiZWw6IHN1bW1pdC5kYXRlc19sYWJlbCB8fCBcIlwiLFxuICAgIGxvY2F0aW9uOiBzdW1taXQubG9jYXRpb24gfHwgXCJcIixcbiAgICB3ZWJzaXRlOiBzdW1taXQubGluayB8fCBzdW1taXQud2Vic2l0ZSB8fCBcIlwiXG4gIH07XG5cbiAgLy8gR2VuZXJhdGUgUERGXG4gIGNvbnN0IGRvYyA9IChcbiAgICA8UmVjZWlwdFBERlxuICAgICAgb3JkZXI9e29yZGVyRGF0YX1cbiAgICAgIHN1bW1pdD17c3VtbWl0RGF0YX1cbiAgICAgIHNldHRpbmdzPXtzZXR0aW5nc31cbiAgICAgIGxvZ29Vcmw9e2xvZ29Vcmx9XG4gICAgLz5cbiAgKTtcblxuICBjb25zdCBibG9iID0gYXdhaXQgcGRmKGRvYykudG9CbG9iKCk7XG5cbiAgLy8gRG93bmxvYWRcbiAgY29uc3QgdXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpO1xuICBsaW5rLmhyZWYgPSB1cmw7XG4gIGxpbmsuZG93bmxvYWQgPSBgcmVjZWlwdC0ke29yZGVyLm51bWJlcn0ucGRmYFxuICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgLnJlcGxhY2UoL1xccysvZywgXCItXCIpO1xuICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xuICBsaW5rLmNsaWNrKCk7XG4gIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobGluayk7XG4gIFVSTC5yZXZva2VPYmplY3RVUkwodXJsKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGdlbmVyYXRlUmVjZWlwdFBERjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmV4cG9ydCB7IGdlbmVyYXRlUmVjZWlwdFBERiB9IGZyb20gXCIuL2dlbmVyYXRlUmVjZWlwdFBERlwiO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2ggfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IHVzZU5vdyB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0IHsgdGlja2V0c1JlZnVuZGFibGUgfSBmcm9tIFwiLi4vLi4vdXRpbHMvdGlja2V0VXRpbHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IHVzZVN1bW1pdERldGFpbHMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvc3VtbWl0VXRpbHNcIjtcbmltcG9ydCB7IGRvd25sb2FkT3JkZXJSZWNlaXB0IH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuY29uc3QgT3JkZXJBY3Rpb25zID0gKHtcbiAgc3VtbWl0LFxuICBvcmRlcixcbiAgdGlja2V0cyxcbiAgc3VibWl0UmVxdWVzdCxcbiAgb25SZWZ1bmRDbGljayxcbiAgb25SZWZ1bmREZXRhaWxDbGlja1xufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IHsgaXNTdGFydGVkIH0gPSB1c2VTdW1taXREZXRhaWxzKHsgc3VtbWl0IH0pO1xuICBjb25zdCBub3cgPSB1c2VOb3coKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCBbaXNEb3dubG9hZGluZywgc2V0SXNEb3dubG9hZGluZ10gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgY29uc3QgaXNJblJlZnVuZGFibGVQZXJpb2QgPVxuICAgIHN1bW1pdC5yZWdpc3RyYXRpb25fYWxsb3dlZF9yZWZ1bmRfcmVxdWVzdF90aWxsX2RhdGUgPiBub3c7XG4gIGNvbnN0IGF0TGVhc3RPbmVSZWZ1bmRhYmxlVGlja2V0ID0gdGlja2V0c1JlZnVuZGFibGUodGlja2V0cyk7XG4gIGNvbnN0IGlzUmVmdW5kYWJsZSA9ICEhKFxuICAgIGlzSW5SZWZ1bmRhYmxlUGVyaW9kICYmXG4gICAgIWlzU3RhcnRlZCAmJlxuICAgIGF0TGVhc3RPbmVSZWZ1bmRhYmxlVGlja2V0XG4gICk7XG4gIGNvbnN0IGhhc1JlZnVuZFJlcXVlc3RzID0gdGlja2V0cz8uc29tZSgodCkgPT4gdC5yZWZ1bmRfcmVxdWVzdHM/Lmxlbmd0aCA+IDApO1xuICBjb25zdCBjYW5Eb3dubG9hZFJlY2VpcHQgPSBvcmRlcj8uc3RhdHVzID09PSBcIlBhaWRcIjtcblxuICBjb25zdCBoYW5kbGVEb3dubG9hZFJlY2VpcHQgPSBhc3luYyAoKSA9PiB7XG4gICAgaWYgKGlzRG93bmxvYWRpbmcgfHwgIW9yZGVyKSByZXR1cm47XG4gICAgc2V0SXNEb3dubG9hZGluZyh0cnVlKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgZGlzcGF0Y2goZG93bmxvYWRPcmRlclJlY2VpcHQoeyBvcmRlciwgc3VtbWl0IH0pKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIGRvd25sb2FkaW5nIHJlY2VpcHQ6XCIsIGVycm9yKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgc2V0SXNEb3dubG9hZGluZyhmYWxzZSk7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHtjYW5Eb3dubG9hZFJlY2VpcHQgJiYgKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cImRvd25sb2FkIHJlY2VpcHQgYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5vcmRlclN1bW1hcnlCdXR0b259ICR7XG4gICAgICAgICAgICBpc0Rvd25sb2FkaW5nID8gc3R5bGVzLnJlZnVuZERpc2FibGVkIDogXCJcIlxuICAgICAgICAgIH1gfVxuICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVEb3dubG9hZFJlY2VpcHR9XG4gICAgICAgICAgZGlzYWJsZWQ9e2lzRG93bmxvYWRpbmd9XG4gICAgICAgID5cbiAgICAgICAgICB7aXNEb3dubG9hZGluZ1xuICAgICAgICAgICAgPyB0KFwib3JkZXJfc3VtbWFyeS5nZW5lcmF0aW5nX3JlY2VpcHRcIilcbiAgICAgICAgICAgIDogdChcIm9yZGVyX3N1bW1hcnkuZG93bmxvYWRfcmVjZWlwdFwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApfVxuICAgICAge2lzUmVmdW5kYWJsZSAmJiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kIHJlcXVlc3QgYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5vcmRlclN1bW1hcnlCdXR0b259XG4gICAgICAgICAgJHtzdWJtaXRSZXF1ZXN0ID8gc3R5bGVzLnJlZnVuZERpc2FibGVkIDogXCJcIn1gfVxuICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICBvbkNsaWNrPXtvblJlZnVuZENsaWNrfVxuICAgICAgICAgIGRpc2FibGVkPXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnJlcXVlc3RfcmVmdW5kXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICl9XG4gICAgICB7aGFzUmVmdW5kUmVxdWVzdHMgJiYgKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZCBkZXRhaWxzIGJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJTdW1tYXJ5QnV0dG9ufVxuICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICBvbkNsaWNrPXtvblJlZnVuZERldGFpbENsaWNrfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnJlZnVuZF9kZXRhaWxzXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICl9XG4gICAgICA8QnV0dG9uXG4gICAgICAgIGFyaWEtbGFiZWw9XCJlbWFpbCBzdXBwb3J0IGJ1dHRvblwiXG4gICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlCdXR0b259XG4gICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgIHRhcmdldD1cIl90b3BcIlxuICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgICAgaHJlZj17YG1haWx0bzoke3N1bW1pdC5zdXBwb3J0X2VtYWlsfWB9XG4gICAgICA+XG4gICAgICAgIHt0KFwib3JkZXJfaW5mby5lbWFpbF9zdXBwb3J0XCIpfVxuICAgICAgPC9CdXR0b24+XG4gICAgPC8+XG4gICk7XG59O1xuXG5PcmRlckFjdGlvbnMucHJvcFR5cGVzID0ge1xuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIG9yZGVyOiBQcm9wVHlwZXMub2JqZWN0LFxuICB0aWNrZXRzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpLFxuICBvblJlZnVuZENsaWNrOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25SZWZ1bmREZXRhaWxDbGljazogUHJvcFR5cGVzLmZ1bmMsXG4gIHN1Ym1pdFJlcXVlc3Q6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlckFjdGlvbnM7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkLCBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IERpdmlkZXIgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvRGl2aWRlclwiO1xuaW1wb3J0IHsgY2FsY3VsYXRlT3JkZXJUb3RhbHMsIGZvcm1hdEN1cnJlbmN5IH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IE9yZGVyU3VtbWFyeVRhYmxlID0gKHsgb3JkZXIsIHN1bW1pdCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3Qge1xuICAgIGRpc2NvdW50VG90YWwsXG4gICAgcmVmdW5kVG90YWwsXG4gICAgYW1vdW50VG90YWwsXG4gICAgc3ViVG90YWwsXG4gICAgdGlja2V0U3VtbWFyeSxcbiAgICB0YXhlc1N1bW1hcnlcbiAgfSA9IGNhbGN1bGF0ZU9yZGVyVG90YWxzKHsgb3JkZXIsIHN1bW1pdCB9KTtcblxuICBjb25zdCBodW5kcmVkID0gMTAwO1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlUYWJsZX0+XG4gICAgICB7dGlja2V0U3VtbWFyeT8ubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgIDw+XG4gICAgICAgICAge3RpY2tldFN1bW1hcnkubWFwKCh0aWNrZXQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRpY2tldFRvdGFsID1cbiAgICAgICAgICAgICAgKHRpY2tldC5xdHkgKiAodGlja2V0LnRpY2tldF90eXBlLmNvc3QgKiBodW5kcmVkKSkgLyBodW5kcmVkO1xuXG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICA8R3JpZFxuICAgICAgICAgICAgICAgIGNvbnRhaW5lclxuICAgICAgICAgICAgICAgIGtleT17YHRpeG9yZGVyXyR7dGlja2V0LnRpY2tldF90eXBlLmNyZWF0ZWR9YH1cbiAgICAgICAgICAgICAgICBzeD17eyBwYjogMSB9fVxuICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwib3JkZXItc3VtbWFyeS1pdGVtaXplZFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICB4e3RpY2tldC5xdHl9IHt0aWNrZXQudGlja2V0X3R5cGUubmFtZX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAgICAgICAge2Zvcm1hdEN1cnJlbmN5KHRpY2tldFRvdGFsLCB7IGN1cnJlbmN5OiBvcmRlci5jdXJyZW5jeSB9KX1cbiAgICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSl9XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICAgIDxEaXZpZGVyIC8+XG4gICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcHQ6IDEsIHBiOiAxIH19PlxuICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkuc3ViX3RvdGFsXCIpfVxuICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICB7c3ViVG90YWx9XG4gICAgICAgIDwvR3JpZD5cbiAgICAgIDwvR3JpZD5cbiAgICAgIHtvcmRlci50YXhlc19hbW91bnQgPiAwICYmXG4gICAgICAgIHRheGVzU3VtbWFyeT8ubGVuZ3RoID4gMCAmJlxuICAgICAgICB0YXhlc1N1bW1hcnkubWFwKCh0YXgpID0+IChcbiAgICAgICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcGI6IDEgfX0ga2V5PXt0YXguaWR9PlxuICAgICAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAgICAgIHt0YXgubmFtZX1cbiAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICAgICAge3RheC5hbW91bnR9XG4gICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICApKX1cbiAgICAgIHtvcmRlci5kaXNjb3VudF9hbW91bnQgPiAwICYmIChcbiAgICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHBiOiAxIH19PlxuICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LmRpc2NvdW50c1wiKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAgLXtkaXNjb3VudFRvdGFsfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIHtyZWZ1bmRUb3RhbCA+IDAgJiYgKFxuICAgICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcGI6IDEgfX0+XG4gICAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkucmVmdW5kc1wiKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAge3JlZnVuZFRvdGFsfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIDxEaXZpZGVyIC8+XG4gICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcHQ6IDEsIHBiOiAxIH19PlxuICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkudG90YWxcIil9XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgIHthbW91bnRUb3RhbH1cbiAgICAgICAgPC9HcmlkPlxuICAgICAgPC9HcmlkPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuT3JkZXJTdW1tYXJ5VGFibGUucHJvcFR5cGVzID0ge1xuICBvcmRlcjogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBjdXJyZW5jeTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBkaXNjb3VudF9hbW91bnQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgdGF4ZXNfYW1vdW50OiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIHN0YXR1czogUHJvcFR5cGVzLnN0cmluZ1xuICB9KSxcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0XG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlclN1bW1hcnlUYWJsZTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEdyaWQsIEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgT3JkZXJTdW1tYXJ5VGFibGUgZnJvbSBcIi4vT3JkZXJTdW1tYXJ5VGFibGVcIjtcbmltcG9ydCBPcmRlckFjdGlvbnMgZnJvbSBcIi4vT3JkZXJBY3Rpb25zXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IE9yZGVyU3VtbWFyeSA9ICh7XG4gIG9yZGVyLFxuICBzdW1taXQsXG4gIG9uUmVmdW5kQ2xpY2ssXG4gIHN1Ym1pdFJlcXVlc3QsXG4gIG9uUmVmdW5kRGV0YWlsQ2xpY2tcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8Qm94XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyU3VtbWFyeVdyYXBwZXJ9XG4gICAgICAgIHN4PXt7IHB0OiA0LCBweDogNCB9fVxuICAgICAgICBkYXRhLXRlc3RpZD1cIm9yZGVyLXN1bW1hcnktY29udGFpbmVyXCJcbiAgICAgID5cbiAgICAgICAgPGgzPnt0KFwib3JkZXJfc3VtbWFyeS5vcmRlcl9zdW1tYXJ5XCIpfTwvaDM+XG4gICAgICAgIDxHcmlkIGNvbnRhaW5lcj5cbiAgICAgICAgICA8R3JpZFxuICAgICAgICAgICAgeHM9ezEyfVxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJTdW1tYXJ5UHVyY2hhc2VkSW5mb31cbiAgICAgICAgICAgIHN4PXt7IHBiOiAzIH19XG4gICAgICAgICAgICBpdGVtXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPE9yZGVyU3VtbWFyeVRhYmxlIG9yZGVyPXtvcmRlcn0gc3VtbWl0PXtzdW1taXR9IC8+XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICA8L0JveD5cbiAgICAgIDxCb3ggeHM9ezEyfSBzeD17eyBwYjogMyB9fT5cbiAgICAgICAgPE9yZGVyQWN0aW9uc1xuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICB0aWNrZXRzPXtvcmRlcj8ubWVtYmVyVGlja2V0c31cbiAgICAgICAgICBzdWJtaXRSZXF1ZXN0PXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICAgIG9uUmVmdW5kQ2xpY2s9e29uUmVmdW5kQ2xpY2t9XG4gICAgICAgICAgb25SZWZ1bmREZXRhaWxDbGljaz17b25SZWZ1bmREZXRhaWxDbGlja31cbiAgICAgICAgLz5cbiAgICAgIDwvQm94PlxuICAgIDwvPlxuICApO1xufTtcbk9yZGVyU3VtbWFyeS5wcm9wVHlwZXMgPSB7XG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgb3JkZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgbWVtYmVyVGlja2V0czogUHJvcFR5cGVzLmFycmF5T2YoT2JqZWN0KVxuICB9KSxcbiAgb25SZWZ1bmRDbGljazogUHJvcFR5cGVzLmZ1bmMsXG4gIHN1Ym1pdFJlcXVlc3Q6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlclN1bW1hcnk7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgSW5maW5pdGVTY3JvbGwgZnJvbSBcInJlYWN0LWluZmluaXRlLXNjcm9sbC1jb21wb25lbnRcIjtcbmltcG9ydCBPcmRlckxpc3RUaWNrZXRzIGZyb20gXCIuL09yZGVyTGlzdFRpY2tldHNcIjtcbmltcG9ydCB7IE9ORV9QQUdFX05FWFQgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IEFzc2lnblRvTWUgPSAoeyBmZXRjaERhdGEgfSkgPT4ge1xuICBjb25zdCB7XG4gICAgc3VtbWl0LFxuICAgIHVzZXJUaWNrZXRzLFxuICAgIHVzZXJfdGlja2V0c19jdXJyZW50X3BhZ2UsXG4gICAgdXNlcl90aWNrZXRzX2xhc3RfcGFnZVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJUaWNrZXRDb250YWluZXJ9PlxuICAgICAgPGRpdiBpZD1cImFzc2lnbmVkVG9NZVdyYXBwZXJcIiBjbGFzc05hbWU9e3N0eWxlcy5hc3NpZ25lZFRvTWVXcmFwcGVyfT5cbiAgICAgICAgPEluZmluaXRlU2Nyb2xsXG4gICAgICAgICAgZGF0YUxlbmd0aD17dXNlclRpY2tldHM/Lmxlbmd0aH1cbiAgICAgICAgICBuZXh0PXsoKSA9PiBmZXRjaERhdGEodXNlcl90aWNrZXRzX2N1cnJlbnRfcGFnZSArIE9ORV9QQUdFX05FWFQpfVxuICAgICAgICAgIGhhc01vcmU9e3VzZXJfdGlja2V0c19jdXJyZW50X3BhZ2UgPCB1c2VyX3RpY2tldHNfbGFzdF9wYWdlfVxuICAgICAgICAgIHNjcm9sbFRocmVzaG9sZD17MX1cbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0TGlzdENvbnRhaW5lcn0+XG4gICAgICAgICAgICB7dXNlclRpY2tldHMubWFwKCh0aWNrZXQpID0+IChcbiAgICAgICAgICAgICAgPE9yZGVyTGlzdFRpY2tldHNcbiAgICAgICAgICAgICAgICBrZXk9e3RpY2tldC5pZH1cbiAgICAgICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICAgICAgICBpc1JlZnVuZE1vZGFsPXtmYWxzZX1cbiAgICAgICAgICAgICAgICBpc1NlbGVjdGVkVG9SZWZ1bmQ9e1tdfVxuICAgICAgICAgICAgICAgIHNlbGVjdFRvUmVmdW5kPXtmYWxzZX1cbiAgICAgICAgICAgICAgICBpc0V4dGVybmFsQXNzaWduZWRUaWNrZXRcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L0luZmluaXRlU2Nyb2xsPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBBc3NpZ25Ub01lO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94LCBHcmlkLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgQXNzaWduZWRUbyA9ICh7IGVtYWlsIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMubGFiZWx9Pnt0KFwidGlja2V0X3N0YXR1cy5hc3NpZ25lZF90b1wiKX06PC9Cb3g+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTFcIiBkYXRhLXRlc3RpZD1cImF0dGVuZGVlLXN0YXR1cy1hc3NpZ25lZFwiPlxuICAgICAgICB7ZW1haWx9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5jb25zdCBFeHRlcm5hbEFzc2lnbmVkVG8gPSAoeyBmaXJzdE5hbWUsIGxhc3ROYW1lIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMubGFiZWx9Pnt0KFwidGlja2V0X3N0YXR1cy5hc3NpZ25lZF9ieVwiKX06PC9Cb3g+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTFcIj5cbiAgICAgICAge2ZpcnN0TmFtZX0ge2xhc3ROYW1lfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgIDwvQm94PlxuICApO1xufTtcblxuY29uc3QgTWFuYWdlRm9yID0gKHsgZmlyc3ROYW1lLCBsYXN0TmFtZSB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmxhYmVsfT57dChcInRpY2tldF9zdGF0dXMubWFuYWdlX2ZvclwiKX06PC9Cb3g+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTFcIj5cbiAgICAgICAge2ZpcnN0TmFtZX0ge2xhc3ROYW1lfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgIDwvQm94PlxuICApO1xufTtcblxuY29uc3QgQXR0ZW5kZWVTdGF0dXMgPSAoeyB0aWNrZXQsIGlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgaXNVbmFzc2lnbmVkID0gIXRpY2tldC5vd25lcj8uZW1haWwgJiYgdGlja2V0LmlzX2FjdGl2ZTtcbiAgY29uc3QgaXNEZWxlZ2F0ZWQgPSAhIXRpY2tldC5vd25lcj8ubWFuYWdlcl9pZDtcblxuICBpZiAoaXNVbmFzc2lnbmVkKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxzcGFuXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldE93bmVyRW1haWx9XG4gICAgICAgIGRhdGEtdGVzdGlkPVwiYXR0ZW5kZWUtc3RhdHVzLXVuYXNzaWduZWRcIlxuICAgICAgPlxuICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuYXR0ZW5kZWVfc3RhdHVzX3VuYXNzaWduZWRcIil9XG4gICAgICA8L3NwYW4+XG4gICAgKTtcbiAgfVxuXG4gIGlmICh0aWNrZXQub3duZXI/LmVtYWlsKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxHcmlkIGNvbnRhaW5lcj5cbiAgICAgICAgPEdyaWQgaXRlbT5cbiAgICAgICAgICA8QXNzaWduZWRUbyBlbWFpbD17dGlja2V0Lm93bmVyLmVtYWlsfSAvPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICAgIHtpc0V4dGVybmFsQXNzaWduZWRUaWNrZXQgJiYgKFxuICAgICAgICAgIDxHcmlkIGl0ZW0gY2xhc3NOYW1lPXtzdHlsZXMuYXNzaWduZWRCeVRleHR9PlxuICAgICAgICAgICAgPEV4dGVybmFsQXNzaWduZWRUb1xuICAgICAgICAgICAgICBmaXJzdE5hbWU9e3RpY2tldC5vcmRlcj8ub3duZXJfZmlyc3RfbmFtZX1cbiAgICAgICAgICAgICAgbGFzdE5hbWU9e3RpY2tldC5vcmRlcj8ub3duZXJfbGFzdF9uYW1lfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICl9XG4gICAgICAgIHtpc0RlbGVnYXRlZCAmJiAoXG4gICAgICAgICAgPEdyaWQgaXRlbSBjbGFzc05hbWU9e3N0eWxlcy5hc3NpZ25lZEJ5VGV4dH0+XG4gICAgICAgICAgICA8TWFuYWdlRm9yXG4gICAgICAgICAgICAgIGZpcnN0TmFtZT17dGlja2V0Lm93bmVyPy5maXJzdF9uYW1lfVxuICAgICAgICAgICAgICBsYXN0TmFtZT17dGlja2V0Lm93bmVyPy5sYXN0X25hbWV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgKX1cbiAgICAgIDwvR3JpZD5cbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuXG5BdHRlbmRlZVN0YXR1cy5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBvd25lcjogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIGVtYWlsOiBQcm9wVHlwZXMuc3RyaW5nXG4gICAgfSksXG4gICAgaXNfYWN0aXZlOiBQcm9wVHlwZXMuYm9vbFxuICB9KSxcbiAgaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0OiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgQXR0ZW5kZWVTdGF0dXM7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBPcmRlckxpc3RUaWNrZXRzIGZyb20gXCIuL09yZGVyTGlzdFRpY2tldHNcIjtcbmltcG9ydCB7IFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgT3JkZXJMaXN0SXRlbSA9ICh7XG4gIHN1bW1pdCxcbiAgb3JkZXIsXG4gIG9uUGFnaW5hdGVDbGljayxcbiAgdGlja2V0c1RvUmVmdW5kLFxuICBzZWxlY3RUb1JlZnVuZFxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtpdGVtc1RvRGlzcGxheSwgc2V0SXRlbXNUb0Rpc3BsYXldID0gdXNlU3RhdGUoXG4gICAgUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UXG4gICk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRJdGVtc1RvRGlzcGxheShQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQpO1xuICB9LCBbb3JkZXI/LnRpY2tldHNfdG90YWxdKTtcblxuICBpZiAoIW9yZGVyPy5tZW1iZXJUaWNrZXRzPy5sZW5ndGgpIHJldHVybiBudWxsO1xuICBjb25zdCBzbGljZWRUaWNrZXRzID0gb3JkZXI/Lm1lbWJlclRpY2tldHM/LnNsaWNlKDAsIGl0ZW1zVG9EaXNwbGF5KTtcblxuICBjb25zdCBvblZpZXdNb3JlID0gKCkgPT4ge1xuICAgIGlmIChvcmRlcj8udGlja2V0c190b3RhbCA+IG9yZGVyPy5tZW1iZXJUaWNrZXRzLmxlbmd0aCkge1xuICAgICAgb25QYWdpbmF0ZUNsaWNrKCk7XG4gICAgfVxuICAgIHNldEl0ZW1zVG9EaXNwbGF5KGl0ZW1zVG9EaXNwbGF5ICsgUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UKTtcbiAgfTtcblxuICBjb25zdCBvblZpZXdMZXNzID0gKCkgPT4gc2V0SXRlbXNUb0Rpc3BsYXkoUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7c2xpY2VkVGlja2V0cz8ubWFwKCh0aWNrZXQpID0+IChcbiAgICAgICAgPE9yZGVyTGlzdFRpY2tldHNcbiAgICAgICAgICBrZXk9e3RpY2tldC5pZH1cbiAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICBpc1JlZnVuZE1vZGFsPXtmYWxzZX1cbiAgICAgICAgICBpc1NlbGVjdGVkVG9SZWZ1bmQ9eyEhdGlja2V0c1RvUmVmdW5kLmZpbmQoKHQpID0+IHQuaWQgPT09IHRpY2tldC5pZCl9XG4gICAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e3NlbGVjdFRvUmVmdW5kfVxuICAgICAgICAvPlxuICAgICAgKSl9XG4gICAgICB7b3JkZXI/LnRpY2tldHNfdG90YWwgPiBpdGVtc1RvRGlzcGxheSA/IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJ2aWV3IG1vcmUgYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy52aWV3TW9yZUJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXtvblZpZXdNb3JlfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJnZW5lcmFsLnZpZXdfbW9yZVwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApIDogKFxuICAgICAgICBcIlwiXG4gICAgICApfVxuICAgICAge3NsaWNlZFRpY2tldHM/Lmxlbmd0aCA+IFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCAmJlxuICAgICAgc2xpY2VkVGlja2V0cz8ubGVuZ3RoID09PSBvcmRlcj8udGlja2V0c190b3RhbCA/IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJ2aWV3IGxlc3MgYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy52aWV3TW9yZUJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXtvblZpZXdMZXNzfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJnZW5lcmFsLnZpZXdfbGVzc1wiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApIDogKFxuICAgICAgICBcIlwiXG4gICAgICApfVxuICAgIDwvPlxuICApO1xufTtcblxuT3JkZXJMaXN0SXRlbS5wcm9wVHlwZXMgPSB7XG4gIG9yZGVyOiBQcm9wVHlwZXMub2JqZWN0LFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3Rcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyTGlzdEl0ZW07XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEdyaWQsIEJ1dHRvbiwgQm94LCBUb29sdGlwIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBTdGFjayBmcm9tIFwiQG11aS9tYXRlcmlhbC9TdGFja1wiO1xuaW1wb3J0IENoZWNrYm94IGZyb20gXCJAbXVpL21hdGVyaWFsL0NoZWNrYm94XCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IFRpY2tldFN0YXR1cyBmcm9tIFwiLi4vVGlja2V0U3RhdHVzXCI7XG5pbXBvcnQgeyBnZXRTdW1taXRSZWFzc2lnbkRhdGUgfSBmcm9tIFwiLi4vLi4vdXRpbHMvc3VtbWl0VXRpbHNcIjtcbmltcG9ydCB7IHVzZU5vdyB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0IEF0dGVuZGVlU3RhdHVzIGZyb20gXCIuL0F0dGVuZGVlU3RhdHVzXCI7XG5pbXBvcnQgVGlja2V0RGV0YWlsIGZyb20gXCIuLi9UaWNrZXREZXRhaWxcIjtcbmltcG9ydCB7IHVzZVRpY2tldERldGFpbHMgfSBmcm9tIFwiLi4vLi4vaG9va3MvdXNlVGlja2V0RGV0YWlsc1wiO1xuaW1wb3J0IENvcHlUZXh0IGZyb20gXCIuLi9Db3B5VGV4dFwiO1xuaW1wb3J0IFRpY2tldEFzc2lnbiBmcm9tIFwiLi4vVGlja2V0QXNzaWduXCI7XG5pbXBvcnQgQmFkZ2VGZWF0dXJlSWNvbiBmcm9tIFwiLi4vQmFkZ2VGZWF0dXJlSWNvblwiO1xuaW1wb3J0IHsgcmVzZXRUaWNrZXQgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBtb2RhbFZpZXdzID0ge1xuICBkZXRhaWw6IFwiREVUQUlMXCIsXG4gIHJlYXNzaWduOiBcIlJFQVNTSUdOXCIsXG4gIGFzc2lnbjogXCJBU1NJR05cIlxufTtcblxuY29uc3QgVGlja2V0Q1RBcyA9ICh7XG4gIGlzSW5jb21wbGV0ZSxcbiAgaXNVbmFzc2lnbmVkLFxuICBpc1JlYXNzaWduYWJsZSxcbiAgb25PcGVuQ2xpY2tcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGlmIChpc1VuYXNzaWduZWQpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPEJ1dHRvblxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5hc3NpZ25UaWNrZXRCdXR0b259XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IG9uT3BlbkNsaWNrKG1vZGFsVmlld3MuYXNzaWduKX1cbiAgICAgID5cbiAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLmFzc2lnbl90aWNrZXRcIil9XG4gICAgICA8L0J1dHRvbj5cbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8U3RhY2sgYWxpZ25JdGVtcz1cImNlbnRlclwiIGRpcmVjdGlvbj1cInJvd1wiPlxuICAgICAgPEJ1dHRvblxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy52aWV3RmluaXNoVGlja2V0QnV0dG9ufVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBvbk9wZW5DbGljayhtb2RhbFZpZXdzLmRldGFpbCl9XG4gICAgICA+XG4gICAgICAgIHtpc0luY29tcGxldGVcbiAgICAgICAgICA/IHQoXCJ0aWNrZXRfc3RhdHVzLmZpbmlzaF90aWNrZXRcIilcbiAgICAgICAgICA6IHQoXCJ0aWNrZXRfc3RhdHVzLnZpZXdfdGlja2V0XCIpfVxuICAgICAgPC9CdXR0b24+XG4gICAgICB7aXNSZWFzc2lnbmFibGUgJiYgKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlYXNzaWduIHRpY2tldCBidXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnJlYXNzaWduQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uT3BlbkNsaWNrKG1vZGFsVmlld3MucmVhc3NpZ24pfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnJlYXNzaWduX3RpY2tldFwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApfVxuICAgIDwvU3RhY2s+XG4gICk7XG59O1xuXG5UaWNrZXRDVEFzLnByb3BUeXBlcyA9IHtcbiAgaXNJbmNvbXBsZXRlOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICBpc1VuYXNzaWduZWQ6IFByb3BUeXBlcy5ib29sLmlzUmVxdWlyZWQsXG4gIGlzUmVhc3NpZ25hYmxlOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICBvbk9wZW5DbGljazogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxufTtcblxuY29uc3QgT3JkZXJMaXN0VGlja2V0cyA9ICh7XG4gIHRpY2tldCxcbiAgc3VtbWl0LFxuICBpc1JlZnVuZE1vZGFsLFxuICBpc1NlbGVjdGVkVG9SZWZ1bmQsXG4gIHNlbGVjdFRvUmVmdW5kLFxuICBpc0V4dGVybmFsQXNzaWduZWRUaWNrZXRcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IG5vdyA9IHVzZU5vdygpO1xuICBjb25zdCB7IGlzUmVmdW5kYWJsZSwgaXNVbmFzc2lnbmVkLCBpc0luY29tcGxldGUsIGNhblJlYXNzaWduIH0gPVxuICAgIHVzZVRpY2tldERldGFpbHModGlja2V0KTtcbiAgY29uc3QgW21vZGFsT3Blbiwgc2V0TW9kYWxPcGVuXSA9IHVzZVN0YXRlKG51bGwpO1xuICBjb25zdCByZWFzc2lnbkRhdGUgPSBnZXRTdW1taXRSZWFzc2lnbkRhdGUoc3VtbWl0KTtcbiAgY29uc3Qgb25SZWFzc2lnbmFibGVQZXJpb2QgPSByZWFzc2lnbkRhdGUgPiBub3c7XG4gIGNvbnN0IGlzUmVhc3NpZ25hYmxlID1cbiAgICBvblJlYXNzaWduYWJsZVBlcmlvZCAmJiBjYW5SZWFzc2lnbiAmJiAhaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0O1xuXG4gIGNvbnN0IGhhbmRsZUNsb3NlTW9kYWwgPSAoKSA9PiB7XG4gICAgZGlzcGF0Y2gocmVzZXRUaWNrZXQoKSk7XG4gICAgc2V0TW9kYWxPcGVuKG51bGwpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZU9wZW5Nb2RhbCA9ICh2aWV3KSA9PiB7XG4gICAgZGlzcGF0Y2gocmVzZXRUaWNrZXQoKSk7XG4gICAgc2V0TW9kYWxPcGVuKHZpZXcpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEdyaWRcbiAgICAgIGNvbnRhaW5lclxuICAgICAga2V5PXt0aWNrZXQuaWR9XG4gICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5vcmRlcldyYXBwZXJ9ICR7XG4gICAgICAgIGlzUmVmdW5kTW9kYWwgPyBzdHlsZXMucmVmdW5kTW9kYWwgOiBcIlwiXG4gICAgICB9ICR7aXNSZWZ1bmRNb2RhbCAmJiAhaXNSZWZ1bmRhYmxlID8gc3R5bGVzLmRpc2FibGVkUmVmdW5kIDogXCJcIn0gJHtcbiAgICAgICAgaXNTZWxlY3RlZFRvUmVmdW5kID8gc3R5bGVzLnNlbGVjdGVkIDogXCJcIlxuICAgICAgfWB9XG4gICAgPlxuICAgICAge2lzUmVmdW5kTW9kYWwgJiYgKFxuICAgICAgICA8R3JpZCBpdGVtIHhzPXsxfSBwYWRkaW5nPXsyfSBjbGFzc05hbWU9e3N0eWxlcy5jaGVja2JveH0+XG4gICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kIHRpY2tldCBjaGVja2JveFwiXG4gICAgICAgICAgICByb2xlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgY2hlY2tlZD17aXNTZWxlY3RlZFRvUmVmdW5kfVxuICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZWxlY3RUb1JlZnVuZChlLCB0aWNrZXQpfVxuICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgXCImIC5NdWlTdmdJY29uLXJvb3RcIjoge1xuICAgICAgICAgICAgICAgIGZvbnRTaXplOiAxOFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgZGlzYWJsZWQ9eyFpc1JlZnVuZGFibGV9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIDxHcmlkXG4gICAgICAgIGl0ZW1cbiAgICAgICAgY29udGFpbmVyXG4gICAgICAgIGRhdGEtdGVzdGlkPVwib3JkZXItbGlzdC10aWNrZXRcIlxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICAgICAgeHM9e2lzUmVmdW5kTW9kYWwgPyAxMSA6IDEyfVxuICAgICAgPlxuICAgICAgICA8R3JpZFxuICAgICAgICAgIHhzPXs4fVxuICAgICAgICAgIHB5PXsyfVxuICAgICAgICAgIHBsPXs0fVxuICAgICAgICAgIGl0ZW1cbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRUaWNrZXRUeXBlfVxuICAgICAgICAgIGp1c3RpZnk9XCJzcGFjZS1iZXR3ZWVuXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxTdGFja1xuICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwiZmxleC1zdGFydFwiXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aDQ+e3RpY2tldC50aWNrZXRfdHlwZT8ubmFtZX08L2g0PlxuICAgICAgICAgIDwvU3RhY2s+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAgPEdyaWQgY2xhc3NOYW1lPXtzdHlsZXMuYmFkZ2VGZWF0dXJlV3JhcHBlcn0geHM9ezR9IHB5PXsyfSBwcj17NH0gaXRlbT5cbiAgICAgICAgICB7dGlja2V0LmJhZGdlPy5mZWF0dXJlcz8ubWFwKChiZikgPT4gKFxuICAgICAgICAgICAgPFRvb2x0aXAgdGl0bGU9e2JmLm5hbWV9IGtleT17YmYubmFtZX0+XG4gICAgICAgICAgICAgIDxCYWRnZUZlYXR1cmVJY29uIG5hbWU9e2JmLm5hbWV9IGltYWdlPXtiZi5pbWFnZX0gLz5cbiAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9HcmlkPlxuICAgICAgICA8R3JpZCB4cz17MTJ9IHN4PXt7IHB4OiA0LCBwYjogMiB9fSBpdGVtPlxuICAgICAgICAgIDxBdHRlbmRlZVN0YXR1c1xuICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICBpc0V4dGVybmFsQXNzaWduZWRUaWNrZXQ9eyEhaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0fVxuICAgICAgICAgIC8+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0Tm99PlxuICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnRpY2tldF9ub1wiKX06e1wiIFwifVxuICAgICAgICAgICAgPENvcHlUZXh0XG4gICAgICAgICAgICAgIHRleHQ9e3RpY2tldC5udW1iZXJ9XG4gICAgICAgICAgICAgIHRvb2x0aXBUZXh0PXt0KFwidGlja2V0X3N0YXR1cy5jb3B5X3RpY2tldF9udW1iZXJcIil9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldEZvb3Rlcn0gcHg9e3sgeHM6IDEgfX0gcGI9e3sgeHM6IDIgfX0+XG4gICAgICAgICAgPEJveD5cbiAgICAgICAgICAgIDxUaWNrZXRTdGF0dXMgdGlja2V0PXt0aWNrZXR9IC8+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRBY3Rpb25CdXR0b25zfT5cbiAgICAgICAgICAgIHt0aWNrZXQuaXNfYWN0aXZlICYmICFpc1JlZnVuZE1vZGFsICYmIChcbiAgICAgICAgICAgICAgPFRpY2tldENUQXNcbiAgICAgICAgICAgICAgICBpc1VuYXNzaWduZWQ9e2lzVW5hc3NpZ25lZH1cbiAgICAgICAgICAgICAgICBpc0luY29tcGxldGU9e2lzSW5jb21wbGV0ZX1cbiAgICAgICAgICAgICAgICBpc1JlYXNzaWduYWJsZT17aXNSZWFzc2lnbmFibGUgJiYgIWlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldH1cbiAgICAgICAgICAgICAgICBvbk9wZW5DbGljaz17aGFuZGxlT3Blbk1vZGFsfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgPC9Cb3g+XG4gICAgICAgIDxUaWNrZXREZXRhaWxcbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICB0aWNrZXRJZD17dGlja2V0Py5pZH1cbiAgICAgICAgICBvcmRlcklkPXt0aWNrZXQ/Lm9yZGVyX2lkIHx8IHRpY2tldD8ub3JkZXI/LmlkfVxuICAgICAgICAgIG93bmVySWQ9e3RpY2tldD8ub3duZXI/LmlkfVxuICAgICAgICAgIG9wZW49e21vZGFsT3BlbiA9PT0gbW9kYWxWaWV3cy5kZXRhaWx9XG4gICAgICAgICAgb25DbG9zZT17aGFuZGxlQ2xvc2VNb2RhbH1cbiAgICAgICAgLz5cbiAgICAgICAgPFRpY2tldEFzc2lnblxuICAgICAgICAgIHRpY2tldElkPXt0aWNrZXQ/LmlkfVxuICAgICAgICAgIG9yZGVySWQ9e3RpY2tldD8ub3JkZXJfaWQgfHwgdGlja2V0Py5vcmRlcj8uaWR9XG4gICAgICAgICAgb3duZXJJZD17dGlja2V0Py5vd25lcj8uaWR9XG4gICAgICAgICAgb3Blbj17W21vZGFsVmlld3MucmVhc3NpZ24sIG1vZGFsVmlld3MuYXNzaWduXS5pbmNsdWRlcyhtb2RhbE9wZW4pfVxuICAgICAgICAgIG9uQ2xvc2U9e2hhbmRsZUNsb3NlTW9kYWx9XG4gICAgICAgIC8+XG4gICAgICA8L0dyaWQ+XG4gICAgPC9HcmlkPlxuICApO1xufTtcblxuT3JkZXJMaXN0VGlja2V0cy5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBpZDogUHJvcFR5cGVzLm51bWJlcixcbiAgICBvcmRlcl9pZDogUHJvcFR5cGVzLm51bWJlcixcbiAgICBvd25lcjogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIGlkOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgICAgZW1haWw6IFByb3BUeXBlcy5zdHJpbmdcbiAgICB9KSxcbiAgICBudW1iZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgdG90YWxfcmVmdW5kZWRfYW1vdW50OiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIHRpY2tldF90eXBlOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgbmFtZTogUHJvcFR5cGVzLnN0cmluZ1xuICAgIH0pLFxuICAgIGlzX2FjdGl2ZTogUHJvcFR5cGVzLmJvb2xcbiAgfSksXG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgaXNSZWZ1bmRNb2RhbDogUHJvcFR5cGVzLmJvb2wsXG4gIGlzU2VsZWN0ZWRUb1JlZnVuZDogUHJvcFR5cGVzLmJvb2wsXG4gIHNlbGVjdFRvUmVmdW5kOiBQcm9wVHlwZXMuZnVuYyxcbiAgaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0OiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJMaXN0VGlja2V0cztcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgR3JpZCwgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBUYWJzIGZyb20gXCJAbXVpL21hdGVyaWFsL1RhYnNcIjtcbmltcG9ydCBUYWIgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvVGFiXCI7XG5pbXBvcnQgT3JkZXJMaXN0SXRlbSBmcm9tIFwiLi9PcmRlckxpc3RJdGVtXCI7XG5pbXBvcnQgT3JkZXJTdW1tYXJ5IGZyb20gXCIuLi9PcmRlclN1bW1hcnlcIjtcbmltcG9ydCBSZWZ1bmRSZXF1ZXN0c01vZGFsIGZyb20gXCIuLi9SZWZ1bmRSZXF1ZXN0c1wiO1xuaW1wb3J0IEVycm9yTGFiZWwgZnJvbSBcIi4uL0xhYmVscy9FcnJvckxhYmVsXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgUmVmdW5kRGV0YWlscyBmcm9tIFwiLi4vUmVmdW5kUmVxdWVzdHMvUmVmdW5kRGV0YWlsc1wiO1xuXG5jb25zdCBUYWJQYW5lbCA9IChwcm9wcykgPT4ge1xuICBjb25zdCB7IGNoaWxkcmVuLCB2YWx1ZSwgaW5kZXggfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHJvbGU9XCJ0YWJwYW5lbFwiXG4gICAgICBoaWRkZW49e3ZhbHVlICE9PSBpbmRleH1cbiAgICAgIGlkPXtgdGFicGFuZWwtJHtpbmRleH1gfVxuICAgICAgYXJpYS1sYWJlbGxlZGJ5PXtgdGFiLSR7aW5kZXh9YH1cbiAgICA+XG4gICAgICB7dmFsdWUgPT09IGluZGV4ICYmIGNoaWxkcmVufVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuY29uc3QgT3JkZXJzTGlzdERlc2t0b3BNb2JpbGUgPSAoe1xuICBpc01vYmlsZSxcbiAgc3VtbWl0LFxuICBvcmRlcixcbiAgZGV0YWlsc1JlcXVpcmVkLFxuICBvblBhZ2luYXRlQ2xpY2tcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbdmFsdWUsIHNldFZhbHVlXSA9IHVzZVN0YXRlKDApO1xuICBjb25zdCBoYW5kbGVDaGFuZ2UgPSAoXywgbmV3VmFsdWUpID0+IHtcbiAgICBzZXRWYWx1ZShuZXdWYWx1ZSk7XG4gIH07XG4gIGNvbnN0IFt0aWNrZXRzVG9SZWZ1bmQsIHNldFRpY2tldHNUb1JlZnVuZF0gPSB1c2VTdGF0ZShbXSk7XG4gIGNvbnN0IFtzdWJtaXRSZXF1ZXN0LCBzZXRTdWJtaXRSZXF1ZXN0XSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW3JlZnVuZERldGFpbHNPcGVuLCBzZXRSZWZ1bmREZXRhaWxzT3Blbl0gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgY29uc3Qgb25SZWZ1bmRDbGljayA9ICgpID0+IHtcbiAgICBzZXRTdWJtaXRSZXF1ZXN0KHRydWUpO1xuICB9O1xuICBjb25zdCB1bnNlbGVjdFJlZnVuZFRpY2tldHMgPSAodGlja2V0KSA9PiB7XG4gICAgY29uc3QgZmlsdGVyU2VsZWN0ZWQgPSB0aWNrZXRzVG9SZWZ1bmQuZmlsdGVyKCh0KSA9PiB0LmlkICE9PSB0aWNrZXQuaWQpO1xuICAgIHNldFRpY2tldHNUb1JlZnVuZChmaWx0ZXJTZWxlY3RlZCk7XG4gIH07XG4gIGNvbnN0IHNlbGVjdFRvUmVmdW5kID0gKGUsIHRpY2tldCkgPT4ge1xuICAgIGNvbnN0IHsgY2hlY2tlZCB9ID0gZS50YXJnZXQ7XG4gICAgaWYgKGNoZWNrZWQpIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkVGlja2V0ID0gb3JkZXI/Lm1lbWJlclRpY2tldHM/LmZpbmQoXG4gICAgICAgICh0KSA9PiB0LmlkID09PSB0aWNrZXQuaWRcbiAgICAgICk7XG4gICAgICBzZXRUaWNrZXRzVG9SZWZ1bmQoWy4uLnRpY2tldHNUb1JlZnVuZCwgc2VsZWN0ZWRUaWNrZXRdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzKHRpY2tldCk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGNsb3NlU3VibWl0UmVxdWVzdCA9ICgpID0+IHtcbiAgICBzZXRTdWJtaXRSZXF1ZXN0KGZhbHNlKTtcbiAgICBzZXRUaWNrZXRzVG9SZWZ1bmQoW10pO1xuICB9O1xuXG4gIGNvbnN0IHJlc2V0QWxsUmVmdW5kU3RhdHVzZXMgPSAoKSA9PiB7XG4gICAgc2V0U3VibWl0UmVxdWVzdChmYWxzZSk7XG4gICAgc2V0VGlja2V0c1RvUmVmdW5kKFtdKTtcbiAgfTtcblxuICBjb25zdCBtb3JlRGV0YWlscyA9ICgpID0+XG4gICAgZGV0YWlsc1JlcXVpcmVkICYmIChcbiAgICAgIDxFcnJvckxhYmVsXG4gICAgICAgIG1lc3NhZ2U9e3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c19kZXRhaWxzX3JlcXVpcmVkXCIpfVxuICAgICAgICBjb2xvcj1cIiNmZjk4MDBcIlxuICAgICAgICBkYXRhVGVzdElkPVwibW9yZS1kZXRhaWxzLWxhYmVsXCJcbiAgICAgIC8+XG4gICAgKTtcblxuICByZXR1cm4gaXNNb2JpbGUgPyAoXG4gICAgPEJveFxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0TGlzdENvbnRhaW5lcn1cbiAgICAgIGRhdGEtdGVzdGlkPVwibW9iaWxlLW9yZGVycy1saXN0LWNvbnRhaW5lclwiXG4gICAgPlxuICAgICAgPEJveCBzeD17eyBib3JkZXJDb2xvcjogXCJkaXZpZGVyXCIsIHBiOiAyIH19PlxuICAgICAgICA8VGFic1xuICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJUaWNrZXRzICYgU3VtbWFyeVwiXG4gICAgICAgID5cbiAgICAgICAgICA8VGFiIGxhYmVsPXt0KFwibGFiZWxzLnRpY2tldHNcIil9IGNsYXNzTmFtZT17c3R5bGVzLnRhYkJ1dHRvbnN9IC8+XG4gICAgICAgICAgPFRhYiBsYWJlbD17dChcImxhYmVscy5zdW1tYXJ5XCIpfSBjbGFzc05hbWU9e3N0eWxlcy50YWJCdXR0b25zfSAvPlxuICAgICAgICA8L1RhYnM+XG4gICAgICA8L0JveD5cbiAgICAgIHttb3JlRGV0YWlscygpfVxuICAgICAgPFRhYlBhbmVsIHZhbHVlPXt2YWx1ZX0gaW5kZXg9ezB9PlxuICAgICAgICA8T3JkZXJMaXN0SXRlbVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICBvblBhZ2luYXRlQ2xpY2s9e29uUGFnaW5hdGVDbGlja31cbiAgICAgICAgICB0aWNrZXRzVG9SZWZ1bmQ9e3RpY2tldHNUb1JlZnVuZH1cbiAgICAgICAgICBzZWxlY3RUb1JlZnVuZD17c2VsZWN0VG9SZWZ1bmR9XG4gICAgICAgICAgc3VibWl0UmVxdWVzdD17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgICB1bnNlbGVjdFJlZnVuZFRpY2tldHM9e3Vuc2VsZWN0UmVmdW5kVGlja2V0c31cbiAgICAgICAgLz5cbiAgICAgIDwvVGFiUGFuZWw+XG4gICAgICA8VGFiUGFuZWwgdmFsdWU9e3ZhbHVlfSBpbmRleD17MX0+XG4gICAgICAgIDxPcmRlclN1bW1hcnlcbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgb25SZWZ1bmRDbGljaz17b25SZWZ1bmRDbGlja31cbiAgICAgICAgICBzdWJtaXRSZXF1ZXN0PXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICAgIG9uUmVmdW5kRGV0YWlsQ2xpY2s9eygpID0+IHNldFJlZnVuZERldGFpbHNPcGVuKHRydWUpfVxuICAgICAgICAvPlxuICAgICAgICA8UmVmdW5kUmVxdWVzdHNNb2RhbFxuICAgICAgICAgIHRpY2tldHM9e29yZGVyPy5tZW1iZXJUaWNrZXRzIHx8IFtdfVxuICAgICAgICAgIG9wZW49e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgICAgb25SZWZ1bmRTdWNjZXNzQ2xvc2U9eygpID0+IHJlc2V0QWxsUmVmdW5kU3RhdHVzZXMoKX1cbiAgICAgICAgICBvbkNsb3NlU2xpZGVyPXsoKSA9PiBjbG9zZVN1Ym1pdFJlcXVlc3QoKX1cbiAgICAgICAgICB0aWNrZXRzVG9SZWZ1bmQ9e3RpY2tldHNUb1JlZnVuZH1cbiAgICAgICAgICBzZWxlY3RUb1JlZnVuZD17c2VsZWN0VG9SZWZ1bmR9XG4gICAgICAgICAgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzPXt1bnNlbGVjdFJlZnVuZFRpY2tldHN9XG4gICAgICAgIC8+XG4gICAgICAgIDxSZWZ1bmREZXRhaWxzXG4gICAgICAgICAgdGlja2V0cz17b3JkZXI/Lm1lbWJlclRpY2tldHN9XG4gICAgICAgICAgY3VycmVuY3k9e29yZGVyLmN1cnJlbmN5fVxuICAgICAgICAgIG9wZW49e3JlZnVuZERldGFpbHNPcGVufVxuICAgICAgICAgIG9uQ2xvc2VTbGlkZXI9eygpID0+IHNldFJlZnVuZERldGFpbHNPcGVuKGZhbHNlKX1cbiAgICAgICAgLz5cbiAgICAgIDwvVGFiUGFuZWw+XG4gICAgPC9Cb3g+XG4gICkgOiAoXG4gICAgPD5cbiAgICAgIDxHcmlkIGl0ZW0gbWQ9ezEyfT5cbiAgICAgICAge21vcmVEZXRhaWxzKCl9XG4gICAgICA8L0dyaWQ+XG4gICAgICA8R3JpZFxuICAgICAgICBwYWRkaW5nPXsxfVxuICAgICAgICBpdGVtXG4gICAgICAgIG1kPXs3fVxuICAgICAgICBvcmRlcj17eyBtZDogMSB9fVxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRMaXN0Q29udGFpbmVyfVxuICAgICAgICBkYXRhLXRlc3RpZD1cImRlc2t0b3Atb3JkZXJzLWxpc3QtY29udGFpbmVyXCJcbiAgICAgID5cbiAgICAgICAgPE9yZGVyTGlzdEl0ZW1cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgb25QYWdpbmF0ZUNsaWNrPXtvblBhZ2luYXRlQ2xpY2t9XG4gICAgICAgICAgdGlja2V0c1RvUmVmdW5kPXt0aWNrZXRzVG9SZWZ1bmR9XG4gICAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e3NlbGVjdFRvUmVmdW5kfVxuICAgICAgICAgIHN1Ym1pdFJlcXVlc3Q9e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgICAgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzPXt1bnNlbGVjdFJlZnVuZFRpY2tldHN9XG4gICAgICAgIC8+XG4gICAgICA8L0dyaWQ+XG4gICAgICA8R3JpZCBwYWRkaW5nPXsxfSBpdGVtIG1kPXs1fSBvcmRlcj17eyBtZDogMSB9fT5cbiAgICAgICAgPE9yZGVyU3VtbWFyeVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICBvblJlZnVuZENsaWNrPXtvblJlZnVuZENsaWNrfVxuICAgICAgICAgIHN1Ym1pdFJlcXVlc3Q9e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgICAgb25SZWZ1bmREZXRhaWxDbGljaz17KCkgPT4gc2V0UmVmdW5kRGV0YWlsc09wZW4odHJ1ZSl9XG4gICAgICAgIC8+XG4gICAgICA8L0dyaWQ+XG4gICAgICA8UmVmdW5kUmVxdWVzdHNNb2RhbFxuICAgICAgICB0aWNrZXRzPXtvcmRlcj8ubWVtYmVyVGlja2V0cyB8fCBbXX1cbiAgICAgICAgb3Blbj17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgb25SZWZ1bmRTdWNjZXNzQ2xvc2U9eygpID0+IHJlc2V0QWxsUmVmdW5kU3RhdHVzZXMoKX1cbiAgICAgICAgb25DbG9zZVNsaWRlcj17KCkgPT4gY2xvc2VTdWJtaXRSZXF1ZXN0KCl9XG4gICAgICAgIHRpY2tldHNUb1JlZnVuZD17dGlja2V0c1RvUmVmdW5kfVxuICAgICAgICBzZWxlY3RUb1JlZnVuZD17c2VsZWN0VG9SZWZ1bmR9XG4gICAgICAgIHVuc2VsZWN0UmVmdW5kVGlja2V0cz17dW5zZWxlY3RSZWZ1bmRUaWNrZXRzfVxuICAgICAgLz5cbiAgICAgIDxSZWZ1bmREZXRhaWxzXG4gICAgICAgIHRpY2tldHM9e29yZGVyPy5tZW1iZXJUaWNrZXRzfVxuICAgICAgICBjdXJyZW5jeT17b3JkZXIuY3VycmVuY3l9XG4gICAgICAgIG9wZW49e3JlZnVuZERldGFpbHNPcGVufVxuICAgICAgICBvbkNsb3NlU2xpZGVyPXsoKSA9PiBzZXRSZWZ1bmREZXRhaWxzT3BlbihmYWxzZSl9XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufTtcblxuT3JkZXJzTGlzdERlc2t0b3BNb2JpbGUucHJvcFR5cGVzID0ge1xuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIG9yZGVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIG1lbWJlclRpY2tldHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdClcbiAgfSksXG4gIGlzTW9iaWxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgZGV0YWlsc1JlcXVpcmVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25QYWdpbmF0ZUNsaWNrOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJzTGlzdERlc2t0b3BNb2JpbGU7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkLCBCb3gsIEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiO1xuaW1wb3J0IHVzZU1lZGlhUXVlcnkgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvdXNlTWVkaWFRdWVyeVwiO1xuaW1wb3J0IHsgZ2V0VGlja2V0c0J5T3JkZXIgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsgZ2V0Rm9ybWF0dGVkRGF0ZSB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0IHsgT05FX1BBR0VfTkVYVCB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCBPcmRlcnNMaXN0RGVza3RvcE1vYmlsZSBmcm9tIFwiLi9PcmRlcnNMaXN0RGVza3RvcE1vYmlsZVwiO1xuaW1wb3J0IENvcHlUZXh0IGZyb20gXCIuLi9Db3B5VGV4dFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBPcmRlcnNMaXN0ID0gKHsgc3VtbWl0LCBvcmRlciB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCB7IHRpY2tldF9wZXJfcGFnZSwgZmlsdGVyLCBzb3J0IH0gPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LFxuICAgIHNoYWxsb3dFcXVhbFxuICApO1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG4gIGNvbnN0IGlzTW9iaWxlID0gdXNlTWVkaWFRdWVyeSh0aGVtZS5icmVha3BvaW50cy5kb3duKFwibGdcIikpO1xuICBjb25zdCBbaXNNb2JpbGVWaWV3YWJsZSwgc2V0TW9iaWxlVmlld2FibGVdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBkZXRhaWxzUmVxdWlyZWQgPSBvcmRlci5tZW1iZXJUaWNrZXRzPy5maW5kKFxuICAgICh0aWNrZXQpID0+IHRpY2tldC5vd25lcj8uc3RhdHVzID09PSBcIkluY29tcGxldGVcIlxuICApO1xuXG4gIGNvbnN0IG9uUGFnaW5hdGVDbGljayA9ICgpID0+XG4gICAgZGlzcGF0Y2goXG4gICAgICBnZXRUaWNrZXRzQnlPcmRlcih7XG4gICAgICAgIG9yZGVySWQ6IG9yZGVyLmlkLFxuICAgICAgICBwYWdlOiBvcmRlci50aWNrZXRzX3BhZ2VfY3VycmVudCArIE9ORV9QQUdFX05FWFQsXG4gICAgICAgIHBlclBhZ2U6IHRpY2tldF9wZXJfcGFnZSxcbiAgICAgICAgZmlsdGVyLFxuICAgICAgICBzb3J0XG4gICAgICB9KVxuICAgICk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPEJveFxuICAgICAgICBzeD17eyBwYWRkaW5nOiB7IHhzOiAyLCBtZDogMSwgbGc6IDAgfSB9fVxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclRpY2tldEluZm9Db250YWluZXJ9XG4gICAgICA+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJUaWNrZXRJbmZvfVxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwib3JkZXItdGlja2V0LWluZm8tY29udGFpbmVyXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwib3JkZXJzLnB1cmNoYXNlZFwiKX06IHtnZXRGb3JtYXR0ZWREYXRlKG9yZGVyLmNyZWF0ZWQpfSB8e1wiIFwifVxuICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5vcmRlcl9ub1wiKX06e1wiIFwifVxuICAgICAgICAgIDxDb3B5VGV4dFxuICAgICAgICAgICAgdGV4dD17b3JkZXIubnVtYmVyfVxuICAgICAgICAgICAgdG9vbHRpcFRleHQ9e3QoXCJvcmRlcl9zdW1tYXJ5LmNvcHlfb3JkZXJfbnVtYmVyXCIpfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAge2lzTW9iaWxlICYmIChcbiAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICBzeD17eyBwYWRkaW5nOiBcIjVweCAxMHB4XCIgfX1cbiAgICAgICAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldE1vYmlsZVZpZXdhYmxlKCFpc01vYmlsZVZpZXdhYmxlKX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7aXNNb2JpbGVWaWV3YWJsZVxuICAgICAgICAgICAgICA/IHQoXCJ0aWNrZXRfc3RhdHVzLmhpZGVfdGlja2V0c1wiKVxuICAgICAgICAgICAgICA6IHQoXCJ0aWNrZXRfc3RhdHVzLnZpZXdfdGlja2V0c1wiKX1cbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgKX1cbiAgICAgIDwvQm94PlxuICAgICAgPEdyaWRcbiAgICAgICAga2V5PXtvcmRlci5pZH1cbiAgICAgICAgY29udGFpbmVyXG4gICAgICAgIHJvd1NwYWNpbmc9ezF9XG4gICAgICAgIGNvbHVtblNwYWNpbmc9e3sgeHM6IDEsIHNtOiAyLCBtZDogMyB9fVxuICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5vcmRlclRpY2tldENvbnRhaW5lcn0gJHtcbiAgICAgICAgICBpc01vYmlsZSAmJiAhaXNNb2JpbGVWaWV3YWJsZSA/IHN0eWxlcy5kaXNwbGF5X25vbmUgOiBcIlwiXG4gICAgICAgIH1gfVxuICAgICAgICBzeD17e1xuICAgICAgICAgIGZsZXhEaXJlY3Rpb246IHtcbiAgICAgICAgICAgIG1kOiBcInJvd1wiLFxuICAgICAgICAgICAgbGc6IFwicm93XCJcbiAgICAgICAgICB9LFxuICAgICAgICAgIHBhZGRpbmc6IHtcbiAgICAgICAgICAgIHhzOiAyLFxuICAgICAgICAgICAgbWQ6IDQsXG4gICAgICAgICAgICBsZzogMFxuICAgICAgICAgIH1cbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPE9yZGVyc0xpc3REZXNrdG9wTW9iaWxlXG4gICAgICAgICAgaXNNb2JpbGU9e2lzTW9iaWxlfVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICBkZXRhaWxzUmVxdWlyZWQ9eyEhZGV0YWlsc1JlcXVpcmVkfVxuICAgICAgICAgIG9uUGFnaW5hdGVDbGljaz17b25QYWdpbmF0ZUNsaWNrfVxuICAgICAgICAvPlxuICAgICAgPC9HcmlkPlxuICAgIDwvPlxuICApO1xufTtcblxuT3JkZXJzTGlzdC5wcm9wVHlwZXMgPSB7XG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgb3JkZXI6IFByb3BUeXBlcy5vYmplY3Rcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyc0xpc3Q7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBSaWdodERyYXdlciBmcm9tIFwiLi4vUmlnaHREcmF3ZXJcIjtcbmltcG9ydCBSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQgZnJvbSBcIi4vUmVmdW5kUmVxdWVzdGVkVGlja2V0XCI7XG5pbXBvcnQgeyBnZXRBbGxSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRzIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3RpY2tldFV0aWxzXCI7XG5cbmNvbnN0IFJlZnVuZERldGFpbHMgPSAoeyB0aWNrZXRzLCBjdXJyZW5jeSwgb3Blbiwgb25DbG9zZVNsaWRlciB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgcmVxdWVzdGVkVGlja2V0cyA9IHVzZU1lbW8oXG4gICAgKCkgPT4gZ2V0QWxsUmVmdW5kUmVxdWVzdGVkVGlja2V0cyh0aWNrZXRzKSxcbiAgICBbdGlja2V0c11cbiAgKTtcbiAgY29uc3QgY2xvc2VTbGlkZXIgPSAoKSA9PiB7XG4gICAgb25DbG9zZVNsaWRlcigpO1xuICB9O1xuICByZXR1cm4gKFxuICAgIDxSaWdodERyYXdlclxuICAgICAgaWQ9XCJyZWZ1bmQtZGV0YWlsc1wiXG4gICAgICBvcGVuPXtvcGVufVxuICAgICAgb25DbG9zZT17Y2xvc2VTbGlkZXJ9XG4gICAgICB0aXRsZT17dChcIm9yZGVyX3N1bW1hcnkucmVmdW5kX2RldGFpbHNcIil9XG4gICAgPlxuICAgICAgPEJveFxuICAgICAgICBzeD17e1xuICAgICAgICAgIGRpc3BsYXk6IFwiZmxleFwiLFxuICAgICAgICAgIGZsZXhEaXJlY3Rpb246IFwiY29sdW1uXCIsXG4gICAgICAgICAgYWxpZ25JdGVtczogXCJjZW50ZXJcIixcbiAgICAgICAgICBwYWRkaW5nOiBcIjAgNXJlbVwiXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIHtyZXF1ZXN0ZWRUaWNrZXRzPy5tYXAoKHRpY2tldCkgPT4gKFxuICAgICAgICAgIDxSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRcbiAgICAgICAgICAgIGtleT17YHJlZnVuZF9yZXFfJHt0aWNrZXQ/LmlkfWB9XG4gICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgIGN1cnJlbmN5PXtjdXJyZW5jeX1cbiAgICAgICAgICAgIHJlZnVuZERldGFpbHNcbiAgICAgICAgICAvPlxuICAgICAgICApKX1cbiAgICAgIDwvQm94PlxuICAgIDwvUmlnaHREcmF3ZXI+XG4gICk7XG59O1xuXG5SZWZ1bmREZXRhaWxzLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0czogUHJvcFR5cGVzLmFycmF5T2YoT2JqZWN0KSxcbiAgb3BlbjogUHJvcFR5cGVzLmJvb2wsXG4gIG9uQ2xvc2VTbGlkZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWZ1bmREZXRhaWxzO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgR3JpZCwgSWNvbkJ1dHRvbiwgVG9vbHRpcCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB0b29sdGlwQ2xhc3NlcyB9IGZyb20gXCJAbXVpL21hdGVyaWFsL1Rvb2x0aXBcIjtcbmltcG9ydCB7IHN0eWxlZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiO1xuaW1wb3J0IEluZm9JY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0luZm9cIjtcbmltcG9ydCBTdGFjayBmcm9tIFwiQG11aS9tYXRlcmlhbC9TdGFja1wiO1xuaW1wb3J0IG1vbWVudCBmcm9tIFwibW9tZW50LXRpbWV6b25lXCI7XG5pbXBvcnQgQXR0ZW5kZWVTdGF0dXMgZnJvbSBcIi4uL09yZGVyc0xpc3QvQXR0ZW5kZWVTdGF0dXNcIjtcbmltcG9ydCBSZWZ1bmRTdGF0dXMgZnJvbSBcIi4vUmVmdW5kU3RhdHVzXCI7XG5pbXBvcnQgQ29weVRleHQgZnJvbSBcIi4uL0NvcHlUZXh0XCI7XG5pbXBvcnQgVGlja2V0U3RhdHVzIGZyb20gXCIuLi9UaWNrZXRTdGF0dXNcIjtcbmltcG9ydCBCYWRnZUZlYXR1cmVJY29uIGZyb20gXCIuLi9CYWRnZUZlYXR1cmVJY29uXCI7XG5pbXBvcnQgeyBNSUxMSVNFQ19UT19TRUMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBmb3JtYXRDdXJyZW5jeSB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQgPSAoeyB0aWNrZXQsIGN1cnJlbmN5LCByZWZ1bmREZXRhaWxzIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGNvbnN0IEdSSURfOCA9IDg7XG4gIGNvbnN0IEdSSURfMTIgPSAxMjtcblxuICBjb25zdCBQQURESU5HXzIgPSAyO1xuXG4gIGNvbnN0IGFwcHJvdmVkUmVmdW5kcyA9IHRpY2tldC5yZWZ1bmRfcmVxdWVzdHMuZmlsdGVyKFxuICAgIChyZWZ1bmQpID0+IHJlZnVuZC5zdGF0dXMgPT09IFwiQXBwcm92ZWRcIlxuICApO1xuXG4gIGNvbnN0IHJlZnVuZGVkVGF4ZXNTdW1tYXRvcnkgPSB7fTtcblxuICBhcHByb3ZlZFJlZnVuZHMuZm9yRWFjaCgocmVmdW5kKSA9PiB7XG4gICAgcmVmdW5kLnJlZnVuZGVkX3RheGVzLmZvckVhY2goKHJ0KSA9PiB7XG4gICAgICBjb25zdCB0YXhJZCA9IHJ0LnRheC5pZDtcbiAgICAgIGlmICghcmVmdW5kZWRUYXhlc1N1bW1hdG9yeVt0YXhJZF0pIHtcbiAgICAgICAgcmVmdW5kZWRUYXhlc1N1bW1hdG9yeVt0YXhJZF0gPSB7XG4gICAgICAgICAgbmFtZTogcnQudGF4Lm5hbWUsXG4gICAgICAgICAgdG90YWxSZWZ1bmRlZFRheEFtb3VudDogMFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmVmdW5kZWRUYXhlc1N1bW1hdG9yeVt0YXhJZF0udG90YWxSZWZ1bmRlZFRheEFtb3VudCArPVxuICAgICAgICBydC5yZWZ1bmRlZF9hbW91bnQ7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGNvbnN0IEh0bWxUb29sdGlwID0gc3R5bGVkKCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSkgPT4gKFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIDxUb29sdGlwIHsuLi5wcm9wc30gY2xhc3Nlcz17eyBwb3BwZXI6IGNsYXNzTmFtZSB9fSAvPlxuICApKSgoKSA9PiAoe1xuICAgIFtgJiAuJHt0b29sdGlwQ2xhc3Nlcy50b29sdGlwfWBdOiB7XG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiI2Y1ZjVmOVwiLFxuICAgICAgY29sb3I6IFwicmdiYSgwLCAwLCAwLCAwLjg3KVwiLFxuICAgICAgbWF4V2lkdGg6IDIyMCxcbiAgICAgIGZvbnRTaXplOiBcIjFlbVwiLFxuICAgICAgYm9yZGVyOiBcIjFweCBzb2xpZCAjZGFkZGU5XCJcbiAgICB9XG4gIH0pKTtcblxuICByZXR1cm4gKFxuICAgIDxHcmlkXG4gICAgICBjb250YWluZXJcbiAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLnJlZnVuZFRpY2tldEJveENvbnRhaW5lcn0gJHtcbiAgICAgICAgcmVmdW5kRGV0YWlscyA/IHN0eWxlcy5yZWZ1bmREZXRhaWwgOiBcIlwiXG4gICAgICB9IGB9XG4gICAgICBkYXRhLXRlc3RpZD1cInJlZnVuZC1yZXF1ZXN0ZWQtdGlja2V0LWNvbnRhaW5lclwiXG4gICAgPlxuICAgICAgPEdyaWRcbiAgICAgICAgeHM9e0dSSURfMTJ9XG4gICAgICAgIHNtPXtyZWZ1bmREZXRhaWxzID8gR1JJRF84IDogR1JJRF8xMn1cbiAgICAgICAgaXRlbVxuICAgICAgICBqdXN0aWZ5PVwic3BhY2UtYmV0d2VlblwiXG4gICAgICAgIHB0PXsyfVxuICAgICAgICBweD17NH1cbiAgICAgID5cbiAgICAgICAgPFN0YWNrXG4gICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiBcInNwYWNlLWJldHdlZW5cIixcbiAgICAgICAgICAgIGFsaWduSXRlbXM6IFwiY2VudGVyXCJcbiAgICAgICAgICB9fVxuICAgICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgICAgID5cbiAgICAgICAgICA8aDQ+e3RpY2tldC50aWNrZXRfdHlwZT8ubmFtZX08L2g0PlxuICAgICAgICAgIDxHcmlkIGNsYXNzTmFtZT17c3R5bGVzLmJhZGdlRmVhdHVyZVdyYXBwZXJ9IHhzPXs0fSBpdGVtPlxuICAgICAgICAgICAge3RpY2tldC5iYWRnZT8uZmVhdHVyZXM/Lm1hcCgoYmYpID0+IChcbiAgICAgICAgICAgICAgPEJhZGdlRmVhdHVyZUljb24ga2V5PXtiZi5uYW1lfSBuYW1lPXtiZi5uYW1lfSBpbWFnZT17YmYuaW1hZ2V9IC8+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvU3RhY2s+XG4gICAgICA8L0dyaWQ+XG4gICAgICB7cmVmdW5kRGV0YWlscyAmJiAoXG4gICAgICAgIDxHcmlkIHNtPXs0fSB4cz17MTJ9IHB4PXt7IHNtOiAyLCB4czogNCB9fSBweT17eyB4czogMSwgc206IDIgfX0gaXRlbT5cbiAgICAgICAgICA8UmVmdW5kU3RhdHVzIHRpY2tldD17dGlja2V0fSAvPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICApfVxuICAgICAgPEdyaWQgeHM9ezEyfSBpdGVtIHB4PXs0fSBwYj17cmVmdW5kRGV0YWlscyA/IFBBRERJTkdfMiA6IDB9IGNvbnRhaW5lcj5cbiAgICAgICAgPEdyaWQgeHM9ezEyfSBzbT17OH0gY2xhc3NOYW1lPXtzdHlsZXMucmVmdW5kVGlja2V0QXR0ZW5kZWV9PlxuICAgICAgICAgIDxBdHRlbmRlZVN0YXR1cyB0aWNrZXQ9e3RpY2tldH0gLz5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXROb30+XG4gICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMudGlja2V0X25vXCIpfTogPENvcHlUZXh0IHRleHQ9e3RpY2tldC5udW1iZXJ9IC8+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICAgIHtyZWZ1bmREZXRhaWxzICYmIHRpY2tldC50b3RhbF9yZWZ1bmRlZF9hbW91bnQgPiAwICYmIChcbiAgICAgICAgICA8R3JpZCB4cz17MTJ9IG1kPXs0fSBwbD17eyB4czogMCwgc206IDQgfX0+XG4gICAgICAgICAgICB7Zm9ybWF0Q3VycmVuY3kodGlja2V0LnRvdGFsX3JlZnVuZGVkX2Ftb3VudCwgeyBjdXJyZW5jeSB9KX17XCIgXCJ9XG4gICAgICAgICAgICBSZWZ1bmRlZFxuICAgICAgICAgICAge2FwcHJvdmVkUmVmdW5kcy5zb21lKChyKSA9PiByLnJlZnVuZGVkX3RheGVzLmxlbmd0aCA+IDApICYmIChcbiAgICAgICAgICAgICAgPEh0bWxUb29sdGlwXG4gICAgICAgICAgICAgICAgdGl0bGU9e1xuICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgICAgICAgICAge2Zvcm1hdEN1cnJlbmN5KHRpY2tldC5yZWZ1bmRlZF9hbW91bnQsIHsgY3VycmVuY3kgfSl9e1wiIFwifVxuICAgICAgICAgICAgICAgICAgICAgIFRpY2tldCBBbW91bnRcbiAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICA8Yj5UYXhlczwvYj5cbiAgICAgICAgICAgICAgICAgICAge09iamVjdC5rZXlzKHJlZnVuZGVkVGF4ZXNTdW1tYXRvcnkpLm1hcCgodGF4SWQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHRvdGFsUmVmdW5kZWRUYXhBbW91bnQsIG5hbWUgfSA9XG4gICAgICAgICAgICAgICAgICAgICAgICByZWZ1bmRlZFRheGVzU3VtbWF0b3J5W3RheElkXTtcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPHAga2V5PXt0YXhJZH0+e2Ake25hbWV9IC0gJHtmb3JtYXRDdXJyZW5jeShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxSZWZ1bmRlZFRheEFtb3VudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjdXJyZW5jeSB9XG4gICAgICAgICAgICAgICAgICAgICAgICApfWB9PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICA8SW5mb0ljb24gLz5cbiAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgIDwvSHRtbFRvb2x0aXA+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgICB7bW9tZW50KFxuICAgICAgICAgICAgICB0aWNrZXQucmVmdW5kX3JlcXVlc3RzWzBdLmFjdGlvbl9kYXRlICogTUlMTElTRUNfVE9fU0VDXG4gICAgICAgICAgICApLmZvcm1hdChcIk1NTSBERCwgWVlZWVwiKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICl9XG4gICAgICA8L0dyaWQ+XG4gICAgICB7IXJlZnVuZERldGFpbHMgJiYgKFxuICAgICAgICA8R3JpZCB4cz17MTJ9IHByPXs0fSBwYj17Mn0+XG4gICAgICAgICAgPEdyaWQgeHM9ezEyfSBpdGVtPlxuICAgICAgICAgICAgPFRpY2tldFN0YXR1cyB0aWNrZXQ9e3RpY2tldH0gLz5cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgPC9HcmlkPlxuICApO1xufTtcblxuUmVmdW5kUmVxdWVzdGVkVGlja2V0LnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMub2JqZWN0LFxuICByZWZ1bmREZXRhaWxzOiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVmdW5kUmVxdWVzdGVkVGlja2V0O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZU1lbW8gfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IENoaXAgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgZ2V0UmVmdW5kUmVxdWVzdGVkU3RhdHVzQ29sb3IgfSBmcm9tIFwiLi4vLi4vdXRpbHMvdGlja2V0VXRpbHNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBSZWZ1bmRTdGF0dXMgPSAoeyB0aWNrZXQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IHN0YXR1c0NvbG9yID0gdXNlTWVtbyhcbiAgICAoKSA9PiBnZXRSZWZ1bmRSZXF1ZXN0ZWRTdGF0dXNDb2xvcih0aWNrZXQpLFxuICAgIFt0aWNrZXRdXG4gICk7XG4gIHJldHVybiAoXG4gICAgPENoaXBcbiAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgcmVmdW5kIHN0YXR1cyBsYWJlbFwiXG4gICAgICBsYWJlbD17dChgdGlja2V0X3N0YXR1cy5yZWZ1bmRfcmVxdWVzdF8ke3N0YXR1c0NvbG9yfWApfVxuICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXNbc3RhdHVzQ29sb3JdfWB9XG4gICAgLz5cbiAgKTtcbn07XG5cblJlZnVuZFN0YXR1cy5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLm9iamVjdFxufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVmdW5kU3RhdHVzO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgQm94LCBCdXR0b24sIFN0eWxlZEVuZ2luZVByb3ZpZGVyIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBDaGVja0NpcmNsZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2hlY2tDaXJjbGVcIjtcbmltcG9ydCBSaWdodERyYXdlciBmcm9tIFwiLi4vUmlnaHREcmF3ZXJcIjtcbmltcG9ydCBFcnJvckxhYmVsIGZyb20gXCIuLi9MYWJlbHMvRXJyb3JMYWJlbFwiO1xuaW1wb3J0IHsgcmVmdW5kQnVsa1RpY2tldHMsIHVwZGF0ZVRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsgU1RFUF9PTkUsIFNURVBfVEhSRUUsIFNURVBfVFdPIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IE9yZGVyTGlzdFRpY2tldHMgZnJvbSBcIi4uL09yZGVyc0xpc3QvT3JkZXJMaXN0VGlja2V0c1wiO1xuaW1wb3J0IFJlZnVuZFJlcXVlc3RlZFRpY2tldCBmcm9tIFwiLi9SZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRcIjtcblxuY29uc3QgUmVmdW5kUmVxdWVzdHNNb2RhbCA9ICh7XG4gIHRpY2tldHMsXG4gIHN1bW1pdCxcbiAgb3BlbixcbiAgb25SZWZ1bmRTdWNjZXNzQ2xvc2UsXG4gIG9uQ2xvc2VTbGlkZXIsXG4gIHRpY2tldHNUb1JlZnVuZCxcbiAgc2VsZWN0VG9SZWZ1bmQsXG4gIHVuc2VsZWN0UmVmdW5kVGlja2V0c1xufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgW3N0ZXAsIHNldFN0ZXBdID0gdXNlU3RhdGUoU1RFUF9PTkUpO1xuICBjb25zdCBbZXJyb3JNc2csIHNldEVycm9yTXNnXSA9IHVzZVN0YXRlKFwiXCIpO1xuICBjb25zdCBbcmVmdW5kU3VjY2Vzcywgc2V0UmVmdW5kU3VjY2Vzc10gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgY29uc3QgY2xvc2VTbGlkZXIgPSAoKSA9PiB7XG4gICAgc2V0RXJyb3JNc2coXCJcIik7XG4gICAgb25DbG9zZVNsaWRlcigpO1xuICAgIHNldFN0ZXAoU1RFUF9PTkUpO1xuICAgIGlmIChyZWZ1bmRTdWNjZXNzKSB7XG4gICAgICBvblJlZnVuZFN1Y2Nlc3NDbG9zZSgpOyAvLyBpZiB0aGUgcmVmdW5kIGlzIGEgc3VjY2VzcywgdHJpZ2dlciBhbmQgcmUtcmV0cmlldmUgdGlja2V0cyBieSBvcmRlclxuICAgICAgc2V0UmVmdW5kU3VjY2VzcyhmYWxzZSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGNvbmZpcm1SZWZ1bmQgPSAoKSA9PiB7XG4gICAgc2V0U3RlcChTVEVQX1RXTyk7XG4gIH07XG5cbiAgY29uc3QgZ29CYWNrVG9SZWZ1bmQgPSAoKSA9PiB7XG4gICAgc2V0U3RlcChTVEVQX09ORSk7XG4gIH07XG5cbiAgY29uc3QgcmVmdW5kVGlja2V0cyA9IGFzeW5jICgpID0+IHtcbiAgICBkaXNwYXRjaChyZWZ1bmRCdWxrVGlja2V0cyh7IHRpY2tldHM6IHRpY2tldHNUb1JlZnVuZCB9KSkudGhlbigocmVzKSA9PiB7XG4gICAgICBkaXNwYXRjaCh1cGRhdGVUaWNrZXRzUmVmdW5kUmVxdWVzdGVkKHJlcykpOyAvLyByZXR1cm5pbmcgd2hpY2ggdGlja2V0cyB3ZXJlIHN1Y2Nlc3NmdWxcbiAgICAgIGlmIChyZXM/Lmxlbmd0aCA9PT0gdGlja2V0c1RvUmVmdW5kLmxlbmd0aCkge1xuICAgICAgICBzZXRTdGVwKFNURVBfVEhSRUUpOyAvLyBzdWNjZXNzLCBhbGwgcmVmdW5kcyB3ZXJlIHJlcXVlc3RlZFxuICAgICAgICBzZXRSZWZ1bmRTdWNjZXNzKHRydWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0RXJyb3JNc2codChcImVycm9ycy5yZWZ1bmRfdW5zdWNjZXNzZnVsXCIpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBzZXRFcnJvck1zZyhcIlwiKTtcbiAgfTtcblxuICBjb25zdCByZWZ1bmRTdGVwT25lID0gKCkgPT4gKFxuICAgIDw+XG4gICAgICA8aDIgY2xhc3NOYW1lPXtzdHlsZXMuc3VidGl0bGV9PlxuICAgICAgICB7dChcImNvbmZpcm1fcG9wdXAucXVlc3Rpb25fdGV4dF9zZWxlY3RfcmVmdW5kXCIpfVxuICAgICAgPC9oMj5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0TGlzdH0+XG4gICAgICAgIHt0aWNrZXRzLm1hcCgodGlja2V0KSA9PiAoXG4gICAgICAgICAgPE9yZGVyTGlzdFRpY2tldHNcbiAgICAgICAgICAgIGtleT17YHRpY2tldC0ke3RpY2tldC5pZH1gfVxuICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICAgIGlzU2VsZWN0ZWRUb1JlZnVuZD17XG4gICAgICAgICAgICAgICEhdGlja2V0c1RvUmVmdW5kLmZpbmQoKHQpID0+IHQuaWQgPT09IHRpY2tldC5pZClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNlbGVjdFRvUmVmdW5kPXtzZWxlY3RUb1JlZnVuZH1cbiAgICAgICAgICAgIHVuc2VsZWN0UmVmdW5kVGlja2V0cz17dW5zZWxlY3RSZWZ1bmRUaWNrZXRzfVxuICAgICAgICAgICAgaXNSZWZ1bmRNb2RhbFxuICAgICAgICAgIC8+XG4gICAgICAgICkpfVxuICAgICAgPC9Cb3g+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmFjdGlvbkJ1dHRvbnN9PlxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZC1jYW5jZWwtYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jYW5jZWxCdXR0b259XG4gICAgICAgICAgb25DbGljaz17Y2xvc2VTbGlkZXJ9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcImdlbmVyYWwuY2FuY2VsXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQtY29udGludWUtYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jb250aW51ZUJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXtjb25maXJtUmVmdW5kfVxuICAgICAgICAgIGRpc2FibGVkPXt0aWNrZXRzVG9SZWZ1bmQubGVuZ3RoID09PSAwfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJnZW5lcmFsLmNvbnRpbnVlXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgIDwvQm94PlxuICAgIDwvPlxuICApO1xuXG4gIGNvbnN0IHJlZnVuZFN0ZXBUd28gPSAoKSA9PiAoXG4gICAgPEJveCBkYXRhLXRlc3RpZD1cInJlZnVuZC1yZXF1ZXN0LXN1Y2Nlc3NmdWxcIj5cbiAgICAgIDxoMyBjbGFzc05hbWU9e3N0eWxlcy5zdWJ0aXRsZX0+XG4gICAgICAgIHt0KFwiY29uZmlybV9wb3B1cC5xdWVzdGlvbl90ZXh0X2NvbmZpcm1fcmVmdW5kXCIpfVxuICAgICAgPC9oMz5cbiAgICAgIHtlcnJvck1zZyAmJiAoXG4gICAgICAgIDxFcnJvckxhYmVsXG4gICAgICAgICAgY2xhc3NOYW1lcz17c3R5bGVzLnJlZnVuZEVycm9yTXNnfVxuICAgICAgICAgIGNvbG9yPVwiI0ZGMDAwMFwiXG4gICAgICAgICAgZGF0YVRlc3RJZD1cImZhaWxlZC1yZWZ1bmQtbWVzc2FnZVwiXG4gICAgICAgICAgbWVzc2FnZT17ZXJyb3JNc2d9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRMaXN0fT5cbiAgICAgICAge3RpY2tldHNUb1JlZnVuZC5tYXAoKHRpY2tldCkgPT4gKFxuICAgICAgICAgIDxSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRcbiAgICAgICAgICAgIGtleT17YHJlZnVuZF9yZXFfJHt0aWNrZXQ/LmlkfWB9XG4gICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAvPlxuICAgICAgICApKX1cbiAgICAgIDwvQm94PlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5DVEFCdXR0b25XcmFwcGVyfT5cbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQtcmV0dXJuLWJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY2FuY2VsQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9e2dvQmFja1RvUmVmdW5kfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJnZW5lcmFsLmJhY2tcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZC1jb250aW51ZS1idXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNvbnRpbnVlQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9e3JlZnVuZFRpY2tldHN9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcImdlbmVyYWwuY29udGludWVcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgPC9Cb3g+XG4gICAgPC9Cb3g+XG4gICk7XG5cbiAgY29uc3QgcmVmdW5kU3RlcFRocmVlID0gKCkgPT4gKFxuICAgIDxCb3hcbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnJlZnVuZFN1Y2Nlc3NmdWx9XG4gICAgICBkYXRhLXRlc3RpZD1cInJlZnVuZC1yZXF1ZXN0LXN1Y2Nlc3NmdWxcIlxuICAgID5cbiAgICAgIDxDaGVja0NpcmNsZUljb24gc3g9e3sgY29sb3I6IFwiIzRjYWY1MFwiIH19IC8+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy5zdWNjZXNzTXNnfT5cbiAgICAgICAge3QoXCJ0aWNrZXRzLnJlZnVuZF9yZXF1ZXN0X3N1Y2Nlc3NfMVwiKX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLnN1Y2Nlc3NNc2cyfT5cbiAgICAgICAge3QoXCJ0aWNrZXRzLnJlZnVuZF9yZXF1ZXN0X3N1Y2Nlc3NfMlwiKX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxCdXR0b25cbiAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZC1maW5pc2gtYnV0dG9uXCJcbiAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNvbnRpbnVlQnV0dG9ufVxuICAgICAgICBvbkNsaWNrPXtjbG9zZVNsaWRlcn1cbiAgICAgID5cbiAgICAgICAge3QoXCJnZW5lcmFsLmZpbmlzaFwiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgIDwvQm94PlxuICApO1xuXG4gIGNvbnN0IHJlbmRlclN0ZXBzID0gKCkgPT4ge1xuICAgIHN3aXRjaCAoc3RlcCkge1xuICAgICAgY2FzZSBTVEVQX09ORTpcbiAgICAgICAgcmV0dXJuIHJlZnVuZFN0ZXBPbmUoKTtcbiAgICAgIGNhc2UgU1RFUF9UV086XG4gICAgICAgIHJldHVybiByZWZ1bmRTdGVwVHdvKCk7XG4gICAgICBjYXNlIFNURVBfVEhSRUU6XG4gICAgICAgIHJldHVybiByZWZ1bmRTdGVwVGhyZWUoKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiByZWZ1bmRTdGVwT25lKCk7XG4gICAgfVxuICB9O1xuICByZXR1cm4gKFxuICAgIDxTdHlsZWRFbmdpbmVQcm92aWRlciBpbmplY3RGaXJzdD5cbiAgICAgIDxSaWdodERyYXdlclxuICAgICAgICBpZD1cInJlZnVuZC1yZXF1ZXN0c1wiXG4gICAgICAgIG9wZW49e29wZW59XG4gICAgICAgIG9uQ2xvc2U9e2Nsb3NlU2xpZGVyfVxuICAgICAgICB0aXRsZT17dChcIm9yZGVyX3N1bW1hcnkucmVxdWVzdF9yZWZ1bmRcIil9XG4gICAgICAgIGRhdGEtdGVzdGlkPVwicmVmdW5kLXJlcXVlc3QtbW9kYWxcIlxuICAgICAgPlxuICAgICAgICB7cmVuZGVyU3RlcHMoKX1cbiAgICAgIDwvUmlnaHREcmF3ZXI+XG4gICAgPC9TdHlsZWRFbmdpbmVQcm92aWRlcj5cbiAgKTtcbn07XG5cblJlZnVuZFJlcXVlc3RzTW9kYWwucHJvcFR5cGVzID0ge1xuICB0aWNrZXRzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpLFxuICBvcGVuOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25SZWZ1bmRTdWNjZXNzQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICBvbkNsb3NlU2xpZGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVmdW5kUmVxdWVzdHNNb2RhbDtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEJveCwgRHJhd2VyLCBJY29uQnV0dG9uLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IENsb3NlIGFzIENsb3NlSWNvbiB9IGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFJpZ2h0RHJhd2VyID0gKHtcbiAgaWQsXG4gIHRpdGxlLFxuICBoZWFkZXJDaGlsZHJlbiA9IG51bGwsXG4gIGNoaWxkcmVuLFxuICBvcGVuLFxuICBvbkNsb3NlLFxuICBjbGFzc05hbWVcbn0pID0+IChcbiAgPERyYXdlclxuICAgIGlkPXtpZH1cbiAgICBvcGVuPXtvcGVufVxuICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgYW5jaG9yPVwicmlnaHRcIlxuICAgIE1vZGFsUHJvcHM9e3sga2VlcE1vdW50ZWQ6IGZhbHNlIH19XG4gICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMud3JhcHBlcn0gJHtjbGFzc05hbWV9YH1cbiAgPlxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuaGVhZGVyfT5cbiAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgIGRhdGEtdGVzdGlkPVwiY2xvc2UtZHJhd2VyXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY2xvc2VCdG59XG4gICAgICAgIG9uQ2xpY2s9e29uQ2xvc2V9XG4gICAgICAgIHN4PXt7IGZsb2F0OiBcInJpZ2h0XCIgfX1cbiAgICAgICAgZm9udFNpemU9XCJsYXJnZVwiXG4gICAgICA+XG4gICAgICAgIDxDbG9zZUljb24gLz5cbiAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgIHt0aXRsZSAmJiAoXG4gICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJoNlwiIGd1dHRlckJvdHRvbSBjbGFzc05hbWU9e3N0eWxlcy50aXRsZX0+XG4gICAgICAgICAge3RpdGxlfVxuICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICApfVxuICAgICAge2hlYWRlckNoaWxkcmVufVxuICAgIDwvQm94PlxuICAgIHtjaGlsZHJlbn1cbiAgPC9EcmF3ZXI+XG4pO1xuXG5SaWdodERyYXdlci5wcm9wVHlwZXMgPSB7XG4gIGlkOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIHRpdGxlOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuc3RyaW5nLCBQcm9wVHlwZXMubm9kZV0pLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIGhlYWRlckNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgb3BlbjogUHJvcFR5cGVzLmJvb2wsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJpZ2h0RHJhd2VyO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgc2hhbGxvd0VxdWFsLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBTdW1taXRIZWFkZXIgPSAoKSA9PiB7XG4gIGNvbnN0IHsgc3VtbWl0IH0gPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LFxuICAgIHNoYWxsb3dFcXVhbFxuICApO1xuICByZXR1cm4gKFxuICAgIDxCb3hcbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLndpZGdldEhlYWRlcn1cbiAgICAgIHN4PXt7IHBhZGRpbmc6IHsgeHM6IDIsIG1kOiAwLCBsZzogMCB9IH19XG4gICAgICBkYXRhLXRlc3RpZD1cIm15LW9yZGVycy10aWNrZXQtaGVhZGVyXCJcbiAgICA+XG4gICAgICA8aDIgY2xhc3NOYW1lPXtzdHlsZXMuc3VtbWl0VGl0bGVEYXRlfT57c3VtbWl0Py5uYW1lfTwvaDI+XG4gICAgICA8aDIgY2xhc3NOYW1lPXtzdHlsZXMuc3VtbWl0VGl0bGVEYXRlfT57c3VtbWl0Py5kYXRlc19sYWJlbH08L2gyPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgU3VtbWl0SGVhZGVyO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgcmVzZXRGaWx0ZXIgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IFN1bW1pdEhlYWRlciBmcm9tIFwiLi4vU3VtbWl0SGVhZGVyXCI7XG5pbXBvcnQgTm9UaWNrZXRzRm91bmQgZnJvbSBcIi4uL05vVGlja2V0c0ZvdW5kXCI7XG5pbXBvcnQgeyBUQUJTIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuXG5jb25zdCBUYWJXcmFwcGVyID0gKHsgdGFiLCBjaGlsZHJlbiwgc2V0VGFiIH0pID0+IHtcbiAgY29uc3QgeyBtZW1iZXJPcmRlcnMsIHVzZXJUaWNrZXRzLCBhY3RpdmVGaWx0ZXJzQ291bnQgfSA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge31cbiAgKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCB0aWNrZXRzID0gdGFiID09PSBUQUJTLlRJQ0tFVFMgPyB1c2VyVGlja2V0cyA6IG1lbWJlck9yZGVycztcbiAgY29uc3QgaGFzVGlja2V0cyA9IHRpY2tldHMubGVuZ3RoID4gMDtcbiAgY29uc3QgaXNGaWx0ZXJlZCA9IGFjdGl2ZUZpbHRlcnNDb3VudCA+IDA7XG5cbiAgY29uc3QgY2xlYXJGaWx0ZXJzID0gKCkgPT4ge1xuICAgIGRpc3BhdGNoKHJlc2V0RmlsdGVyKCkpO1xuICB9O1xuXG4gIGNvbnN0IGdldFBhZ2VWaWV3ID0gKCkgPT4ge1xuICAgIGlmIChpc0ZpbHRlcmVkKSByZXR1cm4gXCJmaWx0ZXJcIjtcbiAgICByZXR1cm4gdGFiID09PSBUQUJTLlRJQ0tFVFMgPyBUQUJTLlRJQ0tFVFMgOiBUQUJTLk9SREVSUztcbiAgfTtcblxuICBjb25zdCBnZXRPbkNsaWNrID0gKCkgPT4ge1xuICAgIGlmIChpc0ZpbHRlcmVkKSByZXR1cm4gY2xlYXJGaWx0ZXJzO1xuICAgIGNvbnN0IHRhYlRvTGluayA9IHRhYiA9PT0gVEFCUy5USUNLRVRTID8gVEFCUy5PUkRFUlMgOiBUQUJTLlRJQ0tFVFM7XG4gICAgcmV0dXJuICgpID0+IHNldFRhYih0YWJUb0xpbmspO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHshaGFzVGlja2V0cyAmJiAoXG4gICAgICAgIDxOb1RpY2tldHNGb3VuZCBwYWdlVmlldz17Z2V0UGFnZVZpZXcoKX0gb25DbGljaz17Z2V0T25DbGljaygpfSAvPlxuICAgICAgKX1cbiAgICAgIHtoYXNUaWNrZXRzICYmIChcbiAgICAgICAgPD5cbiAgICAgICAgICA8Qm94IHN4PXt7IHB0OiA2LCBwYjogMyB9fT5cbiAgICAgICAgICAgIDxTdW1taXRIZWFkZXIgLz5cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICA8Lz5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRhYldyYXBwZXI7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBCb3gsIEJ1dHRvbiwgQ29sbGFwc2UsIERpdmlkZXIsIExpbmsgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IFJlYXNzaWduRm9ybSBmcm9tIFwiLi4vUmVhc3NpZ25Gb3JtXCI7XG5pbXBvcnQgRGVsZWdhdGVGb3JtIGZyb20gXCIuLi9EZWxlZ2F0ZUZvcm1cIjtcbmltcG9ydCB7IHVzZVRpY2tldERldGFpbHMgfSBmcm9tIFwiLi4vLi4vLi4vLi4vaG9va3MvdXNlVGlja2V0RGV0YWlsc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IENvbmZpcm1EaWFsb2cgZnJvbSBcIi4uLy4uLy4uL0NvbmZpcm1EaWFsb2dcIjtcblxuY29uc3QgQXNzaWduT3B0aW9ucyA9ICh7XG4gIHRpY2tldCxcbiAgdXNlclByb2ZpbGUsXG4gIGFzc2lnbk9wdGlvbixcbiAgc2V0QXNzaWduT3B0aW9uLFxuICBvbkFzc2lnbixcbiAgb25EZWxlZ2F0ZSxcbiAgb25VbkFzc2lnblxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtvcGVuQ29uZmlybVVuYXNzaWduLCBzZXRPcGVuQ29uZmlybVVuYXNzaWduXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgaXNBc3NpZ25lZFRvTWUgPSB1c2VyUHJvZmlsZT8uZW1haWwgPT09IHRpY2tldD8ub3duZXI/LmVtYWlsO1xuICBjb25zdCB7IGFsbG93c0RlbGVnYXRlIH0gPSB1c2VUaWNrZXREZXRhaWxzKHRpY2tldCk7XG5cbiAgY29uc3QgaGFuZGxlVW5Bc3NpZ24gPSAoKSA9PiB7XG4gICAgc2V0T3BlbkNvbmZpcm1VbmFzc2lnbihmYWxzZSk7XG4gICAgb25VbkFzc2lnbigpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy53cmFwcGVyfT5cbiAgICAgIDxCdXR0b25cbiAgICAgICAgdmFyaWFudD1cImNvbnRhaW5lZFwiXG4gICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgIGRpc2FibGVkPXtpc0Fzc2lnbmVkVG9NZX1cbiAgICAgICAgb25DbGljaz17KCkgPT4gb25Bc3NpZ24odXNlclByb2ZpbGUuZW1haWwsIFwiXCIpfVxuICAgICAgPlxuICAgICAgICB7dChcInRpY2tldF9hc3NpZ24uYXNzaWduX3RvX21lXCIpfVxuICAgICAgPC9CdXR0b24+XG4gICAgICA8RGl2aWRlciB2YXJpYW50PVwibWlkZGxlXCIgc3g9e3sgbXk6IDMsIHB4OiA0IH19PlxuICAgICAgICBvclxuICAgICAgPC9EaXZpZGVyPlxuICAgICAgPEJveD5cbiAgICAgICAgPENvbGxhcHNlIGluPXthc3NpZ25PcHRpb24gPT09IFwib3RoZXJcIn0gdGltZW91dD17NTAwfT5cbiAgICAgICAgICA8UmVhc3NpZ25Gb3JtXG4gICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgIG9uU3VibWl0PXsodmFsKSA9PlxuICAgICAgICAgICAgICBvbkFzc2lnbih2YWwubmV3X2F0dGVuZGVlX2VtYWlsLCB2YWwucGVyc29uYWxfbWVzc2FnZSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHNldEFzc2lnbk9wdGlvbihudWxsKX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L0NvbGxhcHNlPlxuICAgICAgICB7YXNzaWduT3B0aW9uICE9PSBcIm90aGVyXCIgJiYgKFxuICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRBc3NpZ25PcHRpb24oXCJvdGhlclwiKX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dChcInRpY2tldF9hc3NpZ24uYXNzaWduX3RvX290aGVyXCIpfVxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICApfVxuICAgICAgPC9Cb3g+XG4gICAgICB7YWxsb3dzRGVsZWdhdGUgJiYgKFxuICAgICAgICA8PlxuICAgICAgICAgIDxEaXZpZGVyIHZhcmlhbnQ9XCJtaWRkbGVcIiBzeD17eyBteTogMywgcHg6IDQgfX0+XG4gICAgICAgICAgICBvclxuICAgICAgICAgIDwvRGl2aWRlcj5cbiAgICAgICAgICA8Q29sbGFwc2UgaW49e2Fzc2lnbk9wdGlvbiA9PT0gXCJtYW5hZ2VcIn0gdGltZW91dD17NTAwfT5cbiAgICAgICAgICAgIDxEZWxlZ2F0ZUZvcm1cbiAgICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICAgIG9uU3VibWl0PXsodmFsKSA9PlxuICAgICAgICAgICAgICAgIG9uRGVsZWdhdGUoXG4gICAgICAgICAgICAgICAgICB2YWwuZGVsZWdhdGVfZmlyc3RfbmFtZSxcbiAgICAgICAgICAgICAgICAgIHZhbC5kZWxlZ2F0ZV9sYXN0X25hbWUsXG4gICAgICAgICAgICAgICAgICB2YWwuZGVsZWdhdGVfZW1haWxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0QXNzaWduT3B0aW9uKG51bGwpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0NvbGxhcHNlPlxuICAgICAgICAgIHthc3NpZ25PcHRpb24gIT09IFwibWFuYWdlXCIgJiYgKFxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0QXNzaWduT3B0aW9uKFwibWFuYWdlXCIpfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9hc3NpZ24ubWFuYWdlX3RpY2tldFwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICAgIHt0aWNrZXQ/Lm93bmVyPy5lbWFpbCAmJiAoXG4gICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMudW5hc3NpZ25XcmFwcGVyfT5cbiAgICAgICAgICB7LyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzeC1hMTF5L2FuY2hvci1pcy12YWxpZCAqL31cbiAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgY29tcG9uZW50PVwiYnV0dG9uXCJcbiAgICAgICAgICAgIHZhcmlhbnQ9XCJib2R5MVwiXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRPcGVuQ29uZmlybVVuYXNzaWduKHRydWUpfVxuICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgY29sb3I6IFwidGV4dC5saW5rXCIsXG4gICAgICAgICAgICAgIHRleHREZWNvcmF0aW9uOiBcInVuZGVybGluZVwiLFxuICAgICAgICAgICAgICB0ZXh0RGVjb3JhdGlvbkNvbG9yOiBcInRleHQubGlua1wiXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5yZXZlcnRfdG9fdW5hc3NpZ25lZFwiKX1cbiAgICAgICAgICA8L0xpbms+XG4gICAgICAgIDwvQm94PlxuICAgICAgKX1cbiAgICAgIHsvKiBUT0RPOiBpZiB3ZSBuZWVkIHRvIHJldXNlIHRoaXMgdGhlbiB3ZSBzaG91bGQgbW92ZSBpdCB0byBjb250ZXh0ICovfVxuICAgICAgPENvbmZpcm1EaWFsb2dcbiAgICAgICAgb3Blbj17b3BlbkNvbmZpcm1VbmFzc2lnbn1cbiAgICAgICAgdGl0bGU9e3QoXCJ0aWNrZXRfYXNzaWduLmNvbmZpcm1fdW5hc3NpZ24udGl0bGVcIil9XG4gICAgICAgIGJvZHk9e3QoXCJ0aWNrZXRfYXNzaWduLmNvbmZpcm1fdW5hc3NpZ24uYm9keVwiKX1cbiAgICAgICAgb25Db25maXJtPXtoYW5kbGVVbkFzc2lnbn1cbiAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0T3BlbkNvbmZpcm1VbmFzc2lnbihmYWxzZSl9XG4gICAgICAvPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuQXNzaWduT3B0aW9ucy5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICB1c2VyUHJvZmlsZTogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBhc3NpZ25PcHRpb246IFByb3BUeXBlcy5zdHJpbmcsXG4gIHNldEFzc2lnbk9wdGlvbjogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25Bc3NpZ246IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uRGVsZWdhdGU6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEFzc2lnbk9wdGlvbnM7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBUZXh0RmllbGQsIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlRm9ybWlrIH0gZnJvbSBcImZvcm1pa1wiO1xuaW1wb3J0ICogYXMgeXVwIGZyb20gXCJ5dXBcIjtcblxuaW1wb3J0IEZvcm1Gb290ZXIgZnJvbSBcIi4uLy4uLy4uL0Zvcm1Gb290ZXJcIjtcblxuY29uc3QgRGVsZWdhdGVGb3JtID0gKHsgb25TdWJtaXQsIG9uQ2xvc2UgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgY29uc3QgZm9ybWlrID0gdXNlRm9ybWlrKHtcbiAgICBpbml0aWFsVmFsdWVzOiB7XG4gICAgICBkZWxlZ2F0ZV9maXJzdF9uYW1lOiBcIlwiLFxuICAgICAgZGVsZWdhdGVfbGFzdF9uYW1lOiBcIlwiLFxuICAgICAgZGVsZWdhdGVfZW1haWw6IFwiXCJcbiAgICB9LFxuICAgIHZhbGlkYXRpb25TY2hlbWE6IHl1cC5vYmplY3Qoe1xuICAgICAgZGVsZWdhdGVfZmlyc3RfbmFtZTogeXVwXG4gICAgICAgIC5zdHJpbmcodChcInZhbGlkYXRpb24uZmlyc3RfbmFtZS5zdHJpbmdcIikpXG4gICAgICAgIC5yZXF1aXJlZCh0KFwidmFsaWRhdGlvbi5maXJzdF9uYW1lLnJlcXVpcmVkXCIpKSxcbiAgICAgIGRlbGVnYXRlX2xhc3RfbmFtZTogeXVwXG4gICAgICAgIC5zdHJpbmcodChcInZhbGlkYXRpb24ubGFzdF9uYW1lLnN0cmluZ1wiKSlcbiAgICAgICAgLnJlcXVpcmVkKHQoXCJ2YWxpZGF0aW9uLmxhc3RfbmFtZS5yZXF1aXJlZFwiKSksXG4gICAgICBkZWxlZ2F0ZV9lbWFpbDogeXVwXG4gICAgICAgIC5zdHJpbmcodChcInZhbGlkYXRpb24uZW1haWwuc3RyaW5nXCIpKVxuICAgICAgICAuZW1haWwodChcInZhbGlkYXRpb24uZW1haWwuZm9ybWF0XCIpKVxuICAgIH0pLFxuICAgIG9uU3VibWl0OiAodmFsdWVzLCB7IHJlc2V0Rm9ybSB9KSA9PiB7XG4gICAgICBvblN1Ym1pdCh2YWx1ZXMpO1xuICAgICAgcmVzZXRGb3JtKCk7XG4gICAgfVxuICB9KTtcblxuICBjb25zdCBoYW5kbGVDYW5jZWwgPSAoKSA9PiB7XG4gICAgZm9ybWlrLnJlc2V0Rm9ybSgpO1xuICAgIG9uQ2xvc2UoKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiaDZcIiBndXR0ZXJCb3R0b20+XG4gICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5kZWxlZ2F0ZV9mb3JtLnRpdGxlXCIpfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkxXCIgZ3V0dGVyQm90dG9tIHN4PXt7IGNvbG9yOiBcInRleHQuc2Vjb25kYXJ5XCIgfX0+XG4gICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5kZWxlZ2F0ZV9mb3JtLmJvZHlcIil9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICA8Zm9ybSBvblN1Ym1pdD17Zm9ybWlrLmhhbmRsZVN1Ym1pdH0gbm9WYWxpZGF0ZT5cbiAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIG5hbWU9XCJkZWxlZ2F0ZV9maXJzdF9uYW1lXCJcbiAgICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5kZWxlZ2F0ZV9mb3JtLmZpcnN0X25hbWVcIil9XG4gICAgICAgICAgdmFsdWU9e2Zvcm1pay52YWx1ZXMuZGVsZWdhdGVfZmlyc3RfbmFtZX1cbiAgICAgICAgICBvbkNoYW5nZT17Zm9ybWlrLmhhbmRsZUNoYW5nZX1cbiAgICAgICAgICBvbkJsdXI9e2Zvcm1pay5oYW5kbGVCbHVyfVxuICAgICAgICAgIGVycm9yPXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlX2ZpcnN0X25hbWUgJiZcbiAgICAgICAgICAgIEJvb2xlYW4oZm9ybWlrLmVycm9ycy5kZWxlZ2F0ZV9maXJzdF9uYW1lKVxuICAgICAgICAgIH1cbiAgICAgICAgICBoZWxwZXJUZXh0PXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlX2ZpcnN0X25hbWUgJiZcbiAgICAgICAgICAgIGZvcm1pay5lcnJvcnMuZGVsZWdhdGVfZmlyc3RfbmFtZVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAvPlxuICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgbmFtZT1cImRlbGVnYXRlX2xhc3RfbmFtZVwiXG4gICAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgICBsYWJlbD17dChcInRpY2tldF9hc3NpZ24uZGVsZWdhdGVfZm9ybS5sYXN0X25hbWVcIil9XG4gICAgICAgICAgdmFsdWU9e2Zvcm1pay52YWx1ZXMuZGVsZWdhdGVfbGFzdF9uYW1lfVxuICAgICAgICAgIG9uQ2hhbmdlPXtmb3JtaWsuaGFuZGxlQ2hhbmdlfVxuICAgICAgICAgIG9uQmx1cj17Zm9ybWlrLmhhbmRsZUJsdXJ9XG4gICAgICAgICAgZXJyb3I9e1xuICAgICAgICAgICAgZm9ybWlrLnRvdWNoZWQuZGVsZWdhdGVfbGFzdF9uYW1lICYmXG4gICAgICAgICAgICBCb29sZWFuKGZvcm1pay5lcnJvcnMuZGVsZWdhdGVfbGFzdF9uYW1lKVxuICAgICAgICAgIH1cbiAgICAgICAgICBoZWxwZXJUZXh0PXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlX2xhc3RfbmFtZSAmJlxuICAgICAgICAgICAgZm9ybWlrLmVycm9ycy5kZWxlZ2F0ZV9sYXN0X25hbWVcbiAgICAgICAgICB9XG4gICAgICAgIC8+XG4gICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICBuYW1lPVwiZGVsZWdhdGVfZW1haWxcIlxuICAgICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5kZWxlZ2F0ZV9mb3JtLmVtYWlsXCIpfVxuICAgICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgICAgdmFsdWU9e2Zvcm1pay52YWx1ZXMuZGVsZWdhdGVfZW1haWx9XG4gICAgICAgICAgb25DaGFuZ2U9e2Zvcm1pay5oYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgb25CbHVyPXtmb3JtaWsuaGFuZGxlQmx1cn1cbiAgICAgICAgICBlcnJvcj17XG4gICAgICAgICAgICBmb3JtaWsudG91Y2hlZC5kZWxlZ2F0ZV9lbWFpbCAmJlxuICAgICAgICAgICAgQm9vbGVhbihmb3JtaWsuZXJyb3JzLmRlbGVnYXRlX2VtYWlsKVxuICAgICAgICAgIH1cbiAgICAgICAgICBoZWxwZXJUZXh0PXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlX2VtYWlsICYmIGZvcm1pay5lcnJvcnMuZGVsZWdhdGVfZW1haWxcbiAgICAgICAgICB9XG4gICAgICAgIC8+XG4gICAgICAgIDxGb3JtRm9vdGVyXG4gICAgICAgICAgc2F2ZUxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5kZWxlZ2F0ZV9mb3JtLnNhdmVcIil9XG4gICAgICAgICAgY2FuY2VsTGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLmRlbGVnYXRlX2Zvcm0uY2FuY2VsXCIpfVxuICAgICAgICAgIG9uQ2xvc2U9e2hhbmRsZUNhbmNlbH1cbiAgICAgICAgICBkaXNhYmxlZD17Zm9ybWlrLmlzU3VibWl0dGluZ31cbiAgICAgICAgLz5cbiAgICAgIDwvZm9ybT5cbiAgICA8Lz5cbiAgKTtcbn07XG5cbkRlbGVnYXRlRm9ybS5wcm9wVHlwZXMgPSB7XG4gIG9uU3VibWl0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBEZWxlZ2F0ZUZvcm07XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3gsIExpbmssIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IENvcHlUZXh0IGZyb20gXCIuLi8uLi8uLi9Db3B5VGV4dFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBBc3NpZ25IZWFkZXIgPSAoeyBpblByb2dyZXNzLCB0aWNrZXQsIHVzZXJFbWFpbCwgb25DbG9zZSB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgYXNzaWduZWRUb1lvdSA9IHRpY2tldD8ub3duZXI/LmVtYWlsID09PSB1c2VyRW1haWw7XG5cbiAgY29uc3QgZ2V0U2Vjb25kYXJ5VGl0bGUgPSAoKSA9PiB7XG4gICAgaWYgKGluUHJvZ3Jlc3MgPT09IFwibWFuYWdlXCIpIHtcbiAgICAgIHJldHVybiBgJHt0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfYXNzaWduLmRlbGVnYXRlZFwiKX0gJHtcbiAgICAgICAgdGlja2V0Lm93bmVyLmZpcnN0X25hbWVcbiAgICAgIH0gJHt0aWNrZXQub3duZXIubGFzdF9uYW1lfS5gO1xuICAgIH1cblxuICAgIGlmIChpblByb2dyZXNzKSB7XG4gICAgICBjb25zdCB1c2VyID0gYXNzaWduZWRUb1lvdSA/IFwieW91XCIgOiB0aWNrZXQ/Lm93bmVyPy5lbWFpbDtcbiAgICAgIHJldHVybiBgJHt0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfYXNzaWduLmFzc2lnbmVkX3RvXCIpfSAke3VzZXJ9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGlja2V0LnRpY2tldF90eXBlLm5hbWU7XG4gIH07XG5cbiAgY29uc3QgZ2V0SGVhZGVyTm90ZSA9ICgpID0+IHtcbiAgICBpZiAoaW5Qcm9ncmVzcykge1xuICAgICAgY29uc3QgdHJhbnNLZXkgPSBhc3NpZ25lZFRvWW91XG4gICAgICAgID8gXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9hc3NpZ24uYW5zd2VyX3lvdXJfZXFcIlxuICAgICAgICA6IFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfYXNzaWduLmFuc3dlcl9vdGhlcnNfZXFcIjtcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPD5cbiAgICAgICAgICB7dCh0cmFuc0tleSl9XG4gICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgey8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc3gtYTExeS9hbmNob3ItaXMtdmFsaWQgKi99XG4gICAgICAgICAgPExpbmtcbiAgICAgICAgICAgIGNvbXBvbmVudD1cImJ1dHRvblwiXG4gICAgICAgICAgICB2YXJpYW50PVwiYm9keTFcIlxuICAgICAgICAgICAgb25DbGljaz17b25DbG9zZX1cbiAgICAgICAgICAgIHN4PXt7IGZvbnRXZWlnaHQ6IDcwMCwgbWFyZ2luOiBcIjIwcHggMCAxMHB4XCIgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dChcInRpY2tldF9hc3NpZ24uaGVhZGVyX2Fzc2lnbi5jb21wbGV0ZV9sYXRlclwiKX1cbiAgICAgICAgICA8L0xpbms+XG4gICAgICAgIDwvPlxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gXCJcIjtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMud3JhcHBlcn0+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnB1cmNoYXNlZEJ5V3JhcHBlcn0+XG4gICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MVwiIGd1dHRlckJvdHRvbSBjbGFzc05hbWU9e3N0eWxlcy5wdXJjaGFzZWRCeX0+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9hc3NpZ24ucHVyY2hhc2VkX2J5XCIpfXtcIiBcIn1cbiAgICAgICAgICB7dGlja2V0Py5vcmRlcj8ub3duZXJfZW1haWx9XG4gICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkxXCIgZ3V0dGVyQm90dG9tIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyTm99PlxuICAgICAgICAgIDxDb3B5VGV4dFxuICAgICAgICAgICAgdGV4dD17dGlja2V0Py5vcmRlcj8ubnVtYmVyfVxuICAgICAgICAgICAgcmV2ZXJzZWRcbiAgICAgICAgICAgIHdpZHRoPXsyNTB9XG4gICAgICAgICAgICB0b29sdGlwVGV4dD17dChcIm9yZGVyX3N1bW1hcnkuY29weV9vcmRlcl9udW1iZXJcIil9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgPC9Cb3g+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiaDVcIiBndXR0ZXJCb3R0b20+XG4gICAgICAgIHtnZXRTZWNvbmRhcnlUaXRsZSgpfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgdmFyaWFudD1cImJvZHkxXCJcbiAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmhlYWRlck5vdGV9XG4gICAgICAgIHN4PXt7IGNvbG9yOiBcInRleHQuc2Vjb25kYXJ5XCIgfX1cbiAgICAgID5cbiAgICAgICAge2dldEhlYWRlck5vdGUoKX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbi8vIEFkZGluZyBwcm9wLXR5cGVzIGZvciB0eXBlLWNoZWNraW5nXG5Bc3NpZ25IZWFkZXIucHJvcFR5cGVzID0ge1xuICBpblByb2dyZXNzOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIHRpY2tldDogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICB1c2VyRW1haWw6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgQXNzaWduSGVhZGVyO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94LCBMaW5rLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRpY2tldERldGFpbHMgfSBmcm9tIFwiLi4vLi4vLi4vLi4vaG9va3MvdXNlVGlja2V0RGV0YWlsc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBSZWFzc2lnbkhlYWRlciA9ICh7IGluUHJvZ3Jlc3MsIHRpY2tldCwgdXNlckVtYWlsLCBvbkNsb3NlIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBhc3NpZ25lZFRvWW91ID0gdGlja2V0Py5vd25lcj8uZW1haWwgPT09IHVzZXJFbWFpbDtcbiAgY29uc3QgeyBhbGxvd3NEZWxlZ2F0ZSB9ID0gdXNlVGlja2V0RGV0YWlscyh0aWNrZXQpO1xuXG4gIGNvbnN0IGdldFNlY29uZGFyeVRpdGxlID0gKCkgPT4ge1xuICAgIGNvbnN0IHVzZXIgPSBhc3NpZ25lZFRvWW91XG4gICAgICA/IHQoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9yZWFzc2lnbi55b3Vyc2VsZlwiKVxuICAgICAgOiB0aWNrZXQ/Lm93bmVyPy5lbWFpbDtcblxuICAgIGlmIChpblByb2dyZXNzID09PSBcIm1hbmFnZVwiKSB7XG4gICAgICByZXR1cm4gYCR7dChcInRpY2tldF9hc3NpZ24uaGVhZGVyX3JlYXNzaWduLmRlbGVnYXRlZFwiKX0gJHtcbiAgICAgICAgdGlja2V0Lm93bmVyLmZpcnN0X25hbWVcbiAgICAgIH0gJHt0aWNrZXQub3duZXIubGFzdF9uYW1lfS5gO1xuICAgIH1cblxuICAgIGlmICghaW5Qcm9ncmVzcykge1xuICAgICAgcmV0dXJuIGAke3QoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9yZWFzc2lnbi5hc3NpZ25lZF90b1wiKX0gJHt1c2VyfWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGAke3QoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9yZWFzc2lnbi5yZWFzc2lnbmVkX3RvXCIpfSAke3VzZXJ9YDtcbiAgfTtcblxuICBjb25zdCBnZXRIZWFkZXJOb3RlID0gKCkgPT4ge1xuICAgIGlmICghaW5Qcm9ncmVzcykge1xuICAgICAgcmV0dXJuIGFsbG93c0RlbGVnYXRlXG4gICAgICAgID8gdChcInRpY2tldF9hc3NpZ24uaGVhZGVyX3JlYXNzaWduLmNob29zZV9vcHRpb25cIilcbiAgICAgICAgOiB0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24uY2hvb3NlX29wdGlvbl9ub19kZWxlZ2F0ZVwiKTtcbiAgICB9XG5cbiAgICBjb25zdCB0cmFuc0tleSA9IGFzc2lnbmVkVG9Zb3VcbiAgICAgID8gXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9yZWFzc2lnbi5hbnN3ZXJfeW91cl9lcVwiXG4gICAgICA6IFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24uYW5zd2VyX290aGVyc19lcVwiO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDw+XG4gICAgICAgIHt0KHRyYW5zS2V5KX1cbiAgICAgICAgPGJyIC8+XG4gICAgICAgIHsvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganN4LWExMXkvYW5jaG9yLWlzLXZhbGlkICovfVxuICAgICAgICA8TGlua1xuICAgICAgICAgIGNvbXBvbmVudD1cImJ1dHRvblwiXG4gICAgICAgICAgdmFyaWFudD1cImJvZHkxXCJcbiAgICAgICAgICBvbkNsaWNrPXtvbkNsb3NlfVxuICAgICAgICAgIHN4PXt7IGZvbnRXZWlnaHQ6IDcwMCwgbWFyZ2luOiBcIjIwcHggMCAxMHB4XCIgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24uY29tcGxldGVfbGF0ZXJcIil9XG4gICAgICAgIDwvTGluaz5cbiAgICAgIDwvPlxuICAgICk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLndyYXBwZXJ9PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImg1XCIgZ3V0dGVyQm90dG9tPlxuICAgICAgICB7Z2V0U2Vjb25kYXJ5VGl0bGUoKX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgIDxUeXBvZ3JhcGh5XG4gICAgICAgIHZhcmlhbnQ9XCJib2R5MVwiXG4gICAgICAgIGd1dHRlckJvdHRvbVxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5oZWFkZXJOb3RlfVxuICAgICAgICBzeD17eyBjb2xvcjogXCJ0ZXh0LnNlY29uZGFyeVwiIH19XG4gICAgICA+XG4gICAgICAgIHtnZXRIZWFkZXJOb3RlKCl9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG4vLyBBZGRpbmcgcHJvcC10eXBlcyBmb3IgdHlwZS1jaGVja2luZ1xuUmVhc3NpZ25IZWFkZXIucHJvcFR5cGVzID0ge1xuICBpblByb2dyZXNzOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIHRpY2tldDogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICB1c2VyRW1haWw6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVhc3NpZ25IZWFkZXI7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBUZXh0RmllbGQsIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlRm9ybWlrIH0gZnJvbSBcImZvcm1pa1wiO1xuaW1wb3J0ICogYXMgeXVwIGZyb20gXCJ5dXBcIjtcblxuaW1wb3J0IEZvcm1Gb290ZXIgZnJvbSBcIi4uLy4uLy4uL0Zvcm1Gb290ZXJcIjtcblxuY29uc3QgUmVhc3NpZ25Gb3JtID0gKHsgb25TdWJtaXQsIG9uQ2xvc2UgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgY29uc3QgZm9ybWlrID0gdXNlRm9ybWlrKHtcbiAgICBpbml0aWFsVmFsdWVzOiB7XG4gICAgICBuZXdfYXR0ZW5kZWVfZW1haWw6IFwiXCIsXG4gICAgICBwZXJzb25hbF9tZXNzYWdlOiBcIlwiXG4gICAgfSxcbiAgICB2YWxpZGF0aW9uU2NoZW1hOiB5dXAub2JqZWN0KHtcbiAgICAgIG5ld19hdHRlbmRlZV9lbWFpbDogeXVwXG4gICAgICAgIC5zdHJpbmcodChcInZhbGlkYXRpb24uZW1haWwuc3RyaW5nXCIpKVxuICAgICAgICAuZW1haWwodChcInZhbGlkYXRpb24uZW1haWwuZm9ybWF0XCIpKVxuICAgICAgICAucmVxdWlyZWQodChcInZhbGlkYXRpb24uZW1haWwucmVxdWlyZWRcIikpLFxuICAgICAgcGVyc29uYWxfbWVzc2FnZTogeXVwLnN0cmluZyh0KFwidmFsaWRhdGlvbi50ZXh0LnN0cmluZ1wiKSlcbiAgICB9KSxcbiAgICBvblN1Ym1pdDogKHZhbHVlcywgeyByZXNldEZvcm0gfSkgPT4ge1xuICAgICAgb25TdWJtaXQodmFsdWVzKTtcbiAgICAgIHJlc2V0Rm9ybSgpO1xuICAgIH1cbiAgfSk7XG5cbiAgY29uc3QgaGFuZGxlQ2FuY2VsID0gKCkgPT4ge1xuICAgIGZvcm1pay5yZXNldEZvcm0oKTtcbiAgICBvbkNsb3NlKCk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImg2XCIgZ3V0dGVyQm90dG9tPlxuICAgICAgICB7dChcInRpY2tldF9hc3NpZ24ucmVhc3NpZ25fZm9ybS50aXRsZVwiKX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MVwiIGd1dHRlckJvdHRvbSBzeD17eyBjb2xvcjogXCJ0ZXh0LnNlY29uZGFyeVwiIH19PlxuICAgICAgICB7dChcInRpY2tldF9hc3NpZ24ucmVhc3NpZ25fZm9ybS5ib2R5XCIpfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgPGZvcm0gb25TdWJtaXQ9e2Zvcm1pay5oYW5kbGVTdWJtaXR9IG5vVmFsaWRhdGU+XG4gICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICBuYW1lPVwibmV3X2F0dGVuZGVlX2VtYWlsXCJcbiAgICAgICAgICBsYWJlbD17dChcInRpY2tldF9hc3NpZ24ucmVhc3NpZ25fZm9ybS5uZXdfYXR0ZW5kZWVfZW1haWxcIil9XG4gICAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgICB2YWx1ZT17Zm9ybWlrLnZhbHVlcy5uZXdfYXR0ZW5kZWVfZW1haWx9XG4gICAgICAgICAgb25DaGFuZ2U9e2Zvcm1pay5oYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgb25CbHVyPXtmb3JtaWsuaGFuZGxlQmx1cn1cbiAgICAgICAgICBlcnJvcj17XG4gICAgICAgICAgICBmb3JtaWsudG91Y2hlZC5uZXdfYXR0ZW5kZWVfZW1haWwgJiZcbiAgICAgICAgICAgIEJvb2xlYW4oZm9ybWlrLmVycm9ycy5uZXdfYXR0ZW5kZWVfZW1haWwpXG4gICAgICAgICAgfVxuICAgICAgICAgIGhlbHBlclRleHQ9e1xuICAgICAgICAgICAgZm9ybWlrLnRvdWNoZWQubmV3X2F0dGVuZGVlX2VtYWlsICYmXG4gICAgICAgICAgICBmb3JtaWsuZXJyb3JzLm5ld19hdHRlbmRlZV9lbWFpbFxuICAgICAgICAgIH1cbiAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAvPlxuICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgbmFtZT1cInBlcnNvbmFsX21lc3NhZ2VcIlxuICAgICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5yZWFzc2lnbl9mb3JtLnBlcnNvbmFsX21lc3NhZ2VcIil9XG4gICAgICAgICAgdmFsdWU9e2Zvcm1pay52YWx1ZXMucGVyc29uYWxfbWVzc2FnZX1cbiAgICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgICAgIG11bHRpbGluZVxuICAgICAgICAgIG1pblJvd3M9ezR9XG4gICAgICAgICAgb25DaGFuZ2U9e2Zvcm1pay5oYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgb25CbHVyPXtmb3JtaWsuaGFuZGxlQmx1cn1cbiAgICAgICAgICBlcnJvcj17XG4gICAgICAgICAgICBmb3JtaWsudG91Y2hlZC5wZXJzb25hbF9tZXNzYWdlICYmXG4gICAgICAgICAgICBCb29sZWFuKGZvcm1pay5lcnJvcnMucGVyc29uYWxfbWVzc2FnZSlcbiAgICAgICAgICB9XG4gICAgICAgICAgaGVscGVyVGV4dD17XG4gICAgICAgICAgICBmb3JtaWsudG91Y2hlZC5wZXJzb25hbF9tZXNzYWdlICYmIGZvcm1pay5lcnJvcnMucGVyc29uYWxfbWVzc2FnZVxuICAgICAgICAgIH1cbiAgICAgICAgLz5cbiAgICAgICAgPEZvcm1Gb290ZXJcbiAgICAgICAgICBzYXZlTGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLnJlYXNzaWduX2Zvcm0uc2F2ZVwiKX1cbiAgICAgICAgICBjYW5jZWxMYWJlbD17dChcInRpY2tldF9hc3NpZ24ucmVhc3NpZ25fZm9ybS5jYW5jZWxcIil9XG4gICAgICAgICAgb25DbG9zZT17aGFuZGxlQ2FuY2VsfVxuICAgICAgICAgIGRpc2FibGVkPXtmb3JtaWsuaXNTdWJtaXR0aW5nfVxuICAgICAgICAvPlxuICAgICAgPC9mb3JtPlxuICAgIDwvPlxuICApO1xufTtcblxuUmVhc3NpZ25Gb3JtLnByb3BUeXBlcyA9IHtcbiAgb25TdWJtaXQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlYXNzaWduRm9ybTtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VDb250ZXh0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHtcbiAgYXNzaWduQXR0ZW5kZWUsXG4gIGRlbGVnYXRlVGlja2V0LFxuICByZWFzc2lnblRpY2tldCxcbiAgc2F2ZUV4dHJhUXVlc3Rpb25zLFxuICB1bmFzc2lnblRpY2tldFxufSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IFJpZ2h0RHJhd2VyIGZyb20gXCIuLi9SaWdodERyYXdlclwiO1xuaW1wb3J0IFRpY2tldEZvcm0gZnJvbSBcIi4uL1RpY2tldERldGFpbC9jb21wb25lbnRzL1RpY2tldEZvcm1cIjtcbmltcG9ydCBDdXN0b21Ob3RpZmljYXRpb25Db250ZXh0IGZyb20gXCIuLi9DdXN0b21Ob3RpZmljYXRpb24vQ29udGV4dFwiO1xuaW1wb3J0IHsgdHJhbnNmb3JtQW53ZXJzRm9ybWF0IH0gZnJvbSBcIi4uL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvdXRpbHNcIjtcbmltcG9ydCB1c2VHZXRUaWNrZXQgZnJvbSBcIi4uLy4uL2hvb2tzL3VzZUdldFRpY2tldFwiO1xuaW1wb3J0IEFzc2lnbkhlYWRlciBmcm9tIFwiLi9jb21wb25lbnRzL0hlYWRlci9Bc3NpZ25IZWFkZXJcIjtcbmltcG9ydCBSZWFzc2lnbkhlYWRlciBmcm9tIFwiLi9jb21wb25lbnRzL0hlYWRlci9SZWFzc2lnbkhlYWRlclwiO1xuaW1wb3J0IEFzc2lnbk9wdGlvbnMgZnJvbSBcIi4vY29tcG9uZW50cy9Bc3NpZ25PcHRpb25zXCI7XG5pbXBvcnQgeyBUSUNLRVRfRFJBV0VSX0lEIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBUaWNrZXRBc3NpZ24gPSAoeyB0aWNrZXRJZCwgb3JkZXJJZCwgb3duZXJJZCwgb3Blbiwgb25DbG9zZSB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCB7IHN1Y2Nlc3NNZXNzYWdlLCBlcnJvck1lc3NhZ2UgfSA9IHVzZUNvbnRleHQoXG4gICAgQ3VzdG9tTm90aWZpY2F0aW9uQ29udGV4dFxuICApO1xuICBjb25zdCBbYXNzaWduT3B0aW9uLCBzZXRBc3NpZ25PcHRpb25dID0gdXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IFthc3NpZ25hdGlvbkluUHJvZ3Jlc3MsIHNldEFzc2lnbmF0aW9uSW5Qcm9ncmVzc10gPSB1c2VTdGF0ZShcIlwiKTtcbiAgY29uc3Qge1xuICAgIHN1bW1pdCxcbiAgICB1c2VyOiB7IHVzZXJQcm9maWxlIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUpO1xuICBjb25zdCB7IHRpY2tldCwgZXh0cmFRdWVzdGlvbnMgfSA9IHVzZUdldFRpY2tldChcbiAgICB0aWNrZXRJZCxcbiAgICBvcmRlcklkLFxuICAgIG93bmVySWQsXG4gICAgb3BlblxuICApO1xuICBjb25zdCBpc1VzZXJPcmRlck93bmVyID0gdGlja2V0Py5vcmRlcj8ub3duZXJfaWQgPT09IHVzZXJQcm9maWxlPy5pZDtcbiAgY29uc3QgaXNVc2VyVGlja2V0T3duZXIgPSB0aWNrZXQ/Lm93bmVyPy5lbWFpbCA9PT0gdXNlclByb2ZpbGU/LmVtYWlsO1xuICBjb25zdCBjYW5FZGl0VGlja2V0RGF0YSA9XG4gICAgKGlzVXNlclRpY2tldE93bmVyIHx8IGlzVXNlck9yZGVyT3duZXIpICYmXG4gICAgc3VtbWl0LmFsbG93X3VwZGF0ZV9hdHRlbmRlZV9leHRyYV9xdWVzdGlvbnM7XG5cbiAgY29uc3Qgb25DbG9zZUVRRm9ybSA9ICgpID0+IHtcbiAgICBzZXRBc3NpZ25hdGlvbkluUHJvZ3Jlc3MoXCJcIik7XG4gICAgb25DbG9zZSgpO1xuICB9O1xuXG4gIGNvbnN0IG9uQXNzaWduID0gKGVtYWlsLCBtZXNzYWdlID0gXCJcIikgPT4ge1xuICAgIGlmIChvd25lcklkKSB7XG4gICAgICBkaXNwYXRjaChyZWFzc2lnblRpY2tldChvcmRlcklkLCB0aWNrZXRJZCwgZW1haWwsIG1lc3NhZ2UpKS50aGVuKCgpID0+IHtcbiAgICAgICAgc2V0QXNzaWduYXRpb25JblByb2dyZXNzKGAke2Fzc2lnbk9wdGlvbn1gKTtcbiAgICAgICAgc2V0QXNzaWduT3B0aW9uKG51bGwpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRpc3BhdGNoKGFzc2lnbkF0dGVuZGVlKG9yZGVySWQsIHRpY2tldElkLCBlbWFpbCkpLnRoZW4oKCkgPT4ge1xuICAgICAgICBzZXRBc3NpZ25hdGlvbkluUHJvZ3Jlc3MoYCR7YXNzaWduT3B0aW9ufWApO1xuICAgICAgICBzZXRBc3NpZ25PcHRpb24obnVsbCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3Qgb25VbkFzc2lnbiA9ICgpID0+IHtcbiAgICBkaXNwYXRjaCh1bmFzc2lnblRpY2tldChvcmRlcklkLCB0aWNrZXRJZCkpLnRoZW4oKCkgPT4ge1xuICAgICAgb25DbG9zZUVRRm9ybSgpO1xuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IG9uRGVsZWdhdGUgPSAoZmlyc3ROYW1lLCBsYXN0TmFtZSwgZW1haWwpID0+IHtcbiAgICBkaXNwYXRjaChcbiAgICAgIGRlbGVnYXRlVGlja2V0KG9yZGVySWQsIHRpY2tldElkLCBmaXJzdE5hbWUsIGxhc3ROYW1lLCBlbWFpbClcbiAgICApLnRoZW4oKCkgPT4ge1xuICAgICAgc2V0QXNzaWduYXRpb25JblByb2dyZXNzKGAke2Fzc2lnbk9wdGlvbn1gKTtcbiAgICAgIHNldEFzc2lnbk9wdGlvbihudWxsKTtcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBvblNhdmVFUSA9ICh2YWwpID0+IHtcbiAgICBjb25zdCBhbnN3ZXJzID0gdHJhbnNmb3JtQW53ZXJzRm9ybWF0KHZhbCk7XG5cbiAgICByZXR1cm4gZGlzcGF0Y2goc2F2ZUV4dHJhUXVlc3Rpb25zKHRpY2tldCwgYW5zd2VycykpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIG9uQ2xvc2VFUUZvcm0oKTtcbiAgICAgICAgc3VjY2Vzc01lc3NhZ2UodChcInRpY2tldF9hc3NpZ24uc2F2aW5nX3N1Y2Nlc3NcIikpO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgZXJyb3JNZXNzYWdlKHQoXCJ0aWNrZXRfYXNzaWduLnNhdmluZ19lcnJvclwiKSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICAgICAgfSk7XG4gIH07XG5cbiAgY29uc3QgdGl0bGUgPSBvd25lcklkXG4gICAgPyB0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24udGl0bGVcIilcbiAgICA6IHQoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9hc3NpZ24udGl0bGVcIik7XG4gIGNvbnN0IEhlYWRlciA9IG93bmVySWQgPyBSZWFzc2lnbkhlYWRlciA6IEFzc2lnbkhlYWRlcjtcblxuICByZXR1cm4gKFxuICAgIDxSaWdodERyYXdlclxuICAgICAgaWQ9e1RJQ0tFVF9EUkFXRVJfSUR9XG4gICAgICB0aXRsZT17dGl0bGV9XG4gICAgICBvcGVuPXtvcGVufVxuICAgICAgb25DbG9zZT17b25DbG9zZUVRRm9ybX1cbiAgICA+XG4gICAgICB7dGlja2V0ICYmIGV4dHJhUXVlc3Rpb25zICYmIChcbiAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRSZWFzc2lnbkNvbnRhaW5lcn0+XG4gICAgICAgICAgPEhlYWRlclxuICAgICAgICAgICAgaW5Qcm9ncmVzcz17YXNzaWduYXRpb25JblByb2dyZXNzfVxuICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICB1c2VyRW1haWw9e3VzZXJQcm9maWxlLmVtYWlsfVxuICAgICAgICAgICAgb25DbG9zZT17b25DbG9zZUVRRm9ybX1cbiAgICAgICAgICAvPlxuXG4gICAgICAgICAge2Fzc2lnbmF0aW9uSW5Qcm9ncmVzcyA/IChcbiAgICAgICAgICAgIDxUaWNrZXRGb3JtXG4gICAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICAgICAgZXh0cmFRdWVzdGlvbnM9e2V4dHJhUXVlc3Rpb25zfVxuICAgICAgICAgICAgICBjYW5FZGl0PXtjYW5FZGl0VGlja2V0RGF0YX1cbiAgICAgICAgICAgICAgb25TdWJtaXQ9e29uU2F2ZUVRfVxuICAgICAgICAgICAgICBvbkNsb3NlPXtvbkNsb3NlRVFGb3JtfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgPEFzc2lnbk9wdGlvbnNcbiAgICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICAgIHVzZXJQcm9maWxlPXt1c2VyUHJvZmlsZX1cbiAgICAgICAgICAgICAgYXNzaWduT3B0aW9uPXthc3NpZ25PcHRpb259XG4gICAgICAgICAgICAgIHNldEFzc2lnbk9wdGlvbj17c2V0QXNzaWduT3B0aW9ufVxuICAgICAgICAgICAgICBvbkFzc2lnbj17b25Bc3NpZ259XG4gICAgICAgICAgICAgIG9uVW5Bc3NpZ249e29uVW5Bc3NpZ259XG4gICAgICAgICAgICAgIG9uRGVsZWdhdGU9e29uRGVsZWdhdGV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvQm94PlxuICAgICAgKX1cbiAgICA8L1JpZ2h0RHJhd2VyPlxuICApO1xufTtcblxuVGlja2V0QXNzaWduLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0SWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9yZGVySWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG93bmVySWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9wZW46IFByb3BUeXBlcy5ib29sLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0QXNzaWduO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgVGV4dEZpZWxkLCBBdXRvY29tcGxldGUsIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgcXVlcnlSZWdpc3RyYXRpb25Db21wYW5pZXMgfSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9xdWVyeS1hY3Rpb25zXCI7XG5pbXBvcnQgeyBUSUNLRVRfQVRURU5ERUVfS0VZUyB9IGZyb20gXCIuLi8uLi9jb25zdGFudHNcIjtcblxuY29uc3QgQ29tcGFueUZpZWxkID0gKHsgZm9ybWlrLCBzdW1taXRJZCwgaXNSZXF1aXJlZCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW2lucHV0VmFsdWUsIHNldElucHV0VmFsdWVdID0gUmVhY3QudXNlU3RhdGUoXCJcIik7XG4gIGNvbnN0IFtvcHRpb25zLCBzZXRPcHRpb25zXSA9IFJlYWN0LnVzZVN0YXRlKFtdKTtcbiAgY29uc3Qge1xuICAgIGVycm9ycyxcbiAgICB2YWx1ZXMsXG4gICAgdG91Y2hlZCxcbiAgICBzZXRGaWVsZFRvdWNoZWQsXG4gICAgc2V0RmllbGRWYWx1ZSxcbiAgICBpbml0aWFsVmFsdWVzXG4gIH0gPSBmb3JtaWs7XG4gIGNvbnN0IG5hbWUgPSBUSUNLRVRfQVRURU5ERUVfS0VZUy5jb21wYW55O1xuICBjb25zdCB2YWx1ZSA9IHZhbHVlc1tuYW1lXTtcbiAgY29uc3QgZGlzYWJsZWQgPSAhIWluaXRpYWxWYWx1ZXNbbmFtZV07XG4gIGNvbnN0IGVycm9yID0gdG91Y2hlZFtuYW1lXSAmJiBCb29sZWFuKGVycm9yc1tuYW1lXSk7XG4gIGNvbnN0IGhlbHBlclRleHQgPSB0b3VjaGVkW25hbWVdICYmIGVycm9yc1tuYW1lXTtcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpbnB1dFZhbHVlID09PSBcIlwiKSB7XG4gICAgICBzZXRPcHRpb25zKHZhbHVlID8gW3ZhbHVlXSA6IFtdKTtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcXVlcnlSZWdpc3RyYXRpb25Db21wYW5pZXMoc3VtbWl0SWQsIGlucHV0VmFsdWUsIChyZXN1bHRzKSA9PiB7XG4gICAgICBsZXQgbmV3T3B0aW9ucyA9IFtdO1xuXG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgbmV3T3B0aW9ucyA9IFt2YWx1ZV07XG4gICAgICB9XG5cbiAgICAgIGlmIChyZXN1bHRzKSB7XG4gICAgICAgIG5ld09wdGlvbnMgPSBbLi4ubmV3T3B0aW9ucywgLi4ucmVzdWx0c107XG4gICAgICB9XG5cbiAgICAgIHNldE9wdGlvbnMobmV3T3B0aW9ucyk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfSwgW3ZhbHVlLCBpbnB1dFZhbHVlXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8QXV0b2NvbXBsZXRlXG4gICAgICBuYW1lPXtuYW1lfVxuICAgICAgb3B0aW9ucz17b3B0aW9uc31cbiAgICAgIGF1dG9Db21wbGV0ZVxuICAgICAgZnJlZVNvbG9cbiAgICAgIGluY2x1ZGVJbnB1dEluTGlzdFxuICAgICAgZmlsdGVyU2VsZWN0ZWRPcHRpb25zXG4gICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICBvbkJsdXI9eygpID0+IHNldEZpZWxkVG91Y2hlZChuYW1lLCB0cnVlLCB0cnVlKX1cbiAgICAgIGdldE9wdGlvbkxhYmVsPXsob3B0aW9uKSA9PiB7XG4gICAgICAgIC8vIFZhbHVlIHNlbGVjdGVkIHdpdGggZW50ZXIsIHJpZ2h0IGZyb20gdGhlIGlucHV0XG4gICAgICAgIGlmICh0eXBlb2Ygb3B0aW9uID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgcmV0dXJuIG9wdGlvbjtcbiAgICAgICAgfVxuICAgICAgICAvLyBBZGQgXCJ4eHhcIiBvcHRpb24gY3JlYXRlZCBkeW5hbWljYWxseVxuICAgICAgICBpZiAob3B0aW9uLmlucHV0VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gb3B0aW9uLmlucHV0VmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUmVndWxhciBvcHRpb25cbiAgICAgICAgcmV0dXJuIG9wdGlvbi5uYW1lO1xuICAgICAgfX1cbiAgICAgIG9uQ2hhbmdlPXsoZXZlbnQsIG5ld1ZhbHVlKSA9PiB7XG4gICAgICAgIGNvbnN0IHRtcFZhbHVlID0gbmV3VmFsdWU/LmlucHV0VmFsdWUgfHwgbmV3VmFsdWU7XG5cbiAgICAgICAgc2V0T3B0aW9ucyh0bXBWYWx1ZSA/IFt0bXBWYWx1ZSwgLi4ub3B0aW9uc10gOiBvcHRpb25zKTtcbiAgICAgICAgc2V0RmllbGRWYWx1ZShuYW1lLCB0bXBWYWx1ZSk7XG4gICAgICB9fVxuICAgICAgb25JbnB1dENoYW5nZT17KGV2ZW50LCBuZXdJbnB1dFZhbHVlKSA9PiB7XG4gICAgICAgIHNldElucHV0VmFsdWUobmV3SW5wdXRWYWx1ZSk7XG4gICAgICB9fVxuICAgICAgZmlsdGVyT3B0aW9ucz17KG9wdGlvbnMsIHBhcmFtcykgPT4ge1xuICAgICAgICBjb25zdCB7IGlucHV0VmFsdWUgfSA9IHBhcmFtcztcbiAgICAgICAgY29uc3QgZmlsdGVyZWQgPSBbLi4ub3B0aW9uc107XG4gICAgICAgIC8vIFN1Z2dlc3QgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZhbHVlXG4gICAgICAgIGNvbnN0IGlzRXhpc3RpbmcgPSBvcHRpb25zLnNvbWUoKG9wdGlvbikgPT4gaW5wdXRWYWx1ZSA9PT0gb3B0aW9uLm5hbWUpO1xuICAgICAgICBpZiAoaW5wdXRWYWx1ZSAhPT0gXCJcIiAmJiAhaXNFeGlzdGluZykge1xuICAgICAgICAgIGZpbHRlcmVkLnB1c2goe1xuICAgICAgICAgICAgaW5wdXRWYWx1ZSxcbiAgICAgICAgICAgIG5hbWU6IGBTZWxlY3QgXCIke2lucHV0VmFsdWV9XCJgXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmlsdGVyZWQ7XG4gICAgICB9fVxuICAgICAgcmVuZGVySW5wdXQ9eyhwYXJhbXMpID0+IChcbiAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgey4uLnBhcmFtc31cbiAgICAgICAgICBsYWJlbD17dChcInRpY2tldF9kZXRhaWwuYXR0ZW5kZWVfY29tcGFueVwiKX1cbiAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgICBoZWxwZXJUZXh0PXtoZWxwZXJUZXh0fVxuICAgICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIHJlbmRlck9wdGlvbj17KHByb3BzLCBvcHRpb24pID0+IHtcbiAgICAgICAgY29uc3QgeyBrZXksIC4uLm9wdGlvblByb3BzIH0gPSBwcm9wcztcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZ1xuICAgICAgICAgIDxsaSBrZXk9e2tleX0gey4uLm9wdGlvblByb3BzfT5cbiAgICAgICAgICAgIDxUeXBvZ3JhcGh5XG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJib2R5MlwiXG4gICAgICAgICAgICAgIHN4PXt7IGZvbnRTaXplOiBcIjFlbVwiLCBjb2xvcjogXCJ0ZXh0LnNlY29uZGFyeVwiIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtvcHRpb24ubmFtZX1cbiAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICA8L2xpPlxuICAgICAgICApO1xuICAgICAgfX1cbiAgICAvPlxuICApO1xufTtcblxuQ29tcGFueUZpZWxkLnByb3BUeXBlcyA9IHtcbiAgZm9ybWlrOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHN1bW1pdElkOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IENvbXBhbnlGaWVsZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgQ2hlY2tib3gsXG4gIEZvcm1Db250cm9sLFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBGb3JtSGVscGVyVGV4dFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFJhd0hUTUwgZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvY29tcG9uZW50cy9yYXctaHRtbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgVElDS0VUX0FUVEVOREVFX0tFWVMgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgUmVnaXN0cmF0aW9uRGlzY2xhaW1lciA9ICh7XG4gIGRpc2NsYWltZXIsXG4gIGZvcm1payxcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBpc1JlcXVpcmVkID0gdHJ1ZVxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IG5hbWUgPSBUSUNLRVRfQVRURU5ERUVfS0VZUy5kaXNjbGFpbWVyQWNjZXB0ZWQ7XG4gIGNvbnN0IHsgZXJyb3JzLCB2YWx1ZXMsIHRvdWNoZWQsIGhhbmRsZUNoYW5nZSwgaGFuZGxlQmx1ciB9ID0gZm9ybWlrO1xuICBjb25zdCB2YWx1ZSA9IHZhbHVlc1tuYW1lXTtcbiAgY29uc3QgZXJyb3IgPSB0b3VjaGVkW25hbWVdICYmIEJvb2xlYW4oZXJyb3JzW25hbWVdKTtcbiAgY29uc3QgaGVscGVyVGV4dCA9IHRvdWNoZWRbbmFtZV0gJiYgZXJyb3JzW25hbWVdO1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy53cmFwcGVyfT5cbiAgICAgIDxSYXdIVE1MPntkaXNjbGFpbWVyfTwvUmF3SFRNTD5cbiAgICAgIDxGb3JtQ29udHJvbCBmdWxsV2lkdGggZXJyb3I9e2Vycm9yfT5cbiAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgICBuYW1lPXtuYW1lfVxuICAgICAgICAgICAgICBjaGVja2VkPXshIXZhbHVlfVxuICAgICAgICAgICAgICBsYWJlbD17dChcInRpY2tldF9hc3NpZ24uZXh0cmFfcXVlc3Rpb25zX2Zvcm0uZGlzY2xhaW1lcl9sYWJlbFwiKX1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgICAgb25CbHVyPXtoYW5kbGVCbHVyfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICB9XG4gICAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLmV4dHJhX3F1ZXN0aW9uc19mb3JtLmRpc2NsYWltZXJfbGFiZWxcIil9XG4gICAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgIC8+XG4gICAgICAgIHtlcnJvciAmJiA8Rm9ybUhlbHBlclRleHQ+e2hlbHBlclRleHQgPz8gXCIgXCJ9PC9Gb3JtSGVscGVyVGV4dD59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuUmVnaXN0cmF0aW9uRGlzY2xhaW1lci5wcm9wVHlwZXMgPSB7XG4gIGRpc2NsYWltZXI6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgZm9ybWlrOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBpc1JlcXVpcmVkOiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVnaXN0cmF0aW9uRGlzY2xhaW1lcjtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2ggfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCBRUkNvZGUgZnJvbSBcInJlYWN0LXFyLWNvZGVcIjtcbmltcG9ydCB7IEJveCwgQnV0dG9uLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7XG4gIEVtYWlsT3V0bGluZWQgYXMgRW1haWxJY29uLFxuICBGaWxlRG93bmxvYWRPdXRsaW5lZCBhcyBEb3dubG9hZEljb25cbn0gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWxcIjtcbmltcG9ydCBDb3B5VGV4dCBmcm9tIFwiLi4vLi4vLi4vQ29weVRleHRcIjtcbmltcG9ydCB7IHVzZVRpY2tldERldGFpbHMgfSBmcm9tIFwiLi4vLi4vLi4vLi4vaG9va3MvdXNlVGlja2V0RGV0YWlsc1wiO1xuaW1wb3J0IHsgZ2V0VGlja2V0UERGLCByZXNlbmROb3RpZmljYXRpb24gfSBmcm9tIFwiLi4vLi4vLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsgTUlMTElTRUNfVE9fU0VDLCBUV09fSVRFTSB9IGZyb20gXCIuLi8uLi8uLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi4vLi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFRpY2tldERldGFpbEhlYWRlciA9ICh7IHRpY2tldCwgaXNWaXJ0dWFsU3VtbWl0IH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCB7IGlzQ29tcGxldGUgfSA9IHVzZVRpY2tldERldGFpbHModGlja2V0KTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCBbc2VudENvbmZpcm1hdGlvbiwgc2V0U2VudENvbmZpcm1hdGlvbl0gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgY29uc3QgZG93bmxvYWRUaWNrZXRQZGYgPSAoKSA9PiB7XG4gICAgZGlzcGF0Y2goZ2V0VGlja2V0UERGKHRpY2tldCkpO1xuICB9O1xuXG4gIGNvbnN0IG9uU2VuZEVtYWlsID0gKCkgPT4ge1xuICAgIGRpc3BhdGNoKHJlc2VuZE5vdGlmaWNhdGlvbih0aWNrZXQpKS50aGVuKCgpID0+IHtcbiAgICAgIHNldFNlbnRDb25maXJtYXRpb24odHJ1ZSk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgc2V0U2VudENvbmZpcm1hdGlvbihmYWxzZSk7XG4gICAgICB9LCBNSUxMSVNFQ19UT19TRUMgKiBUV09fSVRFTSk7XG4gICAgfSk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmhlYWRlcn0+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiaDRcIiBndXR0ZXJCb3R0b20gY2xhc3NOYW1lPXtzdHlsZXMudGl0bGV9PlxuICAgICAgICB7dGlja2V0Py50aWNrZXRfdHlwZT8ubmFtZX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MlwiIGd1dHRlckJvdHRvbSBjbGFzc05hbWU9e3N0eWxlcy5zdWJ0aXRsZX0+XG4gICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5wdXJjaGFzZWRfYnlcIil9IHt0aWNrZXQ/Lm9yZGVyPy5vd25lcl9lbWFpbH1cbiAgICAgIDwvVHlwb2dyYXBoeT5cblxuICAgICAge2lzQ29tcGxldGUgJiYgKFxuICAgICAgICA8PlxuICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMucXJDb2RlfT5cbiAgICAgICAgICAgIDxRUkNvZGVcbiAgICAgICAgICAgICAgc2l6ZT17MjU2fVxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIGhlaWdodDogXCJhdXRvXCIsXG4gICAgICAgICAgICAgICAgbWF4V2lkdGg6IFwiMTAwJVwiLFxuICAgICAgICAgICAgICAgIHdpZHRoOiBcIjEwMCVcIlxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICB2YWx1ZT17dGlja2V0LnFyX2NvZGV9XG4gICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjU2IDI1NlwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvQm94PlxuICAgICAgICAgIDxwIGNsYXNzTmFtZT17c3R5bGVzLnN0YXR1c30+e3QoXCJ0aWNrZXRfZGV0YWlsLnN0YXR1c1wiKX08L3A+XG4gICAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkyXCIgZ3V0dGVyQm90dG9tIGNsYXNzTmFtZT17c3R5bGVzLnFyTm90ZX0+XG4gICAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwucXJfbm90ZVwiKX1cbiAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgIDwvPlxuICAgICAgKX1cblxuICAgICAgeyFpc1ZpcnR1YWxTdW1taXQgJiYgaXNDb21wbGV0ZSAmJiAoXG4gICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYWN0aW9uQnV0dG9uc0NvbnRhaW5lcn0+XG4gICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuZG93bmxvYWRCdG59XG4gICAgICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICBvbkNsaWNrPXtkb3dubG9hZFRpY2tldFBkZn1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8RG93bmxvYWRJY29uIGZvbnRTaXplPVwibGFyZ2VcIiAvPlxuICAgICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLmRvd25sb2FkXCIpfVxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLnNlbmRCdG59ICR7c2VudENvbmZpcm1hdGlvbiAmJiBzdHlsZXMuc2VudH1gfVxuICAgICAgICAgICAgb25DbGljaz17b25TZW5kRW1haWx9XG4gICAgICAgICAgICBkaXNhYmxlZD17c2VudENvbmZpcm1hdGlvbn1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8RW1haWxJY29uIGZvbnRTaXplPVwibGFyZ2VcIiAvPlxuICAgICAgICAgICAge3NlbnRDb25maXJtYXRpb25cbiAgICAgICAgICAgICAgPyB0KFwidGlja2V0X2RldGFpbC5zZW50XCIpXG4gICAgICAgICAgICAgIDogdChcInRpY2tldF9kZXRhaWwuc2VuZFwiKX1cbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgPC9Cb3g+XG4gICAgICApfVxuXG4gICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyTnVtYmVyfT5cbiAgICAgICAgPENvcHlUZXh0XG4gICAgICAgICAgdGV4dD17dGlja2V0Py5vcmRlcj8ubnVtYmVyfVxuICAgICAgICAgIHJldmVyc2VkXG4gICAgICAgICAgd2lkdGg9ezE1MH1cbiAgICAgICAgICB0b29sdGlwVGV4dD17dChcIm9yZGVyX3N1bW1hcnkuY29weV9vcmRlcl9udW1iZXJcIil9XG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldERldGFpbEhlYWRlcjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VGb3JtaWsgfSBmcm9tIFwiZm9ybWlrXCI7XG5pbXBvcnQgRXh0cmFRdWVzdGlvbnNGaWVsZHMgZnJvbSBcIi4uLy4uLy4uL0V4dHJhUXVlc3Rpb25zRmllbGRzXCI7XG5cbmltcG9ydCB7XG4gIGdldFR5cGVWYWx1ZSxcbiAgdG9TbHVnXG59IGZyb20gXCIuLi8uLi8uLi9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL3V0aWxzXCI7XG5cbmltcG9ydCBUaWNrZXRPd25lckZpZWxkcyBmcm9tIFwiLi4vVGlja2V0T3duZXJGaWVsZHNcIjtcbmltcG9ydCBSZWdpc3RyYXRpb25EaXNjbGFpbWVyIGZyb20gXCIuLi9SZWdpc3RyYXRpb25EaXNjbGFpbWVyL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXJcIjtcbmltcG9ydCBGb3JtRm9vdGVyIGZyb20gXCIuLi8uLi8uLi9Gb3JtRm9vdGVyXCI7XG5pbXBvcnQgdXNlU2Nyb2xsVG9FcnJvciBmcm9tIFwiLi4vLi4vLi4vLi4vaG9va3MvdXNlU2Nyb2xsVG9FcnJvclwiO1xuaW1wb3J0IHtcbiAgcGFyc2VBbnN3ZXJzLFxuICBidWlsZFZhbGlkYXRpb25TY2hlbWFcbn0gZnJvbSBcIi4uLy4uLy4uLy4uL3V0aWxzL3RpY2tldFV0aWxzXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi4vLi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFRpY2tldEZvcm0gPSAoe1xuICB0aWNrZXQsXG4gIGV4dHJhUXVlc3Rpb25zLFxuICBzdW1taXQsXG4gIGNhbkVkaXQsXG4gIG9uU3VibWl0LFxuICBvbkNsb3NlXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgYW5zd2VycyA9IHRpY2tldD8ub3duZXI/LmV4dHJhX3F1ZXN0aW9ucy5yZWR1Y2UoKHJlcywgYW5zKSA9PiB7XG4gICAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKGFucy5xdWVzdGlvbi5uYW1lLCBhbnMucXVlc3Rpb24uaWQpO1xuICAgIHJlc1txdWVzdGlvblNsdWddID0gZ2V0VHlwZVZhbHVlKGFucy52YWx1ZSwgYW5zLnF1ZXN0aW9uLnR5cGUpO1xuICAgIHJldHVybiByZXM7XG4gIH0sIHt9KTtcblxuICBjb25zdCBmb3JtaWsgPSB1c2VGb3JtaWsoe1xuICAgIGluaXRpYWxWYWx1ZXM6IHBhcnNlQW5zd2VycyhcbiAgICAgIHRpY2tldC5vd25lcixcbiAgICAgIGV4dHJhUXVlc3Rpb25zLFxuICAgICAgYW5zd2VycyxcbiAgICAgIHRydWUsXG4gICAgICB0cnVlXG4gICAgKSxcbiAgICB2YWxpZGF0aW9uU2NoZW1hOiBidWlsZFZhbGlkYXRpb25TY2hlbWEoXG4gICAgICBleHRyYVF1ZXN0aW9ucyxcbiAgICAgIHRydWUsXG4gICAgICBzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfbWFuZGF0b3J5XG4gICAgKSxcbiAgICBvblN1Ym1pdDogKHZhbHVlcykgPT4ge1xuICAgICAgY29uc3QgcmVsZXZhbnRBbnN3ZXJzID0gcGFyc2VBbnN3ZXJzKFxuICAgICAgICB0aWNrZXQub3duZXIsXG4gICAgICAgIGV4dHJhUXVlc3Rpb25zLFxuICAgICAgICB2YWx1ZXMsXG4gICAgICAgIHRydWUsXG4gICAgICAgIHRydWUsXG4gICAgICAgIHRydWVcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiBvblN1Ym1pdChyZWxldmFudEFuc3dlcnMpO1xuICAgIH0sXG4gICAgZW5hYmxlUmVpbml0aWFsaXplOiB0cnVlXG4gIH0pO1xuXG4gIC8vIGNvbnNvbGUubG9nKFwiU1VNTUlUOiBcIiwgc3VtbWl0KTtcbiAgLy8gY29uc29sZS5sb2coXCJUSUNLRVQ6IFwiLCB0aWNrZXQpO1xuICAvLyBjb25zb2xlLmxvZyhcIlFVRVNUSVVPTnM6IFwiLCBleHRyYVF1ZXN0aW9ucyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiQU5TV0VSUzogXCIsIGFuc3dlcnMpO1xuICAvLyBjb25zb2xlLmxvZyhcIkVSUk9SczogXCIsIGZvcm1pay5lcnJvcnMpO1xuICAvLyBjb25zb2xlLmxvZyhcIlZBTFVFUzogXCIsIGZvcm1pay52YWx1ZXMpO1xuICAvLyBjb25zb2xlLmxvZyhcIklOSVRJQUw6IFwiLCBmb3JtaWsuaW5pdGlhbFZhbHVlcyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiVE9VQ0hFRDogXCIsIGZvcm1pay50b3VjaGVkKTtcblxuICAvLyBTQ1JPTEwgVE8gRVJST1JcbiAgdXNlU2Nyb2xsVG9FcnJvcihmb3JtaWspO1xuXG4gIHJldHVybiAoXG4gICAgPGZvcm0gb25TdWJtaXQ9e2Zvcm1pay5oYW5kbGVTdWJtaXR9IG5vVmFsaWRhdGU+XG4gICAgICA8VGlja2V0T3duZXJGaWVsZHNcbiAgICAgICAgZm9ybWlrPXtmb3JtaWt9XG4gICAgICAgIGlzRGVsZWdhdGVkPXshIXRpY2tldC5vd25lcj8ubWFuYWdlcl9pZH1cbiAgICAgICAgc3VtbWl0SWQ9e3N1bW1pdC5pZH1cbiAgICAgICAgZGlzYWJsZWQ9eyFjYW5FZGl0fVxuICAgICAgLz5cblxuICAgICAge2V4dHJhUXVlc3Rpb25zPy5sZW5ndGggPiAwICYmIChcbiAgICAgICAgPEJveD5cbiAgICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTJcIiBjbGFzc05hbWU9e3N0eWxlcy5hZGRpdGlvbmFsRGV0YWlsc30+XG4gICAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwuYWRpdGlvbmFsX2RldGFpbHNcIil9XG4gICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgIDxFeHRyYVF1ZXN0aW9uc0ZpZWxkc1xuICAgICAgICAgICAgZXh0cmFRdWVzdGlvbnM9e2V4dHJhUXVlc3Rpb25zfVxuICAgICAgICAgICAgb3JpZ2luYWxBbnN3ZXJzPXthbnN3ZXJzfVxuICAgICAgICAgICAgYWxsb3dFZGl0PXtjYW5FZGl0fVxuICAgICAgICAgICAgZm9ybWlrPXtmb3JtaWt9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9Cb3g+XG4gICAgICApfVxuXG4gICAgICB7c3VtbWl0LnJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX2NvbnRlbnQgJiYgKFxuICAgICAgICA8UmVnaXN0cmF0aW9uRGlzY2xhaW1lclxuICAgICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICAgIGRpc2NsYWltZXI9e3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9jb250ZW50fVxuICAgICAgICAgIGlzUmVxdWlyZWQ9e3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9tYW5kYXRvcnl9XG4gICAgICAgICAgaXNEaXNhYmxlZD17IWNhbkVkaXR9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAgPEZvcm1Gb290ZXJcbiAgICAgICAgc2F2ZUxhYmVsPXt0KFwidGlja2V0X2RldGFpbC5zYXZlXCIpfVxuICAgICAgICBjYW5jZWxMYWJlbD17dChcInRpY2tldF9kZXRhaWwuY2FuY2VsXCIpfVxuICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICBkaXNhYmxlZD17Zm9ybWlrLmlzU3VibWl0dGluZ31cbiAgICAgIC8+XG4gICAgPC9mb3JtPlxuICApO1xufTtcblxuVGlja2V0Rm9ybS5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLm9iamVjdCxcbiAgZXh0cmFRdWVzdGlvbnM6IFByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgY2FuRWRpdDogUHJvcFR5cGVzLmJvb2wsXG4gIG9uU3VibWl0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXRGb3JtO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgQm94LCBUZXh0RmllbGQsIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBUSUNLRVRfQVRURU5ERUVfS0VZUyB9IGZyb20gXCIuLi8uLi9jb25zdGFudHNcIjtcbmltcG9ydCBDb21wYW55RmllbGQgZnJvbSBcIi4uL0NvbXBhbnlGaWVsZFwiO1xuXG5jb25zdCBUaWNrZXRPd25lckZpZWxkcyA9ICh7IGZvcm1paywgc3VtbWl0SWQsIGRpc2FibGVkLCBpc0RlbGVnYXRlZCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgeyBlcnJvcnMsIHZhbHVlcywgdG91Y2hlZCwgaGFuZGxlQ2hhbmdlLCBoYW5kbGVCbHVyLCBpbml0aWFsVmFsdWVzIH0gPVxuICAgIGZvcm1paztcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMud3JhcHBlcn0+XG4gICAgICA8VGV4dEZpZWxkXG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBuYW1lPXtUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbH1cbiAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfZGV0YWlsLmVtYWlsXCIpfVxuICAgICAgICBkaXNhYmxlZFxuICAgICAgICB2YWx1ZT17dmFsdWVzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmVtYWlsXX1cbiAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgIC8+XG4gICAgICB7aXNEZWxlZ2F0ZWQgJiYgKFxuICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTFcIiBzeD17eyBmb250V2VpZ2h0OiA1MDAsIG1hcmdpbjogXCIxMHB4IDBcIiB9fT5cbiAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwubWFuYWdlX2ZvclwiKX1cbiAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgKX1cbiAgICAgIHtbVElDS0VUX0FUVEVOREVFX0tFWVMuZmlyc3ROYW1lLCBUSUNLRVRfQVRURU5ERUVfS0VZUy5sYXN0TmFtZV0ubWFwKFxuICAgICAgICAobmFtZSkgPT4gKFxuICAgICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgICAga2V5PXtuYW1lfVxuICAgICAgICAgICAgbmFtZT17bmFtZX1cbiAgICAgICAgICAgIGxhYmVsPXt0KGB0aWNrZXRfZGV0YWlsLiR7bmFtZX1gKX1cbiAgICAgICAgICAgIHZhbHVlPXt2YWx1ZXNbbmFtZV19XG4gICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWQgfHwgaXNEZWxlZ2F0ZWQgfHwgISFpbml0aWFsVmFsdWVzW25hbWVdfVxuICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgIG9uQmx1cj17aGFuZGxlQmx1cn1cbiAgICAgICAgICAgIGVycm9yPXt0b3VjaGVkW25hbWVdICYmIEJvb2xlYW4oZXJyb3JzW25hbWVdKX1cbiAgICAgICAgICAgIGhlbHBlclRleHQ9e2Zvcm1pay50b3VjaGVkW25hbWVdICYmIGZvcm1pay5lcnJvcnNbbmFtZV19XG4gICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgICAvPlxuICAgICAgICApXG4gICAgICApfVxuICAgICAgPENvbXBhbnlGaWVsZCBmb3JtaWs9e2Zvcm1pa30gc3VtbWl0SWQ9e3N1bW1pdElkfSBpc1JlcXVpcmVkIC8+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmluZm9Ob3RlfT57dChcInRpY2tldF9kZXRhaWwuaW5mb19ub3RlXCIpfTwvQm94PlxuICAgIDwvQm94PlxuICApO1xufTtcblxuVGlja2V0T3duZXJGaWVsZHMucHJvcFR5cGVzID0ge1xuICBmb3JtaWs6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgc3VtbWl0SWQ6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgZGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBpc0RlbGVnYXRlZDogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldE93bmVyRmllbGRzO1xuIiwiZXhwb3J0IGNvbnN0IFRJQ0tFVF9BVFRFTkRFRV9LRVlTID0ge1xuICBlbWFpbDogXCJhdHRlbmRlZV9lbWFpbFwiLFxuICBmaXJzdE5hbWU6IFwiYXR0ZW5kZWVfZmlyc3RfbmFtZVwiLFxuICBsYXN0TmFtZTogXCJhdHRlbmRlZV9sYXN0X25hbWVcIixcbiAgY29tcGFueTogXCJhdHRlbmRlZV9jb21wYW55XCIsXG4gIGRpc2NsYWltZXJBY2NlcHRlZDogXCJkaXNjbGFpbWVyX2FjY2VwdGVkXCJcbn07XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlQ29udGV4dCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3gsIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHVzZUdldFRpY2tldCBmcm9tIFwiLi4vLi4vaG9va3MvdXNlR2V0VGlja2V0XCI7XG5pbXBvcnQgeyB0cmFuc2Zvcm1BbndlcnNGb3JtYXQgfSBmcm9tIFwiLi4vRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy91dGlsc1wiO1xuaW1wb3J0IHsgVElDS0VUX0RSQVdFUl9JRCB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCBUaWNrZXRGb3JtIGZyb20gXCIuL2NvbXBvbmVudHMvVGlja2V0Rm9ybVwiO1xuaW1wb3J0IEN1c3RvbU5vdGlmaWNhdGlvbkNvbnRleHQgZnJvbSBcIi4uL0N1c3RvbU5vdGlmaWNhdGlvbi9Db250ZXh0XCI7XG5pbXBvcnQgeyBzYXZlVGlja2V0RGV0YWlscyB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgUmlnaHREcmF3ZXIgZnJvbSBcIi4uL1JpZ2h0RHJhd2VyXCI7XG5pbXBvcnQgVGlja2V0RGV0YWlsSGVhZGVyIGZyb20gXCIuL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsSGVhZGVyXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFRpY2tldERldGFpbCA9ICh7XG4gIHN1bW1pdCxcbiAgdGlja2V0SWQsXG4gIG9yZGVySWQsXG4gIG93bmVySWQsXG4gIG9wZW4sXG4gIG9uQ2xvc2Vcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCB7IHN1Y2Nlc3NNZXNzYWdlLCBlcnJvck1lc3NhZ2UgfSA9IHVzZUNvbnRleHQoXG4gICAgQ3VzdG9tTm90aWZpY2F0aW9uQ29udGV4dFxuICApO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IHtcbiAgICB1c2VyOiB7IHVzZXJQcm9maWxlIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUpO1xuICBjb25zdCB7IHRpY2tldCwgZXh0cmFRdWVzdGlvbnMgfSA9IHVzZUdldFRpY2tldChcbiAgICB0aWNrZXRJZCxcbiAgICBvcmRlcklkLFxuICAgIG93bmVySWQsXG4gICAgb3BlblxuICApO1xuICBjb25zdCBpc1VzZXJPcmRlck93bmVyID0gdGlja2V0Py5vcmRlcj8ub3duZXJfaWQgPT09IHVzZXJQcm9maWxlPy5pZDtcbiAgY29uc3QgaXNVc2VyVGlja2V0T3duZXIgPSB0aWNrZXQ/Lm93bmVyPy5lbWFpbCA9PT0gdXNlclByb2ZpbGU/LmVtYWlsO1xuICBjb25zdCBjYW5FZGl0VGlja2V0RGF0YSA9XG4gICAgKGlzVXNlclRpY2tldE93bmVyIHx8IGlzVXNlck9yZGVyT3duZXIpICYmXG4gICAgc3VtbWl0LmFsbG93X3VwZGF0ZV9hdHRlbmRlZV9leHRyYV9xdWVzdGlvbnM7XG5cbiAgY29uc3Qgb25TYXZlID0gKHZhbCkgPT4ge1xuICAgIGNvbnN0IGFuc3dlcnMgPSB0cmFuc2Zvcm1BbndlcnNGb3JtYXQodmFsKTtcblxuICAgIHJldHVybiBkaXNwYXRjaChzYXZlVGlja2V0RGV0YWlscyh0aWNrZXQsIGFuc3dlcnMpKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICBvbkNsb3NlKCk7XG4gICAgICAgIHN1Y2Nlc3NNZXNzYWdlKHQoXCJ0aWNrZXRfZGV0YWlsLnNhdmluZ19zdWNjZXNzXCIpKTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoKSA9PiB7XG4gICAgICAgIGVycm9yTWVzc2FnZSh0KFwidGlja2V0X2RldGFpbC5zYXZpbmdfZXJyb3JcIikpO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcbiAgICAgIH0pO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPFJpZ2h0RHJhd2VyXG4gICAgICBpZD17VElDS0VUX0RSQVdFUl9JRH1cbiAgICAgIG9wZW49e29wZW59XG4gICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0RGV0YWlsQ29udGFpbmVyfVxuICAgICAgaGVhZGVyQ2hpbGRyZW49e1xuICAgICAgICA8VGlja2V0RGV0YWlsSGVhZGVyXG4gICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgaXNWaXJ0dWFsU3VtbWl0PXtzdW1taXQ/LmlzX3ZpcnR1YWx9XG4gICAgICAgIC8+XG4gICAgICB9XG4gICAgPlxuICAgICAge3RpY2tldCAmJiBleHRyYVF1ZXN0aW9ucyAmJiAoXG4gICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYXR0ZW5kZWVDb250YWluZXJ9PlxuICAgICAgICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgICAgICAgdmFyaWFudD1cImg0XCJcbiAgICAgICAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmF0dGVuZGVlSW5mb1RpdGxlfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwuYXR0ZW5kZWVfaW5mb3JtYXRpb25cIil9XG4gICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICB7dGlja2V0ICYmIChcbiAgICAgICAgICAgICAgPFRpY2tldEZvcm1cbiAgICAgICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgICAgICBleHRyYVF1ZXN0aW9ucz17ZXh0cmFRdWVzdGlvbnN9XG4gICAgICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICAgICAgY2FuRWRpdD17Y2FuRWRpdFRpY2tldERhdGF9XG4gICAgICAgICAgICAgICAgb25TdWJtaXQ9e29uU2F2ZX1cbiAgICAgICAgICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L0JveD5cbiAgICAgICl9XG4gICAgPC9SaWdodERyYXdlcj5cbiAgKTtcbn07XG5cblRpY2tldERldGFpbC5wcm9wVHlwZXMgPSB7XG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgdGlja2V0SWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9yZGVySWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG93bmVySWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICBvcGVuOiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0RGV0YWlsO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQ29udGFpbmVyLCBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVGlja2V0RGV0YWlscyB9IGZyb20gXCIuLi8uLi9ob29rcy91c2VUaWNrZXREZXRhaWxzXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgVGlja2V0U3RhdHVzID0gKHsgdGlja2V0IH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBpc0FjdGl2ZSA9IHRpY2tldC5pc19hY3RpdmU7XG4gIGNvbnN0IHJlZnVuZFJlcXVlc3RzID0gdGlja2V0LnJlZnVuZF9yZXF1ZXN0cz8uZmluZChcbiAgICAocikgPT4gci5zdGF0dXMgPT09IFwiUmVxdWVzdGVkXCJcbiAgKTtcbiAgY29uc3QgeyBpc0luY29tcGxldGUsIGlzVW5hc3NpZ25lZCwgaXNDb21wbGV0ZSB9ID0gdXNlVGlja2V0RGV0YWlscyh0aWNrZXQpO1xuXG4gIHJldHVybiAoXG4gICAgPENvbnRhaW5lciBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRTdGF0dXNDb250YWluZXJ9PlxuICAgICAge2lzQWN0aXZlID8gKFxuICAgICAgICA8PlxuICAgICAgICAgIHshIXJlZnVuZFJlcXVlc3RzICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIHJlZnVuZCByZXF1ZXN0ZWRcIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlcy5idXR0b25SZWZ1bmRSZXF1ZXN0ZWR9YH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c19yZWZ1bmRfcmVxdWVzdGVkXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7aXNJbmNvbXBsZXRlICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIGluY29tcGxldGVcIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlcy5idXR0b25JbmNvbXBsZXRlfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfaW5jb21wbGV0ZVwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICl9XG4gICAgICAgICAge2lzVW5hc3NpZ25lZCAmJiAoXG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHN0YXR1cyB1bmFzc2lnbmVkXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uVW5hc3NpZ25lZH1gfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX3VuYXNzaWduZWRcIil9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICApfVxuICAgICAgICAgIHtpc0NvbXBsZXRlICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIGNvbXBsZXRlXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uQ29tcGxldGV9YH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c19jb21wbGV0ZVwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvPlxuICAgICAgKSA6IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIGNhbmNlbGxlZFwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uQ2FuY2VsbGVkfWB9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX2NhbmNlbGxlZFwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApfVxuICAgIDwvQ29udGFpbmVyPlxuICApO1xufTtcblxuVGlja2V0U3RhdHVzLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIG93bmVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgc3RhdHVzOiBQcm9wVHlwZXMuc3RyaW5nXG4gICAgfSksXG4gICAgcmVmdW5kUmVxdWVzdHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdClcbiAgfSlcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldFN0YXR1cztcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgRGl2aWRlcixcbiAgVGFiLFxuICBUYWJzLFxuICB1c2VNZWRpYVF1ZXJ5LFxuICB1c2VUaGVtZVxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgc3RvcExvYWRpbmcgfSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9hY3Rpb25zXCI7XG5pbXBvcnQge1xuICBERUZBVUxUX0lURU1TX1BFUl9QQUdFLFxuICBGSVJTVF9QQUdFLFxuICBUQUJTXG59IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCBNeU9yZGVyc1RpY2tldHMgZnJvbSBcIi4uL015T3JkZXJzVGlja2V0c1wiO1xuaW1wb3J0IEFzc2lnbmVkVG9NZSBmcm9tIFwiLi4vT3JkZXJzTGlzdC9Bc3NpZ25lZFRvTWVcIjtcbmltcG9ydCB7XG4gIGdldFRpY2tldHNCeU9yZGVyLFxuICBnZXRVc2VyT3JkZXJzLFxuICBnZXRVc2VyVGlja2V0c1xufSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IFRhYldyYXBwZXIgZnJvbSBcIi4uL1RhYldyYXBwZXJcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgV2lkZ2V0VGFicyA9ICgpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbdGFiLCBzZXRUYWJdID0gdXNlU3RhdGUoVEFCUy5PUkRFUlMpO1xuICBjb25zdCBbdGlja2V0c0Z1bGx5TG9hZGVkLCBzZXRUaWNrZXRzRnVsbHlMb2FkZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IHtcbiAgICBmaWx0ZXIsXG4gICAgc29ydCxcbiAgICBvcmRlcnNfcGVyX3BhZ2U6IG9yZGVyc1BlclBhZ2UsXG4gICAgdGlja2V0X3Blcl9wYWdlOiB0aWNrZXRQZXJQYWdlLFxuICAgIHVzZXJUaWNrZXRzLFxuICAgIG1lbWJlck9yZGVyc1xuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSk7XG4gIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUoKTtcbiAgY29uc3QgaXNNb2JpbGUgPSB1c2VNZWRpYVF1ZXJ5KHRoZW1lLmJyZWFrcG9pbnRzLmRvd24oXCJsZ1wiKSk7XG5cbiAgY29uc3QgaGFuZGxlVGFiQ2hhbmdlID0gKGV2LCBuZXdUYWIpID0+IHtcbiAgICBzZXRUYWIobmV3VGFiKTtcbiAgfTtcblxuICBjb25zdCBmZXRjaEFzc2lnbmVkVGlja2V0cyA9IChwYWdlLCBza2lwTG9hZGluZyA9IGZhbHNlKSA9PlxuICAgIGRpc3BhdGNoKFxuICAgICAgZ2V0VXNlclRpY2tldHMoXG4gICAgICAgIHtcbiAgICAgICAgICBwYWdlLFxuICAgICAgICAgIHBlclBhZ2U6IERFRkFVTFRfSVRFTVNfUEVSX1BBR0UsXG4gICAgICAgICAgZmlsdGVyLFxuICAgICAgICAgIHNvcnRcbiAgICAgICAgfSxcbiAgICAgICAgc2tpcExvYWRpbmdcbiAgICAgIClcbiAgICApO1xuXG4gIGNvbnN0IGZldGNoT3JkZXJUaWNrZXRzID0gKHBhZ2UsIHNraXBMb2FkaW5nID0gZmFsc2UpID0+XG4gICAgZGlzcGF0Y2goXG4gICAgICBnZXRVc2VyT3JkZXJzKFxuICAgICAgICB7XG4gICAgICAgICAgcGFnZSxcbiAgICAgICAgICBwZXJQYWdlOiBvcmRlcnNQZXJQYWdlLFxuICAgICAgICAgIGZpbHRlcixcbiAgICAgICAgICBzb3J0XG4gICAgICAgIH0sXG4gICAgICAgIHNraXBMb2FkaW5nXG4gICAgICApXG4gICAgKS50aGVuKChwYXlsb2FkKSA9PiB7XG4gICAgICBjb25zdCB7IGRhdGEgfSA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICBjb25zdCBvcmRlclRpY2tldHNQcm9taXNlcyA9IGRhdGEubWFwKChvcmRlcikgPT5cbiAgICAgICAgZGlzcGF0Y2goXG4gICAgICAgICAgZ2V0VGlja2V0c0J5T3JkZXIoe1xuICAgICAgICAgICAgb3JkZXJJZDogb3JkZXIuaWQsXG4gICAgICAgICAgICBjdXJyZW50X3BhZ2U6IEZJUlNUX1BBR0UsXG4gICAgICAgICAgICBwZXJQYWdlOiB0aWNrZXRQZXJQYWdlLFxuICAgICAgICAgICAgZmlsdGVyLFxuICAgICAgICAgICAgc29ydFxuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiBQcm9taXNlLmFsbChvcmRlclRpY2tldHNQcm9taXNlcyk7XG4gICAgfSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBmZXRjaFByb21pc2VzID0gW1xuICAgICAgZmV0Y2hBc3NpZ25lZFRpY2tldHMoRklSU1RfUEFHRSwgdHJ1ZSksXG4gICAgICBmZXRjaE9yZGVyVGlja2V0cyhGSVJTVF9QQUdFLCB0cnVlKVxuICAgIF07XG4gICAgUHJvbWlzZS5hbGwoZmV0Y2hQcm9taXNlcylcbiAgICAgIC50aGVuKCgpID0+IHNldFRpY2tldHNGdWxseUxvYWRlZCh0cnVlKSlcbiAgICAgIC5maW5hbGx5KCgpID0+IGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpKTtcbiAgfSwgW2ZpbHRlciwgc29ydF0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHRpY2tldHNGdWxseUxvYWRlZCkge1xuICAgICAgaWYgKG1lbWJlck9yZGVycz8ubGVuZ3RoID09PSAwICYmIHVzZXJUaWNrZXRzPy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHNldFRhYihUQUJTLlRJQ0tFVFMpO1xuICAgICAgfVxuICAgIH1cbiAgfSwgW3RpY2tldHNGdWxseUxvYWRlZF0pO1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy50YWJXcmFwcGVyfT5cbiAgICAgIDxUYWJzXG4gICAgICAgIHZhbHVlPXt0YWJ9XG4gICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVUYWJDaGFuZ2V9XG4gICAgICAgIHZhcmlhbnQ9e2lzTW9iaWxlID8gXCJmdWxsV2lkdGhcIiA6IFwic3RhbmRhcmRcIn1cbiAgICAgID5cbiAgICAgICAgPFRhYiBsYWJlbD17dChcIm9yZGVycy50aXRsZVwiKX0gdmFsdWU9e1RBQlMuT1JERVJTfSAvPlxuICAgICAgICA8VGFiIGxhYmVsPXt0KFwibGFiZWxzLmFzc2lnbmVkX3RvX21lXCIpfSB2YWx1ZT17VEFCUy5USUNLRVRTfSAvPlxuICAgICAgPC9UYWJzPlxuICAgICAgPERpdmlkZXIgLz5cblxuICAgICAge3RhYiA9PT0gVEFCUy5PUkRFUlMgJiYgKFxuICAgICAgICA8VGFiV3JhcHBlciB0YWI9e1RBQlMuT1JERVJTfSBzZXRUYWI9e3NldFRhYn0+XG4gICAgICAgICAgPE15T3JkZXJzVGlja2V0cyBmZXRjaERhdGE9e2ZldGNoT3JkZXJUaWNrZXRzfSAvPlxuICAgICAgICA8L1RhYldyYXBwZXI+XG4gICAgICApfVxuICAgICAge3RhYiA9PT0gVEFCUy5USUNLRVRTICYmIChcbiAgICAgICAgPFRhYldyYXBwZXIgdGFiPXtUQUJTLlRJQ0tFVFN9IHNldFRhYj17c2V0VGFifT5cbiAgICAgICAgICA8QXNzaWduZWRUb01lIGZldGNoRGF0YT17ZmV0Y2hBc3NpZ25lZFRpY2tldHN9IC8+XG4gICAgICAgIDwvVGFiV3JhcHBlcj5cbiAgICAgICl9XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBXaWRnZXRUYWJzO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cbmltcG9ydCBSZWFjdCwgeyB1c2VNZW1vLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwsIGNvbm5lY3QgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyByZXNldEZpbHRlciwgY2hhbmdlU29ydCwgY2hhbmdlRmlsdGVyIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCBDdXN0b21UaGVtZSBmcm9tIFwiLi4vQ3VzdG9tVGhlbWVcIjtcbmltcG9ydCBMb2FkZXIgZnJvbSBcIi4uL0xvYWRlclwiO1xuaW1wb3J0IEZpbHRlcnMgZnJvbSBcIi4uL0ZpbHRlcnNcIjtcbmltcG9ydCBXaWRnZXRUYWJzIGZyb20gXCIuLi9XaWRnZXRUYWJzXCI7XG5pbXBvcnQgQ3VzdG9tTm90aWZpY2F0aW9uQ29udGV4dCBmcm9tIFwiLi4vQ3VzdG9tTm90aWZpY2F0aW9uL0NvbnRleHRcIjtcbmltcG9ydCBDdXN0b21Ob3RpZmljYXRpb24gZnJvbSBcIi4uL0N1c3RvbU5vdGlmaWNhdGlvblwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBXaWRnZXRXcmFwcGVyID0gKCkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgW21zZ0RhdGEsIHNldE1zZ0RhdGFdID0gdXNlU3RhdGUoXCJcIik7XG4gIGNvbnN0IHtcbiAgICBsb2FkaW5nLFxuICAgIGZpbHRlcjogeyBGSUxURVJfVkFSX09SREVSX05VTUJFUjogZmlsdGVyVmFsdWVzIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG5cbiAgY29uc3Qgc3VjY2Vzc01lc3NhZ2UgPSAobXNnKSA9PlxuICAgIHNldE1zZ0RhdGEoeyBtZXNzYWdlOiBtc2csIHNldmVyaXR5OiBcInN1Y2Nlc3NcIiB9KTtcbiAgY29uc3QgZXJyb3JNZXNzYWdlID0gKG1zZykgPT4gc2V0TXNnRGF0YSh7IG1lc3NhZ2U6IG1zZywgc2V2ZXJpdHk6IFwiZXJyb3JcIiB9KTtcbiAgY29uc3QgbWVzc2FnZUNvbnRleHQgPSB1c2VNZW1vKCgpID0+ICh7IHN1Y2Nlc3NNZXNzYWdlLCBlcnJvck1lc3NhZ2UgfSksIFtdKTtcblxuICBjb25zdCBvblJlc2V0ID0gKCkgPT4ge1xuICAgIGRpc3BhdGNoKHJlc2V0RmlsdGVyKCkpO1xuICB9O1xuXG4gIGNvbnN0IG9uRmlsdGVyID0gKGZpbHRlclZhbHVlKSA9PiB7XG4gICAgZGlzcGF0Y2goY2hhbmdlRmlsdGVyKGZpbHRlclZhbHVlKSk7XG4gIH07XG5cbiAgY29uc3Qgb25Tb3J0ID0gKHNvcnRWYWx1ZSkgPT4ge1xuICAgIGRpc3BhdGNoKGNoYW5nZVNvcnQoc29ydFZhbHVlKSk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8Q3VzdG9tVGhlbWU+XG4gICAgICA8TG9hZGVyIG9wZW49e2xvYWRpbmd9IC8+XG4gICAgICA8Q3VzdG9tTm90aWZpY2F0aW9uXG4gICAgICAgIG9wZW49eyEhbXNnRGF0YX1cbiAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0TXNnRGF0YShudWxsKX1cbiAgICAgICAgbWVzc2FnZT17bXNnRGF0YT8ubWVzc2FnZX1cbiAgICAgICAgc2V2ZXJpdHk9e21zZ0RhdGE/LnNldmVyaXR5fVxuICAgICAgLz5cbiAgICAgIDxGaWx0ZXJzXG4gICAgICAgIG9uRmlsdGVyPXtvbkZpbHRlcn1cbiAgICAgICAgb25Tb3J0PXtvblNvcnR9XG4gICAgICAgIG9uU2VhcmNoPXtvbkZpbHRlcn1cbiAgICAgICAgb25SZXNldD17b25SZXNldH1cbiAgICAgIC8+XG4gICAgICA8Qm94IHN4PXt7IHBhZGRpbmc6IHsgeHM6IDIsIG1kOiAwLCBsZzogMCB9IH19PlxuICAgICAgICA8aDMgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0c1RpdGxlVGV4dH0+XG4gICAgICAgICAge2ZpbHRlclZhbHVlc1xuICAgICAgICAgICAgPyB0KFwibGFiZWxzLnNlYXJjaF9yZXN1bHRzXCIsIHsgZmlsdGVyOiBmaWx0ZXJWYWx1ZXMgfSlcbiAgICAgICAgICAgIDogdChcImxhYmVscy50aWNrZXRzXCIpfVxuICAgICAgICA8L2gzPlxuICAgICAgPC9Cb3g+XG4gICAgICA8Q3VzdG9tTm90aWZpY2F0aW9uQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17bWVzc2FnZUNvbnRleHR9PlxuICAgICAgICA8V2lkZ2V0VGFicyAvPlxuICAgICAgPC9DdXN0b21Ob3RpZmljYXRpb25Db250ZXh0LlByb3ZpZGVyPlxuICAgIDwvQ3VzdG9tVGhlbWU+XG4gICk7XG59O1xuXG5jb25zdCBtYXBTdGF0ZVRvUHJvcHMgPSAoeyB3aWRnZXRTdGF0ZSB9KSA9PiAoe1xuICBzb3J0OiB3aWRnZXRTdGF0ZS5zb3J0LFxuICBmaWx0ZXI6IHdpZGdldFN0YXRlLmZpbHRlclxufSk7XG5cbmV4cG9ydCBkZWZhdWx0IGNvbm5lY3QobWFwU3RhdGVUb1Byb3BzLCB7fSkoV2lkZ2V0V3JhcHBlcik7XG4iLCJpbXBvcnQgeyB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgZ2V0RXh0cmFRdWVzdGlvbnMsIGdldFRpY2tldCB9IGZyb20gXCIuLi9hY3Rpb25zXCI7XG5cbmNvbnN0IHVzZUdldFRpY2tldCA9ICh0aWNrZXRJZCwgb3JkZXJJZCwgb3duZXJJZCwgcnVuKSA9PiB7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChydW4pIHtcbiAgICAgIGlmICh0aWNrZXRJZCAmJiBvcmRlcklkKSB7XG4gICAgICAgIGRpc3BhdGNoKGdldFRpY2tldCh0aWNrZXRJZCwgb3JkZXJJZCkpO1xuICAgICAgfVxuXG4gICAgICBpZiAob3duZXJJZCkge1xuICAgICAgICBkaXNwYXRjaChnZXRFeHRyYVF1ZXN0aW9ucyhvd25lcklkKSk7XG4gICAgICB9XG4gICAgfVxuICB9LCBbdGlja2V0SWQsIG9yZGVySWQsIG93bmVySWQsIHJ1bl0pO1xuXG4gIGNvbnN0IHsgZXh0cmFRdWVzdGlvbnMsIGN1cnJlbnRUaWNrZXQ6IHRpY2tldCB9ID0gdXNlU2VsZWN0b3IoXG4gICAgKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZVxuICApO1xuXG4gIHJldHVybiB7IHRpY2tldCwgZXh0cmFRdWVzdGlvbnMgfTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHVzZUdldFRpY2tldDtcbiIsImltcG9ydCB7IHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgVElDS0VUX0RSQVdFUl9JRCB9IGZyb20gXCIuLi91dGlscy9jb25zdGFudHNcIjtcblxuLy8gU21vb3RoIHNjcm9sbGluZyBmdW5jdGlvbiB1c2luZyByZXF1ZXN0QW5pbWF0aW9uRnJhbWVcbmZ1bmN0aW9uIHNtb290aFNjcm9sbFRvKGNvbnRhaW5lciwgdGFyZ2V0U2Nyb2xsVG9wLCBkdXJhdGlvbikge1xuICBjb25zdCBzdGFydFNjcm9sbFRvcCA9IGNvbnRhaW5lci5zY3JvbGxUb3A7XG4gIGNvbnN0IGRpc3RhbmNlID0gdGFyZ2V0U2Nyb2xsVG9wIC0gc3RhcnRTY3JvbGxUb3A7XG4gIGxldCBzdGFydFRpbWUgPSBudWxsO1xuXG4gIGZ1bmN0aW9uIGFuaW1hdGlvblN0ZXAodGltZXN0YW1wKSB7XG4gICAgaWYgKCFzdGFydFRpbWUpIHN0YXJ0VGltZSA9IHRpbWVzdGFtcDtcbiAgICBjb25zdCBlbGFwc2VkID0gdGltZXN0YW1wIC0gc3RhcnRUaW1lO1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW1hZ2ljLW51bWJlcnNcbiAgICBjb25zdCBwcm9ncmVzcyA9IE1hdGgubWluKGVsYXBzZWQgLyBkdXJhdGlvbiwgMSk7XG4gICAgY29uc3QgZWFzZUluT3V0UXVhZCA9XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVyc1xuICAgICAgcHJvZ3Jlc3MgPCAwLjUgPyAyICogcHJvZ3Jlc3MgKiogMiA6IDEgLSAoLTIgKiBwcm9ncmVzcyArIDIpICoqIDIgLyAyO1xuXG4gICAgY29udGFpbmVyLnNjcm9sbFRvcCA9IHN0YXJ0U2Nyb2xsVG9wICsgZGlzdGFuY2UgKiBlYXNlSW5PdXRRdWFkO1xuXG4gICAgaWYgKGVsYXBzZWQgPCBkdXJhdGlvbikge1xuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGFuaW1hdGlvblN0ZXApO1xuICAgIH1cbiAgfVxuXG4gIHJlcXVlc3RBbmltYXRpb25GcmFtZShhbmltYXRpb25TdGVwKTtcbn1cblxuY29uc3QgdXNlU2Nyb2xsVG9FcnJvciA9IChmb3JtaWspID0+IHtcbiAgY29uc3QgeyBlcnJvcnMsIGlzVmFsaWQsIGlzU3VibWl0dGluZyB9ID0gZm9ybWlrO1xuICBjb25zdCBlcnJvckFycmF5ID0gT2JqZWN0LmtleXMoZXJyb3JzKTtcbiAgY29uc3QgZXJyb3JDb3VudCA9IGVycm9yQXJyYXkubGVuZ3RoO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzVmFsaWQgfHwgZXJyb3JDb3VudCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgLy8gc29ydCBlbGVtZW50cyBieSBwb3NpdGlvblxuICAgIGNvbnN0IGVsZW1lbnRzU29ydGVkID0gZXJyb3JBcnJheVxuICAgICAgLnJlZHVjZSgocmVzdWx0LCBlcnJvcikgPT4ge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgW25hbWU9JyR7ZXJyb3J9J11gKTtcbiAgICAgICAgaWYgKCFlbGVtZW50KSByZXR1cm4gcmVzdWx0O1xuXG4gICAgICAgIGNvbnN0IGVsUmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIHJlc3VsdC5wdXNoKHsgZWxlbWVudCwgZXJyb3IsIHRvcDogZWxSZWN0LnRvcCB9KTtcblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfSwgW10pXG4gICAgICAuc29ydCgoYSwgYikgPT4gYS50b3AgLSBiLnRvcCk7XG5cbiAgICBpZiAoZWxlbWVudHNTb3J0ZWQubGVuZ3RoID09PSAwKSByZXR1cm47XG5cbiAgICBjb25zdCBjb250YWluZXIgPSBkb2N1bWVudFxuICAgICAgLmdldEVsZW1lbnRCeUlkKFRJQ0tFVF9EUkFXRVJfSUQpXG4gICAgICAucXVlcnlTZWxlY3RvcihcIi5NdWlEcmF3ZXItcGFwZXJcIik7XG4gICAgY29uc3QgdGFyZ2V0ID0gZWxlbWVudHNTb3J0ZWRbMF07XG5cbiAgICBpZiAoY29udGFpbmVyPy5jb250YWlucyh0YXJnZXQuZWxlbWVudCkpIHtcbiAgICAgIGNvbnN0IGNvbnRhaW5lclJlY3QgPSBjb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgIC8vIENhbGN1bGF0ZSB0aGUgb2Zmc2V0IG9mIHRoZSB0YXJnZXQgZWxlbWVudCByZWxhdGl2ZSB0byB0aGUgY29udGFpbmVyXG4gICAgICBjb25zdCBlbGVtT2ZmZXN0ID0gMTAwO1xuICAgICAgY29uc3QgYW5pbWF0aW9uRHVyYXRpb24gPSA1MDA7XG4gICAgICBjb25zdCBzY3JvbGxUb3AgPVxuICAgICAgICB0YXJnZXQudG9wIC0gY29udGFpbmVyUmVjdC50b3AgKyBjb250YWluZXIuc2Nyb2xsVG9wIC0gZWxlbU9mZmVzdDtcblxuICAgICAgLy8gU2Nyb2xsIHRoZSBjb250YWluZXIgdG8gdGhlIHRhcmdldCBlbGVtZW50J3MgcG9zaXRpb25cbiAgICAgIHNtb290aFNjcm9sbFRvKGNvbnRhaW5lciwgc2Nyb2xsVG9wLCBhbmltYXRpb25EdXJhdGlvbik7IC8vIDUwMG1zIGR1cmF0aW9uXG4gICAgfVxuICB9LCBbaXNTdWJtaXR0aW5nXSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCB1c2VTY3JvbGxUb0Vycm9yO1xuIiwiaW1wb3J0IHsgaXNUaWNrZXRSZWZ1bmRhYmxlIH0gZnJvbSBcIi4uL3V0aWxzL3RpY2tldFV0aWxzXCI7XG5cbmV4cG9ydCBjb25zdCBTVEFUVVNfQ09NUExFVEUgPSBcIkNvbXBsZXRlXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0lOQ09NUExFVEUgPSBcIkluY29tcGxldGVcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfQ0FOQ0VMTEVEID0gXCJDYW5jZWxsZWRcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfVU5BU1NJR05FRCA9IFwiVW5hc3NpZ25lZFwiO1xuXG5leHBvcnQgY29uc3QgdXNlVGlja2V0RGV0YWlscyA9ICh0aWNrZXQpID0+IHtcbiAgY29uc3QgZ2V0U3RhdHVzID0gKCkgPT4ge1xuICAgIGlmICghdGlja2V0LmlzX2FjdGl2ZSkgcmV0dXJuIFNUQVRVU19DQU5DRUxMRUQ7XG4gICAgaWYgKHRpY2tldC5vd25lcl9pZCA9PT0gMCkgcmV0dXJuIFNUQVRVU19VTkFTU0lHTkVEO1xuICAgIGlmICghdGlja2V0Lm93bmVyPy5maXJzdF9uYW1lIHx8ICF0aWNrZXQub3duZXI/Lmxhc3RfbmFtZSlcbiAgICAgIHJldHVybiBTVEFUVVNfSU5DT01QTEVURTtcbiAgICByZXR1cm4gdGlja2V0Lm93bmVyLnN0YXR1cztcbiAgfTtcblxuICBpZiAoIXRpY2tldCkgcmV0dXJuIHt9O1xuXG4gIGNvbnN0IHN0YXR1cyA9IGdldFN0YXR1cygpO1xuICBjb25zdCBpc0FjdGl2ZSA9IHRpY2tldC5pc19hY3RpdmUgJiYgc3RhdHVzICE9PSBTVEFUVVNfQ0FOQ0VMTEVEO1xuICBjb25zdCBpc1JlZnVuZGFibGUgPSBpc1RpY2tldFJlZnVuZGFibGUodGlja2V0KTtcbiAgY29uc3QgYWxsb3dzRGVsZWdhdGUgPVxuICAgIHRpY2tldD8udGlja2V0X3R5cGU/LmFsbG93c190b19kZWxlZ2F0ZSB8fFxuICAgIHRpY2tldD8ucHJvbW9fY29kZT8uYWxsb3dzX3RvX2RlbGVnYXRlO1xuICBjb25zdCBpc0NvbXBsZXRlID0gc3RhdHVzID09PSBTVEFUVVNfQ09NUExFVEU7XG4gIGNvbnN0IGlzVW5hc3NpZ25lZCA9IHN0YXR1cyA9PT0gU1RBVFVTX1VOQVNTSUdORUQ7XG4gIGNvbnN0IGlzSW5jb21wbGV0ZSA9IHN0YXR1cyA9PT0gU1RBVFVTX0lOQ09NUExFVEU7XG4gIGNvbnN0IGNhblJlYXNzaWduID1cbiAgICAhaXNVbmFzc2lnbmVkICYmXG4gICAgdGlja2V0LnRpY2tldF90eXBlPy5hbGxvd3NfdG9fcmVhc3NpZ24gJiZcbiAgICAoIXRpY2tldC5wcm9tb19jb2RlIHx8IHRpY2tldC5wcm9tb19jb2RlPy5hbGxvd3NfdG9fcmVhc3NpZ24pO1xuXG4gIHJldHVybiB7XG4gICAgc3RhdHVzLFxuICAgIGlzQ29tcGxldGUsXG4gICAgaXNVbmFzc2lnbmVkLFxuICAgIGlzSW5jb21wbGV0ZSxcbiAgICBpc0FjdGl2ZSxcbiAgICBpc1JlZnVuZGFibGUsXG4gICAgYWxsb3dzRGVsZWdhdGUsXG4gICAgY2FuUmVhc3NpZ25cbiAgfTtcbn07XG4iLCJpbXBvcnQgaTE4biBmcm9tIFwiaTE4bmV4dFwiO1xuaW1wb3J0IHsgaW5pdFJlYWN0STE4bmV4dCB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgTGFuZ3VhZ2VEZXRlY3RvciBmcm9tIFwiaTE4bmV4dC1icm93c2VyLWxhbmd1YWdlZGV0ZWN0b3JcIjtcbmltcG9ydCBlbiBmcm9tIFwiLi9sb2NhbGVzL2VuLmpzb25cIjtcbmltcG9ydCBlcyBmcm9tIFwiLi9sb2NhbGVzL2VzLmpzb25cIjtcblxuLy8gaW1wb3J0IEJhY2tlbmQgZnJvbSAnaTE4bmV4dC1odHRwLWJhY2tlbmQnO1xuLy8gZG9uJ3Qgd2FudCB0byB1c2UgdGhpcz9cbi8vIGhhdmUgYSBsb29rIGF0IHRoZSBRdWljayBzdGFydCBndWlkZVxuLy8gZm9yIHBhc3NpbmcgaW4gbG5nIGFuZCB0cmFuc2xhdGlvbnMgb24gaW5pdFxuXG5pMThuXG4gIC8vIGxvYWQgdHJhbnNsYXRpb24gdXNpbmcgaHR0cCAtPiBzZWUgL3B1YmxpYy9sb2NhbGVzIChpLmUuIGh0dHBzOi8vZ2l0aHViLmNvbS9pMThuZXh0L3JlYWN0LWkxOG5leHQvdHJlZS9tYXN0ZXIvZXhhbXBsZS9yZWFjdC9wdWJsaWMvbG9jYWxlcylcbiAgLy8gbGVhcm4gbW9yZTogaHR0cHM6Ly9naXRodWIuY29tL2kxOG5leHQvaTE4bmV4dC1odHRwLWJhY2tlbmRcbiAgLy8gd2FudCB5b3VyIHRyYW5zbGF0aW9ucyB0byBiZSBsb2FkZWQgZnJvbSBhIHByb2Zlc3Npb25hbCBDRE4/ID0+IGh0dHBzOi8vZ2l0aHViLmNvbS9sb2NpemUvcmVhY3QtdHV0b3JpYWwjc3RlcC0yLS0tdXNlLXRoZS1sb2NpemUtY2RuXG4gIC8vIC51c2UoQmFja2VuZClcbiAgLy8gZGV0ZWN0IHVzZXIgbGFuZ3VhZ2VcbiAgLy8gbGVhcm4gbW9yZTogaHR0cHM6Ly9naXRodWIuY29tL2kxOG5leHQvaTE4bmV4dC1icm93c2VyLWxhbmd1YWdlRGV0ZWN0b3JcbiAgLnVzZShMYW5ndWFnZURldGVjdG9yKVxuICAvLyBwYXNzIHRoZSBpMThuIGluc3RhbmNlIHRvIHJlYWN0LWkxOG5leHQuXG4gIC51c2UoaW5pdFJlYWN0STE4bmV4dClcbiAgLy8gaW5pdCBpMThuZXh0XG4gIC8vIGZvciBhbGwgb3B0aW9ucyByZWFkOiBodHRwczovL3d3dy5pMThuZXh0LmNvbS9vdmVydmlldy9jb25maWd1cmF0aW9uLW9wdGlvbnNcbiAgLmluaXQoe1xuICAgIGZhbGxiYWNrTG5nOiBcImVuXCIsXG4gICAgZGVidWc6IGZhbHNlLFxuICAgIHJlc291cmNlczoge1xuICAgICAgZW46IHsgdHJhbnNsYXRpb246IGVuIH0sXG4gICAgICBlczogeyB0cmFuc2xhdGlvbjogZXMgfVxuICAgIH0sXG4gICAgaW50ZXJwb2xhdGlvbjoge1xuICAgICAgZXNjYXBlVmFsdWU6IGZhbHNlIC8vIG5vdCBuZWVkZWQgZm9yIHJlYWN0IGFzIGl0IGVzY2FwZXMgYnkgZGVmYXVsdFxuICAgIH1cbiAgfSk7XG5cbmV4cG9ydCBkZWZhdWx0IGkxOG47XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuaW1wb3J0IHsgTE9HT1VUX1VTRVIgfSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9hY3Rpb25zXCI7XG5pbXBvcnQge1xuICBTVEFSVF9MT0FESU5HLFxuICBTVE9QX0xPQURJTkcsXG4gIFJFU0VUX0xPQURJTkdcbn0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvYWN0aW9uc1wiO1xuaW1wb3J0IHtcbiAgUkVTRVRfU1RBVEUsXG4gIFJFU0VUX0ZJTFRFUixcbiAgU0VUX1NUQVRFLFxuICBTRVRfVVNFUixcbiAgR0VUX1VTRVJfT1JERVJTLFxuICBHRVRfTVlfQVNTSUdORURfVElDS0VUUyxcbiAgR0VUX1RJQ0tFVFNfQllfT1JERVIsXG4gIFVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURUQsXG4gIFJFQ0VJVkVfVElDS0VULFxuICBSRUNFSVZFX0VYVFJBX1FVRVNUSU9OUyxcbiAgVVBEQVRFX1RJQ0tFVCxcbiAgQVNTSUdOX1RJQ0tFVCxcbiAgUkVTRVRfQVBJX0VSUk9SLFxuICBTRVRfQVBJX0VSUk9SLFxuICBSRVNFVF9USUNLRVQsXG4gIENIQU5HRV9GSUxURVIsXG4gIENIQU5HRV9TT1JULFxuICBGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkUsXG4gIEZJTFRFUl9WQVJfT1JERVJfTlVNQkVSLFxuICBGSUxURVJfVkFSX0RBVEUsXG4gIEZJTFRFUl9WQVJfVElDS0VUX1RZUEUsXG4gIEZJTFRFUl9WQVJfRlJFRV9QQUlELFxuICBGSUxURVJfVkFSX09XTkVSX1NUQVRVUyxcbiAgRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORUQsXG4gIEZJTFRFUl9WQVJfUFJPTU9DT0RFLFxuICBERUxFR0FURV9USUNLRVQsXG4gIFJFTU9WRV9USUNLRVRfQVRURU5ERUVcbn0gZnJvbSBcIi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsgRklSU1RfUEFHRSwgVEFCUyB9IGZyb20gXCIuL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgY2FsY3VsYXRlQWN0aXZlRmlsdGVycywgaGFzTG9hZGVkQWxsRGF0YSB9IGZyb20gXCIuL3V0aWxzXCI7XG5pbXBvcnQgeyB1cGRhdGVUaWNrZXRDb2xsZWN0aW9uIH0gZnJvbSBcIi4vdXRpbHMvdGlja2V0VXRpbHNcIjtcblxuY29uc3QgREVGQVVMVF9GSUxURVJfU1RBVEUgPSB7XG4gIFtGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkVdOiBbXSxcbiAgW0ZJTFRFUl9WQVJfVElDS0VUX1RZUEVdOiBbXSxcbiAgW0ZJTFRFUl9WQVJfRlJFRV9QQUlEXTogXCJcIixcbiAgW0ZJTFRFUl9WQVJfT1dORVJfU1RBVFVTXTogXCJcIixcbiAgW0ZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEXTogXCJcIixcbiAgW0ZJTFRFUl9WQVJfUFJPTU9DT0RFXTogXCJcIixcbiAgW0ZJTFRFUl9WQVJfT1JERVJfTlVNQkVSXTogXCJcIixcbiAgW0ZJTFRFUl9WQVJfREFURV06IG51bGxcbn07XG5cbmNvbnN0IERFRkFVTFRfU1RBVEUgPSB7XG4gIHN1bW1pdDogbnVsbCxcbiAgdXNlcjoge30sXG4gIHdpZGdldExvYWRpbmc6IGZhbHNlLFxuICBtZW1iZXJPcmRlcnM6IFtdLFxuICB1c2VyVGlja2V0czogW10sXG4gIGV4dHJhUXVlc3Rpb25zOiBbXSxcbiAgY3VycmVudFRpY2tldDogbnVsbCxcbiAgZXJyb3JzOiB7fSxcbiAgbG9hZGluZzogZmFsc2UsXG4gIGN1cnJlbnRfdGFiOiBUQUJTLk9SREVSUyxcbiAgc29ydDoge30sXG4gIGZpbHRlcjogREVGQVVMVF9GSUxURVJfU1RBVEUsXG4gIGFjdGl2ZUZpbHRlcnNDb3VudDogMCxcbiAgb3JkZXJzX2N1cnJlbnRfcGFnZTogMCxcbiAgb3JkZXJzX2xhc3RfcGFnZTogMCxcbiAgb3JkZXJzX3Blcl9wYWdlOiA1LFxuICBvcmRlcnNfdG90YWw6IDAsXG4gIHRpY2tldF9jdXJyZW50X3BhZ2U6IDAsXG4gIHRpY2tldF9sYXN0X3BhZ2U6IDAsXG4gIHRpY2tldF9wZXJfcGFnZTogNSxcbiAgdGlja2V0X3RvdGFsOiAwLFxuICB1c2VyX3RpY2tldHNfdG90YWw6IDAsXG4gIHVzZXJfdGlja2V0c19jdXJyZW50X3BhZ2U6IDAsXG4gIHVzZXJfdGlja2V0c19sYXN0X3BhZ2U6IDAsXG4gIGFwaUVycm9yOiBudWxsXG59O1xuXG5jb25zdCBXaWRnZXRSZWR1Y2VyID0gKHN0YXRlID0gREVGQVVMVF9TVEFURSwgeyB0eXBlLCBwYXlsb2FkIH0gPSB7fSkgPT4ge1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIExPR09VVF9VU0VSOlxuICAgIGNhc2UgUkVTRVRfU1RBVEU6XG4gICAgICByZXR1cm4gREVGQVVMVF9TVEFURTtcbiAgICBjYXNlIFNUQVJUX0xPQURJTkc6XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgbG9hZGluZzogdHJ1ZSB9O1xuICAgIGNhc2UgU1RPUF9MT0FESU5HOlxuICAgIGNhc2UgUkVTRVRfTE9BRElORzpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBsb2FkaW5nOiBmYWxzZSB9O1xuICAgIGNhc2UgUkVTRVRfQVBJX0VSUk9SOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGFwaUVycm9yOiBudWxsIH07XG4gICAgY2FzZSBSRVNFVF9GSUxURVI6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgZmlsdGVyOiBERUZBVUxUX0ZJTFRFUl9TVEFURSxcbiAgICAgICAgYWN0aXZlRmlsdGVyc0NvdW50OiAwLFxuICAgICAgICBzb3J0OiB7fSxcbiAgICAgICAgb3JkZXJzX2N1cnJlbnRfcGFnZTogMSxcbiAgICAgICAgb3JkZXJzX2xhc3RfcGFnZTogMSxcbiAgICAgICAgbG9hZGluZzogdHJ1ZVxuICAgICAgfTtcbiAgICBjYXNlIFNFVF9TVEFURTpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCAuLi5wYXlsb2FkIH07XG4gICAgY2FzZSBTRVRfQVBJX0VSUk9SOiB7XG4gICAgICBjb25zdCB7IHRpdGxlLCBodG1sOiBib2R5IH0gPSBwYXlsb2FkO1xuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGFwaUVycm9yOiB7IHRpdGxlLCBib2R5IH0gfTtcbiAgICB9XG4gICAgY2FzZSBTRVRfVVNFUjpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCB1c2VyOiBwYXlsb2FkIH07XG4gICAgY2FzZSBDSEFOR0VfRklMVEVSOiB7XG4gICAgICBjb25zdCBuZXdGaWx0ZXJzID0geyAuLi5zdGF0ZS5maWx0ZXIsIC4uLnBheWxvYWQgfTtcbiAgICAgIGNvbnN0IG5ld0FjdGl2ZUNvdW50ID0gY2FsY3VsYXRlQWN0aXZlRmlsdGVycyhuZXdGaWx0ZXJzKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBmaWx0ZXI6IHsgLi4uc3RhdGUuZmlsdGVyLCAuLi5wYXlsb2FkIH0sXG4gICAgICAgIGFjdGl2ZUZpbHRlcnNDb3VudDogbmV3QWN0aXZlQ291bnRcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgQ0hBTkdFX1NPUlQ6IHtcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBzb3J0OiB7IC4uLnBheWxvYWQgfSB9O1xuICAgIH1cbiAgICBjYXNlIEdFVF9VU0VSX09SREVSUzoge1xuICAgICAgY29uc3QgeyBkYXRhLCB0b3RhbCwgY3VycmVudF9wYWdlLCBsYXN0X3BhZ2UgfSA9IHBheWxvYWQucmVzcG9uc2U7XG5cbiAgICAgIGlmIChoYXNMb2FkZWRBbGxEYXRhKGN1cnJlbnRfcGFnZSwgc3RhdGUubWVtYmVyT3JkZXJzLCB0b3RhbCkpXG4gICAgICAgIHJldHVybiBzdGF0ZTtcblxuICAgICAgY29uc3QgbWVtYmVyT3JkZXJzID1cbiAgICAgICAgY3VycmVudF9wYWdlID09PSBGSVJTVF9QQUdFID8gZGF0YSA6IFsuLi5zdGF0ZS5tZW1iZXJPcmRlcnMsIC4uLmRhdGFdO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgbWVtYmVyT3JkZXJzLFxuICAgICAgICBvcmRlcnNfdG90YWw6IHRvdGFsLFxuICAgICAgICBvcmRlcnNfY3VycmVudF9wYWdlOiBjdXJyZW50X3BhZ2UsXG4gICAgICAgIG9yZGVyc19sYXN0X3BhZ2U6IGxhc3RfcGFnZVxuICAgICAgfTtcbiAgICB9XG4gICAgY2FzZSBHRVRfTVlfQVNTSUdORURfVElDS0VUUzoge1xuICAgICAgY29uc3QgeyBkYXRhLCB0b3RhbCwgY3VycmVudF9wYWdlLCBsYXN0X3BhZ2UgfSA9IHBheWxvYWQucmVzcG9uc2U7XG5cbiAgICAgIGlmIChoYXNMb2FkZWRBbGxEYXRhKGN1cnJlbnRfcGFnZSwgc3RhdGUudXNlclRpY2tldHMsIHRvdGFsKSlcbiAgICAgICAgcmV0dXJuIHN0YXRlO1xuXG4gICAgICBjb25zdCB1c2VyVGlja2V0cyA9XG4gICAgICAgIGN1cnJlbnRfcGFnZSA9PT0gRklSU1RfUEFHRSA/IGRhdGEgOiBbLi4uc3RhdGUudXNlclRpY2tldHMsIC4uLmRhdGFdO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgdXNlclRpY2tldHMsXG4gICAgICAgIHVzZXJfdGlja2V0c190b3RhbDogdG90YWwsXG4gICAgICAgIHVzZXJfdGlja2V0c19jdXJyZW50X3BhZ2U6IGN1cnJlbnRfcGFnZSxcbiAgICAgICAgdXNlcl90aWNrZXRzX2xhc3RfcGFnZTogbGFzdF9wYWdlXG4gICAgICB9O1xuICAgIH1cbiAgICBjYXNlIEdFVF9USUNLRVRTX0JZX09SREVSOiB7XG4gICAgICBjb25zdCB7IG1lbWJlck9yZGVycyB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7IGRhdGEsIHRvdGFsLCBjdXJyZW50X3BhZ2UsIGxhc3RfcGFnZSB9ID0gcGF5bG9hZC5yZXNwb25zZTtcbiAgICAgIGNvbnN0IGZvcm1lck9yZGVyID0gbWVtYmVyT3JkZXJzLmZpbmQoKG8pID0+IG8uaWQgPT09IGRhdGFbMF0/Lm9yZGVyX2lkKTtcblxuICAgICAgY29uc3QgbmV3T3JkZXJzID0gbWVtYmVyT3JkZXJzLm1hcCgobW8pID0+IHtcbiAgICAgICAgaWYgKG1vLmlkICE9PSBkYXRhWzBdPy5vcmRlcl9pZCkgcmV0dXJuIG1vO1xuICAgICAgICBjb25zdCBuZXdUaWNrZXRzID1cbiAgICAgICAgICBjdXJyZW50X3BhZ2UgPT09IEZJUlNUX1BBR0VcbiAgICAgICAgICAgID8gZGF0YVxuICAgICAgICAgICAgOiBbLi4uZm9ybWVyT3JkZXIubWVtYmVyVGlja2V0cywgLi4uZGF0YV07XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4ubW8sXG4gICAgICAgICAgbWVtYmVyVGlja2V0czogbmV3VGlja2V0cyxcbiAgICAgICAgICB0aWNrZXRzX3BhZ2VfY3VycmVudDogY3VycmVudF9wYWdlLFxuICAgICAgICAgIHRpY2tldHNfcGFnZV9sYXN0OiBsYXN0X3BhZ2UsXG4gICAgICAgICAgdGlja2V0c190b3RhbDogdG90YWxcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgbWVtYmVyT3JkZXJzOiBuZXdPcmRlcnNcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgVVBEQVRFX1RJQ0tFVFNfUkVGVU5EX1JFUVVFU1RFRDoge1xuICAgICAgY29uc3QgeyBtZW1iZXJPcmRlcnMgfSA9IHN0YXRlO1xuICAgICAgY29uc3QgdGlja2V0c1JlZnVuZFJlcXVlc3RlZCA9IHBheWxvYWQ7XG4gICAgICBjb25zdCBvcmRlciA9IG1lbWJlck9yZGVycy5maW5kKFxuICAgICAgICAobykgPT4gby5pZCA9PT0gdGlja2V0c1JlZnVuZFJlcXVlc3RlZFswXT8ub3JkZXJfaWRcbiAgICAgICk7XG4gICAgICBjb25zdCB1cGRhdGVkVGlja2V0cyA9IG9yZGVyPy5tZW1iZXJUaWNrZXRzLm1hcChcbiAgICAgICAgKHRpY2tldCkgPT5cbiAgICAgICAgICB0aWNrZXRzUmVmdW5kUmVxdWVzdGVkLmZpbmQoKHRycikgPT4gdHJyLmlkID09PSB0aWNrZXQuaWQpIHx8IHRpY2tldFxuICAgICAgKTtcbiAgICAgIGNvbnN0IHVwZGF0ZWRPcmRlciA9IHtcbiAgICAgICAgLi4ub3JkZXIsXG4gICAgICAgIG1lbWJlclRpY2tldHM6IHVwZGF0ZWRUaWNrZXRzXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIG1lbWJlck9yZGVyczogbWVtYmVyT3JkZXJzLm1hcCgobW8pID0+XG4gICAgICAgICAgbW8uaWQgPT09IHVwZGF0ZWRPcmRlci5pZCA/IHVwZGF0ZWRPcmRlciA6IG1vXG4gICAgICAgIClcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgUkVTRVRfVElDS0VUOiB7XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgY3VycmVudFRpY2tldDogbnVsbCB9O1xuICAgIH1cbiAgICBjYXNlIFJFQ0VJVkVfVElDS0VUOiB7XG4gICAgICBjb25zdCB0aWNrZXQgPSBwYXlsb2FkLnJlc3BvbnNlO1xuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGN1cnJlbnRUaWNrZXQ6IHRpY2tldCB9O1xuICAgIH1cbiAgICBjYXNlIFJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TOiB7XG4gICAgICBjb25zdCB7IGRhdGEgfSA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgZXh0cmFRdWVzdGlvbnM6IGRhdGEgfTtcbiAgICB9XG4gICAgY2FzZSBSRU1PVkVfVElDS0VUX0FUVEVOREVFOlxuICAgIGNhc2UgVVBEQVRFX1RJQ0tFVDoge1xuICAgICAgY29uc3QgdGlja2V0RGF0YSA9IHBheWxvYWQucmVzcG9uc2U7XG5cbiAgICAgIGNvbnN0IG5ld09yZGVycyA9IHN0YXRlLm1lbWJlck9yZGVycy5tYXAoKG9yZGVyKSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld1RpY2tldHMgPSB1cGRhdGVUaWNrZXRDb2xsZWN0aW9uKFxuICAgICAgICAgIG9yZGVyLm1lbWJlclRpY2tldHMsXG4gICAgICAgICAgdGlja2V0RGF0YVxuICAgICAgICApO1xuICAgICAgICByZXR1cm4geyAuLi5vcmRlciwgbWVtYmVyVGlja2V0czogbmV3VGlja2V0cyB9O1xuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IG5ld1VzZXJUaWNrZXRzID0gdXBkYXRlVGlja2V0Q29sbGVjdGlvbihcbiAgICAgICAgc3RhdGUudXNlclRpY2tldHMsXG4gICAgICAgIHRpY2tldERhdGFcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBtZW1iZXJPcmRlcnM6IG5ld09yZGVycywgdXNlclRpY2tldHM6IG5ld1VzZXJUaWNrZXRzIH07XG4gICAgfVxuICAgIGNhc2UgREVMRUdBVEVfVElDS0VUOlxuICAgIGNhc2UgQVNTSUdOX1RJQ0tFVDoge1xuICAgICAgY29uc3QgdGlja2V0RGF0YSA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICBjb25zdCBuZXdPcmRlcnMgPSBzdGF0ZS5tZW1iZXJPcmRlcnMubWFwKChvcmRlcikgPT4ge1xuICAgICAgICBjb25zdCBuZXdUaWNrZXRzID0gdXBkYXRlVGlja2V0Q29sbGVjdGlvbihcbiAgICAgICAgICBvcmRlci5tZW1iZXJUaWNrZXRzLFxuICAgICAgICAgIHRpY2tldERhdGFcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHsgLi4ub3JkZXIsIG1lbWJlclRpY2tldHM6IG5ld1RpY2tldHMgfTtcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBuZXdVc2VyVGlja2V0cyA9IHVwZGF0ZVRpY2tldENvbGxlY3Rpb24oXG4gICAgICAgIHN0YXRlLnVzZXJUaWNrZXRzLFxuICAgICAgICB0aWNrZXREYXRhXG4gICAgICApO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgY3VycmVudFRpY2tldDogdGlja2V0RGF0YSxcbiAgICAgICAgbWVtYmVyT3JkZXJzOiBuZXdPcmRlcnMsXG4gICAgICAgIHVzZXJUaWNrZXRzOiBuZXdVc2VyVGlja2V0c1xuICAgICAgfTtcbiAgICB9XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBzdGF0ZTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgV2lkZ2V0UmVkdWNlcjtcbiIsImltcG9ydCB7IHVzZU1lbW8gfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IGNvbmZpZ3VyZVN0b3JlIH0gZnJvbSBcIkByZWR1eGpzL3Rvb2xraXRcIjtcbmltcG9ydCB7XG4gIHBlcnNpc3RTdG9yZSxcbiAgcGVyc2lzdFJlZHVjZXIsXG4gIEZMVVNILFxuICBSRUhZRFJBVEUsXG4gIFBBVVNFLFxuICBQRVJTSVNULFxuICBQVVJHRSxcbiAgUkVHSVNURVJcbn0gZnJvbSBcInJlZHV4LXBlcnNpc3RcIjtcbmltcG9ydCBzdG9yYWdlIGZyb20gXCJyZWR1eC1wZXJzaXN0L2xpYi9zdG9yYWdlXCI7XG5pbXBvcnQgeyBjb21iaW5lUmVkdWNlcnMgfSBmcm9tIFwicmVkdXhcIjtcbmltcG9ydCBXaWRnZXRSZWR1Y2VyIGZyb20gXCIuL3JlZHVjZXJcIjtcblxuZXhwb3J0IGNvbnN0IGdldFN0b3JlID0gKHtcbiAgY2xpZW50SWQsXG4gIGxvZ2luVXJsLFxuICBzdW1taXQsXG4gIGFwaUJhc2VVcmwsXG4gIHJlY2VpcHRTZXR0aW5ncyxcbiAgdXBkYXRlUHJvZmlsZVxufSkgPT4ge1xuICAvLyB0byBhZGQgb3RoZXIgcmVkdWNlcnMgbGF0ZXJcbiAgY29uc3QgcmVkdWNlcnMgPSBjb21iaW5lUmVkdWNlcnMoe1xuICAgIHdpZGdldFN0YXRlOiBXaWRnZXRSZWR1Y2VyXG4gIH0pO1xuXG4gIGNvbnN0IHN0b3JlID0gY29uZmlndXJlU3RvcmUoe1xuICAgIHJlZHVjZXI6IHBlcnNpc3RSZWR1Y2VyKFxuICAgICAge1xuICAgICAgICBrZXk6IGByb290X215X29yZGVyc190aWNrZXRzXyR7Y2xpZW50SWR9YCxcbiAgICAgICAgc3RvcmFnZVxuICAgICAgfSxcbiAgICAgIHJlZHVjZXJzXG4gICAgKSxcbiAgICBtaWRkbGV3YXJlOiAoZ2V0RGVmYXVsdE1pZGRsZXdhcmUpID0+XG4gICAgICBnZXREZWZhdWx0TWlkZGxld2FyZSh7XG4gICAgICAgIHRodW5rOiB7XG4gICAgICAgICAgZXh0cmFBcmd1bWVudDoge1xuICAgICAgICAgICAgY2xpZW50SWQsXG4gICAgICAgICAgICBhcGlCYXNlVXJsLFxuICAgICAgICAgICAgcmVjZWlwdFNldHRpbmdzLFxuICAgICAgICAgICAgc3VtbWl0LFxuICAgICAgICAgICAgbG9naW5VcmwsXG4gICAgICAgICAgICB1cGRhdGVQcm9maWxlXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBpbW11dGFibGVDaGVjazogZmFsc2UsXG4gICAgICAgIHNlcmlhbGl6YWJsZUNoZWNrOiB7XG4gICAgICAgICAgaWdub3JlZEFjdGlvbnM6IFtGTFVTSCwgUkVIWURSQVRFLCBQQVVTRSwgUEVSU0lTVCwgUFVSR0UsIFJFR0lTVEVSXVxuICAgICAgICB9XG4gICAgICB9KVxuICB9KTtcblxuICByZXR1cm4gc3RvcmU7XG59O1xuXG5leHBvcnQgY29uc3QgdXNlSW5pdFN0b3JlID0gKGNvbmZpZykgPT4ge1xuICBjb25zdCBzdG9yZSA9IHVzZU1lbW8oKCkgPT4gZ2V0U3RvcmUoY29uZmlnKSwgW10pO1xuICBjb25zdCBwZXJzaXN0b3IgPSB1c2VNZW1vKCgpID0+IHBlcnNpc3RTdG9yZShzdG9yZSksIFtzdG9yZV0pO1xuXG4gIHJldHVybiB7XG4gICAgc3RvcmUsXG4gICAgcGVyc2lzdG9yXG4gIH07XG59O1xuIiwiaW1wb3J0IHtcbiAgaW5pdExvZ091dCxcbiAgZ2V0QWNjZXNzVG9rZW5cbn0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvbWV0aG9kc1wiO1xuaW1wb3J0ICogYXMgU2VudHJ5IGZyb20gXCJAc2VudHJ5L3JlYWN0XCI7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuY29uc3QgZ2V0QWNjZXNzVG9rZW5Nb2NrID0gKCkgPT4ge1xuICB0aHJvdyBuZXcgRXJyb3IoXCJBY2Nlc3MgdG9rZW4gZXJyb3JcIik7XG4gIC8vIHJldHVybiBhdXRoUHJvbWlzZVJlamVjdCgpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEFjY2Vzc1Rva2VuU2FmZWx5ID0gYXN5bmMgKCkgPT4ge1xuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBnZXRBY2Nlc3NUb2tlbigpLmNhdGNoKChlKSA9PiB7XG4gICAgICBjb25zb2xlLmxvZyhcIm15LW9yZGVycy10aWNrZXRzLXdpZGdldDo6Z2V0QWNjZXNzVG9rZW5TYWZlbHkgZXJyb3I6IFwiLCBlKTtcbiAgICAgIFNlbnRyeS5jYXB0dXJlRXhjZXB0aW9uKGUpO1xuICAgICAgaW5pdExvZ091dCgpO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zb2xlLmxvZyhcIm15LW9yZGVycy10aWNrZXRzLXdpZGdldDo6Z2V0QWNjZXNzVG9rZW5TYWZlbHkgZXJyb3I6IFwiLCBlKTtcbiAgICBTZW50cnkuY2FwdHVyZUV4Y2VwdGlvbihlKTtcbiAgICBpbml0TG9nT3V0KCk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBhdXRoUHJvbWlzZVJlamVjdCA9IGFzeW5jICgpID0+XG4gIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcIkF1dGggVG9rZW4gZXJyb3JcIikpO1xuIiwiZXhwb3J0IGNvbnN0IExBU1RfSE9VUl9PRl8yNF9IT1VSID0gMjM7XG5leHBvcnQgY29uc3QgTEFTVF9NSU5VVEVfT0ZfSE9VUiA9IDU5O1xuZXhwb3J0IGNvbnN0IE9ORV9QQUdFX05FWFQgPSAxO1xuZXhwb3J0IGNvbnN0IE1JTExJU0VDX1RPX1NFQyA9IDEwMDA7XG5leHBvcnQgY29uc3QgT05FX0RBWSA9IDE7XG5leHBvcnQgY29uc3QgREVGQVVMVF9JVEVNU19QRVJfUEFHRSA9IDU7XG5leHBvcnQgY29uc3QgRklSU1RfUEFHRSA9IDE7XG5leHBvcnQgY29uc3QgUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UID0gNTtcbmV4cG9ydCBjb25zdCBTVEVQX09ORSA9IDE7XG5leHBvcnQgY29uc3QgU1RFUF9UV08gPSAyO1xuZXhwb3J0IGNvbnN0IFNURVBfVEhSRUUgPSAzO1xuZXhwb3J0IGNvbnN0IE1JTl9SRVFVSVJFRCA9IDE7XG5cbmV4cG9ydCBjb25zdCBTVEFUVVNfQ09NUExFVEUgPSBcIlNUQVRVU19DT01QTEVURVwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19JTkNPTVBMRVRFID0gXCJTVEFUVVNfSU5DT01QTEVURVwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19QRU5ESU5HID0gXCJTVEFUVVNfUEVORElOR1wiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19DQU5DRUxMRUQgPSBcIlNUQVRVU19DQU5DRUxMRURcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfRVJST1IgPSBcIlNUQVRVU19FUlJPUlwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19QUk9DRVNTSU5HID0gXCJTVEFUVVNfUFJPQ0VTU0lOR1wiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19VTkFTU0lHTkVEID0gXCJTVEFUVVNfVU5BU1NJR05FRFwiO1xuXG5leHBvcnQgY29uc3QgU1RBVFVTX1JFRlVORF9QRU5ESU5HID0gXCJTVEFUVVNfUkVGVU5EX1BFTkRJTkdcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfUkVGVU5EX0FQUFJPVkVEID0gXCJTVEFUVVNfUkVGVU5EX0FQUFJPVkVEXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1JFRlVORF9SRUpFQ1RFRCA9IFwiU1RBVFVTX1JFRlVORF9SRUpFQ1RFRFwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19SRUZVTkRfUEVORElOR19MQyA9IFwiUmVxdWVzdGVkXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1JFRlVORF9BUFBST1ZFRF9MQyA9IFwiQXBwcm92ZWRcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfUkVGVU5EX1JFSkVDVEVEX0xDID0gXCJSZWplY3RlZFwiO1xuXG5leHBvcnQgY29uc3QgSkVTVF9USU1FT1VUX0lOX01JTExJU0VDID0gMTAwMDA7XG5cbmV4cG9ydCBjb25zdCBPTkVfSVRFTSA9IDE7XG5leHBvcnQgY29uc3QgVFdPX0lURU0gPSAyO1xuZXhwb3J0IGNvbnN0IEZJVkVfSVRFTSA9IDU7XG5leHBvcnQgY29uc3QgU0lYX0lURU0gPSA2O1xuXG5leHBvcnQgY29uc3QgUFJPTUlTRV9CQVRDSF9MSU1JVCA9IDEwO1xuZXhwb3J0IGNvbnN0IEZJRlRZX1BFUl9QQUdFID0gNTA7XG5cbmV4cG9ydCBjb25zdCBFUlJPUl9DT0RFUyA9IHtcbiAgNDAxOiA0MDEsXG4gIDQwMzogNDAxLFxuICA0MTI6IDQwMSxcbiAgNTAwOiA1MDBcbn07XG5cbmV4cG9ydCBjb25zdCBUQUJTID0ge1xuICBPUkRFUlM6IFwiT1JERVJTXCIsXG4gIFRJQ0tFVFM6IFwiVElDS0VUU1wiXG59O1xuXG5leHBvcnQgY29uc3QgT05FX1JFVFJZID0gMTtcblxuZXhwb3J0IGNvbnN0IEZJTFRFUl9BQ1RJT04gPSB7XG4gIE9SREVSUzogXCJPUkRFUlNcIixcbiAgRVhURVJOQUxfVElDS0VUUzogXCJFWFRFUk5BTF9USUNLRVRTXCIsXG4gIFRJQ0tFVFNfQllfT1JERVJTOiBcIlRJQ0tFVFNfQllfT1JERVJTXCJcbn07XG5cbmV4cG9ydCBjb25zdCBUSUNLRVRfRFJBV0VSX0lEID0gXCJ0aWNrZXREcmF3ZXJcIjtcbiIsImltcG9ydCBtb21lbnQgZnJvbSBcIm1vbWVudC10aW1lem9uZVwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2ggfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7XG4gIExBU1RfSE9VUl9PRl8yNF9IT1VSLFxuICBMQVNUX01JTlVURV9PRl9IT1VSLFxuICBNSUxMSVNFQ19UT19TRUMsXG4gIEZJUlNUX1BBR0Vcbn0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBjb25zdCBmb3JtYXRDdXJyZW5jeSA9ICh2YWx1ZSwgeyBsb2NhbGUgPSBcImVuLVVTXCIsIC4uLm9wdGlvbnMgfSkgPT4ge1xuICBjb25zdCBkZWZhdWx0T3B0aW9ucyA9IHtcbiAgICBjdXJyZW5jeTogXCJVU0RcIixcbiAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsXG4gICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyXG4gIH07XG5cbiAgY29uc3QgZm9ybWF0dGVyID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KGxvY2FsZSwge1xuICAgIHN0eWxlOiBcImN1cnJlbmN5XCIsXG4gICAgLi4uZGVmYXVsdE9wdGlvbnMsXG4gICAgLi4ub3B0aW9uc1xuICB9KTtcblxuICByZXR1cm4gZm9ybWF0dGVyLmZvcm1hdCh2YWx1ZSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Rm9ybWF0dGVkRGF0ZSA9IChkYXRldGltZSwgdGltZVpvbmUpID0+IHtcbiAgaWYgKHRpbWVab25lKVxuICAgIHJldHVybiBtb21lbnRcbiAgICAgIC50eihkYXRldGltZSAqIE1JTExJU0VDX1RPX1NFQywgdGltZVpvbmUpXG4gICAgICAuZm9ybWF0KFwiTU1NTSBERCwgWVlZWVwiKTtcblxuICByZXR1cm4gbW9tZW50LnVuaXgoZGF0ZXRpbWUpLmZvcm1hdChcIk1NTU0gREQsIFlZWVlcIik7XG59O1xuXG5leHBvcnQgY29uc3QgY2FsY3VsYXRlT3JkZXJUb3RhbHMgPSAoeyBvcmRlciwgc3VtbWl0IH0pID0+IHtcbiAgaWYgKCFvcmRlciB8fCAhc3VtbWl0KSByZXR1cm4ge307XG4gIGNvbnN0IHRpY2tldHMgPSBvcmRlcj8ubWVtYmVyVGlja2V0cztcbiAgaWYgKCF0aWNrZXRzKSByZXR1cm4ge307XG5cbiAgY29uc3QgeyByZWZ1bmRlZF9hbW91bnQsIGRpc2NvdW50X2Ftb3VudCwgYW1vdW50LCByYXdfYW1vdW50IH0gPSBvcmRlcjtcbiAgY29uc3QgeyB0aWNrZXRfdHlwZXMgfSA9IHN1bW1pdDtcblxuICBjb25zdCBjdXJyZW5jeU9iamVjdCA9IHsgY3VycmVuY3k6IG9yZGVyLmN1cnJlbmN5IH07XG5cbiAgY29uc3QgdGF4ZXNTdW1tYXJ5ID0gW107XG4gIGNvbnN0IHRpY2tldFN1bW1hcnkgPSBbXTtcbiAgbGV0IHB1cmNoYXNlVGlja2V0VG90YWwgPSAwO1xuXG4gIE9iamVjdC5rZXlzKG9yZGVyLnRpY2tldHNfZXhjZXJwdF9ieV90aWNrZXRfdHlwZSkubWFwKCh0aWNrZXQpID0+IHtcbiAgICBjb25zdCB0aWNrZXRUeXBlID0gdGlja2V0X3R5cGVzPy5maW5kKCh0dCkgPT4gdHQubmFtZSA9PT0gdGlja2V0KTtcbiAgICBpZiAoIXRpY2tldFR5cGUpIHJldHVybiBudWxsO1xuICAgIHRpY2tldFN1bW1hcnkucHVzaCh7XG4gICAgICB0aWNrZXRfdHlwZV9pZDogdGlja2V0VHlwZS5pZCxcbiAgICAgIHRpY2tldF90eXBlOiB0aWNrZXRUeXBlLFxuICAgICAgbmFtZTogdGlja2V0LFxuICAgICAgcXR5OiBvcmRlci50aWNrZXRzX2V4Y2VycHRfYnlfdGlja2V0X3R5cGVbdGlja2V0XVxuICAgIH0pO1xuICAgIHB1cmNoYXNlVGlja2V0VG90YWwgKz1cbiAgICAgIHRpY2tldFR5cGUuY29zdCAqIG9yZGVyLnRpY2tldHNfZXhjZXJwdF9ieV90aWNrZXRfdHlwZVt0aWNrZXRdO1xuXG4gICAgcmV0dXJuIHRpY2tldFN1bW1hcnk7XG4gIH0pO1xuXG4gIG9yZGVyPy5hcHBsaWVkX3RheGVzPy5mb3JFYWNoKCh0YXgpID0+IHtcbiAgICBjb25zdCBmb3JtYXR0ZWRUYXggPSB7XG4gICAgICAuLi50YXgsXG4gICAgICBhbW91bnQ6IGZvcm1hdEN1cnJlbmN5KHRheC5hbW91bnQsIGN1cnJlbmN5T2JqZWN0KVxuICAgIH07XG4gICAgdGF4ZXNTdW1tYXJ5LnB1c2goZm9ybWF0dGVkVGF4KTtcbiAgfSk7XG5cbiAgY29uc3QgcHVyY2hhc2VUb3RhbCA9IGZvcm1hdEN1cnJlbmN5KHB1cmNoYXNlVGlja2V0VG90YWwsIGN1cnJlbmN5T2JqZWN0KTtcblxuICBjb25zdCBkaXNjb3VudFRvdGFsID0gZm9ybWF0Q3VycmVuY3koZGlzY291bnRfYW1vdW50LCBjdXJyZW5jeU9iamVjdCk7XG4gIGNvbnN0IHJlZnVuZFRvdGFsID0gZm9ybWF0Q3VycmVuY3kocmVmdW5kZWRfYW1vdW50LCBjdXJyZW5jeU9iamVjdCk7XG4gIGNvbnN0IHN1YlRvdGFsID0gZm9ybWF0Q3VycmVuY3kocmF3X2Ftb3VudCwgY3VycmVuY3lPYmplY3QpO1xuICBjb25zdCBhbW91bnRUb3RhbCA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvcmRlciwgXCJhbW91bnRcIilcbiAgICA/IGZvcm1hdEN1cnJlbmN5KGFtb3VudCwgY3VycmVuY3lPYmplY3QpXG4gICAgOiBmb3JtYXRDdXJyZW5jeShwdXJjaGFzZVRvdGFsLCBjdXJyZW5jeU9iamVjdCk7XG5cbiAgcmV0dXJuIHtcbiAgICBkaXNjb3VudFRvdGFsLFxuICAgIHJlZnVuZFRvdGFsLFxuICAgIHN1YlRvdGFsLFxuICAgIGFtb3VudFRvdGFsLFxuICAgIHRpY2tldFN1bW1hcnksXG4gICAgdGF4ZXNTdW1tYXJ5XG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0T3JkZXJUaWNrZXRzID0gKG1lbWJlck9yZGVycywgb3JkZXJJZCkgPT4ge1xuICBjb25zdCBvcmRlcnMgPSBtZW1iZXJPcmRlcnMuZmlsdGVyKChvKSA9PiBvLmlkID09PSBvcmRlcklkKTtcbiAgcmV0dXJuIG9yZGVyc1swXT8ubWVtYmVyVGlja2V0cztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRFcG9jaExvd2VyVXBwZXJJblNlY29uZHMgPSAodHMpID0+IHtcbiAgY29uc3QgbG93ZXIgPSB0cy5zZXRIb3VycygwLCAwLCAwLCAwKSAvIE1JTExJU0VDX1RPX1NFQztcbiAgY29uc3QgdXBwZXIgPVxuICAgIHRzLnNldEhvdXJzKExBU1RfSE9VUl9PRl8yNF9IT1VSLCBMQVNUX01JTlVURV9PRl9IT1VSLCAwLCAwKSAvXG4gICAgTUlMTElTRUNfVE9fU0VDO1xuICByZXR1cm4ge1xuICAgIGxvd2VyLFxuICAgIHVwcGVyXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdEN1cnJlbnRUaW1lID0gKCkgPT5cbiAgTWF0aC5yb3VuZCgrbmV3IERhdGUoKSAvIE1JTExJU0VDX1RPX1NFQyk7XG5cbmV4cG9ydCBjb25zdCBnZXROb3cgPSAoKSA9PiAoZGlzcGF0Y2gsIGdldFN0YXRlKSA9PiB7XG4gIGNvbnN0IHsgdGltZXJTdGF0ZSB9ID0gZ2V0U3RhdGUoKTtcbiAgcmV0dXJuIHRpbWVyU3RhdGU/Lm5vd1V0YyA9PSBudWxsID8gZGVmYXVsdEN1cnJlbnRUaW1lKCkgOiB0aW1lclN0YXRlPy5ub3dVdGM7XG59O1xuXG5leHBvcnQgY29uc3QgdXNlTm93ID0gKCkgPT4ge1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG5cbiAgcmV0dXJuIGRpc3BhdGNoKGdldE5vdygpKTtcbn07XG5cbi8qKlxuICogQHBhcmFtIGN1cnJlbnRQYWdlXG4gKiBAcGFyYW0gZGF0YVxuICogQHBhcmFtIHRvdGFsXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZXhwb3J0IGNvbnN0IGhhc0xvYWRlZEFsbERhdGEgPSAoY3VycmVudFBhZ2UsIGRhdGEsIHRvdGFsKSA9PiB7XG4gIGxldCByZXMgPSBmYWxzZTtcbiAgY29uc3QgZGF0YUxlbmd0aCA9IEFycmF5LmlzQXJyYXkoZGF0YSkgPyBkYXRhLmxlbmd0aCA6IDA7XG4gIC8vIHdlIGFscmVhZHkgbG9hZGVkIGFsbCAgZGF0YSAoIGZpcnN0IHBhZ2UgaXMgYWx3YXlzIHJlbG9hZGVkIGl0IClcbiAgaWYgKGN1cnJlbnRQYWdlID4gRklSU1RfUEFHRSAmJiBkYXRhTGVuZ3RoID4gMCAmJiBkYXRhTGVuZ3RoID09PSB0b3RhbClcbiAgICByZXMgPSB0cnVlO1xuICByZXR1cm4gcmVzO1xufTtcblxuZXhwb3J0IGNvbnN0IGNhbGN1bGF0ZUFjdGl2ZUZpbHRlcnMgPSAoZmlsdGVycykgPT4ge1xuICBsZXQgY291bnQgPSAwO1xuICBPYmplY3QuZW50cmllcyhmaWx0ZXJzKS5mb3JFYWNoKChbLCB2YWx1ZV0pID0+IHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIGNvdW50ICs9IHZhbHVlLmxlbmd0aDtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiAmJiB2YWx1ZS50cmltKCkgIT09IFwiXCIpIHtcbiAgICAgIGNvdW50Kys7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIgJiYgdmFsdWUgPiAwKSB7XG4gICAgICBjb3VudCsrO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBjb3VudDtcbn07XG4iLCJpbXBvcnQgbW9tZW50IGZyb20gXCJtb21lbnQtdGltZXpvbmVcIjtcbmltcG9ydCB7IE1JTExJU0VDX1RPX1NFQywgT05FX0RBWSB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgdXNlTm93IH0gZnJvbSBcIi5cIjtcblxuZXhwb3J0IGNvbnN0IGNoZWNrU3VtbWl0UGFzdCA9IChzdW1taXQsIG5vdykgPT4ge1xuICBpZiAoIXN1bW1pdCkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3QgcmVhc3NpZ25fZGF0ZSA9XG4gICAgc3VtbWl0Py5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlICYmXG4gICAgc3VtbWl0LnJlYXNzaWduX3RpY2tldF90aWxsX2RhdGUgPCBzdW1taXQuZW5kX2RhdGVcbiAgICAgID8gc3VtbWl0LnJlYXNzaWduX3RpY2tldF90aWxsX2RhdGVcbiAgICAgIDogc3VtbWl0LmVuZF9kYXRlO1xuXG4gIHJldHVybiBub3cgPiByZWFzc2lnbl9kYXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IGNoZWNrU3VtbWl0U3RhcnRlZCA9IChzdW1taXQsIG5vdykgPT4ge1xuICBpZiAoIXN1bW1pdCkgcmV0dXJuIG51bGw7XG5cbiAgcmV0dXJuIHN1bW1pdC5zdGFydF9kYXRlIDwgbm93O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFN1bW1pdERheXNEaWZmID0gKHN1bW1pdCkgPT4ge1xuICBpZiAoIXN1bW1pdCkgcmV0dXJuIG51bGw7XG4gIGNvbnN0IHN0YXJ0RGF5ID0gbW9tZW50KHN1bW1pdC5zdGFydF9kYXRlICogTUlMTElTRUNfVE9fU0VDKS50eihcbiAgICBzdW1taXQudGltZV96b25lX2lkXG4gICk7XG4gIGNvbnN0IGVuZERheSA9IG1vbWVudChzdW1taXQuZW5kX2RhdGUgKiBNSUxMSVNFQ19UT19TRUMpLnR6KFxuICAgIHN1bW1pdC50aW1lX3pvbmVfaWRcbiAgKTtcbiAgY29uc3QgZGF5cyA9IGVuZERheT8uZGlmZihzdGFydERheSwgXCJkYXlzXCIpO1xuICByZXR1cm4ge1xuICAgIHN0YXJ0RGF5LFxuICAgIGVuZERheSxcbiAgICBkYXlzXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U3VtbWl0Rm9ybWF0dGVkRGF0ZSA9IChzdW1taXQpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuICBjb25zdCB7IHN0YXJ0RGF5LCBlbmREYXksIGRheXMgfSA9IGdldFN1bW1pdERheXNEaWZmKHN1bW1pdCk7XG4gIGlmICghc3RhcnREYXkgfHwgIWVuZERheSkgcmV0dXJuIG51bGw7XG4gIGxldCBmb3JtYXRTdGFydERhdGUgPSBcIk1NTU0gREQsIFlZWVlcIjtcbiAgbGV0IGZvcm1hdEVuZERhdGUgPSBcIk1NTU0gREQsIFlZWVlcIjtcbiAgaWYgKHN0YXJ0RGF5LnllYXIoKSA9PT0gZW5kRGF5LnllYXIoKSkgZm9ybWF0U3RhcnREYXRlID0gXCJNTU1NIEREXCI7XG4gIGlmIChzdGFydERheS5tb250aCgpID09PSBlbmREYXkubW9udGgoKSkgZm9ybWF0RW5kRGF0ZSA9IFwiREQsIFlZWVlcIjtcblxuICBjb25zdCBzdGFydERhdGUgPSBzdGFydERheS5mb3JtYXQoZm9ybWF0U3RhcnREYXRlKTtcbiAgY29uc3QgZW5kRGF0ZSA9IGVuZERheS5mb3JtYXQoZm9ybWF0RW5kRGF0ZSk7XG5cbiAgaWYgKGRheXMgPiBPTkVfREFZKSByZXR1cm4gYCR7c3RhcnREYXRlfSAtICR7ZW5kRGF0ZX1gO1xuXG4gIHJldHVybiBzdGFydERhdGU7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U3VtbWl0TG9jYXRpb24gPSAoc3VtbWl0KSA9PiB7XG4gIGlmICghc3VtbWl0KSByZXR1cm4gbnVsbDtcblxuICBjb25zdCBsb2NhdGlvbiA9IHN1bW1pdC5sb2NhdGlvbnM/LmZpbmQoXG4gICAgKGwpID0+IGwuY2xhc3NfbmFtZSA9PT0gXCJTdW1taXRWZW51ZVwiICYmIGwuaXNfbWFpbiA9PT0gdHJ1ZVxuICApO1xuXG4gIGlmICghbG9jYXRpb24pIHJldHVybiBudWxsO1xuXG4gIHJldHVybiBgJHtsb2NhdGlvbi5jaXR5fSwgJHtsb2NhdGlvbi5jb3VudHJ5fWA7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U3VtbWl0UmVhc3NpZ25EYXRlID0gKHN1bW1pdCkgPT4ge1xuICBpZiAoIXN1bW1pdCkgcmV0dXJuIG51bGw7XG5cbiAgcmV0dXJuIHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlICYmXG4gICAgc3VtbWl0LnJlYXNzaWduX3RpY2tldF90aWxsX2RhdGUgPCBzdW1taXQuZW5kX2RhdGVcbiAgICA/IHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlXG4gICAgOiBzdW1taXQuZW5kX2RhdGU7XG59O1xuXG5leHBvcnQgY29uc3QgdXNlU3VtbWl0RGV0YWlscyA9ICh7IHN1bW1pdCB9KSA9PiB7XG4gIGNvbnN0IG5vdyA9IHVzZU5vdygpO1xuXG4gIGlmICghc3VtbWl0KSByZXR1cm4ge307XG5cbiAgY29uc3QgbG9jYXRpb24gPSBnZXRTdW1taXRMb2NhdGlvbihzdW1taXQpO1xuICBjb25zdCBmb3JtYXR0ZWREYXRlID0gZ2V0U3VtbWl0Rm9ybWF0dGVkRGF0ZShzdW1taXQpO1xuICBjb25zdCByZWFzc2lnbkRhdGUgPSBnZXRTdW1taXRSZWFzc2lnbkRhdGUoc3VtbWl0KTtcbiAgY29uc3QgZm9ybWF0dGVkUmVhc3NpZ25EYXRlID0gbW9tZW50LnR6KFxuICAgIHJlYXNzaWduRGF0ZSxcbiAgICBzdW1taXQudGltZV96b25lPy50aW1lX3pvbmVfaWRcbiAgKTtcbiAgY29uc3QgZGF5c1VudGlsUmVhc3NpZ25EZWFkbGluZSA9IGdldFN1bW1pdERheXNEaWZmKFxuICAgIG5vdyxcbiAgICByZWFzc2lnbkRhdGUsXG4gICAgc3VtbWl0LnRpbWVfem9uZT8ubmFtZVxuICApO1xuXG4gIGNvbnN0IGlzUGFzdCA9IGNoZWNrU3VtbWl0UGFzdChzdW1taXQsIG5vdyk7XG4gIGNvbnN0IGlzU3RhcnRlZCA9IGNoZWNrU3VtbWl0U3RhcnRlZChzdW1taXQsIG5vdyk7XG4gIGNvbnN0IGlzUmVhc3NpZ25hYmxlID0gcmVhc3NpZ25EYXRlID4gbm93O1xuXG4gIHJldHVybiB7XG4gICAgbmFtZTogc3VtbWl0Py5uYW1lLFxuICAgIG5vdyxcbiAgICBsb2NhdGlvbixcbiAgICBmb3JtYXR0ZWREYXRlLFxuICAgIHJlYXNzaWduRGF0ZSxcbiAgICBmb3JtYXR0ZWRSZWFzc2lnbkRhdGUsXG4gICAgZGF5c1VudGlsUmVhc3NpZ25EZWFkbGluZSxcbiAgICBpc1Bhc3QsXG4gICAgaXNTdGFydGVkLFxuICAgIGlzUmVhc3NpZ25hYmxlXG4gIH07XG59O1xuIiwiaW1wb3J0ICogYXMgeXVwIGZyb20gXCJ5dXBcIjtcbmltcG9ydCBpMThuIGZyb20gXCIuLi9pMThuXCI7XG5pbXBvcnQge1xuICBNSU5fUkVRVUlSRUQsXG4gIFNUQVRVU19DQU5DRUxMRUQsXG4gIFNUQVRVU19DT01QTEVURSxcbiAgU1RBVFVTX0lOQ09NUExFVEUsXG4gIFNUQVRVU19SRUZVTkRfQVBQUk9WRUQsXG4gIFNUQVRVU19SRUZVTkRfQVBQUk9WRURfTEMsXG4gIFNUQVRVU19SRUZVTkRfUEVORElORyxcbiAgU1RBVFVTX1JFRlVORF9QRU5ESU5HX0xDLFxuICBTVEFUVVNfUkVGVU5EX1JFSkVDVEVELFxuICBTVEFUVVNfUkVGVU5EX1JFSkVDVEVEX0xDLFxuICBTVEFUVVNfVU5BU1NJR05FRFxufSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IFRJQ0tFVF9BVFRFTkRFRV9LRVlTIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbnN0YW50c1wiO1xuaW1wb3J0IHtcbiAgY2hlY2tJZlZhbHVlTWF0Y2gsXG4gIGdldFR5cGVJbml0aWFsVmFsdWUsXG4gIHRvU2x1Z1xufSBmcm9tIFwiLi4vY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL3V0aWxzXCI7XG5pbXBvcnQge1xuICBRdWVzdGlvblR5cGVfQ2hlY2tib3gsXG4gIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QsXG4gIFF1ZXN0aW9uVHlwZV9Db21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdFxufSBmcm9tIFwiLi4vY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb25zdGFudHNcIjtcblxuZXhwb3J0IGNvbnN0IHN0YXR1c0RhdGEgPSB7XG4gIFtTVEFUVVNfVU5BU1NJR05FRF06IHtcbiAgICB0eXBlOiBTVEFUVVNfVU5BU1NJR05FRCxcbiAgICB0ZXh0OiBpMThuLnQoXCJ0aWNrZXRfc3RhdHVzLnVuYXNzaWduZWRcIilcbiAgfSxcbiAgW1NUQVRVU19JTkNPTVBMRVRFXToge1xuICAgIHR5cGU6IFNUQVRVU19JTkNPTVBMRVRFLFxuICAgIHRleHQ6IGkxOG4udChcInRpY2tldF9zdGF0dXMuaW5jb21wbGV0ZVwiKVxuICB9LFxuICBbU1RBVFVTX0NPTVBMRVRFXToge1xuICAgIHR5cGU6IFNUQVRVU19DT01QTEVURSxcbiAgICB0ZXh0OiBpMThuLnQoXCJ0aWNrZXRfc3RhdHVzLmNvbXBsZXRlXCIpXG4gIH0sXG4gIFtTVEFUVVNfQ0FOQ0VMTEVEXToge1xuICAgIHR5cGU6IFNUQVRVU19DQU5DRUxMRUQsXG4gICAgdGV4dDogaTE4bi50KFwidGlja2V0X3N0YXR1cy5jYW5jZWxsZWRcIilcbiAgfVxufTtcbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRTdGF0dXNLZXkgPSAodGlja2V0KSA9PiB7XG4gIGlmICghdGlja2V0LmlzX2FjdGl2ZSkgcmV0dXJuIFNUQVRVU19DQU5DRUxMRUQ7XG5cbiAgaWYgKHRpY2tldC5vd25lcl9pZCA9PT0gMCkgcmV0dXJuIFNUQVRVU19VTkFTU0lHTkVEO1xuXG4gIGlmICghdGlja2V0Lm93bmVyPy5maXJzdF9uYW1lIHx8ICF0aWNrZXQub3duZXI/Lmxhc3RfbmFtZSlcbiAgICByZXR1cm4gU1RBVFVTX0lOQ09NUExFVEU7XG5cbiAgaWYgKHRpY2tldC5vd25lciAmJiB0aWNrZXQub3duZXI/LnN0YXR1cyA9PT0gXCJJbmNvbXBsZXRlXCIpXG4gICAgcmV0dXJuIFNUQVRVU19JTkNPTVBMRVRFO1xuXG4gIGlmICh0aWNrZXQub3duZXIgJiYgdGlja2V0Lm93bmVyPy5zdGF0dXMgPT09IFwiQ29tcGxldGVcIilcbiAgICByZXR1cm4gU1RBVFVTX0NPTVBMRVRFO1xuXG4gIHJldHVybiBTVEFUVVNfSU5DT01QTEVURTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRTdGF0dXNEYXRhID0gKHRpY2tldCwgaXNTdW1taXRQYXN0KSA9PlxuICBzdGF0dXNEYXRhW2dldFRpY2tldFN0YXR1c0tleSh0aWNrZXQsIGlzU3VtbWl0UGFzdCldO1xuXG5leHBvcnQgY29uc3QgZ2V0VGlja2V0Um9sZSA9ICh0aWNrZXQpID0+IHtcbiAgaWYgKCF0aWNrZXQuYmFkZ2UpIHJldHVybiBudWxsO1xuXG4gIGNvbnN0IHsgZmVhdHVyZXMgfSA9IHRpY2tldC5iYWRnZTtcblxuICBpZiAoZmVhdHVyZXMubGVuZ3RoID4gMClcbiAgICByZXR1cm4gZmVhdHVyZXMubWFwKChmZWF0dXJlKSA9PiBmZWF0dXJlLm5hbWUpLmpvaW4oXCIsIFwiKTtcblxuICByZXR1cm4gbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRUeXBlID0gKHRpY2tldCwgc3VtbWl0KSA9PlxuICBzdW1taXQudGlja2V0X3R5cGVzLmZpbmQoKHR5cGUpID0+IHR5cGUuaWQgPT09IHRpY2tldC50aWNrZXRfdHlwZV9pZCk7XG5cbmV4cG9ydCBjb25zdCBpc1RpY2tldFJlZnVuZGFibGUgPSAodGlja2V0KSA9PlxuICB0aWNrZXQ/LmZpbmFsX2Ftb3VudCA+IDAgJiZcbiAgdGlja2V0Py5uZXRfc2VsbGluZ19jb3N0ID4gdGlja2V0LnJlZnVuZGVkX2Ftb3VudCAmJlxuICAhdGlja2V0Py5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoXG4gICAgKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfUEVORElOR19MQ1xuICApO1xuXG5leHBvcnQgY29uc3QgdGlja2V0c1JlZnVuZGFibGUgPSAodGlja2V0cykgPT5cbiAgdGlja2V0cz8uZmlsdGVyKCh0aWNrZXQpID0+IGlzVGlja2V0UmVmdW5kYWJsZSh0aWNrZXQpKS5sZW5ndGggfHwgMDtcblxuZXhwb3J0IGNvbnN0IGdldFJlZnVuZGVkUmVxdWVzdGVkVGlja2V0cyA9ICh0aWNrZXRzKSA9PlxuICB0aWNrZXRzPy5maWx0ZXIoKHRpY2tldCkgPT5cbiAgICB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5zb21lKChycikgPT4gcnIuc3RhdHVzID09PSBTVEFUVVNfUkVGVU5EX1BFTkRJTkdfTEMpXG4gICk7XG5leHBvcnQgY29uc3QgZ2V0QWxsUmVmdW5kUmVxdWVzdGVkVGlja2V0cyA9ICh0aWNrZXRzKSA9PiB7XG4gIGNvbnN0IGFsbFRpY2tldHMgPSBbXTtcbiAgdGlja2V0cz8ubWFwKCh0aWNrZXQpID0+IHtcbiAgICBpZiAoXG4gICAgICB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5zb21lKFxuICAgICAgICAocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9QRU5ESU5HX0xDXG4gICAgICApIHx8XG4gICAgICB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5zb21lKFxuICAgICAgICAocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9BUFBST1ZFRF9MQ1xuICAgICAgKSB8fFxuICAgICAgdGlja2V0LnJlZnVuZF9yZXF1ZXN0cz8uc29tZShcbiAgICAgICAgKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfUkVKRUNURURfTENcbiAgICAgIClcbiAgICApIHtcbiAgICAgIGFsbFRpY2tldHMucHVzaCh0aWNrZXQpO1xuICAgIH1cbiAgICByZXR1cm4gdGlja2V0O1xuICB9KTtcbiAgcmV0dXJuIGFsbFRpY2tldHM7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UmVmdW5kZWRSZXF1ZXN0ZWRTdGF0dXMgPSAodGlja2V0KSA9PiB7XG4gIGlmIChcbiAgICB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5zb21lKChycikgPT4gcnIuc3RhdHVzID09PSBTVEFUVVNfUkVGVU5EX1BFTkRJTkdfTEMpXG4gIClcbiAgICByZXR1cm4gU1RBVFVTX1JFRlVORF9QRU5ESU5HO1xuICBpZiAoXG4gICAgdGlja2V0LnJlZnVuZF9yZXF1ZXN0cz8uc29tZShcbiAgICAgIChycikgPT4gcnIuc3RhdHVzID09PSBTVEFUVVNfUkVGVU5EX0FQUFJPVkVEX0xDXG4gICAgKVxuICApXG4gICAgcmV0dXJuIFNUQVRVU19SRUZVTkRfQVBQUk9WRUQ7XG4gIGlmIChcbiAgICB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5zb21lKFxuICAgICAgKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfUkVKRUNURURfTENcbiAgICApXG4gIClcbiAgICByZXR1cm4gU1RBVFVTX1JFRlVORF9SRUpFQ1RFRDtcbiAgcmV0dXJuIFNUQVRVU19SRUZVTkRfUEVORElORztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRSZWZ1bmRSZXF1ZXN0ZWRTdGF0dXNDb2xvciA9ICh0aWNrZXQpID0+IHtcbiAgY29uc3Qgc3RhdHVzID0gZ2V0UmVmdW5kZWRSZXF1ZXN0ZWRTdGF0dXModGlja2V0KTtcbiAgbGV0IHN0YXR1c0NvbG9yID0gXCJcIjtcbiAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICBjYXNlIFNUQVRVU19SRUZVTkRfUEVORElORzpcbiAgICAgIHN0YXR1c0NvbG9yID0gXCJwZW5kaW5nXCI7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFNUQVRVU19SRUZVTkRfQVBQUk9WRUQ6XG4gICAgICBzdGF0dXNDb2xvciA9IFwiYXBwcm92ZWRcIjtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgU1RBVFVTX1JFRlVORF9SRUpFQ1RFRDpcbiAgICAgIHN0YXR1c0NvbG9yID0gXCJyZWplY3RlZFwiO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHN0YXR1c0NvbG9yID0gXCJwZW5kaW5nXCI7XG4gIH1cbiAgcmV0dXJuIHN0YXR1c0NvbG9yO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFR5cGVWYWxpZGF0aW9uID0gKHR5cGUsIG5hbWUsIGlzUmVxdWlyZWQpID0+IHtcbiAgbGV0IHNjaGVtYTtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tib3g6XG4gICAgICBzY2hlbWEgPSB5dXAuYm9vbCgpLm9uZU9mKFt0cnVlXSwgaTE4bi50KFwidmFsaWRhdGlvbi5jaGVja2JveC5yZXF1aXJlZFwiKSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3Q6XG4gICAgICBzY2hlbWEgPSB5dXAuc3RyaW5nKGBFbnRlciAke25hbWV9YCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3Q6XG4gICAgICBzY2hlbWEgPSB5dXAuYXJyYXkoKS5vZih5dXAuc3RyaW5nKCkpO1xuICAgICAgaWYgKGlzUmVxdWlyZWQpIHNjaGVtYSA9IHNjaGVtYS5taW4oTUlOX1JFUVVJUkVELCBgJHtuYW1lfSBpcyByZXF1aXJlZGApO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94OlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvbWJvQm94OlxuICAgICAgc2NoZW1hID0geXVwLnN0cmluZyhgRW50ZXIgJHtuYW1lfWApO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHNjaGVtYSA9IHl1cC5zdHJpbmcoYEVudGVyICR7bmFtZX1gKTtcbiAgICAgIGJyZWFrO1xuICB9XG5cbiAgaWYgKGlzUmVxdWlyZWQpIHtcbiAgICBzY2hlbWEgPSBzY2hlbWEucmVxdWlyZWQoYCR7bmFtZX0gaXMgcmVxdWlyZWRgKTtcbiAgfVxuXG4gIHJldHVybiBzY2hlbWE7XG59O1xuXG5jb25zdCBwYXJzZVN1YlF1ZXN0aW9uQW5zd2VyID0gKFxuICBxLFxuICBhbnN3ZXJzLFxuICBhbnN3ZXIsXG4gIGluaXRpYWxWYWx1ZXMsXG4gIG9ubHlSZWxldmFudFxuKSA9PiB7XG4gIGlmIChxLnN1Yl9xdWVzdGlvbl9ydWxlcz8ubGVuZ3RoID4gMCkge1xuICAgIHEuc3ViX3F1ZXN0aW9uX3J1bGVzLmZvckVhY2goKHJ1bGUpID0+IHtcbiAgICAgIGNvbnN0IHsgc3ViX3F1ZXN0aW9uLCBhbnN3ZXJfdmFsdWVzIH0gPSBydWxlO1xuICAgICAgY29uc3Qgc3ViUXVlc3Rpb25TbHVnID0gdG9TbHVnKHN1Yl9xdWVzdGlvbi5uYW1lLCBzdWJfcXVlc3Rpb24uaWQpO1xuICAgICAgY29uc3Qgc3ViQW5zd2VyID0gYW5zd2Vyc1tzdWJRdWVzdGlvblNsdWddO1xuICAgICAgY29uc3QgbWF0Y2ggPSBjaGVja0lmVmFsdWVNYXRjaChhbnN3ZXIsIGFuc3dlcl92YWx1ZXMpO1xuXG4gICAgICBpZiAoIW9ubHlSZWxldmFudCB8fCBtYXRjaCkge1xuICAgICAgICBpbml0aWFsVmFsdWVzW3N1YlF1ZXN0aW9uU2x1Z10gPVxuICAgICAgICAgIHN1YkFuc3dlciB8fCBnZXRUeXBlSW5pdGlhbFZhbHVlKHN1Yl9xdWVzdGlvbik7XG4gICAgICB9XG5cbiAgICAgIHBhcnNlU3ViUXVlc3Rpb25BbnN3ZXIoXG4gICAgICAgIHN1Yl9xdWVzdGlvbixcbiAgICAgICAgYW5zd2VycyxcbiAgICAgICAgc3ViQW5zd2VyLFxuICAgICAgICBpbml0aWFsVmFsdWVzLFxuICAgICAgICBvbmx5UmVsZXZhbnRcbiAgICAgICk7XG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBwYXJzZUFuc3dlcnMgPSAoXG4gIG93bmVyLFxuICBleHRyYVF1ZXN0aW9ucyxcbiAgYW5zd2VycyxcbiAgaW5jbHVkZUF0dGVuZGVlSW5mbyxcbiAgaW5jbHVkZURpc2NsYWltZXIsXG4gIG9ubHlSZWxldmFudCA9IGZhbHNlXG4pID0+IHtcbiAgY29uc3QgaW5pdGlhbFZhbHVlcyA9IHt9O1xuXG4gIGlmIChpbmNsdWRlQXR0ZW5kZWVJbmZvKSB7XG4gICAgaW5pdGlhbFZhbHVlc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbF0gPVxuICAgICAgYW5zd2Vyc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbF0gfHwgb3duZXIuZW1haWwgfHwgXCJcIjtcbiAgICBpbml0aWFsVmFsdWVzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmZpcnN0TmFtZV0gPVxuICAgICAgYW5zd2Vyc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5maXJzdE5hbWVdIHx8IG93bmVyLmZpcnN0X25hbWUgfHwgXCJcIjtcbiAgICBpbml0aWFsVmFsdWVzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmxhc3ROYW1lXSA9XG4gICAgICBhbnN3ZXJzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmxhc3ROYW1lXSB8fCBvd25lci5sYXN0X25hbWUgfHwgXCJcIjtcbiAgICBpbml0aWFsVmFsdWVzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmNvbXBhbnldID1cbiAgICAgIGFuc3dlcnNbVElDS0VUX0FUVEVOREVFX0tFWVMuY29tcGFueV0gfHwgb3duZXIuY29tcGFueTtcbiAgfVxuXG4gIGlmIChpbmNsdWRlRGlzY2xhaW1lcikge1xuICAgIGluaXRpYWxWYWx1ZXNbVElDS0VUX0FUVEVOREVFX0tFWVMuZGlzY2xhaW1lckFjY2VwdGVkXSA9XG4gICAgICBhbnN3ZXJzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmRpc2NsYWltZXJBY2NlcHRlZF0gfHxcbiAgICAgIG93bmVyLmRpc2NsYWltZXJfYWNjZXB0ZWQ7XG4gIH1cblxuICBleHRyYVF1ZXN0aW9ucy5mb3JFYWNoKChxKSA9PiB7XG4gICAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHEubmFtZSwgcS5pZCk7XG4gICAgY29uc3QgYW5zd2VyID0gYW5zd2Vyc1txdWVzdGlvblNsdWddO1xuICAgIGluaXRpYWxWYWx1ZXNbcXVlc3Rpb25TbHVnXSA9IGFuc3dlciB8fCBnZXRUeXBlSW5pdGlhbFZhbHVlKHEpO1xuXG4gICAgcGFyc2VTdWJRdWVzdGlvbkFuc3dlcihxLCBhbnN3ZXJzLCBhbnN3ZXIsIGluaXRpYWxWYWx1ZXMsIG9ubHlSZWxldmFudCk7XG4gIH0pO1xuXG4gIHJldHVybiBpbml0aWFsVmFsdWVzO1xufTtcblxuY29uc3QgYnVpbGRTdWJRdWVzdGlvblZhbGlkYXRpb25TY2hlbWEgPSAocXVlc3Rpb25TbHVnLCBydWxlLCBzY2hlbWEpID0+IHtcbiAgY29uc3Qgc3ViUXVlc3Rpb24gPSBydWxlLnN1Yl9xdWVzdGlvbjtcbiAgY29uc3Qgc3ViUXVlc3Rpb25TbHVnID0gdG9TbHVnKHN1YlF1ZXN0aW9uLm5hbWUsIHN1YlF1ZXN0aW9uLmlkKTtcblxuICBzY2hlbWFbc3ViUXVlc3Rpb25TbHVnXSA9IGdldFR5cGVWYWxpZGF0aW9uKFxuICAgIHN1YlF1ZXN0aW9uLnR5cGUsXG4gICAgc3ViUXVlc3Rpb24ubmFtZSxcbiAgICBmYWxzZVxuICApXG4gICAgLm51bGxhYmxlKClcbiAgICAud2hlbihxdWVzdGlvblNsdWcsIHtcbiAgICAgIGlzOiAocXVlc3Rpb25BbnMpID0+IHtcbiAgICAgICAgY29uc3QgYW5zVmFsdWVNYXRjaCA9IGNoZWNrSWZWYWx1ZU1hdGNoKFxuICAgICAgICAgIHF1ZXN0aW9uQW5zLFxuICAgICAgICAgIHJ1bGUuYW5zd2VyX3ZhbHVlc1xuICAgICAgICApO1xuICAgICAgICAvLyBjaGVjayBpZiBxdWVzdGlvbiBpcyB2aXNpYmxlIHRvIGFkZCB2YWxpZGF0aW9uXG4gICAgICAgIGNvbnN0IGlzVmlzaWJsZSA9ICEhZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXG4gICAgICAgICAgYCR7cXVlc3Rpb25TbHVnfV9jb250YWluZXJgXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBhbnNWYWx1ZU1hdGNoICYmIGlzVmlzaWJsZTtcbiAgICAgIH0sXG4gICAgICB0aGVuOiAoc2NoKSA9PiB7XG4gICAgICAgIGlmIChzdWJRdWVzdGlvbi50eXBlID09PSBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0KSB7XG4gICAgICAgICAgcmV0dXJuIHNjaFxuICAgICAgICAgICAgLm1pbihNSU5fUkVRVUlSRUQsIGkxOG4udChcInZhbGlkYXRpb24ucmVxdWlyZWRfcXVlc3Rpb25cIikpXG4gICAgICAgICAgICAucmVxdWlyZWQoaTE4bi50KFwidmFsaWRhdGlvbi5yZXF1aXJlZF9xdWVzdGlvblwiKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNjaC5yZXF1aXJlZChpMThuLnQoXCJ2YWxpZGF0aW9uLnJlcXVpcmVkX3F1ZXN0aW9uXCIpKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICBpZiAoc3ViUXVlc3Rpb24uc3ViX3F1ZXN0aW9uX3J1bGVzPy5sZW5ndGggPiAwKSB7XG4gICAgc3ViUXVlc3Rpb24uc3ViX3F1ZXN0aW9uX3J1bGVzLmZvckVhY2goKHN1YlJ1bGUpID0+IHtcbiAgICAgIGJ1aWxkU3ViUXVlc3Rpb25WYWxpZGF0aW9uU2NoZW1hKHN1YlF1ZXN0aW9uU2x1Zywgc3ViUnVsZSwgc2NoZW1hKTtcbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGJ1aWxkVmFsaWRhdGlvblNjaGVtYSA9IChcbiAgZXh0cmFRdWVzdGlvbnMsXG4gIGluY2x1ZGVBdHRlbmRlZUluZm8sXG4gIGRpc2NsYWltZXJNYW5kYXRvcnlcbikgPT4ge1xuICBjb25zdCBzY2hlbWEgPSB7fTtcblxuICBpZiAoaW5jbHVkZUF0dGVuZGVlSW5mbykge1xuICAgIHNjaGVtYVtUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbF0gPSB5dXBcbiAgICAgIC5zdHJpbmcoaTE4bi50KFwidmFsaWRhdGlvbi5lbWFpbC5zdHJpbmdcIikpXG4gICAgICAuZW1haWwoaTE4bi50KFwidmFsaWRhdGlvbi5lbWFpbC5mb3JtYXRcIikpXG4gICAgICAucmVxdWlyZWQoaTE4bi50KFwidmFsaWRhdGlvbi5lbWFpbC5yZXF1aXJlZFwiKSk7XG4gICAgc2NoZW1hW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmZpcnN0TmFtZV0gPSB5dXBcbiAgICAgIC5zdHJpbmcoaTE4bi50KFwidmFsaWRhdGlvbi5maXJzdF9uYW1lLnN0cmluZ1wiKSlcbiAgICAgIC5yZXF1aXJlZChpMThuLnQoXCJ2YWxpZGF0aW9uLmZpcnN0X25hbWUucmVxdWlyZWRcIikpO1xuICAgIHNjaGVtYVtUSUNLRVRfQVRURU5ERUVfS0VZUy5sYXN0TmFtZV0gPSB5dXBcbiAgICAgIC5zdHJpbmcoaTE4bi50KFwidmFsaWRhdGlvbi5sYXN0X25hbWUuc3RyaW5nXCIpKVxuICAgICAgLnJlcXVpcmVkKGkxOG4udChcInZhbGlkYXRpb24ubGFzdF9uYW1lLnJlcXVpcmVkXCIpKTtcbiAgICBzY2hlbWFbVElDS0VUX0FUVEVOREVFX0tFWVMuY29tcGFueV0gPSB5dXAubGF6eSgodmFsdWUpID0+XG4gICAgICB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCJcbiAgICAgICAgPyB5dXBcbiAgICAgICAgICAgIC5vYmplY3QoKVxuICAgICAgICAgICAgLnJlcXVpcmVkKGkxOG4udChcInZhbGlkYXRpb24uY29tcGFueS5yZXF1aXJlZFwiKSlcbiAgICAgICAgICAgIC50eXBlRXJyb3IoaTE4bi50KFwidmFsaWRhdGlvbi5yZXF1aXJlZF9maWVsZFwiKSlcbiAgICAgICAgOiB5dXAuc3RyaW5nKCkucmVxdWlyZWQoaTE4bi50KFwidmFsaWRhdGlvbi5jb21wYW55LnJlcXVpcmVkXCIpKVxuICAgICk7XG4gIH1cblxuICBpZiAoZGlzY2xhaW1lck1hbmRhdG9yeSkge1xuICAgIHNjaGVtYVtUSUNLRVRfQVRURU5ERUVfS0VZUy5kaXNjbGFpbWVyQWNjZXB0ZWRdID0geXVwXG4gICAgICAuYm9vbCgpXG4gICAgICAub25lT2YoW3RydWVdLCBpMThuLnQoXCJ2YWxpZGF0aW9uLmNoZWNrYm94LnJlcXVpcmVkXCIpKTtcbiAgfVxuXG4gIGV4dHJhUXVlc3Rpb25zLmZvckVhY2goKHEpID0+IHtcbiAgICBjb25zdCB7IGlkLCBuYW1lLCB0eXBlLCBtYW5kYXRvcnksIHN1Yl9xdWVzdGlvbl9ydWxlcyB9ID0gcTtcbiAgICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcobmFtZSwgaWQpO1xuICAgIHNjaGVtYVtxdWVzdGlvblNsdWddID0gZ2V0VHlwZVZhbGlkYXRpb24odHlwZSwgbmFtZSwgbWFuZGF0b3J5KTtcblxuICAgIGlmIChzdWJfcXVlc3Rpb25fcnVsZXM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIHN1Yl9xdWVzdGlvbl9ydWxlcy5mb3JFYWNoKChydWxlKSA9PiB7XG4gICAgICAgIGJ1aWxkU3ViUXVlc3Rpb25WYWxpZGF0aW9uU2NoZW1hKHF1ZXN0aW9uU2x1ZywgcnVsZSwgc2NoZW1hKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHl1cC5vYmplY3Qoc2NoZW1hKTtcbn07XG5cbmV4cG9ydCBjb25zdCB1cGRhdGVUaWNrZXRDb2xsZWN0aW9uID0gKHRpY2tldHMsIHRpY2tldCkgPT5cbiAgdGlja2V0cy5tYXAoKHQpID0+IHtcbiAgICBjb25zdCB0bXBUaWNrZXQgPSB7IC4uLnQgfTtcbiAgICAvLyB1cGRhdGUgYXR0ZW5kZWVcbiAgICBpZiAoXG4gICAgICB0Lm93bmVyPy5pZCA9PT0gdGlja2V0Lm93bmVyPy5pZCAmJlxuICAgICAgdC5vd25lcj8uc3RhdHVzICE9PSB0aWNrZXQub3duZXI/LnN0YXR1c1xuICAgICkge1xuICAgICAgdG1wVGlja2V0Lm93bmVyID0gdGlja2V0Lm93bmVyO1xuICAgIH1cbiAgICByZXR1cm4gdC5pZCA9PT0gdGlja2V0LmlkID8gdGlja2V0IDogdG1wVGlja2V0O1xuICB9KTtcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJiYWRnZUZlYXR1cmVJY29uX19fc0tWVENcIjtcbnZhciBfMiA9IFwiYmFkZ2VGZWF0dXJlSW1hZ2VfX19ZTzRmc1wiO1xudmFyIF8zID0gXCJiYWRnZUZlYXR1cmVJbml0aWFsc19fX2tXN1prXCI7XG5leHBvcnQgeyBfMSBhcyBcImJhZGdlRmVhdHVyZUljb25cIiwgXzIgYXMgXCJiYWRnZUZlYXR1cmVJbWFnZVwiLCBfMyBhcyBcImJhZGdlRmVhdHVyZUluaXRpYWxzXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImNvcHlJY29uX19fbEkzZVFcIjtcbnZhciBfMiA9IFwicmV2ZXJzZWRfX196SnptRFwiO1xudmFyIF8zID0gXCJ0cnVuY2F0ZWRfX19qV1NuVVwiO1xudmFyIF80ID0gXCJ3cmFwcGVyX19fbVZQaVJcIjtcbmV4cG9ydCB7IF8xIGFzIFwiY29weUljb25cIiwgXzIgYXMgXCJyZXZlcnNlZFwiLCBfMyBhcyBcInRydW5jYXRlZFwiLCBfNCBhcyBcIndyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiTXVpT3V0bGluZWRJbnB1dC1ub3RjaGVkT3V0bGluZV9fX214RUtXXCI7XG52YXIgXzIgPSBcIk11aVBpY2tlcnNDYWxlbmRhckhlYWRlci1sYWJlbENvbnRhaW5lcl9fX080c1NzXCI7XG52YXIgXzMgPSBcImNhbGVuZGFyRGlzcGxheV9fX0YzbnVLXCI7XG52YXIgXzQgPSBcImNsZWFuQnV0dG9uX19fcXFEdlVcIjtcbnZhciBfNSA9IFwiY29udGFpbmVyX19fUWVRWV9cIjtcbnZhciBfNiA9IFwiZGF0ZVBpY2tlckNvbnRhaW5lcl9fX1o0Mm13XCI7XG52YXIgXzcgPSBcImRhdGVwaWNrZXJDbG9zZV9fX1RaN2tKXCI7XG52YXIgXzggPSBcImZpbHRlckNoZWNrYm94Q29udGFpbmVyX19fa1VuVzlcIjtcbnZhciBfOSA9IFwiZmlsdGVyQ29udGFpbmVyX19fcnJxcDlcIjtcbnZhciBfYSA9IFwiZmlsdGVyRGF0ZUxhYmVsX19fSmdiY3NcIjtcbnZhciBfYiA9IFwiZmlsdGVySWNvbl9fX2lpT3pvXCI7XG52YXIgX2MgPSBcImZpbHRlckxhYmVsX19fc2taUDdcIjtcbnZhciBfZCA9IFwiZmlsdGVyTGlzdENvbnRhaW5lcl9fX0lEcmxTXCI7XG52YXIgX2UgPSBcImZpbHRlck51bUFjdGl2ZV9fX2ttRUVLXCI7XG52YXIgX2YgPSBcImZpbHRlclNvcnRDb250YWluZXJfX19uaE5Kc1wiO1xudmFyIF8xMCA9IFwibGFiZWxfX19MQW1lX1wiO1xudmFyIF8xMSA9IFwic2hvd0ZpbHRlckxpc3RfX19JVzR4R1wiO1xudmFyIF8xMiA9IFwic29ydENvbnRhaW5lcl9fX3NiNUJkXCI7XG52YXIgXzEzID0gXCJzb3J0SWNvbl9fX2NfWFppXCI7XG52YXIgXzE0ID0gXCJzb3J0TGFiZWxfX19kWGlNeVwiO1xudmFyIF8xNSA9IFwic29ydExpc3RDb250YWluZXJfX19QcDJYZ1wiO1xudmFyIF8xNiA9IFwidGl0bGVXcmFwcGVyX19fUDZtUHVcIjtcbmV4cG9ydCB7IF8xIGFzIFwiTXVpT3V0bGluZWRJbnB1dC1ub3RjaGVkT3V0bGluZVwiLCBfMiBhcyBcIk11aVBpY2tlcnNDYWxlbmRhckhlYWRlci1sYWJlbENvbnRhaW5lclwiLCBfMyBhcyBcImNhbGVuZGFyRGlzcGxheVwiLCBfNCBhcyBcImNsZWFuQnV0dG9uXCIsIF81IGFzIFwiY29udGFpbmVyXCIsIF82IGFzIFwiZGF0ZVBpY2tlckNvbnRhaW5lclwiLCBfNyBhcyBcImRhdGVwaWNrZXJDbG9zZVwiLCBfOCBhcyBcImZpbHRlckNoZWNrYm94Q29udGFpbmVyXCIsIF85IGFzIFwiZmlsdGVyQ29udGFpbmVyXCIsIF9hIGFzIFwiZmlsdGVyRGF0ZUxhYmVsXCIsIF9iIGFzIFwiZmlsdGVySWNvblwiLCBfYyBhcyBcImZpbHRlckxhYmVsXCIsIF9kIGFzIFwiZmlsdGVyTGlzdENvbnRhaW5lclwiLCBfZSBhcyBcImZpbHRlck51bUFjdGl2ZVwiLCBfZiBhcyBcImZpbHRlclNvcnRDb250YWluZXJcIiwgXzEwIGFzIFwibGFiZWxcIiwgXzExIGFzIFwic2hvd0ZpbHRlckxpc3RcIiwgXzEyIGFzIFwic29ydENvbnRhaW5lclwiLCBfMTMgYXMgXCJzb3J0SWNvblwiLCBfMTQgYXMgXCJzb3J0TGFiZWxcIiwgXzE1IGFzIFwic29ydExpc3RDb250YWluZXJcIiwgXzE2IGFzIFwidGl0bGVXcmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImNhbmNlbEJ0bl9fX3FEZXhoXCI7XG52YXIgXzIgPSBcImZvb3Rlcl9fX1NONzB5XCI7XG52YXIgXzMgPSBcInNhdmVCdG5fX19uYlU2Y1wiO1xuZXhwb3J0IHsgXzEgYXMgXCJjYW5jZWxCdG5cIiwgXzIgYXMgXCJmb290ZXJcIiwgXzMgYXMgXCJzYXZlQnRuXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImVycm9yTGFiZWxfX19ub2N5WFwiO1xuZXhwb3J0IHsgXzEgYXMgXCJlcnJvckxhYmVsXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcIm15T3JkZXJzV3JhcHBlcl9fX0hKbXlzXCI7XG52YXIgXzIgPSBcIm5vT3JkZXJzRm91bmRfX19EUndnb1wiO1xudmFyIF8zID0gXCJub09yZGVyc0ljb25XcmFwcGVyX19fdFBUbVlcIjtcbmV4cG9ydCB7IF8xIGFzIFwibXlPcmRlcnNXcmFwcGVyXCIsIF8yIGFzIFwibm9PcmRlcnNGb3VuZFwiLCBfMyBhcyBcIm5vT3JkZXJzSWNvbldyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiYm9keV9fX0FXZGlMXCI7XG52YXIgXzIgPSBcImljb25XcmFwcGVyX19fbXpldktcIjtcbnZhciBfMyA9IFwidGl0bGVfX19NMjQybVwiO1xudmFyIF80ID0gXCJ3cmFwcGVyX19fUXN3Q1BcIjtcbmV4cG9ydCB7IF8xIGFzIFwiYm9keVwiLCBfMiBhcyBcImljb25XcmFwcGVyXCIsIF8zIGFzIFwidGl0bGVcIiwgXzQgYXMgXCJ3cmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcIm9yZGVyRGV0YWlsc01tb3VudF9fX3Iza1JBXCI7XG52YXIgXzIgPSBcIm9yZGVyRGV0YWlsc1RpY2tldHNfX19tNElqS1wiO1xudmFyIF8zID0gXCJvcmRlclN1bW1hcnlCdXR0b25fX191eGpodFwiO1xudmFyIF80ID0gXCJvcmRlclN1bW1hcnlQdXJjaGFzZWRJbmZvX19fX1JCWEVcIjtcbnZhciBfNSA9IFwib3JkZXJTdW1tYXJ5VGFibGVfX19ZRG54VlwiO1xudmFyIF82ID0gXCJvcmRlclN1bW1hcnlXcmFwcGVyX19fUndJRVJcIjtcbnZhciBfNyA9IFwicmVmdW5kRGlzYWJsZWRfX19qdnJrM1wiO1xuZXhwb3J0IHsgXzEgYXMgXCJvcmRlckRldGFpbHNNbW91bnRcIiwgXzIgYXMgXCJvcmRlckRldGFpbHNUaWNrZXRzXCIsIF8zIGFzIFwib3JkZXJTdW1tYXJ5QnV0dG9uXCIsIF80IGFzIFwib3JkZXJTdW1tYXJ5UHVyY2hhc2VkSW5mb1wiLCBfNSBhcyBcIm9yZGVyU3VtbWFyeVRhYmxlXCIsIF82IGFzIFwib3JkZXJTdW1tYXJ5V3JhcHBlclwiLCBfNyBhcyBcInJlZnVuZERpc2FibGVkXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImFzc2lnblRpY2tldEJ1dHRvbl9fX3p6THNjXCI7XG52YXIgXzIgPSBcImFzc2lnblRvTWVUZXh0X19fWlBhZXhcIjtcbnZhciBfMyA9IFwiYXNzaWduZWRCeVRleHRfX19iTlo3elwiO1xudmFyIF80ID0gXCJhc3NpZ25lZFRvTWVEZXNfX19HakZrVlwiO1xudmFyIF81ID0gXCJhc3NpZ25lZFRvTWVXcmFwcGVyX19fVXhjMnlcIjtcbnZhciBfNiA9IFwiYmFkZ2VGZWF0dXJlV3JhcHBlcl9fX0lRTE5QXCI7XG52YXIgXzcgPSBcImNoZWNrYm94X19fWFpKcGJcIjtcbnZhciBfOCA9IFwiZGlzYWJsZWRSZWZ1bmRfX19TZmZsN1wiO1xudmFyIF85ID0gXCJkaXNwbGF5X25vbmVfX19DcXBMM1wiO1xudmFyIF9hID0gXCJsYWJlbF9fX3pYRFd6XCI7XG52YXIgX2IgPSBcIm9yZGVyVGlja2V0Q29udGFpbmVyX19fWkpMemtcIjtcbnZhciBfYyA9IFwib3JkZXJUaWNrZXRJbmZvX19fZ2VtcUJcIjtcbnZhciBfZCA9IFwib3JkZXJUaWNrZXRJbmZvQ29udGFpbmVyX19fX3A2NlZcIjtcbnZhciBfZSA9IFwib3JkZXJXcmFwcGVyX19feURCQW9cIjtcbnZhciBfZiA9IFwicmVhc3NpZ25CdXR0b25fX19Sb2pNNVwiO1xudmFyIF8xMCA9IFwicmVmdW5kQnV0dG9uc19fX2pEbDRIXCI7XG52YXIgXzExID0gXCJyZWZ1bmRNb2RhbF9fX0VxZ1BGXCI7XG52YXIgXzEyID0gXCJzZWxlY3RlZF9fX0hXR05jXCI7XG52YXIgXzEzID0gXCJ0YWJCdXR0b25zX19feFR5SkFcIjtcbnZhciBfMTQgPSBcInRpY2tldEFjdGlvbkJ1dHRvbnNfX19ycFNNUVwiO1xudmFyIF8xNSA9IFwidGlja2V0Rm9vdGVyX19fajNiZGlcIjtcbnZhciBfMTYgPSBcInRpY2tldExpc3RDb250YWluZXJfX19jZm1yclwiO1xudmFyIF8xNyA9IFwidGlja2V0Tm9fX19hMmlNOVwiO1xudmFyIF8xOCA9IFwidGlja2V0T3duZXJFbWFpbF9fX1p0NE9FXCI7XG52YXIgXzE5ID0gXCJ0aWNrZXRUaWNrZXRUeXBlX19fWnFfZjBcIjtcbnZhciBfMWEgPSBcInZpZXdGaW5pc2hUaWNrZXRCdXR0b25fX19IRjZJbVwiO1xudmFyIF8xYiA9IFwidmlld01vcmVCdXR0b25fX19LXzF6VFwiO1xuZXhwb3J0IHsgXzEgYXMgXCJhc3NpZ25UaWNrZXRCdXR0b25cIiwgXzIgYXMgXCJhc3NpZ25Ub01lVGV4dFwiLCBfMyBhcyBcImFzc2lnbmVkQnlUZXh0XCIsIF80IGFzIFwiYXNzaWduZWRUb01lRGVzXCIsIF81IGFzIFwiYXNzaWduZWRUb01lV3JhcHBlclwiLCBfNiBhcyBcImJhZGdlRmVhdHVyZVdyYXBwZXJcIiwgXzcgYXMgXCJjaGVja2JveFwiLCBfOCBhcyBcImRpc2FibGVkUmVmdW5kXCIsIF85IGFzIFwiZGlzcGxheV9ub25lXCIsIF9hIGFzIFwibGFiZWxcIiwgX2IgYXMgXCJvcmRlclRpY2tldENvbnRhaW5lclwiLCBfYyBhcyBcIm9yZGVyVGlja2V0SW5mb1wiLCBfZCBhcyBcIm9yZGVyVGlja2V0SW5mb0NvbnRhaW5lclwiLCBfZSBhcyBcIm9yZGVyV3JhcHBlclwiLCBfZiBhcyBcInJlYXNzaWduQnV0dG9uXCIsIF8xMCBhcyBcInJlZnVuZEJ1dHRvbnNcIiwgXzExIGFzIFwicmVmdW5kTW9kYWxcIiwgXzEyIGFzIFwic2VsZWN0ZWRcIiwgXzEzIGFzIFwidGFiQnV0dG9uc1wiLCBfMTQgYXMgXCJ0aWNrZXRBY3Rpb25CdXR0b25zXCIsIF8xNSBhcyBcInRpY2tldEZvb3RlclwiLCBfMTYgYXMgXCJ0aWNrZXRMaXN0Q29udGFpbmVyXCIsIF8xNyBhcyBcInRpY2tldE5vXCIsIF8xOCBhcyBcInRpY2tldE93bmVyRW1haWxcIiwgXzE5IGFzIFwidGlja2V0VGlja2V0VHlwZVwiLCBfMWEgYXMgXCJ2aWV3RmluaXNoVGlja2V0QnV0dG9uXCIsIF8xYiBhcyBcInZpZXdNb3JlQnV0dG9uXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcIkNUQUJ1dHRvbldyYXBwZXJfX19LZ3E2Z1wiO1xudmFyIF8yID0gXCJhY3Rpb25CdXR0b25zX19fdTdtUFNcIjtcbnZhciBfMyA9IFwiYXBwcm92ZWRfX19zeEVKV1wiO1xudmFyIF80ID0gXCJiYWRnZUZlYXR1cmVXcmFwcGVyX19fXzlHYkRcIjtcbnZhciBfNSA9IFwiYnV0dG9uUGlsbF9fX0xlc2F6XCI7XG52YXIgXzYgPSBcImNhbmNlbEJ1dHRvbl9fX3lmaFliXCI7XG52YXIgXzcgPSBcImNvbnRpbnVlQnV0dG9uX19fTnlYM3NcIjtcbnZhciBfOCA9IFwiZGVsZXRlSWNvbl9fX0ZTd3llXCI7XG52YXIgXzkgPSBcInBlbmRpbmdfX19hRWJXd1wiO1xudmFyIF9hID0gXCJyZWZ1bmREZXRhaWxfX19jUTI4VlwiO1xudmFyIF9iID0gXCJyZWZ1bmRFcnJvck1zZ19fX0FhaHpyXCI7XG52YXIgX2MgPSBcInJlZnVuZFN1Y2Nlc3NmdWxfX196ckRRWVwiO1xudmFyIF9kID0gXCJyZWZ1bmRUZXh0X19fYUVuTDlcIjtcbnZhciBfZSA9IFwicmVmdW5kVGlja2V0QXR0ZW5kZWVfX19RWENqTVwiO1xudmFyIF9mID0gXCJyZWZ1bmRUaWNrZXRCb3hDb250YWluZXJfX195YTYxM1wiO1xudmFyIF8xMCA9IFwicmVqZWN0ZWRfX19OSkU0WlwiO1xudmFyIF8xMSA9IFwic3VidGl0bGVfX19QdERlMlwiO1xudmFyIF8xMiA9IFwic3VjY2Vzc01zZ19fX0h0TXNlXCI7XG52YXIgXzEzID0gXCJzdWNjZXNzTXNnMl9fX1E2em5hXCI7XG52YXIgXzE0ID0gXCJ0aWNrZXRMaXN0X19fZURRUjNcIjtcbnZhciBfMTUgPSBcInRpY2tldE5vX19fX0VBRDRcIjtcbmV4cG9ydCB7IF8xIGFzIFwiQ1RBQnV0dG9uV3JhcHBlclwiLCBfMiBhcyBcImFjdGlvbkJ1dHRvbnNcIiwgXzMgYXMgXCJhcHByb3ZlZFwiLCBfNCBhcyBcImJhZGdlRmVhdHVyZVdyYXBwZXJcIiwgXzUgYXMgXCJidXR0b25QaWxsXCIsIF82IGFzIFwiY2FuY2VsQnV0dG9uXCIsIF83IGFzIFwiY29udGludWVCdXR0b25cIiwgXzggYXMgXCJkZWxldGVJY29uXCIsIF85IGFzIFwicGVuZGluZ1wiLCBfYSBhcyBcInJlZnVuZERldGFpbFwiLCBfYiBhcyBcInJlZnVuZEVycm9yTXNnXCIsIF9jIGFzIFwicmVmdW5kU3VjY2Vzc2Z1bFwiLCBfZCBhcyBcInJlZnVuZFRleHRcIiwgX2UgYXMgXCJyZWZ1bmRUaWNrZXRBdHRlbmRlZVwiLCBfZiBhcyBcInJlZnVuZFRpY2tldEJveENvbnRhaW5lclwiLCBfMTAgYXMgXCJyZWplY3RlZFwiLCBfMTEgYXMgXCJzdWJ0aXRsZVwiLCBfMTIgYXMgXCJzdWNjZXNzTXNnXCIsIF8xMyBhcyBcInN1Y2Nlc3NNc2cyXCIsIF8xNCBhcyBcInRpY2tldExpc3RcIiwgXzE1IGFzIFwidGlja2V0Tm9cIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiY2xvc2VCdG5fX195U1FDT1wiO1xudmFyIF8yID0gXCJoZWFkZXJfX19mQlhHOVwiO1xudmFyIF8zID0gXCJ0aXRsZV9fX3R5WmVRXCI7XG52YXIgXzQgPSBcIndyYXBwZXJfX19ST0pHc1wiO1xuZXhwb3J0IHsgXzEgYXMgXCJjbG9zZUJ0blwiLCBfMiBhcyBcImhlYWRlclwiLCBfMyBhcyBcInRpdGxlXCIsIF80IGFzIFwid3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJzdW1taXRUaXRsZURhdGVfX19YbnJwRlwiO1xudmFyIF8yID0gXCJ3aWRnZXRIZWFkZXJfX19nZ0x0TVwiO1xuZXhwb3J0IHsgXzEgYXMgXCJzdW1taXRUaXRsZURhdGVcIiwgXzIgYXMgXCJ3aWRnZXRIZWFkZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwidW5hc3NpZ25CdG5fX19pN21neVwiO1xudmFyIF8yID0gXCJ1bmFzc2lnbldyYXBwZXJfX19nM2UydVwiO1xudmFyIF8zID0gXCJ3cmFwcGVyX19fVzk0U0xcIjtcbmV4cG9ydCB7IF8xIGFzIFwidW5hc3NpZ25CdG5cIiwgXzIgYXMgXCJ1bmFzc2lnbldyYXBwZXJcIiwgXzMgYXMgXCJ3cmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImhlYWRlck5vdGVfX19BZTVFQVwiO1xudmFyIF8yID0gXCJvcmRlck5vX19fVk9QUndcIjtcbnZhciBfMyA9IFwicHVyY2hhc2VkQnlfX19NTmlIVFwiO1xudmFyIF80ID0gXCJwdXJjaGFzZWRCeVdyYXBwZXJfX19EaDZIVVwiO1xudmFyIF81ID0gXCJ3cmFwcGVyX19fbVZ1aVpcIjtcbmV4cG9ydCB7IF8xIGFzIFwiaGVhZGVyTm90ZVwiLCBfMiBhcyBcIm9yZGVyTm9cIiwgXzMgYXMgXCJwdXJjaGFzZWRCeVwiLCBfNCBhcyBcInB1cmNoYXNlZEJ5V3JhcHBlclwiLCBfNSBhcyBcIndyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwidGlja2V0UmVhc3NpZ25Db250YWluZXJfX19nT3RhSlwiO1xuZXhwb3J0IHsgXzEgYXMgXCJ0aWNrZXRSZWFzc2lnbkNvbnRhaW5lclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJ3cmFwcGVyX19fRXdPUnpcIjtcbmV4cG9ydCB7IF8xIGFzIFwid3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJpbmZvTm90ZV9fX2kxWFk5XCI7XG52YXIgXzIgPSBcIndyYXBwZXJfX19NQXVOU1wiO1xuZXhwb3J0IHsgXzEgYXMgXCJpbmZvTm90ZVwiLCBfMiBhcyBcIndyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiYWN0aW9uQnV0dG9uc0NvbnRhaW5lcl9fX0F1dnJuXCI7XG52YXIgXzIgPSBcImFkZGl0aW9uYWxEZXRhaWxzX19fbVAxaUpcIjtcbnZhciBfMyA9IFwiYXR0ZW5kZWVDb250YWluZXJfX19RMFZVelwiO1xudmFyIF80ID0gXCJhdHRlbmRlZUluZm9UaXRsZV9fX0xtcm00XCI7XG52YXIgXzUgPSBcImNsb3NlQnRuX19fV05KbEVcIjtcbnZhciBfNiA9IFwiY29weUJ0bl9fX191dEE2XCI7XG52YXIgXzcgPSBcImRlbGVnYXRlZFRvX19fU0dWUUlcIjtcbnZhciBfOCA9IFwiZG93bmxvYWRCdG5fX19xalloelwiO1xudmFyIF85ID0gXCJoZWFkZXJfX19BdWduelwiO1xudmFyIF9hID0gXCJvcmRlck51bWJlcl9fX0w1UTVhXCI7XG52YXIgX2IgPSBcInFyQ29kZV9fX2Z3cVpxXCI7XG52YXIgX2MgPSBcInFyTm90ZV9fX0djN0tuXCI7XG52YXIgX2QgPSBcInNlbmRCdG5fX19rb1dNMlwiO1xudmFyIF9lID0gXCJzZW50X19fazZXS3hcIjtcbnZhciBfZiA9IFwic3RhdHVzX19fa3dDOHlcIjtcbnZhciBfMTAgPSBcInN1YnRpdGxlX19feV9OdU9cIjtcbnZhciBfMTEgPSBcInRpY2tldERldGFpbENvbnRhaW5lcl9fX2IyVExSXCI7XG52YXIgXzEyID0gXCJ0aXRsZV9fX3dRelVOXCI7XG5leHBvcnQgeyBfMSBhcyBcImFjdGlvbkJ1dHRvbnNDb250YWluZXJcIiwgXzIgYXMgXCJhZGRpdGlvbmFsRGV0YWlsc1wiLCBfMyBhcyBcImF0dGVuZGVlQ29udGFpbmVyXCIsIF80IGFzIFwiYXR0ZW5kZWVJbmZvVGl0bGVcIiwgXzUgYXMgXCJjbG9zZUJ0blwiLCBfNiBhcyBcImNvcHlCdG5cIiwgXzcgYXMgXCJkZWxlZ2F0ZWRUb1wiLCBfOCBhcyBcImRvd25sb2FkQnRuXCIsIF85IGFzIFwiaGVhZGVyXCIsIF9hIGFzIFwib3JkZXJOdW1iZXJcIiwgX2IgYXMgXCJxckNvZGVcIiwgX2MgYXMgXCJxck5vdGVcIiwgX2QgYXMgXCJzZW5kQnRuXCIsIF9lIGFzIFwic2VudFwiLCBfZiBhcyBcInN0YXR1c1wiLCBfMTAgYXMgXCJzdWJ0aXRsZVwiLCBfMTEgYXMgXCJ0aWNrZXREZXRhaWxDb250YWluZXJcIiwgXzEyIGFzIFwidGl0bGVcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiYnV0dG9uQ2FuY2VsbGVkX19fRXJsRFpcIjtcbnZhciBfMiA9IFwiYnV0dG9uQ29tcGxldGVfX19sbFdrWlwiO1xudmFyIF8zID0gXCJidXR0b25JbmNvbXBsZXRlX19fVG9sSGdcIjtcbnZhciBfNCA9IFwiYnV0dG9uUGlsbF9fX3pxMnRjXCI7XG52YXIgXzUgPSBcImJ1dHRvblJlZnVuZFJlcXVlc3RlZF9fX3BXdDMwXCI7XG52YXIgXzYgPSBcImJ1dHRvblVuYXNzaWduZWRfX19ZRGQ4WFwiO1xudmFyIF83ID0gXCJ0aWNrZXRTdGF0dXNDb250YWluZXJfX19xajZmYlwiO1xuZXhwb3J0IHsgXzEgYXMgXCJidXR0b25DYW5jZWxsZWRcIiwgXzIgYXMgXCJidXR0b25Db21wbGV0ZVwiLCBfMyBhcyBcImJ1dHRvbkluY29tcGxldGVcIiwgXzQgYXMgXCJidXR0b25QaWxsXCIsIF81IGFzIFwiYnV0dG9uUmVmdW5kUmVxdWVzdGVkXCIsIF82IGFzIFwiYnV0dG9uVW5hc3NpZ25lZFwiLCBfNyBhcyBcInRpY2tldFN0YXR1c0NvbnRhaW5lclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJhY3RpdmVfX190THlXWlwiO1xudmFyIF8yID0gXCJ0YWJPcHRpb25fX19INEgxdVwiO1xudmFyIF8zID0gXCJ0YWJXcmFwcGVyX19fdTIxc0dcIjtcbmV4cG9ydCB7IF8xIGFzIFwiYWN0aXZlXCIsIF8yIGFzIFwidGFiT3B0aW9uXCIsIF8zIGFzIFwidGFiV3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJ0aWNrZXRzVGl0bGVUZXh0X19fVERQbXBcIjtcbmV4cG9ydCB7IF8xIGFzIFwidGlja2V0c1RpdGxlVGV4dFwiIH1cbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RXaXRob3V0UHJvcGVydGllc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2hlY2tDaXJjbGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9DbG9zZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NvbnRlbnRDb3B5XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXJyb3JcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9FeHBhbmRNb3JlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRmlsdGVyTGlzdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ltcG9ydEV4cG9ydFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0luZm9cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9TZWFyY2hcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL0J1dHRvblwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL0NoZWNrYm94XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvRGlhbG9nXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvRGlhbG9nQWN0aW9uc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL0RpYWxvZ0NvbnRlbnRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9EaWFsb2dDb250ZW50VGV4dFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL0RpYWxvZ1RpdGxlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvRGl2aWRlclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL0lucHV0QmFzZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL1N0YWNrXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvVGFiXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvVGFic1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL1Rvb2x0aXBcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC91c2VNZWRpYVF1ZXJ5XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkByZWFjdC1wZGYvcmVuZGVyZXJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQHJlZHV4anMvdG9vbGtpdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAc2VudHJ5L3JlYWN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImZvcm1pa1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJpMThuZXh0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImkxOG5leHQtYnJvd3Nlci1sYW5ndWFnZWRldGVjdG9yXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImlkdG9rZW4tdmVyaWZpZXJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibW9tZW50LXRpbWV6b25lXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvY29tcG9uZW50cy9yYXctaHRtbFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L2FjdGlvbnNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9tZXRob2RzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvYWN0aW9uc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL21ldGhvZHNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9xdWVyeS1hY3Rpb25zXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInAtbGltaXRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicHJvcC10eXBlc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC1pMThuZXh0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LWluZmluaXRlLXNjcm9sbC1jb21wb25lbnRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QtcXItY29kZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC1yZWR1eFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC9qc3gtcnVudGltZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWR1eFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWR1eC1wZXJzaXN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlZHV4LXBlcnNpc3QvaW50ZWdyYXRpb24vcmVhY3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVkdXgtcGVyc2lzdC9saWIvc3RvcmFnZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ5dXBcIik7IiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHQvLyBubyBtb2R1bGUuaWQgbmVlZGVkXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXShtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbiIsIi8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSAobW9kdWxlKSA9PiB7XG5cdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuXHRcdCgpID0+IChtb2R1bGVbJ2RlZmF1bHQnXSkgOlxuXHRcdCgpID0+IChtb2R1bGUpO1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCB7IGE6IGdldHRlciB9KTtcblx0cmV0dXJuIGdldHRlcjtcbn07IiwiLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gKGV4cG9ydHMsIGRlZmluaXRpb24pID0+IHtcblx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcblx0XHR9XG5cdH1cbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gKG9iaiwgcHJvcCkgPT4gKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApKSIsIi8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uciA9IChleHBvcnRzKSA9PiB7XG5cdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuXHR9XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG59OyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5pbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBQcm92aWRlciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgUGVyc2lzdEdhdGUgfSBmcm9tIFwicmVkdXgtcGVyc2lzdC9pbnRlZ3JhdGlvbi9yZWFjdFwiO1xuaW1wb3J0IHsgU3R5bGVkRW5naW5lUHJvdmlkZXIgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlSW5pdFN0b3JlIH0gZnJvbSBcIi4vc3RvcmVcIjtcbmltcG9ydCB7IFJFU0VUX1NUQVRFLCBzZXRSZWR1Y2VyU3RhdGUgfSBmcm9tIFwiLi9hY3Rpb25zXCI7XG5cbmltcG9ydCBXaWRnZXRXcmFwcGVyIGZyb20gXCIuL2NvbXBvbmVudHMvV2lkZ2V0V3JhcHBlclwiO1xuXG5jb25zdCBNeU9yZGVyc015VGlja2V0c1dpZGdldCA9IChwcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgbG9naW5VcmwsXG4gICAgc3VwcG9ydEVtYWlsLFxuICAgIHN1bW1pdCxcbiAgICBhcGlCYXNlVXJsLFxuICAgIHJlY2VpcHRTZXR0aW5ncyxcbiAgICB1c2VyLFxuICAgIGNsaWVudElkLFxuICAgIHVwZGF0ZVByb2ZpbGVcbiAgfSA9IHByb3BzO1xuXG4gIGNvbnN0IHsgc3RvcmUsIHBlcnNpc3RvciB9ID0gdXNlSW5pdFN0b3JlKHtcbiAgICBsb2dpblVybCxcbiAgICBzdXBwb3J0RW1haWwsXG4gICAgc3VtbWl0LFxuICAgIHVzZXIsXG4gICAgYXBpQmFzZVVybCxcbiAgICByZWNlaXB0U2V0dGluZ3MsXG4gICAgY2xpZW50SWQsXG4gICAgdXBkYXRlUHJvZmlsZVxuICB9KTtcblxuICBjb25zdCBoYW5kbGVCZWZvcmVMaWZ0ID0gKCkgPT4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7XG4gICAgY29uc3QgZmx1c2ggPSBwYXJhbXMuaGFzKFwiZmx1c2hTdGF0ZVwiKTtcbiAgICBpZiAoZmx1c2gpIHN0b3JlLmRpc3BhdGNoKHsgdHlwZTogUkVTRVRfU1RBVEUsIHBheWxvYWQ6IG51bGwgfSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzdG9yZS5kaXNwYXRjaChzZXRSZWR1Y2VyU3RhdGUoc3VtbWl0LCB1c2VyKSk7XG4gIH0sIFtzdW1taXQsIHVzZXJdKTtcblxuICByZXR1cm4gKFxuICAgIDxQcm92aWRlciBzdG9yZT17c3RvcmV9PlxuICAgICAgPFBlcnNpc3RHYXRlXG4gICAgICAgIG9uQmVmb3JlTGlmdD17aGFuZGxlQmVmb3JlTGlmdH1cbiAgICAgICAgbG9hZGluZz17bnVsbH1cbiAgICAgICAgcGVyc2lzdG9yPXtwZXJzaXN0b3J9XG4gICAgICA+XG4gICAgICAgIDxTdHlsZWRFbmdpbmVQcm92aWRlciBpbmplY3RGaXJzdD5cbiAgICAgICAgICA8V2lkZ2V0V3JhcHBlciAvPlxuICAgICAgICA8L1N0eWxlZEVuZ2luZVByb3ZpZGVyPlxuICAgICAgPC9QZXJzaXN0R2F0ZT5cbiAgICA8L1Byb3ZpZGVyPlxuICApO1xufTtcblxuTXlPcmRlcnNNeVRpY2tldHNXaWRnZXQucHJvcFR5cGVzID0ge1xuICBsb2dpblVybDogUHJvcFR5cGVzLnN0cmluZyxcbiAgc3VwcG9ydEVtYWlsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIGFwaUJhc2VVcmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHJlY2VpcHRTZXR0aW5nczogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBwcmltYXJ5Q29sb3I6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgZm9udEZhbWlseTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBwcmludExvZ286IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgb3JnYW5pemVyTGVnYWxOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIG9yZ2FuaXplckFkZHJlc3NMaW5lMTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBvcmdhbml6ZXJBZGRyZXNzTGluZTI6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgb3JnYW5pemVyQ2l0eTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBvcmdhbml6ZXJTdGF0ZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBvcmdhbml6ZXJQb3N0YWxDb2RlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIG9yZ2FuaXplckNvdW50cnk6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgb3JnYW5pemVyVGF4SWQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgb3JnYW5pemVyVGF4SWRMYWJlbDogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBzdXBwb3J0RW1haWw6IFByb3BUeXBlcy5zdHJpbmdcbiAgfSksXG4gIHVzZXI6IFByb3BUeXBlcy5vYmplY3QsXG4gIGNsaWVudElkOiBQcm9wVHlwZXMuc3RyaW5nLFxuICB1cGRhdGVQcm9maWxlOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgTXlPcmRlcnNNeVRpY2tldHNXaWRnZXQ7XG4iXSwibmFtZXMiOlsiYXV0aEVycm9ySGFuZGxlciIsImNyZWF0ZUFjdGlvbiIsImRlbGV0ZVJlcXVlc3QiLCJnZXRSZXF1ZXN0IiwicHV0UmVxdWVzdCIsInN0YXJ0TG9hZGluZyIsInN0b3BMb2FkaW5nIiwicExpbWl0IiwiZ2V0SWRUb2tlbiIsIm9iamVjdFRvUXVlcnlTdHJpbmciLCJJZFRva2VuVmVyaWZpZXIiLCJpMThuIiwiYXV0aFByb21pc2VSZWplY3QiLCJnZXRBY2Nlc3NUb2tlblNhZmVseSIsImdlbmVyYXRlUmVjZWlwdFBERiIsIkRFRkFVTFRfSVRFTVNfUEVSX1BBR0UiLCJFUlJPUl9DT0RFUyIsIkZJRlRZX1BFUl9QQUdFIiwiRklMVEVSX0FDVElPTiIsIkZJUlNUX1BBR0UiLCJQUk9NSVNFX0JBVENIX0xJTUlUIiwiUkVTRVRfU1RBVEUiLCJSRVNFVF9GSUxURVIiLCJSRVNFVF9BUElfRVJST1IiLCJTRVRfU1RBVEUiLCJTRVRfQVBJX0VSUk9SIiwiQ0hBTkdFX0ZJTFRFUiIsIkNIQU5HRV9TT1JUIiwiR0VUX1VTRVJfT1JERVJTIiwiUkVGVU5EX09SREVSIiwiU0VUX0FDVElWRV9PUkRFUl9JRCIsIkZJTFRFUl9VU0VSX09SREVSUyIsIkdFVF9NWV9BU1NJR05FRF9USUNLRVRTIiwiVVBEQVRFX1RJQ0tFVCIsIlJFU0VUX1RJQ0tFVCIsIlJFQ0VJVkVfVElDS0VUIiwiUkVNT1ZFX1RJQ0tFVF9BVFRFTkRFRSIsIkFTU0lHTl9USUNLRVQiLCJERUxFR0FURV9USUNLRVQiLCJSRUZVTkRfVElDS0VUIiwiUkVTRU5EX05PVElGSUNBVElPTiIsIkdFVF9USUNLRVRTX0JZX09SREVSIiwiR0VUX1RJQ0tFVFNfQllfT1JERVJfRVJST1IiLCJHRVRfT1JERVJfVElDS0VUX0RFVEFJTFMiLCJHRVRfVElDS0VUX0RFVEFJTFMiLCJSRUNFSVZFX0VYVFJBX1FVRVNUSU9OUyIsIlRJQ0tFVF9BVFRFTkRFRV9LRVlTIiwiZW1haWwiLCJmaXJzdE5hbWUiLCJsYXN0TmFtZSIsImNvbXBhbnkiLCJkaXNjbGFpbWVyQWNjZXB0ZWQiLCJleHRyYVF1ZXN0aW9ucyIsIlVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURUQiLCJTVEFSVF9MT0FESU5HX0lEUF9QUk9GSUxFIiwiU1RPUF9MT0FESU5HX0lEUF9QUk9GSUxFIiwiVVBEQVRFX0lEUF9QUk9GSUxFIiwiU0VUX1VTRVIiLCJTRVRfU1VNTUlUIiwiR0VUX01BSU5fRVhUUkFfUVVFU1RJT05TIiwiUkVDRUlWRV9NQVJLRVRJTkdfU0VUVElOR1MiLCJDTEVBUl9NQVJLRVRJTkdfU0VUVElOR1MiLCJyZXNldFRpY2tldCIsImRpc3BhdGNoIiwicmVzZXRTdGF0ZSIsInJlc2V0RmlsdGVyIiwicmVzZXRFcnJvciIsInNldFJlZHVjZXJTdGF0ZSIsInN1bW1pdCIsInVzZXIiLCJGSUxURVJfVkFSX0RBVEUiLCJGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkUiLCJGSUxURVJfVkFSX1RJQ0tFVF9UWVBFIiwiRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORUQiLCJGSUxURVJfVkFSX09XTkVSX1NUQVRVUyIsIkZJTFRFUl9WQVJfUFJPTU9DT0RFIiwiRklMVEVSX1ZBUl9GUkVFX1BBSUQiLCJGSUxURVJfVkFSX09SREVSX05VTUJFUiIsImNoYW5nZUZpbHRlciIsImZpbHRlciIsImNoYW5nZVNvcnQiLCJzb3J0IiwicGFyc2VGaWx0ZXIiLCJmaWx0ZXJPYmoiLCJmaWx0ZXJBY3Rpb24iLCJwdXNoIiwiY29uY2F0IiwibG93ZXIiLCJ1cHBlciIsImxlbmd0aCIsImZpbHRlck5hbWUiLCJPUkRFUlMiLCJqb2luIiwiaW5wdXRGaWx0ZXJzIiwiVElDS0VUU19CWV9PUkRFUlMiLCJFWFRFUk5BTF9USUNLRVRTIiwiZ2V0U29ydERpcmVjdGlvbiIsImRpcmVjdGlvbiIsImVycm9ySGFuZGxlck5vdGlmeSIsInBheWxvYWQiLCJjYWxsYmFjayIsImN1c3RvbUF1dGhFcnJvckhhbmRsZXIiLCJlcnIiLCJyZXMiLCJjdXN0b21GZXRjaEVycm9ySGFuZGxlciIsInJlc3BvbnNlIiwiY29kZSIsInN0YXR1cyIsIm1zZyIsInQiLCJPYmplY3QiLCJlbnRyaWVzIiwiZXJyb3JzIiwiZm9yRWFjaCIsIl9yZWYiLCJrZXkiLCJ2YWx1ZSIsIk51bWJlciIsImlzTmFOIiwic3RhdHVzVGV4dCIsInRpdGxlIiwiaHRtbCIsImdldFVzZXJPcmRlcnMiLCJfcmVmMiIsInNraXBMb2FkaW5nIiwicGFnZSIsInBlclBhZ2UiLCJnZXRTdGF0ZSIsIl9yZWYzIiwiYXBpQmFzZVVybCIsIndpZGdldFN0YXRlIiwiYWNjZXNzVG9rZW4iLCJwYXJhbXMiLCJhY2Nlc3NfdG9rZW4iLCJvcmRlciIsInJlbGF0aW9ucyIsImZpZWxkcyIsInBlcl9wYWdlIiwia2V5cyIsImZpbHRlcnMiLCJuYW1lIiwiaWQiLCJ0aGVuIiwiY2F0Y2giLCJlIiwiZmluYWxseSIsInNldEFjdGl2ZU9yZGVySWQiLCJvcmRlcklkIiwic2V0VXNlciIsImdldFVzZXJUaWNrZXRzIiwiX3JlZjQiLCJfcmVmNSIsInVzZXJQcm9maWxlIiwiUHJvbWlzZSIsInJlamVjdCIsImV4cGFuZCIsImdldFRpY2tldHNCeU9yZGVyIiwiX3JlZjYiLCJfcmVmNyIsInJlc2VuZE5vdGlmaWNhdGlvbiIsInRpY2tldCIsIl9yZWY4IiwibWVzc2FnZSIsIm9yZGVyX2lkIiwicmVmdW5kVGlja2V0IiwiX3JlZjkiLCJfcmVmMTAiLCJyZWZ1bmRCdWxrVGlja2V0cyIsIl9yZWYxMSIsInRpY2tldHMiLCJsaW1pdCIsImFsbFJlZnVuZFRpY2tldENhbGxzIiwibWFwIiwiYWxsIiwic3VjY2Vzc2Z1bGx5UmVxdWVzdGVkIiwiciIsIl9yJHJlc3BvbnNlIiwicmVmdW5kX3JlcXVlc3RzIiwidXBkYXRlVGlja2V0c1JlZnVuZFJlcXVlc3RlZCIsInRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQiLCJnZXRFeHRyYVF1ZXN0aW9ucyIsImF0dGVuZGVlSWQiLCJfcmVmMTIiLCJlbmRwb2ludCIsImdldFRpY2tldCIsInRpY2tldElkIiwiX3JlZjEzIiwibm9ybWFsaXplVGlja2V0IiwiZW50aXR5Iiwibm9ybWFsaXplZEVudGl0eSIsIl9vYmplY3RTcHJlYWQiLCJhdHRlbmRlZV9jb21wYW55IiwiYXR0ZW5kZWVfY29tcGFueV9pZCIsInJlZnJlc2hQcm9maWxlIiwiZGF0YSIsInRpY2tldE93bmVyIiwiX3JlZjE0IiwiX3RpY2tldE93bmVyJG1hbmFnZXIiLCJ1cGRhdGVQcm9maWxlIiwiYXR0ZW5kZWVfZW1haWwiLCJhdHRlbmRlZV9maXJzdF9uYW1lIiwiYXR0ZW5kZWVfbGFzdF9uYW1lIiwiaGFzTWFuYWdlciIsIm1hbmFnZXIiLCJtYW5hZ2VyX2lkIiwiaXRzTWUiLCJwcm9maWxlQ2hhbmdlZCIsImZpcnN0X25hbWUiLCJsYXN0X25hbWUiLCJuZXdQcm9maWxlIiwic2F2ZVRpY2tldERldGFpbHMiLCJhbnN3ZXJzIiwiX3JlZjE1IiwiaWRUb2tlbiIsInZlcmlmaWVyIiwiand0IiwiZGVjb2RlIiwiY29uc29sZSIsImxvZyIsIm93bmVyIiwiYXNzaWduQXR0ZW5kZWUiLCJhcmd1bWVudHMiLCJ1bmRlZmluZWQiLCJfcmVmMTYiLCJyZW1vdmVUaWNrZXQiLCJfcmVmMTciLCJyZWFzc2lnblRpY2tldCIsInVuYXNzaWduVGlja2V0IiwiZGVsZWdhdGVUaWNrZXQiLCJfcmVmMTgiLCJzYXZlRXh0cmFRdWVzdGlvbnMiLCJfcmVmMTkiLCJub3JtYWxpemVkQW5zIiwiZG93bmxvYWRPcmRlclJlY2VpcHQiLCJfcmVmMjAiLCJfcmVmMjEiLCJyZWNlaXB0U2V0dGluZ3MiLCJnZXRUaWNrZXRQREYiLCJfcmVmMjIiLCJxdWVyeVN0cmluZyIsImFwaVVybCIsImZldGNoIiwicmVzcG9uc2VUeXBlIiwiaGVhZGVycyIsIm9rIiwiYmxvYiIsInBkZiIsImxpbmsiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJ1cmwiLCJ3aW5kb3ciLCJVUkwiLCJjcmVhdGVPYmplY3RVUkwiLCJocmVmIiwiZG93bmxvYWQiLCJkaXNwYXRjaEV2ZW50IiwiTW91c2VFdmVudCIsIlJlYWN0IiwidXNlU3RhdGUiLCJmb3J3YXJkUmVmIiwiUHJvcFR5cGVzIiwic3R5bGVzIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIk1BWF9JTklUSUFMUyIsIkJhZGdlRmVhdHVyZUljb24iLCJyZWYiLCJpbWFnZSIsImNsYXNzTmFtZSIsInByb3BzIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiX2V4Y2x1ZGVkIiwiaW1hZ2VMb2FkZWQiLCJzZXRJbWFnZUxvYWRlZCIsImltYWdlRXJyb3IiLCJzZXRJbWFnZUVycm9yIiwic2hvd0ZhbGxiYWNrIiwiaW5pdGlhbHMiLCJzcGxpdCIsIndvcmQiLCJzdWJzdHJpbmciLCJ0b1VwcGVyQ2FzZSIsImJhZGdlRmVhdHVyZUljb24iLCJjaGlsZHJlbiIsImJhZGdlRmVhdHVyZUltYWdlIiwic3JjIiwiYWx0Iiwib25Mb2FkIiwib25FcnJvciIsInN0eWxlIiwiZGlzcGxheSIsImJhZGdlRmVhdHVyZUluaXRpYWxzIiwicHJvcFR5cGVzIiwic3RyaW5nIiwiaXNSZXF1aXJlZCIsIkJ1dHRvbiIsIkRpYWxvZyIsIkRpYWxvZ0FjdGlvbnMiLCJEaWFsb2dDb250ZW50IiwiRGlhbG9nQ29udGVudFRleHQiLCJEaWFsb2dUaXRsZSIsInVzZVRyYW5zbGF0aW9uIiwiQ29uZmlybURpYWxvZyIsIm9wZW4iLCJib2R5Iiwib25DbG9zZSIsIm9uQ29uZmlybSIsIm9uQ2xpY2siLCJhdXRvRm9jdXMiLCJDb250ZW50Q29weUljb24iLCJUb29sdGlwIiwiTUlMTElTRUNfVE9fU0VDIiwiZGVmYXVsdFdpZHRoIiwiQ29weVRleHQiLCJ0ZXh0IiwidG9vbHRpcFRleHQiLCJoaWRlQ29weSIsInRydW5jYXRlZCIsInJldmVyc2VkIiwid2lkdGgiLCJ0b29sdGlwVGV4dFRvVXNlIiwidG9vbHRpcCIsInNldFRvb2x0aXAiLCJjbGFzc05hbWVzIiwiaGFuZGxlQ29weSIsIm5hdmlnYXRvciIsImNsaXBib2FyZCIsIndyaXRlVGV4dCIsInNldFRpbWVvdXQiLCJ3cmFwcGVyIiwiY29weUljb24iLCJib29sIiwibnVtYmVyIiwiY3JlYXRlQ29udGV4dCIsIkN1c3RvbU5vdGlmaWNhdGlvbkNvbnRleHQiLCJBbGVydCIsIlNuYWNrYmFyIiwiVHlwb2dyYXBoeSIsIkNoZWNrQ2lyY2xlSWNvbiIsIkVycm9ySWNvbiIsIkN1c3RvbU5vdGlmaWNhdGlvbiIsInNldmVyaXR5IiwiYW5jaG9yT3JpZ2luIiwidmVydGljYWwiLCJob3Jpem9udGFsIiwiYXV0b0hpZGVEdXJhdGlvbiIsInZhcmlhbnQiLCJzeCIsImJhY2tncm91bmRDb2xvciIsImljb25NYXBwaW5nIiwic3VjY2VzcyIsImZvbnRTaXplIiwiZXJyb3IiLCJmdW5jIiwiVGhlbWVQcm92aWRlciIsImNyZWF0ZVRoZW1lIiwiZGFya0NvbG9yIiwicm9vdCIsImRvY3VtZW50RWxlbWVudCIsImdldENvbXB1dGVkU3R5bGUiLCJnZXRQcm9wZXJ0eVZhbHVlIiwidGhlbWUiLCJwYWxldHRlIiwicHJpbWFyeSIsIm1haW4iLCJzZWNvbmRhcnkiLCJ0eXBvZ3JhcGh5IiwiYm9keTEiLCJmb250V2VpZ2h0IiwiaDUiLCJtYXJnaW5Cb3R0b20iLCJoNiIsImNvbXBvbmVudHMiLCJNdWlGb3JtSGVscGVyVGV4dCIsInN0eWxlT3ZlcnJpZGVzIiwiTXVpQnV0dG9uIiwibGluZUhlaWdodCIsIk11aVRhYiIsImNvbG9yIiwiTXVpVGFicyIsImluZGljYXRvciIsIkN1c3RvbVRoZW1lIiwibm9kZSIsIkNoZWNrYm94IiwiRm9ybUNvbnRyb2wiLCJGb3JtQ29udHJvbExhYmVsIiwiRm9ybUdyb3VwIiwiRm9ybUhlbHBlclRleHQiLCJGb3JtTGFiZWwiLCJSYXdIVE1MIiwiZ2V0TGFiZWwiLCJ0b1NsdWciLCJDaGVja2JveExpc3RRdWVzdGlvbkZpZWxkIiwiX3F1ZXN0aW9uJHZhbHVlcyIsInF1ZXN0aW9uIiwicXVlc3Rpb25DbGFzc05hbWUiLCJpc0Rpc2FibGVkIiwib25DaGFuZ2UiLCJzZXRGaWVsZFZhbHVlIiwiaGVscGVyVGV4dCIsInJlc3QiLCJxdWVzdGlvblNsdWciLCJxdWVzdGlvbkxhYmVsIiwibWFuZGF0b3J5IiwicXVlc3Rpb25NYXhWYWx1ZXMiLCJtYXhfc2VsZWN0ZWRfdmFsdWVzIiwicXVlc3Rpb25PcHRpb25zIiwidmFsdWVzIiwidmFsIiwibGFiZWwiLCJ0b1N0cmluZyIsImhhbmRsZUNoZWNrYm94TGlzdENoYW5nZSIsImNoZWNrZWQiLCJjdXJyZW50QW5zIiwibWF4U2VsZWN0aW9uUmVhY2hlZCIsIm5ld1ZhbHVlIiwidiIsImRpc2FibGVkIiwicmVxdWlyZWQiLCJmdWxsV2lkdGgiLCJtYXJnaW4iLCJvcCIsImNvbnRyb2wiLCJpbmNsdWRlcyIsImV2IiwidGFyZ2V0Iiwib2JqZWN0IiwiYXJyYXkiLCJDaGVja2JveFF1ZXN0aW9uRmllbGQiLCJhbGlnbkl0ZW1zIiwibWFyZ2luVG9wIiwiSW5wdXRMYWJlbCIsIk1lbnVJdGVtIiwiU2VsZWN0IiwiRHJvcGRvd25RdWVzdGlvbkZpZWxkIiwibGFiZWxJZCIsIlJhZGlvIiwiUmFkaW9Hcm91cCIsIlJhZGlvTGlzdFF1ZXN0aW9uRmllbGQiLCJUZXh0RmllbGQiLCJUZXh0UXVlc3Rpb25GaWVsZCIsIlF1ZXN0aW9uVHlwZV9DaGVja2JveCIsIlF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QiLCJRdWVzdGlvblR5cGVfQ29tYm9Cb3giLCJRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94IiwiUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdCIsImNoZWNrUnVsZSIsInJ1bGUiLCJhbnN3ZXJfdmFsdWVzIiwiQXJyYXkiLCJpc0FycmF5IiwiYW5zd2VyX3ZhbHVlc19vcGVyYXRvciIsImNoZWNrVmlzaWJpbGl0eSIsInJ1bGVSZXN1bHQiLCJ2aXNpYmlsaXR5IiwidmlzaWJpbGl0eV9jb25kaXRpb24iLCJxdWVzdGlvbklkIiwidGV4dExDIiwidG9Mb3dlckNhc2UiLCJyZXBsYWNlIiwicSIsIl9xJGxhYmVsIiwiaXNBbnN3ZXJlZCIsImFuc3dlciIsImNoZWNrSWZWYWx1ZU1hdGNoIiwiY29tcGFyZVZhbCIsImFuc3dlckFycmF5Iiwic29tZSIsImdldFR5cGVJbml0aWFsVmFsdWUiLCJ0eXBlIiwiZ2V0VHlwZVZhbHVlIiwiYW5zIiwidHJhbnNmb3JtQW53ZXJzRm9ybWF0IiwiZGlzY2xhaW1lcl9hY2NlcHRlZCIsImV4dHJhX3F1ZXN0aW9ucyIsImZvcm1hdHRlZEVRIiwicXVlc3Rpb25faWQiLCJwYXJzZUludCIsInBvcCIsIlF1ZXN0aW9uVHlwZV9UZXh0IiwiUXVlc3Rpb25UeXBlX1RleHRBcmVhIiwiUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uIiwiZ2V0UXVlc3Rpb25GaWVsZENvbXBvbmVudCIsInF1ZXN0aW9uVHlwZSIsIkZyYWdtZW50IiwiRXh0cmFRdWVzdGlvbnNGaWVsZHMiLCJvcmlnaW5hbEFuc3dlcnMiLCJyZWFkT25seSIsImFsbG93RWRpdCIsImZvcm1payIsInJlbmRlclJ1bGUiLCJpc1Zpc2libGUiLCJyZW5kZXJRdWVzdGlvbiIsInN1Yl9xdWVzdGlvbiIsIl9xJHN1Yl9xdWVzdGlvbl9ydWxlcyIsIlF1ZXN0aW9uRmllbGRDb21wb25lbnQiLCJmb3JtaWtQcm9wcyIsImhhbmRsZUNoYW5nZSIsIm9uQmx1ciIsImhhbmRsZUJsdXIiLCJ0b3VjaGVkIiwiQm9vbGVhbiIsInN1Yl9xdWVzdGlvbl9ydWxlcyIsInVzZVNlbGVjdG9yIiwic2hhbGxvd0VxdWFsIiwiQm94IiwiQ2FyZEhlYWRlciIsIkljb25CdXR0b24iLCJDb2xsYXBzZSIsIkNhcmRDb250ZW50IiwiRXhwYW5kTW9yZUljb24iLCJBc3NpZ25lZEZpbHRlciIsIm9uRmlsdGVyIiwiZmlsdGVyVmFsdWVzIiwic3RhdGUiLCJpc0V4cGFuZGVkIiwic2V0SXNFeHBhbmRlZCIsImFzc2lnbmVkVmFsdWVzIiwiaGFuZGxlRmlsdGVyQ2hhbmdlIiwibmV3RmlsdGVyIiwidGl0bGVXcmFwcGVyIiwiYWN0aW9uIiwiZGlzYWJsZVJpcHBsZSIsInRyYW5zZm9ybSIsInRyYW5zaXRpb24iLCJpbiIsInRpbWVvdXQiLCJ1bm1vdW50T25FeGl0IiwicHkiLCJwYiIsImFzc2lnbmVkIiwidXNlRWZmZWN0IiwiQmFkZ2VGZWF0dXJlRmlsdGVyIiwiYmFkZ2VfZmVhdHVyZXNfdHlwZXMiLCJuZXdGaWx0ZXJzIiwiZiIsImJmIiwidXNlUmVmIiwiU3RhY2siLCJGaWx0ZXJMaXN0SWNvbiIsIkJhZGdlIiwiQ2FyZCIsIkRpdmlkZXIiLCJQYXBlciIsImNvbm5lY3QiLCJUaWNrZXRUeXBlRmlsdGVyIiwiU3RhdHVzRmlsdGVyIiwiRnJlZVBhaWRGaWx0ZXIiLCJQcm9tb0NvZGVGaWx0ZXIiLCJGaWx0ZXIiLCJvblJlc2V0IiwiYWN0aXZlRmlsdGVyc0NvdW50Iiwic2hvd0ZpbHRlckxpc3QiLCJzZXRTaG93RmlsdGVyTGlzdCIsInNob3dEYXRlcGlja2VyIiwic2V0U2hvd0RhdGVwaWNrZXIiLCJmaWx0ZXJSZWYiLCJoYW5kbGVGaWx0ZXJDbGlja091dHNpZGUiLCJldmVudCIsImN1cnJlbnQiLCJjb250YWlucyIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwidG9nZ2xlIiwiaGFuZGxlRmlsdGVyUmVzZXQiLCJmaWx0ZXJDb250YWluZXIiLCJwdCIsImJhZGdlQ29udGVudCIsIm1yIiwiZmlsdGVySWNvbiIsImZpbHRlckxhYmVsIiwiZmlsdGVyTGlzdENvbnRhaW5lciIsImNvbnRhaW5lciIsImVsZXZhdGlvbiIsImZpbHRlckNoZWNrYm94Q29udGFpbmVyIiwiY2xlYW5CdXR0b24iLCJtYXBTdGF0ZVRvUHJvcHMiLCJwcm9tb0NvZGUiLCJzZXRQcm9tb0NvZGUiLCJkZWJvdW5jZVRpbWVyIiwiREVCT1VOQ0VfVkFMVUUiLCJuZXdQcm9tb0NvZGUiLCJjbGVhclRpbWVvdXQiLCJwbGFjZWhvbGRlciIsInN0eWxlZCIsIlNlYXJjaEljb24iLCJDbG9zZUljb24iLCJJbnB1dEJhc2UiLCJTZWFyY2hDb250YWluZXIiLCJwb3NpdGlvbiIsIm1hcmdpblJpZ2h0IiwibWFyZ2luTGVmdCIsIlNlYXJjaEljb25XcmFwcGVyIiwiaGVpZ2h0IiwianVzdGlmeUNvbnRlbnQiLCJTdHlsZWRJbnB1dEJhc2UiLCJib3JkZXJCb3R0b20iLCJwYWRkaW5nTGVmdCIsInBhZGRpbmdSaWdodCIsIkNsb3NlSWNvbldyYXBwZXIiLCJwYWRkaW5nIiwidG9wIiwicmlnaHQiLCJjdXJzb3IiLCJ6SW5kZXgiLCJTZWFyY2giLCJvblNlYXJjaCIsInNlYXJjaFZhbHVlIiwic2V0U2VhcmNoVmFsdWUiLCJzaG93Q2xvc2VCdG4iLCJvbktleURvd24iLCJuYXRpdmVFdmVudCIsInJlc2V0U2VhcmNoIiwiaW5wdXRQcm9wcyIsIkltcG9ydEV4cG9ydEljb24iLCJTb3J0Iiwib25Tb3J0Iiwic2hvd1NvcnQiLCJzZXRTaG93U29ydCIsInNvcnRSZWYiLCJoYW5kbGVTb3J0Q2xpY2tPdXRzaWRlIiwic29ydENvbnRhaW5lciIsInNvcnRJY29uIiwic29ydExhYmVsIiwic29ydExpc3RDb250YWluZXIiLCJ0aWNrZXRfdHlwZXMiLCJHcmlkIiwiRmlsdGVycyIsImp1c3RpZnkiLCJpdGVtIiwieHMiLCJnYXAiLCJmaWx0ZXJTb3J0Q29udGFpbmVyIiwiRm9ybUZvb3RlciIsInNhdmVMYWJlbCIsImNhbmNlbExhYmVsIiwiZm9vdGVyIiwiY2FuY2VsQnRuIiwic2l6ZSIsInNhdmVCdG4iLCJFcnJvckxhYmVsIiwiZGF0YVRlc3RJZCIsImVycm9yTGFiZWwiLCJCYWNrZHJvcCIsIkNpcmN1bGFyUHJvZ3Jlc3MiLCJMb2FkZXIiLCJkcmF3ZXIiLCJJbmZpbml0ZVNjcm9sbCIsIk9yZGVyc0xpc3QiLCJPTkVfUEFHRV9ORVhUIiwiTXlPcmRlcnNUaWNrZXRzIiwiZmV0Y2hEYXRhIiwibWVtYmVyT3JkZXJzIiwib3JkZXJzX2N1cnJlbnRfcGFnZSIsIm9yZGVyc19sYXN0X3BhZ2UiLCJteU9yZGVyc1dyYXBwZXIiLCJkYXRhTGVuZ3RoIiwibmV4dCIsImhhc01vcmUiLCJzY3JvbGxUaHJlc2hvbGQiLCJUaWNrZXRzSWNvbiIsInZpZXdCb3giLCJmaWxsIiwieG1sbnMiLCJkIiwic3Ryb2tlIiwic3Ryb2tlV2lkdGgiLCJzdHJva2VMaW5lY2FwIiwic3Ryb2tlRGFzaGFycmF5IiwiVEFCUyIsIl9GcmFnbWVudCIsIk5vVGlja2V0c0ZvdW5kIiwicGFnZVZpZXciLCJsb2FkaW5nIiwiZ2V0Q29udGVudCIsIm1haWx0b1RhZyIsInN1cHBvcnRfZW1haWwiLCJidXR0b25MYWJlbCIsIlRJQ0tFVFMiLCJpY29uV3JhcHBlciIsIkRvY3VtZW50IiwiUGFnZSIsIlRleHQiLCJWaWV3IiwiSW1hZ2UiLCJTdHlsZVNoZWV0IiwiRm9udCIsInJlZ2lzdGVyZWRGb250cyIsIlNldCIsIkZBTExCQUNLX0ZPTlQiLCJERUZBVUxUX1JFQ0VJUFRfU0VUVElOR1MiLCJwcmltYXJ5Q29sb3IiLCJmb250RmFtaWx5IiwiZm9udEZpbGUiLCJwcmludExvZ28iLCJvcmdhbml6ZXJMZWdhbE5hbWUiLCJvcmdhbml6ZXJBZGRyZXNzTGluZTEiLCJvcmdhbml6ZXJBZGRyZXNzTGluZTIiLCJvcmdhbml6ZXJDaXR5Iiwib3JnYW5pemVyU3RhdGUiLCJvcmdhbml6ZXJQb3N0YWxDb2RlIiwib3JnYW5pemVyQ291bnRyeSIsIm9yZ2FuaXplclRheElkIiwib3JnYW5pemVyVGF4SWRMYWJlbCIsInN1cHBvcnRFbWFpbCIsInJlZ2lzdGVyRm9udCIsImhhcyIsInJlZ2lzdGVyIiwiZmFtaWx5IiwiZm9udHMiLCJhZGQiLCJ3YXJuIiwidmFsaWRhdGVJbWFnZVVybCIsIm1ldGhvZCIsIm1vZGUiLCJDVVJSRU5DWV9ERUNJTUFMUyIsIk1TX1BFUl9TRUNPTkQiLCJNSU5fTUFTS19MRU5HVEgiLCJNQVhfTUFTS19DSEFSUyIsImZvcm1hdEN1cnJlbmN5IiwiYW1vdW50IiwiY3VycmVuY3lTeW1ib2wiLCJjdXJyZW5jeSIsIm51bUFtb3VudCIsInBhcnNlRmxvYXQiLCJ0b0ZpeGVkIiwiZm9ybWF0RGF0ZSIsInRpbWVzdGFtcCIsImRhdGUiLCJEYXRlIiwidG9Mb2NhbGVEYXRlU3RyaW5nIiwieWVhciIsIm1vbnRoIiwiZGF5IiwibWFza1Byb21vQ29kZSIsImNoYXJzIiwiZmlyc3QiLCJzaGlmdCIsImxhc3QiLCJtYXNrTGVuZ3RoIiwiTWF0aCIsIm1pbiIsInJlcGVhdCIsImNhcGl0YWxpemUiLCJzdHIiLCJnZXRCYWRnZVN0YXR1cyIsInJlZnVuZGVkQW1vdW50IiwibnVtUmVmdW5kZWQiLCJnZXRQYXltZW50TWV0aG9kTGFiZWwiLCJwYXltZW50X2luZm9fdHlwZSIsInBheW1lbnRfbWV0aG9kIiwiZm9ybWF0QWRkcmVzcyIsInNldHRpbmdzIiwicGFydHMiLCJjaXR5U3RhdGVaaXAiLCJSZWNlaXB0UERGIiwibG9nb1VybCIsImNyZWF0ZSIsImhlYWRlciIsImZsZXhEaXJlY3Rpb24iLCJib3JkZXJCb3R0b21XaWR0aCIsImJvcmRlckJvdHRvbUNvbG9yIiwicGFkZGluZ0JvdHRvbSIsImhlYWRlckxlZnQiLCJmbGV4IiwiaGVhZGVyU3VidGl0bGUiLCJoZWFkZXJUaXRsZVJvdyIsImZsZXhXcmFwIiwiaGVhZGVyVGl0bGUiLCJoZWFkZXJUYWdsaW5lIiwicGFpZEJhZGdlIiwicGFkZGluZ1ZlcnRpY2FsIiwicGFkZGluZ0hvcml6b250YWwiLCJib3JkZXJSYWRpdXMiLCJoZWFkZXJSaWdodCIsImxvZ28iLCJtYXhXaWR0aCIsIm1heEhlaWdodCIsIm9iamVjdEZpdCIsInR3b0NvbCIsImNvbEhhbGYiLCJzZWN0aW9uVGl0bGUiLCJ0ZXh0VHJhbnNmb3JtIiwibGV0dGVyU3BhY2luZyIsImZpZWxkTGFiZWwiLCJmaWVsZFZhbHVlIiwic21hbGxNdXRlZCIsInRhYmxlIiwidGFibGVIZWFkZXIiLCJ0YWJsZUhlYWRlckNlbGwiLCJ0YWJsZVJvdyIsInRhYmxlQ2VsbCIsInRleHRSaWdodCIsInRleHRBbGlnbiIsInRvdGFsc1RhYmxlIiwidG90YWxzUm93IiwidG90YWxzTGFiZWwiLCJ0b3RhbHNWYWx1ZSIsInRvdGFsc1RvdGFsUm93IiwiYm9yZGVyVG9wV2lkdGgiLCJib3JkZXJUb3BDb2xvciIsInBhZGRpbmdUb3AiLCJ0b3RhbHNCYWxhbmNlUm93IiwiYm94IiwiYm9yZGVyV2lkdGgiLCJib3JkZXJDb2xvciIsImJveFRpdGxlIiwiY3VycmVuY3lfc3ltYm9sIiwiYWRkcmVzc0xpbmVzIiwiYmFkZ2UiLCJyZWZ1bmRlZF9hbW91bnQiLCJ0YWdsaW5lIiwibGluZSIsImlzc3VlX2RhdGUiLCJwdXJjaGFzZWRfZGF0ZSIsImNvbmZpcm1hdGlvbl9kYXRlIiwib3duZXJfZnVsbF9uYW1lIiwib3duZXJfY29tcGFueSIsIm93bmVyX2VtYWlsIiwiX3RpY2tldCR0aWNrZXRfdHlwZSIsInRpY2tldF90eXBlX25hbWUiLCJ0aWNrZXRfdHlwZSIsInByb21vX2NvZGUiLCJmaW5hbF9hbW91bnQiLCJyYXdfY29zdCIsInJhd19hbW91bnQiLCJkaXNjb3VudCIsImFwcGxpZWRfdGF4ZXMiLCJ0YXgiLCJwYXltZW50X21ldGhvZF9yZWFkYWJsZSIsImNyZWRpdF9jYXJkX3R5cGUiLCJjcmVkaXRfY2FyZF80bnVtYmVyIiwiX3RpY2tldHMkIiwiZm9udFJlZ2lzdGVyZWQiLCJtZW1iZXJUaWNrZXRzIiwib3JkZXJEYXRhIiwiZGlzY291bnRfYW1vdW50IiwiY3JlYXRlZCIsImhvdXIiLCJtaW51dGUiLCJob3VyMTIiLCJ0aW1lWm9uZU5hbWUiLCJvd25lcl9maXJzdF9uYW1lIiwib3duZXJfbGFzdF9uYW1lIiwiX3QkcHJvbW9fY29kZSIsInN1bW1pdERhdGEiLCJkYXRlc19sYWJlbCIsImxvY2F0aW9uIiwid2Vic2l0ZSIsImRvYyIsInRvQmxvYiIsImFwcGVuZENoaWxkIiwiY2xpY2siLCJyZW1vdmVDaGlsZCIsInJldm9rZU9iamVjdFVSTCIsInVzZURpc3BhdGNoIiwidXNlTm93IiwidGlja2V0c1JlZnVuZGFibGUiLCJ1c2VTdW1taXREZXRhaWxzIiwiT3JkZXJBY3Rpb25zIiwic3VibWl0UmVxdWVzdCIsIm9uUmVmdW5kQ2xpY2siLCJvblJlZnVuZERldGFpbENsaWNrIiwiaXNTdGFydGVkIiwibm93IiwiaXNEb3dubG9hZGluZyIsInNldElzRG93bmxvYWRpbmciLCJpc0luUmVmdW5kYWJsZVBlcmlvZCIsInJlZ2lzdHJhdGlvbl9hbGxvd2VkX3JlZnVuZF9yZXF1ZXN0X3RpbGxfZGF0ZSIsImF0TGVhc3RPbmVSZWZ1bmRhYmxlVGlja2V0IiwiaXNSZWZ1bmRhYmxlIiwiaGFzUmVmdW5kUmVxdWVzdHMiLCJfdCRyZWZ1bmRfcmVxdWVzdHMiLCJjYW5Eb3dubG9hZFJlY2VpcHQiLCJoYW5kbGVEb3dubG9hZFJlY2VpcHQiLCJyb2xlIiwib3JkZXJTdW1tYXJ5QnV0dG9uIiwicmVmdW5kRGlzYWJsZWQiLCJyZWwiLCJhcnJheU9mIiwiY2FsY3VsYXRlT3JkZXJUb3RhbHMiLCJPcmRlclN1bW1hcnlUYWJsZSIsImRpc2NvdW50VG90YWwiLCJyZWZ1bmRUb3RhbCIsImFtb3VudFRvdGFsIiwic3ViVG90YWwiLCJ0aWNrZXRTdW1tYXJ5IiwidGF4ZXNTdW1tYXJ5IiwiaHVuZHJlZCIsIm9yZGVyU3VtbWFyeVRhYmxlIiwidGlja2V0VG90YWwiLCJxdHkiLCJjb3N0IiwiYWxpZ24iLCJ0YXhlc19hbW91bnQiLCJzaGFwZSIsIk9yZGVyU3VtbWFyeSIsIm9yZGVyU3VtbWFyeVdyYXBwZXIiLCJweCIsIm9yZGVyU3VtbWFyeVB1cmNoYXNlZEluZm8iLCJPcmRlckxpc3RUaWNrZXRzIiwiQXNzaWduVG9NZSIsInVzZXJUaWNrZXRzIiwidXNlcl90aWNrZXRzX2N1cnJlbnRfcGFnZSIsInVzZXJfdGlja2V0c19sYXN0X3BhZ2UiLCJvcmRlclRpY2tldENvbnRhaW5lciIsImFzc2lnbmVkVG9NZVdyYXBwZXIiLCJ0aWNrZXRMaXN0Q29udGFpbmVyIiwiaXNSZWZ1bmRNb2RhbCIsImlzU2VsZWN0ZWRUb1JlZnVuZCIsInNlbGVjdFRvUmVmdW5kIiwiaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0IiwiQXNzaWduZWRUbyIsIkV4dGVybmFsQXNzaWduZWRUbyIsIk1hbmFnZUZvciIsIkF0dGVuZGVlU3RhdHVzIiwiX3RpY2tldCRvd25lciIsIl90aWNrZXQkb3duZXIyIiwiX3RpY2tldCRvd25lcjMiLCJpc1VuYXNzaWduZWQiLCJpc19hY3RpdmUiLCJpc0RlbGVnYXRlZCIsInRpY2tldE93bmVyRW1haWwiLCJfdGlja2V0JG9yZGVyIiwiX3RpY2tldCRvcmRlcjIiLCJfdGlja2V0JG93bmVyNCIsIl90aWNrZXQkb3duZXI1IiwiYXNzaWduZWRCeVRleHQiLCJQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQiLCJPcmRlckxpc3RJdGVtIiwiX29yZGVyJG1lbWJlclRpY2tldHMiLCJfb3JkZXIkbWVtYmVyVGlja2V0czIiLCJvblBhZ2luYXRlQ2xpY2siLCJ0aWNrZXRzVG9SZWZ1bmQiLCJpdGVtc1RvRGlzcGxheSIsInNldEl0ZW1zVG9EaXNwbGF5IiwidGlja2V0c190b3RhbCIsInNsaWNlZFRpY2tldHMiLCJzbGljZSIsIm9uVmlld01vcmUiLCJvblZpZXdMZXNzIiwiZmluZCIsInZpZXdNb3JlQnV0dG9uIiwiVGlja2V0U3RhdHVzIiwiZ2V0U3VtbWl0UmVhc3NpZ25EYXRlIiwiVGlja2V0RGV0YWlsIiwidXNlVGlja2V0RGV0YWlscyIsIlRpY2tldEFzc2lnbiIsIm1vZGFsVmlld3MiLCJkZXRhaWwiLCJyZWFzc2lnbiIsImFzc2lnbiIsIlRpY2tldENUQXMiLCJpc0luY29tcGxldGUiLCJpc1JlYXNzaWduYWJsZSIsIm9uT3BlbkNsaWNrIiwiYXNzaWduVGlja2V0QnV0dG9uIiwidmlld0ZpbmlzaFRpY2tldEJ1dHRvbiIsInJlYXNzaWduQnV0dG9uIiwiX3RpY2tldCRiYWRnZSIsImNhblJlYXNzaWduIiwibW9kYWxPcGVuIiwic2V0TW9kYWxPcGVuIiwicmVhc3NpZ25EYXRlIiwib25SZWFzc2lnbmFibGVQZXJpb2QiLCJoYW5kbGVDbG9zZU1vZGFsIiwiaGFuZGxlT3Blbk1vZGFsIiwidmlldyIsIm9yZGVyV3JhcHBlciIsInJlZnVuZE1vZGFsIiwiZGlzYWJsZWRSZWZ1bmQiLCJzZWxlY3RlZCIsImNoZWNrYm94IiwicGwiLCJ0aWNrZXRUaWNrZXRUeXBlIiwiYmFkZ2VGZWF0dXJlV3JhcHBlciIsInByIiwiZmVhdHVyZXMiLCJ0aWNrZXRObyIsInRpY2tldEZvb3RlciIsInRpY2tldEFjdGlvbkJ1dHRvbnMiLCJvd25lcklkIiwidG90YWxfcmVmdW5kZWRfYW1vdW50IiwiVGFicyIsIlRhYiIsIlJlZnVuZFJlcXVlc3RzTW9kYWwiLCJSZWZ1bmREZXRhaWxzIiwiVGFiUGFuZWwiLCJpbmRleCIsImhpZGRlbiIsIk9yZGVyc0xpc3REZXNrdG9wTW9iaWxlIiwiaXNNb2JpbGUiLCJkZXRhaWxzUmVxdWlyZWQiLCJzZXRWYWx1ZSIsIl8iLCJzZXRUaWNrZXRzVG9SZWZ1bmQiLCJzZXRTdWJtaXRSZXF1ZXN0IiwicmVmdW5kRGV0YWlsc09wZW4iLCJzZXRSZWZ1bmREZXRhaWxzT3BlbiIsInVuc2VsZWN0UmVmdW5kVGlja2V0cyIsImZpbHRlclNlbGVjdGVkIiwic2VsZWN0ZWRUaWNrZXQiLCJjbG9zZVN1Ym1pdFJlcXVlc3QiLCJyZXNldEFsbFJlZnVuZFN0YXR1c2VzIiwibW9yZURldGFpbHMiLCJ0YWJCdXR0b25zIiwib25SZWZ1bmRTdWNjZXNzQ2xvc2UiLCJvbkNsb3NlU2xpZGVyIiwibWQiLCJ1c2VUaGVtZSIsInVzZU1lZGlhUXVlcnkiLCJnZXRGb3JtYXR0ZWREYXRlIiwidGlja2V0X3Blcl9wYWdlIiwiYnJlYWtwb2ludHMiLCJkb3duIiwiaXNNb2JpbGVWaWV3YWJsZSIsInNldE1vYmlsZVZpZXdhYmxlIiwidGlja2V0c19wYWdlX2N1cnJlbnQiLCJsZyIsIm9yZGVyVGlja2V0SW5mb0NvbnRhaW5lciIsIm9yZGVyVGlja2V0SW5mbyIsInJvd1NwYWNpbmciLCJjb2x1bW5TcGFjaW5nIiwic20iLCJkaXNwbGF5X25vbmUiLCJ1c2VNZW1vIiwiUmlnaHREcmF3ZXIiLCJSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQiLCJnZXRBbGxSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRzIiwicmVxdWVzdGVkVGlja2V0cyIsImNsb3NlU2xpZGVyIiwicmVmdW5kRGV0YWlscyIsInRvb2x0aXBDbGFzc2VzIiwiSW5mb0ljb24iLCJtb21lbnQiLCJSZWZ1bmRTdGF0dXMiLCJHUklEXzgiLCJHUklEXzEyIiwiUEFERElOR18yIiwiYXBwcm92ZWRSZWZ1bmRzIiwicmVmdW5kIiwicmVmdW5kZWRUYXhlc1N1bW1hdG9yeSIsInJlZnVuZGVkX3RheGVzIiwicnQiLCJ0YXhJZCIsInRvdGFsUmVmdW5kZWRUYXhBbW91bnQiLCJIdG1sVG9vbHRpcCIsImNsYXNzZXMiLCJwb3BwZXIiLCJib3JkZXIiLCJyZWZ1bmRUaWNrZXRCb3hDb250YWluZXIiLCJyZWZ1bmREZXRhaWwiLCJyZWZ1bmRUaWNrZXRBdHRlbmRlZSIsImFjdGlvbl9kYXRlIiwiZm9ybWF0IiwiQ2hpcCIsImdldFJlZnVuZFJlcXVlc3RlZFN0YXR1c0NvbG9yIiwic3RhdHVzQ29sb3IiLCJidXR0b25QaWxsIiwiU3R5bGVkRW5naW5lUHJvdmlkZXIiLCJTVEVQX09ORSIsIlNURVBfVEhSRUUiLCJTVEVQX1RXTyIsInN0ZXAiLCJzZXRTdGVwIiwiZXJyb3JNc2ciLCJzZXRFcnJvck1zZyIsInJlZnVuZFN1Y2Nlc3MiLCJzZXRSZWZ1bmRTdWNjZXNzIiwiY29uZmlybVJlZnVuZCIsImdvQmFja1RvUmVmdW5kIiwicmVmdW5kVGlja2V0cyIsInJlZnVuZFN0ZXBPbmUiLCJzdWJ0aXRsZSIsInRpY2tldExpc3QiLCJhY3Rpb25CdXR0b25zIiwiY2FuY2VsQnV0dG9uIiwiY29udGludWVCdXR0b24iLCJyZWZ1bmRTdGVwVHdvIiwicmVmdW5kRXJyb3JNc2ciLCJDVEFCdXR0b25XcmFwcGVyIiwicmVmdW5kU3RlcFRocmVlIiwicmVmdW5kU3VjY2Vzc2Z1bCIsInN1Y2Nlc3NNc2ciLCJzdWNjZXNzTXNnMiIsInJlbmRlclN0ZXBzIiwiaW5qZWN0Rmlyc3QiLCJEcmF3ZXIiLCJDbG9zZSIsImhlYWRlckNoaWxkcmVuIiwiYW5jaG9yIiwiTW9kYWxQcm9wcyIsImtlZXBNb3VudGVkIiwiY2xvc2VCdG4iLCJmbG9hdCIsImd1dHRlckJvdHRvbSIsIm9uZU9mVHlwZSIsIlN1bW1pdEhlYWRlciIsIndpZGdldEhlYWRlciIsInN1bW1pdFRpdGxlRGF0ZSIsIlRhYldyYXBwZXIiLCJ0YWIiLCJzZXRUYWIiLCJoYXNUaWNrZXRzIiwiaXNGaWx0ZXJlZCIsImNsZWFyRmlsdGVycyIsImdldFBhZ2VWaWV3IiwiZ2V0T25DbGljayIsInRhYlRvTGluayIsIkxpbmsiLCJSZWFzc2lnbkZvcm0iLCJEZWxlZ2F0ZUZvcm0iLCJBc3NpZ25PcHRpb25zIiwiYXNzaWduT3B0aW9uIiwic2V0QXNzaWduT3B0aW9uIiwib25Bc3NpZ24iLCJvbkRlbGVnYXRlIiwib25VbkFzc2lnbiIsIm9wZW5Db25maXJtVW5hc3NpZ24iLCJzZXRPcGVuQ29uZmlybVVuYXNzaWduIiwiaXNBc3NpZ25lZFRvTWUiLCJhbGxvd3NEZWxlZ2F0ZSIsImhhbmRsZVVuQXNzaWduIiwibXkiLCJvblN1Ym1pdCIsIm5ld19hdHRlbmRlZV9lbWFpbCIsInBlcnNvbmFsX21lc3NhZ2UiLCJkZWxlZ2F0ZV9maXJzdF9uYW1lIiwiZGVsZWdhdGVfbGFzdF9uYW1lIiwiZGVsZWdhdGVfZW1haWwiLCJ1bmFzc2lnbldyYXBwZXIiLCJjb21wb25lbnQiLCJ0ZXh0RGVjb3JhdGlvbiIsInRleHREZWNvcmF0aW9uQ29sb3IiLCJ1c2VGb3JtaWsiLCJ5dXAiLCJpbml0aWFsVmFsdWVzIiwidmFsaWRhdGlvblNjaGVtYSIsInJlc2V0Rm9ybSIsImhhbmRsZUNhbmNlbCIsImhhbmRsZVN1Ym1pdCIsIm5vVmFsaWRhdGUiLCJpc1N1Ym1pdHRpbmciLCJBc3NpZ25IZWFkZXIiLCJpblByb2dyZXNzIiwidXNlckVtYWlsIiwiYXNzaWduZWRUb1lvdSIsImdldFNlY29uZGFyeVRpdGxlIiwiZ2V0SGVhZGVyTm90ZSIsInRyYW5zS2V5IiwicHVyY2hhc2VkQnlXcmFwcGVyIiwicHVyY2hhc2VkQnkiLCJvcmRlck5vIiwiaGVhZGVyTm90ZSIsIlJlYXNzaWduSGVhZGVyIiwibXVsdGlsaW5lIiwibWluUm93cyIsInVzZUNvbnRleHQiLCJUaWNrZXRGb3JtIiwidXNlR2V0VGlja2V0IiwiVElDS0VUX0RSQVdFUl9JRCIsInN1Y2Nlc3NNZXNzYWdlIiwiZXJyb3JNZXNzYWdlIiwiYXNzaWduYXRpb25JblByb2dyZXNzIiwic2V0QXNzaWduYXRpb25JblByb2dyZXNzIiwiaXNVc2VyT3JkZXJPd25lciIsIm93bmVyX2lkIiwiaXNVc2VyVGlja2V0T3duZXIiLCJjYW5FZGl0VGlja2V0RGF0YSIsImFsbG93X3VwZGF0ZV9hdHRlbmRlZV9leHRyYV9xdWVzdGlvbnMiLCJvbkNsb3NlRVFGb3JtIiwib25TYXZlRVEiLCJyZXNvbHZlIiwiSGVhZGVyIiwidGlja2V0UmVhc3NpZ25Db250YWluZXIiLCJjYW5FZGl0IiwiQXV0b2NvbXBsZXRlIiwicXVlcnlSZWdpc3RyYXRpb25Db21wYW5pZXMiLCJDb21wYW55RmllbGQiLCJzdW1taXRJZCIsImlucHV0VmFsdWUiLCJzZXRJbnB1dFZhbHVlIiwib3B0aW9ucyIsInNldE9wdGlvbnMiLCJzZXRGaWVsZFRvdWNoZWQiLCJyZXN1bHRzIiwibmV3T3B0aW9ucyIsImF1dG9Db21wbGV0ZSIsImZyZWVTb2xvIiwiaW5jbHVkZUlucHV0SW5MaXN0IiwiZmlsdGVyU2VsZWN0ZWRPcHRpb25zIiwiZ2V0T3B0aW9uTGFiZWwiLCJvcHRpb24iLCJ0bXBWYWx1ZSIsIm9uSW5wdXRDaGFuZ2UiLCJuZXdJbnB1dFZhbHVlIiwiZmlsdGVyT3B0aW9ucyIsImZpbHRlcmVkIiwiaXNFeGlzdGluZyIsInJlbmRlcklucHV0IiwicmVuZGVyT3B0aW9uIiwib3B0aW9uUHJvcHMiLCJSZWdpc3RyYXRpb25EaXNjbGFpbWVyIiwiZGlzY2xhaW1lciIsIlFSQ29kZSIsIkVtYWlsT3V0bGluZWQiLCJFbWFpbEljb24iLCJGaWxlRG93bmxvYWRPdXRsaW5lZCIsIkRvd25sb2FkSWNvbiIsIlRXT19JVEVNIiwiVGlja2V0RGV0YWlsSGVhZGVyIiwiaXNWaXJ0dWFsU3VtbWl0IiwiaXNDb21wbGV0ZSIsInNlbnRDb25maXJtYXRpb24iLCJzZXRTZW50Q29uZmlybWF0aW9uIiwiZG93bmxvYWRUaWNrZXRQZGYiLCJvblNlbmRFbWFpbCIsInFyQ29kZSIsInFyX2NvZGUiLCJxck5vdGUiLCJhY3Rpb25CdXR0b25zQ29udGFpbmVyIiwiZG93bmxvYWRCdG4iLCJzZW5kQnRuIiwic2VudCIsIm9yZGVyTnVtYmVyIiwiVGlja2V0T3duZXJGaWVsZHMiLCJ1c2VTY3JvbGxUb0Vycm9yIiwicGFyc2VBbnN3ZXJzIiwiYnVpbGRWYWxpZGF0aW9uU2NoZW1hIiwicmVkdWNlIiwicmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfbWFuZGF0b3J5IiwicmVsZXZhbnRBbnN3ZXJzIiwiZW5hYmxlUmVpbml0aWFsaXplIiwiYWRkaXRpb25hbERldGFpbHMiLCJyZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9jb250ZW50IiwiaW5mb05vdGUiLCJvblNhdmUiLCJ0aWNrZXREZXRhaWxDb250YWluZXIiLCJpc192aXJ0dWFsIiwiYXR0ZW5kZWVDb250YWluZXIiLCJhdHRlbmRlZUluZm9UaXRsZSIsIkNvbnRhaW5lciIsIl90aWNrZXQkcmVmdW5kX3JlcXVlcyIsImlzQWN0aXZlIiwicmVmdW5kUmVxdWVzdHMiLCJ0aWNrZXRTdGF0dXNDb250YWluZXIiLCJidXR0b25SZWZ1bmRSZXF1ZXN0ZWQiLCJidXR0b25JbmNvbXBsZXRlIiwiYnV0dG9uVW5hc3NpZ25lZCIsImJ1dHRvbkNvbXBsZXRlIiwiYnV0dG9uQ2FuY2VsbGVkIiwiQXNzaWduZWRUb01lIiwiV2lkZ2V0VGFicyIsInRpY2tldHNGdWxseUxvYWRlZCIsInNldFRpY2tldHNGdWxseUxvYWRlZCIsIm9yZGVyc19wZXJfcGFnZSIsIm9yZGVyc1BlclBhZ2UiLCJ0aWNrZXRQZXJQYWdlIiwiaGFuZGxlVGFiQ2hhbmdlIiwibmV3VGFiIiwiZmV0Y2hBc3NpZ25lZFRpY2tldHMiLCJmZXRjaE9yZGVyVGlja2V0cyIsIm9yZGVyVGlja2V0c1Byb21pc2VzIiwiY3VycmVudF9wYWdlIiwiZmV0Y2hQcm9taXNlcyIsInRhYldyYXBwZXIiLCJXaWRnZXRXcmFwcGVyIiwibXNnRGF0YSIsInNldE1zZ0RhdGEiLCJtZXNzYWdlQ29udGV4dCIsImZpbHRlclZhbHVlIiwic29ydFZhbHVlIiwidGlja2V0c1RpdGxlVGV4dCIsIlByb3ZpZGVyIiwicnVuIiwiY3VycmVudFRpY2tldCIsInNtb290aFNjcm9sbFRvIiwidGFyZ2V0U2Nyb2xsVG9wIiwiZHVyYXRpb24iLCJzdGFydFNjcm9sbFRvcCIsInNjcm9sbFRvcCIsImRpc3RhbmNlIiwic3RhcnRUaW1lIiwiYW5pbWF0aW9uU3RlcCIsImVsYXBzZWQiLCJwcm9ncmVzcyIsImVhc2VJbk91dFF1YWQiLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJpc1ZhbGlkIiwiZXJyb3JBcnJheSIsImVycm9yQ291bnQiLCJlbGVtZW50c1NvcnRlZCIsInJlc3VsdCIsImVsZW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwiZWxSZWN0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiYSIsImIiLCJnZXRFbGVtZW50QnlJZCIsImNvbnRhaW5lclJlY3QiLCJlbGVtT2ZmZXN0IiwiYW5pbWF0aW9uRHVyYXRpb24iLCJpc1RpY2tldFJlZnVuZGFibGUiLCJTVEFUVVNfQ09NUExFVEUiLCJTVEFUVVNfSU5DT01QTEVURSIsIlNUQVRVU19DQU5DRUxMRUQiLCJTVEFUVVNfVU5BU1NJR05FRCIsIl90aWNrZXQkcHJvbW9fY29kZSIsIl90aWNrZXQkdGlja2V0X3R5cGUyIiwiX3RpY2tldCRwcm9tb19jb2RlMiIsImdldFN0YXR1cyIsImFsbG93c190b19kZWxlZ2F0ZSIsImFsbG93c190b19yZWFzc2lnbiIsImluaXRSZWFjdEkxOG5leHQiLCJMYW5ndWFnZURldGVjdG9yIiwiZW4iLCJlcyIsInVzZSIsImluaXQiLCJmYWxsYmFja0xuZyIsImRlYnVnIiwicmVzb3VyY2VzIiwidHJhbnNsYXRpb24iLCJpbnRlcnBvbGF0aW9uIiwiZXNjYXBlVmFsdWUiLCJMT0dPVVRfVVNFUiIsIlNUQVJUX0xPQURJTkciLCJTVE9QX0xPQURJTkciLCJSRVNFVF9MT0FESU5HIiwiY2FsY3VsYXRlQWN0aXZlRmlsdGVycyIsImhhc0xvYWRlZEFsbERhdGEiLCJ1cGRhdGVUaWNrZXRDb2xsZWN0aW9uIiwiREVGQVVMVF9GSUxURVJfU1RBVEUiLCJERUZBVUxUX1NUQVRFIiwid2lkZ2V0TG9hZGluZyIsImN1cnJlbnRfdGFiIiwib3JkZXJzX3RvdGFsIiwidGlja2V0X2N1cnJlbnRfcGFnZSIsInRpY2tldF9sYXN0X3BhZ2UiLCJ0aWNrZXRfdG90YWwiLCJ1c2VyX3RpY2tldHNfdG90YWwiLCJhcGlFcnJvciIsIldpZGdldFJlZHVjZXIiLCJuZXdBY3RpdmVDb3VudCIsInRvdGFsIiwibGFzdF9wYWdlIiwiZm9ybWVyT3JkZXIiLCJvIiwiX2RhdGEkIiwibmV3T3JkZXJzIiwibW8iLCJfZGF0YSQyIiwibmV3VGlja2V0cyIsInRpY2tldHNfcGFnZV9sYXN0IiwiX3RpY2tldHNSZWZ1bmRSZXF1ZXN0IiwidXBkYXRlZFRpY2tldHMiLCJ0cnIiLCJ1cGRhdGVkT3JkZXIiLCJ0aWNrZXREYXRhIiwibmV3VXNlclRpY2tldHMiLCJjb25maWd1cmVTdG9yZSIsInBlcnNpc3RTdG9yZSIsInBlcnNpc3RSZWR1Y2VyIiwiRkxVU0giLCJSRUhZRFJBVEUiLCJQQVVTRSIsIlBFUlNJU1QiLCJQVVJHRSIsIlJFR0lTVEVSIiwic3RvcmFnZSIsImNvbWJpbmVSZWR1Y2VycyIsImdldFN0b3JlIiwiY2xpZW50SWQiLCJsb2dpblVybCIsInJlZHVjZXJzIiwic3RvcmUiLCJyZWR1Y2VyIiwibWlkZGxld2FyZSIsImdldERlZmF1bHRNaWRkbGV3YXJlIiwidGh1bmsiLCJleHRyYUFyZ3VtZW50IiwiaW1tdXRhYmxlQ2hlY2siLCJzZXJpYWxpemFibGVDaGVjayIsImlnbm9yZWRBY3Rpb25zIiwidXNlSW5pdFN0b3JlIiwiY29uZmlnIiwicGVyc2lzdG9yIiwiaW5pdExvZ091dCIsImdldEFjY2Vzc1Rva2VuIiwiU2VudHJ5IiwiZ2V0QWNjZXNzVG9rZW5Nb2NrIiwiRXJyb3IiLCJjYXB0dXJlRXhjZXB0aW9uIiwiTEFTVF9IT1VSX09GXzI0X0hPVVIiLCJMQVNUX01JTlVURV9PRl9IT1VSIiwiT05FX0RBWSIsIk1JTl9SRVFVSVJFRCIsIlNUQVRVU19QRU5ESU5HIiwiU1RBVFVTX0VSUk9SIiwiU1RBVFVTX1BST0NFU1NJTkciLCJTVEFUVVNfUkVGVU5EX1BFTkRJTkciLCJTVEFUVVNfUkVGVU5EX0FQUFJPVkVEIiwiU1RBVFVTX1JFRlVORF9SRUpFQ1RFRCIsIlNUQVRVU19SRUZVTkRfUEVORElOR19MQyIsIlNUQVRVU19SRUZVTkRfQVBQUk9WRURfTEMiLCJTVEFUVVNfUkVGVU5EX1JFSkVDVEVEX0xDIiwiSkVTVF9USU1FT1VUX0lOX01JTExJU0VDIiwiT05FX0lURU0iLCJGSVZFX0lURU0iLCJTSVhfSVRFTSIsIk9ORV9SRVRSWSIsImxvY2FsZSIsImRlZmF1bHRPcHRpb25zIiwibWluaW11bUZyYWN0aW9uRGlnaXRzIiwibWF4aW11bUZyYWN0aW9uRGlnaXRzIiwiZm9ybWF0dGVyIiwiSW50bCIsIk51bWJlckZvcm1hdCIsImRhdGV0aW1lIiwidGltZVpvbmUiLCJ0eiIsInVuaXgiLCJfb3JkZXIkYXBwbGllZF90YXhlcyIsImN1cnJlbmN5T2JqZWN0IiwicHVyY2hhc2VUaWNrZXRUb3RhbCIsInRpY2tldHNfZXhjZXJwdF9ieV90aWNrZXRfdHlwZSIsInRpY2tldFR5cGUiLCJ0dCIsInRpY2tldF90eXBlX2lkIiwiZm9ybWF0dGVkVGF4IiwicHVyY2hhc2VUb3RhbCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImdldE9yZGVyVGlja2V0cyIsIl9vcmRlcnMkIiwib3JkZXJzIiwiZ2V0RXBvY2hMb3dlclVwcGVySW5TZWNvbmRzIiwidHMiLCJzZXRIb3VycyIsImRlZmF1bHRDdXJyZW50VGltZSIsInJvdW5kIiwiZ2V0Tm93IiwidGltZXJTdGF0ZSIsIm5vd1V0YyIsImN1cnJlbnRQYWdlIiwiY291bnQiLCJ0cmltIiwiY2hlY2tTdW1taXRQYXN0IiwicmVhc3NpZ25fZGF0ZSIsInJlYXNzaWduX3RpY2tldF90aWxsX2RhdGUiLCJlbmRfZGF0ZSIsImNoZWNrU3VtbWl0U3RhcnRlZCIsInN0YXJ0X2RhdGUiLCJnZXRTdW1taXREYXlzRGlmZiIsInN0YXJ0RGF5IiwidGltZV96b25lX2lkIiwiZW5kRGF5IiwiZGF5cyIsImRpZmYiLCJnZXRTdW1taXRGb3JtYXR0ZWREYXRlIiwiZm9ybWF0U3RhcnREYXRlIiwiZm9ybWF0RW5kRGF0ZSIsInN0YXJ0RGF0ZSIsImVuZERhdGUiLCJnZXRTdW1taXRMb2NhdGlvbiIsIl9zdW1taXQkbG9jYXRpb25zIiwibG9jYXRpb25zIiwibCIsImNsYXNzX25hbWUiLCJpc19tYWluIiwiY2l0eSIsImNvdW50cnkiLCJfc3VtbWl0JHRpbWVfem9uZSIsIl9zdW1taXQkdGltZV96b25lMiIsImZvcm1hdHRlZERhdGUiLCJmb3JtYXR0ZWRSZWFzc2lnbkRhdGUiLCJ0aW1lX3pvbmUiLCJkYXlzVW50aWxSZWFzc2lnbkRlYWRsaW5lIiwiaXNQYXN0Iiwic3RhdHVzRGF0YSIsImdldFRpY2tldFN0YXR1c0tleSIsImdldFRpY2tldFN0YXR1c0RhdGEiLCJpc1N1bW1pdFBhc3QiLCJnZXRUaWNrZXRSb2xlIiwiZmVhdHVyZSIsImdldFRpY2tldFR5cGUiLCJuZXRfc2VsbGluZ19jb3N0IiwicnIiLCJnZXRSZWZ1bmRlZFJlcXVlc3RlZFRpY2tldHMiLCJfdGlja2V0JHJlZnVuZF9yZXF1ZXMyIiwiYWxsVGlja2V0cyIsIl90aWNrZXQkcmVmdW5kX3JlcXVlczMiLCJfdGlja2V0JHJlZnVuZF9yZXF1ZXM0IiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzNSIsImdldFJlZnVuZGVkUmVxdWVzdGVkU3RhdHVzIiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzNiIsIl90aWNrZXQkcmVmdW5kX3JlcXVlczciLCJfdGlja2V0JHJlZnVuZF9yZXF1ZXM4IiwiZ2V0VHlwZVZhbGlkYXRpb24iLCJzY2hlbWEiLCJvbmVPZiIsIm9mIiwicGFyc2VTdWJRdWVzdGlvbkFuc3dlciIsIm9ubHlSZWxldmFudCIsInN1YlF1ZXN0aW9uU2x1ZyIsInN1YkFuc3dlciIsIm1hdGNoIiwiaW5jbHVkZUF0dGVuZGVlSW5mbyIsImluY2x1ZGVEaXNjbGFpbWVyIiwiYnVpbGRTdWJRdWVzdGlvblZhbGlkYXRpb25TY2hlbWEiLCJfc3ViUXVlc3Rpb24kc3ViX3F1ZXMiLCJzdWJRdWVzdGlvbiIsIm51bGxhYmxlIiwid2hlbiIsImlzIiwicXVlc3Rpb25BbnMiLCJhbnNWYWx1ZU1hdGNoIiwic2NoIiwic3ViUnVsZSIsImRpc2NsYWltZXJNYW5kYXRvcnkiLCJsYXp5IiwidHlwZUVycm9yIiwiX3Qkb3duZXIiLCJfdCRvd25lcjIiLCJfdGlja2V0JG93bmVyNiIsInRtcFRpY2tldCIsIlBlcnNpc3RHYXRlIiwiTXlPcmRlcnNNeVRpY2tldHNXaWRnZXQiLCJoYW5kbGVCZWZvcmVMaWZ0IiwiVVJMU2VhcmNoUGFyYW1zIiwic2VhcmNoIiwiZmx1c2giLCJvbkJlZm9yZUxpZnQiXSwic291cmNlUm9vdCI6IiJ9
|