bookingsync-calendar-widget 2.1.1 → 2.1.2
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.
|
@@ -6720,8 +6720,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
6720
6720
|
/* harmony import */ var widget_utils__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! widget-utils */ "./node_modules/widget-utils/src/array/isArray.js");
|
|
6721
6721
|
/* harmony import */ var widget_utils__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! widget-utils */ "./node_modules/widget-utils/src/date/monthLength.js");
|
|
6722
6722
|
/* harmony import */ var widget_utils__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! widget-utils */ "./node_modules/widget-utils/src/currency/currencyFormatter.js");
|
|
6723
|
-
/* harmony import */ var widget_utils__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! widget-utils */ "./node_modules/widget-utils/src/
|
|
6724
|
-
/* harmony import */ var widget_utils__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! widget-utils */ "./node_modules/widget-utils/src/dom/isInside.js");
|
|
6723
|
+
/* harmony import */ var widget_utils__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! widget-utils */ "./node_modules/widget-utils/src/dom/isInside.js");
|
|
6725
6724
|
/* harmony import */ var _templates__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./templates */ "./src/templates.js");
|
|
6726
6725
|
/* harmony import */ var _calendar_tree__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./calendar-tree */ "./src/calendar-tree.js");
|
|
6727
6726
|
/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./config */ "./src/config.js");
|
|
@@ -6731,7 +6730,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
6731
6730
|
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./utils */ "./src/utils.js");
|
|
6732
6731
|
/* harmony import */ var _styles_calendar_scss__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./styles/calendar.scss */ "./src/styles/calendar.scss");
|
|
6733
6732
|
/* harmony import */ var widget_utils_src_styles_reset_scss__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! widget-utils/src/styles/reset.scss */ "./node_modules/widget-utils/src/styles/reset.scss");
|
|
6734
|
-
/* global Node, document, window, console, require */
|
|
6733
|
+
/* global Node, document, window, console, require, fetch */
|
|
6735
6734
|
|
|
6736
6735
|
|
|
6737
6736
|
|
|
@@ -7583,7 +7582,7 @@ class Calendar extends widget_utils__WEBPACK_IMPORTED_MODULE_1__["default"] {
|
|
|
7583
7582
|
this.logger('Server error happened', 'error');
|
|
7584
7583
|
};
|
|
7585
7584
|
|
|
7586
|
-
(
|
|
7585
|
+
fetch(this.opts.rentalUrl(id)).then(response => response.json()).then(onSuccess).catch(onError);
|
|
7587
7586
|
}
|
|
7588
7587
|
|
|
7589
7588
|
completeSelection() {
|
|
@@ -7758,7 +7757,7 @@ class Calendar extends widget_utils__WEBPACK_IMPORTED_MODULE_1__["default"] {
|
|
|
7758
7757
|
}
|
|
7759
7758
|
|
|
7760
7759
|
closeDrop(e, force) {
|
|
7761
|
-
if (!force && ((0,
|
|
7760
|
+
if (!force && ((0,widget_utils__WEBPACK_IMPORTED_MODULE_24__.isInside)(e.target, this.el) || (0,widget_utils__WEBPACK_IMPORTED_MODULE_24__.isInside)(e.target, this.elTarget))) {
|
|
7762
7761
|
e.stopPropagation();
|
|
7763
7762
|
} else {
|
|
7764
7763
|
(0,widget_utils__WEBPACK_IMPORTED_MODULE_15__.removeClass)(this.el, _styles_calendar_scss__WEBPACK_IMPORTED_MODULE_11__["default"].visible);
|
|
@@ -8695,7 +8694,7 @@ module.exports = "data:image/svg+xml;charset=utf8,%3Csvg xmlns=%27http://www.w3.
|
|
|
8695
8694
|
/***/ ((module) => {
|
|
8696
8695
|
|
|
8697
8696
|
"use strict";
|
|
8698
|
-
module.exports = JSON.parse('{"name":"bookingsync-calendar-widget","version":"2.1.
|
|
8697
|
+
module.exports = JSON.parse('{"name":"bookingsync-calendar-widget","version":"2.1.2","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":"webpack serve --open --config webpack.dev.js","test":"karma start karma.config.js --colors","test-ci":"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.0","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","sinon":"^14.0.0","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."}}');
|
|
8699
8698
|
|
|
8700
8699
|
/***/ })
|
|
8701
8700
|
|
|
@@ -8845,4 +8844,4 @@ window.BookingSyncCalendarWidget = Calendar;
|
|
|
8845
8844
|
|
|
8846
8845
|
/******/ })()
|
|
8847
8846
|
;
|
|
8848
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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O0FBQ0EsU0FBT0EsV0FBUDtBQUNELENBZEQ7O0FBZ0JBek8sUUFBUSxDQUFDRSxPQUFULEdBQW1CM2lCLHNFQUFuQjs7QUFFQSxJQUFJM1YsUUFBUSxDQUFDaXZCLFVBQVQsS0FBd0IsU0FBNUIsRUFBdUM7QUFDckNtSixFQUFBQSxRQUFRLENBQUMwQixJQUFUO0FBQ0QsQ0FGRCxNQUVPO0FBQ0w5NUIsRUFBQUEsUUFBUSxDQUFDc0osZ0JBQVQsQ0FBMEIsa0JBQTFCLEVBQThDLE1BQU07QUFDbEQ4dUIsSUFBQUEsUUFBUSxDQUFDMEIsSUFBVDtBQUNELEdBRkQ7QUFHRDs7QUFFRDc1QixNQUFNLENBQUMrbUMseUJBQVAsR0FBbUM1TyxRQUFuQztBQUVBLGlFQUFlQSxRQUFmLEUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2NyZWF0ZVBvcHBlci5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9jb250YWlucy5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRCb3VuZGluZ0NsaWVudFJlY3QuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Q2xpcHBpbmdSZWN0LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldENvbXBvc2l0ZVJlY3QuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Q29tcHV0ZWRTdHlsZS5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXREb2N1bWVudEVsZW1lbnQuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0RG9jdW1lbnRSZWN0LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldEhUTUxFbGVtZW50U2Nyb2xsLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldExheW91dFJlY3QuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Tm9kZU5hbWUuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Tm9kZVNjcm9sbC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRPZmZzZXRQYXJlbnQuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0UGFyZW50Tm9kZS5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRTY3JvbGxQYXJlbnQuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Vmlld3BvcnRSZWN0LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldFdpbmRvdy5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRXaW5kb3dTY3JvbGwuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0V2luZG93U2Nyb2xsQmFyWC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9pbnN0YW5jZU9mLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2lzU2Nyb2xsUGFyZW50LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2lzVGFibGVFbGVtZW50LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2xpc3RTY3JvbGxQYXJlbnRzLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZW51bXMuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9pbmRleC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9hcHBseVN0eWxlcy5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9hcnJvdy5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9jb21wdXRlU3R5bGVzLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL2V2ZW50TGlzdGVuZXJzLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL2ZsaXAuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvaGlkZS5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9pbmRleC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9vZmZzZXQuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvcG9wcGVyT2Zmc2V0cy5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9wcmV2ZW50T3ZlcmZsb3cuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9wb3BwZXItbGl0ZS5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3BvcHBlci5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2NvbXB1dGVBdXRvUGxhY2VtZW50LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvY29tcHV0ZU9mZnNldHMuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9kZWJvdW5jZS5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2RldGVjdE92ZXJmbG93LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZXhwYW5kVG9IYXNoTWFwLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZm9ybWF0LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZ2V0QWx0QXhpcy5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldEJhc2VQbGFjZW1lbnQuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9nZXRGcmVzaFNpZGVPYmplY3QuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9nZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9nZXRPcHBvc2l0ZVBsYWNlbWVudC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldE9wcG9zaXRlVmFyaWF0aW9uUGxhY2VtZW50LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZ2V0VmFyaWF0aW9uLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvbWF0aC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL21lcmdlQnlOYW1lLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvbWVyZ2VQYWRkaW5nT2JqZWN0LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvb3JkZXJNb2RpZmllcnMuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9yZWN0VG9DbGllbnRSZWN0LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvdW5pcXVlQnkuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy92YWxpZGF0ZU1vZGlmaWVycy5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL3dpdGhpbi5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9nZXRVcmwuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL2N1cnJlbmN5LXN5bWJvbC1tYXAvY3VycmVuY3ktc3ltYm9sLW1hcC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvY3VycmVuY3ktc3ltYm9sLW1hcC9tYXAuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3N0cnRpbWUvZGlzdC9zdHJ0aW1lLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL2FqYXguanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvYXJyYXkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvYXJyYXkvaXNBcnJheS5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9jdXJyZW5jeS9jdXJyZW5jeUZvcm1hdHRlci5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9jdXJyZW5jeS9pbmRleC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9kYXRlL2luZGV4LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL2RhdGUvbW9udGhMZW5ndGguanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvZG9tL2FkZENsYXNzLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL2RvbS9jcmVhdGVFbGVtZW50LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL2RvbS9kZXN0cm95RWxlbWVudC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9kb20vZWxlbWVudEZyb21TdHJpbmcuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvZG9tL2ZpbmRCeUNsYXNzTmFtZS5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9kb20vZ2V0Q2xhc3NOYW1lLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL2RvbS9nZXRQYXJlbnRBdHRyaWJ1dGUuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvZG9tL2hhc0NsYXNzLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL2RvbS9pbmRleC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9kb20vaXNJbnNpZGUuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvZG9tL3JlbW92ZUNsYXNzLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL2RvbS9zZXRDbGFzc05hbWUuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvZG9tL3RyYXZlcnNlVG9QYXJlbnRXaXRoQXR0ci5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9lbWl0dGVyLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL2Z1bmN0aW9uL2luZGV4LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL2Z1bmN0aW9uL2lzRnVuY3Rpb24uanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvaXMuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvbWF0aC9pbmRleC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9tYXRoL2lzTmFOUG9seWZpbGwuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvbWF0aC9pc051bWVyaWMuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvb2JqZWN0L2NhcGl0YWxpemVPYmouanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvb2JqZWN0L2luZGV4LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL29iamVjdC9pc09iamVjdC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9vYmplY3QvbWVyZ2UuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvb2JqZWN0L3BpY2suanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvb2JqZWN0L3NlcmlhbGl6ZS5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9vYmplY3QvdHJhdmVyc2VPYmouanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvc3RyaW5nL2Rhc2hUb0NhcGl0YWwuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvc3RyaW5nL2luZGV4LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL3N0cmluZy9pc1N0cmluZy5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9zdHJpbmcvdG9VbmRlcnNjb3JlLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL3N0cmluZy91bmRlcnNjb3JlVG9DYXBpdGFsLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL3ZhbGlkYXRlLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL3NyYy9jYWxlbmRhci10cmVlLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL3NyYy9jYWxlbmRhci5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9zcmMvY29uZmlnLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL3NyYy9sb2NhbGVzLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL3NyYy90ZW1wbGF0ZXMuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vc3JjL3V0aWxzLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL3NyYy9zdHlsZXMvY2FsZW5kYXIuc2NzcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9zdHlsZXMvcmVzZXQuc2NzcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9zcmMvc3R5bGVzL2NhbGVuZGFyLnNjc3M/NjlkNyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9zdHlsZXMvcmVzZXQuc2Nzcz9iNzQwIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0L3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC93ZWJwYWNrL3J1bnRpbWUvY29tcGF0IGdldCBkZWZhdWx0IGV4cG9ydCIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC93ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC93ZWJwYWNrL3J1bnRpbWUvbWFrZSBuYW1lc3BhY2Ugb2JqZWN0Iiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC93ZWJwYWNrL3J1bnRpbWUvanNvbnAgY2h1bmsgbG9hZGluZyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9zcmMvaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGdldENvbXBvc2l0ZVJlY3QgZnJvbSBcIi4vZG9tLXV0aWxzL2dldENvbXBvc2l0ZVJlY3QuanNcIjtcbmltcG9ydCBnZXRMYXlvdXRSZWN0IGZyb20gXCIuL2RvbS11dGlscy9nZXRMYXlvdXRSZWN0LmpzXCI7XG5pbXBvcnQgbGlzdFNjcm9sbFBhcmVudHMgZnJvbSBcIi4vZG9tLXV0aWxzL2xpc3RTY3JvbGxQYXJlbnRzLmpzXCI7XG5pbXBvcnQgZ2V0T2Zmc2V0UGFyZW50IGZyb20gXCIuL2RvbS11dGlscy9nZXRPZmZzZXRQYXJlbnQuanNcIjtcbmltcG9ydCBnZXRDb21wdXRlZFN0eWxlIGZyb20gXCIuL2RvbS11dGlscy9nZXRDb21wdXRlZFN0eWxlLmpzXCI7XG5pbXBvcnQgb3JkZXJNb2RpZmllcnMgZnJvbSBcIi4vdXRpbHMvb3JkZXJNb2RpZmllcnMuanNcIjtcbmltcG9ydCBkZWJvdW5jZSBmcm9tIFwiLi91dGlscy9kZWJvdW5jZS5qc1wiO1xuaW1wb3J0IHZhbGlkYXRlTW9kaWZpZXJzIGZyb20gXCIuL3V0aWxzL3ZhbGlkYXRlTW9kaWZpZXJzLmpzXCI7XG5pbXBvcnQgdW5pcXVlQnkgZnJvbSBcIi4vdXRpbHMvdW5pcXVlQnkuanNcIjtcbmltcG9ydCBnZXRCYXNlUGxhY2VtZW50IGZyb20gXCIuL3V0aWxzL2dldEJhc2VQbGFjZW1lbnQuanNcIjtcbmltcG9ydCBtZXJnZUJ5TmFtZSBmcm9tIFwiLi91dGlscy9tZXJnZUJ5TmFtZS5qc1wiO1xuaW1wb3J0IGRldGVjdE92ZXJmbG93IGZyb20gXCIuL3V0aWxzL2RldGVjdE92ZXJmbG93LmpzXCI7XG5pbXBvcnQgeyBpc0VsZW1lbnQgfSBmcm9tIFwiLi9kb20tdXRpbHMvaW5zdGFuY2VPZi5qc1wiO1xuaW1wb3J0IHsgYXV0byB9IGZyb20gXCIuL2VudW1zLmpzXCI7XG52YXIgSU5WQUxJRF9FTEVNRU5UX0VSUk9SID0gJ1BvcHBlcjogSW52YWxpZCByZWZlcmVuY2Ugb3IgcG9wcGVyIGFyZ3VtZW50IHByb3ZpZGVkLiBUaGV5IG11c3QgYmUgZWl0aGVyIGEgRE9NIGVsZW1lbnQgb3IgdmlydHVhbCBlbGVtZW50Lic7XG52YXIgSU5GSU5JVEVfTE9PUF9FUlJPUiA9ICdQb3BwZXI6IEFuIGluZmluaXRlIGxvb3AgaW4gdGhlIG1vZGlmaWVycyBjeWNsZSBoYXMgYmVlbiBkZXRlY3RlZCEgVGhlIGN5Y2xlIGhhcyBiZWVuIGludGVycnVwdGVkIHRvIHByZXZlbnQgYSBicm93c2VyIGNyYXNoLic7XG52YXIgREVGQVVMVF9PUFRJT05TID0ge1xuICBwbGFjZW1lbnQ6ICdib3R0b20nLFxuICBtb2RpZmllcnM6IFtdLFxuICBzdHJhdGVneTogJ2Fic29sdXRlJ1xufTtcblxuZnVuY3Rpb24gYXJlVmFsaWRFbGVtZW50cygpIHtcbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgfVxuXG4gIHJldHVybiAhYXJncy5zb21lKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgcmV0dXJuICEoZWxlbWVudCAmJiB0eXBlb2YgZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QgPT09ICdmdW5jdGlvbicpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBvcHBlckdlbmVyYXRvcihnZW5lcmF0b3JPcHRpb25zKSB7XG4gIGlmIChnZW5lcmF0b3JPcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBnZW5lcmF0b3JPcHRpb25zID0ge307XG4gIH1cblxuICB2YXIgX2dlbmVyYXRvck9wdGlvbnMgPSBnZW5lcmF0b3JPcHRpb25zLFxuICAgICAgX2dlbmVyYXRvck9wdGlvbnMkZGVmID0gX2dlbmVyYXRvck9wdGlvbnMuZGVmYXVsdE1vZGlmaWVycyxcbiAgICAgIGRlZmF1bHRNb2RpZmllcnMgPSBfZ2VuZXJhdG9yT3B0aW9ucyRkZWYgPT09IHZvaWQgMCA/IFtdIDogX2dlbmVyYXRvck9wdGlvbnMkZGVmLFxuICAgICAgX2dlbmVyYXRvck9wdGlvbnMkZGVmMiA9IF9nZW5lcmF0b3JPcHRpb25zLmRlZmF1bHRPcHRpb25zLFxuICAgICAgZGVmYXVsdE9wdGlvbnMgPSBfZ2VuZXJhdG9yT3B0aW9ucyRkZWYyID09PSB2b2lkIDAgPyBERUZBVUxUX09QVElPTlMgOiBfZ2VuZXJhdG9yT3B0aW9ucyRkZWYyO1xuICByZXR1cm4gZnVuY3Rpb24gY3JlYXRlUG9wcGVyKHJlZmVyZW5jZSwgcG9wcGVyLCBvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgICAgb3B0aW9ucyA9IGRlZmF1bHRPcHRpb25zO1xuICAgIH1cblxuICAgIHZhciBzdGF0ZSA9IHtcbiAgICAgIHBsYWNlbWVudDogJ2JvdHRvbScsXG4gICAgICBvcmRlcmVkTW9kaWZpZXJzOiBbXSxcbiAgICAgIG9wdGlvbnM6IE9iamVjdC5hc3NpZ24oe30sIERFRkFVTFRfT1BUSU9OUywgZGVmYXVsdE9wdGlvbnMpLFxuICAgICAgbW9kaWZpZXJzRGF0YToge30sXG4gICAgICBlbGVtZW50czoge1xuICAgICAgICByZWZlcmVuY2U6IHJlZmVyZW5jZSxcbiAgICAgICAgcG9wcGVyOiBwb3BwZXJcbiAgICAgIH0sXG4gICAgICBhdHRyaWJ1dGVzOiB7fSxcbiAgICAgIHN0eWxlczoge31cbiAgICB9O1xuICAgIHZhciBlZmZlY3RDbGVhbnVwRm5zID0gW107XG4gICAgdmFyIGlzRGVzdHJveWVkID0gZmFsc2U7XG4gICAgdmFyIGluc3RhbmNlID0ge1xuICAgICAgc3RhdGU6IHN0YXRlLFxuICAgICAgc2V0T3B0aW9uczogZnVuY3Rpb24gc2V0T3B0aW9ucyhzZXRPcHRpb25zQWN0aW9uKSB7XG4gICAgICAgIHZhciBvcHRpb25zID0gdHlwZW9mIHNldE9wdGlvbnNBY3Rpb24gPT09ICdmdW5jdGlvbicgPyBzZXRPcHRpb25zQWN0aW9uKHN0YXRlLm9wdGlvbnMpIDogc2V0T3B0aW9uc0FjdGlvbjtcbiAgICAgICAgY2xlYW51cE1vZGlmaWVyRWZmZWN0cygpO1xuICAgICAgICBzdGF0ZS5vcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgZGVmYXVsdE9wdGlvbnMsIHN0YXRlLm9wdGlvbnMsIG9wdGlvbnMpO1xuICAgICAgICBzdGF0ZS5zY3JvbGxQYXJlbnRzID0ge1xuICAgICAgICAgIHJlZmVyZW5jZTogaXNFbGVtZW50KHJlZmVyZW5jZSkgPyBsaXN0U2Nyb2xsUGFyZW50cyhyZWZlcmVuY2UpIDogcmVmZXJlbmNlLmNvbnRleHRFbGVtZW50ID8gbGlzdFNjcm9sbFBhcmVudHMocmVmZXJlbmNlLmNvbnRleHRFbGVtZW50KSA6IFtdLFxuICAgICAgICAgIHBvcHBlcjogbGlzdFNjcm9sbFBhcmVudHMocG9wcGVyKVxuICAgICAgICB9OyAvLyBPcmRlcnMgdGhlIG1vZGlmaWVycyBiYXNlZCBvbiB0aGVpciBkZXBlbmRlbmNpZXMgYW5kIGBwaGFzZWBcbiAgICAgICAgLy8gcHJvcGVydGllc1xuXG4gICAgICAgIHZhciBvcmRlcmVkTW9kaWZpZXJzID0gb3JkZXJNb2RpZmllcnMobWVyZ2VCeU5hbWUoW10uY29uY2F0KGRlZmF1bHRNb2RpZmllcnMsIHN0YXRlLm9wdGlvbnMubW9kaWZpZXJzKSkpOyAvLyBTdHJpcCBvdXQgZGlzYWJsZWQgbW9kaWZpZXJzXG5cbiAgICAgICAgc3RhdGUub3JkZXJlZE1vZGlmaWVycyA9IG9yZGVyZWRNb2RpZmllcnMuZmlsdGVyKGZ1bmN0aW9uIChtKSB7XG4gICAgICAgICAgcmV0dXJuIG0uZW5hYmxlZDtcbiAgICAgICAgfSk7IC8vIFZhbGlkYXRlIHRoZSBwcm92aWRlZCBtb2RpZmllcnMgc28gdGhhdCB0aGUgY29uc3VtZXIgd2lsbCBnZXQgd2FybmVkXG4gICAgICAgIC8vIGlmIG9uZSBvZiB0aGUgbW9kaWZpZXJzIGlzIGludmFsaWQgZm9yIGFueSByZWFzb25cblxuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICAgICAgdmFyIG1vZGlmaWVycyA9IHVuaXF1ZUJ5KFtdLmNvbmNhdChvcmRlcmVkTW9kaWZpZXJzLCBzdGF0ZS5vcHRpb25zLm1vZGlmaWVycyksIGZ1bmN0aW9uIChfcmVmKSB7XG4gICAgICAgICAgICB2YXIgbmFtZSA9IF9yZWYubmFtZTtcbiAgICAgICAgICAgIHJldHVybiBuYW1lO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHZhbGlkYXRlTW9kaWZpZXJzKG1vZGlmaWVycyk7XG5cbiAgICAgICAgICBpZiAoZ2V0QmFzZVBsYWNlbWVudChzdGF0ZS5vcHRpb25zLnBsYWNlbWVudCkgPT09IGF1dG8pIHtcbiAgICAgICAgICAgIHZhciBmbGlwTW9kaWZpZXIgPSBzdGF0ZS5vcmRlcmVkTW9kaWZpZXJzLmZpbmQoZnVuY3Rpb24gKF9yZWYyKSB7XG4gICAgICAgICAgICAgIHZhciBuYW1lID0gX3JlZjIubmFtZTtcbiAgICAgICAgICAgICAgcmV0dXJuIG5hbWUgPT09ICdmbGlwJztcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAoIWZsaXBNb2RpZmllcikge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFsnUG9wcGVyOiBcImF1dG9cIiBwbGFjZW1lbnRzIHJlcXVpcmUgdGhlIFwiZmxpcFwiIG1vZGlmaWVyIGJlJywgJ3ByZXNlbnQgYW5kIGVuYWJsZWQgdG8gd29yay4nXS5qb2luKCcgJykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhciBfZ2V0Q29tcHV0ZWRTdHlsZSA9IGdldENvbXB1dGVkU3R5bGUocG9wcGVyKSxcbiAgICAgICAgICAgICAgbWFyZ2luVG9wID0gX2dldENvbXB1dGVkU3R5bGUubWFyZ2luVG9wLFxuICAgICAgICAgICAgICBtYXJnaW5SaWdodCA9IF9nZXRDb21wdXRlZFN0eWxlLm1hcmdpblJpZ2h0LFxuICAgICAgICAgICAgICBtYXJnaW5Cb3R0b20gPSBfZ2V0Q29tcHV0ZWRTdHlsZS5tYXJnaW5Cb3R0b20sXG4gICAgICAgICAgICAgIG1hcmdpbkxlZnQgPSBfZ2V0Q29tcHV0ZWRTdHlsZS5tYXJnaW5MZWZ0OyAvLyBXZSBubyBsb25nZXIgdGFrZSBpbnRvIGFjY291bnQgYG1hcmdpbnNgIG9uIHRoZSBwb3BwZXIsIGFuZCBpdCBjYW5cbiAgICAgICAgICAvLyBjYXVzZSBidWdzIHdpdGggcG9zaXRpb25pbmcsIHNvIHdlJ2xsIHdhcm4gdGhlIGNvbnN1bWVyXG5cblxuICAgICAgICAgIGlmIChbbWFyZ2luVG9wLCBtYXJnaW5SaWdodCwgbWFyZ2luQm90dG9tLCBtYXJnaW5MZWZ0XS5zb21lKGZ1bmN0aW9uIChtYXJnaW4pIHtcbiAgICAgICAgICAgIHJldHVybiBwYXJzZUZsb2F0KG1hcmdpbik7XG4gICAgICAgICAgfSkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihbJ1BvcHBlcjogQ1NTIFwibWFyZ2luXCIgc3R5bGVzIGNhbm5vdCBiZSB1c2VkIHRvIGFwcGx5IHBhZGRpbmcnLCAnYmV0d2VlbiB0aGUgcG9wcGVyIGFuZCBpdHMgcmVmZXJlbmNlIGVsZW1lbnQgb3IgYm91bmRhcnkuJywgJ1RvIHJlcGxpY2F0ZSBtYXJnaW4sIHVzZSB0aGUgYG9mZnNldGAgbW9kaWZpZXIsIGFzIHdlbGwgYXMnLCAndGhlIGBwYWRkaW5nYCBvcHRpb24gaW4gdGhlIGBwcmV2ZW50T3ZlcmZsb3dgIGFuZCBgZmxpcGAnLCAnbW9kaWZpZXJzLiddLmpvaW4oJyAnKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcnVuTW9kaWZpZXJFZmZlY3RzKCk7XG4gICAgICAgIHJldHVybiBpbnN0YW5jZS51cGRhdGUoKTtcbiAgICAgIH0sXG4gICAgICAvLyBTeW5jIHVwZGF0ZSDigJMgaXQgd2lsbCBhbHdheXMgYmUgZXhlY3V0ZWQsIGV2ZW4gaWYgbm90IG5lY2Vzc2FyeS4gVGhpc1xuICAgICAgLy8gaXMgdXNlZnVsIGZvciBsb3cgZnJlcXVlbmN5IHVwZGF0ZXMgd2hlcmUgc3luYyBiZWhhdmlvciBzaW1wbGlmaWVzIHRoZVxuICAgICAgLy8gbG9naWMuXG4gICAgICAvLyBGb3IgaGlnaCBmcmVxdWVuY3kgdXBkYXRlcyAoZS5nLiBgcmVzaXplYCBhbmQgYHNjcm9sbGAgZXZlbnRzKSwgYWx3YXlzXG4gICAgICAvLyBwcmVmZXIgdGhlIGFzeW5jIFBvcHBlciN1cGRhdGUgbWV0aG9kXG4gICAgICBmb3JjZVVwZGF0ZTogZnVuY3Rpb24gZm9yY2VVcGRhdGUoKSB7XG4gICAgICAgIGlmIChpc0Rlc3Ryb3llZCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBfc3RhdGUkZWxlbWVudHMgPSBzdGF0ZS5lbGVtZW50cyxcbiAgICAgICAgICAgIHJlZmVyZW5jZSA9IF9zdGF0ZSRlbGVtZW50cy5yZWZlcmVuY2UsXG4gICAgICAgICAgICBwb3BwZXIgPSBfc3RhdGUkZWxlbWVudHMucG9wcGVyOyAvLyBEb24ndCBwcm9jZWVkIGlmIGByZWZlcmVuY2VgIG9yIGBwb3BwZXJgIGFyZSBub3QgdmFsaWQgZWxlbWVudHNcbiAgICAgICAgLy8gYW55bW9yZVxuXG4gICAgICAgIGlmICghYXJlVmFsaWRFbGVtZW50cyhyZWZlcmVuY2UsIHBvcHBlcikpIHtcbiAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKElOVkFMSURfRUxFTUVOVF9FUlJPUik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IC8vIFN0b3JlIHRoZSByZWZlcmVuY2UgYW5kIHBvcHBlciByZWN0cyB0byBiZSByZWFkIGJ5IG1vZGlmaWVyc1xuXG5cbiAgICAgICAgc3RhdGUucmVjdHMgPSB7XG4gICAgICAgICAgcmVmZXJlbmNlOiBnZXRDb21wb3NpdGVSZWN0KHJlZmVyZW5jZSwgZ2V0T2Zmc2V0UGFyZW50KHBvcHBlciksIHN0YXRlLm9wdGlvbnMuc3RyYXRlZ3kgPT09ICdmaXhlZCcpLFxuICAgICAgICAgIHBvcHBlcjogZ2V0TGF5b3V0UmVjdChwb3BwZXIpXG4gICAgICAgIH07IC8vIE1vZGlmaWVycyBoYXZlIHRoZSBhYmlsaXR5IHRvIHJlc2V0IHRoZSBjdXJyZW50IHVwZGF0ZSBjeWNsZS4gVGhlXG4gICAgICAgIC8vIG1vc3QgY29tbW9uIHVzZSBjYXNlIGZvciB0aGlzIGlzIHRoZSBgZmxpcGAgbW9kaWZpZXIgY2hhbmdpbmcgdGhlXG4gICAgICAgIC8vIHBsYWNlbWVudCwgd2hpY2ggdGhlbiBuZWVkcyB0byByZS1ydW4gYWxsIHRoZSBtb2RpZmllcnMsIGJlY2F1c2UgdGhlXG4gICAgICAgIC8vIGxvZ2ljIHdhcyBwcmV2aW91c2x5IHJhbiBmb3IgdGhlIHByZXZpb3VzIHBsYWNlbWVudCBhbmQgaXMgdGhlcmVmb3JlXG4gICAgICAgIC8vIHN0YWxlL2luY29ycmVjdFxuXG4gICAgICAgIHN0YXRlLnJlc2V0ID0gZmFsc2U7XG4gICAgICAgIHN0YXRlLnBsYWNlbWVudCA9IHN0YXRlLm9wdGlvbnMucGxhY2VtZW50OyAvLyBPbiBlYWNoIHVwZGF0ZSBjeWNsZSwgdGhlIGBtb2RpZmllcnNEYXRhYCBwcm9wZXJ0eSBmb3IgZWFjaCBtb2RpZmllclxuICAgICAgICAvLyBpcyBmaWxsZWQgd2l0aCB0aGUgaW5pdGlhbCBkYXRhIHNwZWNpZmllZCBieSB0aGUgbW9kaWZpZXIuIFRoaXMgbWVhbnNcbiAgICAgICAgLy8gaXQgZG9lc24ndCBwZXJzaXN0IGFuZCBpcyBmcmVzaCBvbiBlYWNoIHVwZGF0ZS5cbiAgICAgICAgLy8gVG8gZW5zdXJlIHBlcnNpc3RlbnQgZGF0YSwgdXNlIGAke25hbWV9I3BlcnNpc3RlbnRgXG5cbiAgICAgICAgc3RhdGUub3JkZXJlZE1vZGlmaWVycy5mb3JFYWNoKGZ1bmN0aW9uIChtb2RpZmllcikge1xuICAgICAgICAgIHJldHVybiBzdGF0ZS5tb2RpZmllcnNEYXRhW21vZGlmaWVyLm5hbWVdID0gT2JqZWN0LmFzc2lnbih7fSwgbW9kaWZpZXIuZGF0YSk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgX19kZWJ1Z19sb29wc19fID0gMDtcblxuICAgICAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgc3RhdGUub3JkZXJlZE1vZGlmaWVycy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICAgICAgICBfX2RlYnVnX2xvb3BzX18gKz0gMTtcblxuICAgICAgICAgICAgaWYgKF9fZGVidWdfbG9vcHNfXyA+IDEwMCkge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKElORklOSVRFX0xPT1BfRVJST1IpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoc3RhdGUucmVzZXQgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHN0YXRlLnJlc2V0ID0gZmFsc2U7XG4gICAgICAgICAgICBpbmRleCA9IC0xO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFyIF9zdGF0ZSRvcmRlcmVkTW9kaWZpZSA9IHN0YXRlLm9yZGVyZWRNb2RpZmllcnNbaW5kZXhdLFxuICAgICAgICAgICAgICBmbiA9IF9zdGF0ZSRvcmRlcmVkTW9kaWZpZS5mbixcbiAgICAgICAgICAgICAgX3N0YXRlJG9yZGVyZWRNb2RpZmllMiA9IF9zdGF0ZSRvcmRlcmVkTW9kaWZpZS5vcHRpb25zLFxuICAgICAgICAgICAgICBfb3B0aW9ucyA9IF9zdGF0ZSRvcmRlcmVkTW9kaWZpZTIgPT09IHZvaWQgMCA/IHt9IDogX3N0YXRlJG9yZGVyZWRNb2RpZmllMixcbiAgICAgICAgICAgICAgbmFtZSA9IF9zdGF0ZSRvcmRlcmVkTW9kaWZpZS5uYW1lO1xuXG4gICAgICAgICAgaWYgKHR5cGVvZiBmbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgc3RhdGUgPSBmbih7XG4gICAgICAgICAgICAgIHN0YXRlOiBzdGF0ZSxcbiAgICAgICAgICAgICAgb3B0aW9uczogX29wdGlvbnMsXG4gICAgICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgICAgIGluc3RhbmNlOiBpbnN0YW5jZVxuICAgICAgICAgICAgfSkgfHwgc3RhdGU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgLy8gQXN5bmMgYW5kIG9wdGltaXN0aWNhbGx5IG9wdGltaXplZCB1cGRhdGUg4oCTIGl0IHdpbGwgbm90IGJlIGV4ZWN1dGVkIGlmXG4gICAgICAvLyBub3QgbmVjZXNzYXJ5IChkZWJvdW5jZWQgdG8gcnVuIGF0IG1vc3Qgb25jZS1wZXItdGljaylcbiAgICAgIHVwZGF0ZTogZGVib3VuY2UoZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHtcbiAgICAgICAgICBpbnN0YW5jZS5mb3JjZVVwZGF0ZSgpO1xuICAgICAgICAgIHJlc29sdmUoc3RhdGUpO1xuICAgICAgICB9KTtcbiAgICAgIH0pLFxuICAgICAgZGVzdHJveTogZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICAgICAgY2xlYW51cE1vZGlmaWVyRWZmZWN0cygpO1xuICAgICAgICBpc0Rlc3Ryb3llZCA9IHRydWU7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGlmICghYXJlVmFsaWRFbGVtZW50cyhyZWZlcmVuY2UsIHBvcHBlcikpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihJTlZBTElEX0VMRU1FTlRfRVJST1IpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaW5zdGFuY2U7XG4gICAgfVxuXG4gICAgaW5zdGFuY2Uuc2V0T3B0aW9ucyhvcHRpb25zKS50aGVuKGZ1bmN0aW9uIChzdGF0ZSkge1xuICAgICAgaWYgKCFpc0Rlc3Ryb3llZCAmJiBvcHRpb25zLm9uRmlyc3RVcGRhdGUpIHtcbiAgICAgICAgb3B0aW9ucy5vbkZpcnN0VXBkYXRlKHN0YXRlKTtcbiAgICAgIH1cbiAgICB9KTsgLy8gTW9kaWZpZXJzIGhhdmUgdGhlIGFiaWxpdHkgdG8gZXhlY3V0ZSBhcmJpdHJhcnkgY29kZSBiZWZvcmUgdGhlIGZpcnN0XG4gICAgLy8gdXBkYXRlIGN5Y2xlIHJ1bnMuIFRoZXkgd2lsbCBiZSBleGVjdXRlZCBpbiB0aGUgc2FtZSBvcmRlciBhcyB0aGUgdXBkYXRlXG4gICAgLy8gY3ljbGUuIFRoaXMgaXMgdXNlZnVsIHdoZW4gYSBtb2RpZmllciBhZGRzIHNvbWUgcGVyc2lzdGVudCBkYXRhIHRoYXRcbiAgICAvLyBvdGhlciBtb2RpZmllcnMgbmVlZCB0byB1c2UsIGJ1dCB0aGUgbW9kaWZpZXIgaXMgcnVuIGFmdGVyIHRoZSBkZXBlbmRlbnRcbiAgICAvLyBvbmUuXG5cbiAgICBmdW5jdGlvbiBydW5Nb2RpZmllckVmZmVjdHMoKSB7XG4gICAgICBzdGF0ZS5vcmRlcmVkTW9kaWZpZXJzLmZvckVhY2goZnVuY3Rpb24gKF9yZWYzKSB7XG4gICAgICAgIHZhciBuYW1lID0gX3JlZjMubmFtZSxcbiAgICAgICAgICAgIF9yZWYzJG9wdGlvbnMgPSBfcmVmMy5vcHRpb25zLFxuICAgICAgICAgICAgb3B0aW9ucyA9IF9yZWYzJG9wdGlvbnMgPT09IHZvaWQgMCA/IHt9IDogX3JlZjMkb3B0aW9ucyxcbiAgICAgICAgICAgIGVmZmVjdCA9IF9yZWYzLmVmZmVjdDtcblxuICAgICAgICBpZiAodHlwZW9mIGVmZmVjdCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHZhciBjbGVhbnVwRm4gPSBlZmZlY3Qoe1xuICAgICAgICAgICAgc3RhdGU6IHN0YXRlLFxuICAgICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICAgIGluc3RhbmNlOiBpbnN0YW5jZSxcbiAgICAgICAgICAgIG9wdGlvbnM6IG9wdGlvbnNcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHZhciBub29wRm4gPSBmdW5jdGlvbiBub29wRm4oKSB7fTtcblxuICAgICAgICAgIGVmZmVjdENsZWFudXBGbnMucHVzaChjbGVhbnVwRm4gfHwgbm9vcEZuKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2xlYW51cE1vZGlmaWVyRWZmZWN0cygpIHtcbiAgICAgIGVmZmVjdENsZWFudXBGbnMuZm9yRWFjaChmdW5jdGlvbiAoZm4pIHtcbiAgICAgICAgcmV0dXJuIGZuKCk7XG4gICAgICB9KTtcbiAgICAgIGVmZmVjdENsZWFudXBGbnMgPSBbXTtcbiAgICB9XG5cbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH07XG59XG5leHBvcnQgdmFyIGNyZWF0ZVBvcHBlciA9IC8qI19fUFVSRV9fKi9wb3BwZXJHZW5lcmF0b3IoKTsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5leHBvcnQgeyBkZXRlY3RPdmVyZmxvdyB9OyIsImltcG9ydCB7IGlzU2hhZG93Um9vdCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNvbnRhaW5zKHBhcmVudCwgY2hpbGQpIHtcbiAgdmFyIHJvb3ROb2RlID0gY2hpbGQuZ2V0Um9vdE5vZGUgJiYgY2hpbGQuZ2V0Um9vdE5vZGUoKTsgLy8gRmlyc3QsIGF0dGVtcHQgd2l0aCBmYXN0ZXIgbmF0aXZlIG1ldGhvZFxuXG4gIGlmIChwYXJlbnQuY29udGFpbnMoY2hpbGQpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gLy8gdGhlbiBmYWxsYmFjayB0byBjdXN0b20gaW1wbGVtZW50YXRpb24gd2l0aCBTaGFkb3cgRE9NIHN1cHBvcnRcbiAgZWxzZSBpZiAocm9vdE5vZGUgJiYgaXNTaGFkb3dSb290KHJvb3ROb2RlKSkge1xuICAgICAgdmFyIG5leHQgPSBjaGlsZDtcblxuICAgICAgZG8ge1xuICAgICAgICBpZiAobmV4dCAmJiBwYXJlbnQuaXNTYW1lTm9kZShuZXh0KSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IC8vICRGbG93Rml4TWVbcHJvcC1taXNzaW5nXTogbmVlZCBhIGJldHRlciB3YXkgdG8gaGFuZGxlIHRoaXMuLi5cblxuXG4gICAgICAgIG5leHQgPSBuZXh0LnBhcmVudE5vZGUgfHwgbmV4dC5ob3N0O1xuICAgICAgfSB3aGlsZSAobmV4dCk7XG4gICAgfSAvLyBHaXZlIHVwLCB0aGUgcmVzdWx0IGlzIGZhbHNlXG5cblxuICByZXR1cm4gZmFsc2U7XG59IiwiaW1wb3J0IHsgaXNIVE1MRWxlbWVudCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmltcG9ydCB7IHJvdW5kIH0gZnJvbSBcIi4uL3V0aWxzL21hdGguanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50LCBpbmNsdWRlU2NhbGUpIHtcbiAgaWYgKGluY2x1ZGVTY2FsZSA9PT0gdm9pZCAwKSB7XG4gICAgaW5jbHVkZVNjYWxlID0gZmFsc2U7XG4gIH1cblxuICB2YXIgcmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIHZhciBzY2FsZVggPSAxO1xuICB2YXIgc2NhbGVZID0gMTtcblxuICBpZiAoaXNIVE1MRWxlbWVudChlbGVtZW50KSAmJiBpbmNsdWRlU2NhbGUpIHtcbiAgICB2YXIgb2Zmc2V0SGVpZ2h0ID0gZWxlbWVudC5vZmZzZXRIZWlnaHQ7XG4gICAgdmFyIG9mZnNldFdpZHRoID0gZWxlbWVudC5vZmZzZXRXaWR0aDsgLy8gRG8gbm90IGF0dGVtcHQgdG8gZGl2aWRlIGJ5IDAsIG90aGVyd2lzZSB3ZSBnZXQgYEluZmluaXR5YCBhcyBzY2FsZVxuICAgIC8vIEZhbGxiYWNrIHRvIDEgaW4gY2FzZSBib3RoIHZhbHVlcyBhcmUgYDBgXG5cbiAgICBpZiAob2Zmc2V0V2lkdGggPiAwKSB7XG4gICAgICBzY2FsZVggPSByb3VuZChyZWN0LndpZHRoKSAvIG9mZnNldFdpZHRoIHx8IDE7XG4gICAgfVxuXG4gICAgaWYgKG9mZnNldEhlaWdodCA+IDApIHtcbiAgICAgIHNjYWxlWSA9IHJvdW5kKHJlY3QuaGVpZ2h0KSAvIG9mZnNldEhlaWdodCB8fCAxO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgd2lkdGg6IHJlY3Qud2lkdGggLyBzY2FsZVgsXG4gICAgaGVpZ2h0OiByZWN0LmhlaWdodCAvIHNjYWxlWSxcbiAgICB0b3A6IHJlY3QudG9wIC8gc2NhbGVZLFxuICAgIHJpZ2h0OiByZWN0LnJpZ2h0IC8gc2NhbGVYLFxuICAgIGJvdHRvbTogcmVjdC5ib3R0b20gLyBzY2FsZVksXG4gICAgbGVmdDogcmVjdC5sZWZ0IC8gc2NhbGVYLFxuICAgIHg6IHJlY3QubGVmdCAvIHNjYWxlWCxcbiAgICB5OiByZWN0LnRvcCAvIHNjYWxlWVxuICB9O1xufSIsImltcG9ydCB7IHZpZXdwb3J0IH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5pbXBvcnQgZ2V0Vmlld3BvcnRSZWN0IGZyb20gXCIuL2dldFZpZXdwb3J0UmVjdC5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50UmVjdCBmcm9tIFwiLi9nZXREb2N1bWVudFJlY3QuanNcIjtcbmltcG9ydCBsaXN0U2Nyb2xsUGFyZW50cyBmcm9tIFwiLi9saXN0U2Nyb2xsUGFyZW50cy5qc1wiO1xuaW1wb3J0IGdldE9mZnNldFBhcmVudCBmcm9tIFwiLi9nZXRPZmZzZXRQYXJlbnQuanNcIjtcbmltcG9ydCBnZXREb2N1bWVudEVsZW1lbnQgZnJvbSBcIi4vZ2V0RG9jdW1lbnRFbGVtZW50LmpzXCI7XG5pbXBvcnQgZ2V0Q29tcHV0ZWRTdHlsZSBmcm9tIFwiLi9nZXRDb21wdXRlZFN0eWxlLmpzXCI7XG5pbXBvcnQgeyBpc0VsZW1lbnQsIGlzSFRNTEVsZW1lbnQgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5pbXBvcnQgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IGZyb20gXCIuL2dldEJvdW5kaW5nQ2xpZW50UmVjdC5qc1wiO1xuaW1wb3J0IGdldFBhcmVudE5vZGUgZnJvbSBcIi4vZ2V0UGFyZW50Tm9kZS5qc1wiO1xuaW1wb3J0IGNvbnRhaW5zIGZyb20gXCIuL2NvbnRhaW5zLmpzXCI7XG5pbXBvcnQgZ2V0Tm9kZU5hbWUgZnJvbSBcIi4vZ2V0Tm9kZU5hbWUuanNcIjtcbmltcG9ydCByZWN0VG9DbGllbnRSZWN0IGZyb20gXCIuLi91dGlscy9yZWN0VG9DbGllbnRSZWN0LmpzXCI7XG5pbXBvcnQgeyBtYXgsIG1pbiB9IGZyb20gXCIuLi91dGlscy9tYXRoLmpzXCI7XG5cbmZ1bmN0aW9uIGdldElubmVyQm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnQpIHtcbiAgdmFyIHJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCk7XG4gIHJlY3QudG9wID0gcmVjdC50b3AgKyBlbGVtZW50LmNsaWVudFRvcDtcbiAgcmVjdC5sZWZ0ID0gcmVjdC5sZWZ0ICsgZWxlbWVudC5jbGllbnRMZWZ0O1xuICByZWN0LmJvdHRvbSA9IHJlY3QudG9wICsgZWxlbWVudC5jbGllbnRIZWlnaHQ7XG4gIHJlY3QucmlnaHQgPSByZWN0LmxlZnQgKyBlbGVtZW50LmNsaWVudFdpZHRoO1xuICByZWN0LndpZHRoID0gZWxlbWVudC5jbGllbnRXaWR0aDtcbiAgcmVjdC5oZWlnaHQgPSBlbGVtZW50LmNsaWVudEhlaWdodDtcbiAgcmVjdC54ID0gcmVjdC5sZWZ0O1xuICByZWN0LnkgPSByZWN0LnRvcDtcbiAgcmV0dXJuIHJlY3Q7XG59XG5cbmZ1bmN0aW9uIGdldENsaWVudFJlY3RGcm9tTWl4ZWRUeXBlKGVsZW1lbnQsIGNsaXBwaW5nUGFyZW50KSB7XG4gIHJldHVybiBjbGlwcGluZ1BhcmVudCA9PT0gdmlld3BvcnQgPyByZWN0VG9DbGllbnRSZWN0KGdldFZpZXdwb3J0UmVjdChlbGVtZW50KSkgOiBpc0VsZW1lbnQoY2xpcHBpbmdQYXJlbnQpID8gZ2V0SW5uZXJCb3VuZGluZ0NsaWVudFJlY3QoY2xpcHBpbmdQYXJlbnQpIDogcmVjdFRvQ2xpZW50UmVjdChnZXREb2N1bWVudFJlY3QoZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpKSk7XG59IC8vIEEgXCJjbGlwcGluZyBwYXJlbnRcIiBpcyBhbiBvdmVyZmxvd2FibGUgY29udGFpbmVyIHdpdGggdGhlIGNoYXJhY3RlcmlzdGljIG9mXG4vLyBjbGlwcGluZyAob3IgaGlkaW5nKSBvdmVyZmxvd2luZyBlbGVtZW50cyB3aXRoIGEgcG9zaXRpb24gZGlmZmVyZW50IGZyb21cbi8vIGBpbml0aWFsYFxuXG5cbmZ1bmN0aW9uIGdldENsaXBwaW5nUGFyZW50cyhlbGVtZW50KSB7XG4gIHZhciBjbGlwcGluZ1BhcmVudHMgPSBsaXN0U2Nyb2xsUGFyZW50cyhnZXRQYXJlbnROb2RlKGVsZW1lbnQpKTtcbiAgdmFyIGNhbkVzY2FwZUNsaXBwaW5nID0gWydhYnNvbHV0ZScsICdmaXhlZCddLmluZGV4T2YoZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5wb3NpdGlvbikgPj0gMDtcbiAgdmFyIGNsaXBwZXJFbGVtZW50ID0gY2FuRXNjYXBlQ2xpcHBpbmcgJiYgaXNIVE1MRWxlbWVudChlbGVtZW50KSA/IGdldE9mZnNldFBhcmVudChlbGVtZW50KSA6IGVsZW1lbnQ7XG5cbiAgaWYgKCFpc0VsZW1lbnQoY2xpcHBlckVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9IC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLXJldHVybl06IGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9mbG93L2lzc3Vlcy8xNDE0XG5cblxuICByZXR1cm4gY2xpcHBpbmdQYXJlbnRzLmZpbHRlcihmdW5jdGlvbiAoY2xpcHBpbmdQYXJlbnQpIHtcbiAgICByZXR1cm4gaXNFbGVtZW50KGNsaXBwaW5nUGFyZW50KSAmJiBjb250YWlucyhjbGlwcGluZ1BhcmVudCwgY2xpcHBlckVsZW1lbnQpICYmIGdldE5vZGVOYW1lKGNsaXBwaW5nUGFyZW50KSAhPT0gJ2JvZHknO1xuICB9KTtcbn0gLy8gR2V0cyB0aGUgbWF4aW11bSBhcmVhIHRoYXQgdGhlIGVsZW1lbnQgaXMgdmlzaWJsZSBpbiBkdWUgdG8gYW55IG51bWJlciBvZlxuLy8gY2xpcHBpbmcgcGFyZW50c1xuXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldENsaXBwaW5nUmVjdChlbGVtZW50LCBib3VuZGFyeSwgcm9vdEJvdW5kYXJ5KSB7XG4gIHZhciBtYWluQ2xpcHBpbmdQYXJlbnRzID0gYm91bmRhcnkgPT09ICdjbGlwcGluZ1BhcmVudHMnID8gZ2V0Q2xpcHBpbmdQYXJlbnRzKGVsZW1lbnQpIDogW10uY29uY2F0KGJvdW5kYXJ5KTtcbiAgdmFyIGNsaXBwaW5nUGFyZW50cyA9IFtdLmNvbmNhdChtYWluQ2xpcHBpbmdQYXJlbnRzLCBbcm9vdEJvdW5kYXJ5XSk7XG4gIHZhciBmaXJzdENsaXBwaW5nUGFyZW50ID0gY2xpcHBpbmdQYXJlbnRzWzBdO1xuICB2YXIgY2xpcHBpbmdSZWN0ID0gY2xpcHBpbmdQYXJlbnRzLnJlZHVjZShmdW5jdGlvbiAoYWNjUmVjdCwgY2xpcHBpbmdQYXJlbnQpIHtcbiAgICB2YXIgcmVjdCA9IGdldENsaWVudFJlY3RGcm9tTWl4ZWRUeXBlKGVsZW1lbnQsIGNsaXBwaW5nUGFyZW50KTtcbiAgICBhY2NSZWN0LnRvcCA9IG1heChyZWN0LnRvcCwgYWNjUmVjdC50b3ApO1xuICAgIGFjY1JlY3QucmlnaHQgPSBtaW4ocmVjdC5yaWdodCwgYWNjUmVjdC5yaWdodCk7XG4gICAgYWNjUmVjdC5ib3R0b20gPSBtaW4ocmVjdC5ib3R0b20sIGFjY1JlY3QuYm90dG9tKTtcbiAgICBhY2NSZWN0LmxlZnQgPSBtYXgocmVjdC5sZWZ0LCBhY2NSZWN0LmxlZnQpO1xuICAgIHJldHVybiBhY2NSZWN0O1xuICB9LCBnZXRDbGllbnRSZWN0RnJvbU1peGVkVHlwZShlbGVtZW50LCBmaXJzdENsaXBwaW5nUGFyZW50KSk7XG4gIGNsaXBwaW5nUmVjdC53aWR0aCA9IGNsaXBwaW5nUmVjdC5yaWdodCAtIGNsaXBwaW5nUmVjdC5sZWZ0O1xuICBjbGlwcGluZ1JlY3QuaGVpZ2h0ID0gY2xpcHBpbmdSZWN0LmJvdHRvbSAtIGNsaXBwaW5nUmVjdC50b3A7XG4gIGNsaXBwaW5nUmVjdC54ID0gY2xpcHBpbmdSZWN0LmxlZnQ7XG4gIGNsaXBwaW5nUmVjdC55ID0gY2xpcHBpbmdSZWN0LnRvcDtcbiAgcmV0dXJuIGNsaXBwaW5nUmVjdDtcbn0iLCJpbXBvcnQgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IGZyb20gXCIuL2dldEJvdW5kaW5nQ2xpZW50UmVjdC5qc1wiO1xuaW1wb3J0IGdldE5vZGVTY3JvbGwgZnJvbSBcIi4vZ2V0Tm9kZVNjcm9sbC5qc1wiO1xuaW1wb3J0IGdldE5vZGVOYW1lIGZyb20gXCIuL2dldE5vZGVOYW1lLmpzXCI7XG5pbXBvcnQgeyBpc0hUTUxFbGVtZW50IH0gZnJvbSBcIi4vaW5zdGFuY2VPZi5qc1wiO1xuaW1wb3J0IGdldFdpbmRvd1Njcm9sbEJhclggZnJvbSBcIi4vZ2V0V2luZG93U2Nyb2xsQmFyWC5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBpc1Njcm9sbFBhcmVudCBmcm9tIFwiLi9pc1Njcm9sbFBhcmVudC5qc1wiO1xuaW1wb3J0IHsgcm91bmQgfSBmcm9tIFwiLi4vdXRpbHMvbWF0aC5qc1wiO1xuXG5mdW5jdGlvbiBpc0VsZW1lbnRTY2FsZWQoZWxlbWVudCkge1xuICB2YXIgcmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIHZhciBzY2FsZVggPSByb3VuZChyZWN0LndpZHRoKSAvIGVsZW1lbnQub2Zmc2V0V2lkdGggfHwgMTtcbiAgdmFyIHNjYWxlWSA9IHJvdW5kKHJlY3QuaGVpZ2h0KSAvIGVsZW1lbnQub2Zmc2V0SGVpZ2h0IHx8IDE7XG4gIHJldHVybiBzY2FsZVggIT09IDEgfHwgc2NhbGVZICE9PSAxO1xufSAvLyBSZXR1cm5zIHRoZSBjb21wb3NpdGUgcmVjdCBvZiBhbiBlbGVtZW50IHJlbGF0aXZlIHRvIGl0cyBvZmZzZXRQYXJlbnQuXG4vLyBDb21wb3NpdGUgbWVhbnMgaXQgdGFrZXMgaW50byBhY2NvdW50IHRyYW5zZm9ybXMgYXMgd2VsbCBhcyBsYXlvdXQuXG5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Q29tcG9zaXRlUmVjdChlbGVtZW50T3JWaXJ0dWFsRWxlbWVudCwgb2Zmc2V0UGFyZW50LCBpc0ZpeGVkKSB7XG4gIGlmIChpc0ZpeGVkID09PSB2b2lkIDApIHtcbiAgICBpc0ZpeGVkID0gZmFsc2U7XG4gIH1cblxuICB2YXIgaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgPSBpc0hUTUxFbGVtZW50KG9mZnNldFBhcmVudCk7XG4gIHZhciBvZmZzZXRQYXJlbnRJc1NjYWxlZCA9IGlzSFRNTEVsZW1lbnQob2Zmc2V0UGFyZW50KSAmJiBpc0VsZW1lbnRTY2FsZWQob2Zmc2V0UGFyZW50KTtcbiAgdmFyIGRvY3VtZW50RWxlbWVudCA9IGdldERvY3VtZW50RWxlbWVudChvZmZzZXRQYXJlbnQpO1xuICB2YXIgcmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50T3JWaXJ0dWFsRWxlbWVudCwgb2Zmc2V0UGFyZW50SXNTY2FsZWQpO1xuICB2YXIgc2Nyb2xsID0ge1xuICAgIHNjcm9sbExlZnQ6IDAsXG4gICAgc2Nyb2xsVG9wOiAwXG4gIH07XG4gIHZhciBvZmZzZXRzID0ge1xuICAgIHg6IDAsXG4gICAgeTogMFxuICB9O1xuXG4gIGlmIChpc09mZnNldFBhcmVudEFuRWxlbWVudCB8fCAhaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgJiYgIWlzRml4ZWQpIHtcbiAgICBpZiAoZ2V0Tm9kZU5hbWUob2Zmc2V0UGFyZW50KSAhPT0gJ2JvZHknIHx8IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9wb3BwZXJqcy9wb3BwZXItY29yZS9pc3N1ZXMvMTA3OFxuICAgIGlzU2Nyb2xsUGFyZW50KGRvY3VtZW50RWxlbWVudCkpIHtcbiAgICAgIHNjcm9sbCA9IGdldE5vZGVTY3JvbGwob2Zmc2V0UGFyZW50KTtcbiAgICB9XG5cbiAgICBpZiAoaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpKSB7XG4gICAgICBvZmZzZXRzID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KG9mZnNldFBhcmVudCwgdHJ1ZSk7XG4gICAgICBvZmZzZXRzLnggKz0gb2Zmc2V0UGFyZW50LmNsaWVudExlZnQ7XG4gICAgICBvZmZzZXRzLnkgKz0gb2Zmc2V0UGFyZW50LmNsaWVudFRvcDtcbiAgICB9IGVsc2UgaWYgKGRvY3VtZW50RWxlbWVudCkge1xuICAgICAgb2Zmc2V0cy54ID0gZ2V0V2luZG93U2Nyb2xsQmFyWChkb2N1bWVudEVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgeDogcmVjdC5sZWZ0ICsgc2Nyb2xsLnNjcm9sbExlZnQgLSBvZmZzZXRzLngsXG4gICAgeTogcmVjdC50b3AgKyBzY3JvbGwuc2Nyb2xsVG9wIC0gb2Zmc2V0cy55LFxuICAgIHdpZHRoOiByZWN0LndpZHRoLFxuICAgIGhlaWdodDogcmVjdC5oZWlnaHRcbiAgfTtcbn0iLCJpbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuL2dldFdpbmRvdy5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KSB7XG4gIHJldHVybiBnZXRXaW5kb3coZWxlbWVudCkuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcbn0iLCJpbXBvcnQgeyBpc0VsZW1lbnQgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkge1xuICAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS1yZXR1cm5dOiBhc3N1bWUgYm9keSBpcyBhbHdheXMgYXZhaWxhYmxlXG4gIHJldHVybiAoKGlzRWxlbWVudChlbGVtZW50KSA/IGVsZW1lbnQub3duZXJEb2N1bWVudCA6IC8vICRGbG93Rml4TWVbcHJvcC1taXNzaW5nXVxuICBlbGVtZW50LmRvY3VtZW50KSB8fCB3aW5kb3cuZG9jdW1lbnQpLmRvY3VtZW50RWxlbWVudDtcbn0iLCJpbXBvcnQgZ2V0RG9jdW1lbnRFbGVtZW50IGZyb20gXCIuL2dldERvY3VtZW50RWxlbWVudC5qc1wiO1xuaW1wb3J0IGdldENvbXB1dGVkU3R5bGUgZnJvbSBcIi4vZ2V0Q29tcHV0ZWRTdHlsZS5qc1wiO1xuaW1wb3J0IGdldFdpbmRvd1Njcm9sbEJhclggZnJvbSBcIi4vZ2V0V2luZG93U2Nyb2xsQmFyWC5qc1wiO1xuaW1wb3J0IGdldFdpbmRvd1Njcm9sbCBmcm9tIFwiLi9nZXRXaW5kb3dTY3JvbGwuanNcIjtcbmltcG9ydCB7IG1heCB9IGZyb20gXCIuLi91dGlscy9tYXRoLmpzXCI7IC8vIEdldHMgdGhlIGVudGlyZSBzaXplIG9mIHRoZSBzY3JvbGxhYmxlIGRvY3VtZW50IGFyZWEsIGV2ZW4gZXh0ZW5kaW5nIG91dHNpZGVcbi8vIG9mIHRoZSBgPGh0bWw+YCBhbmQgYDxib2R5PmAgcmVjdCBib3VuZHMgaWYgaG9yaXpvbnRhbGx5IHNjcm9sbGFibGVcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0RG9jdW1lbnRSZWN0KGVsZW1lbnQpIHtcbiAgdmFyIF9lbGVtZW50JG93bmVyRG9jdW1lbjtcblxuICB2YXIgaHRtbCA9IGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KTtcbiAgdmFyIHdpblNjcm9sbCA9IGdldFdpbmRvd1Njcm9sbChlbGVtZW50KTtcbiAgdmFyIGJvZHkgPSAoX2VsZW1lbnQkb3duZXJEb2N1bWVuID0gZWxlbWVudC5vd25lckRvY3VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX2VsZW1lbnQkb3duZXJEb2N1bWVuLmJvZHk7XG4gIHZhciB3aWR0aCA9IG1heChodG1sLnNjcm9sbFdpZHRoLCBodG1sLmNsaWVudFdpZHRoLCBib2R5ID8gYm9keS5zY3JvbGxXaWR0aCA6IDAsIGJvZHkgPyBib2R5LmNsaWVudFdpZHRoIDogMCk7XG4gIHZhciBoZWlnaHQgPSBtYXgoaHRtbC5zY3JvbGxIZWlnaHQsIGh0bWwuY2xpZW50SGVpZ2h0LCBib2R5ID8gYm9keS5zY3JvbGxIZWlnaHQgOiAwLCBib2R5ID8gYm9keS5jbGllbnRIZWlnaHQgOiAwKTtcbiAgdmFyIHggPSAtd2luU2Nyb2xsLnNjcm9sbExlZnQgKyBnZXRXaW5kb3dTY3JvbGxCYXJYKGVsZW1lbnQpO1xuICB2YXIgeSA9IC13aW5TY3JvbGwuc2Nyb2xsVG9wO1xuXG4gIGlmIChnZXRDb21wdXRlZFN0eWxlKGJvZHkgfHwgaHRtbCkuZGlyZWN0aW9uID09PSAncnRsJykge1xuICAgIHggKz0gbWF4KGh0bWwuY2xpZW50V2lkdGgsIGJvZHkgPyBib2R5LmNsaWVudFdpZHRoIDogMCkgLSB3aWR0aDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgd2lkdGg6IHdpZHRoLFxuICAgIGhlaWdodDogaGVpZ2h0LFxuICAgIHg6IHgsXG4gICAgeTogeVxuICB9O1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldEhUTUxFbGVtZW50U2Nyb2xsKGVsZW1lbnQpIHtcbiAgcmV0dXJuIHtcbiAgICBzY3JvbGxMZWZ0OiBlbGVtZW50LnNjcm9sbExlZnQsXG4gICAgc2Nyb2xsVG9wOiBlbGVtZW50LnNjcm9sbFRvcFxuICB9O1xufSIsImltcG9ydCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgZnJvbSBcIi4vZ2V0Qm91bmRpbmdDbGllbnRSZWN0LmpzXCI7IC8vIFJldHVybnMgdGhlIGxheW91dCByZWN0IG9mIGFuIGVsZW1lbnQgcmVsYXRpdmUgdG8gaXRzIG9mZnNldFBhcmVudC4gTGF5b3V0XG4vLyBtZWFucyBpdCBkb2Vzbid0IHRha2UgaW50byBhY2NvdW50IHRyYW5zZm9ybXMuXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldExheW91dFJlY3QoZWxlbWVudCkge1xuICB2YXIgY2xpZW50UmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50KTsgLy8gVXNlIHRoZSBjbGllbnRSZWN0IHNpemVzIGlmIGl0J3Mgbm90IGJlZW4gdHJhbnNmb3JtZWQuXG4gIC8vIEZpeGVzIGh0dHBzOi8vZ2l0aHViLmNvbS9wb3BwZXJqcy9wb3BwZXItY29yZS9pc3N1ZXMvMTIyM1xuXG4gIHZhciB3aWR0aCA9IGVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gIHZhciBoZWlnaHQgPSBlbGVtZW50Lm9mZnNldEhlaWdodDtcblxuICBpZiAoTWF0aC5hYnMoY2xpZW50UmVjdC53aWR0aCAtIHdpZHRoKSA8PSAxKSB7XG4gICAgd2lkdGggPSBjbGllbnRSZWN0LndpZHRoO1xuICB9XG5cbiAgaWYgKE1hdGguYWJzKGNsaWVudFJlY3QuaGVpZ2h0IC0gaGVpZ2h0KSA8PSAxKSB7XG4gICAgaGVpZ2h0ID0gY2xpZW50UmVjdC5oZWlnaHQ7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHg6IGVsZW1lbnQub2Zmc2V0TGVmdCxcbiAgICB5OiBlbGVtZW50Lm9mZnNldFRvcCxcbiAgICB3aWR0aDogd2lkdGgsXG4gICAgaGVpZ2h0OiBoZWlnaHRcbiAgfTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXROb2RlTmFtZShlbGVtZW50KSB7XG4gIHJldHVybiBlbGVtZW50ID8gKGVsZW1lbnQubm9kZU5hbWUgfHwgJycpLnRvTG93ZXJDYXNlKCkgOiBudWxsO1xufSIsImltcG9ydCBnZXRXaW5kb3dTY3JvbGwgZnJvbSBcIi4vZ2V0V2luZG93U2Nyb2xsLmpzXCI7XG5pbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuL2dldFdpbmRvdy5qc1wiO1xuaW1wb3J0IHsgaXNIVE1MRWxlbWVudCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmltcG9ydCBnZXRIVE1MRWxlbWVudFNjcm9sbCBmcm9tIFwiLi9nZXRIVE1MRWxlbWVudFNjcm9sbC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Tm9kZVNjcm9sbChub2RlKSB7XG4gIGlmIChub2RlID09PSBnZXRXaW5kb3cobm9kZSkgfHwgIWlzSFRNTEVsZW1lbnQobm9kZSkpIHtcbiAgICByZXR1cm4gZ2V0V2luZG93U2Nyb2xsKG5vZGUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBnZXRIVE1MRWxlbWVudFNjcm9sbChub2RlKTtcbiAgfVxufSIsImltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4vZ2V0V2luZG93LmpzXCI7XG5pbXBvcnQgZ2V0Tm9kZU5hbWUgZnJvbSBcIi4vZ2V0Tm9kZU5hbWUuanNcIjtcbmltcG9ydCBnZXRDb21wdXRlZFN0eWxlIGZyb20gXCIuL2dldENvbXB1dGVkU3R5bGUuanNcIjtcbmltcG9ydCB7IGlzSFRNTEVsZW1lbnQgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5pbXBvcnQgaXNUYWJsZUVsZW1lbnQgZnJvbSBcIi4vaXNUYWJsZUVsZW1lbnQuanNcIjtcbmltcG9ydCBnZXRQYXJlbnROb2RlIGZyb20gXCIuL2dldFBhcmVudE5vZGUuanNcIjtcblxuZnVuY3Rpb24gZ2V0VHJ1ZU9mZnNldFBhcmVudChlbGVtZW50KSB7XG4gIGlmICghaXNIVE1MRWxlbWVudChlbGVtZW50KSB8fCAvLyBodHRwczovL2dpdGh1Yi5jb20vcG9wcGVyanMvcG9wcGVyLWNvcmUvaXNzdWVzLzgzN1xuICBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLnBvc2l0aW9uID09PSAnZml4ZWQnKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gZWxlbWVudC5vZmZzZXRQYXJlbnQ7XG59IC8vIGAub2Zmc2V0UGFyZW50YCByZXBvcnRzIGBudWxsYCBmb3IgZml4ZWQgZWxlbWVudHMsIHdoaWxlIGFic29sdXRlIGVsZW1lbnRzXG4vLyByZXR1cm4gdGhlIGNvbnRhaW5pbmcgYmxvY2tcblxuXG5mdW5jdGlvbiBnZXRDb250YWluaW5nQmxvY2soZWxlbWVudCkge1xuICB2YXIgaXNGaXJlZm94ID0gbmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoJ2ZpcmVmb3gnKSAhPT0gLTE7XG4gIHZhciBpc0lFID0gbmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCdUcmlkZW50JykgIT09IC0xO1xuXG4gIGlmIChpc0lFICYmIGlzSFRNTEVsZW1lbnQoZWxlbWVudCkpIHtcbiAgICAvLyBJbiBJRSA5LCAxMCBhbmQgMTEgZml4ZWQgZWxlbWVudHMgY29udGFpbmluZyBibG9jayBpcyBhbHdheXMgZXN0YWJsaXNoZWQgYnkgdGhlIHZpZXdwb3J0XG4gICAgdmFyIGVsZW1lbnRDc3MgPSBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xuXG4gICAgaWYgKGVsZW1lbnRDc3MucG9zaXRpb24gPT09ICdmaXhlZCcpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHZhciBjdXJyZW50Tm9kZSA9IGdldFBhcmVudE5vZGUoZWxlbWVudCk7XG5cbiAgd2hpbGUgKGlzSFRNTEVsZW1lbnQoY3VycmVudE5vZGUpICYmIFsnaHRtbCcsICdib2R5J10uaW5kZXhPZihnZXROb2RlTmFtZShjdXJyZW50Tm9kZSkpIDwgMCkge1xuICAgIHZhciBjc3MgPSBnZXRDb21wdXRlZFN0eWxlKGN1cnJlbnROb2RlKTsgLy8gVGhpcyBpcyBub24tZXhoYXVzdGl2ZSBidXQgY292ZXJzIHRoZSBtb3N0IGNvbW1vbiBDU1MgcHJvcGVydGllcyB0aGF0XG4gICAgLy8gY3JlYXRlIGEgY29udGFpbmluZyBibG9jay5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvQ29udGFpbmluZ19ibG9jayNpZGVudGlmeWluZ190aGVfY29udGFpbmluZ19ibG9ja1xuXG4gICAgaWYgKGNzcy50cmFuc2Zvcm0gIT09ICdub25lJyB8fCBjc3MucGVyc3BlY3RpdmUgIT09ICdub25lJyB8fCBjc3MuY29udGFpbiA9PT0gJ3BhaW50JyB8fCBbJ3RyYW5zZm9ybScsICdwZXJzcGVjdGl2ZSddLmluZGV4T2YoY3NzLndpbGxDaGFuZ2UpICE9PSAtMSB8fCBpc0ZpcmVmb3ggJiYgY3NzLndpbGxDaGFuZ2UgPT09ICdmaWx0ZXInIHx8IGlzRmlyZWZveCAmJiBjc3MuZmlsdGVyICYmIGNzcy5maWx0ZXIgIT09ICdub25lJykge1xuICAgICAgcmV0dXJuIGN1cnJlbnROb2RlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLnBhcmVudE5vZGU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59IC8vIEdldHMgdGhlIGNsb3Nlc3QgYW5jZXN0b3IgcG9zaXRpb25lZCBlbGVtZW50LiBIYW5kbGVzIHNvbWUgZWRnZSBjYXNlcyxcbi8vIHN1Y2ggYXMgdGFibGUgYW5jZXN0b3JzIGFuZCBjcm9zcyBicm93c2VyIGJ1Z3MuXG5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0T2Zmc2V0UGFyZW50KGVsZW1lbnQpIHtcbiAgdmFyIHdpbmRvdyA9IGdldFdpbmRvdyhlbGVtZW50KTtcbiAgdmFyIG9mZnNldFBhcmVudCA9IGdldFRydWVPZmZzZXRQYXJlbnQoZWxlbWVudCk7XG5cbiAgd2hpbGUgKG9mZnNldFBhcmVudCAmJiBpc1RhYmxlRWxlbWVudChvZmZzZXRQYXJlbnQpICYmIGdldENvbXB1dGVkU3R5bGUob2Zmc2V0UGFyZW50KS5wb3NpdGlvbiA9PT0gJ3N0YXRpYycpIHtcbiAgICBvZmZzZXRQYXJlbnQgPSBnZXRUcnVlT2Zmc2V0UGFyZW50KG9mZnNldFBhcmVudCk7XG4gIH1cblxuICBpZiAob2Zmc2V0UGFyZW50ICYmIChnZXROb2RlTmFtZShvZmZzZXRQYXJlbnQpID09PSAnaHRtbCcgfHwgZ2V0Tm9kZU5hbWUob2Zmc2V0UGFyZW50KSA9PT0gJ2JvZHknICYmIGdldENvbXB1dGVkU3R5bGUob2Zmc2V0UGFyZW50KS5wb3NpdGlvbiA9PT0gJ3N0YXRpYycpKSB7XG4gICAgcmV0dXJuIHdpbmRvdztcbiAgfVxuXG4gIHJldHVybiBvZmZzZXRQYXJlbnQgfHwgZ2V0Q29udGFpbmluZ0Jsb2NrKGVsZW1lbnQpIHx8IHdpbmRvdztcbn0iLCJpbXBvcnQgZ2V0Tm9kZU5hbWUgZnJvbSBcIi4vZ2V0Tm9kZU5hbWUuanNcIjtcbmltcG9ydCBnZXREb2N1bWVudEVsZW1lbnQgZnJvbSBcIi4vZ2V0RG9jdW1lbnRFbGVtZW50LmpzXCI7XG5pbXBvcnQgeyBpc1NoYWRvd1Jvb3QgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRQYXJlbnROb2RlKGVsZW1lbnQpIHtcbiAgaWYgKGdldE5vZGVOYW1lKGVsZW1lbnQpID09PSAnaHRtbCcpIHtcbiAgICByZXR1cm4gZWxlbWVudDtcbiAgfVxuXG4gIHJldHVybiAoLy8gdGhpcyBpcyBhIHF1aWNrZXIgKGJ1dCBsZXNzIHR5cGUgc2FmZSkgd2F5IHRvIHNhdmUgcXVpdGUgc29tZSBieXRlcyBmcm9tIHRoZSBidW5kbGVcbiAgICAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS1yZXR1cm5dXG4gICAgLy8gJEZsb3dGaXhNZVtwcm9wLW1pc3NpbmddXG4gICAgZWxlbWVudC5hc3NpZ25lZFNsb3QgfHwgLy8gc3RlcCBpbnRvIHRoZSBzaGFkb3cgRE9NIG9mIHRoZSBwYXJlbnQgb2YgYSBzbG90dGVkIG5vZGVcbiAgICBlbGVtZW50LnBhcmVudE5vZGUgfHwgKCAvLyBET00gRWxlbWVudCBkZXRlY3RlZFxuICAgIGlzU2hhZG93Um9vdChlbGVtZW50KSA/IGVsZW1lbnQuaG9zdCA6IG51bGwpIHx8IC8vIFNoYWRvd1Jvb3QgZGV0ZWN0ZWRcbiAgICAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS1jYWxsXTogSFRNTEVsZW1lbnQgaXMgYSBOb2RlXG4gICAgZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpIC8vIGZhbGxiYWNrXG5cbiAgKTtcbn0iLCJpbXBvcnQgZ2V0UGFyZW50Tm9kZSBmcm9tIFwiLi9nZXRQYXJlbnROb2RlLmpzXCI7XG5pbXBvcnQgaXNTY3JvbGxQYXJlbnQgZnJvbSBcIi4vaXNTY3JvbGxQYXJlbnQuanNcIjtcbmltcG9ydCBnZXROb2RlTmFtZSBmcm9tIFwiLi9nZXROb2RlTmFtZS5qc1wiO1xuaW1wb3J0IHsgaXNIVE1MRWxlbWVudCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFNjcm9sbFBhcmVudChub2RlKSB7XG4gIGlmIChbJ2h0bWwnLCAnYm9keScsICcjZG9jdW1lbnQnXS5pbmRleE9mKGdldE5vZGVOYW1lKG5vZGUpKSA+PSAwKSB7XG4gICAgLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtcmV0dXJuXTogYXNzdW1lIGJvZHkgaXMgYWx3YXlzIGF2YWlsYWJsZVxuICAgIHJldHVybiBub2RlLm93bmVyRG9jdW1lbnQuYm9keTtcbiAgfVxuXG4gIGlmIChpc0hUTUxFbGVtZW50KG5vZGUpICYmIGlzU2Nyb2xsUGFyZW50KG5vZGUpKSB7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICByZXR1cm4gZ2V0U2Nyb2xsUGFyZW50KGdldFBhcmVudE5vZGUobm9kZSkpO1xufSIsImltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4vZ2V0V2luZG93LmpzXCI7XG5pbXBvcnQgZ2V0RG9jdW1lbnRFbGVtZW50IGZyb20gXCIuL2dldERvY3VtZW50RWxlbWVudC5qc1wiO1xuaW1wb3J0IGdldFdpbmRvd1Njcm9sbEJhclggZnJvbSBcIi4vZ2V0V2luZG93U2Nyb2xsQmFyWC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Vmlld3BvcnRSZWN0KGVsZW1lbnQpIHtcbiAgdmFyIHdpbiA9IGdldFdpbmRvdyhlbGVtZW50KTtcbiAgdmFyIGh0bWwgPSBnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCk7XG4gIHZhciB2aXN1YWxWaWV3cG9ydCA9IHdpbi52aXN1YWxWaWV3cG9ydDtcbiAgdmFyIHdpZHRoID0gaHRtbC5jbGllbnRXaWR0aDtcbiAgdmFyIGhlaWdodCA9IGh0bWwuY2xpZW50SGVpZ2h0O1xuICB2YXIgeCA9IDA7XG4gIHZhciB5ID0gMDsgLy8gTkI6IFRoaXMgaXNuJ3Qgc3VwcG9ydGVkIG9uIGlPUyA8PSAxMi4gSWYgdGhlIGtleWJvYXJkIGlzIG9wZW4sIHRoZSBwb3BwZXJcbiAgLy8gY2FuIGJlIG9ic2N1cmVkIHVuZGVybmVhdGggaXQuXG4gIC8vIEFsc28sIGBodG1sLmNsaWVudEhlaWdodGAgYWRkcyB0aGUgYm90dG9tIGJhciBoZWlnaHQgaW4gU2FmYXJpIGlPUywgZXZlblxuICAvLyBpZiBpdCBpc24ndCBvcGVuLCBzbyBpZiB0aGlzIGlzbid0IGF2YWlsYWJsZSwgdGhlIHBvcHBlciB3aWxsIGJlIGRldGVjdGVkXG4gIC8vIHRvIG92ZXJmbG93IHRoZSBib3R0b20gb2YgdGhlIHNjcmVlbiB0b28gZWFybHkuXG5cbiAgaWYgKHZpc3VhbFZpZXdwb3J0KSB7XG4gICAgd2lkdGggPSB2aXN1YWxWaWV3cG9ydC53aWR0aDtcbiAgICBoZWlnaHQgPSB2aXN1YWxWaWV3cG9ydC5oZWlnaHQ7IC8vIFVzZXMgTGF5b3V0IFZpZXdwb3J0IChsaWtlIENocm9tZTsgU2FmYXJpIGRvZXMgbm90IGN1cnJlbnRseSlcbiAgICAvLyBJbiBDaHJvbWUsIGl0IHJldHVybnMgYSB2YWx1ZSB2ZXJ5IGNsb3NlIHRvIDAgKCsvLSkgYnV0IGNvbnRhaW5zIHJvdW5kaW5nXG4gICAgLy8gZXJyb3JzIGR1ZSB0byBmbG9hdGluZyBwb2ludCBudW1iZXJzLCBzbyB3ZSBuZWVkIHRvIGNoZWNrIHByZWNpc2lvbi5cbiAgICAvLyBTYWZhcmkgcmV0dXJucyBhIG51bWJlciA8PSAwLCB1c3VhbGx5IDwgLTEgd2hlbiBwaW5jaC16b29tZWRcbiAgICAvLyBGZWF0dXJlIGRldGVjdGlvbiBmYWlscyBpbiBtb2JpbGUgZW11bGF0aW9uIG1vZGUgaW4gQ2hyb21lLlxuICAgIC8vIE1hdGguYWJzKHdpbi5pbm5lcldpZHRoIC8gdmlzdWFsVmlld3BvcnQuc2NhbGUgLSB2aXN1YWxWaWV3cG9ydC53aWR0aCkgPFxuICAgIC8vIDAuMDAxXG4gICAgLy8gRmFsbGJhY2sgaGVyZTogXCJOb3QgU2FmYXJpXCIgdXNlckFnZW50XG5cbiAgICBpZiAoIS9eKCg/IWNocm9tZXxhbmRyb2lkKS4pKnNhZmFyaS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkpIHtcbiAgICAgIHggPSB2aXN1YWxWaWV3cG9ydC5vZmZzZXRMZWZ0O1xuICAgICAgeSA9IHZpc3VhbFZpZXdwb3J0Lm9mZnNldFRvcDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHdpZHRoOiB3aWR0aCxcbiAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICB4OiB4ICsgZ2V0V2luZG93U2Nyb2xsQmFyWChlbGVtZW50KSxcbiAgICB5OiB5XG4gIH07XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0V2luZG93KG5vZGUpIHtcbiAgaWYgKG5vZGUgPT0gbnVsbCkge1xuICAgIHJldHVybiB3aW5kb3c7XG4gIH1cblxuICBpZiAobm9kZS50b1N0cmluZygpICE9PSAnW29iamVjdCBXaW5kb3ddJykge1xuICAgIHZhciBvd25lckRvY3VtZW50ID0gbm9kZS5vd25lckRvY3VtZW50O1xuICAgIHJldHVybiBvd25lckRvY3VtZW50ID8gb3duZXJEb2N1bWVudC5kZWZhdWx0VmlldyB8fCB3aW5kb3cgOiB3aW5kb3c7XG4gIH1cblxuICByZXR1cm4gbm9kZTtcbn0iLCJpbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuL2dldFdpbmRvdy5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0V2luZG93U2Nyb2xsKG5vZGUpIHtcbiAgdmFyIHdpbiA9IGdldFdpbmRvdyhub2RlKTtcbiAgdmFyIHNjcm9sbExlZnQgPSB3aW4ucGFnZVhPZmZzZXQ7XG4gIHZhciBzY3JvbGxUb3AgPSB3aW4ucGFnZVlPZmZzZXQ7XG4gIHJldHVybiB7XG4gICAgc2Nyb2xsTGVmdDogc2Nyb2xsTGVmdCxcbiAgICBzY3JvbGxUb3A6IHNjcm9sbFRvcFxuICB9O1xufSIsImltcG9ydCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgZnJvbSBcIi4vZ2V0Qm91bmRpbmdDbGllbnRSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0RG9jdW1lbnRFbGVtZW50IGZyb20gXCIuL2dldERvY3VtZW50RWxlbWVudC5qc1wiO1xuaW1wb3J0IGdldFdpbmRvd1Njcm9sbCBmcm9tIFwiLi9nZXRXaW5kb3dTY3JvbGwuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFdpbmRvd1Njcm9sbEJhclgoZWxlbWVudCkge1xuICAvLyBJZiA8aHRtbD4gaGFzIGEgQ1NTIHdpZHRoIGdyZWF0ZXIgdGhhbiB0aGUgdmlld3BvcnQsIHRoZW4gdGhpcyB3aWxsIGJlXG4gIC8vIGluY29ycmVjdCBmb3IgUlRMLlxuICAvLyBQb3BwZXIgMSBpcyBicm9rZW4gaW4gdGhpcyBjYXNlIGFuZCBuZXZlciBoYWQgYSBidWcgcmVwb3J0IHNvIGxldCdzIGFzc3VtZVxuICAvLyBpdCdzIG5vdCBhbiBpc3N1ZS4gSSBkb24ndCB0aGluayBhbnlvbmUgZXZlciBzcGVjaWZpZXMgd2lkdGggb24gPGh0bWw+XG4gIC8vIGFueXdheS5cbiAgLy8gQnJvd3NlcnMgd2hlcmUgdGhlIGxlZnQgc2Nyb2xsYmFyIGRvZXNuJ3QgY2F1c2UgYW4gaXNzdWUgcmVwb3J0IGAwYCBmb3JcbiAgLy8gdGhpcyAoZS5nLiBFZGdlIDIwMTksIElFMTEsIFNhZmFyaSlcbiAgcmV0dXJuIGdldEJvdW5kaW5nQ2xpZW50UmVjdChnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkpLmxlZnQgKyBnZXRXaW5kb3dTY3JvbGwoZWxlbWVudCkuc2Nyb2xsTGVmdDtcbn0iLCJpbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuL2dldFdpbmRvdy5qc1wiO1xuXG5mdW5jdGlvbiBpc0VsZW1lbnQobm9kZSkge1xuICB2YXIgT3duRWxlbWVudCA9IGdldFdpbmRvdyhub2RlKS5FbGVtZW50O1xuICByZXR1cm4gbm9kZSBpbnN0YW5jZW9mIE93bkVsZW1lbnQgfHwgbm9kZSBpbnN0YW5jZW9mIEVsZW1lbnQ7XG59XG5cbmZ1bmN0aW9uIGlzSFRNTEVsZW1lbnQobm9kZSkge1xuICB2YXIgT3duRWxlbWVudCA9IGdldFdpbmRvdyhub2RlKS5IVE1MRWxlbWVudDtcbiAgcmV0dXJuIG5vZGUgaW5zdGFuY2VvZiBPd25FbGVtZW50IHx8IG5vZGUgaW5zdGFuY2VvZiBIVE1MRWxlbWVudDtcbn1cblxuZnVuY3Rpb24gaXNTaGFkb3dSb290KG5vZGUpIHtcbiAgLy8gSUUgMTEgaGFzIG5vIFNoYWRvd1Jvb3RcbiAgaWYgKHR5cGVvZiBTaGFkb3dSb290ID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHZhciBPd25FbGVtZW50ID0gZ2V0V2luZG93KG5vZGUpLlNoYWRvd1Jvb3Q7XG4gIHJldHVybiBub2RlIGluc3RhbmNlb2YgT3duRWxlbWVudCB8fCBub2RlIGluc3RhbmNlb2YgU2hhZG93Um9vdDtcbn1cblxuZXhwb3J0IHsgaXNFbGVtZW50LCBpc0hUTUxFbGVtZW50LCBpc1NoYWRvd1Jvb3QgfTsiLCJpbXBvcnQgZ2V0Q29tcHV0ZWRTdHlsZSBmcm9tIFwiLi9nZXRDb21wdXRlZFN0eWxlLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1Njcm9sbFBhcmVudChlbGVtZW50KSB7XG4gIC8vIEZpcmVmb3ggd2FudHMgdXMgdG8gY2hlY2sgYC14YCBhbmQgYC15YCB2YXJpYXRpb25zIGFzIHdlbGxcbiAgdmFyIF9nZXRDb21wdXRlZFN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KSxcbiAgICAgIG92ZXJmbG93ID0gX2dldENvbXB1dGVkU3R5bGUub3ZlcmZsb3csXG4gICAgICBvdmVyZmxvd1ggPSBfZ2V0Q29tcHV0ZWRTdHlsZS5vdmVyZmxvd1gsXG4gICAgICBvdmVyZmxvd1kgPSBfZ2V0Q29tcHV0ZWRTdHlsZS5vdmVyZmxvd1k7XG5cbiAgcmV0dXJuIC9hdXRvfHNjcm9sbHxvdmVybGF5fGhpZGRlbi8udGVzdChvdmVyZmxvdyArIG92ZXJmbG93WSArIG92ZXJmbG93WCk7XG59IiwiaW1wb3J0IGdldE5vZGVOYW1lIGZyb20gXCIuL2dldE5vZGVOYW1lLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1RhYmxlRWxlbWVudChlbGVtZW50KSB7XG4gIHJldHVybiBbJ3RhYmxlJywgJ3RkJywgJ3RoJ10uaW5kZXhPZihnZXROb2RlTmFtZShlbGVtZW50KSkgPj0gMDtcbn0iLCJpbXBvcnQgZ2V0U2Nyb2xsUGFyZW50IGZyb20gXCIuL2dldFNjcm9sbFBhcmVudC5qc1wiO1xuaW1wb3J0IGdldFBhcmVudE5vZGUgZnJvbSBcIi4vZ2V0UGFyZW50Tm9kZS5qc1wiO1xuaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi9nZXRXaW5kb3cuanNcIjtcbmltcG9ydCBpc1Njcm9sbFBhcmVudCBmcm9tIFwiLi9pc1Njcm9sbFBhcmVudC5qc1wiO1xuLypcbmdpdmVuIGEgRE9NIGVsZW1lbnQsIHJldHVybiB0aGUgbGlzdCBvZiBhbGwgc2Nyb2xsIHBhcmVudHMsIHVwIHRoZSBsaXN0IG9mIGFuY2Vzb3JzXG51bnRpbCB3ZSBnZXQgdG8gdGhlIHRvcCB3aW5kb3cgb2JqZWN0LiBUaGlzIGxpc3QgaXMgd2hhdCB3ZSBhdHRhY2ggc2Nyb2xsIGxpc3RlbmVyc1xudG8sIGJlY2F1c2UgaWYgYW55IG9mIHRoZXNlIHBhcmVudCBlbGVtZW50cyBzY3JvbGwsIHdlJ2xsIG5lZWQgdG8gcmUtY2FsY3VsYXRlIHRoZVxucmVmZXJlbmNlIGVsZW1lbnQncyBwb3NpdGlvbi5cbiovXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGxpc3RTY3JvbGxQYXJlbnRzKGVsZW1lbnQsIGxpc3QpIHtcbiAgdmFyIF9lbGVtZW50JG93bmVyRG9jdW1lbjtcblxuICBpZiAobGlzdCA9PT0gdm9pZCAwKSB7XG4gICAgbGlzdCA9IFtdO1xuICB9XG5cbiAgdmFyIHNjcm9sbFBhcmVudCA9IGdldFNjcm9sbFBhcmVudChlbGVtZW50KTtcbiAgdmFyIGlzQm9keSA9IHNjcm9sbFBhcmVudCA9PT0gKChfZWxlbWVudCRvd25lckRvY3VtZW4gPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfZWxlbWVudCRvd25lckRvY3VtZW4uYm9keSk7XG4gIHZhciB3aW4gPSBnZXRXaW5kb3coc2Nyb2xsUGFyZW50KTtcbiAgdmFyIHRhcmdldCA9IGlzQm9keSA/IFt3aW5dLmNvbmNhdCh3aW4udmlzdWFsVmlld3BvcnQgfHwgW10sIGlzU2Nyb2xsUGFyZW50KHNjcm9sbFBhcmVudCkgPyBzY3JvbGxQYXJlbnQgOiBbXSkgOiBzY3JvbGxQYXJlbnQ7XG4gIHZhciB1cGRhdGVkTGlzdCA9IGxpc3QuY29uY2F0KHRhcmdldCk7XG4gIHJldHVybiBpc0JvZHkgPyB1cGRhdGVkTGlzdCA6IC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLWNhbGxdOiBpc0JvZHkgdGVsbHMgdXMgdGFyZ2V0IHdpbGwgYmUgYW4gSFRNTEVsZW1lbnQgaGVyZVxuICB1cGRhdGVkTGlzdC5jb25jYXQobGlzdFNjcm9sbFBhcmVudHMoZ2V0UGFyZW50Tm9kZSh0YXJnZXQpKSk7XG59IiwiZXhwb3J0IHZhciB0b3AgPSAndG9wJztcbmV4cG9ydCB2YXIgYm90dG9tID0gJ2JvdHRvbSc7XG5leHBvcnQgdmFyIHJpZ2h0ID0gJ3JpZ2h0JztcbmV4cG9ydCB2YXIgbGVmdCA9ICdsZWZ0JztcbmV4cG9ydCB2YXIgYXV0byA9ICdhdXRvJztcbmV4cG9ydCB2YXIgYmFzZVBsYWNlbWVudHMgPSBbdG9wLCBib3R0b20sIHJpZ2h0LCBsZWZ0XTtcbmV4cG9ydCB2YXIgc3RhcnQgPSAnc3RhcnQnO1xuZXhwb3J0IHZhciBlbmQgPSAnZW5kJztcbmV4cG9ydCB2YXIgY2xpcHBpbmdQYXJlbnRzID0gJ2NsaXBwaW5nUGFyZW50cyc7XG5leHBvcnQgdmFyIHZpZXdwb3J0ID0gJ3ZpZXdwb3J0JztcbmV4cG9ydCB2YXIgcG9wcGVyID0gJ3BvcHBlcic7XG5leHBvcnQgdmFyIHJlZmVyZW5jZSA9ICdyZWZlcmVuY2UnO1xuZXhwb3J0IHZhciB2YXJpYXRpb25QbGFjZW1lbnRzID0gLyojX19QVVJFX18qL2Jhc2VQbGFjZW1lbnRzLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIGFjYy5jb25jYXQoW3BsYWNlbWVudCArIFwiLVwiICsgc3RhcnQsIHBsYWNlbWVudCArIFwiLVwiICsgZW5kXSk7XG59LCBbXSk7XG5leHBvcnQgdmFyIHBsYWNlbWVudHMgPSAvKiNfX1BVUkVfXyovW10uY29uY2F0KGJhc2VQbGFjZW1lbnRzLCBbYXV0b10pLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIGFjYy5jb25jYXQoW3BsYWNlbWVudCwgcGxhY2VtZW50ICsgXCItXCIgKyBzdGFydCwgcGxhY2VtZW50ICsgXCItXCIgKyBlbmRdKTtcbn0sIFtdKTsgLy8gbW9kaWZpZXJzIHRoYXQgbmVlZCB0byByZWFkIHRoZSBET01cblxuZXhwb3J0IHZhciBiZWZvcmVSZWFkID0gJ2JlZm9yZVJlYWQnO1xuZXhwb3J0IHZhciByZWFkID0gJ3JlYWQnO1xuZXhwb3J0IHZhciBhZnRlclJlYWQgPSAnYWZ0ZXJSZWFkJzsgLy8gcHVyZS1sb2dpYyBtb2RpZmllcnNcblxuZXhwb3J0IHZhciBiZWZvcmVNYWluID0gJ2JlZm9yZU1haW4nO1xuZXhwb3J0IHZhciBtYWluID0gJ21haW4nO1xuZXhwb3J0IHZhciBhZnRlck1haW4gPSAnYWZ0ZXJNYWluJzsgLy8gbW9kaWZpZXIgd2l0aCB0aGUgcHVycG9zZSB0byB3cml0ZSB0byB0aGUgRE9NIChvciB3cml0ZSBpbnRvIGEgZnJhbWV3b3JrIHN0YXRlKVxuXG5leHBvcnQgdmFyIGJlZm9yZVdyaXRlID0gJ2JlZm9yZVdyaXRlJztcbmV4cG9ydCB2YXIgd3JpdGUgPSAnd3JpdGUnO1xuZXhwb3J0IHZhciBhZnRlcldyaXRlID0gJ2FmdGVyV3JpdGUnO1xuZXhwb3J0IHZhciBtb2RpZmllclBoYXNlcyA9IFtiZWZvcmVSZWFkLCByZWFkLCBhZnRlclJlYWQsIGJlZm9yZU1haW4sIG1haW4sIGFmdGVyTWFpbiwgYmVmb3JlV3JpdGUsIHdyaXRlLCBhZnRlcldyaXRlXTsiLCJleHBvcnQgKiBmcm9tIFwiLi9lbnVtcy5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vbW9kaWZpZXJzL2luZGV4LmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZXhwb3J0IHsgcG9wcGVyR2VuZXJhdG9yLCBkZXRlY3RPdmVyZmxvdywgY3JlYXRlUG9wcGVyIGFzIGNyZWF0ZVBvcHBlckJhc2UgfSBmcm9tIFwiLi9jcmVhdGVQb3BwZXIuanNcIjsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5leHBvcnQgeyBjcmVhdGVQb3BwZXIgfSBmcm9tIFwiLi9wb3BwZXIuanNcIjsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5leHBvcnQgeyBjcmVhdGVQb3BwZXIgYXMgY3JlYXRlUG9wcGVyTGl0ZSB9IGZyb20gXCIuL3BvcHBlci1saXRlLmpzXCI7IiwiaW1wb3J0IGdldE5vZGVOYW1lIGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0Tm9kZU5hbWUuanNcIjtcbmltcG9ydCB7IGlzSFRNTEVsZW1lbnQgfSBmcm9tIFwiLi4vZG9tLXV0aWxzL2luc3RhbmNlT2YuanNcIjsgLy8gVGhpcyBtb2RpZmllciB0YWtlcyB0aGUgc3R5bGVzIHByZXBhcmVkIGJ5IHRoZSBgY29tcHV0ZVN0eWxlc2AgbW9kaWZpZXJcbi8vIGFuZCBhcHBsaWVzIHRoZW0gdG8gdGhlIEhUTUxFbGVtZW50cyBzdWNoIGFzIHBvcHBlciBhbmQgYXJyb3dcblxuZnVuY3Rpb24gYXBwbHlTdHlsZXMoX3JlZikge1xuICB2YXIgc3RhdGUgPSBfcmVmLnN0YXRlO1xuICBPYmplY3Qua2V5cyhzdGF0ZS5lbGVtZW50cykuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkge1xuICAgIHZhciBzdHlsZSA9IHN0YXRlLnN0eWxlc1tuYW1lXSB8fCB7fTtcbiAgICB2YXIgYXR0cmlidXRlcyA9IHN0YXRlLmF0dHJpYnV0ZXNbbmFtZV0gfHwge307XG4gICAgdmFyIGVsZW1lbnQgPSBzdGF0ZS5lbGVtZW50c1tuYW1lXTsgLy8gYXJyb3cgaXMgb3B0aW9uYWwgKyB2aXJ0dWFsIGVsZW1lbnRzXG5cbiAgICBpZiAoIWlzSFRNTEVsZW1lbnQoZWxlbWVudCkgfHwgIWdldE5vZGVOYW1lKGVsZW1lbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfSAvLyBGbG93IGRvZXNuJ3Qgc3VwcG9ydCB0byBleHRlbmQgdGhpcyBwcm9wZXJ0eSwgYnV0IGl0J3MgdGhlIG1vc3RcbiAgICAvLyBlZmZlY3RpdmUgd2F5IHRvIGFwcGx5IHN0eWxlcyB0byBhbiBIVE1MRWxlbWVudFxuICAgIC8vICRGbG93Rml4TWVbY2Fubm90LXdyaXRlXVxuXG5cbiAgICBPYmplY3QuYXNzaWduKGVsZW1lbnQuc3R5bGUsIHN0eWxlKTtcbiAgICBPYmplY3Qua2V5cyhhdHRyaWJ1dGVzKS5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICB2YXIgdmFsdWUgPSBhdHRyaWJ1dGVzW25hbWVdO1xuXG4gICAgICBpZiAodmFsdWUgPT09IGZhbHNlKSB7XG4gICAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKG5hbWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUgPT09IHRydWUgPyAnJyA6IHZhbHVlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGVmZmVjdChfcmVmMikge1xuICB2YXIgc3RhdGUgPSBfcmVmMi5zdGF0ZTtcbiAgdmFyIGluaXRpYWxTdHlsZXMgPSB7XG4gICAgcG9wcGVyOiB7XG4gICAgICBwb3NpdGlvbjogc3RhdGUub3B0aW9ucy5zdHJhdGVneSxcbiAgICAgIGxlZnQ6ICcwJyxcbiAgICAgIHRvcDogJzAnLFxuICAgICAgbWFyZ2luOiAnMCdcbiAgICB9LFxuICAgIGFycm93OiB7XG4gICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJ1xuICAgIH0sXG4gICAgcmVmZXJlbmNlOiB7fVxuICB9O1xuICBPYmplY3QuYXNzaWduKHN0YXRlLmVsZW1lbnRzLnBvcHBlci5zdHlsZSwgaW5pdGlhbFN0eWxlcy5wb3BwZXIpO1xuICBzdGF0ZS5zdHlsZXMgPSBpbml0aWFsU3R5bGVzO1xuXG4gIGlmIChzdGF0ZS5lbGVtZW50cy5hcnJvdykge1xuICAgIE9iamVjdC5hc3NpZ24oc3RhdGUuZWxlbWVudHMuYXJyb3cuc3R5bGUsIGluaXRpYWxTdHlsZXMuYXJyb3cpO1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICBPYmplY3Qua2V5cyhzdGF0ZS5lbGVtZW50cykuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkge1xuICAgICAgdmFyIGVsZW1lbnQgPSBzdGF0ZS5lbGVtZW50c1tuYW1lXTtcbiAgICAgIHZhciBhdHRyaWJ1dGVzID0gc3RhdGUuYXR0cmlidXRlc1tuYW1lXSB8fCB7fTtcbiAgICAgIHZhciBzdHlsZVByb3BlcnRpZXMgPSBPYmplY3Qua2V5cyhzdGF0ZS5zdHlsZXMuaGFzT3duUHJvcGVydHkobmFtZSkgPyBzdGF0ZS5zdHlsZXNbbmFtZV0gOiBpbml0aWFsU3R5bGVzW25hbWVdKTsgLy8gU2V0IGFsbCB2YWx1ZXMgdG8gYW4gZW1wdHkgc3RyaW5nIHRvIHVuc2V0IHRoZW1cblxuICAgICAgdmFyIHN0eWxlID0gc3R5bGVQcm9wZXJ0aWVzLnJlZHVjZShmdW5jdGlvbiAoc3R5bGUsIHByb3BlcnR5KSB7XG4gICAgICAgIHN0eWxlW3Byb3BlcnR5XSA9ICcnO1xuICAgICAgICByZXR1cm4gc3R5bGU7XG4gICAgICB9LCB7fSk7IC8vIGFycm93IGlzIG9wdGlvbmFsICsgdmlydHVhbCBlbGVtZW50c1xuXG4gICAgICBpZiAoIWlzSFRNTEVsZW1lbnQoZWxlbWVudCkgfHwgIWdldE5vZGVOYW1lKGVsZW1lbnQpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgT2JqZWN0LmFzc2lnbihlbGVtZW50LnN0eWxlLCBzdHlsZSk7XG4gICAgICBPYmplY3Qua2V5cyhhdHRyaWJ1dGVzKS5mb3JFYWNoKGZ1bmN0aW9uIChhdHRyaWJ1dGUpIHtcbiAgICAgICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoYXR0cmlidXRlKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9O1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnYXBwbHlTdHlsZXMnLFxuICBlbmFibGVkOiB0cnVlLFxuICBwaGFzZTogJ3dyaXRlJyxcbiAgZm46IGFwcGx5U3R5bGVzLFxuICBlZmZlY3Q6IGVmZmVjdCxcbiAgcmVxdWlyZXM6IFsnY29tcHV0ZVN0eWxlcyddXG59OyIsImltcG9ydCBnZXRCYXNlUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRCYXNlUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgZ2V0TGF5b3V0UmVjdCBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldExheW91dFJlY3QuanNcIjtcbmltcG9ydCBjb250YWlucyBmcm9tIFwiLi4vZG9tLXV0aWxzL2NvbnRhaW5zLmpzXCI7XG5pbXBvcnQgZ2V0T2Zmc2V0UGFyZW50IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0T2Zmc2V0UGFyZW50LmpzXCI7XG5pbXBvcnQgZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQuanNcIjtcbmltcG9ydCB7IHdpdGhpbiB9IGZyb20gXCIuLi91dGlscy93aXRoaW4uanNcIjtcbmltcG9ydCBtZXJnZVBhZGRpbmdPYmplY3QgZnJvbSBcIi4uL3V0aWxzL21lcmdlUGFkZGluZ09iamVjdC5qc1wiO1xuaW1wb3J0IGV4cGFuZFRvSGFzaE1hcCBmcm9tIFwiLi4vdXRpbHMvZXhwYW5kVG9IYXNoTWFwLmpzXCI7XG5pbXBvcnQgeyBsZWZ0LCByaWdodCwgYmFzZVBsYWNlbWVudHMsIHRvcCwgYm90dG9tIH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5pbXBvcnQgeyBpc0hUTUxFbGVtZW50IH0gZnJvbSBcIi4uL2RvbS11dGlscy9pbnN0YW5jZU9mLmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxudmFyIHRvUGFkZGluZ09iamVjdCA9IGZ1bmN0aW9uIHRvUGFkZGluZ09iamVjdChwYWRkaW5nLCBzdGF0ZSkge1xuICBwYWRkaW5nID0gdHlwZW9mIHBhZGRpbmcgPT09ICdmdW5jdGlvbicgPyBwYWRkaW5nKE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLnJlY3RzLCB7XG4gICAgcGxhY2VtZW50OiBzdGF0ZS5wbGFjZW1lbnRcbiAgfSkpIDogcGFkZGluZztcbiAgcmV0dXJuIG1lcmdlUGFkZGluZ09iamVjdCh0eXBlb2YgcGFkZGluZyAhPT0gJ251bWJlcicgPyBwYWRkaW5nIDogZXhwYW5kVG9IYXNoTWFwKHBhZGRpbmcsIGJhc2VQbGFjZW1lbnRzKSk7XG59O1xuXG5mdW5jdGlvbiBhcnJvdyhfcmVmKSB7XG4gIHZhciBfc3RhdGUkbW9kaWZpZXJzRGF0YSQ7XG5cbiAgdmFyIHN0YXRlID0gX3JlZi5zdGF0ZSxcbiAgICAgIG5hbWUgPSBfcmVmLm5hbWUsXG4gICAgICBvcHRpb25zID0gX3JlZi5vcHRpb25zO1xuICB2YXIgYXJyb3dFbGVtZW50ID0gc3RhdGUuZWxlbWVudHMuYXJyb3c7XG4gIHZhciBwb3BwZXJPZmZzZXRzID0gc3RhdGUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzO1xuICB2YXIgYmFzZVBsYWNlbWVudCA9IGdldEJhc2VQbGFjZW1lbnQoc3RhdGUucGxhY2VtZW50KTtcbiAgdmFyIGF4aXMgPSBnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQoYmFzZVBsYWNlbWVudCk7XG4gIHZhciBpc1ZlcnRpY2FsID0gW2xlZnQsIHJpZ2h0XS5pbmRleE9mKGJhc2VQbGFjZW1lbnQpID49IDA7XG4gIHZhciBsZW4gPSBpc1ZlcnRpY2FsID8gJ2hlaWdodCcgOiAnd2lkdGgnO1xuXG4gIGlmICghYXJyb3dFbGVtZW50IHx8ICFwb3BwZXJPZmZzZXRzKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIHBhZGRpbmdPYmplY3QgPSB0b1BhZGRpbmdPYmplY3Qob3B0aW9ucy5wYWRkaW5nLCBzdGF0ZSk7XG4gIHZhciBhcnJvd1JlY3QgPSBnZXRMYXlvdXRSZWN0KGFycm93RWxlbWVudCk7XG4gIHZhciBtaW5Qcm9wID0gYXhpcyA9PT0gJ3knID8gdG9wIDogbGVmdDtcbiAgdmFyIG1heFByb3AgPSBheGlzID09PSAneScgPyBib3R0b20gOiByaWdodDtcbiAgdmFyIGVuZERpZmYgPSBzdGF0ZS5yZWN0cy5yZWZlcmVuY2VbbGVuXSArIHN0YXRlLnJlY3RzLnJlZmVyZW5jZVtheGlzXSAtIHBvcHBlck9mZnNldHNbYXhpc10gLSBzdGF0ZS5yZWN0cy5wb3BwZXJbbGVuXTtcbiAgdmFyIHN0YXJ0RGlmZiA9IHBvcHBlck9mZnNldHNbYXhpc10gLSBzdGF0ZS5yZWN0cy5yZWZlcmVuY2VbYXhpc107XG4gIHZhciBhcnJvd09mZnNldFBhcmVudCA9IGdldE9mZnNldFBhcmVudChhcnJvd0VsZW1lbnQpO1xuICB2YXIgY2xpZW50U2l6ZSA9IGFycm93T2Zmc2V0UGFyZW50ID8gYXhpcyA9PT0gJ3knID8gYXJyb3dPZmZzZXRQYXJlbnQuY2xpZW50SGVpZ2h0IHx8IDAgOiBhcnJvd09mZnNldFBhcmVudC5jbGllbnRXaWR0aCB8fCAwIDogMDtcbiAgdmFyIGNlbnRlclRvUmVmZXJlbmNlID0gZW5kRGlmZiAvIDIgLSBzdGFydERpZmYgLyAyOyAvLyBNYWtlIHN1cmUgdGhlIGFycm93IGRvZXNuJ3Qgb3ZlcmZsb3cgdGhlIHBvcHBlciBpZiB0aGUgY2VudGVyIHBvaW50IGlzXG4gIC8vIG91dHNpZGUgb2YgdGhlIHBvcHBlciBib3VuZHNcblxuICB2YXIgbWluID0gcGFkZGluZ09iamVjdFttaW5Qcm9wXTtcbiAgdmFyIG1heCA9IGNsaWVudFNpemUgLSBhcnJvd1JlY3RbbGVuXSAtIHBhZGRpbmdPYmplY3RbbWF4UHJvcF07XG4gIHZhciBjZW50ZXIgPSBjbGllbnRTaXplIC8gMiAtIGFycm93UmVjdFtsZW5dIC8gMiArIGNlbnRlclRvUmVmZXJlbmNlO1xuICB2YXIgb2Zmc2V0ID0gd2l0aGluKG1pbiwgY2VudGVyLCBtYXgpOyAvLyBQcmV2ZW50cyBicmVha2luZyBzeW50YXggaGlnaGxpZ2h0aW5nLi4uXG5cbiAgdmFyIGF4aXNQcm9wID0gYXhpcztcbiAgc3RhdGUubW9kaWZpZXJzRGF0YVtuYW1lXSA9IChfc3RhdGUkbW9kaWZpZXJzRGF0YSQgPSB7fSwgX3N0YXRlJG1vZGlmaWVyc0RhdGEkW2F4aXNQcm9wXSA9IG9mZnNldCwgX3N0YXRlJG1vZGlmaWVyc0RhdGEkLmNlbnRlck9mZnNldCA9IG9mZnNldCAtIGNlbnRlciwgX3N0YXRlJG1vZGlmaWVyc0RhdGEkKTtcbn1cblxuZnVuY3Rpb24gZWZmZWN0KF9yZWYyKSB7XG4gIHZhciBzdGF0ZSA9IF9yZWYyLnN0YXRlLFxuICAgICAgb3B0aW9ucyA9IF9yZWYyLm9wdGlvbnM7XG4gIHZhciBfb3B0aW9ucyRlbGVtZW50ID0gb3B0aW9ucy5lbGVtZW50LFxuICAgICAgYXJyb3dFbGVtZW50ID0gX29wdGlvbnMkZWxlbWVudCA9PT0gdm9pZCAwID8gJ1tkYXRhLXBvcHBlci1hcnJvd10nIDogX29wdGlvbnMkZWxlbWVudDtcblxuICBpZiAoYXJyb3dFbGVtZW50ID09IG51bGwpIHtcbiAgICByZXR1cm47XG4gIH0gLy8gQ1NTIHNlbGVjdG9yXG5cblxuICBpZiAodHlwZW9mIGFycm93RWxlbWVudCA9PT0gJ3N0cmluZycpIHtcbiAgICBhcnJvd0VsZW1lbnQgPSBzdGF0ZS5lbGVtZW50cy5wb3BwZXIucXVlcnlTZWxlY3RvcihhcnJvd0VsZW1lbnQpO1xuXG4gICAgaWYgKCFhcnJvd0VsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgaWYgKCFpc0hUTUxFbGVtZW50KGFycm93RWxlbWVudCkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoWydQb3BwZXI6IFwiYXJyb3dcIiBlbGVtZW50IG11c3QgYmUgYW4gSFRNTEVsZW1lbnQgKG5vdCBhbiBTVkdFbGVtZW50KS4nLCAnVG8gdXNlIGFuIFNWRyBhcnJvdywgd3JhcCBpdCBpbiBhbiBIVE1MRWxlbWVudCB0aGF0IHdpbGwgYmUgdXNlZCBhcycsICd0aGUgYXJyb3cuJ10uam9pbignICcpKTtcbiAgICB9XG4gIH1cblxuICBpZiAoIWNvbnRhaW5zKHN0YXRlLmVsZW1lbnRzLnBvcHBlciwgYXJyb3dFbGVtZW50KSkge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoWydQb3BwZXI6IFwiYXJyb3dcIiBtb2RpZmllclxcJ3MgYGVsZW1lbnRgIG11c3QgYmUgYSBjaGlsZCBvZiB0aGUgcG9wcGVyJywgJ2VsZW1lbnQuJ10uam9pbignICcpKTtcbiAgICB9XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBzdGF0ZS5lbGVtZW50cy5hcnJvdyA9IGFycm93RWxlbWVudDtcbn0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ2Fycm93JyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICdtYWluJyxcbiAgZm46IGFycm93LFxuICBlZmZlY3Q6IGVmZmVjdCxcbiAgcmVxdWlyZXM6IFsncG9wcGVyT2Zmc2V0cyddLFxuICByZXF1aXJlc0lmRXhpc3RzOiBbJ3ByZXZlbnRPdmVyZmxvdyddXG59OyIsImltcG9ydCB7IHRvcCwgbGVmdCwgcmlnaHQsIGJvdHRvbSwgZW5kIH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5pbXBvcnQgZ2V0T2Zmc2V0UGFyZW50IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0T2Zmc2V0UGFyZW50LmpzXCI7XG5pbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0V2luZG93LmpzXCI7XG5pbXBvcnQgZ2V0RG9jdW1lbnRFbGVtZW50IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0RG9jdW1lbnRFbGVtZW50LmpzXCI7XG5pbXBvcnQgZ2V0Q29tcHV0ZWRTdHlsZSBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldENvbXB1dGVkU3R5bGUuanNcIjtcbmltcG9ydCBnZXRCYXNlUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRCYXNlUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgZ2V0VmFyaWF0aW9uIGZyb20gXCIuLi91dGlscy9nZXRWYXJpYXRpb24uanNcIjtcbmltcG9ydCB7IHJvdW5kIH0gZnJvbSBcIi4uL3V0aWxzL21hdGguanNcIjsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG52YXIgdW5zZXRTaWRlcyA9IHtcbiAgdG9wOiAnYXV0bycsXG4gIHJpZ2h0OiAnYXV0bycsXG4gIGJvdHRvbTogJ2F1dG8nLFxuICBsZWZ0OiAnYXV0bydcbn07IC8vIFJvdW5kIHRoZSBvZmZzZXRzIHRvIHRoZSBuZWFyZXN0IHN1aXRhYmxlIHN1YnBpeGVsIGJhc2VkIG9uIHRoZSBEUFIuXG4vLyBab29taW5nIGNhbiBjaGFuZ2UgdGhlIERQUiwgYnV0IGl0IHNlZW1zIHRvIHJlcG9ydCBhIHZhbHVlIHRoYXQgd2lsbFxuLy8gY2xlYW5seSBkaXZpZGUgdGhlIHZhbHVlcyBpbnRvIHRoZSBhcHByb3ByaWF0ZSBzdWJwaXhlbHMuXG5cbmZ1bmN0aW9uIHJvdW5kT2Zmc2V0c0J5RFBSKF9yZWYpIHtcbiAgdmFyIHggPSBfcmVmLngsXG4gICAgICB5ID0gX3JlZi55O1xuICB2YXIgd2luID0gd2luZG93O1xuICB2YXIgZHByID0gd2luLmRldmljZVBpeGVsUmF0aW8gfHwgMTtcbiAgcmV0dXJuIHtcbiAgICB4OiByb3VuZCh4ICogZHByKSAvIGRwciB8fCAwLFxuICAgIHk6IHJvdW5kKHkgKiBkcHIpIC8gZHByIHx8IDBcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1hcFRvU3R5bGVzKF9yZWYyKSB7XG4gIHZhciBfT2JqZWN0JGFzc2lnbjI7XG5cbiAgdmFyIHBvcHBlciA9IF9yZWYyLnBvcHBlcixcbiAgICAgIHBvcHBlclJlY3QgPSBfcmVmMi5wb3BwZXJSZWN0LFxuICAgICAgcGxhY2VtZW50ID0gX3JlZjIucGxhY2VtZW50LFxuICAgICAgdmFyaWF0aW9uID0gX3JlZjIudmFyaWF0aW9uLFxuICAgICAgb2Zmc2V0cyA9IF9yZWYyLm9mZnNldHMsXG4gICAgICBwb3NpdGlvbiA9IF9yZWYyLnBvc2l0aW9uLFxuICAgICAgZ3B1QWNjZWxlcmF0aW9uID0gX3JlZjIuZ3B1QWNjZWxlcmF0aW9uLFxuICAgICAgYWRhcHRpdmUgPSBfcmVmMi5hZGFwdGl2ZSxcbiAgICAgIHJvdW5kT2Zmc2V0cyA9IF9yZWYyLnJvdW5kT2Zmc2V0cyxcbiAgICAgIGlzRml4ZWQgPSBfcmVmMi5pc0ZpeGVkO1xuICB2YXIgX29mZnNldHMkeCA9IG9mZnNldHMueCxcbiAgICAgIHggPSBfb2Zmc2V0cyR4ID09PSB2b2lkIDAgPyAwIDogX29mZnNldHMkeCxcbiAgICAgIF9vZmZzZXRzJHkgPSBvZmZzZXRzLnksXG4gICAgICB5ID0gX29mZnNldHMkeSA9PT0gdm9pZCAwID8gMCA6IF9vZmZzZXRzJHk7XG5cbiAgdmFyIF9yZWYzID0gdHlwZW9mIHJvdW5kT2Zmc2V0cyA9PT0gJ2Z1bmN0aW9uJyA/IHJvdW5kT2Zmc2V0cyh7XG4gICAgeDogeCxcbiAgICB5OiB5XG4gIH0pIDoge1xuICAgIHg6IHgsXG4gICAgeTogeVxuICB9O1xuXG4gIHggPSBfcmVmMy54O1xuICB5ID0gX3JlZjMueTtcbiAgdmFyIGhhc1ggPSBvZmZzZXRzLmhhc093blByb3BlcnR5KCd4Jyk7XG4gIHZhciBoYXNZID0gb2Zmc2V0cy5oYXNPd25Qcm9wZXJ0eSgneScpO1xuICB2YXIgc2lkZVggPSBsZWZ0O1xuICB2YXIgc2lkZVkgPSB0b3A7XG4gIHZhciB3aW4gPSB3aW5kb3c7XG5cbiAgaWYgKGFkYXB0aXZlKSB7XG4gICAgdmFyIG9mZnNldFBhcmVudCA9IGdldE9mZnNldFBhcmVudChwb3BwZXIpO1xuICAgIHZhciBoZWlnaHRQcm9wID0gJ2NsaWVudEhlaWdodCc7XG4gICAgdmFyIHdpZHRoUHJvcCA9ICdjbGllbnRXaWR0aCc7XG5cbiAgICBpZiAob2Zmc2V0UGFyZW50ID09PSBnZXRXaW5kb3cocG9wcGVyKSkge1xuICAgICAgb2Zmc2V0UGFyZW50ID0gZ2V0RG9jdW1lbnRFbGVtZW50KHBvcHBlcik7XG5cbiAgICAgIGlmIChnZXRDb21wdXRlZFN0eWxlKG9mZnNldFBhcmVudCkucG9zaXRpb24gIT09ICdzdGF0aWMnICYmIHBvc2l0aW9uID09PSAnYWJzb2x1dGUnKSB7XG4gICAgICAgIGhlaWdodFByb3AgPSAnc2Nyb2xsSGVpZ2h0JztcbiAgICAgICAgd2lkdGhQcm9wID0gJ3Njcm9sbFdpZHRoJztcbiAgICAgIH1cbiAgICB9IC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLWNhc3RdOiBmb3JjZSB0eXBlIHJlZmluZW1lbnQsIHdlIGNvbXBhcmUgb2Zmc2V0UGFyZW50IHdpdGggd2luZG93IGFib3ZlLCBidXQgRmxvdyBkb2Vzbid0IGRldGVjdCBpdFxuXG5cbiAgICBvZmZzZXRQYXJlbnQgPSBvZmZzZXRQYXJlbnQ7XG5cbiAgICBpZiAocGxhY2VtZW50ID09PSB0b3AgfHwgKHBsYWNlbWVudCA9PT0gbGVmdCB8fCBwbGFjZW1lbnQgPT09IHJpZ2h0KSAmJiB2YXJpYXRpb24gPT09IGVuZCkge1xuICAgICAgc2lkZVkgPSBib3R0b207XG4gICAgICB2YXIgb2Zmc2V0WSA9IGlzRml4ZWQgJiYgd2luLnZpc3VhbFZpZXdwb3J0ID8gd2luLnZpc3VhbFZpZXdwb3J0LmhlaWdodCA6IC8vICRGbG93Rml4TWVbcHJvcC1taXNzaW5nXVxuICAgICAgb2Zmc2V0UGFyZW50W2hlaWdodFByb3BdO1xuICAgICAgeSAtPSBvZmZzZXRZIC0gcG9wcGVyUmVjdC5oZWlnaHQ7XG4gICAgICB5ICo9IGdwdUFjY2VsZXJhdGlvbiA/IDEgOiAtMTtcbiAgICB9XG5cbiAgICBpZiAocGxhY2VtZW50ID09PSBsZWZ0IHx8IChwbGFjZW1lbnQgPT09IHRvcCB8fCBwbGFjZW1lbnQgPT09IGJvdHRvbSkgJiYgdmFyaWF0aW9uID09PSBlbmQpIHtcbiAgICAgIHNpZGVYID0gcmlnaHQ7XG4gICAgICB2YXIgb2Zmc2V0WCA9IGlzRml4ZWQgJiYgd2luLnZpc3VhbFZpZXdwb3J0ID8gd2luLnZpc3VhbFZpZXdwb3J0LndpZHRoIDogLy8gJEZsb3dGaXhNZVtwcm9wLW1pc3NpbmddXG4gICAgICBvZmZzZXRQYXJlbnRbd2lkdGhQcm9wXTtcbiAgICAgIHggLT0gb2Zmc2V0WCAtIHBvcHBlclJlY3Qud2lkdGg7XG4gICAgICB4ICo9IGdwdUFjY2VsZXJhdGlvbiA/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/IHN0YXRlLnBsYWNlbWVudCA6IF9vcHRpb25zJHBsYWNlbWVudCxcbiAgICAgIF9vcHRpb25zJGJvdW5kYXJ5ID0gX29wdGlvbnMuYm91bmRhcnksXG4gICAgICBib3VuZGFyeSA9IF9vcHRpb25zJGJvdW5kYXJ5ID09PSB2b2lkIDAgPyBjbGlwcGluZ1BhcmVudHMgOiBfb3B0aW9ucyRib3VuZGFyeSxcbiAgICAgIF9vcHRpb25zJHJvb3RCb3VuZGFyeSA9IF9vcHRpb25zLnJvb3RCb3VuZGFyeSxcbiAgICAgIHJvb3RCb3VuZGFyeSA9IF9vcHRpb25zJHJvb3RCb3VuZGFyeSA9PT0gdm9pZCAwID8gdmlld3BvcnQgOiBfb3B0aW9ucyRyb290Qm91bmRhcnksXG4gICAgICBfb3B0aW9ucyRlbGVtZW50Q29udGUgPSBfb3B0aW9ucy5lbGVtZW50Q29udGV4dCxcbiAgICAgIGVsZW1lbnRDb250ZXh0ID0gX29wdGlvbnMkZWxlbWVudENvbnRlID09PSB2b2lkIDAgPyBwb3BwZXIgOiBfb3B0aW9ucyRlbGVtZW50Q29udGUsXG4gICAgICBfb3B0aW9ucyRhbHRCb3VuZGFyeSA9IF9vcHRpb25zLmFsdEJvdW5kYXJ5LFxuICAgICAgYWx0Qm91bmRhcnkgPSBfb3B0aW9ucyRhbHRCb3VuZGFyeSA9PT0gdm9pZCAwID8gZmFsc2UgOiBfb3B0aW9ucyRhbHRCb3VuZGFyeSxcbiAgICAgIF9vcHRpb25zJHBhZGRpbmcgPSBfb3B0aW9ucy5wYWRkaW5nLFxuICAgICAgcGFkZGluZyA9IF9vcHRpb25zJHBhZGRpbmcgPT09IHZvaWQgMCA/IDAgOiBfb3B0aW9ucyRwYWRkaW5nO1xuICB2YXIgcGFkZGluZ09iamVjdCA9IG1lcmdlUGFkZGluZ09iamVjdCh0eXBlb2YgcGFkZGluZyAhPT0gJ251bWJlcicgPyBwYWRkaW5nIDogZXhwYW5kVG9IYXNoTWFwKHBhZGRpbmcsIGJhc2VQbGFjZW1lbnRzKSk7XG4gIHZhciBhbHRDb250ZXh0ID0gZWxlbWVudENvbnRleHQgPT09IHBvcHBlciA/IHJlZmVyZW5jZSA6IHBvcHBlcjtcbiAgdmFyIHBvcHBlclJlY3QgPSBzdGF0ZS5yZWN0cy5wb3BwZXI7XG4gIHZhciBlbGVtZW50ID0gc3RhdGUuZWxlbWVudHNbYWx0Qm91bmRhcnkgPyBhbHRDb250ZXh0IDogZWxlbWVudENvbnRleHRdO1xuICB2YXIgY2xpcHBpbmdDbGllbnRSZWN0ID0gZ2V0Q2xpcHBpbmdSZWN0KGlzRWxlbWVudChlbGVtZW50KSA/IGVsZW1lbnQgOiBlbGVtZW50LmNvbnRleHRFbGVtZW50IHx8IGdldERvY3VtZW50RWxlbWVudChzdGF0ZS5lbGVtZW50cy5wb3BwZXIpLCBib3VuZGFyeSwgcm9vdEJvdW5kYXJ5KTtcbiAgdmFyIHJlZmVyZW5jZUNsaWVudFJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3Qoc3RhdGUuZWxlbWVudHMucmVmZXJlbmNlKTtcbiAgdmFyIHBvcHBlck9mZnNldHMgPSBjb21wdXRlT2Zmc2V0cyh7XG4gICAgcmVmZXJlbmNlOiByZWZlcmVuY2VDbGllbnRSZWN0LFxuICAgIGVsZW1lbnQ6IHBvcHBlclJlY3QsXG4gICAgc3RyYXRlZ3k6ICdhYnNvbHV0ZScsXG4gICAgcGxhY2VtZW50OiBwbGFjZW1lbnRcbiAgfSk7XG4gIHZhciBwb3BwZXJDbGllbnRSZWN0ID0gcmVjdFRvQ2xpZW50UmVjdChPYmplY3QuYXNzaWduKHt9LCBwb3BwZXJSZWN0LCBwb3BwZXJPZmZzZXRzKSk7XG4gIHZhciBlbGVtZW50Q2xpZW50UmVjdCA9IGVsZW1lbnRDb250ZXh0ID09PSBwb3BwZXIgPyBwb3BwZXJDbGllbnRSZWN0IDogcmVmZXJlbmNlQ2xpZW50UmVjdDsgLy8gcG9zaXRpdmUgPSBvdmVyZmxvd2luZyB0aGUgY2xpcHBpbmcgcmVjdFxuICAvLyAwIG9yIG5lZ2F0aXZlID0gd2l0aGluIHRoZSBjbGlwcGluZyByZWN0XG5cbiAgdmFyIG92ZXJmbG93T2Zmc2V0cyA9IHtcbiAgICB0b3A6IGNsaXBwaW5nQ2xpZW50UmVjdC50b3AgLSBlbGVtZW50Q2xpZW50UmVjdC50b3AgKyBwYWRkaW5nT2JqZWN0LnRvcCxcbiAgICBib3R0b206IGVsZW1lbnRDbGllbnRSZWN0LmJvdHRvbSAtIGNsaXBwaW5nQ2xpZW50UmVjdC5ib3R0b20gKyBwYWRkaW5nT2JqZWN0LmJvdHRvbSxcbiAgICBsZWZ0OiBjbGlwcGluZ0NsaWVudFJlY3QubGVmdCAtIGVsZW1lbnRDbGllbnRSZWN0LmxlZnQgKyBwYWRkaW5nT2JqZWN0LmxlZnQsXG4gICAgcmlnaHQ6IGVsZW1lbnRDbGllbnRSZWN0LnJpZ2h0IC0gY2xpcHBpbmdDbGllbnRSZWN0LnJpZ2h0ICsgcGFkZGluZ09iamVjdC5yaWdodFxuICB9O1xuICB2YXIgb2Zmc2V0RGF0YSA9IHN0YXRlLm1vZGlmaWVyc0RhdGEub2Zmc2V0OyAvLyBPZmZzZXRzIGNhbiBiZSBhcHBsaWVkIG9ubHkgdG8gdGhlIHBvcHBlciBlbGVtZW50XG5cbiAgaWYgKGVsZW1lbnRDb250ZXh0ID09PSBwb3BwZXIgJiYgb2Zmc2V0RGF0YSkge1xuICAgIHZhciBvZmZzZXQgPSBvZmZzZXREYXRhW3BsYWNlbWVudF07XG4gICAgT2JqZWN0LmtleXMob3ZlcmZsb3dPZmZzZXRzKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIHZhciBtdWx0aXBseSA9IFtyaWdodCwgYm90dG9tXS5pbmRleE9mKGtleSkgPj0gMCA/IDEgOiAtMTtcbiAgICAgIHZhciBheGlzID0gW3RvcCwgYm90dG9tXS5pbmRleE9mKGtleSkgPj0gMCA/ICd5JyA6ICd4JztcbiAgICAgIG92ZXJmbG93T2Zmc2V0c1trZXldICs9IG9mZnNldFtheGlzXSAqIG11bHRpcGx5O1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIG92ZXJmbG93T2Zmc2V0cztcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBleHBhbmRUb0hhc2hNYXAodmFsdWUsIGtleXMpIHtcbiAgcmV0dXJuIGtleXMucmVkdWNlKGZ1bmN0aW9uIChoYXNoTWFwLCBrZXkpIHtcbiAgICBoYXNoTWFwW2tleV0gPSB2YWx1ZTtcbiAgICByZXR1cm4gaGFzaE1hcDtcbiAgfSwge30pO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGZvcm1hdChzdHIpIHtcbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiA+IDEgPyBfbGVuIC0gMSA6IDApLCBfa2V5ID0gMTsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgIGFyZ3NbX2tleSAtIDFdID0gYXJndW1lbnRzW19rZXldO1xuICB9XG5cbiAgcmV0dXJuIFtdLmNvbmNhdChhcmdzKS5yZWR1Y2UoZnVuY3Rpb24gKHAsIGMpIHtcbiAgICByZXR1cm4gcC5yZXBsYWNlKC8lcy8sIGMpO1xuICB9LCBzdHIpO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldEFsdEF4aXMoYXhpcykge1xuICByZXR1cm4gYXhpcyA9PT0gJ3gnID8gJ3knIDogJ3gnO1xufSIsImltcG9ydCB7IGF1dG8gfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldEJhc2VQbGFjZW1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQuc3BsaXQoJy0nKVswXTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRGcmVzaFNpZGVPYmplY3QoKSB7XG4gIHJldHVybiB7XG4gICAgdG9wOiAwLFxuICAgIHJpZ2h0OiAwLFxuICAgIGJvdHRvbTogMCxcbiAgICBsZWZ0OiAwXG4gIH07XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50KHBsYWNlbWVudCkge1xuICByZXR1cm4gWyd0b3AnLCAnYm90dG9tJ10uaW5kZXhPZihwbGFjZW1lbnQpID49IDAgPyAneCcgOiAneSc7XG59IiwidmFyIGhhc2ggPSB7XG4gIGxlZnQ6ICdyaWdodCcsXG4gIHJpZ2h0OiAnbGVmdCcsXG4gIGJvdHRvbTogJ3RvcCcsXG4gIHRvcDogJ2JvdHRvbSdcbn07XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRPcHBvc2l0ZVBsYWNlbWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5yZXBsYWNlKC9sZWZ0fHJpZ2h0fGJvdHRvbXx0b3AvZywgZnVuY3Rpb24gKG1hdGNoZWQpIHtcbiAgICByZXR1cm4gaGFzaFttYXRjaGVkXTtcbiAgfSk7XG59IiwidmFyIGhhc2ggPSB7XG4gIHN0YXJ0OiAnZW5kJyxcbiAgZW5kOiAnc3RhcnQnXG59O1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0T3Bwb3NpdGVWYXJpYXRpb25QbGFjZW1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQucmVwbGFjZSgvc3RhcnR8ZW5kL2csIGZ1bmN0aW9uIChtYXRjaGVkKSB7XG4gICAgcmV0dXJuIGhhc2hbbWF0Y2hlZF07XG4gIH0pO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFZhcmlhdGlvbihwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5zcGxpdCgnLScpWzFdO1xufSIsImV4cG9ydCB2YXIgbWF4ID0gTWF0aC5tYXg7XG5leHBvcnQgdmFyIG1pbiA9IE1hdGgubWluO1xuZXhwb3J0IHZhciByb3VuZCA9IE1hdGgucm91bmQ7IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbWVyZ2VCeU5hbWUobW9kaWZpZXJzKSB7XG4gIHZhciBtZXJnZWQgPSBtb2RpZmllcnMucmVkdWNlKGZ1bmN0aW9uIChtZXJnZWQsIGN1cnJlbnQpIHtcbiAgICB2YXIgZXhpc3RpbmcgPSBtZXJnZWRbY3VycmVudC5uYW1lXTtcbiAgICBtZXJnZWRbY3VycmVudC5uYW1lXSA9IGV4aXN0aW5nID8gT2JqZWN0LmFzc2lnbih7fSwgZXhpc3RpbmcsIGN1cnJlbnQsIHtcbiAgICAgIG9wdGlvbnM6IE9iamVjdC5hc3NpZ24oe30sIGV4aXN0aW5nLm9wdGlvbnMsIGN1cnJlbnQub3B0aW9ucyksXG4gICAgICBkYXRhOiBPYmplY3QuYXNzaWduKHt9LCBleGlzdGluZy5kYXRhLCBjdXJyZW50LmRhdGEpXG4gICAgfSkgOiBjdXJyZW50O1xuICAgIHJldHVybiBtZXJnZWQ7XG4gIH0sIHt9KTsgLy8gSUUxMSBkb2VzIG5vdCBzdXBwb3J0IE9iamVjdC52YWx1ZXNcblxuICByZXR1cm4gT2JqZWN0LmtleXMobWVyZ2VkKS5tYXAoZnVuY3Rpb24gKGtleSkge1xuICAgIHJldHVybiBtZXJnZWRba2V5XTtcbiAgfSk7XG59IiwiaW1wb3J0IGdldEZyZXNoU2lkZU9iamVjdCBmcm9tIFwiLi9nZXRGcmVzaFNpZGVPYmplY3QuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1lcmdlUGFkZGluZ09iamVjdChwYWRkaW5nT2JqZWN0KSB7XG4gIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBnZXRGcmVzaFNpZGVPYmplY3QoKSwgcGFkZGluZ09iamVjdCk7XG59IiwiaW1wb3J0IHsgbW9kaWZpZXJQaGFzZXMgfSBmcm9tIFwiLi4vZW51bXMuanNcIjsgLy8gc291cmNlOiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy80OTg3NTI1NVxuXG5mdW5jdGlvbiBvcmRlcihtb2RpZmllcnMpIHtcbiAgdmFyIG1hcCA9IG5ldyBNYXAoKTtcbiAgdmFyIHZpc2l0ZWQgPSBuZXcgU2V0KCk7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgbW9kaWZpZXJzLmZvckVhY2goZnVuY3Rpb24gKG1vZGlmaWVyKSB7XG4gICAgbWFwLnNldChtb2RpZmllci5uYW1lLCBtb2RpZmllcik7XG4gIH0pOyAvLyBPbiB2aXNpdGluZyBvYmplY3QsIGNoZWNrIGZvciBpdHMgZGVwZW5kZW5jaWVzIGFuZCB2aXNpdCB0aGVtIHJlY3Vyc2l2ZWx5XG5cbiAgZnVuY3Rpb24gc29ydChtb2RpZmllcikge1xuICAgIHZpc2l0ZWQuYWRkKG1vZGlmaWVyLm5hbWUpO1xuICAgIHZhciByZXF1aXJlcyA9IFtdLmNvbmNhdChtb2RpZmllci5yZXF1aXJlcyB8fCBbXSwgbW9kaWZpZXIucmVxdWlyZXNJZkV4aXN0cyB8fCBbXSk7XG4gICAgcmVxdWlyZXMuZm9yRWFjaChmdW5jdGlvbiAoZGVwKSB7XG4gICAgICBpZiAoIXZpc2l0ZWQuaGFzKGRlcCkpIHtcbiAgICAgICAgdmFyIGRlcE1vZGlmaWVyID0gbWFwLmdldChkZXApO1xuXG4gICAgICAgIGlmIChkZXBNb2RpZmllcikge1xuICAgICAgICAgIHNvcnQoZGVwTW9kaWZpZXIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmVzdWx0LnB1c2gobW9kaWZpZXIpO1xuICB9XG5cbiAgbW9kaWZpZXJzLmZvckVhY2goZnVuY3Rpb24gKG1vZGlmaWVyKSB7XG4gICAgaWYgKCF2aXNpdGVkLmhhcyhtb2RpZmllci5uYW1lKSkge1xuICAgICAgLy8gY2hlY2sgZm9yIHZpc2l0ZWQgb2JqZWN0XG4gICAgICBzb3J0KG1vZGlmaWVyKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBvcmRlck1vZGlmaWVycyhtb2RpZmllcnMpIHtcbiAgLy8gb3JkZXIgYmFzZWQgb24gZGVwZW5kZW5jaWVzXG4gIHZhciBvcmRlcmVkTW9kaWZpZXJzID0gb3JkZXIobW9kaWZpZXJzKTsgLy8gb3JkZXIgYmFzZWQgb24gcGhhc2VcblxuICByZXR1cm4gbW9kaWZpZXJQaGFzZXMucmVkdWNlKGZ1bmN0aW9uIChhY2MsIHBoYXNlKSB7XG4gICAgcmV0dXJuIGFjYy5jb25jYXQob3JkZXJlZE1vZGlmaWVycy5maWx0ZXIoZnVuY3Rpb24gKG1vZGlmaWVyKSB7XG4gICAgICByZXR1cm4gbW9kaWZpZXIucGhhc2UgPT09IHBoYXNlO1xuICAgIH0pKTtcbiAgfSwgW10pO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHJlY3RUb0NsaWVudFJlY3QocmVjdCkge1xuICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgcmVjdCwge1xuICAgIGxlZnQ6IHJlY3QueCxcbiAgICB0b3A6IHJlY3QueSxcbiAgICByaWdodDogcmVjdC54ICsgcmVjdC53aWR0aCxcbiAgICBib3R0b206IHJlY3QueSArIHJlY3QuaGVpZ2h0XG4gIH0pO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVuaXF1ZUJ5KGFyciwgZm4pIHtcbiAgdmFyIGlkZW50aWZpZXJzID0gbmV3IFNldCgpO1xuICByZXR1cm4gYXJyLmZpbHRlcihmdW5jdGlvbiAoaXRlbSkge1xuICAgIHZhciBpZGVudGlmaWVyID0gZm4oaXRlbSk7XG5cbiAgICBpZiAoIWlkZW50aWZpZXJzLmhhcyhpZGVudGlmaWVyKSkge1xuICAgICAgaWRlbnRpZmllcnMuYWRkKGlkZW50aWZpZXIpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9KTtcbn0iLCJpbXBvcnQgZm9ybWF0IGZyb20gXCIuL2Zvcm1hdC5qc1wiO1xuaW1wb3J0IHsgbW9kaWZpZXJQaGFzZXMgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbnZhciBJTlZBTElEX01PRElGSUVSX0VSUk9SID0gJ1BvcHBlcjogbW9kaWZpZXIgXCIlc1wiIHByb3ZpZGVkIGFuIGludmFsaWQgJXMgcHJvcGVydHksIGV4cGVjdGVkICVzIGJ1dCBnb3QgJXMnO1xudmFyIE1JU1NJTkdfREVQRU5ERU5DWV9FUlJPUiA9ICdQb3BwZXI6IG1vZGlmaWVyIFwiJXNcIiByZXF1aXJlcyBcIiVzXCIsIGJ1dCBcIiVzXCIgbW9kaWZpZXIgaXMgbm90IGF2YWlsYWJsZSc7XG52YXIgVkFMSURfUFJPUEVSVElFUyA9IFsnbmFtZScsICdlbmFibGVkJywgJ3BoYXNlJywgJ2ZuJywgJ2VmZmVjdCcsICdyZXF1aXJlcycsICdvcHRpb25zJ107XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB2YWxpZGF0ZU1vZGlmaWVycyhtb2RpZmllcnMpIHtcbiAgbW9kaWZpZXJzLmZvckVhY2goZnVuY3Rpb24gKG1vZGlmaWVyKSB7XG4gICAgW10uY29uY2F0KE9iamVjdC5rZXlzKG1vZGlmaWVyKSwgVkFMSURfUFJPUEVSVElFUykgLy8gSUUxMS1jb21wYXRpYmxlIHJlcGxhY2VtZW50IGZvciBgbmV3IFNldChpdGVyYWJsZSlgXG4gICAgLmZpbHRlcihmdW5jdGlvbiAodmFsdWUsIGluZGV4LCBzZWxmKSB7XG4gICAgICByZXR1cm4gc2VsZi5pbmRleE9mKHZhbHVlKSA9PT0gaW5kZXg7XG4gICAgfSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgICBjYXNlICduYW1lJzpcbiAgICAgICAgICBpZiAodHlwZW9mIG1vZGlmaWVyLm5hbWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGZvcm1hdChJTlZBTElEX01PRElGSUVSX0VSUk9SLCBTdHJpbmcobW9kaWZpZXIubmFtZSksICdcIm5hbWVcIicsICdcInN0cmluZ1wiJywgXCJcXFwiXCIgKyBTdHJpbmcobW9kaWZpZXIubmFtZSkgKyBcIlxcXCJcIikpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2VuYWJsZWQnOlxuICAgICAgICAgIGlmICh0eXBlb2YgbW9kaWZpZXIuZW5hYmxlZCAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGZvcm1hdChJTlZBTElEX01PRElGSUVSX0VSUk9SLCBtb2RpZmllci5uYW1lLCAnXCJlbmFibGVkXCInLCAnXCJib29sZWFuXCInLCBcIlxcXCJcIiArIFN0cmluZyhtb2RpZmllci5lbmFibGVkKSArIFwiXFxcIlwiKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAncGhhc2UnOlxuICAgICAgICAgIGlmIChtb2RpZmllclBoYXNlcy5pbmRleE9mKG1vZGlmaWVyLnBoYXNlKSA8IDApIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZm9ybWF0KElOVkFMSURfTU9ESUZJRVJfRVJST1IsIG1vZGlmaWVyLm5hbWUsICdcInBoYXNlXCInLCBcImVpdGhlciBcIiArIG1vZGlmaWVyUGhhc2VzLmpvaW4oJywgJyksIFwiXFxcIlwiICsgU3RyaW5nKG1vZGlmaWVyLnBoYXNlKSArIFwiXFxcIlwiKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnZm4nOlxuICAgICAgICAgIGlmICh0eXBlb2YgbW9kaWZpZXIuZm4gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZm9ybWF0KElOVkFMSURfTU9ESUZJRVJfRVJST1IsIG1vZGlmaWVyLm5hbWUsICdcImZuXCInLCAnXCJmdW5jdGlvblwiJywgXCJcXFwiXCIgKyBTdHJpbmcobW9kaWZpZXIuZm4pICsgXCJcXFwiXCIpKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdlZmZlY3QnOlxuICAgICAgICAgIGlmIChtb2RpZmllci5lZmZlY3QgIT0gbnVsbCAmJiB0eXBlb2YgbW9kaWZpZXIuZWZmZWN0ICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGZvcm1hdChJTlZBTElEX01PRElGSUVSX0VSUk9SLCBtb2RpZmllci5uYW1lLCAnXCJlZmZlY3RcIicsICdcImZ1bmN0aW9uXCInLCBcIlxcXCJcIiArIFN0cmluZyhtb2RpZmllci5mbikgKyBcIlxcXCJcIikpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ3JlcXVpcmVzJzpcbiAgICAgICAgICBpZiAobW9kaWZpZXIucmVxdWlyZXMgIT0gbnVsbCAmJiAhQXJyYXkuaXNBcnJheShtb2RpZmllci5yZXF1aXJlcykpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZm9ybWF0KElOVkFMSURfTU9ESUZJRVJfRVJST1IsIG1vZGlmaWVyLm5hbWUsICdcInJlcXVpcmVzXCInLCAnXCJhcnJheVwiJywgXCJcXFwiXCIgKyBTdHJpbmcobW9kaWZpZXIucmVxdWlyZXMpICsgXCJcXFwiXCIpKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdyZXF1aXJlc0lmRXhpc3RzJzpcbiAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkobW9kaWZpZXIucmVxdWlyZXNJZkV4aXN0cykpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZm9ybWF0KElOVkFMSURfTU9ESUZJRVJfRVJST1IsIG1vZGlmaWVyLm5hbWUsICdcInJlcXVpcmVzSWZFeGlzdHNcIicsICdcImFycmF5XCInLCBcIlxcXCJcIiArIFN0cmluZyhtb2RpZmllci5yZXF1aXJlc0lmRXhpc3RzKSArIFwiXFxcIlwiKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnb3B0aW9ucyc6XG4gICAgICAgIGNhc2UgJ2RhdGEnOlxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgY29uc29sZS5lcnJvcihcIlBvcHBlckpTOiBhbiBpbnZhbGlkIHByb3BlcnR5IGhhcyBiZWVuIHByb3ZpZGVkIHRvIHRoZSBcXFwiXCIgKyBtb2RpZmllci5uYW1lICsgXCJcXFwiIG1vZGlmaWVyLCB2YWxpZCBwcm9wZXJ0aWVzIGFyZSBcIiArIFZBTElEX1BST1BFUlRJRVMubWFwKGZ1bmN0aW9uIChzKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJcXFwiXCIgKyBzICsgXCJcXFwiXCI7XG4gICAgICAgICAgfSkuam9pbignLCAnKSArIFwiOyBidXQgXFxcIlwiICsga2V5ICsgXCJcXFwiIHdhcyBwcm92aWRlZC5cIik7XG4gICAgICB9XG5cbiAgICAgIG1vZGlmaWVyLnJlcXVpcmVzICYmIG1vZGlmaWVyLnJlcXVpcmVzLmZvckVhY2goZnVuY3Rpb24gKHJlcXVpcmVtZW50KSB7XG4gICAgICAgIGlmIChtb2RpZmllcnMuZmluZChmdW5jdGlvbiAobW9kKSB7XG4gICAgICAgICAgcmV0dXJuIG1vZC5uYW1lID09PSByZXF1aXJlbWVudDtcbiAgICAgICAgfSkgPT0gbnVsbCkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZm9ybWF0KE1JU1NJTkdfREVQRU5ERU5DWV9FUlJPUiwgU3RyaW5nKG1vZGlmaWVyLm5hbWUpLCByZXF1aXJlbWVudCwgcmVxdWlyZW1lbnQpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufSIsImltcG9ydCB7IG1heCBhcyBtYXRoTWF4LCBtaW4gYXMgbWF0aE1pbiB9IGZyb20gXCIuL21hdGguanNcIjtcbmV4cG9ydCBmdW5jdGlvbiB3aXRoaW4obWluLCB2YWx1ZSwgbWF4KSB7XG4gIHJldHVybiBtYXRoTWF4KG1pbiwgbWF0aE1pbih2YWx1ZSwgbWF4KSk7XG59XG5leHBvcnQgZnVuY3Rpb24gd2l0aGluTWF4Q2xhbXAobWluLCB2YWx1ZSwgbWF4KSB7XG4gIHZhciB2ID0gd2l0aGluKG1pbiwgdmFsdWUsIG1heCk7XG4gIHJldHVybiB2ID4gbWF4ID8gbWF4IDogdjtcbn0iLCJcInVzZSBzdHJpY3RcIjtcblxuLypcbiAgTUlUIExpY2Vuc2UgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5waHBcbiAgQXV0aG9yIFRvYmlhcyBLb3BwZXJzIEBzb2tyYVxuKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGNzc1dpdGhNYXBwaW5nVG9TdHJpbmcpIHtcbiAgdmFyIGxpc3QgPSBbXTsgLy8gcmV0dXJuIHRoZSBsaXN0IG9mIG1vZHVsZXMgYXMgY3NzIHN0cmluZ1xuXG4gIGxpc3QudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgIHZhciBjb250ZW50ID0gXCJcIjtcbiAgICAgIHZhciBuZWVkTGF5ZXIgPSB0eXBlb2YgaXRlbVs1XSAhPT0gXCJ1bmRlZmluZWRcIjtcblxuICAgICAgaWYgKGl0ZW1bNF0pIHtcbiAgICAgICAgY29udGVudCArPSBcIkBzdXBwb3J0cyAoXCIuY29uY2F0KGl0ZW1bNF0sIFwiKSB7XCIpO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXRlbVsyXSkge1xuICAgICAgICBjb250ZW50ICs9IFwiQG1lZGlhIFwiLmNvbmNhdChpdGVtWzJdLCBcIiB7XCIpO1xuICAgICAgfVxuXG4gICAgICBpZiAobmVlZExheWVyKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJAbGF5ZXJcIi5jb25jYXQoaXRlbVs1XS5sZW5ndGggPiAwID8gXCIgXCIuY29uY2F0KGl0ZW1bNV0pIDogXCJcIiwgXCIge1wiKTtcbiAgICAgIH1cblxuICAgICAgY29udGVudCArPSBjc3NXaXRoTWFwcGluZ1RvU3RyaW5nKGl0ZW0pO1xuXG4gICAgICBpZiAobmVlZExheWVyKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJ9XCI7XG4gICAgICB9XG5cbiAgICAgIGlmIChpdGVtWzJdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJ9XCI7XG4gICAgICB9XG5cbiAgICAgIGlmIChpdGVtWzRdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJ9XCI7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb250ZW50O1xuICAgIH0pLmpvaW4oXCJcIik7XG4gIH07IC8vIGltcG9ydCBhIGxpc3Qgb2YgbW9kdWxlcyBpbnRvIHRoZSBsaXN0XG5cblxuICBsaXN0LmkgPSBmdW5jdGlvbiBpKG1vZHVsZXMsIG1lZGlhLCBkZWR1cGUsIHN1cHBvcnRzLCBsYXllcikge1xuICAgIGlmICh0eXBlb2YgbW9kdWxlcyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgbW9kdWxlcyA9IFtbbnVsbCwgbW9kdWxlcywgdW5kZWZpbmVkXV07XG4gICAgfVxuXG4gICAgdmFyIGFscmVhZHlJbXBvcnRlZE1vZHVsZXMgPSB7fTtcblxuICAgIGlmIChkZWR1cGUpIHtcbiAgICAgIGZvciAodmFyIGsgPSAwOyBrIDwgdGhpcy5sZW5ndGg7IGsrKykge1xuICAgICAgICB2YXIgaWQgPSB0aGlzW2tdWzBdO1xuXG4gICAgICAgIGlmIChpZCAhPSBudWxsKSB7XG4gICAgICAgICAgYWxyZWFkeUltcG9ydGVkTW9kdWxlc1tpZF0gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yICh2YXIgX2sgPSAwOyBfayA8IG1vZHVsZXMubGVuZ3RoOyBfaysrKSB7XG4gICAgICB2YXIgaXRlbSA9IFtdLmNvbmNhdChtb2R1bGVzW19rXSk7XG5cbiAgICAgIGlmIChkZWR1cGUgJiYgYWxyZWFkeUltcG9ydGVkTW9kdWxlc1tpdGVtWzBdXSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBsYXllciAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICBpZiAodHlwZW9mIGl0ZW1bNV0gPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICBpdGVtWzVdID0gbGF5ZXI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbVsxXSA9IFwiQGxheWVyXCIuY29uY2F0KGl0ZW1bNV0ubGVuZ3RoID4gMCA/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+IHtcbiAgY29uc3QgbGlzdCA9IFtdO1xuICBmb3IgKGxldCBpID0gYTsgaSA8PSBiOyBpICs9IDEpIHtcbiAgICBsaXN0LnB1c2goaSk7XG4gIH1cbiAgcmV0dXJuIGxpc3Q7XG59O1xuXG5jb25zdCBwYXJzZUlTT1N0cmluZyA9IChzdHIgLyogeXl5eS1tbS1kZCAqLykgPT4ge1xuICBjb25zdCBhcnJTdHIgPSBzdHIuc3BsaXQoJy0nKS5tYXAocGFyc2VGbG9hdCk7XG4gIHJldHVybiB7XG4gICAgeWVhcjogYXJyU3RyWzBdLFxuICAgIG1vbnRoOiBhcnJTdHJbMV0gLSAxLFxuICAgIGRhdGU6IGFyclN0clsyXVxuICB9O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2FsZW5kYXJUcmVlIHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IHZhbGlkYXRlQ2VsbFxuICAgKiBAcGFyYW0ge09iamVjdH0gdHJlZVxuICAgKi9cbiAgY29uc3RydWN0b3IodmFsaWRhdGVDZWxsLCB0cmVlKSB7XG4gICAgdGhpcy52YWxpZGF0ZUNlbGwgPSB2YWxpZGF0ZUNlbGw7XG4gICAgdGhpcy50cmVlICAgICAgICAgPSB0cmVlO1xuICB9XG5cbiAgYWRkVHJlZShvYmopIHtcbiAgICBpZiAoIXRoaXMudHJlZSkge1xuICAgICAgdGhpcy50cmVlID0gb2JqO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRyZWUgPSBtZXJnZSh0aGlzLnRyZWUgfHwge30sIG9iaiwgdHJ1ZSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIHNlbGVjdCByYW5nZSBmcm9tIHRoZSB0cmVlLCByZXR1cm5zIGFycmF5IGl0ZW1zXG4gICAqIHN0YXJ0IGRhdGUgaXMgQUxXQVlTIDwgdGhlbiBlbmQgZGF0ZSAsIGFzIHdlIGFyZSBzZWxlY3RpbmcgdGltZSByYW5nZSBpbiBkYXlzLlxuICAgKlxuICAgKiBAcGFyYW0ge0FycmF5fSBzdGFydCBlLmcuIFsyMDE2LCAwLCAxXVxuICAgKiBAcGFyYW0ge0FycmF5fSBlbmQgICAgICAgIFsyMDE2LCAxLCAzXVxuICAgKiBAcmV0dXJucyB7e3JhbmdlOiBBcnJheSwgaXNWYWxpZDoge0Jvb2xlYW59fX1cbiAgICovXG4gIHNlbGVjdFJhbmdlKHN0YXJ0LCBlbmQpIHtcbiAgICBsZXQgcmFuZ2UgPSBbXTtcblxuICAgIGNvbnN0IGEgPSBzdGFydC5zbGljZSgpO1xuXG4gICAgLy8gaWYgeWVhciBhbmQgbW9udGggdGhlIHNhbWUsIGp1c3Qgc2xpY2UgdGhlIGN1cnJlbnQgbW9udGhcbiAgICBpZiAoYVswXSA9PT0gZW5kWzBdICYmIGFbMV0gPT09IGVuZFsxXSkge1xuICAgICAgcmFuZ2UgPSB0aGlzLnNlbGVjdERheXNJbk1vbnRoKGFbMF0sIGFbMV0sIGFbMl0sIGVuZFsyXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG1vbnRoRGF5cyA9IHRoaXMudHJlZVthWzBdXVthWzFdXTtcblxuICAgICAgLy8gc2xpY2UgdGhlIHBpZWNlIG9mIGN1cnJlbnQgbW9udGhEYXlzIGZyb20gc3RhcnQgb2YgcmFuZ2UgdGlsbCBlbmQgb2YgdGhlIG1vbnRoRGF5c1xuICAgICAgcmFuZ2UgPSByYW5nZS5jb25jYXQodGhpcy5zZWxlY3REYXlzSW5Nb250aChhWzBdLCBhWzFdLCBhWzJdLCBtb250aERheXMubGVuZ3RoKSk7XG5cbiAgICAgIC8vIHNoaWZ0IHN0YXJ0IG1vbnRoLCBiL2Mgd2UgYWxyZWFkeSBzZWxlY3RlZCBkYXlzIGluIGl0XG4gICAgICBhWzFdICs9IDE7XG5cbiAgICAgIC8vIGlmIGVuZCBkYXRlIHllYXIgPiBzdGFydCBkYXRlXG4gICAgICAvLyBzZWxlY3QgZXZlcnl0aGluZyBpbiBzdGFydCB5ZWFyIHRpbGwgdGhlIGVuZCBvZiBzdGFydCB5ZWFyXG4gICAgICAvLyBlLmcuIHN0YXJ0IGlzIDIwIE9jdG9iZXIsIHNvIHNlbGVjdCBOb3ZlbWJlciBhbmQgRGVjZW1iZXIsIE9jdG9iZXIgd2FzIHNlbGVjdGVkIGFib3ZlXG4gICAgICBpZiAoZW5kWzBdID4gc3RhcnRbMF0pIHtcbiAgICAgICAgcmFuZ2UgPSByYW5nZS5jb25jYXQodGhpcy5zZWxlY3RNb250aHNJblllYXIoYVswXSwgYVsxXSwgMTEpKTtcbiAgICAgICAgLy8gYW5kIHNldCBzdGFydCB5ZWFyIHRvIGVuZCB5ZWFyXG4gICAgICAgIC8vIG1vbnRoIHRvIDAgKEphbnVhcnkpXG4gICAgICAgIFthWzBdLCBhWzFdXSA9IFtlbmRbMF0sIDBdO1xuICAgICAgfVxuXG4gICAgICAvLyBub3cgd2UgYXJlIGF0IHRoZSBzYW1lIHllYXIgYW5kIGhhdmUgdGhlIGNhc2UgaWYgZW5kIG1vbnRoID4gc3RhcnQgbW9udGhcbiAgICAgIC8vIHRoZW4gc2VsZWN0IGV2ZXJ5dGhpbmcgYmV0d2VlbiB0aG9zZSBtb250aHNcbiAgICAgIGlmIChlbmRbMV0gPiBhWzFdKSB7XG4gICAgICAgIC8vIGUuZy4gc3RhcnQgMjAgT2N0b2JlciBlbmQgMjAgRGVjZW1iZXIsIHNlbGVjdCBmdWxsIE5vdmVtYmVyXG4gICAgICAgIHJhbmdlID0gcmFuZ2UuY29uY2F0KHRoaXMuc2VsZWN0TW9udGhzSW5ZZWFyKGFbMF0sIGFbMV0sIGVuZFsxXSAtIDEpKTtcbiAgICAgICAgYVsxXSA9IGVuZDtcbiAgICAgIH1cblxuICAgICAgLy8gdGhlIG1pc3NpbmcgcGFydCBpcyBkYXlzIGluIGVuZCBzZWxlY3Rpb24gbW9udGhcbiAgICAgIHJhbmdlID0gcmFuZ2UuY29uY2F0KHRoaXMuc2VsZWN0RGF5c0luTW9udGgoZW5kWzBdLCBlbmRbMV0sIDEsIGVuZFsyXSkpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICByYW5nZSxcbiAgICAgIGlzVmFsaWQ6IHRoaXMuaXNSYW5nZVZhbGlkKHJhbmdlKVxuICAgIH07XG4gIH1cblxuICBzZWxlY3RNb250aHNJblllYXIoeWVhciwgc3RhcnQsIGVuZCkge1xuICAgIGxldCBzZWxlY3Rpb24gICAgPSBbXTtcbiAgICBjb25zdCBtb250aFJhbmdlID0gZ2VuQXJyYXlSYW5nZShzdGFydCwgZW5kKTtcblxuICAgIG1vbnRoUmFuZ2UuZm9yRWFjaCgobW9udGgpID0+IHtcbiAgICAgIGNvbnN0IHkgPSB0aGlzLnRyZWVbeWVhcl07XG4gICAgICBjb25zdCBtID0gaXMoeSkgPyB0aGlzLnRyZWVbeWVhcl1bbW9udGhdIDogbnVsbDtcblxuICAgICAgaWYgKHkgJiYgbSkge1xuICAgICAgICBzZWxlY3Rpb24gPSBzZWxlY3Rpb24uY29uY2F0KHRoaXMuc2VsZWN0RGF5c0luTW9udGgoeWVhciwgbW9udGgsIDEsIG0ubGVuZ3RoKSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gc2VsZWN0aW9uO1xuICB9XG5cbiAgc2VsZWN0RGF5c0luTW9udGgoeWVhciwgbW9udGgsIHN0YXJ0RGF5LCBlbmREYXkpIHtcbiAgICBjb25zdCB5ID0gdGhpcy50cmVlW3llYXJdO1xuICAgIGNvbnN0IG0gPSBpcyh5KSA/IHRoaXMudHJlZVt5ZWFyXVttb250aF0gOiBudWxsO1xuXG4gICAgaWYgKHkgJiYgbSkge1xuICAgICAgcmV0dXJuIG0uc2xpY2UoKHN0YXJ0RGF5IC0gMSksIGVuZERheSk7XG4gICAgfVxuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIHNlbGVjdERheSh5ZWFyLCBtb250aCwgZGF5KSB7XG4gICAgY29uc3QgeSA9IHRoaXMudHJlZVt5ZWFyXTtcbiAgICBjb25zdCBtID0gaXMoeSkgPyB0aGlzLnRyZWVbeWVhcl1bbW9udGhdIDogbnVsbDtcblxuICAgIGlmICh5ICYmIG0pIHtcbiAgICAgIHJldHVybiBtW2RheSAtIDFdO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGlzUmFuZ2VWYWxpZChyYW5nZSwgZm4pIHtcbiAgICBjb25zdCB2YWxpZGF0ZUNlbGwgPSB0aGlzLnZhbGlkYXRlQ2VsbCB8fCBmbjtcbiAgICBsZXQgaXNWYWxpZCAgICAgICAgPSB0cnVlO1xuXG4gICAgaWYgKHR5cGVvZiB2YWxpZGF0ZUNlbGwgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNvbnN0IGZpbHRlclZhbGlkcyA9IHJhbmdlLmZpbHRlcigoY2VsbCkgPT4gdGhpcy52YWxpZGF0ZUNlbGwoY2VsbCkpO1xuICAgICAgaXNWYWxpZCA9IGZpbHRlclZhbGlkcy5sZW5ndGggPT0gcmFuZ2UubGVuZ3RoO1xuICAgIH1cblxuICAgIHJldHVybiBpc1ZhbGlkO1xuICB9XG5cbiAgcmVwbGFjZU1hcHMobWFwLCB1cGRhdGVkQXQpIHtcbiAgICB0aGlzLm1hcCA9IENhbGVuZGFyVHJlZS5tYXBzVG9UcmVlKG1hcCwgdXBkYXRlZEF0KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHJlbW92ZU1hcCgpIHtcbiAgICB0aGlzLm1hcCA9IHt9O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqICBDcmVhdGUgYSB0cmVlIHN0cnVjdHVyZSBmcm9tIG1hcHNcbiAgICogIGZvciBuLXRpbWUgZGF5IGFjY2VzcywgZS5nLiB0aGlzLm1hcFt5ZWFyXVttb250aF1bZGF5XS5pc0F2YWlsYWJsZTtcbiAgICoge1xuICAgKiAgIDIxMDY6IHtcbiAgICogICAgICAxOiB7XG4gICAqICAgICAgICAxOiAsXG4gICAqICAgICAgICAyOiAsXG4gICAqICAgICAgICAzOlxuICAgKiAgICAgICAgLi4uXG4gICAqICAgICAgfVxuICAgKiAgICAgIC4uLlxuICAgKiAgICAgIDEyOiB7XG4gICAqXG4gICAqICAgICAgfVxuICAgKiAgICB9XG4gICAqIH1cbiAgICogQHBhcmFtIHtPYmplY3R9IG1hcHNcbiAgICogQHBhcmFtIHtTdHJpbmcgfCBEYXRlfSBtYXBTdGFydEF0XG4gICAqIEByZXR1cm5zIHtPYmplY3R9XG4gICAqL1xuICBzdGF0aWMgbWFwc1RvVHJlZShtYXBzLCBtYXBTdGFydEF0KSB7XG4gICAgaWYgKCEoaXNTdHJpbmcobWFwcy5hdmFpbGFiaWxpdHkpXG4gICAgICB8fCBpc1N0cmluZyhtYXBzLm5pZ2h0bHlfcmF0ZXMpXG4gICAgICB8fCBpc1N0cmluZyhtYXBzLm1pbmltdW1fc3RheXMpKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgYXZhaWwgID0gbWFwcy5hdmFpbGFiaWxpdHkuc3BsaXQoJycpLm1hcChwYXJzZUZsb2F0KTtcbiAgICBjb25zdCByYXRlcyAgPSBtYXBzLm5pZ2h0bHlfcmF0ZXMuc3BsaXQoJywnKS5tYXAocGFyc2VGbG9hdCk7XG4gICAgY29uc3QgbWluTWFwID0gbWFwcy5taW5pbXVtX3N0YXlzLnNwbGl0KCcsJykubWFwKHBhcnNlRmxvYXQpO1xuICAgIGxldCBkYXkgICAgICA9IDE7XG5cbiAgICBsZXQge1xuICAgICAgeWVhcixcbiAgICAgIG1vbnRoLFxuICAgICAgZGF0ZTogZGF5U2hpZnRcbiAgICB9ID0gcGFyc2VJU09TdHJpbmcobWFwU3RhcnRBdCk7XG5cbiAgICAvLyB0cmljayB0byBhZGQgZXh0cmEgdW5hdmFpbGFibGUgZGF0ZSBmb3IgcHJvcGVyIGNhbGN1bGF0aW9ucyBvZiBjaGVjay1vdXQgZGF0ZXNcbiAgICBpZiAoYXZhaWxbYXZhaWwubGVuZ3RoIC0gMV0gPT09IDApIHtcbiAgICAgIGF2YWlsLnB1c2goMSk7XG4gICAgfVxuXG4gICAgbGV0IHByZXZpb3VzRGF0ZSA9IHt9O1xuXG4gICAgcmV0dXJuIGF2YWlsLnJlZHVjZSgoY3Vyciwgc3RhdGUsIGluZGV4LCBhcnIpID0+IHtcbiAgICAgIGNvbnN0IGxlbmd0aCAgICAgICAgICAgPSBtb250aExlbmd0aCh5ZWFyLCBtb250aCk7XG4gICAgICBjb25zdCB0cmVlICAgICAgICAgICAgID0gY3VycjtcbiAgICAgIGNvbnN0IG1pblN0YXkgICAgICAgICAgPSBtaW5NYXBbaW5kZXhdO1xuICAgICAgY29uc3QgcmF0ZSAgICAgICAgICAgICA9IHJhdGVzW2luZGV4XTtcbiAgICAgIGNvbnN0IGlzQXZhaWxhYmxlICAgICAgPSBzdGF0ZSA9PT0gMDtcbiAgICAgIGNvbnN0IHByZXZBdmFpbGFibGUgICAgPSBhcnJbaW5kZXggLSAxXSA9PT0gMDtcbiAgICAgIGNvbnN0IGlzTW9ybmluZ0Jsb2NrZWQgPSAoaXNBdmFpbGFibGUgJiYgIXByZXZBdmFpbGFibGUpID8gdHJ1ZSA6IG51bGw7XG4gICAgICBjb25zdCBpc0F2YWlsYWJsZU91dCAgID0gKGlzTW9ybmluZ0Jsb2NrZWQpID8gdHJ1ZSA6IG51bGw7XG5cbiAgICAgIGlmICghdHJlZVt5ZWFyXSkge1xuICAgICAgICB0cmVlW3llYXJdID0ge307XG4gICAgICB9XG5cbiAgICAgIGlmICghdHJlZVt5ZWFyXVttb250aF0pIHtcbiAgICAgICAgdHJlZVt5ZWFyXVttb250aF0gPSB7fTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRheVNoaWZ0KSB7XG4gICAgICAgIGRheSAgICAgID0gZGF5U2hpZnQ7XG4gICAgICAgIGRheVNoaWZ0ID0gbnVsbDtcbiAgICAgIH1cblxuICAgICAgLy8gaWYgbWluU3RheSA+IGF2YWlsYWJsZSBkYXlzIGluIGZ1dHVyZVxuICAgICAgLy8gY29uc2lkZXIgY3VycmVudCBkYXkgYXMgdW5hdmFpbGFibGUgYXMgd2VsbFxuICAgICAgLy8gaWYgKGlzQXZhaWxhYmxlICYmIG1pblN0YXkgPiAxKSB7XG4gICAgICAvLyAgIGxldCBkYXlzQXZhaWxhYmxlID0gMTtcbiAgICAgIC8vICAgbGV0IGkgICAgICAgICAgICAgPSBpbmRleCArIDE7XG4gICAgICAvLyAgIHdoaWxlIChhcnJbaV0gPT09IDApIHtcbiAgICAgIC8vICAgICBkYXlzQXZhaWxhYmxlICs9IDE7XG4gICAgICAvLyAgICAgaSArPSAxO1xuICAgICAgLy8gICB9XG4gICAgICAvL1xuICAgICAgLy8gICBpZiAobWluU3RheSA+IGRheXNBdmFpbGFibGUpIHtcbiAgICAgIC8vICAgICBpc0F2YWlsYWJsZSA9IGZhbHNlO1xuICAgICAgLy8gICB9XG4gICAgICAvLyB9XG5cbiAgICAgIHRyZWVbeWVhcl1bbW9udGhdW2RheV0gPSB7XG4gICAgICAgIHJhdGUsXG4gICAgICAgIG1pblN0YXksXG4gICAgICAgIGlzQXZhaWxhYmxlLFxuICAgICAgICBpc01vcm5pbmdCbG9ja2VkLFxuICAgICAgICBpc0F2YWlsYWJsZU91dFxuICAgICAgfTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKHByZXZBdmFpbGFibGUgJiYgIWlzQXZhaWxhYmxlKSB7XG4gICAgICAgICAgdHJlZVtwcmV2aW91c0RhdGUueWVhcl1bcHJldmlvdXNEYXRlLm1vbnRoXVtwcmV2aW91c0RhdGUuZGF5XS5pc0F2YWlsYWJsZU91dCA9IHRydWU7XG4gICAgICAgICAgdHJlZVt5ZWFyXVttb250aF1bZGF5XS5pc01vcm5pbmdCbG9ja2VkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2goZSkge1xuICAgICAgICAvLyBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBwcmV2aW91c0RhdGUgPSB7XG4gICAgICAgIHllYXIsXG4gICAgICAgIG1vbnRoLFxuICAgICAgICBkYXlcbiAgICAgIH07XG5cbiAgICAgIGlmIChkYXkgPCBsZW5ndGgpIHtcbiAgICAgICAgZGF5ICs9IDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAobW9udGggPiAxMCkge1xuICAgICAgICAgIG1vbnRoID0gMDtcbiAgICAgICAgICB5ZWFyICs9IDE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbW9udGggKz0gMTtcbiAgICAgICAgfVxuICAgICAgICBkYXkgPSAxO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdHJlZTtcbiAgICB9LCB7fSk7XG4gIH1cblxuICBnZXREYXlQcm9wZXJ0eSh5ZWFyLCBtb250aCwgZGF5LCBwcm9wZXJ0eSkge1xuICAgIGxldCBwcm9wO1xuXG4gICAgaWYgKHRoaXMubWFwKSB7XG4gICAgICB0cnkge1xuICAgICAgICBwcm9wID0gdGhpcy5tYXBbeWVhcl1bbW9udGhdW2RheV1bcHJvcGVydHldO1xuICAgICAgfSBjYXRjaChlKSB7XG4gICAgICAgIC8vIGNvbnRpbnVlIHJlZ2FyZGxlc3Mgb2YgZXJyb3JcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcHJvcDtcbiAgfVxuXG4gIGlzRGF5RGlzYWJsZWQoeWVhciwgbW9udGgsIGRheSkge1xuICAgIHJldHVybiAhdGhpcy5nZXREYXlQcm9wZXJ0eSh5ZWFyLCBtb250aCwgZGF5LCAnaXNBdmFpbGFibGUnKTtcbiAgfVxufVxuIiwiLyogZ2xvYmFsIE5vZGUsIGRvY3VtZW50LCB3aW5kb3csIGNvbnNvbGUsIHJlcXVpcmUgKi9cbmltcG9ydCB7XG4gIGFkZENsYXNzLCByZW1vdmVDbGFzcywgaGFzQ2xhc3MsIGlzQXJyYXksIGlzT2JqZWN0LCBFbWl0dGVyLFxuICBtZXJnZSwgZWxlbWVudEZyb21TdHJpbmcsIHRyYXZlcnNlVG9QYXJlbnRXaXRoQXR0ciwgZGVzdHJveUVsZW1lbnQsIG1vbnRoTGVuZ3RoLCBpcywgaXNGdW5jdGlvbixcbiAgaXNOdW1lcmljLCB0cmF2ZXJzZU9iaiwgYWpheCwgaXNJbnNpZGUsIGN1cnJlbmN5Rm9ybWF0dGVyXG59IGZyb20gJ3dpZGdldC11dGlscyc7XG5cbmltcG9ydCAqIGFzIHRlbXBsYXRlcyBmcm9tICcuL3RlbXBsYXRlcyc7XG5pbXBvcnQgQ2FsZW5kYXJUcmVlIGZyb20gJy4vY2FsZW5kYXItdHJlZSc7XG5pbXBvcnQgY29uZmlnIGZyb20gJy4vY29uZmlnJztcbmltcG9ydCBsb2NhbGVzIGZyb20gJy4vbG9jYWxlcyc7XG5cbmltcG9ydCB7IHN0cmZ0aW1lIH0gZnJvbSAnc3RydGltZSc7XG5cbmltcG9ydCB7XG4gIGRhdGVUb0lzbywgaXNMYXRlciwgaXNDdXJyZW50LCB2YWxpZGF0aW9uT2ZDZWxsLCB0Rm9ybWF0dGVyLCBkYXRlVG9BcnJheSwgbW9udGhEaWZmXG59IGZyb20gJy4vdXRpbHMnO1xuXG5pbXBvcnQgc3R5bGVzIGZyb20gJy4vc3R5bGVzL2NhbGVuZGFyLnNjc3MnO1xuXG5pbXBvcnQgdXRpbHNTdHlsZXMgZnJvbSAnd2lkZ2V0LXV0aWxzL3NyYy9zdHlsZXMvcmVzZXQuc2Nzcyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENhbGVuZGFyIGV4dGVuZHMgRW1pdHRlciB7XG4gIGNvbnN0cnVjdG9yKG9wdHMsIG1hcHMpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMubmFtZSAgICA9IGNvbmZpZy5uYW1lO1xuICAgIHRoaXMuVkVSU0lPTiA9IHJlcXVpcmUoJy4uL3BhY2thZ2UuanNvbicpLnZlcnNpb247XG4gICAgdGhpcy5DU1NfUFJFRklYID0gY29uZmlnLmNzc1ByZWZpeDtcblxuICAgIGlmIChpc09iamVjdChvcHRzKSkge1xuICAgICAgaWYgKCFvcHRzLmVsKSB7XG4gICAgICAgIHRoaXMubG9nZ2VyKCdlbCBtdXN0IGJlIEhUTUwgZWxlbWVudCcsICdlcnJvcicpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNvbmZpZ0RhdGFzZXQgPSBtZXJnZShjb25maWcsIG9wdHMuZWwuZGF0YXNldCk7XG4gICAgICB0aGlzLm9wdHMgICAgICAgICAgID0gbWVyZ2UoY29uZmlnRGF0YXNldCwgb3B0cyk7XG5cbiAgICAgIHRoaXMub3B0cyA9IHRyYXZlcnNlT2JqKHRoaXMub3B0cywgKGEpID0+IGEsIChiKSA9PiB7XG4gICAgICAgIGlmIChiID09PSAndHJ1ZScgfHwgYiA9PT0gJ2ZhbHNlJykge1xuICAgICAgICAgIHJldHVybiAoYiA9PT0gJ3RydWUnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNOdW1lcmljKGIpKSB7XG4gICAgICAgICAgcmV0dXJuIHBhcnNlSW50KGIsIDEwKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYjtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAodGhpcy5vcHRzLmlzRHJvcERvd24pIHtcbiAgICAgICAgdGhpcy5pbml0Q2FsZW5kYXJEcm9wKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmVsID0gb3B0cy5lbDtcbiAgICAgIH1cblxuICAgICAgdGhpcy5vcHRzLmxhbmcgICAgICAgID0gKHRoaXMub3B0cy5sYW5nICYmIHRoaXMub3B0cy5sYW5nIGluIGxvY2FsZXMpID8gdGhpcy5vcHRzLmxhbmcgOiAnZW4tVVMnO1xuICAgICAgdGhpcy5sb2NhbGUgICAgICAgICAgID0gbG9jYWxlc1t0aGlzLm9wdHMubGFuZ107XG4gICAgICB0aGlzLmZvcm1hdCAgICAgICAgICAgPSB0aGlzLm9wdHMuZm9ybWF0RGF0ZSB8fCB0aGlzLmxvY2FsZS5mb3JtYXREYXRlIHx8ICclbS8lZC8lWSc7XG4gICAgICB0aGlzLm9wdHMuc3RhcnRPZldlZWsgPSB0aGlzLm9wdHMuc3RhcnRPZldlZWsgfHwgdGhpcy5sb2NhbGUuc3RhcnRPZldlZWs7XG5cbiAgICAgIGxldCB7IGN1cnJlbnREYXRlIH0gPSB0aGlzLm9wdHM7XG4gICAgICBjb25zdCB5ZWFyICA9IGN1cnJlbnREYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgICBjb25zdCBtb250aCA9IGN1cnJlbnREYXRlLmdldE1vbnRoKCk7XG4gICAgICBjb25zdCBkYXkgICA9IGN1cnJlbnREYXRlLmdldERhdGUoKTtcblxuICAgICAgdGhpcy5vcHRzLmN1cnJlbnREYXRlID0gW3llYXIsIG1vbnRoLCBkYXldO1xuXG4gICAgICBpZiAoIXRoaXMub3B0cy55ZWFyU3RhcnQpIHtcbiAgICAgICAgdGhpcy5vcHRzLnllYXJTdGFydCA9IHllYXI7XG4gICAgICB9XG5cbiAgICAgIGlmICghdGhpcy5vcHRzLm1vbnRoU3RhcnQpIHtcbiAgICAgICAgdGhpcy5vcHRzLm1vbnRoU3RhcnQgPSBtb250aDtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gVE9ETzogcmVuYW1lIGRheXNUcmVlXG4gICAgdGhpcy5kb20gICA9IHt9O1xuICAgIC8vIFRPRE86IHJlbmFtZSB0byBjYWxlbmRhclRyZWUgb3IgYm9va2luZ3NUcmVlXG4gICAgdGhpcy5jVHJlZSA9IG5ldyBDYWxlbmRhclRyZWUodmFsaWRhdGlvbk9mQ2VsbCwge30pO1xuICAgIC8vIFRPRE86IHJlbmFtZSB0byBib29raW5nc0RhdGEgJiBhZGREYXRhXG4gICAgaWYgKGlzT2JqZWN0KG1hcHMpKSB7XG4gICAgICB0aGlzLmNUcmVlLmFkZE1hcHMobWFwcywgbWFwcy5zdGFydF9kYXRlIHx8IGRhdGVUb0lzbyh0aGlzLm9wdHMuY3VycmVudERhdGUpKTtcbiAgICB9XG5cbiAgICAvLyBzZWxlY3Rpb24gYW5kIGhpZ2hsaWdodHNcbiAgICB0aGlzLmlzU2VsZWN0aW5nICAgICAgID0gZmFsc2U7XG4gICAgdGhpcy5oaWdobGlnaHRlZEJvdW5kcyA9IFtdO1xuICAgIHRoaXMuaGFzVmFsaWRSYW5nZSAgICAgPSB0cnVlO1xuXG4gICAgLy8gVE9ETzogcmVuYW1lIGlzUmV2ZXJzZVNlbGVjdGFibGUgdG8gc2VsZWN0aW9uRGVmYXVsdERpcmVjdGlvbiAtIHNob3VsZCBiZSBMVFIgb3IgUlRMXG4gICAgLy8gdXNlciBzZWxlY3RzIGVuZCBkYXRlIGZpcnN0XG4gICAgdGhpcy5pc1JldmVyc2VTZWxlY3RhYmxlID0gdGhpcy5vcHRzLmlzUmV2ZXJzZVNlbGVjdGFibGU7XG4gICAgdGhpcy5pbml0KCk7XG4gIH1cblxuICBpbml0KCkge1xuICAgIGFkZENsYXNzKHRoaXMuZWwsIHN0eWxlcy5jYWxlbmRhciwgdXRpbHNTdHlsZXMucmVzZXQpO1xuXG4gICAgaWYgKCF0aGlzLmVsLmRhdGFzZXQudGhlbWUpIHtcbiAgICAgIHRoaXMuZWwuZGF0YXNldC50aGVtZSA9IHRoaXMub3B0cy50aGVtZTtcbiAgICB9XG5cbiAgICB0aGlzLmRvbS5tb250aHNXcmFwcGVyID0gdGhpcy5lbC5hcHBlbmRDaGlsZChlbGVtZW50RnJvbVN0cmluZyh0ZW1wbGF0ZXMubWFpbikpO1xuICAgIHRoaXMuZG9tLmZvcndhcmQgICAgICAgPSB0aGlzLmVsLmFwcGVuZENoaWxkKGVsZW1lbnRGcm9tU3RyaW5nKHRlbXBsYXRlcy5mb3J3YXJkKSk7XG4gICAgdGhpcy5kb20uYmFjayAgICAgICAgICA9IHRoaXMuZWwuYXBwZW5kQ2hpbGQoZWxlbWVudEZyb21TdHJpbmcodGVtcGxhdGVzLmJhY2spKTtcbiAgICB0aGlzLnJlbmRlck1vbnRocyh0aGlzLm9wdHMueWVhclN0YXJ0LCB0aGlzLm9wdHMubW9udGhTdGFydCk7XG5cbiAgICB0aGlzLmFkZEJ0bnNFdmVudHMoKTtcblxuICAgIGlmICh0aGlzLm9wdHMuc2VsZWN0YWJsZSAmJiB0aGlzLm9wdHMuZWxTdGFydEF0ICYmIHRoaXMub3B0cy5lbEVuZEF0KSB7XG4gICAgICBpZiAoIXRoaXMub3B0cy5yZW50YWxJZCkge1xuICAgICAgICB0aGlzLmlucHV0c1RvVmFsdWVzKCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMub24oJ21hcHMtbG9hZGVkJywgKCkgPT4gdGhpcy5pbnB1dHNUb1ZhbHVlcygpKTtcbiAgICAgIHRoaXMub3B0cy5lbFN0YXJ0QXQuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCAoKSA9PiB0aGlzLmlucHV0c1RvVmFsdWVzKCkpO1xuICAgICAgdGhpcy5vcHRzLmVsRW5kQXQuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCAoKSA9PiB0aGlzLmlucHV0c1RvVmFsdWVzKCkpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdHMucmVudGFsSWQgJiYgIXRoaXMub3B0cy5pc0Ryb3BEb3duKSB7XG4gICAgICB0aGlzLmxvYWRNYXBzKHRoaXMub3B0cy5yZW50YWxJZCk7XG4gICAgfVxuXG4gICAgdGhpcy5lbC5kYXRhc2V0LnNlbGVjdGFibGUgPSB0aGlzLm9wdHMuc2VsZWN0YWJsZTtcblxuICAgIHRoaXMubG9nZ2VyKCdpbml0ZWQnKTtcbiAgICB0aGlzLmVtaXQoJ2luaXQnKTtcbiAgfVxuXG4gIGNoYW5nZVNlbGVjdGlvbk9yZGVyKGlzUmV2ZXJzZSkge1xuICAgIGlmICgoaXNSZXZlcnNlICE9PSB0aGlzLmlzUmV2ZXJzZVNlbGVjdGFibGUpICYmICF0aGlzLmlzU2VsZWN0aW5nKSB7XG4gICAgICB0aGlzLmlzUmV2ZXJzZVNlbGVjdGFibGUgPSBpc1JldmVyc2U7XG4gICAgICB0aGlzLmRlc3Ryb3lNb250aHMoKTtcbiAgICAgIHRoaXMucmVuZGVyTW9udGhzKHRoaXMueWVhclN0YXJ0LCB0aGlzLm1vbnRoU3RhcnQpO1xuICAgIH1cbiAgfVxuXG4gIHJlbmRlck1vbnRocyh5ZWFyU3RhcnQsIG1vbnRoU3RhcnQpIHtcbiAgICAvLyBjb25zdHJ1Y3QgZG9tIHRyZWVcbiAgICBjb25zdCB7XG4gICAgICB0cmVlLCB5ZWFyRW5kLCBtb250aEVuZCwgbW9udGhzXG4gICAgfSA9IHRoaXMuY3JlYXRlVHJlZSh5ZWFyU3RhcnQsIG1vbnRoU3RhcnQsIHRoaXMub3B0cy5kaXNwbGF5TW9udGhzKTtcblxuICAgIHRoaXMuY1RyZWUuYWRkVHJlZSh0cmVlKTtcblxuICAgIHRoaXMubW9udGhTdGFydCA9IG1vbnRoU3RhcnQ7XG4gICAgdGhpcy55ZWFyU3RhcnQgID0geWVhclN0YXJ0O1xuXG4gICAgdGhpcy5tb250aEVuZCA9IG1vbnRoRW5kO1xuICAgIHRoaXMueWVhckVuZCAgPSB5ZWFyRW5kO1xuXG4gICAgaWYgKHRoaXMub3B0cy5zZWxlY3RhYmxlKSB7XG4gICAgICBhZGRDbGFzcyh0aGlzLmVsLCB0aGlzLmlzUmV2ZXJzZVNlbGVjdGFibGUgPyBzdHlsZXMucmV2ZXJzZWQgOiBzdHlsZXMuZGlyZWN0KTtcbiAgICAgIHJlbW92ZUNsYXNzKHRoaXMuZWwsIHRoaXMuaXNSZXZlcnNlU2VsZWN0YWJsZSA/IHN0eWxlcy5kaXJlY3QgOiBzdHlsZXMucmV2ZXJzZWQpO1xuICAgIH1cblxuICAgIHRoaXMuZG9tLm1vbnRocyA9IG1vbnRocztcbiAgICB0aGlzLmRvbS5tb250aHMuZm9yRWFjaCgobSkgPT4ge1xuICAgICAgdGhpcy5kb20ubW9udGhzV3JhcHBlci5hcHBlbmRDaGlsZChtKTtcbiAgICAgIGlmICh0aGlzLm9wdHMuc2VsZWN0YWJsZSkge1xuICAgICAgICB0aGlzLmFkZE1vbnRoRXZlbnRzKG0pO1xuICAgICAgICBhZGRDbGFzcyh0aGlzLmVsLCBzdHlsZXMuYWN0aW9uc0VuYWJsZWQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKCF0aGlzLm9wdHMuZW5hYmxlQWxsRGF5cykge1xuICAgICAgdGhpcy5kaXNhYmxlQmFja0J0bigpO1xuICAgIH1cblxuICAgIHRoaXMucmVjb3ZlclNlbGVjdGlvbnMoKTtcbiAgfVxuXG4gIHJlY292ZXJTZWxlY3Rpb25zKCkge1xuICAgIGlmICh0aGlzLnNlbGVjdGlvblN0YXJ0KSB7XG4gICAgICB0aGlzLnNlbGVjdFN0YXJ0KHRoaXMuc2VsZWN0aW9uU3RhcnQsIHRoaXMuY1RyZWUuc2VsZWN0RGF5KC4uLnRoaXMuc2VsZWN0aW9uU3RhcnQpKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zZWxlY3Rpb25FbmQpIHtcbiAgICAgIHRoaXMuc2VsZWN0RW5kKHRoaXMuc2VsZWN0aW9uRW5kLCB0aGlzLmNUcmVlLnNlbGVjdERheSguLi50aGlzLnNlbGVjdGlvbkVuZCkpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnNlbGVjdGlvblN0YXJ0ICYmIHRoaXMuc2VsZWN0aW9uRW5kKSB7XG4gICAgICBpZiAodGhpcy5oaWdobGlnaHRlZEJvdW5kcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuaGlnaExpZ2h0UmFuZ2UoLi4udGhpcy5oaWdobGlnaHRlZEJvdW5kcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmhpZ2hMaWdodFJhbmdlKHRoaXMuc2VsZWN0aW9uU3RhcnQsIHRoaXMuc2VsZWN0aW9uRW5kKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBkaXNhYmxlQmFja0J0bigpIHtcbiAgICBpZiAodGhpcy5vcHRzLmlzQmFja0Rpc2FibGVkKSB7XG4gICAgICBjb25zdCBzdGFydERhdGUgICAgICAgID0gZGF0ZVRvSXNvKHRoaXMueWVhclN0YXJ0LCB0aGlzLm1vbnRoU3RhcnQsIDEpO1xuICAgICAgbGV0IHsgY3VycmVudERhdGUgfSAgICA9IHRoaXMub3B0cztcbiAgICAgIGN1cnJlbnREYXRlICAgICAgICAgICAgPSBkYXRlVG9Jc28oY3VycmVudERhdGVbMF0sIGN1cnJlbnREYXRlWzFdLCAxKTtcbiAgICAgIHRoaXMuZG9tLmJhY2suZGlzYWJsZWQgPSBzdGFydERhdGUgPD0gY3VycmVudERhdGU7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlTG9hZGluZygpIHtcbiAgICBpZiAoIWhhc0NsYXNzKHRoaXMuZWwsIHN0eWxlcy5sb2FkaW5nKSkge1xuICAgICAgYWRkQ2xhc3ModGhpcy5lbCwgc3R5bGVzLmxvYWRpbmcpO1xuICAgICAgdGhpcy5lbWl0KCdsb2FkaW5nLXNob3cnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVtb3ZlQ2xhc3ModGhpcy5lbCwgc3R5bGVzLmxvYWRpbmcpO1xuICAgICAgdGhpcy5lbWl0KCdsb2FkaW5nLWhpZGUnKTtcbiAgICB9XG4gIH1cblxuICBhZGRNYXBzKG1hcHMpIHtcbiAgICB0aGlzLmNUcmVlLnJlcGxhY2VNYXBzKG1hcHMsIG1hcHMuc3RhcnRfZGF0ZSk7XG4gICAgdGhpcy5kZXN0cm95TW9udGhzKCk7XG4gICAgdGhpcy5yZW5kZXJNb250aHMoXG4gICAgICB0aGlzLm9wdHMueWVhclN0YXJ0IHx8IHRoaXMueWVhclN0YXJ0LFxuICAgICAgdGhpcy5vcHRzLm1vbnRoU3RhcnQgfHwgdGhpcy5tb250aFN0YXJ0XG4gICAgKTtcbiAgfVxuXG4gIGFkZEJ0bnNFdmVudHMoKSB7XG4gICAgdGhpcy5kb20uZm9yd2FyZC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChlKSA9PiB7XG4gICAgICB0aGlzLmRlc3Ryb3lNb250aHMoKTtcbiAgICAgIHRoaXMucmVuZGVyTW9udGhzKHRoaXMueWVhckVuZCwgdGhpcy5tb250aEVuZCk7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmRvbS5iYWNrLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGUpID0+IHtcbiAgICAgIHRoaXMuZGVzdHJveU1vbnRocygpO1xuICAgICAgbGV0IG1vbnRoVG9SZW5kZXIgPSB0aGlzLm1vbnRoU3RhcnQgLSB0aGlzLm9wdHMuZGlzcGxheU1vbnRocztcbiAgICAgIGxldCB5ZWFyVG9SZW5kZXIgID0gdGhpcy55ZWFyU3RhcnQ7XG5cbiAgICAgIGlmIChtb250aFRvUmVuZGVyIDwgMCkge1xuICAgICAgICBtb250aFRvUmVuZGVyICs9IDEyO1xuICAgICAgICB5ZWFyVG9SZW5kZXIgLT0gMTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5yZW5kZXJNb250aHMoeWVhclRvUmVuZGVyLCBtb250aFRvUmVuZGVyKTtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFkZE1vbnRoRXZlbnRzKGVsKSB7XG4gICAgZWwuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZSkgPT4ge1xuICAgICAgY29uc3QgaXNFbmRGaXJzdCA9IHRoaXMuaXNSZXZlcnNlU2VsZWN0YWJsZTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIHBhcmVudDogY2VsbFxuICAgICAgfSA9IHRyYXZlcnNlVG9QYXJlbnRXaXRoQXR0cihlLnRhcmdldCwgJ2RhdGEtdmFsdWUnKTtcblxuICAgICAgY29uc3QgcmVzZXRTZWxlY3Rpb25PbkVzY2FwZSA9IChldmVudCkgPT4ge1xuICAgICAgICBjb25zdCBrZXkgPSBldmVudC5rZXkgfHwgZXZlbnQua2V5Q29kZTtcblxuICAgICAgICBpZiAoa2V5ID09PSAnRXNjYXBlJyB8fCBrZXkgPT09ICdFc2MnIHx8IGtleSA9PT0gMjcpIHtcbiAgICAgICAgICBpZiAodGhpcy5pc1NlbGVjdGluZykge1xuICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5dXAnLCByZXNldFNlbGVjdGlvbk9uRXNjYXBlLCB0cnVlKTtcbiAgICAgICAgICAgIHRoaXMucmVzZXRTZWxlY3Rpb24oKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywgcmVzZXRTZWxlY3Rpb25PbkVzY2FwZSwgdHJ1ZSk7XG5cbiAgICAgIGlmIChpcyh2YWx1ZSkgJiYgY2VsbCkge1xuICAgICAgICBjb25zdCBkYXRlVmFsdWUgICAgICAgICAgPSBbZWwueWVhciwgZWwubW9udGgsIHBhcnNlSW50KGNlbGwuZ2V0QXR0cmlidXRlKCdkYXRhLXZhbHVlJyksIDEwKV07XG4gICAgICAgIGNvbnN0IGRheUFscmVhZHlTZWxlY3RlZCA9IHRoaXMuaXNTZWxlY3RpbmcgJiYgaXNDdXJyZW50KChpc0VuZEZpcnN0KSA/IHRoaXMuc2VsZWN0aW9uRW5kIDogdGhpcy5zZWxlY3Rpb25TdGFydCwgZGF0ZVZhbHVlKTtcbiAgICAgICAgY29uc3QgcmFuZ2VTZWxlY3RlZCAgICAgID0gIXRoaXMuaXNTZWxlY3RpbmcgJiYgdGhpcy5zZWxlY3Rpb25FbmQgJiYgdGhpcy5zZWxlY3Rpb25TdGFydDtcbiAgICAgICAgY29uc3QgaXNQYXN0VG9kYXkgICAgICAgID0gaXNMYXRlcihkYXRlVmFsdWUsIHRoaXMub3B0cy5jdXJyZW50RGF0ZSk7XG5cbiAgICAgICAgaWYgKGRheUFscmVhZHlTZWxlY3RlZCB8fCByYW5nZVNlbGVjdGVkIHx8IGlzUGFzdFRvZGF5KSB7XG4gICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5dXAnLCByZXNldFNlbGVjdGlvbk9uRXNjYXBlLCB0cnVlKTtcbiAgICAgICAgICB0aGlzLnJlc2V0U2VsZWN0aW9uKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWRheUFscmVhZHlTZWxlY3RlZCAmJiAhaXNQYXN0VG9kYXkgJiYgIXRoaXMub3B0cy5lbmFibGVBbGxEYXlzKSB7XG4gICAgICAgICAgaWYgKGlzRW5kRmlyc3QpIHtcbiAgICAgICAgICAgIHRoaXMuZW5kRGF0ZUZpcnN0QWN0aW9uKGRhdGVWYWx1ZSwgY2VsbCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc3RhcnREYXRlRmlyc3RBY3Rpb24oZGF0ZVZhbHVlLCBjZWxsKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVtb3ZlQ2xhc3ModGhpcy5lbCwgc3R5bGVzLnNlbGVjdGluZ0RpcmVjdCwgc3R5bGVzLnNlbGVjdGluZ1JldmVyc2VkKTtcbiAgICAgICAgICBkZWxldGUgY2VsbC5kYXRhc2V0LmhpZ2hsaWdodGVkO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uRW5kICYmIHRoaXMuc2VsZWN0aW9uU3RhcnQgJiYgdGhpcy5oYXNWYWxpZFJhbmdlKSB7XG4gICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5dXAnLCByZXNldFNlbGVjdGlvbk9uRXNjYXBlLCB0cnVlKTtcbiAgICAgICAgICB0aGlzLmNvbXBsZXRlU2VsZWN0aW9uKGlzRW5kRmlyc3QsIGRhdGVWYWx1ZSwgY2VsbCk7XG4gICAgICAgICAgaWYgKHRoaXMub3B0cy5pc0Ryb3BEb3duICYmIHRoaXMuY2FsRHJvcCkge1xuICAgICAgICAgICAgdGhpcy5jbG9zZURyb3AobnVsbCwgdHJ1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBlbC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW92ZXInLCAoZSkgPT4ge1xuICAgICAgY29uc3QgeyB2YWx1ZSwgcGFyZW50OiBjZWxsIH0gPSB0cmF2ZXJzZVRvUGFyZW50V2l0aEF0dHIoZS50YXJnZXQsICdkYXRhLXZhbHVlJyk7XG5cbiAgICAgIGlmIChpcyh2YWx1ZSkgJiYgY2VsbCkge1xuICAgICAgICBjb25zdCBjdXJyZW50ICAgICAgICAgID0gW2VsLnllYXIsIGVsLm1vbnRoLCBwYXJzZUludChjZWxsLmdldEF0dHJpYnV0ZSgnZGF0YS12YWx1ZScpLCAxMCldO1xuICAgICAgICBjb25zdCBpc1Bhc3RUb2RheSAgICAgID0gaXNMYXRlcihjdXJyZW50LCB0aGlzLm9wdHMuY3VycmVudERhdGUpO1xuICAgICAgICBjb25zdCBpc0VuZEZpcnN0ICAgICAgID0gdGhpcy5pc1JldmVyc2VTZWxlY3RhYmxlO1xuXG4gICAgICAgIGlmIChpc1Bhc3RUb2RheSAmJiAhdGhpcy5vcHRzLmVuYWJsZUFsbERheXMpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pc1NlbGVjdGluZykge1xuICAgICAgICAgIHRoaXMucmVtb3ZlSGlnaGxpZ2h0KCk7XG5cbiAgICAgICAgICBjb25zdCBjZWxscyA9IHRoaXMuZWwucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtdmFsdWVdJyk7XG4gICAgICAgICAgY2VsbHMuZm9yRWFjaCgoZWwpID0+IHtcbiAgICAgICAgICAgIGRlbGV0ZSBlbC5kYXRhc2V0LmhvdmVyZWQ7XG4gICAgICAgICAgICBkZWxldGUgZWwuZGF0YXNldC5ob3ZlcmVkT2Zmc2V0O1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgLy8gcmV2ZXJzZSBzZWxlY3Rpb24gZGlyZWN0aW9uXG4gICAgICAgICAgaWYgKGlzRW5kRmlyc3QgJiYgdGhpcy5zZWxlY3Rpb25FbmQgJiYgIWlzQ3VycmVudChjdXJyZW50LCB0aGlzLnNlbGVjdGlvbkVuZCkpIHtcbiAgICAgICAgICAgIGlmIChpc0xhdGVyKHRoaXMuc2VsZWN0aW9uRW5kLCBjdXJyZW50KSkge1xuICAgICAgICAgICAgICBjb25zdCBjZWxsQSA9IHRoaXMuY2VsbEI7XG4gICAgICAgICAgICAgIGNvbnN0IHsgc2VsZWN0aW9uRW5kIH0gPSB0aGlzO1xuXG4gICAgICAgICAgICAgIHRoaXMuY2hhbmdlSGlnaGxpZ2h0RGlyZWN0aW9uKGZhbHNlLCBzZWxlY3Rpb25FbmQpO1xuICAgICAgICAgICAgICB0aGlzLnN0YXJ0RGF0ZUZpcnN0QWN0aW9uKHRoaXMuc2VsZWN0aW9uRW5kLCBjZWxsQSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmICghaXNFbmRGaXJzdCAmJiB0aGlzLnNlbGVjdGlvblN0YXJ0ICYmICFpc0N1cnJlbnQoY3VycmVudCwgdGhpcy5zZWxlY3Rpb25TdGFydCkpIHtcbiAgICAgICAgICAgIGlmIChpc0xhdGVyKGN1cnJlbnQsIHRoaXMuc2VsZWN0aW9uU3RhcnQpKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGNlbGxCID0gdGhpcy5jZWxsQTtcbiAgICAgICAgICAgICAgY29uc3QgeyBzZWxlY3Rpb25TdGFydCB9ID0gdGhpcztcblxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZUhpZ2hsaWdodERpcmVjdGlvbih0cnVlLCBzZWxlY3Rpb25TdGFydCk7XG4gICAgICAgICAgICAgIHRoaXMuZW5kRGF0ZUZpcnN0QWN0aW9uKHRoaXMuc2VsZWN0aW9uU3RhcnQsIGNlbGxCKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodGhpcy5pc1JldmVyc2VTZWxlY3RhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLmhpZ2hMaWdodFJhbmdlKGN1cnJlbnQsIHRoaXMuc2VsZWN0aW9uRW5kKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5oaWdoTGlnaHRSYW5nZSh0aGlzLnNlbGVjdGlvblN0YXJ0LCBjdXJyZW50KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5jaGFuZ2VIaWdobGlnaHREaXJlY3Rpb24odGhpcy5vcHRzLmlzUmV2ZXJzZVNlbGVjdGFibGUpO1xuXG4gICAgICAgICAgY29uc3QgaXNEaXNhYmxlZExlZnQgICA9IGNlbGwuZGF0YXNldC5kaXNhYmxlZCA9PT0gJ2xlZnQnO1xuICAgICAgICAgIGNvbnN0IGlzRGlzYWJsZWRDZW50ZXIgPSBjZWxsLmRhdGFzZXQuZGlzYWJsZWQgPT09ICdjZW50ZXInO1xuICAgICAgICAgIGNvbnN0IGlzRGlzYWJsZWRSaWdodCAgPSBjZWxsLmRhdGFzZXQuZGlzYWJsZWQgPT09ICdyaWdodCc7XG5cbiAgICAgICAgICBsZXQgaXNJbnZhbGlkID0gJyc7XG5cbiAgICAgICAgICBpZiAoaXNFbmRGaXJzdCAmJiBpc0Rpc2FibGVkUmlnaHQgfHwgaXNEaXNhYmxlZENlbnRlciB8fCAhaXNFbmRGaXJzdCAmJiBpc0Rpc2FibGVkTGVmdCkge1xuICAgICAgICAgICAgaXNJbnZhbGlkID0gJ2ludmFsaWQnO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGNlbGxzID0gdGhpcy5lbC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS12YWx1ZV0nKTtcbiAgICAgICAgICBsZXQgb2Zmc2V0Q2VsbDtcblxuICAgICAgICAgIGNlbGxzLmZvckVhY2goKGVsLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgZGVsZXRlIGVsLmRhdGFzZXQuaG92ZXJlZDtcbiAgICAgICAgICAgIGRlbGV0ZSBlbC5kYXRhc2V0LmhvdmVyZWRPZmZzZXQ7XG5cbiAgICAgICAgICAgIGlmIChlbCA9PT0gY2VsbCkge1xuICAgICAgICAgICAgICBvZmZzZXRDZWxsID0gKHRoaXMub3B0cy5pc1JldmVyc2VTZWxlY3RhYmxlKSA/IGNlbGxzW2luZGV4IC0gMV0gOiBjZWxsc1tpbmRleCArIDFdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgaWYgKGlzKG9mZnNldENlbGwpKSB7XG4gICAgICAgICAgICBvZmZzZXRDZWxsLmRhdGFzZXQuaG92ZXJlZE9mZnNldCA9ICcnO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNlbGwuZGF0YXNldC5ob3ZlcmVkID0gaXNJbnZhbGlkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBlbC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlb3V0JywgKGUpID0+IHtcbiAgICAgIGNvbnN0IGNlbGxzID0gdGhpcy5lbC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS12YWx1ZV0nKTtcbiAgICAgIGNlbGxzLmZvckVhY2goKGVsKSA9PiB7XG4gICAgICAgIGRlbGV0ZSBlbC5kYXRhc2V0LmhvdmVyZWQ7XG4gICAgICAgIGRlbGV0ZSBlbC5kYXRhc2V0LmhvdmVyZWRPZmZzZXQ7XG4gICAgICB9KTtcblxuICAgICAgLyogZXNsaW50IG5vLWJpdHdpc2U6IFtcImVycm9yXCIsIHsgXCJhbGxvd1wiOiBbXCImXCJdIH1dICovXG4gICAgICAvLyBzaW11bGF0ZSAnbW91c2VsZWF2ZSdcbiAgICAgIGlmICghZS5yZWxhdGVkVGFyZ2V0XG4gICAgICAgIHx8IChlLnJlbGF0ZWRUYXJnZXQgIT09IGVsLmJvZHkgJiYgIShlbC5ib2R5LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGUucmVsYXRlZFRhcmdldClcbiAgICAgICAgJiBOb2RlLkRPQ1VNRU5UX1BPU0lUSU9OX0NPTlRBSU5FRF9CWSkpKSB7XG4gICAgICAgIGlmICh0aGlzLmlzU2VsZWN0aW5nKSB7XG4gICAgICAgICAgdGhpcy5yZW1vdmVIaWdobGlnaHQoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgY2hhbmdlSGlnaGxpZ2h0RGlyZWN0aW9uKGlzUmV2ZXJzZSwgZGF0ZUFycmF5ID0gbnVsbCkge1xuICAgIHRoaXMuaXNSZXZlcnNlU2VsZWN0YWJsZSA9IGlzUmV2ZXJzZTtcblxuICAgIGlmIChkYXRlQXJyYXkpIHtcbiAgICAgIHRoaXMucmVzZXRTZWxlY3Rpb24oKTtcbiAgICAgIHRoaXMuc2VsZWN0aW9uU3RhcnQgPSAoaXNSZXZlcnNlKSA/IGRhdGVBcnJheSA6IG51bGw7XG4gICAgICB0aGlzLnNlbGVjdGlvbkVuZCAgID0gKGlzUmV2ZXJzZSkgPyBudWxsIDogZGF0ZUFycmF5O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGlvblN0YXJ0ID0gdGhpcy5zZWxlY3Rpb25FbmQ7XG4gICAgICB0aGlzLnNlbGVjdGlvbkVuZCA9IHRoaXMuc2VsZWN0aW9uU3RhcnQ7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3B0cy5zZWxlY3RhYmxlKSB7XG4gICAgICBhZGRDbGFzcyh0aGlzLmVsLCBpc1JldmVyc2UgPyBzdHlsZXMucmV2ZXJzZWQgOiBzdHlsZXMuZGlyZWN0KTtcbiAgICAgIHJlbW92ZUNsYXNzKHRoaXMuZWwsIGlzUmV2ZXJzZSA/IHN0eWxlcy5kaXJlY3QgOiBzdHlsZXMucmV2ZXJzZWQpO1xuICAgIH1cbiAgfVxuXG4gIHN0YXJ0RGF0ZUZpcnN0QWN0aW9uKGRhdGVWYWx1ZSwgY2VsbCkge1xuICAgIGlmICh0aGlzLmlzU2VsZWN0aW5nICYmIGlzTGF0ZXIodGhpcy5zZWxlY3Rpb25TdGFydCwgZGF0ZVZhbHVlKSkge1xuICAgICAgdGhpcy5zZWxlY3RFbmRBY3Rpb24oZGF0ZVZhbHVlLCBjZWxsKTtcblxuICAgICAgY29uc3QgZm4gPSAoKSA9PiB7XG4gICAgICAgIHJlbW92ZUNsYXNzKHRoaXMuZWwsIHN0eWxlcy5zZWxlY3RpbmdEaXJlY3QpO1xuICAgICAgICBjZWxsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlb3V0JywgZm4pO1xuICAgICAgfTtcblxuICAgICAgY2VsbC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW91dCcsIGZuKTtcbiAgICAgIHRoaXMuaXNTZWxlY3RpbmcgPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZW1vdmVIaWdobGlnaHQoKTtcbiAgICAgIGFkZENsYXNzKHRoaXMuZWwsIHN0eWxlcy5zZWxlY3RpbmdEaXJlY3QpO1xuICAgICAgdGhpcy5pc1NlbGVjdGluZyA9IHRydWU7XG4gICAgICB0aGlzLnNlbGVjdFN0YXJ0QWN0aW9uKGRhdGVWYWx1ZSwgY2VsbCk7XG4gICAgICBjZWxsLmRhdGFzZXQuaGlnaGxpZ2h0ZWQgPSAnbGVmdCc7XG4gICAgfVxuICB9XG5cbiAgZW5kRGF0ZUZpcnN0QWN0aW9uKGRhdGVWYWx1ZSwgY2VsbCkge1xuICAgIGlmICh0aGlzLmlzU2VsZWN0aW5nICYmIGlzTGF0ZXIoZGF0ZVZhbHVlLCB0aGlzLnNlbGVjdGlvbkVuZCkpIHtcbiAgICAgIHRoaXMuc2VsZWN0U3RhcnRBY3Rpb24oZGF0ZVZhbHVlLCBjZWxsKTtcblxuICAgICAgY29uc3QgZm4gPSAoKSA9PiB7XG4gICAgICAgIHJlbW92ZUNsYXNzKHRoaXMuZWwsIHN0eWxlcy5zZWxlY3RpbmdSZXZlcnNlZCk7XG4gICAgICAgIGNlbGwucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2VvdXQnLCBmbik7XG4gICAgICB9O1xuXG4gICAgICBjZWxsLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlb3V0JywgZm4pO1xuICAgICAgdGhpcy5pc1NlbGVjdGluZyA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlbW92ZUhpZ2hsaWdodCgpO1xuICAgICAgYWRkQ2xhc3ModGhpcy5lbCwgc3R5bGVzLnNlbGVjdGluZ1JldmVyc2VkKTtcbiAgICAgIHRoaXMuaXNTZWxlY3RpbmcgPSB0cnVlO1xuICAgICAgdGhpcy5zZWxlY3RFbmRBY3Rpb24oZGF0ZVZhbHVlLCBjZWxsKTtcbiAgICAgIGNlbGwuZGF0YXNldC5oaWdobGlnaHRlZCA9ICdyaWdodCc7XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0U3RhcnRBY3Rpb24oZGF0ZVZhbHVlLCBjZWxsKSB7XG4gICAgdGhpcy5zZWxlY3RTdGFydChkYXRlVmFsdWUsIGNlbGwpO1xuICAgIHRoaXMuc3dpdGNoSW5wdXRGb2N1cygnZW5kJyk7XG4gICAgaWYgKHRoaXMuaGFzVmFsaWRSYW5nZSkge1xuICAgICAgdGhpcy5lbWl0KCdzZWxlY3Rpb24tc3RhcnQnLCBkYXRlVG9Jc28oLi4uZGF0ZVZhbHVlLCB0cnVlKSwgZGF0ZVRvSXNvKC4uLmRhdGVWYWx1ZSkpO1xuICAgICAgaWYgKGlzRnVuY3Rpb24odGhpcy5vcHRzLm9uU2VsZWN0U3RhcnQpKSB7XG4gICAgICAgIHRoaXMub3B0cy5vblNlbGVjdFN0YXJ0KGRhdGVUb0lzbyguLi5kYXRlVmFsdWUsIHRydWUpLCBkYXRlVG9Jc28oLi4uZGF0ZVZhbHVlKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0RW5kQWN0aW9uKGRhdGVWYWx1ZSwgY2VsbCkge1xuICAgIHRoaXMuc2VsZWN0RW5kKGRhdGVWYWx1ZSwgY2VsbCk7XG4gICAgdGhpcy5zd2l0Y2hJbnB1dEZvY3VzKCdzdGFydCcpO1xuICAgIGlmICh0aGlzLmhhc1ZhbGlkUmFuZ2UpIHtcbiAgICAgIHRoaXMuZW1pdCgnc2VsZWN0aW9uLWVuZCcsIGRhdGVUb0lzbyguLi5kYXRlVmFsdWUsIHRydWUpLCBkYXRlVG9Jc28oLi4uZGF0ZVZhbHVlKSk7XG4gICAgICBpZiAoaXNGdW5jdGlvbih0aGlzLm9wdHMub25TZWxlY3RFbmQpKSB7XG4gICAgICAgIHRoaXMub3B0cy5vblNlbGVjdEVuZChkYXRlVG9Jc28oLi4uZGF0ZVZhbHVlLCB0cnVlKSwgZGF0ZVRvSXNvKC4uLmRhdGVWYWx1ZSkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJlbW92ZUhpZ2hsaWdodCgpIHtcbiAgICBpZiAodGhpcy5oaWdobGlnaHRlZEJvdW5kcy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB7IHJhbmdlIH0gPSB0aGlzLnNlbGVjdFJhbmdlKC4uLnRoaXMuaGlnaGxpZ2h0ZWRCb3VuZHMpO1xuICAgICAgcmFuZ2UubWFwKChjZWxsKSA9PiB7XG4gICAgICAgIGRlbGV0ZSBjZWxsLmRhdGFzZXQuaGlnaGxpZ2h0ZWQ7XG4gICAgICAgIGRlbGV0ZSBjZWxsLmRhdGFzZXQuaW52YWxpZDtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLmRlc3Ryb3lUb29sdGlwKCk7XG5cbiAgICAgIHRoaXMuaGFzVmFsaWRSYW5nZSAgICAgPSB0cnVlO1xuICAgICAgdGhpcy5oaWdobGlnaHRlZEJvdW5kcyA9IFtdO1xuICAgIH1cbiAgfVxuXG4gIGRlc3Ryb3lUb29sdGlwKCkge1xuICAgIGlmIChpcyh0aGlzLnRvb2x0aXBQb3BwZXIpKSB7XG4gICAgICB0aGlzLnRvb2x0aXBQb3BwZXIuZGVzdHJveSgpO1xuICAgIH1cblxuICAgIGlmIChpcyh0aGlzLmRvbS50b29sdGlwKSkge1xuICAgICAgZGVzdHJveUVsZW1lbnQodGhpcy5kb20udG9vbHRpcCk7XG4gICAgfVxuICB9XG5cbiAgaGlnaExpZ2h0UmFuZ2Uoc3RhcnQsIGVuZCkge1xuICAgIGNvbnN0IHsgcmFuZ2UsIGlzVmFsaWQgfSA9IHRoaXMuc2VsZWN0UmFuZ2Uoc3RhcnQsIGVuZCk7XG4gICAgY29uc3QgeyBvcHRzIH0gICAgICAgICAgID0gdGhpcztcbiAgICBsZXQgeyBtaW5TdGF5LCBtYXhTdGF5IH0gPSBvcHRzO1xuICAgIGxldCBpbnZhbGlkUmFuZ2VNZXNzYWdlO1xuXG4gICAgaWYgKGlzQXJyYXkocmFuZ2UpKSB7XG4gICAgICBpZiAob3B0cy5yZW50YWxJZCkge1xuICAgICAgICBpZiAoIW9wdHMuYWxsb3dTaG9ydGVyTWluU3RheVNlbGVjdGlvbikge1xuICAgICAgICAgIC8vIGdldCB0aGUgYmlnZ2VzdCBtaW5TdGF5IHZhbHVlIGluIHRoZSByYW5nZVxuICAgICAgICAgIG1pblN0YXkgPSBNYXRoLm1heCguLi5yYW5nZS5tYXAoZnVuY3Rpb24oY2VsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGNlbGwuZGF0YXNldC5taW5TdGF5IHx8IG1pblN0YXk7XG4gICAgICAgICAgfSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFvcHRzLmFsbG93TG9uZ2VyTWF4U3RheVNlbGVjdGlvbikge1xuICAgICAgICAgIC8vIGdldCB0aGUgYmlnZ2VzdCBtYXhTdGF5IHZhbHVlIGluIHRoZSByYW5nZVxuICAgICAgICAgIG1heFN0YXkgPSBNYXRoLm1heCguLi5yYW5nZS5tYXAoZnVuY3Rpb24oY2VsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGNlbGwuZGF0YXNldC5tYXhTdGF5IHx8IG1heFN0YXk7XG4gICAgICAgICAgfSkpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIGNoZWNrIHRoYXQgcmFuZ2UgaXMgdmFsaWQgYW5kIGxvbmdlciB0aGFuIG1pblN0YXkgYW5kIHNob3J0ZXIgdGhhbiBtYXhTdGF5XG4gICAgICBjb25zdCBoYXNWYWxpZERheXMgICAgPSBvcHRzLnJlbnRhbElkID8gaXNWYWxpZCA6IHRydWU7XG4gICAgICBjb25zdCBoYXNWYWxpZE1pblN0YXkgPSByYW5nZS5sZW5ndGggPiBtaW5TdGF5O1xuICAgICAgY29uc3QgaGFzVmFsaWRNYXhTdGF5ID0gcmFuZ2UubGVuZ3RoIDwgbWF4U3RheTtcblxuICAgICAgdGhpcy5oYXNWYWxpZFJhbmdlID0gaGFzVmFsaWREYXlzICYmIGhhc1ZhbGlkTWluU3RheSAmJiBoYXNWYWxpZE1heFN0YXk7XG5cbiAgICAgIGlmICghaGFzVmFsaWRNaW5TdGF5KSB7XG4gICAgICAgIGludmFsaWRSYW5nZU1lc3NhZ2UgPSB0Rm9ybWF0dGVyKG1pblN0YXksIHRoaXMubG9jYWxlLmhhc0ludmFsaWRNaW5TdGF5KTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFoYXNWYWxpZE1heFN0YXkpIHtcbiAgICAgICAgaW52YWxpZFJhbmdlTWVzc2FnZSA9IHRGb3JtYXR0ZXIobWF4U3RheSwgdGhpcy5sb2NhbGUuaGFzSW52YWxpZE1heFN0YXkpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWhhc1ZhbGlkRGF5cykge1xuICAgICAgICBpbnZhbGlkUmFuZ2VNZXNzYWdlID0gdGhpcy5sb2NhbGUuaGFzSW52YWxpZERheXM7XG4gICAgICB9XG5cbiAgICAgIHJhbmdlLm1hcCgoY2VsbCwgaW5kZXgpID0+IHtcbiAgICAgICAgY29uc3QgbGVmdCA9IGluZGV4ID09PSAwO1xuICAgICAgICBjb25zdCByaWdodCA9IGluZGV4ICsgMSA9PT0gcmFuZ2UubGVuZ3RoO1xuXG4gICAgICAgIGlmICh0aGlzLmhhc1ZhbGlkUmFuZ2UpIHtcbiAgICAgICAgICBpZiAobGVmdCkge1xuICAgICAgICAgICAgY2VsbC5kYXRhc2V0LmhpZ2hsaWdodGVkID0gJ2xlZnQnO1xuICAgICAgICAgIH0gZWxzZSBpZiAocmlnaHQpIHtcbiAgICAgICAgICAgIGNlbGwuZGF0YXNldC5oaWdobGlnaHRlZCA9ICdyaWdodCc7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNlbGwuZGF0YXNldC5oaWdobGlnaHRlZCA9ICdjZW50ZXInO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAobGVmdCkge1xuICAgICAgICAgICAgY2VsbC5kYXRhc2V0LmludmFsaWQgPSAnbGVmdCc7XG4gICAgICAgICAgfSBlbHNlIGlmIChyaWdodCkge1xuICAgICAgICAgICAgY2VsbC5kYXRhc2V0LmludmFsaWQgPSAncmlnaHQnO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjZWxsLmRhdGFzZXQuaW52YWxpZCA9ICdjZW50ZXInO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRvb2x0aXBQb3NpdGlvbiA9ICh0aGlzLmlzUmV2ZXJzZVNlbGVjdGFibGUpID8gbGVmdCA6IHJpZ2h0O1xuXG4gICAgICAgIGlmICh0b29sdGlwUG9zaXRpb24gJiYgdGhpcy5lbC5jb250YWlucyhjZWxsKSAmJiAhdGhpcy5oYXNWYWxpZFJhbmdlKSB7XG4gICAgICAgICAgdGhpcy5kb20udG9vbHRpcCA9IHRoaXMuZWwuYXBwZW5kQ2hpbGQoZWxlbWVudEZyb21TdHJpbmcodGVtcGxhdGVzLnRvb2x0aXApKTtcbiAgICAgICAgICB0aGlzLmRvbS50b29sdGlwLnF1ZXJ5U2VsZWN0b3IoJ3NwYW4nKS5pbm5lckhUTUwgPSBpbnZhbGlkUmFuZ2VNZXNzYWdlO1xuXG4gICAgICAgICAgdGhpcy50b29sdGlwUG9wcGVyID0gd2luZG93LlBvcHBlci5jcmVhdGVQb3BwZXIoY2VsbCwgdGhpcy5kb20udG9vbHRpcCwge1xuICAgICAgICAgICAgcGxhY2VtZW50OiAndG9wJyxcbiAgICAgICAgICAgIG1vZGlmaWVyczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ2ZsaXAnLFxuICAgICAgICAgICAgICAgIGVuYWJsZWQ6IGZhbHNlXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnb2Zmc2V0JyxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBvZmZzZXQ6IFswLCAwXVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNlbGw7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5oaWdobGlnaHRlZEJvdW5kcyA9IFtzdGFydCwgZW5kXTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5oYXNWYWxpZFJhbmdlO1xuICB9XG5cbiAgLyoqIFJlc2V0cyBzZWxlY3Rpb24sIHJlbW92ZXMgaGlnaGxpZ2h0c1xuICAgKiBAcHVibGljXG4gICAqIEByZXR1cm5zIHtDYWxlbmRhcn1cbiAgICovXG4gIHJlc2V0U2VsZWN0aW9uKCkge1xuICAgIHRoaXMucmVtb3ZlSGlnaGxpZ2h0KCk7XG4gICAgdGhpcy5pc1NlbGVjdGluZyA9IGZhbHNlO1xuXG4gICAgdGhpcy5lbWl0KCdzZWxlY3Rpb24tcmVzZXQnLCB0aGlzLnNlbGVjdGlvblN0YXJ0LCB0aGlzLnNlbGVjdGlvbkVuZCk7XG4gICAgaWYgKGlzRnVuY3Rpb24odGhpcy5vcHRzLm9uQ2xlYXJTZWxlY3Rpb24pKSB7XG4gICAgICB0aGlzLm9wdHMub25DbGVhclNlbGVjdGlvbih0aGlzLnNlbGVjdGlvblN0YXJ0LCB0aGlzLnNlbGVjdGlvbkVuZCk7XG4gICAgfVxuXG4gICAgdGhpcy5zZWxlY3Rpb25TdGFydCA9IG51bGw7XG4gICAgdGhpcy5zZWxlY3Rpb25FbmQgICA9IG51bGw7XG5cbiAgICBpZiAodGhpcy5jZWxsQSkge1xuICAgICAgdGhpcy5jZWxsQSA9IG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY2VsbEIpIHtcbiAgICAgIHRoaXMuY2VsbEIgPSBudWxsO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdHMuaXNEcm9wRG93biAmJiB0aGlzLm9wdHMuZWxTdGFydEF0ICYmIHRoaXMub3B0cy5lbEVuZEF0KSB7XG4gICAgICB0aGlzLm9wdHMuZWxTdGFydEF0LnZhbHVlID0gbnVsbDtcbiAgICAgIHRoaXMub3B0cy5lbEVuZEF0LnZhbHVlICAgPSBudWxsO1xuXG4gICAgICBpZiAodGhpcy5vcHRzLmlzU2luZ2xlSW5wdXQpIHtcbiAgICAgICAgdGhpcy5vcHRzLmVsU2luZ2xlSW5wdXQudmFsdWUgPSBudWxsO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc2VsZWN0UmFuZ2Uoc3RhcnQsIGVuZCkge1xuICAgIGlmIChpc0xhdGVyKHN0YXJ0LCBlbmQpKSB7XG4gICAgICByZXR1cm4gdGhpcy5jVHJlZS5zZWxlY3RSYW5nZShzdGFydCwgZW5kKTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHJhbmdlOiBudWxsLFxuICAgICAgaXNWYWxpZDogZmFsc2VcbiAgICB9O1xuICB9XG5cbiAgc2VsZWN0U3RhcnQoZGF0ZVZhbHVlLCBjZWxsKSB7XG4gICAgdGhpcy5zZWxlY3Rpb25TdGFydCA9IGRhdGVWYWx1ZTtcblxuICAgIGlmIChjZWxsKSB7XG4gICAgICB0aGlzLmNlbGxBID0gY2VsbDtcbiAgICB9XG5cbiAgICB0aGlzLnZhbHVlVG9JbnB1dCgnc3RhcnQnLCBkYXRlVmFsdWUpO1xuICB9XG5cbiAgc2VsZWN0RW5kKGRhdGVWYWx1ZSwgY2VsbCkge1xuICAgIHRoaXMuc2VsZWN0aW9uRW5kID0gZGF0ZVZhbHVlO1xuXG4gICAgaWYgKGNlbGwpIHtcbiAgICAgIHRoaXMuY2VsbEIgPSBjZWxsO1xuICAgIH1cblxuICAgIHRoaXMudmFsdWVUb0lucHV0KCdlbmQnLCBkYXRlVmFsdWUpO1xuICB9XG5cbiAgY3JlYXRlVHJlZSh5ZWFyU3RhcnQsIG1vbnRoU3RhcnQsIHRpbWVzKSB7XG4gICAgY29uc3QgbW9udGhzID0gW107XG4gICAgY29uc3QgdHJlZSAgID0ge307XG4gICAgbGV0IG1vbnRoRW5kID0gbW9udGhTdGFydDtcbiAgICBsZXQgeWVhckVuZCAgPSB5ZWFyU3RhcnQ7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRpbWVzOyBpICs9IDEpIHtcbiAgICAgIGNvbnN0IG1Eb20gPSB0aGlzLmRvbU1vbnRoKHllYXJFbmQsIG1vbnRoRW5kKTtcblxuICAgICAgbW9udGhzLnB1c2gobURvbSk7XG5cbiAgICAgIGlmICghdHJlZVt5ZWFyRW5kXSkge1xuICAgICAgICB0cmVlW3llYXJFbmRdID0ge307XG4gICAgICB9XG5cbiAgICAgIGlmICghdHJlZVt5ZWFyRW5kXVttb250aEVuZF0pIHtcbiAgICAgICAgdHJlZVt5ZWFyRW5kXVttb250aEVuZF0gPSBtRG9tLmRheUVsZW1lbnRzIHx8IFtdO1xuICAgICAgfVxuXG4gICAgICBpZiAobW9udGhFbmQgPiAxMCkge1xuICAgICAgICBtb250aEVuZCA9IDA7XG4gICAgICAgIHllYXJFbmQgKz0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1vbnRoRW5kICs9IDE7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHRyZWUsXG4gICAgICB5ZWFyRW5kLFxuICAgICAgbW9udGhFbmQsXG4gICAgICBtb250aHNcbiAgICB9O1xuICB9XG5cbiAgZG9tTW9udGgoeWVhciwgbW9udGgpIHtcbiAgICBjb25zdCBtb250aERvbSA9IGVsZW1lbnRGcm9tU3RyaW5nKHRlbXBsYXRlcy5tb250aCk7XG5cbiAgICBtb250aERvbS5xdWVyeVNlbGVjdG9yKGAuJHtzdHlsZXMudGFibGVIZWFkZXJ9IHRyYCkuaW5uZXJIVE1MID0gdGhpcy5oZWFkZXJUZW1wbGF0ZVN0cmluZygpO1xuICAgIG1vbnRoRG9tLnF1ZXJ5U2VsZWN0b3IoYC4ke3N0eWxlcy5jYXB0aW9ufWApLmlubmVySFRNTCAgICAgICAgPSBgJHt0aGlzLmxvY2FsZS5sb25nTW9udGhOYW1lc1ttb250aF19ICR7eWVhcn1gO1xuXG4gICAgbW9udGhEb20uYm9keSAgICAgICAgICAgPSBtb250aERvbS5xdWVyeVNlbGVjdG9yKGAuJHtzdHlsZXMuYm9keX1gKTtcbiAgICBtb250aERvbS5ib2R5LmlubmVySFRNTCA9IHRoaXMuZGF5c1RlbXBsYXRlU3RyaW5nKHllYXIsIG1vbnRoKTtcblxuICAgIG1vbnRoRG9tLm1vbnRoICAgICAgID0gbW9udGg7XG4gICAgbW9udGhEb20ueWVhciAgICAgICAgPSB5ZWFyO1xuICAgIG1vbnRoRG9tLmRheUVsZW1lbnRzID0gW10uc2xpY2UuY2FsbChtb250aERvbS5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS12YWx1ZV0nKSk7XG5cbiAgICByZXR1cm4gbW9udGhEb207XG4gIH1cblxuICBoZWFkZXJUZW1wbGF0ZVN0cmluZygpIHtcbiAgICAvLyBqdXN0IHRvIG1ha2UgbGlmZSBlYXNpZXIgd2l0aCBzdGFydCBvZiB0aGUgd2VlayBjYWxjdWxhdGlvblxuICAgIGNvbnN0IGhlYWRlciAgICAgICAgICAgICAgICAgPSBbXTtcbiAgICBjb25zdCB3ZWVrZGF5c0xhYmVsc0V4dGVuZGVkID0gdGhpcy5sb2NhbGUuc2hvcnRXZWVrZGF5TmFtZXMuY29uY2F0KHRoaXMubG9jYWxlLnNob3J0V2Vla2RheU5hbWVzKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5vcHRzLmRheXNQZXJXZWVrOyBpICs9IDEpIHtcbiAgICAgIGhlYWRlci5wdXNoKHRlbXBsYXRlcy53ZWVrRGF5TGFiZWwod2Vla2RheXNMYWJlbHNFeHRlbmRlZFtpICsgdGhpcy5vcHRzLnN0YXJ0T2ZXZWVrXSkpO1xuICAgIH1cbiAgICByZXR1cm4gaGVhZGVyLmpvaW4oJycpO1xuICB9XG5cbiAgZGF5c1RlbXBsYXRlU3RyaW5nKHllYXIsIG1vbnRoKSB7XG4gICAgY29uc3Qgc3RhcnRPZk1vbnRoICA9IG5ldyBEYXRlKHllYXIsIG1vbnRoLCAxKS5nZXREYXkoKTtcbiAgICBjb25zdCBkYXlzSW5Nb250aCAgID0gbW9udGhMZW5ndGgoeWVhciwgbW9udGgpO1xuICAgIGNvbnN0IHJvd1RlbXBsYXRlICAgPSB0ZW1wbGF0ZXMud2Vla1JvdztcbiAgICBjb25zdCBtb250aFRlbXBsYXRlID0gW107XG4gICAgY29uc3Qgd2Vla1NoaWZ0ICAgICA9ICh0aGlzLm9wdHMuZGF5c1BlcldlZWsgLSB0aGlzLm9wdHMuc3RhcnRPZldlZWspO1xuXG4gICAgbGV0IHJvd3MgICAgICAgICAgICAgICA9IDU7XG4gICAgbGV0IHdlZWtTaGlmdENvcnJlY3RlZCA9IHN0YXJ0T2ZNb250aCArIHdlZWtTaGlmdDtcbiAgICBsZXQgZGF5Q291bnRlciAgICAgICAgID0gMDtcbiAgICBsZXQgZGF5T2ZNb250aCAgICAgICAgID0gMTtcblxuICAgIC8vIGRvbid0IHJlbmRlciBmdWxsIGVtcHR5IHdlZWtcbiAgICBpZiAod2Vla1NoaWZ0Q29ycmVjdGVkID49IHRoaXMub3B0cy5kYXlzUGVyV2Vlaykge1xuICAgICAgd2Vla1NoaWZ0Q29ycmVjdGVkIC09IHRoaXMub3B0cy5kYXlzUGVyV2VlaztcbiAgICB9XG5cbiAgICAvLyB0cnkgdG8gZmlndXJlIG91dCBpZiA1IHJvd3MgaXMgZW5vdWdoIGZvciB0aGUgbW9udGhcbiAgICBpZiAocm93cyAqIHRoaXMub3B0cy5kYXlzUGVyV2VlayA8IHdlZWtTaGlmdENvcnJlY3RlZCArIGRheXNJbk1vbnRoKSB7XG4gICAgICByb3dzID0gNjtcbiAgICB9XG5cbiAgICAvLyBmb3IgZWFjaCB3ZWVrICg1IG9yIDYpXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByb3dzOyBpICs9IDEpIHtcbiAgICAgIGNvbnN0IHdlZWsgPSBbXTtcbiAgICAgIC8vIG9wZW4gdGFnIDx0cj5cbiAgICAgIHdlZWsucHVzaChyb3dUZW1wbGF0ZShpKS5vcGVuKTtcblxuICAgICAgLy8gcHVzaCBkYXlzIGluIHdlZWtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5vcHRzLmRheXNQZXJXZWVrOyBqICs9IDEpIHtcbiAgICAgICAgLy8gcHVzaGluZyBhY3R1YWwgZGF5cyAxLi4uZGF5c0luTW9udGhcbiAgICAgICAgaWYgKChkYXlDb3VudGVyID49IHdlZWtTaGlmdENvcnJlY3RlZCkgJiYgZGF5T2ZNb250aCA8PSBkYXlzSW5Nb250aCkge1xuICAgICAgICAgIHdlZWsucHVzaCh0aGlzLmRheVRlbXBsYXRlU3RyaW5nKHllYXIsIG1vbnRoLCBkYXlPZk1vbnRoKSk7XG4gICAgICAgICAgZGF5T2ZNb250aCArPSAxO1xuICAgICAgICAgIC8vIHB1c2hpbmcgcGxhY2Vob2xkZXJzIGluc3RlYWQgb2YgZGF5c1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHdlZWsucHVzaCh0ZW1wbGF0ZXMud2Vla0RheVBsYWNlaG9sZGVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGRheUNvdW50ZXIgKz0gMTtcbiAgICAgIH1cbiAgICAgIC8vIGNsb3NlIHRhZyA8L3RyPiBvZiB3ZWVrXG4gICAgICB3ZWVrLnB1c2gocm93VGVtcGxhdGUoKS5jbG9zZSk7XG4gICAgICAvLyBwdXNoIGNvbXBsZXRlZCB3ZWVrIHRvIG1vbnRoIHRlbXBsYXRlXG4gICAgICBtb250aFRlbXBsYXRlLnB1c2god2Vlay5qb2luKCcnKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1vbnRoVGVtcGxhdGUuam9pbignJyk7XG4gIH1cblxuICBkYXlUZW1wbGF0ZVN0cmluZyh5ZWFyLCBtb250aCwgZGF5T2ZNb250aCkge1xuICAgIGNvbnN0IHsgY1RyZWUgfSAgICAgID0gdGhpcztcbiAgICBjb25zdCByYXRlICAgICAgICAgICA9IHRoaXMub3B0cy5zaG93UmF0ZXMgPyBjVHJlZS5nZXREYXlQcm9wZXJ0eSh5ZWFyLCBtb250aCwgZGF5T2ZNb250aCwgJ3JhdGUnKSA6IDA7XG4gICAgY29uc3QgbWluU3RheSAgICAgICAgPSBjVHJlZS5nZXREYXlQcm9wZXJ0eSh5ZWFyLCBtb250aCwgZGF5T2ZNb250aCwgJ21pblN0YXknKTtcbiAgICBjb25zdCBtYXhTdGF5ICAgICAgICA9IGNUcmVlLmdldERheVByb3BlcnR5KHllYXIsIG1vbnRoLCBkYXlPZk1vbnRoLCAnbWF4U3RheScpO1xuXG4gICAgbGV0IGlzRGlzYWJsZWQgICAgICAgPSBjVHJlZS5pc0RheURpc2FibGVkKHllYXIsIG1vbnRoLCBkYXlPZk1vbnRoKTtcbiAgICBsZXQgaXNBdmFpbGFibGVPdXQgICA9IGNUcmVlLmdldERheVByb3BlcnR5KHllYXIsIG1vbnRoLCBkYXlPZk1vbnRoLCAnaXNBdmFpbGFibGVPdXQnKTtcbiAgICBsZXQgaXNNb3JuaW5nQmxvY2tlZCA9IGNUcmVlLmdldERheVByb3BlcnR5KHllYXIsIG1vbnRoLCBkYXlPZk1vbnRoLCAnaXNNb3JuaW5nQmxvY2tlZCcpO1xuXG4gICAgY29uc3QgeyBjdXJyZW50RGF0ZSB9ID0gdGhpcy5vcHRzO1xuICAgIGNvbnN0IGRhdGVBcnJheSAgICAgICA9IFt5ZWFyLCBtb250aCwgZGF5T2ZNb250aF07XG4gICAgY29uc3QgaXNDdXJyZW50RGF5ICAgID0gaXNDdXJyZW50KGRhdGVBcnJheSwgY3VycmVudERhdGUpO1xuXG4gICAgLy8gZGlzYWJsZSBwYXN0IGRhdGVzXG4gICAgaWYgKGlzTGF0ZXIoZGF0ZUFycmF5LCBjdXJyZW50RGF0ZSkpIHtcbiAgICAgIGlzRGlzYWJsZWQgICAgICAgID0gdHJ1ZTtcbiAgICAgIGlzTW9ybmluZ0Jsb2NrZWQgID0gbnVsbDtcbiAgICAgIGlzQXZhaWxhYmxlT3V0ICAgID0gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBkaXNhYmxlIGN1cnJlbnQgZGF5IG1vcm5pbmdcbiAgICBpZiAoaXNDdXJyZW50RGF5KSB7XG4gICAgICBpZiAoIShpc0Rpc2FibGVkICYmIGlzQXZhaWxhYmxlT3V0ID09PSBudWxsICYmIGlzTW9ybmluZ0Jsb2NrZWQgPT09IG51bGwpKSB7XG4gICAgICAgIGlzTW9ybmluZ0Jsb2NrZWQgID0gdHJ1ZTtcblxuICAgICAgICBpZiAoaXNBdmFpbGFibGVPdXQgPT09IG51bGwpIHtcbiAgICAgICAgICBpc0F2YWlsYWJsZU91dCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBpZiB0aGVyZSBpcyBub3QgcmVudGFsSWQgYW5kIG5vIG1hcHMsIGp1c3QgcmVuZGVyIHBsYWluIGNhbGVuZGFyXG4gICAgaWYgKCF0aGlzLm9wdHMucmVudGFsSWQgfHwgdGhpcy5vcHRzLmVuYWJsZUFsbERheXMpIHtcbiAgICAgIGlmIChpc0xhdGVyKGN1cnJlbnREYXRlLCBkYXRlQXJyYXkpKSB7XG4gICAgICAgIGlzRGlzYWJsZWQgICAgICAgID0gZmFsc2U7XG4gICAgICAgIGlzQXZhaWxhYmxlT3V0ICAgID0gdHJ1ZTtcbiAgICAgICAgaXNNb3JuaW5nQmxvY2tlZCAgPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGlzQ3VycmVudERheSkge1xuICAgICAgICBpc0Rpc2FibGVkICAgICAgICA9IHRydWU7XG4gICAgICAgIGlzTW9ybmluZ0Jsb2NrZWQgID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBpc0F2YWlsYWJsZUluID0gaXNNb3JuaW5nQmxvY2tlZCA9PSBmYWxzZTtcblxuICAgIGlmIChpc0Rpc2FibGVkICYmIGlzQXZhaWxhYmxlSW4pIHtcbiAgICAgIGlzRGlzYWJsZWQgPSAnbGVmdCc7XG4gICAgfSBlbHNlIGlmIChpc01vcm5pbmdCbG9ja2VkKSB7XG4gICAgICBpc0Rpc2FibGVkID0gJ3JpZ2h0JztcbiAgICB9IGVsc2UgaWYgKGlzRGlzYWJsZWQpIHtcbiAgICAgIGlzRGlzYWJsZWQgPSAnY2VudGVyJztcbiAgICB9XG5cbiAgICByZXR1cm4gdGVtcGxhdGVzLndlZWtEYXkoXG4gICAgICBkYXlPZk1vbnRoLFxuICAgICAgaXNEaXNhYmxlZCxcbiAgICAgIGlzQXZhaWxhYmxlSW4sXG4gICAgICBpc0F2YWlsYWJsZU91dCxcbiAgICAgIGlzQ3VycmVudERheSxcbiAgICAgIG1pblN0YXksXG4gICAgICB0aGlzLm9wdHMuc2hvd01pblN0YXkgPyB0Rm9ybWF0dGVyKG1pblN0YXksIHRoaXMubG9jYWxlLm1pblN0YXkpIDogZmFsc2UsXG4gICAgICBtYXhTdGF5LFxuICAgICAgdGhpcy5vcHRzLnNob3dNYXhTdGF5ID8gdEZvcm1hdHRlcihtYXhTdGF5LCB0aGlzLmxvY2FsZS5tYXhTdGF5KSA6IGZhbHNlLFxuICAgICAgcmF0ZSxcbiAgICAgIGN1cnJlbmN5Rm9ybWF0dGVyKE1hdGgucm91bmQocmF0ZSksIHRoaXMub3B0cy5sYW5nLCB0aGlzLm9wdHMuY3VycmVuY3kgfHwgdGhpcy5sb2NhbGUuY3VycmVuY3kpXG4gICAgKTtcbiAgfVxuXG4gIGRlc3Ryb3lNb250aHMoKSB7XG4gICAgaWYgKHRoaXMuZG9tICYmIGlzQXJyYXkodGhpcy5kb20ubW9udGhzKSkge1xuICAgICAgdGhpcy5kb20ubW9udGhzLm1hcCgobSkgPT4gZGVzdHJveUVsZW1lbnQobSkpO1xuICAgICAgdGhpcy5kZXN0cm95VG9vbHRpcCgpO1xuICAgIH1cbiAgfVxuXG4gIGRlc3Ryb3koKSB7XG4gICAgcmV0dXJuIGRlc3Ryb3lFbGVtZW50KHRoaXMuZWwpO1xuICB9XG5cbiAgbG9hZE1hcHMoaWQpIHtcbiAgICB0aGlzLmxvZ2dlcignbG9hZGluZyBtYXBzJyk7XG4gICAgdGhpcy50b2dnbGVMb2FkaW5nKCk7XG5cbiAgICBjb25zdCBvblN1Y2Nlc3MgPSAobWFwcykgPT4ge1xuICAgICAgaWYgKGlzQXJyYXkobWFwcy5kYXRhKSAmJiBtYXBzLmRhdGFbMF0uYXR0cmlidXRlcykge1xuICAgICAgICBpZiAodGhpcy5vcHRzLmRpc2FibGVBdmFpbGFiaXR5TWFwKSB7XG4gICAgICAgICAgbWFwcy5kYXRhWzBdLmF0dHJpYnV0ZXMuYXZhaWxhYmlsaXR5ID0gbWFwcy5kYXRhWzBdLmF0dHJpYnV0ZXMuYXZhaWxhYmlsaXR5LnJlcGxhY2UoL1swLTldL2csICcwJyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vcHRzLmN1cnJlbmN5ID0gdGhpcy5vcHRzLmN1cnJlbmN5IHx8IG1hcHMuZGF0YVswXS5hdHRyaWJ1dGVzLmN1cnJlbmN5O1xuICAgICAgICB0aGlzLmFkZE1hcHMobWFwcy5kYXRhWzBdLmF0dHJpYnV0ZXMpO1xuICAgICAgICB0aGlzLm1hcHNMb2FkZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLnRvZ2dsZUxvYWRpbmcoKTtcbiAgICAgICAgdGhpcy5lbWl0KCdtYXBzLWxvYWRlZCcsIG1hcHMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy50b2dnbGVMb2FkaW5nKCk7XG4gICAgICAgIHRoaXMubG9nZ2VyKCdleHBlY3RzIGpzb24tYXBpIGRhdGEgZm9ybWF0JywgJ2Vycm9yJyk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IG9uRXJyb3IgPSAoKSA9PiB7XG4gICAgICB0aGlzLnRvZ2dsZUxvYWRpbmcoKTtcbiAgICAgIHRoaXMuZW1pdCgnbWFwcy1lcnJvcicpO1xuICAgICAgdGhpcy5sb2dnZXIoJ1NlcnZlciBlcnJvciBoYXBwZW5lZCcsICdlcnJvcicpO1xuICAgIH07XG5cbiAgICBhamF4KHRoaXMub3B0cy5yZW50YWxVcmwoaWQpLCBvblN1Y2Nlc3MsIG9uRXJyb3IpO1xuICB9XG5cbiAgY29tcGxldGVTZWxlY3Rpb24oKSB7XG4gICAgaWYgKHRoaXMub3B0cy5pc1NpbmdsZUlucHV0KSB7XG4gICAgICBjb25zdCBzaW5nbGVJbnB1dERhdGVGb3JtYXQgPSB0aGlzLnNpbmdsZUlucHV0RGF0ZUZvcm1hdCB8fCB0aGlzLmxvY2FsZS5mb3JtYXREYXRlO1xuXG4gICAgICBjb25zdCBkYXRlU3RhcnQgPSBzdHJmdGltZShkYXRlVG9Jc28oLi4udGhpcy5zZWxlY3Rpb25TdGFydCksIHNpbmdsZUlucHV0RGF0ZUZvcm1hdCwgdGhpcy5sb2NhbGUpO1xuICAgICAgY29uc3QgZGF0ZUVuZCAgID0gc3RyZnRpbWUoZGF0ZVRvSXNvKC4uLnRoaXMuc2VsZWN0aW9uRW5kKSwgc2luZ2xlSW5wdXREYXRlRm9ybWF0LCB0aGlzLmxvY2FsZSk7XG5cbiAgICAgIHRoaXMub3B0cy5lbFNpbmdsZUlucHV0LnZhbHVlID0gYCR7ZGF0ZVN0YXJ0fSAke3RoaXMub3B0cy5zaW5nbGVJbnB1dFNlcGFyYXRvcn0gJHtkYXRlRW5kfWA7XG4gICAgfVxuXG4gICAgdGhpcy5lbWl0KCdzZWxlY3Rpb24tY29tcGxldGVkJywgdGhpcy5zZWxlY3Rpb25TdGFydCwgdGhpcy5zZWxlY3Rpb25FbmQpO1xuICAgIGlmIChpc0Z1bmN0aW9uKHRoaXMub3B0cy5vblNlbGVjdGlvbkNvbXBsZXRlZCkpIHtcbiAgICAgIHRoaXMub3B0cy5vblNlbGVjdGlvbkNvbXBsZXRlZChcbiAgICAgICAgZGF0ZVRvSXNvKC4uLnRoaXMuc2VsZWN0aW9uU3RhcnQsIHRydWUpLCBkYXRlVG9Jc28oLi4udGhpcy5zZWxlY3Rpb25FbmQsIHRydWUpXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGluaXRDYWxlbmRhckRyb3AoKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGVsZW1lbnRGcm9tU3RyaW5nKCc8ZGl2PjwvZGl2PicpO1xuICAgIHRoaXMuZWxUYXJnZXQgPSB0aGlzLm9wdHMuZWw7XG4gICAgdGhpcy5lbCAgICAgICA9IGVsZW1lbnQ7XG5cbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGVsZW1lbnQpO1xuXG4gICAgdGhpcy5vcHRzLmVsU3RhcnRBdCAgICAgPSB0aGlzLm9wdHMuZWxTdGFydEF0IHx8IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYC4ke3RoaXMuQ1NTX1BSRUZJWH1fX3N0YXJ0LWF0YCk7XG4gICAgdGhpcy5vcHRzLmVsRW5kQXQgICAgICAgPSB0aGlzLm9wdHMuZWxFbmRBdCB8fCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAuJHt0aGlzLkNTU19QUkVGSVh9X19lbmQtYXRgKTtcbiAgICB0aGlzLm9wdHMuZWxTaW5nbGVJbnB1dCA9IHRoaXMub3B0cy5lbFNpbmdsZUlucHV0IHx8IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYC4ke3RoaXMuQ1NTX1BSRUZJWH1fX3NpbmdsZS1pbnB1dGApO1xuXG4gICAgaWYgKHRoaXMub3B0cy5oaWRkZW5FbEZvcm1hdCkge1xuICAgICAgW3RoaXMub3B0cy5lbFN0YXJ0QXQsIHRoaXMub3B0cy5lbEVuZEF0XS5mb3JFYWNoKChpbnB1dCwgaSkgPT4ge1xuICAgICAgICBjb25zdCBoaWRkZW5JbnB1dCA9IGlucHV0LmNsb25lTm9kZSh0cnVlKTtcbiAgICAgICAgaW5wdXQucGFyZW50RWxlbWVudC5hcHBlbmRDaGlsZChoaWRkZW5JbnB1dCk7XG4gICAgICAgIGlucHV0LnJlbW92ZUF0dHJpYnV0ZSgnbmFtZScpO1xuICAgICAgICBoaWRkZW5JbnB1dC5jbGFzc05hbWUgPSAnJztcbiAgICAgICAgaGlkZGVuSW5wdXQuaGlkZGVuICAgID0gdHJ1ZTtcblxuICAgICAgICAoaSkgPyB0aGlzLmhpZGRlbkVsRW5kQXQgPSBoaWRkZW5JbnB1dCA6IHRoaXMuaGlkZGVuRWxTdGFydEF0ID0gaGlkZGVuSW5wdXQ7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRzLmlzU2luZ2xlSW5wdXQpIHtcbiAgICAgIHRoaXMub3B0cy5lbFNpbmdsZUlucHV0LnJlYWRPbmx5ID0gdHJ1ZTtcblxuICAgICAgW3RoaXMub3B0cy5lbFN0YXJ0QXQsIHRoaXMub3B0cy5lbEVuZEF0XS5mb3JFYWNoKChpbnB1dCkgPT4ge1xuICAgICAgICBpbnB1dC5oaWRkZW4gPSB0cnVlO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgYWRkQ2xhc3ModGhpcy5lbCwgc3R5bGVzLmRyb3BCYXNpYyk7XG5cbiAgICBjb25zdCBjYWxEcm9wID0gd2luZG93LlBvcHBlci5jcmVhdGVQb3BwZXIodGhpcy5lbFRhcmdldCwgdGhpcy5lbCwge1xuICAgICAgcGxhY2VtZW50OiB0aGlzLm9wdHMuZHJvcFBsYWNlbWVudCxcbiAgICAgIGhpZGU6IHRydWVcbiAgICB9KTtcblxuICAgIGNvbnN0IG9wZW5Ecm9wID0gKGlucHV0LCBpc1JldmVyc2VkKSA9PiB7XG4gICAgICB0aGlzLnN3aXRjaElucHV0Rm9jdXMoaW5wdXQpO1xuICAgICAgdGhpcy5jaGFuZ2VTZWxlY3Rpb25PcmRlcihpc1JldmVyc2VkKTtcblxuICAgICAgaWYgKCFoYXNDbGFzcyh0aGlzLmVsLCBzdHlsZXMudmlzaWJsZSkpIHtcbiAgICAgICAgY2FsRHJvcC51cGRhdGUoKTtcbiAgICAgICAgdGhpcy5lbWl0KCdkcm9wLW9wZW4nKTtcbiAgICAgICAgYWRkQ2xhc3ModGhpcy5lbCwgc3R5bGVzLnZpc2libGUpO1xuXG4gICAgICAgIGlmICghdGhpcy5tYXBzTG9hZGVkICYmIHRoaXMub3B0cy5yZW50YWxJZCkge1xuICAgICAgICAgIHRoaXMubG9hZE1hcHModGhpcy5vcHRzLnJlbnRhbElkKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICBpZiAodGhpcy5vcHRzLmlzU2luZ2xlSW5wdXQpIHtcbiAgICAgIHRoaXMuZm9jdXNUb3VjaEV2ZW50cyh0aGlzLm9wdHMuZWxTaW5nbGVJbnB1dCwgKCkgPT4ge1xuICAgICAgICBvcGVuRHJvcCgnc3RhcnQnLCBmYWxzZSk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mb2N1c1RvdWNoRXZlbnRzKHRoaXMub3B0cy5lbFN0YXJ0QXQsICgpID0+IHtcbiAgICAgICAgb3BlbkRyb3AoJ3N0YXJ0JywgZmFsc2UpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmZvY3VzVG91Y2hFdmVudHModGhpcy5vcHRzLmVsRW5kQXQsICgpID0+IHtcbiAgICAgICAgb3BlbkRyb3AoJ2VuZCcsIHRydWUpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLmNsb3NlRHJvcC5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLmNhbERyb3AgPSBjYWxEcm9wO1xuXG4gICAgaWYgKHRoaXMub3B0cy5lbFJlc2V0KSB7XG4gICAgICB0aGlzLm9wdHMuZWxSZXNldC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcbiAgICAgICAgdGhpcy5yZXNldFNlbGVjdGlvbigpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgdmFsdWVUb0lucHV0KGlucHV0LCBkYXRlVmFsdWUpIHtcbiAgICBjb25zdCB7IGVsU3RhcnRBdCB9ID0gdGhpcy5vcHRzO1xuICAgIGNvbnN0IHsgZWxFbmRBdCB9ICAgPSB0aGlzLm9wdHM7XG5cbiAgICBjb25zdCBkYXRlICA9IGRhdGVUb0lzbyguLi5kYXRlVmFsdWUpO1xuICAgIGNvbnN0IHZhbHVlID0gc3RyZnRpbWUoZGF0ZSwgdGhpcy5mb3JtYXQsIHRoaXMubG9jYWxlKTtcbiAgICBjb25zdCBldnQgICA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdFdmVudCcpO1xuXG4gICAgZXZ0LmluaXRFdmVudCgnY2hhbmdlJywgZmFsc2UsIHRydWUpO1xuXG4gICAgaWYgKHRoaXMub3B0cy5oaWRkZW5FbEZvcm1hdCkge1xuICAgICAgY29uc3QgaGlkZGVuVmFsdWUgPSBzdHJmdGltZShkYXRlLCB0aGlzLm9wdHMuaGlkZGVuRWxGb3JtYXQsIHRoaXMubG9jYWxlKTtcblxuICAgICAgaWYgKGlucHV0ID09PSAnc3RhcnQnICYmIHRoaXMuaGlkZGVuRWxTdGFydEF0KSB7XG4gICAgICAgIHRoaXMuaGlkZGVuRWxTdGFydEF0LnZhbHVlID0gaGlkZGVuVmFsdWU7XG4gICAgICB9IGVsc2UgaWYgKGlucHV0ID09PSAnZW5kJyAmJiB0aGlzLmhpZGRlbkVsRW5kQXQpIHtcbiAgICAgICAgdGhpcy5oaWRkZW5FbEVuZEF0LnZhbHVlID0gaGlkZGVuVmFsdWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGlucHV0ID09PSAnc3RhcnQnICYmIGVsU3RhcnRBdCkge1xuICAgICAgZWxTdGFydEF0LnZhbHVlID0gdmFsdWU7XG4gICAgICBlbFN0YXJ0QXQuZGlzcGF0Y2hFdmVudChldnQpO1xuICAgIH0gZWxzZSBpZiAoaW5wdXQgPT09ICdlbmQnICYmIGVsRW5kQXQpIHtcbiAgICAgIGVsRW5kQXQudmFsdWUgPSB2YWx1ZTtcbiAgICAgIGVsRW5kQXQuZGlzcGF0Y2hFdmVudChldnQpO1xuICAgIH1cbiAgfVxuXG4gIGlucHV0c1RvVmFsdWVzKCkge1xuICAgIGlmICh0aGlzLm9wdHMuZWxTdGFydEF0LnZhbHVlID09PSAnJyAmJiB0aGlzLm9wdHMuZWxFbmRBdC52YWx1ZSA9PT0gJycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzZWxlY3Rpb25TdGFydCAgPSBkYXRlVG9BcnJheSh0aGlzLm9wdHMuZWxTdGFydEF0LnZhbHVlLCB0aGlzLmZvcm1hdCwgdGhpcy5sb2NhbGUpO1xuICAgIGNvbnN0IHNlbGVjdGlvbkVuZCAgICA9IGRhdGVUb0FycmF5KHRoaXMub3B0cy5lbEVuZEF0LnZhbHVlLCB0aGlzLmZvcm1hdCwgdGhpcy5sb2NhbGUpO1xuICAgIGNvbnN0IHsgY3VycmVudERhdGUgfSA9IHRoaXMub3B0cztcblxuICAgIHRoaXMucmVzZXRTZWxlY3Rpb24oKTtcblxuICAgIGlmIChpc0FycmF5KHNlbGVjdGlvblN0YXJ0KSAmJiBpc0FycmF5KHNlbGVjdGlvbkVuZCkpIHtcbiAgICAgIGlmICgoaXNMYXRlcihjdXJyZW50RGF0ZSwgc2VsZWN0aW9uU3RhcnQpIHx8IGlzQ3VycmVudChjdXJyZW50RGF0ZSwgc2VsZWN0aW9uU3RhcnQpKSAmJiBpc0xhdGVyKHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQpKSB7XG4gICAgICAgIGNvbnN0IG1vbnRoRGlmZmVyZW5jZSA9IG1vbnRoRGlmZihcbiAgICAgICAgICBkYXRlVG9Jc28odGhpcy5vcHRzLnllYXJTdGFydCwgdGhpcy5vcHRzLm1vbnRoU3RhcnQsIDEpLFxuICAgICAgICAgIGRhdGVUb0lzbyguLi5zZWxlY3Rpb25FbmQpXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgeyB0cmVlIH0gPSB0aGlzLmNyZWF0ZVRyZWUodGhpcy5vcHRzLnllYXJTdGFydCwgdGhpcy5vcHRzLm1vbnRoU3RhcnQsIG1vbnRoRGlmZmVyZW5jZSk7XG5cbiAgICAgICAgdGhpcy5jVHJlZS5hZGRUcmVlKHRyZWUpO1xuICAgICAgICB0aGlzLnNlbGVjdGlvblN0YXJ0ID0gc2VsZWN0aW9uU3RhcnQ7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uRW5kID0gc2VsZWN0aW9uRW5kO1xuICAgICAgICB0aGlzLnJlY292ZXJTZWxlY3Rpb25zKCk7XG4gICAgICAgIHRoaXMuY29tcGxldGVTZWxlY3Rpb24oKTtcbiAgICAgICAgdGhpcy5kZXN0cm95TW9udGhzKCk7XG4gICAgICAgIHRoaXMucmVuZGVyTW9udGhzKHNlbGVjdGlvbkVuZFswXSwgc2VsZWN0aW9uRW5kWzFdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubG9nZ2VyKGBpbnZhbGlkIHJhbmdlOiBcIlske3NlbGVjdGlvblN0YXJ0fV1cIiBcIlske3NlbGVjdGlvbkVuZH1dXCJgLCAnd2FybicpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChzZWxlY3Rpb25TdGFydCAmJiBzZWxlY3Rpb25FbmQpIHtcbiAgICAgIHRoaXMubG9nZ2VyKGBpbnZhbGlkIGRhdGVzOiBcIiR7c2VsZWN0aW9uU3RhcnR9XCIgXCIke3NlbGVjdGlvbkVuZH1cImAsICd3YXJuJyk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgc3dpdGNoSW5wdXRGb2N1cyh0eXBlKSB7XG4gICAgaWYgKHRoaXMub3B0cy5lbFN0YXJ0QXQgJiYgdGhpcy5vcHRzLmVsRW5kQXQpIHtcbiAgICAgIGlmICh0eXBlID09PSAnc3RhcnQnKSB7XG4gICAgICAgIGFkZENsYXNzKHRoaXMub3B0cy5lbFN0YXJ0QXQsIHN0eWxlcy5mb2N1cyk7XG4gICAgICAgIHJlbW92ZUNsYXNzKHRoaXMub3B0cy5lbEVuZEF0LCBzdHlsZXMuZm9jdXMpO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGUgPT09ICdlbmQnKSB7XG4gICAgICAgIGFkZENsYXNzKHRoaXMub3B0cy5lbEVuZEF0LCBzdHlsZXMuZm9jdXMpO1xuICAgICAgICByZW1vdmVDbGFzcyh0aGlzLm9wdHMuZWxTdGFydEF0LCBzdHlsZXMuZm9jdXMpO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGUgPT09ICdhbnknKSB7XG4gICAgICAgIHJlbW92ZUNsYXNzKHRoaXMub3B0cy5lbFN0YXJ0QXQsIHN0eWxlcy5mb2N1cyk7XG4gICAgICAgIHJlbW92ZUNsYXNzKHRoaXMub3B0cy5lbEVuZEF0LCBzdHlsZXMuZm9jdXMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNsb3NlRHJvcChlLCBmb3JjZSkge1xuICAgIGlmICghZm9yY2UgJiYgKGlzSW5zaWRlKGUudGFyZ2V0LCB0aGlzLmVsKSB8fCBpc0luc2lkZShlLnRhcmdldCwgdGhpcy5lbFRhcmdldCkpKSB7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZW1vdmVDbGFzcyh0aGlzLmVsLCBzdHlsZXMudmlzaWJsZSk7XG4gICAgICB0aGlzLmRlc3Ryb3lUb29sdGlwKCk7XG4gICAgICB0aGlzLmVtaXQoJ2Ryb3AtY2xvc2UnKTtcbiAgICAgIHRoaXMuc3dpdGNoSW5wdXRGb2N1cygnYW55Jyk7XG4gICAgfVxuICB9XG5cbiAgZm9jdXNUb3VjaEV2ZW50cyhlbGVtZW50LCBfY2FsbGJhY2spIHtcbiAgICBpZiAoaXNGdW5jdGlvbihfY2FsbGJhY2spKSB7XG4gICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCAoZXZlbnQpID0+IHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgX2NhbGxiYWNrKCk7XG4gICAgICB9KTtcblxuICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdmb2N1cycsIChldmVudCkgPT4ge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBfY2FsbGJhY2soKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiBgWyR7dGhpcy5uYW1lfSAke3RoaXMuVkVSU0lPTn1dIGA7XG4gIH1cblxuICBsb2dnZXIobXNnLCB0eXBlID0gJ2xvZycpIHtcbiAgICBpZiAoY29uc29sZSAmJiBjb25zb2xlW3R5cGVdKSB7XG4gICAgICBjb25zb2xlW3R5cGVdKHRoaXMudG9TdHJpbmcoKSArIG1zZyk7XG4gICAgfVxuICB9XG59XG4iLCIvKiBnbG9iYWwgcHJvY2VzcywgcmVxdWlyZSAqL1xuaW1wb3J0IHsgZGFzaFRvQ2FwaXRhbCB9IGZyb20gJ3dpZGdldC11dGlscyc7XG5cbmNvbnN0IHsgbmFtZSB9ID0gcmVxdWlyZSgnLi4vcGFja2FnZS5qc29uJyk7XG5jb25zdCBjdXJyZW50RGF0ZSA9IG5ldyBEYXRlKCk7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZSxcbiAgY3NzUHJlZml4OiBkYXNoVG9DYXBpdGFsKG5hbWUpLFxuICBhcGlIb3N0OiBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ2RldmVsb3BtZW50JyA/ICdodHRwOi8vbG9jYWxob3N0OjMwMDAnIDogJ2h0dHBzOi8vd3d3LmJvb2tpbmdzeW5jLmNvbScsXG4gIGFwaU5hbWVzcGFjZTogJy9hcGkvdjIvcHVibGljJyxcbiAgYXBpTWFwc1JvdXRlOiAnL21hcHMuanNvbj97YXBpUmVudGFsSWR9e2FwaUN1cnJlbmN5fScsXG4gIGFwaVJlbnRhbElkOiAncmVudGFsX2lkPScsXG4gIGFwaUN1cnJlbmN5OiAnJmV4Y2hhbmdlX3RvX2N1cnJlbmN5PScsXG5cbiAgcmVudGFsVXJsKGlkcykge1xuICAgIGxldCByb3V0ZSA9IHRoaXMuYXBpTWFwc1JvdXRlLnJlcGxhY2UoJ3thcGlSZW50YWxJZH0nLCBgJHt0aGlzLmFwaVJlbnRhbElkfSR7aWRzfWApO1xuICAgIHJvdXRlID0gcm91dGUucmVwbGFjZSgne2FwaUN1cnJlbmN5fScsICh0aGlzLmN1cnJlbmN5KSA/IGAke3RoaXMuYXBpQ3VycmVuY3l9JHt0aGlzLmN1cnJlbmN5fWAgOiAnJyk7XG4gICAgcmV0dXJuIGAke3RoaXMuYXBpSG9zdH0ke3RoaXMuYXBpTmFtZXNwYWNlfSR7cm91dGV9YDtcbiAgfSxcblxuICBzdGFydE9mV2VlazogMCwgLy8gMCBTdW4gMSBNb24uLi4uNiBTYXRcbiAgbWluU3RheTogMSwgLy8gY2FuIHNlbGVjdCBvbmUgbmlnaHRcbiAgbWF4U3RheTogSW5maW5pdHksIC8vIGNhbiBzZWxlY3QgaW5maW5pdGUgbmlnaHRzXG4gIG1vbnRoU3RhcnQ6IG51bGwsIC8vIHN0YXJ0IHdpdGggY3VycmVudCBtb250aCBieSBkZWZhdWx0IE0gJzAuLi4xMSdcbiAgeWVhclN0YXJ0OiBudWxsLCAvLyBzdGFydCB3aXRoIGN1cnJlbnQgeWVhciBZWVlZXG4gIGRheXNQZXJXZWVrOiA3LCAvLyBGSVhNRSBzdXBwb3J0IGNhbGVuZGFyIHJlbmRlcmluZ1xuICBkaXNwbGF5TW9udGhzOiAyLFxuICBzZWxlY3RhYmxlOiBmYWxzZSxcbiAgc2hvd1JhdGVzOiBmYWxzZSxcbiAgaXNSZXZlcnNlU2VsZWN0YWJsZTogZmFsc2UsIC8vIHNlbGVjdCBlbmQgZGF0ZSBmaXJzdFxuICBpc0JhY2tEaXNhYmxlZDogdHJ1ZSxcbiAgaXNEcm9wRG93bjogZmFsc2UsXG4gIGRyb3BQbGFjZW1lbnQ6ICdib3R0b20tc3RhcnQnLFxuICBlbDogbnVsbCxcbiAgZWxTdGFydEF0OiBudWxsLFxuICBlbEVuZEF0OiBudWxsLFxuICBlbFNpbmdsZUlucHV0OiBudWxsLFxuICBpc1NpbmdsZUlucHV0OiBudWxsLFxuICBzaW5nbGVJbnB1dERhdGVGb3JtYXQ6IG51bGwsXG4gIHNpbmdsZUlucHV0U2VwYXJhdG9yOiAn4oaSJyxcbiAgZWxSZXNldDogbnVsbCxcbiAgZm9ybWF0RGF0ZTogbnVsbCxcbiAgaGlkZGVuRWxGb3JtYXQ6IG51bGwsXG4gIHJlbnRhbElkOiBudWxsLFxuICBjdXJyZW5jeTogbnVsbCxcbiAgZGlzYWJsZUF2YWlsYWJpdHlNYXA6IGZhbHNlLFxuICBhbGxvd1Nob3J0ZXJNaW5TdGF5U2VsZWN0aW9uOiBmYWxzZSxcbiAgYWxsb3dMb25nZXJNYXhTdGF5U2VsZWN0aW9uOiBmYWxzZSxcbiAgZW5hYmxlQWxsRGF5czogZmFsc2UsXG4gIGN1cnJlbnREYXRlLFxuICB0aGVtZTogJ3NrZXcnXG59O1xuIiwibGV0IGxvY2FsZXMgPSB7XG4gICdlbi1HQic6IHtcbiAgICBzaG9ydFdlZWtkYXlOYW1lczogJ1N1X01vX1R1X1dlX1RoX0ZyX1NhJy5zcGxpdCgnXycpLFxuICAgIGxvbmdXZWVrZGF5TmFtZXM6ICdTdW5kYXlfTW9uZGF5X1R1ZXNkYXlfV2VkbmVzZGF5X1RodXJzZGF5X0ZyaWRheV9TYXR1cmRheScuc3BsaXQoJ18nKSxcbiAgICBsb25nTW9udGhOYW1lczogJ0phbnVhcnlfRmVicnVhcnlfTWFyY2hfQXByaWxfTWF5X0p1bmVfSnVseV9BdWd1c3RfU2VwdGVtYmVyX09jdG9iZXJfTm92ZW1iZXJfRGVjZW1iZXInLnNwbGl0KCdfJyksXG4gICAgc2hvcnRNb250aE5hbWVzOiAnSmFuX0ZlYl9NYXJfQXByX01heV9KdW5fSnVsX0F1Z19TZXBfT2N0X05vdl9EZWMnLnNwbGl0KCdfJyksXG4gICAgZm9ybWF0RGF0ZTogJyViICVkLCAlWScsXG4gICAgY3VycmVuY3k6ICdHQlAnLFxuICAgIG1pblN0YXk6ICclbnVtYmVyKyBuaWdodHMnLFxuICAgIG1heFN0YXk6ICclbnVtYmVyLSBuaWdodHMnLFxuICAgIGhhc0ludmFsaWRNaW5TdGF5OiAnbWluaW11bSBzdGF5OiAlbnVtYmVyIG5pZ2h0cycsXG4gICAgaGFzSW52YWxpZE1heFN0YXk6ICdtYXhpbXVtIHN0YXk6ICVudW1iZXIgbmlnaHRzJyxcbiAgICBoYXNJbnZhbGlkRGF5czogJ2Jvb2tlZCBhbHJlYWR5JyxcbiAgICBzdGFydE9mV2VlazogMFxuICB9LFxuICAnZW4tVVMnOiB7XG4gICAgc2hvcnRXZWVrZGF5TmFtZXM6ICdTdV9Nb19UdV9XZV9UaF9Gcl9TYScuc3BsaXQoJ18nKSxcbiAgICBsb25nV2Vla2RheU5hbWVzOiAnU3VuZGF5X01vbmRheV9UdWVzZGF5X1dlZG5lc2RheV9UaHVyc2RheV9GcmlkYXlfU2F0dXJkYXknLnNwbGl0KCdfJyksXG4gICAgbG9uZ01vbnRoTmFtZXM6ICdKYW51YXJ5X0ZlYnJ1YXJ5X01hcmNoX0FwcmlsX01heV9KdW5lX0p1bHlfQXVndXN0X1NlcHRlbWJlcl9PY3RvYmVyX05vdmVtYmVyX0RlY2VtYmVyJy5zcGxpdCgnXycpLFxuICAgIHNob3J0TW9udGhOYW1lczogJ0phbl9GZWJfTWFyX0Fwcl9NYXlfSnVuX0p1bF9BdWdfU2VwX09jdF9Ob3ZfRGVjJy5zcGxpdCgnXycpLFxuICAgIGZvcm1hdERhdGU6ICclYiAlZCwgJVknLFxuICAgIGN1cnJlbmN5OiAnVVNEJyxcbiAgICBtaW5TdGF5OiAnJW51bWJlcisgbmlnaHRzJyxcbiAgICBtYXhTdGF5OiAnJW51bWJlci0gbmlnaHRzJyxcbiAgICBoYXNJbnZhbGlkTWluU3RheTogJ21pbmltdW0gc3RheTogJW51bWJlciBuaWdodHMnLFxuICAgIGhhc0ludmFsaWRNYXhTdGF5OiAnbWF4aW11bSBzdGF5OiAlbnVtYmVyIG5pZ2h0cycsXG4gICAgaGFzSW52YWxpZERheXM6ICdib29rZWQgYWxyZWFkeScsXG4gICAgc3RhcnRPZldlZWs6IDFcbiAgfSxcbiAgJ2RlLURFJzoge1xuICAgIHNob3J0V2Vla2RheU5hbWVzOiAnU29fTW9fRGlfTWlfRG9fRnJfU2EnLnNwbGl0KCdfJyksXG4gICAgbG9uZ1dlZWtkYXlOYW1lczogJ1Nvbm50YWdfTW9udGFnX0RpZW5zdGFnX01pdHR3b2NoX0Rvbm5lcnN0YWdfRnJlaXRhZ19TYW1zdGFnJy5zcGxpdCgnXycpLFxuICAgIGxvbmdNb250aE5hbWVzOiAnSmFudWFyX0ZlYnJ1YXJfTcOkcnpfQXByaWxfTWFpX0p1bmlfSnVsaV9BdWd1c3RfU2VwdGVtYmVyX09rdG9iZXJfTm92ZW1iZXJfRGV6ZW1iZXInLnNwbGl0KCdfJyksXG4gICAgc2hvcnRNb250aE5hbWVzOiAnSmFuX0ZlYl9Nw6RyX0Fwcl9NYWlfSnVuX0p1bF9BdWdfU2VwX09rdF9Ob3ZfRGV6Jy5zcGxpdCgnXycpLFxuICAgIGZvcm1hdERhdGU6ICclYiAlZCwgJVknLFxuICAgIGN1cnJlbmN5OiAnRVVSJyxcbiAgICBtaW5TdGF5OiAnJW51bWJlcisgbsOkY2h0ZScsXG4gICAgbWF4U3RheTogJyVudW1iZXItIG7DpGNodGUnLFxuICAgIGhhc0ludmFsaWRNaW5TdGF5OiAnbWluZGVzdGF1ZmVudGhhbHQ6ICVudW1iZXIgTsOkY2h0ZScsXG4gICAgaGFzSW52YWxpZE1heFN0YXk6ICdtYXhpbWFsZXIgQXVmZW50aGFsdDogJW51bWJlciBOw6RjaHRlJyxcbiAgICBoYXNJbnZhbGlkRGF5czogJ3NjaG9uIGdlYnVjaHQnLFxuICAgIHN0YXJ0T2ZXZWVrOiAxXG4gIH0sXG4gICdlcy1FUyc6IHtcbiAgICBzaG9ydFdlZWtkYXlOYW1lczogJ0RvX0x1X01hX01pX0p1X1ZpX1PDoScuc3BsaXQoJ18nKSxcbiAgICBsb25nV2Vla2RheU5hbWVzOiAnZG9taW5nb19sdW5lc19tYXJ0ZXNfbWnDqXJjb2xlc19qdWV2ZXNfdmllcm5lc19zw6FiYWRvJy5zcGxpdCgnXycpLFxuICAgIGxvbmdNb250aE5hbWVzOiAnZW5lcm9fZmVicmVyb19tYXJ6b19hYnJpbF9tYXlvX2p1bmlvX2p1bGlvX2Fnb3N0b19zZXB0aWVtYnJlX29jdHVicmVfbm92aWVtYnJlX2RpY2llbWJyZScuc3BsaXQoJ18nKSxcbiAgICBzaG9ydE1vbnRoTmFtZXM6ICdlbmVfZmViX21hcl9hYnJfbWF5X2p1bl9qdWxfYWdvX3NlcF9vY3Rfbm92X2RpYycuc3BsaXQoJ18nKSxcbiAgICBmb3JtYXREYXRlOiAnJWIgJWQsICVZJyxcbiAgICBjdXJyZW5jeTogJ0VVUicsXG4gICAgbWluU3RheTogJyVudW1iZXIrIG5vY2hlcycsXG4gICAgbWF4U3RheTogJyVudW1iZXItIG5vY2hlcycsXG4gICAgaGFzSW52YWxpZE1pblN0YXk6ICdlc3RhbmNpYSBtw61uaW1hOiAlbnVtYmVyIG5vY2hlcycsXG4gICAgaGFzSW52YWxpZE1heFN0YXk6ICdlc3RhbmNpYSBtw6F4aW1hOiAlbnVtYmVyIG5vY2hlcycsXG4gICAgaGFzSW52YWxpZERheXM6ICd5YSByZXNlcnZhZG8nLFxuICAgIHN0YXJ0T2ZXZWVrOiAxXG4gIH0sXG4gICdmci1GUic6IHtcbiAgICBzaG9ydFdlZWtkYXlOYW1lczogJ0RpX0x1X01hX01lX0plX1ZlX1NhJy5zcGxpdCgnXycpLFxuICAgIGxvbmdXZWVrZGF5TmFtZXM6ICdkaW1hbmNoZV9sdW5kaV9tYXJkaV9tZXJjcmVkaV9qZXVkaV92ZW5kcmVkaV9zYW1lZGknLnNwbGl0KCdfJyksXG4gICAgbG9uZ01vbnRoTmFtZXM6ICdqYW52aWVyX2bDqXZyaWVyX21hcnNfYXZyaWxfbWFpX2p1aW5fanVpbGxldF9hb8O7dF9zZXB0ZW1icmVfb2N0b2JyZV9ub3ZlbWJyZV9kw6ljZW1icmUnLnNwbGl0KCdfJyksXG4gICAgc2hvcnRNb250aE5hbWVzOiAnamFuX2bDqXZfbWFyX2F2cl9tYWlfanVpbl9qdWlsX2Fvw7tfc2VwX29jdF9ub3ZfZMOpYycuc3BsaXQoJ18nKSxcbiAgICBmb3JtYXREYXRlOiAnJWQgJWIsICVZJyxcbiAgICBjdXJyZW5jeTogJ0VVUicsXG4gICAgbWluU3RheTogJyVudW1iZXIrIG51aXRzJyxcbiAgICBtYXhTdGF5OiAnJW51bWJlci0gbnVpdHMnLFxuICAgIGhhc0ludmFsaWRNaW5TdGF5OiAnc8Opam91ciBtaW5pbXVtIDogJW51bWJlciBudWl0cycsXG4gICAgaGFzSW52YWxpZE1heFN0YXk6ICdzw6lqb3VyIG1heGltdW0gOiAlbnVtYmVyIG51aXRzJyxcbiAgICBoYXNJbnZhbGlkRGF5czogJ2TDqWrDoCByw6lzZXJ2w6knLFxuICAgIHN0YXJ0T2ZXZWVrOiAxXG4gIH0sXG4gICdpdC1JVCc6IHtcbiAgICBzaG9ydFdlZWtkYXlOYW1lczogJ0RvX0x1X01hX01lX0dpX1ZlX1NhJy5zcGxpdCgnXycpLFxuICAgIGxvbmdXZWVrZGF5TmFtZXM6ICdkb21lbmljYV9sdW5lZMOsX21hcnRlZMOsX21lcmNvbGVkw6xfZ2lvdmVkw6xfdmVuZXJkw6xfc2FiYXRvJy5zcGxpdCgnXycpLFxuICAgIGxvbmdNb250aE5hbWVzOiAnZ2VubmFpb19mZWJicmFpb19tYXJ6b19hcHJpbGVfbWFnZ2lvX2dpdWdub19sdWdsaW9fYWdvc3RvX3NldHRlbWJyZV9vdHRvYnJlX25vdmVtYnJlX2RpY2VtYnJlJy5zcGxpdCgnXycpLFxuICAgIHNob3J0TW9udGhOYW1lczogJ2dlbl9mZWJfbWFyX2Fwcl9tYWdfZ2l1X2x1Z19hZ29fc2V0X290dF9ub3ZfZGljJy5zcGxpdCgnXycpLFxuICAgIGZvcm1hdERhdGU6ICclYiAlZCwgJVknLFxuICAgIGN1cnJlbmN5OiAnRVVSJyxcbiAgICBtaW5TdGF5OiAnJW51bWJlcisgbm90dGkuJyxcbiAgICBtYXhTdGF5OiAnJW51bWJlci0gbm90dGknLFxuICAgIGhhc0ludmFsaWRNaW5TdGF5OiAnc29nZ2lvcm5vIG1pbmltOiAlbnVtYmVyIG5vdHRpJyxcbiAgICBoYXNJbnZhbGlkTWF4U3RheTogJ3NvZ2dpb3JubyBtYXNzaW1vOiAlbnVtYmVyIG5vdHRpJyxcbiAgICBoYXNJbnZhbGlkRGF5czogJ2dpw6AgcHJlbm90YXRvJyxcbiAgICBzdGFydE9mV2VlazogMVxuICB9LFxuICAnc3YtU0UnOiB7XG4gICAgc2hvcnRXZWVrZGF5TmFtZXM6ICdzw7ZfbcOlX3RpX29uX3RvX2ZyX2zDticuc3BsaXQoJ18nKSxcbiAgICBsb25nV2Vla2RheU5hbWVzOiAnc8O2bmRhZ19tw6VuZGFnX3Rpc2RhZ19vbnNkYWdfdG9yc2RhZ19mcmVkYWdfbMO2cmRhZycuc3BsaXQoJ18nKSxcbiAgICBsb25nTW9udGhOYW1lczogJ2phbnVhcmlfZmVicnVhcmlfbWFyc19hcHJpbF9tYWpfanVuaV9qdWxpX2F1Z3VzdGlfc2VwdGVtYmVyX29rdG9iZXJfbm92ZW1iZXJfZGVjZW1iZXInLnNwbGl0KCdfJyksXG4gICAgc2hvcnRNb250aE5hbWVzOiAnamFuX2ZlYl9tYXJfYXByX21hal9qdW5fanVsX2F1Z19zZXBfb2t0X25vdl9kZWMnLnNwbGl0KCdfJyksXG4gICAgZm9ybWF0RGF0ZTogJyViICVkLCAlWScsXG4gICAgY3VycmVuY3k6ICdFVVInLFxuICAgIG1pblN0YXk6ICclbnVtYmVyKyBuw6R0dGVyJyxcbiAgICBtYXhTdGF5OiAnJW51bWJlci0gbsOkdHRlcicsXG4gICAgaGFzSW52YWxpZE1pblN0YXk6ICdrb3J0YXN0ZSB2aXN0ZWxzZTogJW51bWJlciBuw6R0dGVyJyxcbiAgICBoYXNJbnZhbGlkTWF4U3RheTogJ21heGltw6FsbnkgcG9ieXQ6ICVudW1iZXIgbsOkdHRlcicsXG4gICAgaGFzSW52YWxpZERheXM6ICdyZWRhbiBib2thdCcsXG4gICAgc3RhcnRPZldlZWs6IDFcbiAgfSxcbiAgJ3J1LVJVJzoge1xuICAgIHNob3J0V2Vla2RheU5hbWVzOiAn0JLRgV/Qn9C9X9CS0YJf0KHRgF/Qp9GCX9Cf0YJf0KHQsScuc3BsaXQoJ18nKSxcbiAgICBsb25nV2Vla2RheU5hbWVzOiAn0JLQvtGB0LrRgNC10YHQtdC90YzQtV/Qn9C+0L3QtdC00LXQu9GM0L3QuNC6X9CS0YLQvtGA0L3QuNC6X9Ch0YDQtdC00LBf0KfQtdGC0LLQtdGA0LNf0J/Rj9GC0L3QuNGG0LBf0KHRg9Cx0LHQvtGC0LAnLnNwbGl0KCdfJyksXG4gICAgbG9uZ01vbnRoTmFtZXM6ICfQr9C90LLQsNGA0Yxf0KTQtdCy0YDQsNC70Yxf0JzQsNGA0YJf0JDQv9GA0LXQu9GMX9Cc0LDQuV/QmNGO0L3RjF/QmNGO0LvRjF/QkNCy0LPRg9GB0YJf0KHQtdC90YLRj9Cx0YDRjF/QntC60YLRj9Cx0YDRjF/QndC+0Y/QsdGA0Yxf0JTQtdC60LDQsdGA0YwnLnNwbGl0KCdfJyksXG4gICAgc2hvcnRNb250aE5hbWVzOiAn0K/QvdCyX9Ck0LXQsl/QnNCw0YBf0JDQv9GAX9Cc0LDQuV/QmNGO0L1f0JjRjtC7X9CQ0LLQs1/QodC10L1f0J7QutGCX9Cd0L7Rj1/QlNC10LonLnNwbGl0KCdfJyksXG4gICAgZm9ybWF0RGF0ZTogJyVkLiViLiVZJyxcbiAgICBjdXJyZW5jeTogJ9Cg0YPQsS4nLFxuICAgIG1pblN0YXk6ICclbnVtYmVyKyDQvdC+0YcuJyxcbiAgICBtYXhTdGF5OiAnJW51bWJlci0g0L3QvtGHLicsXG4gICAgaGFzSW52YWxpZE1pblN0YXk6ICfQvNC40L3QuNC80LDQu9GM0L3QvtC1INC/0YDQtdCx0YvQstCw0L3QuDogJW51bWJlciDQvdC+0YfQuCcsXG4gICAgaGFzSW52YWxpZE1heFN0YXk6ICfQvNCw0LrRgdC40LzQsNC70YzQvdC+0LUg0L/RgNC10LHRi9Cy0LDQvdC40LU6ICVudW1iZXIg0L3QvtGH0LgnLFxuICAgIGhhc0ludmFsaWREYXlzOiAn0LfQsNCx0YDQvtC90LjRgNC+0LLQsNC90L4g0YPQttC1JyxcbiAgICBzdGFydE9mV2VlazogMVxuICB9LFxuICAncGwtUEwnOiB7XG4gICAgc2hvcnRXZWVrZGF5TmFtZXM6ICdOZF9Qbl9XdF/FmnJfQ3pfUHRfU28nLnNwbGl0KCdfJyksXG4gICAgbG9uZ1dlZWtkYXlOYW1lczogJ25pZWR6aWVsYV9wb25pZWR6aWHFgmVrX3d0b3Jla1/Fm3JvZGFfY3p3YXJ0ZWtfcGnEhXRla19zb2JvdGEnLnNwbGl0KCdfJyksXG4gICAgbG9uZ01vbnRoTmFtZXM6ICdzdHljemXFhF9sdXR5X21hcnplY19rd2llY2llxYRfbWFqX2N6ZXJ3aWVjX2xpcGllY19zaWVycGllxYRfd3J6ZXNpZcWEX3Bhxbpkemllcm5pa19saXN0b3BhZF9ncnVkemllxYQnLnNwbGl0KCdfJyksXG4gICAgc2hvcnRNb250aE5hbWVzOiAnc3R5X2x1dF9tYXJfa3dpX21hal9jemVfbGlwX3NpZV93cnpfcGHFul9saXNfZ3J1Jy5zcGxpdCgnXycpLFxuICAgIGZvcm1hdERhdGU6ICclZC4lYi4lWScsXG4gICAgY3VycmVuY3k6ICdQTE4nLFxuICAgIG1pblN0YXk6ICclbnVtYmVyKyBub2NlJyxcbiAgICBtYXhTdGF5OiAnJW51bWJlci0gbm9jZScsXG4gICAgaGFzSW52YWxpZE1pblN0YXk6ICdtaW5pbWFsbnkgcG9ieTogJW51bWJlciBub2NlJyxcbiAgICBoYXNJbnZhbGlkTWF4U3RheTogJ21ha3N5bWFsbnkgcG9ieXQ6ICVudW1iZXIgbm9jZScsXG4gICAgaGFzSW52YWxpZERheXM6ICdqdcW8IHphcmV6ZXJ3b3dhbmUnLFxuICAgIHN0YXJ0T2ZXZWVrOiAxXG4gIH0sXG4gICdubC1OTCc6IHtcbiAgICBzaG9ydFdlZWtkYXlOYW1lczogJ1pvX01hX0RpX1dvX0RvX1ZyX1phJy5zcGxpdCgnXycpLFxuICAgIGxvbmdXZWVrZGF5TmFtZXM6ICdab25kYWdfTWFhbmRhZ19EaW5zZGFnX1dvZW5zZGFnX0RvbmRlcmRhZ19WcmlqZGFnX1phdGVyZGFnJy5zcGxpdCgnXycpLFxuICAgIGxvbmdNb250aE5hbWVzOiAnSmFudWFyaV9GZWJydWFyaV9NYWFydF9BcHJpbF9NZWlfSnVuaV9KdWxpX0F1Z3VzdHVzX1NlcHRlbWJlcl9Pa3RvYmVyX05vdmVtYmVyX0RlY2VtYmVyJy5zcGxpdCgnXycpLFxuICAgIHNob3J0TW9udGhOYW1lczogJ0phbl9GZWJfTWFhX0Fwcl9NZWlfSnVuX0p1bF9BdWdfU2VwX09rdF9Ob3ZfRGVjJy5zcGxpdCgnXycpLFxuICAgIGZvcm1hdERhdGU6ICclYiAlZCwgJVknLFxuICAgIGN1cnJlbmN5OiAnRVVSJyxcbiAgICBtaW5TdGF5OiAnJW51bWJlcisgbmFjaHRlbicsXG4gICAgbWF4U3RheTogJyVudW1iZXItIG5hY2h0ZW4nLFxuICAgIGhhc0ludmFsaWRNaW5TdGF5OiAnbWluaW1hYWwgdmVyYmxpamY6ICVudW1iZXIgbmFjaHRlbicsXG4gICAgaGFzSW52YWxpZE1heFN0YXk6ICdtYXhpbWFhbCB2ZXJibGlqZjogJW51bWJlciBuYWNodGVuJyxcbiAgICBoYXNJbnZhbGlkRGF5czogJ2FsIGdlYm9la3QnLFxuICAgIHN0YXJ0T2ZXZWVrOiAxXG4gIH1cbn07XG5cbi8vIEFkZCBhbGlhc2VzXG5sb2NhbGVzID0gT2JqZWN0LmFzc2lnbih7XG4gIGVuOiBsb2NhbGVzWydlbi1VUyddLFxuICBkZTogbG9jYWxlc1snZGUtREUnXSxcbiAgZXM6IGxvY2FsZXNbJ2VzLUVTJ10sXG4gIGZyOiBsb2NhbGVzWydmci1GUiddLFxuICBpdDogbG9jYWxlc1snaXQtSVQnXSxcbiAgc3Y6IGxvY2FsZXNbJ3N2LVNWJ10sXG4gIHJ1OiBsb2NhbGVzWydydS1SVSddLFxuICBwbDogbG9jYWxlc1sncGwtUEwnXSxcbiAgbmw6IGxvY2FsZXNbJ25sLU5MJ11cbn0sIGxvY2FsZXMpO1xuXG5leHBvcnQgZGVmYXVsdCBsb2NhbGVzO1xuIiwiaW1wb3J0IHN0eWxlcyBmcm9tICcuL3N0eWxlcy9jYWxlbmRhci5zY3NzJztcblxuZXhwb3J0IGNvbnN0IG1haW4gID0gYDxkaXYgY2xhc3M9XCIke3N0eWxlcy5tb250aHNXcmFwcGVyfVwiPjwvZGl2PmA7XG5cbmV4cG9ydCBjb25zdCB0b29sdGlwID0gYDxkaXYgY2xhc3M9XCIke3N0eWxlcy50b29sdGlwfVwiIHJvbGU9XCJ0b29sdGlwXCI+PHNwYW4+PC9zcGFuPjxkaXYgY2xhc3M9XCIke3N0eWxlcy50b29sdGlwQXJyb3d9XCIgZGF0YS1wb3BwZXItYXJyb3c9XCJ0cnVlXCI+PC9kaXY+PC9kaXY+YDtcblxuZXhwb3J0IGNvbnN0IG1vbnRoID0gYFxuICA8ZGl2IGNsYXNzPVwiJHtzdHlsZXMubUNlbGx9IGpzLW1vbnRoXCI+XG4gICAgPHRhYmxlIGNsYXNzPVwiJHtzdHlsZXMubW9udGh9XCIgcm9sZT1cIm1vbnRoXCI+XG4gICAgICA8Y2FwdGlvbj48ZGl2IGNsYXNzPVwiJHtzdHlsZXMuY2FwdGlvbn1cIj48L2Rpdj48L2NhcHRpb24+XG4gICAgICA8dGhlYWQgY2xhc3M9XCIke3N0eWxlcy50YWJsZUhlYWRlcn1cIj48dHI+PC90cj48L3RoZWFkPlxuICAgICAgPHRib2R5IGNsYXNzPVwiJHtzdHlsZXMuYm9keX1cIj48L3Rib2R5PlxuICAgIDwvdGFibGU+XG4gIDwvZGl2PlxuYDtcblxuZXhwb3J0IGNvbnN0IHdlZWtEYXlMYWJlbCA9IChsYWJlbCkgPT4gYDx0aCBjbGFzcz1cIiR7c3R5bGVzLnRofVwiPiR7bGFiZWx9PC90aD5gO1xuXG5leHBvcnQgY29uc3Qgd2Vla0RheSA9IChcbiAgbGFiZWwsXG4gIGRpc2FibGVkLFxuICBpc0F2YWlsYWJsZUluLFxuICBpc0F2YWlsYWJsZU91dCxcbiAgaXNDdXJyZW50RGF5LFxuICBtaW5TdGF5LFxuICBtaW5TdGF5VCxcbiAgbWF4U3RheSxcbiAgbWF4U3RheVQsXG4gIHJhdGUsXG4gIHJhdGVUXG4pID0+IGBcbiAgPHRkICR7ZGlzYWJsZWQgPyBgZGF0YS1kaXNhYmxlZD0ke2Rpc2FibGVkfWAgOiAnZGF0YS1lbmFibGVkJ31cbiAgICAgICAke2lzQXZhaWxhYmxlT3V0ID8gJ2RhdGEtYXZhaWxhYmxlLW91dCcgOiAnJ31cbiAgICAgICAke2lzQXZhaWxhYmxlSW4gPyAnZGF0YS1hdmFpbGFibGUtaW4nIDogJyd9XG4gICAgICAgJHttaW5TdGF5ID8gYGRhdGEtbWluLXN0YXk9JHttaW5TdGF5fWAgOiAnJ31cbiAgICAgICAke21heFN0YXkgPyBgZGF0YS1tYXgtc3RheT0ke21heFN0YXl9YCA6ICcnfVxuICAgICAgIGRhdGEtdmFsdWU9XCIke2xhYmVsfVwiXG4gICAgICAgY2xhc3M9XCIke3N0eWxlcy5jZWxsfSAke2lzQ3VycmVudERheSA/IHN0eWxlcy50b2RheSA6ICcnfVwiPlxuICAgICAgIDxkaXYgY2xhc3M9XCIke3N0eWxlcy5jbnR9XCIgcm9sZT1cImRheS12YWx1ZVwiPlxuICAgICAgICAke2xhYmVsfVxuICAgICAgICA8ZGl2IGNsYXNzPVwiJHtzdHlsZXMuaW5mb31cIj5cbiAgICAgICAgICAke3JhdGUgPyBgPHNwYW4gZGF0YS1yYXRlPiR7cmF0ZVR9PC9zcGFuPmAgOiAnJ31cbiAgICAgICAgICAke21pblN0YXkgJiYgbWluU3RheVQgPyBgPHNwYW4gZGF0YS1taW4tc3RheS10PiR7bWluU3RheVR9PC9zcGFuPmAgOiAnJ31cbiAgICAgICAgICAke21heFN0YXkgJiYgbWF4U3RheVQgPyBgPHNwYW4gZGF0YS1tYXgtc3RheS10PiR7bWF4U3RheVR9PC9zcGFuPmAgOiAnJ31cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgPC90ZD5cbmA7XG5cbmV4cG9ydCBjb25zdCBmb3J3YXJkID0gYFxuICA8YnV0dG9uIGNsYXNzPVwiJHtzdHlsZXMuZm9yd2FyZH1cIiByb2xlPVwiYnV0dG9uXCI+XG4gICAgPHN2ZyB2aWV3Qm94PVwiMCAwIDEwMDAgMTAwMFwiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiPlxuICAgICAgPHBhdGggZD1cIk02OTQuNCAyNDIuNGwyNDkuMSAyNDkuMWMxMSAxMSAxMSAyMSAwIDMyTDY5NC40IDc3Mi43Yy01IDUtMTAgNy0xNiA3cy0xMS0yLTE2LTdjLTExLTExLTExLTIxIDAtMzJsMjEwLjEtMjEwLjFINjcuMWMtMTMgMC0yMy0xMC0yMy0yM3MxMC0yMyAyMy0yM2g4MDUuNEw2NjIuNCAyNzQuNWMtMjEtMjEuMSAxMS01My4xIDMyLTMyLjF6XCI+PC9wYXRoPlxuICAgIDwvc3ZnPlxuICA8L2J1dHRvbj5cbmA7XG5cbmV4cG9ydCBjb25zdCBiYWNrID0gYFxuICA8YnV0dG9uIGNsYXNzPVwiJHtzdHlsZXMuYmFja31cIiByb2xlPVwiYnV0dG9uXCI+XG4gICAgPHN2ZyB2aWV3Qm94PVwiMCAwIDEwMDAgMTAwMFwiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiPlxuICAgICAgPHBhdGggZD1cIk0zMzYuMiAyNzQuNWwtMjEwLjEgMjEwaDgwNS40YzEzIDAgMjMgMTAgMjMgMjNzLTEwIDIzLTIzIDIzSDEyNi4xbDIxMC4xIDIxMC4xYzExIDExIDExIDIxIDAgMzItNSA1LTEwIDctMTYgN3MtMTEtMi0xNi03bC0yNDkuMS0yNDljLTExLTExLTExLTIxIDAtMzJsMjQ5LjEtMjQ5LjFjMjEtMjEuMSA1MyAxMC45IDMyIDMyelwiPjwvcGF0aD5cbiAgICA8L3N2Zz5cbiAgPC9idXR0b24+XG5gO1xuXG5leHBvcnQgY29uc3Qgd2Vla0RheVBsYWNlaG9sZGVyID0gJzx0ZD48L3RkPic7XG5cbi8qIGVzbGludCBhcnJvdy1ib2R5LXN0eWxlOiAwICovXG5leHBvcnQgY29uc3Qgd2Vla1JvdyA9IChudW0pID0+IHtcbiAgcmV0dXJuIHtcbiAgICBvcGVuOiBgPHRyIGNsYXNzPVwianMtYm9keS1yb3ctJHtudW19XCI+YCxcbiAgICBjbG9zZTogJzwvdHI+J1xuICB9O1xufTtcbiIsIi8qIGdsb2JhbCBjb25zb2xlICovXG5pbXBvcnQgeyBzdHJmdGltZSwgc3RycHRpbWUgfSBmcm9tICdzdHJ0aW1lJztcbmltcG9ydCB7IGlzIH0gZnJvbSAnd2lkZ2V0LXV0aWxzJztcblxuZXhwb3J0IGNvbnN0IGRhdGVUb0lzbyA9ICh5ZWFyLCBtb250aCwgZGF5LCBpc1N0cmluZyA9IGZhbHNlKSA9PiB7XG4gIGZ1bmN0aW9uIHBhZChudW1iZXIpIHtcbiAgICBpZiAobnVtYmVyIDwgMTApIHtcbiAgICAgIHJldHVybiBgMCR7bnVtYmVyfWA7XG4gICAgfVxuICAgIHJldHVybiBudW1iZXI7XG4gIH1cblxuICBpZiAoaXNTdHJpbmcpIHtcbiAgICByZXR1cm4gYCR7eWVhcn0tJHtwYWQobW9udGggKyAxKX0tJHtwYWQoZGF5KX1gO1xuICB9XG5cbiAgbGV0IGRhdGUgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgZGF5LCAxMiwgMCwgMCk7XG4gIHJldHVybiBkYXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IGRhdGVUb0FycmF5ID0gKHZhbCwgZm9ybWF0LCBsb2NhbGUpID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBkYXRlID0gc3RycHRpbWUodmFsLCBmb3JtYXQsIGxvY2FsZSk7XG4gICAgY29uc3QgYSAgICA9IHN0cmZ0aW1lKGRhdGUsICclWS0lbS0lZCcpLnNwbGl0KCctJyk7XG5cbiAgICByZXR1cm4gW1xuICAgICAgcGFyc2VJbnQoYVswXSksIC8vIHllYXJcbiAgICAgIHBhcnNlSW50KGFbMV0gLSAxKSwgLy8gbW9udGggaW5kZXhcbiAgICAgIHBhcnNlSW50KGFbMl0pIC8vIGRheVxuICAgIF07XG4gIH0gY2F0Y2goZSkge1xuICAgIGlmIChpcyhlLm1lc3NhZ2UpKSB7XG4gICAgICBjb25zb2xlLmxvZyhlLm1lc3NhZ2UpO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBpc0xhdGVyID0gKHN0YXJ0LCBlbmQpID0+IGRhdGVUb0lzbyguLi5zdGFydCwgdHJ1ZSkgPCBkYXRlVG9Jc28oLi4uZW5kLCB0cnVlKTtcblxuZXhwb3J0IGNvbnN0IGlzQ3VycmVudCA9IChzdGFydCwgZW5kKSA9PiBkYXRlVG9Jc28oLi4uc3RhcnQsIHRydWUpID09IGRhdGVUb0lzbyguLi5lbmQsIHRydWUpO1xuXG5leHBvcnQgY29uc3QgbW9udGhEaWZmID0gKHN0YXJ0LCBlbmQpID0+IHtcbiAgcmV0dXJuIGVuZC5nZXRNb250aCgpIC0gc3RhcnQuZ2V0TW9udGgoKSArICgxMiAqIChlbmQuZ2V0RnVsbFllYXIoKSAtIHN0YXJ0LmdldEZ1bGxZZWFyKCkpKTtcbn07XG5cbmV4cG9ydCBjb25zdCB2YWxpZGF0aW9uT2ZDZWxsID0gKGNlbGwpID0+IHtcbiAgaWYgKGlzKGNlbGwuZGF0YXNldC5lbmFibGVkKSB8fCBpcyhjZWxsLmRhdGFzZXQuYXZhaWxhYmxlSW4pIHx8IGlzKGNlbGwuZGF0YXNldC5hdmFpbGFibGVPdXQpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59O1xuXG5leHBvcnQgY29uc3QgdEZvcm1hdHRlciA9ICh2YWx1ZSwgc3RyKSA9PiBzdHIucmVwbGFjZSgnJW51bWJlcicsIHZhbHVlKTtcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfR0VUX1VSTF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9nZXRVcmwuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX1VSTF9JTVBPUlRfMF9fXyA9IG5ldyBVUkwoXCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGY4LCUzQ3N2ZyB4bWxucz0lMjdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyUyNyB2aWV3Qm94PSUyNzAgMCAzMiAzMC45NyUyNyUzRSUzQ3BhdGggZD0lMjdNMzIsMTUuNDhhMTYuNTIsMTYuNTIsMCwwLDEtMS4zNyw2LjI4LDE2LjM1LDE2LjM1LDAsMCwxLTksOC42MywxNS44NywxNS44NywwLDAsMS0xNy4zLTMuNzhBMTUuNDMsMTUuNDMsMCwwLDEsNC43Miw0LjcyLDE1LDE1LDAsMCwxLDE1LjQ5LjUyYTE0Ljc2LDE0Ljc2LDAsMCwxLDEwLjQsNC41NkExNC43NywxNC43NywwLDAsMSwyOSw5LjlhMTQuNDUsMTQuNDUsMCwwLDEsLjg1LDMuMzVoLjEzQTIuMDYsMi4wNiwwLDAsMSwzMiwxNS4zMWEuOTEuOTEsMCwwLDEsMCwuMTdaTTI4LjcyLDEwYTE0LjI3LDE0LjI3LDAsMCwwLTMuMi00LjU1LDE0LDE0LDAsMCwwLTEwLTMuOUExMy43MiwxMy43MiwwLDAsMCwzLDEwLjNhMTMuNDMsMTMuNDMsMCwwLDAsLjI0LDEwLjI3LDEzLjA1LDEzLjA1LDAsMCwwLDEyLjI4LDcuODIsMTIuOTIsMTIuOTIsMCwwLDAsNC44OC0xLjEsMTIuNjUsMTIuNjUsMCwwLDAsNC4wNi0yLjg3LDEyLjQ4LDEyLjQ4LDAsMCwwLDIuNjItNC4xNSwxMi4yNCwxMi4yNCwwLDAsMCwuODItNC43OWgwYS45MS45MSwwLDAsMSwwLS4xNywyLjA3LDIuMDcsMCwwLDEsMS44NC0yLjA1LDE0LjI3LDE0LjI3LDAsMCwwLTEtMy4yNlolMjcgdHJhbnNmb3JtPSUyN3RyYW5zbGF0ZSUyODAgLTAuNTElMjklMjcvJTNFJTNDL3N2ZyUzRVwiLCBpbXBvcnQubWV0YS51cmwpO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xudmFyIF9fX0NTU19MT0FERVJfVVJMX1JFUExBQ0VNRU5UXzBfX18gPSBfX19DU1NfTE9BREVSX0dFVF9VUkxfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfVVJMX0lNUE9SVF8wX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcblxcbiAgICBsb2FkZXJcXG5cXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG5ALXdlYmtpdC1rZXlmcmFtZXMgQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fYm9va2luZ3N5bmMtc3BpbiB7XFxuICBmcm9tIHtcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7IH1cXG4gIHRvIHtcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOyB9IH1cXG5cXG5Aa2V5ZnJhbWVzIEJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2Jvb2tpbmdzeW5jLXNwaW4ge1xcbiAgZnJvbSB7XFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XFxuICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpOyB9XFxuICB0byB7XFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsgfSB9XFxuXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyOjpiZWZvcmUge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdG9wOiAwO1xcbiAgbGVmdDogMDtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpO1xcbiAgY29udGVudDogJyc7IH1cXG5cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXI6OmFmdGVyIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogNTAlO1xcbiAgbGVmdDogNTAlO1xcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcXG4gIGJhY2tncm91bmQtc2l6ZTogMTAwJTtcXG4gIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtcXG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIiArIF9fX0NTU19MT0FERVJfVVJMX1JFUExBQ0VNRU5UXzBfX18gKyBcIik7XFxuICBoZWlnaHQ6IDIwcHg7XFxuICB3aWR0aDogMjBweDtcXG4gIG1hcmdpbjogLTEwcHggMCAwIC0xMHB4O1xcbiAgY29udGVudDogJyc7XFxuICAtd2Via2l0LWFuaW1hdGlvbjogQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fYm9va2luZ3N5bmMtc3BpbiAycyBpbmZpbml0ZSBsaW5lYXI7XFxuICBhbmltYXRpb246IEJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2Jvb2tpbmdzeW5jLXNwaW4gMnMgaW5maW5pdGUgbGluZWFyO1xcbiAgYW5pbWF0aW9uLXBsYXktc3RhdGU6IHBhdXNlZDsgfVxcblxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcjo6YmVmb3JlLCAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXI6OmFmdGVyIHtcXG4gIHotaW5kZXg6IDEwMDA7XFxuICBvcGFjaXR5OiAwO1xcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xcbiAgLXdlYmtpdC10cmFuc2l0aW9uOiBvcGFjaXR5IDAuMjVzIGVhc2UtaW4tb3V0O1xcbiAgLW8tdHJhbnNpdGlvbjogb3BhY2l0eSAwLjI1cyBlYXNlLWluLW91dDtcXG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMC4yNXMgZWFzZS1pbi1vdXQ7IH1cXG5cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fbG9hZGluZzo6YmVmb3JlLCAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fbG9hZGluZzo6YWZ0ZXIge1xcbiAgb3BhY2l0eTogMTtcXG4gIHZpc2liaWxpdHk6IHZpc2libGU7XFxuICBhbmltYXRpb24tcGxheS1zdGF0ZTogcnVubmluZzsgfVxcblxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcblxcbiAgICBkcm9wZG93blxcblxcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhci5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19kcm9wQmFzaWMge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgZGlzcGxheTogbm9uZTtcXG4gIG1heC13aWR0aDogMTAwJTtcXG4gIGJveC1zaGFkb3c6IDFweCA1cHggOXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMik7XFxuICBib3JkZXI6IDFweCBzb2xpZCAjZTBlMGUwO1xcbiAgYmFja2dyb3VuZDogI2ZmZjtcXG4gIG1hcmdpbjogMDtcXG4gIHBhZGRpbmc6IDFlbTtcXG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xcbiAgbGluZS1oZWlnaHQ6IDEuNWVtO1xcbiAgei1pbmRleDogMTA7IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhci5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19kcm9wQmFzaWMuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fdmlzaWJsZSB7XFxuICAgIGRpc3BsYXk6IGJsb2NrOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fZHJvcEJhc2ljIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYXB0aW9uIHtcXG4gICAgbWFyZ2luLWJvdHRvbTogLjdlbTsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2Ryb3BCYXNpYyAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fZm9yd2FyZCxcXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhci5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19kcm9wQmFzaWMgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2JhY2sge1xcbiAgICB0b3A6IDFlbTtcXG4gICAgbGVmdDogMWVtOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fZHJvcEJhc2ljIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19mb3J3YXJkIHtcXG4gICAgbGVmdDogYXV0bztcXG4gICAgcmlnaHQ6IDFlbTsgfVxcblxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NlbGw6Zmlyc3QtY2hpbGQge1xcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogNHB4O1xcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNHB4OyB9XFxuXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2VsbDpsYXN0LWNoaWxkIHtcXG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA0cHg7XFxuICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNHB4OyB9XFxuXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2VsbDo6YmVmb3JlLCAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jZWxsOjphZnRlciB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBkaXNwbGF5OiBibG9jaztcXG4gIHdpZHRoOiAxMDAlO1xcbiAgbWFyZ2luOiAwO1xcbiAgY29udGVudDogJyc7XFxuICAtd2Via2l0LXRyYW5zZm9ybTogc2tldygtMzBkZWcpO1xcbiAgLW1zLXRyYW5zZm9ybTogc2tldygtMzBkZWcpO1xcbiAgdHJhbnNmb3JtOiBza2V3KC0zMGRlZyk7XFxuICBib3JkZXItcmFkaXVzOiA2cHg7XFxuICB6LWluZGV4OiAwO1xcbiAgaGVpZ2h0OiBjYWxjKDEwMCUgKyAycHgpO1xcbiAgdG9wOiAtMXB4OyB9XFxuXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2VsbDo6YmVmb3JlIHtcXG4gIGxlZnQ6IC01NSU7IH1cXG5cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jZWxsOjphZnRlciB7XFxuICBsZWZ0OiA1NSU7IH1cXG5cXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG5cXG4gICAgc2VsZWN0aW9ucywgbGVmdCAtIGNlbnRlciAtIHJpZ2h0XFxuXFxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuICBjZWxscyBkaXNhYmxlZFxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gW2RhdGEtZGlzYWJsZWQ9XFxcImxlZnRcXFwiXTo6YWZ0ZXIge1xcbiAgYmFja2dyb3VuZDogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItZGlzYWJsZWQtYmctY29sb3IsICNmMGYwZjApOyB9XFxuXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSBbZGF0YS1kaXNhYmxlZD1cXFwiY2VudGVyXFxcIl0ge1xcbiAgYmFja2dyb3VuZDogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItZGlzYWJsZWQtYmctY29sb3IsICNmMGYwZjApO1xcbiAgY29sb3I6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWRpc2FibGVkLWNvbG9yLCAjYmZiZmJmKTsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSBbZGF0YS1kaXNhYmxlZD1cXFwiY2VudGVyXFxcIl06OmJlZm9yZSwgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSBbZGF0YS1kaXNhYmxlZD1cXFwiY2VudGVyXFxcIl06OmFmdGVyIHtcXG4gICAgZGlzcGxheTogbm9uZTtcXG4gICAgYmFja2dyb3VuZDogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItZGlzYWJsZWQtYmctY29sb3IsICNmMGYwZjApOyB9XFxuXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSBbZGF0YS1kaXNhYmxlZD1cXFwicmlnaHRcXFwiXTo6YmVmb3JlIHtcXG4gIGJhY2tncm91bmQ6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWRpc2FibGVkLWJnLWNvbG9yLCAjZjBmMGYwKTsgfVxcblxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiAgY2VsbHMgaGlnaGxpZ2h0ZWRcXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIFtkYXRhLWhpZ2hsaWdodGVkPVxcXCJsZWZ0XFxcIl06OmFmdGVyIHtcXG4gIGRpc3BsYXk6IGJsb2NrO1xcbiAgYmFja2dyb3VuZDogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItaGlnaGxpZ2h0ZWQtYmctY29sb3IsICNiN2NhZmIpOyB9XFxuXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSBbZGF0YS1oaWdobGlnaHRlZD1cXFwiY2VudGVyXFxcIl0ge1xcbiAgYmFja2dyb3VuZDogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItaGlnaGxpZ2h0ZWQtYmctY29sb3IsICNiN2NhZmIpO1xcbiAgY29sb3I6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWhpZ2hsaWdodGVkLWNvbG9yLCAjMzczNzM3KTsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSBbZGF0YS1oaWdobGlnaHRlZD1cXFwiY2VudGVyXFxcIl06OmJlZm9yZSwgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSBbZGF0YS1oaWdobGlnaHRlZD1cXFwiY2VudGVyXFxcIl06OmFmdGVyIHtcXG4gICAgZGlzcGxheTogbm9uZTtcXG4gICAgYmFja2dyb3VuZDogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItaGlnaGxpZ2h0ZWQtYmctY29sb3IsICNiN2NhZmIpOyB9XFxuXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSBbZGF0YS1oaWdobGlnaHRlZD1cXFwicmlnaHRcXFwiXTo6YmVmb3JlIHtcXG4gIGRpc3BsYXk6IGJsb2NrO1xcbiAgYmFja2dyb3VuZDogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItaGlnaGxpZ2h0ZWQtYmctY29sb3IsICNiN2NhZmIpOyB9XFxuXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuICBjZWxscyBpbnZhbGlkXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSBbZGF0YS1pbnZhbGlkPVxcXCJsZWZ0XFxcIl0ge1xcbiAgYmFja2dyb3VuZDogbm9uZTsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSBbZGF0YS1pbnZhbGlkPVxcXCJsZWZ0XFxcIl06OmJlZm9yZSB7XFxuICAgIGRpc3BsYXk6IGJsb2NrOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIFtkYXRhLWludmFsaWQ9XFxcImxlZnRcXFwiXTo6YWZ0ZXIge1xcbiAgICBkaXNwbGF5OiBibG9jaztcXG4gICAgYmFja2dyb3VuZDogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItaW52YWxpZC1iZy1jb2xvciwgI2UzZTNlMyk7IH1cXG5cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIFtkYXRhLWludmFsaWQ9XFxcImNlbnRlclxcXCJdIHtcXG4gIGJhY2tncm91bmQ6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWludmFsaWQtYmctY29sb3IsICNlM2UzZTMpO1xcbiAgY29sb3I6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWludmFsaWQtY29sb3IsICNiMmIyYjIpOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIFtkYXRhLWludmFsaWQ9XFxcImNlbnRlclxcXCJdOjpiZWZvcmUsIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gW2RhdGEtaW52YWxpZD1cXFwiY2VudGVyXFxcIl06OmFmdGVyIHtcXG4gICAgZGlzcGxheTogbm9uZTtcXG4gICAgYmFja2dyb3VuZDogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItaW52YWxpZC1iZy1jb2xvciwgI2UzZTNlMyk7IH1cXG5cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIFtkYXRhLWludmFsaWQ9XFxcInJpZ2h0XFxcIl0ge1xcbiAgYmFja2dyb3VuZDogbm9uZTsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSBbZGF0YS1pbnZhbGlkPVxcXCJyaWdodFxcXCJdOjpiZWZvcmUge1xcbiAgICBkaXNwbGF5OiBibG9jaztcXG4gICAgYmFja2dyb3VuZDogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItaW52YWxpZC1iZy1jb2xvciwgI2UzZTNlMyk7IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gW2RhdGEtaW52YWxpZD1cXFwicmlnaHRcXFwiXTo6YWZ0ZXIge1xcbiAgICBkaXNwbGF5OiBibG9jazsgfVxcblxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiAgY2VsbCBob3ZlciBkaXJlY3RcXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fZGlyZWN0W2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSBbZGF0YS1ob3ZlcmVkXSB7XFxuICBiYWNrZ3JvdW5kOiBub25lOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fZGlyZWN0W2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSBbZGF0YS1ob3ZlcmVkXTo6YmVmb3JlIHtcXG4gICAgZGlzcGxheTogYmxvY2s7IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19kaXJlY3RbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIFtkYXRhLWhvdmVyZWRdOjphZnRlciB7XFxuICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1oaWdobGlnaHRlZC1iZy1jb2xvciwgI2I3Y2FmYik7IH1cXG5cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fZGlyZWN0W2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSBbZGF0YS1ob3ZlcmVkLW9mZnNldF0ge1xcbiAgYmFja2dyb3VuZDogbm9uZTsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2RpcmVjdFtkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gW2RhdGEtaG92ZXJlZC1vZmZzZXRdOjpiZWZvcmUge1xcbiAgICBkaXNwbGF5OiBibG9jaztcXG4gICAgYmFja2dyb3VuZDogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItaGlnaGxpZ2h0ZWQtYmctY29sb3IsICNiN2NhZmIpOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fZGlyZWN0W2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSBbZGF0YS1ob3ZlcmVkLW9mZnNldF06OmFmdGVyIHtcXG4gICAgZGlzcGxheTogYmxvY2s7IH1cXG5cXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4gIGNlbGwgaG92ZXIgcmV2ZXJzZWRcXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fcmV2ZXJzZWRbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIFtkYXRhLWhvdmVyZWRdIHtcXG4gIGJhY2tncm91bmQ6IG5vbmU7IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19yZXZlcnNlZFtkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gW2RhdGEtaG92ZXJlZF06OmJlZm9yZSB7XFxuICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1oaWdobGlnaHRlZC1iZy1jb2xvciwgI2I3Y2FmYik7IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19yZXZlcnNlZFtkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gW2RhdGEtaG92ZXJlZF06OmFmdGVyIHtcXG4gICAgZGlzcGxheTogYmxvY2s7IH1cXG5cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fcmV2ZXJzZWRbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIFtkYXRhLWhvdmVyZWQtb2Zmc2V0XSB7XFxuICBiYWNrZ3JvdW5kOiBub25lOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fcmV2ZXJzZWRbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIFtkYXRhLWhvdmVyZWQtb2Zmc2V0XTo6YmVmb3JlIHtcXG4gICAgZGlzcGxheTogYmxvY2s7IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19yZXZlcnNlZFtkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gW2RhdGEtaG92ZXJlZC1vZmZzZXRdOjphZnRlciB7XFxuICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1oaWdobGlnaHRlZC1iZy1jb2xvciwgI2I3Y2FmYik7IH1cXG5cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwiYmFzaWNcXFwiXSAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2VsbDo6YmVmb3JlLCAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwiYmFzaWNcXFwiXSAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2VsbDo6YWZ0ZXIge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgZGlzcGxheTogYmxvY2s7XFxuICB3aWR0aDogMTAwJTtcXG4gIGhlaWdodDogMTAwJTtcXG4gIHRvcDogMDtcXG4gIG1hcmdpbjogMDtcXG4gIGNvbnRlbnQ6ICcnO1xcbiAgei1pbmRleDogMDsgfVxcblxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcblxcbiAgICBzZWxlY3Rpb25zLCBsZWZ0IC0gY2VudGVyIC0gcmlnaHRcXG5cXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4gIGNlbGxzIGRpc2FibGVkXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcImJhc2ljXFxcIl0gW2RhdGEtZGlzYWJsZWQ9XFxcImNlbnRlclxcXCJdIHtcXG4gIHRleHQtZGVjb3JhdGlvbjogbGluZS10aHJvdWdoO1xcbiAgY29sb3I6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWRpc2FibGVkLWNvbG9yLCAjYmZiZmJmKTsgfVxcblxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiAgY2VsbHMgaGlnaGxpZ2h0ZWRcXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwiYmFzaWNcXFwiXSBbZGF0YS1oaWdobGlnaHRlZD1cXFwibGVmdFxcXCJdIHtcXG4gIGNvbG9yOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1oaWdobGlnaHRlZC1jb2xvciwgIzM3MzczNyk7IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJiYXNpY1xcXCJdIFtkYXRhLWhpZ2hsaWdodGVkPVxcXCJsZWZ0XFxcIl06OmJlZm9yZSB7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWhpZ2hsaWdodGVkLWJnLWNvbG9yLCAjYjdjYWZiKTtcXG4gICAgb3BhY2l0eTogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItY2VsbC1iZy1vcGFjaXR5LCAwLjUpO1xcbiAgICB3aWR0aDogNTAlO1xcbiAgICBsZWZ0OiA1MCU7IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJiYXNpY1xcXCJdIFtkYXRhLWhpZ2hsaWdodGVkPVxcXCJsZWZ0XFxcIl06OmFmdGVyIHtcXG4gICAgYmFja2dyb3VuZDogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItaGlnaGxpZ2h0ZWQtYmctY29sb3IsICNiN2NhZmIpO1xcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1jZWxsLWJvcmRlci1yYWRpdXMsIDZweCk7IH1cXG5cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwiYmFzaWNcXFwiXSBbZGF0YS1oaWdobGlnaHRlZD1cXFwiY2VudGVyXFxcIl0ge1xcbiAgY29sb3I6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWhpZ2hsaWdodGVkLWNvbG9yLCAjMzczNzM3KTsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcImJhc2ljXFxcIl0gW2RhdGEtaGlnaGxpZ2h0ZWQ9XFxcImNlbnRlclxcXCJdOjpiZWZvcmUge1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1oaWdobGlnaHRlZC1iZy1jb2xvciwgI2I3Y2FmYik7XFxuICAgIG9wYWNpdHk6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWNlbGwtYmctb3BhY2l0eSwgMC41KTsgfVxcblxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJiYXNpY1xcXCJdIFtkYXRhLWhpZ2hsaWdodGVkPVxcXCJyaWdodFxcXCJdIHtcXG4gIGNvbG9yOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1oaWdobGlnaHRlZC1jb2xvciwgIzM3MzczNyk7IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJiYXNpY1xcXCJdIFtkYXRhLWhpZ2hsaWdodGVkPVxcXCJyaWdodFxcXCJdOjpiZWZvcmUge1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1oaWdobGlnaHRlZC1iZy1jb2xvciwgI2I3Y2FmYik7XFxuICAgIG9wYWNpdHk6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWNlbGwtYmctb3BhY2l0eSwgMC41KTtcXG4gICAgd2lkdGg6IDUwJTtcXG4gICAgcmlnaHQ6IDUwJTsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcImJhc2ljXFxcIl0gW2RhdGEtaGlnaGxpZ2h0ZWQ9XFxcInJpZ2h0XFxcIl06OmFmdGVyIHtcXG4gICAgYmFja2dyb3VuZDogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItaGlnaGxpZ2h0ZWQtYmctY29sb3IsICNiN2NhZmIpO1xcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1jZWxsLWJvcmRlci1yYWRpdXMsIDZweCk7IH1cXG5cXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4gIGNlbGxzIGludmFsaWRcXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwiYmFzaWNcXFwiXSBbZGF0YS1pbnZhbGlkPVxcXCJsZWZ0XFxcIl0ge1xcbiAgY29sb3I6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWludmFsaWQtY29sb3IsICNiMmIyYjIpOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwiYmFzaWNcXFwiXSBbZGF0YS1pbnZhbGlkPVxcXCJsZWZ0XFxcIl06OmJlZm9yZSB7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWludmFsaWQtYmctY29sb3IsICNlM2UzZTMpO1xcbiAgICBvcGFjaXR5OiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1jZWxsLWJnLW9wYWNpdHksIDAuNSk7XFxuICAgIHdpZHRoOiA1MCU7XFxuICAgIGxlZnQ6IDUwJTsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcImJhc2ljXFxcIl0gW2RhdGEtaW52YWxpZD1cXFwibGVmdFxcXCJdOjphZnRlciB7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWludmFsaWQtYmctY29sb3IsICNlM2UzZTMpO1xcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1jZWxsLWJvcmRlci1yYWRpdXMsIDZweCk7IH1cXG5cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwiYmFzaWNcXFwiXSBbZGF0YS1pbnZhbGlkPVxcXCJjZW50ZXJcXFwiXSB7XFxuICBjb2xvcjogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItaW52YWxpZC1jb2xvciwgI2IyYjJiMik7IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJiYXNpY1xcXCJdIFtkYXRhLWludmFsaWQ9XFxcImNlbnRlclxcXCJdOjpiZWZvcmUge1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1pbnZhbGlkLWJnLWNvbG9yLCAjZTNlM2UzKTtcXG4gICAgb3BhY2l0eTogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItY2VsbC1iZy1vcGFjaXR5LCAwLjUpOyB9XFxuXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcImJhc2ljXFxcIl0gW2RhdGEtaW52YWxpZD1cXFwicmlnaHRcXFwiXSB7XFxuICBjb2xvcjogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItaW52YWxpZC1jb2xvciwgI2IyYjJiMik7IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJiYXNpY1xcXCJdIFtkYXRhLWludmFsaWQ9XFxcInJpZ2h0XFxcIl06OmJlZm9yZSB7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWludmFsaWQtYmctY29sb3IsICNlM2UzZTMpO1xcbiAgICBvcGFjaXR5OiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1jZWxsLWJnLW9wYWNpdHksIDAuNSk7XFxuICAgIHdpZHRoOiA1MCU7XFxuICAgIHJpZ2h0OiA1MCU7IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJiYXNpY1xcXCJdIFtkYXRhLWludmFsaWQ9XFxcInJpZ2h0XFxcIl06OmFmdGVyIHtcXG4gICAgYmFja2dyb3VuZDogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItaW52YWxpZC1iZy1jb2xvciwgI2UzZTNlMyk7XFxuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWNlbGwtYm9yZGVyLXJhZGl1cywgNnB4KTsgfVxcblxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiAgY2VsbCBob3Zlclxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJiYXNpY1xcXCJdIFtkYXRhLWhvdmVyZWRdOm5vdChbZGF0YS1kaXNhYmxlZD1cXFwiY2VudGVyXFxcIl0pIHtcXG4gIGNvbG9yOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1oaWdobGlnaHRlZC1jb2xvciwgIzM3MzczNyk7IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJiYXNpY1xcXCJdIFtkYXRhLWhvdmVyZWRdOm5vdChbZGF0YS1kaXNhYmxlZD1cXFwiY2VudGVyXFxcIl0pOjphZnRlciB7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWhpZ2hsaWdodGVkLWJnLWNvbG9yLCAjYjdjYWZiKTtcXG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItY2VsbC1ib3JkZXItcmFkaXVzLCA2cHgpOyB9XFxuXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuXFxuICAgIGNvbG9yc1xcblxcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBmb250OiAxcmVtLzEuNCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmO1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgYmFja2dyb3VuZDogI2ZmZjsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYXB0aW9uIHtcXG4gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAtd2Via2l0LWJveC1wYWNrOiBjZW50ZXI7XFxuICAgIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjtcXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7XFxuICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7XFxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgIGxpbmUtaGVpZ2h0OiAycmVtO1xcbiAgICBmb250LXdlaWdodDogNzAwO1xcbiAgICBtYXJnaW4tYm90dG9tOiAyLjNlbTtcXG4gICAgcGFkZGluZy10b3A6IDA7XFxuICAgIHRleHQtYWxpZ246IGNlbnRlcjsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X190b29sdGlwIHtcXG4gICAgYmFja2dyb3VuZDogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItdG9vbHRpcC1iZy1jb2xvciwgIzMzMyk7XFxuICAgIGNvbG9yOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci10b29sdGlwLWNvbG9yLCAjZmZmKTtcXG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XFxuICAgIHBhZGRpbmc6IDRweCA4cHg7XFxuICAgIGZvbnQtc2l6ZTogMTNweDtcXG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xcbiAgICB6LWluZGV4OiA1MDA7XFxuICAgIHBvaW50ZXItZXZlbnRzOiBub25lOyB9XFxuICAgIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fdG9vbHRpcCAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fdG9vbHRpcEFycm93IHtcXG4gICAgICB2aXNpYmlsaXR5OiBoaWRkZW47IH1cXG4gICAgICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3Rvb2x0aXAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3Rvb2x0aXBBcnJvdywgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X190b29sdGlwIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X190b29sdGlwQXJyb3c6OmJlZm9yZSB7XFxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgICAgICB3aWR0aDogOHB4O1xcbiAgICAgICAgaGVpZ2h0OiA4cHg7XFxuICAgICAgICBiYWNrZ3JvdW5kOiBpbmhlcml0OyB9XFxuICAgICAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X190b29sdGlwIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X190b29sdGlwQXJyb3c6OmJlZm9yZSB7XFxuICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xcbiAgICAgICAgY29udGVudDogJyc7XFxuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7IH1cXG4gICAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X190b29sdGlwW2RhdGEtcG9wcGVyLXBsYWNlbWVudF49J3RvcCddID4gLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3Rvb2x0aXBBcnJvdyB7XFxuICAgICAgYm90dG9tOiAtNHB4OyB9XFxuICAgIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fdG9vbHRpcFtkYXRhLXBvcHBlci1wbGFjZW1lbnRePSdib3R0b20nXSA+IC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X190b29sdGlwQXJyb3cge1xcbiAgICAgIHRvcDogLTRweDsgfVxcbiAgICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3Rvb2x0aXBbZGF0YS1wb3BwZXItcGxhY2VtZW50Xj0nbGVmdCddID4gLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3Rvb2x0aXBBcnJvdyB7XFxuICAgICAgcmlnaHQ6IC00cHg7IH1cXG4gICAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X190b29sdGlwW2RhdGEtcG9wcGVyLXBsYWNlbWVudF49J3JpZ2h0J10gPiAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fdG9vbHRpcEFycm93IHtcXG4gICAgICBsZWZ0OiAtNHB4OyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX21vbnRoc1dyYXBwZXIge1xcbiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gICAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIC1tcy1mbGV4LXdyYXA6IHdyYXA7XFxuICAgIGZsZXgtd3JhcDogd3JhcDtcXG4gICAgZ2FwOiAyZW07IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fbUNlbGwge1xcbiAgICBmb250LXNpemU6IDAuODc1ZW07XFxuICAgIC13ZWJraXQtYm94LWZsZXg6IDE7XFxuICAgIC1tcy1mbGV4OiAxIDEgMjUlO1xcbiAgICBmbGV4OiAxIDEgMjUlOyB9XFxuICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogOTkwcHgpIHtcXG4gICAgICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX21DZWxsIHtcXG4gICAgICAgIC13ZWJraXQtYm94LWZsZXg6IDE7XFxuICAgICAgICAtbXMtZmxleDogMSAxIDEwMCU7XFxuICAgICAgICBmbGV4OiAxIDEgMTAwJTsgfSB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX21vbnRoIHtcXG4gICAgYm9yZGVyLWNvbGxhcHNlOiBzZXBhcmF0ZTtcXG4gICAgYm9yZGVyLXNwYWNpbmc6IDAgMC4yZW07XFxuICAgIHBhZGRpbmc6IDA7XFxuICAgIG1hcmdpbjogMDtcXG4gICAgd2lkdGg6IDEwMCU7IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fdGFibGVIZWFkZXIsXFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2JvZHkge1xcbiAgICBtYXJnaW46IDA7IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fdGgge1xcbiAgICBmb250LXNpemU6IDAuODVlbTtcXG4gICAgY29sb3I6ICNhYWFhYWE7XFxuICAgIGhlaWdodDogMjVweDtcXG4gICAgd2lkdGg6IDMwcHg7XFxuICAgIHRleHQtYWxpZ246IGNlbnRlcjsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jZWxsIHtcXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgICBwYWRkaW5nOiAwO1xcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICAgIGJvcmRlcjogMDtcXG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcXG4gICAgY29sb3I6ICM0NDQ0NDQ7XFxuICAgIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7XFxuICAgIG92ZXJmbG93OiBoaWRkZW47XFxuICAgIHdpZHRoOiAzMHB4OyB9XFxuICAgIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2VsbC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X190b2RheSB7XFxuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY250IHtcXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gICAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIC13ZWJraXQtYm94LXBhY2s6IGNlbnRlcjtcXG4gICAgLW1zLWZsZXgtcGFjazogY2VudGVyO1xcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcXG4gICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgei1pbmRleDogMTtcXG4gICAgZm9udC1zaXplOiAxZW07XFxuICAgIGZvbnQtd2VpZ2h0OiBpbmhlcml0OyB9XFxuICAgIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY250OjphZnRlciB7XFxuICAgICAgY29udGVudDogJyc7XFxuICAgICAgZGlzcGxheTogYmxvY2s7XFxuICAgICAgbWFyZ2luLXRvcDogMTAwJTsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19pbmZvIHtcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICBib3R0b206IDA7XFxuICAgIGxlZnQ6IDA7XFxuICAgIGZvbnQtc2l6ZTogMC42NWVtO1xcbiAgICBwYWRkaW5nOiAxcHggM3B4O1xcbiAgICBjb2xvcjogcmdiYSg2MCwgNjAsIDYwLCAwLjUpO1xcbiAgICByaWdodDogMDsgfVxcbiAgICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2luZm8gPiBzcGFuIHtcXG4gICAgICBkaXNwbGF5OiBibG9jaztcXG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7IH1cXG5cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fZm9jdXMsXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2Rpc2FibGVkLFxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19zZWxlY3RlZCxcXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fcmV2ZXJzZWQsXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2RpcmVjdCxcXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fc2VsZWN0aW5nUmV2ZXJzZWQsXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3NlbGVjdGluZ0RpcmVjdCxcXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fYWN0aW9uc0VuYWJsZWQsXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2hpZ2hsaWdodGVkLFxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19pbnZhbGlkIHtcXG4gIGNvbG9yOiBpbmhlcml0OyB9XFxuXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuICBjZWxsIGhvdmVyIGN1cnNvcnNcXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS1zZWxlY3RhYmxlPVxcXCJ0cnVlXFxcIl0gLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NlbGwgKiB7XFxuICBjdXJzb3I6IHBvaW50ZXI7IH1cXG5cXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG5cXG4gICAgYnV0dG9uc1xcblxcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fZm9yd2FyZCxcXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2JhY2sge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdG9wOiAwO1xcbiAgbGVmdDogMDtcXG4gIGhlaWdodDogMnJlbTtcXG4gIHdpZHRoOiAyM3B4O1xcbiAgZmlsbDogIzQ0NDQ0NDtcXG4gIHBhZGRpbmc6IDA7XFxuICBib3JkZXItcmFkaXVzOiAxcHg7XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxuICB6LWluZGV4OiAyOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2ZvcndhcmQgc3ZnLFxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19iYWNrIHN2ZyB7XFxuICAgIGhlaWdodDogaW5oZXJpdDtcXG4gICAgd2lkdGg6IGluaGVyaXQ7IH1cXG5cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2ZvcndhcmQge1xcbiAgcmlnaHQ6IDA7XFxuICBsZWZ0OiBhdXRvOyB9XFxuXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19mb3J3YXJkOmFjdGl2ZSxcXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2ZvcndhcmQ6Zm9jdXMsXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19iYWNrOmFjdGl2ZSxcXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2JhY2s6Zm9jdXMge1xcbiAgb3V0bGluZTogbm9uZTsgfVxcblxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fZm9yd2FyZDpob3ZlcixcXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2JhY2s6aG92ZXIge1xcbiAgZmlsbDogIzM4OTVkOTsgfVxcblxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fZm9yd2FyZFtkaXNhYmxlZF0sXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19mb3J3YXJkW2Rpc2FibGVkXTpob3ZlcixcXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2JhY2tbZGlzYWJsZWRdLFxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fYmFja1tkaXNhYmxlZF06aG92ZXIge1xcbiAgb3BhY2l0eTogMC41O1xcbiAgY3Vyc29yOiBkZWZhdWx0O1xcbiAgZmlsbDogIzQ0NDQ0NDsgfVxcblwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3NyYy9zdHlsZXMvbG9hZGluZy5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9zcmMvc3R5bGVzL2NhbGVuZGFyLnNjc3NcIixcIndlYnBhY2s6Ly8uL3NyYy9zdHlsZXMvc3ZnLXVyaS5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9zcmMvc3R5bGVzL192YXJpYWJsZXMuc2Nzc1wiLFwid2VicGFjazovLy4vc3JjL3N0eWxlcy9kcm9wLnNjc3NcIixcIndlYnBhY2s6Ly8uL3NyYy9zdHlsZXMvdGhlbWUtc2tldy5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9zcmMvc3R5bGVzL3RoZW1lLWJhc2ljLnNjc3NcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBQUE7Ozs7d0RDSXdEO0FERXhEO0VBQ0U7SUFDRSwrQkFBK0I7SUFDL0IsdUJBQXVCLEVBQUE7RUFHekI7SUFDRSxpQ0FBaUM7SUFDakMseUJBQXlCLEVBQUEsRUFBQTs7QUFJN0I7RUFDRTtJQUNFLCtCQUErQjtJQUMvQix1QkFBdUIsRUFBQTtFQUV6QjtJQUNFLGlDQUFpQztJQUNqQyx5QkFBeUIsRUFBQSxFQUFB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QWJkOztJQWdCSSxlQUFlO0lBQ2YsY0FBYyxFQUFBOztBQWpCbEI7RUFzQkksUUFBUTtFQUNSLFVBQVUsRUFBQTs7QUF2QmQ7Ozs7RUE4QkksYUFBYSxFQUFBOztBQTlCakI7O0VBbUNJLGFFek0yQixFQUFBOztBRnNLL0I7Ozs7RUEwQ0ksWUFBWTtFQUNaLGVBQWU7RUFDZixhRXhPMkIsRUFBQVwiLFwic291cmNlc0NvbnRlbnRcIjpbXCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG5cXG4gICAgbG9hZGVyXFxuXFxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuXFxuQC13ZWJraXQta2V5ZnJhbWVzIGJvb2tpbmdzeW5jLXNwaW4ge1xcbiAgZnJvbSB7XFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XFxuICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xcbiAgfVxcblxcbiAgdG8ge1xcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XFxuICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XFxuICB9XFxufVxcblxcbkBrZXlmcmFtZXMgYm9va2luZ3N5bmMtc3BpbiB7XFxuICBmcm9tIHtcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XFxuICB9XFxuICB0byB7XFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcXG4gIH1cXG59XFxuXFxuLmNhbGVuZGFyIHtcXG4gICY6OmJlZm9yZSB7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgdG9wOiAwO1xcbiAgICBsZWZ0OiAwO1xcbiAgICB3aWR0aDogMTAwJTtcXG4gICAgaGVpZ2h0OiAxMDAlO1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKCNmZmYsIC43KTtcXG4gICAgY29udGVudDogJyc7XFxuICB9XFxuXFxuICAmOjphZnRlciB7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgdG9wOiA1MCU7XFxuICAgIGxlZnQ6IDUwJTtcXG4gICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcXG4gICAgYmFja2dyb3VuZC1zaXplOiAxMDAlO1xcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XFxuICAgIGJhY2tncm91bmQtaW1hZ2U6ICRpY29uLXNwaW5uZXItc3ZnO1xcbiAgICBoZWlnaHQ6IDIwcHg7XFxuICAgIHdpZHRoOiAyMHB4O1xcbiAgICBtYXJnaW46IC0xMHB4IDAgMCAtMTBweDtcXG4gICAgY29udGVudDogJyc7XFxuICAgIC13ZWJraXQtYW5pbWF0aW9uOiBib29raW5nc3luYy1zcGluIDJzIGluZmluaXRlIGxpbmVhcjtcXG4gICAgYW5pbWF0aW9uOiBib29raW5nc3luYy1zcGluIDJzIGluZmluaXRlIGxpbmVhcjtcXG4gICAgYW5pbWF0aW9uLXBsYXktc3RhdGU6IHBhdXNlZDtcXG4gIH1cXG5cXG4gICY6OmJlZm9yZSxcXG4gICY6OmFmdGVyIHtcXG4gICAgei1pbmRleDogMTAwMDtcXG4gICAgb3BhY2l0eTogMDtcXG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xcbiAgICAtd2Via2l0LXRyYW5zaXRpb246ICR0cmFuc2l0aW9uO1xcbiAgICAtby10cmFuc2l0aW9uOiAkdHJhbnNpdGlvbjtcXG4gICAgdHJhbnNpdGlvbjogJHRyYW5zaXRpb247XFxuICB9XFxuXFxuICAmLmxvYWRpbmcge1xcbiAgICAmOjpiZWZvcmUsXFxuICAgICY6OmFmdGVyIHtcXG4gICAgICBvcGFjaXR5OiAxO1xcbiAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XFxuICAgICAgYW5pbWF0aW9uLXBsYXktc3RhdGU6IHJ1bm5pbmc7XFxuICAgIH1cXG4gIH1cXG59XFxuXCIsXCJAaW1wb3J0ICdzdmctdXJpJztcXG5AaW1wb3J0ICd2YXJpYWJsZXMnO1xcbkBpbXBvcnQgJ2xvYWRpbmcnO1xcbkBpbXBvcnQgJ2Ryb3AnO1xcbkBpbXBvcnQgJ3RoZW1lLXNrZXcnO1xcbkBpbXBvcnQgJ3RoZW1lLWJhc2ljJztcXG5cXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG5cXG4gICAgY29sb3JzXFxuXFxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuXFxuLmNhbGVuZGFyIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGZvbnQ6IDFyZW0vMS40IEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBiYWNrZ3JvdW5kOiAkY2FsZW5kYXItYmctY29sb3I7XFxuXFxuICAuY2FwdGlvbiB7XFxuICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyO1xcbiAgICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7XFxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyO1xcbiAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyO1xcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICBsaW5lLWhlaWdodDogMnJlbTtcXG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcXG4gICAgbWFyZ2luLWJvdHRvbTogMi4zZW07XFxuICAgIHBhZGRpbmctdG9wOiAwO1xcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICB9XFxuXFxuICAudG9vbHRpcCB7XFxuICAgIGJhY2tncm91bmQ6ICR0b29sdGlwLWJnLWNvbG9yO1xcbiAgICBjb2xvcjogJHRvb2x0aXAtY29sb3I7XFxuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xcbiAgICBwYWRkaW5nOiA0cHggOHB4O1xcbiAgICBmb250LXNpemU6IDEzcHg7XFxuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcXG4gICAgei1pbmRleDogNTAwO1xcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcXG5cXG4gICAgLnRvb2x0aXBBcnJvdyB7XFxuICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xcblxcbiAgICAgICYsICY6OmJlZm9yZSB7XFxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgICAgICB3aWR0aDogOHB4O1xcbiAgICAgICAgaGVpZ2h0OiA4cHg7XFxuICAgICAgICBiYWNrZ3JvdW5kOiBpbmhlcml0O1xcbiAgICAgIH1cXG5cXG4gICAgICAmOjpiZWZvcmUge1xcbiAgICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcXG4gICAgICAgIGNvbnRlbnQ6ICcnO1xcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpO1xcbiAgICAgIH1cXG4gICAgfVxcblxcbiAgICAmW2RhdGEtcG9wcGVyLXBsYWNlbWVudF49J3RvcCddID4gLnRvb2x0aXBBcnJvdyB7XFxuICAgICAgYm90dG9tOiAtNHB4O1xcbiAgICB9XFxuICAgIFxcbiAgICAmW2RhdGEtcG9wcGVyLXBsYWNlbWVudF49J2JvdHRvbSddID4gLnRvb2x0aXBBcnJvdyB7XFxuICAgICAgdG9wOiAtNHB4O1xcbiAgICB9XFxuICAgIFxcbiAgICAmW2RhdGEtcG9wcGVyLXBsYWNlbWVudF49J2xlZnQnXSA+IC50b29sdGlwQXJyb3cge1xcbiAgICAgIHJpZ2h0OiAtNHB4O1xcbiAgICB9XFxuICAgIFxcbiAgICAmW2RhdGEtcG9wcGVyLXBsYWNlbWVudF49J3JpZ2h0J10gPiAudG9vbHRpcEFycm93IHtcXG4gICAgICBsZWZ0OiAtNHB4O1xcbiAgICB9XFxuICB9XFxuXFxuICAubW9udGhzV3JhcHBlciB7XFxuICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgLW1zLWZsZXgtd3JhcDogd3JhcDtcXG4gICAgZmxleC13cmFwOiB3cmFwO1xcbiAgICBnYXA6IDJlbTtcXG4gIH1cXG5cXG4gIC5tQ2VsbCB7XFxuICAgIGZvbnQtc2l6ZTogMC44NzVlbTtcXG4gICAgLXdlYmtpdC1ib3gtZmxleDogMTtcXG4gICAgLW1zLWZsZXg6IDEgMSAyNSU7XFxuICAgIGZsZXg6IDEgMSAyNSU7XFxuXFxuICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogOTkwcHgpIHtcXG4gICAgICAtd2Via2l0LWJveC1mbGV4OiAxO1xcbiAgICAgIC1tcy1mbGV4OiAxIDEgMTAwJTtcXG4gICAgICBmbGV4OiAxIDEgMTAwJTtcXG4gICAgfVxcbiAgfVxcblxcbiAgLm1vbnRoIHtcXG4gICAgYm9yZGVyLWNvbGxhcHNlOiBzZXBhcmF0ZTtcXG4gICAgYm9yZGVyLXNwYWNpbmc6IDAgMC4yZW07XFxuICAgIHBhZGRpbmc6IDA7XFxuICAgIG1hcmdpbjogMDtcXG4gICAgd2lkdGg6IDEwMCU7XFxuICAgIFxcbiAgfVxcblxcbiAgLnRhYmxlSGVhZGVyLFxcbiAgLmJvZHkge1xcbiAgICBtYXJnaW46IDA7XFxuICB9XFxuXFxuICAudGgge1xcbiAgICBmb250LXNpemU6IDAuODVlbTtcXG4gICAgY29sb3I6ICR0aC1jb2xvcjtcXG4gICAgaGVpZ2h0OiAyNXB4O1xcbiAgICB3aWR0aDogJGNlbGwtd2lkdGg7XFxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gIH1cXG5cXG4gIC5jZWxsIHtcXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgICBwYWRkaW5nOiAwO1xcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICAgIGJvcmRlcjogMDtcXG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcXG4gICAgY29sb3I6ICRjZWxsLWNvbG9yO1xcbiAgICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgICB3aWR0aDogJGNlbGwtd2lkdGg7XFxuXFxuICAgICYudG9kYXkge1xcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xcbiAgICB9XFxuICB9XFxuXFxuICAuY250IHtcXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gICAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIC13ZWJraXQtYm94LXBhY2s6IGNlbnRlcjtcXG4gICAgLW1zLWZsZXgtcGFjazogY2VudGVyO1xcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcXG4gICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgei1pbmRleDogMTtcXG4gICAgZm9udC1zaXplOiAxZW07XFxuICAgIGZvbnQtd2VpZ2h0OiBpbmhlcml0O1xcblxcbiAgICAmOjphZnRlciB7XFxuICAgIGNvbnRlbnQ6ICcnO1xcbiAgICBkaXNwbGF5OiBibG9jaztcXG4gICAgbWFyZ2luLXRvcDogMTAwJTtcXG4gICAgfVxcbiAgfVxcblxcbiAgLmluZm8ge1xcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgIGJvdHRvbTogMDtcXG4gICAgbGVmdDogMDtcXG4gICAgZm9udC1zaXplOiAwLjY1ZW07XFxuICAgIHBhZGRpbmc6IDFweCAzcHg7XFxuICAgIGNvbG9yOiAkaW5mby1jb2xvcjtcXG4gICAgcmlnaHQ6IDA7XFxuXFxuICAgID4gc3BhbiB7XFxuICAgICAgZGlzcGxheTogYmxvY2s7XFxuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgICB9XFxuICB9XFxufVxcblxcbi5mb2N1cyxcXG4uZGlzYWJsZWQsXFxuLnNlbGVjdGVkLFxcbi5yZXZlcnNlZCxcXG4uZGlyZWN0LFxcbi5zZWxlY3RpbmdSZXZlcnNlZCxcXG4uc2VsZWN0aW5nRGlyZWN0LFxcbi5hY3Rpb25zRW5hYmxlZCxcXG4uaGlnaGxpZ2h0ZWQsXFxuLmludmFsaWQge1xcbiAgY29sb3I6IGluaGVyaXQ7XFxufVxcblxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiAgY2VsbCBob3ZlciBjdXJzb3JzXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuXFxuLmNhbGVuZGFyIHtcXG4gIC8vIGN1cnNvciBwb2ludGVyIGlmIGNhbGVuZGFyIGlzIHNlbGVjdGFibGVcXG4gICZbZGF0YS1zZWxlY3RhYmxlPVxcXCJ0cnVlXFxcIl0gLmNlbGwgKiB7XFxuICAgIGN1cnNvcjogcG9pbnRlcjtcXG4gIH1cXG59XFxuXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuXFxuICAgIGJ1dHRvbnNcXG5cXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4uY2FsZW5kYXIge1xcblxcbiAgLmZvcndhcmQsXFxuICAuYmFjayB7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgdG9wOiAwO1xcbiAgICBsZWZ0OiAwO1xcbiAgICBoZWlnaHQ6IDJyZW07XFxuICAgIHdpZHRoOiAyM3B4O1xcbiAgICBmaWxsOiAkYnRuLWZpbGw7XFxuICAgIHBhZGRpbmc6IDA7XFxuICAgIGJvcmRlci1yYWRpdXM6IDFweDtcXG4gICAgY3Vyc29yOiBwb2ludGVyO1xcbiAgICB6LWluZGV4OiAyO1xcblxcbiAgICBzdmcge1xcbiAgICBoZWlnaHQ6IGluaGVyaXQ7XFxuICAgIHdpZHRoOiBpbmhlcml0O1xcbiAgICB9XFxuICB9XFxuXFxuICAuZm9yd2FyZCB7XFxuICAgIHJpZ2h0OiAwO1xcbiAgICBsZWZ0OiBhdXRvO1xcbiAgfVxcblxcbiAgLmZvcndhcmQ6YWN0aXZlLFxcbiAgLmZvcndhcmQ6Zm9jdXMsXFxuICAuYmFjazphY3RpdmUsXFxuICAuYmFjazpmb2N1cyB7XFxuICAgIG91dGxpbmU6IG5vbmU7XFxuICB9XFxuXFxuICAuZm9yd2FyZDpob3ZlcixcXG4gIC5iYWNrOmhvdmVyIHtcXG4gICAgZmlsbDogJGJ0bi1maWxsLWhvdmVyO1xcbiAgfVxcblxcbiAgLmZvcndhcmRbZGlzYWJsZWRdLFxcbiAgLmZvcndhcmRbZGlzYWJsZWRdOmhvdmVyLFxcbiAgLmJhY2tbZGlzYWJsZWRdLFxcbiAgLmJhY2tbZGlzYWJsZWRdOmhvdmVyIHtcXG4gICAgb3BhY2l0eTogMC41O1xcbiAgICBjdXJzb3I6IGRlZmF1bHQ7XFxuICAgIGZpbGw6ICRidG4tZmlsbDtcXG4gIH1cXG59XFxuXCIsXCIvLy8vXFxuLy8vIEhlbHBlciBmdW5jdGlvbiB0byBlYXNpbHkgdXNlIGFuIFNWRyBpbmxpbmUgaW4gQ1NTXFxuLy8vIHdpdGhvdXQgZW5jb2RpbmcgaXQgdG8gYmFzZTY0LCBzYXZpbmcgYnl0ZXMuXFxuLy8vIEl0IGFsc28gaGVscHMgd2l0aCBicm93c2VyIHN1cHBvcnQuXFxuLy8vL1xcblxcbi8vLyBBIHNtYWxsIGZ1bmN0aW9uIGFsbG93aW5nIHNraXBwaW5nIGJhc2U2NCBlbmNvZGluZ1xcbi8vLyBhbmQgc2ltcGx5IHBhc3RpbmcgdGhlIFNWRyBtYXJrdXAgcmlnaHQgaW4gdGhlIENTUy5cXG4vLy8gQGF1dGhvciBKYWtvYiBFcmlrc2VuXFxuLy8vIEBsaW5rIGh0dHA6Ly9jb2RlcGVuLmlvL2pha29iLWUvcGVuL2RvTW9NTFxcbi8vLyBAcGFyYW0ge1N0cmluZ30gJHN2ZyAtIFNWRyBpbWFnZSB0byBlbmNvZGVcXG4vLy8gQHJldHVybiB7U3RyaW5nfSAtIEVuY29kZWQgU1ZHIGRhdGEgdXJpXFxuQGZ1bmN0aW9uIHN2Zy11cmkoJHN2Zykge1xcbiAgICAkZW5jb2RlZDogJyc7XFxuICAgICRzbGljZTogMjAwMDtcXG4gICAgJGluZGV4OiAwO1xcbiAgICAkbG9vcHM6IGNlaWwoc3RyLWxlbmd0aCgkc3ZnKSAvICRzbGljZSk7XFxuXFxuICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGxvb3BzIHtcXG4gICAgICAgICRjaHVuazogc3RyLXNsaWNlKCRzdmcsICRpbmRleCwgJGluZGV4ICsgJHNsaWNlIC0gMSk7XFxuICAgICAgICAkY2h1bms6IHN0ci1yZXBsYWNlKCRjaHVuaywgJ1xcXCInLCBcXFwiJ1xcXCIpO1xcbiAgICAgICAgJGNodW5rOiBzdHItcmVwbGFjZSgkY2h1bmssICc8JywgJyUzQycpO1xcbiAgICAgICAgJGNodW5rOiBzdHItcmVwbGFjZSgkY2h1bmssICc+JywgJyUzRScpO1xcbiAgICAgICAgJGNodW5rOiBzdHItcmVwbGFjZSgkY2h1bmssICcmJywgJyUyNicpO1xcbiAgICAgICAgJGNodW5rOiBzdHItcmVwbGFjZSgkY2h1bmssICcjJywgJyUyMycpO1xcbiAgICAgICAgJGVuY29kZWQ6ICN7JGVuY29kZWR9I3skY2h1bmt9O1xcbiAgICAgICAgJGluZGV4OiAkaW5kZXggKyAkc2xpY2U7XFxuICAgIH1cXG5cXG4gICAgQHJldHVybiB1cmwoXFxcImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsI3skZW5jb2RlZH1cXFwiKTtcXG59XFxuXFxuLy8vIFJlcGxhY2UgYCRzZWFyY2hgIHdpdGggYCRyZXBsYWNlYCBpbiBgJHN0cmluZ2BcXG4vLy8gQGF1dGhvciBIdWdvIEdpcmF1ZGVsXFxuLy8vIEBsaW5rIGh0dHA6Ly9zYXNzbWVpc3Rlci5jb20vZ2lzdC8xYjRmMmRhNTUyNzgzMDA4OGU0ZFxcbi8vLyBAcGFyYW0ge1N0cmluZ30gJHN0cmluZyAtIEluaXRpYWwgc3RyaW5nXFxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkc2VhcmNoIC0gU3Vic3RyaW5nIHRvIHJlcGxhY2VcXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRyZXBsYWNlICgnJykgLSBOZXcgdmFsdWVcXG4vLy8gQHJldHVybiB7U3RyaW5nfSAtIFVwZGF0ZWQgc3RyaW5nXFxuQGZ1bmN0aW9uIHN0ci1yZXBsYWNlKCRzdHJpbmcsICRzZWFyY2gsICRyZXBsYWNlOiAnJykge1xcbiAgICAkaW5kZXg6IHN0ci1pbmRleCgkc3RyaW5nLCAkc2VhcmNoKTtcXG5cXG4gICAgQGlmICRpbmRleCB7XFxuICAgICAgICBAcmV0dXJuIHN0ci1zbGljZSgkc3RyaW5nLCAxLCAkaW5kZXggLSAxKSArICRyZXBsYWNlICsgc3RyLXJlcGxhY2Uoc3RyLXNsaWNlKCRzdHJpbmcsICRpbmRleCArIHN0ci1sZW5ndGgoJHNlYXJjaCkpLCAkc2VhcmNoLCAkcmVwbGFjZSk7XFxuICAgIH1cXG5cXG4gICAgQHJldHVybiAkc3RyaW5nO1xcbn1cXG5cIixcIiRpY29uLXNwaW5uZXItc3ZnOiAgICAgIHN2Zy11cmkoXFxcIjxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgMzIgMzAuOTcnPjxwYXRoIGQ9J00zMiwxNS40OGExNi41MiwxNi41MiwwLDAsMS0xLjM3LDYuMjgsMTYuMzUsMTYuMzUsMCwwLDEtOSw4LjYzLDE1Ljg3LDE1Ljg3LDAsMCwxLTE3LjMtMy43OEExNS40MywxNS40MywwLDAsMSw0LjcyLDQuNzIsMTUsMTUsMCwwLDEsMTUuNDkuNTJhMTQuNzYsMTQuNzYsMCwwLDEsMTAuNCw0LjU2QTE0Ljc3LDE0Ljc3LDAsMCwxLDI5LDkuOWExNC40NSwxNC40NSwwLDAsMSwuODUsMy4zNWguMTNBMi4wNiwyLjA2LDAsMCwxLDMyLDE1LjMxYS45MS45MSwwLDAsMSwwLC4xN1pNMjguNzIsMTBhMTQuMjcsMTQuMjcsMCwwLDAtMy4yLTQuNTUsMTQsMTQsMCwwLDAtMTAtMy45QTEzLjcyLDEzLjcyLDAsMCwwLDMsMTAuM2ExMy40MywxMy40MywwLDAsMCwuMjQsMTAuMjcsMTMuMDUsMTMuMDUsMCwwLDAsMTIuMjgsNy44MiwxMi45MiwxMi45MiwwLDAsMCw0Ljg4LTEuMSwxMi42NSwxMi42NSwwLDAsMCw0LjA2LTIuODcsMTIuNDgsMTIuNDgsMCwwLDAsMi42Mi00LjE1LDEyLjI0LDEyLjI0LDAsMCwwLC44Mi00Ljc5aDBhLjkxLjkxLDAsMCwxLDAtLjE3LDIuMDcsMi4wNywwLDAsMSwxLjg0LTIuMDUsMTQuMjcsMTQuMjcsMCwwLDAtMS0zLjI2WicgdHJhbnNmb3JtPSd0cmFuc2xhdGUoMCAtMC41MSknLz48L3N2Zz5cXFwiKTtcXG5cXG4kYnJlYWtwb2ludC14czogICAgICAgICA5MDBweDtcXG5cXG4kdHJhbnNpdGlvbjogICAgICAgICAgICBvcGFjaXR5IDAuMjVzIGVhc2UtaW4tb3V0O1xcblxcbi8vIHRvb2x0aXBcXG5cXG4kdG9vbHRpcC1iZy1jb2xvcjogICAgICB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci10b29sdGlwLWJnLWNvbG9yLCAjMzMzKTtcXG4kdG9vbHRpcC1jb2xvcjogICAgICAgICB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci10b29sdGlwLWNvbG9yLCAjZmZmKTtcXG5cXG4vLyBjYWxlbmRhclxcblxcbiRjYWxlbmRhci1iZy1jb2xvcjogICAgICNmZmY7XFxuXFxuLy8gY2FsZW5kYXIgY2VsbHNcXG5cXG4kY2VsbC13aWR0aDogICAgICAgICAgICAzMHB4O1xcblxcbiRjZWxsLWNvbG9yOiAgICAgICAgICAgICM0NDQ0NDQ7XFxuXFxuJGRpc2FibGVkLWJnLWNvbG9yOiAgICAgdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItZGlzYWJsZWQtYmctY29sb3IsICNmMGYwZjApO1xcbiRkaXNhYmxlZC1jb2xvcjogICAgICAgIHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWRpc2FibGVkLWNvbG9yLCAjYmZiZmJmKTtcXG5cXG4kaGlnaGxpZ2h0ZWQtYmctY29sb3I6ICB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1oaWdobGlnaHRlZC1iZy1jb2xvciwgbGlnaHRlbigjNTc4NEY1LCAyMCUpKTtcXG4kaGlnaGxpZ2h0ZWQtY29sb3I6ICAgICB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1oaWdobGlnaHRlZC1jb2xvciwgZGFya2VuKCRjZWxsLWNvbG9yLCA1JSkpO1xcblxcbiRpbnZhbGlkLWJnLWNvbG9yOiAgICAgIHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWludmFsaWQtYmctY29sb3IsIGRhcmtlbigjZjBmMGYwLCAgNSUpKTtcXG4kaW52YWxpZC1jb2xvcjogICAgICAgICB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1pbnZhbGlkLWNvbG9yLCBkYXJrZW4oI2JmYmZiZiwgNSUpKTtcXG5cXG4vLyBjYWxlbmRhciB0YWJsZVxcblxcbiRpbmZvLWNvbG9yOiAgICAgICAgICAgIHJnYmEoNjAsIDYwLCA2MCwgMC41KTtcXG5cXG4kdGgtYm9yZGVyLWJvdHRvbTogICAgICAjY2JjYmNiO1xcbiR0aC1jb2xvcjogICAgICAgICAgICAgICNhYWFhYWE7XFxuXFxuLy8gZm9ybVxcblxcbiRidG4tZmlsbDogICAgICAgICAgICAgICRjZWxsLWNvbG9yO1xcbiRidG4tYm9yZGVyOiAgICAgICAgICAgICR0aC1ib3JkZXItYm90dG9tO1xcbiRidG4tZmlsbC1ob3ZlcjogICAgICAgICMzODk1ZDk7XFxuXCIsXCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG5cXG4gICAgZHJvcGRvd25cXG5cXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG5cXG4uY2FsZW5kYXIuZHJvcEJhc2ljIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGRpc3BsYXk6IG5vbmU7XFxuICBtYXgtd2lkdGg6IDEwMCU7XFxuICBib3gtc2hhZG93OiAxcHggNXB4IDlweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpO1xcbiAgYm9yZGVyOiAxcHggc29saWQgI2UwZTBlMDtcXG4gIGJhY2tncm91bmQ6ICNmZmY7XFxuICBtYXJnaW46IDA7XFxuICBwYWRkaW5nOiAxZW07XFxuICBmb250LWZhbWlseTogaW5oZXJpdDtcXG4gIGxpbmUtaGVpZ2h0OiAxLjVlbTtcXG4gIHotaW5kZXg6IDEwO1xcblxcbiAgJi52aXNpYmxlIHtcXG4gICAgZGlzcGxheTogYmxvY2s7XFxuICB9XFxuXFxuICAuY2FwdGlvbiB7XFxuICAgIG1hcmdpbi1ib3R0b206IC43ZW07XFxuICB9XFxuXFxuICAuZm9yd2FyZCxcXG4gIC5iYWNrIHtcXG4gICAgdG9wOiAxZW07XFxuICAgIGxlZnQ6IDFlbTtcXG4gIH1cXG5cXG4gIC5mb3J3YXJkIHtcXG4gICAgbGVmdDogYXV0bztcXG4gICAgcmlnaHQ6IDFlbTtcXG4gIH1cXG59XFxuXCIsXCIuY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIHtcXG4gIC5jZWxsIHtcXG4gICAgJjpmaXJzdC1jaGlsZCB7XFxuICAgICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogNHB4O1xcbiAgICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDRweDtcXG4gICAgfVxcblxcbiAgICAmOmxhc3QtY2hpbGQge1xcbiAgICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA0cHg7XFxuICAgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDRweDtcXG4gICAgfVxcblxcbiAgICAmOjpiZWZvcmUsXFxuICAgICY6OmFmdGVyIHtcXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgICAgZGlzcGxheTogYmxvY2s7XFxuICAgICAgd2lkdGg6IDEwMCU7XFxuICAgICAgbWFyZ2luOiAwO1xcbiAgICAgIGNvbnRlbnQ6ICcnO1xcbiAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBza2V3KC0zMGRlZyk7XFxuICAgICAgLW1zLXRyYW5zZm9ybTogc2tldygtMzBkZWcpO1xcbiAgICAgIHRyYW5zZm9ybTogc2tldygtMzBkZWcpO1xcbiAgICAgIGJvcmRlci1yYWRpdXM6IDZweDtcXG4gICAgICB6LWluZGV4OiAwO1xcblxcbiAgICAgIC8vIGZpeCBibHVycnkgc2tld1xcbiAgICAgIGhlaWdodDogY2FsYygxMDAlICsgMnB4KTtcXG4gICAgICB0b3A6IC0xcHg7XFxuICAgIH1cXG5cXG4gICAgJjo6YmVmb3JlIHtcXG4gICAgICBsZWZ0OiAtNTUlO1xcbiAgICB9XFxuXFxuICAgICY6OmFmdGVyIHtcXG4gICAgICBsZWZ0OiA1NSU7XFxuICAgIH1cXG4gIH1cXG59XFxuXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuXFxuICAgIHNlbGVjdGlvbnMsIGxlZnQgLSBjZW50ZXIgLSByaWdodFxcblxcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcblxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiAgY2VsbHMgZGlzYWJsZWRcXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG5cXG4uY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIHtcXG4gIFtkYXRhLWRpc2FibGVkPVxcXCJsZWZ0XFxcIl06OmFmdGVyIHtcXG4gICAgYmFja2dyb3VuZDogJGRpc2FibGVkLWJnLWNvbG9yO1xcbiAgfVxcblxcbiAgW2RhdGEtZGlzYWJsZWQ9XFxcImNlbnRlclxcXCJdIHtcXG4gICAgYmFja2dyb3VuZDogJGRpc2FibGVkLWJnLWNvbG9yO1xcbiAgICBjb2xvcjogJGRpc2FibGVkLWNvbG9yO1xcblxcbiAgICAmOjpiZWZvcmUsXFxuICAgICY6OmFmdGVyIHtcXG4gICAgICBkaXNwbGF5OiBub25lO1xcbiAgICAgIGJhY2tncm91bmQ6ICRkaXNhYmxlZC1iZy1jb2xvcjtcXG4gICAgfVxcbiAgfVxcblxcbiAgW2RhdGEtZGlzYWJsZWQ9XFxcInJpZ2h0XFxcIl06OmJlZm9yZSB7XFxuICAgIGJhY2tncm91bmQ6ICRkaXNhYmxlZC1iZy1jb2xvcjtcXG4gIH1cXG59XFxuXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuICBjZWxscyBoaWdobGlnaHRlZFxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcblxcbi5jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0ge1xcbiAgW2RhdGEtaGlnaGxpZ2h0ZWQ9XFxcImxlZnRcXFwiXTo6YWZ0ZXIge1xcbiAgICBkaXNwbGF5OiBibG9jaztcXG4gICAgYmFja2dyb3VuZDogJGhpZ2hsaWdodGVkLWJnLWNvbG9yO1xcbiAgfVxcblxcbiAgW2RhdGEtaGlnaGxpZ2h0ZWQ9XFxcImNlbnRlclxcXCJdIHtcXG4gICAgYmFja2dyb3VuZDogJGhpZ2hsaWdodGVkLWJnLWNvbG9yO1xcbiAgICBjb2xvcjogJGhpZ2hsaWdodGVkLWNvbG9yO1xcblxcbiAgICAmOjpiZWZvcmUsXFxuICAgICY6OmFmdGVyIHtcXG4gICAgICBkaXNwbGF5OiBub25lO1xcbiAgICAgIGJhY2tncm91bmQ6ICRoaWdobGlnaHRlZC1iZy1jb2xvcjtcXG4gICAgfVxcbiAgfVxcblxcbiAgW2RhdGEtaGlnaGxpZ2h0ZWQ9XFxcInJpZ2h0XFxcIl06OmJlZm9yZSB7XFxuICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICBiYWNrZ3JvdW5kOiAkaGlnaGxpZ2h0ZWQtYmctY29sb3I7XFxuICB9XFxufVxcblxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiAgY2VsbHMgaW52YWxpZFxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcblxcbi5jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0ge1xcbiAgW2RhdGEtaW52YWxpZD1cXFwibGVmdFxcXCJdIHtcXG4gICAgYmFja2dyb3VuZDogbm9uZTtcXG5cXG4gICAgJjo6YmVmb3JlIHtcXG4gICAgICBkaXNwbGF5OiBibG9jaztcXG4gICAgfVxcblxcbiAgICAmOjphZnRlciB7XFxuICAgICAgZGlzcGxheTogYmxvY2s7XFxuICAgICAgYmFja2dyb3VuZDogJGludmFsaWQtYmctY29sb3I7XFxuICAgIH1cXG4gIH1cXG5cXG4gIFtkYXRhLWludmFsaWQ9XFxcImNlbnRlclxcXCJdIHtcXG4gICAgYmFja2dyb3VuZDogJGludmFsaWQtYmctY29sb3I7XFxuICAgIGNvbG9yOiAkaW52YWxpZC1jb2xvcjtcXG4gIFxcbiAgICAmOjpiZWZvcmUsXFxuICAgICY6OmFmdGVyIHtcXG4gICAgICBkaXNwbGF5OiBub25lO1xcbiAgICAgIGJhY2tncm91bmQ6ICRpbnZhbGlkLWJnLWNvbG9yO1xcbiAgICB9XFxuICB9XFxuXFxuICBbZGF0YS1pbnZhbGlkPVxcXCJyaWdodFxcXCJdIHtcXG4gICAgYmFja2dyb3VuZDogbm9uZTtcXG5cXG4gICAgJjo6YmVmb3JlIHtcXG4gICAgICBkaXNwbGF5OiBibG9jaztcXG4gICAgICBiYWNrZ3JvdW5kOiAkaW52YWxpZC1iZy1jb2xvcjtcXG4gICAgfVxcblxcbiAgICAmOjphZnRlciB7XFxuICAgICAgZGlzcGxheTogYmxvY2s7XFxuICAgIH1cXG4gIH1cXG59XFxuXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuICBjZWxsIGhvdmVyIGRpcmVjdFxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcblxcbi5kaXJlY3RbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIHtcXG4gIC8vIGNlbGwgaG92ZXJlZCB3aGVuIHNlbGVjdGluZyBsZWZ0IHRvIHJpZ2h0XFxuICBbZGF0YS1ob3ZlcmVkXSB7XFxuICAgIGJhY2tncm91bmQ6IG5vbmU7XFxuXFxuICAgICY6OmJlZm9yZSB7XFxuICAgICAgZGlzcGxheTogYmxvY2s7XFxuICAgIH1cXG5cXG4gICAgJjo6YWZ0ZXIge1xcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICAgIGJhY2tncm91bmQ6ICRoaWdobGlnaHRlZC1iZy1jb2xvcjtcXG4gICAgfVxcbiAgfVxcblxcbiAgW2RhdGEtaG92ZXJlZC1vZmZzZXRdIHtcXG4gICAgYmFja2dyb3VuZDogbm9uZTtcXG5cXG4gICAgJjo6YmVmb3JlIHtcXG4gICAgICBkaXNwbGF5OiBibG9jaztcXG4gICAgICBiYWNrZ3JvdW5kOiAkaGlnaGxpZ2h0ZWQtYmctY29sb3I7XFxuICAgIH1cXG5cXG4gICAgJjo6YWZ0ZXIge1xcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICB9XFxuICB9XFxufVxcblxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiAgY2VsbCBob3ZlciByZXZlcnNlZFxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcblxcbi5yZXZlcnNlZFtkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0ge1xcbiAgLy8gd2hlbiBzZWxlY3RpbmcgcmlnaHQgdG8gbGVmdFxcbiAgW2RhdGEtaG92ZXJlZF0ge1xcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xcblxcbiAgICAmOjpiZWZvcmUge1xcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICAgIGJhY2tncm91bmQ6ICRoaWdobGlnaHRlZC1iZy1jb2xvcjtcXG4gICAgfVxcblxcbiAgICAmOjphZnRlciB7XFxuICAgICAgZGlzcGxheTogYmxvY2s7XFxuICAgIH1cXG4gIH1cXG5cXG4gIFtkYXRhLWhvdmVyZWQtb2Zmc2V0XSB7XFxuICAgIGJhY2tncm91bmQ6IG5vbmU7XFxuXFxuICAgICY6OmJlZm9yZSB7XFxuICAgICAgZGlzcGxheTogYmxvY2s7XFxuICAgIH1cXG5cXG4gICAgJjo6YWZ0ZXIge1xcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICAgIGJhY2tncm91bmQ6ICRoaWdobGlnaHRlZC1iZy1jb2xvcjtcXG4gICAgfVxcbiAgfVxcbn1cXG5cIixcIiRjZWxsLWJvcmRlci1yYWRpdXM6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWNlbGwtYm9yZGVyLXJhZGl1cywgNnB4KTtcXG4kY2VsbC1iZy1vcGFjaXR5OiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1jZWxsLWJnLW9wYWNpdHksIC41KTtcXG5cXG4uY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwiYmFzaWNcXFwiXSB7XFxuICAuY2VsbCB7XFxuICAgICY6OmJlZm9yZSxcXG4gICAgJjo6YWZ0ZXIge1xcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgICBkaXNwbGF5OiBibG9jaztcXG4gICAgICB3aWR0aDogMTAwJTtcXG4gICAgICBoZWlnaHQ6IDEwMCU7XFxuICAgICAgdG9wOiAwO1xcbiAgICAgIG1hcmdpbjogMDtcXG4gICAgICBjb250ZW50OiAnJztcXG4gICAgICB6LWluZGV4OiAwO1xcbiAgICB9XFxuICB9XFxufVxcblxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcblxcbiAgICBzZWxlY3Rpb25zLCBsZWZ0IC0gY2VudGVyIC0gcmlnaHRcXG5cXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG5cXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4gIGNlbGxzIGRpc2FibGVkXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuXFxuLmNhbGVuZGFyW2RhdGEtdGhlbWU9XFxcImJhc2ljXFxcIl0ge1xcbiAgLy8gW2RhdGEtZGlzYWJsZWQ9XFxcImxlZnRcXFwiXSB7XFxuICAvLyAgIGNvbG9yOiAkZGlzYWJsZWQtY29sb3I7XFxuICAvLyB9XFxuXFxuICBbZGF0YS1kaXNhYmxlZD1cXFwiY2VudGVyXFxcIl0ge1xcbiAgICB0ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaDtcXG4gICAgY29sb3I6ICRkaXNhYmxlZC1jb2xvcjtcXG4gIH1cXG59XFxuXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuICBjZWxscyBoaWdobGlnaHRlZFxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcblxcbi5jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJiYXNpY1xcXCJdIHtcXG4gIFtkYXRhLWhpZ2hsaWdodGVkPVxcXCJsZWZ0XFxcIl0ge1xcbiAgICBjb2xvcjogJGhpZ2hsaWdodGVkLWNvbG9yO1xcblxcbiAgICAmOjpiZWZvcmUge1xcbiAgICAgIGJhY2tncm91bmQ6ICRoaWdobGlnaHRlZC1iZy1jb2xvcjtcXG4gICAgICBvcGFjaXR5OiAkY2VsbC1iZy1vcGFjaXR5O1xcbiAgICAgIHdpZHRoOiA1MCU7XFxuICAgICAgbGVmdDogNTAlO1xcbiAgICB9XFxuXFxuICAgICY6OmFmdGVyIHtcXG4gICAgICBiYWNrZ3JvdW5kOiAkaGlnaGxpZ2h0ZWQtYmctY29sb3I7XFxuICAgICAgYm9yZGVyLXJhZGl1czogJGNlbGwtYm9yZGVyLXJhZGl1cztcXG4gICAgfVxcbiAgfVxcblxcbiAgW2RhdGEtaGlnaGxpZ2h0ZWQ9XFxcImNlbnRlclxcXCJdIHtcXG4gICAgY29sb3I6ICRoaWdobGlnaHRlZC1jb2xvcjtcXG5cXG4gICAgJjo6YmVmb3JlIHtcXG4gICAgICBiYWNrZ3JvdW5kOiAkaGlnaGxpZ2h0ZWQtYmctY29sb3I7XFxuICAgICAgb3BhY2l0eTogJGNlbGwtYmctb3BhY2l0eTtcXG4gICAgfVxcbiAgfVxcblxcbiAgW2RhdGEtaGlnaGxpZ2h0ZWQ9XFxcInJpZ2h0XFxcIl0ge1xcbiAgICBjb2xvcjogJGhpZ2hsaWdodGVkLWNvbG9yO1xcblxcbiAgICAmOjpiZWZvcmUge1xcbiAgICAgIGJhY2tncm91bmQ6ICRoaWdobGlnaHRlZC1iZy1jb2xvcjtcXG4gICAgICBvcGFjaXR5OiAkY2VsbC1iZy1vcGFjaXR5O1xcbiAgICAgIHdpZHRoOiA1MCU7XFxuICAgICAgcmlnaHQ6IDUwJTtcXG4gICAgfVxcblxcbiAgICAmOjphZnRlciB7XFxuICAgICAgYmFja2dyb3VuZDogJGhpZ2hsaWdodGVkLWJnLWNvbG9yO1xcbiAgICAgIGJvcmRlci1yYWRpdXM6ICRjZWxsLWJvcmRlci1yYWRpdXM7XFxuICAgIH1cXG4gIH1cXG59XFxuXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuICBjZWxscyBpbnZhbGlkXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuXFxuLmNhbGVuZGFyW2RhdGEtdGhlbWU9XFxcImJhc2ljXFxcIl0ge1xcbiAgW2RhdGEtaW52YWxpZD1cXFwibGVmdFxcXCJdIHtcXG4gICAgY29sb3I6ICRpbnZhbGlkLWNvbG9yO1xcblxcbiAgICAmOjpiZWZvcmUge1xcbiAgICAgIGJhY2tncm91bmQ6ICRpbnZhbGlkLWJnLWNvbG9yO1xcbiAgICAgIG9wYWNpdHk6ICRjZWxsLWJnLW9wYWNpdHk7XFxuICAgICAgd2lkdGg6IDUwJTtcXG4gICAgICBsZWZ0OiA1MCU7XFxuICAgIH1cXG5cXG4gICAgJjo6YWZ0ZXIge1xcbiAgICAgIGJhY2tncm91bmQ6ICRpbnZhbGlkLWJnLWNvbG9yO1xcbiAgICAgIGJvcmRlci1yYWRpdXM6ICRjZWxsLWJvcmRlci1yYWRpdXM7XFxuICAgIH1cXG4gIH1cXG5cXG4gIFtkYXRhLWludmFsaWQ9XFxcImNlbnRlclxcXCJdIHtcXG4gICAgY29sb3I6ICRpbnZhbGlkLWNvbG9yO1xcblxcbiAgICAmOjpiZWZvcmUge1xcbiAgICAgIGJhY2tncm91bmQ6ICRpbnZhbGlkLWJnLWNvbG9yO1xcbiAgICAgIG9wYWNpdHk6ICRjZWxsLWJnLW9wYWNpdHk7XFxuICAgIH1cXG4gIH1cXG5cXG4gIFtkYXRhLWludmFsaWQ9XFxcInJpZ2h0XFxcIl0ge1xcbiAgICBjb2xvcjogJGludmFsaWQtY29sb3I7XFxuXFxuICAgICY6OmJlZm9yZSB7XFxuICAgICAgYmFja2dyb3VuZDogJGludmFsaWQtYmctY29sb3I7XFxuICAgICAgb3BhY2l0eTogJGNlbGwtYmctb3BhY2l0eTtcXG4gICAgICB3aWR0aDogNTAlO1xcbiAgICAgIHJpZ2h0OiA1MCU7XFxuICAgIH1cXG5cXG4gICAgJjo6YWZ0ZXIge1xcbiAgICAgIGJhY2tncm91bmQ6ICRpbnZhbGlkLWJnLWNvbG9yO1xcbiAgICAgIGJvcmRlci1yYWRpdXM6ICRjZWxsLWJvcmRlci1yYWRpdXM7XFxuICAgIH1cXG4gIH1cXG59XFxuXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuICBjZWxsIGhvdmVyXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuXFxuLmNhbGVuZGFyW2RhdGEtdGhlbWU9XFxcImJhc2ljXFxcIl0ge1xcbiAgW2RhdGEtaG92ZXJlZF06bm90KFtkYXRhLWRpc2FibGVkPVxcXCJjZW50ZXJcXFwiXSkge1xcbiAgICBjb2xvcjogJGhpZ2hsaWdodGVkLWNvbG9yO1xcblxcbiAgICAmOjphZnRlciB7XFxuICAgICAgYmFja2dyb3VuZDogJGhpZ2hsaWdodGVkLWJnLWNvbG9yO1xcbiAgICAgIGJvcmRlci1yYWRpdXM6ICRjZWxsLWJvcmRlci1yYWRpdXM7XFxuICAgIH1cXG4gIH1cXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5sb2NhbHMgPSB7XG5cdFwiY2FsZW5kYXJcIjogXCJCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhclwiLFxuXHRcImJvb2tpbmdzeW5jLXNwaW5cIjogXCJCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19ib29raW5nc3luYy1zcGluXCIsXG5cdFwibG9hZGluZ1wiOiBcIkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2xvYWRpbmdcIixcblx0XCJkcm9wQmFzaWNcIjogXCJCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19kcm9wQmFzaWNcIixcblx0XCJ2aXNpYmxlXCI6IFwiQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fdmlzaWJsZVwiLFxuXHRcImNhcHRpb25cIjogXCJCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYXB0aW9uXCIsXG5cdFwiZm9yd2FyZFwiOiBcIkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2ZvcndhcmRcIixcblx0XCJiYWNrXCI6IFwiQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fYmFja1wiLFxuXHRcImNlbGxcIjogXCJCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jZWxsXCIsXG5cdFwiZGlyZWN0XCI6IFwiQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fZGlyZWN0XCIsXG5cdFwicmV2ZXJzZWRcIjogXCJCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19yZXZlcnNlZFwiLFxuXHRcInRvb2x0aXBcIjogXCJCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X190b29sdGlwXCIsXG5cdFwidG9vbHRpcEFycm93XCI6IFwiQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fdG9vbHRpcEFycm93XCIsXG5cdFwibW9udGhzV3JhcHBlclwiOiBcIkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX21vbnRoc1dyYXBwZXJcIixcblx0XCJtQ2VsbFwiOiBcIkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX21DZWxsXCIsXG5cdFwibW9udGhcIjogXCJCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19tb250aFwiLFxuXHRcInRhYmxlSGVhZGVyXCI6IFwiQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fdGFibGVIZWFkZXJcIixcblx0XCJib2R5XCI6IFwiQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fYm9keVwiLFxuXHRcInRoXCI6IFwiQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fdGhcIixcblx0XCJ0b2RheVwiOiBcIkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3RvZGF5XCIsXG5cdFwiY250XCI6IFwiQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY250XCIsXG5cdFwiaW5mb1wiOiBcIkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2luZm9cIixcblx0XCJmb2N1c1wiOiBcIkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2ZvY3VzXCIsXG5cdFwiZGlzYWJsZWRcIjogXCJCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19kaXNhYmxlZFwiLFxuXHRcInNlbGVjdGVkXCI6IFwiQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fc2VsZWN0ZWRcIixcblx0XCJzZWxlY3RpbmdSZXZlcnNlZFwiOiBcIkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3NlbGVjdGluZ1JldmVyc2VkXCIsXG5cdFwic2VsZWN0aW5nRGlyZWN0XCI6IFwiQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fc2VsZWN0aW5nRGlyZWN0XCIsXG5cdFwiYWN0aW9uc0VuYWJsZWRcIjogXCJCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19hY3Rpb25zRW5hYmxlZFwiLFxuXHRcImhpZ2hsaWdodGVkXCI6IFwiQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9faGlnaGxpZ2h0ZWRcIixcblx0XCJpbnZhbGlkXCI6IFwiQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9faW52YWxpZFwiXG59O1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgZGl2LCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgc3BhbiwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGFwcGxldCwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IG9iamVjdCwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGlmcmFtZSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGgxLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgaDIsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBoMywgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGg0LCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgaDUsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBoNiwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHAsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBibG9ja3F1b3RlLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgcHJlLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgYSxcXG4uQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgYWJiciwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGFjcm9ueW0sIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBhZGRyZXNzLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgYmlnLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgY2l0ZSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGNvZGUsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBkZWwsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBkZm4sIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBlbSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGltZywgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGlucywgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGtiZCwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHEsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBzLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgc2FtcCxcXG4uQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgc21hbGwsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBzdHJpa2UsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBzdHJvbmcsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBzdWIsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBzdXAsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCB0dCwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHZhciwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGIsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCB1LCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgaSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGNlbnRlciwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGRsLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgZHQsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBkZCwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IG9sLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgdWwsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBsaSxcXG4uQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgZmllbGRzZXQsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBmb3JtLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgZGl2LkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX2Zvcm0sIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBsYWJlbCwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGxlZ2VuZCwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHRhYmxlLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgY2FwdGlvbiwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHRib2R5LCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgdGZvb3QsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCB0aGVhZCwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHRyLFxcbi5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCB0aCwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHRkLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgYXJ0aWNsZSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGFzaWRlLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgY2FudmFzLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgZGV0YWlscywgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGZpZ2NhcHRpb24sIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBmaWd1cmUsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBmb290ZXIsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBoZWFkZXIsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBoZ3JvdXAsXFxuLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IG1lbnUsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBuYXYsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBzZWN0aW9uLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgc3VtbWFyeSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHRpbWUsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBtYXJrLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgYXVkaW8sIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCB2aWRlbywgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGJ1dHRvbiwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHRleHRhcmVhLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgaW5wdXQsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fYnV0dG9uLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX2xlZ2VuZCB7XFxuICBmb250LWZhbWlseTogXFxcIk9wZW4gc2Fuc1xcXCIsIFxcXCJIZWx2ZXRpY2EgTmV1ZVxcXCIsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7XFxuICBmb250LXNpemUtYWRqdXN0OiBub25lO1xcbiAgZm9udC1zaXplOiAxMDAlO1xcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xcbiAgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDtcXG4gIGZvbnQtc3RyZXRjaDogbm9ybWFsO1xcbiAgZm9udC12YXJpYW50OiBub3JtYWw7XFxuICBmb250LXdlaWdodDogbm9ybWFsO1xcbiAgZm9udDogbm9ybWFsIG5vcm1hbCAxMDAlIFxcXCJPcGVuIHNhbnNcXFwiLCBcXFwiSGVsdmV0aWNhIE5ldWVcXFwiLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmO1xcbiAgdGV4dC1hbGlnbjogbGVmdDtcXG4gIC1tb3otdGV4dC1hbGlnbi1sYXN0OiBpbml0aWFsO1xcbiAgdGV4dC1hbGlnbi1sYXN0OiBpbml0aWFsO1xcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xcbiAgLXdlYmtpdC10ZXh0LWVtcGhhc2lzOiBub25lO1xcbiAgdGV4dC1lbXBoYXNpczogbm9uZTtcXG4gIHRleHQtaGVpZ2h0OiBhdXRvO1xcbiAgdGV4dC1pbmRlbnQ6IDA7XFxuICB0ZXh0LWp1c3RpZnk6IGF1dG87XFxuICB0ZXh0LW91dGxpbmU6IG5vbmU7XFxuICB0ZXh0LXNoYWRvdzogbm9uZTtcXG4gIHRleHQtdHJhbnNmb3JtOiBub25lO1xcbiAgdGV4dC13cmFwOiBub3JtYWw7XFxuICBhbGlnbm1lbnQtYWRqdXN0OiBhdXRvO1xcbiAgYWxpZ25tZW50LWJhc2VsaW5lOiBiYXNlbGluZTtcXG4gIC13ZWJraXQtYW5pbWF0aW9uOiBub25lIDAgZWFzZSAwIDEgbm9ybWFsO1xcbiAgYW5pbWF0aW9uOiBub25lIDAgZWFzZSAwIDEgbm9ybWFsO1xcbiAgLXdlYmtpdC1hbmltYXRpb24tcGxheS1zdGF0ZTogcnVubmluZztcXG4gIGFuaW1hdGlvbi1wbGF5LXN0YXRlOiBydW5uaW5nO1xcbiAgYXBwZWFyYW5jZTogbm9ybWFsO1xcbiAgYXppbXV0aDogY2VudGVyO1xcbiAgLXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OiB2aXNpYmxlO1xcbiAgYmFja2ZhY2UtdmlzaWJpbGl0eTogdmlzaWJsZTtcXG4gIGJhY2tncm91bmQ6IG5vbmUgMCAwIGF1dG8gcmVwZWF0IHNjcm9sbCBwYWRkaW5nLWJveCB0cmFuc3BhcmVudDtcXG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTtcXG4gIGJhc2VsaW5lLXNoaWZ0OiBiYXNlbGluZTtcXG4gIGJpbmRpbmc6IG5vbmU7XFxuICBibGVlZDogNnB0O1xcbiAgYm9va21hcmstbGFiZWw6IGNvbnRlbnQoKTtcXG4gIGJvb2ttYXJrLWxldmVsOiBub25lO1xcbiAgYm9va21hcmstc3RhdGU6IG9wZW47XFxuICBib29rbWFyay10YXJnZXQ6IG5vbmU7XFxuICBib3JkZXI6IDAgbm9uZSB0cmFuc3BhcmVudDtcXG4gIGJvcmRlci1yYWRpdXM6IDA7XFxuICBib3R0b206IGF1dG87XFxuICBib3gtYWxpZ246IHN0cmV0Y2g7XFxuICAtd2Via2l0LWJveC1kZWNvcmF0aW9uLWJyZWFrOiBzbGljZTtcXG4gIGJveC1kZWNvcmF0aW9uLWJyZWFrOiBzbGljZTtcXG4gIGJveC1kaXJlY3Rpb246IG5vcm1hbDtcXG4gIGZsZXg6IDAuMDtcXG4gIGZsZXgtZ3JvdXA6IDE7XFxuICBib3gtbGluZXM6IHNpbmdsZTtcXG4gIGJveC1vcmRpbmFsLWdyb3VwOiAxO1xcbiAgYm94LW9yaWVudDogaW5saW5lLWF4aXM7XFxuICBib3gtcGFjazogc3RhcnQ7XFxuICBib3gtc2hhZG93OiBub25lO1xcbiAgYm94LXNpemluZzogY29udGVudC1ib3g7XFxuICAtd2Via2l0LWJyZWFrLWFmdGVyOiBhdXRvO1xcbiAgLW1vei1icmVhay1hZnRlcjogYXV0bztcXG4gIGJyZWFrLWFmdGVyOiBhdXRvO1xcbiAgLXdlYmtpdC1icmVhay1iZWZvcmU6IGF1dG87XFxuICAtbW96LWJyZWFrLWJlZm9yZTogYXV0bztcXG4gIGJyZWFrLWJlZm9yZTogYXV0bztcXG4gIC13ZWJraXQtY29sdW1uLWJyZWFrLWluc2lkZTogYXV0bztcXG4gIHBhZ2UtYnJlYWstaW5zaWRlOiBhdXRvO1xcbiAgYnJlYWstaW5zaWRlOiBhdXRvO1xcbiAgY2FwdGlvbi1zaWRlOiB0b3A7XFxuICBjbGVhcjogbm9uZTtcXG4gIGNsaXA6IGF1dG87XFxuICBjb2xvcjogaW5oZXJpdDtcXG4gIGNvbG9yLXByb2ZpbGU6IGF1dG87XFxuICAtd2Via2l0LWNvbHVtbi1jb3VudDogYXV0bztcXG4gIC1tb3otY29sdW1uLWNvdW50OiBhdXRvO1xcbiAgY29sdW1uLWNvdW50OiBhdXRvO1xcbiAgLXdlYmtpdC1jb2x1bW4tZmlsbDogYmFsYW5jZTtcXG4gIC1tb3otY29sdW1uLWZpbGw6IGJhbGFuY2U7XFxuICBjb2x1bW4tZmlsbDogYmFsYW5jZTtcXG4gIC13ZWJraXQtY29sdW1uLWdhcDogbm9ybWFsO1xcbiAgLW1vei1jb2x1bW4tZ2FwOiBub3JtYWw7XFxuICBjb2x1bW4tZ2FwOiBub3JtYWw7XFxuICAtd2Via2l0LWNvbHVtbi1ydWxlOiBtZWRpdW0gbWVkaXVtICMxZjFmMWY7XFxuICAtbW96LWNvbHVtbi1ydWxlOiBtZWRpdW0gbWVkaXVtICMxZjFmMWY7XFxuICBjb2x1bW4tcnVsZTogbWVkaXVtIG1lZGl1bSAjMWYxZjFmO1xcbiAgLXdlYmtpdC1jb2x1bW4tc3BhbjogMTtcXG4gIC1tb3otY29sdW1uLXNwYW46IDE7XFxuICBjb2x1bW4tc3BhbjogMTtcXG4gIC13ZWJraXQtY29sdW1uLXdpZHRoOiBhdXRvO1xcbiAgLW1vei1jb2x1bW4td2lkdGg6IGF1dG87XFxuICBjb2x1bW4td2lkdGg6IGF1dG87XFxuICAtd2Via2l0LWNvbHVtbnM6IGF1dG8gYXV0bztcXG4gIC1tb3otY29sdW1uczogYXV0byBhdXRvO1xcbiAgY29sdW1uczogYXV0byBhdXRvO1xcbiAgY29udGVudDogbm9ybWFsO1xcbiAgY291bnRlci1pbmNyZW1lbnQ6IG5vbmU7XFxuICBjb3VudGVyLXJlc2V0OiBub25lO1xcbiAgY3JvcDogYXV0bztcXG4gIGN1cnNvcjogYXV0bztcXG4gIGRpcmVjdGlvbjogbHRyO1xcbiAgZGlzcGxheTogaW5saW5lO1xcbiAgZG9taW5hbnQtYmFzZWxpbmU6IGF1dG87XFxuICBkcm9wLWluaXRpYWwtYWZ0ZXItYWRqdXN0OiB0ZXh0LWFmdGVyLWVkZ2U7XFxuICBkcm9wLWluaXRpYWwtYWZ0ZXItYWxpZ246IGJhc2VsaW5lO1xcbiAgZHJvcC1pbml0aWFsLWJlZm9yZS1hZGp1c3Q6IHRleHQtYmVmb3JlLWVkZ2U7XFxuICBkcm9wLWluaXRpYWwtYmVmb3JlLWFsaWduOiBjYXBzLWhlaWdodDtcXG4gIGRyb3AtaW5pdGlhbC1zaXplOiBhdXRvO1xcbiAgZHJvcC1pbml0aWFsLXZhbHVlOiBpbml0aWFsO1xcbiAgZWxldmF0aW9uOiBsZXZlbDtcXG4gIGVtcHR5LWNlbGxzOiBzaG93O1xcbiAgZml0OiBmaWxsO1xcbiAgZml0LXBvc2l0aW9uOiAwJSAwJTtcXG4gIGZsb2F0OiBub25lO1xcbiAgZmxvYXQtb2Zmc2V0OiAwIDA7XFxuICBncmlkLWNvbHVtbnM6IG5vbmU7XFxuICBncmlkLXJvd3M6IG5vbmU7XFxuICBoYW5naW5nLXB1bmN0dWF0aW9uOiBub25lO1xcbiAgaGVpZ2h0OiBhdXRvO1xcbiAgaHlwaGVuYXRlLWFmdGVyOiBhdXRvO1xcbiAgaHlwaGVuYXRlLWJlZm9yZTogYXV0bztcXG4gIGh5cGhlbmF0ZS1jaGFyYWN0ZXI6IGF1dG87XFxuICBoeXBoZW5hdGUtbGluZXM6IG5vLWxpbWl0O1xcbiAgaHlwaGVuYXRlLXJlc291cmNlOiBub25lO1xcbiAgLXdlYmtpdC1oeXBoZW5zOiBtYW51YWw7XFxuICAtbW96LWh5cGhlbnM6IG1hbnVhbDtcXG4gIC1tcy1oeXBoZW5zOiBtYW51YWw7XFxuICBoeXBoZW5zOiBtYW51YWw7XFxuICBpY29uOiBhdXRvO1xcbiAgaW1hZ2Utb3JpZW50YXRpb246IGF1dG87XFxuICBpbWFnZS1yZW5kZXJpbmc6IGF1dG87XFxuICBpbWFnZS1yZXNvbHV0aW9uOiBub3JtYWw7XFxuICBpbmxpbmUtYm94LWFsaWduOiBsYXN0O1xcbiAgbGVmdDogYXV0bztcXG4gIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xcbiAgbGluZS1zdGFja2luZzogaW5saW5lLWxpbmUtaGVpZ2h0IGV4Y2x1ZGUtcnVieSBjb25zaWRlci1zaGlmdHM7XFxuICBsaXN0LXN0eWxlOiBkaXNjIG91dHNpZGUgbm9uZTtcXG4gIG1hcmdpbjogMDtcXG4gIG1hcmtzOiBub25lO1xcbiAgbWFycXVlZS1kaXJlY3Rpb246IGZvcndhcmQ7XFxuICBtYXJxdWVlLWxvb3A6IDE7XFxuICBtYXJxdWVlLXBsYXktY291bnQ6IDE7XFxuICBtYXJxdWVlLXNwZWVkOiBub3JtYWw7XFxuICBtYXJxdWVlLXN0eWxlOiBzY3JvbGw7XFxuICBtYXgtaGVpZ2h0OiBub25lO1xcbiAgbWF4LXdpZHRoOiBub25lO1xcbiAgbWluLWhlaWdodDogMDtcXG4gIG1pbi13aWR0aDogMDtcXG4gIG1vdmUtdG86IG5vcm1hbDtcXG4gIG5hdi1kb3duOiBhdXRvO1xcbiAgbmF2LWluZGV4OiBhdXRvO1xcbiAgbmF2LWxlZnQ6IGF1dG87XFxuICBuYXYtcmlnaHQ6IGF1dG87XFxuICBuYXYtdXA6IGF1dG87XFxuICBvcGFjaXR5OiAxO1xcbiAgb3JwaGFuczogMjtcXG4gIG91dGxpbmU6IGludmVydCBub25lIG1lZGl1bTtcXG4gIG91dGxpbmUtb2Zmc2V0OiAwO1xcbiAgb3ZlcmZsb3c6IHZpc2libGU7XFxuICBvdmVyZmxvdy1zdHlsZTogYXV0bztcXG4gIHBhZGRpbmc6IDA7XFxuICBwYWdlOiBhdXRvO1xcbiAgcGFnZS1icmVhay1hZnRlcjogYXV0bztcXG4gIHBhZ2UtYnJlYWstYmVmb3JlOiBhdXRvO1xcbiAgcGFnZS1icmVhay1pbnNpZGU6IGF1dG87XFxuICBwYWdlLXBvbGljeTogc3RhcnQ7XFxuICAtd2Via2l0LXBlcnNwZWN0aXZlOiBub25lO1xcbiAgcGVyc3BlY3RpdmU6IG5vbmU7XFxuICAtd2Via2l0LXBlcnNwZWN0aXZlLW9yaWdpbjogNTAlIDUwJTtcXG4gIHBlcnNwZWN0aXZlLW9yaWdpbjogNTAlIDUwJTtcXG4gIHBvc2l0aW9uOiBzdGF0aWM7XFxuICBwcmVzZW50YXRpb24tbGV2ZWw6IDA7XFxuICBwdW5jdHVhdGlvbi10cmltOiBub25lO1xcbiAgcXVvdGVzOiBub25lO1xcbiAgcmVuZGVyaW5nLWludGVudDogYXV0bztcXG4gIHJlc2l6ZTogbm9uZTtcXG4gIHJpZ2h0OiBhdXRvO1xcbiAgcm90YXRpb246IDA7XFxuICByb3RhdGlvbi1wb2ludDogNTAlIDUwJTtcXG4gIHJ1YnktYWxpZ246IGF1dG87XFxuICBydWJ5LW92ZXJoYW5nOiBub25lO1xcbiAgcnVieS1wb3NpdGlvbjogYmVmb3JlO1xcbiAgcnVieS1zcGFuOiBub25lO1xcbiAgc2l6ZTogYXV0bztcXG4gIHN0cmluZy1zZXQ6IG5vbmU7XFxuICB0YWJsZS1sYXlvdXQ6IGF1dG87XFxuICB0b3A6IGF1dG87XFxuICAtd2Via2l0LXRyYW5zZm9ybTogbm9uZTtcXG4gIC1tcy10cmFuc2Zvcm06IG5vbmU7XFxuICB0cmFuc2Zvcm06IG5vbmU7XFxuICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IDUwJSA1MCUgMDtcXG4gIC1tcy10cmFuc2Zvcm0tb3JpZ2luOiA1MCUgNTAlIDA7XFxuICB0cmFuc2Zvcm0tb3JpZ2luOiA1MCUgNTAlIDA7XFxuICAtd2Via2l0LXRyYW5zZm9ybS1zdHlsZTogZmxhdDtcXG4gIHRyYW5zZm9ybS1zdHlsZTogZmxhdDtcXG4gIHRyYW5zaXRpb246IGFsbCAwIGVhc2UgMDtcXG4gIHVuaWNvZGUtYmlkaTogbm9ybWFsO1xcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xcbiAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcXG4gIHdoaXRlLXNwYWNlLWNvbGxhcHNlOiBjb2xsYXBzZTtcXG4gIHdpZG93czogMjtcXG4gIHdpZHRoOiBhdXRvO1xcbiAgd29yZC1icmVhazogbm9ybWFsO1xcbiAgd29yZC1zcGFjaW5nOiBub3JtYWw7XFxuICB3b3JkLXdyYXA6IG5vcm1hbDtcXG4gIHotaW5kZXg6IGF1dG87XFxuICB0ZXh0LWFsaWduOiBzdGFydDtcXG4gIC8qIEFuZCBkaXNhYmxlIE1TIGdyYWRpZW50cyAqL1xcbiAgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoZW5hYmxlZD1mYWxzZSk7XFxuICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcXG4gIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7IH1cXG5cXG4uQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgYWRkcmVzcywgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGJsb2NrcXVvdGUsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBkZCwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGRpdiwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGRsLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgZHQsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBmaWVsZHNldCwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGZvcm0sIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBkaXYuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fZm9ybSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGZyYW1lLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgZnJhbWVzZXQsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBoMSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGgyLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgaDMsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBoNCwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGg1LCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgaDYsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBub2ZyYW1lcywgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IG9sLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgcCwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHVsLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgY2VudGVyLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgZGlyLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgaHIsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBtZW51LCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgcHJlLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgYXJ0aWNsZSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGFzaWRlLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgY2FudmFzLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgZGV0YWlscywgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGZpZ2NhcHRpb24sIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBmaWd1cmUsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBmb290ZXIsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBoZWFkZXIsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBoZ3JvdXAsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBtZW51LCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgbmF2LCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgc2VjdGlvbiwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHN1bW1hcnkge1xcbiAgZGlzcGxheTogYmxvY2s7IH1cXG5cXG4uQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgbGkge1xcbiAgZGlzcGxheTogbGlzdC1pdGVtOyB9XFxuXFxuLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHRhYmxlIHtcXG4gIGRpc3BsYXk6IHRhYmxlOyB9XFxuXFxuLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHRyIHtcXG4gIGRpc3BsYXk6IHRhYmxlLXJvdzsgfVxcblxcbi5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCB0aGVhZCB7XFxuICBkaXNwbGF5OiB0YWJsZS1oZWFkZXItZ3JvdXA7IH1cXG5cXG4uQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgdGJvZHkge1xcbiAgZGlzcGxheTogdGFibGUtcm93LWdyb3VwOyB9XFxuXFxuLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHRmb290IHtcXG4gIGRpc3BsYXk6IHRhYmxlLWZvb3Rlci1ncm91cDsgfVxcblxcbi5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBjb2wge1xcbiAgZGlzcGxheTogdGFibGUtY29sdW1uOyB9XFxuXFxuLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGNvbGdyb3VwIHtcXG4gIGRpc3BsYXk6IHRhYmxlLWNvbHVtbi1ncm91cDsgfVxcblxcbi5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCB0ZCwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHRoIHtcXG4gIGRpc3BsYXk6IHRhYmxlLWNlbGw7IH1cXG5cXG4uQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgY2FwdGlvbiB7XFxuICBkaXNwbGF5OiB0YWJsZS1jYXB0aW9uOyB9XFxuXFxuLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGlucHV0LCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgc2VsZWN0IHtcXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jazsgfVxcblxcbi5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBiLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgc3Ryb25nIHtcXG4gIGZvbnQtd2VpZ2h0OiBib2xkOyB9XFxuXFxuLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGIgPiBpLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgc3Ryb25nID4gaSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGIgPiBlbSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHN0cm9uZyA+IGVtIHtcXG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xcbiAgZm9udC1zdHlsZTogaXRhbGljOyB9XFxuXFxuLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGkgPiBiLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgaSA+IHN0cm9uZyB7XFxuICBmb250LXdlaWdodDogYm9sZDtcXG4gIGZvbnQtc3R5bGU6IGl0YWxpYzsgfVxcblxcbi5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBlbSA+IGIsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBlbSA+IHN0cm9uZyB7XFxuICBmb250LXdlaWdodDogYm9sZDtcXG4gIGZvbnQtc3R5bGU6IGl0YWxpYzsgfVxcblxcbi5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCB0ZXh0YXJlYSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGlucHV0IHtcXG4gIGN1cnNvcjogdGV4dDsgfVxcblwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL3N0eWxlcy9yZXNldC5zY3NzXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUFBOzs7Ozs7RUFPSSx3RUFBd0U7RUFDeEUs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QUEyQixFQUFBOztBQTNPL0I7RUE4T0kscUJBQXFCLEVBQUE7O0FBOU96QjtFQWlQSSwyQkFBMkIsRUFBQTs7QUFqUC9CO0VBb1BJLG1CQUFtQixFQUFBOztBQXBQdkI7RUF1UEksc0JBQXNCLEVBQUE7O0FBdlAxQjtFQTBQSSxxQkFBcUIsRUFBQTs7QUExUHpCO0VBNlBJLGlCQUFpQixFQUFBOztBQTdQckI7RUFnUUksaUJBQWlCO0VBQ2pCLGtCQUFrQixFQUFBOztBQWpRdEI7RUFxUU0saUJBQWlCO0VBQ2pCLGtCQUFrQixFQUFBOztBQXRReEI7RUEyUU0saUJBQWlCO0VBQ2pCLGtCQUFrQixFQUFBOztBQTVReEI7RUFnUkksWUFBWSxFQUFBXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIi5yZXNldCB7XFxyXFxuXFx0ZGl2LCBzcGFuLCBhcHBsZXQsIG9iamVjdCwgaWZyYW1lLCBoMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCBwLCBibG9ja3F1b3RlLCBwcmUsIGEsXFxyXFxuXFx0YWJiciwgYWNyb255bSwgYWRkcmVzcywgYmlnLCBjaXRlLCBjb2RlLCBkZWwsIGRmbiwgZW0sIGltZywgaW5zLCBrYmQsIHEsIHMsIHNhbXAsXFxyXFxuXFx0c21hbGwsIHN0cmlrZSwgc3Ryb25nLCBzdWIsIHN1cCwgdHQsIHZhciwgYiwgdSwgaSwgY2VudGVyLCBkbCwgZHQsIGRkLCBvbCwgdWwsIGxpLFxcclxcblxcdGZpZWxkc2V0LCBmb3JtLCBkaXYuZm9ybSwgbGFiZWwsIGxlZ2VuZCwgdGFibGUsIGNhcHRpb24sIHRib2R5LCB0Zm9vdCwgdGhlYWQsIHRyLFxcclxcblxcdHRoLCB0ZCwgYXJ0aWNsZSwgYXNpZGUsIGNhbnZhcywgZGV0YWlscywgZmlnY2FwdGlvbiwgZmlndXJlLCBmb290ZXIsIGhlYWRlciwgaGdyb3VwLFxcclxcblxcdG1lbnUsIG5hdiwgc2VjdGlvbiwgc3VtbWFyeSwgdGltZSwgbWFyaywgYXVkaW8sIHZpZGVvLCBidXR0b24sIHRleHRhcmVhLCBpbnB1dCwgLmJ1dHRvbiwgLmxlZ2VuZCB7XFxyXFxuICAgIGZvbnQtZmFtaWx5OiBcXFwiT3BlbiBzYW5zXFxcIiwgXFxcIkhlbHZldGljYSBOZXVlXFxcIiwgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjtcXHJcXG4gICAgZm9udC1zaXplLWFkanVzdDogbm9uZTtcXHJcXG4gICAgZm9udC1zaXplOiAxMDAlO1xcclxcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XFxyXFxuICAgIGxldHRlci1zcGFjaW5nOiBub3JtYWw7XFxyXFxuICAgIGZvbnQtc3RyZXRjaDogbm9ybWFsO1xcclxcbiAgICBmb250LXZhcmlhbnQ6IG5vcm1hbDtcXHJcXG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcXHJcXG4gICAgZm9udDogbm9ybWFsIG5vcm1hbCAxMDAlIFxcXCJPcGVuIHNhbnNcXFwiLCBcXFwiSGVsdmV0aWNhIE5ldWVcXFwiLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmO1xcclxcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xcclxcbiAgICAtbW96LXRleHQtYWxpZ24tbGFzdDogaW5pdGlhbDtcXHJcXG4gICAgdGV4dC1hbGlnbi1sYXN0OiBpbml0aWFsO1xcclxcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XFxyXFxuICAgIC13ZWJraXQtdGV4dC1lbXBoYXNpczogbm9uZTtcXHJcXG4gICAgdGV4dC1lbXBoYXNpczogbm9uZTtcXHJcXG4gICAgdGV4dC1oZWlnaHQ6IGF1dG87XFxyXFxuICAgIHRleHQtaW5kZW50OiAwO1xcclxcbiAgICB0ZXh0LWp1c3RpZnk6IGF1dG87XFxyXFxuICAgIHRleHQtb3V0bGluZTogbm9uZTtcXHJcXG4gICAgdGV4dC1zaGFkb3c6IG5vbmU7XFxyXFxuICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xcclxcbiAgICB0ZXh0LXdyYXA6IG5vcm1hbDtcXHJcXG4gICAgYWxpZ25tZW50LWFkanVzdDogYXV0bztcXHJcXG4gICAgYWxpZ25tZW50LWJhc2VsaW5lOiBiYXNlbGluZTtcXHJcXG4gICAgLXdlYmtpdC1hbmltYXRpb246IG5vbmUgMCBlYXNlIDAgMSBub3JtYWw7XFxyXFxuICAgIGFuaW1hdGlvbjogbm9uZSAwIGVhc2UgMCAxIG5vcm1hbDtcXHJcXG4gICAgLXdlYmtpdC1hbmltYXRpb24tcGxheS1zdGF0ZTogcnVubmluZztcXHJcXG4gICAgYW5pbWF0aW9uLXBsYXktc3RhdGU6IHJ1bm5pbmc7XFxyXFxuICAgIGFwcGVhcmFuY2U6IG5vcm1hbDtcXHJcXG4gICAgYXppbXV0aDogY2VudGVyO1xcclxcbiAgICAtd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6IHZpc2libGU7XFxyXFxuICAgIGJhY2tmYWNlLXZpc2liaWxpdHk6IHZpc2libGU7XFxyXFxuICAgIGJhY2tncm91bmQ6IG5vbmUgMCAwIGF1dG8gcmVwZWF0IHNjcm9sbCBwYWRkaW5nLWJveCB0cmFuc3BhcmVudDtcXHJcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxyXFxuICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XFxyXFxuICAgIGJhc2VsaW5lLXNoaWZ0OiBiYXNlbGluZTtcXHJcXG4gICAgYmluZGluZzogbm9uZTtcXHJcXG4gICAgYmxlZWQ6IDZwdDtcXHJcXG4gICAgYm9va21hcmstbGFiZWw6IGNvbnRlbnQoKTtcXHJcXG4gICAgYm9va21hcmstbGV2ZWw6IG5vbmU7XFxyXFxuICAgIGJvb2ttYXJrLXN0YXRlOiBvcGVuO1xcclxcbiAgICBib29rbWFyay10YXJnZXQ6IG5vbmU7XFxyXFxuICAgIGJvcmRlcjogMCBub25lIHRyYW5zcGFyZW50O1xcclxcbiAgICBib3JkZXItcmFkaXVzOiAwO1xcclxcbiAgICBib3R0b206IGF1dG87XFxyXFxuICAgIGJveC1hbGlnbjogc3RyZXRjaDtcXHJcXG4gICAgLXdlYmtpdC1ib3gtZGVjb3JhdGlvbi1icmVhazogc2xpY2U7XFxyXFxuICAgIGJveC1kZWNvcmF0aW9uLWJyZWFrOiBzbGljZTtcXHJcXG4gICAgYm94LWRpcmVjdGlvbjogbm9ybWFsO1xcclxcbiAgICBmbGV4OiAwLjA7XFxyXFxuICAgIGZsZXgtZ3JvdXA6IDE7XFxyXFxuICAgIGJveC1saW5lczogc2luZ2xlO1xcclxcbiAgICBib3gtb3JkaW5hbC1ncm91cDogMTtcXHJcXG4gICAgYm94LW9yaWVudDogaW5saW5lLWF4aXM7XFxyXFxuICAgIGJveC1wYWNrOiBzdGFydDtcXHJcXG4gICAgYm94LXNoYWRvdzogbm9uZTtcXHJcXG4gICAgYm94LXNpemluZzogY29udGVudC1ib3g7XFxyXFxuICAgIC13ZWJraXQtYnJlYWstYWZ0ZXI6IGF1dG87XFxyXFxuICAgIC1tb3otYnJlYWstYWZ0ZXI6IGF1dG87XFxyXFxuICAgIGJyZWFrLWFmdGVyOiBhdXRvO1xcclxcbiAgICAtd2Via2l0LWJyZWFrLWJlZm9yZTogYXV0bztcXHJcXG4gICAgLW1vei1icmVhay1iZWZvcmU6IGF1dG87XFxyXFxuICAgIGJyZWFrLWJlZm9yZTogYXV0bztcXHJcXG4gICAgLXdlYmtpdC1jb2x1bW4tYnJlYWstaW5zaWRlOiBhdXRvO1xcclxcbiAgICBwYWdlLWJyZWFrLWluc2lkZTogYXV0bztcXHJcXG4gICAgYnJlYWstaW5zaWRlOiBhdXRvO1xcclxcbiAgICBjYXB0aW9uLXNpZGU6IHRvcDtcXHJcXG4gICAgY2xlYXI6IG5vbmU7XFxyXFxuICAgIGNsaXA6IGF1dG87XFxyXFxuICAgIGNvbG9yOiBpbmhlcml0O1xcclxcbiAgICBjb2xvci1wcm9maWxlOiBhdXRvO1xcclxcbiAgICAtd2Via2l0LWNvbHVtbi1jb3VudDogYXV0bztcXHJcXG4gICAgLW1vei1jb2x1bW4tY291bnQ6IGF1dG87XFxyXFxuICAgIGNvbHVtbi1jb3VudDogYXV0bztcXHJcXG4gICAgLXdlYmtpdC1jb2x1bW4tZmlsbDogYmFsYW5jZTtcXHJcXG4gICAgLW1vei1jb2x1bW4tZmlsbDogYmFsYW5jZTtcXHJcXG4gICAgY29sdW1uLWZpbGw6IGJhbGFuY2U7XFxyXFxuICAgIC13ZWJraXQtY29sdW1uLWdhcDogbm9ybWFsO1xcclxcbiAgICAtbW96LWNvbHVtbi1nYXA6IG5vcm1hbDtcXHJcXG4gICAgY29sdW1uLWdhcDogbm9ybWFsO1xcclxcbiAgICAtd2Via2l0LWNvbHVtbi1ydWxlOiBtZWRpdW0gbWVkaXVtICMxZjFmMWY7XFxyXFxuICAgIC1tb3otY29sdW1uLXJ1bGU6IG1lZGl1bSBtZWRpdW0gIzFmMWYxZjtcXHJcXG4gICAgY29sdW1uLXJ1bGU6IG1lZGl1bSBtZWRpdW0gIzFmMWYxZjtcXHJcXG4gICAgLXdlYmtpdC1jb2x1bW4tc3BhbjogMTtcXHJcXG4gICAgLW1vei1jb2x1bW4tc3BhbjogMTtcXHJcXG4gICAgY29sdW1uLXNwYW46IDE7XFxyXFxuICAgIC13ZWJraXQtY29sdW1uLXdpZHRoOiBhdXRvO1xcclxcbiAgICAtbW96LWNvbHVtbi13aWR0aDogYXV0bztcXHJcXG4gICAgY29sdW1uLXdpZHRoOiBhdXRvO1xcclxcbiAgICAtd2Via2l0LWNvbHVtbnM6IGF1dG8gYXV0bztcXHJcXG4gICAgLW1vei1jb2x1bW5zOiBhdXRvIGF1dG87XFxyXFxuICAgIGNvbHVtbnM6IGF1dG8gYXV0bztcXHJcXG4gICAgY29udGVudDogbm9ybWFsO1xcclxcbiAgICBjb3VudGVyLWluY3JlbWVudDogbm9uZTtcXHJcXG4gICAgY291bnRlci1yZXNldDogbm9uZTtcXHJcXG4gICAgY3JvcDogYXV0bztcXHJcXG4gICAgY3Vyc29yOiBhdXRvO1xcclxcbiAgICBkaXJlY3Rpb246IGx0cjtcXHJcXG4gICAgZGlzcGxheTogaW5saW5lO1xcclxcbiAgICBkb21pbmFudC1iYXNlbGluZTogYXV0bztcXHJcXG4gICAgZHJvcC1pbml0aWFsLWFmdGVyLWFkanVzdDogdGV4dC1hZnRlci1lZGdlO1xcclxcbiAgICBkcm9wLWluaXRpYWwtYWZ0ZXItYWxpZ246IGJhc2VsaW5lO1xcclxcbiAgICBkcm9wLWluaXRpYWwtYmVmb3JlLWFkanVzdDogdGV4dC1iZWZvcmUtZWRnZTtcXHJcXG4gICAgZHJvcC1pbml0aWFsLWJlZm9yZS1hbGlnbjogY2Fwcy1oZWlnaHQ7XFxyXFxuICAgIGRyb3AtaW5pdGlhbC1zaXplOiBhdXRvO1xcclxcbiAgICBkcm9wLWluaXRpYWwtdmFsdWU6IGluaXRpYWw7XFxyXFxuICAgIGVsZXZhdGlvbjogbGV2ZWw7XFxyXFxuICAgIGVtcHR5LWNlbGxzOiBzaG93O1xcclxcbiAgICBmaXQ6IGZpbGw7XFxyXFxuICAgIGZpdC1wb3NpdGlvbjogMCUgMCU7XFxyXFxuICAgIGZsb2F0OiBub25lO1xcclxcbiAgICBmbG9hdC1vZmZzZXQ6IDAgMDtcXHJcXG4gICAgZ3JpZC1jb2x1bW5zOiBub25lO1xcclxcbiAgICBncmlkLXJvd3M6IG5vbmU7XFxyXFxuICAgIGhhbmdpbmctcHVuY3R1YXRpb246IG5vbmU7XFxyXFxuICAgIGhlaWdodDogYXV0bztcXHJcXG4gICAgaHlwaGVuYXRlLWFmdGVyOiBhdXRvO1xcclxcbiAgICBoeXBoZW5hdGUtYmVmb3JlOiBhdXRvO1xcclxcbiAgICBoeXBoZW5hdGUtY2hhcmFjdGVyOiBhdXRvO1xcclxcbiAgICBoeXBoZW5hdGUtbGluZXM6IG5vLWxpbWl0O1xcclxcbiAgICBoeXBoZW5hdGUtcmVzb3VyY2U6IG5vbmU7XFxyXFxuICAgIC13ZWJraXQtaHlwaGVuczogbWFudWFsO1xcclxcbiAgICAtbW96LWh5cGhlbnM6IG1hbnVhbDtcXHJcXG4gICAgLW1zLWh5cGhlbnM6IG1hbnVhbDtcXHJcXG4gICAgaHlwaGVuczogbWFudWFsO1xcclxcbiAgICBpY29uOiBhdXRvO1xcclxcbiAgICBpbWFnZS1vcmllbnRhdGlvbjogYXV0bztcXHJcXG4gICAgaW1hZ2UtcmVuZGVyaW5nOiBhdXRvO1xcclxcbiAgICBpbWFnZS1yZXNvbHV0aW9uOiBub3JtYWw7XFxyXFxuICAgIGlubGluZS1ib3gtYWxpZ246IGxhc3Q7XFxyXFxuICAgIGxlZnQ6IGF1dG87XFxyXFxuICAgIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xcclxcbiAgICBsaW5lLXN0YWNraW5nOiBpbmxpbmUtbGluZS1oZWlnaHQgZXhjbHVkZS1ydWJ5IGNvbnNpZGVyLXNoaWZ0cztcXHJcXG4gICAgbGlzdC1zdHlsZTogZGlzYyBvdXRzaWRlIG5vbmU7XFxyXFxuICAgIG1hcmdpbjogMDtcXHJcXG4gICAgbWFya3M6IG5vbmU7XFxyXFxuICAgIG1hcnF1ZWUtZGlyZWN0aW9uOiBmb3J3YXJkO1xcclxcbiAgICBtYXJxdWVlLWxvb3A6IDE7XFxyXFxuICAgIG1hcnF1ZWUtcGxheS1jb3VudDogMTtcXHJcXG4gICAgbWFycXVlZS1zcGVlZDogbm9ybWFsO1xcclxcbiAgICBtYXJxdWVlLXN0eWxlOiBzY3JvbGw7XFxyXFxuICAgIG1heC1oZWlnaHQ6IG5vbmU7XFxyXFxuICAgIG1heC13aWR0aDogbm9uZTtcXHJcXG4gICAgbWluLWhlaWdodDogMDtcXHJcXG4gICAgbWluLXdpZHRoOiAwO1xcclxcbiAgICBtb3ZlLXRvOiBub3JtYWw7XFxyXFxuICAgIG5hdi1kb3duOiBhdXRvO1xcclxcbiAgICBuYXYtaW5kZXg6IGF1dG87XFxyXFxuICAgIG5hdi1sZWZ0OiBhdXRvO1xcclxcbiAgICBuYXYtcmlnaHQ6IGF1dG87XFxyXFxuICAgIG5hdi11cDogYXV0bztcXHJcXG4gICAgb3BhY2l0eTogMTtcXHJcXG4gICAgb3JwaGFuczogMjtcXHJcXG4gICAgb3V0bGluZTogaW52ZXJ0IG5vbmUgbWVkaXVtO1xcclxcbiAgICBvdXRsaW5lLW9mZnNldDogMDtcXHJcXG4gICAgb3ZlcmZsb3c6IHZpc2libGU7XFxyXFxuICAgIG92ZXJmbG93LXN0eWxlOiBhdXRvO1xcclxcbiAgICBwYWRkaW5nOiAwO1xcclxcbiAgICBwYWdlOiBhdXRvO1xcclxcbiAgICBwYWdlLWJyZWFrLWFmdGVyOiBhdXRvO1xcclxcbiAgICBwYWdlLWJyZWFrLWJlZm9yZTogYXV0bztcXHJcXG4gICAgcGFnZS1icmVhay1pbnNpZGU6IGF1dG87XFxyXFxuICAgIHBhZ2UtcG9saWN5OiBzdGFydDtcXHJcXG4gICAgLXdlYmtpdC1wZXJzcGVjdGl2ZTogbm9uZTtcXHJcXG4gICAgcGVyc3BlY3RpdmU6IG5vbmU7XFxyXFxuICAgIC13ZWJraXQtcGVyc3BlY3RpdmUtb3JpZ2luOiA1MCUgNTAlO1xcclxcbiAgICBwZXJzcGVjdGl2ZS1vcmlnaW46IDUwJSA1MCU7XFxyXFxuICAgIHBvc2l0aW9uOiBzdGF0aWM7XFxyXFxuICAgIHByZXNlbnRhdGlvbi1sZXZlbDogMDtcXHJcXG4gICAgcHVuY3R1YXRpb24tdHJpbTogbm9uZTtcXHJcXG4gICAgcXVvdGVzOiBub25lO1xcclxcbiAgICByZW5kZXJpbmctaW50ZW50OiBhdXRvO1xcclxcbiAgICByZXNpemU6IG5vbmU7XFxyXFxuICAgIHJpZ2h0OiBhdXRvO1xcclxcbiAgICByb3RhdGlvbjogMDtcXHJcXG4gICAgcm90YXRpb24tcG9pbnQ6IDUwJSA1MCU7XFxyXFxuICAgIHJ1YnktYWxpZ246IGF1dG87XFxyXFxuICAgIHJ1Ynktb3Zlcmhhbmc6IG5vbmU7XFxyXFxuICAgIHJ1YnktcG9zaXRpb246IGJlZm9yZTtcXHJcXG4gICAgcnVieS1zcGFuOiBub25lO1xcclxcbiAgICBzaXplOiBhdXRvO1xcclxcbiAgICBzdHJpbmctc2V0OiBub25lO1xcclxcbiAgICB0YWJsZS1sYXlvdXQ6IGF1dG87XFxyXFxuICAgIHRvcDogYXV0bztcXHJcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IG5vbmU7XFxyXFxuICAgIC1tcy10cmFuc2Zvcm06IG5vbmU7XFxyXFxuICAgIHRyYW5zZm9ybTogbm9uZTtcXHJcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiA1MCUgNTAlIDA7XFxyXFxuICAgIC1tcy10cmFuc2Zvcm0tb3JpZ2luOiA1MCUgNTAlIDA7XFxyXFxuICAgIHRyYW5zZm9ybS1vcmlnaW46IDUwJSA1MCUgMDtcXHJcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm0tc3R5bGU6IGZsYXQ7XFxyXFxuICAgIHRyYW5zZm9ybS1zdHlsZTogZmxhdDtcXHJcXG4gICAgdHJhbnNpdGlvbjogYWxsIDAgZWFzZSAwO1xcclxcbiAgICB1bmljb2RlLWJpZGk6IG5vcm1hbDtcXHJcXG4gICAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xcclxcbiAgICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xcclxcbiAgICB3aGl0ZS1zcGFjZS1jb2xsYXBzZTogY29sbGFwc2U7XFxyXFxuICAgIHdpZG93czogMjtcXHJcXG4gICAgd2lkdGg6IGF1dG87XFxyXFxuICAgIHdvcmQtYnJlYWs6IG5vcm1hbDtcXHJcXG4gICAgd29yZC1zcGFjaW5nOiBub3JtYWw7XFxyXFxuICAgIHdvcmQtd3JhcDogbm9ybWFsO1xcclxcbiAgICB6LWluZGV4OiBhdXRvO1xcclxcbiAgICB0ZXh0LWFsaWduOiBzdGFydDtcXHJcXG4gICAgLyogQW5kIGRpc2FibGUgTVMgZ3JhZGllbnRzICovXFxyXFxuICAgIGZpbHRlcjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KGVuYWJsZWQ9ZmFsc2UpO1xcclxcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcXHJcXG4gICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcXHJcXG4gIH1cXHJcXG4gIGFkZHJlc3MsIGJsb2NrcXVvdGUsIGRkLCBkaXYsIGRsLCBkdCwgZmllbGRzZXQsIGZvcm0sIGRpdi5mb3JtLCBmcmFtZSwgZnJhbWVzZXQsIGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsIG5vZnJhbWVzLCBvbCwgcCwgdWwsIGNlbnRlciwgZGlyLCBociwgbWVudSwgcHJlLCBhcnRpY2xlLCBhc2lkZSwgY2FudmFzLCBkZXRhaWxzLCBmaWdjYXB0aW9uLCBmaWd1cmUsIGZvb3RlciwgaGVhZGVyLCBoZ3JvdXAsIG1lbnUsIG5hdiwgc2VjdGlvbiwgc3VtbWFyeSB7XFxyXFxuICAgIGRpc3BsYXk6IGJsb2NrO1xcclxcbiAgfVxcclxcbiAgbGkge1xcclxcbiAgICBkaXNwbGF5OiBsaXN0LWl0ZW07XFxyXFxuICB9XFxyXFxuICB0YWJsZSB7XFxyXFxuICAgIGRpc3BsYXk6IHRhYmxlO1xcclxcbiAgfVxcclxcbiAgdHIge1xcclxcbiAgICBkaXNwbGF5OiB0YWJsZS1yb3c7XFxyXFxuICB9XFxyXFxuICB0aGVhZCB7XFxyXFxuICAgIGRpc3BsYXk6IHRhYmxlLWhlYWRlci1ncm91cDtcXHJcXG4gIH1cXHJcXG4gIHRib2R5IHtcXHJcXG4gICAgZGlzcGxheTogdGFibGUtcm93LWdyb3VwO1xcclxcbiAgfVxcclxcbiAgdGZvb3Qge1xcclxcbiAgICBkaXNwbGF5OiB0YWJsZS1mb290ZXItZ3JvdXA7XFxyXFxuICB9XFxyXFxuICBjb2wge1xcclxcbiAgICBkaXNwbGF5OiB0YWJsZS1jb2x1bW47XFxyXFxuICB9XFxyXFxuICBjb2xncm91cCB7XFxyXFxuICAgIGRpc3BsYXk6IHRhYmxlLWNvbHVtbi1ncm91cDtcXHJcXG4gIH1cXHJcXG4gIHRkLCB0aCB7XFxyXFxuICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XFxyXFxuICB9XFxyXFxuICBjYXB0aW9uIHtcXHJcXG4gICAgZGlzcGxheTogdGFibGUtY2FwdGlvbjtcXHJcXG4gIH1cXHJcXG4gIGlucHV0LCBzZWxlY3Qge1xcclxcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxyXFxuICB9XFxyXFxuICBiLCBzdHJvbmcge1xcclxcbiAgICBmb250LXdlaWdodDogYm9sZDtcXHJcXG4gIH1cXHJcXG4gIGIgPiBpLCBzdHJvbmcgPiBpLCBiID4gZW0sIHN0cm9uZyA+IGVtIHtcXHJcXG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XFxyXFxuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcXHJcXG4gIH1cXHJcXG4gIGkgPiB7XFxyXFxuICAgIGIsIHN0cm9uZyB7XFxyXFxuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XFxyXFxuICAgICAgZm9udC1zdHlsZTogaXRhbGljO1xcclxcbiAgICB9XFxyXFxuICB9XFxyXFxuICBlbSA+IHtcXHJcXG4gICAgYiwgc3Ryb25nIHtcXHJcXG4gICAgICBmb250LXdlaWdodDogYm9sZDtcXHJcXG4gICAgICBmb250LXN0eWxlOiBpdGFsaWM7XFxyXFxuICAgIH1cXHJcXG4gIH1cXHJcXG4gIHRleHRhcmVhLCBpbnB1dCB7XFxyXFxuICAgIGN1cnNvcjogdGV4dDtcXHJcXG4gIH1cXHJcXG59XFxyXFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5sb2NhbHMgPSB7XG5cdFwicmVzZXRcIjogXCJCb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldFwiLFxuXHRcImZvcm1cIjogXCJCb29raW5nU3luY1dpZGdldFV0aWxzX19mb3JtXCIsXG5cdFwiYnV0dG9uXCI6IFwiQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fYnV0dG9uXCIsXG5cdFwibGVnZW5kXCI6IFwiQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fbGVnZW5kXCJcbn07XG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIlxuICAgICAgaW1wb3J0IEFQSSBmcm9tIFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0Rm4gZnJvbSBcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzXCI7XG4gICAgICBpbXBvcnQgc2V0QXR0cmlidXRlcyBmcm9tIFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiO1xuICAgICAgaW1wb3J0IHN0eWxlVGFnVHJhbnNmb3JtRm4gZnJvbSBcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiO1xuICAgICAgaW1wb3J0IGNvbnRlbnQsICogYXMgbmFtZWRFeHBvcnQgZnJvbSBcIiEhLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMV0udXNlWzFdIS4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1sxXS51c2VbMl0hLi9jYWxlbmRhci5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMV0udXNlWzFdIS4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1sxXS51c2VbMl0hLi9jYWxlbmRhci5zY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIiwiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgIGltcG9ydCBkb21BUEkgZnJvbSBcIiEuLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0Rm4gZnJvbSBcIiEuLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanNcIjtcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRTdHlsZUVsZW1lbnQgZnJvbSBcIiEuLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiO1xuICAgICAgaW1wb3J0IHN0eWxlVGFnVHJhbnNmb3JtRm4gZnJvbSBcIiEuLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzJdLnVzZVsxXSEuLi8uLi8uLi9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1syXS51c2VbMl0hLi9yZXNldC5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vLi4vLi4vY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1syXS51c2VbMV0hLi4vLi4vLi4vc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMl0udXNlWzJdIS4vcmVzZXQuc2Nzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgc3R5bGVzSW5ET00gPSBbXTtcblxuZnVuY3Rpb24gZ2V0SW5kZXhCeUlkZW50aWZpZXIoaWRlbnRpZmllcikge1xuICB2YXIgcmVzdWx0ID0gLTE7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHlsZXNJbkRPTS5sZW5ndGg7IGkrKykge1xuICAgIGlmIChzdHlsZXNJbkRPTVtpXS5pZGVudGlmaWVyID09PSBpZGVudGlmaWVyKSB7XG4gICAgICByZXN1bHQgPSBpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gbW9kdWxlc1RvRG9tKGxpc3QsIG9wdGlvbnMpIHtcbiAgdmFyIGlkQ291bnRNYXAgPSB7fTtcbiAgdmFyIGlkZW50aWZpZXJzID0gW107XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGl0ZW0gPSBsaXN0W2ldO1xuICAgIHZhciBpZCA9IG9wdGlvbnMuYmFzZSA/IGl0ZW1bMF0gKyBvcHRpb25zLmJhc2UgOiBpdGVtWzBdO1xuICAgIHZhciBjb3VudCA9IGlkQ291bnRNYXBbaWRdIHx8IDA7XG4gICAgdmFyIGlkZW50aWZpZXIgPSBcIlwiLmNvbmNhdChpZCwgXCIgXCIpLmNvbmNhdChjb3VudCk7XG4gICAgaWRDb3VudE1hcFtpZF0gPSBjb3VudCArIDE7XG4gICAgdmFyIGluZGV4QnlJZGVudGlmaWVyID0gZ2V0SW5kZXhCeUlkZW50aWZpZXIoaWRlbnRpZmllcik7XG4gICAgdmFyIG9iaiA9IHtcbiAgICAgIGNzczogaXRlbVsxXSxcbiAgICAgIG1lZGlhOiBpdGVtWzJdLFxuICAgICAgc291cmNlTWFwOiBpdGVtWzNdLFxuICAgICAgc3VwcG9ydHM6IGl0ZW1bNF0sXG4gICAgICBsYXllcjogaXRlbVs1XVxuICAgIH07XG5cbiAgICBpZiAoaW5kZXhCeUlkZW50aWZpZXIgIT09IC0xKSB7XG4gICAgICBzdHlsZXNJbkRPTVtpbmRleEJ5SWRlbnRpZmllcl0ucmVmZXJlbmNlcysrO1xuICAgICAgc3R5bGVzSW5ET01baW5kZXhCeUlkZW50aWZpZXJdLnVwZGF0ZXIob2JqKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHVwZGF0ZXIgPSBhZGRFbGVtZW50U3R5bGUob2JqLCBvcHRpb25zKTtcbiAgICAgIG9wdGlvbnMuYnlJbmRleCA9IGk7XG4gICAgICBzdHlsZXNJbkRPTS5zcGxpY2UoaSwgMCwge1xuICAgICAgICBpZGVudGlmaWVyOiBpZGVudGlmaWVyLFxuICAgICAgICB1cGRhdGVyOiB1cGRhdGVyLFxuICAgICAgICByZWZlcmVuY2VzOiAxXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZGVudGlmaWVycy5wdXNoKGlkZW50aWZpZXIpO1xuICB9XG5cbiAgcmV0dXJuIGlkZW50aWZpZXJzO1xufVxuXG5mdW5jdGlvbiBhZGRFbGVtZW50U3R5bGUob2JqLCBvcHRpb25zKSB7XG4gIHZhciBhcGkgPSBvcHRpb25zLmRvbUFQSShvcHRpb25zKTtcbiAgYXBpLnVwZGF0ZShvYmopO1xuXG4gIHZhciB1cGRhdGVyID0gZnVuY3Rpb24gdXBkYXRlcihuZXdPYmopIHtcbiAgICBpZiAobmV3T2JqKSB7XG4gICAgICBpZiAobmV3T2JqLmNzcyA9PT0gb2JqLmNzcyAmJiBuZXdPYmoubWVkaWEgPT09IG9iai5tZWRpYSAmJiBuZXdPYmouc291cmNlTWFwID09PSBvYmouc291cmNlTWFwICYmIG5ld09iai5zdXBwb3J0cyA9PT0gb2JqLnN1cHBvcnRzICYmIG5ld09iai5sYXllciA9PT0gb2JqLmxheWVyKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgYXBpLnVwZGF0ZShvYmogPSBuZXdPYmopO1xuICAgIH0gZWxzZSB7XG4gICAgICBhcGkucmVtb3ZlKCk7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiB1cGRhdGVyO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChsaXN0LCBvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICBsaXN0ID0gbGlzdCB8fCBbXTtcbiAgdmFyIGxhc3RJZGVudGlmaWVycyA9IG1vZHVsZXNUb0RvbShsaXN0LCBvcHRpb25zKTtcbiAgcmV0dXJuIGZ1bmN0aW9uIHVwZGF0ZShuZXdMaXN0KSB7XG4gICAgbmV3TGlzdCA9IG5ld0xpc3QgfHwgW107XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxhc3RJZGVudGlmaWVycy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGlkZW50aWZpZXIgPSBsYXN0SWRlbnRpZmllcnNbaV07XG4gICAgICB2YXIgaW5kZXggPSBnZXRJbmRleEJ5SWRlbnRpZmllcihpZGVudGlmaWVyKTtcbiAgICAgIHN0eWxlc0luRE9NW2luZGV4XS5yZWZlcmVuY2VzLS07XG4gICAgfVxuXG4gICAgdmFyIG5ld0xhc3RJZGVudGlmaWVycyA9IG1vZHVsZXNUb0RvbShuZXdMaXN0LCBvcHRpb25zKTtcblxuICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBsYXN0SWRlbnRpZmllcnMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICB2YXIgX2lkZW50aWZpZXIgPSBsYXN0SWRlbnRpZmllcnNbX2ldO1xuXG4gICAgICB2YXIgX2luZGV4ID0gZ2V0SW5kZXhCeUlkZW50aWZpZXIoX2lkZW50aWZpZXIpO1xuXG4gICAgICBpZiAoc3R5bGVzSW5ET01bX2luZGV4XS5yZWZlcmVuY2VzID09PSAwKSB7XG4gICAgICAgIHN0eWxlc0luRE9NW19pbmRleF0udXBkYXRlcigpO1xuXG4gICAgICAgIHN0eWxlc0luRE9NLnNwbGljZShfaW5kZXgsIDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxhc3RJZGVudGlmaWVycyA9IG5ld0xhc3RJZGVudGlmaWVycztcbiAgfTtcbn07IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBtZW1vID0ge307XG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cblxuZnVuY3Rpb24gZ2V0VGFyZ2V0KHRhcmdldCkge1xuICBpZiAodHlwZW9mIG1lbW9bdGFyZ2V0XSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgIHZhciBzdHlsZVRhcmdldCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodGFyZ2V0KTsgLy8gU3BlY2lhbCBjYXNlIHRvIHJldHVybiBoZWFkIG9mIGlmcmFtZSBpbnN0ZWFkIG9mIGlmcmFtZSBpdHNlbGZcblxuICAgIGlmICh3aW5kb3cuSFRNTElGcmFtZUVsZW1lbnQgJiYgc3R5bGVUYXJnZXQgaW5zdGFuY2VvZiB3aW5kb3cuSFRNTElGcmFtZUVsZW1lbnQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIFRoaXMgd2lsbCB0aHJvdyBhbiBleGNlcHRpb24gaWYgYWNjZXNzIHRvIGlmcmFtZSBpcyBibG9ja2VkXG4gICAgICAgIC8vIGR1ZSB0byBjcm9zcy1vcmlnaW4gcmVzdHJpY3Rpb25zXG4gICAgICAgIHN0eWxlVGFyZ2V0ID0gc3R5bGVUYXJnZXQuY29udGVudERvY3VtZW50LmhlYWQ7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG4gICAgICAgIHN0eWxlVGFyZ2V0ID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBtZW1vW3RhcmdldF0gPSBzdHlsZVRhcmdldDtcbiAgfVxuXG4gIHJldHVybiBtZW1vW3RhcmdldF07XG59XG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cblxuXG5mdW5jdGlvbiBpbnNlcnRCeVNlbGVjdG9yKGluc2VydCwgc3R5bGUpIHtcbiAgdmFyIHRhcmdldCA9IGdldFRhcmdldChpbnNlcnQpO1xuXG4gIGlmICghdGFyZ2V0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiQ291bGRuJ3QgZmluZCBhIHN0eWxlIHRhcmdldC4gVGhpcyBwcm9iYWJseSBtZWFucyB0aGF0IHRoZSB2YWx1ZSBmb3IgdGhlICdpbnNlcnQnIHBhcmFtZXRlciBpcyBpbnZhbGlkLlwiKTtcbiAgfVxuXG4gIHRhcmdldC5hcHBlbmRDaGlsZChzdHlsZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaW5zZXJ0QnlTZWxlY3RvcjsiLCJcInVzZSBzdHJpY3RcIjtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBpbnNlcnRTdHlsZUVsZW1lbnQob3B0aW9ucykge1xuICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKTtcbiAgb3B0aW9ucy5zZXRBdHRyaWJ1dGVzKGVsZW1lbnQsIG9wdGlvbnMuYXR0cmlidXRlcyk7XG4gIG9wdGlvbnMuaW5zZXJ0KGVsZW1lbnQsIG9wdGlvbnMub3B0aW9ucyk7XG4gIHJldHVybiBlbGVtZW50O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGluc2VydFN0eWxlRWxlbWVudDsiLCJcInVzZSBzdHJpY3RcIjtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBzZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMoc3R5bGVFbGVtZW50KSB7XG4gIHZhciBub25jZSA9IHR5cGVvZiBfX3dlYnBhY2tfbm9uY2VfXyAhPT0gXCJ1bmRlZmluZWRcIiA/IF9fd2VicGFja19ub25jZV9fIDogbnVsbDtcblxuICBpZiAobm9uY2UpIHtcbiAgICBzdHlsZUVsZW1lbnQuc2V0QXR0cmlidXRlKFwibm9uY2VcIiwgbm9uY2UpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzOyIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIGFwcGx5KHN0eWxlRWxlbWVudCwgb3B0aW9ucywgb2JqKSB7XG4gIHZhciBjc3MgPSBcIlwiO1xuXG4gIGlmIChvYmouc3VwcG9ydHMpIHtcbiAgICBjc3MgKz0gXCJAc3VwcG9ydHMgKFwiLmNvbmNhdChvYmouc3VwcG9ydHMsIFwiKSB7XCIpO1xuICB9XG5cbiAgaWYgKG9iai5tZWRpYSkge1xuICAgIGNzcyArPSBcIkBtZWRpYSBcIi5jb25jYXQob2JqLm1lZGlhLCBcIiB7XCIpO1xuICB9XG5cbiAgdmFyIG5lZWRMYXllciA9IHR5cGVvZiBvYmoubGF5ZXIgIT09IFwidW5kZWZpbmVkXCI7XG5cbiAgaWYgKG5lZWRMYXllcikge1xuICAgIGNzcyArPSBcIkBsYXllclwiLmNvbmNhdChvYmoubGF5ZXIubGVuZ3RoID4gMCA/IFwiIFwiLmNvbmNhdChvYmoubGF5ZXIpIDogXCJcIiwgXCIge1wiKTtcbiAgfVxuXG4gIGNzcyArPSBvYmouY3NzO1xuXG4gIGlmIChuZWVkTGF5ZXIpIHtcbiAgICBjc3MgKz0gXCJ9XCI7XG4gIH1cblxuICBpZiAob2JqLm1lZGlhKSB7XG4gICAgY3NzICs9IFwifVwiO1xuICB9XG5cbiAgaWYgKG9iai5zdXBwb3J0cykge1xuICAgIGNzcyArPSBcIn1cIjtcbiAgfVxuXG4gIHZhciBzb3VyY2VNYXAgPSBvYmouc291cmNlTWFwO1xuXG4gIGlmIChzb3VyY2VNYXAgJiYgdHlwZW9mIGJ0b2EgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICBjc3MgKz0gXCJcXG4vKiMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LFwiLmNvbmNhdChidG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShzb3VyY2VNYXApKSkpLCBcIiAqL1wiKTtcbiAgfSAvLyBGb3Igb2xkIElFXG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICAqL1xuXG5cbiAgb3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybShjc3MsIHN0eWxlRWxlbWVudCwgb3B0aW9ucy5vcHRpb25zKTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlU3R5bGVFbGVtZW50KHN0eWxlRWxlbWVudCkge1xuICAvLyBpc3RhbmJ1bCBpZ25vcmUgaWZcbiAgaWYgKHN0eWxlRWxlbWVudC5wYXJlbnROb2RlID09PSBudWxsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgc3R5bGVFbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoc3R5bGVFbGVtZW50KTtcbn1cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuXG5cbmZ1bmN0aW9uIGRvbUFQSShvcHRpb25zKSB7XG4gIHZhciBzdHlsZUVsZW1lbnQgPSBvcHRpb25zLmluc2VydFN0eWxlRWxlbWVudChvcHRpb25zKTtcbiAgcmV0dXJuIHtcbiAgICB1cGRhdGU6IGZ1bmN0aW9uIHVwZGF0ZShvYmopIHtcbiAgICAgIGFwcGx5KHN0eWxlRWxlbWVudCwgb3B0aW9ucywgb2JqKTtcbiAgICB9LFxuICAgIHJlbW92ZTogZnVuY3Rpb24gcmVtb3ZlKCkge1xuICAgICAgcmVtb3ZlU3R5bGVFbGVtZW50KHN0eWxlRWxlbWVudCk7XG4gICAgfVxuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGRvbUFQSTsiLCJcInVzZSBzdHJpY3RcIjtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBzdHlsZVRhZ1RyYW5zZm9ybShjc3MsIHN0eWxlRWxlbWVudCkge1xuICBpZiAoc3R5bGVFbGVtZW50LnN0eWxlU2hlZXQpIHtcbiAgICBzdHlsZUVsZW1lbnQuc3R5bGVTaGVldC5jc3NUZXh0ID0gY3NzO1xuICB9IGVsc2Uge1xuICAgIHdoaWxlIChzdHlsZUVsZW1lbnQuZmlyc3RDaGlsZCkge1xuICAgICAgc3R5bGVFbGVtZW50LnJlbW92ZUNoaWxkKHN0eWxlRWxlbWVudC5maXJzdENoaWxkKTtcbiAgICB9XG5cbiAgICBzdHlsZUVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3NzKSk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdHlsZVRhZ1RyYW5zZm9ybTsiLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdGlkOiBtb2R1bGVJZCxcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuLy8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbl9fd2VicGFja19yZXF1aXJlX18ubSA9IF9fd2VicGFja19tb2R1bGVzX187XG5cbiIsIi8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSAobW9kdWxlKSA9PiB7XG5cdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuXHRcdCgpID0+IChtb2R1bGVbJ2RlZmF1bHQnXSkgOlxuXHRcdCgpID0+IChtb2R1bGUpO1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCB7IGE6IGdldHRlciB9KTtcblx0cmV0dXJuIGdldHRlcjtcbn07IiwiLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gKGV4cG9ydHMsIGRlZmluaXRpb24pID0+IHtcblx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcblx0XHR9XG5cdH1cbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gKG9iaiwgcHJvcCkgPT4gKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApKSIsIi8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uciA9IChleHBvcnRzKSA9PiB7XG5cdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuXHR9XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18uYiA9IGRvY3VtZW50LmJhc2VVUkkgfHwgc2VsZi5sb2NhdGlvbi5ocmVmO1xuXG4vLyBvYmplY3QgdG8gc3RvcmUgbG9hZGVkIGFuZCBsb2FkaW5nIGNodW5rc1xuLy8gdW5kZWZpbmVkID0gY2h1bmsgbm90IGxvYWRlZCwgbnVsbCA9IGNodW5rIHByZWxvYWRlZC9wcmVmZXRjaGVkXG4vLyBbcmVzb2x2ZSwgcmVqZWN0LCBQcm9taXNlXSA9IGNodW5rIGxvYWRpbmcsIDAgPSBjaHVuayBsb2FkZWRcbnZhciBpbnN0YWxsZWRDaHVua3MgPSB7XG5cdFwiYXBwXCI6IDBcbn07XG5cbi8vIG5vIGNodW5rIG9uIGRlbWFuZCBsb2FkaW5nXG5cbi8vIG5vIHByZWZldGNoaW5nXG5cbi8vIG5vIHByZWxvYWRlZFxuXG4vLyBubyBITVJcblxuLy8gbm8gSE1SIG1hbmlmZXN0XG5cbi8vIG5vIG9uIGNodW5rcyBsb2FkZWRcblxuLy8gbm8ganNvbnAgZnVuY3Rpb24iLCIvKiBnbG9iYWwgZG9jdW1lbnQsIHJlcXVpcmUsIHdpbmRvdyAqL1xubGV0IENhbGVuZGFyID0gcmVxdWlyZSgnLi9jYWxlbmRhcicpO1xuXG5DYWxlbmRhciA9IENhbGVuZGFyLmRlZmF1bHQ7XG5cbi8vIEV4cG9ydCBXaWRnZXRVdGlsc1xud2luZG93LkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHMgPSByZXF1aXJlKCd3aWRnZXQtdXRpbHMnKTtcblxuLy8gRXhwb3J0IFBvcHBlclxud2luZG93LlBvcHBlciA9IHJlcXVpcmUoJ0Bwb3BwZXJqcy9jb3JlJyk7XG5cbkNhbGVuZGFyLmluaXQgPSAob3B0cykgPT4ge1xuICBjb25zdCBpbml0aWFsaXplZCA9IFtdO1xuICBjb25zdCBvcHRpb25zICAgICA9IG9wdHMgfHwge307XG4gIGNvbnN0IGVsZW1lbnRzICAgID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0XScpO1xuXG4gIGVsZW1lbnRzLmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICBvcHRpb25zLmVsID0gZWxlbWVudDtcbiAgICBjb25zdCBjYWwgID0gbmV3IENhbGVuZGFyKG9wdGlvbnMpO1xuXG4gICAgaW5pdGlhbGl6ZWQucHVzaChjYWwpO1xuICB9KTtcblxuICBDYWxlbmRhci5pbnN0YW5jZXMgPSBpbml0aWFsaXplZDtcbiAgcmV0dXJuIGluaXRpYWxpemVkO1xufTtcblxuQ2FsZW5kYXIuVkVSU0lPTiA9IHJlcXVpcmUoJy4uL3BhY2thZ2UuanNvbicpLnZlcnNpb247XG5cbmlmIChkb2N1bWVudC5yZWFkeVN0YXRlICE9PSAnbG9hZGluZycpIHtcbiAgQ2FsZW5kYXIuaW5pdCgpO1xufSBlbHNlIHtcbiAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsICgpID0+IHtcbiAgICBDYWxlbmRhci5pbml0KCk7XG4gIH0pO1xufVxuXG53aW5kb3cuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldCA9IENhbGVuZGFyO1xuXG5leHBvcnQgZGVmYXVsdCBDYWxlbmRhcjtcbiJdLCJuYW1lcyI6WyJnZXRDb21wb3NpdGVSZWN0IiwiZ2V0TGF5b3V0UmVjdCIsImxpc3RTY3JvbGxQYXJlbnRzIiwiZ2V0T2Zmc2V0UGFyZW50IiwiZ2V0Q29tcHV0ZWRTdHlsZSIsIm9yZGVyTW9kaWZpZXJzIiwiZGVib3VuY2UiLCJ2YWxpZGF0ZU1vZGlmaWVycyIsInVuaXF1ZUJ5IiwiZ2V0QmFzZVBsYWNlbWVudCIsIm1lcmdlQnlOYW1lIiwiZGV0ZWN0T3ZlcmZsb3ciLCJpc0VsZW1lbnQiLCJhdXRvIiwiSU5WQUxJRF9FTEVNRU5UX0VSUk9SIiwiSU5GSU5JVEVfTE9PUF9FUlJPUiIsIkRFRkFVTFRfT1BUSU9OUyIsInBsYWNlbWVudCIsIm1vZGlmaWVycyIsInN0cmF0ZWd5IiwiYXJlVmFsaWRFbGVtZW50cyIsIl9sZW4iLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJhcmdzIiwiQXJyYXkiLCJfa2V5Iiwic29tZSIsImVsZW1lbnQiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJwb3BwZXJHZW5lcmF0b3IiLCJnZW5lcmF0b3JPcHRpb25zIiwiX2dlbmVyYXRvck9wdGlvbnMiLCJfZ2VuZXJhdG9yT3B0aW9ucyRkZWYiLCJkZWZhdWx0TW9kaWZpZXJzIiwiX2dlbmVyYXRvck9wdGlvbnMkZGVmMiIsImRlZmF1bHRPcHRpb25zIiwiY3JlYXRlUG9wcGVyIiwicmVmZXJlbmNlIiwicG9wcGVyIiwib3B0aW9ucyIsInN0YXRlIiwib3JkZXJlZE1vZGlmaWVycyIsIk9iamVjdCIsImFzc2lnbiIsIm1vZGlmaWVyc0RhdGEiLCJlbGVtZW50cyIsImF0dHJpYnV0ZXMiLCJzdHlsZXMiLCJlZmZlY3RDbGVhbnVwRm5zIiwiaXNEZXN0cm95ZWQiLCJpbnN0YW5jZSIsInNldE9wdGlvbnMiLCJzZXRPcHRpb25zQWN0aW9uIiwiY2xlYW51cE1vZGlmaWVyRWZmZWN0cyIsInNjcm9sbFBhcmVudHMiLCJjb250ZXh0RWxlbWVudCIsImNvbmNhdCIsImZpbHRlciIsIm0iLCJlbmFibGVkIiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwiX3JlZiIsIm5hbWUiLCJmbGlwTW9kaWZpZXIiLCJmaW5kIiwiX3JlZjIiLCJjb25zb2xlIiwiZXJyb3IiLCJqb2luIiwiX2dldENvbXB1dGVkU3R5bGUiLCJtYXJnaW5Ub3AiLCJtYXJnaW5SaWdodCIsIm1hcmdpbkJvdHRvbSIsIm1hcmdpbkxlZnQiLCJtYXJnaW4iLCJwYXJzZUZsb2F0Iiwid2FybiIsInJ1bk1vZGlmaWVyRWZmZWN0cyIsInVwZGF0ZSIsImZvcmNlVXBkYXRlIiwiX3N0YXRlJGVsZW1lbnRzIiwicmVjdHMiLCJyZXNldCIsImZvckVhY2giLCJtb2RpZmllciIsImRhdGEiLCJfX2RlYnVnX2xvb3BzX18iLCJpbmRleCIsIl9zdGF0ZSRvcmRlcmVkTW9kaWZpZSIsImZuIiwiX3N0YXRlJG9yZGVyZWRNb2RpZmllMiIsIl9vcHRpb25zIiwiUHJvbWlzZSIsInJlc29sdmUiLCJkZXN0cm95IiwidGhlbiIsIm9uRmlyc3RVcGRhdGUiLCJfcmVmMyIsIl9yZWYzJG9wdGlvbnMiLCJlZmZlY3QiLCJjbGVhbnVwRm4iLCJub29wRm4iLCJwdXNoIiwiaXNTaGFkb3dSb290IiwiY29udGFpbnMiLCJwYXJlbnQiLCJjaGlsZCIsInJvb3ROb2RlIiwiZ2V0Um9vdE5vZGUiLCJuZXh0IiwiaXNTYW1lTm9kZSIsInBhcmVudE5vZGUiLCJob3N0IiwiaXNIVE1MRWxlbWVudCIsInJvdW5kIiwiaW5jbHVkZVNjYWxlIiwicmVjdCIsInNjYWxlWCIsInNjYWxlWSIsIm9mZnNldEhlaWdodCIsIm9mZnNldFdpZHRoIiwid2lkdGgiLCJoZWlnaHQiLCJ0b3AiLCJyaWdodCIsImJvdHRvbSIsImxlZnQiLCJ4IiwieSIsInZpZXdwb3J0IiwiZ2V0Vmlld3BvcnRSZWN0IiwiZ2V0RG9jdW1lbnRSZWN0IiwiZ2V0RG9jdW1lbnRFbGVtZW50IiwiZ2V0UGFyZW50Tm9kZSIsImdldE5vZGVOYW1lIiwicmVjdFRvQ2xpZW50UmVjdCIsIm1heCIsIm1pbiIsImdldElubmVyQm91bmRpbmdDbGllbnRSZWN0IiwiY2xpZW50VG9wIiwiY2xpZW50TGVmdCIsImNsaWVudEhlaWdodCIsImNsaWVudFdpZHRoIiwiZ2V0Q2xpZW50UmVjdEZyb21NaXhlZFR5cGUiLCJjbGlwcGluZ1BhcmVudCIsImdldENsaXBwaW5nUGFyZW50cyIsImNsaXBwaW5nUGFyZW50cyIsImNhbkVzY2FwZUNsaXBwaW5nIiwiaW5kZXhPZiIsInBvc2l0aW9uIiwiY2xpcHBlckVsZW1lbnQiLCJnZXRDbGlwcGluZ1JlY3QiLCJib3VuZGFyeSIsInJvb3RCb3VuZGFyeSIsIm1haW5DbGlwcGluZ1BhcmVudHMiLCJmaXJzdENsaXBwaW5nUGFyZW50IiwiY2xpcHBpbmdSZWN0IiwicmVkdWNlIiwiYWNjUmVjdCIsImdldE5vZGVTY3JvbGwiLCJnZXRXaW5kb3dTY3JvbGxCYXJYIiwiaXNTY3JvbGxQYXJlbnQiLCJpc0VsZW1lbnRTY2FsZWQiLCJlbGVtZW50T3JWaXJ0dWFsRWxlbWVudCIsIm9mZnNldFBhcmVudCIsImlzRml4ZWQiLCJpc09mZnNldFBhcmVudEFuRWxlbWVudCIsIm9mZnNldFBhcmVudElzU2NhbGVkIiwiZG9jdW1lbnRFbGVtZW50Iiwic2Nyb2xsIiwic2Nyb2xsTGVmdCIsInNjcm9sbFRvcCIsIm9mZnNldHMiLCJnZXRXaW5kb3ciLCJvd25lckRvY3VtZW50IiwiZG9jdW1lbnQiLCJ3aW5kb3ciLCJnZXRXaW5kb3dTY3JvbGwiLCJfZWxlbWVudCRvd25lckRvY3VtZW4iLCJodG1sIiwid2luU2Nyb2xsIiwiYm9keSIsInNjcm9sbFdpZHRoIiwic2Nyb2xsSGVpZ2h0IiwiZGlyZWN0aW9uIiwiZ2V0SFRNTEVsZW1lbnRTY3JvbGwiLCJjbGllbnRSZWN0IiwiTWF0aCIsImFicyIsIm9mZnNldExlZnQiLCJvZmZzZXRUb3AiLCJub2RlTmFtZSIsInRvTG93ZXJDYXNlIiwibm9kZSIsImlzVGFibGVFbGVtZW50IiwiZ2V0VHJ1ZU9mZnNldFBhcmVudCIsImdldENvbnRhaW5pbmdCbG9jayIsImlzRmlyZWZveCIsIm5hdmlnYXRvciIsInVzZXJBZ2VudCIsImlzSUUiLCJlbGVtZW50Q3NzIiwiY3VycmVudE5vZGUiLCJjc3MiLCJ0cmFuc2Zvcm0iLCJwZXJzcGVjdGl2ZSIsImNvbnRhaW4iLCJ3aWxsQ2hhbmdlIiwiYXNzaWduZWRTbG90IiwiZ2V0U2Nyb2xsUGFyZW50Iiwid2luIiwidmlzdWFsVmlld3BvcnQiLCJ0ZXN0IiwidG9TdHJpbmciLCJkZWZhdWx0VmlldyIsInBhZ2VYT2Zmc2V0IiwicGFnZVlPZmZzZXQiLCJPd25FbGVtZW50IiwiRWxlbWVudCIsIkhUTUxFbGVtZW50IiwiU2hhZG93Um9vdCIsIm92ZXJmbG93Iiwib3ZlcmZsb3dYIiwib3ZlcmZsb3dZIiwibGlzdCIsInNjcm9sbFBhcmVudCIsImlzQm9keSIsInRhcmdldCIsInVwZGF0ZWRMaXN0IiwiYmFzZVBsYWNlbWVudHMiLCJzdGFydCIsImVuZCIsInZhcmlhdGlvblBsYWNlbWVudHMiLCJhY2MiLCJwbGFjZW1lbnRzIiwiYmVmb3JlUmVhZCIsInJlYWQiLCJhZnRlclJlYWQiLCJiZWZvcmVNYWluIiwibWFpbiIsImFmdGVyTWFpbiIsImJlZm9yZVdyaXRlIiwid3JpdGUiLCJhZnRlcldyaXRlIiwibW9kaWZpZXJQaGFzZXMiLCJjcmVhdGVQb3BwZXJCYXNlIiwiY3JlYXRlUG9wcGVyTGl0ZSIsImFwcGx5U3R5bGVzIiwia2V5cyIsInN0eWxlIiwidmFsdWUiLCJyZW1vdmVBdHRyaWJ1dGUiLCJzZXRBdHRyaWJ1dGUiLCJpbml0aWFsU3R5bGVzIiwiYXJyb3ciLCJzdHlsZVByb3BlcnRpZXMiLCJoYXNPd25Qcm9wZXJ0eSIsInByb3BlcnR5IiwiYXR0cmlidXRlIiwicGhhc2UiLCJyZXF1aXJlcyIsImdldE1haW5BeGlzRnJvbVBsYWNlbWVudCIsIndpdGhpbiIsIm1lcmdlUGFkZGluZ09iamVjdCIsImV4cGFuZFRvSGFzaE1hcCIsInRvUGFkZGluZ09iamVjdCIsInBhZGRpbmciLCJfc3RhdGUkbW9kaWZpZXJzRGF0YSQiLCJhcnJvd0VsZW1lbnQiLCJwb3BwZXJPZmZzZXRzIiwiYmFzZVBsYWNlbWVudCIsImF4aXMiLCJpc1ZlcnRpY2FsIiwibGVuIiwicGFkZGluZ09iamVjdCIsImFycm93UmVjdCIsIm1pblByb3AiLCJtYXhQcm9wIiwiZW5kRGlmZiIsInN0YXJ0RGlmZiIsImFycm93T2Zmc2V0UGFyZW50IiwiY2xpZW50U2l6ZSIsImNlbnRlclRvUmVmZXJlbmNlIiwiY2VudGVyIiwib2Zmc2V0IiwiYXhpc1Byb3AiLCJjZW50ZXJPZmZzZXQiLCJfb3B0aW9ucyRlbGVtZW50IiwicXVlcnlTZWxlY3RvciIsInJlcXVpcmVzSWZFeGlzdHMiLCJnZXRWYXJpYXRpb24iLCJ1bnNldFNpZGVzIiwicm91bmRPZmZzZXRzQnlEUFIiLCJkcHIiLCJkZXZpY2VQaXhlbFJhdGlvIiwibWFwVG9TdHlsZXMiLCJfT2JqZWN0JGFzc2lnbjIiLCJwb3BwZXJSZWN0IiwidmFyaWF0aW9uIiwiZ3B1QWNjZWxlcmF0aW9uIiwiYWRhcHRpdmUiLCJyb3VuZE9mZnNldHMiLCJfb2Zmc2V0cyR4IiwiX29mZnNldHMkeSIsImhhc1giLCJoYXNZIiwic2lkZVgiLCJzaWRlWSIsImhlaWdodFByb3AiLCJ3aWR0aFByb3AiLCJvZmZzZXRZIiwib2Zmc2V0WCIsImNvbW1vblN0eWxlcyIsIl9yZWY0IiwiX09iamVjdCRhc3NpZ24iLCJjb21wdXRlU3R5bGVzIiwiX3JlZjUiLCJfb3B0aW9ucyRncHVBY2NlbGVyYXQiLCJfb3B0aW9ucyRhZGFwdGl2ZSIsIl9vcHRpb25zJHJvdW5kT2Zmc2V0cyIsInRyYW5zaXRpb25Qcm9wZXJ0eSIsInBhc3NpdmUiLCJfb3B0aW9ucyRzY3JvbGwiLCJfb3B0aW9ucyRyZXNpemUiLCJyZXNpemUiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImdldE9wcG9zaXRlUGxhY2VtZW50IiwiZ2V0T3Bwb3NpdGVWYXJpYXRpb25QbGFjZW1lbnQiLCJjb21wdXRlQXV0b1BsYWNlbWVudCIsImdldEV4cGFuZGVkRmFsbGJhY2tQbGFjZW1lbnRzIiwib3Bwb3NpdGVQbGFjZW1lbnQiLCJmbGlwIiwiX3NraXAiLCJfb3B0aW9ucyRtYWluQXhpcyIsIm1haW5BeGlzIiwiY2hlY2tNYWluQXhpcyIsIl9vcHRpb25zJGFsdEF4aXMiLCJhbHRBeGlzIiwiY2hlY2tBbHRBeGlzIiwic3BlY2lmaWVkRmFsbGJhY2tQbGFjZW1lbnRzIiwiZmFsbGJhY2tQbGFjZW1lbnRzIiwiYWx0Qm91bmRhcnkiLCJfb3B0aW9ucyRmbGlwVmFyaWF0aW8iLCJmbGlwVmFyaWF0aW9ucyIsImFsbG93ZWRBdXRvUGxhY2VtZW50cyIsInByZWZlcnJlZFBsYWNlbWVudCIsImlzQmFzZVBsYWNlbWVudCIsInJlZmVyZW5jZVJlY3QiLCJjaGVja3NNYXAiLCJNYXAiLCJtYWtlRmFsbGJhY2tDaGVja3MiLCJmaXJzdEZpdHRpbmdQbGFjZW1lbnQiLCJpIiwiX2Jhc2VQbGFjZW1lbnQiLCJpc1N0YXJ0VmFyaWF0aW9uIiwibWFpblZhcmlhdGlvblNpZGUiLCJhbHRWYXJpYXRpb25TaWRlIiwiY2hlY2tzIiwiZXZlcnkiLCJjaGVjayIsInNldCIsIm51bWJlck9mQ2hlY2tzIiwiX2xvb3AiLCJfaSIsImZpdHRpbmdQbGFjZW1lbnQiLCJnZXQiLCJzbGljZSIsIl9yZXQiLCJnZXRTaWRlT2Zmc2V0cyIsInByZXZlbnRlZE9mZnNldHMiLCJpc0FueVNpZGVGdWxseUNsaXBwZWQiLCJzaWRlIiwiaGlkZSIsInByZXZlbnRPdmVyZmxvdyIsInJlZmVyZW5jZU92ZXJmbG93IiwiZWxlbWVudENvbnRleHQiLCJwb3BwZXJBbHRPdmVyZmxvdyIsInJlZmVyZW5jZUNsaXBwaW5nT2Zmc2V0cyIsInBvcHBlckVzY2FwZU9mZnNldHMiLCJpc1JlZmVyZW5jZUhpZGRlbiIsImhhc1BvcHBlckVzY2FwZWQiLCJkZWZhdWx0IiwiZXZlbnRMaXN0ZW5lcnMiLCJkaXN0YW5jZUFuZFNraWRkaW5nVG9YWSIsImludmVydERpc3RhbmNlIiwic2tpZGRpbmciLCJkaXN0YW5jZSIsIl9vcHRpb25zJG9mZnNldCIsIl9kYXRhJHN0YXRlJHBsYWNlbWVudCIsImNvbXB1dGVPZmZzZXRzIiwiZ2V0QWx0QXhpcyIsIndpdGhpbk1heENsYW1wIiwiZ2V0RnJlc2hTaWRlT2JqZWN0IiwibWF0aE1pbiIsIm1hdGhNYXgiLCJfb3B0aW9ucyR0ZXRoZXIiLCJ0ZXRoZXIiLCJfb3B0aW9ucyR0ZXRoZXJPZmZzZXQiLCJ0ZXRoZXJPZmZzZXQiLCJ0ZXRoZXJPZmZzZXRWYWx1ZSIsIm5vcm1hbGl6ZWRUZXRoZXJPZmZzZXRWYWx1ZSIsIm9mZnNldE1vZGlmaWVyU3RhdGUiLCJfb2Zmc2V0TW9kaWZpZXJTdGF0ZSQiLCJtYWluU2lkZSIsImFsdFNpZGUiLCJhZGRpdGl2ZSIsIm1pbkxlbiIsIm1heExlbiIsImFycm93UGFkZGluZ09iamVjdCIsImFycm93UGFkZGluZ01pbiIsImFycm93UGFkZGluZ01heCIsImFycm93TGVuIiwibWluT2Zmc2V0IiwibWF4T2Zmc2V0IiwiY2xpZW50T2Zmc2V0Iiwib2Zmc2V0TW9kaWZpZXJWYWx1ZSIsInRldGhlck1pbiIsInRldGhlck1heCIsInByZXZlbnRlZE9mZnNldCIsIl9vZmZzZXRNb2RpZmllclN0YXRlJDIiLCJfbWFpblNpZGUiLCJfYWx0U2lkZSIsIl9vZmZzZXQiLCJfbWluIiwiX21heCIsImlzT3JpZ2luU2lkZSIsIl9vZmZzZXRNb2RpZmllclZhbHVlIiwiX3RldGhlck1pbiIsIl90ZXRoZXJNYXgiLCJfcHJldmVudGVkT2Zmc2V0IiwiYWxsUGxhY2VtZW50cyIsIl9vcHRpb25zJGFsbG93ZWRBdXRvUCIsImFsbG93ZWRQbGFjZW1lbnRzIiwib3ZlcmZsb3dzIiwic29ydCIsImEiLCJiIiwiY29tbW9uWCIsImNvbW1vblkiLCJwZW5kaW5nIiwidW5kZWZpbmVkIiwiX29wdGlvbnMkcGxhY2VtZW50IiwiX29wdGlvbnMkYm91bmRhcnkiLCJfb3B0aW9ucyRyb290Qm91bmRhcnkiLCJfb3B0aW9ucyRlbGVtZW50Q29udGUiLCJfb3B0aW9ucyRhbHRCb3VuZGFyeSIsIl9vcHRpb25zJHBhZGRpbmciLCJhbHRDb250ZXh0IiwiY2xpcHBpbmdDbGllbnRSZWN0IiwicmVmZXJlbmNlQ2xpZW50UmVjdCIsInBvcHBlckNsaWVudFJlY3QiLCJlbGVtZW50Q2xpZW50UmVjdCIsIm92ZXJmbG93T2Zmc2V0cyIsIm9mZnNldERhdGEiLCJrZXkiLCJtdWx0aXBseSIsImhhc2hNYXAiLCJmb3JtYXQiLCJzdHIiLCJwIiwiYyIsInJlcGxhY2UiLCJzcGxpdCIsImhhc2giLCJtYXRjaGVkIiwibWVyZ2VkIiwiY3VycmVudCIsImV4aXN0aW5nIiwibWFwIiwib3JkZXIiLCJ2aXNpdGVkIiwiU2V0IiwicmVzdWx0IiwiYWRkIiwiZGVwIiwiaGFzIiwiZGVwTW9kaWZpZXIiLCJhcnIiLCJpZGVudGlmaWVycyIsIml0ZW0iLCJpZGVudGlmaWVyIiwiSU5WQUxJRF9NT0RJRklFUl9FUlJPUiIsIk1JU1NJTkdfREVQRU5ERU5DWV9FUlJPUiIsIlZBTElEX1BST1BFUlRJRVMiLCJzZWxmIiwiU3RyaW5nIiwiaXNBcnJheSIsInMiLCJyZXF1aXJlbWVudCIsIm1vZCIsInYiLCJtb2R1bGUiLCJleHBvcnRzIiwiY3NzV2l0aE1hcHBpbmdUb1N0cmluZyIsImNvbnRlbnQiLCJuZWVkTGF5ZXIiLCJtb2R1bGVzIiwibWVkaWEiLCJkZWR1cGUiLCJzdXBwb3J0cyIsImxheWVyIiwiYWxyZWFkeUltcG9ydGVkTW9kdWxlcyIsImsiLCJpZCIsIl9rIiwidXJsIiwiX19lc01vZHVsZSIsIm5lZWRRdW90ZXMiLCJjc3NNYXBwaW5nIiwiYnRvYSIsImJhc2U2NCIsInVuZXNjYXBlIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwiSlNPTiIsInN0cmluZ2lmeSIsInNvdXJjZU1hcHBpbmciLCJzb3VyY2VVUkxzIiwic291cmNlcyIsInNvdXJjZSIsInNvdXJjZVJvb3QiLCJjdXJyZW5jeVN5bWJvbE1hcCIsInJlcXVpcmUiLCJnZXRTeW1ib2xGcm9tQ3VycmVuY3kiLCJjdXJyZW5jeUNvZGUiLCJjb2RlIiwidG9VcHBlckNhc2UiLCJwcm90b3R5cGUiLCJjYWxsIiwiQUVEIiwiQUZOIiwiQUxMIiwiQU1EIiwiQU5HIiwiQU9BIiwiQVJTIiwiQVVEIiwiQVdHIiwiQVpOIiwiQkFNIiwiQkJEIiwiQkRUIiwiQkdOIiwiQkhEIiwiQklGIiwiQk1EIiwiQk5EIiwiQk9CIiwiQk9WIiwiQlJMIiwiQlNEIiwiQlRDIiwiQlROIiwiQldQIiwiQllOIiwiQllSIiwiQlpEIiwiQ0FEIiwiQ0RGIiwiQ0hFIiwiQ0hGIiwiQ0hXIiwiQ0xGIiwiQ0xQIiwiQ05ZIiwiQ09QIiwiQ09VIiwiQ1JDIiwiQ1VDIiwiQ1VQIiwiQ1ZFIiwiQ1pLIiwiREpGIiwiREtLIiwiRE9QIiwiRFpEIiwiRUVLIiwiRUdQIiwiRVJOIiwiRVRCIiwiRVRIIiwiRVVSIiwiRkpEIiwiRktQIiwiR0JQIiwiR0VMIiwiR0dQIiwiR0hDIiwiR0hTIiwiR0lQIiwiR01EIiwiR05GIiwiR1RRIiwiR1lEIiwiSEtEIiwiSE5MIiwiSFJLIiwiSFRHIiwiSFVGIiwiSURSIiwiSUxTIiwiSU1QIiwiSU5SIiwiSVFEIiwiSVJSIiwiSVNLIiwiSkVQIiwiSk1EIiwiSk9EIiwiSlBZIiwiS0VTIiwiS0dTIiwiS0hSIiwiS01GIiwiS1BXIiwiS1JXIiwiS1dEIiwiS1lEIiwiS1pUIiwiTEFLIiwiTEJQIiwiTEtSIiwiTFJEIiwiTFNMIiwiTFRDIiwiTFRMIiwiTFZMIiwiTFlEIiwiTUFEIiwiTURMIiwiTUdBIiwiTUtEIiwiTU1LIiwiTU5UIiwiTU9QIiwiTVJPIiwiTVJVIiwiTVVSIiwiTVZSIiwiTVdLIiwiTVhOIiwiTVhWIiwiTVlSIiwiTVpOIiwiTkFEIiwiTkdOIiwiTklPIiwiTk9LIiwiTlBSIiwiTlpEIiwiT01SIiwiUEFCIiwiUEVOIiwiUEdLIiwiUEhQIiwiUEtSIiwiUExOIiwiUFlHIiwiUUFSIiwiUk1CIiwiUk9OIiwiUlNEIiwiUlVCIiwiUldGIiwiU0FSIiwiU0JEIiwiU0NSIiwiU0RHIiwiU0VLIiwiU0dEIiwiU0hQIiwiU0xMIiwiU09TIiwiU1JEIiwiU1NQIiwiU1REIiwiU1ROIiwiU1ZDIiwiU1lQIiwiU1pMIiwiVEhCIiwiVEpTIiwiVE1UIiwiVE5EIiwiVE9QIiwiVFJMIiwiVFJZIiwiVFREIiwiVFZEIiwiVFdEIiwiVFpTIiwiVUFIIiwiVUdYIiwiVVNEIiwiVVlJIiwiVVlVIiwiVVlXIiwiVVpTIiwiVkVGIiwiVkVTIiwiVk5EIiwiVlVWIiwiV1NUIiwiWEFGIiwiWEJUIiwiWENEIiwiWE9GIiwiWFBGIiwiWFNVIiwiWFVBIiwiWUVSIiwiWkFSIiwiWk1XIiwiWldEIiwiWldMIiwiZ2V0Rm9ybWF0T3B0aW9ucyIsInRpbWV6b25lIiwidXNlT3B0aW9ucyIsInR6IiwiTnVtYmVyIiwiaXNGaW5pdGUiLCJnZXRUaW1lem9uZU9mZnNldE1pbnV0ZXMiLCJkYXRlIiwiZmxvb3IiLCJEYXRlIiwiZ2V0VGltZXpvbmVPZmZzZXQiLCJ0elVwcGVyIiwiZGVmYXVsdFRpbWV6b25lTmFtZXMiLCJFcnJvciIsInN0cmZ0aW1lIiwidG9EYXRlIiwidG9KU0RhdGUiLCJ0b2tlbnMiLCJUaW1lc3RhbXBQYXJzZXIiLCJwYXJzZUZvcm1hdFN0cmluZyIsInRpbWV6b25lT2Zmc2V0TWludXRlcyIsInR6RGF0ZSIsInNldFVUQ01pbnV0ZXMiLCJnZXRVVENNaW51dGVzIiwib3V0cHV0IiwidG9rZW4iLCJEaXJlY3RpdmUiLCJUb2tlbiIsInN0cnB0aW1lIiwidGltZXN0YW1wIiwicGFyc2VyIiwicGFyc2UiLCJnZXREYXRlIiwic3RydGltZSIsImVuZ2xpc2giLCJlcmFOYW1lcyIsIm1lcmlkaWVtTmFtZXMiLCJzaG9ydFdlZWtkYXlOYW1lcyIsImxvbmdXZWVrZGF5TmFtZXMiLCJzaG9ydE1vbnRoTmFtZXMiLCJsb25nTW9udGhOYW1lcyIsIm9yZGluYWxUcmFuc2Zvcm0iLCJudW1iZXIiLCJkaWdpdCIsImxlZnRQYWQiLCJjaGFyIiwidGV4dCIsInN0cmluZyIsIndyaXRlVGltZXpvbmVPZmZzZXQiLCJvZmZzZXRNaW51dGVzIiwiYWJzT2Zmc2V0Iiwic2lnbiIsImhvdXIiLCJtaW51dGUiLCJnZXREYXlPZldlZWsiLCJ5ZWFyIiwiZ2V0VVRDRnVsbFllYXIiLCJtb250aCIsImdldFVUQ01vbnRoIiwiZGF5IiwiZ2V0VVRDRGF0ZSIsImdldERheU9mWWVhciIsImxlbmd0aHMiLCJtb250aExlbmd0aHMiLCJmb3JZZWFyIiwibW9udGhzIiwiZ2V0V2Vla09mWWVhckZyb21TdW5kYXkiLCJkYXlPZlllYXIiLCJmaXJzdERheU9mV2VlayIsImdldEZpcnN0V2Vla2RheUluWWVhciIsImdldFdlZWtPZlllYXJGcm9tTW9uZGF5IiwiZGF5T2ZXZWVrIiwic3VuZGF5V2VlayIsImdldElTT1dlZWtzSW5ZZWFyIiwicHJpb3JZZWFyIiwiZ2V0SVNPV2Vla09mWWVhciIsIndlZWtOdW1iZXIiLCJnZXRJU09XZWVrRGF0ZVllYXIiLCJjb25zdHJ1Y3RvciIsIm5hbWVzIiwicGFkTGVuZ3RoIiwibGlrZWx5TGVuZ3RoIiwibWluaW11bSIsIm1heGltdW0iLCJjYW5CZU5lZ2F0aXZlIiwicmV3cml0ZSIsInBhcnNlRnVuY3Rpb24iLCJ3cml0ZUZ1bmN0aW9uIiwic3RvcmVGdW5jdGlvbiIsInN0b3JlIiwiZ2V0QnlOYW1lIiwiZGlyZWN0aXZlIiwiaXNPcmRpbmFsIiwiZ2V0Q2FuQmVOZWdhdGl2ZSIsImdldExpa2VseUxlbmd0aCIsImdldFJld3JpdGVQYXJzZWQiLCJyZXdyaXRlUGFyc2VkVmFsdWUiLCJleHBhbmRlZEZyb20iLCJoYXNQYXJzZUZ1bmN0aW9uIiwiaGFzU3RvcmVGdW5jdGlvbiIsIm51bWJlckluQm91bmRzIiwiZ2V0Qm91bmRzU3RyaW5nIiwiRGlyZWN0aXZlVG9rZW4iLCJyZXN1bHRTdHJpbmciLCJ1cHBlciIsIlN0cmluZ1Rva2VuIiwiRGlyZWN0aXZlU3RyaW5nVG9rZW4iLCJhZGRDaGFyYWN0ZXIiLCJjaCIsInBhcnNlV2Vla2RheU5hbWUiLCJnZXRVVENEYXkiLCJwYXJzZU1vbnRoTmFtZSIsImNlbnR1cnkiLCJkYXlPZk1vbnRoIiwibWljcm9zZWNvbmQiLCJnZXRVVENNaWxsaXNlY29uZHMiLCJpc29Ud29EaWdpdFllYXIiLCJpc29ZZWFyIiwiZ2V0VVRDSG91cnMiLCJtaWxsaXNlY29uZCIsIm1lcmlkaWVtIiwicGFyc2VNZXJpZGllbU5hbWUiLCJtaWNyb3NlY29uZHNTaW5jZUVwb2NoIiwiZ2V0VGltZSIsInNlY29uZHNTaW5jZUVwb2NoIiwic2Vjb25kIiwiZ2V0VVRDU2Vjb25kcyIsIndlZWtPZlllYXJGcm9tU3VuZGF5IiwiaXNvV2Vla09mWWVhciIsIndlZWtPZlllYXJGcm9tTW9uZGF5IiwidHdvRGlnaXRZZWFyIiwicGFyc2VUaW1lem9uZU9mZnNldCIsInR6TGlzdCIsImdldFRpbWV6b25lTmFtZUxpc3QiLCJwYXJzZUluZGV4SW5MaXN0IiwidGltZXpvbmVOYW1lcyIsImVyYSIsInBhcnNlRXJhTmFtZSIsIlRpbWVzdGFtcFBhcnNlRXJyb3IiLCJyZWFzb24iLCJjdXJyZW50VG9rZW4iLCJtZXNzYWdlIiwiY2FwdHVyZVN0YWNrVHJhY2UiLCJzdGFjayIsImNyZWF0ZSIsImlzRGlnaXQiLCJnZXRZZWFyRnJvbVR3b0RpZ2l0cyIsImdldE1vbnRoRnJvbURheU9mWWVhciIsImRheXMiLCJnZXREYXlPZk1vbnRoRnJvbURheU9mWWVhciIsImdldERhdGVGcm9tSVNPV2Vla0RhdGUiLCJ3ZWVrZGF5T2ZKYW40IiwiZGF5c0luWWVhciIsImlzTGVhcFllYXIiLCJnZXREYXRlRnJvbVN1bmRheVdlZWtEYXRlIiwid2Vla09mWWVhciIsImdldERhdGVGcm9tTW9uZGF5V2Vla0RhdGUiLCJzdW5kYXlEYXlPZlllYXIiLCJmb3JrTGVuZ3RoIiwibWlsbGlzZWNvbmRzU2luY2VFcG9jaCIsImdldFRpbWV6b25lT2Zmc2V0T2ZEYXRlIiwib2Zmc2V0U2lnbiIsInRvdGFsTWludXRlcyIsImdldEZ1bGxZZWFyIiwic2V0VVRDRnVsbFllYXIiLCJzZXRVVENNb250aCIsInNldFVUQ0RhdGUiLCJzZXRVVENIb3VycyIsInNldFVUQ1NlY29uZHMiLCJzZXRVVENNaWxsaXNlY29uZHMiLCJjb3B5IiwiZm9yayIsInN0YXJ0VG9rZW5JbmRleCIsInBhcnNlU3RyaW5nVG9rZW4iLCJwYXJzZUFtYmlndW91c051bWJlciIsInBhcnNlTnVtYmVyIiwidG9rZW5JbmRleCIsImxhc3RXaG9sZUVycm9yIiwibGVuZ3RoTGltaXQiLCJJbmZpbml0eSIsIm5lZ2F0aXZlIiwidHJpbSIsImlzSW50ZWdlciIsIm9yZGluYWwiLCJwb3NzaWJsZSIsInBvc3NpYmxlQ291bnQiLCJtYXRjaEluZGV4IiwibWF0Y2hMZW5ndGgiLCJqIiwidGltZXpvbmVOYW1lTGlzdCIsImhvdXJzIiwibWludXRlcyIsImZvcm1hdFN0cmluZyIsImRpciIsInp1bHVUaW1lem9uZSIsImNvbW1vbiIsImxlYXAiLCJpc09iamVjdCIsInNlcmlhbGl6ZSIsInRvVW5kZXJzY29yZSIsImFqYXgiLCJhcGlVcmwiLCJzdWNjZXNzIiwicGFyYW1zIiwibWV0aG9kIiwieG1sSHR0cCIsIlhNTEh0dHBSZXF1ZXN0IiwiaXNTdWNjZXNzIiwic3RhdHVzIiwib3BlbiIsInNldFJlcXVlc3RIZWFkZXIiLCJvbnJlYWR5c3RhdGVjaGFuZ2UiLCJyZXNwb25zZSIsInJlYWR5U3RhdGUiLCJyZXNwb25zZVRleHQiLCJlIiwic2VuZCIsInRvTG9jYWxlU3RyaW5nU3VwcG9ydHNPcHRpb25zIiwiSW50bCIsIk51bWJlckZvcm1hdCIsImN1cnJlbmN5Rm9ybWF0dGVyIiwibGFuZyIsImN1cnJlbmN5IiwibWluaW11bUZyYWN0aW9uRGlnaXRzIiwibWF4aW11bUZyYWN0aW9uRGlnaXRzIiwiaXNEb2xsYXIiLCJjdXJyZW5jeURpc3BsYXkiLCJudW1iZXJGb3JtYXQiLCJkYXlzSW5Nb250aCIsIm1vbnRoTGVuZ3RoIiwicmVtb3ZlQ2xhc3MiLCJzZXRDbGFzc05hbWUiLCJnZXRDbGFzc05hbWUiLCJhZGRDbGFzcyIsImVsIiwiY2xhc3NOYW1lcyIsImNsYXNzTGlzdCIsImNscyIsImNyZWF0ZUVsZW1lbnQiLCJhdHRycyIsImRlc3Ryb3lFbGVtZW50IiwicmVtb3ZlQ2hpbGQiLCJlbGVtZW50RnJvbVN0cmluZyIsImlubmVySFRNTCIsImNoaWxkcmVuIiwiZmluZEJ5Q2xhc3NOYW1lIiwiY29udGV4dCIsImNsYXNzTmFtZSIsIlNWR0FuaW1hdGVkU3RyaW5nIiwiYmFzZVZhbCIsInRyYXZlcnNlVG9QYXJlbnRXaXRoQXR0ciIsImdldFBhcmVudEF0dHJpYnV0ZSIsImF0dHIiLCJoYXNDbGFzcyIsIlJlZ0V4cCIsImlzIiwiaXNJbnNpZGUiLCJ0YWdOYW1lIiwicmVtb3ZlIiwicmVnZXgiLCJnZXRBdHRyaWJ1dGUiLCJFbWl0dGVyIiwib24iLCJldmVudCIsImxpc3RlbmVyIiwiZXZlbnRzIiwib25jZSIsIm9mZiIsImFwcGx5IiwibGlzdGVuZXJzIiwic3BsaWNlIiwiZW1pdCIsImlzRnVuY3Rpb24iLCJmIiwiaXNOYU5Qb2x5ZmlsbCIsIm8iLCJpc05hTiIsImlzTnVtZXJpYyIsIm4iLCJwYXJzZUludCIsInRyYXZlcnNlT2JqIiwiZGFzaFRvQ2FwaXRhbCIsInVuZGVyc2NvcmVUb0NhcGl0YWwiLCJjYXBpdGFsaXplT2JqIiwib2JqZWN0IiwibWVyZ2UiLCJvYmoxIiwib2JqMiIsImlzRGVlcCIsIm9iajMiLCJwaWNrIiwib2JqIiwidCIsInBpY2tlZE9iaiIsImNvbXBvbmVudCIsImZuS2V5IiwiZm5WYWx1ZSIsImN1cnIiLCJuZXh0UHJvcGVydHkiLCJpc1N0cmluZyIsInZhbGlkYXRlIiwiaXNCbGFuayIsImlzRW1haWwiLCJtYXRjaCIsImlzQm91bmRlZEJ5IiwiZ2VuQXJyYXlSYW5nZSIsInBhcnNlSVNPU3RyaW5nIiwiYXJyU3RyIiwiQ2FsZW5kYXJUcmVlIiwidmFsaWRhdGVDZWxsIiwidHJlZSIsImFkZFRyZWUiLCJzZWxlY3RSYW5nZSIsInJhbmdlIiwic2VsZWN0RGF5c0luTW9udGgiLCJtb250aERheXMiLCJzZWxlY3RNb250aHNJblllYXIiLCJpc1ZhbGlkIiwiaXNSYW5nZVZhbGlkIiwic2VsZWN0aW9uIiwibW9udGhSYW5nZSIsInN0YXJ0RGF5IiwiZW5kRGF5Iiwic2VsZWN0RGF5IiwiZmlsdGVyVmFsaWRzIiwiY2VsbCIsInJlcGxhY2VNYXBzIiwidXBkYXRlZEF0IiwibWFwc1RvVHJlZSIsInJlbW92ZU1hcCIsIm1hcHMiLCJtYXBTdGFydEF0IiwiYXZhaWxhYmlsaXR5IiwibmlnaHRseV9yYXRlcyIsIm1pbmltdW1fc3RheXMiLCJhdmFpbCIsInJhdGVzIiwibWluTWFwIiwiZGF5U2hpZnQiLCJwcmV2aW91c0RhdGUiLCJtaW5TdGF5IiwicmF0ZSIsImlzQXZhaWxhYmxlIiwicHJldkF2YWlsYWJsZSIsImlzTW9ybmluZ0Jsb2NrZWQiLCJpc0F2YWlsYWJsZU91dCIsImdldERheVByb3BlcnR5IiwicHJvcCIsImlzRGF5RGlzYWJsZWQiLCJ0ZW1wbGF0ZXMiLCJjb25maWciLCJsb2NhbGVzIiwiZGF0ZVRvSXNvIiwiaXNMYXRlciIsImlzQ3VycmVudCIsInZhbGlkYXRpb25PZkNlbGwiLCJ0Rm9ybWF0dGVyIiwiZGF0ZVRvQXJyYXkiLCJtb250aERpZmYiLCJ1dGlsc1N0eWxlcyIsIkNhbGVuZGFyIiwib3B0cyIsIlZFUlNJT04iLCJ2ZXJzaW9uIiwiQ1NTX1BSRUZJWCIsImNzc1ByZWZpeCIsImxvZ2dlciIsImNvbmZpZ0RhdGFzZXQiLCJkYXRhc2V0IiwiaXNEcm9wRG93biIsImluaXRDYWxlbmRhckRyb3AiLCJsb2NhbGUiLCJmb3JtYXREYXRlIiwic3RhcnRPZldlZWsiLCJjdXJyZW50RGF0ZSIsImdldE1vbnRoIiwieWVhclN0YXJ0IiwibW9udGhTdGFydCIsImRvbSIsImNUcmVlIiwiYWRkTWFwcyIsInN0YXJ0X2RhdGUiLCJpc1NlbGVjdGluZyIsImhpZ2hsaWdodGVkQm91bmRzIiwiaGFzVmFsaWRSYW5nZSIsImlzUmV2ZXJzZVNlbGVjdGFibGUiLCJpbml0IiwiY2FsZW5kYXIiLCJ0aGVtZSIsIm1vbnRoc1dyYXBwZXIiLCJhcHBlbmRDaGlsZCIsImZvcndhcmQiLCJiYWNrIiwicmVuZGVyTW9udGhzIiwiYWRkQnRuc0V2ZW50cyIsInNlbGVjdGFibGUiLCJlbFN0YXJ0QXQiLCJlbEVuZEF0IiwicmVudGFsSWQiLCJpbnB1dHNUb1ZhbHVlcyIsImxvYWRNYXBzIiwiY2hhbmdlU2VsZWN0aW9uT3JkZXIiLCJpc1JldmVyc2UiLCJkZXN0cm95TW9udGhzIiwieWVhckVuZCIsIm1vbnRoRW5kIiwiY3JlYXRlVHJlZSIsImRpc3BsYXlNb250aHMiLCJyZXZlcnNlZCIsImRpcmVjdCIsImFkZE1vbnRoRXZlbnRzIiwiYWN0aW9uc0VuYWJsZWQiLCJlbmFibGVBbGxEYXlzIiwiZGlzYWJsZUJhY2tCdG4iLCJyZWNvdmVyU2VsZWN0aW9ucyIsInNlbGVjdGlvblN0YXJ0Iiwic2VsZWN0U3RhcnQiLCJzZWxlY3Rpb25FbmQiLCJzZWxlY3RFbmQiLCJoaWdoTGlnaHRSYW5nZSIsImlzQmFja0Rpc2FibGVkIiwic3RhcnREYXRlIiwiZGlzYWJsZWQiLCJ0b2dnbGVMb2FkaW5nIiwibG9hZGluZyIsInByZXZlbnREZWZhdWx0IiwibW9udGhUb1JlbmRlciIsInllYXJUb1JlbmRlciIsImlzRW5kRmlyc3QiLCJyZXNldFNlbGVjdGlvbk9uRXNjYXBlIiwia2V5Q29kZSIsInJlc2V0U2VsZWN0aW9uIiwiZGF0ZVZhbHVlIiwiZGF5QWxyZWFkeVNlbGVjdGVkIiwicmFuZ2VTZWxlY3RlZCIsImlzUGFzdFRvZGF5IiwiZW5kRGF0ZUZpcnN0QWN0aW9uIiwic3RhcnREYXRlRmlyc3RBY3Rpb24iLCJzZWxlY3RpbmdEaXJlY3QiLCJzZWxlY3RpbmdSZXZlcnNlZCIsImhpZ2hsaWdodGVkIiwiY29tcGxldGVTZWxlY3Rpb24iLCJjYWxEcm9wIiwiY2xvc2VEcm9wIiwicmVtb3ZlSGlnaGxpZ2h0IiwiY2VsbHMiLCJxdWVyeVNlbGVjdG9yQWxsIiwiaG92ZXJlZCIsImhvdmVyZWRPZmZzZXQiLCJjZWxsQSIsImNlbGxCIiwiY2hhbmdlSGlnaGxpZ2h0RGlyZWN0aW9uIiwiaXNEaXNhYmxlZExlZnQiLCJpc0Rpc2FibGVkQ2VudGVyIiwiaXNEaXNhYmxlZFJpZ2h0IiwiaXNJbnZhbGlkIiwib2Zmc2V0Q2VsbCIsInJlbGF0ZWRUYXJnZXQiLCJjb21wYXJlRG9jdW1lbnRQb3NpdGlvbiIsIk5vZGUiLCJET0NVTUVOVF9QT1NJVElPTl9DT05UQUlORURfQlkiLCJkYXRlQXJyYXkiLCJzZWxlY3RFbmRBY3Rpb24iLCJzZWxlY3RTdGFydEFjdGlvbiIsInN3aXRjaElucHV0Rm9jdXMiLCJvblNlbGVjdFN0YXJ0Iiwib25TZWxlY3RFbmQiLCJpbnZhbGlkIiwiZGVzdHJveVRvb2x0aXAiLCJ0b29sdGlwUG9wcGVyIiwidG9vbHRpcCIsIm1heFN0YXkiLCJpbnZhbGlkUmFuZ2VNZXNzYWdlIiwiYWxsb3dTaG9ydGVyTWluU3RheVNlbGVjdGlvbiIsImFsbG93TG9uZ2VyTWF4U3RheVNlbGVjdGlvbiIsImhhc1ZhbGlkRGF5cyIsImhhc1ZhbGlkTWluU3RheSIsImhhc1ZhbGlkTWF4U3RheSIsImhhc0ludmFsaWRNaW5TdGF5IiwiaGFzSW52YWxpZE1heFN0YXkiLCJoYXNJbnZhbGlkRGF5cyIsInRvb2x0aXBQb3NpdGlvbiIsIlBvcHBlciIsIm9uQ2xlYXJTZWxlY3Rpb24iLCJpc1NpbmdsZUlucHV0IiwiZWxTaW5nbGVJbnB1dCIsInZhbHVlVG9JbnB1dCIsInRpbWVzIiwibURvbSIsImRvbU1vbnRoIiwiZGF5RWxlbWVudHMiLCJtb250aERvbSIsInRhYmxlSGVhZGVyIiwiaGVhZGVyVGVtcGxhdGVTdHJpbmciLCJjYXB0aW9uIiwiZGF5c1RlbXBsYXRlU3RyaW5nIiwiaGVhZGVyIiwid2Vla2RheXNMYWJlbHNFeHRlbmRlZCIsImRheXNQZXJXZWVrIiwid2Vla0RheUxhYmVsIiwic3RhcnRPZk1vbnRoIiwiZ2V0RGF5Iiwicm93VGVtcGxhdGUiLCJ3ZWVrUm93IiwibW9udGhUZW1wbGF0ZSIsIndlZWtTaGlmdCIsInJvd3MiLCJ3ZWVrU2hpZnRDb3JyZWN0ZWQiLCJkYXlDb3VudGVyIiwid2VlayIsImRheVRlbXBsYXRlU3RyaW5nIiwid2Vla0RheVBsYWNlaG9sZGVyIiwiY2xvc2UiLCJzaG93UmF0ZXMiLCJpc0Rpc2FibGVkIiwiaXNDdXJyZW50RGF5IiwiaXNBdmFpbGFibGVJbiIsIndlZWtEYXkiLCJzaG93TWluU3RheSIsInNob3dNYXhTdGF5Iiwib25TdWNjZXNzIiwiZGlzYWJsZUF2YWlsYWJpdHlNYXAiLCJtYXBzTG9hZGVkIiwib25FcnJvciIsInJlbnRhbFVybCIsInNpbmdsZUlucHV0RGF0ZUZvcm1hdCIsImRhdGVTdGFydCIsImRhdGVFbmQiLCJzaW5nbGVJbnB1dFNlcGFyYXRvciIsIm9uU2VsZWN0aW9uQ29tcGxldGVkIiwiZWxUYXJnZXQiLCJoaWRkZW5FbEZvcm1hdCIsImlucHV0IiwiaGlkZGVuSW5wdXQiLCJjbG9uZU5vZGUiLCJwYXJlbnRFbGVtZW50IiwiaGlkZGVuIiwiaGlkZGVuRWxFbmRBdCIsImhpZGRlbkVsU3RhcnRBdCIsInJlYWRPbmx5IiwiZHJvcEJhc2ljIiwiZHJvcFBsYWNlbWVudCIsIm9wZW5Ecm9wIiwiaXNSZXZlcnNlZCIsInZpc2libGUiLCJmb2N1c1RvdWNoRXZlbnRzIiwiYmluZCIsImVsUmVzZXQiLCJldnQiLCJjcmVhdGVFdmVudCIsImluaXRFdmVudCIsImhpZGRlblZhbHVlIiwiZGlzcGF0Y2hFdmVudCIsIm1vbnRoRGlmZmVyZW5jZSIsInR5cGUiLCJmb2N1cyIsImZvcmNlIiwic3RvcFByb3BhZ2F0aW9uIiwiX2NhbGxiYWNrIiwibXNnIiwiYXBpSG9zdCIsImFwaU5hbWVzcGFjZSIsImFwaU1hcHNSb3V0ZSIsImFwaVJlbnRhbElkIiwiYXBpQ3VycmVuY3kiLCJpZHMiLCJyb3V0ZSIsImVuIiwiZGUiLCJlcyIsImZyIiwiaXQiLCJzdiIsInJ1IiwicGwiLCJubCIsInRvb2x0aXBBcnJvdyIsIm1DZWxsIiwibGFiZWwiLCJ0aCIsIm1pblN0YXlUIiwibWF4U3RheVQiLCJyYXRlVCIsInRvZGF5IiwiY250IiwiaW5mbyIsIm51bSIsInBhZCIsInZhbCIsImxvZyIsImF2YWlsYWJsZUluIiwiYXZhaWxhYmxlT3V0IiwiQm9va2luZ1N5bmNXaWRnZXRVdGlscyIsImluaXRpYWxpemVkIiwiY2FsIiwiaW5zdGFuY2VzIiwiQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldCJdLCJzb3VyY2VSb290IjoiIn0=
|
|
8847
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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SUFBWixDQUFpQjByQyxHQUFqQjtBQUNELEdBTEQ7QUFPQTdPLEVBQUFBLFFBQVEsQ0FBQzhPLFNBQVQsR0FBcUJGLFdBQXJCO0FBQ0EsU0FBT0EsV0FBUDtBQUNELENBZEQ7O0FBZ0JBNU8sUUFBUSxDQUFDRSxPQUFULEdBQW1CM2lCLHNFQUFuQjs7QUFFQSxJQUFJM1YsUUFBUSxDQUFDaXZCLFVBQVQsS0FBd0IsU0FBNUIsRUFBdUM7QUFDckNtSixFQUFBQSxRQUFRLENBQUMwQixJQUFUO0FBQ0QsQ0FGRCxNQUVPO0FBQ0w5NUIsRUFBQUEsUUFBUSxDQUFDc0osZ0JBQVQsQ0FBMEIsa0JBQTFCLEVBQThDLE1BQU07QUFDbEQ4dUIsSUFBQUEsUUFBUSxDQUFDMEIsSUFBVDtBQUNELEdBRkQ7QUFHRDs7QUFFRDc1QixNQUFNLENBQUNrbkMseUJBQVAsR0FBbUMvTyxRQUFuQztBQUVBLGlFQUFlQSxRQUFmLEUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2NyZWF0ZVBvcHBlci5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9jb250YWlucy5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRCb3VuZGluZ0NsaWVudFJlY3QuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Q2xpcHBpbmdSZWN0LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldENvbXBvc2l0ZVJlY3QuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Q29tcHV0ZWRTdHlsZS5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXREb2N1bWVudEVsZW1lbnQuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0RG9jdW1lbnRSZWN0LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldEhUTUxFbGVtZW50U2Nyb2xsLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldExheW91dFJlY3QuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Tm9kZU5hbWUuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Tm9kZVNjcm9sbC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRPZmZzZXRQYXJlbnQuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0UGFyZW50Tm9kZS5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRTY3JvbGxQYXJlbnQuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Vmlld3BvcnRSZWN0LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldFdpbmRvdy5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRXaW5kb3dTY3JvbGwuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0V2luZG93U2Nyb2xsQmFyWC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9pbnN0YW5jZU9mLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2lzU2Nyb2xsUGFyZW50LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2lzVGFibGVFbGVtZW50LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2xpc3RTY3JvbGxQYXJlbnRzLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZW51bXMuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9pbmRleC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9hcHBseVN0eWxlcy5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9hcnJvdy5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9jb21wdXRlU3R5bGVzLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL2V2ZW50TGlzdGVuZXJzLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL2ZsaXAuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvaGlkZS5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9pbmRleC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9vZmZzZXQuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvcG9wcGVyT2Zmc2V0cy5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9wcmV2ZW50T3ZlcmZsb3cuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9wb3BwZXItbGl0ZS5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3BvcHBlci5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2NvbXB1dGVBdXRvUGxhY2VtZW50LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvY29tcHV0ZU9mZnNldHMuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9kZWJvdW5jZS5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2RldGVjdE92ZXJmbG93LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZXhwYW5kVG9IYXNoTWFwLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZm9ybWF0LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZ2V0QWx0QXhpcy5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldEJhc2VQbGFjZW1lbnQuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9nZXRGcmVzaFNpZGVPYmplY3QuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9nZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9nZXRPcHBvc2l0ZVBsYWNlbWVudC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldE9wcG9zaXRlVmFyaWF0aW9uUGxhY2VtZW50LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZ2V0VmFyaWF0aW9uLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvbWF0aC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL21lcmdlQnlOYW1lLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvbWVyZ2VQYWRkaW5nT2JqZWN0LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvb3JkZXJNb2RpZmllcnMuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9yZWN0VG9DbGllbnRSZWN0LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvdW5pcXVlQnkuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy92YWxpZGF0ZU1vZGlmaWVycy5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL3dpdGhpbi5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9nZXRVcmwuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL2N1cnJlbmN5LXN5bWJvbC1tYXAvY3VycmVuY3ktc3ltYm9sLW1hcC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvY3VycmVuY3ktc3ltYm9sLW1hcC9tYXAuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3N0cnRpbWUvZGlzdC9zdHJ0aW1lLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL2FqYXguanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvYXJyYXkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvYXJyYXkvaXNBcnJheS5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9jdXJyZW5jeS9jdXJyZW5jeUZvcm1hdHRlci5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9jdXJyZW5jeS9pbmRleC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9kYXRlL2luZGV4LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL2RhdGUvbW9udGhMZW5ndGguanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvZG9tL2FkZENsYXNzLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL2RvbS9jcmVhdGVFbGVtZW50LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL2RvbS9kZXN0cm95RWxlbWVudC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9kb20vZWxlbWVudEZyb21TdHJpbmcuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvZG9tL2ZpbmRCeUNsYXNzTmFtZS5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9kb20vZ2V0Q2xhc3NOYW1lLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL2RvbS9nZXRQYXJlbnRBdHRyaWJ1dGUuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvZG9tL2hhc0NsYXNzLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL2RvbS9pbmRleC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9kb20vaXNJbnNpZGUuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvZG9tL3JlbW92ZUNsYXNzLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL2RvbS9zZXRDbGFzc05hbWUuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvZG9tL3RyYXZlcnNlVG9QYXJlbnRXaXRoQXR0ci5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9lbWl0dGVyLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL2Z1bmN0aW9uL2luZGV4LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL2Z1bmN0aW9uL2lzRnVuY3Rpb24uanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvaXMuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvbWF0aC9pbmRleC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9tYXRoL2lzTmFOUG9seWZpbGwuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvbWF0aC9pc051bWVyaWMuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvb2JqZWN0L2NhcGl0YWxpemVPYmouanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvb2JqZWN0L2luZGV4LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL29iamVjdC9pc09iamVjdC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9vYmplY3QvbWVyZ2UuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvb2JqZWN0L3BpY2suanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvb2JqZWN0L3NlcmlhbGl6ZS5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9vYmplY3QvdHJhdmVyc2VPYmouanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvc3RyaW5nL2Rhc2hUb0NhcGl0YWwuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvc3RyaW5nL2luZGV4LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL3N0cmluZy9pc1N0cmluZy5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9zdHJpbmcvdG9VbmRlcnNjb3JlLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL3N0cmluZy91bmRlcnNjb3JlVG9DYXBpdGFsLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL3ZhbGlkYXRlLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL3NyYy9jYWxlbmRhci10cmVlLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL3NyYy9jYWxlbmRhci5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9zcmMvY29uZmlnLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL3NyYy9sb2NhbGVzLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL3NyYy90ZW1wbGF0ZXMuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vc3JjL3V0aWxzLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL3NyYy9zdHlsZXMvY2FsZW5kYXIuc2NzcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9zdHlsZXMvcmVzZXQuc2NzcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9zcmMvc3R5bGVzL2NhbGVuZGFyLnNjc3M/NjlkNyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9zdHlsZXMvcmVzZXQuc2Nzcz9iNzQwIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0L3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC93ZWJwYWNrL3J1bnRpbWUvY29tcGF0IGdldCBkZWZhdWx0IGV4cG9ydCIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC93ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC93ZWJwYWNrL3J1bnRpbWUvbWFrZSBuYW1lc3BhY2Ugb2JqZWN0Iiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC93ZWJwYWNrL3J1bnRpbWUvanNvbnAgY2h1bmsgbG9hZGluZyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9zcmMvaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGdldENvbXBvc2l0ZVJlY3QgZnJvbSBcIi4vZG9tLXV0aWxzL2dldENvbXBvc2l0ZVJlY3QuanNcIjtcbmltcG9ydCBnZXRMYXlvdXRSZWN0IGZyb20gXCIuL2RvbS11dGlscy9nZXRMYXlvdXRSZWN0LmpzXCI7XG5pbXBvcnQgbGlzdFNjcm9sbFBhcmVudHMgZnJvbSBcIi4vZG9tLXV0aWxzL2xpc3RTY3JvbGxQYXJlbnRzLmpzXCI7XG5pbXBvcnQgZ2V0T2Zmc2V0UGFyZW50IGZyb20gXCIuL2RvbS11dGlscy9nZXRPZmZzZXRQYXJlbnQuanNcIjtcbmltcG9ydCBnZXRDb21wdXRlZFN0eWxlIGZyb20gXCIuL2RvbS11dGlscy9nZXRDb21wdXRlZFN0eWxlLmpzXCI7XG5pbXBvcnQgb3JkZXJNb2RpZmllcnMgZnJvbSBcIi4vdXRpbHMvb3JkZXJNb2RpZmllcnMuanNcIjtcbmltcG9ydCBkZWJvdW5jZSBmcm9tIFwiLi91dGlscy9kZWJvdW5jZS5qc1wiO1xuaW1wb3J0IHZhbGlkYXRlTW9kaWZpZXJzIGZyb20gXCIuL3V0aWxzL3ZhbGlkYXRlTW9kaWZpZXJzLmpzXCI7XG5pbXBvcnQgdW5pcXVlQnkgZnJvbSBcIi4vdXRpbHMvdW5pcXVlQnkuanNcIjtcbmltcG9ydCBnZXRCYXNlUGxhY2VtZW50IGZyb20gXCIuL3V0aWxzL2dldEJhc2VQbGFjZW1lbnQuanNcIjtcbmltcG9ydCBtZXJnZUJ5TmFtZSBmcm9tIFwiLi91dGlscy9tZXJnZUJ5TmFtZS5qc1wiO1xuaW1wb3J0IGRldGVjdE92ZXJmbG93IGZyb20gXCIuL3V0aWxzL2RldGVjdE92ZXJmbG93LmpzXCI7XG5pbXBvcnQgeyBpc0VsZW1lbnQgfSBmcm9tIFwiLi9kb20tdXRpbHMvaW5zdGFuY2VPZi5qc1wiO1xuaW1wb3J0IHsgYXV0byB9IGZyb20gXCIuL2VudW1zLmpzXCI7XG52YXIgSU5WQUxJRF9FTEVNRU5UX0VSUk9SID0gJ1BvcHBlcjogSW52YWxpZCByZWZlcmVuY2Ugb3IgcG9wcGVyIGFyZ3VtZW50IHByb3ZpZGVkLiBUaGV5IG11c3QgYmUgZWl0aGVyIGEgRE9NIGVsZW1lbnQgb3IgdmlydHVhbCBlbGVtZW50Lic7XG52YXIgSU5GSU5JVEVfTE9PUF9FUlJPUiA9ICdQb3BwZXI6IEFuIGluZmluaXRlIGxvb3AgaW4gdGhlIG1vZGlmaWVycyBjeWNsZSBoYXMgYmVlbiBkZXRlY3RlZCEgVGhlIGN5Y2xlIGhhcyBiZWVuIGludGVycnVwdGVkIHRvIHByZXZlbnQgYSBicm93c2VyIGNyYXNoLic7XG52YXIgREVGQVVMVF9PUFRJT05TID0ge1xuICBwbGFjZW1lbnQ6ICdib3R0b20nLFxuICBtb2RpZmllcnM6IFtdLFxuICBzdHJhdGVneTogJ2Fic29sdXRlJ1xufTtcblxuZnVuY3Rpb24gYXJlVmFsaWRFbGVtZW50cygpIHtcbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgfVxuXG4gIHJldHVybiAhYXJncy5zb21lKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgcmV0dXJuICEoZWxlbWVudCAmJiB0eXBlb2YgZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QgPT09ICdmdW5jdGlvbicpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBvcHBlckdlbmVyYXRvcihnZW5lcmF0b3JPcHRpb25zKSB7XG4gIGlmIChnZW5lcmF0b3JPcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBnZW5lcmF0b3JPcHRpb25zID0ge307XG4gIH1cblxuICB2YXIgX2dlbmVyYXRvck9wdGlvbnMgPSBnZW5lcmF0b3JPcHRpb25zLFxuICAgICAgX2dlbmVyYXRvck9wdGlvbnMkZGVmID0gX2dlbmVyYXRvck9wdGlvbnMuZGVmYXVsdE1vZGlmaWVycyxcbiAgICAgIGRlZmF1bHRNb2RpZmllcnMgPSBfZ2VuZXJhdG9yT3B0aW9ucyRkZWYgPT09IHZvaWQgMCA/IFtdIDogX2dlbmVyYXRvck9wdGlvbnMkZGVmLFxuICAgICAgX2dlbmVyYXRvck9wdGlvbnMkZGVmMiA9IF9nZW5lcmF0b3JPcHRpb25zLmRlZmF1bHRPcHRpb25zLFxuICAgICAgZGVmYXVsdE9wdGlvbnMgPSBfZ2VuZXJhdG9yT3B0aW9ucyRkZWYyID09PSB2b2lkIDAgPyBERUZBVUxUX09QVElPTlMgOiBfZ2VuZXJhdG9yT3B0aW9ucyRkZWYyO1xuICByZXR1cm4gZnVuY3Rpb24gY3JlYXRlUG9wcGVyKHJlZmVyZW5jZSwgcG9wcGVyLCBvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgICAgb3B0aW9ucyA9IGRlZmF1bHRPcHRpb25zO1xuICAgIH1cblxuICAgIHZhciBzdGF0ZSA9IHtcbiAgICAgIHBsYWNlbWVudDogJ2JvdHRvbScsXG4gICAgICBvcmRlcmVkTW9kaWZpZXJzOiBbXSxcbiAgICAgIG9wdGlvbnM6IE9iamVjdC5hc3NpZ24oe30sIERFRkFVTFRfT1BUSU9OUywgZGVmYXVsdE9wdGlvbnMpLFxuICAgICAgbW9kaWZpZXJzRGF0YToge30sXG4gICAgICBlbGVtZW50czoge1xuICAgICAgICByZWZlcmVuY2U6IHJlZmVyZW5jZSxcbiAgICAgICAgcG9wcGVyOiBwb3BwZXJcbiAgICAgIH0sXG4gICAgICBhdHRyaWJ1dGVzOiB7fSxcbiAgICAgIHN0eWxlczoge31cbiAgICB9O1xuICAgIHZhciBlZmZlY3RDbGVhbnVwRm5zID0gW107XG4gICAgdmFyIGlzRGVzdHJveWVkID0gZmFsc2U7XG4gICAgdmFyIGluc3RhbmNlID0ge1xuICAgICAgc3RhdGU6IHN0YXRlLFxuICAgICAgc2V0T3B0aW9uczogZnVuY3Rpb24gc2V0T3B0aW9ucyhzZXRPcHRpb25zQWN0aW9uKSB7XG4gICAgICAgIHZhciBvcHRpb25zID0gdHlwZW9mIHNldE9wdGlvbnNBY3Rpb24gPT09ICdmdW5jdGlvbicgPyBzZXRPcHRpb25zQWN0aW9uKHN0YXRlLm9wdGlvbnMpIDogc2V0T3B0aW9uc0FjdGlvbjtcbiAgICAgICAgY2xlYW51cE1vZGlmaWVyRWZmZWN0cygpO1xuICAgICAgICBzdGF0ZS5vcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgZGVmYXVsdE9wdGlvbnMsIHN0YXRlLm9wdGlvbnMsIG9wdGlvbnMpO1xuICAgICAgICBzdGF0ZS5zY3JvbGxQYXJlbnRzID0ge1xuICAgICAgICAgIHJlZmVyZW5jZTogaXNFbGVtZW50KHJlZmVyZW5jZSkgPyBsaXN0U2Nyb2xsUGFyZW50cyhyZWZlcmVuY2UpIDogcmVmZXJlbmNlLmNvbnRleHRFbGVtZW50ID8gbGlzdFNjcm9sbFBhcmVudHMocmVmZXJlbmNlLmNvbnRleHRFbGVtZW50KSA6IFtdLFxuICAgICAgICAgIHBvcHBlcjogbGlzdFNjcm9sbFBhcmVudHMocG9wcGVyKVxuICAgICAgICB9OyAvLyBPcmRlcnMgdGhlIG1vZGlmaWVycyBiYXNlZCBvbiB0aGVpciBkZXBlbmRlbmNpZXMgYW5kIGBwaGFzZWBcbiAgICAgICAgLy8gcHJvcGVydGllc1xuXG4gICAgICAgIHZhciBvcmRlcmVkTW9kaWZpZXJzID0gb3JkZXJNb2RpZmllcnMobWVyZ2VCeU5hbWUoW10uY29uY2F0KGRlZmF1bHRNb2RpZmllcnMsIHN0YXRlLm9wdGlvbnMubW9kaWZpZXJzKSkpOyAvLyBTdHJpcCBvdXQgZGlzYWJsZWQgbW9kaWZpZXJzXG5cbiAgICAgICAgc3RhdGUub3JkZXJlZE1vZGlmaWVycyA9IG9yZGVyZWRNb2RpZmllcnMuZmlsdGVyKGZ1bmN0aW9uIChtKSB7XG4gICAgICAgICAgcmV0dXJuIG0uZW5hYmxlZDtcbiAgICAgICAgfSk7IC8vIFZhbGlkYXRlIHRoZSBwcm92aWRlZCBtb2RpZmllcnMgc28gdGhhdCB0aGUgY29uc3VtZXIgd2lsbCBnZXQgd2FybmVkXG4gICAgICAgIC8vIGlmIG9uZSBvZiB0aGUgbW9kaWZpZXJzIGlzIGludmFsaWQgZm9yIGFueSByZWFzb25cblxuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICAgICAgdmFyIG1vZGlmaWVycyA9IHVuaXF1ZUJ5KFtdLmNvbmNhdChvcmRlcmVkTW9kaWZpZXJzLCBzdGF0ZS5vcHRpb25zLm1vZGlmaWVycyksIGZ1bmN0aW9uIChfcmVmKSB7XG4gICAgICAgICAgICB2YXIgbmFtZSA9IF9yZWYubmFtZTtcbiAgICAgICAgICAgIHJldHVybiBuYW1lO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHZhbGlkYXRlTW9kaWZpZXJzKG1vZGlmaWVycyk7XG5cbiAgICAgICAgICBpZiAoZ2V0QmFzZVBsYWNlbWVudChzdGF0ZS5vcHRpb25zLnBsYWNlbWVudCkgPT09IGF1dG8pIHtcbiAgICAgICAgICAgIHZhciBmbGlwTW9kaWZpZXIgPSBzdGF0ZS5vcmRlcmVkTW9kaWZpZXJzLmZpbmQoZnVuY3Rpb24gKF9yZWYyKSB7XG4gICAgICAgICAgICAgIHZhciBuYW1lID0gX3JlZjIubmFtZTtcbiAgICAgICAgICAgICAgcmV0dXJuIG5hbWUgPT09ICdmbGlwJztcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAoIWZsaXBNb2RpZmllcikge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFsnUG9wcGVyOiBcImF1dG9cIiBwbGFjZW1lbnRzIHJlcXVpcmUgdGhlIFwiZmxpcFwiIG1vZGlmaWVyIGJlJywgJ3ByZXNlbnQgYW5kIGVuYWJsZWQgdG8gd29yay4nXS5qb2luKCcgJykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhciBfZ2V0Q29tcHV0ZWRTdHlsZSA9IGdldENvbXB1dGVkU3R5bGUocG9wcGVyKSxcbiAgICAgICAgICAgICAgbWFyZ2luVG9wID0gX2dldENvbXB1dGVkU3R5bGUubWFyZ2luVG9wLFxuICAgICAgICAgICAgICBtYXJnaW5SaWdodCA9IF9nZXRDb21wdXRlZFN0eWxlLm1hcmdpblJpZ2h0LFxuICAgICAgICAgICAgICBtYXJnaW5Cb3R0b20gPSBfZ2V0Q29tcHV0ZWRTdHlsZS5tYXJnaW5Cb3R0b20sXG4gICAgICAgICAgICAgIG1hcmdpbkxlZnQgPSBfZ2V0Q29tcHV0ZWRTdHlsZS5tYXJnaW5MZWZ0OyAvLyBXZSBubyBsb25nZXIgdGFrZSBpbnRvIGFjY291bnQgYG1hcmdpbnNgIG9uIHRoZSBwb3BwZXIsIGFuZCBpdCBjYW5cbiAgICAgICAgICAvLyBjYXVzZSBidWdzIHdpdGggcG9zaXRpb25pbmcsIHNvIHdlJ2xsIHdhcm4gdGhlIGNvbnN1bWVyXG5cblxuICAgICAgICAgIGlmIChbbWFyZ2luVG9wLCBtYXJnaW5SaWdodCwgbWFyZ2luQm90dG9tLCBtYXJnaW5MZWZ0XS5zb21lKGZ1bmN0aW9uIChtYXJnaW4pIHtcbiAgICAgICAgICAgIHJldHVybiBwYXJzZUZsb2F0KG1hcmdpbik7XG4gICAgICAgICAgfSkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihbJ1BvcHBlcjogQ1NTIFwibWFyZ2luXCIgc3R5bGVzIGNhbm5vdCBiZSB1c2VkIHRvIGFwcGx5IHBhZGRpbmcnLCAnYmV0d2VlbiB0aGUgcG9wcGVyIGFuZCBpdHMgcmVmZXJlbmNlIGVsZW1lbnQgb3IgYm91bmRhcnkuJywgJ1RvIHJlcGxpY2F0ZSBtYXJnaW4sIHVzZSB0aGUgYG9mZnNldGAgbW9kaWZpZXIsIGFzIHdlbGwgYXMnLCAndGhlIGBwYWRkaW5nYCBvcHRpb24gaW4gdGhlIGBwcmV2ZW50T3ZlcmZsb3dgIGFuZCBgZmxpcGAnLCAnbW9kaWZpZXJzLiddLmpvaW4oJyAnKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcnVuTW9kaWZpZXJFZmZlY3RzKCk7XG4gICAgICAgIHJldHVybiBpbnN0YW5jZS51cGRhdGUoKTtcbiAgICAgIH0sXG4gICAgICAvLyBTeW5jIHVwZGF0ZSDigJMgaXQgd2lsbCBhbHdheXMgYmUgZXhlY3V0ZWQsIGV2ZW4gaWYgbm90IG5lY2Vzc2FyeS4gVGhpc1xuICAgICAgLy8gaXMgdXNlZnVsIGZvciBsb3cgZnJlcXVlbmN5IHVwZGF0ZXMgd2hlcmUgc3luYyBiZWhhdmlvciBzaW1wbGlmaWVzIHRoZVxuICAgICAgLy8gbG9naWMuXG4gICAgICAvLyBGb3IgaGlnaCBmcmVxdWVuY3kgdXBkYXRlcyAoZS5nLiBgcmVzaXplYCBhbmQgYHNjcm9sbGAgZXZlbnRzKSwgYWx3YXlzXG4gICAgICAvLyBwcmVmZXIgdGhlIGFzeW5jIFBvcHBlciN1cGRhdGUgbWV0aG9kXG4gICAgICBmb3JjZVVwZGF0ZTogZnVuY3Rpb24gZm9yY2VVcGRhdGUoKSB7XG4gICAgICAgIGlmIChpc0Rlc3Ryb3llZCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBfc3RhdGUkZWxlbWVudHMgPSBzdGF0ZS5lbGVtZW50cyxcbiAgICAgICAgICAgIHJlZmVyZW5jZSA9IF9zdGF0ZSRlbGVtZW50cy5yZWZlcmVuY2UsXG4gICAgICAgICAgICBwb3BwZXIgPSBfc3RhdGUkZWxlbWVudHMucG9wcGVyOyAvLyBEb24ndCBwcm9jZWVkIGlmIGByZWZlcmVuY2VgIG9yIGBwb3BwZXJgIGFyZSBub3QgdmFsaWQgZWxlbWVudHNcbiAgICAgICAgLy8gYW55bW9yZVxuXG4gICAgICAgIGlmICghYXJlVmFsaWRFbGVtZW50cyhyZWZlcmVuY2UsIHBvcHBlcikpIHtcbiAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKElOVkFMSURfRUxFTUVOVF9FUlJPUik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IC8vIFN0b3JlIHRoZSByZWZlcmVuY2UgYW5kIHBvcHBlciByZWN0cyB0byBiZSByZWFkIGJ5IG1vZGlmaWVyc1xuXG5cbiAgICAgICAgc3RhdGUucmVjdHMgPSB7XG4gICAgICAgICAgcmVmZXJlbmNlOiBnZXRDb21wb3NpdGVSZWN0KHJlZmVyZW5jZSwgZ2V0T2Zmc2V0UGFyZW50KHBvcHBlciksIHN0YXRlLm9wdGlvbnMuc3RyYXRlZ3kgPT09ICdmaXhlZCcpLFxuICAgICAgICAgIHBvcHBlcjogZ2V0TGF5b3V0UmVjdChwb3BwZXIpXG4gICAgICAgIH07IC8vIE1vZGlmaWVycyBoYXZlIHRoZSBhYmlsaXR5IHRvIHJlc2V0IHRoZSBjdXJyZW50IHVwZGF0ZSBjeWNsZS4gVGhlXG4gICAgICAgIC8vIG1vc3QgY29tbW9uIHVzZSBjYXNlIGZvciB0aGlzIGlzIHRoZSBgZmxpcGAgbW9kaWZpZXIgY2hhbmdpbmcgdGhlXG4gICAgICAgIC8vIHBsYWNlbWVudCwgd2hpY2ggdGhlbiBuZWVkcyB0byByZS1ydW4gYWxsIHRoZSBtb2RpZmllcnMsIGJlY2F1c2UgdGhlXG4gICAgICAgIC8vIGxvZ2ljIHdhcyBwcmV2aW91c2x5IHJhbiBmb3IgdGhlIHByZXZpb3VzIHBsYWNlbWVudCBhbmQgaXMgdGhlcmVmb3JlXG4gICAgICAgIC8vIHN0YWxlL2luY29ycmVjdFxuXG4gICAgICAgIHN0YXRlLnJlc2V0ID0gZmFsc2U7XG4gICAgICAgIHN0YXRlLnBsYWNlbWVudCA9IHN0YXRlLm9wdGlvbnMucGxhY2VtZW50OyAvLyBPbiBlYWNoIHVwZGF0ZSBjeWNsZSwgdGhlIGBtb2RpZmllcnNEYXRhYCBwcm9wZXJ0eSBmb3IgZWFjaCBtb2RpZmllclxuICAgICAgICAvLyBpcyBmaWxsZWQgd2l0aCB0aGUgaW5pdGlhbCBkYXRhIHNwZWNpZmllZCBieSB0aGUgbW9kaWZpZXIuIFRoaXMgbWVhbnNcbiAgICAgICAgLy8gaXQgZG9lc24ndCBwZXJzaXN0IGFuZCBpcyBmcmVzaCBvbiBlYWNoIHVwZGF0ZS5cbiAgICAgICAgLy8gVG8gZW5zdXJlIHBlcnNpc3RlbnQgZGF0YSwgdXNlIGAke25hbWV9I3BlcnNpc3RlbnRgXG5cbiAgICAgICAgc3RhdGUub3JkZXJlZE1vZGlmaWVycy5mb3JFYWNoKGZ1bmN0aW9uIChtb2RpZmllcikge1xuICAgICAgICAgIHJldHVybiBzdGF0ZS5tb2RpZmllcnNEYXRhW21vZGlmaWVyLm5hbWVdID0gT2JqZWN0LmFzc2lnbih7fSwgbW9kaWZpZXIuZGF0YSk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgX19kZWJ1Z19sb29wc19fID0gMDtcblxuICAgICAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgc3RhdGUub3JkZXJlZE1vZGlmaWVycy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICAgICAgICBfX2RlYnVnX2xvb3BzX18gKz0gMTtcblxuICAgICAgICAgICAgaWYgKF9fZGVidWdfbG9vcHNfXyA+IDEwMCkge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKElORklOSVRFX0xPT1BfRVJST1IpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoc3RhdGUucmVzZXQgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHN0YXRlLnJlc2V0ID0gZmFsc2U7XG4gICAgICAgICAgICBpbmRleCA9IC0xO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFyIF9zdGF0ZSRvcmRlcmVkTW9kaWZpZSA9IHN0YXRlLm9yZGVyZWRNb2RpZmllcnNbaW5kZXhdLFxuICAgICAgICAgICAgICBmbiA9IF9zdGF0ZSRvcmRlcmVkTW9kaWZpZS5mbixcbiAgICAgICAgICAgICAgX3N0YXRlJG9yZGVyZWRNb2RpZmllMiA9IF9zdGF0ZSRvcmRlcmVkTW9kaWZpZS5vcHRpb25zLFxuICAgICAgICAgICAgICBfb3B0aW9ucyA9IF9zdGF0ZSRvcmRlcmVkTW9kaWZpZTIgPT09IHZvaWQgMCA/IHt9IDogX3N0YXRlJG9yZGVyZWRNb2RpZmllMixcbiAgICAgICAgICAgICAgbmFtZSA9IF9zdGF0ZSRvcmRlcmVkTW9kaWZpZS5uYW1lO1xuXG4gICAgICAgICAgaWYgKHR5cGVvZiBmbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgc3RhdGUgPSBmbih7XG4gICAgICAgICAgICAgIHN0YXRlOiBzdGF0ZSxcbiAgICAgICAgICAgICAgb3B0aW9uczogX29wdGlvbnMsXG4gICAgICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgICAgIGluc3RhbmNlOiBpbnN0YW5jZVxuICAgICAgICAgICAgfSkgfHwgc3RhdGU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgLy8gQXN5bmMgYW5kIG9wdGltaXN0aWNhbGx5IG9wdGltaXplZCB1cGRhdGUg4oCTIGl0IHdpbGwgbm90IGJlIGV4ZWN1dGVkIGlmXG4gICAgICAvLyBub3QgbmVjZXNzYXJ5IChkZWJvdW5jZWQgdG8gcnVuIGF0IG1vc3Qgb25jZS1wZXItdGljaylcbiAgICAgIHVwZGF0ZTogZGVib3VuY2UoZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHtcbiAgICAgICAgICBpbnN0YW5jZS5mb3JjZVVwZGF0ZSgpO1xuICAgICAgICAgIHJlc29sdmUoc3RhdGUpO1xuICAgICAgICB9KTtcbiAgICAgIH0pLFxuICAgICAgZGVzdHJveTogZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICAgICAgY2xlYW51cE1vZGlmaWVyRWZmZWN0cygpO1xuICAgICAgICBpc0Rlc3Ryb3llZCA9IHRydWU7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGlmICghYXJlVmFsaWRFbGVtZW50cyhyZWZlcmVuY2UsIHBvcHBlcikpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihJTlZBTElEX0VMRU1FTlRfRVJST1IpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaW5zdGFuY2U7XG4gICAgfVxuXG4gICAgaW5zdGFuY2Uuc2V0T3B0aW9ucyhvcHRpb25zKS50aGVuKGZ1bmN0aW9uIChzdGF0ZSkge1xuICAgICAgaWYgKCFpc0Rlc3Ryb3llZCAmJiBvcHRpb25zLm9uRmlyc3RVcGRhdGUpIHtcbiAgICAgICAgb3B0aW9ucy5vbkZpcnN0VXBkYXRlKHN0YXRlKTtcbiAgICAgIH1cbiAgICB9KTsgLy8gTW9kaWZpZXJzIGhhdmUgdGhlIGFiaWxpdHkgdG8gZXhlY3V0ZSBhcmJpdHJhcnkgY29kZSBiZWZvcmUgdGhlIGZpcnN0XG4gICAgLy8gdXBkYXRlIGN5Y2xlIHJ1bnMuIFRoZXkgd2lsbCBiZSBleGVjdXRlZCBpbiB0aGUgc2FtZSBvcmRlciBhcyB0aGUgdXBkYXRlXG4gICAgLy8gY3ljbGUuIFRoaXMgaXMgdXNlZnVsIHdoZW4gYSBtb2RpZmllciBhZGRzIHNvbWUgcGVyc2lzdGVudCBkYXRhIHRoYXRcbiAgICAvLyBvdGhlciBtb2RpZmllcnMgbmVlZCB0byB1c2UsIGJ1dCB0aGUgbW9kaWZpZXIgaXMgcnVuIGFmdGVyIHRoZSBkZXBlbmRlbnRcbiAgICAvLyBvbmUuXG5cbiAgICBmdW5jdGlvbiBydW5Nb2RpZmllckVmZmVjdHMoKSB7XG4gICAgICBzdGF0ZS5vcmRlcmVkTW9kaWZpZXJzLmZvckVhY2goZnVuY3Rpb24gKF9yZWYzKSB7XG4gICAgICAgIHZhciBuYW1lID0gX3JlZjMubmFtZSxcbiAgICAgICAgICAgIF9yZWYzJG9wdGlvbnMgPSBfcmVmMy5vcHRpb25zLFxuICAgICAgICAgICAgb3B0aW9ucyA9IF9yZWYzJG9wdGlvbnMgPT09IHZvaWQgMCA/IHt9IDogX3JlZjMkb3B0aW9ucyxcbiAgICAgICAgICAgIGVmZmVjdCA9IF9yZWYzLmVmZmVjdDtcblxuICAgICAgICBpZiAodHlwZW9mIGVmZmVjdCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHZhciBjbGVhbnVwRm4gPSBlZmZlY3Qoe1xuICAgICAgICAgICAgc3RhdGU6IHN0YXRlLFxuICAgICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICAgIGluc3RhbmNlOiBpbnN0YW5jZSxcbiAgICAgICAgICAgIG9wdGlvbnM6IG9wdGlvbnNcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHZhciBub29wRm4gPSBmdW5jdGlvbiBub29wRm4oKSB7fTtcblxuICAgICAgICAgIGVmZmVjdENsZWFudXBGbnMucHVzaChjbGVhbnVwRm4gfHwgbm9vcEZuKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2xlYW51cE1vZGlmaWVyRWZmZWN0cygpIHtcbiAgICAgIGVmZmVjdENsZWFudXBGbnMuZm9yRWFjaChmdW5jdGlvbiAoZm4pIHtcbiAgICAgICAgcmV0dXJuIGZuKCk7XG4gICAgICB9KTtcbiAgICAgIGVmZmVjdENsZWFudXBGbnMgPSBbXTtcbiAgICB9XG5cbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH07XG59XG5leHBvcnQgdmFyIGNyZWF0ZVBvcHBlciA9IC8qI19fUFVSRV9fKi9wb3BwZXJHZW5lcmF0b3IoKTsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5leHBvcnQgeyBkZXRlY3RPdmVyZmxvdyB9OyIsImltcG9ydCB7IGlzU2hhZG93Um9vdCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNvbnRhaW5zKHBhcmVudCwgY2hpbGQpIHtcbiAgdmFyIHJvb3ROb2RlID0gY2hpbGQuZ2V0Um9vdE5vZGUgJiYgY2hpbGQuZ2V0Um9vdE5vZGUoKTsgLy8gRmlyc3QsIGF0dGVtcHQgd2l0aCBmYXN0ZXIgbmF0aXZlIG1ldGhvZFxuXG4gIGlmIChwYXJlbnQuY29udGFpbnMoY2hpbGQpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gLy8gdGhlbiBmYWxsYmFjayB0byBjdXN0b20gaW1wbGVtZW50YXRpb24gd2l0aCBTaGFkb3cgRE9NIHN1cHBvcnRcbiAgZWxzZSBpZiAocm9vdE5vZGUgJiYgaXNTaGFkb3dSb290KHJvb3ROb2RlKSkge1xuICAgICAgdmFyIG5leHQgPSBjaGlsZDtcblxuICAgICAgZG8ge1xuICAgICAgICBpZiAobmV4dCAmJiBwYXJlbnQuaXNTYW1lTm9kZShuZXh0KSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IC8vICRGbG93Rml4TWVbcHJvcC1taXNzaW5nXTogbmVlZCBhIGJldHRlciB3YXkgdG8gaGFuZGxlIHRoaXMuLi5cblxuXG4gICAgICAgIG5leHQgPSBuZXh0LnBhcmVudE5vZGUgfHwgbmV4dC5ob3N0O1xuICAgICAgfSB3aGlsZSAobmV4dCk7XG4gICAgfSAvLyBHaXZlIHVwLCB0aGUgcmVzdWx0IGlzIGZhbHNlXG5cblxuICByZXR1cm4gZmFsc2U7XG59IiwiaW1wb3J0IHsgaXNIVE1MRWxlbWVudCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmltcG9ydCB7IHJvdW5kIH0gZnJvbSBcIi4uL3V0aWxzL21hdGguanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50LCBpbmNsdWRlU2NhbGUpIHtcbiAgaWYgKGluY2x1ZGVTY2FsZSA9PT0gdm9pZCAwKSB7XG4gICAgaW5jbHVkZVNjYWxlID0gZmFsc2U7XG4gIH1cblxuICB2YXIgcmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIHZhciBzY2FsZVggPSAxO1xuICB2YXIgc2NhbGVZID0gMTtcblxuICBpZiAoaXNIVE1MRWxlbWVudChlbGVtZW50KSAmJiBpbmNsdWRlU2NhbGUpIHtcbiAgICB2YXIgb2Zmc2V0SGVpZ2h0ID0gZWxlbWVudC5vZmZzZXRIZWlnaHQ7XG4gICAgdmFyIG9mZnNldFdpZHRoID0gZWxlbWVudC5vZmZzZXRXaWR0aDsgLy8gRG8gbm90IGF0dGVtcHQgdG8gZGl2aWRlIGJ5IDAsIG90aGVyd2lzZSB3ZSBnZXQgYEluZmluaXR5YCBhcyBzY2FsZVxuICAgIC8vIEZhbGxiYWNrIHRvIDEgaW4gY2FzZSBib3RoIHZhbHVlcyBhcmUgYDBgXG5cbiAgICBpZiAob2Zmc2V0V2lkdGggPiAwKSB7XG4gICAgICBzY2FsZVggPSByb3VuZChyZWN0LndpZHRoKSAvIG9mZnNldFdpZHRoIHx8IDE7XG4gICAgfVxuXG4gICAgaWYgKG9mZnNldEhlaWdodCA+IDApIHtcbiAgICAgIHNjYWxlWSA9IHJvdW5kKHJlY3QuaGVpZ2h0KSAvIG9mZnNldEhlaWdodCB8fCAxO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgd2lkdGg6IHJlY3Qud2lkdGggLyBzY2FsZVgsXG4gICAgaGVpZ2h0OiByZWN0LmhlaWdodCAvIHNjYWxlWSxcbiAgICB0b3A6IHJlY3QudG9wIC8gc2NhbGVZLFxuICAgIHJpZ2h0OiByZWN0LnJpZ2h0IC8gc2NhbGVYLFxuICAgIGJvdHRvbTogcmVjdC5ib3R0b20gLyBzY2FsZVksXG4gICAgbGVmdDogcmVjdC5sZWZ0IC8gc2NhbGVYLFxuICAgIHg6IHJlY3QubGVmdCAvIHNjYWxlWCxcbiAgICB5OiByZWN0LnRvcCAvIHNjYWxlWVxuICB9O1xufSIsImltcG9ydCB7IHZpZXdwb3J0IH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5pbXBvcnQgZ2V0Vmlld3BvcnRSZWN0IGZyb20gXCIuL2dldFZpZXdwb3J0UmVjdC5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50UmVjdCBmcm9tIFwiLi9nZXREb2N1bWVudFJlY3QuanNcIjtcbmltcG9ydCBsaXN0U2Nyb2xsUGFyZW50cyBmcm9tIFwiLi9saXN0U2Nyb2xsUGFyZW50cy5qc1wiO1xuaW1wb3J0IGdldE9mZnNldFBhcmVudCBmcm9tIFwiLi9nZXRPZmZzZXRQYXJlbnQuanNcIjtcbmltcG9ydCBnZXREb2N1bWVudEVsZW1lbnQgZnJvbSBcIi4vZ2V0RG9jdW1lbnRFbGVtZW50LmpzXCI7XG5pbXBvcnQgZ2V0Q29tcHV0ZWRTdHlsZSBmcm9tIFwiLi9nZXRDb21wdXRlZFN0eWxlLmpzXCI7XG5pbXBvcnQgeyBpc0VsZW1lbnQsIGlzSFRNTEVsZW1lbnQgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5pbXBvcnQgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IGZyb20gXCIuL2dldEJvdW5kaW5nQ2xpZW50UmVjdC5qc1wiO1xuaW1wb3J0IGdldFBhcmVudE5vZGUgZnJvbSBcIi4vZ2V0UGFyZW50Tm9kZS5qc1wiO1xuaW1wb3J0IGNvbnRhaW5zIGZyb20gXCIuL2NvbnRhaW5zLmpzXCI7XG5pbXBvcnQgZ2V0Tm9kZU5hbWUgZnJvbSBcIi4vZ2V0Tm9kZU5hbWUuanNcIjtcbmltcG9ydCByZWN0VG9DbGllbnRSZWN0IGZyb20gXCIuLi91dGlscy9yZWN0VG9DbGllbnRSZWN0LmpzXCI7XG5pbXBvcnQgeyBtYXgsIG1pbiB9IGZyb20gXCIuLi91dGlscy9tYXRoLmpzXCI7XG5cbmZ1bmN0aW9uIGdldElubmVyQm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnQpIHtcbiAgdmFyIHJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCk7XG4gIHJlY3QudG9wID0gcmVjdC50b3AgKyBlbGVtZW50LmNsaWVudFRvcDtcbiAgcmVjdC5sZWZ0ID0gcmVjdC5sZWZ0ICsgZWxlbWVudC5jbGllbnRMZWZ0O1xuICByZWN0LmJvdHRvbSA9IHJlY3QudG9wICsgZWxlbWVudC5jbGllbnRIZWlnaHQ7XG4gIHJlY3QucmlnaHQgPSByZWN0LmxlZnQgKyBlbGVtZW50LmNsaWVudFdpZHRoO1xuICByZWN0LndpZHRoID0gZWxlbWVudC5jbGllbnRXaWR0aDtcbiAgcmVjdC5oZWlnaHQgPSBlbGVtZW50LmNsaWVudEhlaWdodDtcbiAgcmVjdC54ID0gcmVjdC5sZWZ0O1xuICByZWN0LnkgPSByZWN0LnRvcDtcbiAgcmV0dXJuIHJlY3Q7XG59XG5cbmZ1bmN0aW9uIGdldENsaWVudFJlY3RGcm9tTWl4ZWRUeXBlKGVsZW1lbnQsIGNsaXBwaW5nUGFyZW50KSB7XG4gIHJldHVybiBjbGlwcGluZ1BhcmVudCA9PT0gdmlld3BvcnQgPyByZWN0VG9DbGllbnRSZWN0KGdldFZpZXdwb3J0UmVjdChlbGVtZW50KSkgOiBpc0VsZW1lbnQoY2xpcHBpbmdQYXJlbnQpID8gZ2V0SW5uZXJCb3VuZGluZ0NsaWVudFJlY3QoY2xpcHBpbmdQYXJlbnQpIDogcmVjdFRvQ2xpZW50UmVjdChnZXREb2N1bWVudFJlY3QoZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpKSk7XG59IC8vIEEgXCJjbGlwcGluZyBwYXJlbnRcIiBpcyBhbiBvdmVyZmxvd2FibGUgY29udGFpbmVyIHdpdGggdGhlIGNoYXJhY3RlcmlzdGljIG9mXG4vLyBjbGlwcGluZyAob3IgaGlkaW5nKSBvdmVyZmxvd2luZyBlbGVtZW50cyB3aXRoIGEgcG9zaXRpb24gZGlmZmVyZW50IGZyb21cbi8vIGBpbml0aWFsYFxuXG5cbmZ1bmN0aW9uIGdldENsaXBwaW5nUGFyZW50cyhlbGVtZW50KSB7XG4gIHZhciBjbGlwcGluZ1BhcmVudHMgPSBsaXN0U2Nyb2xsUGFyZW50cyhnZXRQYXJlbnROb2RlKGVsZW1lbnQpKTtcbiAgdmFyIGNhbkVzY2FwZUNsaXBwaW5nID0gWydhYnNvbHV0ZScsICdmaXhlZCddLmluZGV4T2YoZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5wb3NpdGlvbikgPj0gMDtcbiAgdmFyIGNsaXBwZXJFbGVtZW50ID0gY2FuRXNjYXBlQ2xpcHBpbmcgJiYgaXNIVE1MRWxlbWVudChlbGVtZW50KSA/IGdldE9mZnNldFBhcmVudChlbGVtZW50KSA6IGVsZW1lbnQ7XG5cbiAgaWYgKCFpc0VsZW1lbnQoY2xpcHBlckVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9IC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLXJldHVybl06IGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9mbG93L2lzc3Vlcy8xNDE0XG5cblxuICByZXR1cm4gY2xpcHBpbmdQYXJlbnRzLmZpbHRlcihmdW5jdGlvbiAoY2xpcHBpbmdQYXJlbnQpIHtcbiAgICByZXR1cm4gaXNFbGVtZW50KGNsaXBwaW5nUGFyZW50KSAmJiBjb250YWlucyhjbGlwcGluZ1BhcmVudCwgY2xpcHBlckVsZW1lbnQpICYmIGdldE5vZGVOYW1lKGNsaXBwaW5nUGFyZW50KSAhPT0gJ2JvZHknO1xuICB9KTtcbn0gLy8gR2V0cyB0aGUgbWF4aW11bSBhcmVhIHRoYXQgdGhlIGVsZW1lbnQgaXMgdmlzaWJsZSBpbiBkdWUgdG8gYW55IG51bWJlciBvZlxuLy8gY2xpcHBpbmcgcGFyZW50c1xuXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldENsaXBwaW5nUmVjdChlbGVtZW50LCBib3VuZGFyeSwgcm9vdEJvdW5kYXJ5KSB7XG4gIHZhciBtYWluQ2xpcHBpbmdQYXJlbnRzID0gYm91bmRhcnkgPT09ICdjbGlwcGluZ1BhcmVudHMnID8gZ2V0Q2xpcHBpbmdQYXJlbnRzKGVsZW1lbnQpIDogW10uY29uY2F0KGJvdW5kYXJ5KTtcbiAgdmFyIGNsaXBwaW5nUGFyZW50cyA9IFtdLmNvbmNhdChtYWluQ2xpcHBpbmdQYXJlbnRzLCBbcm9vdEJvdW5kYXJ5XSk7XG4gIHZhciBmaXJzdENsaXBwaW5nUGFyZW50ID0gY2xpcHBpbmdQYXJlbnRzWzBdO1xuICB2YXIgY2xpcHBpbmdSZWN0ID0gY2xpcHBpbmdQYXJlbnRzLnJlZHVjZShmdW5jdGlvbiAoYWNjUmVjdCwgY2xpcHBpbmdQYXJlbnQpIHtcbiAgICB2YXIgcmVjdCA9IGdldENsaWVudFJlY3RGcm9tTWl4ZWRUeXBlKGVsZW1lbnQsIGNsaXBwaW5nUGFyZW50KTtcbiAgICBhY2NSZWN0LnRvcCA9IG1heChyZWN0LnRvcCwgYWNjUmVjdC50b3ApO1xuICAgIGFjY1JlY3QucmlnaHQgPSBtaW4ocmVjdC5yaWdodCwgYWNjUmVjdC5yaWdodCk7XG4gICAgYWNjUmVjdC5ib3R0b20gPSBtaW4ocmVjdC5ib3R0b20sIGFjY1JlY3QuYm90dG9tKTtcbiAgICBhY2NSZWN0LmxlZnQgPSBtYXgocmVjdC5sZWZ0LCBhY2NSZWN0LmxlZnQpO1xuICAgIHJldHVybiBhY2NSZWN0O1xuICB9LCBnZXRDbGllbnRSZWN0RnJvbU1peGVkVHlwZShlbGVtZW50LCBmaXJzdENsaXBwaW5nUGFyZW50KSk7XG4gIGNsaXBwaW5nUmVjdC53aWR0aCA9IGNsaXBwaW5nUmVjdC5yaWdodCAtIGNsaXBwaW5nUmVjdC5sZWZ0O1xuICBjbGlwcGluZ1JlY3QuaGVpZ2h0ID0gY2xpcHBpbmdSZWN0LmJvdHRvbSAtIGNsaXBwaW5nUmVjdC50b3A7XG4gIGNsaXBwaW5nUmVjdC54ID0gY2xpcHBpbmdSZWN0LmxlZnQ7XG4gIGNsaXBwaW5nUmVjdC55ID0gY2xpcHBpbmdSZWN0LnRvcDtcbiAgcmV0dXJuIGNsaXBwaW5nUmVjdDtcbn0iLCJpbXBvcnQgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IGZyb20gXCIuL2dldEJvdW5kaW5nQ2xpZW50UmVjdC5qc1wiO1xuaW1wb3J0IGdldE5vZGVTY3JvbGwgZnJvbSBcIi4vZ2V0Tm9kZVNjcm9sbC5qc1wiO1xuaW1wb3J0IGdldE5vZGVOYW1lIGZyb20gXCIuL2dldE5vZGVOYW1lLmpzXCI7XG5pbXBvcnQgeyBpc0hUTUxFbGVtZW50IH0gZnJvbSBcIi4vaW5zdGFuY2VPZi5qc1wiO1xuaW1wb3J0IGdldFdpbmRvd1Njcm9sbEJhclggZnJvbSBcIi4vZ2V0V2luZG93U2Nyb2xsQmFyWC5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBpc1Njcm9sbFBhcmVudCBmcm9tIFwiLi9pc1Njcm9sbFBhcmVudC5qc1wiO1xuaW1wb3J0IHsgcm91bmQgfSBmcm9tIFwiLi4vdXRpbHMvbWF0aC5qc1wiO1xuXG5mdW5jdGlvbiBpc0VsZW1lbnRTY2FsZWQoZWxlbWVudCkge1xuICB2YXIgcmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIHZhciBzY2FsZVggPSByb3VuZChyZWN0LndpZHRoKSAvIGVsZW1lbnQub2Zmc2V0V2lkdGggfHwgMTtcbiAgdmFyIHNjYWxlWSA9IHJvdW5kKHJlY3QuaGVpZ2h0KSAvIGVsZW1lbnQub2Zmc2V0SGVpZ2h0IHx8IDE7XG4gIHJldHVybiBzY2FsZVggIT09IDEgfHwgc2NhbGVZICE9PSAxO1xufSAvLyBSZXR1cm5zIHRoZSBjb21wb3NpdGUgcmVjdCBvZiBhbiBlbGVtZW50IHJlbGF0aXZlIHRvIGl0cyBvZmZzZXRQYXJlbnQuXG4vLyBDb21wb3NpdGUgbWVhbnMgaXQgdGFrZXMgaW50byBhY2NvdW50IHRyYW5zZm9ybXMgYXMgd2VsbCBhcyBsYXlvdXQuXG5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Q29tcG9zaXRlUmVjdChlbGVtZW50T3JWaXJ0dWFsRWxlbWVudCwgb2Zmc2V0UGFyZW50LCBpc0ZpeGVkKSB7XG4gIGlmIChpc0ZpeGVkID09PSB2b2lkIDApIHtcbiAgICBpc0ZpeGVkID0gZmFsc2U7XG4gIH1cblxuICB2YXIgaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgPSBpc0hUTUxFbGVtZW50KG9mZnNldFBhcmVudCk7XG4gIHZhciBvZmZzZXRQYXJlbnRJc1NjYWxlZCA9IGlzSFRNTEVsZW1lbnQob2Zmc2V0UGFyZW50KSAmJiBpc0VsZW1lbnRTY2FsZWQob2Zmc2V0UGFyZW50KTtcbiAgdmFyIGRvY3VtZW50RWxlbWVudCA9IGdldERvY3VtZW50RWxlbWVudChvZmZzZXRQYXJlbnQpO1xuICB2YXIgcmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50T3JWaXJ0dWFsRWxlbWVudCwgb2Zmc2V0UGFyZW50SXNTY2FsZWQpO1xuICB2YXIgc2Nyb2xsID0ge1xuICAgIHNjcm9sbExlZnQ6IDAsXG4gICAgc2Nyb2xsVG9wOiAwXG4gIH07XG4gIHZhciBvZmZzZXRzID0ge1xuICAgIHg6IDAsXG4gICAgeTogMFxuICB9O1xuXG4gIGlmIChpc09mZnNldFBhcmVudEFuRWxlbWVudCB8fCAhaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgJiYgIWlzRml4ZWQpIHtcbiAgICBpZiAoZ2V0Tm9kZU5hbWUob2Zmc2V0UGFyZW50KSAhPT0gJ2JvZHknIHx8IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9wb3BwZXJqcy9wb3BwZXItY29yZS9pc3N1ZXMvMTA3OFxuICAgIGlzU2Nyb2xsUGFyZW50KGRvY3VtZW50RWxlbWVudCkpIHtcbiAgICAgIHNjcm9sbCA9IGdldE5vZGVTY3JvbGwob2Zmc2V0UGFyZW50KTtcbiAgICB9XG5cbiAgICBpZiAoaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpKSB7XG4gICAgICBvZmZzZXRzID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KG9mZnNldFBhcmVudCwgdHJ1ZSk7XG4gICAgICBvZmZzZXRzLnggKz0gb2Zmc2V0UGFyZW50LmNsaWVudExlZnQ7XG4gICAgICBvZmZzZXRzLnkgKz0gb2Zmc2V0UGFyZW50LmNsaWVudFRvcDtcbiAgICB9IGVsc2UgaWYgKGRvY3VtZW50RWxlbWVudCkge1xuICAgICAgb2Zmc2V0cy54ID0gZ2V0V2luZG93U2Nyb2xsQmFyWChkb2N1bWVudEVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgeDogcmVjdC5sZWZ0ICsgc2Nyb2xsLnNjcm9sbExlZnQgLSBvZmZzZXRzLngsXG4gICAgeTogcmVjdC50b3AgKyBzY3JvbGwuc2Nyb2xsVG9wIC0gb2Zmc2V0cy55LFxuICAgIHdpZHRoOiByZWN0LndpZHRoLFxuICAgIGhlaWdodDogcmVjdC5oZWlnaHRcbiAgfTtcbn0iLCJpbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuL2dldFdpbmRvdy5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KSB7XG4gIHJldHVybiBnZXRXaW5kb3coZWxlbWVudCkuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcbn0iLCJpbXBvcnQgeyBpc0VsZW1lbnQgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkge1xuICAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS1yZXR1cm5dOiBhc3N1bWUgYm9keSBpcyBhbHdheXMgYXZhaWxhYmxlXG4gIHJldHVybiAoKGlzRWxlbWVudChlbGVtZW50KSA/IGVsZW1lbnQub3duZXJEb2N1bWVudCA6IC8vICRGbG93Rml4TWVbcHJvcC1taXNzaW5nXVxuICBlbGVtZW50LmRvY3VtZW50KSB8fCB3aW5kb3cuZG9jdW1lbnQpLmRvY3VtZW50RWxlbWVudDtcbn0iLCJpbXBvcnQgZ2V0RG9jdW1lbnRFbGVtZW50IGZyb20gXCIuL2dldERvY3VtZW50RWxlbWVudC5qc1wiO1xuaW1wb3J0IGdldENvbXB1dGVkU3R5bGUgZnJvbSBcIi4vZ2V0Q29tcHV0ZWRTdHlsZS5qc1wiO1xuaW1wb3J0IGdldFdpbmRvd1Njcm9sbEJhclggZnJvbSBcIi4vZ2V0V2luZG93U2Nyb2xsQmFyWC5qc1wiO1xuaW1wb3J0IGdldFdpbmRvd1Njcm9sbCBmcm9tIFwiLi9nZXRXaW5kb3dTY3JvbGwuanNcIjtcbmltcG9ydCB7IG1heCB9IGZyb20gXCIuLi91dGlscy9tYXRoLmpzXCI7IC8vIEdldHMgdGhlIGVudGlyZSBzaXplIG9mIHRoZSBzY3JvbGxhYmxlIGRvY3VtZW50IGFyZWEsIGV2ZW4gZXh0ZW5kaW5nIG91dHNpZGVcbi8vIG9mIHRoZSBgPGh0bWw+YCBhbmQgYDxib2R5PmAgcmVjdCBib3VuZHMgaWYgaG9yaXpvbnRhbGx5IHNjcm9sbGFibGVcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0RG9jdW1lbnRSZWN0KGVsZW1lbnQpIHtcbiAgdmFyIF9lbGVtZW50JG93bmVyRG9jdW1lbjtcblxuICB2YXIgaHRtbCA9IGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KTtcbiAgdmFyIHdpblNjcm9sbCA9IGdldFdpbmRvd1Njcm9sbChlbGVtZW50KTtcbiAgdmFyIGJvZHkgPSAoX2VsZW1lbnQkb3duZXJEb2N1bWVuID0gZWxlbWVudC5vd25lckRvY3VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX2VsZW1lbnQkb3duZXJEb2N1bWVuLmJvZHk7XG4gIHZhciB3aWR0aCA9IG1heChodG1sLnNjcm9sbFdpZHRoLCBodG1sLmNsaWVudFdpZHRoLCBib2R5ID8gYm9keS5zY3JvbGxXaWR0aCA6IDAsIGJvZHkgPyBib2R5LmNsaWVudFdpZHRoIDogMCk7XG4gIHZhciBoZWlnaHQgPSBtYXgoaHRtbC5zY3JvbGxIZWlnaHQsIGh0bWwuY2xpZW50SGVpZ2h0LCBib2R5ID8gYm9keS5zY3JvbGxIZWlnaHQgOiAwLCBib2R5ID8gYm9keS5jbGllbnRIZWlnaHQgOiAwKTtcbiAgdmFyIHggPSAtd2luU2Nyb2xsLnNjcm9sbExlZnQgKyBnZXRXaW5kb3dTY3JvbGxCYXJYKGVsZW1lbnQpO1xuICB2YXIgeSA9IC13aW5TY3JvbGwuc2Nyb2xsVG9wO1xuXG4gIGlmIChnZXRDb21wdXRlZFN0eWxlKGJvZHkgfHwgaHRtbCkuZGlyZWN0aW9uID09PSAncnRsJykge1xuICAgIHggKz0gbWF4KGh0bWwuY2xpZW50V2lkdGgsIGJvZHkgPyBib2R5LmNsaWVudFdpZHRoIDogMCkgLSB3aWR0aDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgd2lkdGg6IHdpZHRoLFxuICAgIGhlaWdodDogaGVpZ2h0LFxuICAgIHg6IHgsXG4gICAgeTogeVxuICB9O1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldEhUTUxFbGVtZW50U2Nyb2xsKGVsZW1lbnQpIHtcbiAgcmV0dXJuIHtcbiAgICBzY3JvbGxMZWZ0OiBlbGVtZW50LnNjcm9sbExlZnQsXG4gICAgc2Nyb2xsVG9wOiBlbGVtZW50LnNjcm9sbFRvcFxuICB9O1xufSIsImltcG9ydCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgZnJvbSBcIi4vZ2V0Qm91bmRpbmdDbGllbnRSZWN0LmpzXCI7IC8vIFJldHVybnMgdGhlIGxheW91dCByZWN0IG9mIGFuIGVsZW1lbnQgcmVsYXRpdmUgdG8gaXRzIG9mZnNldFBhcmVudC4gTGF5b3V0XG4vLyBtZWFucyBpdCBkb2Vzbid0IHRha2UgaW50byBhY2NvdW50IHRyYW5zZm9ybXMuXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldExheW91dFJlY3QoZWxlbWVudCkge1xuICB2YXIgY2xpZW50UmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50KTsgLy8gVXNlIHRoZSBjbGllbnRSZWN0IHNpemVzIGlmIGl0J3Mgbm90IGJlZW4gdHJhbnNmb3JtZWQuXG4gIC8vIEZpeGVzIGh0dHBzOi8vZ2l0aHViLmNvbS9wb3BwZXJqcy9wb3BwZXItY29yZS9pc3N1ZXMvMTIyM1xuXG4gIHZhciB3aWR0aCA9IGVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gIHZhciBoZWlnaHQgPSBlbGVtZW50Lm9mZnNldEhlaWdodDtcblxuICBpZiAoTWF0aC5hYnMoY2xpZW50UmVjdC53aWR0aCAtIHdpZHRoKSA8PSAxKSB7XG4gICAgd2lkdGggPSBjbGllbnRSZWN0LndpZHRoO1xuICB9XG5cbiAgaWYgKE1hdGguYWJzKGNsaWVudFJlY3QuaGVpZ2h0IC0gaGVpZ2h0KSA8PSAxKSB7XG4gICAgaGVpZ2h0ID0gY2xpZW50UmVjdC5oZWlnaHQ7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHg6IGVsZW1lbnQub2Zmc2V0TGVmdCxcbiAgICB5OiBlbGVtZW50Lm9mZnNldFRvcCxcbiAgICB3aWR0aDogd2lkdGgsXG4gICAgaGVpZ2h0OiBoZWlnaHRcbiAgfTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXROb2RlTmFtZShlbGVtZW50KSB7XG4gIHJldHVybiBlbGVtZW50ID8gKGVsZW1lbnQubm9kZU5hbWUgfHwgJycpLnRvTG93ZXJDYXNlKCkgOiBudWxsO1xufSIsImltcG9ydCBnZXRXaW5kb3dTY3JvbGwgZnJvbSBcIi4vZ2V0V2luZG93U2Nyb2xsLmpzXCI7XG5pbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuL2dldFdpbmRvdy5qc1wiO1xuaW1wb3J0IHsgaXNIVE1MRWxlbWVudCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmltcG9ydCBnZXRIVE1MRWxlbWVudFNjcm9sbCBmcm9tIFwiLi9nZXRIVE1MRWxlbWVudFNjcm9sbC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Tm9kZVNjcm9sbChub2RlKSB7XG4gIGlmIChub2RlID09PSBnZXRXaW5kb3cobm9kZSkgfHwgIWlzSFRNTEVsZW1lbnQobm9kZSkpIHtcbiAgICByZXR1cm4gZ2V0V2luZG93U2Nyb2xsKG5vZGUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBnZXRIVE1MRWxlbWVudFNjcm9sbChub2RlKTtcbiAgfVxufSIsImltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4vZ2V0V2luZG93LmpzXCI7XG5pbXBvcnQgZ2V0Tm9kZU5hbWUgZnJvbSBcIi4vZ2V0Tm9kZU5hbWUuanNcIjtcbmltcG9ydCBnZXRDb21wdXRlZFN0eWxlIGZyb20gXCIuL2dldENvbXB1dGVkU3R5bGUuanNcIjtcbmltcG9ydCB7IGlzSFRNTEVsZW1lbnQgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5pbXBvcnQgaXNUYWJsZUVsZW1lbnQgZnJvbSBcIi4vaXNUYWJsZUVsZW1lbnQuanNcIjtcbmltcG9ydCBnZXRQYXJlbnROb2RlIGZyb20gXCIuL2dldFBhcmVudE5vZGUuanNcIjtcblxuZnVuY3Rpb24gZ2V0VHJ1ZU9mZnNldFBhcmVudChlbGVtZW50KSB7XG4gIGlmICghaXNIVE1MRWxlbWVudChlbGVtZW50KSB8fCAvLyBodHRwczovL2dpdGh1Yi5jb20vcG9wcGVyanMvcG9wcGVyLWNvcmUvaXNzdWVzLzgzN1xuICBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLnBvc2l0aW9uID09PSAnZml4ZWQnKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gZWxlbWVudC5vZmZzZXRQYXJlbnQ7XG59IC8vIGAub2Zmc2V0UGFyZW50YCByZXBvcnRzIGBudWxsYCBmb3IgZml4ZWQgZWxlbWVudHMsIHdoaWxlIGFic29sdXRlIGVsZW1lbnRzXG4vLyByZXR1cm4gdGhlIGNvbnRhaW5pbmcgYmxvY2tcblxuXG5mdW5jdGlvbiBnZXRDb250YWluaW5nQmxvY2soZWxlbWVudCkge1xuICB2YXIgaXNGaXJlZm94ID0gbmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoJ2ZpcmVmb3gnKSAhPT0gLTE7XG4gIHZhciBpc0lFID0gbmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCdUcmlkZW50JykgIT09IC0xO1xuXG4gIGlmIChpc0lFICYmIGlzSFRNTEVsZW1lbnQoZWxlbWVudCkpIHtcbiAgICAvLyBJbiBJRSA5LCAxMCBhbmQgMTEgZml4ZWQgZWxlbWVudHMgY29udGFpbmluZyBibG9jayBpcyBhbHdheXMgZXN0YWJsaXNoZWQgYnkgdGhlIHZpZXdwb3J0XG4gICAgdmFyIGVsZW1lbnRDc3MgPSBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xuXG4gICAgaWYgKGVsZW1lbnRDc3MucG9zaXRpb24gPT09ICdmaXhlZCcpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHZhciBjdXJyZW50Tm9kZSA9IGdldFBhcmVudE5vZGUoZWxlbWVudCk7XG5cbiAgd2hpbGUgKGlzSFRNTEVsZW1lbnQoY3VycmVudE5vZGUpICYmIFsnaHRtbCcsICdib2R5J10uaW5kZXhPZihnZXROb2RlTmFtZShjdXJyZW50Tm9kZSkpIDwgMCkge1xuICAgIHZhciBjc3MgPSBnZXRDb21wdXRlZFN0eWxlKGN1cnJlbnROb2RlKTsgLy8gVGhpcyBpcyBub24tZXhoYXVzdGl2ZSBidXQgY292ZXJzIHRoZSBtb3N0IGNvbW1vbiBDU1MgcHJvcGVydGllcyB0aGF0XG4gICAgLy8gY3JlYXRlIGEgY29udGFpbmluZyBibG9jay5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvQ29udGFpbmluZ19ibG9jayNpZGVudGlmeWluZ190aGVfY29udGFpbmluZ19ibG9ja1xuXG4gICAgaWYgKGNzcy50cmFuc2Zvcm0gIT09ICdub25lJyB8fCBjc3MucGVyc3BlY3RpdmUgIT09ICdub25lJyB8fCBjc3MuY29udGFpbiA9PT0gJ3BhaW50JyB8fCBbJ3RyYW5zZm9ybScsICdwZXJzcGVjdGl2ZSddLmluZGV4T2YoY3NzLndpbGxDaGFuZ2UpICE9PSAtMSB8fCBpc0ZpcmVmb3ggJiYgY3NzLndpbGxDaGFuZ2UgPT09ICdmaWx0ZXInIHx8IGlzRmlyZWZveCAmJiBjc3MuZmlsdGVyICYmIGNzcy5maWx0ZXIgIT09ICdub25lJykge1xuICAgICAgcmV0dXJuIGN1cnJlbnROb2RlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLnBhcmVudE5vZGU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59IC8vIEdldHMgdGhlIGNsb3Nlc3QgYW5jZXN0b3IgcG9zaXRpb25lZCBlbGVtZW50LiBIYW5kbGVzIHNvbWUgZWRnZSBjYXNlcyxcbi8vIHN1Y2ggYXMgdGFibGUgYW5jZXN0b3JzIGFuZCBjcm9zcyBicm93c2VyIGJ1Z3MuXG5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0T2Zmc2V0UGFyZW50KGVsZW1lbnQpIHtcbiAgdmFyIHdpbmRvdyA9IGdldFdpbmRvdyhlbGVtZW50KTtcbiAgdmFyIG9mZnNldFBhcmVudCA9IGdldFRydWVPZmZzZXRQYXJlbnQoZWxlbWVudCk7XG5cbiAgd2hpbGUgKG9mZnNldFBhcmVudCAmJiBpc1RhYmxlRWxlbWVudChvZmZzZXRQYXJlbnQpICYmIGdldENvbXB1dGVkU3R5bGUob2Zmc2V0UGFyZW50KS5wb3NpdGlvbiA9PT0gJ3N0YXRpYycpIHtcbiAgICBvZmZzZXRQYXJlbnQgPSBnZXRUcnVlT2Zmc2V0UGFyZW50KG9mZnNldFBhcmVudCk7XG4gIH1cblxuICBpZiAob2Zmc2V0UGFyZW50ICYmIChnZXROb2RlTmFtZShvZmZzZXRQYXJlbnQpID09PSAnaHRtbCcgfHwgZ2V0Tm9kZU5hbWUob2Zmc2V0UGFyZW50KSA9PT0gJ2JvZHknICYmIGdldENvbXB1dGVkU3R5bGUob2Zmc2V0UGFyZW50KS5wb3NpdGlvbiA9PT0gJ3N0YXRpYycpKSB7XG4gICAgcmV0dXJuIHdpbmRvdztcbiAgfVxuXG4gIHJldHVybiBvZmZzZXRQYXJlbnQgfHwgZ2V0Q29udGFpbmluZ0Jsb2NrKGVsZW1lbnQpIHx8IHdpbmRvdztcbn0iLCJpbXBvcnQgZ2V0Tm9kZU5hbWUgZnJvbSBcIi4vZ2V0Tm9kZU5hbWUuanNcIjtcbmltcG9ydCBnZXREb2N1bWVudEVsZW1lbnQgZnJvbSBcIi4vZ2V0RG9jdW1lbnRFbGVtZW50LmpzXCI7XG5pbXBvcnQgeyBpc1NoYWRvd1Jvb3QgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRQYXJlbnROb2RlKGVsZW1lbnQpIHtcbiAgaWYgKGdldE5vZGVOYW1lKGVsZW1lbnQpID09PSAnaHRtbCcpIHtcbiAgICByZXR1cm4gZWxlbWVudDtcbiAgfVxuXG4gIHJldHVybiAoLy8gdGhpcyBpcyBhIHF1aWNrZXIgKGJ1dCBsZXNzIHR5cGUgc2FmZSkgd2F5IHRvIHNhdmUgcXVpdGUgc29tZSBieXRlcyBmcm9tIHRoZSBidW5kbGVcbiAgICAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS1yZXR1cm5dXG4gICAgLy8gJEZsb3dGaXhNZVtwcm9wLW1pc3NpbmddXG4gICAgZWxlbWVudC5hc3NpZ25lZFNsb3QgfHwgLy8gc3RlcCBpbnRvIHRoZSBzaGFkb3cgRE9NIG9mIHRoZSBwYXJlbnQgb2YgYSBzbG90dGVkIG5vZGVcbiAgICBlbGVtZW50LnBhcmVudE5vZGUgfHwgKCAvLyBET00gRWxlbWVudCBkZXRlY3RlZFxuICAgIGlzU2hhZG93Um9vdChlbGVtZW50KSA/IGVsZW1lbnQuaG9zdCA6IG51bGwpIHx8IC8vIFNoYWRvd1Jvb3QgZGV0ZWN0ZWRcbiAgICAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS1jYWxsXTogSFRNTEVsZW1lbnQgaXMgYSBOb2RlXG4gICAgZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpIC8vIGZhbGxiYWNrXG5cbiAgKTtcbn0iLCJpbXBvcnQgZ2V0UGFyZW50Tm9kZSBmcm9tIFwiLi9nZXRQYXJlbnROb2RlLmpzXCI7XG5pbXBvcnQgaXNTY3JvbGxQYXJlbnQgZnJvbSBcIi4vaXNTY3JvbGxQYXJlbnQuanNcIjtcbmltcG9ydCBnZXROb2RlTmFtZSBmcm9tIFwiLi9nZXROb2RlTmFtZS5qc1wiO1xuaW1wb3J0IHsgaXNIVE1MRWxlbWVudCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFNjcm9sbFBhcmVudChub2RlKSB7XG4gIGlmIChbJ2h0bWwnLCAnYm9keScsICcjZG9jdW1lbnQnXS5pbmRleE9mKGdldE5vZGVOYW1lKG5vZGUpKSA+PSAwKSB7XG4gICAgLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtcmV0dXJuXTogYXNzdW1lIGJvZHkgaXMgYWx3YXlzIGF2YWlsYWJsZVxuICAgIHJldHVybiBub2RlLm93bmVyRG9jdW1lbnQuYm9keTtcbiAgfVxuXG4gIGlmIChpc0hUTUxFbGVtZW50KG5vZGUpICYmIGlzU2Nyb2xsUGFyZW50KG5vZGUpKSB7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICByZXR1cm4gZ2V0U2Nyb2xsUGFyZW50KGdldFBhcmVudE5vZGUobm9kZSkpO1xufSIsImltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4vZ2V0V2luZG93LmpzXCI7XG5pbXBvcnQgZ2V0RG9jdW1lbnRFbGVtZW50IGZyb20gXCIuL2dldERvY3VtZW50RWxlbWVudC5qc1wiO1xuaW1wb3J0IGdldFdpbmRvd1Njcm9sbEJhclggZnJvbSBcIi4vZ2V0V2luZG93U2Nyb2xsQmFyWC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Vmlld3BvcnRSZWN0KGVsZW1lbnQpIHtcbiAgdmFyIHdpbiA9IGdldFdpbmRvdyhlbGVtZW50KTtcbiAgdmFyIGh0bWwgPSBnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCk7XG4gIHZhciB2aXN1YWxWaWV3cG9ydCA9IHdpbi52aXN1YWxWaWV3cG9ydDtcbiAgdmFyIHdpZHRoID0gaHRtbC5jbGllbnRXaWR0aDtcbiAgdmFyIGhlaWdodCA9IGh0bWwuY2xpZW50SGVpZ2h0O1xuICB2YXIgeCA9IDA7XG4gIHZhciB5ID0gMDsgLy8gTkI6IFRoaXMgaXNuJ3Qgc3VwcG9ydGVkIG9uIGlPUyA8PSAxMi4gSWYgdGhlIGtleWJvYXJkIGlzIG9wZW4sIHRoZSBwb3BwZXJcbiAgLy8gY2FuIGJlIG9ic2N1cmVkIHVuZGVybmVhdGggaXQuXG4gIC8vIEFsc28sIGBodG1sLmNsaWVudEhlaWdodGAgYWRkcyB0aGUgYm90dG9tIGJhciBoZWlnaHQgaW4gU2FmYXJpIGlPUywgZXZlblxuICAvLyBpZiBpdCBpc24ndCBvcGVuLCBzbyBpZiB0aGlzIGlzbid0IGF2YWlsYWJsZSwgdGhlIHBvcHBlciB3aWxsIGJlIGRldGVjdGVkXG4gIC8vIHRvIG92ZXJmbG93IHRoZSBib3R0b20gb2YgdGhlIHNjcmVlbiB0b28gZWFybHkuXG5cbiAgaWYgKHZpc3VhbFZpZXdwb3J0KSB7XG4gICAgd2lkdGggPSB2aXN1YWxWaWV3cG9ydC53aWR0aDtcbiAgICBoZWlnaHQgPSB2aXN1YWxWaWV3cG9ydC5oZWlnaHQ7IC8vIFVzZXMgTGF5b3V0IFZpZXdwb3J0IChsaWtlIENocm9tZTsgU2FmYXJpIGRvZXMgbm90IGN1cnJlbnRseSlcbiAgICAvLyBJbiBDaHJvbWUsIGl0IHJldHVybnMgYSB2YWx1ZSB2ZXJ5IGNsb3NlIHRvIDAgKCsvLSkgYnV0IGNvbnRhaW5zIHJvdW5kaW5nXG4gICAgLy8gZXJyb3JzIGR1ZSB0byBmbG9hdGluZyBwb2ludCBudW1iZXJzLCBzbyB3ZSBuZWVkIHRvIGNoZWNrIHByZWNpc2lvbi5cbiAgICAvLyBTYWZhcmkgcmV0dXJucyBhIG51bWJlciA8PSAwLCB1c3VhbGx5IDwgLTEgd2hlbiBwaW5jaC16b29tZWRcbiAgICAvLyBGZWF0dXJlIGRldGVjdGlvbiBmYWlscyBpbiBtb2JpbGUgZW11bGF0aW9uIG1vZGUgaW4gQ2hyb21lLlxuICAgIC8vIE1hdGguYWJzKHdpbi5pbm5lcldpZHRoIC8gdmlzdWFsVmlld3BvcnQuc2NhbGUgLSB2aXN1YWxWaWV3cG9ydC53aWR0aCkgPFxuICAgIC8vIDAuMDAxXG4gICAgLy8gRmFsbGJhY2sgaGVyZTogXCJOb3QgU2FmYXJpXCIgdXNlckFnZW50XG5cbiAgICBpZiAoIS9eKCg/IWNocm9tZXxhbmRyb2lkKS4pKnNhZmFyaS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkpIHtcbiAgICAgIHggPSB2aXN1YWxWaWV3cG9ydC5vZmZzZXRMZWZ0O1xuICAgICAgeSA9IHZpc3VhbFZpZXdwb3J0Lm9mZnNldFRvcDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHdpZHRoOiB3aWR0aCxcbiAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICB4OiB4ICsgZ2V0V2luZG93U2Nyb2xsQmFyWChlbGVtZW50KSxcbiAgICB5OiB5XG4gIH07XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0V2luZG93KG5vZGUpIHtcbiAgaWYgKG5vZGUgPT0gbnVsbCkge1xuICAgIHJldHVybiB3aW5kb3c7XG4gIH1cblxuICBpZiAobm9kZS50b1N0cmluZygpICE9PSAnW29iamVjdCBXaW5kb3ddJykge1xuICAgIHZhciBvd25lckRvY3VtZW50ID0gbm9kZS5vd25lckRvY3VtZW50O1xuICAgIHJldHVybiBvd25lckRvY3VtZW50ID8gb3duZXJEb2N1bWVudC5kZWZhdWx0VmlldyB8fCB3aW5kb3cgOiB3aW5kb3c7XG4gIH1cblxuICByZXR1cm4gbm9kZTtcbn0iLCJpbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuL2dldFdpbmRvdy5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0V2luZG93U2Nyb2xsKG5vZGUpIHtcbiAgdmFyIHdpbiA9IGdldFdpbmRvdyhub2RlKTtcbiAgdmFyIHNjcm9sbExlZnQgPSB3aW4ucGFnZVhPZmZzZXQ7XG4gIHZhciBzY3JvbGxUb3AgPSB3aW4ucGFnZVlPZmZzZXQ7XG4gIHJldHVybiB7XG4gICAgc2Nyb2xsTGVmdDogc2Nyb2xsTGVmdCxcbiAgICBzY3JvbGxUb3A6IHNjcm9sbFRvcFxuICB9O1xufSIsImltcG9ydCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgZnJvbSBcIi4vZ2V0Qm91bmRpbmdDbGllbnRSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0RG9jdW1lbnRFbGVtZW50IGZyb20gXCIuL2dldERvY3VtZW50RWxlbWVudC5qc1wiO1xuaW1wb3J0IGdldFdpbmRvd1Njcm9sbCBmcm9tIFwiLi9nZXRXaW5kb3dTY3JvbGwuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFdpbmRvd1Njcm9sbEJhclgoZWxlbWVudCkge1xuICAvLyBJZiA8aHRtbD4gaGFzIGEgQ1NTIHdpZHRoIGdyZWF0ZXIgdGhhbiB0aGUgdmlld3BvcnQsIHRoZW4gdGhpcyB3aWxsIGJlXG4gIC8vIGluY29ycmVjdCBmb3IgUlRMLlxuICAvLyBQb3BwZXIgMSBpcyBicm9rZW4gaW4gdGhpcyBjYXNlIGFuZCBuZXZlciBoYWQgYSBidWcgcmVwb3J0IHNvIGxldCdzIGFzc3VtZVxuICAvLyBpdCdzIG5vdCBhbiBpc3N1ZS4gSSBkb24ndCB0aGluayBhbnlvbmUgZXZlciBzcGVjaWZpZXMgd2lkdGggb24gPGh0bWw+XG4gIC8vIGFueXdheS5cbiAgLy8gQnJvd3NlcnMgd2hlcmUgdGhlIGxlZnQgc2Nyb2xsYmFyIGRvZXNuJ3QgY2F1c2UgYW4gaXNzdWUgcmVwb3J0IGAwYCBmb3JcbiAgLy8gdGhpcyAoZS5nLiBFZGdlIDIwMTksIElFMTEsIFNhZmFyaSlcbiAgcmV0dXJuIGdldEJvdW5kaW5nQ2xpZW50UmVjdChnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkpLmxlZnQgKyBnZXRXaW5kb3dTY3JvbGwoZWxlbWVudCkuc2Nyb2xsTGVmdDtcbn0iLCJpbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuL2dldFdpbmRvdy5qc1wiO1xuXG5mdW5jdGlvbiBpc0VsZW1lbnQobm9kZSkge1xuICB2YXIgT3duRWxlbWVudCA9IGdldFdpbmRvdyhub2RlKS5FbGVtZW50O1xuICByZXR1cm4gbm9kZSBpbnN0YW5jZW9mIE93bkVsZW1lbnQgfHwgbm9kZSBpbnN0YW5jZW9mIEVsZW1lbnQ7XG59XG5cbmZ1bmN0aW9uIGlzSFRNTEVsZW1lbnQobm9kZSkge1xuICB2YXIgT3duRWxlbWVudCA9IGdldFdpbmRvdyhub2RlKS5IVE1MRWxlbWVudDtcbiAgcmV0dXJuIG5vZGUgaW5zdGFuY2VvZiBPd25FbGVtZW50IHx8IG5vZGUgaW5zdGFuY2VvZiBIVE1MRWxlbWVudDtcbn1cblxuZnVuY3Rpb24gaXNTaGFkb3dSb290KG5vZGUpIHtcbiAgLy8gSUUgMTEgaGFzIG5vIFNoYWRvd1Jvb3RcbiAgaWYgKHR5cGVvZiBTaGFkb3dSb290ID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHZhciBPd25FbGVtZW50ID0gZ2V0V2luZG93KG5vZGUpLlNoYWRvd1Jvb3Q7XG4gIHJldHVybiBub2RlIGluc3RhbmNlb2YgT3duRWxlbWVudCB8fCBub2RlIGluc3RhbmNlb2YgU2hhZG93Um9vdDtcbn1cblxuZXhwb3J0IHsgaXNFbGVtZW50LCBpc0hUTUxFbGVtZW50LCBpc1NoYWRvd1Jvb3QgfTsiLCJpbXBvcnQgZ2V0Q29tcHV0ZWRTdHlsZSBmcm9tIFwiLi9nZXRDb21wdXRlZFN0eWxlLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1Njcm9sbFBhcmVudChlbGVtZW50KSB7XG4gIC8vIEZpcmVmb3ggd2FudHMgdXMgdG8gY2hlY2sgYC14YCBhbmQgYC15YCB2YXJpYXRpb25zIGFzIHdlbGxcbiAgdmFyIF9nZXRDb21wdXRlZFN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KSxcbiAgICAgIG92ZXJmbG93ID0gX2dldENvbXB1dGVkU3R5bGUub3ZlcmZsb3csXG4gICAgICBvdmVyZmxvd1ggPSBfZ2V0Q29tcHV0ZWRTdHlsZS5vdmVyZmxvd1gsXG4gICAgICBvdmVyZmxvd1kgPSBfZ2V0Q29tcHV0ZWRTdHlsZS5vdmVyZmxvd1k7XG5cbiAgcmV0dXJuIC9hdXRvfHNjcm9sbHxvdmVybGF5fGhpZGRlbi8udGVzdChvdmVyZmxvdyArIG92ZXJmbG93WSArIG92ZXJmbG93WCk7XG59IiwiaW1wb3J0IGdldE5vZGVOYW1lIGZyb20gXCIuL2dldE5vZGVOYW1lLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1RhYmxlRWxlbWVudChlbGVtZW50KSB7XG4gIHJldHVybiBbJ3RhYmxlJywgJ3RkJywgJ3RoJ10uaW5kZXhPZihnZXROb2RlTmFtZShlbGVtZW50KSkgPj0gMDtcbn0iLCJpbXBvcnQgZ2V0U2Nyb2xsUGFyZW50IGZyb20gXCIuL2dldFNjcm9sbFBhcmVudC5qc1wiO1xuaW1wb3J0IGdldFBhcmVudE5vZGUgZnJvbSBcIi4vZ2V0UGFyZW50Tm9kZS5qc1wiO1xuaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi9nZXRXaW5kb3cuanNcIjtcbmltcG9ydCBpc1Njcm9sbFBhcmVudCBmcm9tIFwiLi9pc1Njcm9sbFBhcmVudC5qc1wiO1xuLypcbmdpdmVuIGEgRE9NIGVsZW1lbnQsIHJldHVybiB0aGUgbGlzdCBvZiBhbGwgc2Nyb2xsIHBhcmVudHMsIHVwIHRoZSBsaXN0IG9mIGFuY2Vzb3JzXG51bnRpbCB3ZSBnZXQgdG8gdGhlIHRvcCB3aW5kb3cgb2JqZWN0LiBUaGlzIGxpc3QgaXMgd2hhdCB3ZSBhdHRhY2ggc2Nyb2xsIGxpc3RlbmVyc1xudG8sIGJlY2F1c2UgaWYgYW55IG9mIHRoZXNlIHBhcmVudCBlbGVtZW50cyBzY3JvbGwsIHdlJ2xsIG5lZWQgdG8gcmUtY2FsY3VsYXRlIHRoZVxucmVmZXJlbmNlIGVsZW1lbnQncyBwb3NpdGlvbi5cbiovXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGxpc3RTY3JvbGxQYXJlbnRzKGVsZW1lbnQsIGxpc3QpIHtcbiAgdmFyIF9lbGVtZW50JG93bmVyRG9jdW1lbjtcblxuICBpZiAobGlzdCA9PT0gdm9pZCAwKSB7XG4gICAgbGlzdCA9IFtdO1xuICB9XG5cbiAgdmFyIHNjcm9sbFBhcmVudCA9IGdldFNjcm9sbFBhcmVudChlbGVtZW50KTtcbiAgdmFyIGlzQm9keSA9IHNjcm9sbFBhcmVudCA9PT0gKChfZWxlbWVudCRvd25lckRvY3VtZW4gPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfZWxlbWVudCRvd25lckRvY3VtZW4uYm9keSk7XG4gIHZhciB3aW4gPSBnZXRXaW5kb3coc2Nyb2xsUGFyZW50KTtcbiAgdmFyIHRhcmdldCA9IGlzQm9keSA/IFt3aW5dLmNvbmNhdCh3aW4udmlzdWFsVmlld3BvcnQgfHwgW10sIGlzU2Nyb2xsUGFyZW50KHNjcm9sbFBhcmVudCkgPyBzY3JvbGxQYXJlbnQgOiBbXSkgOiBzY3JvbGxQYXJlbnQ7XG4gIHZhciB1cGRhdGVkTGlzdCA9IGxpc3QuY29uY2F0KHRhcmdldCk7XG4gIHJldHVybiBpc0JvZHkgPyB1cGRhdGVkTGlzdCA6IC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLWNhbGxdOiBpc0JvZHkgdGVsbHMgdXMgdGFyZ2V0IHdpbGwgYmUgYW4gSFRNTEVsZW1lbnQgaGVyZVxuICB1cGRhdGVkTGlzdC5jb25jYXQobGlzdFNjcm9sbFBhcmVudHMoZ2V0UGFyZW50Tm9kZSh0YXJnZXQpKSk7XG59IiwiZXhwb3J0IHZhciB0b3AgPSAndG9wJztcbmV4cG9ydCB2YXIgYm90dG9tID0gJ2JvdHRvbSc7XG5leHBvcnQgdmFyIHJpZ2h0ID0gJ3JpZ2h0JztcbmV4cG9ydCB2YXIgbGVmdCA9ICdsZWZ0JztcbmV4cG9ydCB2YXIgYXV0byA9ICdhdXRvJztcbmV4cG9ydCB2YXIgYmFzZVBsYWNlbWVudHMgPSBbdG9wLCBib3R0b20sIHJpZ2h0LCBsZWZ0XTtcbmV4cG9ydCB2YXIgc3RhcnQgPSAnc3RhcnQnO1xuZXhwb3J0IHZhciBlbmQgPSAnZW5kJztcbmV4cG9ydCB2YXIgY2xpcHBpbmdQYXJlbnRzID0gJ2NsaXBwaW5nUGFyZW50cyc7XG5leHBvcnQgdmFyIHZpZXdwb3J0ID0gJ3ZpZXdwb3J0JztcbmV4cG9ydCB2YXIgcG9wcGVyID0gJ3BvcHBlcic7XG5leHBvcnQgdmFyIHJlZmVyZW5jZSA9ICdyZWZlcmVuY2UnO1xuZXhwb3J0IHZhciB2YXJpYXRpb25QbGFjZW1lbnRzID0gLyojX19QVVJFX18qL2Jhc2VQbGFjZW1lbnRzLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIGFjYy5jb25jYXQoW3BsYWNlbWVudCArIFwiLVwiICsgc3RhcnQsIHBsYWNlbWVudCArIFwiLVwiICsgZW5kXSk7XG59LCBbXSk7XG5leHBvcnQgdmFyIHBsYWNlbWVudHMgPSAvKiNfX1BVUkVfXyovW10uY29uY2F0KGJhc2VQbGFjZW1lbnRzLCBbYXV0b10pLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIGFjYy5jb25jYXQoW3BsYWNlbWVudCwgcGxhY2VtZW50ICsgXCItXCIgKyBzdGFydCwgcGxhY2VtZW50ICsgXCItXCIgKyBlbmRdKTtcbn0sIFtdKTsgLy8gbW9kaWZpZXJzIHRoYXQgbmVlZCB0byByZWFkIHRoZSBET01cblxuZXhwb3J0IHZhciBiZWZvcmVSZWFkID0gJ2JlZm9yZVJlYWQnO1xuZXhwb3J0IHZhciByZWFkID0gJ3JlYWQnO1xuZXhwb3J0IHZhciBhZnRlclJlYWQgPSAnYWZ0ZXJSZWFkJzsgLy8gcHVyZS1sb2dpYyBtb2RpZmllcnNcblxuZXhwb3J0IHZhciBiZWZvcmVNYWluID0gJ2JlZm9yZU1haW4nO1xuZXhwb3J0IHZhciBtYWluID0gJ21haW4nO1xuZXhwb3J0IHZhciBhZnRlck1haW4gPSAnYWZ0ZXJNYWluJzsgLy8gbW9kaWZpZXIgd2l0aCB0aGUgcHVycG9zZSB0byB3cml0ZSB0byB0aGUgRE9NIChvciB3cml0ZSBpbnRvIGEgZnJhbWV3b3JrIHN0YXRlKVxuXG5leHBvcnQgdmFyIGJlZm9yZVdyaXRlID0gJ2JlZm9yZVdyaXRlJztcbmV4cG9ydCB2YXIgd3JpdGUgPSAnd3JpdGUnO1xuZXhwb3J0IHZhciBhZnRlcldyaXRlID0gJ2FmdGVyV3JpdGUnO1xuZXhwb3J0IHZhciBtb2RpZmllclBoYXNlcyA9IFtiZWZvcmVSZWFkLCByZWFkLCBhZnRlclJlYWQsIGJlZm9yZU1haW4sIG1haW4sIGFmdGVyTWFpbiwgYmVmb3JlV3JpdGUsIHdyaXRlLCBhZnRlcldyaXRlXTsiLCJleHBvcnQgKiBmcm9tIFwiLi9lbnVtcy5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vbW9kaWZpZXJzL2luZGV4LmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZXhwb3J0IHsgcG9wcGVyR2VuZXJhdG9yLCBkZXRlY3RPdmVyZmxvdywgY3JlYXRlUG9wcGVyIGFzIGNyZWF0ZVBvcHBlckJhc2UgfSBmcm9tIFwiLi9jcmVhdGVQb3BwZXIuanNcIjsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5leHBvcnQgeyBjcmVhdGVQb3BwZXIgfSBmcm9tIFwiLi9wb3BwZXIuanNcIjsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5leHBvcnQgeyBjcmVhdGVQb3BwZXIgYXMgY3JlYXRlUG9wcGVyTGl0ZSB9IGZyb20gXCIuL3BvcHBlci1saXRlLmpzXCI7IiwiaW1wb3J0IGdldE5vZGVOYW1lIGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0Tm9kZU5hbWUuanNcIjtcbmltcG9ydCB7IGlzSFRNTEVsZW1lbnQgfSBmcm9tIFwiLi4vZG9tLXV0aWxzL2luc3RhbmNlT2YuanNcIjsgLy8gVGhpcyBtb2RpZmllciB0YWtlcyB0aGUgc3R5bGVzIHByZXBhcmVkIGJ5IHRoZSBgY29tcHV0ZVN0eWxlc2AgbW9kaWZpZXJcbi8vIGFuZCBhcHBsaWVzIHRoZW0gdG8gdGhlIEhUTUxFbGVtZW50cyBzdWNoIGFzIHBvcHBlciBhbmQgYXJyb3dcblxuZnVuY3Rpb24gYXBwbHlTdHlsZXMoX3JlZikge1xuICB2YXIgc3RhdGUgPSBfcmVmLnN0YXRlO1xuICBPYmplY3Qua2V5cyhzdGF0ZS5lbGVtZW50cykuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkge1xuICAgIHZhciBzdHlsZSA9IHN0YXRlLnN0eWxlc1tuYW1lXSB8fCB7fTtcbiAgICB2YXIgYXR0cmlidXRlcyA9IHN0YXRlLmF0dHJpYnV0ZXNbbmFtZV0gfHwge307XG4gICAgdmFyIGVsZW1lbnQgPSBzdGF0ZS5lbGVtZW50c1tuYW1lXTsgLy8gYXJyb3cgaXMgb3B0aW9uYWwgKyB2aXJ0dWFsIGVsZW1lbnRzXG5cbiAgICBpZiAoIWlzSFRNTEVsZW1lbnQoZWxlbWVudCkgfHwgIWdldE5vZGVOYW1lKGVsZW1lbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfSAvLyBGbG93IGRvZXNuJ3Qgc3VwcG9ydCB0byBleHRlbmQgdGhpcyBwcm9wZXJ0eSwgYnV0IGl0J3MgdGhlIG1vc3RcbiAgICAvLyBlZmZlY3RpdmUgd2F5IHRvIGFwcGx5IHN0eWxlcyB0byBhbiBIVE1MRWxlbWVudFxuICAgIC8vICRGbG93Rml4TWVbY2Fubm90LXdyaXRlXVxuXG5cbiAgICBPYmplY3QuYXNzaWduKGVsZW1lbnQuc3R5bGUsIHN0eWxlKTtcbiAgICBPYmplY3Qua2V5cyhhdHRyaWJ1dGVzKS5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICB2YXIgdmFsdWUgPSBhdHRyaWJ1dGVzW25hbWVdO1xuXG4gICAgICBpZiAodmFsdWUgPT09IGZhbHNlKSB7XG4gICAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKG5hbWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUgPT09IHRydWUgPyAnJyA6IHZhbHVlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGVmZmVjdChfcmVmMikge1xuICB2YXIgc3RhdGUgPSBfcmVmMi5zdGF0ZTtcbiAgdmFyIGluaXRpYWxTdHlsZXMgPSB7XG4gICAgcG9wcGVyOiB7XG4gICAgICBwb3NpdGlvbjogc3RhdGUub3B0aW9ucy5zdHJhdGVneSxcbiAgICAgIGxlZnQ6ICcwJyxcbiAgICAgIHRvcDogJzAnLFxuICAgICAgbWFyZ2luOiAnMCdcbiAgICB9LFxuICAgIGFycm93OiB7XG4gICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJ1xuICAgIH0sXG4gICAgcmVmZXJlbmNlOiB7fVxuICB9O1xuICBPYmplY3QuYXNzaWduKHN0YXRlLmVsZW1lbnRzLnBvcHBlci5zdHlsZSwgaW5pdGlhbFN0eWxlcy5wb3BwZXIpO1xuICBzdGF0ZS5zdHlsZXMgPSBpbml0aWFsU3R5bGVzO1xuXG4gIGlmIChzdGF0ZS5lbGVtZW50cy5hcnJvdykge1xuICAgIE9iamVjdC5hc3NpZ24oc3RhdGUuZWxlbWVudHMuYXJyb3cuc3R5bGUsIGluaXRpYWxTdHlsZXMuYXJyb3cpO1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICBPYmplY3Qua2V5cyhzdGF0ZS5lbGVtZW50cykuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkge1xuICAgICAgdmFyIGVsZW1lbnQgPSBzdGF0ZS5lbGVtZW50c1tuYW1lXTtcbiAgICAgIHZhciBhdHRyaWJ1dGVzID0gc3RhdGUuYXR0cmlidXRlc1tuYW1lXSB8fCB7fTtcbiAgICAgIHZhciBzdHlsZVByb3BlcnRpZXMgPSBPYmplY3Qua2V5cyhzdGF0ZS5zdHlsZXMuaGFzT3duUHJvcGVydHkobmFtZSkgPyBzdGF0ZS5zdHlsZXNbbmFtZV0gOiBpbml0aWFsU3R5bGVzW25hbWVdKTsgLy8gU2V0IGFsbCB2YWx1ZXMgdG8gYW4gZW1wdHkgc3RyaW5nIHRvIHVuc2V0IHRoZW1cblxuICAgICAgdmFyIHN0eWxlID0gc3R5bGVQcm9wZXJ0aWVzLnJlZHVjZShmdW5jdGlvbiAoc3R5bGUsIHByb3BlcnR5KSB7XG4gICAgICAgIHN0eWxlW3Byb3BlcnR5XSA9ICcnO1xuICAgICAgICByZXR1cm4gc3R5bGU7XG4gICAgICB9LCB7fSk7IC8vIGFycm93IGlzIG9wdGlvbmFsICsgdmlydHVhbCBlbGVtZW50c1xuXG4gICAgICBpZiAoIWlzSFRNTEVsZW1lbnQoZWxlbWVudCkgfHwgIWdldE5vZGVOYW1lKGVsZW1lbnQpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgT2JqZWN0LmFzc2lnbihlbGVtZW50LnN0eWxlLCBzdHlsZSk7XG4gICAgICBPYmplY3Qua2V5cyhhdHRyaWJ1dGVzKS5mb3JFYWNoKGZ1bmN0aW9uIChhdHRyaWJ1dGUpIHtcbiAgICAgICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoYXR0cmlidXRlKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9O1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnYXBwbHlTdHlsZXMnLFxuICBlbmFibGVkOiB0cnVlLFxuICBwaGFzZTogJ3dyaXRlJyxcbiAgZm46IGFwcGx5U3R5bGVzLFxuICBlZmZlY3Q6IGVmZmVjdCxcbiAgcmVxdWlyZXM6IFsnY29tcHV0ZVN0eWxlcyddXG59OyIsImltcG9ydCBnZXRCYXNlUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRCYXNlUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgZ2V0TGF5b3V0UmVjdCBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldExheW91dFJlY3QuanNcIjtcbmltcG9ydCBjb250YWlucyBmcm9tIFwiLi4vZG9tLXV0aWxzL2NvbnRhaW5zLmpzXCI7XG5pbXBvcnQgZ2V0T2Zmc2V0UGFyZW50IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0T2Zmc2V0UGFyZW50LmpzXCI7XG5pbXBvcnQgZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQuanNcIjtcbmltcG9ydCB7IHdpdGhpbiB9IGZyb20gXCIuLi91dGlscy93aXRoaW4uanNcIjtcbmltcG9ydCBtZXJnZVBhZGRpbmdPYmplY3QgZnJvbSBcIi4uL3V0aWxzL21lcmdlUGFkZGluZ09iamVjdC5qc1wiO1xuaW1wb3J0IGV4cGFuZFRvSGFzaE1hcCBmcm9tIFwiLi4vdXRpbHMvZXhwYW5kVG9IYXNoTWFwLmpzXCI7XG5pbXBvcnQgeyBsZWZ0LCByaWdodCwgYmFzZVBsYWNlbWVudHMsIHRvcCwgYm90dG9tIH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5pbXBvcnQgeyBpc0hUTUxFbGVtZW50IH0gZnJvbSBcIi4uL2RvbS11dGlscy9pbnN0YW5jZU9mLmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxudmFyIHRvUGFkZGluZ09iamVjdCA9IGZ1bmN0aW9uIHRvUGFkZGluZ09iamVjdChwYWRkaW5nLCBzdGF0ZSkge1xuICBwYWRkaW5nID0gdHlwZW9mIHBhZGRpbmcgPT09ICdmdW5jdGlvbicgPyBwYWRkaW5nKE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLnJlY3RzLCB7XG4gICAgcGxhY2VtZW50OiBzdGF0ZS5wbGFjZW1lbnRcbiAgfSkpIDogcGFkZGluZztcbiAgcmV0dXJuIG1lcmdlUGFkZGluZ09iamVjdCh0eXBlb2YgcGFkZGluZyAhPT0gJ251bWJlcicgPyBwYWRkaW5nIDogZXhwYW5kVG9IYXNoTWFwKHBhZGRpbmcsIGJhc2VQbGFjZW1lbnRzKSk7XG59O1xuXG5mdW5jdGlvbiBhcnJvdyhfcmVmKSB7XG4gIHZhciBfc3RhdGUkbW9kaWZpZXJzRGF0YSQ7XG5cbiAgdmFyIHN0YXRlID0gX3JlZi5zdGF0ZSxcbiAgICAgIG5hbWUgPSBfcmVmLm5hbWUsXG4gICAgICBvcHRpb25zID0gX3JlZi5vcHRpb25zO1xuICB2YXIgYXJyb3dFbGVtZW50ID0gc3RhdGUuZWxlbWVudHMuYXJyb3c7XG4gIHZhciBwb3BwZXJPZmZzZXRzID0gc3RhdGUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzO1xuICB2YXIgYmFzZVBsYWNlbWVudCA9IGdldEJhc2VQbGFjZW1lbnQoc3RhdGUucGxhY2VtZW50KTtcbiAgdmFyIGF4aXMgPSBnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQoYmFzZVBsYWNlbWVudCk7XG4gIHZhciBpc1ZlcnRpY2FsID0gW2xlZnQsIHJpZ2h0XS5pbmRleE9mKGJhc2VQbGFjZW1lbnQpID49IDA7XG4gIHZhciBsZW4gPSBpc1ZlcnRpY2FsID8gJ2hlaWdodCcgOiAnd2lkdGgnO1xuXG4gIGlmICghYXJyb3dFbGVtZW50IHx8ICFwb3BwZXJPZmZzZXRzKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIHBhZGRpbmdPYmplY3QgPSB0b1BhZGRpbmdPYmplY3Qob3B0aW9ucy5wYWRkaW5nLCBzdGF0ZSk7XG4gIHZhciBhcnJvd1JlY3QgPSBnZXRMYXlvdXRSZWN0KGFycm93RWxlbWVudCk7XG4gIHZhciBtaW5Qcm9wID0gYXhpcyA9PT0gJ3knID8gdG9wIDogbGVmdDtcbiAgdmFyIG1heFByb3AgPSBheGlzID09PSAneScgPyBib3R0b20gOiByaWdodDtcbiAgdmFyIGVuZERpZmYgPSBzdGF0ZS5yZWN0cy5yZWZlcmVuY2VbbGVuXSArIHN0YXRlLnJlY3RzLnJlZmVyZW5jZVtheGlzXSAtIHBvcHBlck9mZnNldHNbYXhpc10gLSBzdGF0ZS5yZWN0cy5wb3BwZXJbbGVuXTtcbiAgdmFyIHN0YXJ0RGlmZiA9IHBvcHBlck9mZnNldHNbYXhpc10gLSBzdGF0ZS5yZWN0cy5yZWZlcmVuY2VbYXhpc107XG4gIHZhciBhcnJvd09mZnNldFBhcmVudCA9IGdldE9mZnNldFBhcmVudChhcnJvd0VsZW1lbnQpO1xuICB2YXIgY2xpZW50U2l6ZSA9IGFycm93T2Zmc2V0UGFyZW50ID8gYXhpcyA9PT0gJ3knID8gYXJyb3dPZmZzZXRQYXJlbnQuY2xpZW50SGVpZ2h0IHx8IDAgOiBhcnJvd09mZnNldFBhcmVudC5jbGllbnRXaWR0aCB8fCAwIDogMDtcbiAgdmFyIGNlbnRlclRvUmVmZXJlbmNlID0gZW5kRGlmZiAvIDIgLSBzdGFydERpZmYgLyAyOyAvLyBNYWtlIHN1cmUgdGhlIGFycm93IGRvZXNuJ3Qgb3ZlcmZsb3cgdGhlIHBvcHBlciBpZiB0aGUgY2VudGVyIHBvaW50IGlzXG4gIC8vIG91dHNpZGUgb2YgdGhlIHBvcHBlciBib3VuZHNcblxuICB2YXIgbWluID0gcGFkZGluZ09iamVjdFttaW5Qcm9wXTtcbiAgdmFyIG1heCA9IGNsaWVudFNpemUgLSBhcnJvd1JlY3RbbGVuXSAtIHBhZGRpbmdPYmplY3RbbWF4UHJvcF07XG4gIHZhciBjZW50ZXIgPSBjbGllbnRTaXplIC8gMiAtIGFycm93UmVjdFtsZW5dIC8gMiArIGNlbnRlclRvUmVmZXJlbmNlO1xuICB2YXIgb2Zmc2V0ID0gd2l0aGluKG1pbiwgY2VudGVyLCBtYXgpOyAvLyBQcmV2ZW50cyBicmVha2luZyBzeW50YXggaGlnaGxpZ2h0aW5nLi4uXG5cbiAgdmFyIGF4aXNQcm9wID0gYXhpcztcbiAgc3RhdGUubW9kaWZpZXJzRGF0YVtuYW1lXSA9IChfc3RhdGUkbW9kaWZpZXJzRGF0YSQgPSB7fSwgX3N0YXRlJG1vZGlmaWVyc0RhdGEkW2F4aXNQcm9wXSA9IG9mZnNldCwgX3N0YXRlJG1vZGlmaWVyc0RhdGEkLmNlbnRlck9mZnNldCA9IG9mZnNldCAtIGNlbnRlciwgX3N0YXRlJG1vZGlmaWVyc0RhdGEkKTtcbn1cblxuZnVuY3Rpb24gZWZmZWN0KF9yZWYyKSB7XG4gIHZhciBzdGF0ZSA9IF9yZWYyLnN0YXRlLFxuICAgICAgb3B0aW9ucyA9IF9yZWYyLm9wdGlvbnM7XG4gIHZhciBfb3B0aW9ucyRlbGVtZW50ID0gb3B0aW9ucy5lbGVtZW50LFxuICAgICAgYXJyb3dFbGVtZW50ID0gX29wdGlvbnMkZWxlbWVudCA9PT0gdm9pZCAwID8gJ1tkYXRhLXBvcHBlci1hcnJvd10nIDogX29wdGlvbnMkZWxlbWVudDtcblxuICBpZiAoYXJyb3dFbGVtZW50ID09IG51bGwpIHtcbiAgICByZXR1cm47XG4gIH0gLy8gQ1NTIHNlbGVjdG9yXG5cblxuICBpZiAodHlwZW9mIGFycm93RWxlbWVudCA9PT0gJ3N0cmluZycpIHtcbiAgICBhcnJvd0VsZW1lbnQgPSBzdGF0ZS5lbGVtZW50cy5wb3BwZXIucXVlcnlTZWxlY3RvcihhcnJvd0VsZW1lbnQpO1xuXG4gICAgaWYgKCFhcnJvd0VsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgaWYgKCFpc0hUTUxFbGVtZW50KGFycm93RWxlbWVudCkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoWydQb3BwZXI6IFwiYXJyb3dcIiBlbGVtZW50IG11c3QgYmUgYW4gSFRNTEVsZW1lbnQgKG5vdCBhbiBTVkdFbGVtZW50KS4nLCAnVG8gdXNlIGFuIFNWRyBhcnJvdywgd3JhcCBpdCBpbiBhbiBIVE1MRWxlbWVudCB0aGF0IHdpbGwgYmUgdXNlZCBhcycsICd0aGUgYXJyb3cuJ10uam9pbignICcpKTtcbiAgICB9XG4gIH1cblxuICBpZiAoIWNvbnRhaW5zKHN0YXRlLmVsZW1lbnRzLnBvcHBlciwgYXJyb3dFbGVtZW50KSkge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoWydQb3BwZXI6IFwiYXJyb3dcIiBtb2RpZmllclxcJ3MgYGVsZW1lbnRgIG11c3QgYmUgYSBjaGlsZCBvZiB0aGUgcG9wcGVyJywgJ2VsZW1lbnQuJ10uam9pbignICcpKTtcbiAgICB9XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBzdGF0ZS5lbGVtZW50cy5hcnJvdyA9IGFycm93RWxlbWVudDtcbn0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ2Fycm93JyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICdtYWluJyxcbiAgZm46IGFycm93LFxuICBlZmZlY3Q6IGVmZmVjdCxcbiAgcmVxdWlyZXM6IFsncG9wcGVyT2Zmc2V0cyddLFxuICByZXF1aXJlc0lmRXhpc3RzOiBbJ3ByZXZlbnRPdmVyZmxvdyddXG59OyIsImltcG9ydCB7IHRvcCwgbGVmdCwgcmlnaHQsIGJvdHRvbSwgZW5kIH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5pbXBvcnQgZ2V0T2Zmc2V0UGFyZW50IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0T2Zmc2V0UGFyZW50LmpzXCI7XG5pbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0V2luZG93LmpzXCI7XG5pbXBvcnQgZ2V0RG9jdW1lbnRFbGVtZW50IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0RG9jdW1lbnRFbGVtZW50LmpzXCI7XG5pbXBvcnQgZ2V0Q29tcHV0ZWRTdHlsZSBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldENvbXB1dGVkU3R5bGUuanNcIjtcbmltcG9ydCBnZXRCYXNlUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRCYXNlUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgZ2V0VmFyaWF0aW9uIGZyb20gXCIuLi91dGlscy9nZXRWYXJpYXRpb24uanNcIjtcbmltcG9ydCB7IHJvdW5kIH0gZnJvbSBcIi4uL3V0aWxzL21hdGguanNcIjsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG52YXIgdW5zZXRTaWRlcyA9IHtcbiAgdG9wOiAnYXV0bycsXG4gIHJpZ2h0OiAnYXV0bycsXG4gIGJvdHRvbTogJ2F1dG8nLFxuICBsZWZ0OiAnYXV0bydcbn07IC8vIFJvdW5kIHRoZSBvZmZzZXRzIHRvIHRoZSBuZWFyZXN0IHN1aXRhYmxlIHN1YnBpeGVsIGJhc2VkIG9uIHRoZSBEUFIuXG4vLyBab29taW5nIGNhbiBjaGFuZ2UgdGhlIERQUiwgYnV0IGl0IHNlZW1zIHRvIHJlcG9ydCBhIHZhbHVlIHRoYXQgd2lsbFxuLy8gY2xlYW5seSBkaXZpZGUgdGhlIHZhbHVlcyBpbnRvIHRoZSBhcHByb3ByaWF0ZSBzdWJwaXhlbHMuXG5cbmZ1bmN0aW9uIHJvdW5kT2Zmc2V0c0J5RFBSKF9yZWYpIHtcbiAgdmFyIHggPSBfcmVmLngsXG4gICAgICB5ID0gX3JlZi55O1xuICB2YXIgd2luID0gd2luZG93O1xuICB2YXIgZHByID0gd2luLmRldmljZVBpeGVsUmF0aW8gfHwgMTtcbiAgcmV0dXJuIHtcbiAgICB4OiByb3VuZCh4ICogZHByKSAvIGRwciB8fCAwLFxuICAgIHk6IHJvdW5kKHkgKiBkcHIpIC8gZHByIHx8IDBcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1hcFRvU3R5bGVzKF9yZWYyKSB7XG4gIHZhciBfT2JqZWN0JGFzc2lnbjI7XG5cbiAgdmFyIHBvcHBlciA9IF9yZWYyLnBvcHBlcixcbiAgICAgIHBvcHBlclJlY3QgPSBfcmVmMi5wb3BwZXJSZWN0LFxuICAgICAgcGxhY2VtZW50ID0gX3JlZjIucGxhY2VtZW50LFxuICAgICAgdmFyaWF0aW9uID0gX3JlZjIudmFyaWF0aW9uLFxuICAgICAgb2Zmc2V0cyA9IF9yZWYyLm9mZnNldHMsXG4gICAgICBwb3NpdGlvbiA9IF9yZWYyLnBvc2l0aW9uLFxuICAgICAgZ3B1QWNjZWxlcmF0aW9uID0gX3JlZjIuZ3B1QWNjZWxlcmF0aW9uLFxuICAgICAgYWRhcHRpdmUgPSBfcmVmMi5hZGFwdGl2ZSxcbiAgICAgIHJvdW5kT2Zmc2V0cyA9IF9yZWYyLnJvdW5kT2Zmc2V0cyxcbiAgICAgIGlzRml4ZWQgPSBfcmVmMi5pc0ZpeGVkO1xuICB2YXIgX29mZnNldHMkeCA9IG9mZnNldHMueCxcbiAgICAgIHggPSBfb2Zmc2V0cyR4ID09PSB2b2lkIDAgPyAwIDogX29mZnNldHMkeCxcbiAgICAgIF9vZmZzZXRzJHkgPSBvZmZzZXRzLnksXG4gICAgICB5ID0gX29mZnNldHMkeSA9PT0gdm9pZCAwID8gMCA6IF9vZmZzZXRzJHk7XG5cbiAgdmFyIF9yZWYzID0gdHlwZW9mIHJvdW5kT2Zmc2V0cyA9PT0gJ2Z1bmN0aW9uJyA/IHJvdW5kT2Zmc2V0cyh7XG4gICAgeDogeCxcbiAgICB5OiB5XG4gIH0pIDoge1xuICAgIHg6IHgsXG4gICAgeTogeVxuICB9O1xuXG4gIHggPSBfcmVmMy54O1xuICB5ID0gX3JlZjMueTtcbiAgdmFyIGhhc1ggPSBvZmZzZXRzLmhhc093blByb3BlcnR5KCd4Jyk7XG4gIHZhciBoYXNZID0gb2Zmc2V0cy5oYXNPd25Qcm9wZXJ0eSgneScpO1xuICB2YXIgc2lkZVggPSBsZWZ0O1xuICB2YXIgc2lkZVkgPSB0b3A7XG4gIHZhciB3aW4gPSB3aW5kb3c7XG5cbiAgaWYgKGFkYXB0aXZlKSB7XG4gICAgdmFyIG9mZnNldFBhcmVudCA9IGdldE9mZnNldFBhcmVudChwb3BwZXIpO1xuICAgIHZhciBoZWlnaHRQcm9wID0gJ2NsaWVudEhlaWdodCc7XG4gICAgdmFyIHdpZHRoUHJvcCA9ICdjbGllbnRXaWR0aCc7XG5cbiAgICBpZiAob2Zmc2V0UGFyZW50ID09PSBnZXRXaW5kb3cocG9wcGVyKSkge1xuICAgICAgb2Zmc2V0UGFyZW50ID0gZ2V0RG9jdW1lbnRFbGVtZW50KHBvcHBlcik7XG5cbiAgICAgIGlmIChnZXRDb21wdXRlZFN0eWxlKG9mZnNldFBhcmVudCkucG9zaXRpb24gIT09ICdzdGF0aWMnICYmIHBvc2l0aW9uID09PSAnYWJzb2x1dGUnKSB7XG4gICAgICAgIGhlaWdodFByb3AgPSAnc2Nyb2xsSGVpZ2h0JztcbiAgICAgICAgd2lkdGhQcm9wID0gJ3Njcm9sbFdpZHRoJztcbiAgICAgIH1cbiAgICB9IC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLWNhc3RdOiBmb3JjZSB0eXBlIHJlZmluZW1lbnQsIHdlIGNvbXBhcmUgb2Zmc2V0UGFyZW50IHdpdGggd2luZG93IGFib3ZlLCBidXQgRmxvdyBkb2Vzbid0IGRldGVjdCBpdFxuXG5cbiAgICBvZmZzZXRQYXJlbnQgPSBvZmZzZXRQYXJlbnQ7XG5cbiAgICBpZiAocGxhY2VtZW50ID09PSB0b3AgfHwgKHBsYWNlbWVudCA9PT0gbGVmdCB8fCBwbGFjZW1lbnQgPT09IHJpZ2h0KSAmJiB2YXJpYXRpb24gPT09IGVuZCkge1xuICAgICAgc2lkZVkgPSBib3R0b207XG4gICAgICB2YXIgb2Zmc2V0WSA9IGlzRml4ZWQgJiYgd2luLnZpc3VhbFZpZXdwb3J0ID8gd2luLnZpc3VhbFZpZXdwb3J0LmhlaWdodCA6IC8vICRGbG93Rml4TWVbcHJvcC1taXNzaW5nXVxuICAgICAgb2Zmc2V0UGFyZW50W2hlaWdodFByb3BdO1xuICAgICAgeSAtPSBvZmZzZXRZIC0gcG9wcGVyUmVjdC5oZWlnaHQ7XG4gICAgICB5ICo9IGdwdUFjY2VsZXJhdGlvbiA/IDEgOiAtMTtcbiAgICB9XG5cbiAgICBpZiAocGxhY2VtZW50ID09PSBsZWZ0IHx8IChwbGFjZW1lbnQgPT09IHRvcCB8fCBwbGFjZW1lbnQgPT09IGJvdHRvbSkgJiYgdmFyaWF0aW9uID09PSBlbmQpIHtcbiAgICAgIHNpZGVYID0gcmlnaHQ7XG4gICAgICB2YXIgb2Zmc2V0WCA9IGlzRml4ZWQgJiYgd2luLnZpc3VhbFZpZXdwb3J0ID8gd2luLnZpc3VhbFZpZXdwb3J0LndpZHRoIDogLy8gJEZsb3dGaXhNZVtwcm9wLW1pc3NpbmddXG4gICAgICBvZmZzZXRQYXJlbnRbd2lkdGhQcm9wXTtcbiAgICAgIHggLT0gb2Zmc2V0WCAtIHBvcHBlclJlY3Qud2lkdGg7XG4gICAgICB4ICo9IGdwdUFjY2VsZXJhdGlvbiA/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/IHN0YXRlLnBsYWNlbWVudCA6IF9vcHRpb25zJHBsYWNlbWVudCxcbiAgICAgIF9vcHRpb25zJGJvdW5kYXJ5ID0gX29wdGlvbnMuYm91bmRhcnksXG4gICAgICBib3VuZGFyeSA9IF9vcHRpb25zJGJvdW5kYXJ5ID09PSB2b2lkIDAgPyBjbGlwcGluZ1BhcmVudHMgOiBfb3B0aW9ucyRib3VuZGFyeSxcbiAgICAgIF9vcHRpb25zJHJvb3RCb3VuZGFyeSA9IF9vcHRpb25zLnJvb3RCb3VuZGFyeSxcbiAgICAgIHJvb3RCb3VuZGFyeSA9IF9vcHRpb25zJHJvb3RCb3VuZGFyeSA9PT0gdm9pZCAwID8gdmlld3BvcnQgOiBfb3B0aW9ucyRyb290Qm91bmRhcnksXG4gICAgICBfb3B0aW9ucyRlbGVtZW50Q29udGUgPSBfb3B0aW9ucy5lbGVtZW50Q29udGV4dCxcbiAgICAgIGVsZW1lbnRDb250ZXh0ID0gX29wdGlvbnMkZWxlbWVudENvbnRlID09PSB2b2lkIDAgPyBwb3BwZXIgOiBfb3B0aW9ucyRlbGVtZW50Q29udGUsXG4gICAgICBfb3B0aW9ucyRhbHRCb3VuZGFyeSA9IF9vcHRpb25zLmFsdEJvdW5kYXJ5LFxuICAgICAgYWx0Qm91bmRhcnkgPSBfb3B0aW9ucyRhbHRCb3VuZGFyeSA9PT0gdm9pZCAwID8gZmFsc2UgOiBfb3B0aW9ucyRhbHRCb3VuZGFyeSxcbiAgICAgIF9vcHRpb25zJHBhZGRpbmcgPSBfb3B0aW9ucy5wYWRkaW5nLFxuICAgICAgcGFkZGluZyA9IF9vcHRpb25zJHBhZGRpbmcgPT09IHZvaWQgMCA/IDAgOiBfb3B0aW9ucyRwYWRkaW5nO1xuICB2YXIgcGFkZGluZ09iamVjdCA9IG1lcmdlUGFkZGluZ09iamVjdCh0eXBlb2YgcGFkZGluZyAhPT0gJ251bWJlcicgPyBwYWRkaW5nIDogZXhwYW5kVG9IYXNoTWFwKHBhZGRpbmcsIGJhc2VQbGFjZW1lbnRzKSk7XG4gIHZhciBhbHRDb250ZXh0ID0gZWxlbWVudENvbnRleHQgPT09IHBvcHBlciA/IHJlZmVyZW5jZSA6IHBvcHBlcjtcbiAgdmFyIHBvcHBlclJlY3QgPSBzdGF0ZS5yZWN0cy5wb3BwZXI7XG4gIHZhciBlbGVtZW50ID0gc3RhdGUuZWxlbWVudHNbYWx0Qm91bmRhcnkgPyBhbHRDb250ZXh0IDogZWxlbWVudENvbnRleHRdO1xuICB2YXIgY2xpcHBpbmdDbGllbnRSZWN0ID0gZ2V0Q2xpcHBpbmdSZWN0KGlzRWxlbWVudChlbGVtZW50KSA/IGVsZW1lbnQgOiBlbGVtZW50LmNvbnRleHRFbGVtZW50IHx8IGdldERvY3VtZW50RWxlbWVudChzdGF0ZS5lbGVtZW50cy5wb3BwZXIpLCBib3VuZGFyeSwgcm9vdEJvdW5kYXJ5KTtcbiAgdmFyIHJlZmVyZW5jZUNsaWVudFJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3Qoc3RhdGUuZWxlbWVudHMucmVmZXJlbmNlKTtcbiAgdmFyIHBvcHBlck9mZnNldHMgPSBjb21wdXRlT2Zmc2V0cyh7XG4gICAgcmVmZXJlbmNlOiByZWZlcmVuY2VDbGllbnRSZWN0LFxuICAgIGVsZW1lbnQ6IHBvcHBlclJlY3QsXG4gICAgc3RyYXRlZ3k6ICdhYnNvbHV0ZScsXG4gICAgcGxhY2VtZW50OiBwbGFjZW1lbnRcbiAgfSk7XG4gIHZhciBwb3BwZXJDbGllbnRSZWN0ID0gcmVjdFRvQ2xpZW50UmVjdChPYmplY3QuYXNzaWduKHt9LCBwb3BwZXJSZWN0LCBwb3BwZXJPZmZzZXRzKSk7XG4gIHZhciBlbGVtZW50Q2xpZW50UmVjdCA9IGVsZW1lbnRDb250ZXh0ID09PSBwb3BwZXIgPyBwb3BwZXJDbGllbnRSZWN0IDogcmVmZXJlbmNlQ2xpZW50UmVjdDsgLy8gcG9zaXRpdmUgPSBvdmVyZmxvd2luZyB0aGUgY2xpcHBpbmcgcmVjdFxuICAvLyAwIG9yIG5lZ2F0aXZlID0gd2l0aGluIHRoZSBjbGlwcGluZyByZWN0XG5cbiAgdmFyIG92ZXJmbG93T2Zmc2V0cyA9IHtcbiAgICB0b3A6IGNsaXBwaW5nQ2xpZW50UmVjdC50b3AgLSBlbGVtZW50Q2xpZW50UmVjdC50b3AgKyBwYWRkaW5nT2JqZWN0LnRvcCxcbiAgICBib3R0b206IGVsZW1lbnRDbGllbnRSZWN0LmJvdHRvbSAtIGNsaXBwaW5nQ2xpZW50UmVjdC5ib3R0b20gKyBwYWRkaW5nT2JqZWN0LmJvdHRvbSxcbiAgICBsZWZ0OiBjbGlwcGluZ0NsaWVudFJlY3QubGVmdCAtIGVsZW1lbnRDbGllbnRSZWN0LmxlZnQgKyBwYWRkaW5nT2JqZWN0LmxlZnQsXG4gICAgcmlnaHQ6IGVsZW1lbnRDbGllbnRSZWN0LnJpZ2h0IC0gY2xpcHBpbmdDbGllbnRSZWN0LnJpZ2h0ICsgcGFkZGluZ09iamVjdC5yaWdodFxuICB9O1xuICB2YXIgb2Zmc2V0RGF0YSA9IHN0YXRlLm1vZGlmaWVyc0RhdGEub2Zmc2V0OyAvLyBPZmZzZXRzIGNhbiBiZSBhcHBsaWVkIG9ubHkgdG8gdGhlIHBvcHBlciBlbGVtZW50XG5cbiAgaWYgKGVsZW1lbnRDb250ZXh0ID09PSBwb3BwZXIgJiYgb2Zmc2V0RGF0YSkge1xuICAgIHZhciBvZmZzZXQgPSBvZmZzZXREYXRhW3BsYWNlbWVudF07XG4gICAgT2JqZWN0LmtleXMob3ZlcmZsb3dPZmZzZXRzKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIHZhciBtdWx0aXBseSA9IFtyaWdodCwgYm90dG9tXS5pbmRleE9mKGtleSkgPj0gMCA/IDEgOiAtMTtcbiAgICAgIHZhciBheGlzID0gW3RvcCwgYm90dG9tXS5pbmRleE9mKGtleSkgPj0gMCA/ICd5JyA6ICd4JztcbiAgICAgIG92ZXJmbG93T2Zmc2V0c1trZXldICs9IG9mZnNldFtheGlzXSAqIG11bHRpcGx5O1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIG92ZXJmbG93T2Zmc2V0cztcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBleHBhbmRUb0hhc2hNYXAodmFsdWUsIGtleXMpIHtcbiAgcmV0dXJuIGtleXMucmVkdWNlKGZ1bmN0aW9uIChoYXNoTWFwLCBrZXkpIHtcbiAgICBoYXNoTWFwW2tleV0gPSB2YWx1ZTtcbiAgICByZXR1cm4gaGFzaE1hcDtcbiAgfSwge30pO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGZvcm1hdChzdHIpIHtcbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiA+IDEgPyBfbGVuIC0gMSA6IDApLCBfa2V5ID0gMTsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgIGFyZ3NbX2tleSAtIDFdID0gYXJndW1lbnRzW19rZXldO1xuICB9XG5cbiAgcmV0dXJuIFtdLmNvbmNhdChhcmdzKS5yZWR1Y2UoZnVuY3Rpb24gKHAsIGMpIHtcbiAgICByZXR1cm4gcC5yZXBsYWNlKC8lcy8sIGMpO1xuICB9LCBzdHIpO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldEFsdEF4aXMoYXhpcykge1xuICByZXR1cm4gYXhpcyA9PT0gJ3gnID8gJ3knIDogJ3gnO1xufSIsImltcG9ydCB7IGF1dG8gfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldEJhc2VQbGFjZW1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQuc3BsaXQoJy0nKVswXTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRGcmVzaFNpZGVPYmplY3QoKSB7XG4gIHJldHVybiB7XG4gICAgdG9wOiAwLFxuICAgIHJpZ2h0OiAwLFxuICAgIGJvdHRvbTogMCxcbiAgICBsZWZ0OiAwXG4gIH07XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50KHBsYWNlbWVudCkge1xuICByZXR1cm4gWyd0b3AnLCAnYm90dG9tJ10uaW5kZXhPZihwbGFjZW1lbnQpID49IDAgPyAneCcgOiAneSc7XG59IiwidmFyIGhhc2ggPSB7XG4gIGxlZnQ6ICdyaWdodCcsXG4gIHJpZ2h0OiAnbGVmdCcsXG4gIGJvdHRvbTogJ3RvcCcsXG4gIHRvcDogJ2JvdHRvbSdcbn07XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRPcHBvc2l0ZVBsYWNlbWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5yZXBsYWNlKC9sZWZ0fHJpZ2h0fGJvdHRvbXx0b3AvZywgZnVuY3Rpb24gKG1hdGNoZWQpIHtcbiAgICByZXR1cm4gaGFzaFttYXRjaGVkXTtcbiAgfSk7XG59IiwidmFyIGhhc2ggPSB7XG4gIHN0YXJ0OiAnZW5kJyxcbiAgZW5kOiAnc3RhcnQnXG59O1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0T3Bwb3NpdGVWYXJpYXRpb25QbGFjZW1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQucmVwbGFjZSgvc3RhcnR8ZW5kL2csIGZ1bmN0aW9uIChtYXRjaGVkKSB7XG4gICAgcmV0dXJuIGhhc2hbbWF0Y2hlZF07XG4gIH0pO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFZhcmlhdGlvbihwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5zcGxpdCgnLScpWzFdO1xufSIsImV4cG9ydCB2YXIgbWF4ID0gTWF0aC5tYXg7XG5leHBvcnQgdmFyIG1pbiA9IE1hdGgubWluO1xuZXhwb3J0IHZhciByb3VuZCA9IE1hdGgucm91bmQ7IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbWVyZ2VCeU5hbWUobW9kaWZpZXJzKSB7XG4gIHZhciBtZXJnZWQgPSBtb2RpZmllcnMucmVkdWNlKGZ1bmN0aW9uIChtZXJnZWQsIGN1cnJlbnQpIHtcbiAgICB2YXIgZXhpc3RpbmcgPSBtZXJnZWRbY3VycmVudC5uYW1lXTtcbiAgICBtZXJnZWRbY3VycmVudC5uYW1lXSA9IGV4aXN0aW5nID8gT2JqZWN0LmFzc2lnbih7fSwgZXhpc3RpbmcsIGN1cnJlbnQsIHtcbiAgICAgIG9wdGlvbnM6IE9iamVjdC5hc3NpZ24oe30sIGV4aXN0aW5nLm9wdGlvbnMsIGN1cnJlbnQub3B0aW9ucyksXG4gICAgICBkYXRhOiBPYmplY3QuYXNzaWduKHt9LCBleGlzdGluZy5kYXRhLCBjdXJyZW50LmRhdGEpXG4gICAgfSkgOiBjdXJyZW50O1xuICAgIHJldHVybiBtZXJnZWQ7XG4gIH0sIHt9KTsgLy8gSUUxMSBkb2VzIG5vdCBzdXBwb3J0IE9iamVjdC52YWx1ZXNcblxuICByZXR1cm4gT2JqZWN0LmtleXMobWVyZ2VkKS5tYXAoZnVuY3Rpb24gKGtleSkge1xuICAgIHJldHVybiBtZXJnZWRba2V5XTtcbiAgfSk7XG59IiwiaW1wb3J0IGdldEZyZXNoU2lkZU9iamVjdCBmcm9tIFwiLi9nZXRGcmVzaFNpZGVPYmplY3QuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1lcmdlUGFkZGluZ09iamVjdChwYWRkaW5nT2JqZWN0KSB7XG4gIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBnZXRGcmVzaFNpZGVPYmplY3QoKSwgcGFkZGluZ09iamVjdCk7XG59IiwiaW1wb3J0IHsgbW9kaWZpZXJQaGFzZXMgfSBmcm9tIFwiLi4vZW51bXMuanNcIjsgLy8gc291cmNlOiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy80OTg3NTI1NVxuXG5mdW5jdGlvbiBvcmRlcihtb2RpZmllcnMpIHtcbiAgdmFyIG1hcCA9IG5ldyBNYXAoKTtcbiAgdmFyIHZpc2l0ZWQgPSBuZXcgU2V0KCk7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgbW9kaWZpZXJzLmZvckVhY2goZnVuY3Rpb24gKG1vZGlmaWVyKSB7XG4gICAgbWFwLnNldChtb2RpZmllci5uYW1lLCBtb2RpZmllcik7XG4gIH0pOyAvLyBPbiB2aXNpdGluZyBvYmplY3QsIGNoZWNrIGZvciBpdHMgZGVwZW5kZW5jaWVzIGFuZCB2aXNpdCB0aGVtIHJlY3Vyc2l2ZWx5XG5cbiAgZnVuY3Rpb24gc29ydChtb2RpZmllcikge1xuICAgIHZpc2l0ZWQuYWRkKG1vZGlmaWVyLm5hbWUpO1xuICAgIHZhciByZXF1aXJlcyA9IFtdLmNvbmNhdChtb2RpZmllci5yZXF1aXJlcyB8fCBbXSwgbW9kaWZpZXIucmVxdWlyZXNJZkV4aXN0cyB8fCBbXSk7XG4gICAgcmVxdWlyZXMuZm9yRWFjaChmdW5jdGlvbiAoZGVwKSB7XG4gICAgICBpZiAoIXZpc2l0ZWQuaGFzKGRlcCkpIHtcbiAgICAgICAgdmFyIGRlcE1vZGlmaWVyID0gbWFwLmdldChkZXApO1xuXG4gICAgICAgIGlmIChkZXBNb2RpZmllcikge1xuICAgICAgICAgIHNvcnQoZGVwTW9kaWZpZXIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmVzdWx0LnB1c2gobW9kaWZpZXIpO1xuICB9XG5cbiAgbW9kaWZpZXJzLmZvckVhY2goZnVuY3Rpb24gKG1vZGlmaWVyKSB7XG4gICAgaWYgKCF2aXNpdGVkLmhhcyhtb2RpZmllci5uYW1lKSkge1xuICAgICAgLy8gY2hlY2sgZm9yIHZpc2l0ZWQgb2JqZWN0XG4gICAgICBzb3J0KG1vZGlmaWVyKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBvcmRlck1vZGlmaWVycyhtb2RpZmllcnMpIHtcbiAgLy8gb3JkZXIgYmFzZWQgb24gZGVwZW5kZW5jaWVzXG4gIHZhciBvcmRlcmVkTW9kaWZpZXJzID0gb3JkZXIobW9kaWZpZXJzKTsgLy8gb3JkZXIgYmFzZWQgb24gcGhhc2VcblxuICByZXR1cm4gbW9kaWZpZXJQaGFzZXMucmVkdWNlKGZ1bmN0aW9uIChhY2MsIHBoYXNlKSB7XG4gICAgcmV0dXJuIGFjYy5jb25jYXQob3JkZXJlZE1vZGlmaWVycy5maWx0ZXIoZnVuY3Rpb24gKG1vZGlmaWVyKSB7XG4gICAgICByZXR1cm4gbW9kaWZpZXIucGhhc2UgPT09IHBoYXNlO1xuICAgIH0pKTtcbiAgfSwgW10pO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHJlY3RUb0NsaWVudFJlY3QocmVjdCkge1xuICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgcmVjdCwge1xuICAgIGxlZnQ6IHJlY3QueCxcbiAgICB0b3A6IHJlY3QueSxcbiAgICByaWdodDogcmVjdC54ICsgcmVjdC53aWR0aCxcbiAgICBib3R0b206IHJlY3QueSArIHJlY3QuaGVpZ2h0XG4gIH0pO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVuaXF1ZUJ5KGFyciwgZm4pIHtcbiAgdmFyIGlkZW50aWZpZXJzID0gbmV3IFNldCgpO1xuICByZXR1cm4gYXJyLmZpbHRlcihmdW5jdGlvbiAoaXRlbSkge1xuICAgIHZhciBpZGVudGlmaWVyID0gZm4oaXRlbSk7XG5cbiAgICBpZiAoIWlkZW50aWZpZXJzLmhhcyhpZGVudGlmaWVyKSkge1xuICAgICAgaWRlbnRpZmllcnMuYWRkKGlkZW50aWZpZXIpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9KTtcbn0iLCJpbXBvcnQgZm9ybWF0IGZyb20gXCIuL2Zvcm1hdC5qc1wiO1xuaW1wb3J0IHsgbW9kaWZpZXJQaGFzZXMgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbnZhciBJTlZBTElEX01PRElGSUVSX0VSUk9SID0gJ1BvcHBlcjogbW9kaWZpZXIgXCIlc1wiIHByb3ZpZGVkIGFuIGludmFsaWQgJXMgcHJvcGVydHksIGV4cGVjdGVkICVzIGJ1dCBnb3QgJXMnO1xudmFyIE1JU1NJTkdfREVQRU5ERU5DWV9FUlJPUiA9ICdQb3BwZXI6IG1vZGlmaWVyIFwiJXNcIiByZXF1aXJlcyBcIiVzXCIsIGJ1dCBcIiVzXCIgbW9kaWZpZXIgaXMgbm90IGF2YWlsYWJsZSc7XG52YXIgVkFMSURfUFJPUEVSVElFUyA9IFsnbmFtZScsICdlbmFibGVkJywgJ3BoYXNlJywgJ2ZuJywgJ2VmZmVjdCcsICdyZXF1aXJlcycsICdvcHRpb25zJ107XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB2YWxpZGF0ZU1vZGlmaWVycyhtb2RpZmllcnMpIHtcbiAgbW9kaWZpZXJzLmZvckVhY2goZnVuY3Rpb24gKG1vZGlmaWVyKSB7XG4gICAgW10uY29uY2F0KE9iamVjdC5rZXlzKG1vZGlmaWVyKSwgVkFMSURfUFJPUEVSVElFUykgLy8gSUUxMS1jb21wYXRpYmxlIHJlcGxhY2VtZW50IGZvciBgbmV3IFNldChpdGVyYWJsZSlgXG4gICAgLmZpbHRlcihmdW5jdGlvbiAodmFsdWUsIGluZGV4LCBzZWxmKSB7XG4gICAgICByZXR1cm4gc2VsZi5pbmRleE9mKHZhbHVlKSA9PT0gaW5kZXg7XG4gICAgfSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgICBjYXNlICduYW1lJzpcbiAgICAgICAgICBpZiAodHlwZW9mIG1vZGlmaWVyLm5hbWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGZvcm1hdChJTlZBTElEX01PRElGSUVSX0VSUk9SLCBTdHJpbmcobW9kaWZpZXIubmFtZSksICdcIm5hbWVcIicsICdcInN0cmluZ1wiJywgXCJcXFwiXCIgKyBTdHJpbmcobW9kaWZpZXIubmFtZSkgKyBcIlxcXCJcIikpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2VuYWJsZWQnOlxuICAgICAgICAgIGlmICh0eXBlb2YgbW9kaWZpZXIuZW5hYmxlZCAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGZvcm1hdChJTlZBTElEX01PRElGSUVSX0VSUk9SLCBtb2RpZmllci5uYW1lLCAnXCJlbmFibGVkXCInLCAnXCJib29sZWFuXCInLCBcIlxcXCJcIiArIFN0cmluZyhtb2RpZmllci5lbmFibGVkKSArIFwiXFxcIlwiKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAncGhhc2UnOlxuICAgICAgICAgIGlmIChtb2RpZmllclBoYXNlcy5pbmRleE9mKG1vZGlmaWVyLnBoYXNlKSA8IDApIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZm9ybWF0KElOVkFMSURfTU9ESUZJRVJfRVJST1IsIG1vZGlmaWVyLm5hbWUsICdcInBoYXNlXCInLCBcImVpdGhlciBcIiArIG1vZGlmaWVyUGhhc2VzLmpvaW4oJywgJyksIFwiXFxcIlwiICsgU3RyaW5nKG1vZGlmaWVyLnBoYXNlKSArIFwiXFxcIlwiKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnZm4nOlxuICAgICAgICAgIGlmICh0eXBlb2YgbW9kaWZpZXIuZm4gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZm9ybWF0KElOVkFMSURfTU9ESUZJRVJfRVJST1IsIG1vZGlmaWVyLm5hbWUsICdcImZuXCInLCAnXCJmdW5jdGlvblwiJywgXCJcXFwiXCIgKyBTdHJpbmcobW9kaWZpZXIuZm4pICsgXCJcXFwiXCIpKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdlZmZlY3QnOlxuICAgICAgICAgIGlmIChtb2RpZmllci5lZmZlY3QgIT0gbnVsbCAmJiB0eXBlb2YgbW9kaWZpZXIuZWZmZWN0ICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGZvcm1hdChJTlZBTElEX01PRElGSUVSX0VSUk9SLCBtb2RpZmllci5uYW1lLCAnXCJlZmZlY3RcIicsICdcImZ1bmN0aW9uXCInLCBcIlxcXCJcIiArIFN0cmluZyhtb2RpZmllci5mbikgKyBcIlxcXCJcIikpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ3JlcXVpcmVzJzpcbiAgICAgICAgICBpZiAobW9kaWZpZXIucmVxdWlyZXMgIT0gbnVsbCAmJiAhQXJyYXkuaXNBcnJheShtb2RpZmllci5yZXF1aXJlcykpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZm9ybWF0KElOVkFMSURfTU9ESUZJRVJfRVJST1IsIG1vZGlmaWVyLm5hbWUsICdcInJlcXVpcmVzXCInLCAnXCJhcnJheVwiJywgXCJcXFwiXCIgKyBTdHJpbmcobW9kaWZpZXIucmVxdWlyZXMpICsgXCJcXFwiXCIpKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdyZXF1aXJlc0lmRXhpc3RzJzpcbiAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkobW9kaWZpZXIucmVxdWlyZXNJZkV4aXN0cykpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZm9ybWF0KElOVkFMSURfTU9ESUZJRVJfRVJST1IsIG1vZGlmaWVyLm5hbWUsICdcInJlcXVpcmVzSWZFeGlzdHNcIicsICdcImFycmF5XCInLCBcIlxcXCJcIiArIFN0cmluZyhtb2RpZmllci5yZXF1aXJlc0lmRXhpc3RzKSArIFwiXFxcIlwiKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnb3B0aW9ucyc6XG4gICAgICAgIGNhc2UgJ2RhdGEnOlxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgY29uc29sZS5lcnJvcihcIlBvcHBlckpTOiBhbiBpbnZhbGlkIHByb3BlcnR5IGhhcyBiZWVuIHByb3ZpZGVkIHRvIHRoZSBcXFwiXCIgKyBtb2RpZmllci5uYW1lICsgXCJcXFwiIG1vZGlmaWVyLCB2YWxpZCBwcm9wZXJ0aWVzIGFyZSBcIiArIFZBTElEX1BST1BFUlRJRVMubWFwKGZ1bmN0aW9uIChzKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJcXFwiXCIgKyBzICsgXCJcXFwiXCI7XG4gICAgICAgICAgfSkuam9pbignLCAnKSArIFwiOyBidXQgXFxcIlwiICsga2V5ICsgXCJcXFwiIHdhcyBwcm92aWRlZC5cIik7XG4gICAgICB9XG5cbiAgICAgIG1vZGlmaWVyLnJlcXVpcmVzICYmIG1vZGlmaWVyLnJlcXVpcmVzLmZvckVhY2goZnVuY3Rpb24gKHJlcXVpcmVtZW50KSB7XG4gICAgICAgIGlmIChtb2RpZmllcnMuZmluZChmdW5jdGlvbiAobW9kKSB7XG4gICAgICAgICAgcmV0dXJuIG1vZC5uYW1lID09PSByZXF1aXJlbWVudDtcbiAgICAgICAgfSkgPT0gbnVsbCkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZm9ybWF0KE1JU1NJTkdfREVQRU5ERU5DWV9FUlJPUiwgU3RyaW5nKG1vZGlmaWVyLm5hbWUpLCByZXF1aXJlbWVudCwgcmVxdWlyZW1lbnQpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufSIsImltcG9ydCB7IG1heCBhcyBtYXRoTWF4LCBtaW4gYXMgbWF0aE1pbiB9IGZyb20gXCIuL21hdGguanNcIjtcbmV4cG9ydCBmdW5jdGlvbiB3aXRoaW4obWluLCB2YWx1ZSwgbWF4KSB7XG4gIHJldHVybiBtYXRoTWF4KG1pbiwgbWF0aE1pbih2YWx1ZSwgbWF4KSk7XG59XG5leHBvcnQgZnVuY3Rpb24gd2l0aGluTWF4Q2xhbXAobWluLCB2YWx1ZSwgbWF4KSB7XG4gIHZhciB2ID0gd2l0aGluKG1pbiwgdmFsdWUsIG1heCk7XG4gIHJldHVybiB2ID4gbWF4ID8gbWF4IDogdjtcbn0iLCJcInVzZSBzdHJpY3RcIjtcblxuLypcbiAgTUlUIExpY2Vuc2UgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5waHBcbiAgQXV0aG9yIFRvYmlhcyBLb3BwZXJzIEBzb2tyYVxuKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGNzc1dpdGhNYXBwaW5nVG9TdHJpbmcpIHtcbiAgdmFyIGxpc3QgPSBbXTsgLy8gcmV0dXJuIHRoZSBsaXN0IG9mIG1vZHVsZXMgYXMgY3NzIHN0cmluZ1xuXG4gIGxpc3QudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgIHZhciBjb250ZW50ID0gXCJcIjtcbiAgICAgIHZhciBuZWVkTGF5ZXIgPSB0eXBlb2YgaXRlbVs1XSAhPT0gXCJ1bmRlZmluZWRcIjtcblxuICAgICAgaWYgKGl0ZW1bNF0pIHtcbiAgICAgICAgY29udGVudCArPSBcIkBzdXBwb3J0cyAoXCIuY29uY2F0KGl0ZW1bNF0sIFwiKSB7XCIpO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXRlbVsyXSkge1xuICAgICAgICBjb250ZW50ICs9IFwiQG1lZGlhIFwiLmNvbmNhdChpdGVtWzJdLCBcIiB7XCIpO1xuICAgICAgfVxuXG4gICAgICBpZiAobmVlZExheWVyKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJAbGF5ZXJcIi5jb25jYXQoaXRlbVs1XS5sZW5ndGggPiAwID8gXCIgXCIuY29uY2F0KGl0ZW1bNV0pIDogXCJcIiwgXCIge1wiKTtcbiAgICAgIH1cblxuICAgICAgY29udGVudCArPSBjc3NXaXRoTWFwcGluZ1RvU3RyaW5nKGl0ZW0pO1xuXG4gICAgICBpZiAobmVlZExheWVyKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJ9XCI7XG4gICAgICB9XG5cbiAgICAgIGlmIChpdGVtWzJdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJ9XCI7XG4gICAgICB9XG5cbiAgICAgIGlmIChpdGVtWzRdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJ9XCI7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb250ZW50O1xuICAgIH0pLmpvaW4oXCJcIik7XG4gIH07IC8vIGltcG9ydCBhIGxpc3Qgb2YgbW9kdWxlcyBpbnRvIHRoZSBsaXN0XG5cblxuICBsaXN0LmkgPSBmdW5jdGlvbiBpKG1vZHVsZXMsIG1lZGlhLCBkZWR1cGUsIHN1cHBvcnRzLCBsYXllcikge1xuICAgIGlmICh0eXBlb2YgbW9kdWxlcyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgbW9kdWxlcyA9IFtbbnVsbCwgbW9kdWxlcywgdW5kZWZpbmVkXV07XG4gICAgfVxuXG4gICAgdmFyIGFscmVhZHlJbXBvcnRlZE1vZHVsZXMgPSB7fTtcblxuICAgIGlmIChkZWR1cGUpIHtcbiAgICAgIGZvciAodmFyIGsgPSAwOyBrIDwgdGhpcy5sZW5ndGg7IGsrKykge1xuICAgICAgICB2YXIgaWQgPSB0aGlzW2tdWzBdO1xuXG4gICAgICAgIGlmIChpZCAhPSBudWxsKSB7XG4gICAgICAgICAgYWxyZWFkeUltcG9ydGVkTW9kdWxlc1tpZF0gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yICh2YXIgX2sgPSAwOyBfayA8IG1vZHVsZXMubGVuZ3RoOyBfaysrKSB7XG4gICAgICB2YXIgaXRlbSA9IFtdLmNvbmNhdChtb2R1bGVzW19rXSk7XG5cbiAgICAgIGlmIChkZWR1cGUgJiYgYWxyZWFkeUltcG9ydGVkTW9kdWxlc1tpdGVtWzBdXSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBsYXllciAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICBpZiAodHlwZW9mIGl0ZW1bNV0gPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICBpdGVtWzVdID0gbGF5ZXI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbVsxXSA9IFwiQGxheWVyXCIuY29uY2F0KGl0ZW1bNV0ubGVuZ3RoID4gMCA/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+IHtcbiAgY29uc3QgbGlzdCA9IFtdO1xuICBmb3IgKGxldCBpID0gYTsgaSA8PSBiOyBpICs9IDEpIHtcbiAgICBsaXN0LnB1c2goaSk7XG4gIH1cbiAgcmV0dXJuIGxpc3Q7XG59O1xuXG5jb25zdCBwYXJzZUlTT1N0cmluZyA9IChzdHIgLyogeXl5eS1tbS1kZCAqLykgPT4ge1xuICBjb25zdCBhcnJTdHIgPSBzdHIuc3BsaXQoJy0nKS5tYXAocGFyc2VGbG9hdCk7XG4gIHJldHVybiB7XG4gICAgeWVhcjogYXJyU3RyWzBdLFxuICAgIG1vbnRoOiBhcnJTdHJbMV0gLSAxLFxuICAgIGRhdGU6IGFyclN0clsyXVxuICB9O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2FsZW5kYXJUcmVlIHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IHZhbGlkYXRlQ2VsbFxuICAgKiBAcGFyYW0ge09iamVjdH0gdHJlZVxuICAgKi9cbiAgY29uc3RydWN0b3IodmFsaWRhdGVDZWxsLCB0cmVlKSB7XG4gICAgdGhpcy52YWxpZGF0ZUNlbGwgPSB2YWxpZGF0ZUNlbGw7XG4gICAgdGhpcy50cmVlICAgICAgICAgPSB0cmVlO1xuICB9XG5cbiAgYWRkVHJlZShvYmopIHtcbiAgICBpZiAoIXRoaXMudHJlZSkge1xuICAgICAgdGhpcy50cmVlID0gb2JqO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRyZWUgPSBtZXJnZSh0aGlzLnRyZWUgfHwge30sIG9iaiwgdHJ1ZSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIHNlbGVjdCByYW5nZSBmcm9tIHRoZSB0cmVlLCByZXR1cm5zIGFycmF5IGl0ZW1zXG4gICAqIHN0YXJ0IGRhdGUgaXMgQUxXQVlTIDwgdGhlbiBlbmQgZGF0ZSAsIGFzIHdlIGFyZSBzZWxlY3RpbmcgdGltZSByYW5nZSBpbiBkYXlzLlxuICAgKlxuICAgKiBAcGFyYW0ge0FycmF5fSBzdGFydCBlLmcuIFsyMDE2LCAwLCAxXVxuICAgKiBAcGFyYW0ge0FycmF5fSBlbmQgICAgICAgIFsyMDE2LCAxLCAzXVxuICAgKiBAcmV0dXJucyB7e3JhbmdlOiBBcnJheSwgaXNWYWxpZDoge0Jvb2xlYW59fX1cbiAgICovXG4gIHNlbGVjdFJhbmdlKHN0YXJ0LCBlbmQpIHtcbiAgICBsZXQgcmFuZ2UgPSBbXTtcblxuICAgIGNvbnN0IGEgPSBzdGFydC5zbGljZSgpO1xuXG4gICAgLy8gaWYgeWVhciBhbmQgbW9udGggdGhlIHNhbWUsIGp1c3Qgc2xpY2UgdGhlIGN1cnJlbnQgbW9udGhcbiAgICBpZiAoYVswXSA9PT0gZW5kWzBdICYmIGFbMV0gPT09IGVuZFsxXSkge1xuICAgICAgcmFuZ2UgPSB0aGlzLnNlbGVjdERheXNJbk1vbnRoKGFbMF0sIGFbMV0sIGFbMl0sIGVuZFsyXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG1vbnRoRGF5cyA9IHRoaXMudHJlZVthWzBdXVthWzFdXTtcblxuICAgICAgLy8gc2xpY2UgdGhlIHBpZWNlIG9mIGN1cnJlbnQgbW9udGhEYXlzIGZyb20gc3RhcnQgb2YgcmFuZ2UgdGlsbCBlbmQgb2YgdGhlIG1vbnRoRGF5c1xuICAgICAgcmFuZ2UgPSByYW5nZS5jb25jYXQodGhpcy5zZWxlY3REYXlzSW5Nb250aChhWzBdLCBhWzFdLCBhWzJdLCBtb250aERheXMubGVuZ3RoKSk7XG5cbiAgICAgIC8vIHNoaWZ0IHN0YXJ0IG1vbnRoLCBiL2Mgd2UgYWxyZWFkeSBzZWxlY3RlZCBkYXlzIGluIGl0XG4gICAgICBhWzFdICs9IDE7XG5cbiAgICAgIC8vIGlmIGVuZCBkYXRlIHllYXIgPiBzdGFydCBkYXRlXG4gICAgICAvLyBzZWxlY3QgZXZlcnl0aGluZyBpbiBzdGFydCB5ZWFyIHRpbGwgdGhlIGVuZCBvZiBzdGFydCB5ZWFyXG4gICAgICAvLyBlLmcuIHN0YXJ0IGlzIDIwIE9jdG9iZXIsIHNvIHNlbGVjdCBOb3ZlbWJlciBhbmQgRGVjZW1iZXIsIE9jdG9iZXIgd2FzIHNlbGVjdGVkIGFib3ZlXG4gICAgICBpZiAoZW5kWzBdID4gc3RhcnRbMF0pIHtcbiAgICAgICAgcmFuZ2UgPSByYW5nZS5jb25jYXQodGhpcy5zZWxlY3RNb250aHNJblllYXIoYVswXSwgYVsxXSwgMTEpKTtcbiAgICAgICAgLy8gYW5kIHNldCBzdGFydCB5ZWFyIHRvIGVuZCB5ZWFyXG4gICAgICAgIC8vIG1vbnRoIHRvIDAgKEphbnVhcnkpXG4gICAgICAgIFthWzBdLCBhWzFdXSA9IFtlbmRbMF0sIDBdO1xuICAgICAgfVxuXG4gICAgICAvLyBub3cgd2UgYXJlIGF0IHRoZSBzYW1lIHllYXIgYW5kIGhhdmUgdGhlIGNhc2UgaWYgZW5kIG1vbnRoID4gc3RhcnQgbW9udGhcbiAgICAgIC8vIHRoZW4gc2VsZWN0IGV2ZXJ5dGhpbmcgYmV0d2VlbiB0aG9zZSBtb250aHNcbiAgICAgIGlmIChlbmRbMV0gPiBhWzFdKSB7XG4gICAgICAgIC8vIGUuZy4gc3RhcnQgMjAgT2N0b2JlciBlbmQgMjAgRGVjZW1iZXIsIHNlbGVjdCBmdWxsIE5vdmVtYmVyXG4gICAgICAgIHJhbmdlID0gcmFuZ2UuY29uY2F0KHRoaXMuc2VsZWN0TW9udGhzSW5ZZWFyKGFbMF0sIGFbMV0sIGVuZFsxXSAtIDEpKTtcbiAgICAgICAgYVsxXSA9IGVuZDtcbiAgICAgIH1cblxuICAgICAgLy8gdGhlIG1pc3NpbmcgcGFydCBpcyBkYXlzIGluIGVuZCBzZWxlY3Rpb24gbW9udGhcbiAgICAgIHJhbmdlID0gcmFuZ2UuY29uY2F0KHRoaXMuc2VsZWN0RGF5c0luTW9udGgoZW5kWzBdLCBlbmRbMV0sIDEsIGVuZFsyXSkpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICByYW5nZSxcbiAgICAgIGlzVmFsaWQ6IHRoaXMuaXNSYW5nZVZhbGlkKHJhbmdlKVxuICAgIH07XG4gIH1cblxuICBzZWxlY3RNb250aHNJblllYXIoeWVhciwgc3RhcnQsIGVuZCkge1xuICAgIGxldCBzZWxlY3Rpb24gICAgPSBbXTtcbiAgICBjb25zdCBtb250aFJhbmdlID0gZ2VuQXJyYXlSYW5nZShzdGFydCwgZW5kKTtcblxuICAgIG1vbnRoUmFuZ2UuZm9yRWFjaCgobW9udGgpID0+IHtcbiAgICAgIGNvbnN0IHkgPSB0aGlzLnRyZWVbeWVhcl07XG4gICAgICBjb25zdCBtID0gaXMoeSkgPyB0aGlzLnRyZWVbeWVhcl1bbW9udGhdIDogbnVsbDtcblxuICAgICAgaWYgKHkgJiYgbSkge1xuICAgICAgICBzZWxlY3Rpb24gPSBzZWxlY3Rpb24uY29uY2F0KHRoaXMuc2VsZWN0RGF5c0luTW9udGgoeWVhciwgbW9udGgsIDEsIG0ubGVuZ3RoKSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gc2VsZWN0aW9uO1xuICB9XG5cbiAgc2VsZWN0RGF5c0luTW9udGgoeWVhciwgbW9udGgsIHN0YXJ0RGF5LCBlbmREYXkpIHtcbiAgICBjb25zdCB5ID0gdGhpcy50cmVlW3llYXJdO1xuICAgIGNvbnN0IG0gPSBpcyh5KSA/IHRoaXMudHJlZVt5ZWFyXVttb250aF0gOiBudWxsO1xuXG4gICAgaWYgKHkgJiYgbSkge1xuICAgICAgcmV0dXJuIG0uc2xpY2UoKHN0YXJ0RGF5IC0gMSksIGVuZERheSk7XG4gICAgfVxuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIHNlbGVjdERheSh5ZWFyLCBtb250aCwgZGF5KSB7XG4gICAgY29uc3QgeSA9IHRoaXMudHJlZVt5ZWFyXTtcbiAgICBjb25zdCBtID0gaXMoeSkgPyB0aGlzLnRyZWVbeWVhcl1bbW9udGhdIDogbnVsbDtcblxuICAgIGlmICh5ICYmIG0pIHtcbiAgICAgIHJldHVybiBtW2RheSAtIDFdO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGlzUmFuZ2VWYWxpZChyYW5nZSwgZm4pIHtcbiAgICBjb25zdCB2YWxpZGF0ZUNlbGwgPSB0aGlzLnZhbGlkYXRlQ2VsbCB8fCBmbjtcbiAgICBsZXQgaXNWYWxpZCAgICAgICAgPSB0cnVlO1xuXG4gICAgaWYgKHR5cGVvZiB2YWxpZGF0ZUNlbGwgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNvbnN0IGZpbHRlclZhbGlkcyA9IHJhbmdlLmZpbHRlcigoY2VsbCkgPT4gdGhpcy52YWxpZGF0ZUNlbGwoY2VsbCkpO1xuICAgICAgaXNWYWxpZCA9IGZpbHRlclZhbGlkcy5sZW5ndGggPT0gcmFuZ2UubGVuZ3RoO1xuICAgIH1cblxuICAgIHJldHVybiBpc1ZhbGlkO1xuICB9XG5cbiAgcmVwbGFjZU1hcHMobWFwLCB1cGRhdGVkQXQpIHtcbiAgICB0aGlzLm1hcCA9IENhbGVuZGFyVHJlZS5tYXBzVG9UcmVlKG1hcCwgdXBkYXRlZEF0KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHJlbW92ZU1hcCgpIHtcbiAgICB0aGlzLm1hcCA9IHt9O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqICBDcmVhdGUgYSB0cmVlIHN0cnVjdHVyZSBmcm9tIG1hcHNcbiAgICogIGZvciBuLXRpbWUgZGF5IGFjY2VzcywgZS5nLiB0aGlzLm1hcFt5ZWFyXVttb250aF1bZGF5XS5pc0F2YWlsYWJsZTtcbiAgICoge1xuICAgKiAgIDIxMDY6IHtcbiAgICogICAgICAxOiB7XG4gICAqICAgICAgICAxOiAsXG4gICAqICAgICAgICAyOiAsXG4gICAqICAgICAgICAzOlxuICAgKiAgICAgICAgLi4uXG4gICAqICAgICAgfVxuICAgKiAgICAgIC4uLlxuICAgKiAgICAgIDEyOiB7XG4gICAqXG4gICAqICAgICAgfVxuICAgKiAgICB9XG4gICAqIH1cbiAgICogQHBhcmFtIHtPYmplY3R9IG1hcHNcbiAgICogQHBhcmFtIHtTdHJpbmcgfCBEYXRlfSBtYXBTdGFydEF0XG4gICAqIEByZXR1cm5zIHtPYmplY3R9XG4gICAqL1xuICBzdGF0aWMgbWFwc1RvVHJlZShtYXBzLCBtYXBTdGFydEF0KSB7XG4gICAgaWYgKCEoaXNTdHJpbmcobWFwcy5hdmFpbGFiaWxpdHkpXG4gICAgICB8fCBpc1N0cmluZyhtYXBzLm5pZ2h0bHlfcmF0ZXMpXG4gICAgICB8fCBpc1N0cmluZyhtYXBzLm1pbmltdW1fc3RheXMpKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgYXZhaWwgID0gbWFwcy5hdmFpbGFiaWxpdHkuc3BsaXQoJycpLm1hcChwYXJzZUZsb2F0KTtcbiAgICBjb25zdCByYXRlcyAgPSBtYXBzLm5pZ2h0bHlfcmF0ZXMuc3BsaXQoJywnKS5tYXAocGFyc2VGbG9hdCk7XG4gICAgY29uc3QgbWluTWFwID0gbWFwcy5taW5pbXVtX3N0YXlzLnNwbGl0KCcsJykubWFwKHBhcnNlRmxvYXQpO1xuICAgIGxldCBkYXkgICAgICA9IDE7XG5cbiAgICBsZXQge1xuICAgICAgeWVhcixcbiAgICAgIG1vbnRoLFxuICAgICAgZGF0ZTogZGF5U2hpZnRcbiAgICB9ID0gcGFyc2VJU09TdHJpbmcobWFwU3RhcnRBdCk7XG5cbiAgICAvLyB0cmljayB0byBhZGQgZXh0cmEgdW5hdmFpbGFibGUgZGF0ZSBmb3IgcHJvcGVyIGNhbGN1bGF0aW9ucyBvZiBjaGVjay1vdXQgZGF0ZXNcbiAgICBpZiAoYXZhaWxbYXZhaWwubGVuZ3RoIC0gMV0gPT09IDApIHtcbiAgICAgIGF2YWlsLnB1c2goMSk7XG4gICAgfVxuXG4gICAgbGV0IHByZXZpb3VzRGF0ZSA9IHt9O1xuXG4gICAgcmV0dXJuIGF2YWlsLnJlZHVjZSgoY3Vyciwgc3RhdGUsIGluZGV4LCBhcnIpID0+IHtcbiAgICAgIGNvbnN0IGxlbmd0aCAgICAgICAgICAgPSBtb250aExlbmd0aCh5ZWFyLCBtb250aCk7XG4gICAgICBjb25zdCB0cmVlICAgICAgICAgICAgID0gY3VycjtcbiAgICAgIGNvbnN0IG1pblN0YXkgICAgICAgICAgPSBtaW5NYXBbaW5kZXhdO1xuICAgICAgY29uc3QgcmF0ZSAgICAgICAgICAgICA9IHJhdGVzW2luZGV4XTtcbiAgICAgIGNvbnN0IGlzQXZhaWxhYmxlICAgICAgPSBzdGF0ZSA9PT0gMDtcbiAgICAgIGNvbnN0IHByZXZBdmFpbGFibGUgICAgPSBhcnJbaW5kZXggLSAxXSA9PT0gMDtcbiAgICAgIGNvbnN0IGlzTW9ybmluZ0Jsb2NrZWQgPSAoaXNBdmFpbGFibGUgJiYgIXByZXZBdmFpbGFibGUpID8gdHJ1ZSA6IG51bGw7XG4gICAgICBjb25zdCBpc0F2YWlsYWJsZU91dCAgID0gKGlzTW9ybmluZ0Jsb2NrZWQpID8gdHJ1ZSA6IG51bGw7XG5cbiAgICAgIGlmICghdHJlZVt5ZWFyXSkge1xuICAgICAgICB0cmVlW3llYXJdID0ge307XG4gICAgICB9XG5cbiAgICAgIGlmICghdHJlZVt5ZWFyXVttb250aF0pIHtcbiAgICAgICAgdHJlZVt5ZWFyXVttb250aF0gPSB7fTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRheVNoaWZ0KSB7XG4gICAgICAgIGRheSAgICAgID0gZGF5U2hpZnQ7XG4gICAgICAgIGRheVNoaWZ0ID0gbnVsbDtcbiAgICAgIH1cblxuICAgICAgLy8gaWYgbWluU3RheSA+IGF2YWlsYWJsZSBkYXlzIGluIGZ1dHVyZVxuICAgICAgLy8gY29uc2lkZXIgY3VycmVudCBkYXkgYXMgdW5hdmFpbGFibGUgYXMgd2VsbFxuICAgICAgLy8gaWYgKGlzQXZhaWxhYmxlICYmIG1pblN0YXkgPiAxKSB7XG4gICAgICAvLyAgIGxldCBkYXlzQXZhaWxhYmxlID0gMTtcbiAgICAgIC8vICAgbGV0IGkgICAgICAgICAgICAgPSBpbmRleCArIDE7XG4gICAgICAvLyAgIHdoaWxlIChhcnJbaV0gPT09IDApIHtcbiAgICAgIC8vICAgICBkYXlzQXZhaWxhYmxlICs9IDE7XG4gICAgICAvLyAgICAgaSArPSAxO1xuICAgICAgLy8gICB9XG4gICAgICAvL1xuICAgICAgLy8gICBpZiAobWluU3RheSA+IGRheXNBdmFpbGFibGUpIHtcbiAgICAgIC8vICAgICBpc0F2YWlsYWJsZSA9IGZhbHNlO1xuICAgICAgLy8gICB9XG4gICAgICAvLyB9XG5cbiAgICAgIHRyZWVbeWVhcl1bbW9udGhdW2RheV0gPSB7XG4gICAgICAgIHJhdGUsXG4gICAgICAgIG1pblN0YXksXG4gICAgICAgIGlzQXZhaWxhYmxlLFxuICAgICAgICBpc01vcm5pbmdCbG9ja2VkLFxuICAgICAgICBpc0F2YWlsYWJsZU91dFxuICAgICAgfTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKHByZXZBdmFpbGFibGUgJiYgIWlzQXZhaWxhYmxlKSB7XG4gICAgICAgICAgdHJlZVtwcmV2aW91c0RhdGUueWVhcl1bcHJldmlvdXNEYXRlLm1vbnRoXVtwcmV2aW91c0RhdGUuZGF5XS5pc0F2YWlsYWJsZU91dCA9IHRydWU7XG4gICAgICAgICAgdHJlZVt5ZWFyXVttb250aF1bZGF5XS5pc01vcm5pbmdCbG9ja2VkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2goZSkge1xuICAgICAgICAvLyBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBwcmV2aW91c0RhdGUgPSB7XG4gICAgICAgIHllYXIsXG4gICAgICAgIG1vbnRoLFxuICAgICAgICBkYXlcbiAgICAgIH07XG5cbiAgICAgIGlmIChkYXkgPCBsZW5ndGgpIHtcbiAgICAgICAgZGF5ICs9IDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAobW9udGggPiAxMCkge1xuICAgICAgICAgIG1vbnRoID0gMDtcbiAgICAgICAgICB5ZWFyICs9IDE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbW9udGggKz0gMTtcbiAgICAgICAgfVxuICAgICAgICBkYXkgPSAxO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdHJlZTtcbiAgICB9LCB7fSk7XG4gIH1cblxuICBnZXREYXlQcm9wZXJ0eSh5ZWFyLCBtb250aCwgZGF5LCBwcm9wZXJ0eSkge1xuICAgIGxldCBwcm9wO1xuXG4gICAgaWYgKHRoaXMubWFwKSB7XG4gICAgICB0cnkge1xuICAgICAgICBwcm9wID0gdGhpcy5tYXBbeWVhcl1bbW9udGhdW2RheV1bcHJvcGVydHldO1xuICAgICAgfSBjYXRjaChlKSB7XG4gICAgICAgIC8vIGNvbnRpbnVlIHJlZ2FyZGxlc3Mgb2YgZXJyb3JcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcHJvcDtcbiAgfVxuXG4gIGlzRGF5RGlzYWJsZWQoeWVhciwgbW9udGgsIGRheSkge1xuICAgIHJldHVybiAhdGhpcy5nZXREYXlQcm9wZXJ0eSh5ZWFyLCBtb250aCwgZGF5LCAnaXNBdmFpbGFibGUnKTtcbiAgfVxufVxuIiwiLyogZ2xvYmFsIE5vZGUsIGRvY3VtZW50LCB3aW5kb3csIGNvbnNvbGUsIHJlcXVpcmUsIGZldGNoICovXG5pbXBvcnQge1xuICBhZGRDbGFzcywgcmVtb3ZlQ2xhc3MsIGhhc0NsYXNzLCBpc0FycmF5LCBpc09iamVjdCwgRW1pdHRlcixcbiAgbWVyZ2UsIGVsZW1lbnRGcm9tU3RyaW5nLCB0cmF2ZXJzZVRvUGFyZW50V2l0aEF0dHIsIGRlc3Ryb3lFbGVtZW50LCBtb250aExlbmd0aCwgaXMsIGlzRnVuY3Rpb24sXG4gIGlzTnVtZXJpYywgdHJhdmVyc2VPYmosIGlzSW5zaWRlLCBjdXJyZW5jeUZvcm1hdHRlclxufSBmcm9tICd3aWRnZXQtdXRpbHMnO1xuXG5pbXBvcnQgKiBhcyB0ZW1wbGF0ZXMgZnJvbSAnLi90ZW1wbGF0ZXMnO1xuaW1wb3J0IENhbGVuZGFyVHJlZSBmcm9tICcuL2NhbGVuZGFyLXRyZWUnO1xuaW1wb3J0IGNvbmZpZyBmcm9tICcuL2NvbmZpZyc7XG5pbXBvcnQgbG9jYWxlcyBmcm9tICcuL2xvY2FsZXMnO1xuXG5pbXBvcnQgeyBzdHJmdGltZSB9IGZyb20gJ3N0cnRpbWUnO1xuXG5pbXBvcnQge1xuICBkYXRlVG9Jc28sIGlzTGF0ZXIsIGlzQ3VycmVudCwgdmFsaWRhdGlvbk9mQ2VsbCwgdEZvcm1hdHRlciwgZGF0ZVRvQXJyYXksIG1vbnRoRGlmZlxufSBmcm9tICcuL3V0aWxzJztcblxuaW1wb3J0IHN0eWxlcyBmcm9tICcuL3N0eWxlcy9jYWxlbmRhci5zY3NzJztcblxuaW1wb3J0IHV0aWxzU3R5bGVzIGZyb20gJ3dpZGdldC11dGlscy9zcmMvc3R5bGVzL3Jlc2V0LnNjc3MnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDYWxlbmRhciBleHRlbmRzIEVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvcihvcHRzLCBtYXBzKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLm5hbWUgICAgPSBjb25maWcubmFtZTtcbiAgICB0aGlzLlZFUlNJT04gPSByZXF1aXJlKCcuLi9wYWNrYWdlLmpzb24nKS52ZXJzaW9uO1xuICAgIHRoaXMuQ1NTX1BSRUZJWCA9IGNvbmZpZy5jc3NQcmVmaXg7XG5cbiAgICBpZiAoaXNPYmplY3Qob3B0cykpIHtcbiAgICAgIGlmICghb3B0cy5lbCkge1xuICAgICAgICB0aGlzLmxvZ2dlcignZWwgbXVzdCBiZSBIVE1MIGVsZW1lbnQnLCAnZXJyb3InKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjb25maWdEYXRhc2V0ID0gbWVyZ2UoY29uZmlnLCBvcHRzLmVsLmRhdGFzZXQpO1xuICAgICAgdGhpcy5vcHRzICAgICAgICAgICA9IG1lcmdlKGNvbmZpZ0RhdGFzZXQsIG9wdHMpO1xuXG4gICAgICB0aGlzLm9wdHMgPSB0cmF2ZXJzZU9iaih0aGlzLm9wdHMsIChhKSA9PiBhLCAoYikgPT4ge1xuICAgICAgICBpZiAoYiA9PT0gJ3RydWUnIHx8IGIgPT09ICdmYWxzZScpIHtcbiAgICAgICAgICByZXR1cm4gKGIgPT09ICd0cnVlJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzTnVtZXJpYyhiKSkge1xuICAgICAgICAgIHJldHVybiBwYXJzZUludChiLCAxMCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGI7XG4gICAgICB9KTtcblxuICAgICAgaWYgKHRoaXMub3B0cy5pc0Ryb3BEb3duKSB7XG4gICAgICAgIHRoaXMuaW5pdENhbGVuZGFyRHJvcCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5lbCA9IG9wdHMuZWw7XG4gICAgICB9XG5cbiAgICAgIHRoaXMub3B0cy5sYW5nICAgICAgICA9ICh0aGlzLm9wdHMubGFuZyAmJiB0aGlzLm9wdHMubGFuZyBpbiBsb2NhbGVzKSA/IHRoaXMub3B0cy5sYW5nIDogJ2VuLVVTJztcbiAgICAgIHRoaXMubG9jYWxlICAgICAgICAgICA9IGxvY2FsZXNbdGhpcy5vcHRzLmxhbmddO1xuICAgICAgdGhpcy5mb3JtYXQgICAgICAgICAgID0gdGhpcy5vcHRzLmZvcm1hdERhdGUgfHwgdGhpcy5sb2NhbGUuZm9ybWF0RGF0ZSB8fCAnJW0vJWQvJVknO1xuICAgICAgdGhpcy5vcHRzLnN0YXJ0T2ZXZWVrID0gdGhpcy5vcHRzLnN0YXJ0T2ZXZWVrIHx8IHRoaXMubG9jYWxlLnN0YXJ0T2ZXZWVrO1xuXG4gICAgICBsZXQgeyBjdXJyZW50RGF0ZSB9ID0gdGhpcy5vcHRzO1xuICAgICAgY29uc3QgeWVhciAgPSBjdXJyZW50RGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgY29uc3QgbW9udGggPSBjdXJyZW50RGF0ZS5nZXRNb250aCgpO1xuICAgICAgY29uc3QgZGF5ICAgPSBjdXJyZW50RGF0ZS5nZXREYXRlKCk7XG5cbiAgICAgIHRoaXMub3B0cy5jdXJyZW50RGF0ZSA9IFt5ZWFyLCBtb250aCwgZGF5XTtcblxuICAgICAgaWYgKCF0aGlzLm9wdHMueWVhclN0YXJ0KSB7XG4gICAgICAgIHRoaXMub3B0cy55ZWFyU3RhcnQgPSB5ZWFyO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXRoaXMub3B0cy5tb250aFN0YXJ0KSB7XG4gICAgICAgIHRoaXMub3B0cy5tb250aFN0YXJ0ID0gbW9udGg7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIFRPRE86IHJlbmFtZSBkYXlzVHJlZVxuICAgIHRoaXMuZG9tICAgPSB7fTtcbiAgICAvLyBUT0RPOiByZW5hbWUgdG8gY2FsZW5kYXJUcmVlIG9yIGJvb2tpbmdzVHJlZVxuICAgIHRoaXMuY1RyZWUgPSBuZXcgQ2FsZW5kYXJUcmVlKHZhbGlkYXRpb25PZkNlbGwsIHt9KTtcbiAgICAvLyBUT0RPOiByZW5hbWUgdG8gYm9va2luZ3NEYXRhICYgYWRkRGF0YVxuICAgIGlmIChpc09iamVjdChtYXBzKSkge1xuICAgICAgdGhpcy5jVHJlZS5hZGRNYXBzKG1hcHMsIG1hcHMuc3RhcnRfZGF0ZSB8fCBkYXRlVG9Jc28odGhpcy5vcHRzLmN1cnJlbnREYXRlKSk7XG4gICAgfVxuXG4gICAgLy8gc2VsZWN0aW9uIGFuZCBoaWdobGlnaHRzXG4gICAgdGhpcy5pc1NlbGVjdGluZyAgICAgICA9IGZhbHNlO1xuICAgIHRoaXMuaGlnaGxpZ2h0ZWRCb3VuZHMgPSBbXTtcbiAgICB0aGlzLmhhc1ZhbGlkUmFuZ2UgICAgID0gdHJ1ZTtcblxuICAgIC8vIFRPRE86IHJlbmFtZSBpc1JldmVyc2VTZWxlY3RhYmxlIHRvIHNlbGVjdGlvbkRlZmF1bHREaXJlY3Rpb24gLSBzaG91bGQgYmUgTFRSIG9yIFJUTFxuICAgIC8vIHVzZXIgc2VsZWN0cyBlbmQgZGF0ZSBmaXJzdFxuICAgIHRoaXMuaXNSZXZlcnNlU2VsZWN0YWJsZSA9IHRoaXMub3B0cy5pc1JldmVyc2VTZWxlY3RhYmxlO1xuICAgIHRoaXMuaW5pdCgpO1xuICB9XG5cbiAgaW5pdCgpIHtcbiAgICBhZGRDbGFzcyh0aGlzLmVsLCBzdHlsZXMuY2FsZW5kYXIsIHV0aWxzU3R5bGVzLnJlc2V0KTtcblxuICAgIGlmICghdGhpcy5lbC5kYXRhc2V0LnRoZW1lKSB7XG4gICAgICB0aGlzLmVsLmRhdGFzZXQudGhlbWUgPSB0aGlzLm9wdHMudGhlbWU7XG4gICAgfVxuXG4gICAgdGhpcy5kb20ubW9udGhzV3JhcHBlciA9IHRoaXMuZWwuYXBwZW5kQ2hpbGQoZWxlbWVudEZyb21TdHJpbmcodGVtcGxhdGVzLm1haW4pKTtcbiAgICB0aGlzLmRvbS5mb3J3YXJkICAgICAgID0gdGhpcy5lbC5hcHBlbmRDaGlsZChlbGVtZW50RnJvbVN0cmluZyh0ZW1wbGF0ZXMuZm9yd2FyZCkpO1xuICAgIHRoaXMuZG9tLmJhY2sgICAgICAgICAgPSB0aGlzLmVsLmFwcGVuZENoaWxkKGVsZW1lbnRGcm9tU3RyaW5nKHRlbXBsYXRlcy5iYWNrKSk7XG4gICAgdGhpcy5yZW5kZXJNb250aHModGhpcy5vcHRzLnllYXJTdGFydCwgdGhpcy5vcHRzLm1vbnRoU3RhcnQpO1xuXG4gICAgdGhpcy5hZGRCdG5zRXZlbnRzKCk7XG5cbiAgICBpZiAodGhpcy5vcHRzLnNlbGVjdGFibGUgJiYgdGhpcy5vcHRzLmVsU3RhcnRBdCAmJiB0aGlzLm9wdHMuZWxFbmRBdCkge1xuICAgICAgaWYgKCF0aGlzLm9wdHMucmVudGFsSWQpIHtcbiAgICAgICAgdGhpcy5pbnB1dHNUb1ZhbHVlcygpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLm9uKCdtYXBzLWxvYWRlZCcsICgpID0+IHRoaXMuaW5wdXRzVG9WYWx1ZXMoKSk7XG4gICAgICB0aGlzLm9wdHMuZWxTdGFydEF0LmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgKCkgPT4gdGhpcy5pbnB1dHNUb1ZhbHVlcygpKTtcbiAgICAgIHRoaXMub3B0cy5lbEVuZEF0LmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgKCkgPT4gdGhpcy5pbnB1dHNUb1ZhbHVlcygpKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRzLnJlbnRhbElkICYmICF0aGlzLm9wdHMuaXNEcm9wRG93bikge1xuICAgICAgdGhpcy5sb2FkTWFwcyh0aGlzLm9wdHMucmVudGFsSWQpO1xuICAgIH1cblxuICAgIHRoaXMuZWwuZGF0YXNldC5zZWxlY3RhYmxlID0gdGhpcy5vcHRzLnNlbGVjdGFibGU7XG5cbiAgICB0aGlzLmxvZ2dlcignaW5pdGVkJyk7XG4gICAgdGhpcy5lbWl0KCdpbml0Jyk7XG4gIH1cblxuICBjaGFuZ2VTZWxlY3Rpb25PcmRlcihpc1JldmVyc2UpIHtcbiAgICBpZiAoKGlzUmV2ZXJzZSAhPT0gdGhpcy5pc1JldmVyc2VTZWxlY3RhYmxlKSAmJiAhdGhpcy5pc1NlbGVjdGluZykge1xuICAgICAgdGhpcy5pc1JldmVyc2VTZWxlY3RhYmxlID0gaXNSZXZlcnNlO1xuICAgICAgdGhpcy5kZXN0cm95TW9udGhzKCk7XG4gICAgICB0aGlzLnJlbmRlck1vbnRocyh0aGlzLnllYXJTdGFydCwgdGhpcy5tb250aFN0YXJ0KTtcbiAgICB9XG4gIH1cblxuICByZW5kZXJNb250aHMoeWVhclN0YXJ0LCBtb250aFN0YXJ0KSB7XG4gICAgLy8gY29uc3RydWN0IGRvbSB0cmVlXG4gICAgY29uc3Qge1xuICAgICAgdHJlZSwgeWVhckVuZCwgbW9udGhFbmQsIG1vbnRoc1xuICAgIH0gPSB0aGlzLmNyZWF0ZVRyZWUoeWVhclN0YXJ0LCBtb250aFN0YXJ0LCB0aGlzLm9wdHMuZGlzcGxheU1vbnRocyk7XG5cbiAgICB0aGlzLmNUcmVlLmFkZFRyZWUodHJlZSk7XG5cbiAgICB0aGlzLm1vbnRoU3RhcnQgPSBtb250aFN0YXJ0O1xuICAgIHRoaXMueWVhclN0YXJ0ICA9IHllYXJTdGFydDtcblxuICAgIHRoaXMubW9udGhFbmQgPSBtb250aEVuZDtcbiAgICB0aGlzLnllYXJFbmQgID0geWVhckVuZDtcblxuICAgIGlmICh0aGlzLm9wdHMuc2VsZWN0YWJsZSkge1xuICAgICAgYWRkQ2xhc3ModGhpcy5lbCwgdGhpcy5pc1JldmVyc2VTZWxlY3RhYmxlID8gc3R5bGVzLnJldmVyc2VkIDogc3R5bGVzLmRpcmVjdCk7XG4gICAgICByZW1vdmVDbGFzcyh0aGlzLmVsLCB0aGlzLmlzUmV2ZXJzZVNlbGVjdGFibGUgPyBzdHlsZXMuZGlyZWN0IDogc3R5bGVzLnJldmVyc2VkKTtcbiAgICB9XG5cbiAgICB0aGlzLmRvbS5tb250aHMgPSBtb250aHM7XG4gICAgdGhpcy5kb20ubW9udGhzLmZvckVhY2goKG0pID0+IHtcbiAgICAgIHRoaXMuZG9tLm1vbnRoc1dyYXBwZXIuYXBwZW5kQ2hpbGQobSk7XG4gICAgICBpZiAodGhpcy5vcHRzLnNlbGVjdGFibGUpIHtcbiAgICAgICAgdGhpcy5hZGRNb250aEV2ZW50cyhtKTtcbiAgICAgICAgYWRkQ2xhc3ModGhpcy5lbCwgc3R5bGVzLmFjdGlvbnNFbmFibGVkKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmICghdGhpcy5vcHRzLmVuYWJsZUFsbERheXMpIHtcbiAgICAgIHRoaXMuZGlzYWJsZUJhY2tCdG4oKTtcbiAgICB9XG5cbiAgICB0aGlzLnJlY292ZXJTZWxlY3Rpb25zKCk7XG4gIH1cblxuICByZWNvdmVyU2VsZWN0aW9ucygpIHtcbiAgICBpZiAodGhpcy5zZWxlY3Rpb25TdGFydCkge1xuICAgICAgdGhpcy5zZWxlY3RTdGFydCh0aGlzLnNlbGVjdGlvblN0YXJ0LCB0aGlzLmNUcmVlLnNlbGVjdERheSguLi50aGlzLnNlbGVjdGlvblN0YXJ0KSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uRW5kKSB7XG4gICAgICB0aGlzLnNlbGVjdEVuZCh0aGlzLnNlbGVjdGlvbkVuZCwgdGhpcy5jVHJlZS5zZWxlY3REYXkoLi4udGhpcy5zZWxlY3Rpb25FbmQpKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zZWxlY3Rpb25TdGFydCAmJiB0aGlzLnNlbGVjdGlvbkVuZCkge1xuICAgICAgaWYgKHRoaXMuaGlnaGxpZ2h0ZWRCb3VuZHMubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLmhpZ2hMaWdodFJhbmdlKC4uLnRoaXMuaGlnaGxpZ2h0ZWRCb3VuZHMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5oaWdoTGlnaHRSYW5nZSh0aGlzLnNlbGVjdGlvblN0YXJ0LCB0aGlzLnNlbGVjdGlvbkVuZCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZGlzYWJsZUJhY2tCdG4oKSB7XG4gICAgaWYgKHRoaXMub3B0cy5pc0JhY2tEaXNhYmxlZCkge1xuICAgICAgY29uc3Qgc3RhcnREYXRlICAgICAgICA9IGRhdGVUb0lzbyh0aGlzLnllYXJTdGFydCwgdGhpcy5tb250aFN0YXJ0LCAxKTtcbiAgICAgIGxldCB7IGN1cnJlbnREYXRlIH0gICAgPSB0aGlzLm9wdHM7XG4gICAgICBjdXJyZW50RGF0ZSAgICAgICAgICAgID0gZGF0ZVRvSXNvKGN1cnJlbnREYXRlWzBdLCBjdXJyZW50RGF0ZVsxXSwgMSk7XG4gICAgICB0aGlzLmRvbS5iYWNrLmRpc2FibGVkID0gc3RhcnREYXRlIDw9IGN1cnJlbnREYXRlO1xuICAgIH1cbiAgfVxuXG4gIHRvZ2dsZUxvYWRpbmcoKSB7XG4gICAgaWYgKCFoYXNDbGFzcyh0aGlzLmVsLCBzdHlsZXMubG9hZGluZykpIHtcbiAgICAgIGFkZENsYXNzKHRoaXMuZWwsIHN0eWxlcy5sb2FkaW5nKTtcbiAgICAgIHRoaXMuZW1pdCgnbG9hZGluZy1zaG93Jyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlbW92ZUNsYXNzKHRoaXMuZWwsIHN0eWxlcy5sb2FkaW5nKTtcbiAgICAgIHRoaXMuZW1pdCgnbG9hZGluZy1oaWRlJyk7XG4gICAgfVxuICB9XG5cbiAgYWRkTWFwcyhtYXBzKSB7XG4gICAgdGhpcy5jVHJlZS5yZXBsYWNlTWFwcyhtYXBzLCBtYXBzLnN0YXJ0X2RhdGUpO1xuICAgIHRoaXMuZGVzdHJveU1vbnRocygpO1xuICAgIHRoaXMucmVuZGVyTW9udGhzKFxuICAgICAgdGhpcy5vcHRzLnllYXJTdGFydCB8fCB0aGlzLnllYXJTdGFydCxcbiAgICAgIHRoaXMub3B0cy5tb250aFN0YXJ0IHx8IHRoaXMubW9udGhTdGFydFxuICAgICk7XG4gIH1cblxuICBhZGRCdG5zRXZlbnRzKCkge1xuICAgIHRoaXMuZG9tLmZvcndhcmQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZSkgPT4ge1xuICAgICAgdGhpcy5kZXN0cm95TW9udGhzKCk7XG4gICAgICB0aGlzLnJlbmRlck1vbnRocyh0aGlzLnllYXJFbmQsIHRoaXMubW9udGhFbmQpO1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5kb20uYmFjay5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChlKSA9PiB7XG4gICAgICB0aGlzLmRlc3Ryb3lNb250aHMoKTtcbiAgICAgIGxldCBtb250aFRvUmVuZGVyID0gdGhpcy5tb250aFN0YXJ0IC0gdGhpcy5vcHRzLmRpc3BsYXlNb250aHM7XG4gICAgICBsZXQgeWVhclRvUmVuZGVyICA9IHRoaXMueWVhclN0YXJ0O1xuXG4gICAgICBpZiAobW9udGhUb1JlbmRlciA8IDApIHtcbiAgICAgICAgbW9udGhUb1JlbmRlciArPSAxMjtcbiAgICAgICAgeWVhclRvUmVuZGVyIC09IDE7XG4gICAgICB9XG5cbiAgICAgIHRoaXMucmVuZGVyTW9udGhzKHllYXJUb1JlbmRlciwgbW9udGhUb1JlbmRlcik7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgfSk7XG4gIH1cblxuICBhZGRNb250aEV2ZW50cyhlbCkge1xuICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGUpID0+IHtcbiAgICAgIGNvbnN0IGlzRW5kRmlyc3QgPSB0aGlzLmlzUmV2ZXJzZVNlbGVjdGFibGU7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHZhbHVlLFxuICAgICAgICBwYXJlbnQ6IGNlbGxcbiAgICAgIH0gPSB0cmF2ZXJzZVRvUGFyZW50V2l0aEF0dHIoZS50YXJnZXQsICdkYXRhLXZhbHVlJyk7XG5cbiAgICAgIGNvbnN0IHJlc2V0U2VsZWN0aW9uT25Fc2NhcGUgPSAoZXZlbnQpID0+IHtcbiAgICAgICAgY29uc3Qga2V5ID0gZXZlbnQua2V5IHx8IGV2ZW50LmtleUNvZGU7XG5cbiAgICAgICAgaWYgKGtleSA9PT0gJ0VzY2FwZScgfHwga2V5ID09PSAnRXNjJyB8fCBrZXkgPT09IDI3KSB7XG4gICAgICAgICAgaWYgKHRoaXMuaXNTZWxlY3RpbmcpIHtcbiAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleXVwJywgcmVzZXRTZWxlY3Rpb25PbkVzY2FwZSwgdHJ1ZSk7XG4gICAgICAgICAgICB0aGlzLnJlc2V0U2VsZWN0aW9uKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsIHJlc2V0U2VsZWN0aW9uT25Fc2NhcGUsIHRydWUpO1xuXG4gICAgICBpZiAoaXModmFsdWUpICYmIGNlbGwpIHtcbiAgICAgICAgY29uc3QgZGF0ZVZhbHVlICAgICAgICAgID0gW2VsLnllYXIsIGVsLm1vbnRoLCBwYXJzZUludChjZWxsLmdldEF0dHJpYnV0ZSgnZGF0YS12YWx1ZScpLCAxMCldO1xuICAgICAgICBjb25zdCBkYXlBbHJlYWR5U2VsZWN0ZWQgPSB0aGlzLmlzU2VsZWN0aW5nICYmIGlzQ3VycmVudCgoaXNFbmRGaXJzdCkgPyB0aGlzLnNlbGVjdGlvbkVuZCA6IHRoaXMuc2VsZWN0aW9uU3RhcnQsIGRhdGVWYWx1ZSk7XG4gICAgICAgIGNvbnN0IHJhbmdlU2VsZWN0ZWQgICAgICA9ICF0aGlzLmlzU2VsZWN0aW5nICYmIHRoaXMuc2VsZWN0aW9uRW5kICYmIHRoaXMuc2VsZWN0aW9uU3RhcnQ7XG4gICAgICAgIGNvbnN0IGlzUGFzdFRvZGF5ICAgICAgICA9IGlzTGF0ZXIoZGF0ZVZhbHVlLCB0aGlzLm9wdHMuY3VycmVudERhdGUpO1xuXG4gICAgICAgIGlmIChkYXlBbHJlYWR5U2VsZWN0ZWQgfHwgcmFuZ2VTZWxlY3RlZCB8fCBpc1Bhc3RUb2RheSkge1xuICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleXVwJywgcmVzZXRTZWxlY3Rpb25PbkVzY2FwZSwgdHJ1ZSk7XG4gICAgICAgICAgdGhpcy5yZXNldFNlbGVjdGlvbigpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFkYXlBbHJlYWR5U2VsZWN0ZWQgJiYgIWlzUGFzdFRvZGF5ICYmICF0aGlzLm9wdHMuZW5hYmxlQWxsRGF5cykge1xuICAgICAgICAgIGlmIChpc0VuZEZpcnN0KSB7XG4gICAgICAgICAgICB0aGlzLmVuZERhdGVGaXJzdEFjdGlvbihkYXRlVmFsdWUsIGNlbGwpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnN0YXJ0RGF0ZUZpcnN0QWN0aW9uKGRhdGVWYWx1ZSwgY2VsbCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlbW92ZUNsYXNzKHRoaXMuZWwsIHN0eWxlcy5zZWxlY3RpbmdEaXJlY3QsIHN0eWxlcy5zZWxlY3RpbmdSZXZlcnNlZCk7XG4gICAgICAgICAgZGVsZXRlIGNlbGwuZGF0YXNldC5oaWdobGlnaHRlZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbkVuZCAmJiB0aGlzLnNlbGVjdGlvblN0YXJ0ICYmIHRoaXMuaGFzVmFsaWRSYW5nZSkge1xuICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleXVwJywgcmVzZXRTZWxlY3Rpb25PbkVzY2FwZSwgdHJ1ZSk7XG4gICAgICAgICAgdGhpcy5jb21wbGV0ZVNlbGVjdGlvbihpc0VuZEZpcnN0LCBkYXRlVmFsdWUsIGNlbGwpO1xuICAgICAgICAgIGlmICh0aGlzLm9wdHMuaXNEcm9wRG93biAmJiB0aGlzLmNhbERyb3ApIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2VEcm9wKG51bGwsIHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgZWwuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VvdmVyJywgKGUpID0+IHtcbiAgICAgIGNvbnN0IHsgdmFsdWUsIHBhcmVudDogY2VsbCB9ID0gdHJhdmVyc2VUb1BhcmVudFdpdGhBdHRyKGUudGFyZ2V0LCAnZGF0YS12YWx1ZScpO1xuXG4gICAgICBpZiAoaXModmFsdWUpICYmIGNlbGwpIHtcbiAgICAgICAgY29uc3QgY3VycmVudCAgICAgICAgICA9IFtlbC55ZWFyLCBlbC5tb250aCwgcGFyc2VJbnQoY2VsbC5nZXRBdHRyaWJ1dGUoJ2RhdGEtdmFsdWUnKSwgMTApXTtcbiAgICAgICAgY29uc3QgaXNQYXN0VG9kYXkgICAgICA9IGlzTGF0ZXIoY3VycmVudCwgdGhpcy5vcHRzLmN1cnJlbnREYXRlKTtcbiAgICAgICAgY29uc3QgaXNFbmRGaXJzdCAgICAgICA9IHRoaXMuaXNSZXZlcnNlU2VsZWN0YWJsZTtcblxuICAgICAgICBpZiAoaXNQYXN0VG9kYXkgJiYgIXRoaXMub3B0cy5lbmFibGVBbGxEYXlzKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNTZWxlY3RpbmcpIHtcbiAgICAgICAgICB0aGlzLnJlbW92ZUhpZ2hsaWdodCgpO1xuXG4gICAgICAgICAgY29uc3QgY2VsbHMgPSB0aGlzLmVsLnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLXZhbHVlXScpO1xuICAgICAgICAgIGNlbGxzLmZvckVhY2goKGVsKSA9PiB7XG4gICAgICAgICAgICBkZWxldGUgZWwuZGF0YXNldC5ob3ZlcmVkO1xuICAgICAgICAgICAgZGVsZXRlIGVsLmRhdGFzZXQuaG92ZXJlZE9mZnNldDtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIC8vIHJldmVyc2Ugc2VsZWN0aW9uIGRpcmVjdGlvblxuICAgICAgICAgIGlmIChpc0VuZEZpcnN0ICYmIHRoaXMuc2VsZWN0aW9uRW5kICYmICFpc0N1cnJlbnQoY3VycmVudCwgdGhpcy5zZWxlY3Rpb25FbmQpKSB7XG4gICAgICAgICAgICBpZiAoaXNMYXRlcih0aGlzLnNlbGVjdGlvbkVuZCwgY3VycmVudCkpIHtcbiAgICAgICAgICAgICAgY29uc3QgY2VsbEEgPSB0aGlzLmNlbGxCO1xuICAgICAgICAgICAgICBjb25zdCB7IHNlbGVjdGlvbkVuZCB9ID0gdGhpcztcblxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZUhpZ2hsaWdodERpcmVjdGlvbihmYWxzZSwgc2VsZWN0aW9uRW5kKTtcbiAgICAgICAgICAgICAgdGhpcy5zdGFydERhdGVGaXJzdEFjdGlvbih0aGlzLnNlbGVjdGlvbkVuZCwgY2VsbEEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAoIWlzRW5kRmlyc3QgJiYgdGhpcy5zZWxlY3Rpb25TdGFydCAmJiAhaXNDdXJyZW50KGN1cnJlbnQsIHRoaXMuc2VsZWN0aW9uU3RhcnQpKSB7XG4gICAgICAgICAgICBpZiAoaXNMYXRlcihjdXJyZW50LCB0aGlzLnNlbGVjdGlvblN0YXJ0KSkge1xuICAgICAgICAgICAgICBjb25zdCBjZWxsQiA9IHRoaXMuY2VsbEE7XG4gICAgICAgICAgICAgIGNvbnN0IHsgc2VsZWN0aW9uU3RhcnQgfSA9IHRoaXM7XG5cbiAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VIaWdobGlnaHREaXJlY3Rpb24odHJ1ZSwgc2VsZWN0aW9uU3RhcnQpO1xuICAgICAgICAgICAgICB0aGlzLmVuZERhdGVGaXJzdEFjdGlvbih0aGlzLnNlbGVjdGlvblN0YXJ0LCBjZWxsQik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHRoaXMuaXNSZXZlcnNlU2VsZWN0YWJsZSkge1xuICAgICAgICAgICAgdGhpcy5oaWdoTGlnaHRSYW5nZShjdXJyZW50LCB0aGlzLnNlbGVjdGlvbkVuZCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaGlnaExpZ2h0UmFuZ2UodGhpcy5zZWxlY3Rpb25TdGFydCwgY3VycmVudCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuY2hhbmdlSGlnaGxpZ2h0RGlyZWN0aW9uKHRoaXMub3B0cy5pc1JldmVyc2VTZWxlY3RhYmxlKTtcblxuICAgICAgICAgIGNvbnN0IGlzRGlzYWJsZWRMZWZ0ICAgPSBjZWxsLmRhdGFzZXQuZGlzYWJsZWQgPT09ICdsZWZ0JztcbiAgICAgICAgICBjb25zdCBpc0Rpc2FibGVkQ2VudGVyID0gY2VsbC5kYXRhc2V0LmRpc2FibGVkID09PSAnY2VudGVyJztcbiAgICAgICAgICBjb25zdCBpc0Rpc2FibGVkUmlnaHQgID0gY2VsbC5kYXRhc2V0LmRpc2FibGVkID09PSAncmlnaHQnO1xuXG4gICAgICAgICAgbGV0IGlzSW52YWxpZCA9ICcnO1xuXG4gICAgICAgICAgaWYgKGlzRW5kRmlyc3QgJiYgaXNEaXNhYmxlZFJpZ2h0IHx8IGlzRGlzYWJsZWRDZW50ZXIgfHwgIWlzRW5kRmlyc3QgJiYgaXNEaXNhYmxlZExlZnQpIHtcbiAgICAgICAgICAgIGlzSW52YWxpZCA9ICdpbnZhbGlkJztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBjZWxscyA9IHRoaXMuZWwucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtdmFsdWVdJyk7XG4gICAgICAgICAgbGV0IG9mZnNldENlbGw7XG5cbiAgICAgICAgICBjZWxscy5mb3JFYWNoKChlbCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGRlbGV0ZSBlbC5kYXRhc2V0LmhvdmVyZWQ7XG4gICAgICAgICAgICBkZWxldGUgZWwuZGF0YXNldC5ob3ZlcmVkT2Zmc2V0O1xuXG4gICAgICAgICAgICBpZiAoZWwgPT09IGNlbGwpIHtcbiAgICAgICAgICAgICAgb2Zmc2V0Q2VsbCA9ICh0aGlzLm9wdHMuaXNSZXZlcnNlU2VsZWN0YWJsZSkgPyBjZWxsc1tpbmRleCAtIDFdIDogY2VsbHNbaW5kZXggKyAxXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGlmIChpcyhvZmZzZXRDZWxsKSkge1xuICAgICAgICAgICAgb2Zmc2V0Q2VsbC5kYXRhc2V0LmhvdmVyZWRPZmZzZXQgPSAnJztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjZWxsLmRhdGFzZXQuaG92ZXJlZCA9IGlzSW52YWxpZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgZWwuYm9keS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW91dCcsIChlKSA9PiB7XG4gICAgICBjb25zdCBjZWxscyA9IHRoaXMuZWwucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtdmFsdWVdJyk7XG4gICAgICBjZWxscy5mb3JFYWNoKChlbCkgPT4ge1xuICAgICAgICBkZWxldGUgZWwuZGF0YXNldC5ob3ZlcmVkO1xuICAgICAgICBkZWxldGUgZWwuZGF0YXNldC5ob3ZlcmVkT2Zmc2V0O1xuICAgICAgfSk7XG5cbiAgICAgIC8qIGVzbGludCBuby1iaXR3aXNlOiBbXCJlcnJvclwiLCB7IFwiYWxsb3dcIjogW1wiJlwiXSB9XSAqL1xuICAgICAgLy8gc2ltdWxhdGUgJ21vdXNlbGVhdmUnXG4gICAgICBpZiAoIWUucmVsYXRlZFRhcmdldFxuICAgICAgICB8fCAoZS5yZWxhdGVkVGFyZ2V0ICE9PSBlbC5ib2R5ICYmICEoZWwuYm9keS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihlLnJlbGF0ZWRUYXJnZXQpXG4gICAgICAgICYgTm9kZS5ET0NVTUVOVF9QT1NJVElPTl9DT05UQUlORURfQlkpKSkge1xuICAgICAgICBpZiAodGhpcy5pc1NlbGVjdGluZykge1xuICAgICAgICAgIHRoaXMucmVtb3ZlSGlnaGxpZ2h0KCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGNoYW5nZUhpZ2hsaWdodERpcmVjdGlvbihpc1JldmVyc2UsIGRhdGVBcnJheSA9IG51bGwpIHtcbiAgICB0aGlzLmlzUmV2ZXJzZVNlbGVjdGFibGUgPSBpc1JldmVyc2U7XG5cbiAgICBpZiAoZGF0ZUFycmF5KSB7XG4gICAgICB0aGlzLnJlc2V0U2VsZWN0aW9uKCk7XG4gICAgICB0aGlzLnNlbGVjdGlvblN0YXJ0ID0gKGlzUmV2ZXJzZSkgPyBkYXRlQXJyYXkgOiBudWxsO1xuICAgICAgdGhpcy5zZWxlY3Rpb25FbmQgICA9IChpc1JldmVyc2UpID8gbnVsbCA6IGRhdGVBcnJheTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3Rpb25TdGFydCA9IHRoaXMuc2VsZWN0aW9uRW5kO1xuICAgICAgdGhpcy5zZWxlY3Rpb25FbmQgPSB0aGlzLnNlbGVjdGlvblN0YXJ0O1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdHMuc2VsZWN0YWJsZSkge1xuICAgICAgYWRkQ2xhc3ModGhpcy5lbCwgaXNSZXZlcnNlID8gc3R5bGVzLnJldmVyc2VkIDogc3R5bGVzLmRpcmVjdCk7XG4gICAgICByZW1vdmVDbGFzcyh0aGlzLmVsLCBpc1JldmVyc2UgPyBzdHlsZXMuZGlyZWN0IDogc3R5bGVzLnJldmVyc2VkKTtcbiAgICB9XG4gIH1cblxuICBzdGFydERhdGVGaXJzdEFjdGlvbihkYXRlVmFsdWUsIGNlbGwpIHtcbiAgICBpZiAodGhpcy5pc1NlbGVjdGluZyAmJiBpc0xhdGVyKHRoaXMuc2VsZWN0aW9uU3RhcnQsIGRhdGVWYWx1ZSkpIHtcbiAgICAgIHRoaXMuc2VsZWN0RW5kQWN0aW9uKGRhdGVWYWx1ZSwgY2VsbCk7XG5cbiAgICAgIGNvbnN0IGZuID0gKCkgPT4ge1xuICAgICAgICByZW1vdmVDbGFzcyh0aGlzLmVsLCBzdHlsZXMuc2VsZWN0aW5nRGlyZWN0KTtcbiAgICAgICAgY2VsbC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW91dCcsIGZuKTtcbiAgICAgIH07XG5cbiAgICAgIGNlbGwuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VvdXQnLCBmbik7XG4gICAgICB0aGlzLmlzU2VsZWN0aW5nID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVtb3ZlSGlnaGxpZ2h0KCk7XG4gICAgICBhZGRDbGFzcyh0aGlzLmVsLCBzdHlsZXMuc2VsZWN0aW5nRGlyZWN0KTtcbiAgICAgIHRoaXMuaXNTZWxlY3RpbmcgPSB0cnVlO1xuICAgICAgdGhpcy5zZWxlY3RTdGFydEFjdGlvbihkYXRlVmFsdWUsIGNlbGwpO1xuICAgICAgY2VsbC5kYXRhc2V0LmhpZ2hsaWdodGVkID0gJ2xlZnQnO1xuICAgIH1cbiAgfVxuXG4gIGVuZERhdGVGaXJzdEFjdGlvbihkYXRlVmFsdWUsIGNlbGwpIHtcbiAgICBpZiAodGhpcy5pc1NlbGVjdGluZyAmJiBpc0xhdGVyKGRhdGVWYWx1ZSwgdGhpcy5zZWxlY3Rpb25FbmQpKSB7XG4gICAgICB0aGlzLnNlbGVjdFN0YXJ0QWN0aW9uKGRhdGVWYWx1ZSwgY2VsbCk7XG5cbiAgICAgIGNvbnN0IGZuID0gKCkgPT4ge1xuICAgICAgICByZW1vdmVDbGFzcyh0aGlzLmVsLCBzdHlsZXMuc2VsZWN0aW5nUmV2ZXJzZWQpO1xuICAgICAgICBjZWxsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlb3V0JywgZm4pO1xuICAgICAgfTtcblxuICAgICAgY2VsbC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW91dCcsIGZuKTtcbiAgICAgIHRoaXMuaXNTZWxlY3RpbmcgPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZW1vdmVIaWdobGlnaHQoKTtcbiAgICAgIGFkZENsYXNzKHRoaXMuZWwsIHN0eWxlcy5zZWxlY3RpbmdSZXZlcnNlZCk7XG4gICAgICB0aGlzLmlzU2VsZWN0aW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMuc2VsZWN0RW5kQWN0aW9uKGRhdGVWYWx1ZSwgY2VsbCk7XG4gICAgICBjZWxsLmRhdGFzZXQuaGlnaGxpZ2h0ZWQgPSAncmlnaHQnO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdFN0YXJ0QWN0aW9uKGRhdGVWYWx1ZSwgY2VsbCkge1xuICAgIHRoaXMuc2VsZWN0U3RhcnQoZGF0ZVZhbHVlLCBjZWxsKTtcbiAgICB0aGlzLnN3aXRjaElucHV0Rm9jdXMoJ2VuZCcpO1xuICAgIGlmICh0aGlzLmhhc1ZhbGlkUmFuZ2UpIHtcbiAgICAgIHRoaXMuZW1pdCgnc2VsZWN0aW9uLXN0YXJ0JywgZGF0ZVRvSXNvKC4uLmRhdGVWYWx1ZSwgdHJ1ZSksIGRhdGVUb0lzbyguLi5kYXRlVmFsdWUpKTtcbiAgICAgIGlmIChpc0Z1bmN0aW9uKHRoaXMub3B0cy5vblNlbGVjdFN0YXJ0KSkge1xuICAgICAgICB0aGlzLm9wdHMub25TZWxlY3RTdGFydChkYXRlVG9Jc28oLi4uZGF0ZVZhbHVlLCB0cnVlKSwgZGF0ZVRvSXNvKC4uLmRhdGVWYWx1ZSkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNlbGVjdEVuZEFjdGlvbihkYXRlVmFsdWUsIGNlbGwpIHtcbiAgICB0aGlzLnNlbGVjdEVuZChkYXRlVmFsdWUsIGNlbGwpO1xuICAgIHRoaXMuc3dpdGNoSW5wdXRGb2N1cygnc3RhcnQnKTtcbiAgICBpZiAodGhpcy5oYXNWYWxpZFJhbmdlKSB7XG4gICAgICB0aGlzLmVtaXQoJ3NlbGVjdGlvbi1lbmQnLCBkYXRlVG9Jc28oLi4uZGF0ZVZhbHVlLCB0cnVlKSwgZGF0ZVRvSXNvKC4uLmRhdGVWYWx1ZSkpO1xuICAgICAgaWYgKGlzRnVuY3Rpb24odGhpcy5vcHRzLm9uU2VsZWN0RW5kKSkge1xuICAgICAgICB0aGlzLm9wdHMub25TZWxlY3RFbmQoZGF0ZVRvSXNvKC4uLmRhdGVWYWx1ZSwgdHJ1ZSksIGRhdGVUb0lzbyguLi5kYXRlVmFsdWUpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZW1vdmVIaWdobGlnaHQoKSB7XG4gICAgaWYgKHRoaXMuaGlnaGxpZ2h0ZWRCb3VuZHMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgeyByYW5nZSB9ID0gdGhpcy5zZWxlY3RSYW5nZSguLi50aGlzLmhpZ2hsaWdodGVkQm91bmRzKTtcbiAgICAgIHJhbmdlLm1hcCgoY2VsbCkgPT4ge1xuICAgICAgICBkZWxldGUgY2VsbC5kYXRhc2V0LmhpZ2hsaWdodGVkO1xuICAgICAgICBkZWxldGUgY2VsbC5kYXRhc2V0LmludmFsaWQ7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5kZXN0cm95VG9vbHRpcCgpO1xuXG4gICAgICB0aGlzLmhhc1ZhbGlkUmFuZ2UgICAgID0gdHJ1ZTtcbiAgICAgIHRoaXMuaGlnaGxpZ2h0ZWRCb3VuZHMgPSBbXTtcbiAgICB9XG4gIH1cblxuICBkZXN0cm95VG9vbHRpcCgpIHtcbiAgICBpZiAoaXModGhpcy50b29sdGlwUG9wcGVyKSkge1xuICAgICAgdGhpcy50b29sdGlwUG9wcGVyLmRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICBpZiAoaXModGhpcy5kb20udG9vbHRpcCkpIHtcbiAgICAgIGRlc3Ryb3lFbGVtZW50KHRoaXMuZG9tLnRvb2x0aXApO1xuICAgIH1cbiAgfVxuXG4gIGhpZ2hMaWdodFJhbmdlKHN0YXJ0LCBlbmQpIHtcbiAgICBjb25zdCB7IHJhbmdlLCBpc1ZhbGlkIH0gPSB0aGlzLnNlbGVjdFJhbmdlKHN0YXJ0LCBlbmQpO1xuICAgIGNvbnN0IHsgb3B0cyB9ICAgICAgICAgICA9IHRoaXM7XG4gICAgbGV0IHsgbWluU3RheSwgbWF4U3RheSB9ID0gb3B0cztcbiAgICBsZXQgaW52YWxpZFJhbmdlTWVzc2FnZTtcblxuICAgIGlmIChpc0FycmF5KHJhbmdlKSkge1xuICAgICAgaWYgKG9wdHMucmVudGFsSWQpIHtcbiAgICAgICAgaWYgKCFvcHRzLmFsbG93U2hvcnRlck1pblN0YXlTZWxlY3Rpb24pIHtcbiAgICAgICAgICAvLyBnZXQgdGhlIGJpZ2dlc3QgbWluU3RheSB2YWx1ZSBpbiB0aGUgcmFuZ2VcbiAgICAgICAgICBtaW5TdGF5ID0gTWF0aC5tYXgoLi4ucmFuZ2UubWFwKGZ1bmN0aW9uKGNlbGwpIHtcbiAgICAgICAgICAgIHJldHVybiBjZWxsLmRhdGFzZXQubWluU3RheSB8fCBtaW5TdGF5O1xuICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghb3B0cy5hbGxvd0xvbmdlck1heFN0YXlTZWxlY3Rpb24pIHtcbiAgICAgICAgICAvLyBnZXQgdGhlIGJpZ2dlc3QgbWF4U3RheSB2YWx1ZSBpbiB0aGUgcmFuZ2VcbiAgICAgICAgICBtYXhTdGF5ID0gTWF0aC5tYXgoLi4ucmFuZ2UubWFwKGZ1bmN0aW9uKGNlbGwpIHtcbiAgICAgICAgICAgIHJldHVybiBjZWxsLmRhdGFzZXQubWF4U3RheSB8fCBtYXhTdGF5O1xuICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBjaGVjayB0aGF0IHJhbmdlIGlzIHZhbGlkIGFuZCBsb25nZXIgdGhhbiBtaW5TdGF5IGFuZCBzaG9ydGVyIHRoYW4gbWF4U3RheVxuICAgICAgY29uc3QgaGFzVmFsaWREYXlzICAgID0gb3B0cy5yZW50YWxJZCA/IGlzVmFsaWQgOiB0cnVlO1xuICAgICAgY29uc3QgaGFzVmFsaWRNaW5TdGF5ID0gcmFuZ2UubGVuZ3RoID4gbWluU3RheTtcbiAgICAgIGNvbnN0IGhhc1ZhbGlkTWF4U3RheSA9IHJhbmdlLmxlbmd0aCA8IG1heFN0YXk7XG5cbiAgICAgIHRoaXMuaGFzVmFsaWRSYW5nZSA9IGhhc1ZhbGlkRGF5cyAmJiBoYXNWYWxpZE1pblN0YXkgJiYgaGFzVmFsaWRNYXhTdGF5O1xuXG4gICAgICBpZiAoIWhhc1ZhbGlkTWluU3RheSkge1xuICAgICAgICBpbnZhbGlkUmFuZ2VNZXNzYWdlID0gdEZvcm1hdHRlcihtaW5TdGF5LCB0aGlzLmxvY2FsZS5oYXNJbnZhbGlkTWluU3RheSk7XG4gICAgICB9XG5cbiAgICAgIGlmICghaGFzVmFsaWRNYXhTdGF5KSB7XG4gICAgICAgIGludmFsaWRSYW5nZU1lc3NhZ2UgPSB0Rm9ybWF0dGVyKG1heFN0YXksIHRoaXMubG9jYWxlLmhhc0ludmFsaWRNYXhTdGF5KTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFoYXNWYWxpZERheXMpIHtcbiAgICAgICAgaW52YWxpZFJhbmdlTWVzc2FnZSA9IHRoaXMubG9jYWxlLmhhc0ludmFsaWREYXlzO1xuICAgICAgfVxuXG4gICAgICByYW5nZS5tYXAoKGNlbGwsIGluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IGxlZnQgPSBpbmRleCA9PT0gMDtcbiAgICAgICAgY29uc3QgcmlnaHQgPSBpbmRleCArIDEgPT09IHJhbmdlLmxlbmd0aDtcblxuICAgICAgICBpZiAodGhpcy5oYXNWYWxpZFJhbmdlKSB7XG4gICAgICAgICAgaWYgKGxlZnQpIHtcbiAgICAgICAgICAgIGNlbGwuZGF0YXNldC5oaWdobGlnaHRlZCA9ICdsZWZ0JztcbiAgICAgICAgICB9IGVsc2UgaWYgKHJpZ2h0KSB7XG4gICAgICAgICAgICBjZWxsLmRhdGFzZXQuaGlnaGxpZ2h0ZWQgPSAncmlnaHQnO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjZWxsLmRhdGFzZXQuaGlnaGxpZ2h0ZWQgPSAnY2VudGVyJztcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKGxlZnQpIHtcbiAgICAgICAgICAgIGNlbGwuZGF0YXNldC5pbnZhbGlkID0gJ2xlZnQnO1xuICAgICAgICAgIH0gZWxzZSBpZiAocmlnaHQpIHtcbiAgICAgICAgICAgIGNlbGwuZGF0YXNldC5pbnZhbGlkID0gJ3JpZ2h0JztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2VsbC5kYXRhc2V0LmludmFsaWQgPSAnY2VudGVyJztcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0b29sdGlwUG9zaXRpb24gPSAodGhpcy5pc1JldmVyc2VTZWxlY3RhYmxlKSA/IGxlZnQgOiByaWdodDtcblxuICAgICAgICBpZiAodG9vbHRpcFBvc2l0aW9uICYmIHRoaXMuZWwuY29udGFpbnMoY2VsbCkgJiYgIXRoaXMuaGFzVmFsaWRSYW5nZSkge1xuICAgICAgICAgIHRoaXMuZG9tLnRvb2x0aXAgPSB0aGlzLmVsLmFwcGVuZENoaWxkKGVsZW1lbnRGcm9tU3RyaW5nKHRlbXBsYXRlcy50b29sdGlwKSk7XG4gICAgICAgICAgdGhpcy5kb20udG9vbHRpcC5xdWVyeVNlbGVjdG9yKCdzcGFuJykuaW5uZXJIVE1MID0gaW52YWxpZFJhbmdlTWVzc2FnZTtcblxuICAgICAgICAgIHRoaXMudG9vbHRpcFBvcHBlciA9IHdpbmRvdy5Qb3BwZXIuY3JlYXRlUG9wcGVyKGNlbGwsIHRoaXMuZG9tLnRvb2x0aXAsIHtcbiAgICAgICAgICAgIHBsYWNlbWVudDogJ3RvcCcsXG4gICAgICAgICAgICBtb2RpZmllcnM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdmbGlwJyxcbiAgICAgICAgICAgICAgICBlbmFibGVkOiBmYWxzZVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ29mZnNldCcsXG4gICAgICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICAgICAgb2Zmc2V0OiBbMCwgMF1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjZWxsO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuaGlnaGxpZ2h0ZWRCb3VuZHMgPSBbc3RhcnQsIGVuZF07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuaGFzVmFsaWRSYW5nZTtcbiAgfVxuXG4gIC8qKiBSZXNldHMgc2VsZWN0aW9uLCByZW1vdmVzIGhpZ2hsaWdodHNcbiAgICogQHB1YmxpY1xuICAgKiBAcmV0dXJucyB7Q2FsZW5kYXJ9XG4gICAqL1xuICByZXNldFNlbGVjdGlvbigpIHtcbiAgICB0aGlzLnJlbW92ZUhpZ2hsaWdodCgpO1xuICAgIHRoaXMuaXNTZWxlY3RpbmcgPSBmYWxzZTtcblxuICAgIHRoaXMuZW1pdCgnc2VsZWN0aW9uLXJlc2V0JywgdGhpcy5zZWxlY3Rpb25TdGFydCwgdGhpcy5zZWxlY3Rpb25FbmQpO1xuICAgIGlmIChpc0Z1bmN0aW9uKHRoaXMub3B0cy5vbkNsZWFyU2VsZWN0aW9uKSkge1xuICAgICAgdGhpcy5vcHRzLm9uQ2xlYXJTZWxlY3Rpb24odGhpcy5zZWxlY3Rpb25TdGFydCwgdGhpcy5zZWxlY3Rpb25FbmQpO1xuICAgIH1cblxuICAgIHRoaXMuc2VsZWN0aW9uU3RhcnQgPSBudWxsO1xuICAgIHRoaXMuc2VsZWN0aW9uRW5kICAgPSBudWxsO1xuXG4gICAgaWYgKHRoaXMuY2VsbEEpIHtcbiAgICAgIHRoaXMuY2VsbEEgPSBudWxsO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNlbGxCKSB7XG4gICAgICB0aGlzLmNlbGxCID0gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRzLmlzRHJvcERvd24gJiYgdGhpcy5vcHRzLmVsU3RhcnRBdCAmJiB0aGlzLm9wdHMuZWxFbmRBdCkge1xuICAgICAgdGhpcy5vcHRzLmVsU3RhcnRBdC52YWx1ZSA9IG51bGw7XG4gICAgICB0aGlzLm9wdHMuZWxFbmRBdC52YWx1ZSAgID0gbnVsbDtcblxuICAgICAgaWYgKHRoaXMub3B0cy5pc1NpbmdsZUlucHV0KSB7XG4gICAgICAgIHRoaXMub3B0cy5lbFNpbmdsZUlucHV0LnZhbHVlID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHNlbGVjdFJhbmdlKHN0YXJ0LCBlbmQpIHtcbiAgICBpZiAoaXNMYXRlcihzdGFydCwgZW5kKSkge1xuICAgICAgcmV0dXJuIHRoaXMuY1RyZWUuc2VsZWN0UmFuZ2Uoc3RhcnQsIGVuZCk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICByYW5nZTogbnVsbCxcbiAgICAgIGlzVmFsaWQ6IGZhbHNlXG4gICAgfTtcbiAgfVxuXG4gIHNlbGVjdFN0YXJ0KGRhdGVWYWx1ZSwgY2VsbCkge1xuICAgIHRoaXMuc2VsZWN0aW9uU3RhcnQgPSBkYXRlVmFsdWU7XG5cbiAgICBpZiAoY2VsbCkge1xuICAgICAgdGhpcy5jZWxsQSA9IGNlbGw7XG4gICAgfVxuXG4gICAgdGhpcy52YWx1ZVRvSW5wdXQoJ3N0YXJ0JywgZGF0ZVZhbHVlKTtcbiAgfVxuXG4gIHNlbGVjdEVuZChkYXRlVmFsdWUsIGNlbGwpIHtcbiAgICB0aGlzLnNlbGVjdGlvbkVuZCA9IGRhdGVWYWx1ZTtcblxuICAgIGlmIChjZWxsKSB7XG4gICAgICB0aGlzLmNlbGxCID0gY2VsbDtcbiAgICB9XG5cbiAgICB0aGlzLnZhbHVlVG9JbnB1dCgnZW5kJywgZGF0ZVZhbHVlKTtcbiAgfVxuXG4gIGNyZWF0ZVRyZWUoeWVhclN0YXJ0LCBtb250aFN0YXJ0LCB0aW1lcykge1xuICAgIGNvbnN0IG1vbnRocyA9IFtdO1xuICAgIGNvbnN0IHRyZWUgICA9IHt9O1xuICAgIGxldCBtb250aEVuZCA9IG1vbnRoU3RhcnQ7XG4gICAgbGV0IHllYXJFbmQgID0geWVhclN0YXJ0O1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aW1lczsgaSArPSAxKSB7XG4gICAgICBjb25zdCBtRG9tID0gdGhpcy5kb21Nb250aCh5ZWFyRW5kLCBtb250aEVuZCk7XG5cbiAgICAgIG1vbnRocy5wdXNoKG1Eb20pO1xuXG4gICAgICBpZiAoIXRyZWVbeWVhckVuZF0pIHtcbiAgICAgICAgdHJlZVt5ZWFyRW5kXSA9IHt9O1xuICAgICAgfVxuXG4gICAgICBpZiAoIXRyZWVbeWVhckVuZF1bbW9udGhFbmRdKSB7XG4gICAgICAgIHRyZWVbeWVhckVuZF1bbW9udGhFbmRdID0gbURvbS5kYXlFbGVtZW50cyB8fCBbXTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1vbnRoRW5kID4gMTApIHtcbiAgICAgICAgbW9udGhFbmQgPSAwO1xuICAgICAgICB5ZWFyRW5kICs9IDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtb250aEVuZCArPSAxO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB0cmVlLFxuICAgICAgeWVhckVuZCxcbiAgICAgIG1vbnRoRW5kLFxuICAgICAgbW9udGhzXG4gICAgfTtcbiAgfVxuXG4gIGRvbU1vbnRoKHllYXIsIG1vbnRoKSB7XG4gICAgY29uc3QgbW9udGhEb20gPSBlbGVtZW50RnJvbVN0cmluZyh0ZW1wbGF0ZXMubW9udGgpO1xuXG4gICAgbW9udGhEb20ucXVlcnlTZWxlY3RvcihgLiR7c3R5bGVzLnRhYmxlSGVhZGVyfSB0cmApLmlubmVySFRNTCA9IHRoaXMuaGVhZGVyVGVtcGxhdGVTdHJpbmcoKTtcbiAgICBtb250aERvbS5xdWVyeVNlbGVjdG9yKGAuJHtzdHlsZXMuY2FwdGlvbn1gKS5pbm5lckhUTUwgICAgICAgID0gYCR7dGhpcy5sb2NhbGUubG9uZ01vbnRoTmFtZXNbbW9udGhdfSAke3llYXJ9YDtcblxuICAgIG1vbnRoRG9tLmJvZHkgICAgICAgICAgID0gbW9udGhEb20ucXVlcnlTZWxlY3RvcihgLiR7c3R5bGVzLmJvZHl9YCk7XG4gICAgbW9udGhEb20uYm9keS5pbm5lckhUTUwgPSB0aGlzLmRheXNUZW1wbGF0ZVN0cmluZyh5ZWFyLCBtb250aCk7XG5cbiAgICBtb250aERvbS5tb250aCAgICAgICA9IG1vbnRoO1xuICAgIG1vbnRoRG9tLnllYXIgICAgICAgID0geWVhcjtcbiAgICBtb250aERvbS5kYXlFbGVtZW50cyA9IFtdLnNsaWNlLmNhbGwobW9udGhEb20ucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtdmFsdWVdJykpO1xuXG4gICAgcmV0dXJuIG1vbnRoRG9tO1xuICB9XG5cbiAgaGVhZGVyVGVtcGxhdGVTdHJpbmcoKSB7XG4gICAgLy8ganVzdCB0byBtYWtlIGxpZmUgZWFzaWVyIHdpdGggc3RhcnQgb2YgdGhlIHdlZWsgY2FsY3VsYXRpb25cbiAgICBjb25zdCBoZWFkZXIgICAgICAgICAgICAgICAgID0gW107XG4gICAgY29uc3Qgd2Vla2RheXNMYWJlbHNFeHRlbmRlZCA9IHRoaXMubG9jYWxlLnNob3J0V2Vla2RheU5hbWVzLmNvbmNhdCh0aGlzLmxvY2FsZS5zaG9ydFdlZWtkYXlOYW1lcyk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMub3B0cy5kYXlzUGVyV2VlazsgaSArPSAxKSB7XG4gICAgICBoZWFkZXIucHVzaCh0ZW1wbGF0ZXMud2Vla0RheUxhYmVsKHdlZWtkYXlzTGFiZWxzRXh0ZW5kZWRbaSArIHRoaXMub3B0cy5zdGFydE9mV2Vla10pKTtcbiAgICB9XG4gICAgcmV0dXJuIGhlYWRlci5qb2luKCcnKTtcbiAgfVxuXG4gIGRheXNUZW1wbGF0ZVN0cmluZyh5ZWFyLCBtb250aCkge1xuICAgIGNvbnN0IHN0YXJ0T2ZNb250aCAgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgMSkuZ2V0RGF5KCk7XG4gICAgY29uc3QgZGF5c0luTW9udGggICA9IG1vbnRoTGVuZ3RoKHllYXIsIG1vbnRoKTtcbiAgICBjb25zdCByb3dUZW1wbGF0ZSAgID0gdGVtcGxhdGVzLndlZWtSb3c7XG4gICAgY29uc3QgbW9udGhUZW1wbGF0ZSA9IFtdO1xuICAgIGNvbnN0IHdlZWtTaGlmdCAgICAgPSAodGhpcy5vcHRzLmRheXNQZXJXZWVrIC0gdGhpcy5vcHRzLnN0YXJ0T2ZXZWVrKTtcblxuICAgIGxldCByb3dzICAgICAgICAgICAgICAgPSA1O1xuICAgIGxldCB3ZWVrU2hpZnRDb3JyZWN0ZWQgPSBzdGFydE9mTW9udGggKyB3ZWVrU2hpZnQ7XG4gICAgbGV0IGRheUNvdW50ZXIgICAgICAgICA9IDA7XG4gICAgbGV0IGRheU9mTW9udGggICAgICAgICA9IDE7XG5cbiAgICAvLyBkb24ndCByZW5kZXIgZnVsbCBlbXB0eSB3ZWVrXG4gICAgaWYgKHdlZWtTaGlmdENvcnJlY3RlZCA+PSB0aGlzLm9wdHMuZGF5c1BlcldlZWspIHtcbiAgICAgIHdlZWtTaGlmdENvcnJlY3RlZCAtPSB0aGlzLm9wdHMuZGF5c1BlcldlZWs7XG4gICAgfVxuXG4gICAgLy8gdHJ5IHRvIGZpZ3VyZSBvdXQgaWYgNSByb3dzIGlzIGVub3VnaCBmb3IgdGhlIG1vbnRoXG4gICAgaWYgKHJvd3MgKiB0aGlzLm9wdHMuZGF5c1BlcldlZWsgPCB3ZWVrU2hpZnRDb3JyZWN0ZWQgKyBkYXlzSW5Nb250aCkge1xuICAgICAgcm93cyA9IDY7XG4gICAgfVxuXG4gICAgLy8gZm9yIGVhY2ggd2VlayAoNSBvciA2KVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcm93czsgaSArPSAxKSB7XG4gICAgICBjb25zdCB3ZWVrID0gW107XG4gICAgICAvLyBvcGVuIHRhZyA8dHI+XG4gICAgICB3ZWVrLnB1c2gocm93VGVtcGxhdGUoaSkub3Blbik7XG5cbiAgICAgIC8vIHB1c2ggZGF5cyBpbiB3ZWVrXG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMub3B0cy5kYXlzUGVyV2VlazsgaiArPSAxKSB7XG4gICAgICAgIC8vIHB1c2hpbmcgYWN0dWFsIGRheXMgMS4uLmRheXNJbk1vbnRoXG4gICAgICAgIGlmICgoZGF5Q291bnRlciA+PSB3ZWVrU2hpZnRDb3JyZWN0ZWQpICYmIGRheU9mTW9udGggPD0gZGF5c0luTW9udGgpIHtcbiAgICAgICAgICB3ZWVrLnB1c2godGhpcy5kYXlUZW1wbGF0ZVN0cmluZyh5ZWFyLCBtb250aCwgZGF5T2ZNb250aCkpO1xuICAgICAgICAgIGRheU9mTW9udGggKz0gMTtcbiAgICAgICAgICAvLyBwdXNoaW5nIHBsYWNlaG9sZGVycyBpbnN0ZWFkIG9mIGRheXNcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB3ZWVrLnB1c2godGVtcGxhdGVzLndlZWtEYXlQbGFjZWhvbGRlcik7XG4gICAgICAgIH1cblxuICAgICAgICBkYXlDb3VudGVyICs9IDE7XG4gICAgICB9XG4gICAgICAvLyBjbG9zZSB0YWcgPC90cj4gb2Ygd2Vla1xuICAgICAgd2Vlay5wdXNoKHJvd1RlbXBsYXRlKCkuY2xvc2UpO1xuICAgICAgLy8gcHVzaCBjb21wbGV0ZWQgd2VlayB0byBtb250aCB0ZW1wbGF0ZVxuICAgICAgbW9udGhUZW1wbGF0ZS5wdXNoKHdlZWsuam9pbignJykpO1xuICAgIH1cblxuICAgIHJldHVybiBtb250aFRlbXBsYXRlLmpvaW4oJycpO1xuICB9XG5cbiAgZGF5VGVtcGxhdGVTdHJpbmcoeWVhciwgbW9udGgsIGRheU9mTW9udGgpIHtcbiAgICBjb25zdCB7IGNUcmVlIH0gICAgICA9IHRoaXM7XG4gICAgY29uc3QgcmF0ZSAgICAgICAgICAgPSB0aGlzLm9wdHMuc2hvd1JhdGVzID8gY1RyZWUuZ2V0RGF5UHJvcGVydHkoeWVhciwgbW9udGgsIGRheU9mTW9udGgsICdyYXRlJykgOiAwO1xuICAgIGNvbnN0IG1pblN0YXkgICAgICAgID0gY1RyZWUuZ2V0RGF5UHJvcGVydHkoeWVhciwgbW9udGgsIGRheU9mTW9udGgsICdtaW5TdGF5Jyk7XG4gICAgY29uc3QgbWF4U3RheSAgICAgICAgPSBjVHJlZS5nZXREYXlQcm9wZXJ0eSh5ZWFyLCBtb250aCwgZGF5T2ZNb250aCwgJ21heFN0YXknKTtcblxuICAgIGxldCBpc0Rpc2FibGVkICAgICAgID0gY1RyZWUuaXNEYXlEaXNhYmxlZCh5ZWFyLCBtb250aCwgZGF5T2ZNb250aCk7XG4gICAgbGV0IGlzQXZhaWxhYmxlT3V0ICAgPSBjVHJlZS5nZXREYXlQcm9wZXJ0eSh5ZWFyLCBtb250aCwgZGF5T2ZNb250aCwgJ2lzQXZhaWxhYmxlT3V0Jyk7XG4gICAgbGV0IGlzTW9ybmluZ0Jsb2NrZWQgPSBjVHJlZS5nZXREYXlQcm9wZXJ0eSh5ZWFyLCBtb250aCwgZGF5T2ZNb250aCwgJ2lzTW9ybmluZ0Jsb2NrZWQnKTtcblxuICAgIGNvbnN0IHsgY3VycmVudERhdGUgfSA9IHRoaXMub3B0cztcbiAgICBjb25zdCBkYXRlQXJyYXkgICAgICAgPSBbeWVhciwgbW9udGgsIGRheU9mTW9udGhdO1xuICAgIGNvbnN0IGlzQ3VycmVudERheSAgICA9IGlzQ3VycmVudChkYXRlQXJyYXksIGN1cnJlbnREYXRlKTtcblxuICAgIC8vIGRpc2FibGUgcGFzdCBkYXRlc1xuICAgIGlmIChpc0xhdGVyKGRhdGVBcnJheSwgY3VycmVudERhdGUpKSB7XG4gICAgICBpc0Rpc2FibGVkICAgICAgICA9IHRydWU7XG4gICAgICBpc01vcm5pbmdCbG9ja2VkICA9IG51bGw7XG4gICAgICBpc0F2YWlsYWJsZU91dCAgICA9IG51bGw7XG4gICAgfVxuXG4gICAgLy8gZGlzYWJsZSBjdXJyZW50IGRheSBtb3JuaW5nXG4gICAgaWYgKGlzQ3VycmVudERheSkge1xuICAgICAgaWYgKCEoaXNEaXNhYmxlZCAmJiBpc0F2YWlsYWJsZU91dCA9PT0gbnVsbCAmJiBpc01vcm5pbmdCbG9ja2VkID09PSBudWxsKSkge1xuICAgICAgICBpc01vcm5pbmdCbG9ja2VkICA9IHRydWU7XG5cbiAgICAgICAgaWYgKGlzQXZhaWxhYmxlT3V0ID09PSBudWxsKSB7XG4gICAgICAgICAgaXNBdmFpbGFibGVPdXQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gaWYgdGhlcmUgaXMgbm90IHJlbnRhbElkIGFuZCBubyBtYXBzLCBqdXN0IHJlbmRlciBwbGFpbiBjYWxlbmRhclxuICAgIGlmICghdGhpcy5vcHRzLnJlbnRhbElkIHx8IHRoaXMub3B0cy5lbmFibGVBbGxEYXlzKSB7XG4gICAgICBpZiAoaXNMYXRlcihjdXJyZW50RGF0ZSwgZGF0ZUFycmF5KSkge1xuICAgICAgICBpc0Rpc2FibGVkICAgICAgICA9IGZhbHNlO1xuICAgICAgICBpc0F2YWlsYWJsZU91dCAgICA9IHRydWU7XG4gICAgICAgIGlzTW9ybmluZ0Jsb2NrZWQgID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGlmIChpc0N1cnJlbnREYXkpIHtcbiAgICAgICAgaXNEaXNhYmxlZCAgICAgICAgPSB0cnVlO1xuICAgICAgICBpc01vcm5pbmdCbG9ja2VkICA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgaXNBdmFpbGFibGVJbiA9IGlzTW9ybmluZ0Jsb2NrZWQgPT0gZmFsc2U7XG5cbiAgICBpZiAoaXNEaXNhYmxlZCAmJiBpc0F2YWlsYWJsZUluKSB7XG4gICAgICBpc0Rpc2FibGVkID0gJ2xlZnQnO1xuICAgIH0gZWxzZSBpZiAoaXNNb3JuaW5nQmxvY2tlZCkge1xuICAgICAgaXNEaXNhYmxlZCA9ICdyaWdodCc7XG4gICAgfSBlbHNlIGlmIChpc0Rpc2FibGVkKSB7XG4gICAgICBpc0Rpc2FibGVkID0gJ2NlbnRlcic7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRlbXBsYXRlcy53ZWVrRGF5KFxuICAgICAgZGF5T2ZNb250aCxcbiAgICAgIGlzRGlzYWJsZWQsXG4gICAgICBpc0F2YWlsYWJsZUluLFxuICAgICAgaXNBdmFpbGFibGVPdXQsXG4gICAgICBpc0N1cnJlbnREYXksXG4gICAgICBtaW5TdGF5LFxuICAgICAgdGhpcy5vcHRzLnNob3dNaW5TdGF5ID8gdEZvcm1hdHRlcihtaW5TdGF5LCB0aGlzLmxvY2FsZS5taW5TdGF5KSA6IGZhbHNlLFxuICAgICAgbWF4U3RheSxcbiAgICAgIHRoaXMub3B0cy5zaG93TWF4U3RheSA/IHRGb3JtYXR0ZXIobWF4U3RheSwgdGhpcy5sb2NhbGUubWF4U3RheSkgOiBmYWxzZSxcbiAgICAgIHJhdGUsXG4gICAgICBjdXJyZW5jeUZvcm1hdHRlcihNYXRoLnJvdW5kKHJhdGUpLCB0aGlzLm9wdHMubGFuZywgdGhpcy5vcHRzLmN1cnJlbmN5IHx8IHRoaXMubG9jYWxlLmN1cnJlbmN5KVxuICAgICk7XG4gIH1cblxuICBkZXN0cm95TW9udGhzKCkge1xuICAgIGlmICh0aGlzLmRvbSAmJiBpc0FycmF5KHRoaXMuZG9tLm1vbnRocykpIHtcbiAgICAgIHRoaXMuZG9tLm1vbnRocy5tYXAoKG0pID0+IGRlc3Ryb3lFbGVtZW50KG0pKTtcbiAgICAgIHRoaXMuZGVzdHJveVRvb2x0aXAoKTtcbiAgICB9XG4gIH1cblxuICBkZXN0cm95KCkge1xuICAgIHJldHVybiBkZXN0cm95RWxlbWVudCh0aGlzLmVsKTtcbiAgfVxuXG4gIGxvYWRNYXBzKGlkKSB7XG4gICAgdGhpcy5sb2dnZXIoJ2xvYWRpbmcgbWFwcycpO1xuICAgIHRoaXMudG9nZ2xlTG9hZGluZygpO1xuXG4gICAgY29uc3Qgb25TdWNjZXNzID0gKG1hcHMpID0+IHtcbiAgICAgIGlmIChpc0FycmF5KG1hcHMuZGF0YSkgJiYgbWFwcy5kYXRhWzBdLmF0dHJpYnV0ZXMpIHtcbiAgICAgICAgaWYgKHRoaXMub3B0cy5kaXNhYmxlQXZhaWxhYml0eU1hcCkge1xuICAgICAgICAgIG1hcHMuZGF0YVswXS5hdHRyaWJ1dGVzLmF2YWlsYWJpbGl0eSA9IG1hcHMuZGF0YVswXS5hdHRyaWJ1dGVzLmF2YWlsYWJpbGl0eS5yZXBsYWNlKC9bMC05XS9nLCAnMCcpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub3B0cy5jdXJyZW5jeSA9IHRoaXMub3B0cy5jdXJyZW5jeSB8fCBtYXBzLmRhdGFbMF0uYXR0cmlidXRlcy5jdXJyZW5jeTtcbiAgICAgICAgdGhpcy5hZGRNYXBzKG1hcHMuZGF0YVswXS5hdHRyaWJ1dGVzKTtcbiAgICAgICAgdGhpcy5tYXBzTG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy50b2dnbGVMb2FkaW5nKCk7XG4gICAgICAgIHRoaXMuZW1pdCgnbWFwcy1sb2FkZWQnLCBtYXBzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudG9nZ2xlTG9hZGluZygpO1xuICAgICAgICB0aGlzLmxvZ2dlcignZXhwZWN0cyBqc29uLWFwaSBkYXRhIGZvcm1hdCcsICdlcnJvcicpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBvbkVycm9yID0gKCkgPT4ge1xuICAgICAgdGhpcy50b2dnbGVMb2FkaW5nKCk7XG4gICAgICB0aGlzLmVtaXQoJ21hcHMtZXJyb3InKTtcbiAgICAgIHRoaXMubG9nZ2VyKCdTZXJ2ZXIgZXJyb3IgaGFwcGVuZWQnLCAnZXJyb3InKTtcbiAgICB9O1xuXG4gICAgZmV0Y2godGhpcy5vcHRzLnJlbnRhbFVybChpZCkpXG4gICAgICAudGhlbigocmVzcG9uc2UpID0+IHJlc3BvbnNlLmpzb24oKSlcbiAgICAgIC50aGVuKG9uU3VjY2VzcylcbiAgICAgIC5jYXRjaChvbkVycm9yKTtcbiAgfVxuXG4gIGNvbXBsZXRlU2VsZWN0aW9uKCkge1xuICAgIGlmICh0aGlzLm9wdHMuaXNTaW5nbGVJbnB1dCkge1xuICAgICAgY29uc3Qgc2luZ2xlSW5wdXREYXRlRm9ybWF0ID0gdGhpcy5zaW5nbGVJbnB1dERhdGVGb3JtYXQgfHwgdGhpcy5sb2NhbGUuZm9ybWF0RGF0ZTtcblxuICAgICAgY29uc3QgZGF0ZVN0YXJ0ID0gc3RyZnRpbWUoZGF0ZVRvSXNvKC4uLnRoaXMuc2VsZWN0aW9uU3RhcnQpLCBzaW5nbGVJbnB1dERhdGVGb3JtYXQsIHRoaXMubG9jYWxlKTtcbiAgICAgIGNvbnN0IGRhdGVFbmQgICA9IHN0cmZ0aW1lKGRhdGVUb0lzbyguLi50aGlzLnNlbGVjdGlvbkVuZCksIHNpbmdsZUlucHV0RGF0ZUZvcm1hdCwgdGhpcy5sb2NhbGUpO1xuXG4gICAgICB0aGlzLm9wdHMuZWxTaW5nbGVJbnB1dC52YWx1ZSA9IGAke2RhdGVTdGFydH0gJHt0aGlzLm9wdHMuc2luZ2xlSW5wdXRTZXBhcmF0b3J9ICR7ZGF0ZUVuZH1gO1xuICAgIH1cblxuICAgIHRoaXMuZW1pdCgnc2VsZWN0aW9uLWNvbXBsZXRlZCcsIHRoaXMuc2VsZWN0aW9uU3RhcnQsIHRoaXMuc2VsZWN0aW9uRW5kKTtcbiAgICBpZiAoaXNGdW5jdGlvbih0aGlzLm9wdHMub25TZWxlY3Rpb25Db21wbGV0ZWQpKSB7XG4gICAgICB0aGlzLm9wdHMub25TZWxlY3Rpb25Db21wbGV0ZWQoXG4gICAgICAgIGRhdGVUb0lzbyguLi50aGlzLnNlbGVjdGlvblN0YXJ0LCB0cnVlKSwgZGF0ZVRvSXNvKC4uLnRoaXMuc2VsZWN0aW9uRW5kLCB0cnVlKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBpbml0Q2FsZW5kYXJEcm9wKCkge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBlbGVtZW50RnJvbVN0cmluZygnPGRpdj48L2Rpdj4nKTtcbiAgICB0aGlzLmVsVGFyZ2V0ID0gdGhpcy5vcHRzLmVsO1xuICAgIHRoaXMuZWwgICAgICAgPSBlbGVtZW50O1xuXG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbGVtZW50KTtcblxuICAgIHRoaXMub3B0cy5lbFN0YXJ0QXQgICAgID0gdGhpcy5vcHRzLmVsU3RhcnRBdCB8fCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAuJHt0aGlzLkNTU19QUkVGSVh9X19zdGFydC1hdGApO1xuICAgIHRoaXMub3B0cy5lbEVuZEF0ICAgICAgID0gdGhpcy5vcHRzLmVsRW5kQXQgfHwgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgLiR7dGhpcy5DU1NfUFJFRklYfV9fZW5kLWF0YCk7XG4gICAgdGhpcy5vcHRzLmVsU2luZ2xlSW5wdXQgPSB0aGlzLm9wdHMuZWxTaW5nbGVJbnB1dCB8fCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAuJHt0aGlzLkNTU19QUkVGSVh9X19zaW5nbGUtaW5wdXRgKTtcblxuICAgIGlmICh0aGlzLm9wdHMuaGlkZGVuRWxGb3JtYXQpIHtcbiAgICAgIFt0aGlzLm9wdHMuZWxTdGFydEF0LCB0aGlzLm9wdHMuZWxFbmRBdF0uZm9yRWFjaCgoaW5wdXQsIGkpID0+IHtcbiAgICAgICAgY29uc3QgaGlkZGVuSW5wdXQgPSBpbnB1dC5jbG9uZU5vZGUodHJ1ZSk7XG4gICAgICAgIGlucHV0LnBhcmVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoaGlkZGVuSW5wdXQpO1xuICAgICAgICBpbnB1dC5yZW1vdmVBdHRyaWJ1dGUoJ25hbWUnKTtcbiAgICAgICAgaGlkZGVuSW5wdXQuY2xhc3NOYW1lID0gJyc7XG4gICAgICAgIGhpZGRlbklucHV0LmhpZGRlbiAgICA9IHRydWU7XG5cbiAgICAgICAgKGkpID8gdGhpcy5oaWRkZW5FbEVuZEF0ID0gaGlkZGVuSW5wdXQgOiB0aGlzLmhpZGRlbkVsU3RhcnRBdCA9IGhpZGRlbklucHV0O1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3B0cy5pc1NpbmdsZUlucHV0KSB7XG4gICAgICB0aGlzLm9wdHMuZWxTaW5nbGVJbnB1dC5yZWFkT25seSA9IHRydWU7XG5cbiAgICAgIFt0aGlzLm9wdHMuZWxTdGFydEF0LCB0aGlzLm9wdHMuZWxFbmRBdF0uZm9yRWFjaCgoaW5wdXQpID0+IHtcbiAgICAgICAgaW5wdXQuaGlkZGVuID0gdHJ1ZTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGFkZENsYXNzKHRoaXMuZWwsIHN0eWxlcy5kcm9wQmFzaWMpO1xuXG4gICAgY29uc3QgY2FsRHJvcCA9IHdpbmRvdy5Qb3BwZXIuY3JlYXRlUG9wcGVyKHRoaXMuZWxUYXJnZXQsIHRoaXMuZWwsIHtcbiAgICAgIHBsYWNlbWVudDogdGhpcy5vcHRzLmRyb3BQbGFjZW1lbnQsXG4gICAgICBoaWRlOiB0cnVlXG4gICAgfSk7XG5cbiAgICBjb25zdCBvcGVuRHJvcCA9IChpbnB1dCwgaXNSZXZlcnNlZCkgPT4ge1xuICAgICAgdGhpcy5zd2l0Y2hJbnB1dEZvY3VzKGlucHV0KTtcbiAgICAgIHRoaXMuY2hhbmdlU2VsZWN0aW9uT3JkZXIoaXNSZXZlcnNlZCk7XG5cbiAgICAgIGlmICghaGFzQ2xhc3ModGhpcy5lbCwgc3R5bGVzLnZpc2libGUpKSB7XG4gICAgICAgIGNhbERyb3AudXBkYXRlKCk7XG4gICAgICAgIHRoaXMuZW1pdCgnZHJvcC1vcGVuJyk7XG4gICAgICAgIGFkZENsYXNzKHRoaXMuZWwsIHN0eWxlcy52aXNpYmxlKTtcblxuICAgICAgICBpZiAoIXRoaXMubWFwc0xvYWRlZCAmJiB0aGlzLm9wdHMucmVudGFsSWQpIHtcbiAgICAgICAgICB0aGlzLmxvYWRNYXBzKHRoaXMub3B0cy5yZW50YWxJZCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgaWYgKHRoaXMub3B0cy5pc1NpbmdsZUlucHV0KSB7XG4gICAgICB0aGlzLmZvY3VzVG91Y2hFdmVudHModGhpcy5vcHRzLmVsU2luZ2xlSW5wdXQsICgpID0+IHtcbiAgICAgICAgb3BlbkRyb3AoJ3N0YXJ0JywgZmFsc2UpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZm9jdXNUb3VjaEV2ZW50cyh0aGlzLm9wdHMuZWxTdGFydEF0LCAoKSA9PiB7XG4gICAgICAgIG9wZW5Ecm9wKCdzdGFydCcsIGZhbHNlKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5mb2N1c1RvdWNoRXZlbnRzKHRoaXMub3B0cy5lbEVuZEF0LCAoKSA9PiB7XG4gICAgICAgIG9wZW5Ecm9wKCdlbmQnLCB0cnVlKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5jbG9zZURyb3AuYmluZCh0aGlzKSk7XG4gICAgdGhpcy5jYWxEcm9wID0gY2FsRHJvcDtcblxuICAgIGlmICh0aGlzLm9wdHMuZWxSZXNldCkge1xuICAgICAgdGhpcy5vcHRzLmVsUmVzZXQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XG4gICAgICAgIHRoaXMucmVzZXRTZWxlY3Rpb24oKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHZhbHVlVG9JbnB1dChpbnB1dCwgZGF0ZVZhbHVlKSB7XG4gICAgY29uc3QgeyBlbFN0YXJ0QXQgfSA9IHRoaXMub3B0cztcbiAgICBjb25zdCB7IGVsRW5kQXQgfSAgID0gdGhpcy5vcHRzO1xuXG4gICAgY29uc3QgZGF0ZSAgPSBkYXRlVG9Jc28oLi4uZGF0ZVZhbHVlKTtcbiAgICBjb25zdCB2YWx1ZSA9IHN0cmZ0aW1lKGRhdGUsIHRoaXMuZm9ybWF0LCB0aGlzLmxvY2FsZSk7XG4gICAgY29uc3QgZXZ0ICAgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnRXZlbnQnKTtcblxuICAgIGV2dC5pbml0RXZlbnQoJ2NoYW5nZScsIGZhbHNlLCB0cnVlKTtcblxuICAgIGlmICh0aGlzLm9wdHMuaGlkZGVuRWxGb3JtYXQpIHtcbiAgICAgIGNvbnN0IGhpZGRlblZhbHVlID0gc3RyZnRpbWUoZGF0ZSwgdGhpcy5vcHRzLmhpZGRlbkVsRm9ybWF0LCB0aGlzLmxvY2FsZSk7XG5cbiAgICAgIGlmIChpbnB1dCA9PT0gJ3N0YXJ0JyAmJiB0aGlzLmhpZGRlbkVsU3RhcnRBdCkge1xuICAgICAgICB0aGlzLmhpZGRlbkVsU3RhcnRBdC52YWx1ZSA9IGhpZGRlblZhbHVlO1xuICAgICAgfSBlbHNlIGlmIChpbnB1dCA9PT0gJ2VuZCcgJiYgdGhpcy5oaWRkZW5FbEVuZEF0KSB7XG4gICAgICAgIHRoaXMuaGlkZGVuRWxFbmRBdC52YWx1ZSA9IGhpZGRlblZhbHVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChpbnB1dCA9PT0gJ3N0YXJ0JyAmJiBlbFN0YXJ0QXQpIHtcbiAgICAgIGVsU3RhcnRBdC52YWx1ZSA9IHZhbHVlO1xuICAgICAgZWxTdGFydEF0LmRpc3BhdGNoRXZlbnQoZXZ0KTtcbiAgICB9IGVsc2UgaWYgKGlucHV0ID09PSAnZW5kJyAmJiBlbEVuZEF0KSB7XG4gICAgICBlbEVuZEF0LnZhbHVlID0gdmFsdWU7XG4gICAgICBlbEVuZEF0LmRpc3BhdGNoRXZlbnQoZXZ0KTtcbiAgICB9XG4gIH1cblxuICBpbnB1dHNUb1ZhbHVlcygpIHtcbiAgICBpZiAodGhpcy5vcHRzLmVsU3RhcnRBdC52YWx1ZSA9PT0gJycgJiYgdGhpcy5vcHRzLmVsRW5kQXQudmFsdWUgPT09ICcnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc2VsZWN0aW9uU3RhcnQgID0gZGF0ZVRvQXJyYXkodGhpcy5vcHRzLmVsU3RhcnRBdC52YWx1ZSwgdGhpcy5mb3JtYXQsIHRoaXMubG9jYWxlKTtcbiAgICBjb25zdCBzZWxlY3Rpb25FbmQgICAgPSBkYXRlVG9BcnJheSh0aGlzLm9wdHMuZWxFbmRBdC52YWx1ZSwgdGhpcy5mb3JtYXQsIHRoaXMubG9jYWxlKTtcbiAgICBjb25zdCB7IGN1cnJlbnREYXRlIH0gPSB0aGlzLm9wdHM7XG5cbiAgICB0aGlzLnJlc2V0U2VsZWN0aW9uKCk7XG5cbiAgICBpZiAoaXNBcnJheShzZWxlY3Rpb25TdGFydCkgJiYgaXNBcnJheShzZWxlY3Rpb25FbmQpKSB7XG4gICAgICBpZiAoKGlzTGF0ZXIoY3VycmVudERhdGUsIHNlbGVjdGlvblN0YXJ0KSB8fCBpc0N1cnJlbnQoY3VycmVudERhdGUsIHNlbGVjdGlvblN0YXJ0KSkgJiYgaXNMYXRlcihzZWxlY3Rpb25TdGFydCwgc2VsZWN0aW9uRW5kKSkge1xuICAgICAgICBjb25zdCBtb250aERpZmZlcmVuY2UgPSBtb250aERpZmYoXG4gICAgICAgICAgZGF0ZVRvSXNvKHRoaXMub3B0cy55ZWFyU3RhcnQsIHRoaXMub3B0cy5tb250aFN0YXJ0LCAxKSxcbiAgICAgICAgICBkYXRlVG9Jc28oLi4uc2VsZWN0aW9uRW5kKVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IHsgdHJlZSB9ID0gdGhpcy5jcmVhdGVUcmVlKHRoaXMub3B0cy55ZWFyU3RhcnQsIHRoaXMub3B0cy5tb250aFN0YXJ0LCBtb250aERpZmZlcmVuY2UpO1xuXG4gICAgICAgIHRoaXMuY1RyZWUuYWRkVHJlZSh0cmVlKTtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25TdGFydCA9IHNlbGVjdGlvblN0YXJ0O1xuICAgICAgICB0aGlzLnNlbGVjdGlvbkVuZCA9IHNlbGVjdGlvbkVuZDtcbiAgICAgICAgdGhpcy5yZWNvdmVyU2VsZWN0aW9ucygpO1xuICAgICAgICB0aGlzLmNvbXBsZXRlU2VsZWN0aW9uKCk7XG4gICAgICAgIHRoaXMuZGVzdHJveU1vbnRocygpO1xuICAgICAgICB0aGlzLnJlbmRlck1vbnRocyhzZWxlY3Rpb25FbmRbMF0sIHNlbGVjdGlvbkVuZFsxXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmxvZ2dlcihgaW52YWxpZCByYW5nZTogXCJbJHtzZWxlY3Rpb25TdGFydH1dXCIgXCJbJHtzZWxlY3Rpb25FbmR9XVwiYCwgJ3dhcm4nKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoc2VsZWN0aW9uU3RhcnQgJiYgc2VsZWN0aW9uRW5kKSB7XG4gICAgICB0aGlzLmxvZ2dlcihgaW52YWxpZCBkYXRlczogXCIke3NlbGVjdGlvblN0YXJ0fVwiIFwiJHtzZWxlY3Rpb25FbmR9XCJgLCAnd2FybicpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHN3aXRjaElucHV0Rm9jdXModHlwZSkge1xuICAgIGlmICh0aGlzLm9wdHMuZWxTdGFydEF0ICYmIHRoaXMub3B0cy5lbEVuZEF0KSB7XG4gICAgICBpZiAodHlwZSA9PT0gJ3N0YXJ0Jykge1xuICAgICAgICBhZGRDbGFzcyh0aGlzLm9wdHMuZWxTdGFydEF0LCBzdHlsZXMuZm9jdXMpO1xuICAgICAgICByZW1vdmVDbGFzcyh0aGlzLm9wdHMuZWxFbmRBdCwgc3R5bGVzLmZvY3VzKTtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlID09PSAnZW5kJykge1xuICAgICAgICBhZGRDbGFzcyh0aGlzLm9wdHMuZWxFbmRBdCwgc3R5bGVzLmZvY3VzKTtcbiAgICAgICAgcmVtb3ZlQ2xhc3ModGhpcy5vcHRzLmVsU3RhcnRBdCwgc3R5bGVzLmZvY3VzKTtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlID09PSAnYW55Jykge1xuICAgICAgICByZW1vdmVDbGFzcyh0aGlzLm9wdHMuZWxTdGFydEF0LCBzdHlsZXMuZm9jdXMpO1xuICAgICAgICByZW1vdmVDbGFzcyh0aGlzLm9wdHMuZWxFbmRBdCwgc3R5bGVzLmZvY3VzKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjbG9zZURyb3AoZSwgZm9yY2UpIHtcbiAgICBpZiAoIWZvcmNlICYmIChpc0luc2lkZShlLnRhcmdldCwgdGhpcy5lbCkgfHwgaXNJbnNpZGUoZS50YXJnZXQsIHRoaXMuZWxUYXJnZXQpKSkge1xuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVtb3ZlQ2xhc3ModGhpcy5lbCwgc3R5bGVzLnZpc2libGUpO1xuICAgICAgdGhpcy5kZXN0cm95VG9vbHRpcCgpO1xuICAgICAgdGhpcy5lbWl0KCdkcm9wLWNsb3NlJyk7XG4gICAgICB0aGlzLnN3aXRjaElucHV0Rm9jdXMoJ2FueScpO1xuICAgIH1cbiAgfVxuXG4gIGZvY3VzVG91Y2hFdmVudHMoZWxlbWVudCwgX2NhbGxiYWNrKSB7XG4gICAgaWYgKGlzRnVuY3Rpb24oX2NhbGxiYWNrKSkge1xuICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgKGV2ZW50KSA9PiB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIF9jYWxsYmFjaygpO1xuICAgICAgfSk7XG5cbiAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXMnLCAoZXZlbnQpID0+IHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgX2NhbGxiYWNrKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gYFske3RoaXMubmFtZX0gJHt0aGlzLlZFUlNJT059XSBgO1xuICB9XG5cbiAgbG9nZ2VyKG1zZywgdHlwZSA9ICdsb2cnKSB7XG4gICAgaWYgKGNvbnNvbGUgJiYgY29uc29sZVt0eXBlXSkge1xuICAgICAgY29uc29sZVt0eXBlXSh0aGlzLnRvU3RyaW5nKCkgKyBtc2cpO1xuICAgIH1cbiAgfVxufVxuIiwiLyogZ2xvYmFsIHByb2Nlc3MsIHJlcXVpcmUgKi9cbmltcG9ydCB7IGRhc2hUb0NhcGl0YWwgfSBmcm9tICd3aWRnZXQtdXRpbHMnO1xuXG5jb25zdCB7IG5hbWUgfSA9IHJlcXVpcmUoJy4uL3BhY2thZ2UuanNvbicpO1xuY29uc3QgY3VycmVudERhdGUgPSBuZXcgRGF0ZSgpO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWUsXG4gIGNzc1ByZWZpeDogZGFzaFRvQ2FwaXRhbChuYW1lKSxcbiAgYXBpSG9zdDogcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdkZXZlbG9wbWVudCcgPyAnaHR0cDovL2xvY2FsaG9zdDozMDAwJyA6ICdodHRwczovL3NlY3VyZS5zbWlseS5jb20nLFxuICBhcGlOYW1lc3BhY2U6ICcvYXBpL3YyL3B1YmxpYycsXG4gIGFwaU1hcHNSb3V0ZTogJy9tYXBzLmpzb24/e2FwaVJlbnRhbElkfXthcGlDdXJyZW5jeX0nLFxuICBhcGlSZW50YWxJZDogJ3JlbnRhbF9pZD0nLFxuICBhcGlDdXJyZW5jeTogJyZleGNoYW5nZV90b19jdXJyZW5jeT0nLFxuXG4gIHJlbnRhbFVybChpZHMpIHtcbiAgICBsZXQgcm91dGUgPSB0aGlzLmFwaU1hcHNSb3V0ZS5yZXBsYWNlKCd7YXBpUmVudGFsSWR9JywgYCR7dGhpcy5hcGlSZW50YWxJZH0ke2lkc31gKTtcbiAgICByb3V0ZSA9IHJvdXRlLnJlcGxhY2UoJ3thcGlDdXJyZW5jeX0nLCAodGhpcy5jdXJyZW5jeSkgPyBgJHt0aGlzLmFwaUN1cnJlbmN5fSR7dGhpcy5jdXJyZW5jeX1gIDogJycpO1xuICAgIHJldHVybiBgJHt0aGlzLmFwaUhvc3R9JHt0aGlzLmFwaU5hbWVzcGFjZX0ke3JvdXRlfWA7XG4gIH0sXG5cbiAgc3RhcnRPZldlZWs6IDAsIC8vIDAgU3VuIDEgTW9uLi4uLjYgU2F0XG4gIG1pblN0YXk6IDEsIC8vIGNhbiBzZWxlY3Qgb25lIG5pZ2h0XG4gIG1heFN0YXk6IEluZmluaXR5LCAvLyBjYW4gc2VsZWN0IGluZmluaXRlIG5pZ2h0c1xuICBtb250aFN0YXJ0OiBudWxsLCAvLyBzdGFydCB3aXRoIGN1cnJlbnQgbW9udGggYnkgZGVmYXVsdCBNICcwLi4uMTEnXG4gIHllYXJTdGFydDogbnVsbCwgLy8gc3RhcnQgd2l0aCBjdXJyZW50IHllYXIgWVlZWVxuICBkYXlzUGVyV2VlazogNywgLy8gRklYTUUgc3VwcG9ydCBjYWxlbmRhciByZW5kZXJpbmdcbiAgZGlzcGxheU1vbnRoczogMixcbiAgc2VsZWN0YWJsZTogZmFsc2UsXG4gIHNob3dSYXRlczogZmFsc2UsXG4gIGlzUmV2ZXJzZVNlbGVjdGFibGU6IGZhbHNlLCAvLyBzZWxlY3QgZW5kIGRhdGUgZmlyc3RcbiAgaXNCYWNrRGlzYWJsZWQ6IHRydWUsXG4gIGlzRHJvcERvd246IGZhbHNlLFxuICBkcm9wUGxhY2VtZW50OiAnYm90dG9tLXN0YXJ0JyxcbiAgZWw6IG51bGwsXG4gIGVsU3RhcnRBdDogbnVsbCxcbiAgZWxFbmRBdDogbnVsbCxcbiAgZWxTaW5nbGVJbnB1dDogbnVsbCxcbiAgaXNTaW5nbGVJbnB1dDogbnVsbCxcbiAgc2luZ2xlSW5wdXREYXRlRm9ybWF0OiBudWxsLFxuICBzaW5nbGVJbnB1dFNlcGFyYXRvcjogJ+KGkicsXG4gIGVsUmVzZXQ6IG51bGwsXG4gIGZvcm1hdERhdGU6IG51bGwsXG4gIGhpZGRlbkVsRm9ybWF0OiBudWxsLFxuICByZW50YWxJZDogbnVsbCxcbiAgY3VycmVuY3k6IG51bGwsXG4gIGRpc2FibGVBdmFpbGFiaXR5TWFwOiBmYWxzZSxcbiAgYWxsb3dTaG9ydGVyTWluU3RheVNlbGVjdGlvbjogZmFsc2UsXG4gIGFsbG93TG9uZ2VyTWF4U3RheVNlbGVjdGlvbjogZmFsc2UsXG4gIGVuYWJsZUFsbERheXM6IGZhbHNlLFxuICBjdXJyZW50RGF0ZSxcbiAgdGhlbWU6ICdza2V3J1xufTtcbiIsImxldCBsb2NhbGVzID0ge1xuICAnZW4tR0InOiB7XG4gICAgc2hvcnRXZWVrZGF5TmFtZXM6ICdTdV9Nb19UdV9XZV9UaF9Gcl9TYScuc3BsaXQoJ18nKSxcbiAgICBsb25nV2Vla2RheU5hbWVzOiAnU3VuZGF5X01vbmRheV9UdWVzZGF5X1dlZG5lc2RheV9UaHVyc2RheV9GcmlkYXlfU2F0dXJkYXknLnNwbGl0KCdfJyksXG4gICAgbG9uZ01vbnRoTmFtZXM6ICdKYW51YXJ5X0ZlYnJ1YXJ5X01hcmNoX0FwcmlsX01heV9KdW5lX0p1bHlfQXVndXN0X1NlcHRlbWJlcl9PY3RvYmVyX05vdmVtYmVyX0RlY2VtYmVyJy5zcGxpdCgnXycpLFxuICAgIHNob3J0TW9udGhOYW1lczogJ0phbl9GZWJfTWFyX0Fwcl9NYXlfSnVuX0p1bF9BdWdfU2VwX09jdF9Ob3ZfRGVjJy5zcGxpdCgnXycpLFxuICAgIGZvcm1hdERhdGU6ICclYiAlZCwgJVknLFxuICAgIGN1cnJlbmN5OiAnR0JQJyxcbiAgICBtaW5TdGF5OiAnJW51bWJlcisgbmlnaHRzJyxcbiAgICBtYXhTdGF5OiAnJW51bWJlci0gbmlnaHRzJyxcbiAgICBoYXNJbnZhbGlkTWluU3RheTogJ21pbmltdW0gc3RheTogJW51bWJlciBuaWdodHMnLFxuICAgIGhhc0ludmFsaWRNYXhTdGF5OiAnbWF4aW11bSBzdGF5OiAlbnVtYmVyIG5pZ2h0cycsXG4gICAgaGFzSW52YWxpZERheXM6ICdib29rZWQgYWxyZWFkeScsXG4gICAgc3RhcnRPZldlZWs6IDBcbiAgfSxcbiAgJ2VuLVVTJzoge1xuICAgIHNob3J0V2Vla2RheU5hbWVzOiAnU3VfTW9fVHVfV2VfVGhfRnJfU2EnLnNwbGl0KCdfJyksXG4gICAgbG9uZ1dlZWtkYXlOYW1lczogJ1N1bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1NhdHVyZGF5Jy5zcGxpdCgnXycpLFxuICAgIGxvbmdNb250aE5hbWVzOiAnSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlcicuc3BsaXQoJ18nKSxcbiAgICBzaG9ydE1vbnRoTmFtZXM6ICdKYW5fRmViX01hcl9BcHJfTWF5X0p1bl9KdWxfQXVnX1NlcF9PY3RfTm92X0RlYycuc3BsaXQoJ18nKSxcbiAgICBmb3JtYXREYXRlOiAnJWIgJWQsICVZJyxcbiAgICBjdXJyZW5jeTogJ1VTRCcsXG4gICAgbWluU3RheTogJyVudW1iZXIrIG5pZ2h0cycsXG4gICAgbWF4U3RheTogJyVudW1iZXItIG5pZ2h0cycsXG4gICAgaGFzSW52YWxpZE1pblN0YXk6ICdtaW5pbXVtIHN0YXk6ICVudW1iZXIgbmlnaHRzJyxcbiAgICBoYXNJbnZhbGlkTWF4U3RheTogJ21heGltdW0gc3RheTogJW51bWJlciBuaWdodHMnLFxuICAgIGhhc0ludmFsaWREYXlzOiAnYm9va2VkIGFscmVhZHknLFxuICAgIHN0YXJ0T2ZXZWVrOiAxXG4gIH0sXG4gICdkZS1ERSc6IHtcbiAgICBzaG9ydFdlZWtkYXlOYW1lczogJ1NvX01vX0RpX01pX0RvX0ZyX1NhJy5zcGxpdCgnXycpLFxuICAgIGxvbmdXZWVrZGF5TmFtZXM6ICdTb25udGFnX01vbnRhZ19EaWVuc3RhZ19NaXR0d29jaF9Eb25uZXJzdGFnX0ZyZWl0YWdfU2Ftc3RhZycuc3BsaXQoJ18nKSxcbiAgICBsb25nTW9udGhOYW1lczogJ0phbnVhcl9GZWJydWFyX03DpHJ6X0FwcmlsX01haV9KdW5pX0p1bGlfQXVndXN0X1NlcHRlbWJlcl9Pa3RvYmVyX05vdmVtYmVyX0RlemVtYmVyJy5zcGxpdCgnXycpLFxuICAgIHNob3J0TW9udGhOYW1lczogJ0phbl9GZWJfTcOkcl9BcHJfTWFpX0p1bl9KdWxfQXVnX1NlcF9Pa3RfTm92X0Rleicuc3BsaXQoJ18nKSxcbiAgICBmb3JtYXREYXRlOiAnJWIgJWQsICVZJyxcbiAgICBjdXJyZW5jeTogJ0VVUicsXG4gICAgbWluU3RheTogJyVudW1iZXIrIG7DpGNodGUnLFxuICAgIG1heFN0YXk6ICclbnVtYmVyLSBuw6RjaHRlJyxcbiAgICBoYXNJbnZhbGlkTWluU3RheTogJ21pbmRlc3RhdWZlbnRoYWx0OiAlbnVtYmVyIE7DpGNodGUnLFxuICAgIGhhc0ludmFsaWRNYXhTdGF5OiAnbWF4aW1hbGVyIEF1ZmVudGhhbHQ6ICVudW1iZXIgTsOkY2h0ZScsXG4gICAgaGFzSW52YWxpZERheXM6ICdzY2hvbiBnZWJ1Y2h0JyxcbiAgICBzdGFydE9mV2VlazogMVxuICB9LFxuICAnZXMtRVMnOiB7XG4gICAgc2hvcnRXZWVrZGF5TmFtZXM6ICdEb19MdV9NYV9NaV9KdV9WaV9Tw6EnLnNwbGl0KCdfJyksXG4gICAgbG9uZ1dlZWtkYXlOYW1lczogJ2RvbWluZ29fbHVuZXNfbWFydGVzX21pw6lyY29sZXNfanVldmVzX3ZpZXJuZXNfc8OhYmFkbycuc3BsaXQoJ18nKSxcbiAgICBsb25nTW9udGhOYW1lczogJ2VuZXJvX2ZlYnJlcm9fbWFyem9fYWJyaWxfbWF5b19qdW5pb19qdWxpb19hZ29zdG9fc2VwdGllbWJyZV9vY3R1YnJlX25vdmllbWJyZV9kaWNpZW1icmUnLnNwbGl0KCdfJyksXG4gICAgc2hvcnRNb250aE5hbWVzOiAnZW5lX2ZlYl9tYXJfYWJyX21heV9qdW5fanVsX2Fnb19zZXBfb2N0X25vdl9kaWMnLnNwbGl0KCdfJyksXG4gICAgZm9ybWF0RGF0ZTogJyViICVkLCAlWScsXG4gICAgY3VycmVuY3k6ICdFVVInLFxuICAgIG1pblN0YXk6ICclbnVtYmVyKyBub2NoZXMnLFxuICAgIG1heFN0YXk6ICclbnVtYmVyLSBub2NoZXMnLFxuICAgIGhhc0ludmFsaWRNaW5TdGF5OiAnZXN0YW5jaWEgbcOtbmltYTogJW51bWJlciBub2NoZXMnLFxuICAgIGhhc0ludmFsaWRNYXhTdGF5OiAnZXN0YW5jaWEgbcOheGltYTogJW51bWJlciBub2NoZXMnLFxuICAgIGhhc0ludmFsaWREYXlzOiAneWEgcmVzZXJ2YWRvJyxcbiAgICBzdGFydE9mV2VlazogMVxuICB9LFxuICAnZnItRlInOiB7XG4gICAgc2hvcnRXZWVrZGF5TmFtZXM6ICdEaV9MdV9NYV9NZV9KZV9WZV9TYScuc3BsaXQoJ18nKSxcbiAgICBsb25nV2Vla2RheU5hbWVzOiAnZGltYW5jaGVfbHVuZGlfbWFyZGlfbWVyY3JlZGlfamV1ZGlfdmVuZHJlZGlfc2FtZWRpJy5zcGxpdCgnXycpLFxuICAgIGxvbmdNb250aE5hbWVzOiAnamFudmllcl9mw6l2cmllcl9tYXJzX2F2cmlsX21haV9qdWluX2p1aWxsZXRfYW/Du3Rfc2VwdGVtYnJlX29jdG9icmVfbm92ZW1icmVfZMOpY2VtYnJlJy5zcGxpdCgnXycpLFxuICAgIHNob3J0TW9udGhOYW1lczogJ2phbl9mw6l2X21hcl9hdnJfbWFpX2p1aW5fanVpbF9hb8O7X3NlcF9vY3Rfbm92X2TDqWMnLnNwbGl0KCdfJyksXG4gICAgZm9ybWF0RGF0ZTogJyVkICViLCAlWScsXG4gICAgY3VycmVuY3k6ICdFVVInLFxuICAgIG1pblN0YXk6ICclbnVtYmVyKyBudWl0cycsXG4gICAgbWF4U3RheTogJyVudW1iZXItIG51aXRzJyxcbiAgICBoYXNJbnZhbGlkTWluU3RheTogJ3PDqWpvdXIgbWluaW11bSA6ICVudW1iZXIgbnVpdHMnLFxuICAgIGhhc0ludmFsaWRNYXhTdGF5OiAnc8Opam91ciBtYXhpbXVtIDogJW51bWJlciBudWl0cycsXG4gICAgaGFzSW52YWxpZERheXM6ICdkw6lqw6AgcsOpc2VydsOpJyxcbiAgICBzdGFydE9mV2VlazogMVxuICB9LFxuICAnaXQtSVQnOiB7XG4gICAgc2hvcnRXZWVrZGF5TmFtZXM6ICdEb19MdV9NYV9NZV9HaV9WZV9TYScuc3BsaXQoJ18nKSxcbiAgICBsb25nV2Vla2RheU5hbWVzOiAnZG9tZW5pY2FfbHVuZWTDrF9tYXJ0ZWTDrF9tZXJjb2xlZMOsX2dpb3ZlZMOsX3ZlbmVyZMOsX3NhYmF0bycuc3BsaXQoJ18nKSxcbiAgICBsb25nTW9udGhOYW1lczogJ2dlbm5haW9fZmViYnJhaW9fbWFyem9fYXByaWxlX21hZ2dpb19naXVnbm9fbHVnbGlvX2Fnb3N0b19zZXR0ZW1icmVfb3R0b2JyZV9ub3ZlbWJyZV9kaWNlbWJyZScuc3BsaXQoJ18nKSxcbiAgICBzaG9ydE1vbnRoTmFtZXM6ICdnZW5fZmViX21hcl9hcHJfbWFnX2dpdV9sdWdfYWdvX3NldF9vdHRfbm92X2RpYycuc3BsaXQoJ18nKSxcbiAgICBmb3JtYXREYXRlOiAnJWIgJWQsICVZJyxcbiAgICBjdXJyZW5jeTogJ0VVUicsXG4gICAgbWluU3RheTogJyVudW1iZXIrIG5vdHRpLicsXG4gICAgbWF4U3RheTogJyVudW1iZXItIG5vdHRpJyxcbiAgICBoYXNJbnZhbGlkTWluU3RheTogJ3NvZ2dpb3JubyBtaW5pbTogJW51bWJlciBub3R0aScsXG4gICAgaGFzSW52YWxpZE1heFN0YXk6ICdzb2dnaW9ybm8gbWFzc2ltbzogJW51bWJlciBub3R0aScsXG4gICAgaGFzSW52YWxpZERheXM6ICdnacOgIHByZW5vdGF0bycsXG4gICAgc3RhcnRPZldlZWs6IDFcbiAgfSxcbiAgJ3N2LVNFJzoge1xuICAgIHNob3J0V2Vla2RheU5hbWVzOiAnc8O2X23DpV90aV9vbl90b19mcl9sw7YnLnNwbGl0KCdfJyksXG4gICAgbG9uZ1dlZWtkYXlOYW1lczogJ3PDtm5kYWdfbcOlbmRhZ190aXNkYWdfb25zZGFnX3RvcnNkYWdfZnJlZGFnX2zDtnJkYWcnLnNwbGl0KCdfJyksXG4gICAgbG9uZ01vbnRoTmFtZXM6ICdqYW51YXJpX2ZlYnJ1YXJpX21hcnNfYXByaWxfbWFqX2p1bmlfanVsaV9hdWd1c3RpX3NlcHRlbWJlcl9va3RvYmVyX25vdmVtYmVyX2RlY2VtYmVyJy5zcGxpdCgnXycpLFxuICAgIHNob3J0TW9udGhOYW1lczogJ2phbl9mZWJfbWFyX2Fwcl9tYWpfanVuX2p1bF9hdWdfc2VwX29rdF9ub3ZfZGVjJy5zcGxpdCgnXycpLFxuICAgIGZvcm1hdERhdGU6ICclYiAlZCwgJVknLFxuICAgIGN1cnJlbmN5OiAnRVVSJyxcbiAgICBtaW5TdGF5OiAnJW51bWJlcisgbsOkdHRlcicsXG4gICAgbWF4U3RheTogJyVudW1iZXItIG7DpHR0ZXInLFxuICAgIGhhc0ludmFsaWRNaW5TdGF5OiAna29ydGFzdGUgdmlzdGVsc2U6ICVudW1iZXIgbsOkdHRlcicsXG4gICAgaGFzSW52YWxpZE1heFN0YXk6ICdtYXhpbcOhbG55IHBvYnl0OiAlbnVtYmVyIG7DpHR0ZXInLFxuICAgIGhhc0ludmFsaWREYXlzOiAncmVkYW4gYm9rYXQnLFxuICAgIHN0YXJ0T2ZXZWVrOiAxXG4gIH0sXG4gICdydS1SVSc6IHtcbiAgICBzaG9ydFdlZWtkYXlOYW1lczogJ9CS0YFf0J/QvV/QktGCX9Ch0YBf0KfRgl/Qn9GCX9Ch0LEnLnNwbGl0KCdfJyksXG4gICAgbG9uZ1dlZWtkYXlOYW1lczogJ9CS0L7RgdC60YDQtdGB0LXQvdGM0LVf0J/QvtC90LXQtNC10LvRjNC90LjQul/QktGC0L7RgNC90LjQul/QodGA0LXQtNCwX9Cn0LXRgtCy0LXRgNCzX9Cf0Y/RgtC90LjRhtCwX9Ch0YPQsdCx0L7RgtCwJy5zcGxpdCgnXycpLFxuICAgIGxvbmdNb250aE5hbWVzOiAn0K/QvdCy0LDRgNGMX9Ck0LXQstGA0LDQu9GMX9Cc0LDRgNGCX9CQ0L/RgNC10LvRjF/QnNCw0Llf0JjRjtC90Yxf0JjRjtC70Yxf0JDQstCz0YPRgdGCX9Ch0LXQvdGC0Y/QsdGA0Yxf0J7QutGC0Y/QsdGA0Yxf0J3QvtGP0LHRgNGMX9CU0LXQutCw0LHRgNGMJy5zcGxpdCgnXycpLFxuICAgIHNob3J0TW9udGhOYW1lczogJ9Cv0L3Qsl/QpNC10LJf0JzQsNGAX9CQ0L/RgF/QnNCw0Llf0JjRjtC9X9CY0Y7Qu1/QkNCy0LNf0KHQtdC9X9Ce0LrRgl/QndC+0Y9f0JTQtdC6Jy5zcGxpdCgnXycpLFxuICAgIGZvcm1hdERhdGU6ICclZC4lYi4lWScsXG4gICAgY3VycmVuY3k6ICfQoNGD0LEuJyxcbiAgICBtaW5TdGF5OiAnJW51bWJlcisg0L3QvtGHLicsXG4gICAgbWF4U3RheTogJyVudW1iZXItINC90L7Rhy4nLFxuICAgIGhhc0ludmFsaWRNaW5TdGF5OiAn0LzQuNC90LjQvNCw0LvRjNC90L7QtSDQv9GA0LXQsdGL0LLQsNC90Lg6ICVudW1iZXIg0L3QvtGH0LgnLFxuICAgIGhhc0ludmFsaWRNYXhTdGF5OiAn0LzQsNC60YHQuNC80LDQu9GM0L3QvtC1INC/0YDQtdCx0YvQstCw0L3QuNC1OiAlbnVtYmVyINC90L7Rh9C4JyxcbiAgICBoYXNJbnZhbGlkRGF5czogJ9C30LDQsdGA0L7QvdC40YDQvtCy0LDQvdC+INGD0LbQtScsXG4gICAgc3RhcnRPZldlZWs6IDFcbiAgfSxcbiAgJ3BsLVBMJzoge1xuICAgIHNob3J0V2Vla2RheU5hbWVzOiAnTmRfUG5fV3RfxZpyX0N6X1B0X1NvJy5zcGxpdCgnXycpLFxuICAgIGxvbmdXZWVrZGF5TmFtZXM6ICduaWVkemllbGFfcG9uaWVkemlhxYJla193dG9yZWtfxZtyb2RhX2N6d2FydGVrX3BpxIV0ZWtfc29ib3RhJy5zcGxpdCgnXycpLFxuICAgIGxvbmdNb250aE5hbWVzOiAnc3R5Y3plxYRfbHV0eV9tYXJ6ZWNfa3dpZWNpZcWEX21hal9jemVyd2llY19saXBpZWNfc2llcnBpZcWEX3dyemVzaWXFhF9wYcW6ZHppZXJuaWtfbGlzdG9wYWRfZ3J1ZHppZcWEJy5zcGxpdCgnXycpLFxuICAgIHNob3J0TW9udGhOYW1lczogJ3N0eV9sdXRfbWFyX2t3aV9tYWpfY3plX2xpcF9zaWVfd3J6X3BhxbpfbGlzX2dydScuc3BsaXQoJ18nKSxcbiAgICBmb3JtYXREYXRlOiAnJWQuJWIuJVknLFxuICAgIGN1cnJlbmN5OiAnUExOJyxcbiAgICBtaW5TdGF5OiAnJW51bWJlcisgbm9jZScsXG4gICAgbWF4U3RheTogJyVudW1iZXItIG5vY2UnLFxuICAgIGhhc0ludmFsaWRNaW5TdGF5OiAnbWluaW1hbG55IHBvYnk6ICVudW1iZXIgbm9jZScsXG4gICAgaGFzSW52YWxpZE1heFN0YXk6ICdtYWtzeW1hbG55IHBvYnl0OiAlbnVtYmVyIG5vY2UnLFxuICAgIGhhc0ludmFsaWREYXlzOiAnanXFvCB6YXJlemVyd293YW5lJyxcbiAgICBzdGFydE9mV2VlazogMVxuICB9LFxuICAnbmwtTkwnOiB7XG4gICAgc2hvcnRXZWVrZGF5TmFtZXM6ICdab19NYV9EaV9Xb19Eb19Wcl9aYScuc3BsaXQoJ18nKSxcbiAgICBsb25nV2Vla2RheU5hbWVzOiAnWm9uZGFnX01hYW5kYWdfRGluc2RhZ19Xb2Vuc2RhZ19Eb25kZXJkYWdfVnJpamRhZ19aYXRlcmRhZycuc3BsaXQoJ18nKSxcbiAgICBsb25nTW9udGhOYW1lczogJ0phbnVhcmlfRmVicnVhcmlfTWFhcnRfQXByaWxfTWVpX0p1bmlfSnVsaV9BdWd1c3R1c19TZXB0ZW1iZXJfT2t0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlcicuc3BsaXQoJ18nKSxcbiAgICBzaG9ydE1vbnRoTmFtZXM6ICdKYW5fRmViX01hYV9BcHJfTWVpX0p1bl9KdWxfQXVnX1NlcF9Pa3RfTm92X0RlYycuc3BsaXQoJ18nKSxcbiAgICBmb3JtYXREYXRlOiAnJWIgJWQsICVZJyxcbiAgICBjdXJyZW5jeTogJ0VVUicsXG4gICAgbWluU3RheTogJyVudW1iZXIrIG5hY2h0ZW4nLFxuICAgIG1heFN0YXk6ICclbnVtYmVyLSBuYWNodGVuJyxcbiAgICBoYXNJbnZhbGlkTWluU3RheTogJ21pbmltYWFsIHZlcmJsaWpmOiAlbnVtYmVyIG5hY2h0ZW4nLFxuICAgIGhhc0ludmFsaWRNYXhTdGF5OiAnbWF4aW1hYWwgdmVyYmxpamY6ICVudW1iZXIgbmFjaHRlbicsXG4gICAgaGFzSW52YWxpZERheXM6ICdhbCBnZWJvZWt0JyxcbiAgICBzdGFydE9mV2VlazogMVxuICB9XG59O1xuXG4vLyBBZGQgYWxpYXNlc1xubG9jYWxlcyA9IE9iamVjdC5hc3NpZ24oe1xuICBlbjogbG9jYWxlc1snZW4tVVMnXSxcbiAgZGU6IGxvY2FsZXNbJ2RlLURFJ10sXG4gIGVzOiBsb2NhbGVzWydlcy1FUyddLFxuICBmcjogbG9jYWxlc1snZnItRlInXSxcbiAgaXQ6IGxvY2FsZXNbJ2l0LUlUJ10sXG4gIHN2OiBsb2NhbGVzWydzdi1TViddLFxuICBydTogbG9jYWxlc1sncnUtUlUnXSxcbiAgcGw6IGxvY2FsZXNbJ3BsLVBMJ10sXG4gIG5sOiBsb2NhbGVzWydubC1OTCddXG59LCBsb2NhbGVzKTtcblxuZXhwb3J0IGRlZmF1bHQgbG9jYWxlcztcbiIsImltcG9ydCBzdHlsZXMgZnJvbSAnLi9zdHlsZXMvY2FsZW5kYXIuc2Nzcyc7XG5cbmV4cG9ydCBjb25zdCBtYWluICA9IGA8ZGl2IGNsYXNzPVwiJHtzdHlsZXMubW9udGhzV3JhcHBlcn1cIj48L2Rpdj5gO1xuXG5leHBvcnQgY29uc3QgdG9vbHRpcCA9IGA8ZGl2IGNsYXNzPVwiJHtzdHlsZXMudG9vbHRpcH1cIiByb2xlPVwidG9vbHRpcFwiPjxzcGFuPjwvc3Bhbj48ZGl2IGNsYXNzPVwiJHtzdHlsZXMudG9vbHRpcEFycm93fVwiIGRhdGEtcG9wcGVyLWFycm93PVwidHJ1ZVwiPjwvZGl2PjwvZGl2PmA7XG5cbmV4cG9ydCBjb25zdCBtb250aCA9IGBcbiAgPGRpdiBjbGFzcz1cIiR7c3R5bGVzLm1DZWxsfSBqcy1tb250aFwiPlxuICAgIDx0YWJsZSBjbGFzcz1cIiR7c3R5bGVzLm1vbnRofVwiIHJvbGU9XCJtb250aFwiPlxuICAgICAgPGNhcHRpb24+PGRpdiBjbGFzcz1cIiR7c3R5bGVzLmNhcHRpb259XCI+PC9kaXY+PC9jYXB0aW9uPlxuICAgICAgPHRoZWFkIGNsYXNzPVwiJHtzdHlsZXMudGFibGVIZWFkZXJ9XCI+PHRyPjwvdHI+PC90aGVhZD5cbiAgICAgIDx0Ym9keSBjbGFzcz1cIiR7c3R5bGVzLmJvZHl9XCI+PC90Ym9keT5cbiAgICA8L3RhYmxlPlxuICA8L2Rpdj5cbmA7XG5cbmV4cG9ydCBjb25zdCB3ZWVrRGF5TGFiZWwgPSAobGFiZWwpID0+IGA8dGggY2xhc3M9XCIke3N0eWxlcy50aH1cIj4ke2xhYmVsfTwvdGg+YDtcblxuZXhwb3J0IGNvbnN0IHdlZWtEYXkgPSAoXG4gIGxhYmVsLFxuICBkaXNhYmxlZCxcbiAgaXNBdmFpbGFibGVJbixcbiAgaXNBdmFpbGFibGVPdXQsXG4gIGlzQ3VycmVudERheSxcbiAgbWluU3RheSxcbiAgbWluU3RheVQsXG4gIG1heFN0YXksXG4gIG1heFN0YXlULFxuICByYXRlLFxuICByYXRlVFxuKSA9PiBgXG4gIDx0ZCAke2Rpc2FibGVkID8gYGRhdGEtZGlzYWJsZWQ9JHtkaXNhYmxlZH1gIDogJ2RhdGEtZW5hYmxlZCd9XG4gICAgICAgJHtpc0F2YWlsYWJsZU91dCA/ICdkYXRhLWF2YWlsYWJsZS1vdXQnIDogJyd9XG4gICAgICAgJHtpc0F2YWlsYWJsZUluID8gJ2RhdGEtYXZhaWxhYmxlLWluJyA6ICcnfVxuICAgICAgICR7bWluU3RheSA/IGBkYXRhLW1pbi1zdGF5PSR7bWluU3RheX1gIDogJyd9XG4gICAgICAgJHttYXhTdGF5ID8gYGRhdGEtbWF4LXN0YXk9JHttYXhTdGF5fWAgOiAnJ31cbiAgICAgICBkYXRhLXZhbHVlPVwiJHtsYWJlbH1cIlxuICAgICAgIGNsYXNzPVwiJHtzdHlsZXMuY2VsbH0gJHtpc0N1cnJlbnREYXkgPyBzdHlsZXMudG9kYXkgOiAnJ31cIj5cbiAgICAgICA8ZGl2IGNsYXNzPVwiJHtzdHlsZXMuY250fVwiIHJvbGU9XCJkYXktdmFsdWVcIj5cbiAgICAgICAgJHtsYWJlbH1cbiAgICAgICAgPGRpdiBjbGFzcz1cIiR7c3R5bGVzLmluZm99XCI+XG4gICAgICAgICAgJHtyYXRlID8gYDxzcGFuIGRhdGEtcmF0ZT4ke3JhdGVUfTwvc3Bhbj5gIDogJyd9XG4gICAgICAgICAgJHttaW5TdGF5ICYmIG1pblN0YXlUID8gYDxzcGFuIGRhdGEtbWluLXN0YXktdD4ke21pblN0YXlUfTwvc3Bhbj5gIDogJyd9XG4gICAgICAgICAgJHttYXhTdGF5ICYmIG1heFN0YXlUID8gYDxzcGFuIGRhdGEtbWF4LXN0YXktdD4ke21heFN0YXlUfTwvc3Bhbj5gIDogJyd9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gIDwvdGQ+XG5gO1xuXG5leHBvcnQgY29uc3QgZm9yd2FyZCA9IGBcbiAgPGJ1dHRvbiBjbGFzcz1cIiR7c3R5bGVzLmZvcndhcmR9XCIgcm9sZT1cImJ1dHRvblwiPlxuICAgIDxzdmcgdmlld0JveD1cIjAgMCAxMDAwIDEwMDBcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIj5cbiAgICAgIDxwYXRoIGQ9XCJNNjk0LjQgMjQyLjRsMjQ5LjEgMjQ5LjFjMTEgMTEgMTEgMjEgMCAzMkw2OTQuNCA3NzIuN2MtNSA1LTEwIDctMTYgN3MtMTEtMi0xNi03Yy0xMS0xMS0xMS0yMSAwLTMybDIxMC4xLTIxMC4xSDY3LjFjLTEzIDAtMjMtMTAtMjMtMjNzMTAtMjMgMjMtMjNoODA1LjRMNjYyLjQgMjc0LjVjLTIxLTIxLjEgMTEtNTMuMSAzMi0zMi4xelwiPjwvcGF0aD5cbiAgICA8L3N2Zz5cbiAgPC9idXR0b24+XG5gO1xuXG5leHBvcnQgY29uc3QgYmFjayA9IGBcbiAgPGJ1dHRvbiBjbGFzcz1cIiR7c3R5bGVzLmJhY2t9XCIgcm9sZT1cImJ1dHRvblwiPlxuICAgIDxzdmcgdmlld0JveD1cIjAgMCAxMDAwIDEwMDBcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIj5cbiAgICAgIDxwYXRoIGQ9XCJNMzM2LjIgMjc0LjVsLTIxMC4xIDIxMGg4MDUuNGMxMyAwIDIzIDEwIDIzIDIzcy0xMCAyMy0yMyAyM0gxMjYuMWwyMTAuMSAyMTAuMWMxMSAxMSAxMSAyMSAwIDMyLTUgNS0xMCA3LTE2IDdzLTExLTItMTYtN2wtMjQ5LjEtMjQ5Yy0xMS0xMS0xMS0yMSAwLTMybDI0OS4xLTI0OS4xYzIxLTIxLjEgNTMgMTAuOSAzMiAzMnpcIj48L3BhdGg+XG4gICAgPC9zdmc+XG4gIDwvYnV0dG9uPlxuYDtcblxuZXhwb3J0IGNvbnN0IHdlZWtEYXlQbGFjZWhvbGRlciA9ICc8dGQ+PC90ZD4nO1xuXG4vKiBlc2xpbnQgYXJyb3ctYm9keS1zdHlsZTogMCAqL1xuZXhwb3J0IGNvbnN0IHdlZWtSb3cgPSAobnVtKSA9PiB7XG4gIHJldHVybiB7XG4gICAgb3BlbjogYDx0ciBjbGFzcz1cImpzLWJvZHktcm93LSR7bnVtfVwiPmAsXG4gICAgY2xvc2U6ICc8L3RyPidcbiAgfTtcbn07XG4iLCIvKiBnbG9iYWwgY29uc29sZSAqL1xuaW1wb3J0IHsgc3RyZnRpbWUsIHN0cnB0aW1lIH0gZnJvbSAnc3RydGltZSc7XG5pbXBvcnQgeyBpcyB9IGZyb20gJ3dpZGdldC11dGlscyc7XG5cbmV4cG9ydCBjb25zdCBkYXRlVG9Jc28gPSAoeWVhciwgbW9udGgsIGRheSwgaXNTdHJpbmcgPSBmYWxzZSkgPT4ge1xuICBmdW5jdGlvbiBwYWQobnVtYmVyKSB7XG4gICAgaWYgKG51bWJlciA8IDEwKSB7XG4gICAgICByZXR1cm4gYDAke251bWJlcn1gO1xuICAgIH1cbiAgICByZXR1cm4gbnVtYmVyO1xuICB9XG5cbiAgaWYgKGlzU3RyaW5nKSB7XG4gICAgcmV0dXJuIGAke3llYXJ9LSR7cGFkKG1vbnRoICsgMSl9LSR7cGFkKGRheSl9YDtcbiAgfVxuXG4gIGxldCBkYXRlID0gbmV3IERhdGUoeWVhciwgbW9udGgsIGRheSwgMTIsIDAsIDApO1xuICByZXR1cm4gZGF0ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBkYXRlVG9BcnJheSA9ICh2YWwsIGZvcm1hdCwgbG9jYWxlKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0ZSA9IHN0cnB0aW1lKHZhbCwgZm9ybWF0LCBsb2NhbGUpO1xuICAgIGNvbnN0IGEgICAgPSBzdHJmdGltZShkYXRlLCAnJVktJW0tJWQnKS5zcGxpdCgnLScpO1xuXG4gICAgcmV0dXJuIFtcbiAgICAgIHBhcnNlSW50KGFbMF0pLCAvLyB5ZWFyXG4gICAgICBwYXJzZUludChhWzFdIC0gMSksIC8vIG1vbnRoIGluZGV4XG4gICAgICBwYXJzZUludChhWzJdKSAvLyBkYXlcbiAgICBdO1xuICB9IGNhdGNoKGUpIHtcbiAgICBpZiAoaXMoZS5tZXNzYWdlKSkge1xuICAgICAgY29uc29sZS5sb2coZS5tZXNzYWdlKTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgaXNMYXRlciA9IChzdGFydCwgZW5kKSA9PiBkYXRlVG9Jc28oLi4uc3RhcnQsIHRydWUpIDwgZGF0ZVRvSXNvKC4uLmVuZCwgdHJ1ZSk7XG5cbmV4cG9ydCBjb25zdCBpc0N1cnJlbnQgPSAoc3RhcnQsIGVuZCkgPT4gZGF0ZVRvSXNvKC4uLnN0YXJ0LCB0cnVlKSA9PSBkYXRlVG9Jc28oLi4uZW5kLCB0cnVlKTtcblxuZXhwb3J0IGNvbnN0IG1vbnRoRGlmZiA9IChzdGFydCwgZW5kKSA9PiB7XG4gIHJldHVybiBlbmQuZ2V0TW9udGgoKSAtIHN0YXJ0LmdldE1vbnRoKCkgKyAoMTIgKiAoZW5kLmdldEZ1bGxZZWFyKCkgLSBzdGFydC5nZXRGdWxsWWVhcigpKSk7XG59O1xuXG5leHBvcnQgY29uc3QgdmFsaWRhdGlvbk9mQ2VsbCA9IChjZWxsKSA9PiB7XG4gIGlmIChpcyhjZWxsLmRhdGFzZXQuZW5hYmxlZCkgfHwgaXMoY2VsbC5kYXRhc2V0LmF2YWlsYWJsZUluKSB8fCBpcyhjZWxsLmRhdGFzZXQuYXZhaWxhYmxlT3V0KSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufTtcblxuZXhwb3J0IGNvbnN0IHRGb3JtYXR0ZXIgPSAodmFsdWUsIHN0cikgPT4gc3RyLnJlcGxhY2UoJyVudW1iZXInLCB2YWx1ZSk7XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0dFVF9VUkxfSU1QT1JUX19fIGZyb20gXCIuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvZ2V0VXJsLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9VUkxfSU1QT1JUXzBfX18gPSBuZXcgVVJMKFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmcgeG1sbnM9JTI3aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmclMjcgdmlld0JveD0lMjcwIDAgMzIgMzAuOTclMjclM0UlM0NwYXRoIGQ9JTI3TTMyLDE1LjQ4YTE2LjUyLDE2LjUyLDAsMCwxLTEuMzcsNi4yOCwxNi4zNSwxNi4zNSwwLDAsMS05LDguNjMsMTUuODcsMTUuODcsMCwwLDEtMTcuMy0zLjc4QTE1LjQzLDE1LjQzLDAsMCwxLDQuNzIsNC43MiwxNSwxNSwwLDAsMSwxNS40OS41MmExNC43NiwxNC43NiwwLDAsMSwxMC40LDQuNTZBMTQuNzcsMTQuNzcsMCwwLDEsMjksOS45YTE0LjQ1LDE0LjQ1LDAsMCwxLC44NSwzLjM1aC4xM0EyLjA2LDIuMDYsMCwwLDEsMzIsMTUuMzFhLjkxLjkxLDAsMCwxLDAsLjE3Wk0yOC43MiwxMGExNC4yNywxNC4yNywwLDAsMC0zLjItNC41NSwxNCwxNCwwLDAsMC0xMC0zLjlBMTMuNzIsMTMuNzIsMCwwLDAsMywxMC4zYTEzLjQzLDEzLjQzLDAsMCwwLC4yNCwxMC4yNywxMy4wNSwxMy4wNSwwLDAsMCwxMi4yOCw3LjgyLDEyLjkyLDEyLjkyLDAsMCwwLDQuODgtMS4xLDEyLjY1LDEyLjY1LDAsMCwwLDQuMDYtMi44NywxMi40OCwxMi40OCwwLDAsMCwyLjYyLTQuMTUsMTIuMjQsMTIuMjQsMCwwLDAsLjgyLTQuNzloMGEuOTEuOTEsMCwwLDEsMC0uMTcsMi4wNywyLjA3LDAsMCwxLDEuODQtMi4wNSwxNC4yNywxNC4yNywwLDAsMC0xLTMuMjZaJTI3IHRyYW5zZm9ybT0lMjd0cmFuc2xhdGUlMjgwIC0wLjUxJTI5JTI3LyUzRSUzQy9zdmclM0VcIiwgaW1wb3J0Lm1ldGEudXJsKTtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbnZhciBfX19DU1NfTE9BREVSX1VSTF9SRVBMQUNFTUVOVF8wX19fID0gX19fQ1NTX0xPQURFUl9HRVRfVVJMX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX1VSTF9JTVBPUlRfMF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG5cXG4gICAgbG9hZGVyXFxuXFxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuQC13ZWJraXQta2V5ZnJhbWVzIEJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2Jvb2tpbmdzeW5jLXNwaW4ge1xcbiAgZnJvbSB7XFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XFxuICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpOyB9XFxuICB0byB7XFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsgfSB9XFxuXFxuQGtleWZyYW1lcyBCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19ib29raW5nc3luYy1zcGluIHtcXG4gIGZyb20ge1xcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsgfVxcbiAgdG8ge1xcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XFxuICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IH0gfVxcblxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcjo6YmVmb3JlIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogMDtcXG4gIGxlZnQ6IDA7XFxuICB3aWR0aDogMTAwJTtcXG4gIGhlaWdodDogMTAwJTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KTtcXG4gIGNvbnRlbnQ6ICcnOyB9XFxuXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyOjphZnRlciB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IDUwJTtcXG4gIGxlZnQ6IDUwJTtcXG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XFxuICBiYWNrZ3JvdW5kLXNpemU6IDEwMCU7XFxuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIgKyBfX19DU1NfTE9BREVSX1VSTF9SRVBMQUNFTUVOVF8wX19fICsgXCIpO1xcbiAgaGVpZ2h0OiAyMHB4O1xcbiAgd2lkdGg6IDIwcHg7XFxuICBtYXJnaW46IC0xMHB4IDAgMCAtMTBweDtcXG4gIGNvbnRlbnQ6ICcnO1xcbiAgLXdlYmtpdC1hbmltYXRpb246IEJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2Jvb2tpbmdzeW5jLXNwaW4gMnMgaW5maW5pdGUgbGluZWFyO1xcbiAgYW5pbWF0aW9uOiBCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19ib29raW5nc3luYy1zcGluIDJzIGluZmluaXRlIGxpbmVhcjtcXG4gIGFuaW1hdGlvbi1wbGF5LXN0YXRlOiBwYXVzZWQ7IH1cXG5cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXI6OmJlZm9yZSwgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyOjphZnRlciB7XFxuICB6LWluZGV4OiAxMDAwO1xcbiAgb3BhY2l0eTogMDtcXG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcXG4gIC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSAwLjI1cyBlYXNlLWluLW91dDtcXG4gIC1vLXRyYW5zaXRpb246IG9wYWNpdHkgMC4yNXMgZWFzZS1pbi1vdXQ7XFxuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMjVzIGVhc2UtaW4tb3V0OyB9XFxuXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2xvYWRpbmc6OmJlZm9yZSwgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2xvYWRpbmc6OmFmdGVyIHtcXG4gIG9wYWNpdHk6IDE7XFxuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xcbiAgYW5pbWF0aW9uLXBsYXktc3RhdGU6IHJ1bm5pbmc7IH1cXG5cXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG5cXG4gICAgZHJvcGRvd25cXG5cXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fZHJvcEJhc2ljIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGRpc3BsYXk6IG5vbmU7XFxuICBtYXgtd2lkdGg6IDEwMCU7XFxuICBib3gtc2hhZG93OiAxcHggNXB4IDlweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpO1xcbiAgYm9yZGVyOiAxcHggc29saWQgI2UwZTBlMDtcXG4gIGJhY2tncm91bmQ6ICNmZmY7XFxuICBtYXJnaW46IDA7XFxuICBwYWRkaW5nOiAxZW07XFxuICBmb250LWZhbWlseTogaW5oZXJpdDtcXG4gIGxpbmUtaGVpZ2h0OiAxLjVlbTtcXG4gIHotaW5kZXg6IDEwOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fZHJvcEJhc2ljLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3Zpc2libGUge1xcbiAgICBkaXNwbGF5OiBibG9jazsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2Ryb3BCYXNpYyAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FwdGlvbiB7XFxuICAgIG1hcmdpbi1ib3R0b206IC43ZW07IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhci5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19kcm9wQmFzaWMgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2ZvcndhcmQsXFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fZHJvcEJhc2ljIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19iYWNrIHtcXG4gICAgdG9wOiAxZW07XFxuICAgIGxlZnQ6IDFlbTsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2Ryb3BCYXNpYyAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fZm9yd2FyZCB7XFxuICAgIGxlZnQ6IGF1dG87XFxuICAgIHJpZ2h0OiAxZW07IH1cXG5cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jZWxsOmZpcnN0LWNoaWxkIHtcXG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDRweDtcXG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDRweDsgfVxcblxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NlbGw6bGFzdC1jaGlsZCB7XFxuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogNHB4O1xcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDRweDsgfVxcblxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NlbGw6OmJlZm9yZSwgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2VsbDo6YWZ0ZXIge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgZGlzcGxheTogYmxvY2s7XFxuICB3aWR0aDogMTAwJTtcXG4gIG1hcmdpbjogMDtcXG4gIGNvbnRlbnQ6ICcnO1xcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHNrZXcoLTMwZGVnKTtcXG4gIC1tcy10cmFuc2Zvcm06IHNrZXcoLTMwZGVnKTtcXG4gIHRyYW5zZm9ybTogc2tldygtMzBkZWcpO1xcbiAgYm9yZGVyLXJhZGl1czogNnB4O1xcbiAgei1pbmRleDogMDtcXG4gIGhlaWdodDogY2FsYygxMDAlICsgMnB4KTtcXG4gIHRvcDogLTFweDsgfVxcblxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NlbGw6OmJlZm9yZSB7XFxuICBsZWZ0OiAtNTUlOyB9XFxuXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2VsbDo6YWZ0ZXIge1xcbiAgbGVmdDogNTUlOyB9XFxuXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuXFxuICAgIHNlbGVjdGlvbnMsIGxlZnQgLSBjZW50ZXIgLSByaWdodFxcblxcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiAgY2VsbHMgZGlzYWJsZWRcXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIFtkYXRhLWRpc2FibGVkPVxcXCJsZWZ0XFxcIl06OmFmdGVyIHtcXG4gIGJhY2tncm91bmQ6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWRpc2FibGVkLWJnLWNvbG9yLCAjZjBmMGYwKTsgfVxcblxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gW2RhdGEtZGlzYWJsZWQ9XFxcImNlbnRlclxcXCJdIHtcXG4gIGJhY2tncm91bmQ6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWRpc2FibGVkLWJnLWNvbG9yLCAjZjBmMGYwKTtcXG4gIGNvbG9yOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1kaXNhYmxlZC1jb2xvciwgI2JmYmZiZik7IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gW2RhdGEtZGlzYWJsZWQ9XFxcImNlbnRlclxcXCJdOjpiZWZvcmUsIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gW2RhdGEtZGlzYWJsZWQ9XFxcImNlbnRlclxcXCJdOjphZnRlciB7XFxuICAgIGRpc3BsYXk6IG5vbmU7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWRpc2FibGVkLWJnLWNvbG9yLCAjZjBmMGYwKTsgfVxcblxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gW2RhdGEtZGlzYWJsZWQ9XFxcInJpZ2h0XFxcIl06OmJlZm9yZSB7XFxuICBiYWNrZ3JvdW5kOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1kaXNhYmxlZC1iZy1jb2xvciwgI2YwZjBmMCk7IH1cXG5cXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4gIGNlbGxzIGhpZ2hsaWdodGVkXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSBbZGF0YS1oaWdobGlnaHRlZD1cXFwibGVmdFxcXCJdOjphZnRlciB7XFxuICBkaXNwbGF5OiBibG9jaztcXG4gIGJhY2tncm91bmQ6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWhpZ2hsaWdodGVkLWJnLWNvbG9yLCAjYjdjYWZiKTsgfVxcblxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gW2RhdGEtaGlnaGxpZ2h0ZWQ9XFxcImNlbnRlclxcXCJdIHtcXG4gIGJhY2tncm91bmQ6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWhpZ2hsaWdodGVkLWJnLWNvbG9yLCAjYjdjYWZiKTtcXG4gIGNvbG9yOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1oaWdobGlnaHRlZC1jb2xvciwgIzM3MzczNyk7IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gW2RhdGEtaGlnaGxpZ2h0ZWQ9XFxcImNlbnRlclxcXCJdOjpiZWZvcmUsIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gW2RhdGEtaGlnaGxpZ2h0ZWQ9XFxcImNlbnRlclxcXCJdOjphZnRlciB7XFxuICAgIGRpc3BsYXk6IG5vbmU7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWhpZ2hsaWdodGVkLWJnLWNvbG9yLCAjYjdjYWZiKTsgfVxcblxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gW2RhdGEtaGlnaGxpZ2h0ZWQ9XFxcInJpZ2h0XFxcIl06OmJlZm9yZSB7XFxuICBkaXNwbGF5OiBibG9jaztcXG4gIGJhY2tncm91bmQ6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWhpZ2hsaWdodGVkLWJnLWNvbG9yLCAjYjdjYWZiKTsgfVxcblxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiAgY2VsbHMgaW52YWxpZFxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gW2RhdGEtaW52YWxpZD1cXFwibGVmdFxcXCJdIHtcXG4gIGJhY2tncm91bmQ6IG5vbmU7IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gW2RhdGEtaW52YWxpZD1cXFwibGVmdFxcXCJdOjpiZWZvcmUge1xcbiAgICBkaXNwbGF5OiBibG9jazsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSBbZGF0YS1pbnZhbGlkPVxcXCJsZWZ0XFxcIl06OmFmdGVyIHtcXG4gICAgZGlzcGxheTogYmxvY2s7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWludmFsaWQtYmctY29sb3IsICNlM2UzZTMpOyB9XFxuXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSBbZGF0YS1pbnZhbGlkPVxcXCJjZW50ZXJcXFwiXSB7XFxuICBiYWNrZ3JvdW5kOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1pbnZhbGlkLWJnLWNvbG9yLCAjZTNlM2UzKTtcXG4gIGNvbG9yOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1pbnZhbGlkLWNvbG9yLCAjYjJiMmIyKTsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSBbZGF0YS1pbnZhbGlkPVxcXCJjZW50ZXJcXFwiXTo6YmVmb3JlLCAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIFtkYXRhLWludmFsaWQ9XFxcImNlbnRlclxcXCJdOjphZnRlciB7XFxuICAgIGRpc3BsYXk6IG5vbmU7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWludmFsaWQtYmctY29sb3IsICNlM2UzZTMpOyB9XFxuXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSBbZGF0YS1pbnZhbGlkPVxcXCJyaWdodFxcXCJdIHtcXG4gIGJhY2tncm91bmQ6IG5vbmU7IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gW2RhdGEtaW52YWxpZD1cXFwicmlnaHRcXFwiXTo6YmVmb3JlIHtcXG4gICAgZGlzcGxheTogYmxvY2s7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWludmFsaWQtYmctY29sb3IsICNlM2UzZTMpOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIFtkYXRhLWludmFsaWQ9XFxcInJpZ2h0XFxcIl06OmFmdGVyIHtcXG4gICAgZGlzcGxheTogYmxvY2s7IH1cXG5cXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4gIGNlbGwgaG92ZXIgZGlyZWN0XFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2RpcmVjdFtkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gW2RhdGEtaG92ZXJlZF0ge1xcbiAgYmFja2dyb3VuZDogbm9uZTsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2RpcmVjdFtkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gW2RhdGEtaG92ZXJlZF06OmJlZm9yZSB7XFxuICAgIGRpc3BsYXk6IGJsb2NrOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fZGlyZWN0W2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSBbZGF0YS1ob3ZlcmVkXTo6YWZ0ZXIge1xcbiAgICBkaXNwbGF5OiBibG9jaztcXG4gICAgYmFja2dyb3VuZDogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItaGlnaGxpZ2h0ZWQtYmctY29sb3IsICNiN2NhZmIpOyB9XFxuXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2RpcmVjdFtkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gW2RhdGEtaG92ZXJlZC1vZmZzZXRdIHtcXG4gIGJhY2tncm91bmQ6IG5vbmU7IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19kaXJlY3RbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIFtkYXRhLWhvdmVyZWQtb2Zmc2V0XTo6YmVmb3JlIHtcXG4gICAgZGlzcGxheTogYmxvY2s7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWhpZ2hsaWdodGVkLWJnLWNvbG9yLCAjYjdjYWZiKTsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2RpcmVjdFtkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gW2RhdGEtaG92ZXJlZC1vZmZzZXRdOjphZnRlciB7XFxuICAgIGRpc3BsYXk6IGJsb2NrOyB9XFxuXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuICBjZWxsIGhvdmVyIHJldmVyc2VkXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3JldmVyc2VkW2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSBbZGF0YS1ob3ZlcmVkXSB7XFxuICBiYWNrZ3JvdW5kOiBub25lOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fcmV2ZXJzZWRbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIFtkYXRhLWhvdmVyZWRdOjpiZWZvcmUge1xcbiAgICBkaXNwbGF5OiBibG9jaztcXG4gICAgYmFja2dyb3VuZDogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItaGlnaGxpZ2h0ZWQtYmctY29sb3IsICNiN2NhZmIpOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fcmV2ZXJzZWRbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIFtkYXRhLWhvdmVyZWRdOjphZnRlciB7XFxuICAgIGRpc3BsYXk6IGJsb2NrOyB9XFxuXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3JldmVyc2VkW2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSBbZGF0YS1ob3ZlcmVkLW9mZnNldF0ge1xcbiAgYmFja2dyb3VuZDogbm9uZTsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3JldmVyc2VkW2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSBbZGF0YS1ob3ZlcmVkLW9mZnNldF06OmJlZm9yZSB7XFxuICAgIGRpc3BsYXk6IGJsb2NrOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fcmV2ZXJzZWRbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIFtkYXRhLWhvdmVyZWQtb2Zmc2V0XTo6YWZ0ZXIge1xcbiAgICBkaXNwbGF5OiBibG9jaztcXG4gICAgYmFja2dyb3VuZDogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItaGlnaGxpZ2h0ZWQtYmctY29sb3IsICNiN2NhZmIpOyB9XFxuXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcImJhc2ljXFxcIl0gLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NlbGw6OmJlZm9yZSwgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcImJhc2ljXFxcIl0gLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NlbGw6OmFmdGVyIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGRpc3BsYXk6IGJsb2NrO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICB0b3A6IDA7XFxuICBtYXJnaW46IDA7XFxuICBjb250ZW50OiAnJztcXG4gIHotaW5kZXg6IDA7IH1cXG5cXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG5cXG4gICAgc2VsZWN0aW9ucywgbGVmdCAtIGNlbnRlciAtIHJpZ2h0XFxuXFxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuICBjZWxscyBkaXNhYmxlZFxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJiYXNpY1xcXCJdIFtkYXRhLWRpc2FibGVkPVxcXCJjZW50ZXJcXFwiXSB7XFxuICB0ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaDtcXG4gIGNvbG9yOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1kaXNhYmxlZC1jb2xvciwgI2JmYmZiZik7IH1cXG5cXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4gIGNlbGxzIGhpZ2hsaWdodGVkXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcImJhc2ljXFxcIl0gW2RhdGEtaGlnaGxpZ2h0ZWQ9XFxcImxlZnRcXFwiXSB7XFxuICBjb2xvcjogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItaGlnaGxpZ2h0ZWQtY29sb3IsICMzNzM3MzcpOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwiYmFzaWNcXFwiXSBbZGF0YS1oaWdobGlnaHRlZD1cXFwibGVmdFxcXCJdOjpiZWZvcmUge1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1oaWdobGlnaHRlZC1iZy1jb2xvciwgI2I3Y2FmYik7XFxuICAgIG9wYWNpdHk6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWNlbGwtYmctb3BhY2l0eSwgMC41KTtcXG4gICAgd2lkdGg6IDUwJTtcXG4gICAgbGVmdDogNTAlOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwiYmFzaWNcXFwiXSBbZGF0YS1oaWdobGlnaHRlZD1cXFwibGVmdFxcXCJdOjphZnRlciB7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWhpZ2hsaWdodGVkLWJnLWNvbG9yLCAjYjdjYWZiKTtcXG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItY2VsbC1ib3JkZXItcmFkaXVzLCA2cHgpOyB9XFxuXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcImJhc2ljXFxcIl0gW2RhdGEtaGlnaGxpZ2h0ZWQ9XFxcImNlbnRlclxcXCJdIHtcXG4gIGNvbG9yOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1oaWdobGlnaHRlZC1jb2xvciwgIzM3MzczNyk7IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJiYXNpY1xcXCJdIFtkYXRhLWhpZ2hsaWdodGVkPVxcXCJjZW50ZXJcXFwiXTo6YmVmb3JlIHtcXG4gICAgYmFja2dyb3VuZDogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItaGlnaGxpZ2h0ZWQtYmctY29sb3IsICNiN2NhZmIpO1xcbiAgICBvcGFjaXR5OiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1jZWxsLWJnLW9wYWNpdHksIDAuNSk7IH1cXG5cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwiYmFzaWNcXFwiXSBbZGF0YS1oaWdobGlnaHRlZD1cXFwicmlnaHRcXFwiXSB7XFxuICBjb2xvcjogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItaGlnaGxpZ2h0ZWQtY29sb3IsICMzNzM3MzcpOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwiYmFzaWNcXFwiXSBbZGF0YS1oaWdobGlnaHRlZD1cXFwicmlnaHRcXFwiXTo6YmVmb3JlIHtcXG4gICAgYmFja2dyb3VuZDogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItaGlnaGxpZ2h0ZWQtYmctY29sb3IsICNiN2NhZmIpO1xcbiAgICBvcGFjaXR5OiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1jZWxsLWJnLW9wYWNpdHksIDAuNSk7XFxuICAgIHdpZHRoOiA1MCU7XFxuICAgIHJpZ2h0OiA1MCU7IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJiYXNpY1xcXCJdIFtkYXRhLWhpZ2hsaWdodGVkPVxcXCJyaWdodFxcXCJdOjphZnRlciB7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWhpZ2hsaWdodGVkLWJnLWNvbG9yLCAjYjdjYWZiKTtcXG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItY2VsbC1ib3JkZXItcmFkaXVzLCA2cHgpOyB9XFxuXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuICBjZWxscyBpbnZhbGlkXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcImJhc2ljXFxcIl0gW2RhdGEtaW52YWxpZD1cXFwibGVmdFxcXCJdIHtcXG4gIGNvbG9yOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1pbnZhbGlkLWNvbG9yLCAjYjJiMmIyKTsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcImJhc2ljXFxcIl0gW2RhdGEtaW52YWxpZD1cXFwibGVmdFxcXCJdOjpiZWZvcmUge1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1pbnZhbGlkLWJnLWNvbG9yLCAjZTNlM2UzKTtcXG4gICAgb3BhY2l0eTogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItY2VsbC1iZy1vcGFjaXR5LCAwLjUpO1xcbiAgICB3aWR0aDogNTAlO1xcbiAgICBsZWZ0OiA1MCU7IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJiYXNpY1xcXCJdIFtkYXRhLWludmFsaWQ9XFxcImxlZnRcXFwiXTo6YWZ0ZXIge1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1pbnZhbGlkLWJnLWNvbG9yLCAjZTNlM2UzKTtcXG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItY2VsbC1ib3JkZXItcmFkaXVzLCA2cHgpOyB9XFxuXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcImJhc2ljXFxcIl0gW2RhdGEtaW52YWxpZD1cXFwiY2VudGVyXFxcIl0ge1xcbiAgY29sb3I6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWludmFsaWQtY29sb3IsICNiMmIyYjIpOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwiYmFzaWNcXFwiXSBbZGF0YS1pbnZhbGlkPVxcXCJjZW50ZXJcXFwiXTo6YmVmb3JlIHtcXG4gICAgYmFja2dyb3VuZDogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItaW52YWxpZC1iZy1jb2xvciwgI2UzZTNlMyk7XFxuICAgIG9wYWNpdHk6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWNlbGwtYmctb3BhY2l0eSwgMC41KTsgfVxcblxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJiYXNpY1xcXCJdIFtkYXRhLWludmFsaWQ9XFxcInJpZ2h0XFxcIl0ge1xcbiAgY29sb3I6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWludmFsaWQtY29sb3IsICNiMmIyYjIpOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwiYmFzaWNcXFwiXSBbZGF0YS1pbnZhbGlkPVxcXCJyaWdodFxcXCJdOjpiZWZvcmUge1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1pbnZhbGlkLWJnLWNvbG9yLCAjZTNlM2UzKTtcXG4gICAgb3BhY2l0eTogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItY2VsbC1iZy1vcGFjaXR5LCAwLjUpO1xcbiAgICB3aWR0aDogNTAlO1xcbiAgICByaWdodDogNTAlOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwiYmFzaWNcXFwiXSBbZGF0YS1pbnZhbGlkPVxcXCJyaWdodFxcXCJdOjphZnRlciB7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWludmFsaWQtYmctY29sb3IsICNlM2UzZTMpO1xcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1jZWxsLWJvcmRlci1yYWRpdXMsIDZweCk7IH1cXG5cXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4gIGNlbGwgaG92ZXJcXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwiYmFzaWNcXFwiXSBbZGF0YS1ob3ZlcmVkXTpub3QoW2RhdGEtZGlzYWJsZWQ9XFxcImNlbnRlclxcXCJdKSB7XFxuICBjb2xvcjogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItaGlnaGxpZ2h0ZWQtY29sb3IsICMzNzM3MzcpOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwiYmFzaWNcXFwiXSBbZGF0YS1ob3ZlcmVkXTpub3QoW2RhdGEtZGlzYWJsZWQ9XFxcImNlbnRlclxcXCJdKTo6YWZ0ZXIge1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1oaWdobGlnaHRlZC1iZy1jb2xvciwgI2I3Y2FmYik7XFxuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWNlbGwtYm9yZGVyLXJhZGl1cywgNnB4KTsgfVxcblxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcblxcbiAgICBjb2xvcnNcXG5cXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgZm9udDogMXJlbS8xLjQgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGJhY2tncm91bmQ6ICNmZmY7IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FwdGlvbiB7XFxuICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyO1xcbiAgICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7XFxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyO1xcbiAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyO1xcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICBsaW5lLWhlaWdodDogMnJlbTtcXG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcXG4gICAgbWFyZ2luLWJvdHRvbTogMi4zZW07XFxuICAgIHBhZGRpbmctdG9wOiAwO1xcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fdG9vbHRpcCB7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLXRvb2x0aXAtYmctY29sb3IsICMzMzMpO1xcbiAgICBjb2xvcjogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItdG9vbHRpcC1jb2xvciwgI2ZmZik7XFxuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xcbiAgICBwYWRkaW5nOiA0cHggOHB4O1xcbiAgICBmb250LXNpemU6IDEzcHg7XFxuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcXG4gICAgei1pbmRleDogNTAwO1xcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTsgfVxcbiAgICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3Rvb2x0aXAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3Rvb2x0aXBBcnJvdyB7XFxuICAgICAgdmlzaWJpbGl0eTogaGlkZGVuOyB9XFxuICAgICAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X190b29sdGlwIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X190b29sdGlwQXJyb3csIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fdG9vbHRpcCAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fdG9vbHRpcEFycm93OjpiZWZvcmUge1xcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICAgICAgd2lkdGg6IDhweDtcXG4gICAgICAgIGhlaWdodDogOHB4O1xcbiAgICAgICAgYmFja2dyb3VuZDogaW5oZXJpdDsgfVxcbiAgICAgIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fdG9vbHRpcCAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fdG9vbHRpcEFycm93OjpiZWZvcmUge1xcbiAgICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcXG4gICAgICAgIGNvbnRlbnQ6ICcnO1xcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpOyB9XFxuICAgIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fdG9vbHRpcFtkYXRhLXBvcHBlci1wbGFjZW1lbnRePSd0b3AnXSA+IC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X190b29sdGlwQXJyb3cge1xcbiAgICAgIGJvdHRvbTogLTRweDsgfVxcbiAgICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3Rvb2x0aXBbZGF0YS1wb3BwZXItcGxhY2VtZW50Xj0nYm90dG9tJ10gPiAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fdG9vbHRpcEFycm93IHtcXG4gICAgICB0b3A6IC00cHg7IH1cXG4gICAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X190b29sdGlwW2RhdGEtcG9wcGVyLXBsYWNlbWVudF49J2xlZnQnXSA+IC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X190b29sdGlwQXJyb3cge1xcbiAgICAgIHJpZ2h0OiAtNHB4OyB9XFxuICAgIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fdG9vbHRpcFtkYXRhLXBvcHBlci1wbGFjZW1lbnRePSdyaWdodCddID4gLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3Rvb2x0aXBBcnJvdyB7XFxuICAgICAgbGVmdDogLTRweDsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19tb250aHNXcmFwcGVyIHtcXG4gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAtbXMtZmxleC13cmFwOiB3cmFwO1xcbiAgICBmbGV4LXdyYXA6IHdyYXA7XFxuICAgIGdhcDogMmVtOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX21DZWxsIHtcXG4gICAgZm9udC1zaXplOiAwLjg3NWVtO1xcbiAgICAtd2Via2l0LWJveC1mbGV4OiAxO1xcbiAgICAtbXMtZmxleDogMSAxIDI1JTtcXG4gICAgZmxleDogMSAxIDI1JTsgfVxcbiAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDk5MHB4KSB7XFxuICAgICAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19tQ2VsbCB7XFxuICAgICAgICAtd2Via2l0LWJveC1mbGV4OiAxO1xcbiAgICAgICAgLW1zLWZsZXg6IDEgMSAxMDAlO1xcbiAgICAgICAgZmxleDogMSAxIDEwMCU7IH0gfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19tb250aCB7XFxuICAgIGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGU7XFxuICAgIGJvcmRlci1zcGFjaW5nOiAwIDAuMmVtO1xcbiAgICBwYWRkaW5nOiAwO1xcbiAgICBtYXJnaW46IDA7XFxuICAgIHdpZHRoOiAxMDAlOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3RhYmxlSGVhZGVyLFxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19ib2R5IHtcXG4gICAgbWFyZ2luOiAwOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3RoIHtcXG4gICAgZm9udC1zaXplOiAwLjg1ZW07XFxuICAgIGNvbG9yOiAjYWFhYWFhO1xcbiAgICBoZWlnaHQ6IDI1cHg7XFxuICAgIHdpZHRoOiAzMHB4O1xcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2VsbCB7XFxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gICAgcGFkZGluZzogMDtcXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgICBib3JkZXI6IDA7XFxuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XFxuICAgIGNvbG9yOiAjNDQ0NDQ0O1xcbiAgICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgICB3aWR0aDogMzBweDsgfVxcbiAgICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NlbGwuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fdG9kYXkge1xcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NudCB7XFxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAtd2Via2l0LWJveC1wYWNrOiBjZW50ZXI7XFxuICAgIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjtcXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7XFxuICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7XFxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgIHotaW5kZXg6IDE7XFxuICAgIGZvbnQtc2l6ZTogMWVtO1xcbiAgICBmb250LXdlaWdodDogaW5oZXJpdDsgfVxcbiAgICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NudDo6YWZ0ZXIge1xcbiAgICAgIGNvbnRlbnQ6ICcnO1xcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICAgIG1hcmdpbi10b3A6IDEwMCU7IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9faW5mbyB7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgYm90dG9tOiAwO1xcbiAgICBsZWZ0OiAwO1xcbiAgICBmb250LXNpemU6IDAuNjVlbTtcXG4gICAgcGFkZGluZzogMXB4IDNweDtcXG4gICAgY29sb3I6IHJnYmEoNjAsIDYwLCA2MCwgMC41KTtcXG4gICAgcmlnaHQ6IDA7IH1cXG4gICAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19pbmZvID4gc3BhbiB7XFxuICAgICAgZGlzcGxheTogYmxvY2s7XFxuICAgICAgdGV4dC1hbGlnbjogY2VudGVyOyB9XFxuXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2ZvY3VzLFxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19kaXNhYmxlZCxcXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fc2VsZWN0ZWQsXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3JldmVyc2VkLFxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19kaXJlY3QsXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3NlbGVjdGluZ1JldmVyc2VkLFxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19zZWxlY3RpbmdEaXJlY3QsXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2FjdGlvbnNFbmFibGVkLFxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19oaWdobGlnaHRlZCxcXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9faW52YWxpZCB7XFxuICBjb2xvcjogaW5oZXJpdDsgfVxcblxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiAgY2VsbCBob3ZlciBjdXJzb3JzXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtc2VsZWN0YWJsZT1cXFwidHJ1ZVxcXCJdIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jZWxsICoge1xcbiAgY3Vyc29yOiBwb2ludGVyOyB9XFxuXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuXFxuICAgIGJ1dHRvbnNcXG5cXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2ZvcndhcmQsXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19iYWNrIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogMDtcXG4gIGxlZnQ6IDA7XFxuICBoZWlnaHQ6IDJyZW07XFxuICB3aWR0aDogMjNweDtcXG4gIGZpbGw6ICM0NDQ0NDQ7XFxuICBwYWRkaW5nOiAwO1xcbiAgYm9yZGVyLXJhZGl1czogMXB4O1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbiAgei1pbmRleDogMjsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19mb3J3YXJkIHN2ZyxcXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fYmFjayBzdmcge1xcbiAgICBoZWlnaHQ6IGluaGVyaXQ7XFxuICAgIHdpZHRoOiBpbmhlcml0OyB9XFxuXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19mb3J3YXJkIHtcXG4gIHJpZ2h0OiAwO1xcbiAgbGVmdDogYXV0bzsgfVxcblxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fZm9yd2FyZDphY3RpdmUsXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19mb3J3YXJkOmZvY3VzLFxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fYmFjazphY3RpdmUsXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19iYWNrOmZvY3VzIHtcXG4gIG91dGxpbmU6IG5vbmU7IH1cXG5cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2ZvcndhcmQ6aG92ZXIsXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19iYWNrOmhvdmVyIHtcXG4gIGZpbGw6ICMzODk1ZDk7IH1cXG5cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2ZvcndhcmRbZGlzYWJsZWRdLFxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fZm9yd2FyZFtkaXNhYmxlZF06aG92ZXIsXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19iYWNrW2Rpc2FibGVkXSxcXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2JhY2tbZGlzYWJsZWRdOmhvdmVyIHtcXG4gIG9wYWNpdHk6IDAuNTtcXG4gIGN1cnNvcjogZGVmYXVsdDtcXG4gIGZpbGw6ICM0NDQ0NDQ7IH1cXG5cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9zcmMvc3R5bGVzL2xvYWRpbmcuc2Nzc1wiLFwid2VicGFjazovLy4vc3JjL3N0eWxlcy9jYWxlbmRhci5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9zcmMvc3R5bGVzL3N2Zy11cmkuc2Nzc1wiLFwid2VicGFjazovLy4vc3JjL3N0eWxlcy9fdmFyaWFibGVzLnNjc3NcIixcIndlYnBhY2s6Ly8uL3NyYy9zdHlsZXMvZHJvcC5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9zcmMvc3R5bGVzL3RoZW1lLXNrZXcuc2Nzc1wiLFwid2VicGFjazovLy4vc3JjL3N0eWxlcy90aGVtZS1iYXNpYy5zY3NzXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUFBOzs7O3dEQ0l3RDtBREV4RDtFQUNFO0lBQ0UsK0JBQStC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O0FBSW5COzs7O3dEQW1Rd0Q7QUE5UHhEOztFQUlJLGtCQUFrQjtFQUNsQixNQUFNO0VBQ04sT0FBTztFQUNQLFlBQVk7RUFDWixXQUFXO0VBQ1gsYUVyTTJCO0VGc00zQixVQUFVO0VBQ1Ysa0JBQWtCO0VBQ2xCLGVBQWU7RUFDZixVQUFVLEVBQUE7RUFiZDs7SUFnQkksZUFBZTtJQUNmLGNBQWMsRUFBQTs7QUFqQmxCO0VBc0JJLFFBQVE7RUFDUixVQUFVLEVBQUE7O0FBdkJkOzs7O0VBOEJJLGFBQWEsRUFBQTs7QUE5QmpCOztFQW1DSSxhRXpNMkIsRUFBQTs7QUZzSy9COzs7O0VBMENJLFlBQVk7RUFDWixlQUFlO0VBQ2YsYUV4TzJCLEVBQUFcIixcInNvdXJjZXNDb250ZW50XCI6W1wiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuXFxuICAgIGxvYWRlclxcblxcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcblxcbkAtd2Via2l0LWtleWZyYW1lcyBib29raW5nc3luYy1zcGluIHtcXG4gIGZyb20ge1xcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcXG4gIH1cXG5cXG4gIHRvIHtcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xcbiAgfVxcbn1cXG5cXG5Aa2V5ZnJhbWVzIGJvb2tpbmdzeW5jLXNwaW4ge1xcbiAgZnJvbSB7XFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XFxuICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xcbiAgfVxcbiAgdG8ge1xcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XFxuICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XFxuICB9XFxufVxcblxcbi5jYWxlbmRhciB7XFxuICAmOjpiZWZvcmUge1xcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgIHRvcDogMDtcXG4gICAgbGVmdDogMDtcXG4gICAgd2lkdGg6IDEwMCU7XFxuICAgIGhlaWdodDogMTAwJTtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgjZmZmLCAuNyk7XFxuICAgIGNvbnRlbnQ6ICcnO1xcbiAgfVxcblxcbiAgJjo6YWZ0ZXIge1xcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgIHRvcDogNTAlO1xcbiAgICBsZWZ0OiA1MCU7XFxuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XFxuICAgIGJhY2tncm91bmQtc2l6ZTogMTAwJTtcXG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiAkaWNvbi1zcGlubmVyLXN2ZztcXG4gICAgaGVpZ2h0OiAyMHB4O1xcbiAgICB3aWR0aDogMjBweDtcXG4gICAgbWFyZ2luOiAtMTBweCAwIDAgLTEwcHg7XFxuICAgIGNvbnRlbnQ6ICcnO1xcbiAgICAtd2Via2l0LWFuaW1hdGlvbjogYm9va2luZ3N5bmMtc3BpbiAycyBpbmZpbml0ZSBsaW5lYXI7XFxuICAgIGFuaW1hdGlvbjogYm9va2luZ3N5bmMtc3BpbiAycyBpbmZpbml0ZSBsaW5lYXI7XFxuICAgIGFuaW1hdGlvbi1wbGF5LXN0YXRlOiBwYXVzZWQ7XFxuICB9XFxuXFxuICAmOjpiZWZvcmUsXFxuICAmOjphZnRlciB7XFxuICAgIHotaW5kZXg6IDEwMDA7XFxuICAgIG9wYWNpdHk6IDA7XFxuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcXG4gICAgLXdlYmtpdC10cmFuc2l0aW9uOiAkdHJhbnNpdGlvbjtcXG4gICAgLW8tdHJhbnNpdGlvbjogJHRyYW5zaXRpb247XFxuICAgIHRyYW5zaXRpb246ICR0cmFuc2l0aW9uO1xcbiAgfVxcblxcbiAgJi5sb2FkaW5nIHtcXG4gICAgJjo6YmVmb3JlLFxcbiAgICAmOjphZnRlciB7XFxuICAgICAgb3BhY2l0eTogMTtcXG4gICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xcbiAgICAgIGFuaW1hdGlvbi1wbGF5LXN0YXRlOiBydW5uaW5nO1xcbiAgICB9XFxuICB9XFxufVxcblwiLFwiQGltcG9ydCAnc3ZnLXVyaSc7XFxuQGltcG9ydCAndmFyaWFibGVzJztcXG5AaW1wb3J0ICdsb2FkaW5nJztcXG5AaW1wb3J0ICdkcm9wJztcXG5AaW1wb3J0ICd0aGVtZS1za2V3JztcXG5AaW1wb3J0ICd0aGVtZS1iYXNpYyc7XFxuXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuXFxuICAgIGNvbG9yc1xcblxcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcblxcbi5jYWxlbmRhciB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBmb250OiAxcmVtLzEuNCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmO1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgYmFja2dyb3VuZDogJGNhbGVuZGFyLWJnLWNvbG9yO1xcblxcbiAgLmNhcHRpb24ge1xcbiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gICAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIC13ZWJraXQtYm94LXBhY2s6IGNlbnRlcjtcXG4gICAgLW1zLWZsZXgtcGFjazogY2VudGVyO1xcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcXG4gICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgbGluZS1oZWlnaHQ6IDJyZW07XFxuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XFxuICAgIG1hcmdpbi1ib3R0b206IDIuM2VtO1xcbiAgICBwYWRkaW5nLXRvcDogMDtcXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgfVxcblxcbiAgLnRvb2x0aXAge1xcbiAgICBiYWNrZ3JvdW5kOiAkdG9vbHRpcC1iZy1jb2xvcjtcXG4gICAgY29sb3I6ICR0b29sdGlwLWNvbG9yO1xcbiAgICBmb250LXdlaWdodDogYm9sZDtcXG4gICAgcGFkZGluZzogNHB4IDhweDtcXG4gICAgZm9udC1zaXplOiAxM3B4O1xcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XFxuICAgIHotaW5kZXg6IDUwMDtcXG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxuXFxuICAgIC50b29sdGlwQXJyb3cge1xcbiAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcXG5cXG4gICAgICAmLCAmOjpiZWZvcmUge1xcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICAgICAgd2lkdGg6IDhweDtcXG4gICAgICAgIGhlaWdodDogOHB4O1xcbiAgICAgICAgYmFja2dyb3VuZDogaW5oZXJpdDtcXG4gICAgICB9XFxuXFxuICAgICAgJjo6YmVmb3JlIHtcXG4gICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XFxuICAgICAgICBjb250ZW50OiAnJztcXG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTtcXG4gICAgICB9XFxuICAgIH1cXG5cXG4gICAgJltkYXRhLXBvcHBlci1wbGFjZW1lbnRePSd0b3AnXSA+IC50b29sdGlwQXJyb3cge1xcbiAgICAgIGJvdHRvbTogLTRweDtcXG4gICAgfVxcbiAgICBcXG4gICAgJltkYXRhLXBvcHBlci1wbGFjZW1lbnRePSdib3R0b20nXSA+IC50b29sdGlwQXJyb3cge1xcbiAgICAgIHRvcDogLTRweDtcXG4gICAgfVxcbiAgICBcXG4gICAgJltkYXRhLXBvcHBlci1wbGFjZW1lbnRePSdsZWZ0J10gPiAudG9vbHRpcEFycm93IHtcXG4gICAgICByaWdodDogLTRweDtcXG4gICAgfVxcbiAgICBcXG4gICAgJltkYXRhLXBvcHBlci1wbGFjZW1lbnRePSdyaWdodCddID4gLnRvb2x0aXBBcnJvdyB7XFxuICAgICAgbGVmdDogLTRweDtcXG4gICAgfVxcbiAgfVxcblxcbiAgLm1vbnRoc1dyYXBwZXIge1xcbiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gICAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIC1tcy1mbGV4LXdyYXA6IHdyYXA7XFxuICAgIGZsZXgtd3JhcDogd3JhcDtcXG4gICAgZ2FwOiAyZW07XFxuICB9XFxuXFxuICAubUNlbGwge1xcbiAgICBmb250LXNpemU6IDAuODc1ZW07XFxuICAgIC13ZWJraXQtYm94LWZsZXg6IDE7XFxuICAgIC1tcy1mbGV4OiAxIDEgMjUlO1xcbiAgICBmbGV4OiAxIDEgMjUlO1xcblxcbiAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDk5MHB4KSB7XFxuICAgICAgLXdlYmtpdC1ib3gtZmxleDogMTtcXG4gICAgICAtbXMtZmxleDogMSAxIDEwMCU7XFxuICAgICAgZmxleDogMSAxIDEwMCU7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5tb250aCB7XFxuICAgIGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGU7XFxuICAgIGJvcmRlci1zcGFjaW5nOiAwIDAuMmVtO1xcbiAgICBwYWRkaW5nOiAwO1xcbiAgICBtYXJnaW46IDA7XFxuICAgIHdpZHRoOiAxMDAlO1xcbiAgICBcXG4gIH1cXG5cXG4gIC50YWJsZUhlYWRlcixcXG4gIC5ib2R5IHtcXG4gICAgbWFyZ2luOiAwO1xcbiAgfVxcblxcbiAgLnRoIHtcXG4gICAgZm9udC1zaXplOiAwLjg1ZW07XFxuICAgIGNvbG9yOiAkdGgtY29sb3I7XFxuICAgIGhlaWdodDogMjVweDtcXG4gICAgd2lkdGg6ICRjZWxsLXdpZHRoO1xcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICB9XFxuXFxuICAuY2VsbCB7XFxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gICAgcGFkZGluZzogMDtcXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgICBib3JkZXI6IDA7XFxuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XFxuICAgIGNvbG9yOiAkY2VsbC1jb2xvcjtcXG4gICAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gICAgd2lkdGg6ICRjZWxsLXdpZHRoO1xcblxcbiAgICAmLnRvZGF5IHtcXG4gICAgICBmb250LXdlaWdodDogYm9sZDtcXG4gICAgfVxcbiAgfVxcblxcbiAgLmNudCB7XFxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAtd2Via2l0LWJveC1wYWNrOiBjZW50ZXI7XFxuICAgIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjtcXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7XFxuICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7XFxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgIHotaW5kZXg6IDE7XFxuICAgIGZvbnQtc2l6ZTogMWVtO1xcbiAgICBmb250LXdlaWdodDogaW5oZXJpdDtcXG5cXG4gICAgJjo6YWZ0ZXIge1xcbiAgICBjb250ZW50OiAnJztcXG4gICAgZGlzcGxheTogYmxvY2s7XFxuICAgIG1hcmdpbi10b3A6IDEwMCU7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5pbmZvIHtcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICBib3R0b206IDA7XFxuICAgIGxlZnQ6IDA7XFxuICAgIGZvbnQtc2l6ZTogMC42NWVtO1xcbiAgICBwYWRkaW5nOiAxcHggM3B4O1xcbiAgICBjb2xvcjogJGluZm8tY29sb3I7XFxuICAgIHJpZ2h0OiAwO1xcblxcbiAgICA+IHNwYW4ge1xcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gICAgfVxcbiAgfVxcbn1cXG5cXG4uZm9jdXMsXFxuLmRpc2FibGVkLFxcbi5zZWxlY3RlZCxcXG4ucmV2ZXJzZWQsXFxuLmRpcmVjdCxcXG4uc2VsZWN0aW5nUmV2ZXJzZWQsXFxuLnNlbGVjdGluZ0RpcmVjdCxcXG4uYWN0aW9uc0VuYWJsZWQsXFxuLmhpZ2hsaWdodGVkLFxcbi5pbnZhbGlkIHtcXG4gIGNvbG9yOiBpbmhlcml0O1xcbn1cXG5cXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4gIGNlbGwgaG92ZXIgY3Vyc29yc1xcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcblxcbi5jYWxlbmRhciB7XFxuICAvLyBjdXJzb3IgcG9pbnRlciBpZiBjYWxlbmRhciBpcyBzZWxlY3RhYmxlXFxuICAmW2RhdGEtc2VsZWN0YWJsZT1cXFwidHJ1ZVxcXCJdIC5jZWxsICoge1xcbiAgICBjdXJzb3I6IHBvaW50ZXI7XFxuICB9XFxufVxcblxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcblxcbiAgICBidXR0b25zXFxuXFxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLmNhbGVuZGFyIHtcXG5cXG4gIC5mb3J3YXJkLFxcbiAgLmJhY2sge1xcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgIHRvcDogMDtcXG4gICAgbGVmdDogMDtcXG4gICAgaGVpZ2h0OiAycmVtO1xcbiAgICB3aWR0aDogMjNweDtcXG4gICAgZmlsbDogJGJ0bi1maWxsO1xcbiAgICBwYWRkaW5nOiAwO1xcbiAgICBib3JkZXItcmFkaXVzOiAxcHg7XFxuICAgIGN1cnNvcjogcG9pbnRlcjtcXG4gICAgei1pbmRleDogMjtcXG5cXG4gICAgc3ZnIHtcXG4gICAgaGVpZ2h0OiBpbmhlcml0O1xcbiAgICB3aWR0aDogaW5oZXJpdDtcXG4gICAgfVxcbiAgfVxcblxcbiAgLmZvcndhcmQge1xcbiAgICByaWdodDogMDtcXG4gICAgbGVmdDogYXV0bztcXG4gIH1cXG5cXG4gIC5mb3J3YXJkOmFjdGl2ZSxcXG4gIC5mb3J3YXJkOmZvY3VzLFxcbiAgLmJhY2s6YWN0aXZlLFxcbiAgLmJhY2s6Zm9jdXMge1xcbiAgICBvdXRsaW5lOiBub25lO1xcbiAgfVxcblxcbiAgLmZvcndhcmQ6aG92ZXIsXFxuICAuYmFjazpob3ZlciB7XFxuICAgIGZpbGw6ICRidG4tZmlsbC1ob3ZlcjtcXG4gIH1cXG5cXG4gIC5mb3J3YXJkW2Rpc2FibGVkXSxcXG4gIC5mb3J3YXJkW2Rpc2FibGVkXTpob3ZlcixcXG4gIC5iYWNrW2Rpc2FibGVkXSxcXG4gIC5iYWNrW2Rpc2FibGVkXTpob3ZlciB7XFxuICAgIG9wYWNpdHk6IDAuNTtcXG4gICAgY3Vyc29yOiBkZWZhdWx0O1xcbiAgICBmaWxsOiAkYnRuLWZpbGw7XFxuICB9XFxufVxcblwiLFwiLy8vL1xcbi8vLyBIZWxwZXIgZnVuY3Rpb24gdG8gZWFzaWx5IHVzZSBhbiBTVkcgaW5saW5lIGluIENTU1xcbi8vLyB3aXRob3V0IGVuY29kaW5nIGl0IHRvIGJhc2U2NCwgc2F2aW5nIGJ5dGVzLlxcbi8vLyBJdCBhbHNvIGhlbHBzIHdpdGggYnJvd3NlciBzdXBwb3J0Llxcbi8vLy9cXG5cXG4vLy8gQSBzbWFsbCBmdW5jdGlvbiBhbGxvd2luZyBza2lwcGluZyBiYXNlNjQgZW5jb2RpbmdcXG4vLy8gYW5kIHNpbXBseSBwYXN0aW5nIHRoZSBTVkcgbWFya3VwIHJpZ2h0IGluIHRoZSBDU1MuXFxuLy8vIEBhdXRob3IgSmFrb2IgRXJpa3Nlblxcbi8vLyBAbGluayBodHRwOi8vY29kZXBlbi5pby9qYWtvYi1lL3Blbi9kb01vTUxcXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRzdmcgLSBTVkcgaW1hZ2UgdG8gZW5jb2RlXFxuLy8vIEByZXR1cm4ge1N0cmluZ30gLSBFbmNvZGVkIFNWRyBkYXRhIHVyaVxcbkBmdW5jdGlvbiBzdmctdXJpKCRzdmcpIHtcXG4gICAgJGVuY29kZWQ6ICcnO1xcbiAgICAkc2xpY2U6IDIwMDA7XFxuICAgICRpbmRleDogMDtcXG4gICAgJGxvb3BzOiBjZWlsKHN0ci1sZW5ndGgoJHN2ZykgLyAkc2xpY2UpO1xcblxcbiAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRsb29wcyB7XFxuICAgICAgICAkY2h1bms6IHN0ci1zbGljZSgkc3ZnLCAkaW5kZXgsICRpbmRleCArICRzbGljZSAtIDEpO1xcbiAgICAgICAgJGNodW5rOiBzdHItcmVwbGFjZSgkY2h1bmssICdcXFwiJywgXFxcIidcXFwiKTtcXG4gICAgICAgICRjaHVuazogc3RyLXJlcGxhY2UoJGNodW5rLCAnPCcsICclM0MnKTtcXG4gICAgICAgICRjaHVuazogc3RyLXJlcGxhY2UoJGNodW5rLCAnPicsICclM0UnKTtcXG4gICAgICAgICRjaHVuazogc3RyLXJlcGxhY2UoJGNodW5rLCAnJicsICclMjYnKTtcXG4gICAgICAgICRjaHVuazogc3RyLXJlcGxhY2UoJGNodW5rLCAnIycsICclMjMnKTtcXG4gICAgICAgICRlbmNvZGVkOiAjeyRlbmNvZGVkfSN7JGNodW5rfTtcXG4gICAgICAgICRpbmRleDogJGluZGV4ICsgJHNsaWNlO1xcbiAgICB9XFxuXFxuICAgIEByZXR1cm4gdXJsKFxcXCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGY4LCN7JGVuY29kZWR9XFxcIik7XFxufVxcblxcbi8vLyBSZXBsYWNlIGAkc2VhcmNoYCB3aXRoIGAkcmVwbGFjZWAgaW4gYCRzdHJpbmdgXFxuLy8vIEBhdXRob3IgSHVnbyBHaXJhdWRlbFxcbi8vLyBAbGluayBodHRwOi8vc2Fzc21laXN0ZXIuY29tL2dpc3QvMWI0ZjJkYTU1Mjc4MzAwODhlNGRcXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRzdHJpbmcgLSBJbml0aWFsIHN0cmluZ1xcbi8vLyBAcGFyYW0ge1N0cmluZ30gJHNlYXJjaCAtIFN1YnN0cmluZyB0byByZXBsYWNlXFxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkcmVwbGFjZSAoJycpIC0gTmV3IHZhbHVlXFxuLy8vIEByZXR1cm4ge1N0cmluZ30gLSBVcGRhdGVkIHN0cmluZ1xcbkBmdW5jdGlvbiBzdHItcmVwbGFjZSgkc3RyaW5nLCAkc2VhcmNoLCAkcmVwbGFjZTogJycpIHtcXG4gICAgJGluZGV4OiBzdHItaW5kZXgoJHN0cmluZywgJHNlYXJjaCk7XFxuXFxuICAgIEBpZiAkaW5kZXgge1xcbiAgICAgICAgQHJldHVybiBzdHItc2xpY2UoJHN0cmluZywgMSwgJGluZGV4IC0gMSkgKyAkcmVwbGFjZSArIHN0ci1yZXBsYWNlKHN0ci1zbGljZSgkc3RyaW5nLCAkaW5kZXggKyBzdHItbGVuZ3RoKCRzZWFyY2gpKSwgJHNlYXJjaCwgJHJlcGxhY2UpO1xcbiAgICB9XFxuXFxuICAgIEByZXR1cm4gJHN0cmluZztcXG59XFxuXCIsXCIkaWNvbi1zcGlubmVyLXN2ZzogICAgICBzdmctdXJpKFxcXCI8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDMyIDMwLjk3Jz48cGF0aCBkPSdNMzIsMTUuNDhhMTYuNTIsMTYuNTIsMCwwLDEtMS4zNyw2LjI4LDE2LjM1LDE2LjM1LDAsMCwxLTksOC42MywxNS44NywxNS44NywwLDAsMS0xNy4zLTMuNzhBMTUuNDMsMTUuNDMsMCwwLDEsNC43Miw0LjcyLDE1LDE1LDAsMCwxLDE1LjQ5LjUyYTE0Ljc2LDE0Ljc2LDAsMCwxLDEwLjQsNC41NkExNC43NywxNC43NywwLDAsMSwyOSw5LjlhMTQuNDUsMTQuNDUsMCwwLDEsLjg1LDMuMzVoLjEzQTIuMDYsMi4wNiwwLDAsMSwzMiwxNS4zMWEuOTEuOTEsMCwwLDEsMCwuMTdaTTI4LjcyLDEwYTE0LjI3LDE0LjI3LDAsMCwwLTMuMi00LjU1LDE0LDE0LDAsMCwwLTEwLTMuOUExMy43MiwxMy43MiwwLDAsMCwzLDEwLjNhMTMuNDMsMTMuNDMsMCwwLDAsLjI0LDEwLjI3LDEzLjA1LDEzLjA1LDAsMCwwLDEyLjI4LDcuODIsMTIuOTIsMTIuOTIsMCwwLDAsNC44OC0xLjEsMTIuNjUsMTIuNjUsMCwwLDAsNC4wNi0yLjg3LDEyLjQ4LDEyLjQ4LDAsMCwwLDIuNjItNC4xNSwxMi4yNCwxMi4yNCwwLDAsMCwuODItNC43OWgwYS45MS45MSwwLDAsMSwwLS4xNywyLjA3LDIuMDcsMCwwLDEsMS44NC0yLjA1LDE0LjI3LDE0LjI3LDAsMCwwLTEtMy4yNlonIHRyYW5zZm9ybT0ndHJhbnNsYXRlKDAgLTAuNTEpJy8+PC9zdmc+XFxcIik7XFxuXFxuJGJyZWFrcG9pbnQteHM6ICAgICAgICAgOTAwcHg7XFxuXFxuJHRyYW5zaXRpb246ICAgICAgICAgICAgb3BhY2l0eSAwLjI1cyBlYXNlLWluLW91dDtcXG5cXG4vLyB0b29sdGlwXFxuXFxuJHRvb2x0aXAtYmctY29sb3I6ICAgICAgdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItdG9vbHRpcC1iZy1jb2xvciwgIzMzMyk7XFxuJHRvb2x0aXAtY29sb3I6ICAgICAgICAgdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItdG9vbHRpcC1jb2xvciwgI2ZmZik7XFxuXFxuLy8gY2FsZW5kYXJcXG5cXG4kY2FsZW5kYXItYmctY29sb3I6ICAgICAjZmZmO1xcblxcbi8vIGNhbGVuZGFyIGNlbGxzXFxuXFxuJGNlbGwtd2lkdGg6ICAgICAgICAgICAgMzBweDtcXG5cXG4kY2VsbC1jb2xvcjogICAgICAgICAgICAjNDQ0NDQ0O1xcblxcbiRkaXNhYmxlZC1iZy1jb2xvcjogICAgIHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWRpc2FibGVkLWJnLWNvbG9yLCAjZjBmMGYwKTtcXG4kZGlzYWJsZWQtY29sb3I6ICAgICAgICB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1kaXNhYmxlZC1jb2xvciwgI2JmYmZiZik7XFxuXFxuJGhpZ2hsaWdodGVkLWJnLWNvbG9yOiAgdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItaGlnaGxpZ2h0ZWQtYmctY29sb3IsIGxpZ2h0ZW4oIzU3ODRGNSwgMjAlKSk7XFxuJGhpZ2hsaWdodGVkLWNvbG9yOiAgICAgdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItaGlnaGxpZ2h0ZWQtY29sb3IsIGRhcmtlbigkY2VsbC1jb2xvciwgNSUpKTtcXG5cXG4kaW52YWxpZC1iZy1jb2xvcjogICAgICB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1pbnZhbGlkLWJnLWNvbG9yLCBkYXJrZW4oI2YwZjBmMCwgIDUlKSk7XFxuJGludmFsaWQtY29sb3I6ICAgICAgICAgdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItaW52YWxpZC1jb2xvciwgZGFya2VuKCNiZmJmYmYsIDUlKSk7XFxuXFxuLy8gY2FsZW5kYXIgdGFibGVcXG5cXG4kaW5mby1jb2xvcjogICAgICAgICAgICByZ2JhKDYwLCA2MCwgNjAsIDAuNSk7XFxuXFxuJHRoLWJvcmRlci1ib3R0b206ICAgICAgI2NiY2JjYjtcXG4kdGgtY29sb3I6ICAgICAgICAgICAgICAjYWFhYWFhO1xcblxcbi8vIGZvcm1cXG5cXG4kYnRuLWZpbGw6ICAgICAgICAgICAgICAkY2VsbC1jb2xvcjtcXG4kYnRuLWJvcmRlcjogICAgICAgICAgICAkdGgtYm9yZGVyLWJvdHRvbTtcXG4kYnRuLWZpbGwtaG92ZXI6ICAgICAgICAjMzg5NWQ5O1xcblwiLFwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuXFxuICAgIGRyb3Bkb3duXFxuXFxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuXFxuLmNhbGVuZGFyLmRyb3BCYXNpYyB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBkaXNwbGF5OiBub25lO1xcbiAgbWF4LXdpZHRoOiAxMDAlO1xcbiAgYm94LXNoYWRvdzogMXB4IDVweCA5cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKTtcXG4gIGJvcmRlcjogMXB4IHNvbGlkICNlMGUwZTA7XFxuICBiYWNrZ3JvdW5kOiAjZmZmO1xcbiAgbWFyZ2luOiAwO1xcbiAgcGFkZGluZzogMWVtO1xcbiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XFxuICBsaW5lLWhlaWdodDogMS41ZW07XFxuICB6LWluZGV4OiAxMDtcXG5cXG4gICYudmlzaWJsZSB7XFxuICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgfVxcblxcbiAgLmNhcHRpb24ge1xcbiAgICBtYXJnaW4tYm90dG9tOiAuN2VtO1xcbiAgfVxcblxcbiAgLmZvcndhcmQsXFxuICAuYmFjayB7XFxuICAgIHRvcDogMWVtO1xcbiAgICBsZWZ0OiAxZW07XFxuICB9XFxuXFxuICAuZm9yd2FyZCB7XFxuICAgIGxlZnQ6IGF1dG87XFxuICAgIHJpZ2h0OiAxZW07XFxuICB9XFxufVxcblwiLFwiLmNhbGVuZGFyW2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSB7XFxuICAuY2VsbCB7XFxuICAgICY6Zmlyc3QtY2hpbGQge1xcbiAgICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDRweDtcXG4gICAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA0cHg7XFxuICAgIH1cXG5cXG4gICAgJjpsYXN0LWNoaWxkIHtcXG4gICAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogNHB4O1xcbiAgICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiA0cHg7XFxuICAgIH1cXG5cXG4gICAgJjo6YmVmb3JlLFxcbiAgICAmOjphZnRlciB7XFxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICAgIHdpZHRoOiAxMDAlO1xcbiAgICAgIG1hcmdpbjogMDtcXG4gICAgICBjb250ZW50OiAnJztcXG4gICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2tldygtMzBkZWcpO1xcbiAgICAgIC1tcy10cmFuc2Zvcm06IHNrZXcoLTMwZGVnKTtcXG4gICAgICB0cmFuc2Zvcm06IHNrZXcoLTMwZGVnKTtcXG4gICAgICBib3JkZXItcmFkaXVzOiA2cHg7XFxuICAgICAgei1pbmRleDogMDtcXG5cXG4gICAgICAvLyBmaXggYmx1cnJ5IHNrZXdcXG4gICAgICBoZWlnaHQ6IGNhbGMoMTAwJSArIDJweCk7XFxuICAgICAgdG9wOiAtMXB4O1xcbiAgICB9XFxuXFxuICAgICY6OmJlZm9yZSB7XFxuICAgICAgbGVmdDogLTU1JTtcXG4gICAgfVxcblxcbiAgICAmOjphZnRlciB7XFxuICAgICAgbGVmdDogNTUlO1xcbiAgICB9XFxuICB9XFxufVxcblxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcblxcbiAgICBzZWxlY3Rpb25zLCBsZWZ0IC0gY2VudGVyIC0gcmlnaHRcXG5cXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG5cXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4gIGNlbGxzIGRpc2FibGVkXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuXFxuLmNhbGVuZGFyW2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSB7XFxuICBbZGF0YS1kaXNhYmxlZD1cXFwibGVmdFxcXCJdOjphZnRlciB7XFxuICAgIGJhY2tncm91bmQ6ICRkaXNhYmxlZC1iZy1jb2xvcjtcXG4gIH1cXG5cXG4gIFtkYXRhLWRpc2FibGVkPVxcXCJjZW50ZXJcXFwiXSB7XFxuICAgIGJhY2tncm91bmQ6ICRkaXNhYmxlZC1iZy1jb2xvcjtcXG4gICAgY29sb3I6ICRkaXNhYmxlZC1jb2xvcjtcXG5cXG4gICAgJjo6YmVmb3JlLFxcbiAgICAmOjphZnRlciB7XFxuICAgICAgZGlzcGxheTogbm9uZTtcXG4gICAgICBiYWNrZ3JvdW5kOiAkZGlzYWJsZWQtYmctY29sb3I7XFxuICAgIH1cXG4gIH1cXG5cXG4gIFtkYXRhLWRpc2FibGVkPVxcXCJyaWdodFxcXCJdOjpiZWZvcmUge1xcbiAgICBiYWNrZ3JvdW5kOiAkZGlzYWJsZWQtYmctY29sb3I7XFxuICB9XFxufVxcblxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiAgY2VsbHMgaGlnaGxpZ2h0ZWRcXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG5cXG4uY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIHtcXG4gIFtkYXRhLWhpZ2hsaWdodGVkPVxcXCJsZWZ0XFxcIl06OmFmdGVyIHtcXG4gICAgZGlzcGxheTogYmxvY2s7XFxuICAgIGJhY2tncm91bmQ6ICRoaWdobGlnaHRlZC1iZy1jb2xvcjtcXG4gIH1cXG5cXG4gIFtkYXRhLWhpZ2hsaWdodGVkPVxcXCJjZW50ZXJcXFwiXSB7XFxuICAgIGJhY2tncm91bmQ6ICRoaWdobGlnaHRlZC1iZy1jb2xvcjtcXG4gICAgY29sb3I6ICRoaWdobGlnaHRlZC1jb2xvcjtcXG5cXG4gICAgJjo6YmVmb3JlLFxcbiAgICAmOjphZnRlciB7XFxuICAgICAgZGlzcGxheTogbm9uZTtcXG4gICAgICBiYWNrZ3JvdW5kOiAkaGlnaGxpZ2h0ZWQtYmctY29sb3I7XFxuICAgIH1cXG4gIH1cXG5cXG4gIFtkYXRhLWhpZ2hsaWdodGVkPVxcXCJyaWdodFxcXCJdOjpiZWZvcmUge1xcbiAgICBkaXNwbGF5OiBibG9jaztcXG4gICAgYmFja2dyb3VuZDogJGhpZ2hsaWdodGVkLWJnLWNvbG9yO1xcbiAgfVxcbn1cXG5cXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4gIGNlbGxzIGludmFsaWRcXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG5cXG4uY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIHtcXG4gIFtkYXRhLWludmFsaWQ9XFxcImxlZnRcXFwiXSB7XFxuICAgIGJhY2tncm91bmQ6IG5vbmU7XFxuXFxuICAgICY6OmJlZm9yZSB7XFxuICAgICAgZGlzcGxheTogYmxvY2s7XFxuICAgIH1cXG5cXG4gICAgJjo6YWZ0ZXIge1xcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICAgIGJhY2tncm91bmQ6ICRpbnZhbGlkLWJnLWNvbG9yO1xcbiAgICB9XFxuICB9XFxuXFxuICBbZGF0YS1pbnZhbGlkPVxcXCJjZW50ZXJcXFwiXSB7XFxuICAgIGJhY2tncm91bmQ6ICRpbnZhbGlkLWJnLWNvbG9yO1xcbiAgICBjb2xvcjogJGludmFsaWQtY29sb3I7XFxuICBcXG4gICAgJjo6YmVmb3JlLFxcbiAgICAmOjphZnRlciB7XFxuICAgICAgZGlzcGxheTogbm9uZTtcXG4gICAgICBiYWNrZ3JvdW5kOiAkaW52YWxpZC1iZy1jb2xvcjtcXG4gICAgfVxcbiAgfVxcblxcbiAgW2RhdGEtaW52YWxpZD1cXFwicmlnaHRcXFwiXSB7XFxuICAgIGJhY2tncm91bmQ6IG5vbmU7XFxuXFxuICAgICY6OmJlZm9yZSB7XFxuICAgICAgZGlzcGxheTogYmxvY2s7XFxuICAgICAgYmFja2dyb3VuZDogJGludmFsaWQtYmctY29sb3I7XFxuICAgIH1cXG5cXG4gICAgJjo6YWZ0ZXIge1xcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICB9XFxuICB9XFxufVxcblxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiAgY2VsbCBob3ZlciBkaXJlY3RcXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG5cXG4uZGlyZWN0W2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSB7XFxuICAvLyBjZWxsIGhvdmVyZWQgd2hlbiBzZWxlY3RpbmcgbGVmdCB0byByaWdodFxcbiAgW2RhdGEtaG92ZXJlZF0ge1xcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xcblxcbiAgICAmOjpiZWZvcmUge1xcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICB9XFxuXFxuICAgICY6OmFmdGVyIHtcXG4gICAgICBkaXNwbGF5OiBibG9jaztcXG4gICAgICBiYWNrZ3JvdW5kOiAkaGlnaGxpZ2h0ZWQtYmctY29sb3I7XFxuICAgIH1cXG4gIH1cXG5cXG4gIFtkYXRhLWhvdmVyZWQtb2Zmc2V0XSB7XFxuICAgIGJhY2tncm91bmQ6IG5vbmU7XFxuXFxuICAgICY6OmJlZm9yZSB7XFxuICAgICAgZGlzcGxheTogYmxvY2s7XFxuICAgICAgYmFja2dyb3VuZDogJGhpZ2hsaWdodGVkLWJnLWNvbG9yO1xcbiAgICB9XFxuXFxuICAgICY6OmFmdGVyIHtcXG4gICAgICBkaXNwbGF5OiBibG9jaztcXG4gICAgfVxcbiAgfVxcbn1cXG5cXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4gIGNlbGwgaG92ZXIgcmV2ZXJzZWRcXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG5cXG4ucmV2ZXJzZWRbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIHtcXG4gIC8vIHdoZW4gc2VsZWN0aW5nIHJpZ2h0IHRvIGxlZnRcXG4gIFtkYXRhLWhvdmVyZWRdIHtcXG4gICAgYmFja2dyb3VuZDogbm9uZTtcXG5cXG4gICAgJjo6YmVmb3JlIHtcXG4gICAgICBkaXNwbGF5OiBibG9jaztcXG4gICAgICBiYWNrZ3JvdW5kOiAkaGlnaGxpZ2h0ZWQtYmctY29sb3I7XFxuICAgIH1cXG5cXG4gICAgJjo6YWZ0ZXIge1xcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICB9XFxuICB9XFxuXFxuICBbZGF0YS1ob3ZlcmVkLW9mZnNldF0ge1xcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xcblxcbiAgICAmOjpiZWZvcmUge1xcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICB9XFxuXFxuICAgICY6OmFmdGVyIHtcXG4gICAgICBkaXNwbGF5OiBibG9jaztcXG4gICAgICBiYWNrZ3JvdW5kOiAkaGlnaGxpZ2h0ZWQtYmctY29sb3I7XFxuICAgIH1cXG4gIH1cXG59XFxuXCIsXCIkY2VsbC1ib3JkZXItcmFkaXVzOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1jZWxsLWJvcmRlci1yYWRpdXMsIDZweCk7XFxuJGNlbGwtYmctb3BhY2l0eTogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItY2VsbC1iZy1vcGFjaXR5LCAuNSk7XFxuXFxuLmNhbGVuZGFyW2RhdGEtdGhlbWU9XFxcImJhc2ljXFxcIl0ge1xcbiAgLmNlbGwge1xcbiAgICAmOjpiZWZvcmUsXFxuICAgICY6OmFmdGVyIHtcXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgICAgZGlzcGxheTogYmxvY2s7XFxuICAgICAgd2lkdGg6IDEwMCU7XFxuICAgICAgaGVpZ2h0OiAxMDAlO1xcbiAgICAgIHRvcDogMDtcXG4gICAgICBtYXJnaW46IDA7XFxuICAgICAgY29udGVudDogJyc7XFxuICAgICAgei1pbmRleDogMDtcXG4gICAgfVxcbiAgfVxcbn1cXG5cXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG5cXG4gICAgc2VsZWN0aW9ucywgbGVmdCAtIGNlbnRlciAtIHJpZ2h0XFxuXFxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuICBjZWxscyBkaXNhYmxlZFxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcblxcbi5jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJiYXNpY1xcXCJdIHtcXG4gIC8vIFtkYXRhLWRpc2FibGVkPVxcXCJsZWZ0XFxcIl0ge1xcbiAgLy8gICBjb2xvcjogJGRpc2FibGVkLWNvbG9yO1xcbiAgLy8gfVxcblxcbiAgW2RhdGEtZGlzYWJsZWQ9XFxcImNlbnRlclxcXCJdIHtcXG4gICAgdGV4dC1kZWNvcmF0aW9uOiBsaW5lLXRocm91Z2g7XFxuICAgIGNvbG9yOiAkZGlzYWJsZWQtY29sb3I7XFxuICB9XFxufVxcblxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiAgY2VsbHMgaGlnaGxpZ2h0ZWRcXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG5cXG4uY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwiYmFzaWNcXFwiXSB7XFxuICBbZGF0YS1oaWdobGlnaHRlZD1cXFwibGVmdFxcXCJdIHtcXG4gICAgY29sb3I6ICRoaWdobGlnaHRlZC1jb2xvcjtcXG5cXG4gICAgJjo6YmVmb3JlIHtcXG4gICAgICBiYWNrZ3JvdW5kOiAkaGlnaGxpZ2h0ZWQtYmctY29sb3I7XFxuICAgICAgb3BhY2l0eTogJGNlbGwtYmctb3BhY2l0eTtcXG4gICAgICB3aWR0aDogNTAlO1xcbiAgICAgIGxlZnQ6IDUwJTtcXG4gICAgfVxcblxcbiAgICAmOjphZnRlciB7XFxuICAgICAgYmFja2dyb3VuZDogJGhpZ2hsaWdodGVkLWJnLWNvbG9yO1xcbiAgICAgIGJvcmRlci1yYWRpdXM6ICRjZWxsLWJvcmRlci1yYWRpdXM7XFxuICAgIH1cXG4gIH1cXG5cXG4gIFtkYXRhLWhpZ2hsaWdodGVkPVxcXCJjZW50ZXJcXFwiXSB7XFxuICAgIGNvbG9yOiAkaGlnaGxpZ2h0ZWQtY29sb3I7XFxuXFxuICAgICY6OmJlZm9yZSB7XFxuICAgICAgYmFja2dyb3VuZDogJGhpZ2hsaWdodGVkLWJnLWNvbG9yO1xcbiAgICAgIG9wYWNpdHk6ICRjZWxsLWJnLW9wYWNpdHk7XFxuICAgIH1cXG4gIH1cXG5cXG4gIFtkYXRhLWhpZ2hsaWdodGVkPVxcXCJyaWdodFxcXCJdIHtcXG4gICAgY29sb3I6ICRoaWdobGlnaHRlZC1jb2xvcjtcXG5cXG4gICAgJjo6YmVmb3JlIHtcXG4gICAgICBiYWNrZ3JvdW5kOiAkaGlnaGxpZ2h0ZWQtYmctY29sb3I7XFxuICAgICAgb3BhY2l0eTogJGNlbGwtYmctb3BhY2l0eTtcXG4gICAgICB3aWR0aDogNTAlO1xcbiAgICAgIHJpZ2h0OiA1MCU7XFxuICAgIH1cXG5cXG4gICAgJjo6YWZ0ZXIge1xcbiAgICAgIGJhY2tncm91bmQ6ICRoaWdobGlnaHRlZC1iZy1jb2xvcjtcXG4gICAgICBib3JkZXItcmFkaXVzOiAkY2VsbC1ib3JkZXItcmFkaXVzO1xcbiAgICB9XFxuICB9XFxufVxcblxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiAgY2VsbHMgaW52YWxpZFxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcblxcbi5jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJiYXNpY1xcXCJdIHtcXG4gIFtkYXRhLWludmFsaWQ9XFxcImxlZnRcXFwiXSB7XFxuICAgIGNvbG9yOiAkaW52YWxpZC1jb2xvcjtcXG5cXG4gICAgJjo6YmVmb3JlIHtcXG4gICAgICBiYWNrZ3JvdW5kOiAkaW52YWxpZC1iZy1jb2xvcjtcXG4gICAgICBvcGFjaXR5OiAkY2VsbC1iZy1vcGFjaXR5O1xcbiAgICAgIHdpZHRoOiA1MCU7XFxuICAgICAgbGVmdDogNTAlO1xcbiAgICB9XFxuXFxuICAgICY6OmFmdGVyIHtcXG4gICAgICBiYWNrZ3JvdW5kOiAkaW52YWxpZC1iZy1jb2xvcjtcXG4gICAgICBib3JkZXItcmFkaXVzOiAkY2VsbC1ib3JkZXItcmFkaXVzO1xcbiAgICB9XFxuICB9XFxuXFxuICBbZGF0YS1pbnZhbGlkPVxcXCJjZW50ZXJcXFwiXSB7XFxuICAgIGNvbG9yOiAkaW52YWxpZC1jb2xvcjtcXG5cXG4gICAgJjo6YmVmb3JlIHtcXG4gICAgICBiYWNrZ3JvdW5kOiAkaW52YWxpZC1iZy1jb2xvcjtcXG4gICAgICBvcGFjaXR5OiAkY2VsbC1iZy1vcGFjaXR5O1xcbiAgICB9XFxuICB9XFxuXFxuICBbZGF0YS1pbnZhbGlkPVxcXCJyaWdodFxcXCJdIHtcXG4gICAgY29sb3I6ICRpbnZhbGlkLWNvbG9yO1xcblxcbiAgICAmOjpiZWZvcmUge1xcbiAgICAgIGJhY2tncm91bmQ6ICRpbnZhbGlkLWJnLWNvbG9yO1xcbiAgICAgIG9wYWNpdHk6ICRjZWxsLWJnLW9wYWNpdHk7XFxuICAgICAgd2lkdGg6IDUwJTtcXG4gICAgICByaWdodDogNTAlO1xcbiAgICB9XFxuXFxuICAgICY6OmFmdGVyIHtcXG4gICAgICBiYWNrZ3JvdW5kOiAkaW52YWxpZC1iZy1jb2xvcjtcXG4gICAgICBib3JkZXItcmFkaXVzOiAkY2VsbC1ib3JkZXItcmFkaXVzO1xcbiAgICB9XFxuICB9XFxufVxcblxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiAgY2VsbCBob3Zlclxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcblxcbi5jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJiYXNpY1xcXCJdIHtcXG4gIFtkYXRhLWhvdmVyZWRdOm5vdChbZGF0YS1kaXNhYmxlZD1cXFwiY2VudGVyXFxcIl0pIHtcXG4gICAgY29sb3I6ICRoaWdobGlnaHRlZC1jb2xvcjtcXG5cXG4gICAgJjo6YWZ0ZXIge1xcbiAgICAgIGJhY2tncm91bmQ6ICRoaWdobGlnaHRlZC1iZy1jb2xvcjtcXG4gICAgICBib3JkZXItcmFkaXVzOiAkY2VsbC1ib3JkZXItcmFkaXVzO1xcbiAgICB9XFxuICB9XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ubG9jYWxzID0ge1xuXHRcImNhbGVuZGFyXCI6IFwiQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJcIixcblx0XCJib29raW5nc3luYy1zcGluXCI6IFwiQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fYm9va2luZ3N5bmMtc3BpblwiLFxuXHRcImxvYWRpbmdcIjogXCJCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19sb2FkaW5nXCIsXG5cdFwiZHJvcEJhc2ljXCI6IFwiQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fZHJvcEJhc2ljXCIsXG5cdFwidmlzaWJsZVwiOiBcIkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3Zpc2libGVcIixcblx0XCJjYXB0aW9uXCI6IFwiQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FwdGlvblwiLFxuXHRcImZvcndhcmRcIjogXCJCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19mb3J3YXJkXCIsXG5cdFwiYmFja1wiOiBcIkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2JhY2tcIixcblx0XCJjZWxsXCI6IFwiQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2VsbFwiLFxuXHRcImRpcmVjdFwiOiBcIkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2RpcmVjdFwiLFxuXHRcInJldmVyc2VkXCI6IFwiQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fcmV2ZXJzZWRcIixcblx0XCJ0b29sdGlwXCI6IFwiQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fdG9vbHRpcFwiLFxuXHRcInRvb2x0aXBBcnJvd1wiOiBcIkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3Rvb2x0aXBBcnJvd1wiLFxuXHRcIm1vbnRoc1dyYXBwZXJcIjogXCJCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19tb250aHNXcmFwcGVyXCIsXG5cdFwibUNlbGxcIjogXCJCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19tQ2VsbFwiLFxuXHRcIm1vbnRoXCI6IFwiQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fbW9udGhcIixcblx0XCJ0YWJsZUhlYWRlclwiOiBcIkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3RhYmxlSGVhZGVyXCIsXG5cdFwiYm9keVwiOiBcIkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2JvZHlcIixcblx0XCJ0aFwiOiBcIkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3RoXCIsXG5cdFwidG9kYXlcIjogXCJCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X190b2RheVwiLFxuXHRcImNudFwiOiBcIkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NudFwiLFxuXHRcImluZm9cIjogXCJCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19pbmZvXCIsXG5cdFwiZm9jdXNcIjogXCJCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19mb2N1c1wiLFxuXHRcImRpc2FibGVkXCI6IFwiQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fZGlzYWJsZWRcIixcblx0XCJzZWxlY3RlZFwiOiBcIkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3NlbGVjdGVkXCIsXG5cdFwic2VsZWN0aW5nUmV2ZXJzZWRcIjogXCJCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19zZWxlY3RpbmdSZXZlcnNlZFwiLFxuXHRcInNlbGVjdGluZ0RpcmVjdFwiOiBcIkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3NlbGVjdGluZ0RpcmVjdFwiLFxuXHRcImFjdGlvbnNFbmFibGVkXCI6IFwiQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fYWN0aW9uc0VuYWJsZWRcIixcblx0XCJoaWdobGlnaHRlZFwiOiBcIkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2hpZ2hsaWdodGVkXCIsXG5cdFwiaW52YWxpZFwiOiBcIkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2ludmFsaWRcIlxufTtcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGRpdiwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHNwYW4sIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBhcHBsZXQsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBvYmplY3QsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBpZnJhbWUsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBoMSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGgyLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgaDMsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBoNCwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGg1LCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgaDYsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBwLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgYmxvY2txdW90ZSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHByZSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGEsXFxuLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGFiYnIsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBhY3JvbnltLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgYWRkcmVzcywgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGJpZywgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGNpdGUsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBjb2RlLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgZGVsLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgZGZuLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgZW0sIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBpbWcsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBpbnMsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBrYmQsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBxLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgcywgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHNhbXAsXFxuLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHNtYWxsLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgc3RyaWtlLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgc3Ryb25nLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgc3ViLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgc3VwLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgdHQsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCB2YXIsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBiLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgdSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGksIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBjZW50ZXIsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBkbCwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGR0LCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgZGQsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBvbCwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHVsLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgbGksXFxuLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGZpZWxkc2V0LCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgZm9ybSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGRpdi5Cb29raW5nU3luY1dpZGdldFV0aWxzX19mb3JtLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgbGFiZWwsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBsZWdlbmQsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCB0YWJsZSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGNhcHRpb24sIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCB0Ym9keSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHRmb290LCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgdGhlYWQsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCB0cixcXG4uQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgdGgsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCB0ZCwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGFydGljbGUsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBhc2lkZSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGNhbnZhcywgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGRldGFpbHMsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBmaWdjYXB0aW9uLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgZmlndXJlLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgZm9vdGVyLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgaGVhZGVyLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgaGdyb3VwLFxcbi5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBtZW51LCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgbmF2LCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgc2VjdGlvbiwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHN1bW1hcnksIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCB0aW1lLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgbWFyaywgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGF1ZGlvLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgdmlkZW8sIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBidXR0b24sIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCB0ZXh0YXJlYSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGlucHV0LCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX2J1dHRvbiwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19sZWdlbmQge1xcbiAgZm9udC1mYW1pbHk6IFxcXCJPcGVuIHNhbnNcXFwiLCBcXFwiSGVsdmV0aWNhIE5ldWVcXFwiLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmO1xcbiAgZm9udC1zaXplLWFkanVzdDogbm9uZTtcXG4gIGZvbnQtc2l6ZTogMTAwJTtcXG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcXG4gIGxldHRlci1zcGFjaW5nOiBub3JtYWw7XFxuICBmb250LXN0cmV0Y2g6IG5vcm1hbDtcXG4gIGZvbnQtdmFyaWFudDogbm9ybWFsO1xcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcXG4gIGZvbnQ6IG5vcm1hbCBub3JtYWwgMTAwJSBcXFwiT3BlbiBzYW5zXFxcIiwgXFxcIkhlbHZldGljYSBOZXVlXFxcIiwgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjtcXG4gIHRleHQtYWxpZ246IGxlZnQ7XFxuICAtbW96LXRleHQtYWxpZ24tbGFzdDogaW5pdGlhbDtcXG4gIHRleHQtYWxpZ24tbGFzdDogaW5pdGlhbDtcXG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcXG4gIC13ZWJraXQtdGV4dC1lbXBoYXNpczogbm9uZTtcXG4gIHRleHQtZW1waGFzaXM6IG5vbmU7XFxuICB0ZXh0LWhlaWdodDogYXV0bztcXG4gIHRleHQtaW5kZW50OiAwO1xcbiAgdGV4dC1qdXN0aWZ5OiBhdXRvO1xcbiAgdGV4dC1vdXRsaW5lOiBub25lO1xcbiAgdGV4dC1zaGFkb3c6IG5vbmU7XFxuICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcXG4gIHRleHQtd3JhcDogbm9ybWFsO1xcbiAgYWxpZ25tZW50LWFkanVzdDogYXV0bztcXG4gIGFsaWdubWVudC1iYXNlbGluZTogYmFzZWxpbmU7XFxuICAtd2Via2l0LWFuaW1hdGlvbjogbm9uZSAwIGVhc2UgMCAxIG5vcm1hbDtcXG4gIGFuaW1hdGlvbjogbm9uZSAwIGVhc2UgMCAxIG5vcm1hbDtcXG4gIC13ZWJraXQtYW5pbWF0aW9uLXBsYXktc3RhdGU6IHJ1bm5pbmc7XFxuICBhbmltYXRpb24tcGxheS1zdGF0ZTogcnVubmluZztcXG4gIGFwcGVhcmFuY2U6IG5vcm1hbDtcXG4gIGF6aW11dGg6IGNlbnRlcjtcXG4gIC13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTogdmlzaWJsZTtcXG4gIGJhY2tmYWNlLXZpc2liaWxpdHk6IHZpc2libGU7XFxuICBiYWNrZ3JvdW5kOiBub25lIDAgMCBhdXRvIHJlcGVhdCBzY3JvbGwgcGFkZGluZy1ib3ggdHJhbnNwYXJlbnQ7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XFxuICBiYXNlbGluZS1zaGlmdDogYmFzZWxpbmU7XFxuICBiaW5kaW5nOiBub25lO1xcbiAgYmxlZWQ6IDZwdDtcXG4gIGJvb2ttYXJrLWxhYmVsOiBjb250ZW50KCk7XFxuICBib29rbWFyay1sZXZlbDogbm9uZTtcXG4gIGJvb2ttYXJrLXN0YXRlOiBvcGVuO1xcbiAgYm9va21hcmstdGFyZ2V0OiBub25lO1xcbiAgYm9yZGVyOiAwIG5vbmUgdHJhbnNwYXJlbnQ7XFxuICBib3JkZXItcmFkaXVzOiAwO1xcbiAgYm90dG9tOiBhdXRvO1xcbiAgYm94LWFsaWduOiBzdHJldGNoO1xcbiAgLXdlYmtpdC1ib3gtZGVjb3JhdGlvbi1icmVhazogc2xpY2U7XFxuICBib3gtZGVjb3JhdGlvbi1icmVhazogc2xpY2U7XFxuICBib3gtZGlyZWN0aW9uOiBub3JtYWw7XFxuICBmbGV4OiAwLjA7XFxuICBmbGV4LWdyb3VwOiAxO1xcbiAgYm94LWxpbmVzOiBzaW5nbGU7XFxuICBib3gtb3JkaW5hbC1ncm91cDogMTtcXG4gIGJveC1vcmllbnQ6IGlubGluZS1heGlzO1xcbiAgYm94LXBhY2s6IHN0YXJ0O1xcbiAgYm94LXNoYWRvdzogbm9uZTtcXG4gIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xcbiAgLXdlYmtpdC1icmVhay1hZnRlcjogYXV0bztcXG4gIC1tb3otYnJlYWstYWZ0ZXI6IGF1dG87XFxuICBicmVhay1hZnRlcjogYXV0bztcXG4gIC13ZWJraXQtYnJlYWstYmVmb3JlOiBhdXRvO1xcbiAgLW1vei1icmVhay1iZWZvcmU6IGF1dG87XFxuICBicmVhay1iZWZvcmU6IGF1dG87XFxuICAtd2Via2l0LWNvbHVtbi1icmVhay1pbnNpZGU6IGF1dG87XFxuICBwYWdlLWJyZWFrLWluc2lkZTogYXV0bztcXG4gIGJyZWFrLWluc2lkZTogYXV0bztcXG4gIGNhcHRpb24tc2lkZTogdG9wO1xcbiAgY2xlYXI6IG5vbmU7XFxuICBjbGlwOiBhdXRvO1xcbiAgY29sb3I6IGluaGVyaXQ7XFxuICBjb2xvci1wcm9maWxlOiBhdXRvO1xcbiAgLXdlYmtpdC1jb2x1bW4tY291bnQ6IGF1dG87XFxuICAtbW96LWNvbHVtbi1jb3VudDogYXV0bztcXG4gIGNvbHVtbi1jb3VudDogYXV0bztcXG4gIC13ZWJraXQtY29sdW1uLWZpbGw6IGJhbGFuY2U7XFxuICAtbW96LWNvbHVtbi1maWxsOiBiYWxhbmNlO1xcbiAgY29sdW1uLWZpbGw6IGJhbGFuY2U7XFxuICAtd2Via2l0LWNvbHVtbi1nYXA6IG5vcm1hbDtcXG4gIC1tb3otY29sdW1uLWdhcDogbm9ybWFsO1xcbiAgY29sdW1uLWdhcDogbm9ybWFsO1xcbiAgLXdlYmtpdC1jb2x1bW4tcnVsZTogbWVkaXVtIG1lZGl1bSAjMWYxZjFmO1xcbiAgLW1vei1jb2x1bW4tcnVsZTogbWVkaXVtIG1lZGl1bSAjMWYxZjFmO1xcbiAgY29sdW1uLXJ1bGU6IG1lZGl1bSBtZWRpdW0gIzFmMWYxZjtcXG4gIC13ZWJraXQtY29sdW1uLXNwYW46IDE7XFxuICAtbW96LWNvbHVtbi1zcGFuOiAxO1xcbiAgY29sdW1uLXNwYW46IDE7XFxuICAtd2Via2l0LWNvbHVtbi13aWR0aDogYXV0bztcXG4gIC1tb3otY29sdW1uLXdpZHRoOiBhdXRvO1xcbiAgY29sdW1uLXdpZHRoOiBhdXRvO1xcbiAgLXdlYmtpdC1jb2x1bW5zOiBhdXRvIGF1dG87XFxuICAtbW96LWNvbHVtbnM6IGF1dG8gYXV0bztcXG4gIGNvbHVtbnM6IGF1dG8gYXV0bztcXG4gIGNvbnRlbnQ6IG5vcm1hbDtcXG4gIGNvdW50ZXItaW5jcmVtZW50OiBub25lO1xcbiAgY291bnRlci1yZXNldDogbm9uZTtcXG4gIGNyb3A6IGF1dG87XFxuICBjdXJzb3I6IGF1dG87XFxuICBkaXJlY3Rpb246IGx0cjtcXG4gIGRpc3BsYXk6IGlubGluZTtcXG4gIGRvbWluYW50LWJhc2VsaW5lOiBhdXRvO1xcbiAgZHJvcC1pbml0aWFsLWFmdGVyLWFkanVzdDogdGV4dC1hZnRlci1lZGdlO1xcbiAgZHJvcC1pbml0aWFsLWFmdGVyLWFsaWduOiBiYXNlbGluZTtcXG4gIGRyb3AtaW5pdGlhbC1iZWZvcmUtYWRqdXN0OiB0ZXh0LWJlZm9yZS1lZGdlO1xcbiAgZHJvcC1pbml0aWFsLWJlZm9yZS1hbGlnbjogY2Fwcy1oZWlnaHQ7XFxuICBkcm9wLWluaXRpYWwtc2l6ZTogYXV0bztcXG4gIGRyb3AtaW5pdGlhbC12YWx1ZTogaW5pdGlhbDtcXG4gIGVsZXZhdGlvbjogbGV2ZWw7XFxuICBlbXB0eS1jZWxsczogc2hvdztcXG4gIGZpdDogZmlsbDtcXG4gIGZpdC1wb3NpdGlvbjogMCUgMCU7XFxuICBmbG9hdDogbm9uZTtcXG4gIGZsb2F0LW9mZnNldDogMCAwO1xcbiAgZ3JpZC1jb2x1bW5zOiBub25lO1xcbiAgZ3JpZC1yb3dzOiBub25lO1xcbiAgaGFuZ2luZy1wdW5jdHVhdGlvbjogbm9uZTtcXG4gIGhlaWdodDogYXV0bztcXG4gIGh5cGhlbmF0ZS1hZnRlcjogYXV0bztcXG4gIGh5cGhlbmF0ZS1iZWZvcmU6IGF1dG87XFxuICBoeXBoZW5hdGUtY2hhcmFjdGVyOiBhdXRvO1xcbiAgaHlwaGVuYXRlLWxpbmVzOiBuby1saW1pdDtcXG4gIGh5cGhlbmF0ZS1yZXNvdXJjZTogbm9uZTtcXG4gIC13ZWJraXQtaHlwaGVuczogbWFudWFsO1xcbiAgLW1vei1oeXBoZW5zOiBtYW51YWw7XFxuICAtbXMtaHlwaGVuczogbWFudWFsO1xcbiAgaHlwaGVuczogbWFudWFsO1xcbiAgaWNvbjogYXV0bztcXG4gIGltYWdlLW9yaWVudGF0aW9uOiBhdXRvO1xcbiAgaW1hZ2UtcmVuZGVyaW5nOiBhdXRvO1xcbiAgaW1hZ2UtcmVzb2x1dGlvbjogbm9ybWFsO1xcbiAgaW5saW5lLWJveC1hbGlnbjogbGFzdDtcXG4gIGxlZnQ6IGF1dG87XFxuICBsaW5lLWhlaWdodDogaW5oZXJpdDtcXG4gIGxpbmUtc3RhY2tpbmc6IGlubGluZS1saW5lLWhlaWdodCBleGNsdWRlLXJ1YnkgY29uc2lkZXItc2hpZnRzO1xcbiAgbGlzdC1zdHlsZTogZGlzYyBvdXRzaWRlIG5vbmU7XFxuICBtYXJnaW46IDA7XFxuICBtYXJrczogbm9uZTtcXG4gIG1hcnF1ZWUtZGlyZWN0aW9uOiBmb3J3YXJkO1xcbiAgbWFycXVlZS1sb29wOiAxO1xcbiAgbWFycXVlZS1wbGF5LWNvdW50OiAxO1xcbiAgbWFycXVlZS1zcGVlZDogbm9ybWFsO1xcbiAgbWFycXVlZS1zdHlsZTogc2Nyb2xsO1xcbiAgbWF4LWhlaWdodDogbm9uZTtcXG4gIG1heC13aWR0aDogbm9uZTtcXG4gIG1pbi1oZWlnaHQ6IDA7XFxuICBtaW4td2lkdGg6IDA7XFxuICBtb3ZlLXRvOiBub3JtYWw7XFxuICBuYXYtZG93bjogYXV0bztcXG4gIG5hdi1pbmRleDogYXV0bztcXG4gIG5hdi1sZWZ0OiBhdXRvO1xcbiAgbmF2LXJpZ2h0OiBhdXRvO1xcbiAgbmF2LXVwOiBhdXRvO1xcbiAgb3BhY2l0eTogMTtcXG4gIG9ycGhhbnM6IDI7XFxuICBvdXRsaW5lOiBpbnZlcnQgbm9uZSBtZWRpdW07XFxuICBvdXRsaW5lLW9mZnNldDogMDtcXG4gIG92ZXJmbG93OiB2aXNpYmxlO1xcbiAgb3ZlcmZsb3ctc3R5bGU6IGF1dG87XFxuICBwYWRkaW5nOiAwO1xcbiAgcGFnZTogYXV0bztcXG4gIHBhZ2UtYnJlYWstYWZ0ZXI6IGF1dG87XFxuICBwYWdlLWJyZWFrLWJlZm9yZTogYXV0bztcXG4gIHBhZ2UtYnJlYWstaW5zaWRlOiBhdXRvO1xcbiAgcGFnZS1wb2xpY3k6IHN0YXJ0O1xcbiAgLXdlYmtpdC1wZXJzcGVjdGl2ZTogbm9uZTtcXG4gIHBlcnNwZWN0aXZlOiBub25lO1xcbiAgLXdlYmtpdC1wZXJzcGVjdGl2ZS1vcmlnaW46IDUwJSA1MCU7XFxuICBwZXJzcGVjdGl2ZS1vcmlnaW46IDUwJSA1MCU7XFxuICBwb3NpdGlvbjogc3RhdGljO1xcbiAgcHJlc2VudGF0aW9uLWxldmVsOiAwO1xcbiAgcHVuY3R1YXRpb24tdHJpbTogbm9uZTtcXG4gIHF1b3Rlczogbm9uZTtcXG4gIHJlbmRlcmluZy1pbnRlbnQ6IGF1dG87XFxuICByZXNpemU6IG5vbmU7XFxuICByaWdodDogYXV0bztcXG4gIHJvdGF0aW9uOiAwO1xcbiAgcm90YXRpb24tcG9pbnQ6IDUwJSA1MCU7XFxuICBydWJ5LWFsaWduOiBhdXRvO1xcbiAgcnVieS1vdmVyaGFuZzogbm9uZTtcXG4gIHJ1YnktcG9zaXRpb246IGJlZm9yZTtcXG4gIHJ1Ynktc3Bhbjogbm9uZTtcXG4gIHNpemU6IGF1dG87XFxuICBzdHJpbmctc2V0OiBub25lO1xcbiAgdGFibGUtbGF5b3V0OiBhdXRvO1xcbiAgdG9wOiBhdXRvO1xcbiAgLXdlYmtpdC10cmFuc2Zvcm06IG5vbmU7XFxuICAtbXMtdHJhbnNmb3JtOiBub25lO1xcbiAgdHJhbnNmb3JtOiBub25lO1xcbiAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiA1MCUgNTAlIDA7XFxuICAtbXMtdHJhbnNmb3JtLW9yaWdpbjogNTAlIDUwJSAwO1xcbiAgdHJhbnNmb3JtLW9yaWdpbjogNTAlIDUwJSAwO1xcbiAgLXdlYmtpdC10cmFuc2Zvcm0tc3R5bGU6IGZsYXQ7XFxuICB0cmFuc2Zvcm0tc3R5bGU6IGZsYXQ7XFxuICB0cmFuc2l0aW9uOiBhbGwgMCBlYXNlIDA7XFxuICB1bmljb2RlLWJpZGk6IG5vcm1hbDtcXG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcXG4gIHdoaXRlLXNwYWNlOiBub3JtYWw7XFxuICB3aGl0ZS1zcGFjZS1jb2xsYXBzZTogY29sbGFwc2U7XFxuICB3aWRvd3M6IDI7XFxuICB3aWR0aDogYXV0bztcXG4gIHdvcmQtYnJlYWs6IG5vcm1hbDtcXG4gIHdvcmQtc3BhY2luZzogbm9ybWFsO1xcbiAgd29yZC13cmFwOiBub3JtYWw7XFxuICB6LWluZGV4OiBhdXRvO1xcbiAgdGV4dC1hbGlnbjogc3RhcnQ7XFxuICAvKiBBbmQgZGlzYWJsZSBNUyBncmFkaWVudHMgKi9cXG4gIGZpbHRlcjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KGVuYWJsZWQ9ZmFsc2UpO1xcbiAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XFxuICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlOyB9XFxuXFxuLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGFkZHJlc3MsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBibG9ja3F1b3RlLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgZGQsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBkaXYsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBkbCwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGR0LCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgZmllbGRzZXQsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBmb3JtLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgZGl2LkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX2Zvcm0sIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBmcmFtZSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGZyYW1lc2V0LCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgaDEsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBoMiwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGgzLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgaDQsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBoNSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGg2LCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgbm9mcmFtZXMsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBvbCwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHAsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCB1bCwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGNlbnRlciwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGRpciwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGhyLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgbWVudSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHByZSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGFydGljbGUsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBhc2lkZSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGNhbnZhcywgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGRldGFpbHMsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBmaWdjYXB0aW9uLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgZmlndXJlLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgZm9vdGVyLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgaGVhZGVyLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgaGdyb3VwLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgbWVudSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IG5hdiwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHNlY3Rpb24sIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBzdW1tYXJ5IHtcXG4gIGRpc3BsYXk6IGJsb2NrOyB9XFxuXFxuLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGxpIHtcXG4gIGRpc3BsYXk6IGxpc3QtaXRlbTsgfVxcblxcbi5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCB0YWJsZSB7XFxuICBkaXNwbGF5OiB0YWJsZTsgfVxcblxcbi5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCB0ciB7XFxuICBkaXNwbGF5OiB0YWJsZS1yb3c7IH1cXG5cXG4uQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgdGhlYWQge1xcbiAgZGlzcGxheTogdGFibGUtaGVhZGVyLWdyb3VwOyB9XFxuXFxuLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHRib2R5IHtcXG4gIGRpc3BsYXk6IHRhYmxlLXJvdy1ncm91cDsgfVxcblxcbi5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCB0Zm9vdCB7XFxuICBkaXNwbGF5OiB0YWJsZS1mb290ZXItZ3JvdXA7IH1cXG5cXG4uQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgY29sIHtcXG4gIGRpc3BsYXk6IHRhYmxlLWNvbHVtbjsgfVxcblxcbi5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBjb2xncm91cCB7XFxuICBkaXNwbGF5OiB0YWJsZS1jb2x1bW4tZ3JvdXA7IH1cXG5cXG4uQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgdGQsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCB0aCB7XFxuICBkaXNwbGF5OiB0YWJsZS1jZWxsOyB9XFxuXFxuLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGNhcHRpb24ge1xcbiAgZGlzcGxheTogdGFibGUtY2FwdGlvbjsgfVxcblxcbi5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBpbnB1dCwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHNlbGVjdCB7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IH1cXG5cXG4uQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgYiwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHN0cm9uZyB7XFxuICBmb250LXdlaWdodDogYm9sZDsgfVxcblxcbi5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBiID4gaSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHN0cm9uZyA+IGksIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBiID4gZW0sIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBzdHJvbmcgPiBlbSB7XFxuICBmb250LXdlaWdodDogYm9sZDtcXG4gIGZvbnQtc3R5bGU6IGl0YWxpYzsgfVxcblxcbi5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBpID4gYiwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGkgPiBzdHJvbmcge1xcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XFxuICBmb250LXN0eWxlOiBpdGFsaWM7IH1cXG5cXG4uQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgZW0gPiBiLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgZW0gPiBzdHJvbmcge1xcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XFxuICBmb250LXN0eWxlOiBpdGFsaWM7IH1cXG5cXG4uQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgdGV4dGFyZWEsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBpbnB1dCB7XFxuICBjdXJzb3I6IHRleHQ7IH1cXG5cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9zdHlsZXMvcmVzZXQuc2Nzc1wiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFBQTs7Ozs7O0VBT0ksd0VBQXdFO0VBQ3hFLHNCQUFzQjtFQUN0QixlQUFlO0VBQ2Ysa0JBQWtCO0VBQ2xCLHNCQUFzQjtFQUN0QixvQkFBb0I7RUFDcEIsb0JBQW9CO0VBQ3BCLG1CQUFtQjtFQUNuQixvRkFBb0Y7RUFDcEYsZ0JBQWdCO0VBQ2hCLDZCQUE2QjtFQUM3Qix3QkFBd0I7RUFDeEIscUJBQXFCO0VBQ3JCLDJCQUEyQjtFQUMzQixtQkFBbUI7RUFDbkIsaUJBQWlCO0VBQ2pCLGNBQWM7RUFDZCxrQkFBa0I7RUFDbEIsa0JBQWtCO0VBQ2xCLGlCQUFpQjtFQUNqQixvQkFBb0I7RUFDcEIsaUJBQWlCO0VBQ2pCLHNCQUFzQjtFQUN0Qiw0QkFBNEI7RUFDNUIseUNBQXlDO0VBQ3pDLGlDQUFpQztFQUNqQyxxQ0FBcUM7RUFDckMsNkJBQTZCO0VBQzdCLGtCQUFrQjtFQUNsQixlQUFlO0VBQ2Ysb0NBQW9DO0VBQ3BDLDRCQUE0QjtFQUM1QiwrREFBK0Q7RUFDL0QsNkJBQTZCO0VBQzdCLHNCQUFzQjtFQUN0Qix3QkFBd0I7RUFDeEIsYUFBYTtFQUNiLFVBQVU7RUFDVix5QkFBeUI7RUFDekIsb0JBQW9CO0VBQ3BCLG9CQUFvQjtFQUNwQixxQkFBcUI7RUFDckIsMEJBQTBCO0VBQzFCLGdCQUFnQjtFQUNoQixZQUFZO0VBQ1osa0JBQWtCO0VBQ2xCLG1DQUFtQztFQUNuQywyQkFBMkI7RUFDM0IscUJBQXFCO0VBQ3JCLFNBQVM7RUFDVCxhQUFhO0VBQ2IsaUJBQWlCO0VBQ2pCLG9CQUFvQjtFQUNwQix1QkFBdUI7RUFDdkIsZUFBZTtFQUNmLGdCQUFnQjtFQUNoQix1QkFBdUI7RUFDdkIseUJBQXlCO0VBQ3pCLHNCQUFzQjtFQUN0QixpQkFBaUI7RUFDakIsMEJBQTBCO0VBQzFCLHVCQUF1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QXpObEI7RUE0Tkksa0JBQWtCLEVBQUE7O0FBNU50QjtFQStOSSxjQUFjLEVBQUE7O0FBL05sQjtFQWtPSSxrQkFBa0IsRUFBQTs7QUFsT3RCO0VBcU9JLDJCQUEyQixFQUFBOztBQXJPL0I7RUF3T0ksd0JBQXdCLEVBQUE7O0FBeE81QjtFQTJPSSwyQkFBMkIsRUFBQTs7QUEzTy9CO0VBOE9JLHFCQUFxQixFQUFBOztBQTlPekI7RUFpUEksMkJBQTJCLEVBQUE7O0FBalAvQjtFQW9QSSxtQkFBbUIsRUFBQTs7QUFwUHZCO0VBdVBJLHNCQUFzQixFQUFBOztBQXZQMUI7RUEwUEkscUJBQXFCLEVBQUE7O0FBMVB6QjtFQTZQSSxpQkFBaUIsRUFBQTs7QUE3UHJCO0VBZ1FJLGlCQUFpQjtFQUNqQixrQkFBa0IsRUFBQTs7QUFqUXRCO0VBcVFNLGlCQUFpQjtFQUNqQixrQkFBa0IsRUFBQTs7QUF0UXhCO0VBMlFNLGlCQUFpQjtFQUNqQixrQkFBa0IsRUFBQTs7QUE1UXhCO0VBZ1JJLFlBQVksRUFBQVwiLFwic291cmNlc0NvbnRlbnRcIjpbXCIucmVzZXQge1xcclxcblxcdGRpdiwgc3BhbiwgYXBwbGV0LCBvYmplY3QsIGlmcmFtZSwgaDEsIGgyLCBoMywgaDQsIGg1LCBoNiwgcCwgYmxvY2txdW90ZSwgcHJlLCBhLFxcclxcblxcdGFiYnIsIGFjcm9ueW0sIGFkZHJlc3MsIGJpZywgY2l0ZSwgY29kZSwgZGVsLCBkZm4sIGVtLCBpbWcsIGlucywga2JkLCBxLCBzLCBzYW1wLFxcclxcblxcdHNtYWxsLCBzdHJpa2UsIHN0cm9uZywgc3ViLCBzdXAsIHR0LCB2YXIsIGIsIHUsIGksIGNlbnRlciwgZGwsIGR0LCBkZCwgb2wsIHVsLCBsaSxcXHJcXG5cXHRmaWVsZHNldCwgZm9ybSwgZGl2LmZvcm0sIGxhYmVsLCBsZWdlbmQsIHRhYmxlLCBjYXB0aW9uLCB0Ym9keSwgdGZvb3QsIHRoZWFkLCB0cixcXHJcXG5cXHR0aCwgdGQsIGFydGljbGUsIGFzaWRlLCBjYW52YXMsIGRldGFpbHMsIGZpZ2NhcHRpb24sIGZpZ3VyZSwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCxcXHJcXG5cXHRtZW51LCBuYXYsIHNlY3Rpb24sIHN1bW1hcnksIHRpbWUsIG1hcmssIGF1ZGlvLCB2aWRlbywgYnV0dG9uLCB0ZXh0YXJlYSwgaW5wdXQsIC5idXR0b24sIC5sZWdlbmQge1xcclxcbiAgICBmb250LWZhbWlseTogXFxcIk9wZW4gc2Fuc1xcXCIsIFxcXCJIZWx2ZXRpY2EgTmV1ZVxcXCIsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7XFxyXFxuICAgIGZvbnQtc2l6ZS1hZGp1c3Q6IG5vbmU7XFxyXFxuICAgIGZvbnQtc2l6ZTogMTAwJTtcXHJcXG4gICAgZm9udC1zdHlsZTogbm9ybWFsO1xcclxcbiAgICBsZXR0ZXItc3BhY2luZzogbm9ybWFsO1xcclxcbiAgICBmb250LXN0cmV0Y2g6IG5vcm1hbDtcXHJcXG4gICAgZm9udC12YXJpYW50OiBub3JtYWw7XFxyXFxuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XFxyXFxuICAgIGZvbnQ6IG5vcm1hbCBub3JtYWwgMTAwJSBcXFwiT3BlbiBzYW5zXFxcIiwgXFxcIkhlbHZldGljYSBOZXVlXFxcIiwgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjtcXHJcXG4gICAgdGV4dC1hbGlnbjogbGVmdDtcXHJcXG4gICAgLW1vei10ZXh0LWFsaWduLWxhc3Q6IGluaXRpYWw7XFxyXFxuICAgIHRleHQtYWxpZ24tbGFzdDogaW5pdGlhbDtcXHJcXG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xcclxcbiAgICAtd2Via2l0LXRleHQtZW1waGFzaXM6IG5vbmU7XFxyXFxuICAgIHRleHQtZW1waGFzaXM6IG5vbmU7XFxyXFxuICAgIHRleHQtaGVpZ2h0OiBhdXRvO1xcclxcbiAgICB0ZXh0LWluZGVudDogMDtcXHJcXG4gICAgdGV4dC1qdXN0aWZ5OiBhdXRvO1xcclxcbiAgICB0ZXh0LW91dGxpbmU6IG5vbmU7XFxyXFxuICAgIHRleHQtc2hhZG93OiBub25lO1xcclxcbiAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcXHJcXG4gICAgdGV4dC13cmFwOiBub3JtYWw7XFxyXFxuICAgIGFsaWdubWVudC1hZGp1c3Q6IGF1dG87XFxyXFxuICAgIGFsaWdubWVudC1iYXNlbGluZTogYmFzZWxpbmU7XFxyXFxuICAgIC13ZWJraXQtYW5pbWF0aW9uOiBub25lIDAgZWFzZSAwIDEgbm9ybWFsO1xcclxcbiAgICBhbmltYXRpb246IG5vbmUgMCBlYXNlIDAgMSBub3JtYWw7XFxyXFxuICAgIC13ZWJraXQtYW5pbWF0aW9uLXBsYXktc3RhdGU6IHJ1bm5pbmc7XFxyXFxuICAgIGFuaW1hdGlvbi1wbGF5LXN0YXRlOiBydW5uaW5nO1xcclxcbiAgICBhcHBlYXJhbmNlOiBub3JtYWw7XFxyXFxuICAgIGF6aW11dGg6IGNlbnRlcjtcXHJcXG4gICAgLXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OiB2aXNpYmxlO1xcclxcbiAgICBiYWNrZmFjZS12aXNpYmlsaXR5OiB2aXNpYmxlO1xcclxcbiAgICBiYWNrZ3JvdW5kOiBub25lIDAgMCBhdXRvIHJlcGVhdCBzY3JvbGwgcGFkZGluZy1ib3ggdHJhbnNwYXJlbnQ7XFxyXFxuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xcclxcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xcclxcbiAgICBiYXNlbGluZS1zaGlmdDogYmFzZWxpbmU7XFxyXFxuICAgIGJpbmRpbmc6IG5vbmU7XFxyXFxuICAgIGJsZWVkOiA2cHQ7XFxyXFxuICAgIGJvb2ttYXJrLWxhYmVsOiBjb250ZW50KCk7XFxyXFxuICAgIGJvb2ttYXJrLWxldmVsOiBub25lO1xcclxcbiAgICBib29rbWFyay1zdGF0ZTogb3BlbjtcXHJcXG4gICAgYm9va21hcmstdGFyZ2V0OiBub25lO1xcclxcbiAgICBib3JkZXI6IDAgbm9uZSB0cmFuc3BhcmVudDtcXHJcXG4gICAgYm9yZGVyLXJhZGl1czogMDtcXHJcXG4gICAgYm90dG9tOiBhdXRvO1xcclxcbiAgICBib3gtYWxpZ246IHN0cmV0Y2g7XFxyXFxuICAgIC13ZWJraXQtYm94LWRlY29yYXRpb24tYnJlYWs6IHNsaWNlO1xcclxcbiAgICBib3gtZGVjb3JhdGlvbi1icmVhazogc2xpY2U7XFxyXFxuICAgIGJveC1kaXJlY3Rpb246IG5vcm1hbDtcXHJcXG4gICAgZmxleDogMC4wO1xcclxcbiAgICBmbGV4LWdyb3VwOiAxO1xcclxcbiAgICBib3gtbGluZXM6IHNpbmdsZTtcXHJcXG4gICAgYm94LW9yZGluYWwtZ3JvdXA6IDE7XFxyXFxuICAgIGJveC1vcmllbnQ6IGlubGluZS1heGlzO1xcclxcbiAgICBib3gtcGFjazogc3RhcnQ7XFxyXFxuICAgIGJveC1zaGFkb3c6IG5vbmU7XFxyXFxuICAgIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xcclxcbiAgICAtd2Via2l0LWJyZWFrLWFmdGVyOiBhdXRvO1xcclxcbiAgICAtbW96LWJyZWFrLWFmdGVyOiBhdXRvO1xcclxcbiAgICBicmVhay1hZnRlcjogYXV0bztcXHJcXG4gICAgLXdlYmtpdC1icmVhay1iZWZvcmU6IGF1dG87XFxyXFxuICAgIC1tb3otYnJlYWstYmVmb3JlOiBhdXRvO1xcclxcbiAgICBicmVhay1iZWZvcmU6IGF1dG87XFxyXFxuICAgIC13ZWJraXQtY29sdW1uLWJyZWFrLWluc2lkZTogYXV0bztcXHJcXG4gICAgcGFnZS1icmVhay1pbnNpZGU6IGF1dG87XFxyXFxuICAgIGJyZWFrLWluc2lkZTogYXV0bztcXHJcXG4gICAgY2FwdGlvbi1zaWRlOiB0b3A7XFxyXFxuICAgIGNsZWFyOiBub25lO1xcclxcbiAgICBjbGlwOiBhdXRvO1xcclxcbiAgICBjb2xvcjogaW5oZXJpdDtcXHJcXG4gICAgY29sb3ItcHJvZmlsZTogYXV0bztcXHJcXG4gICAgLXdlYmtpdC1jb2x1bW4tY291bnQ6IGF1dG87XFxyXFxuICAgIC1tb3otY29sdW1uLWNvdW50OiBhdXRvO1xcclxcbiAgICBjb2x1bW4tY291bnQ6IGF1dG87XFxyXFxuICAgIC13ZWJraXQtY29sdW1uLWZpbGw6IGJhbGFuY2U7XFxyXFxuICAgIC1tb3otY29sdW1uLWZpbGw6IGJhbGFuY2U7XFxyXFxuICAgIGNvbHVtbi1maWxsOiBiYWxhbmNlO1xcclxcbiAgICAtd2Via2l0LWNvbHVtbi1nYXA6IG5vcm1hbDtcXHJcXG4gICAgLW1vei1jb2x1bW4tZ2FwOiBub3JtYWw7XFxyXFxuICAgIGNvbHVtbi1nYXA6IG5vcm1hbDtcXHJcXG4gICAgLXdlYmtpdC1jb2x1bW4tcnVsZTogbWVkaXVtIG1lZGl1bSAjMWYxZjFmO1xcclxcbiAgICAtbW96LWNvbHVtbi1ydWxlOiBtZWRpdW0gbWVkaXVtICMxZjFmMWY7XFxyXFxuICAgIGNvbHVtbi1ydWxlOiBtZWRpdW0gbWVkaXVtICMxZjFmMWY7XFxyXFxuICAgIC13ZWJraXQtY29sdW1uLXNwYW46IDE7XFxyXFxuICAgIC1tb3otY29sdW1uLXNwYW46IDE7XFxyXFxuICAgIGNvbHVtbi1zcGFuOiAxO1xcclxcbiAgICAtd2Via2l0LWNvbHVtbi13aWR0aDogYXV0bztcXHJcXG4gICAgLW1vei1jb2x1bW4td2lkdGg6IGF1dG87XFxyXFxuICAgIGNvbHVtbi13aWR0aDogYXV0bztcXHJcXG4gICAgLXdlYmtpdC1jb2x1bW5zOiBhdXRvIGF1dG87XFxyXFxuICAgIC1tb3otY29sdW1uczogYXV0byBhdXRvO1xcclxcbiAgICBjb2x1bW5zOiBhdXRvIGF1dG87XFxyXFxuICAgIGNvbnRlbnQ6IG5vcm1hbDtcXHJcXG4gICAgY291bnRlci1pbmNyZW1lbnQ6IG5vbmU7XFxyXFxuICAgIGNvdW50ZXItcmVzZXQ6IG5vbmU7XFxyXFxuICAgIGNyb3A6IGF1dG87XFxyXFxuICAgIGN1cnNvcjogYXV0bztcXHJcXG4gICAgZGlyZWN0aW9uOiBsdHI7XFxyXFxuICAgIGRpc3BsYXk6IGlubGluZTtcXHJcXG4gICAgZG9taW5hbnQtYmFzZWxpbmU6IGF1dG87XFxyXFxuICAgIGRyb3AtaW5pdGlhbC1hZnRlci1hZGp1c3Q6IHRleHQtYWZ0ZXItZWRnZTtcXHJcXG4gICAgZHJvcC1pbml0aWFsLWFmdGVyLWFsaWduOiBiYXNlbGluZTtcXHJcXG4gICAgZHJvcC1pbml0aWFsLWJlZm9yZS1hZGp1c3Q6IHRleHQtYmVmb3JlLWVkZ2U7XFxyXFxuICAgIGRyb3AtaW5pdGlhbC1iZWZvcmUtYWxpZ246IGNhcHMtaGVpZ2h0O1xcclxcbiAgICBkcm9wLWluaXRpYWwtc2l6ZTogYXV0bztcXHJcXG4gICAgZHJvcC1pbml0aWFsLXZhbHVlOiBpbml0aWFsO1xcclxcbiAgICBlbGV2YXRpb246IGxldmVsO1xcclxcbiAgICBlbXB0eS1jZWxsczogc2hvdztcXHJcXG4gICAgZml0OiBmaWxsO1xcclxcbiAgICBmaXQtcG9zaXRpb246IDAlIDAlO1xcclxcbiAgICBmbG9hdDogbm9uZTtcXHJcXG4gICAgZmxvYXQtb2Zmc2V0OiAwIDA7XFxyXFxuICAgIGdyaWQtY29sdW1uczogbm9uZTtcXHJcXG4gICAgZ3JpZC1yb3dzOiBub25lO1xcclxcbiAgICBoYW5naW5nLXB1bmN0dWF0aW9uOiBub25lO1xcclxcbiAgICBoZWlnaHQ6IGF1dG87XFxyXFxuICAgIGh5cGhlbmF0ZS1hZnRlcjogYXV0bztcXHJcXG4gICAgaHlwaGVuYXRlLWJlZm9yZTogYXV0bztcXHJcXG4gICAgaHlwaGVuYXRlLWNoYXJhY3RlcjogYXV0bztcXHJcXG4gICAgaHlwaGVuYXRlLWxpbmVzOiBuby1saW1pdDtcXHJcXG4gICAgaHlwaGVuYXRlLXJlc291cmNlOiBub25lO1xcclxcbiAgICAtd2Via2l0LWh5cGhlbnM6IG1hbnVhbDtcXHJcXG4gICAgLW1vei1oeXBoZW5zOiBtYW51YWw7XFxyXFxuICAgIC1tcy1oeXBoZW5zOiBtYW51YWw7XFxyXFxuICAgIGh5cGhlbnM6IG1hbnVhbDtcXHJcXG4gICAgaWNvbjogYXV0bztcXHJcXG4gICAgaW1hZ2Utb3JpZW50YXRpb246IGF1dG87XFxyXFxuICAgIGltYWdlLXJlbmRlcmluZzogYXV0bztcXHJcXG4gICAgaW1hZ2UtcmVzb2x1dGlvbjogbm9ybWFsO1xcclxcbiAgICBpbmxpbmUtYm94LWFsaWduOiBsYXN0O1xcclxcbiAgICBsZWZ0OiBhdXRvO1xcclxcbiAgICBsaW5lLWhlaWdodDogaW5oZXJpdDtcXHJcXG4gICAgbGluZS1zdGFja2luZzogaW5saW5lLWxpbmUtaGVpZ2h0IGV4Y2x1ZGUtcnVieSBjb25zaWRlci1zaGlmdHM7XFxyXFxuICAgIGxpc3Qtc3R5bGU6IGRpc2Mgb3V0c2lkZSBub25lO1xcclxcbiAgICBtYXJnaW46IDA7XFxyXFxuICAgIG1hcmtzOiBub25lO1xcclxcbiAgICBtYXJxdWVlLWRpcmVjdGlvbjogZm9yd2FyZDtcXHJcXG4gICAgbWFycXVlZS1sb29wOiAxO1xcclxcbiAgICBtYXJxdWVlLXBsYXktY291bnQ6IDE7XFxyXFxuICAgIG1hcnF1ZWUtc3BlZWQ6IG5vcm1hbDtcXHJcXG4gICAgbWFycXVlZS1zdHlsZTogc2Nyb2xsO1xcclxcbiAgICBtYXgtaGVpZ2h0OiBub25lO1xcclxcbiAgICBtYXgtd2lkdGg6IG5vbmU7XFxyXFxuICAgIG1pbi1oZWlnaHQ6IDA7XFxyXFxuICAgIG1pbi13aWR0aDogMDtcXHJcXG4gICAgbW92ZS10bzogbm9ybWFsO1xcclxcbiAgICBuYXYtZG93bjogYXV0bztcXHJcXG4gICAgbmF2LWluZGV4OiBhdXRvO1xcclxcbiAgICBuYXYtbGVmdDogYXV0bztcXHJcXG4gICAgbmF2LXJpZ2h0OiBhdXRvO1xcclxcbiAgICBuYXYtdXA6IGF1dG87XFxyXFxuICAgIG9wYWNpdHk6IDE7XFxyXFxuICAgIG9ycGhhbnM6IDI7XFxyXFxuICAgIG91dGxpbmU6IGludmVydCBub25lIG1lZGl1bTtcXHJcXG4gICAgb3V0bGluZS1vZmZzZXQ6IDA7XFxyXFxuICAgIG92ZXJmbG93OiB2aXNpYmxlO1xcclxcbiAgICBvdmVyZmxvdy1zdHlsZTogYXV0bztcXHJcXG4gICAgcGFkZGluZzogMDtcXHJcXG4gICAgcGFnZTogYXV0bztcXHJcXG4gICAgcGFnZS1icmVhay1hZnRlcjogYXV0bztcXHJcXG4gICAgcGFnZS1icmVhay1iZWZvcmU6IGF1dG87XFxyXFxuICAgIHBhZ2UtYnJlYWstaW5zaWRlOiBhdXRvO1xcclxcbiAgICBwYWdlLXBvbGljeTogc3RhcnQ7XFxyXFxuICAgIC13ZWJraXQtcGVyc3BlY3RpdmU6IG5vbmU7XFxyXFxuICAgIHBlcnNwZWN0aXZlOiBub25lO1xcclxcbiAgICAtd2Via2l0LXBlcnNwZWN0aXZlLW9yaWdpbjogNTAlIDUwJTtcXHJcXG4gICAgcGVyc3BlY3RpdmUtb3JpZ2luOiA1MCUgNTAlO1xcclxcbiAgICBwb3NpdGlvbjogc3RhdGljO1xcclxcbiAgICBwcmVzZW50YXRpb24tbGV2ZWw6IDA7XFxyXFxuICAgIHB1bmN0dWF0aW9uLXRyaW06IG5vbmU7XFxyXFxuICAgIHF1b3Rlczogbm9uZTtcXHJcXG4gICAgcmVuZGVyaW5nLWludGVudDogYXV0bztcXHJcXG4gICAgcmVzaXplOiBub25lO1xcclxcbiAgICByaWdodDogYXV0bztcXHJcXG4gICAgcm90YXRpb246IDA7XFxyXFxuICAgIHJvdGF0aW9uLXBvaW50OiA1MCUgNTAlO1xcclxcbiAgICBydWJ5LWFsaWduOiBhdXRvO1xcclxcbiAgICBydWJ5LW92ZXJoYW5nOiBub25lO1xcclxcbiAgICBydWJ5LXBvc2l0aW9uOiBiZWZvcmU7XFxyXFxuICAgIHJ1Ynktc3Bhbjogbm9uZTtcXHJcXG4gICAgc2l6ZTogYXV0bztcXHJcXG4gICAgc3RyaW5nLXNldDogbm9uZTtcXHJcXG4gICAgdGFibGUtbGF5b3V0OiBhdXRvO1xcclxcbiAgICB0b3A6IGF1dG87XFxyXFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiBub25lO1xcclxcbiAgICAtbXMtdHJhbnNmb3JtOiBub25lO1xcclxcbiAgICB0cmFuc2Zvcm06IG5vbmU7XFxyXFxuICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogNTAlIDUwJSAwO1xcclxcbiAgICAtbXMtdHJhbnNmb3JtLW9yaWdpbjogNTAlIDUwJSAwO1xcclxcbiAgICB0cmFuc2Zvcm0tb3JpZ2luOiA1MCUgNTAlIDA7XFxyXFxuICAgIC13ZWJraXQtdHJhbnNmb3JtLXN0eWxlOiBmbGF0O1xcclxcbiAgICB0cmFuc2Zvcm0tc3R5bGU6IGZsYXQ7XFxyXFxuICAgIHRyYW5zaXRpb246IGFsbCAwIGVhc2UgMDtcXHJcXG4gICAgdW5pY29kZS1iaWRpOiBub3JtYWw7XFxyXFxuICAgIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcXHJcXG4gICAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcXHJcXG4gICAgd2hpdGUtc3BhY2UtY29sbGFwc2U6IGNvbGxhcHNlO1xcclxcbiAgICB3aWRvd3M6IDI7XFxyXFxuICAgIHdpZHRoOiBhdXRvO1xcclxcbiAgICB3b3JkLWJyZWFrOiBub3JtYWw7XFxyXFxuICAgIHdvcmQtc3BhY2luZzogbm9ybWFsO1xcclxcbiAgICB3b3JkLXdyYXA6IG5vcm1hbDtcXHJcXG4gICAgei1pbmRleDogYXV0bztcXHJcXG4gICAgdGV4dC1hbGlnbjogc3RhcnQ7XFxyXFxuICAgIC8qIEFuZCBkaXNhYmxlIE1TIGdyYWRpZW50cyAqL1xcclxcbiAgICBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChlbmFibGVkPWZhbHNlKTtcXHJcXG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XFxyXFxuICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XFxyXFxuICB9XFxyXFxuICBhZGRyZXNzLCBibG9ja3F1b3RlLCBkZCwgZGl2LCBkbCwgZHQsIGZpZWxkc2V0LCBmb3JtLCBkaXYuZm9ybSwgZnJhbWUsIGZyYW1lc2V0LCBoMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCBub2ZyYW1lcywgb2wsIHAsIHVsLCBjZW50ZXIsIGRpciwgaHIsIG1lbnUsIHByZSwgYXJ0aWNsZSwgYXNpZGUsIGNhbnZhcywgZGV0YWlscywgZmlnY2FwdGlvbiwgZmlndXJlLCBmb290ZXIsIGhlYWRlciwgaGdyb3VwLCBtZW51LCBuYXYsIHNlY3Rpb24sIHN1bW1hcnkge1xcclxcbiAgICBkaXNwbGF5OiBibG9jaztcXHJcXG4gIH1cXHJcXG4gIGxpIHtcXHJcXG4gICAgZGlzcGxheTogbGlzdC1pdGVtO1xcclxcbiAgfVxcclxcbiAgdGFibGUge1xcclxcbiAgICBkaXNwbGF5OiB0YWJsZTtcXHJcXG4gIH1cXHJcXG4gIHRyIHtcXHJcXG4gICAgZGlzcGxheTogdGFibGUtcm93O1xcclxcbiAgfVxcclxcbiAgdGhlYWQge1xcclxcbiAgICBkaXNwbGF5OiB0YWJsZS1oZWFkZXItZ3JvdXA7XFxyXFxuICB9XFxyXFxuICB0Ym9keSB7XFxyXFxuICAgIGRpc3BsYXk6IHRhYmxlLXJvdy1ncm91cDtcXHJcXG4gIH1cXHJcXG4gIHRmb290IHtcXHJcXG4gICAgZGlzcGxheTogdGFibGUtZm9vdGVyLWdyb3VwO1xcclxcbiAgfVxcclxcbiAgY29sIHtcXHJcXG4gICAgZGlzcGxheTogdGFibGUtY29sdW1uO1xcclxcbiAgfVxcclxcbiAgY29sZ3JvdXAge1xcclxcbiAgICBkaXNwbGF5OiB0YWJsZS1jb2x1bW4tZ3JvdXA7XFxyXFxuICB9XFxyXFxuICB0ZCwgdGgge1xcclxcbiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xcclxcbiAgfVxcclxcbiAgY2FwdGlvbiB7XFxyXFxuICAgIGRpc3BsYXk6IHRhYmxlLWNhcHRpb247XFxyXFxuICB9XFxyXFxuICBpbnB1dCwgc2VsZWN0IHtcXHJcXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcclxcbiAgfVxcclxcbiAgYiwgc3Ryb25nIHtcXHJcXG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XFxyXFxuICB9XFxyXFxuICBiID4gaSwgc3Ryb25nID4gaSwgYiA+IGVtLCBzdHJvbmcgPiBlbSB7XFxyXFxuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xcclxcbiAgICBmb250LXN0eWxlOiBpdGFsaWM7XFxyXFxuICB9XFxyXFxuICBpID4ge1xcclxcbiAgICBiLCBzdHJvbmcge1xcclxcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xcclxcbiAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcXHJcXG4gICAgfVxcclxcbiAgfVxcclxcbiAgZW0gPiB7XFxyXFxuICAgIGIsIHN0cm9uZyB7XFxyXFxuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XFxyXFxuICAgICAgZm9udC1zdHlsZTogaXRhbGljO1xcclxcbiAgICB9XFxyXFxuICB9XFxyXFxuICB0ZXh0YXJlYSwgaW5wdXQge1xcclxcbiAgICBjdXJzb3I6IHRleHQ7XFxyXFxuICB9XFxyXFxufVxcclxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ubG9jYWxzID0ge1xuXHRcInJlc2V0XCI6IFwiQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXRcIixcblx0XCJmb3JtXCI6IFwiQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fZm9ybVwiLFxuXHRcImJ1dHRvblwiOiBcIkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX2J1dHRvblwiLFxuXHRcImxlZ2VuZFwiOiBcIkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX2xlZ2VuZFwiXG59O1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgIGltcG9ydCBkb21BUEkgZnJvbSBcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydEZuIGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qc1wiO1xuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRTdHlsZUVsZW1lbnQgZnJvbSBcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjtcbiAgICAgIGltcG9ydCBzdHlsZVRhZ1RyYW5zZm9ybUZuIGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzFdLnVzZVsxXSEuLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMV0udXNlWzJdIS4vY2FsZW5kYXIuc2Nzc1wiO1xuICAgICAgXG4gICAgICBcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybSA9IHN0eWxlVGFnVHJhbnNmb3JtRm47XG5vcHRpb25zLnNldEF0dHJpYnV0ZXMgPSBzZXRBdHRyaWJ1dGVzO1xuXG4gICAgICBvcHRpb25zLmluc2VydCA9IGluc2VydEZuLmJpbmQobnVsbCwgXCJoZWFkXCIpO1xuICAgIFxub3B0aW9ucy5kb21BUEkgPSBkb21BUEk7XG5vcHRpb25zLmluc2VydFN0eWxlRWxlbWVudCA9IGluc2VydFN0eWxlRWxlbWVudDtcblxudmFyIHVwZGF0ZSA9IEFQSShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCAqIGZyb20gXCIhIS4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzFdLnVzZVsxXSEuLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMV0udXNlWzJdIS4vY2FsZW5kYXIuc2Nzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiIsIlxuICAgICAgaW1wb3J0IEFQSSBmcm9tIFwiIS4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydEZuIGZyb20gXCIhLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzXCI7XG4gICAgICBpbXBvcnQgc2V0QXR0cmlidXRlcyBmcm9tIFwiIS4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjtcbiAgICAgIGltcG9ydCBzdHlsZVRhZ1RyYW5zZm9ybUZuIGZyb20gXCIhLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiO1xuICAgICAgaW1wb3J0IGNvbnRlbnQsICogYXMgbmFtZWRFeHBvcnQgZnJvbSBcIiEhLi4vLi4vLi4vY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1syXS51c2VbMV0hLi4vLi4vLi4vc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMl0udXNlWzJdIS4vcmVzZXQuc2Nzc1wiO1xuICAgICAgXG4gICAgICBcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybSA9IHN0eWxlVGFnVHJhbnNmb3JtRm47XG5vcHRpb25zLnNldEF0dHJpYnV0ZXMgPSBzZXRBdHRyaWJ1dGVzO1xuXG4gICAgICBvcHRpb25zLmluc2VydCA9IGluc2VydEZuLmJpbmQobnVsbCwgXCJoZWFkXCIpO1xuICAgIFxub3B0aW9ucy5kb21BUEkgPSBkb21BUEk7XG5vcHRpb25zLmluc2VydFN0eWxlRWxlbWVudCA9IGluc2VydFN0eWxlRWxlbWVudDtcblxudmFyIHVwZGF0ZSA9IEFQSShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCAqIGZyb20gXCIhIS4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMl0udXNlWzFdIS4uLy4uLy4uL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzJdLnVzZVsyXSEuL3Jlc2V0LnNjc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIHN0eWxlc0luRE9NID0gW107XG5cbmZ1bmN0aW9uIGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpIHtcbiAgdmFyIHJlc3VsdCA9IC0xO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3R5bGVzSW5ET00ubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoc3R5bGVzSW5ET01baV0uaWRlbnRpZmllciA9PT0gaWRlbnRpZmllcikge1xuICAgICAgcmVzdWx0ID0gaTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIG1vZHVsZXNUb0RvbShsaXN0LCBvcHRpb25zKSB7XG4gIHZhciBpZENvdW50TWFwID0ge307XG4gIHZhciBpZGVudGlmaWVycyA9IFtdO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykge1xuICAgIHZhciBpdGVtID0gbGlzdFtpXTtcbiAgICB2YXIgaWQgPSBvcHRpb25zLmJhc2UgPyBpdGVtWzBdICsgb3B0aW9ucy5iYXNlIDogaXRlbVswXTtcbiAgICB2YXIgY291bnQgPSBpZENvdW50TWFwW2lkXSB8fCAwO1xuICAgIHZhciBpZGVudGlmaWVyID0gXCJcIi5jb25jYXQoaWQsIFwiIFwiKS5jb25jYXQoY291bnQpO1xuICAgIGlkQ291bnRNYXBbaWRdID0gY291bnQgKyAxO1xuICAgIHZhciBpbmRleEJ5SWRlbnRpZmllciA9IGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpO1xuICAgIHZhciBvYmogPSB7XG4gICAgICBjc3M6IGl0ZW1bMV0sXG4gICAgICBtZWRpYTogaXRlbVsyXSxcbiAgICAgIHNvdXJjZU1hcDogaXRlbVszXSxcbiAgICAgIHN1cHBvcnRzOiBpdGVtWzRdLFxuICAgICAgbGF5ZXI6IGl0ZW1bNV1cbiAgICB9O1xuXG4gICAgaWYgKGluZGV4QnlJZGVudGlmaWVyICE9PSAtMSkge1xuICAgICAgc3R5bGVzSW5ET01baW5kZXhCeUlkZW50aWZpZXJdLnJlZmVyZW5jZXMrKztcbiAgICAgIHN0eWxlc0luRE9NW2luZGV4QnlJZGVudGlmaWVyXS51cGRhdGVyKG9iaik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciB1cGRhdGVyID0gYWRkRWxlbWVudFN0eWxlKG9iaiwgb3B0aW9ucyk7XG4gICAgICBvcHRpb25zLmJ5SW5kZXggPSBpO1xuICAgICAgc3R5bGVzSW5ET00uc3BsaWNlKGksIDAsIHtcbiAgICAgICAgaWRlbnRpZmllcjogaWRlbnRpZmllcixcbiAgICAgICAgdXBkYXRlcjogdXBkYXRlcixcbiAgICAgICAgcmVmZXJlbmNlczogMVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWRlbnRpZmllcnMucHVzaChpZGVudGlmaWVyKTtcbiAgfVxuXG4gIHJldHVybiBpZGVudGlmaWVycztcbn1cblxuZnVuY3Rpb24gYWRkRWxlbWVudFN0eWxlKG9iaiwgb3B0aW9ucykge1xuICB2YXIgYXBpID0gb3B0aW9ucy5kb21BUEkob3B0aW9ucyk7XG4gIGFwaS51cGRhdGUob2JqKTtcblxuICB2YXIgdXBkYXRlciA9IGZ1bmN0aW9uIHVwZGF0ZXIobmV3T2JqKSB7XG4gICAgaWYgKG5ld09iaikge1xuICAgICAgaWYgKG5ld09iai5jc3MgPT09IG9iai5jc3MgJiYgbmV3T2JqLm1lZGlhID09PSBvYmoubWVkaWEgJiYgbmV3T2JqLnNvdXJjZU1hcCA9PT0gb2JqLnNvdXJjZU1hcCAmJiBuZXdPYmouc3VwcG9ydHMgPT09IG9iai5zdXBwb3J0cyAmJiBuZXdPYmoubGF5ZXIgPT09IG9iai5sYXllcikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGFwaS51cGRhdGUob2JqID0gbmV3T2JqKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXBpLnJlbW92ZSgpO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gdXBkYXRlcjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobGlzdCwgb3B0aW9ucykge1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgbGlzdCA9IGxpc3QgfHwgW107XG4gIHZhciBsYXN0SWRlbnRpZmllcnMgPSBtb2R1bGVzVG9Eb20obGlzdCwgb3B0aW9ucyk7XG4gIHJldHVybiBmdW5jdGlvbiB1cGRhdGUobmV3TGlzdCkge1xuICAgIG5ld0xpc3QgPSBuZXdMaXN0IHx8IFtdO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsYXN0SWRlbnRpZmllcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBpZGVudGlmaWVyID0gbGFzdElkZW50aWZpZXJzW2ldO1xuICAgICAgdmFyIGluZGV4ID0gZ2V0SW5kZXhCeUlkZW50aWZpZXIoaWRlbnRpZmllcik7XG4gICAgICBzdHlsZXNJbkRPTVtpbmRleF0ucmVmZXJlbmNlcy0tO1xuICAgIH1cblxuICAgIHZhciBuZXdMYXN0SWRlbnRpZmllcnMgPSBtb2R1bGVzVG9Eb20obmV3TGlzdCwgb3B0aW9ucyk7XG5cbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgbGFzdElkZW50aWZpZXJzLmxlbmd0aDsgX2krKykge1xuICAgICAgdmFyIF9pZGVudGlmaWVyID0gbGFzdElkZW50aWZpZXJzW19pXTtcblxuICAgICAgdmFyIF9pbmRleCA9IGdldEluZGV4QnlJZGVudGlmaWVyKF9pZGVudGlmaWVyKTtcblxuICAgICAgaWYgKHN0eWxlc0luRE9NW19pbmRleF0ucmVmZXJlbmNlcyA9PT0gMCkge1xuICAgICAgICBzdHlsZXNJbkRPTVtfaW5kZXhdLnVwZGF0ZXIoKTtcblxuICAgICAgICBzdHlsZXNJbkRPTS5zcGxpY2UoX2luZGV4LCAxKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsYXN0SWRlbnRpZmllcnMgPSBuZXdMYXN0SWRlbnRpZmllcnM7XG4gIH07XG59OyIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgbWVtbyA9IHt9O1xuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5cbmZ1bmN0aW9uIGdldFRhcmdldCh0YXJnZXQpIHtcbiAgaWYgKHR5cGVvZiBtZW1vW3RhcmdldF0gPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICB2YXIgc3R5bGVUYXJnZXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHRhcmdldCk7IC8vIFNwZWNpYWwgY2FzZSB0byByZXR1cm4gaGVhZCBvZiBpZnJhbWUgaW5zdGVhZCBvZiBpZnJhbWUgaXRzZWxmXG5cbiAgICBpZiAod2luZG93LkhUTUxJRnJhbWVFbGVtZW50ICYmIHN0eWxlVGFyZ2V0IGluc3RhbmNlb2Ygd2luZG93LkhUTUxJRnJhbWVFbGVtZW50KSB7XG4gICAgICB0cnkge1xuICAgICAgICAvLyBUaGlzIHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uIGlmIGFjY2VzcyB0byBpZnJhbWUgaXMgYmxvY2tlZFxuICAgICAgICAvLyBkdWUgdG8gY3Jvc3Mtb3JpZ2luIHJlc3RyaWN0aW9uc1xuICAgICAgICBzdHlsZVRhcmdldCA9IHN0eWxlVGFyZ2V0LmNvbnRlbnREb2N1bWVudC5oZWFkO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuICAgICAgICBzdHlsZVRhcmdldCA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbWVtb1t0YXJnZXRdID0gc3R5bGVUYXJnZXQ7XG4gIH1cblxuICByZXR1cm4gbWVtb1t0YXJnZXRdO1xufVxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5cblxuZnVuY3Rpb24gaW5zZXJ0QnlTZWxlY3RvcihpbnNlcnQsIHN0eWxlKSB7XG4gIHZhciB0YXJnZXQgPSBnZXRUYXJnZXQoaW5zZXJ0KTtcblxuICBpZiAoIXRhcmdldCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkNvdWxkbid0IGZpbmQgYSBzdHlsZSB0YXJnZXQuIFRoaXMgcHJvYmFibHkgbWVhbnMgdGhhdCB0aGUgdmFsdWUgZm9yIHRoZSAnaW5zZXJ0JyBwYXJhbWV0ZXIgaXMgaW52YWxpZC5cIik7XG4gIH1cblxuICB0YXJnZXQuYXBwZW5kQ2hpbGQoc3R5bGUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGluc2VydEJ5U2VsZWN0b3I7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gaW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMpIHtcbiAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIik7XG4gIG9wdGlvbnMuc2V0QXR0cmlidXRlcyhlbGVtZW50LCBvcHRpb25zLmF0dHJpYnV0ZXMpO1xuICBvcHRpb25zLmluc2VydChlbGVtZW50LCBvcHRpb25zLm9wdGlvbnMpO1xuICByZXR1cm4gZWxlbWVudDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpbnNlcnRTdHlsZUVsZW1lbnQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzKHN0eWxlRWxlbWVudCkge1xuICB2YXIgbm9uY2UgPSB0eXBlb2YgX193ZWJwYWNrX25vbmNlX18gIT09IFwidW5kZWZpbmVkXCIgPyBfX3dlYnBhY2tfbm9uY2VfXyA6IG51bGw7XG5cbiAgaWYgKG5vbmNlKSB7XG4gICAgc3R5bGVFbGVtZW50LnNldEF0dHJpYnV0ZShcIm5vbmNlXCIsIG5vbmNlKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlczsiLCJcInVzZSBzdHJpY3RcIjtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBhcHBseShzdHlsZUVsZW1lbnQsIG9wdGlvbnMsIG9iaikge1xuICB2YXIgY3NzID0gXCJcIjtcblxuICBpZiAob2JqLnN1cHBvcnRzKSB7XG4gICAgY3NzICs9IFwiQHN1cHBvcnRzIChcIi5jb25jYXQob2JqLnN1cHBvcnRzLCBcIikge1wiKTtcbiAgfVxuXG4gIGlmIChvYmoubWVkaWEpIHtcbiAgICBjc3MgKz0gXCJAbWVkaWEgXCIuY29uY2F0KG9iai5tZWRpYSwgXCIge1wiKTtcbiAgfVxuXG4gIHZhciBuZWVkTGF5ZXIgPSB0eXBlb2Ygb2JqLmxheWVyICE9PSBcInVuZGVmaW5lZFwiO1xuXG4gIGlmIChuZWVkTGF5ZXIpIHtcbiAgICBjc3MgKz0gXCJAbGF5ZXJcIi5jb25jYXQob2JqLmxheWVyLmxlbmd0aCA+IDAgPyBcIiBcIi5jb25jYXQob2JqLmxheWVyKSA6IFwiXCIsIFwiIHtcIik7XG4gIH1cblxuICBjc3MgKz0gb2JqLmNzcztcblxuICBpZiAobmVlZExheWVyKSB7XG4gICAgY3NzICs9IFwifVwiO1xuICB9XG5cbiAgaWYgKG9iai5tZWRpYSkge1xuICAgIGNzcyArPSBcIn1cIjtcbiAgfVxuXG4gIGlmIChvYmouc3VwcG9ydHMpIHtcbiAgICBjc3MgKz0gXCJ9XCI7XG4gIH1cblxuICB2YXIgc291cmNlTWFwID0gb2JqLnNvdXJjZU1hcDtcblxuICBpZiAoc291cmNlTWFwICYmIHR5cGVvZiBidG9hICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgY3NzICs9IFwiXFxuLyojIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxcIi5jb25jYXQoYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoc291cmNlTWFwKSkpKSwgXCIgKi9cIik7XG4gIH0gLy8gRm9yIG9sZCBJRVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAgKi9cblxuXG4gIG9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0oY3NzLCBzdHlsZUVsZW1lbnQsIG9wdGlvbnMub3B0aW9ucyk7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZVN0eWxlRWxlbWVudChzdHlsZUVsZW1lbnQpIHtcbiAgLy8gaXN0YW5idWwgaWdub3JlIGlmXG4gIGlmIChzdHlsZUVsZW1lbnQucGFyZW50Tm9kZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHN0eWxlRWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHN0eWxlRWxlbWVudCk7XG59XG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cblxuXG5mdW5jdGlvbiBkb21BUEkob3B0aW9ucykge1xuICB2YXIgc3R5bGVFbGVtZW50ID0gb3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQob3B0aW9ucyk7XG4gIHJldHVybiB7XG4gICAgdXBkYXRlOiBmdW5jdGlvbiB1cGRhdGUob2JqKSB7XG4gICAgICBhcHBseShzdHlsZUVsZW1lbnQsIG9wdGlvbnMsIG9iaik7XG4gICAgfSxcbiAgICByZW1vdmU6IGZ1bmN0aW9uIHJlbW92ZSgpIHtcbiAgICAgIHJlbW92ZVN0eWxlRWxlbWVudChzdHlsZUVsZW1lbnQpO1xuICAgIH1cbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBkb21BUEk7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gc3R5bGVUYWdUcmFuc2Zvcm0oY3NzLCBzdHlsZUVsZW1lbnQpIHtcbiAgaWYgKHN0eWxlRWxlbWVudC5zdHlsZVNoZWV0KSB7XG4gICAgc3R5bGVFbGVtZW50LnN0eWxlU2hlZXQuY3NzVGV4dCA9IGNzcztcbiAgfSBlbHNlIHtcbiAgICB3aGlsZSAoc3R5bGVFbGVtZW50LmZpcnN0Q2hpbGQpIHtcbiAgICAgIHN0eWxlRWxlbWVudC5yZW1vdmVDaGlsZChzdHlsZUVsZW1lbnQuZmlyc3RDaGlsZCk7XG4gICAgfVxuXG4gICAgc3R5bGVFbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNzcykpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3R5bGVUYWdUcmFuc2Zvcm07IiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHRpZDogbW9kdWxlSWQsXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXShtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbi8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBfX3dlYnBhY2tfbW9kdWxlc19fO1xuXG4iLCIvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5uID0gKG1vZHVsZSkgPT4ge1xuXHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cblx0XHQoKSA9PiAobW9kdWxlWydkZWZhdWx0J10pIDpcblx0XHQoKSA9PiAobW9kdWxlKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgeyBhOiBnZXR0ZXIgfSk7XG5cdHJldHVybiBnZXR0ZXI7XG59OyIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IChleHBvcnRzLCBkZWZpbml0aW9uKSA9PiB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmIgPSBkb2N1bWVudC5iYXNlVVJJIHx8IHNlbGYubG9jYXRpb24uaHJlZjtcblxuLy8gb2JqZWN0IHRvIHN0b3JlIGxvYWRlZCBhbmQgbG9hZGluZyBjaHVua3Ncbi8vIHVuZGVmaW5lZCA9IGNodW5rIG5vdCBsb2FkZWQsIG51bGwgPSBjaHVuayBwcmVsb2FkZWQvcHJlZmV0Y2hlZFxuLy8gW3Jlc29sdmUsIHJlamVjdCwgUHJvbWlzZV0gPSBjaHVuayBsb2FkaW5nLCAwID0gY2h1bmsgbG9hZGVkXG52YXIgaW5zdGFsbGVkQ2h1bmtzID0ge1xuXHRcImFwcFwiOiAwXG59O1xuXG4vLyBubyBjaHVuayBvbiBkZW1hbmQgbG9hZGluZ1xuXG4vLyBubyBwcmVmZXRjaGluZ1xuXG4vLyBubyBwcmVsb2FkZWRcblxuLy8gbm8gSE1SXG5cbi8vIG5vIEhNUiBtYW5pZmVzdFxuXG4vLyBubyBvbiBjaHVua3MgbG9hZGVkXG5cbi8vIG5vIGpzb25wIGZ1bmN0aW9uIiwiLyogZ2xvYmFsIGRvY3VtZW50LCByZXF1aXJlLCB3aW5kb3cgKi9cbmxldCBDYWxlbmRhciA9IHJlcXVpcmUoJy4vY2FsZW5kYXInKTtcblxuQ2FsZW5kYXIgPSBDYWxlbmRhci5kZWZhdWx0O1xuXG4vLyBFeHBvcnQgV2lkZ2V0VXRpbHNcbndpbmRvdy5Cb29raW5nU3luY1dpZGdldFV0aWxzID0gcmVxdWlyZSgnd2lkZ2V0LXV0aWxzJyk7XG5cbi8vIEV4cG9ydCBQb3BwZXJcbndpbmRvdy5Qb3BwZXIgPSByZXF1aXJlKCdAcG9wcGVyanMvY29yZScpO1xuXG5DYWxlbmRhci5pbml0ID0gKG9wdHMpID0+IHtcbiAgY29uc3QgaW5pdGlhbGl6ZWQgPSBbXTtcbiAgY29uc3Qgb3B0aW9ucyAgICAgPSBvcHRzIHx8IHt9O1xuICBjb25zdCBlbGVtZW50cyAgICA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLWJvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldF0nKTtcblxuICBlbGVtZW50cy5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgb3B0aW9ucy5lbCA9IGVsZW1lbnQ7XG4gICAgY29uc3QgY2FsICA9IG5ldyBDYWxlbmRhcihvcHRpb25zKTtcblxuICAgIGluaXRpYWxpemVkLnB1c2goY2FsKTtcbiAgfSk7XG5cbiAgQ2FsZW5kYXIuaW5zdGFuY2VzID0gaW5pdGlhbGl6ZWQ7XG4gIHJldHVybiBpbml0aWFsaXplZDtcbn07XG5cbkNhbGVuZGFyLlZFUlNJT04gPSByZXF1aXJlKCcuLi9wYWNrYWdlLmpzb24nKS52ZXJzaW9uO1xuXG5pZiAoZG9jdW1lbnQucmVhZHlTdGF0ZSAhPT0gJ2xvYWRpbmcnKSB7XG4gIENhbGVuZGFyLmluaXQoKTtcbn0gZWxzZSB7XG4gIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCAoKSA9PiB7XG4gICAgQ2FsZW5kYXIuaW5pdCgpO1xuICB9KTtcbn1cblxud2luZG93LkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXQgPSBDYWxlbmRhcjtcblxuZXhwb3J0IGRlZmF1bHQgQ2FsZW5kYXI7XG4iXSwibmFtZXMiOlsiZ2V0Q29tcG9zaXRlUmVjdCIsImdldExheW91dFJlY3QiLCJsaXN0U2Nyb2xsUGFyZW50cyIsImdldE9mZnNldFBhcmVudCIsImdldENvbXB1dGVkU3R5bGUiLCJvcmRlck1vZGlmaWVycyIsImRlYm91bmNlIiwidmFsaWRhdGVNb2RpZmllcnMiLCJ1bmlxdWVCeSIsImdldEJhc2VQbGFjZW1lbnQiLCJtZXJnZUJ5TmFtZSIsImRldGVjdE92ZXJmbG93IiwiaXNFbGVtZW50IiwiYXV0byIsIklOVkFMSURfRUxFTUVOVF9FUlJPUiIsIklORklOSVRFX0xPT1BfRVJST1IiLCJERUZBVUxUX09QVElPTlMiLCJwbGFjZW1lbnQiLCJtb2RpZmllcnMiLCJzdHJhdGVneSIsImFyZVZhbGlkRWxlbWVudHMiLCJfbGVuIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiYXJncyIsIkFycmF5IiwiX2tleSIsInNvbWUiLCJlbGVtZW50IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwicG9wcGVyR2VuZXJhdG9yIiwiZ2VuZXJhdG9yT3B0aW9ucyIsIl9nZW5lcmF0b3JPcHRpb25zIiwiX2dlbmVyYXRvck9wdGlvbnMkZGVmIiwiZGVmYXVsdE1vZGlmaWVycyIsIl9nZW5lcmF0b3JPcHRpb25zJGRlZjIiLCJkZWZhdWx0T3B0aW9ucyIsImNyZWF0ZVBvcHBlciIsInJlZmVyZW5jZSIsInBvcHBlciIsIm9wdGlvbnMiLCJzdGF0ZSIsIm9yZGVyZWRNb2RpZmllcnMiLCJPYmplY3QiLCJhc3NpZ24iLCJtb2RpZmllcnNEYXRhIiwiZWxlbWVudHMiLCJhdHRyaWJ1dGVzIiwic3R5bGVzIiwiZWZmZWN0Q2xlYW51cEZucyIsImlzRGVzdHJveWVkIiwiaW5zdGFuY2UiLCJzZXRPcHRpb25zIiwic2V0T3B0aW9uc0FjdGlvbiIsImNsZWFudXBNb2RpZmllckVmZmVjdHMiLCJzY3JvbGxQYXJlbnRzIiwiY29udGV4dEVsZW1lbnQiLCJjb25jYXQiLCJmaWx0ZXIiLCJtIiwiZW5hYmxlZCIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsIl9yZWYiLCJuYW1lIiwiZmxpcE1vZGlmaWVyIiwiZmluZCIsIl9yZWYyIiwiY29uc29sZSIsImVycm9yIiwiam9pbiIsIl9nZXRDb21wdXRlZFN0eWxlIiwibWFyZ2luVG9wIiwibWFyZ2luUmlnaHQiLCJtYXJnaW5Cb3R0b20iLCJtYXJnaW5MZWZ0IiwibWFyZ2luIiwicGFyc2VGbG9hdCIsIndhcm4iLCJydW5Nb2RpZmllckVmZmVjdHMiLCJ1cGRhdGUiLCJmb3JjZVVwZGF0ZSIsIl9zdGF0ZSRlbGVtZW50cyIsInJlY3RzIiwicmVzZXQiLCJmb3JFYWNoIiwibW9kaWZpZXIiLCJkYXRhIiwiX19kZWJ1Z19sb29wc19fIiwiaW5kZXgiLCJfc3RhdGUkb3JkZXJlZE1vZGlmaWUiLCJmbiIsIl9zdGF0ZSRvcmRlcmVkTW9kaWZpZTIiLCJfb3B0aW9ucyIsIlByb21pc2UiLCJyZXNvbHZlIiwiZGVzdHJveSIsInRoZW4iLCJvbkZpcnN0VXBkYXRlIiwiX3JlZjMiLCJfcmVmMyRvcHRpb25zIiwiZWZmZWN0IiwiY2xlYW51cEZuIiwibm9vcEZuIiwicHVzaCIsImlzU2hhZG93Um9vdCIsImNvbnRhaW5zIiwicGFyZW50IiwiY2hpbGQiLCJyb290Tm9kZSIsImdldFJvb3ROb2RlIiwibmV4dCIsImlzU2FtZU5vZGUiLCJwYXJlbnROb2RlIiwiaG9zdCIsImlzSFRNTEVsZW1lbnQiLCJyb3VuZCIsImluY2x1ZGVTY2FsZSIsInJlY3QiLCJzY2FsZVgiLCJzY2FsZVkiLCJvZmZzZXRIZWlnaHQiLCJvZmZzZXRXaWR0aCIsIndpZHRoIiwiaGVpZ2h0IiwidG9wIiwicmlnaHQiLCJib3R0b20iLCJsZWZ0IiwieCIsInkiLCJ2aWV3cG9ydCIsImdldFZpZXdwb3J0UmVjdCIsImdldERvY3VtZW50UmVjdCIsImdldERvY3VtZW50RWxlbWVudCIsImdldFBhcmVudE5vZGUiLCJnZXROb2RlTmFtZSIsInJlY3RUb0NsaWVudFJlY3QiLCJtYXgiLCJtaW4iLCJnZXRJbm5lckJvdW5kaW5nQ2xpZW50UmVjdCIsImNsaWVudFRvcCIsImNsaWVudExlZnQiLCJjbGllbnRIZWlnaHQiLCJjbGllbnRXaWR0aCIsImdldENsaWVudFJlY3RGcm9tTWl4ZWRUeXBlIiwiY2xpcHBpbmdQYXJlbnQiLCJnZXRDbGlwcGluZ1BhcmVudHMiLCJjbGlwcGluZ1BhcmVudHMiLCJjYW5Fc2NhcGVDbGlwcGluZyIsImluZGV4T2YiLCJwb3NpdGlvbiIsImNsaXBwZXJFbGVtZW50IiwiZ2V0Q2xpcHBpbmdSZWN0IiwiYm91bmRhcnkiLCJyb290Qm91bmRhcnkiLCJtYWluQ2xpcHBpbmdQYXJlbnRzIiwiZmlyc3RDbGlwcGluZ1BhcmVudCIsImNsaXBwaW5nUmVjdCIsInJlZHVjZSIsImFjY1JlY3QiLCJnZXROb2RlU2Nyb2xsIiwiZ2V0V2luZG93U2Nyb2xsQmFyWCIsImlzU2Nyb2xsUGFyZW50IiwiaXNFbGVtZW50U2NhbGVkIiwiZWxlbWVudE9yVmlydHVhbEVsZW1lbnQiLCJvZmZzZXRQYXJlbnQiLCJpc0ZpeGVkIiwiaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQiLCJvZmZzZXRQYXJlbnRJc1NjYWxlZCIsImRvY3VtZW50RWxlbWVudCIsInNjcm9sbCIsInNjcm9sbExlZnQiLCJzY3JvbGxUb3AiLCJvZmZzZXRzIiwiZ2V0V2luZG93Iiwib3duZXJEb2N1bWVudCIsImRvY3VtZW50Iiwid2luZG93IiwiZ2V0V2luZG93U2Nyb2xsIiwiX2VsZW1lbnQkb3duZXJEb2N1bWVuIiwiaHRtbCIsIndpblNjcm9sbCIsImJvZHkiLCJzY3JvbGxXaWR0aCIsInNjcm9sbEhlaWdodCIsImRpcmVjdGlvbiIsImdldEhUTUxFbGVtZW50U2Nyb2xsIiwiY2xpZW50UmVjdCIsIk1hdGgiLCJhYnMiLCJvZmZzZXRMZWZ0Iiwib2Zmc2V0VG9wIiwibm9kZU5hbWUiLCJ0b0xvd2VyQ2FzZSIsIm5vZGUiLCJpc1RhYmxlRWxlbWVudCIsImdldFRydWVPZmZzZXRQYXJlbnQiLCJnZXRDb250YWluaW5nQmxvY2siLCJpc0ZpcmVmb3giLCJuYXZpZ2F0b3IiLCJ1c2VyQWdlbnQiLCJpc0lFIiwiZWxlbWVudENzcyIsImN1cnJlbnROb2RlIiwiY3NzIiwidHJhbnNmb3JtIiwicGVyc3BlY3RpdmUiLCJjb250YWluIiwid2lsbENoYW5nZSIsImFzc2lnbmVkU2xvdCIsImdldFNjcm9sbFBhcmVudCIsIndpbiIsInZpc3VhbFZpZXdwb3J0IiwidGVzdCIsInRvU3RyaW5nIiwiZGVmYXVsdFZpZXciLCJwYWdlWE9mZnNldCIsInBhZ2VZT2Zmc2V0IiwiT3duRWxlbWVudCIsIkVsZW1lbnQiLCJIVE1MRWxlbWVudCIsIlNoYWRvd1Jvb3QiLCJvdmVyZmxvdyIsIm92ZXJmbG93WCIsIm92ZXJmbG93WSIsImxpc3QiLCJzY3JvbGxQYXJlbnQiLCJpc0JvZHkiLCJ0YXJnZXQiLCJ1cGRhdGVkTGlzdCIsImJhc2VQbGFjZW1lbnRzIiwic3RhcnQiLCJlbmQiLCJ2YXJpYXRpb25QbGFjZW1lbnRzIiwiYWNjIiwicGxhY2VtZW50cyIsImJlZm9yZVJlYWQiLCJyZWFkIiwiYWZ0ZXJSZWFkIiwiYmVmb3JlTWFpbiIsIm1haW4iLCJhZnRlck1haW4iLCJiZWZvcmVXcml0ZSIsIndyaXRlIiwiYWZ0ZXJXcml0ZSIsIm1vZGlmaWVyUGhhc2VzIiwiY3JlYXRlUG9wcGVyQmFzZSIsImNyZWF0ZVBvcHBlckxpdGUiLCJhcHBseVN0eWxlcyIsImtleXMiLCJzdHlsZSIsInZhbHVlIiwicmVtb3ZlQXR0cmlidXRlIiwic2V0QXR0cmlidXRlIiwiaW5pdGlhbFN0eWxlcyIsImFycm93Iiwic3R5bGVQcm9wZXJ0aWVzIiwiaGFzT3duUHJvcGVydHkiLCJwcm9wZXJ0eSIsImF0dHJpYnV0ZSIsInBoYXNlIiwicmVxdWlyZXMiLCJnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQiLCJ3aXRoaW4iLCJtZXJnZVBhZGRpbmdPYmplY3QiLCJleHBhbmRUb0hhc2hNYXAiLCJ0b1BhZGRpbmdPYmplY3QiLCJwYWRkaW5nIiwiX3N0YXRlJG1vZGlmaWVyc0RhdGEkIiwiYXJyb3dFbGVtZW50IiwicG9wcGVyT2Zmc2V0cyIsImJhc2VQbGFjZW1lbnQiLCJheGlzIiwiaXNWZXJ0aWNhbCIsImxlbiIsInBhZGRpbmdPYmplY3QiLCJhcnJvd1JlY3QiLCJtaW5Qcm9wIiwibWF4UHJvcCIsImVuZERpZmYiLCJzdGFydERpZmYiLCJhcnJvd09mZnNldFBhcmVudCIsImNsaWVudFNpemUiLCJjZW50ZXJUb1JlZmVyZW5jZSIsImNlbnRlciIsIm9mZnNldCIsImF4aXNQcm9wIiwiY2VudGVyT2Zmc2V0IiwiX29wdGlvbnMkZWxlbWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJyZXF1aXJlc0lmRXhpc3RzIiwiZ2V0VmFyaWF0aW9uIiwidW5zZXRTaWRlcyIsInJvdW5kT2Zmc2V0c0J5RFBSIiwiZHByIiwiZGV2aWNlUGl4ZWxSYXRpbyIsIm1hcFRvU3R5bGVzIiwiX09iamVjdCRhc3NpZ24yIiwicG9wcGVyUmVjdCIsInZhcmlhdGlvbiIsImdwdUFjY2VsZXJhdGlvbiIsImFkYXB0aXZlIiwicm91bmRPZmZzZXRzIiwiX29mZnNldHMkeCIsIl9vZmZzZXRzJHkiLCJoYXNYIiwiaGFzWSIsInNpZGVYIiwic2lkZVkiLCJoZWlnaHRQcm9wIiwid2lkdGhQcm9wIiwib2Zmc2V0WSIsIm9mZnNldFgiLCJjb21tb25TdHlsZXMiLCJfcmVmNCIsIl9PYmplY3QkYXNzaWduIiwiY29tcHV0ZVN0eWxlcyIsIl9yZWY1IiwiX29wdGlvbnMkZ3B1QWNjZWxlcmF0IiwiX29wdGlvbnMkYWRhcHRpdmUiLCJfb3B0aW9ucyRyb3VuZE9mZnNldHMiLCJ0cmFuc2l0aW9uUHJvcGVydHkiLCJwYXNzaXZlIiwiX29wdGlvbnMkc2Nyb2xsIiwiX29wdGlvbnMkcmVzaXplIiwicmVzaXplIiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJnZXRPcHBvc2l0ZVBsYWNlbWVudCIsImdldE9wcG9zaXRlVmFyaWF0aW9uUGxhY2VtZW50IiwiY29tcHV0ZUF1dG9QbGFjZW1lbnQiLCJnZXRFeHBhbmRlZEZhbGxiYWNrUGxhY2VtZW50cyIsIm9wcG9zaXRlUGxhY2VtZW50IiwiZmxpcCIsIl9za2lwIiwiX29wdGlvbnMkbWFpbkF4aXMiLCJtYWluQXhpcyIsImNoZWNrTWFpbkF4aXMiLCJfb3B0aW9ucyRhbHRBeGlzIiwiYWx0QXhpcyIsImNoZWNrQWx0QXhpcyIsInNwZWNpZmllZEZhbGxiYWNrUGxhY2VtZW50cyIsImZhbGxiYWNrUGxhY2VtZW50cyIsImFsdEJvdW5kYXJ5IiwiX29wdGlvbnMkZmxpcFZhcmlhdGlvIiwiZmxpcFZhcmlhdGlvbnMiLCJhbGxvd2VkQXV0b1BsYWNlbWVudHMiLCJwcmVmZXJyZWRQbGFjZW1lbnQiLCJpc0Jhc2VQbGFjZW1lbnQiLCJyZWZlcmVuY2VSZWN0IiwiY2hlY2tzTWFwIiwiTWFwIiwibWFrZUZhbGxiYWNrQ2hlY2tzIiwiZmlyc3RGaXR0aW5nUGxhY2VtZW50IiwiaSIsIl9iYXNlUGxhY2VtZW50IiwiaXNTdGFydFZhcmlhdGlvbiIsIm1haW5WYXJpYXRpb25TaWRlIiwiYWx0VmFyaWF0aW9uU2lkZSIsImNoZWNrcyIsImV2ZXJ5IiwiY2hlY2siLCJzZXQiLCJudW1iZXJPZkNoZWNrcyIsIl9sb29wIiwiX2kiLCJmaXR0aW5nUGxhY2VtZW50IiwiZ2V0Iiwic2xpY2UiLCJfcmV0IiwiZ2V0U2lkZU9mZnNldHMiLCJwcmV2ZW50ZWRPZmZzZXRzIiwiaXNBbnlTaWRlRnVsbHlDbGlwcGVkIiwic2lkZSIsImhpZGUiLCJwcmV2ZW50T3ZlcmZsb3ciLCJyZWZlcmVuY2VPdmVyZmxvdyIsImVsZW1lbnRDb250ZXh0IiwicG9wcGVyQWx0T3ZlcmZsb3ciLCJyZWZlcmVuY2VDbGlwcGluZ09mZnNldHMiLCJwb3BwZXJFc2NhcGVPZmZzZXRzIiwiaXNSZWZlcmVuY2VIaWRkZW4iLCJoYXNQb3BwZXJFc2NhcGVkIiwiZGVmYXVsdCIsImV2ZW50TGlzdGVuZXJzIiwiZGlzdGFuY2VBbmRTa2lkZGluZ1RvWFkiLCJpbnZlcnREaXN0YW5jZSIsInNraWRkaW5nIiwiZGlzdGFuY2UiLCJfb3B0aW9ucyRvZmZzZXQiLCJfZGF0YSRzdGF0ZSRwbGFjZW1lbnQiLCJjb21wdXRlT2Zmc2V0cyIsImdldEFsdEF4aXMiLCJ3aXRoaW5NYXhDbGFtcCIsImdldEZyZXNoU2lkZU9iamVjdCIsIm1hdGhNaW4iLCJtYXRoTWF4IiwiX29wdGlvbnMkdGV0aGVyIiwidGV0aGVyIiwiX29wdGlvbnMkdGV0aGVyT2Zmc2V0IiwidGV0aGVyT2Zmc2V0IiwidGV0aGVyT2Zmc2V0VmFsdWUiLCJub3JtYWxpemVkVGV0aGVyT2Zmc2V0VmFsdWUiLCJvZmZzZXRNb2RpZmllclN0YXRlIiwiX29mZnNldE1vZGlmaWVyU3RhdGUkIiwibWFpblNpZGUiLCJhbHRTaWRlIiwiYWRkaXRpdmUiLCJtaW5MZW4iLCJtYXhMZW4iLCJhcnJvd1BhZGRpbmdPYmplY3QiLCJhcnJvd1BhZGRpbmdNaW4iLCJhcnJvd1BhZGRpbmdNYXgiLCJhcnJvd0xlbiIsIm1pbk9mZnNldCIsIm1heE9mZnNldCIsImNsaWVudE9mZnNldCIsIm9mZnNldE1vZGlmaWVyVmFsdWUiLCJ0ZXRoZXJNaW4iLCJ0ZXRoZXJNYXgiLCJwcmV2ZW50ZWRPZmZzZXQiLCJfb2Zmc2V0TW9kaWZpZXJTdGF0ZSQyIiwiX21haW5TaWRlIiwiX2FsdFNpZGUiLCJfb2Zmc2V0IiwiX21pbiIsIl9tYXgiLCJpc09yaWdpblNpZGUiLCJfb2Zmc2V0TW9kaWZpZXJWYWx1ZSIsIl90ZXRoZXJNaW4iLCJfdGV0aGVyTWF4IiwiX3ByZXZlbnRlZE9mZnNldCIsImFsbFBsYWNlbWVudHMiLCJfb3B0aW9ucyRhbGxvd2VkQXV0b1AiLCJhbGxvd2VkUGxhY2VtZW50cyIsIm92ZXJmbG93cyIsInNvcnQiLCJhIiwiYiIsImNvbW1vblgiLCJjb21tb25ZIiwicGVuZGluZyIsInVuZGVmaW5lZCIsIl9vcHRpb25zJHBsYWNlbWVudCIsIl9vcHRpb25zJGJvdW5kYXJ5IiwiX29wdGlvbnMkcm9vdEJvdW5kYXJ5IiwiX29wdGlvbnMkZWxlbWVudENvbnRlIiwiX29wdGlvbnMkYWx0Qm91bmRhcnkiLCJfb3B0aW9ucyRwYWRkaW5nIiwiYWx0Q29udGV4dCIsImNsaXBwaW5nQ2xpZW50UmVjdCIsInJlZmVyZW5jZUNsaWVudFJlY3QiLCJwb3BwZXJDbGllbnRSZWN0IiwiZWxlbWVudENsaWVudFJlY3QiLCJvdmVyZmxvd09mZnNldHMiLCJvZmZzZXREYXRhIiwia2V5IiwibXVsdGlwbHkiLCJoYXNoTWFwIiwiZm9ybWF0Iiwic3RyIiwicCIsImMiLCJyZXBsYWNlIiwic3BsaXQiLCJoYXNoIiwibWF0Y2hlZCIsIm1lcmdlZCIsImN1cnJlbnQiLCJleGlzdGluZyIsIm1hcCIsIm9yZGVyIiwidmlzaXRlZCIsIlNldCIsInJlc3VsdCIsImFkZCIsImRlcCIsImhhcyIsImRlcE1vZGlmaWVyIiwiYXJyIiwiaWRlbnRpZmllcnMiLCJpdGVtIiwiaWRlbnRpZmllciIsIklOVkFMSURfTU9ESUZJRVJfRVJST1IiLCJNSVNTSU5HX0RFUEVOREVOQ1lfRVJST1IiLCJWQUxJRF9QUk9QRVJUSUVTIiwic2VsZiIsIlN0cmluZyIsImlzQXJyYXkiLCJzIiwicmVxdWlyZW1lbnQiLCJtb2QiLCJ2IiwibW9kdWxlIiwiZXhwb3J0cyIsImNzc1dpdGhNYXBwaW5nVG9TdHJpbmciLCJjb250ZW50IiwibmVlZExheWVyIiwibW9kdWxlcyIsIm1lZGlhIiwiZGVkdXBlIiwic3VwcG9ydHMiLCJsYXllciIsImFscmVhZHlJbXBvcnRlZE1vZHVsZXMiLCJrIiwiaWQiLCJfayIsInVybCIsIl9fZXNNb2R1bGUiLCJuZWVkUXVvdGVzIiwiY3NzTWFwcGluZyIsImJ0b2EiLCJiYXNlNjQiLCJ1bmVzY2FwZSIsImVuY29kZVVSSUNvbXBvbmVudCIsIkpTT04iLCJzdHJpbmdpZnkiLCJzb3VyY2VNYXBwaW5nIiwic291cmNlVVJMcyIsInNvdXJjZXMiLCJzb3VyY2UiLCJzb3VyY2VSb290IiwiY3VycmVuY3lTeW1ib2xNYXAiLCJyZXF1aXJlIiwiZ2V0U3ltYm9sRnJvbUN1cnJlbmN5IiwiY3VycmVuY3lDb2RlIiwiY29kZSIsInRvVXBwZXJDYXNlIiwicHJvdG90eXBlIiwiY2FsbCIsIkFFRCIsIkFGTiIsIkFMTCIsIkFNRCIsIkFORyIsIkFPQSIsIkFSUyIsIkFVRCIsIkFXRyIsIkFaTiIsIkJBTSIsIkJCRCIsIkJEVCIsIkJHTiIsIkJIRCIsIkJJRiIsIkJNRCIsIkJORCIsIkJPQiIsIkJPViIsIkJSTCIsIkJTRCIsIkJUQyIsIkJUTiIsIkJXUCIsIkJZTiIsIkJZUiIsIkJaRCIsIkNBRCIsIkNERiIsIkNIRSIsIkNIRiIsIkNIVyIsIkNMRiIsIkNMUCIsIkNOWSIsIkNPUCIsIkNPVSIsIkNSQyIsIkNVQyIsIkNVUCIsIkNWRSIsIkNaSyIsIkRKRiIsIkRLSyIsIkRPUCIsIkRaRCIsIkVFSyIsIkVHUCIsIkVSTiIsIkVUQiIsIkVUSCIsIkVVUiIsIkZKRCIsIkZLUCIsIkdCUCIsIkdFTCIsIkdHUCIsIkdIQyIsIkdIUyIsIkdJUCIsIkdNRCIsIkdORiIsIkdUUSIsIkdZRCIsIkhLRCIsIkhOTCIsIkhSSyIsIkhURyIsIkhVRiIsIklEUiIsIklMUyIsIklNUCIsIklOUiIsIklRRCIsIklSUiIsIklTSyIsIkpFUCIsIkpNRCIsIkpPRCIsIkpQWSIsIktFUyIsIktHUyIsIktIUiIsIktNRiIsIktQVyIsIktSVyIsIktXRCIsIktZRCIsIktaVCIsIkxBSyIsIkxCUCIsIkxLUiIsIkxSRCIsIkxTTCIsIkxUQyIsIkxUTCIsIkxWTCIsIkxZRCIsIk1BRCIsIk1ETCIsIk1HQSIsIk1LRCIsIk1NSyIsIk1OVCIsIk1PUCIsIk1STyIsIk1SVSIsIk1VUiIsIk1WUiIsIk1XSyIsIk1YTiIsIk1YViIsIk1ZUiIsIk1aTiIsIk5BRCIsIk5HTiIsIk5JTyIsIk5PSyIsIk5QUiIsIk5aRCIsIk9NUiIsIlBBQiIsIlBFTiIsIlBHSyIsIlBIUCIsIlBLUiIsIlBMTiIsIlBZRyIsIlFBUiIsIlJNQiIsIlJPTiIsIlJTRCIsIlJVQiIsIlJXRiIsIlNBUiIsIlNCRCIsIlNDUiIsIlNERyIsIlNFSyIsIlNHRCIsIlNIUCIsIlNMTCIsIlNPUyIsIlNSRCIsIlNTUCIsIlNURCIsIlNUTiIsIlNWQyIsIlNZUCIsIlNaTCIsIlRIQiIsIlRKUyIsIlRNVCIsIlRORCIsIlRPUCIsIlRSTCIsIlRSWSIsIlRURCIsIlRWRCIsIlRXRCIsIlRaUyIsIlVBSCIsIlVHWCIsIlVTRCIsIlVZSSIsIlVZVSIsIlVZVyIsIlVaUyIsIlZFRiIsIlZFUyIsIlZORCIsIlZVViIsIldTVCIsIlhBRiIsIlhCVCIsIlhDRCIsIlhPRiIsIlhQRiIsIlhTVSIsIlhVQSIsIllFUiIsIlpBUiIsIlpNVyIsIlpXRCIsIlpXTCIsImdldEZvcm1hdE9wdGlvbnMiLCJ0aW1lem9uZSIsInVzZU9wdGlvbnMiLCJ0eiIsIk51bWJlciIsImlzRmluaXRlIiwiZ2V0VGltZXpvbmVPZmZzZXRNaW51dGVzIiwiZGF0ZSIsImZsb29yIiwiRGF0ZSIsImdldFRpbWV6b25lT2Zmc2V0IiwidHpVcHBlciIsImRlZmF1bHRUaW1lem9uZU5hbWVzIiwiRXJyb3IiLCJzdHJmdGltZSIsInRvRGF0ZSIsInRvSlNEYXRlIiwidG9rZW5zIiwiVGltZXN0YW1wUGFyc2VyIiwicGFyc2VGb3JtYXRTdHJpbmciLCJ0aW1lem9uZU9mZnNldE1pbnV0ZXMiLCJ0ekRhdGUiLCJzZXRVVENNaW51dGVzIiwiZ2V0VVRDTWludXRlcyIsIm91dHB1dCIsInRva2VuIiwiRGlyZWN0aXZlIiwiVG9rZW4iLCJzdHJwdGltZSIsInRpbWVzdGFtcCIsInBhcnNlciIsInBhcnNlIiwiZ2V0RGF0ZSIsInN0cnRpbWUiLCJlbmdsaXNoIiwiZXJhTmFtZXMiLCJtZXJpZGllbU5hbWVzIiwic2hvcnRXZWVrZGF5TmFtZXMiLCJsb25nV2Vla2RheU5hbWVzIiwic2hvcnRNb250aE5hbWVzIiwibG9uZ01vbnRoTmFtZXMiLCJvcmRpbmFsVHJhbnNmb3JtIiwibnVtYmVyIiwiZGlnaXQiLCJsZWZ0UGFkIiwiY2hhciIsInRleHQiLCJzdHJpbmciLCJ3cml0ZVRpbWV6b25lT2Zmc2V0Iiwib2Zmc2V0TWludXRlcyIsImFic09mZnNldCIsInNpZ24iLCJob3VyIiwibWludXRlIiwiZ2V0RGF5T2ZXZWVrIiwieWVhciIsImdldFVUQ0Z1bGxZZWFyIiwibW9udGgiLCJnZXRVVENNb250aCIsImRheSIsImdldFVUQ0RhdGUiLCJnZXREYXlPZlllYXIiLCJsZW5ndGhzIiwibW9udGhMZW5ndGhzIiwiZm9yWWVhciIsIm1vbnRocyIsImdldFdlZWtPZlllYXJGcm9tU3VuZGF5IiwiZGF5T2ZZZWFyIiwiZmlyc3REYXlPZldlZWsiLCJnZXRGaXJzdFdlZWtkYXlJblllYXIiLCJnZXRXZWVrT2ZZZWFyRnJvbU1vbmRheSIsImRheU9mV2VlayIsInN1bmRheVdlZWsiLCJnZXRJU09XZWVrc0luWWVhciIsInByaW9yWWVhciIsImdldElTT1dlZWtPZlllYXIiLCJ3ZWVrTnVtYmVyIiwiZ2V0SVNPV2Vla0RhdGVZZWFyIiwiY29uc3RydWN0b3IiLCJuYW1lcyIsInBhZExlbmd0aCIsImxpa2VseUxlbmd0aCIsIm1pbmltdW0iLCJtYXhpbXVtIiwiY2FuQmVOZWdhdGl2ZSIsInJld3JpdGUiLCJwYXJzZUZ1bmN0aW9uIiwid3JpdGVGdW5jdGlvbiIsInN0b3JlRnVuY3Rpb24iLCJzdG9yZSIsImdldEJ5TmFtZSIsImRpcmVjdGl2ZSIsImlzT3JkaW5hbCIsImdldENhbkJlTmVnYXRpdmUiLCJnZXRMaWtlbHlMZW5ndGgiLCJnZXRSZXdyaXRlUGFyc2VkIiwicmV3cml0ZVBhcnNlZFZhbHVlIiwiZXhwYW5kZWRGcm9tIiwiaGFzUGFyc2VGdW5jdGlvbiIsImhhc1N0b3JlRnVuY3Rpb24iLCJudW1iZXJJbkJvdW5kcyIsImdldEJvdW5kc1N0cmluZyIsIkRpcmVjdGl2ZVRva2VuIiwicmVzdWx0U3RyaW5nIiwidXBwZXIiLCJTdHJpbmdUb2tlbiIsIkRpcmVjdGl2ZVN0cmluZ1Rva2VuIiwiYWRkQ2hhcmFjdGVyIiwiY2giLCJwYXJzZVdlZWtkYXlOYW1lIiwiZ2V0VVRDRGF5IiwicGFyc2VNb250aE5hbWUiLCJjZW50dXJ5IiwiZGF5T2ZNb250aCIsIm1pY3Jvc2Vjb25kIiwiZ2V0VVRDTWlsbGlzZWNvbmRzIiwiaXNvVHdvRGlnaXRZZWFyIiwiaXNvWWVhciIsImdldFVUQ0hvdXJzIiwibWlsbGlzZWNvbmQiLCJtZXJpZGllbSIsInBhcnNlTWVyaWRpZW1OYW1lIiwibWljcm9zZWNvbmRzU2luY2VFcG9jaCIsImdldFRpbWUiLCJzZWNvbmRzU2luY2VFcG9jaCIsInNlY29uZCIsImdldFVUQ1NlY29uZHMiLCJ3ZWVrT2ZZZWFyRnJvbVN1bmRheSIsImlzb1dlZWtPZlllYXIiLCJ3ZWVrT2ZZZWFyRnJvbU1vbmRheSIsInR3b0RpZ2l0WWVhciIsInBhcnNlVGltZXpvbmVPZmZzZXQiLCJ0ekxpc3QiLCJnZXRUaW1lem9uZU5hbWVMaXN0IiwicGFyc2VJbmRleEluTGlzdCIsInRpbWV6b25lTmFtZXMiLCJlcmEiLCJwYXJzZUVyYU5hbWUiLCJUaW1lc3RhbXBQYXJzZUVycm9yIiwicmVhc29uIiwiY3VycmVudFRva2VuIiwibWVzc2FnZSIsImNhcHR1cmVTdGFja1RyYWNlIiwic3RhY2siLCJjcmVhdGUiLCJpc0RpZ2l0IiwiZ2V0WWVhckZyb21Ud29EaWdpdHMiLCJnZXRNb250aEZyb21EYXlPZlllYXIiLCJkYXlzIiwiZ2V0RGF5T2ZNb250aEZyb21EYXlPZlllYXIiLCJnZXREYXRlRnJvbUlTT1dlZWtEYXRlIiwid2Vla2RheU9mSmFuNCIsImRheXNJblllYXIiLCJpc0xlYXBZZWFyIiwiZ2V0RGF0ZUZyb21TdW5kYXlXZWVrRGF0ZSIsIndlZWtPZlllYXIiLCJnZXREYXRlRnJvbU1vbmRheVdlZWtEYXRlIiwic3VuZGF5RGF5T2ZZZWFyIiwiZm9ya0xlbmd0aCIsIm1pbGxpc2Vjb25kc1NpbmNlRXBvY2giLCJnZXRUaW1lem9uZU9mZnNldE9mRGF0ZSIsIm9mZnNldFNpZ24iLCJ0b3RhbE1pbnV0ZXMiLCJnZXRGdWxsWWVhciIsInNldFVUQ0Z1bGxZZWFyIiwic2V0VVRDTW9udGgiLCJzZXRVVENEYXRlIiwic2V0VVRDSG91cnMiLCJzZXRVVENTZWNvbmRzIiwic2V0VVRDTWlsbGlzZWNvbmRzIiwiY29weSIsImZvcmsiLCJzdGFydFRva2VuSW5kZXgiLCJwYXJzZVN0cmluZ1Rva2VuIiwicGFyc2VBbWJpZ3VvdXNOdW1iZXIiLCJwYXJzZU51bWJlciIsInRva2VuSW5kZXgiLCJsYXN0V2hvbGVFcnJvciIsImxlbmd0aExpbWl0IiwiSW5maW5pdHkiLCJuZWdhdGl2ZSIsInRyaW0iLCJpc0ludGVnZXIiLCJvcmRpbmFsIiwicG9zc2libGUiLCJwb3NzaWJsZUNvdW50IiwibWF0Y2hJbmRleCIsIm1hdGNoTGVuZ3RoIiwiaiIsInRpbWV6b25lTmFtZUxpc3QiLCJob3VycyIsIm1pbnV0ZXMiLCJmb3JtYXRTdHJpbmciLCJkaXIiLCJ6dWx1VGltZXpvbmUiLCJjb21tb24iLCJsZWFwIiwiaXNPYmplY3QiLCJzZXJpYWxpemUiLCJ0b1VuZGVyc2NvcmUiLCJhamF4IiwiYXBpVXJsIiwic3VjY2VzcyIsInBhcmFtcyIsIm1ldGhvZCIsInhtbEh0dHAiLCJYTUxIdHRwUmVxdWVzdCIsImlzU3VjY2VzcyIsInN0YXR1cyIsIm9wZW4iLCJzZXRSZXF1ZXN0SGVhZGVyIiwib25yZWFkeXN0YXRlY2hhbmdlIiwicmVzcG9uc2UiLCJyZWFkeVN0YXRlIiwicmVzcG9uc2VUZXh0IiwiZSIsInNlbmQiLCJ0b0xvY2FsZVN0cmluZ1N1cHBvcnRzT3B0aW9ucyIsIkludGwiLCJOdW1iZXJGb3JtYXQiLCJjdXJyZW5jeUZvcm1hdHRlciIsImxhbmciLCJjdXJyZW5jeSIsIm1pbmltdW1GcmFjdGlvbkRpZ2l0cyIsIm1heGltdW1GcmFjdGlvbkRpZ2l0cyIsImlzRG9sbGFyIiwiY3VycmVuY3lEaXNwbGF5IiwibnVtYmVyRm9ybWF0IiwiZGF5c0luTW9udGgiLCJtb250aExlbmd0aCIsInJlbW92ZUNsYXNzIiwic2V0Q2xhc3NOYW1lIiwiZ2V0Q2xhc3NOYW1lIiwiYWRkQ2xhc3MiLCJlbCIsImNsYXNzTmFtZXMiLCJjbGFzc0xpc3QiLCJjbHMiLCJjcmVhdGVFbGVtZW50IiwiYXR0cnMiLCJkZXN0cm95RWxlbWVudCIsInJlbW92ZUNoaWxkIiwiZWxlbWVudEZyb21TdHJpbmciLCJpbm5lckhUTUwiLCJjaGlsZHJlbiIsImZpbmRCeUNsYXNzTmFtZSIsImNvbnRleHQiLCJjbGFzc05hbWUiLCJTVkdBbmltYXRlZFN0cmluZyIsImJhc2VWYWwiLCJ0cmF2ZXJzZVRvUGFyZW50V2l0aEF0dHIiLCJnZXRQYXJlbnRBdHRyaWJ1dGUiLCJhdHRyIiwiaGFzQ2xhc3MiLCJSZWdFeHAiLCJpcyIsImlzSW5zaWRlIiwidGFnTmFtZSIsInJlbW92ZSIsInJlZ2V4IiwiZ2V0QXR0cmlidXRlIiwiRW1pdHRlciIsIm9uIiwiZXZlbnQiLCJsaXN0ZW5lciIsImV2ZW50cyIsIm9uY2UiLCJvZmYiLCJhcHBseSIsImxpc3RlbmVycyIsInNwbGljZSIsImVtaXQiLCJpc0Z1bmN0aW9uIiwiZiIsImlzTmFOUG9seWZpbGwiLCJvIiwiaXNOYU4iLCJpc051bWVyaWMiLCJuIiwicGFyc2VJbnQiLCJ0cmF2ZXJzZU9iaiIsImRhc2hUb0NhcGl0YWwiLCJ1bmRlcnNjb3JlVG9DYXBpdGFsIiwiY2FwaXRhbGl6ZU9iaiIsIm9iamVjdCIsIm1lcmdlIiwib2JqMSIsIm9iajIiLCJpc0RlZXAiLCJvYmozIiwicGljayIsIm9iaiIsInQiLCJwaWNrZWRPYmoiLCJjb21wb25lbnQiLCJmbktleSIsImZuVmFsdWUiLCJjdXJyIiwibmV4dFByb3BlcnR5IiwiaXNTdHJpbmciLCJ2YWxpZGF0ZSIsImlzQmxhbmsiLCJpc0VtYWlsIiwibWF0Y2giLCJpc0JvdW5kZWRCeSIsImdlbkFycmF5UmFuZ2UiLCJwYXJzZUlTT1N0cmluZyIsImFyclN0ciIsIkNhbGVuZGFyVHJlZSIsInZhbGlkYXRlQ2VsbCIsInRyZWUiLCJhZGRUcmVlIiwic2VsZWN0UmFuZ2UiLCJyYW5nZSIsInNlbGVjdERheXNJbk1vbnRoIiwibW9udGhEYXlzIiwic2VsZWN0TW9udGhzSW5ZZWFyIiwiaXNWYWxpZCIsImlzUmFuZ2VWYWxpZCIsInNlbGVjdGlvbiIsIm1vbnRoUmFuZ2UiLCJzdGFydERheSIsImVuZERheSIsInNlbGVjdERheSIsImZpbHRlclZhbGlkcyIsImNlbGwiLCJyZXBsYWNlTWFwcyIsInVwZGF0ZWRBdCIsIm1hcHNUb1RyZWUiLCJyZW1vdmVNYXAiLCJtYXBzIiwibWFwU3RhcnRBdCIsImF2YWlsYWJpbGl0eSIsIm5pZ2h0bHlfcmF0ZXMiLCJtaW5pbXVtX3N0YXlzIiwiYXZhaWwiLCJyYXRlcyIsIm1pbk1hcCIsImRheVNoaWZ0IiwicHJldmlvdXNEYXRlIiwibWluU3RheSIsInJhdGUiLCJpc0F2YWlsYWJsZSIsInByZXZBdmFpbGFibGUiLCJpc01vcm5pbmdCbG9ja2VkIiwiaXNBdmFpbGFibGVPdXQiLCJnZXREYXlQcm9wZXJ0eSIsInByb3AiLCJpc0RheURpc2FibGVkIiwidGVtcGxhdGVzIiwiY29uZmlnIiwibG9jYWxlcyIsImRhdGVUb0lzbyIsImlzTGF0ZXIiLCJpc0N1cnJlbnQiLCJ2YWxpZGF0aW9uT2ZDZWxsIiwidEZvcm1hdHRlciIsImRhdGVUb0FycmF5IiwibW9udGhEaWZmIiwidXRpbHNTdHlsZXMiLCJDYWxlbmRhciIsIm9wdHMiLCJWRVJTSU9OIiwidmVyc2lvbiIsIkNTU19QUkVGSVgiLCJjc3NQcmVmaXgiLCJsb2dnZXIiLCJjb25maWdEYXRhc2V0IiwiZGF0YXNldCIsImlzRHJvcERvd24iLCJpbml0Q2FsZW5kYXJEcm9wIiwibG9jYWxlIiwiZm9ybWF0RGF0ZSIsInN0YXJ0T2ZXZWVrIiwiY3VycmVudERhdGUiLCJnZXRNb250aCIsInllYXJTdGFydCIsIm1vbnRoU3RhcnQiLCJkb20iLCJjVHJlZSIsImFkZE1hcHMiLCJzdGFydF9kYXRlIiwiaXNTZWxlY3RpbmciLCJoaWdobGlnaHRlZEJvdW5kcyIsImhhc1ZhbGlkUmFuZ2UiLCJpc1JldmVyc2VTZWxlY3RhYmxlIiwiaW5pdCIsImNhbGVuZGFyIiwidGhlbWUiLCJtb250aHNXcmFwcGVyIiwiYXBwZW5kQ2hpbGQiLCJmb3J3YXJkIiwiYmFjayIsInJlbmRlck1vbnRocyIsImFkZEJ0bnNFdmVudHMiLCJzZWxlY3RhYmxlIiwiZWxTdGFydEF0IiwiZWxFbmRBdCIsInJlbnRhbElkIiwiaW5wdXRzVG9WYWx1ZXMiLCJsb2FkTWFwcyIsImNoYW5nZVNlbGVjdGlvbk9yZGVyIiwiaXNSZXZlcnNlIiwiZGVzdHJveU1vbnRocyIsInllYXJFbmQiLCJtb250aEVuZCIsImNyZWF0ZVRyZWUiLCJkaXNwbGF5TW9udGhzIiwicmV2ZXJzZWQiLCJkaXJlY3QiLCJhZGRNb250aEV2ZW50cyIsImFjdGlvbnNFbmFibGVkIiwiZW5hYmxlQWxsRGF5cyIsImRpc2FibGVCYWNrQnRuIiwicmVjb3ZlclNlbGVjdGlvbnMiLCJzZWxlY3Rpb25TdGFydCIsInNlbGVjdFN0YXJ0Iiwic2VsZWN0aW9uRW5kIiwic2VsZWN0RW5kIiwiaGlnaExpZ2h0UmFuZ2UiLCJpc0JhY2tEaXNhYmxlZCIsInN0YXJ0RGF0ZSIsImRpc2FibGVkIiwidG9nZ2xlTG9hZGluZyIsImxvYWRpbmciLCJwcmV2ZW50RGVmYXVsdCIsIm1vbnRoVG9SZW5kZXIiLCJ5ZWFyVG9SZW5kZXIiLCJpc0VuZEZpcnN0IiwicmVzZXRTZWxlY3Rpb25PbkVzY2FwZSIsImtleUNvZGUiLCJyZXNldFNlbGVjdGlvbiIsImRhdGVWYWx1ZSIsImRheUFscmVhZHlTZWxlY3RlZCIsInJhbmdlU2VsZWN0ZWQiLCJpc1Bhc3RUb2RheSIsImVuZERhdGVGaXJzdEFjdGlvbiIsInN0YXJ0RGF0ZUZpcnN0QWN0aW9uIiwic2VsZWN0aW5nRGlyZWN0Iiwic2VsZWN0aW5nUmV2ZXJzZWQiLCJoaWdobGlnaHRlZCIsImNvbXBsZXRlU2VsZWN0aW9uIiwiY2FsRHJvcCIsImNsb3NlRHJvcCIsInJlbW92ZUhpZ2hsaWdodCIsImNlbGxzIiwicXVlcnlTZWxlY3RvckFsbCIsImhvdmVyZWQiLCJob3ZlcmVkT2Zmc2V0IiwiY2VsbEEiLCJjZWxsQiIsImNoYW5nZUhpZ2hsaWdodERpcmVjdGlvbiIsImlzRGlzYWJsZWRMZWZ0IiwiaXNEaXNhYmxlZENlbnRlciIsImlzRGlzYWJsZWRSaWdodCIsImlzSW52YWxpZCIsIm9mZnNldENlbGwiLCJyZWxhdGVkVGFyZ2V0IiwiY29tcGFyZURvY3VtZW50UG9zaXRpb24iLCJOb2RlIiwiRE9DVU1FTlRfUE9TSVRJT05fQ09OVEFJTkVEX0JZIiwiZGF0ZUFycmF5Iiwic2VsZWN0RW5kQWN0aW9uIiwic2VsZWN0U3RhcnRBY3Rpb24iLCJzd2l0Y2hJbnB1dEZvY3VzIiwib25TZWxlY3RTdGFydCIsIm9uU2VsZWN0RW5kIiwiaW52YWxpZCIsImRlc3Ryb3lUb29sdGlwIiwidG9vbHRpcFBvcHBlciIsInRvb2x0aXAiLCJtYXhTdGF5IiwiaW52YWxpZFJhbmdlTWVzc2FnZSIsImFsbG93U2hvcnRlck1pblN0YXlTZWxlY3Rpb24iLCJhbGxvd0xvbmdlck1heFN0YXlTZWxlY3Rpb24iLCJoYXNWYWxpZERheXMiLCJoYXNWYWxpZE1pblN0YXkiLCJoYXNWYWxpZE1heFN0YXkiLCJoYXNJbnZhbGlkTWluU3RheSIsImhhc0ludmFsaWRNYXhTdGF5IiwiaGFzSW52YWxpZERheXMiLCJ0b29sdGlwUG9zaXRpb24iLCJQb3BwZXIiLCJvbkNsZWFyU2VsZWN0aW9uIiwiaXNTaW5nbGVJbnB1dCIsImVsU2luZ2xlSW5wdXQiLCJ2YWx1ZVRvSW5wdXQiLCJ0aW1lcyIsIm1Eb20iLCJkb21Nb250aCIsImRheUVsZW1lbnRzIiwibW9udGhEb20iLCJ0YWJsZUhlYWRlciIsImhlYWRlclRlbXBsYXRlU3RyaW5nIiwiY2FwdGlvbiIsImRheXNUZW1wbGF0ZVN0cmluZyIsImhlYWRlciIsIndlZWtkYXlzTGFiZWxzRXh0ZW5kZWQiLCJkYXlzUGVyV2VlayIsIndlZWtEYXlMYWJlbCIsInN0YXJ0T2ZNb250aCIsImdldERheSIsInJvd1RlbXBsYXRlIiwid2Vla1JvdyIsIm1vbnRoVGVtcGxhdGUiLCJ3ZWVrU2hpZnQiLCJyb3dzIiwid2Vla1NoaWZ0Q29ycmVjdGVkIiwiZGF5Q291bnRlciIsIndlZWsiLCJkYXlUZW1wbGF0ZVN0cmluZyIsIndlZWtEYXlQbGFjZWhvbGRlciIsImNsb3NlIiwic2hvd1JhdGVzIiwiaXNEaXNhYmxlZCIsImlzQ3VycmVudERheSIsImlzQXZhaWxhYmxlSW4iLCJ3ZWVrRGF5Iiwic2hvd01pblN0YXkiLCJzaG93TWF4U3RheSIsIm9uU3VjY2VzcyIsImRpc2FibGVBdmFpbGFiaXR5TWFwIiwibWFwc0xvYWRlZCIsIm9uRXJyb3IiLCJmZXRjaCIsInJlbnRhbFVybCIsImpzb24iLCJjYXRjaCIsInNpbmdsZUlucHV0RGF0ZUZvcm1hdCIsImRhdGVTdGFydCIsImRhdGVFbmQiLCJzaW5nbGVJbnB1dFNlcGFyYXRvciIsIm9uU2VsZWN0aW9uQ29tcGxldGVkIiwiZWxUYXJnZXQiLCJoaWRkZW5FbEZvcm1hdCIsImlucHV0IiwiaGlkZGVuSW5wdXQiLCJjbG9uZU5vZGUiLCJwYXJlbnRFbGVtZW50IiwiaGlkZGVuIiwiaGlkZGVuRWxFbmRBdCIsImhpZGRlbkVsU3RhcnRBdCIsInJlYWRPbmx5IiwiZHJvcEJhc2ljIiwiZHJvcFBsYWNlbWVudCIsIm9wZW5Ecm9wIiwiaXNSZXZlcnNlZCIsInZpc2libGUiLCJmb2N1c1RvdWNoRXZlbnRzIiwiYmluZCIsImVsUmVzZXQiLCJldnQiLCJjcmVhdGVFdmVudCIsImluaXRFdmVudCIsImhpZGRlblZhbHVlIiwiZGlzcGF0Y2hFdmVudCIsIm1vbnRoRGlmZmVyZW5jZSIsInR5cGUiLCJmb2N1cyIsImZvcmNlIiwic3RvcFByb3BhZ2F0aW9uIiwiX2NhbGxiYWNrIiwibXNnIiwiYXBpSG9zdCIsImFwaU5hbWVzcGFjZSIsImFwaU1hcHNSb3V0ZSIsImFwaVJlbnRhbElkIiwiYXBpQ3VycmVuY3kiLCJpZHMiLCJyb3V0ZSIsImVuIiwiZGUiLCJlcyIsImZyIiwiaXQiLCJzdiIsInJ1IiwicGwiLCJubCIsInRvb2x0aXBBcnJvdyIsIm1DZWxsIiwibGFiZWwiLCJ0aCIsIm1pblN0YXlUIiwibWF4U3RheVQiLCJyYXRlVCIsInRvZGF5IiwiY250IiwiaW5mbyIsIm51bSIsInBhZCIsInZhbCIsImxvZyIsImF2YWlsYWJsZUluIiwiYXZhaWxhYmxlT3V0IiwiQm9va2luZ1N5bmNXaWRnZXRVdGlscyIsImluaXRpYWxpemVkIiwiY2FsIiwiaW5zdGFuY2VzIiwiQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldCJdLCJzb3VyY2VSb290IjoiIn0=
|