bookingsync-calendar-widget 2.1.3 → 2.1.4
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.
|
@@ -6502,7 +6502,7 @@ class CalendarTree {
|
|
|
6502
6502
|
* start date is ALWAYS < then end date , as we are selecting time range in days.
|
|
6503
6503
|
*
|
|
6504
6504
|
* @param {Array} start e.g. [2016, 0, 1]
|
|
6505
|
-
* @param {Array} end
|
|
6505
|
+
* @param {Array} end [2016, 1, 3]
|
|
6506
6506
|
* @returns {{range: Array, isValid: {Boolean}}}
|
|
6507
6507
|
*/
|
|
6508
6508
|
|
|
@@ -7271,6 +7271,14 @@ class Calendar extends widget_utils__WEBPACK_IMPORTED_MODULE_1__["default"] {
|
|
|
7271
7271
|
(0,widget_utils__WEBPACK_IMPORTED_MODULE_20__.destroyElement)(this.dom.tooltip);
|
|
7272
7272
|
}
|
|
7273
7273
|
}
|
|
7274
|
+
/**
|
|
7275
|
+
* Highlights the range of cells between the start and end dates.
|
|
7276
|
+
* @public
|
|
7277
|
+
* @param {Array} start e.g. [2016, 0, 1]
|
|
7278
|
+
* @param {Array} end [2016, 1, 3]
|
|
7279
|
+
* @returns {boolean} - Whether the range is valid or not.
|
|
7280
|
+
*/
|
|
7281
|
+
|
|
7274
7282
|
|
|
7275
7283
|
highLightRange(start, end) {
|
|
7276
7284
|
const {
|
|
@@ -7288,18 +7296,18 @@ class Calendar extends widget_utils__WEBPACK_IMPORTED_MODULE_1__["default"] {
|
|
|
7288
7296
|
|
|
7289
7297
|
if ((0,widget_utils__WEBPACK_IMPORTED_MODULE_21__.isArray)(range)) {
|
|
7290
7298
|
if (opts.rentalId) {
|
|
7299
|
+
const rangeWithoutLast = range.slice(0, -1);
|
|
7300
|
+
|
|
7291
7301
|
if (!opts.allowShorterMinStaySelection) {
|
|
7292
7302
|
// get the biggest minStay value in the range
|
|
7293
|
-
|
|
7294
|
-
|
|
7295
|
-
}));
|
|
7303
|
+
const cells = rangeWithoutLast.map(cell => cell.dataset.minStay || minStay);
|
|
7304
|
+
minStay = Math.max(...cells);
|
|
7296
7305
|
}
|
|
7297
7306
|
|
|
7298
7307
|
if (!opts.allowLongerMaxStaySelection) {
|
|
7299
7308
|
// get the biggest maxStay value in the range
|
|
7300
|
-
|
|
7301
|
-
|
|
7302
|
-
}));
|
|
7309
|
+
const cells = rangeWithoutLast.map(cell => cell.dataset.maxStay || maxStay);
|
|
7310
|
+
maxStay = Math.max(...cells);
|
|
7303
7311
|
}
|
|
7304
7312
|
} // check that range is valid and longer than minStay and shorter than maxStay
|
|
7305
7313
|
|
|
@@ -7348,6 +7356,7 @@ class Calendar extends widget_utils__WEBPACK_IMPORTED_MODULE_1__["default"] {
|
|
|
7348
7356
|
if (tooltipPosition && this.el.contains(cell) && !this.hasValidRange) {
|
|
7349
7357
|
this.dom.tooltip = this.el.appendChild((0,widget_utils__WEBPACK_IMPORTED_MODULE_13__.elementFromString)(_templates__WEBPACK_IMPORTED_MODULE_14__.tooltip));
|
|
7350
7358
|
this.dom.tooltip.querySelector('span').innerHTML = invalidRangeMessage;
|
|
7359
|
+
this.logger("invalidRangeMessage: ".concat(invalidRangeMessage, " (").concat(start, " - ").concat(end, ")"), 'warn');
|
|
7351
7360
|
this.tooltipPopper = window.Popper.createPopper(cell, this.dom.tooltip, {
|
|
7352
7361
|
placement: 'top',
|
|
7353
7362
|
modifiers: [{
|
|
@@ -7406,6 +7415,14 @@ class Calendar extends widget_utils__WEBPACK_IMPORTED_MODULE_1__["default"] {
|
|
|
7406
7415
|
|
|
7407
7416
|
return this;
|
|
7408
7417
|
}
|
|
7418
|
+
/**
|
|
7419
|
+
* select range from the tree
|
|
7420
|
+
*
|
|
7421
|
+
* @param {Array} start e.g. [2016, 0, 1]
|
|
7422
|
+
* @param {Array} end [2016, 1, 3]
|
|
7423
|
+
* @returns {{range: Array, isValid: {Boolean}}}
|
|
7424
|
+
*/
|
|
7425
|
+
|
|
7409
7426
|
|
|
7410
7427
|
selectRange(start, end) {
|
|
7411
7428
|
if ((0,_utils__WEBPACK_IMPORTED_MODULE_9__.isLater)(start, end)) {
|
|
@@ -8754,7 +8771,7 @@ module.exports = "data:image/svg+xml;charset=utf8,%3Csvg xmlns=%27http://www.w3.
|
|
|
8754
8771
|
/***/ ((module) => {
|
|
8755
8772
|
|
|
8756
8773
|
"use strict";
|
|
8757
|
-
module.exports = JSON.parse('{"name":"bookingsync-calendar-widget","version":"2.1.
|
|
8774
|
+
module.exports = JSON.parse('{"name":"bookingsync-calendar-widget","version":"2.1.4","description":"BookingSync Calendar Widget","main":"dist/bookingsync-calendar-widget.js","module":"src/index.js","sideEffects":false,"files":["/dist","/src"],"scripts":{"dev":"webpack --config webpack.dev.js","build":"webpack --config webpack.prod.js","start":"node json-server.js --quiet & webpack serve --open --config webpack.dev.js","test":"node json-server.js --quiet & karma start karma.config.js --colors","test-ci":"node json-server.js --quiet & sleep 2 && curl http://localhost:3000/api/v2/public/maps.json && karma start karma.config.js --single-run true","lint:js":"eslint ./*.js src","mock-server":"node nodemon-start.js","preversion":"npm run lint:js && npm run test-ci","version":"npm run build && npm run dev && git add -A dist","postversion":"git push && git push --tags && rm -rf build/temp"},"dependencies":{"@popperjs/core":"^2.11.6","strtime":"^1.1.2","widget-utils":"0.5.0"},"devDependencies":{"@babel/cli":"^7.18.10","@babel/core":"^7.19.0","@babel/polyfill":"^7.12.1","@babel/preset-env":"^7.19.0","assert":"^2.0.0","babel-loader":"^8.2.5","chai":"^4.3.6","css-loader":"^6.7.1","eslint":"^8.23.0","eslint-webpack-plugin":"^3.2.0","json-server":"0.17.1","karma":"^6.4.0","karma-chai":"^0.1.0","karma-chrome-launcher":"^3.1.1","karma-mocha":"^2.0.1","karma-webpack":"5.0.0","mocha":"10.0.0","node-sass":"^7.0.1","nodemon":"^2.0.19","sass-loader":"^13.0.2","style-loader":"^3.3.1","tether":"2.0.0","timezone-mock":"1.3.4","util":"^0.12.4","webpack":"^5.74.0","webpack-cli":"^4.10.0","webpack-dev-server":"4.10.1","webpack-merge":"^5.8.0","yargs":"17.5.1"},"repository":{"type":"git","url":"git+https://github.com/BookingSync/calendar-widget.git"},"author":"BookingSync.com","license":"MIT","bugs":{"url":"https://github.com/BookingSync/calendar-widget/issues"},"homepage":"https://github.com/BookingSync/calendar-widget#readme","engines":{"yarn":"YARN NO LONGER USED - use npm instead."}}');
|
|
8758
8775
|
|
|
8759
8776
|
/***/ })
|
|
8760
8777
|
|
|
@@ -8909,4 +8926,4 @@ window.BookingSyncCalendarWidget = Calendar;
|
|
|
8909
8926
|
|
|
8910
8927
|
/******/ })()
|
|
8911
8928
|
;
|
|
8912
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJYyxxQkFBcUIsR0FBRyw4R0FBNUI7QUFDQSxJQUFJQyxtQkFBbUIsR0FBRywrSEFBMUI7QUFDQSxJQUFJQyxlQUFlLEdBQUc7RUFDcEJDLFNBQVMsRUFBRSxRQURTO0VBRXBCQyxTQUFTLEVBQUUsRUFGUztFQUdwQkMsUUFBUSxFQUFFO0FBSFUsQ0FBdEI7O0FBTUEsU0FBU0MsZ0JBQVQsR0FBNEI7RUFDMUIsS0FBSyxJQUFJQyxJQUFJLEdBQUdDLFNBQVMsQ0FBQ0MsTUFBckIsRUFBNkJDLElBQUksR0FBRyxJQUFJQyxLQUFKLENBQVVKLElBQVYsQ0FBcEMsRUFBcURLLElBQUksR0FBRyxDQUFqRSxFQUFvRUEsSUFBSSxHQUFHTCxJQUEzRSxFQUFpRkssSUFBSSxFQUFyRixFQUF5RjtJQUN2RkYsSUFBSSxDQUFDRSxJQUFELENBQUosR0FBYUosU0FBUyxDQUFDSSxJQUFELENBQXRCO0VBQ0Q7O0VBRUQsT0FBTyxDQUFDRixJQUFJLENBQUNHLElBQUwsQ0FBVSxVQUFVQyxPQUFWLEVBQW1CO0lBQ25DLE9BQU8sRUFBRUEsT0FBTyxJQUFJLE9BQU9BLE9BQU8sQ0FBQ0MscUJBQWYsS0FBeUMsVUFBdEQsQ0FBUDtFQUNELENBRk8sQ0FBUjtBQUdEOztBQUVNLFNBQVNDLGVBQVQsQ0FBeUJDLGdCQUF6QixFQUEyQztFQUNoRCxJQUFJQSxnQkFBZ0IsS0FBSyxLQUFLLENBQTlCLEVBQWlDO0lBQy9CQSxnQkFBZ0IsR0FBRyxFQUFuQjtFQUNEOztFQUVELElBQUlDLGlCQUFpQixHQUFHRCxnQkFBeEI7RUFBQSxJQUNJRSxxQkFBcUIsR0FBR0QsaUJBQWlCLENBQUNFLGdCQUQ5QztFQUFBLElBRUlBLGdCQUFnQixHQUFHRCxxQkFBcUIsS0FBSyxLQUFLLENBQS9CLEdBQW1DLEVBQW5DLEdBQXdDQSxxQkFGL0Q7RUFBQSxJQUdJRSxzQkFBc0IsR0FBR0gsaUJBQWlCLENBQUNJLGNBSC9DO0VBQUEsSUFJSUEsY0FBYyxHQUFHRCxzQkFBc0IsS0FBSyxLQUFLLENBQWhDLEdBQW9DbkIsZUFBcEMsR0FBc0RtQixzQkFKM0U7RUFLQSxPQUFPLFNBQVNFLFlBQVQsQ0FBc0JDLFNBQXRCLEVBQWlDQyxNQUFqQyxFQUF5Q0MsT0FBekMsRUFBa0Q7SUFDdkQsSUFBSUEsT0FBTyxLQUFLLEtBQUssQ0FBckIsRUFBd0I7TUFDdEJBLE9BQU8sR0FBR0osY0FBVjtJQUNEOztJQUVELElBQUlLLEtBQUssR0FBRztNQUNWeEIsU0FBUyxFQUFFLFFBREQ7TUFFVnlCLGdCQUFnQixFQUFFLEVBRlI7TUFHVkYsT0FBTyxFQUFFRyxNQUFNLENBQUNDLE1BQVAsQ0FBYyxFQUFkLEVBQWtCNUIsZUFBbEIsRUFBbUNvQixjQUFuQyxDQUhDO01BSVZTLGFBQWEsRUFBRSxFQUpMO01BS1ZDLFFBQVEsRUFBRTtRQUNSUixTQUFTLEVBQUVBLFNBREg7UUFFUkMsTUFBTSxFQUFFQTtNQUZBLENBTEE7TUFTVlEsVUFBVSxFQUFFLEVBVEY7TUFVVkMsTUFBTSxFQUFFO0lBVkUsQ0FBWjtJQVlBLElBQUlDLGdCQUFnQixHQUFHLEVBQXZCO0lBQ0EsSUFBSUMsV0FBVyxHQUFHLEtBQWxCO0lBQ0EsSUFBSUMsUUFBUSxHQUFHO01BQ2JWLEtBQUssRUFBRUEsS0FETTtNQUViVyxVQUFVLEVBQUUsU0FBU0EsVUFBVCxDQUFvQkMsZ0JBQXBCLEVBQXNDO1FBQ2hELElBQUliLE9BQU8sR0FBRyxPQUFPYSxnQkFBUCxLQUE0QixVQUE1QixHQUF5Q0EsZ0JBQWdCLENBQUNaLEtBQUssQ0FBQ0QsT0FBUCxDQUF6RCxHQUEyRWEsZ0JBQXpGO1FBQ0FDLHNCQUFzQjtRQUN0QmIsS0FBSyxDQUFDRCxPQUFOLEdBQWdCRyxNQUFNLENBQUNDLE1BQVAsQ0FBYyxFQUFkLEVBQWtCUixjQUFsQixFQUFrQ0ssS0FBSyxDQUFDRCxPQUF4QyxFQUFpREEsT0FBakQsQ0FBaEI7UUFDQUMsS0FBSyxDQUFDYyxhQUFOLEdBQXNCO1VBQ3BCakIsU0FBUyxFQUFFMUIsbUVBQVMsQ0FBQzBCLFNBQUQsQ0FBVCxHQUF1QnBDLDJFQUFpQixDQUFDb0MsU0FBRCxDQUF4QyxHQUFzREEsU0FBUyxDQUFDa0IsY0FBVixHQUEyQnRELDJFQUFpQixDQUFDb0MsU0FBUyxDQUFDa0IsY0FBWCxDQUE1QyxHQUF5RSxFQUR0SDtVQUVwQmpCLE1BQU0sRUFBRXJDLDJFQUFpQixDQUFDcUMsTUFBRDtRQUZMLENBQXRCLENBSmdELENBTzdDO1FBQ0g7O1FBRUEsSUFBSUcsZ0JBQWdCLEdBQUdyQyxvRUFBYyxDQUFDSyxpRUFBVyxDQUFDLEdBQUcrQyxNQUFILENBQVV2QixnQkFBVixFQUE0Qk8sS0FBSyxDQUFDRCxPQUFOLENBQWN0QixTQUExQyxDQUFELENBQVosQ0FBckMsQ0FWZ0QsQ0FVMEQ7O1FBRTFHdUIsS0FBSyxDQUFDQyxnQkFBTixHQUF5QkEsZ0JBQWdCLENBQUNnQixNQUFqQixDQUF3QixVQUFVQyxDQUFWLEVBQWE7VUFDNUQsT0FBT0EsQ0FBQyxDQUFDQyxPQUFUO1FBQ0QsQ0FGd0IsQ0FBekIsQ0FaZ0QsQ0FjNUM7UUFDSjs7UUFFQSxJQUFJQyxJQUFKLEVBQTJDO1VBQ3pDLElBQUkzQyxTQUFTLEdBQUdWLDhEQUFRLENBQUMsR0FBR2lELE1BQUgsQ0FBVWYsZ0JBQVYsRUFBNEJELEtBQUssQ0FBQ0QsT0FBTixDQUFjdEIsU0FBMUMsQ0FBRCxFQUF1RCxVQUFVOEMsSUFBVixFQUFnQjtZQUM3RixJQUFJQyxJQUFJLEdBQUdELElBQUksQ0FBQ0MsSUFBaEI7WUFDQSxPQUFPQSxJQUFQO1VBQ0QsQ0FIdUIsQ0FBeEI7VUFJQTFELHVFQUFpQixDQUFDVyxTQUFELENBQWpCOztVQUVBLElBQUlULHNFQUFnQixDQUFDZ0MsS0FBSyxDQUFDRCxPQUFOLENBQWN2QixTQUFmLENBQWhCLEtBQThDSiwyQ0FBbEQsRUFBd0Q7WUFDdEQsSUFBSXFELFlBQVksR0FBR3pCLEtBQUssQ0FBQ0MsZ0JBQU4sQ0FBdUJ5QixJQUF2QixDQUE0QixVQUFVQyxLQUFWLEVBQWlCO2NBQzlELElBQUlILElBQUksR0FBR0csS0FBSyxDQUFDSCxJQUFqQjtjQUNBLE9BQU9BLElBQUksS0FBSyxNQUFoQjtZQUNELENBSGtCLENBQW5COztZQUtBLElBQUksQ0FBQ0MsWUFBTCxFQUFtQjtjQUNqQkcsT0FBTyxDQUFDQyxLQUFSLENBQWMsQ0FBQywwREFBRCxFQUE2RCw4QkFBN0QsRUFBNkZDLElBQTdGLENBQWtHLEdBQWxHLENBQWQ7WUFDRDtVQUNGOztVQUVELElBQUlDLGlCQUFpQixHQUFHcEUsMEVBQWdCLENBQUNtQyxNQUFELENBQXhDO1VBQUEsSUFDSWtDLFNBQVMsR0FBR0QsaUJBQWlCLENBQUNDLFNBRGxDO1VBQUEsSUFFSUMsV0FBVyxHQUFHRixpQkFBaUIsQ0FBQ0UsV0FGcEM7VUFBQSxJQUdJQyxZQUFZLEdBQUdILGlCQUFpQixDQUFDRyxZQUhyQztVQUFBLElBSUlDLFVBQVUsR0FBR0osaUJBQWlCLENBQUNJLFVBSm5DLENBbEJ5QyxDQXNCTTtVQUMvQzs7O1VBR0EsSUFBSSxDQUFDSCxTQUFELEVBQVlDLFdBQVosRUFBeUJDLFlBQXpCLEVBQXVDQyxVQUF2QyxFQUFtRGpELElBQW5ELENBQXdELFVBQVVrRCxNQUFWLEVBQWtCO1lBQzVFLE9BQU9DLFVBQVUsQ0FBQ0QsTUFBRCxDQUFqQjtVQUNELENBRkcsQ0FBSixFQUVJO1lBQ0ZSLE9BQU8sQ0FBQ1UsSUFBUixDQUFhLENBQUMsNkRBQUQsRUFBZ0UsMkRBQWhFLEVBQTZILDREQUE3SCxFQUEyTCwwREFBM0wsRUFBdVAsWUFBdlAsRUFBcVFSLElBQXJRLENBQTBRLEdBQTFRLENBQWI7VUFDRDtRQUNGOztRQUVEUyxrQkFBa0I7UUFDbEIsT0FBTzdCLFFBQVEsQ0FBQzhCLE1BQVQsRUFBUDtNQUNELENBdERZO01BdURiO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQUMsV0FBVyxFQUFFLFNBQVNBLFdBQVQsR0FBdUI7UUFDbEMsSUFBSWhDLFdBQUosRUFBaUI7VUFDZjtRQUNEOztRQUVELElBQUlpQyxlQUFlLEdBQUcxQyxLQUFLLENBQUNLLFFBQTVCO1FBQUEsSUFDSVIsU0FBUyxHQUFHNkMsZUFBZSxDQUFDN0MsU0FEaEM7UUFBQSxJQUVJQyxNQUFNLEdBQUc0QyxlQUFlLENBQUM1QyxNQUY3QixDQUxrQyxDQU9HO1FBQ3JDOztRQUVBLElBQUksQ0FBQ25CLGdCQUFnQixDQUFDa0IsU0FBRCxFQUFZQyxNQUFaLENBQXJCLEVBQTBDO1VBQ3hDLElBQUlzQixJQUFKLEVBQTJDO1lBQ3pDUSxPQUFPLENBQUNDLEtBQVIsQ0FBY3hELHFCQUFkO1VBQ0Q7O1VBRUQ7UUFDRCxDQWhCaUMsQ0FnQmhDOzs7UUFHRjJCLEtBQUssQ0FBQzJDLEtBQU4sR0FBYztVQUNaOUMsU0FBUyxFQUFFdEMsMEVBQWdCLENBQUNzQyxTQUFELEVBQVluQywwRUFBZSxDQUFDb0MsTUFBRCxDQUEzQixFQUFxQ0UsS0FBSyxDQUFDRCxPQUFOLENBQWNyQixRQUFkLEtBQTJCLE9BQWhFLENBRGY7VUFFWm9CLE1BQU0sRUFBRXRDLHdFQUFhLENBQUNzQyxNQUFEO1FBRlQsQ0FBZCxDQW5Ca0MsQ0FzQi9CO1FBQ0g7UUFDQTtRQUNBO1FBQ0E7O1FBRUFFLEtBQUssQ0FBQzRDLEtBQU4sR0FBYyxLQUFkO1FBQ0E1QyxLQUFLLENBQUN4QixTQUFOLEdBQWtCd0IsS0FBSyxDQUFDRCxPQUFOLENBQWN2QixTQUFoQyxDQTdCa0MsQ0E2QlM7UUFDM0M7UUFDQTtRQUNBOztRQUVBd0IsS0FBSyxDQUFDQyxnQkFBTixDQUF1QjRDLE9BQXZCLENBQStCLFVBQVVDLFFBQVYsRUFBb0I7VUFDakQsT0FBTzlDLEtBQUssQ0FBQ0ksYUFBTixDQUFvQjBDLFFBQVEsQ0FBQ3RCLElBQTdCLElBQXFDdEIsTUFBTSxDQUFDQyxNQUFQLENBQWMsRUFBZCxFQUFrQjJDLFFBQVEsQ0FBQ0MsSUFBM0IsQ0FBNUM7UUFDRCxDQUZEO1FBR0EsSUFBSUMsZUFBZSxHQUFHLENBQXRCOztRQUVBLEtBQUssSUFBSUMsS0FBSyxHQUFHLENBQWpCLEVBQW9CQSxLQUFLLEdBQUdqRCxLQUFLLENBQUNDLGdCQUFOLENBQXVCbkIsTUFBbkQsRUFBMkRtRSxLQUFLLEVBQWhFLEVBQW9FO1VBQ2xFLElBQUk3QixJQUFKLEVBQTJDO1lBQ3pDNEIsZUFBZSxJQUFJLENBQW5COztZQUVBLElBQUlBLGVBQWUsR0FBRyxHQUF0QixFQUEyQjtjQUN6QnBCLE9BQU8sQ0FBQ0MsS0FBUixDQUFjdkQsbUJBQWQ7Y0FDQTtZQUNEO1VBQ0Y7O1VBRUQsSUFBSTBCLEtBQUssQ0FBQzRDLEtBQU4sS0FBZ0IsSUFBcEIsRUFBMEI7WUFDeEI1QyxLQUFLLENBQUM0QyxLQUFOLEdBQWMsS0FBZDtZQUNBSyxLQUFLLEdBQUcsQ0FBQyxDQUFUO1lBQ0E7VUFDRDs7VUFFRCxJQUFJQyxxQkFBcUIsR0FBR2xELEtBQUssQ0FBQ0MsZ0JBQU4sQ0FBdUJnRCxLQUF2QixDQUE1QjtVQUFBLElBQ0lFLEVBQUUsR0FBR0QscUJBQXFCLENBQUNDLEVBRC9CO1VBQUEsSUFFSUMsc0JBQXNCLEdBQUdGLHFCQUFxQixDQUFDbkQsT0FGbkQ7VUFBQSxJQUdJc0QsUUFBUSxHQUFHRCxzQkFBc0IsS0FBSyxLQUFLLENBQWhDLEdBQW9DLEVBQXBDLEdBQXlDQSxzQkFIeEQ7VUFBQSxJQUlJNUIsSUFBSSxHQUFHMEIscUJBQXFCLENBQUMxQixJQUpqQzs7VUFNQSxJQUFJLE9BQU8yQixFQUFQLEtBQWMsVUFBbEIsRUFBOEI7WUFDNUJuRCxLQUFLLEdBQUdtRCxFQUFFLENBQUM7Y0FDVG5ELEtBQUssRUFBRUEsS0FERTtjQUVURCxPQUFPLEVBQUVzRCxRQUZBO2NBR1Q3QixJQUFJLEVBQUVBLElBSEc7Y0FJVGQsUUFBUSxFQUFFQTtZQUpELENBQUQsQ0FBRixJQUtGVixLQUxOO1VBTUQ7UUFDRjtNQUNGLENBbElZO01BbUliO01BQ0E7TUFDQXdDLE1BQU0sRUFBRTNFLCtEQUFRLENBQUMsWUFBWTtRQUMzQixPQUFPLElBQUl5RixPQUFKLENBQVksVUFBVUMsT0FBVixFQUFtQjtVQUNwQzdDLFFBQVEsQ0FBQytCLFdBQVQ7VUFDQWMsT0FBTyxDQUFDdkQsS0FBRCxDQUFQO1FBQ0QsQ0FITSxDQUFQO01BSUQsQ0FMZSxDQXJJSDtNQTJJYndELE9BQU8sRUFBRSxTQUFTQSxPQUFULEdBQW1CO1FBQzFCM0Msc0JBQXNCO1FBQ3RCSixXQUFXLEdBQUcsSUFBZDtNQUNEO0lBOUlZLENBQWY7O0lBaUpBLElBQUksQ0FBQzlCLGdCQUFnQixDQUFDa0IsU0FBRCxFQUFZQyxNQUFaLENBQXJCLEVBQTBDO01BQ3hDLElBQUlzQixJQUFKLEVBQTJDO1FBQ3pDUSxPQUFPLENBQUNDLEtBQVIsQ0FBY3hELHFCQUFkO01BQ0Q7O01BRUQsT0FBT3FDLFFBQVA7SUFDRDs7SUFFREEsUUFBUSxDQUFDQyxVQUFULENBQW9CWixPQUFwQixFQUE2QjBELElBQTdCLENBQWtDLFVBQVV6RCxLQUFWLEVBQWlCO01BQ2pELElBQUksQ0FBQ1MsV0FBRCxJQUFnQlYsT0FBTyxDQUFDMkQsYUFBNUIsRUFBMkM7UUFDekMzRCxPQUFPLENBQUMyRCxhQUFSLENBQXNCMUQsS0FBdEI7TUFDRDtJQUNGLENBSkQsRUE1S3VELENBZ0xuRDtJQUNKO0lBQ0E7SUFDQTtJQUNBOztJQUVBLFNBQVN1QyxrQkFBVCxHQUE4QjtNQUM1QnZDLEtBQUssQ0FBQ0MsZ0JBQU4sQ0FBdUI0QyxPQUF2QixDQUErQixVQUFVYyxLQUFWLEVBQWlCO1FBQzlDLElBQUluQyxJQUFJLEdBQUdtQyxLQUFLLENBQUNuQyxJQUFqQjtRQUFBLElBQ0lvQyxhQUFhLEdBQUdELEtBQUssQ0FBQzVELE9BRDFCO1FBQUEsSUFFSUEsT0FBTyxHQUFHNkQsYUFBYSxLQUFLLEtBQUssQ0FBdkIsR0FBMkIsRUFBM0IsR0FBZ0NBLGFBRjlDO1FBQUEsSUFHSUMsTUFBTSxHQUFHRixLQUFLLENBQUNFLE1BSG5COztRQUtBLElBQUksT0FBT0EsTUFBUCxLQUFrQixVQUF0QixFQUFrQztVQUNoQyxJQUFJQyxTQUFTLEdBQUdELE1BQU0sQ0FBQztZQUNyQjdELEtBQUssRUFBRUEsS0FEYztZQUVyQndCLElBQUksRUFBRUEsSUFGZTtZQUdyQmQsUUFBUSxFQUFFQSxRQUhXO1lBSXJCWCxPQUFPLEVBQUVBO1VBSlksQ0FBRCxDQUF0Qjs7VUFPQSxJQUFJZ0UsTUFBTSxHQUFHLFNBQVNBLE1BQVQsR0FBa0IsQ0FBRSxDQUFqQzs7VUFFQXZELGdCQUFnQixDQUFDd0QsSUFBakIsQ0FBc0JGLFNBQVMsSUFBSUMsTUFBbkM7UUFDRDtNQUNGLENBbEJEO0lBbUJEOztJQUVELFNBQVNsRCxzQkFBVCxHQUFrQztNQUNoQ0wsZ0JBQWdCLENBQUNxQyxPQUFqQixDQUF5QixVQUFVTSxFQUFWLEVBQWM7UUFDckMsT0FBT0EsRUFBRSxFQUFUO01BQ0QsQ0FGRDtNQUdBM0MsZ0JBQWdCLEdBQUcsRUFBbkI7SUFDRDs7SUFFRCxPQUFPRSxRQUFQO0VBQ0QsQ0FwTkQ7QUFxTkQ7QUFDTSxJQUFJZCxZQUFZLEdBQUcsYUFBYVAsZUFBZSxFQUEvQyxFQUFtRDs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDaFExRDtBQUNlLFNBQVM2RSxRQUFULENBQWtCQyxNQUFsQixFQUEwQkMsS0FBMUIsRUFBaUM7RUFDOUMsSUFBSUMsUUFBUSxHQUFHRCxLQUFLLENBQUNFLFdBQU4sSUFBcUJGLEtBQUssQ0FBQ0UsV0FBTixFQUFwQyxDQUQ4QyxDQUNXOztFQUV6RCxJQUFJSCxNQUFNLENBQUNELFFBQVAsQ0FBZ0JFLEtBQWhCLENBQUosRUFBNEI7SUFDMUIsT0FBTyxJQUFQO0VBQ0QsQ0FGRCxDQUVFO0VBRkYsS0FHSyxJQUFJQyxRQUFRLElBQUlKLDREQUFZLENBQUNJLFFBQUQsQ0FBNUIsRUFBd0M7SUFDekMsSUFBSUUsSUFBSSxHQUFHSCxLQUFYOztJQUVBLEdBQUc7TUFDRCxJQUFJRyxJQUFJLElBQUlKLE1BQU0sQ0FBQ0ssVUFBUCxDQUFrQkQsSUFBbEIsQ0FBWixFQUFxQztRQUNuQyxPQUFPLElBQVA7TUFDRCxDQUhBLENBR0M7OztNQUdGQSxJQUFJLEdBQUdBLElBQUksQ0FBQ0UsVUFBTCxJQUFtQkYsSUFBSSxDQUFDRyxJQUEvQjtJQUNELENBUEQsUUFPU0gsSUFQVDtFQVFELENBakIyQyxDQWlCMUM7OztFQUdKLE9BQU8sS0FBUDtBQUNEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDdEJEO0FBQ0E7QUFDQTtBQUNBO0FBQ2UsU0FBU25GLHFCQUFULENBQStCRCxPQUEvQixFQUF3QzRGLFlBQXhDLEVBQXNEQyxlQUF0RCxFQUF1RTtFQUNwRixJQUFJRCxZQUFZLEtBQUssS0FBSyxDQUExQixFQUE2QjtJQUMzQkEsWUFBWSxHQUFHLEtBQWY7RUFDRDs7RUFFRCxJQUFJQyxlQUFlLEtBQUssS0FBSyxDQUE3QixFQUFnQztJQUM5QkEsZUFBZSxHQUFHLEtBQWxCO0VBQ0Q7O0VBRUQsSUFBSUMsVUFBVSxHQUFHOUYsT0FBTyxDQUFDQyxxQkFBUixFQUFqQjtFQUNBLElBQUk4RixNQUFNLEdBQUcsQ0FBYjtFQUNBLElBQUlDLE1BQU0sR0FBRyxDQUFiOztFQUVBLElBQUlKLFlBQVksSUFBSUosNkRBQWEsQ0FBQ3hGLE9BQUQsQ0FBakMsRUFBNEM7SUFDMUMrRixNQUFNLEdBQUcvRixPQUFPLENBQUNpRyxXQUFSLEdBQXNCLENBQXRCLEdBQTBCUixxREFBSyxDQUFDSyxVQUFVLENBQUNJLEtBQVosQ0FBTCxHQUEwQmxHLE9BQU8sQ0FBQ2lHLFdBQWxDLElBQWlELENBQTNFLEdBQStFLENBQXhGO0lBQ0FELE1BQU0sR0FBR2hHLE9BQU8sQ0FBQ21HLFlBQVIsR0FBdUIsQ0FBdkIsR0FBMkJWLHFEQUFLLENBQUNLLFVBQVUsQ0FBQ00sTUFBWixDQUFMLEdBQTJCcEcsT0FBTyxDQUFDbUcsWUFBbkMsSUFBbUQsQ0FBOUUsR0FBa0YsQ0FBM0Y7RUFDRDs7RUFFRCxJQUFJL0QsSUFBSSxHQUFHcEQseURBQVMsQ0FBQ2dCLE9BQUQsQ0FBVCxHQUFxQjBGLHlEQUFTLENBQUMxRixPQUFELENBQTlCLEdBQTBDcUcsTUFBckQ7RUFBQSxJQUNJQyxjQUFjLEdBQUdsRSxJQUFJLENBQUNrRSxjQUQxQjs7RUFHQSxJQUFJQyxnQkFBZ0IsR0FBRyxDQUFDWixnRUFBZ0IsRUFBakIsSUFBdUJFLGVBQTlDO0VBQ0EsSUFBSVcsQ0FBQyxHQUFHLENBQUNWLFVBQVUsQ0FBQ1csSUFBWCxJQUFtQkYsZ0JBQWdCLElBQUlELGNBQXBCLEdBQXFDQSxjQUFjLENBQUNJLFVBQXBELEdBQWlFLENBQXBGLENBQUQsSUFBMkZYLE1BQW5HO0VBQ0EsSUFBSVksQ0FBQyxHQUFHLENBQUNiLFVBQVUsQ0FBQ2MsR0FBWCxJQUFrQkwsZ0JBQWdCLElBQUlELGNBQXBCLEdBQXFDQSxjQUFjLENBQUNPLFNBQXBELEdBQWdFLENBQWxGLENBQUQsSUFBeUZiLE1BQWpHO0VBQ0EsSUFBSUUsS0FBSyxHQUFHSixVQUFVLENBQUNJLEtBQVgsR0FBbUJILE1BQS9CO0VBQ0EsSUFBSUssTUFBTSxHQUFHTixVQUFVLENBQUNNLE1BQVgsR0FBb0JKLE1BQWpDO0VBQ0EsT0FBTztJQUNMRSxLQUFLLEVBQUVBLEtBREY7SUFFTEUsTUFBTSxFQUFFQSxNQUZIO0lBR0xRLEdBQUcsRUFBRUQsQ0FIQTtJQUlMRyxLQUFLLEVBQUVOLENBQUMsR0FBR04sS0FKTjtJQUtMYSxNQUFNLEVBQUVKLENBQUMsR0FBR1AsTUFMUDtJQU1MSyxJQUFJLEVBQUVELENBTkQ7SUFPTEEsQ0FBQyxFQUFFQSxDQVBFO0lBUUxHLENBQUMsRUFBRUE7RUFSRSxDQUFQO0FBVUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDeENEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsU0FBU2MsMEJBQVQsQ0FBb0N6SCxPQUFwQyxFQUE2Q1QsUUFBN0MsRUFBdUQ7RUFDckQsSUFBSW1JLElBQUksR0FBR3pILHFFQUFxQixDQUFDRCxPQUFELEVBQVUsS0FBVixFQUFpQlQsUUFBUSxLQUFLLE9BQTlCLENBQWhDO0VBQ0FtSSxJQUFJLENBQUNkLEdBQUwsR0FBV2MsSUFBSSxDQUFDZCxHQUFMLEdBQVc1RyxPQUFPLENBQUMySCxTQUE5QjtFQUNBRCxJQUFJLENBQUNqQixJQUFMLEdBQVlpQixJQUFJLENBQUNqQixJQUFMLEdBQVl6RyxPQUFPLENBQUM0SCxVQUFoQztFQUNBRixJQUFJLENBQUNYLE1BQUwsR0FBY1csSUFBSSxDQUFDZCxHQUFMLEdBQVc1RyxPQUFPLENBQUM2SCxZQUFqQztFQUNBSCxJQUFJLENBQUNaLEtBQUwsR0FBYVksSUFBSSxDQUFDakIsSUFBTCxHQUFZekcsT0FBTyxDQUFDOEgsV0FBakM7RUFDQUosSUFBSSxDQUFDeEIsS0FBTCxHQUFhbEcsT0FBTyxDQUFDOEgsV0FBckI7RUFDQUosSUFBSSxDQUFDdEIsTUFBTCxHQUFjcEcsT0FBTyxDQUFDNkgsWUFBdEI7RUFDQUgsSUFBSSxDQUFDbEIsQ0FBTCxHQUFTa0IsSUFBSSxDQUFDakIsSUFBZDtFQUNBaUIsSUFBSSxDQUFDZixDQUFMLEdBQVNlLElBQUksQ0FBQ2QsR0FBZDtFQUNBLE9BQU9jLElBQVA7QUFDRDs7QUFFRCxTQUFTSywwQkFBVCxDQUFvQy9ILE9BQXBDLEVBQTZDZ0ksY0FBN0MsRUFBNkR6SSxRQUE3RCxFQUF1RTtFQUNyRSxPQUFPeUksY0FBYyxLQUFLaEIsK0NBQW5CLEdBQThCTSxzRUFBZ0IsQ0FBQ0wsK0RBQWUsQ0FBQ2pILE9BQUQsRUFBVVQsUUFBVixDQUFoQixDQUE5QyxHQUFxRlAseURBQVMsQ0FBQ2dKLGNBQUQsQ0FBVCxHQUE0QlAsMEJBQTBCLENBQUNPLGNBQUQsRUFBaUJ6SSxRQUFqQixDQUF0RCxHQUFtRitILHNFQUFnQixDQUFDSiwrREFBZSxDQUFDQyxrRUFBa0IsQ0FBQ25ILE9BQUQsQ0FBbkIsQ0FBaEIsQ0FBL0w7QUFDRCxFQUFDO0FBQ0Y7QUFDQTs7O0FBR0EsU0FBU2lJLGtCQUFULENBQTRCakksT0FBNUIsRUFBcUM7RUFDbkMsSUFBSWtJLGVBQWUsR0FBRzVKLGlFQUFpQixDQUFDOEksNkRBQWEsQ0FBQ3BILE9BQUQsQ0FBZCxDQUF2QztFQUNBLElBQUltSSxpQkFBaUIsR0FBRyxDQUFDLFVBQUQsRUFBYSxPQUFiLEVBQXNCQyxPQUF0QixDQUE4QjVKLGdFQUFnQixDQUFDd0IsT0FBRCxDQUFoQixDQUEwQnFJLFFBQXhELEtBQXFFLENBQTdGO0VBQ0EsSUFBSUMsY0FBYyxHQUFHSCxpQkFBaUIsSUFBSTNDLDZEQUFhLENBQUN4RixPQUFELENBQWxDLEdBQThDekIsZ0VBQWUsQ0FBQ3lCLE9BQUQsQ0FBN0QsR0FBeUVBLE9BQTlGOztFQUVBLElBQUksQ0FBQ2hCLHlEQUFTLENBQUNzSixjQUFELENBQWQsRUFBZ0M7SUFDOUIsT0FBTyxFQUFQO0VBQ0QsQ0FQa0MsQ0FPakM7OztFQUdGLE9BQU9KLGVBQWUsQ0FBQ3BHLE1BQWhCLENBQXVCLFVBQVVrRyxjQUFWLEVBQTBCO0lBQ3RELE9BQU9oSix5REFBUyxDQUFDZ0osY0FBRCxDQUFULElBQTZCakQseURBQVEsQ0FBQ2lELGNBQUQsRUFBaUJNLGNBQWpCLENBQXJDLElBQXlFakIsNERBQVcsQ0FBQ1csY0FBRCxDQUFYLEtBQWdDLE1BQWhIO0VBQ0QsQ0FGTSxDQUFQO0FBR0QsRUFBQztBQUNGOzs7QUFHZSxTQUFTTyxlQUFULENBQXlCdkksT0FBekIsRUFBa0N3SSxRQUFsQyxFQUE0Q0MsWUFBNUMsRUFBMERsSixRQUExRCxFQUFvRTtFQUNqRixJQUFJbUosbUJBQW1CLEdBQUdGLFFBQVEsS0FBSyxpQkFBYixHQUFpQ1Asa0JBQWtCLENBQUNqSSxPQUFELENBQW5ELEdBQStELEdBQUc2QixNQUFILENBQVUyRyxRQUFWLENBQXpGO0VBQ0EsSUFBSU4sZUFBZSxHQUFHLEdBQUdyRyxNQUFILENBQVU2RyxtQkFBVixFQUErQixDQUFDRCxZQUFELENBQS9CLENBQXRCO0VBQ0EsSUFBSUUsbUJBQW1CLEdBQUdULGVBQWUsQ0FBQyxDQUFELENBQXpDO0VBQ0EsSUFBSVUsWUFBWSxHQUFHVixlQUFlLENBQUNXLE1BQWhCLENBQXVCLFVBQVVDLE9BQVYsRUFBbUJkLGNBQW5CLEVBQW1DO0lBQzNFLElBQUlOLElBQUksR0FBR0ssMEJBQTBCLENBQUMvSCxPQUFELEVBQVVnSSxjQUFWLEVBQTBCekksUUFBMUIsQ0FBckM7SUFDQXVKLE9BQU8sQ0FBQ2xDLEdBQVIsR0FBY1csb0RBQUcsQ0FBQ0csSUFBSSxDQUFDZCxHQUFOLEVBQVdrQyxPQUFPLENBQUNsQyxHQUFuQixDQUFqQjtJQUNBa0MsT0FBTyxDQUFDaEMsS0FBUixHQUFnQlUsb0RBQUcsQ0FBQ0UsSUFBSSxDQUFDWixLQUFOLEVBQWFnQyxPQUFPLENBQUNoQyxLQUFyQixDQUFuQjtJQUNBZ0MsT0FBTyxDQUFDL0IsTUFBUixHQUFpQlMsb0RBQUcsQ0FBQ0UsSUFBSSxDQUFDWCxNQUFOLEVBQWMrQixPQUFPLENBQUMvQixNQUF0QixDQUFwQjtJQUNBK0IsT0FBTyxDQUFDckMsSUFBUixHQUFlYyxvREFBRyxDQUFDRyxJQUFJLENBQUNqQixJQUFOLEVBQVlxQyxPQUFPLENBQUNyQyxJQUFwQixDQUFsQjtJQUNBLE9BQU9xQyxPQUFQO0VBQ0QsQ0FQa0IsRUFPaEJmLDBCQUEwQixDQUFDL0gsT0FBRCxFQUFVMkksbUJBQVYsRUFBK0JwSixRQUEvQixDQVBWLENBQW5CO0VBUUFxSixZQUFZLENBQUMxQyxLQUFiLEdBQXFCMEMsWUFBWSxDQUFDOUIsS0FBYixHQUFxQjhCLFlBQVksQ0FBQ25DLElBQXZEO0VBQ0FtQyxZQUFZLENBQUN4QyxNQUFiLEdBQXNCd0MsWUFBWSxDQUFDN0IsTUFBYixHQUFzQjZCLFlBQVksQ0FBQ2hDLEdBQXpEO0VBQ0FnQyxZQUFZLENBQUNwQyxDQUFiLEdBQWlCb0MsWUFBWSxDQUFDbkMsSUFBOUI7RUFDQW1DLFlBQVksQ0FBQ2pDLENBQWIsR0FBaUJpQyxZQUFZLENBQUNoQyxHQUE5QjtFQUNBLE9BQU9nQyxZQUFQO0FBQ0Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDckVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsU0FBU00sZUFBVCxDQUF5QmxKLE9BQXpCLEVBQWtDO0VBQ2hDLElBQUkwSCxJQUFJLEdBQUcxSCxPQUFPLENBQUNDLHFCQUFSLEVBQVg7RUFDQSxJQUFJOEYsTUFBTSxHQUFHTixxREFBSyxDQUFDaUMsSUFBSSxDQUFDeEIsS0FBTixDQUFMLEdBQW9CbEcsT0FBTyxDQUFDaUcsV0FBNUIsSUFBMkMsQ0FBeEQ7RUFDQSxJQUFJRCxNQUFNLEdBQUdQLHFEQUFLLENBQUNpQyxJQUFJLENBQUN0QixNQUFOLENBQUwsR0FBcUJwRyxPQUFPLENBQUNtRyxZQUE3QixJQUE2QyxDQUExRDtFQUNBLE9BQU9KLE1BQU0sS0FBSyxDQUFYLElBQWdCQyxNQUFNLEtBQUssQ0FBbEM7QUFDRCxFQUFDO0FBQ0Y7OztBQUdlLFNBQVM1SCxnQkFBVCxDQUEwQitLLHVCQUExQixFQUFtREMsWUFBbkQsRUFBaUVDLE9BQWpFLEVBQTBFO0VBQ3ZGLElBQUlBLE9BQU8sS0FBSyxLQUFLLENBQXJCLEVBQXdCO0lBQ3RCQSxPQUFPLEdBQUcsS0FBVjtFQUNEOztFQUVELElBQUlDLHVCQUF1QixHQUFHOUQsNkRBQWEsQ0FBQzRELFlBQUQsQ0FBM0M7RUFDQSxJQUFJRyxvQkFBb0IsR0FBRy9ELDZEQUFhLENBQUM0RCxZQUFELENBQWIsSUFBK0JGLGVBQWUsQ0FBQ0UsWUFBRCxDQUF6RTtFQUNBLElBQUlJLGVBQWUsR0FBR3JDLGtFQUFrQixDQUFDaUMsWUFBRCxDQUF4QztFQUNBLElBQUkxQixJQUFJLEdBQUd6SCxxRUFBcUIsQ0FBQ2tKLHVCQUFELEVBQTBCSSxvQkFBMUIsRUFBZ0RGLE9BQWhELENBQWhDO0VBQ0EsSUFBSUksTUFBTSxHQUFHO0lBQ1hDLFVBQVUsRUFBRSxDQUREO0lBRVhDLFNBQVMsRUFBRTtFQUZBLENBQWI7RUFJQSxJQUFJQyxPQUFPLEdBQUc7SUFDWnBELENBQUMsRUFBRSxDQURTO0lBRVpHLENBQUMsRUFBRTtFQUZTLENBQWQ7O0VBS0EsSUFBSTJDLHVCQUF1QixJQUFJLENBQUNBLHVCQUFELElBQTRCLENBQUNELE9BQTVELEVBQXFFO0lBQ25FLElBQUloQywyREFBVyxDQUFDK0IsWUFBRCxDQUFYLEtBQThCLE1BQTlCLElBQXdDO0lBQzVDSCw4REFBYyxDQUFDTyxlQUFELENBRGQsRUFDaUM7TUFDL0JDLE1BQU0sR0FBR1YsNkRBQWEsQ0FBQ0ssWUFBRCxDQUF0QjtJQUNEOztJQUVELElBQUk1RCw2REFBYSxDQUFDNEQsWUFBRCxDQUFqQixFQUFpQztNQUMvQlEsT0FBTyxHQUFHM0oscUVBQXFCLENBQUNtSixZQUFELEVBQWUsSUFBZixDQUEvQjtNQUNBUSxPQUFPLENBQUNwRCxDQUFSLElBQWE0QyxZQUFZLENBQUN4QixVQUExQjtNQUNBZ0MsT0FBTyxDQUFDakQsQ0FBUixJQUFheUMsWUFBWSxDQUFDekIsU0FBMUI7SUFDRCxDQUpELE1BSU8sSUFBSTZCLGVBQUosRUFBcUI7TUFDMUJJLE9BQU8sQ0FBQ3BELENBQVIsR0FBWXdDLG1FQUFtQixDQUFDUSxlQUFELENBQS9CO0lBQ0Q7RUFDRjs7RUFFRCxPQUFPO0lBQ0xoRCxDQUFDLEVBQUVrQixJQUFJLENBQUNqQixJQUFMLEdBQVlnRCxNQUFNLENBQUNDLFVBQW5CLEdBQWdDRSxPQUFPLENBQUNwRCxDQUR0QztJQUVMRyxDQUFDLEVBQUVlLElBQUksQ0FBQ2QsR0FBTCxHQUFXNkMsTUFBTSxDQUFDRSxTQUFsQixHQUE4QkMsT0FBTyxDQUFDakQsQ0FGcEM7SUFHTFQsS0FBSyxFQUFFd0IsSUFBSSxDQUFDeEIsS0FIUDtJQUlMRSxNQUFNLEVBQUVzQixJQUFJLENBQUN0QjtFQUpSLENBQVA7QUFNRDs7Ozs7Ozs7Ozs7Ozs7OztBQ3pERDtBQUNlLFNBQVM1SCxnQkFBVCxDQUEwQndCLE9BQTFCLEVBQW1DO0VBQ2hELE9BQU8wRix5REFBUyxDQUFDMUYsT0FBRCxDQUFULENBQW1CeEIsZ0JBQW5CLENBQW9Dd0IsT0FBcEMsQ0FBUDtBQUNEOzs7Ozs7Ozs7Ozs7Ozs7O0FDSEQ7QUFDZSxTQUFTbUgsa0JBQVQsQ0FBNEJuSCxPQUE1QixFQUFxQztFQUNsRDtFQUNBLE9BQU8sQ0FBQyxDQUFDaEIseURBQVMsQ0FBQ2dCLE9BQUQsQ0FBVCxHQUFxQkEsT0FBTyxDQUFDNkosYUFBN0IsR0FBNkM7RUFDdEQ3SixPQUFPLENBQUM4SixRQURBLEtBQ2F6RCxNQUFNLENBQUN5RCxRQURyQixFQUMrQk4sZUFEdEM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNMRDtBQUNBO0FBQ0E7QUFDQTtDQUN3QztBQUN4Qzs7QUFFZSxTQUFTdEMsZUFBVCxDQUF5QmxILE9BQXpCLEVBQWtDO0VBQy9DLElBQUlnSyxxQkFBSjs7RUFFQSxJQUFJQyxJQUFJLEdBQUc5QyxrRUFBa0IsQ0FBQ25ILE9BQUQsQ0FBN0I7RUFDQSxJQUFJa0ssU0FBUyxHQUFHSCwrREFBZSxDQUFDL0osT0FBRCxDQUEvQjtFQUNBLElBQUltSyxJQUFJLEdBQUcsQ0FBQ0gscUJBQXFCLEdBQUdoSyxPQUFPLENBQUM2SixhQUFqQyxLQUFtRCxJQUFuRCxHQUEwRCxLQUFLLENBQS9ELEdBQW1FRyxxQkFBcUIsQ0FBQ0csSUFBcEc7RUFDQSxJQUFJakUsS0FBSyxHQUFHcUIsbURBQUcsQ0FBQzBDLElBQUksQ0FBQ0csV0FBTixFQUFtQkgsSUFBSSxDQUFDbkMsV0FBeEIsRUFBcUNxQyxJQUFJLEdBQUdBLElBQUksQ0FBQ0MsV0FBUixHQUFzQixDQUEvRCxFQUFrRUQsSUFBSSxHQUFHQSxJQUFJLENBQUNyQyxXQUFSLEdBQXNCLENBQTVGLENBQWY7RUFDQSxJQUFJMUIsTUFBTSxHQUFHbUIsbURBQUcsQ0FBQzBDLElBQUksQ0FBQ0ksWUFBTixFQUFvQkosSUFBSSxDQUFDcEMsWUFBekIsRUFBdUNzQyxJQUFJLEdBQUdBLElBQUksQ0FBQ0UsWUFBUixHQUF1QixDQUFsRSxFQUFxRUYsSUFBSSxHQUFHQSxJQUFJLENBQUN0QyxZQUFSLEdBQXVCLENBQWhHLENBQWhCO0VBQ0EsSUFBSXJCLENBQUMsR0FBRyxDQUFDMEQsU0FBUyxDQUFDUixVQUFYLEdBQXdCVixtRUFBbUIsQ0FBQ2hKLE9BQUQsQ0FBbkQ7RUFDQSxJQUFJMkcsQ0FBQyxHQUFHLENBQUN1RCxTQUFTLENBQUNQLFNBQW5COztFQUVBLElBQUluTCxnRUFBZ0IsQ0FBQzJMLElBQUksSUFBSUYsSUFBVCxDQUFoQixDQUErQkssU0FBL0IsS0FBNkMsS0FBakQsRUFBd0Q7SUFDdEQ5RCxDQUFDLElBQUllLG1EQUFHLENBQUMwQyxJQUFJLENBQUNuQyxXQUFOLEVBQW1CcUMsSUFBSSxHQUFHQSxJQUFJLENBQUNyQyxXQUFSLEdBQXNCLENBQTdDLENBQUgsR0FBcUQ1QixLQUExRDtFQUNEOztFQUVELE9BQU87SUFDTEEsS0FBSyxFQUFFQSxLQURGO0lBRUxFLE1BQU0sRUFBRUEsTUFGSDtJQUdMSSxDQUFDLEVBQUVBLENBSEU7SUFJTEcsQ0FBQyxFQUFFQTtFQUpFLENBQVA7QUFNRDs7Ozs7Ozs7Ozs7Ozs7O0FDNUJjLFNBQVM0RCxvQkFBVCxDQUE4QnZLLE9BQTlCLEVBQXVDO0VBQ3BELE9BQU87SUFDTDBKLFVBQVUsRUFBRTFKLE9BQU8sQ0FBQzBKLFVBRGY7SUFFTEMsU0FBUyxFQUFFM0osT0FBTyxDQUFDMko7RUFGZCxDQUFQO0FBSUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Q0NMK0Q7QUFDaEU7O0FBRWUsU0FBU3RMLGFBQVQsQ0FBdUIyQixPQUF2QixFQUFnQztFQUM3QyxJQUFJOEYsVUFBVSxHQUFHN0YscUVBQXFCLENBQUNELE9BQUQsQ0FBdEMsQ0FENkMsQ0FDSTtFQUNqRDs7RUFFQSxJQUFJa0csS0FBSyxHQUFHbEcsT0FBTyxDQUFDaUcsV0FBcEI7RUFDQSxJQUFJRyxNQUFNLEdBQUdwRyxPQUFPLENBQUNtRyxZQUFyQjs7RUFFQSxJQUFJcUUsSUFBSSxDQUFDQyxHQUFMLENBQVMzRSxVQUFVLENBQUNJLEtBQVgsR0FBbUJBLEtBQTVCLEtBQXNDLENBQTFDLEVBQTZDO0lBQzNDQSxLQUFLLEdBQUdKLFVBQVUsQ0FBQ0ksS0FBbkI7RUFDRDs7RUFFRCxJQUFJc0UsSUFBSSxDQUFDQyxHQUFMLENBQVMzRSxVQUFVLENBQUNNLE1BQVgsR0FBb0JBLE1BQTdCLEtBQXdDLENBQTVDLEVBQStDO0lBQzdDQSxNQUFNLEdBQUdOLFVBQVUsQ0FBQ00sTUFBcEI7RUFDRDs7RUFFRCxPQUFPO0lBQ0xJLENBQUMsRUFBRXhHLE9BQU8sQ0FBQzBHLFVBRE47SUFFTEMsQ0FBQyxFQUFFM0csT0FBTyxDQUFDNkcsU0FGTjtJQUdMWCxLQUFLLEVBQUVBLEtBSEY7SUFJTEUsTUFBTSxFQUFFQTtFQUpILENBQVA7QUFNRDs7Ozs7Ozs7Ozs7Ozs7O0FDeEJjLFNBQVNpQixXQUFULENBQXFCckgsT0FBckIsRUFBOEI7RUFDM0MsT0FBT0EsT0FBTyxHQUFHLENBQUNBLE9BQU8sQ0FBQzBLLFFBQVIsSUFBb0IsRUFBckIsRUFBeUJDLFdBQXpCLEVBQUgsR0FBNEMsSUFBMUQ7QUFDRDs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0ZEO0FBQ0E7QUFDQTtBQUNBO0FBQ2UsU0FBUzVCLGFBQVQsQ0FBdUI2QixJQUF2QixFQUE2QjtFQUMxQyxJQUFJQSxJQUFJLEtBQUtsRix5REFBUyxDQUFDa0YsSUFBRCxDQUFsQixJQUE0QixDQUFDcEYsNkRBQWEsQ0FBQ29GLElBQUQsQ0FBOUMsRUFBc0Q7SUFDcEQsT0FBT2IsK0RBQWUsQ0FBQ2EsSUFBRCxDQUF0QjtFQUNELENBRkQsTUFFTztJQUNMLE9BQU9MLG9FQUFvQixDQUFDSyxJQUFELENBQTNCO0VBQ0Q7QUFDRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ1ZEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFNBQVNHLG1CQUFULENBQTZCL0ssT0FBN0IsRUFBc0M7RUFDcEMsSUFBSSxDQUFDd0YsNkRBQWEsQ0FBQ3hGLE9BQUQsQ0FBZCxJQUEyQjtFQUMvQnhCLGdFQUFnQixDQUFDd0IsT0FBRCxDQUFoQixDQUEwQnFJLFFBQTFCLEtBQXVDLE9BRHZDLEVBQ2dEO0lBQzlDLE9BQU8sSUFBUDtFQUNEOztFQUVELE9BQU9ySSxPQUFPLENBQUNvSixZQUFmO0FBQ0QsRUFBQztBQUNGOzs7QUFHQSxTQUFTNEIsa0JBQVQsQ0FBNEJoTCxPQUE1QixFQUFxQztFQUNuQyxJQUFJaUwsU0FBUyxHQUFHLFdBQVdDLElBQVgsQ0FBZ0JKLCtEQUFXLEVBQTNCLENBQWhCO0VBQ0EsSUFBSUssSUFBSSxHQUFHLFdBQVdELElBQVgsQ0FBZ0JKLCtEQUFXLEVBQTNCLENBQVg7O0VBRUEsSUFBSUssSUFBSSxJQUFJM0YsNkRBQWEsQ0FBQ3hGLE9BQUQsQ0FBekIsRUFBb0M7SUFDbEM7SUFDQSxJQUFJb0wsVUFBVSxHQUFHNU0sZ0VBQWdCLENBQUN3QixPQUFELENBQWpDOztJQUVBLElBQUlvTCxVQUFVLENBQUMvQyxRQUFYLEtBQXdCLE9BQTVCLEVBQXFDO01BQ25DLE9BQU8sSUFBUDtJQUNEO0VBQ0Y7O0VBRUQsSUFBSWdELFdBQVcsR0FBR2pFLDZEQUFhLENBQUNwSCxPQUFELENBQS9COztFQUVBLElBQUk4RSw0REFBWSxDQUFDdUcsV0FBRCxDQUFoQixFQUErQjtJQUM3QkEsV0FBVyxHQUFHQSxXQUFXLENBQUM5RixJQUExQjtFQUNEOztFQUVELE9BQU9DLDZEQUFhLENBQUM2RixXQUFELENBQWIsSUFBOEIsQ0FBQyxNQUFELEVBQVMsTUFBVCxFQUFpQmpELE9BQWpCLENBQXlCZiwyREFBVyxDQUFDZ0UsV0FBRCxDQUFwQyxJQUFxRCxDQUExRixFQUE2RjtJQUMzRixJQUFJQyxHQUFHLEdBQUc5TSxnRUFBZ0IsQ0FBQzZNLFdBQUQsQ0FBMUIsQ0FEMkYsQ0FDbEQ7SUFDekM7SUFDQTs7SUFFQSxJQUFJQyxHQUFHLENBQUNDLFNBQUosS0FBa0IsTUFBbEIsSUFBNEJELEdBQUcsQ0FBQ0UsV0FBSixLQUFvQixNQUFoRCxJQUEwREYsR0FBRyxDQUFDRyxPQUFKLEtBQWdCLE9BQTFFLElBQXFGLENBQUMsV0FBRCxFQUFjLGFBQWQsRUFBNkJyRCxPQUE3QixDQUFxQ2tELEdBQUcsQ0FBQ0ksVUFBekMsTUFBeUQsQ0FBQyxDQUEvSSxJQUFvSlQsU0FBUyxJQUFJSyxHQUFHLENBQUNJLFVBQUosS0FBbUIsUUFBcEwsSUFBZ01ULFNBQVMsSUFBSUssR0FBRyxDQUFDeEosTUFBakIsSUFBMkJ3SixHQUFHLENBQUN4SixNQUFKLEtBQWUsTUFBOU8sRUFBc1A7TUFDcFAsT0FBT3VKLFdBQVA7SUFDRCxDQUZELE1BRU87TUFDTEEsV0FBVyxHQUFHQSxXQUFXLENBQUMvRixVQUExQjtJQUNEO0VBQ0Y7O0VBRUQsT0FBTyxJQUFQO0FBQ0QsRUFBQztBQUNGOzs7QUFHZSxTQUFTL0csZUFBVCxDQUF5QnlCLE9BQXpCLEVBQWtDO0VBQy9DLElBQUlxRyxNQUFNLEdBQUdYLHlEQUFTLENBQUMxRixPQUFELENBQXRCO0VBQ0EsSUFBSW9KLFlBQVksR0FBRzJCLG1CQUFtQixDQUFDL0ssT0FBRCxDQUF0Qzs7RUFFQSxPQUFPb0osWUFBWSxJQUFJeUIsOERBQWMsQ0FBQ3pCLFlBQUQsQ0FBOUIsSUFBZ0Q1SyxnRUFBZ0IsQ0FBQzRLLFlBQUQsQ0FBaEIsQ0FBK0JmLFFBQS9CLEtBQTRDLFFBQW5HLEVBQTZHO0lBQzNHZSxZQUFZLEdBQUcyQixtQkFBbUIsQ0FBQzNCLFlBQUQsQ0FBbEM7RUFDRDs7RUFFRCxJQUFJQSxZQUFZLEtBQUsvQiwyREFBVyxDQUFDK0IsWUFBRCxDQUFYLEtBQThCLE1BQTlCLElBQXdDL0IsMkRBQVcsQ0FBQytCLFlBQUQsQ0FBWCxLQUE4QixNQUE5QixJQUF3QzVLLGdFQUFnQixDQUFDNEssWUFBRCxDQUFoQixDQUErQmYsUUFBL0IsS0FBNEMsUUFBakksQ0FBaEIsRUFBNEo7SUFDMUosT0FBT2hDLE1BQVA7RUFDRDs7RUFFRCxPQUFPK0MsWUFBWSxJQUFJNEIsa0JBQWtCLENBQUNoTCxPQUFELENBQWxDLElBQStDcUcsTUFBdEQ7QUFDRDs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDcEVEO0FBQ0E7QUFDQTtBQUNlLFNBQVNlLGFBQVQsQ0FBdUJwSCxPQUF2QixFQUFnQztFQUM3QyxJQUFJcUgsMkRBQVcsQ0FBQ3JILE9BQUQsQ0FBWCxLQUF5QixNQUE3QixFQUFxQztJQUNuQyxPQUFPQSxPQUFQO0VBQ0Q7O0VBRUQsT0FBUTtJQUNOO0lBQ0E7SUFDQUEsT0FBTyxDQUFDMkwsWUFBUixJQUF3QjtJQUN4QjNMLE9BQU8sQ0FBQ3NGLFVBRFIsTUFDd0I7SUFDeEJSLDREQUFZLENBQUM5RSxPQUFELENBQVosR0FBd0JBLE9BQU8sQ0FBQ3VGLElBQWhDLEdBQXVDLElBRnZDLEtBRWdEO0lBQ2hEO0lBQ0E0QixrRUFBa0IsQ0FBQ25ILE9BQUQsQ0FQcEIsQ0FPOEI7O0VBUDlCO0FBVUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNsQkQ7QUFDQTtBQUNBO0FBQ0E7QUFDZSxTQUFTNEwsZUFBVCxDQUF5QmhCLElBQXpCLEVBQStCO0VBQzVDLElBQUksQ0FBQyxNQUFELEVBQVMsTUFBVCxFQUFpQixXQUFqQixFQUE4QnhDLE9BQTlCLENBQXNDZiwyREFBVyxDQUFDdUQsSUFBRCxDQUFqRCxLQUE0RCxDQUFoRSxFQUFtRTtJQUNqRTtJQUNBLE9BQU9BLElBQUksQ0FBQ2YsYUFBTCxDQUFtQk0sSUFBMUI7RUFDRDs7RUFFRCxJQUFJM0UsNkRBQWEsQ0FBQ29GLElBQUQsQ0FBYixJQUF1QjNCLDhEQUFjLENBQUMyQixJQUFELENBQXpDLEVBQWlEO0lBQy9DLE9BQU9BLElBQVA7RUFDRDs7RUFFRCxPQUFPZ0IsZUFBZSxDQUFDeEUsNkRBQWEsQ0FBQ3dELElBQUQsQ0FBZCxDQUF0QjtBQUNEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDZkQ7QUFDQTtBQUNBO0FBQ0E7QUFDZSxTQUFTM0QsZUFBVCxDQUF5QmpILE9BQXpCLEVBQWtDVCxRQUFsQyxFQUE0QztFQUN6RCxJQUFJc00sR0FBRyxHQUFHbkcseURBQVMsQ0FBQzFGLE9BQUQsQ0FBbkI7RUFDQSxJQUFJaUssSUFBSSxHQUFHOUMsa0VBQWtCLENBQUNuSCxPQUFELENBQTdCO0VBQ0EsSUFBSXNHLGNBQWMsR0FBR3VGLEdBQUcsQ0FBQ3ZGLGNBQXpCO0VBQ0EsSUFBSUosS0FBSyxHQUFHK0QsSUFBSSxDQUFDbkMsV0FBakI7RUFDQSxJQUFJMUIsTUFBTSxHQUFHNkQsSUFBSSxDQUFDcEMsWUFBbEI7RUFDQSxJQUFJckIsQ0FBQyxHQUFHLENBQVI7RUFDQSxJQUFJRyxDQUFDLEdBQUcsQ0FBUjs7RUFFQSxJQUFJTCxjQUFKLEVBQW9CO0lBQ2xCSixLQUFLLEdBQUdJLGNBQWMsQ0FBQ0osS0FBdkI7SUFDQUUsTUFBTSxHQUFHRSxjQUFjLENBQUNGLE1BQXhCO0lBQ0EsSUFBSTBGLGNBQWMsR0FBR25HLGdFQUFnQixFQUFyQzs7SUFFQSxJQUFJbUcsY0FBYyxJQUFJLENBQUNBLGNBQUQsSUFBbUJ2TSxRQUFRLEtBQUssT0FBdEQsRUFBK0Q7TUFDN0RpSCxDQUFDLEdBQUdGLGNBQWMsQ0FBQ0ksVUFBbkI7TUFDQUMsQ0FBQyxHQUFHTCxjQUFjLENBQUNPLFNBQW5CO0lBQ0Q7RUFDRjs7RUFFRCxPQUFPO0lBQ0xYLEtBQUssRUFBRUEsS0FERjtJQUVMRSxNQUFNLEVBQUVBLE1BRkg7SUFHTEksQ0FBQyxFQUFFQSxDQUFDLEdBQUd3QyxtRUFBbUIsQ0FBQ2hKLE9BQUQsQ0FIckI7SUFJTDJHLENBQUMsRUFBRUE7RUFKRSxDQUFQO0FBTUQ7Ozs7Ozs7Ozs7Ozs7OztBQzlCYyxTQUFTakIsU0FBVCxDQUFtQmtGLElBQW5CLEVBQXlCO0VBQ3RDLElBQUlBLElBQUksSUFBSSxJQUFaLEVBQWtCO0lBQ2hCLE9BQU92RSxNQUFQO0VBQ0Q7O0VBRUQsSUFBSXVFLElBQUksQ0FBQ21CLFFBQUwsT0FBb0IsaUJBQXhCLEVBQTJDO0lBQ3pDLElBQUlsQyxhQUFhLEdBQUdlLElBQUksQ0FBQ2YsYUFBekI7SUFDQSxPQUFPQSxhQUFhLEdBQUdBLGFBQWEsQ0FBQ21DLFdBQWQsSUFBNkIzRixNQUFoQyxHQUF5Q0EsTUFBN0Q7RUFDRDs7RUFFRCxPQUFPdUUsSUFBUDtBQUNEOzs7Ozs7Ozs7Ozs7Ozs7O0FDWEQ7QUFDZSxTQUFTYixlQUFULENBQXlCYSxJQUF6QixFQUErQjtFQUM1QyxJQUFJaUIsR0FBRyxHQUFHbkcseURBQVMsQ0FBQ2tGLElBQUQsQ0FBbkI7RUFDQSxJQUFJbEIsVUFBVSxHQUFHbUMsR0FBRyxDQUFDSSxXQUFyQjtFQUNBLElBQUl0QyxTQUFTLEdBQUdrQyxHQUFHLENBQUNLLFdBQXBCO0VBQ0EsT0FBTztJQUNMeEMsVUFBVSxFQUFFQSxVQURQO0lBRUxDLFNBQVMsRUFBRUE7RUFGTixDQUFQO0FBSUQ7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ1REO0FBQ0E7QUFDQTtBQUNlLFNBQVNYLG1CQUFULENBQTZCaEosT0FBN0IsRUFBc0M7RUFDbkQ7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxPQUFPQyxxRUFBcUIsQ0FBQ2tILGtFQUFrQixDQUFDbkgsT0FBRCxDQUFuQixDQUFyQixDQUFtRHlHLElBQW5ELEdBQTBEc0QsK0RBQWUsQ0FBQy9KLE9BQUQsQ0FBZixDQUF5QjBKLFVBQTFGO0FBQ0Q7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ1pEOztBQUVBLFNBQVMxSyxTQUFULENBQW1CNEwsSUFBbkIsRUFBeUI7RUFDdkIsSUFBSXVCLFVBQVUsR0FBR3pHLHlEQUFTLENBQUNrRixJQUFELENBQVQsQ0FBZ0J3QixPQUFqQztFQUNBLE9BQU94QixJQUFJLFlBQVl1QixVQUFoQixJQUE4QnZCLElBQUksWUFBWXdCLE9BQXJEO0FBQ0Q7O0FBRUQsU0FBUzVHLGFBQVQsQ0FBdUJvRixJQUF2QixFQUE2QjtFQUMzQixJQUFJdUIsVUFBVSxHQUFHekcseURBQVMsQ0FBQ2tGLElBQUQsQ0FBVCxDQUFnQnlCLFdBQWpDO0VBQ0EsT0FBT3pCLElBQUksWUFBWXVCLFVBQWhCLElBQThCdkIsSUFBSSxZQUFZeUIsV0FBckQ7QUFDRDs7QUFFRCxTQUFTdkgsWUFBVCxDQUFzQjhGLElBQXRCLEVBQTRCO0VBQzFCO0VBQ0EsSUFBSSxPQUFPMEIsVUFBUCxLQUFzQixXQUExQixFQUF1QztJQUNyQyxPQUFPLEtBQVA7RUFDRDs7RUFFRCxJQUFJSCxVQUFVLEdBQUd6Ryx5REFBUyxDQUFDa0YsSUFBRCxDQUFULENBQWdCMEIsVUFBakM7RUFDQSxPQUFPMUIsSUFBSSxZQUFZdUIsVUFBaEIsSUFBOEJ2QixJQUFJLFlBQVkwQixVQUFyRDtBQUNEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNwQkQ7QUFDZSxTQUFTM0csZ0JBQVQsR0FBNEI7RUFDekMsT0FBTyxDQUFDLGlDQUFpQ3VGLElBQWpDLENBQXNDSiwrREFBVyxFQUFqRCxDQUFSO0FBQ0Q7Ozs7Ozs7Ozs7Ozs7Ozs7QUNIRDtBQUNlLFNBQVM3QixjQUFULENBQXdCakosT0FBeEIsRUFBaUM7RUFDOUM7RUFDQSxJQUFJNEMsaUJBQWlCLEdBQUdwRSxnRUFBZ0IsQ0FBQ3dCLE9BQUQsQ0FBeEM7RUFBQSxJQUNJdU0sUUFBUSxHQUFHM0osaUJBQWlCLENBQUMySixRQURqQztFQUFBLElBRUlDLFNBQVMsR0FBRzVKLGlCQUFpQixDQUFDNEosU0FGbEM7RUFBQSxJQUdJQyxTQUFTLEdBQUc3SixpQkFBaUIsQ0FBQzZKLFNBSGxDOztFQUtBLE9BQU8sNkJBQTZCdkIsSUFBN0IsQ0FBa0NxQixRQUFRLEdBQUdFLFNBQVgsR0FBdUJELFNBQXpELENBQVA7QUFDRDs7Ozs7Ozs7Ozs7Ozs7OztBQ1REO0FBQ2UsU0FBUzNCLGNBQVQsQ0FBd0I3SyxPQUF4QixFQUFpQztFQUM5QyxPQUFPLENBQUMsT0FBRCxFQUFVLElBQVYsRUFBZ0IsSUFBaEIsRUFBc0JvSSxPQUF0QixDQUE4QmYsMkRBQVcsQ0FBQ3JILE9BQUQsQ0FBekMsS0FBdUQsQ0FBOUQ7QUFDRDs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVlLFNBQVMxQixpQkFBVCxDQUEyQjBCLE9BQTNCLEVBQW9DME0sSUFBcEMsRUFBMEM7RUFDdkQsSUFBSTFDLHFCQUFKOztFQUVBLElBQUkwQyxJQUFJLEtBQUssS0FBSyxDQUFsQixFQUFxQjtJQUNuQkEsSUFBSSxHQUFHLEVBQVA7RUFDRDs7RUFFRCxJQUFJQyxZQUFZLEdBQUdmLCtEQUFlLENBQUM1TCxPQUFELENBQWxDO0VBQ0EsSUFBSTRNLE1BQU0sR0FBR0QsWUFBWSxNQUFNLENBQUMzQyxxQkFBcUIsR0FBR2hLLE9BQU8sQ0FBQzZKLGFBQWpDLEtBQW1ELElBQW5ELEdBQTBELEtBQUssQ0FBL0QsR0FBbUVHLHFCQUFxQixDQUFDRyxJQUEvRixDQUF6QjtFQUNBLElBQUkwQixHQUFHLEdBQUduRyx5REFBUyxDQUFDaUgsWUFBRCxDQUFuQjtFQUNBLElBQUlFLE1BQU0sR0FBR0QsTUFBTSxHQUFHLENBQUNmLEdBQUQsRUFBTWhLLE1BQU4sQ0FBYWdLLEdBQUcsQ0FBQ3ZGLGNBQUosSUFBc0IsRUFBbkMsRUFBdUMyQyw4REFBYyxDQUFDMEQsWUFBRCxDQUFkLEdBQStCQSxZQUEvQixHQUE4QyxFQUFyRixDQUFILEdBQThGQSxZQUFqSDtFQUNBLElBQUlHLFdBQVcsR0FBR0osSUFBSSxDQUFDN0ssTUFBTCxDQUFZZ0wsTUFBWixDQUFsQjtFQUNBLE9BQU9ELE1BQU0sR0FBR0UsV0FBSCxHQUFpQjtFQUM5QkEsV0FBVyxDQUFDakwsTUFBWixDQUFtQnZELGlCQUFpQixDQUFDOEksNkRBQWEsQ0FBQ3lGLE1BQUQsQ0FBZCxDQUFwQyxDQURBO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDekJNLElBQUlqRyxHQUFHLEdBQUcsS0FBVjtBQUNBLElBQUlHLE1BQU0sR0FBRyxRQUFiO0FBQ0EsSUFBSUQsS0FBSyxHQUFHLE9BQVo7QUFDQSxJQUFJTCxJQUFJLEdBQUcsTUFBWDtBQUNBLElBQUl4SCxJQUFJLEdBQUcsTUFBWDtBQUNBLElBQUk4TixjQUFjLEdBQUcsQ0FBQ25HLEdBQUQsRUFBTUcsTUFBTixFQUFjRCxLQUFkLEVBQXFCTCxJQUFyQixDQUFyQjtBQUNBLElBQUl1RyxLQUFLLEdBQUcsT0FBWjtBQUNBLElBQUlDLEdBQUcsR0FBRyxLQUFWO0FBQ0EsSUFBSS9FLGVBQWUsR0FBRyxpQkFBdEI7QUFDQSxJQUFJbEIsUUFBUSxHQUFHLFVBQWY7QUFDQSxJQUFJckcsTUFBTSxHQUFHLFFBQWI7QUFDQSxJQUFJRCxTQUFTLEdBQUcsV0FBaEI7QUFDQSxJQUFJd00sbUJBQW1CLEdBQUcsYUFBYUgsY0FBYyxDQUFDbEUsTUFBZixDQUFzQixVQUFVc0UsR0FBVixFQUFlOU4sU0FBZixFQUEwQjtFQUM1RixPQUFPOE4sR0FBRyxDQUFDdEwsTUFBSixDQUFXLENBQUN4QyxTQUFTLEdBQUcsR0FBWixHQUFrQjJOLEtBQW5CLEVBQTBCM04sU0FBUyxHQUFHLEdBQVosR0FBa0I0TixHQUE1QyxDQUFYLENBQVA7QUFDRCxDQUY2QyxFQUUzQyxFQUYyQyxDQUF2QztBQUdBLElBQUlHLFVBQVUsR0FBRyxhQUFhLEdBQUd2TCxNQUFILENBQVVrTCxjQUFWLEVBQTBCLENBQUM5TixJQUFELENBQTFCLEVBQWtDNEosTUFBbEMsQ0FBeUMsVUFBVXNFLEdBQVYsRUFBZTlOLFNBQWYsRUFBMEI7RUFDdEcsT0FBTzhOLEdBQUcsQ0FBQ3RMLE1BQUosQ0FBVyxDQUFDeEMsU0FBRCxFQUFZQSxTQUFTLEdBQUcsR0FBWixHQUFrQjJOLEtBQTlCLEVBQXFDM04sU0FBUyxHQUFHLEdBQVosR0FBa0I0TixHQUF2RCxDQUFYLENBQVA7QUFDRCxDQUZvQyxFQUVsQyxFQUZrQyxDQUE5QixFQUVDOztBQUVELElBQUlJLFVBQVUsR0FBRyxZQUFqQjtBQUNBLElBQUlDLElBQUksR0FBRyxNQUFYO0FBQ0EsSUFBSUMsU0FBUyxHQUFHLFdBQWhCLEVBQTZCOztBQUU3QixJQUFJQyxVQUFVLEdBQUcsWUFBakI7QUFDQSxJQUFJQyxJQUFJLEdBQUcsTUFBWDtBQUNBLElBQUlDLFNBQVMsR0FBRyxXQUFoQixFQUE2Qjs7QUFFN0IsSUFBSUMsV0FBVyxHQUFHLGFBQWxCO0FBQ0EsSUFBSUMsS0FBSyxHQUFHLE9BQVo7QUFDQSxJQUFJQyxVQUFVLEdBQUcsWUFBakI7QUFDQSxJQUFJQyxjQUFjLEdBQUcsQ0FBQ1QsVUFBRCxFQUFhQyxJQUFiLEVBQW1CQyxTQUFuQixFQUE4QkMsVUFBOUIsRUFBMENDLElBQTFDLEVBQWdEQyxTQUFoRCxFQUEyREMsV0FBM0QsRUFBd0VDLEtBQXhFLEVBQStFQyxVQUEvRSxDQUFyQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzlCUDtDQUNzQzs7Q0FFaUU7O0NBRTNEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDTDVDO0NBQzREO0FBQzVEOztBQUVBLFNBQVNJLFdBQVQsQ0FBcUI3TCxJQUFyQixFQUEyQjtFQUN6QixJQUFJdkIsS0FBSyxHQUFHdUIsSUFBSSxDQUFDdkIsS0FBakI7RUFDQUUsTUFBTSxDQUFDbU4sSUFBUCxDQUFZck4sS0FBSyxDQUFDSyxRQUFsQixFQUE0QndDLE9BQTVCLENBQW9DLFVBQVVyQixJQUFWLEVBQWdCO0lBQ2xELElBQUk4TCxLQUFLLEdBQUd0TixLQUFLLENBQUNPLE1BQU4sQ0FBYWlCLElBQWIsS0FBc0IsRUFBbEM7SUFDQSxJQUFJbEIsVUFBVSxHQUFHTixLQUFLLENBQUNNLFVBQU4sQ0FBaUJrQixJQUFqQixLQUEwQixFQUEzQztJQUNBLElBQUlyQyxPQUFPLEdBQUdhLEtBQUssQ0FBQ0ssUUFBTixDQUFlbUIsSUFBZixDQUFkLENBSGtELENBR2Q7O0lBRXBDLElBQUksQ0FBQ21ELHVFQUFhLENBQUN4RixPQUFELENBQWQsSUFBMkIsQ0FBQ3FILHFFQUFXLENBQUNySCxPQUFELENBQTNDLEVBQXNEO01BQ3BEO0lBQ0QsQ0FQaUQsQ0FPaEQ7SUFDRjtJQUNBOzs7SUFHQWUsTUFBTSxDQUFDQyxNQUFQLENBQWNoQixPQUFPLENBQUNtTyxLQUF0QixFQUE2QkEsS0FBN0I7SUFDQXBOLE1BQU0sQ0FBQ21OLElBQVAsQ0FBWS9NLFVBQVosRUFBd0J1QyxPQUF4QixDQUFnQyxVQUFVckIsSUFBVixFQUFnQjtNQUM5QyxJQUFJK0wsS0FBSyxHQUFHak4sVUFBVSxDQUFDa0IsSUFBRCxDQUF0Qjs7TUFFQSxJQUFJK0wsS0FBSyxLQUFLLEtBQWQsRUFBcUI7UUFDbkJwTyxPQUFPLENBQUNxTyxlQUFSLENBQXdCaE0sSUFBeEI7TUFDRCxDQUZELE1BRU87UUFDTHJDLE9BQU8sQ0FBQ3NPLFlBQVIsQ0FBcUJqTSxJQUFyQixFQUEyQitMLEtBQUssS0FBSyxJQUFWLEdBQWlCLEVBQWpCLEdBQXNCQSxLQUFqRDtNQUNEO0lBQ0YsQ0FSRDtFQVNELENBdEJEO0FBdUJEOztBQUVELFNBQVMxSixNQUFULENBQWdCbEMsS0FBaEIsRUFBdUI7RUFDckIsSUFBSTNCLEtBQUssR0FBRzJCLEtBQUssQ0FBQzNCLEtBQWxCO0VBQ0EsSUFBSTBOLGFBQWEsR0FBRztJQUNsQjVOLE1BQU0sRUFBRTtNQUNOMEgsUUFBUSxFQUFFeEgsS0FBSyxDQUFDRCxPQUFOLENBQWNyQixRQURsQjtNQUVOa0gsSUFBSSxFQUFFLEdBRkE7TUFHTkcsR0FBRyxFQUFFLEdBSEM7TUFJTjNELE1BQU0sRUFBRTtJQUpGLENBRFU7SUFPbEJ1TCxLQUFLLEVBQUU7TUFDTG5HLFFBQVEsRUFBRTtJQURMLENBUFc7SUFVbEIzSCxTQUFTLEVBQUU7RUFWTyxDQUFwQjtFQVlBSyxNQUFNLENBQUNDLE1BQVAsQ0FBY0gsS0FBSyxDQUFDSyxRQUFOLENBQWVQLE1BQWYsQ0FBc0J3TixLQUFwQyxFQUEyQ0ksYUFBYSxDQUFDNU4sTUFBekQ7RUFDQUUsS0FBSyxDQUFDTyxNQUFOLEdBQWVtTixhQUFmOztFQUVBLElBQUkxTixLQUFLLENBQUNLLFFBQU4sQ0FBZXNOLEtBQW5CLEVBQTBCO0lBQ3hCek4sTUFBTSxDQUFDQyxNQUFQLENBQWNILEtBQUssQ0FBQ0ssUUFBTixDQUFlc04sS0FBZixDQUFxQkwsS0FBbkMsRUFBMENJLGFBQWEsQ0FBQ0MsS0FBeEQ7RUFDRDs7RUFFRCxPQUFPLFlBQVk7SUFDakJ6TixNQUFNLENBQUNtTixJQUFQLENBQVlyTixLQUFLLENBQUNLLFFBQWxCLEVBQTRCd0MsT0FBNUIsQ0FBb0MsVUFBVXJCLElBQVYsRUFBZ0I7TUFDbEQsSUFBSXJDLE9BQU8sR0FBR2EsS0FBSyxDQUFDSyxRQUFOLENBQWVtQixJQUFmLENBQWQ7TUFDQSxJQUFJbEIsVUFBVSxHQUFHTixLQUFLLENBQUNNLFVBQU4sQ0FBaUJrQixJQUFqQixLQUEwQixFQUEzQztNQUNBLElBQUlvTSxlQUFlLEdBQUcxTixNQUFNLENBQUNtTixJQUFQLENBQVlyTixLQUFLLENBQUNPLE1BQU4sQ0FBYXNOLGNBQWIsQ0FBNEJyTSxJQUE1QixJQUFvQ3hCLEtBQUssQ0FBQ08sTUFBTixDQUFhaUIsSUFBYixDQUFwQyxHQUF5RGtNLGFBQWEsQ0FBQ2xNLElBQUQsQ0FBbEYsQ0FBdEIsQ0FIa0QsQ0FHK0Q7O01BRWpILElBQUk4TCxLQUFLLEdBQUdNLGVBQWUsQ0FBQzVGLE1BQWhCLENBQXVCLFVBQVVzRixLQUFWLEVBQWlCUSxRQUFqQixFQUEyQjtRQUM1RFIsS0FBSyxDQUFDUSxRQUFELENBQUwsR0FBa0IsRUFBbEI7UUFDQSxPQUFPUixLQUFQO01BQ0QsQ0FIVyxFQUdULEVBSFMsQ0FBWixDQUxrRCxDQVExQzs7TUFFUixJQUFJLENBQUMzSSx1RUFBYSxDQUFDeEYsT0FBRCxDQUFkLElBQTJCLENBQUNxSCxxRUFBVyxDQUFDckgsT0FBRCxDQUEzQyxFQUFzRDtRQUNwRDtNQUNEOztNQUVEZSxNQUFNLENBQUNDLE1BQVAsQ0FBY2hCLE9BQU8sQ0FBQ21PLEtBQXRCLEVBQTZCQSxLQUE3QjtNQUNBcE4sTUFBTSxDQUFDbU4sSUFBUCxDQUFZL00sVUFBWixFQUF3QnVDLE9BQXhCLENBQWdDLFVBQVVrTCxTQUFWLEVBQXFCO1FBQ25ENU8sT0FBTyxDQUFDcU8sZUFBUixDQUF3Qk8sU0FBeEI7TUFDRCxDQUZEO0lBR0QsQ0FsQkQ7RUFtQkQsQ0FwQkQ7QUFxQkQsRUFBQzs7O0FBR0YsaUVBQWU7RUFDYnZNLElBQUksRUFBRSxhQURPO0VBRWJMLE9BQU8sRUFBRSxJQUZJO0VBR2I2TSxLQUFLLEVBQUUsT0FITTtFQUliN0ssRUFBRSxFQUFFaUssV0FKUztFQUtidkosTUFBTSxFQUFFQSxNQUxLO0VBTWJvSyxRQUFRLEVBQUUsQ0FBQyxlQUFEO0FBTkcsQ0FBZjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzVFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Q0FDNEQ7O0FBRTVELElBQUlLLGVBQWUsR0FBRyxTQUFTQSxlQUFULENBQXlCQyxPQUF6QixFQUFrQ3ZPLEtBQWxDLEVBQXlDO0VBQzdEdU8sT0FBTyxHQUFHLE9BQU9BLE9BQVAsS0FBbUIsVUFBbkIsR0FBZ0NBLE9BQU8sQ0FBQ3JPLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjLEVBQWQsRUFBa0JILEtBQUssQ0FBQzJDLEtBQXhCLEVBQStCO0lBQy9FbkUsU0FBUyxFQUFFd0IsS0FBSyxDQUFDeEI7RUFEOEQsQ0FBL0IsQ0FBRCxDQUF2QyxHQUVKK1AsT0FGTjtFQUdBLE9BQU9ILHdFQUFrQixDQUFDLE9BQU9HLE9BQVAsS0FBbUIsUUFBbkIsR0FBOEJBLE9BQTlCLEdBQXdDRixxRUFBZSxDQUFDRSxPQUFELEVBQVVyQyxxREFBVixDQUF4RCxDQUF6QjtBQUNELENBTEQ7O0FBT0EsU0FBU3lCLEtBQVQsQ0FBZXBNLElBQWYsRUFBcUI7RUFDbkIsSUFBSWlOLHFCQUFKOztFQUVBLElBQUl4TyxLQUFLLEdBQUd1QixJQUFJLENBQUN2QixLQUFqQjtFQUFBLElBQ0l3QixJQUFJLEdBQUdELElBQUksQ0FBQ0MsSUFEaEI7RUFBQSxJQUVJekIsT0FBTyxHQUFHd0IsSUFBSSxDQUFDeEIsT0FGbkI7RUFHQSxJQUFJME8sWUFBWSxHQUFHek8sS0FBSyxDQUFDSyxRQUFOLENBQWVzTixLQUFsQztFQUNBLElBQUllLGFBQWEsR0FBRzFPLEtBQUssQ0FBQ0ksYUFBTixDQUFvQnNPLGFBQXhDO0VBQ0EsSUFBSUMsYUFBYSxHQUFHM1Esc0VBQWdCLENBQUNnQyxLQUFLLENBQUN4QixTQUFQLENBQXBDO0VBQ0EsSUFBSW9RLElBQUksR0FBR1YsOEVBQXdCLENBQUNTLGFBQUQsQ0FBbkM7RUFDQSxJQUFJRSxVQUFVLEdBQUcsQ0FBQ2pKLDJDQUFELEVBQU9LLDRDQUFQLEVBQWNzQixPQUFkLENBQXNCb0gsYUFBdEIsS0FBd0MsQ0FBekQ7RUFDQSxJQUFJRyxHQUFHLEdBQUdELFVBQVUsR0FBRyxRQUFILEdBQWMsT0FBbEM7O0VBRUEsSUFBSSxDQUFDSixZQUFELElBQWlCLENBQUNDLGFBQXRCLEVBQXFDO0lBQ25DO0VBQ0Q7O0VBRUQsSUFBSUssYUFBYSxHQUFHVCxlQUFlLENBQUN2TyxPQUFPLENBQUN3TyxPQUFULEVBQWtCdk8sS0FBbEIsQ0FBbkM7RUFDQSxJQUFJZ1AsU0FBUyxHQUFHeFIsdUVBQWEsQ0FBQ2lSLFlBQUQsQ0FBN0I7RUFDQSxJQUFJUSxPQUFPLEdBQUdMLElBQUksS0FBSyxHQUFULEdBQWU3SSwwQ0FBZixHQUFxQkgsMkNBQW5DO0VBQ0EsSUFBSXNKLE9BQU8sR0FBR04sSUFBSSxLQUFLLEdBQVQsR0FBZTFJLDZDQUFmLEdBQXdCRCw0Q0FBdEM7RUFDQSxJQUFJa0osT0FBTyxHQUFHblAsS0FBSyxDQUFDMkMsS0FBTixDQUFZOUMsU0FBWixDQUFzQmlQLEdBQXRCLElBQTZCOU8sS0FBSyxDQUFDMkMsS0FBTixDQUFZOUMsU0FBWixDQUFzQitPLElBQXRCLENBQTdCLEdBQTJERixhQUFhLENBQUNFLElBQUQsQ0FBeEUsR0FBaUY1TyxLQUFLLENBQUMyQyxLQUFOLENBQVk3QyxNQUFaLENBQW1CZ1AsR0FBbkIsQ0FBL0Y7RUFDQSxJQUFJTSxTQUFTLEdBQUdWLGFBQWEsQ0FBQ0UsSUFBRCxDQUFiLEdBQXNCNU8sS0FBSyxDQUFDMkMsS0FBTixDQUFZOUMsU0FBWixDQUFzQitPLElBQXRCLENBQXRDO0VBQ0EsSUFBSVMsaUJBQWlCLEdBQUczUix5RUFBZSxDQUFDK1EsWUFBRCxDQUF2QztFQUNBLElBQUlhLFVBQVUsR0FBR0QsaUJBQWlCLEdBQUdULElBQUksS0FBSyxHQUFULEdBQWVTLGlCQUFpQixDQUFDckksWUFBbEIsSUFBa0MsQ0FBakQsR0FBcURxSSxpQkFBaUIsQ0FBQ3BJLFdBQWxCLElBQWlDLENBQXpGLEdBQTZGLENBQS9IO0VBQ0EsSUFBSXNJLGlCQUFpQixHQUFHSixPQUFPLEdBQUcsQ0FBVixHQUFjQyxTQUFTLEdBQUcsQ0FBbEQsQ0F6Qm1CLENBeUJrQztFQUNyRDs7RUFFQSxJQUFJekksR0FBRyxHQUFHb0ksYUFBYSxDQUFDRSxPQUFELENBQXZCO0VBQ0EsSUFBSXZJLEdBQUcsR0FBRzRJLFVBQVUsR0FBR04sU0FBUyxDQUFDRixHQUFELENBQXRCLEdBQThCQyxhQUFhLENBQUNHLE9BQUQsQ0FBckQ7RUFDQSxJQUFJTSxNQUFNLEdBQUdGLFVBQVUsR0FBRyxDQUFiLEdBQWlCTixTQUFTLENBQUNGLEdBQUQsQ0FBVCxHQUFpQixDQUFsQyxHQUFzQ1MsaUJBQW5EO0VBQ0EsSUFBSUUsTUFBTSxHQUFHdEIsd0RBQU0sQ0FBQ3hILEdBQUQsRUFBTTZJLE1BQU4sRUFBYzlJLEdBQWQsQ0FBbkIsQ0EvQm1CLENBK0JvQjs7RUFFdkMsSUFBSWdKLFFBQVEsR0FBR2QsSUFBZjtFQUNBNU8sS0FBSyxDQUFDSSxhQUFOLENBQW9Cb0IsSUFBcEIsS0FBNkJnTixxQkFBcUIsR0FBRyxFQUF4QixFQUE0QkEscUJBQXFCLENBQUNrQixRQUFELENBQXJCLEdBQWtDRCxNQUE5RCxFQUFzRWpCLHFCQUFxQixDQUFDbUIsWUFBdEIsR0FBcUNGLE1BQU0sR0FBR0QsTUFBcEgsRUFBNEhoQixxQkFBeko7QUFDRDs7QUFFRCxTQUFTM0ssTUFBVCxDQUFnQmxDLEtBQWhCLEVBQXVCO0VBQ3JCLElBQUkzQixLQUFLLEdBQUcyQixLQUFLLENBQUMzQixLQUFsQjtFQUFBLElBQ0lELE9BQU8sR0FBRzRCLEtBQUssQ0FBQzVCLE9BRHBCO0VBRUEsSUFBSTZQLGdCQUFnQixHQUFHN1AsT0FBTyxDQUFDWixPQUEvQjtFQUFBLElBQ0lzUCxZQUFZLEdBQUdtQixnQkFBZ0IsS0FBSyxLQUFLLENBQTFCLEdBQThCLHFCQUE5QixHQUFzREEsZ0JBRHpFOztFQUdBLElBQUluQixZQUFZLElBQUksSUFBcEIsRUFBMEI7SUFDeEI7RUFDRCxDQVJvQixDQVFuQjs7O0VBR0YsSUFBSSxPQUFPQSxZQUFQLEtBQXdCLFFBQTVCLEVBQXNDO0lBQ3BDQSxZQUFZLEdBQUd6TyxLQUFLLENBQUNLLFFBQU4sQ0FBZVAsTUFBZixDQUFzQitQLGFBQXRCLENBQW9DcEIsWUFBcEMsQ0FBZjs7SUFFQSxJQUFJLENBQUNBLFlBQUwsRUFBbUI7TUFDakI7SUFDRDtFQUNGOztFQUVELElBQUlyTixJQUFKLEVBQTJDO0lBQ3pDLElBQUksQ0FBQ3VELHVFQUFhLENBQUM4SixZQUFELENBQWxCLEVBQWtDO01BQ2hDN00sT0FBTyxDQUFDQyxLQUFSLENBQWMsQ0FBQyxxRUFBRCxFQUF3RSxxRUFBeEUsRUFBK0ksWUFBL0ksRUFBNkpDLElBQTdKLENBQWtLLEdBQWxLLENBQWQ7SUFDRDtFQUNGOztFQUVELElBQUksQ0FBQ29DLGtFQUFRLENBQUNsRSxLQUFLLENBQUNLLFFBQU4sQ0FBZVAsTUFBaEIsRUFBd0IyTyxZQUF4QixDQUFiLEVBQW9EO0lBQ2xELElBQUlyTixJQUFKLEVBQTJDO01BQ3pDUSxPQUFPLENBQUNDLEtBQVIsQ0FBYyxDQUFDLHFFQUFELEVBQXdFLFVBQXhFLEVBQW9GQyxJQUFwRixDQUF5RixHQUF6RixDQUFkO0lBQ0Q7O0lBRUQ7RUFDRDs7RUFFRDlCLEtBQUssQ0FBQ0ssUUFBTixDQUFlc04sS0FBZixHQUF1QmMsWUFBdkI7QUFDRCxFQUFDOzs7QUFHRixpRUFBZTtFQUNiak4sSUFBSSxFQUFFLE9BRE87RUFFYkwsT0FBTyxFQUFFLElBRkk7RUFHYjZNLEtBQUssRUFBRSxNQUhNO0VBSWI3SyxFQUFFLEVBQUV3SyxLQUpTO0VBS2I5SixNQUFNLEVBQUVBLE1BTEs7RUFNYm9LLFFBQVEsRUFBRSxDQUFDLGVBQUQsQ0FORztFQU9iNkIsZ0JBQWdCLEVBQUUsQ0FBQyxpQkFBRDtBQVBMLENBQWY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzVGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtDQUMwQzs7QUFFMUMsSUFBSUUsVUFBVSxHQUFHO0VBQ2ZqSyxHQUFHLEVBQUUsTUFEVTtFQUVmRSxLQUFLLEVBQUUsTUFGUTtFQUdmQyxNQUFNLEVBQUUsTUFITztFQUlmTixJQUFJLEVBQUU7QUFKUyxDQUFqQixFQUtHO0FBQ0g7QUFDQTs7QUFFQSxTQUFTcUssaUJBQVQsQ0FBMkIxTyxJQUEzQixFQUFpQztFQUMvQixJQUFJb0UsQ0FBQyxHQUFHcEUsSUFBSSxDQUFDb0UsQ0FBYjtFQUFBLElBQ0lHLENBQUMsR0FBR3ZFLElBQUksQ0FBQ3VFLENBRGI7RUFFQSxJQUFJa0YsR0FBRyxHQUFHeEYsTUFBVjtFQUNBLElBQUkwSyxHQUFHLEdBQUdsRixHQUFHLENBQUNtRixnQkFBSixJQUF3QixDQUFsQztFQUNBLE9BQU87SUFDTHhLLENBQUMsRUFBRWYscURBQUssQ0FBQ2UsQ0FBQyxHQUFHdUssR0FBTCxDQUFMLEdBQWlCQSxHQUFqQixJQUF3QixDQUR0QjtJQUVMcEssQ0FBQyxFQUFFbEIscURBQUssQ0FBQ2tCLENBQUMsR0FBR29LLEdBQUwsQ0FBTCxHQUFpQkEsR0FBakIsSUFBd0I7RUFGdEIsQ0FBUDtBQUlEOztBQUVNLFNBQVNFLFdBQVQsQ0FBcUJ6TyxLQUFyQixFQUE0QjtFQUNqQyxJQUFJME8sZUFBSjs7RUFFQSxJQUFJdlEsTUFBTSxHQUFHNkIsS0FBSyxDQUFDN0IsTUFBbkI7RUFBQSxJQUNJd1EsVUFBVSxHQUFHM08sS0FBSyxDQUFDMk8sVUFEdkI7RUFBQSxJQUVJOVIsU0FBUyxHQUFHbUQsS0FBSyxDQUFDbkQsU0FGdEI7RUFBQSxJQUdJK1IsU0FBUyxHQUFHNU8sS0FBSyxDQUFDNE8sU0FIdEI7RUFBQSxJQUlJeEgsT0FBTyxHQUFHcEgsS0FBSyxDQUFDb0gsT0FKcEI7RUFBQSxJQUtJdkIsUUFBUSxHQUFHN0YsS0FBSyxDQUFDNkYsUUFMckI7RUFBQSxJQU1JZ0osZUFBZSxHQUFHN08sS0FBSyxDQUFDNk8sZUFONUI7RUFBQSxJQU9JQyxRQUFRLEdBQUc5TyxLQUFLLENBQUM4TyxRQVByQjtFQUFBLElBUUlDLFlBQVksR0FBRy9PLEtBQUssQ0FBQytPLFlBUnpCO0VBQUEsSUFTSWxJLE9BQU8sR0FBRzdHLEtBQUssQ0FBQzZHLE9BVHBCO0VBVUEsSUFBSW1JLFVBQVUsR0FBRzVILE9BQU8sQ0FBQ3BELENBQXpCO0VBQUEsSUFDSUEsQ0FBQyxHQUFHZ0wsVUFBVSxLQUFLLEtBQUssQ0FBcEIsR0FBd0IsQ0FBeEIsR0FBNEJBLFVBRHBDO0VBQUEsSUFFSUMsVUFBVSxHQUFHN0gsT0FBTyxDQUFDakQsQ0FGekI7RUFBQSxJQUdJQSxDQUFDLEdBQUc4SyxVQUFVLEtBQUssS0FBSyxDQUFwQixHQUF3QixDQUF4QixHQUE0QkEsVUFIcEM7O0VBS0EsSUFBSWpOLEtBQUssR0FBRyxPQUFPK00sWUFBUCxLQUF3QixVQUF4QixHQUFxQ0EsWUFBWSxDQUFDO0lBQzVEL0ssQ0FBQyxFQUFFQSxDQUR5RDtJQUU1REcsQ0FBQyxFQUFFQTtFQUZ5RCxDQUFELENBQWpELEdBR1A7SUFDSEgsQ0FBQyxFQUFFQSxDQURBO0lBRUhHLENBQUMsRUFBRUE7RUFGQSxDQUhMOztFQVFBSCxDQUFDLEdBQUdoQyxLQUFLLENBQUNnQyxDQUFWO0VBQ0FHLENBQUMsR0FBR25DLEtBQUssQ0FBQ21DLENBQVY7RUFDQSxJQUFJK0ssSUFBSSxHQUFHOUgsT0FBTyxDQUFDOEUsY0FBUixDQUF1QixHQUF2QixDQUFYO0VBQ0EsSUFBSWlELElBQUksR0FBRy9ILE9BQU8sQ0FBQzhFLGNBQVIsQ0FBdUIsR0FBdkIsQ0FBWDtFQUNBLElBQUlrRCxLQUFLLEdBQUduTCwyQ0FBWjtFQUNBLElBQUlvTCxLQUFLLEdBQUdqTCwwQ0FBWjtFQUNBLElBQUlpRixHQUFHLEdBQUd4RixNQUFWOztFQUVBLElBQUlpTCxRQUFKLEVBQWM7SUFDWixJQUFJbEksWUFBWSxHQUFHN0sseUVBQWUsQ0FBQ29DLE1BQUQsQ0FBbEM7SUFDQSxJQUFJbVIsVUFBVSxHQUFHLGNBQWpCO0lBQ0EsSUFBSUMsU0FBUyxHQUFHLGFBQWhCOztJQUVBLElBQUkzSSxZQUFZLEtBQUsxRCxtRUFBUyxDQUFDL0UsTUFBRCxDQUE5QixFQUF3QztNQUN0Q3lJLFlBQVksR0FBR2pDLDRFQUFrQixDQUFDeEcsTUFBRCxDQUFqQzs7TUFFQSxJQUFJbkMsMEVBQWdCLENBQUM0SyxZQUFELENBQWhCLENBQStCZixRQUEvQixLQUE0QyxRQUE1QyxJQUF3REEsUUFBUSxLQUFLLFVBQXpFLEVBQXFGO1FBQ25GeUosVUFBVSxHQUFHLGNBQWI7UUFDQUMsU0FBUyxHQUFHLGFBQVo7TUFDRDtJQUNGLENBWlcsQ0FZVjs7O0lBR0YzSSxZQUFZLEdBQUdBLFlBQWY7O0lBRUEsSUFBSS9KLFNBQVMsS0FBS3VILDBDQUFkLElBQXFCLENBQUN2SCxTQUFTLEtBQUtvSCwyQ0FBZCxJQUFzQnBILFNBQVMsS0FBS3lILDRDQUFyQyxLQUErQ3NLLFNBQVMsS0FBS25FLDBDQUF0RixFQUEyRjtNQUN6RjRFLEtBQUssR0FBRzlLLDZDQUFSO01BQ0EsSUFBSWlMLE9BQU8sR0FBRzNJLE9BQU8sSUFBSUQsWUFBWSxLQUFLeUMsR0FBNUIsSUFBbUNBLEdBQUcsQ0FBQ3ZGLGNBQXZDLEdBQXdEdUYsR0FBRyxDQUFDdkYsY0FBSixDQUFtQkYsTUFBM0UsR0FBb0Y7TUFDbEdnRCxZQUFZLENBQUMwSSxVQUFELENBRFo7TUFFQW5MLENBQUMsSUFBSXFMLE9BQU8sR0FBR2IsVUFBVSxDQUFDL0ssTUFBMUI7TUFDQU8sQ0FBQyxJQUFJMEssZUFBZSxHQUFHLENBQUgsR0FBTyxDQUFDLENBQTVCO0lBQ0Q7O0lBRUQsSUFBSWhTLFNBQVMsS0FBS29ILDJDQUFkLElBQXNCLENBQUNwSCxTQUFTLEtBQUt1SCwwQ0FBZCxJQUFxQnZILFNBQVMsS0FBSzBILDZDQUFwQyxLQUErQ3FLLFNBQVMsS0FBS25FLDBDQUF2RixFQUE0RjtNQUMxRjJFLEtBQUssR0FBRzlLLDRDQUFSO01BQ0EsSUFBSW1MLE9BQU8sR0FBRzVJLE9BQU8sSUFBSUQsWUFBWSxLQUFLeUMsR0FBNUIsSUFBbUNBLEdBQUcsQ0FBQ3ZGLGNBQXZDLEdBQXdEdUYsR0FBRyxDQUFDdkYsY0FBSixDQUFtQkosS0FBM0UsR0FBbUY7TUFDakdrRCxZQUFZLENBQUMySSxTQUFELENBRFo7TUFFQXZMLENBQUMsSUFBSXlMLE9BQU8sR0FBR2QsVUFBVSxDQUFDakwsS0FBMUI7TUFDQU0sQ0FBQyxJQUFJNkssZUFBZSxHQUFHLENBQUgsR0FBTyxDQUFDLENBQTVCO0lBQ0Q7RUFDRjs7RUFFRCxJQUFJYSxZQUFZLEdBQUduUixNQUFNLENBQUNDLE1BQVAsQ0FBYztJQUMvQnFILFFBQVEsRUFBRUE7RUFEcUIsQ0FBZCxFQUVoQmlKLFFBQVEsSUFBSVQsVUFGSSxDQUFuQjs7RUFJQSxJQUFJc0IsS0FBSyxHQUFHWixZQUFZLEtBQUssSUFBakIsR0FBd0JULGlCQUFpQixDQUFDO0lBQ3BEdEssQ0FBQyxFQUFFQSxDQURpRDtJQUVwREcsQ0FBQyxFQUFFQTtFQUZpRCxDQUFELENBQXpDLEdBR1A7SUFDSEgsQ0FBQyxFQUFFQSxDQURBO0lBRUhHLENBQUMsRUFBRUE7RUFGQSxDQUhMOztFQVFBSCxDQUFDLEdBQUcyTCxLQUFLLENBQUMzTCxDQUFWO0VBQ0FHLENBQUMsR0FBR3dMLEtBQUssQ0FBQ3hMLENBQVY7O0VBRUEsSUFBSTBLLGVBQUosRUFBcUI7SUFDbkIsSUFBSWUsY0FBSjs7SUFFQSxPQUFPclIsTUFBTSxDQUFDQyxNQUFQLENBQWMsRUFBZCxFQUFrQmtSLFlBQWxCLEdBQWlDRSxjQUFjLEdBQUcsRUFBakIsRUFBcUJBLGNBQWMsQ0FBQ1AsS0FBRCxDQUFkLEdBQXdCRixJQUFJLEdBQUcsR0FBSCxHQUFTLEVBQTFELEVBQThEUyxjQUFjLENBQUNSLEtBQUQsQ0FBZCxHQUF3QkYsSUFBSSxHQUFHLEdBQUgsR0FBUyxFQUFuRyxFQUF1R1UsY0FBYyxDQUFDN0csU0FBZixHQUEyQixDQUFDTSxHQUFHLENBQUNtRixnQkFBSixJQUF3QixDQUF6QixLQUErQixDQUEvQixHQUFtQyxlQUFleEssQ0FBZixHQUFtQixNQUFuQixHQUE0QkcsQ0FBNUIsR0FBZ0MsS0FBbkUsR0FBMkUsaUJBQWlCSCxDQUFqQixHQUFxQixNQUFyQixHQUE4QkcsQ0FBOUIsR0FBa0MsUUFBL08sRUFBeVB5TCxjQUExUixFQUFQO0VBQ0Q7O0VBRUQsT0FBT3JSLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjLEVBQWQsRUFBa0JrUixZQUFsQixHQUFpQ2hCLGVBQWUsR0FBRyxFQUFsQixFQUFzQkEsZUFBZSxDQUFDVyxLQUFELENBQWYsR0FBeUJGLElBQUksR0FBR2hMLENBQUMsR0FBRyxJQUFQLEdBQWMsRUFBakUsRUFBcUV1SyxlQUFlLENBQUNVLEtBQUQsQ0FBZixHQUF5QkYsSUFBSSxHQUFHbEwsQ0FBQyxHQUFHLElBQVAsR0FBYyxFQUFoSCxFQUFvSDBLLGVBQWUsQ0FBQzNGLFNBQWhCLEdBQTRCLEVBQWhKLEVBQW9KMkYsZUFBckwsRUFBUDtBQUNEOztBQUVELFNBQVNtQixhQUFULENBQXVCQyxLQUF2QixFQUE4QjtFQUM1QixJQUFJelIsS0FBSyxHQUFHeVIsS0FBSyxDQUFDelIsS0FBbEI7RUFBQSxJQUNJRCxPQUFPLEdBQUcwUixLQUFLLENBQUMxUixPQURwQjtFQUVBLElBQUkyUixxQkFBcUIsR0FBRzNSLE9BQU8sQ0FBQ3lRLGVBQXBDO0VBQUEsSUFDSUEsZUFBZSxHQUFHa0IscUJBQXFCLEtBQUssS0FBSyxDQUEvQixHQUFtQyxJQUFuQyxHQUEwQ0EscUJBRGhFO0VBQUEsSUFFSUMsaUJBQWlCLEdBQUc1UixPQUFPLENBQUMwUSxRQUZoQztFQUFBLElBR0lBLFFBQVEsR0FBR2tCLGlCQUFpQixLQUFLLEtBQUssQ0FBM0IsR0FBK0IsSUFBL0IsR0FBc0NBLGlCQUhyRDtFQUFBLElBSUlDLHFCQUFxQixHQUFHN1IsT0FBTyxDQUFDMlEsWUFKcEM7RUFBQSxJQUtJQSxZQUFZLEdBQUdrQixxQkFBcUIsS0FBSyxLQUFLLENBQS9CLEdBQW1DLElBQW5DLEdBQTBDQSxxQkFMN0Q7O0VBT0EsSUFBSXhRLElBQUosRUFBMkM7SUFDekMsSUFBSXlRLGtCQUFrQixHQUFHbFUsMEVBQWdCLENBQUNxQyxLQUFLLENBQUNLLFFBQU4sQ0FBZVAsTUFBaEIsQ0FBaEIsQ0FBd0MrUixrQkFBeEMsSUFBOEQsRUFBdkY7O0lBRUEsSUFBSXBCLFFBQVEsSUFBSSxDQUFDLFdBQUQsRUFBYyxLQUFkLEVBQXFCLE9BQXJCLEVBQThCLFFBQTlCLEVBQXdDLE1BQXhDLEVBQWdEdlIsSUFBaEQsQ0FBcUQsVUFBVTRPLFFBQVYsRUFBb0I7TUFDdkYsT0FBTytELGtCQUFrQixDQUFDdEssT0FBbkIsQ0FBMkJ1RyxRQUEzQixLQUF3QyxDQUEvQztJQUNELENBRmUsQ0FBaEIsRUFFSTtNQUNGbE0sT0FBTyxDQUFDVSxJQUFSLENBQWEsQ0FBQyxtRUFBRCxFQUFzRSxnRUFBdEUsRUFBd0ksTUFBeEksRUFBZ0osb0VBQWhKLEVBQXNOLGlFQUF0TixFQUF5UixvRUFBelIsRUFBK1YsMENBQS9WLEVBQTJZLE1BQTNZLEVBQW1aLG9FQUFuWixFQUF5ZCxxRUFBemQsRUFBZ2lCUixJQUFoaUIsQ0FBcWlCLEdBQXJpQixDQUFiO0lBQ0Q7RUFDRjs7RUFFRCxJQUFJdVAsWUFBWSxHQUFHO0lBQ2pCN1MsU0FBUyxFQUFFUixzRUFBZ0IsQ0FBQ2dDLEtBQUssQ0FBQ3hCLFNBQVAsQ0FEVjtJQUVqQitSLFNBQVMsRUFBRVIsa0VBQVksQ0FBQy9QLEtBQUssQ0FBQ3hCLFNBQVAsQ0FGTjtJQUdqQnNCLE1BQU0sRUFBRUUsS0FBSyxDQUFDSyxRQUFOLENBQWVQLE1BSE47SUFJakJ3USxVQUFVLEVBQUV0USxLQUFLLENBQUMyQyxLQUFOLENBQVk3QyxNQUpQO0lBS2pCMFEsZUFBZSxFQUFFQSxlQUxBO0lBTWpCaEksT0FBTyxFQUFFeEksS0FBSyxDQUFDRCxPQUFOLENBQWNyQixRQUFkLEtBQTJCO0VBTm5CLENBQW5COztFQVNBLElBQUlzQixLQUFLLENBQUNJLGFBQU4sQ0FBb0JzTyxhQUFwQixJQUFxQyxJQUF6QyxFQUErQztJQUM3QzFPLEtBQUssQ0FBQ08sTUFBTixDQUFhVCxNQUFiLEdBQXNCSSxNQUFNLENBQUNDLE1BQVAsQ0FBYyxFQUFkLEVBQWtCSCxLQUFLLENBQUNPLE1BQU4sQ0FBYVQsTUFBL0IsRUFBdUNzUSxXQUFXLENBQUNsUSxNQUFNLENBQUNDLE1BQVAsQ0FBYyxFQUFkLEVBQWtCa1IsWUFBbEIsRUFBZ0M7TUFDdkd0SSxPQUFPLEVBQUUvSSxLQUFLLENBQUNJLGFBQU4sQ0FBb0JzTyxhQUQwRTtNQUV2R2xILFFBQVEsRUFBRXhILEtBQUssQ0FBQ0QsT0FBTixDQUFjckIsUUFGK0U7TUFHdkcrUixRQUFRLEVBQUVBLFFBSDZGO01BSXZHQyxZQUFZLEVBQUVBO0lBSnlGLENBQWhDLENBQUQsQ0FBbEQsQ0FBdEI7RUFNRDs7RUFFRCxJQUFJMVEsS0FBSyxDQUFDSSxhQUFOLENBQW9CdU4sS0FBcEIsSUFBNkIsSUFBakMsRUFBdUM7SUFDckMzTixLQUFLLENBQUNPLE1BQU4sQ0FBYW9OLEtBQWIsR0FBcUJ6TixNQUFNLENBQUNDLE1BQVAsQ0FBYyxFQUFkLEVBQWtCSCxLQUFLLENBQUNPLE1BQU4sQ0FBYW9OLEtBQS9CLEVBQXNDeUMsV0FBVyxDQUFDbFEsTUFBTSxDQUFDQyxNQUFQLENBQWMsRUFBZCxFQUFrQmtSLFlBQWxCLEVBQWdDO01BQ3JHdEksT0FBTyxFQUFFL0ksS0FBSyxDQUFDSSxhQUFOLENBQW9CdU4sS0FEd0U7TUFFckduRyxRQUFRLEVBQUUsVUFGMkY7TUFHckdpSixRQUFRLEVBQUUsS0FIMkY7TUFJckdDLFlBQVksRUFBRUE7SUFKdUYsQ0FBaEMsQ0FBRCxDQUFqRCxDQUFyQjtFQU1EOztFQUVEMVEsS0FBSyxDQUFDTSxVQUFOLENBQWlCUixNQUFqQixHQUEwQkksTUFBTSxDQUFDQyxNQUFQLENBQWMsRUFBZCxFQUFrQkgsS0FBSyxDQUFDTSxVQUFOLENBQWlCUixNQUFuQyxFQUEyQztJQUNuRSx5QkFBeUJFLEtBQUssQ0FBQ3hCO0VBRG9DLENBQTNDLENBQTFCO0FBR0QsRUFBQzs7O0FBR0YsaUVBQWU7RUFDYmdELElBQUksRUFBRSxlQURPO0VBRWJMLE9BQU8sRUFBRSxJQUZJO0VBR2I2TSxLQUFLLEVBQUUsYUFITTtFQUliN0ssRUFBRSxFQUFFcU8sYUFKUztFQUtiek8sSUFBSSxFQUFFO0FBTE8sQ0FBZjs7Ozs7Ozs7Ozs7Ozs7OztDQzlLbUQ7O0FBRW5ELElBQUkrTyxPQUFPLEdBQUc7RUFDWkEsT0FBTyxFQUFFO0FBREcsQ0FBZDs7QUFJQSxTQUFTak8sTUFBVCxDQUFnQnRDLElBQWhCLEVBQXNCO0VBQ3BCLElBQUl2QixLQUFLLEdBQUd1QixJQUFJLENBQUN2QixLQUFqQjtFQUFBLElBQ0lVLFFBQVEsR0FBR2EsSUFBSSxDQUFDYixRQURwQjtFQUFBLElBRUlYLE9BQU8sR0FBR3dCLElBQUksQ0FBQ3hCLE9BRm5CO0VBR0EsSUFBSWdTLGVBQWUsR0FBR2hTLE9BQU8sQ0FBQzZJLE1BQTlCO0VBQUEsSUFDSUEsTUFBTSxHQUFHbUosZUFBZSxLQUFLLEtBQUssQ0FBekIsR0FBNkIsSUFBN0IsR0FBb0NBLGVBRGpEO0VBQUEsSUFFSUMsZUFBZSxHQUFHalMsT0FBTyxDQUFDa1MsTUFGOUI7RUFBQSxJQUdJQSxNQUFNLEdBQUdELGVBQWUsS0FBSyxLQUFLLENBQXpCLEdBQTZCLElBQTdCLEdBQW9DQSxlQUhqRDtFQUlBLElBQUl4TSxNQUFNLEdBQUdYLG1FQUFTLENBQUM3RSxLQUFLLENBQUNLLFFBQU4sQ0FBZVAsTUFBaEIsQ0FBdEI7RUFDQSxJQUFJZ0IsYUFBYSxHQUFHLEdBQUdFLE1BQUgsQ0FBVWhCLEtBQUssQ0FBQ2MsYUFBTixDQUFvQmpCLFNBQTlCLEVBQXlDRyxLQUFLLENBQUNjLGFBQU4sQ0FBb0JoQixNQUE3RCxDQUFwQjs7RUFFQSxJQUFJOEksTUFBSixFQUFZO0lBQ1Y5SCxhQUFhLENBQUMrQixPQUFkLENBQXNCLFVBQVVpSixZQUFWLEVBQXdCO01BQzVDQSxZQUFZLENBQUNvRyxnQkFBYixDQUE4QixRQUE5QixFQUF3Q3hSLFFBQVEsQ0FBQzhCLE1BQWpELEVBQXlEc1AsT0FBekQ7SUFDRCxDQUZEO0VBR0Q7O0VBRUQsSUFBSUcsTUFBSixFQUFZO0lBQ1Z6TSxNQUFNLENBQUMwTSxnQkFBUCxDQUF3QixRQUF4QixFQUFrQ3hSLFFBQVEsQ0FBQzhCLE1BQTNDLEVBQW1Ec1AsT0FBbkQ7RUFDRDs7RUFFRCxPQUFPLFlBQVk7SUFDakIsSUFBSWxKLE1BQUosRUFBWTtNQUNWOUgsYUFBYSxDQUFDK0IsT0FBZCxDQUFzQixVQUFVaUosWUFBVixFQUF3QjtRQUM1Q0EsWUFBWSxDQUFDcUcsbUJBQWIsQ0FBaUMsUUFBakMsRUFBMkN6UixRQUFRLENBQUM4QixNQUFwRCxFQUE0RHNQLE9BQTVEO01BQ0QsQ0FGRDtJQUdEOztJQUVELElBQUlHLE1BQUosRUFBWTtNQUNWek0sTUFBTSxDQUFDMk0sbUJBQVAsQ0FBMkIsUUFBM0IsRUFBcUN6UixRQUFRLENBQUM4QixNQUE5QyxFQUFzRHNQLE9BQXREO0lBQ0Q7RUFDRixDQVZEO0FBV0QsRUFBQzs7O0FBR0YsaUVBQWU7RUFDYnRRLElBQUksRUFBRSxnQkFETztFQUViTCxPQUFPLEVBQUUsSUFGSTtFQUdiNk0sS0FBSyxFQUFFLE9BSE07RUFJYjdLLEVBQUUsRUFBRSxTQUFTQSxFQUFULEdBQWMsQ0FBRSxDQUpQO0VBS2JVLE1BQU0sRUFBRUEsTUFMSztFQU1iZCxJQUFJLEVBQUU7QUFOTyxDQUFmOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDekNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtDQUNxRDs7QUFFckQsU0FBU3dQLDZCQUFULENBQXVDL1QsU0FBdkMsRUFBa0Q7RUFDaEQsSUFBSVIsc0VBQWdCLENBQUNRLFNBQUQsQ0FBaEIsS0FBZ0NKLDJDQUFwQyxFQUEwQztJQUN4QyxPQUFPLEVBQVA7RUFDRDs7RUFFRCxJQUFJb1UsaUJBQWlCLEdBQUdKLDBFQUFvQixDQUFDNVQsU0FBRCxDQUE1QztFQUNBLE9BQU8sQ0FBQzZULG1GQUE2QixDQUFDN1QsU0FBRCxDQUE5QixFQUEyQ2dVLGlCQUEzQyxFQUE4REgsbUZBQTZCLENBQUNHLGlCQUFELENBQTNGLENBQVA7QUFDRDs7QUFFRCxTQUFTQyxJQUFULENBQWNsUixJQUFkLEVBQW9CO0VBQ2xCLElBQUl2QixLQUFLLEdBQUd1QixJQUFJLENBQUN2QixLQUFqQjtFQUFBLElBQ0lELE9BQU8sR0FBR3dCLElBQUksQ0FBQ3hCLE9BRG5CO0VBQUEsSUFFSXlCLElBQUksR0FBR0QsSUFBSSxDQUFDQyxJQUZoQjs7RUFJQSxJQUFJeEIsS0FBSyxDQUFDSSxhQUFOLENBQW9Cb0IsSUFBcEIsRUFBMEJrUixLQUE5QixFQUFxQztJQUNuQztFQUNEOztFQUVELElBQUlDLGlCQUFpQixHQUFHNVMsT0FBTyxDQUFDNlMsUUFBaEM7RUFBQSxJQUNJQyxhQUFhLEdBQUdGLGlCQUFpQixLQUFLLEtBQUssQ0FBM0IsR0FBK0IsSUFBL0IsR0FBc0NBLGlCQUQxRDtFQUFBLElBRUlHLGdCQUFnQixHQUFHL1MsT0FBTyxDQUFDZ1QsT0FGL0I7RUFBQSxJQUdJQyxZQUFZLEdBQUdGLGdCQUFnQixLQUFLLEtBQUssQ0FBMUIsR0FBOEIsSUFBOUIsR0FBcUNBLGdCQUh4RDtFQUFBLElBSUlHLDJCQUEyQixHQUFHbFQsT0FBTyxDQUFDbVQsa0JBSjFDO0VBQUEsSUFLSTNFLE9BQU8sR0FBR3hPLE9BQU8sQ0FBQ3dPLE9BTHRCO0VBQUEsSUFNSTVHLFFBQVEsR0FBRzVILE9BQU8sQ0FBQzRILFFBTnZCO0VBQUEsSUFPSUMsWUFBWSxHQUFHN0gsT0FBTyxDQUFDNkgsWUFQM0I7RUFBQSxJQVFJdUwsV0FBVyxHQUFHcFQsT0FBTyxDQUFDb1QsV0FSMUI7RUFBQSxJQVNJQyxxQkFBcUIsR0FBR3JULE9BQU8sQ0FBQ3NULGNBVHBDO0VBQUEsSUFVSUEsY0FBYyxHQUFHRCxxQkFBcUIsS0FBSyxLQUFLLENBQS9CLEdBQW1DLElBQW5DLEdBQTBDQSxxQkFWL0Q7RUFBQSxJQVdJRSxxQkFBcUIsR0FBR3ZULE9BQU8sQ0FBQ3VULHFCQVhwQztFQVlBLElBQUlDLGtCQUFrQixHQUFHdlQsS0FBSyxDQUFDRCxPQUFOLENBQWN2QixTQUF2QztFQUNBLElBQUltUSxhQUFhLEdBQUczUSxzRUFBZ0IsQ0FBQ3VWLGtCQUFELENBQXBDO0VBQ0EsSUFBSUMsZUFBZSxHQUFHN0UsYUFBYSxLQUFLNEUsa0JBQXhDO0VBQ0EsSUFBSUwsa0JBQWtCLEdBQUdELDJCQUEyQixLQUFLTyxlQUFlLElBQUksQ0FBQ0gsY0FBcEIsR0FBcUMsQ0FBQ2pCLDBFQUFvQixDQUFDbUIsa0JBQUQsQ0FBckIsQ0FBckMsR0FBa0ZoQiw2QkFBNkIsQ0FBQ2dCLGtCQUFELENBQXBILENBQXBEO0VBQ0EsSUFBSWhILFVBQVUsR0FBRyxDQUFDZ0gsa0JBQUQsRUFBcUJ2UyxNQUFyQixDQUE0QmtTLGtCQUE1QixFQUFnRGxMLE1BQWhELENBQXVELFVBQVVzRSxHQUFWLEVBQWU5TixTQUFmLEVBQTBCO0lBQ2hHLE9BQU84TixHQUFHLENBQUN0TCxNQUFKLENBQVdoRCxzRUFBZ0IsQ0FBQ1EsU0FBRCxDQUFoQixLQUFnQ0osMkNBQWhDLEdBQXVDa1UsMEVBQW9CLENBQUN0UyxLQUFELEVBQVE7TUFDbkZ4QixTQUFTLEVBQUVBLFNBRHdFO01BRW5GbUosUUFBUSxFQUFFQSxRQUZ5RTtNQUduRkMsWUFBWSxFQUFFQSxZQUhxRTtNQUluRjJHLE9BQU8sRUFBRUEsT0FKMEU7TUFLbkY4RSxjQUFjLEVBQUVBLGNBTG1FO01BTW5GQyxxQkFBcUIsRUFBRUE7SUFONEQsQ0FBUixDQUEzRCxHQU9iOVUsU0FQRSxDQUFQO0VBUUQsQ0FUZ0IsRUFTZCxFQVRjLENBQWpCO0VBVUEsSUFBSWlWLGFBQWEsR0FBR3pULEtBQUssQ0FBQzJDLEtBQU4sQ0FBWTlDLFNBQWhDO0VBQ0EsSUFBSXlRLFVBQVUsR0FBR3RRLEtBQUssQ0FBQzJDLEtBQU4sQ0FBWTdDLE1BQTdCO0VBQ0EsSUFBSTRULFNBQVMsR0FBRyxJQUFJQyxHQUFKLEVBQWhCO0VBQ0EsSUFBSUMsa0JBQWtCLEdBQUcsSUFBekI7RUFDQSxJQUFJQyxxQkFBcUIsR0FBR3RILFVBQVUsQ0FBQyxDQUFELENBQXRDOztFQUVBLEtBQUssSUFBSXVILENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUd2SCxVQUFVLENBQUN6TixNQUEvQixFQUF1Q2dWLENBQUMsRUFBeEMsRUFBNEM7SUFDMUMsSUFBSXRWLFNBQVMsR0FBRytOLFVBQVUsQ0FBQ3VILENBQUQsQ0FBMUI7O0lBRUEsSUFBSUMsY0FBYyxHQUFHL1Ysc0VBQWdCLENBQUNRLFNBQUQsQ0FBckM7O0lBRUEsSUFBSXdWLGdCQUFnQixHQUFHakUsa0VBQVksQ0FBQ3ZSLFNBQUQsQ0FBWixLQUE0QjJOLDRDQUFuRDtJQUNBLElBQUkwQyxVQUFVLEdBQUcsQ0FBQzlJLDBDQUFELEVBQU1HLDZDQUFOLEVBQWNxQixPQUFkLENBQXNCd00sY0FBdEIsS0FBeUMsQ0FBMUQ7SUFDQSxJQUFJakYsR0FBRyxHQUFHRCxVQUFVLEdBQUcsT0FBSCxHQUFhLFFBQWpDO0lBQ0EsSUFBSW5ELFFBQVEsR0FBR3hOLG9FQUFjLENBQUM4QixLQUFELEVBQVE7TUFDbkN4QixTQUFTLEVBQUVBLFNBRHdCO01BRW5DbUosUUFBUSxFQUFFQSxRQUZ5QjtNQUduQ0MsWUFBWSxFQUFFQSxZQUhxQjtNQUluQ3VMLFdBQVcsRUFBRUEsV0FKc0I7TUFLbkM1RSxPQUFPLEVBQUVBO0lBTDBCLENBQVIsQ0FBN0I7SUFPQSxJQUFJMEYsaUJBQWlCLEdBQUdwRixVQUFVLEdBQUdtRixnQkFBZ0IsR0FBRy9OLDRDQUFILEdBQVdMLDJDQUE5QixHQUFxQ29PLGdCQUFnQixHQUFHOU4sNkNBQUgsR0FBWUgsMENBQW5HOztJQUVBLElBQUkwTixhQUFhLENBQUMzRSxHQUFELENBQWIsR0FBcUJ3QixVQUFVLENBQUN4QixHQUFELENBQW5DLEVBQTBDO01BQ3hDbUYsaUJBQWlCLEdBQUc3QiwwRUFBb0IsQ0FBQzZCLGlCQUFELENBQXhDO0lBQ0Q7O0lBRUQsSUFBSUMsZ0JBQWdCLEdBQUc5QiwwRUFBb0IsQ0FBQzZCLGlCQUFELENBQTNDO0lBQ0EsSUFBSUUsTUFBTSxHQUFHLEVBQWI7O0lBRUEsSUFBSXRCLGFBQUosRUFBbUI7TUFDakJzQixNQUFNLENBQUNuUSxJQUFQLENBQVkwSCxRQUFRLENBQUNxSSxjQUFELENBQVIsSUFBNEIsQ0FBeEM7SUFDRDs7SUFFRCxJQUFJZixZQUFKLEVBQWtCO01BQ2hCbUIsTUFBTSxDQUFDblEsSUFBUCxDQUFZMEgsUUFBUSxDQUFDdUksaUJBQUQsQ0FBUixJQUErQixDQUEzQyxFQUE4Q3ZJLFFBQVEsQ0FBQ3dJLGdCQUFELENBQVIsSUFBOEIsQ0FBNUU7SUFDRDs7SUFFRCxJQUFJQyxNQUFNLENBQUNDLEtBQVAsQ0FBYSxVQUFVQyxLQUFWLEVBQWlCO01BQ2hDLE9BQU9BLEtBQVA7SUFDRCxDQUZHLENBQUosRUFFSTtNQUNGUixxQkFBcUIsR0FBR3JWLFNBQXhCO01BQ0FvVixrQkFBa0IsR0FBRyxLQUFyQjtNQUNBO0lBQ0Q7O0lBRURGLFNBQVMsQ0FBQ1ksR0FBVixDQUFjOVYsU0FBZCxFQUF5QjJWLE1BQXpCO0VBQ0Q7O0VBRUQsSUFBSVAsa0JBQUosRUFBd0I7SUFDdEI7SUFDQSxJQUFJVyxjQUFjLEdBQUdsQixjQUFjLEdBQUcsQ0FBSCxHQUFPLENBQTFDOztJQUVBLElBQUltQixLQUFLLEdBQUcsU0FBU0EsS0FBVCxDQUFlQyxFQUFmLEVBQW1CO01BQzdCLElBQUlDLGdCQUFnQixHQUFHbkksVUFBVSxDQUFDN0ssSUFBWCxDQUFnQixVQUFVbEQsU0FBVixFQUFxQjtRQUMxRCxJQUFJMlYsTUFBTSxHQUFHVCxTQUFTLENBQUNpQixHQUFWLENBQWNuVyxTQUFkLENBQWI7O1FBRUEsSUFBSTJWLE1BQUosRUFBWTtVQUNWLE9BQU9BLE1BQU0sQ0FBQ1MsS0FBUCxDQUFhLENBQWIsRUFBZ0JILEVBQWhCLEVBQW9CTCxLQUFwQixDQUEwQixVQUFVQyxLQUFWLEVBQWlCO1lBQ2hELE9BQU9BLEtBQVA7VUFDRCxDQUZNLENBQVA7UUFHRDtNQUNGLENBUnNCLENBQXZCOztNQVVBLElBQUlLLGdCQUFKLEVBQXNCO1FBQ3BCYixxQkFBcUIsR0FBR2EsZ0JBQXhCO1FBQ0EsT0FBTyxPQUFQO01BQ0Q7SUFDRixDQWZEOztJQWlCQSxLQUFLLElBQUlELEVBQUUsR0FBR0YsY0FBZCxFQUE4QkUsRUFBRSxHQUFHLENBQW5DLEVBQXNDQSxFQUFFLEVBQXhDLEVBQTRDO01BQzFDLElBQUlJLElBQUksR0FBR0wsS0FBSyxDQUFDQyxFQUFELENBQWhCOztNQUVBLElBQUlJLElBQUksS0FBSyxPQUFiLEVBQXNCO0lBQ3ZCO0VBQ0Y7O0VBRUQsSUFBSTdVLEtBQUssQ0FBQ3hCLFNBQU4sS0FBb0JxVixxQkFBeEIsRUFBK0M7SUFDN0M3VCxLQUFLLENBQUNJLGFBQU4sQ0FBb0JvQixJQUFwQixFQUEwQmtSLEtBQTFCLEdBQWtDLElBQWxDO0lBQ0ExUyxLQUFLLENBQUN4QixTQUFOLEdBQWtCcVYscUJBQWxCO0lBQ0E3VCxLQUFLLENBQUM0QyxLQUFOLEdBQWMsSUFBZDtFQUNEO0FBQ0YsRUFBQzs7O0FBR0YsaUVBQWU7RUFDYnBCLElBQUksRUFBRSxNQURPO0VBRWJMLE9BQU8sRUFBRSxJQUZJO0VBR2I2TSxLQUFLLEVBQUUsTUFITTtFQUliN0ssRUFBRSxFQUFFc1AsSUFKUztFQUtiM0MsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFELENBTEw7RUFNYi9NLElBQUksRUFBRTtJQUNKMlAsS0FBSyxFQUFFO0VBREg7QUFOTyxDQUFmOzs7Ozs7Ozs7Ozs7Ozs7OztBQ3pJQTtBQUNBOztBQUVBLFNBQVNvQyxjQUFULENBQXdCcEosUUFBeEIsRUFBa0M3RSxJQUFsQyxFQUF3Q2tPLGdCQUF4QyxFQUEwRDtFQUN4RCxJQUFJQSxnQkFBZ0IsS0FBSyxLQUFLLENBQTlCLEVBQWlDO0lBQy9CQSxnQkFBZ0IsR0FBRztNQUNqQnBQLENBQUMsRUFBRSxDQURjO01BRWpCRyxDQUFDLEVBQUU7SUFGYyxDQUFuQjtFQUlEOztFQUVELE9BQU87SUFDTEMsR0FBRyxFQUFFMkYsUUFBUSxDQUFDM0YsR0FBVCxHQUFlYyxJQUFJLENBQUN0QixNQUFwQixHQUE2QndQLGdCQUFnQixDQUFDalAsQ0FEOUM7SUFFTEcsS0FBSyxFQUFFeUYsUUFBUSxDQUFDekYsS0FBVCxHQUFpQlksSUFBSSxDQUFDeEIsS0FBdEIsR0FBOEIwUCxnQkFBZ0IsQ0FBQ3BQLENBRmpEO0lBR0xPLE1BQU0sRUFBRXdGLFFBQVEsQ0FBQ3hGLE1BQVQsR0FBa0JXLElBQUksQ0FBQ3RCLE1BQXZCLEdBQWdDd1AsZ0JBQWdCLENBQUNqUCxDQUhwRDtJQUlMRixJQUFJLEVBQUU4RixRQUFRLENBQUM5RixJQUFULEdBQWdCaUIsSUFBSSxDQUFDeEIsS0FBckIsR0FBNkIwUCxnQkFBZ0IsQ0FBQ3BQO0VBSi9DLENBQVA7QUFNRDs7QUFFRCxTQUFTcVAscUJBQVQsQ0FBK0J0SixRQUEvQixFQUF5QztFQUN2QyxPQUFPLENBQUMzRiwwQ0FBRCxFQUFNRSw0Q0FBTixFQUFhQyw2Q0FBYixFQUFxQk4sMkNBQXJCLEVBQTJCMUcsSUFBM0IsQ0FBZ0MsVUFBVStWLElBQVYsRUFBZ0I7SUFDckQsT0FBT3ZKLFFBQVEsQ0FBQ3VKLElBQUQsQ0FBUixJQUFrQixDQUF6QjtFQUNELENBRk0sQ0FBUDtBQUdEOztBQUVELFNBQVNDLElBQVQsQ0FBYzNULElBQWQsRUFBb0I7RUFDbEIsSUFBSXZCLEtBQUssR0FBR3VCLElBQUksQ0FBQ3ZCLEtBQWpCO0VBQUEsSUFDSXdCLElBQUksR0FBR0QsSUFBSSxDQUFDQyxJQURoQjtFQUVBLElBQUlpUyxhQUFhLEdBQUd6VCxLQUFLLENBQUMyQyxLQUFOLENBQVk5QyxTQUFoQztFQUNBLElBQUl5USxVQUFVLEdBQUd0USxLQUFLLENBQUMyQyxLQUFOLENBQVk3QyxNQUE3QjtFQUNBLElBQUlpVixnQkFBZ0IsR0FBRy9VLEtBQUssQ0FBQ0ksYUFBTixDQUFvQitVLGVBQTNDO0VBQ0EsSUFBSUMsaUJBQWlCLEdBQUdsWCxvRUFBYyxDQUFDOEIsS0FBRCxFQUFRO0lBQzVDcVYsY0FBYyxFQUFFO0VBRDRCLENBQVIsQ0FBdEM7RUFHQSxJQUFJQyxpQkFBaUIsR0FBR3BYLG9FQUFjLENBQUM4QixLQUFELEVBQVE7SUFDNUNtVCxXQUFXLEVBQUU7RUFEK0IsQ0FBUixDQUF0QztFQUdBLElBQUlvQyx3QkFBd0IsR0FBR1QsY0FBYyxDQUFDTSxpQkFBRCxFQUFvQjNCLGFBQXBCLENBQTdDO0VBQ0EsSUFBSStCLG1CQUFtQixHQUFHVixjQUFjLENBQUNRLGlCQUFELEVBQW9CaEYsVUFBcEIsRUFBZ0N5RSxnQkFBaEMsQ0FBeEM7RUFDQSxJQUFJVSxpQkFBaUIsR0FBR1QscUJBQXFCLENBQUNPLHdCQUFELENBQTdDO0VBQ0EsSUFBSUcsZ0JBQWdCLEdBQUdWLHFCQUFxQixDQUFDUSxtQkFBRCxDQUE1QztFQUNBeFYsS0FBSyxDQUFDSSxhQUFOLENBQW9Cb0IsSUFBcEIsSUFBNEI7SUFDMUIrVCx3QkFBd0IsRUFBRUEsd0JBREE7SUFFMUJDLG1CQUFtQixFQUFFQSxtQkFGSztJQUcxQkMsaUJBQWlCLEVBQUVBLGlCQUhPO0lBSTFCQyxnQkFBZ0IsRUFBRUE7RUFKUSxDQUE1QjtFQU1BMVYsS0FBSyxDQUFDTSxVQUFOLENBQWlCUixNQUFqQixHQUEwQkksTUFBTSxDQUFDQyxNQUFQLENBQWMsRUFBZCxFQUFrQkgsS0FBSyxDQUFDTSxVQUFOLENBQWlCUixNQUFuQyxFQUEyQztJQUNuRSxnQ0FBZ0MyVixpQkFEbUM7SUFFbkUsdUJBQXVCQztFQUY0QyxDQUEzQyxDQUExQjtBQUlELEVBQUM7OztBQUdGLGlFQUFlO0VBQ2JsVSxJQUFJLEVBQUUsTUFETztFQUViTCxPQUFPLEVBQUUsSUFGSTtFQUdiNk0sS0FBSyxFQUFFLE1BSE07RUFJYjhCLGdCQUFnQixFQUFFLENBQUMsaUJBQUQsQ0FKTDtFQUtiM00sRUFBRSxFQUFFK1I7QUFMUyxDQUFmOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3REQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDUEE7Q0FDNEQ7O0FBRXJELFNBQVNXLHVCQUFULENBQWlDclgsU0FBakMsRUFBNENtRSxLQUE1QyxFQUFtRDhNLE1BQW5ELEVBQTJEO0VBQ2hFLElBQUlkLGFBQWEsR0FBRzNRLHNFQUFnQixDQUFDUSxTQUFELENBQXBDO0VBQ0EsSUFBSXNYLGNBQWMsR0FBRyxDQUFDbFEsMkNBQUQsRUFBT0csMENBQVAsRUFBWXdCLE9BQVosQ0FBb0JvSCxhQUFwQixLQUFzQyxDQUF0QyxHQUEwQyxDQUFDLENBQTNDLEdBQStDLENBQXBFOztFQUVBLElBQUlwTixJQUFJLEdBQUcsT0FBT2tPLE1BQVAsS0FBa0IsVUFBbEIsR0FBK0JBLE1BQU0sQ0FBQ3ZQLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjLEVBQWQsRUFBa0J3QyxLQUFsQixFQUF5QjtJQUN4RW5FLFNBQVMsRUFBRUE7RUFENkQsQ0FBekIsQ0FBRCxDQUFyQyxHQUVMaVIsTUFGTjtFQUFBLElBR0lzRyxRQUFRLEdBQUd4VSxJQUFJLENBQUMsQ0FBRCxDQUhuQjtFQUFBLElBSUl5VSxRQUFRLEdBQUd6VSxJQUFJLENBQUMsQ0FBRCxDQUpuQjs7RUFNQXdVLFFBQVEsR0FBR0EsUUFBUSxJQUFJLENBQXZCO0VBQ0FDLFFBQVEsR0FBRyxDQUFDQSxRQUFRLElBQUksQ0FBYixJQUFrQkYsY0FBN0I7RUFDQSxPQUFPLENBQUNsUSwyQ0FBRCxFQUFPSyw0Q0FBUCxFQUFjc0IsT0FBZCxDQUFzQm9ILGFBQXRCLEtBQXdDLENBQXhDLEdBQTRDO0lBQ2pEaEosQ0FBQyxFQUFFcVEsUUFEOEM7SUFFakRsUSxDQUFDLEVBQUVpUTtFQUY4QyxDQUE1QyxHQUdIO0lBQ0ZwUSxDQUFDLEVBQUVvUSxRQUREO0lBRUZqUSxDQUFDLEVBQUVrUTtFQUZELENBSEo7QUFPRDs7QUFFRCxTQUFTdkcsTUFBVCxDQUFnQjlOLEtBQWhCLEVBQXVCO0VBQ3JCLElBQUkzQixLQUFLLEdBQUcyQixLQUFLLENBQUMzQixLQUFsQjtFQUFBLElBQ0lELE9BQU8sR0FBRzRCLEtBQUssQ0FBQzVCLE9BRHBCO0VBQUEsSUFFSXlCLElBQUksR0FBR0csS0FBSyxDQUFDSCxJQUZqQjtFQUdBLElBQUl5VSxlQUFlLEdBQUdsVyxPQUFPLENBQUMwUCxNQUE5QjtFQUFBLElBQ0lBLE1BQU0sR0FBR3dHLGVBQWUsS0FBSyxLQUFLLENBQXpCLEdBQTZCLENBQUMsQ0FBRCxFQUFJLENBQUosQ0FBN0IsR0FBc0NBLGVBRG5EO0VBRUEsSUFBSWxULElBQUksR0FBR3dKLHdEQUFBLENBQWtCLFVBQVVELEdBQVYsRUFBZTlOLFNBQWYsRUFBMEI7SUFDckQ4TixHQUFHLENBQUM5TixTQUFELENBQUgsR0FBaUJxWCx1QkFBdUIsQ0FBQ3JYLFNBQUQsRUFBWXdCLEtBQUssQ0FBQzJDLEtBQWxCLEVBQXlCOE0sTUFBekIsQ0FBeEM7SUFDQSxPQUFPbkQsR0FBUDtFQUNELENBSFUsRUFHUixFQUhRLENBQVg7RUFJQSxJQUFJNEoscUJBQXFCLEdBQUduVCxJQUFJLENBQUMvQyxLQUFLLENBQUN4QixTQUFQLENBQWhDO0VBQUEsSUFDSW1ILENBQUMsR0FBR3VRLHFCQUFxQixDQUFDdlEsQ0FEOUI7RUFBQSxJQUVJRyxDQUFDLEdBQUdvUSxxQkFBcUIsQ0FBQ3BRLENBRjlCOztFQUlBLElBQUk5RixLQUFLLENBQUNJLGFBQU4sQ0FBb0JzTyxhQUFwQixJQUFxQyxJQUF6QyxFQUErQztJQUM3QzFPLEtBQUssQ0FBQ0ksYUFBTixDQUFvQnNPLGFBQXBCLENBQWtDL0ksQ0FBbEMsSUFBdUNBLENBQXZDO0lBQ0EzRixLQUFLLENBQUNJLGFBQU4sQ0FBb0JzTyxhQUFwQixDQUFrQzVJLENBQWxDLElBQXVDQSxDQUF2QztFQUNEOztFQUVEOUYsS0FBSyxDQUFDSSxhQUFOLENBQW9Cb0IsSUFBcEIsSUFBNEJ1QixJQUE1QjtBQUNELEVBQUM7OztBQUdGLGlFQUFlO0VBQ2J2QixJQUFJLEVBQUUsUUFETztFQUViTCxPQUFPLEVBQUUsSUFGSTtFQUdiNk0sS0FBSyxFQUFFLE1BSE07RUFJYkMsUUFBUSxFQUFFLENBQUMsZUFBRCxDQUpHO0VBS2I5SyxFQUFFLEVBQUVzTTtBQUxTLENBQWY7Ozs7Ozs7Ozs7Ozs7Ozs7QUMvQ0E7O0FBRUEsU0FBU2YsYUFBVCxDQUF1Qm5OLElBQXZCLEVBQTZCO0VBQzNCLElBQUl2QixLQUFLLEdBQUd1QixJQUFJLENBQUN2QixLQUFqQjtFQUFBLElBQ0l3QixJQUFJLEdBQUdELElBQUksQ0FBQ0MsSUFEaEIsQ0FEMkIsQ0FHM0I7RUFDQTtFQUNBO0VBQ0E7O0VBQ0F4QixLQUFLLENBQUNJLGFBQU4sQ0FBb0JvQixJQUFwQixJQUE0QjJVLG9FQUFjLENBQUM7SUFDekN0VyxTQUFTLEVBQUVHLEtBQUssQ0FBQzJDLEtBQU4sQ0FBWTlDLFNBRGtCO0lBRXpDVixPQUFPLEVBQUVhLEtBQUssQ0FBQzJDLEtBQU4sQ0FBWTdDLE1BRm9CO0lBR3pDcEIsUUFBUSxFQUFFLFVBSCtCO0lBSXpDRixTQUFTLEVBQUV3QixLQUFLLENBQUN4QjtFQUp3QixDQUFELENBQTFDO0FBTUQsRUFBQzs7O0FBR0YsaUVBQWU7RUFDYmdELElBQUksRUFBRSxlQURPO0VBRWJMLE9BQU8sRUFBRSxJQUZJO0VBR2I2TSxLQUFLLEVBQUUsTUFITTtFQUliN0ssRUFBRSxFQUFFdUwsYUFKUztFQUtiM0wsSUFBSSxFQUFFO0FBTE8sQ0FBZjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNsQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxTQUFTb1MsZUFBVCxDQUF5QjVULElBQXpCLEVBQStCO0VBQzdCLElBQUl2QixLQUFLLEdBQUd1QixJQUFJLENBQUN2QixLQUFqQjtFQUFBLElBQ0lELE9BQU8sR0FBR3dCLElBQUksQ0FBQ3hCLE9BRG5CO0VBQUEsSUFFSXlCLElBQUksR0FBR0QsSUFBSSxDQUFDQyxJQUZoQjtFQUdBLElBQUltUixpQkFBaUIsR0FBRzVTLE9BQU8sQ0FBQzZTLFFBQWhDO0VBQUEsSUFDSUMsYUFBYSxHQUFHRixpQkFBaUIsS0FBSyxLQUFLLENBQTNCLEdBQStCLElBQS9CLEdBQXNDQSxpQkFEMUQ7RUFBQSxJQUVJRyxnQkFBZ0IsR0FBRy9TLE9BQU8sQ0FBQ2dULE9BRi9CO0VBQUEsSUFHSUMsWUFBWSxHQUFHRixnQkFBZ0IsS0FBSyxLQUFLLENBQTFCLEdBQThCLEtBQTlCLEdBQXNDQSxnQkFIekQ7RUFBQSxJQUlJbkwsUUFBUSxHQUFHNUgsT0FBTyxDQUFDNEgsUUFKdkI7RUFBQSxJQUtJQyxZQUFZLEdBQUc3SCxPQUFPLENBQUM2SCxZQUwzQjtFQUFBLElBTUl1TCxXQUFXLEdBQUdwVCxPQUFPLENBQUNvVCxXQU4xQjtFQUFBLElBT0k1RSxPQUFPLEdBQUd4TyxPQUFPLENBQUN3TyxPQVB0QjtFQUFBLElBUUlrSSxlQUFlLEdBQUcxVyxPQUFPLENBQUMyVyxNQVI5QjtFQUFBLElBU0lBLE1BQU0sR0FBR0QsZUFBZSxLQUFLLEtBQUssQ0FBekIsR0FBNkIsSUFBN0IsR0FBb0NBLGVBVGpEO0VBQUEsSUFVSUUscUJBQXFCLEdBQUc1VyxPQUFPLENBQUM2VyxZQVZwQztFQUFBLElBV0lBLFlBQVksR0FBR0QscUJBQXFCLEtBQUssS0FBSyxDQUEvQixHQUFtQyxDQUFuQyxHQUF1Q0EscUJBWDFEO0VBWUEsSUFBSWpMLFFBQVEsR0FBR3hOLG9FQUFjLENBQUM4QixLQUFELEVBQVE7SUFDbkMySCxRQUFRLEVBQUVBLFFBRHlCO0lBRW5DQyxZQUFZLEVBQUVBLFlBRnFCO0lBR25DMkcsT0FBTyxFQUFFQSxPQUgwQjtJQUluQzRFLFdBQVcsRUFBRUE7RUFKc0IsQ0FBUixDQUE3QjtFQU1BLElBQUl4RSxhQUFhLEdBQUczUSxzRUFBZ0IsQ0FBQ2dDLEtBQUssQ0FBQ3hCLFNBQVAsQ0FBcEM7RUFDQSxJQUFJK1IsU0FBUyxHQUFHUixrRUFBWSxDQUFDL1AsS0FBSyxDQUFDeEIsU0FBUCxDQUE1QjtFQUNBLElBQUlnVixlQUFlLEdBQUcsQ0FBQ2pELFNBQXZCO0VBQ0EsSUFBSXFDLFFBQVEsR0FBRzFFLDhFQUF3QixDQUFDUyxhQUFELENBQXZDO0VBQ0EsSUFBSW9FLE9BQU8sR0FBR3FELGdFQUFVLENBQUN4RCxRQUFELENBQXhCO0VBQ0EsSUFBSWxFLGFBQWEsR0FBRzFPLEtBQUssQ0FBQ0ksYUFBTixDQUFvQnNPLGFBQXhDO0VBQ0EsSUFBSStFLGFBQWEsR0FBR3pULEtBQUssQ0FBQzJDLEtBQU4sQ0FBWTlDLFNBQWhDO0VBQ0EsSUFBSXlRLFVBQVUsR0FBR3RRLEtBQUssQ0FBQzJDLEtBQU4sQ0FBWTdDLE1BQTdCO0VBQ0EsSUFBSStXLGlCQUFpQixHQUFHLE9BQU9ELFlBQVAsS0FBd0IsVUFBeEIsR0FBcUNBLFlBQVksQ0FBQzFXLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjLEVBQWQsRUFBa0JILEtBQUssQ0FBQzJDLEtBQXhCLEVBQStCO0lBQ3ZHbkUsU0FBUyxFQUFFd0IsS0FBSyxDQUFDeEI7RUFEc0YsQ0FBL0IsQ0FBRCxDQUFqRCxHQUVsQm9ZLFlBRk47RUFHQSxJQUFJRSwyQkFBMkIsR0FBRyxPQUFPRCxpQkFBUCxLQUE2QixRQUE3QixHQUF3QztJQUN4RWpFLFFBQVEsRUFBRWlFLGlCQUQ4RDtJQUV4RTlELE9BQU8sRUFBRThEO0VBRitELENBQXhDLEdBRzlCM1csTUFBTSxDQUFDQyxNQUFQLENBQWM7SUFDaEJ5UyxRQUFRLEVBQUUsQ0FETTtJQUVoQkcsT0FBTyxFQUFFO0VBRk8sQ0FBZCxFQUdEOEQsaUJBSEMsQ0FISjtFQU9BLElBQUlFLG1CQUFtQixHQUFHL1csS0FBSyxDQUFDSSxhQUFOLENBQW9CcVAsTUFBcEIsR0FBNkJ6UCxLQUFLLENBQUNJLGFBQU4sQ0FBb0JxUCxNQUFwQixDQUEyQnpQLEtBQUssQ0FBQ3hCLFNBQWpDLENBQTdCLEdBQTJFLElBQXJHO0VBQ0EsSUFBSXVFLElBQUksR0FBRztJQUNUNEMsQ0FBQyxFQUFFLENBRE07SUFFVEcsQ0FBQyxFQUFFO0VBRk0sQ0FBWDs7RUFLQSxJQUFJLENBQUM0SSxhQUFMLEVBQW9CO0lBQ2xCO0VBQ0Q7O0VBRUQsSUFBSW1FLGFBQUosRUFBbUI7SUFDakIsSUFBSW1FLHFCQUFKOztJQUVBLElBQUlDLFFBQVEsR0FBR3JFLFFBQVEsS0FBSyxHQUFiLEdBQW1CN00sMENBQW5CLEdBQXlCSCwyQ0FBeEM7SUFDQSxJQUFJc1IsT0FBTyxHQUFHdEUsUUFBUSxLQUFLLEdBQWIsR0FBbUIxTSw2Q0FBbkIsR0FBNEJELDRDQUExQztJQUNBLElBQUk2SSxHQUFHLEdBQUc4RCxRQUFRLEtBQUssR0FBYixHQUFtQixRQUFuQixHQUE4QixPQUF4QztJQUNBLElBQUluRCxNQUFNLEdBQUdmLGFBQWEsQ0FBQ2tFLFFBQUQsQ0FBMUI7SUFDQSxJQUFJak0sR0FBRyxHQUFHOEksTUFBTSxHQUFHL0QsUUFBUSxDQUFDdUwsUUFBRCxDQUEzQjtJQUNBLElBQUl2USxHQUFHLEdBQUcrSSxNQUFNLEdBQUcvRCxRQUFRLENBQUN3TCxPQUFELENBQTNCO0lBQ0EsSUFBSUMsUUFBUSxHQUFHVCxNQUFNLEdBQUcsQ0FBQ3BHLFVBQVUsQ0FBQ3hCLEdBQUQsQ0FBWCxHQUFtQixDQUF0QixHQUEwQixDQUEvQztJQUNBLElBQUlzSSxNQUFNLEdBQUc3RyxTQUFTLEtBQUtwRSw0Q0FBZCxHQUFzQnNILGFBQWEsQ0FBQzNFLEdBQUQsQ0FBbkMsR0FBMkN3QixVQUFVLENBQUN4QixHQUFELENBQWxFO0lBQ0EsSUFBSXVJLE1BQU0sR0FBRzlHLFNBQVMsS0FBS3BFLDRDQUFkLEdBQXNCLENBQUNtRSxVQUFVLENBQUN4QixHQUFELENBQWpDLEdBQXlDLENBQUMyRSxhQUFhLENBQUMzRSxHQUFELENBQXBFLENBWGlCLENBVzBEO0lBQzNFOztJQUVBLElBQUlMLFlBQVksR0FBR3pPLEtBQUssQ0FBQ0ssUUFBTixDQUFlc04sS0FBbEM7SUFDQSxJQUFJcUIsU0FBUyxHQUFHMEgsTUFBTSxJQUFJakksWUFBVixHQUF5QmpSLHVFQUFhLENBQUNpUixZQUFELENBQXRDLEdBQXVEO01BQ3JFcEosS0FBSyxFQUFFLENBRDhEO01BRXJFRSxNQUFNLEVBQUU7SUFGNkQsQ0FBdkU7SUFJQSxJQUFJK1Isa0JBQWtCLEdBQUd0WCxLQUFLLENBQUNJLGFBQU4sQ0FBb0Isa0JBQXBCLElBQTBDSixLQUFLLENBQUNJLGFBQU4sQ0FBb0Isa0JBQXBCLEVBQXdDbU8sT0FBbEYsR0FBNEYrSCx3RUFBa0IsRUFBdkk7SUFDQSxJQUFJaUIsZUFBZSxHQUFHRCxrQkFBa0IsQ0FBQ0wsUUFBRCxDQUF4QztJQUNBLElBQUlPLGVBQWUsR0FBR0Ysa0JBQWtCLENBQUNKLE9BQUQsQ0FBeEMsQ0FyQmlCLENBcUJrQztJQUNuRDtJQUNBO0lBQ0E7SUFDQTs7SUFFQSxJQUFJTyxRQUFRLEdBQUd0Six3REFBTSxDQUFDLENBQUQsRUFBSXNGLGFBQWEsQ0FBQzNFLEdBQUQsQ0FBakIsRUFBd0JFLFNBQVMsQ0FBQ0YsR0FBRCxDQUFqQyxDQUFyQjtJQUNBLElBQUk0SSxTQUFTLEdBQUdsRSxlQUFlLEdBQUdDLGFBQWEsQ0FBQzNFLEdBQUQsQ0FBYixHQUFxQixDQUFyQixHQUF5QnFJLFFBQXpCLEdBQW9DTSxRQUFwQyxHQUErQ0YsZUFBL0MsR0FBaUVULDJCQUEyQixDQUFDbEUsUUFBaEcsR0FBMkd3RSxNQUFNLEdBQUdLLFFBQVQsR0FBb0JGLGVBQXBCLEdBQXNDVCwyQkFBMkIsQ0FBQ2xFLFFBQTVNO0lBQ0EsSUFBSStFLFNBQVMsR0FBR25FLGVBQWUsR0FBRyxDQUFDQyxhQUFhLENBQUMzRSxHQUFELENBQWQsR0FBc0IsQ0FBdEIsR0FBMEJxSSxRQUExQixHQUFxQ00sUUFBckMsR0FBZ0RELGVBQWhELEdBQWtFViwyQkFBMkIsQ0FBQ2xFLFFBQWpHLEdBQTRHeUUsTUFBTSxHQUFHSSxRQUFULEdBQW9CRCxlQUFwQixHQUFzQ1YsMkJBQTJCLENBQUNsRSxRQUE3TTtJQUNBLElBQUl2RCxpQkFBaUIsR0FBR3JQLEtBQUssQ0FBQ0ssUUFBTixDQUFlc04sS0FBZixJQUF3QmpRLHlFQUFlLENBQUNzQyxLQUFLLENBQUNLLFFBQU4sQ0FBZXNOLEtBQWhCLENBQS9EO0lBQ0EsSUFBSWlLLFlBQVksR0FBR3ZJLGlCQUFpQixHQUFHdUQsUUFBUSxLQUFLLEdBQWIsR0FBbUJ2RCxpQkFBaUIsQ0FBQ3ZJLFNBQWxCLElBQStCLENBQWxELEdBQXNEdUksaUJBQWlCLENBQUN0SSxVQUFsQixJQUFnQyxDQUF6RixHQUE2RixDQUFqSTtJQUNBLElBQUk4USxtQkFBbUIsR0FBRyxDQUFDYixxQkFBcUIsR0FBR0QsbUJBQW1CLElBQUksSUFBdkIsR0FBOEIsS0FBSyxDQUFuQyxHQUF1Q0EsbUJBQW1CLENBQUNuRSxRQUFELENBQW5GLEtBQWtHLElBQWxHLEdBQXlHb0UscUJBQXpHLEdBQWlJLENBQTNKO0lBQ0EsSUFBSWMsU0FBUyxHQUFHckksTUFBTSxHQUFHaUksU0FBVCxHQUFxQkcsbUJBQXJCLEdBQTJDRCxZQUEzRDtJQUNBLElBQUlHLFNBQVMsR0FBR3RJLE1BQU0sR0FBR2tJLFNBQVQsR0FBcUJFLG1CQUFyQztJQUNBLElBQUlHLGVBQWUsR0FBRzdKLHdEQUFNLENBQUN1SSxNQUFNLEdBQUdILG9EQUFPLENBQUM1UCxHQUFELEVBQU1tUixTQUFOLENBQVYsR0FBNkJuUixHQUFwQyxFQUF5QzhJLE1BQXpDLEVBQWlEaUgsTUFBTSxHQUFHRixvREFBTyxDQUFDOVAsR0FBRCxFQUFNcVIsU0FBTixDQUFWLEdBQTZCclIsR0FBcEYsQ0FBNUI7SUFDQWdJLGFBQWEsQ0FBQ2tFLFFBQUQsQ0FBYixHQUEwQm9GLGVBQTFCO0lBQ0FqVixJQUFJLENBQUM2UCxRQUFELENBQUosR0FBaUJvRixlQUFlLEdBQUd2SSxNQUFuQztFQUNEOztFQUVELElBQUl1RCxZQUFKLEVBQWtCO0lBQ2hCLElBQUlpRixzQkFBSjs7SUFFQSxJQUFJQyxTQUFTLEdBQUd0RixRQUFRLEtBQUssR0FBYixHQUFtQjdNLDBDQUFuQixHQUF5QkgsMkNBQXpDOztJQUVBLElBQUl1UyxRQUFRLEdBQUd2RixRQUFRLEtBQUssR0FBYixHQUFtQjFNLDZDQUFuQixHQUE0QkQsNENBQTNDOztJQUVBLElBQUltUyxPQUFPLEdBQUcxSixhQUFhLENBQUNxRSxPQUFELENBQTNCOztJQUVBLElBQUluVSxJQUFJLEdBQUdtVSxPQUFPLEtBQUssR0FBWixHQUFrQixRQUFsQixHQUE2QixPQUF4Qzs7SUFFQSxJQUFJc0YsSUFBSSxHQUFHRCxPQUFPLEdBQUcxTSxRQUFRLENBQUN3TSxTQUFELENBQTdCOztJQUVBLElBQUlJLElBQUksR0FBR0YsT0FBTyxHQUFHMU0sUUFBUSxDQUFDeU0sUUFBRCxDQUE3Qjs7SUFFQSxJQUFJSSxZQUFZLEdBQUcsQ0FBQ3hTLDBDQUFELEVBQU1ILDJDQUFOLEVBQVkyQixPQUFaLENBQW9Cb0gsYUFBcEIsTUFBdUMsQ0FBQyxDQUEzRDs7SUFFQSxJQUFJNkosb0JBQW9CLEdBQUcsQ0FBQ1Asc0JBQXNCLEdBQUdsQixtQkFBbUIsSUFBSSxJQUF2QixHQUE4QixLQUFLLENBQW5DLEdBQXVDQSxtQkFBbUIsQ0FBQ2hFLE9BQUQsQ0FBcEYsS0FBa0csSUFBbEcsR0FBeUdrRixzQkFBekcsR0FBa0ksQ0FBN0o7O0lBRUEsSUFBSVEsVUFBVSxHQUFHRixZQUFZLEdBQUdGLElBQUgsR0FBVUQsT0FBTyxHQUFHM0UsYUFBYSxDQUFDN1UsSUFBRCxDQUF2QixHQUFnQzBSLFVBQVUsQ0FBQzFSLElBQUQsQ0FBMUMsR0FBbUQ0WixvQkFBbkQsR0FBMEUxQiwyQkFBMkIsQ0FBQy9ELE9BQTdJOztJQUVBLElBQUkyRixVQUFVLEdBQUdILFlBQVksR0FBR0gsT0FBTyxHQUFHM0UsYUFBYSxDQUFDN1UsSUFBRCxDQUF2QixHQUFnQzBSLFVBQVUsQ0FBQzFSLElBQUQsQ0FBMUMsR0FBbUQ0WixvQkFBbkQsR0FBMEUxQiwyQkFBMkIsQ0FBQy9ELE9BQXpHLEdBQW1IdUYsSUFBaEo7O0lBRUEsSUFBSUssZ0JBQWdCLEdBQUdqQyxNQUFNLElBQUk2QixZQUFWLEdBQXlCbEMsZ0VBQWMsQ0FBQ29DLFVBQUQsRUFBYUwsT0FBYixFQUFzQk0sVUFBdEIsQ0FBdkMsR0FBMkV2Syx3REFBTSxDQUFDdUksTUFBTSxHQUFHK0IsVUFBSCxHQUFnQkosSUFBdkIsRUFBNkJELE9BQTdCLEVBQXNDMUIsTUFBTSxHQUFHZ0MsVUFBSCxHQUFnQkosSUFBNUQsQ0FBeEc7O0lBRUE1SixhQUFhLENBQUNxRSxPQUFELENBQWIsR0FBeUI0RixnQkFBekI7SUFDQTVWLElBQUksQ0FBQ2dRLE9BQUQsQ0FBSixHQUFnQjRGLGdCQUFnQixHQUFHUCxPQUFuQztFQUNEOztFQUVEcFksS0FBSyxDQUFDSSxhQUFOLENBQW9Cb0IsSUFBcEIsSUFBNEJ1QixJQUE1QjtBQUNELEVBQUM7OztBQUdGLGlFQUFlO0VBQ2J2QixJQUFJLEVBQUUsaUJBRE87RUFFYkwsT0FBTyxFQUFFLElBRkk7RUFHYjZNLEtBQUssRUFBRSxNQUhNO0VBSWI3SyxFQUFFLEVBQUVnUyxlQUpTO0VBS2JyRixnQkFBZ0IsRUFBRSxDQUFDLFFBQUQ7QUFMTCxDQUFmOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN2SUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUlyUSxnQkFBZ0IsR0FBRyxDQUFDbVcsb0VBQUQsRUFBaUJsSCxtRUFBakIsRUFBZ0M4QyxtRUFBaEMsRUFBK0NwRSxpRUFBL0MsQ0FBdkI7QUFDQSxJQUFJeE4sWUFBWSxHQUFHLGFBQWFQLGlFQUFlLENBQUM7RUFDOUNJLGdCQUFnQixFQUFFQTtBQUQ0QixDQUFELENBQS9DLEVBRUk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNSSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUlBLGdCQUFnQixHQUFHLENBQUNtVyxvRUFBRCxFQUFpQmxILG1FQUFqQixFQUFnQzhDLG1FQUFoQyxFQUErQ3BFLGlFQUEvQyxFQUE0RHFDLDREQUE1RCxFQUFvRWdELDBEQUFwRSxFQUEwRTBDLHFFQUExRSxFQUEyRnhILDJEQUEzRixFQUFrR3VILDBEQUFsRyxDQUF2QjtBQUNBLElBQUl0VixZQUFZLEdBQUcsYUFBYVAsaUVBQWUsQ0FBQztFQUM5Q0ksZ0JBQWdCLEVBQUVBO0FBRDRCLENBQUQsQ0FBL0MsRUFFSTs7Q0FFd0U7O0NBRVA7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ2pCckU7QUFDQTtBQUNBO0FBQ0E7QUFDZSxTQUFTNlMsb0JBQVQsQ0FBOEJ0UyxLQUE5QixFQUFxQ0QsT0FBckMsRUFBOEM7RUFDM0QsSUFBSUEsT0FBTyxLQUFLLEtBQUssQ0FBckIsRUFBd0I7SUFDdEJBLE9BQU8sR0FBRyxFQUFWO0VBQ0Q7O0VBRUQsSUFBSXNELFFBQVEsR0FBR3RELE9BQWY7RUFBQSxJQUNJdkIsU0FBUyxHQUFHNkUsUUFBUSxDQUFDN0UsU0FEekI7RUFBQSxJQUVJbUosUUFBUSxHQUFHdEUsUUFBUSxDQUFDc0UsUUFGeEI7RUFBQSxJQUdJQyxZQUFZLEdBQUd2RSxRQUFRLENBQUN1RSxZQUg1QjtFQUFBLElBSUkyRyxPQUFPLEdBQUdsTCxRQUFRLENBQUNrTCxPQUp2QjtFQUFBLElBS0k4RSxjQUFjLEdBQUdoUSxRQUFRLENBQUNnUSxjQUw5QjtFQUFBLElBTUl3RixxQkFBcUIsR0FBR3hWLFFBQVEsQ0FBQ2lRLHFCQU5yQztFQUFBLElBT0lBLHFCQUFxQixHQUFHdUYscUJBQXFCLEtBQUssS0FBSyxDQUEvQixHQUFtQ0QsaURBQW5DLEdBQW1EQyxxQkFQL0U7RUFRQSxJQUFJdEksU0FBUyxHQUFHUiw0REFBWSxDQUFDdlIsU0FBRCxDQUE1QjtFQUNBLElBQUkrTixVQUFVLEdBQUdnRSxTQUFTLEdBQUc4QyxjQUFjLEdBQUdoSCwwREFBSCxHQUF5QkEsaUVBQUEsQ0FBMkIsVUFBVTdOLFNBQVYsRUFBcUI7SUFDbEgsT0FBT3VSLDREQUFZLENBQUN2UixTQUFELENBQVosS0FBNEIrUixTQUFuQztFQUNELENBRm1FLENBQTFDLEdBRXJCckUscURBRkw7RUFHQSxJQUFJNE0saUJBQWlCLEdBQUd2TSxVQUFVLENBQUN0TCxNQUFYLENBQWtCLFVBQVV6QyxTQUFWLEVBQXFCO0lBQzdELE9BQU84VSxxQkFBcUIsQ0FBQy9MLE9BQXRCLENBQThCL0ksU0FBOUIsS0FBNEMsQ0FBbkQ7RUFDRCxDQUZ1QixDQUF4Qjs7RUFJQSxJQUFJc2EsaUJBQWlCLENBQUNoYSxNQUFsQixLQUE2QixDQUFqQyxFQUFvQztJQUNsQ2dhLGlCQUFpQixHQUFHdk0sVUFBcEI7O0lBRUEsSUFBSW5MLElBQUosRUFBMkM7TUFDekNRLE9BQU8sQ0FBQ0MsS0FBUixDQUFjLENBQUMsOERBQUQsRUFBaUUsaUVBQWpFLEVBQW9JLDRCQUFwSSxFQUFrSyw2REFBbEssRUFBaU8sMkJBQWpPLEVBQThQQyxJQUE5UCxDQUFtUSxHQUFuUSxDQUFkO0lBQ0Q7RUFDRixDQTNCMEQsQ0EyQnpEOzs7RUFHRixJQUFJaVgsU0FBUyxHQUFHRCxpQkFBaUIsQ0FBQzlRLE1BQWxCLENBQXlCLFVBQVVzRSxHQUFWLEVBQWU5TixTQUFmLEVBQTBCO0lBQ2pFOE4sR0FBRyxDQUFDOU4sU0FBRCxDQUFILEdBQWlCTiw4REFBYyxDQUFDOEIsS0FBRCxFQUFRO01BQ3JDeEIsU0FBUyxFQUFFQSxTQUQwQjtNQUVyQ21KLFFBQVEsRUFBRUEsUUFGMkI7TUFHckNDLFlBQVksRUFBRUEsWUFIdUI7TUFJckMyRyxPQUFPLEVBQUVBO0lBSjRCLENBQVIsQ0FBZCxDQUtkdlEsZ0VBQWdCLENBQUNRLFNBQUQsQ0FMRixDQUFqQjtJQU1BLE9BQU84TixHQUFQO0VBQ0QsQ0FSZSxFQVFiLEVBUmEsQ0FBaEI7RUFTQSxPQUFPcE0sTUFBTSxDQUFDbU4sSUFBUCxDQUFZMEwsU0FBWixFQUF1QkMsSUFBdkIsQ0FBNEIsVUFBVUMsQ0FBVixFQUFhQyxDQUFiLEVBQWdCO0lBQ2pELE9BQU9ILFNBQVMsQ0FBQ0UsQ0FBRCxDQUFULEdBQWVGLFNBQVMsQ0FBQ0csQ0FBRCxDQUEvQjtFQUNELENBRk0sQ0FBUDtBQUdEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDOUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ2UsU0FBUy9DLGNBQVQsQ0FBd0I1VSxJQUF4QixFQUE4QjtFQUMzQyxJQUFJMUIsU0FBUyxHQUFHMEIsSUFBSSxDQUFDMUIsU0FBckI7RUFBQSxJQUNJVixPQUFPLEdBQUdvQyxJQUFJLENBQUNwQyxPQURuQjtFQUFBLElBRUlYLFNBQVMsR0FBRytDLElBQUksQ0FBQy9DLFNBRnJCO0VBR0EsSUFBSW1RLGFBQWEsR0FBR25RLFNBQVMsR0FBR1IsZ0VBQWdCLENBQUNRLFNBQUQsQ0FBbkIsR0FBaUMsSUFBOUQ7RUFDQSxJQUFJK1IsU0FBUyxHQUFHL1IsU0FBUyxHQUFHdVIsNERBQVksQ0FBQ3ZSLFNBQUQsQ0FBZixHQUE2QixJQUF0RDtFQUNBLElBQUkyYSxPQUFPLEdBQUd0WixTQUFTLENBQUM4RixDQUFWLEdBQWM5RixTQUFTLENBQUN3RixLQUFWLEdBQWtCLENBQWhDLEdBQW9DbEcsT0FBTyxDQUFDa0csS0FBUixHQUFnQixDQUFsRTtFQUNBLElBQUkrVCxPQUFPLEdBQUd2WixTQUFTLENBQUNpRyxDQUFWLEdBQWNqRyxTQUFTLENBQUMwRixNQUFWLEdBQW1CLENBQWpDLEdBQXFDcEcsT0FBTyxDQUFDb0csTUFBUixHQUFpQixDQUFwRTtFQUNBLElBQUl3RCxPQUFKOztFQUVBLFFBQVE0RixhQUFSO0lBQ0UsS0FBSzVJLDBDQUFMO01BQ0VnRCxPQUFPLEdBQUc7UUFDUnBELENBQUMsRUFBRXdULE9BREs7UUFFUnJULENBQUMsRUFBRWpHLFNBQVMsQ0FBQ2lHLENBQVYsR0FBYzNHLE9BQU8sQ0FBQ29HO01BRmpCLENBQVY7TUFJQTs7SUFFRixLQUFLVyw2Q0FBTDtNQUNFNkMsT0FBTyxHQUFHO1FBQ1JwRCxDQUFDLEVBQUV3VCxPQURLO1FBRVJyVCxDQUFDLEVBQUVqRyxTQUFTLENBQUNpRyxDQUFWLEdBQWNqRyxTQUFTLENBQUMwRjtNQUZuQixDQUFWO01BSUE7O0lBRUYsS0FBS1UsNENBQUw7TUFDRThDLE9BQU8sR0FBRztRQUNScEQsQ0FBQyxFQUFFOUYsU0FBUyxDQUFDOEYsQ0FBVixHQUFjOUYsU0FBUyxDQUFDd0YsS0FEbkI7UUFFUlMsQ0FBQyxFQUFFc1Q7TUFGSyxDQUFWO01BSUE7O0lBRUYsS0FBS3hULDJDQUFMO01BQ0VtRCxPQUFPLEdBQUc7UUFDUnBELENBQUMsRUFBRTlGLFNBQVMsQ0FBQzhGLENBQVYsR0FBY3hHLE9BQU8sQ0FBQ2tHLEtBRGpCO1FBRVJTLENBQUMsRUFBRXNUO01BRkssQ0FBVjtNQUlBOztJQUVGO01BQ0VyUSxPQUFPLEdBQUc7UUFDUnBELENBQUMsRUFBRTlGLFNBQVMsQ0FBQzhGLENBREw7UUFFUkcsQ0FBQyxFQUFFakcsU0FBUyxDQUFDaUc7TUFGTCxDQUFWO0VBOUJKOztFQW9DQSxJQUFJOE0sUUFBUSxHQUFHakUsYUFBYSxHQUFHVCx3RUFBd0IsQ0FBQ1MsYUFBRCxDQUEzQixHQUE2QyxJQUF6RTs7RUFFQSxJQUFJaUUsUUFBUSxJQUFJLElBQWhCLEVBQXNCO0lBQ3BCLElBQUk5RCxHQUFHLEdBQUc4RCxRQUFRLEtBQUssR0FBYixHQUFtQixRQUFuQixHQUE4QixPQUF4Qzs7SUFFQSxRQUFRckMsU0FBUjtNQUNFLEtBQUtwRSw0Q0FBTDtRQUNFcEQsT0FBTyxDQUFDNkosUUFBRCxDQUFQLEdBQW9CN0osT0FBTyxDQUFDNkosUUFBRCxDQUFQLElBQXFCL1MsU0FBUyxDQUFDaVAsR0FBRCxDQUFULEdBQWlCLENBQWpCLEdBQXFCM1AsT0FBTyxDQUFDMlAsR0FBRCxDQUFQLEdBQWUsQ0FBekQsQ0FBcEI7UUFDQTs7TUFFRixLQUFLMUMsMENBQUw7UUFDRXJELE9BQU8sQ0FBQzZKLFFBQUQsQ0FBUCxHQUFvQjdKLE9BQU8sQ0FBQzZKLFFBQUQsQ0FBUCxJQUFxQi9TLFNBQVMsQ0FBQ2lQLEdBQUQsQ0FBVCxHQUFpQixDQUFqQixHQUFxQjNQLE9BQU8sQ0FBQzJQLEdBQUQsQ0FBUCxHQUFlLENBQXpELENBQXBCO1FBQ0E7O01BRUY7SUFURjtFQVdEOztFQUVELE9BQU8vRixPQUFQO0FBQ0Q7Ozs7Ozs7Ozs7Ozs7OztBQ3JFYyxTQUFTbEwsUUFBVCxDQUFrQnNGLEVBQWxCLEVBQXNCO0VBQ25DLElBQUlrVyxPQUFKO0VBQ0EsT0FBTyxZQUFZO0lBQ2pCLElBQUksQ0FBQ0EsT0FBTCxFQUFjO01BQ1pBLE9BQU8sR0FBRyxJQUFJL1YsT0FBSixDQUFZLFVBQVVDLE9BQVYsRUFBbUI7UUFDdkNELE9BQU8sQ0FBQ0MsT0FBUixHQUFrQkUsSUFBbEIsQ0FBdUIsWUFBWTtVQUNqQzRWLE9BQU8sR0FBR0MsU0FBVjtVQUNBL1YsT0FBTyxDQUFDSixFQUFFLEVBQUgsQ0FBUDtRQUNELENBSEQ7TUFJRCxDQUxTLENBQVY7SUFNRDs7SUFFRCxPQUFPa1csT0FBUDtFQUNELENBWEQ7QUFZRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDZEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtDQUNvRDs7QUFFckMsU0FBU25iLGNBQVQsQ0FBd0I4QixLQUF4QixFQUErQkQsT0FBL0IsRUFBd0M7RUFDckQsSUFBSUEsT0FBTyxLQUFLLEtBQUssQ0FBckIsRUFBd0I7SUFDdEJBLE9BQU8sR0FBRyxFQUFWO0VBQ0Q7O0VBRUQsSUFBSXNELFFBQVEsR0FBR3RELE9BQWY7RUFBQSxJQUNJd1osa0JBQWtCLEdBQUdsVyxRQUFRLENBQUM3RSxTQURsQztFQUFBLElBRUlBLFNBQVMsR0FBRythLGtCQUFrQixLQUFLLEtBQUssQ0FBNUIsR0FBZ0N2WixLQUFLLENBQUN4QixTQUF0QyxHQUFrRCthLGtCQUZsRTtFQUFBLElBR0lDLGlCQUFpQixHQUFHblcsUUFBUSxDQUFDM0UsUUFIakM7RUFBQSxJQUlJQSxRQUFRLEdBQUc4YSxpQkFBaUIsS0FBSyxLQUFLLENBQTNCLEdBQStCeFosS0FBSyxDQUFDdEIsUUFBckMsR0FBZ0Q4YSxpQkFKL0Q7RUFBQSxJQUtJQyxpQkFBaUIsR0FBR3BXLFFBQVEsQ0FBQ3NFLFFBTGpDO0VBQUEsSUFNSUEsUUFBUSxHQUFHOFIsaUJBQWlCLEtBQUssS0FBSyxDQUEzQixHQUErQnBTLHNEQUEvQixHQUFpRG9TLGlCQU5oRTtFQUFBLElBT0lDLHFCQUFxQixHQUFHclcsUUFBUSxDQUFDdUUsWUFQckM7RUFBQSxJQVFJQSxZQUFZLEdBQUc4UixxQkFBcUIsS0FBSyxLQUFLLENBQS9CLEdBQW1DdlQsK0NBQW5DLEdBQThDdVQscUJBUmpFO0VBQUEsSUFTSUMscUJBQXFCLEdBQUd0VyxRQUFRLENBQUNnUyxjQVRyQztFQUFBLElBVUlBLGNBQWMsR0FBR3NFLHFCQUFxQixLQUFLLEtBQUssQ0FBL0IsR0FBbUM3Wiw2Q0FBbkMsR0FBNEM2WixxQkFWakU7RUFBQSxJQVdJQyxvQkFBb0IsR0FBR3ZXLFFBQVEsQ0FBQzhQLFdBWHBDO0VBQUEsSUFZSUEsV0FBVyxHQUFHeUcsb0JBQW9CLEtBQUssS0FBSyxDQUE5QixHQUFrQyxLQUFsQyxHQUEwQ0Esb0JBWjVEO0VBQUEsSUFhSUMsZ0JBQWdCLEdBQUd4VyxRQUFRLENBQUNrTCxPQWJoQztFQUFBLElBY0lBLE9BQU8sR0FBR3NMLGdCQUFnQixLQUFLLEtBQUssQ0FBMUIsR0FBOEIsQ0FBOUIsR0FBa0NBLGdCQWRoRDtFQWVBLElBQUk5SyxhQUFhLEdBQUdYLGtFQUFrQixDQUFDLE9BQU9HLE9BQVAsS0FBbUIsUUFBbkIsR0FBOEJBLE9BQTlCLEdBQXdDRiwrREFBZSxDQUFDRSxPQUFELEVBQVVyQyxxREFBVixDQUF4RCxDQUF0QztFQUNBLElBQUk0TixVQUFVLEdBQUd6RSxjQUFjLEtBQUt2Viw2Q0FBbkIsR0FBNEJELGdEQUE1QixHQUF3Q0MsNkNBQXpEO0VBQ0EsSUFBSXdRLFVBQVUsR0FBR3RRLEtBQUssQ0FBQzJDLEtBQU4sQ0FBWTdDLE1BQTdCO0VBQ0EsSUFBSVgsT0FBTyxHQUFHYSxLQUFLLENBQUNLLFFBQU4sQ0FBZThTLFdBQVcsR0FBRzJHLFVBQUgsR0FBZ0J6RSxjQUExQyxDQUFkO0VBQ0EsSUFBSTBFLGtCQUFrQixHQUFHclMseUVBQWUsQ0FBQ3ZKLG1FQUFTLENBQUNnQixPQUFELENBQVQsR0FBcUJBLE9BQXJCLEdBQStCQSxPQUFPLENBQUM0QixjQUFSLElBQTBCdUYsNEVBQWtCLENBQUN0RyxLQUFLLENBQUNLLFFBQU4sQ0FBZVAsTUFBaEIsQ0FBNUUsRUFBcUc2SCxRQUFyRyxFQUErR0MsWUFBL0csRUFBNkhsSixRQUE3SCxDQUF4QztFQUNBLElBQUlzYixtQkFBbUIsR0FBRzVhLCtFQUFxQixDQUFDWSxLQUFLLENBQUNLLFFBQU4sQ0FBZVIsU0FBaEIsQ0FBL0M7RUFDQSxJQUFJNk8sYUFBYSxHQUFHeUgsOERBQWMsQ0FBQztJQUNqQ3RXLFNBQVMsRUFBRW1hLG1CQURzQjtJQUVqQzdhLE9BQU8sRUFBRW1SLFVBRndCO0lBR2pDNVIsUUFBUSxFQUFFLFVBSHVCO0lBSWpDRixTQUFTLEVBQUVBO0VBSnNCLENBQUQsQ0FBbEM7RUFNQSxJQUFJeWIsZ0JBQWdCLEdBQUd4VCxnRUFBZ0IsQ0FBQ3ZHLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjLEVBQWQsRUFBa0JtUSxVQUFsQixFQUE4QjVCLGFBQTlCLENBQUQsQ0FBdkM7RUFDQSxJQUFJd0wsaUJBQWlCLEdBQUc3RSxjQUFjLEtBQUt2Viw2Q0FBbkIsR0FBNEJtYSxnQkFBNUIsR0FBK0NELG1CQUF2RSxDQWpDcUQsQ0FpQ3VDO0VBQzVGOztFQUVBLElBQUlHLGVBQWUsR0FBRztJQUNwQnBVLEdBQUcsRUFBRWdVLGtCQUFrQixDQUFDaFUsR0FBbkIsR0FBeUJtVSxpQkFBaUIsQ0FBQ25VLEdBQTNDLEdBQWlEZ0osYUFBYSxDQUFDaEosR0FEaEQ7SUFFcEJHLE1BQU0sRUFBRWdVLGlCQUFpQixDQUFDaFUsTUFBbEIsR0FBMkI2VCxrQkFBa0IsQ0FBQzdULE1BQTlDLEdBQXVENkksYUFBYSxDQUFDN0ksTUFGekQ7SUFHcEJOLElBQUksRUFBRW1VLGtCQUFrQixDQUFDblUsSUFBbkIsR0FBMEJzVSxpQkFBaUIsQ0FBQ3RVLElBQTVDLEdBQW1EbUosYUFBYSxDQUFDbkosSUFIbkQ7SUFJcEJLLEtBQUssRUFBRWlVLGlCQUFpQixDQUFDalUsS0FBbEIsR0FBMEI4VCxrQkFBa0IsQ0FBQzlULEtBQTdDLEdBQXFEOEksYUFBYSxDQUFDOUk7RUFKdEQsQ0FBdEI7RUFNQSxJQUFJbVUsVUFBVSxHQUFHcGEsS0FBSyxDQUFDSSxhQUFOLENBQW9CcVAsTUFBckMsQ0ExQ3FELENBMENSOztFQUU3QyxJQUFJNEYsY0FBYyxLQUFLdlYsNkNBQW5CLElBQTZCc2EsVUFBakMsRUFBNkM7SUFDM0MsSUFBSTNLLE1BQU0sR0FBRzJLLFVBQVUsQ0FBQzViLFNBQUQsQ0FBdkI7SUFDQTBCLE1BQU0sQ0FBQ21OLElBQVAsQ0FBWThNLGVBQVosRUFBNkJ0WCxPQUE3QixDQUFxQyxVQUFVd1gsR0FBVixFQUFlO01BQ2xELElBQUlDLFFBQVEsR0FBRyxDQUFDclUsNENBQUQsRUFBUUMsNkNBQVIsRUFBZ0JxQixPQUFoQixDQUF3QjhTLEdBQXhCLEtBQWdDLENBQWhDLEdBQW9DLENBQXBDLEdBQXdDLENBQUMsQ0FBeEQ7TUFDQSxJQUFJekwsSUFBSSxHQUFHLENBQUM3SSwwQ0FBRCxFQUFNRyw2Q0FBTixFQUFjcUIsT0FBZCxDQUFzQjhTLEdBQXRCLEtBQThCLENBQTlCLEdBQWtDLEdBQWxDLEdBQXdDLEdBQW5EO01BQ0FGLGVBQWUsQ0FBQ0UsR0FBRCxDQUFmLElBQXdCNUssTUFBTSxDQUFDYixJQUFELENBQU4sR0FBZTBMLFFBQXZDO0lBQ0QsQ0FKRDtFQUtEOztFQUVELE9BQU9ILGVBQVA7QUFDRDs7Ozs7Ozs7Ozs7Ozs7O0FDaEVjLFNBQVM5TCxlQUFULENBQXlCZCxLQUF6QixFQUFnQ0YsSUFBaEMsRUFBc0M7RUFDbkQsT0FBT0EsSUFBSSxDQUFDckYsTUFBTCxDQUFZLFVBQVV1UyxPQUFWLEVBQW1CRixHQUFuQixFQUF3QjtJQUN6Q0UsT0FBTyxDQUFDRixHQUFELENBQVAsR0FBZTlNLEtBQWY7SUFDQSxPQUFPZ04sT0FBUDtFQUNELENBSE0sRUFHSixFQUhJLENBQVA7QUFJRDs7Ozs7Ozs7Ozs7Ozs7O0FDTGMsU0FBU0MsTUFBVCxDQUFnQkMsR0FBaEIsRUFBcUI7RUFDbEMsS0FBSyxJQUFJN2IsSUFBSSxHQUFHQyxTQUFTLENBQUNDLE1BQXJCLEVBQTZCQyxJQUFJLEdBQUcsSUFBSUMsS0FBSixDQUFVSixJQUFJLEdBQUcsQ0FBUCxHQUFXQSxJQUFJLEdBQUcsQ0FBbEIsR0FBc0IsQ0FBaEMsQ0FBcEMsRUFBd0VLLElBQUksR0FBRyxDQUFwRixFQUF1RkEsSUFBSSxHQUFHTCxJQUE5RixFQUFvR0ssSUFBSSxFQUF4RyxFQUE0RztJQUMxR0YsSUFBSSxDQUFDRSxJQUFJLEdBQUcsQ0FBUixDQUFKLEdBQWlCSixTQUFTLENBQUNJLElBQUQsQ0FBMUI7RUFDRDs7RUFFRCxPQUFPLEdBQUcrQixNQUFILENBQVVqQyxJQUFWLEVBQWdCaUosTUFBaEIsQ0FBdUIsVUFBVTBTLENBQVYsRUFBYUMsQ0FBYixFQUFnQjtJQUM1QyxPQUFPRCxDQUFDLENBQUNFLE9BQUYsQ0FBVSxJQUFWLEVBQWdCRCxDQUFoQixDQUFQO0VBQ0QsQ0FGTSxFQUVKRixHQUZJLENBQVA7QUFHRDs7Ozs7Ozs7Ozs7Ozs7O0FDUmMsU0FBU3JFLFVBQVQsQ0FBb0J4SCxJQUFwQixFQUEwQjtFQUN2QyxPQUFPQSxJQUFJLEtBQUssR0FBVCxHQUFlLEdBQWYsR0FBcUIsR0FBNUI7QUFDRDs7Ozs7Ozs7Ozs7Ozs7O0FDRkQ7QUFDZSxTQUFTNVEsZ0JBQVQsQ0FBMEJRLFNBQTFCLEVBQXFDO0VBQ2xELE9BQU9BLFNBQVMsQ0FBQ3FjLEtBQVYsQ0FBZ0IsR0FBaEIsRUFBcUIsQ0FBckIsQ0FBUDtBQUNEOzs7Ozs7Ozs7Ozs7Ozs7QUNIYyxTQUFTdkUsa0JBQVQsR0FBOEI7RUFDM0MsT0FBTztJQUNMdlEsR0FBRyxFQUFFLENBREE7SUFFTEUsS0FBSyxFQUFFLENBRkY7SUFHTEMsTUFBTSxFQUFFLENBSEg7SUFJTE4sSUFBSSxFQUFFO0VBSkQsQ0FBUDtBQU1EOzs7Ozs7Ozs7Ozs7Ozs7QUNQYyxTQUFTc0ksd0JBQVQsQ0FBa0MxUCxTQUFsQyxFQUE2QztFQUMxRCxPQUFPLENBQUMsS0FBRCxFQUFRLFFBQVIsRUFBa0IrSSxPQUFsQixDQUEwQi9JLFNBQTFCLEtBQXdDLENBQXhDLEdBQTRDLEdBQTVDLEdBQWtELEdBQXpEO0FBQ0Q7Ozs7Ozs7Ozs7Ozs7OztBQ0ZELElBQUlzYyxJQUFJLEdBQUc7RUFDVGxWLElBQUksRUFBRSxPQURHO0VBRVRLLEtBQUssRUFBRSxNQUZFO0VBR1RDLE1BQU0sRUFBRSxLQUhDO0VBSVRILEdBQUcsRUFBRTtBQUpJLENBQVg7QUFNZSxTQUFTcU0sb0JBQVQsQ0FBOEI1VCxTQUE5QixFQUF5QztFQUN0RCxPQUFPQSxTQUFTLENBQUNvYyxPQUFWLENBQWtCLHdCQUFsQixFQUE0QyxVQUFVRyxPQUFWLEVBQW1CO0lBQ3BFLE9BQU9ELElBQUksQ0FBQ0MsT0FBRCxDQUFYO0VBQ0QsQ0FGTSxDQUFQO0FBR0Q7Ozs7Ozs7Ozs7Ozs7OztBQ1ZELElBQUlELElBQUksR0FBRztFQUNUM08sS0FBSyxFQUFFLEtBREU7RUFFVEMsR0FBRyxFQUFFO0FBRkksQ0FBWDtBQUllLFNBQVNpRyw2QkFBVCxDQUF1QzdULFNBQXZDLEVBQWtEO0VBQy9ELE9BQU9BLFNBQVMsQ0FBQ29jLE9BQVYsQ0FBa0IsWUFBbEIsRUFBZ0MsVUFBVUcsT0FBVixFQUFtQjtJQUN4RCxPQUFPRCxJQUFJLENBQUNDLE9BQUQsQ0FBWDtFQUNELENBRk0sQ0FBUDtBQUdEOzs7Ozs7Ozs7Ozs7Ozs7QUNSYyxTQUFTaEwsWUFBVCxDQUFzQnZSLFNBQXRCLEVBQWlDO0VBQzlDLE9BQU9BLFNBQVMsQ0FBQ3FjLEtBQVYsQ0FBZ0IsR0FBaEIsRUFBcUIsQ0FBckIsQ0FBUDtBQUNEOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0ZNLElBQUluVSxHQUFHLEdBQUdpRCxJQUFJLENBQUNqRCxHQUFmO0FBQ0EsSUFBSUMsR0FBRyxHQUFHZ0QsSUFBSSxDQUFDaEQsR0FBZjtBQUNBLElBQUkvQixLQUFLLEdBQUcrRSxJQUFJLENBQUMvRSxLQUFqQjs7Ozs7Ozs7Ozs7Ozs7O0FDRlEsU0FBUzNHLFdBQVQsQ0FBcUJRLFNBQXJCLEVBQWdDO0VBQzdDLElBQUl1YyxNQUFNLEdBQUd2YyxTQUFTLENBQUN1SixNQUFWLENBQWlCLFVBQVVnVCxNQUFWLEVBQWtCQyxPQUFsQixFQUEyQjtJQUN2RCxJQUFJQyxRQUFRLEdBQUdGLE1BQU0sQ0FBQ0MsT0FBTyxDQUFDelosSUFBVCxDQUFyQjtJQUNBd1osTUFBTSxDQUFDQyxPQUFPLENBQUN6WixJQUFULENBQU4sR0FBdUIwWixRQUFRLEdBQUdoYixNQUFNLENBQUNDLE1BQVAsQ0FBYyxFQUFkLEVBQWtCK2EsUUFBbEIsRUFBNEJELE9BQTVCLEVBQXFDO01BQ3JFbGIsT0FBTyxFQUFFRyxNQUFNLENBQUNDLE1BQVAsQ0FBYyxFQUFkLEVBQWtCK2EsUUFBUSxDQUFDbmIsT0FBM0IsRUFBb0NrYixPQUFPLENBQUNsYixPQUE1QyxDQUQ0RDtNQUVyRWdELElBQUksRUFBRTdDLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjLEVBQWQsRUFBa0IrYSxRQUFRLENBQUNuWSxJQUEzQixFQUFpQ2tZLE9BQU8sQ0FBQ2xZLElBQXpDO0lBRitELENBQXJDLENBQUgsR0FHMUJrWSxPQUhMO0lBSUEsT0FBT0QsTUFBUDtFQUNELENBUFksRUFPVixFQVBVLENBQWIsQ0FENkMsQ0FRckM7O0VBRVIsT0FBTzlhLE1BQU0sQ0FBQ21OLElBQVAsQ0FBWTJOLE1BQVosRUFBb0JHLEdBQXBCLENBQXdCLFVBQVVkLEdBQVYsRUFBZTtJQUM1QyxPQUFPVyxNQUFNLENBQUNYLEdBQUQsQ0FBYjtFQUNELENBRk0sQ0FBUDtBQUdEOzs7Ozs7Ozs7Ozs7Ozs7O0FDYkQ7QUFDZSxTQUFTak0sa0JBQVQsQ0FBNEJXLGFBQTVCLEVBQTJDO0VBQ3hELE9BQU83TyxNQUFNLENBQUNDLE1BQVAsQ0FBYyxFQUFkLEVBQWtCbVcsa0VBQWtCLEVBQXBDLEVBQXdDdkgsYUFBeEMsQ0FBUDtBQUNEOzs7Ozs7Ozs7Ozs7Ozs7O0NDSDZDOztBQUU5QyxTQUFTcU0sS0FBVCxDQUFlM2MsU0FBZixFQUEwQjtFQUN4QixJQUFJMGMsR0FBRyxHQUFHLElBQUl4SCxHQUFKLEVBQVY7RUFDQSxJQUFJMEgsT0FBTyxHQUFHLElBQUlDLEdBQUosRUFBZDtFQUNBLElBQUlDLE1BQU0sR0FBRyxFQUFiO0VBQ0E5YyxTQUFTLENBQUNvRSxPQUFWLENBQWtCLFVBQVVDLFFBQVYsRUFBb0I7SUFDcENxWSxHQUFHLENBQUM3RyxHQUFKLENBQVF4UixRQUFRLENBQUN0QixJQUFqQixFQUF1QnNCLFFBQXZCO0VBQ0QsQ0FGRCxFQUp3QixDQU1wQjs7RUFFSixTQUFTa1csSUFBVCxDQUFjbFcsUUFBZCxFQUF3QjtJQUN0QnVZLE9BQU8sQ0FBQ0csR0FBUixDQUFZMVksUUFBUSxDQUFDdEIsSUFBckI7SUFDQSxJQUFJeU0sUUFBUSxHQUFHLEdBQUdqTixNQUFILENBQVU4QixRQUFRLENBQUNtTCxRQUFULElBQXFCLEVBQS9CLEVBQW1DbkwsUUFBUSxDQUFDZ04sZ0JBQVQsSUFBNkIsRUFBaEUsQ0FBZjtJQUNBN0IsUUFBUSxDQUFDcEwsT0FBVCxDQUFpQixVQUFVNFksR0FBVixFQUFlO01BQzlCLElBQUksQ0FBQ0osT0FBTyxDQUFDSyxHQUFSLENBQVlELEdBQVosQ0FBTCxFQUF1QjtRQUNyQixJQUFJRSxXQUFXLEdBQUdSLEdBQUcsQ0FBQ3hHLEdBQUosQ0FBUThHLEdBQVIsQ0FBbEI7O1FBRUEsSUFBSUUsV0FBSixFQUFpQjtVQUNmM0MsSUFBSSxDQUFDMkMsV0FBRCxDQUFKO1FBQ0Q7TUFDRjtJQUNGLENBUkQ7SUFTQUosTUFBTSxDQUFDdlgsSUFBUCxDQUFZbEIsUUFBWjtFQUNEOztFQUVEckUsU0FBUyxDQUFDb0UsT0FBVixDQUFrQixVQUFVQyxRQUFWLEVBQW9CO0lBQ3BDLElBQUksQ0FBQ3VZLE9BQU8sQ0FBQ0ssR0FBUixDQUFZNVksUUFBUSxDQUFDdEIsSUFBckIsQ0FBTCxFQUFpQztNQUMvQjtNQUNBd1gsSUFBSSxDQUFDbFcsUUFBRCxDQUFKO0lBQ0Q7RUFDRixDQUxEO0VBTUEsT0FBT3lZLE1BQVA7QUFDRDs7QUFFYyxTQUFTM2QsY0FBVCxDQUF3QmEsU0FBeEIsRUFBbUM7RUFDaEQ7RUFDQSxJQUFJd0IsZ0JBQWdCLEdBQUdtYixLQUFLLENBQUMzYyxTQUFELENBQTVCLENBRmdELENBRVA7O0VBRXpDLE9BQU93Tyw0REFBQSxDQUFzQixVQUFVWCxHQUFWLEVBQWUwQixLQUFmLEVBQXNCO0lBQ2pELE9BQU8xQixHQUFHLENBQUN0TCxNQUFKLENBQVdmLGdCQUFnQixDQUFDZ0IsTUFBakIsQ0FBd0IsVUFBVTZCLFFBQVYsRUFBb0I7TUFDNUQsT0FBT0EsUUFBUSxDQUFDa0wsS0FBVCxLQUFtQkEsS0FBMUI7SUFDRCxDQUZpQixDQUFYLENBQVA7RUFHRCxDQUpNLEVBSUosRUFKSSxDQUFQO0FBS0Q7Ozs7Ozs7Ozs7Ozs7OztBQzNDYyxTQUFTdkgsZ0JBQVQsQ0FBMEJJLElBQTFCLEVBQWdDO0VBQzdDLE9BQU8zRyxNQUFNLENBQUNDLE1BQVAsQ0FBYyxFQUFkLEVBQWtCMEcsSUFBbEIsRUFBd0I7SUFDN0JqQixJQUFJLEVBQUVpQixJQUFJLENBQUNsQixDQURrQjtJQUU3QkksR0FBRyxFQUFFYyxJQUFJLENBQUNmLENBRm1CO0lBRzdCRyxLQUFLLEVBQUVZLElBQUksQ0FBQ2xCLENBQUwsR0FBU2tCLElBQUksQ0FBQ3hCLEtBSFE7SUFJN0JhLE1BQU0sRUFBRVcsSUFBSSxDQUFDZixDQUFMLEdBQVNlLElBQUksQ0FBQ3RCO0VBSk8sQ0FBeEIsQ0FBUDtBQU1EOzs7Ozs7Ozs7Ozs7Ozs7QUNQYyxTQUFTeEgsUUFBVCxDQUFrQjZkLEdBQWxCLEVBQXVCelksRUFBdkIsRUFBMkI7RUFDeEMsSUFBSTBZLFdBQVcsR0FBRyxJQUFJUCxHQUFKLEVBQWxCO0VBQ0EsT0FBT00sR0FBRyxDQUFDM2EsTUFBSixDQUFXLFVBQVU2YSxJQUFWLEVBQWdCO0lBQ2hDLElBQUlDLFVBQVUsR0FBRzVZLEVBQUUsQ0FBQzJZLElBQUQsQ0FBbkI7O0lBRUEsSUFBSSxDQUFDRCxXQUFXLENBQUNILEdBQVosQ0FBZ0JLLFVBQWhCLENBQUwsRUFBa0M7TUFDaENGLFdBQVcsQ0FBQ0wsR0FBWixDQUFnQk8sVUFBaEI7TUFDQSxPQUFPLElBQVA7SUFDRDtFQUNGLENBUE0sQ0FBUDtBQVFEOzs7Ozs7Ozs7Ozs7Ozs7QUNWYyxTQUFTOVIsV0FBVCxHQUF1QjtFQUNwQyxJQUFJK1IsTUFBTSxHQUFHQyxTQUFTLENBQUNDLGFBQXZCOztFQUVBLElBQUlGLE1BQU0sSUFBSSxJQUFWLElBQWtCQSxNQUFNLENBQUNHLE1BQTdCLEVBQXFDO0lBQ25DLE9BQU9ILE1BQU0sQ0FBQ0csTUFBUCxDQUFjaEIsR0FBZCxDQUFrQixVQUFVVyxJQUFWLEVBQWdCO01BQ3ZDLE9BQU9BLElBQUksQ0FBQ00sS0FBTCxHQUFhLEdBQWIsR0FBbUJOLElBQUksQ0FBQ08sT0FBL0I7SUFDRCxDQUZNLEVBRUp2YSxJQUZJLENBRUMsR0FGRCxDQUFQO0VBR0Q7O0VBRUQsT0FBT21hLFNBQVMsQ0FBQ0ssU0FBakI7QUFDRDs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNWRDtBQUNBO0FBQ0EsSUFBSUMsc0JBQXNCLEdBQUcsK0VBQTdCO0FBQ0EsSUFBSUMsd0JBQXdCLEdBQUcseUVBQS9CO0FBQ0EsSUFBSUMsZ0JBQWdCLEdBQUcsQ0FBQyxNQUFELEVBQVMsU0FBVCxFQUFvQixPQUFwQixFQUE2QixJQUE3QixFQUFtQyxRQUFuQyxFQUE2QyxVQUE3QyxFQUF5RCxTQUF6RCxDQUF2QjtBQUNlLFNBQVMzZSxpQkFBVCxDQUEyQlcsU0FBM0IsRUFBc0M7RUFDbkRBLFNBQVMsQ0FBQ29FLE9BQVYsQ0FBa0IsVUFBVUMsUUFBVixFQUFvQjtJQUNwQyxHQUFHOUIsTUFBSCxDQUFVZCxNQUFNLENBQUNtTixJQUFQLENBQVl2SyxRQUFaLENBQVYsRUFBaUMyWixnQkFBakMsRUFBbUQ7SUFBbkQsQ0FDQ3hiLE1BREQsQ0FDUSxVQUFVc00sS0FBVixFQUFpQnRLLEtBQWpCLEVBQXdCeVosSUFBeEIsRUFBOEI7TUFDcEMsT0FBT0EsSUFBSSxDQUFDblYsT0FBTCxDQUFhZ0csS0FBYixNQUF3QnRLLEtBQS9CO0lBQ0QsQ0FIRCxFQUdHSixPQUhILENBR1csVUFBVXdYLEdBQVYsRUFBZTtNQUN4QixRQUFRQSxHQUFSO1FBQ0UsS0FBSyxNQUFMO1VBQ0UsSUFBSSxPQUFPdlgsUUFBUSxDQUFDdEIsSUFBaEIsS0FBeUIsUUFBN0IsRUFBdUM7WUFDckNJLE9BQU8sQ0FBQ0MsS0FBUixDQUFjMlksc0RBQU0sQ0FBQytCLHNCQUFELEVBQXlCSSxNQUFNLENBQUM3WixRQUFRLENBQUN0QixJQUFWLENBQS9CLEVBQWdELFFBQWhELEVBQTBELFVBQTFELEVBQXNFLE9BQU9tYixNQUFNLENBQUM3WixRQUFRLENBQUN0QixJQUFWLENBQWIsR0FBK0IsSUFBckcsQ0FBcEI7VUFDRDs7VUFFRDs7UUFFRixLQUFLLFNBQUw7VUFDRSxJQUFJLE9BQU9zQixRQUFRLENBQUMzQixPQUFoQixLQUE0QixTQUFoQyxFQUEyQztZQUN6Q1MsT0FBTyxDQUFDQyxLQUFSLENBQWMyWSxzREFBTSxDQUFDK0Isc0JBQUQsRUFBeUJ6WixRQUFRLENBQUN0QixJQUFsQyxFQUF3QyxXQUF4QyxFQUFxRCxXQUFyRCxFQUFrRSxPQUFPbWIsTUFBTSxDQUFDN1osUUFBUSxDQUFDM0IsT0FBVixDQUFiLEdBQWtDLElBQXBHLENBQXBCO1VBQ0Q7O1VBRUQ7O1FBRUYsS0FBSyxPQUFMO1VBQ0UsSUFBSThMLDZEQUFBLENBQXVCbkssUUFBUSxDQUFDa0wsS0FBaEMsSUFBeUMsQ0FBN0MsRUFBZ0Q7WUFDOUNwTSxPQUFPLENBQUNDLEtBQVIsQ0FBYzJZLHNEQUFNLENBQUMrQixzQkFBRCxFQUF5QnpaLFFBQVEsQ0FBQ3RCLElBQWxDLEVBQXdDLFNBQXhDLEVBQW1ELFlBQVl5TCwwREFBQSxDQUFvQixJQUFwQixDQUEvRCxFQUEwRixPQUFPMFAsTUFBTSxDQUFDN1osUUFBUSxDQUFDa0wsS0FBVixDQUFiLEdBQWdDLElBQTFILENBQXBCO1VBQ0Q7O1VBRUQ7O1FBRUYsS0FBSyxJQUFMO1VBQ0UsSUFBSSxPQUFPbEwsUUFBUSxDQUFDSyxFQUFoQixLQUF1QixVQUEzQixFQUF1QztZQUNyQ3ZCLE9BQU8sQ0FBQ0MsS0FBUixDQUFjMlksc0RBQU0sQ0FBQytCLHNCQUFELEVBQXlCelosUUFBUSxDQUFDdEIsSUFBbEMsRUFBd0MsTUFBeEMsRUFBZ0QsWUFBaEQsRUFBOEQsT0FBT21iLE1BQU0sQ0FBQzdaLFFBQVEsQ0FBQ0ssRUFBVixDQUFiLEdBQTZCLElBQTNGLENBQXBCO1VBQ0Q7O1VBRUQ7O1FBRUYsS0FBSyxRQUFMO1VBQ0UsSUFBSUwsUUFBUSxDQUFDZSxNQUFULElBQW1CLElBQW5CLElBQTJCLE9BQU9mLFFBQVEsQ0FBQ2UsTUFBaEIsS0FBMkIsVUFBMUQsRUFBc0U7WUFDcEVqQyxPQUFPLENBQUNDLEtBQVIsQ0FBYzJZLHNEQUFNLENBQUMrQixzQkFBRCxFQUF5QnpaLFFBQVEsQ0FBQ3RCLElBQWxDLEVBQXdDLFVBQXhDLEVBQW9ELFlBQXBELEVBQWtFLE9BQU9tYixNQUFNLENBQUM3WixRQUFRLENBQUNLLEVBQVYsQ0FBYixHQUE2QixJQUEvRixDQUFwQjtVQUNEOztVQUVEOztRQUVGLEtBQUssVUFBTDtVQUNFLElBQUlMLFFBQVEsQ0FBQ21MLFFBQVQsSUFBcUIsSUFBckIsSUFBNkIsQ0FBQ2pQLEtBQUssQ0FBQzRkLE9BQU4sQ0FBYzlaLFFBQVEsQ0FBQ21MLFFBQXZCLENBQWxDLEVBQW9FO1lBQ2xFck0sT0FBTyxDQUFDQyxLQUFSLENBQWMyWSxzREFBTSxDQUFDK0Isc0JBQUQsRUFBeUJ6WixRQUFRLENBQUN0QixJQUFsQyxFQUF3QyxZQUF4QyxFQUFzRCxTQUF0RCxFQUFpRSxPQUFPbWIsTUFBTSxDQUFDN1osUUFBUSxDQUFDbUwsUUFBVixDQUFiLEdBQW1DLElBQXBHLENBQXBCO1VBQ0Q7O1VBRUQ7O1FBRUYsS0FBSyxrQkFBTDtVQUNFLElBQUksQ0FBQ2pQLEtBQUssQ0FBQzRkLE9BQU4sQ0FBYzlaLFFBQVEsQ0FBQ2dOLGdCQUF2QixDQUFMLEVBQStDO1lBQzdDbE8sT0FBTyxDQUFDQyxLQUFSLENBQWMyWSxzREFBTSxDQUFDK0Isc0JBQUQsRUFBeUJ6WixRQUFRLENBQUN0QixJQUFsQyxFQUF3QyxvQkFBeEMsRUFBOEQsU0FBOUQsRUFBeUUsT0FBT21iLE1BQU0sQ0FBQzdaLFFBQVEsQ0FBQ2dOLGdCQUFWLENBQWIsR0FBMkMsSUFBcEgsQ0FBcEI7VUFDRDs7VUFFRDs7UUFFRixLQUFLLFNBQUw7UUFDQSxLQUFLLE1BQUw7VUFDRTs7UUFFRjtVQUNFbE8sT0FBTyxDQUFDQyxLQUFSLENBQWMsOERBQThEaUIsUUFBUSxDQUFDdEIsSUFBdkUsR0FBOEUsb0NBQTlFLEdBQXFIaWIsZ0JBQWdCLENBQUN0QixHQUFqQixDQUFxQixVQUFVMEIsQ0FBVixFQUFhO1lBQ25LLE9BQU8sT0FBT0EsQ0FBUCxHQUFXLElBQWxCO1VBQ0QsQ0FGa0ksRUFFaEkvYSxJQUZnSSxDQUUzSCxJQUYySCxDQUFySCxHQUVFLFVBRkYsR0FFZXVZLEdBRmYsR0FFcUIsa0JBRm5DO01BdkRKOztNQTREQXZYLFFBQVEsQ0FBQ21MLFFBQVQsSUFBcUJuTCxRQUFRLENBQUNtTCxRQUFULENBQWtCcEwsT0FBbEIsQ0FBMEIsVUFBVWlhLFdBQVYsRUFBdUI7UUFDcEUsSUFBSXJlLFNBQVMsQ0FBQ2lELElBQVYsQ0FBZSxVQUFVcWIsR0FBVixFQUFlO1VBQ2hDLE9BQU9BLEdBQUcsQ0FBQ3ZiLElBQUosS0FBYXNiLFdBQXBCO1FBQ0QsQ0FGRyxLQUVFLElBRk4sRUFFWTtVQUNWbGIsT0FBTyxDQUFDQyxLQUFSLENBQWMyWSxzREFBTSxDQUFDZ0Msd0JBQUQsRUFBMkJHLE1BQU0sQ0FBQzdaLFFBQVEsQ0FBQ3RCLElBQVYsQ0FBakMsRUFBa0RzYixXQUFsRCxFQUErREEsV0FBL0QsQ0FBcEI7UUFDRDtNQUNGLENBTm9CLENBQXJCO0lBT0QsQ0F2RUQ7RUF3RUQsQ0F6RUQ7QUEwRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDaEZEO0FBQ08sU0FBUzNPLE1BQVQsQ0FBZ0J4SCxHQUFoQixFQUFxQjRHLEtBQXJCLEVBQTRCN0csR0FBNUIsRUFBaUM7RUFDdEMsT0FBTzhQLDZDQUFPLENBQUM3UCxHQUFELEVBQU00UCw2Q0FBTyxDQUFDaEosS0FBRCxFQUFRN0csR0FBUixDQUFiLENBQWQ7QUFDRDtBQUNNLFNBQVMyUCxjQUFULENBQXdCMVAsR0FBeEIsRUFBNkI0RyxLQUE3QixFQUFvQzdHLEdBQXBDLEVBQXlDO0VBQzlDLElBQUlzVyxDQUFDLEdBQUc3TyxNQUFNLENBQUN4SCxHQUFELEVBQU00RyxLQUFOLEVBQWE3RyxHQUFiLENBQWQ7RUFDQSxPQUFPc1csQ0FBQyxHQUFHdFcsR0FBSixHQUFVQSxHQUFWLEdBQWdCc1csQ0FBdkI7QUFDRDs7Ozs7Ozs7Ozs7QUNQWTtBQUViO0FBQ0E7QUFDQTtBQUNBOztBQUNBQyxNQUFNLENBQUNDLE9BQVAsR0FBaUIsVUFBVUMsc0JBQVYsRUFBa0M7RUFDakQsSUFBSXRSLElBQUksR0FBRyxFQUFYLENBRGlELENBQ2xDOztFQUVmQSxJQUFJLENBQUNYLFFBQUwsR0FBZ0IsU0FBU0EsUUFBVCxHQUFvQjtJQUNsQyxPQUFPLEtBQUtpUSxHQUFMLENBQVMsVUFBVVcsSUFBVixFQUFnQjtNQUM5QixJQUFJc0IsT0FBTyxHQUFHLEVBQWQ7TUFDQSxJQUFJQyxTQUFTLEdBQUcsT0FBT3ZCLElBQUksQ0FBQyxDQUFELENBQVgsS0FBbUIsV0FBbkM7O01BRUEsSUFBSUEsSUFBSSxDQUFDLENBQUQsQ0FBUixFQUFhO1FBQ1hzQixPQUFPLElBQUksY0FBY3BjLE1BQWQsQ0FBcUI4YSxJQUFJLENBQUMsQ0FBRCxDQUF6QixFQUE4QixLQUE5QixDQUFYO01BQ0Q7O01BRUQsSUFBSUEsSUFBSSxDQUFDLENBQUQsQ0FBUixFQUFhO1FBQ1hzQixPQUFPLElBQUksVUFBVXBjLE1BQVYsQ0FBaUI4YSxJQUFJLENBQUMsQ0FBRCxDQUFyQixFQUEwQixJQUExQixDQUFYO01BQ0Q7O01BRUQsSUFBSXVCLFNBQUosRUFBZTtRQUNiRCxPQUFPLElBQUksU0FBU3BjLE1BQVQsQ0FBZ0I4YSxJQUFJLENBQUMsQ0FBRCxDQUFKLENBQVFoZCxNQUFSLEdBQWlCLENBQWpCLEdBQXFCLElBQUlrQyxNQUFKLENBQVc4YSxJQUFJLENBQUMsQ0FBRCxDQUFmLENBQXJCLEdBQTJDLEVBQTNELEVBQStELElBQS9ELENBQVg7TUFDRDs7TUFFRHNCLE9BQU8sSUFBSUQsc0JBQXNCLENBQUNyQixJQUFELENBQWpDOztNQUVBLElBQUl1QixTQUFKLEVBQWU7UUFDYkQsT0FBTyxJQUFJLEdBQVg7TUFDRDs7TUFFRCxJQUFJdEIsSUFBSSxDQUFDLENBQUQsQ0FBUixFQUFhO1FBQ1hzQixPQUFPLElBQUksR0FBWDtNQUNEOztNQUVELElBQUl0QixJQUFJLENBQUMsQ0FBRCxDQUFSLEVBQWE7UUFDWHNCLE9BQU8sSUFBSSxHQUFYO01BQ0Q7O01BRUQsT0FBT0EsT0FBUDtJQUNELENBL0JNLEVBK0JKdGIsSUEvQkksQ0ErQkMsRUEvQkQsQ0FBUDtFQWdDRCxDQWpDRCxDQUhpRCxDQW9DOUM7OztFQUdIK0osSUFBSSxDQUFDaUksQ0FBTCxHQUFTLFNBQVNBLENBQVQsQ0FBV3dKLE9BQVgsRUFBb0JDLEtBQXBCLEVBQTJCQyxNQUEzQixFQUFtQ0MsUUFBbkMsRUFBNkNDLEtBQTdDLEVBQW9EO0lBQzNELElBQUksT0FBT0osT0FBUCxLQUFtQixRQUF2QixFQUFpQztNQUMvQkEsT0FBTyxHQUFHLENBQUMsQ0FBQyxJQUFELEVBQU9BLE9BQVAsRUFBZ0JoRSxTQUFoQixDQUFELENBQVY7SUFDRDs7SUFFRCxJQUFJcUUsc0JBQXNCLEdBQUcsRUFBN0I7O0lBRUEsSUFBSUgsTUFBSixFQUFZO01BQ1YsS0FBSyxJQUFJSSxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHLEtBQUs5ZSxNQUF6QixFQUFpQzhlLENBQUMsRUFBbEMsRUFBc0M7UUFDcEMsSUFBSUMsRUFBRSxHQUFHLEtBQUtELENBQUwsRUFBUSxDQUFSLENBQVQ7O1FBRUEsSUFBSUMsRUFBRSxJQUFJLElBQVYsRUFBZ0I7VUFDZEYsc0JBQXNCLENBQUNFLEVBQUQsQ0FBdEIsR0FBNkIsSUFBN0I7UUFDRDtNQUNGO0lBQ0Y7O0lBRUQsS0FBSyxJQUFJQyxFQUFFLEdBQUcsQ0FBZCxFQUFpQkEsRUFBRSxHQUFHUixPQUFPLENBQUN4ZSxNQUE5QixFQUFzQ2dmLEVBQUUsRUFBeEMsRUFBNEM7TUFDMUMsSUFBSWhDLElBQUksR0FBRyxHQUFHOWEsTUFBSCxDQUFVc2MsT0FBTyxDQUFDUSxFQUFELENBQWpCLENBQVg7O01BRUEsSUFBSU4sTUFBTSxJQUFJRyxzQkFBc0IsQ0FBQzdCLElBQUksQ0FBQyxDQUFELENBQUwsQ0FBcEMsRUFBK0M7UUFDN0M7TUFDRDs7TUFFRCxJQUFJLE9BQU80QixLQUFQLEtBQWlCLFdBQXJCLEVBQWtDO1FBQ2hDLElBQUksT0FBTzVCLElBQUksQ0FBQyxDQUFELENBQVgsS0FBbUIsV0FBdkIsRUFBb0M7VUFDbENBLElBQUksQ0FBQyxDQUFELENBQUosR0FBVTRCLEtBQVY7UUFDRCxDQUZELE1BRU87VUFDTDVCLElBQUksQ0FBQyxDQUFELENBQUosR0FBVSxTQUFTOWEsTUFBVCxDQUFnQjhhLElBQUksQ0FBQyxDQUFELENBQUosQ0FBUWhkLE1BQVIsR0FBaUIsQ0FBakIsR0FBcUIsSUFBSWtDLE1BQUosQ0FBVzhhLElBQUksQ0FBQyxDQUFELENBQWYsQ0FBckIsR0FBMkMsRUFBM0QsRUFBK0QsSUFBL0QsRUFBcUU5YSxNQUFyRSxDQUE0RThhLElBQUksQ0FBQyxDQUFELENBQWhGLEVBQXFGLEdBQXJGLENBQVY7VUFDQUEsSUFBSSxDQUFDLENBQUQsQ0FBSixHQUFVNEIsS0FBVjtRQUNEO01BQ0Y7O01BRUQsSUFBSUgsS0FBSixFQUFXO1FBQ1QsSUFBSSxDQUFDekIsSUFBSSxDQUFDLENBQUQsQ0FBVCxFQUFjO1VBQ1pBLElBQUksQ0FBQyxDQUFELENBQUosR0FBVXlCLEtBQVY7UUFDRCxDQUZELE1BRU87VUFDTHpCLElBQUksQ0FBQyxDQUFELENBQUosR0FBVSxVQUFVOWEsTUFBVixDQUFpQjhhLElBQUksQ0FBQyxDQUFELENBQXJCLEVBQTBCLElBQTFCLEVBQWdDOWEsTUFBaEMsQ0FBdUM4YSxJQUFJLENBQUMsQ0FBRCxDQUEzQyxFQUFnRCxHQUFoRCxDQUFWO1VBQ0FBLElBQUksQ0FBQyxDQUFELENBQUosR0FBVXlCLEtBQVY7UUFDRDtNQUNGOztNQUVELElBQUlFLFFBQUosRUFBYztRQUNaLElBQUksQ0FBQzNCLElBQUksQ0FBQyxDQUFELENBQVQsRUFBYztVQUNaQSxJQUFJLENBQUMsQ0FBRCxDQUFKLEdBQVUsR0FBRzlhLE1BQUgsQ0FBVXljLFFBQVYsQ0FBVjtRQUNELENBRkQsTUFFTztVQUNMM0IsSUFBSSxDQUFDLENBQUQsQ0FBSixHQUFVLGNBQWM5YSxNQUFkLENBQXFCOGEsSUFBSSxDQUFDLENBQUQsQ0FBekIsRUFBOEIsS0FBOUIsRUFBcUM5YSxNQUFyQyxDQUE0QzhhLElBQUksQ0FBQyxDQUFELENBQWhELEVBQXFELEdBQXJELENBQVY7VUFDQUEsSUFBSSxDQUFDLENBQUQsQ0FBSixHQUFVMkIsUUFBVjtRQUNEO01BQ0Y7O01BRUQ1UixJQUFJLENBQUM3SCxJQUFMLENBQVU4WCxJQUFWO0lBQ0Q7RUFDRixDQXJERDs7RUF1REEsT0FBT2pRLElBQVA7QUFDRCxDQS9GRDs7Ozs7Ozs7Ozs7QUNOYTs7QUFFYm9SLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQixVQUFVYSxHQUFWLEVBQWVoZSxPQUFmLEVBQXdCO0VBQ3ZDLElBQUksQ0FBQ0EsT0FBTCxFQUFjO0lBQ1pBLE9BQU8sR0FBRyxFQUFWO0VBQ0Q7O0VBRUQsSUFBSSxDQUFDZ2UsR0FBTCxFQUFVO0lBQ1IsT0FBT0EsR0FBUDtFQUNEOztFQUVEQSxHQUFHLEdBQUdwQixNQUFNLENBQUNvQixHQUFHLENBQUNDLFVBQUosR0FBaUJELEdBQUcsQ0FBQ3BJLE9BQXJCLEdBQStCb0ksR0FBaEMsQ0FBWixDQVR1QyxDQVNXOztFQUVsRCxJQUFJLGVBQWUxVCxJQUFmLENBQW9CMFQsR0FBcEIsQ0FBSixFQUE4QjtJQUM1QkEsR0FBRyxHQUFHQSxHQUFHLENBQUNuSixLQUFKLENBQVUsQ0FBVixFQUFhLENBQUMsQ0FBZCxDQUFOO0VBQ0Q7O0VBRUQsSUFBSTdVLE9BQU8sQ0FBQythLElBQVosRUFBa0I7SUFDaEJpRCxHQUFHLElBQUloZSxPQUFPLENBQUMrYSxJQUFmO0VBQ0QsQ0FqQnNDLENBaUJyQztFQUNGOzs7RUFHQSxJQUFJLG9CQUFvQnpRLElBQXBCLENBQXlCMFQsR0FBekIsS0FBaUNoZSxPQUFPLENBQUNrZSxVQUE3QyxFQUF5RDtJQUN2RCxPQUFPLEtBQUtqZCxNQUFMLENBQVkrYyxHQUFHLENBQUNuRCxPQUFKLENBQVksSUFBWixFQUFrQixLQUFsQixFQUF5QkEsT0FBekIsQ0FBaUMsS0FBakMsRUFBd0MsS0FBeEMsQ0FBWixFQUE0RCxJQUE1RCxDQUFQO0VBQ0Q7O0VBRUQsT0FBT21ELEdBQVA7QUFDRCxDQTFCRDs7Ozs7Ozs7Ozs7QUNGYTs7QUFFYmQsTUFBTSxDQUFDQyxPQUFQLEdBQWlCLFVBQVVwQixJQUFWLEVBQWdCO0VBQy9CLElBQUlzQixPQUFPLEdBQUd0QixJQUFJLENBQUMsQ0FBRCxDQUFsQjtFQUNBLElBQUlvQyxVQUFVLEdBQUdwQyxJQUFJLENBQUMsQ0FBRCxDQUFyQjs7RUFFQSxJQUFJLENBQUNvQyxVQUFMLEVBQWlCO0lBQ2YsT0FBT2QsT0FBUDtFQUNEOztFQUVELElBQUksT0FBT2UsSUFBUCxLQUFnQixVQUFwQixFQUFnQztJQUM5QixJQUFJQyxNQUFNLEdBQUdELElBQUksQ0FBQ0UsUUFBUSxDQUFDQyxrQkFBa0IsQ0FBQ0MsSUFBSSxDQUFDQyxTQUFMLENBQWVOLFVBQWYsQ0FBRCxDQUFuQixDQUFULENBQWpCO0lBQ0EsSUFBSW5iLElBQUksR0FBRywrREFBK0QvQixNQUEvRCxDQUFzRW9kLE1BQXRFLENBQVg7SUFDQSxJQUFJSyxhQUFhLEdBQUcsT0FBT3pkLE1BQVAsQ0FBYytCLElBQWQsRUFBb0IsS0FBcEIsQ0FBcEI7SUFDQSxJQUFJMmIsVUFBVSxHQUFHUixVQUFVLENBQUNTLE9BQVgsQ0FBbUJ4RCxHQUFuQixDQUF1QixVQUFVeUQsTUFBVixFQUFrQjtNQUN4RCxPQUFPLGlCQUFpQjVkLE1BQWpCLENBQXdCa2QsVUFBVSxDQUFDVyxVQUFYLElBQXlCLEVBQWpELEVBQXFEN2QsTUFBckQsQ0FBNEQ0ZCxNQUE1RCxFQUFvRSxLQUFwRSxDQUFQO0lBQ0QsQ0FGZ0IsQ0FBakI7SUFHQSxPQUFPLENBQUN4QixPQUFELEVBQVVwYyxNQUFWLENBQWlCMGQsVUFBakIsRUFBNkIxZCxNQUE3QixDQUFvQyxDQUFDeWQsYUFBRCxDQUFwQyxFQUFxRDNjLElBQXJELENBQTBELElBQTFELENBQVA7RUFDRDs7RUFFRCxPQUFPLENBQUNzYixPQUFELEVBQVV0YixJQUFWLENBQWUsSUFBZixDQUFQO0FBQ0QsQ0FuQkQ7Ozs7Ozs7Ozs7QUNGQSxNQUFNZ2QsaUJBQWlCLEdBQUdDLG1CQUFPLENBQUMsd0RBQUQsQ0FBakM7O0FBRUE5QixNQUFNLENBQUNDLE9BQVAsR0FBaUIsU0FBUzhCLHFCQUFULENBQWdDQyxZQUFoQyxFQUE4QztFQUM3RCxJQUFJLE9BQU9BLFlBQVAsS0FBd0IsUUFBNUIsRUFBc0M7SUFDcEMsT0FBTzNGLFNBQVA7RUFDRDs7RUFFRCxNQUFNNEYsSUFBSSxHQUFHRCxZQUFZLENBQUNFLFdBQWIsRUFBYjs7RUFFQSxJQUFJLENBQUNqZixNQUFNLENBQUNrZixTQUFQLENBQWlCdlIsY0FBakIsQ0FBZ0N3UixJQUFoQyxDQUFxQ1AsaUJBQXJDLEVBQXdESSxJQUF4RCxDQUFMLEVBQW9FO0lBQ2xFLE9BQU81RixTQUFQO0VBQ0Q7O0VBRUQsT0FBT3dGLGlCQUFpQixDQUFDSSxJQUFELENBQXhCO0FBQ0QsQ0FaRDs7QUFjQWpDLGdDQUFBLEdBQW1DNkIsaUJBQW5DOzs7Ozs7Ozs7O0FDaEJBN0IsTUFBTSxDQUFDQyxPQUFQLEdBQWlCO0VBQ2ZvQyxHQUFHLEVBQUUsS0FEVTtFQUVmQyxHQUFHLEVBQUUsR0FGVTtFQUdmQyxHQUFHLEVBQUUsR0FIVTtFQUlmQyxHQUFHLEVBQUUsR0FKVTtFQUtmQyxHQUFHLEVBQUUsR0FMVTtFQU1mQyxHQUFHLEVBQUUsSUFOVTtFQU9mQyxHQUFHLEVBQUUsR0FQVTtFQVFmQyxHQUFHLEVBQUUsR0FSVTtFQVNmQyxHQUFHLEVBQUUsR0FUVTtFQVVmQyxHQUFHLEVBQUUsR0FWVTtFQVdmQyxHQUFHLEVBQUUsSUFYVTtFQVlmQyxHQUFHLEVBQUUsR0FaVTtFQWFmQyxHQUFHLEVBQUUsR0FiVTtFQWNmQyxHQUFHLEVBQUUsSUFkVTtFQWVmQyxHQUFHLEVBQUUsTUFmVTtFQWdCZkMsR0FBRyxFQUFFLEtBaEJVO0VBaUJmQyxHQUFHLEVBQUUsR0FqQlU7RUFrQmZDLEdBQUcsRUFBRSxHQWxCVTtFQW1CZkMsR0FBRyxFQUFFLElBbkJVO0VBb0JmQyxHQUFHLEVBQUUsS0FwQlU7RUFxQmZDLEdBQUcsRUFBRSxJQXJCVTtFQXNCZkMsR0FBRyxFQUFFLEdBdEJVO0VBdUJmQyxHQUFHLEVBQUUsR0F2QlU7RUF3QmZDLEdBQUcsRUFBRSxLQXhCVTtFQXlCZkMsR0FBRyxFQUFFLEdBekJVO0VBMEJmQyxHQUFHLEVBQUUsSUExQlU7RUEyQmZDLEdBQUcsRUFBRSxJQTNCVTtFQTRCZkMsR0FBRyxFQUFFLEtBNUJVO0VBNkJmQyxHQUFHLEVBQUUsR0E3QlU7RUE4QmZDLEdBQUcsRUFBRSxJQTlCVTtFQStCZkMsR0FBRyxFQUFFLEtBL0JVO0VBZ0NmQyxHQUFHLEVBQUUsS0FoQ1U7RUFpQ2ZDLEdBQUcsRUFBRSxLQWpDVTtFQWtDZkMsR0FBRyxFQUFFLEtBbENVO0VBbUNmQyxHQUFHLEVBQUUsR0FuQ1U7RUFvQ2ZDLEdBQUcsRUFBRSxHQXBDVTtFQXFDZkMsR0FBRyxFQUFFLEdBckNVO0VBc0NmQyxHQUFHLEVBQUUsS0F0Q1U7RUF1Q2ZDLEdBQUcsRUFBRSxHQXZDVTtFQXdDZkMsR0FBRyxFQUFFLEdBeENVO0VBeUNmQyxHQUFHLEVBQUUsR0F6Q1U7RUEwQ2ZDLEdBQUcsRUFBRSxHQTFDVTtFQTJDZkMsR0FBRyxFQUFFLElBM0NVO0VBNENmQyxHQUFHLEVBQUUsS0E1Q1U7RUE2Q2ZDLEdBQUcsRUFBRSxJQTdDVTtFQThDZkMsR0FBRyxFQUFFLEtBOUNVO0VBK0NmQyxHQUFHLEVBQUUsSUEvQ1U7RUFnRGZDLEdBQUcsRUFBRSxJQWhEVTtFQWlEZkMsR0FBRyxFQUFFLEdBakRVO0VBa0RmQyxHQUFHLEVBQUUsS0FsRFU7RUFtRGZDLEdBQUcsRUFBRSxJQW5EVTtFQW9EZkMsR0FBRyxFQUFFLEdBcERVO0VBcURmQyxHQUFHLEVBQUUsR0FyRFU7RUFzRGZDLEdBQUcsRUFBRSxHQXREVTtFQXVEZkMsR0FBRyxFQUFFLEdBdkRVO0VBd0RmQyxHQUFHLEVBQUUsR0F4RFU7RUF5RGZDLEdBQUcsRUFBRSxHQXpEVTtFQTBEZkMsR0FBRyxFQUFFLEdBMURVO0VBMkRmQyxHQUFHLEVBQUUsR0EzRFU7RUE0RGZDLEdBQUcsRUFBRSxLQTVEVTtFQTZEZkMsR0FBRyxFQUFFLEdBN0RVO0VBOERmQyxHQUFHLEVBQUUsR0E5RFU7RUErRGZDLEdBQUcsRUFBRSxJQS9EVTtFQWdFZkMsR0FBRyxFQUFFLEdBaEVVO0VBaUVmQyxHQUFHLEVBQUUsR0FqRVU7RUFrRWZDLEdBQUcsRUFBRSxHQWxFVTtFQW1FZkMsR0FBRyxFQUFFLEdBbkVVO0VBb0VmQyxHQUFHLEVBQUUsSUFwRVU7RUFxRWZDLEdBQUcsRUFBRSxHQXJFVTtFQXNFZkMsR0FBRyxFQUFFLElBdEVVO0VBdUVmQyxHQUFHLEVBQUUsSUF2RVU7RUF3RWZDLEdBQUcsRUFBRSxHQXhFVTtFQXlFZkMsR0FBRyxFQUFFLEdBekVVO0VBMEVmQyxHQUFHLEVBQUUsR0ExRVU7RUEyRWZDLEdBQUcsRUFBRSxLQTNFVTtFQTRFZkMsR0FBRyxFQUFFLEdBNUVVO0VBNkVmQyxHQUFHLEVBQUUsSUE3RVU7RUE4RWZDLEdBQUcsRUFBRSxHQTlFVTtFQStFZkMsR0FBRyxFQUFFLElBL0VVO0VBZ0ZmQyxHQUFHLEVBQUUsSUFoRlU7RUFpRmZDLEdBQUcsRUFBRSxHQWpGVTtFQWtGZkMsR0FBRyxFQUFFLEtBbEZVO0VBbUZmQyxHQUFHLEVBQUUsSUFuRlU7RUFvRmZDLEdBQUcsRUFBRSxHQXBGVTtFQXFGZkMsR0FBRyxFQUFFLElBckZVO0VBc0ZmQyxHQUFHLEVBQUUsR0F0RlU7RUF1RmZDLEdBQUcsRUFBRSxHQXZGVTtFQXdGZkMsR0FBRyxFQUFFLElBeEZVO0VBeUZmQyxHQUFHLEVBQUUsR0F6RlU7RUEwRmZDLEdBQUcsRUFBRSxHQTFGVTtFQTJGZkMsR0FBRyxFQUFFLEdBM0ZVO0VBNEZmQyxHQUFHLEVBQUUsR0E1RlU7RUE2RmZDLEdBQUcsRUFBRSxHQTdGVTtFQThGZkMsR0FBRyxFQUFFLEdBOUZVO0VBK0ZmQyxHQUFHLEVBQUUsR0EvRlU7RUFnR2ZDLEdBQUcsRUFBRSxHQWhHVTtFQWlHZkMsR0FBRyxFQUFFLElBakdVO0VBa0dmQyxHQUFHLEVBQUUsSUFsR1U7RUFtR2ZDLEdBQUcsRUFBRSxJQW5HVTtFQW9HZkMsR0FBRyxFQUFFLEtBcEdVO0VBcUdmQyxHQUFHLEVBQUUsS0FyR1U7RUFzR2ZDLEdBQUcsRUFBRSxJQXRHVTtFQXVHZkMsR0FBRyxFQUFFLEtBdkdVO0VBd0dmQyxHQUFHLEVBQUUsR0F4R1U7RUF5R2ZDLEdBQUcsRUFBRSxHQXpHVTtFQTBHZkMsR0FBRyxFQUFFLE1BMUdVO0VBMkdmQyxHQUFHLEVBQUUsSUEzR1U7RUE0R2ZDLEdBQUcsRUFBRSxJQTVHVTtFQTZHZkMsR0FBRyxFQUFFLEdBN0dVO0VBOEdmQyxHQUFHLEVBQUUsSUE5R1U7RUErR2ZDLEdBQUcsRUFBRSxJQS9HVTtFQWdIZkMsR0FBRyxFQUFFLEdBaEhVO0VBaUhmQyxHQUFHLEVBQUUsS0FqSFU7RUFrSGZDLEdBQUcsRUFBRSxJQWxIVTtFQW1IZkMsR0FBRyxFQUFFLElBbkhVO0VBb0hmQyxHQUFHLEVBQUUsR0FwSFU7RUFxSGZDLEdBQUcsRUFBRSxHQXJIVTtFQXNIZkMsR0FBRyxFQUFFLElBdEhVO0VBdUhmQyxHQUFHLEVBQUUsSUF2SFU7RUF3SGZDLEdBQUcsRUFBRSxHQXhIVTtFQXlIZkMsR0FBRyxFQUFFLEdBekhVO0VBMEhmQyxHQUFHLEVBQUUsR0ExSFU7RUEySGZDLEdBQUcsRUFBRSxLQTNIVTtFQTRIZkMsR0FBRyxFQUFFLEtBNUhVO0VBNkhmQyxHQUFHLEVBQUUsR0E3SFU7RUE4SGZDLEdBQUcsRUFBRSxHQTlIVTtFQStIZkMsR0FBRyxFQUFFLEdBL0hVO0VBZ0lmQyxHQUFHLEVBQUUsSUFoSVU7RUFpSWZDLEdBQUcsRUFBRSxJQWpJVTtFQWtJZkMsR0FBRyxFQUFFLEdBbElVO0VBbUlmQyxHQUFHLEVBQUUsR0FuSVU7RUFvSWZDLEdBQUcsRUFBRSxLQXBJVTtFQXFJZkMsR0FBRyxFQUFFLE1BcklVO0VBc0lmQyxHQUFHLEVBQUUsR0F0SVU7RUF1SWZDLEdBQUcsRUFBRSxJQXZJVTtFQXdJZkMsR0FBRyxFQUFFLEdBeElVO0VBeUlmQyxHQUFHLEVBQUUsR0F6SVU7RUEwSWZDLEdBQUcsRUFBRSxHQTFJVTtFQTJJZkMsR0FBRyxFQUFFLE1BM0lVO0VBNElmQyxHQUFHLEVBQUUsSUE1SVU7RUE2SWZDLEdBQUcsRUFBRSxJQTdJVTtFQThJZkMsR0FBRyxFQUFFLEdBOUlVO0VBK0lmQyxHQUFHLEVBQUUsSUEvSVU7RUFnSmZDLEdBQUcsRUFBRSxHQWhKVTtFQWlKZkMsR0FBRyxFQUFFLEdBakpVO0VBa0pmQyxHQUFHLEVBQUUsR0FsSlU7RUFtSmZDLEdBQUcsRUFBRSxJQW5KVTtFQW9KZkMsR0FBRyxFQUFFLElBcEpVO0VBcUpmQyxHQUFHLEVBQUUsR0FySlU7RUFzSmZDLEdBQUcsRUFBRSxHQXRKVTtFQXVKZkMsR0FBRyxFQUFFLEdBdkpVO0VBd0pmQyxHQUFHLEVBQUUsR0F4SlU7RUF5SmZDLEdBQUcsRUFBRSxJQXpKVTtFQTBKZkMsR0FBRyxFQUFFLEdBMUpVO0VBMkpmQyxHQUFHLEVBQUUsS0EzSlU7RUE0SmZDLEdBQUcsRUFBRSxJQTVKVTtFQTZKZkMsR0FBRyxFQUFFLEdBN0pVO0VBOEpmQyxHQUFHLEVBQUUsR0E5SlU7RUErSmZDLEdBQUcsRUFBRSxLQS9KVTtFQWdLZkMsR0FBRyxFQUFFLEdBaEtVO0VBaUtmQyxHQUFHLEVBQUUsS0FqS1U7RUFrS2ZDLEdBQUcsRUFBRSxLQWxLVTtFQW1LZkMsR0FBRyxFQUFFLEdBbktVO0VBb0tmQyxHQUFHLEVBQUUsS0FwS1U7RUFxS2ZDLEdBQUcsRUFBRSxHQXJLVTtFQXNLZkMsR0FBRyxFQUFFLEtBdEtVO0VBdUtmQyxHQUFHLEVBQUUsSUF2S1U7RUF3S2ZDLEdBQUcsRUFBRSxLQXhLVTtFQXlLZkMsR0FBRyxFQUFFLElBektVO0VBMEtmQyxHQUFHLEVBQUUsSUExS1U7RUEyS2ZDLEdBQUcsRUFBRSxNQTNLVTtFQTRLZkMsR0FBRyxFQUFFLEdBNUtVO0VBNktmQyxHQUFHLEVBQUUsSUE3S1U7RUE4S2ZDLEdBQUcsRUFBRSxLQTlLVTtFQStLZkMsR0FBRyxFQUFFLE1BL0tVO0VBZ0xmQyxHQUFHLEVBQUUsR0FoTFU7RUFpTGZDLEdBQUcsRUFBRSxHQWpMVTtFQWtMZkMsR0FBRyxFQUFFLEtBbExVO0VBbUxmQyxHQUFHLEVBQUUsR0FuTFU7RUFvTGZDLEdBQUcsRUFBRSxPQXBMVTtFQXFMZkMsR0FBRyxFQUFFLEtBckxVO0VBc0xmQyxHQUFHLEVBQUUsR0F0TFU7RUF1TGZDLEdBQUcsRUFBRSxHQXZMVTtFQXdMZkMsR0FBRyxFQUFFLElBeExVO0VBeUxmQyxHQUFHLEVBQUUsSUF6TFU7RUEwTGZDLEdBQUcsRUFBRTtBQTFMVSxDQUFqQjs7Ozs7Ozs7OztBQ0FBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBLFNBQVNDLGdCQUFULENBQTBCQyxRQUExQixFQUFvQ2xyQixPQUFwQyxFQUE0QztFQUN4QyxJQUFJbXJCLFVBQUo7RUFDQSxJQUFJQyxFQUFFLEdBQUc3UixTQUFUOztFQUNBLElBQ0kyUixRQUFRLEtBQUssSUFBYixJQUFxQkEsUUFBUSxLQUFLM1IsU0FBbEMsSUFDQThSLE1BQU0sQ0FBQ0MsUUFBUCxDQUFnQkosUUFBaEIsQ0FEQSxJQUM2QixPQUFPQSxRQUFQLEtBQXFCLFFBRnRELEVBR0M7SUFDR0UsRUFBRSxHQUFHRixRQUFMO0lBQ0FDLFVBQVUsR0FBR25yQixPQUFPLElBQUksRUFBeEI7RUFDSCxDQU5ELE1BTU0sSUFBR2tyQixRQUFRLElBQUksQ0FBQ2xyQixPQUFoQixFQUF3QjtJQUMxQm1yQixVQUFVLEdBQUdELFFBQWI7SUFDQUUsRUFBRSxHQUFHRCxVQUFVLENBQUNDLEVBQWhCO0VBQ0gsQ0FISyxNQUdEO0lBQ0RELFVBQVUsR0FBRyxFQUFiO0VBQ0g7O0VBQ0QsT0FBTztJQUNIQyxFQUFFLEVBQUVBLEVBREQ7SUFFSHByQixPQUFPLEVBQUVtckI7RUFGTixDQUFQO0FBSUg7O0FBRUQsU0FBU0ksd0JBQVQsQ0FBa0NDLElBQWxDLEVBQXdDSixFQUF4QyxFQUEyQztFQUN2QyxJQUFHQSxFQUFFLEtBQUssSUFBUCxJQUFlQSxFQUFFLEtBQUs3UixTQUF6QixFQUFtQztJQUMvQixPQUFPLENBQVA7RUFDSCxDQUZELE1BRU0sSUFBRzZSLEVBQUUsSUFBSSxDQUFDLEVBQVAsSUFBYUEsRUFBRSxJQUFJLENBQUMsRUFBdkIsRUFBMEI7SUFDNUIsT0FBT3hoQixJQUFJLENBQUM2aEIsS0FBTCxDQUFXLEtBQUtMLEVBQWhCLENBQVA7RUFDSCxDQUZLLE1BRUEsSUFBR0MsTUFBTSxDQUFDQyxRQUFQLENBQWdCRixFQUFoQixDQUFILEVBQXVCO0lBQ3pCLE9BQU94aEIsSUFBSSxDQUFDNmhCLEtBQUwsQ0FBV0wsRUFBWCxDQUFQO0VBQ0gsQ0FGSyxNQUVBLElBQUdBLEVBQUUsS0FBSyxPQUFWLEVBQWtCO0lBQ3BCLE9BQU8sQ0FBQyxDQUFDSSxJQUFJLElBQUksSUFBSUUsSUFBSixFQUFULEVBQXFCQyxpQkFBckIsRUFBUjtFQUNILENBRkssTUFFRDtJQUNELE1BQU1DLE9BQU8sR0FBR2hQLE1BQU0sQ0FBQ3dPLEVBQUQsQ0FBTixDQUFXaE0sV0FBWCxFQUFoQjs7SUFDQSxJQUFHd00sT0FBTyxJQUFJQyxvQkFBZCxFQUFtQztNQUMvQixNQUFNbmMsTUFBTSxHQUFHOUYsSUFBSSxDQUFDNmhCLEtBQUwsQ0FBVyxLQUFLSSxvQkFBb0IsQ0FBQ0QsT0FBRCxDQUFwQyxDQUFmOztNQUNBLElBQUdQLE1BQU0sQ0FBQ0MsUUFBUCxDQUFnQjViLE1BQWhCLENBQUgsRUFBMkI7UUFDdkIsT0FBT0EsTUFBUDtNQUNIO0lBQ0o7RUFDSjs7RUFDRCxNQUFNLElBQUlvYyxLQUFKLENBQVcsaUNBQWdDVixFQUFHLElBQTlDLENBQU47QUFDSDs7QUFFRCxTQUFTVyxRQUFULENBQWtCUCxJQUFsQixFQUF3Qi9RLE1BQXhCLEVBQWdDeVEsUUFBaEMsRUFBMENsckIsT0FBMUMsRUFBa0Q7RUFDOUMsSUFBR3FyQixNQUFNLENBQUNDLFFBQVAsQ0FBZ0JFLElBQWhCLENBQUgsRUFBeUI7SUFDckI7SUFDQUEsSUFBSSxHQUFHLElBQUlFLElBQUosQ0FBU0YsSUFBVCxDQUFQO0VBQ0gsQ0FIRCxNQUdNLElBQUcsQ0FBQ0EsSUFBSixFQUFTO0lBQ1gsTUFBTSxJQUFJTSxLQUFKLENBQVUsNkJBQVYsQ0FBTjtFQUNILENBRkssTUFFQSxJQUFHLE9BQU9OLElBQUksQ0FBQ1EsTUFBWixLQUF3QixVQUEzQixFQUFzQztJQUN4QztJQUNBO0lBQ0FSLElBQUksR0FBR0EsSUFBSSxDQUFDUSxNQUFMLEVBQVA7RUFDSCxDQUpLLE1BSUEsSUFBRyxPQUFPUixJQUFJLENBQUNTLFFBQVosS0FBMEIsVUFBN0IsRUFBd0M7SUFDMUM7SUFDQVQsSUFBSSxHQUFHQSxJQUFJLENBQUNTLFFBQUwsRUFBUDtFQUNIOztFQUNELElBQUcsRUFBRVQsSUFBSSxZQUFZRSxJQUFsQixDQUFILEVBQTJCO0lBQ3ZCLE1BQU0sSUFBSUksS0FBSixDQUFVLDhDQUFWLENBQU47RUFDSDs7RUFDRCxNQUFNSSxNQUFNLEdBQUdDLGVBQWUsQ0FBQ0MsaUJBQWhCLENBQWtDM1IsTUFBbEMsQ0FBZjtFQUNBLE1BQU0wUSxVQUFVLEdBQUdGLGdCQUFnQixDQUFDQyxRQUFELEVBQVdsckIsT0FBWCxDQUFuQztFQUNBLE1BQU1xc0IscUJBQXFCLEdBQUdkLHdCQUF3QixDQUFDQyxJQUFELEVBQU9MLFVBQVUsQ0FBQ0MsRUFBbEIsQ0FBdEQ7RUFDQSxNQUFNa0IsTUFBTSxHQUFHLElBQUlaLElBQUosQ0FBU0YsSUFBVCxDQUFmOztFQUNBLElBQUdhLHFCQUFxQixLQUFLOVMsU0FBN0IsRUFBdUM7SUFDbkMrUyxNQUFNLENBQUNDLGFBQVAsQ0FDSWYsSUFBSSxDQUFDZ0IsYUFBTCxLQUNBSCxxQkFGSjtFQUlIOztFQUNELElBQUlJLE1BQU0sR0FBRyxFQUFiOztFQUNBLEtBQUksSUFBSUMsS0FBUixJQUFpQlIsTUFBakIsRUFBd0I7SUFDcEIsSUFBR1EsS0FBSyxZQUFZQyxTQUFwQixFQUE4QjtNQUMxQkYsTUFBTSxJQUFJQyxLQUFLLENBQUMxZixLQUFOLENBQVlzZixNQUFaLEVBQW9CLEVBQXBCLEVBQXdCbkIsVUFBVSxDQUFDbnJCLE9BQW5DLEVBQTRDcXNCLHFCQUE1QyxDQUFWO0lBQ0gsQ0FGRCxNQUVNLElBQUdLLEtBQUssWUFBWUMsU0FBUyxDQUFDQyxLQUE5QixFQUFvQztNQUN0Q0gsTUFBTSxJQUFJQyxLQUFLLENBQUMxZixLQUFOLENBQVlzZixNQUFaLEVBQW9CbkIsVUFBVSxDQUFDbnJCLE9BQS9CLEVBQXdDcXNCLHFCQUF4QyxDQUFWO0lBQ0gsQ0FGSyxNQUVEO01BQ0RJLE1BQU0sSUFBSUMsS0FBVjtJQUNIO0VBQ0o7O0VBQ0QsT0FBT0QsTUFBUDtBQUNIOztBQUVELFNBQVNJLFFBQVQsQ0FBa0JDLFNBQWxCLEVBQTZCclMsTUFBN0IsRUFBcUN5USxRQUFyQyxFQUErQ2xyQixPQUEvQyxFQUF1RDtFQUNuRCxNQUFNbXJCLFVBQVUsR0FBR0YsZ0JBQWdCLENBQUNDLFFBQUQsRUFBV2xyQixPQUFYLENBQW5DO0VBQ0EsTUFBTStzQixNQUFNLEdBQUcsSUFBSVosZUFBSixDQUFvQlcsU0FBcEIsRUFBK0JyUyxNQUEvQixDQUFmO0VBQ0EsTUFBTTRSLHFCQUFxQixHQUFHZCx3QkFBd0IsQ0FBQ2hTLFNBQUQsRUFBWTRSLFVBQVUsQ0FBQ0MsRUFBdkIsQ0FBdEQ7O0VBQ0EsSUFBR2lCLHFCQUFxQixLQUFLOVMsU0FBN0IsRUFBdUM7SUFDbkN3VCxNQUFNLENBQUNWLHFCQUFQLEdBQStCQSxxQkFBL0I7RUFDSDs7RUFDRCxJQUFHbEIsVUFBVSxDQUFDbnJCLE9BQWQsRUFBc0I7SUFDbEIsS0FBSSxJQUFJc2EsR0FBUixJQUFlNlEsVUFBVSxDQUFDbnJCLE9BQTFCLEVBQWtDO01BQzlCK3NCLE1BQU0sQ0FBQ3pTLEdBQUQsQ0FBTixHQUFjNlEsVUFBVSxDQUFDbnJCLE9BQVgsQ0FBbUJzYSxHQUFuQixDQUFkO0lBQ0g7RUFDSjs7RUFDRCxNQUFNa0IsTUFBTSxHQUFHdVIsTUFBTSxDQUFDQyxLQUFQLEVBQWY7RUFDQSxPQUFPeFIsTUFBTSxDQUFDeVIsT0FBUCxFQUFQO0FBQ0g7O0FBRUQsTUFBTUMsT0FBTyxHQUFHO0VBQ1puQixRQUFRLEVBQUVBLFFBREU7RUFFWmMsUUFBUSxFQUFFQTtBQUZFLENBQWhCO0FBS0EsTUFBTU0sT0FBTyxHQUFHO0VBQ1pDLFFBQVEsRUFBRSxDQUNOLElBRE0sRUFDQSxLQURBLENBREU7RUFJWkMsYUFBYSxFQUFFLENBQ1gsSUFEVyxFQUNMLElBREssQ0FKSDtFQU9aQyxpQkFBaUIsRUFBRSxDQUNmLEtBRGUsRUFDUixLQURRLEVBQ0QsS0FEQyxFQUNNLEtBRE4sRUFDYSxLQURiLEVBQ29CLEtBRHBCLEVBQzJCLEtBRDNCLENBUFA7RUFVWkMsZ0JBQWdCLEVBQUUsQ0FDZCxRQURjLEVBQ0osUUFESSxFQUNNLFNBRE4sRUFDaUIsV0FEakIsRUFFZCxVQUZjLEVBRUYsUUFGRSxFQUVRLFVBRlIsQ0FWTjtFQWNaQyxlQUFlLEVBQUUsQ0FDYixLQURhLEVBQ04sS0FETSxFQUNDLEtBREQsRUFDUSxLQURSLEVBQ2UsS0FEZixFQUNzQixLQUR0QixFQUViLEtBRmEsRUFFTixLQUZNLEVBRUMsS0FGRCxFQUVRLEtBRlIsRUFFZSxLQUZmLEVBRXNCLEtBRnRCLENBZEw7RUFrQlpDLGNBQWMsRUFBRSxDQUNaLFNBRFksRUFDRCxVQURDLEVBQ1csT0FEWCxFQUNvQixPQURwQixFQUM2QixLQUQ3QixFQUNvQyxNQURwQyxFQUVaLE1BRlksRUFFSixRQUZJLEVBRU0sV0FGTixFQUVtQixTQUZuQixFQUU4QixVQUY5QixFQUUwQyxVQUYxQyxDQWxCSjtFQXNCWkMsZ0JBQWdCLEVBQUUsVUFBU0MsTUFBVCxFQUFnQjtJQUM5QixNQUFNQyxLQUFLLEdBQUdoa0IsSUFBSSxDQUFDNmhCLEtBQUwsQ0FBV2tDLE1BQU0sR0FBRyxFQUFwQixDQUFkO0lBQ0EsSUFBR0EsTUFBTSxHQUFHLENBQVQsSUFBY0EsTUFBTSxJQUFJLEVBQTNCLEVBQStCLE9BQVEsR0FBRUEsTUFBTyxJQUFqQjtJQUMvQixJQUFHQyxLQUFLLEtBQUssQ0FBYixFQUFnQixPQUFRLEdBQUVELE1BQU8sSUFBakIsQ0FBaEIsS0FDSyxJQUFHQyxLQUFLLEtBQUssQ0FBYixFQUFnQixPQUFRLEdBQUVELE1BQU8sSUFBakIsQ0FBaEIsS0FDQSxJQUFHQyxLQUFLLEtBQUssQ0FBYixFQUFnQixPQUFRLEdBQUVELE1BQU8sSUFBakIsQ0FBaEIsS0FDQSxPQUFRLEdBQUVBLE1BQU8sSUFBakI7RUFDUjtBQTdCVyxDQUFoQjs7QUFpQ0EsU0FBU0UsT0FBVCxDQUFpQkMsSUFBakIsRUFBdUIvdUIsTUFBdkIsRUFBK0JndkIsSUFBL0IsRUFBb0M7RUFDaEMsSUFBSUMsTUFBTSxHQUFHcFIsTUFBTSxDQUFDbVIsSUFBRCxDQUFuQjs7RUFDQSxPQUFNQyxNQUFNLENBQUNqdkIsTUFBUCxHQUFnQkEsTUFBdEIsRUFBNkI7SUFDekJpdkIsTUFBTSxHQUFHRixJQUFJLEdBQUdFLE1BQWhCO0VBQ0g7O0VBQ0QsT0FBT0EsTUFBUDtBQUNIOztBQUVELFNBQVNDLG1CQUFULENBQTZCQyxhQUE3QixFQUE0Q25yQixRQUE1QyxFQUFxRDtFQUNqRCxNQUFNb3JCLFNBQVMsR0FBR3ZrQixJQUFJLENBQUNDLEdBQUwsQ0FBU3FrQixhQUFULENBQWxCO0VBQ0EsTUFBTUUsSUFBSSxHQUFJRixhQUFhLElBQUksQ0FBakIsR0FBcUIsR0FBckIsR0FBMkIsR0FBekM7RUFDQSxNQUFNRyxJQUFJLEdBQUdSLE9BQU8sQ0FBQyxHQUFELEVBQU0sQ0FBTixFQUFTamtCLElBQUksQ0FBQzZoQixLQUFMLENBQVcwQyxTQUFTLEdBQUcsRUFBdkIsQ0FBVCxDQUFwQjtFQUNBLE1BQU1HLE1BQU0sR0FBR1QsT0FBTyxDQUFDLEdBQUQsRUFBTSxDQUFOLEVBQVNNLFNBQVMsR0FBRyxFQUFyQixDQUF0Qjs7RUFDQSxJQUFHcHJCLFFBQVEsS0FBSyxJQUFoQixFQUFxQjtJQUNqQixPQUFPcXJCLElBQUksR0FBR0MsSUFBUCxHQUFjLEdBQWQsR0FBb0JDLE1BQXBCLEdBQTZCLEtBQXBDO0VBQ0gsQ0FGRCxNQUVNLElBQUd2ckIsUUFBUSxLQUFLLEdBQWhCLEVBQW9CO0lBQ3RCLE9BQU9xckIsSUFBSSxHQUFHQyxJQUFQLEdBQWMsR0FBZCxHQUFvQkMsTUFBM0I7RUFDSCxDQUZLLE1BRUQ7SUFDRCxPQUFPRixJQUFJLEdBQUdDLElBQVAsR0FBY0MsTUFBckI7RUFDSDtBQUNKLEVBRUQ7QUFDQTtBQUNBOzs7QUFDQSxTQUFTQyxZQUFULENBQXNCL0MsSUFBdEIsRUFBMkI7RUFDdkIsTUFBTXhpQixPQUFPLEdBQUcsQ0FBQyxDQUFELEVBQUksQ0FBSixFQUFPLENBQVAsRUFBVSxDQUFWLEVBQWEsQ0FBYixFQUFnQixDQUFoQixFQUFtQixDQUFuQixFQUFzQixDQUF0QixFQUF5QixDQUF6QixFQUE0QixDQUE1QixFQUErQixDQUEvQixFQUFrQyxDQUFsQyxDQUFoQjtFQUNBLElBQUl3bEIsSUFBSSxHQUFHaEQsSUFBSSxDQUFDaUQsY0FBTCxFQUFYO0VBQ0EsSUFBSUMsS0FBSyxHQUFHbEQsSUFBSSxDQUFDbUQsV0FBTCxFQUFaO0VBQ0EsSUFBSUMsR0FBRyxHQUFHcEQsSUFBSSxDQUFDcUQsVUFBTCxFQUFWOztFQUNBLElBQUdILEtBQUssR0FBRyxDQUFYLEVBQWE7SUFDVEYsSUFBSTtFQUNQOztFQUNELE9BQU8sQ0FDSHhsQixPQUFPLENBQUMwbEIsS0FBRCxDQUFQLEdBQWlCRixJQUFqQixHQUF3QkksR0FBeEIsR0FDQWhsQixJQUFJLENBQUM2aEIsS0FBTCxDQUFXK0MsSUFBSSxHQUFHLENBQWxCLENBREEsR0FFQTVrQixJQUFJLENBQUM2aEIsS0FBTCxDQUFXK0MsSUFBSSxHQUFHLEdBQWxCLENBRkEsR0FHQTVrQixJQUFJLENBQUM2aEIsS0FBTCxDQUFXK0MsSUFBSSxHQUFHLEdBQWxCLENBSkcsSUFLSCxDQUxKO0FBTUgsRUFFRDs7O0FBQ0EsU0FBU00sWUFBVCxDQUFzQnRELElBQXRCLEVBQTJCO0VBQ3ZCLE1BQU11RCxPQUFPLEdBQUdDLFlBQVksQ0FBQ0MsT0FBYixDQUFxQnpELElBQUksQ0FBQ2lELGNBQUwsRUFBckIsQ0FBaEI7RUFDQSxNQUFNUyxNQUFNLEdBQUdILE9BQU8sQ0FBQ2xhLEtBQVIsQ0FBYyxDQUFkLEVBQWlCMlcsSUFBSSxDQUFDbUQsV0FBTCxFQUFqQixDQUFmO0VBQ0EsT0FBT25ELElBQUksQ0FBQ3FELFVBQUwsTUFDRkssTUFBTSxDQUFDbndCLE1BQVAsSUFBaUJtd0IsTUFBTSxDQUFDam5CLE1BQVAsQ0FBYyxDQUFDaVIsQ0FBRCxFQUFJQyxDQUFKLEtBQVVELENBQUMsR0FBR0MsQ0FBNUIsQ0FBbEIsSUFBcUQsQ0FEbEQsQ0FBUDtBQUdILEVBRUQ7OztBQUNBLFNBQVNnVyx1QkFBVCxDQUFpQzNELElBQWpDLEVBQXNDO0VBQ2xDLE1BQU00RCxTQUFTLEdBQUdOLFlBQVksQ0FBQ3RELElBQUQsQ0FBOUI7RUFDQSxNQUFNNkQsY0FBYyxHQUFHQyxxQkFBcUIsQ0FBQzlELElBQUksQ0FBQ2lELGNBQUwsRUFBRCxDQUE1QztFQUNBLE9BQU83a0IsSUFBSSxDQUFDNmhCLEtBQUwsQ0FBVyxDQUFDMkQsU0FBUyxJQUFJQyxjQUFjLElBQUksQ0FBdEIsQ0FBVCxHQUFvQyxDQUFyQyxJQUEwQyxDQUFyRCxDQUFQO0FBQ0gsRUFFRDs7O0FBQ0EsU0FBU0UsdUJBQVQsQ0FBaUMvRCxJQUFqQyxFQUFzQztFQUNsQyxNQUFNNEQsU0FBUyxHQUFHTixZQUFZLENBQUN0RCxJQUFELENBQTlCO0VBQ0EsTUFBTWdFLFNBQVMsR0FBR2pCLFlBQVksQ0FBQy9DLElBQUQsQ0FBOUI7RUFDQSxNQUFNNkQsY0FBYyxHQUFHQyxxQkFBcUIsQ0FBQzlELElBQUksQ0FBQ2lELGNBQUwsRUFBRCxDQUE1QztFQUNBLE1BQU1nQixVQUFVLEdBQUc3bEIsSUFBSSxDQUFDNmhCLEtBQUwsQ0FBVyxDQUFDMkQsU0FBUyxJQUFJQyxjQUFjLElBQUksQ0FBdEIsQ0FBVCxHQUFvQyxDQUFyQyxJQUEwQyxDQUFyRCxDQUFuQjtFQUNBLE9BQU9JLFVBQVUsSUFBSUQsU0FBUyxLQUFLLENBQWQsR0FBa0IsQ0FBbEIsR0FBc0IsQ0FBMUIsQ0FBVixJQUEwQ0gsY0FBYyxLQUFLLENBQW5CLEdBQXVCLENBQXZCLEdBQTJCLENBQXJFLENBQVA7QUFDSDs7QUFFRCxTQUFTSyxpQkFBVCxDQUEyQmxCLElBQTNCLEVBQWdDO0VBQzVCLE1BQU1tQixTQUFTLEdBQUduQixJQUFJLEdBQUcsQ0FBekI7RUFDQSxNQUFNdFYsQ0FBQyxHQUFHLENBQUNzVixJQUFJLEdBQ1g1a0IsSUFBSSxDQUFDNmhCLEtBQUwsQ0FBVytDLElBQUksR0FBRyxDQUFsQixDQURPLEdBRVA1a0IsSUFBSSxDQUFDNmhCLEtBQUwsQ0FBVytDLElBQUksR0FBRyxHQUFsQixDQUZPLEdBR1A1a0IsSUFBSSxDQUFDNmhCLEtBQUwsQ0FBVytDLElBQUksR0FBRyxHQUFsQixDQUhNLElBSU4sQ0FKSjtFQUtBLE1BQU1yVixDQUFDLEdBQUcsQ0FBQ3dXLFNBQVMsR0FDaEIvbEIsSUFBSSxDQUFDNmhCLEtBQUwsQ0FBV2tFLFNBQVMsR0FBRyxDQUF2QixDQURPLEdBRVAvbEIsSUFBSSxDQUFDNmhCLEtBQUwsQ0FBV2tFLFNBQVMsR0FBRyxHQUF2QixDQUZPLEdBR1AvbEIsSUFBSSxDQUFDNmhCLEtBQUwsQ0FBV2tFLFNBQVMsR0FBRyxHQUF2QixDQUhNLElBSU4sQ0FKSjtFQUtBLE9BQU96VyxDQUFDLEtBQUssQ0FBTixJQUFXQyxDQUFDLEtBQUssQ0FBakIsR0FBcUIsRUFBckIsR0FBMEIsRUFBakM7QUFDSCxFQUVEO0FBQ0E7QUFDQTs7O0FBQ0EsU0FBU3lXLGdCQUFULENBQTBCcEUsSUFBMUIsRUFBK0I7RUFDM0IsTUFBTWdELElBQUksR0FBR2hELElBQUksQ0FBQ2lELGNBQUwsRUFBYjtFQUNBLE1BQU1XLFNBQVMsR0FBR04sWUFBWSxDQUFDdEQsSUFBRCxDQUE5QjtFQUNBLE1BQU1nRSxTQUFTLEdBQUdqQixZQUFZLENBQUMvQyxJQUFELENBQTlCO0VBQ0EsTUFBTXFFLFVBQVUsR0FBR2ptQixJQUFJLENBQUM2aEIsS0FBTCxDQUFXLENBQUMsS0FBSzJELFNBQUwsSUFBa0JJLFNBQVMsSUFBSSxDQUEvQixDQUFELElBQXNDLENBQWpELENBQW5COztFQUNBLElBQUdLLFVBQVUsR0FBRyxDQUFoQixFQUFrQjtJQUNkLE9BQU9ILGlCQUFpQixDQUFDbEIsSUFBSSxHQUFHLENBQVIsQ0FBeEI7RUFDSCxDQUZELE1BRU0sSUFBR3FCLFVBQVUsR0FBR0gsaUJBQWlCLENBQUNsQixJQUFELENBQWpDLEVBQXdDO0lBQzFDLE9BQU8sQ0FBUDtFQUNILENBRkssTUFFRDtJQUNELE9BQU9xQixVQUFQO0VBQ0g7QUFDSixFQUVEOzs7QUFDQSxTQUFTQyxrQkFBVCxDQUE0QnRFLElBQTVCLEVBQWlDO0VBQzdCLE1BQU1nRCxJQUFJLEdBQUdoRCxJQUFJLENBQUNpRCxjQUFMLEVBQWI7RUFDQSxNQUFNVyxTQUFTLEdBQUdOLFlBQVksQ0FBQ3RELElBQUQsQ0FBOUI7RUFDQSxNQUFNZ0UsU0FBUyxHQUFHakIsWUFBWSxDQUFDL0MsSUFBRCxDQUE5QjtFQUNBLE1BQU1xRSxVQUFVLEdBQUdqbUIsSUFBSSxDQUFDNmhCLEtBQUwsQ0FBVyxDQUFDLEtBQUsyRCxTQUFMLElBQWtCSSxTQUFTLElBQUksQ0FBL0IsQ0FBRCxJQUFzQyxDQUFqRCxDQUFuQjs7RUFDQSxJQUFHSyxVQUFVLEdBQUcsQ0FBaEIsRUFBa0I7SUFDZCxPQUFPckIsSUFBSSxHQUFHLENBQWQ7RUFDSCxDQUZELE1BRU0sSUFBR3FCLFVBQVUsR0FBR0gsaUJBQWlCLENBQUNsQixJQUFELENBQWpDLEVBQXdDO0lBQzFDLE9BQU9BLElBQUksR0FBRyxDQUFkO0VBQ0gsQ0FGSyxNQUVEO0lBQ0QsT0FBT0EsSUFBUDtFQUNIO0FBQ0o7O0FBRUQsTUFBTTdCLFNBQU4sQ0FBZTtFQUNYb0QsV0FBVyxDQUFDL3ZCLE9BQUQsRUFBUztJQUNoQjtJQUNBLEtBQUtnd0IsS0FBTCxHQUFhaHdCLE9BQU8sQ0FBQ2d3QixLQUFyQixDQUZnQixDQUdoQjs7SUFDQSxLQUFLQyxTQUFMLEdBQWlCandCLE9BQU8sQ0FBQ2l3QixTQUF6QixDQUpnQixDQUtoQjtJQUNBOztJQUNBLEtBQUtDLFlBQUwsR0FBb0Jsd0IsT0FBTyxDQUFDa3dCLFlBQTVCLENBUGdCLENBUWhCOztJQUNBLEtBQUtuQyxJQUFMLEdBQVkvdEIsT0FBTyxDQUFDK3RCLElBQXBCLENBVGdCLENBVWhCOztJQUNBLEtBQUtvQyxPQUFMLEdBQWVud0IsT0FBTyxDQUFDbXdCLE9BQXZCLENBWGdCLENBWWhCOztJQUNBLEtBQUtDLE9BQUwsR0FBZXB3QixPQUFPLENBQUNvd0IsT0FBdkIsQ0FiZ0IsQ0FjaEI7O0lBQ0EsS0FBS0MsYUFBTCxHQUFxQnJ3QixPQUFPLENBQUNxd0IsYUFBN0IsQ0FmZ0IsQ0FnQmhCO0lBQ0E7O0lBQ0EsS0FBS0MsT0FBTCxHQUFldHdCLE9BQU8sQ0FBQ3N3QixPQUF2QixDQWxCZ0IsQ0FtQmhCOztJQUNBLEtBQUtDLGFBQUwsR0FBcUJ2d0IsT0FBTyxDQUFDZ3RCLEtBQTdCLENBcEJnQixDQXFCaEI7O0lBQ0EsS0FBS3dELGFBQUwsR0FBcUJ4d0IsT0FBTyxDQUFDZ04sS0FBN0IsQ0F0QmdCLENBdUJoQjs7SUFDQSxLQUFLeWpCLGFBQUwsR0FBcUJ6d0IsT0FBTyxDQUFDMHdCLEtBQTdCO0VBQ0g7O0VBQ2UsT0FBVEMsU0FBUyxDQUFDbHZCLElBQUQsRUFBTTtJQUNsQixLQUFJLElBQUltdkIsU0FBUixJQUFxQmpFLFNBQVMsQ0FBQzdnQixJQUEvQixFQUFvQztNQUNoQyxJQUFHOGtCLFNBQVMsQ0FBQ1osS0FBVixDQUFnQnhvQixPQUFoQixDQUF3Qi9GLElBQXhCLEtBQWlDLENBQXBDLEVBQXNDO1FBQ2xDLE9BQU9tdkIsU0FBUDtNQUNIO0lBQ0o7O0lBQ0QsT0FBT3JYLFNBQVA7RUFDSDs7RUFDRHNYLFNBQVMsR0FBRTtJQUNQLE9BQU8sS0FBUDtFQUNIOztFQUNEQyxnQkFBZ0IsR0FBRTtJQUNkLE9BQU8sS0FBS1QsYUFBWjtFQUNIOztFQUNEVSxlQUFlLEdBQUU7SUFDYixPQUFPLEtBQUtiLFlBQVo7RUFDSDs7RUFDRGMsZ0JBQWdCLENBQUM1RSxpQkFBRCxFQUFtQjtJQUMvQixJQUFHLENBQUMsS0FBSzZFLGtCQUFULEVBQTRCO01BQ3hCLEtBQUtBLGtCQUFMLEdBQTBCN0UsaUJBQWlCLENBQUMsS0FBS2tFLE9BQU4sQ0FBM0M7O01BQ0EsS0FBSSxJQUFJNUQsS0FBUixJQUFpQixLQUFLdUUsa0JBQXRCLEVBQXlDO1FBQ3JDdkUsS0FBSyxDQUFDd0UsWUFBTixHQUFxQixJQUFyQjtNQUNIO0lBQ0o7O0lBQ0QsT0FBTyxLQUFLRCxrQkFBWjtFQUNIOztFQUNERSxnQkFBZ0IsR0FBRTtJQUNkLE9BQU8sQ0FBQyxDQUFDLEtBQUtaLGFBQWQ7RUFDSDs7RUFDRGEsZ0JBQWdCLEdBQUU7SUFDZCxPQUFPLENBQUMsQ0FBQyxLQUFLWCxhQUFkO0VBQ0g7O0VBQ0R6RCxLQUFLLENBQUNELE1BQUQsRUFBUTtJQUNULE9BQU8sS0FBS3dELGFBQUwsQ0FBbUJqUixJQUFuQixDQUF3QnlOLE1BQXhCLENBQVA7RUFDSDs7RUFDRDJELEtBQUssQ0FBQzNELE1BQUQsRUFBU1ksTUFBVCxFQUFnQjtJQUNqQixLQUFLOEMsYUFBTCxDQUFtQm5SLElBQW5CLENBQXdCeU4sTUFBeEIsRUFBZ0NZLE1BQWhDO0VBQ0g7O0VBQ0QzZ0IsS0FBSyxDQUFDd2UsSUFBRCxFQUFPem9CLFFBQVAsRUFBaUIvQyxPQUFqQixFQUEwQnFzQixxQkFBMUIsRUFBZ0Q7SUFDakQsT0FBTyxLQUFLbUUsYUFBTCxDQUFtQmhGLElBQW5CLEVBQXlCem9CLFFBQXpCLEVBQW1DL0MsT0FBbkMsRUFBNENxc0IscUJBQTVDLENBQVA7RUFDSDs7RUFDRGdGLGNBQWMsQ0FBQzdqQixLQUFELEVBQU87SUFDakIsT0FDSSxDQUFDLENBQUM2ZCxNQUFNLENBQUNDLFFBQVAsQ0FBZ0IsS0FBSzZFLE9BQXJCLENBQUQsSUFBa0MzaUIsS0FBSyxJQUFJLEtBQUsyaUIsT0FBakQsTUFDQyxDQUFDOUUsTUFBTSxDQUFDQyxRQUFQLENBQWdCLEtBQUs4RSxPQUFyQixDQUFELElBQWtDNWlCLEtBQUssSUFBSSxLQUFLNGlCLE9BRGpELENBREo7RUFJSDs7RUFDRGtCLGVBQWUsR0FBRTtJQUNiLElBQUdqRyxNQUFNLENBQUNDLFFBQVAsQ0FBZ0IsS0FBSzZFLE9BQXJCLEtBQWlDOUUsTUFBTSxDQUFDQyxRQUFQLENBQWdCLEtBQUs4RSxPQUFyQixDQUFwQyxFQUFrRTtNQUM5RCxPQUFRLElBQUcsS0FBS0QsT0FBUSxLQUFJLEtBQUtDLE9BQVEsR0FBekM7SUFDSCxDQUZELE1BRU0sSUFBRy9FLE1BQU0sQ0FBQ0MsUUFBUCxDQUFnQixLQUFLNkUsT0FBckIsQ0FBSCxFQUFpQztNQUNuQyxPQUFRLElBQUcsS0FBS0EsT0FBUSxRQUF4QjtJQUNILENBRkssTUFFQSxJQUFHOUUsTUFBTSxDQUFDQyxRQUFQLENBQWdCLEtBQUs4RSxPQUFyQixDQUFILEVBQWlDO01BQ25DLE9BQVEsU0FBUSxLQUFLQSxPQUFRLEdBQTdCO0lBQ0gsQ0FGSyxNQUVEO01BQ0QsT0FBTzdXLFNBQVA7SUFDSDtFQUNKOztFQUNEcE8sUUFBUSxHQUFFO0lBQ04sT0FBTyxNQUFNLEtBQUs2a0IsS0FBTCxDQUFXLENBQVgsQ0FBYjtFQUNIOztBQXZGVTs7QUEwRmZyRCxTQUFTLENBQUNDLEtBQVYsR0FBa0IsTUFBTTJFLGNBQU4sQ0FBb0I7RUFDbEN4QixXQUFXLENBQUNodEIsUUFBRCxFQUFXNnRCLFNBQVgsRUFBcUI7SUFDNUIsS0FBSzd0QixRQUFMLEdBQWdCQSxRQUFoQjtJQUNBLEtBQUs2dEIsU0FBTCxHQUFpQkEsU0FBakI7SUFDQSxLQUFLTSxZQUFMLEdBQW9CM1gsU0FBcEI7RUFDSDs7RUFDRHNYLFNBQVMsR0FBRTtJQUNQLE9BQU8sS0FBSzl0QixRQUFMLEtBQWtCLEdBQXpCO0VBQ0g7O0VBQ0QrdEIsZ0JBQWdCLEdBQUU7SUFDZCxPQUFPLEtBQUtGLFNBQUwsQ0FBZVAsYUFBdEI7RUFDSDs7RUFDRFUsZUFBZSxHQUFFO0lBQ2IsT0FBTyxLQUFLSCxTQUFMLENBQWVWLFlBQXRCO0VBQ0g7O0VBQ0RpQixnQkFBZ0IsR0FBRTtJQUNkLE9BQU8sS0FBS1AsU0FBTCxDQUFlTyxnQkFBZixFQUFQO0VBQ0g7O0VBQ0RDLGdCQUFnQixHQUFFO0lBQ2QsT0FBTyxLQUFLUixTQUFMLENBQWVRLGdCQUFmLEVBQVA7RUFDSDs7RUFDRHBFLEtBQUssQ0FBQ0QsTUFBRCxFQUFRO0lBQ1QsT0FBTyxLQUFLNkQsU0FBTCxDQUFlTCxhQUFmLENBQTZCalIsSUFBN0IsQ0FBa0N5TixNQUFsQyxFQUEwQyxLQUFLaHFCLFFBQS9DLENBQVA7RUFDSDs7RUFDRDJ0QixLQUFLLENBQUMzRCxNQUFELEVBQVNZLE1BQVQsRUFBZ0I7SUFDakIsS0FBS2lELFNBQUwsQ0FBZUgsYUFBZixDQUE2Qm5SLElBQTdCLENBQWtDeU4sTUFBbEMsRUFBMENZLE1BQTFDO0VBQ0g7O0VBQ0QzZ0IsS0FBSyxDQUFDd2UsSUFBRCxFQUFPeHJCLE9BQVAsRUFBZ0Jxc0IscUJBQWhCLEVBQXNDO0lBQ3ZDLE1BQU03USxNQUFNLEdBQUcsS0FBS29WLFNBQUwsQ0FBZTVqQixLQUFmLENBQXFCd2UsSUFBckIsRUFBMkIsS0FBS3pvQixRQUFoQyxFQUEwQy9DLE9BQTFDLEVBQW1EcXNCLHFCQUFuRCxDQUFmOztJQUNBLElBQUcsS0FBS3RwQixRQUFMLEtBQWtCLEdBQXJCLEVBQXlCO01BQ3JCLE1BQU15dUIsWUFBWSxHQUFHNVUsTUFBTSxDQUFDcEIsTUFBRCxDQUEzQjtNQUNBLElBQUcsT0FBT0EsTUFBUCxLQUFtQixRQUF0QixFQUFnQyxPQUFPZ1csWUFBUDtNQUNoQyxNQUFNQyxLQUFLLEdBQUdELFlBQVksQ0FBQ3BTLFdBQWIsRUFBZDtNQUNBLE9BQU9xUyxLQUFLLEtBQUtELFlBQVYsR0FBeUJDLEtBQXpCLEdBQWlDRCxZQUFZLENBQUN6bkIsV0FBYixFQUF4QztJQUNILENBTEQsTUFLTSxJQUFHLEtBQUtoSCxRQUFMLEtBQWtCLEdBQWxCLElBQXlCLEtBQUs2dEIsU0FBTCxDQUFlWCxTQUEzQyxFQUFxRDtNQUN2RCxPQUFPcEMsT0FBTyxDQUFDLEdBQUQsRUFBTSxLQUFLK0MsU0FBTCxDQUFlWCxTQUFyQixFQUFnQ3pVLE1BQWhDLENBQWQ7SUFDSCxDQUZLLE1BRUEsSUFBRyxLQUFLelksUUFBTCxLQUFrQixHQUFsQixJQUF5QixLQUFLNnRCLFNBQUwsQ0FBZTdDLElBQTNDLEVBQWdEO01BQ2xELE9BQU9uUixNQUFNLENBQUNwQixNQUFELENBQU4sQ0FBZXpSLFdBQWYsRUFBUDtJQUNILENBRkssTUFFQSxJQUFHLEtBQUtoSCxRQUFMLEtBQWtCLEdBQWxCLElBQXlCLEtBQUs2dEIsU0FBTCxDQUFlWCxTQUEzQyxFQUFxRDtNQUN2RCxPQUFPclQsTUFBTSxDQUFDcEIsTUFBRCxDQUFiO0lBQ0gsQ0FGSyxNQUVBLElBQUcsS0FBS3pZLFFBQUwsS0FBa0IsR0FBbEIsSUFBeUIsQ0FBQyxLQUFLNnRCLFNBQUwsQ0FBZTdDLElBQTVDLEVBQWlEO01BQ25ELE1BQU1wakIsU0FBUyxHQUFLM0ssT0FBTyxJQUFJQSxPQUFPLENBQUMwdEIsZ0JBQXBCLElBQ2ZQLE9BQU8sQ0FBQ08sZ0JBRFo7TUFHQSxPQUFPL2lCLFNBQVMsQ0FBQzZRLE1BQUQsQ0FBaEI7SUFDSCxDQUxLLE1BS0EsSUFBRyxDQUFDLEtBQUtvVixTQUFMLENBQWU3QyxJQUFoQixJQUF3QixLQUFLNkMsU0FBTCxDQUFlWCxTQUExQyxFQUFvRDtNQUN0RCxPQUFRelUsTUFBTSxJQUFJLENBQVYsR0FDSnFTLE9BQU8sQ0FBQyxHQUFELEVBQU0sS0FBSytDLFNBQUwsQ0FBZVgsU0FBckIsRUFBZ0N6VSxNQUFoQyxDQURILEdBRUgsSUFBR3FTLE9BQU8sQ0FBQyxHQUFELEVBQU0sS0FBSytDLFNBQUwsQ0FBZVgsU0FBckIsRUFBZ0MsQ0FBQ3pVLE1BQWpDLENBQXlDLEVBRnhEO0lBSUgsQ0FMSyxNQUtEO01BQ0QsT0FBT29CLE1BQU0sQ0FBQ3BCLE1BQUQsQ0FBYjtJQUNIO0VBQ0o7O0VBQ0Q2VixjQUFjLENBQUM3akIsS0FBRCxFQUFPO0lBQ2pCLE9BQU8sS0FBS29qQixTQUFMLENBQWVTLGNBQWYsQ0FBOEI3akIsS0FBOUIsQ0FBUDtFQUNIOztFQUNEOGpCLGVBQWUsR0FBRTtJQUNiLE9BQU8sS0FBS1YsU0FBTCxDQUFlVSxlQUFmLEVBQVA7RUFDSDs7RUFDRG5tQixRQUFRLEdBQUU7SUFDTixPQUFPLE1BQU0sS0FBS3BJLFFBQVgsR0FBc0IsS0FBSzZ0QixTQUFMLENBQWVaLEtBQWYsQ0FBcUIsQ0FBckIsQ0FBN0I7RUFDSDs7QUE5RGlDLENBQXRDO0FBaUVBckQsU0FBUyxDQUFDK0UsV0FBVixHQUF3QixNQUFNQyxvQkFBTixDQUEwQjtFQUM5QzVCLFdBQVcsQ0FBQy9CLE1BQUQsRUFBUTtJQUNmLEtBQUtBLE1BQUwsR0FBY0EsTUFBTSxJQUFJLEVBQXhCO0lBQ0EsS0FBS2tELFlBQUwsR0FBb0IzWCxTQUFwQjtFQUNIOztFQUNEcVksWUFBWSxDQUFDQyxFQUFELEVBQUk7SUFDWixLQUFLN0QsTUFBTCxJQUFlNkQsRUFBZjtFQUNIOztFQUNEMW1CLFFBQVEsR0FBRTtJQUNOLE9BQU8sS0FBSzZpQixNQUFaO0VBQ0g7O0FBVjZDLENBQWxEO0FBYUFyQixTQUFTLENBQUM3Z0IsSUFBVixHQUFpQixDQUNiO0FBQ0EsSUFBSTZnQixTQUFKLENBQWM7RUFDVnFELEtBQUssRUFBRSxDQUFDLEdBQUQsQ0FERztFQUVWakMsSUFBSSxFQUFFLElBRkk7RUFHVmYsS0FBSyxFQUFFLFlBQVU7SUFDYixLQUFLd0MsU0FBTCxHQUFpQixLQUFLc0MsZ0JBQUwsQ0FBc0IsSUFBdEIsQ0FBakI7RUFDSCxDQUxTO0VBTVY5a0IsS0FBSyxFQUFFLFVBQVN3ZSxJQUFULEVBQWV6b0IsUUFBZixFQUF5Qi9DLE9BQXpCLEVBQWlDO0lBQ3BDLE1BQU1nd0IsS0FBSyxHQUFLaHdCLE9BQU8sSUFBSUEsT0FBTyxDQUFDc3RCLGlCQUFwQixJQUNYSCxPQUFPLENBQUNHLGlCQURaO0lBR0EsT0FBTzBDLEtBQUssQ0FBQ3hFLElBQUksQ0FBQ3VHLFNBQUwsS0FBbUIsQ0FBcEIsQ0FBWjtFQUNIO0FBWFMsQ0FBZCxDQUZhLEVBZWI7QUFDQSxJQUFJcEYsU0FBSixDQUFjO0VBQ1ZxRCxLQUFLLEVBQUUsQ0FBQyxHQUFELENBREc7RUFFVmpDLElBQUksRUFBRSxJQUZJO0VBR1ZmLEtBQUssRUFBRSxZQUFVO0lBQ2IsS0FBS3dDLFNBQUwsR0FBaUIsS0FBS3NDLGdCQUFMLENBQXNCLElBQXRCLENBQWpCO0VBQ0gsQ0FMUztFQU1WOWtCLEtBQUssRUFBRSxVQUFTd2UsSUFBVCxFQUFlem9CLFFBQWYsRUFBeUIvQyxPQUF6QixFQUFpQztJQUNwQyxNQUFNZ3dCLEtBQUssR0FBS2h3QixPQUFPLElBQUlBLE9BQU8sQ0FBQ3V0QixnQkFBcEIsSUFDWEosT0FBTyxDQUFDSSxnQkFEWjtJQUdBLE9BQU95QyxLQUFLLENBQUN4RSxJQUFJLENBQUN1RyxTQUFMLEtBQW1CLENBQXBCLENBQVo7RUFDSDtBQVhTLENBQWQsQ0FoQmEsRUE2QmI7QUFDQSxJQUFJcEYsU0FBSixDQUFjO0VBQ1ZxRCxLQUFLLEVBQUUsQ0FBQyxHQUFELEVBQU0sR0FBTixDQURHO0VBRVZqQyxJQUFJLEVBQUUsSUFGSTtFQUdWZixLQUFLLEVBQUUsWUFBVTtJQUNiLEtBQUswQixLQUFMLEdBQWEsSUFBSSxLQUFLc0QsY0FBTCxDQUFvQixJQUFwQixDQUFqQjtFQUNILENBTFM7RUFNVmhsQixLQUFLLEVBQUUsVUFBU3dlLElBQVQsRUFBZXpvQixRQUFmLEVBQXlCL0MsT0FBekIsRUFBaUM7SUFDcEMsTUFBTWd3QixLQUFLLEdBQUtod0IsT0FBTyxJQUFJQSxPQUFPLENBQUN3dEIsZUFBcEIsSUFDWEwsT0FBTyxDQUFDSyxlQURaO0lBR0EsT0FBT3dDLEtBQUssQ0FBQ3hFLElBQUksQ0FBQ21ELFdBQUwsS0FBcUIsRUFBdEIsQ0FBWjtFQUNIO0FBWFMsQ0FBZCxDQTlCYSxFQTJDYjtBQUNBLElBQUloQyxTQUFKLENBQWM7RUFDVnFELEtBQUssRUFBRSxDQUFDLEdBQUQsQ0FERztFQUVWakMsSUFBSSxFQUFFLElBRkk7RUFHVmYsS0FBSyxFQUFFLFlBQVU7SUFDYixLQUFLMEIsS0FBTCxHQUFhLElBQUksS0FBS3NELGNBQUwsQ0FBb0IsSUFBcEIsQ0FBakI7RUFDSCxDQUxTO0VBTVZobEIsS0FBSyxFQUFFLFVBQVN3ZSxJQUFULEVBQWV6b0IsUUFBZixFQUF5Qi9DLE9BQXpCLEVBQWlDO0lBQ3BDLE1BQU1nd0IsS0FBSyxHQUFLaHdCLE9BQU8sSUFBSUEsT0FBTyxDQUFDeXRCLGNBQXBCLElBQ1hOLE9BQU8sQ0FBQ00sY0FEWjtJQUdBLE9BQU91QyxLQUFLLENBQUN4RSxJQUFJLENBQUNtRCxXQUFMLEtBQXFCLEVBQXRCLENBQVo7RUFDSDtBQVhTLENBQWQsQ0E1Q2EsRUF5RGI7QUFDQSxJQUFJaEMsU0FBSixDQUFjO0VBQ1ZxRCxLQUFLLEVBQUUsQ0FBQyxHQUFELENBREc7RUFFVk0sT0FBTyxFQUFFO0FBRkMsQ0FBZCxDQTFEYSxFQThEYjtBQUNBLElBQUkzRCxTQUFKLENBQWM7RUFDVnFELEtBQUssRUFBRSxDQUFDLEdBQUQsQ0FERztFQUVWRSxZQUFZLEVBQUUsQ0FGSjtFQUdWRyxhQUFhLEVBQUUsSUFITDtFQUlWSyxLQUFLLEVBQUUsVUFBUy9DLE1BQVQsRUFBZ0I7SUFDbkIsS0FBS3NFLE9BQUwsR0FBZXRFLE1BQWY7RUFDSCxDQU5TO0VBT1YzZ0IsS0FBSyxFQUFFLFVBQVN3ZSxJQUFULEVBQWM7SUFDakIsT0FBTzVoQixJQUFJLENBQUM2aEIsS0FBTCxDQUFXRCxJQUFJLENBQUNpRCxjQUFMLEtBQXdCLEdBQW5DLENBQVA7RUFDSDtBQVRTLENBQWQsQ0EvRGEsRUEwRWI7QUFDQSxJQUFJOUIsU0FBSixDQUFjO0VBQ1ZxRCxLQUFLLEVBQUUsQ0FBQyxHQUFELENBREc7RUFFVkMsU0FBUyxFQUFFLENBRkQ7RUFHVkMsWUFBWSxFQUFFLENBSEo7RUFJVkMsT0FBTyxFQUFFLENBSkM7RUFLVkMsT0FBTyxFQUFFLEVBTEM7RUFNVk0sS0FBSyxFQUFFLFVBQVMvQyxNQUFULEVBQWdCO0lBQ25CLEtBQUt1RSxVQUFMLEdBQWtCdkUsTUFBbEI7RUFDSCxDQVJTO0VBU1YzZ0IsS0FBSyxFQUFFLFVBQVN3ZSxJQUFULEVBQWM7SUFDakIsT0FBT0EsSUFBSSxDQUFDcUQsVUFBTCxFQUFQO0VBQ0g7QUFYUyxDQUFkLENBM0VhLEVBd0ZiO0FBQ0EsSUFBSWxDLFNBQUosQ0FBYztFQUNWcUQsS0FBSyxFQUFFLENBQUMsR0FBRCxFQUFNLEdBQU4sQ0FERztFQUVWTSxPQUFPLEVBQUU7QUFGQyxDQUFkLENBekZhLEVBNkZiO0FBQ0EsSUFBSTNELFNBQUosQ0FBYztFQUNWcUQsS0FBSyxFQUFFLENBQUMsR0FBRCxDQURHO0VBRVZFLFlBQVksRUFBRSxDQUZKO0VBR1ZDLE9BQU8sRUFBRSxDQUhDO0VBSVZDLE9BQU8sRUFBRSxFQUpDO0VBS1ZNLEtBQUssRUFBRSxVQUFTL0MsTUFBVCxFQUFnQjtJQUNuQixLQUFLdUUsVUFBTCxHQUFrQnZFLE1BQWxCO0VBQ0gsQ0FQUztFQVFWM2dCLEtBQUssRUFBRSxVQUFTd2UsSUFBVCxFQUFlem9CLFFBQWYsRUFBd0I7SUFDM0IsSUFBRyxDQUFDQSxRQUFKLEVBQWE7TUFDVCxPQUFPOHFCLE9BQU8sQ0FBQyxHQUFELEVBQU0sQ0FBTixFQUFTckMsSUFBSSxDQUFDcUQsVUFBTCxFQUFULENBQWQ7SUFDSCxDQUZELE1BRUs7TUFDRCxPQUFPckQsSUFBSSxDQUFDcUQsVUFBTCxFQUFQO0lBQ0g7RUFDSjtBQWRTLENBQWQsQ0E5RmEsRUE4R2I7QUFDQSxJQUFJbEMsU0FBSixDQUFjO0VBQ1ZxRCxLQUFLLEVBQUUsQ0FBQyxHQUFELENBREc7RUFFVkMsU0FBUyxFQUFFLENBRkQ7RUFHVkMsWUFBWSxFQUFFLENBSEo7RUFJVkMsT0FBTyxFQUFFLENBSkM7RUFLVkMsT0FBTyxFQUFFLE1BTEM7RUFNVk0sS0FBSyxFQUFFLFVBQVMvQyxNQUFULEVBQWdCO0lBQ25CLEtBQUt3RSxXQUFMLEdBQW1CeEUsTUFBbkI7RUFDSCxDQVJTO0VBU1YzZ0IsS0FBSyxFQUFFLFVBQVN3ZSxJQUFULEVBQWM7SUFDakIsT0FBTyxPQUFPQSxJQUFJLENBQUM0RyxrQkFBTCxFQUFkO0VBQ0g7QUFYUyxDQUFkLENBL0dhLEVBNEhiO0FBQ0EsSUFBSXpGLFNBQUosQ0FBYztFQUNWcUQsS0FBSyxFQUFFLENBQUMsR0FBRCxDQURHO0VBRVZNLE9BQU8sRUFBRTtBQUZDLENBQWQsQ0E3SGEsRUFpSWI7QUFDQSxJQUFJM0QsU0FBSixDQUFjO0VBQ1ZxRCxLQUFLLEVBQUUsQ0FBQyxHQUFELENBREc7RUFFVkUsWUFBWSxFQUFFLENBRko7RUFHVlEsS0FBSyxFQUFFLFVBQVMvQyxNQUFULEVBQWdCO0lBQ25CLEtBQUswRSxlQUFMLEdBQXVCMUUsTUFBdkI7RUFDSCxDQUxTO0VBTVYzZ0IsS0FBSyxFQUFFLFVBQVN3ZSxJQUFULEVBQWM7SUFDakIsT0FBT3NFLGtCQUFrQixDQUFDdEUsSUFBRCxDQUFsQixHQUEyQixHQUFsQztFQUNIO0FBUlMsQ0FBZCxDQWxJYSxFQTRJYjtBQUNBLElBQUltQixTQUFKLENBQWM7RUFDVnFELEtBQUssRUFBRSxDQUFDLEdBQUQsQ0FERztFQUVWQyxTQUFTLEVBQUUsQ0FGRDtFQUdWQyxZQUFZLEVBQUUsQ0FISjtFQUlWRyxhQUFhLEVBQUUsSUFKTDtFQUtWSyxLQUFLLEVBQUUsVUFBUy9DLE1BQVQsRUFBZ0I7SUFDbkIsS0FBSzJFLE9BQUwsR0FBZTNFLE1BQWY7RUFDSCxDQVBTO0VBUVYzZ0IsS0FBSyxFQUFFLFVBQVN3ZSxJQUFULEVBQWM7SUFDakIsT0FBT3NFLGtCQUFrQixDQUFDdEUsSUFBRCxDQUF6QjtFQUNIO0FBVlMsQ0FBZCxDQTdJYSxFQXlKYjtBQUNBLElBQUltQixTQUFKLENBQWM7RUFDVnFELEtBQUssRUFBRSxDQUFDLEdBQUQsRUFBTSxHQUFOLENBREc7RUFFVkMsU0FBUyxFQUFFLENBRkQ7RUFHVkMsWUFBWSxFQUFFLENBSEo7RUFJVkMsT0FBTyxFQUFFLENBSkM7RUFLVkMsT0FBTyxFQUFFLEVBTEM7RUFNVk0sS0FBSyxFQUFFLFVBQVMvQyxNQUFULEVBQWdCO0lBQ25CLEtBQUtVLElBQUwsR0FBWVYsTUFBWjtFQUNILENBUlM7RUFTVjNnQixLQUFLLEVBQUUsVUFBU3dlLElBQVQsRUFBYztJQUNqQixPQUFPQSxJQUFJLENBQUMrRyxXQUFMLEVBQVA7RUFDSDtBQVhTLENBQWQsQ0ExSmEsRUF1S2I7QUFDQSxJQUFJNUYsU0FBSixDQUFjO0VBQ1ZxRCxLQUFLLEVBQUUsQ0FBQyxHQUFELEVBQU0sR0FBTixDQURHO0VBRVZDLFNBQVMsRUFBRSxDQUZEO0VBR1ZDLFlBQVksRUFBRSxDQUhKO0VBSVZDLE9BQU8sRUFBRSxDQUpDO0VBS1ZDLE9BQU8sRUFBRSxFQUxDO0VBTVZNLEtBQUssRUFBRSxVQUFTL0MsTUFBVCxFQUFnQjtJQUNuQixLQUFLVSxJQUFMLEdBQVlWLE1BQVo7RUFDSCxDQVJTO0VBU1YzZ0IsS0FBSyxFQUFFLFVBQVN3ZSxJQUFULEVBQWM7SUFDakIsT0FBUUEsSUFBSSxDQUFDK0csV0FBTCxLQUFxQixFQUF0QixJQUE2QixFQUFwQztFQUNIO0FBWFMsQ0FBZCxDQXhLYSxFQXFMYjtBQUNBLElBQUk1RixTQUFKLENBQWM7RUFDVnFELEtBQUssRUFBRSxDQUFDLEdBQUQsQ0FERztFQUVWQyxTQUFTLEVBQUUsQ0FGRDtFQUdWQyxZQUFZLEVBQUUsQ0FISjtFQUlWQyxPQUFPLEVBQUUsQ0FKQztFQUtWQyxPQUFPLEVBQUUsR0FMQztFQU1WTSxLQUFLLEVBQUUsVUFBUy9DLE1BQVQsRUFBZ0I7SUFDbkIsS0FBS3lCLFNBQUwsR0FBaUJ6QixNQUFqQjtFQUNILENBUlM7RUFTVjNnQixLQUFLLEVBQUUsVUFBU3dlLElBQVQsRUFBYztJQUNqQixPQUFPc0QsWUFBWSxDQUFDdEQsSUFBRCxDQUFuQjtFQUNIO0FBWFMsQ0FBZCxDQXRMYSxFQW1NYjtBQUNBLElBQUltQixTQUFKLENBQWM7RUFDVnFELEtBQUssRUFBRSxDQUFDLEdBQUQsQ0FERztFQUVWQyxTQUFTLEVBQUUsQ0FGRDtFQUdWQyxZQUFZLEVBQUUsQ0FISjtFQUlWQyxPQUFPLEVBQUUsQ0FKQztFQUtWQyxPQUFPLEVBQUUsR0FMQztFQU1WTSxLQUFLLEVBQUUsVUFBUy9DLE1BQVQsRUFBZ0I7SUFDbkIsS0FBSzZFLFdBQUwsR0FBbUI3RSxNQUFuQjtFQUNILENBUlM7RUFTVjNnQixLQUFLLEVBQUUsVUFBU3dlLElBQVQsRUFBYztJQUNqQixPQUFPQSxJQUFJLENBQUM0RyxrQkFBTCxFQUFQO0VBQ0g7QUFYUyxDQUFkLENBcE1hLEVBaU5iO0FBQ0EsSUFBSXpGLFNBQUosQ0FBYztFQUNWcUQsS0FBSyxFQUFFLENBQUMsR0FBRCxDQURHO0VBRVZDLFNBQVMsRUFBRSxDQUZEO0VBR1ZDLFlBQVksRUFBRSxDQUhKO0VBSVZDLE9BQU8sRUFBRSxDQUpDO0VBS1ZDLE9BQU8sRUFBRSxFQUxDO0VBTVZNLEtBQUssRUFBRSxVQUFTL0MsTUFBVCxFQUFnQjtJQUNuQixLQUFLZSxLQUFMLEdBQWFmLE1BQWI7RUFDSCxDQVJTO0VBU1YzZ0IsS0FBSyxFQUFFLFVBQVN3ZSxJQUFULEVBQWM7SUFDakIsT0FBTyxJQUFJQSxJQUFJLENBQUNtRCxXQUFMLEVBQVg7RUFDSDtBQVhTLENBQWQsQ0FsTmEsRUErTmI7QUFDQSxJQUFJaEMsU0FBSixDQUFjO0VBQ1ZxRCxLQUFLLEVBQUUsQ0FBQyxHQUFELENBREc7RUFFVkMsU0FBUyxFQUFFLENBRkQ7RUFHVkMsWUFBWSxFQUFFLENBSEo7RUFJVkMsT0FBTyxFQUFFLENBSkM7RUFLVkMsT0FBTyxFQUFFLEVBTEM7RUFNVk0sS0FBSyxFQUFFLFVBQVMvQyxNQUFULEVBQWdCO0lBQ25CLEtBQUtXLE1BQUwsR0FBY1gsTUFBZDtFQUNILENBUlM7RUFTVjNnQixLQUFLLEVBQUUsVUFBU3dlLElBQVQsRUFBYztJQUNqQixPQUFPQSxJQUFJLENBQUNnQixhQUFMLEVBQVA7RUFDSDtBQVhTLENBQWQsQ0FoT2EsRUE2T2I7QUFDQSxJQUFJRyxTQUFKLENBQWM7RUFDVnFELEtBQUssRUFBRSxDQUFDLEdBQUQsQ0FERztFQUVWakMsSUFBSSxFQUFFLElBRkk7RUFHVmYsS0FBSyxFQUFFLFlBQVU7SUFDYixLQUFLeUYsUUFBTCxHQUFnQixLQUFLQyxpQkFBTCxFQUFoQjtFQUNILENBTFM7RUFNVjFsQixLQUFLLEVBQUUsVUFBU3dlLElBQVQsRUFBZXpvQixRQUFmLEVBQXlCL0MsT0FBekIsRUFBaUM7SUFDcEMsTUFBTWtELEtBQUssR0FBR3NvQixJQUFJLENBQUMrRyxXQUFMLEtBQXFCLEVBQXJCLEdBQTBCLENBQTFCLEdBQThCLENBQTVDO0lBQ0EsT0FBTyxDQUNGdnlCLE9BQU8sSUFBSUEsT0FBTyxDQUFDcXRCLGFBQXBCLElBQXNDRixPQUFPLENBQUNFLGFBRDNDLEVBRUxucUIsS0FGSyxDQUFQO0VBR0g7QUFYUyxDQUFkLENBOU9hLEVBMlBiO0FBQ0EsSUFBSXlwQixTQUFKLENBQWM7RUFDVnFELEtBQUssRUFBRSxDQUFDLEdBQUQsQ0FERztFQUVWRSxZQUFZLEVBQUUsQ0FGSjtFQUdWbkMsSUFBSSxFQUFFLElBSEk7RUFJVmYsS0FBSyxFQUFFLFlBQVU7SUFDYixLQUFLeUYsUUFBTCxHQUFnQixLQUFLQyxpQkFBTCxFQUFoQjtFQUNILENBTlM7RUFPVjFsQixLQUFLLEVBQUUsVUFBU3dlLElBQVQsRUFBZXpvQixRQUFmLEVBQXlCL0MsT0FBekIsRUFBaUM7SUFDcEMsTUFBTWtELEtBQUssR0FBR3NvQixJQUFJLENBQUMrRyxXQUFMLEtBQXFCLEVBQXJCLEdBQTBCLENBQTFCLEdBQThCLENBQTVDO0lBQ0EsT0FBTyxDQUNGdnlCLE9BQU8sSUFBSUEsT0FBTyxDQUFDcXRCLGFBQXBCLElBQXNDRixPQUFPLENBQUNFLGFBRDNDLEVBRUxucUIsS0FGSyxFQUVFNkcsV0FGRixFQUFQO0VBR0g7QUFaUyxDQUFkLENBNVBhLEVBMFFiO0FBQ0EsSUFBSTRpQixTQUFKLENBQWM7RUFDVnFELEtBQUssRUFBRSxDQUFDLEdBQUQsQ0FERztFQUVWSyxhQUFhLEVBQUUsSUFGTDtFQUdWSyxLQUFLLEVBQUUsVUFBUy9DLE1BQVQsRUFBZ0I7SUFDbkIsS0FBS2dGLHNCQUFMLEdBQThCaEYsTUFBOUI7RUFDSCxDQUxTO0VBTVYzZ0IsS0FBSyxFQUFFLFVBQVN3ZSxJQUFULEVBQWM7SUFDakIsT0FBTzVoQixJQUFJLENBQUM2aEIsS0FBTCxDQUFXRCxJQUFJLENBQUNvSCxPQUFMLEtBQWlCLElBQTVCLENBQVA7RUFDSDtBQVJTLENBQWQsQ0EzUWEsRUFxUmI7QUFDQSxJQUFJakcsU0FBSixDQUFjO0VBQ1ZxRCxLQUFLLEVBQUUsQ0FBQyxHQUFELENBREc7RUFFVk0sT0FBTyxFQUFFO0FBRkMsQ0FBZCxDQXRSYSxFQTBSYjtBQUNBLElBQUkzRCxTQUFKLENBQWM7RUFDVnFELEtBQUssRUFBRSxDQUFDLEdBQUQsQ0FERztFQUVWTSxPQUFPLEVBQUU7QUFGQyxDQUFkLENBM1JhLEVBK1JiO0FBQ0EsSUFBSTNELFNBQUosQ0FBYztFQUNWcUQsS0FBSyxFQUFFLENBQUMsR0FBRCxDQURHO0VBRVZLLGFBQWEsRUFBRSxJQUZMO0VBR1ZLLEtBQUssRUFBRSxVQUFTL0MsTUFBVCxFQUFnQjtJQUNuQixLQUFLa0YsaUJBQUwsR0FBeUJsRixNQUF6QjtFQUNILENBTFM7RUFNVjNnQixLQUFLLEVBQUUsVUFBU3dlLElBQVQsRUFBYztJQUNqQixPQUFPNWhCLElBQUksQ0FBQzZoQixLQUFMLENBQVdELElBQUksQ0FBQ29ILE9BQUwsS0FBaUIsSUFBNUIsQ0FBUDtFQUNIO0FBUlMsQ0FBZCxDQWhTYSxFQTBTYjtBQUNBLElBQUlqRyxTQUFKLENBQWM7RUFDVnFELEtBQUssRUFBRSxDQUFDLEdBQUQsQ0FERztFQUVWQyxTQUFTLEVBQUUsQ0FGRDtFQUdWQyxZQUFZLEVBQUUsQ0FISjtFQUlWQyxPQUFPLEVBQUUsQ0FKQztFQUtWQyxPQUFPLEVBQUUsRUFMQztFQU1WTSxLQUFLLEVBQUUsVUFBUy9DLE1BQVQsRUFBZ0I7SUFDbkIsS0FBS21GLE1BQUwsR0FBY25GLE1BQWQ7RUFDSCxDQVJTO0VBU1YzZ0IsS0FBSyxFQUFFLFVBQVN3ZSxJQUFULEVBQWM7SUFDakIsT0FBTzVoQixJQUFJLENBQUNoRCxHQUFMLENBQVMsRUFBVCxFQUFhNGtCLElBQUksQ0FBQ3VILGFBQUwsRUFBYixDQUFQO0VBQ0g7QUFYUyxDQUFkLENBM1NhLEVBd1RiO0FBQ0EsSUFBSXBHLFNBQUosQ0FBYztFQUNWcUQsS0FBSyxFQUFFLENBQUMsR0FBRCxFQUFNLEdBQU4sQ0FERztFQUVWTSxPQUFPLEVBQUU7QUFGQyxDQUFkLENBelRhLEVBNlRiO0FBQ0EsSUFBSTNELFNBQUosQ0FBYztFQUNWcUQsS0FBSyxFQUFFLENBQUMsR0FBRCxDQURHO0VBRVZFLFlBQVksRUFBRSxDQUZKO0VBR1ZDLE9BQU8sRUFBRSxDQUhDO0VBSVZDLE9BQU8sRUFBRSxDQUpDO0VBS1ZNLEtBQUssRUFBRSxVQUFTL0MsTUFBVCxFQUFnQjtJQUNuQixLQUFLNkIsU0FBTCxHQUFpQjdCLE1BQU0sR0FBRyxDQUExQjtFQUNILENBUFM7RUFRVjNnQixLQUFLLEVBQUUsVUFBU3dlLElBQVQsRUFBYztJQUNqQixPQUFPK0MsWUFBWSxDQUFDL0MsSUFBRCxDQUFaLElBQXNCLENBQTdCO0VBQ0g7QUFWUyxDQUFkLENBOVRhLEVBMFViO0FBQ0EsSUFBSW1CLFNBQUosQ0FBYztFQUNWcUQsS0FBSyxFQUFFLENBQUMsR0FBRCxDQURHO0VBRVZDLFNBQVMsRUFBRSxDQUZEO0VBR1ZDLFlBQVksRUFBRSxDQUhKO0VBSVZDLE9BQU8sRUFBRSxDQUpDO0VBS1ZDLE9BQU8sRUFBRSxFQUxDO0VBTVZNLEtBQUssRUFBRSxVQUFTL0MsTUFBVCxFQUFnQjtJQUNuQixLQUFLcUYsb0JBQUwsR0FBNEJyRixNQUE1QjtFQUNILENBUlM7RUFTVjNnQixLQUFLLEVBQUUsVUFBU3dlLElBQVQsRUFBYztJQUNqQixPQUFPMkQsdUJBQXVCLENBQUMzRCxJQUFELENBQTlCO0VBQ0g7QUFYUyxDQUFkLENBM1VhLEVBd1ZiO0FBQ0EsSUFBSW1CLFNBQUosQ0FBYztFQUNWcUQsS0FBSyxFQUFFLENBQUMsR0FBRCxDQURHO0VBRVZNLE9BQU8sRUFBRTtBQUZDLENBQWQsQ0F6VmEsRUE2VmI7QUFDQSxJQUFJM0QsU0FBSixDQUFjO0VBQ1ZxRCxLQUFLLEVBQUUsQ0FBQyxHQUFELENBREc7RUFFVkMsU0FBUyxFQUFFLENBRkQ7RUFHVkMsWUFBWSxFQUFFLENBSEo7RUFJVkMsT0FBTyxFQUFFLENBSkM7RUFLVkMsT0FBTyxFQUFFLEVBTEM7RUFNVk0sS0FBSyxFQUFFLFVBQVMvQyxNQUFULEVBQWdCO0lBQ25CLEtBQUtzRixhQUFMLEdBQXFCdEYsTUFBckI7RUFDSCxDQVJTO0VBU1YzZ0IsS0FBSyxFQUFFLFVBQVN3ZSxJQUFULEVBQWM7SUFDakIsT0FBT29FLGdCQUFnQixDQUFDcEUsSUFBRCxDQUF2QjtFQUNIO0FBWFMsQ0FBZCxDQTlWYSxFQTJXYjtBQUNBLElBQUltQixTQUFKLENBQWM7RUFDVnFELEtBQUssRUFBRSxDQUFDLEdBQUQsQ0FERztFQUVWRSxZQUFZLEVBQUUsQ0FGSjtFQUdWQyxPQUFPLEVBQUUsQ0FIQztFQUlWQyxPQUFPLEVBQUUsQ0FKQztFQUtWTSxLQUFLLEVBQUUsVUFBUy9DLE1BQVQsRUFBZ0I7SUFDbkIsS0FBSzZCLFNBQUwsR0FBaUI3QixNQUFNLEdBQUcsQ0FBMUI7RUFDSCxDQVBTO0VBUVYzZ0IsS0FBSyxFQUFFLFVBQVN3ZSxJQUFULEVBQWM7SUFDakIsT0FBTytDLFlBQVksQ0FBQy9DLElBQUQsQ0FBbkI7RUFDSDtBQVZTLENBQWQsQ0E1V2EsRUF3WGI7QUFDQSxJQUFJbUIsU0FBSixDQUFjO0VBQ1ZxRCxLQUFLLEVBQUUsQ0FBQyxHQUFELENBREc7RUFFVkMsU0FBUyxFQUFFLENBRkQ7RUFHVkMsWUFBWSxFQUFFLENBSEo7RUFJVkMsT0FBTyxFQUFFLENBSkM7RUFLVkMsT0FBTyxFQUFFLEVBTEM7RUFNVk0sS0FBSyxFQUFFLFVBQVMvQyxNQUFULEVBQWdCO0lBQ25CLEtBQUt1RixvQkFBTCxHQUE0QnZGLE1BQTVCO0VBQ0gsQ0FSUztFQVNWM2dCLEtBQUssRUFBRSxVQUFTd2UsSUFBVCxFQUFjO0lBQ2pCLE9BQU8rRCx1QkFBdUIsQ0FBQy9ELElBQUQsQ0FBOUI7RUFDSDtBQVhTLENBQWQsQ0F6WGEsRUFzWWI7QUFDQSxJQUFJbUIsU0FBSixDQUFjO0VBQ1ZxRCxLQUFLLEVBQUUsQ0FBQyxHQUFELENBREc7RUFFVkMsU0FBUyxFQUFFLENBRkQ7RUFHVkMsWUFBWSxFQUFFLENBSEo7RUFJVlEsS0FBSyxFQUFFLFVBQVMvQyxNQUFULEVBQWdCO0lBQ25CLEtBQUt3RixZQUFMLEdBQW9CeEYsTUFBcEI7RUFDSCxDQU5TO0VBT1YzZ0IsS0FBSyxFQUFFLFVBQVN3ZSxJQUFULEVBQWM7SUFDakIsT0FBT0EsSUFBSSxDQUFDaUQsY0FBTCxLQUF3QixHQUEvQjtFQUNIO0FBVFMsQ0FBZCxDQXZZYSxFQWtaYjtBQUNBLElBQUk5QixTQUFKLENBQWM7RUFDVnFELEtBQUssRUFBRSxDQUFDLEdBQUQsQ0FERztFQUVWQyxTQUFTLEVBQUUsQ0FGRDtFQUdWQyxZQUFZLEVBQUUsQ0FISjtFQUlWRyxhQUFhLEVBQUUsSUFKTDtFQUtWSyxLQUFLLEVBQUUsVUFBUy9DLE1BQVQsRUFBZ0I7SUFDbkIsS0FBS2EsSUFBTCxHQUFZYixNQUFaO0VBQ0gsQ0FQUztFQVFWM2dCLEtBQUssRUFBRSxVQUFTd2UsSUFBVCxFQUFlem9CLFFBQWYsRUFBd0I7SUFDM0IsTUFBTXlyQixJQUFJLEdBQUdoRCxJQUFJLENBQUNpRCxjQUFMLEVBQWIsQ0FEMkIsQ0FFM0I7O0lBQ0EsSUFBR0QsSUFBSSxJQUFJLENBQVIsSUFBYXpyQixRQUFRLEtBQUssR0FBN0IsRUFBa0MsT0FBTyxJQUFJeXJCLElBQVgsQ0FBbEMsS0FDSyxPQUFPQSxJQUFQO0VBQ1I7QUFiUyxDQUFkLENBblphLEVBa2FiO0FBQ0EsSUFBSTdCLFNBQUosQ0FBYztFQUNWcUQsS0FBSyxFQUFFLENBQUMsR0FBRCxDQURHO0VBRVZqQyxJQUFJLEVBQUUsSUFGSTtFQUdWZixLQUFLLEVBQUUsVUFBU2pxQixRQUFULEVBQWtCO0lBQ3JCLEtBQUtzcEIscUJBQUwsR0FBNkIsS0FBSytHLG1CQUFMLENBQXlCcndCLFFBQXpCLENBQTdCO0VBQ0gsQ0FMUztFQU1WaUssS0FBSyxFQUFFLFVBQVN3ZSxJQUFULEVBQWV6b0IsUUFBZixFQUF5Qi9DLE9BQXpCLEVBQWtDcXNCLHFCQUFsQyxFQUF3RDtJQUMzRCxNQUFNM2MsTUFBTSxHQUFJMmIsTUFBTSxDQUFDQyxRQUFQLENBQWdCZSxxQkFBaEIsSUFDWkEscUJBRFksR0FDWSxDQUFDYixJQUFJLENBQUNHLGlCQUFMLEVBRDdCO0lBR0EsT0FBT3NDLG1CQUFtQixDQUFDdmUsTUFBRCxFQUFTM00sUUFBVCxDQUExQjtFQUNIO0FBWFMsQ0FBZCxDQW5hYSxFQWdiYjtBQUNBLElBQUk0cEIsU0FBSixDQUFjO0VBQ1ZxRCxLQUFLLEVBQUUsQ0FBQyxHQUFELENBREc7RUFFVkUsWUFBWSxFQUFFLENBRko7RUFHVm5DLElBQUksRUFBRSxJQUhJO0VBSVZmLEtBQUssRUFBRSxVQUFTanFCLFFBQVQsRUFBa0I7SUFDckIsTUFBTXN3QixNQUFNLEdBQUcsS0FBS0MsbUJBQUwsRUFBZjtJQUNBLE1BQU1wd0IsS0FBSyxHQUFHLEtBQUtxd0IsZ0JBQUwsQ0FBc0JGLE1BQXRCLENBQWQ7O0lBQ0EsSUFBR253QixLQUFLLEtBQUtxVyxTQUFiLEVBQXVCO01BQ25CLEtBQUs4UyxxQkFBTCxHQUE2QixLQUFLLEtBQUttSCxhQUFMLENBQW1CSCxNQUFNLENBQUNud0IsS0FBRCxDQUF6QixDQUFsQztJQUNILENBRkQsTUFFSztNQUNELEtBQUttcEIscUJBQUwsR0FBNkIsS0FBSytHLG1CQUFMLENBQXlCcndCLFFBQXpCLENBQTdCO0lBQ0g7RUFDSixDQVpTO0VBYVZpSyxLQUFLLEVBQUUsVUFBU3dlLElBQVQsRUFBZXpvQixRQUFmLEVBQXlCL0MsT0FBekIsRUFBa0Nxc0IscUJBQWxDLEVBQXdEO0lBQzNELE1BQU0zYyxNQUFNLEdBQUkyYixNQUFNLENBQUNDLFFBQVAsQ0FBZ0JlLHFCQUFoQixJQUNaQSxxQkFEWSxHQUNZLENBQUNiLElBQUksQ0FBQ0csaUJBQUwsRUFEN0I7SUFHQSxJQUFHamMsTUFBTSxLQUFLLENBQWQsRUFBaUIsT0FBTyxLQUFQLENBQWpCLEtBQ0ssT0FBT3VlLG1CQUFtQixDQUFDdmUsTUFBRCxFQUFTM00sUUFBVCxDQUExQjtFQUNSO0FBbkJTLENBQWQsQ0FqYmEsRUFzY2I7QUFDQSxJQUFJNHBCLFNBQUosQ0FBYztFQUNWcUQsS0FBSyxFQUFFLENBQUMsR0FBRCxDQURHO0VBRVZNLE9BQU8sRUFBRTtBQUZDLENBQWQsQ0F2Y2EsRUEyY2I7QUFDQSxJQUFJM0QsU0FBSixDQUFjO0VBQ1ZxRCxLQUFLLEVBQUUsQ0FBQyxHQUFELENBREc7RUFFVmpDLElBQUksRUFBRSxJQUZJO0VBR1ZmLEtBQUssRUFBRSxZQUFVO0lBQ2IsS0FBS3lHLEdBQUwsR0FBVyxLQUFLQyxZQUFMLEVBQVg7RUFDSCxDQUxTO0VBTVYxbUIsS0FBSyxFQUFFLFVBQVN3ZSxJQUFULEVBQWV6b0IsUUFBZixFQUF5Qi9DLE9BQXpCLEVBQWlDO0lBQ3BDLE1BQU1rRCxLQUFLLEdBQUdzb0IsSUFBSSxDQUFDaUQsY0FBTCxNQUF5QixDQUF6QixHQUE2QixDQUE3QixHQUFpQyxDQUEvQztJQUNBLE9BQU8sQ0FDRnp1QixPQUFPLElBQUlBLE9BQU8sQ0FBQ290QixRQUFwQixJQUFpQ0QsT0FBTyxDQUFDQyxRQUR0QyxFQUVMbHFCLEtBRkssQ0FBUDtFQUdIO0FBWFMsQ0FBZCxDQTVjYSxDQUFqQixFQTJkQTtBQUNBO0FBRUE7O0FBQ0EsU0FBU3l3QixtQkFBVCxDQUE2QkMsTUFBN0IsRUFBcUM3RyxNQUFyQyxFQUE0QztFQUN4Q2pCLEtBQUssQ0FBQ3hNLElBQU4sQ0FBVyxJQUFYO0VBQ0EsS0FBS3NVLE1BQUwsR0FBY0EsTUFBZDtFQUNBLEtBQUtuWixNQUFMLEdBQWNzUyxNQUFNLENBQUN0UyxNQUFyQjtFQUNBLEtBQUtxUyxTQUFMLEdBQWlCQyxNQUFNLENBQUNpQixNQUF4QjtFQUNBLEtBQUt0QixLQUFMLEdBQWFLLE1BQU0sQ0FBQzhHLFlBQXBCO0VBQ0EsS0FBSzN3QixLQUFMLEdBQWE2cEIsTUFBTSxDQUFDN3BCLEtBQXBCO0VBQ0EsSUFBRyxLQUFLd3BCLEtBQUwsSUFBYyxLQUFLQSxLQUFMLENBQVd3RSxZQUF6QixJQUF5QyxLQUFLaHVCLEtBQUwsS0FBZXFXLFNBQTNELEVBQXNFLEtBQUt1YSxPQUFMLEdBQ2pFLDBCQUF5QixLQUFLcEgsS0FBTSxJQUFyQyxHQUNDLG1CQUFrQixLQUFLQSxLQUFMLENBQVd3RSxZQUFhLG1CQUFrQixLQUFLaHVCLEtBQU0sSUFEeEUsR0FFQyxpQkFBZ0IsS0FBSzRwQixTQUFVLGtCQUFpQixLQUFLclMsTUFBTyxLQUY3RCxHQUdDLEdBQUUsS0FBS21aLE1BQU8sRUFKbUQsQ0FBdEUsS0FNSyxJQUFHLEtBQUtsSCxLQUFMLElBQWMsS0FBS3hwQixLQUFMLEtBQWVxVyxTQUFoQyxFQUEyQyxLQUFLdWEsT0FBTCxHQUMzQywwQkFBeUIsS0FBS3BILEtBQU0sa0JBQWlCLEtBQUt4cEIsS0FBTSxJQUFqRSxHQUNDLGlCQUFnQixLQUFLNHBCLFNBQVUsa0JBQWlCLEtBQUtyUyxNQUFPLEtBRDdELEdBRUMsR0FBRSxLQUFLbVosTUFBTyxFQUg2QixDQUEzQyxLQUtBLElBQUcsS0FBS2xILEtBQVIsRUFBZSxLQUFLb0gsT0FBTCxHQUNmLDBCQUF5QixLQUFLcEgsS0FBTSxJQUFyQyxHQUNDLGNBQWEsS0FBS2pTLE1BQU8sTUFBSyxLQUFLbVosTUFBTyxFQUYzQixDQUFmLEtBSUEsS0FBS0UsT0FBTCxHQUNBLHVCQUFzQixLQUFLclosTUFBTyxNQUFLLEtBQUttWixNQUFPLEVBRG5ELENBdEJtQyxDQXlCeEM7O0VBQ0EsSUFBRzlILEtBQUssQ0FBQ2lJLGlCQUFULEVBQTJCO0lBQ3ZCakksS0FBSyxDQUFDaUksaUJBQU4sQ0FBd0IsSUFBeEIsRUFBOEIsS0FBS2hFLFdBQW5DO0VBQ0gsQ0FGRCxNQUVLO0lBQ0QsSUFBRztNQUNDLE1BQU0sSUFBSWpFLEtBQUosRUFBTjtJQUNILENBRkQsQ0FFQyxPQUFNaHFCLEtBQU4sRUFBWTtNQUNULEtBQUtreUIsS0FBTCxHQUFhbHlCLEtBQUssQ0FBQ2t5QixLQUFuQjtJQUNIO0VBQ0o7QUFDSixFQUVEOzs7QUFDQUwsbUJBQW1CLENBQUN0VSxTQUFwQixHQUFnQ2xmLE1BQU0sQ0FBQzh6QixNQUFQLENBQWNuSSxLQUFLLENBQUN6TSxTQUFwQixDQUFoQztBQUNBc1UsbUJBQW1CLENBQUN0VSxTQUFwQixDQUE4QjVkLElBQTlCLEdBQXFDLHFCQUFyQztBQUNBa3lCLG1CQUFtQixDQUFDdFUsU0FBcEIsQ0FBOEIwUSxXQUE5QixHQUE0QzRELG1CQUE1Qzs7QUFHQSxTQUFTTyxPQUFULENBQWlCckMsRUFBakIsRUFBb0I7RUFDaEIsT0FDSUEsRUFBRSxLQUFLLEdBQVAsSUFBY0EsRUFBRSxLQUFLLEdBQXJCLElBQTRCQSxFQUFFLEtBQUssR0FBbkMsSUFBMENBLEVBQUUsS0FBSyxHQUFqRCxJQUF3REEsRUFBRSxLQUFLLEdBQS9ELElBQ0FBLEVBQUUsS0FBSyxHQURQLElBQ2NBLEVBQUUsS0FBSyxHQURyQixJQUM0QkEsRUFBRSxLQUFLLEdBRG5DLElBQzBDQSxFQUFFLEtBQUssR0FEakQsSUFDd0RBLEVBQUUsS0FBSyxHQUZuRTtBQUlILEVBRUQ7QUFDQTs7O0FBQ0EsU0FBU3NDLG9CQUFULENBQThCM0YsSUFBOUIsRUFBbUM7RUFDL0IsT0FBT0EsSUFBSSxJQUFJQSxJQUFJLElBQUksRUFBUixHQUFhLElBQWIsR0FBb0IsSUFBeEIsQ0FBWDtBQUNIOztBQUVELFNBQVM0RixxQkFBVCxDQUErQjVGLElBQS9CLEVBQXFDWSxTQUFyQyxFQUErQztFQUMzQyxNQUFNRixNQUFNLEdBQUdGLFlBQVksQ0FBQ0MsT0FBYixDQUFxQlQsSUFBckIsQ0FBZjtFQUNBLElBQUk2RixJQUFJLEdBQUcsQ0FBWDs7RUFDQSxLQUFJLElBQUl0Z0IsQ0FBQyxHQUFHLENBQVosRUFBZUEsQ0FBQyxHQUFHbWIsTUFBTSxDQUFDbndCLE1BQTFCLEVBQWtDZ1YsQ0FBQyxFQUFuQyxFQUFzQztJQUNsQyxJQUFHc2dCLElBQUksSUFBSWpGLFNBQVgsRUFBc0IsT0FBT3JiLENBQVA7SUFDdEJzZ0IsSUFBSSxJQUFJbkYsTUFBTSxDQUFDbmIsQ0FBRCxDQUFkO0VBQ0g7O0VBQ0QsT0FBTyxFQUFQO0FBQ0g7O0FBRUQsU0FBU3VnQiwwQkFBVCxDQUFvQzlGLElBQXBDLEVBQTBDWSxTQUExQyxFQUFvRDtFQUNoRCxNQUFNRixNQUFNLEdBQUdGLFlBQVksQ0FBQ0MsT0FBYixDQUFxQlQsSUFBckIsQ0FBZjtFQUNBLElBQUk2RixJQUFJLEdBQUcsQ0FBWDs7RUFDQSxLQUFJLElBQUl0Z0IsQ0FBQyxHQUFHLENBQVosRUFBZUEsQ0FBQyxHQUFHbWIsTUFBTSxDQUFDbndCLE1BQTFCLEVBQWtDZ1YsQ0FBQyxFQUFuQyxFQUFzQztJQUNsQyxJQUFHcWIsU0FBUyxHQUFHaUYsSUFBWixJQUFvQm5GLE1BQU0sQ0FBQ25iLENBQUQsQ0FBN0IsRUFBa0MsT0FBT3FiLFNBQVMsR0FBR2lGLElBQW5CO0lBQ2xDQSxJQUFJLElBQUluRixNQUFNLENBQUNuYixDQUFELENBQWQ7RUFDSDs7RUFDRCxPQUFPcWIsU0FBUyxHQUFHaUYsSUFBbkI7QUFDSCxFQUVEO0FBQ0E7OztBQUNBLFNBQVNFLHNCQUFULENBQWdDeEgsTUFBaEMsRUFBd0N1RixPQUF4QyxFQUFpRFcsYUFBakQsRUFBZ0V6RCxTQUFoRSxFQUEwRTtFQUN0RSxNQUFNSCxjQUFjLEdBQUdDLHFCQUFxQixDQUFDZ0QsT0FBRCxDQUE1QztFQUNBLE1BQU1rQyxhQUFhLEdBQUksQ0FBQyxJQUFJbkYsY0FBTCxJQUF1QixDQUF4QixJQUE4QixDQUFwRDtFQUNBLE1BQU1vRixVQUFVLEdBQUdDLFVBQVUsQ0FBQ3BDLE9BQUQsQ0FBVixHQUFzQixHQUF0QixHQUE0QixHQUEvQztFQUNBLElBQUlsRCxTQUFTLEdBQUcsSUFBSTZELGFBQUosSUFBcUJ6RCxTQUFTLElBQUksQ0FBbEMsSUFBdUNnRixhQUF2QyxHQUF1RCxDQUF2RTs7RUFDQSxJQUFHcEYsU0FBUyxHQUFHLENBQWYsRUFBaUI7SUFDYnJDLE1BQU0sQ0FBQ3lCLElBQVAsR0FBYzhELE9BQU8sR0FBRyxDQUF4QjtJQUNBbEQsU0FBUyxJQUFJcUYsVUFBYjtFQUNILENBSEQsTUFHTSxJQUFHckYsU0FBUyxHQUFHcUYsVUFBZixFQUEwQjtJQUM1QjFILE1BQU0sQ0FBQ3lCLElBQVAsR0FBYyxJQUFJOEQsT0FBbEI7SUFDQWxELFNBQVMsSUFBSXFGLFVBQWI7RUFDSCxDQUhLLE1BR0Q7SUFDRDFILE1BQU0sQ0FBQ3lCLElBQVAsR0FBYzhELE9BQWQ7RUFDSDs7RUFDRHZGLE1BQU0sQ0FBQzJCLEtBQVAsR0FBZTBGLHFCQUFxQixDQUFDckgsTUFBTSxDQUFDeUIsSUFBUixFQUFjWSxTQUFkLENBQXBDO0VBQ0FyQyxNQUFNLENBQUNtRixVQUFQLEdBQW9Cb0MsMEJBQTBCLENBQUN2SCxNQUFNLENBQUN5QixJQUFSLEVBQWNZLFNBQWQsQ0FBOUM7QUFDSDs7QUFFRCxTQUFTdUYseUJBQVQsQ0FBbUM1SCxNQUFuQyxFQUEyQ3lCLElBQTNDLEVBQWlEb0csVUFBakQsRUFBNkRwRixTQUE3RCxFQUF1RTtFQUNuRSxNQUFNSCxjQUFjLEdBQUdDLHFCQUFxQixDQUFDZCxJQUFELENBQTVDO0VBQ0EsTUFBTVksU0FBUyxHQUFHLElBQUksSUFBSXdGLFVBQVIsSUFBc0J2RixjQUFjLElBQUksQ0FBeEMsSUFBNkNHLFNBQS9EO0VBQ0F6QyxNQUFNLENBQUN5QixJQUFQLEdBQWNBLElBQWQ7RUFDQXpCLE1BQU0sQ0FBQzJCLEtBQVAsR0FBZTBGLHFCQUFxQixDQUFDNUYsSUFBRCxFQUFPWSxTQUFQLENBQXBDO0VBQ0FyQyxNQUFNLENBQUNtRixVQUFQLEdBQW9Cb0MsMEJBQTBCLENBQUM5RixJQUFELEVBQU9ZLFNBQVAsQ0FBOUM7QUFDSDs7QUFFRCxTQUFTeUYseUJBQVQsQ0FBbUM5SCxNQUFuQyxFQUEyQ3lCLElBQTNDLEVBQWlEb0csVUFBakQsRUFBNkRwRixTQUE3RCxFQUF1RTtFQUNuRSxNQUFNSCxjQUFjLEdBQUdDLHFCQUFxQixDQUFDZCxJQUFELENBQTVDO0VBQ0EsTUFBTXNHLGVBQWUsR0FBRyxJQUFJLElBQUlGLFVBQVIsSUFBc0J2RixjQUFjLElBQUksQ0FBeEMsSUFBNkNHLFNBQXJFO0VBQ0EsTUFBTUosU0FBUyxHQUFHMEYsZUFBZSxJQUM3QixDQUFDdEYsU0FBUyxLQUFLLENBQWQsR0FBa0IsQ0FBbEIsR0FBc0IsQ0FBdkIsS0FBNkJILGNBQWMsS0FBSyxDQUFuQixHQUF1QixDQUF2QixHQUEyQixDQUF4RCxDQUQ2QixDQUFqQztFQUdBdEMsTUFBTSxDQUFDeUIsSUFBUCxHQUFjQSxJQUFkO0VBQ0F6QixNQUFNLENBQUMyQixLQUFQLEdBQWUwRixxQkFBcUIsQ0FBQzVGLElBQUQsRUFBT1ksU0FBUCxDQUFwQztFQUNBckMsTUFBTSxDQUFDbUYsVUFBUCxHQUFvQm9DLDBCQUEwQixDQUFDOUYsSUFBRCxFQUFPWSxTQUFQLENBQTlDO0FBQ0g7O0FBRUQsTUFBTWpELGVBQU4sQ0FBcUI7RUFDakI0RCxXQUFXLENBQUNqRCxTQUFELEVBQVlyUyxNQUFaLEVBQW9CeVIsTUFBcEIsRUFBMkI7SUFDbEM7SUFDQSxLQUFLaHBCLEtBQUwsR0FBYSxDQUFiO0lBQ0EsS0FBSzhxQixNQUFMLEdBQWNwUixNQUFNLENBQUNrUSxTQUFELENBQXBCO0lBQ0EsS0FBS3JTLE1BQUwsR0FBY21DLE1BQU0sQ0FBQ25DLE1BQUQsQ0FBcEI7SUFDQSxLQUFLeVIsTUFBTCxHQUFjQSxNQUFNLElBQUlDLGVBQWUsQ0FBQ0MsaUJBQWhCLENBQWtDLEtBQUszUixNQUF2QyxDQUF4QjtJQUNBLEtBQUtzYSxVQUFMLEdBQWtCLENBQWxCO0lBQ0EsS0FBS2xCLFlBQUwsR0FBb0J0YSxTQUFwQixDQVBrQyxDQVFsQzs7SUFDQSxLQUFLK1QsaUJBQUwsR0FBeUJILE9BQU8sQ0FBQ0csaUJBQWpDO0lBQ0EsS0FBS0MsZ0JBQUwsR0FBd0JKLE9BQU8sQ0FBQ0ksZ0JBQWhDO0lBQ0EsS0FBS0MsZUFBTCxHQUF1QkwsT0FBTyxDQUFDSyxlQUEvQjtJQUNBLEtBQUtDLGNBQUwsR0FBc0JOLE9BQU8sQ0FBQ00sY0FBOUI7SUFDQSxLQUFLTCxRQUFMLEdBQWdCRCxPQUFPLENBQUNDLFFBQXhCO0lBQ0EsS0FBS0MsYUFBTCxHQUFxQkYsT0FBTyxDQUFDRSxhQUE3QjtJQUNBLEtBQUtLLGdCQUFMLEdBQXdCUCxPQUFPLENBQUNPLGdCQUFoQztJQUNBLEtBQUs4RixhQUFMLEdBQXFCM0gsb0JBQXJCLENBaEJrQyxDQWlCbEM7O0lBQ0EsS0FBSzRILEdBQUwsR0FBV2xhLFNBQVg7SUFDQSxLQUFLMFksT0FBTCxHQUFlMVksU0FBZjtJQUNBLEtBQUtpVixJQUFMLEdBQVlqVixTQUFaO0lBQ0EsS0FBSzRaLFlBQUwsR0FBb0I1WixTQUFwQjtJQUNBLEtBQUsrWSxPQUFMLEdBQWUvWSxTQUFmO0lBQ0EsS0FBSzhZLGVBQUwsR0FBdUI5WSxTQUF2QjtJQUNBLEtBQUttVixLQUFMLEdBQWFuVixTQUFiO0lBQ0EsS0FBSzBaLGFBQUwsR0FBcUIxWixTQUFyQjtJQUNBLEtBQUt5WixvQkFBTCxHQUE0QnpaLFNBQTVCO0lBQ0EsS0FBSzJaLG9CQUFMLEdBQTRCM1osU0FBNUI7SUFDQSxLQUFLNlYsU0FBTCxHQUFpQjdWLFNBQWpCO0lBQ0EsS0FBSzJZLFVBQUwsR0FBa0IzWSxTQUFsQjtJQUNBLEtBQUtpVyxTQUFMLEdBQWlCalcsU0FBakI7SUFDQSxLQUFLOFUsSUFBTCxHQUFZOVUsU0FBWjtJQUNBLEtBQUsrVSxNQUFMLEdBQWMvVSxTQUFkO0lBQ0EsS0FBS3VaLE1BQUwsR0FBY3ZaLFNBQWQ7SUFDQSxLQUFLaVosV0FBTCxHQUFtQmpaLFNBQW5CO0lBQ0EsS0FBSzRZLFdBQUwsR0FBbUI1WSxTQUFuQjtJQUNBLEtBQUtrWixRQUFMLEdBQWdCbFosU0FBaEI7SUFDQSxLQUFLOFMscUJBQUwsR0FBNkI5UyxTQUE3QjtJQUNBLEtBQUtzWixpQkFBTCxHQUF5QnRaLFNBQXpCO0lBQ0EsS0FBS3liLHNCQUFMLEdBQThCemIsU0FBOUI7SUFDQSxLQUFLb1osc0JBQUwsR0FBOEJwWixTQUE5QjtFQUNIOztFQUNEMGIsdUJBQXVCLENBQUN6SixJQUFELEVBQU07SUFDekIsTUFBTTliLE1BQU0sR0FBSSxLQUFLMmMscUJBQUwsS0FBK0I5UyxTQUEvQixHQUNaLENBQUNpUyxJQUFJLENBQUNHLGlCQUFMLEVBRFcsR0FFWixLQUFLVSxxQkFGVDtJQUlBLE1BQU02SSxVQUFVLEdBQUd4bEIsTUFBTSxJQUFJLENBQVYsR0FBYyxDQUFDLENBQWYsR0FBbUIsQ0FBQyxDQUF2QztJQUNBLE1BQU15ZSxTQUFTLEdBQUd2a0IsSUFBSSxDQUFDQyxHQUFMLENBQVM2RixNQUFULENBQWxCO0lBQ0EsT0FBTztNQUNIMmUsSUFBSSxFQUFFNkcsVUFBVSxHQUFHdHJCLElBQUksQ0FBQzZoQixLQUFMLENBQVcwQyxTQUFTLEdBQUcsRUFBdkIsQ0FEaEI7TUFFSEcsTUFBTSxFQUFFNEcsVUFBVSxHQUFHdHJCLElBQUksQ0FBQzZoQixLQUFMLENBQVcwQyxTQUFTLEdBQUcsRUFBdkIsQ0FGbEI7TUFHSGdILFlBQVksRUFBRXpsQjtJQUhYLENBQVA7RUFLSDs7RUFDRHVkLE9BQU8sR0FBRTtJQUNMLElBQUcsS0FBSzBGLHNCQUFMLEtBQWdDcFosU0FBbkMsRUFBNkM7TUFDekMsSUFBRyxLQUFLeWIsc0JBQUwsS0FBZ0N6YixTQUFuQyxFQUE2QztRQUN6QyxLQUFLb1osc0JBQUwsR0FBOEIsT0FBTyxLQUFLcUMsc0JBQTFDO01BQ0gsQ0FGRCxNQUVNLElBQUcsS0FBS25DLGlCQUFMLEtBQTJCdFosU0FBOUIsRUFBd0M7UUFDMUMsS0FBS29aLHNCQUFMLEdBQThCLFVBQVUsS0FBS0UsaUJBQTdDO01BQ0g7SUFDSjs7SUFDRCxJQUFHLEtBQUtGLHNCQUFMLEtBQWdDcFosU0FBbkMsRUFBNkM7TUFDekMsTUFBTWlTLElBQUksR0FBRyxJQUFJRSxJQUFKLENBQVMsS0FBS2lILHNCQUFMLEdBQThCLElBQXZDLENBQWI7TUFDQSxNQUFNampCLE1BQU0sR0FBRyxLQUFLdWxCLHVCQUFMLENBQTZCekosSUFBN0IsQ0FBZjtNQUNBQSxJQUFJLENBQUNlLGFBQUwsQ0FBbUJmLElBQUksQ0FBQ2dCLGFBQUwsS0FBdUI5YyxNQUFNLENBQUN5bEIsWUFBakQ7TUFDQSxPQUFPM0osSUFBUDtJQUNIOztJQUNELE1BQU1BLElBQUksR0FBRyxJQUFJRSxJQUFKLEVBQWI7O0lBQ0EsSUFBRyxLQUFLOEMsSUFBTCxLQUFjalYsU0FBZCxJQUEyQixLQUFLNFosWUFBTCxLQUFzQjVaLFNBQXBELEVBQThEO01BQzFELElBQUcsS0FBSzBZLE9BQUwsS0FBaUIxWSxTQUFwQixFQUE4QjtRQUMxQixLQUFLaVYsSUFBTCxHQUFZMkYsb0JBQW9CLENBQUMsS0FBS2hCLFlBQU4sQ0FBaEM7TUFDSCxDQUZELE1BRUs7UUFDRCxLQUFLM0UsSUFBTCxHQUFZLE1BQU0sS0FBS3lELE9BQVgsR0FBcUIsS0FBS2tCLFlBQXRDO01BQ0g7SUFDSixDQU5ELE1BTU0sSUFBRyxLQUFLYixPQUFMLEtBQWlCL1ksU0FBakIsSUFBOEIsS0FBSzhZLGVBQUwsS0FBeUI5WSxTQUExRCxFQUFvRTtNQUN0RSxLQUFLK1ksT0FBTCxHQUFlNkIsb0JBQW9CLENBQUMsS0FBSzlCLGVBQU4sQ0FBbkM7SUFDSCxDQUZLLE1BRUEsSUFBRyxLQUFLN0QsSUFBTCxLQUFjalYsU0FBZCxJQUEyQixLQUFLMFksT0FBTCxLQUFpQjFZLFNBQS9DLEVBQXlEO01BQzNELEtBQUtpVixJQUFMLEdBQVksTUFBTSxLQUFLeUQsT0FBdkI7SUFDSDs7SUFDRCxJQUFHLEtBQUt3QixHQUFMLElBQVksS0FBS2pGLElBQUwsS0FBY2pWLFNBQTdCLEVBQXVDO01BQ25DLEtBQUtpVixJQUFMLEdBQVksSUFBSSxLQUFLQSxJQUFyQjtJQUNIOztJQUNELElBQUcsS0FBS0gsSUFBTCxLQUFjOVUsU0FBZCxJQUEyQixLQUFLa1osUUFBTCxLQUFrQmxaLFNBQWhELEVBQTBEO01BQ3RELEtBQUs4VSxJQUFMLEdBQWEsS0FBS0EsSUFBTCxHQUFZLEVBQWIsSUFBb0IsS0FBS29FLFFBQUwsR0FBZ0IsRUFBaEIsR0FBcUIsQ0FBekMsQ0FBWjtJQUNIOztJQUNELElBQUcsS0FBS04sV0FBTCxLQUFxQjVZLFNBQXJCLElBQWtDLEtBQUtpWixXQUFMLEtBQXFCalosU0FBMUQsRUFBb0U7TUFDaEUsS0FBSzRZLFdBQUwsR0FBbUIsT0FBTyxLQUFLSyxXQUEvQjtJQUNIOztJQUNELElBQUcsS0FBS0YsT0FBTCxLQUFpQi9ZLFNBQWpCLElBQThCLEtBQUswWixhQUFMLEtBQXVCMVosU0FBckQsS0FDRSxLQUFLbVYsS0FBTCxLQUFlblYsU0FBZixJQUE0QixLQUFLMlksVUFBTCxLQUFvQjNZLFNBRGxELENBQUgsRUFFQztNQUNHZ2Isc0JBQXNCLENBQUMsSUFBRCxFQUNsQixLQUFLakMsT0FEYSxFQUNKLEtBQUtXLGFBREQsRUFDZ0IsS0FBS3pELFNBQUwsSUFBa0IsQ0FEbEMsQ0FBdEI7SUFHSCxDQU5ELE1BTU0sSUFBRyxLQUFLSixTQUFMLEtBQW1CN1YsU0FBdEIsRUFBZ0M7TUFDbEMsTUFBTWlWLElBQUksR0FBRyxLQUFLQSxJQUFMLEtBQWNqVixTQUFkLEdBQTBCLEtBQUtpVixJQUEvQixHQUFzQ2hELElBQUksQ0FBQzRKLFdBQUwsRUFBbkQ7O01BQ0EsSUFBRyxLQUFLMUcsS0FBTCxLQUFlblYsU0FBbEIsRUFBNEI7UUFDeEIsS0FBS21WLEtBQUwsR0FBYTBGLHFCQUFxQixDQUFDNUYsSUFBRCxFQUFPLEtBQUtZLFNBQVosQ0FBbEM7TUFDSDs7TUFDRCxJQUFHLEtBQUs4QyxVQUFMLEtBQW9CM1ksU0FBdkIsRUFBaUM7UUFDN0IsS0FBSzJZLFVBQUwsR0FBa0JvQywwQkFBMEIsQ0FBQzlGLElBQUQsRUFBTyxLQUFLWSxTQUFaLENBQTVDO01BQ0g7SUFDSixDQVJLLE1BUUEsSUFBRyxLQUFLNEQsb0JBQUwsS0FBOEJ6WixTQUE5QixLQUNKLEtBQUttVixLQUFMLEtBQWVuVixTQUFmLElBQTRCLEtBQUsyWSxVQUFMLEtBQW9CM1ksU0FENUMsQ0FBSCxFQUVMO01BQ0csTUFBTWlWLElBQUksR0FBRyxLQUFLQSxJQUFMLEtBQWNqVixTQUFkLEdBQTBCLEtBQUtpVixJQUEvQixHQUFzQ2hELElBQUksQ0FBQzRKLFdBQUwsRUFBbkQ7TUFDQVQseUJBQXlCLENBQUMsSUFBRCxFQUNyQm5HLElBRHFCLEVBQ2YsS0FBS3dFLG9CQURVLEVBQ1ksS0FBS3hELFNBQUwsSUFBa0IsQ0FEOUIsQ0FBekI7SUFHSCxDQVBLLE1BT0EsSUFBRyxLQUFLMEQsb0JBQUwsS0FBOEIzWixTQUE5QixLQUNKLEtBQUttVixLQUFMLEtBQWVuVixTQUFmLElBQTRCLEtBQUsyWSxVQUFMLEtBQW9CM1ksU0FENUMsQ0FBSCxFQUVMO01BQ0csTUFBTWlWLElBQUksR0FBRyxLQUFLQSxJQUFMLEtBQWNqVixTQUFkLEdBQTBCLEtBQUtpVixJQUEvQixHQUFzQ2hELElBQUksQ0FBQzRKLFdBQUwsRUFBbkQ7TUFDQVAseUJBQXlCLENBQUMsSUFBRCxFQUNyQnJHLElBRHFCLEVBQ2YsS0FBSzBFLG9CQURVLEVBQ1ksS0FBSzFELFNBQUwsSUFBa0IsQ0FEOUIsQ0FBekI7SUFHSDs7SUFDRCxJQUFHLEtBQUtoQixJQUFMLEtBQWNqVixTQUFqQixFQUEyQjtNQUN2QmlTLElBQUksQ0FBQzZKLGNBQUwsQ0FBb0IsS0FBSzdHLElBQXpCO0lBQ0g7O0lBQ0QsSUFBRyxLQUFLRSxLQUFMLEtBQWVuVixTQUFsQixFQUE0QjtNQUN4QjtNQUNBO01BQ0FpUyxJQUFJLENBQUM4SixXQUFMLENBQWlCLENBQWpCLEVBQW9CLENBQXBCO01BQ0E5SixJQUFJLENBQUM4SixXQUFMLENBQWlCLEtBQUs1RyxLQUFMLEdBQWEsQ0FBOUI7SUFDSDs7SUFDRCxJQUFHLEtBQUt3RCxVQUFMLEtBQW9CM1ksU0FBdkIsRUFBaUM7TUFDN0JpUyxJQUFJLENBQUMrSixVQUFMLENBQWdCLEtBQUtyRCxVQUFyQjtJQUNIOztJQUNELE1BQU14aUIsTUFBTSxHQUFHLEtBQUt1bEIsdUJBQUwsQ0FBNkJ6SixJQUE3QixDQUFmOztJQUNBLElBQUc5YixNQUFNLENBQUN5bEIsWUFBVixFQUF1QjtNQUNuQixLQUFLOUcsSUFBTCxHQUFZLENBQUMsS0FBS0EsSUFBTCxJQUFhLENBQWQsSUFBbUIzZSxNQUFNLENBQUMyZSxJQUF0QztNQUNBLEtBQUtDLE1BQUwsR0FBYyxDQUFDLEtBQUtBLE1BQUwsSUFBZSxDQUFoQixJQUFxQjVlLE1BQU0sQ0FBQzRlLE1BQTFDO0lBQ0g7O0lBQ0Q5QyxJQUFJLENBQUNnSyxXQUFMLENBQWlCLEtBQUtuSCxJQUFMLElBQWEsQ0FBOUI7SUFDQTdDLElBQUksQ0FBQ2UsYUFBTCxDQUFtQixLQUFLK0IsTUFBTCxJQUFlLENBQWxDO0lBQ0E5QyxJQUFJLENBQUNpSyxhQUFMLENBQW1CLEtBQUszQyxNQUFMLElBQWUsQ0FBbEM7SUFDQXRILElBQUksQ0FBQ2tLLGtCQUFMLENBQXdCLEtBQUt2RCxXQUFMLEdBQW1CLEtBQUtBLFdBQUwsR0FBbUIsSUFBdEMsR0FBNkMsQ0FBckU7SUFDQSxPQUFPM0csSUFBUDtFQUNIOztFQUNEbUssSUFBSSxHQUFFO0lBQ0YsTUFBTTVJLE1BQU0sR0FBRyxJQUFJWixlQUFKLENBQW9CLEtBQUs2QixNQUF6QixFQUFpQyxLQUFLdlQsTUFBdEMsRUFBOEMsS0FBS3lSLE1BQW5ELENBQWY7O0lBQ0EsS0FBSSxJQUFJNVIsR0FBUixJQUFlLElBQWYsRUFBb0I7TUFDaEJ5UyxNQUFNLENBQUN6UyxHQUFELENBQU4sR0FBYyxLQUFLQSxHQUFMLENBQWQ7SUFDSDs7SUFDRCxPQUFPeVMsTUFBUDtFQUNIOztFQUNENkksSUFBSSxDQUFDNzJCLE1BQUQsRUFBUzgyQixlQUFULEVBQXlCO0lBQ3pCLE1BQU05SSxNQUFNLEdBQUcsS0FBSzRJLElBQUwsRUFBZjtJQUNBNUksTUFBTSxDQUFDZ0ksVUFBUCxHQUFvQmgyQixNQUFwQjtJQUNBLE9BQU9ndUIsTUFBTSxDQUFDQyxLQUFQLENBQWE2SSxlQUFiLENBQVA7RUFDSDs7RUFDRDdJLEtBQUssQ0FBQzZJLGVBQUQsRUFBaUI7SUFDbEIsS0FBSSxJQUFJOWhCLENBQUMsR0FBRzhoQixlQUFlLElBQUksQ0FBL0IsRUFBa0M5aEIsQ0FBQyxHQUFHLEtBQUttWSxNQUFMLENBQVludEIsTUFBbEQsRUFBMERnVixDQUFDLEVBQTNELEVBQThEO01BQzFELE1BQU0yWSxLQUFLLEdBQUcsS0FBS1IsTUFBTCxDQUFZblksQ0FBWixDQUFkO01BQ0EsS0FBSzhmLFlBQUwsR0FBb0JuSCxLQUFwQjtNQUNBLElBQUcsS0FBS3hwQixLQUFMLElBQWMsS0FBSzhxQixNQUFMLENBQVlqdkIsTUFBN0IsRUFBcUMsTUFBTSxJQUFJNDBCLG1CQUFKLENBQ3ZDLG1EQUR1QyxFQUNjLElBRGQsQ0FBTjs7TUFHckMsSUFBR2pILEtBQUssWUFBWUMsU0FBUyxDQUFDK0UsV0FBOUIsRUFBMEM7UUFDdEMsS0FBS29FLGdCQUFMLENBQXNCcEosS0FBSyxDQUFDc0IsTUFBNUI7TUFDSCxDQUZELE1BRU0sSUFBR3RCLEtBQUssQ0FBQ3lFLGdCQUFOLEVBQUgsRUFBNEI7UUFDOUJ6RSxLQUFLLENBQUNNLEtBQU4sQ0FBWSxJQUFaO01BQ0gsQ0FGSyxNQUVBLElBQUdOLEtBQUssQ0FBQzBFLGdCQUFOLE1BQTRCLENBQUMxRSxLQUFLLENBQUNxQixJQUF0QyxFQUEyQztRQUM3QyxNQUFNdnBCLElBQUksR0FBRyxLQUFLMG5CLE1BQUwsQ0FBWSxJQUFJblksQ0FBaEIsQ0FBYjs7UUFDQSxJQUFJdlAsSUFBSSxZQUFZbW9CLFNBQVMsQ0FBQytFLFdBQTFCLElBQXlDd0MsT0FBTyxDQUFDMXZCLElBQUksQ0FBQ3dwQixNQUFMLENBQVksQ0FBWixDQUFELENBQWpELElBQXVFLENBQ3RFeHBCLElBQUksWUFBWW1vQixTQUFoQixJQUNBbm9CLElBQUksWUFBWW1vQixTQUFTLENBQUNDLEtBRjRDLEtBR3JFLENBQUNwb0IsSUFBSSxDQUFDdXBCLElBSFgsRUFHaUI7VUFDYixNQUFNdlMsTUFBTSxHQUFHLEtBQUt1YSxvQkFBTCxDQUEwQnJKLEtBQTFCLEVBQWlDM1ksQ0FBakMsQ0FBZjtVQUNBLElBQUd5SCxNQUFILEVBQVcsT0FBT0EsTUFBUDtRQUNkLENBTkQsTUFNSztVQUNEa1IsS0FBSyxDQUFDZ0UsS0FBTixDQUFZLElBQVosRUFBa0IsS0FBS3NGLFdBQUwsQ0FBaUJ0SixLQUFqQixDQUFsQjtRQUNIO01BQ0osQ0FYSyxNQVdEO1FBQ0QsTUFBTSxJQUFJaUgsbUJBQUosQ0FBd0Isb0JBQXhCLEVBQThDLElBQTlDLENBQU47TUFDSDtJQUNKOztJQUNELEtBQUtFLFlBQUwsR0FBb0J0YSxTQUFwQjtJQUNBLElBQUcsSUFBSSxLQUFLclcsS0FBVCxHQUFpQixLQUFLOHFCLE1BQUwsQ0FBWWp2QixNQUFoQyxFQUF3QyxNQUFNLElBQUk0MEIsbUJBQUosQ0FDekMsZ0VBQStELEtBQUszRixNQUFMLENBQVluWixLQUFaLENBQWtCLEtBQUszUixLQUF2QixDQUE4QixJQURwRCxFQUN5RCxJQUR6RCxDQUFOO0lBR3hDLE9BQU8sSUFBUDtFQUNIOztFQUNENHlCLGdCQUFnQixDQUFDcEosS0FBRCxFQUFPO0lBQ25CLEtBQUksSUFBSTNZLENBQUMsR0FBRyxDQUFaLEVBQWVBLENBQUMsR0FBRzJZLEtBQUssQ0FBQzN0QixNQUF6QixFQUFpQ2dWLENBQUMsRUFBbEMsRUFBcUM7TUFDakMsSUFBRyxLQUFLaWEsTUFBTCxDQUFZLEtBQUs5cUIsS0FBakIsTUFBNEJ3cEIsS0FBSyxDQUFDM1ksQ0FBRCxDQUFwQyxFQUF3QztRQUNwQyxNQUFNLElBQUk0ZixtQkFBSixDQUF5QixtQkFBa0JqSCxLQUFNLGdCQUFqRCxFQUFrRSxJQUFsRSxDQUFOO01BQ0g7O01BQ0QsS0FBS3hwQixLQUFMO0lBQ0g7RUFDSjs7RUFDRDZ5QixvQkFBb0IsQ0FBQ3JKLEtBQUQsRUFBUXVKLFVBQVIsRUFBbUI7SUFDbkMsSUFBRyxLQUFLbEIsVUFBTCxLQUFvQixDQUF2QixFQUF5QjtNQUNyQixNQUFNN0UsWUFBWSxHQUFHeEQsS0FBSyxDQUFDcUUsZUFBTixFQUFyQjs7TUFDQSxJQUFHYixZQUFILEVBQWdCO1FBQ1osSUFBRztVQUNDLE9BQU8sS0FBSzBGLElBQUwsQ0FBVTFGLFlBQVYsRUFBd0IrRixVQUF4QixDQUFQO1FBQ0gsQ0FGRCxDQUVDLE9BQU1uMEIsS0FBTixFQUFZO1VBQ1QsSUFBRyxFQUFFQSxLQUFLLFlBQVk2eEIsbUJBQW5CLENBQUgsRUFBNEMsTUFBTTd4QixLQUFOO1FBQy9DO01BQ0o7O01BQ0QsSUFBSW8wQixjQUFjLEdBQUczYyxTQUFyQjs7TUFDQSxLQUFJLElBQUl4RixDQUFDLEdBQUcsQ0FBWixFQUFlQSxDQUFDLEdBQUcsS0FBS2lhLE1BQUwsQ0FBWWp2QixNQUFaLEdBQXFCLEtBQUttRSxLQUE3QyxFQUFvRDZRLENBQUMsRUFBckQsRUFBd0Q7UUFDcEQsSUFBR0EsQ0FBQyxLQUFLMlksS0FBSyxDQUFDd0QsWUFBZixFQUE2Qjs7UUFDN0IsSUFBRztVQUNDLE9BQU8sS0FBSzBGLElBQUwsQ0FBVTdoQixDQUFWLEVBQWFraUIsVUFBYixDQUFQO1FBQ0gsQ0FGRCxDQUVDLE9BQU1uMEIsS0FBTixFQUFZO1VBQ1QsSUFBRyxFQUFFQSxLQUFLLFlBQVk2eEIsbUJBQW5CLENBQUgsRUFBNEMsTUFBTTd4QixLQUFOOztVQUM1QyxJQUFHQSxLQUFLLENBQUNneUIsT0FBTixHQUFnQixtREFBbkIsRUFBdUU7WUFDbkVvQyxjQUFjLEdBQUdwMEIsS0FBakI7VUFDSDtRQUNKO01BQ0o7O01BQ0QsSUFBR28wQixjQUFILEVBQWtCO1FBQ2QsTUFBTUEsY0FBTjtNQUNILENBRkQsTUFFSztRQUNELE1BQU0sSUFBSXZDLG1CQUFKLENBQXdCLG1DQUF4QixFQUE2RCxJQUE3RCxDQUFOO01BQ0g7SUFDSixDQTFCRCxNQTBCSztNQUNELE1BQU1oRyxNQUFNLEdBQUcsS0FBS3FJLFdBQUwsQ0FBaUJ0SixLQUFqQixFQUF3QixLQUFLcUksVUFBN0IsQ0FBZjtNQUNBckksS0FBSyxDQUFDZ0UsS0FBTixDQUFZLElBQVosRUFBa0IvQyxNQUFsQjtNQUNBLEtBQUtvSCxVQUFMLEdBQWtCLENBQWxCO0lBQ0g7RUFDSjs7RUFDRGlCLFdBQVcsQ0FBQ3BGLFNBQUQsRUFBWXVGLFdBQVcsR0FBR0MsUUFBMUIsRUFBbUM7SUFDMUMsTUFBTUMsUUFBUSxHQUFHLEtBQUtySSxNQUFMLENBQVksS0FBSzlxQixLQUFqQixNQUE0QixHQUE3Qzs7SUFDQSxJQUFHbXpCLFFBQVEsSUFBSSxDQUFDekYsU0FBUyxDQUFDRSxnQkFBVixFQUFoQixFQUE2QztNQUN6QyxNQUFNLElBQUk2QyxtQkFBSixDQUF3Qiw0QkFBeEIsRUFBc0QsSUFBdEQsQ0FBTjtJQUNILENBRkQsTUFFTSxJQUFHMEMsUUFBSCxFQUFZO01BQ2QsS0FBS256QixLQUFMO0lBQ0g7O0lBQ0QsTUFBTWtKLEtBQUssR0FBRyxLQUFLbEosS0FBbkI7O0lBQ0EsT0FBTSxLQUFLQSxLQUFMLEdBQWEsS0FBSzhxQixNQUFMLENBQVlqdkIsTUFBekIsSUFDRixLQUFLaXZCLE1BQUwsQ0FBWSxLQUFLOXFCLEtBQWpCLE1BQTRCLEdBRGhDLEVBRUM7TUFDRyxLQUFLQSxLQUFMO0lBQ0g7O0lBQ0QsT0FBTSxLQUFLQSxLQUFMLEdBQWEsS0FBSzhxQixNQUFMLENBQVlqdkIsTUFBekIsSUFDRixLQUFLbUUsS0FBTCxHQUFha0osS0FBYixHQUFxQitwQixXQURuQixJQUNrQ2pDLE9BQU8sQ0FBQyxLQUFLbEcsTUFBTCxDQUFZLEtBQUs5cUIsS0FBakIsQ0FBRCxDQUQvQyxFQUVDO01BQ0csS0FBS0EsS0FBTDtJQUNIOztJQUNELE1BQU1zSyxLQUFLLEdBQUcsQ0FBQyxLQUFLd2dCLE1BQUwsQ0FBWW5aLEtBQVosQ0FBa0J6SSxLQUFsQixFQUF5QixLQUFLbEosS0FBOUIsRUFBcUNvekIsSUFBckMsRUFBZjs7SUFDQSxJQUFHLENBQUNqTCxNQUFNLENBQUNrTCxTQUFQLENBQWlCL29CLEtBQWpCLENBQUosRUFBNEI7TUFDeEIsTUFBTSxJQUFJbW1CLG1CQUFKLENBQXdCLHlCQUF4QixFQUFtRCxJQUFuRCxDQUFOO0lBQ0gsQ0FGRCxNQUVNLElBQUcsQ0FBQy9DLFNBQVMsQ0FBQ1MsY0FBVixDQUF5QjdqQixLQUF6QixDQUFKLEVBQW9DO01BQ3RDLE1BQU0sSUFBSW1tQixtQkFBSixDQUF5QixXQUFVbm1CLEtBQU0sc0JBQXFCb2pCLFNBQVMsQ0FBQ1UsZUFBVixFQUE0QixHQUExRixFQUE4RixJQUE5RixDQUFOO0lBQ0g7O0lBQ0QsTUFBTTlWLE1BQU0sR0FBRzZhLFFBQVEsR0FBRyxDQUFDN29CLEtBQUosR0FBWUEsS0FBbkM7O0lBQ0EsSUFBR29qQixTQUFTLENBQUNDLFNBQVYsRUFBSCxFQUF5QjtNQUNyQixNQUFNMkYsT0FBTyxHQUFHLEtBQUs5SSxnQkFBTCxDQUFzQmxTLE1BQXRCLENBQWhCO01BQ0EsS0FBS3RZLEtBQUwsSUFBY3N6QixPQUFPLENBQUN6M0IsTUFBUixJQUFrQixLQUFLbUUsS0FBTCxHQUFha0osS0FBL0IsQ0FBZDtJQUNIOztJQUNELE9BQU9vUCxNQUFQO0VBQ0g7O0VBQ0R3VyxjQUFjLEdBQUU7SUFDWixNQUFNaEMsS0FBSyxHQUFHLEtBQUt4QyxlQUFMLENBQXFCM1ksS0FBckIsRUFBZDtJQUNBbWIsS0FBSyxDQUFDL3JCLElBQU4sQ0FBVyxHQUFHLEtBQUt3cEIsY0FBbkI7SUFDQSxNQUFNdnFCLEtBQUssR0FBRyxLQUFLcXdCLGdCQUFMLENBQXNCdkQsS0FBdEIsQ0FBZDtJQUNBLElBQUc5c0IsS0FBSyxLQUFLcVcsU0FBYixFQUF3QixNQUFNLElBQUlvYSxtQkFBSixDQUMxQiw2QkFEMEIsRUFDSyxJQURMLENBQU47SUFHeEIsT0FBT3p3QixLQUFLLEdBQUcsRUFBZjtFQUNIOztFQUNENHVCLGdCQUFnQixHQUFFO0lBQ2QsTUFBTTlCLEtBQUssR0FBRyxLQUFLMUMsaUJBQUwsQ0FBdUJ6WSxLQUF2QixFQUFkO0lBQ0FtYixLQUFLLENBQUMvckIsSUFBTixDQUFXLEdBQUcsS0FBS3NwQixnQkFBbkI7SUFDQSxNQUFNcnFCLEtBQUssR0FBRyxLQUFLcXdCLGdCQUFMLENBQXNCdkQsS0FBdEIsQ0FBZDtJQUNBLElBQUc5c0IsS0FBSyxLQUFLcVcsU0FBYixFQUF3QixNQUFNLElBQUlvYSxtQkFBSixDQUMxQiwrQkFEMEIsRUFDTyxJQURQLENBQU47SUFHeEIsT0FBT3p3QixLQUFLLEdBQUcsQ0FBZjtFQUNIOztFQUNEd3ZCLGlCQUFpQixHQUFFO0lBQ2YsTUFBTXh2QixLQUFLLEdBQUcsS0FBS3F3QixnQkFBTCxDQUFzQixLQUFLbEcsYUFBM0IsQ0FBZDtJQUNBLElBQUducUIsS0FBSyxLQUFLcVcsU0FBYixFQUF3QixNQUFNLElBQUlvYSxtQkFBSixDQUMxQix3QkFEMEIsRUFDQSxJQURBLENBQU47SUFHeEIsT0FBT3p3QixLQUFLLEdBQUcsQ0FBZjtFQUNIOztFQUNEd3dCLFlBQVksR0FBRTtJQUNWLE1BQU14d0IsS0FBSyxHQUFHLEtBQUtxd0IsZ0JBQUwsQ0FBc0IsS0FBS25HLFFBQTNCLENBQWQ7SUFDQSxJQUFHbHFCLEtBQUssS0FBS3FXLFNBQWIsRUFBd0IsTUFBTSxJQUFJb2EsbUJBQUosQ0FDMUIsMkJBRDBCLEVBQ0csSUFESCxDQUFOO0lBR3hCLE9BQU96d0IsS0FBSyxHQUFHLENBQWY7RUFDSDs7RUFDRHF3QixnQkFBZ0IsQ0FBQ3puQixJQUFELEVBQU07SUFDbEIsTUFBTTJxQixRQUFRLEdBQUczcUIsSUFBSSxDQUFDK0ksS0FBTCxFQUFqQjtJQUNBLElBQUk2aEIsYUFBYSxHQUFHRCxRQUFRLENBQUMxM0IsTUFBN0I7SUFDQSxJQUFJNDNCLFVBQVUsR0FBR3BkLFNBQWpCO0lBQ0EsSUFBSXFkLFdBQVcsR0FBRyxDQUFsQjs7SUFDQSxLQUFJLElBQUk3aUIsQ0FBQyxHQUFHLENBQVosRUFBZTJpQixhQUFhLElBQUksS0FBS3h6QixLQUFMLEdBQWE2USxDQUFiLEdBQWlCLEtBQUtpYSxNQUFMLENBQVlqdkIsTUFBN0QsRUFBcUVnVixDQUFDLEVBQXRFLEVBQXlFO01BQ3JFLE1BQU04ZCxFQUFFLEdBQUcsS0FBSzdELE1BQUwsQ0FBWSxLQUFLOXFCLEtBQUwsR0FBYTZRLENBQXpCLEVBQTRCaEssV0FBNUIsRUFBWDs7TUFDQSxLQUFJLElBQUk4c0IsQ0FBQyxHQUFHLENBQVosRUFBZUEsQ0FBQyxHQUFHSixRQUFRLENBQUMxM0IsTUFBNUIsRUFBb0M4M0IsQ0FBQyxFQUFyQyxFQUF3QztRQUNwQyxNQUFNOWEsSUFBSSxHQUFHMGEsUUFBUSxDQUFDSSxDQUFELENBQXJCO1FBQ0EsSUFBRyxDQUFDOWEsSUFBSixFQUFVOztRQUNWLElBQUdoSSxDQUFDLElBQUlnSSxJQUFJLENBQUNoZCxNQUFWLElBQW9CZ2QsSUFBSSxDQUFDaEksQ0FBRCxDQUFKLENBQVFoSyxXQUFSLE9BQTBCOG5CLEVBQWpELEVBQW9EO1VBQ2hENEUsUUFBUSxDQUFDSSxDQUFELENBQVIsR0FBYyxJQUFkO1VBQ0FILGFBQWE7UUFDaEIsQ0FIRCxNQUdNLElBQUcsSUFBSTNpQixDQUFKLEtBQVVnSSxJQUFJLENBQUNoZCxNQUFsQixFQUF5QjtVQUMzQjQzQixVQUFVLEdBQUdFLENBQWI7VUFDQUQsV0FBVyxHQUFHLElBQUk3aUIsQ0FBbEI7UUFDSDtNQUNKO0lBQ0o7O0lBQ0QsSUFBRzRpQixVQUFVLEtBQUtwZCxTQUFsQixFQUE0QjtNQUN4QixPQUFPQSxTQUFQO0lBQ0gsQ0FGRCxNQUVLO01BQ0QsS0FBS3JXLEtBQUwsSUFBYzB6QixXQUFkO01BQ0EsT0FBT0QsVUFBUDtJQUNIO0VBQ0o7O0VBQ0RyRCxtQkFBbUIsR0FBRTtJQUNqQixJQUFHLENBQUMsS0FBS3dELGdCQUFULEVBQTBCO01BQ3RCLEtBQUtBLGdCQUFMLEdBQXdCLEVBQXhCOztNQUNBLEtBQUksSUFBSXhjLEdBQVIsSUFBZSxLQUFLa1osYUFBcEIsRUFBa0M7UUFDOUIsS0FBS3NELGdCQUFMLENBQXNCN3lCLElBQXRCLENBQTJCcVcsR0FBM0I7TUFDSDtJQUNKOztJQUNELE9BQU8sS0FBS3djLGdCQUFaO0VBQ0g7O0VBQ0QxRCxtQkFBbUIsQ0FBQ3J3QixRQUFELEVBQVU7SUFDekIsTUFBTXFKLEtBQUssR0FBRyxLQUFLbEosS0FBbkI7SUFDQSxNQUFNa3JCLElBQUksR0FBRyxLQUFLSixNQUFMLENBQVksS0FBSzlxQixLQUFqQixDQUFiO0lBQ0EsTUFBTTZ6QixLQUFLLEdBQUcsQ0FBQyxLQUFLL0ksTUFBTCxDQUFZblosS0FBWixDQUFrQixLQUFLM1IsS0FBTCxHQUFhLENBQS9CLEVBQWtDLEtBQUtBLEtBQUwsR0FBYSxDQUEvQyxDQUFmO0lBQ0EsSUFBSTh6QixPQUFKOztJQUNBLElBQUcsS0FBS2hKLE1BQUwsQ0FBWSxLQUFLOXFCLEtBQUwsR0FBYSxDQUF6QixNQUFnQyxHQUFuQyxFQUF1QztNQUNuQzh6QixPQUFPLEdBQUcsQ0FBQyxLQUFLaEosTUFBTCxDQUFZblosS0FBWixDQUFrQixLQUFLM1IsS0FBTCxHQUFhLENBQS9CLEVBQWtDLEtBQUtBLEtBQUwsR0FBYSxDQUEvQyxDQUFYO01BQ0EsS0FBS0EsS0FBTCxJQUFjLENBQWQ7SUFDSCxDQUhELE1BR0s7TUFDRDh6QixPQUFPLEdBQUcsQ0FBQyxLQUFLaEosTUFBTCxDQUFZblosS0FBWixDQUFrQixLQUFLM1IsS0FBTCxHQUFhLENBQS9CLEVBQWtDLEtBQUtBLEtBQUwsR0FBYSxDQUEvQyxDQUFYO01BQ0EsS0FBS0EsS0FBTCxJQUFjLENBQWQ7SUFDSDs7SUFDRCxJQUFHLENBQUNtb0IsTUFBTSxDQUFDa0wsU0FBUCxDQUFpQlEsS0FBakIsQ0FBRCxJQUE0QixDQUFDMUwsTUFBTSxDQUFDa0wsU0FBUCxDQUFpQlMsT0FBakIsQ0FBaEMsRUFBMEQ7TUFDdEQsTUFBTSxJQUFJckQsbUJBQUosQ0FDRCw4Q0FBRCxHQUNDLElBQUcsS0FBSzNGLE1BQUwsQ0FBWW5aLEtBQVosQ0FBa0J6SSxLQUFsQixFQUF5QixLQUFLbEosS0FBOUIsQ0FBcUMsSUFGdkMsRUFFNEMsSUFGNUMsQ0FBTjtJQUlIOztJQUNELE1BQU13TSxNQUFNLEdBQUdzbkIsT0FBTyxHQUFHLEtBQUtELEtBQTlCO0lBQ0EsSUFBRzNJLElBQUksS0FBSyxHQUFULElBQWdCQSxJQUFJLEtBQUssR0FBNUIsRUFBaUMsT0FBTyxDQUFDMWUsTUFBUixDQUFqQyxLQUNLLElBQUcwZSxJQUFJLEtBQUssR0FBWixFQUFpQixPQUFPLENBQUMxZSxNQUFSLENBQWpCLEtBQ0EsTUFBTSxJQUFJaWtCLG1CQUFKLENBQXlCLGlDQUFnQ3ZGLElBQUssSUFBOUQsRUFBbUUsSUFBbkUsQ0FBTjtFQUNSOztBQTVWZ0I7O0FBK1ZyQmpDLGVBQWUsQ0FBQ0MsaUJBQWhCLEdBQW9DLFNBQVNBLGlCQUFULENBQTJCM1IsTUFBM0IsRUFBa0M7RUFDbEUsTUFBTXlSLE1BQU0sR0FBRyxFQUFmO0VBQ0EsSUFBSTBFLFNBQVMsR0FBRyxLQUFoQjtFQUNBLElBQUk3dEIsUUFBUSxHQUFHd1csU0FBZjtFQUNBLE1BQU0wZCxZQUFZLEdBQUdyYSxNQUFNLENBQUNuQyxNQUFELENBQTNCOztFQUNBLElBQUcsQ0FBQ3djLFlBQUosRUFBaUI7SUFDYixNQUFNLElBQUl0RCxtQkFBSixDQUF5QixzQkFBekIsRUFBZ0Q7TUFDbERsWixNQUFNLEVBQUV3YztJQUQwQyxDQUFoRCxDQUFOO0VBR0g7O0VBQ0QsU0FBU3JGLFlBQVQsQ0FBc0JDLEVBQXRCLEVBQXlCO0lBQ3JCLElBQUczRixNQUFNLENBQUNudEIsTUFBUCxJQUFrQm10QixNQUFNLENBQUNBLE1BQU0sQ0FBQ250QixNQUFQLEdBQWdCLENBQWpCLENBQU4sWUFBcUM0dEIsU0FBUyxDQUFDK0UsV0FBcEUsRUFBaUY7TUFDN0UsSUFBR3dDLE9BQU8sQ0FBQ3JDLEVBQUQsQ0FBUCxLQUFnQnFDLE9BQU8sQ0FBQ2hJLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDbnRCLE1BQVAsR0FBZ0IsQ0FBakIsQ0FBTixDQUEwQml2QixNQUExQixDQUFpQyxDQUFqQyxDQUFELENBQTFCLEVBQWdFO1FBQzVEOUIsTUFBTSxDQUFDQSxNQUFNLENBQUNudEIsTUFBUCxHQUFnQixDQUFqQixDQUFOLENBQTBCNnlCLFlBQTFCLENBQXVDQyxFQUF2QztNQUNILENBRkQsTUFFSztRQUNEM0YsTUFBTSxDQUFDam9CLElBQVAsQ0FBWSxJQUFJMG9CLFNBQVMsQ0FBQytFLFdBQWQsQ0FBMEJHLEVBQTFCLENBQVo7TUFDSDtJQUNKLENBTkQsTUFNSztNQUNEM0YsTUFBTSxDQUFDam9CLElBQVAsQ0FBWSxJQUFJMG9CLFNBQVMsQ0FBQytFLFdBQWQsQ0FBMEJHLEVBQTFCLENBQVo7SUFDSDtFQUNKOztFQUNELEtBQUksSUFBSUEsRUFBUixJQUFjb0YsWUFBZCxFQUEyQjtJQUN2QixJQUFHckcsU0FBUyxJQUFJaUIsRUFBRSxLQUFLLEdBQXZCLEVBQTJCO01BQ3ZCRCxZQUFZLENBQUMsR0FBRCxDQUFaO01BQ0E3dUIsUUFBUSxHQUFHLEVBQVg7TUFDQTZ0QixTQUFTLEdBQUcsS0FBWjtJQUNILENBSkQsTUFJTSxJQUFHQSxTQUFTLElBQUlpQixFQUFFLEtBQUssR0FBdkIsRUFBMkI7TUFDN0JELFlBQVksQ0FBQyxJQUFELENBQVo7TUFDQTd1QixRQUFRLEdBQUcsRUFBWDtNQUNBNnRCLFNBQVMsR0FBRyxLQUFaO0lBQ0gsQ0FKSyxNQUlBLElBQUdBLFNBQVMsSUFBSWlCLEVBQUUsS0FBSyxHQUF2QixFQUEyQjtNQUM3QkQsWUFBWSxDQUFDLElBQUQsQ0FBWjtNQUNBN3VCLFFBQVEsR0FBRyxFQUFYO01BQ0E2dEIsU0FBUyxHQUFHLEtBQVo7SUFDSCxDQUpLLE1BSUEsSUFBR0EsU0FBUyxJQUFJLENBQUM3dEIsUUFBZCxLQUNMOHVCLEVBQUUsS0FBSyxHQUFQLElBQWNBLEVBQUUsS0FBSyxHQUFyQixJQUE0QkEsRUFBRSxLQUFLLEdBQW5DLElBQTBDQSxFQUFFLEtBQUssR0FENUMsQ0FBSCxFQUVKO01BQ0U5dUIsUUFBUSxJQUFJOHVCLEVBQVo7SUFDSCxDQUpLLE1BSUEsSUFBR2pCLFNBQUgsRUFBYTtNQUNmLE1BQU1zRyxHQUFHLEdBQUd2SyxTQUFTLENBQUNnRSxTQUFWLENBQW9Ca0IsRUFBcEIsQ0FBWjtNQUNBLElBQUcsQ0FBQ3FGLEdBQUosRUFBUyxNQUFNLElBQUl2RCxtQkFBSixDQUF5Qix1QkFBc0I1d0IsUUFBUyxHQUFFOHVCLEVBQUcsSUFBN0QsRUFBa0U7UUFDN0VwWCxNQUFNLEVBQUV3YztNQURxRSxDQUFsRSxDQUFOLENBQVQsS0FHSyxJQUFHQyxHQUFHLENBQUM1RyxPQUFQLEVBQWdCcEUsTUFBTSxDQUFDam9CLElBQVAsQ0FDakIsR0FBR2l6QixHQUFHLENBQUNsRyxnQkFBSixDQUFxQjdFLGVBQWUsQ0FBQ0MsaUJBQXJDLENBRGMsRUFBaEIsS0FHQUYsTUFBTSxDQUFDam9CLElBQVAsQ0FDRCxJQUFJMG9CLFNBQVMsQ0FBQ0MsS0FBZCxDQUFvQjdwQixRQUFwQixFQUE4Qm0wQixHQUE5QixDQURDO01BR0xuMEIsUUFBUSxHQUFHLEVBQVg7TUFDQTZ0QixTQUFTLEdBQUcsS0FBWjtJQUNILENBYkssTUFhQSxJQUFHaUIsRUFBRSxLQUFLLEdBQVYsRUFBYztNQUNoQjl1QixRQUFRLEdBQUcsRUFBWDtNQUNBNnRCLFNBQVMsR0FBRyxJQUFaO0lBQ0gsQ0FISyxNQUdEO01BQ0RnQixZQUFZLENBQUNDLEVBQUQsQ0FBWjtJQUNIO0VBQ0o7O0VBQ0QsSUFBR2pCLFNBQUgsRUFBYyxNQUFNLElBQUkrQyxtQkFBSixDQUNoQiwrREFEZ0IsRUFDaUQ7SUFDN0RsWixNQUFNLEVBQUV3YztFQURxRCxDQURqRCxDQUFOOztFQUtkLElBQUcvSyxNQUFNLENBQUNudEIsTUFBUCxJQUFpQm10QixNQUFNLENBQUNBLE1BQU0sQ0FBQ250QixNQUFQLEdBQWdCLENBQWpCLENBQU4sQ0FBMEJpdkIsTUFBMUIsS0FBcUMsR0FBekQsRUFBNkQ7SUFDekQ5QixNQUFNLENBQUNpTCxZQUFQLEdBQXNCLElBQXRCO0VBQ0g7O0VBQ0QsT0FBT2pMLE1BQVA7QUFDSCxDQW5FRDs7QUFxRUEsU0FBU3dJLFVBQVQsQ0FBb0JsRyxJQUFwQixFQUF5QjtFQUNyQixPQUFPQSxJQUFJLEdBQUcsQ0FBUCxLQUFhLENBQWIsS0FBbUJBLElBQUksR0FBRyxHQUFQLEtBQWUsQ0FBZixJQUFvQkEsSUFBSSxHQUFHLEdBQVAsS0FBZSxDQUF0RCxDQUFQO0FBQ0g7O0FBR0QsTUFBTVEsWUFBWSxHQUFHO0VBQ2pCb0ksTUFBTSxFQUFFLENBQUMsRUFBRCxFQUFLLEVBQUwsRUFBUyxFQUFULEVBQWEsRUFBYixFQUFpQixFQUFqQixFQUFxQixFQUFyQixFQUF5QixFQUF6QixFQUE2QixFQUE3QixFQUFpQyxFQUFqQyxFQUFxQyxFQUFyQyxFQUF5QyxFQUF6QyxFQUE2QyxFQUE3QyxDQURTO0VBRWpCQyxJQUFJLEVBQUUsQ0FBQyxFQUFELEVBQUssRUFBTCxFQUFTLEVBQVQsRUFBYSxFQUFiLEVBQWlCLEVBQWpCLEVBQXFCLEVBQXJCLEVBQXlCLEVBQXpCLEVBQTZCLEVBQTdCLEVBQWlDLEVBQWpDLEVBQXFDLEVBQXJDLEVBQXlDLEVBQXpDLEVBQTZDLEVBQTdDLENBRlc7RUFHakJwSSxPQUFPLEVBQUUsVUFBU1QsSUFBVCxFQUFjO0lBQ25CLE9BQU9rRyxVQUFVLENBQUNsRyxJQUFELENBQVYsR0FBbUJRLFlBQVksQ0FBQ3FJLElBQWhDLEdBQXVDckksWUFBWSxDQUFDb0ksTUFBM0Q7RUFDSDtBQUxnQixDQUFyQixFQVFBOztBQUNBLFNBQVM5SCxxQkFBVCxDQUErQmQsSUFBL0IsRUFBb0M7RUFDaEMsTUFBTXpvQixDQUFDLEdBQUd5b0IsSUFBSSxHQUFHLENBQWpCO0VBQ0EsT0FBTyxDQUFDQSxJQUFJLEdBQUcsR0FBUCxHQUNKNWtCLElBQUksQ0FBQzZoQixLQUFMLENBQVcxbEIsQ0FBQyxHQUFHLENBQWYsQ0FESSxHQUNnQjZELElBQUksQ0FBQzZoQixLQUFMLENBQVcxbEIsQ0FBQyxHQUFHLEdBQWYsQ0FEaEIsR0FDc0M2RCxJQUFJLENBQUM2aEIsS0FBTCxDQUFXMWxCLENBQUMsR0FBRyxHQUFmLENBRHZDLElBRUgsQ0FGSjtBQUdIOztBQUVELE1BQU04bEIsb0JBQW9CLEdBQUc7RUFDekIsUUFBUSxDQUFDLElBRGdCO0VBRXpCLFFBQVEsQ0FBQyxHQUZnQjtFQUd6QixPQUFPLENBQUMsQ0FIaUI7RUFJekIsU0FBUyxDQUFDLElBSmU7RUFLekIsT0FBTyxDQUFDLENBTGlCO0VBTXpCLFFBQVEsQ0FBQyxFQU5nQjtFQU96QixRQUFRLENBQUMsRUFQZ0I7RUFRekIsT0FBTyxDQUFDLEdBUmlCO0VBU3pCLFFBQVEsQ0FBQyxDQVRnQjtFQVV6QixRQUFRLENBQUMsQ0FWZ0I7RUFXekIsUUFBUSxDQUFDLENBWGdCO0VBWXpCLE9BQU8sQ0FBQyxDQVppQjtFQWF6QixPQUFPLENBQUMsQ0FiaUI7RUFjekIsT0FBTyxDQUFDLENBZGlCO0VBZXpCLE9BQU8sQ0FBQyxDQWZpQjtFQWdCekIsT0FBTyxDQUFDLENBaEJpQjtFQWlCekIsUUFBUSxDQUFDLENBakJnQjtFQWtCekIsU0FBUyxDQWxCZ0I7RUFtQnpCLFFBQVEsQ0FBQyxDQW5CZ0I7RUFvQnpCLE9BQU8sQ0FBQyxDQXBCaUI7RUFxQnpCLE9BQU8sQ0FBQyxDQXJCaUI7RUFzQnpCLFFBQVEsQ0FBQyxDQXRCZ0I7RUF1QnpCLE9BQU8sQ0FBQyxFQXZCaUI7RUF3QnpCLE9BQU8sQ0FBQyxDQXhCaUI7RUF5QnpCLFFBQVEsQ0FBQyxDQXpCZ0I7RUEwQnpCLE9BQU8sQ0FBQyxDQTFCaUI7RUEyQnpCLE9BQU8sQ0FBQyxDQTNCaUI7RUE0QnpCLE9BQU8sQ0FBQyxFQTVCaUI7RUE2QnpCLE9BQU8sQ0FBQyxDQTdCaUI7RUE4QnpCLE9BQU8sQ0FBQyxDQTlCaUI7RUErQnpCLE9BQU8sQ0FBQyxDQS9CaUI7RUFnQ3pCLE9BQU8sQ0FBQyxHQWhDaUI7RUFpQ3pCLE9BQU8sQ0FBQyxDQWpDaUI7RUFrQ3pCLE9BQU8sQ0FBQyxDQWxDaUI7RUFtQ3pCLFFBQVEsQ0FBQyxDQW5DZ0I7RUFvQ3pCLE9BQU8sQ0FBQyxDQXBDaUI7RUFxQ3pCLFNBQVMsQ0FBQyxLQXJDZTtFQXNDekIsU0FBUyxDQUFDLEtBdENlO0VBdUN6QixRQUFRLENBQUMsQ0F2Q2dCO0VBd0N6QixTQUFTLENBQUMsQ0F4Q2U7RUF5Q3pCLFFBQVEsQ0FBQyxFQXpDZ0I7RUEwQ3pCLFFBQVEsQ0FBQyxFQTFDZ0I7RUEyQ3pCLFFBQVEsQ0FBQyxDQTNDZ0I7RUE0Q3pCLE9BQU8sQ0FBQyxDQTVDaUI7RUE2Q3pCLE9BQU8sQ0FBQyxFQTdDaUI7RUE4Q3pCLFFBQVEsQ0FBQyxDQTlDZ0I7RUErQ3pCLE9BQU8sQ0FBQyxDQS9DaUI7RUFnRHpCLFFBQVEsQ0FBQyxDQWhEZ0I7RUFpRHpCLE9BQU8sQ0FBQyxDQWpEaUI7RUFrRHpCLE9BQU8sQ0FBQyxDQWxEaUI7RUFtRHpCLE9BQU8sQ0FBQyxDQW5EaUI7RUFvRHpCLE9BQU8sQ0FBQyxDQXBEaUI7RUFxRHpCLE1BQU0sQ0FBQyxDQXJEa0I7RUFzRHpCLE9BQU8sQ0FBQyxDQXREaUI7RUF1RHpCLFFBQVEsQ0FBQyxJQXZEZ0I7RUF3RHpCLE9BQU8sQ0FBQyxDQXhEaUI7RUF5RHpCLFFBQVEsQ0FBQyxDQXpEZ0I7RUEwRHpCLFFBQVEsQ0FBQyxFQTFEZ0I7RUEyRHpCLE9BQU8sQ0FBQyxDQTNEaUI7RUE0RHpCLFNBQVMsQ0FBQyxDQTVEZTtFQTZEekIsUUFBUSxDQUFDLENBN0RnQjtFQThEekIsT0FBTyxDQUFDLENBOURpQjtFQStEekIsT0FBTyxDQUFDLENBL0RpQjtFQWdFekIsT0FBTyxDQUFDLENBaEVpQjtFQWlFekIsT0FBTyxDQUFDLENBakVpQjtFQWtFekIsUUFBUSxDQUFDLENBbEVnQjtFQW1FekIsT0FBTyxDQUFDLENBbkVpQjtFQW9FekIsUUFBUSxDQXBFaUI7RUFxRXpCLE9BQU8sQ0FBQyxDQXJFaUI7RUFzRXpCLE9BQU8sQ0FBQyxDQXRFaUI7RUF1RXpCLE9BQU8sQ0FBQyxDQXZFaUI7RUF3RXpCLE9BQU8sQ0FBQyxDQXhFaUI7RUF5RXpCLE9BQU8sQ0FBQyxFQXpFaUI7RUEwRXpCLFFBQVEsQ0FBQyxDQTFFZ0I7RUEyRXpCLE9BQU8sQ0FBQyxDQTNFaUI7RUE0RXpCLE9BQU8sQ0FBQyxDQTVFaUI7RUE2RXpCLFFBQVEsQ0FBQyxDQTdFZ0I7RUE4RXpCLFFBQVEsQ0FBQyxDQTlFZ0I7RUErRXpCLE9BQU8sQ0FBQyxDQS9FaUI7RUFnRnpCLE9BQU8sQ0FBQyxDQWhGaUI7RUFpRnpCLFFBQVEsQ0FBQyxFQWpGZ0I7RUFrRnpCLE9BQU8sQ0FBQyxDQWxGaUI7RUFtRnpCLE9BQU8sQ0FuRmtCO0VBb0Z6QixPQUFPLENBQUMsQ0FwRmlCO0VBcUZ6QixPQUFPLENBQUMsQ0FyRmlCO0VBc0Z6QixPQUFPLENBQUMsQ0F0RmlCO0VBdUZ6QixPQUFPLENBQUMsQ0F2RmlCO0VBd0Z6QixRQUFRLENBQUMsQ0F4RmdCO0VBeUZ6QixPQUFPLENBQUMsRUF6RmlCO0VBMEZ6QixPQUFPLENBQUMsQ0ExRmlCO0VBMkZ6QixPQUFPLENBQUMsQ0EzRmlCO0VBNEZ6QixTQUFTLENBQUMsQ0E1RmU7RUE2RnpCLFFBQVEsQ0FBQyxDQTdGZ0I7RUE4RnpCLE9BQU8sQ0FBQyxDQTlGaUI7RUErRnpCLFFBQVEsQ0FBQyxFQS9GZ0I7RUFnR3pCLE9BQU8sQ0FBQyxDQWhHaUI7RUFpR3pCLE9BQU8sQ0FBQyxDQWpHaUI7RUFrR3pCLFFBQVEsQ0FBQyxHQWxHZ0I7RUFtR3pCLFFBQVEsQ0FBQyxDQW5HZ0I7RUFvR3pCLFFBQVEsQ0FBQyxHQXBHZ0I7RUFxR3pCLE9BQU8sQ0FBQyxHQXJHaUI7RUFzR3pCLE9BQU8sQ0FBQyxDQXRHaUI7RUF1R3pCLE9BQU8sQ0FBQyxDQXZHaUI7RUF3R3pCLE9BQU8sQ0FBQyxDQXhHaUI7RUF5R3pCLE9BQU8sQ0FBQyxDQXpHaUI7RUEwR3pCLFFBQVEsQ0FBQyxFQTFHZ0I7RUEyR3pCLFFBQVEsQ0FBQyxDQTNHZ0I7RUE0R3pCLE9BQU8sQ0FBQyxDQTVHaUI7RUE2R3pCLFFBQVEsQ0FBQyxJQTdHZ0I7RUE4R3pCLFFBQVEsQ0FBQyxFQTlHZ0I7RUErR3pCLFFBQVEsQ0FBQyxFQS9HZ0I7RUFnSHpCLFFBQVEsQ0FBQyxFQWhIZ0I7RUFpSHpCLFFBQVEsQ0FBQyxHQWpIZ0I7RUFrSHpCLFFBQVEsQ0FBQyxDQWxIZ0I7RUFtSHpCLE9BQU8sQ0FBQyxDQW5IaUI7RUFvSHpCLE9BQU8sQ0FBQyxDQXBIaUI7RUFxSHpCLFFBQVEsQ0FBQyxDQXJIZ0I7RUFzSHpCLE9BQU8sQ0FBQyxFQXRIaUI7RUF1SHpCLFFBQVEsQ0FBQyxFQXZIZ0I7RUF3SHpCLE9BQU8sQ0FBQyxHQXhIaUI7RUF5SHpCLE9BQU8sQ0FBQyxHQXpIaUI7RUEwSHpCLE9BQU8sQ0FBQyxDQTFIaUI7RUEySHpCLE9BQU8sQ0FBQyxDQTNIaUI7RUE0SHpCLE9BQU8sQ0FBQyxDQTVIaUI7RUE2SHpCLE9BQU8sQ0FBQyxDQTdIaUI7RUE4SHpCLE9BQU8sQ0FBQyxDQTlIaUI7RUErSHpCLE9BQU8sQ0FBQyxDQS9IaUI7RUFnSXpCLE9BQU8sQ0FBQyxFQWhJaUI7RUFpSXpCLE9BQU8sQ0FBQyxHQWpJaUI7RUFrSXpCLE9BQU8sQ0FBQyxFQWxJaUI7RUFtSXpCLE9BQU8sQ0FBQyxJQW5JaUI7RUFvSXpCLE9BQU8sQ0FBQyxHQXBJaUI7RUFxSXpCLE1BQU0sQ0FBQyxHQXJJa0I7RUFzSXpCLE9BQU8sQ0FBQyxFQXRJaUI7RUF1SXpCLFFBQVEsQ0FBQyxFQXZJZ0I7RUF3SXpCLFFBQVEsQ0FBQyxFQXhJZ0I7RUF5SXpCLFFBQVEsQ0FBQyxDQXpJZ0I7RUEwSXpCLFFBQVEsQ0FBQyxDQTFJZ0I7RUEySXpCLE9BQU8sQ0FBQyxDQTNJaUI7RUE0SXpCLE9BQU8sQ0FBQyxDQTVJaUI7RUE2SXpCLFFBQVEsQ0FBQyxFQTdJZ0I7RUE4SXpCLE9BQU8sQ0FBQyxFQTlJaUI7RUErSXpCLFFBQVEsQ0FBQyxFQS9JZ0I7RUFnSnpCLE9BQU8sQ0FBQyxDQWhKaUI7RUFpSnpCLE9BQU8sQ0FBQyxDQWpKaUI7RUFrSnpCLFFBQVEsQ0FBQyxDQWxKZ0I7RUFtSnpCLFFBQVEsQ0FBQyxDQW5KZ0I7RUFvSnpCLFFBQVEsQ0FBQyxFQXBKZ0I7RUFxSnpCLE9BQU8sQ0FBQyxDQXJKaUI7RUFzSnpCLE9BQU8sQ0FBQyxDQXRKaUI7RUF1SnpCLFFBQVEsQ0FBQyxDQXZKZ0I7RUF3SnpCLE9BQU8sQ0FBQyxDQXhKaUI7RUF5SnpCLE9BQU8sQ0FBQyxDQXpKaUI7RUEwSnpCLFFBQVEsQ0FBQyxDQTFKZ0I7RUEySnpCLFFBQVEsQ0FBQyxFQTNKZ0I7RUE0SnpCLFFBQVEsQ0FBQyxDQTVKZ0I7RUE2SnpCLFFBQVEsQ0FBQyxDQTdKZ0I7RUE4SnpCLE9BQU8sQ0FBQyxFQTlKaUI7RUErSnpCLE9BQU8sQ0FBQyxDQS9KaUI7RUFnS3pCLE9BQU8sQ0FBQyxFQWhLaUI7RUFpS3pCLE9BQU8sQ0FBQyxDQWpLaUI7RUFrS3pCLFFBQVEsQ0FBQyxHQWxLZ0I7RUFtS3pCLFFBQVEsQ0FBQyxFQW5LZ0I7RUFvS3pCLE9BQU8sQ0FBQyxDQXBLaUI7RUFxS3pCLE9BQU8sQ0FBQyxFQXJLaUI7RUFzS3pCLE9BQU8sQ0FBQyxDQXRLaUI7RUF1S3pCLFFBQVEsQ0FBQyxDQXZLZ0I7RUF3S3pCLFFBQVEsQ0FBQyxFQXhLZ0I7RUF5S3pCLE9BQU8sQ0FBQyxDQXpLaUI7RUEwS3pCLE9BQU8sQ0FBQyxDQTFLaUI7RUEyS3pCLE9BQU8sQ0FBQyxDQTNLaUI7RUE0S3pCLE9BQU8sQ0FBQyxFQTVLaUI7RUE2S3pCLE9BQU8sQ0FBQyxDQTdLaUI7RUE4S3pCLE9BQU8sQ0FBQyxDQTlLaUI7RUErS3pCLE9BQU8sQ0FBQyxDQS9LaUI7RUFnTHpCLE9BQU8sQ0FBQyxFQWhMaUI7RUFpTHpCLE9BQU8sQ0FBQyxFQWpMaUI7RUFrTHpCLFNBQVMsQ0FBQyxDQWxMZTtFQW1MekIsUUFBUSxDQUFDLENBbkxnQjtFQW9MekIsT0FBTyxDQUFDLENBcExpQjtFQXFMekIsT0FBTyxDQXJMa0I7RUFzTHpCLFFBQVEsQ0FBQyxDQXRMZ0I7RUF1THpCLE9BQU8sQ0FBQyxDQXZMaUI7RUF3THpCLE9BQU8sQ0FBQyxDQXhMaUI7RUF5THpCLE9BQU8sQ0FBQyxDQXpMaUI7RUEwTHpCLFFBQVEsQ0FBQyxFQTFMZ0I7RUEyTHpCLFFBQVEsQ0FBQyxDQTNMZ0I7RUE0THpCLFFBQVEsQ0FBQyxDQTVMZ0I7RUE2THpCLE9BQU8sQ0FBQyxFQTdMaUI7RUE4THpCLFFBQVEsQ0FBQyxFQTlMZ0I7RUErTHpCLFFBQVEsQ0FBQyxDQS9MZ0I7RUFnTXpCLE9BQU8sQ0FBQyxDQWhNaUI7RUFpTXpCLFFBQVEsQ0FBQyxDQWpNZ0I7RUFrTXpCLE9BQU8sQ0FsTWtCO0VBbU16QixPQUFPLENBQUMsQ0FuTWlCO0VBb016QixPQUFPLENBQUMsQ0FwTWlCO0VBcU16QixRQUFRLENBQUMsQ0FyTWdCO0VBc016QixRQUFRLENBQUMsQ0F0TWdCO0VBdU16QixLQUFLO0FBdk1vQixDQUE3Qjs7QUEyTUEsSUFBRyxJQUFILEVBQWtDO0VBQzlCM08sTUFBTSxDQUFDQyxPQUFQLEdBQWlCK1AsT0FBakI7QUFDSCxDQUZELE1BRU07Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3BvRE47QUFFQTtBQUNBO0FBQ0E7QUFFQSxNQUFNO0VBQUVGLEtBQUY7RUFBU3ZPO0FBQVQsSUFBdUJELElBQTdCLEVBRUE7O0FBQ08sTUFBTWlaLElBQUksR0FBRyxDQUFDQyxNQUFELEVBQVNDLE9BQVQsRUFBa0I3MUIsS0FBbEIsRUFBeUI4MUIsTUFBekIsRUFBaUNDLE1BQU0sR0FBRyxLQUExQyxLQUFvRDtFQUN0RSxNQUFNQyxPQUFPLEdBQUssSUFBSUMsY0FBSixFQUFsQjtFQUNBLE1BQU0vWixHQUFHLEdBQVU2WixNQUFNLEtBQUssS0FBWCxJQUFvQkQsTUFBckIsR0FBZ0MsR0FBRUYsTUFBTyxJQUFJSCw0REFBUyxDQUFDSyxNQUFELEVBQVNKLDhEQUFULENBQXdCLEVBQTlFLEdBQWtGRSxNQUFwRzs7RUFDQSxNQUFNTSxTQUFTLEdBQUlDLE1BQUQsSUFBY0EsTUFBTSxJQUFJLEdBQVYsSUFBaUJBLE1BQU0sR0FBRyxHQUEzQixJQUFtQ0EsTUFBTSxLQUFLLEdBQTdFOztFQUVBSCxPQUFPLENBQUNJLElBQVIsQ0FBYUwsTUFBYixFQUFxQjdaLEdBQXJCO0VBQ0E4WixPQUFPLENBQUNLLGdCQUFSLENBQXlCLGNBQXpCLEVBQXlDLDBCQUF6Qzs7RUFFQUwsT0FBTyxDQUFDTSxrQkFBUixHQUE2QixNQUFNO0lBQ2pDLElBQUlDLFFBQUo7O0lBRUEsSUFBSVAsT0FBTyxDQUFDUSxVQUFSLEtBQXVCLENBQTNCLEVBQThCO01BQzVCLElBQUlOLFNBQVMsQ0FBQ0YsT0FBTyxDQUFDRyxNQUFULENBQWIsRUFBK0I7UUFDN0IsSUFBSTtVQUNGSSxRQUFRLEdBQUdyTCxLQUFLLENBQUM4SyxPQUFPLENBQUNTLFlBQVQsQ0FBaEI7UUFDRCxDQUZELENBRUUsT0FBTUMsQ0FBTixFQUFTO1VBQ1RILFFBQVEsR0FBR1AsT0FBWDtRQUNEOztRQUVESCxPQUFPLENBQUNVLFFBQUQsQ0FBUDtNQUNELENBUkQsTUFRTztRQUNMdjJCLEtBQUssQ0FBQ2cyQixPQUFELENBQUw7TUFDRDtJQUNGO0VBQ0YsQ0FoQkQ7O0VBa0JBLElBQUlSLDBEQUFRLENBQUNNLE1BQUQsQ0FBUixJQUFvQkMsTUFBTSxLQUFLLEtBQW5DLEVBQTBDO0lBQ3hDQyxPQUFPLENBQUNXLElBQVIsQ0FBYWhhLFNBQVMsQ0FBQ21aLE1BQUQsQ0FBdEI7RUFDRCxDQUZELE1BRU87SUFDTEUsT0FBTyxDQUFDVyxJQUFSO0VBQ0Q7QUFDRixDQS9CTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBRVRQLE1BQU07RUFBRXBaLFNBQVMsRUFBRTtJQUFFbFU7RUFBRjtBQUFiLElBQThCaEwsTUFBcEM7QUFFTyxNQUFNMGMsT0FBTyxHQUFJM0QsQ0FBRCxJQUFPO0VBQzVCLE9BQU8vTixRQUFRLENBQUNtVSxJQUFULENBQWNwRyxDQUFkLE1BQXFCLGdCQUE1QjtBQUNELENBRk07Ozs7Ozs7Ozs7Ozs7Ozs7O0FDRlA7QUFFQTs7QUFFQSxTQUFTd2YsNkJBQVQsR0FBeUM7RUFDdkMsT0FBTyxDQUFDLEVBQUUsT0FBT0MsSUFBUCxLQUFnQixRQUFoQixJQUE0QkEsSUFBNUIsSUFBb0MsT0FBT0EsSUFBSSxDQUFDQyxZQUFaLEtBQTZCLFVBQW5FLENBQVI7QUFDRDs7QUFFTSxNQUFNQyxpQkFBaUIsR0FBRyxDQUFDcnJCLEtBQUQsRUFBUXNyQixJQUFSLEVBQWNDLFFBQWQsRUFBd0JDLHFCQUFxQixHQUFHLENBQWhELEVBQy9CQyxxQkFBcUIsR0FBRyxDQURPLEtBQ0Q7RUFDOUIsSUFBSVAsNkJBQTZCLE1BQU1LLFFBQXZDLEVBQWlEO0lBQy9DLE1BQU1HLFFBQVEsR0FBTyxNQUFNamEsMEVBQXFCLENBQUM4WixRQUFELENBQXJCLEtBQW9DLEdBQS9EOztJQUNBLE1BQU0vNEIsT0FBTyxHQUFRO01BQ25CdU4sS0FBSyxFQUFFLFVBRFk7TUFFbkJ3ckIsUUFGbUI7TUFHbkJJLGVBQWUsRUFBRUQsUUFBUSxHQUFHLFFBQUgsR0FBYyxNQUhwQjtNQUluQkYscUJBSm1CO01BS25CQztJQUxtQixDQUFyQjtJQVFBLE1BQU1HLFlBQVksR0FBRyxJQUFJVCxJQUFJLENBQUNDLFlBQVQsQ0FBc0JFLElBQXRCLEVBQTRCOTRCLE9BQTVCLENBQXJCO0lBQ0EsTUFBTTBhLEdBQUcsR0FBWTBlLFlBQVksQ0FBQzNlLE1BQWIsQ0FBb0JqTixLQUFwQixDQUFyQjs7SUFFQSxJQUFJMHJCLFFBQVEsSUFBSSxDQUFDamEsMEVBQXFCLENBQUM4WixRQUFELENBQXRDLEVBQWtEO01BQ2hELE9BQU9yZSxHQUFQO0lBQ0Q7O0lBQ0QsT0FBT0EsR0FBRyxDQUFDRyxPQUFKLENBQVlrZSxRQUFaLEVBQXNCOVosMEVBQXFCLENBQUM4WixRQUFELENBQTNDLENBQVA7RUFDRDs7RUFFRCxPQUFPdnJCLEtBQVA7QUFDRCxDQXRCTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUdSUDtBQUNBLE1BQU02ckIsV0FBVyxHQUFHLENBQUMsRUFBRCxFQUFLLEVBQUwsRUFBUyxFQUFULEVBQWEsRUFBYixFQUFpQixFQUFqQixFQUFxQixFQUFyQixFQUF5QixFQUF6QixFQUE2QixFQUE3QixFQUFpQyxFQUFqQyxFQUFxQyxFQUFyQyxFQUF5QyxFQUF6QyxFQUE2QyxFQUE3QyxDQUFwQjs7QUFDQSxNQUFNM0UsVUFBVSxHQUFLbEcsSUFBRCxJQUFZQSxJQUFJLEdBQUcsQ0FBUCxLQUFhLENBQWQsSUFBcUJBLElBQUksR0FBRyxHQUFQLEtBQWUsQ0FBckMsSUFBNkNBLElBQUksR0FBRyxHQUFQLEtBQWUsQ0FBMUY7O0FBRU8sTUFBTThLLFdBQVcsR0FBRyxDQUFDOUssSUFBRCxFQUFPRSxLQUFQLEtBQWlCO0VBQzFDLElBQUkyRixJQUFJLEdBQUdnRixXQUFXLENBQUMzSyxLQUFELENBQXRCOztFQUNBLElBQUlBLEtBQUssS0FBSyxDQUFWLElBQWVnRyxVQUFVLENBQUNsRyxJQUFELENBQTdCLEVBQXFDO0lBQ25DNkYsSUFBSSxHQUFHLEVBQVA7RUFDRDs7RUFFRCxPQUFPQSxJQUFQO0FBQ0QsQ0FQTTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDSlA7QUFDQTtBQUNBO0FBRU8sTUFBTXFGLFFBQVEsR0FBRyxDQUFDQyxFQUFELEVBQUssR0FBR0MsVUFBUixLQUF1QjtFQUM3QyxNQUFNbjRCLElBQUksR0FBR200QixVQUFiOztFQUVBLElBQUksT0FBT0QsRUFBRSxDQUFDRSxTQUFWLEtBQXdCLFdBQTVCLEVBQXlDO0lBQ3ZDcDRCLElBQUksQ0FBQ3FCLE9BQUwsQ0FBY2czQixHQUFELElBQVM7TUFDcEIsSUFBSUEsR0FBRyxDQUFDeEQsSUFBSixFQUFKLEVBQWdCO1FBQ2RxRCxFQUFFLENBQUNFLFNBQUgsQ0FBYXBlLEdBQWIsQ0FBaUJxZSxHQUFqQjtNQUNEO0lBQ0YsQ0FKRDtFQUtELENBTkQsTUFNTztJQUNMUCx5REFBVyxDQUFDSSxFQUFELEVBQUtsNEIsSUFBTCxDQUFYO0lBQ0EsTUFBTXE0QixHQUFHLEdBQUksR0FBRUwsMkRBQVksQ0FBQ0UsRUFBRCxDQUFLLElBQUdsNEIsSUFBSSxDQUFDTSxJQUFMLENBQVUsR0FBVixDQUFlLEVBQWxEO0lBQ0F5M0IsMkRBQVksQ0FBQ0csRUFBRCxFQUFLRyxHQUFMLENBQVo7RUFDRDtBQUNGLENBZE07Ozs7Ozs7Ozs7Ozs7OztBQ0pQO0FBRUEsTUFBTTtFQUFFeHNCO0FBQUYsSUFBV25OLE1BQWpCO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUNPLE1BQU00NUIsYUFBYSxHQUFHLENBQUN0NEIsSUFBRCxFQUFPdTRCLEtBQVAsS0FBaUI7RUFDNUMsTUFBTXBDLE1BQU0sR0FBSW9DLEtBQUssSUFBSSxFQUF6QjtFQUNBLE1BQU01NkIsT0FBTyxHQUFHOEosUUFBUSxDQUFDNndCLGFBQVQsQ0FBdUJ0NEIsSUFBdkIsQ0FBaEI7RUFFQTZMLElBQUksQ0FBQ3NxQixNQUFELENBQUosQ0FBYXhjLEdBQWIsQ0FBa0JySCxDQUFELElBQU8zVSxPQUFPLENBQUNzTyxZQUFSLENBQXFCcUcsQ0FBckIsRUFBd0I2akIsTUFBTSxDQUFDN2pCLENBQUQsQ0FBOUIsQ0FBeEI7RUFFQSxPQUFPM1UsT0FBUDtBQUNELENBUE07Ozs7Ozs7Ozs7Ozs7OztBQ1ZBLE1BQU02NkIsY0FBYyxHQUFJNzZCLE9BQUQsSUFBYTtFQUN6QyxJQUFJQSxPQUFPLENBQUNzRixVQUFSLElBQXNCdEYsT0FBTyxDQUFDc0YsVUFBUixDQUFtQncxQixXQUE3QyxFQUEwRDtJQUN4RDk2QixPQUFPLENBQUNzRixVQUFSLENBQW1CdzFCLFdBQW5CLENBQStCOTZCLE9BQS9CO0VBQ0Q7O0VBQ0QsT0FBT0EsT0FBUDtBQUNELENBTE07Ozs7Ozs7Ozs7Ozs7Ozs7QUNBUDtBQUVPLE1BQU0rNkIsaUJBQWlCLEdBQUluTSxNQUFELElBQVk7RUFDM0MsTUFBTTV1QixPQUFPLEdBQUcyNkIsNkRBQWEsQ0FBQyxLQUFELENBQTdCO0VBRUEzNkIsT0FBTyxDQUFDZzdCLFNBQVIsR0FBb0JwTSxNQUFwQjtFQUVBLE9BQU81dUIsT0FBTyxDQUFDaTdCLFFBQVIsQ0FBaUIsQ0FBakIsQ0FBUDtBQUNELENBTk07Ozs7Ozs7Ozs7Ozs7OztBQ0ZBLE1BQU1DLGVBQWUsR0FBRyxDQUFDQyxPQUFELEVBQVU5NEIsSUFBVixLQUFtQjg0QixPQUFPLENBQUN6cUIsYUFBUixDQUF1QixJQUFHck8sSUFBSyxFQUEvQixDQUEzQzs7Ozs7Ozs7Ozs7Ozs7O0FDQUEsTUFBTWc0QixZQUFZLEdBQUlFLEVBQUQsSUFBUTtFQUNsQztFQUNBO0VBQ0EsSUFBSUEsRUFBRSxDQUFDYSxTQUFILFlBQXdCYixFQUFFLENBQUMxd0IsYUFBSCxDQUFpQm1DLFdBQWpCLENBQTZCcXZCLGlCQUF6RCxFQUE0RTtJQUMxRSxPQUFPZCxFQUFFLENBQUNhLFNBQUgsQ0FBYUUsT0FBcEI7RUFDRDs7RUFDRCxPQUFPZixFQUFFLENBQUNhLFNBQVY7QUFDRCxDQVBNOzs7Ozs7Ozs7Ozs7Ozs7O0FDQVA7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBQ08sTUFBTUksa0JBQWtCLEdBQUcsQ0FBQ2pCLEVBQUQsRUFBS2tCLElBQUwsS0FBY0YsbUZBQXdCLENBQUNoQixFQUFELEVBQUtrQixJQUFMLENBQXhCLENBQW1DcnRCLEtBQTVFOzs7Ozs7Ozs7Ozs7Ozs7O0FDUlA7QUFFTyxNQUFNc3RCLFFBQVEsR0FBRyxDQUFDbkIsRUFBRCxFQUFLbDRCLElBQUwsS0FBYztFQUNwQyxJQUFJLE9BQU9rNEIsRUFBRSxDQUFDRSxTQUFWLEtBQXdCLFdBQTVCLEVBQXlDO0lBQ3ZDLE9BQU9GLEVBQUUsQ0FBQ0UsU0FBSCxDQUFhMTFCLFFBQWIsQ0FBc0IxQyxJQUF0QixDQUFQO0VBQ0Q7O0VBQ0QsTUFBTSs0QixTQUFTLEdBQUdmLDJEQUFZLENBQUNFLEVBQUQsQ0FBOUI7RUFDQSxPQUFPLElBQUlvQixNQUFKLENBQVksUUFBT3Q1QixJQUFLLE9BQXhCLEVBQWdDLElBQWhDLEVBQXNDNkksSUFBdEMsQ0FBMkNrd0IsU0FBM0MsQ0FBUDtBQUNELENBTk07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDRlA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNWQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFDTyxNQUFNUyxRQUFRLEdBQUcsQ0FBQzUyQixLQUFELEVBQVFELE1BQVIsS0FBbUI7RUFDekMsSUFBSThXLE9BQU8sR0FBRzdXLEtBQWQ7O0VBRUEsT0FBTzZXLE9BQU8sS0FBSzlXLE1BQW5CLEVBQTJCO0lBQ3pCLElBQUksQ0FBQzQyQix1Q0FBRSxDQUFDOWYsT0FBRCxDQUFILElBQWdCQSxPQUFPLENBQUNnZ0IsT0FBUixLQUFvQixNQUFwQyxJQUE4Q2hnQixPQUFPLENBQUNnZ0IsT0FBUixLQUFvQixNQUF0RSxFQUE4RTtNQUM1RSxPQUFPLEtBQVA7SUFDRDs7SUFDRGhnQixPQUFPLEdBQUdBLE9BQU8sQ0FBQ3hXLFVBQWxCO0VBQ0Q7O0VBQ0QsT0FBTyxJQUFQO0FBQ0QsQ0FWTTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNSUDtBQUNBO0FBRU8sTUFBTTYwQixXQUFXLEdBQUcsQ0FBQ0ksRUFBRCxFQUFLLEdBQUdDLFVBQVIsS0FBdUI7RUFDaEQsTUFBTW40QixJQUFJLEdBQUdtNEIsVUFBYjs7RUFFQSxJQUFJLE9BQU9ELEVBQUUsQ0FBQ0UsU0FBVixLQUF3QixXQUE1QixFQUF5QztJQUN2Q3A0QixJQUFJLENBQUNxQixPQUFMLENBQWNnM0IsR0FBRCxJQUFTO01BQ3BCLElBQUlBLEdBQUcsQ0FBQ3hELElBQUosRUFBSixFQUFnQjtRQUNkcUQsRUFBRSxDQUFDRSxTQUFILENBQWFzQixNQUFiLENBQW9CckIsR0FBcEI7TUFDRDtJQUNGLENBSkQ7RUFLRCxDQU5ELE1BTU87SUFDTCxNQUFNc0IsS0FBSyxHQUFPLElBQUlMLE1BQUosQ0FBWSxRQUFPdDVCLElBQUksQ0FBQ00sSUFBTCxDQUFVLEdBQVYsQ0FBZSxPQUFsQyxFQUEwQyxJQUExQyxDQUFsQjtJQUNBLE1BQU15NEIsU0FBUyxHQUFHZiwyREFBWSxDQUFDRSxFQUFELENBQVosQ0FBaUI5ZSxPQUFqQixDQUF5QnVnQixLQUF6QixFQUFnQyxHQUFoQyxDQUFsQjtJQUNBNUIsMkRBQVksQ0FBQ0csRUFBRCxFQUFLYSxTQUFMLENBQVo7RUFDRDtBQUNGLENBZE07Ozs7Ozs7Ozs7Ozs7OztBQ0hBLE1BQU1oQixZQUFZLEdBQUcsQ0FBQ0csRUFBRCxFQUFLYSxTQUFMLEtBQW1CO0VBQzdDYixFQUFFLENBQUNqc0IsWUFBSCxDQUFnQixPQUFoQixFQUF5QjhzQixTQUF6QjtBQUNELENBRk07Ozs7Ozs7Ozs7Ozs7Ozs7QUNBUDtBQUVPLE1BQU1HLHdCQUF3QixHQUFHLENBQUN2N0IsT0FBRCxFQUFVNE8sU0FBVixLQUF3QjtFQUM5RCxJQUFJNUosTUFBTSxHQUFHaEYsT0FBYjtFQUNBLElBQUlvTyxLQUFLLEdBQUlwTyxPQUFPLENBQUNpOEIsWUFBUixDQUFxQnJ0QixTQUFyQixDQUFiOztFQUNBLE9BQU8sQ0FBQ2d0Qix1Q0FBRSxDQUFDeHRCLEtBQUQsQ0FBVixFQUFtQjtJQUNqQnBKLE1BQU0sR0FBR0EsTUFBTSxDQUFDTSxVQUFoQjs7SUFDQSxJQUFJTixNQUFNLElBQUksT0FBT0EsTUFBTSxDQUFDaTNCLFlBQWQsS0FBK0IsVUFBN0MsRUFBeUQ7TUFDdkQ3dEIsS0FBSyxHQUFHcEosTUFBTSxDQUFDaTNCLFlBQVAsQ0FBb0JydEIsU0FBcEIsQ0FBUjtJQUNELENBRkQsTUFFTztNQUNMNUosTUFBTSxHQUFHLElBQVQ7TUFDQTtJQUNEO0VBQ0Y7O0VBQ0QsT0FBTztJQUNMb0osS0FESztJQUVMcEo7RUFGSyxDQUFQO0FBSUQsQ0FoQk07Ozs7Ozs7Ozs7Ozs7OztBQ0ZRLE1BQU1rM0IsT0FBTixDQUFjO0VBQzNCQyxFQUFFLENBQUNDLEtBQUQsRUFBUUMsUUFBUixFQUFrQjtJQUNsQixLQUFLQyxNQUFMLEdBQXFCLEtBQUtBLE1BQUwsSUFBZSxFQUFwQztJQUNBLEtBQUtBLE1BQUwsQ0FBWUYsS0FBWixJQUFxQixLQUFLRSxNQUFMLENBQVlGLEtBQVosS0FBc0IsRUFBM0M7SUFDQSxLQUFLRSxNQUFMLENBQVlGLEtBQVosRUFBbUJ2M0IsSUFBbkIsQ0FBd0J3M0IsUUFBeEI7SUFDQSxPQUFPLElBQVA7RUFDRDs7RUFFREUsSUFBSSxDQUFDSCxLQUFELEVBQVFDLFFBQVIsRUFBa0I7SUFDcEIsTUFBTTllLElBQUksR0FBRyxJQUFiOztJQUVBLFNBQVN2WixFQUFULENBQVksR0FBR3BFLElBQWYsRUFBcUI7TUFDbkIyZCxJQUFJLENBQUNpZixHQUFMLENBQVNKLEtBQVQsRUFBZ0JwNEIsRUFBaEI7TUFDQXE0QixRQUFRLENBQUNJLEtBQVQsQ0FBZSxJQUFmLEVBQXFCNzhCLElBQXJCO0lBQ0Q7O0lBRURvRSxFQUFFLENBQUNxNEIsUUFBSCxHQUFjQSxRQUFkO0lBQ0EsS0FBS0YsRUFBTCxDQUFRQyxLQUFSLEVBQWVwNEIsRUFBZjtJQUNBLE9BQU8sSUFBUDtFQUNEOztFQUVEdzRCLEdBQUcsQ0FBQ0osS0FBRCxFQUFRQyxRQUFSLEVBQWtCO0lBQ25CLElBQUlLLFNBQUo7O0lBRUEsSUFBSSxLQUFLSixNQUFMLElBQWUsS0FBS0EsTUFBTCxDQUFZRixLQUFaLENBQW5CLEVBQXVDO01BQ3JDTSxTQUFTLEdBQUcsS0FBS0osTUFBTCxDQUFZRixLQUFaLENBQVo7TUFFQU0sU0FBUyxDQUFDaDVCLE9BQVYsQ0FBa0IsQ0FBQ00sRUFBRCxFQUFLMlEsQ0FBTCxLQUFXO1FBQzNCLElBQUkzUSxFQUFFLEtBQUtxNEIsUUFBUCxJQUFtQnI0QixFQUFFLENBQUNxNEIsUUFBSCxLQUFnQkEsUUFBdkMsRUFBaUQ7VUFDL0NLLFNBQVMsQ0FBQ0MsTUFBVixDQUFpQmhvQixDQUFqQixFQUFvQixDQUFwQjtRQUNEO01BQ0YsQ0FKRDs7TUFNQSxJQUFJK25CLFNBQVMsQ0FBQy84QixNQUFWLEtBQXFCLENBQXpCLEVBQTRCO1FBQzFCLE9BQU8sS0FBSzI4QixNQUFMLENBQVlGLEtBQVosQ0FBUDtNQUNEO0lBQ0Y7O0lBQ0QsT0FBTyxJQUFQO0VBQ0Q7O0VBRURRLElBQUksQ0FBQ1IsS0FBRCxFQUFRLEdBQUd4OEIsSUFBWCxFQUFpQjtJQUNuQixJQUFJODhCLFNBQUo7O0lBRUEsSUFBSSxLQUFLSixNQUFMLElBQWUsS0FBS0EsTUFBTCxDQUFZRixLQUFaLENBQW5CLEVBQXVDO01BQ3JDTSxTQUFTLEdBQUcsS0FBS0osTUFBTCxDQUFZRixLQUFaLENBQVo7TUFFQU0sU0FBUyxHQUFHQSxTQUFTLENBQUNqbkIsS0FBVixDQUFnQixDQUFoQixDQUFaO01BQ0FpbkIsU0FBUyxDQUFDaDVCLE9BQVYsQ0FBbUJNLEVBQUQsSUFBUUEsRUFBRSxDQUFDeTRCLEtBQUgsQ0FBUyxJQUFULEVBQWU3OEIsSUFBZixDQUExQjtJQUNEOztJQUNELE9BQU8sSUFBUDtFQUNEOztBQWxEMEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUVBdEIsTUFBTWk5QixVQUFVLEdBQUlDLENBQUQsSUFBTztFQUMvQixPQUFPLE9BQU9BLENBQVAsS0FBYSxVQUFwQjtBQUNELENBRk07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDYkE7QUFFTyxNQUFNbEIsRUFBRSxHQUFJb0IsQ0FBRCxJQUFPO0VBQ3ZCLE9BQU8sT0FBT0EsQ0FBUCxLQUFhLFdBQWIsSUFBNEJBLENBQUMsS0FBSyxJQUFsQyxJQUEwQyxDQUFDRCxrRUFBYSxDQUFDQyxDQUFELENBQS9EO0FBQ0QsQ0FGTTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDRlA7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBTyxNQUFNRCxhQUFhLEdBQUkzdUIsS0FBRCxJQUFXO0VBQ3RDLE9BQU8sT0FBT0EsS0FBUCxLQUFpQixRQUFqQixJQUE2QjZkLE1BQU0sQ0FBQ2dSLEtBQVAsQ0FBYTd1QixLQUFiLENBQXBDO0FBQ0QsQ0FGTTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBUDtBQUNBO0FBRU8sTUFBTTh1QixTQUFTLEdBQUlDLENBQUQsSUFBTztFQUM5QixPQUFPLENBQUMxZix1REFBTyxDQUFDMGYsQ0FBRCxDQUFSLElBQWUsQ0FBQ0osNkRBQWEsQ0FBQ0ssUUFBUSxDQUFDRCxDQUFELEVBQUksRUFBSixDQUFULENBQXBDO0FBQ0QsQ0FGTTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDSFA7QUFDQTtBQUNBO0FBRU8sTUFBTUssYUFBYSxHQUFJQyxNQUFELElBQVk7RUFDdkNBLE1BQU0sR0FBR0oseURBQVcsQ0FBQ0ksTUFBRCxFQUFTSCxnRUFBVCxDQUFwQjtFQUNBRyxNQUFNLEdBQUdKLHlEQUFXLENBQUNJLE1BQUQsRUFBU0YsNEVBQVQsQ0FBcEI7RUFFQSxPQUFPRSxNQUFQO0FBQ0QsQ0FMTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNKUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7O0FDSkEsTUFBTTtFQUFFeGQsU0FBUyxFQUFFO0lBQUVsVTtFQUFGO0FBQWIsSUFBOEJoTCxNQUFwQztBQUVPLE1BQU1tM0IsUUFBUSxHQUFJOEUsQ0FBRCxJQUFPO0VBQzdCLE9BQU9qeEIsUUFBUSxDQUFDbVUsSUFBVCxDQUFjOGMsQ0FBZCxNQUFxQixpQkFBNUI7QUFDRCxDQUZNOzs7Ozs7Ozs7Ozs7Ozs7O0FDRlA7QUFFQSxNQUFNO0VBQUU5dUI7QUFBRixJQUFXbk4sTUFBakI7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFDTyxNQUFNMjhCLEtBQUssR0FBRyxDQUFDQyxJQUFELEVBQU9DLElBQVAsRUFBYUMsTUFBYixLQUF3QjtFQUMzQyxNQUFNQyxJQUFJLEdBQUcsRUFBYjtFQUNBNXZCLElBQUksQ0FBQ3l2QixJQUFELENBQUosQ0FBV2o2QixPQUFYLENBQW9CaVIsQ0FBRCxJQUFPO0lBQ3hCLElBQUlrcEIsTUFBTSxJQUFJM0YsbURBQVEsQ0FBQ3lGLElBQUksQ0FBQ2hwQixDQUFELENBQUwsQ0FBdEIsRUFBaUM7TUFDL0JtcEIsSUFBSSxDQUFDbnBCLENBQUQsQ0FBSixHQUFVK29CLEtBQUssQ0FBQ0MsSUFBSSxDQUFDaHBCLENBQUQsQ0FBTCxFQUFVLEVBQVYsRUFBYyxJQUFkLENBQWY7SUFDRCxDQUZELE1BRU87TUFDTG1wQixJQUFJLENBQUNucEIsQ0FBRCxDQUFKLEdBQVVncEIsSUFBSSxDQUFDaHBCLENBQUQsQ0FBZDtJQUNEO0VBQ0YsQ0FORDtFQVFBekcsSUFBSSxDQUFDMHZCLElBQUQsQ0FBSixDQUFXbDZCLE9BQVgsQ0FBb0JpUixDQUFELElBQU87SUFDeEIsSUFBSWtwQixNQUFNLElBQUkzRixtREFBUSxDQUFDMEYsSUFBSSxDQUFDanBCLENBQUQsQ0FBTCxDQUF0QixFQUFpQztNQUMvQm1wQixJQUFJLENBQUNucEIsQ0FBRCxDQUFKLEdBQVUrb0IsS0FBSyxDQUFDSSxJQUFJLENBQUNucEIsQ0FBRCxDQUFKLElBQVcsRUFBWixFQUFnQmlwQixJQUFJLENBQUNqcEIsQ0FBRCxDQUFwQixFQUF5QixJQUF6QixDQUFmO0lBQ0QsQ0FGRCxNQUVPO01BQ0xtcEIsSUFBSSxDQUFDbnBCLENBQUQsQ0FBSixHQUFVaXBCLElBQUksQ0FBQ2pwQixDQUFELENBQWQ7SUFDRDtFQUNGLENBTkQ7RUFPQSxPQUFPbXBCLElBQVA7QUFDRCxDQWxCTTs7Ozs7Ozs7Ozs7Ozs7O0FDWFA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxNQUFNQyxJQUFJLEdBQUcsQ0FBQ0MsR0FBRCxFQUFNLEdBQUdwK0IsSUFBVCxLQUFrQkEsSUFBSSxDQUFDaUosTUFBTCxDQUFZLENBQUM4TCxDQUFELEVBQUlzcEIsQ0FBSixLQUFVO0VBQzFELE1BQU1DLFNBQVMsR0FBR3ZwQixDQUFsQjtFQUVBdXBCLFNBQVMsQ0FBQ0QsQ0FBRCxDQUFULEdBQWVELEdBQUcsQ0FBQ0MsQ0FBRCxDQUFsQjtFQUVBLE9BQU9DLFNBQVA7QUFDRCxDQU5xQyxFQU1uQyxFQU5tQyxDQUEvQjs7Ozs7Ozs7Ozs7Ozs7O0FDVlAsTUFBTTtFQUFFaHdCO0FBQUYsSUFBV25OLE1BQWpCLEVBRUE7O0FBQ08sTUFBTW8zQixTQUFTLEdBQUcsQ0FBQzZGLEdBQUQsRUFBTXp5QixTQUFOLEtBQW9CO0VBQzNDLE1BQU00eUIsU0FBUyxHQUFHandCLElBQUksQ0FBQzh2QixHQUFELENBQUosQ0FBVWhpQixHQUFWLENBQWVULENBQUQsSUFBUSxHQUFFaFEsU0FBUyxDQUFDNFQsa0JBQWtCLENBQUM1RCxDQUFELENBQW5CLENBQXdCLElBQUc0RCxrQkFBa0IsQ0FBQzZlLEdBQUcsQ0FBQ3ppQixDQUFELENBQUosQ0FBUyxFQUF2RixDQUFsQjtFQUNBLE9BQU80aUIsU0FBUyxDQUFDeDdCLElBQVYsQ0FBZSxHQUFmLENBQVA7QUFDRCxDQUhNOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0hQO0FBQ0E7QUFFQSxNQUFNO0VBQUV1TDtBQUFGLElBQVduTixNQUFqQjtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUNPLE1BQU1zOEIsV0FBVyxHQUFHLENBQUNXLEdBQUQsRUFBTUksS0FBSyxHQUFHLEtBQWQsRUFBcUJDLE9BQU8sR0FBRyxLQUEvQixLQUF5QztFQUNsRSxJQUFJLENBQUNuRyxtREFBUSxDQUFDOEYsR0FBRCxDQUFiLEVBQW9CO0lBQ2xCLE9BQU9BLEdBQVA7RUFDRDs7RUFFRCxPQUFPOXZCLElBQUksQ0FBQzh2QixHQUFELENBQUosQ0FBVW4xQixNQUFWLENBQWlCLENBQUN5MUIsSUFBRCxFQUFPbDVCLElBQVAsS0FBZ0I7SUFDdEMsSUFBSW01QixZQUFZLEdBQUdQLEdBQUcsQ0FBQzU0QixJQUFELENBQXRCO0lBQ0EsTUFBTTQzQixDQUFDLEdBQVlzQixJQUFuQjs7SUFFQSxJQUFJN2dCLHVEQUFPLENBQUM4Z0IsWUFBRCxDQUFYLEVBQTJCO01BQ3pCQSxZQUFZLEdBQUdBLFlBQVksQ0FBQ3ZpQixHQUFiLENBQWtCckgsQ0FBRCxJQUFPMG9CLFdBQVcsQ0FBQzFvQixDQUFELEVBQUl5cEIsS0FBSixFQUFXQyxPQUFYLENBQW5DLENBQWY7SUFDRDs7SUFFRCxJQUFJQSxPQUFKLEVBQWE7TUFDWHJCLENBQUMsQ0FBQ29CLEtBQUssR0FBR0EsS0FBSyxDQUFDaDVCLElBQUQsQ0FBUixHQUFpQkEsSUFBdkIsQ0FBRCxHQUFnQzh5QixtREFBUSxDQUFDcUcsWUFBRCxDQUFSLEdBQzVCbEIsV0FBVyxDQUFDa0IsWUFBRCxFQUFlSCxLQUFmLEVBQXNCQyxPQUF0QixDQURpQixHQUNnQkEsT0FBTyxDQUFDRSxZQUFELEVBQWVuNUIsSUFBZixDQUR2RDtJQUVELENBSEQsTUFHTztNQUNMNDNCLENBQUMsQ0FBQ29CLEtBQUssR0FBR0EsS0FBSyxDQUFDaDVCLElBQUQsQ0FBUixHQUFpQkEsSUFBdkIsQ0FBRCxHQUFnQzh5QixtREFBUSxDQUFDcUcsWUFBRCxDQUFSLEdBQzVCbEIsV0FBVyxDQUFDa0IsWUFBRCxFQUFlSCxLQUFmLENBRGlCLEdBQ09HLFlBRHZDO0lBRUQ7O0lBRUQsT0FBT3ZCLENBQVA7RUFDRCxDQWpCTSxFQWlCSixFQWpCSSxDQUFQO0FBa0JELENBdkJNOzs7Ozs7Ozs7Ozs7Ozs7QUNmQSxNQUFNTSxhQUFhLEdBQUloaUIsR0FBRCxJQUFTQSxHQUFHLENBQUNHLE9BQUosQ0FBWSxZQUFaLEVBQTBCLENBQUNpQyxDQUFELEVBQUkvSSxDQUFKLEtBQVVBLENBQUMsQ0FBQ3FMLFdBQUYsRUFBcEMsQ0FBL0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBUDtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7QUNGTyxNQUFNd2UsUUFBUSxHQUFJMUIsQ0FBRCxJQUFPO0VBQzdCLE9BQU8sT0FBT0EsQ0FBUCxLQUFhLFFBQXBCO0FBQ0QsQ0FGTTs7Ozs7Ozs7Ozs7Ozs7O0FDQUEsTUFBTTFFLFlBQVksR0FBSTljLEdBQUQsSUFBU0EsR0FBRyxDQUFDRyxPQUFKLENBQVksVUFBWixFQUF5QmlDLENBQUQsSUFBUSxJQUFHQSxDQUFDLENBQUMvUyxXQUFGLEVBQWdCLEVBQW5ELENBQTlCOzs7Ozs7Ozs7Ozs7Ozs7QUNBQSxNQUFNNHlCLG1CQUFtQixHQUFJamlCLEdBQUQsSUFBU0EsR0FBRyxDQUFDRyxPQUFKLENBQVksWUFBWixFQUEwQixDQUFDaUMsQ0FBRCxFQUFJL0ksQ0FBSixLQUFVQSxDQUFDLENBQUNxTCxXQUFGLEVBQXBDLENBQXJDOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FQO0NBR0E7O0FBQ08sTUFBTXllLFFBQVEsR0FBRztFQUN0QkMsT0FBTyxDQUFDMUIsQ0FBRCxFQUFJO0lBQ1QsT0FBT3BCLHVDQUFFLENBQUNvQixDQUFELENBQVQ7RUFDRCxDQUhxQjs7RUFJdEJFLFNBQVMsQ0FBQ0YsQ0FBRCxFQUFJO0lBQ1gsT0FBT0UsMERBQVMsQ0FBQ0YsQ0FBRCxDQUFoQjtFQUNELENBTnFCOztFQU90QjJCLE9BQU8sQ0FBQzNCLENBQUQsRUFBSTtJQUNULE9BQU8sT0FBT0EsQ0FBUCxLQUFhLFFBQWIsSUFBeUJwQix1Q0FBRSxDQUFDb0IsQ0FBQyxDQUFDNEIsS0FBRixDQUFRLCtCQUFSLENBQUQsQ0FBbEM7RUFDRCxDQVRxQjs7RUFVdEJDLFdBQVcsQ0FBQzdCLENBQUQsRUFBSXgxQixHQUFKLEVBQVNELEdBQVQsRUFBYztJQUN2QixPQUFPLE9BQU95MUIsQ0FBUCxLQUFhLFFBQWIsSUFBeUJBLENBQUMsSUFBSXgxQixHQUE5QixJQUFxQ3cxQixDQUFDLElBQUl6MUIsR0FBakQ7RUFDRDs7QUFacUIsQ0FBakI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNKUDtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBQ0EsTUFBTXUzQixhQUFhLEdBQUcsQ0FBQ2hsQixDQUFELEVBQUlDLENBQUosS0FBVTtFQUM5QixNQUFNck4sSUFBSSxHQUFHLEVBQWI7O0VBQ0EsS0FBSyxJQUFJaUksQ0FBQyxHQUFHbUYsQ0FBYixFQUFnQm5GLENBQUMsSUFBSW9GLENBQXJCLEVBQXdCcEYsQ0FBQyxJQUFJLENBQTdCLEVBQWdDO0lBQzlCakksSUFBSSxDQUFDN0gsSUFBTCxDQUFVOFAsQ0FBVjtFQUNEOztFQUNELE9BQU9qSSxJQUFQO0FBQ0QsQ0FORDs7QUFRQSxNQUFNcXlCLGNBQWMsR0FBRyxDQUFDempCO0FBQUk7QUFBTCxLQUEwQjtFQUMvQyxNQUFNMGpCLE1BQU0sR0FBRzFqQixHQUFHLENBQUNJLEtBQUosQ0FBVSxHQUFWLEVBQWVNLEdBQWYsQ0FBbUI5WSxVQUFuQixDQUFmO0VBQ0EsT0FBTztJQUNMa3NCLElBQUksRUFBRTRQLE1BQU0sQ0FBQyxDQUFELENBRFA7SUFFTDFQLEtBQUssRUFBRTBQLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FBWSxDQUZkO0lBR0w1UyxJQUFJLEVBQUU0UyxNQUFNLENBQUMsQ0FBRDtFQUhQLENBQVA7QUFLRCxDQVBEOztBQVNlLE1BQU1DLFlBQU4sQ0FBbUI7RUFDaEM7QUFDRjtBQUNBO0FBQ0E7RUFDRXRPLFdBQVcsQ0FBQ3VPLFlBQUQsRUFBZUMsSUFBZixFQUFxQjtJQUM5QixLQUFLRCxZQUFMLEdBQW9CQSxZQUFwQjtJQUNBLEtBQUtDLElBQUwsR0FBb0JBLElBQXBCO0VBQ0Q7O0VBRURDLE9BQU8sQ0FBQ3BCLEdBQUQsRUFBTTtJQUNYLElBQUksQ0FBQyxLQUFLbUIsSUFBVixFQUFnQjtNQUNkLEtBQUtBLElBQUwsR0FBWW5CLEdBQVo7SUFDRCxDQUZELE1BRU87TUFDTCxLQUFLbUIsSUFBTCxHQUFZekIsbURBQUssQ0FBQyxLQUFLeUIsSUFBTCxJQUFhLEVBQWQsRUFBa0JuQixHQUFsQixFQUF1QixJQUF2QixDQUFqQjtJQUNEOztJQUNELE9BQU8sSUFBUDtFQUNEO0VBRUQ7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0VBQ0VxQixXQUFXLENBQUNyeUIsS0FBRCxFQUFRQyxHQUFSLEVBQWE7SUFDdEIsSUFBSXF5QixLQUFLLEdBQUcsRUFBWjtJQUVBLE1BQU14bEIsQ0FBQyxHQUFHOU0sS0FBSyxDQUFDeUksS0FBTixFQUFWLENBSHNCLENBS3RCOztJQUNBLElBQUlxRSxDQUFDLENBQUMsQ0FBRCxDQUFELEtBQVM3TSxHQUFHLENBQUMsQ0FBRCxDQUFaLElBQW1CNk0sQ0FBQyxDQUFDLENBQUQsQ0FBRCxLQUFTN00sR0FBRyxDQUFDLENBQUQsQ0FBbkMsRUFBd0M7TUFDdENxeUIsS0FBSyxHQUFHLEtBQUtDLGlCQUFMLENBQXVCemxCLENBQUMsQ0FBQyxDQUFELENBQXhCLEVBQTZCQSxDQUFDLENBQUMsQ0FBRCxDQUE5QixFQUFtQ0EsQ0FBQyxDQUFDLENBQUQsQ0FBcEMsRUFBeUM3TSxHQUFHLENBQUMsQ0FBRCxDQUE1QyxDQUFSO0lBQ0QsQ0FGRCxNQUVPO01BQ0wsTUFBTXV5QixTQUFTLEdBQUcsS0FBS0wsSUFBTCxDQUFVcmxCLENBQUMsQ0FBQyxDQUFELENBQVgsRUFBZ0JBLENBQUMsQ0FBQyxDQUFELENBQWpCLENBQWxCLENBREssQ0FHTDs7TUFDQXdsQixLQUFLLEdBQUdBLEtBQUssQ0FBQ3o5QixNQUFOLENBQWEsS0FBSzA5QixpQkFBTCxDQUF1QnpsQixDQUFDLENBQUMsQ0FBRCxDQUF4QixFQUE2QkEsQ0FBQyxDQUFDLENBQUQsQ0FBOUIsRUFBbUNBLENBQUMsQ0FBQyxDQUFELENBQXBDLEVBQXlDMGxCLFNBQVMsQ0FBQzcvQixNQUFuRCxDQUFiLENBQVIsQ0FKSyxDQU1MOztNQUNBbWEsQ0FBQyxDQUFDLENBQUQsQ0FBRCxJQUFRLENBQVIsQ0FQSyxDQVNMO01BQ0E7TUFDQTs7TUFDQSxJQUFJN00sR0FBRyxDQUFDLENBQUQsQ0FBSCxHQUFTRCxLQUFLLENBQUMsQ0FBRCxDQUFsQixFQUF1QjtRQUNyQnN5QixLQUFLLEdBQUdBLEtBQUssQ0FBQ3o5QixNQUFOLENBQWEsS0FBSzQ5QixrQkFBTCxDQUF3QjNsQixDQUFDLENBQUMsQ0FBRCxDQUF6QixFQUE4QkEsQ0FBQyxDQUFDLENBQUQsQ0FBL0IsRUFBb0MsRUFBcEMsQ0FBYixDQUFSLENBRHFCLENBRXJCO1FBQ0E7O1FBQ0EsQ0FBQ0EsQ0FBQyxDQUFDLENBQUQsQ0FBRixFQUFPQSxDQUFDLENBQUMsQ0FBRCxDQUFSLElBQWUsQ0FBQzdNLEdBQUcsQ0FBQyxDQUFELENBQUosRUFBUyxDQUFULENBQWY7TUFDRCxDQWpCSSxDQW1CTDtNQUNBOzs7TUFDQSxJQUFJQSxHQUFHLENBQUMsQ0FBRCxDQUFILEdBQVM2TSxDQUFDLENBQUMsQ0FBRCxDQUFkLEVBQW1CO1FBQ2pCO1FBQ0F3bEIsS0FBSyxHQUFHQSxLQUFLLENBQUN6OUIsTUFBTixDQUFhLEtBQUs0OUIsa0JBQUwsQ0FBd0IzbEIsQ0FBQyxDQUFDLENBQUQsQ0FBekIsRUFBOEJBLENBQUMsQ0FBQyxDQUFELENBQS9CLEVBQW9DN00sR0FBRyxDQUFDLENBQUQsQ0FBSCxHQUFTLENBQTdDLENBQWIsQ0FBUjtRQUNBNk0sQ0FBQyxDQUFDLENBQUQsQ0FBRCxHQUFPN00sR0FBUDtNQUNELENBekJJLENBMkJMOzs7TUFDQXF5QixLQUFLLEdBQUdBLEtBQUssQ0FBQ3o5QixNQUFOLENBQWEsS0FBSzA5QixpQkFBTCxDQUF1QnR5QixHQUFHLENBQUMsQ0FBRCxDQUExQixFQUErQkEsR0FBRyxDQUFDLENBQUQsQ0FBbEMsRUFBdUMsQ0FBdkMsRUFBMENBLEdBQUcsQ0FBQyxDQUFELENBQTdDLENBQWIsQ0FBUjtJQUNEOztJQUVELE9BQU87TUFDTHF5QixLQURLO01BRUxJLE9BQU8sRUFBRSxLQUFLQyxZQUFMLENBQWtCTCxLQUFsQjtJQUZKLENBQVA7RUFJRDs7RUFFREcsa0JBQWtCLENBQUNyUSxJQUFELEVBQU9waUIsS0FBUCxFQUFjQyxHQUFkLEVBQW1CO0lBQ25DLElBQUkyeUIsU0FBUyxHQUFNLEVBQW5CO0lBQ0EsTUFBTUMsVUFBVSxHQUFHZixhQUFhLENBQUM5eEIsS0FBRCxFQUFRQyxHQUFSLENBQWhDO0lBRUE0eUIsVUFBVSxDQUFDbjhCLE9BQVgsQ0FBb0I0ckIsS0FBRCxJQUFXO01BQzVCLE1BQU0zb0IsQ0FBQyxHQUFHLEtBQUt3NEIsSUFBTCxDQUFVL1AsSUFBVixDQUFWO01BQ0EsTUFBTXJ0QixDQUFDLEdBQUc2NUIsZ0RBQUUsQ0FBQ2oxQixDQUFELENBQUYsR0FBUSxLQUFLdzRCLElBQUwsQ0FBVS9QLElBQVYsRUFBZ0JFLEtBQWhCLENBQVIsR0FBaUMsSUFBM0M7O01BRUEsSUFBSTNvQixDQUFDLElBQUk1RSxDQUFULEVBQVk7UUFDVjY5QixTQUFTLEdBQUdBLFNBQVMsQ0FBQy85QixNQUFWLENBQWlCLEtBQUswOUIsaUJBQUwsQ0FBdUJuUSxJQUF2QixFQUE2QkUsS0FBN0IsRUFBb0MsQ0FBcEMsRUFBdUN2dEIsQ0FBQyxDQUFDcEMsTUFBekMsQ0FBakIsQ0FBWjtNQUNEO0lBQ0YsQ0FQRDtJQVNBLE9BQU9pZ0MsU0FBUDtFQUNEOztFQUVETCxpQkFBaUIsQ0FBQ25RLElBQUQsRUFBT0UsS0FBUCxFQUFjd1EsUUFBZCxFQUF3QkMsTUFBeEIsRUFBZ0M7SUFDL0MsTUFBTXA1QixDQUFDLEdBQUcsS0FBS3c0QixJQUFMLENBQVUvUCxJQUFWLENBQVY7SUFDQSxNQUFNcnRCLENBQUMsR0FBRzY1QixnREFBRSxDQUFDajFCLENBQUQsQ0FBRixHQUFRLEtBQUt3NEIsSUFBTCxDQUFVL1AsSUFBVixFQUFnQkUsS0FBaEIsQ0FBUixHQUFpQyxJQUEzQzs7SUFFQSxJQUFJM29CLENBQUMsSUFBSTVFLENBQVQsRUFBWTtNQUNWLE9BQU9BLENBQUMsQ0FBQzBULEtBQUYsQ0FBU3FxQixRQUFRLEdBQUcsQ0FBcEIsRUFBd0JDLE1BQXhCLENBQVA7SUFDRDs7SUFDRCxPQUFPLEVBQVA7RUFDRDs7RUFFREMsU0FBUyxDQUFDNVEsSUFBRCxFQUFPRSxLQUFQLEVBQWNFLEdBQWQsRUFBbUI7SUFDMUIsTUFBTTdvQixDQUFDLEdBQUcsS0FBS3c0QixJQUFMLENBQVUvUCxJQUFWLENBQVY7SUFDQSxNQUFNcnRCLENBQUMsR0FBRzY1QixnREFBRSxDQUFDajFCLENBQUQsQ0FBRixHQUFRLEtBQUt3NEIsSUFBTCxDQUFVL1AsSUFBVixFQUFnQkUsS0FBaEIsQ0FBUixHQUFpQyxJQUEzQzs7SUFFQSxJQUFJM29CLENBQUMsSUFBSTVFLENBQVQsRUFBWTtNQUNWLE9BQU9BLENBQUMsQ0FBQ3l0QixHQUFHLEdBQUcsQ0FBUCxDQUFSO0lBQ0Q7O0lBQ0QsT0FBTyxJQUFQO0VBQ0Q7O0VBRURtUSxZQUFZLENBQUNMLEtBQUQsRUFBUXQ3QixFQUFSLEVBQVk7SUFDdEIsTUFBTWs3QixZQUFZLEdBQUcsS0FBS0EsWUFBTCxJQUFxQmw3QixFQUExQztJQUNBLElBQUkwN0IsT0FBTyxHQUFVLElBQXJCOztJQUVBLElBQUksT0FBT1IsWUFBUCxLQUF3QixVQUE1QixFQUF3QztNQUN0QyxNQUFNZSxZQUFZLEdBQUdYLEtBQUssQ0FBQ3g5QixNQUFOLENBQWNvK0IsSUFBRCxJQUFVLEtBQUtoQixZQUFMLENBQWtCZ0IsSUFBbEIsQ0FBdkIsQ0FBckI7TUFDQVIsT0FBTyxHQUFHTyxZQUFZLENBQUN0Z0MsTUFBYixJQUF1QjIvQixLQUFLLENBQUMzL0IsTUFBdkM7SUFDRDs7SUFFRCxPQUFPKy9CLE9BQVA7RUFDRDs7RUFFRFMsV0FBVyxDQUFDbmtCLEdBQUQsRUFBTW9rQixTQUFOLEVBQWlCO0lBQzFCLEtBQUtwa0IsR0FBTCxHQUFXaWpCLFlBQVksQ0FBQ29CLFVBQWIsQ0FBd0Jya0IsR0FBeEIsRUFBNkJva0IsU0FBN0IsQ0FBWDtJQUNBLE9BQU8sSUFBUDtFQUNEOztFQUVERSxTQUFTLEdBQUc7SUFDVixLQUFLdGtCLEdBQUwsR0FBVyxFQUFYO0lBQ0EsT0FBTyxJQUFQO0VBQ0Q7RUFFRDtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztFQUNtQixPQUFWcWtCLFVBQVUsQ0FBQ0UsSUFBRCxFQUFPQyxVQUFQLEVBQW1CO0lBQ2xDLElBQUksRUFBRWhDLHNEQUFRLENBQUMrQixJQUFJLENBQUNFLFlBQU4sQ0FBUixJQUNEakMsc0RBQVEsQ0FBQytCLElBQUksQ0FBQ0csYUFBTixDQURQLElBRURsQyxzREFBUSxDQUFDK0IsSUFBSSxDQUFDSSxhQUFOLENBRlQsQ0FBSixFQUVvQztNQUNsQyxPQUFPLElBQVA7SUFDRDs7SUFFRCxNQUFNQyxLQUFLLEdBQUlMLElBQUksQ0FBQ0UsWUFBTCxDQUFrQi9rQixLQUFsQixDQUF3QixFQUF4QixFQUE0Qk0sR0FBNUIsQ0FBZ0M5WSxVQUFoQyxDQUFmO0lBQ0EsTUFBTTI5QixLQUFLLEdBQUlOLElBQUksQ0FBQ0csYUFBTCxDQUFtQmhsQixLQUFuQixDQUF5QixHQUF6QixFQUE4Qk0sR0FBOUIsQ0FBa0M5WSxVQUFsQyxDQUFmO0lBQ0EsTUFBTTQ5QixNQUFNLEdBQUdQLElBQUksQ0FBQ0ksYUFBTCxDQUFtQmpsQixLQUFuQixDQUF5QixHQUF6QixFQUE4Qk0sR0FBOUIsQ0FBa0M5WSxVQUFsQyxDQUFmO0lBQ0EsSUFBSXNzQixHQUFHLEdBQVEsQ0FBZjtJQUVBLElBQUk7TUFDRkosSUFERTtNQUVGRSxLQUZFO01BR0ZsRCxJQUFJLEVBQUUyVTtJQUhKLElBSUFoQyxjQUFjLENBQUN5QixVQUFELENBSmxCLENBWmtDLENBa0JsQzs7SUFDQSxJQUFJSSxLQUFLLENBQUNBLEtBQUssQ0FBQ2poQyxNQUFOLEdBQWUsQ0FBaEIsQ0FBTCxLQUE0QixDQUFoQyxFQUFtQztNQUNqQ2loQyxLQUFLLENBQUMvN0IsSUFBTixDQUFXLENBQVg7SUFDRDs7SUFFRCxJQUFJbThCLFlBQVksR0FBRyxFQUFuQjtJQUVBLE9BQU9KLEtBQUssQ0FBQy8zQixNQUFOLENBQWEsQ0FBQ3kxQixJQUFELEVBQU96OUIsS0FBUCxFQUFjaUQsS0FBZCxFQUFxQjJZLEdBQXJCLEtBQTZCO01BQy9DLE1BQU05YyxNQUFNLEdBQWF1NkIseURBQVcsQ0FBQzlLLElBQUQsRUFBT0UsS0FBUCxDQUFwQztNQUNBLE1BQU02UCxJQUFJLEdBQWViLElBQXpCO01BQ0EsTUFBTTJDLE9BQU8sR0FBWUgsTUFBTSxDQUFDaDlCLEtBQUQsQ0FBL0I7TUFDQSxNQUFNbzlCLElBQUksR0FBZUwsS0FBSyxDQUFDLzhCLEtBQUQsQ0FBOUI7TUFDQSxNQUFNcTlCLFdBQVcsR0FBUXRnQyxLQUFLLEtBQUssQ0FBbkM7TUFDQSxNQUFNdWdDLGFBQWEsR0FBTTNrQixHQUFHLENBQUMzWSxLQUFLLEdBQUcsQ0FBVCxDQUFILEtBQW1CLENBQTVDO01BQ0EsTUFBTXU5QixnQkFBZ0IsR0FBSUYsV0FBVyxJQUFJLENBQUNDLGFBQWpCLEdBQWtDLElBQWxDLEdBQXlDLElBQWxFO01BQ0EsTUFBTUUsY0FBYyxHQUFNRCxnQkFBRCxHQUFxQixJQUFyQixHQUE0QixJQUFyRDs7TUFFQSxJQUFJLENBQUNsQyxJQUFJLENBQUMvUCxJQUFELENBQVQsRUFBaUI7UUFDZitQLElBQUksQ0FBQy9QLElBQUQsQ0FBSixHQUFhLEVBQWI7TUFDRDs7TUFFRCxJQUFJLENBQUMrUCxJQUFJLENBQUMvUCxJQUFELENBQUosQ0FBV0UsS0FBWCxDQUFMLEVBQXdCO1FBQ3RCNlAsSUFBSSxDQUFDL1AsSUFBRCxDQUFKLENBQVdFLEtBQVgsSUFBb0IsRUFBcEI7TUFDRDs7TUFFRCxJQUFJeVIsUUFBSixFQUFjO1FBQ1p2UixHQUFHLEdBQVF1UixRQUFYO1FBQ0FBLFFBQVEsR0FBRyxJQUFYO01BQ0QsQ0FyQjhDLENBdUIvQztNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBOzs7TUFFQTVCLElBQUksQ0FBQy9QLElBQUQsQ0FBSixDQUFXRSxLQUFYLEVBQWtCRSxHQUFsQixJQUF5QjtRQUN2QjBSLElBRHVCO1FBRXZCRCxPQUZ1QjtRQUd2QkUsV0FIdUI7UUFJdkJFLGdCQUp1QjtRQUt2QkM7TUFMdUIsQ0FBekI7O01BUUEsSUFBSTtRQUNGLElBQUlGLGFBQWEsSUFBSSxDQUFDRCxXQUF0QixFQUFtQztVQUNqQ2hDLElBQUksQ0FBQzZCLFlBQVksQ0FBQzVSLElBQWQsQ0FBSixDQUF3QjRSLFlBQVksQ0FBQzFSLEtBQXJDLEVBQTRDMFIsWUFBWSxDQUFDeFIsR0FBekQsRUFBOEQ4UixjQUE5RCxHQUErRSxJQUEvRTtVQUNBbkMsSUFBSSxDQUFDL1AsSUFBRCxDQUFKLENBQVdFLEtBQVgsRUFBa0JFLEdBQWxCLEVBQXVCNlIsZ0JBQXZCLEdBQTBDLEtBQTFDO1FBQ0Q7TUFDRixDQUxELENBS0UsT0FBTWpJLENBQU4sRUFBUyxDQUNUO01BQ0Q7O01BRUQ0SCxZQUFZLEdBQUc7UUFDYjVSLElBRGE7UUFFYkUsS0FGYTtRQUdiRTtNQUhhLENBQWY7O01BTUEsSUFBSUEsR0FBRyxHQUFHN3ZCLE1BQVYsRUFBa0I7UUFDaEI2dkIsR0FBRyxJQUFJLENBQVA7TUFDRCxDQUZELE1BRU87UUFDTCxJQUFJRixLQUFLLEdBQUcsRUFBWixFQUFnQjtVQUNkQSxLQUFLLEdBQUcsQ0FBUjtVQUNBRixJQUFJLElBQUksQ0FBUjtRQUNELENBSEQsTUFHTztVQUNMRSxLQUFLLElBQUksQ0FBVDtRQUNEOztRQUNERSxHQUFHLEdBQUcsQ0FBTjtNQUNEOztNQUVELE9BQU8yUCxJQUFQO0lBQ0QsQ0ExRU0sRUEwRUosRUExRUksQ0FBUDtFQTJFRDs7RUFFRG9DLGNBQWMsQ0FBQ25TLElBQUQsRUFBT0UsS0FBUCxFQUFjRSxHQUFkLEVBQW1CN2dCLFFBQW5CLEVBQTZCO0lBQ3pDLElBQUk2eUIsSUFBSjs7SUFFQSxJQUFJLEtBQUt4bEIsR0FBVCxFQUFjO01BQ1osSUFBSTtRQUNGd2xCLElBQUksR0FBRyxLQUFLeGxCLEdBQUwsQ0FBU29ULElBQVQsRUFBZUUsS0FBZixFQUFzQkUsR0FBdEIsRUFBMkI3Z0IsUUFBM0IsQ0FBUDtNQUNELENBRkQsQ0FFRSxPQUFNeXFCLENBQU4sRUFBUyxDQUNUO01BQ0Q7SUFDRjs7SUFFRCxPQUFPb0ksSUFBUDtFQUNEOztFQUVEQyxhQUFhLENBQUNyUyxJQUFELEVBQU9FLEtBQVAsRUFBY0UsR0FBZCxFQUFtQjtJQUM5QixPQUFPLENBQUMsS0FBSytSLGNBQUwsQ0FBb0JuUyxJQUFwQixFQUEwQkUsS0FBMUIsRUFBaUNFLEdBQWpDLEVBQXNDLGFBQXRDLENBQVI7RUFDRDs7QUE3UStCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzFCbEM7QUFDQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUlBO0FBRUE7QUFFZSxNQUFNNlMsUUFBTixTQUF1Qm5HLG9EQUF2QixDQUErQjtFQUM1Q3ZMLFdBQVcsQ0FBQzJSLElBQUQsRUFBTy9CLElBQVAsRUFBYTtJQUN0QjtJQUNBLEtBQUtsK0IsSUFBTCxHQUFlcy9CLG9EQUFmO0lBQ0EsS0FBS1ksT0FBTCxHQUFlM2lCLHNFQUFmO0lBQ0EsS0FBSzRpQixVQUFMLEdBQWtCYix5REFBbEI7O0lBRUEsSUFBSXpKLHNEQUFRLENBQUNvSyxJQUFELENBQVosRUFBb0I7TUFDbEIsSUFBSSxDQUFDQSxJQUFJLENBQUMvSCxFQUFWLEVBQWM7UUFDWixLQUFLbUksTUFBTCxDQUFZLHlCQUFaLEVBQXVDLE9BQXZDO1FBQ0E7TUFDRDs7TUFFRCxNQUFNQyxhQUFhLEdBQUdqRixtREFBSyxDQUFDaUUsK0NBQUQsRUFBU1csSUFBSSxDQUFDL0gsRUFBTCxDQUFRcUksT0FBakIsQ0FBM0I7TUFDQSxLQUFLTixJQUFMLEdBQXNCNUUsbURBQUssQ0FBQ2lGLGFBQUQsRUFBZ0JMLElBQWhCLENBQTNCO01BRUEsS0FBS0EsSUFBTCxHQUFZakYseURBQVcsQ0FBQyxLQUFLaUYsSUFBTixFQUFheG9CLENBQUQsSUFBT0EsQ0FBbkIsRUFBdUJDLENBQUQsSUFBTztRQUNsRCxJQUFJQSxDQUFDLEtBQUssTUFBTixJQUFnQkEsQ0FBQyxLQUFLLE9BQTFCLEVBQW1DO1VBQ2pDLE9BQVFBLENBQUMsS0FBSyxNQUFkO1FBQ0Q7O1FBQ0QsSUFBSW1qQix1REFBUyxDQUFDbmpCLENBQUQsQ0FBYixFQUFrQjtVQUNoQixPQUFPcWpCLFFBQVEsQ0FBQ3JqQixDQUFELEVBQUksRUFBSixDQUFmO1FBQ0Q7O1FBQ0QsT0FBT0EsQ0FBUDtNQUNELENBUnNCLENBQXZCOztNQVVBLElBQUksS0FBS3VvQixJQUFMLENBQVVPLFVBQWQsRUFBMEI7UUFDeEIsS0FBS0MsZ0JBQUw7TUFDRCxDQUZELE1BRU87UUFDTCxLQUFLdkksRUFBTCxHQUFVK0gsSUFBSSxDQUFDL0gsRUFBZjtNQUNEOztNQUVELEtBQUsrSCxJQUFMLENBQVU1SSxJQUFWLEdBQXlCLEtBQUs0SSxJQUFMLENBQVU1SSxJQUFWLElBQWtCLEtBQUs0SSxJQUFMLENBQVU1SSxJQUFWLElBQWtCa0ksZ0RBQXJDLEdBQWdELEtBQUtVLElBQUwsQ0FBVTVJLElBQTFELEdBQWlFLE9BQXpGO01BQ0EsS0FBS3FKLE1BQUwsR0FBd0JuQixnREFBTyxDQUFDLEtBQUtVLElBQUwsQ0FBVTVJLElBQVgsQ0FBL0I7TUFDQSxLQUFLcmUsTUFBTCxHQUF3QixLQUFLaW5CLElBQUwsQ0FBVVUsVUFBVixJQUF3QixLQUFLRCxNQUFMLENBQVlDLFVBQXBDLElBQWtELFVBQTFFO01BQ0EsS0FBS1YsSUFBTCxDQUFVVyxXQUFWLEdBQXdCLEtBQUtYLElBQUwsQ0FBVVcsV0FBVixJQUF5QixLQUFLRixNQUFMLENBQVlFLFdBQTdEO01BRUEsSUFBSTtRQUFFQztNQUFGLElBQWtCLEtBQUtaLElBQTNCO01BQ0EsTUFBTWxULElBQUksR0FBSThULFdBQVcsQ0FBQ2xOLFdBQVosRUFBZDtNQUNBLE1BQU0xRyxLQUFLLEdBQUc0VCxXQUFXLENBQUNDLFFBQVosRUFBZDtNQUNBLE1BQU0zVCxHQUFHLEdBQUswVCxXQUFXLENBQUNyVixPQUFaLEVBQWQ7TUFFQSxLQUFLeVUsSUFBTCxDQUFVWSxXQUFWLEdBQXdCLENBQUM5VCxJQUFELEVBQU9FLEtBQVAsRUFBY0UsR0FBZCxDQUF4Qjs7TUFFQSxJQUFJLENBQUMsS0FBSzhTLElBQUwsQ0FBVWMsU0FBZixFQUEwQjtRQUN4QixLQUFLZCxJQUFMLENBQVVjLFNBQVYsR0FBc0JoVSxJQUF0QjtNQUNEOztNQUVELElBQUksQ0FBQyxLQUFLa1QsSUFBTCxDQUFVZSxVQUFmLEVBQTJCO1FBQ3pCLEtBQUtmLElBQUwsQ0FBVWUsVUFBVixHQUF1Qi9ULEtBQXZCO01BQ0Q7SUFDRixDQWxEcUIsQ0FtRHRCOzs7SUFDQSxLQUFLZ1UsR0FBTCxHQUFhLEVBQWIsQ0FwRHNCLENBcUR0Qjs7SUFDQSxLQUFLQyxLQUFMLEdBQWEsSUFBSXRFLHNEQUFKLENBQWlCK0Msb0RBQWpCLEVBQW1DLEVBQW5DLENBQWIsQ0F0RHNCLENBdUR0Qjs7SUFDQSxJQUFJOUosc0RBQVEsQ0FBQ3FJLElBQUQsQ0FBWixFQUFvQjtNQUNsQixLQUFLZ0QsS0FBTCxDQUFXQyxPQUFYLENBQW1CakQsSUFBbkIsRUFBeUJBLElBQUksQ0FBQ2tELFVBQUwsSUFBbUI1QixpREFBUyxDQUFDLEtBQUtTLElBQUwsQ0FBVVksV0FBWCxDQUFyRDtJQUNELENBMURxQixDQTREdEI7OztJQUNBLEtBQUtRLFdBQUwsR0FBeUIsS0FBekI7SUFDQSxLQUFLQyxpQkFBTCxHQUF5QixFQUF6QjtJQUNBLEtBQUtDLGFBQUwsR0FBeUIsSUFBekIsQ0EvRHNCLENBaUV0QjtJQUNBOztJQUNBLEtBQUtDLG1CQUFMLEdBQTJCLEtBQUt2QixJQUFMLENBQVV1QixtQkFBckM7SUFDQSxLQUFLQyxJQUFMO0VBQ0Q7O0VBRURBLElBQUksR0FBRztJQUNMeEosdURBQVEsQ0FBQyxLQUFLQyxFQUFOLEVBQVVuNUIsdUVBQVYsRUFBMkJnaEMsaUZBQTNCLENBQVI7O0lBRUEsSUFBSSxDQUFDLEtBQUs3SCxFQUFMLENBQVFxSSxPQUFSLENBQWdCb0IsS0FBckIsRUFBNEI7TUFDMUIsS0FBS3pKLEVBQUwsQ0FBUXFJLE9BQVIsQ0FBZ0JvQixLQUFoQixHQUF3QixLQUFLMUIsSUFBTCxDQUFVMEIsS0FBbEM7SUFDRDs7SUFFRCxLQUFLVixHQUFMLENBQVNXLGFBQVQsR0FBeUIsS0FBSzFKLEVBQUwsQ0FBUTJKLFdBQVIsQ0FBb0JuSixnRUFBaUIsQ0FBQzJHLDZDQUFELENBQXJDLENBQXpCO0lBQ0EsS0FBSzRCLEdBQUwsQ0FBU2EsT0FBVCxHQUF5QixLQUFLNUosRUFBTCxDQUFRMkosV0FBUixDQUFvQm5KLGdFQUFpQixDQUFDMkcsZ0RBQUQsQ0FBckMsQ0FBekI7SUFDQSxLQUFLNEIsR0FBTCxDQUFTYyxJQUFULEdBQXlCLEtBQUs3SixFQUFMLENBQVEySixXQUFSLENBQW9CbkosZ0VBQWlCLENBQUMyRyw2Q0FBRCxDQUFyQyxDQUF6QjtJQUNBLEtBQUsyQyxZQUFMLENBQWtCLEtBQUsvQixJQUFMLENBQVVjLFNBQTVCLEVBQXVDLEtBQUtkLElBQUwsQ0FBVWUsVUFBakQ7SUFFQSxLQUFLaUIsYUFBTDs7SUFFQSxJQUFJLEtBQUtoQyxJQUFMLENBQVVpQyxVQUFWLElBQXdCLEtBQUtqQyxJQUFMLENBQVVrQyxTQUFsQyxJQUErQyxLQUFLbEMsSUFBTCxDQUFVbUMsT0FBN0QsRUFBc0U7TUFDcEUsSUFBSSxDQUFDLEtBQUtuQyxJQUFMLENBQVVvQyxRQUFmLEVBQXlCO1FBQ3ZCLEtBQUtDLGNBQUw7TUFDRDs7TUFFRCxLQUFLeEksRUFBTCxDQUFRLGFBQVIsRUFBdUIsTUFBTSxLQUFLd0ksY0FBTCxFQUE3QjtNQUNBLEtBQUtyQyxJQUFMLENBQVVrQyxTQUFWLENBQW9CenhCLGdCQUFwQixDQUFxQyxPQUFyQyxFQUE4QyxNQUFNLEtBQUs0eEIsY0FBTCxFQUFwRDtNQUNBLEtBQUtyQyxJQUFMLENBQVVtQyxPQUFWLENBQWtCMXhCLGdCQUFsQixDQUFtQyxPQUFuQyxFQUE0QyxNQUFNLEtBQUs0eEIsY0FBTCxFQUFsRDtJQUNEOztJQUVELElBQUksS0FBS3JDLElBQUwsQ0FBVW9DLFFBQVYsSUFBc0IsQ0FBQyxLQUFLcEMsSUFBTCxDQUFVTyxVQUFyQyxFQUFpRDtNQUMvQyxLQUFLK0IsUUFBTCxDQUFjLEtBQUt0QyxJQUFMLENBQVVvQyxRQUF4QjtJQUNEOztJQUVELEtBQUtuSyxFQUFMLENBQVFxSSxPQUFSLENBQWdCMkIsVUFBaEIsR0FBNkIsS0FBS2pDLElBQUwsQ0FBVWlDLFVBQXZDO0lBRUEsS0FBSzdCLE1BQUwsQ0FBWSxRQUFaO0lBQ0EsS0FBSzlGLElBQUwsQ0FBVSxNQUFWO0VBQ0Q7O0VBRURpSSxvQkFBb0IsQ0FBQ0MsU0FBRCxFQUFZO0lBQzlCLElBQUtBLFNBQVMsS0FBSyxLQUFLakIsbUJBQXBCLElBQTRDLENBQUMsS0FBS0gsV0FBdEQsRUFBbUU7TUFDakUsS0FBS0csbUJBQUwsR0FBMkJpQixTQUEzQjtNQUNBLEtBQUtDLGFBQUw7TUFDQSxLQUFLVixZQUFMLENBQWtCLEtBQUtqQixTQUF2QixFQUFrQyxLQUFLQyxVQUF2QztJQUNEO0VBQ0Y7O0VBRURnQixZQUFZLENBQUNqQixTQUFELEVBQVlDLFVBQVosRUFBd0I7SUFDbEM7SUFDQSxNQUFNO01BQ0psRSxJQURJO01BQ0U2RixPQURGO01BQ1dDLFFBRFg7TUFDcUJuVjtJQURyQixJQUVGLEtBQUtvVixVQUFMLENBQWdCOUIsU0FBaEIsRUFBMkJDLFVBQTNCLEVBQXVDLEtBQUtmLElBQUwsQ0FBVTZDLGFBQWpELENBRko7SUFJQSxLQUFLNUIsS0FBTCxDQUFXbkUsT0FBWCxDQUFtQkQsSUFBbkI7SUFFQSxLQUFLa0UsVUFBTCxHQUFrQkEsVUFBbEI7SUFDQSxLQUFLRCxTQUFMLEdBQWtCQSxTQUFsQjtJQUVBLEtBQUs2QixRQUFMLEdBQWdCQSxRQUFoQjtJQUNBLEtBQUtELE9BQUwsR0FBZ0JBLE9BQWhCOztJQUVBLElBQUksS0FBSzFDLElBQUwsQ0FBVWlDLFVBQWQsRUFBMEI7TUFDeEJqSyx1REFBUSxDQUFDLEtBQUtDLEVBQU4sRUFBVSxLQUFLc0osbUJBQUwsR0FBMkJ6aUMsdUVBQTNCLEdBQTZDQSxxRUFBdkQsQ0FBUjtNQUNBKzRCLDBEQUFXLENBQUMsS0FBS0ksRUFBTixFQUFVLEtBQUtzSixtQkFBTCxHQUEyQnppQyxxRUFBM0IsR0FBMkNBLHVFQUFyRCxDQUFYO0lBQ0Q7O0lBRUQsS0FBS2tpQyxHQUFMLENBQVN4VCxNQUFULEdBQWtCQSxNQUFsQjtJQUNBLEtBQUt3VCxHQUFMLENBQVN4VCxNQUFULENBQWdCcHNCLE9BQWhCLENBQXlCM0IsQ0FBRCxJQUFPO01BQzdCLEtBQUt1aEMsR0FBTCxDQUFTVyxhQUFULENBQXVCQyxXQUF2QixDQUFtQ25pQyxDQUFuQzs7TUFDQSxJQUFJLEtBQUt1Z0MsSUFBTCxDQUFVaUMsVUFBZCxFQUEwQjtRQUN4QixLQUFLZSxjQUFMLENBQW9CdmpDLENBQXBCO1FBQ0F1NEIsdURBQVEsQ0FBQyxLQUFLQyxFQUFOLEVBQVVuNUIsNkVBQVYsQ0FBUjtNQUNEO0lBQ0YsQ0FORDs7SUFRQSxJQUFJLENBQUMsS0FBS2toQyxJQUFMLENBQVVrRCxhQUFmLEVBQThCO01BQzVCLEtBQUtDLGNBQUw7SUFDRDs7SUFFRCxLQUFLQyxpQkFBTDtFQUNEOztFQUVEQSxpQkFBaUIsR0FBRztJQUNsQixJQUFJLEtBQUtDLGNBQVQsRUFBeUI7TUFDdkIsS0FBS0MsV0FBTCxDQUFpQixLQUFLRCxjQUF0QixFQUFzQyxLQUFLcEMsS0FBTCxDQUFXdkQsU0FBWCxDQUFxQixHQUFHLEtBQUsyRixjQUE3QixDQUF0QztJQUNEOztJQUVELElBQUksS0FBS0UsWUFBVCxFQUF1QjtNQUNyQixLQUFLQyxTQUFMLENBQWUsS0FBS0QsWUFBcEIsRUFBa0MsS0FBS3RDLEtBQUwsQ0FBV3ZELFNBQVgsQ0FBcUIsR0FBRyxLQUFLNkYsWUFBN0IsQ0FBbEM7SUFDRDs7SUFFRCxJQUFJLEtBQUtGLGNBQUwsSUFBdUIsS0FBS0UsWUFBaEMsRUFBOEM7TUFDNUMsSUFBSSxLQUFLbEMsaUJBQUwsQ0FBdUJoa0MsTUFBdkIsR0FBZ0MsQ0FBcEMsRUFBdUM7UUFDckMsS0FBS29tQyxjQUFMLENBQW9CLEdBQUcsS0FBS3BDLGlCQUE1QjtNQUNELENBRkQsTUFFTztRQUNMLEtBQUtvQyxjQUFMLENBQW9CLEtBQUtKLGNBQXpCLEVBQXlDLEtBQUtFLFlBQTlDO01BQ0Q7SUFDRjtFQUNGOztFQUVESixjQUFjLEdBQUc7SUFDZixJQUFJLEtBQUtuRCxJQUFMLENBQVUwRCxjQUFkLEVBQThCO01BQzVCLE1BQU1DLFNBQVMsR0FBVXBFLGlEQUFTLENBQUMsS0FBS3VCLFNBQU4sRUFBaUIsS0FBS0MsVUFBdEIsRUFBa0MsQ0FBbEMsQ0FBbEM7TUFDQSxJQUFJO1FBQUVIO01BQUYsSUFBcUIsS0FBS1osSUFBOUI7TUFDQVksV0FBVyxHQUFjckIsaURBQVMsQ0FBQ3FCLFdBQVcsQ0FBQyxDQUFELENBQVosRUFBaUJBLFdBQVcsQ0FBQyxDQUFELENBQTVCLEVBQWlDLENBQWpDLENBQWxDO01BQ0EsS0FBS0ksR0FBTCxDQUFTYyxJQUFULENBQWM4QixRQUFkLEdBQXlCRCxTQUFTLElBQUkvQyxXQUF0QztJQUNEO0VBQ0Y7O0VBRURpRCxhQUFhLEdBQUc7SUFDZCxJQUFJLENBQUN6Syx1REFBUSxDQUFDLEtBQUtuQixFQUFOLEVBQVVuNUIsc0VBQVYsQ0FBYixFQUF3QztNQUN0Q2s1Qix1REFBUSxDQUFDLEtBQUtDLEVBQU4sRUFBVW41QixzRUFBVixDQUFSO01BQ0EsS0FBS3c3QixJQUFMLENBQVUsY0FBVjtJQUNELENBSEQsTUFHTztNQUNMekMsMERBQVcsQ0FBQyxLQUFLSSxFQUFOLEVBQVVuNUIsc0VBQVYsQ0FBWDtNQUNBLEtBQUt3N0IsSUFBTCxDQUFVLGNBQVY7SUFDRDtFQUNGOztFQUVENEcsT0FBTyxDQUFDakQsSUFBRCxFQUFPO0lBQ1osS0FBS2dELEtBQUwsQ0FBV3BELFdBQVgsQ0FBdUJJLElBQXZCLEVBQTZCQSxJQUFJLENBQUNrRCxVQUFsQztJQUNBLEtBQUtzQixhQUFMO0lBQ0EsS0FBS1YsWUFBTCxDQUNFLEtBQUsvQixJQUFMLENBQVVjLFNBQVYsSUFBdUIsS0FBS0EsU0FEOUIsRUFFRSxLQUFLZCxJQUFMLENBQVVlLFVBQVYsSUFBd0IsS0FBS0EsVUFGL0I7RUFJRDs7RUFFRGlCLGFBQWEsR0FBRztJQUNkLEtBQUtoQixHQUFMLENBQVNhLE9BQVQsQ0FBaUJweEIsZ0JBQWpCLENBQWtDLE9BQWxDLEVBQTRDcW1CLENBQUQsSUFBTztNQUNoRCxLQUFLMkwsYUFBTDtNQUNBLElBQUlzQixhQUFhLEdBQUcsS0FBS2hELFVBQUwsSUFBbUIsS0FBS2YsSUFBTCxDQUFVZ0Usb0JBQVYsSUFBa0MsS0FBS2hFLElBQUwsQ0FBVTZDLGFBQS9ELENBQXBCO01BQ0EsSUFBSW9CLFlBQVksR0FBRyxLQUFLbkQsU0FBeEI7O01BRUEsSUFBSWlELGFBQWEsSUFBSSxFQUFyQixFQUF5QjtRQUN2QkEsYUFBYSxJQUFJLEVBQWpCO1FBQ0FFLFlBQVksSUFBSSxDQUFoQjtNQUNEOztNQUVELEtBQUtsQyxZQUFMLENBQWtCa0MsWUFBbEIsRUFBZ0NGLGFBQWhDO01BQ0FqTixDQUFDLENBQUNvTixjQUFGO0lBQ0QsQ0FaRDtJQWNBLEtBQUtsRCxHQUFMLENBQVNjLElBQVQsQ0FBY3J4QixnQkFBZCxDQUErQixPQUEvQixFQUF5Q3FtQixDQUFELElBQU87TUFDN0MsS0FBSzJMLGFBQUw7TUFDQSxJQUFJc0IsYUFBYSxHQUFHLEtBQUtoRCxVQUFMLElBQW1CLEtBQUtmLElBQUwsQ0FBVWdFLG9CQUFWLElBQWtDLEtBQUtoRSxJQUFMLENBQVU2QyxhQUEvRCxDQUFwQjtNQUNBLElBQUlvQixZQUFZLEdBQUksS0FBS25ELFNBQXpCOztNQUVBLElBQUlpRCxhQUFhLEdBQUcsQ0FBcEIsRUFBdUI7UUFDckJBLGFBQWEsSUFBSSxFQUFqQjtRQUNBRSxZQUFZLElBQUksQ0FBaEI7TUFDRDs7TUFFRCxLQUFLbEMsWUFBTCxDQUFrQmtDLFlBQWxCLEVBQWdDRixhQUFoQztNQUNBak4sQ0FBQyxDQUFDb04sY0FBRjtJQUNELENBWkQ7RUFhRDs7RUFFRGxCLGNBQWMsQ0FBQy9LLEVBQUQsRUFBSztJQUNqQkEsRUFBRSxDQUFDeG5CLGdCQUFILENBQW9CLE9BQXBCLEVBQThCcW1CLENBQUQsSUFBTztNQUNsQyxNQUFNcU4sVUFBVSxHQUFHLEtBQUs1QyxtQkFBeEI7TUFDQSxNQUFNO1FBQ0p6MUIsS0FESTtRQUVKcEosTUFBTSxFQUFFazdCO01BRkosSUFHRjNFLHVFQUF3QixDQUFDbkMsQ0FBQyxDQUFDdnNCLE1BQUgsRUFBVyxZQUFYLENBSDVCOztNQUtBLE1BQU02NUIsc0JBQXNCLEdBQUl0SyxLQUFELElBQVc7UUFDeEMsTUFBTWxoQixHQUFHLEdBQUdraEIsS0FBSyxDQUFDbGhCLEdBQU4sSUFBYWtoQixLQUFLLENBQUN1SyxPQUEvQjs7UUFFQSxJQUFJenJCLEdBQUcsS0FBSyxRQUFSLElBQW9CQSxHQUFHLEtBQUssS0FBNUIsSUFBcUNBLEdBQUcsS0FBSyxFQUFqRCxFQUFxRDtVQUNuRCxJQUFJLEtBQUt3b0IsV0FBVCxFQUFzQjtZQUNwQjU1QixRQUFRLENBQUNrSixtQkFBVCxDQUE2QixPQUE3QixFQUFzQzB6QixzQkFBdEMsRUFBOEQsSUFBOUQ7WUFDQSxLQUFLRSxjQUFMO1VBQ0Q7UUFDRjtNQUNGLENBVEQ7O01BV0E5OEIsUUFBUSxDQUFDaUosZ0JBQVQsQ0FBMEIsT0FBMUIsRUFBbUMyekIsc0JBQW5DLEVBQTJELElBQTNEOztNQUVBLElBQUk5SyxpREFBRSxDQUFDeHRCLEtBQUQsQ0FBRixJQUFhOHhCLElBQWpCLEVBQXVCO1FBQ3JCLE1BQU0yRyxTQUFTLEdBQVksQ0FBQ3RNLEVBQUUsQ0FBQ25MLElBQUosRUFBVW1MLEVBQUUsQ0FBQ2pMLEtBQWIsRUFBb0I4TixRQUFRLENBQUM4QyxJQUFJLENBQUNqRSxZQUFMLENBQWtCLFlBQWxCLENBQUQsRUFBa0MsRUFBbEMsQ0FBNUIsQ0FBM0I7UUFDQSxNQUFNNkssa0JBQWtCLEdBQUcsS0FBS3BELFdBQUwsSUFBb0IzQixpREFBUyxDQUFFMEUsVUFBRCxHQUFlLEtBQUtaLFlBQXBCLEdBQW1DLEtBQUtGLGNBQXpDLEVBQXlEa0IsU0FBekQsQ0FBeEQ7UUFDQSxNQUFNRSxhQUFhLEdBQVEsQ0FBQyxLQUFLckQsV0FBTixJQUFxQixLQUFLbUMsWUFBMUIsSUFBMEMsS0FBS0YsY0FBMUU7UUFDQSxNQUFNcUIsV0FBVyxHQUFVbEYsK0NBQU8sQ0FBQytFLFNBQUQsRUFBWSxLQUFLdkUsSUFBTCxDQUFVWSxXQUF0QixDQUFsQzs7UUFFQSxJQUFJNEQsa0JBQWtCLElBQUlDLGFBQXRCLElBQXVDQyxXQUEzQyxFQUF3RDtVQUN0RGw5QixRQUFRLENBQUNrSixtQkFBVCxDQUE2QixPQUE3QixFQUFzQzB6QixzQkFBdEMsRUFBOEQsSUFBOUQ7VUFDQSxLQUFLRSxjQUFMO1FBQ0Q7O1FBRUQsSUFBSSxDQUFDRSxrQkFBRCxJQUF1QixDQUFDRSxXQUF4QixJQUF1QyxDQUFDLEtBQUsxRSxJQUFMLENBQVVrRCxhQUF0RCxFQUFxRTtVQUNuRSxJQUFJaUIsVUFBSixFQUFnQjtZQUNkLEtBQUtRLGtCQUFMLENBQXdCSixTQUF4QixFQUFtQzNHLElBQW5DO1VBQ0QsQ0FGRCxNQUVPO1lBQ0wsS0FBS2dILG9CQUFMLENBQTBCTCxTQUExQixFQUFxQzNHLElBQXJDO1VBQ0Q7UUFDRixDQU5ELE1BTU87VUFDTC9GLDBEQUFXLENBQUMsS0FBS0ksRUFBTixFQUFVbjVCLDhFQUFWLEVBQWtDQSxnRkFBbEMsQ0FBWDtVQUNBLE9BQU84K0IsSUFBSSxDQUFDMEMsT0FBTCxDQUFheUUsV0FBcEI7UUFDRDs7UUFFRCxJQUFJLEtBQUt4QixZQUFMLElBQXFCLEtBQUtGLGNBQTFCLElBQTRDLEtBQUsvQixhQUFyRCxFQUFvRTtVQUNsRTk1QixRQUFRLENBQUNrSixtQkFBVCxDQUE2QixPQUE3QixFQUFzQzB6QixzQkFBdEMsRUFBOEQsSUFBOUQ7VUFDQSxLQUFLWSxpQkFBTCxDQUF1QmIsVUFBdkIsRUFBbUNJLFNBQW5DLEVBQThDM0csSUFBOUM7O1VBQ0EsSUFBSSxLQUFLb0MsSUFBTCxDQUFVTyxVQUFWLElBQXdCLEtBQUswRSxPQUFqQyxFQUEwQztZQUN4QyxLQUFLQyxTQUFMLENBQWUsSUFBZixFQUFxQixJQUFyQjtVQUNEO1FBQ0Y7TUFDRjtJQUNGLENBbEREO0lBb0RBak4sRUFBRSxDQUFDeG5CLGdCQUFILENBQW9CLFdBQXBCLEVBQWtDcW1CLENBQUQsSUFBTztNQUN0QyxNQUFNO1FBQUVockIsS0FBRjtRQUFTcEosTUFBTSxFQUFFazdCO01BQWpCLElBQTBCM0UsdUVBQXdCLENBQUNuQyxDQUFDLENBQUN2c0IsTUFBSCxFQUFXLFlBQVgsQ0FBeEQ7O01BRUEsSUFBSSt1QixpREFBRSxDQUFDeHRCLEtBQUQsQ0FBRixJQUFhOHhCLElBQWpCLEVBQXVCO1FBQ3JCLE1BQU1wa0IsT0FBTyxHQUFZLENBQUN5ZSxFQUFFLENBQUNuTCxJQUFKLEVBQVVtTCxFQUFFLENBQUNqTCxLQUFiLEVBQW9COE4sUUFBUSxDQUFDOEMsSUFBSSxDQUFDakUsWUFBTCxDQUFrQixZQUFsQixDQUFELEVBQWtDLEVBQWxDLENBQTVCLENBQXpCO1FBQ0EsTUFBTStLLFdBQVcsR0FBUWxGLCtDQUFPLENBQUNobUIsT0FBRCxFQUFVLEtBQUt3bUIsSUFBTCxDQUFVWSxXQUFwQixDQUFoQztRQUNBLE1BQU11RCxVQUFVLEdBQVMsS0FBSzVDLG1CQUE5Qjs7UUFFQSxJQUFJbUQsV0FBVyxJQUFJLENBQUMsS0FBSzFFLElBQUwsQ0FBVWtELGFBQTlCLEVBQTZDO1VBQzNDO1FBQ0Q7O1FBRUQsSUFBSSxLQUFLOUIsV0FBVCxFQUFzQjtVQUNwQixLQUFLK0QsZUFBTDtVQUVBLE1BQU1DLEtBQUssR0FBRyxLQUFLbk4sRUFBTCxDQUFRb04sZ0JBQVIsQ0FBeUIsY0FBekIsQ0FBZDtVQUNBRCxLQUFLLENBQUNoa0MsT0FBTixDQUFlNjJCLEVBQUQsSUFBUTtZQUNwQixPQUFPQSxFQUFFLENBQUNxSSxPQUFILENBQVdnRixPQUFsQjtZQUNBLE9BQU9yTixFQUFFLENBQUNxSSxPQUFILENBQVdpRixhQUFsQjtVQUNELENBSEQsRUFKb0IsQ0FTcEI7O1VBQ0EsSUFBSXBCLFVBQVUsSUFBSSxLQUFLWixZQUFuQixJQUFtQyxDQUFDOUQsaURBQVMsQ0FBQ2ptQixPQUFELEVBQVUsS0FBSytwQixZQUFmLENBQWpELEVBQStFO1lBQzdFLElBQUkvRCwrQ0FBTyxDQUFDLEtBQUsrRCxZQUFOLEVBQW9CL3BCLE9BQXBCLENBQVgsRUFBeUM7Y0FDdkMsTUFBTWdzQixLQUFLLEdBQUcsS0FBS0MsS0FBbkI7Y0FDQSxNQUFNO2dCQUFFbEM7Y0FBRixJQUFtQixJQUF6QjtjQUVBLEtBQUttQyx3QkFBTCxDQUE4QixLQUE5QixFQUFxQ25DLFlBQXJDO2NBQ0EsS0FBS3FCLG9CQUFMLENBQTBCLEtBQUtyQixZQUEvQixFQUE2Q2lDLEtBQTdDO1lBQ0Q7VUFDRixDQVJELE1BUU8sSUFBSSxDQUFDckIsVUFBRCxJQUFlLEtBQUtkLGNBQXBCLElBQXNDLENBQUM1RCxpREFBUyxDQUFDam1CLE9BQUQsRUFBVSxLQUFLNnBCLGNBQWYsQ0FBcEQsRUFBb0Y7WUFDekYsSUFBSTdELCtDQUFPLENBQUNobUIsT0FBRCxFQUFVLEtBQUs2cEIsY0FBZixDQUFYLEVBQTJDO2NBQ3pDLE1BQU1vQyxLQUFLLEdBQUcsS0FBS0QsS0FBbkI7Y0FDQSxNQUFNO2dCQUFFbkM7Y0FBRixJQUFxQixJQUEzQjtjQUVBLEtBQUtxQyx3QkFBTCxDQUE4QixJQUE5QixFQUFvQ3JDLGNBQXBDO2NBQ0EsS0FBS3NCLGtCQUFMLENBQXdCLEtBQUt0QixjQUE3QixFQUE2Q29DLEtBQTdDO1lBQ0Q7VUFDRjs7VUFFRCxJQUFJLEtBQUtsRSxtQkFBVCxFQUE4QjtZQUM1QixLQUFLa0MsY0FBTCxDQUFvQmpxQixPQUFwQixFQUE2QixLQUFLK3BCLFlBQWxDO1VBQ0QsQ0FGRCxNQUVPO1lBQ0wsS0FBS0UsY0FBTCxDQUFvQixLQUFLSixjQUF6QixFQUF5QzdwQixPQUF6QztVQUNEO1FBQ0YsQ0FqQ0QsTUFpQ087VUFDTCxLQUFLa3NCLHdCQUFMLENBQThCLEtBQUsxRixJQUFMLENBQVV1QixtQkFBeEM7VUFFQSxNQUFNb0UsY0FBYyxHQUFLL0gsSUFBSSxDQUFDMEMsT0FBTCxDQUFhc0QsUUFBYixLQUEwQixNQUFuRDtVQUNBLE1BQU1nQyxnQkFBZ0IsR0FBR2hJLElBQUksQ0FBQzBDLE9BQUwsQ0FBYXNELFFBQWIsS0FBMEIsUUFBbkQ7VUFDQSxNQUFNaUMsZUFBZSxHQUFJakksSUFBSSxDQUFDMEMsT0FBTCxDQUFhc0QsUUFBYixLQUEwQixPQUFuRDtVQUVBLElBQUlrQyxTQUFTLEdBQUcsRUFBaEI7O1VBRUEsSUFBSTNCLFVBQVUsSUFBSTBCLGVBQWQsSUFBaUNELGdCQUFqQyxJQUFxRCxDQUFDekIsVUFBRCxJQUFld0IsY0FBeEUsRUFBd0Y7WUFDdEZHLFNBQVMsR0FBRyxTQUFaO1VBQ0Q7O1VBRUQsTUFBTVYsS0FBSyxHQUFHLEtBQUtuTixFQUFMLENBQVFvTixnQkFBUixDQUF5QixjQUF6QixDQUFkO1VBQ0EsSUFBSVUsVUFBSjtVQUVBWCxLQUFLLENBQUNoa0MsT0FBTixDQUFjLENBQUM2MkIsRUFBRCxFQUFLejJCLEtBQUwsS0FBZTtZQUMzQixPQUFPeTJCLEVBQUUsQ0FBQ3FJLE9BQUgsQ0FBV2dGLE9BQWxCO1lBQ0EsT0FBT3JOLEVBQUUsQ0FBQ3FJLE9BQUgsQ0FBV2lGLGFBQWxCOztZQUVBLElBQUl0TixFQUFFLEtBQUsyRixJQUFYLEVBQWlCO2NBQ2ZtSSxVQUFVLEdBQUksS0FBSy9GLElBQUwsQ0FBVXVCLG1CQUFYLEdBQWtDNkQsS0FBSyxDQUFDNWpDLEtBQUssR0FBRyxDQUFULENBQXZDLEdBQXFENGpDLEtBQUssQ0FBQzVqQyxLQUFLLEdBQUcsQ0FBVCxDQUF2RTtZQUNEO1VBQ0YsQ0FQRDs7VUFTQSxJQUFJODNCLGlEQUFFLENBQUN5TSxVQUFELENBQU4sRUFBb0I7WUFDbEJBLFVBQVUsQ0FBQ3pGLE9BQVgsQ0FBbUJpRixhQUFuQixHQUFtQyxFQUFuQztVQUNEOztVQUVEM0gsSUFBSSxDQUFDMEMsT0FBTCxDQUFhZ0YsT0FBYixHQUF1QlEsU0FBdkI7UUFDRDtNQUNGO0lBQ0YsQ0E3RUQ7SUErRUE3TixFQUFFLENBQUNwd0IsSUFBSCxDQUFRNEksZ0JBQVIsQ0FBeUIsVUFBekIsRUFBc0NxbUIsQ0FBRCxJQUFPO01BQzFDLE1BQU1zTyxLQUFLLEdBQUcsS0FBS25OLEVBQUwsQ0FBUW9OLGdCQUFSLENBQXlCLGNBQXpCLENBQWQ7TUFDQUQsS0FBSyxDQUFDaGtDLE9BQU4sQ0FBZTYyQixFQUFELElBQVE7UUFDcEIsT0FBT0EsRUFBRSxDQUFDcUksT0FBSCxDQUFXZ0YsT0FBbEI7UUFDQSxPQUFPck4sRUFBRSxDQUFDcUksT0FBSCxDQUFXaUYsYUFBbEI7TUFDRCxDQUhEO01BS0E7TUFDQTs7TUFDQSxJQUFJLENBQUN6TyxDQUFDLENBQUNrUCxhQUFILElBQ0VsUCxDQUFDLENBQUNrUCxhQUFGLEtBQW9CL04sRUFBRSxDQUFDcHdCLElBQXZCLElBQStCLEVBQUVvd0IsRUFBRSxDQUFDcHdCLElBQUgsQ0FBUW8rQix1QkFBUixDQUFnQ25QLENBQUMsQ0FBQ2tQLGFBQWxDLElBQ25DRSxJQUFJLENBQUNDLDhCQUQ0QixDQURyQyxFQUUyQztRQUN6QyxJQUFJLEtBQUsvRSxXQUFULEVBQXNCO1VBQ3BCLEtBQUsrRCxlQUFMO1FBQ0Q7TUFDRjtJQUNGLENBaEJEO0VBaUJEOztFQUVETyx3QkFBd0IsQ0FBQ2xELFNBQUQsRUFBOEI7SUFBQSxJQUFsQjRELFNBQWtCLHVFQUFOLElBQU07SUFDcEQsS0FBSzdFLG1CQUFMLEdBQTJCaUIsU0FBM0I7O0lBRUEsSUFBSTRELFNBQUosRUFBZTtNQUNiLEtBQUs5QixjQUFMO01BQ0EsS0FBS2pCLGNBQUwsR0FBdUJiLFNBQUQsR0FBYzRELFNBQWQsR0FBMEIsSUFBaEQ7TUFDQSxLQUFLN0MsWUFBTCxHQUF1QmYsU0FBRCxHQUFjLElBQWQsR0FBcUI0RCxTQUEzQztJQUNELENBSkQsTUFJTztNQUNMLEtBQUsvQyxjQUFMLEdBQXNCLEtBQUtFLFlBQTNCO01BQ0EsS0FBS0EsWUFBTCxHQUFvQixLQUFLRixjQUF6QjtJQUNEOztJQUVELElBQUksS0FBS3JELElBQUwsQ0FBVWlDLFVBQWQsRUFBMEI7TUFDeEJqSyx1REFBUSxDQUFDLEtBQUtDLEVBQU4sRUFBVXVLLFNBQVMsR0FBRzFqQyx1RUFBSCxHQUFxQkEscUVBQXhDLENBQVI7TUFDQSs0QiwwREFBVyxDQUFDLEtBQUtJLEVBQU4sRUFBVXVLLFNBQVMsR0FBRzFqQyxxRUFBSCxHQUFtQkEsdUVBQXRDLENBQVg7SUFDRDtFQUNGOztFQUVEOGxDLG9CQUFvQixDQUFDTCxTQUFELEVBQVkzRyxJQUFaLEVBQWtCO0lBQ3BDLElBQUksS0FBS3dELFdBQUwsSUFBb0I1QiwrQ0FBTyxDQUFDLEtBQUs2RCxjQUFOLEVBQXNCa0IsU0FBdEIsQ0FBL0IsRUFBaUU7TUFDL0QsS0FBSzhCLGVBQUwsQ0FBcUI5QixTQUFyQixFQUFnQzNHLElBQWhDOztNQUVBLE1BQU1sOEIsRUFBRSxHQUFHLE1BQU07UUFDZm0yQiwwREFBVyxDQUFDLEtBQUtJLEVBQU4sRUFBVW41Qiw4RUFBVixDQUFYO1FBQ0E4K0IsSUFBSSxDQUFDbHRCLG1CQUFMLENBQXlCLFVBQXpCLEVBQXFDaFAsRUFBckM7TUFDRCxDQUhEOztNQUtBazhCLElBQUksQ0FBQ250QixnQkFBTCxDQUFzQixVQUF0QixFQUFrQy9PLEVBQWxDO01BQ0EsS0FBSzAvQixXQUFMLEdBQW1CLEtBQW5CO0lBQ0QsQ0FWRCxNQVVPO01BQ0wsS0FBSytELGVBQUw7TUFDQW5OLHVEQUFRLENBQUMsS0FBS0MsRUFBTixFQUFVbjVCLDhFQUFWLENBQVI7TUFDQSxLQUFLc2lDLFdBQUwsR0FBbUIsSUFBbkI7TUFDQSxLQUFLa0YsaUJBQUwsQ0FBdUIvQixTQUF2QixFQUFrQzNHLElBQWxDO01BQ0FBLElBQUksQ0FBQzBDLE9BQUwsQ0FBYXlFLFdBQWIsR0FBMkIsTUFBM0I7SUFDRDtFQUNGOztFQUVESixrQkFBa0IsQ0FBQ0osU0FBRCxFQUFZM0csSUFBWixFQUFrQjtJQUNsQyxJQUFJLEtBQUt3RCxXQUFMLElBQW9CNUIsK0NBQU8sQ0FBQytFLFNBQUQsRUFBWSxLQUFLaEIsWUFBakIsQ0FBL0IsRUFBK0Q7TUFDN0QsS0FBSytDLGlCQUFMLENBQXVCL0IsU0FBdkIsRUFBa0MzRyxJQUFsQzs7TUFFQSxNQUFNbDhCLEVBQUUsR0FBRyxNQUFNO1FBQ2ZtMkIsMERBQVcsQ0FBQyxLQUFLSSxFQUFOLEVBQVVuNUIsZ0ZBQVYsQ0FBWDtRQUNBOCtCLElBQUksQ0FBQ2x0QixtQkFBTCxDQUF5QixVQUF6QixFQUFxQ2hQLEVBQXJDO01BQ0QsQ0FIRDs7TUFLQWs4QixJQUFJLENBQUNudEIsZ0JBQUwsQ0FBc0IsVUFBdEIsRUFBa0MvTyxFQUFsQztNQUNBLEtBQUswL0IsV0FBTCxHQUFtQixLQUFuQjtJQUNELENBVkQsTUFVTztNQUNMLEtBQUsrRCxlQUFMO01BQ0FuTix1REFBUSxDQUFDLEtBQUtDLEVBQU4sRUFBVW41QixnRkFBVixDQUFSO01BQ0EsS0FBS3NpQyxXQUFMLEdBQW1CLElBQW5CO01BQ0EsS0FBS2lGLGVBQUwsQ0FBcUI5QixTQUFyQixFQUFnQzNHLElBQWhDO01BQ0FBLElBQUksQ0FBQzBDLE9BQUwsQ0FBYXlFLFdBQWIsR0FBMkIsT0FBM0I7SUFDRDtFQUNGOztFQUVEdUIsaUJBQWlCLENBQUMvQixTQUFELEVBQVkzRyxJQUFaLEVBQWtCO0lBQ2pDLEtBQUswRixXQUFMLENBQWlCaUIsU0FBakIsRUFBNEIzRyxJQUE1QjtJQUNBLEtBQUsySSxnQkFBTCxDQUFzQixLQUF0Qjs7SUFDQSxJQUFJLEtBQUtqRixhQUFULEVBQXdCO01BQ3RCLEtBQUtoSCxJQUFMLENBQVUsaUJBQVYsRUFBNkJpRixpREFBUyxDQUFDLEdBQUdnRixTQUFKLEVBQWUsSUFBZixDQUF0QyxFQUE0RGhGLGlEQUFTLENBQUMsR0FBR2dGLFNBQUosQ0FBckU7O01BQ0EsSUFBSWhLLHlEQUFVLENBQUMsS0FBS3lGLElBQUwsQ0FBVXdHLGFBQVgsQ0FBZCxFQUF5QztRQUN2QyxLQUFLeEcsSUFBTCxDQUFVd0csYUFBVixDQUF3QmpILGlEQUFTLENBQUMsR0FBR2dGLFNBQUosRUFBZSxJQUFmLENBQWpDLEVBQXVEaEYsaURBQVMsQ0FBQyxHQUFHZ0YsU0FBSixDQUFoRTtNQUNEO0lBQ0Y7RUFDRjs7RUFFRDhCLGVBQWUsQ0FBQzlCLFNBQUQsRUFBWTNHLElBQVosRUFBa0I7SUFDL0IsS0FBSzRGLFNBQUwsQ0FBZWUsU0FBZixFQUEwQjNHLElBQTFCO0lBQ0EsS0FBSzJJLGdCQUFMLENBQXNCLE9BQXRCOztJQUNBLElBQUksS0FBS2pGLGFBQVQsRUFBd0I7TUFDdEIsS0FBS2hILElBQUwsQ0FBVSxlQUFWLEVBQTJCaUYsaURBQVMsQ0FBQyxHQUFHZ0YsU0FBSixFQUFlLElBQWYsQ0FBcEMsRUFBMERoRixpREFBUyxDQUFDLEdBQUdnRixTQUFKLENBQW5FOztNQUNBLElBQUloSyx5REFBVSxDQUFDLEtBQUt5RixJQUFMLENBQVV5RyxXQUFYLENBQWQsRUFBdUM7UUFDckMsS0FBS3pHLElBQUwsQ0FBVXlHLFdBQVYsQ0FBc0JsSCxpREFBUyxDQUFDLEdBQUdnRixTQUFKLEVBQWUsSUFBZixDQUEvQixFQUFxRGhGLGlEQUFTLENBQUMsR0FBR2dGLFNBQUosQ0FBOUQ7TUFDRDtJQUNGO0VBQ0Y7O0VBRURZLGVBQWUsR0FBRztJQUNoQixJQUFJLEtBQUs5RCxpQkFBTCxDQUF1QmhrQyxNQUF2QixHQUFnQyxDQUFwQyxFQUF1QztNQUNyQyxNQUFNO1FBQUUyL0I7TUFBRixJQUFZLEtBQUtELFdBQUwsQ0FBaUIsR0FBRyxLQUFLc0UsaUJBQXpCLENBQWxCO01BQ0FyRSxLQUFLLENBQUN0akIsR0FBTixDQUFXa2tCLElBQUQsSUFBVTtRQUNsQixPQUFPQSxJQUFJLENBQUMwQyxPQUFMLENBQWF5RSxXQUFwQjtRQUNBLE9BQU9uSCxJQUFJLENBQUMwQyxPQUFMLENBQWFvRyxPQUFwQjtNQUNELENBSEQ7TUFLQSxLQUFLQyxjQUFMO01BRUEsS0FBS3JGLGFBQUwsR0FBeUIsSUFBekI7TUFDQSxLQUFLRCxpQkFBTCxHQUF5QixFQUF6QjtJQUNEO0VBQ0Y7O0VBRURzRixjQUFjLEdBQUc7SUFDZixJQUFJck4saURBQUUsQ0FBQyxLQUFLc04sYUFBTixDQUFOLEVBQTRCO01BQzFCLEtBQUtBLGFBQUwsQ0FBbUI3a0MsT0FBbkI7SUFDRDs7SUFFRCxJQUFJdTNCLGlEQUFFLENBQUMsS0FBSzBILEdBQUwsQ0FBUzZGLE9BQVYsQ0FBTixFQUEwQjtNQUN4QnRPLDZEQUFjLENBQUMsS0FBS3lJLEdBQUwsQ0FBUzZGLE9BQVYsQ0FBZDtJQUNEO0VBQ0Y7O0VBRURwRCxjQUFjLENBQUMvNEIsS0FBRCxFQUFRQyxHQUFSLEVBQWE7SUFDekIsTUFBTTtNQUFFcXlCLEtBQUY7TUFBU0k7SUFBVCxJQUFxQixLQUFLTCxXQUFMLENBQWlCcnlCLEtBQWpCLEVBQXdCQyxHQUF4QixDQUEzQjtJQUNBLE1BQU07TUFBRXExQjtJQUFGLElBQXFCLElBQTNCO0lBQ0EsSUFBSTtNQUFFckIsT0FBRjtNQUFXbUk7SUFBWCxJQUF1QjlHLElBQTNCO0lBQ0EsSUFBSStHLG1CQUFKOztJQUVBLElBQUk1ckIsc0RBQU8sQ0FBQzZoQixLQUFELENBQVgsRUFBb0I7TUFDbEIsSUFBSWdELElBQUksQ0FBQ29DLFFBQVQsRUFBbUI7UUFDakIsSUFBSSxDQUFDcEMsSUFBSSxDQUFDZ0gsNEJBQVYsRUFBd0M7VUFDdEM7VUFDQXJJLE9BQU8sR0FBR3oyQixJQUFJLENBQUNqRCxHQUFMLENBQVMsR0FBRyszQixLQUFLLENBQUN0akIsR0FBTixDQUFVLFVBQVNra0IsSUFBVCxFQUFlO1lBQzdDLE9BQU9BLElBQUksQ0FBQzBDLE9BQUwsQ0FBYTNCLE9BQWIsSUFBd0JBLE9BQS9CO1VBQ0QsQ0FGcUIsQ0FBWixDQUFWO1FBR0Q7O1FBRUQsSUFBSSxDQUFDcUIsSUFBSSxDQUFDaUgsMkJBQVYsRUFBdUM7VUFDckM7VUFDQUgsT0FBTyxHQUFHNStCLElBQUksQ0FBQ2pELEdBQUwsQ0FBUyxHQUFHKzNCLEtBQUssQ0FBQ3RqQixHQUFOLENBQVUsVUFBU2trQixJQUFULEVBQWU7WUFDN0MsT0FBT0EsSUFBSSxDQUFDMEMsT0FBTCxDQUFhd0csT0FBYixJQUF3QkEsT0FBL0I7VUFDRCxDQUZxQixDQUFaLENBQVY7UUFHRDtNQUNGLENBZmlCLENBaUJsQjs7O01BQ0EsTUFBTUksWUFBWSxHQUFNbEgsSUFBSSxDQUFDb0MsUUFBTCxHQUFnQmhGLE9BQWhCLEdBQTBCLElBQWxEO01BQ0EsTUFBTStKLGVBQWUsR0FBR25LLEtBQUssQ0FBQzMvQixNQUFOLEdBQWVzaEMsT0FBdkM7TUFDQSxNQUFNeUksZUFBZSxHQUFHcEssS0FBSyxDQUFDMy9CLE1BQU4sR0FBZXlwQyxPQUF2QztNQUVBLEtBQUt4RixhQUFMLEdBQXFCNEYsWUFBWSxJQUFJQyxlQUFoQixJQUFtQ0MsZUFBeEQ7O01BRUEsSUFBSSxDQUFDRCxlQUFMLEVBQXNCO1FBQ3BCSixtQkFBbUIsR0FBR3BILGtEQUFVLENBQUNoQixPQUFELEVBQVUsS0FBSzhCLE1BQUwsQ0FBWTRHLGlCQUF0QixDQUFoQztNQUNEOztNQUVELElBQUksQ0FBQ0QsZUFBTCxFQUFzQjtRQUNwQkwsbUJBQW1CLEdBQUdwSCxrREFBVSxDQUFDbUgsT0FBRCxFQUFVLEtBQUtyRyxNQUFMLENBQVk2RyxpQkFBdEIsQ0FBaEM7TUFDRDs7TUFFRCxJQUFJLENBQUNKLFlBQUwsRUFBbUI7UUFDakJILG1CQUFtQixHQUFHLEtBQUt0RyxNQUFMLENBQVk4RyxjQUFsQztNQUNEOztNQUVEdkssS0FBSyxDQUFDdGpCLEdBQU4sQ0FBVSxDQUFDa2tCLElBQUQsRUFBT3A4QixLQUFQLEtBQWlCO1FBQ3pCLE1BQU0yQyxJQUFJLEdBQUczQyxLQUFLLEtBQUssQ0FBdkI7UUFDQSxNQUFNZ0QsS0FBSyxHQUFHaEQsS0FBSyxHQUFHLENBQVIsS0FBY3c3QixLQUFLLENBQUMzL0IsTUFBbEM7O1FBRUEsSUFBSSxLQUFLaWtDLGFBQVQsRUFBd0I7VUFDdEIsSUFBSW45QixJQUFKLEVBQVU7WUFDUnk1QixJQUFJLENBQUMwQyxPQUFMLENBQWF5RSxXQUFiLEdBQTJCLE1BQTNCO1VBQ0QsQ0FGRCxNQUVPLElBQUl2Z0MsS0FBSixFQUFXO1lBQ2hCbzVCLElBQUksQ0FBQzBDLE9BQUwsQ0FBYXlFLFdBQWIsR0FBMkIsT0FBM0I7VUFDRCxDQUZNLE1BRUE7WUFDTG5ILElBQUksQ0FBQzBDLE9BQUwsQ0FBYXlFLFdBQWIsR0FBMkIsUUFBM0I7VUFDRDtRQUNGLENBUkQsTUFRTztVQUNMLElBQUk1Z0MsSUFBSixFQUFVO1lBQ1J5NUIsSUFBSSxDQUFDMEMsT0FBTCxDQUFhb0csT0FBYixHQUF1QixNQUF2QjtVQUNELENBRkQsTUFFTyxJQUFJbGlDLEtBQUosRUFBVztZQUNoQm81QixJQUFJLENBQUMwQyxPQUFMLENBQWFvRyxPQUFiLEdBQXVCLE9BQXZCO1VBQ0QsQ0FGTSxNQUVBO1lBQ0w5SSxJQUFJLENBQUMwQyxPQUFMLENBQWFvRyxPQUFiLEdBQXVCLFFBQXZCO1VBQ0Q7UUFDRjs7UUFFRCxNQUFNYyxlQUFlLEdBQUksS0FBS2pHLG1CQUFOLEdBQTZCcDlCLElBQTdCLEdBQW9DSyxLQUE1RDs7UUFFQSxJQUFJZ2pDLGVBQWUsSUFBSSxLQUFLdlAsRUFBTCxDQUFReDFCLFFBQVIsQ0FBaUJtN0IsSUFBakIsQ0FBbkIsSUFBNkMsQ0FBQyxLQUFLMEQsYUFBdkQsRUFBc0U7VUFDcEUsS0FBS04sR0FBTCxDQUFTNkYsT0FBVCxHQUFtQixLQUFLNU8sRUFBTCxDQUFRMkosV0FBUixDQUFvQm5KLGdFQUFpQixDQUFDMkcsZ0RBQUQsQ0FBckMsQ0FBbkI7VUFDQSxLQUFLNEIsR0FBTCxDQUFTNkYsT0FBVCxDQUFpQno0QixhQUFqQixDQUErQixNQUEvQixFQUF1Q3NxQixTQUF2QyxHQUFtRHFPLG1CQUFuRDtVQUVBLEtBQUtILGFBQUwsR0FBcUI3aUMsTUFBTSxDQUFDMGpDLE1BQVAsQ0FBY3RwQyxZQUFkLENBQTJCeS9CLElBQTNCLEVBQWlDLEtBQUtvRCxHQUFMLENBQVM2RixPQUExQyxFQUFtRDtZQUN0RTlwQyxTQUFTLEVBQUUsS0FEMkQ7WUFFdEVDLFNBQVMsRUFBRSxDQUNUO2NBQ0UrQyxJQUFJLEVBQUUsTUFEUjtjQUVFTCxPQUFPLEVBQUU7WUFGWCxDQURTLEVBS1Q7Y0FDRUssSUFBSSxFQUFFLFFBRFI7Y0FFRXpCLE9BQU8sRUFBRTtnQkFDUDBQLE1BQU0sRUFBRSxDQUFDLENBQUQsRUFBSSxDQUFKO2NBREQ7WUFGWCxDQUxTO1VBRjJELENBQW5ELENBQXJCO1FBZUQ7O1FBRUQsT0FBTzR2QixJQUFQO01BQ0QsQ0E5Q0Q7TUFnREEsS0FBS3lELGlCQUFMLEdBQXlCLENBQUMzMkIsS0FBRCxFQUFRQyxHQUFSLENBQXpCO0lBQ0Q7O0lBRUQsT0FBTyxLQUFLMjJCLGFBQVo7RUFDRDtFQUVEO0FBQ0Y7QUFDQTtBQUNBOzs7RUFDRWdELGNBQWMsR0FBRztJQUNmLEtBQUthLGVBQUw7SUFDQSxLQUFLL0QsV0FBTCxHQUFtQixLQUFuQjtJQUVBLEtBQUs5RyxJQUFMLENBQVUsaUJBQVYsRUFBNkIsS0FBSytJLGNBQWxDLEVBQWtELEtBQUtFLFlBQXZEOztJQUNBLElBQUloSix5REFBVSxDQUFDLEtBQUt5RixJQUFMLENBQVUwSCxnQkFBWCxDQUFkLEVBQTRDO01BQzFDLEtBQUsxSCxJQUFMLENBQVUwSCxnQkFBVixDQUEyQixLQUFLckUsY0FBaEMsRUFBZ0QsS0FBS0UsWUFBckQ7SUFDRDs7SUFFRCxLQUFLRixjQUFMLEdBQXNCLElBQXRCO0lBQ0EsS0FBS0UsWUFBTCxHQUFzQixJQUF0Qjs7SUFFQSxJQUFJLEtBQUtpQyxLQUFULEVBQWdCO01BQ2QsS0FBS0EsS0FBTCxHQUFhLElBQWI7SUFDRDs7SUFFRCxJQUFJLEtBQUtDLEtBQVQsRUFBZ0I7TUFDZCxLQUFLQSxLQUFMLEdBQWEsSUFBYjtJQUNEOztJQUVELElBQUksS0FBS3pGLElBQUwsQ0FBVU8sVUFBVixJQUF3QixLQUFLUCxJQUFMLENBQVVrQyxTQUFsQyxJQUErQyxLQUFLbEMsSUFBTCxDQUFVbUMsT0FBN0QsRUFBc0U7TUFDcEUsS0FBS25DLElBQUwsQ0FBVWtDLFNBQVYsQ0FBb0JwMkIsS0FBcEIsR0FBNEIsSUFBNUI7TUFDQSxLQUFLazBCLElBQUwsQ0FBVW1DLE9BQVYsQ0FBa0JyMkIsS0FBbEIsR0FBNEIsSUFBNUI7O01BRUEsSUFBSSxLQUFLazBCLElBQUwsQ0FBVTJILGFBQWQsRUFBNkI7UUFDM0IsS0FBSzNILElBQUwsQ0FBVTRILGFBQVYsQ0FBd0I5N0IsS0FBeEIsR0FBZ0MsSUFBaEM7TUFDRDtJQUNGOztJQUVELE9BQU8sSUFBUDtFQUNEOztFQUVEaXhCLFdBQVcsQ0FBQ3J5QixLQUFELEVBQVFDLEdBQVIsRUFBYTtJQUN0QixJQUFJNjBCLCtDQUFPLENBQUM5MEIsS0FBRCxFQUFRQyxHQUFSLENBQVgsRUFBeUI7TUFDdkIsT0FBTyxLQUFLczJCLEtBQUwsQ0FBV2xFLFdBQVgsQ0FBdUJyeUIsS0FBdkIsRUFBOEJDLEdBQTlCLENBQVA7SUFDRDs7SUFDRCxPQUFPO01BQ0xxeUIsS0FBSyxFQUFFLElBREY7TUFFTEksT0FBTyxFQUFFO0lBRkosQ0FBUDtFQUlEOztFQUVEa0csV0FBVyxDQUFDaUIsU0FBRCxFQUFZM0csSUFBWixFQUFrQjtJQUMzQixLQUFLeUYsY0FBTCxHQUFzQmtCLFNBQXRCOztJQUVBLElBQUkzRyxJQUFKLEVBQVU7TUFDUixLQUFLNEgsS0FBTCxHQUFhNUgsSUFBYjtJQUNEOztJQUVELEtBQUtpSyxZQUFMLENBQWtCLE9BQWxCLEVBQTJCdEQsU0FBM0I7RUFDRDs7RUFFRGYsU0FBUyxDQUFDZSxTQUFELEVBQVkzRyxJQUFaLEVBQWtCO0lBQ3pCLEtBQUsyRixZQUFMLEdBQW9CZ0IsU0FBcEI7O0lBRUEsSUFBSTNHLElBQUosRUFBVTtNQUNSLEtBQUs2SCxLQUFMLEdBQWE3SCxJQUFiO0lBQ0Q7O0lBRUQsS0FBS2lLLFlBQUwsQ0FBa0IsS0FBbEIsRUFBeUJ0RCxTQUF6QjtFQUNEOztFQUVEM0IsVUFBVSxDQUFDOUIsU0FBRCxFQUFZQyxVQUFaLEVBQXdCK0csS0FBeEIsRUFBK0I7SUFDdkMsTUFBTXRhLE1BQU0sR0FBRyxFQUFmO0lBQ0EsTUFBTXFQLElBQUksR0FBSyxFQUFmO0lBQ0EsSUFBSThGLFFBQVEsR0FBRzVCLFVBQWY7SUFDQSxJQUFJMkIsT0FBTyxHQUFJNUIsU0FBZjs7SUFFQSxLQUFLLElBQUl6dUIsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR3kxQixLQUFwQixFQUEyQnoxQixDQUFDLElBQUksQ0FBaEMsRUFBbUM7TUFDakMsTUFBTTAxQixJQUFJLEdBQUcsS0FBS0MsUUFBTCxDQUFjdEYsT0FBZCxFQUF1QkMsUUFBdkIsQ0FBYjtNQUVBblYsTUFBTSxDQUFDanJCLElBQVAsQ0FBWXdsQyxJQUFaOztNQUVBLElBQUksQ0FBQ2xMLElBQUksQ0FBQzZGLE9BQUQsQ0FBVCxFQUFvQjtRQUNsQjdGLElBQUksQ0FBQzZGLE9BQUQsQ0FBSixHQUFnQixFQUFoQjtNQUNEOztNQUVELElBQUksQ0FBQzdGLElBQUksQ0FBQzZGLE9BQUQsQ0FBSixDQUFjQyxRQUFkLENBQUwsRUFBOEI7UUFDNUI5RixJQUFJLENBQUM2RixPQUFELENBQUosQ0FBY0MsUUFBZCxJQUEwQm9GLElBQUksQ0FBQ0UsV0FBTCxJQUFvQixFQUE5QztNQUNEOztNQUVELElBQUl0RixRQUFRLEdBQUcsRUFBZixFQUFtQjtRQUNqQkEsUUFBUSxHQUFHLENBQVg7UUFDQUQsT0FBTyxJQUFJLENBQVg7TUFDRCxDQUhELE1BR087UUFDTEMsUUFBUSxJQUFJLENBQVo7TUFDRDtJQUNGOztJQUVELE9BQU87TUFDTDlGLElBREs7TUFFTDZGLE9BRks7TUFHTEMsUUFISztNQUlMblY7SUFKSyxDQUFQO0VBTUQ7O0VBRUR3YSxRQUFRLENBQUNsYixJQUFELEVBQU9FLEtBQVAsRUFBYztJQUNwQixNQUFNa2IsUUFBUSxHQUFHelAsZ0VBQWlCLENBQUMyRyw4Q0FBRCxDQUFsQztJQUVBOEksUUFBUSxDQUFDOTVCLGFBQVQsWUFBMkJ0UCwwRUFBM0IsVUFBb0Q0NUIsU0FBcEQsR0FBZ0UsS0FBSzBQLG9CQUFMLEVBQWhFO0lBQ0FGLFFBQVEsQ0FBQzk1QixhQUFULFlBQTJCdFAsc0VBQTNCLEdBQTZDNDVCLFNBQTdDLGFBQW1FLEtBQUsrSCxNQUFMLENBQVkxVSxjQUFaLENBQTJCaUIsS0FBM0IsQ0FBbkUsY0FBd0dGLElBQXhHO0lBRUFvYixRQUFRLENBQUNyZ0MsSUFBVCxHQUEwQnFnQyxRQUFRLENBQUM5NUIsYUFBVCxZQUEyQnRQLG1FQUEzQixFQUExQjtJQUNBb3BDLFFBQVEsQ0FBQ3JnQyxJQUFULENBQWM2d0IsU0FBZCxHQUEwQixLQUFLNFAsa0JBQUwsQ0FBd0J4YixJQUF4QixFQUE4QkUsS0FBOUIsQ0FBMUI7SUFFQWtiLFFBQVEsQ0FBQ2xiLEtBQVQsR0FBdUJBLEtBQXZCO0lBQ0FrYixRQUFRLENBQUNwYixJQUFULEdBQXVCQSxJQUF2QjtJQUNBb2IsUUFBUSxDQUFDRCxXQUFULEdBQXVCLEdBQUc5MEIsS0FBSCxDQUFTeUssSUFBVCxDQUFjc3FCLFFBQVEsQ0FBQzdDLGdCQUFULENBQTBCLGNBQTFCLENBQWQsQ0FBdkI7SUFFQSxPQUFPNkMsUUFBUDtFQUNEOztFQUVERSxvQkFBb0IsR0FBRztJQUNyQjtJQUNBLE1BQU1HLE1BQU0sR0FBbUIsRUFBL0I7SUFDQSxNQUFNQyxzQkFBc0IsR0FBRyxLQUFLL0gsTUFBTCxDQUFZN1UsaUJBQVosQ0FBOEJyc0IsTUFBOUIsQ0FBcUMsS0FBS2toQyxNQUFMLENBQVk3VSxpQkFBakQsQ0FBL0I7O0lBRUEsS0FBSyxJQUFJdlosQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBRyxLQUFLMnRCLElBQUwsQ0FBVXlJLFdBQTlCLEVBQTJDcDJCLENBQUMsSUFBSSxDQUFoRCxFQUFtRDtNQUNqRGsyQixNQUFNLENBQUNobUMsSUFBUCxDQUFZNjhCLHFEQUFBLENBQXVCb0osc0JBQXNCLENBQUNuMkIsQ0FBQyxHQUFHLEtBQUsydEIsSUFBTCxDQUFVVyxXQUFmLENBQTdDLENBQVo7SUFDRDs7SUFDRCxPQUFPNEgsTUFBTSxDQUFDbG9DLElBQVAsQ0FBWSxFQUFaLENBQVA7RUFDRDs7RUFFRGlvQyxrQkFBa0IsQ0FBQ3hiLElBQUQsRUFBT0UsS0FBUCxFQUFjO0lBQzlCLE1BQU0yYixZQUFZLEdBQUksSUFBSTNlLElBQUosQ0FBUzhDLElBQVQsRUFBZUUsS0FBZixFQUFzQixDQUF0QixFQUF5QjRiLE1BQXpCLEVBQXRCO0lBQ0EsTUFBTWpSLFdBQVcsR0FBS0MsMERBQVcsQ0FBQzlLLElBQUQsRUFBT0UsS0FBUCxDQUFqQztJQUNBLE1BQU02YixXQUFXLEdBQUt6SixnREFBdEI7SUFDQSxNQUFNMkosYUFBYSxHQUFHLEVBQXRCO0lBQ0EsTUFBTUMsU0FBUyxHQUFRLEtBQUtoSixJQUFMLENBQVV5SSxXQUFWLEdBQXdCLEtBQUt6SSxJQUFMLENBQVVXLFdBQXpEO0lBRUEsSUFBSXNJLElBQUksR0FBaUIsQ0FBekI7SUFDQSxJQUFJQyxrQkFBa0IsR0FBR1AsWUFBWSxHQUFHSyxTQUF4QztJQUNBLElBQUlHLFVBQVUsR0FBVyxDQUF6QjtJQUNBLElBQUkzWSxVQUFVLEdBQVcsQ0FBekIsQ0FWOEIsQ0FZOUI7O0lBQ0EsSUFBSTBZLGtCQUFrQixJQUFJLEtBQUtsSixJQUFMLENBQVV5SSxXQUFwQyxFQUFpRDtNQUMvQ1Msa0JBQWtCLElBQUksS0FBS2xKLElBQUwsQ0FBVXlJLFdBQWhDO0lBQ0QsQ0FmNkIsQ0FpQjlCOzs7SUFDQSxJQUFJUSxJQUFJLEdBQUcsS0FBS2pKLElBQUwsQ0FBVXlJLFdBQWpCLEdBQStCUyxrQkFBa0IsR0FBR3ZSLFdBQXhELEVBQXFFO01BQ25Fc1IsSUFBSSxHQUFHLENBQVA7SUFDRCxDQXBCNkIsQ0FzQjlCOzs7SUFDQSxLQUFLLElBQUk1MkIsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBRzQyQixJQUFwQixFQUEwQjUyQixDQUFDLElBQUksQ0FBL0IsRUFBa0M7TUFDaEMsTUFBTSsyQixJQUFJLEdBQUcsRUFBYixDQURnQyxDQUVoQzs7TUFDQUEsSUFBSSxDQUFDN21DLElBQUwsQ0FBVXNtQyxXQUFXLENBQUN4MkIsQ0FBRCxDQUFYLENBQWVta0IsSUFBekIsRUFIZ0MsQ0FLaEM7O01BQ0EsS0FBSyxJQUFJckIsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBRyxLQUFLNkssSUFBTCxDQUFVeUksV0FBOUIsRUFBMkN0VCxDQUFDLElBQUksQ0FBaEQsRUFBbUQ7UUFDakQ7UUFDQSxJQUFLZ1UsVUFBVSxJQUFJRCxrQkFBZixJQUFzQzFZLFVBQVUsSUFBSW1ILFdBQXhELEVBQXFFO1VBQ25FeVIsSUFBSSxDQUFDN21DLElBQUwsQ0FBVSxLQUFLOG1DLGlCQUFMLENBQXVCdmMsSUFBdkIsRUFBNkJFLEtBQTdCLEVBQW9Dd0QsVUFBcEMsQ0FBVjtVQUNBQSxVQUFVLElBQUksQ0FBZCxDQUZtRSxDQUduRTtRQUNELENBSkQsTUFJTztVQUNMNFksSUFBSSxDQUFDN21DLElBQUwsQ0FBVTY4QiwyREFBVjtRQUNEOztRQUVEK0osVUFBVSxJQUFJLENBQWQ7TUFDRCxDQWpCK0IsQ0FrQmhDOzs7TUFDQUMsSUFBSSxDQUFDN21DLElBQUwsQ0FBVXNtQyxXQUFXLEdBQUdVLEtBQXhCLEVBbkJnQyxDQW9CaEM7O01BQ0FSLGFBQWEsQ0FBQ3htQyxJQUFkLENBQW1CNm1DLElBQUksQ0FBQy9vQyxJQUFMLENBQVUsRUFBVixDQUFuQjtJQUNEOztJQUVELE9BQU8wb0MsYUFBYSxDQUFDMW9DLElBQWQsQ0FBbUIsRUFBbkIsQ0FBUDtFQUNEOztFQUVEZ3BDLGlCQUFpQixDQUFDdmMsSUFBRCxFQUFPRSxLQUFQLEVBQWN3RCxVQUFkLEVBQTBCO0lBQ3pDLE1BQU07TUFBRXlRO0lBQUYsSUFBaUIsSUFBdkI7SUFDQSxNQUFNckMsSUFBSSxHQUFhLEtBQUtvQixJQUFMLENBQVV3SixTQUFWLEdBQXNCdkksS0FBSyxDQUFDaEMsY0FBTixDQUFxQm5TLElBQXJCLEVBQTJCRSxLQUEzQixFQUFrQ3dELFVBQWxDLEVBQThDLE1BQTlDLENBQXRCLEdBQThFLENBQXJHO0lBQ0EsTUFBTW1PLE9BQU8sR0FBVXNDLEtBQUssQ0FBQ2hDLGNBQU4sQ0FBcUJuUyxJQUFyQixFQUEyQkUsS0FBM0IsRUFBa0N3RCxVQUFsQyxFQUE4QyxTQUE5QyxDQUF2QjtJQUNBLE1BQU1zVyxPQUFPLEdBQVU3RixLQUFLLENBQUNoQyxjQUFOLENBQXFCblMsSUFBckIsRUFBMkJFLEtBQTNCLEVBQWtDd0QsVUFBbEMsRUFBOEMsU0FBOUMsQ0FBdkI7SUFFQSxJQUFJaVosVUFBVSxHQUFTeEksS0FBSyxDQUFDOUIsYUFBTixDQUFvQnJTLElBQXBCLEVBQTBCRSxLQUExQixFQUFpQ3dELFVBQWpDLENBQXZCO0lBQ0EsSUFBSXdPLGNBQWMsR0FBS2lDLEtBQUssQ0FBQ2hDLGNBQU4sQ0FBcUJuUyxJQUFyQixFQUEyQkUsS0FBM0IsRUFBa0N3RCxVQUFsQyxFQUE4QyxnQkFBOUMsQ0FBdkI7SUFDQSxJQUFJdU8sZ0JBQWdCLEdBQUdrQyxLQUFLLENBQUNoQyxjQUFOLENBQXFCblMsSUFBckIsRUFBMkJFLEtBQTNCLEVBQWtDd0QsVUFBbEMsRUFBOEMsa0JBQTlDLENBQXZCO0lBRUEsTUFBTTtNQUFFb1E7SUFBRixJQUFrQixLQUFLWixJQUE3QjtJQUNBLE1BQU1vRyxTQUFTLEdBQVMsQ0FBQ3RaLElBQUQsRUFBT0UsS0FBUCxFQUFjd0QsVUFBZCxDQUF4QjtJQUNBLE1BQU1rWixZQUFZLEdBQU1qSyxpREFBUyxDQUFDMkcsU0FBRCxFQUFZeEYsV0FBWixDQUFqQyxDQVp5QyxDQWN6Qzs7SUFDQSxJQUFJcEIsK0NBQU8sQ0FBQzRHLFNBQUQsRUFBWXhGLFdBQVosQ0FBWCxFQUFxQztNQUNuQzZJLFVBQVUsR0FBVSxJQUFwQjtNQUNBMUssZ0JBQWdCLEdBQUksSUFBcEI7TUFDQUMsY0FBYyxHQUFNLElBQXBCO0lBQ0QsQ0FuQndDLENBcUJ6Qzs7O0lBQ0EsSUFBSTBLLFlBQUosRUFBa0I7TUFDaEIsSUFBSSxFQUFFRCxVQUFVLElBQUl6SyxjQUFjLEtBQUssSUFBakMsSUFBeUNELGdCQUFnQixLQUFLLElBQWhFLENBQUosRUFBMkU7UUFDekVBLGdCQUFnQixHQUFJLElBQXBCOztRQUVBLElBQUlDLGNBQWMsS0FBSyxJQUF2QixFQUE2QjtVQUMzQkEsY0FBYyxHQUFHLElBQWpCO1FBQ0Q7TUFDRjtJQUNGLENBOUJ3QyxDQWdDekM7OztJQUNBLElBQUksQ0FBQyxLQUFLZ0IsSUFBTCxDQUFVb0MsUUFBWCxJQUF1QixLQUFLcEMsSUFBTCxDQUFVa0QsYUFBckMsRUFBb0Q7TUFDbEQsSUFBSTFELCtDQUFPLENBQUNvQixXQUFELEVBQWN3RixTQUFkLENBQVgsRUFBcUM7UUFDbkNxRCxVQUFVLEdBQVUsS0FBcEI7UUFDQXpLLGNBQWMsR0FBTSxJQUFwQjtRQUNBRCxnQkFBZ0IsR0FBSSxLQUFwQjtNQUNEOztNQUVELElBQUkySyxZQUFKLEVBQWtCO1FBQ2hCRCxVQUFVLEdBQVUsSUFBcEI7UUFDQTFLLGdCQUFnQixHQUFJLElBQXBCO01BQ0Q7SUFDRjs7SUFFRCxNQUFNNEssYUFBYSxHQUFHNUssZ0JBQWdCLElBQUksS0FBMUM7O0lBRUEsSUFBSTBLLFVBQVUsSUFBSUUsYUFBbEIsRUFBaUM7TUFDL0JGLFVBQVUsR0FBRyxNQUFiO0lBQ0QsQ0FGRCxNQUVPLElBQUkxSyxnQkFBSixFQUFzQjtNQUMzQjBLLFVBQVUsR0FBRyxPQUFiO0lBQ0QsQ0FGTSxNQUVBLElBQUlBLFVBQUosRUFBZ0I7TUFDckJBLFVBQVUsR0FBRyxRQUFiO0lBQ0Q7O0lBRUQsT0FBT3JLLGdEQUFBLENBQ0w1TyxVQURLLEVBRUxpWixVQUZLLEVBR0xFLGFBSEssRUFJTDNLLGNBSkssRUFLTDBLLFlBTEssRUFNTC9LLE9BTkssRUFPTCxLQUFLcUIsSUFBTCxDQUFVNkosV0FBVixHQUF3QmxLLGtEQUFVLENBQUNoQixPQUFELEVBQVUsS0FBSzhCLE1BQUwsQ0FBWTlCLE9BQXRCLENBQWxDLEdBQW1FLEtBUDlELEVBUUxtSSxPQVJLLEVBU0wsS0FBSzlHLElBQUwsQ0FBVThKLFdBQVYsR0FBd0JuSyxrREFBVSxDQUFDbUgsT0FBRCxFQUFVLEtBQUtyRyxNQUFMLENBQVlxRyxPQUF0QixDQUFsQyxHQUFtRSxLQVQ5RCxFQVVMbEksSUFWSyxFQVdMekgsZ0VBQWlCLENBQUNqdkIsSUFBSSxDQUFDL0UsS0FBTCxDQUFXeTdCLElBQVgsQ0FBRCxFQUFtQixLQUFLb0IsSUFBTCxDQUFVNUksSUFBN0IsRUFBbUMsS0FBSzRJLElBQUwsQ0FBVTNJLFFBQVYsSUFBc0IsS0FBS29KLE1BQUwsQ0FBWXBKLFFBQXJFLENBWFosQ0FBUDtFQWFEOztFQUVEb0wsYUFBYSxHQUFHO0lBQ2QsSUFBSSxLQUFLekIsR0FBTCxJQUFZN2xCLHNEQUFPLENBQUMsS0FBSzZsQixHQUFMLENBQVN4VCxNQUFWLENBQXZCLEVBQTBDO01BQ3hDLEtBQUt3VCxHQUFMLENBQVN4VCxNQUFULENBQWdCOVQsR0FBaEIsQ0FBcUJqYSxDQUFELElBQU84NEIsNkRBQWMsQ0FBQzk0QixDQUFELENBQXpDO01BQ0EsS0FBS2tuQyxjQUFMO0lBQ0Q7RUFDRjs7RUFFRDVrQyxPQUFPLEdBQUc7SUFDUixPQUFPdzJCLDZEQUFjLENBQUMsS0FBS04sRUFBTixDQUFyQjtFQUNEOztFQUVEcUssUUFBUSxDQUFDbG1CLEVBQUQsRUFBSztJQUNYLEtBQUtna0IsTUFBTCxDQUFZLGNBQVo7SUFDQSxLQUFLeUQsYUFBTDs7SUFFQSxNQUFNa0csU0FBUyxHQUFJOUwsSUFBRCxJQUFVO01BQzFCLElBQUk5aUIsc0RBQU8sQ0FBQzhpQixJQUFJLENBQUMzOEIsSUFBTixDQUFQLElBQXNCMjhCLElBQUksQ0FBQzM4QixJQUFMLENBQVUsQ0FBVixFQUFhekMsVUFBdkMsRUFBbUQ7UUFDakQsSUFBSSxLQUFLbWhDLElBQUwsQ0FBVWdLLG9CQUFkLEVBQW9DO1VBQ2xDL0wsSUFBSSxDQUFDMzhCLElBQUwsQ0FBVSxDQUFWLEVBQWF6QyxVQUFiLENBQXdCcy9CLFlBQXhCLEdBQXVDRixJQUFJLENBQUMzOEIsSUFBTCxDQUFVLENBQVYsRUFBYXpDLFVBQWIsQ0FBd0JzL0IsWUFBeEIsQ0FBcUNobEIsT0FBckMsQ0FBNkMsUUFBN0MsRUFBdUQsR0FBdkQsQ0FBdkM7UUFDRDs7UUFDRCxLQUFLNm1CLElBQUwsQ0FBVTNJLFFBQVYsR0FBcUIsS0FBSzJJLElBQUwsQ0FBVTNJLFFBQVYsSUFBc0I0RyxJQUFJLENBQUMzOEIsSUFBTCxDQUFVLENBQVYsRUFBYXpDLFVBQWIsQ0FBd0J3NEIsUUFBbkU7UUFDQSxLQUFLNkosT0FBTCxDQUFhakQsSUFBSSxDQUFDMzhCLElBQUwsQ0FBVSxDQUFWLEVBQWF6QyxVQUExQjtRQUNBLEtBQUtvckMsVUFBTCxHQUFrQixJQUFsQjtRQUNBLEtBQUtwRyxhQUFMO1FBQ0EsS0FBS3ZKLElBQUwsQ0FBVSxhQUFWLEVBQXlCMkQsSUFBekI7TUFDRCxDQVRELE1BU087UUFDTCxLQUFLNEYsYUFBTDtRQUNBLEtBQUt6RCxNQUFMLENBQVksOEJBQVosRUFBNEMsT0FBNUM7TUFDRDtJQUNGLENBZEQ7O0lBZ0JBLE1BQU04SixPQUFPLEdBQUcsTUFBTTtNQUNwQixLQUFLckcsYUFBTDtNQUNBLEtBQUt2SixJQUFMLENBQVUsWUFBVjtNQUNBLEtBQUs4RixNQUFMLENBQVksdUJBQVosRUFBcUMsT0FBckM7SUFDRCxDQUpEOztJQU1BK0osS0FBSyxDQUFDLEtBQUtuSyxJQUFMLENBQVVvSyxTQUFWLENBQW9CaHVCLEVBQXBCLENBQUQsQ0FBTCxDQUNHcGEsSUFESCxDQUNTMjBCLFFBQUQsSUFBY0EsUUFBUSxDQUFDMFQsSUFBVCxFQUR0QixFQUVHcm9DLElBRkgsQ0FFUStuQyxTQUZSLEVBR0dPLEtBSEgsQ0FHU0osT0FIVDtFQUlEOztFQUVEbEYsaUJBQWlCLEdBQUc7SUFDbEIsSUFBSSxLQUFLaEYsSUFBTCxDQUFVMkgsYUFBZCxFQUE2QjtNQUMzQixNQUFNNEMscUJBQXFCLEdBQUcsS0FBS0EscUJBQUwsSUFBOEIsS0FBSzlKLE1BQUwsQ0FBWUMsVUFBeEU7TUFFQSxNQUFNOEosU0FBUyxHQUFHbmdCLGlEQUFRLENBQUNrVixpREFBUyxDQUFDLEdBQUcsS0FBSzhELGNBQVQsQ0FBVixFQUFvQ2tILHFCQUFwQyxFQUEyRCxLQUFLOUosTUFBaEUsQ0FBMUI7TUFDQSxNQUFNZ0ssT0FBTyxHQUFLcGdCLGlEQUFRLENBQUNrVixpREFBUyxDQUFDLEdBQUcsS0FBS2dFLFlBQVQsQ0FBVixFQUFrQ2dILHFCQUFsQyxFQUF5RCxLQUFLOUosTUFBOUQsQ0FBMUI7TUFFQSxLQUFLVCxJQUFMLENBQVU0SCxhQUFWLENBQXdCOTdCLEtBQXhCLGFBQW1DMCtCLFNBQW5DLGNBQWdELEtBQUt4SyxJQUFMLENBQVUwSyxvQkFBMUQsY0FBa0ZELE9BQWxGO0lBQ0Q7O0lBRUQsS0FBS25RLElBQUwsQ0FBVSxxQkFBVixFQUFpQyxLQUFLK0ksY0FBdEMsRUFBc0QsS0FBS0UsWUFBM0Q7O0lBQ0EsSUFBSWhKLHlEQUFVLENBQUMsS0FBS3lGLElBQUwsQ0FBVTJLLG9CQUFYLENBQWQsRUFBZ0Q7TUFDOUMsS0FBSzNLLElBQUwsQ0FBVTJLLG9CQUFWLENBQ0VwTCxpREFBUyxDQUFDLEdBQUcsS0FBSzhELGNBQVQsRUFBeUIsSUFBekIsQ0FEWCxFQUMyQzlELGlEQUFTLENBQUMsR0FBRyxLQUFLZ0UsWUFBVCxFQUF1QixJQUF2QixDQURwRDtJQUdEO0VBQ0Y7O0VBRUQvQyxnQkFBZ0IsR0FBRztJQUNqQixNQUFNOWlDLE9BQU8sR0FBRys2QixnRUFBaUIsQ0FBQyxhQUFELENBQWpDO0lBQ0EsS0FBS21TLFFBQUwsR0FBZ0IsS0FBSzVLLElBQUwsQ0FBVS9ILEVBQTFCO0lBQ0EsS0FBS0EsRUFBTCxHQUFnQnY2QixPQUFoQjtJQUVBOEosUUFBUSxDQUFDSyxJQUFULENBQWMrNUIsV0FBZCxDQUEwQmxrQyxPQUExQjtJQUVBLEtBQUtzaUMsSUFBTCxDQUFVa0MsU0FBVixHQUEwQixLQUFLbEMsSUFBTCxDQUFVa0MsU0FBVixJQUF1QjE2QixRQUFRLENBQUM0RyxhQUFULFlBQTJCLEtBQUs4eEIsVUFBaEMsZ0JBQWpEO0lBQ0EsS0FBS0YsSUFBTCxDQUFVbUMsT0FBVixHQUEwQixLQUFLbkMsSUFBTCxDQUFVbUMsT0FBVixJQUFxQjM2QixRQUFRLENBQUM0RyxhQUFULFlBQTJCLEtBQUs4eEIsVUFBaEMsY0FBL0M7SUFDQSxLQUFLRixJQUFMLENBQVU0SCxhQUFWLEdBQTBCLEtBQUs1SCxJQUFMLENBQVU0SCxhQUFWLElBQTJCcGdDLFFBQVEsQ0FBQzRHLGFBQVQsWUFBMkIsS0FBSzh4QixVQUFoQyxvQkFBckQ7O0lBRUEsSUFBSSxLQUFLRixJQUFMLENBQVU2SyxjQUFkLEVBQThCO01BQzVCLENBQUMsS0FBSzdLLElBQUwsQ0FBVWtDLFNBQVgsRUFBc0IsS0FBS2xDLElBQUwsQ0FBVW1DLE9BQWhDLEVBQXlDL2dDLE9BQXpDLENBQWlELENBQUMwcEMsS0FBRCxFQUFRejRCLENBQVIsS0FBYztRQUM3RCxNQUFNMDRCLFdBQVcsR0FBR0QsS0FBSyxDQUFDRSxTQUFOLENBQWdCLElBQWhCLENBQXBCO1FBQ0FGLEtBQUssQ0FBQ0csYUFBTixDQUFvQnJKLFdBQXBCLENBQWdDbUosV0FBaEM7UUFDQUQsS0FBSyxDQUFDLytCLGVBQU4sQ0FBc0IsTUFBdEI7UUFDQWcvQixXQUFXLENBQUNqUyxTQUFaLEdBQXdCLEVBQXhCO1FBQ0FpUyxXQUFXLENBQUNHLE1BQVosR0FBd0IsSUFBeEI7UUFFQzc0QixDQUFELEdBQU0sS0FBSzg0QixhQUFMLEdBQXFCSixXQUEzQixHQUF5QyxLQUFLSyxlQUFMLEdBQXVCTCxXQUFoRTtNQUNELENBUkQ7SUFTRDs7SUFFRCxJQUFJLEtBQUsvSyxJQUFMLENBQVUySCxhQUFkLEVBQTZCO01BQzNCLEtBQUszSCxJQUFMLENBQVU0SCxhQUFWLENBQXdCeUQsUUFBeEIsR0FBbUMsSUFBbkM7TUFFQSxDQUFDLEtBQUtyTCxJQUFMLENBQVVrQyxTQUFYLEVBQXNCLEtBQUtsQyxJQUFMLENBQVVtQyxPQUFoQyxFQUF5Qy9nQyxPQUF6QyxDQUFrRDBwQyxLQUFELElBQVc7UUFDMURBLEtBQUssQ0FBQ0ksTUFBTixHQUFlLElBQWY7TUFDRCxDQUZEO0lBR0Q7O0lBRURsVCx1REFBUSxDQUFDLEtBQUtDLEVBQU4sRUFBVW41Qix3RUFBVixDQUFSO0lBRUEsTUFBTW1tQyxPQUFPLEdBQUdsaEMsTUFBTSxDQUFDMGpDLE1BQVAsQ0FBY3RwQyxZQUFkLENBQTJCLEtBQUt5c0MsUUFBaEMsRUFBMEMsS0FBSzNTLEVBQS9DLEVBQW1EO01BQ2pFbDdCLFNBQVMsRUFBRSxLQUFLaWpDLElBQUwsQ0FBVXVMLGFBRDRDO01BRWpFOTNCLElBQUksRUFBRTtJQUYyRCxDQUFuRCxDQUFoQjs7SUFLQSxNQUFNKzNCLFFBQVEsR0FBRyxDQUFDVixLQUFELEVBQVFXLFVBQVIsS0FBdUI7TUFDdEMsS0FBS2xGLGdCQUFMLENBQXNCdUUsS0FBdEI7TUFDQSxLQUFLdkksb0JBQUwsQ0FBMEJrSixVQUExQjs7TUFFQSxJQUFJLENBQUNyUyx1REFBUSxDQUFDLEtBQUtuQixFQUFOLEVBQVVuNUIsc0VBQVYsQ0FBYixFQUF3QztRQUN0Q21tQyxPQUFPLENBQUNsa0MsTUFBUjtRQUNBLEtBQUt1NUIsSUFBTCxDQUFVLFdBQVY7UUFDQXRDLHVEQUFRLENBQUMsS0FBS0MsRUFBTixFQUFVbjVCLHNFQUFWLENBQVI7O1FBRUEsSUFBSSxDQUFDLEtBQUttckMsVUFBTixJQUFvQixLQUFLakssSUFBTCxDQUFVb0MsUUFBbEMsRUFBNEM7VUFDMUMsS0FBS0UsUUFBTCxDQUFjLEtBQUt0QyxJQUFMLENBQVVvQyxRQUF4QjtRQUNEO01BQ0Y7SUFDRixDQWJEOztJQWVBLElBQUksS0FBS3BDLElBQUwsQ0FBVTJILGFBQWQsRUFBNkI7TUFDM0IsS0FBS2dFLGdCQUFMLENBQXNCLEtBQUszTCxJQUFMLENBQVU0SCxhQUFoQyxFQUErQyxNQUFNO1FBQ25ENEQsUUFBUSxDQUFDLE9BQUQsRUFBVSxLQUFWLENBQVI7TUFDRCxDQUZEO0lBR0QsQ0FKRCxNQUlPO01BQ0wsS0FBS0csZ0JBQUwsQ0FBc0IsS0FBSzNMLElBQUwsQ0FBVWtDLFNBQWhDLEVBQTJDLE1BQU07UUFDL0NzSixRQUFRLENBQUMsT0FBRCxFQUFVLEtBQVYsQ0FBUjtNQUNELENBRkQ7TUFHQSxLQUFLRyxnQkFBTCxDQUFzQixLQUFLM0wsSUFBTCxDQUFVbUMsT0FBaEMsRUFBeUMsTUFBTTtRQUM3Q3FKLFFBQVEsQ0FBQyxLQUFELEVBQVEsSUFBUixDQUFSO01BQ0QsQ0FGRDtJQUdEOztJQUVEaGtDLFFBQVEsQ0FBQ2lKLGdCQUFULENBQTBCLE9BQTFCLEVBQW1DLEtBQUt5MEIsU0FBTCxDQUFlMEcsSUFBZixDQUFvQixJQUFwQixDQUFuQztJQUNBLEtBQUszRyxPQUFMLEdBQWVBLE9BQWY7O0lBRUEsSUFBSSxLQUFLakYsSUFBTCxDQUFVNkwsT0FBZCxFQUF1QjtNQUNyQixLQUFLN0wsSUFBTCxDQUFVNkwsT0FBVixDQUFrQnA3QixnQkFBbEIsQ0FBbUMsT0FBbkMsRUFBNEMsTUFBTTtRQUNoRCxLQUFLNnpCLGNBQUw7TUFDRCxDQUZEO0lBR0Q7RUFDRjs7RUFFRHVELFlBQVksQ0FBQ2lELEtBQUQsRUFBUXZHLFNBQVIsRUFBbUI7SUFDN0IsTUFBTTtNQUFFckM7SUFBRixJQUFnQixLQUFLbEMsSUFBM0I7SUFDQSxNQUFNO01BQUVtQztJQUFGLElBQWdCLEtBQUtuQyxJQUEzQjtJQUVBLE1BQU1sVyxJQUFJLEdBQUl5VixpREFBUyxDQUFDLEdBQUdnRixTQUFKLENBQXZCO0lBQ0EsTUFBTXo0QixLQUFLLEdBQUd1ZSxpREFBUSxDQUFDUCxJQUFELEVBQU8sS0FBSy9RLE1BQVosRUFBb0IsS0FBSzBuQixNQUF6QixDQUF0QjtJQUNBLE1BQU1xTCxHQUFHLEdBQUt0a0MsUUFBUSxDQUFDdWtDLFdBQVQsQ0FBcUIsT0FBckIsQ0FBZDtJQUVBRCxHQUFHLENBQUNFLFNBQUosQ0FBYyxRQUFkLEVBQXdCLEtBQXhCLEVBQStCLElBQS9COztJQUVBLElBQUksS0FBS2hNLElBQUwsQ0FBVTZLLGNBQWQsRUFBOEI7TUFDNUIsTUFBTW9CLFdBQVcsR0FBRzVoQixpREFBUSxDQUFDUCxJQUFELEVBQU8sS0FBS2tXLElBQUwsQ0FBVTZLLGNBQWpCLEVBQWlDLEtBQUtwSyxNQUF0QyxDQUE1Qjs7TUFFQSxJQUFJcUssS0FBSyxLQUFLLE9BQVYsSUFBcUIsS0FBS00sZUFBOUIsRUFBK0M7UUFDN0MsS0FBS0EsZUFBTCxDQUFxQnQvQixLQUFyQixHQUE2Qm1nQyxXQUE3QjtNQUNELENBRkQsTUFFTyxJQUFJbkIsS0FBSyxLQUFLLEtBQVYsSUFBbUIsS0FBS0ssYUFBNUIsRUFBMkM7UUFDaEQsS0FBS0EsYUFBTCxDQUFtQnIvQixLQUFuQixHQUEyQm1nQyxXQUEzQjtNQUNEO0lBQ0Y7O0lBRUQsSUFBSW5CLEtBQUssS0FBSyxPQUFWLElBQXFCNUksU0FBekIsRUFBb0M7TUFDbENBLFNBQVMsQ0FBQ3AyQixLQUFWLEdBQWtCQSxLQUFsQjtNQUNBbzJCLFNBQVMsQ0FBQ2dLLGFBQVYsQ0FBd0JKLEdBQXhCO0lBQ0QsQ0FIRCxNQUdPLElBQUloQixLQUFLLEtBQUssS0FBVixJQUFtQjNJLE9BQXZCLEVBQWdDO01BQ3JDQSxPQUFPLENBQUNyMkIsS0FBUixHQUFnQkEsS0FBaEI7TUFDQXEyQixPQUFPLENBQUMrSixhQUFSLENBQXNCSixHQUF0QjtJQUNEO0VBQ0Y7O0VBRUR6SixjQUFjLEdBQUc7SUFDZixJQUFJLEtBQUtyQyxJQUFMLENBQVVrQyxTQUFWLENBQW9CcDJCLEtBQXBCLEtBQThCLEVBQTlCLElBQW9DLEtBQUtrMEIsSUFBTCxDQUFVbUMsT0FBVixDQUFrQnIyQixLQUFsQixLQUE0QixFQUFwRSxFQUF3RTtNQUN0RTtJQUNEOztJQUVELE1BQU11M0IsY0FBYyxHQUFJekQsbURBQVcsQ0FBQyxLQUFLSSxJQUFMLENBQVVrQyxTQUFWLENBQW9CcDJCLEtBQXJCLEVBQTRCLEtBQUtpTixNQUFqQyxFQUF5QyxLQUFLMG5CLE1BQTlDLENBQW5DO0lBQ0EsTUFBTThDLFlBQVksR0FBTTNELG1EQUFXLENBQUMsS0FBS0ksSUFBTCxDQUFVbUMsT0FBVixDQUFrQnIyQixLQUFuQixFQUEwQixLQUFLaU4sTUFBL0IsRUFBdUMsS0FBSzBuQixNQUE1QyxDQUFuQztJQUNBLE1BQU07TUFBRUc7SUFBRixJQUFrQixLQUFLWixJQUE3QjtJQUVBLEtBQUtzRSxjQUFMOztJQUVBLElBQUlucEIsc0RBQU8sQ0FBQ2tvQixjQUFELENBQVAsSUFBMkJsb0Isc0RBQU8sQ0FBQ29vQixZQUFELENBQXRDLEVBQXNEO01BQ3BELElBQUksQ0FBQy9ELCtDQUFPLENBQUNvQixXQUFELEVBQWN5QyxjQUFkLENBQVAsSUFBd0M1RCxpREFBUyxDQUFDbUIsV0FBRCxFQUFjeUMsY0FBZCxDQUFsRCxLQUFvRjdELCtDQUFPLENBQUM2RCxjQUFELEVBQWlCRSxZQUFqQixDQUEvRixFQUErSDtRQUM3SCxNQUFNNEksZUFBZSxHQUFHdE0saURBQVMsQ0FDL0JOLGlEQUFTLENBQUMsS0FBS1MsSUFBTCxDQUFVYyxTQUFYLEVBQXNCLEtBQUtkLElBQUwsQ0FBVWUsVUFBaEMsRUFBNEMsQ0FBNUMsQ0FEc0IsRUFFL0J4QixpREFBUyxDQUFDLEdBQUdnRSxZQUFKLENBRnNCLENBQWpDO1FBS0EsTUFBTTtVQUFFMUc7UUFBRixJQUFXLEtBQUsrRixVQUFMLENBQWdCLEtBQUs1QyxJQUFMLENBQVVjLFNBQTFCLEVBQXFDLEtBQUtkLElBQUwsQ0FBVWUsVUFBL0MsRUFBMkRvTCxlQUEzRCxDQUFqQjtRQUVBLEtBQUtsTCxLQUFMLENBQVduRSxPQUFYLENBQW1CRCxJQUFuQjtRQUNBLEtBQUt3RyxjQUFMLEdBQXNCQSxjQUF0QjtRQUNBLEtBQUtFLFlBQUwsR0FBb0JBLFlBQXBCO1FBQ0EsS0FBS0gsaUJBQUw7UUFDQSxLQUFLNEIsaUJBQUw7UUFDQSxLQUFLdkMsYUFBTDtRQUNBLEtBQUtWLFlBQUwsQ0FBa0J3QixZQUFZLENBQUMsQ0FBRCxDQUE5QixFQUFtQ0EsWUFBWSxDQUFDLENBQUQsQ0FBL0M7TUFDRCxDQWZELE1BZU87UUFDTCxLQUFLbkQsTUFBTCw2QkFBZ0NpRCxjQUFoQyxvQkFBc0RFLFlBQXRELFVBQXdFLE1BQXhFO1FBQ0EsT0FBTyxLQUFQO01BQ0Q7SUFDRixDQXBCRCxNQW9CTyxJQUFJRixjQUFjLElBQUlFLFlBQXRCLEVBQW9DO01BQ3pDLEtBQUtuRCxNQUFMLDRCQUErQmlELGNBQS9CLGtCQUFtREUsWUFBbkQsU0FBb0UsTUFBcEU7TUFDQSxPQUFPLEtBQVA7SUFDRDtFQUNGOztFQUVEZ0QsZ0JBQWdCLENBQUM2RixJQUFELEVBQU87SUFDckIsSUFBSSxLQUFLcE0sSUFBTCxDQUFVa0MsU0FBVixJQUF1QixLQUFLbEMsSUFBTCxDQUFVbUMsT0FBckMsRUFBOEM7TUFDNUMsSUFBSWlLLElBQUksS0FBSyxPQUFiLEVBQXNCO1FBQ3BCcFUsdURBQVEsQ0FBQyxLQUFLZ0ksSUFBTCxDQUFVa0MsU0FBWCxFQUFzQnBqQyxvRUFBdEIsQ0FBUjtRQUNBKzRCLDBEQUFXLENBQUMsS0FBS21JLElBQUwsQ0FBVW1DLE9BQVgsRUFBb0JyakMsb0VBQXBCLENBQVg7TUFDRDs7TUFDRCxJQUFJc3RDLElBQUksS0FBSyxLQUFiLEVBQW9CO1FBQ2xCcFUsdURBQVEsQ0FBQyxLQUFLZ0ksSUFBTCxDQUFVbUMsT0FBWCxFQUFvQnJqQyxvRUFBcEIsQ0FBUjtRQUNBKzRCLDBEQUFXLENBQUMsS0FBS21JLElBQUwsQ0FBVWtDLFNBQVgsRUFBc0JwakMsb0VBQXRCLENBQVg7TUFDRDs7TUFDRCxJQUFJc3RDLElBQUksS0FBSyxLQUFiLEVBQW9CO1FBQ2xCdlUsMERBQVcsQ0FBQyxLQUFLbUksSUFBTCxDQUFVa0MsU0FBWCxFQUFzQnBqQyxvRUFBdEIsQ0FBWDtRQUNBKzRCLDBEQUFXLENBQUMsS0FBS21JLElBQUwsQ0FBVW1DLE9BQVgsRUFBb0JyakMsb0VBQXBCLENBQVg7TUFDRDtJQUNGO0VBQ0Y7O0VBRURvbUMsU0FBUyxDQUFDcE8sQ0FBRCxFQUFJd1YsS0FBSixFQUFXO0lBQ2xCLElBQUksQ0FBQ0EsS0FBRCxLQUFXL1MsdURBQVEsQ0FBQ3pDLENBQUMsQ0FBQ3ZzQixNQUFILEVBQVcsS0FBSzB0QixFQUFoQixDQUFSLElBQStCc0IsdURBQVEsQ0FBQ3pDLENBQUMsQ0FBQ3ZzQixNQUFILEVBQVcsS0FBS3FnQyxRQUFoQixDQUFsRCxDQUFKLEVBQWtGO01BQ2hGOVQsQ0FBQyxDQUFDeVYsZUFBRjtJQUNELENBRkQsTUFFTztNQUNMMVUsMERBQVcsQ0FBQyxLQUFLSSxFQUFOLEVBQVVuNUIsc0VBQVYsQ0FBWDtNQUNBLEtBQUs2bkMsY0FBTDtNQUNBLEtBQUtyTSxJQUFMLENBQVUsWUFBVjtNQUNBLEtBQUtpTSxnQkFBTCxDQUFzQixLQUF0QjtJQUNEO0VBQ0Y7O0VBRURvRixnQkFBZ0IsQ0FBQ2p1QyxPQUFELEVBQVU4dUMsU0FBVixFQUFxQjtJQUNuQyxJQUFJalMseURBQVUsQ0FBQ2lTLFNBQUQsQ0FBZCxFQUEyQjtNQUN6Qjl1QyxPQUFPLENBQUMrUyxnQkFBUixDQUF5QixZQUF6QixFQUF3Q3FwQixLQUFELElBQVc7UUFDaERBLEtBQUssQ0FBQ29LLGNBQU47O1FBQ0FzSSxTQUFTO01BQ1YsQ0FIRDtNQUtBOXVDLE9BQU8sQ0FBQytTLGdCQUFSLENBQXlCLE9BQXpCLEVBQW1DcXBCLEtBQUQsSUFBVztRQUMzQ0EsS0FBSyxDQUFDb0ssY0FBTjs7UUFDQXNJLFNBQVM7TUFDVixDQUhEO0lBSUQ7RUFDRjs7RUFFRC9pQyxRQUFRLEdBQUc7SUFDVCxrQkFBVyxLQUFLMUosSUFBaEIsY0FBd0IsS0FBS2tnQyxPQUE3QjtFQUNEOztFQUVERyxNQUFNLENBQUNxTSxHQUFELEVBQW9CO0lBQUEsSUFBZEwsSUFBYyx1RUFBUCxLQUFPOztJQUN4QixJQUFJanNDLE9BQU8sSUFBSUEsT0FBTyxDQUFDaXNDLElBQUQsQ0FBdEIsRUFBOEI7TUFDNUJqc0MsT0FBTyxDQUFDaXNDLElBQUQsQ0FBUCxDQUFjLEtBQUszaUMsUUFBTCxLQUFrQmdqQyxHQUFoQztJQUNEO0VBQ0Y7O0FBdmpDMkM7Ozs7Ozs7Ozs7Ozs7Ozs7QUN0QjlDO0FBQ0E7O0FBRUEsTUFBTTtFQUFFMXNDO0FBQUYsSUFBV3VkLG1CQUFPLENBQUMsdUNBQUQsQ0FBeEI7O0FBQ0EsTUFBTXNqQixXQUFXLEdBQUcsSUFBSTVXLElBQUosRUFBcEI7QUFFQSxpRUFBZTtFQUNianFCLElBRGE7RUFFYm9nQyxTQUFTLEVBQUVuRiwyREFBYSxDQUFDajdCLElBQUQsQ0FGWDtFQUdiMnNDLE9BQU8sRUFBRS9zQyxLQUFBLEdBQXlDLHVCQUF6QyxHQUFtRSxDQUgvRDtFQUliZ3RDLFlBQVksRUFBRSxnQkFKRDtFQUtiQyxZQUFZLEVBQUUsdUNBTEQ7RUFNYkMsV0FBVyxFQUFFLFlBTkE7RUFPYkMsV0FBVyxFQUFFLHdCQVBBOztFQVNiMUMsU0FBUyxDQUFDMkMsR0FBRCxFQUFNO0lBQ2IsSUFBSUMsS0FBSyxHQUFHLEtBQUtKLFlBQUwsQ0FBa0J6ekIsT0FBbEIsQ0FBMEIsZUFBMUIsWUFBOEMsS0FBSzB6QixXQUFuRCxTQUFpRUUsR0FBakUsRUFBWjtJQUNBQyxLQUFLLEdBQUdBLEtBQUssQ0FBQzd6QixPQUFOLENBQWMsZUFBZCxFQUFnQyxLQUFLa2UsUUFBTixhQUFxQixLQUFLeVYsV0FBMUIsU0FBd0MsS0FBS3pWLFFBQTdDLElBQTBELEVBQXpGLENBQVI7SUFDQSxpQkFBVSxLQUFLcVYsT0FBZixTQUF5QixLQUFLQyxZQUE5QixTQUE2Q0ssS0FBN0M7RUFDRCxDQWJZOztFQWVick0sV0FBVyxFQUFFLENBZkE7RUFlRztFQUNoQmhDLE9BQU8sRUFBRSxDQWhCSTtFQWdCRDtFQUNabUksT0FBTyxFQUFFcFMsUUFqQkk7RUFpQk07RUFDbkJxTSxVQUFVLEVBQUUsSUFsQkM7RUFrQks7RUFDbEJELFNBQVMsRUFBRSxJQW5CRTtFQW1CSTtFQUNqQjJILFdBQVcsRUFBRSxDQXBCQTtFQW9CRztFQUNoQjVGLGFBQWEsRUFBRSxDQXJCRjtFQXNCYm1CLG9CQUFvQixFQUFFLENBdEJUO0VBdUJiL0IsVUFBVSxFQUFFLEtBdkJDO0VBd0JidUgsU0FBUyxFQUFFLEtBeEJFO0VBeUJiakksbUJBQW1CLEVBQUUsS0F6QlI7RUF5QmU7RUFDNUJtQyxjQUFjLEVBQUUsSUExQkg7RUEyQmJuRCxVQUFVLEVBQUUsS0EzQkM7RUE0QmJnTCxhQUFhLEVBQUUsY0E1QkY7RUE2QmJ0VCxFQUFFLEVBQUUsSUE3QlM7RUE4QmJpSyxTQUFTLEVBQUUsSUE5QkU7RUErQmJDLE9BQU8sRUFBRSxJQS9CSTtFQWdDYnlGLGFBQWEsRUFBRSxJQWhDRjtFQWlDYkQsYUFBYSxFQUFFLElBakNGO0VBa0NiNEMscUJBQXFCLEVBQUUsSUFsQ1Y7RUFtQ2JHLG9CQUFvQixFQUFFLEdBbkNUO0VBb0NibUIsT0FBTyxFQUFFLElBcENJO0VBcUNibkwsVUFBVSxFQUFFLElBckNDO0VBc0NibUssY0FBYyxFQUFFLElBdENIO0VBdUNiekksUUFBUSxFQUFFLElBdkNHO0VBd0NiL0ssUUFBUSxFQUFFLElBeENHO0VBeUNiMlMsb0JBQW9CLEVBQUUsS0F6Q1Q7RUEwQ2JoRCw0QkFBNEIsRUFBRSxLQTFDakI7RUEyQ2JDLDJCQUEyQixFQUFFLEtBM0NoQjtFQTRDYi9ELGFBQWEsRUFBRSxLQTVDRjtFQTZDYnRDLFdBN0NhO0VBOENiYyxLQUFLLEVBQUU7QUE5Q00sQ0FBZjs7Ozs7Ozs7Ozs7Ozs7O0FDTkEsSUFBSXBDLE9BQU8sR0FBRztFQUNaLFNBQVM7SUFDUDFULGlCQUFpQixFQUFFLHVCQUF1QnhTLEtBQXZCLENBQTZCLEdBQTdCLENBRFo7SUFFUHlTLGdCQUFnQixFQUFFLDJEQUEyRHpTLEtBQTNELENBQWlFLEdBQWpFLENBRlg7SUFHUDJTLGNBQWMsRUFBRSx3RkFBd0YzUyxLQUF4RixDQUE4RixHQUE5RixDQUhUO0lBSVAwUyxlQUFlLEVBQUUsa0RBQWtEMVMsS0FBbEQsQ0FBd0QsR0FBeEQsQ0FKVjtJQUtQc25CLFVBQVUsRUFBRSxXQUxMO0lBTVBySixRQUFRLEVBQUUsS0FOSDtJQU9Qc0gsT0FBTyxFQUFFLGlCQVBGO0lBUVBtSSxPQUFPLEVBQUUsaUJBUkY7SUFTUE8saUJBQWlCLEVBQUUsOEJBVFo7SUFVUEMsaUJBQWlCLEVBQUUsOEJBVlo7SUFXUEMsY0FBYyxFQUFFLGdCQVhUO0lBWVA1RyxXQUFXLEVBQUU7RUFaTixDQURHO0VBZVosU0FBUztJQUNQL1UsaUJBQWlCLEVBQUUsdUJBQXVCeFMsS0FBdkIsQ0FBNkIsR0FBN0IsQ0FEWjtJQUVQeVMsZ0JBQWdCLEVBQUUsMkRBQTJEelMsS0FBM0QsQ0FBaUUsR0FBakUsQ0FGWDtJQUdQMlMsY0FBYyxFQUFFLHdGQUF3RjNTLEtBQXhGLENBQThGLEdBQTlGLENBSFQ7SUFJUDBTLGVBQWUsRUFBRSxrREFBa0QxUyxLQUFsRCxDQUF3RCxHQUF4RCxDQUpWO0lBS1BzbkIsVUFBVSxFQUFFLFdBTEw7SUFNUHJKLFFBQVEsRUFBRSxLQU5IO0lBT1BzSCxPQUFPLEVBQUUsaUJBUEY7SUFRUG1JLE9BQU8sRUFBRSxpQkFSRjtJQVNQTyxpQkFBaUIsRUFBRSw4QkFUWjtJQVVQQyxpQkFBaUIsRUFBRSw4QkFWWjtJQVdQQyxjQUFjLEVBQUUsZ0JBWFQ7SUFZUDVHLFdBQVcsRUFBRTtFQVpOLENBZkc7RUE2QlosU0FBUztJQUNQL1UsaUJBQWlCLEVBQUUsdUJBQXVCeFMsS0FBdkIsQ0FBNkIsR0FBN0IsQ0FEWjtJQUVQeVMsZ0JBQWdCLEVBQUUsOERBQThEelMsS0FBOUQsQ0FBb0UsR0FBcEUsQ0FGWDtJQUdQMlMsY0FBYyxFQUFFLHFGQUFxRjNTLEtBQXJGLENBQTJGLEdBQTNGLENBSFQ7SUFJUDBTLGVBQWUsRUFBRSxrREFBa0QxUyxLQUFsRCxDQUF3RCxHQUF4RCxDQUpWO0lBS1BzbkIsVUFBVSxFQUFFLFdBTEw7SUFNUHJKLFFBQVEsRUFBRSxLQU5IO0lBT1BzSCxPQUFPLEVBQUUsaUJBUEY7SUFRUG1JLE9BQU8sRUFBRSxpQkFSRjtJQVNQTyxpQkFBaUIsRUFBRSxtQ0FUWjtJQVVQQyxpQkFBaUIsRUFBRSxzQ0FWWjtJQVdQQyxjQUFjLEVBQUUsZUFYVDtJQVlQNUcsV0FBVyxFQUFFO0VBWk4sQ0E3Qkc7RUEyQ1osU0FBUztJQUNQL1UsaUJBQWlCLEVBQUUsdUJBQXVCeFMsS0FBdkIsQ0FBNkIsR0FBN0IsQ0FEWjtJQUVQeVMsZ0JBQWdCLEVBQUUsdURBQXVEelMsS0FBdkQsQ0FBNkQsR0FBN0QsQ0FGWDtJQUdQMlMsY0FBYyxFQUFFLDJGQUEyRjNTLEtBQTNGLENBQWlHLEdBQWpHLENBSFQ7SUFJUDBTLGVBQWUsRUFBRSxrREFBa0QxUyxLQUFsRCxDQUF3RCxHQUF4RCxDQUpWO0lBS1BzbkIsVUFBVSxFQUFFLFdBTEw7SUFNUHJKLFFBQVEsRUFBRSxLQU5IO0lBT1BzSCxPQUFPLEVBQUUsaUJBUEY7SUFRUG1JLE9BQU8sRUFBRSxpQkFSRjtJQVNQTyxpQkFBaUIsRUFBRSxpQ0FUWjtJQVVQQyxpQkFBaUIsRUFBRSxpQ0FWWjtJQVdQQyxjQUFjLEVBQUUsY0FYVDtJQVlQNUcsV0FBVyxFQUFFO0VBWk4sQ0EzQ0c7RUF5RFosU0FBUztJQUNQL1UsaUJBQWlCLEVBQUUsdUJBQXVCeFMsS0FBdkIsQ0FBNkIsR0FBN0IsQ0FEWjtJQUVQeVMsZ0JBQWdCLEVBQUUsc0RBQXNEelMsS0FBdEQsQ0FBNEQsR0FBNUQsQ0FGWDtJQUdQMlMsY0FBYyxFQUFFLHVGQUF1RjNTLEtBQXZGLENBQTZGLEdBQTdGLENBSFQ7SUFJUDBTLGVBQWUsRUFBRSxvREFBb0QxUyxLQUFwRCxDQUEwRCxHQUExRCxDQUpWO0lBS1BzbkIsVUFBVSxFQUFFLFdBTEw7SUFNUHJKLFFBQVEsRUFBRSxLQU5IO0lBT1BzSCxPQUFPLEVBQUUsZ0JBUEY7SUFRUG1JLE9BQU8sRUFBRSxnQkFSRjtJQVNQTyxpQkFBaUIsRUFBRSxnQ0FUWjtJQVVQQyxpQkFBaUIsRUFBRSxnQ0FWWjtJQVdQQyxjQUFjLEVBQUUsY0FYVDtJQVlQNUcsV0FBVyxFQUFFO0VBWk4sQ0F6REc7RUF1RVosU0FBUztJQUNQL1UsaUJBQWlCLEVBQUUsdUJBQXVCeFMsS0FBdkIsQ0FBNkIsR0FBN0IsQ0FEWjtJQUVQeVMsZ0JBQWdCLEVBQUUsMkRBQTJEelMsS0FBM0QsQ0FBaUUsR0FBakUsQ0FGWDtJQUdQMlMsY0FBYyxFQUFFLGdHQUFnRzNTLEtBQWhHLENBQXNHLEdBQXRHLENBSFQ7SUFJUDBTLGVBQWUsRUFBRSxrREFBa0QxUyxLQUFsRCxDQUF3RCxHQUF4RCxDQUpWO0lBS1BzbkIsVUFBVSxFQUFFLFdBTEw7SUFNUHJKLFFBQVEsRUFBRSxLQU5IO0lBT1BzSCxPQUFPLEVBQUUsaUJBUEY7SUFRUG1JLE9BQU8sRUFBRSxnQkFSRjtJQVNQTyxpQkFBaUIsRUFBRSxnQ0FUWjtJQVVQQyxpQkFBaUIsRUFBRSxrQ0FWWjtJQVdQQyxjQUFjLEVBQUUsZUFYVDtJQVlQNUcsV0FBVyxFQUFFO0VBWk4sQ0F2RUc7RUFxRlosU0FBUztJQUNQL1UsaUJBQWlCLEVBQUUsdUJBQXVCeFMsS0FBdkIsQ0FBNkIsR0FBN0IsQ0FEWjtJQUVQeVMsZ0JBQWdCLEVBQUUsb0RBQW9EelMsS0FBcEQsQ0FBMEQsR0FBMUQsQ0FGWDtJQUdQMlMsY0FBYyxFQUFFLHdGQUF3RjNTLEtBQXhGLENBQThGLEdBQTlGLENBSFQ7SUFJUDBTLGVBQWUsRUFBRSxrREFBa0QxUyxLQUFsRCxDQUF3RCxHQUF4RCxDQUpWO0lBS1BzbkIsVUFBVSxFQUFFLFdBTEw7SUFNUHJKLFFBQVEsRUFBRSxLQU5IO0lBT1BzSCxPQUFPLEVBQUUsaUJBUEY7SUFRUG1JLE9BQU8sRUFBRSxpQkFSRjtJQVNQTyxpQkFBaUIsRUFBRSxtQ0FUWjtJQVVQQyxpQkFBaUIsRUFBRSxpQ0FWWjtJQVdQQyxjQUFjLEVBQUUsYUFYVDtJQVlQNUcsV0FBVyxFQUFFO0VBWk4sQ0FyRkc7RUFtR1osU0FBUztJQUNQL1UsaUJBQWlCLEVBQUUsdUJBQXVCeFMsS0FBdkIsQ0FBNkIsR0FBN0IsQ0FEWjtJQUVQeVMsZ0JBQWdCLEVBQUUsZ0VBQWdFelMsS0FBaEUsQ0FBc0UsR0FBdEUsQ0FGWDtJQUdQMlMsY0FBYyxFQUFFLGtGQUFrRjNTLEtBQWxGLENBQXdGLEdBQXhGLENBSFQ7SUFJUDBTLGVBQWUsRUFBRSxrREFBa0QxUyxLQUFsRCxDQUF3RCxHQUF4RCxDQUpWO0lBS1BzbkIsVUFBVSxFQUFFLFVBTEw7SUFNUHJKLFFBQVEsRUFBRSxNQU5IO0lBT1BzSCxPQUFPLEVBQUUsZUFQRjtJQVFQbUksT0FBTyxFQUFFLGVBUkY7SUFTUE8saUJBQWlCLEVBQUUscUNBVFo7SUFVUEMsaUJBQWlCLEVBQUUsdUNBVlo7SUFXUEMsY0FBYyxFQUFFLG1CQVhUO0lBWVA1RyxXQUFXLEVBQUU7RUFaTixDQW5HRztFQWlIWixTQUFTO0lBQ1AvVSxpQkFBaUIsRUFBRSx1QkFBdUJ4UyxLQUF2QixDQUE2QixHQUE3QixDQURaO0lBRVB5UyxnQkFBZ0IsRUFBRSw2REFBNkR6UyxLQUE3RCxDQUFtRSxHQUFuRSxDQUZYO0lBR1AyUyxjQUFjLEVBQUUsbUdBQW1HM1MsS0FBbkcsQ0FBeUcsR0FBekcsQ0FIVDtJQUlQMFMsZUFBZSxFQUFFLGtEQUFrRDFTLEtBQWxELENBQXdELEdBQXhELENBSlY7SUFLUHNuQixVQUFVLEVBQUUsVUFMTDtJQU1QckosUUFBUSxFQUFFLEtBTkg7SUFPUHNILE9BQU8sRUFBRSxlQVBGO0lBUVBtSSxPQUFPLEVBQUUsZUFSRjtJQVNQTyxpQkFBaUIsRUFBRSw4QkFUWjtJQVVQQyxpQkFBaUIsRUFBRSxnQ0FWWjtJQVdQQyxjQUFjLEVBQUUsbUJBWFQ7SUFZUDVHLFdBQVcsRUFBRTtFQVpOLENBakhHO0VBK0haLFNBQVM7SUFDUC9VLGlCQUFpQixFQUFFLHVCQUF1QnhTLEtBQXZCLENBQTZCLEdBQTdCLENBRFo7SUFFUHlTLGdCQUFnQixFQUFFLDZEQUE2RHpTLEtBQTdELENBQW1FLEdBQW5FLENBRlg7SUFHUDJTLGNBQWMsRUFBRSwwRkFBMEYzUyxLQUExRixDQUFnRyxHQUFoRyxDQUhUO0lBSVAwUyxlQUFlLEVBQUUsa0RBQWtEMVMsS0FBbEQsQ0FBd0QsR0FBeEQsQ0FKVjtJQUtQc25CLFVBQVUsRUFBRSxXQUxMO0lBTVBySixRQUFRLEVBQUUsS0FOSDtJQU9Qc0gsT0FBTyxFQUFFLGtCQVBGO0lBUVBtSSxPQUFPLEVBQUUsa0JBUkY7SUFTUE8saUJBQWlCLEVBQUUsb0NBVFo7SUFVUEMsaUJBQWlCLEVBQUUsb0NBVlo7SUFXUEMsY0FBYyxFQUFFLFlBWFQ7SUFZUDVHLFdBQVcsRUFBRTtFQVpOO0FBL0hHLENBQWQsRUErSUE7O0FBQ0FyQixPQUFPLEdBQUc3Z0MsTUFBTSxDQUFDQyxNQUFQLENBQWM7RUFDdEJ1dUMsRUFBRSxFQUFFM04sT0FBTyxDQUFDLE9BQUQsQ0FEVztFQUV0QjROLEVBQUUsRUFBRTVOLE9BQU8sQ0FBQyxPQUFELENBRlc7RUFHdEI2TixFQUFFLEVBQUU3TixPQUFPLENBQUMsT0FBRCxDQUhXO0VBSXRCOE4sRUFBRSxFQUFFOU4sT0FBTyxDQUFDLE9BQUQsQ0FKVztFQUt0QitOLEVBQUUsRUFBRS9OLE9BQU8sQ0FBQyxPQUFELENBTFc7RUFNdEJnTyxFQUFFLEVBQUVoTyxPQUFPLENBQUMsT0FBRCxDQU5XO0VBT3RCaU8sRUFBRSxFQUFFak8sT0FBTyxDQUFDLE9BQUQsQ0FQVztFQVF0QmtPLEVBQUUsRUFBRWxPLE9BQU8sQ0FBQyxPQUFELENBUlc7RUFTdEJtTyxFQUFFLEVBQUVuTyxPQUFPLENBQUMsT0FBRDtBQVRXLENBQWQsRUFVUEEsT0FWTyxDQUFWO0FBWUEsaUVBQWVBLE9BQWY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzVKQTtBQUVPLE1BQU1uMEIsSUFBSSwwQkFBbUJyTSwyRUFBbkIsY0FBVjtBQUVBLE1BQU0rbkMsT0FBTywwQkFBa0IvbkMscUVBQWxCLDJEQUE2RUEsMEVBQTdFLCtDQUFiO0FBRUEsTUFBTWt1QixLQUFLLDhCQUNGbHVCLG1FQURFLDhDQUVFQSxtRUFGRiw2REFHV0EscUVBSFgsdURBSUlBLHlFQUpKLHdEQUtJQSxrRUFMSiwwQ0FBWDtBQVVBLE1BQU00cEMsWUFBWSxHQUFJa0YsS0FBRCwwQkFBeUI5dUMsZ0VBQXpCLGdCQUF1Qzh1QyxLQUF2QyxVQUFyQjtBQUVBLE1BQU1oRSxPQUFPLEdBQUcsQ0FDckJnRSxLQURxQixFQUVyQmhLLFFBRnFCLEVBR3JCK0YsYUFIcUIsRUFJckIzSyxjQUpxQixFQUtyQjBLLFlBTHFCLEVBTXJCL0ssT0FOcUIsRUFPckJtUCxRQVBxQixFQVFyQmhILE9BUnFCLEVBU3JCaUgsUUFUcUIsRUFVckJuUCxJQVZxQixFQVdyQm9QLEtBWHFCLHVCQWFmcEssUUFBUSwyQkFBb0JBLFFBQXBCLElBQWlDLGNBYjFCLHNCQWNkNUUsY0FBYyxHQUFHLG9CQUFILEdBQTBCLEVBZDFCLHNCQWVkMkssYUFBYSxHQUFHLG1CQUFILEdBQXlCLEVBZnhCLHNCQWdCZGhMLE9BQU8sMkJBQW9CQSxPQUFwQixJQUFnQyxFQWhCekIsc0JBaUJkbUksT0FBTywyQkFBb0JBLE9BQXBCLElBQWdDLEVBakJ6QixtQ0FrQkY4RyxLQWxCRSxnQ0FtQlA5dUMsa0VBbkJPLGNBbUJRNHFDLFlBQVksR0FBRzVxQyxtRUFBSCxHQUFrQixFQW5CdEMsc0NBb0JGQSxpRUFwQkUsNkNBcUJiOHVDLEtBckJhLG9DQXNCRDl1QyxrRUF0QkMsNEJBdUJYOC9CLElBQUksNkJBQXNCb1AsS0FBdEIsZUFBdUMsRUF2QmhDLHlCQXdCWHJQLE9BQU8sSUFBSW1QLFFBQVgsbUNBQStDQSxRQUEvQyxlQUFtRSxFQXhCeEQseUJBeUJYaEgsT0FBTyxJQUFJaUgsUUFBWCxtQ0FBK0NBLFFBQS9DLGVBQW1FLEVBekJ4RCw4Q0FBaEI7QUErQkEsTUFBTWxNLE9BQU8saUNBQ0QvaUMscUVBREMsMlVBQWI7QUFRQSxNQUFNZ2pDLElBQUksaUNBQ0VoakMsa0VBREYsc1VBQVY7QUFRQSxNQUFNd3FDLGtCQUFrQixHQUFHLFdBQTNCO0FBRVA7O0FBQ08sTUFBTVIsT0FBTyxHQUFJc0YsR0FBRCxJQUFTO0VBQzlCLE9BQU87SUFDTDVYLElBQUksb0NBQTRCNFgsR0FBNUIsUUFEQztJQUVMN0UsS0FBSyxFQUFFO0VBRkYsQ0FBUDtBQUlELENBTE07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3BFUDtBQUNBO0FBQ0E7QUFFTyxNQUFNaEssU0FBUyxHQUFHLFNBQVpBLFNBQVksQ0FBQ3pTLElBQUQsRUFBT0UsS0FBUCxFQUFjRSxHQUFkLEVBQXdDO0VBQUEsSUFBckJnUCxRQUFxQix1RUFBVixLQUFVOztFQUMvRCxTQUFTbVMsR0FBVCxDQUFhcGlCLE1BQWIsRUFBcUI7SUFDbkIsSUFBSUEsTUFBTSxHQUFHLEVBQWIsRUFBaUI7TUFDZixrQkFBV0EsTUFBWDtJQUNEOztJQUNELE9BQU9BLE1BQVA7RUFDRDs7RUFFRCxJQUFJaVEsUUFBSixFQUFjO0lBQ1osaUJBQVVwUCxJQUFWLGNBQWtCdWhCLEdBQUcsQ0FBQ3JoQixLQUFLLEdBQUcsQ0FBVCxDQUFyQixjQUFvQ3FoQixHQUFHLENBQUNuaEIsR0FBRCxDQUF2QztFQUNEOztFQUVELElBQUlwRCxJQUFJLEdBQUcsSUFBSUUsSUFBSixDQUFTOEMsSUFBVCxFQUFlRSxLQUFmLEVBQXNCRSxHQUF0QixFQUEyQixFQUEzQixFQUErQixDQUEvQixFQUFrQyxDQUFsQyxDQUFYO0VBQ0EsT0FBT3BELElBQVA7QUFDRCxDQWRNO0FBZ0JBLE1BQU04VixXQUFXLEdBQUcsQ0FBQzBPLEdBQUQsRUFBTXYxQixNQUFOLEVBQWMwbkIsTUFBZCxLQUF5QjtFQUNsRCxJQUFJO0lBQ0YsTUFBTTNXLElBQUksR0FBR3FCLGlEQUFRLENBQUNtakIsR0FBRCxFQUFNdjFCLE1BQU4sRUFBYzBuQixNQUFkLENBQXJCO0lBQ0EsTUFBTWpwQixDQUFDLEdBQU02UyxpREFBUSxDQUFDUCxJQUFELEVBQU8sVUFBUCxDQUFSLENBQTJCMVEsS0FBM0IsQ0FBaUMsR0FBakMsQ0FBYjtJQUVBLE9BQU8sQ0FDTDBoQixRQUFRLENBQUN0akIsQ0FBQyxDQUFDLENBQUQsQ0FBRixDQURILEVBQ1c7SUFDaEJzakIsUUFBUSxDQUFDdGpCLENBQUMsQ0FBQyxDQUFELENBQUQsR0FBTyxDQUFSLENBRkgsRUFFZTtJQUNwQnNqQixRQUFRLENBQUN0akIsQ0FBQyxDQUFDLENBQUQsQ0FBRixDQUhILENBR1U7SUFIVixDQUFQO0VBS0QsQ0FURCxDQVNFLE9BQU1zZixDQUFOLEVBQVM7SUFDVCxJQUFJd0MsZ0RBQUUsQ0FBQ3hDLENBQUMsQ0FBQzFFLE9BQUgsQ0FBTixFQUFtQjtNQUNqQmp5QixPQUFPLENBQUNvdUMsR0FBUixDQUFZelgsQ0FBQyxDQUFDMUUsT0FBZDtJQUNEOztJQUNELE9BQU8sS0FBUDtFQUNEO0FBQ0YsQ0FoQk07QUFrQkEsTUFBTW9OLE9BQU8sR0FBRyxDQUFDOTBCLEtBQUQsRUFBUUMsR0FBUixLQUFnQjQwQixTQUFTLENBQUMsR0FBRzcwQixLQUFKLEVBQVcsSUFBWCxDQUFULEdBQTRCNjBCLFNBQVMsQ0FBQyxHQUFHNTBCLEdBQUosRUFBUyxJQUFULENBQXJFO0FBRUEsTUFBTTgwQixTQUFTLEdBQUcsQ0FBQy8wQixLQUFELEVBQVFDLEdBQVIsS0FBZ0I0MEIsU0FBUyxDQUFDLEdBQUc3MEIsS0FBSixFQUFXLElBQVgsQ0FBVCxJQUE2QjYwQixTQUFTLENBQUMsR0FBRzUwQixHQUFKLEVBQVMsSUFBVCxDQUF4RTtBQUVBLE1BQU1rMUIsU0FBUyxHQUFHLENBQUNuMUIsS0FBRCxFQUFRQyxHQUFSLEtBQWdCO0VBQ3ZDLE9BQU9BLEdBQUcsQ0FBQ2syQixRQUFKLEtBQWlCbjJCLEtBQUssQ0FBQ20yQixRQUFOLEVBQWpCLEdBQXFDLE1BQU1sMkIsR0FBRyxDQUFDK29CLFdBQUosS0FBb0JocEIsS0FBSyxDQUFDZ3BCLFdBQU4sRUFBMUIsQ0FBNUM7QUFDRCxDQUZNO0FBSUEsTUFBTWdNLGdCQUFnQixHQUFJOUIsSUFBRCxJQUFVO0VBQ3hDLElBQUl0RSxnREFBRSxDQUFDc0UsSUFBSSxDQUFDMEMsT0FBTCxDQUFhNWdDLE9BQWQsQ0FBRixJQUE0QjQ1QixnREFBRSxDQUFDc0UsSUFBSSxDQUFDMEMsT0FBTCxDQUFha08sV0FBZCxDQUE5QixJQUE0RGxWLGdEQUFFLENBQUNzRSxJQUFJLENBQUMwQyxPQUFMLENBQWFtTyxZQUFkLENBQWxFLEVBQStGO0lBQzdGLE9BQU8sSUFBUDtFQUNEOztFQUVELE9BQU8sS0FBUDtBQUNELENBTk07QUFRQSxNQUFNOU8sVUFBVSxHQUFHLENBQUM3ekIsS0FBRCxFQUFRa04sR0FBUixLQUFnQkEsR0FBRyxDQUFDRyxPQUFKLENBQVksU0FBWixFQUF1QnJOLEtBQXZCLENBQW5DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN0RFA7QUFDNkc7QUFDakI7QUFDTztBQUNuRyw0Q0FBNEMsaWtEQUErd0I7QUFDM3pCLDhCQUE4QixtRkFBMkIsQ0FBQyw0RkFBcUM7QUFDL0YseUNBQXlDLHNGQUErQjtBQUN4RTtBQUNBLGdQQUFnUCxVQUFVLHNDQUFzQyxnQ0FBZ0MsUUFBUSx3Q0FBd0Msb0NBQW9DLDREQUE0RCxVQUFVLHNDQUFzQyxnQ0FBZ0MsUUFBUSx3Q0FBd0Msb0NBQW9DLGtEQUFrRCx1QkFBdUIsV0FBVyxZQUFZLGdCQUFnQixpQkFBaUIsK0NBQStDLGtCQUFrQixpREFBaUQsdUJBQXVCLGFBQWEsY0FBYyxpQ0FBaUMsMEJBQTBCLGdDQUFnQyxzRUFBc0UsaUJBQWlCLGdCQUFnQiw0QkFBNEIsZ0JBQWdCLHNGQUFzRiw4RUFBOEUsbUNBQW1DLCtGQUErRixrQkFBa0IsZUFBZSx1QkFBdUIsa0RBQWtELDZDQUE2Qyw0Q0FBNEMscUtBQXFLLGVBQWUsd0JBQXdCLG9DQUFvQyx1TkFBdU4sdUJBQXVCLGtCQUFrQixvQkFBb0IsbURBQW1ELDhCQUE4QixxQkFBcUIsY0FBYyxpQkFBaUIseUJBQXlCLHVCQUF1QixrQkFBa0Isa0hBQWtILHVCQUF1QixtSEFBbUgsNEJBQTRCLGtPQUFrTyxlQUFlLGtCQUFrQixtSEFBbUgsaUJBQWlCLG1CQUFtQiw0R0FBNEcsZ0NBQWdDLHFDQUFxQywyR0FBMkcsaUNBQWlDLHNDQUFzQywyTUFBMk0sdUJBQXVCLG1CQUFtQixnQkFBZ0IsY0FBYyxnQkFBZ0Isb0NBQW9DLGdDQUFnQyw0QkFBNEIsdUJBQXVCLGVBQWUsNkJBQTZCLGdCQUFnQix3R0FBd0csaUJBQWlCLHVHQUF1RyxnQkFBZ0Isd1lBQXdZLHlFQUF5RSwwRkFBMEYsdUVBQXVFLGlFQUFpRSwrTEFBK0wsb0JBQW9CLDJFQUEyRSxpR0FBaUcseUVBQXlFLDZPQUE2TyxtQkFBbUIsNEVBQTRFLDZGQUE2RiwwRUFBMEUsb0VBQW9FLHFNQUFxTSxvQkFBb0IsOEVBQThFLG9HQUFvRyxtQkFBbUIsNEVBQTRFLDhOQUE4Tix1QkFBdUIsK0ZBQStGLHVCQUF1Qiw4RkFBOEYscUJBQXFCLDBFQUEwRSx5RkFBeUYsc0VBQXNFLGdFQUFnRSw2TEFBNkwsb0JBQW9CLDBFQUEwRSx3RkFBd0YsdUJBQXVCLGdHQUFnRyxxQkFBcUIsMEVBQTBFLCtGQUErRix1QkFBdUIsdU5BQXVOLHVCQUF1QixvRkFBb0YsdUJBQXVCLG1GQUFtRixxQkFBcUIsOEVBQThFLG1GQUFtRix1QkFBdUIsMkZBQTJGLHFCQUFxQiw4RUFBOEUsMEZBQTBGLHVCQUF1QiwyTkFBMk4sdUJBQXVCLHNGQUFzRixxQkFBcUIsOEVBQThFLHFGQUFxRix1QkFBdUIscUZBQXFGLHVCQUF1Qiw2RkFBNkYsdUJBQXVCLDRGQUE0RixxQkFBcUIsOEVBQThFLDZNQUE2TSx1QkFBdUIsbUJBQW1CLGdCQUFnQixpQkFBaUIsV0FBVyxjQUFjLGdCQUFnQixpQkFBaUIsb1lBQW9ZLGtDQUFrQyxpRUFBaUUsdU9BQXVPLG9FQUFvRSxvR0FBb0csNEVBQTRFLGdFQUFnRSxpQkFBaUIsa0JBQWtCLG1HQUFtRyw0RUFBNEUsMkVBQTJFLDhGQUE4RixvRUFBb0Usc0dBQXNHLDRFQUE0RSxrRUFBa0UsNkZBQTZGLG9FQUFvRSxxR0FBcUcsNEVBQTRFLGdFQUFnRSxpQkFBaUIsbUJBQW1CLG9HQUFvRyw0RUFBNEUsMkVBQTJFLCtOQUErTixnRUFBZ0UsZ0dBQWdHLHdFQUF3RSxnRUFBZ0UsaUJBQWlCLGtCQUFrQiwrRkFBK0Ysd0VBQXdFLDJFQUEyRSwwRkFBMEYsZ0VBQWdFLGtHQUFrRyx3RUFBd0Usa0VBQWtFLHlGQUF5RixnRUFBZ0UsaUdBQWlHLHdFQUF3RSxnRUFBZ0UsaUJBQWlCLG1CQUFtQixnR0FBZ0csd0VBQXdFLDJFQUEyRSxtUEFBbVAsb0VBQW9FLHNIQUFzSCw0RUFBNEUsMkVBQTJFLGdMQUFnTCx1QkFBdUIsZ0RBQWdELHVCQUF1Qix1QkFBdUIsOEVBQThFLDJCQUEyQiwyQkFBMkIsb0JBQW9CLCtCQUErQiw0QkFBNEIsOEJBQThCLGdDQUFnQyw2QkFBNkIsMEJBQTBCLHdCQUF3Qix1QkFBdUIsMkJBQTJCLHFCQUFxQiwyQkFBMkIsOEVBQThFLHFFQUFxRSw2REFBNkQsd0JBQXdCLHVCQUF1QixzQkFBc0IseUJBQXlCLG1CQUFtQiw2QkFBNkIseUhBQXlILDZCQUE2QixzUEFBc1AsNkJBQTZCLHFCQUFxQixzQkFBc0IsZ0NBQWdDLG1JQUFtSSw4QkFBOEIsc0JBQXNCLHFDQUFxQyx5SkFBeUosdUJBQXVCLDRKQUE0SixvQkFBb0IsMEpBQTBKLHNCQUFzQiwySkFBMkoscUJBQXFCLG9GQUFvRiwyQkFBMkIsMkJBQTJCLG9CQUFvQiwwQkFBMEIsc0JBQXNCLGlCQUFpQiw0RUFBNEUseUJBQXlCLDBCQUEwQix3QkFBd0Isc0JBQXNCLGlEQUFpRCxnRkFBZ0YsOEJBQThCLDZCQUE2Qiw2QkFBNkIsNEVBQTRFLGdDQUFnQyw4QkFBOEIsaUJBQWlCLGdCQUFnQixvQkFBb0IsNEpBQTRKLGtCQUFrQix5RUFBeUUsd0JBQXdCLHFCQUFxQixtQkFBbUIsa0JBQWtCLDJCQUEyQiwyRUFBMkUseUJBQXlCLGlCQUFpQix5QkFBeUIsZ0JBQWdCLDZCQUE2QixxQkFBcUIsbUNBQW1DLHVCQUF1QixvQkFBb0IsOEdBQThHLDRCQUE0QiwwRUFBMEUseUJBQXlCLDJCQUEyQiwyQkFBMkIsb0JBQW9CLCtCQUErQiw0QkFBNEIsOEJBQThCLGdDQUFnQyw2QkFBNkIsMEJBQTBCLGlCQUFpQixxQkFBcUIsNkJBQTZCLG1GQUFtRixvQkFBb0IsdUJBQXVCLDJCQUEyQiwyRUFBMkUseUJBQXlCLGdCQUFnQixjQUFjLHdCQUF3Qix1QkFBdUIsbUNBQW1DLGlCQUFpQixvRkFBb0YsdUJBQXVCLDZCQUE2Qiw0WkFBNFoscUJBQXFCLG1QQUFtUCxzQkFBc0IsNlJBQTZSLHVCQUF1QixXQUFXLFlBQVksaUJBQWlCLGdCQUFnQixrQkFBa0IsZUFBZSx1QkFBdUIsb0JBQW9CLGlCQUFpQixnS0FBZ0ssc0JBQXNCLHVCQUF1Qiw4RUFBOEUsYUFBYSxpQkFBaUIsbVVBQW1VLG9CQUFvQixrS0FBa0ssb0JBQW9CLDZWQUE2VixpQkFBaUIsb0JBQW9CLG9CQUFvQixTQUFTLHlVQUF5VSxPQUFPLE1BQU0sS0FBSyxZQUFZLGtCQUFrQixNQUFNLFlBQVksd0JBQXdCLE1BQU0sS0FBSyxZQUFZLGtCQUFrQixNQUFNLFlBQVksd0JBQXdCLE1BQU0sWUFBWSxXQUFXLFVBQVUsVUFBVSxVQUFVLFlBQVksaUJBQWlCLEtBQUssWUFBWSxXQUFXLFVBQVUsWUFBWSxhQUFhLGFBQWEsY0FBYyxZQUFZLFVBQVUsWUFBWSxXQUFXLFlBQVksYUFBYSxtQkFBbUIsT0FBTyxXQUFXLFVBQVUsWUFBWSxjQUFjLGVBQWUscUJBQXFCLE9BQU8sV0FBVyxZQUFZLG1CQUFtQixVQUFVLFFBQVEsT0FBTyxZQUFZLFdBQVcsVUFBVSxZQUFZLGFBQWEsYUFBYSxXQUFXLFVBQVUsWUFBWSxhQUFhLGdCQUFnQixLQUFLLGVBQWUsTUFBTSxrQkFBa0IsUUFBUSxXQUFXLGVBQWUsTUFBTSxXQUFXLGdCQUFnQixNQUFNLFlBQVksbUJBQW1CLE1BQU0sWUFBWSxtQkFBbUIsTUFBTSxZQUFZLFdBQVcsVUFBVSxVQUFVLFVBQVUsWUFBWSxhQUFhLGFBQWEsYUFBYSxXQUFXLFlBQVksaUJBQWlCLE1BQU0saUJBQWlCLE9BQU8saUJBQWlCLFFBQVEsUUFBUSxRQUFRLFFBQVEsT0FBTyxtQkFBbUIsT0FBTyxhQUFhLG9CQUFvQixPQUFPLFVBQVUsbUJBQW1CLE9BQU8sb0JBQW9CLFFBQVEsUUFBUSxPQUFPLFVBQVUsbUJBQW1CLE9BQU8sYUFBYSxvQkFBb0IsT0FBTyxVQUFVLG1CQUFtQixPQUFPLFdBQVcsbUJBQW1CLFFBQVEsUUFBUSxPQUFPLGlCQUFpQixNQUFNLGVBQWUsTUFBTSxVQUFVLG1CQUFtQixPQUFPLGFBQWEsb0JBQW9CLE9BQU8sV0FBVyxtQkFBbUIsT0FBTyxrQkFBa0IsT0FBTyxXQUFXLGtCQUFrQixPQUFPLGlCQUFpQixPQUFPLFFBQVEsT0FBTyxpQkFBaUIsTUFBTSxlQUFlLE1BQU0sVUFBVSxtQkFBbUIsT0FBTyxrQkFBa0IsT0FBTyxXQUFXLGtCQUFrQixPQUFPLGlCQUFpQixPQUFPLFFBQVEsT0FBTyxpQkFBaUIsTUFBTSxVQUFVLGtCQUFrQixPQUFPLGdCQUFnQixNQUFNLGtCQUFrQixPQUFPLGdCQUFnQixPQUFPLFdBQVcsbUJBQW1CLE9BQU8sWUFBWSxXQUFXLFVBQVUsVUFBVSxVQUFVLFVBQVUsVUFBVSxnQkFBZ0IsU0FBUyxRQUFRLFFBQVEsUUFBUSxPQUFPLFlBQVksbUJBQW1CLFFBQVEsUUFBUSxPQUFPLGtCQUFrQixPQUFPLGFBQWEsZUFBZSxZQUFZLGVBQWUsS0FBSyxhQUFhLHFCQUFxQixPQUFPLG1CQUFtQixPQUFPLGNBQWMscUJBQXFCLE9BQU8sbUJBQW1CLE9BQU8sY0FBYyxlQUFlLFlBQVksZUFBZSxPQUFPLGNBQWMscUJBQXFCLFFBQVEsUUFBUSxPQUFPLGtCQUFrQixPQUFPLGFBQWEsZUFBZSxZQUFZLGVBQWUsS0FBSyxhQUFhLHFCQUFxQixPQUFPLG1CQUFtQixPQUFPLGNBQWMscUJBQXFCLE9BQU8sbUJBQW1CLE9BQU8sY0FBYyxlQUFlLFlBQVksZUFBZSxPQUFPLGNBQWMscUJBQXFCLFFBQVEsUUFBUSxPQUFPLGtCQUFrQixPQUFPLGFBQWEscUJBQXFCLFNBQVMsUUFBUSxPQUFPLFlBQVksYUFBYSxhQUFhLGtCQUFrQixNQUFNLFlBQVksYUFBYSxXQUFXLFlBQVksYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLFdBQVcsaUJBQWlCLE9BQU8sY0FBYyxlQUFlLGNBQWMsYUFBYSxXQUFXLFlBQVksV0FBVyxpQkFBaUIsT0FBTyxrQkFBa0IsT0FBTyxhQUFhLFdBQVcsVUFBVSxpQkFBaUIsT0FBTyxhQUFhLFdBQVcsaUJBQWlCLE9BQU8sZ0JBQWdCLE9BQU8sZ0JBQWdCLE1BQU0sZ0JBQWdCLE9BQU8sZ0JBQWdCLE9BQU8sYUFBYSxhQUFhLFdBQVcsWUFBWSxXQUFXLGVBQWUsTUFBTSxhQUFhLGFBQWEsYUFBYSxnQkFBZ0IsS0FBSyxNQUFNLGFBQWEsYUFBYSxzQkFBc0IsTUFBTSxhQUFhLGFBQWEsV0FBVyxVQUFVLGVBQWUsT0FBTyxnQkFBZ0IsTUFBTSxhQUFhLGFBQWEsWUFBWSxZQUFZLG1CQUFtQixPQUFPLGFBQWEsV0FBVyxZQUFZLFdBQVcsWUFBWSxhQUFhLGNBQWMsYUFBYSxrQkFBa0IsTUFBTSxrQkFBa0IsT0FBTyxhQUFhLGFBQWEsYUFBYSxXQUFXLFlBQVksYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLFdBQVcsVUFBVSxpQkFBaUIsT0FBTyxXQUFXLFVBQVUsaUJBQWlCLE9BQU8sYUFBYSxXQUFXLFVBQVUsWUFBWSxhQUFhLGNBQWMsaUJBQWlCLE1BQU0sV0FBVyxrQkFBa0IsZUFBZSxnQkFBZ0IsT0FBTyxRQUFRLE9BQU8sZ0JBQWdCLFNBQVMsUUFBUSxRQUFRLFlBQVksV0FBVyxVQUFVLFVBQVUsVUFBVSxZQUFZLFlBQVksWUFBWSxXQUFXLGVBQWUsTUFBTSxXQUFXLGdCQUFnQixPQUFPLFdBQVcsZ0JBQWdCLFNBQVMsaUJBQWlCLFFBQVEsbUJBQW1CLFVBQVUsV0FBVyxVQUFVLGtOQUFrTixVQUFVLHNDQUFzQyw4QkFBOEIsS0FBSyxVQUFVLHdDQUF3QyxnQ0FBZ0MsS0FBSyxHQUFHLGlDQUFpQyxVQUFVLHNDQUFzQyw4QkFBOEIsS0FBSyxRQUFRLHdDQUF3QyxnQ0FBZ0MsS0FBSyxHQUFHLGVBQWUsZUFBZSx5QkFBeUIsYUFBYSxjQUFjLGtCQUFrQixtQkFBbUIsdUNBQXVDLGtCQUFrQixLQUFLLGdCQUFnQix5QkFBeUIsZUFBZSxnQkFBZ0IsbUNBQW1DLDRCQUE0QixrQ0FBa0MsMENBQTBDLG1CQUFtQixrQkFBa0IsOEJBQThCLGtCQUFrQiw2REFBNkQscURBQXFELG1DQUFtQyxLQUFLLDhCQUE4QixvQkFBb0IsaUJBQWlCLHlCQUF5QixzQ0FBc0MsaUNBQWlDLDhCQUE4QixLQUFLLGlCQUFpQixnQ0FBZ0MsbUJBQW1CLDRCQUE0QixzQ0FBc0MsT0FBTyxLQUFLLEdBQUcsdUJBQXVCLHNCQUFzQixvQkFBb0IsaUJBQWlCLHVCQUF1Qix3QkFBd0IsdUpBQXVKLHVCQUF1QixnREFBZ0QsdUJBQXVCLG1DQUFtQyxnQkFBZ0IsMkJBQTJCLDJCQUEyQixvQkFBb0IsK0JBQStCLDRCQUE0Qiw4QkFBOEIsZ0NBQWdDLDZCQUE2QiwwQkFBMEIsd0JBQXdCLHVCQUF1QiwyQkFBMkIscUJBQXFCLHlCQUF5QixLQUFLLGdCQUFnQixvQ0FBb0MsNEJBQTRCLHdCQUF3Qix1QkFBdUIsc0JBQXNCLHlCQUF5QixtQkFBbUIsMkJBQTJCLHVCQUF1QiwyQkFBMkIsd0JBQXdCLDZCQUE2QixxQkFBcUIsc0JBQXNCLDhCQUE4QixTQUFTLHFCQUFxQiw4QkFBOEIsc0JBQXNCLG1DQUFtQyxTQUFTLE9BQU8seURBQXlELHFCQUFxQixPQUFPLGdFQUFnRSxrQkFBa0IsT0FBTyw4REFBOEQsb0JBQW9CLE9BQU8sK0RBQStELG1CQUFtQixPQUFPLEtBQUssc0JBQXNCLDJCQUEyQiwyQkFBMkIsb0JBQW9CLDBCQUEwQixzQkFBc0IsZUFBZSxLQUFLLGNBQWMseUJBQXlCLDBCQUEwQix3QkFBd0Isb0JBQW9CLG1EQUFtRCw0QkFBNEIsMkJBQTJCLHVCQUF1QixPQUFPLEtBQUssY0FBYyxnQ0FBZ0MsOEJBQThCLGlCQUFpQixnQkFBZ0Isa0JBQWtCLFdBQVcsOEJBQThCLGdCQUFnQixLQUFLLFdBQVcsd0JBQXdCLHVCQUF1QixtQkFBbUIseUJBQXlCLHlCQUF5QixLQUFLLGFBQWEseUJBQXlCLGlCQUFpQix5QkFBeUIsZ0JBQWdCLDZCQUE2Qix5QkFBeUIsbUNBQW1DLHVCQUF1Qix5QkFBeUIsaUJBQWlCLDBCQUEwQixPQUFPLEtBQUssWUFBWSx5QkFBeUIsMkJBQTJCLDJCQUEyQixvQkFBb0IsK0JBQStCLDRCQUE0Qiw4QkFBOEIsZ0NBQWdDLDZCQUE2QiwwQkFBMEIsaUJBQWlCLHFCQUFxQiwyQkFBMkIsa0JBQWtCLGtCQUFrQixxQkFBcUIsdUJBQXVCLE9BQU8sS0FBSyxhQUFhLHlCQUF5QixnQkFBZ0IsY0FBYyx3QkFBd0IsdUJBQXVCLHlCQUF5QixlQUFlLGdCQUFnQix1QkFBdUIsMkJBQTJCLE9BQU8sS0FBSyxHQUFHLDhJQUE4SSxtQkFBbUIsR0FBRyw2SkFBNkosd0ZBQXdGLHNCQUFzQixLQUFLLEdBQUcsc0pBQXNKLDBCQUEwQix5QkFBeUIsYUFBYSxjQUFjLG1CQUFtQixrQkFBa0Isc0JBQXNCLGlCQUFpQix5QkFBeUIsc0JBQXNCLGlCQUFpQixhQUFhLHNCQUFzQixxQkFBcUIsT0FBTyxLQUFLLGdCQUFnQixlQUFlLGlCQUFpQixLQUFLLDJFQUEyRSxvQkFBb0IsS0FBSyxzQ0FBc0MsNEJBQTRCLEtBQUsscUdBQXFHLG1CQUFtQixzQkFBc0Isc0JBQXNCLEtBQUssR0FBRyw4V0FBOFcsUUFBUSx5Q0FBeUMsUUFBUSxpREFBaUQsbUJBQW1CLG1CQUFtQixnQkFBZ0IsOENBQThDLHVDQUF1QywrREFBK0QsbURBQW1ELGtEQUFrRCxrREFBa0Qsa0RBQWtELGtEQUFrRCxzQkFBc0IsU0FBUyxFQUFFLFFBQVEsa0NBQWtDLE9BQU8seUNBQXlDLGVBQWUsU0FBUyxJQUFJLEdBQUcsMkpBQTJKLFFBQVEsc0NBQXNDLFFBQVEsNENBQTRDLFFBQVEsd0NBQXdDLFFBQVEseUVBQXlFLDBDQUEwQyxvQkFBb0Isa0pBQWtKLE9BQU8sd0JBQXdCLEdBQUcsdXVCQUF1dUIsa0NBQWtDLHNEQUFzRCw2RkFBNkYsMEVBQTBFLGdEQUFnRCxzREFBc0Qsb0NBQW9DLG1GQUFtRiw4RUFBOEUsb0dBQW9HLGlHQUFpRywrRkFBK0YseUZBQXlGLHVFQUF1RSxvQ0FBb0Msa0NBQWtDLG1EQUFtRCw0Q0FBNEMsa0NBQWtDLG9LQUFvSyx1QkFBdUIsa0JBQWtCLG9CQUFvQixtREFBbUQsOEJBQThCLHFCQUFxQixjQUFjLGlCQUFpQix5QkFBeUIsdUJBQXVCLGdCQUFnQixpQkFBaUIscUJBQXFCLEtBQUssZ0JBQWdCLDBCQUEwQixLQUFLLDBCQUEwQixlQUFlLGdCQUFnQixLQUFLLGdCQUFnQixpQkFBaUIsaUJBQWlCLEtBQUssR0FBRyxxQ0FBcUMsV0FBVyxxQkFBcUIsb0NBQW9DLHVDQUF1QyxPQUFPLHNCQUFzQixxQ0FBcUMsd0NBQXdDLE9BQU8sa0NBQWtDLDJCQUEyQix1QkFBdUIsb0JBQW9CLGtCQUFrQixvQkFBb0Isd0NBQXdDLG9DQUFvQyxnQ0FBZ0MsMkJBQTJCLG1CQUFtQiw2REFBNkQsa0JBQWtCLE9BQU8sbUJBQW1CLG1CQUFtQixPQUFPLGtCQUFrQixrQkFBa0IsT0FBTyxLQUFLLEdBQUcsaVZBQWlWLHFDQUFxQyxxQ0FBcUMsS0FBSyxrQ0FBa0MscUNBQXFDLDZCQUE2QixrQ0FBa0Msc0JBQXNCLHVDQUF1QyxPQUFPLEtBQUsseUNBQXlDLHFDQUFxQyxLQUFLLEdBQUcsaUxBQWlMLHdDQUF3QyxxQkFBcUIsd0NBQXdDLEtBQUsscUNBQXFDLHdDQUF3QyxnQ0FBZ0Msa0NBQWtDLHNCQUFzQiwwQ0FBMEMsT0FBTyxLQUFLLDRDQUE0QyxxQkFBcUIsd0NBQXdDLEtBQUssR0FBRyw2S0FBNkssNkJBQTZCLHVCQUF1QixtQkFBbUIsdUJBQXVCLE9BQU8sa0JBQWtCLHVCQUF1QixzQ0FBc0MsT0FBTyxLQUFLLGlDQUFpQyxvQ0FBb0MsNEJBQTRCLG9DQUFvQyxzQkFBc0Isc0NBQXNDLE9BQU8sS0FBSyxnQ0FBZ0MsdUJBQXVCLG1CQUFtQix1QkFBdUIsc0NBQXNDLE9BQU8sa0JBQWtCLHVCQUF1QixPQUFPLEtBQUssR0FBRywrS0FBK0ssb0VBQW9FLHVCQUF1QixtQkFBbUIsdUJBQXVCLE9BQU8sa0JBQWtCLHVCQUF1QiwwQ0FBMEMsT0FBTyxLQUFLLDZCQUE2Qix1QkFBdUIsbUJBQW1CLHVCQUF1QiwwQ0FBMEMsT0FBTyxrQkFBa0IsdUJBQXVCLE9BQU8sS0FBSyxHQUFHLG1MQUFtTCx1REFBdUQsdUJBQXVCLG1CQUFtQix1QkFBdUIsMENBQTBDLE9BQU8sa0JBQWtCLHVCQUF1QixPQUFPLEtBQUssNkJBQTZCLHVCQUF1QixtQkFBbUIsdUJBQXVCLE9BQU8sa0JBQWtCLHVCQUF1QiwwQ0FBMEMsT0FBTyxLQUFLLEdBQUcsOEVBQThFLG9FQUFvRSxxQ0FBcUMsV0FBVyxnQ0FBZ0MsMkJBQTJCLHVCQUF1QixvQkFBb0IscUJBQXFCLGVBQWUsa0JBQWtCLG9CQUFvQixtQkFBbUIsT0FBTyxLQUFLLEdBQUcsa1ZBQWtWLGlDQUFpQyxnQ0FBZ0MsUUFBUSxrQ0FBa0Msb0NBQW9DLDZCQUE2QixLQUFLLEdBQUcsa0xBQWtMLGlDQUFpQyxnQ0FBZ0MsbUJBQW1CLDBDQUEwQyxrQ0FBa0MsbUJBQW1CLGtCQUFrQixPQUFPLGtCQUFrQiwwQ0FBMEMsMkNBQTJDLE9BQU8sS0FBSyxxQ0FBcUMsZ0NBQWdDLG1CQUFtQiwwQ0FBMEMsa0NBQWtDLE9BQU8sS0FBSyxvQ0FBb0MsZ0NBQWdDLG1CQUFtQiwwQ0FBMEMsa0NBQWtDLG1CQUFtQixtQkFBbUIsT0FBTyxrQkFBa0IsMENBQTBDLDJDQUEyQyxPQUFPLEtBQUssR0FBRyw4S0FBOEssNkJBQTZCLDRCQUE0QixtQkFBbUIsc0NBQXNDLGtDQUFrQyxtQkFBbUIsa0JBQWtCLE9BQU8sa0JBQWtCLHNDQUFzQywyQ0FBMkMsT0FBTyxLQUFLLGlDQUFpQyw0QkFBNEIsbUJBQW1CLHNDQUFzQyxrQ0FBa0MsT0FBTyxLQUFLLGdDQUFnQyw0QkFBNEIsbUJBQW1CLHNDQUFzQyxrQ0FBa0MsbUJBQW1CLG1CQUFtQixPQUFPLGtCQUFrQixzQ0FBc0MsMkNBQTJDLE9BQU8sS0FBSyxHQUFHLDJLQUEySyxvREFBb0QsZ0NBQWdDLGtCQUFrQiwwQ0FBMEMsMkNBQTJDLE9BQU8sS0FBSyxHQUFHLHFCQUFxQjtBQUNodDRDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlFQUFlLHVCQUF1QixFQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzFDdkM7QUFDbUc7QUFDakI7QUFDbEYsOEJBQThCLHNFQUEyQixDQUFDLCtFQUFxQztBQUMvRjtBQUNBLHFtR0FBcW1HLGlGQUFpRiwyQkFBMkIsb0JBQW9CLHVCQUF1QiwyQkFBMkIseUJBQXlCLHlCQUF5Qix3QkFBd0IsNkZBQTZGLHFCQUFxQixrQ0FBa0MsNkJBQTZCLDBCQUEwQixnQ0FBZ0Msd0JBQXdCLHNCQUFzQixtQkFBbUIsdUJBQXVCLHVCQUF1QixzQkFBc0IseUJBQXlCLHNCQUFzQiwyQkFBMkIsaUNBQWlDLDhDQUE4QyxzQ0FBc0MsMENBQTBDLGtDQUFrQyx1QkFBdUIsb0JBQW9CLHlDQUF5QyxpQ0FBaUMsb0VBQW9FLGtDQUFrQywyQkFBMkIsNkJBQTZCLGtCQUFrQixlQUFlLDhCQUE4Qix5QkFBeUIseUJBQXlCLDBCQUEwQiwrQkFBK0IscUJBQXFCLGlCQUFpQix1QkFBdUIsd0NBQXdDLGdDQUFnQywwQkFBMEIsY0FBYyxrQkFBa0Isc0JBQXNCLHlCQUF5Qiw0QkFBNEIsb0JBQW9CLHFCQUFxQiw0QkFBNEIsOEJBQThCLDJCQUEyQixzQkFBc0IsK0JBQStCLDRCQUE0Qix1QkFBdUIsc0NBQXNDLDRCQUE0Qix1QkFBdUIsc0JBQXNCLGdCQUFnQixlQUFlLG1CQUFtQix3QkFBd0IsK0JBQStCLDRCQUE0Qix1QkFBdUIsaUNBQWlDLDhCQUE4Qix5QkFBeUIsK0JBQStCLDRCQUE0Qix1QkFBdUIsK0NBQStDLDRDQUE0Qyx1Q0FBdUMsMkJBQTJCLHdCQUF3QixtQkFBbUIsK0JBQStCLDRCQUE0Qix1QkFBdUIsK0JBQStCLDRCQUE0Qix1QkFBdUIsb0JBQW9CLDRCQUE0Qix3QkFBd0IsZUFBZSxpQkFBaUIsbUJBQW1CLG9CQUFvQiw0QkFBNEIsK0NBQStDLHVDQUF1QyxpREFBaUQsMkNBQTJDLDRCQUE0QixnQ0FBZ0MscUJBQXFCLHNCQUFzQixjQUFjLHdCQUF3QixnQkFBZ0Isc0JBQXNCLHVCQUF1QixvQkFBb0IsOEJBQThCLGlCQUFpQiwwQkFBMEIsMkJBQTJCLDhCQUE4Qiw4QkFBOEIsNkJBQTZCLDRCQUE0Qix5QkFBeUIsd0JBQXdCLG9CQUFvQixlQUFlLDRCQUE0QiwwQkFBMEIsNkJBQTZCLDJCQUEyQixlQUFlLHlCQUF5QixtRUFBbUUsa0NBQWtDLGNBQWMsZ0JBQWdCLCtCQUErQixvQkFBb0IsMEJBQTBCLDBCQUEwQiwwQkFBMEIscUJBQXFCLG9CQUFvQixrQkFBa0IsaUJBQWlCLG9CQUFvQixtQkFBbUIsb0JBQW9CLG1CQUFtQixvQkFBb0IsaUJBQWlCLGVBQWUsZUFBZSxnQ0FBZ0Msc0JBQXNCLHNCQUFzQix5QkFBeUIsZUFBZSxlQUFlLDJCQUEyQiw0QkFBNEIsNEJBQTRCLHVCQUF1Qiw4QkFBOEIsc0JBQXNCLHdDQUF3QyxnQ0FBZ0MscUJBQXFCLDBCQUEwQiwyQkFBMkIsaUJBQWlCLDJCQUEyQixpQkFBaUIsZ0JBQWdCLGdCQUFnQiw0QkFBNEIscUJBQXFCLHdCQUF3QiwwQkFBMEIsb0JBQW9CLGVBQWUscUJBQXFCLHVCQUF1QixjQUFjLDRCQUE0Qix3QkFBd0Isb0JBQW9CLHdDQUF3QyxvQ0FBb0MsZ0NBQWdDLGtDQUFrQywwQkFBMEIsNkJBQTZCLHlCQUF5Qiw2QkFBNkIsd0JBQXdCLG1DQUFtQyxjQUFjLGdCQUFnQix1QkFBdUIseUJBQXlCLHNCQUFzQixrQkFBa0Isc0JBQXNCLHdHQUF3Ryx3Q0FBd0MseUNBQXlDLHk5Q0FBeTlDLHFCQUFxQix1Q0FBdUMseUJBQXlCLDBDQUEwQyxxQkFBcUIsdUNBQXVDLHlCQUF5QiwwQ0FBMEMsa0NBQWtDLDBDQUEwQywrQkFBK0IsMENBQTBDLGtDQUFrQyx3Q0FBd0MsNEJBQTRCLDZDQUE2QyxrQ0FBa0MsMEVBQTBFLDBCQUEwQiw0Q0FBNEMsNkJBQTZCLGlGQUFpRiw0QkFBNEIsNkVBQTZFLHdCQUF3Qix3S0FBd0ssc0JBQXNCLHlCQUF5QixxRkFBcUYsc0JBQXNCLHlCQUF5Qix1RkFBdUYsc0JBQXNCLHlCQUF5QixtRkFBbUYsbUJBQW1CLFNBQVMsdUhBQXVILFlBQVksYUFBYSxXQUFXLFlBQVksYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsV0FBVyxZQUFZLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxXQUFXLFlBQVksYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLFdBQVcsVUFBVSxZQUFZLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxXQUFXLFlBQVksYUFBYSxhQUFhLGFBQWEsV0FBVyxVQUFVLFlBQVksYUFBYSxhQUFhLFdBQVcsWUFBWSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsV0FBVyxVQUFVLFVBQVUsWUFBWSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsV0FBVyxZQUFZLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxXQUFXLFlBQVksYUFBYSxXQUFXLFVBQVUsVUFBVSxVQUFVLFlBQVksYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLFdBQVcsWUFBWSxXQUFXLFlBQVksYUFBYSxXQUFXLFlBQVksV0FBVyxZQUFZLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsV0FBVyxVQUFVLFlBQVksYUFBYSxhQUFhLGFBQWEsV0FBVyxZQUFZLGFBQWEsYUFBYSxXQUFXLFVBQVUsWUFBWSxXQUFXLFlBQVksYUFBYSxhQUFhLGFBQWEsV0FBVyxVQUFVLFVBQVUsVUFBVSxVQUFVLFVBQVUsVUFBVSxVQUFVLFVBQVUsVUFBVSxVQUFVLFlBQVksYUFBYSxhQUFhLGFBQWEsV0FBVyxVQUFVLFlBQVksYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFB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QUF3QixTQUE1QixFQUF1QztFQUNyQ21KLFFBQVEsQ0FBQ3lCLElBQVQ7QUFDRCxDQUZELE1BRU87RUFDTGg2QixRQUFRLENBQUNpSixnQkFBVCxDQUEwQixrQkFBMUIsRUFBOEMsTUFBTTtJQUNsRHN2QixRQUFRLENBQUN5QixJQUFUO0VBQ0QsQ0FGRDtBQUdEOztBQUVEejlCLE1BQU0sQ0FBQytxQyx5QkFBUCxHQUFtQy9PLFFBQW5DO0FBRUEsaUVBQWVBLFFBQWYsRSIsInNvdXJjZXMiOlsid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvY3JlYXRlUG9wcGVyLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2NvbnRhaW5zLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldEJvdW5kaW5nQ2xpZW50UmVjdC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRDbGlwcGluZ1JlY3QuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Q29tcG9zaXRlUmVjdC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRDb21wdXRlZFN0eWxlLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldERvY3VtZW50RWxlbWVudC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXREb2N1bWVudFJlY3QuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0SFRNTEVsZW1lbnRTY3JvbGwuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0TGF5b3V0UmVjdC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXROb2RlTmFtZS5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXROb2RlU2Nyb2xsLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldE9mZnNldFBhcmVudC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRQYXJlbnROb2RlLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldFNjcm9sbFBhcmVudC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRWaWV3cG9ydFJlY3QuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0V2luZG93LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldFdpbmRvd1Njcm9sbC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRXaW5kb3dTY3JvbGxCYXJYLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2luc3RhbmNlT2YuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvaXNMYXlvdXRWaWV3cG9ydC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9pc1Njcm9sbFBhcmVudC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9pc1RhYmxlRWxlbWVudC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9saXN0U2Nyb2xsUGFyZW50cy5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2VudW1zLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvYXBwbHlTdHlsZXMuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvYXJyb3cuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvY29tcHV0ZVN0eWxlcy5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9ldmVudExpc3RlbmVycy5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9mbGlwLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL2hpZGUuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvb2Zmc2V0LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL3BvcHBlck9mZnNldHMuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvcHJldmVudE92ZXJmbG93LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvcG9wcGVyLWxpdGUuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9wb3BwZXIuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9jb21wdXRlQXV0b1BsYWNlbWVudC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2NvbXB1dGVPZmZzZXRzLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZGVib3VuY2UuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9kZXRlY3RPdmVyZmxvdy5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2V4cGFuZFRvSGFzaE1hcC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2Zvcm1hdC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldEFsdEF4aXMuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9nZXRCYXNlUGxhY2VtZW50LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZ2V0RnJlc2hTaWRlT2JqZWN0LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZ2V0T3Bwb3NpdGVQbGFjZW1lbnQuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9nZXRPcHBvc2l0ZVZhcmlhdGlvblBsYWNlbWVudC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldFZhcmlhdGlvbi5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL21hdGguanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9tZXJnZUJ5TmFtZS5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL21lcmdlUGFkZGluZ09iamVjdC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL29yZGVyTW9kaWZpZXJzLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvcmVjdFRvQ2xpZW50UmVjdC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL3VuaXF1ZUJ5LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvdXNlckFnZW50LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvdmFsaWRhdGVNb2RpZmllcnMuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy93aXRoaW4uanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvZ2V0VXJsLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9jdXJyZW5jeS1zeW1ib2wtbWFwL2N1cnJlbmN5LXN5bWJvbC1tYXAuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL2N1cnJlbmN5LXN5bWJvbC1tYXAvbWFwLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9zdHJ0aW1lL2Rpc3Qvc3RydGltZS5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9hamF4LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL2FycmF5L2luZGV4LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL2FycmF5L2lzQXJyYXkuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvY3VycmVuY3kvY3VycmVuY3lGb3JtYXR0ZXIuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvY3VycmVuY3kvaW5kZXguanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvZGF0ZS9pbmRleC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9kYXRlL21vbnRoTGVuZ3RoLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL2RvbS9hZGRDbGFzcy5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9kb20vY3JlYXRlRWxlbWVudC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9kb20vZGVzdHJveUVsZW1lbnQuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvZG9tL2VsZW1lbnRGcm9tU3RyaW5nLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL2RvbS9maW5kQnlDbGFzc05hbWUuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvZG9tL2dldENsYXNzTmFtZS5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9kb20vZ2V0UGFyZW50QXR0cmlidXRlLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL2RvbS9oYXNDbGFzcy5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9kb20vaW5kZXguanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvZG9tL2lzSW5zaWRlLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL2RvbS9yZW1vdmVDbGFzcy5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9kb20vc2V0Q2xhc3NOYW1lLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL2RvbS90cmF2ZXJzZVRvUGFyZW50V2l0aEF0dHIuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvZW1pdHRlci5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9mdW5jdGlvbi9pbmRleC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9mdW5jdGlvbi9pc0Z1bmN0aW9uLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL2luZGV4LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL2lzLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL21hdGgvaW5kZXguanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvbWF0aC9pc05hTlBvbHlmaWxsLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL21hdGgvaXNOdW1lcmljLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL29iamVjdC9jYXBpdGFsaXplT2JqLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL29iamVjdC9pbmRleC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9vYmplY3QvaXNPYmplY3QuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvb2JqZWN0L21lcmdlLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL29iamVjdC9waWNrLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL29iamVjdC9zZXJpYWxpemUuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvb2JqZWN0L3RyYXZlcnNlT2JqLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL3N0cmluZy9kYXNoVG9DYXBpdGFsLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL3N0cmluZy9pbmRleC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9zdHJpbmcvaXNTdHJpbmcuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvc3RyaW5nL3RvVW5kZXJzY29yZS5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9zdHJpbmcvdW5kZXJzY29yZVRvQ2FwaXRhbC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy92YWxpZGF0ZS5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9zcmMvY2FsZW5kYXItdHJlZS5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9zcmMvY2FsZW5kYXIuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vc3JjL2NvbmZpZy5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9zcmMvbG9jYWxlcy5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9zcmMvdGVtcGxhdGVzLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL3NyYy91dGlscy5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9zcmMvc3R5bGVzL2NhbGVuZGFyLnNjc3MiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvc3R5bGVzL3Jlc2V0LnNjc3MiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vc3JjL3N0eWxlcy9jYWxlbmRhci5zY3NzPzY5ZDciLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvc3R5bGVzL3Jlc2V0LnNjc3M/Yjc0MCIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvd2VicGFjay9ydW50aW1lL2NvbXBhdCBnZXQgZGVmYXVsdCBleHBvcnQiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0L3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvd2VicGFjay9ydW50aW1lL21ha2UgbmFtZXNwYWNlIG9iamVjdCIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvd2VicGFjay9ydW50aW1lL2pzb25wIGNodW5rIGxvYWRpbmciLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0L3dlYnBhY2svcnVudGltZS9ub25jZSIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9zcmMvaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGdldENvbXBvc2l0ZVJlY3QgZnJvbSBcIi4vZG9tLXV0aWxzL2dldENvbXBvc2l0ZVJlY3QuanNcIjtcbmltcG9ydCBnZXRMYXlvdXRSZWN0IGZyb20gXCIuL2RvbS11dGlscy9nZXRMYXlvdXRSZWN0LmpzXCI7XG5pbXBvcnQgbGlzdFNjcm9sbFBhcmVudHMgZnJvbSBcIi4vZG9tLXV0aWxzL2xpc3RTY3JvbGxQYXJlbnRzLmpzXCI7XG5pbXBvcnQgZ2V0T2Zmc2V0UGFyZW50IGZyb20gXCIuL2RvbS11dGlscy9nZXRPZmZzZXRQYXJlbnQuanNcIjtcbmltcG9ydCBnZXRDb21wdXRlZFN0eWxlIGZyb20gXCIuL2RvbS11dGlscy9nZXRDb21wdXRlZFN0eWxlLmpzXCI7XG5pbXBvcnQgb3JkZXJNb2RpZmllcnMgZnJvbSBcIi4vdXRpbHMvb3JkZXJNb2RpZmllcnMuanNcIjtcbmltcG9ydCBkZWJvdW5jZSBmcm9tIFwiLi91dGlscy9kZWJvdW5jZS5qc1wiO1xuaW1wb3J0IHZhbGlkYXRlTW9kaWZpZXJzIGZyb20gXCIuL3V0aWxzL3ZhbGlkYXRlTW9kaWZpZXJzLmpzXCI7XG5pbXBvcnQgdW5pcXVlQnkgZnJvbSBcIi4vdXRpbHMvdW5pcXVlQnkuanNcIjtcbmltcG9ydCBnZXRCYXNlUGxhY2VtZW50IGZyb20gXCIuL3V0aWxzL2dldEJhc2VQbGFjZW1lbnQuanNcIjtcbmltcG9ydCBtZXJnZUJ5TmFtZSBmcm9tIFwiLi91dGlscy9tZXJnZUJ5TmFtZS5qc1wiO1xuaW1wb3J0IGRldGVjdE92ZXJmbG93IGZyb20gXCIuL3V0aWxzL2RldGVjdE92ZXJmbG93LmpzXCI7XG5pbXBvcnQgeyBpc0VsZW1lbnQgfSBmcm9tIFwiLi9kb20tdXRpbHMvaW5zdGFuY2VPZi5qc1wiO1xuaW1wb3J0IHsgYXV0byB9IGZyb20gXCIuL2VudW1zLmpzXCI7XG52YXIgSU5WQUxJRF9FTEVNRU5UX0VSUk9SID0gJ1BvcHBlcjogSW52YWxpZCByZWZlcmVuY2Ugb3IgcG9wcGVyIGFyZ3VtZW50IHByb3ZpZGVkLiBUaGV5IG11c3QgYmUgZWl0aGVyIGEgRE9NIGVsZW1lbnQgb3IgdmlydHVhbCBlbGVtZW50Lic7XG52YXIgSU5GSU5JVEVfTE9PUF9FUlJPUiA9ICdQb3BwZXI6IEFuIGluZmluaXRlIGxvb3AgaW4gdGhlIG1vZGlmaWVycyBjeWNsZSBoYXMgYmVlbiBkZXRlY3RlZCEgVGhlIGN5Y2xlIGhhcyBiZWVuIGludGVycnVwdGVkIHRvIHByZXZlbnQgYSBicm93c2VyIGNyYXNoLic7XG52YXIgREVGQVVMVF9PUFRJT05TID0ge1xuICBwbGFjZW1lbnQ6ICdib3R0b20nLFxuICBtb2RpZmllcnM6IFtdLFxuICBzdHJhdGVneTogJ2Fic29sdXRlJ1xufTtcblxuZnVuY3Rpb24gYXJlVmFsaWRFbGVtZW50cygpIHtcbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgfVxuXG4gIHJldHVybiAhYXJncy5zb21lKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgcmV0dXJuICEoZWxlbWVudCAmJiB0eXBlb2YgZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QgPT09ICdmdW5jdGlvbicpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBvcHBlckdlbmVyYXRvcihnZW5lcmF0b3JPcHRpb25zKSB7XG4gIGlmIChnZW5lcmF0b3JPcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBnZW5lcmF0b3JPcHRpb25zID0ge307XG4gIH1cblxuICB2YXIgX2dlbmVyYXRvck9wdGlvbnMgPSBnZW5lcmF0b3JPcHRpb25zLFxuICAgICAgX2dlbmVyYXRvck9wdGlvbnMkZGVmID0gX2dlbmVyYXRvck9wdGlvbnMuZGVmYXVsdE1vZGlmaWVycyxcbiAgICAgIGRlZmF1bHRNb2RpZmllcnMgPSBfZ2VuZXJhdG9yT3B0aW9ucyRkZWYgPT09IHZvaWQgMCA/IFtdIDogX2dlbmVyYXRvck9wdGlvbnMkZGVmLFxuICAgICAgX2dlbmVyYXRvck9wdGlvbnMkZGVmMiA9IF9nZW5lcmF0b3JPcHRpb25zLmRlZmF1bHRPcHRpb25zLFxuICAgICAgZGVmYXVsdE9wdGlvbnMgPSBfZ2VuZXJhdG9yT3B0aW9ucyRkZWYyID09PSB2b2lkIDAgPyBERUZBVUxUX09QVElPTlMgOiBfZ2VuZXJhdG9yT3B0aW9ucyRkZWYyO1xuICByZXR1cm4gZnVuY3Rpb24gY3JlYXRlUG9wcGVyKHJlZmVyZW5jZSwgcG9wcGVyLCBvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgICAgb3B0aW9ucyA9IGRlZmF1bHRPcHRpb25zO1xuICAgIH1cblxuICAgIHZhciBzdGF0ZSA9IHtcbiAgICAgIHBsYWNlbWVudDogJ2JvdHRvbScsXG4gICAgICBvcmRlcmVkTW9kaWZpZXJzOiBbXSxcbiAgICAgIG9wdGlvbnM6IE9iamVjdC5hc3NpZ24oe30sIERFRkFVTFRfT1BUSU9OUywgZGVmYXVsdE9wdGlvbnMpLFxuICAgICAgbW9kaWZpZXJzRGF0YToge30sXG4gICAgICBlbGVtZW50czoge1xuICAgICAgICByZWZlcmVuY2U6IHJlZmVyZW5jZSxcbiAgICAgICAgcG9wcGVyOiBwb3BwZXJcbiAgICAgIH0sXG4gICAgICBhdHRyaWJ1dGVzOiB7fSxcbiAgICAgIHN0eWxlczoge31cbiAgICB9O1xuICAgIHZhciBlZmZlY3RDbGVhbnVwRm5zID0gW107XG4gICAgdmFyIGlzRGVzdHJveWVkID0gZmFsc2U7XG4gICAgdmFyIGluc3RhbmNlID0ge1xuICAgICAgc3RhdGU6IHN0YXRlLFxuICAgICAgc2V0T3B0aW9uczogZnVuY3Rpb24gc2V0T3B0aW9ucyhzZXRPcHRpb25zQWN0aW9uKSB7XG4gICAgICAgIHZhciBvcHRpb25zID0gdHlwZW9mIHNldE9wdGlvbnNBY3Rpb24gPT09ICdmdW5jdGlvbicgPyBzZXRPcHRpb25zQWN0aW9uKHN0YXRlLm9wdGlvbnMpIDogc2V0T3B0aW9uc0FjdGlvbjtcbiAgICAgICAgY2xlYW51cE1vZGlmaWVyRWZmZWN0cygpO1xuICAgICAgICBzdGF0ZS5vcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgZGVmYXVsdE9wdGlvbnMsIHN0YXRlLm9wdGlvbnMsIG9wdGlvbnMpO1xuICAgICAgICBzdGF0ZS5zY3JvbGxQYXJlbnRzID0ge1xuICAgICAgICAgIHJlZmVyZW5jZTogaXNFbGVtZW50KHJlZmVyZW5jZSkgPyBsaXN0U2Nyb2xsUGFyZW50cyhyZWZlcmVuY2UpIDogcmVmZXJlbmNlLmNvbnRleHRFbGVtZW50ID8gbGlzdFNjcm9sbFBhcmVudHMocmVmZXJlbmNlLmNvbnRleHRFbGVtZW50KSA6IFtdLFxuICAgICAgICAgIHBvcHBlcjogbGlzdFNjcm9sbFBhcmVudHMocG9wcGVyKVxuICAgICAgICB9OyAvLyBPcmRlcnMgdGhlIG1vZGlmaWVycyBiYXNlZCBvbiB0aGVpciBkZXBlbmRlbmNpZXMgYW5kIGBwaGFzZWBcbiAgICAgICAgLy8gcHJvcGVydGllc1xuXG4gICAgICAgIHZhciBvcmRlcmVkTW9kaWZpZXJzID0gb3JkZXJNb2RpZmllcnMobWVyZ2VCeU5hbWUoW10uY29uY2F0KGRlZmF1bHRNb2RpZmllcnMsIHN0YXRlLm9wdGlvbnMubW9kaWZpZXJzKSkpOyAvLyBTdHJpcCBvdXQgZGlzYWJsZWQgbW9kaWZpZXJzXG5cbiAgICAgICAgc3RhdGUub3JkZXJlZE1vZGlmaWVycyA9IG9yZGVyZWRNb2RpZmllcnMuZmlsdGVyKGZ1bmN0aW9uIChtKSB7XG4gICAgICAgICAgcmV0dXJuIG0uZW5hYmxlZDtcbiAgICAgICAgfSk7IC8vIFZhbGlkYXRlIHRoZSBwcm92aWRlZCBtb2RpZmllcnMgc28gdGhhdCB0aGUgY29uc3VtZXIgd2lsbCBnZXQgd2FybmVkXG4gICAgICAgIC8vIGlmIG9uZSBvZiB0aGUgbW9kaWZpZXJzIGlzIGludmFsaWQgZm9yIGFueSByZWFzb25cblxuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICAgICAgdmFyIG1vZGlmaWVycyA9IHVuaXF1ZUJ5KFtdLmNvbmNhdChvcmRlcmVkTW9kaWZpZXJzLCBzdGF0ZS5vcHRpb25zLm1vZGlmaWVycyksIGZ1bmN0aW9uIChfcmVmKSB7XG4gICAgICAgICAgICB2YXIgbmFtZSA9IF9yZWYubmFtZTtcbiAgICAgICAgICAgIHJldHVybiBuYW1lO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHZhbGlkYXRlTW9kaWZpZXJzKG1vZGlmaWVycyk7XG5cbiAgICAgICAgICBpZiAoZ2V0QmFzZVBsYWNlbWVudChzdGF0ZS5vcHRpb25zLnBsYWNlbWVudCkgPT09IGF1dG8pIHtcbiAgICAgICAgICAgIHZhciBmbGlwTW9kaWZpZXIgPSBzdGF0ZS5vcmRlcmVkTW9kaWZpZXJzLmZpbmQoZnVuY3Rpb24gKF9yZWYyKSB7XG4gICAgICAgICAgICAgIHZhciBuYW1lID0gX3JlZjIubmFtZTtcbiAgICAgICAgICAgICAgcmV0dXJuIG5hbWUgPT09ICdmbGlwJztcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAoIWZsaXBNb2RpZmllcikge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFsnUG9wcGVyOiBcImF1dG9cIiBwbGFjZW1lbnRzIHJlcXVpcmUgdGhlIFwiZmxpcFwiIG1vZGlmaWVyIGJlJywgJ3ByZXNlbnQgYW5kIGVuYWJsZWQgdG8gd29yay4nXS5qb2luKCcgJykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhciBfZ2V0Q29tcHV0ZWRTdHlsZSA9IGdldENvbXB1dGVkU3R5bGUocG9wcGVyKSxcbiAgICAgICAgICAgICAgbWFyZ2luVG9wID0gX2dldENvbXB1dGVkU3R5bGUubWFyZ2luVG9wLFxuICAgICAgICAgICAgICBtYXJnaW5SaWdodCA9IF9nZXRDb21wdXRlZFN0eWxlLm1hcmdpblJpZ2h0LFxuICAgICAgICAgICAgICBtYXJnaW5Cb3R0b20gPSBfZ2V0Q29tcHV0ZWRTdHlsZS5tYXJnaW5Cb3R0b20sXG4gICAgICAgICAgICAgIG1hcmdpbkxlZnQgPSBfZ2V0Q29tcHV0ZWRTdHlsZS5tYXJnaW5MZWZ0OyAvLyBXZSBubyBsb25nZXIgdGFrZSBpbnRvIGFjY291bnQgYG1hcmdpbnNgIG9uIHRoZSBwb3BwZXIsIGFuZCBpdCBjYW5cbiAgICAgICAgICAvLyBjYXVzZSBidWdzIHdpdGggcG9zaXRpb25pbmcsIHNvIHdlJ2xsIHdhcm4gdGhlIGNvbnN1bWVyXG5cblxuICAgICAgICAgIGlmIChbbWFyZ2luVG9wLCBtYXJnaW5SaWdodCwgbWFyZ2luQm90dG9tLCBtYXJnaW5MZWZ0XS5zb21lKGZ1bmN0aW9uIChtYXJnaW4pIHtcbiAgICAgICAgICAgIHJldHVybiBwYXJzZUZsb2F0KG1hcmdpbik7XG4gICAgICAgICAgfSkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihbJ1BvcHBlcjogQ1NTIFwibWFyZ2luXCIgc3R5bGVzIGNhbm5vdCBiZSB1c2VkIHRvIGFwcGx5IHBhZGRpbmcnLCAnYmV0d2VlbiB0aGUgcG9wcGVyIGFuZCBpdHMgcmVmZXJlbmNlIGVsZW1lbnQgb3IgYm91bmRhcnkuJywgJ1RvIHJlcGxpY2F0ZSBtYXJnaW4sIHVzZSB0aGUgYG9mZnNldGAgbW9kaWZpZXIsIGFzIHdlbGwgYXMnLCAndGhlIGBwYWRkaW5nYCBvcHRpb24gaW4gdGhlIGBwcmV2ZW50T3ZlcmZsb3dgIGFuZCBgZmxpcGAnLCAnbW9kaWZpZXJzLiddLmpvaW4oJyAnKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcnVuTW9kaWZpZXJFZmZlY3RzKCk7XG4gICAgICAgIHJldHVybiBpbnN0YW5jZS51cGRhdGUoKTtcbiAgICAgIH0sXG4gICAgICAvLyBTeW5jIHVwZGF0ZSDigJMgaXQgd2lsbCBhbHdheXMgYmUgZXhlY3V0ZWQsIGV2ZW4gaWYgbm90IG5lY2Vzc2FyeS4gVGhpc1xuICAgICAgLy8gaXMgdXNlZnVsIGZvciBsb3cgZnJlcXVlbmN5IHVwZGF0ZXMgd2hlcmUgc3luYyBiZWhhdmlvciBzaW1wbGlmaWVzIHRoZVxuICAgICAgLy8gbG9naWMuXG4gICAgICAvLyBGb3IgaGlnaCBmcmVxdWVuY3kgdXBkYXRlcyAoZS5nLiBgcmVzaXplYCBhbmQgYHNjcm9sbGAgZXZlbnRzKSwgYWx3YXlzXG4gICAgICAvLyBwcmVmZXIgdGhlIGFzeW5jIFBvcHBlciN1cGRhdGUgbWV0aG9kXG4gICAgICBmb3JjZVVwZGF0ZTogZnVuY3Rpb24gZm9yY2VVcGRhdGUoKSB7XG4gICAgICAgIGlmIChpc0Rlc3Ryb3llZCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBfc3RhdGUkZWxlbWVudHMgPSBzdGF0ZS5lbGVtZW50cyxcbiAgICAgICAgICAgIHJlZmVyZW5jZSA9IF9zdGF0ZSRlbGVtZW50cy5yZWZlcmVuY2UsXG4gICAgICAgICAgICBwb3BwZXIgPSBfc3RhdGUkZWxlbWVudHMucG9wcGVyOyAvLyBEb24ndCBwcm9jZWVkIGlmIGByZWZlcmVuY2VgIG9yIGBwb3BwZXJgIGFyZSBub3QgdmFsaWQgZWxlbWVudHNcbiAgICAgICAgLy8gYW55bW9yZVxuXG4gICAgICAgIGlmICghYXJlVmFsaWRFbGVtZW50cyhyZWZlcmVuY2UsIHBvcHBlcikpIHtcbiAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKElOVkFMSURfRUxFTUVOVF9FUlJPUik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IC8vIFN0b3JlIHRoZSByZWZlcmVuY2UgYW5kIHBvcHBlciByZWN0cyB0byBiZSByZWFkIGJ5IG1vZGlmaWVyc1xuXG5cbiAgICAgICAgc3RhdGUucmVjdHMgPSB7XG4gICAgICAgICAgcmVmZXJlbmNlOiBnZXRDb21wb3NpdGVSZWN0KHJlZmVyZW5jZSwgZ2V0T2Zmc2V0UGFyZW50KHBvcHBlciksIHN0YXRlLm9wdGlvbnMuc3RyYXRlZ3kgPT09ICdmaXhlZCcpLFxuICAgICAgICAgIHBvcHBlcjogZ2V0TGF5b3V0UmVjdChwb3BwZXIpXG4gICAgICAgIH07IC8vIE1vZGlmaWVycyBoYXZlIHRoZSBhYmlsaXR5IHRvIHJlc2V0IHRoZSBjdXJyZW50IHVwZGF0ZSBjeWNsZS4gVGhlXG4gICAgICAgIC8vIG1vc3QgY29tbW9uIHVzZSBjYXNlIGZvciB0aGlzIGlzIHRoZSBgZmxpcGAgbW9kaWZpZXIgY2hhbmdpbmcgdGhlXG4gICAgICAgIC8vIHBsYWNlbWVudCwgd2hpY2ggdGhlbiBuZWVkcyB0byByZS1ydW4gYWxsIHRoZSBtb2RpZmllcnMsIGJlY2F1c2UgdGhlXG4gICAgICAgIC8vIGxvZ2ljIHdhcyBwcmV2aW91c2x5IHJhbiBmb3IgdGhlIHByZXZpb3VzIHBsYWNlbWVudCBhbmQgaXMgdGhlcmVmb3JlXG4gICAgICAgIC8vIHN0YWxlL2luY29ycmVjdFxuXG4gICAgICAgIHN0YXRlLnJlc2V0ID0gZmFsc2U7XG4gICAgICAgIHN0YXRlLnBsYWNlbWVudCA9IHN0YXRlLm9wdGlvbnMucGxhY2VtZW50OyAvLyBPbiBlYWNoIHVwZGF0ZSBjeWNsZSwgdGhlIGBtb2RpZmllcnNEYXRhYCBwcm9wZXJ0eSBmb3IgZWFjaCBtb2RpZmllclxuICAgICAgICAvLyBpcyBmaWxsZWQgd2l0aCB0aGUgaW5pdGlhbCBkYXRhIHNwZWNpZmllZCBieSB0aGUgbW9kaWZpZXIuIFRoaXMgbWVhbnNcbiAgICAgICAgLy8gaXQgZG9lc24ndCBwZXJzaXN0IGFuZCBpcyBmcmVzaCBvbiBlYWNoIHVwZGF0ZS5cbiAgICAgICAgLy8gVG8gZW5zdXJlIHBlcnNpc3RlbnQgZGF0YSwgdXNlIGAke25hbWV9I3BlcnNpc3RlbnRgXG5cbiAgICAgICAgc3RhdGUub3JkZXJlZE1vZGlmaWVycy5mb3JFYWNoKGZ1bmN0aW9uIChtb2RpZmllcikge1xuICAgICAgICAgIHJldHVybiBzdGF0ZS5tb2RpZmllcnNEYXRhW21vZGlmaWVyLm5hbWVdID0gT2JqZWN0LmFzc2lnbih7fSwgbW9kaWZpZXIuZGF0YSk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgX19kZWJ1Z19sb29wc19fID0gMDtcblxuICAgICAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgc3RhdGUub3JkZXJlZE1vZGlmaWVycy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICAgICAgICBfX2RlYnVnX2xvb3BzX18gKz0gMTtcblxuICAgICAgICAgICAgaWYgKF9fZGVidWdfbG9vcHNfXyA+IDEwMCkge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKElORklOSVRFX0xPT1BfRVJST1IpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoc3RhdGUucmVzZXQgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHN0YXRlLnJlc2V0ID0gZmFsc2U7XG4gICAgICAgICAgICBpbmRleCA9IC0xO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFyIF9zdGF0ZSRvcmRlcmVkTW9kaWZpZSA9IHN0YXRlLm9yZGVyZWRNb2RpZmllcnNbaW5kZXhdLFxuICAgICAgICAgICAgICBmbiA9IF9zdGF0ZSRvcmRlcmVkTW9kaWZpZS5mbixcbiAgICAgICAgICAgICAgX3N0YXRlJG9yZGVyZWRNb2RpZmllMiA9IF9zdGF0ZSRvcmRlcmVkTW9kaWZpZS5vcHRpb25zLFxuICAgICAgICAgICAgICBfb3B0aW9ucyA9IF9zdGF0ZSRvcmRlcmVkTW9kaWZpZTIgPT09IHZvaWQgMCA/IHt9IDogX3N0YXRlJG9yZGVyZWRNb2RpZmllMixcbiAgICAgICAgICAgICAgbmFtZSA9IF9zdGF0ZSRvcmRlcmVkTW9kaWZpZS5uYW1lO1xuXG4gICAgICAgICAgaWYgKHR5cGVvZiBmbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgc3RhdGUgPSBmbih7XG4gICAgICAgICAgICAgIHN0YXRlOiBzdGF0ZSxcbiAgICAgICAgICAgICAgb3B0aW9uczogX29wdGlvbnMsXG4gICAgICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgICAgIGluc3RhbmNlOiBpbnN0YW5jZVxuICAgICAgICAgICAgfSkgfHwgc3RhdGU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgLy8gQXN5bmMgYW5kIG9wdGltaXN0aWNhbGx5IG9wdGltaXplZCB1cGRhdGUg4oCTIGl0IHdpbGwgbm90IGJlIGV4ZWN1dGVkIGlmXG4gICAgICAvLyBub3QgbmVjZXNzYXJ5IChkZWJvdW5jZWQgdG8gcnVuIGF0IG1vc3Qgb25jZS1wZXItdGljaylcbiAgICAgIHVwZGF0ZTogZGVib3VuY2UoZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHtcbiAgICAgICAgICBpbnN0YW5jZS5mb3JjZVVwZGF0ZSgpO1xuICAgICAgICAgIHJlc29sdmUoc3RhdGUpO1xuICAgICAgICB9KTtcbiAgICAgIH0pLFxuICAgICAgZGVzdHJveTogZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICAgICAgY2xlYW51cE1vZGlmaWVyRWZmZWN0cygpO1xuICAgICAgICBpc0Rlc3Ryb3llZCA9IHRydWU7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGlmICghYXJlVmFsaWRFbGVtZW50cyhyZWZlcmVuY2UsIHBvcHBlcikpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihJTlZBTElEX0VMRU1FTlRfRVJST1IpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaW5zdGFuY2U7XG4gICAgfVxuXG4gICAgaW5zdGFuY2Uuc2V0T3B0aW9ucyhvcHRpb25zKS50aGVuKGZ1bmN0aW9uIChzdGF0ZSkge1xuICAgICAgaWYgKCFpc0Rlc3Ryb3llZCAmJiBvcHRpb25zLm9uRmlyc3RVcGRhdGUpIHtcbiAgICAgICAgb3B0aW9ucy5vbkZpcnN0VXBkYXRlKHN0YXRlKTtcbiAgICAgIH1cbiAgICB9KTsgLy8gTW9kaWZpZXJzIGhhdmUgdGhlIGFiaWxpdHkgdG8gZXhlY3V0ZSBhcmJpdHJhcnkgY29kZSBiZWZvcmUgdGhlIGZpcnN0XG4gICAgLy8gdXBkYXRlIGN5Y2xlIHJ1bnMuIFRoZXkgd2lsbCBiZSBleGVjdXRlZCBpbiB0aGUgc2FtZSBvcmRlciBhcyB0aGUgdXBkYXRlXG4gICAgLy8gY3ljbGUuIFRoaXMgaXMgdXNlZnVsIHdoZW4gYSBtb2RpZmllciBhZGRzIHNvbWUgcGVyc2lzdGVudCBkYXRhIHRoYXRcbiAgICAvLyBvdGhlciBtb2RpZmllcnMgbmVlZCB0byB1c2UsIGJ1dCB0aGUgbW9kaWZpZXIgaXMgcnVuIGFmdGVyIHRoZSBkZXBlbmRlbnRcbiAgICAvLyBvbmUuXG5cbiAgICBmdW5jdGlvbiBydW5Nb2RpZmllckVmZmVjdHMoKSB7XG4gICAgICBzdGF0ZS5vcmRlcmVkTW9kaWZpZXJzLmZvckVhY2goZnVuY3Rpb24gKF9yZWYzKSB7XG4gICAgICAgIHZhciBuYW1lID0gX3JlZjMubmFtZSxcbiAgICAgICAgICAgIF9yZWYzJG9wdGlvbnMgPSBfcmVmMy5vcHRpb25zLFxuICAgICAgICAgICAgb3B0aW9ucyA9IF9yZWYzJG9wdGlvbnMgPT09IHZvaWQgMCA/IHt9IDogX3JlZjMkb3B0aW9ucyxcbiAgICAgICAgICAgIGVmZmVjdCA9IF9yZWYzLmVmZmVjdDtcblxuICAgICAgICBpZiAodHlwZW9mIGVmZmVjdCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHZhciBjbGVhbnVwRm4gPSBlZmZlY3Qoe1xuICAgICAgICAgICAgc3RhdGU6IHN0YXRlLFxuICAgICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICAgIGluc3RhbmNlOiBpbnN0YW5jZSxcbiAgICAgICAgICAgIG9wdGlvbnM6IG9wdGlvbnNcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHZhciBub29wRm4gPSBmdW5jdGlvbiBub29wRm4oKSB7fTtcblxuICAgICAgICAgIGVmZmVjdENsZWFudXBGbnMucHVzaChjbGVhbnVwRm4gfHwgbm9vcEZuKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2xlYW51cE1vZGlmaWVyRWZmZWN0cygpIHtcbiAgICAgIGVmZmVjdENsZWFudXBGbnMuZm9yRWFjaChmdW5jdGlvbiAoZm4pIHtcbiAgICAgICAgcmV0dXJuIGZuKCk7XG4gICAgICB9KTtcbiAgICAgIGVmZmVjdENsZWFudXBGbnMgPSBbXTtcbiAgICB9XG5cbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH07XG59XG5leHBvcnQgdmFyIGNyZWF0ZVBvcHBlciA9IC8qI19fUFVSRV9fKi9wb3BwZXJHZW5lcmF0b3IoKTsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5leHBvcnQgeyBkZXRlY3RPdmVyZmxvdyB9OyIsImltcG9ydCB7IGlzU2hhZG93Um9vdCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNvbnRhaW5zKHBhcmVudCwgY2hpbGQpIHtcbiAgdmFyIHJvb3ROb2RlID0gY2hpbGQuZ2V0Um9vdE5vZGUgJiYgY2hpbGQuZ2V0Um9vdE5vZGUoKTsgLy8gRmlyc3QsIGF0dGVtcHQgd2l0aCBmYXN0ZXIgbmF0aXZlIG1ldGhvZFxuXG4gIGlmIChwYXJlbnQuY29udGFpbnMoY2hpbGQpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gLy8gdGhlbiBmYWxsYmFjayB0byBjdXN0b20gaW1wbGVtZW50YXRpb24gd2l0aCBTaGFkb3cgRE9NIHN1cHBvcnRcbiAgZWxzZSBpZiAocm9vdE5vZGUgJiYgaXNTaGFkb3dSb290KHJvb3ROb2RlKSkge1xuICAgICAgdmFyIG5leHQgPSBjaGlsZDtcblxuICAgICAgZG8ge1xuICAgICAgICBpZiAobmV4dCAmJiBwYXJlbnQuaXNTYW1lTm9kZShuZXh0KSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IC8vICRGbG93Rml4TWVbcHJvcC1taXNzaW5nXTogbmVlZCBhIGJldHRlciB3YXkgdG8gaGFuZGxlIHRoaXMuLi5cblxuXG4gICAgICAgIG5leHQgPSBuZXh0LnBhcmVudE5vZGUgfHwgbmV4dC5ob3N0O1xuICAgICAgfSB3aGlsZSAobmV4dCk7XG4gICAgfSAvLyBHaXZlIHVwLCB0aGUgcmVzdWx0IGlzIGZhbHNlXG5cblxuICByZXR1cm4gZmFsc2U7XG59IiwiaW1wb3J0IHsgaXNFbGVtZW50LCBpc0hUTUxFbGVtZW50IH0gZnJvbSBcIi4vaW5zdGFuY2VPZi5qc1wiO1xuaW1wb3J0IHsgcm91bmQgfSBmcm9tIFwiLi4vdXRpbHMvbWF0aC5qc1wiO1xuaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi9nZXRXaW5kb3cuanNcIjtcbmltcG9ydCBpc0xheW91dFZpZXdwb3J0IGZyb20gXCIuL2lzTGF5b3V0Vmlld3BvcnQuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50LCBpbmNsdWRlU2NhbGUsIGlzRml4ZWRTdHJhdGVneSkge1xuICBpZiAoaW5jbHVkZVNjYWxlID09PSB2b2lkIDApIHtcbiAgICBpbmNsdWRlU2NhbGUgPSBmYWxzZTtcbiAgfVxuXG4gIGlmIChpc0ZpeGVkU3RyYXRlZ3kgPT09IHZvaWQgMCkge1xuICAgIGlzRml4ZWRTdHJhdGVneSA9IGZhbHNlO1xuICB9XG5cbiAgdmFyIGNsaWVudFJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICB2YXIgc2NhbGVYID0gMTtcbiAgdmFyIHNjYWxlWSA9IDE7XG5cbiAgaWYgKGluY2x1ZGVTY2FsZSAmJiBpc0hUTUxFbGVtZW50KGVsZW1lbnQpKSB7XG4gICAgc2NhbGVYID0gZWxlbWVudC5vZmZzZXRXaWR0aCA+IDAgPyByb3VuZChjbGllbnRSZWN0LndpZHRoKSAvIGVsZW1lbnQub2Zmc2V0V2lkdGggfHwgMSA6IDE7XG4gICAgc2NhbGVZID0gZWxlbWVudC5vZmZzZXRIZWlnaHQgPiAwID8gcm91bmQoY2xpZW50UmVjdC5oZWlnaHQpIC8gZWxlbWVudC5vZmZzZXRIZWlnaHQgfHwgMSA6IDE7XG4gIH1cblxuICB2YXIgX3JlZiA9IGlzRWxlbWVudChlbGVtZW50KSA/IGdldFdpbmRvdyhlbGVtZW50KSA6IHdpbmRvdyxcbiAgICAgIHZpc3VhbFZpZXdwb3J0ID0gX3JlZi52aXN1YWxWaWV3cG9ydDtcblxuICB2YXIgYWRkVmlzdWFsT2Zmc2V0cyA9ICFpc0xheW91dFZpZXdwb3J0KCkgJiYgaXNGaXhlZFN0cmF0ZWd5O1xuICB2YXIgeCA9IChjbGllbnRSZWN0LmxlZnQgKyAoYWRkVmlzdWFsT2Zmc2V0cyAmJiB2aXN1YWxWaWV3cG9ydCA/IHZpc3VhbFZpZXdwb3J0Lm9mZnNldExlZnQgOiAwKSkgLyBzY2FsZVg7XG4gIHZhciB5ID0gKGNsaWVudFJlY3QudG9wICsgKGFkZFZpc3VhbE9mZnNldHMgJiYgdmlzdWFsVmlld3BvcnQgPyB2aXN1YWxWaWV3cG9ydC5vZmZzZXRUb3AgOiAwKSkgLyBzY2FsZVk7XG4gIHZhciB3aWR0aCA9IGNsaWVudFJlY3Qud2lkdGggLyBzY2FsZVg7XG4gIHZhciBoZWlnaHQgPSBjbGllbnRSZWN0LmhlaWdodCAvIHNjYWxlWTtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aDogd2lkdGgsXG4gICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgdG9wOiB5LFxuICAgIHJpZ2h0OiB4ICsgd2lkdGgsXG4gICAgYm90dG9tOiB5ICsgaGVpZ2h0LFxuICAgIGxlZnQ6IHgsXG4gICAgeDogeCxcbiAgICB5OiB5XG4gIH07XG59IiwiaW1wb3J0IHsgdmlld3BvcnQgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCBnZXRWaWV3cG9ydFJlY3QgZnJvbSBcIi4vZ2V0Vmlld3BvcnRSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0RG9jdW1lbnRSZWN0IGZyb20gXCIuL2dldERvY3VtZW50UmVjdC5qc1wiO1xuaW1wb3J0IGxpc3RTY3JvbGxQYXJlbnRzIGZyb20gXCIuL2xpc3RTY3JvbGxQYXJlbnRzLmpzXCI7XG5pbXBvcnQgZ2V0T2Zmc2V0UGFyZW50IGZyb20gXCIuL2dldE9mZnNldFBhcmVudC5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBnZXRDb21wdXRlZFN0eWxlIGZyb20gXCIuL2dldENvbXB1dGVkU3R5bGUuanNcIjtcbmltcG9ydCB7IGlzRWxlbWVudCwgaXNIVE1MRWxlbWVudCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmltcG9ydCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgZnJvbSBcIi4vZ2V0Qm91bmRpbmdDbGllbnRSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0UGFyZW50Tm9kZSBmcm9tIFwiLi9nZXRQYXJlbnROb2RlLmpzXCI7XG5pbXBvcnQgY29udGFpbnMgZnJvbSBcIi4vY29udGFpbnMuanNcIjtcbmltcG9ydCBnZXROb2RlTmFtZSBmcm9tIFwiLi9nZXROb2RlTmFtZS5qc1wiO1xuaW1wb3J0IHJlY3RUb0NsaWVudFJlY3QgZnJvbSBcIi4uL3V0aWxzL3JlY3RUb0NsaWVudFJlY3QuanNcIjtcbmltcG9ydCB7IG1heCwgbWluIH0gZnJvbSBcIi4uL3V0aWxzL21hdGguanNcIjtcblxuZnVuY3Rpb24gZ2V0SW5uZXJCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgc3RyYXRlZ3kpIHtcbiAgdmFyIHJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgZmFsc2UsIHN0cmF0ZWd5ID09PSAnZml4ZWQnKTtcbiAgcmVjdC50b3AgPSByZWN0LnRvcCArIGVsZW1lbnQuY2xpZW50VG9wO1xuICByZWN0LmxlZnQgPSByZWN0LmxlZnQgKyBlbGVtZW50LmNsaWVudExlZnQ7XG4gIHJlY3QuYm90dG9tID0gcmVjdC50b3AgKyBlbGVtZW50LmNsaWVudEhlaWdodDtcbiAgcmVjdC5yaWdodCA9IHJlY3QubGVmdCArIGVsZW1lbnQuY2xpZW50V2lkdGg7XG4gIHJlY3Qud2lkdGggPSBlbGVtZW50LmNsaWVudFdpZHRoO1xuICByZWN0LmhlaWdodCA9IGVsZW1lbnQuY2xpZW50SGVpZ2h0O1xuICByZWN0LnggPSByZWN0LmxlZnQ7XG4gIHJlY3QueSA9IHJlY3QudG9wO1xuICByZXR1cm4gcmVjdDtcbn1cblxuZnVuY3Rpb24gZ2V0Q2xpZW50UmVjdEZyb21NaXhlZFR5cGUoZWxlbWVudCwgY2xpcHBpbmdQYXJlbnQsIHN0cmF0ZWd5KSB7XG4gIHJldHVybiBjbGlwcGluZ1BhcmVudCA9PT0gdmlld3BvcnQgPyByZWN0VG9DbGllbnRSZWN0KGdldFZpZXdwb3J0UmVjdChlbGVtZW50LCBzdHJhdGVneSkpIDogaXNFbGVtZW50KGNsaXBwaW5nUGFyZW50KSA/IGdldElubmVyQm91bmRpbmdDbGllbnRSZWN0KGNsaXBwaW5nUGFyZW50LCBzdHJhdGVneSkgOiByZWN0VG9DbGllbnRSZWN0KGdldERvY3VtZW50UmVjdChnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkpKTtcbn0gLy8gQSBcImNsaXBwaW5nIHBhcmVudFwiIGlzIGFuIG92ZXJmbG93YWJsZSBjb250YWluZXIgd2l0aCB0aGUgY2hhcmFjdGVyaXN0aWMgb2Zcbi8vIGNsaXBwaW5nIChvciBoaWRpbmcpIG92ZXJmbG93aW5nIGVsZW1lbnRzIHdpdGggYSBwb3NpdGlvbiBkaWZmZXJlbnQgZnJvbVxuLy8gYGluaXRpYWxgXG5cblxuZnVuY3Rpb24gZ2V0Q2xpcHBpbmdQYXJlbnRzKGVsZW1lbnQpIHtcbiAgdmFyIGNsaXBwaW5nUGFyZW50cyA9IGxpc3RTY3JvbGxQYXJlbnRzKGdldFBhcmVudE5vZGUoZWxlbWVudCkpO1xuICB2YXIgY2FuRXNjYXBlQ2xpcHBpbmcgPSBbJ2Fic29sdXRlJywgJ2ZpeGVkJ10uaW5kZXhPZihnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLnBvc2l0aW9uKSA+PSAwO1xuICB2YXIgY2xpcHBlckVsZW1lbnQgPSBjYW5Fc2NhcGVDbGlwcGluZyAmJiBpc0hUTUxFbGVtZW50KGVsZW1lbnQpID8gZ2V0T2Zmc2V0UGFyZW50KGVsZW1lbnQpIDogZWxlbWVudDtcblxuICBpZiAoIWlzRWxlbWVudChjbGlwcGVyRWxlbWVudCkpIHtcbiAgICByZXR1cm4gW107XG4gIH0gLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtcmV0dXJuXTogaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL2Zsb3cvaXNzdWVzLzE0MTRcblxuXG4gIHJldHVybiBjbGlwcGluZ1BhcmVudHMuZmlsdGVyKGZ1bmN0aW9uIChjbGlwcGluZ1BhcmVudCkge1xuICAgIHJldHVybiBpc0VsZW1lbnQoY2xpcHBpbmdQYXJlbnQpICYmIGNvbnRhaW5zKGNsaXBwaW5nUGFyZW50LCBjbGlwcGVyRWxlbWVudCkgJiYgZ2V0Tm9kZU5hbWUoY2xpcHBpbmdQYXJlbnQpICE9PSAnYm9keSc7XG4gIH0pO1xufSAvLyBHZXRzIHRoZSBtYXhpbXVtIGFyZWEgdGhhdCB0aGUgZWxlbWVudCBpcyB2aXNpYmxlIGluIGR1ZSB0byBhbnkgbnVtYmVyIG9mXG4vLyBjbGlwcGluZyBwYXJlbnRzXG5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Q2xpcHBpbmdSZWN0KGVsZW1lbnQsIGJvdW5kYXJ5LCByb290Qm91bmRhcnksIHN0cmF0ZWd5KSB7XG4gIHZhciBtYWluQ2xpcHBpbmdQYXJlbnRzID0gYm91bmRhcnkgPT09ICdjbGlwcGluZ1BhcmVudHMnID8gZ2V0Q2xpcHBpbmdQYXJlbnRzKGVsZW1lbnQpIDogW10uY29uY2F0KGJvdW5kYXJ5KTtcbiAgdmFyIGNsaXBwaW5nUGFyZW50cyA9IFtdLmNvbmNhdChtYWluQ2xpcHBpbmdQYXJlbnRzLCBbcm9vdEJvdW5kYXJ5XSk7XG4gIHZhciBmaXJzdENsaXBwaW5nUGFyZW50ID0gY2xpcHBpbmdQYXJlbnRzWzBdO1xuICB2YXIgY2xpcHBpbmdSZWN0ID0gY2xpcHBpbmdQYXJlbnRzLnJlZHVjZShmdW5jdGlvbiAoYWNjUmVjdCwgY2xpcHBpbmdQYXJlbnQpIHtcbiAgICB2YXIgcmVjdCA9IGdldENsaWVudFJlY3RGcm9tTWl4ZWRUeXBlKGVsZW1lbnQsIGNsaXBwaW5nUGFyZW50LCBzdHJhdGVneSk7XG4gICAgYWNjUmVjdC50b3AgPSBtYXgocmVjdC50b3AsIGFjY1JlY3QudG9wKTtcbiAgICBhY2NSZWN0LnJpZ2h0ID0gbWluKHJlY3QucmlnaHQsIGFjY1JlY3QucmlnaHQpO1xuICAgIGFjY1JlY3QuYm90dG9tID0gbWluKHJlY3QuYm90dG9tLCBhY2NSZWN0LmJvdHRvbSk7XG4gICAgYWNjUmVjdC5sZWZ0ID0gbWF4KHJlY3QubGVmdCwgYWNjUmVjdC5sZWZ0KTtcbiAgICByZXR1cm4gYWNjUmVjdDtcbiAgfSwgZ2V0Q2xpZW50UmVjdEZyb21NaXhlZFR5cGUoZWxlbWVudCwgZmlyc3RDbGlwcGluZ1BhcmVudCwgc3RyYXRlZ3kpKTtcbiAgY2xpcHBpbmdSZWN0LndpZHRoID0gY2xpcHBpbmdSZWN0LnJpZ2h0IC0gY2xpcHBpbmdSZWN0LmxlZnQ7XG4gIGNsaXBwaW5nUmVjdC5oZWlnaHQgPSBjbGlwcGluZ1JlY3QuYm90dG9tIC0gY2xpcHBpbmdSZWN0LnRvcDtcbiAgY2xpcHBpbmdSZWN0LnggPSBjbGlwcGluZ1JlY3QubGVmdDtcbiAgY2xpcHBpbmdSZWN0LnkgPSBjbGlwcGluZ1JlY3QudG9wO1xuICByZXR1cm4gY2xpcHBpbmdSZWN0O1xufSIsImltcG9ydCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgZnJvbSBcIi4vZ2V0Qm91bmRpbmdDbGllbnRSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0Tm9kZVNjcm9sbCBmcm9tIFwiLi9nZXROb2RlU2Nyb2xsLmpzXCI7XG5pbXBvcnQgZ2V0Tm9kZU5hbWUgZnJvbSBcIi4vZ2V0Tm9kZU5hbWUuanNcIjtcbmltcG9ydCB7IGlzSFRNTEVsZW1lbnQgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5pbXBvcnQgZ2V0V2luZG93U2Nyb2xsQmFyWCBmcm9tIFwiLi9nZXRXaW5kb3dTY3JvbGxCYXJYLmpzXCI7XG5pbXBvcnQgZ2V0RG9jdW1lbnRFbGVtZW50IGZyb20gXCIuL2dldERvY3VtZW50RWxlbWVudC5qc1wiO1xuaW1wb3J0IGlzU2Nyb2xsUGFyZW50IGZyb20gXCIuL2lzU2Nyb2xsUGFyZW50LmpzXCI7XG5pbXBvcnQgeyByb3VuZCB9IGZyb20gXCIuLi91dGlscy9tYXRoLmpzXCI7XG5cbmZ1bmN0aW9uIGlzRWxlbWVudFNjYWxlZChlbGVtZW50KSB7XG4gIHZhciByZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgdmFyIHNjYWxlWCA9IHJvdW5kKHJlY3Qud2lkdGgpIC8gZWxlbWVudC5vZmZzZXRXaWR0aCB8fCAxO1xuICB2YXIgc2NhbGVZID0gcm91bmQocmVjdC5oZWlnaHQpIC8gZWxlbWVudC5vZmZzZXRIZWlnaHQgfHwgMTtcbiAgcmV0dXJuIHNjYWxlWCAhPT0gMSB8fCBzY2FsZVkgIT09IDE7XG59IC8vIFJldHVybnMgdGhlIGNvbXBvc2l0ZSByZWN0IG9mIGFuIGVsZW1lbnQgcmVsYXRpdmUgdG8gaXRzIG9mZnNldFBhcmVudC5cbi8vIENvbXBvc2l0ZSBtZWFucyBpdCB0YWtlcyBpbnRvIGFjY291bnQgdHJhbnNmb3JtcyBhcyB3ZWxsIGFzIGxheW91dC5cblxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRDb21wb3NpdGVSZWN0KGVsZW1lbnRPclZpcnR1YWxFbGVtZW50LCBvZmZzZXRQYXJlbnQsIGlzRml4ZWQpIHtcbiAgaWYgKGlzRml4ZWQgPT09IHZvaWQgMCkge1xuICAgIGlzRml4ZWQgPSBmYWxzZTtcbiAgfVxuXG4gIHZhciBpc09mZnNldFBhcmVudEFuRWxlbWVudCA9IGlzSFRNTEVsZW1lbnQob2Zmc2V0UGFyZW50KTtcbiAgdmFyIG9mZnNldFBhcmVudElzU2NhbGVkID0gaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpICYmIGlzRWxlbWVudFNjYWxlZChvZmZzZXRQYXJlbnQpO1xuICB2YXIgZG9jdW1lbnRFbGVtZW50ID0gZ2V0RG9jdW1lbnRFbGVtZW50KG9mZnNldFBhcmVudCk7XG4gIHZhciByZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnRPclZpcnR1YWxFbGVtZW50LCBvZmZzZXRQYXJlbnRJc1NjYWxlZCwgaXNGaXhlZCk7XG4gIHZhciBzY3JvbGwgPSB7XG4gICAgc2Nyb2xsTGVmdDogMCxcbiAgICBzY3JvbGxUb3A6IDBcbiAgfTtcbiAgdmFyIG9mZnNldHMgPSB7XG4gICAgeDogMCxcbiAgICB5OiAwXG4gIH07XG5cbiAgaWYgKGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50IHx8ICFpc09mZnNldFBhcmVudEFuRWxlbWVudCAmJiAhaXNGaXhlZCkge1xuICAgIGlmIChnZXROb2RlTmFtZShvZmZzZXRQYXJlbnQpICE9PSAnYm9keScgfHwgLy8gaHR0cHM6Ly9naXRodWIuY29tL3BvcHBlcmpzL3BvcHBlci1jb3JlL2lzc3Vlcy8xMDc4XG4gICAgaXNTY3JvbGxQYXJlbnQoZG9jdW1lbnRFbGVtZW50KSkge1xuICAgICAgc2Nyb2xsID0gZ2V0Tm9kZVNjcm9sbChvZmZzZXRQYXJlbnQpO1xuICAgIH1cblxuICAgIGlmIChpc0hUTUxFbGVtZW50KG9mZnNldFBhcmVudCkpIHtcbiAgICAgIG9mZnNldHMgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3Qob2Zmc2V0UGFyZW50LCB0cnVlKTtcbiAgICAgIG9mZnNldHMueCArPSBvZmZzZXRQYXJlbnQuY2xpZW50TGVmdDtcbiAgICAgIG9mZnNldHMueSArPSBvZmZzZXRQYXJlbnQuY2xpZW50VG9wO1xuICAgIH0gZWxzZSBpZiAoZG9jdW1lbnRFbGVtZW50KSB7XG4gICAgICBvZmZzZXRzLnggPSBnZXRXaW5kb3dTY3JvbGxCYXJYKGRvY3VtZW50RWxlbWVudCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB4OiByZWN0LmxlZnQgKyBzY3JvbGwuc2Nyb2xsTGVmdCAtIG9mZnNldHMueCxcbiAgICB5OiByZWN0LnRvcCArIHNjcm9sbC5zY3JvbGxUb3AgLSBvZmZzZXRzLnksXG4gICAgd2lkdGg6IHJlY3Qud2lkdGgsXG4gICAgaGVpZ2h0OiByZWN0LmhlaWdodFxuICB9O1xufSIsImltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4vZ2V0V2luZG93LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGdldFdpbmRvdyhlbGVtZW50KS5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xufSIsImltcG9ydCB7IGlzRWxlbWVudCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KSB7XG4gIC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLXJldHVybl06IGFzc3VtZSBib2R5IGlzIGFsd2F5cyBhdmFpbGFibGVcbiAgcmV0dXJuICgoaXNFbGVtZW50KGVsZW1lbnQpID8gZWxlbWVudC5vd25lckRvY3VtZW50IDogLy8gJEZsb3dGaXhNZVtwcm9wLW1pc3NpbmddXG4gIGVsZW1lbnQuZG9jdW1lbnQpIHx8IHdpbmRvdy5kb2N1bWVudCkuZG9jdW1lbnRFbGVtZW50O1xufSIsImltcG9ydCBnZXREb2N1bWVudEVsZW1lbnQgZnJvbSBcIi4vZ2V0RG9jdW1lbnRFbGVtZW50LmpzXCI7XG5pbXBvcnQgZ2V0Q29tcHV0ZWRTdHlsZSBmcm9tIFwiLi9nZXRDb21wdXRlZFN0eWxlLmpzXCI7XG5pbXBvcnQgZ2V0V2luZG93U2Nyb2xsQmFyWCBmcm9tIFwiLi9nZXRXaW5kb3dTY3JvbGxCYXJYLmpzXCI7XG5pbXBvcnQgZ2V0V2luZG93U2Nyb2xsIGZyb20gXCIuL2dldFdpbmRvd1Njcm9sbC5qc1wiO1xuaW1wb3J0IHsgbWF4IH0gZnJvbSBcIi4uL3V0aWxzL21hdGguanNcIjsgLy8gR2V0cyB0aGUgZW50aXJlIHNpemUgb2YgdGhlIHNjcm9sbGFibGUgZG9jdW1lbnQgYXJlYSwgZXZlbiBleHRlbmRpbmcgb3V0c2lkZVxuLy8gb2YgdGhlIGA8aHRtbD5gIGFuZCBgPGJvZHk+YCByZWN0IGJvdW5kcyBpZiBob3Jpem9udGFsbHkgc2Nyb2xsYWJsZVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXREb2N1bWVudFJlY3QoZWxlbWVudCkge1xuICB2YXIgX2VsZW1lbnQkb3duZXJEb2N1bWVuO1xuXG4gIHZhciBodG1sID0gZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpO1xuICB2YXIgd2luU2Nyb2xsID0gZ2V0V2luZG93U2Nyb2xsKGVsZW1lbnQpO1xuICB2YXIgYm9keSA9IChfZWxlbWVudCRvd25lckRvY3VtZW4gPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfZWxlbWVudCRvd25lckRvY3VtZW4uYm9keTtcbiAgdmFyIHdpZHRoID0gbWF4KGh0bWwuc2Nyb2xsV2lkdGgsIGh0bWwuY2xpZW50V2lkdGgsIGJvZHkgPyBib2R5LnNjcm9sbFdpZHRoIDogMCwgYm9keSA/IGJvZHkuY2xpZW50V2lkdGggOiAwKTtcbiAgdmFyIGhlaWdodCA9IG1heChodG1sLnNjcm9sbEhlaWdodCwgaHRtbC5jbGllbnRIZWlnaHQsIGJvZHkgPyBib2R5LnNjcm9sbEhlaWdodCA6IDAsIGJvZHkgPyBib2R5LmNsaWVudEhlaWdodCA6IDApO1xuICB2YXIgeCA9IC13aW5TY3JvbGwuc2Nyb2xsTGVmdCArIGdldFdpbmRvd1Njcm9sbEJhclgoZWxlbWVudCk7XG4gIHZhciB5ID0gLXdpblNjcm9sbC5zY3JvbGxUb3A7XG5cbiAgaWYgKGdldENvbXB1dGVkU3R5bGUoYm9keSB8fCBodG1sKS5kaXJlY3Rpb24gPT09ICdydGwnKSB7XG4gICAgeCArPSBtYXgoaHRtbC5jbGllbnRXaWR0aCwgYm9keSA/IGJvZHkuY2xpZW50V2lkdGggOiAwKSAtIHdpZHRoO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB3aWR0aDogd2lkdGgsXG4gICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgeDogeCxcbiAgICB5OiB5XG4gIH07XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0SFRNTEVsZW1lbnRTY3JvbGwoZWxlbWVudCkge1xuICByZXR1cm4ge1xuICAgIHNjcm9sbExlZnQ6IGVsZW1lbnQuc2Nyb2xsTGVmdCxcbiAgICBzY3JvbGxUb3A6IGVsZW1lbnQuc2Nyb2xsVG9wXG4gIH07XG59IiwiaW1wb3J0IGdldEJvdW5kaW5nQ2xpZW50UmVjdCBmcm9tIFwiLi9nZXRCb3VuZGluZ0NsaWVudFJlY3QuanNcIjsgLy8gUmV0dXJucyB0aGUgbGF5b3V0IHJlY3Qgb2YgYW4gZWxlbWVudCByZWxhdGl2ZSB0byBpdHMgb2Zmc2V0UGFyZW50LiBMYXlvdXRcbi8vIG1lYW5zIGl0IGRvZXNuJ3QgdGFrZSBpbnRvIGFjY291bnQgdHJhbnNmb3Jtcy5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0TGF5b3V0UmVjdChlbGVtZW50KSB7XG4gIHZhciBjbGllbnRSZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnQpOyAvLyBVc2UgdGhlIGNsaWVudFJlY3Qgc2l6ZXMgaWYgaXQncyBub3QgYmVlbiB0cmFuc2Zvcm1lZC5cbiAgLy8gRml4ZXMgaHR0cHM6Ly9naXRodWIuY29tL3BvcHBlcmpzL3BvcHBlci1jb3JlL2lzc3Vlcy8xMjIzXG5cbiAgdmFyIHdpZHRoID0gZWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgdmFyIGhlaWdodCA9IGVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xuXG4gIGlmIChNYXRoLmFicyhjbGllbnRSZWN0LndpZHRoIC0gd2lkdGgpIDw9IDEpIHtcbiAgICB3aWR0aCA9IGNsaWVudFJlY3Qud2lkdGg7XG4gIH1cblxuICBpZiAoTWF0aC5hYnMoY2xpZW50UmVjdC5oZWlnaHQgLSBoZWlnaHQpIDw9IDEpIHtcbiAgICBoZWlnaHQgPSBjbGllbnRSZWN0LmhlaWdodDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgeDogZWxlbWVudC5vZmZzZXRMZWZ0LFxuICAgIHk6IGVsZW1lbnQub2Zmc2V0VG9wLFxuICAgIHdpZHRoOiB3aWR0aCxcbiAgICBoZWlnaHQ6IGhlaWdodFxuICB9O1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldE5vZGVOYW1lKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGVsZW1lbnQgPyAoZWxlbWVudC5ub2RlTmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKSA6IG51bGw7XG59IiwiaW1wb3J0IGdldFdpbmRvd1Njcm9sbCBmcm9tIFwiLi9nZXRXaW5kb3dTY3JvbGwuanNcIjtcbmltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4vZ2V0V2luZG93LmpzXCI7XG5pbXBvcnQgeyBpc0hUTUxFbGVtZW50IH0gZnJvbSBcIi4vaW5zdGFuY2VPZi5qc1wiO1xuaW1wb3J0IGdldEhUTUxFbGVtZW50U2Nyb2xsIGZyb20gXCIuL2dldEhUTUxFbGVtZW50U2Nyb2xsLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXROb2RlU2Nyb2xsKG5vZGUpIHtcbiAgaWYgKG5vZGUgPT09IGdldFdpbmRvdyhub2RlKSB8fCAhaXNIVE1MRWxlbWVudChub2RlKSkge1xuICAgIHJldHVybiBnZXRXaW5kb3dTY3JvbGwobm9kZSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGdldEhUTUxFbGVtZW50U2Nyb2xsKG5vZGUpO1xuICB9XG59IiwiaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi9nZXRXaW5kb3cuanNcIjtcbmltcG9ydCBnZXROb2RlTmFtZSBmcm9tIFwiLi9nZXROb2RlTmFtZS5qc1wiO1xuaW1wb3J0IGdldENvbXB1dGVkU3R5bGUgZnJvbSBcIi4vZ2V0Q29tcHV0ZWRTdHlsZS5qc1wiO1xuaW1wb3J0IHsgaXNIVE1MRWxlbWVudCwgaXNTaGFkb3dSb290IH0gZnJvbSBcIi4vaW5zdGFuY2VPZi5qc1wiO1xuaW1wb3J0IGlzVGFibGVFbGVtZW50IGZyb20gXCIuL2lzVGFibGVFbGVtZW50LmpzXCI7XG5pbXBvcnQgZ2V0UGFyZW50Tm9kZSBmcm9tIFwiLi9nZXRQYXJlbnROb2RlLmpzXCI7XG5pbXBvcnQgZ2V0VUFTdHJpbmcgZnJvbSBcIi4uL3V0aWxzL3VzZXJBZ2VudC5qc1wiO1xuXG5mdW5jdGlvbiBnZXRUcnVlT2Zmc2V0UGFyZW50KGVsZW1lbnQpIHtcbiAgaWYgKCFpc0hUTUxFbGVtZW50KGVsZW1lbnQpIHx8IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9wb3BwZXJqcy9wb3BwZXItY29yZS9pc3N1ZXMvODM3XG4gIGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkucG9zaXRpb24gPT09ICdmaXhlZCcpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiBlbGVtZW50Lm9mZnNldFBhcmVudDtcbn0gLy8gYC5vZmZzZXRQYXJlbnRgIHJlcG9ydHMgYG51bGxgIGZvciBmaXhlZCBlbGVtZW50cywgd2hpbGUgYWJzb2x1dGUgZWxlbWVudHNcbi8vIHJldHVybiB0aGUgY29udGFpbmluZyBibG9ja1xuXG5cbmZ1bmN0aW9uIGdldENvbnRhaW5pbmdCbG9jayhlbGVtZW50KSB7XG4gIHZhciBpc0ZpcmVmb3ggPSAvZmlyZWZveC9pLnRlc3QoZ2V0VUFTdHJpbmcoKSk7XG4gIHZhciBpc0lFID0gL1RyaWRlbnQvaS50ZXN0KGdldFVBU3RyaW5nKCkpO1xuXG4gIGlmIChpc0lFICYmIGlzSFRNTEVsZW1lbnQoZWxlbWVudCkpIHtcbiAgICAvLyBJbiBJRSA5LCAxMCBhbmQgMTEgZml4ZWQgZWxlbWVudHMgY29udGFpbmluZyBibG9jayBpcyBhbHdheXMgZXN0YWJsaXNoZWQgYnkgdGhlIHZpZXdwb3J0XG4gICAgdmFyIGVsZW1lbnRDc3MgPSBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xuXG4gICAgaWYgKGVsZW1lbnRDc3MucG9zaXRpb24gPT09ICdmaXhlZCcpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHZhciBjdXJyZW50Tm9kZSA9IGdldFBhcmVudE5vZGUoZWxlbWVudCk7XG5cbiAgaWYgKGlzU2hhZG93Um9vdChjdXJyZW50Tm9kZSkpIHtcbiAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLmhvc3Q7XG4gIH1cblxuICB3aGlsZSAoaXNIVE1MRWxlbWVudChjdXJyZW50Tm9kZSkgJiYgWydodG1sJywgJ2JvZHknXS5pbmRleE9mKGdldE5vZGVOYW1lKGN1cnJlbnROb2RlKSkgPCAwKSB7XG4gICAgdmFyIGNzcyA9IGdldENvbXB1dGVkU3R5bGUoY3VycmVudE5vZGUpOyAvLyBUaGlzIGlzIG5vbi1leGhhdXN0aXZlIGJ1dCBjb3ZlcnMgdGhlIG1vc3QgY29tbW9uIENTUyBwcm9wZXJ0aWVzIHRoYXRcbiAgICAvLyBjcmVhdGUgYSBjb250YWluaW5nIGJsb2NrLlxuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9Db250YWluaW5nX2Jsb2NrI2lkZW50aWZ5aW5nX3RoZV9jb250YWluaW5nX2Jsb2NrXG5cbiAgICBpZiAoY3NzLnRyYW5zZm9ybSAhPT0gJ25vbmUnIHx8IGNzcy5wZXJzcGVjdGl2ZSAhPT0gJ25vbmUnIHx8IGNzcy5jb250YWluID09PSAncGFpbnQnIHx8IFsndHJhbnNmb3JtJywgJ3BlcnNwZWN0aXZlJ10uaW5kZXhPZihjc3Mud2lsbENoYW5nZSkgIT09IC0xIHx8IGlzRmlyZWZveCAmJiBjc3Mud2lsbENoYW5nZSA9PT0gJ2ZpbHRlcicgfHwgaXNGaXJlZm94ICYmIGNzcy5maWx0ZXIgJiYgY3NzLmZpbHRlciAhPT0gJ25vbmUnKSB7XG4gICAgICByZXR1cm4gY3VycmVudE5vZGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGN1cnJlbnROb2RlID0gY3VycmVudE5vZGUucGFyZW50Tm9kZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn0gLy8gR2V0cyB0aGUgY2xvc2VzdCBhbmNlc3RvciBwb3NpdGlvbmVkIGVsZW1lbnQuIEhhbmRsZXMgc29tZSBlZGdlIGNhc2VzLFxuLy8gc3VjaCBhcyB0YWJsZSBhbmNlc3RvcnMgYW5kIGNyb3NzIGJyb3dzZXIgYnVncy5cblxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRPZmZzZXRQYXJlbnQoZWxlbWVudCkge1xuICB2YXIgd2luZG93ID0gZ2V0V2luZG93KGVsZW1lbnQpO1xuICB2YXIgb2Zmc2V0UGFyZW50ID0gZ2V0VHJ1ZU9mZnNldFBhcmVudChlbGVtZW50KTtcblxuICB3aGlsZSAob2Zmc2V0UGFyZW50ICYmIGlzVGFibGVFbGVtZW50KG9mZnNldFBhcmVudCkgJiYgZ2V0Q29tcHV0ZWRTdHlsZShvZmZzZXRQYXJlbnQpLnBvc2l0aW9uID09PSAnc3RhdGljJykge1xuICAgIG9mZnNldFBhcmVudCA9IGdldFRydWVPZmZzZXRQYXJlbnQob2Zmc2V0UGFyZW50KTtcbiAgfVxuXG4gIGlmIChvZmZzZXRQYXJlbnQgJiYgKGdldE5vZGVOYW1lKG9mZnNldFBhcmVudCkgPT09ICdodG1sJyB8fCBnZXROb2RlTmFtZShvZmZzZXRQYXJlbnQpID09PSAnYm9keScgJiYgZ2V0Q29tcHV0ZWRTdHlsZShvZmZzZXRQYXJlbnQpLnBvc2l0aW9uID09PSAnc3RhdGljJykpIHtcbiAgICByZXR1cm4gd2luZG93O1xuICB9XG5cbiAgcmV0dXJuIG9mZnNldFBhcmVudCB8fCBnZXRDb250YWluaW5nQmxvY2soZWxlbWVudCkgfHwgd2luZG93O1xufSIsImltcG9ydCBnZXROb2RlTmFtZSBmcm9tIFwiLi9nZXROb2RlTmFtZS5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCB7IGlzU2hhZG93Um9vdCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFBhcmVudE5vZGUoZWxlbWVudCkge1xuICBpZiAoZ2V0Tm9kZU5hbWUoZWxlbWVudCkgPT09ICdodG1sJykge1xuICAgIHJldHVybiBlbGVtZW50O1xuICB9XG5cbiAgcmV0dXJuICgvLyB0aGlzIGlzIGEgcXVpY2tlciAoYnV0IGxlc3MgdHlwZSBzYWZlKSB3YXkgdG8gc2F2ZSBxdWl0ZSBzb21lIGJ5dGVzIGZyb20gdGhlIGJ1bmRsZVxuICAgIC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLXJldHVybl1cbiAgICAvLyAkRmxvd0ZpeE1lW3Byb3AtbWlzc2luZ11cbiAgICBlbGVtZW50LmFzc2lnbmVkU2xvdCB8fCAvLyBzdGVwIGludG8gdGhlIHNoYWRvdyBET00gb2YgdGhlIHBhcmVudCBvZiBhIHNsb3R0ZWQgbm9kZVxuICAgIGVsZW1lbnQucGFyZW50Tm9kZSB8fCAoIC8vIERPTSBFbGVtZW50IGRldGVjdGVkXG4gICAgaXNTaGFkb3dSb290KGVsZW1lbnQpID8gZWxlbWVudC5ob3N0IDogbnVsbCkgfHwgLy8gU2hhZG93Um9vdCBkZXRlY3RlZFxuICAgIC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLWNhbGxdOiBIVE1MRWxlbWVudCBpcyBhIE5vZGVcbiAgICBnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkgLy8gZmFsbGJhY2tcblxuICApO1xufSIsImltcG9ydCBnZXRQYXJlbnROb2RlIGZyb20gXCIuL2dldFBhcmVudE5vZGUuanNcIjtcbmltcG9ydCBpc1Njcm9sbFBhcmVudCBmcm9tIFwiLi9pc1Njcm9sbFBhcmVudC5qc1wiO1xuaW1wb3J0IGdldE5vZGVOYW1lIGZyb20gXCIuL2dldE5vZGVOYW1lLmpzXCI7XG5pbXBvcnQgeyBpc0hUTUxFbGVtZW50IH0gZnJvbSBcIi4vaW5zdGFuY2VPZi5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0U2Nyb2xsUGFyZW50KG5vZGUpIHtcbiAgaWYgKFsnaHRtbCcsICdib2R5JywgJyNkb2N1bWVudCddLmluZGV4T2YoZ2V0Tm9kZU5hbWUobm9kZSkpID49IDApIHtcbiAgICAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS1yZXR1cm5dOiBhc3N1bWUgYm9keSBpcyBhbHdheXMgYXZhaWxhYmxlXG4gICAgcmV0dXJuIG5vZGUub3duZXJEb2N1bWVudC5ib2R5O1xuICB9XG5cbiAgaWYgKGlzSFRNTEVsZW1lbnQobm9kZSkgJiYgaXNTY3JvbGxQYXJlbnQobm9kZSkpIHtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuXG4gIHJldHVybiBnZXRTY3JvbGxQYXJlbnQoZ2V0UGFyZW50Tm9kZShub2RlKSk7XG59IiwiaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi9nZXRXaW5kb3cuanNcIjtcbmltcG9ydCBnZXREb2N1bWVudEVsZW1lbnQgZnJvbSBcIi4vZ2V0RG9jdW1lbnRFbGVtZW50LmpzXCI7XG5pbXBvcnQgZ2V0V2luZG93U2Nyb2xsQmFyWCBmcm9tIFwiLi9nZXRXaW5kb3dTY3JvbGxCYXJYLmpzXCI7XG5pbXBvcnQgaXNMYXlvdXRWaWV3cG9ydCBmcm9tIFwiLi9pc0xheW91dFZpZXdwb3J0LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRWaWV3cG9ydFJlY3QoZWxlbWVudCwgc3RyYXRlZ3kpIHtcbiAgdmFyIHdpbiA9IGdldFdpbmRvdyhlbGVtZW50KTtcbiAgdmFyIGh0bWwgPSBnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCk7XG4gIHZhciB2aXN1YWxWaWV3cG9ydCA9IHdpbi52aXN1YWxWaWV3cG9ydDtcbiAgdmFyIHdpZHRoID0gaHRtbC5jbGllbnRXaWR0aDtcbiAgdmFyIGhlaWdodCA9IGh0bWwuY2xpZW50SGVpZ2h0O1xuICB2YXIgeCA9IDA7XG4gIHZhciB5ID0gMDtcblxuICBpZiAodmlzdWFsVmlld3BvcnQpIHtcbiAgICB3aWR0aCA9IHZpc3VhbFZpZXdwb3J0LndpZHRoO1xuICAgIGhlaWdodCA9IHZpc3VhbFZpZXdwb3J0LmhlaWdodDtcbiAgICB2YXIgbGF5b3V0Vmlld3BvcnQgPSBpc0xheW91dFZpZXdwb3J0KCk7XG5cbiAgICBpZiAobGF5b3V0Vmlld3BvcnQgfHwgIWxheW91dFZpZXdwb3J0ICYmIHN0cmF0ZWd5ID09PSAnZml4ZWQnKSB7XG4gICAgICB4ID0gdmlzdWFsVmlld3BvcnQub2Zmc2V0TGVmdDtcbiAgICAgIHkgPSB2aXN1YWxWaWV3cG9ydC5vZmZzZXRUb3A7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB3aWR0aDogd2lkdGgsXG4gICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgeDogeCArIGdldFdpbmRvd1Njcm9sbEJhclgoZWxlbWVudCksXG4gICAgeTogeVxuICB9O1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFdpbmRvdyhub2RlKSB7XG4gIGlmIChub2RlID09IG51bGwpIHtcbiAgICByZXR1cm4gd2luZG93O1xuICB9XG5cbiAgaWYgKG5vZGUudG9TdHJpbmcoKSAhPT0gJ1tvYmplY3QgV2luZG93XScpIHtcbiAgICB2YXIgb3duZXJEb2N1bWVudCA9IG5vZGUub3duZXJEb2N1bWVudDtcbiAgICByZXR1cm4gb3duZXJEb2N1bWVudCA/IG93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcgfHwgd2luZG93IDogd2luZG93O1xuICB9XG5cbiAgcmV0dXJuIG5vZGU7XG59IiwiaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi9nZXRXaW5kb3cuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFdpbmRvd1Njcm9sbChub2RlKSB7XG4gIHZhciB3aW4gPSBnZXRXaW5kb3cobm9kZSk7XG4gIHZhciBzY3JvbGxMZWZ0ID0gd2luLnBhZ2VYT2Zmc2V0O1xuICB2YXIgc2Nyb2xsVG9wID0gd2luLnBhZ2VZT2Zmc2V0O1xuICByZXR1cm4ge1xuICAgIHNjcm9sbExlZnQ6IHNjcm9sbExlZnQsXG4gICAgc2Nyb2xsVG9wOiBzY3JvbGxUb3BcbiAgfTtcbn0iLCJpbXBvcnQgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IGZyb20gXCIuL2dldEJvdW5kaW5nQ2xpZW50UmVjdC5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBnZXRXaW5kb3dTY3JvbGwgZnJvbSBcIi4vZ2V0V2luZG93U2Nyb2xsLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRXaW5kb3dTY3JvbGxCYXJYKGVsZW1lbnQpIHtcbiAgLy8gSWYgPGh0bWw+IGhhcyBhIENTUyB3aWR0aCBncmVhdGVyIHRoYW4gdGhlIHZpZXdwb3J0LCB0aGVuIHRoaXMgd2lsbCBiZVxuICAvLyBpbmNvcnJlY3QgZm9yIFJUTC5cbiAgLy8gUG9wcGVyIDEgaXMgYnJva2VuIGluIHRoaXMgY2FzZSBhbmQgbmV2ZXIgaGFkIGEgYnVnIHJlcG9ydCBzbyBsZXQncyBhc3N1bWVcbiAgLy8gaXQncyBub3QgYW4gaXNzdWUuIEkgZG9uJ3QgdGhpbmsgYW55b25lIGV2ZXIgc3BlY2lmaWVzIHdpZHRoIG9uIDxodG1sPlxuICAvLyBhbnl3YXkuXG4gIC8vIEJyb3dzZXJzIHdoZXJlIHRoZSBsZWZ0IHNjcm9sbGJhciBkb2Vzbid0IGNhdXNlIGFuIGlzc3VlIHJlcG9ydCBgMGAgZm9yXG4gIC8vIHRoaXMgKGUuZy4gRWRnZSAyMDE5LCBJRTExLCBTYWZhcmkpXG4gIHJldHVybiBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpKS5sZWZ0ICsgZ2V0V2luZG93U2Nyb2xsKGVsZW1lbnQpLnNjcm9sbExlZnQ7XG59IiwiaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi9nZXRXaW5kb3cuanNcIjtcblxuZnVuY3Rpb24gaXNFbGVtZW50KG5vZGUpIHtcbiAgdmFyIE93bkVsZW1lbnQgPSBnZXRXaW5kb3cobm9kZSkuRWxlbWVudDtcbiAgcmV0dXJuIG5vZGUgaW5zdGFuY2VvZiBPd25FbGVtZW50IHx8IG5vZGUgaW5zdGFuY2VvZiBFbGVtZW50O1xufVxuXG5mdW5jdGlvbiBpc0hUTUxFbGVtZW50KG5vZGUpIHtcbiAgdmFyIE93bkVsZW1lbnQgPSBnZXRXaW5kb3cobm9kZSkuSFRNTEVsZW1lbnQ7XG4gIHJldHVybiBub2RlIGluc3RhbmNlb2YgT3duRWxlbWVudCB8fCBub2RlIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQ7XG59XG5cbmZ1bmN0aW9uIGlzU2hhZG93Um9vdChub2RlKSB7XG4gIC8vIElFIDExIGhhcyBubyBTaGFkb3dSb290XG4gIGlmICh0eXBlb2YgU2hhZG93Um9vdCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB2YXIgT3duRWxlbWVudCA9IGdldFdpbmRvdyhub2RlKS5TaGFkb3dSb290O1xuICByZXR1cm4gbm9kZSBpbnN0YW5jZW9mIE93bkVsZW1lbnQgfHwgbm9kZSBpbnN0YW5jZW9mIFNoYWRvd1Jvb3Q7XG59XG5cbmV4cG9ydCB7IGlzRWxlbWVudCwgaXNIVE1MRWxlbWVudCwgaXNTaGFkb3dSb290IH07IiwiaW1wb3J0IGdldFVBU3RyaW5nIGZyb20gXCIuLi91dGlscy91c2VyQWdlbnQuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzTGF5b3V0Vmlld3BvcnQoKSB7XG4gIHJldHVybiAhL14oKD8hY2hyb21lfGFuZHJvaWQpLikqc2FmYXJpL2kudGVzdChnZXRVQVN0cmluZygpKTtcbn0iLCJpbXBvcnQgZ2V0Q29tcHV0ZWRTdHlsZSBmcm9tIFwiLi9nZXRDb21wdXRlZFN0eWxlLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1Njcm9sbFBhcmVudChlbGVtZW50KSB7XG4gIC8vIEZpcmVmb3ggd2FudHMgdXMgdG8gY2hlY2sgYC14YCBhbmQgYC15YCB2YXJpYXRpb25zIGFzIHdlbGxcbiAgdmFyIF9nZXRDb21wdXRlZFN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KSxcbiAgICAgIG92ZXJmbG93ID0gX2dldENvbXB1dGVkU3R5bGUub3ZlcmZsb3csXG4gICAgICBvdmVyZmxvd1ggPSBfZ2V0Q29tcHV0ZWRTdHlsZS5vdmVyZmxvd1gsXG4gICAgICBvdmVyZmxvd1kgPSBfZ2V0Q29tcHV0ZWRTdHlsZS5vdmVyZmxvd1k7XG5cbiAgcmV0dXJuIC9hdXRvfHNjcm9sbHxvdmVybGF5fGhpZGRlbi8udGVzdChvdmVyZmxvdyArIG92ZXJmbG93WSArIG92ZXJmbG93WCk7XG59IiwiaW1wb3J0IGdldE5vZGVOYW1lIGZyb20gXCIuL2dldE5vZGVOYW1lLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1RhYmxlRWxlbWVudChlbGVtZW50KSB7XG4gIHJldHVybiBbJ3RhYmxlJywgJ3RkJywgJ3RoJ10uaW5kZXhPZihnZXROb2RlTmFtZShlbGVtZW50KSkgPj0gMDtcbn0iLCJpbXBvcnQgZ2V0U2Nyb2xsUGFyZW50IGZyb20gXCIuL2dldFNjcm9sbFBhcmVudC5qc1wiO1xuaW1wb3J0IGdldFBhcmVudE5vZGUgZnJvbSBcIi4vZ2V0UGFyZW50Tm9kZS5qc1wiO1xuaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi9nZXRXaW5kb3cuanNcIjtcbmltcG9ydCBpc1Njcm9sbFBhcmVudCBmcm9tIFwiLi9pc1Njcm9sbFBhcmVudC5qc1wiO1xuLypcbmdpdmVuIGEgRE9NIGVsZW1lbnQsIHJldHVybiB0aGUgbGlzdCBvZiBhbGwgc2Nyb2xsIHBhcmVudHMsIHVwIHRoZSBsaXN0IG9mIGFuY2Vzb3JzXG51bnRpbCB3ZSBnZXQgdG8gdGhlIHRvcCB3aW5kb3cgb2JqZWN0LiBUaGlzIGxpc3QgaXMgd2hhdCB3ZSBhdHRhY2ggc2Nyb2xsIGxpc3RlbmVyc1xudG8sIGJlY2F1c2UgaWYgYW55IG9mIHRoZXNlIHBhcmVudCBlbGVtZW50cyBzY3JvbGwsIHdlJ2xsIG5lZWQgdG8gcmUtY2FsY3VsYXRlIHRoZVxucmVmZXJlbmNlIGVsZW1lbnQncyBwb3NpdGlvbi5cbiovXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGxpc3RTY3JvbGxQYXJlbnRzKGVsZW1lbnQsIGxpc3QpIHtcbiAgdmFyIF9lbGVtZW50JG93bmVyRG9jdW1lbjtcblxuICBpZiAobGlzdCA9PT0gdm9pZCAwKSB7XG4gICAgbGlzdCA9IFtdO1xuICB9XG5cbiAgdmFyIHNjcm9sbFBhcmVudCA9IGdldFNjcm9sbFBhcmVudChlbGVtZW50KTtcbiAgdmFyIGlzQm9keSA9IHNjcm9sbFBhcmVudCA9PT0gKChfZWxlbWVudCRvd25lckRvY3VtZW4gPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfZWxlbWVudCRvd25lckRvY3VtZW4uYm9keSk7XG4gIHZhciB3aW4gPSBnZXRXaW5kb3coc2Nyb2xsUGFyZW50KTtcbiAgdmFyIHRhcmdldCA9IGlzQm9keSA/IFt3aW5dLmNvbmNhdCh3aW4udmlzdWFsVmlld3BvcnQgfHwgW10sIGlzU2Nyb2xsUGFyZW50KHNjcm9sbFBhcmVudCkgPyBzY3JvbGxQYXJlbnQgOiBbXSkgOiBzY3JvbGxQYXJlbnQ7XG4gIHZhciB1cGRhdGVkTGlzdCA9IGxpc3QuY29uY2F0KHRhcmdldCk7XG4gIHJldHVybiBpc0JvZHkgPyB1cGRhdGVkTGlzdCA6IC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLWNhbGxdOiBpc0JvZHkgdGVsbHMgdXMgdGFyZ2V0IHdpbGwgYmUgYW4gSFRNTEVsZW1lbnQgaGVyZVxuICB1cGRhdGVkTGlzdC5jb25jYXQobGlzdFNjcm9sbFBhcmVudHMoZ2V0UGFyZW50Tm9kZSh0YXJnZXQpKSk7XG59IiwiZXhwb3J0IHZhciB0b3AgPSAndG9wJztcbmV4cG9ydCB2YXIgYm90dG9tID0gJ2JvdHRvbSc7XG5leHBvcnQgdmFyIHJpZ2h0ID0gJ3JpZ2h0JztcbmV4cG9ydCB2YXIgbGVmdCA9ICdsZWZ0JztcbmV4cG9ydCB2YXIgYXV0byA9ICdhdXRvJztcbmV4cG9ydCB2YXIgYmFzZVBsYWNlbWVudHMgPSBbdG9wLCBib3R0b20sIHJpZ2h0LCBsZWZ0XTtcbmV4cG9ydCB2YXIgc3RhcnQgPSAnc3RhcnQnO1xuZXhwb3J0IHZhciBlbmQgPSAnZW5kJztcbmV4cG9ydCB2YXIgY2xpcHBpbmdQYXJlbnRzID0gJ2NsaXBwaW5nUGFyZW50cyc7XG5leHBvcnQgdmFyIHZpZXdwb3J0ID0gJ3ZpZXdwb3J0JztcbmV4cG9ydCB2YXIgcG9wcGVyID0gJ3BvcHBlcic7XG5leHBvcnQgdmFyIHJlZmVyZW5jZSA9ICdyZWZlcmVuY2UnO1xuZXhwb3J0IHZhciB2YXJpYXRpb25QbGFjZW1lbnRzID0gLyojX19QVVJFX18qL2Jhc2VQbGFjZW1lbnRzLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIGFjYy5jb25jYXQoW3BsYWNlbWVudCArIFwiLVwiICsgc3RhcnQsIHBsYWNlbWVudCArIFwiLVwiICsgZW5kXSk7XG59LCBbXSk7XG5leHBvcnQgdmFyIHBsYWNlbWVudHMgPSAvKiNfX1BVUkVfXyovW10uY29uY2F0KGJhc2VQbGFjZW1lbnRzLCBbYXV0b10pLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIGFjYy5jb25jYXQoW3BsYWNlbWVudCwgcGxhY2VtZW50ICsgXCItXCIgKyBzdGFydCwgcGxhY2VtZW50ICsgXCItXCIgKyBlbmRdKTtcbn0sIFtdKTsgLy8gbW9kaWZpZXJzIHRoYXQgbmVlZCB0byByZWFkIHRoZSBET01cblxuZXhwb3J0IHZhciBiZWZvcmVSZWFkID0gJ2JlZm9yZVJlYWQnO1xuZXhwb3J0IHZhciByZWFkID0gJ3JlYWQnO1xuZXhwb3J0IHZhciBhZnRlclJlYWQgPSAnYWZ0ZXJSZWFkJzsgLy8gcHVyZS1sb2dpYyBtb2RpZmllcnNcblxuZXhwb3J0IHZhciBiZWZvcmVNYWluID0gJ2JlZm9yZU1haW4nO1xuZXhwb3J0IHZhciBtYWluID0gJ21haW4nO1xuZXhwb3J0IHZhciBhZnRlck1haW4gPSAnYWZ0ZXJNYWluJzsgLy8gbW9kaWZpZXIgd2l0aCB0aGUgcHVycG9zZSB0byB3cml0ZSB0byB0aGUgRE9NIChvciB3cml0ZSBpbnRvIGEgZnJhbWV3b3JrIHN0YXRlKVxuXG5leHBvcnQgdmFyIGJlZm9yZVdyaXRlID0gJ2JlZm9yZVdyaXRlJztcbmV4cG9ydCB2YXIgd3JpdGUgPSAnd3JpdGUnO1xuZXhwb3J0IHZhciBhZnRlcldyaXRlID0gJ2FmdGVyV3JpdGUnO1xuZXhwb3J0IHZhciBtb2RpZmllclBoYXNlcyA9IFtiZWZvcmVSZWFkLCByZWFkLCBhZnRlclJlYWQsIGJlZm9yZU1haW4sIG1haW4sIGFmdGVyTWFpbiwgYmVmb3JlV3JpdGUsIHdyaXRlLCBhZnRlcldyaXRlXTsiLCJleHBvcnQgKiBmcm9tIFwiLi9lbnVtcy5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vbW9kaWZpZXJzL2luZGV4LmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZXhwb3J0IHsgcG9wcGVyR2VuZXJhdG9yLCBkZXRlY3RPdmVyZmxvdywgY3JlYXRlUG9wcGVyIGFzIGNyZWF0ZVBvcHBlckJhc2UgfSBmcm9tIFwiLi9jcmVhdGVQb3BwZXIuanNcIjsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5leHBvcnQgeyBjcmVhdGVQb3BwZXIgfSBmcm9tIFwiLi9wb3BwZXIuanNcIjsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5leHBvcnQgeyBjcmVhdGVQb3BwZXIgYXMgY3JlYXRlUG9wcGVyTGl0ZSB9IGZyb20gXCIuL3BvcHBlci1saXRlLmpzXCI7IiwiaW1wb3J0IGdldE5vZGVOYW1lIGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0Tm9kZU5hbWUuanNcIjtcbmltcG9ydCB7IGlzSFRNTEVsZW1lbnQgfSBmcm9tIFwiLi4vZG9tLXV0aWxzL2luc3RhbmNlT2YuanNcIjsgLy8gVGhpcyBtb2RpZmllciB0YWtlcyB0aGUgc3R5bGVzIHByZXBhcmVkIGJ5IHRoZSBgY29tcHV0ZVN0eWxlc2AgbW9kaWZpZXJcbi8vIGFuZCBhcHBsaWVzIHRoZW0gdG8gdGhlIEhUTUxFbGVtZW50cyBzdWNoIGFzIHBvcHBlciBhbmQgYXJyb3dcblxuZnVuY3Rpb24gYXBwbHlTdHlsZXMoX3JlZikge1xuICB2YXIgc3RhdGUgPSBfcmVmLnN0YXRlO1xuICBPYmplY3Qua2V5cyhzdGF0ZS5lbGVtZW50cykuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkge1xuICAgIHZhciBzdHlsZSA9IHN0YXRlLnN0eWxlc1tuYW1lXSB8fCB7fTtcbiAgICB2YXIgYXR0cmlidXRlcyA9IHN0YXRlLmF0dHJpYnV0ZXNbbmFtZV0gfHwge307XG4gICAgdmFyIGVsZW1lbnQgPSBzdGF0ZS5lbGVtZW50c1tuYW1lXTsgLy8gYXJyb3cgaXMgb3B0aW9uYWwgKyB2aXJ0dWFsIGVsZW1lbnRzXG5cbiAgICBpZiAoIWlzSFRNTEVsZW1lbnQoZWxlbWVudCkgfHwgIWdldE5vZGVOYW1lKGVsZW1lbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfSAvLyBGbG93IGRvZXNuJ3Qgc3VwcG9ydCB0byBleHRlbmQgdGhpcyBwcm9wZXJ0eSwgYnV0IGl0J3MgdGhlIG1vc3RcbiAgICAvLyBlZmZlY3RpdmUgd2F5IHRvIGFwcGx5IHN0eWxlcyB0byBhbiBIVE1MRWxlbWVudFxuICAgIC8vICRGbG93Rml4TWVbY2Fubm90LXdyaXRlXVxuXG5cbiAgICBPYmplY3QuYXNzaWduKGVsZW1lbnQuc3R5bGUsIHN0eWxlKTtcbiAgICBPYmplY3Qua2V5cyhhdHRyaWJ1dGVzKS5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICB2YXIgdmFsdWUgPSBhdHRyaWJ1dGVzW25hbWVdO1xuXG4gICAgICBpZiAodmFsdWUgPT09IGZhbHNlKSB7XG4gICAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKG5hbWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUgPT09IHRydWUgPyAnJyA6IHZhbHVlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGVmZmVjdChfcmVmMikge1xuICB2YXIgc3RhdGUgPSBfcmVmMi5zdGF0ZTtcbiAgdmFyIGluaXRpYWxTdHlsZXMgPSB7XG4gICAgcG9wcGVyOiB7XG4gICAgICBwb3NpdGlvbjogc3RhdGUub3B0aW9ucy5zdHJhdGVneSxcbiAgICAgIGxlZnQ6ICcwJyxcbiAgICAgIHRvcDogJzAnLFxuICAgICAgbWFyZ2luOiAnMCdcbiAgICB9LFxuICAgIGFycm93OiB7XG4gICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJ1xuICAgIH0sXG4gICAgcmVmZXJlbmNlOiB7fVxuICB9O1xuICBPYmplY3QuYXNzaWduKHN0YXRlLmVsZW1lbnRzLnBvcHBlci5zdHlsZSwgaW5pdGlhbFN0eWxlcy5wb3BwZXIpO1xuICBzdGF0ZS5zdHlsZXMgPSBpbml0aWFsU3R5bGVzO1xuXG4gIGlmIChzdGF0ZS5lbGVtZW50cy5hcnJvdykge1xuICAgIE9iamVjdC5hc3NpZ24oc3RhdGUuZWxlbWVudHMuYXJyb3cuc3R5bGUsIGluaXRpYWxTdHlsZXMuYXJyb3cpO1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICBPYmplY3Qua2V5cyhzdGF0ZS5lbGVtZW50cykuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkge1xuICAgICAgdmFyIGVsZW1lbnQgPSBzdGF0ZS5lbGVtZW50c1tuYW1lXTtcbiAgICAgIHZhciBhdHRyaWJ1dGVzID0gc3RhdGUuYXR0cmlidXRlc1tuYW1lXSB8fCB7fTtcbiAgICAgIHZhciBzdHlsZVByb3BlcnRpZXMgPSBPYmplY3Qua2V5cyhzdGF0ZS5zdHlsZXMuaGFzT3duUHJvcGVydHkobmFtZSkgPyBzdGF0ZS5zdHlsZXNbbmFtZV0gOiBpbml0aWFsU3R5bGVzW25hbWVdKTsgLy8gU2V0IGFsbCB2YWx1ZXMgdG8gYW4gZW1wdHkgc3RyaW5nIHRvIHVuc2V0IHRoZW1cblxuICAgICAgdmFyIHN0eWxlID0gc3R5bGVQcm9wZXJ0aWVzLnJlZHVjZShmdW5jdGlvbiAoc3R5bGUsIHByb3BlcnR5KSB7XG4gICAgICAgIHN0eWxlW3Byb3BlcnR5XSA9ICcnO1xuICAgICAgICByZXR1cm4gc3R5bGU7XG4gICAgICB9LCB7fSk7IC8vIGFycm93IGlzIG9wdGlvbmFsICsgdmlydHVhbCBlbGVtZW50c1xuXG4gICAgICBpZiAoIWlzSFRNTEVsZW1lbnQoZWxlbWVudCkgfHwgIWdldE5vZGVOYW1lKGVsZW1lbnQpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgT2JqZWN0LmFzc2lnbihlbGVtZW50LnN0eWxlLCBzdHlsZSk7XG4gICAgICBPYmplY3Qua2V5cyhhdHRyaWJ1dGVzKS5mb3JFYWNoKGZ1bmN0aW9uIChhdHRyaWJ1dGUpIHtcbiAgICAgICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoYXR0cmlidXRlKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9O1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnYXBwbHlTdHlsZXMnLFxuICBlbmFibGVkOiB0cnVlLFxuICBwaGFzZTogJ3dyaXRlJyxcbiAgZm46IGFwcGx5U3R5bGVzLFxuICBlZmZlY3Q6IGVmZmVjdCxcbiAgcmVxdWlyZXM6IFsnY29tcHV0ZVN0eWxlcyddXG59OyIsImltcG9ydCBnZXRCYXNlUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRCYXNlUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgZ2V0TGF5b3V0UmVjdCBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldExheW91dFJlY3QuanNcIjtcbmltcG9ydCBjb250YWlucyBmcm9tIFwiLi4vZG9tLXV0aWxzL2NvbnRhaW5zLmpzXCI7XG5pbXBvcnQgZ2V0T2Zmc2V0UGFyZW50IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0T2Zmc2V0UGFyZW50LmpzXCI7XG5pbXBvcnQgZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQuanNcIjtcbmltcG9ydCB7IHdpdGhpbiB9IGZyb20gXCIuLi91dGlscy93aXRoaW4uanNcIjtcbmltcG9ydCBtZXJnZVBhZGRpbmdPYmplY3QgZnJvbSBcIi4uL3V0aWxzL21lcmdlUGFkZGluZ09iamVjdC5qc1wiO1xuaW1wb3J0IGV4cGFuZFRvSGFzaE1hcCBmcm9tIFwiLi4vdXRpbHMvZXhwYW5kVG9IYXNoTWFwLmpzXCI7XG5pbXBvcnQgeyBsZWZ0LCByaWdodCwgYmFzZVBsYWNlbWVudHMsIHRvcCwgYm90dG9tIH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5pbXBvcnQgeyBpc0hUTUxFbGVtZW50IH0gZnJvbSBcIi4uL2RvbS11dGlscy9pbnN0YW5jZU9mLmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxudmFyIHRvUGFkZGluZ09iamVjdCA9IGZ1bmN0aW9uIHRvUGFkZGluZ09iamVjdChwYWRkaW5nLCBzdGF0ZSkge1xuICBwYWRkaW5nID0gdHlwZW9mIHBhZGRpbmcgPT09ICdmdW5jdGlvbicgPyBwYWRkaW5nKE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLnJlY3RzLCB7XG4gICAgcGxhY2VtZW50OiBzdGF0ZS5wbGFjZW1lbnRcbiAgfSkpIDogcGFkZGluZztcbiAgcmV0dXJuIG1lcmdlUGFkZGluZ09iamVjdCh0eXBlb2YgcGFkZGluZyAhPT0gJ251bWJlcicgPyBwYWRkaW5nIDogZXhwYW5kVG9IYXNoTWFwKHBhZGRpbmcsIGJhc2VQbGFjZW1lbnRzKSk7XG59O1xuXG5mdW5jdGlvbiBhcnJvdyhfcmVmKSB7XG4gIHZhciBfc3RhdGUkbW9kaWZpZXJzRGF0YSQ7XG5cbiAgdmFyIHN0YXRlID0gX3JlZi5zdGF0ZSxcbiAgICAgIG5hbWUgPSBfcmVmLm5hbWUsXG4gICAgICBvcHRpb25zID0gX3JlZi5vcHRpb25zO1xuICB2YXIgYXJyb3dFbGVtZW50ID0gc3RhdGUuZWxlbWVudHMuYXJyb3c7XG4gIHZhciBwb3BwZXJPZmZzZXRzID0gc3RhdGUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzO1xuICB2YXIgYmFzZVBsYWNlbWVudCA9IGdldEJhc2VQbGFjZW1lbnQoc3RhdGUucGxhY2VtZW50KTtcbiAgdmFyIGF4aXMgPSBnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQoYmFzZVBsYWNlbWVudCk7XG4gIHZhciBpc1ZlcnRpY2FsID0gW2xlZnQsIHJpZ2h0XS5pbmRleE9mKGJhc2VQbGFjZW1lbnQpID49IDA7XG4gIHZhciBsZW4gPSBpc1ZlcnRpY2FsID8gJ2hlaWdodCcgOiAnd2lkdGgnO1xuXG4gIGlmICghYXJyb3dFbGVtZW50IHx8ICFwb3BwZXJPZmZzZXRzKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIHBhZGRpbmdPYmplY3QgPSB0b1BhZGRpbmdPYmplY3Qob3B0aW9ucy5wYWRkaW5nLCBzdGF0ZSk7XG4gIHZhciBhcnJvd1JlY3QgPSBnZXRMYXlvdXRSZWN0KGFycm93RWxlbWVudCk7XG4gIHZhciBtaW5Qcm9wID0gYXhpcyA9PT0gJ3knID8gdG9wIDogbGVmdDtcbiAgdmFyIG1heFByb3AgPSBheGlzID09PSAneScgPyBib3R0b20gOiByaWdodDtcbiAgdmFyIGVuZERpZmYgPSBzdGF0ZS5yZWN0cy5yZWZlcmVuY2VbbGVuXSArIHN0YXRlLnJlY3RzLnJlZmVyZW5jZVtheGlzXSAtIHBvcHBlck9mZnNldHNbYXhpc10gLSBzdGF0ZS5yZWN0cy5wb3BwZXJbbGVuXTtcbiAgdmFyIHN0YXJ0RGlmZiA9IHBvcHBlck9mZnNldHNbYXhpc10gLSBzdGF0ZS5yZWN0cy5yZWZlcmVuY2VbYXhpc107XG4gIHZhciBhcnJvd09mZnNldFBhcmVudCA9IGdldE9mZnNldFBhcmVudChhcnJvd0VsZW1lbnQpO1xuICB2YXIgY2xpZW50U2l6ZSA9IGFycm93T2Zmc2V0UGFyZW50ID8gYXhpcyA9PT0gJ3knID8gYXJyb3dPZmZzZXRQYXJlbnQuY2xpZW50SGVpZ2h0IHx8IDAgOiBhcnJvd09mZnNldFBhcmVudC5jbGllbnRXaWR0aCB8fCAwIDogMDtcbiAgdmFyIGNlbnRlclRvUmVmZXJlbmNlID0gZW5kRGlmZiAvIDIgLSBzdGFydERpZmYgLyAyOyAvLyBNYWtlIHN1cmUgdGhlIGFycm93IGRvZXNuJ3Qgb3ZlcmZsb3cgdGhlIHBvcHBlciBpZiB0aGUgY2VudGVyIHBvaW50IGlzXG4gIC8vIG91dHNpZGUgb2YgdGhlIHBvcHBlciBib3VuZHNcblxuICB2YXIgbWluID0gcGFkZGluZ09iamVjdFttaW5Qcm9wXTtcbiAgdmFyIG1heCA9IGNsaWVudFNpemUgLSBhcnJvd1JlY3RbbGVuXSAtIHBhZGRpbmdPYmplY3RbbWF4UHJvcF07XG4gIHZhciBjZW50ZXIgPSBjbGllbnRTaXplIC8gMiAtIGFycm93UmVjdFtsZW5dIC8gMiArIGNlbnRlclRvUmVmZXJlbmNlO1xuICB2YXIgb2Zmc2V0ID0gd2l0aGluKG1pbiwgY2VudGVyLCBtYXgpOyAvLyBQcmV2ZW50cyBicmVha2luZyBzeW50YXggaGlnaGxpZ2h0aW5nLi4uXG5cbiAgdmFyIGF4aXNQcm9wID0gYXhpcztcbiAgc3RhdGUubW9kaWZpZXJzRGF0YVtuYW1lXSA9IChfc3RhdGUkbW9kaWZpZXJzRGF0YSQgPSB7fSwgX3N0YXRlJG1vZGlmaWVyc0RhdGEkW2F4aXNQcm9wXSA9IG9mZnNldCwgX3N0YXRlJG1vZGlmaWVyc0RhdGEkLmNlbnRlck9mZnNldCA9IG9mZnNldCAtIGNlbnRlciwgX3N0YXRlJG1vZGlmaWVyc0RhdGEkKTtcbn1cblxuZnVuY3Rpb24gZWZmZWN0KF9yZWYyKSB7XG4gIHZhciBzdGF0ZSA9IF9yZWYyLnN0YXRlLFxuICAgICAgb3B0aW9ucyA9IF9yZWYyLm9wdGlvbnM7XG4gIHZhciBfb3B0aW9ucyRlbGVtZW50ID0gb3B0aW9ucy5lbGVtZW50LFxuICAgICAgYXJyb3dFbGVtZW50ID0gX29wdGlvbnMkZWxlbWVudCA9PT0gdm9pZCAwID8gJ1tkYXRhLXBvcHBlci1hcnJvd10nIDogX29wdGlvbnMkZWxlbWVudDtcblxuICBpZiAoYXJyb3dFbGVtZW50ID09IG51bGwpIHtcbiAgICByZXR1cm47XG4gIH0gLy8gQ1NTIHNlbGVjdG9yXG5cblxuICBpZiAodHlwZW9mIGFycm93RWxlbWVudCA9PT0gJ3N0cmluZycpIHtcbiAgICBhcnJvd0VsZW1lbnQgPSBzdGF0ZS5lbGVtZW50cy5wb3BwZXIucXVlcnlTZWxlY3RvcihhcnJvd0VsZW1lbnQpO1xuXG4gICAgaWYgKCFhcnJvd0VsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgaWYgKCFpc0hUTUxFbGVtZW50KGFycm93RWxlbWVudCkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoWydQb3BwZXI6IFwiYXJyb3dcIiBlbGVtZW50IG11c3QgYmUgYW4gSFRNTEVsZW1lbnQgKG5vdCBhbiBTVkdFbGVtZW50KS4nLCAnVG8gdXNlIGFuIFNWRyBhcnJvdywgd3JhcCBpdCBpbiBhbiBIVE1MRWxlbWVudCB0aGF0IHdpbGwgYmUgdXNlZCBhcycsICd0aGUgYXJyb3cuJ10uam9pbignICcpKTtcbiAgICB9XG4gIH1cblxuICBpZiAoIWNvbnRhaW5zKHN0YXRlLmVsZW1lbnRzLnBvcHBlciwgYXJyb3dFbGVtZW50KSkge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoWydQb3BwZXI6IFwiYXJyb3dcIiBtb2RpZmllclxcJ3MgYGVsZW1lbnRgIG11c3QgYmUgYSBjaGlsZCBvZiB0aGUgcG9wcGVyJywgJ2VsZW1lbnQuJ10uam9pbignICcpKTtcbiAgICB9XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBzdGF0ZS5lbGVtZW50cy5hcnJvdyA9IGFycm93RWxlbWVudDtcbn0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ2Fycm93JyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICdtYWluJyxcbiAgZm46IGFycm93LFxuICBlZmZlY3Q6IGVmZmVjdCxcbiAgcmVxdWlyZXM6IFsncG9wcGVyT2Zmc2V0cyddLFxuICByZXF1aXJlc0lmRXhpc3RzOiBbJ3ByZXZlbnRPdmVyZmxvdyddXG59OyIsImltcG9ydCB7IHRvcCwgbGVmdCwgcmlnaHQsIGJvdHRvbSwgZW5kIH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5pbXBvcnQgZ2V0T2Zmc2V0UGFyZW50IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0T2Zmc2V0UGFyZW50LmpzXCI7XG5pbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0V2luZG93LmpzXCI7XG5pbXBvcnQgZ2V0RG9jdW1lbnRFbGVtZW50IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0RG9jdW1lbnRFbGVtZW50LmpzXCI7XG5pbXBvcnQgZ2V0Q29tcHV0ZWRTdHlsZSBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldENvbXB1dGVkU3R5bGUuanNcIjtcbmltcG9ydCBnZXRCYXNlUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRCYXNlUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgZ2V0VmFyaWF0aW9uIGZyb20gXCIuLi91dGlscy9nZXRWYXJpYXRpb24uanNcIjtcbmltcG9ydCB7IHJvdW5kIH0gZnJvbSBcIi4uL3V0aWxzL21hdGguanNcIjsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG52YXIgdW5zZXRTaWRlcyA9IHtcbiAgdG9wOiAnYXV0bycsXG4gIHJpZ2h0OiAnYXV0bycsXG4gIGJvdHRvbTogJ2F1dG8nLFxuICBsZWZ0OiAnYXV0bydcbn07IC8vIFJvdW5kIHRoZSBvZmZzZXRzIHRvIHRoZSBuZWFyZXN0IHN1aXRhYmxlIHN1YnBpeGVsIGJhc2VkIG9uIHRoZSBEUFIuXG4vLyBab29taW5nIGNhbiBjaGFuZ2UgdGhlIERQUiwgYnV0IGl0IHNlZW1zIHRvIHJlcG9ydCBhIHZhbHVlIHRoYXQgd2lsbFxuLy8gY2xlYW5seSBkaXZpZGUgdGhlIHZhbHVlcyBpbnRvIHRoZSBhcHByb3ByaWF0ZSBzdWJwaXhlbHMuXG5cbmZ1bmN0aW9uIHJvdW5kT2Zmc2V0c0J5RFBSKF9yZWYpIHtcbiAgdmFyIHggPSBfcmVmLngsXG4gICAgICB5ID0gX3JlZi55O1xuICB2YXIgd2luID0gd2luZG93O1xuICB2YXIgZHByID0gd2luLmRldmljZVBpeGVsUmF0aW8gfHwgMTtcbiAgcmV0dXJuIHtcbiAgICB4OiByb3VuZCh4ICogZHByKSAvIGRwciB8fCAwLFxuICAgIHk6IHJvdW5kKHkgKiBkcHIpIC8gZHByIHx8IDBcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1hcFRvU3R5bGVzKF9yZWYyKSB7XG4gIHZhciBfT2JqZWN0JGFzc2lnbjI7XG5cbiAgdmFyIHBvcHBlciA9IF9yZWYyLnBvcHBlcixcbiAgICAgIHBvcHBlclJlY3QgPSBfcmVmMi5wb3BwZXJSZWN0LFxuICAgICAgcGxhY2VtZW50ID0gX3JlZjIucGxhY2VtZW50LFxuICAgICAgdmFyaWF0aW9uID0gX3JlZjIudmFyaWF0aW9uLFxuICAgICAgb2Zmc2V0cyA9IF9yZWYyLm9mZnNldHMsXG4gICAgICBwb3NpdGlvbiA9IF9yZWYyLnBvc2l0aW9uLFxuICAgICAgZ3B1QWNjZWxlcmF0aW9uID0gX3JlZjIuZ3B1QWNjZWxlcmF0aW9uLFxuICAgICAgYWRhcHRpdmUgPSBfcmVmMi5hZGFwdGl2ZSxcbiAgICAgIHJvdW5kT2Zmc2V0cyA9IF9yZWYyLnJvdW5kT2Zmc2V0cyxcbiAgICAgIGlzRml4ZWQgPSBfcmVmMi5pc0ZpeGVkO1xuICB2YXIgX29mZnNldHMkeCA9IG9mZnNldHMueCxcbiAgICAgIHggPSBfb2Zmc2V0cyR4ID09PSB2b2lkIDAgPyAwIDogX29mZnNldHMkeCxcbiAgICAgIF9vZmZzZXRzJHkgPSBvZmZzZXRzLnksXG4gICAgICB5ID0gX29mZnNldHMkeSA9PT0gdm9pZCAwID8gMCA6IF9vZmZzZXRzJHk7XG5cbiAgdmFyIF9yZWYzID0gdHlwZW9mIHJvdW5kT2Zmc2V0cyA9PT0gJ2Z1bmN0aW9uJyA/IHJvdW5kT2Zmc2V0cyh7XG4gICAgeDogeCxcbiAgICB5OiB5XG4gIH0pIDoge1xuICAgIHg6IHgsXG4gICAgeTogeVxuICB9O1xuXG4gIHggPSBfcmVmMy54O1xuICB5ID0gX3JlZjMueTtcbiAgdmFyIGhhc1ggPSBvZmZzZXRzLmhhc093blByb3BlcnR5KCd4Jyk7XG4gIHZhciBoYXNZID0gb2Zmc2V0cy5oYXNPd25Qcm9wZXJ0eSgneScpO1xuICB2YXIgc2lkZVggPSBsZWZ0O1xuICB2YXIgc2lkZVkgPSB0b3A7XG4gIHZhciB3aW4gPSB3aW5kb3c7XG5cbiAgaWYgKGFkYXB0aXZlKSB7XG4gICAgdmFyIG9mZnNldFBhcmVudCA9IGdldE9mZnNldFBhcmVudChwb3BwZXIpO1xuICAgIHZhciBoZWlnaHRQcm9wID0gJ2NsaWVudEhlaWdodCc7XG4gICAgdmFyIHdpZHRoUHJvcCA9ICdjbGllbnRXaWR0aCc7XG5cbiAgICBpZiAob2Zmc2V0UGFyZW50ID09PSBnZXRXaW5kb3cocG9wcGVyKSkge1xuICAgICAgb2Zmc2V0UGFyZW50ID0gZ2V0RG9jdW1lbnRFbGVtZW50KHBvcHBlcik7XG5cbiAgICAgIGlmIChnZXRDb21wdXRlZFN0eWxlKG9mZnNldFBhcmVudCkucG9zaXRpb24gIT09ICdzdGF0aWMnICYmIHBvc2l0aW9uID09PSAnYWJzb2x1dGUnKSB7XG4gICAgICAgIGhlaWdodFByb3AgPSAnc2Nyb2xsSGVpZ2h0JztcbiAgICAgICAgd2lkdGhQcm9wID0gJ3Njcm9sbFdpZHRoJztcbiAgICAgIH1cbiAgICB9IC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLWNhc3RdOiBmb3JjZSB0eXBlIHJlZmluZW1lbnQsIHdlIGNvbXBhcmUgb2Zmc2V0UGFyZW50IHdpdGggd2luZG93IGFib3ZlLCBidXQgRmxvdyBkb2Vzbid0IGRldGVjdCBpdFxuXG5cbiAgICBvZmZzZXRQYXJlbnQgPSBvZmZzZXRQYXJlbnQ7XG5cbiAgICBpZiAocGxhY2VtZW50ID09PSB0b3AgfHwgKHBsYWNlbWVudCA9PT0gbGVmdCB8fCBwbGFjZW1lbnQgPT09IHJpZ2h0KSAmJiB2YXJpYXRpb24gPT09IGVuZCkge1xuICAgICAgc2lkZVkgPSBib3R0b207XG4gICAgICB2YXIgb2Zmc2V0WSA9IGlzRml4ZWQgJiYgb2Zmc2V0UGFyZW50ID09PSB3aW4gJiYgd2luLnZpc3VhbFZpZXdwb3J0ID8gd2luLnZpc3VhbFZpZXdwb3J0LmhlaWdodCA6IC8vICRGbG93Rml4TWVbcHJvcC1taXNzaW5nXVxuICAgICAgb2Zmc2V0UGFyZW50W2hlaWdodFByb3BdO1xuICAgICAgeSAtPSBvZmZzZXRZIC0gcG9wcGVyUmVjdC5oZWlnaHQ7XG4gICAgICB5ICo9IGdwdUFjY2VsZXJhdGlvbiA/IDEgOiAtMTtcbiAgICB9XG5cbiAgICBpZiAocGxhY2VtZW50ID09PSBsZWZ0IHx8IChwbGFjZW1lbnQgPT09IHRvcCB8fCBwbGFjZW1lbnQgPT09IGJvdHRvbSkgJiYgdmFyaWF0aW9uID09PSBlbmQpIHtcbiAgICAgIHNpZGVYID0gcmlnaHQ7XG4gICAgICB2YXIgb2Zmc2V0WCA9IGlzRml4ZWQgJiYgb2Zmc2V0UGFyZW50ID09PSB3aW4gJiYgd2luLnZpc3VhbFZpZXdwb3J0ID8gd2luLnZpc3VhbFZpZXdwb3J0LndpZHRoIDogLy8gJEZsb3dGaXhNZVtwcm9wLW1pc3NpbmddXG4gICAgICBvZmZzZXRQYXJlbnRbd2lkdGhQcm9wXTtcbiAgICAgIHggLT0gb2Zmc2V0WCAtIHBvcHBlclJlY3Qud2lkdGg7XG4gICAgICB4ICo9IGdwdUFjY2VsZXJhdGlvbiA/IDEgOiAtMTtcbiAgICB9XG4gIH1cblxuICB2YXIgY29tbW9uU3R5bGVzID0gT2JqZWN0LmFzc2lnbih7XG4gICAgcG9zaXRpb246IHBvc2l0aW9uXG4gIH0sIGFkYXB0aXZlICYmIHVuc2V0U2lkZXMpO1xuXG4gIHZhciBfcmVmNCA9IHJvdW5kT2Zmc2V0cyA9PT0gdHJ1ZSA/IHJvdW5kT2Zmc2V0c0J5RFBSKHtcbiAgICB4OiB4LFxuICAgIHk6IHlcbiAgfSkgOiB7XG4gICAgeDogeCxcbiAgICB5OiB5XG4gIH07XG5cbiAgeCA9IF9yZWY0Lng7XG4gIHkgPSBfcmVmNC55O1xuXG4gIGlmIChncHVBY2NlbGVyYXRpb24pIHtcbiAgICB2YXIgX09iamVjdCRhc3NpZ247XG5cbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgY29tbW9uU3R5bGVzLCAoX09iamVjdCRhc3NpZ24gPSB7fSwgX09iamVjdCRhc3NpZ25bc2lkZVldID0gaGFzWSA/ICcwJyA6ICcnLCBfT2JqZWN0JGFzc2lnbltzaWRlWF0gPSBoYXNYID8gJzAnIDogJycsIF9PYmplY3QkYXNzaWduLnRyYW5zZm9ybSA9ICh3aW4uZGV2aWNlUGl4ZWxSYXRpbyB8fCAxKSA8PSAxID8gXCJ0cmFuc2xhdGUoXCIgKyB4ICsgXCJweCwgXCIgKyB5ICsgXCJweClcIiA6IFwidHJhbnNsYXRlM2QoXCIgKyB4ICsgXCJweCwgXCIgKyB5ICsgXCJweCwgMClcIiwgX09iamVjdCRhc3NpZ24pKTtcbiAgfVxuXG4gIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBjb21tb25TdHlsZXMsIChfT2JqZWN0JGFzc2lnbjIgPSB7fSwgX09iamVjdCRhc3NpZ24yW3NpZGVZXSA9IGhhc1kgPyB5ICsgXCJweFwiIDogJycsIF9PYmplY3QkYXNzaWduMltzaWRlWF0gPSBoYXNYID8geCArIFwicHhcIiA6ICcnLCBfT2JqZWN0JGFzc2lnbjIudHJhbnNmb3JtID0gJycsIF9PYmplY3QkYXNzaWduMikpO1xufVxuXG5mdW5jdGlvbiBjb21wdXRlU3R5bGVzKF9yZWY1KSB7XG4gIHZhciBzdGF0ZSA9IF9yZWY1LnN0YXRlLFxuICAgICAgb3B0aW9ucyA9IF9yZWY1Lm9wdGlvbnM7XG4gIHZhciBfb3B0aW9ucyRncHVBY2NlbGVyYXQgPSBvcHRpb25zLmdwdUFjY2VsZXJhdGlvbixcbiAgICAgIGdwdUFjY2VsZXJhdGlvbiA9IF9vcHRpb25zJGdwdUFjY2VsZXJhdCA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJGdwdUFjY2VsZXJhdCxcbiAgICAgIF9vcHRpb25zJGFkYXB0aXZlID0gb3B0aW9ucy5hZGFwdGl2ZSxcbiAgICAgIGFkYXB0aXZlID0gX29wdGlvbnMkYWRhcHRpdmUgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRhZGFwdGl2ZSxcbiAgICAgIF9vcHRpb25zJHJvdW5kT2Zmc2V0cyA9IG9wdGlvbnMucm91bmRPZmZzZXRzLFxuICAgICAgcm91bmRPZmZzZXRzID0gX29wdGlvbnMkcm91bmRPZmZzZXRzID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkcm91bmRPZmZzZXRzO1xuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICB2YXIgdHJhbnNpdGlvblByb3BlcnR5ID0gZ2V0Q29tcHV0ZWRTdHlsZShzdGF0ZS5lbGVtZW50cy5wb3BwZXIpLnRyYW5zaXRpb25Qcm9wZXJ0eSB8fCAnJztcblxuICAgIGlmIChhZGFwdGl2ZSAmJiBbJ3RyYW5zZm9ybScsICd0b3AnLCAncmlnaHQnLCAnYm90dG9tJywgJ2xlZnQnXS5zb21lKGZ1bmN0aW9uIChwcm9wZXJ0eSkge1xuICAgICAgcmV0dXJuIHRyYW5zaXRpb25Qcm9wZXJ0eS5pbmRleE9mKHByb3BlcnR5KSA+PSAwO1xuICAgIH0pKSB7XG4gICAgICBjb25zb2xlLndhcm4oWydQb3BwZXI6IERldGVjdGVkIENTUyB0cmFuc2l0aW9ucyBvbiBhdCBsZWFzdCBvbmUgb2YgdGhlIGZvbGxvd2luZycsICdDU1MgcHJvcGVydGllczogXCJ0cmFuc2Zvcm1cIiwgXCJ0b3BcIiwgXCJyaWdodFwiLCBcImJvdHRvbVwiLCBcImxlZnRcIi4nLCAnXFxuXFxuJywgJ0Rpc2FibGUgdGhlIFwiY29tcHV0ZVN0eWxlc1wiIG1vZGlmaWVyXFwncyBgYWRhcHRpdmVgIG9wdGlvbiB0byBhbGxvdycsICdmb3Igc21vb3RoIHRyYW5zaXRpb25zLCBvciByZW1vdmUgdGhlc2UgcHJvcGVydGllcyBmcm9tIHRoZSBDU1MnLCAndHJhbnNpdGlvbiBkZWNsYXJhdGlvbiBvbiB0aGUgcG9wcGVyIGVsZW1lbnQgaWYgb25seSB0cmFuc2l0aW9uaW5nJywgJ29wYWNpdHkgb3IgYmFja2dyb3VuZC1jb2xvciBmb3IgZXhhbXBsZS4nLCAnXFxuXFxuJywgJ1dlIHJlY29tbWVuZCB1c2luZyB0aGUgcG9wcGVyIGVsZW1lbnQgYXMgYSB3cmFwcGVyIGFyb3VuZCBhbiBpbm5lcicsICdlbGVtZW50IHRoYXQgY2FuIGhhdmUgYW55IENTUyBwcm9wZXJ0eSB0cmFuc2l0aW9uZWQgZm9yIGFuaW1hdGlvbnMuJ10uam9pbignICcpKTtcbiAgICB9XG4gIH1cblxuICB2YXIgY29tbW9uU3R5bGVzID0ge1xuICAgIHBsYWNlbWVudDogZ2V0QmFzZVBsYWNlbWVudChzdGF0ZS5wbGFjZW1lbnQpLFxuICAgIHZhcmlhdGlvbjogZ2V0VmFyaWF0aW9uKHN0YXRlLnBsYWNlbWVudCksXG4gICAgcG9wcGVyOiBzdGF0ZS5lbGVtZW50cy5wb3BwZXIsXG4gICAgcG9wcGVyUmVjdDogc3RhdGUucmVjdHMucG9wcGVyLFxuICAgIGdwdUFjY2VsZXJhdGlvbjogZ3B1QWNjZWxlcmF0aW9uLFxuICAgIGlzRml4ZWQ6IHN0YXRlLm9wdGlvbnMuc3RyYXRlZ3kgPT09ICdmaXhlZCdcbiAgfTtcblxuICBpZiAoc3RhdGUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzICE9IG51bGwpIHtcbiAgICBzdGF0ZS5zdHlsZXMucG9wcGVyID0gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUuc3R5bGVzLnBvcHBlciwgbWFwVG9TdHlsZXMoT2JqZWN0LmFzc2lnbih7fSwgY29tbW9uU3R5bGVzLCB7XG4gICAgICBvZmZzZXRzOiBzdGF0ZS5tb2RpZmllcnNEYXRhLnBvcHBlck9mZnNldHMsXG4gICAgICBwb3NpdGlvbjogc3RhdGUub3B0aW9ucy5zdHJhdGVneSxcbiAgICAgIGFkYXB0aXZlOiBhZGFwdGl2ZSxcbiAgICAgIHJvdW5kT2Zmc2V0czogcm91bmRPZmZzZXRzXG4gICAgfSkpKTtcbiAgfVxuXG4gIGlmIChzdGF0ZS5tb2RpZmllcnNEYXRhLmFycm93ICE9IG51bGwpIHtcbiAgICBzdGF0ZS5zdHlsZXMuYXJyb3cgPSBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZS5zdHlsZXMuYXJyb3csIG1hcFRvU3R5bGVzKE9iamVjdC5hc3NpZ24oe30sIGNvbW1vblN0eWxlcywge1xuICAgICAgb2Zmc2V0czogc3RhdGUubW9kaWZpZXJzRGF0YS5hcnJvdyxcbiAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgYWRhcHRpdmU6IGZhbHNlLFxuICAgICAgcm91bmRPZmZzZXRzOiByb3VuZE9mZnNldHNcbiAgICB9KSkpO1xuICB9XG5cbiAgc3RhdGUuYXR0cmlidXRlcy5wb3BwZXIgPSBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZS5hdHRyaWJ1dGVzLnBvcHBlciwge1xuICAgICdkYXRhLXBvcHBlci1wbGFjZW1lbnQnOiBzdGF0ZS5wbGFjZW1lbnRcbiAgfSk7XG59IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdjb21wdXRlU3R5bGVzJyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICdiZWZvcmVXcml0ZScsXG4gIGZuOiBjb21wdXRlU3R5bGVzLFxuICBkYXRhOiB7fVxufTsiLCJpbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0V2luZG93LmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxudmFyIHBhc3NpdmUgPSB7XG4gIHBhc3NpdmU6IHRydWVcbn07XG5cbmZ1bmN0aW9uIGVmZmVjdChfcmVmKSB7XG4gIHZhciBzdGF0ZSA9IF9yZWYuc3RhdGUsXG4gICAgICBpbnN0YW5jZSA9IF9yZWYuaW5zdGFuY2UsXG4gICAgICBvcHRpb25zID0gX3JlZi5vcHRpb25zO1xuICB2YXIgX29wdGlvbnMkc2Nyb2xsID0gb3B0aW9ucy5zY3JvbGwsXG4gICAgICBzY3JvbGwgPSBfb3B0aW9ucyRzY3JvbGwgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRzY3JvbGwsXG4gICAgICBfb3B0aW9ucyRyZXNpemUgPSBvcHRpb25zLnJlc2l6ZSxcbiAgICAgIHJlc2l6ZSA9IF9vcHRpb25zJHJlc2l6ZSA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJHJlc2l6ZTtcbiAgdmFyIHdpbmRvdyA9IGdldFdpbmRvdyhzdGF0ZS5lbGVtZW50cy5wb3BwZXIpO1xuICB2YXIgc2Nyb2xsUGFyZW50cyA9IFtdLmNvbmNhdChzdGF0ZS5zY3JvbGxQYXJlbnRzLnJlZmVyZW5jZSwgc3RhdGUuc2Nyb2xsUGFyZW50cy5wb3BwZXIpO1xuXG4gIGlmIChzY3JvbGwpIHtcbiAgICBzY3JvbGxQYXJlbnRzLmZvckVhY2goZnVuY3Rpb24gKHNjcm9sbFBhcmVudCkge1xuICAgICAgc2Nyb2xsUGFyZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGluc3RhbmNlLnVwZGF0ZSwgcGFzc2l2ZSk7XG4gICAgfSk7XG4gIH1cblxuICBpZiAocmVzaXplKSB7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGluc3RhbmNlLnVwZGF0ZSwgcGFzc2l2ZSk7XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIGlmIChzY3JvbGwpIHtcbiAgICAgIHNjcm9sbFBhcmVudHMuZm9yRWFjaChmdW5jdGlvbiAoc2Nyb2xsUGFyZW50KSB7XG4gICAgICAgIHNjcm9sbFBhcmVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBpbnN0YW5jZS51cGRhdGUsIHBhc3NpdmUpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHJlc2l6ZSkge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGluc3RhbmNlLnVwZGF0ZSwgcGFzc2l2ZSk7XG4gICAgfVxuICB9O1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnZXZlbnRMaXN0ZW5lcnMnLFxuICBlbmFibGVkOiB0cnVlLFxuICBwaGFzZTogJ3dyaXRlJyxcbiAgZm46IGZ1bmN0aW9uIGZuKCkge30sXG4gIGVmZmVjdDogZWZmZWN0LFxuICBkYXRhOiB7fVxufTsiLCJpbXBvcnQgZ2V0T3Bwb3NpdGVQbGFjZW1lbnQgZnJvbSBcIi4uL3V0aWxzL2dldE9wcG9zaXRlUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IGdldE9wcG9zaXRlVmFyaWF0aW9uUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRPcHBvc2l0ZVZhcmlhdGlvblBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IGRldGVjdE92ZXJmbG93IGZyb20gXCIuLi91dGlscy9kZXRlY3RPdmVyZmxvdy5qc1wiO1xuaW1wb3J0IGNvbXB1dGVBdXRvUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9jb21wdXRlQXV0b1BsYWNlbWVudC5qc1wiO1xuaW1wb3J0IHsgYm90dG9tLCB0b3AsIHN0YXJ0LCByaWdodCwgbGVmdCwgYXV0byB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xuaW1wb3J0IGdldFZhcmlhdGlvbiBmcm9tIFwiLi4vdXRpbHMvZ2V0VmFyaWF0aW9uLmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZnVuY3Rpb24gZ2V0RXhwYW5kZWRGYWxsYmFja1BsYWNlbWVudHMocGxhY2VtZW50KSB7XG4gIGlmIChnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCkgPT09IGF1dG8pIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICB2YXIgb3Bwb3NpdGVQbGFjZW1lbnQgPSBnZXRPcHBvc2l0ZVBsYWNlbWVudChwbGFjZW1lbnQpO1xuICByZXR1cm4gW2dldE9wcG9zaXRlVmFyaWF0aW9uUGxhY2VtZW50KHBsYWNlbWVudCksIG9wcG9zaXRlUGxhY2VtZW50LCBnZXRPcHBvc2l0ZVZhcmlhdGlvblBsYWNlbWVudChvcHBvc2l0ZVBsYWNlbWVudCldO1xufVxuXG5mdW5jdGlvbiBmbGlwKF9yZWYpIHtcbiAgdmFyIHN0YXRlID0gX3JlZi5zdGF0ZSxcbiAgICAgIG9wdGlvbnMgPSBfcmVmLm9wdGlvbnMsXG4gICAgICBuYW1lID0gX3JlZi5uYW1lO1xuXG4gIGlmIChzdGF0ZS5tb2RpZmllcnNEYXRhW25hbWVdLl9za2lwKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIF9vcHRpb25zJG1haW5BeGlzID0gb3B0aW9ucy5tYWluQXhpcyxcbiAgICAgIGNoZWNrTWFpbkF4aXMgPSBfb3B0aW9ucyRtYWluQXhpcyA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJG1haW5BeGlzLFxuICAgICAgX29wdGlvbnMkYWx0QXhpcyA9IG9wdGlvbnMuYWx0QXhpcyxcbiAgICAgIGNoZWNrQWx0QXhpcyA9IF9vcHRpb25zJGFsdEF4aXMgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRhbHRBeGlzLFxuICAgICAgc3BlY2lmaWVkRmFsbGJhY2tQbGFjZW1lbnRzID0gb3B0aW9ucy5mYWxsYmFja1BsYWNlbWVudHMsXG4gICAgICBwYWRkaW5nID0gb3B0aW9ucy5wYWRkaW5nLFxuICAgICAgYm91bmRhcnkgPSBvcHRpb25zLmJvdW5kYXJ5LFxuICAgICAgcm9vdEJvdW5kYXJ5ID0gb3B0aW9ucy5yb290Qm91bmRhcnksXG4gICAgICBhbHRCb3VuZGFyeSA9IG9wdGlvbnMuYWx0Qm91bmRhcnksXG4gICAgICBfb3B0aW9ucyRmbGlwVmFyaWF0aW8gPSBvcHRpb25zLmZsaXBWYXJpYXRpb25zLFxuICAgICAgZmxpcFZhcmlhdGlvbnMgPSBfb3B0aW9ucyRmbGlwVmFyaWF0aW8gPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRmbGlwVmFyaWF0aW8sXG4gICAgICBhbGxvd2VkQXV0b1BsYWNlbWVudHMgPSBvcHRpb25zLmFsbG93ZWRBdXRvUGxhY2VtZW50cztcbiAgdmFyIHByZWZlcnJlZFBsYWNlbWVudCA9IHN0YXRlLm9wdGlvbnMucGxhY2VtZW50O1xuICB2YXIgYmFzZVBsYWNlbWVudCA9IGdldEJhc2VQbGFjZW1lbnQocHJlZmVycmVkUGxhY2VtZW50KTtcbiAgdmFyIGlzQmFzZVBsYWNlbWVudCA9IGJhc2VQbGFjZW1lbnQgPT09IHByZWZlcnJlZFBsYWNlbWVudDtcbiAgdmFyIGZhbGxiYWNrUGxhY2VtZW50cyA9IHNwZWNpZmllZEZhbGxiYWNrUGxhY2VtZW50cyB8fCAoaXNCYXNlUGxhY2VtZW50IHx8ICFmbGlwVmFyaWF0aW9ucyA/IFtnZXRPcHBvc2l0ZVBsYWNlbWVudChwcmVmZXJyZWRQbGFjZW1lbnQpXSA6IGdldEV4cGFuZGVkRmFsbGJhY2tQbGFjZW1lbnRzKHByZWZlcnJlZFBsYWNlbWVudCkpO1xuICB2YXIgcGxhY2VtZW50cyA9IFtwcmVmZXJyZWRQbGFjZW1lbnRdLmNvbmNhdChmYWxsYmFja1BsYWNlbWVudHMpLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBwbGFjZW1lbnQpIHtcbiAgICByZXR1cm4gYWNjLmNvbmNhdChnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCkgPT09IGF1dG8gPyBjb21wdXRlQXV0b1BsYWNlbWVudChzdGF0ZSwge1xuICAgICAgcGxhY2VtZW50OiBwbGFjZW1lbnQsXG4gICAgICBib3VuZGFyeTogYm91bmRhcnksXG4gICAgICByb290Qm91bmRhcnk6IHJvb3RCb3VuZGFyeSxcbiAgICAgIHBhZGRpbmc6IHBhZGRpbmcsXG4gICAgICBmbGlwVmFyaWF0aW9uczogZmxpcFZhcmlhdGlvbnMsXG4gICAgICBhbGxvd2VkQXV0b1BsYWNlbWVudHM6IGFsbG93ZWRBdXRvUGxhY2VtZW50c1xuICAgIH0pIDogcGxhY2VtZW50KTtcbiAgfSwgW10pO1xuICB2YXIgcmVmZXJlbmNlUmVjdCA9IHN0YXRlLnJlY3RzLnJlZmVyZW5jZTtcbiAgdmFyIHBvcHBlclJlY3QgPSBzdGF0ZS5yZWN0cy5wb3BwZXI7XG4gIHZhciBjaGVja3NNYXAgPSBuZXcgTWFwKCk7XG4gIHZhciBtYWtlRmFsbGJhY2tDaGVja3MgPSB0cnVlO1xuICB2YXIgZmlyc3RGaXR0aW5nUGxhY2VtZW50ID0gcGxhY2VtZW50c1swXTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHBsYWNlbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgcGxhY2VtZW50ID0gcGxhY2VtZW50c1tpXTtcblxuICAgIHZhciBfYmFzZVBsYWNlbWVudCA9IGdldEJhc2VQbGFjZW1lbnQocGxhY2VtZW50KTtcblxuICAgIHZhciBpc1N0YXJ0VmFyaWF0aW9uID0gZ2V0VmFyaWF0aW9uKHBsYWNlbWVudCkgPT09IHN0YXJ0O1xuICAgIHZhciBpc1ZlcnRpY2FsID0gW3RvcCwgYm90dG9tXS5pbmRleE9mKF9iYXNlUGxhY2VtZW50KSA+PSAwO1xuICAgIHZhciBsZW4gPSBpc1ZlcnRpY2FsID8gJ3dpZHRoJyA6ICdoZWlnaHQnO1xuICAgIHZhciBvdmVyZmxvdyA9IGRldGVjdE92ZXJmbG93KHN0YXRlLCB7XG4gICAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudCxcbiAgICAgIGJvdW5kYXJ5OiBib3VuZGFyeSxcbiAgICAgIHJvb3RCb3VuZGFyeTogcm9vdEJvdW5kYXJ5LFxuICAgICAgYWx0Qm91bmRhcnk6IGFsdEJvdW5kYXJ5LFxuICAgICAgcGFkZGluZzogcGFkZGluZ1xuICAgIH0pO1xuICAgIHZhciBtYWluVmFyaWF0aW9uU2lkZSA9IGlzVmVydGljYWwgPyBpc1N0YXJ0VmFyaWF0aW9uID8gcmlnaHQgOiBsZWZ0IDogaXNTdGFydFZhcmlhdGlvbiA/IGJvdHRvbSA6IHRvcDtcblxuICAgIGlmIChyZWZlcmVuY2VSZWN0W2xlbl0gPiBwb3BwZXJSZWN0W2xlbl0pIHtcbiAgICAgIG1haW5WYXJpYXRpb25TaWRlID0gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQobWFpblZhcmlhdGlvblNpZGUpO1xuICAgIH1cblxuICAgIHZhciBhbHRWYXJpYXRpb25TaWRlID0gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQobWFpblZhcmlhdGlvblNpZGUpO1xuICAgIHZhciBjaGVja3MgPSBbXTtcblxuICAgIGlmIChjaGVja01haW5BeGlzKSB7XG4gICAgICBjaGVja3MucHVzaChvdmVyZmxvd1tfYmFzZVBsYWNlbWVudF0gPD0gMCk7XG4gICAgfVxuXG4gICAgaWYgKGNoZWNrQWx0QXhpcykge1xuICAgICAgY2hlY2tzLnB1c2gob3ZlcmZsb3dbbWFpblZhcmlhdGlvblNpZGVdIDw9IDAsIG92ZXJmbG93W2FsdFZhcmlhdGlvblNpZGVdIDw9IDApO1xuICAgIH1cblxuICAgIGlmIChjaGVja3MuZXZlcnkoZnVuY3Rpb24gKGNoZWNrKSB7XG4gICAgICByZXR1cm4gY2hlY2s7XG4gICAgfSkpIHtcbiAgICAgIGZpcnN0Rml0dGluZ1BsYWNlbWVudCA9IHBsYWNlbWVudDtcbiAgICAgIG1ha2VGYWxsYmFja0NoZWNrcyA9IGZhbHNlO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgY2hlY2tzTWFwLnNldChwbGFjZW1lbnQsIGNoZWNrcyk7XG4gIH1cblxuICBpZiAobWFrZUZhbGxiYWNrQ2hlY2tzKSB7XG4gICAgLy8gYDJgIG1heSBiZSBkZXNpcmVkIGluIHNvbWUgY2FzZXMg4oCTIHJlc2VhcmNoIGxhdGVyXG4gICAgdmFyIG51bWJlck9mQ2hlY2tzID0gZmxpcFZhcmlhdGlvbnMgPyAzIDogMTtcblxuICAgIHZhciBfbG9vcCA9IGZ1bmN0aW9uIF9sb29wKF9pKSB7XG4gICAgICB2YXIgZml0dGluZ1BsYWNlbWVudCA9IHBsYWNlbWVudHMuZmluZChmdW5jdGlvbiAocGxhY2VtZW50KSB7XG4gICAgICAgIHZhciBjaGVja3MgPSBjaGVja3NNYXAuZ2V0KHBsYWNlbWVudCk7XG5cbiAgICAgICAgaWYgKGNoZWNrcykge1xuICAgICAgICAgIHJldHVybiBjaGVja3Muc2xpY2UoMCwgX2kpLmV2ZXJ5KGZ1bmN0aW9uIChjaGVjaykge1xuICAgICAgICAgICAgcmV0dXJuIGNoZWNrO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgaWYgKGZpdHRpbmdQbGFjZW1lbnQpIHtcbiAgICAgICAgZmlyc3RGaXR0aW5nUGxhY2VtZW50ID0gZml0dGluZ1BsYWNlbWVudDtcbiAgICAgICAgcmV0dXJuIFwiYnJlYWtcIjtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZm9yICh2YXIgX2kgPSBudW1iZXJPZkNoZWNrczsgX2kgPiAwOyBfaS0tKSB7XG4gICAgICB2YXIgX3JldCA9IF9sb29wKF9pKTtcblxuICAgICAgaWYgKF9yZXQgPT09IFwiYnJlYWtcIikgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgaWYgKHN0YXRlLnBsYWNlbWVudCAhPT0gZmlyc3RGaXR0aW5nUGxhY2VtZW50KSB7XG4gICAgc3RhdGUubW9kaWZpZXJzRGF0YVtuYW1lXS5fc2tpcCA9IHRydWU7XG4gICAgc3RhdGUucGxhY2VtZW50ID0gZmlyc3RGaXR0aW5nUGxhY2VtZW50O1xuICAgIHN0YXRlLnJlc2V0ID0gdHJ1ZTtcbiAgfVxufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnZmxpcCcsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnbWFpbicsXG4gIGZuOiBmbGlwLFxuICByZXF1aXJlc0lmRXhpc3RzOiBbJ29mZnNldCddLFxuICBkYXRhOiB7XG4gICAgX3NraXA6IGZhbHNlXG4gIH1cbn07IiwiaW1wb3J0IHsgdG9wLCBib3R0b20sIGxlZnQsIHJpZ2h0IH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5pbXBvcnQgZGV0ZWN0T3ZlcmZsb3cgZnJvbSBcIi4uL3V0aWxzL2RldGVjdE92ZXJmbG93LmpzXCI7XG5cbmZ1bmN0aW9uIGdldFNpZGVPZmZzZXRzKG92ZXJmbG93LCByZWN0LCBwcmV2ZW50ZWRPZmZzZXRzKSB7XG4gIGlmIChwcmV2ZW50ZWRPZmZzZXRzID09PSB2b2lkIDApIHtcbiAgICBwcmV2ZW50ZWRPZmZzZXRzID0ge1xuICAgICAgeDogMCxcbiAgICAgIHk6IDBcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB0b3A6IG92ZXJmbG93LnRvcCAtIHJlY3QuaGVpZ2h0IC0gcHJldmVudGVkT2Zmc2V0cy55LFxuICAgIHJpZ2h0OiBvdmVyZmxvdy5yaWdodCAtIHJlY3Qud2lkdGggKyBwcmV2ZW50ZWRPZmZzZXRzLngsXG4gICAgYm90dG9tOiBvdmVyZmxvdy5ib3R0b20gLSByZWN0LmhlaWdodCArIHByZXZlbnRlZE9mZnNldHMueSxcbiAgICBsZWZ0OiBvdmVyZmxvdy5sZWZ0IC0gcmVjdC53aWR0aCAtIHByZXZlbnRlZE9mZnNldHMueFxuICB9O1xufVxuXG5mdW5jdGlvbiBpc0FueVNpZGVGdWxseUNsaXBwZWQob3ZlcmZsb3cpIHtcbiAgcmV0dXJuIFt0b3AsIHJpZ2h0LCBib3R0b20sIGxlZnRdLnNvbWUoZnVuY3Rpb24gKHNpZGUpIHtcbiAgICByZXR1cm4gb3ZlcmZsb3dbc2lkZV0gPj0gMDtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGhpZGUoX3JlZikge1xuICB2YXIgc3RhdGUgPSBfcmVmLnN0YXRlLFxuICAgICAgbmFtZSA9IF9yZWYubmFtZTtcbiAgdmFyIHJlZmVyZW5jZVJlY3QgPSBzdGF0ZS5yZWN0cy5yZWZlcmVuY2U7XG4gIHZhciBwb3BwZXJSZWN0ID0gc3RhdGUucmVjdHMucG9wcGVyO1xuICB2YXIgcHJldmVudGVkT2Zmc2V0cyA9IHN0YXRlLm1vZGlmaWVyc0RhdGEucHJldmVudE92ZXJmbG93O1xuICB2YXIgcmVmZXJlbmNlT3ZlcmZsb3cgPSBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwge1xuICAgIGVsZW1lbnRDb250ZXh0OiAncmVmZXJlbmNlJ1xuICB9KTtcbiAgdmFyIHBvcHBlckFsdE92ZXJmbG93ID0gZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIHtcbiAgICBhbHRCb3VuZGFyeTogdHJ1ZVxuICB9KTtcbiAgdmFyIHJlZmVyZW5jZUNsaXBwaW5nT2Zmc2V0cyA9IGdldFNpZGVPZmZzZXRzKHJlZmVyZW5jZU92ZXJmbG93LCByZWZlcmVuY2VSZWN0KTtcbiAgdmFyIHBvcHBlckVzY2FwZU9mZnNldHMgPSBnZXRTaWRlT2Zmc2V0cyhwb3BwZXJBbHRPdmVyZmxvdywgcG9wcGVyUmVjdCwgcHJldmVudGVkT2Zmc2V0cyk7XG4gIHZhciBpc1JlZmVyZW5jZUhpZGRlbiA9IGlzQW55U2lkZUZ1bGx5Q2xpcHBlZChyZWZlcmVuY2VDbGlwcGluZ09mZnNldHMpO1xuICB2YXIgaGFzUG9wcGVyRXNjYXBlZCA9IGlzQW55U2lkZUZ1bGx5Q2xpcHBlZChwb3BwZXJFc2NhcGVPZmZzZXRzKTtcbiAgc3RhdGUubW9kaWZpZXJzRGF0YVtuYW1lXSA9IHtcbiAgICByZWZlcmVuY2VDbGlwcGluZ09mZnNldHM6IHJlZmVyZW5jZUNsaXBwaW5nT2Zmc2V0cyxcbiAgICBwb3BwZXJFc2NhcGVPZmZzZXRzOiBwb3BwZXJFc2NhcGVPZmZzZXRzLFxuICAgIGlzUmVmZXJlbmNlSGlkZGVuOiBpc1JlZmVyZW5jZUhpZGRlbixcbiAgICBoYXNQb3BwZXJFc2NhcGVkOiBoYXNQb3BwZXJFc2NhcGVkXG4gIH07XG4gIHN0YXRlLmF0dHJpYnV0ZXMucG9wcGVyID0gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUuYXR0cmlidXRlcy5wb3BwZXIsIHtcbiAgICAnZGF0YS1wb3BwZXItcmVmZXJlbmNlLWhpZGRlbic6IGlzUmVmZXJlbmNlSGlkZGVuLFxuICAgICdkYXRhLXBvcHBlci1lc2NhcGVkJzogaGFzUG9wcGVyRXNjYXBlZFxuICB9KTtcbn0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ2hpZGUnLFxuICBlbmFibGVkOiB0cnVlLFxuICBwaGFzZTogJ21haW4nLFxuICByZXF1aXJlc0lmRXhpc3RzOiBbJ3ByZXZlbnRPdmVyZmxvdyddLFxuICBmbjogaGlkZVxufTsiLCJleHBvcnQgeyBkZWZhdWx0IGFzIGFwcGx5U3R5bGVzIH0gZnJvbSBcIi4vYXBwbHlTdHlsZXMuanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgYXJyb3cgfSBmcm9tIFwiLi9hcnJvdy5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBjb21wdXRlU3R5bGVzIH0gZnJvbSBcIi4vY29tcHV0ZVN0eWxlcy5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBldmVudExpc3RlbmVycyB9IGZyb20gXCIuL2V2ZW50TGlzdGVuZXJzLmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGZsaXAgfSBmcm9tIFwiLi9mbGlwLmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGhpZGUgfSBmcm9tIFwiLi9oaWRlLmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG9mZnNldCB9IGZyb20gXCIuL29mZnNldC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBwb3BwZXJPZmZzZXRzIH0gZnJvbSBcIi4vcG9wcGVyT2Zmc2V0cy5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBwcmV2ZW50T3ZlcmZsb3cgfSBmcm9tIFwiLi9wcmV2ZW50T3ZlcmZsb3cuanNcIjsiLCJpbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IHsgdG9wLCBsZWZ0LCByaWdodCwgcGxhY2VtZW50cyB9IGZyb20gXCIuLi9lbnVtcy5qc1wiOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbmV4cG9ydCBmdW5jdGlvbiBkaXN0YW5jZUFuZFNraWRkaW5nVG9YWShwbGFjZW1lbnQsIHJlY3RzLCBvZmZzZXQpIHtcbiAgdmFyIGJhc2VQbGFjZW1lbnQgPSBnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCk7XG4gIHZhciBpbnZlcnREaXN0YW5jZSA9IFtsZWZ0LCB0b3BdLmluZGV4T2YoYmFzZVBsYWNlbWVudCkgPj0gMCA/IC0xIDogMTtcblxuICB2YXIgX3JlZiA9IHR5cGVvZiBvZmZzZXQgPT09ICdmdW5jdGlvbicgPyBvZmZzZXQoT2JqZWN0LmFzc2lnbih7fSwgcmVjdHMsIHtcbiAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudFxuICB9KSkgOiBvZmZzZXQsXG4gICAgICBza2lkZGluZyA9IF9yZWZbMF0sXG4gICAgICBkaXN0YW5jZSA9IF9yZWZbMV07XG5cbiAgc2tpZGRpbmcgPSBza2lkZGluZyB8fCAwO1xuICBkaXN0YW5jZSA9IChkaXN0YW5jZSB8fCAwKSAqIGludmVydERpc3RhbmNlO1xuICByZXR1cm4gW2xlZnQsIHJpZ2h0XS5pbmRleE9mKGJhc2VQbGFjZW1lbnQpID49IDAgPyB7XG4gICAgeDogZGlzdGFuY2UsXG4gICAgeTogc2tpZGRpbmdcbiAgfSA6IHtcbiAgICB4OiBza2lkZGluZyxcbiAgICB5OiBkaXN0YW5jZVxuICB9O1xufVxuXG5mdW5jdGlvbiBvZmZzZXQoX3JlZjIpIHtcbiAgdmFyIHN0YXRlID0gX3JlZjIuc3RhdGUsXG4gICAgICBvcHRpb25zID0gX3JlZjIub3B0aW9ucyxcbiAgICAgIG5hbWUgPSBfcmVmMi5uYW1lO1xuICB2YXIgX29wdGlvbnMkb2Zmc2V0ID0gb3B0aW9ucy5vZmZzZXQsXG4gICAgICBvZmZzZXQgPSBfb3B0aW9ucyRvZmZzZXQgPT09IHZvaWQgMCA/IFswLCAwXSA6IF9vcHRpb25zJG9mZnNldDtcbiAgdmFyIGRhdGEgPSBwbGFjZW1lbnRzLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBwbGFjZW1lbnQpIHtcbiAgICBhY2NbcGxhY2VtZW50XSA9IGRpc3RhbmNlQW5kU2tpZGRpbmdUb1hZKHBsYWNlbWVudCwgc3RhdGUucmVjdHMsIG9mZnNldCk7XG4gICAgcmV0dXJuIGFjYztcbiAgfSwge30pO1xuICB2YXIgX2RhdGEkc3RhdGUkcGxhY2VtZW50ID0gZGF0YVtzdGF0ZS5wbGFjZW1lbnRdLFxuICAgICAgeCA9IF9kYXRhJHN0YXRlJHBsYWNlbWVudC54LFxuICAgICAgeSA9IF9kYXRhJHN0YXRlJHBsYWNlbWVudC55O1xuXG4gIGlmIChzdGF0ZS5tb2RpZmllcnNEYXRhLnBvcHBlck9mZnNldHMgIT0gbnVsbCkge1xuICAgIHN0YXRlLm1vZGlmaWVyc0RhdGEucG9wcGVyT2Zmc2V0cy54ICs9IHg7XG4gICAgc3RhdGUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzLnkgKz0geTtcbiAgfVxuXG4gIHN0YXRlLm1vZGlmaWVyc0RhdGFbbmFtZV0gPSBkYXRhO1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnb2Zmc2V0JyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICdtYWluJyxcbiAgcmVxdWlyZXM6IFsncG9wcGVyT2Zmc2V0cyddLFxuICBmbjogb2Zmc2V0XG59OyIsImltcG9ydCBjb21wdXRlT2Zmc2V0cyBmcm9tIFwiLi4vdXRpbHMvY29tcHV0ZU9mZnNldHMuanNcIjtcblxuZnVuY3Rpb24gcG9wcGVyT2Zmc2V0cyhfcmVmKSB7XG4gIHZhciBzdGF0ZSA9IF9yZWYuc3RhdGUsXG4gICAgICBuYW1lID0gX3JlZi5uYW1lO1xuICAvLyBPZmZzZXRzIGFyZSB0aGUgYWN0dWFsIHBvc2l0aW9uIHRoZSBwb3BwZXIgbmVlZHMgdG8gaGF2ZSB0byBiZVxuICAvLyBwcm9wZXJseSBwb3NpdGlvbmVkIG5lYXIgaXRzIHJlZmVyZW5jZSBlbGVtZW50XG4gIC8vIFRoaXMgaXMgdGhlIG1vc3QgYmFzaWMgcGxhY2VtZW50LCBhbmQgd2lsbCBiZSBhZGp1c3RlZCBieVxuICAvLyB0aGUgbW9kaWZpZXJzIGluIHRoZSBuZXh0IHN0ZXBcbiAgc3RhdGUubW9kaWZpZXJzRGF0YVtuYW1lXSA9IGNvbXB1dGVPZmZzZXRzKHtcbiAgICByZWZlcmVuY2U6IHN0YXRlLnJlY3RzLnJlZmVyZW5jZSxcbiAgICBlbGVtZW50OiBzdGF0ZS5yZWN0cy5wb3BwZXIsXG4gICAgc3RyYXRlZ3k6ICdhYnNvbHV0ZScsXG4gICAgcGxhY2VtZW50OiBzdGF0ZS5wbGFjZW1lbnRcbiAgfSk7XG59IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdwb3BwZXJPZmZzZXRzJyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICdyZWFkJyxcbiAgZm46IHBvcHBlck9mZnNldHMsXG4gIGRhdGE6IHt9XG59OyIsImltcG9ydCB7IHRvcCwgbGVmdCwgcmlnaHQsIGJvdHRvbSwgc3RhcnQgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCBnZXRCYXNlUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRCYXNlUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQuanNcIjtcbmltcG9ydCBnZXRBbHRBeGlzIGZyb20gXCIuLi91dGlscy9nZXRBbHRBeGlzLmpzXCI7XG5pbXBvcnQgeyB3aXRoaW4sIHdpdGhpbk1heENsYW1wIH0gZnJvbSBcIi4uL3V0aWxzL3dpdGhpbi5qc1wiO1xuaW1wb3J0IGdldExheW91dFJlY3QgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRMYXlvdXRSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0T2Zmc2V0UGFyZW50IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0T2Zmc2V0UGFyZW50LmpzXCI7XG5pbXBvcnQgZGV0ZWN0T3ZlcmZsb3cgZnJvbSBcIi4uL3V0aWxzL2RldGVjdE92ZXJmbG93LmpzXCI7XG5pbXBvcnQgZ2V0VmFyaWF0aW9uIGZyb20gXCIuLi91dGlscy9nZXRWYXJpYXRpb24uanNcIjtcbmltcG9ydCBnZXRGcmVzaFNpZGVPYmplY3QgZnJvbSBcIi4uL3V0aWxzL2dldEZyZXNoU2lkZU9iamVjdC5qc1wiO1xuaW1wb3J0IHsgbWluIGFzIG1hdGhNaW4sIG1heCBhcyBtYXRoTWF4IH0gZnJvbSBcIi4uL3V0aWxzL21hdGguanNcIjtcblxuZnVuY3Rpb24gcHJldmVudE92ZXJmbG93KF9yZWYpIHtcbiAgdmFyIHN0YXRlID0gX3JlZi5zdGF0ZSxcbiAgICAgIG9wdGlvbnMgPSBfcmVmLm9wdGlvbnMsXG4gICAgICBuYW1lID0gX3JlZi5uYW1lO1xuICB2YXIgX29wdGlvbnMkbWFpbkF4aXMgPSBvcHRpb25zLm1haW5BeGlzLFxuICAgICAgY2hlY2tNYWluQXhpcyA9IF9vcHRpb25zJG1haW5BeGlzID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkbWFpbkF4aXMsXG4gICAgICBfb3B0aW9ucyRhbHRBeGlzID0gb3B0aW9ucy5hbHRBeGlzLFxuICAgICAgY2hlY2tBbHRBeGlzID0gX29wdGlvbnMkYWx0QXhpcyA9PT0gdm9pZCAwID8gZmFsc2UgOiBfb3B0aW9ucyRhbHRBeGlzLFxuICAgICAgYm91bmRhcnkgPSBvcHRpb25zLmJvdW5kYXJ5LFxuICAgICAgcm9vdEJvdW5kYXJ5ID0gb3B0aW9ucy5yb290Qm91bmRhcnksXG4gICAgICBhbHRCb3VuZGFyeSA9IG9wdGlvbnMuYWx0Qm91bmRhcnksXG4gICAgICBwYWRkaW5nID0gb3B0aW9ucy5wYWRkaW5nLFxuICAgICAgX29wdGlvbnMkdGV0aGVyID0gb3B0aW9ucy50ZXRoZXIsXG4gICAgICB0ZXRoZXIgPSBfb3B0aW9ucyR0ZXRoZXIgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyR0ZXRoZXIsXG4gICAgICBfb3B0aW9ucyR0ZXRoZXJPZmZzZXQgPSBvcHRpb25zLnRldGhlck9mZnNldCxcbiAgICAgIHRldGhlck9mZnNldCA9IF9vcHRpb25zJHRldGhlck9mZnNldCA9PT0gdm9pZCAwID8gMCA6IF9vcHRpb25zJHRldGhlck9mZnNldDtcbiAgdmFyIG92ZXJmbG93ID0gZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIHtcbiAgICBib3VuZGFyeTogYm91bmRhcnksXG4gICAgcm9vdEJvdW5kYXJ5OiByb290Qm91bmRhcnksXG4gICAgcGFkZGluZzogcGFkZGluZyxcbiAgICBhbHRCb3VuZGFyeTogYWx0Qm91bmRhcnlcbiAgfSk7XG4gIHZhciBiYXNlUGxhY2VtZW50ID0gZ2V0QmFzZVBsYWNlbWVudChzdGF0ZS5wbGFjZW1lbnQpO1xuICB2YXIgdmFyaWF0aW9uID0gZ2V0VmFyaWF0aW9uKHN0YXRlLnBsYWNlbWVudCk7XG4gIHZhciBpc0Jhc2VQbGFjZW1lbnQgPSAhdmFyaWF0aW9uO1xuICB2YXIgbWFpbkF4aXMgPSBnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQoYmFzZVBsYWNlbWVudCk7XG4gIHZhciBhbHRBeGlzID0gZ2V0QWx0QXhpcyhtYWluQXhpcyk7XG4gIHZhciBwb3BwZXJPZmZzZXRzID0gc3RhdGUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzO1xuICB2YXIgcmVmZXJlbmNlUmVjdCA9IHN0YXRlLnJlY3RzLnJlZmVyZW5jZTtcbiAgdmFyIHBvcHBlclJlY3QgPSBzdGF0ZS5yZWN0cy5wb3BwZXI7XG4gIHZhciB0ZXRoZXJPZmZzZXRWYWx1ZSA9IHR5cGVvZiB0ZXRoZXJPZmZzZXQgPT09ICdmdW5jdGlvbicgPyB0ZXRoZXJPZmZzZXQoT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUucmVjdHMsIHtcbiAgICBwbGFjZW1lbnQ6IHN0YXRlLnBsYWNlbWVudFxuICB9KSkgOiB0ZXRoZXJPZmZzZXQ7XG4gIHZhciBub3JtYWxpemVkVGV0aGVyT2Zmc2V0VmFsdWUgPSB0eXBlb2YgdGV0aGVyT2Zmc2V0VmFsdWUgPT09ICdudW1iZXInID8ge1xuICAgIG1haW5BeGlzOiB0ZXRoZXJPZmZzZXRWYWx1ZSxcbiAgICBhbHRBeGlzOiB0ZXRoZXJPZmZzZXRWYWx1ZVxuICB9IDogT2JqZWN0LmFzc2lnbih7XG4gICAgbWFpbkF4aXM6IDAsXG4gICAgYWx0QXhpczogMFxuICB9LCB0ZXRoZXJPZmZzZXRWYWx1ZSk7XG4gIHZhciBvZmZzZXRNb2RpZmllclN0YXRlID0gc3RhdGUubW9kaWZpZXJzRGF0YS5vZmZzZXQgPyBzdGF0ZS5tb2RpZmllcnNEYXRhLm9mZnNldFtzdGF0ZS5wbGFjZW1lbnRdIDogbnVsbDtcbiAgdmFyIGRhdGEgPSB7XG4gICAgeDogMCxcbiAgICB5OiAwXG4gIH07XG5cbiAgaWYgKCFwb3BwZXJPZmZzZXRzKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKGNoZWNrTWFpbkF4aXMpIHtcbiAgICB2YXIgX29mZnNldE1vZGlmaWVyU3RhdGUkO1xuXG4gICAgdmFyIG1haW5TaWRlID0gbWFpbkF4aXMgPT09ICd5JyA/IHRvcCA6IGxlZnQ7XG4gICAgdmFyIGFsdFNpZGUgPSBtYWluQXhpcyA9PT0gJ3knID8gYm90dG9tIDogcmlnaHQ7XG4gICAgdmFyIGxlbiA9IG1haW5BeGlzID09PSAneScgPyAnaGVpZ2h0JyA6ICd3aWR0aCc7XG4gICAgdmFyIG9mZnNldCA9IHBvcHBlck9mZnNldHNbbWFpbkF4aXNdO1xuICAgIHZhciBtaW4gPSBvZmZzZXQgKyBvdmVyZmxvd1ttYWluU2lkZV07XG4gICAgdmFyIG1heCA9IG9mZnNldCAtIG92ZXJmbG93W2FsdFNpZGVdO1xuICAgIHZhciBhZGRpdGl2ZSA9IHRldGhlciA/IC1wb3BwZXJSZWN0W2xlbl0gLyAyIDogMDtcbiAgICB2YXIgbWluTGVuID0gdmFyaWF0aW9uID09PSBzdGFydCA/IHJlZmVyZW5jZVJlY3RbbGVuXSA6IHBvcHBlclJlY3RbbGVuXTtcbiAgICB2YXIgbWF4TGVuID0gdmFyaWF0aW9uID09PSBzdGFydCA/IC1wb3BwZXJSZWN0W2xlbl0gOiAtcmVmZXJlbmNlUmVjdFtsZW5dOyAvLyBXZSBuZWVkIHRvIGluY2x1ZGUgdGhlIGFycm93IGluIHRoZSBjYWxjdWxhdGlvbiBzbyB0aGUgYXJyb3cgZG9lc24ndCBnb1xuICAgIC8vIG91dHNpZGUgdGhlIHJlZmVyZW5jZSBib3VuZHNcblxuICAgIHZhciBhcnJvd0VsZW1lbnQgPSBzdGF0ZS5lbGVtZW50cy5hcnJvdztcbiAgICB2YXIgYXJyb3dSZWN0ID0gdGV0aGVyICYmIGFycm93RWxlbWVudCA/IGdldExheW91dFJlY3QoYXJyb3dFbGVtZW50KSA6IHtcbiAgICAgIHdpZHRoOiAwLFxuICAgICAgaGVpZ2h0OiAwXG4gICAgfTtcbiAgICB2YXIgYXJyb3dQYWRkaW5nT2JqZWN0ID0gc3RhdGUubW9kaWZpZXJzRGF0YVsnYXJyb3cjcGVyc2lzdGVudCddID8gc3RhdGUubW9kaWZpZXJzRGF0YVsnYXJyb3cjcGVyc2lzdGVudCddLnBhZGRpbmcgOiBnZXRGcmVzaFNpZGVPYmplY3QoKTtcbiAgICB2YXIgYXJyb3dQYWRkaW5nTWluID0gYXJyb3dQYWRkaW5nT2JqZWN0W21haW5TaWRlXTtcbiAgICB2YXIgYXJyb3dQYWRkaW5nTWF4ID0gYXJyb3dQYWRkaW5nT2JqZWN0W2FsdFNpZGVdOyAvLyBJZiB0aGUgcmVmZXJlbmNlIGxlbmd0aCBpcyBzbWFsbGVyIHRoYW4gdGhlIGFycm93IGxlbmd0aCwgd2UgZG9uJ3Qgd2FudFxuICAgIC8vIHRvIGluY2x1ZGUgaXRzIGZ1bGwgc2l6ZSBpbiB0aGUgY2FsY3VsYXRpb24uIElmIHRoZSByZWZlcmVuY2UgaXMgc21hbGxcbiAgICAvLyBhbmQgbmVhciB0aGUgZWRnZSBvZiBhIGJvdW5kYXJ5LCB0aGUgcG9wcGVyIGNhbiBvdmVyZmxvdyBldmVuIGlmIHRoZVxuICAgIC8vIHJlZmVyZW5jZSBpcyBub3Qgb3ZlcmZsb3dpbmcgYXMgd2VsbCAoZS5nLiB2aXJ0dWFsIGVsZW1lbnRzIHdpdGggbm9cbiAgICAvLyB3aWR0aCBvciBoZWlnaHQpXG5cbiAgICB2YXIgYXJyb3dMZW4gPSB3aXRoaW4oMCwgcmVmZXJlbmNlUmVjdFtsZW5dLCBhcnJvd1JlY3RbbGVuXSk7XG4gICAgdmFyIG1pbk9mZnNldCA9IGlzQmFzZVBsYWNlbWVudCA/IHJlZmVyZW5jZVJlY3RbbGVuXSAvIDIgLSBhZGRpdGl2ZSAtIGFycm93TGVuIC0gYXJyb3dQYWRkaW5nTWluIC0gbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlLm1haW5BeGlzIDogbWluTGVuIC0gYXJyb3dMZW4gLSBhcnJvd1BhZGRpbmdNaW4gLSBub3JtYWxpemVkVGV0aGVyT2Zmc2V0VmFsdWUubWFpbkF4aXM7XG4gICAgdmFyIG1heE9mZnNldCA9IGlzQmFzZVBsYWNlbWVudCA/IC1yZWZlcmVuY2VSZWN0W2xlbl0gLyAyICsgYWRkaXRpdmUgKyBhcnJvd0xlbiArIGFycm93UGFkZGluZ01heCArIG5vcm1hbGl6ZWRUZXRoZXJPZmZzZXRWYWx1ZS5tYWluQXhpcyA6IG1heExlbiArIGFycm93TGVuICsgYXJyb3dQYWRkaW5nTWF4ICsgbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlLm1haW5BeGlzO1xuICAgIHZhciBhcnJvd09mZnNldFBhcmVudCA9IHN0YXRlLmVsZW1lbnRzLmFycm93ICYmIGdldE9mZnNldFBhcmVudChzdGF0ZS5lbGVtZW50cy5hcnJvdyk7XG4gICAgdmFyIGNsaWVudE9mZnNldCA9IGFycm93T2Zmc2V0UGFyZW50ID8gbWFpbkF4aXMgPT09ICd5JyA/IGFycm93T2Zmc2V0UGFyZW50LmNsaWVudFRvcCB8fCAwIDogYXJyb3dPZmZzZXRQYXJlbnQuY2xpZW50TGVmdCB8fCAwIDogMDtcbiAgICB2YXIgb2Zmc2V0TW9kaWZpZXJWYWx1ZSA9IChfb2Zmc2V0TW9kaWZpZXJTdGF0ZSQgPSBvZmZzZXRNb2RpZmllclN0YXRlID09IG51bGwgPyB2b2lkIDAgOiBvZmZzZXRNb2RpZmllclN0YXRlW21haW5BeGlzXSkgIT0gbnVsbCA/IF9vZmZzZXRNb2RpZmllclN0YXRlJCA6IDA7XG4gICAgdmFyIHRldGhlck1pbiA9IG9mZnNldCArIG1pbk9mZnNldCAtIG9mZnNldE1vZGlmaWVyVmFsdWUgLSBjbGllbnRPZmZzZXQ7XG4gICAgdmFyIHRldGhlck1heCA9IG9mZnNldCArIG1heE9mZnNldCAtIG9mZnNldE1vZGlmaWVyVmFsdWU7XG4gICAgdmFyIHByZXZlbnRlZE9mZnNldCA9IHdpdGhpbih0ZXRoZXIgPyBtYXRoTWluKG1pbiwgdGV0aGVyTWluKSA6IG1pbiwgb2Zmc2V0LCB0ZXRoZXIgPyBtYXRoTWF4KG1heCwgdGV0aGVyTWF4KSA6IG1heCk7XG4gICAgcG9wcGVyT2Zmc2V0c1ttYWluQXhpc10gPSBwcmV2ZW50ZWRPZmZzZXQ7XG4gICAgZGF0YVttYWluQXhpc10gPSBwcmV2ZW50ZWRPZmZzZXQgLSBvZmZzZXQ7XG4gIH1cblxuICBpZiAoY2hlY2tBbHRBeGlzKSB7XG4gICAgdmFyIF9vZmZzZXRNb2RpZmllclN0YXRlJDI7XG5cbiAgICB2YXIgX21haW5TaWRlID0gbWFpbkF4aXMgPT09ICd4JyA/IHRvcCA6IGxlZnQ7XG5cbiAgICB2YXIgX2FsdFNpZGUgPSBtYWluQXhpcyA9PT0gJ3gnID8gYm90dG9tIDogcmlnaHQ7XG5cbiAgICB2YXIgX29mZnNldCA9IHBvcHBlck9mZnNldHNbYWx0QXhpc107XG5cbiAgICB2YXIgX2xlbiA9IGFsdEF4aXMgPT09ICd5JyA/ICdoZWlnaHQnIDogJ3dpZHRoJztcblxuICAgIHZhciBfbWluID0gX29mZnNldCArIG92ZXJmbG93W19tYWluU2lkZV07XG5cbiAgICB2YXIgX21heCA9IF9vZmZzZXQgLSBvdmVyZmxvd1tfYWx0U2lkZV07XG5cbiAgICB2YXIgaXNPcmlnaW5TaWRlID0gW3RvcCwgbGVmdF0uaW5kZXhPZihiYXNlUGxhY2VtZW50KSAhPT0gLTE7XG5cbiAgICB2YXIgX29mZnNldE1vZGlmaWVyVmFsdWUgPSAoX29mZnNldE1vZGlmaWVyU3RhdGUkMiA9IG9mZnNldE1vZGlmaWVyU3RhdGUgPT0gbnVsbCA/IHZvaWQgMCA6IG9mZnNldE1vZGlmaWVyU3RhdGVbYWx0QXhpc10pICE9IG51bGwgPyBfb2Zmc2V0TW9kaWZpZXJTdGF0ZSQyIDogMDtcblxuICAgIHZhciBfdGV0aGVyTWluID0gaXNPcmlnaW5TaWRlID8gX21pbiA6IF9vZmZzZXQgLSByZWZlcmVuY2VSZWN0W19sZW5dIC0gcG9wcGVyUmVjdFtfbGVuXSAtIF9vZmZzZXRNb2RpZmllclZhbHVlICsgbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlLmFsdEF4aXM7XG5cbiAgICB2YXIgX3RldGhlck1heCA9IGlzT3JpZ2luU2lkZSA/IF9vZmZzZXQgKyByZWZlcmVuY2VSZWN0W19sZW5dICsgcG9wcGVyUmVjdFtfbGVuXSAtIF9vZmZzZXRNb2RpZmllclZhbHVlIC0gbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlLmFsdEF4aXMgOiBfbWF4O1xuXG4gICAgdmFyIF9wcmV2ZW50ZWRPZmZzZXQgPSB0ZXRoZXIgJiYgaXNPcmlnaW5TaWRlID8gd2l0aGluTWF4Q2xhbXAoX3RldGhlck1pbiwgX29mZnNldCwgX3RldGhlck1heCkgOiB3aXRoaW4odGV0aGVyID8gX3RldGhlck1pbiA6IF9taW4sIF9vZmZzZXQsIHRldGhlciA/IF90ZXRoZXJNYXggOiBfbWF4KTtcblxuICAgIHBvcHBlck9mZnNldHNbYWx0QXhpc10gPSBfcHJldmVudGVkT2Zmc2V0O1xuICAgIGRhdGFbYWx0QXhpc10gPSBfcHJldmVudGVkT2Zmc2V0IC0gX29mZnNldDtcbiAgfVxuXG4gIHN0YXRlLm1vZGlmaWVyc0RhdGFbbmFtZV0gPSBkYXRhO1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAncHJldmVudE92ZXJmbG93JyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICdtYWluJyxcbiAgZm46IHByZXZlbnRPdmVyZmxvdyxcbiAgcmVxdWlyZXNJZkV4aXN0czogWydvZmZzZXQnXVxufTsiLCJpbXBvcnQgeyBwb3BwZXJHZW5lcmF0b3IsIGRldGVjdE92ZXJmbG93IH0gZnJvbSBcIi4vY3JlYXRlUG9wcGVyLmpzXCI7XG5pbXBvcnQgZXZlbnRMaXN0ZW5lcnMgZnJvbSBcIi4vbW9kaWZpZXJzL2V2ZW50TGlzdGVuZXJzLmpzXCI7XG5pbXBvcnQgcG9wcGVyT2Zmc2V0cyBmcm9tIFwiLi9tb2RpZmllcnMvcG9wcGVyT2Zmc2V0cy5qc1wiO1xuaW1wb3J0IGNvbXB1dGVTdHlsZXMgZnJvbSBcIi4vbW9kaWZpZXJzL2NvbXB1dGVTdHlsZXMuanNcIjtcbmltcG9ydCBhcHBseVN0eWxlcyBmcm9tIFwiLi9tb2RpZmllcnMvYXBwbHlTdHlsZXMuanNcIjtcbnZhciBkZWZhdWx0TW9kaWZpZXJzID0gW2V2ZW50TGlzdGVuZXJzLCBwb3BwZXJPZmZzZXRzLCBjb21wdXRlU3R5bGVzLCBhcHBseVN0eWxlc107XG52YXIgY3JlYXRlUG9wcGVyID0gLyojX19QVVJFX18qL3BvcHBlckdlbmVyYXRvcih7XG4gIGRlZmF1bHRNb2RpZmllcnM6IGRlZmF1bHRNb2RpZmllcnNcbn0pOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbmV4cG9ydCB7IGNyZWF0ZVBvcHBlciwgcG9wcGVyR2VuZXJhdG9yLCBkZWZhdWx0TW9kaWZpZXJzLCBkZXRlY3RPdmVyZmxvdyB9OyIsImltcG9ydCB7IHBvcHBlckdlbmVyYXRvciwgZGV0ZWN0T3ZlcmZsb3cgfSBmcm9tIFwiLi9jcmVhdGVQb3BwZXIuanNcIjtcbmltcG9ydCBldmVudExpc3RlbmVycyBmcm9tIFwiLi9tb2RpZmllcnMvZXZlbnRMaXN0ZW5lcnMuanNcIjtcbmltcG9ydCBwb3BwZXJPZmZzZXRzIGZyb20gXCIuL21vZGlmaWVycy9wb3BwZXJPZmZzZXRzLmpzXCI7XG5pbXBvcnQgY29tcHV0ZVN0eWxlcyBmcm9tIFwiLi9tb2RpZmllcnMvY29tcHV0ZVN0eWxlcy5qc1wiO1xuaW1wb3J0IGFwcGx5U3R5bGVzIGZyb20gXCIuL21vZGlmaWVycy9hcHBseVN0eWxlcy5qc1wiO1xuaW1wb3J0IG9mZnNldCBmcm9tIFwiLi9tb2RpZmllcnMvb2Zmc2V0LmpzXCI7XG5pbXBvcnQgZmxpcCBmcm9tIFwiLi9tb2RpZmllcnMvZmxpcC5qc1wiO1xuaW1wb3J0IHByZXZlbnRPdmVyZmxvdyBmcm9tIFwiLi9tb2RpZmllcnMvcHJldmVudE92ZXJmbG93LmpzXCI7XG5pbXBvcnQgYXJyb3cgZnJvbSBcIi4vbW9kaWZpZXJzL2Fycm93LmpzXCI7XG5pbXBvcnQgaGlkZSBmcm9tIFwiLi9tb2RpZmllcnMvaGlkZS5qc1wiO1xudmFyIGRlZmF1bHRNb2RpZmllcnMgPSBbZXZlbnRMaXN0ZW5lcnMsIHBvcHBlck9mZnNldHMsIGNvbXB1dGVTdHlsZXMsIGFwcGx5U3R5bGVzLCBvZmZzZXQsIGZsaXAsIHByZXZlbnRPdmVyZmxvdywgYXJyb3csIGhpZGVdO1xudmFyIGNyZWF0ZVBvcHBlciA9IC8qI19fUFVSRV9fKi9wb3BwZXJHZW5lcmF0b3Ioe1xuICBkZWZhdWx0TW9kaWZpZXJzOiBkZWZhdWx0TW9kaWZpZXJzXG59KTsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5leHBvcnQgeyBjcmVhdGVQb3BwZXIsIHBvcHBlckdlbmVyYXRvciwgZGVmYXVsdE1vZGlmaWVycywgZGV0ZWN0T3ZlcmZsb3cgfTsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5leHBvcnQgeyBjcmVhdGVQb3BwZXIgYXMgY3JlYXRlUG9wcGVyTGl0ZSB9IGZyb20gXCIuL3BvcHBlci1saXRlLmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZXhwb3J0ICogZnJvbSBcIi4vbW9kaWZpZXJzL2luZGV4LmpzXCI7IiwiaW1wb3J0IGdldFZhcmlhdGlvbiBmcm9tIFwiLi9nZXRWYXJpYXRpb24uanNcIjtcbmltcG9ydCB7IHZhcmlhdGlvblBsYWNlbWVudHMsIGJhc2VQbGFjZW1lbnRzLCBwbGFjZW1lbnRzIGFzIGFsbFBsYWNlbWVudHMgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCBkZXRlY3RPdmVyZmxvdyBmcm9tIFwiLi9kZXRlY3RPdmVyZmxvdy5qc1wiO1xuaW1wb3J0IGdldEJhc2VQbGFjZW1lbnQgZnJvbSBcIi4vZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY29tcHV0ZUF1dG9QbGFjZW1lbnQoc3RhdGUsIG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuXG4gIHZhciBfb3B0aW9ucyA9IG9wdGlvbnMsXG4gICAgICBwbGFjZW1lbnQgPSBfb3B0aW9ucy5wbGFjZW1lbnQsXG4gICAgICBib3VuZGFyeSA9IF9vcHRpb25zLmJvdW5kYXJ5LFxuICAgICAgcm9vdEJvdW5kYXJ5ID0gX29wdGlvbnMucm9vdEJvdW5kYXJ5LFxuICAgICAgcGFkZGluZyA9IF9vcHRpb25zLnBhZGRpbmcsXG4gICAgICBmbGlwVmFyaWF0aW9ucyA9IF9vcHRpb25zLmZsaXBWYXJpYXRpb25zLFxuICAgICAgX29wdGlvbnMkYWxsb3dlZEF1dG9QID0gX29wdGlvbnMuYWxsb3dlZEF1dG9QbGFjZW1lbnRzLFxuICAgICAgYWxsb3dlZEF1dG9QbGFjZW1lbnRzID0gX29wdGlvbnMkYWxsb3dlZEF1dG9QID09PSB2b2lkIDAgPyBhbGxQbGFjZW1lbnRzIDogX29wdGlvbnMkYWxsb3dlZEF1dG9QO1xuICB2YXIgdmFyaWF0aW9uID0gZ2V0VmFyaWF0aW9uKHBsYWNlbWVudCk7XG4gIHZhciBwbGFjZW1lbnRzID0gdmFyaWF0aW9uID8gZmxpcFZhcmlhdGlvbnMgPyB2YXJpYXRpb25QbGFjZW1lbnRzIDogdmFyaWF0aW9uUGxhY2VtZW50cy5maWx0ZXIoZnVuY3Rpb24gKHBsYWNlbWVudCkge1xuICAgIHJldHVybiBnZXRWYXJpYXRpb24ocGxhY2VtZW50KSA9PT0gdmFyaWF0aW9uO1xuICB9KSA6IGJhc2VQbGFjZW1lbnRzO1xuICB2YXIgYWxsb3dlZFBsYWNlbWVudHMgPSBwbGFjZW1lbnRzLmZpbHRlcihmdW5jdGlvbiAocGxhY2VtZW50KSB7XG4gICAgcmV0dXJuIGFsbG93ZWRBdXRvUGxhY2VtZW50cy5pbmRleE9mKHBsYWNlbWVudCkgPj0gMDtcbiAgfSk7XG5cbiAgaWYgKGFsbG93ZWRQbGFjZW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgIGFsbG93ZWRQbGFjZW1lbnRzID0gcGxhY2VtZW50cztcblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoWydQb3BwZXI6IFRoZSBgYWxsb3dlZEF1dG9QbGFjZW1lbnRzYCBvcHRpb24gZGlkIG5vdCBhbGxvdyBhbnknLCAncGxhY2VtZW50cy4gRW5zdXJlIHRoZSBgcGxhY2VtZW50YCBvcHRpb24gbWF0Y2hlcyB0aGUgdmFyaWF0aW9uJywgJ29mIHRoZSBhbGxvd2VkIHBsYWNlbWVudHMuJywgJ0ZvciBleGFtcGxlLCBcImF1dG9cIiBjYW5ub3QgYmUgdXNlZCB0byBhbGxvdyBcImJvdHRvbS1zdGFydFwiLicsICdVc2UgXCJhdXRvLXN0YXJ0XCIgaW5zdGVhZC4nXS5qb2luKCcgJykpO1xuICAgIH1cbiAgfSAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS10eXBlXTogRmxvdyBzZWVtcyB0byBoYXZlIHByb2JsZW1zIHdpdGggdHdvIGFycmF5IHVuaW9ucy4uLlxuXG5cbiAgdmFyIG92ZXJmbG93cyA9IGFsbG93ZWRQbGFjZW1lbnRzLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBwbGFjZW1lbnQpIHtcbiAgICBhY2NbcGxhY2VtZW50XSA9IGRldGVjdE92ZXJmbG93KHN0YXRlLCB7XG4gICAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudCxcbiAgICAgIGJvdW5kYXJ5OiBib3VuZGFyeSxcbiAgICAgIHJvb3RCb3VuZGFyeTogcm9vdEJvdW5kYXJ5LFxuICAgICAgcGFkZGluZzogcGFkZGluZ1xuICAgIH0pW2dldEJhc2VQbGFjZW1lbnQocGxhY2VtZW50KV07XG4gICAgcmV0dXJuIGFjYztcbiAgfSwge30pO1xuICByZXR1cm4gT2JqZWN0LmtleXMob3ZlcmZsb3dzKS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgcmV0dXJuIG92ZXJmbG93c1thXSAtIG92ZXJmbG93c1tiXTtcbiAgfSk7XG59IiwiaW1wb3J0IGdldEJhc2VQbGFjZW1lbnQgZnJvbSBcIi4vZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IGdldFZhcmlhdGlvbiBmcm9tIFwiLi9nZXRWYXJpYXRpb24uanNcIjtcbmltcG9ydCBnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQgZnJvbSBcIi4vZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgeyB0b3AsIHJpZ2h0LCBib3R0b20sIGxlZnQsIHN0YXJ0LCBlbmQgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNvbXB1dGVPZmZzZXRzKF9yZWYpIHtcbiAgdmFyIHJlZmVyZW5jZSA9IF9yZWYucmVmZXJlbmNlLFxuICAgICAgZWxlbWVudCA9IF9yZWYuZWxlbWVudCxcbiAgICAgIHBsYWNlbWVudCA9IF9yZWYucGxhY2VtZW50O1xuICB2YXIgYmFzZVBsYWNlbWVudCA9IHBsYWNlbWVudCA/IGdldEJhc2VQbGFjZW1lbnQocGxhY2VtZW50KSA6IG51bGw7XG4gIHZhciB2YXJpYXRpb24gPSBwbGFjZW1lbnQgPyBnZXRWYXJpYXRpb24ocGxhY2VtZW50KSA6IG51bGw7XG4gIHZhciBjb21tb25YID0gcmVmZXJlbmNlLnggKyByZWZlcmVuY2Uud2lkdGggLyAyIC0gZWxlbWVudC53aWR0aCAvIDI7XG4gIHZhciBjb21tb25ZID0gcmVmZXJlbmNlLnkgKyByZWZlcmVuY2UuaGVpZ2h0IC8gMiAtIGVsZW1lbnQuaGVpZ2h0IC8gMjtcbiAgdmFyIG9mZnNldHM7XG5cbiAgc3dpdGNoIChiYXNlUGxhY2VtZW50KSB7XG4gICAgY2FzZSB0b3A6XG4gICAgICBvZmZzZXRzID0ge1xuICAgICAgICB4OiBjb21tb25YLFxuICAgICAgICB5OiByZWZlcmVuY2UueSAtIGVsZW1lbnQuaGVpZ2h0XG4gICAgICB9O1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlIGJvdHRvbTpcbiAgICAgIG9mZnNldHMgPSB7XG4gICAgICAgIHg6IGNvbW1vblgsXG4gICAgICAgIHk6IHJlZmVyZW5jZS55ICsgcmVmZXJlbmNlLmhlaWdodFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSByaWdodDpcbiAgICAgIG9mZnNldHMgPSB7XG4gICAgICAgIHg6IHJlZmVyZW5jZS54ICsgcmVmZXJlbmNlLndpZHRoLFxuICAgICAgICB5OiBjb21tb25ZXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlIGxlZnQ6XG4gICAgICBvZmZzZXRzID0ge1xuICAgICAgICB4OiByZWZlcmVuY2UueCAtIGVsZW1lbnQud2lkdGgsXG4gICAgICAgIHk6IGNvbW1vbllcbiAgICAgIH07XG4gICAgICBicmVhaztcblxuICAgIGRlZmF1bHQ6XG4gICAgICBvZmZzZXRzID0ge1xuICAgICAgICB4OiByZWZlcmVuY2UueCxcbiAgICAgICAgeTogcmVmZXJlbmNlLnlcbiAgICAgIH07XG4gIH1cblxuICB2YXIgbWFpbkF4aXMgPSBiYXNlUGxhY2VtZW50ID8gZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50KGJhc2VQbGFjZW1lbnQpIDogbnVsbDtcblxuICBpZiAobWFpbkF4aXMgIT0gbnVsbCkge1xuICAgIHZhciBsZW4gPSBtYWluQXhpcyA9PT0gJ3knID8gJ2hlaWdodCcgOiAnd2lkdGgnO1xuXG4gICAgc3dpdGNoICh2YXJpYXRpb24pIHtcbiAgICAgIGNhc2Ugc3RhcnQ6XG4gICAgICAgIG9mZnNldHNbbWFpbkF4aXNdID0gb2Zmc2V0c1ttYWluQXhpc10gLSAocmVmZXJlbmNlW2xlbl0gLyAyIC0gZWxlbWVudFtsZW5dIC8gMik7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIGVuZDpcbiAgICAgICAgb2Zmc2V0c1ttYWluQXhpc10gPSBvZmZzZXRzW21haW5BeGlzXSArIChyZWZlcmVuY2VbbGVuXSAvIDIgLSBlbGVtZW50W2xlbl0gLyAyKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG9mZnNldHM7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGVib3VuY2UoZm4pIHtcbiAgdmFyIHBlbmRpbmc7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCFwZW5kaW5nKSB7XG4gICAgICBwZW5kaW5nID0gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHtcbiAgICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcGVuZGluZyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICByZXNvbHZlKGZuKCkpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBwZW5kaW5nO1xuICB9O1xufSIsImltcG9ydCBnZXRDbGlwcGluZ1JlY3QgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRDbGlwcGluZ1JlY3QuanNcIjtcbmltcG9ydCBnZXREb2N1bWVudEVsZW1lbnQgZnJvbSBcIi4uL2RvbS11dGlscy9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRCb3VuZGluZ0NsaWVudFJlY3QuanNcIjtcbmltcG9ydCBjb21wdXRlT2Zmc2V0cyBmcm9tIFwiLi9jb21wdXRlT2Zmc2V0cy5qc1wiO1xuaW1wb3J0IHJlY3RUb0NsaWVudFJlY3QgZnJvbSBcIi4vcmVjdFRvQ2xpZW50UmVjdC5qc1wiO1xuaW1wb3J0IHsgY2xpcHBpbmdQYXJlbnRzLCByZWZlcmVuY2UsIHBvcHBlciwgYm90dG9tLCB0b3AsIHJpZ2h0LCBiYXNlUGxhY2VtZW50cywgdmlld3BvcnQgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCB7IGlzRWxlbWVudCB9IGZyb20gXCIuLi9kb20tdXRpbHMvaW5zdGFuY2VPZi5qc1wiO1xuaW1wb3J0IG1lcmdlUGFkZGluZ09iamVjdCBmcm9tIFwiLi9tZXJnZVBhZGRpbmdPYmplY3QuanNcIjtcbmltcG9ydCBleHBhbmRUb0hhc2hNYXAgZnJvbSBcIi4vZXhwYW5kVG9IYXNoTWFwLmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuXG4gIHZhciBfb3B0aW9ucyA9IG9wdGlvbnMsXG4gICAgICBfb3B0aW9ucyRwbGFjZW1lbnQgPSBfb3B0aW9ucy5wbGFjZW1lbnQsXG4gICAgICBwbGFjZW1lbnQgPSBfb3B0aW9ucyRwbGFjZW1lbnQgPT09IHZvaWQgMCA/IHN0YXRlLnBsYWNlbWVudCA6IF9vcHRpb25zJHBsYWNlbWVudCxcbiAgICAgIF9vcHRpb25zJHN0cmF0ZWd5ID0gX29wdGlvbnMuc3RyYXRlZ3ksXG4gICAgICBzdHJhdGVneSA9IF9vcHRpb25zJHN0cmF0ZWd5ID09PSB2b2lkIDAgPyBzdGF0ZS5zdHJhdGVneSA6IF9vcHRpb25zJHN0cmF0ZWd5LFxuICAgICAgX29wdGlvbnMkYm91bmRhcnkgPSBfb3B0aW9ucy5ib3VuZGFyeSxcbiAgICAgIGJvdW5kYXJ5ID0gX29wdGlvbnMkYm91bmRhcnkgPT09IHZvaWQgMCA/IGNsaXBwaW5nUGFyZW50cyA6IF9vcHRpb25zJGJvdW5kYXJ5LFxuICAgICAgX29wdGlvbnMkcm9vdEJvdW5kYXJ5ID0gX29wdGlvbnMucm9vdEJvdW5kYXJ5LFxuICAgICAgcm9vdEJvdW5kYXJ5ID0gX29wdGlvbnMkcm9vdEJvdW5kYXJ5ID09PSB2b2lkIDAgPyB2aWV3cG9ydCA6IF9vcHRpb25zJHJvb3RCb3VuZGFyeSxcbiAgICAgIF9vcHRpb25zJGVsZW1lbnRDb250ZSA9IF9vcHRpb25zLmVsZW1lbnRDb250ZXh0LFxuICAgICAgZWxlbWVudENvbnRleHQgPSBfb3B0aW9ucyRlbGVtZW50Q29udGUgPT09IHZvaWQgMCA/IHBvcHBlciA6IF9vcHRpb25zJGVsZW1lbnRDb250ZSxcbiAgICAgIF9vcHRpb25zJGFsdEJvdW5kYXJ5ID0gX29wdGlvbnMuYWx0Qm91bmRhcnksXG4gICAgICBhbHRCb3VuZGFyeSA9IF9vcHRpb25zJGFsdEJvdW5kYXJ5ID09PSB2b2lkIDAgPyBmYWxzZSA6IF9vcHRpb25zJGFsdEJvdW5kYXJ5LFxuICAgICAgX29wdGlvbnMkcGFkZGluZyA9IF9vcHRpb25zLnBhZGRpbmcsXG4gICAgICBwYWRkaW5nID0gX29wdGlvbnMkcGFkZGluZyA9PT0gdm9pZCAwID8gMCA6IF9vcHRpb25zJHBhZGRpbmc7XG4gIHZhciBwYWRkaW5nT2JqZWN0ID0gbWVyZ2VQYWRkaW5nT2JqZWN0KHR5cGVvZiBwYWRkaW5nICE9PSAnbnVtYmVyJyA/IHBhZGRpbmcgOiBleHBhbmRUb0hhc2hNYXAocGFkZGluZywgYmFzZVBsYWNlbWVudHMpKTtcbiAgdmFyIGFsdENvbnRleHQgPSBlbGVtZW50Q29udGV4dCA9PT0gcG9wcGVyID8gcmVmZXJlbmNlIDogcG9wcGVyO1xuICB2YXIgcG9wcGVyUmVjdCA9IHN0YXRlLnJlY3RzLnBvcHBlcjtcbiAgdmFyIGVsZW1lbnQgPSBzdGF0ZS5lbGVtZW50c1thbHRCb3VuZGFyeSA/IGFsdENvbnRleHQgOiBlbGVtZW50Q29udGV4dF07XG4gIHZhciBjbGlwcGluZ0NsaWVudFJlY3QgPSBnZXRDbGlwcGluZ1JlY3QoaXNFbGVtZW50KGVsZW1lbnQpID8gZWxlbWVudCA6IGVsZW1lbnQuY29udGV4dEVsZW1lbnQgfHwgZ2V0RG9jdW1lbnRFbGVtZW50KHN0YXRlLmVsZW1lbnRzLnBvcHBlciksIGJvdW5kYXJ5LCByb290Qm91bmRhcnksIHN0cmF0ZWd5KTtcbiAgdmFyIHJlZmVyZW5jZUNsaWVudFJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3Qoc3RhdGUuZWxlbWVudHMucmVmZXJlbmNlKTtcbiAgdmFyIHBvcHBlck9mZnNldHMgPSBjb21wdXRlT2Zmc2V0cyh7XG4gICAgcmVmZXJlbmNlOiByZWZlcmVuY2VDbGllbnRSZWN0LFxuICAgIGVsZW1lbnQ6IHBvcHBlclJlY3QsXG4gICAgc3RyYXRlZ3k6ICdhYnNvbHV0ZScsXG4gICAgcGxhY2VtZW50OiBwbGFjZW1lbnRcbiAgfSk7XG4gIHZhciBwb3BwZXJDbGllbnRSZWN0ID0gcmVjdFRvQ2xpZW50UmVjdChPYmplY3QuYXNzaWduKHt9LCBwb3BwZXJSZWN0LCBwb3BwZXJPZmZzZXRzKSk7XG4gIHZhciBlbGVtZW50Q2xpZW50UmVjdCA9IGVsZW1lbnRDb250ZXh0ID09PSBwb3BwZXIgPyBwb3BwZXJDbGllbnRSZWN0IDogcmVmZXJlbmNlQ2xpZW50UmVjdDsgLy8gcG9zaXRpdmUgPSBvdmVyZmxvd2luZyB0aGUgY2xpcHBpbmcgcmVjdFxuICAvLyAwIG9yIG5lZ2F0aXZlID0gd2l0aGluIHRoZSBjbGlwcGluZyByZWN0XG5cbiAgdmFyIG92ZXJmbG93T2Zmc2V0cyA9IHtcbiAgICB0b3A6IGNsaXBwaW5nQ2xpZW50UmVjdC50b3AgLSBlbGVtZW50Q2xpZW50UmVjdC50b3AgKyBwYWRkaW5nT2JqZWN0LnRvcCxcbiAgICBib3R0b206IGVsZW1lbnRDbGllbnRSZWN0LmJvdHRvbSAtIGNsaXBwaW5nQ2xpZW50UmVjdC5ib3R0b20gKyBwYWRkaW5nT2JqZWN0LmJvdHRvbSxcbiAgICBsZWZ0OiBjbGlwcGluZ0NsaWVudFJlY3QubGVmdCAtIGVsZW1lbnRDbGllbnRSZWN0LmxlZnQgKyBwYWRkaW5nT2JqZWN0LmxlZnQsXG4gICAgcmlnaHQ6IGVsZW1lbnRDbGllbnRSZWN0LnJpZ2h0IC0gY2xpcHBpbmdDbGllbnRSZWN0LnJpZ2h0ICsgcGFkZGluZ09iamVjdC5yaWdodFxuICB9O1xuICB2YXIgb2Zmc2V0RGF0YSA9IHN0YXRlLm1vZGlmaWVyc0RhdGEub2Zmc2V0OyAvLyBPZmZzZXRzIGNhbiBiZSBhcHBsaWVkIG9ubHkgdG8gdGhlIHBvcHBlciBlbGVtZW50XG5cbiAgaWYgKGVsZW1lbnRDb250ZXh0ID09PSBwb3BwZXIgJiYgb2Zmc2V0RGF0YSkge1xuICAgIHZhciBvZmZzZXQgPSBvZmZzZXREYXRhW3BsYWNlbWVudF07XG4gICAgT2JqZWN0LmtleXMob3ZlcmZsb3dPZmZzZXRzKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIHZhciBtdWx0aXBseSA9IFtyaWdodCwgYm90dG9tXS5pbmRleE9mKGtleSkgPj0gMCA/IDEgOiAtMTtcbiAgICAgIHZhciBheGlzID0gW3RvcCwgYm90dG9tXS5pbmRleE9mKGtleSkgPj0gMCA/ICd5JyA6ICd4JztcbiAgICAgIG92ZXJmbG93T2Zmc2V0c1trZXldICs9IG9mZnNldFtheGlzXSAqIG11bHRpcGx5O1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIG92ZXJmbG93T2Zmc2V0cztcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBleHBhbmRUb0hhc2hNYXAodmFsdWUsIGtleXMpIHtcbiAgcmV0dXJuIGtleXMucmVkdWNlKGZ1bmN0aW9uIChoYXNoTWFwLCBrZXkpIHtcbiAgICBoYXNoTWFwW2tleV0gPSB2YWx1ZTtcbiAgICByZXR1cm4gaGFzaE1hcDtcbiAgfSwge30pO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGZvcm1hdChzdHIpIHtcbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiA+IDEgPyBfbGVuIC0gMSA6IDApLCBfa2V5ID0gMTsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgIGFyZ3NbX2tleSAtIDFdID0gYXJndW1lbnRzW19rZXldO1xuICB9XG5cbiAgcmV0dXJuIFtdLmNvbmNhdChhcmdzKS5yZWR1Y2UoZnVuY3Rpb24gKHAsIGMpIHtcbiAgICByZXR1cm4gcC5yZXBsYWNlKC8lcy8sIGMpO1xuICB9LCBzdHIpO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldEFsdEF4aXMoYXhpcykge1xuICByZXR1cm4gYXhpcyA9PT0gJ3gnID8gJ3knIDogJ3gnO1xufSIsImltcG9ydCB7IGF1dG8gfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldEJhc2VQbGFjZW1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQuc3BsaXQoJy0nKVswXTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRGcmVzaFNpZGVPYmplY3QoKSB7XG4gIHJldHVybiB7XG4gICAgdG9wOiAwLFxuICAgIHJpZ2h0OiAwLFxuICAgIGJvdHRvbTogMCxcbiAgICBsZWZ0OiAwXG4gIH07XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50KHBsYWNlbWVudCkge1xuICByZXR1cm4gWyd0b3AnLCAnYm90dG9tJ10uaW5kZXhPZihwbGFjZW1lbnQpID49IDAgPyAneCcgOiAneSc7XG59IiwidmFyIGhhc2ggPSB7XG4gIGxlZnQ6ICdyaWdodCcsXG4gIHJpZ2h0OiAnbGVmdCcsXG4gIGJvdHRvbTogJ3RvcCcsXG4gIHRvcDogJ2JvdHRvbSdcbn07XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRPcHBvc2l0ZVBsYWNlbWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5yZXBsYWNlKC9sZWZ0fHJpZ2h0fGJvdHRvbXx0b3AvZywgZnVuY3Rpb24gKG1hdGNoZWQpIHtcbiAgICByZXR1cm4gaGFzaFttYXRjaGVkXTtcbiAgfSk7XG59IiwidmFyIGhhc2ggPSB7XG4gIHN0YXJ0OiAnZW5kJyxcbiAgZW5kOiAnc3RhcnQnXG59O1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0T3Bwb3NpdGVWYXJpYXRpb25QbGFjZW1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQucmVwbGFjZSgvc3RhcnR8ZW5kL2csIGZ1bmN0aW9uIChtYXRjaGVkKSB7XG4gICAgcmV0dXJuIGhhc2hbbWF0Y2hlZF07XG4gIH0pO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFZhcmlhdGlvbihwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5zcGxpdCgnLScpWzFdO1xufSIsImV4cG9ydCB2YXIgbWF4ID0gTWF0aC5tYXg7XG5leHBvcnQgdmFyIG1pbiA9IE1hdGgubWluO1xuZXhwb3J0IHZhciByb3VuZCA9IE1hdGgucm91bmQ7IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbWVyZ2VCeU5hbWUobW9kaWZpZXJzKSB7XG4gIHZhciBtZXJnZWQgPSBtb2RpZmllcnMucmVkdWNlKGZ1bmN0aW9uIChtZXJnZWQsIGN1cnJlbnQpIHtcbiAgICB2YXIgZXhpc3RpbmcgPSBtZXJnZWRbY3VycmVudC5uYW1lXTtcbiAgICBtZXJnZWRbY3VycmVudC5uYW1lXSA9IGV4aXN0aW5nID8gT2JqZWN0LmFzc2lnbih7fSwgZXhpc3RpbmcsIGN1cnJlbnQsIHtcbiAgICAgIG9wdGlvbnM6IE9iamVjdC5hc3NpZ24oe30sIGV4aXN0aW5nLm9wdGlvbnMsIGN1cnJlbnQub3B0aW9ucyksXG4gICAgICBkYXRhOiBPYmplY3QuYXNzaWduKHt9LCBleGlzdGluZy5kYXRhLCBjdXJyZW50LmRhdGEpXG4gICAgfSkgOiBjdXJyZW50O1xuICAgIHJldHVybiBtZXJnZWQ7XG4gIH0sIHt9KTsgLy8gSUUxMSBkb2VzIG5vdCBzdXBwb3J0IE9iamVjdC52YWx1ZXNcblxuICByZXR1cm4gT2JqZWN0LmtleXMobWVyZ2VkKS5tYXAoZnVuY3Rpb24gKGtleSkge1xuICAgIHJldHVybiBtZXJnZWRba2V5XTtcbiAgfSk7XG59IiwiaW1wb3J0IGdldEZyZXNoU2lkZU9iamVjdCBmcm9tIFwiLi9nZXRGcmVzaFNpZGVPYmplY3QuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1lcmdlUGFkZGluZ09iamVjdChwYWRkaW5nT2JqZWN0KSB7XG4gIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBnZXRGcmVzaFNpZGVPYmplY3QoKSwgcGFkZGluZ09iamVjdCk7XG59IiwiaW1wb3J0IHsgbW9kaWZpZXJQaGFzZXMgfSBmcm9tIFwiLi4vZW51bXMuanNcIjsgLy8gc291cmNlOiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy80OTg3NTI1NVxuXG5mdW5jdGlvbiBvcmRlcihtb2RpZmllcnMpIHtcbiAgdmFyIG1hcCA9IG5ldyBNYXAoKTtcbiAgdmFyIHZpc2l0ZWQgPSBuZXcgU2V0KCk7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgbW9kaWZpZXJzLmZvckVhY2goZnVuY3Rpb24gKG1vZGlmaWVyKSB7XG4gICAgbWFwLnNldChtb2RpZmllci5uYW1lLCBtb2RpZmllcik7XG4gIH0pOyAvLyBPbiB2aXNpdGluZyBvYmplY3QsIGNoZWNrIGZvciBpdHMgZGVwZW5kZW5jaWVzIGFuZCB2aXNpdCB0aGVtIHJlY3Vyc2l2ZWx5XG5cbiAgZnVuY3Rpb24gc29ydChtb2RpZmllcikge1xuICAgIHZpc2l0ZWQuYWRkKG1vZGlmaWVyLm5hbWUpO1xuICAgIHZhciByZXF1aXJlcyA9IFtdLmNvbmNhdChtb2RpZmllci5yZXF1aXJlcyB8fCBbXSwgbW9kaWZpZXIucmVxdWlyZXNJZkV4aXN0cyB8fCBbXSk7XG4gICAgcmVxdWlyZXMuZm9yRWFjaChmdW5jdGlvbiAoZGVwKSB7XG4gICAgICBpZiAoIXZpc2l0ZWQuaGFzKGRlcCkpIHtcbiAgICAgICAgdmFyIGRlcE1vZGlmaWVyID0gbWFwLmdldChkZXApO1xuXG4gICAgICAgIGlmIChkZXBNb2RpZmllcikge1xuICAgICAgICAgIHNvcnQoZGVwTW9kaWZpZXIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmVzdWx0LnB1c2gobW9kaWZpZXIpO1xuICB9XG5cbiAgbW9kaWZpZXJzLmZvckVhY2goZnVuY3Rpb24gKG1vZGlmaWVyKSB7XG4gICAgaWYgKCF2aXNpdGVkLmhhcyhtb2RpZmllci5uYW1lKSkge1xuICAgICAgLy8gY2hlY2sgZm9yIHZpc2l0ZWQgb2JqZWN0XG4gICAgICBzb3J0KG1vZGlmaWVyKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBvcmRlck1vZGlmaWVycyhtb2RpZmllcnMpIHtcbiAgLy8gb3JkZXIgYmFzZWQgb24gZGVwZW5kZW5jaWVzXG4gIHZhciBvcmRlcmVkTW9kaWZpZXJzID0gb3JkZXIobW9kaWZpZXJzKTsgLy8gb3JkZXIgYmFzZWQgb24gcGhhc2VcblxuICByZXR1cm4gbW9kaWZpZXJQaGFzZXMucmVkdWNlKGZ1bmN0aW9uIChhY2MsIHBoYXNlKSB7XG4gICAgcmV0dXJuIGFjYy5jb25jYXQob3JkZXJlZE1vZGlmaWVycy5maWx0ZXIoZnVuY3Rpb24gKG1vZGlmaWVyKSB7XG4gICAgICByZXR1cm4gbW9kaWZpZXIucGhhc2UgPT09IHBoYXNlO1xuICAgIH0pKTtcbiAgfSwgW10pO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHJlY3RUb0NsaWVudFJlY3QocmVjdCkge1xuICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgcmVjdCwge1xuICAgIGxlZnQ6IHJlY3QueCxcbiAgICB0b3A6IHJlY3QueSxcbiAgICByaWdodDogcmVjdC54ICsgcmVjdC53aWR0aCxcbiAgICBib3R0b206IHJlY3QueSArIHJlY3QuaGVpZ2h0XG4gIH0pO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVuaXF1ZUJ5KGFyciwgZm4pIHtcbiAgdmFyIGlkZW50aWZpZXJzID0gbmV3IFNldCgpO1xuICByZXR1cm4gYXJyLmZpbHRlcihmdW5jdGlvbiAoaXRlbSkge1xuICAgIHZhciBpZGVudGlmaWVyID0gZm4oaXRlbSk7XG5cbiAgICBpZiAoIWlkZW50aWZpZXJzLmhhcyhpZGVudGlmaWVyKSkge1xuICAgICAgaWRlbnRpZmllcnMuYWRkKGlkZW50aWZpZXIpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9KTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRVQVN0cmluZygpIHtcbiAgdmFyIHVhRGF0YSA9IG5hdmlnYXRvci51c2VyQWdlbnREYXRhO1xuXG4gIGlmICh1YURhdGEgIT0gbnVsbCAmJiB1YURhdGEuYnJhbmRzKSB7XG4gICAgcmV0dXJuIHVhRGF0YS5icmFuZHMubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICByZXR1cm4gaXRlbS5icmFuZCArIFwiL1wiICsgaXRlbS52ZXJzaW9uO1xuICAgIH0pLmpvaW4oJyAnKTtcbiAgfVxuXG4gIHJldHVybiBuYXZpZ2F0b3IudXNlckFnZW50O1xufSIsImltcG9ydCBmb3JtYXQgZnJvbSBcIi4vZm9ybWF0LmpzXCI7XG5pbXBvcnQgeyBtb2RpZmllclBoYXNlcyB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xudmFyIElOVkFMSURfTU9ESUZJRVJfRVJST1IgPSAnUG9wcGVyOiBtb2RpZmllciBcIiVzXCIgcHJvdmlkZWQgYW4gaW52YWxpZCAlcyBwcm9wZXJ0eSwgZXhwZWN0ZWQgJXMgYnV0IGdvdCAlcyc7XG52YXIgTUlTU0lOR19ERVBFTkRFTkNZX0VSUk9SID0gJ1BvcHBlcjogbW9kaWZpZXIgXCIlc1wiIHJlcXVpcmVzIFwiJXNcIiwgYnV0IFwiJXNcIiBtb2RpZmllciBpcyBub3QgYXZhaWxhYmxlJztcbnZhciBWQUxJRF9QUk9QRVJUSUVTID0gWyduYW1lJywgJ2VuYWJsZWQnLCAncGhhc2UnLCAnZm4nLCAnZWZmZWN0JywgJ3JlcXVpcmVzJywgJ29wdGlvbnMnXTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHZhbGlkYXRlTW9kaWZpZXJzKG1vZGlmaWVycykge1xuICBtb2RpZmllcnMuZm9yRWFjaChmdW5jdGlvbiAobW9kaWZpZXIpIHtcbiAgICBbXS5jb25jYXQoT2JqZWN0LmtleXMobW9kaWZpZXIpLCBWQUxJRF9QUk9QRVJUSUVTKSAvLyBJRTExLWNvbXBhdGlibGUgcmVwbGFjZW1lbnQgZm9yIGBuZXcgU2V0KGl0ZXJhYmxlKWBcbiAgICAuZmlsdGVyKGZ1bmN0aW9uICh2YWx1ZSwgaW5kZXgsIHNlbGYpIHtcbiAgICAgIHJldHVybiBzZWxmLmluZGV4T2YodmFsdWUpID09PSBpbmRleDtcbiAgICB9KS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgIGNhc2UgJ25hbWUnOlxuICAgICAgICAgIGlmICh0eXBlb2YgbW9kaWZpZXIubmFtZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZm9ybWF0KElOVkFMSURfTU9ESUZJRVJfRVJST1IsIFN0cmluZyhtb2RpZmllci5uYW1lKSwgJ1wibmFtZVwiJywgJ1wic3RyaW5nXCInLCBcIlxcXCJcIiArIFN0cmluZyhtb2RpZmllci5uYW1lKSArIFwiXFxcIlwiKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnZW5hYmxlZCc6XG4gICAgICAgICAgaWYgKHR5cGVvZiBtb2RpZmllci5lbmFibGVkICE9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZm9ybWF0KElOVkFMSURfTU9ESUZJRVJfRVJST1IsIG1vZGlmaWVyLm5hbWUsICdcImVuYWJsZWRcIicsICdcImJvb2xlYW5cIicsIFwiXFxcIlwiICsgU3RyaW5nKG1vZGlmaWVyLmVuYWJsZWQpICsgXCJcXFwiXCIpKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdwaGFzZSc6XG4gICAgICAgICAgaWYgKG1vZGlmaWVyUGhhc2VzLmluZGV4T2YobW9kaWZpZXIucGhhc2UpIDwgMCkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihmb3JtYXQoSU5WQUxJRF9NT0RJRklFUl9FUlJPUiwgbW9kaWZpZXIubmFtZSwgJ1wicGhhc2VcIicsIFwiZWl0aGVyIFwiICsgbW9kaWZpZXJQaGFzZXMuam9pbignLCAnKSwgXCJcXFwiXCIgKyBTdHJpbmcobW9kaWZpZXIucGhhc2UpICsgXCJcXFwiXCIpKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdmbic6XG4gICAgICAgICAgaWYgKHR5cGVvZiBtb2RpZmllci5mbiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihmb3JtYXQoSU5WQUxJRF9NT0RJRklFUl9FUlJPUiwgbW9kaWZpZXIubmFtZSwgJ1wiZm5cIicsICdcImZ1bmN0aW9uXCInLCBcIlxcXCJcIiArIFN0cmluZyhtb2RpZmllci5mbikgKyBcIlxcXCJcIikpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2VmZmVjdCc6XG4gICAgICAgICAgaWYgKG1vZGlmaWVyLmVmZmVjdCAhPSBudWxsICYmIHR5cGVvZiBtb2RpZmllci5lZmZlY3QgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZm9ybWF0KElOVkFMSURfTU9ESUZJRVJfRVJST1IsIG1vZGlmaWVyLm5hbWUsICdcImVmZmVjdFwiJywgJ1wiZnVuY3Rpb25cIicsIFwiXFxcIlwiICsgU3RyaW5nKG1vZGlmaWVyLmZuKSArIFwiXFxcIlwiKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAncmVxdWlyZXMnOlxuICAgICAgICAgIGlmIChtb2RpZmllci5yZXF1aXJlcyAhPSBudWxsICYmICFBcnJheS5pc0FycmF5KG1vZGlmaWVyLnJlcXVpcmVzKSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihmb3JtYXQoSU5WQUxJRF9NT0RJRklFUl9FUlJPUiwgbW9kaWZpZXIubmFtZSwgJ1wicmVxdWlyZXNcIicsICdcImFycmF5XCInLCBcIlxcXCJcIiArIFN0cmluZyhtb2RpZmllci5yZXF1aXJlcykgKyBcIlxcXCJcIikpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ3JlcXVpcmVzSWZFeGlzdHMnOlxuICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShtb2RpZmllci5yZXF1aXJlc0lmRXhpc3RzKSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihmb3JtYXQoSU5WQUxJRF9NT0RJRklFUl9FUlJPUiwgbW9kaWZpZXIubmFtZSwgJ1wicmVxdWlyZXNJZkV4aXN0c1wiJywgJ1wiYXJyYXlcIicsIFwiXFxcIlwiICsgU3RyaW5nKG1vZGlmaWVyLnJlcXVpcmVzSWZFeGlzdHMpICsgXCJcXFwiXCIpKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdvcHRpb25zJzpcbiAgICAgICAgY2FzZSAnZGF0YSc6XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFwiUG9wcGVySlM6IGFuIGludmFsaWQgcHJvcGVydHkgaGFzIGJlZW4gcHJvdmlkZWQgdG8gdGhlIFxcXCJcIiArIG1vZGlmaWVyLm5hbWUgKyBcIlxcXCIgbW9kaWZpZXIsIHZhbGlkIHByb3BlcnRpZXMgYXJlIFwiICsgVkFMSURfUFJPUEVSVElFUy5tYXAoZnVuY3Rpb24gKHMpIHtcbiAgICAgICAgICAgIHJldHVybiBcIlxcXCJcIiArIHMgKyBcIlxcXCJcIjtcbiAgICAgICAgICB9KS5qb2luKCcsICcpICsgXCI7IGJ1dCBcXFwiXCIgKyBrZXkgKyBcIlxcXCIgd2FzIHByb3ZpZGVkLlwiKTtcbiAgICAgIH1cblxuICAgICAgbW9kaWZpZXIucmVxdWlyZXMgJiYgbW9kaWZpZXIucmVxdWlyZXMuZm9yRWFjaChmdW5jdGlvbiAocmVxdWlyZW1lbnQpIHtcbiAgICAgICAgaWYgKG1vZGlmaWVycy5maW5kKGZ1bmN0aW9uIChtb2QpIHtcbiAgICAgICAgICByZXR1cm4gbW9kLm5hbWUgPT09IHJlcXVpcmVtZW50O1xuICAgICAgICB9KSA9PSBudWxsKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihmb3JtYXQoTUlTU0lOR19ERVBFTkRFTkNZX0VSUk9SLCBTdHJpbmcobW9kaWZpZXIubmFtZSksIHJlcXVpcmVtZW50LCByZXF1aXJlbWVudCkpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59IiwiaW1wb3J0IHsgbWF4IGFzIG1hdGhNYXgsIG1pbiBhcyBtYXRoTWluIH0gZnJvbSBcIi4vbWF0aC5qc1wiO1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhpbihtaW4sIHZhbHVlLCBtYXgpIHtcbiAgcmV0dXJuIG1hdGhNYXgobWluLCBtYXRoTWluKHZhbHVlLCBtYXgpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiB3aXRoaW5NYXhDbGFtcChtaW4sIHZhbHVlLCBtYXgpIHtcbiAgdmFyIHYgPSB3aXRoaW4obWluLCB2YWx1ZSwgbWF4KTtcbiAgcmV0dXJuIHYgPiBtYXggPyBtYXggOiB2O1xufSIsIlwidXNlIHN0cmljdFwiO1xuXG4vKlxuICBNSVQgTGljZW5zZSBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlLnBocFxuICBBdXRob3IgVG9iaWFzIEtvcHBlcnMgQHNva3JhXG4qL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoY3NzV2l0aE1hcHBpbmdUb1N0cmluZykge1xuICB2YXIgbGlzdCA9IFtdOyAvLyByZXR1cm4gdGhlIGxpc3Qgb2YgbW9kdWxlcyBhcyBjc3Mgc3RyaW5nXG5cbiAgbGlzdC50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgdmFyIGNvbnRlbnQgPSBcIlwiO1xuICAgICAgdmFyIG5lZWRMYXllciA9IHR5cGVvZiBpdGVtWzVdICE9PSBcInVuZGVmaW5lZFwiO1xuXG4gICAgICBpZiAoaXRlbVs0XSkge1xuICAgICAgICBjb250ZW50ICs9IFwiQHN1cHBvcnRzIChcIi5jb25jYXQoaXRlbVs0XSwgXCIpIHtcIik7XG4gICAgICB9XG5cbiAgICAgIGlmIChpdGVtWzJdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJAbWVkaWEgXCIuY29uY2F0KGl0ZW1bMl0sIFwiIHtcIik7XG4gICAgICB9XG5cbiAgICAgIGlmIChuZWVkTGF5ZXIpIHtcbiAgICAgICAgY29udGVudCArPSBcIkBsYXllclwiLmNvbmNhdChpdGVtWzVdLmxlbmd0aCA+IDAgPyBcIiBcIi5jb25jYXQoaXRlbVs1XSkgOiBcIlwiLCBcIiB7XCIpO1xuICAgICAgfVxuXG4gICAgICBjb250ZW50ICs9IGNzc1dpdGhNYXBwaW5nVG9TdHJpbmcoaXRlbSk7XG5cbiAgICAgIGlmIChuZWVkTGF5ZXIpIHtcbiAgICAgICAgY29udGVudCArPSBcIn1cIjtcbiAgICAgIH1cblxuICAgICAgaWYgKGl0ZW1bMl0pIHtcbiAgICAgICAgY29udGVudCArPSBcIn1cIjtcbiAgICAgIH1cblxuICAgICAgaWYgKGl0ZW1bNF0pIHtcbiAgICAgICAgY29udGVudCArPSBcIn1cIjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgfSkuam9pbihcIlwiKTtcbiAgfTsgLy8gaW1wb3J0IGEgbGlzdCBvZiBtb2R1bGVzIGludG8gdGhlIGxpc3RcblxuXG4gIGxpc3QuaSA9IGZ1bmN0aW9uIGkobW9kdWxlcywgbWVkaWEsIGRlZHVwZSwgc3VwcG9ydHMsIGxheWVyKSB7XG4gICAgaWYgKHR5cGVvZiBtb2R1bGVzID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBtb2R1bGVzID0gW1tudWxsLCBtb2R1bGVzLCB1bmRlZmluZWRdXTtcbiAgICB9XG5cbiAgICB2YXIgYWxyZWFkeUltcG9ydGVkTW9kdWxlcyA9IHt9O1xuXG4gICAgaWYgKGRlZHVwZSkge1xuICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCB0aGlzLmxlbmd0aDsgaysrKSB7XG4gICAgICAgIHZhciBpZCA9IHRoaXNba11bMF07XG5cbiAgICAgICAgaWYgKGlkICE9IG51bGwpIHtcbiAgICAgICAgICBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2lkXSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKHZhciBfayA9IDA7IF9rIDwgbW9kdWxlcy5sZW5ndGg7IF9rKyspIHtcbiAgICAgIHZhciBpdGVtID0gW10uY29uY2F0KG1vZHVsZXNbX2tdKTtcblxuICAgICAgaWYgKGRlZHVwZSAmJiBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2l0ZW1bMF1dKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIGxheWVyICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgIGlmICh0eXBlb2YgaXRlbVs1XSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgIGl0ZW1bNV0gPSBsYXllcjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpdGVtWzFdID0gXCJAbGF5ZXJcIi5jb25jYXQoaXRlbVs1XS5sZW5ndGggPiAwID8gXCIgXCIuY29uY2F0KGl0ZW1bNV0pIDogXCJcIiwgXCIge1wiKS5jb25jYXQoaXRlbVsxXSwgXCJ9XCIpO1xuICAgICAgICAgIGl0ZW1bNV0gPSBsYXllcjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAobWVkaWEpIHtcbiAgICAgICAgaWYgKCFpdGVtWzJdKSB7XG4gICAgICAgICAgaXRlbVsyXSA9IG1lZGlhO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGl0ZW1bMV0gPSBcIkBtZWRpYSBcIi5jb25jYXQoaXRlbVsyXSwgXCIge1wiKS5jb25jYXQoaXRlbVsxXSwgXCJ9XCIpO1xuICAgICAgICAgIGl0ZW1bMl0gPSBtZWRpYTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoc3VwcG9ydHMpIHtcbiAgICAgICAgaWYgKCFpdGVtWzRdKSB7XG4gICAgICAgICAgaXRlbVs0XSA9IFwiXCIuY29uY2F0KHN1cHBvcnRzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpdGVtWzFdID0gXCJAc3VwcG9ydHMgKFwiLmNvbmNhdChpdGVtWzRdLCBcIikge1wiKS5jb25jYXQoaXRlbVsxXSwgXCJ9XCIpO1xuICAgICAgICAgIGl0ZW1bNF0gPSBzdXBwb3J0cztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBsaXN0LnB1c2goaXRlbSk7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiBsaXN0O1xufTsiLCJcInVzZSBzdHJpY3RcIjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodXJsLCBvcHRpb25zKSB7XG4gIGlmICghb3B0aW9ucykge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuXG4gIGlmICghdXJsKSB7XG4gICAgcmV0dXJuIHVybDtcbiAgfVxuXG4gIHVybCA9IFN0cmluZyh1cmwuX19lc01vZHVsZSA/IHVybC5kZWZhdWx0IDogdXJsKTsgLy8gSWYgdXJsIGlzIGFscmVhZHkgd3JhcHBlZCBpbiBxdW90ZXMsIHJlbW92ZSB0aGVtXG5cbiAgaWYgKC9eWydcIl0uKlsnXCJdJC8udGVzdCh1cmwpKSB7XG4gICAgdXJsID0gdXJsLnNsaWNlKDEsIC0xKTtcbiAgfVxuXG4gIGlmIChvcHRpb25zLmhhc2gpIHtcbiAgICB1cmwgKz0gb3B0aW9ucy5oYXNoO1xuICB9IC8vIFNob3VsZCB1cmwgYmUgd3JhcHBlZD9cbiAgLy8gU2VlIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtdmFsdWVzLTMvI3VybHNcblxuXG4gIGlmICgvW1wiJygpIFxcdFxcbl18KCUyMCkvLnRlc3QodXJsKSB8fCBvcHRpb25zLm5lZWRRdW90ZXMpIHtcbiAgICByZXR1cm4gXCJcXFwiXCIuY29uY2F0KHVybC5yZXBsYWNlKC9cIi9nLCAnXFxcXFwiJykucmVwbGFjZSgvXFxuL2csIFwiXFxcXG5cIiksIFwiXFxcIlwiKTtcbiAgfVxuXG4gIHJldHVybiB1cmw7XG59OyIsIlwidXNlIHN0cmljdFwiO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdGVtKSB7XG4gIHZhciBjb250ZW50ID0gaXRlbVsxXTtcbiAgdmFyIGNzc01hcHBpbmcgPSBpdGVtWzNdO1xuXG4gIGlmICghY3NzTWFwcGluZykge1xuICAgIHJldHVybiBjb250ZW50O1xuICB9XG5cbiAgaWYgKHR5cGVvZiBidG9hID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICB2YXIgYmFzZTY0ID0gYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoY3NzTWFwcGluZykpKSk7XG4gICAgdmFyIGRhdGEgPSBcInNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LFwiLmNvbmNhdChiYXNlNjQpO1xuICAgIHZhciBzb3VyY2VNYXBwaW5nID0gXCIvKiMgXCIuY29uY2F0KGRhdGEsIFwiICovXCIpO1xuICAgIHZhciBzb3VyY2VVUkxzID0gY3NzTWFwcGluZy5zb3VyY2VzLm1hcChmdW5jdGlvbiAoc291cmNlKSB7XG4gICAgICByZXR1cm4gXCIvKiMgc291cmNlVVJMPVwiLmNvbmNhdChjc3NNYXBwaW5nLnNvdXJjZVJvb3QgfHwgXCJcIikuY29uY2F0KHNvdXJjZSwgXCIgKi9cIik7XG4gICAgfSk7XG4gICAgcmV0dXJuIFtjb250ZW50XS5jb25jYXQoc291cmNlVVJMcykuY29uY2F0KFtzb3VyY2VNYXBwaW5nXSkuam9pbihcIlxcblwiKTtcbiAgfVxuXG4gIHJldHVybiBbY29udGVudF0uam9pbihcIlxcblwiKTtcbn07IiwiY29uc3QgY3VycmVuY3lTeW1ib2xNYXAgPSByZXF1aXJlKCcuL21hcCcpXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZ2V0U3ltYm9sRnJvbUN1cnJlbmN5IChjdXJyZW5jeUNvZGUpIHtcbiAgaWYgKHR5cGVvZiBjdXJyZW5jeUNvZGUgIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG5cbiAgY29uc3QgY29kZSA9IGN1cnJlbmN5Q29kZS50b1VwcGVyQ2FzZSgpXG5cbiAgaWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoY3VycmVuY3lTeW1ib2xNYXAsIGNvZGUpKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG5cbiAgcmV0dXJuIGN1cnJlbmN5U3ltYm9sTWFwW2NvZGVdXG59XG5cbm1vZHVsZS5leHBvcnRzLmN1cnJlbmN5U3ltYm9sTWFwID0gY3VycmVuY3lTeW1ib2xNYXBcbiIsIm1vZHVsZS5leHBvcnRzID0ge1xuICBBRUQ6ICfYry7YpScsXG4gIEFGTjogJ9iLJyxcbiAgQUxMOiAnTCcsXG4gIEFNRDogJ9aPJyxcbiAgQU5HOiAnxpInLFxuICBBT0E6ICdLeicsXG4gIEFSUzogJyQnLFxuICBBVUQ6ICckJyxcbiAgQVdHOiAnxpInLFxuICBBWk46ICfigrwnLFxuICBCQU06ICdLTScsXG4gIEJCRDogJyQnLFxuICBCRFQ6ICfgp7MnLFxuICBCR046ICfQu9CyJyxcbiAgQkhEOiAnLtivLtioJyxcbiAgQklGOiAnRkJ1JyxcbiAgQk1EOiAnJCcsXG4gIEJORDogJyQnLFxuICBCT0I6ICckYicsXG4gIEJPVjogJ0JPVicsXG4gIEJSTDogJ1IkJyxcbiAgQlNEOiAnJCcsXG4gIEJUQzogJ+KCvycsXG4gIEJUTjogJ051LicsXG4gIEJXUDogJ1AnLFxuICBCWU46ICdCcicsXG4gIEJZUjogJ0JyJyxcbiAgQlpEOiAnQlokJyxcbiAgQ0FEOiAnJCcsXG4gIENERjogJ0ZDJyxcbiAgQ0hFOiAnQ0hFJyxcbiAgQ0hGOiAnQ0hGJyxcbiAgQ0hXOiAnQ0hXJyxcbiAgQ0xGOiAnQ0xGJyxcbiAgQ0xQOiAnJCcsXG4gIENOWTogJ8KlJyxcbiAgQ09QOiAnJCcsXG4gIENPVTogJ0NPVScsXG4gIENSQzogJ+KCoScsXG4gIENVQzogJyQnLFxuICBDVVA6ICfigrEnLFxuICBDVkU6ICckJyxcbiAgQ1pLOiAnS8SNJyxcbiAgREpGOiAnRmRqJyxcbiAgREtLOiAna3InLFxuICBET1A6ICdSRCQnLFxuICBEWkQ6ICfYr9isJyxcbiAgRUVLOiAna3InLFxuICBFR1A6ICfCoycsXG4gIEVSTjogJ05maycsXG4gIEVUQjogJ0JyJyxcbiAgRVRIOiAnzp4nLFxuICBFVVI6ICfigqwnLFxuICBGSkQ6ICckJyxcbiAgRktQOiAnwqMnLFxuICBHQlA6ICfCoycsXG4gIEdFTDogJ+KCvicsXG4gIEdHUDogJ8KjJyxcbiAgR0hDOiAn4oK1JyxcbiAgR0hTOiAnR0jigrUnLFxuICBHSVA6ICfCoycsXG4gIEdNRDogJ0QnLFxuICBHTkY6ICdGRycsXG4gIEdUUTogJ1EnLFxuICBHWUQ6ICckJyxcbiAgSEtEOiAnJCcsXG4gIEhOTDogJ0wnLFxuICBIUks6ICdrbicsXG4gIEhURzogJ0cnLFxuICBIVUY6ICdGdCcsXG4gIElEUjogJ1JwJyxcbiAgSUxTOiAn4oKqJyxcbiAgSU1QOiAnwqMnLFxuICBJTlI6ICfigrknLFxuICBJUUQ6ICfYuS7YrycsXG4gIElSUjogJ++3vCcsXG4gIElTSzogJ2tyJyxcbiAgSkVQOiAnwqMnLFxuICBKTUQ6ICdKJCcsXG4gIEpPRDogJ0pEJyxcbiAgSlBZOiAnwqUnLFxuICBLRVM6ICdLU2gnLFxuICBLR1M6ICfQu9CyJyxcbiAgS0hSOiAn4Z+bJyxcbiAgS01GOiAnQ0YnLFxuICBLUFc6ICfigqknLFxuICBLUlc6ICfigqknLFxuICBLV0Q6ICdLRCcsXG4gIEtZRDogJyQnLFxuICBLWlQ6ICfigrgnLFxuICBMQUs6ICfigq0nLFxuICBMQlA6ICfCoycsXG4gIExLUjogJ+KCqCcsXG4gIExSRDogJyQnLFxuICBMU0w6ICdNJyxcbiAgTFRDOiAnxYEnLFxuICBMVEw6ICdMdCcsXG4gIExWTDogJ0xzJyxcbiAgTFlEOiAnTEQnLFxuICBNQUQ6ICdNQUQnLFxuICBNREw6ICdsZWknLFxuICBNR0E6ICdBcicsXG4gIE1LRDogJ9C00LXQvScsXG4gIE1NSzogJ0snLFxuICBNTlQ6ICfigq4nLFxuICBNT1A6ICdNT1AkJyxcbiAgTVJPOiAnVU0nLFxuICBNUlU6ICdVTScsXG4gIE1VUjogJ+KCqCcsXG4gIE1WUjogJ1JmJyxcbiAgTVdLOiAnTUsnLFxuICBNWE46ICckJyxcbiAgTVhWOiAnTVhWJyxcbiAgTVlSOiAnUk0nLFxuICBNWk46ICdNVCcsXG4gIE5BRDogJyQnLFxuICBOR046ICfigqYnLFxuICBOSU86ICdDJCcsXG4gIE5PSzogJ2tyJyxcbiAgTlBSOiAn4oKoJyxcbiAgTlpEOiAnJCcsXG4gIE9NUjogJ++3vCcsXG4gIFBBQjogJ0IvLicsXG4gIFBFTjogJ1MvLicsXG4gIFBHSzogJ0snLFxuICBQSFA6ICfigrEnLFxuICBQS1I6ICfigqgnLFxuICBQTE46ICd6xYInLFxuICBQWUc6ICdHcycsXG4gIFFBUjogJ++3vCcsXG4gIFJNQjogJ++/pScsXG4gIFJPTjogJ2xlaScsXG4gIFJTRDogJ9CU0LjQvS4nLFxuICBSVUI6ICfigr0nLFxuICBSV0Y6ICdS4oKjJyxcbiAgU0FSOiAn77e8JyxcbiAgU0JEOiAnJCcsXG4gIFNDUjogJ+KCqCcsXG4gIFNERzogJ9isLtizLicsXG4gIFNFSzogJ2tyJyxcbiAgU0dEOiAnUyQnLFxuICBTSFA6ICfCoycsXG4gIFNMTDogJ0xlJyxcbiAgU09TOiAnUycsXG4gIFNSRDogJyQnLFxuICBTU1A6ICfCoycsXG4gIFNURDogJ0RiJyxcbiAgU1ROOiAnRGInLFxuICBTVkM6ICckJyxcbiAgU1lQOiAnwqMnLFxuICBTWkw6ICdFJyxcbiAgVEhCOiAn4Li/JyxcbiAgVEpTOiAnU00nLFxuICBUTVQ6ICdUJyxcbiAgVE5EOiAn2K8u2KonLFxuICBUT1A6ICdUJCcsXG4gIFRSTDogJ+KCpCcsXG4gIFRSWTogJ+KCuicsXG4gIFRURDogJ1RUJCcsXG4gIFRWRDogJyQnLFxuICBUV0Q6ICdOVCQnLFxuICBUWlM6ICdUU2gnLFxuICBVQUg6ICfigrQnLFxuICBVR1g6ICdVU2gnLFxuICBVU0Q6ICckJyxcbiAgVVlJOiAnVVlJJyxcbiAgVVlVOiAnJFUnLFxuICBVWVc6ICdVWVcnLFxuICBVWlM6ICfQu9CyJyxcbiAgVkVGOiAnQnMnLFxuICBWRVM6ICdCcy5TJyxcbiAgVk5EOiAn4oKrJyxcbiAgVlVWOiAnVlQnLFxuICBXU1Q6ICdXUyQnLFxuICBYQUY6ICdGQ0ZBJyxcbiAgWEJUOiAnyYMnLFxuICBYQ0Q6ICckJyxcbiAgWE9GOiAnQ0ZBJyxcbiAgWFBGOiAn4oKjJyxcbiAgWFNVOiAnU3VjcmUnLFxuICBYVUE6ICdYVUEnLFxuICBZRVI6ICfvt7wnLFxuICBaQVI6ICdSJyxcbiAgWk1XOiAnWksnLFxuICBaV0Q6ICdaJCcsXG4gIFpXTDogJyQnXG59XG4iLCIvLyBnaXRodWIuY29tL3BpbmVhcHBsZW1hY2hpbmUvc3RydGltZS1qc1xuLy8gTUlUIGxpY2Vuc2UsIENvcHlyaWdodCAoYykgMjAxOCBTb3BoaWUgS2lyc2NobmVyIChzb3BoaWVrQHBpbmVhcHBsZW1hY2hpbmUuY29tKVxuLy8gUmVmZXJlbmNlczpcbi8vIGh0dHBzOi8vd3d3LmlibS5jb20vc3VwcG9ydC9rbm93bGVkZ2VjZW50ZXIvZW4vc3N3X2libV9pXzcxL3J0cmVmL3N0cnB0aS5odG1cbi8vIGh0dHBzOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvbGliYy9tYW51YWwvaHRtbF9ub2RlL0Zvcm1hdHRpbmctQ2FsZW5kYXItVGltZS5odG1sXG4vLyBodHRwczovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2xpYmMvbWFudWFsL2h0bWxfbm9kZS9Mb3dfMDAyZExldmVsLVRpbWUtU3RyaW5nLVBhcnNpbmcuaHRtbFxuLy8gaHR0cDovL21hbjcub3JnL2xpbnV4L21hbi1wYWdlcy9tYW4zL3N0cnB0aW1lLjMuaHRtbFxuLy8gaHR0cHM6Ly9hcGlkb2NrLmNvbS9ydWJ5L0RhdGVUaW1lL3N0cmZ0aW1lXG4vLyBodHRwOi8vc3RyZnRpbWUub3JnL1xuXG5cbmZ1bmN0aW9uIGdldEZvcm1hdE9wdGlvbnModGltZXpvbmUsIG9wdGlvbnMpe1xuICAgIGxldCB1c2VPcHRpb25zO1xuICAgIGxldCB0eiA9IHVuZGVmaW5lZDtcbiAgICBpZihcbiAgICAgICAgdGltZXpvbmUgPT09IG51bGwgfHwgdGltZXpvbmUgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICBOdW1iZXIuaXNGaW5pdGUodGltZXpvbmUpIHx8IHR5cGVvZih0aW1lem9uZSkgPT09IFwic3RyaW5nXCJcbiAgICApe1xuICAgICAgICB0eiA9IHRpbWV6b25lO1xuICAgICAgICB1c2VPcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgICB9ZWxzZSBpZih0aW1lem9uZSAmJiAhb3B0aW9ucyl7XG4gICAgICAgIHVzZU9wdGlvbnMgPSB0aW1lem9uZTtcbiAgICAgICAgdHogPSB1c2VPcHRpb25zLnR6O1xuICAgIH1lbHNle1xuICAgICAgICB1c2VPcHRpb25zID0ge307XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIHR6OiB0eixcbiAgICAgICAgb3B0aW9uczogdXNlT3B0aW9ucyxcbiAgICB9O1xufVxuXG5mdW5jdGlvbiBnZXRUaW1lem9uZU9mZnNldE1pbnV0ZXMoZGF0ZSwgdHope1xuICAgIGlmKHR6ID09PSBudWxsIHx8IHR6ID09PSB1bmRlZmluZWQpe1xuICAgICAgICByZXR1cm4gMDtcbiAgICB9ZWxzZSBpZih0eiA+PSAtMTYgJiYgdHogPD0gKzE2KXtcbiAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IoNjAgKiB0eik7XG4gICAgfWVsc2UgaWYoTnVtYmVyLmlzRmluaXRlKHR6KSl7XG4gICAgICAgIHJldHVybiBNYXRoLmZsb29yKHR6KTtcbiAgICB9ZWxzZSBpZih0eiA9PT0gXCJsb2NhbFwiKXtcbiAgICAgICAgcmV0dXJuIC0oZGF0ZSB8fCBuZXcgRGF0ZSgpKS5nZXRUaW1lem9uZU9mZnNldCgpO1xuICAgIH1lbHNle1xuICAgICAgICBjb25zdCB0elVwcGVyID0gU3RyaW5nKHR6KS50b1VwcGVyQ2FzZSgpO1xuICAgICAgICBpZih0elVwcGVyIGluIGRlZmF1bHRUaW1lem9uZU5hbWVzKXtcbiAgICAgICAgICAgIGNvbnN0IG9mZnNldCA9IE1hdGguZmxvb3IoNjAgKiBkZWZhdWx0VGltZXpvbmVOYW1lc1t0elVwcGVyXSk7XG4gICAgICAgICAgICBpZihOdW1iZXIuaXNGaW5pdGUob2Zmc2V0KSl7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9mZnNldDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVucmVjb2duaXplZCB0aW1lem9uZSBvcHRpb24gXCIke3R6fVwiLmApO1xufVxuXG5mdW5jdGlvbiBzdHJmdGltZShkYXRlLCBmb3JtYXQsIHRpbWV6b25lLCBvcHRpb25zKXtcbiAgICBpZihOdW1iZXIuaXNGaW5pdGUoZGF0ZSkpe1xuICAgICAgICAvLyBBY2NlcHQgdW5peCB0aW1lc3RhbXBzIChtaWxsaXNlY29uZHMgc2luY2UgZXBvY2gpXG4gICAgICAgIGRhdGUgPSBuZXcgRGF0ZShkYXRlKTtcbiAgICB9ZWxzZSBpZighZGF0ZSl7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vIGRhdGUgaW5wdXQgd2FzIHByb3ZpZGVkLlwiKTtcbiAgICB9ZWxzZSBpZih0eXBlb2YoZGF0ZS50b0RhdGUpID09PSBcImZ1bmN0aW9uXCIpe1xuICAgICAgICAvLyBTdXBwb3J0IGRhdGUgb2JqZWN0cyBmcm9tIGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL21vbWVudFxuICAgICAgICAvLyBTdXBwb3J0IGRhdGUgb2JqZWN0cyBmcm9tIGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL2RheWpzXG4gICAgICAgIGRhdGUgPSBkYXRlLnRvRGF0ZSgpO1xuICAgIH1lbHNlIGlmKHR5cGVvZihkYXRlLnRvSlNEYXRlKSA9PT0gXCJmdW5jdGlvblwiKXtcbiAgICAgICAgLy8gU3VwcG9ydCBkYXRlIG9iamVjdHMgZnJvbSBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9sdXhvblxuICAgICAgICBkYXRlID0gZGF0ZS50b0pTRGF0ZSgpO1xuICAgIH1cbiAgICBpZighKGRhdGUgaW5zdGFuY2VvZiBEYXRlKSl7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkZhaWxlZCB0byBnZXQgRGF0ZSBpbnN0YW5jZSBmcm9tIGRhdGUgaW5wdXQuXCIpO1xuICAgIH1cbiAgICBjb25zdCB0b2tlbnMgPSBUaW1lc3RhbXBQYXJzZXIucGFyc2VGb3JtYXRTdHJpbmcoZm9ybWF0KTtcbiAgICBjb25zdCB1c2VPcHRpb25zID0gZ2V0Rm9ybWF0T3B0aW9ucyh0aW1lem9uZSwgb3B0aW9ucyk7XG4gICAgY29uc3QgdGltZXpvbmVPZmZzZXRNaW51dGVzID0gZ2V0VGltZXpvbmVPZmZzZXRNaW51dGVzKGRhdGUsIHVzZU9wdGlvbnMudHopO1xuICAgIGNvbnN0IHR6RGF0ZSA9IG5ldyBEYXRlKGRhdGUpO1xuICAgIGlmKHRpbWV6b25lT2Zmc2V0TWludXRlcyAhPT0gdW5kZWZpbmVkKXtcbiAgICAgICAgdHpEYXRlLnNldFVUQ01pbnV0ZXMoXG4gICAgICAgICAgICBkYXRlLmdldFVUQ01pbnV0ZXMoKSArXG4gICAgICAgICAgICB0aW1lem9uZU9mZnNldE1pbnV0ZXNcbiAgICAgICAgKTtcbiAgICB9XG4gICAgbGV0IG91dHB1dCA9IFwiXCI7XG4gICAgZm9yKGxldCB0b2tlbiBvZiB0b2tlbnMpe1xuICAgICAgICBpZih0b2tlbiBpbnN0YW5jZW9mIERpcmVjdGl2ZSl7XG4gICAgICAgICAgICBvdXRwdXQgKz0gdG9rZW4ud3JpdGUodHpEYXRlLCBcIlwiLCB1c2VPcHRpb25zLm9wdGlvbnMsIHRpbWV6b25lT2Zmc2V0TWludXRlcyk7XG4gICAgICAgIH1lbHNlIGlmKHRva2VuIGluc3RhbmNlb2YgRGlyZWN0aXZlLlRva2VuKXtcbiAgICAgICAgICAgIG91dHB1dCArPSB0b2tlbi53cml0ZSh0ekRhdGUsIHVzZU9wdGlvbnMub3B0aW9ucywgdGltZXpvbmVPZmZzZXRNaW51dGVzKTtcbiAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICBvdXRwdXQgKz0gdG9rZW47XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG91dHB1dDtcbn1cblxuZnVuY3Rpb24gc3RycHRpbWUodGltZXN0YW1wLCBmb3JtYXQsIHRpbWV6b25lLCBvcHRpb25zKXtcbiAgICBjb25zdCB1c2VPcHRpb25zID0gZ2V0Rm9ybWF0T3B0aW9ucyh0aW1lem9uZSwgb3B0aW9ucyk7XG4gICAgY29uc3QgcGFyc2VyID0gbmV3IFRpbWVzdGFtcFBhcnNlcih0aW1lc3RhbXAsIGZvcm1hdCk7XG4gICAgY29uc3QgdGltZXpvbmVPZmZzZXRNaW51dGVzID0gZ2V0VGltZXpvbmVPZmZzZXRNaW51dGVzKHVuZGVmaW5lZCwgdXNlT3B0aW9ucy50eik7XG4gICAgaWYodGltZXpvbmVPZmZzZXRNaW51dGVzICE9PSB1bmRlZmluZWQpe1xuICAgICAgICBwYXJzZXIudGltZXpvbmVPZmZzZXRNaW51dGVzID0gdGltZXpvbmVPZmZzZXRNaW51dGVzO1xuICAgIH1cbiAgICBpZih1c2VPcHRpb25zLm9wdGlvbnMpe1xuICAgICAgICBmb3IobGV0IGtleSBpbiB1c2VPcHRpb25zLm9wdGlvbnMpe1xuICAgICAgICAgICAgcGFyc2VyW2tleV0gPSB1c2VPcHRpb25zLm9wdGlvbnNba2V5XTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjb25zdCByZXN1bHQgPSBwYXJzZXIucGFyc2UoKTtcbiAgICByZXR1cm4gcmVzdWx0LmdldERhdGUoKTtcbn1cblxuY29uc3Qgc3RydGltZSA9IHtcbiAgICBzdHJmdGltZTogc3RyZnRpbWUsXG4gICAgc3RycHRpbWU6IHN0cnB0aW1lLFxufTtcblxuY29uc3QgZW5nbGlzaCA9IHtcbiAgICBlcmFOYW1lczogW1xuICAgICAgICBcIkNFXCIsIFwiQkNFXCJcbiAgICBdLFxuICAgIG1lcmlkaWVtTmFtZXM6IFtcbiAgICAgICAgXCJBTVwiLCBcIlBNXCJcbiAgICBdLFxuICAgIHNob3J0V2Vla2RheU5hbWVzOiBbXG4gICAgICAgIFwiU3VuXCIsIFwiTW9uXCIsIFwiVHVlXCIsIFwiV2VkXCIsIFwiVGh1XCIsIFwiRnJpXCIsIFwiU2F0XCJcbiAgICBdLFxuICAgIGxvbmdXZWVrZGF5TmFtZXM6IFtcbiAgICAgICAgXCJTdW5kYXlcIiwgXCJNb25kYXlcIiwgXCJUdWVzZGF5XCIsIFwiV2VkbmVzZGF5XCIsXG4gICAgICAgIFwiVGh1cnNkYXlcIiwgXCJGcmlkYXlcIiwgXCJTYXR1cmRheVwiXG4gICAgXSxcbiAgICBzaG9ydE1vbnRoTmFtZXM6IFtcbiAgICAgICAgXCJKYW5cIiwgXCJGZWJcIiwgXCJNYXJcIiwgXCJBcHJcIiwgXCJNYXlcIiwgXCJKdW5cIixcbiAgICAgICAgXCJKdWxcIiwgXCJBdWdcIiwgXCJTZXBcIiwgXCJPY3RcIiwgXCJOb3ZcIiwgXCJEZWNcIlxuICAgIF0sXG4gICAgbG9uZ01vbnRoTmFtZXM6IFtcbiAgICAgICAgXCJKYW51YXJ5XCIsIFwiRmVicnVhcnlcIiwgXCJNYXJjaFwiLCBcIkFwcmlsXCIsIFwiTWF5XCIsIFwiSnVuZVwiLFxuICAgICAgICBcIkp1bHlcIiwgXCJBdWd1c3RcIiwgXCJTZXB0ZW1iZXJcIiwgXCJPY3RvYmVyXCIsIFwiTm92ZW1iZXJcIiwgXCJEZWNlbWJlclwiXG4gICAgXSxcbiAgICBvcmRpbmFsVHJhbnNmb3JtOiBmdW5jdGlvbihudW1iZXIpe1xuICAgICAgICBjb25zdCBkaWdpdCA9IE1hdGguZmxvb3IobnVtYmVyICUgMTApO1xuICAgICAgICBpZihudW1iZXIgPiAzICYmIG51bWJlciA8PSAyMCkgcmV0dXJuIGAke251bWJlcn10aGA7XG4gICAgICAgIGlmKGRpZ2l0ID09PSAxKSByZXR1cm4gYCR7bnVtYmVyfXN0YDtcbiAgICAgICAgZWxzZSBpZihkaWdpdCA9PT0gMikgcmV0dXJuIGAke251bWJlcn1uZGA7XG4gICAgICAgIGVsc2UgaWYoZGlnaXQgPT09IDMpIHJldHVybiBgJHtudW1iZXJ9cmRgO1xuICAgICAgICBlbHNlIHJldHVybiBgJHtudW1iZXJ9dGhgO1xuICAgIH0sXG59O1xuXG5cbmZ1bmN0aW9uIGxlZnRQYWQoY2hhciwgbGVuZ3RoLCB0ZXh0KXtcbiAgICBsZXQgc3RyaW5nID0gU3RyaW5nKHRleHQpO1xuICAgIHdoaWxlKHN0cmluZy5sZW5ndGggPCBsZW5ndGgpe1xuICAgICAgICBzdHJpbmcgPSBjaGFyICsgc3RyaW5nO1xuICAgIH1cbiAgICByZXR1cm4gc3RyaW5nO1xufVxuXG5mdW5jdGlvbiB3cml0ZVRpbWV6b25lT2Zmc2V0KG9mZnNldE1pbnV0ZXMsIG1vZGlmaWVyKXtcbiAgICBjb25zdCBhYnNPZmZzZXQgPSBNYXRoLmFicyhvZmZzZXRNaW51dGVzKTtcbiAgICBjb25zdCBzaWduID0gKG9mZnNldE1pbnV0ZXMgPj0gMCA/IFwiK1wiIDogXCItXCIpO1xuICAgIGNvbnN0IGhvdXIgPSBsZWZ0UGFkKFwiMFwiLCAyLCBNYXRoLmZsb29yKGFic09mZnNldCAvIDYwKSk7XG4gICAgY29uc3QgbWludXRlID0gbGVmdFBhZChcIjBcIiwgMiwgYWJzT2Zmc2V0ICUgNjApO1xuICAgIGlmKG1vZGlmaWVyID09PSBcIjo6XCIpe1xuICAgICAgICByZXR1cm4gc2lnbiArIGhvdXIgKyBcIjpcIiArIG1pbnV0ZSArIFwiOjAwXCI7XG4gICAgfWVsc2UgaWYobW9kaWZpZXIgPT09IFwiOlwiKXtcbiAgICAgICAgcmV0dXJuIHNpZ24gKyBob3VyICsgXCI6XCIgKyBtaW51dGU7XG4gICAgfWVsc2V7XG4gICAgICAgIHJldHVybiBzaWduICsgaG91ciArIG1pbnV0ZTtcbiAgICB9XG59XG5cbi8vIEdldCB0aGUgZGF5IG9mIHRoZSB3ZWVrIGdpdmVuIGFuIGlucHV0IERhdGUuXG4vLyBSZXR1cm5zIDAgZm9yIFN1bmRheSwgMSBmb3IgTW9uZGF5LCBldGMuXG4vLyBodHRwczovL3d3dy5xdW9yYS5jb20vSG93LWRvZXMtVG9tb2hpa28tU2FrYW1vdG9zLUFsZ29yaXRobS13b3JrL2Fuc3dlci9SYXppbWFuLVQtVj9zcmlkPXUySE5YXG5mdW5jdGlvbiBnZXREYXlPZldlZWsoZGF0ZSl7XG4gICAgY29uc3Qgb2Zmc2V0cyA9IFswLCAzLCAyLCA1LCAwLCAzLCA1LCAxLCA0LCA2LCAyLCA0XTtcbiAgICBsZXQgeWVhciA9IGRhdGUuZ2V0VVRDRnVsbFllYXIoKTtcbiAgICBsZXQgbW9udGggPSBkYXRlLmdldFVUQ01vbnRoKCk7XG4gICAgbGV0IGRheSA9IGRhdGUuZ2V0VVRDRGF0ZSgpO1xuICAgIGlmKG1vbnRoIDwgMil7XG4gICAgICAgIHllYXItLTtcbiAgICB9XG4gICAgcmV0dXJuIChcbiAgICAgICAgb2Zmc2V0c1ttb250aF0gKyB5ZWFyICsgZGF5ICtcbiAgICAgICAgTWF0aC5mbG9vcih5ZWFyIC8gNCkgLVxuICAgICAgICBNYXRoLmZsb29yKHllYXIgLyAxMDApICtcbiAgICAgICAgTWF0aC5mbG9vcih5ZWFyIC8gNDAwKVxuICAgICkgJSA3O1xufVxuXG4vLyBHZXQgdGhlIGRheSBvZiB0aGUgeWVhciBhcyBhIG51bWJlciAoMS0zNjYpXG5mdW5jdGlvbiBnZXREYXlPZlllYXIoZGF0ZSl7XG4gICAgY29uc3QgbGVuZ3RocyA9IG1vbnRoTGVuZ3Rocy5mb3JZZWFyKGRhdGUuZ2V0VVRDRnVsbFllYXIoKSk7XG4gICAgY29uc3QgbW9udGhzID0gbGVuZ3Rocy5zbGljZSgwLCBkYXRlLmdldFVUQ01vbnRoKCkpO1xuICAgIHJldHVybiBkYXRlLmdldFVUQ0RhdGUoKSArIChcbiAgICAgICAgKG1vbnRocy5sZW5ndGggJiYgbW9udGhzLnJlZHVjZSgoYSwgYikgPT4gYSArIGIpKSB8fCAwXG4gICAgKTtcbn1cblxuLy8gR2V0IHRoZSB3ZWVrIG9mIHRoZSB5ZWFyIChzdGFydGluZyB3aXRoIFN1bmRheSkgKDAtNTMpXG5mdW5jdGlvbiBnZXRXZWVrT2ZZZWFyRnJvbVN1bmRheShkYXRlKXtcbiAgICBjb25zdCBkYXlPZlllYXIgPSBnZXREYXlPZlllYXIoZGF0ZSk7XG4gICAgY29uc3QgZmlyc3REYXlPZldlZWsgPSBnZXRGaXJzdFdlZWtkYXlJblllYXIoZGF0ZS5nZXRVVENGdWxsWWVhcigpKTtcbiAgICByZXR1cm4gTWF0aC5mbG9vcigoZGF5T2ZZZWFyICsgKGZpcnN0RGF5T2ZXZWVrIHx8IDcpIC0gMSkgLyA3KTtcbn1cblxuLy8gR2V0IHRoZSB3ZWVrIG9mIHRoZSB5ZWFyIChzdGFydGluZyB3aXRoIE1vbmRheSkgKDAtNTMpXG5mdW5jdGlvbiBnZXRXZWVrT2ZZZWFyRnJvbU1vbmRheShkYXRlKXtcbiAgICBjb25zdCBkYXlPZlllYXIgPSBnZXREYXlPZlllYXIoZGF0ZSk7XG4gICAgY29uc3QgZGF5T2ZXZWVrID0gZ2V0RGF5T2ZXZWVrKGRhdGUpO1xuICAgIGNvbnN0IGZpcnN0RGF5T2ZXZWVrID0gZ2V0Rmlyc3RXZWVrZGF5SW5ZZWFyKGRhdGUuZ2V0VVRDRnVsbFllYXIoKSk7XG4gICAgY29uc3Qgc3VuZGF5V2VlayA9IE1hdGguZmxvb3IoKGRheU9mWWVhciArIChmaXJzdERheU9mV2VlayB8fCA3KSAtIDEpIC8gNyk7XG4gICAgcmV0dXJuIHN1bmRheVdlZWsgLSAoZGF5T2ZXZWVrID09PSAwID8gMSA6IDApICsgKGZpcnN0RGF5T2ZXZWVrID09PSAxID8gMSA6IDApO1xufVxuXG5mdW5jdGlvbiBnZXRJU09XZWVrc0luWWVhcih5ZWFyKXtcbiAgICBjb25zdCBwcmlvclllYXIgPSB5ZWFyIC0gMTtcbiAgICBjb25zdCBhID0gKHllYXIgK1xuICAgICAgICBNYXRoLmZsb29yKHllYXIgLyA0KSAtXG4gICAgICAgIE1hdGguZmxvb3IoeWVhciAvIDEwMCkgK1xuICAgICAgICBNYXRoLmZsb29yKHllYXIgLyA0MDApXG4gICAgKSAlIDc7XG4gICAgY29uc3QgYiA9IChwcmlvclllYXIgK1xuICAgICAgICBNYXRoLmZsb29yKHByaW9yWWVhciAvIDQpIC1cbiAgICAgICAgTWF0aC5mbG9vcihwcmlvclllYXIgLyAxMDApICtcbiAgICAgICAgTWF0aC5mbG9vcihwcmlvclllYXIgLyA0MDApXG4gICAgKSAlIDc7XG4gICAgcmV0dXJuIGEgPT09IDQgfHwgYiA9PT0gMyA/IDUzIDogNTI7XG59XG5cbi8vIEdldCB0aGUgSVNPIHdlZWsgb2YgdGhlIHllYXJcbi8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGVcbi8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT184NjAxI1dlZWtfZGF0ZXNcbmZ1bmN0aW9uIGdldElTT1dlZWtPZlllYXIoZGF0ZSl7XG4gICAgY29uc3QgeWVhciA9IGRhdGUuZ2V0VVRDRnVsbFllYXIoKTtcbiAgICBjb25zdCBkYXlPZlllYXIgPSBnZXREYXlPZlllYXIoZGF0ZSk7XG4gICAgY29uc3QgZGF5T2ZXZWVrID0gZ2V0RGF5T2ZXZWVrKGRhdGUpO1xuICAgIGNvbnN0IHdlZWtOdW1iZXIgPSBNYXRoLmZsb29yKCgxMCArIGRheU9mWWVhciAtIChkYXlPZldlZWsgfHwgNykpIC8gNyk7XG4gICAgaWYod2Vla051bWJlciA8IDEpe1xuICAgICAgICByZXR1cm4gZ2V0SVNPV2Vla3NJblllYXIoeWVhciAtIDEpO1xuICAgIH1lbHNlIGlmKHdlZWtOdW1iZXIgPiBnZXRJU09XZWVrc0luWWVhcih5ZWFyKSl7XG4gICAgICAgIHJldHVybiAxO1xuICAgIH1lbHNle1xuICAgICAgICByZXR1cm4gd2Vla051bWJlcjtcbiAgICB9XG59XG5cbi8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGVcbmZ1bmN0aW9uIGdldElTT1dlZWtEYXRlWWVhcihkYXRlKXtcbiAgICBjb25zdCB5ZWFyID0gZGF0ZS5nZXRVVENGdWxsWWVhcigpO1xuICAgIGNvbnN0IGRheU9mWWVhciA9IGdldERheU9mWWVhcihkYXRlKTtcbiAgICBjb25zdCBkYXlPZldlZWsgPSBnZXREYXlPZldlZWsoZGF0ZSk7XG4gICAgY29uc3Qgd2Vla051bWJlciA9IE1hdGguZmxvb3IoKDEwICsgZGF5T2ZZZWFyIC0gKGRheU9mV2VlayB8fCA3KSkgLyA3KTtcbiAgICBpZih3ZWVrTnVtYmVyIDwgMSl7XG4gICAgICAgIHJldHVybiB5ZWFyIC0gMTtcbiAgICB9ZWxzZSBpZih3ZWVrTnVtYmVyID4gZ2V0SVNPV2Vla3NJblllYXIoeWVhcikpe1xuICAgICAgICByZXR1cm4geWVhciArIDE7XG4gICAgfWVsc2V7XG4gICAgICAgIHJldHVybiB5ZWFyO1xuICAgIH1cbn1cblxuY2xhc3MgRGlyZWN0aXZle1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpe1xuICAgICAgICAvLyBMaXN0IG9mIHBvc3NpYmxlIG5hbWVzIGZvciB0aGlzIGRpcmVjdGl2ZVxuICAgICAgICB0aGlzLm5hbWVzID0gb3B0aW9ucy5uYW1lcztcbiAgICAgICAgLy8gUGFkIG51bWJlcnMgdG8gdGhpcyBsZW5ndGggKG5vcm1hbGx5KVxuICAgICAgICB0aGlzLnBhZExlbmd0aCA9IG9wdGlvbnMucGFkTGVuZ3RoO1xuICAgICAgICAvLyBBIGxpa2VseSAoYnV0IG5vdCBzdHJpY3QpIGxlbmd0aCB0byBiZSB1c2VkIHdoZW4gcmVzb2x2aW5nXG4gICAgICAgIC8vIGFtYmlndW91cyBwYXJzaW5nIGlucHV0c1xuICAgICAgICB0aGlzLmxpa2VseUxlbmd0aCA9IG9wdGlvbnMubGlrZWx5TGVuZ3RoO1xuICAgICAgICAvLyBJbmRpY2F0ZXMgdGhhdCB0aGlzIGRpcmVjdGl2ZSB1c2VzIHRleHQgKGFzIG9wcG9zZWQgdG8gbnVtYmVycylcbiAgICAgICAgdGhpcy50ZXh0ID0gb3B0aW9ucy50ZXh0O1xuICAgICAgICAvLyBUaGUgbWluaW11bSBwZXJtaXR0ZWQgbnVtZXJpYyB2YWx1ZSBmb3IgYSBkaXJlY3RpdmVcbiAgICAgICAgdGhpcy5taW5pbXVtID0gb3B0aW9ucy5taW5pbXVtO1xuICAgICAgICAvLyBUaGUgbWF4aW11bSBwZXJtaXR0ZWQgbnVtZXJpYyB2YWx1ZSBmb3IgYSBkaXJlY3RpdmVcbiAgICAgICAgdGhpcy5tYXhpbXVtID0gb3B0aW9ucy5tYXhpbXVtO1xuICAgICAgICAvLyBXaGV0aGVyIHRoaXMgZGlyZWN0aXZlIHJlcHJlc2VudHMgYSBudW1iZXIgdGhhdCBjYW4gYmUgbmVnYXRpdmVcbiAgICAgICAgdGhpcy5jYW5CZU5lZ2F0aXZlID0gb3B0aW9ucy5jYW5CZU5lZ2F0aXZlO1xuICAgICAgICAvLyBUaGlzIGRpcmVjdGl2ZSBzaG91bGQgYWx3YXlzIGJlIHJld3JpdHRlbiB1c2luZyBhIGNvbWJpbmF0aW9uIG9mXG4gICAgICAgIC8vIG90aGVyIGRpcmVjdGl2ZXNcbiAgICAgICAgdGhpcy5yZXdyaXRlID0gb3B0aW9ucy5yZXdyaXRlO1xuICAgICAgICAvLyBGdW5jdGlvbiB0byBwYXJzZSBjb250ZW50IGZyb20gYSBzdHJpbmdcbiAgICAgICAgdGhpcy5wYXJzZUZ1bmN0aW9uID0gb3B0aW9ucy5wYXJzZTtcbiAgICAgICAgLy8gRnVuY3Rpb24gdG8gd3JpdGUgY29udGVudCBhcyBhIHN0cmluZywgZ2l2ZW4gYSBkYXRlIHRvIGZvcm1hdFxuICAgICAgICB0aGlzLndyaXRlRnVuY3Rpb24gPSBvcHRpb25zLndyaXRlO1xuICAgICAgICAvLyBGdW5jdGlvbiB0byBzdG9yZSBhIHBhcnNlZCBudW1lcmljIHZhbHVlXG4gICAgICAgIHRoaXMuc3RvcmVGdW5jdGlvbiA9IG9wdGlvbnMuc3RvcmU7XG4gICAgfVxuICAgIHN0YXRpYyBnZXRCeU5hbWUobmFtZSl7XG4gICAgICAgIGZvcihsZXQgZGlyZWN0aXZlIG9mIERpcmVjdGl2ZS5saXN0KXtcbiAgICAgICAgICAgIGlmKGRpcmVjdGl2ZS5uYW1lcy5pbmRleE9mKG5hbWUpID49IDApe1xuICAgICAgICAgICAgICAgIHJldHVybiBkaXJlY3RpdmU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgaXNPcmRpbmFsKCl7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgZ2V0Q2FuQmVOZWdhdGl2ZSgpe1xuICAgICAgICByZXR1cm4gdGhpcy5jYW5CZU5lZ2F0aXZlO1xuICAgIH1cbiAgICBnZXRMaWtlbHlMZW5ndGgoKXtcbiAgICAgICAgcmV0dXJuIHRoaXMubGlrZWx5TGVuZ3RoO1xuICAgIH1cbiAgICBnZXRSZXdyaXRlUGFyc2VkKHBhcnNlRm9ybWF0U3RyaW5nKXtcbiAgICAgICAgaWYoIXRoaXMucmV3cml0ZVBhcnNlZFZhbHVlKXtcbiAgICAgICAgICAgIHRoaXMucmV3cml0ZVBhcnNlZFZhbHVlID0gcGFyc2VGb3JtYXRTdHJpbmcodGhpcy5yZXdyaXRlKTtcbiAgICAgICAgICAgIGZvcihsZXQgdG9rZW4gb2YgdGhpcy5yZXdyaXRlUGFyc2VkVmFsdWUpe1xuICAgICAgICAgICAgICAgIHRva2VuLmV4cGFuZGVkRnJvbSA9IHRoaXM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMucmV3cml0ZVBhcnNlZFZhbHVlO1xuICAgIH1cbiAgICBoYXNQYXJzZUZ1bmN0aW9uKCl7XG4gICAgICAgIHJldHVybiAhIXRoaXMucGFyc2VGdW5jdGlvbjtcbiAgICB9XG4gICAgaGFzU3RvcmVGdW5jdGlvbigpe1xuICAgICAgICByZXR1cm4gISF0aGlzLnN0b3JlRnVuY3Rpb247XG4gICAgfVxuICAgIHBhcnNlKHBhcnNlcil7XG4gICAgICAgIHJldHVybiB0aGlzLnBhcnNlRnVuY3Rpb24uY2FsbChwYXJzZXIpO1xuICAgIH1cbiAgICBzdG9yZShwYXJzZXIsIG51bWJlcil7XG4gICAgICAgIHRoaXMuc3RvcmVGdW5jdGlvbi5jYWxsKHBhcnNlciwgbnVtYmVyKTtcbiAgICB9XG4gICAgd3JpdGUoZGF0ZSwgbW9kaWZpZXIsIG9wdGlvbnMsIHRpbWV6b25lT2Zmc2V0TWludXRlcyl7XG4gICAgICAgIHJldHVybiB0aGlzLndyaXRlRnVuY3Rpb24oZGF0ZSwgbW9kaWZpZXIsIG9wdGlvbnMsIHRpbWV6b25lT2Zmc2V0TWludXRlcyk7XG4gICAgfVxuICAgIG51bWJlckluQm91bmRzKHZhbHVlKXtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICghTnVtYmVyLmlzRmluaXRlKHRoaXMubWluaW11bSkgfHwgdmFsdWUgPj0gdGhpcy5taW5pbXVtKSAmJlxuICAgICAgICAgICAgKCFOdW1iZXIuaXNGaW5pdGUodGhpcy5tYXhpbXVtKSB8fCB2YWx1ZSA8PSB0aGlzLm1heGltdW0pXG4gICAgICAgICk7XG4gICAgfVxuICAgIGdldEJvdW5kc1N0cmluZygpe1xuICAgICAgICBpZihOdW1iZXIuaXNGaW5pdGUodGhpcy5taW5pbXVtKSAmJiBOdW1iZXIuaXNGaW5pdGUodGhpcy5tYXhpbXVtKSl7XG4gICAgICAgICAgICByZXR1cm4gYFske3RoaXMubWluaW11bX0sICR7dGhpcy5tYXhpbXVtfV1gO1xuICAgICAgICB9ZWxzZSBpZihOdW1iZXIuaXNGaW5pdGUodGhpcy5taW5pbXVtKSl7XG4gICAgICAgICAgICByZXR1cm4gYFske3RoaXMubWluaW11bX0sIC4uLl1gO1xuICAgICAgICB9ZWxzZSBpZihOdW1iZXIuaXNGaW5pdGUodGhpcy5tYXhpbXVtKSl7XG4gICAgICAgICAgICByZXR1cm4gYFsuLi4sICR7dGhpcy5tYXhpbXVtfV1gO1xuICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdG9TdHJpbmcoKXtcbiAgICAgICAgcmV0dXJuIFwiJVwiICsgdGhpcy5uYW1lc1swXTtcbiAgICB9XG59XG5cbkRpcmVjdGl2ZS5Ub2tlbiA9IGNsYXNzIERpcmVjdGl2ZVRva2Vue1xuICAgIGNvbnN0cnVjdG9yKG1vZGlmaWVyLCBkaXJlY3RpdmUpe1xuICAgICAgICB0aGlzLm1vZGlmaWVyID0gbW9kaWZpZXI7XG4gICAgICAgIHRoaXMuZGlyZWN0aXZlID0gZGlyZWN0aXZlO1xuICAgICAgICB0aGlzLmV4cGFuZGVkRnJvbSA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgaXNPcmRpbmFsKCl7XG4gICAgICAgIHJldHVybiB0aGlzLm1vZGlmaWVyID09PSBcIjpcIjtcbiAgICB9XG4gICAgZ2V0Q2FuQmVOZWdhdGl2ZSgpe1xuICAgICAgICByZXR1cm4gdGhpcy5kaXJlY3RpdmUuY2FuQmVOZWdhdGl2ZTtcbiAgICB9XG4gICAgZ2V0TGlrZWx5TGVuZ3RoKCl7XG4gICAgICAgIHJldHVybiB0aGlzLmRpcmVjdGl2ZS5saWtlbHlMZW5ndGg7XG4gICAgfVxuICAgIGhhc1BhcnNlRnVuY3Rpb24oKXtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlyZWN0aXZlLmhhc1BhcnNlRnVuY3Rpb24oKTtcbiAgICB9XG4gICAgaGFzU3RvcmVGdW5jdGlvbigpe1xuICAgICAgICByZXR1cm4gdGhpcy5kaXJlY3RpdmUuaGFzU3RvcmVGdW5jdGlvbigpO1xuICAgIH1cbiAgICBwYXJzZShwYXJzZXIpe1xuICAgICAgICByZXR1cm4gdGhpcy5kaXJlY3RpdmUucGFyc2VGdW5jdGlvbi5jYWxsKHBhcnNlciwgdGhpcy5tb2RpZmllcik7XG4gICAgfVxuICAgIHN0b3JlKHBhcnNlciwgbnVtYmVyKXtcbiAgICAgICAgdGhpcy5kaXJlY3RpdmUuc3RvcmVGdW5jdGlvbi5jYWxsKHBhcnNlciwgbnVtYmVyKTtcbiAgICB9XG4gICAgd3JpdGUoZGF0ZSwgb3B0aW9ucywgdGltZXpvbmVPZmZzZXRNaW51dGVzKXtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5kaXJlY3RpdmUud3JpdGUoZGF0ZSwgdGhpcy5tb2RpZmllciwgb3B0aW9ucywgdGltZXpvbmVPZmZzZXRNaW51dGVzKTtcbiAgICAgICAgaWYodGhpcy5tb2RpZmllciA9PT0gXCJeXCIpe1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0U3RyaW5nID0gU3RyaW5nKHJlc3VsdCk7XG4gICAgICAgICAgICBpZih0eXBlb2YocmVzdWx0KSA9PT0gXCJudW1iZXJcIikgcmV0dXJuIHJlc3VsdFN0cmluZztcbiAgICAgICAgICAgIGNvbnN0IHVwcGVyID0gcmVzdWx0U3RyaW5nLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgICAgICByZXR1cm4gdXBwZXIgIT09IHJlc3VsdFN0cmluZyA/IHVwcGVyIDogcmVzdWx0U3RyaW5nLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIH1lbHNlIGlmKHRoaXMubW9kaWZpZXIgPT09IFwiX1wiICYmIHRoaXMuZGlyZWN0aXZlLnBhZExlbmd0aCl7XG4gICAgICAgICAgICByZXR1cm4gbGVmdFBhZChcIiBcIiwgdGhpcy5kaXJlY3RpdmUucGFkTGVuZ3RoLCByZXN1bHQpO1xuICAgICAgICB9ZWxzZSBpZih0aGlzLm1vZGlmaWVyID09PSBcIl9cIiAmJiB0aGlzLmRpcmVjdGl2ZS50ZXh0KXtcbiAgICAgICAgICAgIHJldHVybiBTdHJpbmcocmVzdWx0KS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICB9ZWxzZSBpZih0aGlzLm1vZGlmaWVyID09PSBcIi1cIiAmJiB0aGlzLmRpcmVjdGl2ZS5wYWRMZW5ndGgpe1xuICAgICAgICAgICAgcmV0dXJuIFN0cmluZyhyZXN1bHQpO1xuICAgICAgICB9ZWxzZSBpZih0aGlzLm1vZGlmaWVyID09PSBcIjpcIiAmJiAhdGhpcy5kaXJlY3RpdmUudGV4dCl7XG4gICAgICAgICAgICBjb25zdCB0cmFuc2Zvcm0gPSAoKG9wdGlvbnMgJiYgb3B0aW9ucy5vcmRpbmFsVHJhbnNmb3JtKSB8fFxuICAgICAgICAgICAgICAgIGVuZ2xpc2gub3JkaW5hbFRyYW5zZm9ybVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybiB0cmFuc2Zvcm0ocmVzdWx0KTtcbiAgICAgICAgfWVsc2UgaWYoIXRoaXMuZGlyZWN0aXZlLnRleHQgJiYgdGhpcy5kaXJlY3RpdmUucGFkTGVuZ3RoKXtcbiAgICAgICAgICAgIHJldHVybiAocmVzdWx0ID49IDAgP1xuICAgICAgICAgICAgICAgIGxlZnRQYWQoXCIwXCIsIHRoaXMuZGlyZWN0aXZlLnBhZExlbmd0aCwgcmVzdWx0KSA6XG4gICAgICAgICAgICAgICAgYC0ke2xlZnRQYWQoXCIwXCIsIHRoaXMuZGlyZWN0aXZlLnBhZExlbmd0aCwgLXJlc3VsdCl9YFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICByZXR1cm4gU3RyaW5nKHJlc3VsdCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgbnVtYmVySW5Cb3VuZHModmFsdWUpe1xuICAgICAgICByZXR1cm4gdGhpcy5kaXJlY3RpdmUubnVtYmVySW5Cb3VuZHModmFsdWUpO1xuICAgIH1cbiAgICBnZXRCb3VuZHNTdHJpbmcoKXtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlyZWN0aXZlLmdldEJvdW5kc1N0cmluZygpO1xuICAgIH1cbiAgICB0b1N0cmluZygpe1xuICAgICAgICByZXR1cm4gXCIlXCIgKyB0aGlzLm1vZGlmaWVyICsgdGhpcy5kaXJlY3RpdmUubmFtZXNbMF07XG4gICAgfVxufVxuXG5EaXJlY3RpdmUuU3RyaW5nVG9rZW4gPSBjbGFzcyBEaXJlY3RpdmVTdHJpbmdUb2tlbntcbiAgICBjb25zdHJ1Y3RvcihzdHJpbmcpe1xuICAgICAgICB0aGlzLnN0cmluZyA9IHN0cmluZyB8fCBcIlwiO1xuICAgICAgICB0aGlzLmV4cGFuZGVkRnJvbSA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgYWRkQ2hhcmFjdGVyKGNoKXtcbiAgICAgICAgdGhpcy5zdHJpbmcgKz0gY2g7XG4gICAgfVxuICAgIHRvU3RyaW5nKCl7XG4gICAgICAgIHJldHVybiB0aGlzLnN0cmluZztcbiAgICB9XG59XG5cbkRpcmVjdGl2ZS5saXN0ID0gW1xuICAgIC8vIEFiYnJldmlhdGVkIHdlZWtkYXkgbmFtZVxuICAgIG5ldyBEaXJlY3RpdmUoe1xuICAgICAgICBuYW1lczogW1wiYVwiXSxcbiAgICAgICAgdGV4dDogdHJ1ZSxcbiAgICAgICAgcGFyc2U6IGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICB0aGlzLmRheU9mV2VlayA9IHRoaXMucGFyc2VXZWVrZGF5TmFtZSh0aGlzKTtcbiAgICAgICAgfSxcbiAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKGRhdGUsIG1vZGlmaWVyLCBvcHRpb25zKXtcbiAgICAgICAgICAgIGNvbnN0IG5hbWVzID0gKChvcHRpb25zICYmIG9wdGlvbnMuc2hvcnRXZWVrZGF5TmFtZXMpIHx8XG4gICAgICAgICAgICAgICAgZW5nbGlzaC5zaG9ydFdlZWtkYXlOYW1lc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybiBuYW1lc1tkYXRlLmdldFVUQ0RheSgpICUgN107XG4gICAgICAgIH0sXG4gICAgfSksXG4gICAgLy8gTG9uZyB3ZWVrZGF5IG5hbWVcbiAgICBuZXcgRGlyZWN0aXZlKHtcbiAgICAgICAgbmFtZXM6IFtcIkFcIl0sXG4gICAgICAgIHRleHQ6IHRydWUsXG4gICAgICAgIHBhcnNlOiBmdW5jdGlvbigpe1xuICAgICAgICAgICAgdGhpcy5kYXlPZldlZWsgPSB0aGlzLnBhcnNlV2Vla2RheU5hbWUodGhpcyk7XG4gICAgICAgIH0sXG4gICAgICAgIHdyaXRlOiBmdW5jdGlvbihkYXRlLCBtb2RpZmllciwgb3B0aW9ucyl7XG4gICAgICAgICAgICBjb25zdCBuYW1lcyA9ICgob3B0aW9ucyAmJiBvcHRpb25zLmxvbmdXZWVrZGF5TmFtZXMpIHx8XG4gICAgICAgICAgICAgICAgZW5nbGlzaC5sb25nV2Vla2RheU5hbWVzXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuIG5hbWVzW2RhdGUuZ2V0VVRDRGF5KCkgJSA3XTtcbiAgICAgICAgfSxcbiAgICB9KSxcbiAgICAvLyBBYmJyZXZpYXRlZCBtb250aCBuYW1lXG4gICAgbmV3IERpcmVjdGl2ZSh7XG4gICAgICAgIG5hbWVzOiBbXCJiXCIsIFwiaFwiXSxcbiAgICAgICAgdGV4dDogdHJ1ZSxcbiAgICAgICAgcGFyc2U6IGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICB0aGlzLm1vbnRoID0gMSArIHRoaXMucGFyc2VNb250aE5hbWUodGhpcyk7XG4gICAgICAgIH0sXG4gICAgICAgIHdyaXRlOiBmdW5jdGlvbihkYXRlLCBtb2RpZmllciwgb3B0aW9ucyl7XG4gICAgICAgICAgICBjb25zdCBuYW1lcyA9ICgob3B0aW9ucyAmJiBvcHRpb25zLnNob3J0TW9udGhOYW1lcykgfHxcbiAgICAgICAgICAgICAgICBlbmdsaXNoLnNob3J0TW9udGhOYW1lc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybiBuYW1lc1tkYXRlLmdldFVUQ01vbnRoKCkgJSAxMl07XG4gICAgICAgIH0sXG4gICAgfSksXG4gICAgLy8gTG9uZyBtb250aCBuYW1lXG4gICAgbmV3IERpcmVjdGl2ZSh7XG4gICAgICAgIG5hbWVzOiBbXCJCXCJdLFxuICAgICAgICB0ZXh0OiB0cnVlLFxuICAgICAgICBwYXJzZTogZnVuY3Rpb24oKXtcbiAgICAgICAgICAgIHRoaXMubW9udGggPSAxICsgdGhpcy5wYXJzZU1vbnRoTmFtZSh0aGlzKTtcbiAgICAgICAgfSxcbiAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKGRhdGUsIG1vZGlmaWVyLCBvcHRpb25zKXtcbiAgICAgICAgICAgIGNvbnN0IG5hbWVzID0gKChvcHRpb25zICYmIG9wdGlvbnMubG9uZ01vbnRoTmFtZXMpIHx8XG4gICAgICAgICAgICAgICAgZW5nbGlzaC5sb25nTW9udGhOYW1lc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybiBuYW1lc1tkYXRlLmdldFVUQ01vbnRoKCkgJSAxMl07XG4gICAgICAgIH0sXG4gICAgfSksXG4gICAgLy8gQ29tYmluYXRpb24gZGF0ZSBhbmQgdGltZSwgc2FtZSBhcyBcIiVhICViICVlICVIOiVNOiVTICVZXCJcbiAgICBuZXcgRGlyZWN0aXZlKHtcbiAgICAgICAgbmFtZXM6IFtcImNcIl0sXG4gICAgICAgIHJld3JpdGU6IFwiJWEgJWIgJWUgJUg6JU06JVMgJVlcIixcbiAgICB9KSxcbiAgICAvLyBDZW50dXJ5IChjb21wbGVtZW50cyAleSlcbiAgICBuZXcgRGlyZWN0aXZlKHtcbiAgICAgICAgbmFtZXM6IFtcIkNcIl0sXG4gICAgICAgIGxpa2VseUxlbmd0aDogMixcbiAgICAgICAgY2FuQmVOZWdhdGl2ZTogdHJ1ZSxcbiAgICAgICAgc3RvcmU6IGZ1bmN0aW9uKG51bWJlcil7XG4gICAgICAgICAgICB0aGlzLmNlbnR1cnkgPSBudW1iZXI7XG4gICAgICAgIH0sXG4gICAgICAgIHdyaXRlOiBmdW5jdGlvbihkYXRlKXtcbiAgICAgICAgICAgIHJldHVybiBNYXRoLmZsb29yKGRhdGUuZ2V0VVRDRnVsbFllYXIoKSAvIDEwMCk7XG4gICAgICAgIH0sXG4gICAgfSksXG4gICAgLy8gVHdvLWRpZ2l0IGRheSBvZiBtb250aFxuICAgIG5ldyBEaXJlY3RpdmUoe1xuICAgICAgICBuYW1lczogW1wiZFwiXSxcbiAgICAgICAgcGFkTGVuZ3RoOiAyLFxuICAgICAgICBsaWtlbHlMZW5ndGg6IDIsXG4gICAgICAgIG1pbmltdW06IDEsXG4gICAgICAgIG1heGltdW06IDMxLFxuICAgICAgICBzdG9yZTogZnVuY3Rpb24obnVtYmVyKXtcbiAgICAgICAgICAgIHRoaXMuZGF5T2ZNb250aCA9IG51bWJlcjtcbiAgICAgICAgfSxcbiAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKGRhdGUpe1xuICAgICAgICAgICAgcmV0dXJuIGRhdGUuZ2V0VVRDRGF0ZSgpO1xuICAgICAgICB9LFxuICAgIH0pLFxuICAgIC8vIFNhbWUgYXMgJW0vJWQvJXlcbiAgICBuZXcgRGlyZWN0aXZlKHtcbiAgICAgICAgbmFtZXM6IFtcIkRcIiwgXCJ4XCJdLFxuICAgICAgICByZXdyaXRlOiBcIiVtLyVkLyV5XCIsXG4gICAgfSksXG4gICAgLy8gRGF5IG9mIG1vbnRoIHBhZGRlZCB3aXRoIHNwYWNlcyAoc2FtZSBhcyBcIiVfZFwiKVxuICAgIG5ldyBEaXJlY3RpdmUoe1xuICAgICAgICBuYW1lczogW1wiZVwiXSxcbiAgICAgICAgbGlrZWx5TGVuZ3RoOiAyLFxuICAgICAgICBtaW5pbXVtOiAxLFxuICAgICAgICBtYXhpbXVtOiAzMSxcbiAgICAgICAgc3RvcmU6IGZ1bmN0aW9uKG51bWJlcil7XG4gICAgICAgICAgICB0aGlzLmRheU9mTW9udGggPSBudW1iZXI7XG4gICAgICAgIH0sXG4gICAgICAgIHdyaXRlOiBmdW5jdGlvbihkYXRlLCBtb2RpZmllcil7XG4gICAgICAgICAgICBpZighbW9kaWZpZXIpe1xuICAgICAgICAgICAgICAgIHJldHVybiBsZWZ0UGFkKFwiIFwiLCAyLCBkYXRlLmdldFVUQ0RhdGUoKSk7XG4gICAgICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0ZS5nZXRVVENEYXRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgfSksXG4gICAgLy8gU2l4LWRpZ2l0IG1pY3Jvc2Vjb25kXG4gICAgbmV3IERpcmVjdGl2ZSh7XG4gICAgICAgIG5hbWVzOiBbXCJmXCJdLFxuICAgICAgICBwYWRMZW5ndGg6IDYsXG4gICAgICAgIGxpa2VseUxlbmd0aDogNixcbiAgICAgICAgbWluaW11bTogMCxcbiAgICAgICAgbWF4aW11bTogOTk5OTk5LFxuICAgICAgICBzdG9yZTogZnVuY3Rpb24obnVtYmVyKXtcbiAgICAgICAgICAgIHRoaXMubWljcm9zZWNvbmQgPSBudW1iZXI7XG4gICAgICAgIH0sXG4gICAgICAgIHdyaXRlOiBmdW5jdGlvbihkYXRlKXtcbiAgICAgICAgICAgIHJldHVybiAxMDAwICogZGF0ZS5nZXRVVENNaWxsaXNlY29uZHMoKTtcbiAgICAgICAgfSxcbiAgICB9KSxcbiAgICAvLyBTYW1lIGFzICVZLSVtLSVkXG4gICAgbmV3IERpcmVjdGl2ZSh7XG4gICAgICAgIG5hbWVzOiBbXCJGXCJdLFxuICAgICAgICByZXdyaXRlOiBcIiVZLSVtLSVkXCIsXG4gICAgfSksXG4gICAgLy8gVHdvLWRpZ2l0IElTTyB3ZWVrIHllYXJcbiAgICBuZXcgRGlyZWN0aXZlKHtcbiAgICAgICAgbmFtZXM6IFtcImdcIl0sXG4gICAgICAgIGxpa2VseUxlbmd0aDogMixcbiAgICAgICAgc3RvcmU6IGZ1bmN0aW9uKG51bWJlcil7XG4gICAgICAgICAgICB0aGlzLmlzb1R3b0RpZ2l0WWVhciA9IG51bWJlcjtcbiAgICAgICAgfSxcbiAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKGRhdGUpe1xuICAgICAgICAgICAgcmV0dXJuIGdldElTT1dlZWtEYXRlWWVhcihkYXRlKSAlIDEwMDtcbiAgICAgICAgfSxcbiAgICB9KSxcbiAgICAvLyBGdWxsIElTTyB3ZWVrIHllYXJcbiAgICBuZXcgRGlyZWN0aXZlKHtcbiAgICAgICAgbmFtZXM6IFtcIkdcIl0sXG4gICAgICAgIHBhZExlbmd0aDogNCxcbiAgICAgICAgbGlrZWx5TGVuZ3RoOiA0LFxuICAgICAgICBjYW5CZU5lZ2F0aXZlOiB0cnVlLFxuICAgICAgICBzdG9yZTogZnVuY3Rpb24obnVtYmVyKXtcbiAgICAgICAgICAgIHRoaXMuaXNvWWVhciA9IG51bWJlcjtcbiAgICAgICAgfSxcbiAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKGRhdGUpe1xuICAgICAgICAgICAgcmV0dXJuIGdldElTT1dlZWtEYXRlWWVhcihkYXRlKTtcbiAgICAgICAgfSxcbiAgICB9KSxcbiAgICAvLyBUd28tZGlnaXQgaG91ciAoMC0yMylcbiAgICBuZXcgRGlyZWN0aXZlKHtcbiAgICAgICAgbmFtZXM6IFtcIkhcIiwgXCJrXCJdLFxuICAgICAgICBwYWRMZW5ndGg6IDIsXG4gICAgICAgIGxpa2VseUxlbmd0aDogMixcbiAgICAgICAgbWluaW11bTogMCxcbiAgICAgICAgbWF4aW11bTogMjMsXG4gICAgICAgIHN0b3JlOiBmdW5jdGlvbihudW1iZXIpe1xuICAgICAgICAgICAgdGhpcy5ob3VyID0gbnVtYmVyO1xuICAgICAgICB9LFxuICAgICAgICB3cml0ZTogZnVuY3Rpb24oZGF0ZSl7XG4gICAgICAgICAgICByZXR1cm4gZGF0ZS5nZXRVVENIb3VycygpO1xuICAgICAgICB9LFxuICAgIH0pLFxuICAgIC8vIFR3by1kaWdpdCBob3VyICgxLTEyKSB0byBiZSB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggJXAgKEFNL1BNKVxuICAgIG5ldyBEaXJlY3RpdmUoe1xuICAgICAgICBuYW1lczogW1wiSVwiLCBcImxcIl0sXG4gICAgICAgIHBhZExlbmd0aDogMixcbiAgICAgICAgbGlrZWx5TGVuZ3RoOiAyLFxuICAgICAgICBtaW5pbXVtOiAxLFxuICAgICAgICBtYXhpbXVtOiAxMixcbiAgICAgICAgc3RvcmU6IGZ1bmN0aW9uKG51bWJlcil7XG4gICAgICAgICAgICB0aGlzLmhvdXIgPSBudW1iZXI7XG4gICAgICAgIH0sXG4gICAgICAgIHdyaXRlOiBmdW5jdGlvbihkYXRlKXtcbiAgICAgICAgICAgIHJldHVybiAoZGF0ZS5nZXRVVENIb3VycygpICUgMTIpIHx8IDEyO1xuICAgICAgICB9LFxuICAgIH0pLFxuICAgIC8vIERheSBpbiB5ZWFyXG4gICAgbmV3IERpcmVjdGl2ZSh7XG4gICAgICAgIG5hbWVzOiBbXCJqXCJdLFxuICAgICAgICBwYWRMZW5ndGg6IDMsXG4gICAgICAgIGxpa2VseUxlbmd0aDogMyxcbiAgICAgICAgbWluaW11bTogMSxcbiAgICAgICAgbWF4aW11bTogMzY2LFxuICAgICAgICBzdG9yZTogZnVuY3Rpb24obnVtYmVyKXtcbiAgICAgICAgICAgIHRoaXMuZGF5T2ZZZWFyID0gbnVtYmVyO1xuICAgICAgICB9LFxuICAgICAgICB3cml0ZTogZnVuY3Rpb24oZGF0ZSl7XG4gICAgICAgICAgICByZXR1cm4gZ2V0RGF5T2ZZZWFyKGRhdGUpO1xuICAgICAgICB9LFxuICAgIH0pLFxuICAgIC8vIFRocmVlLWRpZ2l0IG1pbGxpc2Vjb25kXG4gICAgbmV3IERpcmVjdGl2ZSh7XG4gICAgICAgIG5hbWVzOiBbXCJMXCJdLFxuICAgICAgICBwYWRMZW5ndGg6IDMsXG4gICAgICAgIGxpa2VseUxlbmd0aDogMyxcbiAgICAgICAgbWluaW11bTogMCxcbiAgICAgICAgbWF4aW11bTogOTk5LFxuICAgICAgICBzdG9yZTogZnVuY3Rpb24obnVtYmVyKXtcbiAgICAgICAgICAgIHRoaXMubWlsbGlzZWNvbmQgPSBudW1iZXI7XG4gICAgICAgIH0sXG4gICAgICAgIHdyaXRlOiBmdW5jdGlvbihkYXRlKXtcbiAgICAgICAgICAgIHJldHVybiBkYXRlLmdldFVUQ01pbGxpc2Vjb25kcygpO1xuICAgICAgICB9LFxuICAgIH0pLFxuICAgIC8vIFR3by1kaWdpdCBtb250aCBudW1iZXIgKDEtMTIpXG4gICAgbmV3IERpcmVjdGl2ZSh7XG4gICAgICAgIG5hbWVzOiBbXCJtXCJdLFxuICAgICAgICBwYWRMZW5ndGg6IDIsXG4gICAgICAgIGxpa2VseUxlbmd0aDogMixcbiAgICAgICAgbWluaW11bTogMSxcbiAgICAgICAgbWF4aW11bTogMTIsXG4gICAgICAgIHN0b3JlOiBmdW5jdGlvbihudW1iZXIpe1xuICAgICAgICAgICAgdGhpcy5tb250aCA9IG51bWJlcjtcbiAgICAgICAgfSxcbiAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKGRhdGUpe1xuICAgICAgICAgICAgcmV0dXJuIDEgKyBkYXRlLmdldFVUQ01vbnRoKCk7XG4gICAgICAgIH0sXG4gICAgfSksXG4gICAgLy8gVHdvLWRpZ2l0IG1pbnV0ZSAoMC01OSlcbiAgICBuZXcgRGlyZWN0aXZlKHtcbiAgICAgICAgbmFtZXM6IFtcIk1cIl0sXG4gICAgICAgIHBhZExlbmd0aDogMixcbiAgICAgICAgbGlrZWx5TGVuZ3RoOiAyLFxuICAgICAgICBtaW5pbXVtOiAwLFxuICAgICAgICBtYXhpbXVtOiA1OSxcbiAgICAgICAgc3RvcmU6IGZ1bmN0aW9uKG51bWJlcil7XG4gICAgICAgICAgICB0aGlzLm1pbnV0ZSA9IG51bWJlcjtcbiAgICAgICAgfSxcbiAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKGRhdGUpe1xuICAgICAgICAgICAgcmV0dXJuIGRhdGUuZ2V0VVRDTWludXRlcygpO1xuICAgICAgICB9LFxuICAgIH0pLFxuICAgIC8vIEFNIG9yIFBNICh1cHBlcmNhc2UpXG4gICAgbmV3IERpcmVjdGl2ZSh7XG4gICAgICAgIG5hbWVzOiBbXCJwXCJdLFxuICAgICAgICB0ZXh0OiB0cnVlLFxuICAgICAgICBwYXJzZTogZnVuY3Rpb24oKXtcbiAgICAgICAgICAgIHRoaXMubWVyaWRpZW0gPSB0aGlzLnBhcnNlTWVyaWRpZW1OYW1lKCk7XG4gICAgICAgIH0sXG4gICAgICAgIHdyaXRlOiBmdW5jdGlvbihkYXRlLCBtb2RpZmllciwgb3B0aW9ucyl7XG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IGRhdGUuZ2V0VVRDSG91cnMoKSA8IDEyID8gMCA6IDE7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIChvcHRpb25zICYmIG9wdGlvbnMubWVyaWRpZW1OYW1lcykgfHwgZW5nbGlzaC5tZXJpZGllbU5hbWVzXG4gICAgICAgICAgICApW2luZGV4XTtcbiAgICAgICAgfSxcbiAgICB9KSxcbiAgICAvLyBBTSBvciBQTSAobG93ZXJjYXNlKVxuICAgIG5ldyBEaXJlY3RpdmUoe1xuICAgICAgICBuYW1lczogW1wiUFwiXSxcbiAgICAgICAgbGlrZWx5TGVuZ3RoOiAyLFxuICAgICAgICB0ZXh0OiB0cnVlLFxuICAgICAgICBwYXJzZTogZnVuY3Rpb24oKXtcbiAgICAgICAgICAgIHRoaXMubWVyaWRpZW0gPSB0aGlzLnBhcnNlTWVyaWRpZW1OYW1lKCk7XG4gICAgICAgIH0sXG4gICAgICAgIHdyaXRlOiBmdW5jdGlvbihkYXRlLCBtb2RpZmllciwgb3B0aW9ucyl7XG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IGRhdGUuZ2V0VVRDSG91cnMoKSA8IDEyID8gMCA6IDE7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIChvcHRpb25zICYmIG9wdGlvbnMubWVyaWRpZW1OYW1lcykgfHwgZW5nbGlzaC5tZXJpZGllbU5hbWVzXG4gICAgICAgICAgICApW2luZGV4XS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICB9LFxuICAgIH0pLFxuICAgIC8vIE51bWJlciBvZiBtaXJjb3NlY29uZHMgc2luY2UgZXBvY2hcbiAgICBuZXcgRGlyZWN0aXZlKHtcbiAgICAgICAgbmFtZXM6IFtcIlFcIl0sXG4gICAgICAgIGNhbkJlTmVnYXRpdmU6IHRydWUsXG4gICAgICAgIHN0b3JlOiBmdW5jdGlvbihudW1iZXIpe1xuICAgICAgICAgICAgdGhpcy5taWNyb3NlY29uZHNTaW5jZUVwb2NoID0gbnVtYmVyO1xuICAgICAgICB9LFxuICAgICAgICB3cml0ZTogZnVuY3Rpb24oZGF0ZSl7XG4gICAgICAgICAgICByZXR1cm4gTWF0aC5mbG9vcihkYXRlLmdldFRpbWUoKSAqIDEwMDApO1xuICAgICAgICB9LFxuICAgIH0pLFxuICAgIC8vIFNhbWUgYXMgXCIlSTolTTolUyAlcFwiXG4gICAgbmV3IERpcmVjdGl2ZSh7XG4gICAgICAgIG5hbWVzOiBbXCJyXCJdLFxuICAgICAgICByZXdyaXRlOiBcIiVJOiVNOiVTICVwXCIsXG4gICAgfSksXG4gICAgLy8gU2FtZSBhcyBcIiVIOiVNXCJcbiAgICBuZXcgRGlyZWN0aXZlKHtcbiAgICAgICAgbmFtZXM6IFtcIlJcIl0sXG4gICAgICAgIHJld3JpdGU6IFwiJUg6JU1cIixcbiAgICB9KSxcbiAgICAvLyBOdW1iZXIgb2Ygc2Vjb25kcyBzaW5jZSBlcG9jaFxuICAgIG5ldyBEaXJlY3RpdmUoe1xuICAgICAgICBuYW1lczogW1wic1wiXSxcbiAgICAgICAgY2FuQmVOZWdhdGl2ZTogdHJ1ZSxcbiAgICAgICAgc3RvcmU6IGZ1bmN0aW9uKG51bWJlcil7XG4gICAgICAgICAgICB0aGlzLnNlY29uZHNTaW5jZUVwb2NoID0gbnVtYmVyO1xuICAgICAgICB9LFxuICAgICAgICB3cml0ZTogZnVuY3Rpb24oZGF0ZSl7XG4gICAgICAgICAgICByZXR1cm4gTWF0aC5mbG9vcihkYXRlLmdldFRpbWUoKSAvIDEwMDApO1xuICAgICAgICB9LFxuICAgIH0pLFxuICAgIC8vIFR3by1kaWdpdCBzZWNvbmQgKDAtNjEpXG4gICAgbmV3IERpcmVjdGl2ZSh7XG4gICAgICAgIG5hbWVzOiBbXCJTXCJdLFxuICAgICAgICBwYWRMZW5ndGg6IDIsXG4gICAgICAgIGxpa2VseUxlbmd0aDogMixcbiAgICAgICAgbWluaW11bTogMCxcbiAgICAgICAgbWF4aW11bTogNjEsXG4gICAgICAgIHN0b3JlOiBmdW5jdGlvbihudW1iZXIpe1xuICAgICAgICAgICAgdGhpcy5zZWNvbmQgPSBudW1iZXI7XG4gICAgICAgIH0sXG4gICAgICAgIHdyaXRlOiBmdW5jdGlvbihkYXRlKXtcbiAgICAgICAgICAgIHJldHVybiBNYXRoLm1pbig1OSwgZGF0ZS5nZXRVVENTZWNvbmRzKCkpO1xuICAgICAgICB9LFxuICAgIH0pLFxuICAgIC8vIFNhbWUgYXMgJUg6JU06JVNcbiAgICBuZXcgRGlyZWN0aXZlKHtcbiAgICAgICAgbmFtZXM6IFtcIlRcIiwgXCJYXCJdLFxuICAgICAgICByZXdyaXRlOiBcIiVIOiVNOiVTXCIsXG4gICAgfSksXG4gICAgLy8gV2Vla2RheSBudW1iZXIsIHN0YXJ0aW5nIHdpdGggTW9uZGF5ICgxLTcpXG4gICAgbmV3IERpcmVjdGl2ZSh7XG4gICAgICAgIG5hbWVzOiBbXCJ1XCJdLFxuICAgICAgICBsaWtlbHlMZW5ndGg6IDEsXG4gICAgICAgIG1pbmltdW06IDEsXG4gICAgICAgIG1heGltdW06IDcsXG4gICAgICAgIHN0b3JlOiBmdW5jdGlvbihudW1iZXIpe1xuICAgICAgICAgICAgdGhpcy5kYXlPZldlZWsgPSBudW1iZXIgJSA3O1xuICAgICAgICB9LFxuICAgICAgICB3cml0ZTogZnVuY3Rpb24oZGF0ZSl7XG4gICAgICAgICAgICByZXR1cm4gZ2V0RGF5T2ZXZWVrKGRhdGUpIHx8IDc7XG4gICAgICAgIH0sXG4gICAgfSksXG4gICAgLy8gV2VlayBvZiB0aGUgeWVhciwgc3RhcnRpbmcgd2l0aCBTdW5kYXkgKDAtNTMpXG4gICAgbmV3IERpcmVjdGl2ZSh7XG4gICAgICAgIG5hbWVzOiBbXCJVXCJdLFxuICAgICAgICBwYWRMZW5ndGg6IDIsXG4gICAgICAgIGxpa2VseUxlbmd0aDogMixcbiAgICAgICAgbWluaW11bTogMCxcbiAgICAgICAgbWF4aW11bTogNTMsXG4gICAgICAgIHN0b3JlOiBmdW5jdGlvbihudW1iZXIpe1xuICAgICAgICAgICAgdGhpcy53ZWVrT2ZZZWFyRnJvbVN1bmRheSA9IG51bWJlcjtcbiAgICAgICAgfSxcbiAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKGRhdGUpe1xuICAgICAgICAgICAgcmV0dXJuIGdldFdlZWtPZlllYXJGcm9tU3VuZGF5KGRhdGUpO1xuICAgICAgICB9LFxuICAgIH0pLFxuICAgIC8vIFZNUyBkYXRlLCBzYW1lIGFzIFwiJWUtJWItJVlcIlxuICAgIG5ldyBEaXJlY3RpdmUoe1xuICAgICAgICBuYW1lczogW1widlwiXSxcbiAgICAgICAgcmV3cml0ZTogXCIlZS0lYi0lWVwiLFxuICAgIH0pLFxuICAgIC8vIElTTyA4NjAxOjE5ODggd2VlayBudW1iZXIgKDEtNTMpLCBjb21wbGVtZW50cyAlZy8lR1xuICAgIG5ldyBEaXJlY3RpdmUoe1xuICAgICAgICBuYW1lczogW1wiVlwiXSxcbiAgICAgICAgcGFkTGVuZ3RoOiAyLFxuICAgICAgICBsaWtlbHlMZW5ndGg6IDIsXG4gICAgICAgIG1pbmltdW06IDEsXG4gICAgICAgIG1heGltdW06IDUzLFxuICAgICAgICBzdG9yZTogZnVuY3Rpb24obnVtYmVyKXtcbiAgICAgICAgICAgIHRoaXMuaXNvV2Vla09mWWVhciA9IG51bWJlcjtcbiAgICAgICAgfSxcbiAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKGRhdGUpe1xuICAgICAgICAgICAgcmV0dXJuIGdldElTT1dlZWtPZlllYXIoZGF0ZSk7XG4gICAgICAgIH0sXG4gICAgfSksXG4gICAgLy8gV2Vla2RheSBudW1iZXIsIHN0YXJ0aW5nIHdpdGggU3VuZGF5ICgwLTYpXG4gICAgbmV3IERpcmVjdGl2ZSh7XG4gICAgICAgIG5hbWVzOiBbXCJ3XCJdLFxuICAgICAgICBsaWtlbHlMZW5ndGg6IDEsXG4gICAgICAgIG1pbmltdW06IDAsXG4gICAgICAgIG1heGltdW06IDYsXG4gICAgICAgIHN0b3JlOiBmdW5jdGlvbihudW1iZXIpe1xuICAgICAgICAgICAgdGhpcy5kYXlPZldlZWsgPSBudW1iZXIgJSA3O1xuICAgICAgICB9LFxuICAgICAgICB3cml0ZTogZnVuY3Rpb24oZGF0ZSl7XG4gICAgICAgICAgICByZXR1cm4gZ2V0RGF5T2ZXZWVrKGRhdGUpO1xuICAgICAgICB9LFxuICAgIH0pLFxuICAgIC8vIFdlZWsgb2YgdGhlIHllYXIsIHN0YXJ0aW5nIHdpdGggTW9uZGF5ICgwLTUzKVxuICAgIG5ldyBEaXJlY3RpdmUoe1xuICAgICAgICBuYW1lczogW1wiV1wiXSxcbiAgICAgICAgcGFkTGVuZ3RoOiAyLFxuICAgICAgICBsaWtlbHlMZW5ndGg6IDIsXG4gICAgICAgIG1pbmltdW06IDAsXG4gICAgICAgIG1heGltdW06IDUzLFxuICAgICAgICBzdG9yZTogZnVuY3Rpb24obnVtYmVyKXtcbiAgICAgICAgICAgIHRoaXMud2Vla09mWWVhckZyb21Nb25kYXkgPSBudW1iZXI7XG4gICAgICAgIH0sXG4gICAgICAgIHdyaXRlOiBmdW5jdGlvbihkYXRlKXtcbiAgICAgICAgICAgIHJldHVybiBnZXRXZWVrT2ZZZWFyRnJvbU1vbmRheShkYXRlKTtcbiAgICAgICAgfSxcbiAgICB9KSxcbiAgICAvLyBUd28tZGlnaXQgeWVhclxuICAgIG5ldyBEaXJlY3RpdmUoe1xuICAgICAgICBuYW1lczogW1wieVwiXSxcbiAgICAgICAgcGFkTGVuZ3RoOiAyLFxuICAgICAgICBsaWtlbHlMZW5ndGg6IDIsXG4gICAgICAgIHN0b3JlOiBmdW5jdGlvbihudW1iZXIpe1xuICAgICAgICAgICAgdGhpcy50d29EaWdpdFllYXIgPSBudW1iZXI7XG4gICAgICAgIH0sXG4gICAgICAgIHdyaXRlOiBmdW5jdGlvbihkYXRlKXtcbiAgICAgICAgICAgIHJldHVybiBkYXRlLmdldFVUQ0Z1bGxZZWFyKCkgJSAxMDA7XG4gICAgICAgIH0sXG4gICAgfSksXG4gICAgLy8gRnVsbCB5ZWFyICh1c3VhbGx5IGZvdXItZGlnaXQsIGJ1dCBub3Qgc3RyaWN0bHkgc28pXG4gICAgbmV3IERpcmVjdGl2ZSh7XG4gICAgICAgIG5hbWVzOiBbXCJZXCJdLFxuICAgICAgICBwYWRMZW5ndGg6IDQsXG4gICAgICAgIGxpa2VseUxlbmd0aDogNCxcbiAgICAgICAgY2FuQmVOZWdhdGl2ZTogdHJ1ZSxcbiAgICAgICAgc3RvcmU6IGZ1bmN0aW9uKG51bWJlcil7XG4gICAgICAgICAgICB0aGlzLnllYXIgPSBudW1iZXI7XG4gICAgICAgIH0sXG4gICAgICAgIHdyaXRlOiBmdW5jdGlvbihkYXRlLCBtb2RpZmllcil7XG4gICAgICAgICAgICBjb25zdCB5ZWFyID0gZGF0ZS5nZXRVVENGdWxsWWVhcigpO1xuICAgICAgICAgICAgLy8gTW9kaWZpZXIgXCJeXCIgcHJvZHVjZXMgdW5zaWduZWQgeWVhciwgZm9yIGNvbWJpbmF0aW9uIHdpdGggZXJhIFwiJSNcIlxuICAgICAgICAgICAgaWYoeWVhciA8PSAwICYmIG1vZGlmaWVyID09PSBcIl5cIikgcmV0dXJuIDEgLSB5ZWFyO1xuICAgICAgICAgICAgZWxzZSByZXR1cm4geWVhcjtcbiAgICAgICAgfSxcbiAgICB9KSxcbiAgICAvLyBUaW1lem9uZSBvZmZzZXQgZS5nLiArMDUwMCBvciAtMTIwMFxuICAgIG5ldyBEaXJlY3RpdmUoe1xuICAgICAgICBuYW1lczogW1wielwiXSxcbiAgICAgICAgdGV4dDogdHJ1ZSxcbiAgICAgICAgcGFyc2U6IGZ1bmN0aW9uKG1vZGlmaWVyKXtcbiAgICAgICAgICAgIHRoaXMudGltZXpvbmVPZmZzZXRNaW51dGVzID0gdGhpcy5wYXJzZVRpbWV6b25lT2Zmc2V0KG1vZGlmaWVyKTtcbiAgICAgICAgfSxcbiAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKGRhdGUsIG1vZGlmaWVyLCBvcHRpb25zLCB0aW1lem9uZU9mZnNldE1pbnV0ZXMpe1xuICAgICAgICAgICAgY29uc3Qgb2Zmc2V0ID0gKE51bWJlci5pc0Zpbml0ZSh0aW1lem9uZU9mZnNldE1pbnV0ZXMpID9cbiAgICAgICAgICAgICAgICB0aW1lem9uZU9mZnNldE1pbnV0ZXMgOiAtZGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuIHdyaXRlVGltZXpvbmVPZmZzZXQob2Zmc2V0LCBtb2RpZmllcik7XG4gICAgICAgIH0sXG4gICAgfSksXG4gICAgLy8gVGltZXpvbmUgb2Zmc2V0IG9yIG5hbWUgZS5nLiBVVEMgb3IgR01UIG9yIEVTVCBvciArMDUwMCBvciAtMTIwMFxuICAgIG5ldyBEaXJlY3RpdmUoe1xuICAgICAgICBuYW1lczogW1wiWlwiXSxcbiAgICAgICAgbGlrZWx5TGVuZ3RoOiA1LFxuICAgICAgICB0ZXh0OiB0cnVlLFxuICAgICAgICBwYXJzZTogZnVuY3Rpb24obW9kaWZpZXIpe1xuICAgICAgICAgICAgY29uc3QgdHpMaXN0ID0gdGhpcy5nZXRUaW1lem9uZU5hbWVMaXN0KCk7XG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMucGFyc2VJbmRleEluTGlzdCh0ekxpc3QpO1xuICAgICAgICAgICAgaWYoaW5kZXggIT09IHVuZGVmaW5lZCl7XG4gICAgICAgICAgICAgICAgdGhpcy50aW1lem9uZU9mZnNldE1pbnV0ZXMgPSA2MCAqIHRoaXMudGltZXpvbmVOYW1lc1t0ekxpc3RbaW5kZXhdXTtcbiAgICAgICAgICAgIH1lbHNle1xuICAgICAgICAgICAgICAgIHRoaXMudGltZXpvbmVPZmZzZXRNaW51dGVzID0gdGhpcy5wYXJzZVRpbWV6b25lT2Zmc2V0KG1vZGlmaWVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKGRhdGUsIG1vZGlmaWVyLCBvcHRpb25zLCB0aW1lem9uZU9mZnNldE1pbnV0ZXMpe1xuICAgICAgICAgICAgY29uc3Qgb2Zmc2V0ID0gKE51bWJlci5pc0Zpbml0ZSh0aW1lem9uZU9mZnNldE1pbnV0ZXMpID9cbiAgICAgICAgICAgICAgICB0aW1lem9uZU9mZnNldE1pbnV0ZXMgOiAtZGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYob2Zmc2V0ID09PSAwKSByZXR1cm4gXCJVVENcIjtcbiAgICAgICAgICAgIGVsc2UgcmV0dXJuIHdyaXRlVGltZXpvbmVPZmZzZXQob2Zmc2V0LCBtb2RpZmllcik7XG4gICAgICAgIH0sXG4gICAgfSksXG4gICAgLy8gU2FtZSBhcyBcIiVhICViICVlICVIOiVNOiVTICVaICVZXCJcbiAgICBuZXcgRGlyZWN0aXZlKHtcbiAgICAgICAgbmFtZXM6IFtcIitcIl0sXG4gICAgICAgIHJld3JpdGU6IFwiJWEgJWIgJWUgJUg6JU06JVMgJVogJVlcIixcbiAgICB9KSxcbiAgICAvLyBFcmEgKEJDL0JDRSlcbiAgICBuZXcgRGlyZWN0aXZlKHtcbiAgICAgICAgbmFtZXM6IFtcIiNcIl0sXG4gICAgICAgIHRleHQ6IHRydWUsXG4gICAgICAgIHBhcnNlOiBmdW5jdGlvbigpe1xuICAgICAgICAgICAgdGhpcy5lcmEgPSB0aGlzLnBhcnNlRXJhTmFtZSgpO1xuICAgICAgICB9LFxuICAgICAgICB3cml0ZTogZnVuY3Rpb24oZGF0ZSwgbW9kaWZpZXIsIG9wdGlvbnMpe1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSBkYXRlLmdldFVUQ0Z1bGxZZWFyKCkgPD0gMCA/IDEgOiAwO1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAob3B0aW9ucyAmJiBvcHRpb25zLmVyYU5hbWVzKSB8fCBlbmdsaXNoLmVyYU5hbWVzXG4gICAgICAgICAgICApW2luZGV4XTtcbiAgICAgICAgfSxcbiAgICB9KSxcbl07XG5cbi8vIFRoZSBhc3NlcnRpb24tZXJyb3IgcGFja2FnZSB3YXMgdXNlZCBhcyBhIGJhc2lzIGZvciB0aGUgVGltZXN0YW1wUGFyc2VFcnJvciB0eXBlXG4vLyBodHRwczovL2dpdGh1Yi5jb20vY2hhaWpzL2Fzc2VydGlvbi1lcnJvci9ibG9iL21hc3Rlci9pbmRleC5qc1xuXG4vLyBUaGUgY29uc3RydWN0b3JcbmZ1bmN0aW9uIFRpbWVzdGFtcFBhcnNlRXJyb3IocmVhc29uLCBwYXJzZXIpe1xuICAgIEVycm9yLmNhbGwodGhpcyk7XG4gICAgdGhpcy5yZWFzb24gPSByZWFzb247XG4gICAgdGhpcy5mb3JtYXQgPSBwYXJzZXIuZm9ybWF0O1xuICAgIHRoaXMudGltZXN0YW1wID0gcGFyc2VyLnN0cmluZztcbiAgICB0aGlzLnRva2VuID0gcGFyc2VyLmN1cnJlbnRUb2tlbjtcbiAgICB0aGlzLmluZGV4ID0gcGFyc2VyLmluZGV4O1xuICAgIGlmKHRoaXMudG9rZW4gJiYgdGhpcy50b2tlbi5leHBhbmRlZEZyb20gJiYgdGhpcy5pbmRleCAhPT0gdW5kZWZpbmVkKSB0aGlzLm1lc3NhZ2UgPSAoXG4gICAgICAgIGBGYWlsZWQgdG8gcGFyc2UgdG9rZW4gXCIke3RoaXMudG9rZW59XCIgYCArXG4gICAgICAgIGAoZXhwYW5kZWQgZnJvbSBcIiR7dGhpcy50b2tlbi5leHBhbmRlZEZyb219XCIpIGF0IHBvc2l0aW9uIFske3RoaXMuaW5kZXh9XSBgICtcbiAgICAgICAgYGluIHRpbWVzdGFtcCBcIiR7dGhpcy50aW1lc3RhbXB9XCIgd2l0aCBmb3JtYXQgXCIke3RoaXMuZm9ybWF0fVwiOiBgICtcbiAgICAgICAgYCR7dGhpcy5yZWFzb259YFxuICAgICk7XG4gICAgZWxzZSBpZih0aGlzLnRva2VuICYmIHRoaXMuaW5kZXggIT09IHVuZGVmaW5lZCkgdGhpcy5tZXNzYWdlID0gKFxuICAgICAgICBgRmFpbGVkIHRvIHBhcnNlIHRva2VuIFwiJHt0aGlzLnRva2VufVwiIGF0IHBvc2l0aW9uIFske3RoaXMuaW5kZXh9XSBgICtcbiAgICAgICAgYGluIHRpbWVzdGFtcCBcIiR7dGhpcy50aW1lc3RhbXB9XCIgd2l0aCBmb3JtYXQgXCIke3RoaXMuZm9ybWF0fVwiOiBgICtcbiAgICAgICAgYCR7dGhpcy5yZWFzb259YFxuICAgICk7XG4gICAgZWxzZSBpZih0aGlzLnRva2VuKSB0aGlzLm1lc3NhZ2UgPSAoXG4gICAgICAgIGBGYWlsZWQgdG8gcGFyc2UgdG9rZW4gXCIke3RoaXMudG9rZW59XCIgYCArXG4gICAgICAgIGBpbiBmb3JtYXQgXCIke3RoaXMuZm9ybWF0fVwiOiAke3RoaXMucmVhc29ufWBcbiAgICApO1xuICAgIGVsc2UgdGhpcy5tZXNzYWdlID0gKFxuICAgICAgICBgRmFpbGVkIHdpdGggZm9ybWF0IFwiJHt0aGlzLmZvcm1hdH1cIjogJHt0aGlzLnJlYXNvbn1gXG4gICAgKTtcbiAgICAvLyBodHRwczovL25vZGVqcy5vcmcvYXBpL2Vycm9ycy5odG1sI2Vycm9yc19lcnJvcl9jYXB0dXJlc3RhY2t0cmFjZV90YXJnZXRvYmplY3RfY29uc3RydWN0b3JvcHRcbiAgICBpZihFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSl7XG4gICAgICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIHRoaXMuY29uc3RydWN0b3IpO1xuICAgIH1lbHNle1xuICAgICAgICB0cnl7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTtcbiAgICAgICAgfWNhdGNoKGVycm9yKXtcbiAgICAgICAgICAgIHRoaXMuc3RhY2sgPSBlcnJvci5zdGFjaztcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gUHJvdG90eXBlIHdyYW5nbGluZ1xuVGltZXN0YW1wUGFyc2VFcnJvci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEVycm9yLnByb3RvdHlwZSk7XG5UaW1lc3RhbXBQYXJzZUVycm9yLnByb3RvdHlwZS5uYW1lID0gXCJUaW1lc3RhbXBQYXJzZUVycm9yXCI7XG5UaW1lc3RhbXBQYXJzZUVycm9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFRpbWVzdGFtcFBhcnNlRXJyb3I7XG5cblxuZnVuY3Rpb24gaXNEaWdpdChjaCl7XG4gICAgcmV0dXJuIChcbiAgICAgICAgY2ggPT09IFwiMFwiIHx8IGNoID09PSBcIjFcIiB8fCBjaCA9PT0gXCIyXCIgfHwgY2ggPT09IFwiM1wiIHx8IGNoID09PSBcIjRcIiB8fFxuICAgICAgICBjaCA9PT0gXCI1XCIgfHwgY2ggPT09IFwiNlwiIHx8IGNoID09PSBcIjdcIiB8fCBjaCA9PT0gXCI4XCIgfHwgY2ggPT09IFwiOVwiXG4gICAgKTtcbn1cblxuLy8gTWF0Y2hlcyBHTlUgQyBzdHJwdGltZSBiZWhhdmlvclxuLy8gaHR0cHM6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9saWJjL21hbnVhbC9odG1sX25vZGUvTG93XzAwMmRMZXZlbC1UaW1lLVN0cmluZy1QYXJzaW5nLmh0bWxcbmZ1bmN0aW9uIGdldFllYXJGcm9tVHdvRGlnaXRzKHllYXIpe1xuICAgIHJldHVybiB5ZWFyICsgKHllYXIgPD0gNjggPyAyMDAwIDogMTkwMCk7XG59XG5cbmZ1bmN0aW9uIGdldE1vbnRoRnJvbURheU9mWWVhcih5ZWFyLCBkYXlPZlllYXIpe1xuICAgIGNvbnN0IG1vbnRocyA9IG1vbnRoTGVuZ3Rocy5mb3JZZWFyKHllYXIpO1xuICAgIGxldCBkYXlzID0gMDtcbiAgICBmb3IobGV0IGkgPSAwOyBpIDwgbW9udGhzLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgaWYoZGF5cyA+PSBkYXlPZlllYXIpIHJldHVybiBpO1xuICAgICAgICBkYXlzICs9IG1vbnRoc1tpXTtcbiAgICB9XG4gICAgcmV0dXJuIDEyO1xufVxuXG5mdW5jdGlvbiBnZXREYXlPZk1vbnRoRnJvbURheU9mWWVhcih5ZWFyLCBkYXlPZlllYXIpe1xuICAgIGNvbnN0IG1vbnRocyA9IG1vbnRoTGVuZ3Rocy5mb3JZZWFyKHllYXIpO1xuICAgIGxldCBkYXlzID0gMDtcbiAgICBmb3IobGV0IGkgPSAwOyBpIDwgbW9udGhzLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgaWYoZGF5T2ZZZWFyIC0gZGF5cyA8PSBtb250aHNbaV0pIHJldHVybiBkYXlPZlllYXIgLSBkYXlzO1xuICAgICAgICBkYXlzICs9IG1vbnRoc1tpXTtcbiAgICB9XG4gICAgcmV0dXJuIGRheU9mWWVhciAtIGRheXM7XG59XG5cbi8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGVcbi8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT184NjAxI1dlZWtfZGF0ZXNcbmZ1bmN0aW9uIGdldERhdGVGcm9tSVNPV2Vla0RhdGUocGFyc2VyLCBpc29ZZWFyLCBpc29XZWVrT2ZZZWFyLCBkYXlPZldlZWspe1xuICAgIGNvbnN0IGZpcnN0RGF5T2ZXZWVrID0gZ2V0Rmlyc3RXZWVrZGF5SW5ZZWFyKGlzb1llYXIpO1xuICAgIGNvbnN0IHdlZWtkYXlPZkphbjQgPSAoKDMgKyBmaXJzdERheU9mV2VlaykgJSA3KSB8fCA3O1xuICAgIGNvbnN0IGRheXNJblllYXIgPSBpc0xlYXBZZWFyKGlzb1llYXIpID8gMzY2IDogMzY1O1xuICAgIGxldCBkYXlPZlllYXIgPSA3ICogaXNvV2Vla09mWWVhciArIChkYXlPZldlZWsgfHwgNykgLSB3ZWVrZGF5T2ZKYW40IC0gMztcbiAgICBpZihkYXlPZlllYXIgPCAxKXtcbiAgICAgICAgcGFyc2VyLnllYXIgPSBpc29ZZWFyIC0gMTtcbiAgICAgICAgZGF5T2ZZZWFyICs9IGRheXNJblllYXI7XG4gICAgfWVsc2UgaWYoZGF5T2ZZZWFyID4gZGF5c0luWWVhcil7XG4gICAgICAgIHBhcnNlci55ZWFyID0gMSArIGlzb1llYXI7XG4gICAgICAgIGRheU9mWWVhciAtPSBkYXlzSW5ZZWFyO1xuICAgIH1lbHNle1xuICAgICAgICBwYXJzZXIueWVhciA9IGlzb1llYXI7XG4gICAgfVxuICAgIHBhcnNlci5tb250aCA9IGdldE1vbnRoRnJvbURheU9mWWVhcihwYXJzZXIueWVhciwgZGF5T2ZZZWFyKTtcbiAgICBwYXJzZXIuZGF5T2ZNb250aCA9IGdldERheU9mTW9udGhGcm9tRGF5T2ZZZWFyKHBhcnNlci55ZWFyLCBkYXlPZlllYXIpO1xufVxuXG5mdW5jdGlvbiBnZXREYXRlRnJvbVN1bmRheVdlZWtEYXRlKHBhcnNlciwgeWVhciwgd2Vla09mWWVhciwgZGF5T2ZXZWVrKXtcbiAgICBjb25zdCBmaXJzdERheU9mV2VlayA9IGdldEZpcnN0V2Vla2RheUluWWVhcih5ZWFyKTtcbiAgICBjb25zdCBkYXlPZlllYXIgPSAxICsgNyAqIHdlZWtPZlllYXIgLSAoZmlyc3REYXlPZldlZWsgfHwgNykgKyBkYXlPZldlZWs7XG4gICAgcGFyc2VyLnllYXIgPSB5ZWFyO1xuICAgIHBhcnNlci5tb250aCA9IGdldE1vbnRoRnJvbURheU9mWWVhcih5ZWFyLCBkYXlPZlllYXIpO1xuICAgIHBhcnNlci5kYXlPZk1vbnRoID0gZ2V0RGF5T2ZNb250aEZyb21EYXlPZlllYXIoeWVhciwgZGF5T2ZZZWFyKTtcbn1cblxuZnVuY3Rpb24gZ2V0RGF0ZUZyb21Nb25kYXlXZWVrRGF0ZShwYXJzZXIsIHllYXIsIHdlZWtPZlllYXIsIGRheU9mV2Vlayl7XG4gICAgY29uc3QgZmlyc3REYXlPZldlZWsgPSBnZXRGaXJzdFdlZWtkYXlJblllYXIoeWVhcik7XG4gICAgY29uc3Qgc3VuZGF5RGF5T2ZZZWFyID0gMSArIDcgKiB3ZWVrT2ZZZWFyIC0gKGZpcnN0RGF5T2ZXZWVrIHx8IDcpICsgZGF5T2ZXZWVrO1xuICAgIGNvbnN0IGRheU9mWWVhciA9IHN1bmRheURheU9mWWVhciArIChcbiAgICAgICAgKGRheU9mV2VlayA9PT0gMCA/IDcgOiAwKSAtIChmaXJzdERheU9mV2VlayA9PT0gMSA/IDcgOiAwKVxuICAgICk7XG4gICAgcGFyc2VyLnllYXIgPSB5ZWFyO1xuICAgIHBhcnNlci5tb250aCA9IGdldE1vbnRoRnJvbURheU9mWWVhcih5ZWFyLCBkYXlPZlllYXIpO1xuICAgIHBhcnNlci5kYXlPZk1vbnRoID0gZ2V0RGF5T2ZNb250aEZyb21EYXlPZlllYXIoeWVhciwgZGF5T2ZZZWFyKTtcbn1cblxuY2xhc3MgVGltZXN0YW1wUGFyc2Vye1xuICAgIGNvbnN0cnVjdG9yKHRpbWVzdGFtcCwgZm9ybWF0LCB0b2tlbnMpe1xuICAgICAgICAvLyBQYXJzZXIgc3RhdGVcbiAgICAgICAgdGhpcy5pbmRleCA9IDA7XG4gICAgICAgIHRoaXMuc3RyaW5nID0gU3RyaW5nKHRpbWVzdGFtcCk7XG4gICAgICAgIHRoaXMuZm9ybWF0ID0gU3RyaW5nKGZvcm1hdCk7XG4gICAgICAgIHRoaXMudG9rZW5zID0gdG9rZW5zIHx8IFRpbWVzdGFtcFBhcnNlci5wYXJzZUZvcm1hdFN0cmluZyh0aGlzLmZvcm1hdCk7XG4gICAgICAgIHRoaXMuZm9ya0xlbmd0aCA9IDA7XG4gICAgICAgIHRoaXMuY3VycmVudFRva2VuID0gdW5kZWZpbmVkO1xuICAgICAgICAvLyBQYXJzZXIgc2V0dGluZ3NcbiAgICAgICAgdGhpcy5zaG9ydFdlZWtkYXlOYW1lcyA9IGVuZ2xpc2guc2hvcnRXZWVrZGF5TmFtZXM7XG4gICAgICAgIHRoaXMubG9uZ1dlZWtkYXlOYW1lcyA9IGVuZ2xpc2gubG9uZ1dlZWtkYXlOYW1lcztcbiAgICAgICAgdGhpcy5zaG9ydE1vbnRoTmFtZXMgPSBlbmdsaXNoLnNob3J0TW9udGhOYW1lcztcbiAgICAgICAgdGhpcy5sb25nTW9udGhOYW1lcyA9IGVuZ2xpc2gubG9uZ01vbnRoTmFtZXM7XG4gICAgICAgIHRoaXMuZXJhTmFtZXMgPSBlbmdsaXNoLmVyYU5hbWVzO1xuICAgICAgICB0aGlzLm1lcmlkaWVtTmFtZXMgPSBlbmdsaXNoLm1lcmlkaWVtTmFtZXM7XG4gICAgICAgIHRoaXMub3JkaW5hbFRyYW5zZm9ybSA9IGVuZ2xpc2gub3JkaW5hbFRyYW5zZm9ybTtcbiAgICAgICAgdGhpcy50aW1lem9uZU5hbWVzID0gZGVmYXVsdFRpbWV6b25lTmFtZXM7XG4gICAgICAgIC8vIFN0b3JhZ2UgdmFsdWVzIGZyb20gcGFyc2luZyB0b2tlbnNcbiAgICAgICAgdGhpcy5lcmEgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuY2VudHVyeSA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy55ZWFyID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLnR3b0RpZ2l0WWVhciA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5pc29ZZWFyID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmlzb1R3b0RpZ2l0WWVhciA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5tb250aCA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5pc29XZWVrT2ZZZWFyID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLndlZWtPZlllYXJGcm9tU3VuZGF5ID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLndlZWtPZlllYXJGcm9tTW9uZGF5ID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmRheU9mWWVhciA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5kYXlPZk1vbnRoID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmRheU9mV2VlayA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5ob3VyID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLm1pbnV0ZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5zZWNvbmQgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMubWlsbGlzZWNvbmQgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMubWljcm9zZWNvbmQgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMubWVyaWRpZW0gPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMudGltZXpvbmVPZmZzZXRNaW51dGVzID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLnNlY29uZHNTaW5jZUVwb2NoID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLm1pbGxpc2Vjb25kc1NpbmNlRXBvY2ggPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMubWljcm9zZWNvbmRzU2luY2VFcG9jaCA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgZ2V0VGltZXpvbmVPZmZzZXRPZkRhdGUoZGF0ZSl7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9ICh0aGlzLnRpbWV6b25lT2Zmc2V0TWludXRlcyA9PT0gdW5kZWZpbmVkID9cbiAgICAgICAgICAgIC1kYXRlLmdldFRpbWV6b25lT2Zmc2V0KCkgOlxuICAgICAgICAgICAgdGhpcy50aW1lem9uZU9mZnNldE1pbnV0ZXNcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3Qgb2Zmc2V0U2lnbiA9IG9mZnNldCA+PSAwID8gKzEgOiAtMTtcbiAgICAgICAgY29uc3QgYWJzT2Zmc2V0ID0gTWF0aC5hYnMob2Zmc2V0KTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGhvdXI6IG9mZnNldFNpZ24gKiBNYXRoLmZsb29yKGFic09mZnNldCAvIDYwKSxcbiAgICAgICAgICAgIG1pbnV0ZTogb2Zmc2V0U2lnbiAqIE1hdGguZmxvb3IoYWJzT2Zmc2V0ICUgNjApLFxuICAgICAgICAgICAgdG90YWxNaW51dGVzOiBvZmZzZXQsXG4gICAgICAgIH07XG4gICAgfVxuICAgIGdldERhdGUoKXtcbiAgICAgICAgaWYodGhpcy5taWNyb3NlY29uZHNTaW5jZUVwb2NoID09PSB1bmRlZmluZWQpe1xuICAgICAgICAgICAgaWYodGhpcy5taWxsaXNlY29uZHNTaW5jZUVwb2NoICE9PSB1bmRlZmluZWQpe1xuICAgICAgICAgICAgICAgIHRoaXMubWljcm9zZWNvbmRzU2luY2VFcG9jaCA9IDEwMDAgKiB0aGlzLm1pbGxpc2Vjb25kc1NpbmNlRXBvY2g7XG4gICAgICAgICAgICB9ZWxzZSBpZih0aGlzLnNlY29uZHNTaW5jZUVwb2NoICE9PSB1bmRlZmluZWQpe1xuICAgICAgICAgICAgICAgIHRoaXMubWljcm9zZWNvbmRzU2luY2VFcG9jaCA9IDEwMDAwMDAgKiB0aGlzLnNlY29uZHNTaW5jZUVwb2NoO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmKHRoaXMubWljcm9zZWNvbmRzU2luY2VFcG9jaCAhPT0gdW5kZWZpbmVkKXtcbiAgICAgICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh0aGlzLm1pY3Jvc2Vjb25kc1NpbmNlRXBvY2ggLyAxMDAwKTtcbiAgICAgICAgICAgIGNvbnN0IG9mZnNldCA9IHRoaXMuZ2V0VGltZXpvbmVPZmZzZXRPZkRhdGUoZGF0ZSk7XG4gICAgICAgICAgICBkYXRlLnNldFVUQ01pbnV0ZXMoZGF0ZS5nZXRVVENNaW51dGVzKCkgLSBvZmZzZXQudG90YWxNaW51dGVzKTtcbiAgICAgICAgICAgIHJldHVybiBkYXRlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgpO1xuICAgICAgICBpZih0aGlzLnllYXIgPT09IHVuZGVmaW5lZCAmJiB0aGlzLnR3b0RpZ2l0WWVhciAhPT0gdW5kZWZpbmVkKXtcbiAgICAgICAgICAgIGlmKHRoaXMuY2VudHVyeSA9PT0gdW5kZWZpbmVkKXtcbiAgICAgICAgICAgICAgICB0aGlzLnllYXIgPSBnZXRZZWFyRnJvbVR3b0RpZ2l0cyh0aGlzLnR3b0RpZ2l0WWVhcik7XG4gICAgICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgICAgICB0aGlzLnllYXIgPSAxMDAgKiB0aGlzLmNlbnR1cnkgKyB0aGlzLnR3b0RpZ2l0WWVhcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfWVsc2UgaWYodGhpcy5pc29ZZWFyID09PSB1bmRlZmluZWQgJiYgdGhpcy5pc29Ud29EaWdpdFllYXIgIT09IHVuZGVmaW5lZCl7XG4gICAgICAgICAgICB0aGlzLmlzb1llYXIgPSBnZXRZZWFyRnJvbVR3b0RpZ2l0cyh0aGlzLmlzb1R3b0RpZ2l0WWVhcik7XG4gICAgICAgIH1lbHNlIGlmKHRoaXMueWVhciA9PT0gdW5kZWZpbmVkICYmIHRoaXMuY2VudHVyeSAhPT0gdW5kZWZpbmVkKXtcbiAgICAgICAgICAgIHRoaXMueWVhciA9IDEwMCAqIHRoaXMuY2VudHVyeTtcbiAgICAgICAgfVxuICAgICAgICBpZih0aGlzLmVyYSAmJiB0aGlzLnllYXIgIT09IHVuZGVmaW5lZCl7XG4gICAgICAgICAgICB0aGlzLnllYXIgPSAxIC0gdGhpcy55ZWFyO1xuICAgICAgICB9XG4gICAgICAgIGlmKHRoaXMuaG91ciAhPT0gdW5kZWZpbmVkICYmIHRoaXMubWVyaWRpZW0gIT09IHVuZGVmaW5lZCl7XG4gICAgICAgICAgICB0aGlzLmhvdXIgPSAodGhpcy5ob3VyICUgMTIpICsgKHRoaXMubWVyaWRpZW0gPyAxMiA6IDApO1xuICAgICAgICB9XG4gICAgICAgIGlmKHRoaXMubWljcm9zZWNvbmQgPT09IHVuZGVmaW5lZCAmJiB0aGlzLm1pbGxpc2Vjb25kICE9PSB1bmRlZmluZWQpe1xuICAgICAgICAgICAgdGhpcy5taWNyb3NlY29uZCA9IDEwMDAgKiB0aGlzLm1pbGxpc2Vjb25kO1xuICAgICAgICB9XG4gICAgICAgIGlmKHRoaXMuaXNvWWVhciAhPT0gdW5kZWZpbmVkICYmIHRoaXMuaXNvV2Vla09mWWVhciAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAodGhpcy5tb250aCA9PT0gdW5kZWZpbmVkIHx8IHRoaXMuZGF5T2ZNb250aCA9PT0gdW5kZWZpbmVkKVxuICAgICAgICApe1xuICAgICAgICAgICAgZ2V0RGF0ZUZyb21JU09XZWVrRGF0ZSh0aGlzLFxuICAgICAgICAgICAgICAgIHRoaXMuaXNvWWVhciwgdGhpcy5pc29XZWVrT2ZZZWFyLCB0aGlzLmRheU9mV2VlayB8fCAwXG4gICAgICAgICAgICApO1xuICAgICAgICB9ZWxzZSBpZih0aGlzLmRheU9mWWVhciAhPT0gdW5kZWZpbmVkKXtcbiAgICAgICAgICAgIGNvbnN0IHllYXIgPSB0aGlzLnllYXIgIT09IHVuZGVmaW5lZCA/IHRoaXMueWVhciA6IGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICAgICAgICAgIGlmKHRoaXMubW9udGggPT09IHVuZGVmaW5lZCl7XG4gICAgICAgICAgICAgICAgdGhpcy5tb250aCA9IGdldE1vbnRoRnJvbURheU9mWWVhcih5ZWFyLCB0aGlzLmRheU9mWWVhcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZih0aGlzLmRheU9mTW9udGggPT09IHVuZGVmaW5lZCl7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXlPZk1vbnRoID0gZ2V0RGF5T2ZNb250aEZyb21EYXlPZlllYXIoeWVhciwgdGhpcy5kYXlPZlllYXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9ZWxzZSBpZih0aGlzLndlZWtPZlllYXJGcm9tU3VuZGF5ICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICh0aGlzLm1vbnRoID09PSB1bmRlZmluZWQgfHwgdGhpcy5kYXlPZk1vbnRoID09PSB1bmRlZmluZWQpXG4gICAgICAgICl7XG4gICAgICAgICAgICBjb25zdCB5ZWFyID0gdGhpcy55ZWFyICE9PSB1bmRlZmluZWQgPyB0aGlzLnllYXIgOiBkYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgICAgICAgICBnZXREYXRlRnJvbVN1bmRheVdlZWtEYXRlKHRoaXMsXG4gICAgICAgICAgICAgICAgeWVhciwgdGhpcy53ZWVrT2ZZZWFyRnJvbVN1bmRheSwgdGhpcy5kYXlPZldlZWsgfHwgMFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfWVsc2UgaWYodGhpcy53ZWVrT2ZZZWFyRnJvbU1vbmRheSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAodGhpcy5tb250aCA9PT0gdW5kZWZpbmVkIHx8IHRoaXMuZGF5T2ZNb250aCA9PT0gdW5kZWZpbmVkKVxuICAgICAgICApe1xuICAgICAgICAgICAgY29uc3QgeWVhciA9IHRoaXMueWVhciAhPT0gdW5kZWZpbmVkID8gdGhpcy55ZWFyIDogZGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgICAgICAgZ2V0RGF0ZUZyb21Nb25kYXlXZWVrRGF0ZSh0aGlzLFxuICAgICAgICAgICAgICAgIHllYXIsIHRoaXMud2Vla09mWWVhckZyb21Nb25kYXksIHRoaXMuZGF5T2ZXZWVrIHx8IDBcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgaWYodGhpcy55ZWFyICE9PSB1bmRlZmluZWQpe1xuICAgICAgICAgICAgZGF0ZS5zZXRVVENGdWxsWWVhcih0aGlzLnllYXIpO1xuICAgICAgICB9XG4gICAgICAgIGlmKHRoaXMubW9udGggIT09IHVuZGVmaW5lZCl7XG4gICAgICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vcGluZWFwcGxlbWFjaGluZS9zdHJ0aW1lLWpzL2lzc3Vlcy81XG4gICAgICAgICAgICAvLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8yNjY4MTMxMy9qYXZhc2NyaXB0LXNldHV0Y21vbnRoLWRvZXMtbm90LXdvcmstZm9yLW5vdmVtYmVyXG4gICAgICAgICAgICBkYXRlLnNldFVUQ01vbnRoKDAsIDEpO1xuICAgICAgICAgICAgZGF0ZS5zZXRVVENNb250aCh0aGlzLm1vbnRoIC0gMSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYodGhpcy5kYXlPZk1vbnRoICE9PSB1bmRlZmluZWQpe1xuICAgICAgICAgICAgZGF0ZS5zZXRVVENEYXRlKHRoaXMuZGF5T2ZNb250aCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gdGhpcy5nZXRUaW1lem9uZU9mZnNldE9mRGF0ZShkYXRlKTtcbiAgICAgICAgaWYob2Zmc2V0LnRvdGFsTWludXRlcyl7XG4gICAgICAgICAgICB0aGlzLmhvdXIgPSAodGhpcy5ob3VyIHx8IDApIC0gb2Zmc2V0LmhvdXI7XG4gICAgICAgICAgICB0aGlzLm1pbnV0ZSA9ICh0aGlzLm1pbnV0ZSB8fCAwKSAtIG9mZnNldC5taW51dGU7XG4gICAgICAgIH1cbiAgICAgICAgZGF0ZS5zZXRVVENIb3Vycyh0aGlzLmhvdXIgfHwgMCk7XG4gICAgICAgIGRhdGUuc2V0VVRDTWludXRlcyh0aGlzLm1pbnV0ZSB8fCAwKTtcbiAgICAgICAgZGF0ZS5zZXRVVENTZWNvbmRzKHRoaXMuc2Vjb25kIHx8IDApO1xuICAgICAgICBkYXRlLnNldFVUQ01pbGxpc2Vjb25kcyh0aGlzLm1pY3Jvc2Vjb25kID8gdGhpcy5taWNyb3NlY29uZCAvIDEwMDAgOiAwKTtcbiAgICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuICAgIGNvcHkoKXtcbiAgICAgICAgY29uc3QgcGFyc2VyID0gbmV3IFRpbWVzdGFtcFBhcnNlcih0aGlzLnN0cmluZywgdGhpcy5mb3JtYXQsIHRoaXMudG9rZW5zKTtcbiAgICAgICAgZm9yKGxldCBrZXkgaW4gdGhpcyl7XG4gICAgICAgICAgICBwYXJzZXJba2V5XSA9IHRoaXNba2V5XTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcGFyc2VyO1xuICAgIH1cbiAgICBmb3JrKGxlbmd0aCwgc3RhcnRUb2tlbkluZGV4KXtcbiAgICAgICAgY29uc3QgcGFyc2VyID0gdGhpcy5jb3B5KCk7XG4gICAgICAgIHBhcnNlci5mb3JrTGVuZ3RoID0gbGVuZ3RoO1xuICAgICAgICByZXR1cm4gcGFyc2VyLnBhcnNlKHN0YXJ0VG9rZW5JbmRleCk7XG4gICAgfVxuICAgIHBhcnNlKHN0YXJ0VG9rZW5JbmRleCl7XG4gICAgICAgIGZvcihsZXQgaSA9IHN0YXJ0VG9rZW5JbmRleCB8fCAwOyBpIDwgdGhpcy50b2tlbnMubGVuZ3RoOyBpKyspe1xuICAgICAgICAgICAgY29uc3QgdG9rZW4gPSB0aGlzLnRva2Vuc1tpXTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRva2VuID0gdG9rZW47XG4gICAgICAgICAgICBpZih0aGlzLmluZGV4ID49IHRoaXMuc3RyaW5nLmxlbmd0aCkgdGhyb3cgbmV3IFRpbWVzdGFtcFBhcnNlRXJyb3IoXG4gICAgICAgICAgICAgICAgXCJUaW1lc3RhbXAgaXMgdG9vIHNob3J0IHRvIG1hdGNoIHRoZSB3aG9sZSBmb3JtYXQuXCIsIHRoaXNcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZih0b2tlbiBpbnN0YW5jZW9mIERpcmVjdGl2ZS5TdHJpbmdUb2tlbil7XG4gICAgICAgICAgICAgICAgdGhpcy5wYXJzZVN0cmluZ1Rva2VuKHRva2VuLnN0cmluZyk7XG4gICAgICAgICAgICB9ZWxzZSBpZih0b2tlbi5oYXNQYXJzZUZ1bmN0aW9uKCkpe1xuICAgICAgICAgICAgICAgIHRva2VuLnBhcnNlKHRoaXMpO1xuICAgICAgICAgICAgfWVsc2UgaWYodG9rZW4uaGFzU3RvcmVGdW5jdGlvbigpICYmICF0b2tlbi50ZXh0KXtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXh0ID0gdGhpcy50b2tlbnNbMSArIGldO1xuICAgICAgICAgICAgICAgIGlmKChuZXh0IGluc3RhbmNlb2YgRGlyZWN0aXZlLlN0cmluZ1Rva2VuICYmIGlzRGlnaXQobmV4dC5zdHJpbmdbMF0pKSB8fCAoKFxuICAgICAgICAgICAgICAgICAgICBuZXh0IGluc3RhbmNlb2YgRGlyZWN0aXZlIHx8XG4gICAgICAgICAgICAgICAgICAgIG5leHQgaW5zdGFuY2VvZiBEaXJlY3RpdmUuVG9rZW5cbiAgICAgICAgICAgICAgICApICYmICFuZXh0LnRleHQpKXtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5wYXJzZUFtYmlndW91c051bWJlcih0b2tlbiwgaSk7XG4gICAgICAgICAgICAgICAgICAgIGlmKHJlc3VsdCkgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgICAgICAgICAgdG9rZW4uc3RvcmUodGhpcywgdGhpcy5wYXJzZU51bWJlcih0b2tlbikpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1lbHNle1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUaW1lc3RhbXBQYXJzZUVycm9yKFwiSW52YWxpZCBkaXJlY3RpdmUuXCIsIHRoaXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuY3VycmVudFRva2VuID0gdW5kZWZpbmVkO1xuICAgICAgICBpZigxICsgdGhpcy5pbmRleCA8IHRoaXMuc3RyaW5nLmxlbmd0aCkgdGhyb3cgbmV3IFRpbWVzdGFtcFBhcnNlRXJyb3IoXG4gICAgICAgICAgICBgVGltZXN0YW1wIGlzIHRvbyBsb25nIGZvciB0aGUgZ2l2ZW4gZm9ybWF0LiBUZXh0IHJlbWFpbmluZzogXCIke3RoaXMuc3RyaW5nLnNsaWNlKHRoaXMuaW5kZXgpfVwiLmAsIHRoaXNcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIHBhcnNlU3RyaW5nVG9rZW4odG9rZW4pe1xuICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgdG9rZW4ubGVuZ3RoOyBpKyspe1xuICAgICAgICAgICAgaWYodGhpcy5zdHJpbmdbdGhpcy5pbmRleF0gIT09IHRva2VuW2ldKXtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVGltZXN0YW1wUGFyc2VFcnJvcihgU3RyaW5nIGxpdGVyYWwgXCIke3Rva2VufVwiIG5vdCBtYXRjaGVkLmAsIHRoaXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5pbmRleCsrO1xuICAgICAgICB9XG4gICAgfVxuICAgIHBhcnNlQW1iaWd1b3VzTnVtYmVyKHRva2VuLCB0b2tlbkluZGV4KXtcbiAgICAgICAgaWYodGhpcy5mb3JrTGVuZ3RoID09PSAwKXtcbiAgICAgICAgICAgIGNvbnN0IGxpa2VseUxlbmd0aCA9IHRva2VuLmdldExpa2VseUxlbmd0aCgpO1xuICAgICAgICAgICAgaWYobGlrZWx5TGVuZ3RoKXtcbiAgICAgICAgICAgICAgICB0cnl7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmZvcmsobGlrZWx5TGVuZ3RoLCB0b2tlbkluZGV4KTtcbiAgICAgICAgICAgICAgICB9Y2F0Y2goZXJyb3Ipe1xuICAgICAgICAgICAgICAgICAgICBpZighKGVycm9yIGluc3RhbmNlb2YgVGltZXN0YW1wUGFyc2VFcnJvcikpIHRocm93IGVycm9yO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBsYXN0V2hvbGVFcnJvciA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGZvcihsZXQgaSA9IDE7IGkgPCB0aGlzLnN0cmluZy5sZW5ndGggLSB0aGlzLmluZGV4OyBpKyspe1xuICAgICAgICAgICAgICAgIGlmKGkgPT09IHRva2VuLmxpa2VseUxlbmd0aCkgY29udGludWU7XG4gICAgICAgICAgICAgICAgdHJ5e1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5mb3JrKGksIHRva2VuSW5kZXgpO1xuICAgICAgICAgICAgICAgIH1jYXRjaChlcnJvcil7XG4gICAgICAgICAgICAgICAgICAgIGlmKCEoZXJyb3IgaW5zdGFuY2VvZiBUaW1lc3RhbXBQYXJzZUVycm9yKSkgdGhyb3cgZXJyb3I7XG4gICAgICAgICAgICAgICAgICAgIGlmKGVycm9yLm1lc3NhZ2UgPSBcIlRpbWVzdGFtcCBpcyB0b28gc2hvcnQgdG8gbWF0Y2ggdGhlIHdob2xlIGZvcm1hdC5cIil7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXN0V2hvbGVFcnJvciA9IGVycm9yO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYobGFzdFdob2xlRXJyb3Ipe1xuICAgICAgICAgICAgICAgIHRocm93IGxhc3RXaG9sZUVycm9yO1xuICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFRpbWVzdGFtcFBhcnNlRXJyb3IoXCJGYWlsZWQgdG8gcGFyc2UgYW1iaWd1b3VzIG51bWJlci5cIiwgdGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1lbHNle1xuICAgICAgICAgICAgY29uc3QgbnVtYmVyID0gdGhpcy5wYXJzZU51bWJlcih0b2tlbiwgdGhpcy5mb3JrTGVuZ3RoKTtcbiAgICAgICAgICAgIHRva2VuLnN0b3JlKHRoaXMsIG51bWJlcik7XG4gICAgICAgICAgICB0aGlzLmZvcmtMZW5ndGggPSAwO1xuICAgICAgICB9XG4gICAgfVxuICAgIHBhcnNlTnVtYmVyKGRpcmVjdGl2ZSwgbGVuZ3RoTGltaXQgPSBJbmZpbml0eSl7XG4gICAgICAgIGNvbnN0IG5lZ2F0aXZlID0gdGhpcy5zdHJpbmdbdGhpcy5pbmRleF0gPT09IFwiLVwiO1xuICAgICAgICBpZihuZWdhdGl2ZSAmJiAhZGlyZWN0aXZlLmdldENhbkJlTmVnYXRpdmUoKSl7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVGltZXN0YW1wUGFyc2VFcnJvcihcIk51bWJlciBjYW5ub3QgYmUgbmVnYXRpdmUuXCIsIHRoaXMpO1xuICAgICAgICB9ZWxzZSBpZihuZWdhdGl2ZSl7XG4gICAgICAgICAgICB0aGlzLmluZGV4Kys7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3RhcnQgPSB0aGlzLmluZGV4O1xuICAgICAgICB3aGlsZSh0aGlzLmluZGV4IDwgdGhpcy5zdHJpbmcubGVuZ3RoICYmXG4gICAgICAgICAgICB0aGlzLnN0cmluZ1t0aGlzLmluZGV4XSA9PT0gXCIgXCJcbiAgICAgICAgKXtcbiAgICAgICAgICAgIHRoaXMuaW5kZXgrKztcbiAgICAgICAgfVxuICAgICAgICB3aGlsZSh0aGlzLmluZGV4IDwgdGhpcy5zdHJpbmcubGVuZ3RoICYmXG4gICAgICAgICAgICB0aGlzLmluZGV4IC0gc3RhcnQgPCBsZW5ndGhMaW1pdCAmJiBpc0RpZ2l0KHRoaXMuc3RyaW5nW3RoaXMuaW5kZXhdKVxuICAgICAgICApe1xuICAgICAgICAgICAgdGhpcy5pbmRleCsrO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHZhbHVlID0gK3RoaXMuc3RyaW5nLnNsaWNlKHN0YXJ0LCB0aGlzLmluZGV4KS50cmltKCk7XG4gICAgICAgIGlmKCFOdW1iZXIuaXNJbnRlZ2VyKHZhbHVlKSl7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVGltZXN0YW1wUGFyc2VFcnJvcihcIkZhaWxlZCB0byBwYXJzZSBudW1iZXIuXCIsIHRoaXMpO1xuICAgICAgICB9ZWxzZSBpZighZGlyZWN0aXZlLm51bWJlckluQm91bmRzKHZhbHVlKSl7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVGltZXN0YW1wUGFyc2VFcnJvcihgTnVtYmVyIFske3ZhbHVlfV0gaXMgb3V0IG9mIGJvdW5kcyAke2RpcmVjdGl2ZS5nZXRCb3VuZHNTdHJpbmcoKX0uYCwgdGhpcyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gbmVnYXRpdmUgPyAtdmFsdWUgOiB2YWx1ZTtcbiAgICAgICAgaWYoZGlyZWN0aXZlLmlzT3JkaW5hbCgpKXtcbiAgICAgICAgICAgIGNvbnN0IG9yZGluYWwgPSB0aGlzLm9yZGluYWxUcmFuc2Zvcm0ocmVzdWx0KTtcbiAgICAgICAgICAgIHRoaXMuaW5kZXggKz0gb3JkaW5hbC5sZW5ndGggLSAodGhpcy5pbmRleCAtIHN0YXJ0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICBwYXJzZU1vbnRoTmFtZSgpe1xuICAgICAgICBjb25zdCBuYW1lcyA9IHRoaXMuc2hvcnRNb250aE5hbWVzLnNsaWNlKCk7XG4gICAgICAgIG5hbWVzLnB1c2goLi4udGhpcy5sb25nTW9udGhOYW1lcyk7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5wYXJzZUluZGV4SW5MaXN0KG5hbWVzKTtcbiAgICAgICAgaWYoaW5kZXggPT09IHVuZGVmaW5lZCkgdGhyb3cgbmV3IFRpbWVzdGFtcFBhcnNlRXJyb3IoXG4gICAgICAgICAgICBcIkZhaWxlZCB0byBwYXJzZSBtb250aCBuYW1lLlwiLCB0aGlzXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBpbmRleCAlIDEyO1xuICAgIH1cbiAgICBwYXJzZVdlZWtkYXlOYW1lKCl7XG4gICAgICAgIGNvbnN0IG5hbWVzID0gdGhpcy5zaG9ydFdlZWtkYXlOYW1lcy5zbGljZSgpO1xuICAgICAgICBuYW1lcy5wdXNoKC4uLnRoaXMubG9uZ1dlZWtkYXlOYW1lcyk7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5wYXJzZUluZGV4SW5MaXN0KG5hbWVzKTtcbiAgICAgICAgaWYoaW5kZXggPT09IHVuZGVmaW5lZCkgdGhyb3cgbmV3IFRpbWVzdGFtcFBhcnNlRXJyb3IoXG4gICAgICAgICAgICBcIkZhaWxlZCB0byBwYXJzZSB3ZWVrZGF5IG5hbWUuXCIsIHRoaXNcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIGluZGV4ICUgNztcbiAgICB9XG4gICAgcGFyc2VNZXJpZGllbU5hbWUoKXtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnBhcnNlSW5kZXhJbkxpc3QodGhpcy5tZXJpZGllbU5hbWVzKTtcbiAgICAgICAgaWYoaW5kZXggPT09IHVuZGVmaW5lZCkgdGhyb3cgbmV3IFRpbWVzdGFtcFBhcnNlRXJyb3IoXG4gICAgICAgICAgICBcIkZhaWxlZCB0byBwYXJzZSBBTS9QTS5cIiwgdGhpc1xuICAgICAgICApO1xuICAgICAgICByZXR1cm4gaW5kZXggJSAyO1xuICAgIH1cbiAgICBwYXJzZUVyYU5hbWUoKXtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnBhcnNlSW5kZXhJbkxpc3QodGhpcy5lcmFOYW1lcyk7XG4gICAgICAgIGlmKGluZGV4ID09PSB1bmRlZmluZWQpIHRocm93IG5ldyBUaW1lc3RhbXBQYXJzZUVycm9yKFxuICAgICAgICAgICAgXCJGYWlsZWQgdG8gcGFyc2UgZXJhIG5hbWUuXCIsIHRoaXNcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIGluZGV4ICUgMjtcbiAgICB9XG4gICAgcGFyc2VJbmRleEluTGlzdChsaXN0KXtcbiAgICAgICAgY29uc3QgcG9zc2libGUgPSBsaXN0LnNsaWNlKCk7XG4gICAgICAgIGxldCBwb3NzaWJsZUNvdW50ID0gcG9zc2libGUubGVuZ3RoO1xuICAgICAgICBsZXQgbWF0Y2hJbmRleCA9IHVuZGVmaW5lZDtcbiAgICAgICAgbGV0IG1hdGNoTGVuZ3RoID0gMDtcbiAgICAgICAgZm9yKGxldCBpID0gMDsgcG9zc2libGVDb3VudCAmJiB0aGlzLmluZGV4ICsgaSA8IHRoaXMuc3RyaW5nLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgICAgIGNvbnN0IGNoID0gdGhpcy5zdHJpbmdbdGhpcy5pbmRleCArIGldLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICBmb3IobGV0IGogPSAwOyBqIDwgcG9zc2libGUubGVuZ3RoOyBqKyspe1xuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSBwb3NzaWJsZVtqXTtcbiAgICAgICAgICAgICAgICBpZighaXRlbSkgY29udGludWU7XG4gICAgICAgICAgICAgICAgaWYoaSA+PSBpdGVtLmxlbmd0aCB8fCBpdGVtW2ldLnRvTG93ZXJDYXNlKCkgIT09IGNoKXtcbiAgICAgICAgICAgICAgICAgICAgcG9zc2libGVbal0gPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICBwb3NzaWJsZUNvdW50LS07XG4gICAgICAgICAgICAgICAgfWVsc2UgaWYoMSArIGkgPT09IGl0ZW0ubGVuZ3RoKXtcbiAgICAgICAgICAgICAgICAgICAgbWF0Y2hJbmRleCA9IGo7XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoTGVuZ3RoID0gMSArIGk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmKG1hdGNoSW5kZXggPT09IHVuZGVmaW5lZCl7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgIHRoaXMuaW5kZXggKz0gbWF0Y2hMZW5ndGg7XG4gICAgICAgICAgICByZXR1cm4gbWF0Y2hJbmRleDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXRUaW1lem9uZU5hbWVMaXN0KCl7XG4gICAgICAgIGlmKCF0aGlzLnRpbWV6b25lTmFtZUxpc3Qpe1xuICAgICAgICAgICAgdGhpcy50aW1lem9uZU5hbWVMaXN0ID0gW107XG4gICAgICAgICAgICBmb3IobGV0IGtleSBpbiB0aGlzLnRpbWV6b25lTmFtZXMpe1xuICAgICAgICAgICAgICAgIHRoaXMudGltZXpvbmVOYW1lTGlzdC5wdXNoKGtleSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMudGltZXpvbmVOYW1lTGlzdDtcbiAgICB9XG4gICAgcGFyc2VUaW1lem9uZU9mZnNldChtb2RpZmllcil7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5pbmRleDtcbiAgICAgICAgY29uc3Qgc2lnbiA9IHRoaXMuc3RyaW5nW3RoaXMuaW5kZXhdO1xuICAgICAgICBjb25zdCBob3VycyA9ICt0aGlzLnN0cmluZy5zbGljZSh0aGlzLmluZGV4ICsgMSwgdGhpcy5pbmRleCArIDMpO1xuICAgICAgICBsZXQgbWludXRlcztcbiAgICAgICAgaWYodGhpcy5zdHJpbmdbdGhpcy5pbmRleCArIDNdID09PSBcIjpcIil7XG4gICAgICAgICAgICBtaW51dGVzID0gK3RoaXMuc3RyaW5nLnNsaWNlKHRoaXMuaW5kZXggKyA0LCB0aGlzLmluZGV4ICsgNik7XG4gICAgICAgICAgICB0aGlzLmluZGV4ICs9IDY7XG4gICAgICAgIH1lbHNle1xuICAgICAgICAgICAgbWludXRlcyA9ICt0aGlzLnN0cmluZy5zbGljZSh0aGlzLmluZGV4ICsgMywgdGhpcy5pbmRleCArIDUpO1xuICAgICAgICAgICAgdGhpcy5pbmRleCArPSA1O1xuICAgICAgICB9XG4gICAgICAgIGlmKCFOdW1iZXIuaXNJbnRlZ2VyKGhvdXJzKSB8fCAhTnVtYmVyLmlzSW50ZWdlcihtaW51dGVzKSl7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVGltZXN0YW1wUGFyc2VFcnJvcihcbiAgICAgICAgICAgICAgICBgRmFpbGVkIHRvIHBhcnNlIHRpbWV6b25lIG9mZnNldCBmcm9tIHN0cmluZyBgICtcbiAgICAgICAgICAgICAgICBgXCIke3RoaXMuc3RyaW5nLnNsaWNlKHN0YXJ0LCB0aGlzLmluZGV4KX1cIi5gLCB0aGlzXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IG1pbnV0ZXMgKyA2MCAqIGhvdXJzO1xuICAgICAgICBpZihzaWduID09PSBcIitcIiB8fCBzaWduID09PSBcIsKxXCIpIHJldHVybiArb2Zmc2V0O1xuICAgICAgICBlbHNlIGlmKHNpZ24gPT09IFwiLVwiKSByZXR1cm4gLW9mZnNldDtcbiAgICAgICAgZWxzZSB0aHJvdyBuZXcgVGltZXN0YW1wUGFyc2VFcnJvcihgVW5rbm93biB0aW1lem9uZSBvZmZzZXQgc2lnbiBcIiR7c2lnbn1cIi5gLCB0aGlzKTtcbiAgICB9XG59XG5cblRpbWVzdGFtcFBhcnNlci5wYXJzZUZvcm1hdFN0cmluZyA9IGZ1bmN0aW9uIHBhcnNlRm9ybWF0U3RyaW5nKGZvcm1hdCl7XG4gICAgY29uc3QgdG9rZW5zID0gW107XG4gICAgbGV0IGRpcmVjdGl2ZSA9IGZhbHNlO1xuICAgIGxldCBtb2RpZmllciA9IHVuZGVmaW5lZDtcbiAgICBjb25zdCBmb3JtYXRTdHJpbmcgPSBTdHJpbmcoZm9ybWF0KTtcbiAgICBpZighZm9ybWF0U3RyaW5nKXtcbiAgICAgICAgdGhyb3cgbmV3IFRpbWVzdGFtcFBhcnNlRXJyb3IoYEVtcHR5IGZvcm1hdCBzdHJpbmcuYCwge1xuICAgICAgICAgICAgZm9ybWF0OiBmb3JtYXRTdHJpbmdcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGFkZENoYXJhY3RlcihjaCl7XG4gICAgICAgIGlmKHRva2Vucy5sZW5ndGggJiYgKHRva2Vuc1t0b2tlbnMubGVuZ3RoIC0gMV0gaW5zdGFuY2VvZiBEaXJlY3RpdmUuU3RyaW5nVG9rZW4pKXtcbiAgICAgICAgICAgIGlmKGlzRGlnaXQoY2gpID09PSBpc0RpZ2l0KHRva2Vuc1t0b2tlbnMubGVuZ3RoIC0gMV0uc3RyaW5nWzBdKSl7XG4gICAgICAgICAgICAgICAgdG9rZW5zW3Rva2Vucy5sZW5ndGggLSAxXS5hZGRDaGFyYWN0ZXIoY2gpO1xuICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgICAgdG9rZW5zLnB1c2gobmV3IERpcmVjdGl2ZS5TdHJpbmdUb2tlbihjaCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgIHRva2Vucy5wdXNoKG5ldyBEaXJlY3RpdmUuU3RyaW5nVG9rZW4oY2gpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBmb3IobGV0IGNoIG9mIGZvcm1hdFN0cmluZyl7XG4gICAgICAgIGlmKGRpcmVjdGl2ZSAmJiBjaCA9PT0gXCIlXCIpe1xuICAgICAgICAgICAgYWRkQ2hhcmFjdGVyKFwiJVwiKTtcbiAgICAgICAgICAgIG1vZGlmaWVyID0gXCJcIjtcbiAgICAgICAgICAgIGRpcmVjdGl2ZSA9IGZhbHNlO1xuICAgICAgICB9ZWxzZSBpZihkaXJlY3RpdmUgJiYgY2ggPT09IFwiblwiKXtcbiAgICAgICAgICAgIGFkZENoYXJhY3RlcihcIlxcblwiKTtcbiAgICAgICAgICAgIG1vZGlmaWVyID0gXCJcIjtcbiAgICAgICAgICAgIGRpcmVjdGl2ZSA9IGZhbHNlO1xuICAgICAgICB9ZWxzZSBpZihkaXJlY3RpdmUgJiYgY2ggPT09IFwidFwiKXtcbiAgICAgICAgICAgIGFkZENoYXJhY3RlcihcIlxcdFwiKTtcbiAgICAgICAgICAgIG1vZGlmaWVyID0gXCJcIjtcbiAgICAgICAgICAgIGRpcmVjdGl2ZSA9IGZhbHNlO1xuICAgICAgICB9ZWxzZSBpZihkaXJlY3RpdmUgJiYgIW1vZGlmaWVyICYmIChcbiAgICAgICAgICAgIGNoID09PSBcIi1cIiB8fCBjaCA9PT0gXCJfXCIgfHwgY2ggPT09IFwiXlwiIHx8IGNoID09PSBcIjpcIlxuICAgICAgICApKXtcbiAgICAgICAgICAgIG1vZGlmaWVyICs9IGNoO1xuICAgICAgICB9ZWxzZSBpZihkaXJlY3RpdmUpe1xuICAgICAgICAgICAgY29uc3QgZGlyID0gRGlyZWN0aXZlLmdldEJ5TmFtZShjaCk7XG4gICAgICAgICAgICBpZighZGlyKSB0aHJvdyBuZXcgVGltZXN0YW1wUGFyc2VFcnJvcihgVW5rbm93biBkaXJlY3RpdmUgXCIlJHttb2RpZmllcn0ke2NofVwiLmAsIHtcbiAgICAgICAgICAgICAgICBmb3JtYXQ6IGZvcm1hdFN0cmluZ1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBlbHNlIGlmKGRpci5yZXdyaXRlKSB0b2tlbnMucHVzaChcbiAgICAgICAgICAgICAgICAuLi5kaXIuZ2V0UmV3cml0ZVBhcnNlZChUaW1lc3RhbXBQYXJzZXIucGFyc2VGb3JtYXRTdHJpbmcpXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgZWxzZSB0b2tlbnMucHVzaChcbiAgICAgICAgICAgICAgICBuZXcgRGlyZWN0aXZlLlRva2VuKG1vZGlmaWVyLCBkaXIpXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgbW9kaWZpZXIgPSBcIlwiO1xuICAgICAgICAgICAgZGlyZWN0aXZlID0gZmFsc2U7XG4gICAgICAgIH1lbHNlIGlmKGNoID09PSBcIiVcIil7XG4gICAgICAgICAgICBtb2RpZmllciA9IFwiXCI7XG4gICAgICAgICAgICBkaXJlY3RpdmUgPSB0cnVlO1xuICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgIGFkZENoYXJhY3RlcihjaCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYoZGlyZWN0aXZlKSB0aHJvdyBuZXcgVGltZXN0YW1wUGFyc2VFcnJvcihcbiAgICAgICAgXCJGb3VuZCB1bnRlcm1pbmF0ZWQgZGlyZWN0aXZlIGF0IHRoZSBlbmQgb2YgdGhlIGZvcm1hdCBzdHJpbmcuXCIsIHtcbiAgICAgICAgICAgIGZvcm1hdDogZm9ybWF0U3RyaW5nXG4gICAgICAgIH1cbiAgICApO1xuICAgIGlmKHRva2Vucy5sZW5ndGggJiYgdG9rZW5zW3Rva2Vucy5sZW5ndGggLSAxXS5zdHJpbmcgPT09IFwiWlwiKXtcbiAgICAgICAgdG9rZW5zLnp1bHVUaW1lem9uZSA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiB0b2tlbnM7XG59XG5cbmZ1bmN0aW9uIGlzTGVhcFllYXIoeWVhcil7XG4gICAgcmV0dXJuIHllYXIgJSA0ID09PSAwICYmICh5ZWFyICUgMTAwICE9PSAwIHx8IHllYXIgJSA0MDAgPT09IDApO1xufVxuXG5cbmNvbnN0IG1vbnRoTGVuZ3RocyA9IHtcbiAgICBjb21tb246IFszMSwgMjgsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzEsIDMwLCAzMSwgMzAsIDMxXSxcbiAgICBsZWFwOiBbMzEsIDI5LCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMxLCAzMCwgMzEsIDMwLCAzMV0sXG4gICAgZm9yWWVhcjogZnVuY3Rpb24oeWVhcil7XG4gICAgICAgIHJldHVybiBpc0xlYXBZZWFyKHllYXIpID8gbW9udGhMZW5ndGhzLmxlYXAgOiBtb250aExlbmd0aHMuY29tbW9uO1xuICAgIH0sXG59O1xuXG4vLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvNDc4OTkyLzQwOTkwMjJcbmZ1bmN0aW9uIGdldEZpcnN0V2Vla2RheUluWWVhcih5ZWFyKXtcbiAgICBjb25zdCB5ID0geWVhciAtIDE7XG4gICAgcmV0dXJuICh5ZWFyICogMzY1ICtcbiAgICAgICAgTWF0aC5mbG9vcih5IC8gNCkgLSBNYXRoLmZsb29yKHkgLyAxMDApICsgTWF0aC5mbG9vcih5IC8gNDAwKVxuICAgICkgJSA3O1xufVxuXG5jb25zdCBkZWZhdWx0VGltZXpvbmVOYW1lcyA9IHtcbiAgICBcIkFDRFRcIjogKzEwLjUsXG4gICAgXCJBQ1NUXCI6ICs5LjUsXG4gICAgXCJBQ1RcIjogLTUsXG4gICAgXCJBQ1dTVFwiOiArOC43NSxcbiAgICBcIkFEVFwiOiAtMyxcbiAgICBcIkFFRFRcIjogKzExLFxuICAgIFwiQUVTVFwiOiArMTAsXG4gICAgXCJBRlRcIjogKzQuNSxcbiAgICBcIkFLRFRcIjogLTgsXG4gICAgXCJBS1NUXCI6IC05LFxuICAgIFwiQU1TVFwiOiAtMyxcbiAgICBcIkFNVFwiOiAtNCxcbiAgICBcIkFNVFwiOiArNCxcbiAgICBcIkFSVFwiOiAtMyxcbiAgICBcIkFTVFwiOiArMyxcbiAgICBcIkFTVFwiOiAtNCxcbiAgICBcIkFXU1RcIjogKzgsXG4gICAgXCJBWk9TVFwiOiAwLFxuICAgIFwiQVpPVFwiOiAtMSxcbiAgICBcIkFaVFwiOiArNCxcbiAgICBcIkJEVFwiOiArOCxcbiAgICBcIkJJT1RcIjogKzYsXG4gICAgXCJCSVRcIjogLTEyLFxuICAgIFwiQk9UXCI6IC00LFxuICAgIFwiQlJTVFwiOiAtMixcbiAgICBcIkJSVFwiOiAtMyxcbiAgICBcIkJTVFwiOiArNixcbiAgICBcIkJTVFwiOiArMTEsXG4gICAgXCJCU1RcIjogKzEsXG4gICAgXCJCVFRcIjogKzYsXG4gICAgXCJDQVRcIjogKzIsXG4gICAgXCJDQ1RcIjogKzYuNSxcbiAgICBcIkNEVFwiOiAtNSxcbiAgICBcIkNEVFwiOiAtNCxcbiAgICBcIkNFU1RcIjogKzIsXG4gICAgXCJDRVRcIjogKzEsXG4gICAgXCJDSEFEVFwiOiArMTMuNzUsXG4gICAgXCJDSEFTVFwiOiArMTIuNzUsXG4gICAgXCJDSE9UXCI6ICs4LFxuICAgIFwiQ0hPU1RcIjogKzksXG4gICAgXCJDSFNUXCI6ICsxMCxcbiAgICBcIkNIVVRcIjogKzEwLFxuICAgIFwiQ0lTVFwiOiAtOCxcbiAgICBcIkNJVFwiOiArOCxcbiAgICBcIkNLVFwiOiAtMTAsXG4gICAgXCJDTFNUXCI6IC0zLFxuICAgIFwiQ0xUXCI6IC00LFxuICAgIFwiQ09TVFwiOiAtNCxcbiAgICBcIkNPVFwiOiAtNSxcbiAgICBcIkNTVFwiOiAtNixcbiAgICBcIkNTVFwiOiArOCxcbiAgICBcIkNTVFwiOiAtNSxcbiAgICBcIkNUXCI6ICs4LFxuICAgIFwiQ1ZUXCI6IC0xLFxuICAgIFwiQ1dTVFwiOiArOC43NSxcbiAgICBcIkNYVFwiOiArNyxcbiAgICBcIkRBVlRcIjogKzcsXG4gICAgXCJERFVUXCI6ICsxMCxcbiAgICBcIkRGVFwiOiArMSxcbiAgICBcIkVBU1NUXCI6IC01LFxuICAgIFwiRUFTVFwiOiAtNixcbiAgICBcIkVBVFwiOiArMyxcbiAgICBcIkVDVFwiOiAtNCxcbiAgICBcIkVDVFwiOiAtNSxcbiAgICBcIkVEVFwiOiAtNCxcbiAgICBcIkVFU1RcIjogKzMsXG4gICAgXCJFRVRcIjogKzIsXG4gICAgXCJFR1NUXCI6IDAsXG4gICAgXCJFR1RcIjogLTEsXG4gICAgXCJFSVRcIjogKzksXG4gICAgXCJFU1RcIjogLTUsXG4gICAgXCJGRVRcIjogKzMsXG4gICAgXCJGSlRcIjogKzEyLFxuICAgIFwiRktTVFwiOiAtMyxcbiAgICBcIkZLVFwiOiAtNCxcbiAgICBcIkZOVFwiOiAtMixcbiAgICBcIkdBTFRcIjogLTYsXG4gICAgXCJHQU1UXCI6IC05LFxuICAgIFwiR0VUXCI6ICs0LFxuICAgIFwiR0ZUXCI6IC0zLFxuICAgIFwiR0lMVFwiOiArMTIsXG4gICAgXCJHSVRcIjogLTksXG4gICAgXCJHTVRcIjogMCxcbiAgICBcIkdTVFwiOiAtMixcbiAgICBcIkdTVFwiOiArNCxcbiAgICBcIkdZVFwiOiAtNCxcbiAgICBcIkhEVFwiOiAtOSxcbiAgICBcIkhBRUNcIjogKzIsXG4gICAgXCJIU1RcIjogLTEwLFxuICAgIFwiSEtUXCI6ICs4LFxuICAgIFwiSE1UXCI6ICs1LFxuICAgIFwiSE9WU1RcIjogKzgsXG4gICAgXCJIT1ZUXCI6ICs3LFxuICAgIFwiSUNUXCI6ICs3LFxuICAgIFwiSURMV1wiOiAtMTIsXG4gICAgXCJJRFRcIjogKzMsXG4gICAgXCJJT1RcIjogKzMsXG4gICAgXCJJUkRUXCI6ICs0LjUsXG4gICAgXCJJUktUXCI6ICs4LFxuICAgIFwiSVJTVFwiOiArMy41LFxuICAgIFwiSVNUXCI6ICs1LjUsXG4gICAgXCJJU1RcIjogKzEsXG4gICAgXCJJU1RcIjogKzIsXG4gICAgXCJKU1RcIjogKzksXG4gICAgXCJLR1RcIjogKzYsXG4gICAgXCJLT1NUXCI6ICsxMSxcbiAgICBcIktSQVRcIjogKzcsXG4gICAgXCJLU1RcIjogKzksXG4gICAgXCJMSFNUXCI6ICsxMC41LFxuICAgIFwiTEhTVFwiOiArMTEsXG4gICAgXCJMSU5UXCI6ICsxNCxcbiAgICBcIk1BR1RcIjogKzEyLFxuICAgIFwiTUFSVFwiOiAtOS41LFxuICAgIFwiTUFXVFwiOiArNSxcbiAgICBcIk1EVFwiOiAtNixcbiAgICBcIk1FVFwiOiArMSxcbiAgICBcIk1FU1RcIjogKzIsXG4gICAgXCJNSFRcIjogKzEyLFxuICAgIFwiTUlTVFwiOiArMTEsXG4gICAgXCJNSVRcIjogLTkuNSxcbiAgICBcIk1NVFwiOiArNi41LFxuICAgIFwiTVNLXCI6ICszLFxuICAgIFwiTVNUXCI6ICs4LFxuICAgIFwiTVNUXCI6IC03LFxuICAgIFwiTVVUXCI6ICs0LFxuICAgIFwiTVZUXCI6ICs1LFxuICAgIFwiTVlUXCI6ICs4LFxuICAgIFwiTkNUXCI6ICsxMSxcbiAgICBcIk5EVFwiOiAtMi41LFxuICAgIFwiTkZUXCI6ICsxMSxcbiAgICBcIk5QVFwiOiArNS43NSxcbiAgICBcIk5TVFwiOiAtMy41LFxuICAgIFwiTlRcIjogLTMuNSxcbiAgICBcIk5VVFwiOiAtMTEsXG4gICAgXCJOWkRUXCI6ICsxMyxcbiAgICBcIk5aU1RcIjogKzEyLFxuICAgIFwiT01TVFwiOiArNixcbiAgICBcIk9SQVRcIjogKzUsXG4gICAgXCJQRFRcIjogLTcsXG4gICAgXCJQRVRcIjogLTUsXG4gICAgXCJQRVRUXCI6ICsxMixcbiAgICBcIlBHVFwiOiArMTAsXG4gICAgXCJQSE9UXCI6ICsxMyxcbiAgICBcIlBIVFwiOiArOCxcbiAgICBcIlBLVFwiOiArNSxcbiAgICBcIlBNRFRcIjogLTIsXG4gICAgXCJQTVNUXCI6IC0zLFxuICAgIFwiUE9OVFwiOiArMTEsXG4gICAgXCJQU1RcIjogLTgsXG4gICAgXCJQU1RcIjogKzgsXG4gICAgXCJQWVNUXCI6IC0zLFxuICAgIFwiUFlUXCI6IC00LFxuICAgIFwiUkVUXCI6ICs0LFxuICAgIFwiUk9UVFwiOiAtMyxcbiAgICBcIlNBS1RcIjogKzExLFxuICAgIFwiU0FNVFwiOiArNCxcbiAgICBcIlNBU1RcIjogKzIsXG4gICAgXCJTQlRcIjogKzExLFxuICAgIFwiU0NUXCI6ICs0LFxuICAgIFwiU0RUXCI6IC0xMCxcbiAgICBcIlNHVFwiOiArOCxcbiAgICBcIlNMU1RcIjogKzUuNSxcbiAgICBcIlNSRVRcIjogKzExLFxuICAgIFwiU1JUXCI6IC0zLFxuICAgIFwiU1NUXCI6IC0xMSxcbiAgICBcIlNTVFwiOiArOCxcbiAgICBcIlNZT1RcIjogKzMsXG4gICAgXCJUQUhUXCI6IC0xMCxcbiAgICBcIlRIQVwiOiArNyxcbiAgICBcIlRGVFwiOiArNSxcbiAgICBcIlRKVFwiOiArNSxcbiAgICBcIlRLVFwiOiArMTMsXG4gICAgXCJUTFRcIjogKzksXG4gICAgXCJUTVRcIjogKzUsXG4gICAgXCJUUlRcIjogKzMsXG4gICAgXCJUT1RcIjogKzEzLFxuICAgIFwiVFZUXCI6ICsxMixcbiAgICBcIlVMQVNUXCI6ICs5LFxuICAgIFwiVUxBVFwiOiArOCxcbiAgICBcIlVTWlwiOiArMixcbiAgICBcIlVUQ1wiOiAwLFxuICAgIFwiVVlTVFwiOiAtMixcbiAgICBcIlVZVFwiOiAtMyxcbiAgICBcIlVaVFwiOiArNSxcbiAgICBcIlZFVFwiOiAtNCxcbiAgICBcIlZMQVRcIjogKzEwLFxuICAgIFwiVk9MVFwiOiArNCxcbiAgICBcIlZPU1RcIjogKzYsXG4gICAgXCJWVVRcIjogKzExLFxuICAgIFwiV0FLVFwiOiArMTIsXG4gICAgXCJXQVNUXCI6ICsyLFxuICAgIFwiV0FUXCI6ICsxLFxuICAgIFwiV0VTVFwiOiArMSxcbiAgICBcIldFVFwiOiAwLFxuICAgIFwiV0lUXCI6ICs3LFxuICAgIFwiV1NUXCI6ICs4LFxuICAgIFwiWUFLVFwiOiArOSxcbiAgICBcIllFS1RcIjogKzUsXG4gICAgXCJaXCI6IDAsXG59O1xuXG5cbmlmKHR5cGVvZihtb2R1bGUpICE9PSBcInVuZGVmaW5lZFwiKXtcbiAgICBtb2R1bGUuZXhwb3J0cyA9IHN0cnRpbWU7XG59ZWxzZSBpZih0eXBlb2Yod2luZG93KSAhPT0gXCJ1bmRlZmluZWRcIil7XG4gICAgd2luZG93LnN0cnRpbWUgPSBzdHJ0aW1lO1xufVxuIiwiLyogZ2xvYmFsIFhNTEh0dHBSZXF1ZXN0ICovXHJcblxyXG5pbXBvcnQgeyBpc09iamVjdCB9IGZyb20gJy4vb2JqZWN0L2lzT2JqZWN0JztcclxuaW1wb3J0IHsgc2VyaWFsaXplIH0gZnJvbSAnLi9vYmplY3Qvc2VyaWFsaXplJztcclxuaW1wb3J0IHsgdG9VbmRlcnNjb3JlIH0gZnJvbSAnLi9zdHJpbmcvdG9VbmRlcnNjb3JlJztcclxuXHJcbmNvbnN0IHsgcGFyc2UsIHN0cmluZ2lmeSB9ID0gSlNPTjtcclxuXHJcbi8vIGFqYXggd3JhcHBlclxyXG5leHBvcnQgY29uc3QgYWpheCA9IChhcGlVcmwsIHN1Y2Nlc3MsIGVycm9yLCBwYXJhbXMsIG1ldGhvZCA9ICdHRVQnKSA9PiB7XHJcbiAgY29uc3QgeG1sSHR0cCAgID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XHJcbiAgY29uc3QgdXJsICAgICAgID0gKG1ldGhvZCA9PT0gJ0dFVCcgJiYgcGFyYW1zKSA/IGAke2FwaVVybH0/JHsoc2VyaWFsaXplKHBhcmFtcywgdG9VbmRlcnNjb3JlKSl9YCA6IGFwaVVybDtcclxuICBjb25zdCBpc1N1Y2Nlc3MgPSAoc3RhdHVzKSA9PiAoKHN0YXR1cyA+PSAyMDAgJiYgc3RhdHVzIDwgMzAwKSB8fCBzdGF0dXMgPT09IDMwNCk7XHJcblxyXG4gIHhtbEh0dHAub3BlbihtZXRob2QsIHVybCk7XHJcbiAgeG1sSHR0cC5zZXRSZXF1ZXN0SGVhZGVyKCdDb250ZW50LXR5cGUnLCAnYXBwbGljYXRpb24vdm5kLmFwaStqc29uJyk7XHJcblxyXG4gIHhtbEh0dHAub25yZWFkeXN0YXRlY2hhbmdlID0gKCkgPT4ge1xyXG4gICAgbGV0IHJlc3BvbnNlO1xyXG5cclxuICAgIGlmICh4bWxIdHRwLnJlYWR5U3RhdGUgPT09IDQpIHtcclxuICAgICAgaWYgKGlzU3VjY2Vzcyh4bWxIdHRwLnN0YXR1cykpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgcmVzcG9uc2UgPSBwYXJzZSh4bWxIdHRwLnJlc3BvbnNlVGV4dCk7XHJcbiAgICAgICAgfSBjYXRjaChlKSB7XHJcbiAgICAgICAgICByZXNwb25zZSA9IHhtbEh0dHA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBzdWNjZXNzKHJlc3BvbnNlKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBlcnJvcih4bWxIdHRwKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIGlmIChpc09iamVjdChwYXJhbXMpICYmIG1ldGhvZCAhPT0gJ0dFVCcpIHtcclxuICAgIHhtbEh0dHAuc2VuZChzdHJpbmdpZnkocGFyYW1zKSk7XHJcbiAgfSBlbHNlIHtcclxuICAgIHhtbEh0dHAuc2VuZCgpO1xyXG4gIH1cclxufTtcclxuIiwiZXhwb3J0ICogZnJvbSAnLi9pc0FycmF5JztcclxuIiwiY29uc3QgeyBwcm90b3R5cGU6IHsgdG9TdHJpbmcgfSB9ID0gT2JqZWN0O1xyXG5cclxuZXhwb3J0IGNvbnN0IGlzQXJyYXkgPSAoYSkgPT4ge1xyXG4gIHJldHVybiB0b1N0cmluZy5jYWxsKGEpID09PSAnW29iamVjdCBBcnJheV0nO1xyXG59O1xyXG4iLCIvKiBnbG9iYWwgSW50bCAqL1xyXG5cclxuaW1wb3J0IHsgZ2V0U3ltYm9sRnJvbUN1cnJlbmN5IH0gZnJvbSAnY3VycmVuY3ktc3ltYm9sLW1hcCc7XHJcblxyXG5mdW5jdGlvbiB0b0xvY2FsZVN0cmluZ1N1cHBvcnRzT3B0aW9ucygpIHtcclxuICByZXR1cm4gISEodHlwZW9mIEludGwgPT09ICdvYmplY3QnICYmIEludGwgJiYgdHlwZW9mIEludGwuTnVtYmVyRm9ybWF0ID09PSAnZnVuY3Rpb24nKTtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IGN1cnJlbmN5Rm9ybWF0dGVyID0gKHZhbHVlLCBsYW5nLCBjdXJyZW5jeSwgbWluaW11bUZyYWN0aW9uRGlnaXRzID0gMCxcclxuICBtYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSAzKSA9PiB7XHJcbiAgaWYgKHRvTG9jYWxlU3RyaW5nU3VwcG9ydHNPcHRpb25zKCkgJiYgY3VycmVuY3kpIHtcclxuICAgIGNvbnN0IGlzRG9sbGFyICAgICA9ICgpID0+IGdldFN5bWJvbEZyb21DdXJyZW5jeShjdXJyZW5jeSkgPT09ICckJztcclxuICAgIGNvbnN0IG9wdGlvbnMgICAgICA9IHtcclxuICAgICAgc3R5bGU6ICdjdXJyZW5jeScsXHJcbiAgICAgIGN1cnJlbmN5LFxyXG4gICAgICBjdXJyZW5jeURpc3BsYXk6IGlzRG9sbGFyID8gJ3N5bWJvbCcgOiAnY29kZScsXHJcbiAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyxcclxuICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzXHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IG51bWJlckZvcm1hdCA9IG5ldyBJbnRsLk51bWJlckZvcm1hdChsYW5nLCBvcHRpb25zKTtcclxuICAgIGNvbnN0IHN0ciAgICAgICAgICA9IG51bWJlckZvcm1hdC5mb3JtYXQodmFsdWUpO1xyXG5cclxuICAgIGlmIChpc0RvbGxhciB8fCAhZ2V0U3ltYm9sRnJvbUN1cnJlbmN5KGN1cnJlbmN5KSkge1xyXG4gICAgICByZXR1cm4gc3RyO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHN0ci5yZXBsYWNlKGN1cnJlbmN5LCBnZXRTeW1ib2xGcm9tQ3VycmVuY3koY3VycmVuY3kpKTtcclxuICB9XHJcblxyXG4gIHJldHVybiB2YWx1ZTtcclxufTtcclxuIiwiZXhwb3J0ICogZnJvbSAnLi9jdXJyZW5jeUZvcm1hdHRlcic7XHJcbiIsImV4cG9ydCAqIGZyb20gJy4vbW9udGhMZW5ndGgnO1xyXG4iLCIvLyBEYXRlIHV0aWxzXHJcbmNvbnN0IGRheXNJbk1vbnRoID0gWzMxLCAyOCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMSwgMzAsIDMxLCAzMCwgMzFdO1xyXG5jb25zdCBpc0xlYXBZZWFyICA9ICh5ZWFyKSA9PiAoKHllYXIgJSA0ID09PSAwKSAmJiAoeWVhciAlIDEwMCAhPT0gMCkpIHx8ICh5ZWFyICUgNDAwID09PSAwKTtcclxuXHJcbmV4cG9ydCBjb25zdCBtb250aExlbmd0aCA9ICh5ZWFyLCBtb250aCkgPT4ge1xyXG4gIGxldCBkYXlzID0gZGF5c0luTW9udGhbbW9udGhdO1xyXG4gIGlmIChtb250aCA9PT0gMSAmJiBpc0xlYXBZZWFyKHllYXIpKSB7XHJcbiAgICBkYXlzID0gMjk7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gZGF5cztcclxufTtcclxuIiwiaW1wb3J0IHsgcmVtb3ZlQ2xhc3MgfSBmcm9tICcuL3JlbW92ZUNsYXNzJztcclxuaW1wb3J0IHsgc2V0Q2xhc3NOYW1lIH0gZnJvbSAnLi9zZXRDbGFzc05hbWUnO1xyXG5pbXBvcnQgeyBnZXRDbGFzc05hbWUgfSBmcm9tICcuL2dldENsYXNzTmFtZSc7XHJcblxyXG5leHBvcnQgY29uc3QgYWRkQ2xhc3MgPSAoZWwsIC4uLmNsYXNzTmFtZXMpID0+IHtcclxuICBjb25zdCBuYW1lID0gY2xhc3NOYW1lcztcclxuXHJcbiAgaWYgKHR5cGVvZiBlbC5jbGFzc0xpc3QgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICBuYW1lLmZvckVhY2goKGNscykgPT4ge1xyXG4gICAgICBpZiAoY2xzLnRyaW0oKSkge1xyXG4gICAgICAgIGVsLmNsYXNzTGlzdC5hZGQoY2xzKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfSBlbHNlIHtcclxuICAgIHJlbW92ZUNsYXNzKGVsLCBuYW1lKTtcclxuICAgIGNvbnN0IGNscyA9IGAke2dldENsYXNzTmFtZShlbCl9ICR7bmFtZS5qb2luKCcgJyl9YDtcclxuICAgIHNldENsYXNzTmFtZShlbCwgY2xzKTtcclxuICB9XHJcbn07XHJcbiIsIi8qIGdsb2JhbCBkb2N1bWVudCAqL1xyXG5cclxuY29uc3QgeyBrZXlzIH0gPSBPYmplY3Q7XHJcblxyXG4vKipcclxuICogQ3JlYXRlIEhUTUxFbGVtZW50IHdpdGggYXR0cmlidXRlc1xyXG4gKiBAcGFyYW0gbmFtZSB7U3RyaW5nfVxyXG4gKiBAcGFyYW0gYXR0cnMge09iamVjdH1cclxuICogQHJldHVybnMge0hUTUxFbGVtZW50fVxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IGNyZWF0ZUVsZW1lbnQgPSAobmFtZSwgYXR0cnMpID0+IHtcclxuICBjb25zdCBwYXJhbXMgID0gYXR0cnMgfHwge307XHJcbiAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQobmFtZSk7XHJcblxyXG4gIGtleXMocGFyYW1zKS5tYXAoKGkpID0+IGVsZW1lbnQuc2V0QXR0cmlidXRlKGksIHBhcmFtc1tpXSkpO1xyXG5cclxuICByZXR1cm4gZWxlbWVudDtcclxufTtcclxuIiwiZXhwb3J0IGNvbnN0IGRlc3Ryb3lFbGVtZW50ID0gKGVsZW1lbnQpID0+IHtcclxuICBpZiAoZWxlbWVudC5wYXJlbnROb2RlICYmIGVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCkge1xyXG4gICAgZWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGVsZW1lbnQpO1xyXG4gIH1cclxuICByZXR1cm4gZWxlbWVudDtcclxufTtcclxuIiwiaW1wb3J0IHsgY3JlYXRlRWxlbWVudCB9IGZyb20gJy4vY3JlYXRlRWxlbWVudCc7XHJcblxyXG5leHBvcnQgY29uc3QgZWxlbWVudEZyb21TdHJpbmcgPSAoc3RyaW5nKSA9PiB7XHJcbiAgY29uc3QgZWxlbWVudCA9IGNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG5cclxuICBlbGVtZW50LmlubmVySFRNTCA9IHN0cmluZztcclxuXHJcbiAgcmV0dXJuIGVsZW1lbnQuY2hpbGRyZW5bMF07XHJcbn07XHJcbiIsImV4cG9ydCBjb25zdCBmaW5kQnlDbGFzc05hbWUgPSAoY29udGV4dCwgbmFtZSkgPT4gY29udGV4dC5xdWVyeVNlbGVjdG9yKGAuJHtuYW1lfWApO1xyXG4iLCJleHBvcnQgY29uc3QgZ2V0Q2xhc3NOYW1lID0gKGVsKSA9PiB7XHJcbiAgLy8gQ2FuJ3QgdXNlIGp1c3QgU1ZHQW5pbWF0ZWRTdHJpbmcgaGVyZSBzaW5jZSBub2RlcyB3aXRoaW4gYSBGcmFtZSBpbiBJRSBoYXZlXHJcbiAgLy8gY29tcGxldGVseSBzZXBhcmF0ZWx5IFNWR0FuaW1hdGVkU3RyaW5nIGJhc2UgY2xhc3Nlc1xyXG4gIGlmIChlbC5jbGFzc05hbWUgaW5zdGFuY2VvZiBlbC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3LlNWR0FuaW1hdGVkU3RyaW5nKSB7XHJcbiAgICByZXR1cm4gZWwuY2xhc3NOYW1lLmJhc2VWYWw7XHJcbiAgfVxyXG4gIHJldHVybiBlbC5jbGFzc05hbWU7XHJcbn07XHJcbiIsImltcG9ydCB7IHRyYXZlcnNlVG9QYXJlbnRXaXRoQXR0ciB9IGZyb20gJy4vdHJhdmVyc2VUb1BhcmVudFdpdGhBdHRyJztcclxuXHJcbi8qKlxyXG4gKiBGaW5kIEhUTUxFbGVtZW50IGF0dHJpYnV0ZSwgaW4gdGhlIGRvbS10cmVlLCBidWJibGVzIHVwXHJcbiAqIEBwYXJhbSBlbCB7SFRNTEVsZW1lbnR9XHJcbiAqIEBwYXJhbSBhdHRyXHJcbiAqIEByZXR1cm5zIHtzdHJpbmd9XHJcbiAqL1xyXG5leHBvcnQgY29uc3QgZ2V0UGFyZW50QXR0cmlidXRlID0gKGVsLCBhdHRyKSA9PiB0cmF2ZXJzZVRvUGFyZW50V2l0aEF0dHIoZWwsIGF0dHIpLnZhbHVlO1xyXG4iLCJpbXBvcnQgeyBnZXRDbGFzc05hbWUgfSBmcm9tICcuL2dldENsYXNzTmFtZSc7XHJcblxyXG5leHBvcnQgY29uc3QgaGFzQ2xhc3MgPSAoZWwsIG5hbWUpID0+IHtcclxuICBpZiAodHlwZW9mIGVsLmNsYXNzTGlzdCAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgIHJldHVybiBlbC5jbGFzc0xpc3QuY29udGFpbnMobmFtZSk7XHJcbiAgfVxyXG4gIGNvbnN0IGNsYXNzTmFtZSA9IGdldENsYXNzTmFtZShlbCk7XHJcbiAgcmV0dXJuIG5ldyBSZWdFeHAoYChefCApJHtuYW1lfSggfCQpYCwgJ2dpJykudGVzdChjbGFzc05hbWUpO1xyXG59O1xyXG4iLCJleHBvcnQgKiBmcm9tICcuL2FkZENsYXNzJztcclxuZXhwb3J0ICogZnJvbSAnLi9jcmVhdGVFbGVtZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9kZXN0cm95RWxlbWVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZWxlbWVudEZyb21TdHJpbmcnO1xyXG5leHBvcnQgKiBmcm9tICcuL2ZpbmRCeUNsYXNzTmFtZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZ2V0Q2xhc3NOYW1lJztcclxuZXhwb3J0ICogZnJvbSAnLi9nZXRQYXJlbnRBdHRyaWJ1dGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2hhc0NsYXNzJztcclxuZXhwb3J0ICogZnJvbSAnLi9pc0luc2lkZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vcmVtb3ZlQ2xhc3MnO1xyXG5leHBvcnQgKiBmcm9tICcuL3NldENsYXNzTmFtZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vdHJhdmVyc2VUb1BhcmVudFdpdGhBdHRyJztcclxuIiwiaW1wb3J0IHsgaXMgfSBmcm9tICcuLi9pcyc7XHJcblxyXG4vKipcclxuICogQ2hlY2sgaWYgc29tZSBIVE1MRWxlbWVudCBpcyBpbnNpZGUgYW5vdGhlciBvbmVcclxuICogQHBhcmFtIGNoaWxkIHtIVE1MRWxlbWVudH1cclxuICogQHBhcmFtIHBhcmVudCB7SFRNTEVsZW1lbnR9XHJcbiAqIEByZXR1cm5zIHtib29sZWFufVxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IGlzSW5zaWRlID0gKGNoaWxkLCBwYXJlbnQpID0+IHtcclxuICBsZXQgY3VycmVudCA9IGNoaWxkO1xyXG5cclxuICB3aGlsZSAoY3VycmVudCAhPT0gcGFyZW50KSB7XHJcbiAgICBpZiAoIWlzKGN1cnJlbnQpIHx8IGN1cnJlbnQudGFnTmFtZSA9PT0gJ0JPRFknIHx8IGN1cnJlbnQudGFnTmFtZSA9PT0gJ0hUTUwnKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGN1cnJlbnQgPSBjdXJyZW50LnBhcmVudE5vZGU7XHJcbiAgfVxyXG4gIHJldHVybiB0cnVlO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBnZXRDbGFzc05hbWUgfSBmcm9tICcuL2dldENsYXNzTmFtZSc7XHJcbmltcG9ydCB7IHNldENsYXNzTmFtZSB9IGZyb20gJy4vc2V0Q2xhc3NOYW1lJztcclxuXHJcbmV4cG9ydCBjb25zdCByZW1vdmVDbGFzcyA9IChlbCwgLi4uY2xhc3NOYW1lcykgPT4ge1xyXG4gIGNvbnN0IG5hbWUgPSBjbGFzc05hbWVzO1xyXG5cclxuICBpZiAodHlwZW9mIGVsLmNsYXNzTGlzdCAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgIG5hbWUuZm9yRWFjaCgoY2xzKSA9PiB7XHJcbiAgICAgIGlmIChjbHMudHJpbSgpKSB7XHJcbiAgICAgICAgZWwuY2xhc3NMaXN0LnJlbW92ZShjbHMpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9IGVsc2Uge1xyXG4gICAgY29uc3QgcmVnZXggICAgID0gbmV3IFJlZ0V4cChgKF58ICkke25hbWUuam9pbignfCcpfSggfCQpYCwgJ2dpJyk7XHJcbiAgICBjb25zdCBjbGFzc05hbWUgPSBnZXRDbGFzc05hbWUoZWwpLnJlcGxhY2UocmVnZXgsICcgJyk7XHJcbiAgICBzZXRDbGFzc05hbWUoZWwsIGNsYXNzTmFtZSk7XHJcbiAgfVxyXG59O1xyXG4iLCJleHBvcnQgY29uc3Qgc2V0Q2xhc3NOYW1lID0gKGVsLCBjbGFzc05hbWUpID0+IHtcclxuICBlbC5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgY2xhc3NOYW1lKTtcclxufTtcclxuIiwiaW1wb3J0IHsgaXMgfSBmcm9tICcuLi9pcyc7XHJcblxyXG5leHBvcnQgY29uc3QgdHJhdmVyc2VUb1BhcmVudFdpdGhBdHRyID0gKGVsZW1lbnQsIGF0dHJpYnV0ZSkgPT4ge1xyXG4gIGxldCBwYXJlbnQgPSBlbGVtZW50O1xyXG4gIGxldCB2YWx1ZSAgPSBlbGVtZW50LmdldEF0dHJpYnV0ZShhdHRyaWJ1dGUpO1xyXG4gIHdoaWxlICghaXModmFsdWUpKSB7XHJcbiAgICBwYXJlbnQgPSBwYXJlbnQucGFyZW50Tm9kZTtcclxuICAgIGlmIChwYXJlbnQgJiYgdHlwZW9mIHBhcmVudC5nZXRBdHRyaWJ1dGUgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgdmFsdWUgPSBwYXJlbnQuZ2V0QXR0cmlidXRlKGF0dHJpYnV0ZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBwYXJlbnQgPSBudWxsO1xyXG4gICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIHtcclxuICAgIHZhbHVlLFxyXG4gICAgcGFyZW50XHJcbiAgfTtcclxufTtcclxuIiwiZXhwb3J0IGRlZmF1bHQgY2xhc3MgRW1pdHRlciB7XG4gIG9uKGV2ZW50LCBsaXN0ZW5lcikge1xuICAgIHRoaXMuZXZlbnRzICAgICAgICA9IHRoaXMuZXZlbnRzIHx8IHt9O1xuICAgIHRoaXMuZXZlbnRzW2V2ZW50XSA9IHRoaXMuZXZlbnRzW2V2ZW50XSB8fCBbXTtcbiAgICB0aGlzLmV2ZW50c1tldmVudF0ucHVzaChsaXN0ZW5lcik7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBvbmNlKGV2ZW50LCBsaXN0ZW5lcikge1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuXG4gICAgZnVuY3Rpb24gZm4oLi4uYXJncykge1xuICAgICAgc2VsZi5vZmYoZXZlbnQsIGZuKTtcbiAgICAgIGxpc3RlbmVyLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIH1cblxuICAgIGZuLmxpc3RlbmVyID0gbGlzdGVuZXI7XG4gICAgdGhpcy5vbihldmVudCwgZm4pO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgb2ZmKGV2ZW50LCBsaXN0ZW5lcikge1xuICAgIGxldCBsaXN0ZW5lcnM7XG5cbiAgICBpZiAodGhpcy5ldmVudHMgJiYgdGhpcy5ldmVudHNbZXZlbnRdKSB7XG4gICAgICBsaXN0ZW5lcnMgPSB0aGlzLmV2ZW50c1tldmVudF07XG5cbiAgICAgIGxpc3RlbmVycy5mb3JFYWNoKChmbiwgaSkgPT4ge1xuICAgICAgICBpZiAoZm4gPT09IGxpc3RlbmVyIHx8IGZuLmxpc3RlbmVyID09PSBsaXN0ZW5lcikge1xuICAgICAgICAgIGxpc3RlbmVycy5zcGxpY2UoaSwgMSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBpZiAobGlzdGVuZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBkZWxldGUgdGhpcy5ldmVudHNbZXZlbnRdO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGVtaXQoZXZlbnQsIC4uLmFyZ3MpIHtcbiAgICBsZXQgbGlzdGVuZXJzO1xuXG4gICAgaWYgKHRoaXMuZXZlbnRzICYmIHRoaXMuZXZlbnRzW2V2ZW50XSkge1xuICAgICAgbGlzdGVuZXJzID0gdGhpcy5ldmVudHNbZXZlbnRdO1xuXG4gICAgICBsaXN0ZW5lcnMgPSBsaXN0ZW5lcnMuc2xpY2UoMCk7XG4gICAgICBsaXN0ZW5lcnMuZm9yRWFjaCgoZm4pID0+IGZuLmFwcGx5KHRoaXMsIGFyZ3MpKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbn1cbiIsImV4cG9ydCAqIGZyb20gJy4vaXNGdW5jdGlvbic7XHJcbiIsImV4cG9ydCBjb25zdCBpc0Z1bmN0aW9uID0gKGYpID0+IHtcclxuICByZXR1cm4gdHlwZW9mIGYgPT09ICdmdW5jdGlvbic7XHJcbn07XHJcbiIsImV4cG9ydCAqIGZyb20gJy4vYXJyYXknO1xyXG5leHBvcnQgKiBmcm9tICcuL2N1cnJlbmN5JztcclxuZXhwb3J0ICogZnJvbSAnLi9kYXRlJztcclxuZXhwb3J0ICogZnJvbSAnLi9kb20nO1xyXG5leHBvcnQgKiBmcm9tICcuL2Z1bmN0aW9uJztcclxuZXhwb3J0ICogZnJvbSAnLi9tYXRoJztcclxuZXhwb3J0ICogZnJvbSAnLi9vYmplY3QnO1xyXG5leHBvcnQgKiBmcm9tICcuL3N0cmluZyc7XHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2lzJztcclxuZXhwb3J0ICogZnJvbSAnLi9hamF4JztcclxuZXhwb3J0ICogZnJvbSAnLi92YWxpZGF0ZSc7XHJcblxyXG5pbXBvcnQgRW1pdHRlciBmcm9tICcuL2VtaXR0ZXInO1xyXG5leHBvcnQgeyBFbWl0dGVyIH07XHJcbiIsImltcG9ydCB7IGlzTmFOUG9seWZpbGwgfSBmcm9tICcuL21hdGgvaXNOYU5Qb2x5ZmlsbCc7XHJcblxyXG5leHBvcnQgY29uc3QgaXMgPSAobykgPT4ge1xyXG4gIHJldHVybiB0eXBlb2YgbyAhPT0gJ3VuZGVmaW5lZCcgJiYgbyAhPT0gbnVsbCAmJiAhaXNOYU5Qb2x5ZmlsbChvKTtcclxufTtcclxuIiwiZXhwb3J0ICogZnJvbSAnLi9pc05hTlBvbHlmaWxsJztcclxuZXhwb3J0ICogZnJvbSAnLi9pc051bWVyaWMnO1xyXG4iLCJleHBvcnQgY29uc3QgaXNOYU5Qb2x5ZmlsbCA9ICh2YWx1ZSkgPT4ge1xyXG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInICYmIE51bWJlci5pc05hTih2YWx1ZSk7XHJcbn07XHJcbiIsImltcG9ydCB7IGlzTmFOUG9seWZpbGwgfSBmcm9tICcuL2lzTmFOUG9seWZpbGwnO1xyXG5pbXBvcnQgeyBpc0FycmF5IH0gZnJvbSAnLi4vYXJyYXkvaXNBcnJheSc7XHJcblxyXG5leHBvcnQgY29uc3QgaXNOdW1lcmljID0gKG4pID0+IHtcclxuICByZXR1cm4gIWlzQXJyYXkobikgJiYgIWlzTmFOUG9seWZpbGwocGFyc2VJbnQobiwgMTApKTtcclxufTtcclxuIiwiaW1wb3J0IHsgdHJhdmVyc2VPYmogfSBmcm9tICcuL3RyYXZlcnNlT2JqJztcclxuaW1wb3J0IHsgZGFzaFRvQ2FwaXRhbCB9IGZyb20gJy4uL3N0cmluZy9kYXNoVG9DYXBpdGFsJztcclxuaW1wb3J0IHsgdW5kZXJzY29yZVRvQ2FwaXRhbCB9IGZyb20gJy4uL3N0cmluZy91bmRlcnNjb3JlVG9DYXBpdGFsJztcclxuXHJcbmV4cG9ydCBjb25zdCBjYXBpdGFsaXplT2JqID0gKG9iamVjdCkgPT4ge1xyXG4gIG9iamVjdCA9IHRyYXZlcnNlT2JqKG9iamVjdCwgZGFzaFRvQ2FwaXRhbCk7XHJcbiAgb2JqZWN0ID0gdHJhdmVyc2VPYmoob2JqZWN0LCB1bmRlcnNjb3JlVG9DYXBpdGFsKTtcclxuXHJcbiAgcmV0dXJuIG9iamVjdDtcclxufTtcclxuIiwiZXhwb3J0ICogZnJvbSAnLi9jYXBpdGFsaXplT2JqJztcclxuZXhwb3J0ICogZnJvbSAnLi9pc09iamVjdCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbWVyZ2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL3BpY2snO1xyXG5leHBvcnQgKiBmcm9tICcuL3NlcmlhbGl6ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vdHJhdmVyc2VPYmonO1xyXG4iLCJjb25zdCB7IHByb3RvdHlwZTogeyB0b1N0cmluZyB9IH0gPSBPYmplY3Q7XHJcblxyXG5leHBvcnQgY29uc3QgaXNPYmplY3QgPSAobykgPT4ge1xyXG4gIHJldHVybiB0b1N0cmluZy5jYWxsKG8pID09PSAnW29iamVjdCBPYmplY3RdJztcclxufTtcclxuIiwiaW1wb3J0IHsgaXNPYmplY3QgfSBmcm9tICcuL2lzT2JqZWN0JztcclxuXHJcbmNvbnN0IHsga2V5cyB9ID0gT2JqZWN0O1xyXG5cclxuLyoqXHJcbiAqIE1lcmdlIHR3byBvYmplY3RzXHJcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmoxXHJcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmoyXHJcbiAqIEBwYXJhbSB7Qm9vbGVhbn0gaXNEZWVwXHJcbiAqIEByZXR1cm5zIHtPYmplY3R9XHJcbiAqL1xyXG5leHBvcnQgY29uc3QgbWVyZ2UgPSAob2JqMSwgb2JqMiwgaXNEZWVwKSA9PiB7XHJcbiAgY29uc3Qgb2JqMyA9IHt9O1xyXG4gIGtleXMob2JqMSkuZm9yRWFjaCgoaSkgPT4ge1xyXG4gICAgaWYgKGlzRGVlcCAmJiBpc09iamVjdChvYmoxW2ldKSkge1xyXG4gICAgICBvYmozW2ldID0gbWVyZ2Uob2JqMVtpXSwge30sIHRydWUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgb2JqM1tpXSA9IG9iajFbaV07XHJcbiAgICB9XHJcbiAgfSk7XHJcblxyXG4gIGtleXMob2JqMikuZm9yRWFjaCgoaSkgPT4ge1xyXG4gICAgaWYgKGlzRGVlcCAmJiBpc09iamVjdChvYmoyW2ldKSkge1xyXG4gICAgICBvYmozW2ldID0gbWVyZ2Uob2JqM1tpXSB8fCB7fSwgb2JqMltpXSwgdHJ1ZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBvYmozW2ldID0gb2JqMltpXTtcclxuICAgIH1cclxuICB9KTtcclxuICByZXR1cm4gb2JqMztcclxufTtcclxuIiwiLyoqXHJcbiAqIFBpY2sgcHJvcGVydGllcyBmcm9tIG9iamVjdFxyXG4gKiBsZXQgYSA9IHsgbmFtZTogXCJSb21hblwiLCBwaG9uZTogMTIzLCBjb3VudHJ5OiBcImFueVwiIH07XHJcbiAqIHBpY2soYSwgJ25hbWUnLCAnY291bnRyeScpXHJcbiAqID0+IHsgbmFtZTogXCJSb21hblwiLCBjb3VudHJ5OiBcImFueVwiIH1cclxuICpcclxuICogQHBhcmFtIG9iaiB7T2JqZWN0fVxyXG4gKiBAcGFyYW0gYXJncyB7U3RyaW5nfVxyXG4gKiBAcmV0dXJucyB7T2JqZWN0fVxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IHBpY2sgPSAob2JqLCAuLi5hcmdzKSA9PiBhcmdzLnJlZHVjZSgoaSwgdCkgPT4ge1xyXG4gIGNvbnN0IHBpY2tlZE9iaiA9IGk7XHJcblxyXG4gIHBpY2tlZE9ialt0XSA9IG9ialt0XTtcclxuXHJcbiAgcmV0dXJuIHBpY2tlZE9iajtcclxufSwge30pO1xyXG4iLCJjb25zdCB7IGtleXMgfSA9IE9iamVjdDtcclxuXHJcbi8vIHNlcmlhbGl6ZSBxdWVyeSBwYXJhbXMgd2l0aCBhZGRpdGlvbmFsIHRyYW5zZm9ybSBmdW5jdGlvblxyXG5leHBvcnQgY29uc3Qgc2VyaWFsaXplID0gKG9iaiwgdHJhbnNmb3JtKSA9PiB7XHJcbiAgY29uc3QgY29tcG9uZW50ID0ga2V5cyhvYmopLm1hcCgocCkgPT4gYCR7dHJhbnNmb3JtKGVuY29kZVVSSUNvbXBvbmVudChwKSl9PSR7ZW5jb2RlVVJJQ29tcG9uZW50KG9ialtwXSl9YCk7XHJcbiAgcmV0dXJuIGNvbXBvbmVudC5qb2luKCcmJyk7XHJcbn07XHJcbiIsImltcG9ydCB7IGlzQXJyYXkgfSBmcm9tICcuLi9hcnJheS9pc0FycmF5JztcclxuaW1wb3J0IHsgaXNPYmplY3QgfSBmcm9tICcuL2lzT2JqZWN0JztcclxuXHJcbmNvbnN0IHsga2V5cyB9ID0gT2JqZWN0O1xyXG5cclxuLyoqXHJcbiAqIFJlY3Vyc2l2ZWx5IHRyYXZlcnNlIG9iamVjdCBvd24gcHJvcGVydGllcyBhbmQgYXBwbHkgdHJhbnNmb3JtIGZ1bmN0aW9uIG9uIGtleXMgb3IgdmFsdWVzXHJcbiAqIGxldCBhID0geyBsYXN0TmFtZTogXCJSb21hblwiLCBmaXJzdE5hbWU6IFwiS2h1ZHlha292XCIgfVxyXG4gKiB0cmF2ZXJzZU9iaihhLCB0b1VuZGVyc2NvcmUpXHJcbiAqID0+IHsgbGFzdF9uYW1lOiBcIlJvbWFuXCIsIGZpcnN0X25hbWU6IFwiS2h1ZHlha292XCIgfVxyXG4gKlxyXG4gKiBAcGFyYW0gb2JqIHtPYmplY3R9XHJcbiAqIEBwYXJhbSBmbktleSB7RnVuY3Rpb24gfCBCb29sZWFufVxyXG4gKiBAcGFyYW0gZm5WYWx1ZSB7RnVuY3Rpb24gfCBCb29sZWFufVxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IHRyYXZlcnNlT2JqID0gKG9iaiwgZm5LZXkgPSBmYWxzZSwgZm5WYWx1ZSA9IGZhbHNlKSA9PiB7XHJcbiAgaWYgKCFpc09iamVjdChvYmopKSB7XHJcbiAgICByZXR1cm4gb2JqO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIGtleXMob2JqKS5yZWR1Y2UoKGN1cnIsIG5leHQpID0+IHtcclxuICAgIGxldCBuZXh0UHJvcGVydHkgPSBvYmpbbmV4dF07XHJcbiAgICBjb25zdCBvICAgICAgICAgID0gY3VycjtcclxuXHJcbiAgICBpZiAoaXNBcnJheShuZXh0UHJvcGVydHkpKSB7XHJcbiAgICAgIG5leHRQcm9wZXJ0eSA9IG5leHRQcm9wZXJ0eS5tYXAoKGkpID0+IHRyYXZlcnNlT2JqKGksIGZuS2V5LCBmblZhbHVlKSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGZuVmFsdWUpIHtcclxuICAgICAgb1tmbktleSA/IGZuS2V5KG5leHQpIDogbmV4dF0gPSBpc09iamVjdChuZXh0UHJvcGVydHkpXHJcbiAgICAgICAgPyB0cmF2ZXJzZU9iaihuZXh0UHJvcGVydHksIGZuS2V5LCBmblZhbHVlKSA6IGZuVmFsdWUobmV4dFByb3BlcnR5LCBuZXh0KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIG9bZm5LZXkgPyBmbktleShuZXh0KSA6IG5leHRdID0gaXNPYmplY3QobmV4dFByb3BlcnR5KVxyXG4gICAgICAgID8gdHJhdmVyc2VPYmoobmV4dFByb3BlcnR5LCBmbktleSkgOiBuZXh0UHJvcGVydHk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG87XHJcbiAgfSwge30pO1xyXG59O1xyXG4iLCJleHBvcnQgY29uc3QgZGFzaFRvQ2FwaXRhbCA9IChzdHIpID0+IHN0ci5yZXBsYWNlKC8tKFthLXpdKS9pZywgKHMsIGkpID0+IGkudG9VcHBlckNhc2UoKSk7XHJcbiIsImV4cG9ydCAqIGZyb20gJy4vZGFzaFRvQ2FwaXRhbCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vaXNTdHJpbmcnO1xyXG5leHBvcnQgKiBmcm9tICcuL3RvVW5kZXJzY29yZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vdW5kZXJzY29yZVRvQ2FwaXRhbCc7XHJcbiIsImV4cG9ydCBjb25zdCBpc1N0cmluZyA9IChmKSA9PiB7XHJcbiAgcmV0dXJuIHR5cGVvZiBmID09PSAnc3RyaW5nJztcclxufTtcclxuIiwiZXhwb3J0IGNvbnN0IHRvVW5kZXJzY29yZSA9IChzdHIpID0+IHN0ci5yZXBsYWNlKC8oW0EtWl0pL2csIChzKSA9PiBgXyR7cy50b0xvd2VyQ2FzZSgpfWApO1xyXG4iLCJleHBvcnQgY29uc3QgdW5kZXJzY29yZVRvQ2FwaXRhbCA9IChzdHIpID0+IHN0ci5yZXBsYWNlKC9fKFthLXpdKS9pZywgKHMsIGkpID0+IGkudG9VcHBlckNhc2UoKSk7XHJcbiIsImltcG9ydCB7IGlzIH0gZnJvbSAnLi9pcyc7XHJcbmltcG9ydCB7IGlzTnVtZXJpYyB9IGZyb20gJy4vbWF0aC9pc051bWVyaWMnO1xyXG5cclxuLy8gVmFsaWRhdGlvbnNcclxuZXhwb3J0IGNvbnN0IHZhbGlkYXRlID0ge1xyXG4gIGlzQmxhbmsobykge1xyXG4gICAgcmV0dXJuIGlzKG8pO1xyXG4gIH0sXHJcbiAgaXNOdW1lcmljKG8pIHtcclxuICAgIHJldHVybiBpc051bWVyaWMobyk7XHJcbiAgfSxcclxuICBpc0VtYWlsKG8pIHtcclxuICAgIHJldHVybiB0eXBlb2YgbyA9PT0gJ3N0cmluZycgJiYgaXMoby5tYXRjaCgvXlteQFxcc10rQChbXkBcXHNdK1xcLikrW15AXFxXXSskLykpO1xyXG4gIH0sXHJcbiAgaXNCb3VuZGVkQnkobywgbWluLCBtYXgpIHtcclxuICAgIHJldHVybiB0eXBlb2YgbyA9PT0gJ251bWJlcicgJiYgbyA+PSBtaW4gJiYgbyA8PSBtYXg7XHJcbiAgfVxyXG59O1xyXG4iLCJpbXBvcnQge1xuICBpcywgbWVyZ2UsIG1vbnRoTGVuZ3RoLCBpc1N0cmluZ1xufSBmcm9tICd3aWRnZXQtdXRpbHMnO1xuXG4vKipcbiAqICBwbGVhc2UgcmVmZXIgdG8gL3Rlc3RzL3VuaXQvY2FsZW5kYXJUcmVlLnNwZWNzLmpzIGZvciB1c2FnZVxuICogIFRPRE8gZG9jcywgbWVyZ2UgYXZhaWxhYmlsaXR5IHdpdGggY2FsZW5kYXIgdHJlZSwgdXNlIG9uZSBkYXRhLXN0cnVjdHVyZVxuICogIFRPRE8gbWluU3RheSArIGF2YWlsYWJpbGl0eSBtYXAgY29uc2lkZXJhdGlvbnMgZm8gZGlzYWJsaW5nIGRhdGVzXG4gKi9cbmNvbnN0IGdlbkFycmF5UmFuZ2UgPSAoYSwgYikgPT4ge1xuICBjb25zdCBsaXN0ID0gW107XG4gIGZvciAobGV0IGkgPSBhOyBpIDw9IGI7IGkgKz0gMSkge1xuICAgIGxpc3QucHVzaChpKTtcbiAgfVxuICByZXR1cm4gbGlzdDtcbn07XG5cbmNvbnN0IHBhcnNlSVNPU3RyaW5nID0gKHN0ciAvKiB5eXl5LW1tLWRkICovKSA9PiB7XG4gIGNvbnN0IGFyclN0ciA9IHN0ci5zcGxpdCgnLScpLm1hcChwYXJzZUZsb2F0KTtcbiAgcmV0dXJuIHtcbiAgICB5ZWFyOiBhcnJTdHJbMF0sXG4gICAgbW9udGg6IGFyclN0clsxXSAtIDEsXG4gICAgZGF0ZTogYXJyU3RyWzJdXG4gIH07XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDYWxlbmRhclRyZWUge1xuICAvKipcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gdmFsaWRhdGVDZWxsXG4gICAqIEBwYXJhbSB7T2JqZWN0fSB0cmVlXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih2YWxpZGF0ZUNlbGwsIHRyZWUpIHtcbiAgICB0aGlzLnZhbGlkYXRlQ2VsbCA9IHZhbGlkYXRlQ2VsbDtcbiAgICB0aGlzLnRyZWUgICAgICAgICA9IHRyZWU7XG4gIH1cblxuICBhZGRUcmVlKG9iaikge1xuICAgIGlmICghdGhpcy50cmVlKSB7XG4gICAgICB0aGlzLnRyZWUgPSBvYmo7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudHJlZSA9IG1lcmdlKHRoaXMudHJlZSB8fCB7fSwgb2JqLCB0cnVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogc2VsZWN0IHJhbmdlIGZyb20gdGhlIHRyZWUsIHJldHVybnMgYXJyYXkgaXRlbXNcbiAgICogc3RhcnQgZGF0ZSBpcyBBTFdBWVMgPCB0aGVuIGVuZCBkYXRlICwgYXMgd2UgYXJlIHNlbGVjdGluZyB0aW1lIHJhbmdlIGluIGRheXMuXG4gICAqXG4gICAqIEBwYXJhbSB7QXJyYXl9IHN0YXJ0IGUuZy4gWzIwMTYsIDAsIDFdXG4gICAqIEBwYXJhbSB7QXJyYXl9IGVuZCAgICAgICAgWzIwMTYsIDEsIDNdXG4gICAqIEByZXR1cm5zIHt7cmFuZ2U6IEFycmF5LCBpc1ZhbGlkOiB7Qm9vbGVhbn19fVxuICAgKi9cbiAgc2VsZWN0UmFuZ2Uoc3RhcnQsIGVuZCkge1xuICAgIGxldCByYW5nZSA9IFtdO1xuXG4gICAgY29uc3QgYSA9IHN0YXJ0LnNsaWNlKCk7XG5cbiAgICAvLyBpZiB5ZWFyIGFuZCBtb250aCB0aGUgc2FtZSwganVzdCBzbGljZSB0aGUgY3VycmVudCBtb250aFxuICAgIGlmIChhWzBdID09PSBlbmRbMF0gJiYgYVsxXSA9PT0gZW5kWzFdKSB7XG4gICAgICByYW5nZSA9IHRoaXMuc2VsZWN0RGF5c0luTW9udGgoYVswXSwgYVsxXSwgYVsyXSwgZW5kWzJdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgbW9udGhEYXlzID0gdGhpcy50cmVlW2FbMF1dW2FbMV1dO1xuXG4gICAgICAvLyBzbGljZSB0aGUgcGllY2Ugb2YgY3VycmVudCBtb250aERheXMgZnJvbSBzdGFydCBvZiByYW5nZSB0aWxsIGVuZCBvZiB0aGUgbW9udGhEYXlzXG4gICAgICByYW5nZSA9IHJhbmdlLmNvbmNhdCh0aGlzLnNlbGVjdERheXNJbk1vbnRoKGFbMF0sIGFbMV0sIGFbMl0sIG1vbnRoRGF5cy5sZW5ndGgpKTtcblxuICAgICAgLy8gc2hpZnQgc3RhcnQgbW9udGgsIGIvYyB3ZSBhbHJlYWR5IHNlbGVjdGVkIGRheXMgaW4gaXRcbiAgICAgIGFbMV0gKz0gMTtcblxuICAgICAgLy8gaWYgZW5kIGRhdGUgeWVhciA+IHN0YXJ0IGRhdGVcbiAgICAgIC8vIHNlbGVjdCBldmVyeXRoaW5nIGluIHN0YXJ0IHllYXIgdGlsbCB0aGUgZW5kIG9mIHN0YXJ0IHllYXJcbiAgICAgIC8vIGUuZy4gc3RhcnQgaXMgMjAgT2N0b2Jlciwgc28gc2VsZWN0IE5vdmVtYmVyIGFuZCBEZWNlbWJlciwgT2N0b2JlciB3YXMgc2VsZWN0ZWQgYWJvdmVcbiAgICAgIGlmIChlbmRbMF0gPiBzdGFydFswXSkge1xuICAgICAgICByYW5nZSA9IHJhbmdlLmNvbmNhdCh0aGlzLnNlbGVjdE1vbnRoc0luWWVhcihhWzBdLCBhWzFdLCAxMSkpO1xuICAgICAgICAvLyBhbmQgc2V0IHN0YXJ0IHllYXIgdG8gZW5kIHllYXJcbiAgICAgICAgLy8gbW9udGggdG8gMCAoSmFudWFyeSlcbiAgICAgICAgW2FbMF0sIGFbMV1dID0gW2VuZFswXSwgMF07XG4gICAgICB9XG5cbiAgICAgIC8vIG5vdyB3ZSBhcmUgYXQgdGhlIHNhbWUgeWVhciBhbmQgaGF2ZSB0aGUgY2FzZSBpZiBlbmQgbW9udGggPiBzdGFydCBtb250aFxuICAgICAgLy8gdGhlbiBzZWxlY3QgZXZlcnl0aGluZyBiZXR3ZWVuIHRob3NlIG1vbnRoc1xuICAgICAgaWYgKGVuZFsxXSA+IGFbMV0pIHtcbiAgICAgICAgLy8gZS5nLiBzdGFydCAyMCBPY3RvYmVyIGVuZCAyMCBEZWNlbWJlciwgc2VsZWN0IGZ1bGwgTm92ZW1iZXJcbiAgICAgICAgcmFuZ2UgPSByYW5nZS5jb25jYXQodGhpcy5zZWxlY3RNb250aHNJblllYXIoYVswXSwgYVsxXSwgZW5kWzFdIC0gMSkpO1xuICAgICAgICBhWzFdID0gZW5kO1xuICAgICAgfVxuXG4gICAgICAvLyB0aGUgbWlzc2luZyBwYXJ0IGlzIGRheXMgaW4gZW5kIHNlbGVjdGlvbiBtb250aFxuICAgICAgcmFuZ2UgPSByYW5nZS5jb25jYXQodGhpcy5zZWxlY3REYXlzSW5Nb250aChlbmRbMF0sIGVuZFsxXSwgMSwgZW5kWzJdKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHJhbmdlLFxuICAgICAgaXNWYWxpZDogdGhpcy5pc1JhbmdlVmFsaWQocmFuZ2UpXG4gICAgfTtcbiAgfVxuXG4gIHNlbGVjdE1vbnRoc0luWWVhcih5ZWFyLCBzdGFydCwgZW5kKSB7XG4gICAgbGV0IHNlbGVjdGlvbiAgICA9IFtdO1xuICAgIGNvbnN0IG1vbnRoUmFuZ2UgPSBnZW5BcnJheVJhbmdlKHN0YXJ0LCBlbmQpO1xuXG4gICAgbW9udGhSYW5nZS5mb3JFYWNoKChtb250aCkgPT4ge1xuICAgICAgY29uc3QgeSA9IHRoaXMudHJlZVt5ZWFyXTtcbiAgICAgIGNvbnN0IG0gPSBpcyh5KSA/IHRoaXMudHJlZVt5ZWFyXVttb250aF0gOiBudWxsO1xuXG4gICAgICBpZiAoeSAmJiBtKSB7XG4gICAgICAgIHNlbGVjdGlvbiA9IHNlbGVjdGlvbi5jb25jYXQodGhpcy5zZWxlY3REYXlzSW5Nb250aCh5ZWFyLCBtb250aCwgMSwgbS5sZW5ndGgpKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBzZWxlY3Rpb247XG4gIH1cblxuICBzZWxlY3REYXlzSW5Nb250aCh5ZWFyLCBtb250aCwgc3RhcnREYXksIGVuZERheSkge1xuICAgIGNvbnN0IHkgPSB0aGlzLnRyZWVbeWVhcl07XG4gICAgY29uc3QgbSA9IGlzKHkpID8gdGhpcy50cmVlW3llYXJdW21vbnRoXSA6IG51bGw7XG5cbiAgICBpZiAoeSAmJiBtKSB7XG4gICAgICByZXR1cm4gbS5zbGljZSgoc3RhcnREYXkgLSAxKSwgZW5kRGF5KTtcbiAgICB9XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgc2VsZWN0RGF5KHllYXIsIG1vbnRoLCBkYXkpIHtcbiAgICBjb25zdCB5ID0gdGhpcy50cmVlW3llYXJdO1xuICAgIGNvbnN0IG0gPSBpcyh5KSA/IHRoaXMudHJlZVt5ZWFyXVttb250aF0gOiBudWxsO1xuXG4gICAgaWYgKHkgJiYgbSkge1xuICAgICAgcmV0dXJuIG1bZGF5IC0gMV07XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgaXNSYW5nZVZhbGlkKHJhbmdlLCBmbikge1xuICAgIGNvbnN0IHZhbGlkYXRlQ2VsbCA9IHRoaXMudmFsaWRhdGVDZWxsIHx8IGZuO1xuICAgIGxldCBpc1ZhbGlkICAgICAgICA9IHRydWU7XG5cbiAgICBpZiAodHlwZW9mIHZhbGlkYXRlQ2VsbCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgZmlsdGVyVmFsaWRzID0gcmFuZ2UuZmlsdGVyKChjZWxsKSA9PiB0aGlzLnZhbGlkYXRlQ2VsbChjZWxsKSk7XG4gICAgICBpc1ZhbGlkID0gZmlsdGVyVmFsaWRzLmxlbmd0aCA9PSByYW5nZS5sZW5ndGg7XG4gICAgfVxuXG4gICAgcmV0dXJuIGlzVmFsaWQ7XG4gIH1cblxuICByZXBsYWNlTWFwcyhtYXAsIHVwZGF0ZWRBdCkge1xuICAgIHRoaXMubWFwID0gQ2FsZW5kYXJUcmVlLm1hcHNUb1RyZWUobWFwLCB1cGRhdGVkQXQpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcmVtb3ZlTWFwKCkge1xuICAgIHRoaXMubWFwID0ge307XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogIENyZWF0ZSBhIHRyZWUgc3RydWN0dXJlIGZyb20gbWFwc1xuICAgKiAgZm9yIG4tdGltZSBkYXkgYWNjZXNzLCBlLmcuIHRoaXMubWFwW3llYXJdW21vbnRoXVtkYXldLmlzQXZhaWxhYmxlO1xuICAgKiB7XG4gICAqICAgMjEwNjoge1xuICAgKiAgICAgIDE6IHtcbiAgICogICAgICAgIDE6ICxcbiAgICogICAgICAgIDI6ICxcbiAgICogICAgICAgIDM6XG4gICAqICAgICAgICAuLi5cbiAgICogICAgICB9XG4gICAqICAgICAgLi4uXG4gICAqICAgICAgMTI6IHtcbiAgICpcbiAgICogICAgICB9XG4gICAqICAgIH1cbiAgICogfVxuICAgKiBAcGFyYW0ge09iamVjdH0gbWFwc1xuICAgKiBAcGFyYW0ge1N0cmluZyB8IERhdGV9IG1hcFN0YXJ0QXRcbiAgICogQHJldHVybnMge09iamVjdH1cbiAgICovXG4gIHN0YXRpYyBtYXBzVG9UcmVlKG1hcHMsIG1hcFN0YXJ0QXQpIHtcbiAgICBpZiAoIShpc1N0cmluZyhtYXBzLmF2YWlsYWJpbGl0eSlcbiAgICAgIHx8IGlzU3RyaW5nKG1hcHMubmlnaHRseV9yYXRlcylcbiAgICAgIHx8IGlzU3RyaW5nKG1hcHMubWluaW11bV9zdGF5cykpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBhdmFpbCAgPSBtYXBzLmF2YWlsYWJpbGl0eS5zcGxpdCgnJykubWFwKHBhcnNlRmxvYXQpO1xuICAgIGNvbnN0IHJhdGVzICA9IG1hcHMubmlnaHRseV9yYXRlcy5zcGxpdCgnLCcpLm1hcChwYXJzZUZsb2F0KTtcbiAgICBjb25zdCBtaW5NYXAgPSBtYXBzLm1pbmltdW1fc3RheXMuc3BsaXQoJywnKS5tYXAocGFyc2VGbG9hdCk7XG4gICAgbGV0IGRheSAgICAgID0gMTtcblxuICAgIGxldCB7XG4gICAgICB5ZWFyLFxuICAgICAgbW9udGgsXG4gICAgICBkYXRlOiBkYXlTaGlmdFxuICAgIH0gPSBwYXJzZUlTT1N0cmluZyhtYXBTdGFydEF0KTtcblxuICAgIC8vIHRyaWNrIHRvIGFkZCBleHRyYSB1bmF2YWlsYWJsZSBkYXRlIGZvciBwcm9wZXIgY2FsY3VsYXRpb25zIG9mIGNoZWNrLW91dCBkYXRlc1xuICAgIGlmIChhdmFpbFthdmFpbC5sZW5ndGggLSAxXSA9PT0gMCkge1xuICAgICAgYXZhaWwucHVzaCgxKTtcbiAgICB9XG5cbiAgICBsZXQgcHJldmlvdXNEYXRlID0ge307XG5cbiAgICByZXR1cm4gYXZhaWwucmVkdWNlKChjdXJyLCBzdGF0ZSwgaW5kZXgsIGFycikgPT4ge1xuICAgICAgY29uc3QgbGVuZ3RoICAgICAgICAgICA9IG1vbnRoTGVuZ3RoKHllYXIsIG1vbnRoKTtcbiAgICAgIGNvbnN0IHRyZWUgICAgICAgICAgICAgPSBjdXJyO1xuICAgICAgY29uc3QgbWluU3RheSAgICAgICAgICA9IG1pbk1hcFtpbmRleF07XG4gICAgICBjb25zdCByYXRlICAgICAgICAgICAgID0gcmF0ZXNbaW5kZXhdO1xuICAgICAgY29uc3QgaXNBdmFpbGFibGUgICAgICA9IHN0YXRlID09PSAwO1xuICAgICAgY29uc3QgcHJldkF2YWlsYWJsZSAgICA9IGFycltpbmRleCAtIDFdID09PSAwO1xuICAgICAgY29uc3QgaXNNb3JuaW5nQmxvY2tlZCA9IChpc0F2YWlsYWJsZSAmJiAhcHJldkF2YWlsYWJsZSkgPyB0cnVlIDogbnVsbDtcbiAgICAgIGNvbnN0IGlzQXZhaWxhYmxlT3V0ICAgPSAoaXNNb3JuaW5nQmxvY2tlZCkgPyB0cnVlIDogbnVsbDtcblxuICAgICAgaWYgKCF0cmVlW3llYXJdKSB7XG4gICAgICAgIHRyZWVbeWVhcl0gPSB7fTtcbiAgICAgIH1cblxuICAgICAgaWYgKCF0cmVlW3llYXJdW21vbnRoXSkge1xuICAgICAgICB0cmVlW3llYXJdW21vbnRoXSA9IHt9O1xuICAgICAgfVxuXG4gICAgICBpZiAoZGF5U2hpZnQpIHtcbiAgICAgICAgZGF5ICAgICAgPSBkYXlTaGlmdDtcbiAgICAgICAgZGF5U2hpZnQgPSBudWxsO1xuICAgICAgfVxuXG4gICAgICAvLyBpZiBtaW5TdGF5ID4gYXZhaWxhYmxlIGRheXMgaW4gZnV0dXJlXG4gICAgICAvLyBjb25zaWRlciBjdXJyZW50IGRheSBhcyB1bmF2YWlsYWJsZSBhcyB3ZWxsXG4gICAgICAvLyBpZiAoaXNBdmFpbGFibGUgJiYgbWluU3RheSA+IDEpIHtcbiAgICAgIC8vICAgbGV0IGRheXNBdmFpbGFibGUgPSAxO1xuICAgICAgLy8gICBsZXQgaSAgICAgICAgICAgICA9IGluZGV4ICsgMTtcbiAgICAgIC8vICAgd2hpbGUgKGFycltpXSA9PT0gMCkge1xuICAgICAgLy8gICAgIGRheXNBdmFpbGFibGUgKz0gMTtcbiAgICAgIC8vICAgICBpICs9IDE7XG4gICAgICAvLyAgIH1cbiAgICAgIC8vXG4gICAgICAvLyAgIGlmIChtaW5TdGF5ID4gZGF5c0F2YWlsYWJsZSkge1xuICAgICAgLy8gICAgIGlzQXZhaWxhYmxlID0gZmFsc2U7XG4gICAgICAvLyAgIH1cbiAgICAgIC8vIH1cblxuICAgICAgdHJlZVt5ZWFyXVttb250aF1bZGF5XSA9IHtcbiAgICAgICAgcmF0ZSxcbiAgICAgICAgbWluU3RheSxcbiAgICAgICAgaXNBdmFpbGFibGUsXG4gICAgICAgIGlzTW9ybmluZ0Jsb2NrZWQsXG4gICAgICAgIGlzQXZhaWxhYmxlT3V0XG4gICAgICB9O1xuXG4gICAgICB0cnkge1xuICAgICAgICBpZiAocHJldkF2YWlsYWJsZSAmJiAhaXNBdmFpbGFibGUpIHtcbiAgICAgICAgICB0cmVlW3ByZXZpb3VzRGF0ZS55ZWFyXVtwcmV2aW91c0RhdGUubW9udGhdW3ByZXZpb3VzRGF0ZS5kYXldLmlzQXZhaWxhYmxlT3V0ID0gdHJ1ZTtcbiAgICAgICAgICB0cmVlW3llYXJdW21vbnRoXVtkYXldLmlzTW9ybmluZ0Jsb2NrZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaChlKSB7XG4gICAgICAgIC8vIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIHByZXZpb3VzRGF0ZSA9IHtcbiAgICAgICAgeWVhcixcbiAgICAgICAgbW9udGgsXG4gICAgICAgIGRheVxuICAgICAgfTtcblxuICAgICAgaWYgKGRheSA8IGxlbmd0aCkge1xuICAgICAgICBkYXkgKz0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChtb250aCA+IDEwKSB7XG4gICAgICAgICAgbW9udGggPSAwO1xuICAgICAgICAgIHllYXIgKz0gMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBtb250aCArPSAxO1xuICAgICAgICB9XG4gICAgICAgIGRheSA9IDE7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0cmVlO1xuICAgIH0sIHt9KTtcbiAgfVxuXG4gIGdldERheVByb3BlcnR5KHllYXIsIG1vbnRoLCBkYXksIHByb3BlcnR5KSB7XG4gICAgbGV0IHByb3A7XG5cbiAgICBpZiAodGhpcy5tYXApIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHByb3AgPSB0aGlzLm1hcFt5ZWFyXVttb250aF1bZGF5XVtwcm9wZXJ0eV07XG4gICAgICB9IGNhdGNoKGUpIHtcbiAgICAgICAgLy8gY29udGludWUgcmVnYXJkbGVzcyBvZiBlcnJvclxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBwcm9wO1xuICB9XG5cbiAgaXNEYXlEaXNhYmxlZCh5ZWFyLCBtb250aCwgZGF5KSB7XG4gICAgcmV0dXJuICF0aGlzLmdldERheVByb3BlcnR5KHllYXIsIG1vbnRoLCBkYXksICdpc0F2YWlsYWJsZScpO1xuICB9XG59XG4iLCIvKiBnbG9iYWwgTm9kZSwgZG9jdW1lbnQsIHdpbmRvdywgY29uc29sZSwgcmVxdWlyZSwgZmV0Y2ggKi9cbmltcG9ydCB7XG4gIGFkZENsYXNzLCByZW1vdmVDbGFzcywgaGFzQ2xhc3MsIGlzQXJyYXksIGlzT2JqZWN0LCBFbWl0dGVyLFxuICBtZXJnZSwgZWxlbWVudEZyb21TdHJpbmcsIHRyYXZlcnNlVG9QYXJlbnRXaXRoQXR0ciwgZGVzdHJveUVsZW1lbnQsIG1vbnRoTGVuZ3RoLCBpcywgaXNGdW5jdGlvbixcbiAgaXNOdW1lcmljLCB0cmF2ZXJzZU9iaiwgaXNJbnNpZGUsIGN1cnJlbmN5Rm9ybWF0dGVyXG59IGZyb20gJ3dpZGdldC11dGlscyc7XG5cbmltcG9ydCAqIGFzIHRlbXBsYXRlcyBmcm9tICcuL3RlbXBsYXRlcyc7XG5pbXBvcnQgQ2FsZW5kYXJUcmVlIGZyb20gJy4vY2FsZW5kYXItdHJlZSc7XG5pbXBvcnQgY29uZmlnIGZyb20gJy4vY29uZmlnJztcbmltcG9ydCBsb2NhbGVzIGZyb20gJy4vbG9jYWxlcyc7XG5cbmltcG9ydCB7IHN0cmZ0aW1lIH0gZnJvbSAnc3RydGltZSc7XG5cbmltcG9ydCB7XG4gIGRhdGVUb0lzbywgaXNMYXRlciwgaXNDdXJyZW50LCB2YWxpZGF0aW9uT2ZDZWxsLCB0Rm9ybWF0dGVyLCBkYXRlVG9BcnJheSwgbW9udGhEaWZmXG59IGZyb20gJy4vdXRpbHMnO1xuXG5pbXBvcnQgc3R5bGVzIGZyb20gJy4vc3R5bGVzL2NhbGVuZGFyLnNjc3MnO1xuXG5pbXBvcnQgdXRpbHNTdHlsZXMgZnJvbSAnd2lkZ2V0LXV0aWxzL3NyYy9zdHlsZXMvcmVzZXQuc2Nzcyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENhbGVuZGFyIGV4dGVuZHMgRW1pdHRlciB7XG4gIGNvbnN0cnVjdG9yKG9wdHMsIG1hcHMpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMubmFtZSAgICA9IGNvbmZpZy5uYW1lO1xuICAgIHRoaXMuVkVSU0lPTiA9IHJlcXVpcmUoJy4uL3BhY2thZ2UuanNvbicpLnZlcnNpb247XG4gICAgdGhpcy5DU1NfUFJFRklYID0gY29uZmlnLmNzc1ByZWZpeDtcblxuICAgIGlmIChpc09iamVjdChvcHRzKSkge1xuICAgICAgaWYgKCFvcHRzLmVsKSB7XG4gICAgICAgIHRoaXMubG9nZ2VyKCdlbCBtdXN0IGJlIEhUTUwgZWxlbWVudCcsICdlcnJvcicpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNvbmZpZ0RhdGFzZXQgPSBtZXJnZShjb25maWcsIG9wdHMuZWwuZGF0YXNldCk7XG4gICAgICB0aGlzLm9wdHMgICAgICAgICAgID0gbWVyZ2UoY29uZmlnRGF0YXNldCwgb3B0cyk7XG5cbiAgICAgIHRoaXMub3B0cyA9IHRyYXZlcnNlT2JqKHRoaXMub3B0cywgKGEpID0+IGEsIChiKSA9PiB7XG4gICAgICAgIGlmIChiID09PSAndHJ1ZScgfHwgYiA9PT0gJ2ZhbHNlJykge1xuICAgICAgICAgIHJldHVybiAoYiA9PT0gJ3RydWUnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNOdW1lcmljKGIpKSB7XG4gICAgICAgICAgcmV0dXJuIHBhcnNlSW50KGIsIDEwKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYjtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAodGhpcy5vcHRzLmlzRHJvcERvd24pIHtcbiAgICAgICAgdGhpcy5pbml0Q2FsZW5kYXJEcm9wKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmVsID0gb3B0cy5lbDtcbiAgICAgIH1cblxuICAgICAgdGhpcy5vcHRzLmxhbmcgICAgICAgID0gKHRoaXMub3B0cy5sYW5nICYmIHRoaXMub3B0cy5sYW5nIGluIGxvY2FsZXMpID8gdGhpcy5vcHRzLmxhbmcgOiAnZW4tVVMnO1xuICAgICAgdGhpcy5sb2NhbGUgICAgICAgICAgID0gbG9jYWxlc1t0aGlzLm9wdHMubGFuZ107XG4gICAgICB0aGlzLmZvcm1hdCAgICAgICAgICAgPSB0aGlzLm9wdHMuZm9ybWF0RGF0ZSB8fCB0aGlzLmxvY2FsZS5mb3JtYXREYXRlIHx8ICclbS8lZC8lWSc7XG4gICAgICB0aGlzLm9wdHMuc3RhcnRPZldlZWsgPSB0aGlzLm9wdHMuc3RhcnRPZldlZWsgfHwgdGhpcy5sb2NhbGUuc3RhcnRPZldlZWs7XG5cbiAgICAgIGxldCB7IGN1cnJlbnREYXRlIH0gPSB0aGlzLm9wdHM7XG4gICAgICBjb25zdCB5ZWFyICA9IGN1cnJlbnREYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgICBjb25zdCBtb250aCA9IGN1cnJlbnREYXRlLmdldE1vbnRoKCk7XG4gICAgICBjb25zdCBkYXkgICA9IGN1cnJlbnREYXRlLmdldERhdGUoKTtcblxuICAgICAgdGhpcy5vcHRzLmN1cnJlbnREYXRlID0gW3llYXIsIG1vbnRoLCBkYXldO1xuXG4gICAgICBpZiAoIXRoaXMub3B0cy55ZWFyU3RhcnQpIHtcbiAgICAgICAgdGhpcy5vcHRzLnllYXJTdGFydCA9IHllYXI7XG4gICAgICB9XG5cbiAgICAgIGlmICghdGhpcy5vcHRzLm1vbnRoU3RhcnQpIHtcbiAgICAgICAgdGhpcy5vcHRzLm1vbnRoU3RhcnQgPSBtb250aDtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gVE9ETzogcmVuYW1lIGRheXNUcmVlXG4gICAgdGhpcy5kb20gICA9IHt9O1xuICAgIC8vIFRPRE86IHJlbmFtZSB0byBjYWxlbmRhclRyZWUgb3IgYm9va2luZ3NUcmVlXG4gICAgdGhpcy5jVHJlZSA9IG5ldyBDYWxlbmRhclRyZWUodmFsaWRhdGlvbk9mQ2VsbCwge30pO1xuICAgIC8vIFRPRE86IHJlbmFtZSB0byBib29raW5nc0RhdGEgJiBhZGREYXRhXG4gICAgaWYgKGlzT2JqZWN0KG1hcHMpKSB7XG4gICAgICB0aGlzLmNUcmVlLmFkZE1hcHMobWFwcywgbWFwcy5zdGFydF9kYXRlIHx8IGRhdGVUb0lzbyh0aGlzLm9wdHMuY3VycmVudERhdGUpKTtcbiAgICB9XG5cbiAgICAvLyBzZWxlY3Rpb24gYW5kIGhpZ2hsaWdodHNcbiAgICB0aGlzLmlzU2VsZWN0aW5nICAgICAgID0gZmFsc2U7XG4gICAgdGhpcy5oaWdobGlnaHRlZEJvdW5kcyA9IFtdO1xuICAgIHRoaXMuaGFzVmFsaWRSYW5nZSAgICAgPSB0cnVlO1xuXG4gICAgLy8gVE9ETzogcmVuYW1lIGlzUmV2ZXJzZVNlbGVjdGFibGUgdG8gc2VsZWN0aW9uRGVmYXVsdERpcmVjdGlvbiAtIHNob3VsZCBiZSBMVFIgb3IgUlRMXG4gICAgLy8gdXNlciBzZWxlY3RzIGVuZCBkYXRlIGZpcnN0XG4gICAgdGhpcy5pc1JldmVyc2VTZWxlY3RhYmxlID0gdGhpcy5vcHRzLmlzUmV2ZXJzZVNlbGVjdGFibGU7XG4gICAgdGhpcy5pbml0KCk7XG4gIH1cblxuICBpbml0KCkge1xuICAgIGFkZENsYXNzKHRoaXMuZWwsIHN0eWxlcy5jYWxlbmRhciwgdXRpbHNTdHlsZXMucmVzZXQpO1xuXG4gICAgaWYgKCF0aGlzLmVsLmRhdGFzZXQudGhlbWUpIHtcbiAgICAgIHRoaXMuZWwuZGF0YXNldC50aGVtZSA9IHRoaXMub3B0cy50aGVtZTtcbiAgICB9XG5cbiAgICB0aGlzLmRvbS5tb250aHNXcmFwcGVyID0gdGhpcy5lbC5hcHBlbmRDaGlsZChlbGVtZW50RnJvbVN0cmluZyh0ZW1wbGF0ZXMubWFpbikpO1xuICAgIHRoaXMuZG9tLmZvcndhcmQgICAgICAgPSB0aGlzLmVsLmFwcGVuZENoaWxkKGVsZW1lbnRGcm9tU3RyaW5nKHRlbXBsYXRlcy5mb3J3YXJkKSk7XG4gICAgdGhpcy5kb20uYmFjayAgICAgICAgICA9IHRoaXMuZWwuYXBwZW5kQ2hpbGQoZWxlbWVudEZyb21TdHJpbmcodGVtcGxhdGVzLmJhY2spKTtcbiAgICB0aGlzLnJlbmRlck1vbnRocyh0aGlzLm9wdHMueWVhclN0YXJ0LCB0aGlzLm9wdHMubW9udGhTdGFydCk7XG5cbiAgICB0aGlzLmFkZEJ0bnNFdmVudHMoKTtcblxuICAgIGlmICh0aGlzLm9wdHMuc2VsZWN0YWJsZSAmJiB0aGlzLm9wdHMuZWxTdGFydEF0ICYmIHRoaXMub3B0cy5lbEVuZEF0KSB7XG4gICAgICBpZiAoIXRoaXMub3B0cy5yZW50YWxJZCkge1xuICAgICAgICB0aGlzLmlucHV0c1RvVmFsdWVzKCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMub24oJ21hcHMtbG9hZGVkJywgKCkgPT4gdGhpcy5pbnB1dHNUb1ZhbHVlcygpKTtcbiAgICAgIHRoaXMub3B0cy5lbFN0YXJ0QXQuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCAoKSA9PiB0aGlzLmlucHV0c1RvVmFsdWVzKCkpO1xuICAgICAgdGhpcy5vcHRzLmVsRW5kQXQuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCAoKSA9PiB0aGlzLmlucHV0c1RvVmFsdWVzKCkpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdHMucmVudGFsSWQgJiYgIXRoaXMub3B0cy5pc0Ryb3BEb3duKSB7XG4gICAgICB0aGlzLmxvYWRNYXBzKHRoaXMub3B0cy5yZW50YWxJZCk7XG4gICAgfVxuXG4gICAgdGhpcy5lbC5kYXRhc2V0LnNlbGVjdGFibGUgPSB0aGlzLm9wdHMuc2VsZWN0YWJsZTtcblxuICAgIHRoaXMubG9nZ2VyKCdpbml0ZWQnKTtcbiAgICB0aGlzLmVtaXQoJ2luaXQnKTtcbiAgfVxuXG4gIGNoYW5nZVNlbGVjdGlvbk9yZGVyKGlzUmV2ZXJzZSkge1xuICAgIGlmICgoaXNSZXZlcnNlICE9PSB0aGlzLmlzUmV2ZXJzZVNlbGVjdGFibGUpICYmICF0aGlzLmlzU2VsZWN0aW5nKSB7XG4gICAgICB0aGlzLmlzUmV2ZXJzZVNlbGVjdGFibGUgPSBpc1JldmVyc2U7XG4gICAgICB0aGlzLmRlc3Ryb3lNb250aHMoKTtcbiAgICAgIHRoaXMucmVuZGVyTW9udGhzKHRoaXMueWVhclN0YXJ0LCB0aGlzLm1vbnRoU3RhcnQpO1xuICAgIH1cbiAgfVxuXG4gIHJlbmRlck1vbnRocyh5ZWFyU3RhcnQsIG1vbnRoU3RhcnQpIHtcbiAgICAvLyBjb25zdHJ1Y3QgZG9tIHRyZWVcbiAgICBjb25zdCB7XG4gICAgICB0cmVlLCB5ZWFyRW5kLCBtb250aEVuZCwgbW9udGhzXG4gICAgfSA9IHRoaXMuY3JlYXRlVHJlZSh5ZWFyU3RhcnQsIG1vbnRoU3RhcnQsIHRoaXMub3B0cy5kaXNwbGF5TW9udGhzKTtcblxuICAgIHRoaXMuY1RyZWUuYWRkVHJlZSh0cmVlKTtcblxuICAgIHRoaXMubW9udGhTdGFydCA9IG1vbnRoU3RhcnQ7XG4gICAgdGhpcy55ZWFyU3RhcnQgID0geWVhclN0YXJ0O1xuXG4gICAgdGhpcy5tb250aEVuZCA9IG1vbnRoRW5kO1xuICAgIHRoaXMueWVhckVuZCAgPSB5ZWFyRW5kO1xuXG4gICAgaWYgKHRoaXMub3B0cy5zZWxlY3RhYmxlKSB7XG4gICAgICBhZGRDbGFzcyh0aGlzLmVsLCB0aGlzLmlzUmV2ZXJzZVNlbGVjdGFibGUgPyBzdHlsZXMucmV2ZXJzZWQgOiBzdHlsZXMuZGlyZWN0KTtcbiAgICAgIHJlbW92ZUNsYXNzKHRoaXMuZWwsIHRoaXMuaXNSZXZlcnNlU2VsZWN0YWJsZSA/IHN0eWxlcy5kaXJlY3QgOiBzdHlsZXMucmV2ZXJzZWQpO1xuICAgIH1cblxuICAgIHRoaXMuZG9tLm1vbnRocyA9IG1vbnRocztcbiAgICB0aGlzLmRvbS5tb250aHMuZm9yRWFjaCgobSkgPT4ge1xuICAgICAgdGhpcy5kb20ubW9udGhzV3JhcHBlci5hcHBlbmRDaGlsZChtKTtcbiAgICAgIGlmICh0aGlzLm9wdHMuc2VsZWN0YWJsZSkge1xuICAgICAgICB0aGlzLmFkZE1vbnRoRXZlbnRzKG0pO1xuICAgICAgICBhZGRDbGFzcyh0aGlzLmVsLCBzdHlsZXMuYWN0aW9uc0VuYWJsZWQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKCF0aGlzLm9wdHMuZW5hYmxlQWxsRGF5cykge1xuICAgICAgdGhpcy5kaXNhYmxlQmFja0J0bigpO1xuICAgIH1cblxuICAgIHRoaXMucmVjb3ZlclNlbGVjdGlvbnMoKTtcbiAgfVxuXG4gIHJlY292ZXJTZWxlY3Rpb25zKCkge1xuICAgIGlmICh0aGlzLnNlbGVjdGlvblN0YXJ0KSB7XG4gICAgICB0aGlzLnNlbGVjdFN0YXJ0KHRoaXMuc2VsZWN0aW9uU3RhcnQsIHRoaXMuY1RyZWUuc2VsZWN0RGF5KC4uLnRoaXMuc2VsZWN0aW9uU3RhcnQpKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zZWxlY3Rpb25FbmQpIHtcbiAgICAgIHRoaXMuc2VsZWN0RW5kKHRoaXMuc2VsZWN0aW9uRW5kLCB0aGlzLmNUcmVlLnNlbGVjdERheSguLi50aGlzLnNlbGVjdGlvbkVuZCkpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnNlbGVjdGlvblN0YXJ0ICYmIHRoaXMuc2VsZWN0aW9uRW5kKSB7XG4gICAgICBpZiAodGhpcy5oaWdobGlnaHRlZEJvdW5kcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuaGlnaExpZ2h0UmFuZ2UoLi4udGhpcy5oaWdobGlnaHRlZEJvdW5kcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmhpZ2hMaWdodFJhbmdlKHRoaXMuc2VsZWN0aW9uU3RhcnQsIHRoaXMuc2VsZWN0aW9uRW5kKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBkaXNhYmxlQmFja0J0bigpIHtcbiAgICBpZiAodGhpcy5vcHRzLmlzQmFja0Rpc2FibGVkKSB7XG4gICAgICBjb25zdCBzdGFydERhdGUgICAgICAgID0gZGF0ZVRvSXNvKHRoaXMueWVhclN0YXJ0LCB0aGlzLm1vbnRoU3RhcnQsIDEpO1xuICAgICAgbGV0IHsgY3VycmVudERhdGUgfSAgICA9IHRoaXMub3B0cztcbiAgICAgIGN1cnJlbnREYXRlICAgICAgICAgICAgPSBkYXRlVG9Jc28oY3VycmVudERhdGVbMF0sIGN1cnJlbnREYXRlWzFdLCAxKTtcbiAgICAgIHRoaXMuZG9tLmJhY2suZGlzYWJsZWQgPSBzdGFydERhdGUgPD0gY3VycmVudERhdGU7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlTG9hZGluZygpIHtcbiAgICBpZiAoIWhhc0NsYXNzKHRoaXMuZWwsIHN0eWxlcy5sb2FkaW5nKSkge1xuICAgICAgYWRkQ2xhc3ModGhpcy5lbCwgc3R5bGVzLmxvYWRpbmcpO1xuICAgICAgdGhpcy5lbWl0KCdsb2FkaW5nLXNob3cnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVtb3ZlQ2xhc3ModGhpcy5lbCwgc3R5bGVzLmxvYWRpbmcpO1xuICAgICAgdGhpcy5lbWl0KCdsb2FkaW5nLWhpZGUnKTtcbiAgICB9XG4gIH1cblxuICBhZGRNYXBzKG1hcHMpIHtcbiAgICB0aGlzLmNUcmVlLnJlcGxhY2VNYXBzKG1hcHMsIG1hcHMuc3RhcnRfZGF0ZSk7XG4gICAgdGhpcy5kZXN0cm95TW9udGhzKCk7XG4gICAgdGhpcy5yZW5kZXJNb250aHMoXG4gICAgICB0aGlzLm9wdHMueWVhclN0YXJ0IHx8IHRoaXMueWVhclN0YXJ0LFxuICAgICAgdGhpcy5vcHRzLm1vbnRoU3RhcnQgfHwgdGhpcy5tb250aFN0YXJ0XG4gICAgKTtcbiAgfVxuXG4gIGFkZEJ0bnNFdmVudHMoKSB7XG4gICAgdGhpcy5kb20uZm9yd2FyZC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChlKSA9PiB7XG4gICAgICB0aGlzLmRlc3Ryb3lNb250aHMoKTtcbiAgICAgIGxldCBtb250aFRvUmVuZGVyID0gdGhpcy5tb250aFN0YXJ0ICsgKHRoaXMub3B0cy5tb250aHNQYWdpbmF0aW9uSnVtcCB8fCB0aGlzLm9wdHMuZGlzcGxheU1vbnRocyk7XG4gICAgICBsZXQgeWVhclRvUmVuZGVyID0gdGhpcy55ZWFyU3RhcnQ7XG5cbiAgICAgIGlmIChtb250aFRvUmVuZGVyID49IDEyKSB7XG4gICAgICAgIG1vbnRoVG9SZW5kZXIgLT0gMTI7XG4gICAgICAgIHllYXJUb1JlbmRlciArPSAxO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnJlbmRlck1vbnRocyh5ZWFyVG9SZW5kZXIsIG1vbnRoVG9SZW5kZXIpO1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5kb20uYmFjay5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChlKSA9PiB7XG4gICAgICB0aGlzLmRlc3Ryb3lNb250aHMoKTtcbiAgICAgIGxldCBtb250aFRvUmVuZGVyID0gdGhpcy5tb250aFN0YXJ0IC0gKHRoaXMub3B0cy5tb250aHNQYWdpbmF0aW9uSnVtcCB8fCB0aGlzLm9wdHMuZGlzcGxheU1vbnRocyk7XG4gICAgICBsZXQgeWVhclRvUmVuZGVyICA9IHRoaXMueWVhclN0YXJ0O1xuXG4gICAgICBpZiAobW9udGhUb1JlbmRlciA8IDApIHtcbiAgICAgICAgbW9udGhUb1JlbmRlciArPSAxMjtcbiAgICAgICAgeWVhclRvUmVuZGVyIC09IDE7XG4gICAgICB9XG5cbiAgICAgIHRoaXMucmVuZGVyTW9udGhzKHllYXJUb1JlbmRlciwgbW9udGhUb1JlbmRlcik7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgfSk7XG4gIH1cblxuICBhZGRNb250aEV2ZW50cyhlbCkge1xuICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGUpID0+IHtcbiAgICAgIGNvbnN0IGlzRW5kRmlyc3QgPSB0aGlzLmlzUmV2ZXJzZVNlbGVjdGFibGU7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHZhbHVlLFxuICAgICAgICBwYXJlbnQ6IGNlbGxcbiAgICAgIH0gPSB0cmF2ZXJzZVRvUGFyZW50V2l0aEF0dHIoZS50YXJnZXQsICdkYXRhLXZhbHVlJyk7XG5cbiAgICAgIGNvbnN0IHJlc2V0U2VsZWN0aW9uT25Fc2NhcGUgPSAoZXZlbnQpID0+IHtcbiAgICAgICAgY29uc3Qga2V5ID0gZXZlbnQua2V5IHx8IGV2ZW50LmtleUNvZGU7XG5cbiAgICAgICAgaWYgKGtleSA9PT0gJ0VzY2FwZScgfHwga2V5ID09PSAnRXNjJyB8fCBrZXkgPT09IDI3KSB7XG4gICAgICAgICAgaWYgKHRoaXMuaXNTZWxlY3RpbmcpIHtcbiAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleXVwJywgcmVzZXRTZWxlY3Rpb25PbkVzY2FwZSwgdHJ1ZSk7XG4gICAgICAgICAgICB0aGlzLnJlc2V0U2VsZWN0aW9uKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsIHJlc2V0U2VsZWN0aW9uT25Fc2NhcGUsIHRydWUpO1xuXG4gICAgICBpZiAoaXModmFsdWUpICYmIGNlbGwpIHtcbiAgICAgICAgY29uc3QgZGF0ZVZhbHVlICAgICAgICAgID0gW2VsLnllYXIsIGVsLm1vbnRoLCBwYXJzZUludChjZWxsLmdldEF0dHJpYnV0ZSgnZGF0YS12YWx1ZScpLCAxMCldO1xuICAgICAgICBjb25zdCBkYXlBbHJlYWR5U2VsZWN0ZWQgPSB0aGlzLmlzU2VsZWN0aW5nICYmIGlzQ3VycmVudCgoaXNFbmRGaXJzdCkgPyB0aGlzLnNlbGVjdGlvbkVuZCA6IHRoaXMuc2VsZWN0aW9uU3RhcnQsIGRhdGVWYWx1ZSk7XG4gICAgICAgIGNvbnN0IHJhbmdlU2VsZWN0ZWQgICAgICA9ICF0aGlzLmlzU2VsZWN0aW5nICYmIHRoaXMuc2VsZWN0aW9uRW5kICYmIHRoaXMuc2VsZWN0aW9uU3RhcnQ7XG4gICAgICAgIGNvbnN0IGlzUGFzdFRvZGF5ICAgICAgICA9IGlzTGF0ZXIoZGF0ZVZhbHVlLCB0aGlzLm9wdHMuY3VycmVudERhdGUpO1xuXG4gICAgICAgIGlmIChkYXlBbHJlYWR5U2VsZWN0ZWQgfHwgcmFuZ2VTZWxlY3RlZCB8fCBpc1Bhc3RUb2RheSkge1xuICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleXVwJywgcmVzZXRTZWxlY3Rpb25PbkVzY2FwZSwgdHJ1ZSk7XG4gICAgICAgICAgdGhpcy5yZXNldFNlbGVjdGlvbigpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFkYXlBbHJlYWR5U2VsZWN0ZWQgJiYgIWlzUGFzdFRvZGF5ICYmICF0aGlzLm9wdHMuZW5hYmxlQWxsRGF5cykge1xuICAgICAgICAgIGlmIChpc0VuZEZpcnN0KSB7XG4gICAgICAgICAgICB0aGlzLmVuZERhdGVGaXJzdEFjdGlvbihkYXRlVmFsdWUsIGNlbGwpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnN0YXJ0RGF0ZUZpcnN0QWN0aW9uKGRhdGVWYWx1ZSwgY2VsbCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlbW92ZUNsYXNzKHRoaXMuZWwsIHN0eWxlcy5zZWxlY3RpbmdEaXJlY3QsIHN0eWxlcy5zZWxlY3RpbmdSZXZlcnNlZCk7XG4gICAgICAgICAgZGVsZXRlIGNlbGwuZGF0YXNldC5oaWdobGlnaHRlZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbkVuZCAmJiB0aGlzLnNlbGVjdGlvblN0YXJ0ICYmIHRoaXMuaGFzVmFsaWRSYW5nZSkge1xuICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleXVwJywgcmVzZXRTZWxlY3Rpb25PbkVzY2FwZSwgdHJ1ZSk7XG4gICAgICAgICAgdGhpcy5jb21wbGV0ZVNlbGVjdGlvbihpc0VuZEZpcnN0LCBkYXRlVmFsdWUsIGNlbGwpO1xuICAgICAgICAgIGlmICh0aGlzLm9wdHMuaXNEcm9wRG93biAmJiB0aGlzLmNhbERyb3ApIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2VEcm9wKG51bGwsIHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgZWwuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VvdmVyJywgKGUpID0+IHtcbiAgICAgIGNvbnN0IHsgdmFsdWUsIHBhcmVudDogY2VsbCB9ID0gdHJhdmVyc2VUb1BhcmVudFdpdGhBdHRyKGUudGFyZ2V0LCAnZGF0YS12YWx1ZScpO1xuXG4gICAgICBpZiAoaXModmFsdWUpICYmIGNlbGwpIHtcbiAgICAgICAgY29uc3QgY3VycmVudCAgICAgICAgICA9IFtlbC55ZWFyLCBlbC5tb250aCwgcGFyc2VJbnQoY2VsbC5nZXRBdHRyaWJ1dGUoJ2RhdGEtdmFsdWUnKSwgMTApXTtcbiAgICAgICAgY29uc3QgaXNQYXN0VG9kYXkgICAgICA9IGlzTGF0ZXIoY3VycmVudCwgdGhpcy5vcHRzLmN1cnJlbnREYXRlKTtcbiAgICAgICAgY29uc3QgaXNFbmRGaXJzdCAgICAgICA9IHRoaXMuaXNSZXZlcnNlU2VsZWN0YWJsZTtcblxuICAgICAgICBpZiAoaXNQYXN0VG9kYXkgJiYgIXRoaXMub3B0cy5lbmFibGVBbGxEYXlzKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNTZWxlY3RpbmcpIHtcbiAgICAgICAgICB0aGlzLnJlbW92ZUhpZ2hsaWdodCgpO1xuXG4gICAgICAgICAgY29uc3QgY2VsbHMgPSB0aGlzLmVsLnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLXZhbHVlXScpO1xuICAgICAgICAgIGNlbGxzLmZvckVhY2goKGVsKSA9PiB7XG4gICAgICAgICAgICBkZWxldGUgZWwuZGF0YXNldC5ob3ZlcmVkO1xuICAgICAgICAgICAgZGVsZXRlIGVsLmRhdGFzZXQuaG92ZXJlZE9mZnNldDtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIC8vIHJldmVyc2Ugc2VsZWN0aW9uIGRpcmVjdGlvblxuICAgICAgICAgIGlmIChpc0VuZEZpcnN0ICYmIHRoaXMuc2VsZWN0aW9uRW5kICYmICFpc0N1cnJlbnQoY3VycmVudCwgdGhpcy5zZWxlY3Rpb25FbmQpKSB7XG4gICAgICAgICAgICBpZiAoaXNMYXRlcih0aGlzLnNlbGVjdGlvbkVuZCwgY3VycmVudCkpIHtcbiAgICAgICAgICAgICAgY29uc3QgY2VsbEEgPSB0aGlzLmNlbGxCO1xuICAgICAgICAgICAgICBjb25zdCB7IHNlbGVjdGlvbkVuZCB9ID0gdGhpcztcblxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZUhpZ2hsaWdodERpcmVjdGlvbihmYWxzZSwgc2VsZWN0aW9uRW5kKTtcbiAgICAgICAgICAgICAgdGhpcy5zdGFydERhdGVGaXJzdEFjdGlvbih0aGlzLnNlbGVjdGlvbkVuZCwgY2VsbEEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAoIWlzRW5kRmlyc3QgJiYgdGhpcy5zZWxlY3Rpb25TdGFydCAmJiAhaXNDdXJyZW50KGN1cnJlbnQsIHRoaXMuc2VsZWN0aW9uU3RhcnQpKSB7XG4gICAgICAgICAgICBpZiAoaXNMYXRlcihjdXJyZW50LCB0aGlzLnNlbGVjdGlvblN0YXJ0KSkge1xuICAgICAgICAgICAgICBjb25zdCBjZWxsQiA9IHRoaXMuY2VsbEE7XG4gICAgICAgICAgICAgIGNvbnN0IHsgc2VsZWN0aW9uU3RhcnQgfSA9IHRoaXM7XG5cbiAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VIaWdobGlnaHREaXJlY3Rpb24odHJ1ZSwgc2VsZWN0aW9uU3RhcnQpO1xuICAgICAgICAgICAgICB0aGlzLmVuZERhdGVGaXJzdEFjdGlvbih0aGlzLnNlbGVjdGlvblN0YXJ0LCBjZWxsQik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHRoaXMuaXNSZXZlcnNlU2VsZWN0YWJsZSkge1xuICAgICAgICAgICAgdGhpcy5oaWdoTGlnaHRSYW5nZShjdXJyZW50LCB0aGlzLnNlbGVjdGlvbkVuZCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaGlnaExpZ2h0UmFuZ2UodGhpcy5zZWxlY3Rpb25TdGFydCwgY3VycmVudCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuY2hhbmdlSGlnaGxpZ2h0RGlyZWN0aW9uKHRoaXMub3B0cy5pc1JldmVyc2VTZWxlY3RhYmxlKTtcblxuICAgICAgICAgIGNvbnN0IGlzRGlzYWJsZWRMZWZ0ICAgPSBjZWxsLmRhdGFzZXQuZGlzYWJsZWQgPT09ICdsZWZ0JztcbiAgICAgICAgICBjb25zdCBpc0Rpc2FibGVkQ2VudGVyID0gY2VsbC5kYXRhc2V0LmRpc2FibGVkID09PSAnY2VudGVyJztcbiAgICAgICAgICBjb25zdCBpc0Rpc2FibGVkUmlnaHQgID0gY2VsbC5kYXRhc2V0LmRpc2FibGVkID09PSAncmlnaHQnO1xuXG4gICAgICAgICAgbGV0IGlzSW52YWxpZCA9ICcnO1xuXG4gICAgICAgICAgaWYgKGlzRW5kRmlyc3QgJiYgaXNEaXNhYmxlZFJpZ2h0IHx8IGlzRGlzYWJsZWRDZW50ZXIgfHwgIWlzRW5kRmlyc3QgJiYgaXNEaXNhYmxlZExlZnQpIHtcbiAgICAgICAgICAgIGlzSW52YWxpZCA9ICdpbnZhbGlkJztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBjZWxscyA9IHRoaXMuZWwucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtdmFsdWVdJyk7XG4gICAgICAgICAgbGV0IG9mZnNldENlbGw7XG5cbiAgICAgICAgICBjZWxscy5mb3JFYWNoKChlbCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGRlbGV0ZSBlbC5kYXRhc2V0LmhvdmVyZWQ7XG4gICAgICAgICAgICBkZWxldGUgZWwuZGF0YXNldC5ob3ZlcmVkT2Zmc2V0O1xuXG4gICAgICAgICAgICBpZiAoZWwgPT09IGNlbGwpIHtcbiAgICAgICAgICAgICAgb2Zmc2V0Q2VsbCA9ICh0aGlzLm9wdHMuaXNSZXZlcnNlU2VsZWN0YWJsZSkgPyBjZWxsc1tpbmRleCAtIDFdIDogY2VsbHNbaW5kZXggKyAxXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGlmIChpcyhvZmZzZXRDZWxsKSkge1xuICAgICAgICAgICAgb2Zmc2V0Q2VsbC5kYXRhc2V0LmhvdmVyZWRPZmZzZXQgPSAnJztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjZWxsLmRhdGFzZXQuaG92ZXJlZCA9IGlzSW52YWxpZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgZWwuYm9keS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW91dCcsIChlKSA9PiB7XG4gICAgICBjb25zdCBjZWxscyA9IHRoaXMuZWwucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtdmFsdWVdJyk7XG4gICAgICBjZWxscy5mb3JFYWNoKChlbCkgPT4ge1xuICAgICAgICBkZWxldGUgZWwuZGF0YXNldC5ob3ZlcmVkO1xuICAgICAgICBkZWxldGUgZWwuZGF0YXNldC5ob3ZlcmVkT2Zmc2V0O1xuICAgICAgfSk7XG5cbiAgICAgIC8qIGVzbGludCBuby1iaXR3aXNlOiBbXCJlcnJvclwiLCB7IFwiYWxsb3dcIjogW1wiJlwiXSB9XSAqL1xuICAgICAgLy8gc2ltdWxhdGUgJ21vdXNlbGVhdmUnXG4gICAgICBpZiAoIWUucmVsYXRlZFRhcmdldFxuICAgICAgICB8fCAoZS5yZWxhdGVkVGFyZ2V0ICE9PSBlbC5ib2R5ICYmICEoZWwuYm9keS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihlLnJlbGF0ZWRUYXJnZXQpXG4gICAgICAgICYgTm9kZS5ET0NVTUVOVF9QT1NJVElPTl9DT05UQUlORURfQlkpKSkge1xuICAgICAgICBpZiAodGhpcy5pc1NlbGVjdGluZykge1xuICAgICAgICAgIHRoaXMucmVtb3ZlSGlnaGxpZ2h0KCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGNoYW5nZUhpZ2hsaWdodERpcmVjdGlvbihpc1JldmVyc2UsIGRhdGVBcnJheSA9IG51bGwpIHtcbiAgICB0aGlzLmlzUmV2ZXJzZVNlbGVjdGFibGUgPSBpc1JldmVyc2U7XG5cbiAgICBpZiAoZGF0ZUFycmF5KSB7XG4gICAgICB0aGlzLnJlc2V0U2VsZWN0aW9uKCk7XG4gICAgICB0aGlzLnNlbGVjdGlvblN0YXJ0ID0gKGlzUmV2ZXJzZSkgPyBkYXRlQXJyYXkgOiBudWxsO1xuICAgICAgdGhpcy5zZWxlY3Rpb25FbmQgICA9IChpc1JldmVyc2UpID8gbnVsbCA6IGRhdGVBcnJheTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3Rpb25TdGFydCA9IHRoaXMuc2VsZWN0aW9uRW5kO1xuICAgICAgdGhpcy5zZWxlY3Rpb25FbmQgPSB0aGlzLnNlbGVjdGlvblN0YXJ0O1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdHMuc2VsZWN0YWJsZSkge1xuICAgICAgYWRkQ2xhc3ModGhpcy5lbCwgaXNSZXZlcnNlID8gc3R5bGVzLnJldmVyc2VkIDogc3R5bGVzLmRpcmVjdCk7XG4gICAgICByZW1vdmVDbGFzcyh0aGlzLmVsLCBpc1JldmVyc2UgPyBzdHlsZXMuZGlyZWN0IDogc3R5bGVzLnJldmVyc2VkKTtcbiAgICB9XG4gIH1cblxuICBzdGFydERhdGVGaXJzdEFjdGlvbihkYXRlVmFsdWUsIGNlbGwpIHtcbiAgICBpZiAodGhpcy5pc1NlbGVjdGluZyAmJiBpc0xhdGVyKHRoaXMuc2VsZWN0aW9uU3RhcnQsIGRhdGVWYWx1ZSkpIHtcbiAgICAgIHRoaXMuc2VsZWN0RW5kQWN0aW9uKGRhdGVWYWx1ZSwgY2VsbCk7XG5cbiAgICAgIGNvbnN0IGZuID0gKCkgPT4ge1xuICAgICAgICByZW1vdmVDbGFzcyh0aGlzLmVsLCBzdHlsZXMuc2VsZWN0aW5nRGlyZWN0KTtcbiAgICAgICAgY2VsbC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW91dCcsIGZuKTtcbiAgICAgIH07XG5cbiAgICAgIGNlbGwuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VvdXQnLCBmbik7XG4gICAgICB0aGlzLmlzU2VsZWN0aW5nID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVtb3ZlSGlnaGxpZ2h0KCk7XG4gICAgICBhZGRDbGFzcyh0aGlzLmVsLCBzdHlsZXMuc2VsZWN0aW5nRGlyZWN0KTtcbiAgICAgIHRoaXMuaXNTZWxlY3RpbmcgPSB0cnVlO1xuICAgICAgdGhpcy5zZWxlY3RTdGFydEFjdGlvbihkYXRlVmFsdWUsIGNlbGwpO1xuICAgICAgY2VsbC5kYXRhc2V0LmhpZ2hsaWdodGVkID0gJ2xlZnQnO1xuICAgIH1cbiAgfVxuXG4gIGVuZERhdGVGaXJzdEFjdGlvbihkYXRlVmFsdWUsIGNlbGwpIHtcbiAgICBpZiAodGhpcy5pc1NlbGVjdGluZyAmJiBpc0xhdGVyKGRhdGVWYWx1ZSwgdGhpcy5zZWxlY3Rpb25FbmQpKSB7XG4gICAgICB0aGlzLnNlbGVjdFN0YXJ0QWN0aW9uKGRhdGVWYWx1ZSwgY2VsbCk7XG5cbiAgICAgIGNvbnN0IGZuID0gKCkgPT4ge1xuICAgICAgICByZW1vdmVDbGFzcyh0aGlzLmVsLCBzdHlsZXMuc2VsZWN0aW5nUmV2ZXJzZWQpO1xuICAgICAgICBjZWxsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlb3V0JywgZm4pO1xuICAgICAgfTtcblxuICAgICAgY2VsbC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW91dCcsIGZuKTtcbiAgICAgIHRoaXMuaXNTZWxlY3RpbmcgPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZW1vdmVIaWdobGlnaHQoKTtcbiAgICAgIGFkZENsYXNzKHRoaXMuZWwsIHN0eWxlcy5zZWxlY3RpbmdSZXZlcnNlZCk7XG4gICAgICB0aGlzLmlzU2VsZWN0aW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMuc2VsZWN0RW5kQWN0aW9uKGRhdGVWYWx1ZSwgY2VsbCk7XG4gICAgICBjZWxsLmRhdGFzZXQuaGlnaGxpZ2h0ZWQgPSAncmlnaHQnO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdFN0YXJ0QWN0aW9uKGRhdGVWYWx1ZSwgY2VsbCkge1xuICAgIHRoaXMuc2VsZWN0U3RhcnQoZGF0ZVZhbHVlLCBjZWxsKTtcbiAgICB0aGlzLnN3aXRjaElucHV0Rm9jdXMoJ2VuZCcpO1xuICAgIGlmICh0aGlzLmhhc1ZhbGlkUmFuZ2UpIHtcbiAgICAgIHRoaXMuZW1pdCgnc2VsZWN0aW9uLXN0YXJ0JywgZGF0ZVRvSXNvKC4uLmRhdGVWYWx1ZSwgdHJ1ZSksIGRhdGVUb0lzbyguLi5kYXRlVmFsdWUpKTtcbiAgICAgIGlmIChpc0Z1bmN0aW9uKHRoaXMub3B0cy5vblNlbGVjdFN0YXJ0KSkge1xuICAgICAgICB0aGlzLm9wdHMub25TZWxlY3RTdGFydChkYXRlVG9Jc28oLi4uZGF0ZVZhbHVlLCB0cnVlKSwgZGF0ZVRvSXNvKC4uLmRhdGVWYWx1ZSkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNlbGVjdEVuZEFjdGlvbihkYXRlVmFsdWUsIGNlbGwpIHtcbiAgICB0aGlzLnNlbGVjdEVuZChkYXRlVmFsdWUsIGNlbGwpO1xuICAgIHRoaXMuc3dpdGNoSW5wdXRGb2N1cygnc3RhcnQnKTtcbiAgICBpZiAodGhpcy5oYXNWYWxpZFJhbmdlKSB7XG4gICAgICB0aGlzLmVtaXQoJ3NlbGVjdGlvbi1lbmQnLCBkYXRlVG9Jc28oLi4uZGF0ZVZhbHVlLCB0cnVlKSwgZGF0ZVRvSXNvKC4uLmRhdGVWYWx1ZSkpO1xuICAgICAgaWYgKGlzRnVuY3Rpb24odGhpcy5vcHRzLm9uU2VsZWN0RW5kKSkge1xuICAgICAgICB0aGlzLm9wdHMub25TZWxlY3RFbmQoZGF0ZVRvSXNvKC4uLmRhdGVWYWx1ZSwgdHJ1ZSksIGRhdGVUb0lzbyguLi5kYXRlVmFsdWUpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZW1vdmVIaWdobGlnaHQoKSB7XG4gICAgaWYgKHRoaXMuaGlnaGxpZ2h0ZWRCb3VuZHMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgeyByYW5nZSB9ID0gdGhpcy5zZWxlY3RSYW5nZSguLi50aGlzLmhpZ2hsaWdodGVkQm91bmRzKTtcbiAgICAgIHJhbmdlLm1hcCgoY2VsbCkgPT4ge1xuICAgICAgICBkZWxldGUgY2VsbC5kYXRhc2V0LmhpZ2hsaWdodGVkO1xuICAgICAgICBkZWxldGUgY2VsbC5kYXRhc2V0LmludmFsaWQ7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5kZXN0cm95VG9vbHRpcCgpO1xuXG4gICAgICB0aGlzLmhhc1ZhbGlkUmFuZ2UgICAgID0gdHJ1ZTtcbiAgICAgIHRoaXMuaGlnaGxpZ2h0ZWRCb3VuZHMgPSBbXTtcbiAgICB9XG4gIH1cblxuICBkZXN0cm95VG9vbHRpcCgpIHtcbiAgICBpZiAoaXModGhpcy50b29sdGlwUG9wcGVyKSkge1xuICAgICAgdGhpcy50b29sdGlwUG9wcGVyLmRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICBpZiAoaXModGhpcy5kb20udG9vbHRpcCkpIHtcbiAgICAgIGRlc3Ryb3lFbGVtZW50KHRoaXMuZG9tLnRvb2x0aXApO1xuICAgIH1cbiAgfVxuXG4gIGhpZ2hMaWdodFJhbmdlKHN0YXJ0LCBlbmQpIHtcbiAgICBjb25zdCB7IHJhbmdlLCBpc1ZhbGlkIH0gPSB0aGlzLnNlbGVjdFJhbmdlKHN0YXJ0LCBlbmQpO1xuICAgIGNvbnN0IHsgb3B0cyB9ICAgICAgICAgICA9IHRoaXM7XG4gICAgbGV0IHsgbWluU3RheSwgbWF4U3RheSB9ID0gb3B0cztcbiAgICBsZXQgaW52YWxpZFJhbmdlTWVzc2FnZTtcblxuICAgIGlmIChpc0FycmF5KHJhbmdlKSkge1xuICAgICAgaWYgKG9wdHMucmVudGFsSWQpIHtcbiAgICAgICAgaWYgKCFvcHRzLmFsbG93U2hvcnRlck1pblN0YXlTZWxlY3Rpb24pIHtcbiAgICAgICAgICAvLyBnZXQgdGhlIGJpZ2dlc3QgbWluU3RheSB2YWx1ZSBpbiB0aGUgcmFuZ2VcbiAgICAgICAgICBtaW5TdGF5ID0gTWF0aC5tYXgoLi4ucmFuZ2UubWFwKGZ1bmN0aW9uKGNlbGwpIHtcbiAgICAgICAgICAgIHJldHVybiBjZWxsLmRhdGFzZXQubWluU3RheSB8fCBtaW5TdGF5O1xuICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghb3B0cy5hbGxvd0xvbmdlck1heFN0YXlTZWxlY3Rpb24pIHtcbiAgICAgICAgICAvLyBnZXQgdGhlIGJpZ2dlc3QgbWF4U3RheSB2YWx1ZSBpbiB0aGUgcmFuZ2VcbiAgICAgICAgICBtYXhTdGF5ID0gTWF0aC5tYXgoLi4ucmFuZ2UubWFwKGZ1bmN0aW9uKGNlbGwpIHtcbiAgICAgICAgICAgIHJldHVybiBjZWxsLmRhdGFzZXQubWF4U3RheSB8fCBtYXhTdGF5O1xuICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBjaGVjayB0aGF0IHJhbmdlIGlzIHZhbGlkIGFuZCBsb25nZXIgdGhhbiBtaW5TdGF5IGFuZCBzaG9ydGVyIHRoYW4gbWF4U3RheVxuICAgICAgY29uc3QgaGFzVmFsaWREYXlzICAgID0gb3B0cy5yZW50YWxJZCA/IGlzVmFsaWQgOiB0cnVlO1xuICAgICAgY29uc3QgaGFzVmFsaWRNaW5TdGF5ID0gcmFuZ2UubGVuZ3RoID4gbWluU3RheTtcbiAgICAgIGNvbnN0IGhhc1ZhbGlkTWF4U3RheSA9IHJhbmdlLmxlbmd0aCA8IG1heFN0YXk7XG5cbiAgICAgIHRoaXMuaGFzVmFsaWRSYW5nZSA9IGhhc1ZhbGlkRGF5cyAmJiBoYXNWYWxpZE1pblN0YXkgJiYgaGFzVmFsaWRNYXhTdGF5O1xuXG4gICAgICBpZiAoIWhhc1ZhbGlkTWluU3RheSkge1xuICAgICAgICBpbnZhbGlkUmFuZ2VNZXNzYWdlID0gdEZvcm1hdHRlcihtaW5TdGF5LCB0aGlzLmxvY2FsZS5oYXNJbnZhbGlkTWluU3RheSk7XG4gICAgICB9XG5cbiAgICAgIGlmICghaGFzVmFsaWRNYXhTdGF5KSB7XG4gICAgICAgIGludmFsaWRSYW5nZU1lc3NhZ2UgPSB0Rm9ybWF0dGVyKG1heFN0YXksIHRoaXMubG9jYWxlLmhhc0ludmFsaWRNYXhTdGF5KTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFoYXNWYWxpZERheXMpIHtcbiAgICAgICAgaW52YWxpZFJhbmdlTWVzc2FnZSA9IHRoaXMubG9jYWxlLmhhc0ludmFsaWREYXlzO1xuICAgICAgfVxuXG4gICAgICByYW5nZS5tYXAoKGNlbGwsIGluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IGxlZnQgPSBpbmRleCA9PT0gMDtcbiAgICAgICAgY29uc3QgcmlnaHQgPSBpbmRleCArIDEgPT09IHJhbmdlLmxlbmd0aDtcblxuICAgICAgICBpZiAodGhpcy5oYXNWYWxpZFJhbmdlKSB7XG4gICAgICAgICAgaWYgKGxlZnQpIHtcbiAgICAgICAgICAgIGNlbGwuZGF0YXNldC5oaWdobGlnaHRlZCA9ICdsZWZ0JztcbiAgICAgICAgICB9IGVsc2UgaWYgKHJpZ2h0KSB7XG4gICAgICAgICAgICBjZWxsLmRhdGFzZXQuaGlnaGxpZ2h0ZWQgPSAncmlnaHQnO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjZWxsLmRhdGFzZXQuaGlnaGxpZ2h0ZWQgPSAnY2VudGVyJztcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKGxlZnQpIHtcbiAgICAgICAgICAgIGNlbGwuZGF0YXNldC5pbnZhbGlkID0gJ2xlZnQnO1xuICAgICAgICAgIH0gZWxzZSBpZiAocmlnaHQpIHtcbiAgICAgICAgICAgIGNlbGwuZGF0YXNldC5pbnZhbGlkID0gJ3JpZ2h0JztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2VsbC5kYXRhc2V0LmludmFsaWQgPSAnY2VudGVyJztcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0b29sdGlwUG9zaXRpb24gPSAodGhpcy5pc1JldmVyc2VTZWxlY3RhYmxlKSA/IGxlZnQgOiByaWdodDtcblxuICAgICAgICBpZiAodG9vbHRpcFBvc2l0aW9uICYmIHRoaXMuZWwuY29udGFpbnMoY2VsbCkgJiYgIXRoaXMuaGFzVmFsaWRSYW5nZSkge1xuICAgICAgICAgIHRoaXMuZG9tLnRvb2x0aXAgPSB0aGlzLmVsLmFwcGVuZENoaWxkKGVsZW1lbnRGcm9tU3RyaW5nKHRlbXBsYXRlcy50b29sdGlwKSk7XG4gICAgICAgICAgdGhpcy5kb20udG9vbHRpcC5xdWVyeVNlbGVjdG9yKCdzcGFuJykuaW5uZXJIVE1MID0gaW52YWxpZFJhbmdlTWVzc2FnZTtcblxuICAgICAgICAgIHRoaXMudG9vbHRpcFBvcHBlciA9IHdpbmRvdy5Qb3BwZXIuY3JlYXRlUG9wcGVyKGNlbGwsIHRoaXMuZG9tLnRvb2x0aXAsIHtcbiAgICAgICAgICAgIHBsYWNlbWVudDogJ3RvcCcsXG4gICAgICAgICAgICBtb2RpZmllcnM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdmbGlwJyxcbiAgICAgICAgICAgICAgICBlbmFibGVkOiBmYWxzZVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ29mZnNldCcsXG4gICAgICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICAgICAgb2Zmc2V0OiBbMCwgMF1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjZWxsO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuaGlnaGxpZ2h0ZWRCb3VuZHMgPSBbc3RhcnQsIGVuZF07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuaGFzVmFsaWRSYW5nZTtcbiAgfVxuXG4gIC8qKiBSZXNldHMgc2VsZWN0aW9uLCByZW1vdmVzIGhpZ2hsaWdodHNcbiAgICogQHB1YmxpY1xuICAgKiBAcmV0dXJucyB7Q2FsZW5kYXJ9XG4gICAqL1xuICByZXNldFNlbGVjdGlvbigpIHtcbiAgICB0aGlzLnJlbW92ZUhpZ2hsaWdodCgpO1xuICAgIHRoaXMuaXNTZWxlY3RpbmcgPSBmYWxzZTtcblxuICAgIHRoaXMuZW1pdCgnc2VsZWN0aW9uLXJlc2V0JywgdGhpcy5zZWxlY3Rpb25TdGFydCwgdGhpcy5zZWxlY3Rpb25FbmQpO1xuICAgIGlmIChpc0Z1bmN0aW9uKHRoaXMub3B0cy5vbkNsZWFyU2VsZWN0aW9uKSkge1xuICAgICAgdGhpcy5vcHRzLm9uQ2xlYXJTZWxlY3Rpb24odGhpcy5zZWxlY3Rpb25TdGFydCwgdGhpcy5zZWxlY3Rpb25FbmQpO1xuICAgIH1cblxuICAgIHRoaXMuc2VsZWN0aW9uU3RhcnQgPSBudWxsO1xuICAgIHRoaXMuc2VsZWN0aW9uRW5kICAgPSBudWxsO1xuXG4gICAgaWYgKHRoaXMuY2VsbEEpIHtcbiAgICAgIHRoaXMuY2VsbEEgPSBudWxsO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNlbGxCKSB7XG4gICAgICB0aGlzLmNlbGxCID0gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRzLmlzRHJvcERvd24gJiYgdGhpcy5vcHRzLmVsU3RhcnRBdCAmJiB0aGlzLm9wdHMuZWxFbmRBdCkge1xuICAgICAgdGhpcy5vcHRzLmVsU3RhcnRBdC52YWx1ZSA9IG51bGw7XG4gICAgICB0aGlzLm9wdHMuZWxFbmRBdC52YWx1ZSAgID0gbnVsbDtcblxuICAgICAgaWYgKHRoaXMub3B0cy5pc1NpbmdsZUlucHV0KSB7XG4gICAgICAgIHRoaXMub3B0cy5lbFNpbmdsZUlucHV0LnZhbHVlID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHNlbGVjdFJhbmdlKHN0YXJ0LCBlbmQpIHtcbiAgICBpZiAoaXNMYXRlcihzdGFydCwgZW5kKSkge1xuICAgICAgcmV0dXJuIHRoaXMuY1RyZWUuc2VsZWN0UmFuZ2Uoc3RhcnQsIGVuZCk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICByYW5nZTogbnVsbCxcbiAgICAgIGlzVmFsaWQ6IGZhbHNlXG4gICAgfTtcbiAgfVxuXG4gIHNlbGVjdFN0YXJ0KGRhdGVWYWx1ZSwgY2VsbCkge1xuICAgIHRoaXMuc2VsZWN0aW9uU3RhcnQgPSBkYXRlVmFsdWU7XG5cbiAgICBpZiAoY2VsbCkge1xuICAgICAgdGhpcy5jZWxsQSA9IGNlbGw7XG4gICAgfVxuXG4gICAgdGhpcy52YWx1ZVRvSW5wdXQoJ3N0YXJ0JywgZGF0ZVZhbHVlKTtcbiAgfVxuXG4gIHNlbGVjdEVuZChkYXRlVmFsdWUsIGNlbGwpIHtcbiAgICB0aGlzLnNlbGVjdGlvbkVuZCA9IGRhdGVWYWx1ZTtcblxuICAgIGlmIChjZWxsKSB7XG4gICAgICB0aGlzLmNlbGxCID0gY2VsbDtcbiAgICB9XG5cbiAgICB0aGlzLnZhbHVlVG9JbnB1dCgnZW5kJywgZGF0ZVZhbHVlKTtcbiAgfVxuXG4gIGNyZWF0ZVRyZWUoeWVhclN0YXJ0LCBtb250aFN0YXJ0LCB0aW1lcykge1xuICAgIGNvbnN0IG1vbnRocyA9IFtdO1xuICAgIGNvbnN0IHRyZWUgICA9IHt9O1xuICAgIGxldCBtb250aEVuZCA9IG1vbnRoU3RhcnQ7XG4gICAgbGV0IHllYXJFbmQgID0geWVhclN0YXJ0O1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aW1lczsgaSArPSAxKSB7XG4gICAgICBjb25zdCBtRG9tID0gdGhpcy5kb21Nb250aCh5ZWFyRW5kLCBtb250aEVuZCk7XG5cbiAgICAgIG1vbnRocy5wdXNoKG1Eb20pO1xuXG4gICAgICBpZiAoIXRyZWVbeWVhckVuZF0pIHtcbiAgICAgICAgdHJlZVt5ZWFyRW5kXSA9IHt9O1xuICAgICAgfVxuXG4gICAgICBpZiAoIXRyZWVbeWVhckVuZF1bbW9udGhFbmRdKSB7XG4gICAgICAgIHRyZWVbeWVhckVuZF1bbW9udGhFbmRdID0gbURvbS5kYXlFbGVtZW50cyB8fCBbXTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1vbnRoRW5kID4gMTApIHtcbiAgICAgICAgbW9udGhFbmQgPSAwO1xuICAgICAgICB5ZWFyRW5kICs9IDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtb250aEVuZCArPSAxO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB0cmVlLFxuICAgICAgeWVhckVuZCxcbiAgICAgIG1vbnRoRW5kLFxuICAgICAgbW9udGhzXG4gICAgfTtcbiAgfVxuXG4gIGRvbU1vbnRoKHllYXIsIG1vbnRoKSB7XG4gICAgY29uc3QgbW9udGhEb20gPSBlbGVtZW50RnJvbVN0cmluZyh0ZW1wbGF0ZXMubW9udGgpO1xuXG4gICAgbW9udGhEb20ucXVlcnlTZWxlY3RvcihgLiR7c3R5bGVzLnRhYmxlSGVhZGVyfSB0cmApLmlubmVySFRNTCA9IHRoaXMuaGVhZGVyVGVtcGxhdGVTdHJpbmcoKTtcbiAgICBtb250aERvbS5xdWVyeVNlbGVjdG9yKGAuJHtzdHlsZXMuY2FwdGlvbn1gKS5pbm5lckhUTUwgICAgICAgID0gYCR7dGhpcy5sb2NhbGUubG9uZ01vbnRoTmFtZXNbbW9udGhdfSAke3llYXJ9YDtcblxuICAgIG1vbnRoRG9tLmJvZHkgICAgICAgICAgID0gbW9udGhEb20ucXVlcnlTZWxlY3RvcihgLiR7c3R5bGVzLmJvZHl9YCk7XG4gICAgbW9udGhEb20uYm9keS5pbm5lckhUTUwgPSB0aGlzLmRheXNUZW1wbGF0ZVN0cmluZyh5ZWFyLCBtb250aCk7XG5cbiAgICBtb250aERvbS5tb250aCAgICAgICA9IG1vbnRoO1xuICAgIG1vbnRoRG9tLnllYXIgICAgICAgID0geWVhcjtcbiAgICBtb250aERvbS5kYXlFbGVtZW50cyA9IFtdLnNsaWNlLmNhbGwobW9udGhEb20ucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtdmFsdWVdJykpO1xuXG4gICAgcmV0dXJuIG1vbnRoRG9tO1xuICB9XG5cbiAgaGVhZGVyVGVtcGxhdGVTdHJpbmcoKSB7XG4gICAgLy8ganVzdCB0byBtYWtlIGxpZmUgZWFzaWVyIHdpdGggc3RhcnQgb2YgdGhlIHdlZWsgY2FsY3VsYXRpb25cbiAgICBjb25zdCBoZWFkZXIgICAgICAgICAgICAgICAgID0gW107XG4gICAgY29uc3Qgd2Vla2RheXNMYWJlbHNFeHRlbmRlZCA9IHRoaXMubG9jYWxlLnNob3J0V2Vla2RheU5hbWVzLmNvbmNhdCh0aGlzLmxvY2FsZS5zaG9ydFdlZWtkYXlOYW1lcyk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMub3B0cy5kYXlzUGVyV2VlazsgaSArPSAxKSB7XG4gICAgICBoZWFkZXIucHVzaCh0ZW1wbGF0ZXMud2Vla0RheUxhYmVsKHdlZWtkYXlzTGFiZWxzRXh0ZW5kZWRbaSArIHRoaXMub3B0cy5zdGFydE9mV2Vla10pKTtcbiAgICB9XG4gICAgcmV0dXJuIGhlYWRlci5qb2luKCcnKTtcbiAgfVxuXG4gIGRheXNUZW1wbGF0ZVN0cmluZyh5ZWFyLCBtb250aCkge1xuICAgIGNvbnN0IHN0YXJ0T2ZNb250aCAgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgMSkuZ2V0RGF5KCk7XG4gICAgY29uc3QgZGF5c0luTW9udGggICA9IG1vbnRoTGVuZ3RoKHllYXIsIG1vbnRoKTtcbiAgICBjb25zdCByb3dUZW1wbGF0ZSAgID0gdGVtcGxhdGVzLndlZWtSb3c7XG4gICAgY29uc3QgbW9udGhUZW1wbGF0ZSA9IFtdO1xuICAgIGNvbnN0IHdlZWtTaGlmdCAgICAgPSAodGhpcy5vcHRzLmRheXNQZXJXZWVrIC0gdGhpcy5vcHRzLnN0YXJ0T2ZXZWVrKTtcblxuICAgIGxldCByb3dzICAgICAgICAgICAgICAgPSA1O1xuICAgIGxldCB3ZWVrU2hpZnRDb3JyZWN0ZWQgPSBzdGFydE9mTW9udGggKyB3ZWVrU2hpZnQ7XG4gICAgbGV0IGRheUNvdW50ZXIgICAgICAgICA9IDA7XG4gICAgbGV0IGRheU9mTW9udGggICAgICAgICA9IDE7XG5cbiAgICAvLyBkb24ndCByZW5kZXIgZnVsbCBlbXB0eSB3ZWVrXG4gICAgaWYgKHdlZWtTaGlmdENvcnJlY3RlZCA+PSB0aGlzLm9wdHMuZGF5c1BlcldlZWspIHtcbiAgICAgIHdlZWtTaGlmdENvcnJlY3RlZCAtPSB0aGlzLm9wdHMuZGF5c1BlcldlZWs7XG4gICAgfVxuXG4gICAgLy8gdHJ5IHRvIGZpZ3VyZSBvdXQgaWYgNSByb3dzIGlzIGVub3VnaCBmb3IgdGhlIG1vbnRoXG4gICAgaWYgKHJvd3MgKiB0aGlzLm9wdHMuZGF5c1BlcldlZWsgPCB3ZWVrU2hpZnRDb3JyZWN0ZWQgKyBkYXlzSW5Nb250aCkge1xuICAgICAgcm93cyA9IDY7XG4gICAgfVxuXG4gICAgLy8gZm9yIGVhY2ggd2VlayAoNSBvciA2KVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcm93czsgaSArPSAxKSB7XG4gICAgICBjb25zdCB3ZWVrID0gW107XG4gICAgICAvLyBvcGVuIHRhZyA8dHI+XG4gICAgICB3ZWVrLnB1c2gocm93VGVtcGxhdGUoaSkub3Blbik7XG5cbiAgICAgIC8vIHB1c2ggZGF5cyBpbiB3ZWVrXG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMub3B0cy5kYXlzUGVyV2VlazsgaiArPSAxKSB7XG4gICAgICAgIC8vIHB1c2hpbmcgYWN0dWFsIGRheXMgMS4uLmRheXNJbk1vbnRoXG4gICAgICAgIGlmICgoZGF5Q291bnRlciA+PSB3ZWVrU2hpZnRDb3JyZWN0ZWQpICYmIGRheU9mTW9udGggPD0gZGF5c0luTW9udGgpIHtcbiAgICAgICAgICB3ZWVrLnB1c2godGhpcy5kYXlUZW1wbGF0ZVN0cmluZyh5ZWFyLCBtb250aCwgZGF5T2ZNb250aCkpO1xuICAgICAgICAgIGRheU9mTW9udGggKz0gMTtcbiAgICAgICAgICAvLyBwdXNoaW5nIHBsYWNlaG9sZGVycyBpbnN0ZWFkIG9mIGRheXNcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB3ZWVrLnB1c2godGVtcGxhdGVzLndlZWtEYXlQbGFjZWhvbGRlcik7XG4gICAgICAgIH1cblxuICAgICAgICBkYXlDb3VudGVyICs9IDE7XG4gICAgICB9XG4gICAgICAvLyBjbG9zZSB0YWcgPC90cj4gb2Ygd2Vla1xuICAgICAgd2Vlay5wdXNoKHJvd1RlbXBsYXRlKCkuY2xvc2UpO1xuICAgICAgLy8gcHVzaCBjb21wbGV0ZWQgd2VlayB0byBtb250aCB0ZW1wbGF0ZVxuICAgICAgbW9udGhUZW1wbGF0ZS5wdXNoKHdlZWsuam9pbignJykpO1xuICAgIH1cblxuICAgIHJldHVybiBtb250aFRlbXBsYXRlLmpvaW4oJycpO1xuICB9XG5cbiAgZGF5VGVtcGxhdGVTdHJpbmcoeWVhciwgbW9udGgsIGRheU9mTW9udGgpIHtcbiAgICBjb25zdCB7IGNUcmVlIH0gICAgICA9IHRoaXM7XG4gICAgY29uc3QgcmF0ZSAgICAgICAgICAgPSB0aGlzLm9wdHMuc2hvd1JhdGVzID8gY1RyZWUuZ2V0RGF5UHJvcGVydHkoeWVhciwgbW9udGgsIGRheU9mTW9udGgsICdyYXRlJykgOiAwO1xuICAgIGNvbnN0IG1pblN0YXkgICAgICAgID0gY1RyZWUuZ2V0RGF5UHJvcGVydHkoeWVhciwgbW9udGgsIGRheU9mTW9udGgsICdtaW5TdGF5Jyk7XG4gICAgY29uc3QgbWF4U3RheSAgICAgICAgPSBjVHJlZS5nZXREYXlQcm9wZXJ0eSh5ZWFyLCBtb250aCwgZGF5T2ZNb250aCwgJ21heFN0YXknKTtcblxuICAgIGxldCBpc0Rpc2FibGVkICAgICAgID0gY1RyZWUuaXNEYXlEaXNhYmxlZCh5ZWFyLCBtb250aCwgZGF5T2ZNb250aCk7XG4gICAgbGV0IGlzQXZhaWxhYmxlT3V0ICAgPSBjVHJlZS5nZXREYXlQcm9wZXJ0eSh5ZWFyLCBtb250aCwgZGF5T2ZNb250aCwgJ2lzQXZhaWxhYmxlT3V0Jyk7XG4gICAgbGV0IGlzTW9ybmluZ0Jsb2NrZWQgPSBjVHJlZS5nZXREYXlQcm9wZXJ0eSh5ZWFyLCBtb250aCwgZGF5T2ZNb250aCwgJ2lzTW9ybmluZ0Jsb2NrZWQnKTtcblxuICAgIGNvbnN0IHsgY3VycmVudERhdGUgfSA9IHRoaXMub3B0cztcbiAgICBjb25zdCBkYXRlQXJyYXkgICAgICAgPSBbeWVhciwgbW9udGgsIGRheU9mTW9udGhdO1xuICAgIGNvbnN0IGlzQ3VycmVudERheSAgICA9IGlzQ3VycmVudChkYXRlQXJyYXksIGN1cnJlbnREYXRlKTtcblxuICAgIC8vIGRpc2FibGUgcGFzdCBkYXRlc1xuICAgIGlmIChpc0xhdGVyKGRhdGVBcnJheSwgY3VycmVudERhdGUpKSB7XG4gICAgICBpc0Rpc2FibGVkICAgICAgICA9IHRydWU7XG4gICAgICBpc01vcm5pbmdCbG9ja2VkICA9IG51bGw7XG4gICAgICBpc0F2YWlsYWJsZU91dCAgICA9IG51bGw7XG4gICAgfVxuXG4gICAgLy8gZGlzYWJsZSBjdXJyZW50IGRheSBtb3JuaW5nXG4gICAgaWYgKGlzQ3VycmVudERheSkge1xuICAgICAgaWYgKCEoaXNEaXNhYmxlZCAmJiBpc0F2YWlsYWJsZU91dCA9PT0gbnVsbCAmJiBpc01vcm5pbmdCbG9ja2VkID09PSBudWxsKSkge1xuICAgICAgICBpc01vcm5pbmdCbG9ja2VkICA9IHRydWU7XG5cbiAgICAgICAgaWYgKGlzQXZhaWxhYmxlT3V0ID09PSBudWxsKSB7XG4gICAgICAgICAgaXNBdmFpbGFibGVPdXQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gaWYgdGhlcmUgaXMgbm90IHJlbnRhbElkIGFuZCBubyBtYXBzLCBqdXN0IHJlbmRlciBwbGFpbiBjYWxlbmRhclxuICAgIGlmICghdGhpcy5vcHRzLnJlbnRhbElkIHx8IHRoaXMub3B0cy5lbmFibGVBbGxEYXlzKSB7XG4gICAgICBpZiAoaXNMYXRlcihjdXJyZW50RGF0ZSwgZGF0ZUFycmF5KSkge1xuICAgICAgICBpc0Rpc2FibGVkICAgICAgICA9IGZhbHNlO1xuICAgICAgICBpc0F2YWlsYWJsZU91dCAgICA9IHRydWU7XG4gICAgICAgIGlzTW9ybmluZ0Jsb2NrZWQgID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGlmIChpc0N1cnJlbnREYXkpIHtcbiAgICAgICAgaXNEaXNhYmxlZCAgICAgICAgPSB0cnVlO1xuICAgICAgICBpc01vcm5pbmdCbG9ja2VkICA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgaXNBdmFpbGFibGVJbiA9IGlzTW9ybmluZ0Jsb2NrZWQgPT0gZmFsc2U7XG5cbiAgICBpZiAoaXNEaXNhYmxlZCAmJiBpc0F2YWlsYWJsZUluKSB7XG4gICAgICBpc0Rpc2FibGVkID0gJ2xlZnQnO1xuICAgIH0gZWxzZSBpZiAoaXNNb3JuaW5nQmxvY2tlZCkge1xuICAgICAgaXNEaXNhYmxlZCA9ICdyaWdodCc7XG4gICAgfSBlbHNlIGlmIChpc0Rpc2FibGVkKSB7XG4gICAgICBpc0Rpc2FibGVkID0gJ2NlbnRlcic7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRlbXBsYXRlcy53ZWVrRGF5KFxuICAgICAgZGF5T2ZNb250aCxcbiAgICAgIGlzRGlzYWJsZWQsXG4gICAgICBpc0F2YWlsYWJsZUluLFxuICAgICAgaXNBdmFpbGFibGVPdXQsXG4gICAgICBpc0N1cnJlbnREYXksXG4gICAgICBtaW5TdGF5LFxuICAgICAgdGhpcy5vcHRzLnNob3dNaW5TdGF5ID8gdEZvcm1hdHRlcihtaW5TdGF5LCB0aGlzLmxvY2FsZS5taW5TdGF5KSA6IGZhbHNlLFxuICAgICAgbWF4U3RheSxcbiAgICAgIHRoaXMub3B0cy5zaG93TWF4U3RheSA/IHRGb3JtYXR0ZXIobWF4U3RheSwgdGhpcy5sb2NhbGUubWF4U3RheSkgOiBmYWxzZSxcbiAgICAgIHJhdGUsXG4gICAgICBjdXJyZW5jeUZvcm1hdHRlcihNYXRoLnJvdW5kKHJhdGUpLCB0aGlzLm9wdHMubGFuZywgdGhpcy5vcHRzLmN1cnJlbmN5IHx8IHRoaXMubG9jYWxlLmN1cnJlbmN5KVxuICAgICk7XG4gIH1cblxuICBkZXN0cm95TW9udGhzKCkge1xuICAgIGlmICh0aGlzLmRvbSAmJiBpc0FycmF5KHRoaXMuZG9tLm1vbnRocykpIHtcbiAgICAgIHRoaXMuZG9tLm1vbnRocy5tYXAoKG0pID0+IGRlc3Ryb3lFbGVtZW50KG0pKTtcbiAgICAgIHRoaXMuZGVzdHJveVRvb2x0aXAoKTtcbiAgICB9XG4gIH1cblxuICBkZXN0cm95KCkge1xuICAgIHJldHVybiBkZXN0cm95RWxlbWVudCh0aGlzLmVsKTtcbiAgfVxuXG4gIGxvYWRNYXBzKGlkKSB7XG4gICAgdGhpcy5sb2dnZXIoJ2xvYWRpbmcgbWFwcycpO1xuICAgIHRoaXMudG9nZ2xlTG9hZGluZygpO1xuXG4gICAgY29uc3Qgb25TdWNjZXNzID0gKG1hcHMpID0+IHtcbiAgICAgIGlmIChpc0FycmF5KG1hcHMuZGF0YSkgJiYgbWFwcy5kYXRhWzBdLmF0dHJpYnV0ZXMpIHtcbiAgICAgICAgaWYgKHRoaXMub3B0cy5kaXNhYmxlQXZhaWxhYml0eU1hcCkge1xuICAgICAgICAgIG1hcHMuZGF0YVswXS5hdHRyaWJ1dGVzLmF2YWlsYWJpbGl0eSA9IG1hcHMuZGF0YVswXS5hdHRyaWJ1dGVzLmF2YWlsYWJpbGl0eS5yZXBsYWNlKC9bMC05XS9nLCAnMCcpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub3B0cy5jdXJyZW5jeSA9IHRoaXMub3B0cy5jdXJyZW5jeSB8fCBtYXBzLmRhdGFbMF0uYXR0cmlidXRlcy5jdXJyZW5jeTtcbiAgICAgICAgdGhpcy5hZGRNYXBzKG1hcHMuZGF0YVswXS5hdHRyaWJ1dGVzKTtcbiAgICAgICAgdGhpcy5tYXBzTG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy50b2dnbGVMb2FkaW5nKCk7XG4gICAgICAgIHRoaXMuZW1pdCgnbWFwcy1sb2FkZWQnLCBtYXBzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudG9nZ2xlTG9hZGluZygpO1xuICAgICAgICB0aGlzLmxvZ2dlcignZXhwZWN0cyBqc29uLWFwaSBkYXRhIGZvcm1hdCcsICdlcnJvcicpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBvbkVycm9yID0gKCkgPT4ge1xuICAgICAgdGhpcy50b2dnbGVMb2FkaW5nKCk7XG4gICAgICB0aGlzLmVtaXQoJ21hcHMtZXJyb3InKTtcbiAgICAgIHRoaXMubG9nZ2VyKCdTZXJ2ZXIgZXJyb3IgaGFwcGVuZWQnLCAnZXJyb3InKTtcbiAgICB9O1xuXG4gICAgZmV0Y2godGhpcy5vcHRzLnJlbnRhbFVybChpZCkpXG4gICAgICAudGhlbigocmVzcG9uc2UpID0+IHJlc3BvbnNlLmpzb24oKSlcbiAgICAgIC50aGVuKG9uU3VjY2VzcylcbiAgICAgIC5jYXRjaChvbkVycm9yKTtcbiAgfVxuXG4gIGNvbXBsZXRlU2VsZWN0aW9uKCkge1xuICAgIGlmICh0aGlzLm9wdHMuaXNTaW5nbGVJbnB1dCkge1xuICAgICAgY29uc3Qgc2luZ2xlSW5wdXREYXRlRm9ybWF0ID0gdGhpcy5zaW5nbGVJbnB1dERhdGVGb3JtYXQgfHwgdGhpcy5sb2NhbGUuZm9ybWF0RGF0ZTtcblxuICAgICAgY29uc3QgZGF0ZVN0YXJ0ID0gc3RyZnRpbWUoZGF0ZVRvSXNvKC4uLnRoaXMuc2VsZWN0aW9uU3RhcnQpLCBzaW5nbGVJbnB1dERhdGVGb3JtYXQsIHRoaXMubG9jYWxlKTtcbiAgICAgIGNvbnN0IGRhdGVFbmQgICA9IHN0cmZ0aW1lKGRhdGVUb0lzbyguLi50aGlzLnNlbGVjdGlvbkVuZCksIHNpbmdsZUlucHV0RGF0ZUZvcm1hdCwgdGhpcy5sb2NhbGUpO1xuXG4gICAgICB0aGlzLm9wdHMuZWxTaW5nbGVJbnB1dC52YWx1ZSA9IGAke2RhdGVTdGFydH0gJHt0aGlzLm9wdHMuc2luZ2xlSW5wdXRTZXBhcmF0b3J9ICR7ZGF0ZUVuZH1gO1xuICAgIH1cblxuICAgIHRoaXMuZW1pdCgnc2VsZWN0aW9uLWNvbXBsZXRlZCcsIHRoaXMuc2VsZWN0aW9uU3RhcnQsIHRoaXMuc2VsZWN0aW9uRW5kKTtcbiAgICBpZiAoaXNGdW5jdGlvbih0aGlzLm9wdHMub25TZWxlY3Rpb25Db21wbGV0ZWQpKSB7XG4gICAgICB0aGlzLm9wdHMub25TZWxlY3Rpb25Db21wbGV0ZWQoXG4gICAgICAgIGRhdGVUb0lzbyguLi50aGlzLnNlbGVjdGlvblN0YXJ0LCB0cnVlKSwgZGF0ZVRvSXNvKC4uLnRoaXMuc2VsZWN0aW9uRW5kLCB0cnVlKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBpbml0Q2FsZW5kYXJEcm9wKCkge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBlbGVtZW50RnJvbVN0cmluZygnPGRpdj48L2Rpdj4nKTtcbiAgICB0aGlzLmVsVGFyZ2V0ID0gdGhpcy5vcHRzLmVsO1xuICAgIHRoaXMuZWwgICAgICAgPSBlbGVtZW50O1xuXG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbGVtZW50KTtcblxuICAgIHRoaXMub3B0cy5lbFN0YXJ0QXQgICAgID0gdGhpcy5vcHRzLmVsU3RhcnRBdCB8fCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAuJHt0aGlzLkNTU19QUkVGSVh9X19zdGFydC1hdGApO1xuICAgIHRoaXMub3B0cy5lbEVuZEF0ICAgICAgID0gdGhpcy5vcHRzLmVsRW5kQXQgfHwgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgLiR7dGhpcy5DU1NfUFJFRklYfV9fZW5kLWF0YCk7XG4gICAgdGhpcy5vcHRzLmVsU2luZ2xlSW5wdXQgPSB0aGlzLm9wdHMuZWxTaW5nbGVJbnB1dCB8fCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAuJHt0aGlzLkNTU19QUkVGSVh9X19zaW5nbGUtaW5wdXRgKTtcblxuICAgIGlmICh0aGlzLm9wdHMuaGlkZGVuRWxGb3JtYXQpIHtcbiAgICAgIFt0aGlzLm9wdHMuZWxTdGFydEF0LCB0aGlzLm9wdHMuZWxFbmRBdF0uZm9yRWFjaCgoaW5wdXQsIGkpID0+IHtcbiAgICAgICAgY29uc3QgaGlkZGVuSW5wdXQgPSBpbnB1dC5jbG9uZU5vZGUodHJ1ZSk7XG4gICAgICAgIGlucHV0LnBhcmVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoaGlkZGVuSW5wdXQpO1xuICAgICAgICBpbnB1dC5yZW1vdmVBdHRyaWJ1dGUoJ25hbWUnKTtcbiAgICAgICAgaGlkZGVuSW5wdXQuY2xhc3NOYW1lID0gJyc7XG4gICAgICAgIGhpZGRlbklucHV0LmhpZGRlbiAgICA9IHRydWU7XG5cbiAgICAgICAgKGkpID8gdGhpcy5oaWRkZW5FbEVuZEF0ID0gaGlkZGVuSW5wdXQgOiB0aGlzLmhpZGRlbkVsU3RhcnRBdCA9IGhpZGRlbklucHV0O1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3B0cy5pc1NpbmdsZUlucHV0KSB7XG4gICAgICB0aGlzLm9wdHMuZWxTaW5nbGVJbnB1dC5yZWFkT25seSA9IHRydWU7XG5cbiAgICAgIFt0aGlzLm9wdHMuZWxTdGFydEF0LCB0aGlzLm9wdHMuZWxFbmRBdF0uZm9yRWFjaCgoaW5wdXQpID0+IHtcbiAgICAgICAgaW5wdXQuaGlkZGVuID0gdHJ1ZTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGFkZENsYXNzKHRoaXMuZWwsIHN0eWxlcy5kcm9wQmFzaWMpO1xuXG4gICAgY29uc3QgY2FsRHJvcCA9IHdpbmRvdy5Qb3BwZXIuY3JlYXRlUG9wcGVyKHRoaXMuZWxUYXJnZXQsIHRoaXMuZWwsIHtcbiAgICAgIHBsYWNlbWVudDogdGhpcy5vcHRzLmRyb3BQbGFjZW1lbnQsXG4gICAgICBoaWRlOiB0cnVlXG4gICAgfSk7XG5cbiAgICBjb25zdCBvcGVuRHJvcCA9IChpbnB1dCwgaXNSZXZlcnNlZCkgPT4ge1xuICAgICAgdGhpcy5zd2l0Y2hJbnB1dEZvY3VzKGlucHV0KTtcbiAgICAgIHRoaXMuY2hhbmdlU2VsZWN0aW9uT3JkZXIoaXNSZXZlcnNlZCk7XG5cbiAgICAgIGlmICghaGFzQ2xhc3ModGhpcy5lbCwgc3R5bGVzLnZpc2libGUpKSB7XG4gICAgICAgIGNhbERyb3AudXBkYXRlKCk7XG4gICAgICAgIHRoaXMuZW1pdCgnZHJvcC1vcGVuJyk7XG4gICAgICAgIGFkZENsYXNzKHRoaXMuZWwsIHN0eWxlcy52aXNpYmxlKTtcblxuICAgICAgICBpZiAoIXRoaXMubWFwc0xvYWRlZCAmJiB0aGlzLm9wdHMucmVudGFsSWQpIHtcbiAgICAgICAgICB0aGlzLmxvYWRNYXBzKHRoaXMub3B0cy5yZW50YWxJZCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgaWYgKHRoaXMub3B0cy5pc1NpbmdsZUlucHV0KSB7XG4gICAgICB0aGlzLmZvY3VzVG91Y2hFdmVudHModGhpcy5vcHRzLmVsU2luZ2xlSW5wdXQsICgpID0+IHtcbiAgICAgICAgb3BlbkRyb3AoJ3N0YXJ0JywgZmFsc2UpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZm9jdXNUb3VjaEV2ZW50cyh0aGlzLm9wdHMuZWxTdGFydEF0LCAoKSA9PiB7XG4gICAgICAgIG9wZW5Ecm9wKCdzdGFydCcsIGZhbHNlKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5mb2N1c1RvdWNoRXZlbnRzKHRoaXMub3B0cy5lbEVuZEF0LCAoKSA9PiB7XG4gICAgICAgIG9wZW5Ecm9wKCdlbmQnLCB0cnVlKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5jbG9zZURyb3AuYmluZCh0aGlzKSk7XG4gICAgdGhpcy5jYWxEcm9wID0gY2FsRHJvcDtcblxuICAgIGlmICh0aGlzLm9wdHMuZWxSZXNldCkge1xuICAgICAgdGhpcy5vcHRzLmVsUmVzZXQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XG4gICAgICAgIHRoaXMucmVzZXRTZWxlY3Rpb24oKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHZhbHVlVG9JbnB1dChpbnB1dCwgZGF0ZVZhbHVlKSB7XG4gICAgY29uc3QgeyBlbFN0YXJ0QXQgfSA9IHRoaXMub3B0cztcbiAgICBjb25zdCB7IGVsRW5kQXQgfSAgID0gdGhpcy5vcHRzO1xuXG4gICAgY29uc3QgZGF0ZSAgPSBkYXRlVG9Jc28oLi4uZGF0ZVZhbHVlKTtcbiAgICBjb25zdCB2YWx1ZSA9IHN0cmZ0aW1lKGRhdGUsIHRoaXMuZm9ybWF0LCB0aGlzLmxvY2FsZSk7XG4gICAgY29uc3QgZXZ0ICAgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnRXZlbnQnKTtcblxuICAgIGV2dC5pbml0RXZlbnQoJ2NoYW5nZScsIGZhbHNlLCB0cnVlKTtcblxuICAgIGlmICh0aGlzLm9wdHMuaGlkZGVuRWxGb3JtYXQpIHtcbiAgICAgIGNvbnN0IGhpZGRlblZhbHVlID0gc3RyZnRpbWUoZGF0ZSwgdGhpcy5vcHRzLmhpZGRlbkVsRm9ybWF0LCB0aGlzLmxvY2FsZSk7XG5cbiAgICAgIGlmIChpbnB1dCA9PT0gJ3N0YXJ0JyAmJiB0aGlzLmhpZGRlbkVsU3RhcnRBdCkge1xuICAgICAgICB0aGlzLmhpZGRlbkVsU3RhcnRBdC52YWx1ZSA9IGhpZGRlblZhbHVlO1xuICAgICAgfSBlbHNlIGlmIChpbnB1dCA9PT0gJ2VuZCcgJiYgdGhpcy5oaWRkZW5FbEVuZEF0KSB7XG4gICAgICAgIHRoaXMuaGlkZGVuRWxFbmRBdC52YWx1ZSA9IGhpZGRlblZhbHVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChpbnB1dCA9PT0gJ3N0YXJ0JyAmJiBlbFN0YXJ0QXQpIHtcbiAgICAgIGVsU3RhcnRBdC52YWx1ZSA9IHZhbHVlO1xuICAgICAgZWxTdGFydEF0LmRpc3BhdGNoRXZlbnQoZXZ0KTtcbiAgICB9IGVsc2UgaWYgKGlucHV0ID09PSAnZW5kJyAmJiBlbEVuZEF0KSB7XG4gICAgICBlbEVuZEF0LnZhbHVlID0gdmFsdWU7XG4gICAgICBlbEVuZEF0LmRpc3BhdGNoRXZlbnQoZXZ0KTtcbiAgICB9XG4gIH1cblxuICBpbnB1dHNUb1ZhbHVlcygpIHtcbiAgICBpZiAodGhpcy5vcHRzLmVsU3RhcnRBdC52YWx1ZSA9PT0gJycgJiYgdGhpcy5vcHRzLmVsRW5kQXQudmFsdWUgPT09ICcnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc2VsZWN0aW9uU3RhcnQgID0gZGF0ZVRvQXJyYXkodGhpcy5vcHRzLmVsU3RhcnRBdC52YWx1ZSwgdGhpcy5mb3JtYXQsIHRoaXMubG9jYWxlKTtcbiAgICBjb25zdCBzZWxlY3Rpb25FbmQgICAgPSBkYXRlVG9BcnJheSh0aGlzLm9wdHMuZWxFbmRBdC52YWx1ZSwgdGhpcy5mb3JtYXQsIHRoaXMubG9jYWxlKTtcbiAgICBjb25zdCB7IGN1cnJlbnREYXRlIH0gPSB0aGlzLm9wdHM7XG5cbiAgICB0aGlzLnJlc2V0U2VsZWN0aW9uKCk7XG5cbiAgICBpZiAoaXNBcnJheShzZWxlY3Rpb25TdGFydCkgJiYgaXNBcnJheShzZWxlY3Rpb25FbmQpKSB7XG4gICAgICBpZiAoKGlzTGF0ZXIoY3VycmVudERhdGUsIHNlbGVjdGlvblN0YXJ0KSB8fCBpc0N1cnJlbnQoY3VycmVudERhdGUsIHNlbGVjdGlvblN0YXJ0KSkgJiYgaXNMYXRlcihzZWxlY3Rpb25TdGFydCwgc2VsZWN0aW9uRW5kKSkge1xuICAgICAgICBjb25zdCBtb250aERpZmZlcmVuY2UgPSBtb250aERpZmYoXG4gICAgICAgICAgZGF0ZVRvSXNvKHRoaXMub3B0cy55ZWFyU3RhcnQsIHRoaXMub3B0cy5tb250aFN0YXJ0LCAxKSxcbiAgICAgICAgICBkYXRlVG9Jc28oLi4uc2VsZWN0aW9uRW5kKVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IHsgdHJlZSB9ID0gdGhpcy5jcmVhdGVUcmVlKHRoaXMub3B0cy55ZWFyU3RhcnQsIHRoaXMub3B0cy5tb250aFN0YXJ0LCBtb250aERpZmZlcmVuY2UpO1xuXG4gICAgICAgIHRoaXMuY1RyZWUuYWRkVHJlZSh0cmVlKTtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25TdGFydCA9IHNlbGVjdGlvblN0YXJ0O1xuICAgICAgICB0aGlzLnNlbGVjdGlvbkVuZCA9IHNlbGVjdGlvbkVuZDtcbiAgICAgICAgdGhpcy5yZWNvdmVyU2VsZWN0aW9ucygpO1xuICAgICAgICB0aGlzLmNvbXBsZXRlU2VsZWN0aW9uKCk7XG4gICAgICAgIHRoaXMuZGVzdHJveU1vbnRocygpO1xuICAgICAgICB0aGlzLnJlbmRlck1vbnRocyhzZWxlY3Rpb25FbmRbMF0sIHNlbGVjdGlvbkVuZFsxXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmxvZ2dlcihgaW52YWxpZCByYW5nZTogXCJbJHtzZWxlY3Rpb25TdGFydH1dXCIgXCJbJHtzZWxlY3Rpb25FbmR9XVwiYCwgJ3dhcm4nKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoc2VsZWN0aW9uU3RhcnQgJiYgc2VsZWN0aW9uRW5kKSB7XG4gICAgICB0aGlzLmxvZ2dlcihgaW52YWxpZCBkYXRlczogXCIke3NlbGVjdGlvblN0YXJ0fVwiIFwiJHtzZWxlY3Rpb25FbmR9XCJgLCAnd2FybicpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHN3aXRjaElucHV0Rm9jdXModHlwZSkge1xuICAgIGlmICh0aGlzLm9wdHMuZWxTdGFydEF0ICYmIHRoaXMub3B0cy5lbEVuZEF0KSB7XG4gICAgICBpZiAodHlwZSA9PT0gJ3N0YXJ0Jykge1xuICAgICAgICBhZGRDbGFzcyh0aGlzLm9wdHMuZWxTdGFydEF0LCBzdHlsZXMuZm9jdXMpO1xuICAgICAgICByZW1vdmVDbGFzcyh0aGlzLm9wdHMuZWxFbmRBdCwgc3R5bGVzLmZvY3VzKTtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlID09PSAnZW5kJykge1xuICAgICAgICBhZGRDbGFzcyh0aGlzLm9wdHMuZWxFbmRBdCwgc3R5bGVzLmZvY3VzKTtcbiAgICAgICAgcmVtb3ZlQ2xhc3ModGhpcy5vcHRzLmVsU3RhcnRBdCwgc3R5bGVzLmZvY3VzKTtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlID09PSAnYW55Jykge1xuICAgICAgICByZW1vdmVDbGFzcyh0aGlzLm9wdHMuZWxTdGFydEF0LCBzdHlsZXMuZm9jdXMpO1xuICAgICAgICByZW1vdmVDbGFzcyh0aGlzLm9wdHMuZWxFbmRBdCwgc3R5bGVzLmZvY3VzKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjbG9zZURyb3AoZSwgZm9yY2UpIHtcbiAgICBpZiAoIWZvcmNlICYmIChpc0luc2lkZShlLnRhcmdldCwgdGhpcy5lbCkgfHwgaXNJbnNpZGUoZS50YXJnZXQsIHRoaXMuZWxUYXJnZXQpKSkge1xuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVtb3ZlQ2xhc3ModGhpcy5lbCwgc3R5bGVzLnZpc2libGUpO1xuICAgICAgdGhpcy5kZXN0cm95VG9vbHRpcCgpO1xuICAgICAgdGhpcy5lbWl0KCdkcm9wLWNsb3NlJyk7XG4gICAgICB0aGlzLnN3aXRjaElucHV0Rm9jdXMoJ2FueScpO1xuICAgIH1cbiAgfVxuXG4gIGZvY3VzVG91Y2hFdmVudHMoZWxlbWVudCwgX2NhbGxiYWNrKSB7XG4gICAgaWYgKGlzRnVuY3Rpb24oX2NhbGxiYWNrKSkge1xuICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgKGV2ZW50KSA9PiB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIF9jYWxsYmFjaygpO1xuICAgICAgfSk7XG5cbiAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXMnLCAoZXZlbnQpID0+IHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgX2NhbGxiYWNrKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gYFske3RoaXMubmFtZX0gJHt0aGlzLlZFUlNJT059XSBgO1xuICB9XG5cbiAgbG9nZ2VyKG1zZywgdHlwZSA9ICdsb2cnKSB7XG4gICAgaWYgKGNvbnNvbGUgJiYgY29uc29sZVt0eXBlXSkge1xuICAgICAgY29uc29sZVt0eXBlXSh0aGlzLnRvU3RyaW5nKCkgKyBtc2cpO1xuICAgIH1cbiAgfVxufVxuIiwiLyogZ2xvYmFsIHByb2Nlc3MsIHJlcXVpcmUgKi9cbmltcG9ydCB7IGRhc2hUb0NhcGl0YWwgfSBmcm9tICd3aWRnZXQtdXRpbHMnO1xuXG5jb25zdCB7IG5hbWUgfSA9IHJlcXVpcmUoJy4uL3BhY2thZ2UuanNvbicpO1xuY29uc3QgY3VycmVudERhdGUgPSBuZXcgRGF0ZSgpO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWUsXG4gIGNzc1ByZWZpeDogZGFzaFRvQ2FwaXRhbChuYW1lKSxcbiAgYXBpSG9zdDogcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdkZXZlbG9wbWVudCcgPyAnaHR0cDovL2xvY2FsaG9zdDozMDAwJyA6ICdodHRwczovL3NlY3VyZS5zbWlseS5jb20nLFxuICBhcGlOYW1lc3BhY2U6ICcvYXBpL3YyL3B1YmxpYycsXG4gIGFwaU1hcHNSb3V0ZTogJy9tYXBzLmpzb24/e2FwaVJlbnRhbElkfXthcGlDdXJyZW5jeX0nLFxuICBhcGlSZW50YWxJZDogJ3JlbnRhbF9pZD0nLFxuICBhcGlDdXJyZW5jeTogJyZleGNoYW5nZV90b19jdXJyZW5jeT0nLFxuXG4gIHJlbnRhbFVybChpZHMpIHtcbiAgICBsZXQgcm91dGUgPSB0aGlzLmFwaU1hcHNSb3V0ZS5yZXBsYWNlKCd7YXBpUmVudGFsSWR9JywgYCR7dGhpcy5hcGlSZW50YWxJZH0ke2lkc31gKTtcbiAgICByb3V0ZSA9IHJvdXRlLnJlcGxhY2UoJ3thcGlDdXJyZW5jeX0nLCAodGhpcy5jdXJyZW5jeSkgPyBgJHt0aGlzLmFwaUN1cnJlbmN5fSR7dGhpcy5jdXJyZW5jeX1gIDogJycpO1xuICAgIHJldHVybiBgJHt0aGlzLmFwaUhvc3R9JHt0aGlzLmFwaU5hbWVzcGFjZX0ke3JvdXRlfWA7XG4gIH0sXG5cbiAgc3RhcnRPZldlZWs6IDAsIC8vIDAgU3VuIDEgTW9uLi4uLjYgU2F0XG4gIG1pblN0YXk6IDEsIC8vIGNhbiBzZWxlY3Qgb25lIG5pZ2h0XG4gIG1heFN0YXk6IEluZmluaXR5LCAvLyBjYW4gc2VsZWN0IGluZmluaXRlIG5pZ2h0c1xuICBtb250aFN0YXJ0OiBudWxsLCAvLyBzdGFydCB3aXRoIGN1cnJlbnQgbW9udGggYnkgZGVmYXVsdCBNICcwLi4uMTEnXG4gIHllYXJTdGFydDogbnVsbCwgLy8gc3RhcnQgd2l0aCBjdXJyZW50IHllYXIgWVlZWVxuICBkYXlzUGVyV2VlazogNywgLy8gRklYTUUgc3VwcG9ydCBjYWxlbmRhciByZW5kZXJpbmdcbiAgZGlzcGxheU1vbnRoczogMixcbiAgbW9udGhzUGFnaW5hdGlvbkp1bXA6IDEsXG4gIHNlbGVjdGFibGU6IGZhbHNlLFxuICBzaG93UmF0ZXM6IGZhbHNlLFxuICBpc1JldmVyc2VTZWxlY3RhYmxlOiBmYWxzZSwgLy8gc2VsZWN0IGVuZCBkYXRlIGZpcnN0XG4gIGlzQmFja0Rpc2FibGVkOiB0cnVlLFxuICBpc0Ryb3BEb3duOiBmYWxzZSxcbiAgZHJvcFBsYWNlbWVudDogJ2JvdHRvbS1zdGFydCcsXG4gIGVsOiBudWxsLFxuICBlbFN0YXJ0QXQ6IG51bGwsXG4gIGVsRW5kQXQ6IG51bGwsXG4gIGVsU2luZ2xlSW5wdXQ6IG51bGwsXG4gIGlzU2luZ2xlSW5wdXQ6IG51bGwsXG4gIHNpbmdsZUlucHV0RGF0ZUZvcm1hdDogbnVsbCxcbiAgc2luZ2xlSW5wdXRTZXBhcmF0b3I6ICfihpInLFxuICBlbFJlc2V0OiBudWxsLFxuICBmb3JtYXREYXRlOiBudWxsLFxuICBoaWRkZW5FbEZvcm1hdDogbnVsbCxcbiAgcmVudGFsSWQ6IG51bGwsXG4gIGN1cnJlbmN5OiBudWxsLFxuICBkaXNhYmxlQXZhaWxhYml0eU1hcDogZmFsc2UsXG4gIGFsbG93U2hvcnRlck1pblN0YXlTZWxlY3Rpb246IGZhbHNlLFxuICBhbGxvd0xvbmdlck1heFN0YXlTZWxlY3Rpb246IGZhbHNlLFxuICBlbmFibGVBbGxEYXlzOiBmYWxzZSxcbiAgY3VycmVudERhdGUsXG4gIHRoZW1lOiAnc2tldydcbn07XG4iLCJsZXQgbG9jYWxlcyA9IHtcbiAgJ2VuLUdCJzoge1xuICAgIHNob3J0V2Vla2RheU5hbWVzOiAnU3VfTW9fVHVfV2VfVGhfRnJfU2EnLnNwbGl0KCdfJyksXG4gICAgbG9uZ1dlZWtkYXlOYW1lczogJ1N1bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1NhdHVyZGF5Jy5zcGxpdCgnXycpLFxuICAgIGxvbmdNb250aE5hbWVzOiAnSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlcicuc3BsaXQoJ18nKSxcbiAgICBzaG9ydE1vbnRoTmFtZXM6ICdKYW5fRmViX01hcl9BcHJfTWF5X0p1bl9KdWxfQXVnX1NlcF9PY3RfTm92X0RlYycuc3BsaXQoJ18nKSxcbiAgICBmb3JtYXREYXRlOiAnJWIgJWQsICVZJyxcbiAgICBjdXJyZW5jeTogJ0dCUCcsXG4gICAgbWluU3RheTogJyVudW1iZXIrIG5pZ2h0cycsXG4gICAgbWF4U3RheTogJyVudW1iZXItIG5pZ2h0cycsXG4gICAgaGFzSW52YWxpZE1pblN0YXk6ICdtaW5pbXVtIHN0YXk6ICVudW1iZXIgbmlnaHRzJyxcbiAgICBoYXNJbnZhbGlkTWF4U3RheTogJ21heGltdW0gc3RheTogJW51bWJlciBuaWdodHMnLFxuICAgIGhhc0ludmFsaWREYXlzOiAnYm9va2VkIGFscmVhZHknLFxuICAgIHN0YXJ0T2ZXZWVrOiAwXG4gIH0sXG4gICdlbi1VUyc6IHtcbiAgICBzaG9ydFdlZWtkYXlOYW1lczogJ1N1X01vX1R1X1dlX1RoX0ZyX1NhJy5zcGxpdCgnXycpLFxuICAgIGxvbmdXZWVrZGF5TmFtZXM6ICdTdW5kYXlfTW9uZGF5X1R1ZXNkYXlfV2VkbmVzZGF5X1RodXJzZGF5X0ZyaWRheV9TYXR1cmRheScuc3BsaXQoJ18nKSxcbiAgICBsb25nTW9udGhOYW1lczogJ0phbnVhcnlfRmVicnVhcnlfTWFyY2hfQXByaWxfTWF5X0p1bmVfSnVseV9BdWd1c3RfU2VwdGVtYmVyX09jdG9iZXJfTm92ZW1iZXJfRGVjZW1iZXInLnNwbGl0KCdfJyksXG4gICAgc2hvcnRNb250aE5hbWVzOiAnSmFuX0ZlYl9NYXJfQXByX01heV9KdW5fSnVsX0F1Z19TZXBfT2N0X05vdl9EZWMnLnNwbGl0KCdfJyksXG4gICAgZm9ybWF0RGF0ZTogJyViICVkLCAlWScsXG4gICAgY3VycmVuY3k6ICdVU0QnLFxuICAgIG1pblN0YXk6ICclbnVtYmVyKyBuaWdodHMnLFxuICAgIG1heFN0YXk6ICclbnVtYmVyLSBuaWdodHMnLFxuICAgIGhhc0ludmFsaWRNaW5TdGF5OiAnbWluaW11bSBzdGF5OiAlbnVtYmVyIG5pZ2h0cycsXG4gICAgaGFzSW52YWxpZE1heFN0YXk6ICdtYXhpbXVtIHN0YXk6ICVudW1iZXIgbmlnaHRzJyxcbiAgICBoYXNJbnZhbGlkRGF5czogJ2Jvb2tlZCBhbHJlYWR5JyxcbiAgICBzdGFydE9mV2VlazogMVxuICB9LFxuICAnZGUtREUnOiB7XG4gICAgc2hvcnRXZWVrZGF5TmFtZXM6ICdTb19Nb19EaV9NaV9Eb19Gcl9TYScuc3BsaXQoJ18nKSxcbiAgICBsb25nV2Vla2RheU5hbWVzOiAnU29ubnRhZ19Nb250YWdfRGllbnN0YWdfTWl0dHdvY2hfRG9ubmVyc3RhZ19GcmVpdGFnX1NhbXN0YWcnLnNwbGl0KCdfJyksXG4gICAgbG9uZ01vbnRoTmFtZXM6ICdKYW51YXJfRmVicnVhcl9Nw6Ryel9BcHJpbF9NYWlfSnVuaV9KdWxpX0F1Z3VzdF9TZXB0ZW1iZXJfT2t0b2Jlcl9Ob3ZlbWJlcl9EZXplbWJlcicuc3BsaXQoJ18nKSxcbiAgICBzaG9ydE1vbnRoTmFtZXM6ICdKYW5fRmViX03DpHJfQXByX01haV9KdW5fSnVsX0F1Z19TZXBfT2t0X05vdl9EZXonLnNwbGl0KCdfJyksXG4gICAgZm9ybWF0RGF0ZTogJyViICVkLCAlWScsXG4gICAgY3VycmVuY3k6ICdFVVInLFxuICAgIG1pblN0YXk6ICclbnVtYmVyKyBuw6RjaHRlJyxcbiAgICBtYXhTdGF5OiAnJW51bWJlci0gbsOkY2h0ZScsXG4gICAgaGFzSW52YWxpZE1pblN0YXk6ICdtaW5kZXN0YXVmZW50aGFsdDogJW51bWJlciBOw6RjaHRlJyxcbiAgICBoYXNJbnZhbGlkTWF4U3RheTogJ21heGltYWxlciBBdWZlbnRoYWx0OiAlbnVtYmVyIE7DpGNodGUnLFxuICAgIGhhc0ludmFsaWREYXlzOiAnc2Nob24gZ2VidWNodCcsXG4gICAgc3RhcnRPZldlZWs6IDFcbiAgfSxcbiAgJ2VzLUVTJzoge1xuICAgIHNob3J0V2Vla2RheU5hbWVzOiAnRG9fTHVfTWFfTWlfSnVfVmlfU8OhJy5zcGxpdCgnXycpLFxuICAgIGxvbmdXZWVrZGF5TmFtZXM6ICdkb21pbmdvX2x1bmVzX21hcnRlc19tacOpcmNvbGVzX2p1ZXZlc192aWVybmVzX3PDoWJhZG8nLnNwbGl0KCdfJyksXG4gICAgbG9uZ01vbnRoTmFtZXM6ICdlbmVyb19mZWJyZXJvX21hcnpvX2FicmlsX21heW9fanVuaW9fanVsaW9fYWdvc3RvX3NlcHRpZW1icmVfb2N0dWJyZV9ub3ZpZW1icmVfZGljaWVtYnJlJy5zcGxpdCgnXycpLFxuICAgIHNob3J0TW9udGhOYW1lczogJ2VuZV9mZWJfbWFyX2Ficl9tYXlfanVuX2p1bF9hZ29fc2VwX29jdF9ub3ZfZGljJy5zcGxpdCgnXycpLFxuICAgIGZvcm1hdERhdGU6ICclYiAlZCwgJVknLFxuICAgIGN1cnJlbmN5OiAnRVVSJyxcbiAgICBtaW5TdGF5OiAnJW51bWJlcisgbm9jaGVzJyxcbiAgICBtYXhTdGF5OiAnJW51bWJlci0gbm9jaGVzJyxcbiAgICBoYXNJbnZhbGlkTWluU3RheTogJ2VzdGFuY2lhIG3DrW5pbWE6ICVudW1iZXIgbm9jaGVzJyxcbiAgICBoYXNJbnZhbGlkTWF4U3RheTogJ2VzdGFuY2lhIG3DoXhpbWE6ICVudW1iZXIgbm9jaGVzJyxcbiAgICBoYXNJbnZhbGlkRGF5czogJ3lhIHJlc2VydmFkbycsXG4gICAgc3RhcnRPZldlZWs6IDFcbiAgfSxcbiAgJ2ZyLUZSJzoge1xuICAgIHNob3J0V2Vla2RheU5hbWVzOiAnRGlfTHVfTWFfTWVfSmVfVmVfU2EnLnNwbGl0KCdfJyksXG4gICAgbG9uZ1dlZWtkYXlOYW1lczogJ2RpbWFuY2hlX2x1bmRpX21hcmRpX21lcmNyZWRpX2pldWRpX3ZlbmRyZWRpX3NhbWVkaScuc3BsaXQoJ18nKSxcbiAgICBsb25nTW9udGhOYW1lczogJ2phbnZpZXJfZsOpdnJpZXJfbWFyc19hdnJpbF9tYWlfanVpbl9qdWlsbGV0X2Fvw7t0X3NlcHRlbWJyZV9vY3RvYnJlX25vdmVtYnJlX2TDqWNlbWJyZScuc3BsaXQoJ18nKSxcbiAgICBzaG9ydE1vbnRoTmFtZXM6ICdqYW5fZsOpdl9tYXJfYXZyX21haV9qdWluX2p1aWxfYW/Du19zZXBfb2N0X25vdl9kw6ljJy5zcGxpdCgnXycpLFxuICAgIGZvcm1hdERhdGU6ICclZCAlYiwgJVknLFxuICAgIGN1cnJlbmN5OiAnRVVSJyxcbiAgICBtaW5TdGF5OiAnJW51bWJlcisgbnVpdHMnLFxuICAgIG1heFN0YXk6ICclbnVtYmVyLSBudWl0cycsXG4gICAgaGFzSW52YWxpZE1pblN0YXk6ICdzw6lqb3VyIG1pbmltdW0gOiAlbnVtYmVyIG51aXRzJyxcbiAgICBoYXNJbnZhbGlkTWF4U3RheTogJ3PDqWpvdXIgbWF4aW11bSA6ICVudW1iZXIgbnVpdHMnLFxuICAgIGhhc0ludmFsaWREYXlzOiAnZMOpasOgIHLDqXNlcnbDqScsXG4gICAgc3RhcnRPZldlZWs6IDFcbiAgfSxcbiAgJ2l0LUlUJzoge1xuICAgIHNob3J0V2Vla2RheU5hbWVzOiAnRG9fTHVfTWFfTWVfR2lfVmVfU2EnLnNwbGl0KCdfJyksXG4gICAgbG9uZ1dlZWtkYXlOYW1lczogJ2RvbWVuaWNhX2x1bmVkw6xfbWFydGVkw6xfbWVyY29sZWTDrF9naW92ZWTDrF92ZW5lcmTDrF9zYWJhdG8nLnNwbGl0KCdfJyksXG4gICAgbG9uZ01vbnRoTmFtZXM6ICdnZW5uYWlvX2ZlYmJyYWlvX21hcnpvX2FwcmlsZV9tYWdnaW9fZ2l1Z25vX2x1Z2xpb19hZ29zdG9fc2V0dGVtYnJlX290dG9icmVfbm92ZW1icmVfZGljZW1icmUnLnNwbGl0KCdfJyksXG4gICAgc2hvcnRNb250aE5hbWVzOiAnZ2VuX2ZlYl9tYXJfYXByX21hZ19naXVfbHVnX2Fnb19zZXRfb3R0X25vdl9kaWMnLnNwbGl0KCdfJyksXG4gICAgZm9ybWF0RGF0ZTogJyViICVkLCAlWScsXG4gICAgY3VycmVuY3k6ICdFVVInLFxuICAgIG1pblN0YXk6ICclbnVtYmVyKyBub3R0aS4nLFxuICAgIG1heFN0YXk6ICclbnVtYmVyLSBub3R0aScsXG4gICAgaGFzSW52YWxpZE1pblN0YXk6ICdzb2dnaW9ybm8gbWluaW06ICVudW1iZXIgbm90dGknLFxuICAgIGhhc0ludmFsaWRNYXhTdGF5OiAnc29nZ2lvcm5vIG1hc3NpbW86ICVudW1iZXIgbm90dGknLFxuICAgIGhhc0ludmFsaWREYXlzOiAnZ2nDoCBwcmVub3RhdG8nLFxuICAgIHN0YXJ0T2ZXZWVrOiAxXG4gIH0sXG4gICdzdi1TRSc6IHtcbiAgICBzaG9ydFdlZWtkYXlOYW1lczogJ3PDtl9tw6VfdGlfb25fdG9fZnJfbMO2Jy5zcGxpdCgnXycpLFxuICAgIGxvbmdXZWVrZGF5TmFtZXM6ICdzw7ZuZGFnX23DpW5kYWdfdGlzZGFnX29uc2RhZ190b3JzZGFnX2ZyZWRhZ19sw7ZyZGFnJy5zcGxpdCgnXycpLFxuICAgIGxvbmdNb250aE5hbWVzOiAnamFudWFyaV9mZWJydWFyaV9tYXJzX2FwcmlsX21hal9qdW5pX2p1bGlfYXVndXN0aV9zZXB0ZW1iZXJfb2t0b2Jlcl9ub3ZlbWJlcl9kZWNlbWJlcicuc3BsaXQoJ18nKSxcbiAgICBzaG9ydE1vbnRoTmFtZXM6ICdqYW5fZmViX21hcl9hcHJfbWFqX2p1bl9qdWxfYXVnX3NlcF9va3Rfbm92X2RlYycuc3BsaXQoJ18nKSxcbiAgICBmb3JtYXREYXRlOiAnJWIgJWQsICVZJyxcbiAgICBjdXJyZW5jeTogJ0VVUicsXG4gICAgbWluU3RheTogJyVudW1iZXIrIG7DpHR0ZXInLFxuICAgIG1heFN0YXk6ICclbnVtYmVyLSBuw6R0dGVyJyxcbiAgICBoYXNJbnZhbGlkTWluU3RheTogJ2tvcnRhc3RlIHZpc3RlbHNlOiAlbnVtYmVyIG7DpHR0ZXInLFxuICAgIGhhc0ludmFsaWRNYXhTdGF5OiAnbWF4aW3DoWxueSBwb2J5dDogJW51bWJlciBuw6R0dGVyJyxcbiAgICBoYXNJbnZhbGlkRGF5czogJ3JlZGFuIGJva2F0JyxcbiAgICBzdGFydE9mV2VlazogMVxuICB9LFxuICAncnUtUlUnOiB7XG4gICAgc2hvcnRXZWVrZGF5TmFtZXM6ICfQktGBX9Cf0L1f0JLRgl/QodGAX9Cn0YJf0J/Rgl/QodCxJy5zcGxpdCgnXycpLFxuICAgIGxvbmdXZWVrZGF5TmFtZXM6ICfQktC+0YHQutGA0LXRgdC10L3RjNC1X9Cf0L7QvdC10LTQtdC70YzQvdC40Lpf0JLRgtC+0YDQvdC40Lpf0KHRgNC10LTQsF/Qp9C10YLQstC10YDQs1/Qn9GP0YLQvdC40YbQsF/QodGD0LHQsdC+0YLQsCcuc3BsaXQoJ18nKSxcbiAgICBsb25nTW9udGhOYW1lczogJ9Cv0L3QstCw0YDRjF/QpNC10LLRgNCw0LvRjF/QnNCw0YDRgl/QkNC/0YDQtdC70Yxf0JzQsNC5X9CY0Y7QvdGMX9CY0Y7Qu9GMX9CQ0LLQs9GD0YHRgl/QodC10L3RgtGP0LHRgNGMX9Ce0LrRgtGP0LHRgNGMX9Cd0L7Rj9Cx0YDRjF/QlNC10LrQsNCx0YDRjCcuc3BsaXQoJ18nKSxcbiAgICBzaG9ydE1vbnRoTmFtZXM6ICfQr9C90LJf0KTQtdCyX9Cc0LDRgF/QkNC/0YBf0JzQsNC5X9CY0Y7QvV/QmNGO0Ltf0JDQstCzX9Ch0LXQvV/QntC60YJf0J3QvtGPX9CU0LXQuicuc3BsaXQoJ18nKSxcbiAgICBmb3JtYXREYXRlOiAnJWQuJWIuJVknLFxuICAgIGN1cnJlbmN5OiAn0KDRg9CxLicsXG4gICAgbWluU3RheTogJyVudW1iZXIrINC90L7Rhy4nLFxuICAgIG1heFN0YXk6ICclbnVtYmVyLSDQvdC+0YcuJyxcbiAgICBoYXNJbnZhbGlkTWluU3RheTogJ9C80LjQvdC40LzQsNC70YzQvdC+0LUg0L/RgNC10LHRi9Cy0LDQvdC4OiAlbnVtYmVyINC90L7Rh9C4JyxcbiAgICBoYXNJbnZhbGlkTWF4U3RheTogJ9C80LDQutGB0LjQvNCw0LvRjNC90L7QtSDQv9GA0LXQsdGL0LLQsNC90LjQtTogJW51bWJlciDQvdC+0YfQuCcsXG4gICAgaGFzSW52YWxpZERheXM6ICfQt9Cw0LHRgNC+0L3QuNGA0L7QstCw0L3QviDRg9C20LUnLFxuICAgIHN0YXJ0T2ZXZWVrOiAxXG4gIH0sXG4gICdwbC1QTCc6IHtcbiAgICBzaG9ydFdlZWtkYXlOYW1lczogJ05kX1BuX1d0X8Wacl9Del9QdF9Tbycuc3BsaXQoJ18nKSxcbiAgICBsb25nV2Vla2RheU5hbWVzOiAnbmllZHppZWxhX3BvbmllZHppYcWCZWtfd3RvcmVrX8Wbcm9kYV9jendhcnRla19wacSFdGVrX3NvYm90YScuc3BsaXQoJ18nKSxcbiAgICBsb25nTW9udGhOYW1lczogJ3N0eWN6ZcWEX2x1dHlfbWFyemVjX2t3aWVjaWXFhF9tYWpfY3plcndpZWNfbGlwaWVjX3NpZXJwaWXFhF93cnplc2llxYRfcGHFumR6aWVybmlrX2xpc3RvcGFkX2dydWR6aWXFhCcuc3BsaXQoJ18nKSxcbiAgICBzaG9ydE1vbnRoTmFtZXM6ICdzdHlfbHV0X21hcl9rd2lfbWFqX2N6ZV9saXBfc2llX3dyel9wYcW6X2xpc19ncnUnLnNwbGl0KCdfJyksXG4gICAgZm9ybWF0RGF0ZTogJyVkLiViLiVZJyxcbiAgICBjdXJyZW5jeTogJ1BMTicsXG4gICAgbWluU3RheTogJyVudW1iZXIrIG5vY2UnLFxuICAgIG1heFN0YXk6ICclbnVtYmVyLSBub2NlJyxcbiAgICBoYXNJbnZhbGlkTWluU3RheTogJ21pbmltYWxueSBwb2J5OiAlbnVtYmVyIG5vY2UnLFxuICAgIGhhc0ludmFsaWRNYXhTdGF5OiAnbWFrc3ltYWxueSBwb2J5dDogJW51bWJlciBub2NlJyxcbiAgICBoYXNJbnZhbGlkRGF5czogJ2p1xbwgemFyZXplcndvd2FuZScsXG4gICAgc3RhcnRPZldlZWs6IDFcbiAgfSxcbiAgJ25sLU5MJzoge1xuICAgIHNob3J0V2Vla2RheU5hbWVzOiAnWm9fTWFfRGlfV29fRG9fVnJfWmEnLnNwbGl0KCdfJyksXG4gICAgbG9uZ1dlZWtkYXlOYW1lczogJ1pvbmRhZ19NYWFuZGFnX0RpbnNkYWdfV29lbnNkYWdfRG9uZGVyZGFnX1ZyaWpkYWdfWmF0ZXJkYWcnLnNwbGl0KCdfJyksXG4gICAgbG9uZ01vbnRoTmFtZXM6ICdKYW51YXJpX0ZlYnJ1YXJpX01hYXJ0X0FwcmlsX01laV9KdW5pX0p1bGlfQXVndXN0dXNfU2VwdGVtYmVyX09rdG9iZXJfTm92ZW1iZXJfRGVjZW1iZXInLnNwbGl0KCdfJyksXG4gICAgc2hvcnRNb250aE5hbWVzOiAnSmFuX0ZlYl9NYWFfQXByX01laV9KdW5fSnVsX0F1Z19TZXBfT2t0X05vdl9EZWMnLnNwbGl0KCdfJyksXG4gICAgZm9ybWF0RGF0ZTogJyViICVkLCAlWScsXG4gICAgY3VycmVuY3k6ICdFVVInLFxuICAgIG1pblN0YXk6ICclbnVtYmVyKyBuYWNodGVuJyxcbiAgICBtYXhTdGF5OiAnJW51bWJlci0gbmFjaHRlbicsXG4gICAgaGFzSW52YWxpZE1pblN0YXk6ICdtaW5pbWFhbCB2ZXJibGlqZjogJW51bWJlciBuYWNodGVuJyxcbiAgICBoYXNJbnZhbGlkTWF4U3RheTogJ21heGltYWFsIHZlcmJsaWpmOiAlbnVtYmVyIG5hY2h0ZW4nLFxuICAgIGhhc0ludmFsaWREYXlzOiAnYWwgZ2Vib2VrdCcsXG4gICAgc3RhcnRPZldlZWs6IDFcbiAgfVxufTtcblxuLy8gQWRkIGFsaWFzZXNcbmxvY2FsZXMgPSBPYmplY3QuYXNzaWduKHtcbiAgZW46IGxvY2FsZXNbJ2VuLVVTJ10sXG4gIGRlOiBsb2NhbGVzWydkZS1ERSddLFxuICBlczogbG9jYWxlc1snZXMtRVMnXSxcbiAgZnI6IGxvY2FsZXNbJ2ZyLUZSJ10sXG4gIGl0OiBsb2NhbGVzWydpdC1JVCddLFxuICBzdjogbG9jYWxlc1snc3YtU1YnXSxcbiAgcnU6IGxvY2FsZXNbJ3J1LVJVJ10sXG4gIHBsOiBsb2NhbGVzWydwbC1QTCddLFxuICBubDogbG9jYWxlc1snbmwtTkwnXVxufSwgbG9jYWxlcyk7XG5cbmV4cG9ydCBkZWZhdWx0IGxvY2FsZXM7XG4iLCJpbXBvcnQgc3R5bGVzIGZyb20gJy4vc3R5bGVzL2NhbGVuZGFyLnNjc3MnO1xuXG5leHBvcnQgY29uc3QgbWFpbiAgPSBgPGRpdiBjbGFzcz1cIiR7c3R5bGVzLm1vbnRoc1dyYXBwZXJ9XCI+PC9kaXY+YDtcblxuZXhwb3J0IGNvbnN0IHRvb2x0aXAgPSBgPGRpdiBjbGFzcz1cIiR7c3R5bGVzLnRvb2x0aXB9XCIgcm9sZT1cInRvb2x0aXBcIj48c3Bhbj48L3NwYW4+PGRpdiBjbGFzcz1cIiR7c3R5bGVzLnRvb2x0aXBBcnJvd31cIiBkYXRhLXBvcHBlci1hcnJvdz1cInRydWVcIj48L2Rpdj48L2Rpdj5gO1xuXG5leHBvcnQgY29uc3QgbW9udGggPSBgXG4gIDxkaXYgY2xhc3M9XCIke3N0eWxlcy5tQ2VsbH0ganMtbW9udGhcIj5cbiAgICA8dGFibGUgY2xhc3M9XCIke3N0eWxlcy5tb250aH1cIiByb2xlPVwibW9udGhcIj5cbiAgICAgIDxjYXB0aW9uPjxkaXYgY2xhc3M9XCIke3N0eWxlcy5jYXB0aW9ufVwiPjwvZGl2PjwvY2FwdGlvbj5cbiAgICAgIDx0aGVhZCBjbGFzcz1cIiR7c3R5bGVzLnRhYmxlSGVhZGVyfVwiPjx0cj48L3RyPjwvdGhlYWQ+XG4gICAgICA8dGJvZHkgY2xhc3M9XCIke3N0eWxlcy5ib2R5fVwiPjwvdGJvZHk+XG4gICAgPC90YWJsZT5cbiAgPC9kaXY+XG5gO1xuXG5leHBvcnQgY29uc3Qgd2Vla0RheUxhYmVsID0gKGxhYmVsKSA9PiBgPHRoIGNsYXNzPVwiJHtzdHlsZXMudGh9XCI+JHtsYWJlbH08L3RoPmA7XG5cbmV4cG9ydCBjb25zdCB3ZWVrRGF5ID0gKFxuICBsYWJlbCxcbiAgZGlzYWJsZWQsXG4gIGlzQXZhaWxhYmxlSW4sXG4gIGlzQXZhaWxhYmxlT3V0LFxuICBpc0N1cnJlbnREYXksXG4gIG1pblN0YXksXG4gIG1pblN0YXlULFxuICBtYXhTdGF5LFxuICBtYXhTdGF5VCxcbiAgcmF0ZSxcbiAgcmF0ZVRcbikgPT4gYFxuICA8dGQgJHtkaXNhYmxlZCA/IGBkYXRhLWRpc2FibGVkPSR7ZGlzYWJsZWR9YCA6ICdkYXRhLWVuYWJsZWQnfVxuICAgICAgICR7aXNBdmFpbGFibGVPdXQgPyAnZGF0YS1hdmFpbGFibGUtb3V0JyA6ICcnfVxuICAgICAgICR7aXNBdmFpbGFibGVJbiA/ICdkYXRhLWF2YWlsYWJsZS1pbicgOiAnJ31cbiAgICAgICAke21pblN0YXkgPyBgZGF0YS1taW4tc3RheT0ke21pblN0YXl9YCA6ICcnfVxuICAgICAgICR7bWF4U3RheSA/IGBkYXRhLW1heC1zdGF5PSR7bWF4U3RheX1gIDogJyd9XG4gICAgICAgZGF0YS12YWx1ZT1cIiR7bGFiZWx9XCJcbiAgICAgICBjbGFzcz1cIiR7c3R5bGVzLmNlbGx9ICR7aXNDdXJyZW50RGF5ID8gc3R5bGVzLnRvZGF5IDogJyd9XCI+XG4gICAgICAgPGRpdiBjbGFzcz1cIiR7c3R5bGVzLmNudH1cIiByb2xlPVwiZGF5LXZhbHVlXCI+XG4gICAgICAgICR7bGFiZWx9XG4gICAgICAgIDxkaXYgY2xhc3M9XCIke3N0eWxlcy5pbmZvfVwiPlxuICAgICAgICAgICR7cmF0ZSA/IGA8c3BhbiBkYXRhLXJhdGU+JHtyYXRlVH08L3NwYW4+YCA6ICcnfVxuICAgICAgICAgICR7bWluU3RheSAmJiBtaW5TdGF5VCA/IGA8c3BhbiBkYXRhLW1pbi1zdGF5LXQ+JHttaW5TdGF5VH08L3NwYW4+YCA6ICcnfVxuICAgICAgICAgICR7bWF4U3RheSAmJiBtYXhTdGF5VCA/IGA8c3BhbiBkYXRhLW1heC1zdGF5LXQ+JHttYXhTdGF5VH08L3NwYW4+YCA6ICcnfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICA8L3RkPlxuYDtcblxuZXhwb3J0IGNvbnN0IGZvcndhcmQgPSBgXG4gIDxidXR0b24gY2xhc3M9XCIke3N0eWxlcy5mb3J3YXJkfVwiIHJvbGU9XCJidXR0b25cIj5cbiAgICA8c3ZnIHZpZXdCb3g9XCIwIDAgMTAwMCAxMDAwXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCI+XG4gICAgICA8cGF0aCBkPVwiTTY5NC40IDI0Mi40bDI0OS4xIDI0OS4xYzExIDExIDExIDIxIDAgMzJMNjk0LjQgNzcyLjdjLTUgNS0xMCA3LTE2IDdzLTExLTItMTYtN2MtMTEtMTEtMTEtMjEgMC0zMmwyMTAuMS0yMTAuMUg2Ny4xYy0xMyAwLTIzLTEwLTIzLTIzczEwLTIzIDIzLTIzaDgwNS40TDY2Mi40IDI3NC41Yy0yMS0yMS4xIDExLTUzLjEgMzItMzIuMXpcIj48L3BhdGg+XG4gICAgPC9zdmc+XG4gIDwvYnV0dG9uPlxuYDtcblxuZXhwb3J0IGNvbnN0IGJhY2sgPSBgXG4gIDxidXR0b24gY2xhc3M9XCIke3N0eWxlcy5iYWNrfVwiIHJvbGU9XCJidXR0b25cIj5cbiAgICA8c3ZnIHZpZXdCb3g9XCIwIDAgMTAwMCAxMDAwXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCI+XG4gICAgICA8cGF0aCBkPVwiTTMzNi4yIDI3NC41bC0yMTAuMSAyMTBoODA1LjRjMTMgMCAyMyAxMCAyMyAyM3MtMTAgMjMtMjMgMjNIMTI2LjFsMjEwLjEgMjEwLjFjMTEgMTEgMTEgMjEgMCAzMi01IDUtMTAgNy0xNiA3cy0xMS0yLTE2LTdsLTI0OS4xLTI0OWMtMTEtMTEtMTEtMjEgMC0zMmwyNDkuMS0yNDkuMWMyMS0yMS4xIDUzIDEwLjkgMzIgMzJ6XCI+PC9wYXRoPlxuICAgIDwvc3ZnPlxuICA8L2J1dHRvbj5cbmA7XG5cbmV4cG9ydCBjb25zdCB3ZWVrRGF5UGxhY2Vob2xkZXIgPSAnPHRkPjwvdGQ+JztcblxuLyogZXNsaW50IGFycm93LWJvZHktc3R5bGU6IDAgKi9cbmV4cG9ydCBjb25zdCB3ZWVrUm93ID0gKG51bSkgPT4ge1xuICByZXR1cm4ge1xuICAgIG9wZW46IGA8dHIgY2xhc3M9XCJqcy1ib2R5LXJvdy0ke251bX1cIj5gLFxuICAgIGNsb3NlOiAnPC90cj4nXG4gIH07XG59O1xuIiwiLyogZ2xvYmFsIGNvbnNvbGUgKi9cbmltcG9ydCB7IHN0cmZ0aW1lLCBzdHJwdGltZSB9IGZyb20gJ3N0cnRpbWUnO1xuaW1wb3J0IHsgaXMgfSBmcm9tICd3aWRnZXQtdXRpbHMnO1xuXG5leHBvcnQgY29uc3QgZGF0ZVRvSXNvID0gKHllYXIsIG1vbnRoLCBkYXksIGlzU3RyaW5nID0gZmFsc2UpID0+IHtcbiAgZnVuY3Rpb24gcGFkKG51bWJlcikge1xuICAgIGlmIChudW1iZXIgPCAxMCkge1xuICAgICAgcmV0dXJuIGAwJHtudW1iZXJ9YDtcbiAgICB9XG4gICAgcmV0dXJuIG51bWJlcjtcbiAgfVxuXG4gIGlmIChpc1N0cmluZykge1xuICAgIHJldHVybiBgJHt5ZWFyfS0ke3BhZChtb250aCArIDEpfS0ke3BhZChkYXkpfWA7XG4gIH1cblxuICBsZXQgZGF0ZSA9IG5ldyBEYXRlKHllYXIsIG1vbnRoLCBkYXksIDEyLCAwLCAwKTtcbiAgcmV0dXJuIGRhdGU7XG59O1xuXG5leHBvcnQgY29uc3QgZGF0ZVRvQXJyYXkgPSAodmFsLCBmb3JtYXQsIGxvY2FsZSkgPT4ge1xuICB0cnkge1xuICAgIGNvbnN0IGRhdGUgPSBzdHJwdGltZSh2YWwsIGZvcm1hdCwgbG9jYWxlKTtcbiAgICBjb25zdCBhICAgID0gc3RyZnRpbWUoZGF0ZSwgJyVZLSVtLSVkJykuc3BsaXQoJy0nKTtcblxuICAgIHJldHVybiBbXG4gICAgICBwYXJzZUludChhWzBdKSwgLy8geWVhclxuICAgICAgcGFyc2VJbnQoYVsxXSAtIDEpLCAvLyBtb250aCBpbmRleFxuICAgICAgcGFyc2VJbnQoYVsyXSkgLy8gZGF5XG4gICAgXTtcbiAgfSBjYXRjaChlKSB7XG4gICAgaWYgKGlzKGUubWVzc2FnZSkpIHtcbiAgICAgIGNvbnNvbGUubG9nKGUubWVzc2FnZSk7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGlzTGF0ZXIgPSAoc3RhcnQsIGVuZCkgPT4gZGF0ZVRvSXNvKC4uLnN0YXJ0LCB0cnVlKSA8IGRhdGVUb0lzbyguLi5lbmQsIHRydWUpO1xuXG5leHBvcnQgY29uc3QgaXNDdXJyZW50ID0gKHN0YXJ0LCBlbmQpID0+IGRhdGVUb0lzbyguLi5zdGFydCwgdHJ1ZSkgPT0gZGF0ZVRvSXNvKC4uLmVuZCwgdHJ1ZSk7XG5cbmV4cG9ydCBjb25zdCBtb250aERpZmYgPSAoc3RhcnQsIGVuZCkgPT4ge1xuICByZXR1cm4gZW5kLmdldE1vbnRoKCkgLSBzdGFydC5nZXRNb250aCgpICsgKDEyICogKGVuZC5nZXRGdWxsWWVhcigpIC0gc3RhcnQuZ2V0RnVsbFllYXIoKSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IHZhbGlkYXRpb25PZkNlbGwgPSAoY2VsbCkgPT4ge1xuICBpZiAoaXMoY2VsbC5kYXRhc2V0LmVuYWJsZWQpIHx8IGlzKGNlbGwuZGF0YXNldC5hdmFpbGFibGVJbikgfHwgaXMoY2VsbC5kYXRhc2V0LmF2YWlsYWJsZU91dCkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn07XG5cbmV4cG9ydCBjb25zdCB0Rm9ybWF0dGVyID0gKHZhbHVlLCBzdHIpID0+IHN0ci5yZXBsYWNlKCclbnVtYmVyJywgdmFsdWUpO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9HRVRfVVJMX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2dldFVybC5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfVVJMX0lNUE9SVF8wX19fID0gbmV3IFVSTChcImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsJTNDc3ZnIHhtbG5zPSUyN2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJTI3IHZpZXdCb3g9JTI3MCAwIDMyIDMwLjk3JTI3JTNFJTNDcGF0aCBkPSUyN00zMiwxNS40OGExNi41MiwxNi41MiwwLDAsMS0xLjM3LDYuMjgsMTYuMzUsMTYuMzUsMCwwLDEtOSw4LjYzLDE1Ljg3LDE1Ljg3LDAsMCwxLTE3LjMtMy43OEExNS40MywxNS40MywwLDAsMSw0LjcyLDQuNzIsMTUsMTUsMCwwLDEsMTUuNDkuNTJhMTQuNzYsMTQuNzYsMCwwLDEsMTAuNCw0LjU2QTE0Ljc3LDE0Ljc3LDAsMCwxLDI5LDkuOWExNC40NSwxNC40NSwwLDAsMSwuODUsMy4zNWguMTNBMi4wNiwyLjA2LDAsMCwxLDMyLDE1LjMxYS45MS45MSwwLDAsMSwwLC4xN1pNMjguNzIsMTBhMTQuMjcsMTQuMjcsMCwwLDAtMy4yLTQuNTUsMTQsMTQsMCwwLDAtMTAtMy45QTEzLjcyLDEzLjcyLDAsMCwwLDMsMTAuM2ExMy40MywxMy40MywwLDAsMCwuMjQsMTAuMjcsMTMuMDUsMTMuMDUsMCwwLDAsMTIuMjgsNy44MiwxMi45MiwxMi45MiwwLDAsMCw0Ljg4LTEuMSwxMi42NSwxMi42NSwwLDAsMCw0LjA2LTIuODcsMTIuNDgsMTIuNDgsMCwwLDAsMi42Mi00LjE1LDEyLjI0LDEyLjI0LDAsMCwwLC44Mi00Ljc5aDBhLjkxLjkxLDAsMCwxLDAtLjE3LDIuMDcsMi4wNywwLDAsMSwxLjg0LTIuMDUsMTQuMjcsMTQuMjcsMCwwLDAtMS0zLjI2WiUyNyB0cmFuc2Zvcm09JTI3dHJhbnNsYXRlJTI4MCAtMC41MSUyOSUyNy8lM0UlM0Mvc3ZnJTNFXCIsIGltcG9ydC5tZXRhLnVybCk7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG52YXIgX19fQ1NTX0xPQURFUl9VUkxfUkVQTEFDRU1FTlRfMF9fXyA9IF9fX0NTU19MT0FERVJfR0VUX1VSTF9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9VUkxfSU1QT1JUXzBfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuXFxuICAgIGxvYWRlclxcblxcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbkAtd2Via2l0LWtleWZyYW1lcyBCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19ib29raW5nc3luYy1zcGluIHtcXG4gIGZyb20ge1xcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsgfVxcbiAgdG8ge1xcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XFxuICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IH0gfVxcblxcbkBrZXlmcmFtZXMgQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fYm9va2luZ3N5bmMtc3BpbiB7XFxuICBmcm9tIHtcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7IH1cXG4gIHRvIHtcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOyB9IH1cXG5cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXI6OmJlZm9yZSB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IDA7XFxuICBsZWZ0OiAwO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7XFxuICBjb250ZW50OiAnJzsgfVxcblxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcjo6YWZ0ZXIge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdG9wOiA1MCU7XFxuICBsZWZ0OiA1MCU7XFxuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xcbiAgYmFja2dyb3VuZC1zaXplOiAxMDAlO1xcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiICsgX19fQ1NTX0xPQURFUl9VUkxfUkVQTEFDRU1FTlRfMF9fXyArIFwiKTtcXG4gIGhlaWdodDogMjBweDtcXG4gIHdpZHRoOiAyMHB4O1xcbiAgbWFyZ2luOiAtMTBweCAwIDAgLTEwcHg7XFxuICBjb250ZW50OiAnJztcXG4gIC13ZWJraXQtYW5pbWF0aW9uOiBCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19ib29raW5nc3luYy1zcGluIDJzIGluZmluaXRlIGxpbmVhcjtcXG4gIGFuaW1hdGlvbjogQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fYm9va2luZ3N5bmMtc3BpbiAycyBpbmZpbml0ZSBsaW5lYXI7XFxuICBhbmltYXRpb24tcGxheS1zdGF0ZTogcGF1c2VkOyB9XFxuXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyOjpiZWZvcmUsIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcjo6YWZ0ZXIge1xcbiAgei1pbmRleDogMTAwMDtcXG4gIG9wYWNpdHk6IDA7XFxuICB2aXNpYmlsaXR5OiBoaWRkZW47XFxuICAtd2Via2l0LXRyYW5zaXRpb246IG9wYWNpdHkgMC4yNXMgZWFzZS1pbi1vdXQ7XFxuICAtby10cmFuc2l0aW9uOiBvcGFjaXR5IDAuMjVzIGVhc2UtaW4tb3V0O1xcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjI1cyBlYXNlLWluLW91dDsgfVxcblxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhci5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19sb2FkaW5nOjpiZWZvcmUsIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhci5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19sb2FkaW5nOjphZnRlciB7XFxuICBvcGFjaXR5OiAxO1xcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcXG4gIGFuaW1hdGlvbi1wbGF5LXN0YXRlOiBydW5uaW5nOyB9XFxuXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuXFxuICAgIGRyb3Bkb3duXFxuXFxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2Ryb3BCYXNpYyB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBkaXNwbGF5OiBub25lO1xcbiAgbWF4LXdpZHRoOiAxMDAlO1xcbiAgYm94LXNoYWRvdzogMXB4IDVweCA5cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKTtcXG4gIGJvcmRlcjogMXB4IHNvbGlkICNlMGUwZTA7XFxuICBiYWNrZ3JvdW5kOiAjZmZmO1xcbiAgbWFyZ2luOiAwO1xcbiAgcGFkZGluZzogMWVtO1xcbiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XFxuICBsaW5lLWhlaWdodDogMS41ZW07XFxuICB6LWluZGV4OiAxMDsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2Ryb3BCYXNpYy5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X192aXNpYmxlIHtcXG4gICAgZGlzcGxheTogYmxvY2s7IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhci5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19kcm9wQmFzaWMgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhcHRpb24ge1xcbiAgICBtYXJnaW4tYm90dG9tOiAuN2VtOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fZHJvcEJhc2ljIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19mb3J3YXJkLFxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2Ryb3BCYXNpYyAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fYmFjayB7XFxuICAgIHRvcDogMWVtO1xcbiAgICBsZWZ0OiAxZW07IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhci5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19kcm9wQmFzaWMgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2ZvcndhcmQge1xcbiAgICBsZWZ0OiBhdXRvO1xcbiAgICByaWdodDogMWVtOyB9XFxuXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2VsbDpmaXJzdC1jaGlsZCB7XFxuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA0cHg7XFxuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA0cHg7IH1cXG5cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jZWxsOmxhc3QtY2hpbGQge1xcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDRweDtcXG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiA0cHg7IH1cXG5cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jZWxsOjpiZWZvcmUsIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NlbGw6OmFmdGVyIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGRpc3BsYXk6IGJsb2NrO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBtYXJnaW46IDA7XFxuICBjb250ZW50OiAnJztcXG4gIC13ZWJraXQtdHJhbnNmb3JtOiBza2V3KC0zMGRlZyk7XFxuICAtbXMtdHJhbnNmb3JtOiBza2V3KC0zMGRlZyk7XFxuICB0cmFuc2Zvcm06IHNrZXcoLTMwZGVnKTtcXG4gIGJvcmRlci1yYWRpdXM6IDZweDtcXG4gIHotaW5kZXg6IDA7XFxuICBoZWlnaHQ6IGNhbGMoMTAwJSArIDJweCk7XFxuICB0b3A6IC0xcHg7IH1cXG5cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jZWxsOjpiZWZvcmUge1xcbiAgbGVmdDogLTU1JTsgfVxcblxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NlbGw6OmFmdGVyIHtcXG4gIGxlZnQ6IDU1JTsgfVxcblxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcblxcbiAgICBzZWxlY3Rpb25zLCBsZWZ0IC0gY2VudGVyIC0gcmlnaHRcXG5cXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4gIGNlbGxzIGRpc2FibGVkXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSBbZGF0YS1kaXNhYmxlZD1cXFwibGVmdFxcXCJdOjphZnRlciB7XFxuICBiYWNrZ3JvdW5kOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1kaXNhYmxlZC1iZy1jb2xvciwgI2YwZjBmMCk7IH1cXG5cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIFtkYXRhLWRpc2FibGVkPVxcXCJjZW50ZXJcXFwiXSB7XFxuICBiYWNrZ3JvdW5kOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1kaXNhYmxlZC1iZy1jb2xvciwgI2YwZjBmMCk7XFxuICBjb2xvcjogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItZGlzYWJsZWQtY29sb3IsICNiZmJmYmYpOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIFtkYXRhLWRpc2FibGVkPVxcXCJjZW50ZXJcXFwiXTo6YmVmb3JlLCAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIFtkYXRhLWRpc2FibGVkPVxcXCJjZW50ZXJcXFwiXTo6YWZ0ZXIge1xcbiAgICBkaXNwbGF5OiBub25lO1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1kaXNhYmxlZC1iZy1jb2xvciwgI2YwZjBmMCk7IH1cXG5cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIFtkYXRhLWRpc2FibGVkPVxcXCJyaWdodFxcXCJdOjpiZWZvcmUge1xcbiAgYmFja2dyb3VuZDogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItZGlzYWJsZWQtYmctY29sb3IsICNmMGYwZjApOyB9XFxuXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuICBjZWxscyBoaWdobGlnaHRlZFxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gW2RhdGEtaGlnaGxpZ2h0ZWQ9XFxcImxlZnRcXFwiXTo6YWZ0ZXIge1xcbiAgZGlzcGxheTogYmxvY2s7XFxuICBiYWNrZ3JvdW5kOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1oaWdobGlnaHRlZC1iZy1jb2xvciwgI2I3Y2FmYik7IH1cXG5cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIFtkYXRhLWhpZ2hsaWdodGVkPVxcXCJjZW50ZXJcXFwiXSB7XFxuICBiYWNrZ3JvdW5kOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1oaWdobGlnaHRlZC1iZy1jb2xvciwgI2I3Y2FmYik7XFxuICBjb2xvcjogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItaGlnaGxpZ2h0ZWQtY29sb3IsICMzNzM3MzcpOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIFtkYXRhLWhpZ2hsaWdodGVkPVxcXCJjZW50ZXJcXFwiXTo6YmVmb3JlLCAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIFtkYXRhLWhpZ2hsaWdodGVkPVxcXCJjZW50ZXJcXFwiXTo6YWZ0ZXIge1xcbiAgICBkaXNwbGF5OiBub25lO1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1oaWdobGlnaHRlZC1iZy1jb2xvciwgI2I3Y2FmYik7IH1cXG5cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIFtkYXRhLWhpZ2hsaWdodGVkPVxcXCJyaWdodFxcXCJdOjpiZWZvcmUge1xcbiAgZGlzcGxheTogYmxvY2s7XFxuICBiYWNrZ3JvdW5kOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1oaWdobGlnaHRlZC1iZy1jb2xvciwgI2I3Y2FmYik7IH1cXG5cXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4gIGNlbGxzIGludmFsaWRcXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIFtkYXRhLWludmFsaWQ9XFxcImxlZnRcXFwiXSB7XFxuICBiYWNrZ3JvdW5kOiBub25lOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIFtkYXRhLWludmFsaWQ9XFxcImxlZnRcXFwiXTo6YmVmb3JlIHtcXG4gICAgZGlzcGxheTogYmxvY2s7IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gW2RhdGEtaW52YWxpZD1cXFwibGVmdFxcXCJdOjphZnRlciB7XFxuICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1pbnZhbGlkLWJnLWNvbG9yLCAjZTNlM2UzKTsgfVxcblxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gW2RhdGEtaW52YWxpZD1cXFwiY2VudGVyXFxcIl0ge1xcbiAgYmFja2dyb3VuZDogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItaW52YWxpZC1iZy1jb2xvciwgI2UzZTNlMyk7XFxuICBjb2xvcjogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItaW52YWxpZC1jb2xvciwgI2IyYjJiMik7IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gW2RhdGEtaW52YWxpZD1cXFwiY2VudGVyXFxcIl06OmJlZm9yZSwgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSBbZGF0YS1pbnZhbGlkPVxcXCJjZW50ZXJcXFwiXTo6YWZ0ZXIge1xcbiAgICBkaXNwbGF5OiBub25lO1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1pbnZhbGlkLWJnLWNvbG9yLCAjZTNlM2UzKTsgfVxcblxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gW2RhdGEtaW52YWxpZD1cXFwicmlnaHRcXFwiXSB7XFxuICBiYWNrZ3JvdW5kOiBub25lOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIFtkYXRhLWludmFsaWQ9XFxcInJpZ2h0XFxcIl06OmJlZm9yZSB7XFxuICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1pbnZhbGlkLWJnLWNvbG9yLCAjZTNlM2UzKTsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSBbZGF0YS1pbnZhbGlkPVxcXCJyaWdodFxcXCJdOjphZnRlciB7XFxuICAgIGRpc3BsYXk6IGJsb2NrOyB9XFxuXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuICBjZWxsIGhvdmVyIGRpcmVjdFxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19kaXJlY3RbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIFtkYXRhLWhvdmVyZWRdIHtcXG4gIGJhY2tncm91bmQ6IG5vbmU7IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19kaXJlY3RbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIFtkYXRhLWhvdmVyZWRdOjpiZWZvcmUge1xcbiAgICBkaXNwbGF5OiBibG9jazsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2RpcmVjdFtkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gW2RhdGEtaG92ZXJlZF06OmFmdGVyIHtcXG4gICAgZGlzcGxheTogYmxvY2s7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWhpZ2hsaWdodGVkLWJnLWNvbG9yLCAjYjdjYWZiKTsgfVxcblxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19kaXJlY3RbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIFtkYXRhLWhvdmVyZWQtb2Zmc2V0XSB7XFxuICBiYWNrZ3JvdW5kOiBub25lOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fZGlyZWN0W2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSBbZGF0YS1ob3ZlcmVkLW9mZnNldF06OmJlZm9yZSB7XFxuICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1oaWdobGlnaHRlZC1iZy1jb2xvciwgI2I3Y2FmYik7IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19kaXJlY3RbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIFtkYXRhLWhvdmVyZWQtb2Zmc2V0XTo6YWZ0ZXIge1xcbiAgICBkaXNwbGF5OiBibG9jazsgfVxcblxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiAgY2VsbCBob3ZlciByZXZlcnNlZFxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19yZXZlcnNlZFtkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gW2RhdGEtaG92ZXJlZF0ge1xcbiAgYmFja2dyb3VuZDogbm9uZTsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3JldmVyc2VkW2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSBbZGF0YS1ob3ZlcmVkXTo6YmVmb3JlIHtcXG4gICAgZGlzcGxheTogYmxvY2s7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWhpZ2hsaWdodGVkLWJnLWNvbG9yLCAjYjdjYWZiKTsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3JldmVyc2VkW2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSBbZGF0YS1ob3ZlcmVkXTo6YWZ0ZXIge1xcbiAgICBkaXNwbGF5OiBibG9jazsgfVxcblxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19yZXZlcnNlZFtkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gW2RhdGEtaG92ZXJlZC1vZmZzZXRdIHtcXG4gIGJhY2tncm91bmQ6IG5vbmU7IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19yZXZlcnNlZFtkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gW2RhdGEtaG92ZXJlZC1vZmZzZXRdOjpiZWZvcmUge1xcbiAgICBkaXNwbGF5OiBibG9jazsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3JldmVyc2VkW2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSBbZGF0YS1ob3ZlcmVkLW9mZnNldF06OmFmdGVyIHtcXG4gICAgZGlzcGxheTogYmxvY2s7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWhpZ2hsaWdodGVkLWJnLWNvbG9yLCAjYjdjYWZiKTsgfVxcblxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJiYXNpY1xcXCJdIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jZWxsOjpiZWZvcmUsIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJiYXNpY1xcXCJdIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jZWxsOjphZnRlciB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBkaXNwbGF5OiBibG9jaztcXG4gIHdpZHRoOiAxMDAlO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgdG9wOiAwO1xcbiAgbWFyZ2luOiAwO1xcbiAgY29udGVudDogJyc7XFxuICB6LWluZGV4OiAwOyB9XFxuXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuXFxuICAgIHNlbGVjdGlvbnMsIGxlZnQgLSBjZW50ZXIgLSByaWdodFxcblxcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiAgY2VsbHMgZGlzYWJsZWRcXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwiYmFzaWNcXFwiXSBbZGF0YS1kaXNhYmxlZD1cXFwiY2VudGVyXFxcIl0ge1xcbiAgdGV4dC1kZWNvcmF0aW9uOiBsaW5lLXRocm91Z2g7XFxuICBjb2xvcjogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItZGlzYWJsZWQtY29sb3IsICNiZmJmYmYpOyB9XFxuXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuICBjZWxscyBoaWdobGlnaHRlZFxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJiYXNpY1xcXCJdIFtkYXRhLWhpZ2hsaWdodGVkPVxcXCJsZWZ0XFxcIl0ge1xcbiAgY29sb3I6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWhpZ2hsaWdodGVkLWNvbG9yLCAjMzczNzM3KTsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcImJhc2ljXFxcIl0gW2RhdGEtaGlnaGxpZ2h0ZWQ9XFxcImxlZnRcXFwiXTo6YmVmb3JlIHtcXG4gICAgYmFja2dyb3VuZDogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItaGlnaGxpZ2h0ZWQtYmctY29sb3IsICNiN2NhZmIpO1xcbiAgICBvcGFjaXR5OiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1jZWxsLWJnLW9wYWNpdHksIDAuNSk7XFxuICAgIHdpZHRoOiA1MCU7XFxuICAgIGxlZnQ6IDUwJTsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcImJhc2ljXFxcIl0gW2RhdGEtaGlnaGxpZ2h0ZWQ9XFxcImxlZnRcXFwiXTo6YWZ0ZXIge1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1oaWdobGlnaHRlZC1iZy1jb2xvciwgI2I3Y2FmYik7XFxuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWNlbGwtYm9yZGVyLXJhZGl1cywgNnB4KTsgfVxcblxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJiYXNpY1xcXCJdIFtkYXRhLWhpZ2hsaWdodGVkPVxcXCJjZW50ZXJcXFwiXSB7XFxuICBjb2xvcjogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItaGlnaGxpZ2h0ZWQtY29sb3IsICMzNzM3MzcpOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwiYmFzaWNcXFwiXSBbZGF0YS1oaWdobGlnaHRlZD1cXFwiY2VudGVyXFxcIl06OmJlZm9yZSB7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWhpZ2hsaWdodGVkLWJnLWNvbG9yLCAjYjdjYWZiKTtcXG4gICAgb3BhY2l0eTogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItY2VsbC1iZy1vcGFjaXR5LCAwLjUpOyB9XFxuXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcImJhc2ljXFxcIl0gW2RhdGEtaGlnaGxpZ2h0ZWQ9XFxcInJpZ2h0XFxcIl0ge1xcbiAgY29sb3I6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWhpZ2hsaWdodGVkLWNvbG9yLCAjMzczNzM3KTsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcImJhc2ljXFxcIl0gW2RhdGEtaGlnaGxpZ2h0ZWQ9XFxcInJpZ2h0XFxcIl06OmJlZm9yZSB7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWhpZ2hsaWdodGVkLWJnLWNvbG9yLCAjYjdjYWZiKTtcXG4gICAgb3BhY2l0eTogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItY2VsbC1iZy1vcGFjaXR5LCAwLjUpO1xcbiAgICB3aWR0aDogNTAlO1xcbiAgICByaWdodDogNTAlOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwiYmFzaWNcXFwiXSBbZGF0YS1oaWdobGlnaHRlZD1cXFwicmlnaHRcXFwiXTo6YWZ0ZXIge1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1oaWdobGlnaHRlZC1iZy1jb2xvciwgI2I3Y2FmYik7XFxuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWNlbGwtYm9yZGVyLXJhZGl1cywgNnB4KTsgfVxcblxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiAgY2VsbHMgaW52YWxpZFxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJiYXNpY1xcXCJdIFtkYXRhLWludmFsaWQ9XFxcImxlZnRcXFwiXSB7XFxuICBjb2xvcjogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItaW52YWxpZC1jb2xvciwgI2IyYjJiMik7IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJiYXNpY1xcXCJdIFtkYXRhLWludmFsaWQ9XFxcImxlZnRcXFwiXTo6YmVmb3JlIHtcXG4gICAgYmFja2dyb3VuZDogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItaW52YWxpZC1iZy1jb2xvciwgI2UzZTNlMyk7XFxuICAgIG9wYWNpdHk6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWNlbGwtYmctb3BhY2l0eSwgMC41KTtcXG4gICAgd2lkdGg6IDUwJTtcXG4gICAgbGVmdDogNTAlOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwiYmFzaWNcXFwiXSBbZGF0YS1pbnZhbGlkPVxcXCJsZWZ0XFxcIl06OmFmdGVyIHtcXG4gICAgYmFja2dyb3VuZDogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItaW52YWxpZC1iZy1jb2xvciwgI2UzZTNlMyk7XFxuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWNlbGwtYm9yZGVyLXJhZGl1cywgNnB4KTsgfVxcblxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJiYXNpY1xcXCJdIFtkYXRhLWludmFsaWQ9XFxcImNlbnRlclxcXCJdIHtcXG4gIGNvbG9yOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1pbnZhbGlkLWNvbG9yLCAjYjJiMmIyKTsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcImJhc2ljXFxcIl0gW2RhdGEtaW52YWxpZD1cXFwiY2VudGVyXFxcIl06OmJlZm9yZSB7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWludmFsaWQtYmctY29sb3IsICNlM2UzZTMpO1xcbiAgICBvcGFjaXR5OiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1jZWxsLWJnLW9wYWNpdHksIDAuNSk7IH1cXG5cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwiYmFzaWNcXFwiXSBbZGF0YS1pbnZhbGlkPVxcXCJyaWdodFxcXCJdIHtcXG4gIGNvbG9yOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1pbnZhbGlkLWNvbG9yLCAjYjJiMmIyKTsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcImJhc2ljXFxcIl0gW2RhdGEtaW52YWxpZD1cXFwicmlnaHRcXFwiXTo6YmVmb3JlIHtcXG4gICAgYmFja2dyb3VuZDogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItaW52YWxpZC1iZy1jb2xvciwgI2UzZTNlMyk7XFxuICAgIG9wYWNpdHk6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWNlbGwtYmctb3BhY2l0eSwgMC41KTtcXG4gICAgd2lkdGg6IDUwJTtcXG4gICAgcmlnaHQ6IDUwJTsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcImJhc2ljXFxcIl0gW2RhdGEtaW52YWxpZD1cXFwicmlnaHRcXFwiXTo6YWZ0ZXIge1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1pbnZhbGlkLWJnLWNvbG9yLCAjZTNlM2UzKTtcXG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItY2VsbC1ib3JkZXItcmFkaXVzLCA2cHgpOyB9XFxuXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuICBjZWxsIGhvdmVyXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcImJhc2ljXFxcIl0gW2RhdGEtaG92ZXJlZF06bm90KFtkYXRhLWRpc2FibGVkPVxcXCJjZW50ZXJcXFwiXSkge1xcbiAgY29sb3I6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWhpZ2hsaWdodGVkLWNvbG9yLCAjMzczNzM3KTsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcImJhc2ljXFxcIl0gW2RhdGEtaG92ZXJlZF06bm90KFtkYXRhLWRpc2FibGVkPVxcXCJjZW50ZXJcXFwiXSk6OmFmdGVyIHtcXG4gICAgYmFja2dyb3VuZDogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItaGlnaGxpZ2h0ZWQtYmctY29sb3IsICNiN2NhZmIpO1xcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1jZWxsLWJvcmRlci1yYWRpdXMsIDZweCk7IH1cXG5cXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG5cXG4gICAgY29sb3JzXFxuXFxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGZvbnQ6IDFyZW0vMS40IEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBiYWNrZ3JvdW5kOiAjZmZmOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhcHRpb24ge1xcbiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gICAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIC13ZWJraXQtYm94LXBhY2s6IGNlbnRlcjtcXG4gICAgLW1zLWZsZXgtcGFjazogY2VudGVyO1xcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcXG4gICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgbGluZS1oZWlnaHQ6IDJyZW07XFxuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XFxuICAgIG1hcmdpbi1ib3R0b206IDIuM2VtO1xcbiAgICBwYWRkaW5nLXRvcDogMDtcXG4gICAgdGV4dC1hbGlnbjogY2VudGVyOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3Rvb2x0aXAge1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci10b29sdGlwLWJnLWNvbG9yLCAjMzMzKTtcXG4gICAgY29sb3I6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLXRvb2x0aXAtY29sb3IsICNmZmYpO1xcbiAgICBmb250LXdlaWdodDogYm9sZDtcXG4gICAgcGFkZGluZzogNHB4IDhweDtcXG4gICAgZm9udC1zaXplOiAxM3B4O1xcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XFxuICAgIHotaW5kZXg6IDUwMDtcXG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7IH1cXG4gICAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X190b29sdGlwIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X190b29sdGlwQXJyb3cge1xcbiAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsgfVxcbiAgICAgIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fdG9vbHRpcCAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fdG9vbHRpcEFycm93LCAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3Rvb2x0aXAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3Rvb2x0aXBBcnJvdzo6YmVmb3JlIHtcXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgICAgIHdpZHRoOiA4cHg7XFxuICAgICAgICBoZWlnaHQ6IDhweDtcXG4gICAgICAgIGJhY2tncm91bmQ6IGluaGVyaXQ7IH1cXG4gICAgICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3Rvb2x0aXAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3Rvb2x0aXBBcnJvdzo6YmVmb3JlIHtcXG4gICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XFxuICAgICAgICBjb250ZW50OiAnJztcXG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTsgfVxcbiAgICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3Rvb2x0aXBbZGF0YS1wb3BwZXItcGxhY2VtZW50Xj0ndG9wJ10gPiAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fdG9vbHRpcEFycm93IHtcXG4gICAgICBib3R0b206IC00cHg7IH1cXG4gICAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X190b29sdGlwW2RhdGEtcG9wcGVyLXBsYWNlbWVudF49J2JvdHRvbSddID4gLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3Rvb2x0aXBBcnJvdyB7XFxuICAgICAgdG9wOiAtNHB4OyB9XFxuICAgIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fdG9vbHRpcFtkYXRhLXBvcHBlci1wbGFjZW1lbnRePSdsZWZ0J10gPiAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fdG9vbHRpcEFycm93IHtcXG4gICAgICByaWdodDogLTRweDsgfVxcbiAgICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3Rvb2x0aXBbZGF0YS1wb3BwZXItcGxhY2VtZW50Xj0ncmlnaHQnXSA+IC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X190b29sdGlwQXJyb3cge1xcbiAgICAgIGxlZnQ6IC00cHg7IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fbW9udGhzV3JhcHBlciB7XFxuICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgLW1zLWZsZXgtd3JhcDogd3JhcDtcXG4gICAgZmxleC13cmFwOiB3cmFwO1xcbiAgICBnYXA6IDJlbTsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19tQ2VsbCB7XFxuICAgIGZvbnQtc2l6ZTogMC44NzVlbTtcXG4gICAgLXdlYmtpdC1ib3gtZmxleDogMTtcXG4gICAgLW1zLWZsZXg6IDEgMSAyNSU7XFxuICAgIGZsZXg6IDEgMSAyNSU7IH1cXG4gICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA5OTBweCkge1xcbiAgICAgIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fbUNlbGwge1xcbiAgICAgICAgLXdlYmtpdC1ib3gtZmxleDogMTtcXG4gICAgICAgIC1tcy1mbGV4OiAxIDEgMTAwJTtcXG4gICAgICAgIGZsZXg6IDEgMSAxMDAlOyB9IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fbW9udGgge1xcbiAgICBib3JkZXItY29sbGFwc2U6IHNlcGFyYXRlO1xcbiAgICBib3JkZXItc3BhY2luZzogMCAwLjJlbTtcXG4gICAgcGFkZGluZzogMDtcXG4gICAgbWFyZ2luOiAwO1xcbiAgICB3aWR0aDogMTAwJTsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X190YWJsZUhlYWRlcixcXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fYm9keSB7XFxuICAgIG1hcmdpbjogMDsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X190aCB7XFxuICAgIGZvbnQtc2l6ZTogMC44NWVtO1xcbiAgICBjb2xvcjogI2FhYWFhYTtcXG4gICAgaGVpZ2h0OiAyNXB4O1xcbiAgICB3aWR0aDogMzBweDtcXG4gICAgdGV4dC1hbGlnbjogY2VudGVyOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NlbGwge1xcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICAgIHBhZGRpbmc6IDA7XFxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gICAgYm9yZGVyOiAwO1xcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xcbiAgICBjb2xvcjogIzQ0NDQ0NDtcXG4gICAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gICAgd2lkdGg6IDMwcHg7IH1cXG4gICAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jZWxsLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3RvZGF5IHtcXG4gICAgICBmb250LXdlaWdodDogYm9sZDsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jbnQge1xcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyO1xcbiAgICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7XFxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyO1xcbiAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyO1xcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICB6LWluZGV4OiAxO1xcbiAgICBmb250LXNpemU6IDFlbTtcXG4gICAgZm9udC13ZWlnaHQ6IGluaGVyaXQ7IH1cXG4gICAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jbnQ6OmFmdGVyIHtcXG4gICAgICBjb250ZW50OiAnJztcXG4gICAgICBkaXNwbGF5OiBibG9jaztcXG4gICAgICBtYXJnaW4tdG9wOiAxMDAlOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2luZm8ge1xcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgIGJvdHRvbTogMDtcXG4gICAgbGVmdDogMDtcXG4gICAgZm9udC1zaXplOiAwLjY1ZW07XFxuICAgIHBhZGRpbmc6IDFweCAzcHg7XFxuICAgIGNvbG9yOiByZ2JhKDYwLCA2MCwgNjAsIDAuNSk7XFxuICAgIHJpZ2h0OiAwOyB9XFxuICAgIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9faW5mbyA+IHNwYW4ge1xcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsgfVxcblxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19mb2N1cyxcXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fZGlzYWJsZWQsXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3NlbGVjdGVkLFxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19yZXZlcnNlZCxcXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fZGlyZWN0LFxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19zZWxlY3RpbmdSZXZlcnNlZCxcXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fc2VsZWN0aW5nRGlyZWN0LFxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19hY3Rpb25zRW5hYmxlZCxcXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9faGlnaGxpZ2h0ZWQsXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2ludmFsaWQge1xcbiAgY29sb3I6IGluaGVyaXQ7IH1cXG5cXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4gIGNlbGwgaG92ZXIgY3Vyc29yc1xcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXNlbGVjdGFibGU9XFxcInRydWVcXFwiXSAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2VsbCAqIHtcXG4gIGN1cnNvcjogcG9pbnRlcjsgfVxcblxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcblxcbiAgICBidXR0b25zXFxuXFxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19mb3J3YXJkLFxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fYmFjayB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IDA7XFxuICBsZWZ0OiAwO1xcbiAgaGVpZ2h0OiAycmVtO1xcbiAgd2lkdGg6IDIzcHg7XFxuICBmaWxsOiAjNDQ0NDQ0O1xcbiAgcGFkZGluZzogMDtcXG4gIGJvcmRlci1yYWRpdXM6IDFweDtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG4gIHotaW5kZXg6IDI7IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fZm9yd2FyZCBzdmcsXFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2JhY2sgc3ZnIHtcXG4gICAgaGVpZ2h0OiBpbmhlcml0O1xcbiAgICB3aWR0aDogaW5oZXJpdDsgfVxcblxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fZm9yd2FyZCB7XFxuICByaWdodDogMDtcXG4gIGxlZnQ6IGF1dG87IH1cXG5cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2ZvcndhcmQ6YWN0aXZlLFxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fZm9yd2FyZDpmb2N1cyxcXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2JhY2s6YWN0aXZlLFxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fYmFjazpmb2N1cyB7XFxuICBvdXRsaW5lOiBub25lOyB9XFxuXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19mb3J3YXJkOmhvdmVyLFxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fYmFjazpob3ZlciB7XFxuICBmaWxsOiAjMzg5NWQ5OyB9XFxuXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19mb3J3YXJkW2Rpc2FibGVkXSxcXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2ZvcndhcmRbZGlzYWJsZWRdOmhvdmVyLFxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fYmFja1tkaXNhYmxlZF0sXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19iYWNrW2Rpc2FibGVkXTpob3ZlciB7XFxuICBvcGFjaXR5OiAwLjU7XFxuICBjdXJzb3I6IGRlZmF1bHQ7XFxuICBmaWxsOiAjNDQ0NDQ0OyB9XFxuXCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vc3JjL3N0eWxlcy9sb2FkaW5nLnNjc3NcIixcIndlYnBhY2s6Ly8uL3NyYy9zdHlsZXMvY2FsZW5kYXIuc2Nzc1wiLFwid2VicGFjazovLy4vc3JjL3N0eWxlcy9zdmctdXJpLnNjc3NcIixcIndlYnBhY2s6Ly8uL3NyYy9zdHlsZXMvX3ZhcmlhYmxlcy5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9zcmMvc3R5bGVzL2Ryb3Auc2Nzc1wiLFwid2VicGFjazovLy4vc3JjL3N0eWxlcy90aGVtZS1za2V3LnNjc3NcIixcIndlYnBhY2s6Ly8uL3NyYy9zdHlsZXMvdGhlbWUtYmFzaWMuc2Nzc1wiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFBQTs7Ozt3RENJd0Q7QURFeEQ7RUFDRTtJQUNFLCtCQUErQjtJQUMvQix1QkFB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REFtUXdEO0FBOVB4RDs7RUFJSSxrQkFBa0I7RUFDbEIsTUFBTTtFQUNOLE9BQU87RUFDUCxZQUFZO0VBQ1osV0FBVztFQUNYLGFFck0yQjtFRnNNM0IsVUFBVTtFQUNWLGtCQUFrQjtFQUNsQixlQUFlO0VBQ2YsVUFBVSxFQUFBO0VBYmQ7O0lBZ0JJLGVBQWU7SUFDZixjQUFjLEVBQUE7O0FBakJsQjtFQXNCSSxRQUFRO0VBQ1IsVUFBVSxFQUFBOztBQXZCZDs7OztFQThCSSxhQUFhLEVBQUE7O0FBOUJqQjs7RUFtQ0ksYUV6TTJCLEVBQUE7O0FGc0svQjs7OztFQTBDSSxZQUFZO0VBQ1osZUFBZTtFQUNmLGFFeE8yQixFQUFBXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcblxcbiAgICBsb2FkZXJcXG5cXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG5cXG5ALXdlYmtpdC1rZXlmcmFtZXMgYm9va2luZ3N5bmMtc3BpbiB7XFxuICBmcm9tIHtcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XFxuICB9XFxuXFxuICB0byB7XFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcXG4gIH1cXG59XFxuXFxuQGtleWZyYW1lcyBib29raW5nc3luYy1zcGluIHtcXG4gIGZyb20ge1xcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcXG4gIH1cXG4gIHRvIHtcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xcbiAgfVxcbn1cXG5cXG4uY2FsZW5kYXIge1xcbiAgJjo6YmVmb3JlIHtcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICB0b3A6IDA7XFxuICAgIGxlZnQ6IDA7XFxuICAgIHdpZHRoOiAxMDAlO1xcbiAgICBoZWlnaHQ6IDEwMCU7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoI2ZmZiwgLjcpO1xcbiAgICBjb250ZW50OiAnJztcXG4gIH1cXG5cXG4gICY6OmFmdGVyIHtcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICB0b3A6IDUwJTtcXG4gICAgbGVmdDogNTAlO1xcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDEwMCU7XFxuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtcXG4gICAgYmFja2dyb3VuZC1pbWFnZTogJGljb24tc3Bpbm5lci1zdmc7XFxuICAgIGhlaWdodDogMjBweDtcXG4gICAgd2lkdGg6IDIwcHg7XFxuICAgIG1hcmdpbjogLTEwcHggMCAwIC0xMHB4O1xcbiAgICBjb250ZW50OiAnJztcXG4gICAgLXdlYmtpdC1hbmltYXRpb246IGJvb2tpbmdzeW5jLXNwaW4gMnMgaW5maW5pdGUgbGluZWFyO1xcbiAgICBhbmltYXRpb246IGJvb2tpbmdzeW5jLXNwaW4gMnMgaW5maW5pdGUgbGluZWFyO1xcbiAgICBhbmltYXRpb24tcGxheS1zdGF0ZTogcGF1c2VkO1xcbiAgfVxcblxcbiAgJjo6YmVmb3JlLFxcbiAgJjo6YWZ0ZXIge1xcbiAgICB6LWluZGV4OiAxMDAwO1xcbiAgICBvcGFjaXR5OiAwO1xcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XFxuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogJHRyYW5zaXRpb247XFxuICAgIC1vLXRyYW5zaXRpb246ICR0cmFuc2l0aW9uO1xcbiAgICB0cmFuc2l0aW9uOiAkdHJhbnNpdGlvbjtcXG4gIH1cXG5cXG4gICYubG9hZGluZyB7XFxuICAgICY6OmJlZm9yZSxcXG4gICAgJjo6YWZ0ZXIge1xcbiAgICAgIG9wYWNpdHk6IDE7XFxuICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcXG4gICAgICBhbmltYXRpb24tcGxheS1zdGF0ZTogcnVubmluZztcXG4gICAgfVxcbiAgfVxcbn1cXG5cIixcIkBpbXBvcnQgJ3N2Zy11cmknO1xcbkBpbXBvcnQgJ3ZhcmlhYmxlcyc7XFxuQGltcG9ydCAnbG9hZGluZyc7XFxuQGltcG9ydCAnZHJvcCc7XFxuQGltcG9ydCAndGhlbWUtc2tldyc7XFxuQGltcG9ydCAndGhlbWUtYmFzaWMnO1xcblxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcblxcbiAgICBjb2xvcnNcXG5cXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG5cXG4uY2FsZW5kYXIge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgZm9udDogMXJlbS8xLjQgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGJhY2tncm91bmQ6ICRjYWxlbmRhci1iZy1jb2xvcjtcXG5cXG4gIC5jYXB0aW9uIHtcXG4gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAtd2Via2l0LWJveC1wYWNrOiBjZW50ZXI7XFxuICAgIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjtcXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7XFxuICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7XFxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgIGxpbmUtaGVpZ2h0OiAycmVtO1xcbiAgICBmb250LXdlaWdodDogNzAwO1xcbiAgICBtYXJnaW4tYm90dG9tOiAyLjNlbTtcXG4gICAgcGFkZGluZy10b3A6IDA7XFxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gIH1cXG5cXG4gIC50b29sdGlwIHtcXG4gICAgYmFja2dyb3VuZDogJHRvb2x0aXAtYmctY29sb3I7XFxuICAgIGNvbG9yOiAkdG9vbHRpcC1jb2xvcjtcXG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XFxuICAgIHBhZGRpbmc6IDRweCA4cHg7XFxuICAgIGZvbnQtc2l6ZTogMTNweDtcXG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xcbiAgICB6LWluZGV4OiA1MDA7XFxuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xcblxcbiAgICAudG9vbHRpcEFycm93IHtcXG4gICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XFxuXFxuICAgICAgJiwgJjo6YmVmb3JlIHtcXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgICAgIHdpZHRoOiA4cHg7XFxuICAgICAgICBoZWlnaHQ6IDhweDtcXG4gICAgICAgIGJhY2tncm91bmQ6IGluaGVyaXQ7XFxuICAgICAgfVxcblxcbiAgICAgICY6OmJlZm9yZSB7XFxuICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xcbiAgICAgICAgY29udGVudDogJyc7XFxuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XFxuICAgICAgfVxcbiAgICB9XFxuXFxuICAgICZbZGF0YS1wb3BwZXItcGxhY2VtZW50Xj0ndG9wJ10gPiAudG9vbHRpcEFycm93IHtcXG4gICAgICBib3R0b206IC00cHg7XFxuICAgIH1cXG4gICAgXFxuICAgICZbZGF0YS1wb3BwZXItcGxhY2VtZW50Xj0nYm90dG9tJ10gPiAudG9vbHRpcEFycm93IHtcXG4gICAgICB0b3A6IC00cHg7XFxuICAgIH1cXG4gICAgXFxuICAgICZbZGF0YS1wb3BwZXItcGxhY2VtZW50Xj0nbGVmdCddID4gLnRvb2x0aXBBcnJvdyB7XFxuICAgICAgcmlnaHQ6IC00cHg7XFxuICAgIH1cXG4gICAgXFxuICAgICZbZGF0YS1wb3BwZXItcGxhY2VtZW50Xj0ncmlnaHQnXSA+IC50b29sdGlwQXJyb3cge1xcbiAgICAgIGxlZnQ6IC00cHg7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5tb250aHNXcmFwcGVyIHtcXG4gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAtbXMtZmxleC13cmFwOiB3cmFwO1xcbiAgICBmbGV4LXdyYXA6IHdyYXA7XFxuICAgIGdhcDogMmVtO1xcbiAgfVxcblxcbiAgLm1DZWxsIHtcXG4gICAgZm9udC1zaXplOiAwLjg3NWVtO1xcbiAgICAtd2Via2l0LWJveC1mbGV4OiAxO1xcbiAgICAtbXMtZmxleDogMSAxIDI1JTtcXG4gICAgZmxleDogMSAxIDI1JTtcXG5cXG4gICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA5OTBweCkge1xcbiAgICAgIC13ZWJraXQtYm94LWZsZXg6IDE7XFxuICAgICAgLW1zLWZsZXg6IDEgMSAxMDAlO1xcbiAgICAgIGZsZXg6IDEgMSAxMDAlO1xcbiAgICB9XFxuICB9XFxuXFxuICAubW9udGgge1xcbiAgICBib3JkZXItY29sbGFwc2U6IHNlcGFyYXRlO1xcbiAgICBib3JkZXItc3BhY2luZzogMCAwLjJlbTtcXG4gICAgcGFkZGluZzogMDtcXG4gICAgbWFyZ2luOiAwO1xcbiAgICB3aWR0aDogMTAwJTtcXG4gICAgXFxuICB9XFxuXFxuICAudGFibGVIZWFkZXIsXFxuICAuYm9keSB7XFxuICAgIG1hcmdpbjogMDtcXG4gIH1cXG5cXG4gIC50aCB7XFxuICAgIGZvbnQtc2l6ZTogMC44NWVtO1xcbiAgICBjb2xvcjogJHRoLWNvbG9yO1xcbiAgICBoZWlnaHQ6IDI1cHg7XFxuICAgIHdpZHRoOiAkY2VsbC13aWR0aDtcXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgfVxcblxcbiAgLmNlbGwge1xcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICAgIHBhZGRpbmc6IDA7XFxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gICAgYm9yZGVyOiAwO1xcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xcbiAgICBjb2xvcjogJGNlbGwtY29sb3I7XFxuICAgIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7XFxuICAgIG92ZXJmbG93OiBoaWRkZW47XFxuICAgIHdpZHRoOiAkY2VsbC13aWR0aDtcXG5cXG4gICAgJi50b2RheSB7XFxuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5jbnQge1xcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyO1xcbiAgICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7XFxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyO1xcbiAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyO1xcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICB6LWluZGV4OiAxO1xcbiAgICBmb250LXNpemU6IDFlbTtcXG4gICAgZm9udC13ZWlnaHQ6IGluaGVyaXQ7XFxuXFxuICAgICY6OmFmdGVyIHtcXG4gICAgY29udGVudDogJyc7XFxuICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICBtYXJnaW4tdG9wOiAxMDAlO1xcbiAgICB9XFxuICB9XFxuXFxuICAuaW5mbyB7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgYm90dG9tOiAwO1xcbiAgICBsZWZ0OiAwO1xcbiAgICBmb250LXNpemU6IDAuNjVlbTtcXG4gICAgcGFkZGluZzogMXB4IDNweDtcXG4gICAgY29sb3I6ICRpbmZvLWNvbG9yO1xcbiAgICByaWdodDogMDtcXG5cXG4gICAgPiBzcGFuIHtcXG4gICAgICBkaXNwbGF5OiBibG9jaztcXG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICAgIH1cXG4gIH1cXG59XFxuXFxuLmZvY3VzLFxcbi5kaXNhYmxlZCxcXG4uc2VsZWN0ZWQsXFxuLnJldmVyc2VkLFxcbi5kaXJlY3QsXFxuLnNlbGVjdGluZ1JldmVyc2VkLFxcbi5zZWxlY3RpbmdEaXJlY3QsXFxuLmFjdGlvbnNFbmFibGVkLFxcbi5oaWdobGlnaHRlZCxcXG4uaW52YWxpZCB7XFxuICBjb2xvcjogaW5oZXJpdDtcXG59XFxuXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuICBjZWxsIGhvdmVyIGN1cnNvcnNcXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG5cXG4uY2FsZW5kYXIge1xcbiAgLy8gY3Vyc29yIHBvaW50ZXIgaWYgY2FsZW5kYXIgaXMgc2VsZWN0YWJsZVxcbiAgJltkYXRhLXNlbGVjdGFibGU9XFxcInRydWVcXFwiXSAuY2VsbCAqIHtcXG4gICAgY3Vyc29yOiBwb2ludGVyO1xcbiAgfVxcbn1cXG5cXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG5cXG4gICAgYnV0dG9uc1xcblxcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi5jYWxlbmRhciB7XFxuXFxuICAuZm9yd2FyZCxcXG4gIC5iYWNrIHtcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICB0b3A6IDA7XFxuICAgIGxlZnQ6IDA7XFxuICAgIGhlaWdodDogMnJlbTtcXG4gICAgd2lkdGg6IDIzcHg7XFxuICAgIGZpbGw6ICRidG4tZmlsbDtcXG4gICAgcGFkZGluZzogMDtcXG4gICAgYm9yZGVyLXJhZGl1czogMXB4O1xcbiAgICBjdXJzb3I6IHBvaW50ZXI7XFxuICAgIHotaW5kZXg6IDI7XFxuXFxuICAgIHN2ZyB7XFxuICAgIGhlaWdodDogaW5oZXJpdDtcXG4gICAgd2lkdGg6IGluaGVyaXQ7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5mb3J3YXJkIHtcXG4gICAgcmlnaHQ6IDA7XFxuICAgIGxlZnQ6IGF1dG87XFxuICB9XFxuXFxuICAuZm9yd2FyZDphY3RpdmUsXFxuICAuZm9yd2FyZDpmb2N1cyxcXG4gIC5iYWNrOmFjdGl2ZSxcXG4gIC5iYWNrOmZvY3VzIHtcXG4gICAgb3V0bGluZTogbm9uZTtcXG4gIH1cXG5cXG4gIC5mb3J3YXJkOmhvdmVyLFxcbiAgLmJhY2s6aG92ZXIge1xcbiAgICBmaWxsOiAkYnRuLWZpbGwtaG92ZXI7XFxuICB9XFxuXFxuICAuZm9yd2FyZFtkaXNhYmxlZF0sXFxuICAuZm9yd2FyZFtkaXNhYmxlZF06aG92ZXIsXFxuICAuYmFja1tkaXNhYmxlZF0sXFxuICAuYmFja1tkaXNhYmxlZF06aG92ZXIge1xcbiAgICBvcGFjaXR5OiAwLjU7XFxuICAgIGN1cnNvcjogZGVmYXVsdDtcXG4gICAgZmlsbDogJGJ0bi1maWxsO1xcbiAgfVxcbn1cXG5cIixcIi8vLy9cXG4vLy8gSGVscGVyIGZ1bmN0aW9uIHRvIGVhc2lseSB1c2UgYW4gU1ZHIGlubGluZSBpbiBDU1NcXG4vLy8gd2l0aG91dCBlbmNvZGluZyBpdCB0byBiYXNlNjQsIHNhdmluZyBieXRlcy5cXG4vLy8gSXQgYWxzbyBoZWxwcyB3aXRoIGJyb3dzZXIgc3VwcG9ydC5cXG4vLy8vXFxuXFxuLy8vIEEgc21hbGwgZnVuY3Rpb24gYWxsb3dpbmcgc2tpcHBpbmcgYmFzZTY0IGVuY29kaW5nXFxuLy8vIGFuZCBzaW1wbHkgcGFzdGluZyB0aGUgU1ZHIG1hcmt1cCByaWdodCBpbiB0aGUgQ1NTLlxcbi8vLyBAYXV0aG9yIEpha29iIEVyaWtzZW5cXG4vLy8gQGxpbmsgaHR0cDovL2NvZGVwZW4uaW8vamFrb2ItZS9wZW4vZG9Nb01MXFxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkc3ZnIC0gU1ZHIGltYWdlIHRvIGVuY29kZVxcbi8vLyBAcmV0dXJuIHtTdHJpbmd9IC0gRW5jb2RlZCBTVkcgZGF0YSB1cmlcXG5AZnVuY3Rpb24gc3ZnLXVyaSgkc3ZnKSB7XFxuICAgICRlbmNvZGVkOiAnJztcXG4gICAgJHNsaWNlOiAyMDAwO1xcbiAgICAkaW5kZXg6IDA7XFxuICAgICRsb29wczogY2VpbChzdHItbGVuZ3RoKCRzdmcpIC8gJHNsaWNlKTtcXG5cXG4gICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkbG9vcHMge1xcbiAgICAgICAgJGNodW5rOiBzdHItc2xpY2UoJHN2ZywgJGluZGV4LCAkaW5kZXggKyAkc2xpY2UgLSAxKTtcXG4gICAgICAgICRjaHVuazogc3RyLXJlcGxhY2UoJGNodW5rLCAnXFxcIicsIFxcXCInXFxcIik7XFxuICAgICAgICAkY2h1bms6IHN0ci1yZXBsYWNlKCRjaHVuaywgJzwnLCAnJTNDJyk7XFxuICAgICAgICAkY2h1bms6IHN0ci1yZXBsYWNlKCRjaHVuaywgJz4nLCAnJTNFJyk7XFxuICAgICAgICAkY2h1bms6IHN0ci1yZXBsYWNlKCRjaHVuaywgJyYnLCAnJTI2Jyk7XFxuICAgICAgICAkY2h1bms6IHN0ci1yZXBsYWNlKCRjaHVuaywgJyMnLCAnJTIzJyk7XFxuICAgICAgICAkZW5jb2RlZDogI3skZW5jb2RlZH0jeyRjaHVua307XFxuICAgICAgICAkaW5kZXg6ICRpbmRleCArICRzbGljZTtcXG4gICAgfVxcblxcbiAgICBAcmV0dXJuIHVybChcXFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwjeyRlbmNvZGVkfVxcXCIpO1xcbn1cXG5cXG4vLy8gUmVwbGFjZSBgJHNlYXJjaGAgd2l0aCBgJHJlcGxhY2VgIGluIGAkc3RyaW5nYFxcbi8vLyBAYXV0aG9yIEh1Z28gR2lyYXVkZWxcXG4vLy8gQGxpbmsgaHR0cDovL3Nhc3NtZWlzdGVyLmNvbS9naXN0LzFiNGYyZGE1NTI3ODMwMDg4ZTRkXFxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkc3RyaW5nIC0gSW5pdGlhbCBzdHJpbmdcXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRzZWFyY2ggLSBTdWJzdHJpbmcgdG8gcmVwbGFjZVxcbi8vLyBAcGFyYW0ge1N0cmluZ30gJHJlcGxhY2UgKCcnKSAtIE5ldyB2YWx1ZVxcbi8vLyBAcmV0dXJuIHtTdHJpbmd9IC0gVXBkYXRlZCBzdHJpbmdcXG5AZnVuY3Rpb24gc3RyLXJlcGxhY2UoJHN0cmluZywgJHNlYXJjaCwgJHJlcGxhY2U6ICcnKSB7XFxuICAgICRpbmRleDogc3RyLWluZGV4KCRzdHJpbmcsICRzZWFyY2gpO1xcblxcbiAgICBAaWYgJGluZGV4IHtcXG4gICAgICAgIEByZXR1cm4gc3RyLXNsaWNlKCRzdHJpbmcsIDEsICRpbmRleCAtIDEpICsgJHJlcGxhY2UgKyBzdHItcmVwbGFjZShzdHItc2xpY2UoJHN0cmluZywgJGluZGV4ICsgc3RyLWxlbmd0aCgkc2VhcmNoKSksICRzZWFyY2gsICRyZXBsYWNlKTtcXG4gICAgfVxcblxcbiAgICBAcmV0dXJuICRzdHJpbmc7XFxufVxcblwiLFwiJGljb24tc3Bpbm5lci1zdmc6ICAgICAgc3ZnLXVyaShcXFwiPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAzMiAzMC45Nyc+PHBhdGggZD0nTTMyLDE1LjQ4YTE2LjUyLDE2LjUyLDAsMCwxLTEuMzcsNi4yOCwxNi4zNSwxNi4zNSwwLDAsMS05LDguNjMsMTUuODcsMTUuODcsMCwwLDEtMTcuMy0zLjc4QTE1LjQzLDE1LjQzLDAsMCwxLDQuNzIsNC43MiwxNSwxNSwwLDAsMSwxNS40OS41MmExNC43NiwxNC43NiwwLDAsMSwxMC40LDQuNTZBMTQuNzcsMTQuNzcsMCwwLDEsMjksOS45YTE0LjQ1LDE0LjQ1LDAsMCwxLC44NSwzLjM1aC4xM0EyLjA2LDIuMDYsMCwwLDEsMzIsMTUuMzFhLjkxLjkxLDAsMCwxLDAsLjE3Wk0yOC43MiwxMGExNC4yNywxNC4yNywwLDAsMC0zLjItNC41NSwxNCwxNCwwLDAsMC0xMC0zLjlBMTMuNzIsMTMuNzIsMCwwLDAsMywxMC4zYTEzLjQzLDEzLjQzLDAsMCwwLC4yNCwxMC4yNywxMy4wNSwxMy4wNSwwLDAsMCwxMi4yOCw3LjgyLDEyLjkyLDEyLjkyLDAsMCwwLDQuODgtMS4xLDEyLjY1LDEyLjY1LDAsMCwwLDQuMDYtMi44NywxMi40OCwxMi40OCwwLDAsMCwyLjYyLTQuMTUsMTIuMjQsMTIuMjQsMCwwLDAsLjgyLTQuNzloMGEuOTEuOTEsMCwwLDEsMC0uMTcsMi4wNywyLjA3LDAsMCwxLDEuODQtMi4wNSwxNC4yNywxNC4yNywwLDAsMC0xLTMuMjZaJyB0cmFuc2Zvcm09J3RyYW5zbGF0ZSgwIC0wLjUxKScvPjwvc3ZnPlxcXCIpO1xcblxcbiRicmVha3BvaW50LXhzOiAgICAgICAgIDkwMHB4O1xcblxcbiR0cmFuc2l0aW9uOiAgICAgICAgICAgIG9wYWNpdHkgMC4yNXMgZWFzZS1pbi1vdXQ7XFxuXFxuLy8gdG9vbHRpcFxcblxcbiR0b29sdGlwLWJnLWNvbG9yOiAgICAgIHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLXRvb2x0aXAtYmctY29sb3IsICMzMzMpO1xcbiR0b29sdGlwLWNvbG9yOiAgICAgICAgIHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLXRvb2x0aXAtY29sb3IsICNmZmYpO1xcblxcbi8vIGNhbGVuZGFyXFxuXFxuJGNhbGVuZGFyLWJnLWNvbG9yOiAgICAgI2ZmZjtcXG5cXG4vLyBjYWxlbmRhciBjZWxsc1xcblxcbiRjZWxsLXdpZHRoOiAgICAgICAgICAgIDMwcHg7XFxuXFxuJGNlbGwtY29sb3I6ICAgICAgICAgICAgIzQ0NDQ0NDtcXG5cXG4kZGlzYWJsZWQtYmctY29sb3I6ICAgICB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1kaXNhYmxlZC1iZy1jb2xvciwgI2YwZjBmMCk7XFxuJGRpc2FibGVkLWNvbG9yOiAgICAgICAgdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItZGlzYWJsZWQtY29sb3IsICNiZmJmYmYpO1xcblxcbiRoaWdobGlnaHRlZC1iZy1jb2xvcjogIHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWhpZ2hsaWdodGVkLWJnLWNvbG9yLCBsaWdodGVuKCM1Nzg0RjUsIDIwJSkpO1xcbiRoaWdobGlnaHRlZC1jb2xvcjogICAgIHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWhpZ2hsaWdodGVkLWNvbG9yLCBkYXJrZW4oJGNlbGwtY29sb3IsIDUlKSk7XFxuXFxuJGludmFsaWQtYmctY29sb3I6ICAgICAgdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItaW52YWxpZC1iZy1jb2xvciwgZGFya2VuKCNmMGYwZjAsICA1JSkpO1xcbiRpbnZhbGlkLWNvbG9yOiAgICAgICAgIHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWludmFsaWQtY29sb3IsIGRhcmtlbigjYmZiZmJmLCA1JSkpO1xcblxcbi8vIGNhbGVuZGFyIHRhYmxlXFxuXFxuJGluZm8tY29sb3I6ICAgICAgICAgICAgcmdiYSg2MCwgNjAsIDYwLCAwLjUpO1xcblxcbiR0aC1ib3JkZXItYm90dG9tOiAgICAgICNjYmNiY2I7XFxuJHRoLWNvbG9yOiAgICAgICAgICAgICAgI2FhYWFhYTtcXG5cXG4vLyBmb3JtXFxuXFxuJGJ0bi1maWxsOiAgICAgICAgICAgICAgJGNlbGwtY29sb3I7XFxuJGJ0bi1ib3JkZXI6ICAgICAgICAgICAgJHRoLWJvcmRlci1ib3R0b207XFxuJGJ0bi1maWxsLWhvdmVyOiAgICAgICAgIzM4OTVkOTtcXG5cIixcIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcblxcbiAgICBkcm9wZG93blxcblxcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcblxcbi5jYWxlbmRhci5kcm9wQmFzaWMge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgZGlzcGxheTogbm9uZTtcXG4gIG1heC13aWR0aDogMTAwJTtcXG4gIGJveC1zaGFkb3c6IDFweCA1cHggOXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMik7XFxuICBib3JkZXI6IDFweCBzb2xpZCAjZTBlMGUwO1xcbiAgYmFja2dyb3VuZDogI2ZmZjtcXG4gIG1hcmdpbjogMDtcXG4gIHBhZGRpbmc6IDFlbTtcXG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xcbiAgbGluZS1oZWlnaHQ6IDEuNWVtO1xcbiAgei1pbmRleDogMTA7XFxuXFxuICAmLnZpc2libGUge1xcbiAgICBkaXNwbGF5OiBibG9jaztcXG4gIH1cXG5cXG4gIC5jYXB0aW9uIHtcXG4gICAgbWFyZ2luLWJvdHRvbTogLjdlbTtcXG4gIH1cXG5cXG4gIC5mb3J3YXJkLFxcbiAgLmJhY2sge1xcbiAgICB0b3A6IDFlbTtcXG4gICAgbGVmdDogMWVtO1xcbiAgfVxcblxcbiAgLmZvcndhcmQge1xcbiAgICBsZWZ0OiBhdXRvO1xcbiAgICByaWdodDogMWVtO1xcbiAgfVxcbn1cXG5cIixcIi5jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0ge1xcbiAgLmNlbGwge1xcbiAgICAmOmZpcnN0LWNoaWxkIHtcXG4gICAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA0cHg7XFxuICAgICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNHB4O1xcbiAgICB9XFxuXFxuICAgICY6bGFzdC1jaGlsZCB7XFxuICAgICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDRweDtcXG4gICAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNHB4O1xcbiAgICB9XFxuXFxuICAgICY6OmJlZm9yZSxcXG4gICAgJjo6YWZ0ZXIge1xcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgICBkaXNwbGF5OiBibG9jaztcXG4gICAgICB3aWR0aDogMTAwJTtcXG4gICAgICBtYXJnaW46IDA7XFxuICAgICAgY29udGVudDogJyc7XFxuICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNrZXcoLTMwZGVnKTtcXG4gICAgICAtbXMtdHJhbnNmb3JtOiBza2V3KC0zMGRlZyk7XFxuICAgICAgdHJhbnNmb3JtOiBza2V3KC0zMGRlZyk7XFxuICAgICAgYm9yZGVyLXJhZGl1czogNnB4O1xcbiAgICAgIHotaW5kZXg6IDA7XFxuXFxuICAgICAgLy8gZml4IGJsdXJyeSBza2V3XFxuICAgICAgaGVpZ2h0OiBjYWxjKDEwMCUgKyAycHgpO1xcbiAgICAgIHRvcDogLTFweDtcXG4gICAgfVxcblxcbiAgICAmOjpiZWZvcmUge1xcbiAgICAgIGxlZnQ6IC01NSU7XFxuICAgIH1cXG5cXG4gICAgJjo6YWZ0ZXIge1xcbiAgICAgIGxlZnQ6IDU1JTtcXG4gICAgfVxcbiAgfVxcbn1cXG5cXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG5cXG4gICAgc2VsZWN0aW9ucywgbGVmdCAtIGNlbnRlciAtIHJpZ2h0XFxuXFxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuICBjZWxscyBkaXNhYmxlZFxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcblxcbi5jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0ge1xcbiAgW2RhdGEtZGlzYWJsZWQ9XFxcImxlZnRcXFwiXTo6YWZ0ZXIge1xcbiAgICBiYWNrZ3JvdW5kOiAkZGlzYWJsZWQtYmctY29sb3I7XFxuICB9XFxuXFxuICBbZGF0YS1kaXNhYmxlZD1cXFwiY2VudGVyXFxcIl0ge1xcbiAgICBiYWNrZ3JvdW5kOiAkZGlzYWJsZWQtYmctY29sb3I7XFxuICAgIGNvbG9yOiAkZGlzYWJsZWQtY29sb3I7XFxuXFxuICAgICY6OmJlZm9yZSxcXG4gICAgJjo6YWZ0ZXIge1xcbiAgICAgIGRpc3BsYXk6IG5vbmU7XFxuICAgICAgYmFja2dyb3VuZDogJGRpc2FibGVkLWJnLWNvbG9yO1xcbiAgICB9XFxuICB9XFxuXFxuICBbZGF0YS1kaXNhYmxlZD1cXFwicmlnaHRcXFwiXTo6YmVmb3JlIHtcXG4gICAgYmFja2dyb3VuZDogJGRpc2FibGVkLWJnLWNvbG9yO1xcbiAgfVxcbn1cXG5cXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4gIGNlbGxzIGhpZ2hsaWdodGVkXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuXFxuLmNhbGVuZGFyW2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSB7XFxuICBbZGF0YS1oaWdobGlnaHRlZD1cXFwibGVmdFxcXCJdOjphZnRlciB7XFxuICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICBiYWNrZ3JvdW5kOiAkaGlnaGxpZ2h0ZWQtYmctY29sb3I7XFxuICB9XFxuXFxuICBbZGF0YS1oaWdobGlnaHRlZD1cXFwiY2VudGVyXFxcIl0ge1xcbiAgICBiYWNrZ3JvdW5kOiAkaGlnaGxpZ2h0ZWQtYmctY29sb3I7XFxuICAgIGNvbG9yOiAkaGlnaGxpZ2h0ZWQtY29sb3I7XFxuXFxuICAgICY6OmJlZm9yZSxcXG4gICAgJjo6YWZ0ZXIge1xcbiAgICAgIGRpc3BsYXk6IG5vbmU7XFxuICAgICAgYmFja2dyb3VuZDogJGhpZ2hsaWdodGVkLWJnLWNvbG9yO1xcbiAgICB9XFxuICB9XFxuXFxuICBbZGF0YS1oaWdobGlnaHRlZD1cXFwicmlnaHRcXFwiXTo6YmVmb3JlIHtcXG4gICAgZGlzcGxheTogYmxvY2s7XFxuICAgIGJhY2tncm91bmQ6ICRoaWdobGlnaHRlZC1iZy1jb2xvcjtcXG4gIH1cXG59XFxuXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuICBjZWxscyBpbnZhbGlkXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuXFxuLmNhbGVuZGFyW2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSB7XFxuICBbZGF0YS1pbnZhbGlkPVxcXCJsZWZ0XFxcIl0ge1xcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xcblxcbiAgICAmOjpiZWZvcmUge1xcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICB9XFxuXFxuICAgICY6OmFmdGVyIHtcXG4gICAgICBkaXNwbGF5OiBibG9jaztcXG4gICAgICBiYWNrZ3JvdW5kOiAkaW52YWxpZC1iZy1jb2xvcjtcXG4gICAgfVxcbiAgfVxcblxcbiAgW2RhdGEtaW52YWxpZD1cXFwiY2VudGVyXFxcIl0ge1xcbiAgICBiYWNrZ3JvdW5kOiAkaW52YWxpZC1iZy1jb2xvcjtcXG4gICAgY29sb3I6ICRpbnZhbGlkLWNvbG9yO1xcbiAgXFxuICAgICY6OmJlZm9yZSxcXG4gICAgJjo6YWZ0ZXIge1xcbiAgICAgIGRpc3BsYXk6IG5vbmU7XFxuICAgICAgYmFja2dyb3VuZDogJGludmFsaWQtYmctY29sb3I7XFxuICAgIH1cXG4gIH1cXG5cXG4gIFtkYXRhLWludmFsaWQ9XFxcInJpZ2h0XFxcIl0ge1xcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xcblxcbiAgICAmOjpiZWZvcmUge1xcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICAgIGJhY2tncm91bmQ6ICRpbnZhbGlkLWJnLWNvbG9yO1xcbiAgICB9XFxuXFxuICAgICY6OmFmdGVyIHtcXG4gICAgICBkaXNwbGF5OiBibG9jaztcXG4gICAgfVxcbiAgfVxcbn1cXG5cXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4gIGNlbGwgaG92ZXIgZGlyZWN0XFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuXFxuLmRpcmVjdFtkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0ge1xcbiAgLy8gY2VsbCBob3ZlcmVkIHdoZW4gc2VsZWN0aW5nIGxlZnQgdG8gcmlnaHRcXG4gIFtkYXRhLWhvdmVyZWRdIHtcXG4gICAgYmFja2dyb3VuZDogbm9uZTtcXG5cXG4gICAgJjo6YmVmb3JlIHtcXG4gICAgICBkaXNwbGF5OiBibG9jaztcXG4gICAgfVxcblxcbiAgICAmOjphZnRlciB7XFxuICAgICAgZGlzcGxheTogYmxvY2s7XFxuICAgICAgYmFja2dyb3VuZDogJGhpZ2hsaWdodGVkLWJnLWNvbG9yO1xcbiAgICB9XFxuICB9XFxuXFxuICBbZGF0YS1ob3ZlcmVkLW9mZnNldF0ge1xcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xcblxcbiAgICAmOjpiZWZvcmUge1xcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICAgIGJhY2tncm91bmQ6ICRoaWdobGlnaHRlZC1iZy1jb2xvcjtcXG4gICAgfVxcblxcbiAgICAmOjphZnRlciB7XFxuICAgICAgZGlzcGxheTogYmxvY2s7XFxuICAgIH1cXG4gIH1cXG59XFxuXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuICBjZWxsIGhvdmVyIHJldmVyc2VkXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuXFxuLnJldmVyc2VkW2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSB7XFxuICAvLyB3aGVuIHNlbGVjdGluZyByaWdodCB0byBsZWZ0XFxuICBbZGF0YS1ob3ZlcmVkXSB7XFxuICAgIGJhY2tncm91bmQ6IG5vbmU7XFxuXFxuICAgICY6OmJlZm9yZSB7XFxuICAgICAgZGlzcGxheTogYmxvY2s7XFxuICAgICAgYmFja2dyb3VuZDogJGhpZ2hsaWdodGVkLWJnLWNvbG9yO1xcbiAgICB9XFxuXFxuICAgICY6OmFmdGVyIHtcXG4gICAgICBkaXNwbGF5OiBibG9jaztcXG4gICAgfVxcbiAgfVxcblxcbiAgW2RhdGEtaG92ZXJlZC1vZmZzZXRdIHtcXG4gICAgYmFja2dyb3VuZDogbm9uZTtcXG5cXG4gICAgJjo6YmVmb3JlIHtcXG4gICAgICBkaXNwbGF5OiBibG9jaztcXG4gICAgfVxcblxcbiAgICAmOjphZnRlciB7XFxuICAgICAgZGlzcGxheTogYmxvY2s7XFxuICAgICAgYmFja2dyb3VuZDogJGhpZ2hsaWdodGVkLWJnLWNvbG9yO1xcbiAgICB9XFxuICB9XFxufVxcblwiLFwiJGNlbGwtYm9yZGVyLXJhZGl1czogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItY2VsbC1ib3JkZXItcmFkaXVzLCA2cHgpO1xcbiRjZWxsLWJnLW9wYWNpdHk6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWNlbGwtYmctb3BhY2l0eSwgLjUpO1xcblxcbi5jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJiYXNpY1xcXCJdIHtcXG4gIC5jZWxsIHtcXG4gICAgJjo6YmVmb3JlLFxcbiAgICAmOjphZnRlciB7XFxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICAgIHdpZHRoOiAxMDAlO1xcbiAgICAgIGhlaWdodDogMTAwJTtcXG4gICAgICB0b3A6IDA7XFxuICAgICAgbWFyZ2luOiAwO1xcbiAgICAgIGNvbnRlbnQ6ICcnO1xcbiAgICAgIHotaW5kZXg6IDA7XFxuICAgIH1cXG4gIH1cXG59XFxuXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuXFxuICAgIHNlbGVjdGlvbnMsIGxlZnQgLSBjZW50ZXIgLSByaWdodFxcblxcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcblxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiAgY2VsbHMgZGlzYWJsZWRcXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG5cXG4uY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwiYmFzaWNcXFwiXSB7XFxuICAvLyBbZGF0YS1kaXNhYmxlZD1cXFwibGVmdFxcXCJdIHtcXG4gIC8vICAgY29sb3I6ICRkaXNhYmxlZC1jb2xvcjtcXG4gIC8vIH1cXG5cXG4gIFtkYXRhLWRpc2FibGVkPVxcXCJjZW50ZXJcXFwiXSB7XFxuICAgIHRleHQtZGVjb3JhdGlvbjogbGluZS10aHJvdWdoO1xcbiAgICBjb2xvcjogJGRpc2FibGVkLWNvbG9yO1xcbiAgfVxcbn1cXG5cXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4gIGNlbGxzIGhpZ2hsaWdodGVkXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuXFxuLmNhbGVuZGFyW2RhdGEtdGhlbWU9XFxcImJhc2ljXFxcIl0ge1xcbiAgW2RhdGEtaGlnaGxpZ2h0ZWQ9XFxcImxlZnRcXFwiXSB7XFxuICAgIGNvbG9yOiAkaGlnaGxpZ2h0ZWQtY29sb3I7XFxuXFxuICAgICY6OmJlZm9yZSB7XFxuICAgICAgYmFja2dyb3VuZDogJGhpZ2hsaWdodGVkLWJnLWNvbG9yO1xcbiAgICAgIG9wYWNpdHk6ICRjZWxsLWJnLW9wYWNpdHk7XFxuICAgICAgd2lkdGg6IDUwJTtcXG4gICAgICBsZWZ0OiA1MCU7XFxuICAgIH1cXG5cXG4gICAgJjo6YWZ0ZXIge1xcbiAgICAgIGJhY2tncm91bmQ6ICRoaWdobGlnaHRlZC1iZy1jb2xvcjtcXG4gICAgICBib3JkZXItcmFkaXVzOiAkY2VsbC1ib3JkZXItcmFkaXVzO1xcbiAgICB9XFxuICB9XFxuXFxuICBbZGF0YS1oaWdobGlnaHRlZD1cXFwiY2VudGVyXFxcIl0ge1xcbiAgICBjb2xvcjogJGhpZ2hsaWdodGVkLWNvbG9yO1xcblxcbiAgICAmOjpiZWZvcmUge1xcbiAgICAgIGJhY2tncm91bmQ6ICRoaWdobGlnaHRlZC1iZy1jb2xvcjtcXG4gICAgICBvcGFjaXR5OiAkY2VsbC1iZy1vcGFjaXR5O1xcbiAgICB9XFxuICB9XFxuXFxuICBbZGF0YS1oaWdobGlnaHRlZD1cXFwicmlnaHRcXFwiXSB7XFxuICAgIGNvbG9yOiAkaGlnaGxpZ2h0ZWQtY29sb3I7XFxuXFxuICAgICY6OmJlZm9yZSB7XFxuICAgICAgYmFja2dyb3VuZDogJGhpZ2hsaWdodGVkLWJnLWNvbG9yO1xcbiAgICAgIG9wYWNpdHk6ICRjZWxsLWJnLW9wYWNpdHk7XFxuICAgICAgd2lkdGg6IDUwJTtcXG4gICAgICByaWdodDogNTAlO1xcbiAgICB9XFxuXFxuICAgICY6OmFmdGVyIHtcXG4gICAgICBiYWNrZ3JvdW5kOiAkaGlnaGxpZ2h0ZWQtYmctY29sb3I7XFxuICAgICAgYm9yZGVyLXJhZGl1czogJGNlbGwtYm9yZGVyLXJhZGl1cztcXG4gICAgfVxcbiAgfVxcbn1cXG5cXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4gIGNlbGxzIGludmFsaWRcXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG5cXG4uY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwiYmFzaWNcXFwiXSB7XFxuICBbZGF0YS1pbnZhbGlkPVxcXCJsZWZ0XFxcIl0ge1xcbiAgICBjb2xvcjogJGludmFsaWQtY29sb3I7XFxuXFxuICAgICY6OmJlZm9yZSB7XFxuICAgICAgYmFja2dyb3VuZDogJGludmFsaWQtYmctY29sb3I7XFxuICAgICAgb3BhY2l0eTogJGNlbGwtYmctb3BhY2l0eTtcXG4gICAgICB3aWR0aDogNTAlO1xcbiAgICAgIGxlZnQ6IDUwJTtcXG4gICAgfVxcblxcbiAgICAmOjphZnRlciB7XFxuICAgICAgYmFja2dyb3VuZDogJGludmFsaWQtYmctY29sb3I7XFxuICAgICAgYm9yZGVyLXJhZGl1czogJGNlbGwtYm9yZGVyLXJhZGl1cztcXG4gICAgfVxcbiAgfVxcblxcbiAgW2RhdGEtaW52YWxpZD1cXFwiY2VudGVyXFxcIl0ge1xcbiAgICBjb2xvcjogJGludmFsaWQtY29sb3I7XFxuXFxuICAgICY6OmJlZm9yZSB7XFxuICAgICAgYmFja2dyb3VuZDogJGludmFsaWQtYmctY29sb3I7XFxuICAgICAgb3BhY2l0eTogJGNlbGwtYmctb3BhY2l0eTtcXG4gICAgfVxcbiAgfVxcblxcbiAgW2RhdGEtaW52YWxpZD1cXFwicmlnaHRcXFwiXSB7XFxuICAgIGNvbG9yOiAkaW52YWxpZC1jb2xvcjtcXG5cXG4gICAgJjo6YmVmb3JlIHtcXG4gICAgICBiYWNrZ3JvdW5kOiAkaW52YWxpZC1iZy1jb2xvcjtcXG4gICAgICBvcGFjaXR5OiAkY2VsbC1iZy1vcGFjaXR5O1xcbiAgICAgIHdpZHRoOiA1MCU7XFxuICAgICAgcmlnaHQ6IDUwJTtcXG4gICAgfVxcblxcbiAgICAmOjphZnRlciB7XFxuICAgICAgYmFja2dyb3VuZDogJGludmFsaWQtYmctY29sb3I7XFxuICAgICAgYm9yZGVyLXJhZGl1czogJGNlbGwtYm9yZGVyLXJhZGl1cztcXG4gICAgfVxcbiAgfVxcbn1cXG5cXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4gIGNlbGwgaG92ZXJcXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG5cXG4uY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwiYmFzaWNcXFwiXSB7XFxuICBbZGF0YS1ob3ZlcmVkXTpub3QoW2RhdGEtZGlzYWJsZWQ9XFxcImNlbnRlclxcXCJdKSB7XFxuICAgIGNvbG9yOiAkaGlnaGxpZ2h0ZWQtY29sb3I7XFxuXFxuICAgICY6OmFmdGVyIHtcXG4gICAgICBiYWNrZ3JvdW5kOiAkaGlnaGxpZ2h0ZWQtYmctY29sb3I7XFxuICAgICAgYm9yZGVyLXJhZGl1czogJGNlbGwtYm9yZGVyLXJhZGl1cztcXG4gICAgfVxcbiAgfVxcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLmxvY2FscyA9IHtcblx0XCJjYWxlbmRhclwiOiBcIkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyXCIsXG5cdFwiYm9va2luZ3N5bmMtc3BpblwiOiBcIkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2Jvb2tpbmdzeW5jLXNwaW5cIixcblx0XCJsb2FkaW5nXCI6IFwiQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fbG9hZGluZ1wiLFxuXHRcImRyb3BCYXNpY1wiOiBcIkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2Ryb3BCYXNpY1wiLFxuXHRcInZpc2libGVcIjogXCJCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X192aXNpYmxlXCIsXG5cdFwiY2FwdGlvblwiOiBcIkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhcHRpb25cIixcblx0XCJmb3J3YXJkXCI6IFwiQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fZm9yd2FyZFwiLFxuXHRcImJhY2tcIjogXCJCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19iYWNrXCIsXG5cdFwiY2VsbFwiOiBcIkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NlbGxcIixcblx0XCJkaXJlY3RcIjogXCJCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19kaXJlY3RcIixcblx0XCJyZXZlcnNlZFwiOiBcIkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3JldmVyc2VkXCIsXG5cdFwidG9vbHRpcFwiOiBcIkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3Rvb2x0aXBcIixcblx0XCJ0b29sdGlwQXJyb3dcIjogXCJCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X190b29sdGlwQXJyb3dcIixcblx0XCJtb250aHNXcmFwcGVyXCI6IFwiQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fbW9udGhzV3JhcHBlclwiLFxuXHRcIm1DZWxsXCI6IFwiQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fbUNlbGxcIixcblx0XCJtb250aFwiOiBcIkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX21vbnRoXCIsXG5cdFwidGFibGVIZWFkZXJcIjogXCJCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X190YWJsZUhlYWRlclwiLFxuXHRcImJvZHlcIjogXCJCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19ib2R5XCIsXG5cdFwidGhcIjogXCJCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X190aFwiLFxuXHRcInRvZGF5XCI6IFwiQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fdG9kYXlcIixcblx0XCJjbnRcIjogXCJCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jbnRcIixcblx0XCJpbmZvXCI6IFwiQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9faW5mb1wiLFxuXHRcImZvY3VzXCI6IFwiQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fZm9jdXNcIixcblx0XCJkaXNhYmxlZFwiOiBcIkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2Rpc2FibGVkXCIsXG5cdFwic2VsZWN0ZWRcIjogXCJCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19zZWxlY3RlZFwiLFxuXHRcInNlbGVjdGluZ1JldmVyc2VkXCI6IFwiQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fc2VsZWN0aW5nUmV2ZXJzZWRcIixcblx0XCJzZWxlY3RpbmdEaXJlY3RcIjogXCJCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19zZWxlY3RpbmdEaXJlY3RcIixcblx0XCJhY3Rpb25zRW5hYmxlZFwiOiBcIkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2FjdGlvbnNFbmFibGVkXCIsXG5cdFwiaGlnaGxpZ2h0ZWRcIjogXCJCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19oaWdobGlnaHRlZFwiLFxuXHRcImludmFsaWRcIjogXCJCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19pbnZhbGlkXCJcbn07XG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBkaXYsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBzcGFuLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgYXBwbGV0LCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgb2JqZWN0LCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgaWZyYW1lLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgaDEsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBoMiwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGgzLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgaDQsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBoNSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGg2LCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgcCwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGJsb2NrcXVvdGUsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBwcmUsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBhLFxcbi5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBhYmJyLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgYWNyb255bSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGFkZHJlc3MsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBiaWcsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBjaXRlLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgY29kZSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGRlbCwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGRmbiwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGVtLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgaW1nLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgaW5zLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQga2JkLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgcSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHMsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBzYW1wLFxcbi5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBzbWFsbCwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHN0cmlrZSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHN0cm9uZywgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHN1YiwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHN1cCwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHR0LCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgdmFyLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgYiwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHUsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBpLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgY2VudGVyLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgZGwsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBkdCwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGRkLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgb2wsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCB1bCwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGxpLFxcbi5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBmaWVsZHNldCwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGZvcm0sIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBkaXYuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fZm9ybSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGxhYmVsLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgbGVnZW5kLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgdGFibGUsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBjYXB0aW9uLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgdGJvZHksIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCB0Zm9vdCwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHRoZWFkLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgdHIsXFxuLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHRoLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgdGQsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBhcnRpY2xlLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgYXNpZGUsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBjYW52YXMsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBkZXRhaWxzLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgZmlnY2FwdGlvbiwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGZpZ3VyZSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGZvb3RlciwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGhlYWRlciwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGhncm91cCxcXG4uQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgbWVudSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IG5hdiwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHNlY3Rpb24sIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBzdW1tYXJ5LCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgdGltZSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IG1hcmssIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBhdWRpbywgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHZpZGVvLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgYnV0dG9uLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgdGV4dGFyZWEsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBpbnB1dCwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19idXR0b24sIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fbGVnZW5kIHtcXG4gIGZvbnQtZmFtaWx5OiBcXFwiT3BlbiBzYW5zXFxcIiwgXFxcIkhlbHZldGljYSBOZXVlXFxcIiwgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjtcXG4gIGZvbnQtc2l6ZS1hZGp1c3Q6IG5vbmU7XFxuICBmb250LXNpemU6IDEwMCU7XFxuICBmb250LXN0eWxlOiBub3JtYWw7XFxuICBsZXR0ZXItc3BhY2luZzogbm9ybWFsO1xcbiAgZm9udC1zdHJldGNoOiBub3JtYWw7XFxuICBmb250LXZhcmlhbnQ6IG5vcm1hbDtcXG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XFxuICBmb250OiBub3JtYWwgbm9ybWFsIDEwMCUgXFxcIk9wZW4gc2Fuc1xcXCIsIFxcXCJIZWx2ZXRpY2EgTmV1ZVxcXCIsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7XFxuICB0ZXh0LWFsaWduOiBsZWZ0O1xcbiAgLW1vei10ZXh0LWFsaWduLWxhc3Q6IGluaXRpYWw7XFxuICB0ZXh0LWFsaWduLWxhc3Q6IGluaXRpYWw7XFxuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XFxuICAtd2Via2l0LXRleHQtZW1waGFzaXM6IG5vbmU7XFxuICB0ZXh0LWVtcGhhc2lzOiBub25lO1xcbiAgdGV4dC1oZWlnaHQ6IGF1dG87XFxuICB0ZXh0LWluZGVudDogMDtcXG4gIHRleHQtanVzdGlmeTogYXV0bztcXG4gIHRleHQtb3V0bGluZTogbm9uZTtcXG4gIHRleHQtc2hhZG93OiBub25lO1xcbiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XFxuICB0ZXh0LXdyYXA6IG5vcm1hbDtcXG4gIGFsaWdubWVudC1hZGp1c3Q6IGF1dG87XFxuICBhbGlnbm1lbnQtYmFzZWxpbmU6IGJhc2VsaW5lO1xcbiAgLXdlYmtpdC1hbmltYXRpb246IG5vbmUgMCBlYXNlIDAgMSBub3JtYWw7XFxuICBhbmltYXRpb246IG5vbmUgMCBlYXNlIDAgMSBub3JtYWw7XFxuICAtd2Via2l0LWFuaW1hdGlvbi1wbGF5LXN0YXRlOiBydW5uaW5nO1xcbiAgYW5pbWF0aW9uLXBsYXktc3RhdGU6IHJ1bm5pbmc7XFxuICBhcHBlYXJhbmNlOiBub3JtYWw7XFxuICBhemltdXRoOiBjZW50ZXI7XFxuICAtd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6IHZpc2libGU7XFxuICBiYWNrZmFjZS12aXNpYmlsaXR5OiB2aXNpYmxlO1xcbiAgYmFja2dyb3VuZDogbm9uZSAwIDAgYXV0byByZXBlYXQgc2Nyb2xsIHBhZGRpbmctYm94IHRyYW5zcGFyZW50O1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xcbiAgYmFzZWxpbmUtc2hpZnQ6IGJhc2VsaW5lO1xcbiAgYmluZGluZzogbm9uZTtcXG4gIGJsZWVkOiA2cHQ7XFxuICBib29rbWFyay1sYWJlbDogY29udGVudCgpO1xcbiAgYm9va21hcmstbGV2ZWw6IG5vbmU7XFxuICBib29rbWFyay1zdGF0ZTogb3BlbjtcXG4gIGJvb2ttYXJrLXRhcmdldDogbm9uZTtcXG4gIGJvcmRlcjogMCBub25lIHRyYW5zcGFyZW50O1xcbiAgYm9yZGVyLXJhZGl1czogMDtcXG4gIGJvdHRvbTogYXV0bztcXG4gIGJveC1hbGlnbjogc3RyZXRjaDtcXG4gIC13ZWJraXQtYm94LWRlY29yYXRpb24tYnJlYWs6IHNsaWNlO1xcbiAgYm94LWRlY29yYXRpb24tYnJlYWs6IHNsaWNlO1xcbiAgYm94LWRpcmVjdGlvbjogbm9ybWFsO1xcbiAgZmxleDogMC4wO1xcbiAgZmxleC1ncm91cDogMTtcXG4gIGJveC1saW5lczogc2luZ2xlO1xcbiAgYm94LW9yZGluYWwtZ3JvdXA6IDE7XFxuICBib3gtb3JpZW50OiBpbmxpbmUtYXhpcztcXG4gIGJveC1wYWNrOiBzdGFydDtcXG4gIGJveC1zaGFkb3c6IG5vbmU7XFxuICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcXG4gIC13ZWJraXQtYnJlYWstYWZ0ZXI6IGF1dG87XFxuICAtbW96LWJyZWFrLWFmdGVyOiBhdXRvO1xcbiAgYnJlYWstYWZ0ZXI6IGF1dG87XFxuICAtd2Via2l0LWJyZWFrLWJlZm9yZTogYXV0bztcXG4gIC1tb3otYnJlYWstYmVmb3JlOiBhdXRvO1xcbiAgYnJlYWstYmVmb3JlOiBhdXRvO1xcbiAgLXdlYmtpdC1jb2x1bW4tYnJlYWstaW5zaWRlOiBhdXRvO1xcbiAgcGFnZS1icmVhay1pbnNpZGU6IGF1dG87XFxuICBicmVhay1pbnNpZGU6IGF1dG87XFxuICBjYXB0aW9uLXNpZGU6IHRvcDtcXG4gIGNsZWFyOiBub25lO1xcbiAgY2xpcDogYXV0bztcXG4gIGNvbG9yOiBpbmhlcml0O1xcbiAgY29sb3ItcHJvZmlsZTogYXV0bztcXG4gIC13ZWJraXQtY29sdW1uLWNvdW50OiBhdXRvO1xcbiAgLW1vei1jb2x1bW4tY291bnQ6IGF1dG87XFxuICBjb2x1bW4tY291bnQ6IGF1dG87XFxuICAtd2Via2l0LWNvbHVtbi1maWxsOiBiYWxhbmNlO1xcbiAgLW1vei1jb2x1bW4tZmlsbDogYmFsYW5jZTtcXG4gIGNvbHVtbi1maWxsOiBiYWxhbmNlO1xcbiAgLXdlYmtpdC1jb2x1bW4tZ2FwOiBub3JtYWw7XFxuICAtbW96LWNvbHVtbi1nYXA6IG5vcm1hbDtcXG4gIGNvbHVtbi1nYXA6IG5vcm1hbDtcXG4gIC13ZWJraXQtY29sdW1uLXJ1bGU6IG1lZGl1bSBtZWRpdW0gIzFmMWYxZjtcXG4gIC1tb3otY29sdW1uLXJ1bGU6IG1lZGl1bSBtZWRpdW0gIzFmMWYxZjtcXG4gIGNvbHVtbi1ydWxlOiBtZWRpdW0gbWVkaXVtICMxZjFmMWY7XFxuICAtd2Via2l0LWNvbHVtbi1zcGFuOiAxO1xcbiAgLW1vei1jb2x1bW4tc3BhbjogMTtcXG4gIGNvbHVtbi1zcGFuOiAxO1xcbiAgLXdlYmtpdC1jb2x1bW4td2lkdGg6IGF1dG87XFxuICAtbW96LWNvbHVtbi13aWR0aDogYXV0bztcXG4gIGNvbHVtbi13aWR0aDogYXV0bztcXG4gIC13ZWJraXQtY29sdW1uczogYXV0byBhdXRvO1xcbiAgLW1vei1jb2x1bW5zOiBhdXRvIGF1dG87XFxuICBjb2x1bW5zOiBhdXRvIGF1dG87XFxuICBjb250ZW50OiBub3JtYWw7XFxuICBjb3VudGVyLWluY3JlbWVudDogbm9uZTtcXG4gIGNvdW50ZXItcmVzZXQ6IG5vbmU7XFxuICBjcm9wOiBhdXRvO1xcbiAgY3Vyc29yOiBhdXRvO1xcbiAgZGlyZWN0aW9uOiBsdHI7XFxuICBkaXNwbGF5OiBpbmxpbmU7XFxuICBkb21pbmFudC1iYXNlbGluZTogYXV0bztcXG4gIGRyb3AtaW5pdGlhbC1hZnRlci1hZGp1c3Q6IHRleHQtYWZ0ZXItZWRnZTtcXG4gIGRyb3AtaW5pdGlhbC1hZnRlci1hbGlnbjogYmFzZWxpbmU7XFxuICBkcm9wLWluaXRpYWwtYmVmb3JlLWFkanVzdDogdGV4dC1iZWZvcmUtZWRnZTtcXG4gIGRyb3AtaW5pdGlhbC1iZWZvcmUtYWxpZ246IGNhcHMtaGVpZ2h0O1xcbiAgZHJvcC1pbml0aWFsLXNpemU6IGF1dG87XFxuICBkcm9wLWluaXRpYWwtdmFsdWU6IGluaXRpYWw7XFxuICBlbGV2YXRpb246IGxldmVsO1xcbiAgZW1wdHktY2VsbHM6IHNob3c7XFxuICBmaXQ6IGZpbGw7XFxuICBmaXQtcG9zaXRpb246IDAlIDAlO1xcbiAgZmxvYXQ6IG5vbmU7XFxuICBmbG9hdC1vZmZzZXQ6IDAgMDtcXG4gIGdyaWQtY29sdW1uczogbm9uZTtcXG4gIGdyaWQtcm93czogbm9uZTtcXG4gIGhhbmdpbmctcHVuY3R1YXRpb246IG5vbmU7XFxuICBoZWlnaHQ6IGF1dG87XFxuICBoeXBoZW5hdGUtYWZ0ZXI6IGF1dG87XFxuICBoeXBoZW5hdGUtYmVmb3JlOiBhdXRvO1xcbiAgaHlwaGVuYXRlLWNoYXJhY3RlcjogYXV0bztcXG4gIGh5cGhlbmF0ZS1saW5lczogbm8tbGltaXQ7XFxuICBoeXBoZW5hdGUtcmVzb3VyY2U6IG5vbmU7XFxuICAtd2Via2l0LWh5cGhlbnM6IG1hbnVhbDtcXG4gIC1tb3otaHlwaGVuczogbWFudWFsO1xcbiAgLW1zLWh5cGhlbnM6IG1hbnVhbDtcXG4gIGh5cGhlbnM6IG1hbnVhbDtcXG4gIGljb246IGF1dG87XFxuICBpbWFnZS1vcmllbnRhdGlvbjogYXV0bztcXG4gIGltYWdlLXJlbmRlcmluZzogYXV0bztcXG4gIGltYWdlLXJlc29sdXRpb246IG5vcm1hbDtcXG4gIGlubGluZS1ib3gtYWxpZ246IGxhc3Q7XFxuICBsZWZ0OiBhdXRvO1xcbiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XFxuICBsaW5lLXN0YWNraW5nOiBpbmxpbmUtbGluZS1oZWlnaHQgZXhjbHVkZS1ydWJ5IGNvbnNpZGVyLXNoaWZ0cztcXG4gIGxpc3Qtc3R5bGU6IGRpc2Mgb3V0c2lkZSBub25lO1xcbiAgbWFyZ2luOiAwO1xcbiAgbWFya3M6IG5vbmU7XFxuICBtYXJxdWVlLWRpcmVjdGlvbjogZm9yd2FyZDtcXG4gIG1hcnF1ZWUtbG9vcDogMTtcXG4gIG1hcnF1ZWUtcGxheS1jb3VudDogMTtcXG4gIG1hcnF1ZWUtc3BlZWQ6IG5vcm1hbDtcXG4gIG1hcnF1ZWUtc3R5bGU6IHNjcm9sbDtcXG4gIG1heC1oZWlnaHQ6IG5vbmU7XFxuICBtYXgtd2lkdGg6IG5vbmU7XFxuICBtaW4taGVpZ2h0OiAwO1xcbiAgbWluLXdpZHRoOiAwO1xcbiAgbW92ZS10bzogbm9ybWFsO1xcbiAgbmF2LWRvd246IGF1dG87XFxuICBuYXYtaW5kZXg6IGF1dG87XFxuICBuYXYtbGVmdDogYXV0bztcXG4gIG5hdi1yaWdodDogYXV0bztcXG4gIG5hdi11cDogYXV0bztcXG4gIG9wYWNpdHk6IDE7XFxuICBvcnBoYW5zOiAyO1xcbiAgb3V0bGluZTogaW52ZXJ0IG5vbmUgbWVkaXVtO1xcbiAgb3V0bGluZS1vZmZzZXQ6IDA7XFxuICBvdmVyZmxvdzogdmlzaWJsZTtcXG4gIG92ZXJmbG93LXN0eWxlOiBhdXRvO1xcbiAgcGFkZGluZzogMDtcXG4gIHBhZ2U6IGF1dG87XFxuICBwYWdlLWJyZWFrLWFmdGVyOiBhdXRvO1xcbiAgcGFnZS1icmVhay1iZWZvcmU6IGF1dG87XFxuICBwYWdlLWJyZWFrLWluc2lkZTogYXV0bztcXG4gIHBhZ2UtcG9saWN5OiBzdGFydDtcXG4gIC13ZWJraXQtcGVyc3BlY3RpdmU6IG5vbmU7XFxuICBwZXJzcGVjdGl2ZTogbm9uZTtcXG4gIC13ZWJraXQtcGVyc3BlY3RpdmUtb3JpZ2luOiA1MCUgNTAlO1xcbiAgcGVyc3BlY3RpdmUtb3JpZ2luOiA1MCUgNTAlO1xcbiAgcG9zaXRpb246IHN0YXRpYztcXG4gIHByZXNlbnRhdGlvbi1sZXZlbDogMDtcXG4gIHB1bmN0dWF0aW9uLXRyaW06IG5vbmU7XFxuICBxdW90ZXM6IG5vbmU7XFxuICByZW5kZXJpbmctaW50ZW50OiBhdXRvO1xcbiAgcmVzaXplOiBub25lO1xcbiAgcmlnaHQ6IGF1dG87XFxuICByb3RhdGlvbjogMDtcXG4gIHJvdGF0aW9uLXBvaW50OiA1MCUgNTAlO1xcbiAgcnVieS1hbGlnbjogYXV0bztcXG4gIHJ1Ynktb3Zlcmhhbmc6IG5vbmU7XFxuICBydWJ5LXBvc2l0aW9uOiBiZWZvcmU7XFxuICBydWJ5LXNwYW46IG5vbmU7XFxuICBzaXplOiBhdXRvO1xcbiAgc3RyaW5nLXNldDogbm9uZTtcXG4gIHRhYmxlLWxheW91dDogYXV0bztcXG4gIHRvcDogYXV0bztcXG4gIC13ZWJraXQtdHJhbnNmb3JtOiBub25lO1xcbiAgLW1zLXRyYW5zZm9ybTogbm9uZTtcXG4gIHRyYW5zZm9ybTogbm9uZTtcXG4gIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogNTAlIDUwJSAwO1xcbiAgLW1zLXRyYW5zZm9ybS1vcmlnaW46IDUwJSA1MCUgMDtcXG4gIHRyYW5zZm9ybS1vcmlnaW46IDUwJSA1MCUgMDtcXG4gIC13ZWJraXQtdHJhbnNmb3JtLXN0eWxlOiBmbGF0O1xcbiAgdHJhbnNmb3JtLXN0eWxlOiBmbGF0O1xcbiAgdHJhbnNpdGlvbjogYWxsIDAgZWFzZSAwO1xcbiAgdW5pY29kZS1iaWRpOiBub3JtYWw7XFxuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XFxuICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xcbiAgd2hpdGUtc3BhY2UtY29sbGFwc2U6IGNvbGxhcHNlO1xcbiAgd2lkb3dzOiAyO1xcbiAgd2lkdGg6IGF1dG87XFxuICB3b3JkLWJyZWFrOiBub3JtYWw7XFxuICB3b3JkLXNwYWNpbmc6IG5vcm1hbDtcXG4gIHdvcmQtd3JhcDogbm9ybWFsO1xcbiAgei1pbmRleDogYXV0bztcXG4gIHRleHQtYWxpZ246IHN0YXJ0O1xcbiAgLyogQW5kIGRpc2FibGUgTVMgZ3JhZGllbnRzICovXFxuICBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChlbmFibGVkPWZhbHNlKTtcXG4gIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xcbiAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTsgfVxcblxcbi5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBhZGRyZXNzLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgYmxvY2txdW90ZSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGRkLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgZGl2LCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgZGwsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBkdCwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGZpZWxkc2V0LCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgZm9ybSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGRpdi5Cb29raW5nU3luY1dpZGdldFV0aWxzX19mb3JtLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgZnJhbWUsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBmcmFtZXNldCwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGgxLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgaDIsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBoMywgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGg0LCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgaDUsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBoNiwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IG5vZnJhbWVzLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgb2wsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBwLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgdWwsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBjZW50ZXIsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBkaXIsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBociwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IG1lbnUsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBwcmUsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBhcnRpY2xlLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgYXNpZGUsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBjYW52YXMsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBkZXRhaWxzLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgZmlnY2FwdGlvbiwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGZpZ3VyZSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGZvb3RlciwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGhlYWRlciwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGhncm91cCwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IG1lbnUsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBuYXYsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBzZWN0aW9uLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgc3VtbWFyeSB7XFxuICBkaXNwbGF5OiBibG9jazsgfVxcblxcbi5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBsaSB7XFxuICBkaXNwbGF5OiBsaXN0LWl0ZW07IH1cXG5cXG4uQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgdGFibGUge1xcbiAgZGlzcGxheTogdGFibGU7IH1cXG5cXG4uQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgdHIge1xcbiAgZGlzcGxheTogdGFibGUtcm93OyB9XFxuXFxuLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHRoZWFkIHtcXG4gIGRpc3BsYXk6IHRhYmxlLWhlYWRlci1ncm91cDsgfVxcblxcbi5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCB0Ym9keSB7XFxuICBkaXNwbGF5OiB0YWJsZS1yb3ctZ3JvdXA7IH1cXG5cXG4uQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgdGZvb3Qge1xcbiAgZGlzcGxheTogdGFibGUtZm9vdGVyLWdyb3VwOyB9XFxuXFxuLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGNvbCB7XFxuICBkaXNwbGF5OiB0YWJsZS1jb2x1bW47IH1cXG5cXG4uQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgY29sZ3JvdXAge1xcbiAgZGlzcGxheTogdGFibGUtY29sdW1uLWdyb3VwOyB9XFxuXFxuLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHRkLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgdGgge1xcbiAgZGlzcGxheTogdGFibGUtY2VsbDsgfVxcblxcbi5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBjYXB0aW9uIHtcXG4gIGRpc3BsYXk6IHRhYmxlLWNhcHRpb247IH1cXG5cXG4uQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgaW5wdXQsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBzZWxlY3Qge1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrOyB9XFxuXFxuLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGIsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBzdHJvbmcge1xcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7IH1cXG5cXG4uQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgYiA+IGksIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBzdHJvbmcgPiBpLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgYiA+IGVtLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgc3Ryb25nID4gZW0ge1xcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XFxuICBmb250LXN0eWxlOiBpdGFsaWM7IH1cXG5cXG4uQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgaSA+IGIsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBpID4gc3Ryb25nIHtcXG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xcbiAgZm9udC1zdHlsZTogaXRhbGljOyB9XFxuXFxuLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGVtID4gYiwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGVtID4gc3Ryb25nIHtcXG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xcbiAgZm9udC1zdHlsZTogaXRhbGljOyB9XFxuXFxuLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHRleHRhcmVhLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgaW5wdXQge1xcbiAgY3Vyc29yOiB0ZXh0OyB9XFxuXCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvc3R5bGVzL3Jlc2V0LnNjc3NcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBQUE7Ozs7OztFQU9JLHdFQUF3RTtFQUN4RSxzQkFBc0I7RUFDdEIsZUFBZTtFQUNmLGtCQUFrQjtFQUNsQixzQkFBc0I7RUFDdEIsb0JBQW9CO0VBQ3BCLG9CQUFvQjtFQUNwQixtQkFBbUI7RUFDbkIsb0ZBQW9GO0VBQ3BGLGdCQUFnQjtFQUNoQiw2QkFBNkI7RUFDN0Isd0JBQXdCO0VBQ3hCLHFCQUFxQjtFQUNyQiwyQkFBMkI7RUFDM0IsbUJBQW1CO0VBQ25CLGlCQUFpQjtFQUNqQixjQUFjO0VBQ2Qsa0JBQWtCO0VBQ2xCLGtCQUFrQjtFQUNsQixpQkFBaUI7RUFDakIsb0JBQW9CO0VBQ3BCLGlCQUFpQjtFQUNqQixzQkFBc0I7RUFDdEIsNEJBQTRCO0VBQzVCLHlDQUF5QztFQUN6QyxpQ0FBaUM7RUFDakMscUNBQXFDO0VBQ3JDLDZCQUE2QjtFQUM3QixrQkFBa0I7RUFDbEIsZUFBZTtFQUNmLG9DQUFvQztFQUNwQyw0QkFBNEI7RUFDNUIsK0RBQStEO0VBQy9ELDZCQUE2QjtFQUM3QixzQkFBc0I7RUFDdEIsd0JBQXdCO0VBQ3hCLGFBQWE7RUFDYixVQUFVO0VBQ1YseUJBQXlCO0VBQ3pCLG9CQUFvQjtFQUNwQixvQkFBb0I7RUFDcEIscUJBQXFCO0VBQ3JCLDBCQUEwQjtFQUMxQixnQkFBZ0I7RUFDaEIsWUFBWTtFQUNaLGtCQUFrQjtFQUNsQixtQ0FBbUM7RUFDbkMsMkJBQTJCO0VBQzNCLHFCQUFxQjtFQUNyQixTQUFTO0VBQ1QsYUFBYTtFQUNiLGlCQUFpQjtFQUNqQixvQkFBb0I7RUFDcEIsdUJBQXVCO0VBQ3ZCLGVBQWU7RUFDZixnQkFBZ0I7RUFDaEIsdUJBQXVCO0VBQ3ZCLHlCQUF5QjtFQUN6QixzQkFBc0I7RUFDdEIsaUJBQWlCO0VBQ2pCLDBCQUEwQjtFQUMxQix1QkFBdUI7RUFDdkIsa0JBQWtCO0VBQ2xCLGlDQUFpQztFQUNqQyx1QkFBdUI7RUFDdkIsa0JBQWtCO0VBQ2xCLGlCQUFpQjtFQUNqQixXQUFXO0VBQ1gsVUFBVTtFQUNWLGNBQWM7RUFDZCxtQkFBbUI7RUFDbkIsMEJBQTBCO0VBQzFCLHVCQUF1QjtFQUN2QixrQkFBa0I7RUFDbEIsNEJBQTRCO0VBQzVCLHlCQUF5QjtFQUN6QixvQkFBb0I7RUFDcEIsMEJBQTBCO0VBQzFCLHVCQUF1QjtFQUN2QixrQkFBa0I7RUFDbEIsMENBQTBDO0VBQzFDLHVDQUF1QztFQUN2QyxrQ0FBa0M7RUFDbEMsc0JBQXNCO0VBQ3RCLG1CQUFtQjtFQUNuQixjQUFjO0VBQ2QsMEJBQTBCO0VBQzFCLHVCQUF1QjtFQUN2QixrQkFBa0I7RUFDbEIsMEJBQTBCO0VBQzFCLHVCQUF1QjtFQUN2QixrQkFBa0I7RUFDbEIsZUFBZTtFQUNmLHVCQUF1QjtFQUN2QixtQkFBbUI7RUFDbkIsVUFBVTtFQUNWLFlBQVk7RUFDWixjQUFjO0VBQ2QsZUFBZTtFQUNmLHVCQUF1QjtFQUN2QiwwQ0FBMEM7RUFDMUMsa0NBQWtDO0VBQ2xDLDRDQUE0QztFQUM1QyxzQ0FBc0M7RUFDdEMsdUJBQXVCO0VBQ3ZCLDJCQUEyQjtFQUMzQixnQkFBZ0I7RUFDaEIsaUJBQWlCO0VBQ2pCLFNBQVM7RUFDVCxtQkFBbUI7RUFDbkIsV0FBVztFQUNYLGlCQUFpQjtFQUNqQixrQkFBa0I7RUFDbEIsZUFBZTtFQUNmLHlCQUF5QjtFQUN6QixZQUFZO0VBQ1oscUJBQXFCO0VBQ3JCLHNCQUFzQjtFQUN0Qix5QkFBeUI7RUFDekIseUJBQXlCO0VBQ3pCLHdCQUF3QjtFQUN4Qix1QkFBdUI7RUFDdkIsb0JBQW9CO0VBQ3BCLG1CQUFtQjtFQUNuQixlQUFlO0VBQ2YsVUFBVTtFQUNWLHVCQUF1QjtFQUN2QixxQkFBcUI7RUFDckIsd0JBQXdCO0VBQ3hCLHNCQUFzQjtFQUN0QixVQUFVO0VBQ1Ysb0JBQW9CO0VBQ3BCLDhEQUE4RDtFQUM5RCw2QkFBNkI7RUFDN0IsU0FBUztFQUNULFdBQVc7RUFDWCwwQkFBMEI7RUFDMUIsZUFBZTtFQUNmLHFCQUFxQjtFQUNyQixxQkFBcUI7RUFDckIscUJBQXFCO0VBQ3JCLGdCQUFnQjtFQUNoQixlQUFlO0VBQ2YsYUFBYTtFQUNiLFlBQVk7RUFDWixlQUFlO0VBQ2YsY0FBYztFQUNkLGVBQWU7RUFDZixjQUFjO0VBQ2QsZUFBZTtFQUNmLFlBQVk7RUFDWixVQUFVO0VBQ1YsVUFBVTtFQUNWLDJCQUEyQjtFQUMzQixpQkFBaUI7RUFDakIsaUJBQWlCO0VBQ2pCLG9CQUFvQjtFQUNwQixVQUFVO0VBQ1YsVUFBVTtFQUNWLHNCQUFzQjtFQUN0Qix1QkFBdUI7RUFDdkIsdUJBQXVCO0VBQ3ZCLGtCQUFrQjtFQUNsQix5QkFBeUI7RUFDekIsaUJBQWlCO0VBQ2pCLG1DQUFtQztFQUNuQywyQkFBMkI7RUFDM0IsZ0JBQWdCO0VBQ2hCLHFCQUFxQjtFQUNyQixzQkFBc0I7RUFDdEIsWUFBWTtFQUNaLHNCQUFzQjtFQUN0QixZQUFZO0VBQ1osV0FBVztFQUNYLFdBQVc7RUFDWCx1QkFBdUI7RUFDdkIsZ0JBQWdCO0VBQ2hCLG1CQUFtQjtFQUNuQixxQkFBcUI7RUFDckIsZUFBZTtFQUNmLFVBQVU7RUFDVixnQkFBZ0I7RUFDaEIsa0JBQWtCO0VBQ2xCLFNBQVM7RUFDVCx1QkFBdUI7RUFDdkIsbUJBQW1CO0VBQ25CLGVBQWU7RUFDZixtQ0FBbUM7RUFDbkMsK0JBQStCO0VBQy9CLDJCQUEyQjtFQUMzQiw2QkFBNkI7RUFDN0IscUJBQXFCO0VBQ3JCLHdCQUF3QjtFQUN4QixvQkFBb0I7RUFDcEIsd0JBQXdCO0VBQ3hCLG1CQUFtQjtFQUNuQiw4QkFBOEI7RUFDOUIsU0FBUztFQUNULFdBQVc7RUFDWCxrQkFBa0I7RUFDbEIsb0JBQW9CO0VBQ3BCLGlCQUFpQjtFQUNqQixhQUFhO0VBQ2IsaUJBQWlCO0VBQ2pCLDZCQUFBO0VBQ0EsaUVBQWlFO0VBQ2pFLG1DQUFtQztFQUNuQyxrQ0FBa0MsRUFBQTs7QUF0TnRDO0VBeU5JLGNBQWMsRUFBQTs7QUF6TmxCO0VBNE5JLGtCQUFrQixFQUFBOztBQTVOdEI7RUErTkksY0FBYyxFQUFBOztBQS9ObEI7RUFrT0ksa0JBQWtCLEVBQUE7O0FBbE90QjtFQXFPSSwyQkFBMkIsRUFBQTs7QUFyTy9CO0VBd09JLHdCQUF3QixFQUFBOztBQXhPNUI7RUEyT0ksMkJBQTJCLEVBQUE7O0FBM08vQjtFQThPSSxxQkFBcUIsRUFBQTs7QUE5T3pCO0VBaVBJLDJCQUEyQixFQUFBOztBQWpQL0I7RUFvUEksbUJBQW1CLEVBQUE7O0FBcFB2QjtFQXVQSSxzQkFBc0IsRUFBQTs7QUF2UDFCO0VBMFBJLHFCQUFxQixFQUFBOztBQTFQekI7RUE2UEksaUJBQWlCLEVBQUE7O0FBN1ByQjtFQWdRSSxpQkFBaUI7RUFDakIsa0JBQWtCLEVBQUE7O0FBalF0QjtFQXFRTSxpQkFBaUI7RUFDakIsa0JBQWtCLEVBQUE7O0FBdFF4QjtFQTJRTSxpQkFBaUI7RUFDakIsa0JBQWtCLEVBQUE7O0FBNVF4QjtFQWdSSSxZQUFZLEVBQUFcIixcInNvdXJjZXNDb250ZW50XCI6W1wiLnJlc2V0IHtcXHJcXG5cXHRkaXYsIHNwYW4sIGFwcGxldCwgb2JqZWN0LCBpZnJhbWUsIGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsIHAsIGJsb2NrcXVvdGUsIHByZSwgYSxcXHJcXG5cXHRhYmJyLCBhY3JvbnltLCBhZGRyZXNzLCBiaWcsIGNpdGUsIGNvZGUsIGRlbCwgZGZuLCBlbSwgaW1nLCBpbnMsIGtiZCwgcSwgcywgc2FtcCxcXHJcXG5cXHRzbWFsbCwgc3RyaWtlLCBzdHJvbmcsIHN1Yiwgc3VwLCB0dCwgdmFyLCBiLCB1LCBpLCBjZW50ZXIsIGRsLCBkdCwgZGQsIG9sLCB1bCwgbGksXFxyXFxuXFx0ZmllbGRzZXQsIGZvcm0sIGRpdi5mb3JtLCBsYWJlbCwgbGVnZW5kLCB0YWJsZSwgY2FwdGlvbiwgdGJvZHksIHRmb290LCB0aGVhZCwgdHIsXFxyXFxuXFx0dGgsIHRkLCBhcnRpY2xlLCBhc2lkZSwgY2FudmFzLCBkZXRhaWxzLCBmaWdjYXB0aW9uLCBmaWd1cmUsIGZvb3RlciwgaGVhZGVyLCBoZ3JvdXAsXFxyXFxuXFx0bWVudSwgbmF2LCBzZWN0aW9uLCBzdW1tYXJ5LCB0aW1lLCBtYXJrLCBhdWRpbywgdmlkZW8sIGJ1dHRvbiwgdGV4dGFyZWEsIGlucHV0LCAuYnV0dG9uLCAubGVnZW5kIHtcXHJcXG4gICAgZm9udC1mYW1pbHk6IFxcXCJPcGVuIHNhbnNcXFwiLCBcXFwiSGVsdmV0aWNhIE5ldWVcXFwiLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmO1xcclxcbiAgICBmb250LXNpemUtYWRqdXN0OiBub25lO1xcclxcbiAgICBmb250LXNpemU6IDEwMCU7XFxyXFxuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcXHJcXG4gICAgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDtcXHJcXG4gICAgZm9udC1zdHJldGNoOiBub3JtYWw7XFxyXFxuICAgIGZvbnQtdmFyaWFudDogbm9ybWFsO1xcclxcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xcclxcbiAgICBmb250OiBub3JtYWwgbm9ybWFsIDEwMCUgXFxcIk9wZW4gc2Fuc1xcXCIsIFxcXCJIZWx2ZXRpY2EgTmV1ZVxcXCIsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7XFxyXFxuICAgIHRleHQtYWxpZ246IGxlZnQ7XFxyXFxuICAgIC1tb3otdGV4dC1hbGlnbi1sYXN0OiBpbml0aWFsO1xcclxcbiAgICB0ZXh0LWFsaWduLWxhc3Q6IGluaXRpYWw7XFxyXFxuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcXHJcXG4gICAgLXdlYmtpdC10ZXh0LWVtcGhhc2lzOiBub25lO1xcclxcbiAgICB0ZXh0LWVtcGhhc2lzOiBub25lO1xcclxcbiAgICB0ZXh0LWhlaWdodDogYXV0bztcXHJcXG4gICAgdGV4dC1pbmRlbnQ6IDA7XFxyXFxuICAgIHRleHQtanVzdGlmeTogYXV0bztcXHJcXG4gICAgdGV4dC1vdXRsaW5lOiBub25lO1xcclxcbiAgICB0ZXh0LXNoYWRvdzogbm9uZTtcXHJcXG4gICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XFxyXFxuICAgIHRleHQtd3JhcDogbm9ybWFsO1xcclxcbiAgICBhbGlnbm1lbnQtYWRqdXN0OiBhdXRvO1xcclxcbiAgICBhbGlnbm1lbnQtYmFzZWxpbmU6IGJhc2VsaW5lO1xcclxcbiAgICAtd2Via2l0LWFuaW1hdGlvbjogbm9uZSAwIGVhc2UgMCAxIG5vcm1hbDtcXHJcXG4gICAgYW5pbWF0aW9uOiBub25lIDAgZWFzZSAwIDEgbm9ybWFsO1xcclxcbiAgICAtd2Via2l0LWFuaW1hdGlvbi1wbGF5LXN0YXRlOiBydW5uaW5nO1xcclxcbiAgICBhbmltYXRpb24tcGxheS1zdGF0ZTogcnVubmluZztcXHJcXG4gICAgYXBwZWFyYW5jZTogbm9ybWFsO1xcclxcbiAgICBhemltdXRoOiBjZW50ZXI7XFxyXFxuICAgIC13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTogdmlzaWJsZTtcXHJcXG4gICAgYmFja2ZhY2UtdmlzaWJpbGl0eTogdmlzaWJsZTtcXHJcXG4gICAgYmFja2dyb3VuZDogbm9uZSAwIDAgYXV0byByZXBlYXQgc2Nyb2xsIHBhZGRpbmctYm94IHRyYW5zcGFyZW50O1xcclxcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXHJcXG4gICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTtcXHJcXG4gICAgYmFzZWxpbmUtc2hpZnQ6IGJhc2VsaW5lO1xcclxcbiAgICBiaW5kaW5nOiBub25lO1xcclxcbiAgICBibGVlZDogNnB0O1xcclxcbiAgICBib29rbWFyay1sYWJlbDogY29udGVudCgpO1xcclxcbiAgICBib29rbWFyay1sZXZlbDogbm9uZTtcXHJcXG4gICAgYm9va21hcmstc3RhdGU6IG9wZW47XFxyXFxuICAgIGJvb2ttYXJrLXRhcmdldDogbm9uZTtcXHJcXG4gICAgYm9yZGVyOiAwIG5vbmUgdHJhbnNwYXJlbnQ7XFxyXFxuICAgIGJvcmRlci1yYWRpdXM6IDA7XFxyXFxuICAgIGJvdHRvbTogYXV0bztcXHJcXG4gICAgYm94LWFsaWduOiBzdHJldGNoO1xcclxcbiAgICAtd2Via2l0LWJveC1kZWNvcmF0aW9uLWJyZWFrOiBzbGljZTtcXHJcXG4gICAgYm94LWRlY29yYXRpb24tYnJlYWs6IHNsaWNlO1xcclxcbiAgICBib3gtZGlyZWN0aW9uOiBub3JtYWw7XFxyXFxuICAgIGZsZXg6IDAuMDtcXHJcXG4gICAgZmxleC1ncm91cDogMTtcXHJcXG4gICAgYm94LWxpbmVzOiBzaW5nbGU7XFxyXFxuICAgIGJveC1vcmRpbmFsLWdyb3VwOiAxO1xcclxcbiAgICBib3gtb3JpZW50OiBpbmxpbmUtYXhpcztcXHJcXG4gICAgYm94LXBhY2s6IHN0YXJ0O1xcclxcbiAgICBib3gtc2hhZG93OiBub25lO1xcclxcbiAgICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcXHJcXG4gICAgLXdlYmtpdC1icmVhay1hZnRlcjogYXV0bztcXHJcXG4gICAgLW1vei1icmVhay1hZnRlcjogYXV0bztcXHJcXG4gICAgYnJlYWstYWZ0ZXI6IGF1dG87XFxyXFxuICAgIC13ZWJraXQtYnJlYWstYmVmb3JlOiBhdXRvO1xcclxcbiAgICAtbW96LWJyZWFrLWJlZm9yZTogYXV0bztcXHJcXG4gICAgYnJlYWstYmVmb3JlOiBhdXRvO1xcclxcbiAgICAtd2Via2l0LWNvbHVtbi1icmVhay1pbnNpZGU6IGF1dG87XFxyXFxuICAgIHBhZ2UtYnJlYWstaW5zaWRlOiBhdXRvO1xcclxcbiAgICBicmVhay1pbnNpZGU6IGF1dG87XFxyXFxuICAgIGNhcHRpb24tc2lkZTogdG9wO1xcclxcbiAgICBjbGVhcjogbm9uZTtcXHJcXG4gICAgY2xpcDogYXV0bztcXHJcXG4gICAgY29sb3I6IGluaGVyaXQ7XFxyXFxuICAgIGNvbG9yLXByb2ZpbGU6IGF1dG87XFxyXFxuICAgIC13ZWJraXQtY29sdW1uLWNvdW50OiBhdXRvO1xcclxcbiAgICAtbW96LWNvbHVtbi1jb3VudDogYXV0bztcXHJcXG4gICAgY29sdW1uLWNvdW50OiBhdXRvO1xcclxcbiAgICAtd2Via2l0LWNvbHVtbi1maWxsOiBiYWxhbmNlO1xcclxcbiAgICAtbW96LWNvbHVtbi1maWxsOiBiYWxhbmNlO1xcclxcbiAgICBjb2x1bW4tZmlsbDogYmFsYW5jZTtcXHJcXG4gICAgLXdlYmtpdC1jb2x1bW4tZ2FwOiBub3JtYWw7XFxyXFxuICAgIC1tb3otY29sdW1uLWdhcDogbm9ybWFsO1xcclxcbiAgICBjb2x1bW4tZ2FwOiBub3JtYWw7XFxyXFxuICAgIC13ZWJraXQtY29sdW1uLXJ1bGU6IG1lZGl1bSBtZWRpdW0gIzFmMWYxZjtcXHJcXG4gICAgLW1vei1jb2x1bW4tcnVsZTogbWVkaXVtIG1lZGl1bSAjMWYxZjFmO1xcclxcbiAgICBjb2x1bW4tcnVsZTogbWVkaXVtIG1lZGl1bSAjMWYxZjFmO1xcclxcbiAgICAtd2Via2l0LWNvbHVtbi1zcGFuOiAxO1xcclxcbiAgICAtbW96LWNvbHVtbi1zcGFuOiAxO1xcclxcbiAgICBjb2x1bW4tc3BhbjogMTtcXHJcXG4gICAgLXdlYmtpdC1jb2x1bW4td2lkdGg6IGF1dG87XFxyXFxuICAgIC1tb3otY29sdW1uLXdpZHRoOiBhdXRvO1xcclxcbiAgICBjb2x1bW4td2lkdGg6IGF1dG87XFxyXFxuICAgIC13ZWJraXQtY29sdW1uczogYXV0byBhdXRvO1xcclxcbiAgICAtbW96LWNvbHVtbnM6IGF1dG8gYXV0bztcXHJcXG4gICAgY29sdW1uczogYXV0byBhdXRvO1xcclxcbiAgICBjb250ZW50OiBub3JtYWw7XFxyXFxuICAgIGNvdW50ZXItaW5jcmVtZW50OiBub25lO1xcclxcbiAgICBjb3VudGVyLXJlc2V0OiBub25lO1xcclxcbiAgICBjcm9wOiBhdXRvO1xcclxcbiAgICBjdXJzb3I6IGF1dG87XFxyXFxuICAgIGRpcmVjdGlvbjogbHRyO1xcclxcbiAgICBkaXNwbGF5OiBpbmxpbmU7XFxyXFxuICAgIGRvbWluYW50LWJhc2VsaW5lOiBhdXRvO1xcclxcbiAgICBkcm9wLWluaXRpYWwtYWZ0ZXItYWRqdXN0OiB0ZXh0LWFmdGVyLWVkZ2U7XFxyXFxuICAgIGRyb3AtaW5pdGlhbC1hZnRlci1hbGlnbjogYmFzZWxpbmU7XFxyXFxuICAgIGRyb3AtaW5pdGlhbC1iZWZvcmUtYWRqdXN0OiB0ZXh0LWJlZm9yZS1lZGdlO1xcclxcbiAgICBkcm9wLWluaXRpYWwtYmVmb3JlLWFsaWduOiBjYXBzLWhlaWdodDtcXHJcXG4gICAgZHJvcC1pbml0aWFsLXNpemU6IGF1dG87XFxyXFxuICAgIGRyb3AtaW5pdGlhbC12YWx1ZTogaW5pdGlhbDtcXHJcXG4gICAgZWxldmF0aW9uOiBsZXZlbDtcXHJcXG4gICAgZW1wdHktY2VsbHM6IHNob3c7XFxyXFxuICAgIGZpdDogZmlsbDtcXHJcXG4gICAgZml0LXBvc2l0aW9uOiAwJSAwJTtcXHJcXG4gICAgZmxvYXQ6IG5vbmU7XFxyXFxuICAgIGZsb2F0LW9mZnNldDogMCAwO1xcclxcbiAgICBncmlkLWNvbHVtbnM6IG5vbmU7XFxyXFxuICAgIGdyaWQtcm93czogbm9uZTtcXHJcXG4gICAgaGFuZ2luZy1wdW5jdHVhdGlvbjogbm9uZTtcXHJcXG4gICAgaGVpZ2h0OiBhdXRvO1xcclxcbiAgICBoeXBoZW5hdGUtYWZ0ZXI6IGF1dG87XFxyXFxuICAgIGh5cGhlbmF0ZS1iZWZvcmU6IGF1dG87XFxyXFxuICAgIGh5cGhlbmF0ZS1jaGFyYWN0ZXI6IGF1dG87XFxyXFxuICAgIGh5cGhlbmF0ZS1saW5lczogbm8tbGltaXQ7XFxyXFxuICAgIGh5cGhlbmF0ZS1yZXNvdXJjZTogbm9uZTtcXHJcXG4gICAgLXdlYmtpdC1oeXBoZW5zOiBtYW51YWw7XFxyXFxuICAgIC1tb3otaHlwaGVuczogbWFudWFsO1xcclxcbiAgICAtbXMtaHlwaGVuczogbWFudWFsO1xcclxcbiAgICBoeXBoZW5zOiBtYW51YWw7XFxyXFxuICAgIGljb246IGF1dG87XFxyXFxuICAgIGltYWdlLW9yaWVudGF0aW9uOiBhdXRvO1xcclxcbiAgICBpbWFnZS1yZW5kZXJpbmc6IGF1dG87XFxyXFxuICAgIGltYWdlLXJlc29sdXRpb246IG5vcm1hbDtcXHJcXG4gICAgaW5saW5lLWJveC1hbGlnbjogbGFzdDtcXHJcXG4gICAgbGVmdDogYXV0bztcXHJcXG4gICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XFxyXFxuICAgIGxpbmUtc3RhY2tpbmc6IGlubGluZS1saW5lLWhlaWdodCBleGNsdWRlLXJ1YnkgY29uc2lkZXItc2hpZnRzO1xcclxcbiAgICBsaXN0LXN0eWxlOiBkaXNjIG91dHNpZGUgbm9uZTtcXHJcXG4gICAgbWFyZ2luOiAwO1xcclxcbiAgICBtYXJrczogbm9uZTtcXHJcXG4gICAgbWFycXVlZS1kaXJlY3Rpb246IGZvcndhcmQ7XFxyXFxuICAgIG1hcnF1ZWUtbG9vcDogMTtcXHJcXG4gICAgbWFycXVlZS1wbGF5LWNvdW50OiAxO1xcclxcbiAgICBtYXJxdWVlLXNwZWVkOiBub3JtYWw7XFxyXFxuICAgIG1hcnF1ZWUtc3R5bGU6IHNjcm9sbDtcXHJcXG4gICAgbWF4LWhlaWdodDogbm9uZTtcXHJcXG4gICAgbWF4LXdpZHRoOiBub25lO1xcclxcbiAgICBtaW4taGVpZ2h0OiAwO1xcclxcbiAgICBtaW4td2lkdGg6IDA7XFxyXFxuICAgIG1vdmUtdG86IG5vcm1hbDtcXHJcXG4gICAgbmF2LWRvd246IGF1dG87XFxyXFxuICAgIG5hdi1pbmRleDogYXV0bztcXHJcXG4gICAgbmF2LWxlZnQ6IGF1dG87XFxyXFxuICAgIG5hdi1yaWdodDogYXV0bztcXHJcXG4gICAgbmF2LXVwOiBhdXRvO1xcclxcbiAgICBvcGFjaXR5OiAxO1xcclxcbiAgICBvcnBoYW5zOiAyO1xcclxcbiAgICBvdXRsaW5lOiBpbnZlcnQgbm9uZSBtZWRpdW07XFxyXFxuICAgIG91dGxpbmUtb2Zmc2V0OiAwO1xcclxcbiAgICBvdmVyZmxvdzogdmlzaWJsZTtcXHJcXG4gICAgb3ZlcmZsb3ctc3R5bGU6IGF1dG87XFxyXFxuICAgIHBhZGRpbmc6IDA7XFxyXFxuICAgIHBhZ2U6IGF1dG87XFxyXFxuICAgIHBhZ2UtYnJlYWstYWZ0ZXI6IGF1dG87XFxyXFxuICAgIHBhZ2UtYnJlYWstYmVmb3JlOiBhdXRvO1xcclxcbiAgICBwYWdlLWJyZWFrLWluc2lkZTogYXV0bztcXHJcXG4gICAgcGFnZS1wb2xpY3k6IHN0YXJ0O1xcclxcbiAgICAtd2Via2l0LXBlcnNwZWN0aXZlOiBub25lO1xcclxcbiAgICBwZXJzcGVjdGl2ZTogbm9uZTtcXHJcXG4gICAgLXdlYmtpdC1wZXJzcGVjdGl2ZS1vcmlnaW46IDUwJSA1MCU7XFxyXFxuICAgIHBlcnNwZWN0aXZlLW9yaWdpbjogNTAlIDUwJTtcXHJcXG4gICAgcG9zaXRpb246IHN0YXRpYztcXHJcXG4gICAgcHJlc2VudGF0aW9uLWxldmVsOiAwO1xcclxcbiAgICBwdW5jdHVhdGlvbi10cmltOiBub25lO1xcclxcbiAgICBxdW90ZXM6IG5vbmU7XFxyXFxuICAgIHJlbmRlcmluZy1pbnRlbnQ6IGF1dG87XFxyXFxuICAgIHJlc2l6ZTogbm9uZTtcXHJcXG4gICAgcmlnaHQ6IGF1dG87XFxyXFxuICAgIHJvdGF0aW9uOiAwO1xcclxcbiAgICByb3RhdGlvbi1wb2ludDogNTAlIDUwJTtcXHJcXG4gICAgcnVieS1hbGlnbjogYXV0bztcXHJcXG4gICAgcnVieS1vdmVyaGFuZzogbm9uZTtcXHJcXG4gICAgcnVieS1wb3NpdGlvbjogYmVmb3JlO1xcclxcbiAgICBydWJ5LXNwYW46IG5vbmU7XFxyXFxuICAgIHNpemU6IGF1dG87XFxyXFxuICAgIHN0cmluZy1zZXQ6IG5vbmU7XFxyXFxuICAgIHRhYmxlLWxheW91dDogYXV0bztcXHJcXG4gICAgdG9wOiBhdXRvO1xcclxcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogbm9uZTtcXHJcXG4gICAgLW1zLXRyYW5zZm9ybTogbm9uZTtcXHJcXG4gICAgdHJhbnNmb3JtOiBub25lO1xcclxcbiAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IDUwJSA1MCUgMDtcXHJcXG4gICAgLW1zLXRyYW5zZm9ybS1vcmlnaW46IDUwJSA1MCUgMDtcXHJcXG4gICAgdHJhbnNmb3JtLW9yaWdpbjogNTAlIDUwJSAwO1xcclxcbiAgICAtd2Via2l0LXRyYW5zZm9ybS1zdHlsZTogZmxhdDtcXHJcXG4gICAgdHJhbnNmb3JtLXN0eWxlOiBmbGF0O1xcclxcbiAgICB0cmFuc2l0aW9uOiBhbGwgMCBlYXNlIDA7XFxyXFxuICAgIHVuaWNvZGUtYmlkaTogbm9ybWFsO1xcclxcbiAgICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XFxyXFxuICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7XFxyXFxuICAgIHdoaXRlLXNwYWNlLWNvbGxhcHNlOiBjb2xsYXBzZTtcXHJcXG4gICAgd2lkb3dzOiAyO1xcclxcbiAgICB3aWR0aDogYXV0bztcXHJcXG4gICAgd29yZC1icmVhazogbm9ybWFsO1xcclxcbiAgICB3b3JkLXNwYWNpbmc6IG5vcm1hbDtcXHJcXG4gICAgd29yZC13cmFwOiBub3JtYWw7XFxyXFxuICAgIHotaW5kZXg6IGF1dG87XFxyXFxuICAgIHRleHQtYWxpZ246IHN0YXJ0O1xcclxcbiAgICAvKiBBbmQgZGlzYWJsZSBNUyBncmFkaWVudHMgKi9cXHJcXG4gICAgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoZW5hYmxlZD1mYWxzZSk7XFxyXFxuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xcclxcbiAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xcclxcbiAgfVxcclxcbiAgYWRkcmVzcywgYmxvY2txdW90ZSwgZGQsIGRpdiwgZGwsIGR0LCBmaWVsZHNldCwgZm9ybSwgZGl2LmZvcm0sIGZyYW1lLCBmcmFtZXNldCwgaDEsIGgyLCBoMywgaDQsIGg1LCBoNiwgbm9mcmFtZXMsIG9sLCBwLCB1bCwgY2VudGVyLCBkaXIsIGhyLCBtZW51LCBwcmUsIGFydGljbGUsIGFzaWRlLCBjYW52YXMsIGRldGFpbHMsIGZpZ2NhcHRpb24sIGZpZ3VyZSwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCwgbWVudSwgbmF2LCBzZWN0aW9uLCBzdW1tYXJ5IHtcXHJcXG4gICAgZGlzcGxheTogYmxvY2s7XFxyXFxuICB9XFxyXFxuICBsaSB7XFxyXFxuICAgIGRpc3BsYXk6IGxpc3QtaXRlbTtcXHJcXG4gIH1cXHJcXG4gIHRhYmxlIHtcXHJcXG4gICAgZGlzcGxheTogdGFibGU7XFxyXFxuICB9XFxyXFxuICB0ciB7XFxyXFxuICAgIGRpc3BsYXk6IHRhYmxlLXJvdztcXHJcXG4gIH1cXHJcXG4gIHRoZWFkIHtcXHJcXG4gICAgZGlzcGxheTogdGFibGUtaGVhZGVyLWdyb3VwO1xcclxcbiAgfVxcclxcbiAgdGJvZHkge1xcclxcbiAgICBkaXNwbGF5OiB0YWJsZS1yb3ctZ3JvdXA7XFxyXFxuICB9XFxyXFxuICB0Zm9vdCB7XFxyXFxuICAgIGRpc3BsYXk6IHRhYmxlLWZvb3Rlci1ncm91cDtcXHJcXG4gIH1cXHJcXG4gIGNvbCB7XFxyXFxuICAgIGRpc3BsYXk6IHRhYmxlLWNvbHVtbjtcXHJcXG4gIH1cXHJcXG4gIGNvbGdyb3VwIHtcXHJcXG4gICAgZGlzcGxheTogdGFibGUtY29sdW1uLWdyb3VwO1xcclxcbiAgfVxcclxcbiAgdGQsIHRoIHtcXHJcXG4gICAgZGlzcGxheTogdGFibGUtY2VsbDtcXHJcXG4gIH1cXHJcXG4gIGNhcHRpb24ge1xcclxcbiAgICBkaXNwbGF5OiB0YWJsZS1jYXB0aW9uO1xcclxcbiAgfVxcclxcbiAgaW5wdXQsIHNlbGVjdCB7XFxyXFxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXHJcXG4gIH1cXHJcXG4gIGIsIHN0cm9uZyB7XFxyXFxuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xcclxcbiAgfVxcclxcbiAgYiA+IGksIHN0cm9uZyA+IGksIGIgPiBlbSwgc3Ryb25nID4gZW0ge1xcclxcbiAgICBmb250LXdlaWdodDogYm9sZDtcXHJcXG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xcclxcbiAgfVxcclxcbiAgaSA+IHtcXHJcXG4gICAgYiwgc3Ryb25nIHtcXHJcXG4gICAgICBmb250LXdlaWdodDogYm9sZDtcXHJcXG4gICAgICBmb250LXN0eWxlOiBpdGFsaWM7XFxyXFxuICAgIH1cXHJcXG4gIH1cXHJcXG4gIGVtID4ge1xcclxcbiAgICBiLCBzdHJvbmcge1xcclxcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xcclxcbiAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcXHJcXG4gICAgfVxcclxcbiAgfVxcclxcbiAgdGV4dGFyZWEsIGlucHV0IHtcXHJcXG4gICAgY3Vyc29yOiB0ZXh0O1xcclxcbiAgfVxcclxcbn1cXHJcXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLmxvY2FscyA9IHtcblx0XCJyZXNldFwiOiBcIkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0XCIsXG5cdFwiZm9ybVwiOiBcIkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX2Zvcm1cIixcblx0XCJidXR0b25cIjogXCJCb29raW5nU3luY1dpZGdldFV0aWxzX19idXR0b25cIixcblx0XCJsZWdlbmRcIjogXCJCb29raW5nU3luY1dpZGdldFV0aWxzX19sZWdlbmRcIlxufTtcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanNcIjtcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1sxXS51c2VbMV0hLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzFdLnVzZVsyXSEuL2NhbGVuZGFyLnNjc3NcIjtcbiAgICAgIFxuICAgICAgXG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0gPSBzdHlsZVRhZ1RyYW5zZm9ybUZuO1xub3B0aW9ucy5zZXRBdHRyaWJ1dGVzID0gc2V0QXR0cmlidXRlcztcblxuICAgICAgb3B0aW9ucy5pbnNlcnQgPSBpbnNlcnRGbi5iaW5kKG51bGwsIFwiaGVhZFwiKTtcbiAgICBcbm9wdGlvbnMuZG9tQVBJID0gZG9tQVBJO1xub3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQgPSBpbnNlcnRTdHlsZUVsZW1lbnQ7XG5cbnZhciB1cGRhdGUgPSBBUEkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgKiBmcm9tIFwiISEuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1sxXS51c2VbMV0hLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzFdLnVzZVsyXSEuL2NhbGVuZGFyLnNjc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iLCJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qc1wiO1xuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMl0udXNlWzFdIS4uLy4uLy4uL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzJdLnVzZVsyXSEuL3Jlc2V0LnNjc3NcIjtcbiAgICAgIFxuICAgICAgXG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0gPSBzdHlsZVRhZ1RyYW5zZm9ybUZuO1xub3B0aW9ucy5zZXRBdHRyaWJ1dGVzID0gc2V0QXR0cmlidXRlcztcblxuICAgICAgb3B0aW9ucy5pbnNlcnQgPSBpbnNlcnRGbi5iaW5kKG51bGwsIFwiaGVhZFwiKTtcbiAgICBcbm9wdGlvbnMuZG9tQVBJID0gZG9tQVBJO1xub3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQgPSBpbnNlcnRTdHlsZUVsZW1lbnQ7XG5cbnZhciB1cGRhdGUgPSBBUEkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgKiBmcm9tIFwiISEuLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzJdLnVzZVsxXSEuLi8uLi8uLi9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1syXS51c2VbMl0hLi9yZXNldC5zY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBzdHlsZXNJbkRPTSA9IFtdO1xuXG5mdW5jdGlvbiBnZXRJbmRleEJ5SWRlbnRpZmllcihpZGVudGlmaWVyKSB7XG4gIHZhciByZXN1bHQgPSAtMTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0eWxlc0luRE9NLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHN0eWxlc0luRE9NW2ldLmlkZW50aWZpZXIgPT09IGlkZW50aWZpZXIpIHtcbiAgICAgIHJlc3VsdCA9IGk7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBtb2R1bGVzVG9Eb20obGlzdCwgb3B0aW9ucykge1xuICB2YXIgaWRDb3VudE1hcCA9IHt9O1xuICB2YXIgaWRlbnRpZmllcnMgPSBbXTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgaXRlbSA9IGxpc3RbaV07XG4gICAgdmFyIGlkID0gb3B0aW9ucy5iYXNlID8gaXRlbVswXSArIG9wdGlvbnMuYmFzZSA6IGl0ZW1bMF07XG4gICAgdmFyIGNvdW50ID0gaWRDb3VudE1hcFtpZF0gfHwgMDtcbiAgICB2YXIgaWRlbnRpZmllciA9IFwiXCIuY29uY2F0KGlkLCBcIiBcIikuY29uY2F0KGNvdW50KTtcbiAgICBpZENvdW50TWFwW2lkXSA9IGNvdW50ICsgMTtcbiAgICB2YXIgaW5kZXhCeUlkZW50aWZpZXIgPSBnZXRJbmRleEJ5SWRlbnRpZmllcihpZGVudGlmaWVyKTtcbiAgICB2YXIgb2JqID0ge1xuICAgICAgY3NzOiBpdGVtWzFdLFxuICAgICAgbWVkaWE6IGl0ZW1bMl0sXG4gICAgICBzb3VyY2VNYXA6IGl0ZW1bM10sXG4gICAgICBzdXBwb3J0czogaXRlbVs0XSxcbiAgICAgIGxheWVyOiBpdGVtWzVdXG4gICAgfTtcblxuICAgIGlmIChpbmRleEJ5SWRlbnRpZmllciAhPT0gLTEpIHtcbiAgICAgIHN0eWxlc0luRE9NW2luZGV4QnlJZGVudGlmaWVyXS5yZWZlcmVuY2VzKys7XG4gICAgICBzdHlsZXNJbkRPTVtpbmRleEJ5SWRlbnRpZmllcl0udXBkYXRlcihvYmopO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgdXBkYXRlciA9IGFkZEVsZW1lbnRTdHlsZShvYmosIG9wdGlvbnMpO1xuICAgICAgb3B0aW9ucy5ieUluZGV4ID0gaTtcbiAgICAgIHN0eWxlc0luRE9NLnNwbGljZShpLCAwLCB7XG4gICAgICAgIGlkZW50aWZpZXI6IGlkZW50aWZpZXIsXG4gICAgICAgIHVwZGF0ZXI6IHVwZGF0ZXIsXG4gICAgICAgIHJlZmVyZW5jZXM6IDFcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlkZW50aWZpZXJzLnB1c2goaWRlbnRpZmllcik7XG4gIH1cblxuICByZXR1cm4gaWRlbnRpZmllcnM7XG59XG5cbmZ1bmN0aW9uIGFkZEVsZW1lbnRTdHlsZShvYmosIG9wdGlvbnMpIHtcbiAgdmFyIGFwaSA9IG9wdGlvbnMuZG9tQVBJKG9wdGlvbnMpO1xuICBhcGkudXBkYXRlKG9iaik7XG5cbiAgdmFyIHVwZGF0ZXIgPSBmdW5jdGlvbiB1cGRhdGVyKG5ld09iaikge1xuICAgIGlmIChuZXdPYmopIHtcbiAgICAgIGlmIChuZXdPYmouY3NzID09PSBvYmouY3NzICYmIG5ld09iai5tZWRpYSA9PT0gb2JqLm1lZGlhICYmIG5ld09iai5zb3VyY2VNYXAgPT09IG9iai5zb3VyY2VNYXAgJiYgbmV3T2JqLnN1cHBvcnRzID09PSBvYmouc3VwcG9ydHMgJiYgbmV3T2JqLmxheWVyID09PSBvYmoubGF5ZXIpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBhcGkudXBkYXRlKG9iaiA9IG5ld09iaik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFwaS5yZW1vdmUoKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIHVwZGF0ZXI7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGxpc3QsIG9wdGlvbnMpIHtcbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gIGxpc3QgPSBsaXN0IHx8IFtdO1xuICB2YXIgbGFzdElkZW50aWZpZXJzID0gbW9kdWxlc1RvRG9tKGxpc3QsIG9wdGlvbnMpO1xuICByZXR1cm4gZnVuY3Rpb24gdXBkYXRlKG5ld0xpc3QpIHtcbiAgICBuZXdMaXN0ID0gbmV3TGlzdCB8fCBbXTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGFzdElkZW50aWZpZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaWRlbnRpZmllciA9IGxhc3RJZGVudGlmaWVyc1tpXTtcbiAgICAgIHZhciBpbmRleCA9IGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpO1xuICAgICAgc3R5bGVzSW5ET01baW5kZXhdLnJlZmVyZW5jZXMtLTtcbiAgICB9XG5cbiAgICB2YXIgbmV3TGFzdElkZW50aWZpZXJzID0gbW9kdWxlc1RvRG9tKG5ld0xpc3QsIG9wdGlvbnMpO1xuXG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGxhc3RJZGVudGlmaWVycy5sZW5ndGg7IF9pKyspIHtcbiAgICAgIHZhciBfaWRlbnRpZmllciA9IGxhc3RJZGVudGlmaWVyc1tfaV07XG5cbiAgICAgIHZhciBfaW5kZXggPSBnZXRJbmRleEJ5SWRlbnRpZmllcihfaWRlbnRpZmllcik7XG5cbiAgICAgIGlmIChzdHlsZXNJbkRPTVtfaW5kZXhdLnJlZmVyZW5jZXMgPT09IDApIHtcbiAgICAgICAgc3R5bGVzSW5ET01bX2luZGV4XS51cGRhdGVyKCk7XG5cbiAgICAgICAgc3R5bGVzSW5ET00uc3BsaWNlKF9pbmRleCwgMSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGFzdElkZW50aWZpZXJzID0gbmV3TGFzdElkZW50aWZpZXJzO1xuICB9O1xufTsiLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIG1lbW8gPSB7fTtcbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuXG5mdW5jdGlvbiBnZXRUYXJnZXQodGFyZ2V0KSB7XG4gIGlmICh0eXBlb2YgbWVtb1t0YXJnZXRdID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgdmFyIHN0eWxlVGFyZ2V0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0YXJnZXQpOyAvLyBTcGVjaWFsIGNhc2UgdG8gcmV0dXJuIGhlYWQgb2YgaWZyYW1lIGluc3RlYWQgb2YgaWZyYW1lIGl0c2VsZlxuXG4gICAgaWYgKHdpbmRvdy5IVE1MSUZyYW1lRWxlbWVudCAmJiBzdHlsZVRhcmdldCBpbnN0YW5jZW9mIHdpbmRvdy5IVE1MSUZyYW1lRWxlbWVudCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gVGhpcyB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbiBpZiBhY2Nlc3MgdG8gaWZyYW1lIGlzIGJsb2NrZWRcbiAgICAgICAgLy8gZHVlIHRvIGNyb3NzLW9yaWdpbiByZXN0cmljdGlvbnNcbiAgICAgICAgc3R5bGVUYXJnZXQgPSBzdHlsZVRhcmdldC5jb250ZW50RG9jdW1lbnQuaGVhZDtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHRcbiAgICAgICAgc3R5bGVUYXJnZXQgPSBudWxsO1xuICAgICAgfVxuICAgIH1cblxuICAgIG1lbW9bdGFyZ2V0XSA9IHN0eWxlVGFyZ2V0O1xuICB9XG5cbiAgcmV0dXJuIG1lbW9bdGFyZ2V0XTtcbn1cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuXG5cbmZ1bmN0aW9uIGluc2VydEJ5U2VsZWN0b3IoaW5zZXJ0LCBzdHlsZSkge1xuICB2YXIgdGFyZ2V0ID0gZ2V0VGFyZ2V0KGluc2VydCk7XG5cbiAgaWYgKCF0YXJnZXQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb3VsZG4ndCBmaW5kIGEgc3R5bGUgdGFyZ2V0LiBUaGlzIHByb2JhYmx5IG1lYW5zIHRoYXQgdGhlIHZhbHVlIGZvciB0aGUgJ2luc2VydCcgcGFyYW1ldGVyIGlzIGludmFsaWQuXCIpO1xuICB9XG5cbiAgdGFyZ2V0LmFwcGVuZENoaWxkKHN0eWxlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpbnNlcnRCeVNlbGVjdG9yOyIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIGluc2VydFN0eWxlRWxlbWVudChvcHRpb25zKSB7XG4gIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInN0eWxlXCIpO1xuICBvcHRpb25zLnNldEF0dHJpYnV0ZXMoZWxlbWVudCwgb3B0aW9ucy5hdHRyaWJ1dGVzKTtcbiAgb3B0aW9ucy5pbnNlcnQoZWxlbWVudCwgb3B0aW9ucy5vcHRpb25zKTtcbiAgcmV0dXJuIGVsZW1lbnQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaW5zZXJ0U3R5bGVFbGVtZW50OyIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIHNldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcyhzdHlsZUVsZW1lbnQpIHtcbiAgdmFyIG5vbmNlID0gdHlwZW9mIF9fd2VicGFja19ub25jZV9fICE9PSBcInVuZGVmaW5lZFwiID8gX193ZWJwYWNrX25vbmNlX18gOiBudWxsO1xuXG4gIGlmIChub25jZSkge1xuICAgIHN0eWxlRWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJub25jZVwiLCBub25jZSk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXM7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gYXBwbHkoc3R5bGVFbGVtZW50LCBvcHRpb25zLCBvYmopIHtcbiAgdmFyIGNzcyA9IFwiXCI7XG5cbiAgaWYgKG9iai5zdXBwb3J0cykge1xuICAgIGNzcyArPSBcIkBzdXBwb3J0cyAoXCIuY29uY2F0KG9iai5zdXBwb3J0cywgXCIpIHtcIik7XG4gIH1cblxuICBpZiAob2JqLm1lZGlhKSB7XG4gICAgY3NzICs9IFwiQG1lZGlhIFwiLmNvbmNhdChvYmoubWVkaWEsIFwiIHtcIik7XG4gIH1cblxuICB2YXIgbmVlZExheWVyID0gdHlwZW9mIG9iai5sYXllciAhPT0gXCJ1bmRlZmluZWRcIjtcblxuICBpZiAobmVlZExheWVyKSB7XG4gICAgY3NzICs9IFwiQGxheWVyXCIuY29uY2F0KG9iai5sYXllci5sZW5ndGggPiAwID8gXCIgXCIuY29uY2F0KG9iai5sYXllcikgOiBcIlwiLCBcIiB7XCIpO1xuICB9XG5cbiAgY3NzICs9IG9iai5jc3M7XG5cbiAgaWYgKG5lZWRMYXllcikge1xuICAgIGNzcyArPSBcIn1cIjtcbiAgfVxuXG4gIGlmIChvYmoubWVkaWEpIHtcbiAgICBjc3MgKz0gXCJ9XCI7XG4gIH1cblxuICBpZiAob2JqLnN1cHBvcnRzKSB7XG4gICAgY3NzICs9IFwifVwiO1xuICB9XG5cbiAgdmFyIHNvdXJjZU1hcCA9IG9iai5zb3VyY2VNYXA7XG5cbiAgaWYgKHNvdXJjZU1hcCAmJiB0eXBlb2YgYnRvYSAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgIGNzcyArPSBcIlxcbi8qIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsXCIuY29uY2F0KGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KHNvdXJjZU1hcCkpKSksIFwiICovXCIpO1xuICB9IC8vIEZvciBvbGQgSUVcblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgICovXG5cblxuICBvcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtKGNzcywgc3R5bGVFbGVtZW50LCBvcHRpb25zLm9wdGlvbnMpO1xufVxuXG5mdW5jdGlvbiByZW1vdmVTdHlsZUVsZW1lbnQoc3R5bGVFbGVtZW50KSB7XG4gIC8vIGlzdGFuYnVsIGlnbm9yZSBpZlxuICBpZiAoc3R5bGVFbGVtZW50LnBhcmVudE5vZGUgPT09IG51bGwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBzdHlsZUVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzdHlsZUVsZW1lbnQpO1xufVxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5cblxuZnVuY3Rpb24gZG9tQVBJKG9wdGlvbnMpIHtcbiAgdmFyIHN0eWxlRWxlbWVudCA9IG9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMpO1xuICByZXR1cm4ge1xuICAgIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlKG9iaikge1xuICAgICAgYXBwbHkoc3R5bGVFbGVtZW50LCBvcHRpb25zLCBvYmopO1xuICAgIH0sXG4gICAgcmVtb3ZlOiBmdW5jdGlvbiByZW1vdmUoKSB7XG4gICAgICByZW1vdmVTdHlsZUVsZW1lbnQoc3R5bGVFbGVtZW50KTtcbiAgICB9XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZG9tQVBJOyIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIHN0eWxlVGFnVHJhbnNmb3JtKGNzcywgc3R5bGVFbGVtZW50KSB7XG4gIGlmIChzdHlsZUVsZW1lbnQuc3R5bGVTaGVldCkge1xuICAgIHN0eWxlRWxlbWVudC5zdHlsZVNoZWV0LmNzc1RleHQgPSBjc3M7XG4gIH0gZWxzZSB7XG4gICAgd2hpbGUgKHN0eWxlRWxlbWVudC5maXJzdENoaWxkKSB7XG4gICAgICBzdHlsZUVsZW1lbnQucmVtb3ZlQ2hpbGQoc3R5bGVFbGVtZW50LmZpcnN0Q2hpbGQpO1xuICAgIH1cblxuICAgIHN0eWxlRWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjc3MpKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0eWxlVGFnVHJhbnNmb3JtOyIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0aWQ6IG1vZHVsZUlkLFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4vLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuX193ZWJwYWNrX3JlcXVpcmVfXy5tID0gX193ZWJwYWNrX21vZHVsZXNfXztcblxuIiwiLy8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbl9fd2VicGFja19yZXF1aXJlX18ubiA9IChtb2R1bGUpID0+IHtcblx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG5cdFx0KCkgPT4gKG1vZHVsZVsnZGVmYXVsdCddKSA6XG5cdFx0KCkgPT4gKG1vZHVsZSk7XG5cdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsIHsgYTogZ2V0dGVyIH0pO1xuXHRyZXR1cm4gZ2V0dGVyO1xufTsiLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwiLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gKGV4cG9ydHMpID0+IHtcblx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG5cdH1cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5iID0gZG9jdW1lbnQuYmFzZVVSSSB8fCBzZWxmLmxvY2F0aW9uLmhyZWY7XG5cbi8vIG9iamVjdCB0byBzdG9yZSBsb2FkZWQgYW5kIGxvYWRpbmcgY2h1bmtzXG4vLyB1bmRlZmluZWQgPSBjaHVuayBub3QgbG9hZGVkLCBudWxsID0gY2h1bmsgcHJlbG9hZGVkL3ByZWZldGNoZWRcbi8vIFtyZXNvbHZlLCByZWplY3QsIFByb21pc2VdID0gY2h1bmsgbG9hZGluZywgMCA9IGNodW5rIGxvYWRlZFxudmFyIGluc3RhbGxlZENodW5rcyA9IHtcblx0XCJhcHBcIjogMFxufTtcblxuLy8gbm8gY2h1bmsgb24gZGVtYW5kIGxvYWRpbmdcblxuLy8gbm8gcHJlZmV0Y2hpbmdcblxuLy8gbm8gcHJlbG9hZGVkXG5cbi8vIG5vIEhNUlxuXG4vLyBubyBITVIgbWFuaWZlc3RcblxuLy8gbm8gb24gY2h1bmtzIGxvYWRlZFxuXG4vLyBubyBqc29ucCBmdW5jdGlvbiIsIl9fd2VicGFja19yZXF1aXJlX18ubmMgPSB1bmRlZmluZWQ7IiwiLyogZ2xvYmFsIGRvY3VtZW50LCByZXF1aXJlLCB3aW5kb3cgKi9cbmxldCBDYWxlbmRhciA9IHJlcXVpcmUoJy4vY2FsZW5kYXInKTtcblxuQ2FsZW5kYXIgPSBDYWxlbmRhci5kZWZhdWx0O1xuXG4vLyBFeHBvcnQgV2lkZ2V0VXRpbHNcbndpbmRvdy5Cb29raW5nU3luY1dpZGdldFV0aWxzID0gcmVxdWlyZSgnd2lkZ2V0LXV0aWxzJyk7XG5cbi8vIEV4cG9ydCBQb3BwZXJcbndpbmRvdy5Qb3BwZXIgPSByZXF1aXJlKCdAcG9wcGVyanMvY29yZScpO1xuXG5DYWxlbmRhci5pbml0ID0gKG9wdHMpID0+IHtcbiAgY29uc3QgaW5pdGlhbGl6ZWQgPSBbXTtcbiAgY29uc3Qgb3B0aW9ucyAgICAgPSBvcHRzIHx8IHt9O1xuICBjb25zdCBlbGVtZW50cyAgICA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLWJvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldF0nKTtcblxuICBlbGVtZW50cy5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgb3B0aW9ucy5lbCA9IGVsZW1lbnQ7XG4gICAgY29uc3QgY2FsICA9IG5ldyBDYWxlbmRhcihvcHRpb25zKTtcblxuICAgIGluaXRpYWxpemVkLnB1c2goY2FsKTtcbiAgfSk7XG5cbiAgQ2FsZW5kYXIuaW5zdGFuY2VzID0gaW5pdGlhbGl6ZWQ7XG4gIHJldHVybiBpbml0aWFsaXplZDtcbn07XG5cbkNhbGVuZGFyLlZFUlNJT04gPSByZXF1aXJlKCcuLi9wYWNrYWdlLmpzb24nKS52ZXJzaW9uO1xuXG5pZiAoZG9jdW1lbnQucmVhZHlTdGF0ZSAhPT0gJ2xvYWRpbmcnKSB7XG4gIENhbGVuZGFyLmluaXQoKTtcbn0gZWxzZSB7XG4gIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCAoKSA9PiB7XG4gICAgQ2FsZW5kYXIuaW5pdCgpO1xuICB9KTtcbn1cblxud2luZG93LkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXQgPSBDYWxlbmRhcjtcblxuZXhwb3J0IGRlZmF1bHQgQ2FsZW5kYXI7XG4iXSwibmFtZXMiOlsiZ2V0Q29tcG9zaXRlUmVjdCIsImdldExheW91dFJlY3QiLCJsaXN0U2Nyb2xsUGFyZW50cyIsImdldE9mZnNldFBhcmVudCIsImdldENvbXB1dGVkU3R5bGUiLCJvcmRlck1vZGlmaWVycyIsImRlYm91bmNlIiwidmFsaWRhdGVNb2RpZmllcnMiLCJ1bmlxdWVCeSIsImdldEJhc2VQbGFjZW1lbnQiLCJtZXJnZUJ5TmFtZSIsImRldGVjdE92ZXJmbG93IiwiaXNFbGVtZW50IiwiYXV0byIsIklOVkFMSURfRUxFTUVOVF9FUlJPUiIsIklORklOSVRFX0xPT1BfRVJST1IiLCJERUZBVUxUX09QVElPTlMiLCJwbGFjZW1lbnQiLCJtb2RpZmllcnMiLCJzdHJhdGVneSIsImFyZVZhbGlkRWxlbWVudHMiLCJfbGVuIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiYXJncyIsIkFycmF5IiwiX2tleSIsInNvbWUiLCJlbGVtZW50IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwicG9wcGVyR2VuZXJhdG9yIiwiZ2VuZXJhdG9yT3B0aW9ucyIsIl9nZW5lcmF0b3JPcHRpb25zIiwiX2dlbmVyYXRvck9wdGlvbnMkZGVmIiwiZGVmYXVsdE1vZGlmaWVycyIsIl9nZW5lcmF0b3JPcHRpb25zJGRlZjIiLCJkZWZhdWx0T3B0aW9ucyIsImNyZWF0ZVBvcHBlciIsInJlZmVyZW5jZSIsInBvcHBlciIsIm9wdGlvbnMiLCJzdGF0ZSIsIm9yZGVyZWRNb2RpZmllcnMiLCJPYmplY3QiLCJhc3NpZ24iLCJtb2RpZmllcnNEYXRhIiwiZWxlbWVudHMiLCJhdHRyaWJ1dGVzIiwic3R5bGVzIiwiZWZmZWN0Q2xlYW51cEZucyIsImlzRGVzdHJveWVkIiwiaW5zdGFuY2UiLCJzZXRPcHRpb25zIiwic2V0T3B0aW9uc0FjdGlvbiIsImNsZWFudXBNb2RpZmllckVmZmVjdHMiLCJzY3JvbGxQYXJlbnRzIiwiY29udGV4dEVsZW1lbnQiLCJjb25jYXQiLCJmaWx0ZXIiLCJtIiwiZW5hYmxlZCIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsIl9yZWYiLCJuYW1lIiwiZmxpcE1vZGlmaWVyIiwiZmluZCIsIl9yZWYyIiwiY29uc29sZSIsImVycm9yIiwiam9pbiIsIl9nZXRDb21wdXRlZFN0eWxlIiwibWFyZ2luVG9wIiwibWFyZ2luUmlnaHQiLCJtYXJnaW5Cb3R0b20iLCJtYXJnaW5MZWZ0IiwibWFyZ2luIiwicGFyc2VGbG9hdCIsIndhcm4iLCJydW5Nb2RpZmllckVmZmVjdHMiLCJ1cGRhdGUiLCJmb3JjZVVwZGF0ZSIsIl9zdGF0ZSRlbGVtZW50cyIsInJlY3RzIiwicmVzZXQiLCJmb3JFYWNoIiwibW9kaWZpZXIiLCJkYXRhIiwiX19kZWJ1Z19sb29wc19fIiwiaW5kZXgiLCJfc3RhdGUkb3JkZXJlZE1vZGlmaWUiLCJmbiIsIl9zdGF0ZSRvcmRlcmVkTW9kaWZpZTIiLCJfb3B0aW9ucyIsIlByb21pc2UiLCJyZXNvbHZlIiwiZGVzdHJveSIsInRoZW4iLCJvbkZpcnN0VXBkYXRlIiwiX3JlZjMiLCJfcmVmMyRvcHRpb25zIiwiZWZmZWN0IiwiY2xlYW51cEZuIiwibm9vcEZuIiwicHVzaCIsImlzU2hhZG93Um9vdCIsImNvbnRhaW5zIiwicGFyZW50IiwiY2hpbGQiLCJyb290Tm9kZSIsImdldFJvb3ROb2RlIiwibmV4dCIsImlzU2FtZU5vZGUiLCJwYXJlbnROb2RlIiwiaG9zdCIsImlzSFRNTEVsZW1lbnQiLCJyb3VuZCIsImdldFdpbmRvdyIsImlzTGF5b3V0Vmlld3BvcnQiLCJpbmNsdWRlU2NhbGUiLCJpc0ZpeGVkU3RyYXRlZ3kiLCJjbGllbnRSZWN0Iiwic2NhbGVYIiwic2NhbGVZIiwib2Zmc2V0V2lkdGgiLCJ3aWR0aCIsIm9mZnNldEhlaWdodCIsImhlaWdodCIsIndpbmRvdyIsInZpc3VhbFZpZXdwb3J0IiwiYWRkVmlzdWFsT2Zmc2V0cyIsIngiLCJsZWZ0Iiwib2Zmc2V0TGVmdCIsInkiLCJ0b3AiLCJvZmZzZXRUb3AiLCJyaWdodCIsImJvdHRvbSIsInZpZXdwb3J0IiwiZ2V0Vmlld3BvcnRSZWN0IiwiZ2V0RG9jdW1lbnRSZWN0IiwiZ2V0RG9jdW1lbnRFbGVtZW50IiwiZ2V0UGFyZW50Tm9kZSIsImdldE5vZGVOYW1lIiwicmVjdFRvQ2xpZW50UmVjdCIsIm1heCIsIm1pbiIsImdldElubmVyQm91bmRpbmdDbGllbnRSZWN0IiwicmVjdCIsImNsaWVudFRvcCIsImNsaWVudExlZnQiLCJjbGllbnRIZWlnaHQiLCJjbGllbnRXaWR0aCIsImdldENsaWVudFJlY3RGcm9tTWl4ZWRUeXBlIiwiY2xpcHBpbmdQYXJlbnQiLCJnZXRDbGlwcGluZ1BhcmVudHMiLCJjbGlwcGluZ1BhcmVudHMiLCJjYW5Fc2NhcGVDbGlwcGluZyIsImluZGV4T2YiLCJwb3NpdGlvbiIsImNsaXBwZXJFbGVtZW50IiwiZ2V0Q2xpcHBpbmdSZWN0IiwiYm91bmRhcnkiLCJyb290Qm91bmRhcnkiLCJtYWluQ2xpcHBpbmdQYXJlbnRzIiwiZmlyc3RDbGlwcGluZ1BhcmVudCIsImNsaXBwaW5nUmVjdCIsInJlZHVjZSIsImFjY1JlY3QiLCJnZXROb2RlU2Nyb2xsIiwiZ2V0V2luZG93U2Nyb2xsQmFyWCIsImlzU2Nyb2xsUGFyZW50IiwiaXNFbGVtZW50U2NhbGVkIiwiZWxlbWVudE9yVmlydHVhbEVsZW1lbnQiLCJvZmZzZXRQYXJlbnQiLCJpc0ZpeGVkIiwiaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQiLCJvZmZzZXRQYXJlbnRJc1NjYWxlZCIsImRvY3VtZW50RWxlbWVudCIsInNjcm9sbCIsInNjcm9sbExlZnQiLCJzY3JvbGxUb3AiLCJvZmZzZXRzIiwib3duZXJEb2N1bWVudCIsImRvY3VtZW50IiwiZ2V0V2luZG93U2Nyb2xsIiwiX2VsZW1lbnQkb3duZXJEb2N1bWVuIiwiaHRtbCIsIndpblNjcm9sbCIsImJvZHkiLCJzY3JvbGxXaWR0aCIsInNjcm9sbEhlaWdodCIsImRpcmVjdGlvbiIsImdldEhUTUxFbGVtZW50U2Nyb2xsIiwiTWF0aCIsImFicyIsIm5vZGVOYW1lIiwidG9Mb3dlckNhc2UiLCJub2RlIiwiaXNUYWJsZUVsZW1lbnQiLCJnZXRVQVN0cmluZyIsImdldFRydWVPZmZzZXRQYXJlbnQiLCJnZXRDb250YWluaW5nQmxvY2siLCJpc0ZpcmVmb3giLCJ0ZXN0IiwiaXNJRSIsImVsZW1lbnRDc3MiLCJjdXJyZW50Tm9kZSIsImNzcyIsInRyYW5zZm9ybSIsInBlcnNwZWN0aXZlIiwiY29udGFpbiIsIndpbGxDaGFuZ2UiLCJhc3NpZ25lZFNsb3QiLCJnZXRTY3JvbGxQYXJlbnQiLCJ3aW4iLCJsYXlvdXRWaWV3cG9ydCIsInRvU3RyaW5nIiwiZGVmYXVsdFZpZXciLCJwYWdlWE9mZnNldCIsInBhZ2VZT2Zmc2V0IiwiT3duRWxlbWVudCIsIkVsZW1lbnQiLCJIVE1MRWxlbWVudCIsIlNoYWRvd1Jvb3QiLCJvdmVyZmxvdyIsIm92ZXJmbG93WCIsIm92ZXJmbG93WSIsImxpc3QiLCJzY3JvbGxQYXJlbnQiLCJpc0JvZHkiLCJ0YXJnZXQiLCJ1cGRhdGVkTGlzdCIsImJhc2VQbGFjZW1lbnRzIiwic3RhcnQiLCJlbmQiLCJ2YXJpYXRpb25QbGFjZW1lbnRzIiwiYWNjIiwicGxhY2VtZW50cyIsImJlZm9yZVJlYWQiLCJyZWFkIiwiYWZ0ZXJSZWFkIiwiYmVmb3JlTWFpbiIsIm1haW4iLCJhZnRlck1haW4iLCJiZWZvcmVXcml0ZSIsIndyaXRlIiwiYWZ0ZXJXcml0ZSIsIm1vZGlmaWVyUGhhc2VzIiwiY3JlYXRlUG9wcGVyQmFzZSIsImNyZWF0ZVBvcHBlckxpdGUiLCJhcHBseVN0eWxlcyIsImtleXMiLCJzdHlsZSIsInZhbHVlIiwicmVtb3ZlQXR0cmlidXRlIiwic2V0QXR0cmlidXRlIiwiaW5pdGlhbFN0eWxlcyIsImFycm93Iiwic3R5bGVQcm9wZXJ0aWVzIiwiaGFzT3duUHJvcGVydHkiLCJwcm9wZXJ0eSIsImF0dHJpYnV0ZSIsInBoYXNlIiwicmVxdWlyZXMiLCJnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQiLCJ3aXRoaW4iLCJtZXJnZVBhZGRpbmdPYmplY3QiLCJleHBhbmRUb0hhc2hNYXAiLCJ0b1BhZGRpbmdPYmplY3QiLCJwYWRkaW5nIiwiX3N0YXRlJG1vZGlmaWVyc0RhdGEkIiwiYXJyb3dFbGVtZW50IiwicG9wcGVyT2Zmc2V0cyIsImJhc2VQbGFjZW1lbnQiLCJheGlzIiwiaXNWZXJ0aWNhbCIsImxlbiIsInBhZGRpbmdPYmplY3QiLCJhcnJvd1JlY3QiLCJtaW5Qcm9wIiwibWF4UHJvcCIsImVuZERpZmYiLCJzdGFydERpZmYiLCJhcnJvd09mZnNldFBhcmVudCIsImNsaWVudFNpemUiLCJjZW50ZXJUb1JlZmVyZW5jZSIsImNlbnRlciIsIm9mZnNldCIsImF4aXNQcm9wIiwiY2VudGVyT2Zmc2V0IiwiX29wdGlvbnMkZWxlbWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJyZXF1aXJlc0lmRXhpc3RzIiwiZ2V0VmFyaWF0aW9uIiwidW5zZXRTaWRlcyIsInJvdW5kT2Zmc2V0c0J5RFBSIiwiZHByIiwiZGV2aWNlUGl4ZWxSYXRpbyIsIm1hcFRvU3R5bGVzIiwiX09iamVjdCRhc3NpZ24yIiwicG9wcGVyUmVjdCIsInZhcmlhdGlvbiIsImdwdUFjY2VsZXJhdGlvbiIsImFkYXB0aXZlIiwicm91bmRPZmZzZXRzIiwiX29mZnNldHMkeCIsIl9vZmZzZXRzJHkiLCJoYXNYIiwiaGFzWSIsInNpZGVYIiwic2lkZVkiLCJoZWlnaHRQcm9wIiwid2lkdGhQcm9wIiwib2Zmc2V0WSIsIm9mZnNldFgiLCJjb21tb25TdHlsZXMiLCJfcmVmNCIsIl9PYmplY3QkYXNzaWduIiwiY29tcHV0ZVN0eWxlcyIsIl9yZWY1IiwiX29wdGlvbnMkZ3B1QWNjZWxlcmF0IiwiX29wdGlvbnMkYWRhcHRpdmUiLCJfb3B0aW9ucyRyb3VuZE9mZnNldHMiLCJ0cmFuc2l0aW9uUHJvcGVydHkiLCJwYXNzaXZlIiwiX29wdGlvbnMkc2Nyb2xsIiwiX29wdGlvbnMkcmVzaXplIiwicmVzaXplIiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJnZXRPcHBvc2l0ZVBsYWNlbWVudCIsImdldE9wcG9zaXRlVmFyaWF0aW9uUGxhY2VtZW50IiwiY29tcHV0ZUF1dG9QbGFjZW1lbnQiLCJnZXRFeHBhbmRlZEZhbGxiYWNrUGxhY2VtZW50cyIsIm9wcG9zaXRlUGxhY2VtZW50IiwiZmxpcCIsIl9za2lwIiwiX29wdGlvbnMkbWFpbkF4aXMiLCJtYWluQXhpcyIsImNoZWNrTWFpbkF4aXMiLCJfb3B0aW9ucyRhbHRBeGlzIiwiYWx0QXhpcyIsImNoZWNrQWx0QXhpcyIsInNwZWNpZmllZEZhbGxiYWNrUGxhY2VtZW50cyIsImZhbGxiYWNrUGxhY2VtZW50cyIsImFsdEJvdW5kYXJ5IiwiX29wdGlvbnMkZmxpcFZhcmlhdGlvIiwiZmxpcFZhcmlhdGlvbnMiLCJhbGxvd2VkQXV0b1BsYWNlbWVudHMiLCJwcmVmZXJyZWRQbGFjZW1lbnQiLCJpc0Jhc2VQbGFjZW1lbnQiLCJyZWZlcmVuY2VSZWN0IiwiY2hlY2tzTWFwIiwiTWFwIiwibWFrZUZhbGxiYWNrQ2hlY2tzIiwiZmlyc3RGaXR0aW5nUGxhY2VtZW50IiwiaSIsIl9iYXNlUGxhY2VtZW50IiwiaXNTdGFydFZhcmlhdGlvbiIsIm1haW5WYXJpYXRpb25TaWRlIiwiYWx0VmFyaWF0aW9uU2lkZSIsImNoZWNrcyIsImV2ZXJ5IiwiY2hlY2siLCJzZXQiLCJudW1iZXJPZkNoZWNrcyIsIl9sb29wIiwiX2kiLCJmaXR0aW5nUGxhY2VtZW50IiwiZ2V0Iiwic2xpY2UiLCJfcmV0IiwiZ2V0U2lkZU9mZnNldHMiLCJwcmV2ZW50ZWRPZmZzZXRzIiwiaXNBbnlTaWRlRnVsbHlDbGlwcGVkIiwic2lkZSIsImhpZGUiLCJwcmV2ZW50T3ZlcmZsb3ciLCJyZWZlcmVuY2VPdmVyZmxvdyIsImVsZW1lbnRDb250ZXh0IiwicG9wcGVyQWx0T3ZlcmZsb3ciLCJyZWZlcmVuY2VDbGlwcGluZ09mZnNldHMiLCJwb3BwZXJFc2NhcGVPZmZzZXRzIiwiaXNSZWZlcmVuY2VIaWRkZW4iLCJoYXNQb3BwZXJFc2NhcGVkIiwiZGVmYXVsdCIsImV2ZW50TGlzdGVuZXJzIiwiZGlzdGFuY2VBbmRTa2lkZGluZ1RvWFkiLCJpbnZlcnREaXN0YW5jZSIsInNraWRkaW5nIiwiZGlzdGFuY2UiLCJfb3B0aW9ucyRvZmZzZXQiLCJfZGF0YSRzdGF0ZSRwbGFjZW1lbnQiLCJjb21wdXRlT2Zmc2V0cyIsImdldEFsdEF4aXMiLCJ3aXRoaW5NYXhDbGFtcCIsImdldEZyZXNoU2lkZU9iamVjdCIsIm1hdGhNaW4iLCJtYXRoTWF4IiwiX29wdGlvbnMkdGV0aGVyIiwidGV0aGVyIiwiX29wdGlvbnMkdGV0aGVyT2Zmc2V0IiwidGV0aGVyT2Zmc2V0IiwidGV0aGVyT2Zmc2V0VmFsdWUiLCJub3JtYWxpemVkVGV0aGVyT2Zmc2V0VmFsdWUiLCJvZmZzZXRNb2RpZmllclN0YXRlIiwiX29mZnNldE1vZGlmaWVyU3RhdGUkIiwibWFpblNpZGUiLCJhbHRTaWRlIiwiYWRkaXRpdmUiLCJtaW5MZW4iLCJtYXhMZW4iLCJhcnJvd1BhZGRpbmdPYmplY3QiLCJhcnJvd1BhZGRpbmdNaW4iLCJhcnJvd1BhZGRpbmdNYXgiLCJhcnJvd0xlbiIsIm1pbk9mZnNldCIsIm1heE9mZnNldCIsImNsaWVudE9mZnNldCIsIm9mZnNldE1vZGlmaWVyVmFsdWUiLCJ0ZXRoZXJNaW4iLCJ0ZXRoZXJNYXgiLCJwcmV2ZW50ZWRPZmZzZXQiLCJfb2Zmc2V0TW9kaWZpZXJTdGF0ZSQyIiwiX21haW5TaWRlIiwiX2FsdFNpZGUiLCJfb2Zmc2V0IiwiX21pbiIsIl9tYXgiLCJpc09yaWdpblNpZGUiLCJfb2Zmc2V0TW9kaWZpZXJWYWx1ZSIsIl90ZXRoZXJNaW4iLCJfdGV0aGVyTWF4IiwiX3ByZXZlbnRlZE9mZnNldCIsImFsbFBsYWNlbWVudHMiLCJfb3B0aW9ucyRhbGxvd2VkQXV0b1AiLCJhbGxvd2VkUGxhY2VtZW50cyIsIm92ZXJmbG93cyIsInNvcnQiLCJhIiwiYiIsImNvbW1vblgiLCJjb21tb25ZIiwicGVuZGluZyIsInVuZGVmaW5lZCIsIl9vcHRpb25zJHBsYWNlbWVudCIsIl9vcHRpb25zJHN0cmF0ZWd5IiwiX29wdGlvbnMkYm91bmRhcnkiLCJfb3B0aW9ucyRyb290Qm91bmRhcnkiLCJfb3B0aW9ucyRlbGVtZW50Q29udGUiLCJfb3B0aW9ucyRhbHRCb3VuZGFyeSIsIl9vcHRpb25zJHBhZGRpbmciLCJhbHRDb250ZXh0IiwiY2xpcHBpbmdDbGllbnRSZWN0IiwicmVmZXJlbmNlQ2xpZW50UmVjdCIsInBvcHBlckNsaWVudFJlY3QiLCJlbGVtZW50Q2xpZW50UmVjdCIsIm92ZXJmbG93T2Zmc2V0cyIsIm9mZnNldERhdGEiLCJrZXkiLCJtdWx0aXBseSIsImhhc2hNYXAiLCJmb3JtYXQiLCJzdHIiLCJwIiwiYyIsInJlcGxhY2UiLCJzcGxpdCIsImhhc2giLCJtYXRjaGVkIiwibWVyZ2VkIiwiY3VycmVudCIsImV4aXN0aW5nIiwibWFwIiwib3JkZXIiLCJ2aXNpdGVkIiwiU2V0IiwicmVzdWx0IiwiYWRkIiwiZGVwIiwiaGFzIiwiZGVwTW9kaWZpZXIiLCJhcnIiLCJpZGVudGlmaWVycyIsIml0ZW0iLCJpZGVudGlmaWVyIiwidWFEYXRhIiwibmF2aWdhdG9yIiwidXNlckFnZW50RGF0YSIsImJyYW5kcyIsImJyYW5kIiwidmVyc2lvbiIsInVzZXJBZ2VudCIsIklOVkFMSURfTU9ESUZJRVJfRVJST1IiLCJNSVNTSU5HX0RFUEVOREVOQ1lfRVJST1IiLCJWQUxJRF9QUk9QRVJUSUVTIiwic2VsZiIsIlN0cmluZyIsImlzQXJyYXkiLCJzIiwicmVxdWlyZW1lbnQiLCJtb2QiLCJ2IiwibW9kdWxlIiwiZXhwb3J0cyIsImNzc1dpdGhNYXBwaW5nVG9TdHJpbmciLCJjb250ZW50IiwibmVlZExheWVyIiwibW9kdWxlcyIsIm1lZGlhIiwiZGVkdXBlIiwic3VwcG9ydHMiLCJsYXllciIsImFscmVhZHlJbXBvcnRlZE1vZHVsZXMiLCJrIiwiaWQiLCJfayIsInVybCIsIl9fZXNNb2R1bGUiLCJuZWVkUXVvdGVzIiwiY3NzTWFwcGluZyIsImJ0b2EiLCJiYXNlNjQiLCJ1bmVzY2FwZSIsImVuY29kZVVSSUNvbXBvbmVudCIsIkpTT04iLCJzdHJpbmdpZnkiLCJzb3VyY2VNYXBwaW5nIiwic291cmNlVVJMcyIsInNvdXJjZXMiLCJzb3VyY2UiLCJzb3VyY2VSb290IiwiY3VycmVuY3lTeW1ib2xNYXAiLCJyZXF1aXJlIiwiZ2V0U3ltYm9sRnJvbUN1cnJlbmN5IiwiY3VycmVuY3lDb2RlIiwiY29kZSIsInRvVXBwZXJDYXNlIiwicHJvdG90eXBlIiwiY2FsbCIsIkFFRCIsIkFGTiIsIkFMTCIsIkFNRCIsIkFORyIsIkFPQSIsIkFSUyIsIkFVRCIsIkFXRyIsIkFaTiIsIkJBTSIsIkJCRCIsIkJEVCIsIkJHTiIsIkJIRCIsIkJJRiIsIkJNRCIsIkJORCIsIkJPQiIsIkJPViIsIkJSTCIsIkJTRCIsIkJUQyIsIkJUTiIsIkJXUCIsIkJZTiIsIkJZUiIsIkJaRCIsIkNBRCIsIkNERiIsIkNIRSIsIkNIRiIsIkNIVyIsIkNMRiIsIkNMUCIsIkNOWSIsIkNPUCIsIkNPVSIsIkNSQyIsIkNVQyIsIkNVUCIsIkNWRSIsIkNaSyIsIkRKRiIsIkRLSyIsIkRPUCIsIkRaRCIsIkVFSyIsIkVHUCIsIkVSTiIsIkVUQiIsIkVUSCIsIkVVUiIsIkZKRCIsIkZLUCIsIkdCUCIsIkdFTCIsIkdHUCIsIkdIQyIsIkdIUyIsIkdJUCIsIkdNRCIsIkdORiIsIkdUUSIsIkdZRCIsIkhLRCIsIkhOTCIsIkhSSyIsIkhURyIsIkhVRiIsIklEUiIsIklMUyIsIklNUCIsIklOUiIsIklRRCIsIklSUiIsIklTSyIsIkpFUCIsIkpNRCIsIkpPRCIsIkpQWSIsIktFUyIsIktHUyIsIktIUiIsIktNRiIsIktQVyIsIktSVyIsIktXRCIsIktZRCIsIktaVCIsIkxBSyIsIkxCUCIsIkxLUiIsIkxSRCIsIkxTTCIsIkxUQyIsIkxUTCIsIkxWTCIsIkxZRCIsIk1BRCIsIk1ETCIsIk1HQSIsIk1LRCIsIk1NSyIsIk1OVCIsIk1PUCIsIk1STyIsIk1SVSIsIk1VUiIsIk1WUiIsIk1XSyIsIk1YTiIsIk1YViIsIk1ZUiIsIk1aTiIsIk5BRCIsIk5HTiIsIk5JTyIsIk5PSyIsIk5QUiIsIk5aRCIsIk9NUiIsIlBBQiIsIlBFTiIsIlBHSyIsIlBIUCIsIlBLUiIsIlBMTiIsIlBZRyIsIlFBUiIsIlJNQiIsIlJPTiIsIlJTRCIsIlJVQiIsIlJXRiIsIlNBUiIsIlNCRCIsIlNDUiIsIlNERyIsIlNFSyIsIlNHRCIsIlNIUCIsIlNMTCIsIlNPUyIsIlNSRCIsIlNTUCIsIlNURCIsIlNUTiIsIlNWQyIsIlNZUCIsIlNaTCIsIlRIQiIsIlRKUyIsIlRNVCIsIlRORCIsIlRPUCIsIlRSTCIsIlRSWSIsIlRURCIsIlRWRCIsIlRXRCIsIlRaUyIsIlVBSCIsIlVHWCIsIlVTRCIsIlVZSSIsIlVZVSIsIlVZVyIsIlVaUyIsIlZFRiIsIlZFUyIsIlZORCIsIlZVViIsIldTVCIsIlhBRiIsIlhCVCIsIlhDRCIsIlhPRiIsIlhQRiIsIlhTVSIsIlhVQSIsIllFUiIsIlpBUiIsIlpNVyIsIlpXRCIsIlpXTCIsImdldEZvcm1hdE9wdGlvbnMiLCJ0aW1lem9uZSIsInVzZU9wdGlvbnMiLCJ0eiIsIk51bWJlciIsImlzRmluaXRlIiwiZ2V0VGltZXpvbmVPZmZzZXRNaW51dGVzIiwiZGF0ZSIsImZsb29yIiwiRGF0ZSIsImdldFRpbWV6b25lT2Zmc2V0IiwidHpVcHBlciIsImRlZmF1bHRUaW1lem9uZU5hbWVzIiwiRXJyb3IiLCJzdHJmdGltZSIsInRvRGF0ZSIsInRvSlNEYXRlIiwidG9rZW5zIiwiVGltZXN0YW1wUGFyc2VyIiwicGFyc2VGb3JtYXRTdHJpbmciLCJ0aW1lem9uZU9mZnNldE1pbnV0ZXMiLCJ0ekRhdGUiLCJzZXRVVENNaW51dGVzIiwiZ2V0VVRDTWludXRlcyIsIm91dHB1dCIsInRva2VuIiwiRGlyZWN0aXZlIiwiVG9rZW4iLCJzdHJwdGltZSIsInRpbWVzdGFtcCIsInBhcnNlciIsInBhcnNlIiwiZ2V0RGF0ZSIsInN0cnRpbWUiLCJlbmdsaXNoIiwiZXJhTmFtZXMiLCJtZXJpZGllbU5hbWVzIiwic2hvcnRXZWVrZGF5TmFtZXMiLCJsb25nV2Vla2RheU5hbWVzIiwic2hvcnRNb250aE5hbWVzIiwibG9uZ01vbnRoTmFtZXMiLCJvcmRpbmFsVHJhbnNmb3JtIiwibnVtYmVyIiwiZGlnaXQiLCJsZWZ0UGFkIiwiY2hhciIsInRleHQiLCJzdHJpbmciLCJ3cml0ZVRpbWV6b25lT2Zmc2V0Iiwib2Zmc2V0TWludXRlcyIsImFic09mZnNldCIsInNpZ24iLCJob3VyIiwibWludXRlIiwiZ2V0RGF5T2ZXZWVrIiwieWVhciIsImdldFVUQ0Z1bGxZZWFyIiwibW9udGgiLCJnZXRVVENNb250aCIsImRheSIsImdldFVUQ0RhdGUiLCJnZXREYXlPZlllYXIiLCJsZW5ndGhzIiwibW9udGhMZW5ndGhzIiwiZm9yWWVhciIsIm1vbnRocyIsImdldFdlZWtPZlllYXJGcm9tU3VuZGF5IiwiZGF5T2ZZZWFyIiwiZmlyc3REYXlPZldlZWsiLCJnZXRGaXJzdFdlZWtkYXlJblllYXIiLCJnZXRXZWVrT2ZZZWFyRnJvbU1vbmRheSIsImRheU9mV2VlayIsInN1bmRheVdlZWsiLCJnZXRJU09XZWVrc0luWWVhciIsInByaW9yWWVhciIsImdldElTT1dlZWtPZlllYXIiLCJ3ZWVrTnVtYmVyIiwiZ2V0SVNPV2Vla0RhdGVZZWFyIiwiY29uc3RydWN0b3IiLCJuYW1lcyIsInBhZExlbmd0aCIsImxpa2VseUxlbmd0aCIsIm1pbmltdW0iLCJtYXhpbXVtIiwiY2FuQmVOZWdhdGl2ZSIsInJld3JpdGUiLCJwYXJzZUZ1bmN0aW9uIiwid3JpdGVGdW5jdGlvbiIsInN0b3JlRnVuY3Rpb24iLCJzdG9yZSIsImdldEJ5TmFtZSIsImRpcmVjdGl2ZSIsImlzT3JkaW5hbCIsImdldENhbkJlTmVnYXRpdmUiLCJnZXRMaWtlbHlMZW5ndGgiLCJnZXRSZXdyaXRlUGFyc2VkIiwicmV3cml0ZVBhcnNlZFZhbHVlIiwiZXhwYW5kZWRGcm9tIiwiaGFzUGFyc2VGdW5jdGlvbiIsImhhc1N0b3JlRnVuY3Rpb24iLCJudW1iZXJJbkJvdW5kcyIsImdldEJvdW5kc1N0cmluZyIsIkRpcmVjdGl2ZVRva2VuIiwicmVzdWx0U3RyaW5nIiwidXBwZXIiLCJTdHJpbmdUb2tlbiIsIkRpcmVjdGl2ZVN0cmluZ1Rva2VuIiwiYWRkQ2hhcmFjdGVyIiwiY2giLCJwYXJzZVdlZWtkYXlOYW1lIiwiZ2V0VVRDRGF5IiwicGFyc2VNb250aE5hbWUiLCJjZW50dXJ5IiwiZGF5T2ZNb250aCIsIm1pY3Jvc2Vjb25kIiwiZ2V0VVRDTWlsbGlzZWNvbmRzIiwiaXNvVHdvRGlnaXRZZWFyIiwiaXNvWWVhciIsImdldFVUQ0hvdXJzIiwibWlsbGlzZWNvbmQiLCJtZXJpZGllbSIsInBhcnNlTWVyaWRpZW1OYW1lIiwibWljcm9zZWNvbmRzU2luY2VFcG9jaCIsImdldFRpbWUiLCJzZWNvbmRzU2luY2VFcG9jaCIsInNlY29uZCIsImdldFVUQ1NlY29uZHMiLCJ3ZWVrT2ZZZWFyRnJvbVN1bmRheSIsImlzb1dlZWtPZlllYXIiLCJ3ZWVrT2ZZZWFyRnJvbU1vbmRheSIsInR3b0RpZ2l0WWVhciIsInBhcnNlVGltZXpvbmVPZmZzZXQiLCJ0ekxpc3QiLCJnZXRUaW1lem9uZU5hbWVMaXN0IiwicGFyc2VJbmRleEluTGlzdCIsInRpbWV6b25lTmFtZXMiLCJlcmEiLCJwYXJzZUVyYU5hbWUiLCJUaW1lc3RhbXBQYXJzZUVycm9yIiwicmVhc29uIiwiY3VycmVudFRva2VuIiwibWVzc2FnZSIsImNhcHR1cmVTdGFja1RyYWNlIiwic3RhY2siLCJjcmVhdGUiLCJpc0RpZ2l0IiwiZ2V0WWVhckZyb21Ud29EaWdpdHMiLCJnZXRNb250aEZyb21EYXlPZlllYXIiLCJkYXlzIiwiZ2V0RGF5T2ZNb250aEZyb21EYXlPZlllYXIiLCJnZXREYXRlRnJvbUlTT1dlZWtEYXRlIiwid2Vla2RheU9mSmFuNCIsImRheXNJblllYXIiLCJpc0xlYXBZZWFyIiwiZ2V0RGF0ZUZyb21TdW5kYXlXZWVrRGF0ZSIsIndlZWtPZlllYXIiLCJnZXREYXRlRnJvbU1vbmRheVdlZWtEYXRlIiwic3VuZGF5RGF5T2ZZZWFyIiwiZm9ya0xlbmd0aCIsIm1pbGxpc2Vjb25kc1NpbmNlRXBvY2giLCJnZXRUaW1lem9uZU9mZnNldE9mRGF0ZSIsIm9mZnNldFNpZ24iLCJ0b3RhbE1pbnV0ZXMiLCJnZXRGdWxsWWVhciIsInNldFVUQ0Z1bGxZZWFyIiwic2V0VVRDTW9udGgiLCJzZXRVVENEYXRlIiwic2V0VVRDSG91cnMiLCJzZXRVVENTZWNvbmRzIiwic2V0VVRDTWlsbGlzZWNvbmRzIiwiY29weSIsImZvcmsiLCJzdGFydFRva2VuSW5kZXgiLCJwYXJzZVN0cmluZ1Rva2VuIiwicGFyc2VBbWJpZ3VvdXNOdW1iZXIiLCJwYXJzZU51bWJlciIsInRva2VuSW5kZXgiLCJsYXN0V2hvbGVFcnJvciIsImxlbmd0aExpbWl0IiwiSW5maW5pdHkiLCJuZWdhdGl2ZSIsInRyaW0iLCJpc0ludGVnZXIiLCJvcmRpbmFsIiwicG9zc2libGUiLCJwb3NzaWJsZUNvdW50IiwibWF0Y2hJbmRleCIsIm1hdGNoTGVuZ3RoIiwiaiIsInRpbWV6b25lTmFtZUxpc3QiLCJob3VycyIsIm1pbnV0ZXMiLCJmb3JtYXRTdHJpbmciLCJkaXIiLCJ6dWx1VGltZXpvbmUiLCJjb21tb24iLCJsZWFwIiwiaXNPYmplY3QiLCJzZXJpYWxpemUiLCJ0b1VuZGVyc2NvcmUiLCJhamF4IiwiYXBpVXJsIiwic3VjY2VzcyIsInBhcmFtcyIsIm1ldGhvZCIsInhtbEh0dHAiLCJYTUxIdHRwUmVxdWVzdCIsImlzU3VjY2VzcyIsInN0YXR1cyIsIm9wZW4iLCJzZXRSZXF1ZXN0SGVhZGVyIiwib25yZWFkeXN0YXRlY2hhbmdlIiwicmVzcG9uc2UiLCJyZWFkeVN0YXRlIiwicmVzcG9uc2VUZXh0IiwiZSIsInNlbmQiLCJ0b0xvY2FsZVN0cmluZ1N1cHBvcnRzT3B0aW9ucyIsIkludGwiLCJOdW1iZXJGb3JtYXQiLCJjdXJyZW5jeUZvcm1hdHRlciIsImxhbmciLCJjdXJyZW5jeSIsIm1pbmltdW1GcmFjdGlvbkRpZ2l0cyIsIm1heGltdW1GcmFjdGlvbkRpZ2l0cyIsImlzRG9sbGFyIiwiY3VycmVuY3lEaXNwbGF5IiwibnVtYmVyRm9ybWF0IiwiZGF5c0luTW9udGgiLCJtb250aExlbmd0aCIsInJlbW92ZUNsYXNzIiwic2V0Q2xhc3NOYW1lIiwiZ2V0Q2xhc3NOYW1lIiwiYWRkQ2xhc3MiLCJlbCIsImNsYXNzTmFtZXMiLCJjbGFzc0xpc3QiLCJjbHMiLCJjcmVhdGVFbGVtZW50IiwiYXR0cnMiLCJkZXN0cm95RWxlbWVudCIsInJlbW92ZUNoaWxkIiwiZWxlbWVudEZyb21TdHJpbmciLCJpbm5lckhUTUwiLCJjaGlsZHJlbiIsImZpbmRCeUNsYXNzTmFtZSIsImNvbnRleHQiLCJjbGFzc05hbWUiLCJTVkdBbmltYXRlZFN0cmluZyIsImJhc2VWYWwiLCJ0cmF2ZXJzZVRvUGFyZW50V2l0aEF0dHIiLCJnZXRQYXJlbnRBdHRyaWJ1dGUiLCJhdHRyIiwiaGFzQ2xhc3MiLCJSZWdFeHAiLCJpcyIsImlzSW5zaWRlIiwidGFnTmFtZSIsInJlbW92ZSIsInJlZ2V4IiwiZ2V0QXR0cmlidXRlIiwiRW1pdHRlciIsIm9uIiwiZXZlbnQiLCJsaXN0ZW5lciIsImV2ZW50cyIsIm9uY2UiLCJvZmYiLCJhcHBseSIsImxpc3RlbmVycyIsInNwbGljZSIsImVtaXQiLCJpc0Z1bmN0aW9uIiwiZiIsImlzTmFOUG9seWZpbGwiLCJvIiwiaXNOYU4iLCJpc051bWVyaWMiLCJuIiwicGFyc2VJbnQiLCJ0cmF2ZXJzZU9iaiIsImRhc2hUb0NhcGl0YWwiLCJ1bmRlcnNjb3JlVG9DYXBpdGFsIiwiY2FwaXRhbGl6ZU9iaiIsIm9iamVjdCIsIm1lcmdlIiwib2JqMSIsIm9iajIiLCJpc0RlZXAiLCJvYmozIiwicGljayIsIm9iaiIsInQiLCJwaWNrZWRPYmoiLCJjb21wb25lbnQiLCJmbktleSIsImZuVmFsdWUiLCJjdXJyIiwibmV4dFByb3BlcnR5IiwiaXNTdHJpbmciLCJ2YWxpZGF0ZSIsImlzQmxhbmsiLCJpc0VtYWlsIiwibWF0Y2giLCJpc0JvdW5kZWRCeSIsImdlbkFycmF5UmFuZ2UiLCJwYXJzZUlTT1N0cmluZyIsImFyclN0ciIsIkNhbGVuZGFyVHJlZSIsInZhbGlkYXRlQ2VsbCIsInRyZWUiLCJhZGRUcmVlIiwic2VsZWN0UmFuZ2UiLCJyYW5nZSIsInNlbGVjdERheXNJbk1vbnRoIiwibW9udGhEYXlzIiwic2VsZWN0TW9udGhzSW5ZZWFyIiwiaXNWYWxpZCIsImlzUmFuZ2VWYWxpZCIsInNlbGVjdGlvbiIsIm1vbnRoUmFuZ2UiLCJzdGFydERheSIsImVuZERheSIsInNlbGVjdERheSIsImZpbHRlclZhbGlkcyIsImNlbGwiLCJyZXBsYWNlTWFwcyIsInVwZGF0ZWRBdCIsIm1hcHNUb1RyZWUiLCJyZW1vdmVNYXAiLCJtYXBzIiwibWFwU3RhcnRBdCIsImF2YWlsYWJpbGl0eSIsIm5pZ2h0bHlfcmF0ZXMiLCJtaW5pbXVtX3N0YXlzIiwiYXZhaWwiLCJyYXRlcyIsIm1pbk1hcCIsImRheVNoaWZ0IiwicHJldmlvdXNEYXRlIiwibWluU3RheSIsInJhdGUiLCJpc0F2YWlsYWJsZSIsInByZXZBdmFpbGFibGUiLCJpc01vcm5pbmdCbG9ja2VkIiwiaXNBdmFpbGFibGVPdXQiLCJnZXREYXlQcm9wZXJ0eSIsInByb3AiLCJpc0RheURpc2FibGVkIiwidGVtcGxhdGVzIiwiY29uZmlnIiwibG9jYWxlcyIsImRhdGVUb0lzbyIsImlzTGF0ZXIiLCJpc0N1cnJlbnQiLCJ2YWxpZGF0aW9uT2ZDZWxsIiwidEZvcm1hdHRlciIsImRhdGVUb0FycmF5IiwibW9udGhEaWZmIiwidXRpbHNTdHlsZXMiLCJDYWxlbmRhciIsIm9wdHMiLCJWRVJTSU9OIiwiQ1NTX1BSRUZJWCIsImNzc1ByZWZpeCIsImxvZ2dlciIsImNvbmZpZ0RhdGFzZXQiLCJkYXRhc2V0IiwiaXNEcm9wRG93biIsImluaXRDYWxlbmRhckRyb3AiLCJsb2NhbGUiLCJmb3JtYXREYXRlIiwic3RhcnRPZldlZWsiLCJjdXJyZW50RGF0ZSIsImdldE1vbnRoIiwieWVhclN0YXJ0IiwibW9udGhTdGFydCIsImRvbSIsImNUcmVlIiwiYWRkTWFwcyIsInN0YXJ0X2RhdGUiLCJpc1NlbGVjdGluZyIsImhpZ2hsaWdodGVkQm91bmRzIiwiaGFzVmFsaWRSYW5nZSIsImlzUmV2ZXJzZVNlbGVjdGFibGUiLCJpbml0IiwiY2FsZW5kYXIiLCJ0aGVtZSIsIm1vbnRoc1dyYXBwZXIiLCJhcHBlbmRDaGlsZCIsImZvcndhcmQiLCJiYWNrIiwicmVuZGVyTW9udGhzIiwiYWRkQnRuc0V2ZW50cyIsInNlbGVjdGFibGUiLCJlbFN0YXJ0QXQiLCJlbEVuZEF0IiwicmVudGFsSWQiLCJpbnB1dHNUb1ZhbHVlcyIsImxvYWRNYXBzIiwiY2hhbmdlU2VsZWN0aW9uT3JkZXIiLCJpc1JldmVyc2UiLCJkZXN0cm95TW9udGhzIiwieWVhckVuZCIsIm1vbnRoRW5kIiwiY3JlYXRlVHJlZSIsImRpc3BsYXlNb250aHMiLCJyZXZlcnNlZCIsImRpcmVjdCIsImFkZE1vbnRoRXZlbnRzIiwiYWN0aW9uc0VuYWJsZWQiLCJlbmFibGVBbGxEYXlzIiwiZGlzYWJsZUJhY2tCdG4iLCJyZWNvdmVyU2VsZWN0aW9ucyIsInNlbGVjdGlvblN0YXJ0Iiwic2VsZWN0U3RhcnQiLCJzZWxlY3Rpb25FbmQiLCJzZWxlY3RFbmQiLCJoaWdoTGlnaHRSYW5nZSIsImlzQmFja0Rpc2FibGVkIiwic3RhcnREYXRlIiwiZGlzYWJsZWQiLCJ0b2dnbGVMb2FkaW5nIiwibG9hZGluZyIsIm1vbnRoVG9SZW5kZXIiLCJtb250aHNQYWdpbmF0aW9uSnVtcCIsInllYXJUb1JlbmRlciIsInByZXZlbnREZWZhdWx0IiwiaXNFbmRGaXJzdCIsInJlc2V0U2VsZWN0aW9uT25Fc2NhcGUiLCJrZXlDb2RlIiwicmVzZXRTZWxlY3Rpb24iLCJkYXRlVmFsdWUiLCJkYXlBbHJlYWR5U2VsZWN0ZWQiLCJyYW5nZVNlbGVjdGVkIiwiaXNQYXN0VG9kYXkiLCJlbmREYXRlRmlyc3RBY3Rpb24iLCJzdGFydERhdGVGaXJzdEFjdGlvbiIsInNlbGVjdGluZ0RpcmVjdCIsInNlbGVjdGluZ1JldmVyc2VkIiwiaGlnaGxpZ2h0ZWQiLCJjb21wbGV0ZVNlbGVjdGlvbiIsImNhbERyb3AiLCJjbG9zZURyb3AiLCJyZW1vdmVIaWdobGlnaHQiLCJjZWxscyIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJob3ZlcmVkIiwiaG92ZXJlZE9mZnNldCIsImNlbGxBIiwiY2VsbEIiLCJjaGFuZ2VIaWdobGlnaHREaXJlY3Rpb24iLCJpc0Rpc2FibGVkTGVmdCIsImlzRGlzYWJsZWRDZW50ZXIiLCJpc0Rpc2FibGVkUmlnaHQiLCJpc0ludmFsaWQiLCJvZmZzZXRDZWxsIiwicmVsYXRlZFRhcmdldCIsImNvbXBhcmVEb2N1bWVudFBvc2l0aW9uIiwiTm9kZSIsIkRPQ1VNRU5UX1BPU0lUSU9OX0NPTlRBSU5FRF9CWSIsImRhdGVBcnJheSIsInNlbGVjdEVuZEFjdGlvbiIsInNlbGVjdFN0YXJ0QWN0aW9uIiwic3dpdGNoSW5wdXRGb2N1cyIsIm9uU2VsZWN0U3RhcnQiLCJvblNlbGVjdEVuZCIsImludmFsaWQiLCJkZXN0cm95VG9vbHRpcCIsInRvb2x0aXBQb3BwZXIiLCJ0b29sdGlwIiwibWF4U3RheSIsImludmFsaWRSYW5nZU1lc3NhZ2UiLCJhbGxvd1Nob3J0ZXJNaW5TdGF5U2VsZWN0aW9uIiwiYWxsb3dMb25nZXJNYXhTdGF5U2VsZWN0aW9uIiwiaGFzVmFsaWREYXlzIiwiaGFzVmFsaWRNaW5TdGF5IiwiaGFzVmFsaWRNYXhTdGF5IiwiaGFzSW52YWxpZE1pblN0YXkiLCJoYXNJbnZhbGlkTWF4U3RheSIsImhhc0ludmFsaWREYXlzIiwidG9vbHRpcFBvc2l0aW9uIiwiUG9wcGVyIiwib25DbGVhclNlbGVjdGlvbiIsImlzU2luZ2xlSW5wdXQiLCJlbFNpbmdsZUlucHV0IiwidmFsdWVUb0lucHV0IiwidGltZXMiLCJtRG9tIiwiZG9tTW9udGgiLCJkYXlFbGVtZW50cyIsIm1vbnRoRG9tIiwidGFibGVIZWFkZXIiLCJoZWFkZXJUZW1wbGF0ZVN0cmluZyIsImNhcHRpb24iLCJkYXlzVGVtcGxhdGVTdHJpbmciLCJoZWFkZXIiLCJ3ZWVrZGF5c0xhYmVsc0V4dGVuZGVkIiwiZGF5c1BlcldlZWsiLCJ3ZWVrRGF5TGFiZWwiLCJzdGFydE9mTW9udGgiLCJnZXREYXkiLCJyb3dUZW1wbGF0ZSIsIndlZWtSb3ciLCJtb250aFRlbXBsYXRlIiwid2Vla1NoaWZ0Iiwicm93cyIsIndlZWtTaGlmdENvcnJlY3RlZCIsImRheUNvdW50ZXIiLCJ3ZWVrIiwiZGF5VGVtcGxhdGVTdHJpbmciLCJ3ZWVrRGF5UGxhY2Vob2xkZXIiLCJjbG9zZSIsInNob3dSYXRlcyIsImlzRGlzYWJsZWQiLCJpc0N1cnJlbnREYXkiLCJpc0F2YWlsYWJsZUluIiwid2Vla0RheSIsInNob3dNaW5TdGF5Iiwic2hvd01heFN0YXkiLCJvblN1Y2Nlc3MiLCJkaXNhYmxlQXZhaWxhYml0eU1hcCIsIm1hcHNMb2FkZWQiLCJvbkVycm9yIiwiZmV0Y2giLCJyZW50YWxVcmwiLCJqc29uIiwiY2F0Y2giLCJzaW5nbGVJbnB1dERhdGVGb3JtYXQiLCJkYXRlU3RhcnQiLCJkYXRlRW5kIiwic2luZ2xlSW5wdXRTZXBhcmF0b3IiLCJvblNlbGVjdGlvbkNvbXBsZXRlZCIsImVsVGFyZ2V0IiwiaGlkZGVuRWxGb3JtYXQiLCJpbnB1dCIsImhpZGRlbklucHV0IiwiY2xvbmVOb2RlIiwicGFyZW50RWxlbWVudCIsImhpZGRlbiIsImhpZGRlbkVsRW5kQXQiLCJoaWRkZW5FbFN0YXJ0QXQiLCJyZWFkT25seSIsImRyb3BCYXNpYyIsImRyb3BQbGFjZW1lbnQiLCJvcGVuRHJvcCIsImlzUmV2ZXJzZWQiLCJ2aXNpYmxlIiwiZm9jdXNUb3VjaEV2ZW50cyIsImJpbmQiLCJlbFJlc2V0IiwiZXZ0IiwiY3JlYXRlRXZlbnQiLCJpbml0RXZlbnQiLCJoaWRkZW5WYWx1ZSIsImRpc3BhdGNoRXZlbnQiLCJtb250aERpZmZlcmVuY2UiLCJ0eXBlIiwiZm9jdXMiLCJmb3JjZSIsInN0b3BQcm9wYWdhdGlvbiIsIl9jYWxsYmFjayIsIm1zZyIsImFwaUhvc3QiLCJhcGlOYW1lc3BhY2UiLCJhcGlNYXBzUm91dGUiLCJhcGlSZW50YWxJZCIsImFwaUN1cnJlbmN5IiwiaWRzIiwicm91dGUiLCJlbiIsImRlIiwiZXMiLCJmciIsIml0Iiwic3YiLCJydSIsInBsIiwibmwiLCJ0b29sdGlwQXJyb3ciLCJtQ2VsbCIsImxhYmVsIiwidGgiLCJtaW5TdGF5VCIsIm1heFN0YXlUIiwicmF0ZVQiLCJ0b2RheSIsImNudCIsImluZm8iLCJudW0iLCJwYWQiLCJ2YWwiLCJsb2ciLCJhdmFpbGFibGVJbiIsImF2YWlsYWJsZU91dCIsIkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHMiLCJpbml0aWFsaXplZCIsImNhbCIsImluc3RhbmNlcyIsIkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXQiXSwic291cmNlUm9vdCI6IiJ9
|
|
8929
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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Q0EsTUFBTW14QyxHQUFHLEdBQUksSUFBSTlPLFFBQUosQ0FBYXpoQyxPQUFiLENBQWI7SUFFQXN3QyxXQUFXLENBQUNyc0MsSUFBWixDQUFpQnNzQyxHQUFqQjtFQUNELENBTEQ7RUFPQTlPLFFBQVEsQ0FBQytPLFNBQVQsR0FBcUJGLFdBQXJCO0VBQ0EsT0FBT0EsV0FBUDtBQUNELENBZEQ7O0FBZ0JBN08sUUFBUSxDQUFDRSxPQUFULEdBQW1CM2lCLHNFQUFuQjs7QUFFQSxJQUFJOVYsUUFBUSxDQUFDb3ZCLFVBQVQsS0FBd0IsU0FBNUIsRUFBdUM7RUFDckNtSixRQUFRLENBQUN5QixJQUFUO0FBQ0QsQ0FGRCxNQUVPO0VBQ0xoNkIsUUFBUSxDQUFDaUosZ0JBQVQsQ0FBMEIsa0JBQTFCLEVBQThDLE1BQU07SUFDbERzdkIsUUFBUSxDQUFDeUIsSUFBVDtFQUNELENBRkQ7QUFHRDs7QUFFRHo5QixNQUFNLENBQUNnckMseUJBQVAsR0FBbUNoUCxRQUFuQztBQUVBLGlFQUFlQSxRQUFmLEUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2NyZWF0ZVBvcHBlci5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9jb250YWlucy5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRCb3VuZGluZ0NsaWVudFJlY3QuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Q2xpcHBpbmdSZWN0LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldENvbXBvc2l0ZVJlY3QuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Q29tcHV0ZWRTdHlsZS5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXREb2N1bWVudEVsZW1lbnQuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0RG9jdW1lbnRSZWN0LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldEhUTUxFbGVtZW50U2Nyb2xsLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldExheW91dFJlY3QuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Tm9kZU5hbWUuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Tm9kZVNjcm9sbC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRPZmZzZXRQYXJlbnQuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0UGFyZW50Tm9kZS5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRTY3JvbGxQYXJlbnQuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Vmlld3BvcnRSZWN0LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldFdpbmRvdy5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRXaW5kb3dTY3JvbGwuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0V2luZG93U2Nyb2xsQmFyWC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9pbnN0YW5jZU9mLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2lzTGF5b3V0Vmlld3BvcnQuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvaXNTY3JvbGxQYXJlbnQuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvaXNUYWJsZUVsZW1lbnQuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvbGlzdFNjcm9sbFBhcmVudHMuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9lbnVtcy5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2luZGV4LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL2FwcGx5U3R5bGVzLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL2Fycm93LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL2NvbXB1dGVTdHlsZXMuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvZXZlbnRMaXN0ZW5lcnMuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvZmxpcC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9oaWRlLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL2luZGV4LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL29mZnNldC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9wb3BwZXJPZmZzZXRzLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL3ByZXZlbnRPdmVyZmxvdy5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3BvcHBlci1saXRlLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvcG9wcGVyLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvY29tcHV0ZUF1dG9QbGFjZW1lbnQuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9jb21wdXRlT2Zmc2V0cy5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2RlYm91bmNlLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZGV0ZWN0T3ZlcmZsb3cuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9leHBhbmRUb0hhc2hNYXAuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9mb3JtYXQuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9nZXRBbHRBeGlzLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZ2V0QmFzZVBsYWNlbWVudC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldEZyZXNoU2lkZU9iamVjdC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldE1haW5BeGlzRnJvbVBsYWNlbWVudC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldE9wcG9zaXRlUGxhY2VtZW50LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZ2V0T3Bwb3NpdGVWYXJpYXRpb25QbGFjZW1lbnQuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9nZXRWYXJpYXRpb24uanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9tYXRoLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvbWVyZ2VCeU5hbWUuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9tZXJnZVBhZGRpbmdPYmplY3QuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9vcmRlck1vZGlmaWVycy5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL3JlY3RUb0NsaWVudFJlY3QuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy91bmlxdWVCeS5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL3VzZXJBZ2VudC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL3ZhbGlkYXRlTW9kaWZpZXJzLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvd2l0aGluLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2dldFVybC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvY3VycmVuY3ktc3ltYm9sLW1hcC9jdXJyZW5jeS1zeW1ib2wtbWFwLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9jdXJyZW5jeS1zeW1ib2wtbWFwL21hcC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvc3RydGltZS9kaXN0L3N0cnRpbWUuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvYWpheC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9hcnJheS9pbmRleC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9hcnJheS9pc0FycmF5LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL2N1cnJlbmN5L2N1cnJlbmN5Rm9ybWF0dGVyLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL2N1cnJlbmN5L2luZGV4LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL2RhdGUvaW5kZXguanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvZGF0ZS9tb250aExlbmd0aC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9kb20vYWRkQ2xhc3MuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvZG9tL2NyZWF0ZUVsZW1lbnQuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvZG9tL2Rlc3Ryb3lFbGVtZW50LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL2RvbS9lbGVtZW50RnJvbVN0cmluZy5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9kb20vZmluZEJ5Q2xhc3NOYW1lLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL2RvbS9nZXRDbGFzc05hbWUuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvZG9tL2dldFBhcmVudEF0dHJpYnV0ZS5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9kb20vaGFzQ2xhc3MuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvZG9tL2luZGV4LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL2RvbS9pc0luc2lkZS5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9kb20vcmVtb3ZlQ2xhc3MuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvZG9tL3NldENsYXNzTmFtZS5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9kb20vdHJhdmVyc2VUb1BhcmVudFdpdGhBdHRyLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL2VtaXR0ZXIuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvZnVuY3Rpb24vaW5kZXguanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvZnVuY3Rpb24vaXNGdW5jdGlvbi5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9pbmRleC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9pcy5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9tYXRoL2luZGV4LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL21hdGgvaXNOYU5Qb2x5ZmlsbC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9tYXRoL2lzTnVtZXJpYy5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9vYmplY3QvY2FwaXRhbGl6ZU9iai5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9vYmplY3QvaW5kZXguanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvb2JqZWN0L2lzT2JqZWN0LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL29iamVjdC9tZXJnZS5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9vYmplY3QvcGljay5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9vYmplY3Qvc2VyaWFsaXplLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL29iamVjdC90cmF2ZXJzZU9iai5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9zdHJpbmcvZGFzaFRvQ2FwaXRhbC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9zdHJpbmcvaW5kZXguanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvc3RyaW5nL2lzU3RyaW5nLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL3N0cmluZy90b1VuZGVyc2NvcmUuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvc3RyaW5nL3VuZGVyc2NvcmVUb0NhcGl0YWwuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvdmFsaWRhdGUuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vc3JjL2NhbGVuZGFyLXRyZWUuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vc3JjL2NhbGVuZGFyLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL3NyYy9jb25maWcuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vc3JjL2xvY2FsZXMuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vc3JjL3RlbXBsYXRlcy5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9zcmMvdXRpbHMuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vc3JjL3N0eWxlcy9jYWxlbmRhci5zY3NzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL3N0eWxlcy9yZXNldC5zY3NzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL3NyYy9zdHlsZXMvY2FsZW5kYXIuc2Nzcz82OWQ3Iiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL3N0eWxlcy9yZXNldC5zY3NzP2I3NDAiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0L3dlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0Iiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0L3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0L3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0L3dlYnBhY2svcnVudGltZS9qc29ucCBjaHVuayBsb2FkaW5nIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC93ZWJwYWNrL3J1bnRpbWUvbm9uY2UiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vc3JjL2luZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBnZXRDb21wb3NpdGVSZWN0IGZyb20gXCIuL2RvbS11dGlscy9nZXRDb21wb3NpdGVSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0TGF5b3V0UmVjdCBmcm9tIFwiLi9kb20tdXRpbHMvZ2V0TGF5b3V0UmVjdC5qc1wiO1xuaW1wb3J0IGxpc3RTY3JvbGxQYXJlbnRzIGZyb20gXCIuL2RvbS11dGlscy9saXN0U2Nyb2xsUGFyZW50cy5qc1wiO1xuaW1wb3J0IGdldE9mZnNldFBhcmVudCBmcm9tIFwiLi9kb20tdXRpbHMvZ2V0T2Zmc2V0UGFyZW50LmpzXCI7XG5pbXBvcnQgZ2V0Q29tcHV0ZWRTdHlsZSBmcm9tIFwiLi9kb20tdXRpbHMvZ2V0Q29tcHV0ZWRTdHlsZS5qc1wiO1xuaW1wb3J0IG9yZGVyTW9kaWZpZXJzIGZyb20gXCIuL3V0aWxzL29yZGVyTW9kaWZpZXJzLmpzXCI7XG5pbXBvcnQgZGVib3VuY2UgZnJvbSBcIi4vdXRpbHMvZGVib3VuY2UuanNcIjtcbmltcG9ydCB2YWxpZGF0ZU1vZGlmaWVycyBmcm9tIFwiLi91dGlscy92YWxpZGF0ZU1vZGlmaWVycy5qc1wiO1xuaW1wb3J0IHVuaXF1ZUJ5IGZyb20gXCIuL3V0aWxzL3VuaXF1ZUJ5LmpzXCI7XG5pbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi91dGlscy9nZXRCYXNlUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgbWVyZ2VCeU5hbWUgZnJvbSBcIi4vdXRpbHMvbWVyZ2VCeU5hbWUuanNcIjtcbmltcG9ydCBkZXRlY3RPdmVyZmxvdyBmcm9tIFwiLi91dGlscy9kZXRlY3RPdmVyZmxvdy5qc1wiO1xuaW1wb3J0IHsgaXNFbGVtZW50IH0gZnJvbSBcIi4vZG9tLXV0aWxzL2luc3RhbmNlT2YuanNcIjtcbmltcG9ydCB7IGF1dG8gfSBmcm9tIFwiLi9lbnVtcy5qc1wiO1xudmFyIElOVkFMSURfRUxFTUVOVF9FUlJPUiA9ICdQb3BwZXI6IEludmFsaWQgcmVmZXJlbmNlIG9yIHBvcHBlciBhcmd1bWVudCBwcm92aWRlZC4gVGhleSBtdXN0IGJlIGVpdGhlciBhIERPTSBlbGVtZW50IG9yIHZpcnR1YWwgZWxlbWVudC4nO1xudmFyIElORklOSVRFX0xPT1BfRVJST1IgPSAnUG9wcGVyOiBBbiBpbmZpbml0ZSBsb29wIGluIHRoZSBtb2RpZmllcnMgY3ljbGUgaGFzIGJlZW4gZGV0ZWN0ZWQhIFRoZSBjeWNsZSBoYXMgYmVlbiBpbnRlcnJ1cHRlZCB0byBwcmV2ZW50IGEgYnJvd3NlciBjcmFzaC4nO1xudmFyIERFRkFVTFRfT1BUSU9OUyA9IHtcbiAgcGxhY2VtZW50OiAnYm90dG9tJyxcbiAgbW9kaWZpZXJzOiBbXSxcbiAgc3RyYXRlZ3k6ICdhYnNvbHV0ZSdcbn07XG5cbmZ1bmN0aW9uIGFyZVZhbGlkRWxlbWVudHMoKSB7XG4gIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gIH1cblxuICByZXR1cm4gIWFyZ3Muc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHJldHVybiAhKGVsZW1lbnQgJiYgdHlwZW9mIGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0ID09PSAnZnVuY3Rpb24nKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwb3BwZXJHZW5lcmF0b3IoZ2VuZXJhdG9yT3B0aW9ucykge1xuICBpZiAoZ2VuZXJhdG9yT3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgZ2VuZXJhdG9yT3B0aW9ucyA9IHt9O1xuICB9XG5cbiAgdmFyIF9nZW5lcmF0b3JPcHRpb25zID0gZ2VuZXJhdG9yT3B0aW9ucyxcbiAgICAgIF9nZW5lcmF0b3JPcHRpb25zJGRlZiA9IF9nZW5lcmF0b3JPcHRpb25zLmRlZmF1bHRNb2RpZmllcnMsXG4gICAgICBkZWZhdWx0TW9kaWZpZXJzID0gX2dlbmVyYXRvck9wdGlvbnMkZGVmID09PSB2b2lkIDAgPyBbXSA6IF9nZW5lcmF0b3JPcHRpb25zJGRlZixcbiAgICAgIF9nZW5lcmF0b3JPcHRpb25zJGRlZjIgPSBfZ2VuZXJhdG9yT3B0aW9ucy5kZWZhdWx0T3B0aW9ucyxcbiAgICAgIGRlZmF1bHRPcHRpb25zID0gX2dlbmVyYXRvck9wdGlvbnMkZGVmMiA9PT0gdm9pZCAwID8gREVGQVVMVF9PUFRJT05TIDogX2dlbmVyYXRvck9wdGlvbnMkZGVmMjtcbiAgcmV0dXJuIGZ1bmN0aW9uIGNyZWF0ZVBvcHBlcihyZWZlcmVuY2UsIHBvcHBlciwgb3B0aW9ucykge1xuICAgIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICAgIG9wdGlvbnMgPSBkZWZhdWx0T3B0aW9ucztcbiAgICB9XG5cbiAgICB2YXIgc3RhdGUgPSB7XG4gICAgICBwbGFjZW1lbnQ6ICdib3R0b20nLFxuICAgICAgb3JkZXJlZE1vZGlmaWVyczogW10sXG4gICAgICBvcHRpb25zOiBPYmplY3QuYXNzaWduKHt9LCBERUZBVUxUX09QVElPTlMsIGRlZmF1bHRPcHRpb25zKSxcbiAgICAgIG1vZGlmaWVyc0RhdGE6IHt9LFxuICAgICAgZWxlbWVudHM6IHtcbiAgICAgICAgcmVmZXJlbmNlOiByZWZlcmVuY2UsXG4gICAgICAgIHBvcHBlcjogcG9wcGVyXG4gICAgICB9LFxuICAgICAgYXR0cmlidXRlczoge30sXG4gICAgICBzdHlsZXM6IHt9XG4gICAgfTtcbiAgICB2YXIgZWZmZWN0Q2xlYW51cEZucyA9IFtdO1xuICAgIHZhciBpc0Rlc3Ryb3llZCA9IGZhbHNlO1xuICAgIHZhciBpbnN0YW5jZSA9IHtcbiAgICAgIHN0YXRlOiBzdGF0ZSxcbiAgICAgIHNldE9wdGlvbnM6IGZ1bmN0aW9uIHNldE9wdGlvbnMoc2V0T3B0aW9uc0FjdGlvbikge1xuICAgICAgICB2YXIgb3B0aW9ucyA9IHR5cGVvZiBzZXRPcHRpb25zQWN0aW9uID09PSAnZnVuY3Rpb24nID8gc2V0T3B0aW9uc0FjdGlvbihzdGF0ZS5vcHRpb25zKSA6IHNldE9wdGlvbnNBY3Rpb247XG4gICAgICAgIGNsZWFudXBNb2RpZmllckVmZmVjdHMoKTtcbiAgICAgICAgc3RhdGUub3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRPcHRpb25zLCBzdGF0ZS5vcHRpb25zLCBvcHRpb25zKTtcbiAgICAgICAgc3RhdGUuc2Nyb2xsUGFyZW50cyA9IHtcbiAgICAgICAgICByZWZlcmVuY2U6IGlzRWxlbWVudChyZWZlcmVuY2UpID8gbGlzdFNjcm9sbFBhcmVudHMocmVmZXJlbmNlKSA6IHJlZmVyZW5jZS5jb250ZXh0RWxlbWVudCA/IGxpc3RTY3JvbGxQYXJlbnRzKHJlZmVyZW5jZS5jb250ZXh0RWxlbWVudCkgOiBbXSxcbiAgICAgICAgICBwb3BwZXI6IGxpc3RTY3JvbGxQYXJlbnRzKHBvcHBlcilcbiAgICAgICAgfTsgLy8gT3JkZXJzIHRoZSBtb2RpZmllcnMgYmFzZWQgb24gdGhlaXIgZGVwZW5kZW5jaWVzIGFuZCBgcGhhc2VgXG4gICAgICAgIC8vIHByb3BlcnRpZXNcblxuICAgICAgICB2YXIgb3JkZXJlZE1vZGlmaWVycyA9IG9yZGVyTW9kaWZpZXJzKG1lcmdlQnlOYW1lKFtdLmNvbmNhdChkZWZhdWx0TW9kaWZpZXJzLCBzdGF0ZS5vcHRpb25zLm1vZGlmaWVycykpKTsgLy8gU3RyaXAgb3V0IGRpc2FibGVkIG1vZGlmaWVyc1xuXG4gICAgICAgIHN0YXRlLm9yZGVyZWRNb2RpZmllcnMgPSBvcmRlcmVkTW9kaWZpZXJzLmZpbHRlcihmdW5jdGlvbiAobSkge1xuICAgICAgICAgIHJldHVybiBtLmVuYWJsZWQ7XG4gICAgICAgIH0pOyAvLyBWYWxpZGF0ZSB0aGUgcHJvdmlkZWQgbW9kaWZpZXJzIHNvIHRoYXQgdGhlIGNvbnN1bWVyIHdpbGwgZ2V0IHdhcm5lZFxuICAgICAgICAvLyBpZiBvbmUgb2YgdGhlIG1vZGlmaWVycyBpcyBpbnZhbGlkIGZvciBhbnkgcmVhc29uXG5cbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgICAgICAgIHZhciBtb2RpZmllcnMgPSB1bmlxdWVCeShbXS5jb25jYXQob3JkZXJlZE1vZGlmaWVycywgc3RhdGUub3B0aW9ucy5tb2RpZmllcnMpLCBmdW5jdGlvbiAoX3JlZikge1xuICAgICAgICAgICAgdmFyIG5hbWUgPSBfcmVmLm5hbWU7XG4gICAgICAgICAgICByZXR1cm4gbmFtZTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB2YWxpZGF0ZU1vZGlmaWVycyhtb2RpZmllcnMpO1xuXG4gICAgICAgICAgaWYgKGdldEJhc2VQbGFjZW1lbnQoc3RhdGUub3B0aW9ucy5wbGFjZW1lbnQpID09PSBhdXRvKSB7XG4gICAgICAgICAgICB2YXIgZmxpcE1vZGlmaWVyID0gc3RhdGUub3JkZXJlZE1vZGlmaWVycy5maW5kKGZ1bmN0aW9uIChfcmVmMikge1xuICAgICAgICAgICAgICB2YXIgbmFtZSA9IF9yZWYyLm5hbWU7XG4gICAgICAgICAgICAgIHJldHVybiBuYW1lID09PSAnZmxpcCc7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKCFmbGlwTW9kaWZpZXIpIHtcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihbJ1BvcHBlcjogXCJhdXRvXCIgcGxhY2VtZW50cyByZXF1aXJlIHRoZSBcImZsaXBcIiBtb2RpZmllciBiZScsICdwcmVzZW50IGFuZCBlbmFibGVkIHRvIHdvcmsuJ10uam9pbignICcpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICB2YXIgX2dldENvbXB1dGVkU3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKHBvcHBlciksXG4gICAgICAgICAgICAgIG1hcmdpblRvcCA9IF9nZXRDb21wdXRlZFN0eWxlLm1hcmdpblRvcCxcbiAgICAgICAgICAgICAgbWFyZ2luUmlnaHQgPSBfZ2V0Q29tcHV0ZWRTdHlsZS5tYXJnaW5SaWdodCxcbiAgICAgICAgICAgICAgbWFyZ2luQm90dG9tID0gX2dldENvbXB1dGVkU3R5bGUubWFyZ2luQm90dG9tLFxuICAgICAgICAgICAgICBtYXJnaW5MZWZ0ID0gX2dldENvbXB1dGVkU3R5bGUubWFyZ2luTGVmdDsgLy8gV2Ugbm8gbG9uZ2VyIHRha2UgaW50byBhY2NvdW50IGBtYXJnaW5zYCBvbiB0aGUgcG9wcGVyLCBhbmQgaXQgY2FuXG4gICAgICAgICAgLy8gY2F1c2UgYnVncyB3aXRoIHBvc2l0aW9uaW5nLCBzbyB3ZSdsbCB3YXJuIHRoZSBjb25zdW1lclxuXG5cbiAgICAgICAgICBpZiAoW21hcmdpblRvcCwgbWFyZ2luUmlnaHQsIG1hcmdpbkJvdHRvbSwgbWFyZ2luTGVmdF0uc29tZShmdW5jdGlvbiAobWFyZ2luKSB7XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VGbG9hdChtYXJnaW4pO1xuICAgICAgICAgIH0pKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oWydQb3BwZXI6IENTUyBcIm1hcmdpblwiIHN0eWxlcyBjYW5ub3QgYmUgdXNlZCB0byBhcHBseSBwYWRkaW5nJywgJ2JldHdlZW4gdGhlIHBvcHBlciBhbmQgaXRzIHJlZmVyZW5jZSBlbGVtZW50IG9yIGJvdW5kYXJ5LicsICdUbyByZXBsaWNhdGUgbWFyZ2luLCB1c2UgdGhlIGBvZmZzZXRgIG1vZGlmaWVyLCBhcyB3ZWxsIGFzJywgJ3RoZSBgcGFkZGluZ2Agb3B0aW9uIGluIHRoZSBgcHJldmVudE92ZXJmbG93YCBhbmQgYGZsaXBgJywgJ21vZGlmaWVycy4nXS5qb2luKCcgJykpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJ1bk1vZGlmaWVyRWZmZWN0cygpO1xuICAgICAgICByZXR1cm4gaW5zdGFuY2UudXBkYXRlKCk7XG4gICAgICB9LFxuICAgICAgLy8gU3luYyB1cGRhdGUg4oCTIGl0IHdpbGwgYWx3YXlzIGJlIGV4ZWN1dGVkLCBldmVuIGlmIG5vdCBuZWNlc3NhcnkuIFRoaXNcbiAgICAgIC8vIGlzIHVzZWZ1bCBmb3IgbG93IGZyZXF1ZW5jeSB1cGRhdGVzIHdoZXJlIHN5bmMgYmVoYXZpb3Igc2ltcGxpZmllcyB0aGVcbiAgICAgIC8vIGxvZ2ljLlxuICAgICAgLy8gRm9yIGhpZ2ggZnJlcXVlbmN5IHVwZGF0ZXMgKGUuZy4gYHJlc2l6ZWAgYW5kIGBzY3JvbGxgIGV2ZW50cyksIGFsd2F5c1xuICAgICAgLy8gcHJlZmVyIHRoZSBhc3luYyBQb3BwZXIjdXBkYXRlIG1ldGhvZFxuICAgICAgZm9yY2VVcGRhdGU6IGZ1bmN0aW9uIGZvcmNlVXBkYXRlKCkge1xuICAgICAgICBpZiAoaXNEZXN0cm95ZWQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgX3N0YXRlJGVsZW1lbnRzID0gc3RhdGUuZWxlbWVudHMsXG4gICAgICAgICAgICByZWZlcmVuY2UgPSBfc3RhdGUkZWxlbWVudHMucmVmZXJlbmNlLFxuICAgICAgICAgICAgcG9wcGVyID0gX3N0YXRlJGVsZW1lbnRzLnBvcHBlcjsgLy8gRG9uJ3QgcHJvY2VlZCBpZiBgcmVmZXJlbmNlYCBvciBgcG9wcGVyYCBhcmUgbm90IHZhbGlkIGVsZW1lbnRzXG4gICAgICAgIC8vIGFueW1vcmVcblxuICAgICAgICBpZiAoIWFyZVZhbGlkRWxlbWVudHMocmVmZXJlbmNlLCBwb3BwZXIpKSB7XG4gICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihJTlZBTElEX0VMRU1FTlRfRVJST1IpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSAvLyBTdG9yZSB0aGUgcmVmZXJlbmNlIGFuZCBwb3BwZXIgcmVjdHMgdG8gYmUgcmVhZCBieSBtb2RpZmllcnNcblxuXG4gICAgICAgIHN0YXRlLnJlY3RzID0ge1xuICAgICAgICAgIHJlZmVyZW5jZTogZ2V0Q29tcG9zaXRlUmVjdChyZWZlcmVuY2UsIGdldE9mZnNldFBhcmVudChwb3BwZXIpLCBzdGF0ZS5vcHRpb25zLnN0cmF0ZWd5ID09PSAnZml4ZWQnKSxcbiAgICAgICAgICBwb3BwZXI6IGdldExheW91dFJlY3QocG9wcGVyKVxuICAgICAgICB9OyAvLyBNb2RpZmllcnMgaGF2ZSB0aGUgYWJpbGl0eSB0byByZXNldCB0aGUgY3VycmVudCB1cGRhdGUgY3ljbGUuIFRoZVxuICAgICAgICAvLyBtb3N0IGNvbW1vbiB1c2UgY2FzZSBmb3IgdGhpcyBpcyB0aGUgYGZsaXBgIG1vZGlmaWVyIGNoYW5naW5nIHRoZVxuICAgICAgICAvLyBwbGFjZW1lbnQsIHdoaWNoIHRoZW4gbmVlZHMgdG8gcmUtcnVuIGFsbCB0aGUgbW9kaWZpZXJzLCBiZWNhdXNlIHRoZVxuICAgICAgICAvLyBsb2dpYyB3YXMgcHJldmlvdXNseSByYW4gZm9yIHRoZSBwcmV2aW91cyBwbGFjZW1lbnQgYW5kIGlzIHRoZXJlZm9yZVxuICAgICAgICAvLyBzdGFsZS9pbmNvcnJlY3RcblxuICAgICAgICBzdGF0ZS5yZXNldCA9IGZhbHNlO1xuICAgICAgICBzdGF0ZS5wbGFjZW1lbnQgPSBzdGF0ZS5vcHRpb25zLnBsYWNlbWVudDsgLy8gT24gZWFjaCB1cGRhdGUgY3ljbGUsIHRoZSBgbW9kaWZpZXJzRGF0YWAgcHJvcGVydHkgZm9yIGVhY2ggbW9kaWZpZXJcbiAgICAgICAgLy8gaXMgZmlsbGVkIHdpdGggdGhlIGluaXRpYWwgZGF0YSBzcGVjaWZpZWQgYnkgdGhlIG1vZGlmaWVyLiBUaGlzIG1lYW5zXG4gICAgICAgIC8vIGl0IGRvZXNuJ3QgcGVyc2lzdCBhbmQgaXMgZnJlc2ggb24gZWFjaCB1cGRhdGUuXG4gICAgICAgIC8vIFRvIGVuc3VyZSBwZXJzaXN0ZW50IGRhdGEsIHVzZSBgJHtuYW1lfSNwZXJzaXN0ZW50YFxuXG4gICAgICAgIHN0YXRlLm9yZGVyZWRNb2RpZmllcnMuZm9yRWFjaChmdW5jdGlvbiAobW9kaWZpZXIpIHtcbiAgICAgICAgICByZXR1cm4gc3RhdGUubW9kaWZpZXJzRGF0YVttb2RpZmllci5uYW1lXSA9IE9iamVjdC5hc3NpZ24oe30sIG1vZGlmaWVyLmRhdGEpO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIF9fZGVidWdfbG9vcHNfXyA9IDA7XG5cbiAgICAgICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IHN0YXRlLm9yZGVyZWRNb2RpZmllcnMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgICAgICAgICAgX19kZWJ1Z19sb29wc19fICs9IDE7XG5cbiAgICAgICAgICAgIGlmIChfX2RlYnVnX2xvb3BzX18gPiAxMDApIHtcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihJTkZJTklURV9MT09QX0VSUk9SKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHN0YXRlLnJlc2V0ID09PSB0cnVlKSB7XG4gICAgICAgICAgICBzdGF0ZS5yZXNldCA9IGZhbHNlO1xuICAgICAgICAgICAgaW5kZXggPSAtMTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhciBfc3RhdGUkb3JkZXJlZE1vZGlmaWUgPSBzdGF0ZS5vcmRlcmVkTW9kaWZpZXJzW2luZGV4XSxcbiAgICAgICAgICAgICAgZm4gPSBfc3RhdGUkb3JkZXJlZE1vZGlmaWUuZm4sXG4gICAgICAgICAgICAgIF9zdGF0ZSRvcmRlcmVkTW9kaWZpZTIgPSBfc3RhdGUkb3JkZXJlZE1vZGlmaWUub3B0aW9ucyxcbiAgICAgICAgICAgICAgX29wdGlvbnMgPSBfc3RhdGUkb3JkZXJlZE1vZGlmaWUyID09PSB2b2lkIDAgPyB7fSA6IF9zdGF0ZSRvcmRlcmVkTW9kaWZpZTIsXG4gICAgICAgICAgICAgIG5hbWUgPSBfc3RhdGUkb3JkZXJlZE1vZGlmaWUubmFtZTtcblxuICAgICAgICAgIGlmICh0eXBlb2YgZm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHN0YXRlID0gZm4oe1xuICAgICAgICAgICAgICBzdGF0ZTogc3RhdGUsXG4gICAgICAgICAgICAgIG9wdGlvbnM6IF9vcHRpb25zLFxuICAgICAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgICAgICBpbnN0YW5jZTogaW5zdGFuY2VcbiAgICAgICAgICAgIH0pIHx8IHN0YXRlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIC8vIEFzeW5jIGFuZCBvcHRpbWlzdGljYWxseSBvcHRpbWl6ZWQgdXBkYXRlIOKAkyBpdCB3aWxsIG5vdCBiZSBleGVjdXRlZCBpZlxuICAgICAgLy8gbm90IG5lY2Vzc2FyeSAoZGVib3VuY2VkIHRvIHJ1biBhdCBtb3N0IG9uY2UtcGVyLXRpY2spXG4gICAgICB1cGRhdGU6IGRlYm91bmNlKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG4gICAgICAgICAgaW5zdGFuY2UuZm9yY2VVcGRhdGUoKTtcbiAgICAgICAgICByZXNvbHZlKHN0YXRlKTtcbiAgICAgICAgfSk7XG4gICAgICB9KSxcbiAgICAgIGRlc3Ryb3k6IGZ1bmN0aW9uIGRlc3Ryb3koKSB7XG4gICAgICAgIGNsZWFudXBNb2RpZmllckVmZmVjdHMoKTtcbiAgICAgICAgaXNEZXN0cm95ZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBpZiAoIWFyZVZhbGlkRWxlbWVudHMocmVmZXJlbmNlLCBwb3BwZXIpKSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoSU5WQUxJRF9FTEVNRU5UX0VSUk9SKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGluc3RhbmNlO1xuICAgIH1cblxuICAgIGluc3RhbmNlLnNldE9wdGlvbnMob3B0aW9ucykudGhlbihmdW5jdGlvbiAoc3RhdGUpIHtcbiAgICAgIGlmICghaXNEZXN0cm95ZWQgJiYgb3B0aW9ucy5vbkZpcnN0VXBkYXRlKSB7XG4gICAgICAgIG9wdGlvbnMub25GaXJzdFVwZGF0ZShzdGF0ZSk7XG4gICAgICB9XG4gICAgfSk7IC8vIE1vZGlmaWVycyBoYXZlIHRoZSBhYmlsaXR5IHRvIGV4ZWN1dGUgYXJiaXRyYXJ5IGNvZGUgYmVmb3JlIHRoZSBmaXJzdFxuICAgIC8vIHVwZGF0ZSBjeWNsZSBydW5zLiBUaGV5IHdpbGwgYmUgZXhlY3V0ZWQgaW4gdGhlIHNhbWUgb3JkZXIgYXMgdGhlIHVwZGF0ZVxuICAgIC8vIGN5Y2xlLiBUaGlzIGlzIHVzZWZ1bCB3aGVuIGEgbW9kaWZpZXIgYWRkcyBzb21lIHBlcnNpc3RlbnQgZGF0YSB0aGF0XG4gICAgLy8gb3RoZXIgbW9kaWZpZXJzIG5lZWQgdG8gdXNlLCBidXQgdGhlIG1vZGlmaWVyIGlzIHJ1biBhZnRlciB0aGUgZGVwZW5kZW50XG4gICAgLy8gb25lLlxuXG4gICAgZnVuY3Rpb24gcnVuTW9kaWZpZXJFZmZlY3RzKCkge1xuICAgICAgc3RhdGUub3JkZXJlZE1vZGlmaWVycy5mb3JFYWNoKGZ1bmN0aW9uIChfcmVmMykge1xuICAgICAgICB2YXIgbmFtZSA9IF9yZWYzLm5hbWUsXG4gICAgICAgICAgICBfcmVmMyRvcHRpb25zID0gX3JlZjMub3B0aW9ucyxcbiAgICAgICAgICAgIG9wdGlvbnMgPSBfcmVmMyRvcHRpb25zID09PSB2b2lkIDAgPyB7fSA6IF9yZWYzJG9wdGlvbnMsXG4gICAgICAgICAgICBlZmZlY3QgPSBfcmVmMy5lZmZlY3Q7XG5cbiAgICAgICAgaWYgKHR5cGVvZiBlZmZlY3QgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICB2YXIgY2xlYW51cEZuID0gZWZmZWN0KHtcbiAgICAgICAgICAgIHN0YXRlOiBzdGF0ZSxcbiAgICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgICBpbnN0YW5jZTogaW5zdGFuY2UsXG4gICAgICAgICAgICBvcHRpb25zOiBvcHRpb25zXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICB2YXIgbm9vcEZuID0gZnVuY3Rpb24gbm9vcEZuKCkge307XG5cbiAgICAgICAgICBlZmZlY3RDbGVhbnVwRm5zLnB1c2goY2xlYW51cEZuIHx8IG5vb3BGbik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNsZWFudXBNb2RpZmllckVmZmVjdHMoKSB7XG4gICAgICBlZmZlY3RDbGVhbnVwRm5zLmZvckVhY2goZnVuY3Rpb24gKGZuKSB7XG4gICAgICAgIHJldHVybiBmbigpO1xuICAgICAgfSk7XG4gICAgICBlZmZlY3RDbGVhbnVwRm5zID0gW107XG4gICAgfVxuXG4gICAgcmV0dXJuIGluc3RhbmNlO1xuICB9O1xufVxuZXhwb3J0IHZhciBjcmVhdGVQb3BwZXIgPSAvKiNfX1BVUkVfXyovcG9wcGVyR2VuZXJhdG9yKCk7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZXhwb3J0IHsgZGV0ZWN0T3ZlcmZsb3cgfTsiLCJpbXBvcnQgeyBpc1NoYWRvd1Jvb3QgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjb250YWlucyhwYXJlbnQsIGNoaWxkKSB7XG4gIHZhciByb290Tm9kZSA9IGNoaWxkLmdldFJvb3ROb2RlICYmIGNoaWxkLmdldFJvb3ROb2RlKCk7IC8vIEZpcnN0LCBhdHRlbXB0IHdpdGggZmFzdGVyIG5hdGl2ZSBtZXRob2RcblxuICBpZiAocGFyZW50LmNvbnRhaW5zKGNoaWxkKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9IC8vIHRoZW4gZmFsbGJhY2sgdG8gY3VzdG9tIGltcGxlbWVudGF0aW9uIHdpdGggU2hhZG93IERPTSBzdXBwb3J0XG4gIGVsc2UgaWYgKHJvb3ROb2RlICYmIGlzU2hhZG93Um9vdChyb290Tm9kZSkpIHtcbiAgICAgIHZhciBuZXh0ID0gY2hpbGQ7XG5cbiAgICAgIGRvIHtcbiAgICAgICAgaWYgKG5leHQgJiYgcGFyZW50LmlzU2FtZU5vZGUobmV4dCkpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSAvLyAkRmxvd0ZpeE1lW3Byb3AtbWlzc2luZ106IG5lZWQgYSBiZXR0ZXIgd2F5IHRvIGhhbmRsZSB0aGlzLi4uXG5cblxuICAgICAgICBuZXh0ID0gbmV4dC5wYXJlbnROb2RlIHx8IG5leHQuaG9zdDtcbiAgICAgIH0gd2hpbGUgKG5leHQpO1xuICAgIH0gLy8gR2l2ZSB1cCwgdGhlIHJlc3VsdCBpcyBmYWxzZVxuXG5cbiAgcmV0dXJuIGZhbHNlO1xufSIsImltcG9ydCB7IGlzRWxlbWVudCwgaXNIVE1MRWxlbWVudCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmltcG9ydCB7IHJvdW5kIH0gZnJvbSBcIi4uL3V0aWxzL21hdGguanNcIjtcbmltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4vZ2V0V2luZG93LmpzXCI7XG5pbXBvcnQgaXNMYXlvdXRWaWV3cG9ydCBmcm9tIFwiLi9pc0xheW91dFZpZXdwb3J0LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgaW5jbHVkZVNjYWxlLCBpc0ZpeGVkU3RyYXRlZ3kpIHtcbiAgaWYgKGluY2x1ZGVTY2FsZSA9PT0gdm9pZCAwKSB7XG4gICAgaW5jbHVkZVNjYWxlID0gZmFsc2U7XG4gIH1cblxuICBpZiAoaXNGaXhlZFN0cmF0ZWd5ID09PSB2b2lkIDApIHtcbiAgICBpc0ZpeGVkU3RyYXRlZ3kgPSBmYWxzZTtcbiAgfVxuXG4gIHZhciBjbGllbnRSZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgdmFyIHNjYWxlWCA9IDE7XG4gIHZhciBzY2FsZVkgPSAxO1xuXG4gIGlmIChpbmNsdWRlU2NhbGUgJiYgaXNIVE1MRWxlbWVudChlbGVtZW50KSkge1xuICAgIHNjYWxlWCA9IGVsZW1lbnQub2Zmc2V0V2lkdGggPiAwID8gcm91bmQoY2xpZW50UmVjdC53aWR0aCkgLyBlbGVtZW50Lm9mZnNldFdpZHRoIHx8IDEgOiAxO1xuICAgIHNjYWxlWSA9IGVsZW1lbnQub2Zmc2V0SGVpZ2h0ID4gMCA/IHJvdW5kKGNsaWVudFJlY3QuaGVpZ2h0KSAvIGVsZW1lbnQub2Zmc2V0SGVpZ2h0IHx8IDEgOiAxO1xuICB9XG5cbiAgdmFyIF9yZWYgPSBpc0VsZW1lbnQoZWxlbWVudCkgPyBnZXRXaW5kb3coZWxlbWVudCkgOiB3aW5kb3csXG4gICAgICB2aXN1YWxWaWV3cG9ydCA9IF9yZWYudmlzdWFsVmlld3BvcnQ7XG5cbiAgdmFyIGFkZFZpc3VhbE9mZnNldHMgPSAhaXNMYXlvdXRWaWV3cG9ydCgpICYmIGlzRml4ZWRTdHJhdGVneTtcbiAgdmFyIHggPSAoY2xpZW50UmVjdC5sZWZ0ICsgKGFkZFZpc3VhbE9mZnNldHMgJiYgdmlzdWFsVmlld3BvcnQgPyB2aXN1YWxWaWV3cG9ydC5vZmZzZXRMZWZ0IDogMCkpIC8gc2NhbGVYO1xuICB2YXIgeSA9IChjbGllbnRSZWN0LnRvcCArIChhZGRWaXN1YWxPZmZzZXRzICYmIHZpc3VhbFZpZXdwb3J0ID8gdmlzdWFsVmlld3BvcnQub2Zmc2V0VG9wIDogMCkpIC8gc2NhbGVZO1xuICB2YXIgd2lkdGggPSBjbGllbnRSZWN0LndpZHRoIC8gc2NhbGVYO1xuICB2YXIgaGVpZ2h0ID0gY2xpZW50UmVjdC5oZWlnaHQgLyBzY2FsZVk7XG4gIHJldHVybiB7XG4gICAgd2lkdGg6IHdpZHRoLFxuICAgIGhlaWdodDogaGVpZ2h0LFxuICAgIHRvcDogeSxcbiAgICByaWdodDogeCArIHdpZHRoLFxuICAgIGJvdHRvbTogeSArIGhlaWdodCxcbiAgICBsZWZ0OiB4LFxuICAgIHg6IHgsXG4gICAgeTogeVxuICB9O1xufSIsImltcG9ydCB7IHZpZXdwb3J0IH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5pbXBvcnQgZ2V0Vmlld3BvcnRSZWN0IGZyb20gXCIuL2dldFZpZXdwb3J0UmVjdC5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50UmVjdCBmcm9tIFwiLi9nZXREb2N1bWVudFJlY3QuanNcIjtcbmltcG9ydCBsaXN0U2Nyb2xsUGFyZW50cyBmcm9tIFwiLi9saXN0U2Nyb2xsUGFyZW50cy5qc1wiO1xuaW1wb3J0IGdldE9mZnNldFBhcmVudCBmcm9tIFwiLi9nZXRPZmZzZXRQYXJlbnQuanNcIjtcbmltcG9ydCBnZXREb2N1bWVudEVsZW1lbnQgZnJvbSBcIi4vZ2V0RG9jdW1lbnRFbGVtZW50LmpzXCI7XG5pbXBvcnQgZ2V0Q29tcHV0ZWRTdHlsZSBmcm9tIFwiLi9nZXRDb21wdXRlZFN0eWxlLmpzXCI7XG5pbXBvcnQgeyBpc0VsZW1lbnQsIGlzSFRNTEVsZW1lbnQgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5pbXBvcnQgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IGZyb20gXCIuL2dldEJvdW5kaW5nQ2xpZW50UmVjdC5qc1wiO1xuaW1wb3J0IGdldFBhcmVudE5vZGUgZnJvbSBcIi4vZ2V0UGFyZW50Tm9kZS5qc1wiO1xuaW1wb3J0IGNvbnRhaW5zIGZyb20gXCIuL2NvbnRhaW5zLmpzXCI7XG5pbXBvcnQgZ2V0Tm9kZU5hbWUgZnJvbSBcIi4vZ2V0Tm9kZU5hbWUuanNcIjtcbmltcG9ydCByZWN0VG9DbGllbnRSZWN0IGZyb20gXCIuLi91dGlscy9yZWN0VG9DbGllbnRSZWN0LmpzXCI7XG5pbXBvcnQgeyBtYXgsIG1pbiB9IGZyb20gXCIuLi91dGlscy9tYXRoLmpzXCI7XG5cbmZ1bmN0aW9uIGdldElubmVyQm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnQsIHN0cmF0ZWd5KSB7XG4gIHZhciByZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnQsIGZhbHNlLCBzdHJhdGVneSA9PT0gJ2ZpeGVkJyk7XG4gIHJlY3QudG9wID0gcmVjdC50b3AgKyBlbGVtZW50LmNsaWVudFRvcDtcbiAgcmVjdC5sZWZ0ID0gcmVjdC5sZWZ0ICsgZWxlbWVudC5jbGllbnRMZWZ0O1xuICByZWN0LmJvdHRvbSA9IHJlY3QudG9wICsgZWxlbWVudC5jbGllbnRIZWlnaHQ7XG4gIHJlY3QucmlnaHQgPSByZWN0LmxlZnQgKyBlbGVtZW50LmNsaWVudFdpZHRoO1xuICByZWN0LndpZHRoID0gZWxlbWVudC5jbGllbnRXaWR0aDtcbiAgcmVjdC5oZWlnaHQgPSBlbGVtZW50LmNsaWVudEhlaWdodDtcbiAgcmVjdC54ID0gcmVjdC5sZWZ0O1xuICByZWN0LnkgPSByZWN0LnRvcDtcbiAgcmV0dXJuIHJlY3Q7XG59XG5cbmZ1bmN0aW9uIGdldENsaWVudFJlY3RGcm9tTWl4ZWRUeXBlKGVsZW1lbnQsIGNsaXBwaW5nUGFyZW50LCBzdHJhdGVneSkge1xuICByZXR1cm4gY2xpcHBpbmdQYXJlbnQgPT09IHZpZXdwb3J0ID8gcmVjdFRvQ2xpZW50UmVjdChnZXRWaWV3cG9ydFJlY3QoZWxlbWVudCwgc3RyYXRlZ3kpKSA6IGlzRWxlbWVudChjbGlwcGluZ1BhcmVudCkgPyBnZXRJbm5lckJvdW5kaW5nQ2xpZW50UmVjdChjbGlwcGluZ1BhcmVudCwgc3RyYXRlZ3kpIDogcmVjdFRvQ2xpZW50UmVjdChnZXREb2N1bWVudFJlY3QoZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpKSk7XG59IC8vIEEgXCJjbGlwcGluZyBwYXJlbnRcIiBpcyBhbiBvdmVyZmxvd2FibGUgY29udGFpbmVyIHdpdGggdGhlIGNoYXJhY3RlcmlzdGljIG9mXG4vLyBjbGlwcGluZyAob3IgaGlkaW5nKSBvdmVyZmxvd2luZyBlbGVtZW50cyB3aXRoIGEgcG9zaXRpb24gZGlmZmVyZW50IGZyb21cbi8vIGBpbml0aWFsYFxuXG5cbmZ1bmN0aW9uIGdldENsaXBwaW5nUGFyZW50cyhlbGVtZW50KSB7XG4gIHZhciBjbGlwcGluZ1BhcmVudHMgPSBsaXN0U2Nyb2xsUGFyZW50cyhnZXRQYXJlbnROb2RlKGVsZW1lbnQpKTtcbiAgdmFyIGNhbkVzY2FwZUNsaXBwaW5nID0gWydhYnNvbHV0ZScsICdmaXhlZCddLmluZGV4T2YoZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5wb3NpdGlvbikgPj0gMDtcbiAgdmFyIGNsaXBwZXJFbGVtZW50ID0gY2FuRXNjYXBlQ2xpcHBpbmcgJiYgaXNIVE1MRWxlbWVudChlbGVtZW50KSA/IGdldE9mZnNldFBhcmVudChlbGVtZW50KSA6IGVsZW1lbnQ7XG5cbiAgaWYgKCFpc0VsZW1lbnQoY2xpcHBlckVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9IC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLXJldHVybl06IGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9mbG93L2lzc3Vlcy8xNDE0XG5cblxuICByZXR1cm4gY2xpcHBpbmdQYXJlbnRzLmZpbHRlcihmdW5jdGlvbiAoY2xpcHBpbmdQYXJlbnQpIHtcbiAgICByZXR1cm4gaXNFbGVtZW50KGNsaXBwaW5nUGFyZW50KSAmJiBjb250YWlucyhjbGlwcGluZ1BhcmVudCwgY2xpcHBlckVsZW1lbnQpICYmIGdldE5vZGVOYW1lKGNsaXBwaW5nUGFyZW50KSAhPT0gJ2JvZHknO1xuICB9KTtcbn0gLy8gR2V0cyB0aGUgbWF4aW11bSBhcmVhIHRoYXQgdGhlIGVsZW1lbnQgaXMgdmlzaWJsZSBpbiBkdWUgdG8gYW55IG51bWJlciBvZlxuLy8gY2xpcHBpbmcgcGFyZW50c1xuXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldENsaXBwaW5nUmVjdChlbGVtZW50LCBib3VuZGFyeSwgcm9vdEJvdW5kYXJ5LCBzdHJhdGVneSkge1xuICB2YXIgbWFpbkNsaXBwaW5nUGFyZW50cyA9IGJvdW5kYXJ5ID09PSAnY2xpcHBpbmdQYXJlbnRzJyA/IGdldENsaXBwaW5nUGFyZW50cyhlbGVtZW50KSA6IFtdLmNvbmNhdChib3VuZGFyeSk7XG4gIHZhciBjbGlwcGluZ1BhcmVudHMgPSBbXS5jb25jYXQobWFpbkNsaXBwaW5nUGFyZW50cywgW3Jvb3RCb3VuZGFyeV0pO1xuICB2YXIgZmlyc3RDbGlwcGluZ1BhcmVudCA9IGNsaXBwaW5nUGFyZW50c1swXTtcbiAgdmFyIGNsaXBwaW5nUmVjdCA9IGNsaXBwaW5nUGFyZW50cy5yZWR1Y2UoZnVuY3Rpb24gKGFjY1JlY3QsIGNsaXBwaW5nUGFyZW50KSB7XG4gICAgdmFyIHJlY3QgPSBnZXRDbGllbnRSZWN0RnJvbU1peGVkVHlwZShlbGVtZW50LCBjbGlwcGluZ1BhcmVudCwgc3RyYXRlZ3kpO1xuICAgIGFjY1JlY3QudG9wID0gbWF4KHJlY3QudG9wLCBhY2NSZWN0LnRvcCk7XG4gICAgYWNjUmVjdC5yaWdodCA9IG1pbihyZWN0LnJpZ2h0LCBhY2NSZWN0LnJpZ2h0KTtcbiAgICBhY2NSZWN0LmJvdHRvbSA9IG1pbihyZWN0LmJvdHRvbSwgYWNjUmVjdC5ib3R0b20pO1xuICAgIGFjY1JlY3QubGVmdCA9IG1heChyZWN0LmxlZnQsIGFjY1JlY3QubGVmdCk7XG4gICAgcmV0dXJuIGFjY1JlY3Q7XG4gIH0sIGdldENsaWVudFJlY3RGcm9tTWl4ZWRUeXBlKGVsZW1lbnQsIGZpcnN0Q2xpcHBpbmdQYXJlbnQsIHN0cmF0ZWd5KSk7XG4gIGNsaXBwaW5nUmVjdC53aWR0aCA9IGNsaXBwaW5nUmVjdC5yaWdodCAtIGNsaXBwaW5nUmVjdC5sZWZ0O1xuICBjbGlwcGluZ1JlY3QuaGVpZ2h0ID0gY2xpcHBpbmdSZWN0LmJvdHRvbSAtIGNsaXBwaW5nUmVjdC50b3A7XG4gIGNsaXBwaW5nUmVjdC54ID0gY2xpcHBpbmdSZWN0LmxlZnQ7XG4gIGNsaXBwaW5nUmVjdC55ID0gY2xpcHBpbmdSZWN0LnRvcDtcbiAgcmV0dXJuIGNsaXBwaW5nUmVjdDtcbn0iLCJpbXBvcnQgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IGZyb20gXCIuL2dldEJvdW5kaW5nQ2xpZW50UmVjdC5qc1wiO1xuaW1wb3J0IGdldE5vZGVTY3JvbGwgZnJvbSBcIi4vZ2V0Tm9kZVNjcm9sbC5qc1wiO1xuaW1wb3J0IGdldE5vZGVOYW1lIGZyb20gXCIuL2dldE5vZGVOYW1lLmpzXCI7XG5pbXBvcnQgeyBpc0hUTUxFbGVtZW50IH0gZnJvbSBcIi4vaW5zdGFuY2VPZi5qc1wiO1xuaW1wb3J0IGdldFdpbmRvd1Njcm9sbEJhclggZnJvbSBcIi4vZ2V0V2luZG93U2Nyb2xsQmFyWC5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBpc1Njcm9sbFBhcmVudCBmcm9tIFwiLi9pc1Njcm9sbFBhcmVudC5qc1wiO1xuaW1wb3J0IHsgcm91bmQgfSBmcm9tIFwiLi4vdXRpbHMvbWF0aC5qc1wiO1xuXG5mdW5jdGlvbiBpc0VsZW1lbnRTY2FsZWQoZWxlbWVudCkge1xuICB2YXIgcmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIHZhciBzY2FsZVggPSByb3VuZChyZWN0LndpZHRoKSAvIGVsZW1lbnQub2Zmc2V0V2lkdGggfHwgMTtcbiAgdmFyIHNjYWxlWSA9IHJvdW5kKHJlY3QuaGVpZ2h0KSAvIGVsZW1lbnQub2Zmc2V0SGVpZ2h0IHx8IDE7XG4gIHJldHVybiBzY2FsZVggIT09IDEgfHwgc2NhbGVZICE9PSAxO1xufSAvLyBSZXR1cm5zIHRoZSBjb21wb3NpdGUgcmVjdCBvZiBhbiBlbGVtZW50IHJlbGF0aXZlIHRvIGl0cyBvZmZzZXRQYXJlbnQuXG4vLyBDb21wb3NpdGUgbWVhbnMgaXQgdGFrZXMgaW50byBhY2NvdW50IHRyYW5zZm9ybXMgYXMgd2VsbCBhcyBsYXlvdXQuXG5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Q29tcG9zaXRlUmVjdChlbGVtZW50T3JWaXJ0dWFsRWxlbWVudCwgb2Zmc2V0UGFyZW50LCBpc0ZpeGVkKSB7XG4gIGlmIChpc0ZpeGVkID09PSB2b2lkIDApIHtcbiAgICBpc0ZpeGVkID0gZmFsc2U7XG4gIH1cblxuICB2YXIgaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgPSBpc0hUTUxFbGVtZW50KG9mZnNldFBhcmVudCk7XG4gIHZhciBvZmZzZXRQYXJlbnRJc1NjYWxlZCA9IGlzSFRNTEVsZW1lbnQob2Zmc2V0UGFyZW50KSAmJiBpc0VsZW1lbnRTY2FsZWQob2Zmc2V0UGFyZW50KTtcbiAgdmFyIGRvY3VtZW50RWxlbWVudCA9IGdldERvY3VtZW50RWxlbWVudChvZmZzZXRQYXJlbnQpO1xuICB2YXIgcmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50T3JWaXJ0dWFsRWxlbWVudCwgb2Zmc2V0UGFyZW50SXNTY2FsZWQsIGlzRml4ZWQpO1xuICB2YXIgc2Nyb2xsID0ge1xuICAgIHNjcm9sbExlZnQ6IDAsXG4gICAgc2Nyb2xsVG9wOiAwXG4gIH07XG4gIHZhciBvZmZzZXRzID0ge1xuICAgIHg6IDAsXG4gICAgeTogMFxuICB9O1xuXG4gIGlmIChpc09mZnNldFBhcmVudEFuRWxlbWVudCB8fCAhaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgJiYgIWlzRml4ZWQpIHtcbiAgICBpZiAoZ2V0Tm9kZU5hbWUob2Zmc2V0UGFyZW50KSAhPT0gJ2JvZHknIHx8IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9wb3BwZXJqcy9wb3BwZXItY29yZS9pc3N1ZXMvMTA3OFxuICAgIGlzU2Nyb2xsUGFyZW50KGRvY3VtZW50RWxlbWVudCkpIHtcbiAgICAgIHNjcm9sbCA9IGdldE5vZGVTY3JvbGwob2Zmc2V0UGFyZW50KTtcbiAgICB9XG5cbiAgICBpZiAoaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpKSB7XG4gICAgICBvZmZzZXRzID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KG9mZnNldFBhcmVudCwgdHJ1ZSk7XG4gICAgICBvZmZzZXRzLnggKz0gb2Zmc2V0UGFyZW50LmNsaWVudExlZnQ7XG4gICAgICBvZmZzZXRzLnkgKz0gb2Zmc2V0UGFyZW50LmNsaWVudFRvcDtcbiAgICB9IGVsc2UgaWYgKGRvY3VtZW50RWxlbWVudCkge1xuICAgICAgb2Zmc2V0cy54ID0gZ2V0V2luZG93U2Nyb2xsQmFyWChkb2N1bWVudEVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgeDogcmVjdC5sZWZ0ICsgc2Nyb2xsLnNjcm9sbExlZnQgLSBvZmZzZXRzLngsXG4gICAgeTogcmVjdC50b3AgKyBzY3JvbGwuc2Nyb2xsVG9wIC0gb2Zmc2V0cy55LFxuICAgIHdpZHRoOiByZWN0LndpZHRoLFxuICAgIGhlaWdodDogcmVjdC5oZWlnaHRcbiAgfTtcbn0iLCJpbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuL2dldFdpbmRvdy5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KSB7XG4gIHJldHVybiBnZXRXaW5kb3coZWxlbWVudCkuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcbn0iLCJpbXBvcnQgeyBpc0VsZW1lbnQgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkge1xuICAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS1yZXR1cm5dOiBhc3N1bWUgYm9keSBpcyBhbHdheXMgYXZhaWxhYmxlXG4gIHJldHVybiAoKGlzRWxlbWVudChlbGVtZW50KSA/IGVsZW1lbnQub3duZXJEb2N1bWVudCA6IC8vICRGbG93Rml4TWVbcHJvcC1taXNzaW5nXVxuICBlbGVtZW50LmRvY3VtZW50KSB8fCB3aW5kb3cuZG9jdW1lbnQpLmRvY3VtZW50RWxlbWVudDtcbn0iLCJpbXBvcnQgZ2V0RG9jdW1lbnRFbGVtZW50IGZyb20gXCIuL2dldERvY3VtZW50RWxlbWVudC5qc1wiO1xuaW1wb3J0IGdldENvbXB1dGVkU3R5bGUgZnJvbSBcIi4vZ2V0Q29tcHV0ZWRTdHlsZS5qc1wiO1xuaW1wb3J0IGdldFdpbmRvd1Njcm9sbEJhclggZnJvbSBcIi4vZ2V0V2luZG93U2Nyb2xsQmFyWC5qc1wiO1xuaW1wb3J0IGdldFdpbmRvd1Njcm9sbCBmcm9tIFwiLi9nZXRXaW5kb3dTY3JvbGwuanNcIjtcbmltcG9ydCB7IG1heCB9IGZyb20gXCIuLi91dGlscy9tYXRoLmpzXCI7IC8vIEdldHMgdGhlIGVudGlyZSBzaXplIG9mIHRoZSBzY3JvbGxhYmxlIGRvY3VtZW50IGFyZWEsIGV2ZW4gZXh0ZW5kaW5nIG91dHNpZGVcbi8vIG9mIHRoZSBgPGh0bWw+YCBhbmQgYDxib2R5PmAgcmVjdCBib3VuZHMgaWYgaG9yaXpvbnRhbGx5IHNjcm9sbGFibGVcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0RG9jdW1lbnRSZWN0KGVsZW1lbnQpIHtcbiAgdmFyIF9lbGVtZW50JG93bmVyRG9jdW1lbjtcblxuICB2YXIgaHRtbCA9IGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KTtcbiAgdmFyIHdpblNjcm9sbCA9IGdldFdpbmRvd1Njcm9sbChlbGVtZW50KTtcbiAgdmFyIGJvZHkgPSAoX2VsZW1lbnQkb3duZXJEb2N1bWVuID0gZWxlbWVudC5vd25lckRvY3VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX2VsZW1lbnQkb3duZXJEb2N1bWVuLmJvZHk7XG4gIHZhciB3aWR0aCA9IG1heChodG1sLnNjcm9sbFdpZHRoLCBodG1sLmNsaWVudFdpZHRoLCBib2R5ID8gYm9keS5zY3JvbGxXaWR0aCA6IDAsIGJvZHkgPyBib2R5LmNsaWVudFdpZHRoIDogMCk7XG4gIHZhciBoZWlnaHQgPSBtYXgoaHRtbC5zY3JvbGxIZWlnaHQsIGh0bWwuY2xpZW50SGVpZ2h0LCBib2R5ID8gYm9keS5zY3JvbGxIZWlnaHQgOiAwLCBib2R5ID8gYm9keS5jbGllbnRIZWlnaHQgOiAwKTtcbiAgdmFyIHggPSAtd2luU2Nyb2xsLnNjcm9sbExlZnQgKyBnZXRXaW5kb3dTY3JvbGxCYXJYKGVsZW1lbnQpO1xuICB2YXIgeSA9IC13aW5TY3JvbGwuc2Nyb2xsVG9wO1xuXG4gIGlmIChnZXRDb21wdXRlZFN0eWxlKGJvZHkgfHwgaHRtbCkuZGlyZWN0aW9uID09PSAncnRsJykge1xuICAgIHggKz0gbWF4KGh0bWwuY2xpZW50V2lkdGgsIGJvZHkgPyBib2R5LmNsaWVudFdpZHRoIDogMCkgLSB3aWR0aDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgd2lkdGg6IHdpZHRoLFxuICAgIGhlaWdodDogaGVpZ2h0LFxuICAgIHg6IHgsXG4gICAgeTogeVxuICB9O1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldEhUTUxFbGVtZW50U2Nyb2xsKGVsZW1lbnQpIHtcbiAgcmV0dXJuIHtcbiAgICBzY3JvbGxMZWZ0OiBlbGVtZW50LnNjcm9sbExlZnQsXG4gICAgc2Nyb2xsVG9wOiBlbGVtZW50LnNjcm9sbFRvcFxuICB9O1xufSIsImltcG9ydCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgZnJvbSBcIi4vZ2V0Qm91bmRpbmdDbGllbnRSZWN0LmpzXCI7IC8vIFJldHVybnMgdGhlIGxheW91dCByZWN0IG9mIGFuIGVsZW1lbnQgcmVsYXRpdmUgdG8gaXRzIG9mZnNldFBhcmVudC4gTGF5b3V0XG4vLyBtZWFucyBpdCBkb2Vzbid0IHRha2UgaW50byBhY2NvdW50IHRyYW5zZm9ybXMuXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldExheW91dFJlY3QoZWxlbWVudCkge1xuICB2YXIgY2xpZW50UmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50KTsgLy8gVXNlIHRoZSBjbGllbnRSZWN0IHNpemVzIGlmIGl0J3Mgbm90IGJlZW4gdHJhbnNmb3JtZWQuXG4gIC8vIEZpeGVzIGh0dHBzOi8vZ2l0aHViLmNvbS9wb3BwZXJqcy9wb3BwZXItY29yZS9pc3N1ZXMvMTIyM1xuXG4gIHZhciB3aWR0aCA9IGVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gIHZhciBoZWlnaHQgPSBlbGVtZW50Lm9mZnNldEhlaWdodDtcblxuICBpZiAoTWF0aC5hYnMoY2xpZW50UmVjdC53aWR0aCAtIHdpZHRoKSA8PSAxKSB7XG4gICAgd2lkdGggPSBjbGllbnRSZWN0LndpZHRoO1xuICB9XG5cbiAgaWYgKE1hdGguYWJzKGNsaWVudFJlY3QuaGVpZ2h0IC0gaGVpZ2h0KSA8PSAxKSB7XG4gICAgaGVpZ2h0ID0gY2xpZW50UmVjdC5oZWlnaHQ7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHg6IGVsZW1lbnQub2Zmc2V0TGVmdCxcbiAgICB5OiBlbGVtZW50Lm9mZnNldFRvcCxcbiAgICB3aWR0aDogd2lkdGgsXG4gICAgaGVpZ2h0OiBoZWlnaHRcbiAgfTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXROb2RlTmFtZShlbGVtZW50KSB7XG4gIHJldHVybiBlbGVtZW50ID8gKGVsZW1lbnQubm9kZU5hbWUgfHwgJycpLnRvTG93ZXJDYXNlKCkgOiBudWxsO1xufSIsImltcG9ydCBnZXRXaW5kb3dTY3JvbGwgZnJvbSBcIi4vZ2V0V2luZG93U2Nyb2xsLmpzXCI7XG5pbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuL2dldFdpbmRvdy5qc1wiO1xuaW1wb3J0IHsgaXNIVE1MRWxlbWVudCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmltcG9ydCBnZXRIVE1MRWxlbWVudFNjcm9sbCBmcm9tIFwiLi9nZXRIVE1MRWxlbWVudFNjcm9sbC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Tm9kZVNjcm9sbChub2RlKSB7XG4gIGlmIChub2RlID09PSBnZXRXaW5kb3cobm9kZSkgfHwgIWlzSFRNTEVsZW1lbnQobm9kZSkpIHtcbiAgICByZXR1cm4gZ2V0V2luZG93U2Nyb2xsKG5vZGUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBnZXRIVE1MRWxlbWVudFNjcm9sbChub2RlKTtcbiAgfVxufSIsImltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4vZ2V0V2luZG93LmpzXCI7XG5pbXBvcnQgZ2V0Tm9kZU5hbWUgZnJvbSBcIi4vZ2V0Tm9kZU5hbWUuanNcIjtcbmltcG9ydCBnZXRDb21wdXRlZFN0eWxlIGZyb20gXCIuL2dldENvbXB1dGVkU3R5bGUuanNcIjtcbmltcG9ydCB7IGlzSFRNTEVsZW1lbnQsIGlzU2hhZG93Um9vdCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmltcG9ydCBpc1RhYmxlRWxlbWVudCBmcm9tIFwiLi9pc1RhYmxlRWxlbWVudC5qc1wiO1xuaW1wb3J0IGdldFBhcmVudE5vZGUgZnJvbSBcIi4vZ2V0UGFyZW50Tm9kZS5qc1wiO1xuaW1wb3J0IGdldFVBU3RyaW5nIGZyb20gXCIuLi91dGlscy91c2VyQWdlbnQuanNcIjtcblxuZnVuY3Rpb24gZ2V0VHJ1ZU9mZnNldFBhcmVudChlbGVtZW50KSB7XG4gIGlmICghaXNIVE1MRWxlbWVudChlbGVtZW50KSB8fCAvLyBodHRwczovL2dpdGh1Yi5jb20vcG9wcGVyanMvcG9wcGVyLWNvcmUvaXNzdWVzLzgzN1xuICBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLnBvc2l0aW9uID09PSAnZml4ZWQnKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gZWxlbWVudC5vZmZzZXRQYXJlbnQ7XG59IC8vIGAub2Zmc2V0UGFyZW50YCByZXBvcnRzIGBudWxsYCBmb3IgZml4ZWQgZWxlbWVudHMsIHdoaWxlIGFic29sdXRlIGVsZW1lbnRzXG4vLyByZXR1cm4gdGhlIGNvbnRhaW5pbmcgYmxvY2tcblxuXG5mdW5jdGlvbiBnZXRDb250YWluaW5nQmxvY2soZWxlbWVudCkge1xuICB2YXIgaXNGaXJlZm94ID0gL2ZpcmVmb3gvaS50ZXN0KGdldFVBU3RyaW5nKCkpO1xuICB2YXIgaXNJRSA9IC9UcmlkZW50L2kudGVzdChnZXRVQVN0cmluZygpKTtcblxuICBpZiAoaXNJRSAmJiBpc0hUTUxFbGVtZW50KGVsZW1lbnQpKSB7XG4gICAgLy8gSW4gSUUgOSwgMTAgYW5kIDExIGZpeGVkIGVsZW1lbnRzIGNvbnRhaW5pbmcgYmxvY2sgaXMgYWx3YXlzIGVzdGFibGlzaGVkIGJ5IHRoZSB2aWV3cG9ydFxuICAgIHZhciBlbGVtZW50Q3NzID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcblxuICAgIGlmIChlbGVtZW50Q3NzLnBvc2l0aW9uID09PSAnZml4ZWQnKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICB2YXIgY3VycmVudE5vZGUgPSBnZXRQYXJlbnROb2RlKGVsZW1lbnQpO1xuXG4gIGlmIChpc1NoYWRvd1Jvb3QoY3VycmVudE5vZGUpKSB7XG4gICAgY3VycmVudE5vZGUgPSBjdXJyZW50Tm9kZS5ob3N0O1xuICB9XG5cbiAgd2hpbGUgKGlzSFRNTEVsZW1lbnQoY3VycmVudE5vZGUpICYmIFsnaHRtbCcsICdib2R5J10uaW5kZXhPZihnZXROb2RlTmFtZShjdXJyZW50Tm9kZSkpIDwgMCkge1xuICAgIHZhciBjc3MgPSBnZXRDb21wdXRlZFN0eWxlKGN1cnJlbnROb2RlKTsgLy8gVGhpcyBpcyBub24tZXhoYXVzdGl2ZSBidXQgY292ZXJzIHRoZSBtb3N0IGNvbW1vbiBDU1MgcHJvcGVydGllcyB0aGF0XG4gICAgLy8gY3JlYXRlIGEgY29udGFpbmluZyBibG9jay5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvQ29udGFpbmluZ19ibG9jayNpZGVudGlmeWluZ190aGVfY29udGFpbmluZ19ibG9ja1xuXG4gICAgaWYgKGNzcy50cmFuc2Zvcm0gIT09ICdub25lJyB8fCBjc3MucGVyc3BlY3RpdmUgIT09ICdub25lJyB8fCBjc3MuY29udGFpbiA9PT0gJ3BhaW50JyB8fCBbJ3RyYW5zZm9ybScsICdwZXJzcGVjdGl2ZSddLmluZGV4T2YoY3NzLndpbGxDaGFuZ2UpICE9PSAtMSB8fCBpc0ZpcmVmb3ggJiYgY3NzLndpbGxDaGFuZ2UgPT09ICdmaWx0ZXInIHx8IGlzRmlyZWZveCAmJiBjc3MuZmlsdGVyICYmIGNzcy5maWx0ZXIgIT09ICdub25lJykge1xuICAgICAgcmV0dXJuIGN1cnJlbnROb2RlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLnBhcmVudE5vZGU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59IC8vIEdldHMgdGhlIGNsb3Nlc3QgYW5jZXN0b3IgcG9zaXRpb25lZCBlbGVtZW50LiBIYW5kbGVzIHNvbWUgZWRnZSBjYXNlcyxcbi8vIHN1Y2ggYXMgdGFibGUgYW5jZXN0b3JzIGFuZCBjcm9zcyBicm93c2VyIGJ1Z3MuXG5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0T2Zmc2V0UGFyZW50KGVsZW1lbnQpIHtcbiAgdmFyIHdpbmRvdyA9IGdldFdpbmRvdyhlbGVtZW50KTtcbiAgdmFyIG9mZnNldFBhcmVudCA9IGdldFRydWVPZmZzZXRQYXJlbnQoZWxlbWVudCk7XG5cbiAgd2hpbGUgKG9mZnNldFBhcmVudCAmJiBpc1RhYmxlRWxlbWVudChvZmZzZXRQYXJlbnQpICYmIGdldENvbXB1dGVkU3R5bGUob2Zmc2V0UGFyZW50KS5wb3NpdGlvbiA9PT0gJ3N0YXRpYycpIHtcbiAgICBvZmZzZXRQYXJlbnQgPSBnZXRUcnVlT2Zmc2V0UGFyZW50KG9mZnNldFBhcmVudCk7XG4gIH1cblxuICBpZiAob2Zmc2V0UGFyZW50ICYmIChnZXROb2RlTmFtZShvZmZzZXRQYXJlbnQpID09PSAnaHRtbCcgfHwgZ2V0Tm9kZU5hbWUob2Zmc2V0UGFyZW50KSA9PT0gJ2JvZHknICYmIGdldENvbXB1dGVkU3R5bGUob2Zmc2V0UGFyZW50KS5wb3NpdGlvbiA9PT0gJ3N0YXRpYycpKSB7XG4gICAgcmV0dXJuIHdpbmRvdztcbiAgfVxuXG4gIHJldHVybiBvZmZzZXRQYXJlbnQgfHwgZ2V0Q29udGFpbmluZ0Jsb2NrKGVsZW1lbnQpIHx8IHdpbmRvdztcbn0iLCJpbXBvcnQgZ2V0Tm9kZU5hbWUgZnJvbSBcIi4vZ2V0Tm9kZU5hbWUuanNcIjtcbmltcG9ydCBnZXREb2N1bWVudEVsZW1lbnQgZnJvbSBcIi4vZ2V0RG9jdW1lbnRFbGVtZW50LmpzXCI7XG5pbXBvcnQgeyBpc1NoYWRvd1Jvb3QgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRQYXJlbnROb2RlKGVsZW1lbnQpIHtcbiAgaWYgKGdldE5vZGVOYW1lKGVsZW1lbnQpID09PSAnaHRtbCcpIHtcbiAgICByZXR1cm4gZWxlbWVudDtcbiAgfVxuXG4gIHJldHVybiAoLy8gdGhpcyBpcyBhIHF1aWNrZXIgKGJ1dCBsZXNzIHR5cGUgc2FmZSkgd2F5IHRvIHNhdmUgcXVpdGUgc29tZSBieXRlcyBmcm9tIHRoZSBidW5kbGVcbiAgICAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS1yZXR1cm5dXG4gICAgLy8gJEZsb3dGaXhNZVtwcm9wLW1pc3NpbmddXG4gICAgZWxlbWVudC5hc3NpZ25lZFNsb3QgfHwgLy8gc3RlcCBpbnRvIHRoZSBzaGFkb3cgRE9NIG9mIHRoZSBwYXJlbnQgb2YgYSBzbG90dGVkIG5vZGVcbiAgICBlbGVtZW50LnBhcmVudE5vZGUgfHwgKCAvLyBET00gRWxlbWVudCBkZXRlY3RlZFxuICAgIGlzU2hhZG93Um9vdChlbGVtZW50KSA/IGVsZW1lbnQuaG9zdCA6IG51bGwpIHx8IC8vIFNoYWRvd1Jvb3QgZGV0ZWN0ZWRcbiAgICAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS1jYWxsXTogSFRNTEVsZW1lbnQgaXMgYSBOb2RlXG4gICAgZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpIC8vIGZhbGxiYWNrXG5cbiAgKTtcbn0iLCJpbXBvcnQgZ2V0UGFyZW50Tm9kZSBmcm9tIFwiLi9nZXRQYXJlbnROb2RlLmpzXCI7XG5pbXBvcnQgaXNTY3JvbGxQYXJlbnQgZnJvbSBcIi4vaXNTY3JvbGxQYXJlbnQuanNcIjtcbmltcG9ydCBnZXROb2RlTmFtZSBmcm9tIFwiLi9nZXROb2RlTmFtZS5qc1wiO1xuaW1wb3J0IHsgaXNIVE1MRWxlbWVudCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFNjcm9sbFBhcmVudChub2RlKSB7XG4gIGlmIChbJ2h0bWwnLCAnYm9keScsICcjZG9jdW1lbnQnXS5pbmRleE9mKGdldE5vZGVOYW1lKG5vZGUpKSA+PSAwKSB7XG4gICAgLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtcmV0dXJuXTogYXNzdW1lIGJvZHkgaXMgYWx3YXlzIGF2YWlsYWJsZVxuICAgIHJldHVybiBub2RlLm93bmVyRG9jdW1lbnQuYm9keTtcbiAgfVxuXG4gIGlmIChpc0hUTUxFbGVtZW50KG5vZGUpICYmIGlzU2Nyb2xsUGFyZW50KG5vZGUpKSB7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICByZXR1cm4gZ2V0U2Nyb2xsUGFyZW50KGdldFBhcmVudE5vZGUobm9kZSkpO1xufSIsImltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4vZ2V0V2luZG93LmpzXCI7XG5pbXBvcnQgZ2V0RG9jdW1lbnRFbGVtZW50IGZyb20gXCIuL2dldERvY3VtZW50RWxlbWVudC5qc1wiO1xuaW1wb3J0IGdldFdpbmRvd1Njcm9sbEJhclggZnJvbSBcIi4vZ2V0V2luZG93U2Nyb2xsQmFyWC5qc1wiO1xuaW1wb3J0IGlzTGF5b3V0Vmlld3BvcnQgZnJvbSBcIi4vaXNMYXlvdXRWaWV3cG9ydC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Vmlld3BvcnRSZWN0KGVsZW1lbnQsIHN0cmF0ZWd5KSB7XG4gIHZhciB3aW4gPSBnZXRXaW5kb3coZWxlbWVudCk7XG4gIHZhciBodG1sID0gZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpO1xuICB2YXIgdmlzdWFsVmlld3BvcnQgPSB3aW4udmlzdWFsVmlld3BvcnQ7XG4gIHZhciB3aWR0aCA9IGh0bWwuY2xpZW50V2lkdGg7XG4gIHZhciBoZWlnaHQgPSBodG1sLmNsaWVudEhlaWdodDtcbiAgdmFyIHggPSAwO1xuICB2YXIgeSA9IDA7XG5cbiAgaWYgKHZpc3VhbFZpZXdwb3J0KSB7XG4gICAgd2lkdGggPSB2aXN1YWxWaWV3cG9ydC53aWR0aDtcbiAgICBoZWlnaHQgPSB2aXN1YWxWaWV3cG9ydC5oZWlnaHQ7XG4gICAgdmFyIGxheW91dFZpZXdwb3J0ID0gaXNMYXlvdXRWaWV3cG9ydCgpO1xuXG4gICAgaWYgKGxheW91dFZpZXdwb3J0IHx8ICFsYXlvdXRWaWV3cG9ydCAmJiBzdHJhdGVneSA9PT0gJ2ZpeGVkJykge1xuICAgICAgeCA9IHZpc3VhbFZpZXdwb3J0Lm9mZnNldExlZnQ7XG4gICAgICB5ID0gdmlzdWFsVmlld3BvcnQub2Zmc2V0VG9wO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgd2lkdGg6IHdpZHRoLFxuICAgIGhlaWdodDogaGVpZ2h0LFxuICAgIHg6IHggKyBnZXRXaW5kb3dTY3JvbGxCYXJYKGVsZW1lbnQpLFxuICAgIHk6IHlcbiAgfTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRXaW5kb3cobm9kZSkge1xuICBpZiAobm9kZSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIHdpbmRvdztcbiAgfVxuXG4gIGlmIChub2RlLnRvU3RyaW5nKCkgIT09ICdbb2JqZWN0IFdpbmRvd10nKSB7XG4gICAgdmFyIG93bmVyRG9jdW1lbnQgPSBub2RlLm93bmVyRG9jdW1lbnQ7XG4gICAgcmV0dXJuIG93bmVyRG9jdW1lbnQgPyBvd25lckRvY3VtZW50LmRlZmF1bHRWaWV3IHx8IHdpbmRvdyA6IHdpbmRvdztcbiAgfVxuXG4gIHJldHVybiBub2RlO1xufSIsImltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4vZ2V0V2luZG93LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRXaW5kb3dTY3JvbGwobm9kZSkge1xuICB2YXIgd2luID0gZ2V0V2luZG93KG5vZGUpO1xuICB2YXIgc2Nyb2xsTGVmdCA9IHdpbi5wYWdlWE9mZnNldDtcbiAgdmFyIHNjcm9sbFRvcCA9IHdpbi5wYWdlWU9mZnNldDtcbiAgcmV0dXJuIHtcbiAgICBzY3JvbGxMZWZ0OiBzY3JvbGxMZWZ0LFxuICAgIHNjcm9sbFRvcDogc2Nyb2xsVG9wXG4gIH07XG59IiwiaW1wb3J0IGdldEJvdW5kaW5nQ2xpZW50UmVjdCBmcm9tIFwiLi9nZXRCb3VuZGluZ0NsaWVudFJlY3QuanNcIjtcbmltcG9ydCBnZXREb2N1bWVudEVsZW1lbnQgZnJvbSBcIi4vZ2V0RG9jdW1lbnRFbGVtZW50LmpzXCI7XG5pbXBvcnQgZ2V0V2luZG93U2Nyb2xsIGZyb20gXCIuL2dldFdpbmRvd1Njcm9sbC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0V2luZG93U2Nyb2xsQmFyWChlbGVtZW50KSB7XG4gIC8vIElmIDxodG1sPiBoYXMgYSBDU1Mgd2lkdGggZ3JlYXRlciB0aGFuIHRoZSB2aWV3cG9ydCwgdGhlbiB0aGlzIHdpbGwgYmVcbiAgLy8gaW5jb3JyZWN0IGZvciBSVEwuXG4gIC8vIFBvcHBlciAxIGlzIGJyb2tlbiBpbiB0aGlzIGNhc2UgYW5kIG5ldmVyIGhhZCBhIGJ1ZyByZXBvcnQgc28gbGV0J3MgYXNzdW1lXG4gIC8vIGl0J3Mgbm90IGFuIGlzc3VlLiBJIGRvbid0IHRoaW5rIGFueW9uZSBldmVyIHNwZWNpZmllcyB3aWR0aCBvbiA8aHRtbD5cbiAgLy8gYW55d2F5LlxuICAvLyBCcm93c2VycyB3aGVyZSB0aGUgbGVmdCBzY3JvbGxiYXIgZG9lc24ndCBjYXVzZSBhbiBpc3N1ZSByZXBvcnQgYDBgIGZvclxuICAvLyB0aGlzIChlLmcuIEVkZ2UgMjAxOSwgSUUxMSwgU2FmYXJpKVxuICByZXR1cm4gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KSkubGVmdCArIGdldFdpbmRvd1Njcm9sbChlbGVtZW50KS5zY3JvbGxMZWZ0O1xufSIsImltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4vZ2V0V2luZG93LmpzXCI7XG5cbmZ1bmN0aW9uIGlzRWxlbWVudChub2RlKSB7XG4gIHZhciBPd25FbGVtZW50ID0gZ2V0V2luZG93KG5vZGUpLkVsZW1lbnQ7XG4gIHJldHVybiBub2RlIGluc3RhbmNlb2YgT3duRWxlbWVudCB8fCBub2RlIGluc3RhbmNlb2YgRWxlbWVudDtcbn1cblxuZnVuY3Rpb24gaXNIVE1MRWxlbWVudChub2RlKSB7XG4gIHZhciBPd25FbGVtZW50ID0gZ2V0V2luZG93KG5vZGUpLkhUTUxFbGVtZW50O1xuICByZXR1cm4gbm9kZSBpbnN0YW5jZW9mIE93bkVsZW1lbnQgfHwgbm9kZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50O1xufVxuXG5mdW5jdGlvbiBpc1NoYWRvd1Jvb3Qobm9kZSkge1xuICAvLyBJRSAxMSBoYXMgbm8gU2hhZG93Um9vdFxuICBpZiAodHlwZW9mIFNoYWRvd1Jvb3QgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgdmFyIE93bkVsZW1lbnQgPSBnZXRXaW5kb3cobm9kZSkuU2hhZG93Um9vdDtcbiAgcmV0dXJuIG5vZGUgaW5zdGFuY2VvZiBPd25FbGVtZW50IHx8IG5vZGUgaW5zdGFuY2VvZiBTaGFkb3dSb290O1xufVxuXG5leHBvcnQgeyBpc0VsZW1lbnQsIGlzSFRNTEVsZW1lbnQsIGlzU2hhZG93Um9vdCB9OyIsImltcG9ydCBnZXRVQVN0cmluZyBmcm9tIFwiLi4vdXRpbHMvdXNlckFnZW50LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc0xheW91dFZpZXdwb3J0KCkge1xuICByZXR1cm4gIS9eKCg/IWNocm9tZXxhbmRyb2lkKS4pKnNhZmFyaS9pLnRlc3QoZ2V0VUFTdHJpbmcoKSk7XG59IiwiaW1wb3J0IGdldENvbXB1dGVkU3R5bGUgZnJvbSBcIi4vZ2V0Q29tcHV0ZWRTdHlsZS5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNTY3JvbGxQYXJlbnQoZWxlbWVudCkge1xuICAvLyBGaXJlZm94IHdhbnRzIHVzIHRvIGNoZWNrIGAteGAgYW5kIGAteWAgdmFyaWF0aW9ucyBhcyB3ZWxsXG4gIHZhciBfZ2V0Q29tcHV0ZWRTdHlsZSA9IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCksXG4gICAgICBvdmVyZmxvdyA9IF9nZXRDb21wdXRlZFN0eWxlLm92ZXJmbG93LFxuICAgICAgb3ZlcmZsb3dYID0gX2dldENvbXB1dGVkU3R5bGUub3ZlcmZsb3dYLFxuICAgICAgb3ZlcmZsb3dZID0gX2dldENvbXB1dGVkU3R5bGUub3ZlcmZsb3dZO1xuXG4gIHJldHVybiAvYXV0b3xzY3JvbGx8b3ZlcmxheXxoaWRkZW4vLnRlc3Qob3ZlcmZsb3cgKyBvdmVyZmxvd1kgKyBvdmVyZmxvd1gpO1xufSIsImltcG9ydCBnZXROb2RlTmFtZSBmcm9tIFwiLi9nZXROb2RlTmFtZS5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNUYWJsZUVsZW1lbnQoZWxlbWVudCkge1xuICByZXR1cm4gWyd0YWJsZScsICd0ZCcsICd0aCddLmluZGV4T2YoZ2V0Tm9kZU5hbWUoZWxlbWVudCkpID49IDA7XG59IiwiaW1wb3J0IGdldFNjcm9sbFBhcmVudCBmcm9tIFwiLi9nZXRTY3JvbGxQYXJlbnQuanNcIjtcbmltcG9ydCBnZXRQYXJlbnROb2RlIGZyb20gXCIuL2dldFBhcmVudE5vZGUuanNcIjtcbmltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4vZ2V0V2luZG93LmpzXCI7XG5pbXBvcnQgaXNTY3JvbGxQYXJlbnQgZnJvbSBcIi4vaXNTY3JvbGxQYXJlbnQuanNcIjtcbi8qXG5naXZlbiBhIERPTSBlbGVtZW50LCByZXR1cm4gdGhlIGxpc3Qgb2YgYWxsIHNjcm9sbCBwYXJlbnRzLCB1cCB0aGUgbGlzdCBvZiBhbmNlc29yc1xudW50aWwgd2UgZ2V0IHRvIHRoZSB0b3Agd2luZG93IG9iamVjdC4gVGhpcyBsaXN0IGlzIHdoYXQgd2UgYXR0YWNoIHNjcm9sbCBsaXN0ZW5lcnNcbnRvLCBiZWNhdXNlIGlmIGFueSBvZiB0aGVzZSBwYXJlbnQgZWxlbWVudHMgc2Nyb2xsLCB3ZSdsbCBuZWVkIHRvIHJlLWNhbGN1bGF0ZSB0aGVcbnJlZmVyZW5jZSBlbGVtZW50J3MgcG9zaXRpb24uXG4qL1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBsaXN0U2Nyb2xsUGFyZW50cyhlbGVtZW50LCBsaXN0KSB7XG4gIHZhciBfZWxlbWVudCRvd25lckRvY3VtZW47XG5cbiAgaWYgKGxpc3QgPT09IHZvaWQgMCkge1xuICAgIGxpc3QgPSBbXTtcbiAgfVxuXG4gIHZhciBzY3JvbGxQYXJlbnQgPSBnZXRTY3JvbGxQYXJlbnQoZWxlbWVudCk7XG4gIHZhciBpc0JvZHkgPSBzY3JvbGxQYXJlbnQgPT09ICgoX2VsZW1lbnQkb3duZXJEb2N1bWVuID0gZWxlbWVudC5vd25lckRvY3VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX2VsZW1lbnQkb3duZXJEb2N1bWVuLmJvZHkpO1xuICB2YXIgd2luID0gZ2V0V2luZG93KHNjcm9sbFBhcmVudCk7XG4gIHZhciB0YXJnZXQgPSBpc0JvZHkgPyBbd2luXS5jb25jYXQod2luLnZpc3VhbFZpZXdwb3J0IHx8IFtdLCBpc1Njcm9sbFBhcmVudChzY3JvbGxQYXJlbnQpID8gc2Nyb2xsUGFyZW50IDogW10pIDogc2Nyb2xsUGFyZW50O1xuICB2YXIgdXBkYXRlZExpc3QgPSBsaXN0LmNvbmNhdCh0YXJnZXQpO1xuICByZXR1cm4gaXNCb2R5ID8gdXBkYXRlZExpc3QgOiAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS1jYWxsXTogaXNCb2R5IHRlbGxzIHVzIHRhcmdldCB3aWxsIGJlIGFuIEhUTUxFbGVtZW50IGhlcmVcbiAgdXBkYXRlZExpc3QuY29uY2F0KGxpc3RTY3JvbGxQYXJlbnRzKGdldFBhcmVudE5vZGUodGFyZ2V0KSkpO1xufSIsImV4cG9ydCB2YXIgdG9wID0gJ3RvcCc7XG5leHBvcnQgdmFyIGJvdHRvbSA9ICdib3R0b20nO1xuZXhwb3J0IHZhciByaWdodCA9ICdyaWdodCc7XG5leHBvcnQgdmFyIGxlZnQgPSAnbGVmdCc7XG5leHBvcnQgdmFyIGF1dG8gPSAnYXV0byc7XG5leHBvcnQgdmFyIGJhc2VQbGFjZW1lbnRzID0gW3RvcCwgYm90dG9tLCByaWdodCwgbGVmdF07XG5leHBvcnQgdmFyIHN0YXJ0ID0gJ3N0YXJ0JztcbmV4cG9ydCB2YXIgZW5kID0gJ2VuZCc7XG5leHBvcnQgdmFyIGNsaXBwaW5nUGFyZW50cyA9ICdjbGlwcGluZ1BhcmVudHMnO1xuZXhwb3J0IHZhciB2aWV3cG9ydCA9ICd2aWV3cG9ydCc7XG5leHBvcnQgdmFyIHBvcHBlciA9ICdwb3BwZXInO1xuZXhwb3J0IHZhciByZWZlcmVuY2UgPSAncmVmZXJlbmNlJztcbmV4cG9ydCB2YXIgdmFyaWF0aW9uUGxhY2VtZW50cyA9IC8qI19fUFVSRV9fKi9iYXNlUGxhY2VtZW50cy5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgcGxhY2VtZW50KSB7XG4gIHJldHVybiBhY2MuY29uY2F0KFtwbGFjZW1lbnQgKyBcIi1cIiArIHN0YXJ0LCBwbGFjZW1lbnQgKyBcIi1cIiArIGVuZF0pO1xufSwgW10pO1xuZXhwb3J0IHZhciBwbGFjZW1lbnRzID0gLyojX19QVVJFX18qL1tdLmNvbmNhdChiYXNlUGxhY2VtZW50cywgW2F1dG9dKS5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgcGxhY2VtZW50KSB7XG4gIHJldHVybiBhY2MuY29uY2F0KFtwbGFjZW1lbnQsIHBsYWNlbWVudCArIFwiLVwiICsgc3RhcnQsIHBsYWNlbWVudCArIFwiLVwiICsgZW5kXSk7XG59LCBbXSk7IC8vIG1vZGlmaWVycyB0aGF0IG5lZWQgdG8gcmVhZCB0aGUgRE9NXG5cbmV4cG9ydCB2YXIgYmVmb3JlUmVhZCA9ICdiZWZvcmVSZWFkJztcbmV4cG9ydCB2YXIgcmVhZCA9ICdyZWFkJztcbmV4cG9ydCB2YXIgYWZ0ZXJSZWFkID0gJ2FmdGVyUmVhZCc7IC8vIHB1cmUtbG9naWMgbW9kaWZpZXJzXG5cbmV4cG9ydCB2YXIgYmVmb3JlTWFpbiA9ICdiZWZvcmVNYWluJztcbmV4cG9ydCB2YXIgbWFpbiA9ICdtYWluJztcbmV4cG9ydCB2YXIgYWZ0ZXJNYWluID0gJ2FmdGVyTWFpbic7IC8vIG1vZGlmaWVyIHdpdGggdGhlIHB1cnBvc2UgdG8gd3JpdGUgdG8gdGhlIERPTSAob3Igd3JpdGUgaW50byBhIGZyYW1ld29yayBzdGF0ZSlcblxuZXhwb3J0IHZhciBiZWZvcmVXcml0ZSA9ICdiZWZvcmVXcml0ZSc7XG5leHBvcnQgdmFyIHdyaXRlID0gJ3dyaXRlJztcbmV4cG9ydCB2YXIgYWZ0ZXJXcml0ZSA9ICdhZnRlcldyaXRlJztcbmV4cG9ydCB2YXIgbW9kaWZpZXJQaGFzZXMgPSBbYmVmb3JlUmVhZCwgcmVhZCwgYWZ0ZXJSZWFkLCBiZWZvcmVNYWluLCBtYWluLCBhZnRlck1haW4sIGJlZm9yZVdyaXRlLCB3cml0ZSwgYWZ0ZXJXcml0ZV07IiwiZXhwb3J0ICogZnJvbSBcIi4vZW51bXMuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL21vZGlmaWVycy9pbmRleC5qc1wiOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbmV4cG9ydCB7IHBvcHBlckdlbmVyYXRvciwgZGV0ZWN0T3ZlcmZsb3csIGNyZWF0ZVBvcHBlciBhcyBjcmVhdGVQb3BwZXJCYXNlIH0gZnJvbSBcIi4vY3JlYXRlUG9wcGVyLmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZXhwb3J0IHsgY3JlYXRlUG9wcGVyIH0gZnJvbSBcIi4vcG9wcGVyLmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZXhwb3J0IHsgY3JlYXRlUG9wcGVyIGFzIGNyZWF0ZVBvcHBlckxpdGUgfSBmcm9tIFwiLi9wb3BwZXItbGl0ZS5qc1wiOyIsImltcG9ydCBnZXROb2RlTmFtZSBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldE5vZGVOYW1lLmpzXCI7XG5pbXBvcnQgeyBpc0hUTUxFbGVtZW50IH0gZnJvbSBcIi4uL2RvbS11dGlscy9pbnN0YW5jZU9mLmpzXCI7IC8vIFRoaXMgbW9kaWZpZXIgdGFrZXMgdGhlIHN0eWxlcyBwcmVwYXJlZCBieSB0aGUgYGNvbXB1dGVTdHlsZXNgIG1vZGlmaWVyXG4vLyBhbmQgYXBwbGllcyB0aGVtIHRvIHRoZSBIVE1MRWxlbWVudHMgc3VjaCBhcyBwb3BwZXIgYW5kIGFycm93XG5cbmZ1bmN0aW9uIGFwcGx5U3R5bGVzKF9yZWYpIHtcbiAgdmFyIHN0YXRlID0gX3JlZi5zdGF0ZTtcbiAgT2JqZWN0LmtleXMoc3RhdGUuZWxlbWVudHMpLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHtcbiAgICB2YXIgc3R5bGUgPSBzdGF0ZS5zdHlsZXNbbmFtZV0gfHwge307XG4gICAgdmFyIGF0dHJpYnV0ZXMgPSBzdGF0ZS5hdHRyaWJ1dGVzW25hbWVdIHx8IHt9O1xuICAgIHZhciBlbGVtZW50ID0gc3RhdGUuZWxlbWVudHNbbmFtZV07IC8vIGFycm93IGlzIG9wdGlvbmFsICsgdmlydHVhbCBlbGVtZW50c1xuXG4gICAgaWYgKCFpc0hUTUxFbGVtZW50KGVsZW1lbnQpIHx8ICFnZXROb2RlTmFtZShlbGVtZW50KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gLy8gRmxvdyBkb2Vzbid0IHN1cHBvcnQgdG8gZXh0ZW5kIHRoaXMgcHJvcGVydHksIGJ1dCBpdCdzIHRoZSBtb3N0XG4gICAgLy8gZWZmZWN0aXZlIHdheSB0byBhcHBseSBzdHlsZXMgdG8gYW4gSFRNTEVsZW1lbnRcbiAgICAvLyAkRmxvd0ZpeE1lW2Nhbm5vdC13cml0ZV1cblxuXG4gICAgT2JqZWN0LmFzc2lnbihlbGVtZW50LnN0eWxlLCBzdHlsZSk7XG4gICAgT2JqZWN0LmtleXMoYXR0cmlidXRlcykuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkge1xuICAgICAgdmFyIHZhbHVlID0gYXR0cmlidXRlc1tuYW1lXTtcblxuICAgICAgaWYgKHZhbHVlID09PSBmYWxzZSkge1xuICAgICAgICBlbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShuYW1lKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKG5hbWUsIHZhbHVlID09PSB0cnVlID8gJycgOiB2YWx1ZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBlZmZlY3QoX3JlZjIpIHtcbiAgdmFyIHN0YXRlID0gX3JlZjIuc3RhdGU7XG4gIHZhciBpbml0aWFsU3R5bGVzID0ge1xuICAgIHBvcHBlcjoge1xuICAgICAgcG9zaXRpb246IHN0YXRlLm9wdGlvbnMuc3RyYXRlZ3ksXG4gICAgICBsZWZ0OiAnMCcsXG4gICAgICB0b3A6ICcwJyxcbiAgICAgIG1hcmdpbjogJzAnXG4gICAgfSxcbiAgICBhcnJvdzoge1xuICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZSdcbiAgICB9LFxuICAgIHJlZmVyZW5jZToge31cbiAgfTtcbiAgT2JqZWN0LmFzc2lnbihzdGF0ZS5lbGVtZW50cy5wb3BwZXIuc3R5bGUsIGluaXRpYWxTdHlsZXMucG9wcGVyKTtcbiAgc3RhdGUuc3R5bGVzID0gaW5pdGlhbFN0eWxlcztcblxuICBpZiAoc3RhdGUuZWxlbWVudHMuYXJyb3cpIHtcbiAgICBPYmplY3QuYXNzaWduKHN0YXRlLmVsZW1lbnRzLmFycm93LnN0eWxlLCBpbml0aWFsU3R5bGVzLmFycm93KTtcbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgT2JqZWN0LmtleXMoc3RhdGUuZWxlbWVudHMpLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgIHZhciBlbGVtZW50ID0gc3RhdGUuZWxlbWVudHNbbmFtZV07XG4gICAgICB2YXIgYXR0cmlidXRlcyA9IHN0YXRlLmF0dHJpYnV0ZXNbbmFtZV0gfHwge307XG4gICAgICB2YXIgc3R5bGVQcm9wZXJ0aWVzID0gT2JqZWN0LmtleXMoc3RhdGUuc3R5bGVzLmhhc093blByb3BlcnR5KG5hbWUpID8gc3RhdGUuc3R5bGVzW25hbWVdIDogaW5pdGlhbFN0eWxlc1tuYW1lXSk7IC8vIFNldCBhbGwgdmFsdWVzIHRvIGFuIGVtcHR5IHN0cmluZyB0byB1bnNldCB0aGVtXG5cbiAgICAgIHZhciBzdHlsZSA9IHN0eWxlUHJvcGVydGllcy5yZWR1Y2UoZnVuY3Rpb24gKHN0eWxlLCBwcm9wZXJ0eSkge1xuICAgICAgICBzdHlsZVtwcm9wZXJ0eV0gPSAnJztcbiAgICAgICAgcmV0dXJuIHN0eWxlO1xuICAgICAgfSwge30pOyAvLyBhcnJvdyBpcyBvcHRpb25hbCArIHZpcnR1YWwgZWxlbWVudHNcblxuICAgICAgaWYgKCFpc0hUTUxFbGVtZW50KGVsZW1lbnQpIHx8ICFnZXROb2RlTmFtZShlbGVtZW50KSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIE9iamVjdC5hc3NpZ24oZWxlbWVudC5zdHlsZSwgc3R5bGUpO1xuICAgICAgT2JqZWN0LmtleXMoYXR0cmlidXRlcykuZm9yRWFjaChmdW5jdGlvbiAoYXR0cmlidXRlKSB7XG4gICAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKGF0dHJpYnV0ZSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfTtcbn0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ2FwcGx5U3R5bGVzJyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICd3cml0ZScsXG4gIGZuOiBhcHBseVN0eWxlcyxcbiAgZWZmZWN0OiBlZmZlY3QsXG4gIHJlcXVpcmVzOiBbJ2NvbXB1dGVTdHlsZXMnXVxufTsiLCJpbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IGdldExheW91dFJlY3QgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRMYXlvdXRSZWN0LmpzXCI7XG5pbXBvcnQgY29udGFpbnMgZnJvbSBcIi4uL2RvbS11dGlscy9jb250YWlucy5qc1wiO1xuaW1wb3J0IGdldE9mZnNldFBhcmVudCBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldE9mZnNldFBhcmVudC5qc1wiO1xuaW1wb3J0IGdldE1haW5BeGlzRnJvbVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgeyB3aXRoaW4gfSBmcm9tIFwiLi4vdXRpbHMvd2l0aGluLmpzXCI7XG5pbXBvcnQgbWVyZ2VQYWRkaW5nT2JqZWN0IGZyb20gXCIuLi91dGlscy9tZXJnZVBhZGRpbmdPYmplY3QuanNcIjtcbmltcG9ydCBleHBhbmRUb0hhc2hNYXAgZnJvbSBcIi4uL3V0aWxzL2V4cGFuZFRvSGFzaE1hcC5qc1wiO1xuaW1wb3J0IHsgbGVmdCwgcmlnaHQsIGJhc2VQbGFjZW1lbnRzLCB0b3AsIGJvdHRvbSB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xuaW1wb3J0IHsgaXNIVE1MRWxlbWVudCB9IGZyb20gXCIuLi9kb20tdXRpbHMvaW5zdGFuY2VPZi5qc1wiOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbnZhciB0b1BhZGRpbmdPYmplY3QgPSBmdW5jdGlvbiB0b1BhZGRpbmdPYmplY3QocGFkZGluZywgc3RhdGUpIHtcbiAgcGFkZGluZyA9IHR5cGVvZiBwYWRkaW5nID09PSAnZnVuY3Rpb24nID8gcGFkZGluZyhPYmplY3QuYXNzaWduKHt9LCBzdGF0ZS5yZWN0cywge1xuICAgIHBsYWNlbWVudDogc3RhdGUucGxhY2VtZW50XG4gIH0pKSA6IHBhZGRpbmc7XG4gIHJldHVybiBtZXJnZVBhZGRpbmdPYmplY3QodHlwZW9mIHBhZGRpbmcgIT09ICdudW1iZXInID8gcGFkZGluZyA6IGV4cGFuZFRvSGFzaE1hcChwYWRkaW5nLCBiYXNlUGxhY2VtZW50cykpO1xufTtcblxuZnVuY3Rpb24gYXJyb3coX3JlZikge1xuICB2YXIgX3N0YXRlJG1vZGlmaWVyc0RhdGEkO1xuXG4gIHZhciBzdGF0ZSA9IF9yZWYuc3RhdGUsXG4gICAgICBuYW1lID0gX3JlZi5uYW1lLFxuICAgICAgb3B0aW9ucyA9IF9yZWYub3B0aW9ucztcbiAgdmFyIGFycm93RWxlbWVudCA9IHN0YXRlLmVsZW1lbnRzLmFycm93O1xuICB2YXIgcG9wcGVyT2Zmc2V0cyA9IHN0YXRlLm1vZGlmaWVyc0RhdGEucG9wcGVyT2Zmc2V0cztcbiAgdmFyIGJhc2VQbGFjZW1lbnQgPSBnZXRCYXNlUGxhY2VtZW50KHN0YXRlLnBsYWNlbWVudCk7XG4gIHZhciBheGlzID0gZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50KGJhc2VQbGFjZW1lbnQpO1xuICB2YXIgaXNWZXJ0aWNhbCA9IFtsZWZ0LCByaWdodF0uaW5kZXhPZihiYXNlUGxhY2VtZW50KSA+PSAwO1xuICB2YXIgbGVuID0gaXNWZXJ0aWNhbCA/ICdoZWlnaHQnIDogJ3dpZHRoJztcblxuICBpZiAoIWFycm93RWxlbWVudCB8fCAhcG9wcGVyT2Zmc2V0cykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHZhciBwYWRkaW5nT2JqZWN0ID0gdG9QYWRkaW5nT2JqZWN0KG9wdGlvbnMucGFkZGluZywgc3RhdGUpO1xuICB2YXIgYXJyb3dSZWN0ID0gZ2V0TGF5b3V0UmVjdChhcnJvd0VsZW1lbnQpO1xuICB2YXIgbWluUHJvcCA9IGF4aXMgPT09ICd5JyA/IHRvcCA6IGxlZnQ7XG4gIHZhciBtYXhQcm9wID0gYXhpcyA9PT0gJ3knID8gYm90dG9tIDogcmlnaHQ7XG4gIHZhciBlbmREaWZmID0gc3RhdGUucmVjdHMucmVmZXJlbmNlW2xlbl0gKyBzdGF0ZS5yZWN0cy5yZWZlcmVuY2VbYXhpc10gLSBwb3BwZXJPZmZzZXRzW2F4aXNdIC0gc3RhdGUucmVjdHMucG9wcGVyW2xlbl07XG4gIHZhciBzdGFydERpZmYgPSBwb3BwZXJPZmZzZXRzW2F4aXNdIC0gc3RhdGUucmVjdHMucmVmZXJlbmNlW2F4aXNdO1xuICB2YXIgYXJyb3dPZmZzZXRQYXJlbnQgPSBnZXRPZmZzZXRQYXJlbnQoYXJyb3dFbGVtZW50KTtcbiAgdmFyIGNsaWVudFNpemUgPSBhcnJvd09mZnNldFBhcmVudCA/IGF4aXMgPT09ICd5JyA/IGFycm93T2Zmc2V0UGFyZW50LmNsaWVudEhlaWdodCB8fCAwIDogYXJyb3dPZmZzZXRQYXJlbnQuY2xpZW50V2lkdGggfHwgMCA6IDA7XG4gIHZhciBjZW50ZXJUb1JlZmVyZW5jZSA9IGVuZERpZmYgLyAyIC0gc3RhcnREaWZmIC8gMjsgLy8gTWFrZSBzdXJlIHRoZSBhcnJvdyBkb2Vzbid0IG92ZXJmbG93IHRoZSBwb3BwZXIgaWYgdGhlIGNlbnRlciBwb2ludCBpc1xuICAvLyBvdXRzaWRlIG9mIHRoZSBwb3BwZXIgYm91bmRzXG5cbiAgdmFyIG1pbiA9IHBhZGRpbmdPYmplY3RbbWluUHJvcF07XG4gIHZhciBtYXggPSBjbGllbnRTaXplIC0gYXJyb3dSZWN0W2xlbl0gLSBwYWRkaW5nT2JqZWN0W21heFByb3BdO1xuICB2YXIgY2VudGVyID0gY2xpZW50U2l6ZSAvIDIgLSBhcnJvd1JlY3RbbGVuXSAvIDIgKyBjZW50ZXJUb1JlZmVyZW5jZTtcbiAgdmFyIG9mZnNldCA9IHdpdGhpbihtaW4sIGNlbnRlciwgbWF4KTsgLy8gUHJldmVudHMgYnJlYWtpbmcgc3ludGF4IGhpZ2hsaWdodGluZy4uLlxuXG4gIHZhciBheGlzUHJvcCA9IGF4aXM7XG4gIHN0YXRlLm1vZGlmaWVyc0RhdGFbbmFtZV0gPSAoX3N0YXRlJG1vZGlmaWVyc0RhdGEkID0ge30sIF9zdGF0ZSRtb2RpZmllcnNEYXRhJFtheGlzUHJvcF0gPSBvZmZzZXQsIF9zdGF0ZSRtb2RpZmllcnNEYXRhJC5jZW50ZXJPZmZzZXQgPSBvZmZzZXQgLSBjZW50ZXIsIF9zdGF0ZSRtb2RpZmllcnNEYXRhJCk7XG59XG5cbmZ1bmN0aW9uIGVmZmVjdChfcmVmMikge1xuICB2YXIgc3RhdGUgPSBfcmVmMi5zdGF0ZSxcbiAgICAgIG9wdGlvbnMgPSBfcmVmMi5vcHRpb25zO1xuICB2YXIgX29wdGlvbnMkZWxlbWVudCA9IG9wdGlvbnMuZWxlbWVudCxcbiAgICAgIGFycm93RWxlbWVudCA9IF9vcHRpb25zJGVsZW1lbnQgPT09IHZvaWQgMCA/ICdbZGF0YS1wb3BwZXItYXJyb3ddJyA6IF9vcHRpb25zJGVsZW1lbnQ7XG5cbiAgaWYgKGFycm93RWxlbWVudCA9PSBudWxsKSB7XG4gICAgcmV0dXJuO1xuICB9IC8vIENTUyBzZWxlY3RvclxuXG5cbiAgaWYgKHR5cGVvZiBhcnJvd0VsZW1lbnQgPT09ICdzdHJpbmcnKSB7XG4gICAgYXJyb3dFbGVtZW50ID0gc3RhdGUuZWxlbWVudHMucG9wcGVyLnF1ZXJ5U2VsZWN0b3IoYXJyb3dFbGVtZW50KTtcblxuICAgIGlmICghYXJyb3dFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgIGlmICghaXNIVE1MRWxlbWVudChhcnJvd0VsZW1lbnQpKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFsnUG9wcGVyOiBcImFycm93XCIgZWxlbWVudCBtdXN0IGJlIGFuIEhUTUxFbGVtZW50IChub3QgYW4gU1ZHRWxlbWVudCkuJywgJ1RvIHVzZSBhbiBTVkcgYXJyb3csIHdyYXAgaXQgaW4gYW4gSFRNTEVsZW1lbnQgdGhhdCB3aWxsIGJlIHVzZWQgYXMnLCAndGhlIGFycm93LiddLmpvaW4oJyAnKSk7XG4gICAgfVxuICB9XG5cbiAgaWYgKCFjb250YWlucyhzdGF0ZS5lbGVtZW50cy5wb3BwZXIsIGFycm93RWxlbWVudCkpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFsnUG9wcGVyOiBcImFycm93XCIgbW9kaWZpZXJcXCdzIGBlbGVtZW50YCBtdXN0IGJlIGEgY2hpbGQgb2YgdGhlIHBvcHBlcicsICdlbGVtZW50LiddLmpvaW4oJyAnKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgc3RhdGUuZWxlbWVudHMuYXJyb3cgPSBhcnJvd0VsZW1lbnQ7XG59IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdhcnJvdycsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnbWFpbicsXG4gIGZuOiBhcnJvdyxcbiAgZWZmZWN0OiBlZmZlY3QsXG4gIHJlcXVpcmVzOiBbJ3BvcHBlck9mZnNldHMnXSxcbiAgcmVxdWlyZXNJZkV4aXN0czogWydwcmV2ZW50T3ZlcmZsb3cnXVxufTsiLCJpbXBvcnQgeyB0b3AsIGxlZnQsIHJpZ2h0LCBib3R0b20sIGVuZCB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xuaW1wb3J0IGdldE9mZnNldFBhcmVudCBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldE9mZnNldFBhcmVudC5qc1wiO1xuaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldFdpbmRvdy5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldERvY3VtZW50RWxlbWVudC5qc1wiO1xuaW1wb3J0IGdldENvbXB1dGVkU3R5bGUgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRDb21wdXRlZFN0eWxlLmpzXCI7XG5pbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IGdldFZhcmlhdGlvbiBmcm9tIFwiLi4vdXRpbHMvZ2V0VmFyaWF0aW9uLmpzXCI7XG5pbXBvcnQgeyByb3VuZCB9IGZyb20gXCIuLi91dGlscy9tYXRoLmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxudmFyIHVuc2V0U2lkZXMgPSB7XG4gIHRvcDogJ2F1dG8nLFxuICByaWdodDogJ2F1dG8nLFxuICBib3R0b206ICdhdXRvJyxcbiAgbGVmdDogJ2F1dG8nXG59OyAvLyBSb3VuZCB0aGUgb2Zmc2V0cyB0byB0aGUgbmVhcmVzdCBzdWl0YWJsZSBzdWJwaXhlbCBiYXNlZCBvbiB0aGUgRFBSLlxuLy8gWm9vbWluZyBjYW4gY2hhbmdlIHRoZSBEUFIsIGJ1dCBpdCBzZWVtcyB0byByZXBvcnQgYSB2YWx1ZSB0aGF0IHdpbGxcbi8vIGNsZWFubHkgZGl2aWRlIHRoZSB2YWx1ZXMgaW50byB0aGUgYXBwcm9wcmlhdGUgc3VicGl4ZWxzLlxuXG5mdW5jdGlvbiByb3VuZE9mZnNldHNCeURQUihfcmVmKSB7XG4gIHZhciB4ID0gX3JlZi54LFxuICAgICAgeSA9IF9yZWYueTtcbiAgdmFyIHdpbiA9IHdpbmRvdztcbiAgdmFyIGRwciA9IHdpbi5kZXZpY2VQaXhlbFJhdGlvIHx8IDE7XG4gIHJldHVybiB7XG4gICAgeDogcm91bmQoeCAqIGRwcikgLyBkcHIgfHwgMCxcbiAgICB5OiByb3VuZCh5ICogZHByKSAvIGRwciB8fCAwXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXBUb1N0eWxlcyhfcmVmMikge1xuICB2YXIgX09iamVjdCRhc3NpZ24yO1xuXG4gIHZhciBwb3BwZXIgPSBfcmVmMi5wb3BwZXIsXG4gICAgICBwb3BwZXJSZWN0ID0gX3JlZjIucG9wcGVyUmVjdCxcbiAgICAgIHBsYWNlbWVudCA9IF9yZWYyLnBsYWNlbWVudCxcbiAgICAgIHZhcmlhdGlvbiA9IF9yZWYyLnZhcmlhdGlvbixcbiAgICAgIG9mZnNldHMgPSBfcmVmMi5vZmZzZXRzLFxuICAgICAgcG9zaXRpb24gPSBfcmVmMi5wb3NpdGlvbixcbiAgICAgIGdwdUFjY2VsZXJhdGlvbiA9IF9yZWYyLmdwdUFjY2VsZXJhdGlvbixcbiAgICAgIGFkYXB0aXZlID0gX3JlZjIuYWRhcHRpdmUsXG4gICAgICByb3VuZE9mZnNldHMgPSBfcmVmMi5yb3VuZE9mZnNldHMsXG4gICAgICBpc0ZpeGVkID0gX3JlZjIuaXNGaXhlZDtcbiAgdmFyIF9vZmZzZXRzJHggPSBvZmZzZXRzLngsXG4gICAgICB4ID0gX29mZnNldHMkeCA9PT0gdm9pZCAwID8gMCA6IF9vZmZzZXRzJHgsXG4gICAgICBfb2Zmc2V0cyR5ID0gb2Zmc2V0cy55LFxuICAgICAgeSA9IF9vZmZzZXRzJHkgPT09IHZvaWQgMCA/IDAgOiBfb2Zmc2V0cyR5O1xuXG4gIHZhciBfcmVmMyA9IHR5cGVvZiByb3VuZE9mZnNldHMgPT09ICdmdW5jdGlvbicgPyByb3VuZE9mZnNldHMoe1xuICAgIHg6IHgsXG4gICAgeTogeVxuICB9KSA6IHtcbiAgICB4OiB4LFxuICAgIHk6IHlcbiAgfTtcblxuICB4ID0gX3JlZjMueDtcbiAgeSA9IF9yZWYzLnk7XG4gIHZhciBoYXNYID0gb2Zmc2V0cy5oYXNPd25Qcm9wZXJ0eSgneCcpO1xuICB2YXIgaGFzWSA9IG9mZnNldHMuaGFzT3duUHJvcGVydHkoJ3knKTtcbiAgdmFyIHNpZGVYID0gbGVmdDtcbiAgdmFyIHNpZGVZID0gdG9wO1xuICB2YXIgd2luID0gd2luZG93O1xuXG4gIGlmIChhZGFwdGl2ZSkge1xuICAgIHZhciBvZmZzZXRQYXJlbnQgPSBnZXRPZmZzZXRQYXJlbnQocG9wcGVyKTtcbiAgICB2YXIgaGVpZ2h0UHJvcCA9ICdjbGllbnRIZWlnaHQnO1xuICAgIHZhciB3aWR0aFByb3AgPSAnY2xpZW50V2lkdGgnO1xuXG4gICAgaWYgKG9mZnNldFBhcmVudCA9PT0gZ2V0V2luZG93KHBvcHBlcikpIHtcbiAgICAgIG9mZnNldFBhcmVudCA9IGdldERvY3VtZW50RWxlbWVudChwb3BwZXIpO1xuXG4gICAgICBpZiAoZ2V0Q29tcHV0ZWRTdHlsZShvZmZzZXRQYXJlbnQpLnBvc2l0aW9uICE9PSAnc3RhdGljJyAmJiBwb3NpdGlvbiA9PT0gJ2Fic29sdXRlJykge1xuICAgICAgICBoZWlnaHRQcm9wID0gJ3Njcm9sbEhlaWdodCc7XG4gICAgICAgIHdpZHRoUHJvcCA9ICdzY3JvbGxXaWR0aCc7XG4gICAgICB9XG4gICAgfSAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS1jYXN0XTogZm9yY2UgdHlwZSByZWZpbmVtZW50LCB3ZSBjb21wYXJlIG9mZnNldFBhcmVudCB3aXRoIHdpbmRvdyBhYm92ZSwgYnV0IEZsb3cgZG9lc24ndCBkZXRlY3QgaXRcblxuXG4gICAgb2Zmc2V0UGFyZW50ID0gb2Zmc2V0UGFyZW50O1xuXG4gICAgaWYgKHBsYWNlbWVudCA9PT0gdG9wIHx8IChwbGFjZW1lbnQgPT09IGxlZnQgfHwgcGxhY2VtZW50ID09PSByaWdodCkgJiYgdmFyaWF0aW9uID09PSBlbmQpIHtcbiAgICAgIHNpZGVZID0gYm90dG9tO1xuICAgICAgdmFyIG9mZnNldFkgPSBpc0ZpeGVkICYmIG9mZnNldFBhcmVudCA9PT0gd2luICYmIHdpbi52aXN1YWxWaWV3cG9ydCA/IHdpbi52aXN1YWxWaWV3cG9ydC5oZWlnaHQgOiAvLyAkRmxvd0ZpeE1lW3Byb3AtbWlzc2luZ11cbiAgICAgIG9mZnNldFBhcmVudFtoZWlnaHRQcm9wXTtcbiAgICAgIHkgLT0gb2Zmc2V0WSAtIHBvcHBlclJlY3QuaGVpZ2h0O1xuICAgICAgeSAqPSBncHVBY2NlbGVyYXRpb24gPyAxIDogLTE7XG4gICAgfVxuXG4gICAgaWYgKHBsYWNlbWVudCA9PT0gbGVmdCB8fCAocGxhY2VtZW50ID09PSB0b3AgfHwgcGxhY2VtZW50ID09PSBib3R0b20pICYmIHZhcmlhdGlvbiA9PT0gZW5kKSB7XG4gICAgICBzaWRlWCA9IHJpZ2h0O1xuICAgICAgdmFyIG9mZnNldFggPSBpc0ZpeGVkICYmIG9mZnNldFBhcmVudCA9PT0gd2luICYmIHdpbi52aXN1YWxWaWV3cG9ydCA/IHdpbi52aXN1YWxWaWV3cG9ydC53aWR0aCA6IC8vICRGbG93Rml4TWVbcHJvcC1taXNzaW5nXVxuICAgICAgb2Zmc2V0UGFyZW50W3dpZHRoUHJvcF07XG4gICAgICB4IC09IG9mZnNldFggLSBwb3BwZXJSZWN0LndpZHRoO1xuICAgICAgeCAqPSBncHVBY2NlbGVyYXRpb24gPyAxIDogLTE7XG4gICAgfVxuICB9XG5cbiAgdmFyIGNvbW1vblN0eWxlcyA9IE9iamVjdC5hc3NpZ24oe1xuICAgIHBvc2l0aW9uOiBwb3NpdGlvblxuICB9LCBhZGFwdGl2ZSAmJiB1bnNldFNpZGVzKTtcblxuICB2YXIgX3JlZjQgPSByb3VuZE9mZnNldHMgPT09IHRydWUgPyByb3VuZE9mZnNldHNCeURQUih7XG4gICAgeDogeCxcbiAgICB5OiB5XG4gIH0pIDoge1xuICAgIHg6IHgsXG4gICAgeTogeVxuICB9O1xuXG4gIHggPSBfcmVmNC54O1xuICB5ID0gX3JlZjQueTtcblxuICBpZiAoZ3B1QWNjZWxlcmF0aW9uKSB7XG4gICAgdmFyIF9PYmplY3QkYXNzaWduO1xuXG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIGNvbW1vblN0eWxlcywgKF9PYmplY3QkYXNzaWduID0ge30sIF9PYmplY3QkYXNzaWduW3NpZGVZXSA9IGhhc1kgPyAnMCcgOiAnJywgX09iamVjdCRhc3NpZ25bc2lkZVhdID0gaGFzWCA/ICcwJyA6ICcnLCBfT2JqZWN0JGFzc2lnbi50cmFuc2Zvcm0gPSAod2luLmRldmljZVBpeGVsUmF0aW8gfHwgMSkgPD0gMSA/IFwidHJhbnNsYXRlKFwiICsgeCArIFwicHgsIFwiICsgeSArIFwicHgpXCIgOiBcInRyYW5zbGF0ZTNkKFwiICsgeCArIFwicHgsIFwiICsgeSArIFwicHgsIDApXCIsIF9PYmplY3QkYXNzaWduKSk7XG4gIH1cblxuICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgY29tbW9uU3R5bGVzLCAoX09iamVjdCRhc3NpZ24yID0ge30sIF9PYmplY3QkYXNzaWduMltzaWRlWV0gPSBoYXNZID8geSArIFwicHhcIiA6ICcnLCBfT2JqZWN0JGFzc2lnbjJbc2lkZVhdID0gaGFzWCA/IHggKyBcInB4XCIgOiAnJywgX09iamVjdCRhc3NpZ24yLnRyYW5zZm9ybSA9ICcnLCBfT2JqZWN0JGFzc2lnbjIpKTtcbn1cblxuZnVuY3Rpb24gY29tcHV0ZVN0eWxlcyhfcmVmNSkge1xuICB2YXIgc3RhdGUgPSBfcmVmNS5zdGF0ZSxcbiAgICAgIG9wdGlvbnMgPSBfcmVmNS5vcHRpb25zO1xuICB2YXIgX29wdGlvbnMkZ3B1QWNjZWxlcmF0ID0gb3B0aW9ucy5ncHVBY2NlbGVyYXRpb24sXG4gICAgICBncHVBY2NlbGVyYXRpb24gPSBfb3B0aW9ucyRncHVBY2NlbGVyYXQgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRncHVBY2NlbGVyYXQsXG4gICAgICBfb3B0aW9ucyRhZGFwdGl2ZSA9IG9wdGlvbnMuYWRhcHRpdmUsXG4gICAgICBhZGFwdGl2ZSA9IF9vcHRpb25zJGFkYXB0aXZlID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkYWRhcHRpdmUsXG4gICAgICBfb3B0aW9ucyRyb3VuZE9mZnNldHMgPSBvcHRpb25zLnJvdW5kT2Zmc2V0cyxcbiAgICAgIHJvdW5kT2Zmc2V0cyA9IF9vcHRpb25zJHJvdW5kT2Zmc2V0cyA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJHJvdW5kT2Zmc2V0cztcblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgdmFyIHRyYW5zaXRpb25Qcm9wZXJ0eSA9IGdldENvbXB1dGVkU3R5bGUoc3RhdGUuZWxlbWVudHMucG9wcGVyKS50cmFuc2l0aW9uUHJvcGVydHkgfHwgJyc7XG5cbiAgICBpZiAoYWRhcHRpdmUgJiYgWyd0cmFuc2Zvcm0nLCAndG9wJywgJ3JpZ2h0JywgJ2JvdHRvbScsICdsZWZ0J10uc29tZShmdW5jdGlvbiAocHJvcGVydHkpIHtcbiAgICAgIHJldHVybiB0cmFuc2l0aW9uUHJvcGVydHkuaW5kZXhPZihwcm9wZXJ0eSkgPj0gMDtcbiAgICB9KSkge1xuICAgICAgY29uc29sZS53YXJuKFsnUG9wcGVyOiBEZXRlY3RlZCBDU1MgdHJhbnNpdGlvbnMgb24gYXQgbGVhc3Qgb25lIG9mIHRoZSBmb2xsb3dpbmcnLCAnQ1NTIHByb3BlcnRpZXM6IFwidHJhbnNmb3JtXCIsIFwidG9wXCIsIFwicmlnaHRcIiwgXCJib3R0b21cIiwgXCJsZWZ0XCIuJywgJ1xcblxcbicsICdEaXNhYmxlIHRoZSBcImNvbXB1dGVTdHlsZXNcIiBtb2RpZmllclxcJ3MgYGFkYXB0aXZlYCBvcHRpb24gdG8gYWxsb3cnLCAnZm9yIHNtb290aCB0cmFuc2l0aW9ucywgb3IgcmVtb3ZlIHRoZXNlIHByb3BlcnRpZXMgZnJvbSB0aGUgQ1NTJywgJ3RyYW5zaXRpb24gZGVjbGFyYXRpb24gb24gdGhlIHBvcHBlciBlbGVtZW50IGlmIG9ubHkgdHJhbnNpdGlvbmluZycsICdvcGFjaXR5IG9yIGJhY2tncm91bmQtY29sb3IgZm9yIGV4YW1wbGUuJywgJ1xcblxcbicsICdXZSByZWNvbW1lbmQgdXNpbmcgdGhlIHBvcHBlciBlbGVtZW50IGFzIGEgd3JhcHBlciBhcm91bmQgYW4gaW5uZXInLCAnZWxlbWVudCB0aGF0IGNhbiBoYXZlIGFueSBDU1MgcHJvcGVydHkgdHJhbnNpdGlvbmVkIGZvciBhbmltYXRpb25zLiddLmpvaW4oJyAnKSk7XG4gICAgfVxuICB9XG5cbiAgdmFyIGNvbW1vblN0eWxlcyA9IHtcbiAgICBwbGFjZW1lbnQ6IGdldEJhc2VQbGFjZW1lbnQoc3RhdGUucGxhY2VtZW50KSxcbiAgICB2YXJpYXRpb246IGdldFZhcmlhdGlvbihzdGF0ZS5wbGFjZW1lbnQpLFxuICAgIHBvcHBlcjogc3RhdGUuZWxlbWVudHMucG9wcGVyLFxuICAgIHBvcHBlclJlY3Q6IHN0YXRlLnJlY3RzLnBvcHBlcixcbiAgICBncHVBY2NlbGVyYXRpb246IGdwdUFjY2VsZXJhdGlvbixcbiAgICBpc0ZpeGVkOiBzdGF0ZS5vcHRpb25zLnN0cmF0ZWd5ID09PSAnZml4ZWQnXG4gIH07XG5cbiAgaWYgKHN0YXRlLm1vZGlmaWVyc0RhdGEucG9wcGVyT2Zmc2V0cyAhPSBudWxsKSB7XG4gICAgc3RhdGUuc3R5bGVzLnBvcHBlciA9IE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLnN0eWxlcy5wb3BwZXIsIG1hcFRvU3R5bGVzKE9iamVjdC5hc3NpZ24oe30sIGNvbW1vblN0eWxlcywge1xuICAgICAgb2Zmc2V0czogc3RhdGUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzLFxuICAgICAgcG9zaXRpb246IHN0YXRlLm9wdGlvbnMuc3RyYXRlZ3ksXG4gICAgICBhZGFwdGl2ZTogYWRhcHRpdmUsXG4gICAgICByb3VuZE9mZnNldHM6IHJvdW5kT2Zmc2V0c1xuICAgIH0pKSk7XG4gIH1cblxuICBpZiAoc3RhdGUubW9kaWZpZXJzRGF0YS5hcnJvdyAhPSBudWxsKSB7XG4gICAgc3RhdGUuc3R5bGVzLmFycm93ID0gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUuc3R5bGVzLmFycm93LCBtYXBUb1N0eWxlcyhPYmplY3QuYXNzaWduKHt9LCBjb21tb25TdHlsZXMsIHtcbiAgICAgIG9mZnNldHM6IHN0YXRlLm1vZGlmaWVyc0RhdGEuYXJyb3csXG4gICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgIGFkYXB0aXZlOiBmYWxzZSxcbiAgICAgIHJvdW5kT2Zmc2V0czogcm91bmRPZmZzZXRzXG4gICAgfSkpKTtcbiAgfVxuXG4gIHN0YXRlLmF0dHJpYnV0ZXMucG9wcGVyID0gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUuYXR0cmlidXRlcy5wb3BwZXIsIHtcbiAgICAnZGF0YS1wb3BwZXItcGxhY2VtZW50Jzogc3RhdGUucGxhY2VtZW50XG4gIH0pO1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnY29tcHV0ZVN0eWxlcycsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnYmVmb3JlV3JpdGUnLFxuICBmbjogY29tcHV0ZVN0eWxlcyxcbiAgZGF0YToge31cbn07IiwiaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldFdpbmRvdy5qc1wiOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbnZhciBwYXNzaXZlID0ge1xuICBwYXNzaXZlOiB0cnVlXG59O1xuXG5mdW5jdGlvbiBlZmZlY3QoX3JlZikge1xuICB2YXIgc3RhdGUgPSBfcmVmLnN0YXRlLFxuICAgICAgaW5zdGFuY2UgPSBfcmVmLmluc3RhbmNlLFxuICAgICAgb3B0aW9ucyA9IF9yZWYub3B0aW9ucztcbiAgdmFyIF9vcHRpb25zJHNjcm9sbCA9IG9wdGlvbnMuc2Nyb2xsLFxuICAgICAgc2Nyb2xsID0gX29wdGlvbnMkc2Nyb2xsID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkc2Nyb2xsLFxuICAgICAgX29wdGlvbnMkcmVzaXplID0gb3B0aW9ucy5yZXNpemUsXG4gICAgICByZXNpemUgPSBfb3B0aW9ucyRyZXNpemUgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRyZXNpemU7XG4gIHZhciB3aW5kb3cgPSBnZXRXaW5kb3coc3RhdGUuZWxlbWVudHMucG9wcGVyKTtcbiAgdmFyIHNjcm9sbFBhcmVudHMgPSBbXS5jb25jYXQoc3RhdGUuc2Nyb2xsUGFyZW50cy5yZWZlcmVuY2UsIHN0YXRlLnNjcm9sbFBhcmVudHMucG9wcGVyKTtcblxuICBpZiAoc2Nyb2xsKSB7XG4gICAgc2Nyb2xsUGFyZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChzY3JvbGxQYXJlbnQpIHtcbiAgICAgIHNjcm9sbFBhcmVudC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBpbnN0YW5jZS51cGRhdGUsIHBhc3NpdmUpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKHJlc2l6ZSkge1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBpbnN0YW5jZS51cGRhdGUsIHBhc3NpdmUpO1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoc2Nyb2xsKSB7XG4gICAgICBzY3JvbGxQYXJlbnRzLmZvckVhY2goZnVuY3Rpb24gKHNjcm9sbFBhcmVudCkge1xuICAgICAgICBzY3JvbGxQYXJlbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaW5zdGFuY2UudXBkYXRlLCBwYXNzaXZlKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChyZXNpemUpIHtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBpbnN0YW5jZS51cGRhdGUsIHBhc3NpdmUpO1xuICAgIH1cbiAgfTtcbn0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ2V2ZW50TGlzdGVuZXJzJyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICd3cml0ZScsXG4gIGZuOiBmdW5jdGlvbiBmbigpIHt9LFxuICBlZmZlY3Q6IGVmZmVjdCxcbiAgZGF0YToge31cbn07IiwiaW1wb3J0IGdldE9wcG9zaXRlUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRPcHBvc2l0ZVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IGdldEJhc2VQbGFjZW1lbnQgZnJvbSBcIi4uL3V0aWxzL2dldEJhc2VQbGFjZW1lbnQuanNcIjtcbmltcG9ydCBnZXRPcHBvc2l0ZVZhcmlhdGlvblBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0T3Bwb3NpdGVWYXJpYXRpb25QbGFjZW1lbnQuanNcIjtcbmltcG9ydCBkZXRlY3RPdmVyZmxvdyBmcm9tIFwiLi4vdXRpbHMvZGV0ZWN0T3ZlcmZsb3cuanNcIjtcbmltcG9ydCBjb21wdXRlQXV0b1BsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvY29tcHV0ZUF1dG9QbGFjZW1lbnQuanNcIjtcbmltcG9ydCB7IGJvdHRvbSwgdG9wLCBzdGFydCwgcmlnaHQsIGxlZnQsIGF1dG8gfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCBnZXRWYXJpYXRpb24gZnJvbSBcIi4uL3V0aWxzL2dldFZhcmlhdGlvbi5qc1wiOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbmZ1bmN0aW9uIGdldEV4cGFuZGVkRmFsbGJhY2tQbGFjZW1lbnRzKHBsYWNlbWVudCkge1xuICBpZiAoZ2V0QmFzZVBsYWNlbWVudChwbGFjZW1lbnQpID09PSBhdXRvKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgdmFyIG9wcG9zaXRlUGxhY2VtZW50ID0gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQocGxhY2VtZW50KTtcbiAgcmV0dXJuIFtnZXRPcHBvc2l0ZVZhcmlhdGlvblBsYWNlbWVudChwbGFjZW1lbnQpLCBvcHBvc2l0ZVBsYWNlbWVudCwgZ2V0T3Bwb3NpdGVWYXJpYXRpb25QbGFjZW1lbnQob3Bwb3NpdGVQbGFjZW1lbnQpXTtcbn1cblxuZnVuY3Rpb24gZmxpcChfcmVmKSB7XG4gIHZhciBzdGF0ZSA9IF9yZWYuc3RhdGUsXG4gICAgICBvcHRpb25zID0gX3JlZi5vcHRpb25zLFxuICAgICAgbmFtZSA9IF9yZWYubmFtZTtcblxuICBpZiAoc3RhdGUubW9kaWZpZXJzRGF0YVtuYW1lXS5fc2tpcCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHZhciBfb3B0aW9ucyRtYWluQXhpcyA9IG9wdGlvbnMubWFpbkF4aXMsXG4gICAgICBjaGVja01haW5BeGlzID0gX29wdGlvbnMkbWFpbkF4aXMgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRtYWluQXhpcyxcbiAgICAgIF9vcHRpb25zJGFsdEF4aXMgPSBvcHRpb25zLmFsdEF4aXMsXG4gICAgICBjaGVja0FsdEF4aXMgPSBfb3B0aW9ucyRhbHRBeGlzID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkYWx0QXhpcyxcbiAgICAgIHNwZWNpZmllZEZhbGxiYWNrUGxhY2VtZW50cyA9IG9wdGlvbnMuZmFsbGJhY2tQbGFjZW1lbnRzLFxuICAgICAgcGFkZGluZyA9IG9wdGlvbnMucGFkZGluZyxcbiAgICAgIGJvdW5kYXJ5ID0gb3B0aW9ucy5ib3VuZGFyeSxcbiAgICAgIHJvb3RCb3VuZGFyeSA9IG9wdGlvbnMucm9vdEJvdW5kYXJ5LFxuICAgICAgYWx0Qm91bmRhcnkgPSBvcHRpb25zLmFsdEJvdW5kYXJ5LFxuICAgICAgX29wdGlvbnMkZmxpcFZhcmlhdGlvID0gb3B0aW9ucy5mbGlwVmFyaWF0aW9ucyxcbiAgICAgIGZsaXBWYXJpYXRpb25zID0gX29wdGlvbnMkZmxpcFZhcmlhdGlvID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkZmxpcFZhcmlhdGlvLFxuICAgICAgYWxsb3dlZEF1dG9QbGFjZW1lbnRzID0gb3B0aW9ucy5hbGxvd2VkQXV0b1BsYWNlbWVudHM7XG4gIHZhciBwcmVmZXJyZWRQbGFjZW1lbnQgPSBzdGF0ZS5vcHRpb25zLnBsYWNlbWVudDtcbiAgdmFyIGJhc2VQbGFjZW1lbnQgPSBnZXRCYXNlUGxhY2VtZW50KHByZWZlcnJlZFBsYWNlbWVudCk7XG4gIHZhciBpc0Jhc2VQbGFjZW1lbnQgPSBiYXNlUGxhY2VtZW50ID09PSBwcmVmZXJyZWRQbGFjZW1lbnQ7XG4gIHZhciBmYWxsYmFja1BsYWNlbWVudHMgPSBzcGVjaWZpZWRGYWxsYmFja1BsYWNlbWVudHMgfHwgKGlzQmFzZVBsYWNlbWVudCB8fCAhZmxpcFZhcmlhdGlvbnMgPyBbZ2V0T3Bwb3NpdGVQbGFjZW1lbnQocHJlZmVycmVkUGxhY2VtZW50KV0gOiBnZXRFeHBhbmRlZEZhbGxiYWNrUGxhY2VtZW50cyhwcmVmZXJyZWRQbGFjZW1lbnQpKTtcbiAgdmFyIHBsYWNlbWVudHMgPSBbcHJlZmVycmVkUGxhY2VtZW50XS5jb25jYXQoZmFsbGJhY2tQbGFjZW1lbnRzKS5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgcGxhY2VtZW50KSB7XG4gICAgcmV0dXJuIGFjYy5jb25jYXQoZ2V0QmFzZVBsYWNlbWVudChwbGFjZW1lbnQpID09PSBhdXRvID8gY29tcHV0ZUF1dG9QbGFjZW1lbnQoc3RhdGUsIHtcbiAgICAgIHBsYWNlbWVudDogcGxhY2VtZW50LFxuICAgICAgYm91bmRhcnk6IGJvdW5kYXJ5LFxuICAgICAgcm9vdEJvdW5kYXJ5OiByb290Qm91bmRhcnksXG4gICAgICBwYWRkaW5nOiBwYWRkaW5nLFxuICAgICAgZmxpcFZhcmlhdGlvbnM6IGZsaXBWYXJpYXRpb25zLFxuICAgICAgYWxsb3dlZEF1dG9QbGFjZW1lbnRzOiBhbGxvd2VkQXV0b1BsYWNlbWVudHNcbiAgICB9KSA6IHBsYWNlbWVudCk7XG4gIH0sIFtdKTtcbiAgdmFyIHJlZmVyZW5jZVJlY3QgPSBzdGF0ZS5yZWN0cy5yZWZlcmVuY2U7XG4gIHZhciBwb3BwZXJSZWN0ID0gc3RhdGUucmVjdHMucG9wcGVyO1xuICB2YXIgY2hlY2tzTWFwID0gbmV3IE1hcCgpO1xuICB2YXIgbWFrZUZhbGxiYWNrQ2hlY2tzID0gdHJ1ZTtcbiAgdmFyIGZpcnN0Rml0dGluZ1BsYWNlbWVudCA9IHBsYWNlbWVudHNbMF07XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwbGFjZW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHBsYWNlbWVudCA9IHBsYWNlbWVudHNbaV07XG5cbiAgICB2YXIgX2Jhc2VQbGFjZW1lbnQgPSBnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCk7XG5cbiAgICB2YXIgaXNTdGFydFZhcmlhdGlvbiA9IGdldFZhcmlhdGlvbihwbGFjZW1lbnQpID09PSBzdGFydDtcbiAgICB2YXIgaXNWZXJ0aWNhbCA9IFt0b3AsIGJvdHRvbV0uaW5kZXhPZihfYmFzZVBsYWNlbWVudCkgPj0gMDtcbiAgICB2YXIgbGVuID0gaXNWZXJ0aWNhbCA/ICd3aWR0aCcgOiAnaGVpZ2h0JztcbiAgICB2YXIgb3ZlcmZsb3cgPSBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwge1xuICAgICAgcGxhY2VtZW50OiBwbGFjZW1lbnQsXG4gICAgICBib3VuZGFyeTogYm91bmRhcnksXG4gICAgICByb290Qm91bmRhcnk6IHJvb3RCb3VuZGFyeSxcbiAgICAgIGFsdEJvdW5kYXJ5OiBhbHRCb3VuZGFyeSxcbiAgICAgIHBhZGRpbmc6IHBhZGRpbmdcbiAgICB9KTtcbiAgICB2YXIgbWFpblZhcmlhdGlvblNpZGUgPSBpc1ZlcnRpY2FsID8gaXNTdGFydFZhcmlhdGlvbiA/IHJpZ2h0IDogbGVmdCA6IGlzU3RhcnRWYXJpYXRpb24gPyBib3R0b20gOiB0b3A7XG5cbiAgICBpZiAocmVmZXJlbmNlUmVjdFtsZW5dID4gcG9wcGVyUmVjdFtsZW5dKSB7XG4gICAgICBtYWluVmFyaWF0aW9uU2lkZSA9IGdldE9wcG9zaXRlUGxhY2VtZW50KG1haW5WYXJpYXRpb25TaWRlKTtcbiAgICB9XG5cbiAgICB2YXIgYWx0VmFyaWF0aW9uU2lkZSA9IGdldE9wcG9zaXRlUGxhY2VtZW50KG1haW5WYXJpYXRpb25TaWRlKTtcbiAgICB2YXIgY2hlY2tzID0gW107XG5cbiAgICBpZiAoY2hlY2tNYWluQXhpcykge1xuICAgICAgY2hlY2tzLnB1c2gob3ZlcmZsb3dbX2Jhc2VQbGFjZW1lbnRdIDw9IDApO1xuICAgIH1cblxuICAgIGlmIChjaGVja0FsdEF4aXMpIHtcbiAgICAgIGNoZWNrcy5wdXNoKG92ZXJmbG93W21haW5WYXJpYXRpb25TaWRlXSA8PSAwLCBvdmVyZmxvd1thbHRWYXJpYXRpb25TaWRlXSA8PSAwKTtcbiAgICB9XG5cbiAgICBpZiAoY2hlY2tzLmV2ZXJ5KGZ1bmN0aW9uIChjaGVjaykge1xuICAgICAgcmV0dXJuIGNoZWNrO1xuICAgIH0pKSB7XG4gICAgICBmaXJzdEZpdHRpbmdQbGFjZW1lbnQgPSBwbGFjZW1lbnQ7XG4gICAgICBtYWtlRmFsbGJhY2tDaGVja3MgPSBmYWxzZTtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGNoZWNrc01hcC5zZXQocGxhY2VtZW50LCBjaGVja3MpO1xuICB9XG5cbiAgaWYgKG1ha2VGYWxsYmFja0NoZWNrcykge1xuICAgIC8vIGAyYCBtYXkgYmUgZGVzaXJlZCBpbiBzb21lIGNhc2VzIOKAkyByZXNlYXJjaCBsYXRlclxuICAgIHZhciBudW1iZXJPZkNoZWNrcyA9IGZsaXBWYXJpYXRpb25zID8gMyA6IDE7XG5cbiAgICB2YXIgX2xvb3AgPSBmdW5jdGlvbiBfbG9vcChfaSkge1xuICAgICAgdmFyIGZpdHRpbmdQbGFjZW1lbnQgPSBwbGFjZW1lbnRzLmZpbmQoZnVuY3Rpb24gKHBsYWNlbWVudCkge1xuICAgICAgICB2YXIgY2hlY2tzID0gY2hlY2tzTWFwLmdldChwbGFjZW1lbnQpO1xuXG4gICAgICAgIGlmIChjaGVja3MpIHtcbiAgICAgICAgICByZXR1cm4gY2hlY2tzLnNsaWNlKDAsIF9pKS5ldmVyeShmdW5jdGlvbiAoY2hlY2spIHtcbiAgICAgICAgICAgIHJldHVybiBjaGVjaztcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGlmIChmaXR0aW5nUGxhY2VtZW50KSB7XG4gICAgICAgIGZpcnN0Rml0dGluZ1BsYWNlbWVudCA9IGZpdHRpbmdQbGFjZW1lbnQ7XG4gICAgICAgIHJldHVybiBcImJyZWFrXCI7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGZvciAodmFyIF9pID0gbnVtYmVyT2ZDaGVja3M7IF9pID4gMDsgX2ktLSkge1xuICAgICAgdmFyIF9yZXQgPSBfbG9vcChfaSk7XG5cbiAgICAgIGlmIChfcmV0ID09PSBcImJyZWFrXCIpIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzdGF0ZS5wbGFjZW1lbnQgIT09IGZpcnN0Rml0dGluZ1BsYWNlbWVudCkge1xuICAgIHN0YXRlLm1vZGlmaWVyc0RhdGFbbmFtZV0uX3NraXAgPSB0cnVlO1xuICAgIHN0YXRlLnBsYWNlbWVudCA9IGZpcnN0Rml0dGluZ1BsYWNlbWVudDtcbiAgICBzdGF0ZS5yZXNldCA9IHRydWU7XG4gIH1cbn0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ2ZsaXAnLFxuICBlbmFibGVkOiB0cnVlLFxuICBwaGFzZTogJ21haW4nLFxuICBmbjogZmxpcCxcbiAgcmVxdWlyZXNJZkV4aXN0czogWydvZmZzZXQnXSxcbiAgZGF0YToge1xuICAgIF9za2lwOiBmYWxzZVxuICB9XG59OyIsImltcG9ydCB7IHRvcCwgYm90dG9tLCBsZWZ0LCByaWdodCB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xuaW1wb3J0IGRldGVjdE92ZXJmbG93IGZyb20gXCIuLi91dGlscy9kZXRlY3RPdmVyZmxvdy5qc1wiO1xuXG5mdW5jdGlvbiBnZXRTaWRlT2Zmc2V0cyhvdmVyZmxvdywgcmVjdCwgcHJldmVudGVkT2Zmc2V0cykge1xuICBpZiAocHJldmVudGVkT2Zmc2V0cyA9PT0gdm9pZCAwKSB7XG4gICAgcHJldmVudGVkT2Zmc2V0cyA9IHtcbiAgICAgIHg6IDAsXG4gICAgICB5OiAwXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgdG9wOiBvdmVyZmxvdy50b3AgLSByZWN0LmhlaWdodCAtIHByZXZlbnRlZE9mZnNldHMueSxcbiAgICByaWdodDogb3ZlcmZsb3cucmlnaHQgLSByZWN0LndpZHRoICsgcHJldmVudGVkT2Zmc2V0cy54LFxuICAgIGJvdHRvbTogb3ZlcmZsb3cuYm90dG9tIC0gcmVjdC5oZWlnaHQgKyBwcmV2ZW50ZWRPZmZzZXRzLnksXG4gICAgbGVmdDogb3ZlcmZsb3cubGVmdCAtIHJlY3Qud2lkdGggLSBwcmV2ZW50ZWRPZmZzZXRzLnhcbiAgfTtcbn1cblxuZnVuY3Rpb24gaXNBbnlTaWRlRnVsbHlDbGlwcGVkKG92ZXJmbG93KSB7XG4gIHJldHVybiBbdG9wLCByaWdodCwgYm90dG9tLCBsZWZ0XS5zb21lKGZ1bmN0aW9uIChzaWRlKSB7XG4gICAgcmV0dXJuIG92ZXJmbG93W3NpZGVdID49IDA7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBoaWRlKF9yZWYpIHtcbiAgdmFyIHN0YXRlID0gX3JlZi5zdGF0ZSxcbiAgICAgIG5hbWUgPSBfcmVmLm5hbWU7XG4gIHZhciByZWZlcmVuY2VSZWN0ID0gc3RhdGUucmVjdHMucmVmZXJlbmNlO1xuICB2YXIgcG9wcGVyUmVjdCA9IHN0YXRlLnJlY3RzLnBvcHBlcjtcbiAgdmFyIHByZXZlbnRlZE9mZnNldHMgPSBzdGF0ZS5tb2RpZmllcnNEYXRhLnByZXZlbnRPdmVyZmxvdztcbiAgdmFyIHJlZmVyZW5jZU92ZXJmbG93ID0gZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIHtcbiAgICBlbGVtZW50Q29udGV4dDogJ3JlZmVyZW5jZSdcbiAgfSk7XG4gIHZhciBwb3BwZXJBbHRPdmVyZmxvdyA9IGRldGVjdE92ZXJmbG93KHN0YXRlLCB7XG4gICAgYWx0Qm91bmRhcnk6IHRydWVcbiAgfSk7XG4gIHZhciByZWZlcmVuY2VDbGlwcGluZ09mZnNldHMgPSBnZXRTaWRlT2Zmc2V0cyhyZWZlcmVuY2VPdmVyZmxvdywgcmVmZXJlbmNlUmVjdCk7XG4gIHZhciBwb3BwZXJFc2NhcGVPZmZzZXRzID0gZ2V0U2lkZU9mZnNldHMocG9wcGVyQWx0T3ZlcmZsb3csIHBvcHBlclJlY3QsIHByZXZlbnRlZE9mZnNldHMpO1xuICB2YXIgaXNSZWZlcmVuY2VIaWRkZW4gPSBpc0FueVNpZGVGdWxseUNsaXBwZWQocmVmZXJlbmNlQ2xpcHBpbmdPZmZzZXRzKTtcbiAgdmFyIGhhc1BvcHBlckVzY2FwZWQgPSBpc0FueVNpZGVGdWxseUNsaXBwZWQocG9wcGVyRXNjYXBlT2Zmc2V0cyk7XG4gIHN0YXRlLm1vZGlmaWVyc0RhdGFbbmFtZV0gPSB7XG4gICAgcmVmZXJlbmNlQ2xpcHBpbmdPZmZzZXRzOiByZWZlcmVuY2VDbGlwcGluZ09mZnNldHMsXG4gICAgcG9wcGVyRXNjYXBlT2Zmc2V0czogcG9wcGVyRXNjYXBlT2Zmc2V0cyxcbiAgICBpc1JlZmVyZW5jZUhpZGRlbjogaXNSZWZlcmVuY2VIaWRkZW4sXG4gICAgaGFzUG9wcGVyRXNjYXBlZDogaGFzUG9wcGVyRXNjYXBlZFxuICB9O1xuICBzdGF0ZS5hdHRyaWJ1dGVzLnBvcHBlciA9IE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLmF0dHJpYnV0ZXMucG9wcGVyLCB7XG4gICAgJ2RhdGEtcG9wcGVyLXJlZmVyZW5jZS1oaWRkZW4nOiBpc1JlZmVyZW5jZUhpZGRlbixcbiAgICAnZGF0YS1wb3BwZXItZXNjYXBlZCc6IGhhc1BvcHBlckVzY2FwZWRcbiAgfSk7XG59IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdoaWRlJyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICdtYWluJyxcbiAgcmVxdWlyZXNJZkV4aXN0czogWydwcmV2ZW50T3ZlcmZsb3cnXSxcbiAgZm46IGhpZGVcbn07IiwiZXhwb3J0IHsgZGVmYXVsdCBhcyBhcHBseVN0eWxlcyB9IGZyb20gXCIuL2FwcGx5U3R5bGVzLmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGFycm93IH0gZnJvbSBcIi4vYXJyb3cuanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgY29tcHV0ZVN0eWxlcyB9IGZyb20gXCIuL2NvbXB1dGVTdHlsZXMuanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZXZlbnRMaXN0ZW5lcnMgfSBmcm9tIFwiLi9ldmVudExpc3RlbmVycy5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBmbGlwIH0gZnJvbSBcIi4vZmxpcC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBoaWRlIH0gZnJvbSBcIi4vaGlkZS5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBvZmZzZXQgfSBmcm9tIFwiLi9vZmZzZXQuanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgcG9wcGVyT2Zmc2V0cyB9IGZyb20gXCIuL3BvcHBlck9mZnNldHMuanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgcHJldmVudE92ZXJmbG93IH0gZnJvbSBcIi4vcHJldmVudE92ZXJmbG93LmpzXCI7IiwiaW1wb3J0IGdldEJhc2VQbGFjZW1lbnQgZnJvbSBcIi4uL3V0aWxzL2dldEJhc2VQbGFjZW1lbnQuanNcIjtcbmltcG9ydCB7IHRvcCwgbGVmdCwgcmlnaHQsIHBsYWNlbWVudHMgfSBmcm9tIFwiLi4vZW51bXMuanNcIjsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5leHBvcnQgZnVuY3Rpb24gZGlzdGFuY2VBbmRTa2lkZGluZ1RvWFkocGxhY2VtZW50LCByZWN0cywgb2Zmc2V0KSB7XG4gIHZhciBiYXNlUGxhY2VtZW50ID0gZ2V0QmFzZVBsYWNlbWVudChwbGFjZW1lbnQpO1xuICB2YXIgaW52ZXJ0RGlzdGFuY2UgPSBbbGVmdCwgdG9wXS5pbmRleE9mKGJhc2VQbGFjZW1lbnQpID49IDAgPyAtMSA6IDE7XG5cbiAgdmFyIF9yZWYgPSB0eXBlb2Ygb2Zmc2V0ID09PSAnZnVuY3Rpb24nID8gb2Zmc2V0KE9iamVjdC5hc3NpZ24oe30sIHJlY3RzLCB7XG4gICAgcGxhY2VtZW50OiBwbGFjZW1lbnRcbiAgfSkpIDogb2Zmc2V0LFxuICAgICAgc2tpZGRpbmcgPSBfcmVmWzBdLFxuICAgICAgZGlzdGFuY2UgPSBfcmVmWzFdO1xuXG4gIHNraWRkaW5nID0gc2tpZGRpbmcgfHwgMDtcbiAgZGlzdGFuY2UgPSAoZGlzdGFuY2UgfHwgMCkgKiBpbnZlcnREaXN0YW5jZTtcbiAgcmV0dXJuIFtsZWZ0LCByaWdodF0uaW5kZXhPZihiYXNlUGxhY2VtZW50KSA+PSAwID8ge1xuICAgIHg6IGRpc3RhbmNlLFxuICAgIHk6IHNraWRkaW5nXG4gIH0gOiB7XG4gICAgeDogc2tpZGRpbmcsXG4gICAgeTogZGlzdGFuY2VcbiAgfTtcbn1cblxuZnVuY3Rpb24gb2Zmc2V0KF9yZWYyKSB7XG4gIHZhciBzdGF0ZSA9IF9yZWYyLnN0YXRlLFxuICAgICAgb3B0aW9ucyA9IF9yZWYyLm9wdGlvbnMsXG4gICAgICBuYW1lID0gX3JlZjIubmFtZTtcbiAgdmFyIF9vcHRpb25zJG9mZnNldCA9IG9wdGlvbnMub2Zmc2V0LFxuICAgICAgb2Zmc2V0ID0gX29wdGlvbnMkb2Zmc2V0ID09PSB2b2lkIDAgPyBbMCwgMF0gOiBfb3B0aW9ucyRvZmZzZXQ7XG4gIHZhciBkYXRhID0gcGxhY2VtZW50cy5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgcGxhY2VtZW50KSB7XG4gICAgYWNjW3BsYWNlbWVudF0gPSBkaXN0YW5jZUFuZFNraWRkaW5nVG9YWShwbGFjZW1lbnQsIHN0YXRlLnJlY3RzLCBvZmZzZXQpO1xuICAgIHJldHVybiBhY2M7XG4gIH0sIHt9KTtcbiAgdmFyIF9kYXRhJHN0YXRlJHBsYWNlbWVudCA9IGRhdGFbc3RhdGUucGxhY2VtZW50XSxcbiAgICAgIHggPSBfZGF0YSRzdGF0ZSRwbGFjZW1lbnQueCxcbiAgICAgIHkgPSBfZGF0YSRzdGF0ZSRwbGFjZW1lbnQueTtcblxuICBpZiAoc3RhdGUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzICE9IG51bGwpIHtcbiAgICBzdGF0ZS5tb2RpZmllcnNEYXRhLnBvcHBlck9mZnNldHMueCArPSB4O1xuICAgIHN0YXRlLm1vZGlmaWVyc0RhdGEucG9wcGVyT2Zmc2V0cy55ICs9IHk7XG4gIH1cblxuICBzdGF0ZS5tb2RpZmllcnNEYXRhW25hbWVdID0gZGF0YTtcbn0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ29mZnNldCcsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnbWFpbicsXG4gIHJlcXVpcmVzOiBbJ3BvcHBlck9mZnNldHMnXSxcbiAgZm46IG9mZnNldFxufTsiLCJpbXBvcnQgY29tcHV0ZU9mZnNldHMgZnJvbSBcIi4uL3V0aWxzL2NvbXB1dGVPZmZzZXRzLmpzXCI7XG5cbmZ1bmN0aW9uIHBvcHBlck9mZnNldHMoX3JlZikge1xuICB2YXIgc3RhdGUgPSBfcmVmLnN0YXRlLFxuICAgICAgbmFtZSA9IF9yZWYubmFtZTtcbiAgLy8gT2Zmc2V0cyBhcmUgdGhlIGFjdHVhbCBwb3NpdGlvbiB0aGUgcG9wcGVyIG5lZWRzIHRvIGhhdmUgdG8gYmVcbiAgLy8gcHJvcGVybHkgcG9zaXRpb25lZCBuZWFyIGl0cyByZWZlcmVuY2UgZWxlbWVudFxuICAvLyBUaGlzIGlzIHRoZSBtb3N0IGJhc2ljIHBsYWNlbWVudCwgYW5kIHdpbGwgYmUgYWRqdXN0ZWQgYnlcbiAgLy8gdGhlIG1vZGlmaWVycyBpbiB0aGUgbmV4dCBzdGVwXG4gIHN0YXRlLm1vZGlmaWVyc0RhdGFbbmFtZV0gPSBjb21wdXRlT2Zmc2V0cyh7XG4gICAgcmVmZXJlbmNlOiBzdGF0ZS5yZWN0cy5yZWZlcmVuY2UsXG4gICAgZWxlbWVudDogc3RhdGUucmVjdHMucG9wcGVyLFxuICAgIHN0cmF0ZWd5OiAnYWJzb2x1dGUnLFxuICAgIHBsYWNlbWVudDogc3RhdGUucGxhY2VtZW50XG4gIH0pO1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAncG9wcGVyT2Zmc2V0cycsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAncmVhZCcsXG4gIGZuOiBwb3BwZXJPZmZzZXRzLFxuICBkYXRhOiB7fVxufTsiLCJpbXBvcnQgeyB0b3AsIGxlZnQsIHJpZ2h0LCBib3R0b20sIHN0YXJ0IH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5pbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IGdldE1haW5BeGlzRnJvbVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgZ2V0QWx0QXhpcyBmcm9tIFwiLi4vdXRpbHMvZ2V0QWx0QXhpcy5qc1wiO1xuaW1wb3J0IHsgd2l0aGluLCB3aXRoaW5NYXhDbGFtcCB9IGZyb20gXCIuLi91dGlscy93aXRoaW4uanNcIjtcbmltcG9ydCBnZXRMYXlvdXRSZWN0IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0TGF5b3V0UmVjdC5qc1wiO1xuaW1wb3J0IGdldE9mZnNldFBhcmVudCBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldE9mZnNldFBhcmVudC5qc1wiO1xuaW1wb3J0IGRldGVjdE92ZXJmbG93IGZyb20gXCIuLi91dGlscy9kZXRlY3RPdmVyZmxvdy5qc1wiO1xuaW1wb3J0IGdldFZhcmlhdGlvbiBmcm9tIFwiLi4vdXRpbHMvZ2V0VmFyaWF0aW9uLmpzXCI7XG5pbXBvcnQgZ2V0RnJlc2hTaWRlT2JqZWN0IGZyb20gXCIuLi91dGlscy9nZXRGcmVzaFNpZGVPYmplY3QuanNcIjtcbmltcG9ydCB7IG1pbiBhcyBtYXRoTWluLCBtYXggYXMgbWF0aE1heCB9IGZyb20gXCIuLi91dGlscy9tYXRoLmpzXCI7XG5cbmZ1bmN0aW9uIHByZXZlbnRPdmVyZmxvdyhfcmVmKSB7XG4gIHZhciBzdGF0ZSA9IF9yZWYuc3RhdGUsXG4gICAgICBvcHRpb25zID0gX3JlZi5vcHRpb25zLFxuICAgICAgbmFtZSA9IF9yZWYubmFtZTtcbiAgdmFyIF9vcHRpb25zJG1haW5BeGlzID0gb3B0aW9ucy5tYWluQXhpcyxcbiAgICAgIGNoZWNrTWFpbkF4aXMgPSBfb3B0aW9ucyRtYWluQXhpcyA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJG1haW5BeGlzLFxuICAgICAgX29wdGlvbnMkYWx0QXhpcyA9IG9wdGlvbnMuYWx0QXhpcyxcbiAgICAgIGNoZWNrQWx0QXhpcyA9IF9vcHRpb25zJGFsdEF4aXMgPT09IHZvaWQgMCA/IGZhbHNlIDogX29wdGlvbnMkYWx0QXhpcyxcbiAgICAgIGJvdW5kYXJ5ID0gb3B0aW9ucy5ib3VuZGFyeSxcbiAgICAgIHJvb3RCb3VuZGFyeSA9IG9wdGlvbnMucm9vdEJvdW5kYXJ5LFxuICAgICAgYWx0Qm91bmRhcnkgPSBvcHRpb25zLmFsdEJvdW5kYXJ5LFxuICAgICAgcGFkZGluZyA9IG9wdGlvbnMucGFkZGluZyxcbiAgICAgIF9vcHRpb25zJHRldGhlciA9IG9wdGlvbnMudGV0aGVyLFxuICAgICAgdGV0aGVyID0gX29wdGlvbnMkdGV0aGVyID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkdGV0aGVyLFxuICAgICAgX29wdGlvbnMkdGV0aGVyT2Zmc2V0ID0gb3B0aW9ucy50ZXRoZXJPZmZzZXQsXG4gICAgICB0ZXRoZXJPZmZzZXQgPSBfb3B0aW9ucyR0ZXRoZXJPZmZzZXQgPT09IHZvaWQgMCA/IDAgOiBfb3B0aW9ucyR0ZXRoZXJPZmZzZXQ7XG4gIHZhciBvdmVyZmxvdyA9IGRldGVjdE92ZXJmbG93KHN0YXRlLCB7XG4gICAgYm91bmRhcnk6IGJvdW5kYXJ5LFxuICAgIHJvb3RCb3VuZGFyeTogcm9vdEJvdW5kYXJ5LFxuICAgIHBhZGRpbmc6IHBhZGRpbmcsXG4gICAgYWx0Qm91bmRhcnk6IGFsdEJvdW5kYXJ5XG4gIH0pO1xuICB2YXIgYmFzZVBsYWNlbWVudCA9IGdldEJhc2VQbGFjZW1lbnQoc3RhdGUucGxhY2VtZW50KTtcbiAgdmFyIHZhcmlhdGlvbiA9IGdldFZhcmlhdGlvbihzdGF0ZS5wbGFjZW1lbnQpO1xuICB2YXIgaXNCYXNlUGxhY2VtZW50ID0gIXZhcmlhdGlvbjtcbiAgdmFyIG1haW5BeGlzID0gZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50KGJhc2VQbGFjZW1lbnQpO1xuICB2YXIgYWx0QXhpcyA9IGdldEFsdEF4aXMobWFpbkF4aXMpO1xuICB2YXIgcG9wcGVyT2Zmc2V0cyA9IHN0YXRlLm1vZGlmaWVyc0RhdGEucG9wcGVyT2Zmc2V0cztcbiAgdmFyIHJlZmVyZW5jZVJlY3QgPSBzdGF0ZS5yZWN0cy5yZWZlcmVuY2U7XG4gIHZhciBwb3BwZXJSZWN0ID0gc3RhdGUucmVjdHMucG9wcGVyO1xuICB2YXIgdGV0aGVyT2Zmc2V0VmFsdWUgPSB0eXBlb2YgdGV0aGVyT2Zmc2V0ID09PSAnZnVuY3Rpb24nID8gdGV0aGVyT2Zmc2V0KE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLnJlY3RzLCB7XG4gICAgcGxhY2VtZW50OiBzdGF0ZS5wbGFjZW1lbnRcbiAgfSkpIDogdGV0aGVyT2Zmc2V0O1xuICB2YXIgbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlID0gdHlwZW9mIHRldGhlck9mZnNldFZhbHVlID09PSAnbnVtYmVyJyA/IHtcbiAgICBtYWluQXhpczogdGV0aGVyT2Zmc2V0VmFsdWUsXG4gICAgYWx0QXhpczogdGV0aGVyT2Zmc2V0VmFsdWVcbiAgfSA6IE9iamVjdC5hc3NpZ24oe1xuICAgIG1haW5BeGlzOiAwLFxuICAgIGFsdEF4aXM6IDBcbiAgfSwgdGV0aGVyT2Zmc2V0VmFsdWUpO1xuICB2YXIgb2Zmc2V0TW9kaWZpZXJTdGF0ZSA9IHN0YXRlLm1vZGlmaWVyc0RhdGEub2Zmc2V0ID8gc3RhdGUubW9kaWZpZXJzRGF0YS5vZmZzZXRbc3RhdGUucGxhY2VtZW50XSA6IG51bGw7XG4gIHZhciBkYXRhID0ge1xuICAgIHg6IDAsXG4gICAgeTogMFxuICB9O1xuXG4gIGlmICghcG9wcGVyT2Zmc2V0cykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChjaGVja01haW5BeGlzKSB7XG4gICAgdmFyIF9vZmZzZXRNb2RpZmllclN0YXRlJDtcblxuICAgIHZhciBtYWluU2lkZSA9IG1haW5BeGlzID09PSAneScgPyB0b3AgOiBsZWZ0O1xuICAgIHZhciBhbHRTaWRlID0gbWFpbkF4aXMgPT09ICd5JyA/IGJvdHRvbSA6IHJpZ2h0O1xuICAgIHZhciBsZW4gPSBtYWluQXhpcyA9PT0gJ3knID8gJ2hlaWdodCcgOiAnd2lkdGgnO1xuICAgIHZhciBvZmZzZXQgPSBwb3BwZXJPZmZzZXRzW21haW5BeGlzXTtcbiAgICB2YXIgbWluID0gb2Zmc2V0ICsgb3ZlcmZsb3dbbWFpblNpZGVdO1xuICAgIHZhciBtYXggPSBvZmZzZXQgLSBvdmVyZmxvd1thbHRTaWRlXTtcbiAgICB2YXIgYWRkaXRpdmUgPSB0ZXRoZXIgPyAtcG9wcGVyUmVjdFtsZW5dIC8gMiA6IDA7XG4gICAgdmFyIG1pbkxlbiA9IHZhcmlhdGlvbiA9PT0gc3RhcnQgPyByZWZlcmVuY2VSZWN0W2xlbl0gOiBwb3BwZXJSZWN0W2xlbl07XG4gICAgdmFyIG1heExlbiA9IHZhcmlhdGlvbiA9PT0gc3RhcnQgPyAtcG9wcGVyUmVjdFtsZW5dIDogLXJlZmVyZW5jZVJlY3RbbGVuXTsgLy8gV2UgbmVlZCB0byBpbmNsdWRlIHRoZSBhcnJvdyBpbiB0aGUgY2FsY3VsYXRpb24gc28gdGhlIGFycm93IGRvZXNuJ3QgZ29cbiAgICAvLyBvdXRzaWRlIHRoZSByZWZlcmVuY2UgYm91bmRzXG5cbiAgICB2YXIgYXJyb3dFbGVtZW50ID0gc3RhdGUuZWxlbWVudHMuYXJyb3c7XG4gICAgdmFyIGFycm93UmVjdCA9IHRldGhlciAmJiBhcnJvd0VsZW1lbnQgPyBnZXRMYXlvdXRSZWN0KGFycm93RWxlbWVudCkgOiB7XG4gICAgICB3aWR0aDogMCxcbiAgICAgIGhlaWdodDogMFxuICAgIH07XG4gICAgdmFyIGFycm93UGFkZGluZ09iamVjdCA9IHN0YXRlLm1vZGlmaWVyc0RhdGFbJ2Fycm93I3BlcnNpc3RlbnQnXSA/IHN0YXRlLm1vZGlmaWVyc0RhdGFbJ2Fycm93I3BlcnNpc3RlbnQnXS5wYWRkaW5nIDogZ2V0RnJlc2hTaWRlT2JqZWN0KCk7XG4gICAgdmFyIGFycm93UGFkZGluZ01pbiA9IGFycm93UGFkZGluZ09iamVjdFttYWluU2lkZV07XG4gICAgdmFyIGFycm93UGFkZGluZ01heCA9IGFycm93UGFkZGluZ09iamVjdFthbHRTaWRlXTsgLy8gSWYgdGhlIHJlZmVyZW5jZSBsZW5ndGggaXMgc21hbGxlciB0aGFuIHRoZSBhcnJvdyBsZW5ndGgsIHdlIGRvbid0IHdhbnRcbiAgICAvLyB0byBpbmNsdWRlIGl0cyBmdWxsIHNpemUgaW4gdGhlIGNhbGN1bGF0aW9uLiBJZiB0aGUgcmVmZXJlbmNlIGlzIHNtYWxsXG4gICAgLy8gYW5kIG5lYXIgdGhlIGVkZ2Ugb2YgYSBib3VuZGFyeSwgdGhlIHBvcHBlciBjYW4gb3ZlcmZsb3cgZXZlbiBpZiB0aGVcbiAgICAvLyByZWZlcmVuY2UgaXMgbm90IG92ZXJmbG93aW5nIGFzIHdlbGwgKGUuZy4gdmlydHVhbCBlbGVtZW50cyB3aXRoIG5vXG4gICAgLy8gd2lkdGggb3IgaGVpZ2h0KVxuXG4gICAgdmFyIGFycm93TGVuID0gd2l0aGluKDAsIHJlZmVyZW5jZVJlY3RbbGVuXSwgYXJyb3dSZWN0W2xlbl0pO1xuICAgIHZhciBtaW5PZmZzZXQgPSBpc0Jhc2VQbGFjZW1lbnQgPyByZWZlcmVuY2VSZWN0W2xlbl0gLyAyIC0gYWRkaXRpdmUgLSBhcnJvd0xlbiAtIGFycm93UGFkZGluZ01pbiAtIG5vcm1hbGl6ZWRUZXRoZXJPZmZzZXRWYWx1ZS5tYWluQXhpcyA6IG1pbkxlbiAtIGFycm93TGVuIC0gYXJyb3dQYWRkaW5nTWluIC0gbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlLm1haW5BeGlzO1xuICAgIHZhciBtYXhPZmZzZXQgPSBpc0Jhc2VQbGFjZW1lbnQgPyAtcmVmZXJlbmNlUmVjdFtsZW5dIC8gMiArIGFkZGl0aXZlICsgYXJyb3dMZW4gKyBhcnJvd1BhZGRpbmdNYXggKyBub3JtYWxpemVkVGV0aGVyT2Zmc2V0VmFsdWUubWFpbkF4aXMgOiBtYXhMZW4gKyBhcnJvd0xlbiArIGFycm93UGFkZGluZ01heCArIG5vcm1hbGl6ZWRUZXRoZXJPZmZzZXRWYWx1ZS5tYWluQXhpcztcbiAgICB2YXIgYXJyb3dPZmZzZXRQYXJlbnQgPSBzdGF0ZS5lbGVtZW50cy5hcnJvdyAmJiBnZXRPZmZzZXRQYXJlbnQoc3RhdGUuZWxlbWVudHMuYXJyb3cpO1xuICAgIHZhciBjbGllbnRPZmZzZXQgPSBhcnJvd09mZnNldFBhcmVudCA/IG1haW5BeGlzID09PSAneScgPyBhcnJvd09mZnNldFBhcmVudC5jbGllbnRUb3AgfHwgMCA6IGFycm93T2Zmc2V0UGFyZW50LmNsaWVudExlZnQgfHwgMCA6IDA7XG4gICAgdmFyIG9mZnNldE1vZGlmaWVyVmFsdWUgPSAoX29mZnNldE1vZGlmaWVyU3RhdGUkID0gb2Zmc2V0TW9kaWZpZXJTdGF0ZSA9PSBudWxsID8gdm9pZCAwIDogb2Zmc2V0TW9kaWZpZXJTdGF0ZVttYWluQXhpc10pICE9IG51bGwgPyBfb2Zmc2V0TW9kaWZpZXJTdGF0ZSQgOiAwO1xuICAgIHZhciB0ZXRoZXJNaW4gPSBvZmZzZXQgKyBtaW5PZmZzZXQgLSBvZmZzZXRNb2RpZmllclZhbHVlIC0gY2xpZW50T2Zmc2V0O1xuICAgIHZhciB0ZXRoZXJNYXggPSBvZmZzZXQgKyBtYXhPZmZzZXQgLSBvZmZzZXRNb2RpZmllclZhbHVlO1xuICAgIHZhciBwcmV2ZW50ZWRPZmZzZXQgPSB3aXRoaW4odGV0aGVyID8gbWF0aE1pbihtaW4sIHRldGhlck1pbikgOiBtaW4sIG9mZnNldCwgdGV0aGVyID8gbWF0aE1heChtYXgsIHRldGhlck1heCkgOiBtYXgpO1xuICAgIHBvcHBlck9mZnNldHNbbWFpbkF4aXNdID0gcHJldmVudGVkT2Zmc2V0O1xuICAgIGRhdGFbbWFpbkF4aXNdID0gcHJldmVudGVkT2Zmc2V0IC0gb2Zmc2V0O1xuICB9XG5cbiAgaWYgKGNoZWNrQWx0QXhpcykge1xuICAgIHZhciBfb2Zmc2V0TW9kaWZpZXJTdGF0ZSQyO1xuXG4gICAgdmFyIF9tYWluU2lkZSA9IG1haW5BeGlzID09PSAneCcgPyB0b3AgOiBsZWZ0O1xuXG4gICAgdmFyIF9hbHRTaWRlID0gbWFpbkF4aXMgPT09ICd4JyA/IGJvdHRvbSA6IHJpZ2h0O1xuXG4gICAgdmFyIF9vZmZzZXQgPSBwb3BwZXJPZmZzZXRzW2FsdEF4aXNdO1xuXG4gICAgdmFyIF9sZW4gPSBhbHRBeGlzID09PSAneScgPyAnaGVpZ2h0JyA6ICd3aWR0aCc7XG5cbiAgICB2YXIgX21pbiA9IF9vZmZzZXQgKyBvdmVyZmxvd1tfbWFpblNpZGVdO1xuXG4gICAgdmFyIF9tYXggPSBfb2Zmc2V0IC0gb3ZlcmZsb3dbX2FsdFNpZGVdO1xuXG4gICAgdmFyIGlzT3JpZ2luU2lkZSA9IFt0b3AsIGxlZnRdLmluZGV4T2YoYmFzZVBsYWNlbWVudCkgIT09IC0xO1xuXG4gICAgdmFyIF9vZmZzZXRNb2RpZmllclZhbHVlID0gKF9vZmZzZXRNb2RpZmllclN0YXRlJDIgPSBvZmZzZXRNb2RpZmllclN0YXRlID09IG51bGwgPyB2b2lkIDAgOiBvZmZzZXRNb2RpZmllclN0YXRlW2FsdEF4aXNdKSAhPSBudWxsID8gX29mZnNldE1vZGlmaWVyU3RhdGUkMiA6IDA7XG5cbiAgICB2YXIgX3RldGhlck1pbiA9IGlzT3JpZ2luU2lkZSA/IF9taW4gOiBfb2Zmc2V0IC0gcmVmZXJlbmNlUmVjdFtfbGVuXSAtIHBvcHBlclJlY3RbX2xlbl0gLSBfb2Zmc2V0TW9kaWZpZXJWYWx1ZSArIG5vcm1hbGl6ZWRUZXRoZXJPZmZzZXRWYWx1ZS5hbHRBeGlzO1xuXG4gICAgdmFyIF90ZXRoZXJNYXggPSBpc09yaWdpblNpZGUgPyBfb2Zmc2V0ICsgcmVmZXJlbmNlUmVjdFtfbGVuXSArIHBvcHBlclJlY3RbX2xlbl0gLSBfb2Zmc2V0TW9kaWZpZXJWYWx1ZSAtIG5vcm1hbGl6ZWRUZXRoZXJPZmZzZXRWYWx1ZS5hbHRBeGlzIDogX21heDtcblxuICAgIHZhciBfcHJldmVudGVkT2Zmc2V0ID0gdGV0aGVyICYmIGlzT3JpZ2luU2lkZSA/IHdpdGhpbk1heENsYW1wKF90ZXRoZXJNaW4sIF9vZmZzZXQsIF90ZXRoZXJNYXgpIDogd2l0aGluKHRldGhlciA/IF90ZXRoZXJNaW4gOiBfbWluLCBfb2Zmc2V0LCB0ZXRoZXIgPyBfdGV0aGVyTWF4IDogX21heCk7XG5cbiAgICBwb3BwZXJPZmZzZXRzW2FsdEF4aXNdID0gX3ByZXZlbnRlZE9mZnNldDtcbiAgICBkYXRhW2FsdEF4aXNdID0gX3ByZXZlbnRlZE9mZnNldCAtIF9vZmZzZXQ7XG4gIH1cblxuICBzdGF0ZS5tb2RpZmllcnNEYXRhW25hbWVdID0gZGF0YTtcbn0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ3ByZXZlbnRPdmVyZmxvdycsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnbWFpbicsXG4gIGZuOiBwcmV2ZW50T3ZlcmZsb3csXG4gIHJlcXVpcmVzSWZFeGlzdHM6IFsnb2Zmc2V0J11cbn07IiwiaW1wb3J0IHsgcG9wcGVyR2VuZXJhdG9yLCBkZXRlY3RPdmVyZmxvdyB9IGZyb20gXCIuL2NyZWF0ZVBvcHBlci5qc1wiO1xuaW1wb3J0IGV2ZW50TGlzdGVuZXJzIGZyb20gXCIuL21vZGlmaWVycy9ldmVudExpc3RlbmVycy5qc1wiO1xuaW1wb3J0IHBvcHBlck9mZnNldHMgZnJvbSBcIi4vbW9kaWZpZXJzL3BvcHBlck9mZnNldHMuanNcIjtcbmltcG9ydCBjb21wdXRlU3R5bGVzIGZyb20gXCIuL21vZGlmaWVycy9jb21wdXRlU3R5bGVzLmpzXCI7XG5pbXBvcnQgYXBwbHlTdHlsZXMgZnJvbSBcIi4vbW9kaWZpZXJzL2FwcGx5U3R5bGVzLmpzXCI7XG52YXIgZGVmYXVsdE1vZGlmaWVycyA9IFtldmVudExpc3RlbmVycywgcG9wcGVyT2Zmc2V0cywgY29tcHV0ZVN0eWxlcywgYXBwbHlTdHlsZXNdO1xudmFyIGNyZWF0ZVBvcHBlciA9IC8qI19fUFVSRV9fKi9wb3BwZXJHZW5lcmF0b3Ioe1xuICBkZWZhdWx0TW9kaWZpZXJzOiBkZWZhdWx0TW9kaWZpZXJzXG59KTsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5leHBvcnQgeyBjcmVhdGVQb3BwZXIsIHBvcHBlckdlbmVyYXRvciwgZGVmYXVsdE1vZGlmaWVycywgZGV0ZWN0T3ZlcmZsb3cgfTsiLCJpbXBvcnQgeyBwb3BwZXJHZW5lcmF0b3IsIGRldGVjdE92ZXJmbG93IH0gZnJvbSBcIi4vY3JlYXRlUG9wcGVyLmpzXCI7XG5pbXBvcnQgZXZlbnRMaXN0ZW5lcnMgZnJvbSBcIi4vbW9kaWZpZXJzL2V2ZW50TGlzdGVuZXJzLmpzXCI7XG5pbXBvcnQgcG9wcGVyT2Zmc2V0cyBmcm9tIFwiLi9tb2RpZmllcnMvcG9wcGVyT2Zmc2V0cy5qc1wiO1xuaW1wb3J0IGNvbXB1dGVTdHlsZXMgZnJvbSBcIi4vbW9kaWZpZXJzL2NvbXB1dGVTdHlsZXMuanNcIjtcbmltcG9ydCBhcHBseVN0eWxlcyBmcm9tIFwiLi9tb2RpZmllcnMvYXBwbHlTdHlsZXMuanNcIjtcbmltcG9ydCBvZmZzZXQgZnJvbSBcIi4vbW9kaWZpZXJzL29mZnNldC5qc1wiO1xuaW1wb3J0IGZsaXAgZnJvbSBcIi4vbW9kaWZpZXJzL2ZsaXAuanNcIjtcbmltcG9ydCBwcmV2ZW50T3ZlcmZsb3cgZnJvbSBcIi4vbW9kaWZpZXJzL3ByZXZlbnRPdmVyZmxvdy5qc1wiO1xuaW1wb3J0IGFycm93IGZyb20gXCIuL21vZGlmaWVycy9hcnJvdy5qc1wiO1xuaW1wb3J0IGhpZGUgZnJvbSBcIi4vbW9kaWZpZXJzL2hpZGUuanNcIjtcbnZhciBkZWZhdWx0TW9kaWZpZXJzID0gW2V2ZW50TGlzdGVuZXJzLCBwb3BwZXJPZmZzZXRzLCBjb21wdXRlU3R5bGVzLCBhcHBseVN0eWxlcywgb2Zmc2V0LCBmbGlwLCBwcmV2ZW50T3ZlcmZsb3csIGFycm93LCBoaWRlXTtcbnZhciBjcmVhdGVQb3BwZXIgPSAvKiNfX1BVUkVfXyovcG9wcGVyR2VuZXJhdG9yKHtcbiAgZGVmYXVsdE1vZGlmaWVyczogZGVmYXVsdE1vZGlmaWVyc1xufSk7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZXhwb3J0IHsgY3JlYXRlUG9wcGVyLCBwb3BwZXJHZW5lcmF0b3IsIGRlZmF1bHRNb2RpZmllcnMsIGRldGVjdE92ZXJmbG93IH07IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZXhwb3J0IHsgY3JlYXRlUG9wcGVyIGFzIGNyZWF0ZVBvcHBlckxpdGUgfSBmcm9tIFwiLi9wb3BwZXItbGl0ZS5qc1wiOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbmV4cG9ydCAqIGZyb20gXCIuL21vZGlmaWVycy9pbmRleC5qc1wiOyIsImltcG9ydCBnZXRWYXJpYXRpb24gZnJvbSBcIi4vZ2V0VmFyaWF0aW9uLmpzXCI7XG5pbXBvcnQgeyB2YXJpYXRpb25QbGFjZW1lbnRzLCBiYXNlUGxhY2VtZW50cywgcGxhY2VtZW50cyBhcyBhbGxQbGFjZW1lbnRzIH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5pbXBvcnQgZGV0ZWN0T3ZlcmZsb3cgZnJvbSBcIi4vZGV0ZWN0T3ZlcmZsb3cuanNcIjtcbmltcG9ydCBnZXRCYXNlUGxhY2VtZW50IGZyb20gXCIuL2dldEJhc2VQbGFjZW1lbnQuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNvbXB1dGVBdXRvUGxhY2VtZW50KHN0YXRlLCBvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cblxuICB2YXIgX29wdGlvbnMgPSBvcHRpb25zLFxuICAgICAgcGxhY2VtZW50ID0gX29wdGlvbnMucGxhY2VtZW50LFxuICAgICAgYm91bmRhcnkgPSBfb3B0aW9ucy5ib3VuZGFyeSxcbiAgICAgIHJvb3RCb3VuZGFyeSA9IF9vcHRpb25zLnJvb3RCb3VuZGFyeSxcbiAgICAgIHBhZGRpbmcgPSBfb3B0aW9ucy5wYWRkaW5nLFxuICAgICAgZmxpcFZhcmlhdGlvbnMgPSBfb3B0aW9ucy5mbGlwVmFyaWF0aW9ucyxcbiAgICAgIF9vcHRpb25zJGFsbG93ZWRBdXRvUCA9IF9vcHRpb25zLmFsbG93ZWRBdXRvUGxhY2VtZW50cyxcbiAgICAgIGFsbG93ZWRBdXRvUGxhY2VtZW50cyA9IF9vcHRpb25zJGFsbG93ZWRBdXRvUCA9PT0gdm9pZCAwID8gYWxsUGxhY2VtZW50cyA6IF9vcHRpb25zJGFsbG93ZWRBdXRvUDtcbiAgdmFyIHZhcmlhdGlvbiA9IGdldFZhcmlhdGlvbihwbGFjZW1lbnQpO1xuICB2YXIgcGxhY2VtZW50cyA9IHZhcmlhdGlvbiA/IGZsaXBWYXJpYXRpb25zID8gdmFyaWF0aW9uUGxhY2VtZW50cyA6IHZhcmlhdGlvblBsYWNlbWVudHMuZmlsdGVyKGZ1bmN0aW9uIChwbGFjZW1lbnQpIHtcbiAgICByZXR1cm4gZ2V0VmFyaWF0aW9uKHBsYWNlbWVudCkgPT09IHZhcmlhdGlvbjtcbiAgfSkgOiBiYXNlUGxhY2VtZW50cztcbiAgdmFyIGFsbG93ZWRQbGFjZW1lbnRzID0gcGxhY2VtZW50cy5maWx0ZXIoZnVuY3Rpb24gKHBsYWNlbWVudCkge1xuICAgIHJldHVybiBhbGxvd2VkQXV0b1BsYWNlbWVudHMuaW5kZXhPZihwbGFjZW1lbnQpID49IDA7XG4gIH0pO1xuXG4gIGlmIChhbGxvd2VkUGxhY2VtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICBhbGxvd2VkUGxhY2VtZW50cyA9IHBsYWNlbWVudHM7XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFsnUG9wcGVyOiBUaGUgYGFsbG93ZWRBdXRvUGxhY2VtZW50c2Agb3B0aW9uIGRpZCBub3QgYWxsb3cgYW55JywgJ3BsYWNlbWVudHMuIEVuc3VyZSB0aGUgYHBsYWNlbWVudGAgb3B0aW9uIG1hdGNoZXMgdGhlIHZhcmlhdGlvbicsICdvZiB0aGUgYWxsb3dlZCBwbGFjZW1lbnRzLicsICdGb3IgZXhhbXBsZSwgXCJhdXRvXCIgY2Fubm90IGJlIHVzZWQgdG8gYWxsb3cgXCJib3R0b20tc3RhcnRcIi4nLCAnVXNlIFwiYXV0by1zdGFydFwiIGluc3RlYWQuJ10uam9pbignICcpKTtcbiAgICB9XG4gIH0gLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtdHlwZV06IEZsb3cgc2VlbXMgdG8gaGF2ZSBwcm9ibGVtcyB3aXRoIHR3byBhcnJheSB1bmlvbnMuLi5cblxuXG4gIHZhciBvdmVyZmxvd3MgPSBhbGxvd2VkUGxhY2VtZW50cy5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgcGxhY2VtZW50KSB7XG4gICAgYWNjW3BsYWNlbWVudF0gPSBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwge1xuICAgICAgcGxhY2VtZW50OiBwbGFjZW1lbnQsXG4gICAgICBib3VuZGFyeTogYm91bmRhcnksXG4gICAgICByb290Qm91bmRhcnk6IHJvb3RCb3VuZGFyeSxcbiAgICAgIHBhZGRpbmc6IHBhZGRpbmdcbiAgICB9KVtnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCldO1xuICAgIHJldHVybiBhY2M7XG4gIH0sIHt9KTtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKG92ZXJmbG93cykuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgIHJldHVybiBvdmVyZmxvd3NbYV0gLSBvdmVyZmxvd3NbYl07XG4gIH0pO1xufSIsImltcG9ydCBnZXRCYXNlUGxhY2VtZW50IGZyb20gXCIuL2dldEJhc2VQbGFjZW1lbnQuanNcIjtcbmltcG9ydCBnZXRWYXJpYXRpb24gZnJvbSBcIi4vZ2V0VmFyaWF0aW9uLmpzXCI7XG5pbXBvcnQgZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50IGZyb20gXCIuL2dldE1haW5BeGlzRnJvbVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IHsgdG9wLCByaWdodCwgYm90dG9tLCBsZWZ0LCBzdGFydCwgZW5kIH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjb21wdXRlT2Zmc2V0cyhfcmVmKSB7XG4gIHZhciByZWZlcmVuY2UgPSBfcmVmLnJlZmVyZW5jZSxcbiAgICAgIGVsZW1lbnQgPSBfcmVmLmVsZW1lbnQsXG4gICAgICBwbGFjZW1lbnQgPSBfcmVmLnBsYWNlbWVudDtcbiAgdmFyIGJhc2VQbGFjZW1lbnQgPSBwbGFjZW1lbnQgPyBnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCkgOiBudWxsO1xuICB2YXIgdmFyaWF0aW9uID0gcGxhY2VtZW50ID8gZ2V0VmFyaWF0aW9uKHBsYWNlbWVudCkgOiBudWxsO1xuICB2YXIgY29tbW9uWCA9IHJlZmVyZW5jZS54ICsgcmVmZXJlbmNlLndpZHRoIC8gMiAtIGVsZW1lbnQud2lkdGggLyAyO1xuICB2YXIgY29tbW9uWSA9IHJlZmVyZW5jZS55ICsgcmVmZXJlbmNlLmhlaWdodCAvIDIgLSBlbGVtZW50LmhlaWdodCAvIDI7XG4gIHZhciBvZmZzZXRzO1xuXG4gIHN3aXRjaCAoYmFzZVBsYWNlbWVudCkge1xuICAgIGNhc2UgdG9wOlxuICAgICAgb2Zmc2V0cyA9IHtcbiAgICAgICAgeDogY29tbW9uWCxcbiAgICAgICAgeTogcmVmZXJlbmNlLnkgLSBlbGVtZW50LmhlaWdodFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBib3R0b206XG4gICAgICBvZmZzZXRzID0ge1xuICAgICAgICB4OiBjb21tb25YLFxuICAgICAgICB5OiByZWZlcmVuY2UueSArIHJlZmVyZW5jZS5oZWlnaHRcbiAgICAgIH07XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgcmlnaHQ6XG4gICAgICBvZmZzZXRzID0ge1xuICAgICAgICB4OiByZWZlcmVuY2UueCArIHJlZmVyZW5jZS53aWR0aCxcbiAgICAgICAgeTogY29tbW9uWVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBsZWZ0OlxuICAgICAgb2Zmc2V0cyA9IHtcbiAgICAgICAgeDogcmVmZXJlbmNlLnggLSBlbGVtZW50LndpZHRoLFxuICAgICAgICB5OiBjb21tb25ZXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG5cbiAgICBkZWZhdWx0OlxuICAgICAgb2Zmc2V0cyA9IHtcbiAgICAgICAgeDogcmVmZXJlbmNlLngsXG4gICAgICAgIHk6IHJlZmVyZW5jZS55XG4gICAgICB9O1xuICB9XG5cbiAgdmFyIG1haW5BeGlzID0gYmFzZVBsYWNlbWVudCA/IGdldE1haW5BeGlzRnJvbVBsYWNlbWVudChiYXNlUGxhY2VtZW50KSA6IG51bGw7XG5cbiAgaWYgKG1haW5BeGlzICE9IG51bGwpIHtcbiAgICB2YXIgbGVuID0gbWFpbkF4aXMgPT09ICd5JyA/ICdoZWlnaHQnIDogJ3dpZHRoJztcblxuICAgIHN3aXRjaCAodmFyaWF0aW9uKSB7XG4gICAgICBjYXNlIHN0YXJ0OlxuICAgICAgICBvZmZzZXRzW21haW5BeGlzXSA9IG9mZnNldHNbbWFpbkF4aXNdIC0gKHJlZmVyZW5jZVtsZW5dIC8gMiAtIGVsZW1lbnRbbGVuXSAvIDIpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBlbmQ6XG4gICAgICAgIG9mZnNldHNbbWFpbkF4aXNdID0gb2Zmc2V0c1ttYWluQXhpc10gKyAocmVmZXJlbmNlW2xlbl0gLyAyIC0gZWxlbWVudFtsZW5dIC8gMik7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvZmZzZXRzO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRlYm91bmNlKGZuKSB7XG4gIHZhciBwZW5kaW5nO1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIGlmICghcGVuZGluZykge1xuICAgICAgcGVuZGluZyA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG4gICAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHBlbmRpbmcgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgcmVzb2x2ZShmbigpKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGVuZGluZztcbiAgfTtcbn0iLCJpbXBvcnQgZ2V0Q2xpcHBpbmdSZWN0IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0Q2xpcHBpbmdSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0RG9jdW1lbnRFbGVtZW50IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0RG9jdW1lbnRFbGVtZW50LmpzXCI7XG5pbXBvcnQgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0Qm91bmRpbmdDbGllbnRSZWN0LmpzXCI7XG5pbXBvcnQgY29tcHV0ZU9mZnNldHMgZnJvbSBcIi4vY29tcHV0ZU9mZnNldHMuanNcIjtcbmltcG9ydCByZWN0VG9DbGllbnRSZWN0IGZyb20gXCIuL3JlY3RUb0NsaWVudFJlY3QuanNcIjtcbmltcG9ydCB7IGNsaXBwaW5nUGFyZW50cywgcmVmZXJlbmNlLCBwb3BwZXIsIGJvdHRvbSwgdG9wLCByaWdodCwgYmFzZVBsYWNlbWVudHMsIHZpZXdwb3J0IH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5pbXBvcnQgeyBpc0VsZW1lbnQgfSBmcm9tIFwiLi4vZG9tLXV0aWxzL2luc3RhbmNlT2YuanNcIjtcbmltcG9ydCBtZXJnZVBhZGRpbmdPYmplY3QgZnJvbSBcIi4vbWVyZ2VQYWRkaW5nT2JqZWN0LmpzXCI7XG5pbXBvcnQgZXhwYW5kVG9IYXNoTWFwIGZyb20gXCIuL2V4cGFuZFRvSGFzaE1hcC5qc1wiOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRldGVjdE92ZXJmbG93KHN0YXRlLCBvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cblxuICB2YXIgX29wdGlvbnMgPSBvcHRpb25zLFxuICAgICAgX29wdGlvbnMkcGxhY2VtZW50ID0gX29wdGlvbnMucGxhY2VtZW50LFxuICAgICAgcGxhY2VtZW50ID0gX29wdGlvbnMkcGxhY2VtZW50ID09PSB2b2lkIDAgPyBzdGF0ZS5wbGFjZW1lbnQgOiBfb3B0aW9ucyRwbGFjZW1lbnQsXG4gICAgICBfb3B0aW9ucyRzdHJhdGVneSA9IF9vcHRpb25zLnN0cmF0ZWd5LFxuICAgICAgc3RyYXRlZ3kgPSBfb3B0aW9ucyRzdHJhdGVneSA9PT0gdm9pZCAwID8gc3RhdGUuc3RyYXRlZ3kgOiBfb3B0aW9ucyRzdHJhdGVneSxcbiAgICAgIF9vcHRpb25zJGJvdW5kYXJ5ID0gX29wdGlvbnMuYm91bmRhcnksXG4gICAgICBib3VuZGFyeSA9IF9vcHRpb25zJGJvdW5kYXJ5ID09PSB2b2lkIDAgPyBjbGlwcGluZ1BhcmVudHMgOiBfb3B0aW9ucyRib3VuZGFyeSxcbiAgICAgIF9vcHRpb25zJHJvb3RCb3VuZGFyeSA9IF9vcHRpb25zLnJvb3RCb3VuZGFyeSxcbiAgICAgIHJvb3RCb3VuZGFyeSA9IF9vcHRpb25zJHJvb3RCb3VuZGFyeSA9PT0gdm9pZCAwID8gdmlld3BvcnQgOiBfb3B0aW9ucyRyb290Qm91bmRhcnksXG4gICAgICBfb3B0aW9ucyRlbGVtZW50Q29udGUgPSBfb3B0aW9ucy5lbGVtZW50Q29udGV4dCxcbiAgICAgIGVsZW1lbnRDb250ZXh0ID0gX29wdGlvbnMkZWxlbWVudENvbnRlID09PSB2b2lkIDAgPyBwb3BwZXIgOiBfb3B0aW9ucyRlbGVtZW50Q29udGUsXG4gICAgICBfb3B0aW9ucyRhbHRCb3VuZGFyeSA9IF9vcHRpb25zLmFsdEJvdW5kYXJ5LFxuICAgICAgYWx0Qm91bmRhcnkgPSBfb3B0aW9ucyRhbHRCb3VuZGFyeSA9PT0gdm9pZCAwID8gZmFsc2UgOiBfb3B0aW9ucyRhbHRCb3VuZGFyeSxcbiAgICAgIF9vcHRpb25zJHBhZGRpbmcgPSBfb3B0aW9ucy5wYWRkaW5nLFxuICAgICAgcGFkZGluZyA9IF9vcHRpb25zJHBhZGRpbmcgPT09IHZvaWQgMCA/IDAgOiBfb3B0aW9ucyRwYWRkaW5nO1xuICB2YXIgcGFkZGluZ09iamVjdCA9IG1lcmdlUGFkZGluZ09iamVjdCh0eXBlb2YgcGFkZGluZyAhPT0gJ251bWJlcicgPyBwYWRkaW5nIDogZXhwYW5kVG9IYXNoTWFwKHBhZGRpbmcsIGJhc2VQbGFjZW1lbnRzKSk7XG4gIHZhciBhbHRDb250ZXh0ID0gZWxlbWVudENvbnRleHQgPT09IHBvcHBlciA/IHJlZmVyZW5jZSA6IHBvcHBlcjtcbiAgdmFyIHBvcHBlclJlY3QgPSBzdGF0ZS5yZWN0cy5wb3BwZXI7XG4gIHZhciBlbGVtZW50ID0gc3RhdGUuZWxlbWVudHNbYWx0Qm91bmRhcnkgPyBhbHRDb250ZXh0IDogZWxlbWVudENvbnRleHRdO1xuICB2YXIgY2xpcHBpbmdDbGllbnRSZWN0ID0gZ2V0Q2xpcHBpbmdSZWN0KGlzRWxlbWVudChlbGVtZW50KSA/IGVsZW1lbnQgOiBlbGVtZW50LmNvbnRleHRFbGVtZW50IHx8IGdldERvY3VtZW50RWxlbWVudChzdGF0ZS5lbGVtZW50cy5wb3BwZXIpLCBib3VuZGFyeSwgcm9vdEJvdW5kYXJ5LCBzdHJhdGVneSk7XG4gIHZhciByZWZlcmVuY2VDbGllbnRSZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KHN0YXRlLmVsZW1lbnRzLnJlZmVyZW5jZSk7XG4gIHZhciBwb3BwZXJPZmZzZXRzID0gY29tcHV0ZU9mZnNldHMoe1xuICAgIHJlZmVyZW5jZTogcmVmZXJlbmNlQ2xpZW50UmVjdCxcbiAgICBlbGVtZW50OiBwb3BwZXJSZWN0LFxuICAgIHN0cmF0ZWd5OiAnYWJzb2x1dGUnLFxuICAgIHBsYWNlbWVudDogcGxhY2VtZW50XG4gIH0pO1xuICB2YXIgcG9wcGVyQ2xpZW50UmVjdCA9IHJlY3RUb0NsaWVudFJlY3QoT2JqZWN0LmFzc2lnbih7fSwgcG9wcGVyUmVjdCwgcG9wcGVyT2Zmc2V0cykpO1xuICB2YXIgZWxlbWVudENsaWVudFJlY3QgPSBlbGVtZW50Q29udGV4dCA9PT0gcG9wcGVyID8gcG9wcGVyQ2xpZW50UmVjdCA6IHJlZmVyZW5jZUNsaWVudFJlY3Q7IC8vIHBvc2l0aXZlID0gb3ZlcmZsb3dpbmcgdGhlIGNsaXBwaW5nIHJlY3RcbiAgLy8gMCBvciBuZWdhdGl2ZSA9IHdpdGhpbiB0aGUgY2xpcHBpbmcgcmVjdFxuXG4gIHZhciBvdmVyZmxvd09mZnNldHMgPSB7XG4gICAgdG9wOiBjbGlwcGluZ0NsaWVudFJlY3QudG9wIC0gZWxlbWVudENsaWVudFJlY3QudG9wICsgcGFkZGluZ09iamVjdC50b3AsXG4gICAgYm90dG9tOiBlbGVtZW50Q2xpZW50UmVjdC5ib3R0b20gLSBjbGlwcGluZ0NsaWVudFJlY3QuYm90dG9tICsgcGFkZGluZ09iamVjdC5ib3R0b20sXG4gICAgbGVmdDogY2xpcHBpbmdDbGllbnRSZWN0LmxlZnQgLSBlbGVtZW50Q2xpZW50UmVjdC5sZWZ0ICsgcGFkZGluZ09iamVjdC5sZWZ0LFxuICAgIHJpZ2h0OiBlbGVtZW50Q2xpZW50UmVjdC5yaWdodCAtIGNsaXBwaW5nQ2xpZW50UmVjdC5yaWdodCArIHBhZGRpbmdPYmplY3QucmlnaHRcbiAgfTtcbiAgdmFyIG9mZnNldERhdGEgPSBzdGF0ZS5tb2RpZmllcnNEYXRhLm9mZnNldDsgLy8gT2Zmc2V0cyBjYW4gYmUgYXBwbGllZCBvbmx5IHRvIHRoZSBwb3BwZXIgZWxlbWVudFxuXG4gIGlmIChlbGVtZW50Q29udGV4dCA9PT0gcG9wcGVyICYmIG9mZnNldERhdGEpIHtcbiAgICB2YXIgb2Zmc2V0ID0gb2Zmc2V0RGF0YVtwbGFjZW1lbnRdO1xuICAgIE9iamVjdC5rZXlzKG92ZXJmbG93T2Zmc2V0cykuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICB2YXIgbXVsdGlwbHkgPSBbcmlnaHQsIGJvdHRvbV0uaW5kZXhPZihrZXkpID49IDAgPyAxIDogLTE7XG4gICAgICB2YXIgYXhpcyA9IFt0b3AsIGJvdHRvbV0uaW5kZXhPZihrZXkpID49IDAgPyAneScgOiAneCc7XG4gICAgICBvdmVyZmxvd09mZnNldHNba2V5XSArPSBvZmZzZXRbYXhpc10gKiBtdWx0aXBseTtcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBvdmVyZmxvd09mZnNldHM7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZXhwYW5kVG9IYXNoTWFwKHZhbHVlLCBrZXlzKSB7XG4gIHJldHVybiBrZXlzLnJlZHVjZShmdW5jdGlvbiAoaGFzaE1hcCwga2V5KSB7XG4gICAgaGFzaE1hcFtrZXldID0gdmFsdWU7XG4gICAgcmV0dXJuIGhhc2hNYXA7XG4gIH0sIHt9KTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBmb3JtYXQoc3RyKSB7XG4gIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4gPiAxID8gX2xlbiAtIDEgOiAwKSwgX2tleSA9IDE7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICBhcmdzW19rZXkgLSAxXSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgfVxuXG4gIHJldHVybiBbXS5jb25jYXQoYXJncykucmVkdWNlKGZ1bmN0aW9uIChwLCBjKSB7XG4gICAgcmV0dXJuIHAucmVwbGFjZSgvJXMvLCBjKTtcbiAgfSwgc3RyKTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRBbHRBeGlzKGF4aXMpIHtcbiAgcmV0dXJuIGF4aXMgPT09ICd4JyA/ICd5JyA6ICd4Jztcbn0iLCJpbXBvcnQgeyBhdXRvIH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCkge1xuICByZXR1cm4gcGxhY2VtZW50LnNwbGl0KCctJylbMF07XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0RnJlc2hTaWRlT2JqZWN0KCkge1xuICByZXR1cm4ge1xuICAgIHRvcDogMCxcbiAgICByaWdodDogMCxcbiAgICBib3R0b206IDAsXG4gICAgbGVmdDogMFxuICB9O1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldE1haW5BeGlzRnJvbVBsYWNlbWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIFsndG9wJywgJ2JvdHRvbSddLmluZGV4T2YocGxhY2VtZW50KSA+PSAwID8gJ3gnIDogJ3knO1xufSIsInZhciBoYXNoID0ge1xuICBsZWZ0OiAncmlnaHQnLFxuICByaWdodDogJ2xlZnQnLFxuICBib3R0b206ICd0b3AnLFxuICB0b3A6ICdib3R0b20nXG59O1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQucmVwbGFjZSgvbGVmdHxyaWdodHxib3R0b218dG9wL2csIGZ1bmN0aW9uIChtYXRjaGVkKSB7XG4gICAgcmV0dXJuIGhhc2hbbWF0Y2hlZF07XG4gIH0pO1xufSIsInZhciBoYXNoID0ge1xuICBzdGFydDogJ2VuZCcsXG4gIGVuZDogJ3N0YXJ0J1xufTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldE9wcG9zaXRlVmFyaWF0aW9uUGxhY2VtZW50KHBsYWNlbWVudCkge1xuICByZXR1cm4gcGxhY2VtZW50LnJlcGxhY2UoL3N0YXJ0fGVuZC9nLCBmdW5jdGlvbiAobWF0Y2hlZCkge1xuICAgIHJldHVybiBoYXNoW21hdGNoZWRdO1xuICB9KTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRWYXJpYXRpb24ocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQuc3BsaXQoJy0nKVsxXTtcbn0iLCJleHBvcnQgdmFyIG1heCA9IE1hdGgubWF4O1xuZXhwb3J0IHZhciBtaW4gPSBNYXRoLm1pbjtcbmV4cG9ydCB2YXIgcm91bmQgPSBNYXRoLnJvdW5kOyIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1lcmdlQnlOYW1lKG1vZGlmaWVycykge1xuICB2YXIgbWVyZ2VkID0gbW9kaWZpZXJzLnJlZHVjZShmdW5jdGlvbiAobWVyZ2VkLCBjdXJyZW50KSB7XG4gICAgdmFyIGV4aXN0aW5nID0gbWVyZ2VkW2N1cnJlbnQubmFtZV07XG4gICAgbWVyZ2VkW2N1cnJlbnQubmFtZV0gPSBleGlzdGluZyA/IE9iamVjdC5hc3NpZ24oe30sIGV4aXN0aW5nLCBjdXJyZW50LCB7XG4gICAgICBvcHRpb25zOiBPYmplY3QuYXNzaWduKHt9LCBleGlzdGluZy5vcHRpb25zLCBjdXJyZW50Lm9wdGlvbnMpLFxuICAgICAgZGF0YTogT2JqZWN0LmFzc2lnbih7fSwgZXhpc3RpbmcuZGF0YSwgY3VycmVudC5kYXRhKVxuICAgIH0pIDogY3VycmVudDtcbiAgICByZXR1cm4gbWVyZ2VkO1xuICB9LCB7fSk7IC8vIElFMTEgZG9lcyBub3Qgc3VwcG9ydCBPYmplY3QudmFsdWVzXG5cbiAgcmV0dXJuIE9iamVjdC5rZXlzKG1lcmdlZCkubWFwKGZ1bmN0aW9uIChrZXkpIHtcbiAgICByZXR1cm4gbWVyZ2VkW2tleV07XG4gIH0pO1xufSIsImltcG9ydCBnZXRGcmVzaFNpZGVPYmplY3QgZnJvbSBcIi4vZ2V0RnJlc2hTaWRlT2JqZWN0LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtZXJnZVBhZGRpbmdPYmplY3QocGFkZGluZ09iamVjdCkge1xuICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgZ2V0RnJlc2hTaWRlT2JqZWN0KCksIHBhZGRpbmdPYmplY3QpO1xufSIsImltcG9ydCB7IG1vZGlmaWVyUGhhc2VzIH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7IC8vIHNvdXJjZTogaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNDk4NzUyNTVcblxuZnVuY3Rpb24gb3JkZXIobW9kaWZpZXJzKSB7XG4gIHZhciBtYXAgPSBuZXcgTWFwKCk7XG4gIHZhciB2aXNpdGVkID0gbmV3IFNldCgpO1xuICB2YXIgcmVzdWx0ID0gW107XG4gIG1vZGlmaWVycy5mb3JFYWNoKGZ1bmN0aW9uIChtb2RpZmllcikge1xuICAgIG1hcC5zZXQobW9kaWZpZXIubmFtZSwgbW9kaWZpZXIpO1xuICB9KTsgLy8gT24gdmlzaXRpbmcgb2JqZWN0LCBjaGVjayBmb3IgaXRzIGRlcGVuZGVuY2llcyBhbmQgdmlzaXQgdGhlbSByZWN1cnNpdmVseVxuXG4gIGZ1bmN0aW9uIHNvcnQobW9kaWZpZXIpIHtcbiAgICB2aXNpdGVkLmFkZChtb2RpZmllci5uYW1lKTtcbiAgICB2YXIgcmVxdWlyZXMgPSBbXS5jb25jYXQobW9kaWZpZXIucmVxdWlyZXMgfHwgW10sIG1vZGlmaWVyLnJlcXVpcmVzSWZFeGlzdHMgfHwgW10pO1xuICAgIHJlcXVpcmVzLmZvckVhY2goZnVuY3Rpb24gKGRlcCkge1xuICAgICAgaWYgKCF2aXNpdGVkLmhhcyhkZXApKSB7XG4gICAgICAgIHZhciBkZXBNb2RpZmllciA9IG1hcC5nZXQoZGVwKTtcblxuICAgICAgICBpZiAoZGVwTW9kaWZpZXIpIHtcbiAgICAgICAgICBzb3J0KGRlcE1vZGlmaWVyKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHJlc3VsdC5wdXNoKG1vZGlmaWVyKTtcbiAgfVxuXG4gIG1vZGlmaWVycy5mb3JFYWNoKGZ1bmN0aW9uIChtb2RpZmllcikge1xuICAgIGlmICghdmlzaXRlZC5oYXMobW9kaWZpZXIubmFtZSkpIHtcbiAgICAgIC8vIGNoZWNrIGZvciB2aXNpdGVkIG9iamVjdFxuICAgICAgc29ydChtb2RpZmllcik7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gb3JkZXJNb2RpZmllcnMobW9kaWZpZXJzKSB7XG4gIC8vIG9yZGVyIGJhc2VkIG9uIGRlcGVuZGVuY2llc1xuICB2YXIgb3JkZXJlZE1vZGlmaWVycyA9IG9yZGVyKG1vZGlmaWVycyk7IC8vIG9yZGVyIGJhc2VkIG9uIHBoYXNlXG5cbiAgcmV0dXJuIG1vZGlmaWVyUGhhc2VzLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBwaGFzZSkge1xuICAgIHJldHVybiBhY2MuY29uY2F0KG9yZGVyZWRNb2RpZmllcnMuZmlsdGVyKGZ1bmN0aW9uIChtb2RpZmllcikge1xuICAgICAgcmV0dXJuIG1vZGlmaWVyLnBoYXNlID09PSBwaGFzZTtcbiAgICB9KSk7XG4gIH0sIFtdKTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiByZWN0VG9DbGllbnRSZWN0KHJlY3QpIHtcbiAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHJlY3QsIHtcbiAgICBsZWZ0OiByZWN0LngsXG4gICAgdG9wOiByZWN0LnksXG4gICAgcmlnaHQ6IHJlY3QueCArIHJlY3Qud2lkdGgsXG4gICAgYm90dG9tOiByZWN0LnkgKyByZWN0LmhlaWdodFxuICB9KTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1bmlxdWVCeShhcnIsIGZuKSB7XG4gIHZhciBpZGVudGlmaWVycyA9IG5ldyBTZXQoKTtcbiAgcmV0dXJuIGFyci5maWx0ZXIoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICB2YXIgaWRlbnRpZmllciA9IGZuKGl0ZW0pO1xuXG4gICAgaWYgKCFpZGVudGlmaWVycy5oYXMoaWRlbnRpZmllcikpIHtcbiAgICAgIGlkZW50aWZpZXJzLmFkZChpZGVudGlmaWVyKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSk7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0VUFTdHJpbmcoKSB7XG4gIHZhciB1YURhdGEgPSBuYXZpZ2F0b3IudXNlckFnZW50RGF0YTtcblxuICBpZiAodWFEYXRhICE9IG51bGwgJiYgdWFEYXRhLmJyYW5kcykge1xuICAgIHJldHVybiB1YURhdGEuYnJhbmRzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgcmV0dXJuIGl0ZW0uYnJhbmQgKyBcIi9cIiArIGl0ZW0udmVyc2lvbjtcbiAgICB9KS5qb2luKCcgJyk7XG4gIH1cblxuICByZXR1cm4gbmF2aWdhdG9yLnVzZXJBZ2VudDtcbn0iLCJpbXBvcnQgZm9ybWF0IGZyb20gXCIuL2Zvcm1hdC5qc1wiO1xuaW1wb3J0IHsgbW9kaWZpZXJQaGFzZXMgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbnZhciBJTlZBTElEX01PRElGSUVSX0VSUk9SID0gJ1BvcHBlcjogbW9kaWZpZXIgXCIlc1wiIHByb3ZpZGVkIGFuIGludmFsaWQgJXMgcHJvcGVydHksIGV4cGVjdGVkICVzIGJ1dCBnb3QgJXMnO1xudmFyIE1JU1NJTkdfREVQRU5ERU5DWV9FUlJPUiA9ICdQb3BwZXI6IG1vZGlmaWVyIFwiJXNcIiByZXF1aXJlcyBcIiVzXCIsIGJ1dCBcIiVzXCIgbW9kaWZpZXIgaXMgbm90IGF2YWlsYWJsZSc7XG52YXIgVkFMSURfUFJPUEVSVElFUyA9IFsnbmFtZScsICdlbmFibGVkJywgJ3BoYXNlJywgJ2ZuJywgJ2VmZmVjdCcsICdyZXF1aXJlcycsICdvcHRpb25zJ107XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB2YWxpZGF0ZU1vZGlmaWVycyhtb2RpZmllcnMpIHtcbiAgbW9kaWZpZXJzLmZvckVhY2goZnVuY3Rpb24gKG1vZGlmaWVyKSB7XG4gICAgW10uY29uY2F0KE9iamVjdC5rZXlzKG1vZGlmaWVyKSwgVkFMSURfUFJPUEVSVElFUykgLy8gSUUxMS1jb21wYXRpYmxlIHJlcGxhY2VtZW50IGZvciBgbmV3IFNldChpdGVyYWJsZSlgXG4gICAgLmZpbHRlcihmdW5jdGlvbiAodmFsdWUsIGluZGV4LCBzZWxmKSB7XG4gICAgICByZXR1cm4gc2VsZi5pbmRleE9mKHZhbHVlKSA9PT0gaW5kZXg7XG4gICAgfSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgICBjYXNlICduYW1lJzpcbiAgICAgICAgICBpZiAodHlwZW9mIG1vZGlmaWVyLm5hbWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGZvcm1hdChJTlZBTElEX01PRElGSUVSX0VSUk9SLCBTdHJpbmcobW9kaWZpZXIubmFtZSksICdcIm5hbWVcIicsICdcInN0cmluZ1wiJywgXCJcXFwiXCIgKyBTdHJpbmcobW9kaWZpZXIubmFtZSkgKyBcIlxcXCJcIikpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2VuYWJsZWQnOlxuICAgICAgICAgIGlmICh0eXBlb2YgbW9kaWZpZXIuZW5hYmxlZCAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGZvcm1hdChJTlZBTElEX01PRElGSUVSX0VSUk9SLCBtb2RpZmllci5uYW1lLCAnXCJlbmFibGVkXCInLCAnXCJib29sZWFuXCInLCBcIlxcXCJcIiArIFN0cmluZyhtb2RpZmllci5lbmFibGVkKSArIFwiXFxcIlwiKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAncGhhc2UnOlxuICAgICAgICAgIGlmIChtb2RpZmllclBoYXNlcy5pbmRleE9mKG1vZGlmaWVyLnBoYXNlKSA8IDApIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZm9ybWF0KElOVkFMSURfTU9ESUZJRVJfRVJST1IsIG1vZGlmaWVyLm5hbWUsICdcInBoYXNlXCInLCBcImVpdGhlciBcIiArIG1vZGlmaWVyUGhhc2VzLmpvaW4oJywgJyksIFwiXFxcIlwiICsgU3RyaW5nKG1vZGlmaWVyLnBoYXNlKSArIFwiXFxcIlwiKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnZm4nOlxuICAgICAgICAgIGlmICh0eXBlb2YgbW9kaWZpZXIuZm4gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZm9ybWF0KElOVkFMSURfTU9ESUZJRVJfRVJST1IsIG1vZGlmaWVyLm5hbWUsICdcImZuXCInLCAnXCJmdW5jdGlvblwiJywgXCJcXFwiXCIgKyBTdHJpbmcobW9kaWZpZXIuZm4pICsgXCJcXFwiXCIpKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdlZmZlY3QnOlxuICAgICAgICAgIGlmIChtb2RpZmllci5lZmZlY3QgIT0gbnVsbCAmJiB0eXBlb2YgbW9kaWZpZXIuZWZmZWN0ICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGZvcm1hdChJTlZBTElEX01PRElGSUVSX0VSUk9SLCBtb2RpZmllci5uYW1lLCAnXCJlZmZlY3RcIicsICdcImZ1bmN0aW9uXCInLCBcIlxcXCJcIiArIFN0cmluZyhtb2RpZmllci5mbikgKyBcIlxcXCJcIikpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ3JlcXVpcmVzJzpcbiAgICAgICAgICBpZiAobW9kaWZpZXIucmVxdWlyZXMgIT0gbnVsbCAmJiAhQXJyYXkuaXNBcnJheShtb2RpZmllci5yZXF1aXJlcykpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZm9ybWF0KElOVkFMSURfTU9ESUZJRVJfRVJST1IsIG1vZGlmaWVyLm5hbWUsICdcInJlcXVpcmVzXCInLCAnXCJhcnJheVwiJywgXCJcXFwiXCIgKyBTdHJpbmcobW9kaWZpZXIucmVxdWlyZXMpICsgXCJcXFwiXCIpKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdyZXF1aXJlc0lmRXhpc3RzJzpcbiAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkobW9kaWZpZXIucmVxdWlyZXNJZkV4aXN0cykpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZm9ybWF0KElOVkFMSURfTU9ESUZJRVJfRVJST1IsIG1vZGlmaWVyLm5hbWUsICdcInJlcXVpcmVzSWZFeGlzdHNcIicsICdcImFycmF5XCInLCBcIlxcXCJcIiArIFN0cmluZyhtb2RpZmllci5yZXF1aXJlc0lmRXhpc3RzKSArIFwiXFxcIlwiKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnb3B0aW9ucyc6XG4gICAgICAgIGNhc2UgJ2RhdGEnOlxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgY29uc29sZS5lcnJvcihcIlBvcHBlckpTOiBhbiBpbnZhbGlkIHByb3BlcnR5IGhhcyBiZWVuIHByb3ZpZGVkIHRvIHRoZSBcXFwiXCIgKyBtb2RpZmllci5uYW1lICsgXCJcXFwiIG1vZGlmaWVyLCB2YWxpZCBwcm9wZXJ0aWVzIGFyZSBcIiArIFZBTElEX1BST1BFUlRJRVMubWFwKGZ1bmN0aW9uIChzKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJcXFwiXCIgKyBzICsgXCJcXFwiXCI7XG4gICAgICAgICAgfSkuam9pbignLCAnKSArIFwiOyBidXQgXFxcIlwiICsga2V5ICsgXCJcXFwiIHdhcyBwcm92aWRlZC5cIik7XG4gICAgICB9XG5cbiAgICAgIG1vZGlmaWVyLnJlcXVpcmVzICYmIG1vZGlmaWVyLnJlcXVpcmVzLmZvckVhY2goZnVuY3Rpb24gKHJlcXVpcmVtZW50KSB7XG4gICAgICAgIGlmIChtb2RpZmllcnMuZmluZChmdW5jdGlvbiAobW9kKSB7XG4gICAgICAgICAgcmV0dXJuIG1vZC5uYW1lID09PSByZXF1aXJlbWVudDtcbiAgICAgICAgfSkgPT0gbnVsbCkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZm9ybWF0KE1JU1NJTkdfREVQRU5ERU5DWV9FUlJPUiwgU3RyaW5nKG1vZGlmaWVyLm5hbWUpLCByZXF1aXJlbWVudCwgcmVxdWlyZW1lbnQpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufSIsImltcG9ydCB7IG1heCBhcyBtYXRoTWF4LCBtaW4gYXMgbWF0aE1pbiB9IGZyb20gXCIuL21hdGguanNcIjtcbmV4cG9ydCBmdW5jdGlvbiB3aXRoaW4obWluLCB2YWx1ZSwgbWF4KSB7XG4gIHJldHVybiBtYXRoTWF4KG1pbiwgbWF0aE1pbih2YWx1ZSwgbWF4KSk7XG59XG5leHBvcnQgZnVuY3Rpb24gd2l0aGluTWF4Q2xhbXAobWluLCB2YWx1ZSwgbWF4KSB7XG4gIHZhciB2ID0gd2l0aGluKG1pbiwgdmFsdWUsIG1heCk7XG4gIHJldHVybiB2ID4gbWF4ID8gbWF4IDogdjtcbn0iLCJcInVzZSBzdHJpY3RcIjtcblxuLypcbiAgTUlUIExpY2Vuc2UgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5waHBcbiAgQXV0aG9yIFRvYmlhcyBLb3BwZXJzIEBzb2tyYVxuKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGNzc1dpdGhNYXBwaW5nVG9TdHJpbmcpIHtcbiAgdmFyIGxpc3QgPSBbXTsgLy8gcmV0dXJuIHRoZSBsaXN0IG9mIG1vZHVsZXMgYXMgY3NzIHN0cmluZ1xuXG4gIGxpc3QudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgIHZhciBjb250ZW50ID0gXCJcIjtcbiAgICAgIHZhciBuZWVkTGF5ZXIgPSB0eXBlb2YgaXRlbVs1XSAhPT0gXCJ1bmRlZmluZWRcIjtcblxuICAgICAgaWYgKGl0ZW1bNF0pIHtcbiAgICAgICAgY29udGVudCArPSBcIkBzdXBwb3J0cyAoXCIuY29uY2F0KGl0ZW1bNF0sIFwiKSB7XCIpO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXRlbVsyXSkge1xuICAgICAgICBjb250ZW50ICs9IFwiQG1lZGlhIFwiLmNvbmNhdChpdGVtWzJdLCBcIiB7XCIpO1xuICAgICAgfVxuXG4gICAgICBpZiAobmVlZExheWVyKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJAbGF5ZXJcIi5jb25jYXQoaXRlbVs1XS5sZW5ndGggPiAwID8gXCIgXCIuY29uY2F0KGl0ZW1bNV0pIDogXCJcIiwgXCIge1wiKTtcbiAgICAgIH1cblxuICAgICAgY29udGVudCArPSBjc3NXaXRoTWFwcGluZ1RvU3RyaW5nKGl0ZW0pO1xuXG4gICAgICBpZiAobmVlZExheWVyKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJ9XCI7XG4gICAgICB9XG5cbiAgICAgIGlmIChpdGVtWzJdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJ9XCI7XG4gICAgICB9XG5cbiAgICAgIGlmIChpdGVtWzRdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJ9XCI7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb250ZW50O1xuICAgIH0pLmpvaW4oXCJcIik7XG4gIH07IC8vIGltcG9ydCBhIGxpc3Qgb2YgbW9kdWxlcyBpbnRvIHRoZSBsaXN0XG5cblxuICBsaXN0LmkgPSBmdW5jdGlvbiBpKG1vZHVsZXMsIG1lZGlhLCBkZWR1cGUsIHN1cHBvcnRzLCBsYXllcikge1xuICAgIGlmICh0eXBlb2YgbW9kdWxlcyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgbW9kdWxlcyA9IFtbbnVsbCwgbW9kdWxlcywgdW5kZWZpbmVkXV07XG4gICAgfVxuXG4gICAgdmFyIGFscmVhZHlJbXBvcnRlZE1vZHVsZXMgPSB7fTtcblxuICAgIGlmIChkZWR1cGUpIHtcbiAgICAgIGZvciAodmFyIGsgPSAwOyBrIDwgdGhpcy5sZW5ndGg7IGsrKykge1xuICAgICAgICB2YXIgaWQgPSB0aGlzW2tdWzBdO1xuXG4gICAgICAgIGlmIChpZCAhPSBudWxsKSB7XG4gICAgICAgICAgYWxyZWFkeUltcG9ydGVkTW9kdWxlc1tpZF0gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yICh2YXIgX2sgPSAwOyBfayA8IG1vZHVsZXMubGVuZ3RoOyBfaysrKSB7XG4gICAgICB2YXIgaXRlbSA9IFtdLmNvbmNhdChtb2R1bGVzW19rXSk7XG5cbiAgICAgIGlmIChkZWR1cGUgJiYgYWxyZWFkeUltcG9ydGVkTW9kdWxlc1tpdGVtWzBdXSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBsYXllciAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICBpZiAodHlwZW9mIGl0ZW1bNV0gPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICBpdGVtWzVdID0gbGF5ZXI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbVsxXSA9IFwiQGxheWVyXCIuY29uY2F0KGl0ZW1bNV0ubGVuZ3RoID4gMCA/IFwiIFwiLmNvbmNhdChpdGVtWzVdKSA6IFwiXCIsIFwiIHtcIikuY29uY2F0KGl0ZW1bMV0sIFwifVwiKTtcbiAgICAgICAgICBpdGVtWzVdID0gbGF5ZXI7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKG1lZGlhKSB7XG4gICAgICAgIGlmICghaXRlbVsyXSkge1xuICAgICAgICAgIGl0ZW1bMl0gPSBtZWRpYTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpdGVtWzFdID0gXCJAbWVkaWEgXCIuY29uY2F0KGl0ZW1bMl0sIFwiIHtcIikuY29uY2F0KGl0ZW1bMV0sIFwifVwiKTtcbiAgICAgICAgICBpdGVtWzJdID0gbWVkaWE7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHN1cHBvcnRzKSB7XG4gICAgICAgIGlmICghaXRlbVs0XSkge1xuICAgICAgICAgIGl0ZW1bNF0gPSBcIlwiLmNvbmNhdChzdXBwb3J0cyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbVsxXSA9IFwiQHN1cHBvcnRzIChcIi5jb25jYXQoaXRlbVs0XSwgXCIpIHtcIikuY29uY2F0KGl0ZW1bMV0sIFwifVwiKTtcbiAgICAgICAgICBpdGVtWzRdID0gc3VwcG9ydHM7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgbGlzdC5wdXNoKGl0ZW0pO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gbGlzdDtcbn07IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHVybCwgb3B0aW9ucykge1xuICBpZiAoIW9wdGlvbnMpIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cblxuICBpZiAoIXVybCkge1xuICAgIHJldHVybiB1cmw7XG4gIH1cblxuICB1cmwgPSBTdHJpbmcodXJsLl9fZXNNb2R1bGUgPyB1cmwuZGVmYXVsdCA6IHVybCk7IC8vIElmIHVybCBpcyBhbHJlYWR5IHdyYXBwZWQgaW4gcXVvdGVzLCByZW1vdmUgdGhlbVxuXG4gIGlmICgvXlsnXCJdLipbJ1wiXSQvLnRlc3QodXJsKSkge1xuICAgIHVybCA9IHVybC5zbGljZSgxLCAtMSk7XG4gIH1cblxuICBpZiAob3B0aW9ucy5oYXNoKSB7XG4gICAgdXJsICs9IG9wdGlvbnMuaGFzaDtcbiAgfSAvLyBTaG91bGQgdXJsIGJlIHdyYXBwZWQ/XG4gIC8vIFNlZSBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXZhbHVlcy0zLyN1cmxzXG5cblxuICBpZiAoL1tcIicoKSBcXHRcXG5dfCglMjApLy50ZXN0KHVybCkgfHwgb3B0aW9ucy5uZWVkUXVvdGVzKSB7XG4gICAgcmV0dXJuIFwiXFxcIlwiLmNvbmNhdCh1cmwucmVwbGFjZSgvXCIvZywgJ1xcXFxcIicpLnJlcGxhY2UoL1xcbi9nLCBcIlxcXFxuXCIpLCBcIlxcXCJcIik7XG4gIH1cblxuICByZXR1cm4gdXJsO1xufTsiLCJcInVzZSBzdHJpY3RcIjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXRlbSkge1xuICB2YXIgY29udGVudCA9IGl0ZW1bMV07XG4gIHZhciBjc3NNYXBwaW5nID0gaXRlbVszXTtcblxuICBpZiAoIWNzc01hcHBpbmcpIHtcbiAgICByZXR1cm4gY29udGVudDtcbiAgfVxuXG4gIGlmICh0eXBlb2YgYnRvYSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgdmFyIGJhc2U2NCA9IGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KGNzc01hcHBpbmcpKSkpO1xuICAgIHZhciBkYXRhID0gXCJzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxcIi5jb25jYXQoYmFzZTY0KTtcbiAgICB2YXIgc291cmNlTWFwcGluZyA9IFwiLyojIFwiLmNvbmNhdChkYXRhLCBcIiAqL1wiKTtcbiAgICB2YXIgc291cmNlVVJMcyA9IGNzc01hcHBpbmcuc291cmNlcy5tYXAoZnVuY3Rpb24gKHNvdXJjZSkge1xuICAgICAgcmV0dXJuIFwiLyojIHNvdXJjZVVSTD1cIi5jb25jYXQoY3NzTWFwcGluZy5zb3VyY2VSb290IHx8IFwiXCIpLmNvbmNhdChzb3VyY2UsIFwiICovXCIpO1xuICAgIH0pO1xuICAgIHJldHVybiBbY29udGVudF0uY29uY2F0KHNvdXJjZVVSTHMpLmNvbmNhdChbc291cmNlTWFwcGluZ10pLmpvaW4oXCJcXG5cIik7XG4gIH1cblxuICByZXR1cm4gW2NvbnRlbnRdLmpvaW4oXCJcXG5cIik7XG59OyIsImNvbnN0IGN1cnJlbmN5U3ltYm9sTWFwID0gcmVxdWlyZSgnLi9tYXAnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGdldFN5bWJvbEZyb21DdXJyZW5jeSAoY3VycmVuY3lDb2RlKSB7XG4gIGlmICh0eXBlb2YgY3VycmVuY3lDb2RlICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxuXG4gIGNvbnN0IGNvZGUgPSBjdXJyZW5jeUNvZGUudG9VcHBlckNhc2UoKVxuXG4gIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGN1cnJlbmN5U3ltYm9sTWFwLCBjb2RlKSkge1xuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxuXG4gIHJldHVybiBjdXJyZW5jeVN5bWJvbE1hcFtjb2RlXVxufVxuXG5tb2R1bGUuZXhwb3J0cy5jdXJyZW5jeVN5bWJvbE1hcCA9IGN1cnJlbmN5U3ltYm9sTWFwXG4iLCJtb2R1bGUuZXhwb3J0cyA9IHtcbiAgQUVEOiAn2K8u2KUnLFxuICBBRk46ICfYiycsXG4gIEFMTDogJ0wnLFxuICBBTUQ6ICfWjycsXG4gIEFORzogJ8aSJyxcbiAgQU9BOiAnS3onLFxuICBBUlM6ICckJyxcbiAgQVVEOiAnJCcsXG4gIEFXRzogJ8aSJyxcbiAgQVpOOiAn4oK8JyxcbiAgQkFNOiAnS00nLFxuICBCQkQ6ICckJyxcbiAgQkRUOiAn4KezJyxcbiAgQkdOOiAn0LvQsicsXG4gIEJIRDogJy7Yry7YqCcsXG4gIEJJRjogJ0ZCdScsXG4gIEJNRDogJyQnLFxuICBCTkQ6ICckJyxcbiAgQk9COiAnJGInLFxuICBCT1Y6ICdCT1YnLFxuICBCUkw6ICdSJCcsXG4gIEJTRDogJyQnLFxuICBCVEM6ICfigr8nLFxuICBCVE46ICdOdS4nLFxuICBCV1A6ICdQJyxcbiAgQllOOiAnQnInLFxuICBCWVI6ICdCcicsXG4gIEJaRDogJ0JaJCcsXG4gIENBRDogJyQnLFxuICBDREY6ICdGQycsXG4gIENIRTogJ0NIRScsXG4gIENIRjogJ0NIRicsXG4gIENIVzogJ0NIVycsXG4gIENMRjogJ0NMRicsXG4gIENMUDogJyQnLFxuICBDTlk6ICfCpScsXG4gIENPUDogJyQnLFxuICBDT1U6ICdDT1UnLFxuICBDUkM6ICfigqEnLFxuICBDVUM6ICckJyxcbiAgQ1VQOiAn4oKxJyxcbiAgQ1ZFOiAnJCcsXG4gIENaSzogJ0vEjScsXG4gIERKRjogJ0ZkaicsXG4gIERLSzogJ2tyJyxcbiAgRE9QOiAnUkQkJyxcbiAgRFpEOiAn2K/YrCcsXG4gIEVFSzogJ2tyJyxcbiAgRUdQOiAnwqMnLFxuICBFUk46ICdOZmsnLFxuICBFVEI6ICdCcicsXG4gIEVUSDogJ86eJyxcbiAgRVVSOiAn4oKsJyxcbiAgRkpEOiAnJCcsXG4gIEZLUDogJ8KjJyxcbiAgR0JQOiAnwqMnLFxuICBHRUw6ICfigr4nLFxuICBHR1A6ICfCoycsXG4gIEdIQzogJ+KCtScsXG4gIEdIUzogJ0dI4oK1JyxcbiAgR0lQOiAnwqMnLFxuICBHTUQ6ICdEJyxcbiAgR05GOiAnRkcnLFxuICBHVFE6ICdRJyxcbiAgR1lEOiAnJCcsXG4gIEhLRDogJyQnLFxuICBITkw6ICdMJyxcbiAgSFJLOiAna24nLFxuICBIVEc6ICdHJyxcbiAgSFVGOiAnRnQnLFxuICBJRFI6ICdScCcsXG4gIElMUzogJ+KCqicsXG4gIElNUDogJ8KjJyxcbiAgSU5SOiAn4oK5JyxcbiAgSVFEOiAn2Lku2K8nLFxuICBJUlI6ICfvt7wnLFxuICBJU0s6ICdrcicsXG4gIEpFUDogJ8KjJyxcbiAgSk1EOiAnSiQnLFxuICBKT0Q6ICdKRCcsXG4gIEpQWTogJ8KlJyxcbiAgS0VTOiAnS1NoJyxcbiAgS0dTOiAn0LvQsicsXG4gIEtIUjogJ+GfmycsXG4gIEtNRjogJ0NGJyxcbiAgS1BXOiAn4oKpJyxcbiAgS1JXOiAn4oKpJyxcbiAgS1dEOiAnS0QnLFxuICBLWUQ6ICckJyxcbiAgS1pUOiAn4oK4JyxcbiAgTEFLOiAn4oKtJyxcbiAgTEJQOiAnwqMnLFxuICBMS1I6ICfigqgnLFxuICBMUkQ6ICckJyxcbiAgTFNMOiAnTScsXG4gIExUQzogJ8WBJyxcbiAgTFRMOiAnTHQnLFxuICBMVkw6ICdMcycsXG4gIExZRDogJ0xEJyxcbiAgTUFEOiAnTUFEJyxcbiAgTURMOiAnbGVpJyxcbiAgTUdBOiAnQXInLFxuICBNS0Q6ICfQtNC10L0nLFxuICBNTUs6ICdLJyxcbiAgTU5UOiAn4oKuJyxcbiAgTU9QOiAnTU9QJCcsXG4gIE1STzogJ1VNJyxcbiAgTVJVOiAnVU0nLFxuICBNVVI6ICfigqgnLFxuICBNVlI6ICdSZicsXG4gIE1XSzogJ01LJyxcbiAgTVhOOiAnJCcsXG4gIE1YVjogJ01YVicsXG4gIE1ZUjogJ1JNJyxcbiAgTVpOOiAnTVQnLFxuICBOQUQ6ICckJyxcbiAgTkdOOiAn4oKmJyxcbiAgTklPOiAnQyQnLFxuICBOT0s6ICdrcicsXG4gIE5QUjogJ+KCqCcsXG4gIE5aRDogJyQnLFxuICBPTVI6ICfvt7wnLFxuICBQQUI6ICdCLy4nLFxuICBQRU46ICdTLy4nLFxuICBQR0s6ICdLJyxcbiAgUEhQOiAn4oKxJyxcbiAgUEtSOiAn4oKoJyxcbiAgUExOOiAnesWCJyxcbiAgUFlHOiAnR3MnLFxuICBRQVI6ICfvt7wnLFxuICBSTUI6ICfvv6UnLFxuICBST046ICdsZWknLFxuICBSU0Q6ICfQlNC40L0uJyxcbiAgUlVCOiAn4oK9JyxcbiAgUldGOiAnUuKCoycsXG4gIFNBUjogJ++3vCcsXG4gIFNCRDogJyQnLFxuICBTQ1I6ICfigqgnLFxuICBTREc6ICfYrC7Ysy4nLFxuICBTRUs6ICdrcicsXG4gIFNHRDogJ1MkJyxcbiAgU0hQOiAnwqMnLFxuICBTTEw6ICdMZScsXG4gIFNPUzogJ1MnLFxuICBTUkQ6ICckJyxcbiAgU1NQOiAnwqMnLFxuICBTVEQ6ICdEYicsXG4gIFNUTjogJ0RiJyxcbiAgU1ZDOiAnJCcsXG4gIFNZUDogJ8KjJyxcbiAgU1pMOiAnRScsXG4gIFRIQjogJ+C4vycsXG4gIFRKUzogJ1NNJyxcbiAgVE1UOiAnVCcsXG4gIFRORDogJ9ivLtiqJyxcbiAgVE9QOiAnVCQnLFxuICBUUkw6ICfigqQnLFxuICBUUlk6ICfigronLFxuICBUVEQ6ICdUVCQnLFxuICBUVkQ6ICckJyxcbiAgVFdEOiAnTlQkJyxcbiAgVFpTOiAnVFNoJyxcbiAgVUFIOiAn4oK0JyxcbiAgVUdYOiAnVVNoJyxcbiAgVVNEOiAnJCcsXG4gIFVZSTogJ1VZSScsXG4gIFVZVTogJyRVJyxcbiAgVVlXOiAnVVlXJyxcbiAgVVpTOiAn0LvQsicsXG4gIFZFRjogJ0JzJyxcbiAgVkVTOiAnQnMuUycsXG4gIFZORDogJ+KCqycsXG4gIFZVVjogJ1ZUJyxcbiAgV1NUOiAnV1MkJyxcbiAgWEFGOiAnRkNGQScsXG4gIFhCVDogJ8mDJyxcbiAgWENEOiAnJCcsXG4gIFhPRjogJ0NGQScsXG4gIFhQRjogJ+KCoycsXG4gIFhTVTogJ1N1Y3JlJyxcbiAgWFVBOiAnWFVBJyxcbiAgWUVSOiAn77e8JyxcbiAgWkFSOiAnUicsXG4gIFpNVzogJ1pLJyxcbiAgWldEOiAnWiQnLFxuICBaV0w6ICckJ1xufVxuIiwiLy8gZ2l0aHViLmNvbS9waW5lYXBwbGVtYWNoaW5lL3N0cnRpbWUtanNcbi8vIE1JVCBsaWNlbnNlLCBDb3B5cmlnaHQgKGMpIDIwMTggU29waGllIEtpcnNjaG5lciAoc29waGlla0BwaW5lYXBwbGVtYWNoaW5lLmNvbSlcbi8vIFJlZmVyZW5jZXM6XG4vLyBodHRwczovL3d3dy5pYm0uY29tL3N1cHBvcnQva25vd2xlZGdlY2VudGVyL2VuL3Nzd19pYm1faV83MS9ydHJlZi9zdHJwdGkuaHRtXG4vLyBodHRwczovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2xpYmMvbWFudWFsL2h0bWxfbm9kZS9Gb3JtYXR0aW5nLUNhbGVuZGFyLVRpbWUuaHRtbFxuLy8gaHR0cHM6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9saWJjL21hbnVhbC9odG1sX25vZGUvTG93XzAwMmRMZXZlbC1UaW1lLVN0cmluZy1QYXJzaW5nLmh0bWxcbi8vIGh0dHA6Ly9tYW43Lm9yZy9saW51eC9tYW4tcGFnZXMvbWFuMy9zdHJwdGltZS4zLmh0bWxcbi8vIGh0dHBzOi8vYXBpZG9jay5jb20vcnVieS9EYXRlVGltZS9zdHJmdGltZVxuLy8gaHR0cDovL3N0cmZ0aW1lLm9yZy9cblxuXG5mdW5jdGlvbiBnZXRGb3JtYXRPcHRpb25zKHRpbWV6b25lLCBvcHRpb25zKXtcbiAgICBsZXQgdXNlT3B0aW9ucztcbiAgICBsZXQgdHogPSB1bmRlZmluZWQ7XG4gICAgaWYoXG4gICAgICAgIHRpbWV6b25lID09PSBudWxsIHx8IHRpbWV6b25lID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgTnVtYmVyLmlzRmluaXRlKHRpbWV6b25lKSB8fCB0eXBlb2YodGltZXpvbmUpID09PSBcInN0cmluZ1wiXG4gICAgKXtcbiAgICAgICAgdHogPSB0aW1lem9uZTtcbiAgICAgICAgdXNlT3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gICAgfWVsc2UgaWYodGltZXpvbmUgJiYgIW9wdGlvbnMpe1xuICAgICAgICB1c2VPcHRpb25zID0gdGltZXpvbmU7XG4gICAgICAgIHR6ID0gdXNlT3B0aW9ucy50ejtcbiAgICB9ZWxzZXtcbiAgICAgICAgdXNlT3B0aW9ucyA9IHt9O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICB0ejogdHosXG4gICAgICAgIG9wdGlvbnM6IHVzZU9wdGlvbnMsXG4gICAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0VGltZXpvbmVPZmZzZXRNaW51dGVzKGRhdGUsIHR6KXtcbiAgICBpZih0eiA9PT0gbnVsbCB8fCB0eiA9PT0gdW5kZWZpbmVkKXtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfWVsc2UgaWYodHogPj0gLTE2ICYmIHR6IDw9ICsxNil7XG4gICAgICAgIHJldHVybiBNYXRoLmZsb29yKDYwICogdHopO1xuICAgIH1lbHNlIGlmKE51bWJlci5pc0Zpbml0ZSh0eikpe1xuICAgICAgICByZXR1cm4gTWF0aC5mbG9vcih0eik7XG4gICAgfWVsc2UgaWYodHogPT09IFwibG9jYWxcIil7XG4gICAgICAgIHJldHVybiAtKGRhdGUgfHwgbmV3IERhdGUoKSkuZ2V0VGltZXpvbmVPZmZzZXQoKTtcbiAgICB9ZWxzZXtcbiAgICAgICAgY29uc3QgdHpVcHBlciA9IFN0cmluZyh0eikudG9VcHBlckNhc2UoKTtcbiAgICAgICAgaWYodHpVcHBlciBpbiBkZWZhdWx0VGltZXpvbmVOYW1lcyl7XG4gICAgICAgICAgICBjb25zdCBvZmZzZXQgPSBNYXRoLmZsb29yKDYwICogZGVmYXVsdFRpbWV6b25lTmFtZXNbdHpVcHBlcl0pO1xuICAgICAgICAgICAgaWYoTnVtYmVyLmlzRmluaXRlKG9mZnNldCkpe1xuICAgICAgICAgICAgICAgIHJldHVybiBvZmZzZXQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKGBVbnJlY29nbml6ZWQgdGltZXpvbmUgb3B0aW9uIFwiJHt0en1cIi5gKTtcbn1cblxuZnVuY3Rpb24gc3RyZnRpbWUoZGF0ZSwgZm9ybWF0LCB0aW1lem9uZSwgb3B0aW9ucyl7XG4gICAgaWYoTnVtYmVyLmlzRmluaXRlKGRhdGUpKXtcbiAgICAgICAgLy8gQWNjZXB0IHVuaXggdGltZXN0YW1wcyAobWlsbGlzZWNvbmRzIHNpbmNlIGVwb2NoKVxuICAgICAgICBkYXRlID0gbmV3IERhdGUoZGF0ZSk7XG4gICAgfWVsc2UgaWYoIWRhdGUpe1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBkYXRlIGlucHV0IHdhcyBwcm92aWRlZC5cIik7XG4gICAgfWVsc2UgaWYodHlwZW9mKGRhdGUudG9EYXRlKSA9PT0gXCJmdW5jdGlvblwiKXtcbiAgICAgICAgLy8gU3VwcG9ydCBkYXRlIG9iamVjdHMgZnJvbSBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9tb21lbnRcbiAgICAgICAgLy8gU3VwcG9ydCBkYXRlIG9iamVjdHMgZnJvbSBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9kYXlqc1xuICAgICAgICBkYXRlID0gZGF0ZS50b0RhdGUoKTtcbiAgICB9ZWxzZSBpZih0eXBlb2YoZGF0ZS50b0pTRGF0ZSkgPT09IFwiZnVuY3Rpb25cIil7XG4gICAgICAgIC8vIFN1cHBvcnQgZGF0ZSBvYmplY3RzIGZyb20gaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvbHV4b25cbiAgICAgICAgZGF0ZSA9IGRhdGUudG9KU0RhdGUoKTtcbiAgICB9XG4gICAgaWYoIShkYXRlIGluc3RhbmNlb2YgRGF0ZSkpe1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJGYWlsZWQgdG8gZ2V0IERhdGUgaW5zdGFuY2UgZnJvbSBkYXRlIGlucHV0LlwiKTtcbiAgICB9XG4gICAgY29uc3QgdG9rZW5zID0gVGltZXN0YW1wUGFyc2VyLnBhcnNlRm9ybWF0U3RyaW5nKGZvcm1hdCk7XG4gICAgY29uc3QgdXNlT3B0aW9ucyA9IGdldEZvcm1hdE9wdGlvbnModGltZXpvbmUsIG9wdGlvbnMpO1xuICAgIGNvbnN0IHRpbWV6b25lT2Zmc2V0TWludXRlcyA9IGdldFRpbWV6b25lT2Zmc2V0TWludXRlcyhkYXRlLCB1c2VPcHRpb25zLnR6KTtcbiAgICBjb25zdCB0ekRhdGUgPSBuZXcgRGF0ZShkYXRlKTtcbiAgICBpZih0aW1lem9uZU9mZnNldE1pbnV0ZXMgIT09IHVuZGVmaW5lZCl7XG4gICAgICAgIHR6RGF0ZS5zZXRVVENNaW51dGVzKFxuICAgICAgICAgICAgZGF0ZS5nZXRVVENNaW51dGVzKCkgK1xuICAgICAgICAgICAgdGltZXpvbmVPZmZzZXRNaW51dGVzXG4gICAgICAgICk7XG4gICAgfVxuICAgIGxldCBvdXRwdXQgPSBcIlwiO1xuICAgIGZvcihsZXQgdG9rZW4gb2YgdG9rZW5zKXtcbiAgICAgICAgaWYodG9rZW4gaW5zdGFuY2VvZiBEaXJlY3RpdmUpe1xuICAgICAgICAgICAgb3V0cHV0ICs9IHRva2VuLndyaXRlKHR6RGF0ZSwgXCJcIiwgdXNlT3B0aW9ucy5vcHRpb25zLCB0aW1lem9uZU9mZnNldE1pbnV0ZXMpO1xuICAgICAgICB9ZWxzZSBpZih0b2tlbiBpbnN0YW5jZW9mIERpcmVjdGl2ZS5Ub2tlbil7XG4gICAgICAgICAgICBvdXRwdXQgKz0gdG9rZW4ud3JpdGUodHpEYXRlLCB1c2VPcHRpb25zLm9wdGlvbnMsIHRpbWV6b25lT2Zmc2V0TWludXRlcyk7XG4gICAgICAgIH1lbHNle1xuICAgICAgICAgICAgb3V0cHV0ICs9IHRva2VuO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvdXRwdXQ7XG59XG5cbmZ1bmN0aW9uIHN0cnB0aW1lKHRpbWVzdGFtcCwgZm9ybWF0LCB0aW1lem9uZSwgb3B0aW9ucyl7XG4gICAgY29uc3QgdXNlT3B0aW9ucyA9IGdldEZvcm1hdE9wdGlvbnModGltZXpvbmUsIG9wdGlvbnMpO1xuICAgIGNvbnN0IHBhcnNlciA9IG5ldyBUaW1lc3RhbXBQYXJzZXIodGltZXN0YW1wLCBmb3JtYXQpO1xuICAgIGNvbnN0IHRpbWV6b25lT2Zmc2V0TWludXRlcyA9IGdldFRpbWV6b25lT2Zmc2V0TWludXRlcyh1bmRlZmluZWQsIHVzZU9wdGlvbnMudHopO1xuICAgIGlmKHRpbWV6b25lT2Zmc2V0TWludXRlcyAhPT0gdW5kZWZpbmVkKXtcbiAgICAgICAgcGFyc2VyLnRpbWV6b25lT2Zmc2V0TWludXRlcyA9IHRpbWV6b25lT2Zmc2V0TWludXRlcztcbiAgICB9XG4gICAgaWYodXNlT3B0aW9ucy5vcHRpb25zKXtcbiAgICAgICAgZm9yKGxldCBrZXkgaW4gdXNlT3B0aW9ucy5vcHRpb25zKXtcbiAgICAgICAgICAgIHBhcnNlcltrZXldID0gdXNlT3B0aW9ucy5vcHRpb25zW2tleV07XG4gICAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgcmVzdWx0ID0gcGFyc2VyLnBhcnNlKCk7XG4gICAgcmV0dXJuIHJlc3VsdC5nZXREYXRlKCk7XG59XG5cbmNvbnN0IHN0cnRpbWUgPSB7XG4gICAgc3RyZnRpbWU6IHN0cmZ0aW1lLFxuICAgIHN0cnB0aW1lOiBzdHJwdGltZSxcbn07XG5cbmNvbnN0IGVuZ2xpc2ggPSB7XG4gICAgZXJhTmFtZXM6IFtcbiAgICAgICAgXCJDRVwiLCBcIkJDRVwiXG4gICAgXSxcbiAgICBtZXJpZGllbU5hbWVzOiBbXG4gICAgICAgIFwiQU1cIiwgXCJQTVwiXG4gICAgXSxcbiAgICBzaG9ydFdlZWtkYXlOYW1lczogW1xuICAgICAgICBcIlN1blwiLCBcIk1vblwiLCBcIlR1ZVwiLCBcIldlZFwiLCBcIlRodVwiLCBcIkZyaVwiLCBcIlNhdFwiXG4gICAgXSxcbiAgICBsb25nV2Vla2RheU5hbWVzOiBbXG4gICAgICAgIFwiU3VuZGF5XCIsIFwiTW9uZGF5XCIsIFwiVHVlc2RheVwiLCBcIldlZG5lc2RheVwiLFxuICAgICAgICBcIlRodXJzZGF5XCIsIFwiRnJpZGF5XCIsIFwiU2F0dXJkYXlcIlxuICAgIF0sXG4gICAgc2hvcnRNb250aE5hbWVzOiBbXG4gICAgICAgIFwiSmFuXCIsIFwiRmViXCIsIFwiTWFyXCIsIFwiQXByXCIsIFwiTWF5XCIsIFwiSnVuXCIsXG4gICAgICAgIFwiSnVsXCIsIFwiQXVnXCIsIFwiU2VwXCIsIFwiT2N0XCIsIFwiTm92XCIsIFwiRGVjXCJcbiAgICBdLFxuICAgIGxvbmdNb250aE5hbWVzOiBbXG4gICAgICAgIFwiSmFudWFyeVwiLCBcIkZlYnJ1YXJ5XCIsIFwiTWFyY2hcIiwgXCJBcHJpbFwiLCBcIk1heVwiLCBcIkp1bmVcIixcbiAgICAgICAgXCJKdWx5XCIsIFwiQXVndXN0XCIsIFwiU2VwdGVtYmVyXCIsIFwiT2N0b2JlclwiLCBcIk5vdmVtYmVyXCIsIFwiRGVjZW1iZXJcIlxuICAgIF0sXG4gICAgb3JkaW5hbFRyYW5zZm9ybTogZnVuY3Rpb24obnVtYmVyKXtcbiAgICAgICAgY29uc3QgZGlnaXQgPSBNYXRoLmZsb29yKG51bWJlciAlIDEwKTtcbiAgICAgICAgaWYobnVtYmVyID4gMyAmJiBudW1iZXIgPD0gMjApIHJldHVybiBgJHtudW1iZXJ9dGhgO1xuICAgICAgICBpZihkaWdpdCA9PT0gMSkgcmV0dXJuIGAke251bWJlcn1zdGA7XG4gICAgICAgIGVsc2UgaWYoZGlnaXQgPT09IDIpIHJldHVybiBgJHtudW1iZXJ9bmRgO1xuICAgICAgICBlbHNlIGlmKGRpZ2l0ID09PSAzKSByZXR1cm4gYCR7bnVtYmVyfXJkYDtcbiAgICAgICAgZWxzZSByZXR1cm4gYCR7bnVtYmVyfXRoYDtcbiAgICB9LFxufTtcblxuXG5mdW5jdGlvbiBsZWZ0UGFkKGNoYXIsIGxlbmd0aCwgdGV4dCl7XG4gICAgbGV0IHN0cmluZyA9IFN0cmluZyh0ZXh0KTtcbiAgICB3aGlsZShzdHJpbmcubGVuZ3RoIDwgbGVuZ3RoKXtcbiAgICAgICAgc3RyaW5nID0gY2hhciArIHN0cmluZztcbiAgICB9XG4gICAgcmV0dXJuIHN0cmluZztcbn1cblxuZnVuY3Rpb24gd3JpdGVUaW1lem9uZU9mZnNldChvZmZzZXRNaW51dGVzLCBtb2RpZmllcil7XG4gICAgY29uc3QgYWJzT2Zmc2V0ID0gTWF0aC5hYnMob2Zmc2V0TWludXRlcyk7XG4gICAgY29uc3Qgc2lnbiA9IChvZmZzZXRNaW51dGVzID49IDAgPyBcIitcIiA6IFwiLVwiKTtcbiAgICBjb25zdCBob3VyID0gbGVmdFBhZChcIjBcIiwgMiwgTWF0aC5mbG9vcihhYnNPZmZzZXQgLyA2MCkpO1xuICAgIGNvbnN0IG1pbnV0ZSA9IGxlZnRQYWQoXCIwXCIsIDIsIGFic09mZnNldCAlIDYwKTtcbiAgICBpZihtb2RpZmllciA9PT0gXCI6OlwiKXtcbiAgICAgICAgcmV0dXJuIHNpZ24gKyBob3VyICsgXCI6XCIgKyBtaW51dGUgKyBcIjowMFwiO1xuICAgIH1lbHNlIGlmKG1vZGlmaWVyID09PSBcIjpcIil7XG4gICAgICAgIHJldHVybiBzaWduICsgaG91ciArIFwiOlwiICsgbWludXRlO1xuICAgIH1lbHNle1xuICAgICAgICByZXR1cm4gc2lnbiArIGhvdXIgKyBtaW51dGU7XG4gICAgfVxufVxuXG4vLyBHZXQgdGhlIGRheSBvZiB0aGUgd2VlayBnaXZlbiBhbiBpbnB1dCBEYXRlLlxuLy8gUmV0dXJucyAwIGZvciBTdW5kYXksIDEgZm9yIE1vbmRheSwgZXRjLlxuLy8gaHR0cHM6Ly93d3cucXVvcmEuY29tL0hvdy1kb2VzLVRvbW9oaWtvLVNha2Ftb3Rvcy1BbGdvcml0aG0td29yay9hbnN3ZXIvUmF6aW1hbi1ULVY/c3JpZD11MkhOWFxuZnVuY3Rpb24gZ2V0RGF5T2ZXZWVrKGRhdGUpe1xuICAgIGNvbnN0IG9mZnNldHMgPSBbMCwgMywgMiwgNSwgMCwgMywgNSwgMSwgNCwgNiwgMiwgNF07XG4gICAgbGV0IHllYXIgPSBkYXRlLmdldFVUQ0Z1bGxZZWFyKCk7XG4gICAgbGV0IG1vbnRoID0gZGF0ZS5nZXRVVENNb250aCgpO1xuICAgIGxldCBkYXkgPSBkYXRlLmdldFVUQ0RhdGUoKTtcbiAgICBpZihtb250aCA8IDIpe1xuICAgICAgICB5ZWFyLS07XG4gICAgfVxuICAgIHJldHVybiAoXG4gICAgICAgIG9mZnNldHNbbW9udGhdICsgeWVhciArIGRheSArXG4gICAgICAgIE1hdGguZmxvb3IoeWVhciAvIDQpIC1cbiAgICAgICAgTWF0aC5mbG9vcih5ZWFyIC8gMTAwKSArXG4gICAgICAgIE1hdGguZmxvb3IoeWVhciAvIDQwMClcbiAgICApICUgNztcbn1cblxuLy8gR2V0IHRoZSBkYXkgb2YgdGhlIHllYXIgYXMgYSBudW1iZXIgKDEtMzY2KVxuZnVuY3Rpb24gZ2V0RGF5T2ZZZWFyKGRhdGUpe1xuICAgIGNvbnN0IGxlbmd0aHMgPSBtb250aExlbmd0aHMuZm9yWWVhcihkYXRlLmdldFVUQ0Z1bGxZZWFyKCkpO1xuICAgIGNvbnN0IG1vbnRocyA9IGxlbmd0aHMuc2xpY2UoMCwgZGF0ZS5nZXRVVENNb250aCgpKTtcbiAgICByZXR1cm4gZGF0ZS5nZXRVVENEYXRlKCkgKyAoXG4gICAgICAgIChtb250aHMubGVuZ3RoICYmIG1vbnRocy5yZWR1Y2UoKGEsIGIpID0+IGEgKyBiKSkgfHwgMFxuICAgICk7XG59XG5cbi8vIEdldCB0aGUgd2VlayBvZiB0aGUgeWVhciAoc3RhcnRpbmcgd2l0aCBTdW5kYXkpICgwLTUzKVxuZnVuY3Rpb24gZ2V0V2Vla09mWWVhckZyb21TdW5kYXkoZGF0ZSl7XG4gICAgY29uc3QgZGF5T2ZZZWFyID0gZ2V0RGF5T2ZZZWFyKGRhdGUpO1xuICAgIGNvbnN0IGZpcnN0RGF5T2ZXZWVrID0gZ2V0Rmlyc3RXZWVrZGF5SW5ZZWFyKGRhdGUuZ2V0VVRDRnVsbFllYXIoKSk7XG4gICAgcmV0dXJuIE1hdGguZmxvb3IoKGRheU9mWWVhciArIChmaXJzdERheU9mV2VlayB8fCA3KSAtIDEpIC8gNyk7XG59XG5cbi8vIEdldCB0aGUgd2VlayBvZiB0aGUgeWVhciAoc3RhcnRpbmcgd2l0aCBNb25kYXkpICgwLTUzKVxuZnVuY3Rpb24gZ2V0V2Vla09mWWVhckZyb21Nb25kYXkoZGF0ZSl7XG4gICAgY29uc3QgZGF5T2ZZZWFyID0gZ2V0RGF5T2ZZZWFyKGRhdGUpO1xuICAgIGNvbnN0IGRheU9mV2VlayA9IGdldERheU9mV2VlayhkYXRlKTtcbiAgICBjb25zdCBmaXJzdERheU9mV2VlayA9IGdldEZpcnN0V2Vla2RheUluWWVhcihkYXRlLmdldFVUQ0Z1bGxZZWFyKCkpO1xuICAgIGNvbnN0IHN1bmRheVdlZWsgPSBNYXRoLmZsb29yKChkYXlPZlllYXIgKyAoZmlyc3REYXlPZldlZWsgfHwgNykgLSAxKSAvIDcpO1xuICAgIHJldHVybiBzdW5kYXlXZWVrIC0gKGRheU9mV2VlayA9PT0gMCA/IDEgOiAwKSArIChmaXJzdERheU9mV2VlayA9PT0gMSA/IDEgOiAwKTtcbn1cblxuZnVuY3Rpb24gZ2V0SVNPV2Vla3NJblllYXIoeWVhcil7XG4gICAgY29uc3QgcHJpb3JZZWFyID0geWVhciAtIDE7XG4gICAgY29uc3QgYSA9ICh5ZWFyICtcbiAgICAgICAgTWF0aC5mbG9vcih5ZWFyIC8gNCkgLVxuICAgICAgICBNYXRoLmZsb29yKHllYXIgLyAxMDApICtcbiAgICAgICAgTWF0aC5mbG9vcih5ZWFyIC8gNDAwKVxuICAgICkgJSA3O1xuICAgIGNvbnN0IGIgPSAocHJpb3JZZWFyICtcbiAgICAgICAgTWF0aC5mbG9vcihwcmlvclllYXIgLyA0KSAtXG4gICAgICAgIE1hdGguZmxvb3IocHJpb3JZZWFyIC8gMTAwKSArXG4gICAgICAgIE1hdGguZmxvb3IocHJpb3JZZWFyIC8gNDAwKVxuICAgICkgJSA3O1xuICAgIHJldHVybiBhID09PSA0IHx8IGIgPT09IDMgPyA1MyA6IDUyO1xufVxuXG4vLyBHZXQgdGhlIElTTyB3ZWVrIG9mIHRoZSB5ZWFyXG4vLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlXG4vLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMSNXZWVrX2RhdGVzXG5mdW5jdGlvbiBnZXRJU09XZWVrT2ZZZWFyKGRhdGUpe1xuICAgIGNvbnN0IHllYXIgPSBkYXRlLmdldFVUQ0Z1bGxZZWFyKCk7XG4gICAgY29uc3QgZGF5T2ZZZWFyID0gZ2V0RGF5T2ZZZWFyKGRhdGUpO1xuICAgIGNvbnN0IGRheU9mV2VlayA9IGdldERheU9mV2VlayhkYXRlKTtcbiAgICBjb25zdCB3ZWVrTnVtYmVyID0gTWF0aC5mbG9vcigoMTAgKyBkYXlPZlllYXIgLSAoZGF5T2ZXZWVrIHx8IDcpKSAvIDcpO1xuICAgIGlmKHdlZWtOdW1iZXIgPCAxKXtcbiAgICAgICAgcmV0dXJuIGdldElTT1dlZWtzSW5ZZWFyKHllYXIgLSAxKTtcbiAgICB9ZWxzZSBpZih3ZWVrTnVtYmVyID4gZ2V0SVNPV2Vla3NJblllYXIoeWVhcikpe1xuICAgICAgICByZXR1cm4gMTtcbiAgICB9ZWxzZXtcbiAgICAgICAgcmV0dXJuIHdlZWtOdW1iZXI7XG4gICAgfVxufVxuXG4vLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlXG5mdW5jdGlvbiBnZXRJU09XZWVrRGF0ZVllYXIoZGF0ZSl7XG4gICAgY29uc3QgeWVhciA9IGRhdGUuZ2V0VVRDRnVsbFllYXIoKTtcbiAgICBjb25zdCBkYXlPZlllYXIgPSBnZXREYXlPZlllYXIoZGF0ZSk7XG4gICAgY29uc3QgZGF5T2ZXZWVrID0gZ2V0RGF5T2ZXZWVrKGRhdGUpO1xuICAgIGNvbnN0IHdlZWtOdW1iZXIgPSBNYXRoLmZsb29yKCgxMCArIGRheU9mWWVhciAtIChkYXlPZldlZWsgfHwgNykpIC8gNyk7XG4gICAgaWYod2Vla051bWJlciA8IDEpe1xuICAgICAgICByZXR1cm4geWVhciAtIDE7XG4gICAgfWVsc2UgaWYod2Vla051bWJlciA+IGdldElTT1dlZWtzSW5ZZWFyKHllYXIpKXtcbiAgICAgICAgcmV0dXJuIHllYXIgKyAxO1xuICAgIH1lbHNle1xuICAgICAgICByZXR1cm4geWVhcjtcbiAgICB9XG59XG5cbmNsYXNzIERpcmVjdGl2ZXtcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKXtcbiAgICAgICAgLy8gTGlzdCBvZiBwb3NzaWJsZSBuYW1lcyBmb3IgdGhpcyBkaXJlY3RpdmVcbiAgICAgICAgdGhpcy5uYW1lcyA9IG9wdGlvbnMubmFtZXM7XG4gICAgICAgIC8vIFBhZCBudW1iZXJzIHRvIHRoaXMgbGVuZ3RoIChub3JtYWxseSlcbiAgICAgICAgdGhpcy5wYWRMZW5ndGggPSBvcHRpb25zLnBhZExlbmd0aDtcbiAgICAgICAgLy8gQSBsaWtlbHkgKGJ1dCBub3Qgc3RyaWN0KSBsZW5ndGggdG8gYmUgdXNlZCB3aGVuIHJlc29sdmluZ1xuICAgICAgICAvLyBhbWJpZ3VvdXMgcGFyc2luZyBpbnB1dHNcbiAgICAgICAgdGhpcy5saWtlbHlMZW5ndGggPSBvcHRpb25zLmxpa2VseUxlbmd0aDtcbiAgICAgICAgLy8gSW5kaWNhdGVzIHRoYXQgdGhpcyBkaXJlY3RpdmUgdXNlcyB0ZXh0IChhcyBvcHBvc2VkIHRvIG51bWJlcnMpXG4gICAgICAgIHRoaXMudGV4dCA9IG9wdGlvbnMudGV4dDtcbiAgICAgICAgLy8gVGhlIG1pbmltdW0gcGVybWl0dGVkIG51bWVyaWMgdmFsdWUgZm9yIGEgZGlyZWN0aXZlXG4gICAgICAgIHRoaXMubWluaW11bSA9IG9wdGlvbnMubWluaW11bTtcbiAgICAgICAgLy8gVGhlIG1heGltdW0gcGVybWl0dGVkIG51bWVyaWMgdmFsdWUgZm9yIGEgZGlyZWN0aXZlXG4gICAgICAgIHRoaXMubWF4aW11bSA9IG9wdGlvbnMubWF4aW11bTtcbiAgICAgICAgLy8gV2hldGhlciB0aGlzIGRpcmVjdGl2ZSByZXByZXNlbnRzIGEgbnVtYmVyIHRoYXQgY2FuIGJlIG5lZ2F0aXZlXG4gICAgICAgIHRoaXMuY2FuQmVOZWdhdGl2ZSA9IG9wdGlvbnMuY2FuQmVOZWdhdGl2ZTtcbiAgICAgICAgLy8gVGhpcyBkaXJlY3RpdmUgc2hvdWxkIGFsd2F5cyBiZSByZXdyaXR0ZW4gdXNpbmcgYSBjb21iaW5hdGlvbiBvZlxuICAgICAgICAvLyBvdGhlciBkaXJlY3RpdmVzXG4gICAgICAgIHRoaXMucmV3cml0ZSA9IG9wdGlvbnMucmV3cml0ZTtcbiAgICAgICAgLy8gRnVuY3Rpb24gdG8gcGFyc2UgY29udGVudCBmcm9tIGEgc3RyaW5nXG4gICAgICAgIHRoaXMucGFyc2VGdW5jdGlvbiA9IG9wdGlvbnMucGFyc2U7XG4gICAgICAgIC8vIEZ1bmN0aW9uIHRvIHdyaXRlIGNvbnRlbnQgYXMgYSBzdHJpbmcsIGdpdmVuIGEgZGF0ZSB0byBmb3JtYXRcbiAgICAgICAgdGhpcy53cml0ZUZ1bmN0aW9uID0gb3B0aW9ucy53cml0ZTtcbiAgICAgICAgLy8gRnVuY3Rpb24gdG8gc3RvcmUgYSBwYXJzZWQgbnVtZXJpYyB2YWx1ZVxuICAgICAgICB0aGlzLnN0b3JlRnVuY3Rpb24gPSBvcHRpb25zLnN0b3JlO1xuICAgIH1cbiAgICBzdGF0aWMgZ2V0QnlOYW1lKG5hbWUpe1xuICAgICAgICBmb3IobGV0IGRpcmVjdGl2ZSBvZiBEaXJlY3RpdmUubGlzdCl7XG4gICAgICAgICAgICBpZihkaXJlY3RpdmUubmFtZXMuaW5kZXhPZihuYW1lKSA+PSAwKXtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGlyZWN0aXZlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGlzT3JkaW5hbCgpe1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGdldENhbkJlTmVnYXRpdmUoKXtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FuQmVOZWdhdGl2ZTtcbiAgICB9XG4gICAgZ2V0TGlrZWx5TGVuZ3RoKCl7XG4gICAgICAgIHJldHVybiB0aGlzLmxpa2VseUxlbmd0aDtcbiAgICB9XG4gICAgZ2V0UmV3cml0ZVBhcnNlZChwYXJzZUZvcm1hdFN0cmluZyl7XG4gICAgICAgIGlmKCF0aGlzLnJld3JpdGVQYXJzZWRWYWx1ZSl7XG4gICAgICAgICAgICB0aGlzLnJld3JpdGVQYXJzZWRWYWx1ZSA9IHBhcnNlRm9ybWF0U3RyaW5nKHRoaXMucmV3cml0ZSk7XG4gICAgICAgICAgICBmb3IobGV0IHRva2VuIG9mIHRoaXMucmV3cml0ZVBhcnNlZFZhbHVlKXtcbiAgICAgICAgICAgICAgICB0b2tlbi5leHBhbmRlZEZyb20gPSB0aGlzO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnJld3JpdGVQYXJzZWRWYWx1ZTtcbiAgICB9XG4gICAgaGFzUGFyc2VGdW5jdGlvbigpe1xuICAgICAgICByZXR1cm4gISF0aGlzLnBhcnNlRnVuY3Rpb247XG4gICAgfVxuICAgIGhhc1N0b3JlRnVuY3Rpb24oKXtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5zdG9yZUZ1bmN0aW9uO1xuICAgIH1cbiAgICBwYXJzZShwYXJzZXIpe1xuICAgICAgICByZXR1cm4gdGhpcy5wYXJzZUZ1bmN0aW9uLmNhbGwocGFyc2VyKTtcbiAgICB9XG4gICAgc3RvcmUocGFyc2VyLCBudW1iZXIpe1xuICAgICAgICB0aGlzLnN0b3JlRnVuY3Rpb24uY2FsbChwYXJzZXIsIG51bWJlcik7XG4gICAgfVxuICAgIHdyaXRlKGRhdGUsIG1vZGlmaWVyLCBvcHRpb25zLCB0aW1lem9uZU9mZnNldE1pbnV0ZXMpe1xuICAgICAgICByZXR1cm4gdGhpcy53cml0ZUZ1bmN0aW9uKGRhdGUsIG1vZGlmaWVyLCBvcHRpb25zLCB0aW1lem9uZU9mZnNldE1pbnV0ZXMpO1xuICAgIH1cbiAgICBudW1iZXJJbkJvdW5kcyh2YWx1ZSl7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAoIU51bWJlci5pc0Zpbml0ZSh0aGlzLm1pbmltdW0pIHx8IHZhbHVlID49IHRoaXMubWluaW11bSkgJiZcbiAgICAgICAgICAgICghTnVtYmVyLmlzRmluaXRlKHRoaXMubWF4aW11bSkgfHwgdmFsdWUgPD0gdGhpcy5tYXhpbXVtKVxuICAgICAgICApO1xuICAgIH1cbiAgICBnZXRCb3VuZHNTdHJpbmcoKXtcbiAgICAgICAgaWYoTnVtYmVyLmlzRmluaXRlKHRoaXMubWluaW11bSkgJiYgTnVtYmVyLmlzRmluaXRlKHRoaXMubWF4aW11bSkpe1xuICAgICAgICAgICAgcmV0dXJuIGBbJHt0aGlzLm1pbmltdW19LCAke3RoaXMubWF4aW11bX1dYDtcbiAgICAgICAgfWVsc2UgaWYoTnVtYmVyLmlzRmluaXRlKHRoaXMubWluaW11bSkpe1xuICAgICAgICAgICAgcmV0dXJuIGBbJHt0aGlzLm1pbmltdW19LCAuLi5dYDtcbiAgICAgICAgfWVsc2UgaWYoTnVtYmVyLmlzRmluaXRlKHRoaXMubWF4aW11bSkpe1xuICAgICAgICAgICAgcmV0dXJuIGBbLi4uLCAke3RoaXMubWF4aW11bX1dYDtcbiAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgfVxuICAgIHRvU3RyaW5nKCl7XG4gICAgICAgIHJldHVybiBcIiVcIiArIHRoaXMubmFtZXNbMF07XG4gICAgfVxufVxuXG5EaXJlY3RpdmUuVG9rZW4gPSBjbGFzcyBEaXJlY3RpdmVUb2tlbntcbiAgICBjb25zdHJ1Y3Rvcihtb2RpZmllciwgZGlyZWN0aXZlKXtcbiAgICAgICAgdGhpcy5tb2RpZmllciA9IG1vZGlmaWVyO1xuICAgICAgICB0aGlzLmRpcmVjdGl2ZSA9IGRpcmVjdGl2ZTtcbiAgICAgICAgdGhpcy5leHBhbmRlZEZyb20gPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGlzT3JkaW5hbCgpe1xuICAgICAgICByZXR1cm4gdGhpcy5tb2RpZmllciA9PT0gXCI6XCI7XG4gICAgfVxuICAgIGdldENhbkJlTmVnYXRpdmUoKXtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlyZWN0aXZlLmNhbkJlTmVnYXRpdmU7XG4gICAgfVxuICAgIGdldExpa2VseUxlbmd0aCgpe1xuICAgICAgICByZXR1cm4gdGhpcy5kaXJlY3RpdmUubGlrZWx5TGVuZ3RoO1xuICAgIH1cbiAgICBoYXNQYXJzZUZ1bmN0aW9uKCl7XG4gICAgICAgIHJldHVybiB0aGlzLmRpcmVjdGl2ZS5oYXNQYXJzZUZ1bmN0aW9uKCk7XG4gICAgfVxuICAgIGhhc1N0b3JlRnVuY3Rpb24oKXtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlyZWN0aXZlLmhhc1N0b3JlRnVuY3Rpb24oKTtcbiAgICB9XG4gICAgcGFyc2UocGFyc2VyKXtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlyZWN0aXZlLnBhcnNlRnVuY3Rpb24uY2FsbChwYXJzZXIsIHRoaXMubW9kaWZpZXIpO1xuICAgIH1cbiAgICBzdG9yZShwYXJzZXIsIG51bWJlcil7XG4gICAgICAgIHRoaXMuZGlyZWN0aXZlLnN0b3JlRnVuY3Rpb24uY2FsbChwYXJzZXIsIG51bWJlcik7XG4gICAgfVxuICAgIHdyaXRlKGRhdGUsIG9wdGlvbnMsIHRpbWV6b25lT2Zmc2V0TWludXRlcyl7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuZGlyZWN0aXZlLndyaXRlKGRhdGUsIHRoaXMubW9kaWZpZXIsIG9wdGlvbnMsIHRpbWV6b25lT2Zmc2V0TWludXRlcyk7XG4gICAgICAgIGlmKHRoaXMubW9kaWZpZXIgPT09IFwiXlwiKXtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdFN0cmluZyA9IFN0cmluZyhyZXN1bHQpO1xuICAgICAgICAgICAgaWYodHlwZW9mKHJlc3VsdCkgPT09IFwibnVtYmVyXCIpIHJldHVybiByZXN1bHRTdHJpbmc7XG4gICAgICAgICAgICBjb25zdCB1cHBlciA9IHJlc3VsdFN0cmluZy50b1VwcGVyQ2FzZSgpO1xuICAgICAgICAgICAgcmV0dXJuIHVwcGVyICE9PSByZXN1bHRTdHJpbmcgPyB1cHBlciA6IHJlc3VsdFN0cmluZy50b0xvd2VyQ2FzZSgpO1xuICAgICAgICB9ZWxzZSBpZih0aGlzLm1vZGlmaWVyID09PSBcIl9cIiAmJiB0aGlzLmRpcmVjdGl2ZS5wYWRMZW5ndGgpe1xuICAgICAgICAgICAgcmV0dXJuIGxlZnRQYWQoXCIgXCIsIHRoaXMuZGlyZWN0aXZlLnBhZExlbmd0aCwgcmVzdWx0KTtcbiAgICAgICAgfWVsc2UgaWYodGhpcy5tb2RpZmllciA9PT0gXCJfXCIgJiYgdGhpcy5kaXJlY3RpdmUudGV4dCl7XG4gICAgICAgICAgICByZXR1cm4gU3RyaW5nKHJlc3VsdCkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgfWVsc2UgaWYodGhpcy5tb2RpZmllciA9PT0gXCItXCIgJiYgdGhpcy5kaXJlY3RpdmUucGFkTGVuZ3RoKXtcbiAgICAgICAgICAgIHJldHVybiBTdHJpbmcocmVzdWx0KTtcbiAgICAgICAgfWVsc2UgaWYodGhpcy5tb2RpZmllciA9PT0gXCI6XCIgJiYgIXRoaXMuZGlyZWN0aXZlLnRleHQpe1xuICAgICAgICAgICAgY29uc3QgdHJhbnNmb3JtID0gKChvcHRpb25zICYmIG9wdGlvbnMub3JkaW5hbFRyYW5zZm9ybSkgfHxcbiAgICAgICAgICAgICAgICBlbmdsaXNoLm9yZGluYWxUcmFuc2Zvcm1cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm4gdHJhbnNmb3JtKHJlc3VsdCk7XG4gICAgICAgIH1lbHNlIGlmKCF0aGlzLmRpcmVjdGl2ZS50ZXh0ICYmIHRoaXMuZGlyZWN0aXZlLnBhZExlbmd0aCl7XG4gICAgICAgICAgICByZXR1cm4gKHJlc3VsdCA+PSAwID9cbiAgICAgICAgICAgICAgICBsZWZ0UGFkKFwiMFwiLCB0aGlzLmRpcmVjdGl2ZS5wYWRMZW5ndGgsIHJlc3VsdCkgOlxuICAgICAgICAgICAgICAgIGAtJHtsZWZ0UGFkKFwiMFwiLCB0aGlzLmRpcmVjdGl2ZS5wYWRMZW5ndGgsIC1yZXN1bHQpfWBcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1lbHNle1xuICAgICAgICAgICAgcmV0dXJuIFN0cmluZyhyZXN1bHQpO1xuICAgICAgICB9XG4gICAgfVxuICAgIG51bWJlckluQm91bmRzKHZhbHVlKXtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlyZWN0aXZlLm51bWJlckluQm91bmRzKHZhbHVlKTtcbiAgICB9XG4gICAgZ2V0Qm91bmRzU3RyaW5nKCl7XG4gICAgICAgIHJldHVybiB0aGlzLmRpcmVjdGl2ZS5nZXRCb3VuZHNTdHJpbmcoKTtcbiAgICB9XG4gICAgdG9TdHJpbmcoKXtcbiAgICAgICAgcmV0dXJuIFwiJVwiICsgdGhpcy5tb2RpZmllciArIHRoaXMuZGlyZWN0aXZlLm5hbWVzWzBdO1xuICAgIH1cbn1cblxuRGlyZWN0aXZlLlN0cmluZ1Rva2VuID0gY2xhc3MgRGlyZWN0aXZlU3RyaW5nVG9rZW57XG4gICAgY29uc3RydWN0b3Ioc3RyaW5nKXtcbiAgICAgICAgdGhpcy5zdHJpbmcgPSBzdHJpbmcgfHwgXCJcIjtcbiAgICAgICAgdGhpcy5leHBhbmRlZEZyb20gPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGFkZENoYXJhY3RlcihjaCl7XG4gICAgICAgIHRoaXMuc3RyaW5nICs9IGNoO1xuICAgIH1cbiAgICB0b1N0cmluZygpe1xuICAgICAgICByZXR1cm4gdGhpcy5zdHJpbmc7XG4gICAgfVxufVxuXG5EaXJlY3RpdmUubGlzdCA9IFtcbiAgICAvLyBBYmJyZXZpYXRlZCB3ZWVrZGF5IG5hbWVcbiAgICBuZXcgRGlyZWN0aXZlKHtcbiAgICAgICAgbmFtZXM6IFtcImFcIl0sXG4gICAgICAgIHRleHQ6IHRydWUsXG4gICAgICAgIHBhcnNlOiBmdW5jdGlvbigpe1xuICAgICAgICAgICAgdGhpcy5kYXlPZldlZWsgPSB0aGlzLnBhcnNlV2Vla2RheU5hbWUodGhpcyk7XG4gICAgICAgIH0sXG4gICAgICAgIHdyaXRlOiBmdW5jdGlvbihkYXRlLCBtb2RpZmllciwgb3B0aW9ucyl7XG4gICAgICAgICAgICBjb25zdCBuYW1lcyA9ICgob3B0aW9ucyAmJiBvcHRpb25zLnNob3J0V2Vla2RheU5hbWVzKSB8fFxuICAgICAgICAgICAgICAgIGVuZ2xpc2guc2hvcnRXZWVrZGF5TmFtZXNcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm4gbmFtZXNbZGF0ZS5nZXRVVENEYXkoKSAlIDddO1xuICAgICAgICB9LFxuICAgIH0pLFxuICAgIC8vIExvbmcgd2Vla2RheSBuYW1lXG4gICAgbmV3IERpcmVjdGl2ZSh7XG4gICAgICAgIG5hbWVzOiBbXCJBXCJdLFxuICAgICAgICB0ZXh0OiB0cnVlLFxuICAgICAgICBwYXJzZTogZnVuY3Rpb24oKXtcbiAgICAgICAgICAgIHRoaXMuZGF5T2ZXZWVrID0gdGhpcy5wYXJzZVdlZWtkYXlOYW1lKHRoaXMpO1xuICAgICAgICB9LFxuICAgICAgICB3cml0ZTogZnVuY3Rpb24oZGF0ZSwgbW9kaWZpZXIsIG9wdGlvbnMpe1xuICAgICAgICAgICAgY29uc3QgbmFtZXMgPSAoKG9wdGlvbnMgJiYgb3B0aW9ucy5sb25nV2Vla2RheU5hbWVzKSB8fFxuICAgICAgICAgICAgICAgIGVuZ2xpc2gubG9uZ1dlZWtkYXlOYW1lc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybiBuYW1lc1tkYXRlLmdldFVUQ0RheSgpICUgN107XG4gICAgICAgIH0sXG4gICAgfSksXG4gICAgLy8gQWJicmV2aWF0ZWQgbW9udGggbmFtZVxuICAgIG5ldyBEaXJlY3RpdmUoe1xuICAgICAgICBuYW1lczogW1wiYlwiLCBcImhcIl0sXG4gICAgICAgIHRleHQ6IHRydWUsXG4gICAgICAgIHBhcnNlOiBmdW5jdGlvbigpe1xuICAgICAgICAgICAgdGhpcy5tb250aCA9IDEgKyB0aGlzLnBhcnNlTW9udGhOYW1lKHRoaXMpO1xuICAgICAgICB9LFxuICAgICAgICB3cml0ZTogZnVuY3Rpb24oZGF0ZSwgbW9kaWZpZXIsIG9wdGlvbnMpe1xuICAgICAgICAgICAgY29uc3QgbmFtZXMgPSAoKG9wdGlvbnMgJiYgb3B0aW9ucy5zaG9ydE1vbnRoTmFtZXMpIHx8XG4gICAgICAgICAgICAgICAgZW5nbGlzaC5zaG9ydE1vbnRoTmFtZXNcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm4gbmFtZXNbZGF0ZS5nZXRVVENNb250aCgpICUgMTJdO1xuICAgICAgICB9LFxuICAgIH0pLFxuICAgIC8vIExvbmcgbW9udGggbmFtZVxuICAgIG5ldyBEaXJlY3RpdmUoe1xuICAgICAgICBuYW1lczogW1wiQlwiXSxcbiAgICAgICAgdGV4dDogdHJ1ZSxcbiAgICAgICAgcGFyc2U6IGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICB0aGlzLm1vbnRoID0gMSArIHRoaXMucGFyc2VNb250aE5hbWUodGhpcyk7XG4gICAgICAgIH0sXG4gICAgICAgIHdyaXRlOiBmdW5jdGlvbihkYXRlLCBtb2RpZmllciwgb3B0aW9ucyl7XG4gICAgICAgICAgICBjb25zdCBuYW1lcyA9ICgob3B0aW9ucyAmJiBvcHRpb25zLmxvbmdNb250aE5hbWVzKSB8fFxuICAgICAgICAgICAgICAgIGVuZ2xpc2gubG9uZ01vbnRoTmFtZXNcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm4gbmFtZXNbZGF0ZS5nZXRVVENNb250aCgpICUgMTJdO1xuICAgICAgICB9LFxuICAgIH0pLFxuICAgIC8vIENvbWJpbmF0aW9uIGRhdGUgYW5kIHRpbWUsIHNhbWUgYXMgXCIlYSAlYiAlZSAlSDolTTolUyAlWVwiXG4gICAgbmV3IERpcmVjdGl2ZSh7XG4gICAgICAgIG5hbWVzOiBbXCJjXCJdLFxuICAgICAgICByZXdyaXRlOiBcIiVhICViICVlICVIOiVNOiVTICVZXCIsXG4gICAgfSksXG4gICAgLy8gQ2VudHVyeSAoY29tcGxlbWVudHMgJXkpXG4gICAgbmV3IERpcmVjdGl2ZSh7XG4gICAgICAgIG5hbWVzOiBbXCJDXCJdLFxuICAgICAgICBsaWtlbHlMZW5ndGg6IDIsXG4gICAgICAgIGNhbkJlTmVnYXRpdmU6IHRydWUsXG4gICAgICAgIHN0b3JlOiBmdW5jdGlvbihudW1iZXIpe1xuICAgICAgICAgICAgdGhpcy5jZW50dXJ5ID0gbnVtYmVyO1xuICAgICAgICB9LFxuICAgICAgICB3cml0ZTogZnVuY3Rpb24oZGF0ZSl7XG4gICAgICAgICAgICByZXR1cm4gTWF0aC5mbG9vcihkYXRlLmdldFVUQ0Z1bGxZZWFyKCkgLyAxMDApO1xuICAgICAgICB9LFxuICAgIH0pLFxuICAgIC8vIFR3by1kaWdpdCBkYXkgb2YgbW9udGhcbiAgICBuZXcgRGlyZWN0aXZlKHtcbiAgICAgICAgbmFtZXM6IFtcImRcIl0sXG4gICAgICAgIHBhZExlbmd0aDogMixcbiAgICAgICAgbGlrZWx5TGVuZ3RoOiAyLFxuICAgICAgICBtaW5pbXVtOiAxLFxuICAgICAgICBtYXhpbXVtOiAzMSxcbiAgICAgICAgc3RvcmU6IGZ1bmN0aW9uKG51bWJlcil7XG4gICAgICAgICAgICB0aGlzLmRheU9mTW9udGggPSBudW1iZXI7XG4gICAgICAgIH0sXG4gICAgICAgIHdyaXRlOiBmdW5jdGlvbihkYXRlKXtcbiAgICAgICAgICAgIHJldHVybiBkYXRlLmdldFVUQ0RhdGUoKTtcbiAgICAgICAgfSxcbiAgICB9KSxcbiAgICAvLyBTYW1lIGFzICVtLyVkLyV5XG4gICAgbmV3IERpcmVjdGl2ZSh7XG4gICAgICAgIG5hbWVzOiBbXCJEXCIsIFwieFwiXSxcbiAgICAgICAgcmV3cml0ZTogXCIlbS8lZC8leVwiLFxuICAgIH0pLFxuICAgIC8vIERheSBvZiBtb250aCBwYWRkZWQgd2l0aCBzcGFjZXMgKHNhbWUgYXMgXCIlX2RcIilcbiAgICBuZXcgRGlyZWN0aXZlKHtcbiAgICAgICAgbmFtZXM6IFtcImVcIl0sXG4gICAgICAgIGxpa2VseUxlbmd0aDogMixcbiAgICAgICAgbWluaW11bTogMSxcbiAgICAgICAgbWF4aW11bTogMzEsXG4gICAgICAgIHN0b3JlOiBmdW5jdGlvbihudW1iZXIpe1xuICAgICAgICAgICAgdGhpcy5kYXlPZk1vbnRoID0gbnVtYmVyO1xuICAgICAgICB9LFxuICAgICAgICB3cml0ZTogZnVuY3Rpb24oZGF0ZSwgbW9kaWZpZXIpe1xuICAgICAgICAgICAgaWYoIW1vZGlmaWVyKXtcbiAgICAgICAgICAgICAgICByZXR1cm4gbGVmdFBhZChcIiBcIiwgMiwgZGF0ZS5nZXRVVENEYXRlKCkpO1xuICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGUuZ2V0VVRDRGF0ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgIH0pLFxuICAgIC8vIFNpeC1kaWdpdCBtaWNyb3NlY29uZFxuICAgIG5ldyBEaXJlY3RpdmUoe1xuICAgICAgICBuYW1lczogW1wiZlwiXSxcbiAgICAgICAgcGFkTGVuZ3RoOiA2LFxuICAgICAgICBsaWtlbHlMZW5ndGg6IDYsXG4gICAgICAgIG1pbmltdW06IDAsXG4gICAgICAgIG1heGltdW06IDk5OTk5OSxcbiAgICAgICAgc3RvcmU6IGZ1bmN0aW9uKG51bWJlcil7XG4gICAgICAgICAgICB0aGlzLm1pY3Jvc2Vjb25kID0gbnVtYmVyO1xuICAgICAgICB9LFxuICAgICAgICB3cml0ZTogZnVuY3Rpb24oZGF0ZSl7XG4gICAgICAgICAgICByZXR1cm4gMTAwMCAqIGRhdGUuZ2V0VVRDTWlsbGlzZWNvbmRzKCk7XG4gICAgICAgIH0sXG4gICAgfSksXG4gICAgLy8gU2FtZSBhcyAlWS0lbS0lZFxuICAgIG5ldyBEaXJlY3RpdmUoe1xuICAgICAgICBuYW1lczogW1wiRlwiXSxcbiAgICAgICAgcmV3cml0ZTogXCIlWS0lbS0lZFwiLFxuICAgIH0pLFxuICAgIC8vIFR3by1kaWdpdCBJU08gd2VlayB5ZWFyXG4gICAgbmV3IERpcmVjdGl2ZSh7XG4gICAgICAgIG5hbWVzOiBbXCJnXCJdLFxuICAgICAgICBsaWtlbHlMZW5ndGg6IDIsXG4gICAgICAgIHN0b3JlOiBmdW5jdGlvbihudW1iZXIpe1xuICAgICAgICAgICAgdGhpcy5pc29Ud29EaWdpdFllYXIgPSBudW1iZXI7XG4gICAgICAgIH0sXG4gICAgICAgIHdyaXRlOiBmdW5jdGlvbihkYXRlKXtcbiAgICAgICAgICAgIHJldHVybiBnZXRJU09XZWVrRGF0ZVllYXIoZGF0ZSkgJSAxMDA7XG4gICAgICAgIH0sXG4gICAgfSksXG4gICAgLy8gRnVsbCBJU08gd2VlayB5ZWFyXG4gICAgbmV3IERpcmVjdGl2ZSh7XG4gICAgICAgIG5hbWVzOiBbXCJHXCJdLFxuICAgICAgICBwYWRMZW5ndGg6IDQsXG4gICAgICAgIGxpa2VseUxlbmd0aDogNCxcbiAgICAgICAgY2FuQmVOZWdhdGl2ZTogdHJ1ZSxcbiAgICAgICAgc3RvcmU6IGZ1bmN0aW9uKG51bWJlcil7XG4gICAgICAgICAgICB0aGlzLmlzb1llYXIgPSBudW1iZXI7XG4gICAgICAgIH0sXG4gICAgICAgIHdyaXRlOiBmdW5jdGlvbihkYXRlKXtcbiAgICAgICAgICAgIHJldHVybiBnZXRJU09XZWVrRGF0ZVllYXIoZGF0ZSk7XG4gICAgICAgIH0sXG4gICAgfSksXG4gICAgLy8gVHdvLWRpZ2l0IGhvdXIgKDAtMjMpXG4gICAgbmV3IERpcmVjdGl2ZSh7XG4gICAgICAgIG5hbWVzOiBbXCJIXCIsIFwia1wiXSxcbiAgICAgICAgcGFkTGVuZ3RoOiAyLFxuICAgICAgICBsaWtlbHlMZW5ndGg6IDIsXG4gICAgICAgIG1pbmltdW06IDAsXG4gICAgICAgIG1heGltdW06IDIzLFxuICAgICAgICBzdG9yZTogZnVuY3Rpb24obnVtYmVyKXtcbiAgICAgICAgICAgIHRoaXMuaG91ciA9IG51bWJlcjtcbiAgICAgICAgfSxcbiAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKGRhdGUpe1xuICAgICAgICAgICAgcmV0dXJuIGRhdGUuZ2V0VVRDSG91cnMoKTtcbiAgICAgICAgfSxcbiAgICB9KSxcbiAgICAvLyBUd28tZGlnaXQgaG91ciAoMS0xMikgdG8gYmUgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoICVwIChBTS9QTSlcbiAgICBuZXcgRGlyZWN0aXZlKHtcbiAgICAgICAgbmFtZXM6IFtcIklcIiwgXCJsXCJdLFxuICAgICAgICBwYWRMZW5ndGg6IDIsXG4gICAgICAgIGxpa2VseUxlbmd0aDogMixcbiAgICAgICAgbWluaW11bTogMSxcbiAgICAgICAgbWF4aW11bTogMTIsXG4gICAgICAgIHN0b3JlOiBmdW5jdGlvbihudW1iZXIpe1xuICAgICAgICAgICAgdGhpcy5ob3VyID0gbnVtYmVyO1xuICAgICAgICB9LFxuICAgICAgICB3cml0ZTogZnVuY3Rpb24oZGF0ZSl7XG4gICAgICAgICAgICByZXR1cm4gKGRhdGUuZ2V0VVRDSG91cnMoKSAlIDEyKSB8fCAxMjtcbiAgICAgICAgfSxcbiAgICB9KSxcbiAgICAvLyBEYXkgaW4geWVhclxuICAgIG5ldyBEaXJlY3RpdmUoe1xuICAgICAgICBuYW1lczogW1wialwiXSxcbiAgICAgICAgcGFkTGVuZ3RoOiAzLFxuICAgICAgICBsaWtlbHlMZW5ndGg6IDMsXG4gICAgICAgIG1pbmltdW06IDEsXG4gICAgICAgIG1heGltdW06IDM2NixcbiAgICAgICAgc3RvcmU6IGZ1bmN0aW9uKG51bWJlcil7XG4gICAgICAgICAgICB0aGlzLmRheU9mWWVhciA9IG51bWJlcjtcbiAgICAgICAgfSxcbiAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKGRhdGUpe1xuICAgICAgICAgICAgcmV0dXJuIGdldERheU9mWWVhcihkYXRlKTtcbiAgICAgICAgfSxcbiAgICB9KSxcbiAgICAvLyBUaHJlZS1kaWdpdCBtaWxsaXNlY29uZFxuICAgIG5ldyBEaXJlY3RpdmUoe1xuICAgICAgICBuYW1lczogW1wiTFwiXSxcbiAgICAgICAgcGFkTGVuZ3RoOiAzLFxuICAgICAgICBsaWtlbHlMZW5ndGg6IDMsXG4gICAgICAgIG1pbmltdW06IDAsXG4gICAgICAgIG1heGltdW06IDk5OSxcbiAgICAgICAgc3RvcmU6IGZ1bmN0aW9uKG51bWJlcil7XG4gICAgICAgICAgICB0aGlzLm1pbGxpc2Vjb25kID0gbnVtYmVyO1xuICAgICAgICB9LFxuICAgICAgICB3cml0ZTogZnVuY3Rpb24oZGF0ZSl7XG4gICAgICAgICAgICByZXR1cm4gZGF0ZS5nZXRVVENNaWxsaXNlY29uZHMoKTtcbiAgICAgICAgfSxcbiAgICB9KSxcbiAgICAvLyBUd28tZGlnaXQgbW9udGggbnVtYmVyICgxLTEyKVxuICAgIG5ldyBEaXJlY3RpdmUoe1xuICAgICAgICBuYW1lczogW1wibVwiXSxcbiAgICAgICAgcGFkTGVuZ3RoOiAyLFxuICAgICAgICBsaWtlbHlMZW5ndGg6IDIsXG4gICAgICAgIG1pbmltdW06IDEsXG4gICAgICAgIG1heGltdW06IDEyLFxuICAgICAgICBzdG9yZTogZnVuY3Rpb24obnVtYmVyKXtcbiAgICAgICAgICAgIHRoaXMubW9udGggPSBudW1iZXI7XG4gICAgICAgIH0sXG4gICAgICAgIHdyaXRlOiBmdW5jdGlvbihkYXRlKXtcbiAgICAgICAgICAgIHJldHVybiAxICsgZGF0ZS5nZXRVVENNb250aCgpO1xuICAgICAgICB9LFxuICAgIH0pLFxuICAgIC8vIFR3by1kaWdpdCBtaW51dGUgKDAtNTkpXG4gICAgbmV3IERpcmVjdGl2ZSh7XG4gICAgICAgIG5hbWVzOiBbXCJNXCJdLFxuICAgICAgICBwYWRMZW5ndGg6IDIsXG4gICAgICAgIGxpa2VseUxlbmd0aDogMixcbiAgICAgICAgbWluaW11bTogMCxcbiAgICAgICAgbWF4aW11bTogNTksXG4gICAgICAgIHN0b3JlOiBmdW5jdGlvbihudW1iZXIpe1xuICAgICAgICAgICAgdGhpcy5taW51dGUgPSBudW1iZXI7XG4gICAgICAgIH0sXG4gICAgICAgIHdyaXRlOiBmdW5jdGlvbihkYXRlKXtcbiAgICAgICAgICAgIHJldHVybiBkYXRlLmdldFVUQ01pbnV0ZXMoKTtcbiAgICAgICAgfSxcbiAgICB9KSxcbiAgICAvLyBBTSBvciBQTSAodXBwZXJjYXNlKVxuICAgIG5ldyBEaXJlY3RpdmUoe1xuICAgICAgICBuYW1lczogW1wicFwiXSxcbiAgICAgICAgdGV4dDogdHJ1ZSxcbiAgICAgICAgcGFyc2U6IGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICB0aGlzLm1lcmlkaWVtID0gdGhpcy5wYXJzZU1lcmlkaWVtTmFtZSgpO1xuICAgICAgICB9LFxuICAgICAgICB3cml0ZTogZnVuY3Rpb24oZGF0ZSwgbW9kaWZpZXIsIG9wdGlvbnMpe1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSBkYXRlLmdldFVUQ0hvdXJzKCkgPCAxMiA/IDAgOiAxO1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAob3B0aW9ucyAmJiBvcHRpb25zLm1lcmlkaWVtTmFtZXMpIHx8IGVuZ2xpc2gubWVyaWRpZW1OYW1lc1xuICAgICAgICAgICAgKVtpbmRleF07XG4gICAgICAgIH0sXG4gICAgfSksXG4gICAgLy8gQU0gb3IgUE0gKGxvd2VyY2FzZSlcbiAgICBuZXcgRGlyZWN0aXZlKHtcbiAgICAgICAgbmFtZXM6IFtcIlBcIl0sXG4gICAgICAgIGxpa2VseUxlbmd0aDogMixcbiAgICAgICAgdGV4dDogdHJ1ZSxcbiAgICAgICAgcGFyc2U6IGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICB0aGlzLm1lcmlkaWVtID0gdGhpcy5wYXJzZU1lcmlkaWVtTmFtZSgpO1xuICAgICAgICB9LFxuICAgICAgICB3cml0ZTogZnVuY3Rpb24oZGF0ZSwgbW9kaWZpZXIsIG9wdGlvbnMpe1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSBkYXRlLmdldFVUQ0hvdXJzKCkgPCAxMiA/IDAgOiAxO1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAob3B0aW9ucyAmJiBvcHRpb25zLm1lcmlkaWVtTmFtZXMpIHx8IGVuZ2xpc2gubWVyaWRpZW1OYW1lc1xuICAgICAgICAgICAgKVtpbmRleF0udG9Mb3dlckNhc2UoKTtcbiAgICAgICAgfSxcbiAgICB9KSxcbiAgICAvLyBOdW1iZXIgb2YgbWlyY29zZWNvbmRzIHNpbmNlIGVwb2NoXG4gICAgbmV3IERpcmVjdGl2ZSh7XG4gICAgICAgIG5hbWVzOiBbXCJRXCJdLFxuICAgICAgICBjYW5CZU5lZ2F0aXZlOiB0cnVlLFxuICAgICAgICBzdG9yZTogZnVuY3Rpb24obnVtYmVyKXtcbiAgICAgICAgICAgIHRoaXMubWljcm9zZWNvbmRzU2luY2VFcG9jaCA9IG51bWJlcjtcbiAgICAgICAgfSxcbiAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKGRhdGUpe1xuICAgICAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IoZGF0ZS5nZXRUaW1lKCkgKiAxMDAwKTtcbiAgICAgICAgfSxcbiAgICB9KSxcbiAgICAvLyBTYW1lIGFzIFwiJUk6JU06JVMgJXBcIlxuICAgIG5ldyBEaXJlY3RpdmUoe1xuICAgICAgICBuYW1lczogW1wiclwiXSxcbiAgICAgICAgcmV3cml0ZTogXCIlSTolTTolUyAlcFwiLFxuICAgIH0pLFxuICAgIC8vIFNhbWUgYXMgXCIlSDolTVwiXG4gICAgbmV3IERpcmVjdGl2ZSh7XG4gICAgICAgIG5hbWVzOiBbXCJSXCJdLFxuICAgICAgICByZXdyaXRlOiBcIiVIOiVNXCIsXG4gICAgfSksXG4gICAgLy8gTnVtYmVyIG9mIHNlY29uZHMgc2luY2UgZXBvY2hcbiAgICBuZXcgRGlyZWN0aXZlKHtcbiAgICAgICAgbmFtZXM6IFtcInNcIl0sXG4gICAgICAgIGNhbkJlTmVnYXRpdmU6IHRydWUsXG4gICAgICAgIHN0b3JlOiBmdW5jdGlvbihudW1iZXIpe1xuICAgICAgICAgICAgdGhpcy5zZWNvbmRzU2luY2VFcG9jaCA9IG51bWJlcjtcbiAgICAgICAgfSxcbiAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKGRhdGUpe1xuICAgICAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IoZGF0ZS5nZXRUaW1lKCkgLyAxMDAwKTtcbiAgICAgICAgfSxcbiAgICB9KSxcbiAgICAvLyBUd28tZGlnaXQgc2Vjb25kICgwLTYxKVxuICAgIG5ldyBEaXJlY3RpdmUoe1xuICAgICAgICBuYW1lczogW1wiU1wiXSxcbiAgICAgICAgcGFkTGVuZ3RoOiAyLFxuICAgICAgICBsaWtlbHlMZW5ndGg6IDIsXG4gICAgICAgIG1pbmltdW06IDAsXG4gICAgICAgIG1heGltdW06IDYxLFxuICAgICAgICBzdG9yZTogZnVuY3Rpb24obnVtYmVyKXtcbiAgICAgICAgICAgIHRoaXMuc2Vjb25kID0gbnVtYmVyO1xuICAgICAgICB9LFxuICAgICAgICB3cml0ZTogZnVuY3Rpb24oZGF0ZSl7XG4gICAgICAgICAgICByZXR1cm4gTWF0aC5taW4oNTksIGRhdGUuZ2V0VVRDU2Vjb25kcygpKTtcbiAgICAgICAgfSxcbiAgICB9KSxcbiAgICAvLyBTYW1lIGFzICVIOiVNOiVTXG4gICAgbmV3IERpcmVjdGl2ZSh7XG4gICAgICAgIG5hbWVzOiBbXCJUXCIsIFwiWFwiXSxcbiAgICAgICAgcmV3cml0ZTogXCIlSDolTTolU1wiLFxuICAgIH0pLFxuICAgIC8vIFdlZWtkYXkgbnVtYmVyLCBzdGFydGluZyB3aXRoIE1vbmRheSAoMS03KVxuICAgIG5ldyBEaXJlY3RpdmUoe1xuICAgICAgICBuYW1lczogW1widVwiXSxcbiAgICAgICAgbGlrZWx5TGVuZ3RoOiAxLFxuICAgICAgICBtaW5pbXVtOiAxLFxuICAgICAgICBtYXhpbXVtOiA3LFxuICAgICAgICBzdG9yZTogZnVuY3Rpb24obnVtYmVyKXtcbiAgICAgICAgICAgIHRoaXMuZGF5T2ZXZWVrID0gbnVtYmVyICUgNztcbiAgICAgICAgfSxcbiAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKGRhdGUpe1xuICAgICAgICAgICAgcmV0dXJuIGdldERheU9mV2VlayhkYXRlKSB8fCA3O1xuICAgICAgICB9LFxuICAgIH0pLFxuICAgIC8vIFdlZWsgb2YgdGhlIHllYXIsIHN0YXJ0aW5nIHdpdGggU3VuZGF5ICgwLTUzKVxuICAgIG5ldyBEaXJlY3RpdmUoe1xuICAgICAgICBuYW1lczogW1wiVVwiXSxcbiAgICAgICAgcGFkTGVuZ3RoOiAyLFxuICAgICAgICBsaWtlbHlMZW5ndGg6IDIsXG4gICAgICAgIG1pbmltdW06IDAsXG4gICAgICAgIG1heGltdW06IDUzLFxuICAgICAgICBzdG9yZTogZnVuY3Rpb24obnVtYmVyKXtcbiAgICAgICAgICAgIHRoaXMud2Vla09mWWVhckZyb21TdW5kYXkgPSBudW1iZXI7XG4gICAgICAgIH0sXG4gICAgICAgIHdyaXRlOiBmdW5jdGlvbihkYXRlKXtcbiAgICAgICAgICAgIHJldHVybiBnZXRXZWVrT2ZZZWFyRnJvbVN1bmRheShkYXRlKTtcbiAgICAgICAgfSxcbiAgICB9KSxcbiAgICAvLyBWTVMgZGF0ZSwgc2FtZSBhcyBcIiVlLSViLSVZXCJcbiAgICBuZXcgRGlyZWN0aXZlKHtcbiAgICAgICAgbmFtZXM6IFtcInZcIl0sXG4gICAgICAgIHJld3JpdGU6IFwiJWUtJWItJVlcIixcbiAgICB9KSxcbiAgICAvLyBJU08gODYwMToxOTg4IHdlZWsgbnVtYmVyICgxLTUzKSwgY29tcGxlbWVudHMgJWcvJUdcbiAgICBuZXcgRGlyZWN0aXZlKHtcbiAgICAgICAgbmFtZXM6IFtcIlZcIl0sXG4gICAgICAgIHBhZExlbmd0aDogMixcbiAgICAgICAgbGlrZWx5TGVuZ3RoOiAyLFxuICAgICAgICBtaW5pbXVtOiAxLFxuICAgICAgICBtYXhpbXVtOiA1MyxcbiAgICAgICAgc3RvcmU6IGZ1bmN0aW9uKG51bWJlcil7XG4gICAgICAgICAgICB0aGlzLmlzb1dlZWtPZlllYXIgPSBudW1iZXI7XG4gICAgICAgIH0sXG4gICAgICAgIHdyaXRlOiBmdW5jdGlvbihkYXRlKXtcbiAgICAgICAgICAgIHJldHVybiBnZXRJU09XZWVrT2ZZZWFyKGRhdGUpO1xuICAgICAgICB9LFxuICAgIH0pLFxuICAgIC8vIFdlZWtkYXkgbnVtYmVyLCBzdGFydGluZyB3aXRoIFN1bmRheSAoMC02KVxuICAgIG5ldyBEaXJlY3RpdmUoe1xuICAgICAgICBuYW1lczogW1wid1wiXSxcbiAgICAgICAgbGlrZWx5TGVuZ3RoOiAxLFxuICAgICAgICBtaW5pbXVtOiAwLFxuICAgICAgICBtYXhpbXVtOiA2LFxuICAgICAgICBzdG9yZTogZnVuY3Rpb24obnVtYmVyKXtcbiAgICAgICAgICAgIHRoaXMuZGF5T2ZXZWVrID0gbnVtYmVyICUgNztcbiAgICAgICAgfSxcbiAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKGRhdGUpe1xuICAgICAgICAgICAgcmV0dXJuIGdldERheU9mV2VlayhkYXRlKTtcbiAgICAgICAgfSxcbiAgICB9KSxcbiAgICAvLyBXZWVrIG9mIHRoZSB5ZWFyLCBzdGFydGluZyB3aXRoIE1vbmRheSAoMC01MylcbiAgICBuZXcgRGlyZWN0aXZlKHtcbiAgICAgICAgbmFtZXM6IFtcIldcIl0sXG4gICAgICAgIHBhZExlbmd0aDogMixcbiAgICAgICAgbGlrZWx5TGVuZ3RoOiAyLFxuICAgICAgICBtaW5pbXVtOiAwLFxuICAgICAgICBtYXhpbXVtOiA1MyxcbiAgICAgICAgc3RvcmU6IGZ1bmN0aW9uKG51bWJlcil7XG4gICAgICAgICAgICB0aGlzLndlZWtPZlllYXJGcm9tTW9uZGF5ID0gbnVtYmVyO1xuICAgICAgICB9LFxuICAgICAgICB3cml0ZTogZnVuY3Rpb24oZGF0ZSl7XG4gICAgICAgICAgICByZXR1cm4gZ2V0V2Vla09mWWVhckZyb21Nb25kYXkoZGF0ZSk7XG4gICAgICAgIH0sXG4gICAgfSksXG4gICAgLy8gVHdvLWRpZ2l0IHllYXJcbiAgICBuZXcgRGlyZWN0aXZlKHtcbiAgICAgICAgbmFtZXM6IFtcInlcIl0sXG4gICAgICAgIHBhZExlbmd0aDogMixcbiAgICAgICAgbGlrZWx5TGVuZ3RoOiAyLFxuICAgICAgICBzdG9yZTogZnVuY3Rpb24obnVtYmVyKXtcbiAgICAgICAgICAgIHRoaXMudHdvRGlnaXRZZWFyID0gbnVtYmVyO1xuICAgICAgICB9LFxuICAgICAgICB3cml0ZTogZnVuY3Rpb24oZGF0ZSl7XG4gICAgICAgICAgICByZXR1cm4gZGF0ZS5nZXRVVENGdWxsWWVhcigpICUgMTAwO1xuICAgICAgICB9LFxuICAgIH0pLFxuICAgIC8vIEZ1bGwgeWVhciAodXN1YWxseSBmb3VyLWRpZ2l0LCBidXQgbm90IHN0cmljdGx5IHNvKVxuICAgIG5ldyBEaXJlY3RpdmUoe1xuICAgICAgICBuYW1lczogW1wiWVwiXSxcbiAgICAgICAgcGFkTGVuZ3RoOiA0LFxuICAgICAgICBsaWtlbHlMZW5ndGg6IDQsXG4gICAgICAgIGNhbkJlTmVnYXRpdmU6IHRydWUsXG4gICAgICAgIHN0b3JlOiBmdW5jdGlvbihudW1iZXIpe1xuICAgICAgICAgICAgdGhpcy55ZWFyID0gbnVtYmVyO1xuICAgICAgICB9LFxuICAgICAgICB3cml0ZTogZnVuY3Rpb24oZGF0ZSwgbW9kaWZpZXIpe1xuICAgICAgICAgICAgY29uc3QgeWVhciA9IGRhdGUuZ2V0VVRDRnVsbFllYXIoKTtcbiAgICAgICAgICAgIC8vIE1vZGlmaWVyIFwiXlwiIHByb2R1Y2VzIHVuc2lnbmVkIHllYXIsIGZvciBjb21iaW5hdGlvbiB3aXRoIGVyYSBcIiUjXCJcbiAgICAgICAgICAgIGlmKHllYXIgPD0gMCAmJiBtb2RpZmllciA9PT0gXCJeXCIpIHJldHVybiAxIC0geWVhcjtcbiAgICAgICAgICAgIGVsc2UgcmV0dXJuIHllYXI7XG4gICAgICAgIH0sXG4gICAgfSksXG4gICAgLy8gVGltZXpvbmUgb2Zmc2V0IGUuZy4gKzA1MDAgb3IgLTEyMDBcbiAgICBuZXcgRGlyZWN0aXZlKHtcbiAgICAgICAgbmFtZXM6IFtcInpcIl0sXG4gICAgICAgIHRleHQ6IHRydWUsXG4gICAgICAgIHBhcnNlOiBmdW5jdGlvbihtb2RpZmllcil7XG4gICAgICAgICAgICB0aGlzLnRpbWV6b25lT2Zmc2V0TWludXRlcyA9IHRoaXMucGFyc2VUaW1lem9uZU9mZnNldChtb2RpZmllcik7XG4gICAgICAgIH0sXG4gICAgICAgIHdyaXRlOiBmdW5jdGlvbihkYXRlLCBtb2RpZmllciwgb3B0aW9ucywgdGltZXpvbmVPZmZzZXRNaW51dGVzKXtcbiAgICAgICAgICAgIGNvbnN0IG9mZnNldCA9IChOdW1iZXIuaXNGaW5pdGUodGltZXpvbmVPZmZzZXRNaW51dGVzKSA/XG4gICAgICAgICAgICAgICAgdGltZXpvbmVPZmZzZXRNaW51dGVzIDogLWRhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybiB3cml0ZVRpbWV6b25lT2Zmc2V0KG9mZnNldCwgbW9kaWZpZXIpO1xuICAgICAgICB9LFxuICAgIH0pLFxuICAgIC8vIFRpbWV6b25lIG9mZnNldCBvciBuYW1lIGUuZy4gVVRDIG9yIEdNVCBvciBFU1Qgb3IgKzA1MDAgb3IgLTEyMDBcbiAgICBuZXcgRGlyZWN0aXZlKHtcbiAgICAgICAgbmFtZXM6IFtcIlpcIl0sXG4gICAgICAgIGxpa2VseUxlbmd0aDogNSxcbiAgICAgICAgdGV4dDogdHJ1ZSxcbiAgICAgICAgcGFyc2U6IGZ1bmN0aW9uKG1vZGlmaWVyKXtcbiAgICAgICAgICAgIGNvbnN0IHR6TGlzdCA9IHRoaXMuZ2V0VGltZXpvbmVOYW1lTGlzdCgpO1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnBhcnNlSW5kZXhJbkxpc3QodHpMaXN0KTtcbiAgICAgICAgICAgIGlmKGluZGV4ICE9PSB1bmRlZmluZWQpe1xuICAgICAgICAgICAgICAgIHRoaXMudGltZXpvbmVPZmZzZXRNaW51dGVzID0gNjAgKiB0aGlzLnRpbWV6b25lTmFtZXNbdHpMaXN0W2luZGV4XV07XG4gICAgICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgICAgICB0aGlzLnRpbWV6b25lT2Zmc2V0TWludXRlcyA9IHRoaXMucGFyc2VUaW1lem9uZU9mZnNldChtb2RpZmllcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHdyaXRlOiBmdW5jdGlvbihkYXRlLCBtb2RpZmllciwgb3B0aW9ucywgdGltZXpvbmVPZmZzZXRNaW51dGVzKXtcbiAgICAgICAgICAgIGNvbnN0IG9mZnNldCA9IChOdW1iZXIuaXNGaW5pdGUodGltZXpvbmVPZmZzZXRNaW51dGVzKSA/XG4gICAgICAgICAgICAgICAgdGltZXpvbmVPZmZzZXRNaW51dGVzIDogLWRhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmKG9mZnNldCA9PT0gMCkgcmV0dXJuIFwiVVRDXCI7XG4gICAgICAgICAgICBlbHNlIHJldHVybiB3cml0ZVRpbWV6b25lT2Zmc2V0KG9mZnNldCwgbW9kaWZpZXIpO1xuICAgICAgICB9LFxuICAgIH0pLFxuICAgIC8vIFNhbWUgYXMgXCIlYSAlYiAlZSAlSDolTTolUyAlWiAlWVwiXG4gICAgbmV3IERpcmVjdGl2ZSh7XG4gICAgICAgIG5hbWVzOiBbXCIrXCJdLFxuICAgICAgICByZXdyaXRlOiBcIiVhICViICVlICVIOiVNOiVTICVaICVZXCIsXG4gICAgfSksXG4gICAgLy8gRXJhIChCQy9CQ0UpXG4gICAgbmV3IERpcmVjdGl2ZSh7XG4gICAgICAgIG5hbWVzOiBbXCIjXCJdLFxuICAgICAgICB0ZXh0OiB0cnVlLFxuICAgICAgICBwYXJzZTogZnVuY3Rpb24oKXtcbiAgICAgICAgICAgIHRoaXMuZXJhID0gdGhpcy5wYXJzZUVyYU5hbWUoKTtcbiAgICAgICAgfSxcbiAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKGRhdGUsIG1vZGlmaWVyLCBvcHRpb25zKXtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gZGF0ZS5nZXRVVENGdWxsWWVhcigpIDw9IDAgPyAxIDogMDtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgKG9wdGlvbnMgJiYgb3B0aW9ucy5lcmFOYW1lcykgfHwgZW5nbGlzaC5lcmFOYW1lc1xuICAgICAgICAgICAgKVtpbmRleF07XG4gICAgICAgIH0sXG4gICAgfSksXG5dO1xuXG4vLyBUaGUgYXNzZXJ0aW9uLWVycm9yIHBhY2thZ2Ugd2FzIHVzZWQgYXMgYSBiYXNpcyBmb3IgdGhlIFRpbWVzdGFtcFBhcnNlRXJyb3IgdHlwZVxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2NoYWlqcy9hc3NlcnRpb24tZXJyb3IvYmxvYi9tYXN0ZXIvaW5kZXguanNcblxuLy8gVGhlIGNvbnN0cnVjdG9yXG5mdW5jdGlvbiBUaW1lc3RhbXBQYXJzZUVycm9yKHJlYXNvbiwgcGFyc2VyKXtcbiAgICBFcnJvci5jYWxsKHRoaXMpO1xuICAgIHRoaXMucmVhc29uID0gcmVhc29uO1xuICAgIHRoaXMuZm9ybWF0ID0gcGFyc2VyLmZvcm1hdDtcbiAgICB0aGlzLnRpbWVzdGFtcCA9IHBhcnNlci5zdHJpbmc7XG4gICAgdGhpcy50b2tlbiA9IHBhcnNlci5jdXJyZW50VG9rZW47XG4gICAgdGhpcy5pbmRleCA9IHBhcnNlci5pbmRleDtcbiAgICBpZih0aGlzLnRva2VuICYmIHRoaXMudG9rZW4uZXhwYW5kZWRGcm9tICYmIHRoaXMuaW5kZXggIT09IHVuZGVmaW5lZCkgdGhpcy5tZXNzYWdlID0gKFxuICAgICAgICBgRmFpbGVkIHRvIHBhcnNlIHRva2VuIFwiJHt0aGlzLnRva2VufVwiIGAgK1xuICAgICAgICBgKGV4cGFuZGVkIGZyb20gXCIke3RoaXMudG9rZW4uZXhwYW5kZWRGcm9tfVwiKSBhdCBwb3NpdGlvbiBbJHt0aGlzLmluZGV4fV0gYCArXG4gICAgICAgIGBpbiB0aW1lc3RhbXAgXCIke3RoaXMudGltZXN0YW1wfVwiIHdpdGggZm9ybWF0IFwiJHt0aGlzLmZvcm1hdH1cIjogYCArXG4gICAgICAgIGAke3RoaXMucmVhc29ufWBcbiAgICApO1xuICAgIGVsc2UgaWYodGhpcy50b2tlbiAmJiB0aGlzLmluZGV4ICE9PSB1bmRlZmluZWQpIHRoaXMubWVzc2FnZSA9IChcbiAgICAgICAgYEZhaWxlZCB0byBwYXJzZSB0b2tlbiBcIiR7dGhpcy50b2tlbn1cIiBhdCBwb3NpdGlvbiBbJHt0aGlzLmluZGV4fV0gYCArXG4gICAgICAgIGBpbiB0aW1lc3RhbXAgXCIke3RoaXMudGltZXN0YW1wfVwiIHdpdGggZm9ybWF0IFwiJHt0aGlzLmZvcm1hdH1cIjogYCArXG4gICAgICAgIGAke3RoaXMucmVhc29ufWBcbiAgICApO1xuICAgIGVsc2UgaWYodGhpcy50b2tlbikgdGhpcy5tZXNzYWdlID0gKFxuICAgICAgICBgRmFpbGVkIHRvIHBhcnNlIHRva2VuIFwiJHt0aGlzLnRva2VufVwiIGAgK1xuICAgICAgICBgaW4gZm9ybWF0IFwiJHt0aGlzLmZvcm1hdH1cIjogJHt0aGlzLnJlYXNvbn1gXG4gICAgKTtcbiAgICBlbHNlIHRoaXMubWVzc2FnZSA9IChcbiAgICAgICAgYEZhaWxlZCB3aXRoIGZvcm1hdCBcIiR7dGhpcy5mb3JtYXR9XCI6ICR7dGhpcy5yZWFzb259YFxuICAgICk7XG4gICAgLy8gaHR0cHM6Ly9ub2RlanMub3JnL2FwaS9lcnJvcnMuaHRtbCNlcnJvcnNfZXJyb3JfY2FwdHVyZXN0YWNrdHJhY2VfdGFyZ2V0b2JqZWN0X2NvbnN0cnVjdG9yb3B0XG4gICAgaWYoRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2Upe1xuICAgICAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLCB0aGlzLmNvbnN0cnVjdG9yKTtcbiAgICB9ZWxzZXtcbiAgICAgICAgdHJ5e1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCk7XG4gICAgICAgIH1jYXRjaChlcnJvcil7XG4gICAgICAgICAgICB0aGlzLnN0YWNrID0gZXJyb3Iuc3RhY2s7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIFByb3RvdHlwZSB3cmFuZ2xpbmdcblRpbWVzdGFtcFBhcnNlRXJyb3IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShFcnJvci5wcm90b3R5cGUpO1xuVGltZXN0YW1wUGFyc2VFcnJvci5wcm90b3R5cGUubmFtZSA9IFwiVGltZXN0YW1wUGFyc2VFcnJvclwiO1xuVGltZXN0YW1wUGFyc2VFcnJvci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBUaW1lc3RhbXBQYXJzZUVycm9yO1xuXG5cbmZ1bmN0aW9uIGlzRGlnaXQoY2gpe1xuICAgIHJldHVybiAoXG4gICAgICAgIGNoID09PSBcIjBcIiB8fCBjaCA9PT0gXCIxXCIgfHwgY2ggPT09IFwiMlwiIHx8IGNoID09PSBcIjNcIiB8fCBjaCA9PT0gXCI0XCIgfHxcbiAgICAgICAgY2ggPT09IFwiNVwiIHx8IGNoID09PSBcIjZcIiB8fCBjaCA9PT0gXCI3XCIgfHwgY2ggPT09IFwiOFwiIHx8IGNoID09PSBcIjlcIlxuICAgICk7XG59XG5cbi8vIE1hdGNoZXMgR05VIEMgc3RycHRpbWUgYmVoYXZpb3Jcbi8vIGh0dHBzOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvbGliYy9tYW51YWwvaHRtbF9ub2RlL0xvd18wMDJkTGV2ZWwtVGltZS1TdHJpbmctUGFyc2luZy5odG1sXG5mdW5jdGlvbiBnZXRZZWFyRnJvbVR3b0RpZ2l0cyh5ZWFyKXtcbiAgICByZXR1cm4geWVhciArICh5ZWFyIDw9IDY4ID8gMjAwMCA6IDE5MDApO1xufVxuXG5mdW5jdGlvbiBnZXRNb250aEZyb21EYXlPZlllYXIoeWVhciwgZGF5T2ZZZWFyKXtcbiAgICBjb25zdCBtb250aHMgPSBtb250aExlbmd0aHMuZm9yWWVhcih5ZWFyKTtcbiAgICBsZXQgZGF5cyA9IDA7XG4gICAgZm9yKGxldCBpID0gMDsgaSA8IG1vbnRocy5sZW5ndGg7IGkrKyl7XG4gICAgICAgIGlmKGRheXMgPj0gZGF5T2ZZZWFyKSByZXR1cm4gaTtcbiAgICAgICAgZGF5cyArPSBtb250aHNbaV07XG4gICAgfVxuICAgIHJldHVybiAxMjtcbn1cblxuZnVuY3Rpb24gZ2V0RGF5T2ZNb250aEZyb21EYXlPZlllYXIoeWVhciwgZGF5T2ZZZWFyKXtcbiAgICBjb25zdCBtb250aHMgPSBtb250aExlbmd0aHMuZm9yWWVhcih5ZWFyKTtcbiAgICBsZXQgZGF5cyA9IDA7XG4gICAgZm9yKGxldCBpID0gMDsgaSA8IG1vbnRocy5sZW5ndGg7IGkrKyl7XG4gICAgICAgIGlmKGRheU9mWWVhciAtIGRheXMgPD0gbW9udGhzW2ldKSByZXR1cm4gZGF5T2ZZZWFyIC0gZGF5cztcbiAgICAgICAgZGF5cyArPSBtb250aHNbaV07XG4gICAgfVxuICAgIHJldHVybiBkYXlPZlllYXIgLSBkYXlzO1xufVxuXG4vLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlXG4vLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMSNXZWVrX2RhdGVzXG5mdW5jdGlvbiBnZXREYXRlRnJvbUlTT1dlZWtEYXRlKHBhcnNlciwgaXNvWWVhciwgaXNvV2Vla09mWWVhciwgZGF5T2ZXZWVrKXtcbiAgICBjb25zdCBmaXJzdERheU9mV2VlayA9IGdldEZpcnN0V2Vla2RheUluWWVhcihpc29ZZWFyKTtcbiAgICBjb25zdCB3ZWVrZGF5T2ZKYW40ID0gKCgzICsgZmlyc3REYXlPZldlZWspICUgNykgfHwgNztcbiAgICBjb25zdCBkYXlzSW5ZZWFyID0gaXNMZWFwWWVhcihpc29ZZWFyKSA/IDM2NiA6IDM2NTtcbiAgICBsZXQgZGF5T2ZZZWFyID0gNyAqIGlzb1dlZWtPZlllYXIgKyAoZGF5T2ZXZWVrIHx8IDcpIC0gd2Vla2RheU9mSmFuNCAtIDM7XG4gICAgaWYoZGF5T2ZZZWFyIDwgMSl7XG4gICAgICAgIHBhcnNlci55ZWFyID0gaXNvWWVhciAtIDE7XG4gICAgICAgIGRheU9mWWVhciArPSBkYXlzSW5ZZWFyO1xuICAgIH1lbHNlIGlmKGRheU9mWWVhciA+IGRheXNJblllYXIpe1xuICAgICAgICBwYXJzZXIueWVhciA9IDEgKyBpc29ZZWFyO1xuICAgICAgICBkYXlPZlllYXIgLT0gZGF5c0luWWVhcjtcbiAgICB9ZWxzZXtcbiAgICAgICAgcGFyc2VyLnllYXIgPSBpc29ZZWFyO1xuICAgIH1cbiAgICBwYXJzZXIubW9udGggPSBnZXRNb250aEZyb21EYXlPZlllYXIocGFyc2VyLnllYXIsIGRheU9mWWVhcik7XG4gICAgcGFyc2VyLmRheU9mTW9udGggPSBnZXREYXlPZk1vbnRoRnJvbURheU9mWWVhcihwYXJzZXIueWVhciwgZGF5T2ZZZWFyKTtcbn1cblxuZnVuY3Rpb24gZ2V0RGF0ZUZyb21TdW5kYXlXZWVrRGF0ZShwYXJzZXIsIHllYXIsIHdlZWtPZlllYXIsIGRheU9mV2Vlayl7XG4gICAgY29uc3QgZmlyc3REYXlPZldlZWsgPSBnZXRGaXJzdFdlZWtkYXlJblllYXIoeWVhcik7XG4gICAgY29uc3QgZGF5T2ZZZWFyID0gMSArIDcgKiB3ZWVrT2ZZZWFyIC0gKGZpcnN0RGF5T2ZXZWVrIHx8IDcpICsgZGF5T2ZXZWVrO1xuICAgIHBhcnNlci55ZWFyID0geWVhcjtcbiAgICBwYXJzZXIubW9udGggPSBnZXRNb250aEZyb21EYXlPZlllYXIoeWVhciwgZGF5T2ZZZWFyKTtcbiAgICBwYXJzZXIuZGF5T2ZNb250aCA9IGdldERheU9mTW9udGhGcm9tRGF5T2ZZZWFyKHllYXIsIGRheU9mWWVhcik7XG59XG5cbmZ1bmN0aW9uIGdldERhdGVGcm9tTW9uZGF5V2Vla0RhdGUocGFyc2VyLCB5ZWFyLCB3ZWVrT2ZZZWFyLCBkYXlPZldlZWspe1xuICAgIGNvbnN0IGZpcnN0RGF5T2ZXZWVrID0gZ2V0Rmlyc3RXZWVrZGF5SW5ZZWFyKHllYXIpO1xuICAgIGNvbnN0IHN1bmRheURheU9mWWVhciA9IDEgKyA3ICogd2Vla09mWWVhciAtIChmaXJzdERheU9mV2VlayB8fCA3KSArIGRheU9mV2VlaztcbiAgICBjb25zdCBkYXlPZlllYXIgPSBzdW5kYXlEYXlPZlllYXIgKyAoXG4gICAgICAgIChkYXlPZldlZWsgPT09IDAgPyA3IDogMCkgLSAoZmlyc3REYXlPZldlZWsgPT09IDEgPyA3IDogMClcbiAgICApO1xuICAgIHBhcnNlci55ZWFyID0geWVhcjtcbiAgICBwYXJzZXIubW9udGggPSBnZXRNb250aEZyb21EYXlPZlllYXIoeWVhciwgZGF5T2ZZZWFyKTtcbiAgICBwYXJzZXIuZGF5T2ZNb250aCA9IGdldERheU9mTW9udGhGcm9tRGF5T2ZZZWFyKHllYXIsIGRheU9mWWVhcik7XG59XG5cbmNsYXNzIFRpbWVzdGFtcFBhcnNlcntcbiAgICBjb25zdHJ1Y3Rvcih0aW1lc3RhbXAsIGZvcm1hdCwgdG9rZW5zKXtcbiAgICAgICAgLy8gUGFyc2VyIHN0YXRlXG4gICAgICAgIHRoaXMuaW5kZXggPSAwO1xuICAgICAgICB0aGlzLnN0cmluZyA9IFN0cmluZyh0aW1lc3RhbXApO1xuICAgICAgICB0aGlzLmZvcm1hdCA9IFN0cmluZyhmb3JtYXQpO1xuICAgICAgICB0aGlzLnRva2VucyA9IHRva2VucyB8fCBUaW1lc3RhbXBQYXJzZXIucGFyc2VGb3JtYXRTdHJpbmcodGhpcy5mb3JtYXQpO1xuICAgICAgICB0aGlzLmZvcmtMZW5ndGggPSAwO1xuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgLy8gUGFyc2VyIHNldHRpbmdzXG4gICAgICAgIHRoaXMuc2hvcnRXZWVrZGF5TmFtZXMgPSBlbmdsaXNoLnNob3J0V2Vla2RheU5hbWVzO1xuICAgICAgICB0aGlzLmxvbmdXZWVrZGF5TmFtZXMgPSBlbmdsaXNoLmxvbmdXZWVrZGF5TmFtZXM7XG4gICAgICAgIHRoaXMuc2hvcnRNb250aE5hbWVzID0gZW5nbGlzaC5zaG9ydE1vbnRoTmFtZXM7XG4gICAgICAgIHRoaXMubG9uZ01vbnRoTmFtZXMgPSBlbmdsaXNoLmxvbmdNb250aE5hbWVzO1xuICAgICAgICB0aGlzLmVyYU5hbWVzID0gZW5nbGlzaC5lcmFOYW1lcztcbiAgICAgICAgdGhpcy5tZXJpZGllbU5hbWVzID0gZW5nbGlzaC5tZXJpZGllbU5hbWVzO1xuICAgICAgICB0aGlzLm9yZGluYWxUcmFuc2Zvcm0gPSBlbmdsaXNoLm9yZGluYWxUcmFuc2Zvcm07XG4gICAgICAgIHRoaXMudGltZXpvbmVOYW1lcyA9IGRlZmF1bHRUaW1lem9uZU5hbWVzO1xuICAgICAgICAvLyBTdG9yYWdlIHZhbHVlcyBmcm9tIHBhcnNpbmcgdG9rZW5zXG4gICAgICAgIHRoaXMuZXJhID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmNlbnR1cnkgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMueWVhciA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy50d29EaWdpdFllYXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuaXNvWWVhciA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5pc29Ud29EaWdpdFllYXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMubW9udGggPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuaXNvV2Vla09mWWVhciA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy53ZWVrT2ZZZWFyRnJvbVN1bmRheSA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy53ZWVrT2ZZZWFyRnJvbU1vbmRheSA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5kYXlPZlllYXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuZGF5T2ZNb250aCA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5kYXlPZldlZWsgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuaG91ciA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5taW51dGUgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuc2Vjb25kID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLm1pbGxpc2Vjb25kID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLm1pY3Jvc2Vjb25kID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLm1lcmlkaWVtID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLnRpbWV6b25lT2Zmc2V0TWludXRlcyA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5zZWNvbmRzU2luY2VFcG9jaCA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5taWxsaXNlY29uZHNTaW5jZUVwb2NoID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLm1pY3Jvc2Vjb25kc1NpbmNlRXBvY2ggPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGdldFRpbWV6b25lT2Zmc2V0T2ZEYXRlKGRhdGUpe1xuICAgICAgICBjb25zdCBvZmZzZXQgPSAodGhpcy50aW1lem9uZU9mZnNldE1pbnV0ZXMgPT09IHVuZGVmaW5lZCA/XG4gICAgICAgICAgICAtZGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpIDpcbiAgICAgICAgICAgIHRoaXMudGltZXpvbmVPZmZzZXRNaW51dGVzXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IG9mZnNldFNpZ24gPSBvZmZzZXQgPj0gMCA/ICsxIDogLTE7XG4gICAgICAgIGNvbnN0IGFic09mZnNldCA9IE1hdGguYWJzKG9mZnNldCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBob3VyOiBvZmZzZXRTaWduICogTWF0aC5mbG9vcihhYnNPZmZzZXQgLyA2MCksXG4gICAgICAgICAgICBtaW51dGU6IG9mZnNldFNpZ24gKiBNYXRoLmZsb29yKGFic09mZnNldCAlIDYwKSxcbiAgICAgICAgICAgIHRvdGFsTWludXRlczogb2Zmc2V0LFxuICAgICAgICB9O1xuICAgIH1cbiAgICBnZXREYXRlKCl7XG4gICAgICAgIGlmKHRoaXMubWljcm9zZWNvbmRzU2luY2VFcG9jaCA9PT0gdW5kZWZpbmVkKXtcbiAgICAgICAgICAgIGlmKHRoaXMubWlsbGlzZWNvbmRzU2luY2VFcG9jaCAhPT0gdW5kZWZpbmVkKXtcbiAgICAgICAgICAgICAgICB0aGlzLm1pY3Jvc2Vjb25kc1NpbmNlRXBvY2ggPSAxMDAwICogdGhpcy5taWxsaXNlY29uZHNTaW5jZUVwb2NoO1xuICAgICAgICAgICAgfWVsc2UgaWYodGhpcy5zZWNvbmRzU2luY2VFcG9jaCAhPT0gdW5kZWZpbmVkKXtcbiAgICAgICAgICAgICAgICB0aGlzLm1pY3Jvc2Vjb25kc1NpbmNlRXBvY2ggPSAxMDAwMDAwICogdGhpcy5zZWNvbmRzU2luY2VFcG9jaDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZih0aGlzLm1pY3Jvc2Vjb25kc1NpbmNlRXBvY2ggIT09IHVuZGVmaW5lZCl7XG4gICAgICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUodGhpcy5taWNyb3NlY29uZHNTaW5jZUVwb2NoIC8gMTAwMCk7XG4gICAgICAgICAgICBjb25zdCBvZmZzZXQgPSB0aGlzLmdldFRpbWV6b25lT2Zmc2V0T2ZEYXRlKGRhdGUpO1xuICAgICAgICAgICAgZGF0ZS5zZXRVVENNaW51dGVzKGRhdGUuZ2V0VVRDTWludXRlcygpIC0gb2Zmc2V0LnRvdGFsTWludXRlcyk7XG4gICAgICAgICAgICByZXR1cm4gZGF0ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoKTtcbiAgICAgICAgaWYodGhpcy55ZWFyID09PSB1bmRlZmluZWQgJiYgdGhpcy50d29EaWdpdFllYXIgIT09IHVuZGVmaW5lZCl7XG4gICAgICAgICAgICBpZih0aGlzLmNlbnR1cnkgPT09IHVuZGVmaW5lZCl7XG4gICAgICAgICAgICAgICAgdGhpcy55ZWFyID0gZ2V0WWVhckZyb21Ud29EaWdpdHModGhpcy50d29EaWdpdFllYXIpO1xuICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgICAgdGhpcy55ZWFyID0gMTAwICogdGhpcy5jZW50dXJ5ICsgdGhpcy50d29EaWdpdFllYXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1lbHNlIGlmKHRoaXMuaXNvWWVhciA9PT0gdW5kZWZpbmVkICYmIHRoaXMuaXNvVHdvRGlnaXRZZWFyICE9PSB1bmRlZmluZWQpe1xuICAgICAgICAgICAgdGhpcy5pc29ZZWFyID0gZ2V0WWVhckZyb21Ud29EaWdpdHModGhpcy5pc29Ud29EaWdpdFllYXIpO1xuICAgICAgICB9ZWxzZSBpZih0aGlzLnllYXIgPT09IHVuZGVmaW5lZCAmJiB0aGlzLmNlbnR1cnkgIT09IHVuZGVmaW5lZCl7XG4gICAgICAgICAgICB0aGlzLnllYXIgPSAxMDAgKiB0aGlzLmNlbnR1cnk7XG4gICAgICAgIH1cbiAgICAgICAgaWYodGhpcy5lcmEgJiYgdGhpcy55ZWFyICE9PSB1bmRlZmluZWQpe1xuICAgICAgICAgICAgdGhpcy55ZWFyID0gMSAtIHRoaXMueWVhcjtcbiAgICAgICAgfVxuICAgICAgICBpZih0aGlzLmhvdXIgIT09IHVuZGVmaW5lZCAmJiB0aGlzLm1lcmlkaWVtICE9PSB1bmRlZmluZWQpe1xuICAgICAgICAgICAgdGhpcy5ob3VyID0gKHRoaXMuaG91ciAlIDEyKSArICh0aGlzLm1lcmlkaWVtID8gMTIgOiAwKTtcbiAgICAgICAgfVxuICAgICAgICBpZih0aGlzLm1pY3Jvc2Vjb25kID09PSB1bmRlZmluZWQgJiYgdGhpcy5taWxsaXNlY29uZCAhPT0gdW5kZWZpbmVkKXtcbiAgICAgICAgICAgIHRoaXMubWljcm9zZWNvbmQgPSAxMDAwICogdGhpcy5taWxsaXNlY29uZDtcbiAgICAgICAgfVxuICAgICAgICBpZih0aGlzLmlzb1llYXIgIT09IHVuZGVmaW5lZCAmJiB0aGlzLmlzb1dlZWtPZlllYXIgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgKHRoaXMubW9udGggPT09IHVuZGVmaW5lZCB8fCB0aGlzLmRheU9mTW9udGggPT09IHVuZGVmaW5lZClcbiAgICAgICAgKXtcbiAgICAgICAgICAgIGdldERhdGVGcm9tSVNPV2Vla0RhdGUodGhpcyxcbiAgICAgICAgICAgICAgICB0aGlzLmlzb1llYXIsIHRoaXMuaXNvV2Vla09mWWVhciwgdGhpcy5kYXlPZldlZWsgfHwgMFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfWVsc2UgaWYodGhpcy5kYXlPZlllYXIgIT09IHVuZGVmaW5lZCl7XG4gICAgICAgICAgICBjb25zdCB5ZWFyID0gdGhpcy55ZWFyICE9PSB1bmRlZmluZWQgPyB0aGlzLnllYXIgOiBkYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgICAgICAgICBpZih0aGlzLm1vbnRoID09PSB1bmRlZmluZWQpe1xuICAgICAgICAgICAgICAgIHRoaXMubW9udGggPSBnZXRNb250aEZyb21EYXlPZlllYXIoeWVhciwgdGhpcy5kYXlPZlllYXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYodGhpcy5kYXlPZk1vbnRoID09PSB1bmRlZmluZWQpe1xuICAgICAgICAgICAgICAgIHRoaXMuZGF5T2ZNb250aCA9IGdldERheU9mTW9udGhGcm9tRGF5T2ZZZWFyKHllYXIsIHRoaXMuZGF5T2ZZZWFyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfWVsc2UgaWYodGhpcy53ZWVrT2ZZZWFyRnJvbVN1bmRheSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAodGhpcy5tb250aCA9PT0gdW5kZWZpbmVkIHx8IHRoaXMuZGF5T2ZNb250aCA9PT0gdW5kZWZpbmVkKVxuICAgICAgICApe1xuICAgICAgICAgICAgY29uc3QgeWVhciA9IHRoaXMueWVhciAhPT0gdW5kZWZpbmVkID8gdGhpcy55ZWFyIDogZGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgICAgICAgZ2V0RGF0ZUZyb21TdW5kYXlXZWVrRGF0ZSh0aGlzLFxuICAgICAgICAgICAgICAgIHllYXIsIHRoaXMud2Vla09mWWVhckZyb21TdW5kYXksIHRoaXMuZGF5T2ZXZWVrIHx8IDBcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1lbHNlIGlmKHRoaXMud2Vla09mWWVhckZyb21Nb25kYXkgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgKHRoaXMubW9udGggPT09IHVuZGVmaW5lZCB8fCB0aGlzLmRheU9mTW9udGggPT09IHVuZGVmaW5lZClcbiAgICAgICAgKXtcbiAgICAgICAgICAgIGNvbnN0IHllYXIgPSB0aGlzLnllYXIgIT09IHVuZGVmaW5lZCA/IHRoaXMueWVhciA6IGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICAgICAgICAgIGdldERhdGVGcm9tTW9uZGF5V2Vla0RhdGUodGhpcyxcbiAgICAgICAgICAgICAgICB5ZWFyLCB0aGlzLndlZWtPZlllYXJGcm9tTW9uZGF5LCB0aGlzLmRheU9mV2VlayB8fCAwXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmKHRoaXMueWVhciAhPT0gdW5kZWZpbmVkKXtcbiAgICAgICAgICAgIGRhdGUuc2V0VVRDRnVsbFllYXIodGhpcy55ZWFyKTtcbiAgICAgICAgfVxuICAgICAgICBpZih0aGlzLm1vbnRoICE9PSB1bmRlZmluZWQpe1xuICAgICAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3BpbmVhcHBsZW1hY2hpbmUvc3RydGltZS1qcy9pc3N1ZXMvNVxuICAgICAgICAgICAgLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMjY2ODEzMTMvamF2YXNjcmlwdC1zZXR1dGNtb250aC1kb2VzLW5vdC13b3JrLWZvci1ub3ZlbWJlclxuICAgICAgICAgICAgZGF0ZS5zZXRVVENNb250aCgwLCAxKTtcbiAgICAgICAgICAgIGRhdGUuc2V0VVRDTW9udGgodGhpcy5tb250aCAtIDEpO1xuICAgICAgICB9XG4gICAgICAgIGlmKHRoaXMuZGF5T2ZNb250aCAhPT0gdW5kZWZpbmVkKXtcbiAgICAgICAgICAgIGRhdGUuc2V0VVRDRGF0ZSh0aGlzLmRheU9mTW9udGgpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IHRoaXMuZ2V0VGltZXpvbmVPZmZzZXRPZkRhdGUoZGF0ZSk7XG4gICAgICAgIGlmKG9mZnNldC50b3RhbE1pbnV0ZXMpe1xuICAgICAgICAgICAgdGhpcy5ob3VyID0gKHRoaXMuaG91ciB8fCAwKSAtIG9mZnNldC5ob3VyO1xuICAgICAgICAgICAgdGhpcy5taW51dGUgPSAodGhpcy5taW51dGUgfHwgMCkgLSBvZmZzZXQubWludXRlO1xuICAgICAgICB9XG4gICAgICAgIGRhdGUuc2V0VVRDSG91cnModGhpcy5ob3VyIHx8IDApO1xuICAgICAgICBkYXRlLnNldFVUQ01pbnV0ZXModGhpcy5taW51dGUgfHwgMCk7XG4gICAgICAgIGRhdGUuc2V0VVRDU2Vjb25kcyh0aGlzLnNlY29uZCB8fCAwKTtcbiAgICAgICAgZGF0ZS5zZXRVVENNaWxsaXNlY29uZHModGhpcy5taWNyb3NlY29uZCA/IHRoaXMubWljcm9zZWNvbmQgLyAxMDAwIDogMCk7XG4gICAgICAgIHJldHVybiBkYXRlO1xuICAgIH1cbiAgICBjb3B5KCl7XG4gICAgICAgIGNvbnN0IHBhcnNlciA9IG5ldyBUaW1lc3RhbXBQYXJzZXIodGhpcy5zdHJpbmcsIHRoaXMuZm9ybWF0LCB0aGlzLnRva2Vucyk7XG4gICAgICAgIGZvcihsZXQga2V5IGluIHRoaXMpe1xuICAgICAgICAgICAgcGFyc2VyW2tleV0gPSB0aGlzW2tleV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBhcnNlcjtcbiAgICB9XG4gICAgZm9yayhsZW5ndGgsIHN0YXJ0VG9rZW5JbmRleCl7XG4gICAgICAgIGNvbnN0IHBhcnNlciA9IHRoaXMuY29weSgpO1xuICAgICAgICBwYXJzZXIuZm9ya0xlbmd0aCA9IGxlbmd0aDtcbiAgICAgICAgcmV0dXJuIHBhcnNlci5wYXJzZShzdGFydFRva2VuSW5kZXgpO1xuICAgIH1cbiAgICBwYXJzZShzdGFydFRva2VuSW5kZXgpe1xuICAgICAgICBmb3IobGV0IGkgPSBzdGFydFRva2VuSW5kZXggfHwgMDsgaSA8IHRoaXMudG9rZW5zLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgICAgIGNvbnN0IHRva2VuID0gdGhpcy50b2tlbnNbaV07XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbiA9IHRva2VuO1xuICAgICAgICAgICAgaWYodGhpcy5pbmRleCA+PSB0aGlzLnN0cmluZy5sZW5ndGgpIHRocm93IG5ldyBUaW1lc3RhbXBQYXJzZUVycm9yKFxuICAgICAgICAgICAgICAgIFwiVGltZXN0YW1wIGlzIHRvbyBzaG9ydCB0byBtYXRjaCB0aGUgd2hvbGUgZm9ybWF0LlwiLCB0aGlzXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYodG9rZW4gaW5zdGFuY2VvZiBEaXJlY3RpdmUuU3RyaW5nVG9rZW4pe1xuICAgICAgICAgICAgICAgIHRoaXMucGFyc2VTdHJpbmdUb2tlbih0b2tlbi5zdHJpbmcpO1xuICAgICAgICAgICAgfWVsc2UgaWYodG9rZW4uaGFzUGFyc2VGdW5jdGlvbigpKXtcbiAgICAgICAgICAgICAgICB0b2tlbi5wYXJzZSh0aGlzKTtcbiAgICAgICAgICAgIH1lbHNlIGlmKHRva2VuLmhhc1N0b3JlRnVuY3Rpb24oKSAmJiAhdG9rZW4udGV4dCl7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dCA9IHRoaXMudG9rZW5zWzEgKyBpXTtcbiAgICAgICAgICAgICAgICBpZigobmV4dCBpbnN0YW5jZW9mIERpcmVjdGl2ZS5TdHJpbmdUb2tlbiAmJiBpc0RpZ2l0KG5leHQuc3RyaW5nWzBdKSkgfHwgKChcbiAgICAgICAgICAgICAgICAgICAgbmV4dCBpbnN0YW5jZW9mIERpcmVjdGl2ZSB8fFxuICAgICAgICAgICAgICAgICAgICBuZXh0IGluc3RhbmNlb2YgRGlyZWN0aXZlLlRva2VuXG4gICAgICAgICAgICAgICAgKSAmJiAhbmV4dC50ZXh0KSl7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMucGFyc2VBbWJpZ3VvdXNOdW1iZXIodG9rZW4sIGkpO1xuICAgICAgICAgICAgICAgICAgICBpZihyZXN1bHQpIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgICAgICAgIHRva2VuLnN0b3JlKHRoaXMsIHRoaXMucGFyc2VOdW1iZXIodG9rZW4pKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVGltZXN0YW1wUGFyc2VFcnJvcihcIkludmFsaWQgZGlyZWN0aXZlLlwiLCB0aGlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgaWYoMSArIHRoaXMuaW5kZXggPCB0aGlzLnN0cmluZy5sZW5ndGgpIHRocm93IG5ldyBUaW1lc3RhbXBQYXJzZUVycm9yKFxuICAgICAgICAgICAgYFRpbWVzdGFtcCBpcyB0b28gbG9uZyBmb3IgdGhlIGdpdmVuIGZvcm1hdC4gVGV4dCByZW1haW5pbmc6IFwiJHt0aGlzLnN0cmluZy5zbGljZSh0aGlzLmluZGV4KX1cIi5gLCB0aGlzXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICBwYXJzZVN0cmluZ1Rva2VuKHRva2VuKXtcbiAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IHRva2VuLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgICAgIGlmKHRoaXMuc3RyaW5nW3RoaXMuaW5kZXhdICE9PSB0b2tlbltpXSl7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFRpbWVzdGFtcFBhcnNlRXJyb3IoYFN0cmluZyBsaXRlcmFsIFwiJHt0b2tlbn1cIiBub3QgbWF0Y2hlZC5gLCB0aGlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuaW5kZXgrKztcbiAgICAgICAgfVxuICAgIH1cbiAgICBwYXJzZUFtYmlndW91c051bWJlcih0b2tlbiwgdG9rZW5JbmRleCl7XG4gICAgICAgIGlmKHRoaXMuZm9ya0xlbmd0aCA9PT0gMCl7XG4gICAgICAgICAgICBjb25zdCBsaWtlbHlMZW5ndGggPSB0b2tlbi5nZXRMaWtlbHlMZW5ndGgoKTtcbiAgICAgICAgICAgIGlmKGxpa2VseUxlbmd0aCl7XG4gICAgICAgICAgICAgICAgdHJ5e1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5mb3JrKGxpa2VseUxlbmd0aCwgdG9rZW5JbmRleCk7XG4gICAgICAgICAgICAgICAgfWNhdGNoKGVycm9yKXtcbiAgICAgICAgICAgICAgICAgICAgaWYoIShlcnJvciBpbnN0YW5jZW9mIFRpbWVzdGFtcFBhcnNlRXJyb3IpKSB0aHJvdyBlcnJvcjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgbGFzdFdob2xlRXJyb3IgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICBmb3IobGV0IGkgPSAxOyBpIDwgdGhpcy5zdHJpbmcubGVuZ3RoIC0gdGhpcy5pbmRleDsgaSsrKXtcbiAgICAgICAgICAgICAgICBpZihpID09PSB0b2tlbi5saWtlbHlMZW5ndGgpIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIHRyeXtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZm9yayhpLCB0b2tlbkluZGV4KTtcbiAgICAgICAgICAgICAgICB9Y2F0Y2goZXJyb3Ipe1xuICAgICAgICAgICAgICAgICAgICBpZighKGVycm9yIGluc3RhbmNlb2YgVGltZXN0YW1wUGFyc2VFcnJvcikpIHRocm93IGVycm9yO1xuICAgICAgICAgICAgICAgICAgICBpZihlcnJvci5tZXNzYWdlID0gXCJUaW1lc3RhbXAgaXMgdG9vIHNob3J0IHRvIG1hdGNoIHRoZSB3aG9sZSBmb3JtYXQuXCIpe1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFzdFdob2xlRXJyb3IgPSBlcnJvcjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmKGxhc3RXaG9sZUVycm9yKXtcbiAgICAgICAgICAgICAgICB0aHJvdyBsYXN0V2hvbGVFcnJvcjtcbiAgICAgICAgICAgIH1lbHNle1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUaW1lc3RhbXBQYXJzZUVycm9yKFwiRmFpbGVkIHRvIHBhcnNlIGFtYmlndW91cyBudW1iZXIuXCIsIHRoaXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgIGNvbnN0IG51bWJlciA9IHRoaXMucGFyc2VOdW1iZXIodG9rZW4sIHRoaXMuZm9ya0xlbmd0aCk7XG4gICAgICAgICAgICB0b2tlbi5zdG9yZSh0aGlzLCBudW1iZXIpO1xuICAgICAgICAgICAgdGhpcy5mb3JrTGVuZ3RoID0gMDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwYXJzZU51bWJlcihkaXJlY3RpdmUsIGxlbmd0aExpbWl0ID0gSW5maW5pdHkpe1xuICAgICAgICBjb25zdCBuZWdhdGl2ZSA9IHRoaXMuc3RyaW5nW3RoaXMuaW5kZXhdID09PSBcIi1cIjtcbiAgICAgICAgaWYobmVnYXRpdmUgJiYgIWRpcmVjdGl2ZS5nZXRDYW5CZU5lZ2F0aXZlKCkpe1xuICAgICAgICAgICAgdGhyb3cgbmV3IFRpbWVzdGFtcFBhcnNlRXJyb3IoXCJOdW1iZXIgY2Fubm90IGJlIG5lZ2F0aXZlLlwiLCB0aGlzKTtcbiAgICAgICAgfWVsc2UgaWYobmVnYXRpdmUpe1xuICAgICAgICAgICAgdGhpcy5pbmRleCsrO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5pbmRleDtcbiAgICAgICAgd2hpbGUodGhpcy5pbmRleCA8IHRoaXMuc3RyaW5nLmxlbmd0aCAmJlxuICAgICAgICAgICAgdGhpcy5zdHJpbmdbdGhpcy5pbmRleF0gPT09IFwiIFwiXG4gICAgICAgICl7XG4gICAgICAgICAgICB0aGlzLmluZGV4Kys7XG4gICAgICAgIH1cbiAgICAgICAgd2hpbGUodGhpcy5pbmRleCA8IHRoaXMuc3RyaW5nLmxlbmd0aCAmJlxuICAgICAgICAgICAgdGhpcy5pbmRleCAtIHN0YXJ0IDwgbGVuZ3RoTGltaXQgJiYgaXNEaWdpdCh0aGlzLnN0cmluZ1t0aGlzLmluZGV4XSlcbiAgICAgICAgKXtcbiAgICAgICAgICAgIHRoaXMuaW5kZXgrKztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB2YWx1ZSA9ICt0aGlzLnN0cmluZy5zbGljZShzdGFydCwgdGhpcy5pbmRleCkudHJpbSgpO1xuICAgICAgICBpZighTnVtYmVyLmlzSW50ZWdlcih2YWx1ZSkpe1xuICAgICAgICAgICAgdGhyb3cgbmV3IFRpbWVzdGFtcFBhcnNlRXJyb3IoXCJGYWlsZWQgdG8gcGFyc2UgbnVtYmVyLlwiLCB0aGlzKTtcbiAgICAgICAgfWVsc2UgaWYoIWRpcmVjdGl2ZS5udW1iZXJJbkJvdW5kcyh2YWx1ZSkpe1xuICAgICAgICAgICAgdGhyb3cgbmV3IFRpbWVzdGFtcFBhcnNlRXJyb3IoYE51bWJlciBbJHt2YWx1ZX1dIGlzIG91dCBvZiBib3VuZHMgJHtkaXJlY3RpdmUuZ2V0Qm91bmRzU3RyaW5nKCl9LmAsIHRoaXMpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG5lZ2F0aXZlID8gLXZhbHVlIDogdmFsdWU7XG4gICAgICAgIGlmKGRpcmVjdGl2ZS5pc09yZGluYWwoKSl7XG4gICAgICAgICAgICBjb25zdCBvcmRpbmFsID0gdGhpcy5vcmRpbmFsVHJhbnNmb3JtKHJlc3VsdCk7XG4gICAgICAgICAgICB0aGlzLmluZGV4ICs9IG9yZGluYWwubGVuZ3RoIC0gKHRoaXMuaW5kZXggLSBzdGFydCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgcGFyc2VNb250aE5hbWUoKXtcbiAgICAgICAgY29uc3QgbmFtZXMgPSB0aGlzLnNob3J0TW9udGhOYW1lcy5zbGljZSgpO1xuICAgICAgICBuYW1lcy5wdXNoKC4uLnRoaXMubG9uZ01vbnRoTmFtZXMpO1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMucGFyc2VJbmRleEluTGlzdChuYW1lcyk7XG4gICAgICAgIGlmKGluZGV4ID09PSB1bmRlZmluZWQpIHRocm93IG5ldyBUaW1lc3RhbXBQYXJzZUVycm9yKFxuICAgICAgICAgICAgXCJGYWlsZWQgdG8gcGFyc2UgbW9udGggbmFtZS5cIiwgdGhpc1xuICAgICAgICApO1xuICAgICAgICByZXR1cm4gaW5kZXggJSAxMjtcbiAgICB9XG4gICAgcGFyc2VXZWVrZGF5TmFtZSgpe1xuICAgICAgICBjb25zdCBuYW1lcyA9IHRoaXMuc2hvcnRXZWVrZGF5TmFtZXMuc2xpY2UoKTtcbiAgICAgICAgbmFtZXMucHVzaCguLi50aGlzLmxvbmdXZWVrZGF5TmFtZXMpO1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMucGFyc2VJbmRleEluTGlzdChuYW1lcyk7XG4gICAgICAgIGlmKGluZGV4ID09PSB1bmRlZmluZWQpIHRocm93IG5ldyBUaW1lc3RhbXBQYXJzZUVycm9yKFxuICAgICAgICAgICAgXCJGYWlsZWQgdG8gcGFyc2Ugd2Vla2RheSBuYW1lLlwiLCB0aGlzXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBpbmRleCAlIDc7XG4gICAgfVxuICAgIHBhcnNlTWVyaWRpZW1OYW1lKCl7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5wYXJzZUluZGV4SW5MaXN0KHRoaXMubWVyaWRpZW1OYW1lcyk7XG4gICAgICAgIGlmKGluZGV4ID09PSB1bmRlZmluZWQpIHRocm93IG5ldyBUaW1lc3RhbXBQYXJzZUVycm9yKFxuICAgICAgICAgICAgXCJGYWlsZWQgdG8gcGFyc2UgQU0vUE0uXCIsIHRoaXNcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIGluZGV4ICUgMjtcbiAgICB9XG4gICAgcGFyc2VFcmFOYW1lKCl7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5wYXJzZUluZGV4SW5MaXN0KHRoaXMuZXJhTmFtZXMpO1xuICAgICAgICBpZihpbmRleCA9PT0gdW5kZWZpbmVkKSB0aHJvdyBuZXcgVGltZXN0YW1wUGFyc2VFcnJvcihcbiAgICAgICAgICAgIFwiRmFpbGVkIHRvIHBhcnNlIGVyYSBuYW1lLlwiLCB0aGlzXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBpbmRleCAlIDI7XG4gICAgfVxuICAgIHBhcnNlSW5kZXhJbkxpc3QobGlzdCl7XG4gICAgICAgIGNvbnN0IHBvc3NpYmxlID0gbGlzdC5zbGljZSgpO1xuICAgICAgICBsZXQgcG9zc2libGVDb3VudCA9IHBvc3NpYmxlLmxlbmd0aDtcbiAgICAgICAgbGV0IG1hdGNoSW5kZXggPSB1bmRlZmluZWQ7XG4gICAgICAgIGxldCBtYXRjaExlbmd0aCA9IDA7XG4gICAgICAgIGZvcihsZXQgaSA9IDA7IHBvc3NpYmxlQ291bnQgJiYgdGhpcy5pbmRleCArIGkgPCB0aGlzLnN0cmluZy5sZW5ndGg7IGkrKyl7XG4gICAgICAgICAgICBjb25zdCBjaCA9IHRoaXMuc3RyaW5nW3RoaXMuaW5kZXggKyBpXS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgZm9yKGxldCBqID0gMDsgaiA8IHBvc3NpYmxlLmxlbmd0aDsgaisrKXtcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtID0gcG9zc2libGVbal07XG4gICAgICAgICAgICAgICAgaWYoIWl0ZW0pIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGlmKGkgPj0gaXRlbS5sZW5ndGggfHwgaXRlbVtpXS50b0xvd2VyQ2FzZSgpICE9PSBjaCl7XG4gICAgICAgICAgICAgICAgICAgIHBvc3NpYmxlW2pdID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgcG9zc2libGVDb3VudC0tO1xuICAgICAgICAgICAgICAgIH1lbHNlIGlmKDEgKyBpID09PSBpdGVtLmxlbmd0aCl7XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoSW5kZXggPSBqO1xuICAgICAgICAgICAgICAgICAgICBtYXRjaExlbmd0aCA9IDEgKyBpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZihtYXRjaEluZGV4ID09PSB1bmRlZmluZWQpe1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICB0aGlzLmluZGV4ICs9IG1hdGNoTGVuZ3RoO1xuICAgICAgICAgICAgcmV0dXJuIG1hdGNoSW5kZXg7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0VGltZXpvbmVOYW1lTGlzdCgpe1xuICAgICAgICBpZighdGhpcy50aW1lem9uZU5hbWVMaXN0KXtcbiAgICAgICAgICAgIHRoaXMudGltZXpvbmVOYW1lTGlzdCA9IFtdO1xuICAgICAgICAgICAgZm9yKGxldCBrZXkgaW4gdGhpcy50aW1lem9uZU5hbWVzKXtcbiAgICAgICAgICAgICAgICB0aGlzLnRpbWV6b25lTmFtZUxpc3QucHVzaChrZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnRpbWV6b25lTmFtZUxpc3Q7XG4gICAgfVxuICAgIHBhcnNlVGltZXpvbmVPZmZzZXQobW9kaWZpZXIpe1xuICAgICAgICBjb25zdCBzdGFydCA9IHRoaXMuaW5kZXg7XG4gICAgICAgIGNvbnN0IHNpZ24gPSB0aGlzLnN0cmluZ1t0aGlzLmluZGV4XTtcbiAgICAgICAgY29uc3QgaG91cnMgPSArdGhpcy5zdHJpbmcuc2xpY2UodGhpcy5pbmRleCArIDEsIHRoaXMuaW5kZXggKyAzKTtcbiAgICAgICAgbGV0IG1pbnV0ZXM7XG4gICAgICAgIGlmKHRoaXMuc3RyaW5nW3RoaXMuaW5kZXggKyAzXSA9PT0gXCI6XCIpe1xuICAgICAgICAgICAgbWludXRlcyA9ICt0aGlzLnN0cmluZy5zbGljZSh0aGlzLmluZGV4ICsgNCwgdGhpcy5pbmRleCArIDYpO1xuICAgICAgICAgICAgdGhpcy5pbmRleCArPSA2O1xuICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgIG1pbnV0ZXMgPSArdGhpcy5zdHJpbmcuc2xpY2UodGhpcy5pbmRleCArIDMsIHRoaXMuaW5kZXggKyA1KTtcbiAgICAgICAgICAgIHRoaXMuaW5kZXggKz0gNTtcbiAgICAgICAgfVxuICAgICAgICBpZighTnVtYmVyLmlzSW50ZWdlcihob3VycykgfHwgIU51bWJlci5pc0ludGVnZXIobWludXRlcykpe1xuICAgICAgICAgICAgdGhyb3cgbmV3IFRpbWVzdGFtcFBhcnNlRXJyb3IoXG4gICAgICAgICAgICAgICAgYEZhaWxlZCB0byBwYXJzZSB0aW1lem9uZSBvZmZzZXQgZnJvbSBzdHJpbmcgYCArXG4gICAgICAgICAgICAgICAgYFwiJHt0aGlzLnN0cmluZy5zbGljZShzdGFydCwgdGhpcy5pbmRleCl9XCIuYCwgdGhpc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvZmZzZXQgPSBtaW51dGVzICsgNjAgKiBob3VycztcbiAgICAgICAgaWYoc2lnbiA9PT0gXCIrXCIgfHwgc2lnbiA9PT0gXCLCsVwiKSByZXR1cm4gK29mZnNldDtcbiAgICAgICAgZWxzZSBpZihzaWduID09PSBcIi1cIikgcmV0dXJuIC1vZmZzZXQ7XG4gICAgICAgIGVsc2UgdGhyb3cgbmV3IFRpbWVzdGFtcFBhcnNlRXJyb3IoYFVua25vd24gdGltZXpvbmUgb2Zmc2V0IHNpZ24gXCIke3NpZ259XCIuYCwgdGhpcyk7XG4gICAgfVxufVxuXG5UaW1lc3RhbXBQYXJzZXIucGFyc2VGb3JtYXRTdHJpbmcgPSBmdW5jdGlvbiBwYXJzZUZvcm1hdFN0cmluZyhmb3JtYXQpe1xuICAgIGNvbnN0IHRva2VucyA9IFtdO1xuICAgIGxldCBkaXJlY3RpdmUgPSBmYWxzZTtcbiAgICBsZXQgbW9kaWZpZXIgPSB1bmRlZmluZWQ7XG4gICAgY29uc3QgZm9ybWF0U3RyaW5nID0gU3RyaW5nKGZvcm1hdCk7XG4gICAgaWYoIWZvcm1hdFN0cmluZyl7XG4gICAgICAgIHRocm93IG5ldyBUaW1lc3RhbXBQYXJzZUVycm9yKGBFbXB0eSBmb3JtYXQgc3RyaW5nLmAsIHtcbiAgICAgICAgICAgIGZvcm1hdDogZm9ybWF0U3RyaW5nXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBmdW5jdGlvbiBhZGRDaGFyYWN0ZXIoY2gpe1xuICAgICAgICBpZih0b2tlbnMubGVuZ3RoICYmICh0b2tlbnNbdG9rZW5zLmxlbmd0aCAtIDFdIGluc3RhbmNlb2YgRGlyZWN0aXZlLlN0cmluZ1Rva2VuKSl7XG4gICAgICAgICAgICBpZihpc0RpZ2l0KGNoKSA9PT0gaXNEaWdpdCh0b2tlbnNbdG9rZW5zLmxlbmd0aCAtIDFdLnN0cmluZ1swXSkpe1xuICAgICAgICAgICAgICAgIHRva2Vuc1t0b2tlbnMubGVuZ3RoIC0gMV0uYWRkQ2hhcmFjdGVyKGNoKTtcbiAgICAgICAgICAgIH1lbHNle1xuICAgICAgICAgICAgICAgIHRva2Vucy5wdXNoKG5ldyBEaXJlY3RpdmUuU3RyaW5nVG9rZW4oY2gpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICB0b2tlbnMucHVzaChuZXcgRGlyZWN0aXZlLlN0cmluZ1Rva2VuKGNoKSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZm9yKGxldCBjaCBvZiBmb3JtYXRTdHJpbmcpe1xuICAgICAgICBpZihkaXJlY3RpdmUgJiYgY2ggPT09IFwiJVwiKXtcbiAgICAgICAgICAgIGFkZENoYXJhY3RlcihcIiVcIik7XG4gICAgICAgICAgICBtb2RpZmllciA9IFwiXCI7XG4gICAgICAgICAgICBkaXJlY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgfWVsc2UgaWYoZGlyZWN0aXZlICYmIGNoID09PSBcIm5cIil7XG4gICAgICAgICAgICBhZGRDaGFyYWN0ZXIoXCJcXG5cIik7XG4gICAgICAgICAgICBtb2RpZmllciA9IFwiXCI7XG4gICAgICAgICAgICBkaXJlY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgfWVsc2UgaWYoZGlyZWN0aXZlICYmIGNoID09PSBcInRcIil7XG4gICAgICAgICAgICBhZGRDaGFyYWN0ZXIoXCJcXHRcIik7XG4gICAgICAgICAgICBtb2RpZmllciA9IFwiXCI7XG4gICAgICAgICAgICBkaXJlY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgfWVsc2UgaWYoZGlyZWN0aXZlICYmICFtb2RpZmllciAmJiAoXG4gICAgICAgICAgICBjaCA9PT0gXCItXCIgfHwgY2ggPT09IFwiX1wiIHx8IGNoID09PSBcIl5cIiB8fCBjaCA9PT0gXCI6XCJcbiAgICAgICAgKSl7XG4gICAgICAgICAgICBtb2RpZmllciArPSBjaDtcbiAgICAgICAgfWVsc2UgaWYoZGlyZWN0aXZlKXtcbiAgICAgICAgICAgIGNvbnN0IGRpciA9IERpcmVjdGl2ZS5nZXRCeU5hbWUoY2gpO1xuICAgICAgICAgICAgaWYoIWRpcikgdGhyb3cgbmV3IFRpbWVzdGFtcFBhcnNlRXJyb3IoYFVua25vd24gZGlyZWN0aXZlIFwiJSR7bW9kaWZpZXJ9JHtjaH1cIi5gLCB7XG4gICAgICAgICAgICAgICAgZm9ybWF0OiBmb3JtYXRTdHJpbmdcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZWxzZSBpZihkaXIucmV3cml0ZSkgdG9rZW5zLnB1c2goXG4gICAgICAgICAgICAgICAgLi4uZGlyLmdldFJld3JpdGVQYXJzZWQoVGltZXN0YW1wUGFyc2VyLnBhcnNlRm9ybWF0U3RyaW5nKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGVsc2UgdG9rZW5zLnB1c2goXG4gICAgICAgICAgICAgICAgbmV3IERpcmVjdGl2ZS5Ub2tlbihtb2RpZmllciwgZGlyKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIG1vZGlmaWVyID0gXCJcIjtcbiAgICAgICAgICAgIGRpcmVjdGl2ZSA9IGZhbHNlO1xuICAgICAgICB9ZWxzZSBpZihjaCA9PT0gXCIlXCIpe1xuICAgICAgICAgICAgbW9kaWZpZXIgPSBcIlwiO1xuICAgICAgICAgICAgZGlyZWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICBhZGRDaGFyYWN0ZXIoY2gpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmKGRpcmVjdGl2ZSkgdGhyb3cgbmV3IFRpbWVzdGFtcFBhcnNlRXJyb3IoXG4gICAgICAgIFwiRm91bmQgdW50ZXJtaW5hdGVkIGRpcmVjdGl2ZSBhdCB0aGUgZW5kIG9mIHRoZSBmb3JtYXQgc3RyaW5nLlwiLCB7XG4gICAgICAgICAgICBmb3JtYXQ6IGZvcm1hdFN0cmluZ1xuICAgICAgICB9XG4gICAgKTtcbiAgICBpZih0b2tlbnMubGVuZ3RoICYmIHRva2Vuc1t0b2tlbnMubGVuZ3RoIC0gMV0uc3RyaW5nID09PSBcIlpcIil7XG4gICAgICAgIHRva2Vucy56dWx1VGltZXpvbmUgPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gdG9rZW5zO1xufVxuXG5mdW5jdGlvbiBpc0xlYXBZZWFyKHllYXIpe1xuICAgIHJldHVybiB5ZWFyICUgNCA9PT0gMCAmJiAoeWVhciAlIDEwMCAhPT0gMCB8fCB5ZWFyICUgNDAwID09PSAwKTtcbn1cblxuXG5jb25zdCBtb250aExlbmd0aHMgPSB7XG4gICAgY29tbW9uOiBbMzEsIDI4LCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMxLCAzMCwgMzEsIDMwLCAzMV0sXG4gICAgbGVhcDogWzMxLCAyOSwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMSwgMzAsIDMxLCAzMCwgMzFdLFxuICAgIGZvclllYXI6IGZ1bmN0aW9uKHllYXIpe1xuICAgICAgICByZXR1cm4gaXNMZWFwWWVhcih5ZWFyKSA/IG1vbnRoTGVuZ3Rocy5sZWFwIDogbW9udGhMZW5ndGhzLmNvbW1vbjtcbiAgICB9LFxufTtcblxuLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzQ3ODk5Mi80MDk5MDIyXG5mdW5jdGlvbiBnZXRGaXJzdFdlZWtkYXlJblllYXIoeWVhcil7XG4gICAgY29uc3QgeSA9IHllYXIgLSAxO1xuICAgIHJldHVybiAoeWVhciAqIDM2NSArXG4gICAgICAgIE1hdGguZmxvb3IoeSAvIDQpIC0gTWF0aC5mbG9vcih5IC8gMTAwKSArIE1hdGguZmxvb3IoeSAvIDQwMClcbiAgICApICUgNztcbn1cblxuY29uc3QgZGVmYXVsdFRpbWV6b25lTmFtZXMgPSB7XG4gICAgXCJBQ0RUXCI6ICsxMC41LFxuICAgIFwiQUNTVFwiOiArOS41LFxuICAgIFwiQUNUXCI6IC01LFxuICAgIFwiQUNXU1RcIjogKzguNzUsXG4gICAgXCJBRFRcIjogLTMsXG4gICAgXCJBRURUXCI6ICsxMSxcbiAgICBcIkFFU1RcIjogKzEwLFxuICAgIFwiQUZUXCI6ICs0LjUsXG4gICAgXCJBS0RUXCI6IC04LFxuICAgIFwiQUtTVFwiOiAtOSxcbiAgICBcIkFNU1RcIjogLTMsXG4gICAgXCJBTVRcIjogLTQsXG4gICAgXCJBTVRcIjogKzQsXG4gICAgXCJBUlRcIjogLTMsXG4gICAgXCJBU1RcIjogKzMsXG4gICAgXCJBU1RcIjogLTQsXG4gICAgXCJBV1NUXCI6ICs4LFxuICAgIFwiQVpPU1RcIjogMCxcbiAgICBcIkFaT1RcIjogLTEsXG4gICAgXCJBWlRcIjogKzQsXG4gICAgXCJCRFRcIjogKzgsXG4gICAgXCJCSU9UXCI6ICs2LFxuICAgIFwiQklUXCI6IC0xMixcbiAgICBcIkJPVFwiOiAtNCxcbiAgICBcIkJSU1RcIjogLTIsXG4gICAgXCJCUlRcIjogLTMsXG4gICAgXCJCU1RcIjogKzYsXG4gICAgXCJCU1RcIjogKzExLFxuICAgIFwiQlNUXCI6ICsxLFxuICAgIFwiQlRUXCI6ICs2LFxuICAgIFwiQ0FUXCI6ICsyLFxuICAgIFwiQ0NUXCI6ICs2LjUsXG4gICAgXCJDRFRcIjogLTUsXG4gICAgXCJDRFRcIjogLTQsXG4gICAgXCJDRVNUXCI6ICsyLFxuICAgIFwiQ0VUXCI6ICsxLFxuICAgIFwiQ0hBRFRcIjogKzEzLjc1LFxuICAgIFwiQ0hBU1RcIjogKzEyLjc1LFxuICAgIFwiQ0hPVFwiOiArOCxcbiAgICBcIkNIT1NUXCI6ICs5LFxuICAgIFwiQ0hTVFwiOiArMTAsXG4gICAgXCJDSFVUXCI6ICsxMCxcbiAgICBcIkNJU1RcIjogLTgsXG4gICAgXCJDSVRcIjogKzgsXG4gICAgXCJDS1RcIjogLTEwLFxuICAgIFwiQ0xTVFwiOiAtMyxcbiAgICBcIkNMVFwiOiAtNCxcbiAgICBcIkNPU1RcIjogLTQsXG4gICAgXCJDT1RcIjogLTUsXG4gICAgXCJDU1RcIjogLTYsXG4gICAgXCJDU1RcIjogKzgsXG4gICAgXCJDU1RcIjogLTUsXG4gICAgXCJDVFwiOiArOCxcbiAgICBcIkNWVFwiOiAtMSxcbiAgICBcIkNXU1RcIjogKzguNzUsXG4gICAgXCJDWFRcIjogKzcsXG4gICAgXCJEQVZUXCI6ICs3LFxuICAgIFwiRERVVFwiOiArMTAsXG4gICAgXCJERlRcIjogKzEsXG4gICAgXCJFQVNTVFwiOiAtNSxcbiAgICBcIkVBU1RcIjogLTYsXG4gICAgXCJFQVRcIjogKzMsXG4gICAgXCJFQ1RcIjogLTQsXG4gICAgXCJFQ1RcIjogLTUsXG4gICAgXCJFRFRcIjogLTQsXG4gICAgXCJFRVNUXCI6ICszLFxuICAgIFwiRUVUXCI6ICsyLFxuICAgIFwiRUdTVFwiOiAwLFxuICAgIFwiRUdUXCI6IC0xLFxuICAgIFwiRUlUXCI6ICs5LFxuICAgIFwiRVNUXCI6IC01LFxuICAgIFwiRkVUXCI6ICszLFxuICAgIFwiRkpUXCI6ICsxMixcbiAgICBcIkZLU1RcIjogLTMsXG4gICAgXCJGS1RcIjogLTQsXG4gICAgXCJGTlRcIjogLTIsXG4gICAgXCJHQUxUXCI6IC02LFxuICAgIFwiR0FNVFwiOiAtOSxcbiAgICBcIkdFVFwiOiArNCxcbiAgICBcIkdGVFwiOiAtMyxcbiAgICBcIkdJTFRcIjogKzEyLFxuICAgIFwiR0lUXCI6IC05LFxuICAgIFwiR01UXCI6IDAsXG4gICAgXCJHU1RcIjogLTIsXG4gICAgXCJHU1RcIjogKzQsXG4gICAgXCJHWVRcIjogLTQsXG4gICAgXCJIRFRcIjogLTksXG4gICAgXCJIQUVDXCI6ICsyLFxuICAgIFwiSFNUXCI6IC0xMCxcbiAgICBcIkhLVFwiOiArOCxcbiAgICBcIkhNVFwiOiArNSxcbiAgICBcIkhPVlNUXCI6ICs4LFxuICAgIFwiSE9WVFwiOiArNyxcbiAgICBcIklDVFwiOiArNyxcbiAgICBcIklETFdcIjogLTEyLFxuICAgIFwiSURUXCI6ICszLFxuICAgIFwiSU9UXCI6ICszLFxuICAgIFwiSVJEVFwiOiArNC41LFxuICAgIFwiSVJLVFwiOiArOCxcbiAgICBcIklSU1RcIjogKzMuNSxcbiAgICBcIklTVFwiOiArNS41LFxuICAgIFwiSVNUXCI6ICsxLFxuICAgIFwiSVNUXCI6ICsyLFxuICAgIFwiSlNUXCI6ICs5LFxuICAgIFwiS0dUXCI6ICs2LFxuICAgIFwiS09TVFwiOiArMTEsXG4gICAgXCJLUkFUXCI6ICs3LFxuICAgIFwiS1NUXCI6ICs5LFxuICAgIFwiTEhTVFwiOiArMTAuNSxcbiAgICBcIkxIU1RcIjogKzExLFxuICAgIFwiTElOVFwiOiArMTQsXG4gICAgXCJNQUdUXCI6ICsxMixcbiAgICBcIk1BUlRcIjogLTkuNSxcbiAgICBcIk1BV1RcIjogKzUsXG4gICAgXCJNRFRcIjogLTYsXG4gICAgXCJNRVRcIjogKzEsXG4gICAgXCJNRVNUXCI6ICsyLFxuICAgIFwiTUhUXCI6ICsxMixcbiAgICBcIk1JU1RcIjogKzExLFxuICAgIFwiTUlUXCI6IC05LjUsXG4gICAgXCJNTVRcIjogKzYuNSxcbiAgICBcIk1TS1wiOiArMyxcbiAgICBcIk1TVFwiOiArOCxcbiAgICBcIk1TVFwiOiAtNyxcbiAgICBcIk1VVFwiOiArNCxcbiAgICBcIk1WVFwiOiArNSxcbiAgICBcIk1ZVFwiOiArOCxcbiAgICBcIk5DVFwiOiArMTEsXG4gICAgXCJORFRcIjogLTIuNSxcbiAgICBcIk5GVFwiOiArMTEsXG4gICAgXCJOUFRcIjogKzUuNzUsXG4gICAgXCJOU1RcIjogLTMuNSxcbiAgICBcIk5UXCI6IC0zLjUsXG4gICAgXCJOVVRcIjogLTExLFxuICAgIFwiTlpEVFwiOiArMTMsXG4gICAgXCJOWlNUXCI6ICsxMixcbiAgICBcIk9NU1RcIjogKzYsXG4gICAgXCJPUkFUXCI6ICs1LFxuICAgIFwiUERUXCI6IC03LFxuICAgIFwiUEVUXCI6IC01LFxuICAgIFwiUEVUVFwiOiArMTIsXG4gICAgXCJQR1RcIjogKzEwLFxuICAgIFwiUEhPVFwiOiArMTMsXG4gICAgXCJQSFRcIjogKzgsXG4gICAgXCJQS1RcIjogKzUsXG4gICAgXCJQTURUXCI6IC0yLFxuICAgIFwiUE1TVFwiOiAtMyxcbiAgICBcIlBPTlRcIjogKzExLFxuICAgIFwiUFNUXCI6IC04LFxuICAgIFwiUFNUXCI6ICs4LFxuICAgIFwiUFlTVFwiOiAtMyxcbiAgICBcIlBZVFwiOiAtNCxcbiAgICBcIlJFVFwiOiArNCxcbiAgICBcIlJPVFRcIjogLTMsXG4gICAgXCJTQUtUXCI6ICsxMSxcbiAgICBcIlNBTVRcIjogKzQsXG4gICAgXCJTQVNUXCI6ICsyLFxuICAgIFwiU0JUXCI6ICsxMSxcbiAgICBcIlNDVFwiOiArNCxcbiAgICBcIlNEVFwiOiAtMTAsXG4gICAgXCJTR1RcIjogKzgsXG4gICAgXCJTTFNUXCI6ICs1LjUsXG4gICAgXCJTUkVUXCI6ICsxMSxcbiAgICBcIlNSVFwiOiAtMyxcbiAgICBcIlNTVFwiOiAtMTEsXG4gICAgXCJTU1RcIjogKzgsXG4gICAgXCJTWU9UXCI6ICszLFxuICAgIFwiVEFIVFwiOiAtMTAsXG4gICAgXCJUSEFcIjogKzcsXG4gICAgXCJURlRcIjogKzUsXG4gICAgXCJUSlRcIjogKzUsXG4gICAgXCJUS1RcIjogKzEzLFxuICAgIFwiVExUXCI6ICs5LFxuICAgIFwiVE1UXCI6ICs1LFxuICAgIFwiVFJUXCI6ICszLFxuICAgIFwiVE9UXCI6ICsxMyxcbiAgICBcIlRWVFwiOiArMTIsXG4gICAgXCJVTEFTVFwiOiArOSxcbiAgICBcIlVMQVRcIjogKzgsXG4gICAgXCJVU1pcIjogKzIsXG4gICAgXCJVVENcIjogMCxcbiAgICBcIlVZU1RcIjogLTIsXG4gICAgXCJVWVRcIjogLTMsXG4gICAgXCJVWlRcIjogKzUsXG4gICAgXCJWRVRcIjogLTQsXG4gICAgXCJWTEFUXCI6ICsxMCxcbiAgICBcIlZPTFRcIjogKzQsXG4gICAgXCJWT1NUXCI6ICs2LFxuICAgIFwiVlVUXCI6ICsxMSxcbiAgICBcIldBS1RcIjogKzEyLFxuICAgIFwiV0FTVFwiOiArMixcbiAgICBcIldBVFwiOiArMSxcbiAgICBcIldFU1RcIjogKzEsXG4gICAgXCJXRVRcIjogMCxcbiAgICBcIldJVFwiOiArNyxcbiAgICBcIldTVFwiOiArOCxcbiAgICBcIllBS1RcIjogKzksXG4gICAgXCJZRUtUXCI6ICs1LFxuICAgIFwiWlwiOiAwLFxufTtcblxuXG5pZih0eXBlb2YobW9kdWxlKSAhPT0gXCJ1bmRlZmluZWRcIil7XG4gICAgbW9kdWxlLmV4cG9ydHMgPSBzdHJ0aW1lO1xufWVsc2UgaWYodHlwZW9mKHdpbmRvdykgIT09IFwidW5kZWZpbmVkXCIpe1xuICAgIHdpbmRvdy5zdHJ0aW1lID0gc3RydGltZTtcbn1cbiIsIi8qIGdsb2JhbCBYTUxIdHRwUmVxdWVzdCAqL1xyXG5cclxuaW1wb3J0IHsgaXNPYmplY3QgfSBmcm9tICcuL29iamVjdC9pc09iamVjdCc7XHJcbmltcG9ydCB7IHNlcmlhbGl6ZSB9IGZyb20gJy4vb2JqZWN0L3NlcmlhbGl6ZSc7XHJcbmltcG9ydCB7IHRvVW5kZXJzY29yZSB9IGZyb20gJy4vc3RyaW5nL3RvVW5kZXJzY29yZSc7XHJcblxyXG5jb25zdCB7IHBhcnNlLCBzdHJpbmdpZnkgfSA9IEpTT047XHJcblxyXG4vLyBhamF4IHdyYXBwZXJcclxuZXhwb3J0IGNvbnN0IGFqYXggPSAoYXBpVXJsLCBzdWNjZXNzLCBlcnJvciwgcGFyYW1zLCBtZXRob2QgPSAnR0VUJykgPT4ge1xyXG4gIGNvbnN0IHhtbEh0dHAgICA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xyXG4gIGNvbnN0IHVybCAgICAgICA9IChtZXRob2QgPT09ICdHRVQnICYmIHBhcmFtcykgPyBgJHthcGlVcmx9PyR7KHNlcmlhbGl6ZShwYXJhbXMsIHRvVW5kZXJzY29yZSkpfWAgOiBhcGlVcmw7XHJcbiAgY29uc3QgaXNTdWNjZXNzID0gKHN0YXR1cykgPT4gKChzdGF0dXMgPj0gMjAwICYmIHN0YXR1cyA8IDMwMCkgfHwgc3RhdHVzID09PSAzMDQpO1xyXG5cclxuICB4bWxIdHRwLm9wZW4obWV0aG9kLCB1cmwpO1xyXG4gIHhtbEh0dHAuc2V0UmVxdWVzdEhlYWRlcignQ29udGVudC10eXBlJywgJ2FwcGxpY2F0aW9uL3ZuZC5hcGkranNvbicpO1xyXG5cclxuICB4bWxIdHRwLm9ucmVhZHlzdGF0ZWNoYW5nZSA9ICgpID0+IHtcclxuICAgIGxldCByZXNwb25zZTtcclxuXHJcbiAgICBpZiAoeG1sSHR0cC5yZWFkeVN0YXRlID09PSA0KSB7XHJcbiAgICAgIGlmIChpc1N1Y2Nlc3MoeG1sSHR0cC5zdGF0dXMpKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIHJlc3BvbnNlID0gcGFyc2UoeG1sSHR0cC5yZXNwb25zZVRleHQpO1xyXG4gICAgICAgIH0gY2F0Y2goZSkge1xyXG4gICAgICAgICAgcmVzcG9uc2UgPSB4bWxIdHRwO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc3VjY2VzcyhyZXNwb25zZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZXJyb3IoeG1sSHR0cCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9O1xyXG5cclxuICBpZiAoaXNPYmplY3QocGFyYW1zKSAmJiBtZXRob2QgIT09ICdHRVQnKSB7XHJcbiAgICB4bWxIdHRwLnNlbmQoc3RyaW5naWZ5KHBhcmFtcykpO1xyXG4gIH0gZWxzZSB7XHJcbiAgICB4bWxIdHRwLnNlbmQoKTtcclxuICB9XHJcbn07XHJcbiIsImV4cG9ydCAqIGZyb20gJy4vaXNBcnJheSc7XHJcbiIsImNvbnN0IHsgcHJvdG90eXBlOiB7IHRvU3RyaW5nIH0gfSA9IE9iamVjdDtcclxuXHJcbmV4cG9ydCBjb25zdCBpc0FycmF5ID0gKGEpID0+IHtcclxuICByZXR1cm4gdG9TdHJpbmcuY2FsbChhKSA9PT0gJ1tvYmplY3QgQXJyYXldJztcclxufTtcclxuIiwiLyogZ2xvYmFsIEludGwgKi9cclxuXHJcbmltcG9ydCB7IGdldFN5bWJvbEZyb21DdXJyZW5jeSB9IGZyb20gJ2N1cnJlbmN5LXN5bWJvbC1tYXAnO1xyXG5cclxuZnVuY3Rpb24gdG9Mb2NhbGVTdHJpbmdTdXBwb3J0c09wdGlvbnMoKSB7XHJcbiAgcmV0dXJuICEhKHR5cGVvZiBJbnRsID09PSAnb2JqZWN0JyAmJiBJbnRsICYmIHR5cGVvZiBJbnRsLk51bWJlckZvcm1hdCA9PT0gJ2Z1bmN0aW9uJyk7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBjdXJyZW5jeUZvcm1hdHRlciA9ICh2YWx1ZSwgbGFuZywgY3VycmVuY3ksIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA9IDAsXHJcbiAgbWF4aW11bUZyYWN0aW9uRGlnaXRzID0gMykgPT4ge1xyXG4gIGlmICh0b0xvY2FsZVN0cmluZ1N1cHBvcnRzT3B0aW9ucygpICYmIGN1cnJlbmN5KSB7XHJcbiAgICBjb25zdCBpc0RvbGxhciAgICAgPSAoKSA9PiBnZXRTeW1ib2xGcm9tQ3VycmVuY3koY3VycmVuY3kpID09PSAnJCc7XHJcbiAgICBjb25zdCBvcHRpb25zICAgICAgPSB7XHJcbiAgICAgIHN0eWxlOiAnY3VycmVuY3knLFxyXG4gICAgICBjdXJyZW5jeSxcclxuICAgICAgY3VycmVuY3lEaXNwbGF5OiBpc0RvbGxhciA/ICdzeW1ib2wnIDogJ2NvZGUnLFxyXG4gICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHMsXHJcbiAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0c1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBudW1iZXJGb3JtYXQgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQobGFuZywgb3B0aW9ucyk7XHJcbiAgICBjb25zdCBzdHIgICAgICAgICAgPSBudW1iZXJGb3JtYXQuZm9ybWF0KHZhbHVlKTtcclxuXHJcbiAgICBpZiAoaXNEb2xsYXIgfHwgIWdldFN5bWJvbEZyb21DdXJyZW5jeShjdXJyZW5jeSkpIHtcclxuICAgICAgcmV0dXJuIHN0cjtcclxuICAgIH1cclxuICAgIHJldHVybiBzdHIucmVwbGFjZShjdXJyZW5jeSwgZ2V0U3ltYm9sRnJvbUN1cnJlbmN5KGN1cnJlbmN5KSk7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gdmFsdWU7XHJcbn07XHJcbiIsImV4cG9ydCAqIGZyb20gJy4vY3VycmVuY3lGb3JtYXR0ZXInO1xyXG4iLCJleHBvcnQgKiBmcm9tICcuL21vbnRoTGVuZ3RoJztcclxuIiwiLy8gRGF0ZSB1dGlsc1xyXG5jb25zdCBkYXlzSW5Nb250aCA9IFszMSwgMjgsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzEsIDMwLCAzMSwgMzAsIDMxXTtcclxuY29uc3QgaXNMZWFwWWVhciAgPSAoeWVhcikgPT4gKCh5ZWFyICUgNCA9PT0gMCkgJiYgKHllYXIgJSAxMDAgIT09IDApKSB8fCAoeWVhciAlIDQwMCA9PT0gMCk7XHJcblxyXG5leHBvcnQgY29uc3QgbW9udGhMZW5ndGggPSAoeWVhciwgbW9udGgpID0+IHtcclxuICBsZXQgZGF5cyA9IGRheXNJbk1vbnRoW21vbnRoXTtcclxuICBpZiAobW9udGggPT09IDEgJiYgaXNMZWFwWWVhcih5ZWFyKSkge1xyXG4gICAgZGF5cyA9IDI5O1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIGRheXM7XHJcbn07XHJcbiIsImltcG9ydCB7IHJlbW92ZUNsYXNzIH0gZnJvbSAnLi9yZW1vdmVDbGFzcyc7XHJcbmltcG9ydCB7IHNldENsYXNzTmFtZSB9IGZyb20gJy4vc2V0Q2xhc3NOYW1lJztcclxuaW1wb3J0IHsgZ2V0Q2xhc3NOYW1lIH0gZnJvbSAnLi9nZXRDbGFzc05hbWUnO1xyXG5cclxuZXhwb3J0IGNvbnN0IGFkZENsYXNzID0gKGVsLCAuLi5jbGFzc05hbWVzKSA9PiB7XHJcbiAgY29uc3QgbmFtZSA9IGNsYXNzTmFtZXM7XHJcblxyXG4gIGlmICh0eXBlb2YgZWwuY2xhc3NMaXN0ICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgbmFtZS5mb3JFYWNoKChjbHMpID0+IHtcclxuICAgICAgaWYgKGNscy50cmltKCkpIHtcclxuICAgICAgICBlbC5jbGFzc0xpc3QuYWRkKGNscyk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH0gZWxzZSB7XHJcbiAgICByZW1vdmVDbGFzcyhlbCwgbmFtZSk7XHJcbiAgICBjb25zdCBjbHMgPSBgJHtnZXRDbGFzc05hbWUoZWwpfSAke25hbWUuam9pbignICcpfWA7XHJcbiAgICBzZXRDbGFzc05hbWUoZWwsIGNscyk7XHJcbiAgfVxyXG59O1xyXG4iLCIvKiBnbG9iYWwgZG9jdW1lbnQgKi9cclxuXHJcbmNvbnN0IHsga2V5cyB9ID0gT2JqZWN0O1xyXG5cclxuLyoqXHJcbiAqIENyZWF0ZSBIVE1MRWxlbWVudCB3aXRoIGF0dHJpYnV0ZXNcclxuICogQHBhcmFtIG5hbWUge1N0cmluZ31cclxuICogQHBhcmFtIGF0dHJzIHtPYmplY3R9XHJcbiAqIEByZXR1cm5zIHtIVE1MRWxlbWVudH1cclxuICovXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVFbGVtZW50ID0gKG5hbWUsIGF0dHJzKSA9PiB7XHJcbiAgY29uc3QgcGFyYW1zICA9IGF0dHJzIHx8IHt9O1xyXG4gIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KG5hbWUpO1xyXG5cclxuICBrZXlzKHBhcmFtcykubWFwKChpKSA9PiBlbGVtZW50LnNldEF0dHJpYnV0ZShpLCBwYXJhbXNbaV0pKTtcclxuXHJcbiAgcmV0dXJuIGVsZW1lbnQ7XHJcbn07XHJcbiIsImV4cG9ydCBjb25zdCBkZXN0cm95RWxlbWVudCA9IChlbGVtZW50KSA9PiB7XHJcbiAgaWYgKGVsZW1lbnQucGFyZW50Tm9kZSAmJiBlbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQpIHtcclxuICAgIGVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlbGVtZW50KTtcclxuICB9XHJcbiAgcmV0dXJuIGVsZW1lbnQ7XHJcbn07XHJcbiIsImltcG9ydCB7IGNyZWF0ZUVsZW1lbnQgfSBmcm9tICcuL2NyZWF0ZUVsZW1lbnQnO1xyXG5cclxuZXhwb3J0IGNvbnN0IGVsZW1lbnRGcm9tU3RyaW5nID0gKHN0cmluZykgPT4ge1xyXG4gIGNvbnN0IGVsZW1lbnQgPSBjcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuXHJcbiAgZWxlbWVudC5pbm5lckhUTUwgPSBzdHJpbmc7XHJcblxyXG4gIHJldHVybiBlbGVtZW50LmNoaWxkcmVuWzBdO1xyXG59O1xyXG4iLCJleHBvcnQgY29uc3QgZmluZEJ5Q2xhc3NOYW1lID0gKGNvbnRleHQsIG5hbWUpID0+IGNvbnRleHQucXVlcnlTZWxlY3RvcihgLiR7bmFtZX1gKTtcclxuIiwiZXhwb3J0IGNvbnN0IGdldENsYXNzTmFtZSA9IChlbCkgPT4ge1xyXG4gIC8vIENhbid0IHVzZSBqdXN0IFNWR0FuaW1hdGVkU3RyaW5nIGhlcmUgc2luY2Ugbm9kZXMgd2l0aGluIGEgRnJhbWUgaW4gSUUgaGF2ZVxyXG4gIC8vIGNvbXBsZXRlbHkgc2VwYXJhdGVseSBTVkdBbmltYXRlZFN0cmluZyBiYXNlIGNsYXNzZXNcclxuICBpZiAoZWwuY2xhc3NOYW1lIGluc3RhbmNlb2YgZWwub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5TVkdBbmltYXRlZFN0cmluZykge1xyXG4gICAgcmV0dXJuIGVsLmNsYXNzTmFtZS5iYXNlVmFsO1xyXG4gIH1cclxuICByZXR1cm4gZWwuY2xhc3NOYW1lO1xyXG59O1xyXG4iLCJpbXBvcnQgeyB0cmF2ZXJzZVRvUGFyZW50V2l0aEF0dHIgfSBmcm9tICcuL3RyYXZlcnNlVG9QYXJlbnRXaXRoQXR0cic7XHJcblxyXG4vKipcclxuICogRmluZCBIVE1MRWxlbWVudCBhdHRyaWJ1dGUsIGluIHRoZSBkb20tdHJlZSwgYnViYmxlcyB1cFxyXG4gKiBAcGFyYW0gZWwge0hUTUxFbGVtZW50fVxyXG4gKiBAcGFyYW0gYXR0clxyXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IGdldFBhcmVudEF0dHJpYnV0ZSA9IChlbCwgYXR0cikgPT4gdHJhdmVyc2VUb1BhcmVudFdpdGhBdHRyKGVsLCBhdHRyKS52YWx1ZTtcclxuIiwiaW1wb3J0IHsgZ2V0Q2xhc3NOYW1lIH0gZnJvbSAnLi9nZXRDbGFzc05hbWUnO1xyXG5cclxuZXhwb3J0IGNvbnN0IGhhc0NsYXNzID0gKGVsLCBuYW1lKSA9PiB7XHJcbiAgaWYgKHR5cGVvZiBlbC5jbGFzc0xpc3QgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICByZXR1cm4gZWwuY2xhc3NMaXN0LmNvbnRhaW5zKG5hbWUpO1xyXG4gIH1cclxuICBjb25zdCBjbGFzc05hbWUgPSBnZXRDbGFzc05hbWUoZWwpO1xyXG4gIHJldHVybiBuZXcgUmVnRXhwKGAoXnwgKSR7bmFtZX0oIHwkKWAsICdnaScpLnRlc3QoY2xhc3NOYW1lKTtcclxufTtcclxuIiwiZXhwb3J0ICogZnJvbSAnLi9hZGRDbGFzcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vY3JlYXRlRWxlbWVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZGVzdHJveUVsZW1lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2VsZW1lbnRGcm9tU3RyaW5nJztcclxuZXhwb3J0ICogZnJvbSAnLi9maW5kQnlDbGFzc05hbWUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2dldENsYXNzTmFtZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZ2V0UGFyZW50QXR0cmlidXRlJztcclxuZXhwb3J0ICogZnJvbSAnLi9oYXNDbGFzcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vaXNJbnNpZGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL3JlbW92ZUNsYXNzJztcclxuZXhwb3J0ICogZnJvbSAnLi9zZXRDbGFzc05hbWUnO1xyXG5leHBvcnQgKiBmcm9tICcuL3RyYXZlcnNlVG9QYXJlbnRXaXRoQXR0cic7XHJcbiIsImltcG9ydCB7IGlzIH0gZnJvbSAnLi4vaXMnO1xyXG5cclxuLyoqXHJcbiAqIENoZWNrIGlmIHNvbWUgSFRNTEVsZW1lbnQgaXMgaW5zaWRlIGFub3RoZXIgb25lXHJcbiAqIEBwYXJhbSBjaGlsZCB7SFRNTEVsZW1lbnR9XHJcbiAqIEBwYXJhbSBwYXJlbnQge0hUTUxFbGVtZW50fVxyXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cclxuICovXHJcbmV4cG9ydCBjb25zdCBpc0luc2lkZSA9IChjaGlsZCwgcGFyZW50KSA9PiB7XHJcbiAgbGV0IGN1cnJlbnQgPSBjaGlsZDtcclxuXHJcbiAgd2hpbGUgKGN1cnJlbnQgIT09IHBhcmVudCkge1xyXG4gICAgaWYgKCFpcyhjdXJyZW50KSB8fCBjdXJyZW50LnRhZ05hbWUgPT09ICdCT0RZJyB8fCBjdXJyZW50LnRhZ05hbWUgPT09ICdIVE1MJykge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBjdXJyZW50ID0gY3VycmVudC5wYXJlbnROb2RlO1xyXG4gIH1cclxuICByZXR1cm4gdHJ1ZTtcclxufTtcclxuIiwiaW1wb3J0IHsgZ2V0Q2xhc3NOYW1lIH0gZnJvbSAnLi9nZXRDbGFzc05hbWUnO1xyXG5pbXBvcnQgeyBzZXRDbGFzc05hbWUgfSBmcm9tICcuL3NldENsYXNzTmFtZSc7XHJcblxyXG5leHBvcnQgY29uc3QgcmVtb3ZlQ2xhc3MgPSAoZWwsIC4uLmNsYXNzTmFtZXMpID0+IHtcclxuICBjb25zdCBuYW1lID0gY2xhc3NOYW1lcztcclxuXHJcbiAgaWYgKHR5cGVvZiBlbC5jbGFzc0xpc3QgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICBuYW1lLmZvckVhY2goKGNscykgPT4ge1xyXG4gICAgICBpZiAoY2xzLnRyaW0oKSkge1xyXG4gICAgICAgIGVsLmNsYXNzTGlzdC5yZW1vdmUoY2xzKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfSBlbHNlIHtcclxuICAgIGNvbnN0IHJlZ2V4ICAgICA9IG5ldyBSZWdFeHAoYChefCApJHtuYW1lLmpvaW4oJ3wnKX0oIHwkKWAsICdnaScpO1xyXG4gICAgY29uc3QgY2xhc3NOYW1lID0gZ2V0Q2xhc3NOYW1lKGVsKS5yZXBsYWNlKHJlZ2V4LCAnICcpO1xyXG4gICAgc2V0Q2xhc3NOYW1lKGVsLCBjbGFzc05hbWUpO1xyXG4gIH1cclxufTtcclxuIiwiZXhwb3J0IGNvbnN0IHNldENsYXNzTmFtZSA9IChlbCwgY2xhc3NOYW1lKSA9PiB7XHJcbiAgZWwuc2V0QXR0cmlidXRlKCdjbGFzcycsIGNsYXNzTmFtZSk7XHJcbn07XHJcbiIsImltcG9ydCB7IGlzIH0gZnJvbSAnLi4vaXMnO1xyXG5cclxuZXhwb3J0IGNvbnN0IHRyYXZlcnNlVG9QYXJlbnRXaXRoQXR0ciA9IChlbGVtZW50LCBhdHRyaWJ1dGUpID0+IHtcclxuICBsZXQgcGFyZW50ID0gZWxlbWVudDtcclxuICBsZXQgdmFsdWUgID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUoYXR0cmlidXRlKTtcclxuICB3aGlsZSAoIWlzKHZhbHVlKSkge1xyXG4gICAgcGFyZW50ID0gcGFyZW50LnBhcmVudE5vZGU7XHJcbiAgICBpZiAocGFyZW50ICYmIHR5cGVvZiBwYXJlbnQuZ2V0QXR0cmlidXRlID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgIHZhbHVlID0gcGFyZW50LmdldEF0dHJpYnV0ZShhdHRyaWJ1dGUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcGFyZW50ID0gbnVsbDtcclxuICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiB7XHJcbiAgICB2YWx1ZSxcclxuICAgIHBhcmVudFxyXG4gIH07XHJcbn07XHJcbiIsImV4cG9ydCBkZWZhdWx0IGNsYXNzIEVtaXR0ZXIge1xuICBvbihldmVudCwgbGlzdGVuZXIpIHtcbiAgICB0aGlzLmV2ZW50cyAgICAgICAgPSB0aGlzLmV2ZW50cyB8fCB7fTtcbiAgICB0aGlzLmV2ZW50c1tldmVudF0gPSB0aGlzLmV2ZW50c1tldmVudF0gfHwgW107XG4gICAgdGhpcy5ldmVudHNbZXZlbnRdLnB1c2gobGlzdGVuZXIpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgb25jZShldmVudCwgbGlzdGVuZXIpIHtcbiAgICBjb25zdCBzZWxmID0gdGhpcztcblxuICAgIGZ1bmN0aW9uIGZuKC4uLmFyZ3MpIHtcbiAgICAgIHNlbGYub2ZmKGV2ZW50LCBmbik7XG4gICAgICBsaXN0ZW5lci5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9XG5cbiAgICBmbi5saXN0ZW5lciA9IGxpc3RlbmVyO1xuICAgIHRoaXMub24oZXZlbnQsIGZuKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIG9mZihldmVudCwgbGlzdGVuZXIpIHtcbiAgICBsZXQgbGlzdGVuZXJzO1xuXG4gICAgaWYgKHRoaXMuZXZlbnRzICYmIHRoaXMuZXZlbnRzW2V2ZW50XSkge1xuICAgICAgbGlzdGVuZXJzID0gdGhpcy5ldmVudHNbZXZlbnRdO1xuXG4gICAgICBsaXN0ZW5lcnMuZm9yRWFjaCgoZm4sIGkpID0+IHtcbiAgICAgICAgaWYgKGZuID09PSBsaXN0ZW5lciB8fCBmbi5saXN0ZW5lciA9PT0gbGlzdGVuZXIpIHtcbiAgICAgICAgICBsaXN0ZW5lcnMuc3BsaWNlKGksIDEpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgaWYgKGxpc3RlbmVycy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgZGVsZXRlIHRoaXMuZXZlbnRzW2V2ZW50XTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBlbWl0KGV2ZW50LCAuLi5hcmdzKSB7XG4gICAgbGV0IGxpc3RlbmVycztcblxuICAgIGlmICh0aGlzLmV2ZW50cyAmJiB0aGlzLmV2ZW50c1tldmVudF0pIHtcbiAgICAgIGxpc3RlbmVycyA9IHRoaXMuZXZlbnRzW2V2ZW50XTtcblxuICAgICAgbGlzdGVuZXJzID0gbGlzdGVuZXJzLnNsaWNlKDApO1xuICAgICAgbGlzdGVuZXJzLmZvckVhY2goKGZuKSA9PiBmbi5hcHBseSh0aGlzLCBhcmdzKSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG59XG4iLCJleHBvcnQgKiBmcm9tICcuL2lzRnVuY3Rpb24nO1xyXG4iLCJleHBvcnQgY29uc3QgaXNGdW5jdGlvbiA9IChmKSA9PiB7XHJcbiAgcmV0dXJuIHR5cGVvZiBmID09PSAnZnVuY3Rpb24nO1xyXG59O1xyXG4iLCJleHBvcnQgKiBmcm9tICcuL2FycmF5JztcclxuZXhwb3J0ICogZnJvbSAnLi9jdXJyZW5jeSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZGF0ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZG9tJztcclxuZXhwb3J0ICogZnJvbSAnLi9mdW5jdGlvbic7XHJcbmV4cG9ydCAqIGZyb20gJy4vbWF0aCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vb2JqZWN0JztcclxuZXhwb3J0ICogZnJvbSAnLi9zdHJpbmcnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9pcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vYWpheCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vdmFsaWRhdGUnO1xyXG5cclxuaW1wb3J0IEVtaXR0ZXIgZnJvbSAnLi9lbWl0dGVyJztcclxuZXhwb3J0IHsgRW1pdHRlciB9O1xyXG4iLCJpbXBvcnQgeyBpc05hTlBvbHlmaWxsIH0gZnJvbSAnLi9tYXRoL2lzTmFOUG9seWZpbGwnO1xyXG5cclxuZXhwb3J0IGNvbnN0IGlzID0gKG8pID0+IHtcclxuICByZXR1cm4gdHlwZW9mIG8gIT09ICd1bmRlZmluZWQnICYmIG8gIT09IG51bGwgJiYgIWlzTmFOUG9seWZpbGwobyk7XHJcbn07XHJcbiIsImV4cG9ydCAqIGZyb20gJy4vaXNOYU5Qb2x5ZmlsbCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vaXNOdW1lcmljJztcclxuIiwiZXhwb3J0IGNvbnN0IGlzTmFOUG9seWZpbGwgPSAodmFsdWUpID0+IHtcclxuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyAmJiBOdW1iZXIuaXNOYU4odmFsdWUpO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBpc05hTlBvbHlmaWxsIH0gZnJvbSAnLi9pc05hTlBvbHlmaWxsJztcclxuaW1wb3J0IHsgaXNBcnJheSB9IGZyb20gJy4uL2FycmF5L2lzQXJyYXknO1xyXG5cclxuZXhwb3J0IGNvbnN0IGlzTnVtZXJpYyA9IChuKSA9PiB7XHJcbiAgcmV0dXJuICFpc0FycmF5KG4pICYmICFpc05hTlBvbHlmaWxsKHBhcnNlSW50KG4sIDEwKSk7XHJcbn07XHJcbiIsImltcG9ydCB7IHRyYXZlcnNlT2JqIH0gZnJvbSAnLi90cmF2ZXJzZU9iaic7XHJcbmltcG9ydCB7IGRhc2hUb0NhcGl0YWwgfSBmcm9tICcuLi9zdHJpbmcvZGFzaFRvQ2FwaXRhbCc7XHJcbmltcG9ydCB7IHVuZGVyc2NvcmVUb0NhcGl0YWwgfSBmcm9tICcuLi9zdHJpbmcvdW5kZXJzY29yZVRvQ2FwaXRhbCc7XHJcblxyXG5leHBvcnQgY29uc3QgY2FwaXRhbGl6ZU9iaiA9IChvYmplY3QpID0+IHtcclxuICBvYmplY3QgPSB0cmF2ZXJzZU9iaihvYmplY3QsIGRhc2hUb0NhcGl0YWwpO1xyXG4gIG9iamVjdCA9IHRyYXZlcnNlT2JqKG9iamVjdCwgdW5kZXJzY29yZVRvQ2FwaXRhbCk7XHJcblxyXG4gIHJldHVybiBvYmplY3Q7XHJcbn07XHJcbiIsImV4cG9ydCAqIGZyb20gJy4vY2FwaXRhbGl6ZU9iaic7XHJcbmV4cG9ydCAqIGZyb20gJy4vaXNPYmplY3QnO1xyXG5leHBvcnQgKiBmcm9tICcuL21lcmdlJztcclxuZXhwb3J0ICogZnJvbSAnLi9waWNrJztcclxuZXhwb3J0ICogZnJvbSAnLi9zZXJpYWxpemUnO1xyXG5leHBvcnQgKiBmcm9tICcuL3RyYXZlcnNlT2JqJztcclxuIiwiY29uc3QgeyBwcm90b3R5cGU6IHsgdG9TdHJpbmcgfSB9ID0gT2JqZWN0O1xyXG5cclxuZXhwb3J0IGNvbnN0IGlzT2JqZWN0ID0gKG8pID0+IHtcclxuICByZXR1cm4gdG9TdHJpbmcuY2FsbChvKSA9PT0gJ1tvYmplY3QgT2JqZWN0XSc7XHJcbn07XHJcbiIsImltcG9ydCB7IGlzT2JqZWN0IH0gZnJvbSAnLi9pc09iamVjdCc7XHJcblxyXG5jb25zdCB7IGtleXMgfSA9IE9iamVjdDtcclxuXHJcbi8qKlxyXG4gKiBNZXJnZSB0d28gb2JqZWN0c1xyXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqMVxyXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqMlxyXG4gKiBAcGFyYW0ge0Jvb2xlYW59IGlzRGVlcFxyXG4gKiBAcmV0dXJucyB7T2JqZWN0fVxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IG1lcmdlID0gKG9iajEsIG9iajIsIGlzRGVlcCkgPT4ge1xyXG4gIGNvbnN0IG9iajMgPSB7fTtcclxuICBrZXlzKG9iajEpLmZvckVhY2goKGkpID0+IHtcclxuICAgIGlmIChpc0RlZXAgJiYgaXNPYmplY3Qob2JqMVtpXSkpIHtcclxuICAgICAgb2JqM1tpXSA9IG1lcmdlKG9iajFbaV0sIHt9LCB0cnVlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIG9iajNbaV0gPSBvYmoxW2ldO1xyXG4gICAgfVxyXG4gIH0pO1xyXG5cclxuICBrZXlzKG9iajIpLmZvckVhY2goKGkpID0+IHtcclxuICAgIGlmIChpc0RlZXAgJiYgaXNPYmplY3Qob2JqMltpXSkpIHtcclxuICAgICAgb2JqM1tpXSA9IG1lcmdlKG9iajNbaV0gfHwge30sIG9iajJbaV0sIHRydWUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgb2JqM1tpXSA9IG9iajJbaV07XHJcbiAgICB9XHJcbiAgfSk7XHJcbiAgcmV0dXJuIG9iajM7XHJcbn07XHJcbiIsIi8qKlxyXG4gKiBQaWNrIHByb3BlcnRpZXMgZnJvbSBvYmplY3RcclxuICogbGV0IGEgPSB7IG5hbWU6IFwiUm9tYW5cIiwgcGhvbmU6IDEyMywgY291bnRyeTogXCJhbnlcIiB9O1xyXG4gKiBwaWNrKGEsICduYW1lJywgJ2NvdW50cnknKVxyXG4gKiA9PiB7IG5hbWU6IFwiUm9tYW5cIiwgY291bnRyeTogXCJhbnlcIiB9XHJcbiAqXHJcbiAqIEBwYXJhbSBvYmoge09iamVjdH1cclxuICogQHBhcmFtIGFyZ3Mge1N0cmluZ31cclxuICogQHJldHVybnMge09iamVjdH1cclxuICovXHJcbmV4cG9ydCBjb25zdCBwaWNrID0gKG9iaiwgLi4uYXJncykgPT4gYXJncy5yZWR1Y2UoKGksIHQpID0+IHtcclxuICBjb25zdCBwaWNrZWRPYmogPSBpO1xyXG5cclxuICBwaWNrZWRPYmpbdF0gPSBvYmpbdF07XHJcblxyXG4gIHJldHVybiBwaWNrZWRPYmo7XHJcbn0sIHt9KTtcclxuIiwiY29uc3QgeyBrZXlzIH0gPSBPYmplY3Q7XHJcblxyXG4vLyBzZXJpYWxpemUgcXVlcnkgcGFyYW1zIHdpdGggYWRkaXRpb25hbCB0cmFuc2Zvcm0gZnVuY3Rpb25cclxuZXhwb3J0IGNvbnN0IHNlcmlhbGl6ZSA9IChvYmosIHRyYW5zZm9ybSkgPT4ge1xyXG4gIGNvbnN0IGNvbXBvbmVudCA9IGtleXMob2JqKS5tYXAoKHApID0+IGAke3RyYW5zZm9ybShlbmNvZGVVUklDb21wb25lbnQocCkpfT0ke2VuY29kZVVSSUNvbXBvbmVudChvYmpbcF0pfWApO1xyXG4gIHJldHVybiBjb21wb25lbnQuam9pbignJicpO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBpc0FycmF5IH0gZnJvbSAnLi4vYXJyYXkvaXNBcnJheSc7XHJcbmltcG9ydCB7IGlzT2JqZWN0IH0gZnJvbSAnLi9pc09iamVjdCc7XHJcblxyXG5jb25zdCB7IGtleXMgfSA9IE9iamVjdDtcclxuXHJcbi8qKlxyXG4gKiBSZWN1cnNpdmVseSB0cmF2ZXJzZSBvYmplY3Qgb3duIHByb3BlcnRpZXMgYW5kIGFwcGx5IHRyYW5zZm9ybSBmdW5jdGlvbiBvbiBrZXlzIG9yIHZhbHVlc1xyXG4gKiBsZXQgYSA9IHsgbGFzdE5hbWU6IFwiUm9tYW5cIiwgZmlyc3ROYW1lOiBcIktodWR5YWtvdlwiIH1cclxuICogdHJhdmVyc2VPYmooYSwgdG9VbmRlcnNjb3JlKVxyXG4gKiA9PiB7IGxhc3RfbmFtZTogXCJSb21hblwiLCBmaXJzdF9uYW1lOiBcIktodWR5YWtvdlwiIH1cclxuICpcclxuICogQHBhcmFtIG9iaiB7T2JqZWN0fVxyXG4gKiBAcGFyYW0gZm5LZXkge0Z1bmN0aW9uIHwgQm9vbGVhbn1cclxuICogQHBhcmFtIGZuVmFsdWUge0Z1bmN0aW9uIHwgQm9vbGVhbn1cclxuICovXHJcbmV4cG9ydCBjb25zdCB0cmF2ZXJzZU9iaiA9IChvYmosIGZuS2V5ID0gZmFsc2UsIGZuVmFsdWUgPSBmYWxzZSkgPT4ge1xyXG4gIGlmICghaXNPYmplY3Qob2JqKSkge1xyXG4gICAgcmV0dXJuIG9iajtcclxuICB9XHJcblxyXG4gIHJldHVybiBrZXlzKG9iaikucmVkdWNlKChjdXJyLCBuZXh0KSA9PiB7XHJcbiAgICBsZXQgbmV4dFByb3BlcnR5ID0gb2JqW25leHRdO1xyXG4gICAgY29uc3QgbyAgICAgICAgICA9IGN1cnI7XHJcblxyXG4gICAgaWYgKGlzQXJyYXkobmV4dFByb3BlcnR5KSkge1xyXG4gICAgICBuZXh0UHJvcGVydHkgPSBuZXh0UHJvcGVydHkubWFwKChpKSA9PiB0cmF2ZXJzZU9iaihpLCBmbktleSwgZm5WYWx1ZSkpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChmblZhbHVlKSB7XHJcbiAgICAgIG9bZm5LZXkgPyBmbktleShuZXh0KSA6IG5leHRdID0gaXNPYmplY3QobmV4dFByb3BlcnR5KVxyXG4gICAgICAgID8gdHJhdmVyc2VPYmoobmV4dFByb3BlcnR5LCBmbktleSwgZm5WYWx1ZSkgOiBmblZhbHVlKG5leHRQcm9wZXJ0eSwgbmV4dCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBvW2ZuS2V5ID8gZm5LZXkobmV4dCkgOiBuZXh0XSA9IGlzT2JqZWN0KG5leHRQcm9wZXJ0eSlcclxuICAgICAgICA/IHRyYXZlcnNlT2JqKG5leHRQcm9wZXJ0eSwgZm5LZXkpIDogbmV4dFByb3BlcnR5O1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBvO1xyXG4gIH0sIHt9KTtcclxufTtcclxuIiwiZXhwb3J0IGNvbnN0IGRhc2hUb0NhcGl0YWwgPSAoc3RyKSA9PiBzdHIucmVwbGFjZSgvLShbYS16XSkvaWcsIChzLCBpKSA9PiBpLnRvVXBwZXJDYXNlKCkpO1xyXG4iLCJleHBvcnQgKiBmcm9tICcuL2Rhc2hUb0NhcGl0YWwnO1xyXG5leHBvcnQgKiBmcm9tICcuL2lzU3RyaW5nJztcclxuZXhwb3J0ICogZnJvbSAnLi90b1VuZGVyc2NvcmUnO1xyXG5leHBvcnQgKiBmcm9tICcuL3VuZGVyc2NvcmVUb0NhcGl0YWwnO1xyXG4iLCJleHBvcnQgY29uc3QgaXNTdHJpbmcgPSAoZikgPT4ge1xyXG4gIHJldHVybiB0eXBlb2YgZiA9PT0gJ3N0cmluZyc7XHJcbn07XHJcbiIsImV4cG9ydCBjb25zdCB0b1VuZGVyc2NvcmUgPSAoc3RyKSA9PiBzdHIucmVwbGFjZSgvKFtBLVpdKS9nLCAocykgPT4gYF8ke3MudG9Mb3dlckNhc2UoKX1gKTtcclxuIiwiZXhwb3J0IGNvbnN0IHVuZGVyc2NvcmVUb0NhcGl0YWwgPSAoc3RyKSA9PiBzdHIucmVwbGFjZSgvXyhbYS16XSkvaWcsIChzLCBpKSA9PiBpLnRvVXBwZXJDYXNlKCkpO1xyXG4iLCJpbXBvcnQgeyBpcyB9IGZyb20gJy4vaXMnO1xyXG5pbXBvcnQgeyBpc051bWVyaWMgfSBmcm9tICcuL21hdGgvaXNOdW1lcmljJztcclxuXHJcbi8vIFZhbGlkYXRpb25zXHJcbmV4cG9ydCBjb25zdCB2YWxpZGF0ZSA9IHtcclxuICBpc0JsYW5rKG8pIHtcclxuICAgIHJldHVybiBpcyhvKTtcclxuICB9LFxyXG4gIGlzTnVtZXJpYyhvKSB7XHJcbiAgICByZXR1cm4gaXNOdW1lcmljKG8pO1xyXG4gIH0sXHJcbiAgaXNFbWFpbChvKSB7XHJcbiAgICByZXR1cm4gdHlwZW9mIG8gPT09ICdzdHJpbmcnICYmIGlzKG8ubWF0Y2goL15bXkBcXHNdK0AoW15AXFxzXStcXC4pK1teQFxcV10rJC8pKTtcclxuICB9LFxyXG4gIGlzQm91bmRlZEJ5KG8sIG1pbiwgbWF4KSB7XHJcbiAgICByZXR1cm4gdHlwZW9mIG8gPT09ICdudW1iZXInICYmIG8gPj0gbWluICYmIG8gPD0gbWF4O1xyXG4gIH1cclxufTtcclxuIiwiaW1wb3J0IHtcbiAgaXMsIG1lcmdlLCBtb250aExlbmd0aCwgaXNTdHJpbmdcbn0gZnJvbSAnd2lkZ2V0LXV0aWxzJztcblxuLyoqXG4gKiAgcGxlYXNlIHJlZmVyIHRvIC90ZXN0cy91bml0L2NhbGVuZGFyVHJlZS5zcGVjcy5qcyBmb3IgdXNhZ2VcbiAqICBUT0RPIGRvY3MsIG1lcmdlIGF2YWlsYWJpbGl0eSB3aXRoIGNhbGVuZGFyIHRyZWUsIHVzZSBvbmUgZGF0YS1zdHJ1Y3R1cmVcbiAqICBUT0RPIG1pblN0YXkgKyBhdmFpbGFiaWxpdHkgbWFwIGNvbnNpZGVyYXRpb25zIGZvIGRpc2FibGluZyBkYXRlc1xuICovXG5jb25zdCBnZW5BcnJheVJhbmdlID0gKGEsIGIpID0+IHtcbiAgY29uc3QgbGlzdCA9IFtdO1xuICBmb3IgKGxldCBpID0gYTsgaSA8PSBiOyBpICs9IDEpIHtcbiAgICBsaXN0LnB1c2goaSk7XG4gIH1cbiAgcmV0dXJuIGxpc3Q7XG59O1xuXG5jb25zdCBwYXJzZUlTT1N0cmluZyA9IChzdHIgLyogeXl5eS1tbS1kZCAqLykgPT4ge1xuICBjb25zdCBhcnJTdHIgPSBzdHIuc3BsaXQoJy0nKS5tYXAocGFyc2VGbG9hdCk7XG4gIHJldHVybiB7XG4gICAgeWVhcjogYXJyU3RyWzBdLFxuICAgIG1vbnRoOiBhcnJTdHJbMV0gLSAxLFxuICAgIGRhdGU6IGFyclN0clsyXVxuICB9O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2FsZW5kYXJUcmVlIHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IHZhbGlkYXRlQ2VsbFxuICAgKiBAcGFyYW0ge09iamVjdH0gdHJlZVxuICAgKi9cbiAgY29uc3RydWN0b3IodmFsaWRhdGVDZWxsLCB0cmVlKSB7XG4gICAgdGhpcy52YWxpZGF0ZUNlbGwgPSB2YWxpZGF0ZUNlbGw7XG4gICAgdGhpcy50cmVlICAgICAgICAgPSB0cmVlO1xuICB9XG5cbiAgYWRkVHJlZShvYmopIHtcbiAgICBpZiAoIXRoaXMudHJlZSkge1xuICAgICAgdGhpcy50cmVlID0gb2JqO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRyZWUgPSBtZXJnZSh0aGlzLnRyZWUgfHwge30sIG9iaiwgdHJ1ZSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIHNlbGVjdCByYW5nZSBmcm9tIHRoZSB0cmVlLCByZXR1cm5zIGFycmF5IGl0ZW1zXG4gICAqIHN0YXJ0IGRhdGUgaXMgQUxXQVlTIDwgdGhlbiBlbmQgZGF0ZSAsIGFzIHdlIGFyZSBzZWxlY3RpbmcgdGltZSByYW5nZSBpbiBkYXlzLlxuICAgKlxuICAgKiBAcGFyYW0ge0FycmF5fSBzdGFydCBlLmcuIFsyMDE2LCAwLCAxXVxuICAgKiBAcGFyYW0ge0FycmF5fSBlbmQgWzIwMTYsIDEsIDNdXG4gICAqIEByZXR1cm5zIHt7cmFuZ2U6IEFycmF5LCBpc1ZhbGlkOiB7Qm9vbGVhbn19fVxuICAgKi9cbiAgc2VsZWN0UmFuZ2Uoc3RhcnQsIGVuZCkge1xuICAgIGxldCByYW5nZSA9IFtdO1xuXG4gICAgY29uc3QgYSA9IHN0YXJ0LnNsaWNlKCk7XG5cbiAgICAvLyBpZiB5ZWFyIGFuZCBtb250aCB0aGUgc2FtZSwganVzdCBzbGljZSB0aGUgY3VycmVudCBtb250aFxuICAgIGlmIChhWzBdID09PSBlbmRbMF0gJiYgYVsxXSA9PT0gZW5kWzFdKSB7XG4gICAgICByYW5nZSA9IHRoaXMuc2VsZWN0RGF5c0luTW9udGgoYVswXSwgYVsxXSwgYVsyXSwgZW5kWzJdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgbW9udGhEYXlzID0gdGhpcy50cmVlW2FbMF1dW2FbMV1dO1xuXG4gICAgICAvLyBzbGljZSB0aGUgcGllY2Ugb2YgY3VycmVudCBtb250aERheXMgZnJvbSBzdGFydCBvZiByYW5nZSB0aWxsIGVuZCBvZiB0aGUgbW9udGhEYXlzXG4gICAgICByYW5nZSA9IHJhbmdlLmNvbmNhdCh0aGlzLnNlbGVjdERheXNJbk1vbnRoKGFbMF0sIGFbMV0sIGFbMl0sIG1vbnRoRGF5cy5sZW5ndGgpKTtcblxuICAgICAgLy8gc2hpZnQgc3RhcnQgbW9udGgsIGIvYyB3ZSBhbHJlYWR5IHNlbGVjdGVkIGRheXMgaW4gaXRcbiAgICAgIGFbMV0gKz0gMTtcblxuICAgICAgLy8gaWYgZW5kIGRhdGUgeWVhciA+IHN0YXJ0IGRhdGVcbiAgICAgIC8vIHNlbGVjdCBldmVyeXRoaW5nIGluIHN0YXJ0IHllYXIgdGlsbCB0aGUgZW5kIG9mIHN0YXJ0IHllYXJcbiAgICAgIC8vIGUuZy4gc3RhcnQgaXMgMjAgT2N0b2Jlciwgc28gc2VsZWN0IE5vdmVtYmVyIGFuZCBEZWNlbWJlciwgT2N0b2JlciB3YXMgc2VsZWN0ZWQgYWJvdmVcbiAgICAgIGlmIChlbmRbMF0gPiBzdGFydFswXSkge1xuICAgICAgICByYW5nZSA9IHJhbmdlLmNvbmNhdCh0aGlzLnNlbGVjdE1vbnRoc0luWWVhcihhWzBdLCBhWzFdLCAxMSkpO1xuICAgICAgICAvLyBhbmQgc2V0IHN0YXJ0IHllYXIgdG8gZW5kIHllYXJcbiAgICAgICAgLy8gbW9udGggdG8gMCAoSmFudWFyeSlcbiAgICAgICAgW2FbMF0sIGFbMV1dID0gW2VuZFswXSwgMF07XG4gICAgICB9XG5cbiAgICAgIC8vIG5vdyB3ZSBhcmUgYXQgdGhlIHNhbWUgeWVhciBhbmQgaGF2ZSB0aGUgY2FzZSBpZiBlbmQgbW9udGggPiBzdGFydCBtb250aFxuICAgICAgLy8gdGhlbiBzZWxlY3QgZXZlcnl0aGluZyBiZXR3ZWVuIHRob3NlIG1vbnRoc1xuICAgICAgaWYgKGVuZFsxXSA+IGFbMV0pIHtcbiAgICAgICAgLy8gZS5nLiBzdGFydCAyMCBPY3RvYmVyIGVuZCAyMCBEZWNlbWJlciwgc2VsZWN0IGZ1bGwgTm92ZW1iZXJcbiAgICAgICAgcmFuZ2UgPSByYW5nZS5jb25jYXQodGhpcy5zZWxlY3RNb250aHNJblllYXIoYVswXSwgYVsxXSwgZW5kWzFdIC0gMSkpO1xuICAgICAgICBhWzFdID0gZW5kO1xuICAgICAgfVxuXG4gICAgICAvLyB0aGUgbWlzc2luZyBwYXJ0IGlzIGRheXMgaW4gZW5kIHNlbGVjdGlvbiBtb250aFxuICAgICAgcmFuZ2UgPSByYW5nZS5jb25jYXQodGhpcy5zZWxlY3REYXlzSW5Nb250aChlbmRbMF0sIGVuZFsxXSwgMSwgZW5kWzJdKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHJhbmdlLFxuICAgICAgaXNWYWxpZDogdGhpcy5pc1JhbmdlVmFsaWQocmFuZ2UpXG4gICAgfTtcbiAgfVxuXG4gIHNlbGVjdE1vbnRoc0luWWVhcih5ZWFyLCBzdGFydCwgZW5kKSB7XG4gICAgbGV0IHNlbGVjdGlvbiAgICA9IFtdO1xuICAgIGNvbnN0IG1vbnRoUmFuZ2UgPSBnZW5BcnJheVJhbmdlKHN0YXJ0LCBlbmQpO1xuXG4gICAgbW9udGhSYW5nZS5mb3JFYWNoKChtb250aCkgPT4ge1xuICAgICAgY29uc3QgeSA9IHRoaXMudHJlZVt5ZWFyXTtcbiAgICAgIGNvbnN0IG0gPSBpcyh5KSA/IHRoaXMudHJlZVt5ZWFyXVttb250aF0gOiBudWxsO1xuXG4gICAgICBpZiAoeSAmJiBtKSB7XG4gICAgICAgIHNlbGVjdGlvbiA9IHNlbGVjdGlvbi5jb25jYXQodGhpcy5zZWxlY3REYXlzSW5Nb250aCh5ZWFyLCBtb250aCwgMSwgbS5sZW5ndGgpKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBzZWxlY3Rpb247XG4gIH1cblxuICBzZWxlY3REYXlzSW5Nb250aCh5ZWFyLCBtb250aCwgc3RhcnREYXksIGVuZERheSkge1xuICAgIGNvbnN0IHkgPSB0aGlzLnRyZWVbeWVhcl07XG4gICAgY29uc3QgbSA9IGlzKHkpID8gdGhpcy50cmVlW3llYXJdW21vbnRoXSA6IG51bGw7XG5cbiAgICBpZiAoeSAmJiBtKSB7XG4gICAgICByZXR1cm4gbS5zbGljZSgoc3RhcnREYXkgLSAxKSwgZW5kRGF5KTtcbiAgICB9XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgc2VsZWN0RGF5KHllYXIsIG1vbnRoLCBkYXkpIHtcbiAgICBjb25zdCB5ID0gdGhpcy50cmVlW3llYXJdO1xuICAgIGNvbnN0IG0gPSBpcyh5KSA/IHRoaXMudHJlZVt5ZWFyXVttb250aF0gOiBudWxsO1xuXG4gICAgaWYgKHkgJiYgbSkge1xuICAgICAgcmV0dXJuIG1bZGF5IC0gMV07XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgaXNSYW5nZVZhbGlkKHJhbmdlLCBmbikge1xuICAgIGNvbnN0IHZhbGlkYXRlQ2VsbCA9IHRoaXMudmFsaWRhdGVDZWxsIHx8IGZuO1xuICAgIGxldCBpc1ZhbGlkICAgICAgICA9IHRydWU7XG5cbiAgICBpZiAodHlwZW9mIHZhbGlkYXRlQ2VsbCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgZmlsdGVyVmFsaWRzID0gcmFuZ2UuZmlsdGVyKChjZWxsKSA9PiB0aGlzLnZhbGlkYXRlQ2VsbChjZWxsKSk7XG4gICAgICBpc1ZhbGlkID0gZmlsdGVyVmFsaWRzLmxlbmd0aCA9PSByYW5nZS5sZW5ndGg7XG4gICAgfVxuXG4gICAgcmV0dXJuIGlzVmFsaWQ7XG4gIH1cblxuICByZXBsYWNlTWFwcyhtYXAsIHVwZGF0ZWRBdCkge1xuICAgIHRoaXMubWFwID0gQ2FsZW5kYXJUcmVlLm1hcHNUb1RyZWUobWFwLCB1cGRhdGVkQXQpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcmVtb3ZlTWFwKCkge1xuICAgIHRoaXMubWFwID0ge307XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogIENyZWF0ZSBhIHRyZWUgc3RydWN0dXJlIGZyb20gbWFwc1xuICAgKiAgZm9yIG4tdGltZSBkYXkgYWNjZXNzLCBlLmcuIHRoaXMubWFwW3llYXJdW21vbnRoXVtkYXldLmlzQXZhaWxhYmxlO1xuICAgKiB7XG4gICAqICAgMjEwNjoge1xuICAgKiAgICAgIDE6IHtcbiAgICogICAgICAgIDE6ICxcbiAgICogICAgICAgIDI6ICxcbiAgICogICAgICAgIDM6XG4gICAqICAgICAgICAuLi5cbiAgICogICAgICB9XG4gICAqICAgICAgLi4uXG4gICAqICAgICAgMTI6IHtcbiAgICpcbiAgICogICAgICB9XG4gICAqICAgIH1cbiAgICogfVxuICAgKiBAcGFyYW0ge09iamVjdH0gbWFwc1xuICAgKiBAcGFyYW0ge1N0cmluZyB8IERhdGV9IG1hcFN0YXJ0QXRcbiAgICogQHJldHVybnMge09iamVjdH1cbiAgICovXG4gIHN0YXRpYyBtYXBzVG9UcmVlKG1hcHMsIG1hcFN0YXJ0QXQpIHtcbiAgICBpZiAoIShpc1N0cmluZyhtYXBzLmF2YWlsYWJpbGl0eSlcbiAgICAgIHx8IGlzU3RyaW5nKG1hcHMubmlnaHRseV9yYXRlcylcbiAgICAgIHx8IGlzU3RyaW5nKG1hcHMubWluaW11bV9zdGF5cykpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBhdmFpbCAgPSBtYXBzLmF2YWlsYWJpbGl0eS5zcGxpdCgnJykubWFwKHBhcnNlRmxvYXQpO1xuICAgIGNvbnN0IHJhdGVzICA9IG1hcHMubmlnaHRseV9yYXRlcy5zcGxpdCgnLCcpLm1hcChwYXJzZUZsb2F0KTtcbiAgICBjb25zdCBtaW5NYXAgPSBtYXBzLm1pbmltdW1fc3RheXMuc3BsaXQoJywnKS5tYXAocGFyc2VGbG9hdCk7XG4gICAgbGV0IGRheSAgICAgID0gMTtcblxuICAgIGxldCB7XG4gICAgICB5ZWFyLFxuICAgICAgbW9udGgsXG4gICAgICBkYXRlOiBkYXlTaGlmdFxuICAgIH0gPSBwYXJzZUlTT1N0cmluZyhtYXBTdGFydEF0KTtcblxuICAgIC8vIHRyaWNrIHRvIGFkZCBleHRyYSB1bmF2YWlsYWJsZSBkYXRlIGZvciBwcm9wZXIgY2FsY3VsYXRpb25zIG9mIGNoZWNrLW91dCBkYXRlc1xuICAgIGlmIChhdmFpbFthdmFpbC5sZW5ndGggLSAxXSA9PT0gMCkge1xuICAgICAgYXZhaWwucHVzaCgxKTtcbiAgICB9XG5cbiAgICBsZXQgcHJldmlvdXNEYXRlID0ge307XG5cbiAgICByZXR1cm4gYXZhaWwucmVkdWNlKChjdXJyLCBzdGF0ZSwgaW5kZXgsIGFycikgPT4ge1xuICAgICAgY29uc3QgbGVuZ3RoICAgICAgICAgICA9IG1vbnRoTGVuZ3RoKHllYXIsIG1vbnRoKTtcbiAgICAgIGNvbnN0IHRyZWUgICAgICAgICAgICAgPSBjdXJyO1xuICAgICAgY29uc3QgbWluU3RheSAgICAgICAgICA9IG1pbk1hcFtpbmRleF07XG4gICAgICBjb25zdCByYXRlICAgICAgICAgICAgID0gcmF0ZXNbaW5kZXhdO1xuICAgICAgY29uc3QgaXNBdmFpbGFibGUgICAgICA9IHN0YXRlID09PSAwO1xuICAgICAgY29uc3QgcHJldkF2YWlsYWJsZSAgICA9IGFycltpbmRleCAtIDFdID09PSAwO1xuICAgICAgY29uc3QgaXNNb3JuaW5nQmxvY2tlZCA9IChpc0F2YWlsYWJsZSAmJiAhcHJldkF2YWlsYWJsZSkgPyB0cnVlIDogbnVsbDtcbiAgICAgIGNvbnN0IGlzQXZhaWxhYmxlT3V0ICAgPSAoaXNNb3JuaW5nQmxvY2tlZCkgPyB0cnVlIDogbnVsbDtcblxuICAgICAgaWYgKCF0cmVlW3llYXJdKSB7XG4gICAgICAgIHRyZWVbeWVhcl0gPSB7fTtcbiAgICAgIH1cblxuICAgICAgaWYgKCF0cmVlW3llYXJdW21vbnRoXSkge1xuICAgICAgICB0cmVlW3llYXJdW21vbnRoXSA9IHt9O1xuICAgICAgfVxuXG4gICAgICBpZiAoZGF5U2hpZnQpIHtcbiAgICAgICAgZGF5ICAgICAgPSBkYXlTaGlmdDtcbiAgICAgICAgZGF5U2hpZnQgPSBudWxsO1xuICAgICAgfVxuXG4gICAgICAvLyBpZiBtaW5TdGF5ID4gYXZhaWxhYmxlIGRheXMgaW4gZnV0dXJlXG4gICAgICAvLyBjb25zaWRlciBjdXJyZW50IGRheSBhcyB1bmF2YWlsYWJsZSBhcyB3ZWxsXG4gICAgICAvLyBpZiAoaXNBdmFpbGFibGUgJiYgbWluU3RheSA+IDEpIHtcbiAgICAgIC8vICAgbGV0IGRheXNBdmFpbGFibGUgPSAxO1xuICAgICAgLy8gICBsZXQgaSAgICAgICAgICAgICA9IGluZGV4ICsgMTtcbiAgICAgIC8vICAgd2hpbGUgKGFycltpXSA9PT0gMCkge1xuICAgICAgLy8gICAgIGRheXNBdmFpbGFibGUgKz0gMTtcbiAgICAgIC8vICAgICBpICs9IDE7XG4gICAgICAvLyAgIH1cbiAgICAgIC8vXG4gICAgICAvLyAgIGlmIChtaW5TdGF5ID4gZGF5c0F2YWlsYWJsZSkge1xuICAgICAgLy8gICAgIGlzQXZhaWxhYmxlID0gZmFsc2U7XG4gICAgICAvLyAgIH1cbiAgICAgIC8vIH1cblxuICAgICAgdHJlZVt5ZWFyXVttb250aF1bZGF5XSA9IHtcbiAgICAgICAgcmF0ZSxcbiAgICAgICAgbWluU3RheSxcbiAgICAgICAgaXNBdmFpbGFibGUsXG4gICAgICAgIGlzTW9ybmluZ0Jsb2NrZWQsXG4gICAgICAgIGlzQXZhaWxhYmxlT3V0XG4gICAgICB9O1xuXG4gICAgICB0cnkge1xuICAgICAgICBpZiAocHJldkF2YWlsYWJsZSAmJiAhaXNBdmFpbGFibGUpIHtcbiAgICAgICAgICB0cmVlW3ByZXZpb3VzRGF0ZS55ZWFyXVtwcmV2aW91c0RhdGUubW9udGhdW3ByZXZpb3VzRGF0ZS5kYXldLmlzQXZhaWxhYmxlT3V0ID0gdHJ1ZTtcbiAgICAgICAgICB0cmVlW3llYXJdW21vbnRoXVtkYXldLmlzTW9ybmluZ0Jsb2NrZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaChlKSB7XG4gICAgICAgIC8vIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIHByZXZpb3VzRGF0ZSA9IHtcbiAgICAgICAgeWVhcixcbiAgICAgICAgbW9udGgsXG4gICAgICAgIGRheVxuICAgICAgfTtcblxuICAgICAgaWYgKGRheSA8IGxlbmd0aCkge1xuICAgICAgICBkYXkgKz0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChtb250aCA+IDEwKSB7XG4gICAgICAgICAgbW9udGggPSAwO1xuICAgICAgICAgIHllYXIgKz0gMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBtb250aCArPSAxO1xuICAgICAgICB9XG4gICAgICAgIGRheSA9IDE7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0cmVlO1xuICAgIH0sIHt9KTtcbiAgfVxuXG4gIGdldERheVByb3BlcnR5KHllYXIsIG1vbnRoLCBkYXksIHByb3BlcnR5KSB7XG4gICAgbGV0IHByb3A7XG5cbiAgICBpZiAodGhpcy5tYXApIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHByb3AgPSB0aGlzLm1hcFt5ZWFyXVttb250aF1bZGF5XVtwcm9wZXJ0eV07XG4gICAgICB9IGNhdGNoKGUpIHtcbiAgICAgICAgLy8gY29udGludWUgcmVnYXJkbGVzcyBvZiBlcnJvclxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBwcm9wO1xuICB9XG5cbiAgaXNEYXlEaXNhYmxlZCh5ZWFyLCBtb250aCwgZGF5KSB7XG4gICAgcmV0dXJuICF0aGlzLmdldERheVByb3BlcnR5KHllYXIsIG1vbnRoLCBkYXksICdpc0F2YWlsYWJsZScpO1xuICB9XG59XG4iLCIvKiBnbG9iYWwgTm9kZSwgZG9jdW1lbnQsIHdpbmRvdywgY29uc29sZSwgcmVxdWlyZSwgZmV0Y2ggKi9cbmltcG9ydCB7XG4gIGFkZENsYXNzLCByZW1vdmVDbGFzcywgaGFzQ2xhc3MsIGlzQXJyYXksIGlzT2JqZWN0LCBFbWl0dGVyLFxuICBtZXJnZSwgZWxlbWVudEZyb21TdHJpbmcsIHRyYXZlcnNlVG9QYXJlbnRXaXRoQXR0ciwgZGVzdHJveUVsZW1lbnQsIG1vbnRoTGVuZ3RoLCBpcywgaXNGdW5jdGlvbixcbiAgaXNOdW1lcmljLCB0cmF2ZXJzZU9iaiwgaXNJbnNpZGUsIGN1cnJlbmN5Rm9ybWF0dGVyXG59IGZyb20gJ3dpZGdldC11dGlscyc7XG5cbmltcG9ydCAqIGFzIHRlbXBsYXRlcyBmcm9tICcuL3RlbXBsYXRlcyc7XG5pbXBvcnQgQ2FsZW5kYXJUcmVlIGZyb20gJy4vY2FsZW5kYXItdHJlZSc7XG5pbXBvcnQgY29uZmlnIGZyb20gJy4vY29uZmlnJztcbmltcG9ydCBsb2NhbGVzIGZyb20gJy4vbG9jYWxlcyc7XG5cbmltcG9ydCB7IHN0cmZ0aW1lIH0gZnJvbSAnc3RydGltZSc7XG5cbmltcG9ydCB7XG4gIGRhdGVUb0lzbywgaXNMYXRlciwgaXNDdXJyZW50LCB2YWxpZGF0aW9uT2ZDZWxsLCB0Rm9ybWF0dGVyLCBkYXRlVG9BcnJheSwgbW9udGhEaWZmXG59IGZyb20gJy4vdXRpbHMnO1xuXG5pbXBvcnQgc3R5bGVzIGZyb20gJy4vc3R5bGVzL2NhbGVuZGFyLnNjc3MnO1xuXG5pbXBvcnQgdXRpbHNTdHlsZXMgZnJvbSAnd2lkZ2V0LXV0aWxzL3NyYy9zdHlsZXMvcmVzZXQuc2Nzcyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENhbGVuZGFyIGV4dGVuZHMgRW1pdHRlciB7XG4gIGNvbnN0cnVjdG9yKG9wdHMsIG1hcHMpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMubmFtZSAgICA9IGNvbmZpZy5uYW1lO1xuICAgIHRoaXMuVkVSU0lPTiA9IHJlcXVpcmUoJy4uL3BhY2thZ2UuanNvbicpLnZlcnNpb247XG4gICAgdGhpcy5DU1NfUFJFRklYID0gY29uZmlnLmNzc1ByZWZpeDtcblxuICAgIGlmIChpc09iamVjdChvcHRzKSkge1xuICAgICAgaWYgKCFvcHRzLmVsKSB7XG4gICAgICAgIHRoaXMubG9nZ2VyKCdlbCBtdXN0IGJlIEhUTUwgZWxlbWVudCcsICdlcnJvcicpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNvbmZpZ0RhdGFzZXQgPSBtZXJnZShjb25maWcsIG9wdHMuZWwuZGF0YXNldCk7XG4gICAgICB0aGlzLm9wdHMgICAgICAgICAgID0gbWVyZ2UoY29uZmlnRGF0YXNldCwgb3B0cyk7XG5cbiAgICAgIHRoaXMub3B0cyA9IHRyYXZlcnNlT2JqKHRoaXMub3B0cywgKGEpID0+IGEsIChiKSA9PiB7XG4gICAgICAgIGlmIChiID09PSAndHJ1ZScgfHwgYiA9PT0gJ2ZhbHNlJykge1xuICAgICAgICAgIHJldHVybiAoYiA9PT0gJ3RydWUnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNOdW1lcmljKGIpKSB7XG4gICAgICAgICAgcmV0dXJuIHBhcnNlSW50KGIsIDEwKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYjtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAodGhpcy5vcHRzLmlzRHJvcERvd24pIHtcbiAgICAgICAgdGhpcy5pbml0Q2FsZW5kYXJEcm9wKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmVsID0gb3B0cy5lbDtcbiAgICAgIH1cblxuICAgICAgdGhpcy5vcHRzLmxhbmcgICAgICAgID0gKHRoaXMub3B0cy5sYW5nICYmIHRoaXMub3B0cy5sYW5nIGluIGxvY2FsZXMpID8gdGhpcy5vcHRzLmxhbmcgOiAnZW4tVVMnO1xuICAgICAgdGhpcy5sb2NhbGUgICAgICAgICAgID0gbG9jYWxlc1t0aGlzLm9wdHMubGFuZ107XG4gICAgICB0aGlzLmZvcm1hdCAgICAgICAgICAgPSB0aGlzLm9wdHMuZm9ybWF0RGF0ZSB8fCB0aGlzLmxvY2FsZS5mb3JtYXREYXRlIHx8ICclbS8lZC8lWSc7XG4gICAgICB0aGlzLm9wdHMuc3RhcnRPZldlZWsgPSB0aGlzLm9wdHMuc3RhcnRPZldlZWsgfHwgdGhpcy5sb2NhbGUuc3RhcnRPZldlZWs7XG5cbiAgICAgIGxldCB7IGN1cnJlbnREYXRlIH0gPSB0aGlzLm9wdHM7XG4gICAgICBjb25zdCB5ZWFyICA9IGN1cnJlbnREYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgICBjb25zdCBtb250aCA9IGN1cnJlbnREYXRlLmdldE1vbnRoKCk7XG4gICAgICBjb25zdCBkYXkgICA9IGN1cnJlbnREYXRlLmdldERhdGUoKTtcblxuICAgICAgdGhpcy5vcHRzLmN1cnJlbnREYXRlID0gW3llYXIsIG1vbnRoLCBkYXldO1xuXG4gICAgICBpZiAoIXRoaXMub3B0cy55ZWFyU3RhcnQpIHtcbiAgICAgICAgdGhpcy5vcHRzLnllYXJTdGFydCA9IHllYXI7XG4gICAgICB9XG5cbiAgICAgIGlmICghdGhpcy5vcHRzLm1vbnRoU3RhcnQpIHtcbiAgICAgICAgdGhpcy5vcHRzLm1vbnRoU3RhcnQgPSBtb250aDtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gVE9ETzogcmVuYW1lIGRheXNUcmVlXG4gICAgdGhpcy5kb20gICA9IHt9O1xuICAgIC8vIFRPRE86IHJlbmFtZSB0byBjYWxlbmRhclRyZWUgb3IgYm9va2luZ3NUcmVlXG4gICAgdGhpcy5jVHJlZSA9IG5ldyBDYWxlbmRhclRyZWUodmFsaWRhdGlvbk9mQ2VsbCwge30pO1xuICAgIC8vIFRPRE86IHJlbmFtZSB0byBib29raW5nc0RhdGEgJiBhZGREYXRhXG4gICAgaWYgKGlzT2JqZWN0KG1hcHMpKSB7XG4gICAgICB0aGlzLmNUcmVlLmFkZE1hcHMobWFwcywgbWFwcy5zdGFydF9kYXRlIHx8IGRhdGVUb0lzbyh0aGlzLm9wdHMuY3VycmVudERhdGUpKTtcbiAgICB9XG5cbiAgICAvLyBzZWxlY3Rpb24gYW5kIGhpZ2hsaWdodHNcbiAgICB0aGlzLmlzU2VsZWN0aW5nICAgICAgID0gZmFsc2U7XG4gICAgdGhpcy5oaWdobGlnaHRlZEJvdW5kcyA9IFtdO1xuICAgIHRoaXMuaGFzVmFsaWRSYW5nZSAgICAgPSB0cnVlO1xuXG4gICAgLy8gVE9ETzogcmVuYW1lIGlzUmV2ZXJzZVNlbGVjdGFibGUgdG8gc2VsZWN0aW9uRGVmYXVsdERpcmVjdGlvbiAtIHNob3VsZCBiZSBMVFIgb3IgUlRMXG4gICAgLy8gdXNlciBzZWxlY3RzIGVuZCBkYXRlIGZpcnN0XG4gICAgdGhpcy5pc1JldmVyc2VTZWxlY3RhYmxlID0gdGhpcy5vcHRzLmlzUmV2ZXJzZVNlbGVjdGFibGU7XG4gICAgdGhpcy5pbml0KCk7XG4gIH1cblxuICBpbml0KCkge1xuICAgIGFkZENsYXNzKHRoaXMuZWwsIHN0eWxlcy5jYWxlbmRhciwgdXRpbHNTdHlsZXMucmVzZXQpO1xuXG4gICAgaWYgKCF0aGlzLmVsLmRhdGFzZXQudGhlbWUpIHtcbiAgICAgIHRoaXMuZWwuZGF0YXNldC50aGVtZSA9IHRoaXMub3B0cy50aGVtZTtcbiAgICB9XG5cbiAgICB0aGlzLmRvbS5tb250aHNXcmFwcGVyID0gdGhpcy5lbC5hcHBlbmRDaGlsZChlbGVtZW50RnJvbVN0cmluZyh0ZW1wbGF0ZXMubWFpbikpO1xuICAgIHRoaXMuZG9tLmZvcndhcmQgICAgICAgPSB0aGlzLmVsLmFwcGVuZENoaWxkKGVsZW1lbnRGcm9tU3RyaW5nKHRlbXBsYXRlcy5mb3J3YXJkKSk7XG4gICAgdGhpcy5kb20uYmFjayAgICAgICAgICA9IHRoaXMuZWwuYXBwZW5kQ2hpbGQoZWxlbWVudEZyb21TdHJpbmcodGVtcGxhdGVzLmJhY2spKTtcbiAgICB0aGlzLnJlbmRlck1vbnRocyh0aGlzLm9wdHMueWVhclN0YXJ0LCB0aGlzLm9wdHMubW9udGhTdGFydCk7XG5cbiAgICB0aGlzLmFkZEJ0bnNFdmVudHMoKTtcblxuICAgIGlmICh0aGlzLm9wdHMuc2VsZWN0YWJsZSAmJiB0aGlzLm9wdHMuZWxTdGFydEF0ICYmIHRoaXMub3B0cy5lbEVuZEF0KSB7XG4gICAgICBpZiAoIXRoaXMub3B0cy5yZW50YWxJZCkge1xuICAgICAgICB0aGlzLmlucHV0c1RvVmFsdWVzKCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMub24oJ21hcHMtbG9hZGVkJywgKCkgPT4gdGhpcy5pbnB1dHNUb1ZhbHVlcygpKTtcbiAgICAgIHRoaXMub3B0cy5lbFN0YXJ0QXQuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCAoKSA9PiB0aGlzLmlucHV0c1RvVmFsdWVzKCkpO1xuICAgICAgdGhpcy5vcHRzLmVsRW5kQXQuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCAoKSA9PiB0aGlzLmlucHV0c1RvVmFsdWVzKCkpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdHMucmVudGFsSWQgJiYgIXRoaXMub3B0cy5pc0Ryb3BEb3duKSB7XG4gICAgICB0aGlzLmxvYWRNYXBzKHRoaXMub3B0cy5yZW50YWxJZCk7XG4gICAgfVxuXG4gICAgdGhpcy5lbC5kYXRhc2V0LnNlbGVjdGFibGUgPSB0aGlzLm9wdHMuc2VsZWN0YWJsZTtcblxuICAgIHRoaXMubG9nZ2VyKCdpbml0ZWQnKTtcbiAgICB0aGlzLmVtaXQoJ2luaXQnKTtcbiAgfVxuXG4gIGNoYW5nZVNlbGVjdGlvbk9yZGVyKGlzUmV2ZXJzZSkge1xuICAgIGlmICgoaXNSZXZlcnNlICE9PSB0aGlzLmlzUmV2ZXJzZVNlbGVjdGFibGUpICYmICF0aGlzLmlzU2VsZWN0aW5nKSB7XG4gICAgICB0aGlzLmlzUmV2ZXJzZVNlbGVjdGFibGUgPSBpc1JldmVyc2U7XG4gICAgICB0aGlzLmRlc3Ryb3lNb250aHMoKTtcbiAgICAgIHRoaXMucmVuZGVyTW9udGhzKHRoaXMueWVhclN0YXJ0LCB0aGlzLm1vbnRoU3RhcnQpO1xuICAgIH1cbiAgfVxuXG4gIHJlbmRlck1vbnRocyh5ZWFyU3RhcnQsIG1vbnRoU3RhcnQpIHtcbiAgICAvLyBjb25zdHJ1Y3QgZG9tIHRyZWVcbiAgICBjb25zdCB7XG4gICAgICB0cmVlLCB5ZWFyRW5kLCBtb250aEVuZCwgbW9udGhzXG4gICAgfSA9IHRoaXMuY3JlYXRlVHJlZSh5ZWFyU3RhcnQsIG1vbnRoU3RhcnQsIHRoaXMub3B0cy5kaXNwbGF5TW9udGhzKTtcblxuICAgIHRoaXMuY1RyZWUuYWRkVHJlZSh0cmVlKTtcblxuICAgIHRoaXMubW9udGhTdGFydCA9IG1vbnRoU3RhcnQ7XG4gICAgdGhpcy55ZWFyU3RhcnQgID0geWVhclN0YXJ0O1xuXG4gICAgdGhpcy5tb250aEVuZCA9IG1vbnRoRW5kO1xuICAgIHRoaXMueWVhckVuZCAgPSB5ZWFyRW5kO1xuXG4gICAgaWYgKHRoaXMub3B0cy5zZWxlY3RhYmxlKSB7XG4gICAgICBhZGRDbGFzcyh0aGlzLmVsLCB0aGlzLmlzUmV2ZXJzZVNlbGVjdGFibGUgPyBzdHlsZXMucmV2ZXJzZWQgOiBzdHlsZXMuZGlyZWN0KTtcbiAgICAgIHJlbW92ZUNsYXNzKHRoaXMuZWwsIHRoaXMuaXNSZXZlcnNlU2VsZWN0YWJsZSA/IHN0eWxlcy5kaXJlY3QgOiBzdHlsZXMucmV2ZXJzZWQpO1xuICAgIH1cblxuICAgIHRoaXMuZG9tLm1vbnRocyA9IG1vbnRocztcbiAgICB0aGlzLmRvbS5tb250aHMuZm9yRWFjaCgobSkgPT4ge1xuICAgICAgdGhpcy5kb20ubW9udGhzV3JhcHBlci5hcHBlbmRDaGlsZChtKTtcbiAgICAgIGlmICh0aGlzLm9wdHMuc2VsZWN0YWJsZSkge1xuICAgICAgICB0aGlzLmFkZE1vbnRoRXZlbnRzKG0pO1xuICAgICAgICBhZGRDbGFzcyh0aGlzLmVsLCBzdHlsZXMuYWN0aW9uc0VuYWJsZWQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKCF0aGlzLm9wdHMuZW5hYmxlQWxsRGF5cykge1xuICAgICAgdGhpcy5kaXNhYmxlQmFja0J0bigpO1xuICAgIH1cblxuICAgIHRoaXMucmVjb3ZlclNlbGVjdGlvbnMoKTtcbiAgfVxuXG4gIHJlY292ZXJTZWxlY3Rpb25zKCkge1xuICAgIGlmICh0aGlzLnNlbGVjdGlvblN0YXJ0KSB7XG4gICAgICB0aGlzLnNlbGVjdFN0YXJ0KHRoaXMuc2VsZWN0aW9uU3RhcnQsIHRoaXMuY1RyZWUuc2VsZWN0RGF5KC4uLnRoaXMuc2VsZWN0aW9uU3RhcnQpKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zZWxlY3Rpb25FbmQpIHtcbiAgICAgIHRoaXMuc2VsZWN0RW5kKHRoaXMuc2VsZWN0aW9uRW5kLCB0aGlzLmNUcmVlLnNlbGVjdERheSguLi50aGlzLnNlbGVjdGlvbkVuZCkpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnNlbGVjdGlvblN0YXJ0ICYmIHRoaXMuc2VsZWN0aW9uRW5kKSB7XG4gICAgICBpZiAodGhpcy5oaWdobGlnaHRlZEJvdW5kcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuaGlnaExpZ2h0UmFuZ2UoLi4udGhpcy5oaWdobGlnaHRlZEJvdW5kcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmhpZ2hMaWdodFJhbmdlKHRoaXMuc2VsZWN0aW9uU3RhcnQsIHRoaXMuc2VsZWN0aW9uRW5kKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBkaXNhYmxlQmFja0J0bigpIHtcbiAgICBpZiAodGhpcy5vcHRzLmlzQmFja0Rpc2FibGVkKSB7XG4gICAgICBjb25zdCBzdGFydERhdGUgICAgICAgID0gZGF0ZVRvSXNvKHRoaXMueWVhclN0YXJ0LCB0aGlzLm1vbnRoU3RhcnQsIDEpO1xuICAgICAgbGV0IHsgY3VycmVudERhdGUgfSAgICA9IHRoaXMub3B0cztcbiAgICAgIGN1cnJlbnREYXRlICAgICAgICAgICAgPSBkYXRlVG9Jc28oY3VycmVudERhdGVbMF0sIGN1cnJlbnREYXRlWzFdLCAxKTtcbiAgICAgIHRoaXMuZG9tLmJhY2suZGlzYWJsZWQgPSBzdGFydERhdGUgPD0gY3VycmVudERhdGU7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlTG9hZGluZygpIHtcbiAgICBpZiAoIWhhc0NsYXNzKHRoaXMuZWwsIHN0eWxlcy5sb2FkaW5nKSkge1xuICAgICAgYWRkQ2xhc3ModGhpcy5lbCwgc3R5bGVzLmxvYWRpbmcpO1xuICAgICAgdGhpcy5lbWl0KCdsb2FkaW5nLXNob3cnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVtb3ZlQ2xhc3ModGhpcy5lbCwgc3R5bGVzLmxvYWRpbmcpO1xuICAgICAgdGhpcy5lbWl0KCdsb2FkaW5nLWhpZGUnKTtcbiAgICB9XG4gIH1cblxuICBhZGRNYXBzKG1hcHMpIHtcbiAgICB0aGlzLmNUcmVlLnJlcGxhY2VNYXBzKG1hcHMsIG1hcHMuc3RhcnRfZGF0ZSk7XG4gICAgdGhpcy5kZXN0cm95TW9udGhzKCk7XG4gICAgdGhpcy5yZW5kZXJNb250aHMoXG4gICAgICB0aGlzLm9wdHMueWVhclN0YXJ0IHx8IHRoaXMueWVhclN0YXJ0LFxuICAgICAgdGhpcy5vcHRzLm1vbnRoU3RhcnQgfHwgdGhpcy5tb250aFN0YXJ0XG4gICAgKTtcbiAgfVxuXG4gIGFkZEJ0bnNFdmVudHMoKSB7XG4gICAgdGhpcy5kb20uZm9yd2FyZC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChlKSA9PiB7XG4gICAgICB0aGlzLmRlc3Ryb3lNb250aHMoKTtcbiAgICAgIGxldCBtb250aFRvUmVuZGVyID0gdGhpcy5tb250aFN0YXJ0ICsgKHRoaXMub3B0cy5tb250aHNQYWdpbmF0aW9uSnVtcCB8fCB0aGlzLm9wdHMuZGlzcGxheU1vbnRocyk7XG4gICAgICBsZXQgeWVhclRvUmVuZGVyID0gdGhpcy55ZWFyU3RhcnQ7XG5cbiAgICAgIGlmIChtb250aFRvUmVuZGVyID49IDEyKSB7XG4gICAgICAgIG1vbnRoVG9SZW5kZXIgLT0gMTI7XG4gICAgICAgIHllYXJUb1JlbmRlciArPSAxO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnJlbmRlck1vbnRocyh5ZWFyVG9SZW5kZXIsIG1vbnRoVG9SZW5kZXIpO1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5kb20uYmFjay5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChlKSA9PiB7XG4gICAgICB0aGlzLmRlc3Ryb3lNb250aHMoKTtcbiAgICAgIGxldCBtb250aFRvUmVuZGVyID0gdGhpcy5tb250aFN0YXJ0IC0gKHRoaXMub3B0cy5tb250aHNQYWdpbmF0aW9uSnVtcCB8fCB0aGlzLm9wdHMuZGlzcGxheU1vbnRocyk7XG4gICAgICBsZXQgeWVhclRvUmVuZGVyICA9IHRoaXMueWVhclN0YXJ0O1xuXG4gICAgICBpZiAobW9udGhUb1JlbmRlciA8IDApIHtcbiAgICAgICAgbW9udGhUb1JlbmRlciArPSAxMjtcbiAgICAgICAgeWVhclRvUmVuZGVyIC09IDE7XG4gICAgICB9XG5cbiAgICAgIHRoaXMucmVuZGVyTW9udGhzKHllYXJUb1JlbmRlciwgbW9udGhUb1JlbmRlcik7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgfSk7XG4gIH1cblxuICBhZGRNb250aEV2ZW50cyhlbCkge1xuICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGUpID0+IHtcbiAgICAgIGNvbnN0IGlzRW5kRmlyc3QgPSB0aGlzLmlzUmV2ZXJzZVNlbGVjdGFibGU7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHZhbHVlLFxuICAgICAgICBwYXJlbnQ6IGNlbGxcbiAgICAgIH0gPSB0cmF2ZXJzZVRvUGFyZW50V2l0aEF0dHIoZS50YXJnZXQsICdkYXRhLXZhbHVlJyk7XG5cbiAgICAgIGNvbnN0IHJlc2V0U2VsZWN0aW9uT25Fc2NhcGUgPSAoZXZlbnQpID0+IHtcbiAgICAgICAgY29uc3Qga2V5ID0gZXZlbnQua2V5IHx8IGV2ZW50LmtleUNvZGU7XG5cbiAgICAgICAgaWYgKGtleSA9PT0gJ0VzY2FwZScgfHwga2V5ID09PSAnRXNjJyB8fCBrZXkgPT09IDI3KSB7XG4gICAgICAgICAgaWYgKHRoaXMuaXNTZWxlY3RpbmcpIHtcbiAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleXVwJywgcmVzZXRTZWxlY3Rpb25PbkVzY2FwZSwgdHJ1ZSk7XG4gICAgICAgICAgICB0aGlzLnJlc2V0U2VsZWN0aW9uKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsIHJlc2V0U2VsZWN0aW9uT25Fc2NhcGUsIHRydWUpO1xuXG4gICAgICBpZiAoaXModmFsdWUpICYmIGNlbGwpIHtcbiAgICAgICAgY29uc3QgZGF0ZVZhbHVlICAgICAgICAgID0gW2VsLnllYXIsIGVsLm1vbnRoLCBwYXJzZUludChjZWxsLmdldEF0dHJpYnV0ZSgnZGF0YS12YWx1ZScpLCAxMCldO1xuICAgICAgICBjb25zdCBkYXlBbHJlYWR5U2VsZWN0ZWQgPSB0aGlzLmlzU2VsZWN0aW5nICYmIGlzQ3VycmVudCgoaXNFbmRGaXJzdCkgPyB0aGlzLnNlbGVjdGlvbkVuZCA6IHRoaXMuc2VsZWN0aW9uU3RhcnQsIGRhdGVWYWx1ZSk7XG4gICAgICAgIGNvbnN0IHJhbmdlU2VsZWN0ZWQgICAgICA9ICF0aGlzLmlzU2VsZWN0aW5nICYmIHRoaXMuc2VsZWN0aW9uRW5kICYmIHRoaXMuc2VsZWN0aW9uU3RhcnQ7XG4gICAgICAgIGNvbnN0IGlzUGFzdFRvZGF5ICAgICAgICA9IGlzTGF0ZXIoZGF0ZVZhbHVlLCB0aGlzLm9wdHMuY3VycmVudERhdGUpO1xuXG4gICAgICAgIGlmIChkYXlBbHJlYWR5U2VsZWN0ZWQgfHwgcmFuZ2VTZWxlY3RlZCB8fCBpc1Bhc3RUb2RheSkge1xuICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleXVwJywgcmVzZXRTZWxlY3Rpb25PbkVzY2FwZSwgdHJ1ZSk7XG4gICAgICAgICAgdGhpcy5yZXNldFNlbGVjdGlvbigpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFkYXlBbHJlYWR5U2VsZWN0ZWQgJiYgIWlzUGFzdFRvZGF5ICYmICF0aGlzLm9wdHMuZW5hYmxlQWxsRGF5cykge1xuICAgICAgICAgIGlmIChpc0VuZEZpcnN0KSB7XG4gICAgICAgICAgICB0aGlzLmVuZERhdGVGaXJzdEFjdGlvbihkYXRlVmFsdWUsIGNlbGwpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnN0YXJ0RGF0ZUZpcnN0QWN0aW9uKGRhdGVWYWx1ZSwgY2VsbCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlbW92ZUNsYXNzKHRoaXMuZWwsIHN0eWxlcy5zZWxlY3RpbmdEaXJlY3QsIHN0eWxlcy5zZWxlY3RpbmdSZXZlcnNlZCk7XG4gICAgICAgICAgZGVsZXRlIGNlbGwuZGF0YXNldC5oaWdobGlnaHRlZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbkVuZCAmJiB0aGlzLnNlbGVjdGlvblN0YXJ0ICYmIHRoaXMuaGFzVmFsaWRSYW5nZSkge1xuICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleXVwJywgcmVzZXRTZWxlY3Rpb25PbkVzY2FwZSwgdHJ1ZSk7XG4gICAgICAgICAgdGhpcy5jb21wbGV0ZVNlbGVjdGlvbihpc0VuZEZpcnN0LCBkYXRlVmFsdWUsIGNlbGwpO1xuICAgICAgICAgIGlmICh0aGlzLm9wdHMuaXNEcm9wRG93biAmJiB0aGlzLmNhbERyb3ApIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2VEcm9wKG51bGwsIHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgZWwuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VvdmVyJywgKGUpID0+IHtcbiAgICAgIGNvbnN0IHsgdmFsdWUsIHBhcmVudDogY2VsbCB9ID0gdHJhdmVyc2VUb1BhcmVudFdpdGhBdHRyKGUudGFyZ2V0LCAnZGF0YS12YWx1ZScpO1xuXG4gICAgICBpZiAoaXModmFsdWUpICYmIGNlbGwpIHtcbiAgICAgICAgY29uc3QgY3VycmVudCAgICAgICAgICA9IFtlbC55ZWFyLCBlbC5tb250aCwgcGFyc2VJbnQoY2VsbC5nZXRBdHRyaWJ1dGUoJ2RhdGEtdmFsdWUnKSwgMTApXTtcbiAgICAgICAgY29uc3QgaXNQYXN0VG9kYXkgICAgICA9IGlzTGF0ZXIoY3VycmVudCwgdGhpcy5vcHRzLmN1cnJlbnREYXRlKTtcbiAgICAgICAgY29uc3QgaXNFbmRGaXJzdCAgICAgICA9IHRoaXMuaXNSZXZlcnNlU2VsZWN0YWJsZTtcblxuICAgICAgICBpZiAoaXNQYXN0VG9kYXkgJiYgIXRoaXMub3B0cy5lbmFibGVBbGxEYXlzKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNTZWxlY3RpbmcpIHtcbiAgICAgICAgICB0aGlzLnJlbW92ZUhpZ2hsaWdodCgpO1xuXG4gICAgICAgICAgY29uc3QgY2VsbHMgPSB0aGlzLmVsLnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLXZhbHVlXScpO1xuICAgICAgICAgIGNlbGxzLmZvckVhY2goKGVsKSA9PiB7XG4gICAgICAgICAgICBkZWxldGUgZWwuZGF0YXNldC5ob3ZlcmVkO1xuICAgICAgICAgICAgZGVsZXRlIGVsLmRhdGFzZXQuaG92ZXJlZE9mZnNldDtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIC8vIHJldmVyc2Ugc2VsZWN0aW9uIGRpcmVjdGlvblxuICAgICAgICAgIGlmIChpc0VuZEZpcnN0ICYmIHRoaXMuc2VsZWN0aW9uRW5kICYmICFpc0N1cnJlbnQoY3VycmVudCwgdGhpcy5zZWxlY3Rpb25FbmQpKSB7XG4gICAgICAgICAgICBpZiAoaXNMYXRlcih0aGlzLnNlbGVjdGlvbkVuZCwgY3VycmVudCkpIHtcbiAgICAgICAgICAgICAgY29uc3QgY2VsbEEgPSB0aGlzLmNlbGxCO1xuICAgICAgICAgICAgICBjb25zdCB7IHNlbGVjdGlvbkVuZCB9ID0gdGhpcztcblxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZUhpZ2hsaWdodERpcmVjdGlvbihmYWxzZSwgc2VsZWN0aW9uRW5kKTtcbiAgICAgICAgICAgICAgdGhpcy5zdGFydERhdGVGaXJzdEFjdGlvbih0aGlzLnNlbGVjdGlvbkVuZCwgY2VsbEEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAoIWlzRW5kRmlyc3QgJiYgdGhpcy5zZWxlY3Rpb25TdGFydCAmJiAhaXNDdXJyZW50KGN1cnJlbnQsIHRoaXMuc2VsZWN0aW9uU3RhcnQpKSB7XG4gICAgICAgICAgICBpZiAoaXNMYXRlcihjdXJyZW50LCB0aGlzLnNlbGVjdGlvblN0YXJ0KSkge1xuICAgICAgICAgICAgICBjb25zdCBjZWxsQiA9IHRoaXMuY2VsbEE7XG4gICAgICAgICAgICAgIGNvbnN0IHsgc2VsZWN0aW9uU3RhcnQgfSA9IHRoaXM7XG5cbiAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VIaWdobGlnaHREaXJlY3Rpb24odHJ1ZSwgc2VsZWN0aW9uU3RhcnQpO1xuICAgICAgICAgICAgICB0aGlzLmVuZERhdGVGaXJzdEFjdGlvbih0aGlzLnNlbGVjdGlvblN0YXJ0LCBjZWxsQik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHRoaXMuaXNSZXZlcnNlU2VsZWN0YWJsZSkge1xuICAgICAgICAgICAgdGhpcy5oaWdoTGlnaHRSYW5nZShjdXJyZW50LCB0aGlzLnNlbGVjdGlvbkVuZCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaGlnaExpZ2h0UmFuZ2UodGhpcy5zZWxlY3Rpb25TdGFydCwgY3VycmVudCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuY2hhbmdlSGlnaGxpZ2h0RGlyZWN0aW9uKHRoaXMub3B0cy5pc1JldmVyc2VTZWxlY3RhYmxlKTtcblxuICAgICAgICAgIGNvbnN0IGlzRGlzYWJsZWRMZWZ0ICAgPSBjZWxsLmRhdGFzZXQuZGlzYWJsZWQgPT09ICdsZWZ0JztcbiAgICAgICAgICBjb25zdCBpc0Rpc2FibGVkQ2VudGVyID0gY2VsbC5kYXRhc2V0LmRpc2FibGVkID09PSAnY2VudGVyJztcbiAgICAgICAgICBjb25zdCBpc0Rpc2FibGVkUmlnaHQgID0gY2VsbC5kYXRhc2V0LmRpc2FibGVkID09PSAncmlnaHQnO1xuXG4gICAgICAgICAgbGV0IGlzSW52YWxpZCA9ICcnO1xuXG4gICAgICAgICAgaWYgKGlzRW5kRmlyc3QgJiYgaXNEaXNhYmxlZFJpZ2h0IHx8IGlzRGlzYWJsZWRDZW50ZXIgfHwgIWlzRW5kRmlyc3QgJiYgaXNEaXNhYmxlZExlZnQpIHtcbiAgICAgICAgICAgIGlzSW52YWxpZCA9ICdpbnZhbGlkJztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBjZWxscyA9IHRoaXMuZWwucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtdmFsdWVdJyk7XG4gICAgICAgICAgbGV0IG9mZnNldENlbGw7XG5cbiAgICAgICAgICBjZWxscy5mb3JFYWNoKChlbCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGRlbGV0ZSBlbC5kYXRhc2V0LmhvdmVyZWQ7XG4gICAgICAgICAgICBkZWxldGUgZWwuZGF0YXNldC5ob3ZlcmVkT2Zmc2V0O1xuXG4gICAgICAgICAgICBpZiAoZWwgPT09IGNlbGwpIHtcbiAgICAgICAgICAgICAgb2Zmc2V0Q2VsbCA9ICh0aGlzLm9wdHMuaXNSZXZlcnNlU2VsZWN0YWJsZSkgPyBjZWxsc1tpbmRleCAtIDFdIDogY2VsbHNbaW5kZXggKyAxXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGlmIChpcyhvZmZzZXRDZWxsKSkge1xuICAgICAgICAgICAgb2Zmc2V0Q2VsbC5kYXRhc2V0LmhvdmVyZWRPZmZzZXQgPSAnJztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjZWxsLmRhdGFzZXQuaG92ZXJlZCA9IGlzSW52YWxpZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgZWwuYm9keS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW91dCcsIChlKSA9PiB7XG4gICAgICBjb25zdCBjZWxscyA9IHRoaXMuZWwucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtdmFsdWVdJyk7XG4gICAgICBjZWxscy5mb3JFYWNoKChlbCkgPT4ge1xuICAgICAgICBkZWxldGUgZWwuZGF0YXNldC5ob3ZlcmVkO1xuICAgICAgICBkZWxldGUgZWwuZGF0YXNldC5ob3ZlcmVkT2Zmc2V0O1xuICAgICAgfSk7XG5cbiAgICAgIC8qIGVzbGludCBuby1iaXR3aXNlOiBbXCJlcnJvclwiLCB7IFwiYWxsb3dcIjogW1wiJlwiXSB9XSAqL1xuICAgICAgLy8gc2ltdWxhdGUgJ21vdXNlbGVhdmUnXG4gICAgICBpZiAoIWUucmVsYXRlZFRhcmdldFxuICAgICAgICB8fCAoZS5yZWxhdGVkVGFyZ2V0ICE9PSBlbC5ib2R5ICYmICEoZWwuYm9keS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihlLnJlbGF0ZWRUYXJnZXQpXG4gICAgICAgICYgTm9kZS5ET0NVTUVOVF9QT1NJVElPTl9DT05UQUlORURfQlkpKSkge1xuICAgICAgICBpZiAodGhpcy5pc1NlbGVjdGluZykge1xuICAgICAgICAgIHRoaXMucmVtb3ZlSGlnaGxpZ2h0KCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGNoYW5nZUhpZ2hsaWdodERpcmVjdGlvbihpc1JldmVyc2UsIGRhdGVBcnJheSA9IG51bGwpIHtcbiAgICB0aGlzLmlzUmV2ZXJzZVNlbGVjdGFibGUgPSBpc1JldmVyc2U7XG5cbiAgICBpZiAoZGF0ZUFycmF5KSB7XG4gICAgICB0aGlzLnJlc2V0U2VsZWN0aW9uKCk7XG4gICAgICB0aGlzLnNlbGVjdGlvblN0YXJ0ID0gKGlzUmV2ZXJzZSkgPyBkYXRlQXJyYXkgOiBudWxsO1xuICAgICAgdGhpcy5zZWxlY3Rpb25FbmQgICA9IChpc1JldmVyc2UpID8gbnVsbCA6IGRhdGVBcnJheTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3Rpb25TdGFydCA9IHRoaXMuc2VsZWN0aW9uRW5kO1xuICAgICAgdGhpcy5zZWxlY3Rpb25FbmQgPSB0aGlzLnNlbGVjdGlvblN0YXJ0O1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdHMuc2VsZWN0YWJsZSkge1xuICAgICAgYWRkQ2xhc3ModGhpcy5lbCwgaXNSZXZlcnNlID8gc3R5bGVzLnJldmVyc2VkIDogc3R5bGVzLmRpcmVjdCk7XG4gICAgICByZW1vdmVDbGFzcyh0aGlzLmVsLCBpc1JldmVyc2UgPyBzdHlsZXMuZGlyZWN0IDogc3R5bGVzLnJldmVyc2VkKTtcbiAgICB9XG4gIH1cblxuICBzdGFydERhdGVGaXJzdEFjdGlvbihkYXRlVmFsdWUsIGNlbGwpIHtcbiAgICBpZiAodGhpcy5pc1NlbGVjdGluZyAmJiBpc0xhdGVyKHRoaXMuc2VsZWN0aW9uU3RhcnQsIGRhdGVWYWx1ZSkpIHtcbiAgICAgIHRoaXMuc2VsZWN0RW5kQWN0aW9uKGRhdGVWYWx1ZSwgY2VsbCk7XG5cbiAgICAgIGNvbnN0IGZuID0gKCkgPT4ge1xuICAgICAgICByZW1vdmVDbGFzcyh0aGlzLmVsLCBzdHlsZXMuc2VsZWN0aW5nRGlyZWN0KTtcbiAgICAgICAgY2VsbC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW91dCcsIGZuKTtcbiAgICAgIH07XG5cbiAgICAgIGNlbGwuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VvdXQnLCBmbik7XG4gICAgICB0aGlzLmlzU2VsZWN0aW5nID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVtb3ZlSGlnaGxpZ2h0KCk7XG4gICAgICBhZGRDbGFzcyh0aGlzLmVsLCBzdHlsZXMuc2VsZWN0aW5nRGlyZWN0KTtcbiAgICAgIHRoaXMuaXNTZWxlY3RpbmcgPSB0cnVlO1xuICAgICAgdGhpcy5zZWxlY3RTdGFydEFjdGlvbihkYXRlVmFsdWUsIGNlbGwpO1xuICAgICAgY2VsbC5kYXRhc2V0LmhpZ2hsaWdodGVkID0gJ2xlZnQnO1xuICAgIH1cbiAgfVxuXG4gIGVuZERhdGVGaXJzdEFjdGlvbihkYXRlVmFsdWUsIGNlbGwpIHtcbiAgICBpZiAodGhpcy5pc1NlbGVjdGluZyAmJiBpc0xhdGVyKGRhdGVWYWx1ZSwgdGhpcy5zZWxlY3Rpb25FbmQpKSB7XG4gICAgICB0aGlzLnNlbGVjdFN0YXJ0QWN0aW9uKGRhdGVWYWx1ZSwgY2VsbCk7XG5cbiAgICAgIGNvbnN0IGZuID0gKCkgPT4ge1xuICAgICAgICByZW1vdmVDbGFzcyh0aGlzLmVsLCBzdHlsZXMuc2VsZWN0aW5nUmV2ZXJzZWQpO1xuICAgICAgICBjZWxsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlb3V0JywgZm4pO1xuICAgICAgfTtcblxuICAgICAgY2VsbC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW91dCcsIGZuKTtcbiAgICAgIHRoaXMuaXNTZWxlY3RpbmcgPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZW1vdmVIaWdobGlnaHQoKTtcbiAgICAgIGFkZENsYXNzKHRoaXMuZWwsIHN0eWxlcy5zZWxlY3RpbmdSZXZlcnNlZCk7XG4gICAgICB0aGlzLmlzU2VsZWN0aW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMuc2VsZWN0RW5kQWN0aW9uKGRhdGVWYWx1ZSwgY2VsbCk7XG4gICAgICBjZWxsLmRhdGFzZXQuaGlnaGxpZ2h0ZWQgPSAncmlnaHQnO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdFN0YXJ0QWN0aW9uKGRhdGVWYWx1ZSwgY2VsbCkge1xuICAgIHRoaXMuc2VsZWN0U3RhcnQoZGF0ZVZhbHVlLCBjZWxsKTtcbiAgICB0aGlzLnN3aXRjaElucHV0Rm9jdXMoJ2VuZCcpO1xuICAgIGlmICh0aGlzLmhhc1ZhbGlkUmFuZ2UpIHtcbiAgICAgIHRoaXMuZW1pdCgnc2VsZWN0aW9uLXN0YXJ0JywgZGF0ZVRvSXNvKC4uLmRhdGVWYWx1ZSwgdHJ1ZSksIGRhdGVUb0lzbyguLi5kYXRlVmFsdWUpKTtcbiAgICAgIGlmIChpc0Z1bmN0aW9uKHRoaXMub3B0cy5vblNlbGVjdFN0YXJ0KSkge1xuICAgICAgICB0aGlzLm9wdHMub25TZWxlY3RTdGFydChkYXRlVG9Jc28oLi4uZGF0ZVZhbHVlLCB0cnVlKSwgZGF0ZVRvSXNvKC4uLmRhdGVWYWx1ZSkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNlbGVjdEVuZEFjdGlvbihkYXRlVmFsdWUsIGNlbGwpIHtcbiAgICB0aGlzLnNlbGVjdEVuZChkYXRlVmFsdWUsIGNlbGwpO1xuICAgIHRoaXMuc3dpdGNoSW5wdXRGb2N1cygnc3RhcnQnKTtcbiAgICBpZiAodGhpcy5oYXNWYWxpZFJhbmdlKSB7XG4gICAgICB0aGlzLmVtaXQoJ3NlbGVjdGlvbi1lbmQnLCBkYXRlVG9Jc28oLi4uZGF0ZVZhbHVlLCB0cnVlKSwgZGF0ZVRvSXNvKC4uLmRhdGVWYWx1ZSkpO1xuICAgICAgaWYgKGlzRnVuY3Rpb24odGhpcy5vcHRzLm9uU2VsZWN0RW5kKSkge1xuICAgICAgICB0aGlzLm9wdHMub25TZWxlY3RFbmQoZGF0ZVRvSXNvKC4uLmRhdGVWYWx1ZSwgdHJ1ZSksIGRhdGVUb0lzbyguLi5kYXRlVmFsdWUpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZW1vdmVIaWdobGlnaHQoKSB7XG4gICAgaWYgKHRoaXMuaGlnaGxpZ2h0ZWRCb3VuZHMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgeyByYW5nZSB9ID0gdGhpcy5zZWxlY3RSYW5nZSguLi50aGlzLmhpZ2hsaWdodGVkQm91bmRzKTtcbiAgICAgIHJhbmdlLm1hcCgoY2VsbCkgPT4ge1xuICAgICAgICBkZWxldGUgY2VsbC5kYXRhc2V0LmhpZ2hsaWdodGVkO1xuICAgICAgICBkZWxldGUgY2VsbC5kYXRhc2V0LmludmFsaWQ7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5kZXN0cm95VG9vbHRpcCgpO1xuXG4gICAgICB0aGlzLmhhc1ZhbGlkUmFuZ2UgICAgID0gdHJ1ZTtcbiAgICAgIHRoaXMuaGlnaGxpZ2h0ZWRCb3VuZHMgPSBbXTtcbiAgICB9XG4gIH1cblxuICBkZXN0cm95VG9vbHRpcCgpIHtcbiAgICBpZiAoaXModGhpcy50b29sdGlwUG9wcGVyKSkge1xuICAgICAgdGhpcy50b29sdGlwUG9wcGVyLmRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICBpZiAoaXModGhpcy5kb20udG9vbHRpcCkpIHtcbiAgICAgIGRlc3Ryb3lFbGVtZW50KHRoaXMuZG9tLnRvb2x0aXApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBIaWdobGlnaHRzIHRoZSByYW5nZSBvZiBjZWxscyBiZXR3ZWVuIHRoZSBzdGFydCBhbmQgZW5kIGRhdGVzLlxuICAgKiBAcHVibGljXG4gICAqIEBwYXJhbSB7QXJyYXl9IHN0YXJ0IGUuZy4gWzIwMTYsIDAsIDFdXG4gICAqIEBwYXJhbSB7QXJyYXl9IGVuZCBbMjAxNiwgMSwgM11cbiAgICogQHJldHVybnMge2Jvb2xlYW59IC0gV2hldGhlciB0aGUgcmFuZ2UgaXMgdmFsaWQgb3Igbm90LlxuICAgKi9cbiAgaGlnaExpZ2h0UmFuZ2Uoc3RhcnQsIGVuZCkge1xuICAgIGNvbnN0IHsgcmFuZ2UsIGlzVmFsaWQgfSA9IHRoaXMuc2VsZWN0UmFuZ2Uoc3RhcnQsIGVuZCk7XG4gICAgY29uc3QgeyBvcHRzIH0gICAgICAgICAgID0gdGhpcztcbiAgICBsZXQgeyBtaW5TdGF5LCBtYXhTdGF5IH0gPSBvcHRzO1xuICAgIGxldCBpbnZhbGlkUmFuZ2VNZXNzYWdlO1xuXG4gICAgaWYgKGlzQXJyYXkocmFuZ2UpKSB7XG4gICAgICBpZiAob3B0cy5yZW50YWxJZCkge1xuICAgICAgICBjb25zdCByYW5nZVdpdGhvdXRMYXN0ID0gcmFuZ2Uuc2xpY2UoMCwgLTEpO1xuXG4gICAgICAgIGlmICghb3B0cy5hbGxvd1Nob3J0ZXJNaW5TdGF5U2VsZWN0aW9uKSB7XG4gICAgICAgICAgLy8gZ2V0IHRoZSBiaWdnZXN0IG1pblN0YXkgdmFsdWUgaW4gdGhlIHJhbmdlXG4gICAgICAgICAgY29uc3QgY2VsbHMgPSByYW5nZVdpdGhvdXRMYXN0Lm1hcCgoY2VsbCkgPT4gY2VsbC5kYXRhc2V0Lm1pblN0YXkgfHwgbWluU3RheSk7XG4gICAgICAgICAgbWluU3RheSA9IE1hdGgubWF4KC4uLmNlbGxzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghb3B0cy5hbGxvd0xvbmdlck1heFN0YXlTZWxlY3Rpb24pIHtcbiAgICAgICAgICAvLyBnZXQgdGhlIGJpZ2dlc3QgbWF4U3RheSB2YWx1ZSBpbiB0aGUgcmFuZ2VcbiAgICAgICAgICBjb25zdCBjZWxscyA9IHJhbmdlV2l0aG91dExhc3QubWFwKChjZWxsKSA9PiBjZWxsLmRhdGFzZXQubWF4U3RheSB8fCBtYXhTdGF5KTtcbiAgICAgICAgICBtYXhTdGF5ID0gTWF0aC5tYXgoLi4uY2VsbHMpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIGNoZWNrIHRoYXQgcmFuZ2UgaXMgdmFsaWQgYW5kIGxvbmdlciB0aGFuIG1pblN0YXkgYW5kIHNob3J0ZXIgdGhhbiBtYXhTdGF5XG4gICAgICBjb25zdCBoYXNWYWxpZERheXMgICAgPSBvcHRzLnJlbnRhbElkID8gaXNWYWxpZCA6IHRydWU7XG4gICAgICBjb25zdCBoYXNWYWxpZE1pblN0YXkgPSByYW5nZS5sZW5ndGggPiBtaW5TdGF5O1xuICAgICAgY29uc3QgaGFzVmFsaWRNYXhTdGF5ID0gcmFuZ2UubGVuZ3RoIDwgbWF4U3RheTtcblxuICAgICAgdGhpcy5oYXNWYWxpZFJhbmdlID0gaGFzVmFsaWREYXlzICYmIGhhc1ZhbGlkTWluU3RheSAmJiBoYXNWYWxpZE1heFN0YXk7XG5cbiAgICAgIGlmICghaGFzVmFsaWRNaW5TdGF5KSB7XG4gICAgICAgIGludmFsaWRSYW5nZU1lc3NhZ2UgPSB0Rm9ybWF0dGVyKG1pblN0YXksIHRoaXMubG9jYWxlLmhhc0ludmFsaWRNaW5TdGF5KTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFoYXNWYWxpZE1heFN0YXkpIHtcbiAgICAgICAgaW52YWxpZFJhbmdlTWVzc2FnZSA9IHRGb3JtYXR0ZXIobWF4U3RheSwgdGhpcy5sb2NhbGUuaGFzSW52YWxpZE1heFN0YXkpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWhhc1ZhbGlkRGF5cykge1xuICAgICAgICBpbnZhbGlkUmFuZ2VNZXNzYWdlID0gdGhpcy5sb2NhbGUuaGFzSW52YWxpZERheXM7XG4gICAgICB9XG5cbiAgICAgIHJhbmdlLm1hcCgoY2VsbCwgaW5kZXgpID0+IHtcbiAgICAgICAgY29uc3QgbGVmdCA9IGluZGV4ID09PSAwO1xuICAgICAgICBjb25zdCByaWdodCA9IGluZGV4ICsgMSA9PT0gcmFuZ2UubGVuZ3RoO1xuXG4gICAgICAgIGlmICh0aGlzLmhhc1ZhbGlkUmFuZ2UpIHtcbiAgICAgICAgICBpZiAobGVmdCkge1xuICAgICAgICAgICAgY2VsbC5kYXRhc2V0LmhpZ2hsaWdodGVkID0gJ2xlZnQnO1xuICAgICAgICAgIH0gZWxzZSBpZiAocmlnaHQpIHtcbiAgICAgICAgICAgIGNlbGwuZGF0YXNldC5oaWdobGlnaHRlZCA9ICdyaWdodCc7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNlbGwuZGF0YXNldC5oaWdobGlnaHRlZCA9ICdjZW50ZXInO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAobGVmdCkge1xuICAgICAgICAgICAgY2VsbC5kYXRhc2V0LmludmFsaWQgPSAnbGVmdCc7XG4gICAgICAgICAgfSBlbHNlIGlmIChyaWdodCkge1xuICAgICAgICAgICAgY2VsbC5kYXRhc2V0LmludmFsaWQgPSAncmlnaHQnO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjZWxsLmRhdGFzZXQuaW52YWxpZCA9ICdjZW50ZXInO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRvb2x0aXBQb3NpdGlvbiA9ICh0aGlzLmlzUmV2ZXJzZVNlbGVjdGFibGUpID8gbGVmdCA6IHJpZ2h0O1xuXG4gICAgICAgIGlmICh0b29sdGlwUG9zaXRpb24gJiYgdGhpcy5lbC5jb250YWlucyhjZWxsKSAmJiAhdGhpcy5oYXNWYWxpZFJhbmdlKSB7XG4gICAgICAgICAgdGhpcy5kb20udG9vbHRpcCA9IHRoaXMuZWwuYXBwZW5kQ2hpbGQoZWxlbWVudEZyb21TdHJpbmcodGVtcGxhdGVzLnRvb2x0aXApKTtcbiAgICAgICAgICB0aGlzLmRvbS50b29sdGlwLnF1ZXJ5U2VsZWN0b3IoJ3NwYW4nKS5pbm5lckhUTUwgPSBpbnZhbGlkUmFuZ2VNZXNzYWdlO1xuXG4gICAgICAgICAgdGhpcy5sb2dnZXIoYGludmFsaWRSYW5nZU1lc3NhZ2U6ICR7aW52YWxpZFJhbmdlTWVzc2FnZX0gKCR7c3RhcnR9IC0gJHtlbmR9KWAsICd3YXJuJyk7XG5cbiAgICAgICAgICB0aGlzLnRvb2x0aXBQb3BwZXIgPSB3aW5kb3cuUG9wcGVyLmNyZWF0ZVBvcHBlcihjZWxsLCB0aGlzLmRvbS50b29sdGlwLCB7XG4gICAgICAgICAgICBwbGFjZW1lbnQ6ICd0b3AnLFxuICAgICAgICAgICAgbW9kaWZpZXJzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnZmxpcCcsXG4gICAgICAgICAgICAgICAgZW5hYmxlZDogZmFsc2VcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdvZmZzZXQnLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIG9mZnNldDogWzAsIDBdXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY2VsbDtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLmhpZ2hsaWdodGVkQm91bmRzID0gW3N0YXJ0LCBlbmRdO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmhhc1ZhbGlkUmFuZ2U7XG4gIH1cblxuICAvKiogUmVzZXRzIHNlbGVjdGlvbiwgcmVtb3ZlcyBoaWdobGlnaHRzXG4gICAqIEBwdWJsaWNcbiAgICogQHJldHVybnMge0NhbGVuZGFyfVxuICAgKi9cbiAgcmVzZXRTZWxlY3Rpb24oKSB7XG4gICAgdGhpcy5yZW1vdmVIaWdobGlnaHQoKTtcbiAgICB0aGlzLmlzU2VsZWN0aW5nID0gZmFsc2U7XG5cbiAgICB0aGlzLmVtaXQoJ3NlbGVjdGlvbi1yZXNldCcsIHRoaXMuc2VsZWN0aW9uU3RhcnQsIHRoaXMuc2VsZWN0aW9uRW5kKTtcbiAgICBpZiAoaXNGdW5jdGlvbih0aGlzLm9wdHMub25DbGVhclNlbGVjdGlvbikpIHtcbiAgICAgIHRoaXMub3B0cy5vbkNsZWFyU2VsZWN0aW9uKHRoaXMuc2VsZWN0aW9uU3RhcnQsIHRoaXMuc2VsZWN0aW9uRW5kKTtcbiAgICB9XG5cbiAgICB0aGlzLnNlbGVjdGlvblN0YXJ0ID0gbnVsbDtcbiAgICB0aGlzLnNlbGVjdGlvbkVuZCAgID0gbnVsbDtcblxuICAgIGlmICh0aGlzLmNlbGxBKSB7XG4gICAgICB0aGlzLmNlbGxBID0gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jZWxsQikge1xuICAgICAgdGhpcy5jZWxsQiA9IG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3B0cy5pc0Ryb3BEb3duICYmIHRoaXMub3B0cy5lbFN0YXJ0QXQgJiYgdGhpcy5vcHRzLmVsRW5kQXQpIHtcbiAgICAgIHRoaXMub3B0cy5lbFN0YXJ0QXQudmFsdWUgPSBudWxsO1xuICAgICAgdGhpcy5vcHRzLmVsRW5kQXQudmFsdWUgICA9IG51bGw7XG5cbiAgICAgIGlmICh0aGlzLm9wdHMuaXNTaW5nbGVJbnB1dCkge1xuICAgICAgICB0aGlzLm9wdHMuZWxTaW5nbGVJbnB1dC52YWx1ZSA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogc2VsZWN0IHJhbmdlIGZyb20gdGhlIHRyZWVcbiAgICpcbiAgICogQHBhcmFtIHtBcnJheX0gc3RhcnQgZS5nLiBbMjAxNiwgMCwgMV1cbiAgICogQHBhcmFtIHtBcnJheX0gZW5kIFsyMDE2LCAxLCAzXVxuICAgKiBAcmV0dXJucyB7e3JhbmdlOiBBcnJheSwgaXNWYWxpZDoge0Jvb2xlYW59fX1cbiAgICovXG4gIHNlbGVjdFJhbmdlKHN0YXJ0LCBlbmQpIHtcbiAgICBpZiAoaXNMYXRlcihzdGFydCwgZW5kKSkge1xuICAgICAgcmV0dXJuIHRoaXMuY1RyZWUuc2VsZWN0UmFuZ2Uoc3RhcnQsIGVuZCk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICByYW5nZTogbnVsbCxcbiAgICAgIGlzVmFsaWQ6IGZhbHNlXG4gICAgfTtcbiAgfVxuXG4gIHNlbGVjdFN0YXJ0KGRhdGVWYWx1ZSwgY2VsbCkge1xuICAgIHRoaXMuc2VsZWN0aW9uU3RhcnQgPSBkYXRlVmFsdWU7XG5cbiAgICBpZiAoY2VsbCkge1xuICAgICAgdGhpcy5jZWxsQSA9IGNlbGw7XG4gICAgfVxuXG4gICAgdGhpcy52YWx1ZVRvSW5wdXQoJ3N0YXJ0JywgZGF0ZVZhbHVlKTtcbiAgfVxuXG4gIHNlbGVjdEVuZChkYXRlVmFsdWUsIGNlbGwpIHtcbiAgICB0aGlzLnNlbGVjdGlvbkVuZCA9IGRhdGVWYWx1ZTtcblxuICAgIGlmIChjZWxsKSB7XG4gICAgICB0aGlzLmNlbGxCID0gY2VsbDtcbiAgICB9XG5cbiAgICB0aGlzLnZhbHVlVG9JbnB1dCgnZW5kJywgZGF0ZVZhbHVlKTtcbiAgfVxuXG4gIGNyZWF0ZVRyZWUoeWVhclN0YXJ0LCBtb250aFN0YXJ0LCB0aW1lcykge1xuICAgIGNvbnN0IG1vbnRocyA9IFtdO1xuICAgIGNvbnN0IHRyZWUgICA9IHt9O1xuICAgIGxldCBtb250aEVuZCA9IG1vbnRoU3RhcnQ7XG4gICAgbGV0IHllYXJFbmQgID0geWVhclN0YXJ0O1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aW1lczsgaSArPSAxKSB7XG4gICAgICBjb25zdCBtRG9tID0gdGhpcy5kb21Nb250aCh5ZWFyRW5kLCBtb250aEVuZCk7XG5cbiAgICAgIG1vbnRocy5wdXNoKG1Eb20pO1xuXG4gICAgICBpZiAoIXRyZWVbeWVhckVuZF0pIHtcbiAgICAgICAgdHJlZVt5ZWFyRW5kXSA9IHt9O1xuICAgICAgfVxuXG4gICAgICBpZiAoIXRyZWVbeWVhckVuZF1bbW9udGhFbmRdKSB7XG4gICAgICAgIHRyZWVbeWVhckVuZF1bbW9udGhFbmRdID0gbURvbS5kYXlFbGVtZW50cyB8fCBbXTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1vbnRoRW5kID4gMTApIHtcbiAgICAgICAgbW9udGhFbmQgPSAwO1xuICAgICAgICB5ZWFyRW5kICs9IDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtb250aEVuZCArPSAxO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB0cmVlLFxuICAgICAgeWVhckVuZCxcbiAgICAgIG1vbnRoRW5kLFxuICAgICAgbW9udGhzXG4gICAgfTtcbiAgfVxuXG4gIGRvbU1vbnRoKHllYXIsIG1vbnRoKSB7XG4gICAgY29uc3QgbW9udGhEb20gPSBlbGVtZW50RnJvbVN0cmluZyh0ZW1wbGF0ZXMubW9udGgpO1xuXG4gICAgbW9udGhEb20ucXVlcnlTZWxlY3RvcihgLiR7c3R5bGVzLnRhYmxlSGVhZGVyfSB0cmApLmlubmVySFRNTCA9IHRoaXMuaGVhZGVyVGVtcGxhdGVTdHJpbmcoKTtcbiAgICBtb250aERvbS5xdWVyeVNlbGVjdG9yKGAuJHtzdHlsZXMuY2FwdGlvbn1gKS5pbm5lckhUTUwgICAgICAgID0gYCR7dGhpcy5sb2NhbGUubG9uZ01vbnRoTmFtZXNbbW9udGhdfSAke3llYXJ9YDtcblxuICAgIG1vbnRoRG9tLmJvZHkgICAgICAgICAgID0gbW9udGhEb20ucXVlcnlTZWxlY3RvcihgLiR7c3R5bGVzLmJvZHl9YCk7XG4gICAgbW9udGhEb20uYm9keS5pbm5lckhUTUwgPSB0aGlzLmRheXNUZW1wbGF0ZVN0cmluZyh5ZWFyLCBtb250aCk7XG5cbiAgICBtb250aERvbS5tb250aCAgICAgICA9IG1vbnRoO1xuICAgIG1vbnRoRG9tLnllYXIgICAgICAgID0geWVhcjtcbiAgICBtb250aERvbS5kYXlFbGVtZW50cyA9IFtdLnNsaWNlLmNhbGwobW9udGhEb20ucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtdmFsdWVdJykpO1xuXG4gICAgcmV0dXJuIG1vbnRoRG9tO1xuICB9XG5cbiAgaGVhZGVyVGVtcGxhdGVTdHJpbmcoKSB7XG4gICAgLy8ganVzdCB0byBtYWtlIGxpZmUgZWFzaWVyIHdpdGggc3RhcnQgb2YgdGhlIHdlZWsgY2FsY3VsYXRpb25cbiAgICBjb25zdCBoZWFkZXIgICAgICAgICAgICAgICAgID0gW107XG4gICAgY29uc3Qgd2Vla2RheXNMYWJlbHNFeHRlbmRlZCA9IHRoaXMubG9jYWxlLnNob3J0V2Vla2RheU5hbWVzLmNvbmNhdCh0aGlzLmxvY2FsZS5zaG9ydFdlZWtkYXlOYW1lcyk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMub3B0cy5kYXlzUGVyV2VlazsgaSArPSAxKSB7XG4gICAgICBoZWFkZXIucHVzaCh0ZW1wbGF0ZXMud2Vla0RheUxhYmVsKHdlZWtkYXlzTGFiZWxzRXh0ZW5kZWRbaSArIHRoaXMub3B0cy5zdGFydE9mV2Vla10pKTtcbiAgICB9XG4gICAgcmV0dXJuIGhlYWRlci5qb2luKCcnKTtcbiAgfVxuXG4gIGRheXNUZW1wbGF0ZVN0cmluZyh5ZWFyLCBtb250aCkge1xuICAgIGNvbnN0IHN0YXJ0T2ZNb250aCAgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgMSkuZ2V0RGF5KCk7XG4gICAgY29uc3QgZGF5c0luTW9udGggICA9IG1vbnRoTGVuZ3RoKHllYXIsIG1vbnRoKTtcbiAgICBjb25zdCByb3dUZW1wbGF0ZSAgID0gdGVtcGxhdGVzLndlZWtSb3c7XG4gICAgY29uc3QgbW9udGhUZW1wbGF0ZSA9IFtdO1xuICAgIGNvbnN0IHdlZWtTaGlmdCAgICAgPSAodGhpcy5vcHRzLmRheXNQZXJXZWVrIC0gdGhpcy5vcHRzLnN0YXJ0T2ZXZWVrKTtcblxuICAgIGxldCByb3dzICAgICAgICAgICAgICAgPSA1O1xuICAgIGxldCB3ZWVrU2hpZnRDb3JyZWN0ZWQgPSBzdGFydE9mTW9udGggKyB3ZWVrU2hpZnQ7XG4gICAgbGV0IGRheUNvdW50ZXIgICAgICAgICA9IDA7XG4gICAgbGV0IGRheU9mTW9udGggICAgICAgICA9IDE7XG5cbiAgICAvLyBkb24ndCByZW5kZXIgZnVsbCBlbXB0eSB3ZWVrXG4gICAgaWYgKHdlZWtTaGlmdENvcnJlY3RlZCA+PSB0aGlzLm9wdHMuZGF5c1BlcldlZWspIHtcbiAgICAgIHdlZWtTaGlmdENvcnJlY3RlZCAtPSB0aGlzLm9wdHMuZGF5c1BlcldlZWs7XG4gICAgfVxuXG4gICAgLy8gdHJ5IHRvIGZpZ3VyZSBvdXQgaWYgNSByb3dzIGlzIGVub3VnaCBmb3IgdGhlIG1vbnRoXG4gICAgaWYgKHJvd3MgKiB0aGlzLm9wdHMuZGF5c1BlcldlZWsgPCB3ZWVrU2hpZnRDb3JyZWN0ZWQgKyBkYXlzSW5Nb250aCkge1xuICAgICAgcm93cyA9IDY7XG4gICAgfVxuXG4gICAgLy8gZm9yIGVhY2ggd2VlayAoNSBvciA2KVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcm93czsgaSArPSAxKSB7XG4gICAgICBjb25zdCB3ZWVrID0gW107XG4gICAgICAvLyBvcGVuIHRhZyA8dHI+XG4gICAgICB3ZWVrLnB1c2gocm93VGVtcGxhdGUoaSkub3Blbik7XG5cbiAgICAgIC8vIHB1c2ggZGF5cyBpbiB3ZWVrXG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMub3B0cy5kYXlzUGVyV2VlazsgaiArPSAxKSB7XG4gICAgICAgIC8vIHB1c2hpbmcgYWN0dWFsIGRheXMgMS4uLmRheXNJbk1vbnRoXG4gICAgICAgIGlmICgoZGF5Q291bnRlciA+PSB3ZWVrU2hpZnRDb3JyZWN0ZWQpICYmIGRheU9mTW9udGggPD0gZGF5c0luTW9udGgpIHtcbiAgICAgICAgICB3ZWVrLnB1c2godGhpcy5kYXlUZW1wbGF0ZVN0cmluZyh5ZWFyLCBtb250aCwgZGF5T2ZNb250aCkpO1xuICAgICAgICAgIGRheU9mTW9udGggKz0gMTtcbiAgICAgICAgICAvLyBwdXNoaW5nIHBsYWNlaG9sZGVycyBpbnN0ZWFkIG9mIGRheXNcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB3ZWVrLnB1c2godGVtcGxhdGVzLndlZWtEYXlQbGFjZWhvbGRlcik7XG4gICAgICAgIH1cblxuICAgICAgICBkYXlDb3VudGVyICs9IDE7XG4gICAgICB9XG4gICAgICAvLyBjbG9zZSB0YWcgPC90cj4gb2Ygd2Vla1xuICAgICAgd2Vlay5wdXNoKHJvd1RlbXBsYXRlKCkuY2xvc2UpO1xuICAgICAgLy8gcHVzaCBjb21wbGV0ZWQgd2VlayB0byBtb250aCB0ZW1wbGF0ZVxuICAgICAgbW9udGhUZW1wbGF0ZS5wdXNoKHdlZWsuam9pbignJykpO1xuICAgIH1cblxuICAgIHJldHVybiBtb250aFRlbXBsYXRlLmpvaW4oJycpO1xuICB9XG5cbiAgZGF5VGVtcGxhdGVTdHJpbmcoeWVhciwgbW9udGgsIGRheU9mTW9udGgpIHtcbiAgICBjb25zdCB7IGNUcmVlIH0gICAgICA9IHRoaXM7XG4gICAgY29uc3QgcmF0ZSAgICAgICAgICAgPSB0aGlzLm9wdHMuc2hvd1JhdGVzID8gY1RyZWUuZ2V0RGF5UHJvcGVydHkoeWVhciwgbW9udGgsIGRheU9mTW9udGgsICdyYXRlJykgOiAwO1xuICAgIGNvbnN0IG1pblN0YXkgICAgICAgID0gY1RyZWUuZ2V0RGF5UHJvcGVydHkoeWVhciwgbW9udGgsIGRheU9mTW9udGgsICdtaW5TdGF5Jyk7XG4gICAgY29uc3QgbWF4U3RheSAgICAgICAgPSBjVHJlZS5nZXREYXlQcm9wZXJ0eSh5ZWFyLCBtb250aCwgZGF5T2ZNb250aCwgJ21heFN0YXknKTtcblxuICAgIGxldCBpc0Rpc2FibGVkICAgICAgID0gY1RyZWUuaXNEYXlEaXNhYmxlZCh5ZWFyLCBtb250aCwgZGF5T2ZNb250aCk7XG4gICAgbGV0IGlzQXZhaWxhYmxlT3V0ICAgPSBjVHJlZS5nZXREYXlQcm9wZXJ0eSh5ZWFyLCBtb250aCwgZGF5T2ZNb250aCwgJ2lzQXZhaWxhYmxlT3V0Jyk7XG4gICAgbGV0IGlzTW9ybmluZ0Jsb2NrZWQgPSBjVHJlZS5nZXREYXlQcm9wZXJ0eSh5ZWFyLCBtb250aCwgZGF5T2ZNb250aCwgJ2lzTW9ybmluZ0Jsb2NrZWQnKTtcblxuICAgIGNvbnN0IHsgY3VycmVudERhdGUgfSA9IHRoaXMub3B0cztcbiAgICBjb25zdCBkYXRlQXJyYXkgICAgICAgPSBbeWVhciwgbW9udGgsIGRheU9mTW9udGhdO1xuICAgIGNvbnN0IGlzQ3VycmVudERheSAgICA9IGlzQ3VycmVudChkYXRlQXJyYXksIGN1cnJlbnREYXRlKTtcblxuICAgIC8vIGRpc2FibGUgcGFzdCBkYXRlc1xuICAgIGlmIChpc0xhdGVyKGRhdGVBcnJheSwgY3VycmVudERhdGUpKSB7XG4gICAgICBpc0Rpc2FibGVkICAgICAgICA9IHRydWU7XG4gICAgICBpc01vcm5pbmdCbG9ja2VkICA9IG51bGw7XG4gICAgICBpc0F2YWlsYWJsZU91dCAgICA9IG51bGw7XG4gICAgfVxuXG4gICAgLy8gZGlzYWJsZSBjdXJyZW50IGRheSBtb3JuaW5nXG4gICAgaWYgKGlzQ3VycmVudERheSkge1xuICAgICAgaWYgKCEoaXNEaXNhYmxlZCAmJiBpc0F2YWlsYWJsZU91dCA9PT0gbnVsbCAmJiBpc01vcm5pbmdCbG9ja2VkID09PSBudWxsKSkge1xuICAgICAgICBpc01vcm5pbmdCbG9ja2VkICA9IHRydWU7XG5cbiAgICAgICAgaWYgKGlzQXZhaWxhYmxlT3V0ID09PSBudWxsKSB7XG4gICAgICAgICAgaXNBdmFpbGFibGVPdXQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gaWYgdGhlcmUgaXMgbm90IHJlbnRhbElkIGFuZCBubyBtYXBzLCBqdXN0IHJlbmRlciBwbGFpbiBjYWxlbmRhclxuICAgIGlmICghdGhpcy5vcHRzLnJlbnRhbElkIHx8IHRoaXMub3B0cy5lbmFibGVBbGxEYXlzKSB7XG4gICAgICBpZiAoaXNMYXRlcihjdXJyZW50RGF0ZSwgZGF0ZUFycmF5KSkge1xuICAgICAgICBpc0Rpc2FibGVkICAgICAgICA9IGZhbHNlO1xuICAgICAgICBpc0F2YWlsYWJsZU91dCAgICA9IHRydWU7XG4gICAgICAgIGlzTW9ybmluZ0Jsb2NrZWQgID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGlmIChpc0N1cnJlbnREYXkpIHtcbiAgICAgICAgaXNEaXNhYmxlZCAgICAgICAgPSB0cnVlO1xuICAgICAgICBpc01vcm5pbmdCbG9ja2VkICA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgaXNBdmFpbGFibGVJbiA9IGlzTW9ybmluZ0Jsb2NrZWQgPT0gZmFsc2U7XG5cbiAgICBpZiAoaXNEaXNhYmxlZCAmJiBpc0F2YWlsYWJsZUluKSB7XG4gICAgICBpc0Rpc2FibGVkID0gJ2xlZnQnO1xuICAgIH0gZWxzZSBpZiAoaXNNb3JuaW5nQmxvY2tlZCkge1xuICAgICAgaXNEaXNhYmxlZCA9ICdyaWdodCc7XG4gICAgfSBlbHNlIGlmIChpc0Rpc2FibGVkKSB7XG4gICAgICBpc0Rpc2FibGVkID0gJ2NlbnRlcic7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRlbXBsYXRlcy53ZWVrRGF5KFxuICAgICAgZGF5T2ZNb250aCxcbiAgICAgIGlzRGlzYWJsZWQsXG4gICAgICBpc0F2YWlsYWJsZUluLFxuICAgICAgaXNBdmFpbGFibGVPdXQsXG4gICAgICBpc0N1cnJlbnREYXksXG4gICAgICBtaW5TdGF5LFxuICAgICAgdGhpcy5vcHRzLnNob3dNaW5TdGF5ID8gdEZvcm1hdHRlcihtaW5TdGF5LCB0aGlzLmxvY2FsZS5taW5TdGF5KSA6IGZhbHNlLFxuICAgICAgbWF4U3RheSxcbiAgICAgIHRoaXMub3B0cy5zaG93TWF4U3RheSA/IHRGb3JtYXR0ZXIobWF4U3RheSwgdGhpcy5sb2NhbGUubWF4U3RheSkgOiBmYWxzZSxcbiAgICAgIHJhdGUsXG4gICAgICBjdXJyZW5jeUZvcm1hdHRlcihNYXRoLnJvdW5kKHJhdGUpLCB0aGlzLm9wdHMubGFuZywgdGhpcy5vcHRzLmN1cnJlbmN5IHx8IHRoaXMubG9jYWxlLmN1cnJlbmN5KVxuICAgICk7XG4gIH1cblxuICBkZXN0cm95TW9udGhzKCkge1xuICAgIGlmICh0aGlzLmRvbSAmJiBpc0FycmF5KHRoaXMuZG9tLm1vbnRocykpIHtcbiAgICAgIHRoaXMuZG9tLm1vbnRocy5tYXAoKG0pID0+IGRlc3Ryb3lFbGVtZW50KG0pKTtcbiAgICAgIHRoaXMuZGVzdHJveVRvb2x0aXAoKTtcbiAgICB9XG4gIH1cblxuICBkZXN0cm95KCkge1xuICAgIHJldHVybiBkZXN0cm95RWxlbWVudCh0aGlzLmVsKTtcbiAgfVxuXG4gIGxvYWRNYXBzKGlkKSB7XG4gICAgdGhpcy5sb2dnZXIoJ2xvYWRpbmcgbWFwcycpO1xuICAgIHRoaXMudG9nZ2xlTG9hZGluZygpO1xuXG4gICAgY29uc3Qgb25TdWNjZXNzID0gKG1hcHMpID0+IHtcbiAgICAgIGlmIChpc0FycmF5KG1hcHMuZGF0YSkgJiYgbWFwcy5kYXRhWzBdLmF0dHJpYnV0ZXMpIHtcbiAgICAgICAgaWYgKHRoaXMub3B0cy5kaXNhYmxlQXZhaWxhYml0eU1hcCkge1xuICAgICAgICAgIG1hcHMuZGF0YVswXS5hdHRyaWJ1dGVzLmF2YWlsYWJpbGl0eSA9IG1hcHMuZGF0YVswXS5hdHRyaWJ1dGVzLmF2YWlsYWJpbGl0eS5yZXBsYWNlKC9bMC05XS9nLCAnMCcpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub3B0cy5jdXJyZW5jeSA9IHRoaXMub3B0cy5jdXJyZW5jeSB8fCBtYXBzLmRhdGFbMF0uYXR0cmlidXRlcy5jdXJyZW5jeTtcbiAgICAgICAgdGhpcy5hZGRNYXBzKG1hcHMuZGF0YVswXS5hdHRyaWJ1dGVzKTtcbiAgICAgICAgdGhpcy5tYXBzTG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy50b2dnbGVMb2FkaW5nKCk7XG4gICAgICAgIHRoaXMuZW1pdCgnbWFwcy1sb2FkZWQnLCBtYXBzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudG9nZ2xlTG9hZGluZygpO1xuICAgICAgICB0aGlzLmxvZ2dlcignZXhwZWN0cyBqc29uLWFwaSBkYXRhIGZvcm1hdCcsICdlcnJvcicpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBvbkVycm9yID0gKCkgPT4ge1xuICAgICAgdGhpcy50b2dnbGVMb2FkaW5nKCk7XG4gICAgICB0aGlzLmVtaXQoJ21hcHMtZXJyb3InKTtcbiAgICAgIHRoaXMubG9nZ2VyKCdTZXJ2ZXIgZXJyb3IgaGFwcGVuZWQnLCAnZXJyb3InKTtcbiAgICB9O1xuXG4gICAgZmV0Y2godGhpcy5vcHRzLnJlbnRhbFVybChpZCkpXG4gICAgICAudGhlbigocmVzcG9uc2UpID0+IHJlc3BvbnNlLmpzb24oKSlcbiAgICAgIC50aGVuKG9uU3VjY2VzcylcbiAgICAgIC5jYXRjaChvbkVycm9yKTtcbiAgfVxuXG4gIGNvbXBsZXRlU2VsZWN0aW9uKCkge1xuICAgIGlmICh0aGlzLm9wdHMuaXNTaW5nbGVJbnB1dCkge1xuICAgICAgY29uc3Qgc2luZ2xlSW5wdXREYXRlRm9ybWF0ID0gdGhpcy5zaW5nbGVJbnB1dERhdGVGb3JtYXQgfHwgdGhpcy5sb2NhbGUuZm9ybWF0RGF0ZTtcblxuICAgICAgY29uc3QgZGF0ZVN0YXJ0ID0gc3RyZnRpbWUoZGF0ZVRvSXNvKC4uLnRoaXMuc2VsZWN0aW9uU3RhcnQpLCBzaW5nbGVJbnB1dERhdGVGb3JtYXQsIHRoaXMubG9jYWxlKTtcbiAgICAgIGNvbnN0IGRhdGVFbmQgICA9IHN0cmZ0aW1lKGRhdGVUb0lzbyguLi50aGlzLnNlbGVjdGlvbkVuZCksIHNpbmdsZUlucHV0RGF0ZUZvcm1hdCwgdGhpcy5sb2NhbGUpO1xuXG4gICAgICB0aGlzLm9wdHMuZWxTaW5nbGVJbnB1dC52YWx1ZSA9IGAke2RhdGVTdGFydH0gJHt0aGlzLm9wdHMuc2luZ2xlSW5wdXRTZXBhcmF0b3J9ICR7ZGF0ZUVuZH1gO1xuICAgIH1cblxuICAgIHRoaXMuZW1pdCgnc2VsZWN0aW9uLWNvbXBsZXRlZCcsIHRoaXMuc2VsZWN0aW9uU3RhcnQsIHRoaXMuc2VsZWN0aW9uRW5kKTtcbiAgICBpZiAoaXNGdW5jdGlvbih0aGlzLm9wdHMub25TZWxlY3Rpb25Db21wbGV0ZWQpKSB7XG4gICAgICB0aGlzLm9wdHMub25TZWxlY3Rpb25Db21wbGV0ZWQoXG4gICAgICAgIGRhdGVUb0lzbyguLi50aGlzLnNlbGVjdGlvblN0YXJ0LCB0cnVlKSwgZGF0ZVRvSXNvKC4uLnRoaXMuc2VsZWN0aW9uRW5kLCB0cnVlKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBpbml0Q2FsZW5kYXJEcm9wKCkge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBlbGVtZW50RnJvbVN0cmluZygnPGRpdj48L2Rpdj4nKTtcbiAgICB0aGlzLmVsVGFyZ2V0ID0gdGhpcy5vcHRzLmVsO1xuICAgIHRoaXMuZWwgICAgICAgPSBlbGVtZW50O1xuXG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbGVtZW50KTtcblxuICAgIHRoaXMub3B0cy5lbFN0YXJ0QXQgICAgID0gdGhpcy5vcHRzLmVsU3RhcnRBdCB8fCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAuJHt0aGlzLkNTU19QUkVGSVh9X19zdGFydC1hdGApO1xuICAgIHRoaXMub3B0cy5lbEVuZEF0ICAgICAgID0gdGhpcy5vcHRzLmVsRW5kQXQgfHwgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgLiR7dGhpcy5DU1NfUFJFRklYfV9fZW5kLWF0YCk7XG4gICAgdGhpcy5vcHRzLmVsU2luZ2xlSW5wdXQgPSB0aGlzLm9wdHMuZWxTaW5nbGVJbnB1dCB8fCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAuJHt0aGlzLkNTU19QUkVGSVh9X19zaW5nbGUtaW5wdXRgKTtcblxuICAgIGlmICh0aGlzLm9wdHMuaGlkZGVuRWxGb3JtYXQpIHtcbiAgICAgIFt0aGlzLm9wdHMuZWxTdGFydEF0LCB0aGlzLm9wdHMuZWxFbmRBdF0uZm9yRWFjaCgoaW5wdXQsIGkpID0+IHtcbiAgICAgICAgY29uc3QgaGlkZGVuSW5wdXQgPSBpbnB1dC5jbG9uZU5vZGUodHJ1ZSk7XG4gICAgICAgIGlucHV0LnBhcmVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoaGlkZGVuSW5wdXQpO1xuICAgICAgICBpbnB1dC5yZW1vdmVBdHRyaWJ1dGUoJ25hbWUnKTtcbiAgICAgICAgaGlkZGVuSW5wdXQuY2xhc3NOYW1lID0gJyc7XG4gICAgICAgIGhpZGRlbklucHV0LmhpZGRlbiAgICA9IHRydWU7XG5cbiAgICAgICAgKGkpID8gdGhpcy5oaWRkZW5FbEVuZEF0ID0gaGlkZGVuSW5wdXQgOiB0aGlzLmhpZGRlbkVsU3RhcnRBdCA9IGhpZGRlbklucHV0O1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3B0cy5pc1NpbmdsZUlucHV0KSB7XG4gICAgICB0aGlzLm9wdHMuZWxTaW5nbGVJbnB1dC5yZWFkT25seSA9IHRydWU7XG5cbiAgICAgIFt0aGlzLm9wdHMuZWxTdGFydEF0LCB0aGlzLm9wdHMuZWxFbmRBdF0uZm9yRWFjaCgoaW5wdXQpID0+IHtcbiAgICAgICAgaW5wdXQuaGlkZGVuID0gdHJ1ZTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGFkZENsYXNzKHRoaXMuZWwsIHN0eWxlcy5kcm9wQmFzaWMpO1xuXG4gICAgY29uc3QgY2FsRHJvcCA9IHdpbmRvdy5Qb3BwZXIuY3JlYXRlUG9wcGVyKHRoaXMuZWxUYXJnZXQsIHRoaXMuZWwsIHtcbiAgICAgIHBsYWNlbWVudDogdGhpcy5vcHRzLmRyb3BQbGFjZW1lbnQsXG4gICAgICBoaWRlOiB0cnVlXG4gICAgfSk7XG5cbiAgICBjb25zdCBvcGVuRHJvcCA9IChpbnB1dCwgaXNSZXZlcnNlZCkgPT4ge1xuICAgICAgdGhpcy5zd2l0Y2hJbnB1dEZvY3VzKGlucHV0KTtcbiAgICAgIHRoaXMuY2hhbmdlU2VsZWN0aW9uT3JkZXIoaXNSZXZlcnNlZCk7XG5cbiAgICAgIGlmICghaGFzQ2xhc3ModGhpcy5lbCwgc3R5bGVzLnZpc2libGUpKSB7XG4gICAgICAgIGNhbERyb3AudXBkYXRlKCk7XG4gICAgICAgIHRoaXMuZW1pdCgnZHJvcC1vcGVuJyk7XG4gICAgICAgIGFkZENsYXNzKHRoaXMuZWwsIHN0eWxlcy52aXNpYmxlKTtcblxuICAgICAgICBpZiAoIXRoaXMubWFwc0xvYWRlZCAmJiB0aGlzLm9wdHMucmVudGFsSWQpIHtcbiAgICAgICAgICB0aGlzLmxvYWRNYXBzKHRoaXMub3B0cy5yZW50YWxJZCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgaWYgKHRoaXMub3B0cy5pc1NpbmdsZUlucHV0KSB7XG4gICAgICB0aGlzLmZvY3VzVG91Y2hFdmVudHModGhpcy5vcHRzLmVsU2luZ2xlSW5wdXQsICgpID0+IHtcbiAgICAgICAgb3BlbkRyb3AoJ3N0YXJ0JywgZmFsc2UpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZm9jdXNUb3VjaEV2ZW50cyh0aGlzLm9wdHMuZWxTdGFydEF0LCAoKSA9PiB7XG4gICAgICAgIG9wZW5Ecm9wKCdzdGFydCcsIGZhbHNlKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5mb2N1c1RvdWNoRXZlbnRzKHRoaXMub3B0cy5lbEVuZEF0LCAoKSA9PiB7XG4gICAgICAgIG9wZW5Ecm9wKCdlbmQnLCB0cnVlKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5jbG9zZURyb3AuYmluZCh0aGlzKSk7XG4gICAgdGhpcy5jYWxEcm9wID0gY2FsRHJvcDtcblxuICAgIGlmICh0aGlzLm9wdHMuZWxSZXNldCkge1xuICAgICAgdGhpcy5vcHRzLmVsUmVzZXQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XG4gICAgICAgIHRoaXMucmVzZXRTZWxlY3Rpb24oKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHZhbHVlVG9JbnB1dChpbnB1dCwgZGF0ZVZhbHVlKSB7XG4gICAgY29uc3QgeyBlbFN0YXJ0QXQgfSA9IHRoaXMub3B0cztcbiAgICBjb25zdCB7IGVsRW5kQXQgfSAgID0gdGhpcy5vcHRzO1xuXG4gICAgY29uc3QgZGF0ZSAgPSBkYXRlVG9Jc28oLi4uZGF0ZVZhbHVlKTtcbiAgICBjb25zdCB2YWx1ZSA9IHN0cmZ0aW1lKGRhdGUsIHRoaXMuZm9ybWF0LCB0aGlzLmxvY2FsZSk7XG4gICAgY29uc3QgZXZ0ICAgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnRXZlbnQnKTtcblxuICAgIGV2dC5pbml0RXZlbnQoJ2NoYW5nZScsIGZhbHNlLCB0cnVlKTtcblxuICAgIGlmICh0aGlzLm9wdHMuaGlkZGVuRWxGb3JtYXQpIHtcbiAgICAgIGNvbnN0IGhpZGRlblZhbHVlID0gc3RyZnRpbWUoZGF0ZSwgdGhpcy5vcHRzLmhpZGRlbkVsRm9ybWF0LCB0aGlzLmxvY2FsZSk7XG5cbiAgICAgIGlmIChpbnB1dCA9PT0gJ3N0YXJ0JyAmJiB0aGlzLmhpZGRlbkVsU3RhcnRBdCkge1xuICAgICAgICB0aGlzLmhpZGRlbkVsU3RhcnRBdC52YWx1ZSA9IGhpZGRlblZhbHVlO1xuICAgICAgfSBlbHNlIGlmIChpbnB1dCA9PT0gJ2VuZCcgJiYgdGhpcy5oaWRkZW5FbEVuZEF0KSB7XG4gICAgICAgIHRoaXMuaGlkZGVuRWxFbmRBdC52YWx1ZSA9IGhpZGRlblZhbHVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChpbnB1dCA9PT0gJ3N0YXJ0JyAmJiBlbFN0YXJ0QXQpIHtcbiAgICAgIGVsU3RhcnRBdC52YWx1ZSA9IHZhbHVlO1xuICAgICAgZWxTdGFydEF0LmRpc3BhdGNoRXZlbnQoZXZ0KTtcbiAgICB9IGVsc2UgaWYgKGlucHV0ID09PSAnZW5kJyAmJiBlbEVuZEF0KSB7XG4gICAgICBlbEVuZEF0LnZhbHVlID0gdmFsdWU7XG4gICAgICBlbEVuZEF0LmRpc3BhdGNoRXZlbnQoZXZ0KTtcbiAgICB9XG4gIH1cblxuICBpbnB1dHNUb1ZhbHVlcygpIHtcbiAgICBpZiAodGhpcy5vcHRzLmVsU3RhcnRBdC52YWx1ZSA9PT0gJycgJiYgdGhpcy5vcHRzLmVsRW5kQXQudmFsdWUgPT09ICcnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc2VsZWN0aW9uU3RhcnQgID0gZGF0ZVRvQXJyYXkodGhpcy5vcHRzLmVsU3RhcnRBdC52YWx1ZSwgdGhpcy5mb3JtYXQsIHRoaXMubG9jYWxlKTtcbiAgICBjb25zdCBzZWxlY3Rpb25FbmQgICAgPSBkYXRlVG9BcnJheSh0aGlzLm9wdHMuZWxFbmRBdC52YWx1ZSwgdGhpcy5mb3JtYXQsIHRoaXMubG9jYWxlKTtcbiAgICBjb25zdCB7IGN1cnJlbnREYXRlIH0gPSB0aGlzLm9wdHM7XG5cbiAgICB0aGlzLnJlc2V0U2VsZWN0aW9uKCk7XG5cbiAgICBpZiAoaXNBcnJheShzZWxlY3Rpb25TdGFydCkgJiYgaXNBcnJheShzZWxlY3Rpb25FbmQpKSB7XG4gICAgICBpZiAoKGlzTGF0ZXIoY3VycmVudERhdGUsIHNlbGVjdGlvblN0YXJ0KSB8fCBpc0N1cnJlbnQoY3VycmVudERhdGUsIHNlbGVjdGlvblN0YXJ0KSkgJiYgaXNMYXRlcihzZWxlY3Rpb25TdGFydCwgc2VsZWN0aW9uRW5kKSkge1xuICAgICAgICBjb25zdCBtb250aERpZmZlcmVuY2UgPSBtb250aERpZmYoXG4gICAgICAgICAgZGF0ZVRvSXNvKHRoaXMub3B0cy55ZWFyU3RhcnQsIHRoaXMub3B0cy5tb250aFN0YXJ0LCAxKSxcbiAgICAgICAgICBkYXRlVG9Jc28oLi4uc2VsZWN0aW9uRW5kKVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IHsgdHJlZSB9ID0gdGhpcy5jcmVhdGVUcmVlKHRoaXMub3B0cy55ZWFyU3RhcnQsIHRoaXMub3B0cy5tb250aFN0YXJ0LCBtb250aERpZmZlcmVuY2UpO1xuXG4gICAgICAgIHRoaXMuY1RyZWUuYWRkVHJlZSh0cmVlKTtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25TdGFydCA9IHNlbGVjdGlvblN0YXJ0O1xuICAgICAgICB0aGlzLnNlbGVjdGlvbkVuZCA9IHNlbGVjdGlvbkVuZDtcbiAgICAgICAgdGhpcy5yZWNvdmVyU2VsZWN0aW9ucygpO1xuICAgICAgICB0aGlzLmNvbXBsZXRlU2VsZWN0aW9uKCk7XG4gICAgICAgIHRoaXMuZGVzdHJveU1vbnRocygpO1xuICAgICAgICB0aGlzLnJlbmRlck1vbnRocyhzZWxlY3Rpb25FbmRbMF0sIHNlbGVjdGlvbkVuZFsxXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmxvZ2dlcihgaW52YWxpZCByYW5nZTogXCJbJHtzZWxlY3Rpb25TdGFydH1dXCIgXCJbJHtzZWxlY3Rpb25FbmR9XVwiYCwgJ3dhcm4nKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoc2VsZWN0aW9uU3RhcnQgJiYgc2VsZWN0aW9uRW5kKSB7XG4gICAgICB0aGlzLmxvZ2dlcihgaW52YWxpZCBkYXRlczogXCIke3NlbGVjdGlvblN0YXJ0fVwiIFwiJHtzZWxlY3Rpb25FbmR9XCJgLCAnd2FybicpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHN3aXRjaElucHV0Rm9jdXModHlwZSkge1xuICAgIGlmICh0aGlzLm9wdHMuZWxTdGFydEF0ICYmIHRoaXMub3B0cy5lbEVuZEF0KSB7XG4gICAgICBpZiAodHlwZSA9PT0gJ3N0YXJ0Jykge1xuICAgICAgICBhZGRDbGFzcyh0aGlzLm9wdHMuZWxTdGFydEF0LCBzdHlsZXMuZm9jdXMpO1xuICAgICAgICByZW1vdmVDbGFzcyh0aGlzLm9wdHMuZWxFbmRBdCwgc3R5bGVzLmZvY3VzKTtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlID09PSAnZW5kJykge1xuICAgICAgICBhZGRDbGFzcyh0aGlzLm9wdHMuZWxFbmRBdCwgc3R5bGVzLmZvY3VzKTtcbiAgICAgICAgcmVtb3ZlQ2xhc3ModGhpcy5vcHRzLmVsU3RhcnRBdCwgc3R5bGVzLmZvY3VzKTtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlID09PSAnYW55Jykge1xuICAgICAgICByZW1vdmVDbGFzcyh0aGlzLm9wdHMuZWxTdGFydEF0LCBzdHlsZXMuZm9jdXMpO1xuICAgICAgICByZW1vdmVDbGFzcyh0aGlzLm9wdHMuZWxFbmRBdCwgc3R5bGVzLmZvY3VzKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjbG9zZURyb3AoZSwgZm9yY2UpIHtcbiAgICBpZiAoIWZvcmNlICYmIChpc0luc2lkZShlLnRhcmdldCwgdGhpcy5lbCkgfHwgaXNJbnNpZGUoZS50YXJnZXQsIHRoaXMuZWxUYXJnZXQpKSkge1xuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVtb3ZlQ2xhc3ModGhpcy5lbCwgc3R5bGVzLnZpc2libGUpO1xuICAgICAgdGhpcy5kZXN0cm95VG9vbHRpcCgpO1xuICAgICAgdGhpcy5lbWl0KCdkcm9wLWNsb3NlJyk7XG4gICAgICB0aGlzLnN3aXRjaElucHV0Rm9jdXMoJ2FueScpO1xuICAgIH1cbiAgfVxuXG4gIGZvY3VzVG91Y2hFdmVudHMoZWxlbWVudCwgX2NhbGxiYWNrKSB7XG4gICAgaWYgKGlzRnVuY3Rpb24oX2NhbGxiYWNrKSkge1xuICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgKGV2ZW50KSA9PiB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIF9jYWxsYmFjaygpO1xuICAgICAgfSk7XG5cbiAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXMnLCAoZXZlbnQpID0+IHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgX2NhbGxiYWNrKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gYFske3RoaXMubmFtZX0gJHt0aGlzLlZFUlNJT059XSBgO1xuICB9XG5cbiAgbG9nZ2VyKG1zZywgdHlwZSA9ICdsb2cnKSB7XG4gICAgaWYgKGNvbnNvbGUgJiYgY29uc29sZVt0eXBlXSkge1xuICAgICAgY29uc29sZVt0eXBlXSh0aGlzLnRvU3RyaW5nKCkgKyBtc2cpO1xuICAgIH1cbiAgfVxufVxuIiwiLyogZ2xvYmFsIHByb2Nlc3MsIHJlcXVpcmUgKi9cbmltcG9ydCB7IGRhc2hUb0NhcGl0YWwgfSBmcm9tICd3aWRnZXQtdXRpbHMnO1xuXG5jb25zdCB7IG5hbWUgfSA9IHJlcXVpcmUoJy4uL3BhY2thZ2UuanNvbicpO1xuY29uc3QgY3VycmVudERhdGUgPSBuZXcgRGF0ZSgpO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWUsXG4gIGNzc1ByZWZpeDogZGFzaFRvQ2FwaXRhbChuYW1lKSxcbiAgYXBpSG9zdDogcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdkZXZlbG9wbWVudCcgPyAnaHR0cDovL2xvY2FsaG9zdDozMDAwJyA6ICdodHRwczovL3NlY3VyZS5zbWlseS5jb20nLFxuICBhcGlOYW1lc3BhY2U6ICcvYXBpL3YyL3B1YmxpYycsXG4gIGFwaU1hcHNSb3V0ZTogJy9tYXBzLmpzb24/e2FwaVJlbnRhbElkfXthcGlDdXJyZW5jeX0nLFxuICBhcGlSZW50YWxJZDogJ3JlbnRhbF9pZD0nLFxuICBhcGlDdXJyZW5jeTogJyZleGNoYW5nZV90b19jdXJyZW5jeT0nLFxuXG4gIHJlbnRhbFVybChpZHMpIHtcbiAgICBsZXQgcm91dGUgPSB0aGlzLmFwaU1hcHNSb3V0ZS5yZXBsYWNlKCd7YXBpUmVudGFsSWR9JywgYCR7dGhpcy5hcGlSZW50YWxJZH0ke2lkc31gKTtcbiAgICByb3V0ZSA9IHJvdXRlLnJlcGxhY2UoJ3thcGlDdXJyZW5jeX0nLCAodGhpcy5jdXJyZW5jeSkgPyBgJHt0aGlzLmFwaUN1cnJlbmN5fSR7dGhpcy5jdXJyZW5jeX1gIDogJycpO1xuICAgIHJldHVybiBgJHt0aGlzLmFwaUhvc3R9JHt0aGlzLmFwaU5hbWVzcGFjZX0ke3JvdXRlfWA7XG4gIH0sXG5cbiAgc3RhcnRPZldlZWs6IDAsIC8vIDAgU3VuIDEgTW9uLi4uLjYgU2F0XG4gIG1pblN0YXk6IDEsIC8vIGNhbiBzZWxlY3Qgb25lIG5pZ2h0XG4gIG1heFN0YXk6IEluZmluaXR5LCAvLyBjYW4gc2VsZWN0IGluZmluaXRlIG5pZ2h0c1xuICBtb250aFN0YXJ0OiBudWxsLCAvLyBzdGFydCB3aXRoIGN1cnJlbnQgbW9udGggYnkgZGVmYXVsdCBNICcwLi4uMTEnXG4gIHllYXJTdGFydDogbnVsbCwgLy8gc3RhcnQgd2l0aCBjdXJyZW50IHllYXIgWVlZWVxuICBkYXlzUGVyV2VlazogNywgLy8gRklYTUUgc3VwcG9ydCBjYWxlbmRhciByZW5kZXJpbmdcbiAgZGlzcGxheU1vbnRoczogMixcbiAgbW9udGhzUGFnaW5hdGlvbkp1bXA6IDEsXG4gIHNlbGVjdGFibGU6IGZhbHNlLFxuICBzaG93UmF0ZXM6IGZhbHNlLFxuICBpc1JldmVyc2VTZWxlY3RhYmxlOiBmYWxzZSwgLy8gc2VsZWN0IGVuZCBkYXRlIGZpcnN0XG4gIGlzQmFja0Rpc2FibGVkOiB0cnVlLFxuICBpc0Ryb3BEb3duOiBmYWxzZSxcbiAgZHJvcFBsYWNlbWVudDogJ2JvdHRvbS1zdGFydCcsXG4gIGVsOiBudWxsLFxuICBlbFN0YXJ0QXQ6IG51bGwsXG4gIGVsRW5kQXQ6IG51bGwsXG4gIGVsU2luZ2xlSW5wdXQ6IG51bGwsXG4gIGlzU2luZ2xlSW5wdXQ6IG51bGwsXG4gIHNpbmdsZUlucHV0RGF0ZUZvcm1hdDogbnVsbCxcbiAgc2luZ2xlSW5wdXRTZXBhcmF0b3I6ICfihpInLFxuICBlbFJlc2V0OiBudWxsLFxuICBmb3JtYXREYXRlOiBudWxsLFxuICBoaWRkZW5FbEZvcm1hdDogbnVsbCxcbiAgcmVudGFsSWQ6IG51bGwsXG4gIGN1cnJlbmN5OiBudWxsLFxuICBkaXNhYmxlQXZhaWxhYml0eU1hcDogZmFsc2UsXG4gIGFsbG93U2hvcnRlck1pblN0YXlTZWxlY3Rpb246IGZhbHNlLFxuICBhbGxvd0xvbmdlck1heFN0YXlTZWxlY3Rpb246IGZhbHNlLFxuICBlbmFibGVBbGxEYXlzOiBmYWxzZSxcbiAgY3VycmVudERhdGUsXG4gIHRoZW1lOiAnc2tldydcbn07XG4iLCJsZXQgbG9jYWxlcyA9IHtcbiAgJ2VuLUdCJzoge1xuICAgIHNob3J0V2Vla2RheU5hbWVzOiAnU3VfTW9fVHVfV2VfVGhfRnJfU2EnLnNwbGl0KCdfJyksXG4gICAgbG9uZ1dlZWtkYXlOYW1lczogJ1N1bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1NhdHVyZGF5Jy5zcGxpdCgnXycpLFxuICAgIGxvbmdNb250aE5hbWVzOiAnSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlcicuc3BsaXQoJ18nKSxcbiAgICBzaG9ydE1vbnRoTmFtZXM6ICdKYW5fRmViX01hcl9BcHJfTWF5X0p1bl9KdWxfQXVnX1NlcF9PY3RfTm92X0RlYycuc3BsaXQoJ18nKSxcbiAgICBmb3JtYXREYXRlOiAnJWIgJWQsICVZJyxcbiAgICBjdXJyZW5jeTogJ0dCUCcsXG4gICAgbWluU3RheTogJyVudW1iZXIrIG5pZ2h0cycsXG4gICAgbWF4U3RheTogJyVudW1iZXItIG5pZ2h0cycsXG4gICAgaGFzSW52YWxpZE1pblN0YXk6ICdtaW5pbXVtIHN0YXk6ICVudW1iZXIgbmlnaHRzJyxcbiAgICBoYXNJbnZhbGlkTWF4U3RheTogJ21heGltdW0gc3RheTogJW51bWJlciBuaWdodHMnLFxuICAgIGhhc0ludmFsaWREYXlzOiAnYm9va2VkIGFscmVhZHknLFxuICAgIHN0YXJ0T2ZXZWVrOiAwXG4gIH0sXG4gICdlbi1VUyc6IHtcbiAgICBzaG9ydFdlZWtkYXlOYW1lczogJ1N1X01vX1R1X1dlX1RoX0ZyX1NhJy5zcGxpdCgnXycpLFxuICAgIGxvbmdXZWVrZGF5TmFtZXM6ICdTdW5kYXlfTW9uZGF5X1R1ZXNkYXlfV2VkbmVzZGF5X1RodXJzZGF5X0ZyaWRheV9TYXR1cmRheScuc3BsaXQoJ18nKSxcbiAgICBsb25nTW9udGhOYW1lczogJ0phbnVhcnlfRmVicnVhcnlfTWFyY2hfQXByaWxfTWF5X0p1bmVfSnVseV9BdWd1c3RfU2VwdGVtYmVyX09jdG9iZXJfTm92ZW1iZXJfRGVjZW1iZXInLnNwbGl0KCdfJyksXG4gICAgc2hvcnRNb250aE5hbWVzOiAnSmFuX0ZlYl9NYXJfQXByX01heV9KdW5fSnVsX0F1Z19TZXBfT2N0X05vdl9EZWMnLnNwbGl0KCdfJyksXG4gICAgZm9ybWF0RGF0ZTogJyViICVkLCAlWScsXG4gICAgY3VycmVuY3k6ICdVU0QnLFxuICAgIG1pblN0YXk6ICclbnVtYmVyKyBuaWdodHMnLFxuICAgIG1heFN0YXk6ICclbnVtYmVyLSBuaWdodHMnLFxuICAgIGhhc0ludmFsaWRNaW5TdGF5OiAnbWluaW11bSBzdGF5OiAlbnVtYmVyIG5pZ2h0cycsXG4gICAgaGFzSW52YWxpZE1heFN0YXk6ICdtYXhpbXVtIHN0YXk6ICVudW1iZXIgbmlnaHRzJyxcbiAgICBoYXNJbnZhbGlkRGF5czogJ2Jvb2tlZCBhbHJlYWR5JyxcbiAgICBzdGFydE9mV2VlazogMVxuICB9LFxuICAnZGUtREUnOiB7XG4gICAgc2hvcnRXZWVrZGF5TmFtZXM6ICdTb19Nb19EaV9NaV9Eb19Gcl9TYScuc3BsaXQoJ18nKSxcbiAgICBsb25nV2Vla2RheU5hbWVzOiAnU29ubnRhZ19Nb250YWdfRGllbnN0YWdfTWl0dHdvY2hfRG9ubmVyc3RhZ19GcmVpdGFnX1NhbXN0YWcnLnNwbGl0KCdfJyksXG4gICAgbG9uZ01vbnRoTmFtZXM6ICdKYW51YXJfRmVicnVhcl9Nw6Ryel9BcHJpbF9NYWlfSnVuaV9KdWxpX0F1Z3VzdF9TZXB0ZW1iZXJfT2t0b2Jlcl9Ob3ZlbWJlcl9EZXplbWJlcicuc3BsaXQoJ18nKSxcbiAgICBzaG9ydE1vbnRoTmFtZXM6ICdKYW5fRmViX03DpHJfQXByX01haV9KdW5fSnVsX0F1Z19TZXBfT2t0X05vdl9EZXonLnNwbGl0KCdfJyksXG4gICAgZm9ybWF0RGF0ZTogJyViICVkLCAlWScsXG4gICAgY3VycmVuY3k6ICdFVVInLFxuICAgIG1pblN0YXk6ICclbnVtYmVyKyBuw6RjaHRlJyxcbiAgICBtYXhTdGF5OiAnJW51bWJlci0gbsOkY2h0ZScsXG4gICAgaGFzSW52YWxpZE1pblN0YXk6ICdtaW5kZXN0YXVmZW50aGFsdDogJW51bWJlciBOw6RjaHRlJyxcbiAgICBoYXNJbnZhbGlkTWF4U3RheTogJ21heGltYWxlciBBdWZlbnRoYWx0OiAlbnVtYmVyIE7DpGNodGUnLFxuICAgIGhhc0ludmFsaWREYXlzOiAnc2Nob24gZ2VidWNodCcsXG4gICAgc3RhcnRPZldlZWs6IDFcbiAgfSxcbiAgJ2VzLUVTJzoge1xuICAgIHNob3J0V2Vla2RheU5hbWVzOiAnRG9fTHVfTWFfTWlfSnVfVmlfU8OhJy5zcGxpdCgnXycpLFxuICAgIGxvbmdXZWVrZGF5TmFtZXM6ICdkb21pbmdvX2x1bmVzX21hcnRlc19tacOpcmNvbGVzX2p1ZXZlc192aWVybmVzX3PDoWJhZG8nLnNwbGl0KCdfJyksXG4gICAgbG9uZ01vbnRoTmFtZXM6ICdlbmVyb19mZWJyZXJvX21hcnpvX2FicmlsX21heW9fanVuaW9fanVsaW9fYWdvc3RvX3NlcHRpZW1icmVfb2N0dWJyZV9ub3ZpZW1icmVfZGljaWVtYnJlJy5zcGxpdCgnXycpLFxuICAgIHNob3J0TW9udGhOYW1lczogJ2VuZV9mZWJfbWFyX2Ficl9tYXlfanVuX2p1bF9hZ29fc2VwX29jdF9ub3ZfZGljJy5zcGxpdCgnXycpLFxuICAgIGZvcm1hdERhdGU6ICclYiAlZCwgJVknLFxuICAgIGN1cnJlbmN5OiAnRVVSJyxcbiAgICBtaW5TdGF5OiAnJW51bWJlcisgbm9jaGVzJyxcbiAgICBtYXhTdGF5OiAnJW51bWJlci0gbm9jaGVzJyxcbiAgICBoYXNJbnZhbGlkTWluU3RheTogJ2VzdGFuY2lhIG3DrW5pbWE6ICVudW1iZXIgbm9jaGVzJyxcbiAgICBoYXNJbnZhbGlkTWF4U3RheTogJ2VzdGFuY2lhIG3DoXhpbWE6ICVudW1iZXIgbm9jaGVzJyxcbiAgICBoYXNJbnZhbGlkRGF5czogJ3lhIHJlc2VydmFkbycsXG4gICAgc3RhcnRPZldlZWs6IDFcbiAgfSxcbiAgJ2ZyLUZSJzoge1xuICAgIHNob3J0V2Vla2RheU5hbWVzOiAnRGlfTHVfTWFfTWVfSmVfVmVfU2EnLnNwbGl0KCdfJyksXG4gICAgbG9uZ1dlZWtkYXlOYW1lczogJ2RpbWFuY2hlX2x1bmRpX21hcmRpX21lcmNyZWRpX2pldWRpX3ZlbmRyZWRpX3NhbWVkaScuc3BsaXQoJ18nKSxcbiAgICBsb25nTW9udGhOYW1lczogJ2phbnZpZXJfZsOpdnJpZXJfbWFyc19hdnJpbF9tYWlfanVpbl9qdWlsbGV0X2Fvw7t0X3NlcHRlbWJyZV9vY3RvYnJlX25vdmVtYnJlX2TDqWNlbWJyZScuc3BsaXQoJ18nKSxcbiAgICBzaG9ydE1vbnRoTmFtZXM6ICdqYW5fZsOpdl9tYXJfYXZyX21haV9qdWluX2p1aWxfYW/Du19zZXBfb2N0X25vdl9kw6ljJy5zcGxpdCgnXycpLFxuICAgIGZvcm1hdERhdGU6ICclZCAlYiwgJVknLFxuICAgIGN1cnJlbmN5OiAnRVVSJyxcbiAgICBtaW5TdGF5OiAnJW51bWJlcisgbnVpdHMnLFxuICAgIG1heFN0YXk6ICclbnVtYmVyLSBudWl0cycsXG4gICAgaGFzSW52YWxpZE1pblN0YXk6ICdzw6lqb3VyIG1pbmltdW0gOiAlbnVtYmVyIG51aXRzJyxcbiAgICBoYXNJbnZhbGlkTWF4U3RheTogJ3PDqWpvdXIgbWF4aW11bSA6ICVudW1iZXIgbnVpdHMnLFxuICAgIGhhc0ludmFsaWREYXlzOiAnZMOpasOgIHLDqXNlcnbDqScsXG4gICAgc3RhcnRPZldlZWs6IDFcbiAgfSxcbiAgJ2l0LUlUJzoge1xuICAgIHNob3J0V2Vla2RheU5hbWVzOiAnRG9fTHVfTWFfTWVfR2lfVmVfU2EnLnNwbGl0KCdfJyksXG4gICAgbG9uZ1dlZWtkYXlOYW1lczogJ2RvbWVuaWNhX2x1bmVkw6xfbWFydGVkw6xfbWVyY29sZWTDrF9naW92ZWTDrF92ZW5lcmTDrF9zYWJhdG8nLnNwbGl0KCdfJyksXG4gICAgbG9uZ01vbnRoTmFtZXM6ICdnZW5uYWlvX2ZlYmJyYWlvX21hcnpvX2FwcmlsZV9tYWdnaW9fZ2l1Z25vX2x1Z2xpb19hZ29zdG9fc2V0dGVtYnJlX290dG9icmVfbm92ZW1icmVfZGljZW1icmUnLnNwbGl0KCdfJyksXG4gICAgc2hvcnRNb250aE5hbWVzOiAnZ2VuX2ZlYl9tYXJfYXByX21hZ19naXVfbHVnX2Fnb19zZXRfb3R0X25vdl9kaWMnLnNwbGl0KCdfJyksXG4gICAgZm9ybWF0RGF0ZTogJyViICVkLCAlWScsXG4gICAgY3VycmVuY3k6ICdFVVInLFxuICAgIG1pblN0YXk6ICclbnVtYmVyKyBub3R0aS4nLFxuICAgIG1heFN0YXk6ICclbnVtYmVyLSBub3R0aScsXG4gICAgaGFzSW52YWxpZE1pblN0YXk6ICdzb2dnaW9ybm8gbWluaW06ICVudW1iZXIgbm90dGknLFxuICAgIGhhc0ludmFsaWRNYXhTdGF5OiAnc29nZ2lvcm5vIG1hc3NpbW86ICVudW1iZXIgbm90dGknLFxuICAgIGhhc0ludmFsaWREYXlzOiAnZ2nDoCBwcmVub3RhdG8nLFxuICAgIHN0YXJ0T2ZXZWVrOiAxXG4gIH0sXG4gICdzdi1TRSc6IHtcbiAgICBzaG9ydFdlZWtkYXlOYW1lczogJ3PDtl9tw6VfdGlfb25fdG9fZnJfbMO2Jy5zcGxpdCgnXycpLFxuICAgIGxvbmdXZWVrZGF5TmFtZXM6ICdzw7ZuZGFnX23DpW5kYWdfdGlzZGFnX29uc2RhZ190b3JzZGFnX2ZyZWRhZ19sw7ZyZGFnJy5zcGxpdCgnXycpLFxuICAgIGxvbmdNb250aE5hbWVzOiAnamFudWFyaV9mZWJydWFyaV9tYXJzX2FwcmlsX21hal9qdW5pX2p1bGlfYXVndXN0aV9zZXB0ZW1iZXJfb2t0b2Jlcl9ub3ZlbWJlcl9kZWNlbWJlcicuc3BsaXQoJ18nKSxcbiAgICBzaG9ydE1vbnRoTmFtZXM6ICdqYW5fZmViX21hcl9hcHJfbWFqX2p1bl9qdWxfYXVnX3NlcF9va3Rfbm92X2RlYycuc3BsaXQoJ18nKSxcbiAgICBmb3JtYXREYXRlOiAnJWIgJWQsICVZJyxcbiAgICBjdXJyZW5jeTogJ0VVUicsXG4gICAgbWluU3RheTogJyVudW1iZXIrIG7DpHR0ZXInLFxuICAgIG1heFN0YXk6ICclbnVtYmVyLSBuw6R0dGVyJyxcbiAgICBoYXNJbnZhbGlkTWluU3RheTogJ2tvcnRhc3RlIHZpc3RlbHNlOiAlbnVtYmVyIG7DpHR0ZXInLFxuICAgIGhhc0ludmFsaWRNYXhTdGF5OiAnbWF4aW3DoWxueSBwb2J5dDogJW51bWJlciBuw6R0dGVyJyxcbiAgICBoYXNJbnZhbGlkRGF5czogJ3JlZGFuIGJva2F0JyxcbiAgICBzdGFydE9mV2VlazogMVxuICB9LFxuICAncnUtUlUnOiB7XG4gICAgc2hvcnRXZWVrZGF5TmFtZXM6ICfQktGBX9Cf0L1f0JLRgl/QodGAX9Cn0YJf0J/Rgl/QodCxJy5zcGxpdCgnXycpLFxuICAgIGxvbmdXZWVrZGF5TmFtZXM6ICfQktC+0YHQutGA0LXRgdC10L3RjNC1X9Cf0L7QvdC10LTQtdC70YzQvdC40Lpf0JLRgtC+0YDQvdC40Lpf0KHRgNC10LTQsF/Qp9C10YLQstC10YDQs1/Qn9GP0YLQvdC40YbQsF/QodGD0LHQsdC+0YLQsCcuc3BsaXQoJ18nKSxcbiAgICBsb25nTW9udGhOYW1lczogJ9Cv0L3QstCw0YDRjF/QpNC10LLRgNCw0LvRjF/QnNCw0YDRgl/QkNC/0YDQtdC70Yxf0JzQsNC5X9CY0Y7QvdGMX9CY0Y7Qu9GMX9CQ0LLQs9GD0YHRgl/QodC10L3RgtGP0LHRgNGMX9Ce0LrRgtGP0LHRgNGMX9Cd0L7Rj9Cx0YDRjF/QlNC10LrQsNCx0YDRjCcuc3BsaXQoJ18nKSxcbiAgICBzaG9ydE1vbnRoTmFtZXM6ICfQr9C90LJf0KTQtdCyX9Cc0LDRgF/QkNC/0YBf0JzQsNC5X9CY0Y7QvV/QmNGO0Ltf0JDQstCzX9Ch0LXQvV/QntC60YJf0J3QvtGPX9CU0LXQuicuc3BsaXQoJ18nKSxcbiAgICBmb3JtYXREYXRlOiAnJWQuJWIuJVknLFxuICAgIGN1cnJlbmN5OiAn0KDRg9CxLicsXG4gICAgbWluU3RheTogJyVudW1iZXIrINC90L7Rhy4nLFxuICAgIG1heFN0YXk6ICclbnVtYmVyLSDQvdC+0YcuJyxcbiAgICBoYXNJbnZhbGlkTWluU3RheTogJ9C80LjQvdC40LzQsNC70YzQvdC+0LUg0L/RgNC10LHRi9Cy0LDQvdC4OiAlbnVtYmVyINC90L7Rh9C4JyxcbiAgICBoYXNJbnZhbGlkTWF4U3RheTogJ9C80LDQutGB0LjQvNCw0LvRjNC90L7QtSDQv9GA0LXQsdGL0LLQsNC90LjQtTogJW51bWJlciDQvdC+0YfQuCcsXG4gICAgaGFzSW52YWxpZERheXM6ICfQt9Cw0LHRgNC+0L3QuNGA0L7QstCw0L3QviDRg9C20LUnLFxuICAgIHN0YXJ0T2ZXZWVrOiAxXG4gIH0sXG4gICdwbC1QTCc6IHtcbiAgICBzaG9ydFdlZWtkYXlOYW1lczogJ05kX1BuX1d0X8Wacl9Del9QdF9Tbycuc3BsaXQoJ18nKSxcbiAgICBsb25nV2Vla2RheU5hbWVzOiAnbmllZHppZWxhX3BvbmllZHppYcWCZWtfd3RvcmVrX8Wbcm9kYV9jendhcnRla19wacSFdGVrX3NvYm90YScuc3BsaXQoJ18nKSxcbiAgICBsb25nTW9udGhOYW1lczogJ3N0eWN6ZcWEX2x1dHlfbWFyemVjX2t3aWVjaWXFhF9tYWpfY3plcndpZWNfbGlwaWVjX3NpZXJwaWXFhF93cnplc2llxYRfcGHFumR6aWVybmlrX2xpc3RvcGFkX2dydWR6aWXFhCcuc3BsaXQoJ18nKSxcbiAgICBzaG9ydE1vbnRoTmFtZXM6ICdzdHlfbHV0X21hcl9rd2lfbWFqX2N6ZV9saXBfc2llX3dyel9wYcW6X2xpc19ncnUnLnNwbGl0KCdfJyksXG4gICAgZm9ybWF0RGF0ZTogJyVkLiViLiVZJyxcbiAgICBjdXJyZW5jeTogJ1BMTicsXG4gICAgbWluU3RheTogJyVudW1iZXIrIG5vY2UnLFxuICAgIG1heFN0YXk6ICclbnVtYmVyLSBub2NlJyxcbiAgICBoYXNJbnZhbGlkTWluU3RheTogJ21pbmltYWxueSBwb2J5OiAlbnVtYmVyIG5vY2UnLFxuICAgIGhhc0ludmFsaWRNYXhTdGF5OiAnbWFrc3ltYWxueSBwb2J5dDogJW51bWJlciBub2NlJyxcbiAgICBoYXNJbnZhbGlkRGF5czogJ2p1xbwgemFyZXplcndvd2FuZScsXG4gICAgc3RhcnRPZldlZWs6IDFcbiAgfSxcbiAgJ25sLU5MJzoge1xuICAgIHNob3J0V2Vla2RheU5hbWVzOiAnWm9fTWFfRGlfV29fRG9fVnJfWmEnLnNwbGl0KCdfJyksXG4gICAgbG9uZ1dlZWtkYXlOYW1lczogJ1pvbmRhZ19NYWFuZGFnX0RpbnNkYWdfV29lbnNkYWdfRG9uZGVyZGFnX1ZyaWpkYWdfWmF0ZXJkYWcnLnNwbGl0KCdfJyksXG4gICAgbG9uZ01vbnRoTmFtZXM6ICdKYW51YXJpX0ZlYnJ1YXJpX01hYXJ0X0FwcmlsX01laV9KdW5pX0p1bGlfQXVndXN0dXNfU2VwdGVtYmVyX09rdG9iZXJfTm92ZW1iZXJfRGVjZW1iZXInLnNwbGl0KCdfJyksXG4gICAgc2hvcnRNb250aE5hbWVzOiAnSmFuX0ZlYl9NYWFfQXByX01laV9KdW5fSnVsX0F1Z19TZXBfT2t0X05vdl9EZWMnLnNwbGl0KCdfJyksXG4gICAgZm9ybWF0RGF0ZTogJyViICVkLCAlWScsXG4gICAgY3VycmVuY3k6ICdFVVInLFxuICAgIG1pblN0YXk6ICclbnVtYmVyKyBuYWNodGVuJyxcbiAgICBtYXhTdGF5OiAnJW51bWJlci0gbmFjaHRlbicsXG4gICAgaGFzSW52YWxpZE1pblN0YXk6ICdtaW5pbWFhbCB2ZXJibGlqZjogJW51bWJlciBuYWNodGVuJyxcbiAgICBoYXNJbnZhbGlkTWF4U3RheTogJ21heGltYWFsIHZlcmJsaWpmOiAlbnVtYmVyIG5hY2h0ZW4nLFxuICAgIGhhc0ludmFsaWREYXlzOiAnYWwgZ2Vib2VrdCcsXG4gICAgc3RhcnRPZldlZWs6IDFcbiAgfVxufTtcblxuLy8gQWRkIGFsaWFzZXNcbmxvY2FsZXMgPSBPYmplY3QuYXNzaWduKHtcbiAgZW46IGxvY2FsZXNbJ2VuLVVTJ10sXG4gIGRlOiBsb2NhbGVzWydkZS1ERSddLFxuICBlczogbG9jYWxlc1snZXMtRVMnXSxcbiAgZnI6IGxvY2FsZXNbJ2ZyLUZSJ10sXG4gIGl0OiBsb2NhbGVzWydpdC1JVCddLFxuICBzdjogbG9jYWxlc1snc3YtU1YnXSxcbiAgcnU6IGxvY2FsZXNbJ3J1LVJVJ10sXG4gIHBsOiBsb2NhbGVzWydwbC1QTCddLFxuICBubDogbG9jYWxlc1snbmwtTkwnXVxufSwgbG9jYWxlcyk7XG5cbmV4cG9ydCBkZWZhdWx0IGxvY2FsZXM7XG4iLCJpbXBvcnQgc3R5bGVzIGZyb20gJy4vc3R5bGVzL2NhbGVuZGFyLnNjc3MnO1xuXG5leHBvcnQgY29uc3QgbWFpbiAgPSBgPGRpdiBjbGFzcz1cIiR7c3R5bGVzLm1vbnRoc1dyYXBwZXJ9XCI+PC9kaXY+YDtcblxuZXhwb3J0IGNvbnN0IHRvb2x0aXAgPSBgPGRpdiBjbGFzcz1cIiR7c3R5bGVzLnRvb2x0aXB9XCIgcm9sZT1cInRvb2x0aXBcIj48c3Bhbj48L3NwYW4+PGRpdiBjbGFzcz1cIiR7c3R5bGVzLnRvb2x0aXBBcnJvd31cIiBkYXRhLXBvcHBlci1hcnJvdz1cInRydWVcIj48L2Rpdj48L2Rpdj5gO1xuXG5leHBvcnQgY29uc3QgbW9udGggPSBgXG4gIDxkaXYgY2xhc3M9XCIke3N0eWxlcy5tQ2VsbH0ganMtbW9udGhcIj5cbiAgICA8dGFibGUgY2xhc3M9XCIke3N0eWxlcy5tb250aH1cIiByb2xlPVwibW9udGhcIj5cbiAgICAgIDxjYXB0aW9uPjxkaXYgY2xhc3M9XCIke3N0eWxlcy5jYXB0aW9ufVwiPjwvZGl2PjwvY2FwdGlvbj5cbiAgICAgIDx0aGVhZCBjbGFzcz1cIiR7c3R5bGVzLnRhYmxlSGVhZGVyfVwiPjx0cj48L3RyPjwvdGhlYWQ+XG4gICAgICA8dGJvZHkgY2xhc3M9XCIke3N0eWxlcy5ib2R5fVwiPjwvdGJvZHk+XG4gICAgPC90YWJsZT5cbiAgPC9kaXY+XG5gO1xuXG5leHBvcnQgY29uc3Qgd2Vla0RheUxhYmVsID0gKGxhYmVsKSA9PiBgPHRoIGNsYXNzPVwiJHtzdHlsZXMudGh9XCI+JHtsYWJlbH08L3RoPmA7XG5cbmV4cG9ydCBjb25zdCB3ZWVrRGF5ID0gKFxuICBsYWJlbCxcbiAgZGlzYWJsZWQsXG4gIGlzQXZhaWxhYmxlSW4sXG4gIGlzQXZhaWxhYmxlT3V0LFxuICBpc0N1cnJlbnREYXksXG4gIG1pblN0YXksXG4gIG1pblN0YXlULFxuICBtYXhTdGF5LFxuICBtYXhTdGF5VCxcbiAgcmF0ZSxcbiAgcmF0ZVRcbikgPT4gYFxuICA8dGQgJHtkaXNhYmxlZCA/IGBkYXRhLWRpc2FibGVkPSR7ZGlzYWJsZWR9YCA6ICdkYXRhLWVuYWJsZWQnfVxuICAgICAgICR7aXNBdmFpbGFibGVPdXQgPyAnZGF0YS1hdmFpbGFibGUtb3V0JyA6ICcnfVxuICAgICAgICR7aXNBdmFpbGFibGVJbiA/ICdkYXRhLWF2YWlsYWJsZS1pbicgOiAnJ31cbiAgICAgICAke21pblN0YXkgPyBgZGF0YS1taW4tc3RheT0ke21pblN0YXl9YCA6ICcnfVxuICAgICAgICR7bWF4U3RheSA/IGBkYXRhLW1heC1zdGF5PSR7bWF4U3RheX1gIDogJyd9XG4gICAgICAgZGF0YS12YWx1ZT1cIiR7bGFiZWx9XCJcbiAgICAgICBjbGFzcz1cIiR7c3R5bGVzLmNlbGx9ICR7aXNDdXJyZW50RGF5ID8gc3R5bGVzLnRvZGF5IDogJyd9XCI+XG4gICAgICAgPGRpdiBjbGFzcz1cIiR7c3R5bGVzLmNudH1cIiByb2xlPVwiZGF5LXZhbHVlXCI+XG4gICAgICAgICR7bGFiZWx9XG4gICAgICAgIDxkaXYgY2xhc3M9XCIke3N0eWxlcy5pbmZvfVwiPlxuICAgICAgICAgICR7cmF0ZSA/IGA8c3BhbiBkYXRhLXJhdGU+JHtyYXRlVH08L3NwYW4+YCA6ICcnfVxuICAgICAgICAgICR7bWluU3RheSAmJiBtaW5TdGF5VCA/IGA8c3BhbiBkYXRhLW1pbi1zdGF5LXQ+JHttaW5TdGF5VH08L3NwYW4+YCA6ICcnfVxuICAgICAgICAgICR7bWF4U3RheSAmJiBtYXhTdGF5VCA/IGA8c3BhbiBkYXRhLW1heC1zdGF5LXQ+JHttYXhTdGF5VH08L3NwYW4+YCA6ICcnfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICA8L3RkPlxuYDtcblxuZXhwb3J0IGNvbnN0IGZvcndhcmQgPSBgXG4gIDxidXR0b24gY2xhc3M9XCIke3N0eWxlcy5mb3J3YXJkfVwiIHJvbGU9XCJidXR0b25cIj5cbiAgICA8c3ZnIHZpZXdCb3g9XCIwIDAgMTAwMCAxMDAwXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCI+XG4gICAgICA8cGF0aCBkPVwiTTY5NC40IDI0Mi40bDI0OS4xIDI0OS4xYzExIDExIDExIDIxIDAgMzJMNjk0LjQgNzcyLjdjLTUgNS0xMCA3LTE2IDdzLTExLTItMTYtN2MtMTEtMTEtMTEtMjEgMC0zMmwyMTAuMS0yMTAuMUg2Ny4xYy0xMyAwLTIzLTEwLTIzLTIzczEwLTIzIDIzLTIzaDgwNS40TDY2Mi40IDI3NC41Yy0yMS0yMS4xIDExLTUzLjEgMzItMzIuMXpcIj48L3BhdGg+XG4gICAgPC9zdmc+XG4gIDwvYnV0dG9uPlxuYDtcblxuZXhwb3J0IGNvbnN0IGJhY2sgPSBgXG4gIDxidXR0b24gY2xhc3M9XCIke3N0eWxlcy5iYWNrfVwiIHJvbGU9XCJidXR0b25cIj5cbiAgICA8c3ZnIHZpZXdCb3g9XCIwIDAgMTAwMCAxMDAwXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCI+XG4gICAgICA8cGF0aCBkPVwiTTMzNi4yIDI3NC41bC0yMTAuMSAyMTBoODA1LjRjMTMgMCAyMyAxMCAyMyAyM3MtMTAgMjMtMjMgMjNIMTI2LjFsMjEwLjEgMjEwLjFjMTEgMTEgMTEgMjEgMCAzMi01IDUtMTAgNy0xNiA3cy0xMS0yLTE2LTdsLTI0OS4xLTI0OWMtMTEtMTEtMTEtMjEgMC0zMmwyNDkuMS0yNDkuMWMyMS0yMS4xIDUzIDEwLjkgMzIgMzJ6XCI+PC9wYXRoPlxuICAgIDwvc3ZnPlxuICA8L2J1dHRvbj5cbmA7XG5cbmV4cG9ydCBjb25zdCB3ZWVrRGF5UGxhY2Vob2xkZXIgPSAnPHRkPjwvdGQ+JztcblxuLyogZXNsaW50IGFycm93LWJvZHktc3R5bGU6IDAgKi9cbmV4cG9ydCBjb25zdCB3ZWVrUm93ID0gKG51bSkgPT4ge1xuICByZXR1cm4ge1xuICAgIG9wZW46IGA8dHIgY2xhc3M9XCJqcy1ib2R5LXJvdy0ke251bX1cIj5gLFxuICAgIGNsb3NlOiAnPC90cj4nXG4gIH07XG59O1xuIiwiLyogZ2xvYmFsIGNvbnNvbGUgKi9cbmltcG9ydCB7IHN0cmZ0aW1lLCBzdHJwdGltZSB9IGZyb20gJ3N0cnRpbWUnO1xuaW1wb3J0IHsgaXMgfSBmcm9tICd3aWRnZXQtdXRpbHMnO1xuXG5leHBvcnQgY29uc3QgZGF0ZVRvSXNvID0gKHllYXIsIG1vbnRoLCBkYXksIGlzU3RyaW5nID0gZmFsc2UpID0+IHtcbiAgZnVuY3Rpb24gcGFkKG51bWJlcikge1xuICAgIGlmIChudW1iZXIgPCAxMCkge1xuICAgICAgcmV0dXJuIGAwJHtudW1iZXJ9YDtcbiAgICB9XG4gICAgcmV0dXJuIG51bWJlcjtcbiAgfVxuXG4gIGlmIChpc1N0cmluZykge1xuICAgIHJldHVybiBgJHt5ZWFyfS0ke3BhZChtb250aCArIDEpfS0ke3BhZChkYXkpfWA7XG4gIH1cblxuICBsZXQgZGF0ZSA9IG5ldyBEYXRlKHllYXIsIG1vbnRoLCBkYXksIDEyLCAwLCAwKTtcbiAgcmV0dXJuIGRhdGU7XG59O1xuXG5leHBvcnQgY29uc3QgZGF0ZVRvQXJyYXkgPSAodmFsLCBmb3JtYXQsIGxvY2FsZSkgPT4ge1xuICB0cnkge1xuICAgIGNvbnN0IGRhdGUgPSBzdHJwdGltZSh2YWwsIGZvcm1hdCwgbG9jYWxlKTtcbiAgICBjb25zdCBhICAgID0gc3RyZnRpbWUoZGF0ZSwgJyVZLSVtLSVkJykuc3BsaXQoJy0nKTtcblxuICAgIHJldHVybiBbXG4gICAgICBwYXJzZUludChhWzBdKSwgLy8geWVhclxuICAgICAgcGFyc2VJbnQoYVsxXSAtIDEpLCAvLyBtb250aCBpbmRleFxuICAgICAgcGFyc2VJbnQoYVsyXSkgLy8gZGF5XG4gICAgXTtcbiAgfSBjYXRjaChlKSB7XG4gICAgaWYgKGlzKGUubWVzc2FnZSkpIHtcbiAgICAgIGNvbnNvbGUubG9nKGUubWVzc2FnZSk7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGlzTGF0ZXIgPSAoc3RhcnQsIGVuZCkgPT4gZGF0ZVRvSXNvKC4uLnN0YXJ0LCB0cnVlKSA8IGRhdGVUb0lzbyguLi5lbmQsIHRydWUpO1xuXG5leHBvcnQgY29uc3QgaXNDdXJyZW50ID0gKHN0YXJ0LCBlbmQpID0+IGRhdGVUb0lzbyguLi5zdGFydCwgdHJ1ZSkgPT0gZGF0ZVRvSXNvKC4uLmVuZCwgdHJ1ZSk7XG5cbmV4cG9ydCBjb25zdCBtb250aERpZmYgPSAoc3RhcnQsIGVuZCkgPT4ge1xuICByZXR1cm4gZW5kLmdldE1vbnRoKCkgLSBzdGFydC5nZXRNb250aCgpICsgKDEyICogKGVuZC5nZXRGdWxsWWVhcigpIC0gc3RhcnQuZ2V0RnVsbFllYXIoKSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IHZhbGlkYXRpb25PZkNlbGwgPSAoY2VsbCkgPT4ge1xuICBpZiAoaXMoY2VsbC5kYXRhc2V0LmVuYWJsZWQpIHx8IGlzKGNlbGwuZGF0YXNldC5hdmFpbGFibGVJbikgfHwgaXMoY2VsbC5kYXRhc2V0LmF2YWlsYWJsZU91dCkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn07XG5cbmV4cG9ydCBjb25zdCB0Rm9ybWF0dGVyID0gKHZhbHVlLCBzdHIpID0+IHN0ci5yZXBsYWNlKCclbnVtYmVyJywgdmFsdWUpO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9HRVRfVVJMX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2dldFVybC5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfVVJMX0lNUE9SVF8wX19fID0gbmV3IFVSTChcImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsJTNDc3ZnIHhtbG5zPSUyN2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJTI3IHZpZXdCb3g9JTI3MCAwIDMyIDMwLjk3JTI3JTNFJTNDcGF0aCBkPSUyN00zMiwxNS40OGExNi41MiwxNi41MiwwLDAsMS0xLjM3LDYuMjgsMTYuMzUsMTYuMzUsMCwwLDEtOSw4LjYzLDE1Ljg3LDE1Ljg3LDAsMCwxLTE3LjMtMy43OEExNS40MywxNS40MywwLDAsMSw0LjcyLDQuNzIsMTUsMTUsMCwwLDEsMTUuNDkuNTJhMTQuNzYsMTQuNzYsMCwwLDEsMTAuNCw0LjU2QTE0Ljc3LDE0Ljc3LDAsMCwxLDI5LDkuOWExNC40NSwxNC40NSwwLDAsMSwuODUsMy4zNWguMTNBMi4wNiwyLjA2LDAsMCwxLDMyLDE1LjMxYS45MS45MSwwLDAsMSwwLC4xN1pNMjguNzIsMTBhMTQuMjcsMTQuMjcsMCwwLDAtMy4yLTQuNTUsMTQsMTQsMCwwLDAtMTAtMy45QTEzLjcyLDEzLjcyLDAsMCwwLDMsMTAuM2ExMy40MywxMy40MywwLDAsMCwuMjQsMTAuMjcsMTMuMDUsMTMuMDUsMCwwLDAsMTIuMjgsNy44MiwxMi45MiwxMi45MiwwLDAsMCw0Ljg4LTEuMSwxMi42NSwxMi42NSwwLDAsMCw0LjA2LTIuODcsMTIuNDgsMTIuNDgsMCwwLDAsMi42Mi00LjE1LDEyLjI0LDEyLjI0LDAsMCwwLC44Mi00Ljc5aDBhLjkxLjkxLDAsMCwxLDAtLjE3LDIuMDcsMi4wNywwLDAsMSwxLjg0LTIuMDUsMTQuMjcsMTQuMjcsMCwwLDAtMS0zLjI2WiUyNyB0cmFuc2Zvcm09JTI3dHJhbnNsYXRlJTI4MCAtMC41MSUyOSUyNy8lM0UlM0Mvc3ZnJTNFXCIsIGltcG9ydC5tZXRhLnVybCk7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG52YXIgX19fQ1NTX0xPQURFUl9VUkxfUkVQTEFDRU1FTlRfMF9fXyA9IF9fX0NTU19MT0FERVJfR0VUX1VSTF9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9VUkxfSU1QT1JUXzBfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuXFxuICAgIGxvYWRlclxcblxcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbkAtd2Via2l0LWtleWZyYW1lcyBCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19ib29raW5nc3luYy1zcGluIHtcXG4gIGZyb20ge1xcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsgfVxcbiAgdG8ge1xcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XFxuICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IH0gfVxcblxcbkBrZXlmcmFtZXMgQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fYm9va2luZ3N5bmMtc3BpbiB7XFxuICBmcm9tIHtcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7IH1cXG4gIHRvIHtcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOyB9IH1cXG5cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXI6OmJlZm9yZSB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IDA7XFxuICBsZWZ0OiAwO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7XFxuICBjb250ZW50OiAnJzsgfVxcblxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcjo6YWZ0ZXIge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdG9wOiA1MCU7XFxuICBsZWZ0OiA1MCU7XFxuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xcbiAgYmFja2dyb3VuZC1zaXplOiAxMDAlO1xcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiICsgX19fQ1NTX0xPQURFUl9VUkxfUkVQTEFDRU1FTlRfMF9fXyArIFwiKTtcXG4gIGhlaWdodDogMjBweDtcXG4gIHdpZHRoOiAyMHB4O1xcbiAgbWFyZ2luOiAtMTBweCAwIDAgLTEwcHg7XFxuICBjb250ZW50OiAnJztcXG4gIC13ZWJraXQtYW5pbWF0aW9uOiBCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19ib29raW5nc3luYy1zcGluIDJzIGluZmluaXRlIGxpbmVhcjtcXG4gIGFuaW1hdGlvbjogQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fYm9va2luZ3N5bmMtc3BpbiAycyBpbmZpbml0ZSBsaW5lYXI7XFxuICBhbmltYXRpb24tcGxheS1zdGF0ZTogcGF1c2VkOyB9XFxuXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyOjpiZWZvcmUsIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcjo6YWZ0ZXIge1xcbiAgei1pbmRleDogMTAwMDtcXG4gIG9wYWNpdHk6IDA7XFxuICB2aXNpYmlsaXR5OiBoaWRkZW47XFxuICAtd2Via2l0LXRyYW5zaXRpb246IG9wYWNpdHkgMC4yNXMgZWFzZS1pbi1vdXQ7XFxuICAtby10cmFuc2l0aW9uOiBvcGFjaXR5IDAuMjVzIGVhc2UtaW4tb3V0O1xcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjI1cyBlYXNlLWluLW91dDsgfVxcblxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhci5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19sb2FkaW5nOjpiZWZvcmUsIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhci5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19sb2FkaW5nOjphZnRlciB7XFxuICBvcGFjaXR5OiAxO1xcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcXG4gIGFuaW1hdGlvbi1wbGF5LXN0YXRlOiBydW5uaW5nOyB9XFxuXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuXFxuICAgIGRyb3Bkb3duXFxuXFxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2Ryb3BCYXNpYyB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBkaXNwbGF5OiBub25lO1xcbiAgbWF4LXdpZHRoOiAxMDAlO1xcbiAgYm94LXNoYWRvdzogMXB4IDVweCA5cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKTtcXG4gIGJvcmRlcjogMXB4IHNvbGlkICNlMGUwZTA7XFxuICBiYWNrZ3JvdW5kOiAjZmZmO1xcbiAgbWFyZ2luOiAwO1xcbiAgcGFkZGluZzogMWVtO1xcbiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XFxuICBsaW5lLWhlaWdodDogMS41ZW07XFxuICB6LWluZGV4OiAxMDsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2Ryb3BCYXNpYy5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X192aXNpYmxlIHtcXG4gICAgZGlzcGxheTogYmxvY2s7IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhci5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19kcm9wQmFzaWMgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhcHRpb24ge1xcbiAgICBtYXJnaW4tYm90dG9tOiAuN2VtOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fZHJvcEJhc2ljIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19mb3J3YXJkLFxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2Ryb3BCYXNpYyAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fYmFjayB7XFxuICAgIHRvcDogMWVtO1xcbiAgICBsZWZ0OiAxZW07IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhci5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19kcm9wQmFzaWMgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2ZvcndhcmQge1xcbiAgICBsZWZ0OiBhdXRvO1xcbiAgICByaWdodDogMWVtOyB9XFxuXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2VsbDpmaXJzdC1jaGlsZCB7XFxuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA0cHg7XFxuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA0cHg7IH1cXG5cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jZWxsOmxhc3QtY2hpbGQge1xcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDRweDtcXG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiA0cHg7IH1cXG5cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jZWxsOjpiZWZvcmUsIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NlbGw6OmFmdGVyIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGRpc3BsYXk6IGJsb2NrO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBtYXJnaW46IDA7XFxuICBjb250ZW50OiAnJztcXG4gIC13ZWJraXQtdHJhbnNmb3JtOiBza2V3KC0zMGRlZyk7XFxuICAtbXMtdHJhbnNmb3JtOiBza2V3KC0zMGRlZyk7XFxuICB0cmFuc2Zvcm06IHNrZXcoLTMwZGVnKTtcXG4gIGJvcmRlci1yYWRpdXM6IDZweDtcXG4gIHotaW5kZXg6IDA7XFxuICBoZWlnaHQ6IGNhbGMoMTAwJSArIDJweCk7XFxuICB0b3A6IC0xcHg7IH1cXG5cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jZWxsOjpiZWZvcmUge1xcbiAgbGVmdDogLTU1JTsgfVxcblxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NlbGw6OmFmdGVyIHtcXG4gIGxlZnQ6IDU1JTsgfVxcblxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcblxcbiAgICBzZWxlY3Rpb25zLCBsZWZ0IC0gY2VudGVyIC0gcmlnaHRcXG5cXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4gIGNlbGxzIGRpc2FibGVkXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSBbZGF0YS1kaXNhYmxlZD1cXFwibGVmdFxcXCJdOjphZnRlciB7XFxuICBiYWNrZ3JvdW5kOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1kaXNhYmxlZC1iZy1jb2xvciwgI2YwZjBmMCk7IH1cXG5cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIFtkYXRhLWRpc2FibGVkPVxcXCJjZW50ZXJcXFwiXSB7XFxuICBiYWNrZ3JvdW5kOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1kaXNhYmxlZC1iZy1jb2xvciwgI2YwZjBmMCk7XFxuICBjb2xvcjogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItZGlzYWJsZWQtY29sb3IsICNiZmJmYmYpOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIFtkYXRhLWRpc2FibGVkPVxcXCJjZW50ZXJcXFwiXTo6YmVmb3JlLCAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIFtkYXRhLWRpc2FibGVkPVxcXCJjZW50ZXJcXFwiXTo6YWZ0ZXIge1xcbiAgICBkaXNwbGF5OiBub25lO1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1kaXNhYmxlZC1iZy1jb2xvciwgI2YwZjBmMCk7IH1cXG5cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIFtkYXRhLWRpc2FibGVkPVxcXCJyaWdodFxcXCJdOjpiZWZvcmUge1xcbiAgYmFja2dyb3VuZDogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItZGlzYWJsZWQtYmctY29sb3IsICNmMGYwZjApOyB9XFxuXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuICBjZWxscyBoaWdobGlnaHRlZFxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gW2RhdGEtaGlnaGxpZ2h0ZWQ9XFxcImxlZnRcXFwiXTo6YWZ0ZXIge1xcbiAgZGlzcGxheTogYmxvY2s7XFxuICBiYWNrZ3JvdW5kOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1oaWdobGlnaHRlZC1iZy1jb2xvciwgI2I3Y2FmYik7IH1cXG5cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIFtkYXRhLWhpZ2hsaWdodGVkPVxcXCJjZW50ZXJcXFwiXSB7XFxuICBiYWNrZ3JvdW5kOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1oaWdobGlnaHRlZC1iZy1jb2xvciwgI2I3Y2FmYik7XFxuICBjb2xvcjogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItaGlnaGxpZ2h0ZWQtY29sb3IsICMzNzM3MzcpOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIFtkYXRhLWhpZ2hsaWdodGVkPVxcXCJjZW50ZXJcXFwiXTo6YmVmb3JlLCAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIFtkYXRhLWhpZ2hsaWdodGVkPVxcXCJjZW50ZXJcXFwiXTo6YWZ0ZXIge1xcbiAgICBkaXNwbGF5OiBub25lO1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1oaWdobGlnaHRlZC1iZy1jb2xvciwgI2I3Y2FmYik7IH1cXG5cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIFtkYXRhLWhpZ2hsaWdodGVkPVxcXCJyaWdodFxcXCJdOjpiZWZvcmUge1xcbiAgZGlzcGxheTogYmxvY2s7XFxuICBiYWNrZ3JvdW5kOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1oaWdobGlnaHRlZC1iZy1jb2xvciwgI2I3Y2FmYik7IH1cXG5cXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4gIGNlbGxzIGludmFsaWRcXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIFtkYXRhLWludmFsaWQ9XFxcImxlZnRcXFwiXSB7XFxuICBiYWNrZ3JvdW5kOiBub25lOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIFtkYXRhLWludmFsaWQ9XFxcImxlZnRcXFwiXTo6YmVmb3JlIHtcXG4gICAgZGlzcGxheTogYmxvY2s7IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gW2RhdGEtaW52YWxpZD1cXFwibGVmdFxcXCJdOjphZnRlciB7XFxuICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1pbnZhbGlkLWJnLWNvbG9yLCAjZTNlM2UzKTsgfVxcblxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gW2RhdGEtaW52YWxpZD1cXFwiY2VudGVyXFxcIl0ge1xcbiAgYmFja2dyb3VuZDogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItaW52YWxpZC1iZy1jb2xvciwgI2UzZTNlMyk7XFxuICBjb2xvcjogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItaW52YWxpZC1jb2xvciwgI2IyYjJiMik7IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gW2RhdGEtaW52YWxpZD1cXFwiY2VudGVyXFxcIl06OmJlZm9yZSwgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSBbZGF0YS1pbnZhbGlkPVxcXCJjZW50ZXJcXFwiXTo6YWZ0ZXIge1xcbiAgICBkaXNwbGF5OiBub25lO1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1pbnZhbGlkLWJnLWNvbG9yLCAjZTNlM2UzKTsgfVxcblxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gW2RhdGEtaW52YWxpZD1cXFwicmlnaHRcXFwiXSB7XFxuICBiYWNrZ3JvdW5kOiBub25lOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIFtkYXRhLWludmFsaWQ9XFxcInJpZ2h0XFxcIl06OmJlZm9yZSB7XFxuICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1pbnZhbGlkLWJnLWNvbG9yLCAjZTNlM2UzKTsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSBbZGF0YS1pbnZhbGlkPVxcXCJyaWdodFxcXCJdOjphZnRlciB7XFxuICAgIGRpc3BsYXk6IGJsb2NrOyB9XFxuXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuICBjZWxsIGhvdmVyIGRpcmVjdFxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19kaXJlY3RbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIFtkYXRhLWhvdmVyZWRdIHtcXG4gIGJhY2tncm91bmQ6IG5vbmU7IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19kaXJlY3RbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIFtkYXRhLWhvdmVyZWRdOjpiZWZvcmUge1xcbiAgICBkaXNwbGF5OiBibG9jazsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2RpcmVjdFtkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gW2RhdGEtaG92ZXJlZF06OmFmdGVyIHtcXG4gICAgZGlzcGxheTogYmxvY2s7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWhpZ2hsaWdodGVkLWJnLWNvbG9yLCAjYjdjYWZiKTsgfVxcblxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19kaXJlY3RbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIFtkYXRhLWhvdmVyZWQtb2Zmc2V0XSB7XFxuICBiYWNrZ3JvdW5kOiBub25lOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fZGlyZWN0W2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSBbZGF0YS1ob3ZlcmVkLW9mZnNldF06OmJlZm9yZSB7XFxuICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1oaWdobGlnaHRlZC1iZy1jb2xvciwgI2I3Y2FmYik7IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19kaXJlY3RbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIFtkYXRhLWhvdmVyZWQtb2Zmc2V0XTo6YWZ0ZXIge1xcbiAgICBkaXNwbGF5OiBibG9jazsgfVxcblxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiAgY2VsbCBob3ZlciByZXZlcnNlZFxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19yZXZlcnNlZFtkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gW2RhdGEtaG92ZXJlZF0ge1xcbiAgYmFja2dyb3VuZDogbm9uZTsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3JldmVyc2VkW2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSBbZGF0YS1ob3ZlcmVkXTo6YmVmb3JlIHtcXG4gICAgZGlzcGxheTogYmxvY2s7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWhpZ2hsaWdodGVkLWJnLWNvbG9yLCAjYjdjYWZiKTsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3JldmVyc2VkW2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSBbZGF0YS1ob3ZlcmVkXTo6YWZ0ZXIge1xcbiAgICBkaXNwbGF5OiBibG9jazsgfVxcblxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19yZXZlcnNlZFtkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gW2RhdGEtaG92ZXJlZC1vZmZzZXRdIHtcXG4gIGJhY2tncm91bmQ6IG5vbmU7IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19yZXZlcnNlZFtkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gW2RhdGEtaG92ZXJlZC1vZmZzZXRdOjpiZWZvcmUge1xcbiAgICBkaXNwbGF5OiBibG9jazsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3JldmVyc2VkW2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSBbZGF0YS1ob3ZlcmVkLW9mZnNldF06OmFmdGVyIHtcXG4gICAgZGlzcGxheTogYmxvY2s7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWhpZ2hsaWdodGVkLWJnLWNvbG9yLCAjYjdjYWZiKTsgfVxcblxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJiYXNpY1xcXCJdIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jZWxsOjpiZWZvcmUsIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJiYXNpY1xcXCJdIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jZWxsOjphZnRlciB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBkaXNwbGF5OiBibG9jaztcXG4gIHdpZHRoOiAxMDAlO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgdG9wOiAwO1xcbiAgbWFyZ2luOiAwO1xcbiAgY29udGVudDogJyc7XFxuICB6LWluZGV4OiAwOyB9XFxuXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuXFxuICAgIHNlbGVjdGlvbnMsIGxlZnQgLSBjZW50ZXIgLSByaWdodFxcblxcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiAgY2VsbHMgZGlzYWJsZWRcXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwiYmFzaWNcXFwiXSBbZGF0YS1kaXNhYmxlZD1cXFwiY2VudGVyXFxcIl0ge1xcbiAgdGV4dC1kZWNvcmF0aW9uOiBsaW5lLXRocm91Z2g7XFxuICBjb2xvcjogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItZGlzYWJsZWQtY29sb3IsICNiZmJmYmYpOyB9XFxuXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuICBjZWxscyBoaWdobGlnaHRlZFxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJiYXNpY1xcXCJdIFtkYXRhLWhpZ2hsaWdodGVkPVxcXCJsZWZ0XFxcIl0ge1xcbiAgY29sb3I6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWhpZ2hsaWdodGVkLWNvbG9yLCAjMzczNzM3KTsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcImJhc2ljXFxcIl0gW2RhdGEtaGlnaGxpZ2h0ZWQ9XFxcImxlZnRcXFwiXTo6YmVmb3JlIHtcXG4gICAgYmFja2dyb3VuZDogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItaGlnaGxpZ2h0ZWQtYmctY29sb3IsICNiN2NhZmIpO1xcbiAgICBvcGFjaXR5OiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1jZWxsLWJnLW9wYWNpdHksIDAuNSk7XFxuICAgIHdpZHRoOiA1MCU7XFxuICAgIGxlZnQ6IDUwJTsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcImJhc2ljXFxcIl0gW2RhdGEtaGlnaGxpZ2h0ZWQ9XFxcImxlZnRcXFwiXTo6YWZ0ZXIge1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1oaWdobGlnaHRlZC1iZy1jb2xvciwgI2I3Y2FmYik7XFxuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWNlbGwtYm9yZGVyLXJhZGl1cywgNnB4KTsgfVxcblxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJiYXNpY1xcXCJdIFtkYXRhLWhpZ2hsaWdodGVkPVxcXCJjZW50ZXJcXFwiXSB7XFxuICBjb2xvcjogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItaGlnaGxpZ2h0ZWQtY29sb3IsICMzNzM3MzcpOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwiYmFzaWNcXFwiXSBbZGF0YS1oaWdobGlnaHRlZD1cXFwiY2VudGVyXFxcIl06OmJlZm9yZSB7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWhpZ2hsaWdodGVkLWJnLWNvbG9yLCAjYjdjYWZiKTtcXG4gICAgb3BhY2l0eTogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItY2VsbC1iZy1vcGFjaXR5LCAwLjUpOyB9XFxuXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcImJhc2ljXFxcIl0gW2RhdGEtaGlnaGxpZ2h0ZWQ9XFxcInJpZ2h0XFxcIl0ge1xcbiAgY29sb3I6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWhpZ2hsaWdodGVkLWNvbG9yLCAjMzczNzM3KTsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcImJhc2ljXFxcIl0gW2RhdGEtaGlnaGxpZ2h0ZWQ9XFxcInJpZ2h0XFxcIl06OmJlZm9yZSB7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWhpZ2hsaWdodGVkLWJnLWNvbG9yLCAjYjdjYWZiKTtcXG4gICAgb3BhY2l0eTogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItY2VsbC1iZy1vcGFjaXR5LCAwLjUpO1xcbiAgICB3aWR0aDogNTAlO1xcbiAgICByaWdodDogNTAlOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwiYmFzaWNcXFwiXSBbZGF0YS1oaWdobGlnaHRlZD1cXFwicmlnaHRcXFwiXTo6YWZ0ZXIge1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1oaWdobGlnaHRlZC1iZy1jb2xvciwgI2I3Y2FmYik7XFxuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWNlbGwtYm9yZGVyLXJhZGl1cywgNnB4KTsgfVxcblxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiAgY2VsbHMgaW52YWxpZFxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJiYXNpY1xcXCJdIFtkYXRhLWludmFsaWQ9XFxcImxlZnRcXFwiXSB7XFxuICBjb2xvcjogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItaW52YWxpZC1jb2xvciwgI2IyYjJiMik7IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJiYXNpY1xcXCJdIFtkYXRhLWludmFsaWQ9XFxcImxlZnRcXFwiXTo6YmVmb3JlIHtcXG4gICAgYmFja2dyb3VuZDogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItaW52YWxpZC1iZy1jb2xvciwgI2UzZTNlMyk7XFxuICAgIG9wYWNpdHk6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWNlbGwtYmctb3BhY2l0eSwgMC41KTtcXG4gICAgd2lkdGg6IDUwJTtcXG4gICAgbGVmdDogNTAlOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwiYmFzaWNcXFwiXSBbZGF0YS1pbnZhbGlkPVxcXCJsZWZ0XFxcIl06OmFmdGVyIHtcXG4gICAgYmFja2dyb3VuZDogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItaW52YWxpZC1iZy1jb2xvciwgI2UzZTNlMyk7XFxuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWNlbGwtYm9yZGVyLXJhZGl1cywgNnB4KTsgfVxcblxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJiYXNpY1xcXCJdIFtkYXRhLWludmFsaWQ9XFxcImNlbnRlclxcXCJdIHtcXG4gIGNvbG9yOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1pbnZhbGlkLWNvbG9yLCAjYjJiMmIyKTsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcImJhc2ljXFxcIl0gW2RhdGEtaW52YWxpZD1cXFwiY2VudGVyXFxcIl06OmJlZm9yZSB7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWludmFsaWQtYmctY29sb3IsICNlM2UzZTMpO1xcbiAgICBvcGFjaXR5OiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1jZWxsLWJnLW9wYWNpdHksIDAuNSk7IH1cXG5cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwiYmFzaWNcXFwiXSBbZGF0YS1pbnZhbGlkPVxcXCJyaWdodFxcXCJdIHtcXG4gIGNvbG9yOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1pbnZhbGlkLWNvbG9yLCAjYjJiMmIyKTsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcImJhc2ljXFxcIl0gW2RhdGEtaW52YWxpZD1cXFwicmlnaHRcXFwiXTo6YmVmb3JlIHtcXG4gICAgYmFja2dyb3VuZDogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItaW52YWxpZC1iZy1jb2xvciwgI2UzZTNlMyk7XFxuICAgIG9wYWNpdHk6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWNlbGwtYmctb3BhY2l0eSwgMC41KTtcXG4gICAgd2lkdGg6IDUwJTtcXG4gICAgcmlnaHQ6IDUwJTsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcImJhc2ljXFxcIl0gW2RhdGEtaW52YWxpZD1cXFwicmlnaHRcXFwiXTo6YWZ0ZXIge1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1pbnZhbGlkLWJnLWNvbG9yLCAjZTNlM2UzKTtcXG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItY2VsbC1ib3JkZXItcmFkaXVzLCA2cHgpOyB9XFxuXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuICBjZWxsIGhvdmVyXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcImJhc2ljXFxcIl0gW2RhdGEtaG92ZXJlZF06bm90KFtkYXRhLWRpc2FibGVkPVxcXCJjZW50ZXJcXFwiXSkge1xcbiAgY29sb3I6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWhpZ2hsaWdodGVkLWNvbG9yLCAjMzczNzM3KTsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcImJhc2ljXFxcIl0gW2RhdGEtaG92ZXJlZF06bm90KFtkYXRhLWRpc2FibGVkPVxcXCJjZW50ZXJcXFwiXSk6OmFmdGVyIHtcXG4gICAgYmFja2dyb3VuZDogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItaGlnaGxpZ2h0ZWQtYmctY29sb3IsICNiN2NhZmIpO1xcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1jZWxsLWJvcmRlci1yYWRpdXMsIDZweCk7IH1cXG5cXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG5cXG4gICAgY29sb3JzXFxuXFxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGZvbnQ6IDFyZW0vMS40IEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBiYWNrZ3JvdW5kOiAjZmZmOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhcHRpb24ge1xcbiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gICAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIC13ZWJraXQtYm94LXBhY2s6IGNlbnRlcjtcXG4gICAgLW1zLWZsZXgtcGFjazogY2VudGVyO1xcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcXG4gICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgbGluZS1oZWlnaHQ6IDJyZW07XFxuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XFxuICAgIG1hcmdpbi1ib3R0b206IDIuM2VtO1xcbiAgICBwYWRkaW5nLXRvcDogMDtcXG4gICAgdGV4dC1hbGlnbjogY2VudGVyOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3Rvb2x0aXAge1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci10b29sdGlwLWJnLWNvbG9yLCAjMzMzKTtcXG4gICAgY29sb3I6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLXRvb2x0aXAtY29sb3IsICNmZmYpO1xcbiAgICBmb250LXdlaWdodDogYm9sZDtcXG4gICAgcGFkZGluZzogNHB4IDhweDtcXG4gICAgZm9udC1zaXplOiAxM3B4O1xcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XFxuICAgIHotaW5kZXg6IDUwMDtcXG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7IH1cXG4gICAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X190b29sdGlwIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X190b29sdGlwQXJyb3cge1xcbiAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsgfVxcbiAgICAgIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fdG9vbHRpcCAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fdG9vbHRpcEFycm93LCAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3Rvb2x0aXAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3Rvb2x0aXBBcnJvdzo6YmVmb3JlIHtcXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgICAgIHdpZHRoOiA4cHg7XFxuICAgICAgICBoZWlnaHQ6IDhweDtcXG4gICAgICAgIGJhY2tncm91bmQ6IGluaGVyaXQ7IH1cXG4gICAgICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3Rvb2x0aXAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3Rvb2x0aXBBcnJvdzo6YmVmb3JlIHtcXG4gICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XFxuICAgICAgICBjb250ZW50OiAnJztcXG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTsgfVxcbiAgICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3Rvb2x0aXBbZGF0YS1wb3BwZXItcGxhY2VtZW50Xj0ndG9wJ10gPiAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fdG9vbHRpcEFycm93IHtcXG4gICAgICBib3R0b206IC00cHg7IH1cXG4gICAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X190b29sdGlwW2RhdGEtcG9wcGVyLXBsYWNlbWVudF49J2JvdHRvbSddID4gLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3Rvb2x0aXBBcnJvdyB7XFxuICAgICAgdG9wOiAtNHB4OyB9XFxuICAgIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fdG9vbHRpcFtkYXRhLXBvcHBlci1wbGFjZW1lbnRePSdsZWZ0J10gPiAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fdG9vbHRpcEFycm93IHtcXG4gICAgICByaWdodDogLTRweDsgfVxcbiAgICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3Rvb2x0aXBbZGF0YS1wb3BwZXItcGxhY2VtZW50Xj0ncmlnaHQnXSA+IC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X190b29sdGlwQXJyb3cge1xcbiAgICAgIGxlZnQ6IC00cHg7IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fbW9udGhzV3JhcHBlciB7XFxuICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgLW1zLWZsZXgtd3JhcDogd3JhcDtcXG4gICAgZmxleC13cmFwOiB3cmFwO1xcbiAgICBnYXA6IDJlbTsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19tQ2VsbCB7XFxuICAgIGZvbnQtc2l6ZTogMC44NzVlbTtcXG4gICAgLXdlYmtpdC1ib3gtZmxleDogMTtcXG4gICAgLW1zLWZsZXg6IDEgMSAyNSU7XFxuICAgIGZsZXg6IDEgMSAyNSU7IH1cXG4gICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA5OTBweCkge1xcbiAgICAgIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fbUNlbGwge1xcbiAgICAgICAgLXdlYmtpdC1ib3gtZmxleDogMTtcXG4gICAgICAgIC1tcy1mbGV4OiAxIDEgMTAwJTtcXG4gICAgICAgIGZsZXg6IDEgMSAxMDAlOyB9IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fbW9udGgge1xcbiAgICBib3JkZXItY29sbGFwc2U6IHNlcGFyYXRlO1xcbiAgICBib3JkZXItc3BhY2luZzogMCAwLjJlbTtcXG4gICAgcGFkZGluZzogMDtcXG4gICAgbWFyZ2luOiAwO1xcbiAgICB3aWR0aDogMTAwJTsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X190YWJsZUhlYWRlcixcXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fYm9keSB7XFxuICAgIG1hcmdpbjogMDsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X190aCB7XFxuICAgIGZvbnQtc2l6ZTogMC44NWVtO1xcbiAgICBjb2xvcjogI2FhYWFhYTtcXG4gICAgaGVpZ2h0OiAyNXB4O1xcbiAgICB3aWR0aDogMzBweDtcXG4gICAgdGV4dC1hbGlnbjogY2VudGVyOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NlbGwge1xcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICAgIHBhZGRpbmc6IDA7XFxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gICAgYm9yZGVyOiAwO1xcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xcbiAgICBjb2xvcjogIzQ0NDQ0NDtcXG4gICAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gICAgd2lkdGg6IDMwcHg7IH1cXG4gICAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jZWxsLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3RvZGF5IHtcXG4gICAgICBmb250LXdlaWdodDogYm9sZDsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jbnQge1xcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyO1xcbiAgICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7XFxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyO1xcbiAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyO1xcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICB6LWluZGV4OiAxO1xcbiAgICBmb250LXNpemU6IDFlbTtcXG4gICAgZm9udC13ZWlnaHQ6IGluaGVyaXQ7IH1cXG4gICAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jbnQ6OmFmdGVyIHtcXG4gICAgICBjb250ZW50OiAnJztcXG4gICAgICBkaXNwbGF5OiBibG9jaztcXG4gICAgICBtYXJnaW4tdG9wOiAxMDAlOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2luZm8ge1xcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgIGJvdHRvbTogMDtcXG4gICAgbGVmdDogMDtcXG4gICAgZm9udC1zaXplOiAwLjY1ZW07XFxuICAgIHBhZGRpbmc6IDFweCAzcHg7XFxuICAgIGNvbG9yOiByZ2JhKDYwLCA2MCwgNjAsIDAuNSk7XFxuICAgIHJpZ2h0OiAwOyB9XFxuICAgIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9faW5mbyA+IHNwYW4ge1xcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsgfVxcblxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19mb2N1cyxcXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fZGlzYWJsZWQsXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3NlbGVjdGVkLFxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19yZXZlcnNlZCxcXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fZGlyZWN0LFxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19zZWxlY3RpbmdSZXZlcnNlZCxcXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fc2VsZWN0aW5nRGlyZWN0LFxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19hY3Rpb25zRW5hYmxlZCxcXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9faGlnaGxpZ2h0ZWQsXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2ludmFsaWQge1xcbiAgY29sb3I6IGluaGVyaXQ7IH1cXG5cXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4gIGNlbGwgaG92ZXIgY3Vyc29yc1xcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXNlbGVjdGFibGU9XFxcInRydWVcXFwiXSAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2VsbCAqIHtcXG4gIGN1cnNvcjogcG9pbnRlcjsgfVxcblxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcblxcbiAgICBidXR0b25zXFxuXFxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19mb3J3YXJkLFxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fYmFjayB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IDA7XFxuICBsZWZ0OiAwO1xcbiAgaGVpZ2h0OiAycmVtO1xcbiAgd2lkdGg6IDIzcHg7XFxuICBmaWxsOiAjNDQ0NDQ0O1xcbiAgcGFkZGluZzogMDtcXG4gIGJvcmRlci1yYWRpdXM6IDFweDtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG4gIHotaW5kZXg6IDI7IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fZm9yd2FyZCBzdmcsXFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2JhY2sgc3ZnIHtcXG4gICAgaGVpZ2h0OiBpbmhlcml0O1xcbiAgICB3aWR0aDogaW5oZXJpdDsgfVxcblxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fZm9yd2FyZCB7XFxuICByaWdodDogMDtcXG4gIGxlZnQ6IGF1dG87IH1cXG5cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2ZvcndhcmQ6YWN0aXZlLFxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fZm9yd2FyZDpmb2N1cyxcXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2JhY2s6YWN0aXZlLFxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fYmFjazpmb2N1cyB7XFxuICBvdXRsaW5lOiBub25lOyB9XFxuXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19mb3J3YXJkOmhvdmVyLFxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fYmFjazpob3ZlciB7XFxuICBmaWxsOiAjMzg5NWQ5OyB9XFxuXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19mb3J3YXJkW2Rpc2FibGVkXSxcXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2ZvcndhcmRbZGlzYWJsZWRdOmhvdmVyLFxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fYmFja1tkaXNhYmxlZF0sXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19iYWNrW2Rpc2FibGVkXTpob3ZlciB7XFxuICBvcGFjaXR5OiAwLjU7XFxuICBjdXJzb3I6IGRlZmF1bHQ7XFxuICBmaWxsOiAjNDQ0NDQ0OyB9XFxuXCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vc3JjL3N0eWxlcy9sb2FkaW5nLnNjc3NcIixcIndlYnBhY2s6Ly8uL3NyYy9zdHlsZXMvY2FsZW5kYXIuc2Nzc1wiLFwid2VicGFjazovLy4vc3JjL3N0eWxlcy9zdmctdXJpLnNjc3NcIixcIndlYnBhY2s6Ly8uL3NyYy9zdHlsZXMvX3ZhcmlhYmxlcy5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9zcmMvc3R5bGVzL2Ryb3Auc2Nzc1wiLFwid2VicGFjazovLy4vc3JjL3N0eWxlcy90aGVtZS1za2V3LnNjc3NcIixcIndlYnBhY2s6Ly8uL3NyYy9zdHlsZXMvdGhlbWUtYmFzaWMuc2Nzc1wiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFBQTs7Ozt3RENJd0Q7QURFeEQ7RUFDRTtJQUNFLCtCQUErQjtJQUMvQix1QkFBdUIsRUFBQTtFQUd6QjtJQUNFLGlDQUFpQztJQUNqQyx5QkFBeUIsRUFBQSxFQUFBOztBQUk3QjtFQUNFO0lBQ0UsK0JBQStCO0lBQy9C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QjtFRnNNM0IsVUFBVTtFQUNWLGtCQUFrQjtFQUNsQixlQUFlO0VBQ2YsVUFBVSxFQUFBO0VBYmQ7O0lBZ0JJLGVBQWU7SUFDZixjQUFjLEVBQUE7O0FBakJsQjtFQXNCSSxRQUFRO0VBQ1IsVUFBVSxFQUFBOztBQXZCZDs7OztFQThCSSxhQUFhLEVBQUE7O0FBOUJqQjs7RUFtQ0ksYUV6TTJCLEVBQUE7O0FGc0svQjs7OztFQTBDSSxZQUFZO0VBQ1osZUFBZTtFQUNmLGFFeE8yQixFQUFBXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcblxcbiAgICBsb2FkZXJcXG5cXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG5cXG5ALXdlYmtpdC1rZXlmcmFtZXMgYm9va2luZ3N5bmMtc3BpbiB7XFxuICBmcm9tIHtcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XFxuICB9XFxuXFxuICB0byB7XFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcXG4gIH1cXG59XFxuXFxuQGtleWZyYW1lcyBib29raW5nc3luYy1zcGluIHtcXG4gIGZyb20ge1xcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcXG4gIH1cXG4gIHRvIHtcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xcbiAgfVxcbn1cXG5cXG4uY2FsZW5kYXIge1xcbiAgJjo6YmVmb3JlIHtcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICB0b3A6IDA7XFxuICAgIGxlZnQ6IDA7XFxuICAgIHdpZHRoOiAxMDAlO1xcbiAgICBoZWlnaHQ6IDEwMCU7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoI2ZmZiwgLjcpO1xcbiAgICBjb250ZW50OiAnJztcXG4gIH1cXG5cXG4gICY6OmFmdGVyIHtcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICB0b3A6IDUwJTtcXG4gICAgbGVmdDogNTAlO1xcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDEwMCU7XFxuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtcXG4gICAgYmFja2dyb3VuZC1pbWFnZTogJGljb24tc3Bpbm5lci1zdmc7XFxuICAgIGhlaWdodDogMjBweDtcXG4gICAgd2lkdGg6IDIwcHg7XFxuICAgIG1hcmdpbjogLTEwcHggMCAwIC0xMHB4O1xcbiAgICBjb250ZW50OiAnJztcXG4gICAgLXdlYmtpdC1hbmltYXRpb246IGJvb2tpbmdzeW5jLXNwaW4gMnMgaW5maW5pdGUgbGluZWFyO1xcbiAgICBhbmltYXRpb246IGJvb2tpbmdzeW5jLXNwaW4gMnMgaW5maW5pdGUgbGluZWFyO1xcbiAgICBhbmltYXRpb24tcGxheS1zdGF0ZTogcGF1c2VkO1xcbiAgfVxcblxcbiAgJjo6YmVmb3JlLFxcbiAgJjo6YWZ0ZXIge1xcbiAgICB6LWluZGV4OiAxMDAwO1xcbiAgICBvcGFjaXR5OiAwO1xcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XFxuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogJHRyYW5zaXRpb247XFxuICAgIC1vLXRyYW5zaXRpb246ICR0cmFuc2l0aW9uO1xcbiAgICB0cmFuc2l0aW9uOiAkdHJhbnNpdGlvbjtcXG4gIH1cXG5cXG4gICYubG9hZGluZyB7XFxuICAgICY6OmJlZm9yZSxcXG4gICAgJjo6YWZ0ZXIge1xcbiAgICAgIG9wYWNpdHk6IDE7XFxuICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcXG4gICAgICBhbmltYXRpb24tcGxheS1zdGF0ZTogcnVubmluZztcXG4gICAgfVxcbiAgfVxcbn1cXG5cIixcIkBpbXBvcnQgJ3N2Zy11cmknO1xcbkBpbXBvcnQgJ3ZhcmlhYmxlcyc7XFxuQGltcG9ydCAnbG9hZGluZyc7XFxuQGltcG9ydCAnZHJvcCc7XFxuQGltcG9ydCAndGhlbWUtc2tldyc7XFxuQGltcG9ydCAndGhlbWUtYmFzaWMnO1xcblxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcblxcbiAgICBjb2xvcnNcXG5cXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG5cXG4uY2FsZW5kYXIge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgZm9udDogMXJlbS8xLjQgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGJhY2tncm91bmQ6ICRjYWxlbmRhci1iZy1jb2xvcjtcXG5cXG4gIC5jYXB0aW9uIHtcXG4gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAtd2Via2l0LWJveC1wYWNrOiBjZW50ZXI7XFxuICAgIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjtcXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7XFxuICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7XFxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgIGxpbmUtaGVpZ2h0OiAycmVtO1xcbiAgICBmb250LXdlaWdodDogNzAwO1xcbiAgICBtYXJnaW4tYm90dG9tOiAyLjNlbTtcXG4gICAgcGFkZGluZy10b3A6IDA7XFxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gIH1cXG5cXG4gIC50b29sdGlwIHtcXG4gICAgYmFja2dyb3VuZDogJHRvb2x0aXAtYmctY29sb3I7XFxuICAgIGNvbG9yOiAkdG9vbHRpcC1jb2xvcjtcXG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XFxuICAgIHBhZGRpbmc6IDRweCA4cHg7XFxuICAgIGZvbnQtc2l6ZTogMTNweDtcXG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xcbiAgICB6LWluZGV4OiA1MDA7XFxuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xcblxcbiAgICAudG9vbHRpcEFycm93IHtcXG4gICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XFxuXFxuICAgICAgJiwgJjo6YmVmb3JlIHtcXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgICAgIHdpZHRoOiA4cHg7XFxuICAgICAgICBoZWlnaHQ6IDhweDtcXG4gICAgICAgIGJhY2tncm91bmQ6IGluaGVyaXQ7XFxuICAgICAgfVxcblxcbiAgICAgICY6OmJlZm9yZSB7XFxuICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xcbiAgICAgICAgY29udGVudDogJyc7XFxuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XFxuICAgICAgfVxcbiAgICB9XFxuXFxuICAgICZbZGF0YS1wb3BwZXItcGxhY2VtZW50Xj0ndG9wJ10gPiAudG9vbHRpcEFycm93IHtcXG4gICAgICBib3R0b206IC00cHg7XFxuICAgIH1cXG4gICAgXFxuICAgICZbZGF0YS1wb3BwZXItcGxhY2VtZW50Xj0nYm90dG9tJ10gPiAudG9vbHRpcEFycm93IHtcXG4gICAgICB0b3A6IC00cHg7XFxuICAgIH1cXG4gICAgXFxuICAgICZbZGF0YS1wb3BwZXItcGxhY2VtZW50Xj0nbGVmdCddID4gLnRvb2x0aXBBcnJvdyB7XFxuICAgICAgcmlnaHQ6IC00cHg7XFxuICAgIH1cXG4gICAgXFxuICAgICZbZGF0YS1wb3BwZXItcGxhY2VtZW50Xj0ncmlnaHQnXSA+IC50b29sdGlwQXJyb3cge1xcbiAgICAgIGxlZnQ6IC00cHg7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5tb250aHNXcmFwcGVyIHtcXG4gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAtbXMtZmxleC13cmFwOiB3cmFwO1xcbiAgICBmbGV4LXdyYXA6IHdyYXA7XFxuICAgIGdhcDogMmVtO1xcbiAgfVxcblxcbiAgLm1DZWxsIHtcXG4gICAgZm9udC1zaXplOiAwLjg3NWVtO1xcbiAgICAtd2Via2l0LWJveC1mbGV4OiAxO1xcbiAgICAtbXMtZmxleDogMSAxIDI1JTtcXG4gICAgZmxleDogMSAxIDI1JTtcXG5cXG4gICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA5OTBweCkge1xcbiAgICAgIC13ZWJraXQtYm94LWZsZXg6IDE7XFxuICAgICAgLW1zLWZsZXg6IDEgMSAxMDAlO1xcbiAgICAgIGZsZXg6IDEgMSAxMDAlO1xcbiAgICB9XFxuICB9XFxuXFxuICAubW9udGgge1xcbiAgICBib3JkZXItY29sbGFwc2U6IHNlcGFyYXRlO1xcbiAgICBib3JkZXItc3BhY2luZzogMCAwLjJlbTtcXG4gICAgcGFkZGluZzogMDtcXG4gICAgbWFyZ2luOiAwO1xcbiAgICB3aWR0aDogMTAwJTtcXG4gICAgXFxuICB9XFxuXFxuICAudGFibGVIZWFkZXIsXFxuICAuYm9keSB7XFxuICAgIG1hcmdpbjogMDtcXG4gIH1cXG5cXG4gIC50aCB7XFxuICAgIGZvbnQtc2l6ZTogMC44NWVtO1xcbiAgICBjb2xvcjogJHRoLWNvbG9yO1xcbiAgICBoZWlnaHQ6IDI1cHg7XFxuICAgIHdpZHRoOiAkY2VsbC13aWR0aDtcXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgfVxcblxcbiAgLmNlbGwge1xcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICAgIHBhZGRpbmc6IDA7XFxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gICAgYm9yZGVyOiAwO1xcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xcbiAgICBjb2xvcjogJGNlbGwtY29sb3I7XFxuICAgIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7XFxuICAgIG92ZXJmbG93OiBoaWRkZW47XFxuICAgIHdpZHRoOiAkY2VsbC13aWR0aDtcXG5cXG4gICAgJi50b2RheSB7XFxuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5jbnQge1xcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyO1xcbiAgICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7XFxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyO1xcbiAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyO1xcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICB6LWluZGV4OiAxO1xcbiAgICBmb250LXNpemU6IDFlbTtcXG4gICAgZm9udC13ZWlnaHQ6IGluaGVyaXQ7XFxuXFxuICAgICY6OmFmdGVyIHtcXG4gICAgY29udGVudDogJyc7XFxuICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICBtYXJnaW4tdG9wOiAxMDAlO1xcbiAgICB9XFxuICB9XFxuXFxuICAuaW5mbyB7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgYm90dG9tOiAwO1xcbiAgICBsZWZ0OiAwO1xcbiAgICBmb250LXNpemU6IDAuNjVlbTtcXG4gICAgcGFkZGluZzogMXB4IDNweDtcXG4gICAgY29sb3I6ICRpbmZvLWNvbG9yO1xcbiAgICByaWdodDogMDtcXG5cXG4gICAgPiBzcGFuIHtcXG4gICAgICBkaXNwbGF5OiBibG9jaztcXG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICAgIH1cXG4gIH1cXG59XFxuXFxuLmZvY3VzLFxcbi5kaXNhYmxlZCxcXG4uc2VsZWN0ZWQsXFxuLnJldmVyc2VkLFxcbi5kaXJlY3QsXFxuLnNlbGVjdGluZ1JldmVyc2VkLFxcbi5zZWxlY3RpbmdEaXJlY3QsXFxuLmFjdGlvbnNFbmFibGVkLFxcbi5oaWdobGlnaHRlZCxcXG4uaW52YWxpZCB7XFxuICBjb2xvcjogaW5oZXJpdDtcXG59XFxuXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuICBjZWxsIGhvdmVyIGN1cnNvcnNcXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG5cXG4uY2FsZW5kYXIge1xcbiAgLy8gY3Vyc29yIHBvaW50ZXIgaWYgY2FsZW5kYXIgaXMgc2VsZWN0YWJsZVxcbiAgJltkYXRhLXNlbGVjdGFibGU9XFxcInRydWVcXFwiXSAuY2VsbCAqIHtcXG4gICAgY3Vyc29yOiBwb2ludGVyO1xcbiAgfVxcbn1cXG5cXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG5cXG4gICAgYnV0dG9uc1xcblxcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi5jYWxlbmRhciB7XFxuXFxuICAuZm9yd2FyZCxcXG4gIC5iYWNrIHtcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICB0b3A6IDA7XFxuICAgIGxlZnQ6IDA7XFxuICAgIGhlaWdodDogMnJlbTtcXG4gICAgd2lkdGg6IDIzcHg7XFxuICAgIGZpbGw6ICRidG4tZmlsbDtcXG4gICAgcGFkZGluZzogMDtcXG4gICAgYm9yZGVyLXJhZGl1czogMXB4O1xcbiAgICBjdXJzb3I6IHBvaW50ZXI7XFxuICAgIHotaW5kZXg6IDI7XFxuXFxuICAgIHN2ZyB7XFxuICAgIGhlaWdodDogaW5oZXJpdDtcXG4gICAgd2lkdGg6IGluaGVyaXQ7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5mb3J3YXJkIHtcXG4gICAgcmlnaHQ6IDA7XFxuICAgIGxlZnQ6IGF1dG87XFxuICB9XFxuXFxuICAuZm9yd2FyZDphY3RpdmUsXFxuICAuZm9yd2FyZDpmb2N1cyxcXG4gIC5iYWNrOmFjdGl2ZSxcXG4gIC5iYWNrOmZvY3VzIHtcXG4gICAgb3V0bGluZTogbm9uZTtcXG4gIH1cXG5cXG4gIC5mb3J3YXJkOmhvdmVyLFxcbiAgLmJhY2s6aG92ZXIge1xcbiAgICBmaWxsOiAkYnRuLWZpbGwtaG92ZXI7XFxuICB9XFxuXFxuICAuZm9yd2FyZFtkaXNhYmxlZF0sXFxuICAuZm9yd2FyZFtkaXNhYmxlZF06aG92ZXIsXFxuICAuYmFja1tkaXNhYmxlZF0sXFxuICAuYmFja1tkaXNhYmxlZF06aG92ZXIge1xcbiAgICBvcGFjaXR5OiAwLjU7XFxuICAgIGN1cnNvcjogZGVmYXVsdDtcXG4gICAgZmlsbDogJGJ0bi1maWxsO1xcbiAgfVxcbn1cXG5cIixcIi8vLy9cXG4vLy8gSGVscGVyIGZ1bmN0aW9uIHRvIGVhc2lseSB1c2UgYW4gU1ZHIGlubGluZSBpbiBDU1NcXG4vLy8gd2l0aG91dCBlbmNvZGluZyBpdCB0byBiYXNlNjQsIHNhdmluZyBieXRlcy5cXG4vLy8gSXQgYWxzbyBoZWxwcyB3aXRoIGJyb3dzZXIgc3VwcG9ydC5cXG4vLy8vXFxuXFxuLy8vIEEgc21hbGwgZnVuY3Rpb24gYWxsb3dpbmcgc2tpcHBpbmcgYmFzZTY0IGVuY29kaW5nXFxuLy8vIGFuZCBzaW1wbHkgcGFzdGluZyB0aGUgU1ZHIG1hcmt1cCByaWdodCBpbiB0aGUgQ1NTLlxcbi8vLyBAYXV0aG9yIEpha29iIEVyaWtzZW5cXG4vLy8gQGxpbmsgaHR0cDovL2NvZGVwZW4uaW8vamFrb2ItZS9wZW4vZG9Nb01MXFxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkc3ZnIC0gU1ZHIGltYWdlIHRvIGVuY29kZVxcbi8vLyBAcmV0dXJuIHtTdHJpbmd9IC0gRW5jb2RlZCBTVkcgZGF0YSB1cmlcXG5AZnVuY3Rpb24gc3ZnLXVyaSgkc3ZnKSB7XFxuICAgICRlbmNvZGVkOiAnJztcXG4gICAgJHNsaWNlOiAyMDAwO1xcbiAgICAkaW5kZXg6IDA7XFxuICAgICRsb29wczogY2VpbChzdHItbGVuZ3RoKCRzdmcpIC8gJHNsaWNlKTtcXG5cXG4gICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkbG9vcHMge1xcbiAgICAgICAgJGNodW5rOiBzdHItc2xpY2UoJHN2ZywgJGluZGV4LCAkaW5kZXggKyAkc2xpY2UgLSAxKTtcXG4gICAgICAgICRjaHVuazogc3RyLXJlcGxhY2UoJGNodW5rLCAnXFxcIicsIFxcXCInXFxcIik7XFxuICAgICAgICAkY2h1bms6IHN0ci1yZXBsYWNlKCRjaHVuaywgJzwnLCAnJTNDJyk7XFxuICAgICAgICAkY2h1bms6IHN0ci1yZXBsYWNlKCRjaHVuaywgJz4nLCAnJTNFJyk7XFxuICAgICAgICAkY2h1bms6IHN0ci1yZXBsYWNlKCRjaHVuaywgJyYnLCAnJTI2Jyk7XFxuICAgICAgICAkY2h1bms6IHN0ci1yZXBsYWNlKCRjaHVuaywgJyMnLCAnJTIzJyk7XFxuICAgICAgICAkZW5jb2RlZDogI3skZW5jb2RlZH0jeyRjaHVua307XFxuICAgICAgICAkaW5kZXg6ICRpbmRleCArICRzbGljZTtcXG4gICAgfVxcblxcbiAgICBAcmV0dXJuIHVybChcXFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwjeyRlbmNvZGVkfVxcXCIpO1xcbn1cXG5cXG4vLy8gUmVwbGFjZSBgJHNlYXJjaGAgd2l0aCBgJHJlcGxhY2VgIGluIGAkc3RyaW5nYFxcbi8vLyBAYXV0aG9yIEh1Z28gR2lyYXVkZWxcXG4vLy8gQGxpbmsgaHR0cDovL3Nhc3NtZWlzdGVyLmNvbS9naXN0LzFiNGYyZGE1NTI3ODMwMDg4ZTRkXFxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkc3RyaW5nIC0gSW5pdGlhbCBzdHJpbmdcXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRzZWFyY2ggLSBTdWJzdHJpbmcgdG8gcmVwbGFjZVxcbi8vLyBAcGFyYW0ge1N0cmluZ30gJHJlcGxhY2UgKCcnKSAtIE5ldyB2YWx1ZVxcbi8vLyBAcmV0dXJuIHtTdHJpbmd9IC0gVXBkYXRlZCBzdHJpbmdcXG5AZnVuY3Rpb24gc3RyLXJlcGxhY2UoJHN0cmluZywgJHNlYXJjaCwgJHJlcGxhY2U6ICcnKSB7XFxuICAgICRpbmRleDogc3RyLWluZGV4KCRzdHJpbmcsICRzZWFyY2gpO1xcblxcbiAgICBAaWYgJGluZGV4IHtcXG4gICAgICAgIEByZXR1cm4gc3RyLXNsaWNlKCRzdHJpbmcsIDEsICRpbmRleCAtIDEpICsgJHJlcGxhY2UgKyBzdHItcmVwbGFjZShzdHItc2xpY2UoJHN0cmluZywgJGluZGV4ICsgc3RyLWxlbmd0aCgkc2VhcmNoKSksICRzZWFyY2gsICRyZXBsYWNlKTtcXG4gICAgfVxcblxcbiAgICBAcmV0dXJuICRzdHJpbmc7XFxufVxcblwiLFwiJGljb24tc3Bpbm5lci1zdmc6ICAgICAgc3ZnLXVyaShcXFwiPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAzMiAzMC45Nyc+PHBhdGggZD0nTTMyLDE1LjQ4YTE2LjUyLDE2LjUyLDAsMCwxLTEuMzcsNi4yOCwxNi4zNSwxNi4zNSwwLDAsMS05LDguNjMsMTUuODcsMTUuODcsMCwwLDEtMTcuMy0zLjc4QTE1LjQzLDE1LjQzLDAsMCwxLDQuNzIsNC43MiwxNSwxNSwwLDAsMSwxNS40OS41MmExNC43NiwxNC43NiwwLDAsMSwxMC40LDQuNTZBMTQuNzcsMTQuNzcsMCwwLDEsMjksOS45YTE0LjQ1LDE0LjQ1LDAsMCwxLC44NSwzLjM1aC4xM0EyLjA2LDIuMDYsMCwwLDEsMzIsMTUuMzFhLjkxLjkxLDAsMCwxLDAsLjE3Wk0yOC43MiwxMGExNC4yNywxNC4yNywwLDAsMC0zLjItNC41NSwxNCwxNCwwLDAsMC0xMC0zLjlBMTMuNzIsMTMuNzIsMCwwLDAsMywxMC4zYTEzLjQzLDEzLjQzLDAsMCwwLC4yNCwxMC4yNywxMy4wNSwxMy4wNSwwLDAsMCwxMi4yOCw3LjgyLDEyLjkyLDEyLjkyLDAsMCwwLDQuODgtMS4xLDEyLjY1LDEyLjY1LDAsMCwwLDQuMDYtMi44NywxMi40OCwxMi40OCwwLDAsMCwyLjYyLTQuMTUsMTIuMjQsMTIuMjQsMCwwLDAsLjgyLTQuNzloMGEuOTEuOTEsMCwwLDEsMC0uMTcsMi4wNywyLjA3LDAsMCwxLDEuODQtMi4wNSwxNC4yNywxNC4yNywwLDAsMC0xLTMuMjZaJyB0cmFuc2Zvcm09J3RyYW5zbGF0ZSgwIC0wLjUxKScvPjwvc3ZnPlxcXCIpO1xcblxcbiRicmVha3BvaW50LXhzOiAgICAgICAgIDkwMHB4O1xcblxcbiR0cmFuc2l0aW9uOiAgICAgICAgICAgIG9wYWNpdHkgMC4yNXMgZWFzZS1pbi1vdXQ7XFxuXFxuLy8gdG9vbHRpcFxcblxcbiR0b29sdGlwLWJnLWNvbG9yOiAgICAgIHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLXRvb2x0aXAtYmctY29sb3IsICMzMzMpO1xcbiR0b29sdGlwLWNvbG9yOiAgICAgICAgIHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLXRvb2x0aXAtY29sb3IsICNmZmYpO1xcblxcbi8vIGNhbGVuZGFyXFxuXFxuJGNhbGVuZGFyLWJnLWNvbG9yOiAgICAgI2ZmZjtcXG5cXG4vLyBjYWxlbmRhciBjZWxsc1xcblxcbiRjZWxsLXdpZHRoOiAgICAgICAgICAgIDMwcHg7XFxuXFxuJGNlbGwtY29sb3I6ICAgICAgICAgICAgIzQ0NDQ0NDtcXG5cXG4kZGlzYWJsZWQtYmctY29sb3I6ICAgICB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1kaXNhYmxlZC1iZy1jb2xvciwgI2YwZjBmMCk7XFxuJGRpc2FibGVkLWNvbG9yOiAgICAgICAgdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItZGlzYWJsZWQtY29sb3IsICNiZmJmYmYpO1xcblxcbiRoaWdobGlnaHRlZC1iZy1jb2xvcjogIHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWhpZ2hsaWdodGVkLWJnLWNvbG9yLCBsaWdodGVuKCM1Nzg0RjUsIDIwJSkpO1xcbiRoaWdobGlnaHRlZC1jb2xvcjogICAgIHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWhpZ2hsaWdodGVkLWNvbG9yLCBkYXJrZW4oJGNlbGwtY29sb3IsIDUlKSk7XFxuXFxuJGludmFsaWQtYmctY29sb3I6ICAgICAgdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItaW52YWxpZC1iZy1jb2xvciwgZGFya2VuKCNmMGYwZjAsICA1JSkpO1xcbiRpbnZhbGlkLWNvbG9yOiAgICAgICAgIHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWludmFsaWQtY29sb3IsIGRhcmtlbigjYmZiZmJmLCA1JSkpO1xcblxcbi8vIGNhbGVuZGFyIHRhYmxlXFxuXFxuJGluZm8tY29sb3I6ICAgICAgICAgICAgcmdiYSg2MCwgNjAsIDYwLCAwLjUpO1xcblxcbiR0aC1ib3JkZXItYm90dG9tOiAgICAgICNjYmNiY2I7XFxuJHRoLWNvbG9yOiAgICAgICAgICAgICAgI2FhYWFhYTtcXG5cXG4vLyBmb3JtXFxuXFxuJGJ0bi1maWxsOiAgICAgICAgICAgICAgJGNlbGwtY29sb3I7XFxuJGJ0bi1ib3JkZXI6ICAgICAgICAgICAgJHRoLWJvcmRlci1ib3R0b207XFxuJGJ0bi1maWxsLWhvdmVyOiAgICAgICAgIzM4OTVkOTtcXG5cIixcIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcblxcbiAgICBkcm9wZG93blxcblxcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcblxcbi5jYWxlbmRhci5kcm9wQmFzaWMge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgZGlzcGxheTogbm9uZTtcXG4gIG1heC13aWR0aDogMTAwJTtcXG4gIGJveC1zaGFkb3c6IDFweCA1cHggOXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMik7XFxuICBib3JkZXI6IDFweCBzb2xpZCAjZTBlMGUwO1xcbiAgYmFja2dyb3VuZDogI2ZmZjtcXG4gIG1hcmdpbjogMDtcXG4gIHBhZGRpbmc6IDFlbTtcXG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xcbiAgbGluZS1oZWlnaHQ6IDEuNWVtO1xcbiAgei1pbmRleDogMTA7XFxuXFxuICAmLnZpc2libGUge1xcbiAgICBkaXNwbGF5OiBibG9jaztcXG4gIH1cXG5cXG4gIC5jYXB0aW9uIHtcXG4gICAgbWFyZ2luLWJvdHRvbTogLjdlbTtcXG4gIH1cXG5cXG4gIC5mb3J3YXJkLFxcbiAgLmJhY2sge1xcbiAgICB0b3A6IDFlbTtcXG4gICAgbGVmdDogMWVtO1xcbiAgfVxcblxcbiAgLmZvcndhcmQge1xcbiAgICBsZWZ0OiBhdXRvO1xcbiAgICByaWdodDogMWVtO1xcbiAgfVxcbn1cXG5cIixcIi5jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0ge1xcbiAgLmNlbGwge1xcbiAgICAmOmZpcnN0LWNoaWxkIHtcXG4gICAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA0cHg7XFxuICAgICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNHB4O1xcbiAgICB9XFxuXFxuICAgICY6bGFzdC1jaGlsZCB7XFxuICAgICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDRweDtcXG4gICAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNHB4O1xcbiAgICB9XFxuXFxuICAgICY6OmJlZm9yZSxcXG4gICAgJjo6YWZ0ZXIge1xcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgICBkaXNwbGF5OiBibG9jaztcXG4gICAgICB3aWR0aDogMTAwJTtcXG4gICAgICBtYXJnaW46IDA7XFxuICAgICAgY29udGVudDogJyc7XFxuICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNrZXcoLTMwZGVnKTtcXG4gICAgICAtbXMtdHJhbnNmb3JtOiBza2V3KC0zMGRlZyk7XFxuICAgICAgdHJhbnNmb3JtOiBza2V3KC0zMGRlZyk7XFxuICAgICAgYm9yZGVyLXJhZGl1czogNnB4O1xcbiAgICAgIHotaW5kZXg6IDA7XFxuXFxuICAgICAgLy8gZml4IGJsdXJyeSBza2V3XFxuICAgICAgaGVpZ2h0OiBjYWxjKDEwMCUgKyAycHgpO1xcbiAgICAgIHRvcDogLTFweDtcXG4gICAgfVxcblxcbiAgICAmOjpiZWZvcmUge1xcbiAgICAgIGxlZnQ6IC01NSU7XFxuICAgIH1cXG5cXG4gICAgJjo6YWZ0ZXIge1xcbiAgICAgIGxlZnQ6IDU1JTtcXG4gICAgfVxcbiAgfVxcbn1cXG5cXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG5cXG4gICAgc2VsZWN0aW9ucywgbGVmdCAtIGNlbnRlciAtIHJpZ2h0XFxuXFxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuICBjZWxscyBkaXNhYmxlZFxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcblxcbi5jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0ge1xcbiAgW2RhdGEtZGlzYWJsZWQ9XFxcImxlZnRcXFwiXTo6YWZ0ZXIge1xcbiAgICBiYWNrZ3JvdW5kOiAkZGlzYWJsZWQtYmctY29sb3I7XFxuICB9XFxuXFxuICBbZGF0YS1kaXNhYmxlZD1cXFwiY2VudGVyXFxcIl0ge1xcbiAgICBiYWNrZ3JvdW5kOiAkZGlzYWJsZWQtYmctY29sb3I7XFxuICAgIGNvbG9yOiAkZGlzYWJsZWQtY29sb3I7XFxuXFxuICAgICY6OmJlZm9yZSxcXG4gICAgJjo6YWZ0ZXIge1xcbiAgICAgIGRpc3BsYXk6IG5vbmU7XFxuICAgICAgYmFja2dyb3VuZDogJGRpc2FibGVkLWJnLWNvbG9yO1xcbiAgICB9XFxuICB9XFxuXFxuICBbZGF0YS1kaXNhYmxlZD1cXFwicmlnaHRcXFwiXTo6YmVmb3JlIHtcXG4gICAgYmFja2dyb3VuZDogJGRpc2FibGVkLWJnLWNvbG9yO1xcbiAgfVxcbn1cXG5cXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4gIGNlbGxzIGhpZ2hsaWdodGVkXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuXFxuLmNhbGVuZGFyW2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSB7XFxuICBbZGF0YS1oaWdobGlnaHRlZD1cXFwibGVmdFxcXCJdOjphZnRlciB7XFxuICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICBiYWNrZ3JvdW5kOiAkaGlnaGxpZ2h0ZWQtYmctY29sb3I7XFxuICB9XFxuXFxuICBbZGF0YS1oaWdobGlnaHRlZD1cXFwiY2VudGVyXFxcIl0ge1xcbiAgICBiYWNrZ3JvdW5kOiAkaGlnaGxpZ2h0ZWQtYmctY29sb3I7XFxuICAgIGNvbG9yOiAkaGlnaGxpZ2h0ZWQtY29sb3I7XFxuXFxuICAgICY6OmJlZm9yZSxcXG4gICAgJjo6YWZ0ZXIge1xcbiAgICAgIGRpc3BsYXk6IG5vbmU7XFxuICAgICAgYmFja2dyb3VuZDogJGhpZ2hsaWdodGVkLWJnLWNvbG9yO1xcbiAgICB9XFxuICB9XFxuXFxuICBbZGF0YS1oaWdobGlnaHRlZD1cXFwicmlnaHRcXFwiXTo6YmVmb3JlIHtcXG4gICAgZGlzcGxheTogYmxvY2s7XFxuICAgIGJhY2tncm91bmQ6ICRoaWdobGlnaHRlZC1iZy1jb2xvcjtcXG4gIH1cXG59XFxuXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuICBjZWxscyBpbnZhbGlkXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuXFxuLmNhbGVuZGFyW2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSB7XFxuICBbZGF0YS1pbnZhbGlkPVxcXCJsZWZ0XFxcIl0ge1xcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xcblxcbiAgICAmOjpiZWZvcmUge1xcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICB9XFxuXFxuICAgICY6OmFmdGVyIHtcXG4gICAgICBkaXNwbGF5OiBibG9jaztcXG4gICAgICBiYWNrZ3JvdW5kOiAkaW52YWxpZC1iZy1jb2xvcjtcXG4gICAgfVxcbiAgfVxcblxcbiAgW2RhdGEtaW52YWxpZD1cXFwiY2VudGVyXFxcIl0ge1xcbiAgICBiYWNrZ3JvdW5kOiAkaW52YWxpZC1iZy1jb2xvcjtcXG4gICAgY29sb3I6ICRpbnZhbGlkLWNvbG9yO1xcbiAgXFxuICAgICY6OmJlZm9yZSxcXG4gICAgJjo6YWZ0ZXIge1xcbiAgICAgIGRpc3BsYXk6IG5vbmU7XFxuICAgICAgYmFja2dyb3VuZDogJGludmFsaWQtYmctY29sb3I7XFxuICAgIH1cXG4gIH1cXG5cXG4gIFtkYXRhLWludmFsaWQ9XFxcInJpZ2h0XFxcIl0ge1xcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xcblxcbiAgICAmOjpiZWZvcmUge1xcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICAgIGJhY2tncm91bmQ6ICRpbnZhbGlkLWJnLWNvbG9yO1xcbiAgICB9XFxuXFxuICAgICY6OmFmdGVyIHtcXG4gICAgICBkaXNwbGF5OiBibG9jaztcXG4gICAgfVxcbiAgfVxcbn1cXG5cXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4gIGNlbGwgaG92ZXIgZGlyZWN0XFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuXFxuLmRpcmVjdFtkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0ge1xcbiAgLy8gY2VsbCBob3ZlcmVkIHdoZW4gc2VsZWN0aW5nIGxlZnQgdG8gcmlnaHRcXG4gIFtkYXRhLWhvdmVyZWRdIHtcXG4gICAgYmFja2dyb3VuZDogbm9uZTtcXG5cXG4gICAgJjo6YmVmb3JlIHtcXG4gICAgICBkaXNwbGF5OiBibG9jaztcXG4gICAgfVxcblxcbiAgICAmOjphZnRlciB7XFxuICAgICAgZGlzcGxheTogYmxvY2s7XFxuICAgICAgYmFja2dyb3VuZDogJGhpZ2hsaWdodGVkLWJnLWNvbG9yO1xcbiAgICB9XFxuICB9XFxuXFxuICBbZGF0YS1ob3ZlcmVkLW9mZnNldF0ge1xcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xcblxcbiAgICAmOjpiZWZvcmUge1xcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICAgIGJhY2tncm91bmQ6ICRoaWdobGlnaHRlZC1iZy1jb2xvcjtcXG4gICAgfVxcblxcbiAgICAmOjphZnRlciB7XFxuICAgICAgZGlzcGxheTogYmxvY2s7XFxuICAgIH1cXG4gIH1cXG59XFxuXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuICBjZWxsIGhvdmVyIHJldmVyc2VkXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuXFxuLnJldmVyc2VkW2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSB7XFxuICAvLyB3aGVuIHNlbGVjdGluZyByaWdodCB0byBsZWZ0XFxuICBbZGF0YS1ob3ZlcmVkXSB7XFxuICAgIGJhY2tncm91bmQ6IG5vbmU7XFxuXFxuICAgICY6OmJlZm9yZSB7XFxuICAgICAgZGlzcGxheTogYmxvY2s7XFxuICAgICAgYmFja2dyb3VuZDogJGhpZ2hsaWdodGVkLWJnLWNvbG9yO1xcbiAgICB9XFxuXFxuICAgICY6OmFmdGVyIHtcXG4gICAgICBkaXNwbGF5OiBibG9jaztcXG4gICAgfVxcbiAgfVxcblxcbiAgW2RhdGEtaG92ZXJlZC1vZmZzZXRdIHtcXG4gICAgYmFja2dyb3VuZDogbm9uZTtcXG5cXG4gICAgJjo6YmVmb3JlIHtcXG4gICAgICBkaXNwbGF5OiBibG9jaztcXG4gICAgfVxcblxcbiAgICAmOjphZnRlciB7XFxuICAgICAgZGlzcGxheTogYmxvY2s7XFxuICAgICAgYmFja2dyb3VuZDogJGhpZ2hsaWdodGVkLWJnLWNvbG9yO1xcbiAgICB9XFxuICB9XFxufVxcblwiLFwiJGNlbGwtYm9yZGVyLXJhZGl1czogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItY2VsbC1ib3JkZXItcmFkaXVzLCA2cHgpO1xcbiRjZWxsLWJnLW9wYWNpdHk6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWNlbGwtYmctb3BhY2l0eSwgLjUpO1xcblxcbi5jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJiYXNpY1xcXCJdIHtcXG4gIC5jZWxsIHtcXG4gICAgJjo6YmVmb3JlLFxcbiAgICAmOjphZnRlciB7XFxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICAgIHdpZHRoOiAxMDAlO1xcbiAgICAgIGhlaWdodDogMTAwJTtcXG4gICAgICB0b3A6IDA7XFxuICAgICAgbWFyZ2luOiAwO1xcbiAgICAgIGNvbnRlbnQ6ICcnO1xcbiAgICAgIHotaW5kZXg6IDA7XFxuICAgIH1cXG4gIH1cXG59XFxuXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuXFxuICAgIHNlbGVjdGlvbnMsIGxlZnQgLSBjZW50ZXIgLSByaWdodFxcblxcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcblxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiAgY2VsbHMgZGlzYWJsZWRcXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG5cXG4uY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwiYmFzaWNcXFwiXSB7XFxuICAvLyBbZGF0YS1kaXNhYmxlZD1cXFwibGVmdFxcXCJdIHtcXG4gIC8vICAgY29sb3I6ICRkaXNhYmxlZC1jb2xvcjtcXG4gIC8vIH1cXG5cXG4gIFtkYXRhLWRpc2FibGVkPVxcXCJjZW50ZXJcXFwiXSB7XFxuICAgIHRleHQtZGVjb3JhdGlvbjogbGluZS10aHJvdWdoO1xcbiAgICBjb2xvcjogJGRpc2FibGVkLWNvbG9yO1xcbiAgfVxcbn1cXG5cXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4gIGNlbGxzIGhpZ2hsaWdodGVkXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuXFxuLmNhbGVuZGFyW2RhdGEtdGhlbWU9XFxcImJhc2ljXFxcIl0ge1xcbiAgW2RhdGEtaGlnaGxpZ2h0ZWQ9XFxcImxlZnRcXFwiXSB7XFxuICAgIGNvbG9yOiAkaGlnaGxpZ2h0ZWQtY29sb3I7XFxuXFxuICAgICY6OmJlZm9yZSB7XFxuICAgICAgYmFja2dyb3VuZDogJGhpZ2hsaWdodGVkLWJnLWNvbG9yO1xcbiAgICAgIG9wYWNpdHk6ICRjZWxsLWJnLW9wYWNpdHk7XFxuICAgICAgd2lkdGg6IDUwJTtcXG4gICAgICBsZWZ0OiA1MCU7XFxuICAgIH1cXG5cXG4gICAgJjo6YWZ0ZXIge1xcbiAgICAgIGJhY2tncm91bmQ6ICRoaWdobGlnaHRlZC1iZy1jb2xvcjtcXG4gICAgICBib3JkZXItcmFkaXVzOiAkY2VsbC1ib3JkZXItcmFkaXVzO1xcbiAgICB9XFxuICB9XFxuXFxuICBbZGF0YS1oaWdobGlnaHRlZD1cXFwiY2VudGVyXFxcIl0ge1xcbiAgICBjb2xvcjogJGhpZ2hsaWdodGVkLWNvbG9yO1xcblxcbiAgICAmOjpiZWZvcmUge1xcbiAgICAgIGJhY2tncm91bmQ6ICRoaWdobGlnaHRlZC1iZy1jb2xvcjtcXG4gICAgICBvcGFjaXR5OiAkY2VsbC1iZy1vcGFjaXR5O1xcbiAgICB9XFxuICB9XFxuXFxuICBbZGF0YS1oaWdobGlnaHRlZD1cXFwicmlnaHRcXFwiXSB7XFxuICAgIGNvbG9yOiAkaGlnaGxpZ2h0ZWQtY29sb3I7XFxuXFxuICAgICY6OmJlZm9yZSB7XFxuICAgICAgYmFja2dyb3VuZDogJGhpZ2hsaWdodGVkLWJnLWNvbG9yO1xcbiAgICAgIG9wYWNpdHk6ICRjZWxsLWJnLW9wYWNpdHk7XFxuICAgICAgd2lkdGg6IDUwJTtcXG4gICAgICByaWdodDogNTAlO1xcbiAgICB9XFxuXFxuICAgICY6OmFmdGVyIHtcXG4gICAgICBiYWNrZ3JvdW5kOiAkaGlnaGxpZ2h0ZWQtYmctY29sb3I7XFxuICAgICAgYm9yZGVyLXJhZGl1czogJGNlbGwtYm9yZGVyLXJhZGl1cztcXG4gICAgfVxcbiAgfVxcbn1cXG5cXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4gIGNlbGxzIGludmFsaWRcXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG5cXG4uY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwiYmFzaWNcXFwiXSB7XFxuICBbZGF0YS1pbnZhbGlkPVxcXCJsZWZ0XFxcIl0ge1xcbiAgICBjb2xvcjogJGludmFsaWQtY29sb3I7XFxuXFxuICAgICY6OmJlZm9yZSB7XFxuICAgICAgYmFja2dyb3VuZDogJGludmFsaWQtYmctY29sb3I7XFxuICAgICAgb3BhY2l0eTogJGNlbGwtYmctb3BhY2l0eTtcXG4gICAgICB3aWR0aDogNTAlO1xcbiAgICAgIGxlZnQ6IDUwJTtcXG4gICAgfVxcblxcbiAgICAmOjphZnRlciB7XFxuICAgICAgYmFja2dyb3VuZDogJGludmFsaWQtYmctY29sb3I7XFxuICAgICAgYm9yZGVyLXJhZGl1czogJGNlbGwtYm9yZGVyLXJhZGl1cztcXG4gICAgfVxcbiAgfVxcblxcbiAgW2RhdGEtaW52YWxpZD1cXFwiY2VudGVyXFxcIl0ge1xcbiAgICBjb2xvcjogJGludmFsaWQtY29sb3I7XFxuXFxuICAgICY6OmJlZm9yZSB7XFxuICAgICAgYmFja2dyb3VuZDogJGludmFsaWQtYmctY29sb3I7XFxuICAgICAgb3BhY2l0eTogJGNlbGwtYmctb3BhY2l0eTtcXG4gICAgfVxcbiAgfVxcblxcbiAgW2RhdGEtaW52YWxpZD1cXFwicmlnaHRcXFwiXSB7XFxuICAgIGNvbG9yOiAkaW52YWxpZC1jb2xvcjtcXG5cXG4gICAgJjo6YmVmb3JlIHtcXG4gICAgICBiYWNrZ3JvdW5kOiAkaW52YWxpZC1iZy1jb2xvcjtcXG4gICAgICBvcGFjaXR5OiAkY2VsbC1iZy1vcGFjaXR5O1xcbiAgICAgIHdpZHRoOiA1MCU7XFxuICAgICAgcmlnaHQ6IDUwJTtcXG4gICAgfVxcblxcbiAgICAmOjphZnRlciB7XFxuICAgICAgYmFja2dyb3VuZDogJGludmFsaWQtYmctY29sb3I7XFxuICAgICAgYm9yZGVyLXJhZGl1czogJGNlbGwtYm9yZGVyLXJhZGl1cztcXG4gICAgfVxcbiAgfVxcbn1cXG5cXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4gIGNlbGwgaG92ZXJcXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG5cXG4uY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwiYmFzaWNcXFwiXSB7XFxuICBbZGF0YS1ob3ZlcmVkXTpub3QoW2RhdGEtZGlzYWJsZWQ9XFxcImNlbnRlclxcXCJdKSB7XFxuICAgIGNvbG9yOiAkaGlnaGxpZ2h0ZWQtY29sb3I7XFxuXFxuICAgICY6OmFmdGVyIHtcXG4gICAgICBiYWNrZ3JvdW5kOiAkaGlnaGxpZ2h0ZWQtYmctY29sb3I7XFxuICAgICAgYm9yZGVyLXJhZGl1czogJGNlbGwtYm9yZGVyLXJhZGl1cztcXG4gICAgfVxcbiAgfVxcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLmxvY2FscyA9IHtcblx0XCJjYWxlbmRhclwiOiBcIkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyXCIsXG5cdFwiYm9va2luZ3N5bmMtc3BpblwiOiBcIkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2Jvb2tpbmdzeW5jLXNwaW5cIixcblx0XCJsb2FkaW5nXCI6IFwiQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fbG9hZGluZ1wiLFxuXHRcImRyb3BCYXNpY1wiOiBcIkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2Ryb3BCYXNpY1wiLFxuXHRcInZpc2libGVcIjogXCJCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X192aXNpYmxlXCIsXG5cdFwiY2FwdGlvblwiOiBcIkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhcHRpb25cIixcblx0XCJmb3J3YXJkXCI6IFwiQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fZm9yd2FyZFwiLFxuXHRcImJhY2tcIjogXCJCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19iYWNrXCIsXG5cdFwiY2VsbFwiOiBcIkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NlbGxcIixcblx0XCJkaXJlY3RcIjogXCJCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19kaXJlY3RcIixcblx0XCJyZXZlcnNlZFwiOiBcIkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3JldmVyc2VkXCIsXG5cdFwidG9vbHRpcFwiOiBcIkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3Rvb2x0aXBcIixcblx0XCJ0b29sdGlwQXJyb3dcIjogXCJCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X190b29sdGlwQXJyb3dcIixcblx0XCJtb250aHNXcmFwcGVyXCI6IFwiQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fbW9udGhzV3JhcHBlclwiLFxuXHRcIm1DZWxsXCI6IFwiQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fbUNlbGxcIixcblx0XCJtb250aFwiOiBcIkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX21vbnRoXCIsXG5cdFwidGFibGVIZWFkZXJcIjogXCJCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X190YWJsZUhlYWRlclwiLFxuXHRcImJvZHlcIjogXCJCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19ib2R5XCIsXG5cdFwidGhcIjogXCJCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X190aFwiLFxuXHRcInRvZGF5XCI6IFwiQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fdG9kYXlcIixcblx0XCJjbnRcIjogXCJCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jbnRcIixcblx0XCJpbmZvXCI6IFwiQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9faW5mb1wiLFxuXHRcImZvY3VzXCI6IFwiQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fZm9jdXNcIixcblx0XCJkaXNhYmxlZFwiOiBcIkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2Rpc2FibGVkXCIsXG5cdFwic2VsZWN0ZWRcIjogXCJCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19zZWxlY3RlZFwiLFxuXHRcInNlbGVjdGluZ1JldmVyc2VkXCI6IFwiQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fc2VsZWN0aW5nUmV2ZXJzZWRcIixcblx0XCJzZWxlY3RpbmdEaXJlY3RcIjogXCJCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19zZWxlY3RpbmdEaXJlY3RcIixcblx0XCJhY3Rpb25zRW5hYmxlZFwiOiBcIkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2FjdGlvbnNFbmFibGVkXCIsXG5cdFwiaGlnaGxpZ2h0ZWRcIjogXCJCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19oaWdobGlnaHRlZFwiLFxuXHRcImludmFsaWRcIjogXCJCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19pbnZhbGlkXCJcbn07XG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBkaXYsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBzcGFuLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgYXBwbGV0LCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgb2JqZWN0LCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgaWZyYW1lLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgaDEsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBoMiwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGgzLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgaDQsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBoNSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGg2LCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgcCwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGJsb2NrcXVvdGUsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBwcmUsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBhLFxcbi5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBhYmJyLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgYWNyb255bSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGFkZHJlc3MsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBiaWcsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBjaXRlLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgY29kZSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGRlbCwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGRmbiwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGVtLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgaW1nLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgaW5zLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQga2JkLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgcSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHMsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBzYW1wLFxcbi5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBzbWFsbCwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHN0cmlrZSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHN0cm9uZywgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHN1YiwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHN1cCwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHR0LCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgdmFyLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgYiwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHUsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBpLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgY2VudGVyLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgZGwsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBkdCwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGRkLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgb2wsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCB1bCwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGxpLFxcbi5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBmaWVsZHNldCwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGZvcm0sIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBkaXYuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fZm9ybSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGxhYmVsLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgbGVnZW5kLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgdGFibGUsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBjYXB0aW9uLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgdGJvZHksIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCB0Zm9vdCwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHRoZWFkLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgdHIsXFxuLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHRoLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgdGQsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBhcnRpY2xlLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgYXNpZGUsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBjYW52YXMsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBkZXRhaWxzLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgZmlnY2FwdGlvbiwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGZpZ3VyZSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGZvb3RlciwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGhlYWRlciwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGhncm91cCxcXG4uQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgbWVudSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IG5hdiwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHNlY3Rpb24sIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBzdW1tYXJ5LCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgdGltZSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IG1hcmssIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBhdWRpbywgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHZpZGVvLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgYnV0dG9uLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgdGV4dGFyZWEsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBpbnB1dCwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19idXR0b24sIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fbGVnZW5kIHtcXG4gIGZvbnQtZmFtaWx5OiBcXFwiT3BlbiBzYW5zXFxcIiwgXFxcIkhlbHZldGljYSBOZXVlXFxcIiwgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjtcXG4gIGZvbnQtc2l6ZS1hZGp1c3Q6IG5vbmU7XFxuICBmb250LXNpemU6IDEwMCU7XFxuICBmb250LXN0eWxlOiBub3JtYWw7XFxuICBsZXR0ZXItc3BhY2luZzogbm9ybWFsO1xcbiAgZm9udC1zdHJldGNoOiBub3JtYWw7XFxuICBmb250LXZhcmlhbnQ6IG5vcm1hbDtcXG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XFxuICBmb250OiBub3JtYWwgbm9ybWFsIDEwMCUgXFxcIk9wZW4gc2Fuc1xcXCIsIFxcXCJIZWx2ZXRpY2EgTmV1ZVxcXCIsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7XFxuICB0ZXh0LWFsaWduOiBsZWZ0O1xcbiAgLW1vei10ZXh0LWFsaWduLWxhc3Q6IGluaXRpYWw7XFxuICB0ZXh0LWFsaWduLWxhc3Q6IGluaXRpYWw7XFxuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XFxuICAtd2Via2l0LXRleHQtZW1waGFzaXM6IG5vbmU7XFxuICB0ZXh0LWVtcGhhc2lzOiBub25lO1xcbiAgdGV4dC1oZWlnaHQ6IGF1dG87XFxuICB0ZXh0LWluZGVudDogMDtcXG4gIHRleHQtanVzdGlmeTogYXV0bztcXG4gIHRleHQtb3V0bGluZTogbm9uZTtcXG4gIHRleHQtc2hhZG93OiBub25lO1xcbiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XFxuICB0ZXh0LXdyYXA6IG5vcm1hbDtcXG4gIGFsaWdubWVudC1hZGp1c3Q6IGF1dG87XFxuICBhbGlnbm1lbnQtYmFzZWxpbmU6IGJhc2VsaW5lO1xcbiAgLXdlYmtpdC1hbmltYXRpb246IG5vbmUgMCBlYXNlIDAgMSBub3JtYWw7XFxuICBhbmltYXRpb246IG5vbmUgMCBlYXNlIDAgMSBub3JtYWw7XFxuICAtd2Via2l0LWFuaW1hdGlvbi1wbGF5LXN0YXRlOiBydW5uaW5nO1xcbiAgYW5pbWF0aW9uLXBsYXktc3RhdGU6IHJ1bm5pbmc7XFxuICBhcHBlYXJhbmNlOiBub3JtYWw7XFxuICBhemltdXRoOiBjZW50ZXI7XFxuICAtd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6IHZpc2libGU7XFxuICBiYWNrZmFjZS12aXNpYmlsaXR5OiB2aXNpYmxlO1xcbiAgYmFja2dyb3VuZDogbm9uZSAwIDAgYXV0byByZXBlYXQgc2Nyb2xsIHBhZGRpbmctYm94IHRyYW5zcGFyZW50O1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xcbiAgYmFzZWxpbmUtc2hpZnQ6IGJhc2VsaW5lO1xcbiAgYmluZGluZzogbm9uZTtcXG4gIGJsZWVkOiA2cHQ7XFxuICBib29rbWFyay1sYWJlbDogY29udGVudCgpO1xcbiAgYm9va21hcmstbGV2ZWw6IG5vbmU7XFxuICBib29rbWFyay1zdGF0ZTogb3BlbjtcXG4gIGJvb2ttYXJrLXRhcmdldDogbm9uZTtcXG4gIGJvcmRlcjogMCBub25lIHRyYW5zcGFyZW50O1xcbiAgYm9yZGVyLXJhZGl1czogMDtcXG4gIGJvdHRvbTogYXV0bztcXG4gIGJveC1hbGlnbjogc3RyZXRjaDtcXG4gIC13ZWJraXQtYm94LWRlY29yYXRpb24tYnJlYWs6IHNsaWNlO1xcbiAgYm94LWRlY29yYXRpb24tYnJlYWs6IHNsaWNlO1xcbiAgYm94LWRpcmVjdGlvbjogbm9ybWFsO1xcbiAgZmxleDogMC4wO1xcbiAgZmxleC1ncm91cDogMTtcXG4gIGJveC1saW5lczogc2luZ2xlO1xcbiAgYm94LW9yZGluYWwtZ3JvdXA6IDE7XFxuICBib3gtb3JpZW50OiBpbmxpbmUtYXhpcztcXG4gIGJveC1wYWNrOiBzdGFydDtcXG4gIGJveC1zaGFkb3c6IG5vbmU7XFxuICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcXG4gIC13ZWJraXQtYnJlYWstYWZ0ZXI6IGF1dG87XFxuICAtbW96LWJyZWFrLWFmdGVyOiBhdXRvO1xcbiAgYnJlYWstYWZ0ZXI6IGF1dG87XFxuICAtd2Via2l0LWJyZWFrLWJlZm9yZTogYXV0bztcXG4gIC1tb3otYnJlYWstYmVmb3JlOiBhdXRvO1xcbiAgYnJlYWstYmVmb3JlOiBhdXRvO1xcbiAgLXdlYmtpdC1jb2x1bW4tYnJlYWstaW5zaWRlOiBhdXRvO1xcbiAgcGFnZS1icmVhay1pbnNpZGU6IGF1dG87XFxuICBicmVhay1pbnNpZGU6IGF1dG87XFxuICBjYXB0aW9uLXNpZGU6IHRvcDtcXG4gIGNsZWFyOiBub25lO1xcbiAgY2xpcDogYXV0bztcXG4gIGNvbG9yOiBpbmhlcml0O1xcbiAgY29sb3ItcHJvZmlsZTogYXV0bztcXG4gIC13ZWJraXQtY29sdW1uLWNvdW50OiBhdXRvO1xcbiAgLW1vei1jb2x1bW4tY291bnQ6IGF1dG87XFxuICBjb2x1bW4tY291bnQ6IGF1dG87XFxuICAtd2Via2l0LWNvbHVtbi1maWxsOiBiYWxhbmNlO1xcbiAgLW1vei1jb2x1bW4tZmlsbDogYmFsYW5jZTtcXG4gIGNvbHVtbi1maWxsOiBiYWxhbmNlO1xcbiAgLXdlYmtpdC1jb2x1bW4tZ2FwOiBub3JtYWw7XFxuICAtbW96LWNvbHVtbi1nYXA6IG5vcm1hbDtcXG4gIGNvbHVtbi1nYXA6IG5vcm1hbDtcXG4gIC13ZWJraXQtY29sdW1uLXJ1bGU6IG1lZGl1bSBtZWRpdW0gIzFmMWYxZjtcXG4gIC1tb3otY29sdW1uLXJ1bGU6IG1lZGl1bSBtZWRpdW0gIzFmMWYxZjtcXG4gIGNvbHVtbi1ydWxlOiBtZWRpdW0gbWVkaXVtICMxZjFmMWY7XFxuICAtd2Via2l0LWNvbHVtbi1zcGFuOiAxO1xcbiAgLW1vei1jb2x1bW4tc3BhbjogMTtcXG4gIGNvbHVtbi1zcGFuOiAxO1xcbiAgLXdlYmtpdC1jb2x1bW4td2lkdGg6IGF1dG87XFxuICAtbW96LWNvbHVtbi13aWR0aDogYXV0bztcXG4gIGNvbHVtbi13aWR0aDogYXV0bztcXG4gIC13ZWJraXQtY29sdW1uczogYXV0byBhdXRvO1xcbiAgLW1vei1jb2x1bW5zOiBhdXRvIGF1dG87XFxuICBjb2x1bW5zOiBhdXRvIGF1dG87XFxuICBjb250ZW50OiBub3JtYWw7XFxuICBjb3VudGVyLWluY3JlbWVudDogbm9uZTtcXG4gIGNvdW50ZXItcmVzZXQ6IG5vbmU7XFxuICBjcm9wOiBhdXRvO1xcbiAgY3Vyc29yOiBhdXRvO1xcbiAgZGlyZWN0aW9uOiBsdHI7XFxuICBkaXNwbGF5OiBpbmxpbmU7XFxuICBkb21pbmFudC1iYXNlbGluZTogYXV0bztcXG4gIGRyb3AtaW5pdGlhbC1hZnRlci1hZGp1c3Q6IHRleHQtYWZ0ZXItZWRnZTtcXG4gIGRyb3AtaW5pdGlhbC1hZnRlci1hbGlnbjogYmFzZWxpbmU7XFxuICBkcm9wLWluaXRpYWwtYmVmb3JlLWFkanVzdDogdGV4dC1iZWZvcmUtZWRnZTtcXG4gIGRyb3AtaW5pdGlhbC1iZWZvcmUtYWxpZ246IGNhcHMtaGVpZ2h0O1xcbiAgZHJvcC1pbml0aWFsLXNpemU6IGF1dG87XFxuICBkcm9wLWluaXRpYWwtdmFsdWU6IGluaXRpYWw7XFxuICBlbGV2YXRpb246IGxldmVsO1xcbiAgZW1wdHktY2VsbHM6IHNob3c7XFxuICBmaXQ6IGZpbGw7XFxuICBmaXQtcG9zaXRpb246IDAlIDAlO1xcbiAgZmxvYXQ6IG5vbmU7XFxuICBmbG9hdC1vZmZzZXQ6IDAgMDtcXG4gIGdyaWQtY29sdW1uczogbm9uZTtcXG4gIGdyaWQtcm93czogbm9uZTtcXG4gIGhhbmdpbmctcHVuY3R1YXRpb246IG5vbmU7XFxuICBoZWlnaHQ6IGF1dG87XFxuICBoeXBoZW5hdGUtYWZ0ZXI6IGF1dG87XFxuICBoeXBoZW5hdGUtYmVmb3JlOiBhdXRvO1xcbiAgaHlwaGVuYXRlLWNoYXJhY3RlcjogYXV0bztcXG4gIGh5cGhlbmF0ZS1saW5lczogbm8tbGltaXQ7XFxuICBoeXBoZW5hdGUtcmVzb3VyY2U6IG5vbmU7XFxuICAtd2Via2l0LWh5cGhlbnM6IG1hbnVhbDtcXG4gIC1tb3otaHlwaGVuczogbWFudWFsO1xcbiAgLW1zLWh5cGhlbnM6IG1hbnVhbDtcXG4gIGh5cGhlbnM6IG1hbnVhbDtcXG4gIGljb246IGF1dG87XFxuICBpbWFnZS1vcmllbnRhdGlvbjogYXV0bztcXG4gIGltYWdlLXJlbmRlcmluZzogYXV0bztcXG4gIGltYWdlLXJlc29sdXRpb246IG5vcm1hbDtcXG4gIGlubGluZS1ib3gtYWxpZ246IGxhc3Q7XFxuICBsZWZ0OiBhdXRvO1xcbiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XFxuICBsaW5lLXN0YWNraW5nOiBpbmxpbmUtbGluZS1oZWlnaHQgZXhjbHVkZS1ydWJ5IGNvbnNpZGVyLXNoaWZ0cztcXG4gIGxpc3Qtc3R5bGU6IGRpc2Mgb3V0c2lkZSBub25lO1xcbiAgbWFyZ2luOiAwO1xcbiAgbWFya3M6IG5vbmU7XFxuICBtYXJxdWVlLWRpcmVjdGlvbjogZm9yd2FyZDtcXG4gIG1hcnF1ZWUtbG9vcDogMTtcXG4gIG1hcnF1ZWUtcGxheS1jb3VudDogMTtcXG4gIG1hcnF1ZWUtc3BlZWQ6IG5vcm1hbDtcXG4gIG1hcnF1ZWUtc3R5bGU6IHNjcm9sbDtcXG4gIG1heC1oZWlnaHQ6IG5vbmU7XFxuICBtYXgtd2lkdGg6IG5vbmU7XFxuICBtaW4taGVpZ2h0OiAwO1xcbiAgbWluLXdpZHRoOiAwO1xcbiAgbW92ZS10bzogbm9ybWFsO1xcbiAgbmF2LWRvd246IGF1dG87XFxuICBuYXYtaW5kZXg6IGF1dG87XFxuICBuYXYtbGVmdDogYXV0bztcXG4gIG5hdi1yaWdodDogYXV0bztcXG4gIG5hdi11cDogYXV0bztcXG4gIG9wYWNpdHk6IDE7XFxuICBvcnBoYW5zOiAyO1xcbiAgb3V0bGluZTogaW52ZXJ0IG5vbmUgbWVkaXVtO1xcbiAgb3V0bGluZS1vZmZzZXQ6IDA7XFxuICBvdmVyZmxvdzogdmlzaWJsZTtcXG4gIG92ZXJmbG93LXN0eWxlOiBhdXRvO1xcbiAgcGFkZGluZzogMDtcXG4gIHBhZ2U6IGF1dG87XFxuICBwYWdlLWJyZWFrLWFmdGVyOiBhdXRvO1xcbiAgcGFnZS1icmVhay1iZWZvcmU6IGF1dG87XFxuICBwYWdlLWJyZWFrLWluc2lkZTogYXV0bztcXG4gIHBhZ2UtcG9saWN5OiBzdGFydDtcXG4gIC13ZWJraXQtcGVyc3BlY3RpdmU6IG5vbmU7XFxuICBwZXJzcGVjdGl2ZTogbm9uZTtcXG4gIC13ZWJraXQtcGVyc3BlY3RpdmUtb3JpZ2luOiA1MCUgNTAlO1xcbiAgcGVyc3BlY3RpdmUtb3JpZ2luOiA1MCUgNTAlO1xcbiAgcG9zaXRpb246IHN0YXRpYztcXG4gIHByZXNlbnRhdGlvbi1sZXZlbDogMDtcXG4gIHB1bmN0dWF0aW9uLXRyaW06IG5vbmU7XFxuICBxdW90ZXM6IG5vbmU7XFxuICByZW5kZXJpbmctaW50ZW50OiBhdXRvO1xcbiAgcmVzaXplOiBub25lO1xcbiAgcmlnaHQ6IGF1dG87XFxuICByb3RhdGlvbjogMDtcXG4gIHJvdGF0aW9uLXBvaW50OiA1MCUgNTAlO1xcbiAgcnVieS1hbGlnbjogYXV0bztcXG4gIHJ1Ynktb3Zlcmhhbmc6IG5vbmU7XFxuICBydWJ5LXBvc2l0aW9uOiBiZWZvcmU7XFxuICBydWJ5LXNwYW46IG5vbmU7XFxuICBzaXplOiBhdXRvO1xcbiAgc3RyaW5nLXNldDogbm9uZTtcXG4gIHRhYmxlLWxheW91dDogYXV0bztcXG4gIHRvcDogYXV0bztcXG4gIC13ZWJraXQtdHJhbnNmb3JtOiBub25lO1xcbiAgLW1zLXRyYW5zZm9ybTogbm9uZTtcXG4gIHRyYW5zZm9ybTogbm9uZTtcXG4gIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogNTAlIDUwJSAwO1xcbiAgLW1zLXRyYW5zZm9ybS1vcmlnaW46IDUwJSA1MCUgMDtcXG4gIHRyYW5zZm9ybS1vcmlnaW46IDUwJSA1MCUgMDtcXG4gIC13ZWJraXQtdHJhbnNmb3JtLXN0eWxlOiBmbGF0O1xcbiAgdHJhbnNmb3JtLXN0eWxlOiBmbGF0O1xcbiAgdHJhbnNpdGlvbjogYWxsIDAgZWFzZSAwO1xcbiAgdW5pY29kZS1iaWRpOiBub3JtYWw7XFxuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XFxuICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xcbiAgd2hpdGUtc3BhY2UtY29sbGFwc2U6IGNvbGxhcHNlO1xcbiAgd2lkb3dzOiAyO1xcbiAgd2lkdGg6IGF1dG87XFxuICB3b3JkLWJyZWFrOiBub3JtYWw7XFxuICB3b3JkLXNwYWNpbmc6IG5vcm1hbDtcXG4gIHdvcmQtd3JhcDogbm9ybWFsO1xcbiAgei1pbmRleDogYXV0bztcXG4gIHRleHQtYWxpZ246IHN0YXJ0O1xcbiAgLyogQW5kIGRpc2FibGUgTVMgZ3JhZGllbnRzICovXFxuICBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChlbmFibGVkPWZhbHNlKTtcXG4gIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xcbiAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTsgfVxcblxcbi5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBhZGRyZXNzLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgYmxvY2txdW90ZSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGRkLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgZGl2LCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgZGwsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBkdCwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGZpZWxkc2V0LCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgZm9ybSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGRpdi5Cb29raW5nU3luY1dpZGdldFV0aWxzX19mb3JtLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgZnJhbWUsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBmcmFtZXNldCwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGgxLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgaDIsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBoMywgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGg0LCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgaDUsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBoNiwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IG5vZnJhbWVzLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgb2wsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBwLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgdWwsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBjZW50ZXIsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBkaXIsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBociwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IG1lbnUsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBwcmUsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBhcnRpY2xlLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgYXNpZGUsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBjYW52YXMsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBkZXRhaWxzLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgZmlnY2FwdGlvbiwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGZpZ3VyZSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGZvb3RlciwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGhlYWRlciwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGhncm91cCwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IG1lbnUsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBuYXYsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBzZWN0aW9uLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgc3VtbWFyeSB7XFxuICBkaXNwbGF5OiBibG9jazsgfVxcblxcbi5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBsaSB7XFxuICBkaXNwbGF5OiBsaXN0LWl0ZW07IH1cXG5cXG4uQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgdGFibGUge1xcbiAgZGlzcGxheTogdGFibGU7IH1cXG5cXG4uQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgdHIge1xcbiAgZGlzcGxheTogdGFibGUtcm93OyB9XFxuXFxuLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHRoZWFkIHtcXG4gIGRpc3BsYXk6IHRhYmxlLWhlYWRlci1ncm91cDsgfVxcblxcbi5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCB0Ym9keSB7XFxuICBkaXNwbGF5OiB0YWJsZS1yb3ctZ3JvdXA7IH1cXG5cXG4uQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgdGZvb3Qge1xcbiAgZGlzcGxheTogdGFibGUtZm9vdGVyLWdyb3VwOyB9XFxuXFxuLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGNvbCB7XFxuICBkaXNwbGF5OiB0YWJsZS1jb2x1bW47IH1cXG5cXG4uQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgY29sZ3JvdXAge1xcbiAgZGlzcGxheTogdGFibGUtY29sdW1uLWdyb3VwOyB9XFxuXFxuLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHRkLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgdGgge1xcbiAgZGlzcGxheTogdGFibGUtY2VsbDsgfVxcblxcbi5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBjYXB0aW9uIHtcXG4gIGRpc3BsYXk6IHRhYmxlLWNhcHRpb247IH1cXG5cXG4uQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgaW5wdXQsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBzZWxlY3Qge1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrOyB9XFxuXFxuLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGIsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBzdHJvbmcge1xcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7IH1cXG5cXG4uQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgYiA+IGksIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBzdHJvbmcgPiBpLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgYiA+IGVtLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgc3Ryb25nID4gZW0ge1xcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XFxuICBmb250LXN0eWxlOiBpdGFsaWM7IH1cXG5cXG4uQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgaSA+IGIsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBpID4gc3Ryb25nIHtcXG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xcbiAgZm9udC1zdHlsZTogaXRhbGljOyB9XFxuXFxuLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGVtID4gYiwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGVtID4gc3Ryb25nIHtcXG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xcbiAgZm9udC1zdHlsZTogaXRhbGljOyB9XFxuXFxuLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHRleHRhcmVhLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgaW5wdXQge1xcbiAgY3Vyc29yOiB0ZXh0OyB9XFxuXCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvc3R5bGVzL3Jlc2V0LnNjc3NcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBQUE7Ozs7OztFQU9JLHdFQUF3RTtFQUN4RSxzQkFBc0I7RUFDdEIsZUFBZTtFQUNmLGtCQUFrQjtFQUNsQixzQkFBc0I7RUFDdEIsb0JBQW9CO0VBQ3BCLG9CQUFvQjtFQUNwQixtQkFBbUI7RUFDbkIsb0ZBQW9GO0VBQ3BGLGdCQUFnQjtFQUNoQiw2QkFBNkI7RUFDN0Isd0JBQXdCO0VBQ3hCLHFCQUFxQjtFQUNyQiwyQkFBMkI7RUFDM0IsbUJBQW1CO0VBQ25CLGlCQUFpQjtFQUNqQixjQUFjO0VBQ2Qsa0JBQWtCO0VBQ2xCLGtCQUFrQjtFQUNsQixpQkFBaUI7RUFDakIsb0JBQW9CO0VBQ3BCLGlCQUFpQjtFQUNqQixzQkFBc0I7RUFDdEIsNEJBQTRCO0VBQzVCLHlDQUF5QztFQUN6QyxpQ0FBaUM7RUFDakMscUNBQXFDO0VBQ3JDLDZCQUE2QjtFQUM3QixrQkFBa0I7RUFDbEIsZUFBZTtFQUNmLG9DQUFvQztFQUNwQyw0QkFBNEI7RUFDNUIsK0RBQStEO0VBQy9ELDZCQUE2QjtFQUM3QixzQkFBc0I7RUFDdEIsd0JBQXdCO0VBQ3hCLGFBQWE7RUFDYixVQUFVO0VBQ1YseUJBQXlCO0VBQ3pCLG9CQUFvQjtFQUNwQixvQkFBb0I7RUFDcEIscUJBQXFCO0VBQ3JCLDBCQUEwQjtFQUMxQixnQkFBZ0I7RUFDaEIsWUFBWTtFQUNaLGtCQUFrQjtFQUNsQixtQ0FBbUM7RUFDbkMsMkJBQTJCO0VBQzNCLHFCQUFxQjtFQUNyQixTQUFTO0VBQ1QsYUFBYTtFQUNiLGlCQUFpQjtFQUNqQixvQkFBb0I7RUFDcEIsdUJBQXVCO0VBQ3ZCLGVBQWU7RUFDZixnQkFBZ0I7RUFDaEIsdUJBQXVCO0VBQ3ZCLHlCQUF5QjtFQUN6QixzQkFBc0I7RUFDdEIsaUJBQWlCO0VBQ2pCLDBCQUEwQjtFQUMxQix1QkFBdUI7RUFDdkIsa0JBQWtCO0VBQ2xCLGlDQUFpQztFQUNqQyx1QkFBdUI7RUFDdkIsa0JBQWtCO0VBQ2xCLGlCQUFpQjtFQUNqQixXQUFXO0VBQ1gsVUFBVTtFQUNWLGNBQWM7RUFDZCxtQkFBbUI7RUFDbkIsMEJBQTBCO0VBQzFCLHVCQUF1QjtFQUN2QixrQkFBa0I7RUFDbEIsNEJBQTRCO0VBQzVCLHlCQUF5QjtFQUN6QixvQkFBb0I7RUFDcEIsMEJBQTBCO0VBQzFCLHVCQUF1QjtFQUN2QixrQkFBa0I7RUFDbEIsMENBQTBDO0VBQzFDLHVDQUF1QztFQUN2QyxrQ0FBa0M7RUFDbEMsc0JBQXNCO0VBQ3RCLG1CQUFtQjtFQUNuQixjQUFjO0VBQ2QsMEJBQTBCO0VBQzFCLHVCQUF1QjtFQUN2QixrQkFBa0I7RUFDbEIsMEJBQTBCO0VBQzFCLHVCQUF1QjtFQUN2QixrQkFBa0I7RUFDbEIsZUFBZTtFQUNmLHVCQUF1QjtFQUN2QixtQkFBbUI7RUFDbkIsVUFBVTtFQUNWLFlBQVk7RUFDWixjQUFjO0VBQ2QsZUFBZTtFQUNmLHVCQUF1QjtFQUN2QiwwQ0FBMEM7RUFDMUMsa0NBQWtDO0VBQ2xDLDRDQUE0QztFQUM1QyxzQ0FBc0M7RUFDdEMsdUJBQXVCO0VBQ3ZCLDJCQUEyQjtFQUMzQixnQkFBZ0I7RUFDaEIsaUJBQWlCO0VBQ2pCLFNBQVM7RUFDVCxtQkFBbUI7RUFDbkIsV0FBVztFQUNYLGlCQUFpQjtFQUNqQixrQkFBa0I7RUFDbEIsZUFBZTtFQUNmLHlCQUF5QjtFQUN6QixZQUFZO0VBQ1oscUJBQXFCO0VBQ3JCLHNCQUFzQjtFQUN0Qix5QkFBeUI7RUFDekIseUJBQXlCO0VBQ3pCLHdCQUF3QjtFQUN4Qix1QkFBdUI7RUFDdkIsb0JBQW9CO0VBQ3BCLG1CQUFtQjtFQUNuQixlQUFlO0VBQ2YsVUFBVTtFQUNWLHVCQUF1QjtFQUN2QixxQkFBcUI7RUFDckIsd0JBQXdCO0VBQ3hCLHNCQUFzQjtFQUN0QixVQUFVO0VBQ1Ysb0JBQW9CO0VBQ3BCLDhEQUE4RDtFQUM5RCw2QkFBNkI7RUFDN0IsU0FBUztFQUNULFdBQVc7RUFDWCwwQkFBMEI7RUFDMUIsZUFBZTtFQUNmLHFCQUFxQjtFQUNyQixxQkFBcUI7RUFDckIscUJBQXFCO0VBQ3JCLGdCQUFnQjtFQUNoQixlQUFlO0VBQ2YsYUFBYTtFQUNiLFlBQVk7RUFDWixlQUFlO0VBQ2YsY0FBYztFQUNkLGVBQWU7RUFDZixjQUFjO0VBQ2QsZUFBZTtFQUNmLFlBQVk7RUFDWixVQUFVO0VBQ1YsVUFBVTtFQUNWLDJCQUEyQjtFQUMzQixpQkFBaUI7RUFDakIsaUJBQWlCO0VBQ2pCLG9CQUFvQjtFQUNwQixVQUFVO0VBQ1YsVUFBVTtFQUNWLHNCQUFzQjtFQUN0Qix1QkFBdUI7RUFDdkIsdUJBQXVCO0VBQ3ZCLGtCQUFrQjtFQUNsQix5QkFBeUI7RUFDekIsaUJBQWlCO0VBQ2pCLG1DQUFtQztFQUNuQywyQkFBMkI7RUFDM0IsZ0JBQWdCO0VBQ2hCLHFCQUFxQjtFQUNyQixzQkFBc0I7RUFDdEIsWUFBWTtFQUNaLHNCQUFzQjtFQUN0QixZQUFZO0VBQ1osV0FBVztFQUNYLFdBQVc7RUFDWCx1QkFBdUI7RUFDdkIsZ0JBQWdCO0VBQ2hCLG1CQUFtQjtFQUNuQixxQkFBcUI7RUFDckIsZUFBZTtFQUNmLFVBQVU7RUFDVixnQkFBZ0I7RUFDaEIsa0JBQWtCO0VBQ2xCLFNBQVM7RUFDVCx1QkFBdUI7RUFDdkIsbUJBQW1CO0VBQ25CLGVBQWU7RUFDZixtQ0FBbUM7RUFDbkMsK0JBQStCO0VBQy9CLDJCQUEyQjtFQUMzQiw2QkFBNkI7RUFDN0IscUJBQXFCO0VBQ3JCLHdCQUF3QjtFQUN4QixvQkFBb0I7RUFDcEIsd0JBQXdCO0VBQ3hCLG1CQUFtQjtFQUNuQiw4QkFBOEI7RUFDOUIsU0FBUztFQUNULFdBQVc7RUFDWCxrQkFBa0I7RUFDbEIsb0JBQW9CO0VBQ3BCLGlCQUFpQjtFQUNqQixhQUFhO0VBQ2IsaUJBQWlCO0VBQ2pCLDZCQUFBO0VBQ0EsaUVBQWlFO0VBQ2pFLG1DQUFtQztFQUNuQyxrQ0FBa0MsRUFBQTs7QUF0TnRDO0VBeU5JLGNBQWMsRUFBQTs7QUF6TmxCO0VBNE5JLGtCQUFrQixFQUFBOztBQTVOdEI7RUErTkksY0FBYyxFQUFBOztBQS9ObEI7RUFrT0ksa0JBQWtCLEVBQUE7O0FBbE90QjtFQXFPSSwyQkFBMkIsRUFBQTs7QUFyTy9CO0VBd09JLHdCQUF3QixFQUFBOztBQXhPNUI7RUEyT0ksMkJBQTJCLEVBQUE7O0FBM08vQjtFQThPSSxxQkFBcUIsRUFBQTs7QUE5T3pCO0VBaVBJLDJCQUEyQixFQUFBOztBQWpQL0I7RUFvUEksbUJBQW1CLEVBQUE7O0FBcFB2QjtFQXVQSSxzQkFBc0IsRUFBQTs7QUF2UDFCO0VBMFBJLHFCQUFxQixFQUFBOztBQTFQekI7RUE2UEksaUJBQWlCLEVBQUE7O0FBN1ByQjtFQWdRSSxpQkFBaUI7RUFDakIsa0JBQWtCLEVBQUE7O0FBalF0QjtFQXFRTSxpQkFBaUI7RUFDakIsa0JBQWtCLEVBQUE7O0FBdFF4QjtFQTJRTSxpQkFBaUI7RUFDakIsa0JBQWtCLEVBQUE7O0FBNVF4QjtFQWdSSSxZQUFZLEVBQUFcIixcInNvdXJjZXNDb250ZW50XCI6W1wiLnJlc2V0IHtcXHJcXG5cXHRkaXYsIHNwYW4sIGFwcGxldCwgb2JqZWN0LCBpZnJhbWUsIGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsIHAsIGJsb2NrcXVvdGUsIHByZSwgYSxcXHJcXG5cXHRhYmJyLCBhY3JvbnltLCBhZGRyZXNzLCBiaWcsIGNpdGUsIGNvZGUsIGRlbCwgZGZuLCBlbSwgaW1nLCBpbnMsIGtiZCwgcSwgcywgc2FtcCxcXHJcXG5cXHRzbWFsbCwgc3RyaWtlLCBzdHJvbmcsIHN1Yiwgc3VwLCB0dCwgdmFyLCBiLCB1LCBpLCBjZW50ZXIsIGRsLCBkdCwgZGQsIG9sLCB1bCwgbGksXFxyXFxuXFx0ZmllbGRzZXQsIGZvcm0sIGRpdi5mb3JtLCBsYWJlbCwgbGVnZW5kLCB0YWJsZSwgY2FwdGlvbiwgdGJvZHksIHRmb290LCB0aGVhZCwgdHIsXFxyXFxuXFx0dGgsIHRkLCBhcnRpY2xlLCBhc2lkZSwgY2FudmFzLCBkZXRhaWxzLCBmaWdjYXB0aW9uLCBmaWd1cmUsIGZvb3RlciwgaGVhZGVyLCBoZ3JvdXAsXFxyXFxuXFx0bWVudSwgbmF2LCBzZWN0aW9uLCBzdW1tYXJ5LCB0aW1lLCBtYXJrLCBhdWRpbywgdmlkZW8sIGJ1dHRvbiwgdGV4dGFyZWEsIGlucHV0LCAuYnV0dG9uLCAubGVnZW5kIHtcXHJcXG4gICAgZm9udC1mYW1pbHk6IFxcXCJPcGVuIHNhbnNcXFwiLCBcXFwiSGVsdmV0aWNhIE5ldWVcXFwiLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmO1xcclxcbiAgICBmb250LXNpemUtYWRqdXN0OiBub25lO1xcclxcbiAgICBmb250LXNpemU6IDEwMCU7XFxyXFxuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcXHJcXG4gICAgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDtcXHJcXG4gICAgZm9udC1zdHJldGNoOiBub3JtYWw7XFxyXFxuICAgIGZvbnQtdmFyaWFudDogbm9ybWFsO1xcclxcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xcclxcbiAgICBmb250OiBub3JtYWwgbm9ybWFsIDEwMCUgXFxcIk9wZW4gc2Fuc1xcXCIsIFxcXCJIZWx2ZXRpY2EgTmV1ZVxcXCIsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7XFxyXFxuICAgIHRleHQtYWxpZ246IGxlZnQ7XFxyXFxuICAgIC1tb3otdGV4dC1hbGlnbi1sYXN0OiBpbml0aWFsO1xcclxcbiAgICB0ZXh0LWFsaWduLWxhc3Q6IGluaXRpYWw7XFxyXFxuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcXHJcXG4gICAgLXdlYmtpdC10ZXh0LWVtcGhhc2lzOiBub25lO1xcclxcbiAgICB0ZXh0LWVtcGhhc2lzOiBub25lO1xcclxcbiAgICB0ZXh0LWhlaWdodDogYXV0bztcXHJcXG4gICAgdGV4dC1pbmRlbnQ6IDA7XFxyXFxuICAgIHRleHQtanVzdGlmeTogYXV0bztcXHJcXG4gICAgdGV4dC1vdXRsaW5lOiBub25lO1xcclxcbiAgICB0ZXh0LXNoYWRvdzogbm9uZTtcXHJcXG4gICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XFxyXFxuICAgIHRleHQtd3JhcDogbm9ybWFsO1xcclxcbiAgICBhbGlnbm1lbnQtYWRqdXN0OiBhdXRvO1xcclxcbiAgICBhbGlnbm1lbnQtYmFzZWxpbmU6IGJhc2VsaW5lO1xcclxcbiAgICAtd2Via2l0LWFuaW1hdGlvbjogbm9uZSAwIGVhc2UgMCAxIG5vcm1hbDtcXHJcXG4gICAgYW5pbWF0aW9uOiBub25lIDAgZWFzZSAwIDEgbm9ybWFsO1xcclxcbiAgICAtd2Via2l0LWFuaW1hdGlvbi1wbGF5LXN0YXRlOiBydW5uaW5nO1xcclxcbiAgICBhbmltYXRpb24tcGxheS1zdGF0ZTogcnVubmluZztcXHJcXG4gICAgYXBwZWFyYW5jZTogbm9ybWFsO1xcclxcbiAgICBhemltdXRoOiBjZW50ZXI7XFxyXFxuICAgIC13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTogdmlzaWJsZTtcXHJcXG4gICAgYmFja2ZhY2UtdmlzaWJpbGl0eTogdmlzaWJsZTtcXHJcXG4gICAgYmFja2dyb3VuZDogbm9uZSAwIDAgYXV0byByZXBlYXQgc2Nyb2xsIHBhZGRpbmctYm94IHRyYW5zcGFyZW50O1xcclxcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXHJcXG4gICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTtcXHJcXG4gICAgYmFzZWxpbmUtc2hpZnQ6IGJhc2VsaW5lO1xcclxcbiAgICBiaW5kaW5nOiBub25lO1xcclxcbiAgICBibGVlZDogNnB0O1xcclxcbiAgICBib29rbWFyay1sYWJlbDogY29udGVudCgpO1xcclxcbiAgICBib29rbWFyay1sZXZlbDogbm9uZTtcXHJcXG4gICAgYm9va21hcmstc3RhdGU6IG9wZW47XFxyXFxuICAgIGJvb2ttYXJrLXRhcmdldDogbm9uZTtcXHJcXG4gICAgYm9yZGVyOiAwIG5vbmUgdHJhbnNwYXJlbnQ7XFxyXFxuICAgIGJvcmRlci1yYWRpdXM6IDA7XFxyXFxuICAgIGJvdHRvbTogYXV0bztcXHJcXG4gICAgYm94LWFsaWduOiBzdHJldGNoO1xcclxcbiAgICAtd2Via2l0LWJveC1kZWNvcmF0aW9uLWJyZWFrOiBzbGljZTtcXHJcXG4gICAgYm94LWRlY29yYXRpb24tYnJlYWs6IHNsaWNlO1xcclxcbiAgICBib3gtZGlyZWN0aW9uOiBub3JtYWw7XFxyXFxuICAgIGZsZXg6IDAuMDtcXHJcXG4gICAgZmxleC1ncm91cDogMTtcXHJcXG4gICAgYm94LWxpbmVzOiBzaW5nbGU7XFxyXFxuICAgIGJveC1vcmRpbmFsLWdyb3VwOiAxO1xcclxcbiAgICBib3gtb3JpZW50OiBpbmxpbmUtYXhpcztcXHJcXG4gICAgYm94LXBhY2s6IHN0YXJ0O1xcclxcbiAgICBib3gtc2hhZG93OiBub25lO1xcclxcbiAgICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcXHJcXG4gICAgLXdlYmtpdC1icmVhay1hZnRlcjogYXV0bztcXHJcXG4gICAgLW1vei1icmVhay1hZnRlcjogYXV0bztcXHJcXG4gICAgYnJlYWstYWZ0ZXI6IGF1dG87XFxyXFxuICAgIC13ZWJraXQtYnJlYWstYmVmb3JlOiBhdXRvO1xcclxcbiAgICAtbW96LWJyZWFrLWJlZm9yZTogYXV0bztcXHJcXG4gICAgYnJlYWstYmVmb3JlOiBhdXRvO1xcclxcbiAgICAtd2Via2l0LWNvbHVtbi1icmVhay1pbnNpZGU6IGF1dG87XFxyXFxuICAgIHBhZ2UtYnJlYWstaW5zaWRlOiBhdXRvO1xcclxcbiAgICBicmVhay1pbnNpZGU6IGF1dG87XFxyXFxuICAgIGNhcHRpb24tc2lkZTogdG9wO1xcclxcbiAgICBjbGVhcjogbm9uZTtcXHJcXG4gICAgY2xpcDogYXV0bztcXHJcXG4gICAgY29sb3I6IGluaGVyaXQ7XFxyXFxuICAgIGNvbG9yLXByb2ZpbGU6IGF1dG87XFxyXFxuICAgIC13ZWJraXQtY29sdW1uLWNvdW50OiBhdXRvO1xcclxcbiAgICAtbW96LWNvbHVtbi1jb3VudDogYXV0bztcXHJcXG4gICAgY29sdW1uLWNvdW50OiBhdXRvO1xcclxcbiAgICAtd2Via2l0LWNvbHVtbi1maWxsOiBiYWxhbmNlO1xcclxcbiAgICAtbW96LWNvbHVtbi1maWxsOiBiYWxhbmNlO1xcclxcbiAgICBjb2x1bW4tZmlsbDogYmFsYW5jZTtcXHJcXG4gICAgLXdlYmtpdC1jb2x1bW4tZ2FwOiBub3JtYWw7XFxyXFxuICAgIC1tb3otY29sdW1uLWdhcDogbm9ybWFsO1xcclxcbiAgICBjb2x1bW4tZ2FwOiBub3JtYWw7XFxyXFxuICAgIC13ZWJraXQtY29sdW1uLXJ1bGU6IG1lZGl1bSBtZWRpdW0gIzFmMWYxZjtcXHJcXG4gICAgLW1vei1jb2x1bW4tcnVsZTogbWVkaXVtIG1lZGl1bSAjMWYxZjFmO1xcclxcbiAgICBjb2x1bW4tcnVsZTogbWVkaXVtIG1lZGl1bSAjMWYxZjFmO1xcclxcbiAgICAtd2Via2l0LWNvbHVtbi1zcGFuOiAxO1xcclxcbiAgICAtbW96LWNvbHVtbi1zcGFuOiAxO1xcclxcbiAgICBjb2x1bW4tc3BhbjogMTtcXHJcXG4gICAgLXdlYmtpdC1jb2x1bW4td2lkdGg6IGF1dG87XFxyXFxuICAgIC1tb3otY29sdW1uLXdpZHRoOiBhdXRvO1xcclxcbiAgICBjb2x1bW4td2lkdGg6IGF1dG87XFxyXFxuICAgIC13ZWJraXQtY29sdW1uczogYXV0byBhdXRvO1xcclxcbiAgICAtbW96LWNvbHVtbnM6IGF1dG8gYXV0bztcXHJcXG4gICAgY29sdW1uczogYXV0byBhdXRvO1xcclxcbiAgICBjb250ZW50OiBub3JtYWw7XFxyXFxuICAgIGNvdW50ZXItaW5jcmVtZW50OiBub25lO1xcclxcbiAgICBjb3VudGVyLXJlc2V0OiBub25lO1xcclxcbiAgICBjcm9wOiBhdXRvO1xcclxcbiAgICBjdXJzb3I6IGF1dG87XFxyXFxuICAgIGRpcmVjdGlvbjogbHRyO1xcclxcbiAgICBkaXNwbGF5OiBpbmxpbmU7XFxyXFxuICAgIGRvbWluYW50LWJhc2VsaW5lOiBhdXRvO1xcclxcbiAgICBkcm9wLWluaXRpYWwtYWZ0ZXItYWRqdXN0OiB0ZXh0LWFmdGVyLWVkZ2U7XFxyXFxuICAgIGRyb3AtaW5pdGlhbC1hZnRlci1hbGlnbjogYmFzZWxpbmU7XFxyXFxuICAgIGRyb3AtaW5pdGlhbC1iZWZvcmUtYWRqdXN0OiB0ZXh0LWJlZm9yZS1lZGdlO1xcclxcbiAgICBkcm9wLWluaXRpYWwtYmVmb3JlLWFsaWduOiBjYXBzLWhlaWdodDtcXHJcXG4gICAgZHJvcC1pbml0aWFsLXNpemU6IGF1dG87XFxyXFxuICAgIGRyb3AtaW5pdGlhbC12YWx1ZTogaW5pdGlhbDtcXHJcXG4gICAgZWxldmF0aW9uOiBsZXZlbDtcXHJcXG4gICAgZW1wdHktY2VsbHM6IHNob3c7XFxyXFxuICAgIGZpdDogZmlsbDtcXHJcXG4gICAgZml0LXBvc2l0aW9uOiAwJSAwJTtcXHJcXG4gICAgZmxvYXQ6IG5vbmU7XFxyXFxuICAgIGZsb2F0LW9mZnNldDogMCAwO1xcclxcbiAgICBncmlkLWNvbHVtbnM6IG5vbmU7XFxyXFxuICAgIGdyaWQtcm93czogbm9uZTtcXHJcXG4gICAgaGFuZ2luZy1wdW5jdHVhdGlvbjogbm9uZTtcXHJcXG4gICAgaGVpZ2h0OiBhdXRvO1xcclxcbiAgICBoeXBoZW5hdGUtYWZ0ZXI6IGF1dG87XFxyXFxuICAgIGh5cGhlbmF0ZS1iZWZvcmU6IGF1dG87XFxyXFxuICAgIGh5cGhlbmF0ZS1jaGFyYWN0ZXI6IGF1dG87XFxyXFxuICAgIGh5cGhlbmF0ZS1saW5lczogbm8tbGltaXQ7XFxyXFxuICAgIGh5cGhlbmF0ZS1yZXNvdXJjZTogbm9uZTtcXHJcXG4gICAgLXdlYmtpdC1oeXBoZW5zOiBtYW51YWw7XFxyXFxuICAgIC1tb3otaHlwaGVuczogbWFudWFsO1xcclxcbiAgICAtbXMtaHlwaGVuczogbWFudWFsO1xcclxcbiAgICBoeXBoZW5zOiBtYW51YWw7XFxyXFxuICAgIGljb246IGF1dG87XFxyXFxuICAgIGltYWdlLW9yaWVudGF0aW9uOiBhdXRvO1xcclxcbiAgICBpbWFnZS1yZW5kZXJpbmc6IGF1dG87XFxyXFxuICAgIGltYWdlLXJlc29sdXRpb246IG5vcm1hbDtcXHJcXG4gICAgaW5saW5lLWJveC1hbGlnbjogbGFzdDtcXHJcXG4gICAgbGVmdDogYXV0bztcXHJcXG4gICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XFxyXFxuICAgIGxpbmUtc3RhY2tpbmc6IGlubGluZS1saW5lLWhlaWdodCBleGNsdWRlLXJ1YnkgY29uc2lkZXItc2hpZnRzO1xcclxcbiAgICBsaXN0LXN0eWxlOiBkaXNjIG91dHNpZGUgbm9uZTtcXHJcXG4gICAgbWFyZ2luOiAwO1xcclxcbiAgICBtYXJrczogbm9uZTtcXHJcXG4gICAgbWFycXVlZS1kaXJlY3Rpb246IGZvcndhcmQ7XFxyXFxuICAgIG1hcnF1ZWUtbG9vcDogMTtcXHJcXG4gICAgbWFycXVlZS1wbGF5LWNvdW50OiAxO1xcclxcbiAgICBtYXJxdWVlLXNwZWVkOiBub3JtYWw7XFxyXFxuICAgIG1hcnF1ZWUtc3R5bGU6IHNjcm9sbDtcXHJcXG4gICAgbWF4LWhlaWdodDogbm9uZTtcXHJcXG4gICAgbWF4LXdpZHRoOiBub25lO1xcclxcbiAgICBtaW4taGVpZ2h0OiAwO1xcclxcbiAgICBtaW4td2lkdGg6IDA7XFxyXFxuICAgIG1vdmUtdG86IG5vcm1hbDtcXHJcXG4gICAgbmF2LWRvd246IGF1dG87XFxyXFxuICAgIG5hdi1pbmRleDogYXV0bztcXHJcXG4gICAgbmF2LWxlZnQ6IGF1dG87XFxyXFxuICAgIG5hdi1yaWdodDogYXV0bztcXHJcXG4gICAgbmF2LXVwOiBhdXRvO1xcclxcbiAgICBvcGFjaXR5OiAxO1xcclxcbiAgICBvcnBoYW5zOiAyO1xcclxcbiAgICBvdXRsaW5lOiBpbnZlcnQgbm9uZSBtZWRpdW07XFxyXFxuICAgIG91dGxpbmUtb2Zmc2V0OiAwO1xcclxcbiAgICBvdmVyZmxvdzogdmlzaWJsZTtcXHJcXG4gICAgb3ZlcmZsb3ctc3R5bGU6IGF1dG87XFxyXFxuICAgIHBhZGRpbmc6IDA7XFxyXFxuICAgIHBhZ2U6IGF1dG87XFxyXFxuICAgIHBhZ2UtYnJlYWstYWZ0ZXI6IGF1dG87XFxyXFxuICAgIHBhZ2UtYnJlYWstYmVmb3JlOiBhdXRvO1xcclxcbiAgICBwYWdlLWJyZWFrLWluc2lkZTogYXV0bztcXHJcXG4gICAgcGFnZS1wb2xpY3k6IHN0YXJ0O1xcclxcbiAgICAtd2Via2l0LXBlcnNwZWN0aXZlOiBub25lO1xcclxcbiAgICBwZXJzcGVjdGl2ZTogbm9uZTtcXHJcXG4gICAgLXdlYmtpdC1wZXJzcGVjdGl2ZS1vcmlnaW46IDUwJSA1MCU7XFxyXFxuICAgIHBlcnNwZWN0aXZlLW9yaWdpbjogNTAlIDUwJTtcXHJcXG4gICAgcG9zaXRpb246IHN0YXRpYztcXHJcXG4gICAgcHJlc2VudGF0aW9uLWxldmVsOiAwO1xcclxcbiAgICBwdW5jdHVhdGlvbi10cmltOiBub25lO1xcclxcbiAgICBxdW90ZXM6IG5vbmU7XFxyXFxuICAgIHJlbmRlcmluZy1pbnRlbnQ6IGF1dG87XFxyXFxuICAgIHJlc2l6ZTogbm9uZTtcXHJcXG4gICAgcmlnaHQ6IGF1dG87XFxyXFxuICAgIHJvdGF0aW9uOiAwO1xcclxcbiAgICByb3RhdGlvbi1wb2ludDogNTAlIDUwJTtcXHJcXG4gICAgcnVieS1hbGlnbjogYXV0bztcXHJcXG4gICAgcnVieS1vdmVyaGFuZzogbm9uZTtcXHJcXG4gICAgcnVieS1wb3NpdGlvbjogYmVmb3JlO1xcclxcbiAgICBydWJ5LXNwYW46IG5vbmU7XFxyXFxuICAgIHNpemU6IGF1dG87XFxyXFxuICAgIHN0cmluZy1zZXQ6IG5vbmU7XFxyXFxuICAgIHRhYmxlLWxheW91dDogYXV0bztcXHJcXG4gICAgdG9wOiBhdXRvO1xcclxcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogbm9uZTtcXHJcXG4gICAgLW1zLXRyYW5zZm9ybTogbm9uZTtcXHJcXG4gICAgdHJhbnNmb3JtOiBub25lO1xcclxcbiAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IDUwJSA1MCUgMDtcXHJcXG4gICAgLW1zLXRyYW5zZm9ybS1vcmlnaW46IDUwJSA1MCUgMDtcXHJcXG4gICAgdHJhbnNmb3JtLW9yaWdpbjogNTAlIDUwJSAwO1xcclxcbiAgICAtd2Via2l0LXRyYW5zZm9ybS1zdHlsZTogZmxhdDtcXHJcXG4gICAgdHJhbnNmb3JtLXN0eWxlOiBmbGF0O1xcclxcbiAgICB0cmFuc2l0aW9uOiBhbGwgMCBlYXNlIDA7XFxyXFxuICAgIHVuaWNvZGUtYmlkaTogbm9ybWFsO1xcclxcbiAgICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XFxyXFxuICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7XFxyXFxuICAgIHdoaXRlLXNwYWNlLWNvbGxhcHNlOiBjb2xsYXBzZTtcXHJcXG4gICAgd2lkb3dzOiAyO1xcclxcbiAgICB3aWR0aDogYXV0bztcXHJcXG4gICAgd29yZC1icmVhazogbm9ybWFsO1xcclxcbiAgICB3b3JkLXNwYWNpbmc6IG5vcm1hbDtcXHJcXG4gICAgd29yZC13cmFwOiBub3JtYWw7XFxyXFxuICAgIHotaW5kZXg6IGF1dG87XFxyXFxuICAgIHRleHQtYWxpZ246IHN0YXJ0O1xcclxcbiAgICAvKiBBbmQgZGlzYWJsZSBNUyBncmFkaWVudHMgKi9cXHJcXG4gICAgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoZW5hYmxlZD1mYWxzZSk7XFxyXFxuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xcclxcbiAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xcclxcbiAgfVxcclxcbiAgYWRkcmVzcywgYmxvY2txdW90ZSwgZGQsIGRpdiwgZGwsIGR0LCBmaWVsZHNldCwgZm9ybSwgZGl2LmZvcm0sIGZyYW1lLCBmcmFtZXNldCwgaDEsIGgyLCBoMywgaDQsIGg1LCBoNiwgbm9mcmFtZXMsIG9sLCBwLCB1bCwgY2VudGVyLCBkaXIsIGhyLCBtZW51LCBwcmUsIGFydGljbGUsIGFzaWRlLCBjYW52YXMsIGRldGFpbHMsIGZpZ2NhcHRpb24sIGZpZ3VyZSwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCwgbWVudSwgbmF2LCBzZWN0aW9uLCBzdW1tYXJ5IHtcXHJcXG4gICAgZGlzcGxheTogYmxvY2s7XFxyXFxuICB9XFxyXFxuICBsaSB7XFxyXFxuICAgIGRpc3BsYXk6IGxpc3QtaXRlbTtcXHJcXG4gIH1cXHJcXG4gIHRhYmxlIHtcXHJcXG4gICAgZGlzcGxheTogdGFibGU7XFxyXFxuICB9XFxyXFxuICB0ciB7XFxyXFxuICAgIGRpc3BsYXk6IHRhYmxlLXJvdztcXHJcXG4gIH1cXHJcXG4gIHRoZWFkIHtcXHJcXG4gICAgZGlzcGxheTogdGFibGUtaGVhZGVyLWdyb3VwO1xcclxcbiAgfVxcclxcbiAgdGJvZHkge1xcclxcbiAgICBkaXNwbGF5OiB0YWJsZS1yb3ctZ3JvdXA7XFxyXFxuICB9XFxyXFxuICB0Zm9vdCB7XFxyXFxuICAgIGRpc3BsYXk6IHRhYmxlLWZvb3Rlci1ncm91cDtcXHJcXG4gIH1cXHJcXG4gIGNvbCB7XFxyXFxuICAgIGRpc3BsYXk6IHRhYmxlLWNvbHVtbjtcXHJcXG4gIH1cXHJcXG4gIGNvbGdyb3VwIHtcXHJcXG4gICAgZGlzcGxheTogdGFibGUtY29sdW1uLWdyb3VwO1xcclxcbiAgfVxcclxcbiAgdGQsIHRoIHtcXHJcXG4gICAgZGlzcGxheTogdGFibGUtY2VsbDtcXHJcXG4gIH1cXHJcXG4gIGNhcHRpb24ge1xcclxcbiAgICBkaXNwbGF5OiB0YWJsZS1jYXB0aW9uO1xcclxcbiAgfVxcclxcbiAgaW5wdXQsIHNlbGVjdCB7XFxyXFxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXHJcXG4gIH1cXHJcXG4gIGIsIHN0cm9uZyB7XFxyXFxuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xcclxcbiAgfVxcclxcbiAgYiA+IGksIHN0cm9uZyA+IGksIGIgPiBlbSwgc3Ryb25nID4gZW0ge1xcclxcbiAgICBmb250LXdlaWdodDogYm9sZDtcXHJcXG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xcclxcbiAgfVxcclxcbiAgaSA+IHtcXHJcXG4gICAgYiwgc3Ryb25nIHtcXHJcXG4gICAgICBmb250LXdlaWdodDogYm9sZDtcXHJcXG4gICAgICBmb250LXN0eWxlOiBpdGFsaWM7XFxyXFxuICAgIH1cXHJcXG4gIH1cXHJcXG4gIGVtID4ge1xcclxcbiAgICBiLCBzdHJvbmcge1xcclxcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xcclxcbiAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcXHJcXG4gICAgfVxcclxcbiAgfVxcclxcbiAgdGV4dGFyZWEsIGlucHV0IHtcXHJcXG4gICAgY3Vyc29yOiB0ZXh0O1xcclxcbiAgfVxcclxcbn1cXHJcXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLmxvY2FscyA9IHtcblx0XCJyZXNldFwiOiBcIkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0XCIsXG5cdFwiZm9ybVwiOiBcIkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX2Zvcm1cIixcblx0XCJidXR0b25cIjogXCJCb29raW5nU3luY1dpZGdldFV0aWxzX19idXR0b25cIixcblx0XCJsZWdlbmRcIjogXCJCb29raW5nU3luY1dpZGdldFV0aWxzX19sZWdlbmRcIlxufTtcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanNcIjtcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1sxXS51c2VbMV0hLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzFdLnVzZVsyXSEuL2NhbGVuZGFyLnNjc3NcIjtcbiAgICAgIFxuICAgICAgXG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0gPSBzdHlsZVRhZ1RyYW5zZm9ybUZuO1xub3B0aW9ucy5zZXRBdHRyaWJ1dGVzID0gc2V0QXR0cmlidXRlcztcblxuICAgICAgb3B0aW9ucy5pbnNlcnQgPSBpbnNlcnRGbi5iaW5kKG51bGwsIFwiaGVhZFwiKTtcbiAgICBcbm9wdGlvbnMuZG9tQVBJID0gZG9tQVBJO1xub3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQgPSBpbnNlcnRTdHlsZUVsZW1lbnQ7XG5cbnZhciB1cGRhdGUgPSBBUEkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgKiBmcm9tIFwiISEuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1sxXS51c2VbMV0hLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzFdLnVzZVsyXSEuL2NhbGVuZGFyLnNjc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iLCJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qc1wiO1xuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMl0udXNlWzFdIS4uLy4uLy4uL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzJdLnVzZVsyXSEuL3Jlc2V0LnNjc3NcIjtcbiAgICAgIFxuICAgICAgXG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0gPSBzdHlsZVRhZ1RyYW5zZm9ybUZuO1xub3B0aW9ucy5zZXRBdHRyaWJ1dGVzID0gc2V0QXR0cmlidXRlcztcblxuICAgICAgb3B0aW9ucy5pbnNlcnQgPSBpbnNlcnRGbi5iaW5kKG51bGwsIFwiaGVhZFwiKTtcbiAgICBcbm9wdGlvbnMuZG9tQVBJID0gZG9tQVBJO1xub3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQgPSBpbnNlcnRTdHlsZUVsZW1lbnQ7XG5cbnZhciB1cGRhdGUgPSBBUEkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgKiBmcm9tIFwiISEuLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzJdLnVzZVsxXSEuLi8uLi8uLi9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1syXS51c2VbMl0hLi9yZXNldC5zY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBzdHlsZXNJbkRPTSA9IFtdO1xuXG5mdW5jdGlvbiBnZXRJbmRleEJ5SWRlbnRpZmllcihpZGVudGlmaWVyKSB7XG4gIHZhciByZXN1bHQgPSAtMTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0eWxlc0luRE9NLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHN0eWxlc0luRE9NW2ldLmlkZW50aWZpZXIgPT09IGlkZW50aWZpZXIpIHtcbiAgICAgIHJlc3VsdCA9IGk7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBtb2R1bGVzVG9Eb20obGlzdCwgb3B0aW9ucykge1xuICB2YXIgaWRDb3VudE1hcCA9IHt9O1xuICB2YXIgaWRlbnRpZmllcnMgPSBbXTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgaXRlbSA9IGxpc3RbaV07XG4gICAgdmFyIGlkID0gb3B0aW9ucy5iYXNlID8gaXRlbVswXSArIG9wdGlvbnMuYmFzZSA6IGl0ZW1bMF07XG4gICAgdmFyIGNvdW50ID0gaWRDb3VudE1hcFtpZF0gfHwgMDtcbiAgICB2YXIgaWRlbnRpZmllciA9IFwiXCIuY29uY2F0KGlkLCBcIiBcIikuY29uY2F0KGNvdW50KTtcbiAgICBpZENvdW50TWFwW2lkXSA9IGNvdW50ICsgMTtcbiAgICB2YXIgaW5kZXhCeUlkZW50aWZpZXIgPSBnZXRJbmRleEJ5SWRlbnRpZmllcihpZGVudGlmaWVyKTtcbiAgICB2YXIgb2JqID0ge1xuICAgICAgY3NzOiBpdGVtWzFdLFxuICAgICAgbWVkaWE6IGl0ZW1bMl0sXG4gICAgICBzb3VyY2VNYXA6IGl0ZW1bM10sXG4gICAgICBzdXBwb3J0czogaXRlbVs0XSxcbiAgICAgIGxheWVyOiBpdGVtWzVdXG4gICAgfTtcblxuICAgIGlmIChpbmRleEJ5SWRlbnRpZmllciAhPT0gLTEpIHtcbiAgICAgIHN0eWxlc0luRE9NW2luZGV4QnlJZGVudGlmaWVyXS5yZWZlcmVuY2VzKys7XG4gICAgICBzdHlsZXNJbkRPTVtpbmRleEJ5SWRlbnRpZmllcl0udXBkYXRlcihvYmopO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgdXBkYXRlciA9IGFkZEVsZW1lbnRTdHlsZShvYmosIG9wdGlvbnMpO1xuICAgICAgb3B0aW9ucy5ieUluZGV4ID0gaTtcbiAgICAgIHN0eWxlc0luRE9NLnNwbGljZShpLCAwLCB7XG4gICAgICAgIGlkZW50aWZpZXI6IGlkZW50aWZpZXIsXG4gICAgICAgIHVwZGF0ZXI6IHVwZGF0ZXIsXG4gICAgICAgIHJlZmVyZW5jZXM6IDFcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlkZW50aWZpZXJzLnB1c2goaWRlbnRpZmllcik7XG4gIH1cblxuICByZXR1cm4gaWRlbnRpZmllcnM7XG59XG5cbmZ1bmN0aW9uIGFkZEVsZW1lbnRTdHlsZShvYmosIG9wdGlvbnMpIHtcbiAgdmFyIGFwaSA9IG9wdGlvbnMuZG9tQVBJKG9wdGlvbnMpO1xuICBhcGkudXBkYXRlKG9iaik7XG5cbiAgdmFyIHVwZGF0ZXIgPSBmdW5jdGlvbiB1cGRhdGVyKG5ld09iaikge1xuICAgIGlmIChuZXdPYmopIHtcbiAgICAgIGlmIChuZXdPYmouY3NzID09PSBvYmouY3NzICYmIG5ld09iai5tZWRpYSA9PT0gb2JqLm1lZGlhICYmIG5ld09iai5zb3VyY2VNYXAgPT09IG9iai5zb3VyY2VNYXAgJiYgbmV3T2JqLnN1cHBvcnRzID09PSBvYmouc3VwcG9ydHMgJiYgbmV3T2JqLmxheWVyID09PSBvYmoubGF5ZXIpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBhcGkudXBkYXRlKG9iaiA9IG5ld09iaik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFwaS5yZW1vdmUoKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIHVwZGF0ZXI7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGxpc3QsIG9wdGlvbnMpIHtcbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gIGxpc3QgPSBsaXN0IHx8IFtdO1xuICB2YXIgbGFzdElkZW50aWZpZXJzID0gbW9kdWxlc1RvRG9tKGxpc3QsIG9wdGlvbnMpO1xuICByZXR1cm4gZnVuY3Rpb24gdXBkYXRlKG5ld0xpc3QpIHtcbiAgICBuZXdMaXN0ID0gbmV3TGlzdCB8fCBbXTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGFzdElkZW50aWZpZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaWRlbnRpZmllciA9IGxhc3RJZGVudGlmaWVyc1tpXTtcbiAgICAgIHZhciBpbmRleCA9IGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpO1xuICAgICAgc3R5bGVzSW5ET01baW5kZXhdLnJlZmVyZW5jZXMtLTtcbiAgICB9XG5cbiAgICB2YXIgbmV3TGFzdElkZW50aWZpZXJzID0gbW9kdWxlc1RvRG9tKG5ld0xpc3QsIG9wdGlvbnMpO1xuXG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGxhc3RJZGVudGlmaWVycy5sZW5ndGg7IF9pKyspIHtcbiAgICAgIHZhciBfaWRlbnRpZmllciA9IGxhc3RJZGVudGlmaWVyc1tfaV07XG5cbiAgICAgIHZhciBfaW5kZXggPSBnZXRJbmRleEJ5SWRlbnRpZmllcihfaWRlbnRpZmllcik7XG5cbiAgICAgIGlmIChzdHlsZXNJbkRPTVtfaW5kZXhdLnJlZmVyZW5jZXMgPT09IDApIHtcbiAgICAgICAgc3R5bGVzSW5ET01bX2luZGV4XS51cGRhdGVyKCk7XG5cbiAgICAgICAgc3R5bGVzSW5ET00uc3BsaWNlKF9pbmRleCwgMSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGFzdElkZW50aWZpZXJzID0gbmV3TGFzdElkZW50aWZpZXJzO1xuICB9O1xufTsiLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIG1lbW8gPSB7fTtcbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuXG5mdW5jdGlvbiBnZXRUYXJnZXQodGFyZ2V0KSB7XG4gIGlmICh0eXBlb2YgbWVtb1t0YXJnZXRdID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgdmFyIHN0eWxlVGFyZ2V0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0YXJnZXQpOyAvLyBTcGVjaWFsIGNhc2UgdG8gcmV0dXJuIGhlYWQgb2YgaWZyYW1lIGluc3RlYWQgb2YgaWZyYW1lIGl0c2VsZlxuXG4gICAgaWYgKHdpbmRvdy5IVE1MSUZyYW1lRWxlbWVudCAmJiBzdHlsZVRhcmdldCBpbnN0YW5jZW9mIHdpbmRvdy5IVE1MSUZyYW1lRWxlbWVudCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gVGhpcyB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbiBpZiBhY2Nlc3MgdG8gaWZyYW1lIGlzIGJsb2NrZWRcbiAgICAgICAgLy8gZHVlIHRvIGNyb3NzLW9yaWdpbiByZXN0cmljdGlvbnNcbiAgICAgICAgc3R5bGVUYXJnZXQgPSBzdHlsZVRhcmdldC5jb250ZW50RG9jdW1lbnQuaGVhZDtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHRcbiAgICAgICAgc3R5bGVUYXJnZXQgPSBudWxsO1xuICAgICAgfVxuICAgIH1cblxuICAgIG1lbW9bdGFyZ2V0XSA9IHN0eWxlVGFyZ2V0O1xuICB9XG5cbiAgcmV0dXJuIG1lbW9bdGFyZ2V0XTtcbn1cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuXG5cbmZ1bmN0aW9uIGluc2VydEJ5U2VsZWN0b3IoaW5zZXJ0LCBzdHlsZSkge1xuICB2YXIgdGFyZ2V0ID0gZ2V0VGFyZ2V0KGluc2VydCk7XG5cbiAgaWYgKCF0YXJnZXQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb3VsZG4ndCBmaW5kIGEgc3R5bGUgdGFyZ2V0LiBUaGlzIHByb2JhYmx5IG1lYW5zIHRoYXQgdGhlIHZhbHVlIGZvciB0aGUgJ2luc2VydCcgcGFyYW1ldGVyIGlzIGludmFsaWQuXCIpO1xuICB9XG5cbiAgdGFyZ2V0LmFwcGVuZENoaWxkKHN0eWxlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpbnNlcnRCeVNlbGVjdG9yOyIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIGluc2VydFN0eWxlRWxlbWVudChvcHRpb25zKSB7XG4gIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInN0eWxlXCIpO1xuICBvcHRpb25zLnNldEF0dHJpYnV0ZXMoZWxlbWVudCwgb3B0aW9ucy5hdHRyaWJ1dGVzKTtcbiAgb3B0aW9ucy5pbnNlcnQoZWxlbWVudCwgb3B0aW9ucy5vcHRpb25zKTtcbiAgcmV0dXJuIGVsZW1lbnQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaW5zZXJ0U3R5bGVFbGVtZW50OyIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIHNldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcyhzdHlsZUVsZW1lbnQpIHtcbiAgdmFyIG5vbmNlID0gdHlwZW9mIF9fd2VicGFja19ub25jZV9fICE9PSBcInVuZGVmaW5lZFwiID8gX193ZWJwYWNrX25vbmNlX18gOiBudWxsO1xuXG4gIGlmIChub25jZSkge1xuICAgIHN0eWxlRWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJub25jZVwiLCBub25jZSk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXM7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gYXBwbHkoc3R5bGVFbGVtZW50LCBvcHRpb25zLCBvYmopIHtcbiAgdmFyIGNzcyA9IFwiXCI7XG5cbiAgaWYgKG9iai5zdXBwb3J0cykge1xuICAgIGNzcyArPSBcIkBzdXBwb3J0cyAoXCIuY29uY2F0KG9iai5zdXBwb3J0cywgXCIpIHtcIik7XG4gIH1cblxuICBpZiAob2JqLm1lZGlhKSB7XG4gICAgY3NzICs9IFwiQG1lZGlhIFwiLmNvbmNhdChvYmoubWVkaWEsIFwiIHtcIik7XG4gIH1cblxuICB2YXIgbmVlZExheWVyID0gdHlwZW9mIG9iai5sYXllciAhPT0gXCJ1bmRlZmluZWRcIjtcblxuICBpZiAobmVlZExheWVyKSB7XG4gICAgY3NzICs9IFwiQGxheWVyXCIuY29uY2F0KG9iai5sYXllci5sZW5ndGggPiAwID8gXCIgXCIuY29uY2F0KG9iai5sYXllcikgOiBcIlwiLCBcIiB7XCIpO1xuICB9XG5cbiAgY3NzICs9IG9iai5jc3M7XG5cbiAgaWYgKG5lZWRMYXllcikge1xuICAgIGNzcyArPSBcIn1cIjtcbiAgfVxuXG4gIGlmIChvYmoubWVkaWEpIHtcbiAgICBjc3MgKz0gXCJ9XCI7XG4gIH1cblxuICBpZiAob2JqLnN1cHBvcnRzKSB7XG4gICAgY3NzICs9IFwifVwiO1xuICB9XG5cbiAgdmFyIHNvdXJjZU1hcCA9IG9iai5zb3VyY2VNYXA7XG5cbiAgaWYgKHNvdXJjZU1hcCAmJiB0eXBlb2YgYnRvYSAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgIGNzcyArPSBcIlxcbi8qIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsXCIuY29uY2F0KGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KHNvdXJjZU1hcCkpKSksIFwiICovXCIpO1xuICB9IC8vIEZvciBvbGQgSUVcblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgICovXG5cblxuICBvcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtKGNzcywgc3R5bGVFbGVtZW50LCBvcHRpb25zLm9wdGlvbnMpO1xufVxuXG5mdW5jdGlvbiByZW1vdmVTdHlsZUVsZW1lbnQoc3R5bGVFbGVtZW50KSB7XG4gIC8vIGlzdGFuYnVsIGlnbm9yZSBpZlxuICBpZiAoc3R5bGVFbGVtZW50LnBhcmVudE5vZGUgPT09IG51bGwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBzdHlsZUVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzdHlsZUVsZW1lbnQpO1xufVxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5cblxuZnVuY3Rpb24gZG9tQVBJKG9wdGlvbnMpIHtcbiAgdmFyIHN0eWxlRWxlbWVudCA9IG9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMpO1xuICByZXR1cm4ge1xuICAgIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlKG9iaikge1xuICAgICAgYXBwbHkoc3R5bGVFbGVtZW50LCBvcHRpb25zLCBvYmopO1xuICAgIH0sXG4gICAgcmVtb3ZlOiBmdW5jdGlvbiByZW1vdmUoKSB7XG4gICAgICByZW1vdmVTdHlsZUVsZW1lbnQoc3R5bGVFbGVtZW50KTtcbiAgICB9XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZG9tQVBJOyIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIHN0eWxlVGFnVHJhbnNmb3JtKGNzcywgc3R5bGVFbGVtZW50KSB7XG4gIGlmIChzdHlsZUVsZW1lbnQuc3R5bGVTaGVldCkge1xuICAgIHN0eWxlRWxlbWVudC5zdHlsZVNoZWV0LmNzc1RleHQgPSBjc3M7XG4gIH0gZWxzZSB7XG4gICAgd2hpbGUgKHN0eWxlRWxlbWVudC5maXJzdENoaWxkKSB7XG4gICAgICBzdHlsZUVsZW1lbnQucmVtb3ZlQ2hpbGQoc3R5bGVFbGVtZW50LmZpcnN0Q2hpbGQpO1xuICAgIH1cblxuICAgIHN0eWxlRWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjc3MpKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0eWxlVGFnVHJhbnNmb3JtOyIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0aWQ6IG1vZHVsZUlkLFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4vLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuX193ZWJwYWNrX3JlcXVpcmVfXy5tID0gX193ZWJwYWNrX21vZHVsZXNfXztcblxuIiwiLy8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbl9fd2VicGFja19yZXF1aXJlX18ubiA9IChtb2R1bGUpID0+IHtcblx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG5cdFx0KCkgPT4gKG1vZHVsZVsnZGVmYXVsdCddKSA6XG5cdFx0KCkgPT4gKG1vZHVsZSk7XG5cdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsIHsgYTogZ2V0dGVyIH0pO1xuXHRyZXR1cm4gZ2V0dGVyO1xufTsiLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwiLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gKGV4cG9ydHMpID0+IHtcblx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG5cdH1cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5iID0gZG9jdW1lbnQuYmFzZVVSSSB8fCBzZWxmLmxvY2F0aW9uLmhyZWY7XG5cbi8vIG9iamVjdCB0byBzdG9yZSBsb2FkZWQgYW5kIGxvYWRpbmcgY2h1bmtzXG4vLyB1bmRlZmluZWQgPSBjaHVuayBub3QgbG9hZGVkLCBudWxsID0gY2h1bmsgcHJlbG9hZGVkL3ByZWZldGNoZWRcbi8vIFtyZXNvbHZlLCByZWplY3QsIFByb21pc2VdID0gY2h1bmsgbG9hZGluZywgMCA9IGNodW5rIGxvYWRlZFxudmFyIGluc3RhbGxlZENodW5rcyA9IHtcblx0XCJhcHBcIjogMFxufTtcblxuLy8gbm8gY2h1bmsgb24gZGVtYW5kIGxvYWRpbmdcblxuLy8gbm8gcHJlZmV0Y2hpbmdcblxuLy8gbm8gcHJlbG9hZGVkXG5cbi8vIG5vIEhNUlxuXG4vLyBubyBITVIgbWFuaWZlc3RcblxuLy8gbm8gb24gY2h1bmtzIGxvYWRlZFxuXG4vLyBubyBqc29ucCBmdW5jdGlvbiIsIl9fd2VicGFja19yZXF1aXJlX18ubmMgPSB1bmRlZmluZWQ7IiwiLyogZ2xvYmFsIGRvY3VtZW50LCByZXF1aXJlLCB3aW5kb3cgKi9cbmxldCBDYWxlbmRhciA9IHJlcXVpcmUoJy4vY2FsZW5kYXInKTtcblxuQ2FsZW5kYXIgPSBDYWxlbmRhci5kZWZhdWx0O1xuXG4vLyBFeHBvcnQgV2lkZ2V0VXRpbHNcbndpbmRvdy5Cb29raW5nU3luY1dpZGdldFV0aWxzID0gcmVxdWlyZSgnd2lkZ2V0LXV0aWxzJyk7XG5cbi8vIEV4cG9ydCBQb3BwZXJcbndpbmRvdy5Qb3BwZXIgPSByZXF1aXJlKCdAcG9wcGVyanMvY29yZScpO1xuXG5DYWxlbmRhci5pbml0ID0gKG9wdHMpID0+IHtcbiAgY29uc3QgaW5pdGlhbGl6ZWQgPSBbXTtcbiAgY29uc3Qgb3B0aW9ucyAgICAgPSBvcHRzIHx8IHt9O1xuICBjb25zdCBlbGVtZW50cyAgICA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLWJvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldF0nKTtcblxuICBlbGVtZW50cy5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgb3B0aW9ucy5lbCA9IGVsZW1lbnQ7XG4gICAgY29uc3QgY2FsICA9IG5ldyBDYWxlbmRhcihvcHRpb25zKTtcblxuICAgIGluaXRpYWxpemVkLnB1c2goY2FsKTtcbiAgfSk7XG5cbiAgQ2FsZW5kYXIuaW5zdGFuY2VzID0gaW5pdGlhbGl6ZWQ7XG4gIHJldHVybiBpbml0aWFsaXplZDtcbn07XG5cbkNhbGVuZGFyLlZFUlNJT04gPSByZXF1aXJlKCcuLi9wYWNrYWdlLmpzb24nKS52ZXJzaW9uO1xuXG5pZiAoZG9jdW1lbnQucmVhZHlTdGF0ZSAhPT0gJ2xvYWRpbmcnKSB7XG4gIENhbGVuZGFyLmluaXQoKTtcbn0gZWxzZSB7XG4gIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCAoKSA9PiB7XG4gICAgQ2FsZW5kYXIuaW5pdCgpO1xuICB9KTtcbn1cblxud2luZG93LkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXQgPSBDYWxlbmRhcjtcblxuZXhwb3J0IGRlZmF1bHQgQ2FsZW5kYXI7XG4iXSwibmFtZXMiOlsiZ2V0Q29tcG9zaXRlUmVjdCIsImdldExheW91dFJlY3QiLCJsaXN0U2Nyb2xsUGFyZW50cyIsImdldE9mZnNldFBhcmVudCIsImdldENvbXB1dGVkU3R5bGUiLCJvcmRlck1vZGlmaWVycyIsImRlYm91bmNlIiwidmFsaWRhdGVNb2RpZmllcnMiLCJ1bmlxdWVCeSIsImdldEJhc2VQbGFjZW1lbnQiLCJtZXJnZUJ5TmFtZSIsImRldGVjdE92ZXJmbG93IiwiaXNFbGVtZW50IiwiYXV0byIsIklOVkFMSURfRUxFTUVOVF9FUlJPUiIsIklORklOSVRFX0xPT1BfRVJST1IiLCJERUZBVUxUX09QVElPTlMiLCJwbGFjZW1lbnQiLCJtb2RpZmllcnMiLCJzdHJhdGVneSIsImFyZVZhbGlkRWxlbWVudHMiLCJfbGVuIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiYXJncyIsIkFycmF5IiwiX2tleSIsInNvbWUiLCJlbGVtZW50IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwicG9wcGVyR2VuZXJhdG9yIiwiZ2VuZXJhdG9yT3B0aW9ucyIsIl9nZW5lcmF0b3JPcHRpb25zIiwiX2dlbmVyYXRvck9wdGlvbnMkZGVmIiwiZGVmYXVsdE1vZGlmaWVycyIsIl9nZW5lcmF0b3JPcHRpb25zJGRlZjIiLCJkZWZhdWx0T3B0aW9ucyIsImNyZWF0ZVBvcHBlciIsInJlZmVyZW5jZSIsInBvcHBlciIsIm9wdGlvbnMiLCJzdGF0ZSIsIm9yZGVyZWRNb2RpZmllcnMiLCJPYmplY3QiLCJhc3NpZ24iLCJtb2RpZmllcnNEYXRhIiwiZWxlbWVudHMiLCJhdHRyaWJ1dGVzIiwic3R5bGVzIiwiZWZmZWN0Q2xlYW51cEZucyIsImlzRGVzdHJveWVkIiwiaW5zdGFuY2UiLCJzZXRPcHRpb25zIiwic2V0T3B0aW9uc0FjdGlvbiIsImNsZWFudXBNb2RpZmllckVmZmVjdHMiLCJzY3JvbGxQYXJlbnRzIiwiY29udGV4dEVsZW1lbnQiLCJjb25jYXQiLCJmaWx0ZXIiLCJtIiwiZW5hYmxlZCIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsIl9yZWYiLCJuYW1lIiwiZmxpcE1vZGlmaWVyIiwiZmluZCIsIl9yZWYyIiwiY29uc29sZSIsImVycm9yIiwiam9pbiIsIl9nZXRDb21wdXRlZFN0eWxlIiwibWFyZ2luVG9wIiwibWFyZ2luUmlnaHQiLCJtYXJnaW5Cb3R0b20iLCJtYXJnaW5MZWZ0IiwibWFyZ2luIiwicGFyc2VGbG9hdCIsIndhcm4iLCJydW5Nb2RpZmllckVmZmVjdHMiLCJ1cGRhdGUiLCJmb3JjZVVwZGF0ZSIsIl9zdGF0ZSRlbGVtZW50cyIsInJlY3RzIiwicmVzZXQiLCJmb3JFYWNoIiwibW9kaWZpZXIiLCJkYXRhIiwiX19kZWJ1Z19sb29wc19fIiwiaW5kZXgiLCJfc3RhdGUkb3JkZXJlZE1vZGlmaWUiLCJmbiIsIl9zdGF0ZSRvcmRlcmVkTW9kaWZpZTIiLCJfb3B0aW9ucyIsIlByb21pc2UiLCJyZXNvbHZlIiwiZGVzdHJveSIsInRoZW4iLCJvbkZpcnN0VXBkYXRlIiwiX3JlZjMiLCJfcmVmMyRvcHRpb25zIiwiZWZmZWN0IiwiY2xlYW51cEZuIiwibm9vcEZuIiwicHVzaCIsImlzU2hhZG93Um9vdCIsImNvbnRhaW5zIiwicGFyZW50IiwiY2hpbGQiLCJyb290Tm9kZSIsImdldFJvb3ROb2RlIiwibmV4dCIsImlzU2FtZU5vZGUiLCJwYXJlbnROb2RlIiwiaG9zdCIsImlzSFRNTEVsZW1lbnQiLCJyb3VuZCIsImdldFdpbmRvdyIsImlzTGF5b3V0Vmlld3BvcnQiLCJpbmNsdWRlU2NhbGUiLCJpc0ZpeGVkU3RyYXRlZ3kiLCJjbGllbnRSZWN0Iiwic2NhbGVYIiwic2NhbGVZIiwib2Zmc2V0V2lkdGgiLCJ3aWR0aCIsIm9mZnNldEhlaWdodCIsImhlaWdodCIsIndpbmRvdyIsInZpc3VhbFZpZXdwb3J0IiwiYWRkVmlzdWFsT2Zmc2V0cyIsIngiLCJsZWZ0Iiwib2Zmc2V0TGVmdCIsInkiLCJ0b3AiLCJvZmZzZXRUb3AiLCJyaWdodCIsImJvdHRvbSIsInZpZXdwb3J0IiwiZ2V0Vmlld3BvcnRSZWN0IiwiZ2V0RG9jdW1lbnRSZWN0IiwiZ2V0RG9jdW1lbnRFbGVtZW50IiwiZ2V0UGFyZW50Tm9kZSIsImdldE5vZGVOYW1lIiwicmVjdFRvQ2xpZW50UmVjdCIsIm1heCIsIm1pbiIsImdldElubmVyQm91bmRpbmdDbGllbnRSZWN0IiwicmVjdCIsImNsaWVudFRvcCIsImNsaWVudExlZnQiLCJjbGllbnRIZWlnaHQiLCJjbGllbnRXaWR0aCIsImdldENsaWVudFJlY3RGcm9tTWl4ZWRUeXBlIiwiY2xpcHBpbmdQYXJlbnQiLCJnZXRDbGlwcGluZ1BhcmVudHMiLCJjbGlwcGluZ1BhcmVudHMiLCJjYW5Fc2NhcGVDbGlwcGluZyIsImluZGV4T2YiLCJwb3NpdGlvbiIsImNsaXBwZXJFbGVtZW50IiwiZ2V0Q2xpcHBpbmdSZWN0IiwiYm91bmRhcnkiLCJyb290Qm91bmRhcnkiLCJtYWluQ2xpcHBpbmdQYXJlbnRzIiwiZmlyc3RDbGlwcGluZ1BhcmVudCIsImNsaXBwaW5nUmVjdCIsInJlZHVjZSIsImFjY1JlY3QiLCJnZXROb2RlU2Nyb2xsIiwiZ2V0V2luZG93U2Nyb2xsQmFyWCIsImlzU2Nyb2xsUGFyZW50IiwiaXNFbGVtZW50U2NhbGVkIiwiZWxlbWVudE9yVmlydHVhbEVsZW1lbnQiLCJvZmZzZXRQYXJlbnQiLCJpc0ZpeGVkIiwiaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQiLCJvZmZzZXRQYXJlbnRJc1NjYWxlZCIsImRvY3VtZW50RWxlbWVudCIsInNjcm9sbCIsInNjcm9sbExlZnQiLCJzY3JvbGxUb3AiLCJvZmZzZXRzIiwib3duZXJEb2N1bWVudCIsImRvY3VtZW50IiwiZ2V0V2luZG93U2Nyb2xsIiwiX2VsZW1lbnQkb3duZXJEb2N1bWVuIiwiaHRtbCIsIndpblNjcm9sbCIsImJvZHkiLCJzY3JvbGxXaWR0aCIsInNjcm9sbEhlaWdodCIsImRpcmVjdGlvbiIsImdldEhUTUxFbGVtZW50U2Nyb2xsIiwiTWF0aCIsImFicyIsIm5vZGVOYW1lIiwidG9Mb3dlckNhc2UiLCJub2RlIiwiaXNUYWJsZUVsZW1lbnQiLCJnZXRVQVN0cmluZyIsImdldFRydWVPZmZzZXRQYXJlbnQiLCJnZXRDb250YWluaW5nQmxvY2siLCJpc0ZpcmVmb3giLCJ0ZXN0IiwiaXNJRSIsImVsZW1lbnRDc3MiLCJjdXJyZW50Tm9kZSIsImNzcyIsInRyYW5zZm9ybSIsInBlcnNwZWN0aXZlIiwiY29udGFpbiIsIndpbGxDaGFuZ2UiLCJhc3NpZ25lZFNsb3QiLCJnZXRTY3JvbGxQYXJlbnQiLCJ3aW4iLCJsYXlvdXRWaWV3cG9ydCIsInRvU3RyaW5nIiwiZGVmYXVsdFZpZXciLCJwYWdlWE9mZnNldCIsInBhZ2VZT2Zmc2V0IiwiT3duRWxlbWVudCIsIkVsZW1lbnQiLCJIVE1MRWxlbWVudCIsIlNoYWRvd1Jvb3QiLCJvdmVyZmxvdyIsIm92ZXJmbG93WCIsIm92ZXJmbG93WSIsImxpc3QiLCJzY3JvbGxQYXJlbnQiLCJpc0JvZHkiLCJ0YXJnZXQiLCJ1cGRhdGVkTGlzdCIsImJhc2VQbGFjZW1lbnRzIiwic3RhcnQiLCJlbmQiLCJ2YXJpYXRpb25QbGFjZW1lbnRzIiwiYWNjIiwicGxhY2VtZW50cyIsImJlZm9yZVJlYWQiLCJyZWFkIiwiYWZ0ZXJSZWFkIiwiYmVmb3JlTWFpbiIsIm1haW4iLCJhZnRlck1haW4iLCJiZWZvcmVXcml0ZSIsIndyaXRlIiwiYWZ0ZXJXcml0ZSIsIm1vZGlmaWVyUGhhc2VzIiwiY3JlYXRlUG9wcGVyQmFzZSIsImNyZWF0ZVBvcHBlckxpdGUiLCJhcHBseVN0eWxlcyIsImtleXMiLCJzdHlsZSIsInZhbHVlIiwicmVtb3ZlQXR0cmlidXRlIiwic2V0QXR0cmlidXRlIiwiaW5pdGlhbFN0eWxlcyIsImFycm93Iiwic3R5bGVQcm9wZXJ0aWVzIiwiaGFzT3duUHJvcGVydHkiLCJwcm9wZXJ0eSIsImF0dHJpYnV0ZSIsInBoYXNlIiwicmVxdWlyZXMiLCJnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQiLCJ3aXRoaW4iLCJtZXJnZVBhZGRpbmdPYmplY3QiLCJleHBhbmRUb0hhc2hNYXAiLCJ0b1BhZGRpbmdPYmplY3QiLCJwYWRkaW5nIiwiX3N0YXRlJG1vZGlmaWVyc0RhdGEkIiwiYXJyb3dFbGVtZW50IiwicG9wcGVyT2Zmc2V0cyIsImJhc2VQbGFjZW1lbnQiLCJheGlzIiwiaXNWZXJ0aWNhbCIsImxlbiIsInBhZGRpbmdPYmplY3QiLCJhcnJvd1JlY3QiLCJtaW5Qcm9wIiwibWF4UHJvcCIsImVuZERpZmYiLCJzdGFydERpZmYiLCJhcnJvd09mZnNldFBhcmVudCIsImNsaWVudFNpemUiLCJjZW50ZXJUb1JlZmVyZW5jZSIsImNlbnRlciIsIm9mZnNldCIsImF4aXNQcm9wIiwiY2VudGVyT2Zmc2V0IiwiX29wdGlvbnMkZWxlbWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJyZXF1aXJlc0lmRXhpc3RzIiwiZ2V0VmFyaWF0aW9uIiwidW5zZXRTaWRlcyIsInJvdW5kT2Zmc2V0c0J5RFBSIiwiZHByIiwiZGV2aWNlUGl4ZWxSYXRpbyIsIm1hcFRvU3R5bGVzIiwiX09iamVjdCRhc3NpZ24yIiwicG9wcGVyUmVjdCIsInZhcmlhdGlvbiIsImdwdUFjY2VsZXJhdGlvbiIsImFkYXB0aXZlIiwicm91bmRPZmZzZXRzIiwiX29mZnNldHMkeCIsIl9vZmZzZXRzJHkiLCJoYXNYIiwiaGFzWSIsInNpZGVYIiwic2lkZVkiLCJoZWlnaHRQcm9wIiwid2lkdGhQcm9wIiwib2Zmc2V0WSIsIm9mZnNldFgiLCJjb21tb25TdHlsZXMiLCJfcmVmNCIsIl9PYmplY3QkYXNzaWduIiwiY29tcHV0ZVN0eWxlcyIsIl9yZWY1IiwiX29wdGlvbnMkZ3B1QWNjZWxlcmF0IiwiX29wdGlvbnMkYWRhcHRpdmUiLCJfb3B0aW9ucyRyb3VuZE9mZnNldHMiLCJ0cmFuc2l0aW9uUHJvcGVydHkiLCJwYXNzaXZlIiwiX29wdGlvbnMkc2Nyb2xsIiwiX29wdGlvbnMkcmVzaXplIiwicmVzaXplIiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJnZXRPcHBvc2l0ZVBsYWNlbWVudCIsImdldE9wcG9zaXRlVmFyaWF0aW9uUGxhY2VtZW50IiwiY29tcHV0ZUF1dG9QbGFjZW1lbnQiLCJnZXRFeHBhbmRlZEZhbGxiYWNrUGxhY2VtZW50cyIsIm9wcG9zaXRlUGxhY2VtZW50IiwiZmxpcCIsIl9za2lwIiwiX29wdGlvbnMkbWFpbkF4aXMiLCJtYWluQXhpcyIsImNoZWNrTWFpbkF4aXMiLCJfb3B0aW9ucyRhbHRBeGlzIiwiYWx0QXhpcyIsImNoZWNrQWx0QXhpcyIsInNwZWNpZmllZEZhbGxiYWNrUGxhY2VtZW50cyIsImZhbGxiYWNrUGxhY2VtZW50cyIsImFsdEJvdW5kYXJ5IiwiX29wdGlvbnMkZmxpcFZhcmlhdGlvIiwiZmxpcFZhcmlhdGlvbnMiLCJhbGxvd2VkQXV0b1BsYWNlbWVudHMiLCJwcmVmZXJyZWRQbGFjZW1lbnQiLCJpc0Jhc2VQbGFjZW1lbnQiLCJyZWZlcmVuY2VSZWN0IiwiY2hlY2tzTWFwIiwiTWFwIiwibWFrZUZhbGxiYWNrQ2hlY2tzIiwiZmlyc3RGaXR0aW5nUGxhY2VtZW50IiwiaSIsIl9iYXNlUGxhY2VtZW50IiwiaXNTdGFydFZhcmlhdGlvbiIsIm1haW5WYXJpYXRpb25TaWRlIiwiYWx0VmFyaWF0aW9uU2lkZSIsImNoZWNrcyIsImV2ZXJ5IiwiY2hlY2siLCJzZXQiLCJudW1iZXJPZkNoZWNrcyIsIl9sb29wIiwiX2kiLCJmaXR0aW5nUGxhY2VtZW50IiwiZ2V0Iiwic2xpY2UiLCJfcmV0IiwiZ2V0U2lkZU9mZnNldHMiLCJwcmV2ZW50ZWRPZmZzZXRzIiwiaXNBbnlTaWRlRnVsbHlDbGlwcGVkIiwic2lkZSIsImhpZGUiLCJwcmV2ZW50T3ZlcmZsb3ciLCJyZWZlcmVuY2VPdmVyZmxvdyIsImVsZW1lbnRDb250ZXh0IiwicG9wcGVyQWx0T3ZlcmZsb3ciLCJyZWZlcmVuY2VDbGlwcGluZ09mZnNldHMiLCJwb3BwZXJFc2NhcGVPZmZzZXRzIiwiaXNSZWZlcmVuY2VIaWRkZW4iLCJoYXNQb3BwZXJFc2NhcGVkIiwiZGVmYXVsdCIsImV2ZW50TGlzdGVuZXJzIiwiZGlzdGFuY2VBbmRTa2lkZGluZ1RvWFkiLCJpbnZlcnREaXN0YW5jZSIsInNraWRkaW5nIiwiZGlzdGFuY2UiLCJfb3B0aW9ucyRvZmZzZXQiLCJfZGF0YSRzdGF0ZSRwbGFjZW1lbnQiLCJjb21wdXRlT2Zmc2V0cyIsImdldEFsdEF4aXMiLCJ3aXRoaW5NYXhDbGFtcCIsImdldEZyZXNoU2lkZU9iamVjdCIsIm1hdGhNaW4iLCJtYXRoTWF4IiwiX29wdGlvbnMkdGV0aGVyIiwidGV0aGVyIiwiX29wdGlvbnMkdGV0aGVyT2Zmc2V0IiwidGV0aGVyT2Zmc2V0IiwidGV0aGVyT2Zmc2V0VmFsdWUiLCJub3JtYWxpemVkVGV0aGVyT2Zmc2V0VmFsdWUiLCJvZmZzZXRNb2RpZmllclN0YXRlIiwiX29mZnNldE1vZGlmaWVyU3RhdGUkIiwibWFpblNpZGUiLCJhbHRTaWRlIiwiYWRkaXRpdmUiLCJtaW5MZW4iLCJtYXhMZW4iLCJhcnJvd1BhZGRpbmdPYmplY3QiLCJhcnJvd1BhZGRpbmdNaW4iLCJhcnJvd1BhZGRpbmdNYXgiLCJhcnJvd0xlbiIsIm1pbk9mZnNldCIsIm1heE9mZnNldCIsImNsaWVudE9mZnNldCIsIm9mZnNldE1vZGlmaWVyVmFsdWUiLCJ0ZXRoZXJNaW4iLCJ0ZXRoZXJNYXgiLCJwcmV2ZW50ZWRPZmZzZXQiLCJfb2Zmc2V0TW9kaWZpZXJTdGF0ZSQyIiwiX21haW5TaWRlIiwiX2FsdFNpZGUiLCJfb2Zmc2V0IiwiX21pbiIsIl9tYXgiLCJpc09yaWdpblNpZGUiLCJfb2Zmc2V0TW9kaWZpZXJWYWx1ZSIsIl90ZXRoZXJNaW4iLCJfdGV0aGVyTWF4IiwiX3ByZXZlbnRlZE9mZnNldCIsImFsbFBsYWNlbWVudHMiLCJfb3B0aW9ucyRhbGxvd2VkQXV0b1AiLCJhbGxvd2VkUGxhY2VtZW50cyIsIm92ZXJmbG93cyIsInNvcnQiLCJhIiwiYiIsImNvbW1vblgiLCJjb21tb25ZIiwicGVuZGluZyIsInVuZGVmaW5lZCIsIl9vcHRpb25zJHBsYWNlbWVudCIsIl9vcHRpb25zJHN0cmF0ZWd5IiwiX29wdGlvbnMkYm91bmRhcnkiLCJfb3B0aW9ucyRyb290Qm91bmRhcnkiLCJfb3B0aW9ucyRlbGVtZW50Q29udGUiLCJfb3B0aW9ucyRhbHRCb3VuZGFyeSIsIl9vcHRpb25zJHBhZGRpbmciLCJhbHRDb250ZXh0IiwiY2xpcHBpbmdDbGllbnRSZWN0IiwicmVmZXJlbmNlQ2xpZW50UmVjdCIsInBvcHBlckNsaWVudFJlY3QiLCJlbGVtZW50Q2xpZW50UmVjdCIsIm92ZXJmbG93T2Zmc2V0cyIsIm9mZnNldERhdGEiLCJrZXkiLCJtdWx0aXBseSIsImhhc2hNYXAiLCJmb3JtYXQiLCJzdHIiLCJwIiwiYyIsInJlcGxhY2UiLCJzcGxpdCIsImhhc2giLCJtYXRjaGVkIiwibWVyZ2VkIiwiY3VycmVudCIsImV4aXN0aW5nIiwibWFwIiwib3JkZXIiLCJ2aXNpdGVkIiwiU2V0IiwicmVzdWx0IiwiYWRkIiwiZGVwIiwiaGFzIiwiZGVwTW9kaWZpZXIiLCJhcnIiLCJpZGVudGlmaWVycyIsIml0ZW0iLCJpZGVudGlmaWVyIiwidWFEYXRhIiwibmF2aWdhdG9yIiwidXNlckFnZW50RGF0YSIsImJyYW5kcyIsImJyYW5kIiwidmVyc2lvbiIsInVzZXJBZ2VudCIsIklOVkFMSURfTU9ESUZJRVJfRVJST1IiLCJNSVNTSU5HX0RFUEVOREVOQ1lfRVJST1IiLCJWQUxJRF9QUk9QRVJUSUVTIiwic2VsZiIsIlN0cmluZyIsImlzQXJyYXkiLCJzIiwicmVxdWlyZW1lbnQiLCJtb2QiLCJ2IiwibW9kdWxlIiwiZXhwb3J0cyIsImNzc1dpdGhNYXBwaW5nVG9TdHJpbmciLCJjb250ZW50IiwibmVlZExheWVyIiwibW9kdWxlcyIsIm1lZGlhIiwiZGVkdXBlIiwic3VwcG9ydHMiLCJsYXllciIsImFscmVhZHlJbXBvcnRlZE1vZHVsZXMiLCJrIiwiaWQiLCJfayIsInVybCIsIl9fZXNNb2R1bGUiLCJuZWVkUXVvdGVzIiwiY3NzTWFwcGluZyIsImJ0b2EiLCJiYXNlNjQiLCJ1bmVzY2FwZSIsImVuY29kZVVSSUNvbXBvbmVudCIsIkpTT04iLCJzdHJpbmdpZnkiLCJzb3VyY2VNYXBwaW5nIiwic291cmNlVVJMcyIsInNvdXJjZXMiLCJzb3VyY2UiLCJzb3VyY2VSb290IiwiY3VycmVuY3lTeW1ib2xNYXAiLCJyZXF1aXJlIiwiZ2V0U3ltYm9sRnJvbUN1cnJlbmN5IiwiY3VycmVuY3lDb2RlIiwiY29kZSIsInRvVXBwZXJDYXNlIiwicHJvdG90eXBlIiwiY2FsbCIsIkFFRCIsIkFGTiIsIkFMTCIsIkFNRCIsIkFORyIsIkFPQSIsIkFSUyIsIkFVRCIsIkFXRyIsIkFaTiIsIkJBTSIsIkJCRCIsIkJEVCIsIkJHTiIsIkJIRCIsIkJJRiIsIkJNRCIsIkJORCIsIkJPQiIsIkJPViIsIkJSTCIsIkJTRCIsIkJUQyIsIkJUTiIsIkJXUCIsIkJZTiIsIkJZUiIsIkJaRCIsIkNBRCIsIkNERiIsIkNIRSIsIkNIRiIsIkNIVyIsIkNMRiIsIkNMUCIsIkNOWSIsIkNPUCIsIkNPVSIsIkNSQyIsIkNVQyIsIkNVUCIsIkNWRSIsIkNaSyIsIkRKRiIsIkRLSyIsIkRPUCIsIkRaRCIsIkVFSyIsIkVHUCIsIkVSTiIsIkVUQiIsIkVUSCIsIkVVUiIsIkZKRCIsIkZLUCIsIkdCUCIsIkdFTCIsIkdHUCIsIkdIQyIsIkdIUyIsIkdJUCIsIkdNRCIsIkdORiIsIkdUUSIsIkdZRCIsIkhLRCIsIkhOTCIsIkhSSyIsIkhURyIsIkhVRiIsIklEUiIsIklMUyIsIklNUCIsIklOUiIsIklRRCIsIklSUiIsIklTSyIsIkpFUCIsIkpNRCIsIkpPRCIsIkpQWSIsIktFUyIsIktHUyIsIktIUiIsIktNRiIsIktQVyIsIktSVyIsIktXRCIsIktZRCIsIktaVCIsIkxBSyIsIkxCUCIsIkxLUiIsIkxSRCIsIkxTTCIsIkxUQyIsIkxUTCIsIkxWTCIsIkxZRCIsIk1BRCIsIk1ETCIsIk1HQSIsIk1LRCIsIk1NSyIsIk1OVCIsIk1PUCIsIk1STyIsIk1SVSIsIk1VUiIsIk1WUiIsIk1XSyIsIk1YTiIsIk1YViIsIk1ZUiIsIk1aTiIsIk5BRCIsIk5HTiIsIk5JTyIsIk5PSyIsIk5QUiIsIk5aRCIsIk9NUiIsIlBBQiIsIlBFTiIsIlBHSyIsIlBIUCIsIlBLUiIsIlBMTiIsIlBZRyIsIlFBUiIsIlJNQiIsIlJPTiIsIlJTRCIsIlJVQiIsIlJXRiIsIlNBUiIsIlNCRCIsIlNDUiIsIlNERyIsIlNFSyIsIlNHRCIsIlNIUCIsIlNMTCIsIlNPUyIsIlNSRCIsIlNTUCIsIlNURCIsIlNUTiIsIlNWQyIsIlNZUCIsIlNaTCIsIlRIQiIsIlRKUyIsIlRNVCIsIlRORCIsIlRPUCIsIlRSTCIsIlRSWSIsIlRURCIsIlRWRCIsIlRXRCIsIlRaUyIsIlVBSCIsIlVHWCIsIlVTRCIsIlVZSSIsIlVZVSIsIlVZVyIsIlVaUyIsIlZFRiIsIlZFUyIsIlZORCIsIlZVViIsIldTVCIsIlhBRiIsIlhCVCIsIlhDRCIsIlhPRiIsIlhQRiIsIlhTVSIsIlhVQSIsIllFUiIsIlpBUiIsIlpNVyIsIlpXRCIsIlpXTCIsImdldEZvcm1hdE9wdGlvbnMiLCJ0aW1lem9uZSIsInVzZU9wdGlvbnMiLCJ0eiIsIk51bWJlciIsImlzRmluaXRlIiwiZ2V0VGltZXpvbmVPZmZzZXRNaW51dGVzIiwiZGF0ZSIsImZsb29yIiwiRGF0ZSIsImdldFRpbWV6b25lT2Zmc2V0IiwidHpVcHBlciIsImRlZmF1bHRUaW1lem9uZU5hbWVzIiwiRXJyb3IiLCJzdHJmdGltZSIsInRvRGF0ZSIsInRvSlNEYXRlIiwidG9rZW5zIiwiVGltZXN0YW1wUGFyc2VyIiwicGFyc2VGb3JtYXRTdHJpbmciLCJ0aW1lem9uZU9mZnNldE1pbnV0ZXMiLCJ0ekRhdGUiLCJzZXRVVENNaW51dGVzIiwiZ2V0VVRDTWludXRlcyIsIm91dHB1dCIsInRva2VuIiwiRGlyZWN0aXZlIiwiVG9rZW4iLCJzdHJwdGltZSIsInRpbWVzdGFtcCIsInBhcnNlciIsInBhcnNlIiwiZ2V0RGF0ZSIsInN0cnRpbWUiLCJlbmdsaXNoIiwiZXJhTmFtZXMiLCJtZXJpZGllbU5hbWVzIiwic2hvcnRXZWVrZGF5TmFtZXMiLCJsb25nV2Vla2RheU5hbWVzIiwic2hvcnRNb250aE5hbWVzIiwibG9uZ01vbnRoTmFtZXMiLCJvcmRpbmFsVHJhbnNmb3JtIiwibnVtYmVyIiwiZGlnaXQiLCJsZWZ0UGFkIiwiY2hhciIsInRleHQiLCJzdHJpbmciLCJ3cml0ZVRpbWV6b25lT2Zmc2V0Iiwib2Zmc2V0TWludXRlcyIsImFic09mZnNldCIsInNpZ24iLCJob3VyIiwibWludXRlIiwiZ2V0RGF5T2ZXZWVrIiwieWVhciIsImdldFVUQ0Z1bGxZZWFyIiwibW9udGgiLCJnZXRVVENNb250aCIsImRheSIsImdldFVUQ0RhdGUiLCJnZXREYXlPZlllYXIiLCJsZW5ndGhzIiwibW9udGhMZW5ndGhzIiwiZm9yWWVhciIsIm1vbnRocyIsImdldFdlZWtPZlllYXJGcm9tU3VuZGF5IiwiZGF5T2ZZZWFyIiwiZmlyc3REYXlPZldlZWsiLCJnZXRGaXJzdFdlZWtkYXlJblllYXIiLCJnZXRXZWVrT2ZZZWFyRnJvbU1vbmRheSIsImRheU9mV2VlayIsInN1bmRheVdlZWsiLCJnZXRJU09XZWVrc0luWWVhciIsInByaW9yWWVhciIsImdldElTT1dlZWtPZlllYXIiLCJ3ZWVrTnVtYmVyIiwiZ2V0SVNPV2Vla0RhdGVZZWFyIiwiY29uc3RydWN0b3IiLCJuYW1lcyIsInBhZExlbmd0aCIsImxpa2VseUxlbmd0aCIsIm1pbmltdW0iLCJtYXhpbXVtIiwiY2FuQmVOZWdhdGl2ZSIsInJld3JpdGUiLCJwYXJzZUZ1bmN0aW9uIiwid3JpdGVGdW5jdGlvbiIsInN0b3JlRnVuY3Rpb24iLCJzdG9yZSIsImdldEJ5TmFtZSIsImRpcmVjdGl2ZSIsImlzT3JkaW5hbCIsImdldENhbkJlTmVnYXRpdmUiLCJnZXRMaWtlbHlMZW5ndGgiLCJnZXRSZXdyaXRlUGFyc2VkIiwicmV3cml0ZVBhcnNlZFZhbHVlIiwiZXhwYW5kZWRGcm9tIiwiaGFzUGFyc2VGdW5jdGlvbiIsImhhc1N0b3JlRnVuY3Rpb24iLCJudW1iZXJJbkJvdW5kcyIsImdldEJvdW5kc1N0cmluZyIsIkRpcmVjdGl2ZVRva2VuIiwicmVzdWx0U3RyaW5nIiwidXBwZXIiLCJTdHJpbmdUb2tlbiIsIkRpcmVjdGl2ZVN0cmluZ1Rva2VuIiwiYWRkQ2hhcmFjdGVyIiwiY2giLCJwYXJzZVdlZWtkYXlOYW1lIiwiZ2V0VVRDRGF5IiwicGFyc2VNb250aE5hbWUiLCJjZW50dXJ5IiwiZGF5T2ZNb250aCIsIm1pY3Jvc2Vjb25kIiwiZ2V0VVRDTWlsbGlzZWNvbmRzIiwiaXNvVHdvRGlnaXRZZWFyIiwiaXNvWWVhciIsImdldFVUQ0hvdXJzIiwibWlsbGlzZWNvbmQiLCJtZXJpZGllbSIsInBhcnNlTWVyaWRpZW1OYW1lIiwibWljcm9zZWNvbmRzU2luY2VFcG9jaCIsImdldFRpbWUiLCJzZWNvbmRzU2luY2VFcG9jaCIsInNlY29uZCIsImdldFVUQ1NlY29uZHMiLCJ3ZWVrT2ZZZWFyRnJvbVN1bmRheSIsImlzb1dlZWtPZlllYXIiLCJ3ZWVrT2ZZZWFyRnJvbU1vbmRheSIsInR3b0RpZ2l0WWVhciIsInBhcnNlVGltZXpvbmVPZmZzZXQiLCJ0ekxpc3QiLCJnZXRUaW1lem9uZU5hbWVMaXN0IiwicGFyc2VJbmRleEluTGlzdCIsInRpbWV6b25lTmFtZXMiLCJlcmEiLCJwYXJzZUVyYU5hbWUiLCJUaW1lc3RhbXBQYXJzZUVycm9yIiwicmVhc29uIiwiY3VycmVudFRva2VuIiwibWVzc2FnZSIsImNhcHR1cmVTdGFja1RyYWNlIiwic3RhY2siLCJjcmVhdGUiLCJpc0RpZ2l0IiwiZ2V0WWVhckZyb21Ud29EaWdpdHMiLCJnZXRNb250aEZyb21EYXlPZlllYXIiLCJkYXlzIiwiZ2V0RGF5T2ZNb250aEZyb21EYXlPZlllYXIiLCJnZXREYXRlRnJvbUlTT1dlZWtEYXRlIiwid2Vla2RheU9mSmFuNCIsImRheXNJblllYXIiLCJpc0xlYXBZZWFyIiwiZ2V0RGF0ZUZyb21TdW5kYXlXZWVrRGF0ZSIsIndlZWtPZlllYXIiLCJnZXREYXRlRnJvbU1vbmRheVdlZWtEYXRlIiwic3VuZGF5RGF5T2ZZZWFyIiwiZm9ya0xlbmd0aCIsIm1pbGxpc2Vjb25kc1NpbmNlRXBvY2giLCJnZXRUaW1lem9uZU9mZnNldE9mRGF0ZSIsIm9mZnNldFNpZ24iLCJ0b3RhbE1pbnV0ZXMiLCJnZXRGdWxsWWVhciIsInNldFVUQ0Z1bGxZZWFyIiwic2V0VVRDTW9udGgiLCJzZXRVVENEYXRlIiwic2V0VVRDSG91cnMiLCJzZXRVVENTZWNvbmRzIiwic2V0VVRDTWlsbGlzZWNvbmRzIiwiY29weSIsImZvcmsiLCJzdGFydFRva2VuSW5kZXgiLCJwYXJzZVN0cmluZ1Rva2VuIiwicGFyc2VBbWJpZ3VvdXNOdW1iZXIiLCJwYXJzZU51bWJlciIsInRva2VuSW5kZXgiLCJsYXN0V2hvbGVFcnJvciIsImxlbmd0aExpbWl0IiwiSW5maW5pdHkiLCJuZWdhdGl2ZSIsInRyaW0iLCJpc0ludGVnZXIiLCJvcmRpbmFsIiwicG9zc2libGUiLCJwb3NzaWJsZUNvdW50IiwibWF0Y2hJbmRleCIsIm1hdGNoTGVuZ3RoIiwiaiIsInRpbWV6b25lTmFtZUxpc3QiLCJob3VycyIsIm1pbnV0ZXMiLCJmb3JtYXRTdHJpbmciLCJkaXIiLCJ6dWx1VGltZXpvbmUiLCJjb21tb24iLCJsZWFwIiwiaXNPYmplY3QiLCJzZXJpYWxpemUiLCJ0b1VuZGVyc2NvcmUiLCJhamF4IiwiYXBpVXJsIiwic3VjY2VzcyIsInBhcmFtcyIsIm1ldGhvZCIsInhtbEh0dHAiLCJYTUxIdHRwUmVxdWVzdCIsImlzU3VjY2VzcyIsInN0YXR1cyIsIm9wZW4iLCJzZXRSZXF1ZXN0SGVhZGVyIiwib25yZWFkeXN0YXRlY2hhbmdlIiwicmVzcG9uc2UiLCJyZWFkeVN0YXRlIiwicmVzcG9uc2VUZXh0IiwiZSIsInNlbmQiLCJ0b0xvY2FsZVN0cmluZ1N1cHBvcnRzT3B0aW9ucyIsIkludGwiLCJOdW1iZXJGb3JtYXQiLCJjdXJyZW5jeUZvcm1hdHRlciIsImxhbmciLCJjdXJyZW5jeSIsIm1pbmltdW1GcmFjdGlvbkRpZ2l0cyIsIm1heGltdW1GcmFjdGlvbkRpZ2l0cyIsImlzRG9sbGFyIiwiY3VycmVuY3lEaXNwbGF5IiwibnVtYmVyRm9ybWF0IiwiZGF5c0luTW9udGgiLCJtb250aExlbmd0aCIsInJlbW92ZUNsYXNzIiwic2V0Q2xhc3NOYW1lIiwiZ2V0Q2xhc3NOYW1lIiwiYWRkQ2xhc3MiLCJlbCIsImNsYXNzTmFtZXMiLCJjbGFzc0xpc3QiLCJjbHMiLCJjcmVhdGVFbGVtZW50IiwiYXR0cnMiLCJkZXN0cm95RWxlbWVudCIsInJlbW92ZUNoaWxkIiwiZWxlbWVudEZyb21TdHJpbmciLCJpbm5lckhUTUwiLCJjaGlsZHJlbiIsImZpbmRCeUNsYXNzTmFtZSIsImNvbnRleHQiLCJjbGFzc05hbWUiLCJTVkdBbmltYXRlZFN0cmluZyIsImJhc2VWYWwiLCJ0cmF2ZXJzZVRvUGFyZW50V2l0aEF0dHIiLCJnZXRQYXJlbnRBdHRyaWJ1dGUiLCJhdHRyIiwiaGFzQ2xhc3MiLCJSZWdFeHAiLCJpcyIsImlzSW5zaWRlIiwidGFnTmFtZSIsInJlbW92ZSIsInJlZ2V4IiwiZ2V0QXR0cmlidXRlIiwiRW1pdHRlciIsIm9uIiwiZXZlbnQiLCJsaXN0ZW5lciIsImV2ZW50cyIsIm9uY2UiLCJvZmYiLCJhcHBseSIsImxpc3RlbmVycyIsInNwbGljZSIsImVtaXQiLCJpc0Z1bmN0aW9uIiwiZiIsImlzTmFOUG9seWZpbGwiLCJvIiwiaXNOYU4iLCJpc051bWVyaWMiLCJuIiwicGFyc2VJbnQiLCJ0cmF2ZXJzZU9iaiIsImRhc2hUb0NhcGl0YWwiLCJ1bmRlcnNjb3JlVG9DYXBpdGFsIiwiY2FwaXRhbGl6ZU9iaiIsIm9iamVjdCIsIm1lcmdlIiwib2JqMSIsIm9iajIiLCJpc0RlZXAiLCJvYmozIiwicGljayIsIm9iaiIsInQiLCJwaWNrZWRPYmoiLCJjb21wb25lbnQiLCJmbktleSIsImZuVmFsdWUiLCJjdXJyIiwibmV4dFByb3BlcnR5IiwiaXNTdHJpbmciLCJ2YWxpZGF0ZSIsImlzQmxhbmsiLCJpc0VtYWlsIiwibWF0Y2giLCJpc0JvdW5kZWRCeSIsImdlbkFycmF5UmFuZ2UiLCJwYXJzZUlTT1N0cmluZyIsImFyclN0ciIsIkNhbGVuZGFyVHJlZSIsInZhbGlkYXRlQ2VsbCIsInRyZWUiLCJhZGRUcmVlIiwic2VsZWN0UmFuZ2UiLCJyYW5nZSIsInNlbGVjdERheXNJbk1vbnRoIiwibW9udGhEYXlzIiwic2VsZWN0TW9udGhzSW5ZZWFyIiwiaXNWYWxpZCIsImlzUmFuZ2VWYWxpZCIsInNlbGVjdGlvbiIsIm1vbnRoUmFuZ2UiLCJzdGFydERheSIsImVuZERheSIsInNlbGVjdERheSIsImZpbHRlclZhbGlkcyIsImNlbGwiLCJyZXBsYWNlTWFwcyIsInVwZGF0ZWRBdCIsIm1hcHNUb1RyZWUiLCJyZW1vdmVNYXAiLCJtYXBzIiwibWFwU3RhcnRBdCIsImF2YWlsYWJpbGl0eSIsIm5pZ2h0bHlfcmF0ZXMiLCJtaW5pbXVtX3N0YXlzIiwiYXZhaWwiLCJyYXRlcyIsIm1pbk1hcCIsImRheVNoaWZ0IiwicHJldmlvdXNEYXRlIiwibWluU3RheSIsInJhdGUiLCJpc0F2YWlsYWJsZSIsInByZXZBdmFpbGFibGUiLCJpc01vcm5pbmdCbG9ja2VkIiwiaXNBdmFpbGFibGVPdXQiLCJnZXREYXlQcm9wZXJ0eSIsInByb3AiLCJpc0RheURpc2FibGVkIiwidGVtcGxhdGVzIiwiY29uZmlnIiwibG9jYWxlcyIsImRhdGVUb0lzbyIsImlzTGF0ZXIiLCJpc0N1cnJlbnQiLCJ2YWxpZGF0aW9uT2ZDZWxsIiwidEZvcm1hdHRlciIsImRhdGVUb0FycmF5IiwibW9udGhEaWZmIiwidXRpbHNTdHlsZXMiLCJDYWxlbmRhciIsIm9wdHMiLCJWRVJTSU9OIiwiQ1NTX1BSRUZJWCIsImNzc1ByZWZpeCIsImxvZ2dlciIsImNvbmZpZ0RhdGFzZXQiLCJkYXRhc2V0IiwiaXNEcm9wRG93biIsImluaXRDYWxlbmRhckRyb3AiLCJsb2NhbGUiLCJmb3JtYXREYXRlIiwic3RhcnRPZldlZWsiLCJjdXJyZW50RGF0ZSIsImdldE1vbnRoIiwieWVhclN0YXJ0IiwibW9udGhTdGFydCIsImRvbSIsImNUcmVlIiwiYWRkTWFwcyIsInN0YXJ0X2RhdGUiLCJpc1NlbGVjdGluZyIsImhpZ2hsaWdodGVkQm91bmRzIiwiaGFzVmFsaWRSYW5nZSIsImlzUmV2ZXJzZVNlbGVjdGFibGUiLCJpbml0IiwiY2FsZW5kYXIiLCJ0aGVtZSIsIm1vbnRoc1dyYXBwZXIiLCJhcHBlbmRDaGlsZCIsImZvcndhcmQiLCJiYWNrIiwicmVuZGVyTW9udGhzIiwiYWRkQnRuc0V2ZW50cyIsInNlbGVjdGFibGUiLCJlbFN0YXJ0QXQiLCJlbEVuZEF0IiwicmVudGFsSWQiLCJpbnB1dHNUb1ZhbHVlcyIsImxvYWRNYXBzIiwiY2hhbmdlU2VsZWN0aW9uT3JkZXIiLCJpc1JldmVyc2UiLCJkZXN0cm95TW9udGhzIiwieWVhckVuZCIsIm1vbnRoRW5kIiwiY3JlYXRlVHJlZSIsImRpc3BsYXlNb250aHMiLCJyZXZlcnNlZCIsImRpcmVjdCIsImFkZE1vbnRoRXZlbnRzIiwiYWN0aW9uc0VuYWJsZWQiLCJlbmFibGVBbGxEYXlzIiwiZGlzYWJsZUJhY2tCdG4iLCJyZWNvdmVyU2VsZWN0aW9ucyIsInNlbGVjdGlvblN0YXJ0Iiwic2VsZWN0U3RhcnQiLCJzZWxlY3Rpb25FbmQiLCJzZWxlY3RFbmQiLCJoaWdoTGlnaHRSYW5nZSIsImlzQmFja0Rpc2FibGVkIiwic3RhcnREYXRlIiwiZGlzYWJsZWQiLCJ0b2dnbGVMb2FkaW5nIiwibG9hZGluZyIsIm1vbnRoVG9SZW5kZXIiLCJtb250aHNQYWdpbmF0aW9uSnVtcCIsInllYXJUb1JlbmRlciIsInByZXZlbnREZWZhdWx0IiwiaXNFbmRGaXJzdCIsInJlc2V0U2VsZWN0aW9uT25Fc2NhcGUiLCJrZXlDb2RlIiwicmVzZXRTZWxlY3Rpb24iLCJkYXRlVmFsdWUiLCJkYXlBbHJlYWR5U2VsZWN0ZWQiLCJyYW5nZVNlbGVjdGVkIiwiaXNQYXN0VG9kYXkiLCJlbmREYXRlRmlyc3RBY3Rpb24iLCJzdGFydERhdGVGaXJzdEFjdGlvbiIsInNlbGVjdGluZ0RpcmVjdCIsInNlbGVjdGluZ1JldmVyc2VkIiwiaGlnaGxpZ2h0ZWQiLCJjb21wbGV0ZVNlbGVjdGlvbiIsImNhbERyb3AiLCJjbG9zZURyb3AiLCJyZW1vdmVIaWdobGlnaHQiLCJjZWxscyIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJob3ZlcmVkIiwiaG92ZXJlZE9mZnNldCIsImNlbGxBIiwiY2VsbEIiLCJjaGFuZ2VIaWdobGlnaHREaXJlY3Rpb24iLCJpc0Rpc2FibGVkTGVmdCIsImlzRGlzYWJsZWRDZW50ZXIiLCJpc0Rpc2FibGVkUmlnaHQiLCJpc0ludmFsaWQiLCJvZmZzZXRDZWxsIiwicmVsYXRlZFRhcmdldCIsImNvbXBhcmVEb2N1bWVudFBvc2l0aW9uIiwiTm9kZSIsIkRPQ1VNRU5UX1BPU0lUSU9OX0NPTlRBSU5FRF9CWSIsImRhdGVBcnJheSIsInNlbGVjdEVuZEFjdGlvbiIsInNlbGVjdFN0YXJ0QWN0aW9uIiwic3dpdGNoSW5wdXRGb2N1cyIsIm9uU2VsZWN0U3RhcnQiLCJvblNlbGVjdEVuZCIsImludmFsaWQiLCJkZXN0cm95VG9vbHRpcCIsInRvb2x0aXBQb3BwZXIiLCJ0b29sdGlwIiwibWF4U3RheSIsImludmFsaWRSYW5nZU1lc3NhZ2UiLCJyYW5nZVdpdGhvdXRMYXN0IiwiYWxsb3dTaG9ydGVyTWluU3RheVNlbGVjdGlvbiIsImFsbG93TG9uZ2VyTWF4U3RheVNlbGVjdGlvbiIsImhhc1ZhbGlkRGF5cyIsImhhc1ZhbGlkTWluU3RheSIsImhhc1ZhbGlkTWF4U3RheSIsImhhc0ludmFsaWRNaW5TdGF5IiwiaGFzSW52YWxpZE1heFN0YXkiLCJoYXNJbnZhbGlkRGF5cyIsInRvb2x0aXBQb3NpdGlvbiIsIlBvcHBlciIsIm9uQ2xlYXJTZWxlY3Rpb24iLCJpc1NpbmdsZUlucHV0IiwiZWxTaW5nbGVJbnB1dCIsInZhbHVlVG9JbnB1dCIsInRpbWVzIiwibURvbSIsImRvbU1vbnRoIiwiZGF5RWxlbWVudHMiLCJtb250aERvbSIsInRhYmxlSGVhZGVyIiwiaGVhZGVyVGVtcGxhdGVTdHJpbmciLCJjYXB0aW9uIiwiZGF5c1RlbXBsYXRlU3RyaW5nIiwiaGVhZGVyIiwid2Vla2RheXNMYWJlbHNFeHRlbmRlZCIsImRheXNQZXJXZWVrIiwid2Vla0RheUxhYmVsIiwic3RhcnRPZk1vbnRoIiwiZ2V0RGF5Iiwicm93VGVtcGxhdGUiLCJ3ZWVrUm93IiwibW9udGhUZW1wbGF0ZSIsIndlZWtTaGlmdCIsInJvd3MiLCJ3ZWVrU2hpZnRDb3JyZWN0ZWQiLCJkYXlDb3VudGVyIiwid2VlayIsImRheVRlbXBsYXRlU3RyaW5nIiwid2Vla0RheVBsYWNlaG9sZGVyIiwiY2xvc2UiLCJzaG93UmF0ZXMiLCJpc0Rpc2FibGVkIiwiaXNDdXJyZW50RGF5IiwiaXNBdmFpbGFibGVJbiIsIndlZWtEYXkiLCJzaG93TWluU3RheSIsInNob3dNYXhTdGF5Iiwib25TdWNjZXNzIiwiZGlzYWJsZUF2YWlsYWJpdHlNYXAiLCJtYXBzTG9hZGVkIiwib25FcnJvciIsImZldGNoIiwicmVudGFsVXJsIiwianNvbiIsImNhdGNoIiwic2luZ2xlSW5wdXREYXRlRm9ybWF0IiwiZGF0ZVN0YXJ0IiwiZGF0ZUVuZCIsInNpbmdsZUlucHV0U2VwYXJhdG9yIiwib25TZWxlY3Rpb25Db21wbGV0ZWQiLCJlbFRhcmdldCIsImhpZGRlbkVsRm9ybWF0IiwiaW5wdXQiLCJoaWRkZW5JbnB1dCIsImNsb25lTm9kZSIsInBhcmVudEVsZW1lbnQiLCJoaWRkZW4iLCJoaWRkZW5FbEVuZEF0IiwiaGlkZGVuRWxTdGFydEF0IiwicmVhZE9ubHkiLCJkcm9wQmFzaWMiLCJkcm9wUGxhY2VtZW50Iiwib3BlbkRyb3AiLCJpc1JldmVyc2VkIiwidmlzaWJsZSIsImZvY3VzVG91Y2hFdmVudHMiLCJiaW5kIiwiZWxSZXNldCIsImV2dCIsImNyZWF0ZUV2ZW50IiwiaW5pdEV2ZW50IiwiaGlkZGVuVmFsdWUiLCJkaXNwYXRjaEV2ZW50IiwibW9udGhEaWZmZXJlbmNlIiwidHlwZSIsImZvY3VzIiwiZm9yY2UiLCJzdG9wUHJvcGFnYXRpb24iLCJfY2FsbGJhY2siLCJtc2ciLCJhcGlIb3N0IiwiYXBpTmFtZXNwYWNlIiwiYXBpTWFwc1JvdXRlIiwiYXBpUmVudGFsSWQiLCJhcGlDdXJyZW5jeSIsImlkcyIsInJvdXRlIiwiZW4iLCJkZSIsImVzIiwiZnIiLCJpdCIsInN2IiwicnUiLCJwbCIsIm5sIiwidG9vbHRpcEFycm93IiwibUNlbGwiLCJsYWJlbCIsInRoIiwibWluU3RheVQiLCJtYXhTdGF5VCIsInJhdGVUIiwidG9kYXkiLCJjbnQiLCJpbmZvIiwibnVtIiwicGFkIiwidmFsIiwibG9nIiwiYXZhaWxhYmxlSW4iLCJhdmFpbGFibGVPdXQiLCJCb29raW5nU3luY1dpZGdldFV0aWxzIiwiaW5pdGlhbGl6ZWQiLCJjYWwiLCJpbnN0YW5jZXMiLCJCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0Il0sInNvdXJjZVJvb3QiOiIifQ==
|