tc-checking-tool-rcl 0.9.96 → 0.9.98
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.
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.translationWords = exports.translationNotes = exports["default"] = void 0;
|
|
8
|
+
var _usfmHelpers = require("../utils/usfmHelpers");
|
|
8
9
|
var _react = _interopRequireWildcard(require("react"));
|
|
9
10
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
10
11
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
@@ -1098,14 +1099,14 @@ var Checker = function Checker(_ref) {
|
|
|
1098
1099
|
}
|
|
1099
1100
|
var currentChapterData = targetBible === null || targetBible === void 0 ? void 0 : targetBible[chapter];
|
|
1100
1101
|
var currentVerseData = currentChapterData === null || currentChapterData === void 0 ? void 0 : currentChapterData[verse];
|
|
1101
|
-
var _AlignmentHelpers$upd = AlignmentHelpers.updateAlignmentsToTargetVerse(currentVerseData, _newVerseText),
|
|
1102
|
+
var _AlignmentHelpers$upd = _wordAlignerLib.AlignmentHelpers.updateAlignmentsToTargetVerse(currentVerseData, _newVerseText),
|
|
1102
1103
|
targetVerseObjects = _AlignmentHelpers$upd.targetVerseObjects;
|
|
1103
1104
|
targetChapter[verse] = {
|
|
1104
1105
|
verseObjects: targetVerseObjects
|
|
1105
1106
|
}; // save
|
|
1106
1107
|
|
|
1107
1108
|
updateSettings(_bibles, targetBook);
|
|
1108
|
-
var verseText = removeUsfmMarkers(_newVerseText);
|
|
1109
|
+
var verseText = (0, _usfmHelpers.removeUsfmMarkers)(_newVerseText);
|
|
1109
1110
|
setState({
|
|
1110
1111
|
verseText: verseText
|
|
1111
1112
|
});
|
|
@@ -1367,4 +1368,4 @@ Checker.propTypes = {
|
|
|
1367
1368
|
translate: _propTypes["default"].func.isRequired
|
|
1368
1369
|
};
|
|
1369
1370
|
var _default = exports["default"] = Checker;
|
|
1370
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcHJvcFR5cGVzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9sb2Rhc2giLCJfR3JvdXBNZW51Q29tcG9uZW50IiwiX3dvcmRBbGlnbmVyTGliIiwiX2RlZXBFcXVhbCIsIl90d0FydGljbGVIZWxwZXJzIiwiX0NoZWNrSW5mb0NhcmQiLCJfdG5BcnRpY2xlSGVscGVycyIsIl9TY3JpcHR1cmVQYW5lIiwiX1BvcG92ZXJDb250YWluZXIiLCJfQm9va3NPZlRoZUJpYmxlIiwiX2NvbXBsZXhTY3JpcHRGb250cyIsIl9UcmFuc2xhdGlvbkhlbHBzIiwidEhlbHBzSGVscGVycyIsIl9WZXJzZUNoZWNrIiwiX2NoZWNrSW5mb0NhcmRIZWxwZXJzIiwiZSIsIl9fZXNNb2R1bGUiLCJ0IiwiV2Vha01hcCIsInIiLCJuIiwibyIsImkiLCJmIiwiX19wcm90b19fIiwiX3R5cGVvZiIsImhhcyIsImdldCIsInNldCIsIl90IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiQXJyYXkiLCJpc0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwibGVuZ3RoIiwiX24iLCJGIiwicyIsImRvbmUiLCJ2YWx1ZSIsIlR5cGVFcnJvciIsImEiLCJ1IiwibmV4dCIsIl90b0NvbnN1bWFibGVBcnJheSIsIl9hcnJheVdpdGhvdXRIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXkiLCJfbm9uSXRlcmFibGVTcHJlYWQiLCJmcm9tIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiX3RvUHJvcGVydHlLZXkiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIl90b1ByaW1pdGl2ZSIsInRvUHJpbWl0aXZlIiwiU3RyaW5nIiwiTnVtYmVyIiwiX3NsaWNlZFRvQXJyYXkiLCJfYXJyYXlXaXRoSG9sZXMiLCJfaXRlcmFibGVUb0FycmF5TGltaXQiLCJfbm9uSXRlcmFibGVSZXN0IiwidG9TdHJpbmciLCJzbGljZSIsImNvbnN0cnVjdG9yIiwibmFtZSIsInRlc3QiLCJsIiwibG9jYWxTdHlsZXMiLCJjb250YWluZXJEaXYiLCJkaXNwbGF5IiwiZmxleERpcmVjdGlvbiIsIndpZHRoIiwiaGVpZ2h0IiwiY2VudGVyRGl2Iiwib3ZlcmZsb3dYIiwibWFyZ2luTGVmdCIsInNjcmlwdHVyZVBhbmVEaXYiLCJmbGV4U2hyaW5rIiwicGFkZGluZ0JvdHRvbSIsInRyYW5zbGF0aW9uV29yZHMiLCJleHBvcnRzIiwidHJhbnNsYXRpb25Ob3RlcyIsIm1heGltdW1TZWxlY3Rpb25zIiwiY29uc29sZSIsImxvZyIsIkNoZWNrZXIiLCJfcmVmIiwiX3RhcmdldExhbmd1YWdlRGV0YWlsIiwiX3RhcmdldExhbmd1YWdlRGV0YWlsMiIsIl90YXJnZXRfbGFuZ3VhZ2UkYm9vayIsImFsaWduZWRHbEJpYmxlIiwiYmlibGVzXyIsImJpYmxlcyIsImNoYW5nZWRDdXJyZW50Q2hlY2siLCJjaGFuZ2VUYXJnZXRWZXJzZSIsImNoZWNraW5nRGF0YSIsImNoZWNrVHlwZSIsImNvbnRleHRJZCIsImdldExleGljb25EYXRhIiwiZ2xXb3Jkc0RhdGEiLCJpbml0aWFsU2V0dGluZ3MiLCJzYXZlQ2hlY2tpbmdEYXRhIiwic2F2ZVNldHRpbmdzIiwic2hvd0RvY3VtZW50Iiwic3R5bGVzIiwidGFyZ2V0QmlibGVfIiwidGFyZ2V0QmlibGUiLCJ0YXJnZXRMYW5ndWFnZURldGFpbHMiLCJ0cmFuc2xhdGUiLCJfdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsInBhbmVTZXR0aW5ncyIsInBhbmVLZXlTZXR0aW5ncyIsInRvb2xzU2V0dGluZ3MiLCJtYW5pZmVzdCIsIl91c2VTdGF0ZTIiLCJzZXR0aW5ncyIsIl9zZXRTZXR0aW5ncyIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0Iiwic2V0QmlibGVzIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJzZXRUYXJnZXRCaWJsZSIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwidGVtcENoZWNraW5nRGF0YSIsInNldFRlbXBDaGVja2luZ0RhdGEiLCJfdXNlU3RhdGU5IiwiX3VzZVN0YXRlMCIsImxvY2FsQ2hlY2tpbmdEYXRhIiwic2V0TG9jYWxDaGVja2luZ0RhdGEiLCJfdXNlU3RhdGUxIiwiYWxpZ25lZEdMVGV4dCIsImFydGljbGUiLCJjdXJyZW50Q2hlY2siLCJjdXJyZW50Q2hlY2tpbmdEYXRhIiwiZ3JvdXBUaXRsZSIsImdyb3VwUGhyYXNlIiwiZ3JvdXBzRGF0YSIsImdyb3Vwc0luZGV4IiwiaXNDb21tZW50Q2hhbmdlZCIsImlzVmVyc2VDaGFuZ2VkIiwibW9kZSIsIm5ld1ZlcnNlVGV4dCIsInBvcG92ZXJQcm9wcyIsInBvcG92ZXJWaXNpYmlsaXR5Iiwic2hvd0hlbHBzTW9kYWwiLCJzaG93SGVscHMiLCJuZXdUYWdzIiwidmVyc2VUZXh0IiwiX3VzZVN0YXRlMTAiLCJzdGF0ZSIsIl9zZXRTdGF0ZSIsInNldFN0YXRlIiwibmV3U3RhdGUiLCJwcmV2U3RhdGUiLCJnZXRDdXJyZW50VmFsdWVGb3IiLCJrZXkiLCJnZXRUZW1wVmFsdWVGb3IiLCJjdXJyZW50U2VsZWN0aW9ucyIsInRlbXBTZWxlY3Rpb25zIiwidGVtcE5vdGhpbmdUb1NlbGVjdCIsImN1cnJlbnROb3RoaW5nVG9TZWxlY3QiLCJncm91cHNEYXRhTG9hZGVkIiwidXBkYXRlTW9kZUZvclNlbGVjdGlvbnMiLCJuZXdTZWxlY3Rpb25zIiwibm90aGluZ1RvU2VsZWN0Iiwibm9TZWxlY3Rpb25zIiwibmV3TW9kZSIsInVzZUVmZmVjdCIsImhhdmVEYXRhIiwiZ3JvdXBzRGF0YUluaXRpYWxpemVkIiwiZmxhdHRlbmVkR3JvdXBEYXRhIiwiZ3JvdXBEYXRhSGVscGVycyIsImZsYXR0ZW5Hcm91cERhdGEiLCJwYXJzZVRuVG9JbmRleCIsInBhcnNlVHdUb0luZGV4IiwiY2hlY2siLCJmaW5kQ2hlY2siLCJtb2RpZmllZCIsInNlbGVjdGlvbnNIZWxwZXJzIiwidmFsaWRhdGVTZWxlY3Rpb25zRm9yQWxsQ2hlY2tzIiwiaW52YWxpZGF0ZWQiLCJjb25jYXQiLCJfc2F2ZUNoZWNraW5nRGF0YSIsInVwZGF0ZUNvbnRleHQiLCJzZWxlY3Rpb25zIiwibmV3Q2hlY2siLCJncm91cHNJbmRleF8iLCJ1bmRlZmluZWQiLCJyZWZlcmVuY2UiLCJ2ZXJzZUhlbHBlcnMiLCJnZXRWZXJzZVRleHRGcm9tQmlibGUiLCJnZXRBbGlnbmVkR0xUZXh0IiwiZ2V0VGl0bGVGcm9tSW5kZXgiLCJncm91cElkIiwib2NjdXJyZW5jZU5vdGUiLCJnZXRQaHJhc2VGcm9tVHciLCJncm91cERhdGEiLCJhcnRpY2xlcyIsIl9hcnRpY2xlIiwiYXJ0aWNsZUlkIiwiZ3JvdXBzSWRzIiwiX2kiLCJfZ3JvdXBzSWRzIiwiX2dyb3VwSWQiLCJncm91cCIsImN1cnJlbnRBcnRpY2xlTWFya2Rvd24iLCJjb252ZXJ0TWFya2Rvd25MaW5rcyIsImdhdGV3YXlMYW5ndWFnZUlkIiwiY29tbWVudFRleHQiLCJib29rSWQiLCJib29rIiwiaWQiLCJib29rTmFtZSIsImJvb2tEZXRhaWxzIiwidGFyZ2V0TGFuZ3VhZ2VGb250IiwicHJvamVjdEZvbnQiLCJjdXJyZW50Q29udGV4dElkIiwic2V0VG9vbFNldHRpbmdzIiwiTkFNRVNQQUNFIiwiZmllbGROYW1lIiwiZmllbGRWYWx1ZSIsIl90b29sc1NldHRpbmdzIiwiY29tcG9uZW50U2V0dGluZ3MiLCJzZXRTZXR0aW5ncyIsIl9zYXZlU2V0dGluZ3MiLCJfc2V0dGluZ3MiLCJuZXdTZXR0aW5ncyIsIl9wYW5lU2V0dGluZ3MiLCJfcGFuZVNldHRpbmciLCJfcGFuZUtleVNldHRpbmdzIiwiX2kyIiwiX2tleXMiLCJkb1NhdmUiLCJzZXRUb29sU2V0dGluZ3NTY3JpcHR1cmUiLCJfaXRlcmF0b3IiLCJfc3RlcCIsImxhbmd1YWdlSWQiLCJiaWJsZUlkIiwib3duZXIiLCJlcnIiLCJhZGRPYmplY3RQcm9wZXJ0eVRvTWFuaWZlc3QiLCJfbWFuaWZlc3QiLCJhcHBTZXR0aW5ncyIsIl9hcHBTZXR0aW5ncyIsIm9wZW5BbGVydERpYWxvZyIsImNoZWNrSWZWZXJzZUNoYW5nZWQiLCJfbmV3VmVyc2VUZXh0IiwidGFyZ2V0IiwiX2lzVmVyc2VDaGFuZ2VkIiwiaGFuZGxlRWRpdFZlcnNlIiwiY2FuY2VsRWRpdFZlcnNlIiwic2F2ZUVkaXRWZXJzZSIsIl9jdXJyZW50Q29udGV4dElkJHJlZiIsImNoYXB0ZXIiLCJ2ZXJzZSIsInZlcnNlUmVmIiwidmVyc2VTcGFuIiwiYmVmb3JlIiwiZWRpdFRhcmdldFZlcnNlIiwiaGFuZGxlR29Ub05leHQiLCJuZXh0Q2hlY2siLCJmaW5kTmV4dENoZWNrIiwiY2hhbmdlQ3VycmVudENoZWNrXyIsImhhbmRsZUdvVG9QcmV2aW91cyIsInByZXZpb3VzQ2hlY2siLCJmaW5kUHJldmlvdXNDaGVjayIsImhhbmRsZVRhZ3NDaGVja2JveCIsInRhZyIsImN1cnJlbnRUYWdzIiwidGFnSW5kZXgiLCJpbmRleE9mIiwiX25ld1RhZ3MiLCJjb3B5Iiwic3BsaWNlIiwidmFsaWRhdGVTZWxlY3Rpb25zIiwidmVyc2VUZXh0XyIsInNlbGVjdGlvbnNfIiwidmFsaWRhdGVWZXJzZVNlbGVjdGlvbnMiLCJ1bmZpbHRlcmVkVmVyc2VUZXh0IiwidXNlTWVtbyIsInVuZmlsdGVyZWRWZXJzZVRleHRfIiwiX3RhcmdldEJpYmxlJGNoYXB0ZXIiLCJ2ZXJzZURhdGEiLCJVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzIiwiZ2V0VXNmbUZvclZlcnNlQ29udGVudCIsInNldFRlbXBDaGVja2luZ0l0ZW0iLCJuZXdDaGVja2luZ0RhdGEiLCJjaGFuZ2VTZWxlY3Rpb25zSW5Mb2NhbFN0YXRlIiwidG9nZ2xlTm90aGluZ1RvU2VsZWN0Iiwic2VsZWN0IiwibmV3Q29udGV4dCIsIm5vQ2hlY2siLCJuZXdDb250ZXh0SWQiLCJzZWxlY3Rpb25zVW5jaGFuZ2VkIiwiaXNFcXVhbCIsImRpcmVjdGlvbiIsImJvb2ttYXJrRW5hYmxlZCIsImlzVmVyc2VFZGl0ZWQiLCJpc1ZlcnNlSW52YWxpZGF0ZWQiLCJfc2F2ZVNlbGVjdGlvbiIsIl9jbG9uZURhdGFGb3JTYXZpbmciLCJjbG9uZURhdGFGb3JTYXZpbmciLCJjaGVja0luR3JvdXBzRGF0YSIsIl9jdXJyZW50Q2hlY2siLCJfbmV3Q2hlY2tpbmdEYXRhIiwiZGVsZXRlVGVtcENoZWNraW5nRGF0YSIsInVwZGF0ZVZhbHVlc0luQ2hlY2tEYXRhIiwiX2dyb3Vwc0RhdGEiLCJfIiwiY2xvbmVEZWVwIiwiY2F0ZWdvcnkiLCJuZXdDaGVja0RhdGEiLCJfaTMiLCJfT2JqZWN0JGtleXMiLCJuZXdDaGVja2luZ1ZhbHVlIiwiX3NhdmVEYXRhIiwibmV3RGF0YSIsIl9jbG9uZURhdGFGb3JTYXZpbmcyIiwiX2k0IiwiX09iamVjdCRrZXlzMiIsImNoYW5nZWREYXRhIiwiX2k1IiwiX09iamVjdCRrZXlzMyIsIl90ZW1wQ2hlY2tpbmdEYXRhIiwiY2FuY2VsU2VsZWN0aW9uIiwiY2xlYXJTZWxlY3Rpb24iLCJ0b2dnbGVCb29rbWFyayIsInJlbWluZGVycyIsImNoYW5nZU1vZGUiLCJjaGVja0lmQ29tbWVudENoYW5nZWQiLCJuZXdjb21tZW50Iiwib2xkY29tbWVudCIsImNhbmNlbENvbW1lbnQiLCJzYXZlQ29tbWVudCIsIm5ld0NvbW1lbnQiLCJjb21tZW50cyIsImhhbmRsZUNvbW1lbnQiLCJwcmV2ZW50RGVmYXVsdCIsInJlYWR5VG9EaXNwbGF5Q2hlY2tlciIsImdldExleGljb25EYXRhXyIsImxleGljb25JZCIsImVudHJ5SWQiLCJsZXhpY29uRGF0YSIsIm9uQ2xvc2VQb3BvdmVyIiwic2hvd1BvcG92ZXIiLCJ0aXRsZSIsImJvZHlUZXh0IiwicG9zaXRpb25Db29yZCIsInRvZ2dsZUhlbHBzTW9kYWwiLCJfc2hvd0hlbHBzTW9kYWwiLCJ0b2dnbGVIZWxwcyIsIl9zaG93SGVscHMiLCJzYXZlQmlibGVUb0tleSIsImtleUdyb3VwIiwib2xkVmVyc2VUZXh0IiwiX2JpYmxlcyIsIl90YXJnZXRCaWJsZSIsInRhcmdldEJvb2siLCJ0YXJnZXRDaGFwdGVyIiwiY29udmVydFZlcnNlRGF0YVRvVVNGTSIsImN1cnJlbnRDaGFwdGVyRGF0YSIsImN1cnJlbnRWZXJzZURhdGEiLCJfQWxpZ25tZW50SGVscGVycyR1cGQiLCJBbGlnbm1lbnRIZWxwZXJzIiwidXBkYXRlQWxpZ25tZW50c1RvVGFyZ2V0VmVyc2UiLCJ0YXJnZXRWZXJzZU9iamVjdHMiLCJ2ZXJzZU9iamVjdHMiLCJ1cGRhdGVTZXR0aW5ncyIsInJlbW92ZVVzZm1NYXJrZXJzIiwidmVyc2VFZGl0cyIsInZhbGlkYXRlQWxsU2VsZWN0aW9uc0ZvclZlcnNlIiwiX2N1cnJlbnRDaGVjayRjb250ZXh0IiwiX2NoZWNrJGNvbnRleHRJZCIsImN1cnJlbnRDaGVja0lkIiwiY2hlY2tJZCIsIm5ld0JpYmxlcyIsIl90YXJnZXRCaWJsZSRtYW5pZmVzdCIsIl90YXJnZXRCaWJsZSRtYW5pZmVzdDIiLCJfaXRlcmF0b3IyIiwiX3N0ZXAyIiwiYmlibGUiLCJOVF9PUklHX0xBTkciLCJPVF9PUklHX0xBTkciLCJpbml0aWFsUGFuZVNldHRpbmdzIiwibGFuZ0tleSIsInBhbmUiLCJsYW5ndWFnZV9uYW1lIiwiZHVibGluX2NvcmUiLCJsYW5ndWFnZSIsIl9nZXRTY3JpcHR1cmVGcm9tUmVmZXJlbmNlIiwibGFuZyIsImdldFNjcmlwdHVyZUZyb21SZWZlcmVuY2UiLCJ0YXJnZXRfbGFuZ3VhZ2UiLCJwcm9qZWN0IiwiZXhwYW5kZWRTY3JpcHR1cmVQYW5lVGl0bGUiLCJzdHlsZVByb3BzIiwiX2NoZWNrZXJTdHlsZXMiLCJjcmVhdGVFbGVtZW50Iiwic3R5bGUiLCJjaGFuZ2VDdXJyZW50Q29udGV4dElkIiwiY29tcGxleFNjcmlwdEZvbnRzIiwiY3VycmVudFBhbmVTZXR0aW5ncyIsImVkaXRWZXJzZVJlZiIsImdldEF2YWlsYWJsZVNjcmlwdHVyZVBhbmVTZWxlY3Rpb25zIiwibWFrZVN1cmVCaWJsZXNMb2FkZWRGb3JUb29sIiwicHJvamVjdERldGFpbHNSZWR1Y2VyIiwib25FeHBhbmRlZFNjcmlwdHVyZVBhbmVTaG93Iiwib25MaW5rQ2xpY2siLCJvblNlZU1vcmVDbGljayIsInBocmFzZSIsInNlZU1vcmVMYWJlbCIsInNob3dTZWVNb3JlQnV0dG9uIiwiZGlhbG9nTW9kYWxWaXNpYmlsaXR5IiwiaGFuZGxlT3BlbkRpYWxvZyIsImhhbmRsZUNsb3NlRGlhbG9nIiwiaGFuZGxlU2tpcCIsImxvY2FsTm90aGluZ1RvU2VsZWN0Iiwic2F2ZVNlbGVjdGlvbiIsInRhZ3MiLCJtb2RhbEFydGljbGUiLCJleHBhbmRlZEhlbHBzQnV0dG9uSG92ZXJUZXh0IiwibW9kYWxUaXRsZSIsImlzU2hvd0hlbHBzRXhwYW5kZWQiLCJvcGVuRXhwYW5kZWRIZWxwc01vZGFsIiwic2lkZWJhclRvZ2dsZSIsImlzU2hvd0hlbHBzU2lkZWJhciIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsIm9iamVjdCIsImFycmF5IiwiZnVuYyIsImlzUmVxdWlyZWQiLCJzdHJpbmciLCJib29sIiwiX2RlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tcG9uZW50cy9DaGVja2VyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlxuLyoqXG4gKiBAZmlsZSBDaGVja2VyLmpzXG4gKlxuICogQHN5bm9wc2lzXG4gKiBUaGlzIGlzIHRoZSBtYWluIGNoZWNraW5nIGNvbXBvbmVudCB0aGF0IHByb3ZpZGVzIGFuIGludGVncmF0ZWQgaW50ZXJmYWNlIGZvciBCaWJsZSB0cmFuc2xhdGlvbiBjaGVja2luZy5cbiAqIEl0IHN1cHBvcnRzIGJvdGggVHJhbnNsYXRpb24gTm90ZXMgKFROKSBhbmQgVHJhbnNsYXRpb24gV29yZHMgKFRXKSBjaGVja2luZyB3b3JrZmxvd3MuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBUaGUgQ2hlY2tlciBjb21wb25lbnQgaXMgYSBjb21wcmVoZW5zaXZlIHRvb2wgZm9yIG1hbmFnaW5nIGFuZCBwcmVzZW50aW5nIEJpYmxlIGNoZWNraW5nIGRhdGEgYW5kIHRyYW5zbGF0aW9ucy5cbiAqIEl0IGhhbmRsZXM6XG4gKiAtIExvYWRpbmcgYW5kIGRpc3BsYXlpbmcgY2hlY2tpbmcgZGF0YSAodHJhbnNsYXRpb24gbm90ZXMgb3IgdHJhbnNsYXRpb24gd29yZHMpXG4gKiAtIE1hbmFnaW5nIHVzZXIgc2VsZWN0aW9ucyBhbmQgYW5ub3RhdGlvbnMgaW4gdmVyc2VzXG4gKiAtIFByb3ZpZGluZyBtdWx0aS1wYW5lIFNjcmlwdHVyZSB2aWV3aW5nIHdpdGggdmFyaW91cyBCaWJsZSByZXNvdXJjZXNcbiAqIC0gSGFuZGxpbmcgdmVyc2UgZWRpdGluZyBhbmQgdmFsaWRhdGlvblxuICogLSBNYW5hZ2luZyBjb21tZW50cywgYm9va21hcmtzLCBhbmQgdGFncyBmb3IgY2hlY2tzXG4gKiAtIE5hdmlnYXRpbmcgYmV0d2VlbiBjaGVja3MgKG5leHQvcHJldmlvdXMpXG4gKiAtIERpc3BsYXlpbmcgdHJhbnNsYXRpb24gaGVscHMgaW4gYW4gaW50ZWdyYXRlZCBzaWRlYmFyXG4gKiAtIFBlcnNpc3RpbmcgdXNlciBzZXR0aW5ncyBhbmQgY2hlY2tpbmcgcHJvZ3Jlc3NcbiAqXG4gKiBUaGUgY29tcG9uZW50IG1haW50YWlucyBjb21wbGV4IHN0YXRlIGluY2x1ZGluZzpcbiAqIC0gQ3VycmVudCBjaGVjayBkYXRhIGFuZCBjb250ZXh0XG4gKiAtIFVzZXIgc2VsZWN0aW9ucyBhbmQgdGVtcG9yYXJ5IGNoYW5nZXNcbiAqIC0gUGFuZSBzZXR0aW5ncyBmb3IgU2NyaXB0dXJlIGRpc3BsYXlcbiAqIC0gVG9vbC1zcGVjaWZpYyBzZXR0aW5nc1xuICogLSBVSSBzdGF0ZSAobW9kZXMsIG1vZGFscywgcG9wb3ZlcnMpXG4gKlxuICogQHJlcXVpcmVtZW50c1xuICogLSBSZWFjdCAxOC4zLjErXG4gKiAtIHdvcmQtYWxpZ25lci1saWIgZm9yIHZlcnNlIGFuZCBhbGlnbm1lbnQgaGVscGVyc1xuICogLSBkZWVwLWVxdWFsIGZvciBvYmplY3QgY29tcGFyaXNvblxuICogLSBsb2Rhc2ggZm9yIGRlZXAgY2xvbmluZ1xuICogLSBNYXRlcmlhbC1VSSBjb21wb25lbnRzIGZvciBVSSBlbGVtZW50c1xuICpcbiAqIEBkZXBlbmRlbmNpZXNcbiAqIC0gR3JvdXBNZW51Q29tcG9uZW50OiBOYXZpZ2F0aW9uIG1lbnUgZm9yIGNoZWNrc1xuICogLSBDaGVja0luZm9DYXJkOiBEaXNwbGF5cyBjaGVjayB0aXRsZSBhbmQgcGhyYXNlXG4gKiAtIFNjcmlwdHVyZVBhbmU6IE11bHRpLXBhbmUgU2NyaXB0dXJlIHZpZXdlclxuICogLSBUcmFuc2xhdGlvbkhlbHBzOiBTaWRlYmFyIGZvciB0cmFuc2xhdGlvbiBoZWxwIGFydGljbGVzXG4gKiAtIFZlcnNlQ2hlY2s6IE1haW4gY2hlY2tpbmcgaW50ZXJmYWNlIGZvciB2ZXJzZXNcbiAqIC0gUG9wb3ZlckNvbnRhaW5lcjogRGlzcGxheXMgY29udGV4dHVhbCBpbmZvcm1hdGlvblxuICovXG5pbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJ1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJ1xuaW1wb3J0IEdyb3VwTWVudUNvbXBvbmVudCBmcm9tICcuL0dyb3VwTWVudUNvbXBvbmVudCdcbmltcG9ydCB7XG4gIGdyb3VwRGF0YUhlbHBlcnMsXG4gIHNlbGVjdGlvbnNIZWxwZXJzLFxuICBVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzLFxuICB2ZXJzZUhlbHBlcnNcbn0gZnJvbSAnd29yZC1hbGlnbmVyLWxpYidcbmltcG9ydCBpc0VxdWFsIGZyb20gJ2RlZXAtZXF1YWwnXG5pbXBvcnQge1xuICBmaW5kQ2hlY2ssXG4gIGZpbmROZXh0Q2hlY2ssXG4gIGZpbmRQcmV2aW91c0NoZWNrLFxuICBnZXRBbGlnbmVkR0xUZXh0LFxuICBnZXRQaHJhc2VGcm9tVHcsXG4gIGdldFRpdGxlRnJvbUluZGV4LFxuICBwYXJzZVR3VG9JbmRleFxufSBmcm9tICcuLi9oZWxwZXJzL3RyYW5zbGF0aW9uSGVscHMvdHdBcnRpY2xlSGVscGVycydcbmltcG9ydCBDaGVja0luZm9DYXJkIGZyb20gJy4uL3RjX3VpX3Rvb2xraXQvQ2hlY2tJbmZvQ2FyZCdcbmltcG9ydCB7IHBhcnNlVG5Ub0luZGV4IH0gZnJvbSAnLi4vaGVscGVycy90cmFuc2xhdGlvbkhlbHBzL3RuQXJ0aWNsZUhlbHBlcnMnXG5pbXBvcnQgU2NyaXB0dXJlUGFuZSBmcm9tICcuLi90Y191aV90b29sa2l0L1NjcmlwdHVyZVBhbmUnXG5pbXBvcnQgUG9wb3ZlckNvbnRhaW5lciBmcm9tICcuLi9jb250YWluZXJzL1BvcG92ZXJDb250YWluZXInXG5pbXBvcnQgeyBOVF9PUklHX0xBTkcsIE9UX09SSUdfTEFORyB9IGZyb20gJy4uL2NvbW1vbi9Cb29rc09mVGhlQmlibGUnXG5pbXBvcnQgY29tcGxleFNjcmlwdEZvbnRzIGZyb20gJy4uL2NvbW1vbi9jb21wbGV4U2NyaXB0Rm9udHMnXG5pbXBvcnQgVHJhbnNsYXRpb25IZWxwcyBmcm9tICcuLi90Y191aV90b29sa2l0L1RyYW5zbGF0aW9uSGVscHMnXG5pbXBvcnQgKiBhcyB0SGVscHNIZWxwZXJzIGZyb20gJy4uL2hlbHBlcnMvdEhlbHBzSGVscGVycydcbmltcG9ydCBWZXJzZUNoZWNrIGZyb20gJy4uL3RjX3VpX3Rvb2xraXQvVmVyc2VDaGVjaydcbmltcG9ydCB7IGdldFNjcmlwdHVyZUZyb21SZWZlcmVuY2UgfSBmcm9tICcuLi9oZWxwZXJzL2NoZWNrSW5mb0NhcmRIZWxwZXJzJ1xuXG5jb25zdCBsb2NhbFN0eWxlcyA9IHtcbiAgY29udGFpbmVyRGl2OntcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgZmxleERpcmVjdGlvbjogJ3JvdycsXG4gICAgd2lkdGg6ICc5N3Z3JyxcbiAgICBoZWlnaHQ6ICc2NXZ3JyxcbiAgfSxcbiAgY2VudGVyRGl2OiB7XG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgIHdpZHRoOiAnODUlJyxcbiAgICBvdmVyZmxvd1g6ICdhdXRvJyxcbiAgICBtYXJnaW5MZWZ0OiAnMTBweCcsXG4gIH0sXG4gIHNjcmlwdHVyZVBhbmVEaXY6IHtcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgZmxleFNocmluazogJzAnLFxuICAgIGhlaWdodDogJzI1MHB4JyxcbiAgICBwYWRkaW5nQm90dG9tOiAnMjBweCcsXG4gIH0sXG59O1xuXG5leHBvcnQgY29uc3QgdHJhbnNsYXRpb25Xb3JkcyA9ICd0cmFuc2xhdGlvbldvcmRzJ1xuZXhwb3J0IGNvbnN0IHRyYW5zbGF0aW9uTm90ZXMgPSAndHJhbnNsYXRpb25Ob3RlcydcbmNvbnN0IG1heGltdW1TZWxlY3Rpb25zID0gMTBcblxuY29uc29sZS5sb2coJ0NoZWNrZXIuanMgLSBzdGFydHVwJylcbmNvbnN0IG5hbWUgPSAnQ2hlY2tlcidcblxuLyoqXG4gKiBAbmFtZXNwYWNlIENoZWNrZXJcbiAqIFRoZSBDaGVja2VyIGNvbXBvbmVudCBpcyByZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgYW5kIHByZXNlbnRpbmcgQmlibGUgY2hlY2tpbmcgZGF0YSBhbmQgdHJhbnNsYXRpb25zLlxuICogSXQgaGFuZGxlcyBzdGF0ZSB1cGRhdGVzLCBzZXR0aW5ncyBtYW5hZ2VtZW50LCBhbmQgZW5zdXJlcyB0aGUgbmVjZXNzYXJ5IGRhdGEgaXMgbG9hZGVkIGFuZCBkaXNwbGF5ZWQgdG8gdGhlIHVzZXIuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IHBhcmFtZXRlcnMgLSBBbiBvYmplY3Qgd2l0aCBpbml0aWFsaXphdGlvbiBwYXJhbWV0ZXJzIGZvciB0aGUgQ2hlY2tlciBjb21wb25lbnQuXG4gKiBAcGFyYW0ge29iamVjdH0gcGFyYW1ldGVycy5hbGlnbmVkR2xCaWJsZSAtIFRoZSBhbGlnbmVkIEdhdGV3YXkgTGFuZ3VhZ2UgQmlibGUgZGF0YSB1c2VkIGZvciB0cmFuc2xhdGlvbnMuXG4gKiBAcGFyYW0ge29iamVjdH0gcGFyYW1ldGVycy5iaWJsZXMgLSBCaWJsZSBkYXRhIGZvciB2YXJpb3VzIGxhbmd1YWdlcy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHBhcmFtZXRlcnMuY2hhbmdlZEN1cnJlbnRDaGVjayAtIGNhbGxiYWNrIHRvIG5vdGlmeSBvZiBjaGFuZ2VzIGluIGNvbnRleHQuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBwYXJhbWV0ZXJzLmNoYW5nZVRhcmdldFZlcnNlIC0gQSBmdW5jdGlvbiB0byB1cGRhdGUgdGhlIGN1cnJlbnQgdmVyc2UgYmVpbmcgY2hlY2tlZC5cbiAqIEBwYXJhbSB7b2JqZWN0fSBwYXJhbWV0ZXJzLmNoZWNraW5nRGF0YSAtIERhdGEgcmVsYXRlZCB0byBjaGVja3MgKGUuZy4sIHRyYW5zbGF0aW9uIG5vdGVzIG9yIHRyYW5zbGF0aW9uIHdvcmRzKS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXJhbWV0ZXJzLmNoZWNrVHlwZSAtIFRoZSB0eXBlIG9mIGNoZWNrIGJlaW5nIHBlcmZvcm1lZCAoZS5nLiwgdHJhbnNsYXRpb24gbm90ZXMsIHRyYW5zbGF0aW9uIHdvcmRzKS5cbiAqIEBwYXJhbSB7b2JqZWN0fSBwYXJhbWV0ZXJzLmNvbnRleHRJZCAtIE9iamVjdCBjb250YWluaW5nIG1ldGFkYXRhIGFib3V0IHRoZSBjdXJyZW50IGdyb3VwL3ZlcnNlIGJlaW5nIHdvcmtlZCBvbi5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHBhcmFtZXRlcnMuZ2V0TGV4aWNvbkRhdGEgLSBGdW5jdGlvbiB0byByZXRyaWV2ZSBsZXhpY29uIGRhdGEuXG4gKiBAcGFyYW0ge29iamVjdH0gcGFyYW1ldGVycy5nbFdvcmRzRGF0YSAtIERhdGEgcmVsYXRlZCB0byBHYXRld2F5IExhbmd1YWdlIHdvcmRzIGFuZCBhbGlnbm1lbnQgaW5mb3JtYXRpb24uXG4gKiBAcGFyYW0ge29iamVjdH0gcGFyYW1ldGVycy5pbml0aWFsU2V0dGluZ3MgLSBUaGUgaW5pdGlhbCBjb25maWd1cmF0aW9uIHZhbHVlcyBmb3IgdGhlIENoZWNrZXIgY29tcG9uZW50LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcGFyYW1ldGVycy5zYXZlQ2hlY2tpbmdEYXRhIC0gRnVuY3Rpb24gdG8gc2F2ZSB0aGUgbW9kaWZpZWQgY2hlY2tpbmcgZGF0YS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHBhcmFtZXRlcnMuc2F2ZVNldHRpbmdzIC0gRnVuY3Rpb24gdG8gcGVyc2lzdCB1c2VyJ3MgY29tcG9uZW50IHNldHRpbmdzLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcGFyYW1ldGVycy5zaG93RG9jdW1lbnQgLSBGdW5jdGlvbiB0byBkaXNwbGF5IGEgZG9jdW1lbnQgaW4gdGhlIGludGVyZmFjZS5cbiAqIEBwYXJhbSB7b2JqZWN0fSBwYXJhbWV0ZXJzLnN0eWxlcyAtIFN0eWxpbmcgaW5mb3JtYXRpb24gdG8gY3VzdG9taXplIHRoZSBjb21wb25lbnQncyBhcHBlYXJhbmNlLlxuICogQHBhcmFtIHtvYmplY3R9IHBhcmFtZXRlcnMudGFyZ2V0QmlibGUgLSBUaGUgdGFyZ2V0IEJpYmxlIGRhdGEgZm9yIHRoZSB3b3JraW5nIGxhbmd1YWdlLlxuICogQHBhcmFtIHtvYmplY3R9IHBhcmFtZXRlcnMudGFyZ2V0TGFuZ3VhZ2VEZXRhaWxzIC0gTWV0YWRhdGEgYWJvdXQgdGhlIHRhcmdldCBsYW5ndWFnZSwgaW5jbHVkaW5nIGJvb2sgYW5kIGxhbmd1YWdlLXNwZWNpZmljIGRldGFpbHMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBwYXJhbWV0ZXJzLnRyYW5zbGF0ZSAtIEEgZnVuY3Rpb24gdXNlZCBmb3Igc3RyaW5nIHRyYW5zbGF0aW9ucyBpbiB0aGUgVUkuXG4gKi9cbmNvbnN0IENoZWNrZXIgPSAoe1xuICBhbGlnbmVkR2xCaWJsZSxcbiAgYmlibGVzOiBiaWJsZXNfLFxuICBjaGFuZ2VkQ3VycmVudENoZWNrLFxuICBjaGFuZ2VUYXJnZXRWZXJzZSxcbiAgY2hlY2tpbmdEYXRhLFxuICBjaGVja1R5cGUsXG4gIGNvbnRleHRJZCxcbiAgZ2V0TGV4aWNvbkRhdGEsXG4gIGdsV29yZHNEYXRhLFxuICBpbml0aWFsU2V0dGluZ3MsXG4gIHNhdmVDaGVja2luZ0RhdGEsXG4gIHNhdmVTZXR0aW5ncyxcbiAgc2hvd0RvY3VtZW50LFxuICBzdHlsZXMsXG4gIHRhcmdldEJpYmxlOiB0YXJnZXRCaWJsZV8sXG4gIHRhcmdldExhbmd1YWdlRGV0YWlscyxcbiAgdHJhbnNsYXRlLFxufSkgPT4ge1xuICAvLyBNYWluIHNldHRpbmdzIHN0YXRlIC0gaW5jbHVkZXMgcGFuZSBjb25maWd1cmF0aW9uLCB0b29sIHNldHRpbmdzLCBhbmQgbWFuaWZlc3QgZGF0YVxuICBjb25zdCBbc2V0dGluZ3MsIF9zZXRTZXR0aW5nc10gPSB1c2VTdGF0ZSh7XG4gICAgcGFuZVNldHRpbmdzOiBbXSxcbiAgICBwYW5lS2V5U2V0dGluZ3M6IHt9LFxuICAgIHRvb2xzU2V0dGluZ3M6IHt9LFxuICAgIG1hbmlmZXN0OiB7fVxuICB9KVxuICBjb25zdCB7XG4gICAgcGFuZVNldHRpbmdzLFxuICAgIHBhbmVLZXlTZXR0aW5ncyxcbiAgICB0b29sc1NldHRpbmdzLFxuICAgIG1hbmlmZXN0XG4gIH0gPSBzZXR0aW5nc1xuXG4gIC8vIEJpYmxlIGRhdGEgb3JnYW5pemVkIGJ5IGxhbmd1YWdlIGFuZCBJRFxuICBjb25zdCBbYmlibGVzLCBzZXRCaWJsZXNdID0gdXNlU3RhdGUoeyB9KVxuXG4gIC8vIEN1cnJlbnQgdGFyZ2V0IEJpYmxlIGJlaW5nIGNoZWNrZWRcbiAgY29uc3QgW3RhcmdldEJpYmxlLCBzZXRUYXJnZXRCaWJsZV0gPSB1c2VTdGF0ZSh0YXJnZXRCaWJsZV8pXG5cbiAgLy8gVGVtcG9yYXJ5IGNoZWNraW5nIGRhdGEgZm9yIHVuc2F2ZWQgY2hhbmdlc1xuICBjb25zdCBbdGVtcENoZWNraW5nRGF0YSwgc2V0VGVtcENoZWNraW5nRGF0YV0gPSB1c2VTdGF0ZShudWxsKVxuXG4gIC8vIExvY2FsIGNoZWNraW5nIGRhdGEgZm9yIGN1cnJlbnQgc2Vzc2lvblxuICBjb25zdCBbbG9jYWxDaGVja2luZ0RhdGEsIHNldExvY2FsQ2hlY2tpbmdEYXRhXSA9IHVzZVN0YXRlKG51bGwpXG5cbiAgLy8gTWFpbiBjb21wb25lbnQgc3RhdGVcbiAgY29uc3QgW3N0YXRlLCBfc2V0U3RhdGVdID0gdXNlU3RhdGUoe1xuICAgIGFsaWduZWRHTFRleHQ6ICcnLCAvLyBHYXRld2F5IExhbmd1YWdlIHRleHQgYWxpZ25lZCB0byBvcmlnaW5hbFxuICAgIGFydGljbGU6IG51bGwsIC8vIEN1cnJlbnQgdHJhbnNsYXRpb24gaGVscCBhcnRpY2xlXG4gICAgY3VycmVudENoZWNrOiBudWxsLCAvLyBDdXJyZW50IGNoZWNrIGJlaW5nIHdvcmtlZCBvblxuICAgIGN1cnJlbnRDaGVja2luZ0RhdGE6IG51bGwsIC8vIEFsbCBjaGVja2luZyBkYXRhIGZvciBjdXJyZW50IGJvb2tcbiAgICBncm91cFRpdGxlOiAnJywgLy8gVGl0bGUgb2YgY3VycmVudCBjaGVjayBncm91cFxuICAgIGdyb3VwUGhyYXNlOiAnJywgLy8gUGhyYXNlIG9yIG9jY3VycmVuY2Ugbm90ZSBmb3IgY3VycmVudCBjaGVja1xuICAgIGdyb3Vwc0RhdGE6IG51bGwsIC8vIEZsYXR0ZW5lZCBncm91cCBkYXRhIGZvciBhbGwgY2hlY2tzXG4gICAgZ3JvdXBzSW5kZXg6IG51bGwsIC8vIEluZGV4IG9mIGFsbCBjaGVjayBncm91cHNcbiAgICBpc0NvbW1lbnRDaGFuZ2VkOiBmYWxzZSwgLy8gV2hldGhlciBjb21tZW50IGhhcyB1bnNhdmVkIGNoYW5nZXNcbiAgICBpc1ZlcnNlQ2hhbmdlZDogZmFsc2UsIC8vIFdoZXRoZXIgdmVyc2UgaGFzIHVuc2F2ZWQgY2hhbmdlc1xuICAgIG1vZGU6ICdkZWZhdWx0JywgLy8gQ3VycmVudCBVSSBtb2RlIChkZWZhdWx0LCBzZWxlY3QsIGVkaXQsIGNvbW1lbnQpXG4gICAgbmV3VmVyc2VUZXh0OiBudWxsLCAvLyBOZXcgdmVyc2UgdGV4dCBkdXJpbmcgZWRpdGluZ1xuICAgIHBvcG92ZXJQcm9wczoge1xuICAgICAgcG9wb3ZlclZpc2liaWxpdHk6IGZhbHNlXG4gICAgfSxcbiAgICBzaG93SGVscHNNb2RhbDogZmFsc2UsIC8vIFdoZXRoZXIgaGVscHMgbW9kYWwgaXMgc2hvd25cbiAgICBzaG93SGVscHM6IHRydWUsIC8vIFdoZXRoZXIgaGVscHMgc2lkZWJhciBpcyBzaG93blxuICAgIG5ld1RhZ3M6IG51bGwsIC8vIE5ldyB0YWdzIGJlaW5nIGFkZGVkXG4gICAgdmVyc2VUZXh0OiAnJywgLy8gQ3VycmVudCB2ZXJzZSB0ZXh0XG4gIH0pXG5cbiAgY29uc3Qge1xuICAgIGFsaWduZWRHTFRleHQsXG4gICAgYXJ0aWNsZSxcbiAgICBjdXJyZW50Q2hlY2ssXG4gICAgY3VycmVudENoZWNraW5nRGF0YSxcbiAgICBncm91cFRpdGxlLFxuICAgIGdyb3VwUGhyYXNlLFxuICAgIGdyb3Vwc0RhdGEsXG4gICAgZ3JvdXBzSW5kZXgsXG4gICAgaXNDb21tZW50Q2hhbmdlZCxcbiAgICBpc1ZlcnNlQ2hhbmdlZCxcbiAgICBtb2RlLFxuICAgIG5ld1ZlcnNlVGV4dCxcbiAgICBwb3BvdmVyUHJvcHMsXG4gICAgc2hvd0hlbHBzTW9kYWwsXG4gICAgc2hvd0hlbHBzLFxuICAgIG5ld1RhZ3MsXG4gICAgdmVyc2VUZXh0LFxuICB9ID0gc3RhdGVcblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgc3RhdGUgb2JqZWN0IHdpdGggbmV3IHZhbHVlc1xuICAgKiBAcGFyYW0ge29iamVjdH0gbmV3U3RhdGUgLSBPYmplY3QgY29udGFpbmluZyBzdGF0ZSBwcm9wZXJ0aWVzIHRvIHVwZGF0ZVxuICAgKi9cbiAgZnVuY3Rpb24gc2V0U3RhdGUobmV3U3RhdGUpIHtcbiAgICBfc2V0U3RhdGUocHJldlN0YXRlID0+ICh7IC4uLnByZXZTdGF0ZSwgLi4ubmV3U3RhdGUgfSkpXG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgY3VycmVudCBzYXZlZCB2YWx1ZSBmb3IgYSBjaGVjayBwcm9wZXJ0eVxuICAgKiBGYWxscyBiYWNrIHRvIGxvY2FsIGNoZWNraW5nIGRhdGEgaWYgYXZhaWxhYmxlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgLSBQcm9wZXJ0eSBuYW1lXG4gICAqIEByZXR1cm5zIHsqfSBDdXJyZW50IHZhbHVlXG4gICAqL1xuICBmdW5jdGlvbiBnZXRDdXJyZW50VmFsdWVGb3Ioa2V5KSB7XG4gICAgaWYgKGxvY2FsQ2hlY2tpbmdEYXRhPy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICByZXR1cm4gbG9jYWxDaGVja2luZ0RhdGFba2V5XVxuICAgIH1cbiAgICByZXR1cm4gY3VycmVudENoZWNrPy5ba2V5XVxuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHRlbXBvcmFyeSAodW5zYXZlZCkgdmFsdWUgZm9yIGEgY2hlY2sgcHJvcGVydHlcbiAgICogRmFsbHMgYmFjayB0aHJvdWdoIGxvY2FsIGNoZWNraW5nIGRhdGEgdG8gY3VycmVudCBjaGVja1xuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IC0gUHJvcGVydHkgbmFtZVxuICAgKiBAcmV0dXJucyB7Kn0gVGVtcG9yYXJ5IHZhbHVlXG4gICAqL1xuICBmdW5jdGlvbiBnZXRUZW1wVmFsdWVGb3Ioa2V5KSB7XG4gICAgaWYgKHRlbXBDaGVja2luZ0RhdGE/Lmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgIHJldHVybiB0ZW1wQ2hlY2tpbmdEYXRhW2tleV1cbiAgICB9XG4gICAgcmV0dXJuIGdldEN1cnJlbnRWYWx1ZUZvcihrZXkpXG4gIH1cblxuICBjb25zdCBjdXJyZW50U2VsZWN0aW9ucyA9IGdldEN1cnJlbnRWYWx1ZUZvcignc2VsZWN0aW9ucycpIHx8IFtdXG4gIGNvbnN0IHRlbXBTZWxlY3Rpb25zID0gZ2V0VGVtcFZhbHVlRm9yKCdzZWxlY3Rpb25zJykgfHwgW11cbiAgY29uc3QgdGVtcE5vdGhpbmdUb1NlbGVjdCA9IGdldFRlbXBWYWx1ZUZvcignbm90aGluZ1RvU2VsZWN0JylcbiAgY29uc3QgY3VycmVudE5vdGhpbmdUb1NlbGVjdCA9IGdldEN1cnJlbnRWYWx1ZUZvcignbm90aGluZ1RvU2VsZWN0JylcbiAgY29uc3QgZ3JvdXBzRGF0YUxvYWRlZCA9ICEhZ3JvdXBzRGF0YVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBVSSBtb2RlIGJhc2VkIG9uIHNlbGVjdGlvbnMgc3RhdGVcbiAgICogU3dpdGNoZXMgdG8gJ3NlbGVjdCcgbW9kZSBpZiBubyBzZWxlY3Rpb25zIGFuZCBub3RoaW5nIGlzIG1hcmtlZCBhcyB1bnNlbGVjdGFibGVcbiAgICogQHBhcmFtIHtBcnJheX0gbmV3U2VsZWN0aW9ucyAtIEN1cnJlbnQgc2VsZWN0aW9ucyBhcnJheVxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IG5vdGhpbmdUb1NlbGVjdCAtIFdoZXRoZXIgdmVyc2UgaXMgbWFya2VkIGFzIGhhdmluZyBub3RoaW5nIHRvIHNlbGVjdFxuICAgKi9cbiAgZnVuY3Rpb24gdXBkYXRlTW9kZUZvclNlbGVjdGlvbnMobmV3U2VsZWN0aW9ucywgbm90aGluZ1RvU2VsZWN0KSB7XG4gICAgY29uc3Qgbm9TZWxlY3Rpb25zID0gKCFuZXdTZWxlY3Rpb25zPy5sZW5ndGgpXG4gICAgY29uc3QgbmV3TW9kZSA9IG5vU2VsZWN0aW9ucyAmJiAhbm90aGluZ1RvU2VsZWN0ID8gJ3NlbGVjdCcgOiAnZGVmYXVsdCdcbiAgICBzZXRTdGF0ZSh7XG4gICAgICBtb2RlOiBuZXdNb2RlXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBFZmZlY3QgaG9vayB0byBpbml0aWFsaXplIGNoZWNraW5nIGRhdGEgd2hlbiBjaGVja2luZ0RhdGEgb3IgZ2xXb3Jkc0RhdGEgY2hhbmdlc1xuICAgKiBGbGF0dGVucyBncm91cCBkYXRhLCBjcmVhdGVzIGluZGV4LCBmaW5kcyBpbml0aWFsIGNoZWNrLCBhbmQgdmFsaWRhdGVzIGFsbCBjaGVja3NcbiAgICovXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGF2ZURhdGEgPSBjaGVja2luZ0RhdGEgJiYgT2JqZWN0LmtleXMoY2hlY2tpbmdEYXRhKS5sZW5ndGggJiYgZ2xXb3Jkc0RhdGEgJiYgT2JqZWN0LmtleXMoZ2xXb3Jkc0RhdGEpLmxlbmd0aFxuICAgIGNvbnN0IGdyb3Vwc0RhdGFJbml0aWFsaXplZCA9IGdyb3Vwc0RhdGEgJiYgT2JqZWN0LmtleXMoZ3JvdXBzRGF0YSkubGVuZ3RoXG4gICAgaWYgKGhhdmVEYXRhICYmICFncm91cHNEYXRhSW5pdGlhbGl6ZWQpIHtcbiAgICAgIGxldCBmbGF0dGVuZWRHcm91cERhdGEgPSBudWxsXG4gICAgICBsZXQgZ3JvdXBzSW5kZXggPSBudWxsXG4gICAgICBpZiAoY2hlY2tpbmdEYXRhKSB7XG4gICAgICAgIGZsYXR0ZW5lZEdyb3VwRGF0YSA9IGdyb3VwRGF0YUhlbHBlcnMuZmxhdHRlbkdyb3VwRGF0YShjaGVja2luZ0RhdGEpXG4gICAgICB9XG5cbiAgICAgIGlmIChnbFdvcmRzRGF0YSkge1xuICAgICAgICBpZiAoY2hlY2tUeXBlID09PSB0cmFuc2xhdGlvbk5vdGVzKSB7XG4gICAgICAgICAgZ3JvdXBzSW5kZXggPSBwYXJzZVRuVG9JbmRleChnbFdvcmRzRGF0YSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBncm91cHNJbmRleCA9IHBhcnNlVHdUb0luZGV4KGdsV29yZHNEYXRhKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNoZWNrID0gZmluZENoZWNrKGZsYXR0ZW5lZEdyb3VwRGF0YSwgY29udGV4dElkLCB0cnVlKVxuICAgICAgY29uc3QgbmV3U3RhdGUgPSB7XG4gICAgICAgIGdyb3Vwc0RhdGE6IGZsYXR0ZW5lZEdyb3VwRGF0YSxcbiAgICAgICAgZ3JvdXBzSW5kZXgsXG4gICAgICAgIGN1cnJlbnRDaGVja2luZ0RhdGE6IGNoZWNraW5nRGF0YSxcbiAgICAgICAgY3VycmVudENoZWNrOiBjaGVjayxcbiAgICAgICAgbW9kaWZpZWQ6IGZhbHNlLFxuICAgICAgICBpc0NvbW1lbnRDaGFuZ2VkOiBmYWxzZSxcbiAgICAgIH1cblxuICAgICAgLy8gdmFsaWRhdGUgYWxsIGNoZWNrc1xuICAgICAgc2VsZWN0aW9uc0hlbHBlcnMudmFsaWRhdGVTZWxlY3Rpb25zRm9yQWxsQ2hlY2tzKHRhcmdldEJpYmxlLCBmbGF0dGVuZWRHcm91cERhdGEsIChjaGVjaywgaW52YWxpZGF0ZWQpID0+IHtcbiAgICAgICAgaWYgKGNoZWNrKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYCR7bmFtZX0tc2F2ZUVkaXRWZXJzZSAtIGNoZWNrIHZhbGlkYXRpb24gY2hhbmdlZGAsIGNoZWNrKVxuICAgICAgICAgIF9zYXZlQ2hlY2tpbmdEYXRhKGNoZWNrLCB7IGludmFsaWRhdGVkIH0pXG4gICAgICAgIH1cbiAgICAgIH0pXG5cbiAgICAgIHNldFN0YXRlKG5ld1N0YXRlKVxuXG4gICAgICBpZiAoZmxhdHRlbmVkR3JvdXBEYXRhICYmIGNoZWNrPy5jb250ZXh0SWQpIHtcbiAgICAgICAgdXBkYXRlQ29udGV4dChjaGVjaywgZ3JvdXBzSW5kZXgpXG4gICAgICAgIHVwZGF0ZU1vZGVGb3JTZWxlY3Rpb25zKGNoZWNrPy5zZWxlY3Rpb25zLCBjaGVjaz8ubm90aGluZ1RvU2VsZWN0KVxuICAgICAgfVxuICAgIH1cbiAgfSwgW2NvbnRleHRJZCwgY2hlY2tpbmdEYXRhLCBnbFdvcmRzRGF0YV0pO1xuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBjb250ZXh0IGFuZCByZWxhdGVkIGRhdGEgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGNoZWNrIGFuZCBncm91cCBpbmRleC5cbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9IG5ld0NoZWNrIC0gVGhlIG5ldyBjaGVjayBvYmplY3QgY29udGFpbmluZyBjb250ZXh0IGluZm9ybWF0aW9uLlxuICAgKiBAcGFyYW0ge09iamVjdH0gW2dyb3Vwc0luZGV4Xz1ncm91cHNJbmRleF0gLSBBbiBvcHRpb25hbCBncm91cCBpbmRleCBvYmplY3QsIGRlZmF1bHRzIHRvIHRoZSBnbG9iYWwgdmFyaWFibGUgYGdyb3Vwc0luZGV4YC5cbiAgICogQHJldHVybiB7dm9pZH0gRG9lcyBub3QgcmV0dXJuIGEgdmFsdWUuIFVwZGF0ZXMgdGhlIHN0YXRlIG9mIHRoZSBhcHBsaWNhdGlvbiB3aXRoIG5ldyBjb250ZXh0IGRhdGEuXG4gICAqL1xuICBmdW5jdGlvbiB1cGRhdGVDb250ZXh0KG5ld0NoZWNrLCBncm91cHNJbmRleF8gPSBncm91cHNJbmRleCkge1xuICAgIGNvbnN0IGNvbnRleHRJZCA9IG5ld0NoZWNrPy5jb250ZXh0SWRcbiAgICBjb25zdCByZWZlcmVuY2UgPSBjb250ZXh0SWQ/LnJlZmVyZW5jZVxuICAgIGNvbnN0IHZlcnNlVGV4dCA9IHZlcnNlSGVscGVycy5nZXRWZXJzZVRleHRGcm9tQmlibGUodGFyZ2V0QmlibGUsIHJlZmVyZW5jZSlcbiAgICBjb25zdCBhbGlnbmVkR0xUZXh0ID0gZ2V0QWxpZ25lZEdMVGV4dChhbGlnbmVkR2xCaWJsZSwgY29udGV4dElkKTtcbiAgICBjb25zdCBncm91cFRpdGxlID0gZ2V0VGl0bGVGcm9tSW5kZXgoZ3JvdXBzSW5kZXhfLCBjb250ZXh0SWQ/Lmdyb3VwSWQpXG4gICAgY29uc3QgZ3JvdXBQaHJhc2UgPVxuICAgICAgY2hlY2tUeXBlID09PSB0cmFuc2xhdGlvbk5vdGVzXG4gICAgICAgID8gY29udGV4dElkPy5vY2N1cnJlbmNlTm90ZVxuICAgICAgICA6IGdldFBocmFzZUZyb21UdyhnbFdvcmRzRGF0YSwgY29udGV4dElkPy5ncm91cElkKVxuXG4gICAgbGV0IGdyb3VwRGF0YVxuICAgIGlmIChnbFdvcmRzRGF0YSkge1xuICAgICAgaWYgKGNoZWNrVHlwZSA9PT0gdHJhbnNsYXRpb25Ob3Rlcykge1xuICAgICAgICBncm91cERhdGEgPSB7XG4gICAgICAgICAgdHJhbnNsYXRlOiB7XG4gICAgICAgICAgICBhcnRpY2xlczogZ2xXb3Jkc0RhdGE/LnRyYW5zbGF0ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZ3JvdXBEYXRhID0ge1xuICAgICAgICAgIC4uLmdsV29yZHNEYXRhLFxuICAgICAgICAgIG1hbmlmZXN0OiB7fVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IF9hcnRpY2xlXG4gICAgY29uc3QgYXJ0aWNsZUlkID0gY29udGV4dElkPy5ncm91cElkXG4gICAgY29uc3QgZ3JvdXBzSWRzID0gT2JqZWN0LmtleXMoZ3JvdXBEYXRhKVxuICAgIGZvciAoY29uc3QgX2dyb3VwSWQgb2YgZ3JvdXBzSWRzKSB7XG4gICAgICBjb25zdCBncm91cCA9IGdyb3VwRGF0YVtfZ3JvdXBJZF1cbiAgICAgIGNvbnN0IGFydGljbGVzID0gZ3JvdXA/LmFydGljbGVzIHx8IHt9XG4gICAgICBfYXJ0aWNsZSA9IGFydGljbGVzPy5bYXJ0aWNsZUlkXSB8fCBudWxsXG4gICAgICBpZiAoX2FydGljbGUpIHtcbiAgICAgICAgY29uc3QgY3VycmVudEFydGljbGVNYXJrZG93biA9IHRIZWxwc0hlbHBlcnMuY29udmVydE1hcmtkb3duTGlua3MoX2FydGljbGUsIGdhdGV3YXlMYW5ndWFnZUlkKTtcbiAgICAgICAgX2FydGljbGUgPSBjdXJyZW50QXJ0aWNsZU1hcmtkb3duXG4gICAgICAgIC8vIGNvbnN0IHRIZWxwc01vZGFsTWFya2Rvd24gPSB0SGVscHNIZWxwZXJzLmNvbnZlcnRNYXJrZG93bkxpbmtzKG1vZGFsQXJ0aWNsZSwgZ2F0ZXdheUxhbmd1YWdlQ29kZSwgYXJ0aWNsZUNhdGVnb3J5KTtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBzZXRTdGF0ZSh7XG4gICAgICBhbGlnbmVkR0xUZXh0LFxuICAgICAgY3VycmVudENoZWNrOiBuZXdDaGVjayxcbiAgICAgIHZlcnNlVGV4dCxcbiAgICAgIGdyb3VwVGl0bGUsXG4gICAgICBncm91cFBocmFzZSxcbiAgICAgIGFydGljbGU6IF9hcnRpY2xlXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IGNvbW1lbnRUZXh0ID0gZ2V0Q3VycmVudFZhbHVlRm9yKCdjb21tZW50cycpIHx8ICcnXG4gIGNvbnN0IGJvb2tJZCA9IHRhcmdldExhbmd1YWdlRGV0YWlscz8uYm9vaz8uaWRcbiAgY29uc3QgYm9va05hbWUgPSB0YXJnZXRMYW5ndWFnZURldGFpbHM/LmJvb2s/Lm5hbWVcbiAgY29uc3QgYm9va0RldGFpbHMgPSB7XG4gICAgaWQ6IGJvb2tJZCxcbiAgICBuYW1lOiBib29rTmFtZVxuICB9O1xuICBjb25zdCBnYXRld2F5TGFuZ3VhZ2VJZCA9IHRhcmdldExhbmd1YWdlRGV0YWlscz8uZ2F0ZXdheUxhbmd1YWdlSWRcbiAgY29uc3QgdGFyZ2V0TGFuZ3VhZ2VGb250ID0gbWFuaWZlc3Q/LnByb2plY3RGb250IHx8ICcnXG4gIGNvbnN0IGN1cnJlbnRDb250ZXh0SWQgPSBjdXJyZW50Q2hlY2s/LmNvbnRleHRJZFxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRvb2wtc3BlY2lmaWMgc2V0dGluZ3MgYW5kIHBlcnNpc3RzIHRoZW1cbiAgICogQHBhcmFtIHtzdHJpbmd9IE5BTUVTUEFDRSAtIFRvb2wgbmFtZXNwYWNlIChlLmcuLCAnU2NyaXB0dXJlUGFuZScpXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmaWVsZE5hbWUgLSBTZXR0aW5nIGZpZWxkIG5hbWVcbiAgICogQHBhcmFtIHsqfSBmaWVsZFZhbHVlIC0gU2V0dGluZyB2YWx1ZVxuICAgKi9cbiAgY29uc3Qgc2V0VG9vbFNldHRpbmdzID0gKE5BTUVTUEFDRSwgZmllbGROYW1lLCBmaWVsZFZhbHVlKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tc2V0VG9vbFNldHRpbmdzICR7ZmllbGROYW1lfT0ke2ZpZWxkVmFsdWV9YClcbiAgICBpZiAodG9vbHNTZXR0aW5ncykge1xuICAgICAgLy8gRGVlcCBjbG9uaW5nIG9iamVjdCB0byBhdm9pZCBtb2RpZnlpbmcgb3JpZ2luYWwgb2JqZWN0XG4gICAgICBjb25zdCBfdG9vbHNTZXR0aW5ncyA9IHsgLi4udG9vbHNTZXR0aW5ncyB9O1xuICAgICAgbGV0IGNvbXBvbmVudFNldHRpbmdzID0gX3Rvb2xzU2V0dGluZ3M/LltOQU1FU1BBQ0VdXG4gICAgICBpZiAoIWNvbXBvbmVudFNldHRpbmdzKSB7XG4gICAgICAgIGNvbXBvbmVudFNldHRpbmdzID0geyB9XG4gICAgICAgIF90b29sc1NldHRpbmdzW05BTUVTUEFDRV0gPSBjb21wb25lbnRTZXR0aW5nc1xuICAgICAgfVxuICAgICAgY29tcG9uZW50U2V0dGluZ3NbZmllbGROYW1lXSA9IGZpZWxkVmFsdWVcbiAgICAgIHNldFNldHRpbmdzKHsgdG9vbHNTZXR0aW5nczogX3Rvb2xzU2V0dGluZ3MgfSwgdHJ1ZSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUGVyc2lzdHMgc2V0dGluZ3MgdG8gc3RvcmFnZSBhZnRlciByZW1vdmluZyBCaWJsZSBkYXRhIHRvIHJlZHVjZSBzaXplXG4gICAqIENyZWF0ZXMgc2hhbGxvdyBjb3BpZXMgdG8gYXZvaWQgbW9kaWZ5aW5nIG9yaWdpbmFsIG9iamVjdHNcbiAgICogQHBhcmFtIHtvYmplY3R9IF9zZXR0aW5ncyAtIFNldHRpbmdzIG9iamVjdCB0byBzYXZlXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBmdW5jdGlvbiBfc2F2ZVNldHRpbmdzKF9zZXR0aW5ncykge1xuICAgIGlmIChzYXZlU2V0dGluZ3MgJiYgX3NldHRpbmdzKSB7XG4gICAgICBjb25zdCBuZXdTZXR0aW5ncyA9IHsgLi4uX3NldHRpbmdzIH1cbiAgICAgIGRlbGV0ZSBuZXdTZXR0aW5ncy5tYW5pZmVzdFxuICAgICAgY29uc3QgX3BhbmVTZXR0aW5ncyA9IFsgLi4ubmV3U2V0dGluZ3MucGFuZVNldHRpbmdzIF1cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgX3BhbmVTZXR0aW5ncy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBfcGFuZVNldHRpbmcgPSB7Li4uX3BhbmVTZXR0aW5nc1tpXX0gLy8gc2hhbGxvdyBjb3B5XG4gICAgICAgIGlmIChfcGFuZVNldHRpbmc/LmJvb2spIHtcbiAgICAgICAgICBkZWxldGUgX3BhbmVTZXR0aW5nLmJvb2sgLy8gcmVtb3ZlIGFsbCB0aGUgYm9vayBkYXRhIGJlZm9yZSBzYXZpbmdcbiAgICAgICAgfVxuICAgICAgICBfcGFuZVNldHRpbmdzW2ldID0gX3BhbmVTZXR0aW5nXG4gICAgICB9XG4gICAgICBuZXdTZXR0aW5ncy5wYW5lU2V0dGluZ3MgPSBfcGFuZVNldHRpbmdzXG5cbiAgICAgIGNvbnN0IF9wYW5lS2V5U2V0dGluZ3MgPSB7IC4uLm5ld1NldHRpbmdzLnBhbmVLZXlTZXR0aW5ncyB9XG4gICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoX3BhbmVLZXlTZXR0aW5ncylcbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICAgICAgY29uc3QgX3BhbmVTZXR0aW5nID0gey4uLl9wYW5lS2V5U2V0dGluZ3Nba2V5XX0gLy8gc2hhbGxvdyBjb3B5XG4gICAgICAgIGlmIChfcGFuZVNldHRpbmc/LmJvb2spIHtcbiAgICAgICAgICBkZWxldGUgX3BhbmVTZXR0aW5nLmJvb2sgLy8gcmVtb3ZlIGFsbCB0aGUgYm9vayBkYXRhIGJlZm9yZSBzYXZpbmdcbiAgICAgICAgfVxuICAgICAgICBfcGFuZUtleVNldHRpbmdzW2tleV0gPSBfcGFuZVNldHRpbmdcbiAgICAgIH1cbiAgICAgIG5ld1NldHRpbmdzLnBhbmVLZXlTZXR0aW5ncyA9IF9wYW5lS2V5U2V0dGluZ3NcblxuICAgICAgc2F2ZVNldHRpbmdzKG5ld1NldHRpbmdzKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHNldHRpbmdzIHN0YXRlIGFuZCBvcHRpb25hbGx5IHBlcnNpc3RzIHRoZW1cbiAgICogQHBhcmFtIHtvYmplY3R9IG5ld1NldHRpbmdzIC0gTmV3IHNldHRpbmdzIHRvIG1lcmdlXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZG9TYXZlIC0gV2hldGhlciB0byBwZXJzaXN0IHNldHRpbmdzXG4gICAqL1xuICBmdW5jdGlvbiBzZXRTZXR0aW5ncyhuZXdTZXR0aW5ncywgZG9TYXZlID0gZmFsc2UpIHtcbiAgICBjb25zdCBfc2V0dGluZ3MgPSB7XG4gICAgICAuLi5zZXR0aW5ncyxcbiAgICAgIC4uLm5ld1NldHRpbmdzXG4gICAgfVxuXG4gICAgX3NldFNldHRpbmdzKF9zZXR0aW5ncylcbiAgICBkb1NhdmUgJiYgX3NhdmVTZXR0aW5ncyhfc2V0dGluZ3MpXG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyBTY3JpcHR1cmUgcGFuZSBzZXR0aW5ncyB3aXRoIG5ldyBwYW5lIGNvbmZpZ3VyYXRpb25zXG4gICAqIE1haW50YWlucyBhIGtleS1iYXNlZCBsb29rdXAgZm9yIHBhbmUgc2V0dGluZ3MgYnkgbGFuZ3VhZ2UvYmlibGUvb3duZXJcbiAgICogQHBhcmFtIHtzdHJpbmd9IE5BTUVTUEFDRSAtIFRvb2wgbmFtZXNwYWNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmaWVsZE5hbWUgLSBTZXR0aW5nIGZpZWxkIG5hbWVcbiAgICogQHBhcmFtIHtBcnJheX0gX3BhbmVTZXR0aW5ncyAtIEFycmF5IG9mIHBhbmUgc2V0dGluZyBvYmplY3RzXG4gICAqL1xuICBjb25zdCBzZXRUb29sU2V0dGluZ3NTY3JpcHR1cmUgPSAoTkFNRVNQQUNFLCBmaWVsZE5hbWUsIF9wYW5lU2V0dGluZ3MpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1zZXRUb29sU2V0dGluZ3NTY3JpcHR1cmUgJHtmaWVsZE5hbWV9YCwgX3BhbmVTZXR0aW5ncylcbiAgICBjb25zdCBfcGFuZUtleVNldHRpbmdzID0gey4uLnBhbmVLZXlTZXR0aW5nc31cblxuICAgIGZvciAoY29uc3QgcGFuZVNldHRpbmdzIG9mIF9wYW5lU2V0dGluZ3MpIHtcbiAgICAgIGNvbnN0IGxhbmd1YWdlSWQgPSBwYW5lU2V0dGluZ3M/Lmxhbmd1YWdlSWRcbiAgICAgIGNvbnN0IGtleSA9IGAke2xhbmd1YWdlSWR9LyR7cGFuZVNldHRpbmdzPy5iaWJsZUlkfS8ke3BhbmVTZXR0aW5ncz8ub3duZXJ9YFxuICAgICAgX3BhbmVLZXlTZXR0aW5nc1trZXldID0gcGFuZVNldHRpbmdzXG4gICAgfVxuXG4gICAgY29uc3QgX3NldHRpbmdzID0ge1xuICAgICAgcGFuZVNldHRpbmdzOiBfcGFuZVNldHRpbmdzLFxuICAgICAgcGFuZUtleVNldHRpbmdzOiBfcGFuZUtleVNldHRpbmdzLFxuICAgIH1cblxuICAgIHNldFNldHRpbmdzKF9zZXR0aW5ncywgdHJ1ZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgcHJvcGVydHkgdG8gdGhlIG1hbmlmZXN0IGFuZCBhcHAgc2V0dGluZ3NcbiAgICogVXNlZCBmb3IgcGVyc2lzdGluZyB1c2VyIHByZWZlcmVuY2VzIGxpa2UgZm9udHNcbiAgICogQHBhcmFtIHtzdHJpbmd9IGZpZWxkTmFtZSAtIFByb3BlcnR5IG5hbWVcbiAgICogQHBhcmFtIHsqfSBmaWVsZFZhbHVlIC0gUHJvcGVydHkgdmFsdWVcbiAgICovXG4gIGNvbnN0IGFkZE9iamVjdFByb3BlcnR5VG9NYW5pZmVzdCA9IChmaWVsZE5hbWUsIGZpZWxkVmFsdWUpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1hZGRPYmplY3RQcm9wZXJ0eVRvTWFuaWZlc3QgJHtmaWVsZE5hbWV9PSR7ZmllbGRWYWx1ZX1gKVxuICAgIGlmIChtYW5pZmVzdCkge1xuICAgICAgY29uc3QgX21hbmlmZXN0ID0ge1xuICAgICAgICAuLi5tYW5pZmVzdCxcbiAgICAgICAgW2ZpZWxkTmFtZV06IGZpZWxkVmFsdWVcbiAgICAgIH1cblxuICAgICAgLy8gYWxzbyBzYXZlIHRoaXMgaW4gYXBwU2V0dGluZ3NcbiAgICAgIGNvbnN0IGFwcFNldHRpbmdzID0gc2V0dGluZ3MuYXBwU2V0dGluZ3MgfHwge31cbiAgICAgIGNvbnN0IF9hcHBTZXR0aW5ncyA9IHtcbiAgICAgICAgLi4uYXBwU2V0dGluZ3MsXG4gICAgICAgIFtmaWVsZE5hbWVdOiBmaWVsZFZhbHVlXG4gICAgICB9XG5cbiAgICAgIHNldFNldHRpbmdzKHtcbiAgICAgICAgbWFuaWZlc3Q6IF9tYW5pZmVzdCxcbiAgICAgICAgYXBwU2V0dGluZ3M6IF9hcHBTZXR0aW5nc1xuICAgICAgfSwgdHJ1ZSlcbiAgICB9XG4gIH1cblxuICAvLyBFdmVudCBoYW5kbGVycyBmb3IgdmFyaW91cyB1c2VyIGFjdGlvbnNcblxuICAvKipcbiAgICogT3BlbnMgYW4gYWxlcnQgZGlhbG9nIChwbGFjZWhvbGRlciBpbXBsZW1lbnRhdGlvbilcbiAgICovXG4gIGNvbnN0IG9wZW5BbGVydERpYWxvZyA9ICgpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1vcGVuQWxlcnREaWFsb2dgKSAvLyBUT0RPIC0gZmxlc2ggb3V0XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHZlcnNlIGNvbnRlbnQgaGFzIGNoYW5nZWQgZnJvbSBvcmlnaW5hbFxuICAgKiBAcGFyYW0ge0V2ZW50fSBlIC0gSW5wdXQgZXZlbnRcbiAgICovXG4gIGNvbnN0IGNoZWNrSWZWZXJzZUNoYW5nZWQgPSAoZSkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGAke25hbWV9LWNoZWNrSWZWZXJzZUNoYW5nZWRgKVxuICAgIGNvbnN0IF9uZXdWZXJzZVRleHQgPSBlLnRhcmdldC52YWx1ZVxuICAgIGNvbnN0IF9pc1ZlcnNlQ2hhbmdlZCA9IF9uZXdWZXJzZVRleHQgIT09IHZlcnNlVGV4dFxuICAgIHNldFN0YXRlKHsgaXNWZXJzZUNoYW5nZWQ6IF9pc1ZlcnNlQ2hhbmdlZCB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIHZlcnNlIHRleHQgZWRpdGluZ1xuICAgKiBAcGFyYW0ge0V2ZW50fSBlIC0gSW5wdXQgZXZlbnQgd2l0aCBuZXcgdmVyc2UgdGV4dFxuICAgKi9cbiAgY29uc3QgaGFuZGxlRWRpdFZlcnNlID0gKGUpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1oYW5kbGVFZGl0VmVyc2VgKVxuICAgIGNvbnN0IF9uZXdWZXJzZVRleHQgPSBlLnRhcmdldC52YWx1ZVxuICAgIHNldFN0YXRlKHsgbmV3VmVyc2VUZXh0OiBfbmV3VmVyc2VUZXh0IH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbmNlbHMgdmVyc2UgZWRpdGluZyBhbmQgcmVzZXRzIHN0YXRlXG4gICAqL1xuICBjb25zdCBjYW5jZWxFZGl0VmVyc2UgPSAoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tY2FuY2VsRWRpdFZlcnNlYClcbiAgICBzZXRTdGF0ZSh7IG5ld1ZlcnNlVGV4dDogbnVsbCwgbmV3VGFnczogW10sIG1vZGU6IFwiZGVmYXVsdFwiIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFNhdmVzIGVkaXRlZCB2ZXJzZSB0ZXh0IGFuZCB1cGRhdGVzIGFsaWdubWVudHNcbiAgICogTWFya3MgY2hlY2sgYXMgaGF2aW5nIHZlcnNlIGVkaXRzXG4gICAqL1xuICBjb25zdCBzYXZlRWRpdFZlcnNlID0gKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGAke25hbWV9LXNhdmVFZGl0VmVyc2VgKVxuICAgIGNvbnN0IHsgY2hhcHRlciwgdmVyc2UgfSA9IGN1cnJlbnRDb250ZXh0SWQucmVmZXJlbmNlO1xuICAgIGNvbnN0IHZlcnNlUmVmID0gY3VycmVudENvbnRleHRJZC52ZXJzZVNwYW4gfHwgdmVyc2U7IC8vIGlmIGluIHZlcnNlIHNwYW4sIHVzZSBpdFxuICAgIGNvbnN0IGJlZm9yZSA9IHRhcmdldEJpYmxlW2NoYXB0ZXJdW3ZlcnNlUmVmXTtcblxuICAgIHNldFN0YXRlKHtcbiAgICAgIG5ld1ZlcnNlVGV4dDogbnVsbCxcbiAgICAgIG5ld1RhZ3M6IFtdLFxuICAgICAgbW9kZTogXCJkZWZhdWx0XCIsXG4gICAgICBpc1ZlcnNlQ2hhbmdlZDogZmFsc2UsXG4gICAgfSk7XG4gICAgZWRpdFRhcmdldFZlcnNlKGNoYXB0ZXIsIHZlcnNlUmVmLCBiZWZvcmUsIG5ld1ZlcnNlVGV4dCk7XG4gIH1cblxuICAvKipcbiAgICogTmF2aWdhdGVzIHRvIHRoZSBuZXh0IGNoZWNrIGluIHRoZSBzZXF1ZW5jZVxuICAgKi9cbiAgZnVuY3Rpb24gaGFuZGxlR29Ub05leHQoKSB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0taGFuZGxlR29Ub05leHRgKVxuICAgIGNvbnN0IG5leHRDaGVjayA9IGZpbmROZXh0Q2hlY2soZ3JvdXBzRGF0YSwgY3VycmVudENvbnRleHRJZCwgZmFsc2UpXG4gICAgY2hhbmdlQ3VycmVudENoZWNrXyhuZXh0Q2hlY2ssIHRydWUpXG4gIH1cblxuICAvKipcbiAgICogTmF2aWdhdGVzIHRvIHRoZSBwcmV2aW91cyBjaGVjayBpbiB0aGUgc2VxdWVuY2VcbiAgICovXG4gIGZ1bmN0aW9uIGhhbmRsZUdvVG9QcmV2aW91cygpIHtcbiAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1oYW5kbGVHb1RvUHJldmlvdXNgKVxuICAgIGNvbnN0IHByZXZpb3VzQ2hlY2sgPSBmaW5kUHJldmlvdXNDaGVjayhncm91cHNEYXRhLCBjdXJyZW50Q29udGV4dElkLCBmYWxzZSlcbiAgICBjaGFuZ2VDdXJyZW50Q2hlY2tfKHByZXZpb3VzQ2hlY2ssIHRydWUpXG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyBjaGVja2JveCBjaGFuZ2VzIGZvciB0YWdzXG4gICAqIEFkZHMgb3IgcmVtb3ZlcyB0YWdzIGZyb20gdGhlIGN1cnJlbnQgbGlzdFxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGFnIC0gVGFnIGlkZW50aWZpZXJcbiAgICovXG4gIGNvbnN0IGhhbmRsZVRhZ3NDaGVja2JveCA9ICh0YWcpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1oYW5kbGVUYWdzQ2hlY2tib3hgLCB0YWcpXG4gICAgY29uc3QgY3VycmVudFRhZ3MgPSBuZXdUYWdzIHx8IFtdXG4gICAgY29uc3QgdGFnSW5kZXggPSBjdXJyZW50VGFncy5pbmRleE9mKHRhZyk7XG4gICAgbGV0IF9uZXdUYWdzO1xuXG4gICAgaWYgKHRhZ0luZGV4ID4gLTEpIHtcbiAgICAgIGNvbnN0IGNvcHkgPSBjdXJyZW50VGFncy5zbGljZSgwKTtcbiAgICAgIGNvcHkuc3BsaWNlKHRhZ0luZGV4LCAxKTtcbiAgICAgIF9uZXdUYWdzID0gY29weTtcbiAgICB9IGVsc2Uge1xuICAgICAgX25ld1RhZ3MgPSBbLi4uY3VycmVudFRhZ3MsIHRhZ107XG4gICAgfVxuXG4gICAgc2V0U3RhdGUoeyBuZXdUYWdzOiBfbmV3VGFncyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgc2VsZWN0aW9ucyBhZ2FpbnN0IHZlcnNlIHRleHRcbiAgICogQHBhcmFtIHtzdHJpbmd9IHZlcnNlVGV4dF8gLSBWZXJzZSB0ZXh0IHRvIHZhbGlkYXRlIGFnYWluc3RcbiAgICogQHBhcmFtIHtBcnJheX0gc2VsZWN0aW9uc18gLSBTZWxlY3Rpb25zIHRvIHZhbGlkYXRlXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBXaGV0aGVyIHNlbGVjdGlvbnMgYXJlIHZhbGlkXG4gICAqL1xuICBjb25zdCB2YWxpZGF0ZVNlbGVjdGlvbnMgPSAodmVyc2VUZXh0Xywgc2VsZWN0aW9uc18pID0+IHtcbiAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS12YWxpZGF0ZVNlbGVjdGlvbnNgLCBzZWxlY3Rpb25zXylcbiAgICByZXR1cm4gc2VsZWN0aW9uc0hlbHBlcnMudmFsaWRhdGVWZXJzZVNlbGVjdGlvbnModmVyc2VUZXh0Xywgc2VsZWN0aW9uc18pXG4gIH1cblxuICAvKipcbiAgICogTWVtb2l6ZWQgY29tcHV0YXRpb24gb2YgdW5maWx0ZXJlZCB2ZXJzZSB0ZXh0IGluY2x1ZGluZyBVU0ZNIG1hcmtlcnNcbiAgICogVXNlZCBmb3IgZGlzcGxheWluZyBhbmQgZWRpdGluZyBjb21wbGV0ZSB2ZXJzZSBkYXRhXG4gICAqL1xuICBjb25zdCB1bmZpbHRlcmVkVmVyc2VUZXh0ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgbGV0IHVuZmlsdGVyZWRWZXJzZVRleHRfID0gJydcbiAgICBjb25zdCByZWZlcmVuY2UgPSBjdXJyZW50Q29udGV4dElkPy5yZWZlcmVuY2VcbiAgICBjb25zdCBjaGFwdGVyID0gcmVmZXJlbmNlPy5jaGFwdGVyXG4gICAgY29uc3QgdmVyc2UgPSByZWZlcmVuY2U/LnZlcnNlXG4gICAgaWYgKGNoYXB0ZXIgJiYgdmVyc2UpIHtcbiAgICAgIGNvbnN0IHZlcnNlRGF0YSA9IHRhcmdldEJpYmxlPy5bY2hhcHRlcl0/Llt2ZXJzZV1cbiAgICAgIGlmICh2ZXJzZURhdGEpIHtcbiAgICAgICAgdW5maWx0ZXJlZFZlcnNlVGV4dF8gPSB2ZXJzZURhdGFcbiAgICAgICAgaWYgKHR5cGVvZiB2ZXJzZURhdGEgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgdW5maWx0ZXJlZFZlcnNlVGV4dF8gPSBVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzLmdldFVzZm1Gb3JWZXJzZUNvbnRlbnQodmVyc2VEYXRhKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZmlsdGVyZWRWZXJzZVRleHRfXG4gIH0sIFt0YXJnZXRCaWJsZSwgY3VycmVudENvbnRleHRJZF0pXG5cbiAgLyoqXG4gICAqIFNldHMgYSB0ZW1wb3JhcnkgdmFsdWUgZm9yIGEgY2hlY2tpbmcgZGF0YSBwcm9wZXJ0eVxuICAgKiBVc2VkIGZvciB0cmFja2luZyB1bnNhdmVkIGNoYW5nZXNcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSAtIFByb3BlcnR5IG5hbWVcbiAgICogQHBhcmFtIHsqfSB2YWx1ZSAtIFByb3BlcnR5IHZhbHVlXG4gICAqL1xuICBjb25zdCBzZXRUZW1wQ2hlY2tpbmdJdGVtID0gKGtleSwgdmFsdWUpID0+IHtcbiAgICBjb25zdCBuZXdDaGVja2luZ0RhdGEgPSB0ZW1wQ2hlY2tpbmdEYXRhID8gey4uLnRlbXBDaGVja2luZ0RhdGF9IDoge31cbiAgICBuZXdDaGVja2luZ0RhdGFba2V5XSA9IHZhbHVlXG4gICAgc2V0VGVtcENoZWNraW5nRGF0YShuZXdDaGVja2luZ0RhdGEpXG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyBzZWxlY3Rpb25zIGluIHRlbXBvcmFyeSBzdGF0ZSB3aXRob3V0IHNhdmluZ1xuICAgKiBAcGFyYW0ge0FycmF5fSBzZWxlY3Rpb25zIC0gTmV3IHNlbGVjdGlvbnMgYXJyYXlcbiAgICovXG4gIGNvbnN0IGNoYW5nZVNlbGVjdGlvbnNJbkxvY2FsU3RhdGUgPSAoc2VsZWN0aW9ucykgPT4ge1xuICAgIGNvbnNvbGUubG9nKGAke25hbWV9LWNoYW5nZVNlbGVjdGlvbnNJbkxvY2FsU3RhdGVgLCBzZWxlY3Rpb25zKVxuICAgIHNldFRlbXBDaGVja2luZ0l0ZW0oJ3NlbGVjdGlvbnMnLCBzZWxlY3Rpb25zKVxuICB9XG5cbiAgLyoqXG4gICAqIFRvZ2dsZXMgdGhlIFwibm90aGluZyB0byBzZWxlY3RcIiBmbGFnIGZvciBjdXJyZW50IGNoZWNrXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gc2VsZWN0IC0gTmV3IHN0YXRlIHZhbHVlXG4gICAqL1xuICBjb25zdCB0b2dnbGVOb3RoaW5nVG9TZWxlY3QgPSAoc2VsZWN0KSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tdG9nZ2xlTm90aGluZ1RvU2VsZWN0YCwgc2VsZWN0KVxuICAgIHNldFRlbXBDaGVja2luZ0l0ZW0oJ25vdGhpbmdUb1NlbGVjdCcsIHNlbGVjdClcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGFuZ2VzIHRoZSBjdXJyZW50IGNoZWNrIGJlaW5nIHdvcmtlZCBvblxuICAgKiBWYWxpZGF0ZXMgZm9yIHVuc2F2ZWQgY2hhbmdlcyBiZWZvcmUgc3dpdGNoaW5nXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBuZXdDb250ZXh0IC0gTmV3IGNoZWNrIGNvbnRleHRcbiAgICogQHBhcmFtIHtib29sZWFufSBub0NoZWNrIC0gU2tpcCB2YWxpZGF0aW9uIGlmIHRydWVcbiAgICovXG4gIGNvbnN0IGNoYW5nZUN1cnJlbnRDaGVja18gPSAobmV3Q29udGV4dCwgbm9DaGVjayA9IGZhbHNlKSA9PiB7XG4gICAgY29uc3QgbmV3Q29udGV4dElkID0gbmV3Q29udGV4dD8uY29udGV4dElkXG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tY2hhbmdlQ3VycmVudENvbnRleHRJZGAsIG5ld0NvbnRleHRJZClcblxuICAgIGNvbnN0IHNlbGVjdGlvbnNVbmNoYW5nZWQgPSBpc0VxdWFsKGN1cnJlbnRTZWxlY3Rpb25zLCB0ZW1wU2VsZWN0aW9ucylcbiAgICBpZiAobm9DaGVjayB8fCBzZWxlY3Rpb25zVW5jaGFuZ2VkKSB7XG4gICAgICBpZiAobmV3Q29udGV4dElkKSB7XG4gICAgICAgIGxldCBjaGVjayA9IGZpbmRDaGVjayhncm91cHNEYXRhLCBuZXdDb250ZXh0SWQsIGZhbHNlKVxuICAgICAgICB1cGRhdGVDb250ZXh0KG5ld0NvbnRleHQpXG4gICAgICAgIGlmIChjaGVjaykge1xuICAgICAgICAgIHNldExvY2FsQ2hlY2tpbmdEYXRhKG51bGwpXG4gICAgICAgICAgc2V0VGVtcENoZWNraW5nRGF0YShudWxsKVxuICAgICAgICAgIHVwZGF0ZU1vZGVGb3JTZWxlY3Rpb25zKGNoZWNrLnNlbGVjdGlvbnMsIGNoZWNrLm5vdGhpbmdUb1NlbGVjdClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmxvZygnQ2hlY2tlci5jaGFuZ2VDdXJyZW50Q29udGV4dElkIC0gdW5zYXZlZCBjaGFuZ2VzJylcbiAgICB9XG4gICAgY2hhbmdlZEN1cnJlbnRDaGVjayAmJiBjaGFuZ2VkQ3VycmVudENoZWNrKG5ld0NvbnRleHQpXG4gIH1cblxuICBjb25zdCBkaXJlY3Rpb24gPSAnbHRyJ1xuICBjb25zdCBib29rbWFya0VuYWJsZWQgPSBnZXRDdXJyZW50VmFsdWVGb3IoJ3JlbWluZGVycycpXG4gIGNvbnN0IGlzVmVyc2VFZGl0ZWQgPSAhIWdldEN1cnJlbnRWYWx1ZUZvcigndmVyc2VFZGl0cycpXG4gIGNvbnN0IGlzVmVyc2VJbnZhbGlkYXRlZCA9ICEhZ2V0Q3VycmVudFZhbHVlRm9yKCdpbnZhbGlkYXRlZCcpXG5cbiAgLyoqXG4gICAqIENoYW5nZXMgdGhlIGN1cnJlbnQgY2hlY2sgYmVpbmcgd29ya2VkIG9uXG4gICAqIFZhbGlkYXRlcyBmb3IgdW5zYXZlZCBjaGFuZ2VzIGJlZm9yZSBzd2l0Y2hpbmdcbiAgICogQHBhcmFtIHtvYmplY3R9IG5ld0NvbnRleHQgLSBOZXcgY2hlY2sgY29udGV4dFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IG5vQ2hlY2sgLSBTa2lwIHZhbGlkYXRpb24gaWYgdHJ1ZVxuICAgKi9cbiAgY29uc3QgX3NhdmVTZWxlY3Rpb24gPSAoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tX3NhdmVTZWxlY3Rpb24gcGVyc2lzdCB0byBmaWxlYClcbiAgICBjb25zdCB7IGNoZWNrSW5Hcm91cHNEYXRhLCBfY3VycmVudENoZWNrLCBuZXdTdGF0ZSwgX25ld0NoZWNraW5nRGF0YSB9ID0gY2xvbmVEYXRhRm9yU2F2aW5nKClcblxuICAgIGlmIChfY3VycmVudENoZWNrICYmIG5ld1N0YXRlKSB7XG4gICAgICBpZiAodGVtcE5vdGhpbmdUb1NlbGVjdCkge1xuICAgICAgICBfbmV3Q2hlY2tpbmdEYXRhLm5vdGhpbmdUb1NlbGVjdCA9IHRlbXBOb3RoaW5nVG9TZWxlY3RcbiAgICAgICAgX25ld0NoZWNraW5nRGF0YS5zZWxlY3Rpb25zID0gZmFsc2VcbiAgICAgICAgX25ld0NoZWNraW5nRGF0YS5pbnZhbGlkYXRlZCA9IGZhbHNlXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBfbmV3Q2hlY2tpbmdEYXRhLm5vdGhpbmdUb1NlbGVjdCA9IGZhbHNlXG4gICAgICAgIF9uZXdDaGVja2luZ0RhdGEuc2VsZWN0aW9ucyA9IHRlbXBTZWxlY3Rpb25zXG4gICAgICAgIF9uZXdDaGVja2luZ0RhdGEuaW52YWxpZGF0ZWQgPSBmYWxzZVxuICAgICAgfVxuXG4gICAgICBzZXRMb2NhbENoZWNraW5nRGF0YShfbmV3Q2hlY2tpbmdEYXRhKVxuICAgICAgZGVsZXRlVGVtcENoZWNraW5nRGF0YSgnbm90aGluZ1RvU2VsZWN0JylcbiAgICAgIGRlbGV0ZVRlbXBDaGVja2luZ0RhdGEoJ3NlbGVjdGlvbnMnKVxuICAgICAgZGVsZXRlVGVtcENoZWNraW5nRGF0YSgnaW52YWxpZGF0ZWQnKVxuXG4gICAgICB1cGRhdGVWYWx1ZXNJbkNoZWNrRGF0YShfY3VycmVudENoZWNrLCBjaGVja0luR3JvdXBzRGF0YSwgX25ld0NoZWNraW5nRGF0YSlcblxuICAgICAgc2V0U3RhdGUobmV3U3RhdGUpO1xuICAgICAgc2F2ZUNoZWNraW5nRGF0YSAmJiBzYXZlQ2hlY2tpbmdEYXRhKG5ld1N0YXRlKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9uZXMgY3VycmVudCBkYXRhIHN0cnVjdHVyZXMgZm9yIHNhdmluZyBtb2RpZmljYXRpb25zXG4gICAqIENyZWF0ZXMgZGVlcCBjb3BpZXMgdG8gYXZvaWQgbXV0YXRpbmcgb3JpZ2luYWwgc3RhdGVcbiAgICogQHJldHVybnMge29iamVjdH0gT2JqZWN0IGNvbnRhaW5pbmcgY2xvbmVkIGRhdGEgc3RydWN0dXJlc1xuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZnVuY3Rpb24gY2xvbmVEYXRhRm9yU2F2aW5nKCkge1xuICAgIGNvbnN0IF9ncm91cHNEYXRhID0gXy5jbG9uZURlZXAoZ3JvdXBzRGF0YSlcbiAgICBjb25zdCBjaGVja0luR3JvdXBzRGF0YSA9IGZpbmRDaGVjayhfZ3JvdXBzRGF0YSwgY3VycmVudENvbnRleHRJZClcbiAgICBsZXQgX2N1cnJlbnRDaGVja1xuICAgIGxldCBuZXdTdGF0ZVxuICAgIGxldCBfbmV3Q2hlY2tpbmdEYXRhXG4gICAgaWYgKGNoZWNrSW5Hcm91cHNEYXRhKSB7XG4gICAgICAvLyBzYXZlIHRoZSBzZWxlY3Rpb24gY2hhbmdlc1xuICAgICAgY29uc3QgY2F0ZWdvcnkgPSBjaGVja0luR3JvdXBzRGF0YS5jYXRlZ29yeVxuICAgICAgY29uc3QgbmV3Q2hlY2tEYXRhID0gXy5jbG9uZURlZXAoY3VycmVudENoZWNraW5nRGF0YSlcbiAgICAgIF9jdXJyZW50Q2hlY2sgPSBmaW5kQ2hlY2sobmV3Q2hlY2tEYXRhW2NhdGVnb3J5XSwgY3VycmVudENvbnRleHRJZCwgZmFsc2UpXG4gICAgICBuZXdTdGF0ZSA9IHtcbiAgICAgICAgY3VycmVudENoZWNraW5nRGF0YTogbmV3Q2hlY2tEYXRhLFxuICAgICAgICBjdXJyZW50Q2hlY2s6IF9jdXJyZW50Q2hlY2ssXG4gICAgICAgIGdyb3Vwc0RhdGE6IF9ncm91cHNEYXRhLFxuICAgICAgICBtb2RlOiAnZGVmYXVsdCcsXG4gICAgICAgIG1vZGlmaWVkOiB0cnVlXG4gICAgICB9XG4gICAgICBfbmV3Q2hlY2tpbmdEYXRhID0gbG9jYWxDaGVja2luZ0RhdGEgPyB7Li4ubG9jYWxDaGVja2luZ0RhdGF9IDoge31cbiAgICB9XG4gICAgcmV0dXJuIHsgY2hlY2tJbkdyb3Vwc0RhdGEsIF9jdXJyZW50Q2hlY2ssIG5ld1N0YXRlLCBfbmV3Q2hlY2tpbmdEYXRhIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIG11bHRpcGxlIHByb3BlcnRpZXMgaW4gY2hlY2sgZGF0YSBvYmplY3RzXG4gICAqIE1vZGlmaWVzIGJvdGggdGhlIGN1cnJlbnQgY2hlY2sgYW5kIGdyb3VwcyBkYXRhXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBfY3VycmVudENoZWNrIC0gQ3VycmVudCBjaGVjayBvYmplY3RcbiAgICogQHBhcmFtIHtvYmplY3R9IGNoZWNrSW5Hcm91cHNEYXRhIC0gQ2hlY2sgaW4gZ3JvdXBzIGRhdGEgc3RydWN0dXJlXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBfbmV3Q2hlY2tpbmdEYXRhIC0gTmV3IGRhdGEgdG8gYXBwbHlcbiAgICovXG4gIGZ1bmN0aW9uIHVwZGF0ZVZhbHVlc0luQ2hlY2tEYXRhKF9jdXJyZW50Q2hlY2ssIGNoZWNrSW5Hcm91cHNEYXRhLCBfbmV3Q2hlY2tpbmdEYXRhKSB7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoX25ld0NoZWNraW5nRGF0YSkpIHtcbiAgICAgIGNvbnN0IG5ld0NoZWNraW5nVmFsdWUgPSBfbmV3Q2hlY2tpbmdEYXRhW2tleV1cbiAgICAgIF9jdXJyZW50Q2hlY2tba2V5XSA9IG5ld0NoZWNraW5nVmFsdWVcbiAgICAgIGNoZWNrSW5Hcm91cHNEYXRhW2tleV0gPSBuZXdDaGVja2luZ1ZhbHVlXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFBlcnNpc3RzIG11bHRpcGxlIGNoZWNrIHByb3BlcnR5IGNoYW5nZXMgdG8gZmlsZVxuICAgKiBDbG9uZXMgZGF0YSwgYXBwbGllcyBjaGFuZ2VzLCB1cGRhdGVzIHN0YXRlLCBhbmQgc2F2ZXNcbiAgICogQHBhcmFtIHtvYmplY3R9IG5ld0RhdGEgLSBPYmplY3Qgd2l0aCBwcm9wZXJ0eSBuYW1lcyBhbmQgdmFsdWVzIHRvIHVwZGF0ZVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgY29uc3QgX3NhdmVEYXRhID0gKG5ld0RhdGEpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1fc2F2ZURhdGEgcGVyc2lzdCB0byBmaWxlYClcbiAgICBjb25zdCB7IGNoZWNrSW5Hcm91cHNEYXRhLCBfY3VycmVudENoZWNrLCBuZXdTdGF0ZSwgX25ld0NoZWNraW5nRGF0YSB9ID0gY2xvbmVEYXRhRm9yU2F2aW5nKClcblxuICAgIGlmIChfY3VycmVudENoZWNrICYmIG5ld1N0YXRlKSB7XG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhuZXdEYXRhKSkge1xuICAgICAgICBfbmV3Q2hlY2tpbmdEYXRhW2tleV0gPSBuZXdEYXRhW2tleV1cbiAgICAgICAgZGVsZXRlVGVtcENoZWNraW5nRGF0YShrZXkpXG4gICAgICB9XG4gICAgICBzZXRMb2NhbENoZWNraW5nRGF0YShfbmV3Q2hlY2tpbmdEYXRhKVxuXG4gICAgICB1cGRhdGVWYWx1ZXNJbkNoZWNrRGF0YShfY3VycmVudENoZWNrLCBjaGVja0luR3JvdXBzRGF0YSwgX25ld0NoZWNraW5nRGF0YSlcblxuICAgICAgc2V0U3RhdGUobmV3U3RhdGUpO1xuICAgICAgc2F2ZUNoZWNraW5nRGF0YSAmJiBzYXZlQ2hlY2tpbmdEYXRhKG5ld1N0YXRlKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTYXZlcyBjaGFuZ2VzIHRvIGEgc3BlY2lmaWMgY2hlY2sgKG1heSBub3QgYmUgY3VycmVudCBjaGVjaylcbiAgICogT25seSBzYXZlcyBpZiBkYXRhIGFjdHVhbGx5IGNoYW5nZWRcbiAgICogQHBhcmFtIHtvYmplY3R9IGNoZWNrIC0gQ2hlY2sgb2JqZWN0IHRvIHVwZGF0ZVxuICAgKiBAcGFyYW0ge29iamVjdH0gbmV3RGF0YSAtIE5ldyBkYXRhIHRvIGFwcGx5XG4gICAqIEByZXR1cm5zIHtib29sZWFufSBXaGV0aGVyIGRhdGEgd2FzIGNoYW5nZWRcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGNvbnN0IF9zYXZlQ2hlY2tpbmdEYXRhID0gKGNoZWNrLCBuZXdEYXRhKSA9PiB7XG4gICAgbGV0IGNoYW5nZWREYXRhID0gZmFsc2VcbiAgICBpZiAoY2hlY2spIHtcbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKG5ld0RhdGEpKSB7XG4gICAgICAgIGlmIChjaGVja1trZXldICE9PSBuZXdEYXRhW2tleV0pIHtcbiAgICAgICAgICBjaGVja1trZXldID0gbmV3RGF0YVtrZXldXG4gICAgICAgICAgY2hhbmdlZERhdGEgPSB0cnVlXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGNoYW5nZWREYXRhKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGAke25hbWV9LV9zYXZlQ2hlY2tpbmdEYXRhIHBlcnNpc3QgY2hhbmdlcyB0byBmaWxlYCwgY2hlY2spXG4gICAgICAgIGNvbnN0IG5ld0NoZWNraW5nRGF0YSA9IHtcbiAgICAgICAgICBjdXJyZW50Q2hlY2s6IGNoZWNrLFxuICAgICAgICB9XG4gICAgICAgIHNhdmVDaGVja2luZ0RhdGEgJiYgc2F2ZUNoZWNraW5nRGF0YShuZXdDaGVja2luZ0RhdGEpXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjaGFuZ2VkRGF0YVxuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgYSBwcm9wZXJ0eSBmcm9tIHRlbXBvcmFyeSBjaGVja2luZyBkYXRhXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgLSBQcm9wZXJ0eSBuYW1lIHRvIHJlbW92ZVxuICAgKi9cbiAgZnVuY3Rpb24gZGVsZXRlVGVtcENoZWNraW5nRGF0YShrZXkpIHtcbiAgICBpZiAodGVtcENoZWNraW5nRGF0YT8uaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgY29uc3QgX3RlbXBDaGVja2luZ0RhdGEgPSB7Li4udGVtcENoZWNraW5nRGF0YX1cbiAgICAgIGRlbGV0ZSBfdGVtcENoZWNraW5nRGF0YVtrZXldXG4gICAgICBzZXRUZW1wQ2hlY2tpbmdEYXRhKF90ZW1wQ2hlY2tpbmdEYXRhKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDYW5jZWxzIHNlbGVjdGlvbiBtb2RlIHdpdGhvdXQgc2F2aW5nIGNoYW5nZXNcbiAgICovXG4gIGNvbnN0IGNhbmNlbFNlbGVjdGlvbiA9ICgpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1jYW5jZWxTZWxlY3Rpb25gKVxuICAgIGRlbGV0ZVRlbXBDaGVja2luZ0RhdGEoJ3NlbGVjdGlvbnMnKVxuICAgIHNldFN0YXRlKHtcbiAgICAgIG1vZGU6ICdkZWZhdWx0J1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFycyBhbGwgY3VycmVudCBzZWxlY3Rpb25zXG4gICAqL1xuICBjb25zdCBjbGVhclNlbGVjdGlvbiA9ICgpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1jbGVhclNlbGVjdGlvbmApXG4gICAgc2V0VGVtcENoZWNraW5nSXRlbSgnc2VsZWN0aW9ucycsIFtdKVxuICB9XG5cbiAgLyoqXG4gICAqIFRvZ2dsZXMgYm9va21hcmsvcmVtaW5kZXIgZmxhZyBmb3IgY3VycmVudCBjaGVja1xuICAgKi9cbiAgY29uc3QgdG9nZ2xlQm9va21hcmsgPSAoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tdG9nZ2xlQm9va21hcmtgKVxuICAgIF9zYXZlRGF0YSh7XG4gICAgICByZW1pbmRlcnM6ICFnZXRUZW1wVmFsdWVGb3IoJ3JlbWluZGVycycpXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGFuZ2VzIHRoZSBVSSBtb2RlIChkZWZhdWx0LCBzZWxlY3QsIGVkaXQsIGNvbW1lbnQpXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtb2RlIC0gTmV3IG1vZGUgaWRlbnRpZmllclxuICAgKi9cbiAgY29uc3QgY2hhbmdlTW9kZSA9IChtb2RlKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tY2hhbmdlTW9kZWAsIG1vZGUpXG4gICAgc2V0U3RhdGUoeyBtb2RlIH0pXG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGNvbW1lbnQgdGV4dCBoYXMgY2hhbmdlZCBmcm9tIHNhdmVkIHZhbHVlXG4gICAqIEBwYXJhbSB7RXZlbnR9IGUgLSBJbnB1dCBldmVudFxuICAgKi9cbiAgZnVuY3Rpb24gY2hlY2tJZkNvbW1lbnRDaGFuZ2VkKGUpIHtcbiAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1jaGVja0lmQ29tbWVudENoYW5nZWRgKVxuICAgIGNvbnN0IG5ld2NvbW1lbnQgPSBlLnRhcmdldC52YWx1ZSB8fCAnJztcbiAgICBjb25zdCBvbGRjb21tZW50ID0gY29tbWVudFRleHQgfHwgJyc7XG4gICAgY29uc3QgaXNDb21tZW50Q2hhbmdlZCA9IG5ld2NvbW1lbnQgIT09IG9sZGNvbW1lbnRcblxuICAgIHNldFN0YXRlKHtcbiAgICAgIGlzQ29tbWVudENoYW5nZWRcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYW5jZWxzIGNvbW1lbnQgZWRpdGluZyB3aXRob3V0IHNhdmluZ1xuICAgKi9cbiAgY29uc3QgY2FuY2VsQ29tbWVudCA9ICgpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1jYW5jZWxDb21tZW50YClcbiAgICBkZWxldGVUZW1wQ2hlY2tpbmdEYXRhKCdjb21tZW50cycpXG4gICAgc2V0U3RhdGUoe1xuICAgICAgbW9kZTogJ2RlZmF1bHQnLFxuICAgICAgaXNDb21tZW50Q2hhbmdlZDogZmFsc2UsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU2F2ZXMgY29tbWVudCBjaGFuZ2VzIHRvIHBlcnNpc3RlbnQgc3RvcmFnZVxuICAgKi9cbiAgY29uc3Qgc2F2ZUNvbW1lbnQgPSAoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tc2F2ZUNvbW1lbnRgKVxuICAgIGNvbnN0IG5ld0NvbW1lbnQgPSBnZXRUZW1wVmFsdWVGb3IoJ2NvbW1lbnRzJylcbiAgICBfc2F2ZURhdGEoeyBjb21tZW50czogbmV3Q29tbWVudCB9KVxuICAgIHNldFN0YXRlKHtcbiAgICAgIG1vZGU6ICdkZWZhdWx0JyxcbiAgICAgIGlzQ29tbWVudENoYW5nZWQ6IGZhbHNlLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgY29tbWVudCB0ZXh0IGNoYW5nZXNcbiAgICogQHBhcmFtIHtFdmVudH0gZSAtIElucHV0IGV2ZW50IHdpdGggbmV3IGNvbW1lbnRcbiAgICovXG4gIGNvbnN0IGhhbmRsZUNvbW1lbnQgPSAoZSkgPT4ge1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1oYW5kbGVDb21tZW50YClcbiAgICBjb25zdCBuZXdDb21tZW50ID0gZS50YXJnZXQudmFsdWVcbiAgICBzZXRUZW1wQ2hlY2tpbmdJdGVtKCdjb21tZW50cycsIG5ld0NvbW1lbnQpXG4gICAgc2V0U3RhdGUoe1xuICAgICAgaXNDb21tZW50Q2hhbmdlZDogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIGNvbnN0IHJlYWR5VG9EaXNwbGF5Q2hlY2tlciA9IGdyb3Vwc0RhdGEgJiYgZ3JvdXBzSW5kZXggJiYgY3VycmVudENvbnRleHRJZCAmJiB2ZXJzZVRleHRcblxuICAvKipcbiAgICogV3JhcHBlciBmb3IgZ2V0TGV4aWNvbkRhdGEgY2FsbGJhY2sgd2l0aCBsb2dnaW5nXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBsZXhpY29uSWQgLSBMZXhpY29uIGlkZW50aWZpZXJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGVudHJ5SWQgLSBFbnRyeSBpZGVudGlmaWVyXG4gICAqIEByZXR1cm5zIHtvYmplY3R9IExleGljb24gZGF0YVxuICAgKi9cbiAgY29uc3QgZ2V0TGV4aWNvbkRhdGFfID0gKGxleGljb25JZCwgZW50cnlJZCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGAke25hbWV9LWdldExleGljb25EYXRhX2AsIHtsZXhpY29uSWQsIGVudHJ5SWR9KVxuICAgIGNvbnN0IGxleGljb25EYXRhID0gZ2V0TGV4aWNvbkRhdGEgJiYgZ2V0TGV4aWNvbkRhdGEobGV4aWNvbklkLCBlbnRyeUlkKVxuICAgIHJldHVybiBsZXhpY29uRGF0YVxuICB9XG5cbiAgLyoqXG4gICAqIENsb3NlcyB0aGUgcG9wb3ZlciBkaXNwbGF5XG4gICAqL1xuICBjb25zdCBvbkNsb3NlUG9wb3ZlciA9ICgpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1vbkNsb3NlUG9wb3ZlcmApXG4gICAgc2V0U3RhdGUoe1xuICAgICAgcG9wb3ZlclByb3BzOiB7XG4gICAgICAgIHBvcG92ZXJWaXNpYmlsaXR5OiBmYWxzZSxcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIERpc3BsYXlzIGEgcG9wb3ZlciB3aXRoIHRpdGxlIGFuZCBjb250ZW50IGF0IHNwZWNpZmllZCBwb3NpdGlvblxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGl0bGUgLSBQb3BvdmVyIHRpdGxlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBib2R5VGV4dCAtIFBvcG92ZXIgY29udGVudFxuICAgKiBAcGFyYW0ge29iamVjdH0gcG9zaXRpb25Db29yZCAtIFBvc2l0aW9uIGNvb3JkaW5hdGVzXG4gICAqL1xuICBjb25zdCBzaG93UG9wb3ZlciA9ICh0aXRsZSwgYm9keVRleHQsIHBvc2l0aW9uQ29vcmQpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1zaG93UG9wb3ZlcmAsIHRpdGxlKVxuICAgIHNldFN0YXRlKHtcbiAgICAgIHBvcG92ZXJQcm9wczoge1xuICAgICAgICBwb3BvdmVyVmlzaWJpbGl0eTogdHJ1ZSxcbiAgICAgICAgdGl0bGUsXG4gICAgICAgIGJvZHlUZXh0LFxuICAgICAgICBwb3NpdGlvbkNvb3JkLFxuICAgICAgICBvbkNsb3NlUG9wb3ZlcjogKCkgPT4gb25DbG9zZVBvcG92ZXIoKVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogVG9nZ2xlcyB0aGUgZXhwYW5kZWQgdHJhbnNsYXRpb24gaGVscHMgbW9kYWxcbiAgICovXG4gIGNvbnN0IHRvZ2dsZUhlbHBzTW9kYWwgPSAoKSA9PiB7XG4gICAgY29uc3QgX3Nob3dIZWxwc01vZGFsID0gIXNob3dIZWxwc01vZGFsXG4gICAgc2V0U3RhdGUoe1xuICAgICAgc2hvd0hlbHBzTW9kYWw6IF9zaG93SGVscHNNb2RhbFxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogVG9nZ2xlcyB0aGUgdHJhbnNsYXRpb24gaGVscHMgc2lkZWJhciB2aXNpYmlsaXR5XG4gICAqL1xuICBjb25zdCB0b2dnbGVIZWxwcyA9ICgpID0+IHtcbiAgICBjb25zdCBfc2hvd0hlbHBzID0gIXNob3dIZWxwc1xuICAgIHNldFN0YXRlKHtcbiAgICAgIHNob3dIZWxwczogX3Nob3dIZWxwc1xuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIEJpYmxlIGJvb2sgdG8gdGhlIGJpYmxlcyBkYXRhIHN0cnVjdHVyZVxuICAgKiBDcmVhdGVzIGxhbmd1YWdlIGdyb3VwIGlmIGl0IGRvZXNuJ3QgZXhpc3RcbiAgICogQHBhcmFtIHtvYmplY3R9IGJpYmxlcyAtIEJpYmxlcyBkYXRhIHN0cnVjdHVyZVxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IC0gTGFuZ3VhZ2Uga2V5XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBiaWJsZUlkIC0gQmlibGUgaWRlbnRpZmllclxuICAgKiBAcGFyYW0ge29iamVjdH0gYm9vayAtIEJvb2sgZGF0YVxuICAgKi9cbiAgZnVuY3Rpb24gc2F2ZUJpYmxlVG9LZXkoYmlibGVzLCBrZXksIGJpYmxlSWQsIGJvb2spIHtcbiAgICBsZXQga2V5R3JvdXAgPSBiaWJsZXNba2V5XVxuICAgIGlmICgha2V5R3JvdXApIHsgLy8gaWYgZ3JvdXAgZG9lcyBub3QgZXhpc3QsIGNyZWF0ZSBuZXdcbiAgICAgIGtleUdyb3VwID0ge31cbiAgICAgIGJpYmxlc1trZXldID0ga2V5R3JvdXBcbiAgICB9XG4gICAga2V5R3JvdXBbYmlibGVJZF0gPSBib29rXG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB2ZXJzZSBjb250ZW50IGluIHRhcmdldCBCaWJsZVxuICAgKiBIYW5kbGVzIFVTRk0gY29udmVyc2lvbiwgYWxpZ25tZW50IHVwZGF0ZXMsIGFuZCB2YWxpZGF0aW9uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjaGFwdGVyIC0gQ2hhcHRlciBudW1iZXJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHZlcnNlIC0gVmVyc2UgbnVtYmVyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvbGRWZXJzZVRleHQgLSBPcmlnaW5hbCB2ZXJzZSB0ZXh0XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuZXdWZXJzZVRleHQgLSBOZXcgdmVyc2UgdGV4dFxuICAgKi9cbiAgZnVuY3Rpb24gZWRpdFRhcmdldFZlcnNlKGNoYXB0ZXIsIHZlcnNlLCBvbGRWZXJzZVRleHQsIG5ld1ZlcnNlVGV4dCkge1xuICAgIGNvbnNvbGUubG9nKGBlZGl0VGFyZ2V0VmVyc2UgJHtjaGFwdGVyfToke3ZlcnNlfSAtIGNoYW5nZWQgdG8gJHtuZXdWZXJzZVRleHR9YClcblxuICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAvLyBmaXJzdCB1cGRhdGUgY29tcG9uZW50IHN0YXRlXG5cbiAgICBjb25zdCBfYmlibGVzID0gWyAuLi5iaWJsZXNfXVxuICAgIGNvbnN0IF90YXJnZXRCaWJsZSA9IHsuLi5fYmlibGVzWzBdfVxuICAgIF9iaWJsZXNbMF0gPSBfdGFyZ2V0QmlibGVcbiAgICBjb25zdCB0YXJnZXRCb29rID0gey4uLl90YXJnZXRCaWJsZT8uYm9va31cbiAgICBfdGFyZ2V0QmlibGUuYm9vayA9IHRhcmdldEJvb2tcbiAgICBjb25zdCB0YXJnZXRDaGFwdGVyID0gey4uLnRhcmdldEJvb2tbY2hhcHRlcl19XG4gICAgdGFyZ2V0Qm9va1tjaGFwdGVyXSA9IHRhcmdldENoYXB0ZXJcbiAgICB0YXJnZXRDaGFwdGVyW3ZlcnNlXSA9IG5ld1ZlcnNlVGV4dFxuXG5cbiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gbm93IGFwcGx5IG5ldyB2ZXJzZSB0ZXh0IHRvIHNlbGVjdGVkIGFsaWduZWQgdmVyc2UgYW5kIGNhbGwgYmFjayB0byBleHRlbnNpb24gdG8gc2F2ZVxuXG4gICAgbGV0IF9uZXdWZXJzZVRleHQgPSBuZXdWZXJzZVRleHRcbiAgICBpZiAodHlwZW9mIF9uZXdWZXJzZVRleHQgIT09ICdzdHJpbmcnKSB7XG4gICAgICBfbmV3VmVyc2VUZXh0ID0gVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycy5jb252ZXJ0VmVyc2VEYXRhVG9VU0ZNKF9uZXdWZXJzZVRleHQpXG4gICAgfVxuXG4gICAgY29uc3QgY3VycmVudENoYXB0ZXJEYXRhID0gdGFyZ2V0QmlibGU/LltjaGFwdGVyXVxuICAgIGNvbnN0IGN1cnJlbnRWZXJzZURhdGEgPSBjdXJyZW50Q2hhcHRlckRhdGE/Llt2ZXJzZV1cbiAgICBjb25zdCB7IHRhcmdldFZlcnNlT2JqZWN0cyB9ID0gQWxpZ25tZW50SGVscGVycy51cGRhdGVBbGlnbm1lbnRzVG9UYXJnZXRWZXJzZShjdXJyZW50VmVyc2VEYXRhLCBfbmV3VmVyc2VUZXh0KVxuICAgIHRhcmdldENoYXB0ZXJbdmVyc2VdID0geyB2ZXJzZU9iamVjdHM6IHRhcmdldFZlcnNlT2JqZWN0cyB9OyAvLyBzYXZlXG5cbiAgICB1cGRhdGVTZXR0aW5ncyhfYmlibGVzLCB0YXJnZXRCb29rKVxuXG4gICAgY29uc3QgdmVyc2VUZXh0ID0gcmVtb3ZlVXNmbU1hcmtlcnMoX25ld1ZlcnNlVGV4dClcbiAgICBzZXRTdGF0ZSh7XG4gICAgICB2ZXJzZVRleHRcbiAgICB9KVxuXG4gICAgY2hhbmdlVGFyZ2V0VmVyc2UgJiYgY2hhbmdlVGFyZ2V0VmVyc2UoY2hhcHRlciwgdmVyc2UsIG5ld1ZlcnNlVGV4dCwgdGFyZ2V0VmVyc2VPYmplY3RzKVxuICAgIF9zYXZlRGF0YSh7IHZlcnNlRWRpdHM6IHRydWUgfSlcblxuICAgIGNvbnN0IF9ncm91cHNEYXRhID0gXy5jbG9uZURlZXAoZ3JvdXBzRGF0YSlcbiAgICBsZXQgY2hhbmdlZERhdGEgPSBmYWxzZVxuICAgIHNlbGVjdGlvbnNIZWxwZXJzLnZhbGlkYXRlQWxsU2VsZWN0aW9uc0ZvclZlcnNlKG5ld1ZlcnNlVGV4dCwgYm9va0lkLCBjaGFwdGVyLCB2ZXJzZSwgX2dyb3Vwc0RhdGEsIChjaGVjaywgaW52YWxpZGF0ZWQpID0+IHtcbiAgICAgIGlmIChjaGVjaykge1xuICAgICAgICBjb25zdCBjdXJyZW50Q2hlY2tJZCA9IGN1cnJlbnRDaGVjaz8uY29udGV4dElkPy5jaGVja0lkXG4gICAgICAgIGNvbnN0IGNoZWNrSWQgPSBjaGVjaz8uY29udGV4dElkPy5jaGVja0lkXG5cbiAgICAgICAgaWYgKGNoZWNrSWQgPT09IGN1cnJlbnRDaGVja0lkKSB7XG4gICAgICAgICAgLy8gbmVlZCB0byB1cGRhdGUgY3VycmVudCBjaGVja1xuICAgICAgICAgIF9zYXZlRGF0YSh7XG4gICAgICAgICAgICBpbnZhbGlkYXRlZCxcbiAgICAgICAgICAgIHZlcnNlRWRpdHM6IHRydWUsXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnNvbGUubG9nKGAke25hbWV9LWVkaXRUYXJnZXRWZXJzZSAtIGNoZWNrIHZhbGlkYXRlZCwgc3RhdGUgY2hhbmdlZDogaW52YWxpZDogJHtpbnZhbGlkYXRlZH1gLCBjaGVjaylcbiAgICAgICAgY2hhbmdlZERhdGEgPSBjaGFuZ2VkRGF0YSB8fCBfc2F2ZUNoZWNraW5nRGF0YShjaGVjaywgeyBpbnZhbGlkYXRlZCwgdmVyc2VFZGl0czogdHJ1ZSB9KVxuICAgICAgfVxuICAgIH0pXG5cbiAgICBpZiAoY2hhbmdlZERhdGEpIHtcbiAgICAgIGNvbnNvbGUubG9nKGAke25hbWV9LWVkaXRUYXJnZXRWZXJzZSAtIGNoYW5nZXMgZGV0ZWN0ZWQgdXBkYXRpbmcgZ3JvdXBzRGF0YWApXG4gICAgICBzZXRTdGF0ZSh7XG4gICAgICAgIGdyb3Vwc0RhdGE6IF9ncm91cHNEYXRhXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHNldHRpbmdzIHdpdGggbmV3IEJpYmxlIGRhdGEgYW5kIHBhbmUgY29uZmlndXJhdGlvbnNcbiAgICogT3JnYW5pemVzIEJpYmxlcyBieSBsYW5ndWFnZSBhbmQgaW5pdGlhbGl6ZXMgcGFuZSBzZXR0aW5nc1xuICAgKiBAcGFyYW0ge0FycmF5fSBuZXdCaWJsZXMgLSBBcnJheSBvZiBCaWJsZSBvYmplY3RzXG4gICAqIEBwYXJhbSB7b2JqZWN0fSB0YXJnZXRCaWJsZSAtIFRhcmdldCBCaWJsZSBkYXRhXG4gICAqL1xuICBmdW5jdGlvbiB1cGRhdGVTZXR0aW5ncyhuZXdCaWJsZXMsIHRhcmdldEJpYmxlKSB7XG4gICAgY29uc3QgX2JpYmxlcyA9IHt9XG4gICAgbGV0IF9wYW5lU2V0dGluZ3MgPSBbXVxuICAgIGNvbnN0IF9wYW5lS2V5U2V0dGluZ3MgPSBpbml0aWFsU2V0dGluZ3M/LnBhbmVLZXlTZXR0aW5ncyB8fCB7fVxuICAgIGlmIChuZXdCaWJsZXM/Lmxlbmd0aCkge1xuICAgICAgZm9yIChjb25zdCBiaWJsZSBvZiBuZXdCaWJsZXMpIHtcbiAgICAgICAgbGV0IGxhbmd1YWdlSWQgPSBiaWJsZT8ubGFuZ3VhZ2VJZFxuICAgICAgICBjb25zdCBvd25lciA9IGJpYmxlPy5vd25lclxuICAgICAgICBjb25zdCBib29rID0gYmlibGU/LmJvb2tcbiAgICAgICAgY29uc3QgYmlibGVJZCA9IGJpYmxlPy5iaWJsZUlkXG4gICAgICAgIGlmIChsYW5ndWFnZUlkID09PSBOVF9PUklHX0xBTkcgfHwgbGFuZ3VhZ2VJZCA9PT0gT1RfT1JJR19MQU5HKSB7XG4gICAgICAgICAgbGFuZ3VhZ2VJZCA9ICdvcmlnaW5hbExhbmd1YWdlJ1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGtleSA9IGAke2xhbmd1YWdlSWR9LyR7YmlibGVJZH0vJHtvd25lcn1gXG4gICAgICAgIGNvbnN0IGluaXRpYWxQYW5lU2V0dGluZ3MgPSBfcGFuZUtleVNldHRpbmdzPy5ba2V5XVxuICAgICAgICBjb25zdCBsYW5nS2V5ID0gYCR7bGFuZ3VhZ2VJZH1fJHtvd25lcn1gXG4gICAgICAgIHNhdmVCaWJsZVRvS2V5KF9iaWJsZXMsIGxhbmdLZXksIGJpYmxlSWQsIGJvb2spXG4gICAgICAgIHNhdmVCaWJsZVRvS2V5KF9iaWJsZXMsIGxhbmd1YWdlSWQsIGJpYmxlSWQsIGJvb2spIC8vIGFsc28gc2F2ZSBhcyBkZWZhdWx0IGZvciBsYW5ndWFnZSB3aXRob3V0IG93bmVyXG4gICAgICAgIGNvbnN0IHBhbmUgPSBpbml0aWFsUGFuZVNldHRpbmdzIHx8IHtcbiAgICAgICAgICAuLi5iaWJsZSxcbiAgICAgICAgICBsYW5ndWFnZUlkXG4gICAgICAgIH1cbiAgICAgICAgX3BhbmVTZXR0aW5ncy5wdXNoKHBhbmUpXG4gICAgICAgIGlmICghaW5pdGlhbFBhbmVTZXR0aW5ncykge1xuICAgICAgICAgIF9wYW5lS2V5U2V0dGluZ3Nba2V5XSA9IHBhbmVcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBfcGFuZVNldHRpbmdzID0gW11cbiAgICB9XG5cbiAgICBjb25zdCBfdG9vbHNTZXR0aW5ncyA9IGluaXRpYWxTZXR0aW5ncz8udG9vbHNTZXR0aW5ncyB8fFxuICAgIHtcbiAgICAgICdDaGVja0FyZWEnOiB7XG4gICAgICAgICdmb250U2l6ZSc6IDEwMFxuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBfbWFuaWZlc3QgPSBpbml0aWFsU2V0dGluZ3M/Lm1hbmlmZXN0IHx8XG4gICAge1xuICAgICAgbGFuZ3VhZ2VfbmFtZTogdGFyZ2V0QmlibGU/Lm1hbmlmZXN0Py5kdWJsaW5fY29yZT8ubGFuZ3VhZ2U/LnRpdGxlIHx8ICdDdXJyZW50JyxcbiAgICAgIHByb2plY3RGb250OiB0YXJnZXRCaWJsZT8ubWFuaWZlc3Q/LnByb2plY3RGb250IHx8ICcnXG4gICAgfVxuXG4gICAgY29uc3QgYXBwU2V0dGluZ3MgPSBpbml0aWFsU2V0dGluZ3M/LmFwcFNldHRpbmdzIHx8IHt9XG4gICAgX21hbmlmZXN0ID0ge1xuICAgICAgLi4uX21hbmlmZXN0LFxuICAgICAgLi4uYXBwU2V0dGluZ3MgLy8gb2xkZXIgY29kZSBpcyBsb29raW5nIGZvciBhcHBTZXR0aW5ncyBpbiBtYW5pZmVzdFxuICAgIH1cblxuICAgIHNldEJpYmxlcyhfYmlibGVzKVxuICAgIHNldFRhcmdldEJpYmxlKHRhcmdldEJpYmxlKVxuICAgIHNldFNldHRpbmdzKHtcbiAgICAgIHBhbmVTZXR0aW5nczogX3BhbmVTZXR0aW5ncyxcbiAgICAgIHBhbmVLZXlTZXR0aW5nczogX3BhbmVLZXlTZXR0aW5ncyxcbiAgICAgIHRvb2xzU2V0dGluZ3M6IF90b29sc1NldHRpbmdzLFxuICAgICAgbWFuaWZlc3Q6IF9tYW5pZmVzdCxcbiAgICAgIG5ld0NvbW1lbnQ6ICcnLFxuICAgICAgYXBwU2V0dGluZ3MsXG4gICAgfSwgZmFsc2UpXG4gIH1cblxuICAvKipcbiAgICogV3JhcHBlciBmb3IgZ2V0U2NyaXB0dXJlRnJvbVJlZmVyZW5jZSB3aXRoIGN1cnJlbnQgQmlibGVzIGRhdGFcbiAgICogQHBhcmFtIHtzdHJpbmd9IGxhbmcgLSBMYW5ndWFnZSBJRFxuICAgKiBAcGFyYW0ge3N0cmluZ30gaWQgLSBCaWJsZSBJRFxuICAgKiBAcGFyYW0ge3N0cmluZ30gYm9vayAtIEJvb2sgSURcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNoYXB0ZXIgLSBDaGFwdGVyIG51bWJlclxuICAgKiBAcGFyYW0ge3N0cmluZ30gdmVyc2UgLSBWZXJzZSBudW1iZXJcbiAgICogQHJldHVybnMge3N0cmluZ30gU2NyaXB0dXJlIHRleHRcbiAgICovXG4gIGZ1bmN0aW9uIF9nZXRTY3JpcHR1cmVGcm9tUmVmZXJlbmNlKGxhbmcsIGlkLCBib29rLCBjaGFwdGVyLCB2ZXJzZSkge1xuICAgIHJldHVybiBnZXRTY3JpcHR1cmVGcm9tUmVmZXJlbmNlKGJpYmxlcywgbGFuZywgaWQsIGJvb2ssIGNoYXB0ZXIsIHZlcnNlKVxuICB9XG5cbiAgLyoqXG4gICAqIEVmZmVjdCBob29rIHRvIHVwZGF0ZSBzZXR0aW5ncyB3aGVuIEJpYmxlcyBvciB0YXJnZXQgQmlibGUgY2hhbmdlc1xuICAgKi9cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICB1cGRhdGVTZXR0aW5ncyhiaWJsZXNfLCB0YXJnZXRCaWJsZV8pXG4gIH0sIFtiaWJsZXNfLCB0YXJnZXRCaWJsZV9dKVxuXG4gIC8vIGJ1aWxkIHRoZSB0aXRsZVxuICBjb25zdCB7IHRhcmdldF9sYW5ndWFnZSwgcHJvamVjdCB9ID0gbWFuaWZlc3Q7XG4gIGxldCBleHBhbmRlZFNjcmlwdHVyZVBhbmVUaXRsZSA9IHByb2plY3Q/LnRpdGxlIHx8ICcnO1xuXG4gIGlmICh0YXJnZXRfbGFuZ3VhZ2U/LmJvb2s/Lm5hbWUpIHtcbiAgICBleHBhbmRlZFNjcmlwdHVyZVBhbmVUaXRsZSA9IHRhcmdldF9sYW5ndWFnZS5ib29rLm5hbWU7XG4gIH1cblxuXG4gIGNvbnN0IHN0eWxlUHJvcHMgPSBzdHlsZXMgfHwge31cbiAgY29uc3QgX2NoZWNrZXJTdHlsZXMgPSB7XG4gICAgLi4ubG9jYWxTdHlsZXMuY29udGFpbmVyRGl2LFxuICAgIC4uLnN0eWxlUHJvcHMsXG4gIH1cblxuICByZXR1cm4gKFxuICAgIHJlYWR5VG9EaXNwbGF5Q2hlY2tlciA/XG4gICAgICA8ZGl2IGlkPSdjaGVja2VyJyBzdHlsZT17X2NoZWNrZXJTdHlsZXN9PlxuICAgICAgICA8R3JvdXBNZW51Q29tcG9uZW50XG4gICAgICAgICAgYm9va05hbWU9e2Jvb2tOYW1lfVxuICAgICAgICAgIGNoYW5nZUN1cnJlbnRDb250ZXh0SWQ9e2NoYW5nZUN1cnJlbnRDaGVja199XG4gICAgICAgICAgY29udGV4dElkPXtjdXJyZW50Q29udGV4dElkfVxuICAgICAgICAgIGRpcmVjdGlvbj17ZGlyZWN0aW9ufVxuICAgICAgICAgIGdyb3Vwc0RhdGE9e2dyb3Vwc0RhdGF9XG4gICAgICAgICAgZ3JvdXBzSW5kZXg9e2dyb3Vwc0luZGV4fVxuICAgICAgICAgIHRhcmdldExhbmd1YWdlRm9udD17dGFyZ2V0TGFuZ3VhZ2VGb250fVxuICAgICAgICAgIHRyYW5zbGF0ZT17dHJhbnNsYXRlfVxuICAgICAgICAvPlxuICAgICAgICA8ZGl2IHN0eWxlPXtsb2NhbFN0eWxlcy5jZW50ZXJEaXZ9PlxuICAgICAgICAgIHsgYmlibGVzICYmIE9iamVjdC5rZXlzKGJpYmxlcykubGVuZ3RoICYmXG4gICAgICAgICAgICA8ZGl2IHN0eWxlPXtsb2NhbFN0eWxlcy5zY3JpcHR1cmVQYW5lRGl2fT5cbiAgICAgICAgICAgICAgPFNjcmlwdHVyZVBhbmVcbiAgICAgICAgICAgICAgICBhZGRPYmplY3RQcm9wZXJ0eVRvTWFuaWZlc3Q9e2FkZE9iamVjdFByb3BlcnR5VG9NYW5pZmVzdH1cbiAgICAgICAgICAgICAgICBiaWJsZXM9e2JpYmxlc31cbiAgICAgICAgICAgICAgICBjb21wbGV4U2NyaXB0Rm9udHM9e2NvbXBsZXhTY3JpcHRGb250c31cbiAgICAgICAgICAgICAgICBjb250ZXh0SWQ9e2N1cnJlbnRDb250ZXh0SWR9XG4gICAgICAgICAgICAgICAgY3VycmVudFBhbmVTZXR0aW5ncz17cGFuZVNldHRpbmdzfVxuICAgICAgICAgICAgICAgIGVkaXRWZXJzZVJlZj17bnVsbH1cbiAgICAgICAgICAgICAgICBlZGl0VGFyZ2V0VmVyc2U9e2VkaXRUYXJnZXRWZXJzZX1cbiAgICAgICAgICAgICAgICBleHBhbmRlZFNjcmlwdHVyZVBhbmVUaXRsZT17ZXhwYW5kZWRTY3JpcHR1cmVQYW5lVGl0bGV9XG4gICAgICAgICAgICAgICAgZ2V0QXZhaWxhYmxlU2NyaXB0dXJlUGFuZVNlbGVjdGlvbnM9e251bGx9XG4gICAgICAgICAgICAgICAgZ2V0TGV4aWNvbkRhdGE9e2dldExleGljb25EYXRhX31cbiAgICAgICAgICAgICAgICBtYWtlU3VyZUJpYmxlc0xvYWRlZEZvclRvb2w9e251bGx9XG4gICAgICAgICAgICAgICAgcHJvamVjdERldGFpbHNSZWR1Y2VyPXt7IG1hbmlmZXN0IH19XG4gICAgICAgICAgICAgICAgc2VsZWN0aW9ucz17Y3VycmVudFNlbGVjdGlvbnN9XG4gICAgICAgICAgICAgICAgc2V0VG9vbFNldHRpbmdzPXtzZXRUb29sU2V0dGluZ3NTY3JpcHR1cmV9XG4gICAgICAgICAgICAgICAgc2hvd1BvcG92ZXI9e3Nob3dQb3BvdmVyfVxuICAgICAgICAgICAgICAgIG9uRXhwYW5kZWRTY3JpcHR1cmVQYW5lU2hvdz17bnVsbH1cbiAgICAgICAgICAgICAgICB0cmFuc2xhdGU9e3RyYW5zbGF0ZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPENoZWNrSW5mb0NhcmRcbiAgICAgICAgICAgICAgZ2V0U2NyaXB0dXJlRnJvbVJlZmVyZW5jZT17X2dldFNjcmlwdHVyZUZyb21SZWZlcmVuY2V9XG4gICAgICAgICAgICAgIG9uTGlua0NsaWNrPXsoKSA9PiBmYWxzZX1cbiAgICAgICAgICAgICAgb25TZWVNb3JlQ2xpY2s9eygpID0+IGZhbHNlfVxuICAgICAgICAgICAgICBwaHJhc2U9e2dyb3VwUGhyYXNlfVxuICAgICAgICAgICAgICBzZWVNb3JlTGFiZWw9e3RyYW5zbGF0ZSgnc2VlX21vcmUnKX1cbiAgICAgICAgICAgICAgc2hvd1NlZU1vcmVCdXR0b249e2ZhbHNlfVxuICAgICAgICAgICAgICB0aXRsZT17Z3JvdXBUaXRsZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8VmVyc2VDaGVja1xuICAgICAgICAgICAgICBhbGlnbmVkR0xUZXh0PXthbGlnbmVkR0xUZXh0fVxuICAgICAgICAgICAgICBib29rRGV0YWlscz17Ym9va0RldGFpbHN9XG4gICAgICAgICAgICAgIGJvb2ttYXJrRW5hYmxlZD17Ym9va21hcmtFbmFibGVkfVxuICAgICAgICAgICAgICBjYW5jZWxFZGl0VmVyc2U9e2NhbmNlbEVkaXRWZXJzZX1cbiAgICAgICAgICAgICAgY2FuY2VsQ29tbWVudD17Y2FuY2VsQ29tbWVudH1cbiAgICAgICAgICAgICAgY2FuY2VsU2VsZWN0aW9uPXtjYW5jZWxTZWxlY3Rpb259XG4gICAgICAgICAgICAgIGNoYW5nZU1vZGU9e2NoYW5nZU1vZGV9XG4gICAgICAgICAgICAgIGNoYW5nZVNlbGVjdGlvbnNJbkxvY2FsU3RhdGU9e2NoYW5nZVNlbGVjdGlvbnNJbkxvY2FsU3RhdGV9XG4gICAgICAgICAgICAgIGNoZWNrSWZDb21tZW50Q2hhbmdlZD17Y2hlY2tJZkNvbW1lbnRDaGFuZ2VkfVxuICAgICAgICAgICAgICBjaGVja0lmVmVyc2VDaGFuZ2VkPXtjaGVja0lmVmVyc2VDaGFuZ2VkfVxuICAgICAgICAgICAgICBjbGVhclNlbGVjdGlvbj17Y2xlYXJTZWxlY3Rpb259XG4gICAgICAgICAgICAgIGNvbW1lbnRUZXh0PXtjb21tZW50VGV4dH1cbiAgICAgICAgICAgICAgY29udGV4dElkPXtjdXJyZW50Q29udGV4dElkfVxuICAgICAgICAgICAgICBkaWFsb2dNb2RhbFZpc2liaWxpdHkgPSB7ZmFsc2V9XG4gICAgICAgICAgICAgIGlzQ29tbWVudENoYW5nZWQ9e2lzQ29tbWVudENoYW5nZWR9XG4gICAgICAgICAgICAgIGlzVmVyc2VDaGFuZ2VkPXtpc1ZlcnNlQ2hhbmdlZH1cbiAgICAgICAgICAgICAgaXNWZXJzZUVkaXRlZD17aXNWZXJzZUVkaXRlZH1cbiAgICAgICAgICAgICAgaGFuZGxlRWRpdFZlcnNlPXtoYW5kbGVFZGl0VmVyc2V9XG4gICAgICAgICAgICAgIGhhbmRsZUdvVG9OZXh0PXtoYW5kbGVHb1RvTmV4dH1cbiAgICAgICAgICAgICAgaGFuZGxlR29Ub1ByZXZpb3VzPXtoYW5kbGVHb1RvUHJldmlvdXN9XG4gICAgICAgICAgICAgIGhhbmRsZU9wZW5EaWFsb2c9e251bGx9XG4gICAgICAgICAgICAgIGlzVmVyc2VJbnZhbGlkYXRlZD17aXNWZXJzZUludmFsaWRhdGVkfVxuICAgICAgICAgICAgICBoYW5kbGVDbG9zZURpYWxvZz17bnVsbH1cbiAgICAgICAgICAgICAgaGFuZGxlQ29tbWVudD17aGFuZGxlQ29tbWVudH1cbiAgICAgICAgICAgICAgaGFuZGxlU2tpcD17bnVsbH1cbiAgICAgICAgICAgICAgaGFuZGxlVGFnc0NoZWNrYm94PXtoYW5kbGVUYWdzQ2hlY2tib3h9XG4gICAgICAgICAgICAgIGxvY2FsTm90aGluZ1RvU2VsZWN0PXt0ZW1wTm90aGluZ1RvU2VsZWN0fVxuICAgICAgICAgICAgICBtYW5pZmVzdD17bWFuaWZlc3R9XG4gICAgICAgICAgICAgIG1heGltdW1TZWxlY3Rpb25zPXttYXhpbXVtU2VsZWN0aW9uc31cbiAgICAgICAgICAgICAgbW9kZT17bW9kZX1cbiAgICAgICAgICAgICAgbmV3U2VsZWN0aW9ucz17dGVtcFNlbGVjdGlvbnN9XG4gICAgICAgICAgICAgIG5vdGhpbmdUb1NlbGVjdD17Y3VycmVudE5vdGhpbmdUb1NlbGVjdH1cbiAgICAgICAgICAgICAgb3BlbkFsZXJ0RGlhbG9nPXtvcGVuQWxlcnREaWFsb2d9XG4gICAgICAgICAgICAgIHNhdmVDb21tZW50PXtzYXZlQ29tbWVudH1cbiAgICAgICAgICAgICAgc2F2ZUVkaXRWZXJzZT17c2F2ZUVkaXRWZXJzZX1cbiAgICAgICAgICAgICAgc2F2ZVNlbGVjdGlvbj17X3NhdmVTZWxlY3Rpb259XG4gICAgICAgICAgICAgIHNlbGVjdGlvbnM9e2N1cnJlbnRTZWxlY3Rpb25zfVxuICAgICAgICAgICAgICBzZXRUb29sU2V0dGluZ3M9e3NldFRvb2xTZXR0aW5nc31cbiAgICAgICAgICAgICAgdGFncz17bmV3VGFncyB8fCBbXX1cbiAgICAgICAgICAgICAgdGFyZ2V0QmlibGU9e3RhcmdldEJpYmxlfVxuICAgICAgICAgICAgICB0YXJnZXRMYW5ndWFnZURldGFpbHM9e3RhcmdldExhbmd1YWdlRGV0YWlsc31cbiAgICAgICAgICAgICAgdG9nZ2xlQm9va21hcms9e3RvZ2dsZUJvb2ttYXJrfVxuICAgICAgICAgICAgICB0b2dnbGVOb3RoaW5nVG9TZWxlY3Q9e3RvZ2dsZU5vdGhpbmdUb1NlbGVjdH1cbiAgICAgICAgICAgICAgdG9vbHNTZXR0aW5ncz17dG9vbHNTZXR0aW5nc31cbiAgICAgICAgICAgICAgdHJhbnNsYXRlPXt0cmFuc2xhdGV9XG4gICAgICAgICAgICAgIHVuZmlsdGVyZWRWZXJzZVRleHQ9e3VuZmlsdGVyZWRWZXJzZVRleHR9XG4gICAgICAgICAgICAgIHZhbGlkYXRlU2VsZWN0aW9ucz17dmFsaWRhdGVTZWxlY3Rpb25zfVxuICAgICAgICAgICAgICB2ZXJzZVRleHQ9e3ZlcnNlVGV4dH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB7c2hvd0RvY3VtZW50ICYmIDxUcmFuc2xhdGlvbkhlbHBzXG4gICAgICAgICAgbW9kYWxBcnRpY2xlPXthcnRpY2xlfVxuICAgICAgICAgIGFydGljbGU9e2FydGljbGV9XG4gICAgICAgICAgZXhwYW5kZWRIZWxwc0J1dHRvbkhvdmVyVGV4dD17J0NsaWNrIHRvIHNob3cgZXhwYW5kZWQgaGVscCBwYW5lJ31cbiAgICAgICAgICBtb2RhbFRpdGxlPXsndHJhbnNsYXRpb25IZWxwcyd9XG4gICAgICAgICAgdHJhbnNsYXRlPXt0cmFuc2xhdGV9XG4gICAgICAgICAgaXNTaG93SGVscHNFeHBhbmRlZD17c2hvd0hlbHBzTW9kYWx9XG4gICAgICAgICAgb3BlbkV4cGFuZGVkSGVscHNNb2RhbD17dG9nZ2xlSGVscHNNb2RhbH1cbiAgICAgICAgICBzaWRlYmFyVG9nZ2xlPXt0b2dnbGVIZWxwc31cbiAgICAgICAgICBpc1Nob3dIZWxwc1NpZGViYXI9e3Nob3dIZWxwc31cbiAgICAgICAgLz59XG4gICAgICAgIHtwb3BvdmVyUHJvcHM/LnBvcG92ZXJWaXNpYmlsaXR5ICYmXG4gICAgICAgICAgPFBvcG92ZXJDb250YWluZXIgey4uLnBvcG92ZXJQcm9wc30gLz5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgICA6XG4gICAgICAnV2FpdGluZyBmb3IgRGF0YSdcbiAgKTtcbn07XG5cbkNoZWNrZXIucHJvcFR5cGVzID0ge1xuICBzdHlsZXM6UHJvcFR5cGVzLm9iamVjdCxcbiAgYWxpZ25lZEdsQmlibGU6IFByb3BUeXBlcy5vYmplY3QsXG4gIGJpYmxlczogUHJvcFR5cGVzLmFycmF5LFxuICBjaGFuZ2VUYXJnZXRWZXJzZTogUHJvcFR5cGVzLmZ1bmMsXG4gIGNoZWNraW5nRGF0YTogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBjaGVja1R5cGU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGNvbnRleHRJZDogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBnbFdvcmRzRGF0YTogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBnZXRMZXhpY29uRGF0YTogUHJvcFR5cGVzLmZ1bmMsXG4gIGluaXRpYWxTZXR0aW5nczogUHJvcFR5cGVzLm9iamVjdCxcbiAgc2F2ZUNoZWNraW5nRGF0YTogUHJvcFR5cGVzLmZ1bmMsXG4gIHNhdmVTZXR0aW5nczogUHJvcFR5cGVzLmZ1bmMsXG4gIHNob3dEb2N1bWVudDogUHJvcFR5cGVzLmJvb2wsXG4gIHRhcmdldEJpYmxlOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHRhcmdldExhbmd1YWdlRGV0YWlsczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICB0cmFuc2xhdGU6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG59O1xuZXhwb3J0IGRlZmF1bHQgQ2hlY2tlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQTBDQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxVQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxPQUFBLEdBQUFELHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBSSxtQkFBQSxHQUFBRixzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUssZUFBQSxHQUFBTCxPQUFBO0FBTUEsSUFBQU0sVUFBQSxHQUFBSixzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQU8saUJBQUEsR0FBQVAsT0FBQTtBQVNBLElBQUFRLGNBQUEsR0FBQU4sc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFTLGlCQUFB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
|
|
1371
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdXNmbUhlbHBlcnMiLCJyZXF1aXJlIiwiX3JlYWN0IiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfcHJvcFR5cGVzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9sb2Rhc2giLCJfR3JvdXBNZW51Q29tcG9uZW50IiwiX3dvcmRBbGlnbmVyTGliIiwiX2RlZXBFcXVhbCIsIl90d0FydGljbGVIZWxwZXJzIiwiX0NoZWNrSW5mb0NhcmQiLCJfdG5BcnRpY2xlSGVscGVycyIsIl9TY3JpcHR1cmVQYW5lIiwiX1BvcG92ZXJDb250YWluZXIiLCJfQm9va3NPZlRoZUJpYmxlIiwiX2NvbXBsZXhTY3JpcHRGb250cyIsIl9UcmFuc2xhdGlvbkhlbHBzIiwidEhlbHBzSGVscGVycyIsIl9WZXJzZUNoZWNrIiwiX2NoZWNrSW5mb0NhcmRIZWxwZXJzIiwiZSIsIl9fZXNNb2R1bGUiLCJ0IiwiV2Vha01hcCIsInIiLCJuIiwibyIsImkiLCJmIiwiX19wcm90b19fIiwiX3R5cGVvZiIsImhhcyIsImdldCIsInNldCIsIl90IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiQXJyYXkiLCJpc0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwibGVuZ3RoIiwiX24iLCJGIiwicyIsImRvbmUiLCJ2YWx1ZSIsIlR5cGVFcnJvciIsImEiLCJ1IiwibmV4dCIsIl90b0NvbnN1bWFibGVBcnJheSIsIl9hcnJheVdpdGhvdXRIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXkiLCJfbm9uSXRlcmFibGVTcHJlYWQiLCJmcm9tIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiX3RvUHJvcGVydHlLZXkiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIl90b1ByaW1pdGl2ZSIsInRvUHJpbWl0aXZlIiwiU3RyaW5nIiwiTnVtYmVyIiwiX3NsaWNlZFRvQXJyYXkiLCJfYXJyYXlXaXRoSG9sZXMiLCJfaXRlcmFibGVUb0FycmF5TGltaXQiLCJfbm9uSXRlcmFibGVSZXN0IiwidG9TdHJpbmciLCJzbGljZSIsImNvbnN0cnVjdG9yIiwibmFtZSIsInRlc3QiLCJsIiwibG9jYWxTdHlsZXMiLCJjb250YWluZXJEaXYiLCJkaXNwbGF5IiwiZmxleERpcmVjdGlvbiIsIndpZHRoIiwiaGVpZ2h0IiwiY2VudGVyRGl2Iiwib3ZlcmZsb3dYIiwibWFyZ2luTGVmdCIsInNjcmlwdHVyZVBhbmVEaXYiLCJmbGV4U2hyaW5rIiwicGFkZGluZ0JvdHRvbSIsInRyYW5zbGF0aW9uV29yZHMiLCJleHBvcnRzIiwidHJhbnNsYXRpb25Ob3RlcyIsIm1heGltdW1TZWxlY3Rpb25zIiwiY29uc29sZSIsImxvZyIsIkNoZWNrZXIiLCJfcmVmIiwiX3RhcmdldExhbmd1YWdlRGV0YWlsIiwiX3RhcmdldExhbmd1YWdlRGV0YWlsMiIsIl90YXJnZXRfbGFuZ3VhZ2UkYm9vayIsImFsaWduZWRHbEJpYmxlIiwiYmlibGVzXyIsImJpYmxlcyIsImNoYW5nZWRDdXJyZW50Q2hlY2siLCJjaGFuZ2VUYXJnZXRWZXJzZSIsImNoZWNraW5nRGF0YSIsImNoZWNrVHlwZSIsImNvbnRleHRJZCIsImdldExleGljb25EYXRhIiwiZ2xXb3Jkc0RhdGEiLCJpbml0aWFsU2V0dGluZ3MiLCJzYXZlQ2hlY2tpbmdEYXRhIiwic2F2ZVNldHRpbmdzIiwic2hvd0RvY3VtZW50Iiwic3R5bGVzIiwidGFyZ2V0QmlibGVfIiwidGFyZ2V0QmlibGUiLCJ0YXJnZXRMYW5ndWFnZURldGFpbHMiLCJ0cmFuc2xhdGUiLCJfdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsInBhbmVTZXR0aW5ncyIsInBhbmVLZXlTZXR0aW5ncyIsInRvb2xzU2V0dGluZ3MiLCJtYW5pZmVzdCIsIl91c2VTdGF0ZTIiLCJzZXR0aW5ncyIsIl9zZXRTZXR0aW5ncyIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0Iiwic2V0QmlibGVzIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJzZXRUYXJnZXRCaWJsZSIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwidGVtcENoZWNraW5nRGF0YSIsInNldFRlbXBDaGVja2luZ0RhdGEiLCJfdXNlU3RhdGU5IiwiX3VzZVN0YXRlMCIsImxvY2FsQ2hlY2tpbmdEYXRhIiwic2V0TG9jYWxDaGVja2luZ0RhdGEiLCJfdXNlU3RhdGUxIiwiYWxpZ25lZEdMVGV4dCIsImFydGljbGUiLCJjdXJyZW50Q2hlY2siLCJjdXJyZW50Q2hlY2tpbmdEYXRhIiwiZ3JvdXBUaXRsZSIsImdyb3VwUGhyYXNlIiwiZ3JvdXBzRGF0YSIsImdyb3Vwc0luZGV4IiwiaXNDb21tZW50Q2hhbmdlZCIsImlzVmVyc2VDaGFuZ2VkIiwibW9kZSIsIm5ld1ZlcnNlVGV4dCIsInBvcG92ZXJQcm9wcyIsInBvcG92ZXJWaXNpYmlsaXR5Iiwic2hvd0hlbHBzTW9kYWwiLCJzaG93SGVscHMiLCJuZXdUYWdzIiwidmVyc2VUZXh0IiwiX3VzZVN0YXRlMTAiLCJzdGF0ZSIsIl9zZXRTdGF0ZSIsInNldFN0YXRlIiwibmV3U3RhdGUiLCJwcmV2U3RhdGUiLCJnZXRDdXJyZW50VmFsdWVGb3IiLCJrZXkiLCJnZXRUZW1wVmFsdWVGb3IiLCJjdXJyZW50U2VsZWN0aW9ucyIsInRlbXBTZWxlY3Rpb25zIiwidGVtcE5vdGhpbmdUb1NlbGVjdCIsImN1cnJlbnROb3RoaW5nVG9TZWxlY3QiLCJncm91cHNEYXRhTG9hZGVkIiwidXBkYXRlTW9kZUZvclNlbGVjdGlvbnMiLCJuZXdTZWxlY3Rpb25zIiwibm90aGluZ1RvU2VsZWN0Iiwibm9TZWxlY3Rpb25zIiwibmV3TW9kZSIsInVzZUVmZmVjdCIsImhhdmVEYXRhIiwiZ3JvdXBzRGF0YUluaXRpYWxpemVkIiwiZmxhdHRlbmVkR3JvdXBEYXRhIiwiZ3JvdXBEYXRhSGVscGVycyIsImZsYXR0ZW5Hcm91cERhdGEiLCJwYXJzZVRuVG9JbmRleCIsInBhcnNlVHdUb0luZGV4IiwiY2hlY2siLCJmaW5kQ2hlY2siLCJtb2RpZmllZCIsInNlbGVjdGlvbnNIZWxwZXJzIiwidmFsaWRhdGVTZWxlY3Rpb25zRm9yQWxsQ2hlY2tzIiwiaW52YWxpZGF0ZWQiLCJjb25jYXQiLCJfc2F2ZUNoZWNraW5nRGF0YSIsInVwZGF0ZUNvbnRleHQiLCJzZWxlY3Rpb25zIiwibmV3Q2hlY2siLCJncm91cHNJbmRleF8iLCJ1bmRlZmluZWQiLCJyZWZlcmVuY2UiLCJ2ZXJzZUhlbHBlcnMiLCJnZXRWZXJzZVRleHRGcm9tQmlibGUiLCJnZXRBbGlnbmVkR0xUZXh0IiwiZ2V0VGl0bGVGcm9tSW5kZXgiLCJncm91cElkIiwib2NjdXJyZW5jZU5vdGUiLCJnZXRQaHJhc2VGcm9tVHciLCJncm91cERhdGEiLCJhcnRpY2xlcyIsIl9hcnRpY2xlIiwiYXJ0aWNsZUlkIiwiZ3JvdXBzSWRzIiwiX2kiLCJfZ3JvdXBzSWRzIiwiX2dyb3VwSWQiLCJncm91cCIsImN1cnJlbnRBcnRpY2xlTWFya2Rvd24iLCJjb252ZXJ0TWFya2Rvd25MaW5rcyIsImdhdGV3YXlMYW5ndWFnZUlkIiwiY29tbWVudFRleHQiLCJib29rSWQiLCJib29rIiwiaWQiLCJib29rTmFtZSIsImJvb2tEZXRhaWxzIiwidGFyZ2V0TGFuZ3VhZ2VGb250IiwicHJvamVjdEZvbnQiLCJjdXJyZW50Q29udGV4dElkIiwic2V0VG9vbFNldHRpbmdzIiwiTkFNRVNQQUNFIiwiZmllbGROYW1lIiwiZmllbGRWYWx1ZSIsIl90b29sc1NldHRpbmdzIiwiY29tcG9uZW50U2V0dGluZ3MiLCJzZXRTZXR0aW5ncyIsIl9zYXZlU2V0dGluZ3MiLCJfc2V0dGluZ3MiLCJuZXdTZXR0aW5ncyIsIl9wYW5lU2V0dGluZ3MiLCJfcGFuZVNldHRpbmciLCJfcGFuZUtleVNldHRpbmdzIiwiX2kyIiwiX2tleXMiLCJkb1NhdmUiLCJzZXRUb29sU2V0dGluZ3NTY3JpcHR1cmUiLCJfaXRlcmF0b3IiLCJfc3RlcCIsImxhbmd1YWdlSWQiLCJiaWJsZUlkIiwib3duZXIiLCJlcnIiLCJhZGRPYmplY3RQcm9wZXJ0eVRvTWFuaWZlc3QiLCJfbWFuaWZlc3QiLCJhcHBTZXR0aW5ncyIsIl9hcHBTZXR0aW5ncyIsIm9wZW5BbGVydERpYWxvZyIsImNoZWNrSWZWZXJzZUNoYW5nZWQiLCJfbmV3VmVyc2VUZXh0IiwidGFyZ2V0IiwiX2lzVmVyc2VDaGFuZ2VkIiwiaGFuZGxlRWRpdFZlcnNlIiwiY2FuY2VsRWRpdFZlcnNlIiwic2F2ZUVkaXRWZXJzZSIsIl9jdXJyZW50Q29udGV4dElkJHJlZiIsImNoYXB0ZXIiLCJ2ZXJzZSIsInZlcnNlUmVmIiwidmVyc2VTcGFuIiwiYmVmb3JlIiwiZWRpdFRhcmdldFZlcnNlIiwiaGFuZGxlR29Ub05leHQiLCJuZXh0Q2hlY2siLCJmaW5kTmV4dENoZWNrIiwiY2hhbmdlQ3VycmVudENoZWNrXyIsImhhbmRsZUdvVG9QcmV2aW91cyIsInByZXZpb3VzQ2hlY2siLCJmaW5kUHJldmlvdXNDaGVjayIsImhhbmRsZVRhZ3NDaGVja2JveCIsInRhZyIsImN1cnJlbnRUYWdzIiwidGFnSW5kZXgiLCJpbmRleE9mIiwiX25ld1RhZ3MiLCJjb3B5Iiwic3BsaWNlIiwidmFsaWRhdGVTZWxlY3Rpb25zIiwidmVyc2VUZXh0XyIsInNlbGVjdGlvbnNfIiwidmFsaWRhdGVWZXJzZVNlbGVjdGlvbnMiLCJ1bmZpbHRlcmVkVmVyc2VUZXh0IiwidXNlTWVtbyIsInVuZmlsdGVyZWRWZXJzZVRleHRfIiwiX3RhcmdldEJpYmxlJGNoYXB0ZXIiLCJ2ZXJzZURhdGEiLCJVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzIiwiZ2V0VXNmbUZvclZlcnNlQ29udGVudCIsInNldFRlbXBDaGVja2luZ0l0ZW0iLCJuZXdDaGVja2luZ0RhdGEiLCJjaGFuZ2VTZWxlY3Rpb25zSW5Mb2NhbFN0YXRlIiwidG9nZ2xlTm90aGluZ1RvU2VsZWN0Iiwic2VsZWN0IiwibmV3Q29udGV4dCIsIm5vQ2hlY2siLCJuZXdDb250ZXh0SWQiLCJzZWxlY3Rpb25zVW5jaGFuZ2VkIiwiaXNFcXVhbCIsImRpcmVjdGlvbiIsImJvb2ttYXJrRW5hYmxlZCIsImlzVmVyc2VFZGl0ZWQiLCJpc1ZlcnNlSW52YWxpZGF0ZWQiLCJfc2F2ZVNlbGVjdGlvbiIsIl9jbG9uZURhdGFGb3JTYXZpbmciLCJjbG9uZURhdGFGb3JTYXZpbmciLCJjaGVja0luR3JvdXBzRGF0YSIsIl9jdXJyZW50Q2hlY2siLCJfbmV3Q2hlY2tpbmdEYXRhIiwiZGVsZXRlVGVtcENoZWNraW5nRGF0YSIsInVwZGF0ZVZhbHVlc0luQ2hlY2tEYXRhIiwiX2dyb3Vwc0RhdGEiLCJfIiwiY2xvbmVEZWVwIiwiY2F0ZWdvcnkiLCJuZXdDaGVja0RhdGEiLCJfaTMiLCJfT2JqZWN0JGtleXMiLCJuZXdDaGVja2luZ1ZhbHVlIiwiX3NhdmVEYXRhIiwibmV3RGF0YSIsIl9jbG9uZURhdGFGb3JTYXZpbmcyIiwiX2k0IiwiX09iamVjdCRrZXlzMiIsImNoYW5nZWREYXRhIiwiX2k1IiwiX09iamVjdCRrZXlzMyIsIl90ZW1wQ2hlY2tpbmdEYXRhIiwiY2FuY2VsU2VsZWN0aW9uIiwiY2xlYXJTZWxlY3Rpb24iLCJ0b2dnbGVCb29rbWFyayIsInJlbWluZGVycyIsImNoYW5nZU1vZGUiLCJjaGVja0lmQ29tbWVudENoYW5nZWQiLCJuZXdjb21tZW50Iiwib2xkY29tbWVudCIsImNhbmNlbENvbW1lbnQiLCJzYXZlQ29tbWVudCIsIm5ld0NvbW1lbnQiLCJjb21tZW50cyIsImhhbmRsZUNvbW1lbnQiLCJwcmV2ZW50RGVmYXVsdCIsInJlYWR5VG9EaXNwbGF5Q2hlY2tlciIsImdldExleGljb25EYXRhXyIsImxleGljb25JZCIsImVudHJ5SWQiLCJsZXhpY29uRGF0YSIsIm9uQ2xvc2VQb3BvdmVyIiwic2hvd1BvcG92ZXIiLCJ0aXRsZSIsImJvZHlUZXh0IiwicG9zaXRpb25Db29yZCIsInRvZ2dsZUhlbHBzTW9kYWwiLCJfc2hvd0hlbHBzTW9kYWwiLCJ0b2dnbGVIZWxwcyIsIl9zaG93SGVscHMiLCJzYXZlQmlibGVUb0tleSIsImtleUdyb3VwIiwib2xkVmVyc2VUZXh0IiwiX2JpYmxlcyIsIl90YXJnZXRCaWJsZSIsInRhcmdldEJvb2siLCJ0YXJnZXRDaGFwdGVyIiwiY29udmVydFZlcnNlRGF0YVRvVVNGTSIsImN1cnJlbnRDaGFwdGVyRGF0YSIsImN1cnJlbnRWZXJzZURhdGEiLCJfQWxpZ25tZW50SGVscGVycyR1cGQiLCJBbGlnbm1lbnRIZWxwZXJzIiwidXBkYXRlQWxpZ25tZW50c1RvVGFyZ2V0VmVyc2UiLCJ0YXJnZXRWZXJzZU9iamVjdHMiLCJ2ZXJzZU9iamVjdHMiLCJ1cGRhdGVTZXR0aW5ncyIsInJlbW92ZVVzZm1NYXJrZXJzIiwidmVyc2VFZGl0cyIsInZhbGlkYXRlQWxsU2VsZWN0aW9uc0ZvclZlcnNlIiwiX2N1cnJlbnRDaGVjayRjb250ZXh0IiwiX2NoZWNrJGNvbnRleHRJZCIsImN1cnJlbnRDaGVja0lkIiwiY2hlY2tJZCIsIm5ld0JpYmxlcyIsIl90YXJnZXRCaWJsZSRtYW5pZmVzdCIsIl90YXJnZXRCaWJsZSRtYW5pZmVzdDIiLCJfaXRlcmF0b3IyIiwiX3N0ZXAyIiwiYmlibGUiLCJOVF9PUklHX0xBTkciLCJPVF9PUklHX0xBTkciLCJpbml0aWFsUGFuZVNldHRpbmdzIiwibGFuZ0tleSIsInBhbmUiLCJsYW5ndWFnZV9uYW1lIiwiZHVibGluX2NvcmUiLCJsYW5ndWFnZSIsIl9nZXRTY3JpcHR1cmVGcm9tUmVmZXJlbmNlIiwibGFuZyIsImdldFNjcmlwdHVyZUZyb21SZWZlcmVuY2UiLCJ0YXJnZXRfbGFuZ3VhZ2UiLCJwcm9qZWN0IiwiZXhwYW5kZWRTY3JpcHR1cmVQYW5lVGl0bGUiLCJzdHlsZVByb3BzIiwiX2NoZWNrZXJTdHlsZXMiLCJjcmVhdGVFbGVtZW50Iiwic3R5bGUiLCJjaGFuZ2VDdXJyZW50Q29udGV4dElkIiwiY29tcGxleFNjcmlwdEZvbnRzIiwiY3VycmVudFBhbmVTZXR0aW5ncyIsImVkaXRWZXJzZVJlZiIsImdldEF2YWlsYWJsZVNjcmlwdHVyZVBhbmVTZWxlY3Rpb25zIiwibWFrZVN1cmVCaWJsZXNMb2FkZWRGb3JUb29sIiwicHJvamVjdERldGFpbHNSZWR1Y2VyIiwib25FeHBhbmRlZFNjcmlwdHVyZVBhbmVTaG93Iiwib25MaW5rQ2xpY2siLCJvblNlZU1vcmVDbGljayIsInBocmFzZSIsInNlZU1vcmVMYWJlbCIsInNob3dTZWVNb3JlQnV0dG9uIiwiZGlhbG9nTW9kYWxWaXNpYmlsaXR5IiwiaGFuZGxlT3BlbkRpYWxvZyIsImhhbmRsZUNsb3NlRGlhbG9nIiwiaGFuZGxlU2tpcCIsImxvY2FsTm90aGluZ1RvU2VsZWN0Iiwic2F2ZVNlbGVjdGlvbiIsInRhZ3MiLCJtb2RhbEFydGljbGUiLCJleHBhbmRlZEhlbHBzQnV0dG9uSG92ZXJUZXh0IiwibW9kYWxUaXRsZSIsImlzU2hvd0hlbHBzRXhwYW5kZWQiLCJvcGVuRXhwYW5kZWRIZWxwc01vZGFsIiwic2lkZWJhclRvZ2dsZSIsImlzU2hvd0hlbHBzU2lkZWJhciIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsIm9iamVjdCIsImFycmF5IiwiZnVuYyIsImlzUmVxdWlyZWQiLCJzdHJpbmciLCJib29sIiwiX2RlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tcG9uZW50cy9DaGVja2VyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlxuLyoqXG4gKiBAZmlsZSBDaGVja2VyLmpzXG4gKlxuICogQHN5bm9wc2lzXG4gKiBUaGlzIGlzIHRoZSBtYWluIGNoZWNraW5nIGNvbXBvbmVudCB0aGF0IHByb3ZpZGVzIGFuIGludGVncmF0ZWQgaW50ZXJmYWNlIGZvciBCaWJsZSB0cmFuc2xhdGlvbiBjaGVja2luZy5cbiAqIEl0IHN1cHBvcnRzIGJvdGggVHJhbnNsYXRpb24gTm90ZXMgKFROKSBhbmQgVHJhbnNsYXRpb24gV29yZHMgKFRXKSBjaGVja2luZyB3b3JrZmxvd3MuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBUaGUgQ2hlY2tlciBjb21wb25lbnQgaXMgYSBjb21wcmVoZW5zaXZlIHRvb2wgZm9yIG1hbmFnaW5nIGFuZCBwcmVzZW50aW5nIEJpYmxlIGNoZWNraW5nIGRhdGEgYW5kIHRyYW5zbGF0aW9ucy5cbiAqIEl0IGhhbmRsZXM6XG4gKiAtIExvYWRpbmcgYW5kIGRpc3BsYXlpbmcgY2hlY2tpbmcgZGF0YSAodHJhbnNsYXRpb24gbm90ZXMgb3IgdHJhbnNsYXRpb24gd29yZHMpXG4gKiAtIE1hbmFnaW5nIHVzZXIgc2VsZWN0aW9ucyBhbmQgYW5ub3RhdGlvbnMgaW4gdmVyc2VzXG4gKiAtIFByb3ZpZGluZyBtdWx0aS1wYW5lIFNjcmlwdHVyZSB2aWV3aW5nIHdpdGggdmFyaW91cyBCaWJsZSByZXNvdXJjZXNcbiAqIC0gSGFuZGxpbmcgdmVyc2UgZWRpdGluZyBhbmQgdmFsaWRhdGlvblxuICogLSBNYW5hZ2luZyBjb21tZW50cywgYm9va21hcmtzLCBhbmQgdGFncyBmb3IgY2hlY2tzXG4gKiAtIE5hdmlnYXRpbmcgYmV0d2VlbiBjaGVja3MgKG5leHQvcHJldmlvdXMpXG4gKiAtIERpc3BsYXlpbmcgdHJhbnNsYXRpb24gaGVscHMgaW4gYW4gaW50ZWdyYXRlZCBzaWRlYmFyXG4gKiAtIFBlcnNpc3RpbmcgdXNlciBzZXR0aW5ncyBhbmQgY2hlY2tpbmcgcHJvZ3Jlc3NcbiAqXG4gKiBUaGUgY29tcG9uZW50IG1haW50YWlucyBjb21wbGV4IHN0YXRlIGluY2x1ZGluZzpcbiAqIC0gQ3VycmVudCBjaGVjayBkYXRhIGFuZCBjb250ZXh0XG4gKiAtIFVzZXIgc2VsZWN0aW9ucyBhbmQgdGVtcG9yYXJ5IGNoYW5nZXNcbiAqIC0gUGFuZSBzZXR0aW5ncyBmb3IgU2NyaXB0dXJlIGRpc3BsYXlcbiAqIC0gVG9vbC1zcGVjaWZpYyBzZXR0aW5nc1xuICogLSBVSSBzdGF0ZSAobW9kZXMsIG1vZGFscywgcG9wb3ZlcnMpXG4gKlxuICogQHJlcXVpcmVtZW50c1xuICogLSBSZWFjdCAxOC4zLjErXG4gKiAtIHdvcmQtYWxpZ25lci1saWIgZm9yIHZlcnNlIGFuZCBhbGlnbm1lbnQgaGVscGVyc1xuICogLSBkZWVwLWVxdWFsIGZvciBvYmplY3QgY29tcGFyaXNvblxuICogLSBsb2Rhc2ggZm9yIGRlZXAgY2xvbmluZ1xuICogLSBNYXRlcmlhbC1VSSBjb21wb25lbnRzIGZvciBVSSBlbGVtZW50c1xuICpcbiAqIEBkZXBlbmRlbmNpZXNcbiAqIC0gR3JvdXBNZW51Q29tcG9uZW50OiBOYXZpZ2F0aW9uIG1lbnUgZm9yIGNoZWNrc1xuICogLSBDaGVja0luZm9DYXJkOiBEaXNwbGF5cyBjaGVjayB0aXRsZSBhbmQgcGhyYXNlXG4gKiAtIFNjcmlwdHVyZVBhbmU6IE11bHRpLXBhbmUgU2NyaXB0dXJlIHZpZXdlclxuICogLSBUcmFuc2xhdGlvbkhlbHBzOiBTaWRlYmFyIGZvciB0cmFuc2xhdGlvbiBoZWxwIGFydGljbGVzXG4gKiAtIFZlcnNlQ2hlY2s6IE1haW4gY2hlY2tpbmcgaW50ZXJmYWNlIGZvciB2ZXJzZXNcbiAqIC0gUG9wb3ZlckNvbnRhaW5lcjogRGlzcGxheXMgY29udGV4dHVhbCBpbmZvcm1hdGlvblxuICovXG5pbXBvcnQgeyByZW1vdmVVc2ZtTWFya2VycyB9IGZyb20gJy4uL3V0aWxzL3VzZm1IZWxwZXJzJ1xuaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcydcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCdcbmltcG9ydCBHcm91cE1lbnVDb21wb25lbnQgZnJvbSAnLi9Hcm91cE1lbnVDb21wb25lbnQnXG5pbXBvcnQge1xuICBncm91cERhdGFIZWxwZXJzLFxuICBzZWxlY3Rpb25zSGVscGVycyxcbiAgVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycyxcbiAgdmVyc2VIZWxwZXJzLFxuICBBbGlnbm1lbnRIZWxwZXJzLFxuICBcbn0gZnJvbSAnd29yZC1hbGlnbmVyLWxpYidcbmltcG9ydCBpc0VxdWFsIGZyb20gJ2RlZXAtZXF1YWwnXG5pbXBvcnQge1xuICBmaW5kQ2hlY2ssXG4gIGZpbmROZXh0Q2hlY2ssXG4gIGZpbmRQcmV2aW91c0NoZWNrLFxuICBnZXRBbGlnbmVkR0xUZXh0LFxuICBnZXRQaHJhc2VGcm9tVHcsXG4gIGdldFRpdGxlRnJvbUluZGV4LFxuICBcbiAgcGFyc2VUd1RvSW5kZXhcbn0gZnJvbSAnLi4vaGVscGVycy90cmFuc2xhdGlvbkhlbHBzL3R3QXJ0aWNsZUhlbHBlcnMnXG5pbXBvcnQgQ2hlY2tJbmZvQ2FyZCBmcm9tICcuLi90Y191aV90b29sa2l0L0NoZWNrSW5mb0NhcmQnXG5pbXBvcnQgeyBwYXJzZVRuVG9JbmRleCB9IGZyb20gJy4uL2hlbHBlcnMvdHJhbnNsYXRpb25IZWxwcy90bkFydGljbGVIZWxwZXJzJ1xuaW1wb3J0IFNjcmlwdHVyZVBhbmUgZnJvbSAnLi4vdGNfdWlfdG9vbGtpdC9TY3JpcHR1cmVQYW5lJ1xuaW1wb3J0IFBvcG92ZXJDb250YWluZXIgZnJvbSAnLi4vY29udGFpbmVycy9Qb3BvdmVyQ29udGFpbmVyJ1xuaW1wb3J0IHsgTlRfT1JJR19MQU5HLCBPVF9PUklHX0xBTkcgfSBmcm9tICcuLi9jb21tb24vQm9va3NPZlRoZUJpYmxlJ1xuaW1wb3J0IGNvbXBsZXhTY3JpcHRGb250cyBmcm9tICcuLi9jb21tb24vY29tcGxleFNjcmlwdEZvbnRzJ1xuaW1wb3J0IFRyYW5zbGF0aW9uSGVscHMgZnJvbSAnLi4vdGNfdWlfdG9vbGtpdC9UcmFuc2xhdGlvbkhlbHBzJ1xuaW1wb3J0ICogYXMgdEhlbHBzSGVscGVycyBmcm9tICcuLi9oZWxwZXJzL3RIZWxwc0hlbHBlcnMnXG5pbXBvcnQgVmVyc2VDaGVjayBmcm9tICcuLi90Y191aV90b29sa2l0L1ZlcnNlQ2hlY2snXG5pbXBvcnQgeyBnZXRTY3JpcHR1cmVGcm9tUmVmZXJlbmNlIH0gZnJvbSAnLi4vaGVscGVycy9jaGVja0luZm9DYXJkSGVscGVycydcblxuY29uc3QgbG9jYWxTdHlsZXMgPSB7XG4gIGNvbnRhaW5lckRpdjp7XG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGZsZXhEaXJlY3Rpb246ICdyb3cnLFxuICAgIHdpZHRoOiAnOTd2dycsXG4gICAgaGVpZ2h0OiAnNjV2dycsXG4gIH0sXG4gIGNlbnRlckRpdjoge1xuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICB3aWR0aDogJzg1JScsXG4gICAgb3ZlcmZsb3dYOiAnYXV0bycsXG4gICAgbWFyZ2luTGVmdDogJzEwcHgnLFxuICB9LFxuICBzY3JpcHR1cmVQYW5lRGl2OiB7XG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGZsZXhTaHJpbms6ICcwJyxcbiAgICBoZWlnaHQ6ICcyNTBweCcsXG4gICAgcGFkZGluZ0JvdHRvbTogJzIwcHgnLFxuICB9LFxufTtcblxuZXhwb3J0IGNvbnN0IHRyYW5zbGF0aW9uV29yZHMgPSAndHJhbnNsYXRpb25Xb3JkcydcbmV4cG9ydCBjb25zdCB0cmFuc2xhdGlvbk5vdGVzID0gJ3RyYW5zbGF0aW9uTm90ZXMnXG5jb25zdCBtYXhpbXVtU2VsZWN0aW9ucyA9IDEwXG5cbmNvbnNvbGUubG9nKCdDaGVja2VyLmpzIC0gc3RhcnR1cCcpXG5jb25zdCBuYW1lID0gJ0NoZWNrZXInXG5cbi8qKlxuICogQG5hbWVzcGFjZSBDaGVja2VyXG4gKiBUaGUgQ2hlY2tlciBjb21wb25lbnQgaXMgcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIGFuZCBwcmVzZW50aW5nIEJpYmxlIGNoZWNraW5nIGRhdGEgYW5kIHRyYW5zbGF0aW9ucy5cbiAqIEl0IGhhbmRsZXMgc3RhdGUgdXBkYXRlcywgc2V0dGluZ3MgbWFuYWdlbWVudCwgYW5kIGVuc3VyZXMgdGhlIG5lY2Vzc2FyeSBkYXRhIGlzIGxvYWRlZCBhbmQgZGlzcGxheWVkIHRvIHRoZSB1c2VyLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBwYXJhbWV0ZXJzIC0gQW4gb2JqZWN0IHdpdGggaW5pdGlhbGl6YXRpb24gcGFyYW1ldGVycyBmb3IgdGhlIENoZWNrZXIgY29tcG9uZW50LlxuICogQHBhcmFtIHtvYmplY3R9IHBhcmFtZXRlcnMuYWxpZ25lZEdsQmlibGUgLSBUaGUgYWxpZ25lZCBHYXRld2F5IExhbmd1YWdlIEJpYmxlIGRhdGEgdXNlZCBmb3IgdHJhbnNsYXRpb25zLlxuICogQHBhcmFtIHtvYmplY3R9IHBhcmFtZXRlcnMuYmlibGVzIC0gQmlibGUgZGF0YSBmb3IgdmFyaW91cyBsYW5ndWFnZXMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBwYXJhbWV0ZXJzLmNoYW5nZWRDdXJyZW50Q2hlY2sgLSBjYWxsYmFjayB0byBub3RpZnkgb2YgY2hhbmdlcyBpbiBjb250ZXh0LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcGFyYW1ldGVycy5jaGFuZ2VUYXJnZXRWZXJzZSAtIEEgZnVuY3Rpb24gdG8gdXBkYXRlIHRoZSBjdXJyZW50IHZlcnNlIGJlaW5nIGNoZWNrZWQuXG4gKiBAcGFyYW0ge29iamVjdH0gcGFyYW1ldGVycy5jaGVja2luZ0RhdGEgLSBEYXRhIHJlbGF0ZWQgdG8gY2hlY2tzIChlLmcuLCB0cmFuc2xhdGlvbiBub3RlcyBvciB0cmFuc2xhdGlvbiB3b3JkcykuXG4gKiBAcGFyYW0ge3N0cmluZ30gcGFyYW1ldGVycy5jaGVja1R5cGUgLSBUaGUgdHlwZSBvZiBjaGVjayBiZWluZyBwZXJmb3JtZWQgKGUuZy4sIHRyYW5zbGF0aW9uIG5vdGVzLCB0cmFuc2xhdGlvbiB3b3JkcykuXG4gKiBAcGFyYW0ge29iamVjdH0gcGFyYW1ldGVycy5jb250ZXh0SWQgLSBPYmplY3QgY29udGFpbmluZyBtZXRhZGF0YSBhYm91dCB0aGUgY3VycmVudCBncm91cC92ZXJzZSBiZWluZyB3b3JrZWQgb24uXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBwYXJhbWV0ZXJzLmdldExleGljb25EYXRhIC0gRnVuY3Rpb24gdG8gcmV0cmlldmUgbGV4aWNvbiBkYXRhLlxuICogQHBhcmFtIHtvYmplY3R9IHBhcmFtZXRlcnMuZ2xXb3Jkc0RhdGEgLSBEYXRhIHJlbGF0ZWQgdG8gR2F0ZXdheSBMYW5ndWFnZSB3b3JkcyBhbmQgYWxpZ25tZW50IGluZm9ybWF0aW9uLlxuICogQHBhcmFtIHtvYmplY3R9IHBhcmFtZXRlcnMuaW5pdGlhbFNldHRpbmdzIC0gVGhlIGluaXRpYWwgY29uZmlndXJhdGlvbiB2YWx1ZXMgZm9yIHRoZSBDaGVja2VyIGNvbXBvbmVudC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHBhcmFtZXRlcnMuc2F2ZUNoZWNraW5nRGF0YSAtIEZ1bmN0aW9uIHRvIHNhdmUgdGhlIG1vZGlmaWVkIGNoZWNraW5nIGRhdGEuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBwYXJhbWV0ZXJzLnNhdmVTZXR0aW5ncyAtIEZ1bmN0aW9uIHRvIHBlcnNpc3QgdXNlcidzIGNvbXBvbmVudCBzZXR0aW5ncy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHBhcmFtZXRlcnMuc2hvd0RvY3VtZW50IC0gRnVuY3Rpb24gdG8gZGlzcGxheSBhIGRvY3VtZW50IGluIHRoZSBpbnRlcmZhY2UuXG4gKiBAcGFyYW0ge29iamVjdH0gcGFyYW1ldGVycy5zdHlsZXMgLSBTdHlsaW5nIGluZm9ybWF0aW9uIHRvIGN1c3RvbWl6ZSB0aGUgY29tcG9uZW50J3MgYXBwZWFyYW5jZS5cbiAqIEBwYXJhbSB7b2JqZWN0fSBwYXJhbWV0ZXJzLnRhcmdldEJpYmxlIC0gVGhlIHRhcmdldCBCaWJsZSBkYXRhIGZvciB0aGUgd29ya2luZyBsYW5ndWFnZS5cbiAqIEBwYXJhbSB7b2JqZWN0fSBwYXJhbWV0ZXJzLnRhcmdldExhbmd1YWdlRGV0YWlscyAtIE1ldGFkYXRhIGFib3V0IHRoZSB0YXJnZXQgbGFuZ3VhZ2UsIGluY2x1ZGluZyBib29rIGFuZCBsYW5ndWFnZS1zcGVjaWZpYyBkZXRhaWxzLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcGFyYW1ldGVycy50cmFuc2xhdGUgLSBBIGZ1bmN0aW9uIHVzZWQgZm9yIHN0cmluZyB0cmFuc2xhdGlvbnMgaW4gdGhlIFVJLlxuICovXG5jb25zdCBDaGVja2VyID0gKHtcbiAgYWxpZ25lZEdsQmlibGUsXG4gIGJpYmxlczogYmlibGVzXyxcbiAgY2hhbmdlZEN1cnJlbnRDaGVjayxcbiAgY2hhbmdlVGFyZ2V0VmVyc2UsXG4gIGNoZWNraW5nRGF0YSxcbiAgY2hlY2tUeXBlLFxuICBjb250ZXh0SWQsXG4gIGdldExleGljb25EYXRhLFxuICBnbFdvcmRzRGF0YSxcbiAgaW5pdGlhbFNldHRpbmdzLFxuICBzYXZlQ2hlY2tpbmdEYXRhLFxuICBzYXZlU2V0dGluZ3MsXG4gIHNob3dEb2N1bWVudCxcbiAgc3R5bGVzLFxuICB0YXJnZXRCaWJsZTogdGFyZ2V0QmlibGVfLFxuICB0YXJnZXRMYW5ndWFnZURldGFpbHMsXG4gIHRyYW5zbGF0ZSxcbn0pID0+IHtcbiAgLy8gTWFpbiBzZXR0aW5ncyBzdGF0ZSAtIGluY2x1ZGVzIHBhbmUgY29uZmlndXJhdGlvbiwgdG9vbCBzZXR0aW5ncywgYW5kIG1hbmlmZXN0IGRhdGFcbiAgY29uc3QgW3NldHRpbmdzLCBfc2V0U2V0dGluZ3NdID0gdXNlU3RhdGUoe1xuICAgIHBhbmVTZXR0aW5nczogW10sXG4gICAgcGFuZUtleVNldHRpbmdzOiB7fSxcbiAgICB0b29sc1NldHRpbmdzOiB7fSxcbiAgICBtYW5pZmVzdDoge31cbiAgfSlcbiAgY29uc3Qge1xuICAgIHBhbmVTZXR0aW5ncyxcbiAgICBwYW5lS2V5U2V0dGluZ3MsXG4gICAgdG9vbHNTZXR0aW5ncyxcbiAgICBtYW5pZmVzdFxuICB9ID0gc2V0dGluZ3NcblxuICAvLyBCaWJsZSBkYXRhIG9yZ2FuaXplZCBieSBsYW5ndWFnZSBhbmQgSURcbiAgY29uc3QgW2JpYmxlcywgc2V0QmlibGVzXSA9IHVzZVN0YXRlKHsgfSlcblxuICAvLyBDdXJyZW50IHRhcmdldCBCaWJsZSBiZWluZyBjaGVja2VkXG4gIGNvbnN0IFt0YXJnZXRCaWJsZSwgc2V0VGFyZ2V0QmlibGVdID0gdXNlU3RhdGUodGFyZ2V0QmlibGVfKVxuXG4gIC8vIFRlbXBvcmFyeSBjaGVja2luZyBkYXRhIGZvciB1bnNhdmVkIGNoYW5nZXNcbiAgY29uc3QgW3RlbXBDaGVja2luZ0RhdGEsIHNldFRlbXBDaGVja2luZ0RhdGFdID0gdXNlU3RhdGUobnVsbClcblxuICAvLyBMb2NhbCBjaGVja2luZyBkYXRhIGZvciBjdXJyZW50IHNlc3Npb25cbiAgY29uc3QgW2xvY2FsQ2hlY2tpbmdEYXRhLCBzZXRMb2NhbENoZWNraW5nRGF0YV0gPSB1c2VTdGF0ZShudWxsKVxuXG4gIC8vIE1haW4gY29tcG9uZW50IHN0YXRlXG4gIGNvbnN0IFtzdGF0ZSwgX3NldFN0YXRlXSA9IHVzZVN0YXRlKHtcbiAgICBhbGlnbmVkR0xUZXh0OiAnJywgLy8gR2F0ZXdheSBMYW5ndWFnZSB0ZXh0IGFsaWduZWQgdG8gb3JpZ2luYWxcbiAgICBhcnRpY2xlOiBudWxsLCAvLyBDdXJyZW50IHRyYW5zbGF0aW9uIGhlbHAgYXJ0aWNsZVxuICAgIGN1cnJlbnRDaGVjazogbnVsbCwgLy8gQ3VycmVudCBjaGVjayBiZWluZyB3b3JrZWQgb25cbiAgICBjdXJyZW50Q2hlY2tpbmdEYXRhOiBudWxsLCAvLyBBbGwgY2hlY2tpbmcgZGF0YSBmb3IgY3VycmVudCBib29rXG4gICAgZ3JvdXBUaXRsZTogJycsIC8vIFRpdGxlIG9mIGN1cnJlbnQgY2hlY2sgZ3JvdXBcbiAgICBncm91cFBocmFzZTogJycsIC8vIFBocmFzZSBvciBvY2N1cnJlbmNlIG5vdGUgZm9yIGN1cnJlbnQgY2hlY2tcbiAgICBncm91cHNEYXRhOiBudWxsLCAvLyBGbGF0dGVuZWQgZ3JvdXAgZGF0YSBmb3IgYWxsIGNoZWNrc1xuICAgIGdyb3Vwc0luZGV4OiBudWxsLCAvLyBJbmRleCBvZiBhbGwgY2hlY2sgZ3JvdXBzXG4gICAgaXNDb21tZW50Q2hhbmdlZDogZmFsc2UsIC8vIFdoZXRoZXIgY29tbWVudCBoYXMgdW5zYXZlZCBjaGFuZ2VzXG4gICAgaXNWZXJzZUNoYW5nZWQ6IGZhbHNlLCAvLyBXaGV0aGVyIHZlcnNlIGhhcyB1bnNhdmVkIGNoYW5nZXNcbiAgICBtb2RlOiAnZGVmYXVsdCcsIC8vIEN1cnJlbnQgVUkgbW9kZSAoZGVmYXVsdCwgc2VsZWN0LCBlZGl0LCBjb21tZW50KVxuICAgIG5ld1ZlcnNlVGV4dDogbnVsbCwgLy8gTmV3IHZlcnNlIHRleHQgZHVyaW5nIGVkaXRpbmdcbiAgICBwb3BvdmVyUHJvcHM6IHtcbiAgICAgIHBvcG92ZXJWaXNpYmlsaXR5OiBmYWxzZVxuICAgIH0sXG4gICAgc2hvd0hlbHBzTW9kYWw6IGZhbHNlLCAvLyBXaGV0aGVyIGhlbHBzIG1vZGFsIGlzIHNob3duXG4gICAgc2hvd0hlbHBzOiB0cnVlLCAvLyBXaGV0aGVyIGhlbHBzIHNpZGViYXIgaXMgc2hvd25cbiAgICBuZXdUYWdzOiBudWxsLCAvLyBOZXcgdGFncyBiZWluZyBhZGRlZFxuICAgIHZlcnNlVGV4dDogJycsIC8vIEN1cnJlbnQgdmVyc2UgdGV4dFxuICB9KVxuXG4gIGNvbnN0IHtcbiAgICBhbGlnbmVkR0xUZXh0LFxuICAgIGFydGljbGUsXG4gICAgY3VycmVudENoZWNrLFxuICAgIGN1cnJlbnRDaGVja2luZ0RhdGEsXG4gICAgZ3JvdXBUaXRsZSxcbiAgICBncm91cFBocmFzZSxcbiAgICBncm91cHNEYXRhLFxuICAgIGdyb3Vwc0luZGV4LFxuICAgIGlzQ29tbWVudENoYW5nZWQsXG4gICAgaXNWZXJzZUNoYW5nZWQsXG4gICAgbW9kZSxcbiAgICBuZXdWZXJzZVRleHQsXG4gICAgcG9wb3ZlclByb3BzLFxuICAgIHNob3dIZWxwc01vZGFsLFxuICAgIHNob3dIZWxwcyxcbiAgICBuZXdUYWdzLFxuICAgIHZlcnNlVGV4dCxcbiAgfSA9IHN0YXRlXG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIHN0YXRlIG9iamVjdCB3aXRoIG5ldyB2YWx1ZXNcbiAgICogQHBhcmFtIHtvYmplY3R9IG5ld1N0YXRlIC0gT2JqZWN0IGNvbnRhaW5pbmcgc3RhdGUgcHJvcGVydGllcyB0byB1cGRhdGVcbiAgICovXG4gIGZ1bmN0aW9uIHNldFN0YXRlKG5ld1N0YXRlKSB7XG4gICAgX3NldFN0YXRlKHByZXZTdGF0ZSA9PiAoeyAuLi5wcmV2U3RhdGUsIC4uLm5ld1N0YXRlIH0pKVxuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGN1cnJlbnQgc2F2ZWQgdmFsdWUgZm9yIGEgY2hlY2sgcHJvcGVydHlcbiAgICogRmFsbHMgYmFjayB0byBsb2NhbCBjaGVja2luZyBkYXRhIGlmIGF2YWlsYWJsZVxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IC0gUHJvcGVydHkgbmFtZVxuICAgKiBAcmV0dXJucyB7Kn0gQ3VycmVudCB2YWx1ZVxuICAgKi9cbiAgZnVuY3Rpb24gZ2V0Q3VycmVudFZhbHVlRm9yKGtleSkge1xuICAgIGlmIChsb2NhbENoZWNraW5nRGF0YT8uaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgcmV0dXJuIGxvY2FsQ2hlY2tpbmdEYXRhW2tleV1cbiAgICB9XG4gICAgcmV0dXJuIGN1cnJlbnRDaGVjaz8uW2tleV1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSB0ZW1wb3JhcnkgKHVuc2F2ZWQpIHZhbHVlIGZvciBhIGNoZWNrIHByb3BlcnR5XG4gICAqIEZhbGxzIGJhY2sgdGhyb3VnaCBsb2NhbCBjaGVja2luZyBkYXRhIHRvIGN1cnJlbnQgY2hlY2tcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSAtIFByb3BlcnR5IG5hbWVcbiAgICogQHJldHVybnMgeyp9IFRlbXBvcmFyeSB2YWx1ZVxuICAgKi9cbiAgZnVuY3Rpb24gZ2V0VGVtcFZhbHVlRm9yKGtleSkge1xuICAgIGlmICh0ZW1wQ2hlY2tpbmdEYXRhPy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICByZXR1cm4gdGVtcENoZWNraW5nRGF0YVtrZXldXG4gICAgfVxuICAgIHJldHVybiBnZXRDdXJyZW50VmFsdWVGb3Ioa2V5KVxuICB9XG5cbiAgY29uc3QgY3VycmVudFNlbGVjdGlvbnMgPSBnZXRDdXJyZW50VmFsdWVGb3IoJ3NlbGVjdGlvbnMnKSB8fCBbXVxuICBjb25zdCB0ZW1wU2VsZWN0aW9ucyA9IGdldFRlbXBWYWx1ZUZvcignc2VsZWN0aW9ucycpIHx8IFtdXG4gIGNvbnN0IHRlbXBOb3RoaW5nVG9TZWxlY3QgPSBnZXRUZW1wVmFsdWVGb3IoJ25vdGhpbmdUb1NlbGVjdCcpXG4gIGNvbnN0IGN1cnJlbnROb3RoaW5nVG9TZWxlY3QgPSBnZXRDdXJyZW50VmFsdWVGb3IoJ25vdGhpbmdUb1NlbGVjdCcpXG4gIGNvbnN0IGdyb3Vwc0RhdGFMb2FkZWQgPSAhIWdyb3Vwc0RhdGFcblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgVUkgbW9kZSBiYXNlZCBvbiBzZWxlY3Rpb25zIHN0YXRlXG4gICAqIFN3aXRjaGVzIHRvICdzZWxlY3QnIG1vZGUgaWYgbm8gc2VsZWN0aW9ucyBhbmQgbm90aGluZyBpcyBtYXJrZWQgYXMgdW5zZWxlY3RhYmxlXG4gICAqIEBwYXJhbSB7QXJyYXl9IG5ld1NlbGVjdGlvbnMgLSBDdXJyZW50IHNlbGVjdGlvbnMgYXJyYXlcbiAgICogQHBhcmFtIHtib29sZWFufSBub3RoaW5nVG9TZWxlY3QgLSBXaGV0aGVyIHZlcnNlIGlzIG1hcmtlZCBhcyBoYXZpbmcgbm90aGluZyB0byBzZWxlY3RcbiAgICovXG4gIGZ1bmN0aW9uIHVwZGF0ZU1vZGVGb3JTZWxlY3Rpb25zKG5ld1NlbGVjdGlvbnMsIG5vdGhpbmdUb1NlbGVjdCkge1xuICAgIGNvbnN0IG5vU2VsZWN0aW9ucyA9ICghbmV3U2VsZWN0aW9ucz8ubGVuZ3RoKVxuICAgIGNvbnN0IG5ld01vZGUgPSBub1NlbGVjdGlvbnMgJiYgIW5vdGhpbmdUb1NlbGVjdCA/ICdzZWxlY3QnIDogJ2RlZmF1bHQnXG4gICAgc2V0U3RhdGUoe1xuICAgICAgbW9kZTogbmV3TW9kZVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogRWZmZWN0IGhvb2sgdG8gaW5pdGlhbGl6ZSBjaGVja2luZyBkYXRhIHdoZW4gY2hlY2tpbmdEYXRhIG9yIGdsV29yZHNEYXRhIGNoYW5nZXNcbiAgICogRmxhdHRlbnMgZ3JvdXAgZGF0YSwgY3JlYXRlcyBpbmRleCwgZmluZHMgaW5pdGlhbCBjaGVjaywgYW5kIHZhbGlkYXRlcyBhbGwgY2hlY2tzXG4gICAqL1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGhhdmVEYXRhID0gY2hlY2tpbmdEYXRhICYmIE9iamVjdC5rZXlzKGNoZWNraW5nRGF0YSkubGVuZ3RoICYmIGdsV29yZHNEYXRhICYmIE9iamVjdC5rZXlzKGdsV29yZHNEYXRhKS5sZW5ndGhcbiAgICBjb25zdCBncm91cHNEYXRhSW5pdGlhbGl6ZWQgPSBncm91cHNEYXRhICYmIE9iamVjdC5rZXlzKGdyb3Vwc0RhdGEpLmxlbmd0aFxuICAgIGlmIChoYXZlRGF0YSAmJiAhZ3JvdXBzRGF0YUluaXRpYWxpemVkKSB7XG4gICAgICBsZXQgZmxhdHRlbmVkR3JvdXBEYXRhID0gbnVsbFxuICAgICAgbGV0IGdyb3Vwc0luZGV4ID0gbnVsbFxuICAgICAgaWYgKGNoZWNraW5nRGF0YSkge1xuICAgICAgICBmbGF0dGVuZWRHcm91cERhdGEgPSBncm91cERhdGFIZWxwZXJzLmZsYXR0ZW5Hcm91cERhdGEoY2hlY2tpbmdEYXRhKVxuICAgICAgfVxuXG4gICAgICBpZiAoZ2xXb3Jkc0RhdGEpIHtcbiAgICAgICAgaWYgKGNoZWNrVHlwZSA9PT0gdHJhbnNsYXRpb25Ob3Rlcykge1xuICAgICAgICAgIGdyb3Vwc0luZGV4ID0gcGFyc2VUblRvSW5kZXgoZ2xXb3Jkc0RhdGEpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZ3JvdXBzSW5kZXggPSBwYXJzZVR3VG9JbmRleChnbFdvcmRzRGF0YSlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCBjaGVjayA9IGZpbmRDaGVjayhmbGF0dGVuZWRHcm91cERhdGEsIGNvbnRleHRJZCwgdHJ1ZSlcbiAgICAgIGNvbnN0IG5ld1N0YXRlID0ge1xuICAgICAgICBncm91cHNEYXRhOiBmbGF0dGVuZWRHcm91cERhdGEsXG4gICAgICAgIGdyb3Vwc0luZGV4LFxuICAgICAgICBjdXJyZW50Q2hlY2tpbmdEYXRhOiBjaGVja2luZ0RhdGEsXG4gICAgICAgIGN1cnJlbnRDaGVjazogY2hlY2ssXG4gICAgICAgIG1vZGlmaWVkOiBmYWxzZSxcbiAgICAgICAgaXNDb21tZW50Q2hhbmdlZDogZmFsc2UsXG4gICAgICB9XG5cbiAgICAgIC8vIHZhbGlkYXRlIGFsbCBjaGVja3NcbiAgICAgIHNlbGVjdGlvbnNIZWxwZXJzLnZhbGlkYXRlU2VsZWN0aW9uc0ZvckFsbENoZWNrcyh0YXJnZXRCaWJsZSwgZmxhdHRlbmVkR3JvdXBEYXRhLCAoY2hlY2ssIGludmFsaWRhdGVkKSA9PiB7XG4gICAgICAgIGlmIChjaGVjaykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGAke25hbWV9LXNhdmVFZGl0VmVyc2UgLSBjaGVjayB2YWxpZGF0aW9uIGNoYW5nZWRgLCBjaGVjaylcbiAgICAgICAgICBfc2F2ZUNoZWNraW5nRGF0YShjaGVjaywgeyBpbnZhbGlkYXRlZCB9KVxuICAgICAgICB9XG4gICAgICB9KVxuXG4gICAgICBzZXRTdGF0ZShuZXdTdGF0ZSlcblxuICAgICAgaWYgKGZsYXR0ZW5lZEdyb3VwRGF0YSAmJiBjaGVjaz8uY29udGV4dElkKSB7XG4gICAgICAgIHVwZGF0ZUNvbnRleHQoY2hlY2ssIGdyb3Vwc0luZGV4KVxuICAgICAgICB1cGRhdGVNb2RlRm9yU2VsZWN0aW9ucyhjaGVjaz8uc2VsZWN0aW9ucywgY2hlY2s/Lm5vdGhpbmdUb1NlbGVjdClcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtjb250ZXh0SWQsIGNoZWNraW5nRGF0YSwgZ2xXb3Jkc0RhdGFdKTtcblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgY29udGV4dCBhbmQgcmVsYXRlZCBkYXRhIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBjaGVjayBhbmQgZ3JvdXAgaW5kZXguXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBuZXdDaGVjayAtIFRoZSBuZXcgY2hlY2sgb2JqZWN0IGNvbnRhaW5pbmcgY29udGV4dCBpbmZvcm1hdGlvbi5cbiAgICogQHBhcmFtIHtPYmplY3R9IFtncm91cHNJbmRleF89Z3JvdXBzSW5kZXhdIC0gQW4gb3B0aW9uYWwgZ3JvdXAgaW5kZXggb2JqZWN0LCBkZWZhdWx0cyB0byB0aGUgZ2xvYmFsIHZhcmlhYmxlIGBncm91cHNJbmRleGAuXG4gICAqIEByZXR1cm4ge3ZvaWR9IERvZXMgbm90IHJldHVybiBhIHZhbHVlLiBVcGRhdGVzIHRoZSBzdGF0ZSBvZiB0aGUgYXBwbGljYXRpb24gd2l0aCBuZXcgY29udGV4dCBkYXRhLlxuICAgKi9cbiAgZnVuY3Rpb24gdXBkYXRlQ29udGV4dChuZXdDaGVjaywgZ3JvdXBzSW5kZXhfID0gZ3JvdXBzSW5kZXgpIHtcbiAgICBjb25zdCBjb250ZXh0SWQgPSBuZXdDaGVjaz8uY29udGV4dElkXG4gICAgY29uc3QgcmVmZXJlbmNlID0gY29udGV4dElkPy5yZWZlcmVuY2VcbiAgICBjb25zdCB2ZXJzZVRleHQgPSB2ZXJzZUhlbHBlcnMuZ2V0VmVyc2VUZXh0RnJvbUJpYmxlKHRhcmdldEJpYmxlLCByZWZlcmVuY2UpXG4gICAgY29uc3QgYWxpZ25lZEdMVGV4dCA9IGdldEFsaWduZWRHTFRleHQoYWxpZ25lZEdsQmlibGUsIGNvbnRleHRJZCk7XG4gICAgY29uc3QgZ3JvdXBUaXRsZSA9IGdldFRpdGxlRnJvbUluZGV4KGdyb3Vwc0luZGV4XywgY29udGV4dElkPy5ncm91cElkKVxuICAgIGNvbnN0IGdyb3VwUGhyYXNlID1cbiAgICAgIGNoZWNrVHlwZSA9PT0gdHJhbnNsYXRpb25Ob3Rlc1xuICAgICAgICA/IGNvbnRleHRJZD8ub2NjdXJyZW5jZU5vdGVcbiAgICAgICAgOiBnZXRQaHJhc2VGcm9tVHcoZ2xXb3Jkc0RhdGEsIGNvbnRleHRJZD8uZ3JvdXBJZClcblxuICAgIGxldCBncm91cERhdGFcbiAgICBpZiAoZ2xXb3Jkc0RhdGEpIHtcbiAgICAgIGlmIChjaGVja1R5cGUgPT09IHRyYW5zbGF0aW9uTm90ZXMpIHtcbiAgICAgICAgZ3JvdXBEYXRhID0ge1xuICAgICAgICAgIHRyYW5zbGF0ZToge1xuICAgICAgICAgICAgYXJ0aWNsZXM6IGdsV29yZHNEYXRhPy50cmFuc2xhdGVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGdyb3VwRGF0YSA9IHtcbiAgICAgICAgICAuLi5nbFdvcmRzRGF0YSxcbiAgICAgICAgICBtYW5pZmVzdDoge31cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBfYXJ0aWNsZVxuICAgIGNvbnN0IGFydGljbGVJZCA9IGNvbnRleHRJZD8uZ3JvdXBJZFxuICAgIGNvbnN0IGdyb3Vwc0lkcyA9IE9iamVjdC5rZXlzKGdyb3VwRGF0YSlcbiAgICBmb3IgKGNvbnN0IF9ncm91cElkIG9mIGdyb3Vwc0lkcykge1xuICAgICAgY29uc3QgZ3JvdXAgPSBncm91cERhdGFbX2dyb3VwSWRdXG4gICAgICBjb25zdCBhcnRpY2xlcyA9IGdyb3VwPy5hcnRpY2xlcyB8fCB7fVxuICAgICAgX2FydGljbGUgPSBhcnRpY2xlcz8uW2FydGljbGVJZF0gfHwgbnVsbFxuICAgICAgaWYgKF9hcnRpY2xlKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRBcnRpY2xlTWFya2Rvd24gPSB0SGVscHNIZWxwZXJzLmNvbnZlcnRNYXJrZG93bkxpbmtzKF9hcnRpY2xlLCBnYXRld2F5TGFuZ3VhZ2VJZCk7XG4gICAgICAgIF9hcnRpY2xlID0gY3VycmVudEFydGljbGVNYXJrZG93blxuICAgICAgICAvLyBjb25zdCB0SGVscHNNb2RhbE1hcmtkb3duID0gdEhlbHBzSGVscGVycy5jb252ZXJ0TWFya2Rvd25MaW5rcyhtb2RhbEFydGljbGUsIGdhdGV3YXlMYW5ndWFnZUNvZGUsIGFydGljbGVDYXRlZ29yeSk7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuXG4gICAgc2V0U3RhdGUoe1xuICAgICAgYWxpZ25lZEdMVGV4dCxcbiAgICAgIGN1cnJlbnRDaGVjazogbmV3Q2hlY2ssXG4gICAgICB2ZXJzZVRleHQsXG4gICAgICBncm91cFRpdGxlLFxuICAgICAgZ3JvdXBQaHJhc2UsXG4gICAgICBhcnRpY2xlOiBfYXJ0aWNsZVxuICAgIH0pXG4gIH1cblxuICBjb25zdCBjb21tZW50VGV4dCA9IGdldEN1cnJlbnRWYWx1ZUZvcignY29tbWVudHMnKSB8fCAnJ1xuICBjb25zdCBib29rSWQgPSB0YXJnZXRMYW5ndWFnZURldGFpbHM/LmJvb2s/LmlkXG4gIGNvbnN0IGJvb2tOYW1lID0gdGFyZ2V0TGFuZ3VhZ2VEZXRhaWxzPy5ib29rPy5uYW1lXG4gIGNvbnN0IGJvb2tEZXRhaWxzID0ge1xuICAgIGlkOiBib29rSWQsXG4gICAgbmFtZTogYm9va05hbWVcbiAgfTtcbiAgY29uc3QgZ2F0ZXdheUxhbmd1YWdlSWQgPSB0YXJnZXRMYW5ndWFnZURldGFpbHM/LmdhdGV3YXlMYW5ndWFnZUlkXG4gIGNvbnN0IHRhcmdldExhbmd1YWdlRm9udCA9IG1hbmlmZXN0Py5wcm9qZWN0Rm9udCB8fCAnJ1xuICBjb25zdCBjdXJyZW50Q29udGV4dElkID0gY3VycmVudENoZWNrPy5jb250ZXh0SWRcblxuICAvKipcbiAgICogVXBkYXRlcyB0b29sLXNwZWNpZmljIHNldHRpbmdzIGFuZCBwZXJzaXN0cyB0aGVtXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBOQU1FU1BBQ0UgLSBUb29sIG5hbWVzcGFjZSAoZS5nLiwgJ1NjcmlwdHVyZVBhbmUnKVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmllbGROYW1lIC0gU2V0dGluZyBmaWVsZCBuYW1lXG4gICAqIEBwYXJhbSB7Kn0gZmllbGRWYWx1ZSAtIFNldHRpbmcgdmFsdWVcbiAgICovXG4gIGNvbnN0IHNldFRvb2xTZXR0aW5ncyA9IChOQU1FU1BBQ0UsIGZpZWxkTmFtZSwgZmllbGRWYWx1ZSkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGAke25hbWV9LXNldFRvb2xTZXR0aW5ncyAke2ZpZWxkTmFtZX09JHtmaWVsZFZhbHVlfWApXG4gICAgaWYgKHRvb2xzU2V0dGluZ3MpIHtcbiAgICAgIC8vIERlZXAgY2xvbmluZyBvYmplY3QgdG8gYXZvaWQgbW9kaWZ5aW5nIG9yaWdpbmFsIG9iamVjdFxuICAgICAgY29uc3QgX3Rvb2xzU2V0dGluZ3MgPSB7IC4uLnRvb2xzU2V0dGluZ3MgfTtcbiAgICAgIGxldCBjb21wb25lbnRTZXR0aW5ncyA9IF90b29sc1NldHRpbmdzPy5bTkFNRVNQQUNFXVxuICAgICAgaWYgKCFjb21wb25lbnRTZXR0aW5ncykge1xuICAgICAgICBjb21wb25lbnRTZXR0aW5ncyA9IHsgfVxuICAgICAgICBfdG9vbHNTZXR0aW5nc1tOQU1FU1BBQ0VdID0gY29tcG9uZW50U2V0dGluZ3NcbiAgICAgIH1cbiAgICAgIGNvbXBvbmVudFNldHRpbmdzW2ZpZWxkTmFtZV0gPSBmaWVsZFZhbHVlXG4gICAgICBzZXRTZXR0aW5ncyh7IHRvb2xzU2V0dGluZ3M6IF90b29sc1NldHRpbmdzIH0sIHRydWUpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFBlcnNpc3RzIHNldHRpbmdzIHRvIHN0b3JhZ2UgYWZ0ZXIgcmVtb3ZpbmcgQmlibGUgZGF0YSB0byByZWR1Y2Ugc2l6ZVxuICAgKiBDcmVhdGVzIHNoYWxsb3cgY29waWVzIHRvIGF2b2lkIG1vZGlmeWluZyBvcmlnaW5hbCBvYmplY3RzXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBfc2V0dGluZ3MgLSBTZXR0aW5ncyBvYmplY3QgdG8gc2F2ZVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZnVuY3Rpb24gX3NhdmVTZXR0aW5ncyhfc2V0dGluZ3MpIHtcbiAgICBpZiAoc2F2ZVNldHRpbmdzICYmIF9zZXR0aW5ncykge1xuICAgICAgY29uc3QgbmV3U2V0dGluZ3MgPSB7IC4uLl9zZXR0aW5ncyB9XG4gICAgICBkZWxldGUgbmV3U2V0dGluZ3MubWFuaWZlc3RcbiAgICAgIGNvbnN0IF9wYW5lU2V0dGluZ3MgPSBbIC4uLm5ld1NldHRpbmdzLnBhbmVTZXR0aW5ncyBdXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IF9wYW5lU2V0dGluZ3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgX3BhbmVTZXR0aW5nID0gey4uLl9wYW5lU2V0dGluZ3NbaV19IC8vIHNoYWxsb3cgY29weVxuICAgICAgICBpZiAoX3BhbmVTZXR0aW5nPy5ib29rKSB7XG4gICAgICAgICAgZGVsZXRlIF9wYW5lU2V0dGluZy5ib29rIC8vIHJlbW92ZSBhbGwgdGhlIGJvb2sgZGF0YSBiZWZvcmUgc2F2aW5nXG4gICAgICAgIH1cbiAgICAgICAgX3BhbmVTZXR0aW5nc1tpXSA9IF9wYW5lU2V0dGluZ1xuICAgICAgfVxuICAgICAgbmV3U2V0dGluZ3MucGFuZVNldHRpbmdzID0gX3BhbmVTZXR0aW5nc1xuXG4gICAgICBjb25zdCBfcGFuZUtleVNldHRpbmdzID0geyAuLi5uZXdTZXR0aW5ncy5wYW5lS2V5U2V0dGluZ3MgfVxuICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKF9wYW5lS2V5U2V0dGluZ3MpXG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgICAgIGNvbnN0IF9wYW5lU2V0dGluZyA9IHsuLi5fcGFuZUtleVNldHRpbmdzW2tleV19IC8vIHNoYWxsb3cgY29weVxuICAgICAgICBpZiAoX3BhbmVTZXR0aW5nPy5ib29rKSB7XG4gICAgICAgICAgZGVsZXRlIF9wYW5lU2V0dGluZy5ib29rIC8vIHJlbW92ZSBhbGwgdGhlIGJvb2sgZGF0YSBiZWZvcmUgc2F2aW5nXG4gICAgICAgIH1cbiAgICAgICAgX3BhbmVLZXlTZXR0aW5nc1trZXldID0gX3BhbmVTZXR0aW5nXG4gICAgICB9XG4gICAgICBuZXdTZXR0aW5ncy5wYW5lS2V5U2V0dGluZ3MgPSBfcGFuZUtleVNldHRpbmdzXG5cbiAgICAgIHNhdmVTZXR0aW5ncyhuZXdTZXR0aW5ncylcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyBzZXR0aW5ncyBzdGF0ZSBhbmQgb3B0aW9uYWxseSBwZXJzaXN0cyB0aGVtXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBuZXdTZXR0aW5ncyAtIE5ldyBzZXR0aW5ncyB0byBtZXJnZVxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGRvU2F2ZSAtIFdoZXRoZXIgdG8gcGVyc2lzdCBzZXR0aW5nc1xuICAgKi9cbiAgZnVuY3Rpb24gc2V0U2V0dGluZ3MobmV3U2V0dGluZ3MsIGRvU2F2ZSA9IGZhbHNlKSB7XG4gICAgY29uc3QgX3NldHRpbmdzID0ge1xuICAgICAgLi4uc2V0dGluZ3MsXG4gICAgICAuLi5uZXdTZXR0aW5nc1xuICAgIH1cblxuICAgIF9zZXRTZXR0aW5ncyhfc2V0dGluZ3MpXG4gICAgZG9TYXZlICYmIF9zYXZlU2V0dGluZ3MoX3NldHRpbmdzKVxuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgU2NyaXB0dXJlIHBhbmUgc2V0dGluZ3Mgd2l0aCBuZXcgcGFuZSBjb25maWd1cmF0aW9uc1xuICAgKiBNYWludGFpbnMgYSBrZXktYmFzZWQgbG9va3VwIGZvciBwYW5lIHNldHRpbmdzIGJ5IGxhbmd1YWdlL2JpYmxlL293bmVyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBOQU1FU1BBQ0UgLSBUb29sIG5hbWVzcGFjZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmllbGROYW1lIC0gU2V0dGluZyBmaWVsZCBuYW1lXG4gICAqIEBwYXJhbSB7QXJyYXl9IF9wYW5lU2V0dGluZ3MgLSBBcnJheSBvZiBwYW5lIHNldHRpbmcgb2JqZWN0c1xuICAgKi9cbiAgY29uc3Qgc2V0VG9vbFNldHRpbmdzU2NyaXB0dXJlID0gKE5BTUVTUEFDRSwgZmllbGROYW1lLCBfcGFuZVNldHRpbmdzKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tc2V0VG9vbFNldHRpbmdzU2NyaXB0dXJlICR7ZmllbGROYW1lfWAsIF9wYW5lU2V0dGluZ3MpXG4gICAgY29uc3QgX3BhbmVLZXlTZXR0aW5ncyA9IHsuLi5wYW5lS2V5U2V0dGluZ3N9XG5cbiAgICBmb3IgKGNvbnN0IHBhbmVTZXR0aW5ncyBvZiBfcGFuZVNldHRpbmdzKSB7XG4gICAgICBjb25zdCBsYW5ndWFnZUlkID0gcGFuZVNldHRpbmdzPy5sYW5ndWFnZUlkXG4gICAgICBjb25zdCBrZXkgPSBgJHtsYW5ndWFnZUlkfS8ke3BhbmVTZXR0aW5ncz8uYmlibGVJZH0vJHtwYW5lU2V0dGluZ3M/Lm93bmVyfWBcbiAgICAgIF9wYW5lS2V5U2V0dGluZ3Nba2V5XSA9IHBhbmVTZXR0aW5nc1xuICAgIH1cblxuICAgIGNvbnN0IF9zZXR0aW5ncyA9IHtcbiAgICAgIHBhbmVTZXR0aW5nczogX3BhbmVTZXR0aW5ncyxcbiAgICAgIHBhbmVLZXlTZXR0aW5nczogX3BhbmVLZXlTZXR0aW5ncyxcbiAgICB9XG5cbiAgICBzZXRTZXR0aW5ncyhfc2V0dGluZ3MsIHRydWUpXG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIHByb3BlcnR5IHRvIHRoZSBtYW5pZmVzdCBhbmQgYXBwIHNldHRpbmdzXG4gICAqIFVzZWQgZm9yIHBlcnNpc3RpbmcgdXNlciBwcmVmZXJlbmNlcyBsaWtlIGZvbnRzXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmaWVsZE5hbWUgLSBQcm9wZXJ0eSBuYW1lXG4gICAqIEBwYXJhbSB7Kn0gZmllbGRWYWx1ZSAtIFByb3BlcnR5IHZhbHVlXG4gICAqL1xuICBjb25zdCBhZGRPYmplY3RQcm9wZXJ0eVRvTWFuaWZlc3QgPSAoZmllbGROYW1lLCBmaWVsZFZhbHVlKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tYWRkT2JqZWN0UHJvcGVydHlUb01hbmlmZXN0ICR7ZmllbGROYW1lfT0ke2ZpZWxkVmFsdWV9YClcbiAgICBpZiAobWFuaWZlc3QpIHtcbiAgICAgIGNvbnN0IF9tYW5pZmVzdCA9IHtcbiAgICAgICAgLi4ubWFuaWZlc3QsXG4gICAgICAgIFtmaWVsZE5hbWVdOiBmaWVsZFZhbHVlXG4gICAgICB9XG5cbiAgICAgIC8vIGFsc28gc2F2ZSB0aGlzIGluIGFwcFNldHRpbmdzXG4gICAgICBjb25zdCBhcHBTZXR0aW5ncyA9IHNldHRpbmdzLmFwcFNldHRpbmdzIHx8IHt9XG4gICAgICBjb25zdCBfYXBwU2V0dGluZ3MgPSB7XG4gICAgICAgIC4uLmFwcFNldHRpbmdzLFxuICAgICAgICBbZmllbGROYW1lXTogZmllbGRWYWx1ZVxuICAgICAgfVxuXG4gICAgICBzZXRTZXR0aW5ncyh7XG4gICAgICAgIG1hbmlmZXN0OiBfbWFuaWZlc3QsXG4gICAgICAgIGFwcFNldHRpbmdzOiBfYXBwU2V0dGluZ3NcbiAgICAgIH0sIHRydWUpXG4gICAgfVxuICB9XG5cbiAgLy8gRXZlbnQgaGFuZGxlcnMgZm9yIHZhcmlvdXMgdXNlciBhY3Rpb25zXG5cbiAgLyoqXG4gICAqIE9wZW5zIGFuIGFsZXJ0IGRpYWxvZyAocGxhY2Vob2xkZXIgaW1wbGVtZW50YXRpb24pXG4gICAqL1xuICBjb25zdCBvcGVuQWxlcnREaWFsb2cgPSAoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tb3BlbkFsZXJ0RGlhbG9nYCkgLy8gVE9ETyAtIGZsZXNoIG91dFxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB2ZXJzZSBjb250ZW50IGhhcyBjaGFuZ2VkIGZyb20gb3JpZ2luYWxcbiAgICogQHBhcmFtIHtFdmVudH0gZSAtIElucHV0IGV2ZW50XG4gICAqL1xuICBjb25zdCBjaGVja0lmVmVyc2VDaGFuZ2VkID0gKGUpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1jaGVja0lmVmVyc2VDaGFuZ2VkYClcbiAgICBjb25zdCBfbmV3VmVyc2VUZXh0ID0gZS50YXJnZXQudmFsdWVcbiAgICBjb25zdCBfaXNWZXJzZUNoYW5nZWQgPSBfbmV3VmVyc2VUZXh0ICE9PSB2ZXJzZVRleHRcbiAgICBzZXRTdGF0ZSh7IGlzVmVyc2VDaGFuZ2VkOiBfaXNWZXJzZUNoYW5nZWQgfSk7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyB2ZXJzZSB0ZXh0IGVkaXRpbmdcbiAgICogQHBhcmFtIHtFdmVudH0gZSAtIElucHV0IGV2ZW50IHdpdGggbmV3IHZlcnNlIHRleHRcbiAgICovXG4gIGNvbnN0IGhhbmRsZUVkaXRWZXJzZSA9IChlKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0taGFuZGxlRWRpdFZlcnNlYClcbiAgICBjb25zdCBfbmV3VmVyc2VUZXh0ID0gZS50YXJnZXQudmFsdWVcbiAgICBzZXRTdGF0ZSh7IG5ld1ZlcnNlVGV4dDogX25ld1ZlcnNlVGV4dCB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYW5jZWxzIHZlcnNlIGVkaXRpbmcgYW5kIHJlc2V0cyBzdGF0ZVxuICAgKi9cbiAgY29uc3QgY2FuY2VsRWRpdFZlcnNlID0gKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGAke25hbWV9LWNhbmNlbEVkaXRWZXJzZWApXG4gICAgc2V0U3RhdGUoeyBuZXdWZXJzZVRleHQ6IG51bGwsIG5ld1RhZ3M6IFtdLCBtb2RlOiBcImRlZmF1bHRcIiB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTYXZlcyBlZGl0ZWQgdmVyc2UgdGV4dCBhbmQgdXBkYXRlcyBhbGlnbm1lbnRzXG4gICAqIE1hcmtzIGNoZWNrIGFzIGhhdmluZyB2ZXJzZSBlZGl0c1xuICAgKi9cbiAgY29uc3Qgc2F2ZUVkaXRWZXJzZSA9ICgpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1zYXZlRWRpdFZlcnNlYClcbiAgICBjb25zdCB7IGNoYXB0ZXIsIHZlcnNlIH0gPSBjdXJyZW50Q29udGV4dElkLnJlZmVyZW5jZTtcbiAgICBjb25zdCB2ZXJzZVJlZiA9IGN1cnJlbnRDb250ZXh0SWQudmVyc2VTcGFuIHx8IHZlcnNlOyAvLyBpZiBpbiB2ZXJzZSBzcGFuLCB1c2UgaXRcbiAgICBjb25zdCBiZWZvcmUgPSB0YXJnZXRCaWJsZVtjaGFwdGVyXVt2ZXJzZVJlZl07XG5cbiAgICBzZXRTdGF0ZSh7XG4gICAgICBuZXdWZXJzZVRleHQ6IG51bGwsXG4gICAgICBuZXdUYWdzOiBbXSxcbiAgICAgIG1vZGU6IFwiZGVmYXVsdFwiLFxuICAgICAgaXNWZXJzZUNoYW5nZWQ6IGZhbHNlLFxuICAgIH0pO1xuICAgIGVkaXRUYXJnZXRWZXJzZShjaGFwdGVyLCB2ZXJzZVJlZiwgYmVmb3JlLCBuZXdWZXJzZVRleHQpO1xuICB9XG5cbiAgLyoqXG4gICAqIE5hdmlnYXRlcyB0byB0aGUgbmV4dCBjaGVjayBpbiB0aGUgc2VxdWVuY2VcbiAgICovXG4gIGZ1bmN0aW9uIGhhbmRsZUdvVG9OZXh0KCkge1xuICAgIGNvbnNvbGUubG9nKGAke25hbWV9LWhhbmRsZUdvVG9OZXh0YClcbiAgICBjb25zdCBuZXh0Q2hlY2sgPSBmaW5kTmV4dENoZWNrKGdyb3Vwc0RhdGEsIGN1cnJlbnRDb250ZXh0SWQsIGZhbHNlKVxuICAgIGNoYW5nZUN1cnJlbnRDaGVja18obmV4dENoZWNrLCB0cnVlKVxuICB9XG5cbiAgLyoqXG4gICAqIE5hdmlnYXRlcyB0byB0aGUgcHJldmlvdXMgY2hlY2sgaW4gdGhlIHNlcXVlbmNlXG4gICAqL1xuICBmdW5jdGlvbiBoYW5kbGVHb1RvUHJldmlvdXMoKSB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0taGFuZGxlR29Ub1ByZXZpb3VzYClcbiAgICBjb25zdCBwcmV2aW91c0NoZWNrID0gZmluZFByZXZpb3VzQ2hlY2soZ3JvdXBzRGF0YSwgY3VycmVudENvbnRleHRJZCwgZmFsc2UpXG4gICAgY2hhbmdlQ3VycmVudENoZWNrXyhwcmV2aW91c0NoZWNrLCB0cnVlKVxuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgY2hlY2tib3ggY2hhbmdlcyBmb3IgdGFnc1xuICAgKiBBZGRzIG9yIHJlbW92ZXMgdGFncyBmcm9tIHRoZSBjdXJyZW50IGxpc3RcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRhZyAtIFRhZyBpZGVudGlmaWVyXG4gICAqL1xuICBjb25zdCBoYW5kbGVUYWdzQ2hlY2tib3ggPSAodGFnKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0taGFuZGxlVGFnc0NoZWNrYm94YCwgdGFnKVxuICAgIGNvbnN0IGN1cnJlbnRUYWdzID0gbmV3VGFncyB8fCBbXVxuICAgIGNvbnN0IHRhZ0luZGV4ID0gY3VycmVudFRhZ3MuaW5kZXhPZih0YWcpO1xuICAgIGxldCBfbmV3VGFncztcblxuICAgIGlmICh0YWdJbmRleCA+IC0xKSB7XG4gICAgICBjb25zdCBjb3B5ID0gY3VycmVudFRhZ3Muc2xpY2UoMCk7XG4gICAgICBjb3B5LnNwbGljZSh0YWdJbmRleCwgMSk7XG4gICAgICBfbmV3VGFncyA9IGNvcHk7XG4gICAgfSBlbHNlIHtcbiAgICAgIF9uZXdUYWdzID0gWy4uLmN1cnJlbnRUYWdzLCB0YWddO1xuICAgIH1cblxuICAgIHNldFN0YXRlKHsgbmV3VGFnczogX25ld1RhZ3MgfSk7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHNlbGVjdGlvbnMgYWdhaW5zdCB2ZXJzZSB0ZXh0XG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2ZXJzZVRleHRfIC0gVmVyc2UgdGV4dCB0byB2YWxpZGF0ZSBhZ2FpbnN0XG4gICAqIEBwYXJhbSB7QXJyYXl9IHNlbGVjdGlvbnNfIC0gU2VsZWN0aW9ucyB0byB2YWxpZGF0ZVxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gV2hldGhlciBzZWxlY3Rpb25zIGFyZSB2YWxpZFxuICAgKi9cbiAgY29uc3QgdmFsaWRhdGVTZWxlY3Rpb25zID0gKHZlcnNlVGV4dF8sIHNlbGVjdGlvbnNfKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tdmFsaWRhdGVTZWxlY3Rpb25zYCwgc2VsZWN0aW9uc18pXG4gICAgcmV0dXJuIHNlbGVjdGlvbnNIZWxwZXJzLnZhbGlkYXRlVmVyc2VTZWxlY3Rpb25zKHZlcnNlVGV4dF8sIHNlbGVjdGlvbnNfKVxuICB9XG5cbiAgLyoqXG4gICAqIE1lbW9pemVkIGNvbXB1dGF0aW9uIG9mIHVuZmlsdGVyZWQgdmVyc2UgdGV4dCBpbmNsdWRpbmcgVVNGTSBtYXJrZXJzXG4gICAqIFVzZWQgZm9yIGRpc3BsYXlpbmcgYW5kIGVkaXRpbmcgY29tcGxldGUgdmVyc2UgZGF0YVxuICAgKi9cbiAgY29uc3QgdW5maWx0ZXJlZFZlcnNlVGV4dCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGxldCB1bmZpbHRlcmVkVmVyc2VUZXh0XyA9ICcnXG4gICAgY29uc3QgcmVmZXJlbmNlID0gY3VycmVudENvbnRleHRJZD8ucmVmZXJlbmNlXG4gICAgY29uc3QgY2hhcHRlciA9IHJlZmVyZW5jZT8uY2hhcHRlclxuICAgIGNvbnN0IHZlcnNlID0gcmVmZXJlbmNlPy52ZXJzZVxuICAgIGlmIChjaGFwdGVyICYmIHZlcnNlKSB7XG4gICAgICBjb25zdCB2ZXJzZURhdGEgPSB0YXJnZXRCaWJsZT8uW2NoYXB0ZXJdPy5bdmVyc2VdXG4gICAgICBpZiAodmVyc2VEYXRhKSB7XG4gICAgICAgIHVuZmlsdGVyZWRWZXJzZVRleHRfID0gdmVyc2VEYXRhXG4gICAgICAgIGlmICh0eXBlb2YgdmVyc2VEYXRhICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgIHVuZmlsdGVyZWRWZXJzZVRleHRfID0gVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycy5nZXRVc2ZtRm9yVmVyc2VDb250ZW50KHZlcnNlRGF0YSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB1bmZpbHRlcmVkVmVyc2VUZXh0X1xuICB9LCBbdGFyZ2V0QmlibGUsIGN1cnJlbnRDb250ZXh0SWRdKVxuXG4gIC8qKlxuICAgKiBTZXRzIGEgdGVtcG9yYXJ5IHZhbHVlIGZvciBhIGNoZWNraW5nIGRhdGEgcHJvcGVydHlcbiAgICogVXNlZCBmb3IgdHJhY2tpbmcgdW5zYXZlZCBjaGFuZ2VzXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgLSBQcm9wZXJ0eSBuYW1lXG4gICAqIEBwYXJhbSB7Kn0gdmFsdWUgLSBQcm9wZXJ0eSB2YWx1ZVxuICAgKi9cbiAgY29uc3Qgc2V0VGVtcENoZWNraW5nSXRlbSA9IChrZXksIHZhbHVlKSA9PiB7XG4gICAgY29uc3QgbmV3Q2hlY2tpbmdEYXRhID0gdGVtcENoZWNraW5nRGF0YSA/IHsuLi50ZW1wQ2hlY2tpbmdEYXRhfSA6IHt9XG4gICAgbmV3Q2hlY2tpbmdEYXRhW2tleV0gPSB2YWx1ZVxuICAgIHNldFRlbXBDaGVja2luZ0RhdGEobmV3Q2hlY2tpbmdEYXRhKVxuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgc2VsZWN0aW9ucyBpbiB0ZW1wb3Jhcnkgc3RhdGUgd2l0aG91dCBzYXZpbmdcbiAgICogQHBhcmFtIHtBcnJheX0gc2VsZWN0aW9ucyAtIE5ldyBzZWxlY3Rpb25zIGFycmF5XG4gICAqL1xuICBjb25zdCBjaGFuZ2VTZWxlY3Rpb25zSW5Mb2NhbFN0YXRlID0gKHNlbGVjdGlvbnMpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1jaGFuZ2VTZWxlY3Rpb25zSW5Mb2NhbFN0YXRlYCwgc2VsZWN0aW9ucylcbiAgICBzZXRUZW1wQ2hlY2tpbmdJdGVtKCdzZWxlY3Rpb25zJywgc2VsZWN0aW9ucylcbiAgfVxuXG4gIC8qKlxuICAgKiBUb2dnbGVzIHRoZSBcIm5vdGhpbmcgdG8gc2VsZWN0XCIgZmxhZyBmb3IgY3VycmVudCBjaGVja1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHNlbGVjdCAtIE5ldyBzdGF0ZSB2YWx1ZVxuICAgKi9cbiAgY29uc3QgdG9nZ2xlTm90aGluZ1RvU2VsZWN0ID0gKHNlbGVjdCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGAke25hbWV9LXRvZ2dsZU5vdGhpbmdUb1NlbGVjdGAsIHNlbGVjdClcbiAgICBzZXRUZW1wQ2hlY2tpbmdJdGVtKCdub3RoaW5nVG9TZWxlY3QnLCBzZWxlY3QpXG4gIH1cblxuICAvKipcbiAgICogQ2hhbmdlcyB0aGUgY3VycmVudCBjaGVjayBiZWluZyB3b3JrZWQgb25cbiAgICogVmFsaWRhdGVzIGZvciB1bnNhdmVkIGNoYW5nZXMgYmVmb3JlIHN3aXRjaGluZ1xuICAgKiBAcGFyYW0ge29iamVjdH0gbmV3Q29udGV4dCAtIE5ldyBjaGVjayBjb250ZXh0XG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gbm9DaGVjayAtIFNraXAgdmFsaWRhdGlvbiBpZiB0cnVlXG4gICAqL1xuICBjb25zdCBjaGFuZ2VDdXJyZW50Q2hlY2tfID0gKG5ld0NvbnRleHQsIG5vQ2hlY2sgPSBmYWxzZSkgPT4ge1xuICAgIGNvbnN0IG5ld0NvbnRleHRJZCA9IG5ld0NvbnRleHQ/LmNvbnRleHRJZFxuICAgIGNvbnNvbGUubG9nKGAke25hbWV9LWNoYW5nZUN1cnJlbnRDb250ZXh0SWRgLCBuZXdDb250ZXh0SWQpXG5cbiAgICBjb25zdCBzZWxlY3Rpb25zVW5jaGFuZ2VkID0gaXNFcXVhbChjdXJyZW50U2VsZWN0aW9ucywgdGVtcFNlbGVjdGlvbnMpXG4gICAgaWYgKG5vQ2hlY2sgfHwgc2VsZWN0aW9uc1VuY2hhbmdlZCkge1xuICAgICAgaWYgKG5ld0NvbnRleHRJZCkge1xuICAgICAgICBsZXQgY2hlY2sgPSBmaW5kQ2hlY2soZ3JvdXBzRGF0YSwgbmV3Q29udGV4dElkLCBmYWxzZSlcbiAgICAgICAgdXBkYXRlQ29udGV4dChuZXdDb250ZXh0KVxuICAgICAgICBpZiAoY2hlY2spIHtcbiAgICAgICAgICBzZXRMb2NhbENoZWNraW5nRGF0YShudWxsKVxuICAgICAgICAgIHNldFRlbXBDaGVja2luZ0RhdGEobnVsbClcbiAgICAgICAgICB1cGRhdGVNb2RlRm9yU2VsZWN0aW9ucyhjaGVjay5zZWxlY3Rpb25zLCBjaGVjay5ub3RoaW5nVG9TZWxlY3QpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5sb2coJ0NoZWNrZXIuY2hhbmdlQ3VycmVudENvbnRleHRJZCAtIHVuc2F2ZWQgY2hhbmdlcycpXG4gICAgfVxuICAgIGNoYW5nZWRDdXJyZW50Q2hlY2sgJiYgY2hhbmdlZEN1cnJlbnRDaGVjayhuZXdDb250ZXh0KVxuICB9XG5cbiAgY29uc3QgZGlyZWN0aW9uID0gJ2x0cidcbiAgY29uc3QgYm9va21hcmtFbmFibGVkID0gZ2V0Q3VycmVudFZhbHVlRm9yKCdyZW1pbmRlcnMnKVxuICBjb25zdCBpc1ZlcnNlRWRpdGVkID0gISFnZXRDdXJyZW50VmFsdWVGb3IoJ3ZlcnNlRWRpdHMnKVxuICBjb25zdCBpc1ZlcnNlSW52YWxpZGF0ZWQgPSAhIWdldEN1cnJlbnRWYWx1ZUZvcignaW52YWxpZGF0ZWQnKVxuXG4gIC8qKlxuICAgKiBDaGFuZ2VzIHRoZSBjdXJyZW50IGNoZWNrIGJlaW5nIHdvcmtlZCBvblxuICAgKiBWYWxpZGF0ZXMgZm9yIHVuc2F2ZWQgY2hhbmdlcyBiZWZvcmUgc3dpdGNoaW5nXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBuZXdDb250ZXh0IC0gTmV3IGNoZWNrIGNvbnRleHRcbiAgICogQHBhcmFtIHtib29sZWFufSBub0NoZWNrIC0gU2tpcCB2YWxpZGF0aW9uIGlmIHRydWVcbiAgICovXG4gIGNvbnN0IF9zYXZlU2VsZWN0aW9uID0gKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGAke25hbWV9LV9zYXZlU2VsZWN0aW9uIHBlcnNpc3QgdG8gZmlsZWApXG4gICAgY29uc3QgeyBjaGVja0luR3JvdXBzRGF0YSwgX2N1cnJlbnRDaGVjaywgbmV3U3RhdGUsIF9uZXdDaGVja2luZ0RhdGEgfSA9IGNsb25lRGF0YUZvclNhdmluZygpXG5cbiAgICBpZiAoX2N1cnJlbnRDaGVjayAmJiBuZXdTdGF0ZSkge1xuICAgICAgaWYgKHRlbXBOb3RoaW5nVG9TZWxlY3QpIHtcbiAgICAgICAgX25ld0NoZWNraW5nRGF0YS5ub3RoaW5nVG9TZWxlY3QgPSB0ZW1wTm90aGluZ1RvU2VsZWN0XG4gICAgICAgIF9uZXdDaGVja2luZ0RhdGEuc2VsZWN0aW9ucyA9IGZhbHNlXG4gICAgICAgIF9uZXdDaGVja2luZ0RhdGEuaW52YWxpZGF0ZWQgPSBmYWxzZVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgX25ld0NoZWNraW5nRGF0YS5ub3RoaW5nVG9TZWxlY3QgPSBmYWxzZVxuICAgICAgICBfbmV3Q2hlY2tpbmdEYXRhLnNlbGVjdGlvbnMgPSB0ZW1wU2VsZWN0aW9uc1xuICAgICAgICBfbmV3Q2hlY2tpbmdEYXRhLmludmFsaWRhdGVkID0gZmFsc2VcbiAgICAgIH1cblxuICAgICAgc2V0TG9jYWxDaGVja2luZ0RhdGEoX25ld0NoZWNraW5nRGF0YSlcbiAgICAgIGRlbGV0ZVRlbXBDaGVja2luZ0RhdGEoJ25vdGhpbmdUb1NlbGVjdCcpXG4gICAgICBkZWxldGVUZW1wQ2hlY2tpbmdEYXRhKCdzZWxlY3Rpb25zJylcbiAgICAgIGRlbGV0ZVRlbXBDaGVja2luZ0RhdGEoJ2ludmFsaWRhdGVkJylcblxuICAgICAgdXBkYXRlVmFsdWVzSW5DaGVja0RhdGEoX2N1cnJlbnRDaGVjaywgY2hlY2tJbkdyb3Vwc0RhdGEsIF9uZXdDaGVja2luZ0RhdGEpXG5cbiAgICAgIHNldFN0YXRlKG5ld1N0YXRlKTtcbiAgICAgIHNhdmVDaGVja2luZ0RhdGEgJiYgc2F2ZUNoZWNraW5nRGF0YShuZXdTdGF0ZSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2xvbmVzIGN1cnJlbnQgZGF0YSBzdHJ1Y3R1cmVzIGZvciBzYXZpbmcgbW9kaWZpY2F0aW9uc1xuICAgKiBDcmVhdGVzIGRlZXAgY29waWVzIHRvIGF2b2lkIG11dGF0aW5nIG9yaWdpbmFsIHN0YXRlXG4gICAqIEByZXR1cm5zIHtvYmplY3R9IE9iamVjdCBjb250YWluaW5nIGNsb25lZCBkYXRhIHN0cnVjdHVyZXNcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGZ1bmN0aW9uIGNsb25lRGF0YUZvclNhdmluZygpIHtcbiAgICBjb25zdCBfZ3JvdXBzRGF0YSA9IF8uY2xvbmVEZWVwKGdyb3Vwc0RhdGEpXG4gICAgY29uc3QgY2hlY2tJbkdyb3Vwc0RhdGEgPSBmaW5kQ2hlY2soX2dyb3Vwc0RhdGEsIGN1cnJlbnRDb250ZXh0SWQpXG4gICAgbGV0IF9jdXJyZW50Q2hlY2tcbiAgICBsZXQgbmV3U3RhdGVcbiAgICBsZXQgX25ld0NoZWNraW5nRGF0YVxuICAgIGlmIChjaGVja0luR3JvdXBzRGF0YSkge1xuICAgICAgLy8gc2F2ZSB0aGUgc2VsZWN0aW9uIGNoYW5nZXNcbiAgICAgIGNvbnN0IGNhdGVnb3J5ID0gY2hlY2tJbkdyb3Vwc0RhdGEuY2F0ZWdvcnlcbiAgICAgIGNvbnN0IG5ld0NoZWNrRGF0YSA9IF8uY2xvbmVEZWVwKGN1cnJlbnRDaGVja2luZ0RhdGEpXG4gICAgICBfY3VycmVudENoZWNrID0gZmluZENoZWNrKG5ld0NoZWNrRGF0YVtjYXRlZ29yeV0sIGN1cnJlbnRDb250ZXh0SWQsIGZhbHNlKVxuICAgICAgbmV3U3RhdGUgPSB7XG4gICAgICAgIGN1cnJlbnRDaGVja2luZ0RhdGE6IG5ld0NoZWNrRGF0YSxcbiAgICAgICAgY3VycmVudENoZWNrOiBfY3VycmVudENoZWNrLFxuICAgICAgICBncm91cHNEYXRhOiBfZ3JvdXBzRGF0YSxcbiAgICAgICAgbW9kZTogJ2RlZmF1bHQnLFxuICAgICAgICBtb2RpZmllZDogdHJ1ZVxuICAgICAgfVxuICAgICAgX25ld0NoZWNraW5nRGF0YSA9IGxvY2FsQ2hlY2tpbmdEYXRhID8gey4uLmxvY2FsQ2hlY2tpbmdEYXRhfSA6IHt9XG4gICAgfVxuICAgIHJldHVybiB7IGNoZWNrSW5Hcm91cHNEYXRhLCBfY3VycmVudENoZWNrLCBuZXdTdGF0ZSwgX25ld0NoZWNraW5nRGF0YSB9XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyBtdWx0aXBsZSBwcm9wZXJ0aWVzIGluIGNoZWNrIGRhdGEgb2JqZWN0c1xuICAgKiBNb2RpZmllcyBib3RoIHRoZSBjdXJyZW50IGNoZWNrIGFuZCBncm91cHMgZGF0YVxuICAgKiBAcGFyYW0ge29iamVjdH0gX2N1cnJlbnRDaGVjayAtIEN1cnJlbnQgY2hlY2sgb2JqZWN0XG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjaGVja0luR3JvdXBzRGF0YSAtIENoZWNrIGluIGdyb3VwcyBkYXRhIHN0cnVjdHVyZVxuICAgKiBAcGFyYW0ge29iamVjdH0gX25ld0NoZWNraW5nRGF0YSAtIE5ldyBkYXRhIHRvIGFwcGx5XG4gICAqL1xuICBmdW5jdGlvbiB1cGRhdGVWYWx1ZXNJbkNoZWNrRGF0YShfY3VycmVudENoZWNrLCBjaGVja0luR3JvdXBzRGF0YSwgX25ld0NoZWNraW5nRGF0YSkge1xuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKF9uZXdDaGVja2luZ0RhdGEpKSB7XG4gICAgICBjb25zdCBuZXdDaGVja2luZ1ZhbHVlID0gX25ld0NoZWNraW5nRGF0YVtrZXldXG4gICAgICBfY3VycmVudENoZWNrW2tleV0gPSBuZXdDaGVja2luZ1ZhbHVlXG4gICAgICBjaGVja0luR3JvdXBzRGF0YVtrZXldID0gbmV3Q2hlY2tpbmdWYWx1ZVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBQZXJzaXN0cyBtdWx0aXBsZSBjaGVjayBwcm9wZXJ0eSBjaGFuZ2VzIHRvIGZpbGVcbiAgICogQ2xvbmVzIGRhdGEsIGFwcGxpZXMgY2hhbmdlcywgdXBkYXRlcyBzdGF0ZSwgYW5kIHNhdmVzXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBuZXdEYXRhIC0gT2JqZWN0IHdpdGggcHJvcGVydHkgbmFtZXMgYW5kIHZhbHVlcyB0byB1cGRhdGVcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGNvbnN0IF9zYXZlRGF0YSA9IChuZXdEYXRhKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tX3NhdmVEYXRhIHBlcnNpc3QgdG8gZmlsZWApXG4gICAgY29uc3QgeyBjaGVja0luR3JvdXBzRGF0YSwgX2N1cnJlbnRDaGVjaywgbmV3U3RhdGUsIF9uZXdDaGVja2luZ0RhdGEgfSA9IGNsb25lRGF0YUZvclNhdmluZygpXG5cbiAgICBpZiAoX2N1cnJlbnRDaGVjayAmJiBuZXdTdGF0ZSkge1xuICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMobmV3RGF0YSkpIHtcbiAgICAgICAgX25ld0NoZWNraW5nRGF0YVtrZXldID0gbmV3RGF0YVtrZXldXG4gICAgICAgIGRlbGV0ZVRlbXBDaGVja2luZ0RhdGEoa2V5KVxuICAgICAgfVxuICAgICAgc2V0TG9jYWxDaGVja2luZ0RhdGEoX25ld0NoZWNraW5nRGF0YSlcblxuICAgICAgdXBkYXRlVmFsdWVzSW5DaGVja0RhdGEoX2N1cnJlbnRDaGVjaywgY2hlY2tJbkdyb3Vwc0RhdGEsIF9uZXdDaGVja2luZ0RhdGEpXG5cbiAgICAgIHNldFN0YXRlKG5ld1N0YXRlKTtcbiAgICAgIHNhdmVDaGVja2luZ0RhdGEgJiYgc2F2ZUNoZWNraW5nRGF0YShuZXdTdGF0ZSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2F2ZXMgY2hhbmdlcyB0byBhIHNwZWNpZmljIGNoZWNrIChtYXkgbm90IGJlIGN1cnJlbnQgY2hlY2spXG4gICAqIE9ubHkgc2F2ZXMgaWYgZGF0YSBhY3R1YWxseSBjaGFuZ2VkXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjaGVjayAtIENoZWNrIG9iamVjdCB0byB1cGRhdGVcbiAgICogQHBhcmFtIHtvYmplY3R9IG5ld0RhdGEgLSBOZXcgZGF0YSB0byBhcHBseVxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gV2hldGhlciBkYXRhIHdhcyBjaGFuZ2VkXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBjb25zdCBfc2F2ZUNoZWNraW5nRGF0YSA9IChjaGVjaywgbmV3RGF0YSkgPT4ge1xuICAgIGxldCBjaGFuZ2VkRGF0YSA9IGZhbHNlXG4gICAgaWYgKGNoZWNrKSB7XG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhuZXdEYXRhKSkge1xuICAgICAgICBpZiAoY2hlY2tba2V5XSAhPT0gbmV3RGF0YVtrZXldKSB7XG4gICAgICAgICAgY2hlY2tba2V5XSA9IG5ld0RhdGFba2V5XVxuICAgICAgICAgIGNoYW5nZWREYXRhID0gdHJ1ZVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChjaGFuZ2VkRGF0YSkge1xuICAgICAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1fc2F2ZUNoZWNraW5nRGF0YSBwZXJzaXN0IGNoYW5nZXMgdG8gZmlsZWAsIGNoZWNrKVxuICAgICAgICBjb25zdCBuZXdDaGVja2luZ0RhdGEgPSB7XG4gICAgICAgICAgY3VycmVudENoZWNrOiBjaGVjayxcbiAgICAgICAgfVxuICAgICAgICBzYXZlQ2hlY2tpbmdEYXRhICYmIHNhdmVDaGVja2luZ0RhdGEobmV3Q2hlY2tpbmdEYXRhKVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY2hhbmdlZERhdGFcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGEgcHJvcGVydHkgZnJvbSB0ZW1wb3JhcnkgY2hlY2tpbmcgZGF0YVxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IC0gUHJvcGVydHkgbmFtZSB0byByZW1vdmVcbiAgICovXG4gIGZ1bmN0aW9uIGRlbGV0ZVRlbXBDaGVja2luZ0RhdGEoa2V5KSB7XG4gICAgaWYgKHRlbXBDaGVja2luZ0RhdGE/Lmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgIGNvbnN0IF90ZW1wQ2hlY2tpbmdEYXRhID0gey4uLnRlbXBDaGVja2luZ0RhdGF9XG4gICAgICBkZWxldGUgX3RlbXBDaGVja2luZ0RhdGFba2V5XVxuICAgICAgc2V0VGVtcENoZWNraW5nRGF0YShfdGVtcENoZWNraW5nRGF0YSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2FuY2VscyBzZWxlY3Rpb24gbW9kZSB3aXRob3V0IHNhdmluZyBjaGFuZ2VzXG4gICAqL1xuICBjb25zdCBjYW5jZWxTZWxlY3Rpb24gPSAoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tY2FuY2VsU2VsZWN0aW9uYClcbiAgICBkZWxldGVUZW1wQ2hlY2tpbmdEYXRhKCdzZWxlY3Rpb25zJylcbiAgICBzZXRTdGF0ZSh7XG4gICAgICBtb2RlOiAnZGVmYXVsdCdcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhcnMgYWxsIGN1cnJlbnQgc2VsZWN0aW9uc1xuICAgKi9cbiAgY29uc3QgY2xlYXJTZWxlY3Rpb24gPSAoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tY2xlYXJTZWxlY3Rpb25gKVxuICAgIHNldFRlbXBDaGVja2luZ0l0ZW0oJ3NlbGVjdGlvbnMnLCBbXSlcbiAgfVxuXG4gIC8qKlxuICAgKiBUb2dnbGVzIGJvb2ttYXJrL3JlbWluZGVyIGZsYWcgZm9yIGN1cnJlbnQgY2hlY2tcbiAgICovXG4gIGNvbnN0IHRvZ2dsZUJvb2ttYXJrID0gKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGAke25hbWV9LXRvZ2dsZUJvb2ttYXJrYClcbiAgICBfc2F2ZURhdGEoe1xuICAgICAgcmVtaW5kZXJzOiAhZ2V0VGVtcFZhbHVlRm9yKCdyZW1pbmRlcnMnKVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogQ2hhbmdlcyB0aGUgVUkgbW9kZSAoZGVmYXVsdCwgc2VsZWN0LCBlZGl0LCBjb21tZW50KVxuICAgKiBAcGFyYW0ge3N0cmluZ30gbW9kZSAtIE5ldyBtb2RlIGlkZW50aWZpZXJcbiAgICovXG4gIGNvbnN0IGNoYW5nZU1vZGUgPSAobW9kZSkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGAke25hbWV9LWNoYW5nZU1vZGVgLCBtb2RlKVxuICAgIHNldFN0YXRlKHsgbW9kZSB9KVxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBjb21tZW50IHRleHQgaGFzIGNoYW5nZWQgZnJvbSBzYXZlZCB2YWx1ZVxuICAgKiBAcGFyYW0ge0V2ZW50fSBlIC0gSW5wdXQgZXZlbnRcbiAgICovXG4gIGZ1bmN0aW9uIGNoZWNrSWZDb21tZW50Q2hhbmdlZChlKSB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tY2hlY2tJZkNvbW1lbnRDaGFuZ2VkYClcbiAgICBjb25zdCBuZXdjb21tZW50ID0gZS50YXJnZXQudmFsdWUgfHwgJyc7XG4gICAgY29uc3Qgb2xkY29tbWVudCA9IGNvbW1lbnRUZXh0IHx8ICcnO1xuICAgIGNvbnN0IGlzQ29tbWVudENoYW5nZWQgPSBuZXdjb21tZW50ICE9PSBvbGRjb21tZW50XG5cbiAgICBzZXRTdGF0ZSh7XG4gICAgICBpc0NvbW1lbnRDaGFuZ2VkXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ2FuY2VscyBjb21tZW50IGVkaXRpbmcgd2l0aG91dCBzYXZpbmdcbiAgICovXG4gIGNvbnN0IGNhbmNlbENvbW1lbnQgPSAoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tY2FuY2VsQ29tbWVudGApXG4gICAgZGVsZXRlVGVtcENoZWNraW5nRGF0YSgnY29tbWVudHMnKVxuICAgIHNldFN0YXRlKHtcbiAgICAgIG1vZGU6ICdkZWZhdWx0JyxcbiAgICAgIGlzQ29tbWVudENoYW5nZWQ6IGZhbHNlLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFNhdmVzIGNvbW1lbnQgY2hhbmdlcyB0byBwZXJzaXN0ZW50IHN0b3JhZ2VcbiAgICovXG4gIGNvbnN0IHNhdmVDb21tZW50ID0gKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGAke25hbWV9LXNhdmVDb21tZW50YClcbiAgICBjb25zdCBuZXdDb21tZW50ID0gZ2V0VGVtcFZhbHVlRm9yKCdjb21tZW50cycpXG4gICAgX3NhdmVEYXRhKHsgY29tbWVudHM6IG5ld0NvbW1lbnQgfSlcbiAgICBzZXRTdGF0ZSh7XG4gICAgICBtb2RlOiAnZGVmYXVsdCcsXG4gICAgICBpc0NvbW1lbnRDaGFuZ2VkOiBmYWxzZSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIGNvbW1lbnQgdGV4dCBjaGFuZ2VzXG4gICAqIEBwYXJhbSB7RXZlbnR9IGUgLSBJbnB1dCBldmVudCB3aXRoIG5ldyBjb21tZW50XG4gICAqL1xuICBjb25zdCBoYW5kbGVDb21tZW50ID0gKGUpID0+IHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0taGFuZGxlQ29tbWVudGApXG4gICAgY29uc3QgbmV3Q29tbWVudCA9IGUudGFyZ2V0LnZhbHVlXG4gICAgc2V0VGVtcENoZWNraW5nSXRlbSgnY29tbWVudHMnLCBuZXdDb21tZW50KVxuICAgIHNldFN0YXRlKHtcbiAgICAgIGlzQ29tbWVudENoYW5nZWQ6IHRydWUsXG4gICAgfSk7XG4gIH1cblxuICBjb25zdCByZWFkeVRvRGlzcGxheUNoZWNrZXIgPSBncm91cHNEYXRhICYmIGdyb3Vwc0luZGV4ICYmIGN1cnJlbnRDb250ZXh0SWQgJiYgdmVyc2VUZXh0XG5cbiAgLyoqXG4gICAqIFdyYXBwZXIgZm9yIGdldExleGljb25EYXRhIGNhbGxiYWNrIHdpdGggbG9nZ2luZ1xuICAgKiBAcGFyYW0ge3N0cmluZ30gbGV4aWNvbklkIC0gTGV4aWNvbiBpZGVudGlmaWVyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBlbnRyeUlkIC0gRW50cnkgaWRlbnRpZmllclxuICAgKiBAcmV0dXJucyB7b2JqZWN0fSBMZXhpY29uIGRhdGFcbiAgICovXG4gIGNvbnN0IGdldExleGljb25EYXRhXyA9IChsZXhpY29uSWQsIGVudHJ5SWQpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1nZXRMZXhpY29uRGF0YV9gLCB7bGV4aWNvbklkLCBlbnRyeUlkfSlcbiAgICBjb25zdCBsZXhpY29uRGF0YSA9IGdldExleGljb25EYXRhICYmIGdldExleGljb25EYXRhKGxleGljb25JZCwgZW50cnlJZClcbiAgICByZXR1cm4gbGV4aWNvbkRhdGFcbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZXMgdGhlIHBvcG92ZXIgZGlzcGxheVxuICAgKi9cbiAgY29uc3Qgb25DbG9zZVBvcG92ZXIgPSAoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tb25DbG9zZVBvcG92ZXJgKVxuICAgIHNldFN0YXRlKHtcbiAgICAgIHBvcG92ZXJQcm9wczoge1xuICAgICAgICBwb3BvdmVyVmlzaWJpbGl0eTogZmFsc2UsXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNwbGF5cyBhIHBvcG92ZXIgd2l0aCB0aXRsZSBhbmQgY29udGVudCBhdCBzcGVjaWZpZWQgcG9zaXRpb25cbiAgICogQHBhcmFtIHtzdHJpbmd9IHRpdGxlIC0gUG9wb3ZlciB0aXRsZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gYm9keVRleHQgLSBQb3BvdmVyIGNvbnRlbnRcbiAgICogQHBhcmFtIHtvYmplY3R9IHBvc2l0aW9uQ29vcmQgLSBQb3NpdGlvbiBjb29yZGluYXRlc1xuICAgKi9cbiAgY29uc3Qgc2hvd1BvcG92ZXIgPSAodGl0bGUsIGJvZHlUZXh0LCBwb3NpdGlvbkNvb3JkKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tc2hvd1BvcG92ZXJgLCB0aXRsZSlcbiAgICBzZXRTdGF0ZSh7XG4gICAgICBwb3BvdmVyUHJvcHM6IHtcbiAgICAgICAgcG9wb3ZlclZpc2liaWxpdHk6IHRydWUsXG4gICAgICAgIHRpdGxlLFxuICAgICAgICBib2R5VGV4dCxcbiAgICAgICAgcG9zaXRpb25Db29yZCxcbiAgICAgICAgb25DbG9zZVBvcG92ZXI6ICgpID0+IG9uQ2xvc2VQb3BvdmVyKClcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIFRvZ2dsZXMgdGhlIGV4cGFuZGVkIHRyYW5zbGF0aW9uIGhlbHBzIG1vZGFsXG4gICAqL1xuICBjb25zdCB0b2dnbGVIZWxwc01vZGFsID0gKCkgPT4ge1xuICAgIGNvbnN0IF9zaG93SGVscHNNb2RhbCA9ICFzaG93SGVscHNNb2RhbFxuICAgIHNldFN0YXRlKHtcbiAgICAgIHNob3dIZWxwc01vZGFsOiBfc2hvd0hlbHBzTW9kYWxcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIFRvZ2dsZXMgdGhlIHRyYW5zbGF0aW9uIGhlbHBzIHNpZGViYXIgdmlzaWJpbGl0eVxuICAgKi9cbiAgY29uc3QgdG9nZ2xlSGVscHMgPSAoKSA9PiB7XG4gICAgY29uc3QgX3Nob3dIZWxwcyA9ICFzaG93SGVscHNcbiAgICBzZXRTdGF0ZSh7XG4gICAgICBzaG93SGVscHM6IF9zaG93SGVscHNcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBCaWJsZSBib29rIHRvIHRoZSBiaWJsZXMgZGF0YSBzdHJ1Y3R1cmVcbiAgICogQ3JlYXRlcyBsYW5ndWFnZSBncm91cCBpZiBpdCBkb2Vzbid0IGV4aXN0XG4gICAqIEBwYXJhbSB7b2JqZWN0fSBiaWJsZXMgLSBCaWJsZXMgZGF0YSBzdHJ1Y3R1cmVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSAtIExhbmd1YWdlIGtleVxuICAgKiBAcGFyYW0ge3N0cmluZ30gYmlibGVJZCAtIEJpYmxlIGlkZW50aWZpZXJcbiAgICogQHBhcmFtIHtvYmplY3R9IGJvb2sgLSBCb29rIGRhdGFcbiAgICovXG4gIGZ1bmN0aW9uIHNhdmVCaWJsZVRvS2V5KGJpYmxlcywga2V5LCBiaWJsZUlkLCBib29rKSB7XG4gICAgbGV0IGtleUdyb3VwID0gYmlibGVzW2tleV1cbiAgICBpZiAoIWtleUdyb3VwKSB7IC8vIGlmIGdyb3VwIGRvZXMgbm90IGV4aXN0LCBjcmVhdGUgbmV3XG4gICAgICBrZXlHcm91cCA9IHt9XG4gICAgICBiaWJsZXNba2V5XSA9IGtleUdyb3VwXG4gICAgfVxuICAgIGtleUdyb3VwW2JpYmxlSWRdID0gYm9va1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdmVyc2UgY29udGVudCBpbiB0YXJnZXQgQmlibGVcbiAgICogSGFuZGxlcyBVU0ZNIGNvbnZlcnNpb24sIGFsaWdubWVudCB1cGRhdGVzLCBhbmQgdmFsaWRhdGlvblxuICAgKiBAcGFyYW0ge3N0cmluZ30gY2hhcHRlciAtIENoYXB0ZXIgbnVtYmVyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2ZXJzZSAtIFZlcnNlIG51bWJlclxuICAgKiBAcGFyYW0ge3N0cmluZ30gb2xkVmVyc2VUZXh0IC0gT3JpZ2luYWwgdmVyc2UgdGV4dFxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmV3VmVyc2VUZXh0IC0gTmV3IHZlcnNlIHRleHRcbiAgICovXG4gIGZ1bmN0aW9uIGVkaXRUYXJnZXRWZXJzZShjaGFwdGVyLCB2ZXJzZSwgb2xkVmVyc2VUZXh0LCBuZXdWZXJzZVRleHQpIHtcbiAgICBjb25zb2xlLmxvZyhgZWRpdFRhcmdldFZlcnNlICR7Y2hhcHRlcn06JHt2ZXJzZX0gLSBjaGFuZ2VkIHRvICR7bmV3VmVyc2VUZXh0fWApXG5cbiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gZmlyc3QgdXBkYXRlIGNvbXBvbmVudCBzdGF0ZVxuXG4gICAgY29uc3QgX2JpYmxlcyA9IFsgLi4uYmlibGVzX11cbiAgICBjb25zdCBfdGFyZ2V0QmlibGUgPSB7Li4uX2JpYmxlc1swXX1cbiAgICBfYmlibGVzWzBdID0gX3RhcmdldEJpYmxlXG4gICAgY29uc3QgdGFyZ2V0Qm9vayA9IHsuLi5fdGFyZ2V0QmlibGU/LmJvb2t9XG4gICAgX3RhcmdldEJpYmxlLmJvb2sgPSB0YXJnZXRCb29rXG4gICAgY29uc3QgdGFyZ2V0Q2hhcHRlciA9IHsuLi50YXJnZXRCb29rW2NoYXB0ZXJdfVxuICAgIHRhcmdldEJvb2tbY2hhcHRlcl0gPSB0YXJnZXRDaGFwdGVyXG4gICAgdGFyZ2V0Q2hhcHRlclt2ZXJzZV0gPSBuZXdWZXJzZVRleHRcblxuXG4gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIG5vdyBhcHBseSBuZXcgdmVyc2UgdGV4dCB0byBzZWxlY3RlZCBhbGlnbmVkIHZlcnNlIGFuZCBjYWxsIGJhY2sgdG8gZXh0ZW5zaW9uIHRvIHNhdmVcblxuICAgIGxldCBfbmV3VmVyc2VUZXh0ID0gbmV3VmVyc2VUZXh0XG4gICAgaWYgKHR5cGVvZiBfbmV3VmVyc2VUZXh0ICE9PSAnc3RyaW5nJykge1xuICAgICAgX25ld1ZlcnNlVGV4dCA9IFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMuY29udmVydFZlcnNlRGF0YVRvVVNGTShfbmV3VmVyc2VUZXh0KVxuICAgIH1cblxuICAgIGNvbnN0IGN1cnJlbnRDaGFwdGVyRGF0YSA9IHRhcmdldEJpYmxlPy5bY2hhcHRlcl1cbiAgICBjb25zdCBjdXJyZW50VmVyc2VEYXRhID0gY3VycmVudENoYXB0ZXJEYXRhPy5bdmVyc2VdXG4gICAgY29uc3QgeyB0YXJnZXRWZXJzZU9iamVjdHMgfSA9IEFsaWdubWVudEhlbHBlcnMudXBkYXRlQWxpZ25tZW50c1RvVGFyZ2V0VmVyc2UoY3VycmVudFZlcnNlRGF0YSwgX25ld1ZlcnNlVGV4dClcbiAgICB0YXJnZXRDaGFwdGVyW3ZlcnNlXSA9IHsgdmVyc2VPYmplY3RzOiB0YXJnZXRWZXJzZU9iamVjdHMgfTsgLy8gc2F2ZVxuXG4gICAgdXBkYXRlU2V0dGluZ3MoX2JpYmxlcywgdGFyZ2V0Qm9vaylcblxuICAgIGNvbnN0IHZlcnNlVGV4dCA9IHJlbW92ZVVzZm1NYXJrZXJzKF9uZXdWZXJzZVRleHQpXG4gICAgc2V0U3RhdGUoe1xuICAgICAgdmVyc2VUZXh0XG4gICAgfSlcblxuICAgIGNoYW5nZVRhcmdldFZlcnNlICYmIGNoYW5nZVRhcmdldFZlcnNlKGNoYXB0ZXIsIHZlcnNlLCBuZXdWZXJzZVRleHQsIHRhcmdldFZlcnNlT2JqZWN0cylcbiAgICBfc2F2ZURhdGEoeyB2ZXJzZUVkaXRzOiB0cnVlIH0pXG5cbiAgICBjb25zdCBfZ3JvdXBzRGF0YSA9IF8uY2xvbmVEZWVwKGdyb3Vwc0RhdGEpXG4gICAgbGV0IGNoYW5nZWREYXRhID0gZmFsc2VcbiAgICBzZWxlY3Rpb25zSGVscGVycy52YWxpZGF0ZUFsbFNlbGVjdGlvbnNGb3JWZXJzZShuZXdWZXJzZVRleHQsIGJvb2tJZCwgY2hhcHRlciwgdmVyc2UsIF9ncm91cHNEYXRhLCAoY2hlY2ssIGludmFsaWRhdGVkKSA9PiB7XG4gICAgICBpZiAoY2hlY2spIHtcbiAgICAgICAgY29uc3QgY3VycmVudENoZWNrSWQgPSBjdXJyZW50Q2hlY2s/LmNvbnRleHRJZD8uY2hlY2tJZFxuICAgICAgICBjb25zdCBjaGVja0lkID0gY2hlY2s/LmNvbnRleHRJZD8uY2hlY2tJZFxuXG4gICAgICAgIGlmIChjaGVja0lkID09PSBjdXJyZW50Q2hlY2tJZCkge1xuICAgICAgICAgIC8vIG5lZWQgdG8gdXBkYXRlIGN1cnJlbnQgY2hlY2tcbiAgICAgICAgICBfc2F2ZURhdGEoe1xuICAgICAgICAgICAgaW52YWxpZGF0ZWQsXG4gICAgICAgICAgICB2ZXJzZUVkaXRzOiB0cnVlLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cblxuICAgICAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1lZGl0VGFyZ2V0VmVyc2UgLSBjaGVjayB2YWxpZGF0ZWQsIHN0YXRlIGNoYW5nZWQ6IGludmFsaWQ6ICR7aW52YWxpZGF0ZWR9YCwgY2hlY2spXG4gICAgICAgIGNoYW5nZWREYXRhID0gY2hhbmdlZERhdGEgfHwgX3NhdmVDaGVja2luZ0RhdGEoY2hlY2ssIHsgaW52YWxpZGF0ZWQsIHZlcnNlRWRpdHM6IHRydWUgfSlcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgaWYgKGNoYW5nZWREYXRhKSB7XG4gICAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1lZGl0VGFyZ2V0VmVyc2UgLSBjaGFuZ2VzIGRldGVjdGVkIHVwZGF0aW5nIGdyb3Vwc0RhdGFgKVxuICAgICAgc2V0U3RhdGUoe1xuICAgICAgICBncm91cHNEYXRhOiBfZ3JvdXBzRGF0YVxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyBzZXR0aW5ncyB3aXRoIG5ldyBCaWJsZSBkYXRhIGFuZCBwYW5lIGNvbmZpZ3VyYXRpb25zXG4gICAqIE9yZ2FuaXplcyBCaWJsZXMgYnkgbGFuZ3VhZ2UgYW5kIGluaXRpYWxpemVzIHBhbmUgc2V0dGluZ3NcbiAgICogQHBhcmFtIHtBcnJheX0gbmV3QmlibGVzIC0gQXJyYXkgb2YgQmlibGUgb2JqZWN0c1xuICAgKiBAcGFyYW0ge29iamVjdH0gdGFyZ2V0QmlibGUgLSBUYXJnZXQgQmlibGUgZGF0YVxuICAgKi9cbiAgZnVuY3Rpb24gdXBkYXRlU2V0dGluZ3MobmV3QmlibGVzLCB0YXJnZXRCaWJsZSkge1xuICAgIGNvbnN0IF9iaWJsZXMgPSB7fVxuICAgIGxldCBfcGFuZVNldHRpbmdzID0gW11cbiAgICBjb25zdCBfcGFuZUtleVNldHRpbmdzID0gaW5pdGlhbFNldHRpbmdzPy5wYW5lS2V5U2V0dGluZ3MgfHwge31cbiAgICBpZiAobmV3QmlibGVzPy5sZW5ndGgpIHtcbiAgICAgIGZvciAoY29uc3QgYmlibGUgb2YgbmV3QmlibGVzKSB7XG4gICAgICAgIGxldCBsYW5ndWFnZUlkID0gYmlibGU/Lmxhbmd1YWdlSWRcbiAgICAgICAgY29uc3Qgb3duZXIgPSBiaWJsZT8ub3duZXJcbiAgICAgICAgY29uc3QgYm9vayA9IGJpYmxlPy5ib29rXG4gICAgICAgIGNvbnN0IGJpYmxlSWQgPSBiaWJsZT8uYmlibGVJZFxuICAgICAgICBpZiAobGFuZ3VhZ2VJZCA9PT0gTlRfT1JJR19MQU5HIHx8IGxhbmd1YWdlSWQgPT09IE9UX09SSUdfTEFORykge1xuICAgICAgICAgIGxhbmd1YWdlSWQgPSAnb3JpZ2luYWxMYW5ndWFnZSdcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBrZXkgPSBgJHtsYW5ndWFnZUlkfS8ke2JpYmxlSWR9LyR7b3duZXJ9YFxuICAgICAgICBjb25zdCBpbml0aWFsUGFuZVNldHRpbmdzID0gX3BhbmVLZXlTZXR0aW5ncz8uW2tleV1cbiAgICAgICAgY29uc3QgbGFuZ0tleSA9IGAke2xhbmd1YWdlSWR9XyR7b3duZXJ9YFxuICAgICAgICBzYXZlQmlibGVUb0tleShfYmlibGVzLCBsYW5nS2V5LCBiaWJsZUlkLCBib29rKVxuICAgICAgICBzYXZlQmlibGVUb0tleShfYmlibGVzLCBsYW5ndWFnZUlkLCBiaWJsZUlkLCBib29rKSAvLyBhbHNvIHNhdmUgYXMgZGVmYXVsdCBmb3IgbGFuZ3VhZ2Ugd2l0aG91dCBvd25lclxuICAgICAgICBjb25zdCBwYW5lID0gaW5pdGlhbFBhbmVTZXR0aW5ncyB8fCB7XG4gICAgICAgICAgLi4uYmlibGUsXG4gICAgICAgICAgbGFuZ3VhZ2VJZFxuICAgICAgICB9XG4gICAgICAgIF9wYW5lU2V0dGluZ3MucHVzaChwYW5lKVxuICAgICAgICBpZiAoIWluaXRpYWxQYW5lU2V0dGluZ3MpIHtcbiAgICAgICAgICBfcGFuZUtleVNldHRpbmdzW2tleV0gPSBwYW5lXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgX3BhbmVTZXR0aW5ncyA9IFtdXG4gICAgfVxuXG4gICAgY29uc3QgX3Rvb2xzU2V0dGluZ3MgPSBpbml0aWFsU2V0dGluZ3M/LnRvb2xzU2V0dGluZ3MgfHxcbiAgICB7XG4gICAgICAnQ2hlY2tBcmVhJzoge1xuICAgICAgICAnZm9udFNpemUnOiAxMDBcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgX21hbmlmZXN0ID0gaW5pdGlhbFNldHRpbmdzPy5tYW5pZmVzdCB8fFxuICAgIHtcbiAgICAgIGxhbmd1YWdlX25hbWU6IHRhcmdldEJpYmxlPy5tYW5pZmVzdD8uZHVibGluX2NvcmU/Lmxhbmd1YWdlPy50aXRsZSB8fCAnQ3VycmVudCcsXG4gICAgICBwcm9qZWN0Rm9udDogdGFyZ2V0QmlibGU/Lm1hbmlmZXN0Py5wcm9qZWN0Rm9udCB8fCAnJ1xuICAgIH1cblxuICAgIGNvbnN0IGFwcFNldHRpbmdzID0gaW5pdGlhbFNldHRpbmdzPy5hcHBTZXR0aW5ncyB8fCB7fVxuICAgIF9tYW5pZmVzdCA9IHtcbiAgICAgIC4uLl9tYW5pZmVzdCxcbiAgICAgIC4uLmFwcFNldHRpbmdzIC8vIG9sZGVyIGNvZGUgaXMgbG9va2luZyBmb3IgYXBwU2V0dGluZ3MgaW4gbWFuaWZlc3RcbiAgICB9XG5cbiAgICBzZXRCaWJsZXMoX2JpYmxlcylcbiAgICBzZXRUYXJnZXRCaWJsZSh0YXJnZXRCaWJsZSlcbiAgICBzZXRTZXR0aW5ncyh7XG4gICAgICBwYW5lU2V0dGluZ3M6IF9wYW5lU2V0dGluZ3MsXG4gICAgICBwYW5lS2V5U2V0dGluZ3M6IF9wYW5lS2V5U2V0dGluZ3MsXG4gICAgICB0b29sc1NldHRpbmdzOiBfdG9vbHNTZXR0aW5ncyxcbiAgICAgIG1hbmlmZXN0OiBfbWFuaWZlc3QsXG4gICAgICBuZXdDb21tZW50OiAnJyxcbiAgICAgIGFwcFNldHRpbmdzLFxuICAgIH0sIGZhbHNlKVxuICB9XG5cbiAgLyoqXG4gICAqIFdyYXBwZXIgZm9yIGdldFNjcmlwdHVyZUZyb21SZWZlcmVuY2Ugd2l0aCBjdXJyZW50IEJpYmxlcyBkYXRhXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBsYW5nIC0gTGFuZ3VhZ2UgSURcbiAgICogQHBhcmFtIHtzdHJpbmd9IGlkIC0gQmlibGUgSURcbiAgICogQHBhcmFtIHtzdHJpbmd9IGJvb2sgLSBCb29rIElEXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjaGFwdGVyIC0gQ2hhcHRlciBudW1iZXJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHZlcnNlIC0gVmVyc2UgbnVtYmVyXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFNjcmlwdHVyZSB0ZXh0XG4gICAqL1xuICBmdW5jdGlvbiBfZ2V0U2NyaXB0dXJlRnJvbVJlZmVyZW5jZShsYW5nLCBpZCwgYm9vaywgY2hhcHRlciwgdmVyc2UpIHtcbiAgICByZXR1cm4gZ2V0U2NyaXB0dXJlRnJvbVJlZmVyZW5jZShiaWJsZXMsIGxhbmcsIGlkLCBib29rLCBjaGFwdGVyLCB2ZXJzZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBFZmZlY3QgaG9vayB0byB1cGRhdGUgc2V0dGluZ3Mgd2hlbiBCaWJsZXMgb3IgdGFyZ2V0IEJpYmxlIGNoYW5nZXNcbiAgICovXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgdXBkYXRlU2V0dGluZ3MoYmlibGVzXywgdGFyZ2V0QmlibGVfKVxuICB9LCBbYmlibGVzXywgdGFyZ2V0QmlibGVfXSlcblxuICAvLyBidWlsZCB0aGUgdGl0bGVcbiAgY29uc3QgeyB0YXJnZXRfbGFuZ3VhZ2UsIHByb2plY3QgfSA9IG1hbmlmZXN0O1xuICBsZXQgZXhwYW5kZWRTY3JpcHR1cmVQYW5lVGl0bGUgPSBwcm9qZWN0Py50aXRsZSB8fCAnJztcblxuICBpZiAodGFyZ2V0X2xhbmd1YWdlPy5ib29rPy5uYW1lKSB7XG4gICAgZXhwYW5kZWRTY3JpcHR1cmVQYW5lVGl0bGUgPSB0YXJnZXRfbGFuZ3VhZ2UuYm9vay5uYW1lO1xuICB9XG5cblxuICBjb25zdCBzdHlsZVByb3BzID0gc3R5bGVzIHx8IHt9XG4gIGNvbnN0IF9jaGVja2VyU3R5bGVzID0ge1xuICAgIC4uLmxvY2FsU3R5bGVzLmNvbnRhaW5lckRpdixcbiAgICAuLi5zdHlsZVByb3BzLFxuICB9XG5cbiAgcmV0dXJuIChcbiAgICByZWFkeVRvRGlzcGxheUNoZWNrZXIgP1xuICAgICAgPGRpdiBpZD0nY2hlY2tlcicgc3R5bGU9e19jaGVja2VyU3R5bGVzfT5cbiAgICAgICAgPEdyb3VwTWVudUNvbXBvbmVudFxuICAgICAgICAgIGJvb2tOYW1lPXtib29rTmFtZX1cbiAgICAgICAgICBjaGFuZ2VDdXJyZW50Q29udGV4dElkPXtjaGFuZ2VDdXJyZW50Q2hlY2tffVxuICAgICAgICAgIGNvbnRleHRJZD17Y3VycmVudENvbnRleHRJZH1cbiAgICAgICAgICBkaXJlY3Rpb249e2RpcmVjdGlvbn1cbiAgICAgICAgICBncm91cHNEYXRhPXtncm91cHNEYXRhfVxuICAgICAgICAgIGdyb3Vwc0luZGV4PXtncm91cHNJbmRleH1cbiAgICAgICAgICB0YXJnZXRMYW5ndWFnZUZvbnQ9e3RhcmdldExhbmd1YWdlRm9udH1cbiAgICAgICAgICB0cmFuc2xhdGU9e3RyYW5zbGF0ZX1cbiAgICAgICAgLz5cbiAgICAgICAgPGRpdiBzdHlsZT17bG9jYWxTdHlsZXMuY2VudGVyRGl2fT5cbiAgICAgICAgICB7IGJpYmxlcyAmJiBPYmplY3Qua2V5cyhiaWJsZXMpLmxlbmd0aCAmJlxuICAgICAgICAgICAgPGRpdiBzdHlsZT17bG9jYWxTdHlsZXMuc2NyaXB0dXJlUGFuZURpdn0+XG4gICAgICAgICAgICAgIDxTY3JpcHR1cmVQYW5lXG4gICAgICAgICAgICAgICAgYWRkT2JqZWN0UHJvcGVydHlUb01hbmlmZXN0PXthZGRPYmplY3RQcm9wZXJ0eVRvTWFuaWZlc3R9XG4gICAgICAgICAgICAgICAgYmlibGVzPXtiaWJsZXN9XG4gICAgICAgICAgICAgICAgY29tcGxleFNjcmlwdEZvbnRzPXtjb21wbGV4U2NyaXB0Rm9udHN9XG4gICAgICAgICAgICAgICAgY29udGV4dElkPXtjdXJyZW50Q29udGV4dElkfVxuICAgICAgICAgICAgICAgIGN1cnJlbnRQYW5lU2V0dGluZ3M9e3BhbmVTZXR0aW5nc31cbiAgICAgICAgICAgICAgICBlZGl0VmVyc2VSZWY9e251bGx9XG4gICAgICAgICAgICAgICAgZWRpdFRhcmdldFZlcnNlPXtlZGl0VGFyZ2V0VmVyc2V9XG4gICAgICAgICAgICAgICAgZXhwYW5kZWRTY3JpcHR1cmVQYW5lVGl0bGU9e2V4cGFuZGVkU2NyaXB0dXJlUGFuZVRpdGxlfVxuICAgICAgICAgICAgICAgIGdldEF2YWlsYWJsZVNjcmlwdHVyZVBhbmVTZWxlY3Rpb25zPXtudWxsfVxuICAgICAgICAgICAgICAgIGdldExleGljb25EYXRhPXtnZXRMZXhpY29uRGF0YV99XG4gICAgICAgICAgICAgICAgbWFrZVN1cmVCaWJsZXNMb2FkZWRGb3JUb29sPXtudWxsfVxuICAgICAgICAgICAgICAgIHByb2plY3REZXRhaWxzUmVkdWNlcj17eyBtYW5pZmVzdCB9fVxuICAgICAgICAgICAgICAgIHNlbGVjdGlvbnM9e2N1cnJlbnRTZWxlY3Rpb25zfVxuICAgICAgICAgICAgICAgIHNldFRvb2xTZXR0aW5ncz17c2V0VG9vbFNldHRpbmdzU2NyaXB0dXJlfVxuICAgICAgICAgICAgICAgIHNob3dQb3BvdmVyPXtzaG93UG9wb3Zlcn1cbiAgICAgICAgICAgICAgICBvbkV4cGFuZGVkU2NyaXB0dXJlUGFuZVNob3c9e251bGx9XG4gICAgICAgICAgICAgICAgdHJhbnNsYXRlPXt0cmFuc2xhdGV9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxDaGVja0luZm9DYXJkXG4gICAgICAgICAgICAgIGdldFNjcmlwdHVyZUZyb21SZWZlcmVuY2U9e19nZXRTY3JpcHR1cmVGcm9tUmVmZXJlbmNlfVxuICAgICAgICAgICAgICBvbkxpbmtDbGljaz17KCkgPT4gZmFsc2V9XG4gICAgICAgICAgICAgIG9uU2VlTW9yZUNsaWNrPXsoKSA9PiBmYWxzZX1cbiAgICAgICAgICAgICAgcGhyYXNlPXtncm91cFBocmFzZX1cbiAgICAgICAgICAgICAgc2VlTW9yZUxhYmVsPXt0cmFuc2xhdGUoJ3NlZV9tb3JlJyl9XG4gICAgICAgICAgICAgIHNob3dTZWVNb3JlQnV0dG9uPXtmYWxzZX1cbiAgICAgICAgICAgICAgdGl0bGU9e2dyb3VwVGl0bGV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPFZlcnNlQ2hlY2tcbiAgICAgICAgICAgICAgYWxpZ25lZEdMVGV4dD17YWxpZ25lZEdMVGV4dH1cbiAgICAgICAgICAgICAgYm9va0RldGFpbHM9e2Jvb2tEZXRhaWxzfVxuICAgICAgICAgICAgICBib29rbWFya0VuYWJsZWQ9e2Jvb2ttYXJrRW5hYmxlZH1cbiAgICAgICAgICAgICAgY2FuY2VsRWRpdFZlcnNlPXtjYW5jZWxFZGl0VmVyc2V9XG4gICAgICAgICAgICAgIGNhbmNlbENvbW1lbnQ9e2NhbmNlbENvbW1lbnR9XG4gICAgICAgICAgICAgIGNhbmNlbFNlbGVjdGlvbj17Y2FuY2VsU2VsZWN0aW9ufVxuICAgICAgICAgICAgICBjaGFuZ2VNb2RlPXtjaGFuZ2VNb2RlfVxuICAgICAgICAgICAgICBjaGFuZ2VTZWxlY3Rpb25zSW5Mb2NhbFN0YXRlPXtjaGFuZ2VTZWxlY3Rpb25zSW5Mb2NhbFN0YXRlfVxuICAgICAgICAgICAgICBjaGVja0lmQ29tbWVudENoYW5nZWQ9e2NoZWNrSWZDb21tZW50Q2hhbmdlZH1cbiAgICAgICAgICAgICAgY2hlY2tJZlZlcnNlQ2hhbmdlZD17Y2hlY2tJZlZlcnNlQ2hhbmdlZH1cbiAgICAgICAgICAgICAgY2xlYXJTZWxlY3Rpb249e2NsZWFyU2VsZWN0aW9ufVxuICAgICAgICAgICAgICBjb21tZW50VGV4dD17Y29tbWVudFRleHR9XG4gICAgICAgICAgICAgIGNvbnRleHRJZD17Y3VycmVudENvbnRleHRJZH1cbiAgICAgICAgICAgICAgZGlhbG9nTW9kYWxWaXNpYmlsaXR5ID0ge2ZhbHNlfVxuICAgICAgICAgICAgICBpc0NvbW1lbnRDaGFuZ2VkPXtpc0NvbW1lbnRDaGFuZ2VkfVxuICAgICAgICAgICAgICBpc1ZlcnNlQ2hhbmdlZD17aXNWZXJzZUNoYW5nZWR9XG4gICAgICAgICAgICAgIGlzVmVyc2VFZGl0ZWQ9e2lzVmVyc2VFZGl0ZWR9XG4gICAgICAgICAgICAgIGhhbmRsZUVkaXRWZXJzZT17aGFuZGxlRWRpdFZlcnNlfVxuICAgICAgICAgICAgICBoYW5kbGVHb1RvTmV4dD17aGFuZGxlR29Ub05leHR9XG4gICAgICAgICAgICAgIGhhbmRsZUdvVG9QcmV2aW91cz17aGFuZGxlR29Ub1ByZXZpb3VzfVxuICAgICAgICAgICAgICBoYW5kbGVPcGVuRGlhbG9nPXtudWxsfVxuICAgICAgICAgICAgICBpc1ZlcnNlSW52YWxpZGF0ZWQ9e2lzVmVyc2VJbnZhbGlkYXRlZH1cbiAgICAgICAgICAgICAgaGFuZGxlQ2xvc2VEaWFsb2c9e251bGx9XG4gICAgICAgICAgICAgIGhhbmRsZUNvbW1lbnQ9e2hhbmRsZUNvbW1lbnR9XG4gICAgICAgICAgICAgIGhhbmRsZVNraXA9e251bGx9XG4gICAgICAgICAgICAgIGhhbmRsZVRhZ3NDaGVja2JveD17aGFuZGxlVGFnc0NoZWNrYm94fVxuICAgICAgICAgICAgICBsb2NhbE5vdGhpbmdUb1NlbGVjdD17dGVtcE5vdGhpbmdUb1NlbGVjdH1cbiAgICAgICAgICAgICAgbWFuaWZlc3Q9e21hbmlmZXN0fVxuICAgICAgICAgICAgICBtYXhpbXVtU2VsZWN0aW9ucz17bWF4aW11bVNlbGVjdGlvbnN9XG4gICAgICAgICAgICAgIG1vZGU9e21vZGV9XG4gICAgICAgICAgICAgIG5ld1NlbGVjdGlvbnM9e3RlbXBTZWxlY3Rpb25zfVxuICAgICAgICAgICAgICBub3RoaW5nVG9TZWxlY3Q9e2N1cnJlbnROb3RoaW5nVG9TZWxlY3R9XG4gICAgICAgICAgICAgIG9wZW5BbGVydERpYWxvZz17b3BlbkFsZXJ0RGlhbG9nfVxuICAgICAgICAgICAgICBzYXZlQ29tbWVudD17c2F2ZUNvbW1lbnR9XG4gICAgICAgICAgICAgIHNhdmVFZGl0VmVyc2U9e3NhdmVFZGl0VmVyc2V9XG4gICAgICAgICAgICAgIHNhdmVTZWxlY3Rpb249e19zYXZlU2VsZWN0aW9ufVxuICAgICAgICAgICAgICBzZWxlY3Rpb25zPXtjdXJyZW50U2VsZWN0aW9uc31cbiAgICAgICAgICAgICAgc2V0VG9vbFNldHRpbmdzPXtzZXRUb29sU2V0dGluZ3N9XG4gICAgICAgICAgICAgIHRhZ3M9e25ld1RhZ3MgfHwgW119XG4gICAgICAgICAgICAgIHRhcmdldEJpYmxlPXt0YXJnZXRCaWJsZX1cbiAgICAgICAgICAgICAgdGFyZ2V0TGFuZ3VhZ2VEZXRhaWxzPXt0YXJnZXRMYW5ndWFnZURldGFpbHN9XG4gICAgICAgICAgICAgIHRvZ2dsZUJvb2ttYXJrPXt0b2dnbGVCb29rbWFya31cbiAgICAgICAgICAgICAgdG9nZ2xlTm90aGluZ1RvU2VsZWN0PXt0b2dnbGVOb3RoaW5nVG9TZWxlY3R9XG4gICAgICAgICAgICAgIHRvb2xzU2V0dGluZ3M9e3Rvb2xzU2V0dGluZ3N9XG4gICAgICAgICAgICAgIHRyYW5zbGF0ZT17dHJhbnNsYXRlfVxuICAgICAgICAgICAgICB1bmZpbHRlcmVkVmVyc2VUZXh0PXt1bmZpbHRlcmVkVmVyc2VUZXh0fVxuICAgICAgICAgICAgICB2YWxpZGF0ZVNlbGVjdGlvbnM9e3ZhbGlkYXRlU2VsZWN0aW9uc31cbiAgICAgICAgICAgICAgdmVyc2VUZXh0PXt2ZXJzZVRleHR9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAge3Nob3dEb2N1bWVudCAmJiA8VHJhbnNsYXRpb25IZWxwc1xuICAgICAgICAgIG1vZGFsQXJ0aWNsZT17YXJ0aWNsZX1cbiAgICAgICAgICBhcnRpY2xlPXthcnRpY2xlfVxuICAgICAgICAgIGV4cGFuZGVkSGVscHNCdXR0b25Ib3ZlclRleHQ9eydDbGljayB0byBzaG93IGV4cGFuZGVkIGhlbHAgcGFuZSd9XG4gICAgICAgICAgbW9kYWxUaXRsZT17J3RyYW5zbGF0aW9uSGVscHMnfVxuICAgICAgICAgIHRyYW5zbGF0ZT17dHJhbnNsYXRlfVxuICAgICAgICAgIGlzU2hvd0hlbHBzRXhwYW5kZWQ9e3Nob3dIZWxwc01vZGFsfVxuICAgICAgICAgIG9wZW5FeHBhbmRlZEhlbHBzTW9kYWw9e3RvZ2dsZUhlbHBzTW9kYWx9XG4gICAgICAgICAgc2lkZWJhclRvZ2dsZT17dG9nZ2xlSGVscHN9XG4gICAgICAgICAgaXNTaG93SGVscHNTaWRlYmFyPXtzaG93SGVscHN9XG4gICAgICAgIC8+fVxuICAgICAgICB7cG9wb3ZlclByb3BzPy5wb3BvdmVyVmlzaWJpbGl0eSAmJlxuICAgICAgICAgIDxQb3BvdmVyQ29udGFpbmVyIHsuLi5wb3BvdmVyUHJvcHN9IC8+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgICAgOlxuICAgICAgJ1dhaXRpbmcgZm9yIERhdGEnXG4gICk7XG59O1xuXG5DaGVja2VyLnByb3BUeXBlcyA9IHtcbiAgc3R5bGVzOlByb3BUeXBlcy5vYmplY3QsXG4gIGFsaWduZWRHbEJpYmxlOiBQcm9wVHlwZXMub2JqZWN0LFxuICBiaWJsZXM6IFByb3BUeXBlcy5hcnJheSxcbiAgY2hhbmdlVGFyZ2V0VmVyc2U6IFByb3BUeXBlcy5mdW5jLFxuICBjaGVja2luZ0RhdGE6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgY2hlY2tUeXBlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBjb250ZXh0SWQ6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgZ2xXb3Jkc0RhdGE6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgZ2V0TGV4aWNvbkRhdGE6IFByb3BUeXBlcy5mdW5jLFxuICBpbml0aWFsU2V0dGluZ3M6IFByb3BUeXBlcy5vYmplY3QsXG4gIHNhdmVDaGVja2luZ0RhdGE6IFByb3BUeXBlcy5mdW5jLFxuICBzYXZlU2V0dGluZ3M6IFByb3BUeXBlcy5mdW5jLFxuICBzaG93RG9jdW1lbnQ6IFByb3BUeXBlcy5ib29sLFxuICB0YXJnZXRCaWJsZTogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICB0YXJnZXRMYW5ndWFnZURldGFpbHM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgdHJhbnNsYXRlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxufTtcbmV4cG9ydCBkZWZhdWx0IENoZWNrZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUEwQ0EsSUFBQUEsWUFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsTUFBQSxHQUFBQyx1QkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsVUFBQSxHQUFBQyxzQkFBQSxDQUFBSixPQUFBO0FBQ0EsSUFBQUssT0FBQSxHQUFBRCxzQkFBQSxDQUFBSixPQUFBO0FBQ0EsSUFBQU0sbUJBQUEsR0FBQUYsc0JBQUEsQ0FBQUosT0FBQTtBQUNBLElBQUFPLGVBQUEsR0FB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
|
|
@@ -7,7 +7,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports["default"] = void 0;
|
|
8
8
|
var _react = _interopRequireDefault(require("react"));
|
|
9
9
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
10
|
-
var
|
|
10
|
+
var _material = require("@mui/material");
|
|
11
11
|
var _InstructionsAreaTextSelection = _interopRequireWildcard(require("../InstructionsAreaTextSelection"));
|
|
12
12
|
require("./InstructionsArea.styles.css");
|
|
13
13
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
@@ -18,20 +18,37 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default":
|
|
|
18
18
|
|
|
19
19
|
function getSelectionString(invalidated, translate) {
|
|
20
20
|
if (invalidated) {
|
|
21
|
-
return /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("span", null, translate('selection_invalidated'), /*#__PURE__*/_react["default"].createElement(
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
21
|
+
return /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("span", null, translate('selection_invalidated'), /*#__PURE__*/_react["default"].createElement(_material.Tooltip, {
|
|
22
|
+
title: translate('invalidated_tooltip'),
|
|
23
|
+
placement: "top",
|
|
24
|
+
arrow: true,
|
|
25
|
+
slotProps: {
|
|
26
|
+
tooltip: {
|
|
27
|
+
sx: {
|
|
28
|
+
backgroundColor: '#333',
|
|
29
|
+
// dark background
|
|
30
|
+
color: '#fff',
|
|
31
|
+
// white text
|
|
32
|
+
fontSize: '0.8em',
|
|
33
|
+
borderRadius: '8px',
|
|
34
|
+
p: 1,
|
|
35
|
+
boxShadow: 3
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
arrow: {
|
|
39
|
+
sx: {
|
|
40
|
+
color: '#333'
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}, /*#__PURE__*/_react["default"].createElement("strong", {
|
|
28
45
|
style: {
|
|
29
46
|
verticalAlign: 'super',
|
|
30
|
-
fontSize: '0.8em'
|
|
47
|
+
fontSize: '0.8em',
|
|
48
|
+
marginLeft: 4,
|
|
49
|
+
cursor: 'help'
|
|
31
50
|
}
|
|
32
|
-
}, "1"))
|
|
33
|
-
id: "selections-instructions-area-tooltip"
|
|
34
|
-
}));
|
|
51
|
+
}, "1"))));
|
|
35
52
|
}
|
|
36
53
|
}
|
|
37
54
|
var InstructionsArea = function InstructionsArea(_ref) {
|
|
@@ -107,4 +124,4 @@ InstructionsArea.defaultProps = {
|
|
|
107
124
|
targetLanguageDirection: 'ltr'
|
|
108
125
|
};
|
|
109
126
|
var _default = exports["default"] = InstructionsArea;
|
|
110
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9wcm9wVHlwZXMiLCJfcmVhY3RUb29sdGlwIiwiX0luc3RydWN0aW9uc0FyZWFUZXh0U2VsZWN0aW9uIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJlIiwidCIsIldlYWtNYXAiLCJyIiwibiIsIl9fZXNNb2R1bGUiLCJvIiwiaSIsImYiLCJfX3Byb3RvX18iLCJfdHlwZW9mIiwiaGFzIiwiZ2V0Iiwic2V0IiwiX3QiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImdldFNlbGVjdGlvblN0cmluZyIsImludmFsaWRhdGVkIiwidHJhbnNsYXRlIiwiY3JlYXRlRWxlbWVudCIsInN0eWxlIiwidmVydGljYWxBbGlnbiIsImZvbnRTaXplIiwiVG9vbHRpcCIsImlkIiwiSW5zdHJ1Y3Rpb25zQXJlYSIsIl9yZWYiLCJtb2RlIiwidmVyc2VUZXh0Iiwic2VsZWN0aW9ucyIsImFsaWduZWRHTFRleHQiLCJub3RoaW5nVG9TZWxlY3QiLCJ0YXJnZXRMYW5ndWFnZUZvbnQiLCJkb250U2hvd1RyYW5zbGF0aW9uIiwidGFyZ2V0TGFuZ3VhZ2VEaXJlY3Rpb24iLCJjbGFzc05hbWUiLCJTZWxlY3RlZFRleHQiLCJsZW5ndGgiLCJjb2xvciIsImNvbmNhdCIsImxpbmVIZWlnaHQiLCJsYW5ndWFnZURpcmVjdGlvbiIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsImZ1bmMiLCJpc1JlcXVpcmVkIiwic3RyaW5nIiwiYXJyYXkiLCJib29sIiwiZGVmYXVsdFByb3BzIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3RjX3VpX3Rvb2xraXQvVmVyc2VDaGVjay9JbnN0cnVjdGlvbnNBcmVhL2luZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IHtUb29sdGlwIGFzIFJlYWN0VG9vbHRpcH0gZnJvbSAncmVhY3QtdG9vbHRpcCc7XG4vLyBjb21wb25lbnRzXG5pbXBvcnQgSW5zdHJ1Y3Rpb25zQXJlYVRleHRTZWxlY3Rpb24sIHsgU2VsZWN0ZWRUZXh0IH0gZnJvbSAnLi4vSW5zdHJ1Y3Rpb25zQXJlYVRleHRTZWxlY3Rpb24nO1xuLy8gY3NzXG5pbXBvcnQgJy4vSW5zdHJ1Y3Rpb25zQXJlYS5zdHlsZXMuY3NzJztcblxuZnVuY3Rpb24gZ2V0U2VsZWN0aW9uU3RyaW5nKGludmFsaWRhdGVkLCB0cmFuc2xhdGUpIHtcbiAgaWYgKGludmFsaWRhdGVkKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXY+XG4gICAgICAgIDxzcGFuPnt0cmFuc2xhdGUoJ3NlbGVjdGlvbl9pbnZhbGlkYXRlZCcpfVxuICAgICAgICAgIDxzdHJvbmdcbiAgICAgICAgICAgIGRhdGEtdGlwPXt0cmFuc2xhdGUoJ2ludmFsaWRhdGVkX3Rvb2x0aXAnKX1cbiAgICAgICAgICAgIGRhdGEtcGxhY2U9XCJ0b3BcIlxuICAgICAgICAgICAgZGF0YS1lZmZlY3Q9XCJmbG9hdFwiXG4gICAgICAgICAgICBkYXRhLXR5cGU9XCJkYXJrXCJcbiAgICAgICAgICAgIGRhdGEtY2xhc3M9XCJzZWxlY3Rpb24tdG9vbHRpcFwiXG4gICAgICAgICAgICBkYXRhLWRlbGF5LWhpZGU9XCIxMDBcIlxuICAgICAgICAgICAgc3R5bGU9e3sgdmVydGljYWxBbGlnbjogJ3N1cGVyJywgZm9udFNpemU6ICcwLjhlbScgfX0+XG4gICAgICAgICAgICAxXG4gICAgICAgICAgPC9zdHJvbmc+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPFJlYWN0VG9vbHRpcCBpZD1cInNlbGVjdGlvbnMtaW5zdHJ1Y3Rpb25zLWFyZWEtdG9vbHRpcFwiLz5cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cbn1cblxuY29uc3QgSW5zdHJ1Y3Rpb25zQXJlYSA9ICh7XG4gIG1vZGUsXG4gIHZlcnNlVGV4dCxcbiAgdHJhbnNsYXRlLFxuICBzZWxlY3Rpb25zLFxuICBpbnZhbGlkYXRlZCxcbiAgYWxpZ25lZEdMVGV4dCxcbiAgbm90aGluZ1RvU2VsZWN0LFxuICB0YXJnZXRMYW5ndWFnZUZvbnQsXG4gIGRvbnRTaG93VHJhbnNsYXRpb24sXG4gIHRhcmdldExhbmd1YWdlRGlyZWN0aW9uLFxufSkgPT4ge1xuICBpZiAoIXZlcnNlVGV4dCkge1xuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT0naW5zdHJ1Y3Rpb25zLWFyZWEnPlxuICAgICAgICA8c3Bhbj57dHJhbnNsYXRlKCdlbXB0eV92ZXJzZScpfTwvc3Bhbj48YnIgLz5cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cblxuICBpZiAobm90aGluZ1RvU2VsZWN0KSB7IC8vIGlmIG5vdGhpbmdUb1NlbGVjdCBpcyB0cnVlXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPSdpbnN0cnVjdGlvbnMtYXJlYSc+XG4gICAgICAgIDxzcGFuPnt0cmFuc2xhdGUoJ25vX3NlbGVjdGlvbl9uZWVkZWRfZGVzY3JpcHRpb24nKX08L3NwYW4+PGJyIC8+XG4gICAgICAgIDxTZWxlY3RlZFRleHQ+XG4gICAgICAgICAgPHN0cm9uZyBjbGFzc05hbWU9XCJuby1zZWxlY3Rpb24tbmVlZGVkXCI+XG4gICAgICAgICAgICB7dHJhbnNsYXRlKCdub19zZWxlY3Rpb25fbmVlZGVkJyl9XG4gICAgICAgICAgPC9zdHJvbmc+XG4gICAgICAgIDwvU2VsZWN0ZWRUZXh0PlxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxuXG4gIGlmIChzZWxlY3Rpb25zLmxlbmd0aCA9PT0gMCAmJiBkb250U2hvd1RyYW5zbGF0aW9uICYmICFpbnZhbGlkYXRlZCkgeyAvLyBpZiBpbnZhbGlkYXRlZCB3ZSBoYWQgcHJldmlvdXMgc2VsZWN0aW9uXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPSdpbnN0cnVjdGlvbnMtYXJlYSc+XG4gICAgICAgIDxzcGFuPnt0cmFuc2xhdGUoJ25vX3NlbGVjdGlvbicpfTwvc3Bhbj48YnIgLz5cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cblxuICBpZiAobW9kZSA9PT0gJ3NlbGVjdCcgfHwgaW52YWxpZGF0ZWQpIHsgLy8gaWYgaW52YWxpZGF0ZWQgd2UgaGFkIHByZXZpb3VzIHNlbGVjdGlvblxuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT0naW5zdHJ1Y3Rpb25zLWFyZWEnPlxuICAgICAgICB7Z2V0U2VsZWN0aW9uU3RyaW5nKGludmFsaWRhdGVkLCB0cmFuc2xhdGUpfVxuICAgICAgICA8c3Bhbj57dHJhbnNsYXRlKCdwbGVhc2Vfc2VsZWN0Jyl9PC9zcGFuPjxiciAvPlxuICAgICAgICA8c3Bhbj5cbiAgICAgICAgICA8c3Ryb25nIHN0eWxlPXt7IGNvbG9yOiAndmFyKC0tYWNjZW50LWNvbG9yKScgfX0+XG4gICAgICAgICAgICB7YCR7YWxpZ25lZEdMVGV4dH1gfVxuICAgICAgICAgIDwvc3Ryb25nPlxuICAgICAgICA8L3NwYW4+PGJyIC8+XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT0naW5zdHJ1Y3Rpb25zLWFyZWEnPlxuICAgICAgPHNwYW4+XG4gICAgICAgIDxzdHJvbmcgc3R5bGU9e3sgY29sb3I6ICd2YXIoLS1hY2NlbnQtY29sb3IpJyB9fT5cbiAgICAgICAgICB7YCR7YWxpZ25lZEdMVGV4dH1gfVxuICAgICAgICA8L3N0cm9uZz5cbiAgICAgIDwvc3Bhbj48YnIgLz5cbiAgICAgIDxzcGFuIHN0eWxlPXt7IGxpbmVIZWlnaHQ6IDIgfX0+e3RyYW5zbGF0ZSgndHJhbnNsYXRlZF9hcycpfTwvc3Bhbj48YnIgLz5cbiAgICAgIDxzcGFuPlxuICAgICAgICA8SW5zdHJ1Y3Rpb25zQXJlYVRleHRTZWxlY3Rpb25cbiAgICAgICAgICBzZWxlY3Rpb25zPXtzZWxlY3Rpb25zfVxuICAgICAgICAgIHZlcnNlVGV4dD17dmVyc2VUZXh0fVxuICAgICAgICAgIHRhcmdldExhbmd1YWdlRm9udD17dGFyZ2V0TGFuZ3VhZ2VGb250fVxuICAgICAgICAgIGxhbmd1YWdlRGlyZWN0aW9uPXt0YXJnZXRMYW5ndWFnZURpcmVjdGlvbn1cbiAgICAgICAgLz5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbkluc3RydWN0aW9uc0FyZWEucHJvcFR5cGVzID0ge1xuICB0cmFuc2xhdGU6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIGFsaWduZWRHTFRleHQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgc2VsZWN0aW9uczogUHJvcFR5cGVzLmFycmF5LmlzUmVxdWlyZWQsXG4gIGRvbnRTaG93VHJhbnNsYXRpb246IFByb3BUeXBlcy5ib29sLFxuICB2ZXJzZVRleHQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgbW9kZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgaW52YWxpZGF0ZWQ6IFByb3BUeXBlcy5ib29sLFxuICBub3RoaW5nVG9TZWxlY3Q6IFByb3BUeXBlcy5ib29sLFxuICB0YXJnZXRMYW5ndWFnZUZvbnQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHRhcmdldExhbmd1YWdlRGlyZWN0aW9uOiBQcm9wVHlwZXMuc3RyaW5nLFxufTtcblxuSW5zdHJ1Y3Rpb25zQXJlYS5kZWZhdWx0UHJvcHMgPSB7IHRhcmdldExhbmd1YWdlRGlyZWN0aW9uOiAnbHRyJyB9O1xuXG5leHBvcnQgZGVmYXVsdCBJbnN0cnVjdGlvbnNBcmVhO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsVUFBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsYUFBQSxHQUFBRixP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
|
|
127
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9wcm9wVHlwZXMiLCJfbWF0ZXJpYWwiLCJfSW5zdHJ1Y3Rpb25zQXJlYVRleHRTZWxlY3Rpb24iLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsImUiLCJ0IiwiV2Vha01hcCIsInIiLCJuIiwiX19lc01vZHVsZSIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJzZXQiLCJfdCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZ2V0U2VsZWN0aW9uU3RyaW5nIiwiaW52YWxpZGF0ZWQiLCJ0cmFuc2xhdGUiLCJjcmVhdGVFbGVtZW50IiwiVG9vbHRpcCIsInRpdGxlIiwicGxhY2VtZW50IiwiYXJyb3ciLCJzbG90UHJvcHMiLCJ0b29sdGlwIiwic3giLCJiYWNrZ3JvdW5kQ29sb3IiLCJjb2xvciIsImZvbnRTaXplIiwiYm9yZGVyUmFkaXVzIiwicCIsImJveFNoYWRvdyIsInN0eWxlIiwidmVydGljYWxBbGlnbiIsIm1hcmdpbkxlZnQiLCJjdXJzb3IiLCJJbnN0cnVjdGlvbnNBcmVhIiwiX3JlZiIsIm1vZGUiLCJ2ZXJzZVRleHQiLCJzZWxlY3Rpb25zIiwiYWxpZ25lZEdMVGV4dCIsIm5vdGhpbmdUb1NlbGVjdCIsInRhcmdldExhbmd1YWdlRm9udCIsImRvbnRTaG93VHJhbnNsYXRpb24iLCJ0YXJnZXRMYW5ndWFnZURpcmVjdGlvbiIsImNsYXNzTmFtZSIsIlNlbGVjdGVkVGV4dCIsImxlbmd0aCIsImNvbmNhdCIsImxpbmVIZWlnaHQiLCJsYW5ndWFnZURpcmVjdGlvbiIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsImZ1bmMiLCJpc1JlcXVpcmVkIiwic3RyaW5nIiwiYXJyYXkiLCJib29sIiwiZGVmYXVsdFByb3BzIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3RjX3VpX3Rvb2xraXQvVmVyc2VDaGVjay9JbnN0cnVjdGlvbnNBcmVhL2luZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IHsgVG9vbHRpcCB9IGZyb20gJ0BtdWkvbWF0ZXJpYWwnO1xuXG4vLyBjb21wb25lbnRzXG5pbXBvcnQgSW5zdHJ1Y3Rpb25zQXJlYVRleHRTZWxlY3Rpb24sIHsgU2VsZWN0ZWRUZXh0IH0gZnJvbSAnLi4vSW5zdHJ1Y3Rpb25zQXJlYVRleHRTZWxlY3Rpb24nO1xuLy8gY3NzXG5pbXBvcnQgJy4vSW5zdHJ1Y3Rpb25zQXJlYS5zdHlsZXMuY3NzJztcblxuZnVuY3Rpb24gZ2V0U2VsZWN0aW9uU3RyaW5nKGludmFsaWRhdGVkLCB0cmFuc2xhdGUpIHtcbiAgaWYgKGludmFsaWRhdGVkKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXY+XG4gICAgICAgIDxzcGFuPlxuICAgICAgICAgIHt0cmFuc2xhdGUoJ3NlbGVjdGlvbl9pbnZhbGlkYXRlZCcpfVxuICAgICAgICAgIDxUb29sdGlwXG4gICAgICAgICAgICB0aXRsZT17dHJhbnNsYXRlKCdpbnZhbGlkYXRlZF90b29sdGlwJyl9XG4gICAgICAgICAgICBwbGFjZW1lbnQ9XCJ0b3BcIlxuICAgICAgICAgICAgYXJyb3dcbiAgICAgICAgICAgIHNsb3RQcm9wcz17e1xuICAgICAgICAgICAgICB0b29sdGlwOiB7XG4gICAgICAgICAgICAgICAgc3g6IHtcbiAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJyMzMzMnLCAgICAgLy8gZGFyayBiYWNrZ3JvdW5kXG4gICAgICAgICAgICAgICAgICBjb2xvcjogJyNmZmYnLCAgICAgICAgICAgICAgICAvLyB3aGl0ZSB0ZXh0XG4gICAgICAgICAgICAgICAgICBmb250U2l6ZTogJzAuOGVtJyxcbiAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogJzhweCcsXG4gICAgICAgICAgICAgICAgICBwOiAxLFxuICAgICAgICAgICAgICAgICAgYm94U2hhZG93OiAzLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGFycm93OiB7XG4gICAgICAgICAgICAgICAgc3g6IHsgY29sb3I6ICcjMzMzJyB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3Ryb25nXG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgdmVydGljYWxBbGlnbjogJ3N1cGVyJyxcbiAgICAgICAgICAgICAgICBmb250U2l6ZTogJzAuOGVtJyxcbiAgICAgICAgICAgICAgICBtYXJnaW5MZWZ0OiA0LFxuICAgICAgICAgICAgICAgIGN1cnNvcjogJ2hlbHAnLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAxXG4gICAgICAgICAgICA8L3N0cm9uZz5cbiAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cbn1cblxuY29uc3QgSW5zdHJ1Y3Rpb25zQXJlYSA9ICh7XG4gIG1vZGUsXG4gIHZlcnNlVGV4dCxcbiAgdHJhbnNsYXRlLFxuICBzZWxlY3Rpb25zLFxuICBpbnZhbGlkYXRlZCxcbiAgYWxpZ25lZEdMVGV4dCxcbiAgbm90aGluZ1RvU2VsZWN0LFxuICB0YXJnZXRMYW5ndWFnZUZvbnQsXG4gIGRvbnRTaG93VHJhbnNsYXRpb24sXG4gIHRhcmdldExhbmd1YWdlRGlyZWN0aW9uLFxufSkgPT4ge1xuICBpZiAoIXZlcnNlVGV4dCkge1xuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT0naW5zdHJ1Y3Rpb25zLWFyZWEnPlxuICAgICAgICA8c3Bhbj57dHJhbnNsYXRlKCdlbXB0eV92ZXJzZScpfTwvc3Bhbj48YnIgLz5cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cblxuICBpZiAobm90aGluZ1RvU2VsZWN0KSB7IC8vIGlmIG5vdGhpbmdUb1NlbGVjdCBpcyB0cnVlXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPSdpbnN0cnVjdGlvbnMtYXJlYSc+XG4gICAgICAgIDxzcGFuPnt0cmFuc2xhdGUoJ25vX3NlbGVjdGlvbl9uZWVkZWRfZGVzY3JpcHRpb24nKX08L3NwYW4+PGJyIC8+XG4gICAgICAgIDxTZWxlY3RlZFRleHQ+XG4gICAgICAgICAgPHN0cm9uZyBjbGFzc05hbWU9XCJuby1zZWxlY3Rpb24tbmVlZGVkXCI+XG4gICAgICAgICAgICB7dHJhbnNsYXRlKCdub19zZWxlY3Rpb25fbmVlZGVkJyl9XG4gICAgICAgICAgPC9zdHJvbmc+XG4gICAgICAgIDwvU2VsZWN0ZWRUZXh0PlxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxuXG4gIGlmIChzZWxlY3Rpb25zLmxlbmd0aCA9PT0gMCAmJiBkb250U2hvd1RyYW5zbGF0aW9uICYmICFpbnZhbGlkYXRlZCkgeyAvLyBpZiBpbnZhbGlkYXRlZCB3ZSBoYWQgcHJldmlvdXMgc2VsZWN0aW9uXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPSdpbnN0cnVjdGlvbnMtYXJlYSc+XG4gICAgICAgIDxzcGFuPnt0cmFuc2xhdGUoJ25vX3NlbGVjdGlvbicpfTwvc3Bhbj48YnIgLz5cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cblxuICBpZiAobW9kZSA9PT0gJ3NlbGVjdCcgfHwgaW52YWxpZGF0ZWQpIHsgLy8gaWYgaW52YWxpZGF0ZWQgd2UgaGFkIHByZXZpb3VzIHNlbGVjdGlvblxuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT0naW5zdHJ1Y3Rpb25zLWFyZWEnPlxuICAgICAgICB7Z2V0U2VsZWN0aW9uU3RyaW5nKGludmFsaWRhdGVkLCB0cmFuc2xhdGUpfVxuICAgICAgICA8c3Bhbj57dHJhbnNsYXRlKCdwbGVhc2Vfc2VsZWN0Jyl9PC9zcGFuPjxiciAvPlxuICAgICAgICA8c3Bhbj5cbiAgICAgICAgICA8c3Ryb25nIHN0eWxlPXt7IGNvbG9yOiAndmFyKC0tYWNjZW50LWNvbG9yKScgfX0+XG4gICAgICAgICAgICB7YCR7YWxpZ25lZEdMVGV4dH1gfVxuICAgICAgICAgIDwvc3Ryb25nPlxuICAgICAgICA8L3NwYW4+PGJyIC8+XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT0naW5zdHJ1Y3Rpb25zLWFyZWEnPlxuICAgICAgPHNwYW4+XG4gICAgICAgIDxzdHJvbmcgc3R5bGU9e3sgY29sb3I6ICd2YXIoLS1hY2NlbnQtY29sb3IpJyB9fT5cbiAgICAgICAgICB7YCR7YWxpZ25lZEdMVGV4dH1gfVxuICAgICAgICA8L3N0cm9uZz5cbiAgICAgIDwvc3Bhbj48YnIgLz5cbiAgICAgIDxzcGFuIHN0eWxlPXt7IGxpbmVIZWlnaHQ6IDIgfX0+e3RyYW5zbGF0ZSgndHJhbnNsYXRlZF9hcycpfTwvc3Bhbj48YnIgLz5cbiAgICAgIDxzcGFuPlxuICAgICAgICA8SW5zdHJ1Y3Rpb25zQXJlYVRleHRTZWxlY3Rpb25cbiAgICAgICAgICBzZWxlY3Rpb25zPXtzZWxlY3Rpb25zfVxuICAgICAgICAgIHZlcnNlVGV4dD17dmVyc2VUZXh0fVxuICAgICAgICAgIHRhcmdldExhbmd1YWdlRm9udD17dGFyZ2V0TGFuZ3VhZ2VGb250fVxuICAgICAgICAgIGxhbmd1YWdlRGlyZWN0aW9uPXt0YXJnZXRMYW5ndWFnZURpcmVjdGlvbn1cbiAgICAgICAgLz5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbkluc3RydWN0aW9uc0FyZWEucHJvcFR5cGVzID0ge1xuICB0cmFuc2xhdGU6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIGFsaWduZWRHTFRleHQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgc2VsZWN0aW9uczogUHJvcFR5cGVzLmFycmF5LmlzUmVxdWlyZWQsXG4gIGRvbnRTaG93VHJhbnNsYXRpb246IFByb3BUeXBlcy5ib29sLFxuICB2ZXJzZVRleHQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgbW9kZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgaW52YWxpZGF0ZWQ6IFByb3BUeXBlcy5ib29sLFxuICBub3RoaW5nVG9TZWxlY3Q6IFByb3BUeXBlcy5ib29sLFxuICB0YXJnZXRMYW5ndWFnZUZvbnQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHRhcmdldExhbmd1YWdlRGlyZWN0aW9uOiBQcm9wVHlwZXMuc3RyaW5nLFxufTtcblxuSW5zdHJ1Y3Rpb25zQXJlYS5kZWZhdWx0UHJvcHMgPSB7IHRhcmdldExhbmd1YWdlRGlyZWN0aW9uOiAnbHRyJyB9O1xuXG5leHBvcnQgZGVmYXVsdCBJbnN0cnVjdGlvbnNBcmVhO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsVUFBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsU0FBQSxHQUFBRixPQUFBO0FBR0EsSUFBQUcsOEJBQUEsR0FBQUMsdUJBQUEsQ0FBQUosT0FBQTtBQUVBQSxPQUFBO0FBQXVDLFNBQUFJLHdCQUFBQyxDQUFBLEVBQUFDLENBQUEsNkJBQUFDLE9BQUEsTUFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBSCx1QkFBQSxZQUFBQSx3QkFBQUMsQ0FBQSxFQUFBQyxDQUFBLFNBQUFBLENBQUEsSUFBQUQsQ0FBQSxJQUFBQSxDQUFBLENBQUFLLFVBQUEsU0FBQUwsQ0FBQSxNQUFBTSxDQUFBLEVBQUFDLENBQUEsRUFBQUMsQ0FBQSxLQUFBQyxTQUFBLG1CQUFBVCxDQUFBLGlCQUFBQSxDQUFBLGdCQUFBVSxP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
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.convertToFullBookName = convertToFullBookName;
|
|
8
|
+
exports.getOrigLangforBook = getOrigLangforBook;
|
|
9
|
+
exports.isNewTestament = isNewTestament;
|
|
10
|
+
exports.isOldTestament = isOldTestament;
|
|
11
|
+
exports.isOriginalLanguage = isOriginalLanguage;
|
|
12
|
+
exports.isOriginalLanguageBible = isOriginalLanguageBible;
|
|
13
|
+
exports.isValidBibleBook = isValidBibleBook;
|
|
14
|
+
var Bible = _interopRequireWildcard(require("../common/BooksOfTheBible"));
|
|
15
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
16
|
+
/* eslint-disable no-console */
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
*
|
|
20
|
+
* @param {string} bookAbbr - The book abbreviation to convert
|
|
21
|
+
*/
|
|
22
|
+
function convertToFullBookName(bookAbbr) {
|
|
23
|
+
if (!bookAbbr) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
return Bible.ALL_BIBLE_BOOKS[bookAbbr.toString().toLowerCase()];
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* tests if book is a Old Testament book
|
|
31
|
+
* @param bookId
|
|
32
|
+
* @return {boolean}
|
|
33
|
+
*/
|
|
34
|
+
function isOldTestament(bookId) {
|
|
35
|
+
return bookId in Bible.BIBLE_BOOKS.oldTestament;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* tests if book is a New Testament book
|
|
40
|
+
* @param bookId
|
|
41
|
+
* @return {boolean}
|
|
42
|
+
*/
|
|
43
|
+
function isNewTestament(bookId) {
|
|
44
|
+
return bookId in Bible.BIBLE_BOOKS.newTestament;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* tests if book is in Old or New Testament
|
|
49
|
+
* @param bookId
|
|
50
|
+
* @return {boolean}
|
|
51
|
+
*/
|
|
52
|
+
function isValidBibleBook(bookId) {
|
|
53
|
+
return isNewTestament(bookId) || isOldTestament(bookId);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* returns true if this bookId and languageId match the original language bible
|
|
58
|
+
* @param {String} languageId
|
|
59
|
+
* @param {String} bookId
|
|
60
|
+
* @return {boolean}
|
|
61
|
+
*/
|
|
62
|
+
function isOriginalLanguageBible(languageId, bookId) {
|
|
63
|
+
return languageId.toLowerCase() === Bible.NT_ORIG_LANG && bookId.toLowerCase() === Bible.NT_ORIG_LANG_BIBLE || languageId.toLowerCase() === Bible.OT_ORIG_LANG && bookId.toLowerCase() === Bible.OT_ORIG_LANG_BIBLE;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* returns true if this bookId and languageId match the original language bible
|
|
68
|
+
* @param {String} languageId
|
|
69
|
+
* @return {boolean}
|
|
70
|
+
*/
|
|
71
|
+
function isOriginalLanguage(languageId) {
|
|
72
|
+
return languageId.toLowerCase() === Bible.NT_ORIG_LANG || languageId.toLowerCase() === Bible.OT_ORIG_LANG;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* determine Original Language and Original Language bible for book
|
|
77
|
+
* @param bookId
|
|
78
|
+
* @return {{resourceLanguage: string, bibleID: string}}
|
|
79
|
+
*/
|
|
80
|
+
function getOrigLangforBook(bookId) {
|
|
81
|
+
var isOT = isOldTestament(bookId);
|
|
82
|
+
var languageId = isOT ? Bible.OT_ORIG_LANG : Bible.NT_ORIG_LANG;
|
|
83
|
+
var bibleId = isOT ? Bible.OT_ORIG_LANG_BIBLE : Bible.NT_ORIG_LANG_BIBLE;
|
|
84
|
+
return {
|
|
85
|
+
languageId: languageId,
|
|
86
|
+
bibleId: bibleId
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCaWJsZSIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwicmVxdWlyZSIsImUiLCJ0IiwiV2Vha01hcCIsInIiLCJuIiwiX19lc01vZHVsZSIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJzZXQiLCJfdCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiY29udmVydFRvRnVsbEJvb2tOYW1lIiwiYm9va0FiYnIiLCJBTExfQklCTEVfQk9PS1MiLCJ0b1N0cmluZyIsInRvTG93ZXJDYXNlIiwiaXNPbGRUZXN0YW1lbnQiLCJib29rSWQiLCJCSUJMRV9CT09LUyIsIm9sZFRlc3RhbWVudCIsImlzTmV3VGVzdGFtZW50IiwibmV3VGVzdGFtZW50IiwiaXNWYWxpZEJpYmxlQm9vayIsImlzT3JpZ2luYWxMYW5ndWFnZUJpYmxlIiwibGFuZ3VhZ2VJZCIsIk5UX09SSUdfTEFORyIsIk5UX09SSUdfTEFOR19CSUJMRSIsIk9UX09SSUdfTEFORyIsIk9UX09SSUdfTEFOR19CSUJMRSIsImlzT3JpZ2luYWxMYW5ndWFnZSIsImdldE9yaWdMYW5nZm9yQm9vayIsImlzT1QiLCJiaWJsZUlkIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2JpYmxlSGVscGVycy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG5pbXBvcnQgKiBhcyBCaWJsZSBmcm9tICcuLi9jb21tb24vQm9va3NPZlRoZUJpYmxlJztcblxuLyoqXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGJvb2tBYmJyIC0gVGhlIGJvb2sgYWJicmV2aWF0aW9uIHRvIGNvbnZlcnRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRUb0Z1bGxCb29rTmFtZShib29rQWJicikge1xuICBpZiAoIWJvb2tBYmJyKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIHJldHVybiBCaWJsZS5BTExfQklCTEVfQk9PS1NbYm9va0FiYnIudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpXTtcbn1cblxuLyoqXG4gKiB0ZXN0cyBpZiBib29rIGlzIGEgT2xkIFRlc3RhbWVudCBib29rXG4gKiBAcGFyYW0gYm9va0lkXG4gKiBAcmV0dXJuIHtib29sZWFufVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNPbGRUZXN0YW1lbnQoYm9va0lkKSB7XG4gIHJldHVybiBib29rSWQgaW4gQmlibGUuQklCTEVfQk9PS1Mub2xkVGVzdGFtZW50O1xufVxuXG4vKipcbiAqIHRlc3RzIGlmIGJvb2sgaXMgYSBOZXcgVGVzdGFtZW50IGJvb2tcbiAqIEBwYXJhbSBib29rSWRcbiAqIEByZXR1cm4ge2Jvb2xlYW59XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc05ld1Rlc3RhbWVudChib29rSWQpIHtcbiAgcmV0dXJuIGJvb2tJZCBpbiBCaWJsZS5CSUJMRV9CT09LUy5uZXdUZXN0YW1lbnQ7XG59XG5cbi8qKlxuICogdGVzdHMgaWYgYm9vayBpcyBpbiBPbGQgb3IgTmV3IFRlc3RhbWVudFxuICogQHBhcmFtIGJvb2tJZFxuICogQHJldHVybiB7Ym9vbGVhbn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRCaWJsZUJvb2soYm9va0lkKSB7XG4gIHJldHVybiAoaXNOZXdUZXN0YW1lbnQoYm9va0lkKSB8fCBpc09sZFRlc3RhbWVudChib29rSWQpKSA7XG59XG5cbi8qKlxuICogcmV0dXJucyB0cnVlIGlmIHRoaXMgYm9va0lkIGFuZCBsYW5ndWFnZUlkIG1hdGNoIHRoZSBvcmlnaW5hbCBsYW5ndWFnZSBiaWJsZVxuICogQHBhcmFtIHtTdHJpbmd9IGxhbmd1YWdlSWRcbiAqIEBwYXJhbSB7U3RyaW5nfSBib29rSWRcbiAqIEByZXR1cm4ge2Jvb2xlYW59XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc09yaWdpbmFsTGFuZ3VhZ2VCaWJsZShsYW5ndWFnZUlkLCBib29rSWQpIHtcbiAgcmV0dXJuICgobGFuZ3VhZ2VJZC50b0xvd2VyQ2FzZSgpID09PSBCaWJsZS5OVF9PUklHX0xBTkcgJiYgYm9va0lkLnRvTG93ZXJDYXNlKCkgPT09IEJpYmxlLk5UX09SSUdfTEFOR19CSUJMRSkgfHxcbiAgICAobGFuZ3VhZ2VJZC50b0xvd2VyQ2FzZSgpID09PSBCaWJsZS5PVF9PUklHX0xBTkcgJiYgYm9va0lkLnRvTG93ZXJDYXNlKCkgPT09IEJpYmxlLk9UX09SSUdfTEFOR19CSUJMRSkpO1xufVxuXG4vKipcbiAqIHJldHVybnMgdHJ1ZSBpZiB0aGlzIGJvb2tJZCBhbmQgbGFuZ3VhZ2VJZCBtYXRjaCB0aGUgb3JpZ2luYWwgbGFuZ3VhZ2UgYmlibGVcbiAqIEBwYXJhbSB7U3RyaW5nfSBsYW5ndWFnZUlkXG4gKiBAcmV0dXJuIHtib29sZWFufVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNPcmlnaW5hbExhbmd1YWdlKGxhbmd1YWdlSWQpIHtcbiAgcmV0dXJuIChsYW5ndWFnZUlkLnRvTG93ZXJDYXNlKCkgPT09IEJpYmxlLk5UX09SSUdfTEFORyB8fCBsYW5ndWFnZUlkLnRvTG93ZXJDYXNlKCkgPT09IEJpYmxlLk9UX09SSUdfTEFORyk7XG59XG5cbi8qKlxuICogZGV0ZXJtaW5lIE9yaWdpbmFsIExhbmd1YWdlIGFuZCBPcmlnaW5hbCBMYW5ndWFnZSBiaWJsZSBmb3IgYm9va1xuICogQHBhcmFtIGJvb2tJZFxuICogQHJldHVybiB7e3Jlc291cmNlTGFuZ3VhZ2U6IHN0cmluZywgYmlibGVJRDogc3RyaW5nfX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE9yaWdMYW5nZm9yQm9vayhib29rSWQpIHtcbiAgY29uc3QgaXNPVCA9IGlzT2xkVGVzdGFtZW50KGJvb2tJZCk7XG4gIGNvbnN0IGxhbmd1YWdlSWQgPSAoaXNPVCkgPyBCaWJsZS5PVF9PUklHX0xBTkcgOiBCaWJsZS5OVF9PUklHX0xBTkc7XG4gIGNvbnN0IGJpYmxlSWQgPSAoaXNPVCkgPyBCaWJsZS5PVF9PUklHX0xBTkdfQklCTEUgOiBCaWJsZS5OVF9PUklHX0xBTkdfQklCTEU7XG4gIHJldHVybiB7IGxhbmd1YWdlSWQsIGJpYmxlSWQgfTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUNBLElBQUFBLEtBQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUFtRCxTQUFBRCx3QkFBQUUsQ0FBQSxFQUFBQyxDQUFBLDZCQUFBQyxPQUFBLE1BQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUosdUJBQUEsWUFBQUEsd0JBQUFFLENBQUEsRUFBQUMsQ0FBQSxTQUFBQSxDQUFBLElBQUFELENBQUEsSUFBQUEsQ0FBQSxDQUFBSyxVQUFBLFNBQUFMLENBQUEsTUFBQU0sQ0FBQSxFQUFBQyxDQUFBLEVBQUFDLENBQUEsS0FBQUMsU0FBQSxtQkFBQVQsQ0FBQSxpQkFBQUEsQ0FBQSxnQkFBQVUsT0FBQSxDQUFBVixDQUFBLDBCQUFBQSxDQUFBLFNBQUFRLENBQUEsTUFBQUYsQ0FBQSxHQUFBTCxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxRQUFBRyxDQUFBLENBQUFLLEdBQUEsQ0FBQVgsQ0FBQSxVQUFBTSxDQUFBLENBQUFNLEdBQUEsQ0FBQVosQ0FBQSxHQUFBTSxDQUFBLENBQUFPLEdBQUEsQ0FBQWIsQ0FBQSxFQUFBUSxDQUFBLGNBQUFNLEVBQUEsSUFBQWQsQ0FBQSxnQkFBQWMsRUFBQSxPQUFBQyxjQUFBLENBQUFDLElBQUEsQ0FBQWhCLENBQUEsRUFBQWMsRUFBQSxPQUFBUCxDQUFBLElBQUFELENBQUEsR0FBQVcsTUFBQSxDQUFBQyxjQUFBLEtBQUFELE1BQUEsQ0FBQUUsd0JBQUEsQ0FBQW5CLENBQUEsRUFBQWMsRUFBQSxPQUFBUCxDQUFBLENBQUFLLEdBQUEsSUFBQUwsQ0FBQSxDQUFBTSxHQUFBLElBQUFQLENBQUEsQ0FBQUUsQ0FBQSxFQUFBTSxFQUFBLEVBQUFQLENBQUEsSUFBQUMsQ0FBQSxDQUFBTSxFQUFBLElBQUFkLENBQUEsQ0FBQWMsRUFBQSxXQUFBTixDQUFBLEtBQUFSLENBQUEsRUFBQUMsQ0FBQTtBQURuRDs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNtQixxQkFBcUJBLENBQUNDLFFBQVEsRUFBRTtFQUM5QyxJQUFJLENBQUNBLFFBQVEsRUFBRTtJQUNiO0VBQ0Y7RUFDQSxPQUFPeEIsS0FBSyxDQUFDeUIsZUFBZSxDQUFDRCxRQUFRLENBQUNFLFFBQVEsQ0FBQyxDQUFDLENBQUNDLFdBQVcsQ0FBQyxDQUFDLENBQUM7QUFDakU7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNDLGNBQWNBLENBQUNDLE1BQU0sRUFBRTtFQUNyQyxPQUFPQSxNQUFNLElBQUk3QixLQUFLLENBQUM4QixXQUFXLENBQUNDLFlBQVk7QUFDakQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNDLGNBQWNBLENBQUNILE1BQU0sRUFBRTtFQUNyQyxPQUFPQSxNQUFNLElBQUk3QixLQUFLLENBQUM4QixXQUFXLENBQUNHLFlBQVk7QUFDakQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNDLGdCQUFnQkEsQ0FBQ0wsTUFBTSxFQUFFO0VBQ3ZDLE9BQVFHLGNBQWMsQ0FBQ0gsTUFBTSxDQUFDLElBQUlELGNBQWMsQ0FBQ0MsTUFBTSxDQUFDO0FBQzFEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNNLHVCQUF1QkEsQ0FBQ0MsVUFBVSxFQUFFUCxNQUFNLEVBQUU7RUFDMUQsT0FBU08sVUFBVSxDQUFDVCxXQUFXLENBQUMsQ0FBQyxLQUFLM0IsS0FBSyxDQUFDcUMsWUFBWSxJQUFJUixNQUFNLENBQUNGLFdBQVcsQ0FBQyxDQUFDLEtBQUszQixLQUFLLENBQUNzQyxrQkFBa0IsSUFDMUdGLFVBQVUsQ0FBQ1QsV0FBVyxDQUFDLENBQUMsS0FBSzNCLEtBQUssQ0FBQ3VDLFlBQVksSUFBSVYsTUFBTSxDQUFDRixXQUFXLENBQUMsQ0FBQyxLQUFLM0IsS0FBSyxDQUFDd0Msa0JBQW1CO0FBQzFHOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTQyxrQkFBa0JBLENBQUNMLFVBQVUsRUFBRTtFQUM3QyxPQUFRQSxVQUFVLENBQUNULFdBQVcsQ0FBQyxDQUFDLEtBQUszQixLQUFLLENBQUNxQyxZQUFZLElBQUlELFVBQVUsQ0FBQ1QsV0FBVyxDQUFDLENBQUMsS0FBSzNCLEtBQUssQ0FBQ3VDLFlBQVk7QUFDNUc7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNHLGtCQUFrQkEsQ0FBQ2IsTUFBTSxFQUFFO0VBQ3pDLElBQU1jLElBQUksR0FBR2YsY0FBYyxDQUFDQyxNQUFNLENBQUM7RUFDbkMsSUFBTU8sVUFBVSxHQUFJTyxJQUFJLEdBQUkzQyxLQUFLLENBQUN1QyxZQUFZLEdBQUd2QyxLQUFLLENBQUNxQyxZQUFZO0VBQ25FLElBQU1PLE9BQU8sR0FBSUQsSUFBSSxHQUFJM0MsS0FBSyxDQUFDd0Msa0JBQWtCLEdBQUd4QyxLQUFLLENBQUNzQyxrQkFBa0I7RUFDNUUsT0FBTztJQUFFRixVQUFVLEVBQVZBLFVBQVU7SUFBRVEsT0FBTyxFQUFQQTtFQUFRLENBQUM7QUFDaEMiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.getHeaderTag = getHeaderTag;
|
|
8
|
+
exports.getParsedUSFM = getParsedUSFM;
|
|
9
|
+
exports.getUSFMDetails = getUSFMDetails;
|
|
10
|
+
exports.getUsfmHeaderInfo = getUsfmHeaderInfo;
|
|
11
|
+
exports.parseUsfmDetails = parseUsfmDetails;
|
|
12
|
+
exports.removeUsfmMarkers = void 0;
|
|
13
|
+
exports.usfmVerseToJson = usfmVerseToJson;
|
|
14
|
+
var _usfmJs = _interopRequireDefault(require("usfm-js"));
|
|
15
|
+
var bibleHelpers = _interopRequireWildcard(require("./bibleHelpers"));
|
|
16
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
17
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
18
|
+
/* eslint-disable no-console */
|
|
19
|
+
|
|
20
|
+
// helpers
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* @description Parses the usfm file using usfm-parse library.
|
|
24
|
+
* @param {string} usfmData - USFM data to parse
|
|
25
|
+
*/
|
|
26
|
+
function getParsedUSFM(usfmData) {
|
|
27
|
+
try {
|
|
28
|
+
if (usfmData) {
|
|
29
|
+
return _usfmJs["default"].toJSON(usfmData, {
|
|
30
|
+
convertToInt: ['occurrence', 'occurrences']
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
} catch (e) {
|
|
34
|
+
console.error(e);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* @description get tag item from headers array
|
|
40
|
+
* @param headers
|
|
41
|
+
* @param tag
|
|
42
|
+
* @return {String} content of tag if found, else null
|
|
43
|
+
*/
|
|
44
|
+
function getHeaderTag(headers, tag) {
|
|
45
|
+
if (headers) {
|
|
46
|
+
var retVal = headers.find(function (header) {
|
|
47
|
+
return header.tag === tag;
|
|
48
|
+
});
|
|
49
|
+
if (retVal) {
|
|
50
|
+
return retVal.content;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* parses only the header information of a valid usfm file. Header information is the part before the first chapter marker.
|
|
58
|
+
* @param {String} usfmData - USFM data to parse
|
|
59
|
+
* @return {*}
|
|
60
|
+
*/
|
|
61
|
+
function getUsfmHeaderInfo(usfmData) {
|
|
62
|
+
var pos = usfmData.indexOf('\\c ');
|
|
63
|
+
var header = pos >= 0 ? usfmData.substr(0, pos) : usfmData; // if chapter marker is found, process only that part
|
|
64
|
+
return getParsedUSFM(header);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* parse USFM header details from usfm data
|
|
69
|
+
* @param {String} usfmData - USFM data to parse
|
|
70
|
+
* @return {*}
|
|
71
|
+
*/
|
|
72
|
+
function parseUsfmDetails(usfmData) {
|
|
73
|
+
var usfmObject = getUsfmHeaderInfo(usfmData);
|
|
74
|
+
return getUSFMDetails(usfmObject);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Most important function for creating a project from a USFM file alone. This function gets the
|
|
79
|
+
* book name, id, language name and direction for starting a tC project.
|
|
80
|
+
* @param {object} usfmObject - Object created by USFM to JSON module. Contains information
|
|
81
|
+
* for parsing and using in tC such as book name.
|
|
82
|
+
*/
|
|
83
|
+
function getUSFMDetails(usfmObject) {
|
|
84
|
+
var details = {
|
|
85
|
+
book: {
|
|
86
|
+
id: undefined,
|
|
87
|
+
name: undefined
|
|
88
|
+
},
|
|
89
|
+
language: {
|
|
90
|
+
id: undefined,
|
|
91
|
+
name: undefined,
|
|
92
|
+
direction: 'ltr'
|
|
93
|
+
},
|
|
94
|
+
target_languge: {
|
|
95
|
+
book: {
|
|
96
|
+
name: undefined
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
// adding target language book name from usfm headers
|
|
102
|
+
var targetLangugeBookName = getHeaderTag(usfmObject.headers, 'h');
|
|
103
|
+
details.target_languge.book.name = targetLangugeBookName;
|
|
104
|
+
var headerIDArray = [];
|
|
105
|
+
var tag = 'id';
|
|
106
|
+
var id = getHeaderTag(usfmObject.headers, tag);
|
|
107
|
+
if (id) {
|
|
108
|
+
// Conditional to determine how USFM should be parsed.
|
|
109
|
+
var isSpaceDelimited = id.split(' ').length > 1;
|
|
110
|
+
var isCommaDelimited = id.split(',').length > 1;
|
|
111
|
+
if (isSpaceDelimited) {
|
|
112
|
+
// i.e. TIT EN_ULB sw_Kiswahili_ltr Wed Jul 26 2017 22:14:55 GMT-0700 (PDT) tc.
|
|
113
|
+
// Could have attached commas if both comma delimited and space delimited
|
|
114
|
+
headerIDArray = id.split(' ');
|
|
115
|
+
headerIDArray.forEach(function (element, index) {
|
|
116
|
+
headerIDArray[index] = element.replace(',', '');
|
|
117
|
+
});
|
|
118
|
+
details.book.id = headerIDArray[0].trim().toLowerCase();
|
|
119
|
+
} else if (isCommaDelimited) {
|
|
120
|
+
// i.e. TIT, sw_Kiswahili_ltr, EN_ULB, Thu Jul 20 2017 16:03:48 GMT-0700 (PDT), tc.
|
|
121
|
+
headerIDArray = id.split(',');
|
|
122
|
+
details.book.id = headerIDArray[0].trim().toLowerCase();
|
|
123
|
+
} else {
|
|
124
|
+
// i.e. EPH
|
|
125
|
+
details.book.id = id.toLowerCase();
|
|
126
|
+
}
|
|
127
|
+
var fullBookName = bibleHelpers.convertToFullBookName(details.book.id);
|
|
128
|
+
if (fullBookName) {
|
|
129
|
+
details.book.name = fullBookName;
|
|
130
|
+
} else {
|
|
131
|
+
fullBookName = bibleHelpers.convertToFullBookName(usfmObject.book);
|
|
132
|
+
if (fullBookName) {
|
|
133
|
+
details.book.name = fullBookName;
|
|
134
|
+
} else {
|
|
135
|
+
details.book.id = null;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
var tcField = headerIDArray[headerIDArray.length - 1] || '';
|
|
139
|
+
if (tcField.trim() === 'tc') {
|
|
140
|
+
details.repo = headerIDArray[1];
|
|
141
|
+
|
|
142
|
+
// Checking for tC field to parse with more information than standard usfm.
|
|
143
|
+
for (var index in headerIDArray) {
|
|
144
|
+
var languageCodeArray = headerIDArray[index].trim().split('_');
|
|
145
|
+
if (languageCodeArray.length === 3) {
|
|
146
|
+
details.language.id = languageCodeArray[0].toLowerCase();
|
|
147
|
+
details.language.name = languageCodeArray[1].split('⋅').join(' '); // restore spaces
|
|
148
|
+
details.language.direction = languageCodeArray[2].toLowerCase();
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
return details;
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Removes any USFM markers from a string.
|
|
157
|
+
* @param {String} targetVerseText - verse text that may or may not contain USFM markers.
|
|
158
|
+
* @returns {String} printable text from USFM.
|
|
159
|
+
*/
|
|
160
|
+
var removeUsfmMarkers = exports.removeUsfmMarkers = function removeUsfmMarkers(targetVerseText) {
|
|
161
|
+
var cleaned = _usfmJs["default"].removeMarker(targetVerseText);
|
|
162
|
+
return cleaned;
|
|
163
|
+
};
|
|
164
|
+
function usfmVerseToJson(verseUSFM) {
|
|
165
|
+
if (verseUSFM) {
|
|
166
|
+
var _verseObjects$verses;
|
|
167
|
+
var verseObjects = _usfmJs["default"].toJSON('\\v 1 ' + verseUSFM, {
|
|
168
|
+
chunk: true
|
|
169
|
+
});
|
|
170
|
+
if (verseObjects !== null && verseObjects !== void 0 && (_verseObjects$verses = verseObjects.verses) !== null && _verseObjects$verses !== void 0 && (_verseObjects$verses = _verseObjects$verses[1]) !== null && _verseObjects$verses !== void 0 && _verseObjects$verses.verseObjects) {
|
|
171
|
+
return verseObjects.verses[1].verseObjects;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
return null;
|
|
175
|
+
}
|
|
176
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdXNmbUpzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJiaWJsZUhlbHBlcnMiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsImUiLCJ0IiwiV2Vha01hcCIsInIiLCJuIiwiX19lc01vZHVsZSIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJzZXQiLCJfdCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZ2V0UGFyc2VkVVNGTSIsInVzZm1EYXRhIiwidXNmbWpzIiwidG9KU09OIiwiY29udmVydFRvSW50IiwiY29uc29sZSIsImVycm9yIiwiZ2V0SGVhZGVyVGFnIiwiaGVhZGVycyIsInRhZyIsInJldFZhbCIsImZpbmQiLCJoZWFkZXIiLCJjb250ZW50IiwiZ2V0VXNmbUhlYWRlckluZm8iLCJwb3MiLCJpbmRleE9mIiwic3Vic3RyIiwicGFyc2VVc2ZtRGV0YWlscyIsInVzZm1PYmplY3QiLCJnZXRVU0ZNRGV0YWlscyIsImRldGFpbHMiLCJib29rIiwiaWQiLCJ1bmRlZmluZWQiLCJuYW1lIiwibGFuZ3VhZ2UiLCJkaXJlY3Rpb24iLCJ0YXJnZXRfbGFuZ3VnZSIsInRhcmdldExhbmd1Z2VCb29rTmFtZSIsImhlYWRlcklEQXJyYXkiLCJpc1NwYWNlRGVsaW1pdGVkIiwic3BsaXQiLCJsZW5ndGgiLCJpc0NvbW1hRGVsaW1pdGVkIiwiZm9yRWFjaCIsImVsZW1lbnQiLCJpbmRleCIsInJlcGxhY2UiLCJ0cmltIiwidG9Mb3dlckNhc2UiLCJmdWxsQm9va05hbWUiLCJjb252ZXJ0VG9GdWxsQm9va05hbWUiLCJ0Y0ZpZWxkIiwicmVwbyIsImxhbmd1YWdlQ29kZUFycmF5Iiwiam9pbiIsInJlbW92ZVVzZm1NYXJrZXJzIiwiZXhwb3J0cyIsInRhcmdldFZlcnNlVGV4dCIsImNsZWFuZWQiLCJyZW1vdmVNYXJrZXIiLCJ1c2ZtVmVyc2VUb0pzb24iLCJ2ZXJzZVVTRk0iLCJfdmVyc2VPYmplY3RzJHZlcnNlcyIsInZlcnNlT2JqZWN0cyIsImNodW5rIiwidmVyc2VzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3VzZm1IZWxwZXJzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbmltcG9ydCB1c2ZtanMgZnJvbSAndXNmbS1qcyc7XG4vLyBoZWxwZXJzXG5pbXBvcnQgKiBhcyBiaWJsZUhlbHBlcnMgZnJvbSAnLi9iaWJsZUhlbHBlcnMnO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBQYXJzZXMgdGhlIHVzZm0gZmlsZSB1c2luZyB1c2ZtLXBhcnNlIGxpYnJhcnkuXG4gKiBAcGFyYW0ge3N0cmluZ30gdXNmbURhdGEgLSBVU0ZNIGRhdGEgdG8gcGFyc2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFBhcnNlZFVTRk0odXNmbURhdGEpIHtcbiAgdHJ5IHtcbiAgICBpZiAodXNmbURhdGEpIHtcbiAgICAgIHJldHVybiB1c2ZtanMudG9KU09OKHVzZm1EYXRhLCB7IGNvbnZlcnRUb0ludDogWydvY2N1cnJlbmNlJywgJ29jY3VycmVuY2VzJ10gfSk7XG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gICAgY29uc29sZS5lcnJvcihlKTtcbiAgfVxufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBnZXQgdGFnIGl0ZW0gZnJvbSBoZWFkZXJzIGFycmF5XG4gKiBAcGFyYW0gaGVhZGVyc1xuICogQHBhcmFtIHRhZ1xuICogQHJldHVybiB7U3RyaW5nfSBjb250ZW50IG9mIHRhZyBpZiBmb3VuZCwgZWxzZSBudWxsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRIZWFkZXJUYWcoaGVhZGVycywgdGFnKSB7XG4gIGlmIChoZWFkZXJzKSB7XG4gICAgY29uc3QgcmV0VmFsID0gaGVhZGVycy5maW5kKGhlYWRlciA9PiBoZWFkZXIudGFnID09PSB0YWcpO1xuXG4gICAgaWYgKHJldFZhbCkge1xuICAgICAgcmV0dXJuIHJldFZhbC5jb250ZW50O1xuICAgIH1cbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBwYXJzZXMgb25seSB0aGUgaGVhZGVyIGluZm9ybWF0aW9uIG9mIGEgdmFsaWQgdXNmbSBmaWxlLiAgSGVhZGVyIGluZm9ybWF0aW9uIGlzIHRoZSBwYXJ0IGJlZm9yZSB0aGUgZmlyc3QgY2hhcHRlciBtYXJrZXIuXG4gKiBAcGFyYW0ge1N0cmluZ30gdXNmbURhdGEgLSBVU0ZNIGRhdGEgdG8gcGFyc2VcbiAqIEByZXR1cm4geyp9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRVc2ZtSGVhZGVySW5mbyh1c2ZtRGF0YSkge1xuICBjb25zdCBwb3MgPSB1c2ZtRGF0YS5pbmRleE9mKCdcXFxcYyAnKTtcbiAgY29uc3QgaGVhZGVyID0gKHBvcyA+PSAwKSA/IHVzZm1EYXRhLnN1YnN0cigwLCBwb3MpIDogdXNmbURhdGE7IC8vIGlmIGNoYXB0ZXIgbWFya2VyIGlzIGZvdW5kLCBwcm9jZXNzIG9ubHkgdGhhdCBwYXJ0XG4gIHJldHVybiBnZXRQYXJzZWRVU0ZNKGhlYWRlcik7XG59XG5cbi8qKlxuICogcGFyc2UgVVNGTSBoZWFkZXIgZGV0YWlscyBmcm9tIHVzZm0gZGF0YVxuICogQHBhcmFtIHtTdHJpbmd9IHVzZm1EYXRhIC0gVVNGTSBkYXRhIHRvIHBhcnNlXG4gKiBAcmV0dXJuIHsqfVxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VVc2ZtRGV0YWlscyh1c2ZtRGF0YSkge1xuICBjb25zdCB1c2ZtT2JqZWN0ID0gZ2V0VXNmbUhlYWRlckluZm8odXNmbURhdGEpO1xuICByZXR1cm4gZ2V0VVNGTURldGFpbHModXNmbU9iamVjdCk7XG59XG5cbi8qKlxuICogTW9zdCBpbXBvcnRhbnQgZnVuY3Rpb24gZm9yIGNyZWF0aW5nIGEgcHJvamVjdCBmcm9tIGEgVVNGTSBmaWxlIGFsb25lLiBUaGlzIGZ1bmN0aW9uIGdldHMgdGhlXG4gKiBib29rIG5hbWUsIGlkLCBsYW5ndWFnZSBuYW1lIGFuZCBkaXJlY3Rpb24gZm9yIHN0YXJ0aW5nIGEgdEMgcHJvamVjdC5cbiAqIEBwYXJhbSB7b2JqZWN0fSB1c2ZtT2JqZWN0IC0gT2JqZWN0IGNyZWF0ZWQgYnkgVVNGTSB0byBKU09OIG1vZHVsZS4gQ29udGFpbnMgaW5mb3JtYXRpb25cbiAqIGZvciBwYXJzaW5nIGFuZCB1c2luZyBpbiB0QyBzdWNoIGFzIGJvb2sgbmFtZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFVTRk1EZXRhaWxzKHVzZm1PYmplY3QpIHtcbiAgbGV0IGRldGFpbHMgPSB7XG4gICAgYm9vazoge1xuICAgICAgaWQ6IHVuZGVmaW5lZCxcbiAgICAgIG5hbWU6IHVuZGVmaW5lZCxcbiAgICB9LFxuICAgIGxhbmd1YWdlOiB7XG4gICAgICBpZDogdW5kZWZpbmVkLFxuICAgICAgbmFtZTogdW5kZWZpbmVkLFxuICAgICAgZGlyZWN0aW9uOiAnbHRyJyxcbiAgICB9LFxuICAgIHRhcmdldF9sYW5ndWdlOiB7IGJvb2s6IHsgbmFtZTogdW5kZWZpbmVkIH0gfSxcbiAgfTtcblxuICAvLyBhZGRpbmcgdGFyZ2V0IGxhbmd1YWdlIGJvb2sgbmFtZSBmcm9tIHVzZm0gaGVhZGVyc1xuICBjb25zdCB0YXJnZXRMYW5ndWdlQm9va05hbWUgPSBnZXRIZWFkZXJUYWcodXNmbU9iamVjdC5oZWFkZXJzLCAnaCcpO1xuICBkZXRhaWxzLnRhcmdldF9sYW5ndWdlLmJvb2submFtZSA9IHRhcmdldExhbmd1Z2VCb29rTmFtZTtcblxuICBsZXQgaGVhZGVySURBcnJheSA9IFtdO1xuICBjb25zdCB0YWcgPSAnaWQnO1xuICBjb25zdCBpZCA9IGdldEhlYWRlclRhZyh1c2ZtT2JqZWN0LmhlYWRlcnMsIHRhZyk7XG5cbiAgaWYgKGlkKSB7XG4gICAgLy8gQ29uZGl0aW9uYWwgdG8gZGV0ZXJtaW5lIGhvdyBVU0ZNIHNob3VsZCBiZSBwYXJzZWQuXG4gICAgbGV0IGlzU3BhY2VEZWxpbWl0ZWQgPSBpZC5zcGxpdCgnICcpLmxlbmd0aCA+IDE7XG4gICAgbGV0IGlzQ29tbWFEZWxpbWl0ZWQgPSBpZC5zcGxpdCgnLCcpLmxlbmd0aCA+IDE7XG5cbiAgICBpZiAoaXNTcGFjZURlbGltaXRlZCkge1xuICAgICAgLy8gaS5lLiBUSVQgRU5fVUxCIHN3X0tpc3dhaGlsaV9sdHIgV2VkIEp1bCAyNiAyMDE3IDIyOjE0OjU1IEdNVC0wNzAwIChQRFQpIHRjLlxuICAgICAgLy8gQ291bGQgaGF2ZSBhdHRhY2hlZCBjb21tYXMgaWYgYm90aCBjb21tYSBkZWxpbWl0ZWQgYW5kIHNwYWNlIGRlbGltaXRlZFxuICAgICAgaGVhZGVySURBcnJheSA9IGlkLnNwbGl0KCcgJyk7XG4gICAgICBoZWFkZXJJREFycmF5LmZvckVhY2goKGVsZW1lbnQsIGluZGV4KSA9PiB7XG4gICAgICAgIGhlYWRlcklEQXJyYXlbaW5kZXhdID0gZWxlbWVudC5yZXBsYWNlKCcsJywgJycpO1xuICAgICAgfSk7XG4gICAgICBkZXRhaWxzLmJvb2suaWQgPSBoZWFkZXJJREFycmF5WzBdLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICAgIH0gZWxzZSBpZiAoaXNDb21tYURlbGltaXRlZCkge1xuICAgICAgLy8gaS5lLiBUSVQsIHN3X0tpc3dhaGlsaV9sdHIsIEVOX1VMQiwgVGh1IEp1bCAyMCAyMDE3IDE2OjAzOjQ4IEdNVC0wNzAwIChQRFQpLCB0Yy5cbiAgICAgIGhlYWRlcklEQXJyYXkgPSBpZC5zcGxpdCgnLCcpO1xuICAgICAgZGV0YWlscy5ib29rLmlkID0gaGVhZGVySURBcnJheVswXS50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gaS5lLiBFUEhcbiAgICAgIGRldGFpbHMuYm9vay5pZCA9IGlkLnRvTG93ZXJDYXNlKCk7XG4gICAgfVxuXG4gICAgbGV0IGZ1bGxCb29rTmFtZSA9IGJpYmxlSGVscGVycy5jb252ZXJ0VG9GdWxsQm9va05hbWUoZGV0YWlscy5ib29rLmlkKTtcblxuICAgIGlmIChmdWxsQm9va05hbWUpIHtcbiAgICAgIGRldGFpbHMuYm9vay5uYW1lID0gZnVsbEJvb2tOYW1lO1xuICAgIH0gZWxzZSB7XG4gICAgICBmdWxsQm9va05hbWUgPSBiaWJsZUhlbHBlcnMuY29udmVydFRvRnVsbEJvb2tOYW1lKHVzZm1PYmplY3QuYm9vayk7XG5cbiAgICAgIGlmIChmdWxsQm9va05hbWUpIHtcbiAgICAgICAgZGV0YWlscy5ib29rLm5hbWUgPSBmdWxsQm9va05hbWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZXRhaWxzLmJvb2suaWQgPSBudWxsO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCB0Y0ZpZWxkID0gaGVhZGVySURBcnJheVtoZWFkZXJJREFycmF5Lmxlbmd0aCAtIDFdIHx8ICcnO1xuXG4gICAgaWYgKHRjRmllbGQudHJpbSgpID09PSAndGMnKSB7XG4gICAgICBkZXRhaWxzLnJlcG8gPSBoZWFkZXJJREFycmF5WzFdO1xuXG4gICAgICAvLyBDaGVja2luZyBmb3IgdEMgZmllbGQgdG8gcGFyc2Ugd2l0aCBtb3JlIGluZm9ybWF0aW9uIHRoYW4gc3RhbmRhcmQgdXNmbS5cbiAgICAgIGZvciAobGV0IGluZGV4IGluIGhlYWRlcklEQXJyYXkpIHtcbiAgICAgICAgbGV0IGxhbmd1YWdlQ29kZUFycmF5ID0gaGVhZGVySURBcnJheVtpbmRleF0udHJpbSgpLnNwbGl0KCdfJyk7XG5cbiAgICAgICAgaWYgKGxhbmd1YWdlQ29kZUFycmF5Lmxlbmd0aCA9PT0gMykge1xuICAgICAgICAgIGRldGFpbHMubGFuZ3VhZ2UuaWQgPSBsYW5ndWFnZUNvZGVBcnJheVswXS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgIGRldGFpbHMubGFuZ3VhZ2UubmFtZSA9IGxhbmd1YWdlQ29kZUFycmF5WzFdLnNwbGl0KCfii4UnKS5qb2luKCcgJyk7IC8vIHJlc3RvcmUgc3BhY2VzXG4gICAgICAgICAgZGV0YWlscy5sYW5ndWFnZS5kaXJlY3Rpb24gPSBsYW5ndWFnZUNvZGVBcnJheVsyXS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBkZXRhaWxzO1xufVxuLyoqXG4gKiBSZW1vdmVzIGFueSBVU0ZNIG1hcmtlcnMgZnJvbSBhIHN0cmluZy5cbiAqIEBwYXJhbSB7U3RyaW5nfSB0YXJnZXRWZXJzZVRleHQgLSB2ZXJzZSB0ZXh0IHRoYXQgbWF5IG9yIG1heSBub3QgY29udGFpbiBVU0ZNIG1hcmtlcnMuXG4gKiBAcmV0dXJucyB7U3RyaW5nfSBwcmludGFibGUgdGV4dCBmcm9tIFVTRk0uXG4gKi9cbmV4cG9ydCBjb25zdCByZW1vdmVVc2ZtTWFya2VycyA9ICh0YXJnZXRWZXJzZVRleHQpID0+IHtcbiAgY29uc3QgY2xlYW5lZCA9IHVzZm1qcy5yZW1vdmVNYXJrZXIodGFyZ2V0VmVyc2VUZXh0KTtcbiAgcmV0dXJuIGNsZWFuZWQ7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdXNmbVZlcnNlVG9Kc29uKHZlcnNlVVNGTSkge1xuICBpZiAodmVyc2VVU0ZNKSB7XG4gICAgY29uc3QgdmVyc2VPYmplY3RzID0gdXNmbWpzLnRvSlNPTignXFxcXHYgMSAnICsgdmVyc2VVU0ZNLCB7Y2h1bms6IHRydWV9KTtcblxuICAgIGlmICh2ZXJzZU9iamVjdHM/LnZlcnNlcz8uWzFdPy52ZXJzZU9iamVjdHMpIHtcbiAgICAgIHJldHVybiB2ZXJzZU9iamVjdHMudmVyc2VzWzFdLnZlcnNlT2JqZWN0cztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFDQSxJQUFBQSxPQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBQyxZQUFBLEdBQUFDLHVCQUFBLENBQUFGLE9BQUE7QUFBK0MsU0FBQUUsd0JBQUFDLENBQUEsRUFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxNQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFB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
|