From 3a9d8af430b336347910e936bce6e77d2eb054e6 Mon Sep 17 00:00:00 2001 From: itsmartashub Date: Mon, 12 Feb 2024 21:37:28 +0100 Subject: [PATCH] fix: update `box-shadow` to `inset` for context menu when focusing on textarea in `Custom Instructions` dialog - Adjusted box-shadow to inset for context menu ([role='dialog'] actually) when focusing on textarea in the "Custom Instructions" dialog Changes summary: - Updated the box-shadow to inset for the context menu ([role='dialog']) when the textarea is focused in the "Custom Instructions" dialog for improved visual clarity. --- extension-dev/firefox-mv2/content.4a18726a.js | 15 ++- extension-dev/firefox-mv2/sass.faed8373.css | 122 +++++++++++++----- package.json | 12 +- src/sass/elements/_menu.scss | 9 ++ 4 files changed, 119 insertions(+), 39 deletions(-) diff --git a/extension-dev/firefox-mv2/content.4a18726a.js b/extension-dev/firefox-mv2/content.4a18726a.js index 41c7a20..5e1b89b 100644 --- a/extension-dev/firefox-mv2/content.4a18726a.js +++ b/extension-dev/firefox-mv2/content.4a18726a.js @@ -588,7 +588,18 @@ var _gpthToggleCircledWebp = require("../img/gpth-toggle-circled.webp"); var _gpthToggleCircledWebpDefault = parcelHelpers.interopDefault(_gpthToggleCircledWebp); let isOptionsShown = false; (0, _webextensionPolyfillDefault.default).storage.sync.get("gptheme").then((data)=>{ - const theme = data.gptheme || "light"; + /* const theme = data.gptheme || 'dark' + applyTheme(theme) */ let theme = ""; + const storedTheme = data.gptheme; + if (storedTheme) { + theme = storedTheme; + applyTheme(theme); + return; + } + // Check if the dark or light theme preference is set + const lightThemeQuery = window.matchMedia("(prefers-color-scheme: light)"); + lightThemeQuery.matches ? theme = "light" : theme = "dark" // Fallback theme + ; applyTheme(theme); }); createAndAppendSVGStickyBtn(); @@ -1888,4 +1899,4 @@ exports.export = function(dest, destName, get) { },{}]},["c93qz","3q87D"], "3q87D", "parcelRequire2158") -//# sourceMappingURL=data:application/json;charset=utf-8;base64,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U0FBUyxHQUFHLFNBQVUsTUFBTSxFQUFFLElBQUk7SUFDeEMsT0FBTyxJQUFJLENBQUMsUUFBUSxPQUFPLENBQUMsU0FBVSxHQUFHO1FBQ3ZDLElBQ0UsUUFBUSxhQUNSLFFBQVEsZ0JBQ1IsT0FBTyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLE1BRTNDO1FBR0YsT0FBTyxjQUFjLENBQUMsTUFBTSxLQUFLO1lBQy9CLFlBQVk7WUFDWixLQUFLO2dCQUNILE9BQU8sTUFBTSxDQUFDLElBQUk7WUFDcEI7UUFDRjtJQUNGO0lBRUEsT0FBTztBQUNUO0FBRUEsUUFBUSxNQUFNLEdBQUcsU0FBVSxJQUFJLEVBQUUsUUFBUSxFQUFFLEdBQUc7SUFDNUMsT0FBTyxjQUFjLENBQUMsTUFBTSxVQUFVO1FBQ3BDLFlBQVk7UUFDWixLQUFLO0lBQ1A7QUFDRiIsInNvdXJjZXMiOlsibm9kZV9tb2R1bGVzL0BwYXJjZWwvcnVudGltZS1icm93c2VyLWhtci9saWIvcnVudGltZS0xNTNjNGUwOGE0YWQ2MjIyLmpzIiwic3JjL2pzL2NvbnRlbnQuanMiLCJub2RlX21vZHVsZXMvd2ViZXh0ZW5zaW9uLXBvbHlmaWxsL2Rpc3QvYnJvd3Nlci1wb2x5ZmlsbC5qcyIsIm5vZGVfbW9kdWxlcy9AcGFyY2VsL3J1bnRpbWUtanMvbGliL3J1bnRpbWUtOGU5OWZhMGQxN2EwMDQxZS5qcyIsIm5vZGVfbW9kdWxlcy9AcGFyY2VsL3J1bnRpbWUtanMvbGliL2hlbHBlcnMvYnVuZGxlLXVybC5qcyIsIm5vZGVfbW9kdWxlcy9AcGFyY2VsL3RyYW5zZm9ybWVyLWpzL3NyYy9lc21vZHVsZS1oZWxwZXJzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBITVJfSE9TVCA9IFwibG9jYWxob3N0XCI7dmFyIEhNUl9QT1JUID0gMTIzNDt2YXIgSE1SX1NFQ1VSRSA9IGZhbHNlO3ZhciBITVJfRU5WX0hBU0ggPSBcImRkZjZlMDcyNGJkMzU4YmRcIjttb2R1bGUuYnVuZGxlLkhNUl9CVU5ETEVfSUQgPSBcIjQ1YjQ0YWNkNGExODcyNmFcIjtcInVzZSBzdHJpY3RcIjtcblxuLyogZ2xvYmFsIEhNUl9IT1NULCBITVJfUE9SVCwgSE1SX0VOVl9IQVNILCBITVJfU0VDVVJFLCBjaHJvbWUsIGJyb3dzZXIsIF9fcGFyY2VsX19pbXBvcnRfXywgX19wYXJjZWxfX2ltcG9ydFNjcmlwdHNfXywgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlICovXG4vKjo6XG5pbXBvcnQgdHlwZSB7XG4gIEhNUkFzc2V0LFxuICBITVJNZXNzYWdlLFxufSBmcm9tICdAcGFyY2VsL3JlcG9ydGVyLWRldi1zZXJ2ZXIvc3JjL0hNUlNlcnZlci5qcyc7XG5pbnRlcmZhY2UgUGFyY2VsUmVxdWlyZSB7XG4gIChzdHJpbmcpOiBtaXhlZDtcbiAgY2FjaGU6IHt8W3N0cmluZ106IFBhcmNlbE1vZHVsZXx9O1xuICBob3REYXRhOiB7fFtzdHJpbmddOiBtaXhlZHx9O1xuICBNb2R1bGU6IGFueTtcbiAgcGFyZW50OiA/UGFyY2VsUmVxdWlyZTtcbiAgaXNQYXJjZWxSZXF1aXJlOiB0cnVlO1xuICBtb2R1bGVzOiB7fFtzdHJpbmddOiBbRnVuY3Rpb24sIHt8W3N0cmluZ106IHN0cmluZ3x9XXx9O1xuICBITVJfQlVORExFX0lEOiBzdHJpbmc7XG4gIHJvb3Q6IFBhcmNlbFJlcXVpcmU7XG59XG5pbnRlcmZhY2UgUGFyY2VsTW9kdWxlIHtcbiAgaG90OiB7fFxuICAgIGRhdGE6IG1peGVkLFxuICAgIGFjY2VwdChjYjogKEZ1bmN0aW9uKSA9PiB2b2lkKTogdm9pZCxcbiAgICBkaXNwb3NlKGNiOiAobWl4ZWQpID0+IHZvaWQpOiB2b2lkLFxuICAgIC8vIGFjY2VwdChkZXBzOiBBcnJheTxzdHJpbmc+IHwgc3RyaW5nLCBjYjogKEZ1bmN0aW9uKSA9PiB2b2lkKTogdm9pZCxcbiAgICAvLyBkZWNsaW5lKCk6IHZvaWQsXG4gICAgX2FjY2VwdENhbGxiYWNrczogQXJyYXk8KEZ1bmN0aW9uKSA9PiB2b2lkPixcbiAgICBfZGlzcG9zZUNhbGxiYWNrczogQXJyYXk8KG1peGVkKSA9PiB2b2lkPixcbiAgfH07XG59XG5pbnRlcmZhY2UgRXh0ZW5zaW9uQ29udGV4dCB7XG4gIHJ1bnRpbWU6IHt8XG4gICAgcmVsb2FkKCk6IHZvaWQsXG4gICAgZ2V0VVJMKHVybDogc3RyaW5nKTogc3RyaW5nO1xuICAgIGdldE1hbmlmZXN0KCk6IHttYW5pZmVzdF92ZXJzaW9uOiBudW1iZXIsIC4uLn07XG4gIHx9O1xufVxuZGVjbGFyZSB2YXIgbW9kdWxlOiB7YnVuZGxlOiBQYXJjZWxSZXF1aXJlLCAuLi59O1xuZGVjbGFyZSB2YXIgSE1SX0hPU1Q6IHN0cmluZztcbmRlY2xhcmUgdmFyIEhNUl9QT1JUOiBzdHJpbmc7XG5kZWNsYXJlIHZhciBITVJfRU5WX0hBU0g6IHN0cmluZztcbmRlY2xhcmUgdmFyIEhNUl9TRUNVUkU6IGJvb2xlYW47XG5kZWNsYXJlIHZhciBjaHJvbWU6IEV4dGVuc2lvbkNvbnRleHQ7XG5kZWNsYXJlIHZhciBicm93c2VyOiBFeHRlbnNpb25Db250ZXh0O1xuZGVjbGFyZSB2YXIgX19wYXJjZWxfX2ltcG9ydF9fOiAoc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuZGVjbGFyZSB2YXIgX19wYXJjZWxfX2ltcG9ydFNjcmlwdHNfXzogKHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbmRlY2xhcmUgdmFyIGdsb2JhbFRoaXM6IHR5cGVvZiBzZWxmO1xuZGVjbGFyZSB2YXIgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOiBPYmplY3Q7XG4qL1xudmFyIE9WRVJMQVlfSUQgPSAnX19wYXJjZWxfX2Vycm9yX19vdmVybGF5X18nO1xudmFyIE9sZE1vZHVsZSA9IG1vZHVsZS5idW5kbGUuTW9kdWxlO1xuZnVuY3Rpb24gTW9kdWxlKG1vZHVsZU5hbWUpIHtcbiAgT2xkTW9kdWxlLmNhbGwodGhpcywgbW9kdWxlTmFtZSk7XG4gIHRoaXMuaG90ID0ge1xuICAgIGRhdGE6IG1vZHVsZS5idW5kbGUuaG90RGF0YVttb2R1bGVOYW1lXSxcbiAgICBfYWNjZXB0Q2FsbGJhY2tzOiBbXSxcbiAgICBfZGlzcG9zZUNhbGxiYWNrczogW10sXG4gICAgYWNjZXB0OiBmdW5jdGlvbiAoZm4pIHtcbiAgICAgIHRoaXMuX2FjY2VwdENhbGxiYWNrcy5wdXNoKGZuIHx8IGZ1bmN0aW9uICgpIHt9KTtcbiAgICB9LFxuICAgIGRpc3Bvc2U6IGZ1bmN0aW9uIChmbikge1xuICAgICAgdGhpcy5fZGlzcG9zZUNhbGxiYWNrcy5wdXNoKGZuKTtcbiAgICB9XG4gIH07XG4gIG1vZHVsZS5idW5kbGUuaG90RGF0YVttb2R1bGVOYW1lXSA9IHVuZGVmaW5lZDtcbn1cbm1vZHVsZS5idW5kbGUuTW9kdWxlID0gTW9kdWxlO1xubW9kdWxlLmJ1bmRsZS5ob3REYXRhID0ge307XG52YXIgY2hlY2tlZEFzc2V0cyAvKjoge3xbc3RyaW5nXTogYm9vbGVhbnx9ICovLCBhc3NldHNUb0Rpc3Bvc2UgLyo6IEFycmF5PFtQYXJjZWxSZXF1aXJlLCBzdHJpbmddPiAqLywgYXNzZXRzVG9BY2NlcHQgLyo6IEFycmF5PFtQYXJjZWxSZXF1aXJlLCBzdHJpbmddPiAqLztcblxuZnVuY3Rpb24gZ2V0SG9zdG5hbWUoKSB7XG4gIHJldHVybiBITVJfSE9TVCB8fCAobG9jYXRpb24ucHJvdG9jb2wuaW5kZXhPZignaHR0cCcpID09PSAwID8gbG9jYXRpb24uaG9zdG5hbWUgOiAnbG9jYWxob3N0Jyk7XG59XG5mdW5jdGlvbiBnZXRQb3J0KCkge1xuICByZXR1cm4gSE1SX1BPUlQgfHwgbG9jYXRpb24ucG9ydDtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlZGVjbGFyZVxudmFyIHBhcmVudCA9IG1vZHVsZS5idW5kbGUucGFyZW50O1xuaWYgKCghcGFyZW50IHx8ICFwYXJlbnQuaXNQYXJjZWxSZXF1aXJlKSAmJiB0eXBlb2YgV2ViU29ja2V0ICE9PSAndW5kZWZpbmVkJykge1xuICB2YXIgaG9zdG5hbWUgPSBnZXRIb3N0bmFtZSgpO1xuICB2YXIgcG9ydCA9IGdldFBvcnQoKTtcbiAgdmFyIHByb3RvY29sID0gSE1SX1NFQ1VSRSB8fCBsb2NhdGlvbi5wcm90b2NvbCA9PSAnaHR0cHM6JyAmJiAhWydsb2NhbGhvc3QnLCAnMTI3LjAuMC4xJywgJzAuMC4wLjAnXS5pbmNsdWRlcyhob3N0bmFtZSkgPyAnd3NzJyA6ICd3cyc7XG4gIHZhciB3cztcbiAgdHJ5IHtcbiAgICB3cyA9IG5ldyBXZWJTb2NrZXQocHJvdG9jb2wgKyAnOi8vJyArIGhvc3RuYW1lICsgKHBvcnQgPyAnOicgKyBwb3J0IDogJycpICsgJy8nKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgaWYgKGVyci5tZXNzYWdlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGVyci5tZXNzYWdlKTtcbiAgICB9XG4gICAgd3MgPSB7fTtcbiAgfVxuXG4gIC8vIFdlYiBleHRlbnNpb24gY29udGV4dFxuICB2YXIgZXh0Q3R4ID0gdHlwZW9mIGJyb3dzZXIgPT09ICd1bmRlZmluZWQnID8gdHlwZW9mIGNocm9tZSA9PT0gJ3VuZGVmaW5lZCcgPyBudWxsIDogY2hyb21lIDogYnJvd3NlcjtcblxuICAvLyBTYWZhcmkgZG9lc24ndCBzdXBwb3J0IHNvdXJjZVVSTCBpbiBlcnJvciBzdGFja3MuXG4gIC8vIGV2YWwgbWF5IGFsc28gYmUgZGlzYWJsZWQgdmlhIENTUCwgc28gZG8gYSBxdWljayBjaGVjay5cbiAgdmFyIHN1cHBvcnRzU291cmNlVVJMID0gZmFsc2U7XG4gIHRyeSB7XG4gICAgKDAsIGV2YWwpKCd0aHJvdyBuZXcgRXJyb3IoXCJ0ZXN0XCIpOyAvLyMgc291cmNlVVJMPXRlc3QuanMnKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgc3VwcG9ydHNTb3VyY2VVUkwgPSBlcnIuc3RhY2suaW5jbHVkZXMoJ3Rlc3QuanMnKTtcbiAgfVxuXG4gIC8vICRGbG93Rml4TWVcbiAgd3Mub25tZXNzYWdlID0gYXN5bmMgZnVuY3Rpb24gKGV2ZW50IC8qOiB7ZGF0YTogc3RyaW5nLCAuLi59ICovKSB7XG4gICAgY2hlY2tlZEFzc2V0cyA9IHt9IC8qOiB7fFtzdHJpbmddOiBib29sZWFufH0gKi87XG4gICAgYXNzZXRzVG9BY2NlcHQgPSBbXTtcbiAgICBhc3NldHNUb0Rpc3Bvc2UgPSBbXTtcbiAgICB2YXIgZGF0YSAvKjogSE1STWVzc2FnZSAqLyA9IEpTT04ucGFyc2UoZXZlbnQuZGF0YSk7XG4gICAgaWYgKGRhdGEudHlwZSA9PT0gJ3VwZGF0ZScpIHtcbiAgICAgIC8vIFJlbW92ZSBlcnJvciBvdmVybGF5IGlmIHRoZXJlIGlzIG9uZVxuICAgICAgaWYgKHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmVtb3ZlRXJyb3JPdmVybGF5KCk7XG4gICAgICB9XG4gICAgICBsZXQgYXNzZXRzID0gZGF0YS5hc3NldHMuZmlsdGVyKGFzc2V0ID0+IGFzc2V0LmVudkhhc2ggPT09IEhNUl9FTlZfSEFTSCk7XG5cbiAgICAgIC8vIEhhbmRsZSBITVIgVXBkYXRlXG4gICAgICBsZXQgaGFuZGxlZCA9IGFzc2V0cy5ldmVyeShhc3NldCA9PiB7XG4gICAgICAgIHJldHVybiBhc3NldC50eXBlID09PSAnY3NzJyB8fCBhc3NldC50eXBlID09PSAnanMnICYmIGhtckFjY2VwdENoZWNrKG1vZHVsZS5idW5kbGUucm9vdCwgYXNzZXQuaWQsIGFzc2V0LmRlcHNCeUJ1bmRsZSk7XG4gICAgICB9KTtcbiAgICAgIGlmIChoYW5kbGVkKSB7XG4gICAgICAgIGNvbnNvbGUuY2xlYXIoKTtcblxuICAgICAgICAvLyBEaXNwYXRjaCBjdXN0b20gZXZlbnQgc28gb3RoZXIgcnVudGltZXMgKGUuZyBSZWFjdCBSZWZyZXNoKSBhcmUgYXdhcmUuXG4gICAgICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgQ3VzdG9tRXZlbnQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgd2luZG93LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdwYXJjZWxobXJhY2NlcHQnKSk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgaG1yQXBwbHlVcGRhdGVzKGFzc2V0cyk7XG5cbiAgICAgICAgLy8gRGlzcG9zZSBhbGwgb2xkIGFzc2V0cy5cbiAgICAgICAgbGV0IHByb2Nlc3NlZEFzc2V0cyA9IHt9IC8qOiB7fFtzdHJpbmddOiBib29sZWFufH0gKi87XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXNzZXRzVG9EaXNwb3NlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgbGV0IGlkID0gYXNzZXRzVG9EaXNwb3NlW2ldWzFdO1xuICAgICAgICAgIGlmICghcHJvY2Vzc2VkQXNzZXRzW2lkXSkge1xuICAgICAgICAgICAgaG1yRGlzcG9zZShhc3NldHNUb0Rpc3Bvc2VbaV1bMF0sIGlkKTtcbiAgICAgICAgICAgIHByb2Nlc3NlZEFzc2V0c1tpZF0gPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFJ1biBhY2NlcHQgY2FsbGJhY2tzLiBUaGlzIHdpbGwgYWxzbyByZS1leGVjdXRlIG90aGVyIGRpc3Bvc2VkIGFzc2V0cyBpbiB0b3BvbG9naWNhbCBvcmRlci5cbiAgICAgICAgcHJvY2Vzc2VkQXNzZXRzID0ge307XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXNzZXRzVG9BY2NlcHQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBsZXQgaWQgPSBhc3NldHNUb0FjY2VwdFtpXVsxXTtcbiAgICAgICAgICBpZiAoIXByb2Nlc3NlZEFzc2V0c1tpZF0pIHtcbiAgICAgICAgICAgIGhtckFjY2VwdChhc3NldHNUb0FjY2VwdFtpXVswXSwgaWQpO1xuICAgICAgICAgICAgcHJvY2Vzc2VkQXNzZXRzW2lkXSA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgZnVsbFJlbG9hZCgpO1xuICAgIH1cbiAgICBpZiAoZGF0YS50eXBlID09PSAnZXJyb3InKSB7XG4gICAgICAvLyBMb2cgcGFyY2VsIGVycm9ycyB0byBjb25zb2xlXG4gICAgICBmb3IgKGxldCBhbnNpRGlhZ25vc3RpYyBvZiBkYXRhLmRpYWdub3N0aWNzLmFuc2kpIHtcbiAgICAgICAgbGV0IHN0YWNrID0gYW5zaURpYWdub3N0aWMuY29kZWZyYW1lID8gYW5zaURpYWdub3N0aWMuY29kZWZyYW1lIDogYW5zaURpYWdub3N0aWMuc3RhY2s7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ/CfmqggW3BhcmNlbF06ICcgKyBhbnNpRGlhZ25vc3RpYy5tZXNzYWdlICsgJ1xcbicgKyBzdGFjayArICdcXG5cXG4nICsgYW5zaURpYWdub3N0aWMuaGludHMuam9pbignXFxuJykpO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgLy8gUmVuZGVyIHRoZSBmYW5jeSBodG1sIG92ZXJsYXlcbiAgICAgICAgcmVtb3ZlRXJyb3JPdmVybGF5KCk7XG4gICAgICAgIHZhciBvdmVybGF5ID0gY3JlYXRlRXJyb3JPdmVybGF5KGRhdGEuZGlhZ25vc3RpY3MuaHRtbCk7XG4gICAgICAgIC8vICRGbG93Rml4TWVcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChvdmVybGF5KTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIHdzLm9uZXJyb3IgPSBmdW5jdGlvbiAoZSkge1xuICAgIGlmIChlLm1lc3NhZ2UpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZS5tZXNzYWdlKTtcbiAgICB9XG4gIH07XG4gIHdzLm9uY2xvc2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgY29uc29sZS53YXJuKCdbcGFyY2VsXSDwn5qoIENvbm5lY3Rpb24gdG8gdGhlIEhNUiBzZXJ2ZXIgd2FzIGxvc3QnKTtcbiAgfTtcbn1cbmZ1bmN0aW9uIHJlbW92ZUVycm9yT3ZlcmxheSgpIHtcbiAgdmFyIG92ZXJsYXkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChPVkVSTEFZX0lEKTtcbiAgaWYgKG92ZXJsYXkpIHtcbiAgICBvdmVybGF5LnJlbW92ZSgpO1xuICAgIGNvbnNvbGUubG9nKCdbcGFyY2VsXSDinKggRXJyb3IgcmVzb2x2ZWQnKTtcbiAgfVxufVxuZnVuY3Rpb24gY3JlYXRlRXJyb3JPdmVybGF5KGRpYWdub3N0aWNzKSB7XG4gIHZhciBvdmVybGF5ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gIG92ZXJsYXkuaWQgPSBPVkVSTEFZX0lEO1xuICBsZXQgZXJyb3JIVE1MID0gJzxkaXYgc3R5bGU9XCJiYWNrZ3JvdW5kOiBibGFjazsgb3BhY2l0eTogMC44NTsgZm9udC1zaXplOiAxNnB4OyBjb2xvcjogd2hpdGU7IHBvc2l0aW9uOiBmaXhlZDsgaGVpZ2h0OiAxMDAlOyB3aWR0aDogMTAwJTsgdG9wOiAwcHg7IGxlZnQ6IDBweDsgcGFkZGluZzogMzBweDsgZm9udC1mYW1pbHk6IE1lbmxvLCBDb25zb2xhcywgbW9ub3NwYWNlOyB6LWluZGV4OiA5OTk5O1wiPic7XG4gIGZvciAobGV0IGRpYWdub3N0aWMgb2YgZGlhZ25vc3RpY3MpIHtcbiAgICBsZXQgc3RhY2sgPSBkaWFnbm9zdGljLmZyYW1lcy5sZW5ndGggPyBkaWFnbm9zdGljLmZyYW1lcy5yZWR1Y2UoKHAsIGZyYW1lKSA9PiB7XG4gICAgICByZXR1cm4gYCR7cH1cbjxhIGhyZWY9XCIvX19wYXJjZWxfbGF1bmNoX2VkaXRvcj9maWxlPSR7ZW5jb2RlVVJJQ29tcG9uZW50KGZyYW1lLmxvY2F0aW9uKX1cIiBzdHlsZT1cInRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyBjb2xvcjogIzg4OFwiIG9uY2xpY2s9XCJmZXRjaCh0aGlzLmhyZWYpOyByZXR1cm4gZmFsc2VcIj4ke2ZyYW1lLmxvY2F0aW9ufTwvYT5cbiR7ZnJhbWUuY29kZX1gO1xuICAgIH0sICcnKSA6IGRpYWdub3N0aWMuc3RhY2s7XG4gICAgZXJyb3JIVE1MICs9IGBcbiAgICAgIDxkaXY+XG4gICAgICAgIDxkaXYgc3R5bGU9XCJmb250LXNpemU6IDE4cHg7IGZvbnQtd2VpZ2h0OiBib2xkOyBtYXJnaW4tdG9wOiAyMHB4O1wiPlxuICAgICAgICAgIPCfmqggJHtkaWFnbm9zdGljLm1lc3NhZ2V9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8cHJlPiR7c3RhY2t9PC9wcmU+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgJHtkaWFnbm9zdGljLmhpbnRzLm1hcChoaW50ID0+ICc8ZGl2PvCfkqEgJyArIGhpbnQgKyAnPC9kaXY+Jykuam9pbignJyl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICAke2RpYWdub3N0aWMuZG9jdW1lbnRhdGlvbiA/IGA8ZGl2PvCfk50gPGEgc3R5bGU9XCJjb2xvcjogdmlvbGV0XCIgaHJlZj1cIiR7ZGlhZ25vc3RpYy5kb2N1bWVudGF0aW9ufVwiIHRhcmdldD1cIl9ibGFua1wiPkxlYXJuIG1vcmU8L2E+PC9kaXY+YCA6ICcnfVxuICAgICAgPC9kaXY+XG4gICAgYDtcbiAgfVxuICBlcnJvckhUTUwgKz0gJzwvZGl2Pic7XG4gIG92ZXJsYXkuaW5uZXJIVE1MID0gZXJyb3JIVE1MO1xuICByZXR1cm4gb3ZlcmxheTtcbn1cbmZ1bmN0aW9uIGZ1bGxSZWxvYWQoKSB7XG4gIGlmICgncmVsb2FkJyBpbiBsb2NhdGlvbikge1xuICAgIGxvY2F0aW9uLnJlbG9hZCgpO1xuICB9IGVsc2UgaWYgKGV4dEN0eCAmJiBleHRDdHgucnVudGltZSAmJiBleHRDdHgucnVudGltZS5yZWxvYWQpIHtcbiAgICBleHRDdHgucnVudGltZS5yZWxvYWQoKTtcbiAgfVxufVxuZnVuY3Rpb24gZ2V0UGFyZW50cyhidW5kbGUsIGlkKSAvKjogQXJyYXk8W1BhcmNlbFJlcXVpcmUsIHN0cmluZ10+ICove1xuICB2YXIgbW9kdWxlcyA9IGJ1bmRsZS5tb2R1bGVzO1xuICBpZiAoIW1vZHVsZXMpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgdmFyIHBhcmVudHMgPSBbXTtcbiAgdmFyIGssIGQsIGRlcDtcbiAgZm9yIChrIGluIG1vZHVsZXMpIHtcbiAgICBmb3IgKGQgaW4gbW9kdWxlc1trXVsxXSkge1xuICAgICAgZGVwID0gbW9kdWxlc1trXVsxXVtkXTtcbiAgICAgIGlmIChkZXAgPT09IGlkIHx8IEFycmF5LmlzQXJyYXkoZGVwKSAmJiBkZXBbZGVwLmxlbmd0aCAtIDFdID09PSBpZCkge1xuICAgICAgICBwYXJlbnRzLnB1c2goW2J1bmRsZSwga10pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBpZiAoYnVuZGxlLnBhcmVudCkge1xuICAgIHBhcmVudHMgPSBwYXJlbnRzLmNvbmNhdChnZXRQYXJlbnRzKGJ1bmRsZS5wYXJlbnQsIGlkKSk7XG4gIH1cbiAgcmV0dXJuIHBhcmVudHM7XG59XG5mdW5jdGlvbiB1cGRhdGVMaW5rKGxpbmspIHtcbiAgdmFyIGhyZWYgPSBsaW5rLmdldEF0dHJpYnV0ZSgnaHJlZicpO1xuICBpZiAoIWhyZWYpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgdmFyIG5ld0xpbmsgPSBsaW5rLmNsb25lTm9kZSgpO1xuICBuZXdMaW5rLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAobGluay5wYXJlbnROb2RlICE9PSBudWxsKSB7XG4gICAgICAvLyAkRmxvd0ZpeE1lXG4gICAgICBsaW5rLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobGluayk7XG4gICAgfVxuICB9O1xuICBuZXdMaW5rLnNldEF0dHJpYnV0ZSgnaHJlZicsXG4gIC8vICRGbG93Rml4TWVcbiAgaHJlZi5zcGxpdCgnPycpWzBdICsgJz8nICsgRGF0ZS5ub3coKSk7XG4gIC8vICRGbG93Rml4TWVcbiAgbGluay5wYXJlbnROb2RlLmluc2VydEJlZm9yZShuZXdMaW5rLCBsaW5rLm5leHRTaWJsaW5nKTtcbn1cbnZhciBjc3NUaW1lb3V0ID0gbnVsbDtcbmZ1bmN0aW9uIHJlbG9hZENTUygpIHtcbiAgaWYgKGNzc1RpbWVvdXQpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgY3NzVGltZW91dCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgIHZhciBsaW5rcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2xpbmtbcmVsPVwic3R5bGVzaGVldFwiXScpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGlua3MubGVuZ3RoOyBpKyspIHtcbiAgICAgIC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLXR5cGVdXG4gICAgICB2YXIgaHJlZiAvKjogc3RyaW5nICovID0gbGlua3NbaV0uZ2V0QXR0cmlidXRlKCdocmVmJyk7XG4gICAgICB2YXIgaG9zdG5hbWUgPSBnZXRIb3N0bmFtZSgpO1xuICAgICAgdmFyIHNlcnZlZEZyb21ITVJTZXJ2ZXIgPSBob3N0bmFtZSA9PT0gJ2xvY2FsaG9zdCcgPyBuZXcgUmVnRXhwKCdeKGh0dHBzPzpcXFxcL1xcXFwvKDAuMC4wLjB8MTI3LjAuMC4xKXxsb2NhbGhvc3QpOicgKyBnZXRQb3J0KCkpLnRlc3QoaHJlZikgOiBocmVmLmluZGV4T2YoaG9zdG5hbWUgKyAnOicgKyBnZXRQb3J0KCkpO1xuICAgICAgdmFyIGFic29sdXRlID0gL15odHRwcz86XFwvXFwvL2kudGVzdChocmVmKSAmJiBocmVmLmluZGV4T2YobG9jYXRpb24ub3JpZ2luKSAhPT0gMCAmJiAhc2VydmVkRnJvbUhNUlNlcnZlcjtcbiAgICAgIGlmICghYWJzb2x1dGUpIHtcbiAgICAgICAgdXBkYXRlTGluayhsaW5rc1tpXSk7XG4gICAgICB9XG4gICAgfVxuICAgIGNzc1RpbWVvdXQgPSBudWxsO1xuICB9LCA1MCk7XG59XG5mdW5jdGlvbiBobXJEb3dubG9hZChhc3NldCkge1xuICBpZiAoYXNzZXQudHlwZSA9PT0gJ2pzJykge1xuICAgIGlmICh0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBsZXQgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XG4gICAgICBzY3JpcHQuc3JjID0gYXNzZXQudXJsICsgJz90PScgKyBEYXRlLm5vdygpO1xuICAgICAgaWYgKGFzc2V0Lm91dHB1dEZvcm1hdCA9PT0gJ2VzbW9kdWxlJykge1xuICAgICAgICBzY3JpcHQudHlwZSA9ICdtb2R1bGUnO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgdmFyIF9kb2N1bWVudCRoZWFkO1xuICAgICAgICBzY3JpcHQub25sb2FkID0gKCkgPT4gcmVzb2x2ZShzY3JpcHQpO1xuICAgICAgICBzY3JpcHQub25lcnJvciA9IHJlamVjdDtcbiAgICAgICAgKF9kb2N1bWVudCRoZWFkID0gZG9jdW1lbnQuaGVhZCkgPT09IG51bGwgfHwgX2RvY3VtZW50JGhlYWQgPT09IHZvaWQgMCB8fCBfZG9jdW1lbnQkaGVhZC5hcHBlbmRDaGlsZChzY3JpcHQpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgaW1wb3J0U2NyaXB0cyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgLy8gV29ya2VyIHNjcmlwdHNcbiAgICAgIGlmIChhc3NldC5vdXRwdXRGb3JtYXQgPT09ICdlc21vZHVsZScpIHtcbiAgICAgICAgcmV0dXJuIF9fcGFyY2VsX19pbXBvcnRfXyhhc3NldC51cmwgKyAnP3Q9JyArIERhdGUubm93KCkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgX19wYXJjZWxfX2ltcG9ydFNjcmlwdHNfXyhhc3NldC51cmwgKyAnP3Q9JyArIERhdGUubm93KCkpO1xuICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbmFzeW5jIGZ1bmN0aW9uIGhtckFwcGx5VXBkYXRlcyhhc3NldHMpIHtcbiAgZ2xvYmFsLnBhcmNlbEhvdFVwZGF0ZSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIGxldCBzY3JpcHRzVG9SZW1vdmU7XG4gIHRyeSB7XG4gICAgLy8gSWYgc291cmNlVVJMIGNvbW1lbnRzIGFyZW4ndCBzdXBwb3J0ZWQgaW4gZXZhbCwgd2UgbmVlZCB0byBsb2FkXG4gICAgLy8gdGhlIHVwZGF0ZSBmcm9tIHRoZSBkZXYgc2VydmVyIG92ZXIgSFRUUCBzbyB0aGF0IHN0YWNrIHRyYWNlc1xuICAgIC8vIGFyZSBjb3JyZWN0IGluIGVycm9ycy9sb2dzLiBUaGlzIGlzIG11Y2ggc2xvd2VyIHRoYW4gZXZhbCwgc29cbiAgICAvLyB3ZSBvbmx5IGRvIGl0IGlmIG5lZWRlZCAoY3VycmVudGx5IGp1c3QgU2FmYXJpKS5cbiAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3Mjk3XG4gICAgLy8gVGhpcyBwYXRoIGlzIGFsc28gdGFrZW4gaWYgYSBDU1AgZGlzYWxsb3dzIGV2YWwuXG4gICAgaWYgKCFzdXBwb3J0c1NvdXJjZVVSTCkge1xuICAgICAgbGV0IHByb21pc2VzID0gYXNzZXRzLm1hcChhc3NldCA9PiB7XG4gICAgICAgIHZhciBfaG1yRG93bmxvYWQ7XG4gICAgICAgIHJldHVybiAoX2htckRvd25sb2FkID0gaG1yRG93bmxvYWQoYXNzZXQpKSA9PT0gbnVsbCB8fCBfaG1yRG93bmxvYWQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9obXJEb3dubG9hZC5jYXRjaChlcnIgPT4ge1xuICAgICAgICAgIC8vIFdlYiBleHRlbnNpb24gZml4XG4gICAgICAgICAgaWYgKGV4dEN0eCAmJiBleHRDdHgucnVudGltZSAmJiBleHRDdHgucnVudGltZS5nZXRNYW5pZmVzdCgpLm1hbmlmZXN0X3ZlcnNpb24gPT0gMyAmJiB0eXBlb2YgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlICE9ICd1bmRlZmluZWQnICYmIGdsb2JhbCBpbnN0YW5jZW9mIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSkge1xuICAgICAgICAgICAgZXh0Q3R4LnJ1bnRpbWUucmVsb2FkKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIHNjcmlwdHNUb1JlbW92ZSA9IGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKTtcbiAgICB9XG4gICAgYXNzZXRzLmZvckVhY2goZnVuY3Rpb24gKGFzc2V0KSB7XG4gICAgICBobXJBcHBseShtb2R1bGUuYnVuZGxlLnJvb3QsIGFzc2V0KTtcbiAgICB9KTtcbiAgfSBmaW5hbGx5IHtcbiAgICBkZWxldGUgZ2xvYmFsLnBhcmNlbEhvdFVwZGF0ZTtcbiAgICBpZiAoc2NyaXB0c1RvUmVtb3ZlKSB7XG4gICAgICBzY3JpcHRzVG9SZW1vdmUuZm9yRWFjaChzY3JpcHQgPT4ge1xuICAgICAgICBpZiAoc2NyaXB0KSB7XG4gICAgICAgICAgdmFyIF9kb2N1bWVudCRoZWFkMjtcbiAgICAgICAgICAoX2RvY3VtZW50JGhlYWQyID0gZG9jdW1lbnQuaGVhZCkgPT09IG51bGwgfHwgX2RvY3VtZW50JGhlYWQyID09PSB2b2lkIDAgfHwgX2RvY3VtZW50JGhlYWQyLnJlbW92ZUNoaWxkKHNjcmlwdCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuZnVuY3Rpb24gaG1yQXBwbHkoYnVuZGxlIC8qOiBQYXJjZWxSZXF1aXJlICovLCBhc3NldCAvKjogIEhNUkFzc2V0ICovKSB7XG4gIHZhciBtb2R1bGVzID0gYnVuZGxlLm1vZHVsZXM7XG4gIGlmICghbW9kdWxlcykge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAoYXNzZXQudHlwZSA9PT0gJ2NzcycpIHtcbiAgICByZWxvYWRDU1MoKTtcbiAgfSBlbHNlIGlmIChhc3NldC50eXBlID09PSAnanMnKSB7XG4gICAgbGV0IGRlcHMgPSBhc3NldC5kZXBzQnlCdW5kbGVbYnVuZGxlLkhNUl9CVU5ETEVfSURdO1xuICAgIGlmIChkZXBzKSB7XG4gICAgICBpZiAobW9kdWxlc1thc3NldC5pZF0pIHtcbiAgICAgICAgLy8gUmVtb3ZlIGRlcGVuZGVuY2llcyB0aGF0IGFyZSByZW1vdmVkIGFuZCB3aWxsIGJlY29tZSBvcnBoYW5lZC5cbiAgICAgICAgLy8gVGhpcyBpcyBuZWNlc3Nhcnkgc28gdGhhdCBpZiB0aGUgYXNzZXQgaXMgYWRkZWQgYmFjayBhZ2FpbiwgdGhlIGNhY2hlIGlzIGdvbmUsIGFuZCB3ZSBwcmV2ZW50IGEgZnVsbCBwYWdlIHJlbG9hZC5cbiAgICAgICAgbGV0IG9sZERlcHMgPSBtb2R1bGVzW2Fzc2V0LmlkXVsxXTtcbiAgICAgICAgZm9yIChsZXQgZGVwIGluIG9sZERlcHMpIHtcbiAgICAgICAgICBpZiAoIWRlcHNbZGVwXSB8fCBkZXBzW2RlcF0gIT09IG9sZERlcHNbZGVwXSkge1xuICAgICAgICAgICAgbGV0IGlkID0gb2xkRGVwc1tkZXBdO1xuICAgICAgICAgICAgbGV0IHBhcmVudHMgPSBnZXRQYXJlbnRzKG1vZHVsZS5idW5kbGUucm9vdCwgaWQpO1xuICAgICAgICAgICAgaWYgKHBhcmVudHMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgIGhtckRlbGV0ZShtb2R1bGUuYnVuZGxlLnJvb3QsIGlkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChzdXBwb3J0c1NvdXJjZVVSTCkge1xuICAgICAgICAvLyBHbG9iYWwgZXZhbC4gV2Ugd291bGQgdXNlIGBuZXcgRnVuY3Rpb25gIGhlcmUgYnV0IGJyb3dzZXJcbiAgICAgICAgLy8gc3VwcG9ydCBmb3Igc291cmNlIG1hcHMgaXMgYmV0dGVyIHdpdGggZXZhbC5cbiAgICAgICAgKDAsIGV2YWwpKGFzc2V0Lm91dHB1dCk7XG4gICAgICB9XG5cbiAgICAgIC8vICRGbG93Rml4TWVcbiAgICAgIGxldCBmbiA9IGdsb2JhbC5wYXJjZWxIb3RVcGRhdGVbYXNzZXQuaWRdO1xuICAgICAgbW9kdWxlc1thc3NldC5pZF0gPSBbZm4sIGRlcHNdO1xuICAgIH0gZWxzZSBpZiAoYnVuZGxlLnBhcmVudCkge1xuICAgICAgaG1yQXBwbHkoYnVuZGxlLnBhcmVudCwgYXNzZXQpO1xuICAgIH1cbiAgfVxufVxuZnVuY3Rpb24gaG1yRGVsZXRlKGJ1bmRsZSwgaWQpIHtcbiAgbGV0IG1vZHVsZXMgPSBidW5kbGUubW9kdWxlcztcbiAgaWYgKCFtb2R1bGVzKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChtb2R1bGVzW2lkXSkge1xuICAgIC8vIENvbGxlY3QgZGVwZW5kZW5jaWVzIHRoYXQgd2lsbCBiZWNvbWUgb3JwaGFuZWQgd2hlbiB0aGlzIG1vZHVsZSBpcyBkZWxldGVkLlxuICAgIGxldCBkZXBzID0gbW9kdWxlc1tpZF1bMV07XG4gICAgbGV0IG9ycGhhbnMgPSBbXTtcbiAgICBmb3IgKGxldCBkZXAgaW4gZGVwcykge1xuICAgICAgbGV0IHBhcmVudHMgPSBnZXRQYXJlbnRzKG1vZHVsZS5idW5kbGUucm9vdCwgZGVwc1tkZXBdKTtcbiAgICAgIGlmIChwYXJlbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICBvcnBoYW5zLnB1c2goZGVwc1tkZXBdKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBEZWxldGUgdGhlIG1vZHVsZS4gVGhpcyBtdXN0IGJlIGRvbmUgYmVmb3JlIGRlbGV0aW5nIGRlcGVuZGVuY2llcyBpbiBjYXNlIG9mIGNpcmN1bGFyIGRlcGVuZGVuY2llcy5cbiAgICBkZWxldGUgbW9kdWxlc1tpZF07XG4gICAgZGVsZXRlIGJ1bmRsZS5jYWNoZVtpZF07XG5cbiAgICAvLyBOb3cgZGVsZXRlIHRoZSBvcnBoYW5zLlxuICAgIG9ycGhhbnMuZm9yRWFjaChpZCA9PiB7XG4gICAgICBobXJEZWxldGUobW9kdWxlLmJ1bmRsZS5yb290LCBpZCk7XG4gICAgfSk7XG4gIH0gZWxzZSBpZiAoYnVuZGxlLnBhcmVudCkge1xuICAgIGhtckRlbGV0ZShidW5kbGUucGFyZW50LCBpZCk7XG4gIH1cbn1cbmZ1bmN0aW9uIGhtckFjY2VwdENoZWNrKGJ1bmRsZSAvKjogUGFyY2VsUmVxdWlyZSAqLywgaWQgLyo6IHN0cmluZyAqLywgZGVwc0J5QnVuZGxlIC8qOiA/eyBbc3RyaW5nXTogeyBbc3RyaW5nXTogc3RyaW5nIH0gfSovKSB7XG4gIGlmIChobXJBY2NlcHRDaGVja09uZShidW5kbGUsIGlkLCBkZXBzQnlCdW5kbGUpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvLyBUcmF2ZXJzZSBwYXJlbnRzIGJyZWFkdGggZmlyc3QuIEFsbCBwb3NzaWJsZSBhbmNlc3RyaWVzIG11c3QgYWNjZXB0IHRoZSBITVIgdXBkYXRlLCBvciB3ZSdsbCByZWxvYWQuXG4gIGxldCBwYXJlbnRzID0gZ2V0UGFyZW50cyhtb2R1bGUuYnVuZGxlLnJvb3QsIGlkKTtcbiAgbGV0IGFjY2VwdGVkID0gZmFsc2U7XG4gIHdoaWxlIChwYXJlbnRzLmxlbmd0aCA+IDApIHtcbiAgICBsZXQgdiA9IHBhcmVudHMuc2hpZnQoKTtcbiAgICBsZXQgYSA9IGhtckFjY2VwdENoZWNrT25lKHZbMF0sIHZbMV0sIG51bGwpO1xuICAgIGlmIChhKSB7XG4gICAgICAvLyBJZiB0aGlzIHBhcmVudCBhY2NlcHRzLCBzdG9wIHRyYXZlcnNpbmcgdXB3YXJkLCBidXQgc3RpbGwgY29uc2lkZXIgc2libGluZ3MuXG4gICAgICBhY2NlcHRlZCA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIE90aGVyd2lzZSwgcXVldWUgdGhlIHBhcmVudHMgaW4gdGhlIG5leHQgbGV2ZWwgdXB3YXJkLlxuICAgICAgbGV0IHAgPSBnZXRQYXJlbnRzKG1vZHVsZS5idW5kbGUucm9vdCwgdlsxXSk7XG4gICAgICBpZiAocC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgLy8gSWYgdGhlcmUgYXJlIG5vIHBhcmVudHMsIHRoZW4gd2UndmUgcmVhY2hlZCBhbiBlbnRyeSB3aXRob3V0IGFjY2VwdGluZy4gUmVsb2FkLlxuICAgICAgICBhY2NlcHRlZCA9IGZhbHNlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIHBhcmVudHMucHVzaCguLi5wKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGFjY2VwdGVkO1xufVxuZnVuY3Rpb24gaG1yQWNjZXB0Q2hlY2tPbmUoYnVuZGxlIC8qOiBQYXJjZWxSZXF1aXJlICovLCBpZCAvKjogc3RyaW5nICovLCBkZXBzQnlCdW5kbGUgLyo6ID97IFtzdHJpbmddOiB7IFtzdHJpbmddOiBzdHJpbmcgfSB9Ki8pIHtcbiAgdmFyIG1vZHVsZXMgPSBidW5kbGUubW9kdWxlcztcbiAgaWYgKCFtb2R1bGVzKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChkZXBzQnlCdW5kbGUgJiYgIWRlcHNCeUJ1bmRsZVtidW5kbGUuSE1SX0JVTkRMRV9JRF0pIHtcbiAgICAvLyBJZiB3ZSByZWFjaGVkIHRoZSByb290IGJ1bmRsZSB3aXRob3V0IGZpbmRpbmcgd2hlcmUgdGhlIGFzc2V0IHNob3VsZCBnbyxcbiAgICAvLyB0aGVyZSdzIG5vdGhpbmcgdG8gZG8uIE1hcmsgYXMgXCJhY2NlcHRlZFwiIHNvIHdlIGRvbid0IHJlbG9hZCB0aGUgcGFnZS5cbiAgICBpZiAoIWJ1bmRsZS5wYXJlbnQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gaG1yQWNjZXB0Q2hlY2soYnVuZGxlLnBhcmVudCwgaWQsIGRlcHNCeUJ1bmRsZSk7XG4gIH1cbiAgaWYgKGNoZWNrZWRBc3NldHNbaWRdKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgY2hlY2tlZEFzc2V0c1tpZF0gPSB0cnVlO1xuICB2YXIgY2FjaGVkID0gYnVuZGxlLmNhY2hlW2lkXTtcbiAgYXNzZXRzVG9EaXNwb3NlLnB1c2goW2J1bmRsZSwgaWRdKTtcbiAgaWYgKCFjYWNoZWQgfHwgY2FjaGVkLmhvdCAmJiBjYWNoZWQuaG90Ll9hY2NlcHRDYWxsYmFja3MubGVuZ3RoKSB7XG4gICAgYXNzZXRzVG9BY2NlcHQucHVzaChbYnVuZGxlLCBpZF0pO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG5mdW5jdGlvbiBobXJEaXNwb3NlKGJ1bmRsZSAvKjogUGFyY2VsUmVxdWlyZSAqLywgaWQgLyo6IHN0cmluZyAqLykge1xuICB2YXIgY2FjaGVkID0gYnVuZGxlLmNhY2hlW2lkXTtcbiAgYnVuZGxlLmhvdERhdGFbaWRdID0ge307XG4gIGlmIChjYWNoZWQgJiYgY2FjaGVkLmhvdCkge1xuICAgIGNhY2hlZC5ob3QuZGF0YSA9IGJ1bmRsZS5ob3REYXRhW2lkXTtcbiAgfVxuICBpZiAoY2FjaGVkICYmIGNhY2hlZC5ob3QgJiYgY2FjaGVkLmhvdC5fZGlzcG9zZUNhbGxiYWNrcy5sZW5ndGgpIHtcbiAgICBjYWNoZWQuaG90Ll9kaXNwb3NlQ2FsbGJhY2tzLmZvckVhY2goZnVuY3Rpb24gKGNiKSB7XG4gICAgICBjYihidW5kbGUuaG90RGF0YVtpZF0pO1xuICAgIH0pO1xuICB9XG4gIGRlbGV0ZSBidW5kbGUuY2FjaGVbaWRdO1xufVxuZnVuY3Rpb24gaG1yQWNjZXB0KGJ1bmRsZSAvKjogUGFyY2VsUmVxdWlyZSAqLywgaWQgLyo6IHN0cmluZyAqLykge1xuICAvLyBFeGVjdXRlIHRoZSBtb2R1bGUuXG4gIGJ1bmRsZShpZCk7XG5cbiAgLy8gUnVuIHRoZSBhY2NlcHQgY2FsbGJhY2tzIGluIHRoZSBuZXcgdmVyc2lvbiBvZiB0aGUgbW9kdWxlLlxuICB2YXIgY2FjaGVkID0gYnVuZGxlLmNhY2hlW2lkXTtcbiAgaWYgKGNhY2hlZCAmJiBjYWNoZWQuaG90ICYmIGNhY2hlZC5ob3QuX2FjY2VwdENhbGxiYWNrcy5sZW5ndGgpIHtcbiAgICBjYWNoZWQuaG90Ll9hY2NlcHRDYWxsYmFja3MuZm9yRWFjaChmdW5jdGlvbiAoY2IpIHtcbiAgICAgIHZhciBhc3NldHNUb0Fsc29BY2NlcHQgPSBjYihmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBnZXRQYXJlbnRzKG1vZHVsZS5idW5kbGUucm9vdCwgaWQpO1xuICAgICAgfSk7XG4gICAgICBpZiAoYXNzZXRzVG9BbHNvQWNjZXB0ICYmIGFzc2V0c1RvQWNjZXB0Lmxlbmd0aCkge1xuICAgICAgICBhc3NldHNUb0Fsc29BY2NlcHQuZm9yRWFjaChmdW5jdGlvbiAoYSkge1xuICAgICAgICAgIGhtckRpc3Bvc2UoYVswXSwgYVsxXSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vICRGbG93Rml4TWVbbWV0aG9kLXVuYmluZGluZ11cbiAgICAgICAgYXNzZXRzVG9BY2NlcHQucHVzaC5hcHBseShhc3NldHNUb0FjY2VwdCwgYXNzZXRzVG9BbHNvQWNjZXB0KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufSIsIi8vIFVzZSBhIGNyb3NzLWJyb3dzZXIgc3RvcmFnZSBBUEk6XHJcbi8vIGNvbnN0IHN0b3JhZ2UgPSBjaHJvbWUuc3RvcmFnZS5zeW5jIHx8IGJyb3dzZXIuc3RvcmFnZS5zeW5jXHJcbmltcG9ydCBicm93c2VyIGZyb20gJ3dlYmV4dGVuc2lvbi1wb2x5ZmlsbCdcclxuaW1wb3J0IGdwdGhUb2dnbGVJbWcgZnJvbSAnLi4vaW1nL2dwdGgtdG9nZ2xlLWNpcmNsZWQud2VicCdcclxuXHJcbmxldCBpc09wdGlvbnNTaG93biA9IGZhbHNlXHJcblxyXG5icm93c2VyLnN0b3JhZ2Uuc3luYy5nZXQoJ2dwdGhlbWUnKS50aGVuKChkYXRhKSA9PiB7XHJcblx0Y29uc3QgdGhlbWUgPSBkYXRhLmdwdGhlbWUgfHwgJ2xpZ2h0J1xyXG5cdGFwcGx5VGhlbWUodGhlbWUpXHJcbn0pXHJcblxyXG5jcmVhdGVBbmRBcHBlbmRTVkdTdGlja3lCdG4oKVxyXG4vLyB0cmFja0h0bWxDbGFzc0NoYW5nZXMoKVxyXG5cclxuY29uc3QgJGh0bWxUYWcgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRcclxuY29uc3QgJG9wdGlvbnMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZ3B0aF9fb3B0aW9ucycpXHJcbmNvbnN0ICRzdmdJY29uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmdwdGhfX3N2Zy1pY29uJylcclxuY29uc3QgJHRoZW1lQnV0dG9uc0NvbnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5ncHRoX190aGVtZXMtYnRucycpXHJcbi8vIGNvbnN0ICR0aGVtZUJ1dHRvbnMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZ3B0aF9fdGhlbWVzLWJ0bnMgYnV0dG9uJylcclxuXHJcbiRzdmdJY29uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdG9nZ2xlT3B0aW9ucylcclxuXHJcbi8qICR0aGVtZUJ1dHRvbnMuZm9yRWFjaCgoYnRuKSA9PiB7XHJcblx0YnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKHsgdGFyZ2V0IH0pID0+IHtcclxuXHRcdGNvbnN0IHRoZW1lID0gdGFyZ2V0LmlkXHJcblx0XHRicm93c2VyLnN0b3JhZ2Uuc3luYy5zZXQoeyBncHRoZW1lOiB0aGVtZSB9KVxyXG5cdFx0YXBwbHlUaGVtZSh0aGVtZSlcclxuXHRcdHRvZ2dsZU9wdGlvbnMoKVxyXG5cdH0pXHJcbn0pICovXHJcbiR0aGVtZUJ1dHRvbnNDb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZXZlbnQpID0+IHtcclxuXHRjb25zdCB0aGVtZUJ1dHRvbiA9IGV2ZW50LnRhcmdldC5jbG9zZXN0KCdidXR0b24nKVxyXG5cdGlmICghdGhlbWVCdXR0b24pIHJldHVyblxyXG5cclxuXHRjb25zdCB0aGVtZSA9IHRoZW1lQnV0dG9uLmlkXHJcblx0YnJvd3Nlci5zdG9yYWdlLnN5bmMuc2V0KHsgZ3B0aGVtZTogdGhlbWUgfSlcclxuXHRhcHBseVRoZW1lKHRoZW1lKVxyXG5cdHRvZ2dsZU9wdGlvbnMoKVxyXG59KVxyXG5cclxuZnVuY3Rpb24gY3JlYXRlQW5kQXBwZW5kU1ZHU3RpY2t5QnRuKCkge1xyXG5cdGNvbnN0IGdwdGhGbG9hdGluZ0J0biA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpXHJcblx0Z3B0aEZsb2F0aW5nQnRuLmNsYXNzTmFtZSA9ICdncHRoX19zdmcnXHJcblxyXG5cdGxldCBodG1sQ29kZSA9IGBcclxuXHRcdDxkaXYgY2xhc3M9XCJncHRoX19zdmctaWNvblwiPlxyXG5cdFx0XHQ8aW1nIHNyYz1cIiR7Z3B0aFRvZ2dsZUltZ31cIiBhbHQ9XCJncHRoLXRvZ2dsZVwiLz5cclxuXHRcdDwvZGl2PlxyXG5cdFx0PGRpdiBjbGFzcz1cImdwdGhfX29wdGlvbnNcIj5cclxuXHRcdFx0PGRpdiBjbGFzcz1cImdwdGhfX3RoZW1lc1wiPlxyXG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJncHRoX190aGVtZXMtYnRuc1wiPlxyXG5cdFx0XHRcdFx0PGJ1dHRvbiBpZD1cImxpZ2h0XCIgZGF0YS1ncHRoLXRoZW1lPVwibGlnaHRcIj7imIDvuI88L2J1dHRvbj5cclxuXHRcdFx0XHRcdDxidXR0b24gaWQ9XCJkYXJrXCIgZGF0YS1ncHRoLXRoZW1lPVwiZGFya1wiPvCfjJk8L2J1dHRvbj5cclxuXHRcdFx0XHRcdDxidXR0b24gaWQ9XCJvbGVkXCIgZGF0YS1ncHRoLXRoZW1lPVwiYmxhY2tcIj7wn4yWPC9idXR0b24+XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0PC9kaXY+XHJcblx0YFxyXG5cclxuXHQvLyBncHRoRmxvYXRpbmdCdG4uaW5uZXJIVE1MID0gaHRtbENvZGVcclxuXHRncHRoRmxvYXRpbmdCdG4uaW5zZXJ0QWRqYWNlbnRIVE1MKCdiZWZvcmVlbmQnLCBodG1sQ29kZSlcclxuXHRkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGdwdGhGbG9hdGluZ0J0bilcclxufVxyXG5cclxuLyogZnVuY3Rpb24gYXBwbHlUaGVtZSh0aGVtZSkge1xyXG5cdGxldCBodG1sVGFnID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50XHJcblxyXG5cdC8vIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGFzc05hbWUgPSB0aGVtZSA9PT0gJ29sZWQnID8gJ29sZWQgZGFyaycgOiB0aGVtZVxyXG5cdGlmICh0aGVtZSA9PT0gJ29sZWQnKSB7XHJcblx0XHRodG1sVGFnLmRhdGFzZXQuZ3B0aGVtZSA9IHRoZW1lXHJcblx0XHRodG1sVGFnLnN0eWxlLmNvbG9yU2NoZW1lID0gJ2RhcmsnXHJcblx0XHRodG1sVGFnLmNsYXNzTmFtZSA9ICdkYXJrJ1xyXG5cdH0gZWxzZSB7XHJcblx0XHRodG1sVGFnLnN0eWxlLmNvbG9yU2NoZW1lID0gdGhlbWVcclxuXHRcdGh0bWxUYWcuY2xhc3NOYW1lID0gdGhlbWVcclxuXHRcdGh0bWxUYWcuaGFzQXR0cmlidXRlKCdkYXRhLWdwdGhlbWUnKSAmJiBodG1sVGFnLnJlbW92ZUF0dHJpYnV0ZSgnZGF0YS1ncHRoZW1lJylcclxuXHR9XHJcbn1cclxuICovXHJcbmZ1bmN0aW9uIGFwcGx5VGhlbWUodGhlbWUpIHtcclxuXHQkaHRtbFRhZy5kYXRhc2V0LmdwdGhlbWUgPSB0aGVtZVxyXG5cdCRodG1sVGFnLnN0eWxlLmNvbG9yU2NoZW1lID0gdGhlbWUgPT09ICdvbGVkJyA/ICdkYXJrJyA6IHRoZW1lXHJcblx0JGh0bWxUYWcuY2xhc3NOYW1lID0gdGhlbWUgPT09ICdvbGVkJyA/ICdkYXJrJyA6IHRoZW1lXHJcblx0aWYgKHRoZW1lICE9PSAnb2xlZCcpICRodG1sVGFnLnJlbW92ZUF0dHJpYnV0ZSgnZGF0YS1ncHRoZW1lJylcclxufVxyXG5cclxuZnVuY3Rpb24gdG9nZ2xlT3B0aW9ucygpIHtcclxuXHRpc09wdGlvbnNTaG93biA9ICFpc09wdGlvbnNTaG93blxyXG5cdCRvcHRpb25zLmNsYXNzTGlzdC50b2dnbGUoJ2dwdGgtb3B0aW9ucy1zaG93bicsIGlzT3B0aW9uc1Nob3duKVxyXG5cclxuXHRpZiAoaXNPcHRpb25zU2hvd24pIGRvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBoaWRlT3B0aW9ucylcclxuXHRlbHNlIGRvY3VtZW50LmJvZHkucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBoaWRlT3B0aW9ucylcclxufVxyXG5cclxuZnVuY3Rpb24gaGlkZU9wdGlvbnMoZXZlbnQpIHtcclxuXHRpZiAoISRzdmdJY29uLmNvbnRhaW5zKGV2ZW50LnRhcmdldCkgJiYgISRvcHRpb25zLmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcclxuXHRcdHRvZ2dsZU9wdGlvbnMoKVxyXG5cdH1cclxufVxyXG5cclxuLyogZnVuY3Rpb24gdHJhY2tIdG1sQ2xhc3NDaGFuZ2VzKCkge1xyXG5cdC8vIFNlbGVjdCB0aGUgdGFyZ2V0IGVsZW1lbnRcclxuXHRjb25zdCB0YXJnZXQgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRcclxuXHJcblx0Ly8gQ3JlYXRlIGFuIG9ic2VydmVyIGluc3RhbmNlXHJcblx0Y29uc3Qgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbiAobXV0YXRpb25zKSB7XHJcblx0XHRtdXRhdGlvbnMuZm9yRWFjaChmdW5jdGlvbiAobXV0YXRpb24pIHtcclxuXHRcdFx0aWYgKG11dGF0aW9uLnR5cGUgPT09ICdhdHRyaWJ1dGVzJyAmJiBtdXRhdGlvbi5hdHRyaWJ1dGVOYW1lID09PSAnY2xhc3MnKSB7XHJcblx0XHRcdFx0Ly8gRG8gc29tZXRoaW5nIHdoZW4gdGhlIGNsYXNzIGF0dHJpYnV0ZSBjaGFuZ2VzXHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coJ0NsYXNzIGF0dHJpYnV0ZSBoYXMgY2hhbmdlZCcpXHJcblx0XHRcdFx0Ly8gYWxlcnQoJ0NsYXNzIGF0dHJpYnV0ZSBoYXMgY2hhbmdlZCcpXHJcblx0XHRcdFx0Ly8gYWxlcnQodGFyZ2V0LmNsYXNzTmFtZSlcclxuXHRcdFx0XHRicm93c2VyLnN0b3JhZ2Uuc3luYy5zZXQoeyBncHRoZW1lOiB0YXJnZXQuY2xhc3NOYW1lIH0pXHJcblx0XHRcdFx0YXBwbHlUaGVtZSh0YXJnZXQuY2xhc3NOYW1lKVxyXG5cdFx0XHR9XHJcblx0XHR9KVxyXG5cdH0pXHJcblxyXG5cdC8vIENvbmZpZ3VyYXRpb24gb2YgdGhlIG9ic2VydmVyOlxyXG5cdGNvbnN0IGNvbmZpZyA9IHsgYXR0cmlidXRlczogdHJ1ZSwgYXR0cmlidXRlRmlsdGVyOiBbJ2NsYXNzJ10gfVxyXG5cclxuXHQvLyBQYXNzIGluIHRoZSB0YXJnZXQgbm9kZSwgYXMgd2VsbCBhcyB0aGUgb2JzZXJ2ZXIgb3B0aW9uc1xyXG5cdG9ic2VydmVyLm9ic2VydmUodGFyZ2V0LCBjb25maWcpXHJcbn0gKi9cclxuIiwiLyogd2ViZXh0ZW5zaW9uLXBvbHlmaWxsIC0gdjAuMTAuMCAtIEZyaSBBdWcgMTIgMjAyMiAxOTo0Mjo0NCAqL1xuLyogLSotIE1vZGU6IGluZGVudC10YWJzLW1vZGU6IG5pbDsganMtaW5kZW50LWxldmVsOiAyIC0qLSAqL1xuLyogdmltOiBzZXQgc3RzPTIgc3c9MiBldCB0dz04MDogKi9cbi8qIFRoaXMgU291cmNlIENvZGUgRm9ybSBpcyBzdWJqZWN0IHRvIHRoZSB0ZXJtcyBvZiB0aGUgTW96aWxsYSBQdWJsaWNcbiAqIExpY2Vuc2UsIHYuIDIuMC4gSWYgYSBjb3B5IG9mIHRoZSBNUEwgd2FzIG5vdCBkaXN0cmlidXRlZCB3aXRoIHRoaXNcbiAqIGZpbGUsIFlvdSBjYW4gb2J0YWluIG9uZSBhdCBodHRwOi8vbW96aWxsYS5vcmcvTVBMLzIuMC8uICovXG5cInVzZSBzdHJpY3RcIjtcblxuaWYgKCFnbG9iYWxUaGlzLmNocm9tZT8ucnVudGltZT8uaWQpIHtcbiAgdGhyb3cgbmV3IEVycm9yKFwiVGhpcyBzY3JpcHQgc2hvdWxkIG9ubHkgYmUgbG9hZGVkIGluIGEgYnJvd3NlciBleHRlbnNpb24uXCIpO1xufVxuXG5pZiAodHlwZW9mIGdsb2JhbFRoaXMuYnJvd3NlciA9PT0gXCJ1bmRlZmluZWRcIiB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YoZ2xvYmFsVGhpcy5icm93c2VyKSAhPT0gT2JqZWN0LnByb3RvdHlwZSkge1xuICBjb25zdCBDSFJPTUVfU0VORF9NRVNTQUdFX0NBTExCQUNLX05PX1JFU1BPTlNFX01FU1NBR0UgPSBcIlRoZSBtZXNzYWdlIHBvcnQgY2xvc2VkIGJlZm9yZSBhIHJlc3BvbnNlIHdhcyByZWNlaXZlZC5cIjtcblxuICAvLyBXcmFwcGluZyB0aGUgYnVsayBvZiB0aGlzIHBvbHlmaWxsIGluIGEgb25lLXRpbWUtdXNlIGZ1bmN0aW9uIGlzIGEgbWlub3JcbiAgLy8gb3B0aW1pemF0aW9uIGZvciBGaXJlZm94LiBTaW5jZSBTcGlkZXJtb25rZXkgZG9lcyBub3QgZnVsbHkgcGFyc2UgdGhlXG4gIC8vIGNvbnRlbnRzIG9mIGEgZnVuY3Rpb24gdW50aWwgdGhlIGZpcnN0IHRpbWUgaXQncyBjYWxsZWQsIGFuZCBzaW5jZSBpdCB3aWxsXG4gIC8vIG5ldmVyIGFjdHVhbGx5IG5lZWQgdG8gYmUgY2FsbGVkLCB0aGlzIGFsbG93cyB0aGUgcG9seWZpbGwgdG8gYmUgaW5jbHVkZWRcbiAgLy8gaW4gRmlyZWZveCBuZWFybHkgZm9yIGZyZWUuXG4gIGNvbnN0IHdyYXBBUElzID0gZXh0ZW5zaW9uQVBJcyA9PiB7XG4gICAgLy8gTk9URTogYXBpTWV0YWRhdGEgaXMgYXNzb2NpYXRlZCB0byB0aGUgY29udGVudCBvZiB0aGUgYXBpLW1ldGFkYXRhLmpzb24gZmlsZVxuICAgIC8vIGF0IGJ1aWxkIHRpbWUgYnkgcmVwbGFjaW5nIHRoZSBmb2xsb3dpbmcgXCJpbmNsdWRlXCIgd2l0aCB0aGUgY29udGVudCBvZiB0aGVcbiAgICAvLyBKU09OIGZpbGUuXG4gICAgY29uc3QgYXBpTWV0YWRhdGEgPSB7XG4gICAgICBcImFsYXJtc1wiOiB7XG4gICAgICAgIFwiY2xlYXJcIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgIH0sXG4gICAgICAgIFwiY2xlYXJBbGxcIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgIH0sXG4gICAgICAgIFwiZ2V0XCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICB9LFxuICAgICAgICBcImdldEFsbFwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDBcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFwiYm9va21hcmtzXCI6IHtcbiAgICAgICAgXCJjcmVhdGVcIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgIH0sXG4gICAgICAgIFwiZ2V0XCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICB9LFxuICAgICAgICBcImdldENoaWxkcmVuXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICB9LFxuICAgICAgICBcImdldFJlY2VudFwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgfSxcbiAgICAgICAgXCJnZXRTdWJUcmVlXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICB9LFxuICAgICAgICBcImdldFRyZWVcIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgIH0sXG4gICAgICAgIFwibW92ZVwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDIsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDJcbiAgICAgICAgfSxcbiAgICAgICAgXCJyZW1vdmVcIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgIH0sXG4gICAgICAgIFwicmVtb3ZlVHJlZVwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgfSxcbiAgICAgICAgXCJzZWFyY2hcIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgIH0sXG4gICAgICAgIFwidXBkYXRlXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMixcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMlxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgXCJicm93c2VyQWN0aW9uXCI6IHtcbiAgICAgICAgXCJkaXNhYmxlXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMSxcbiAgICAgICAgICBcImZhbGxiYWNrVG9Ob0NhbGxiYWNrXCI6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCJlbmFibGVcIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAxLFxuICAgICAgICAgIFwiZmFsbGJhY2tUb05vQ2FsbGJhY2tcIjogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBcImdldEJhZGdlQmFja2dyb3VuZENvbG9yXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICB9LFxuICAgICAgICBcImdldEJhZGdlVGV4dFwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgfSxcbiAgICAgICAgXCJnZXRQb3B1cFwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgfSxcbiAgICAgICAgXCJnZXRUaXRsZVwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgfSxcbiAgICAgICAgXCJvcGVuUG9wdXBcIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgIH0sXG4gICAgICAgIFwic2V0QmFkZ2VCYWNrZ3JvdW5kQ29sb3JcIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAxLFxuICAgICAgICAgIFwiZmFsbGJhY2tUb05vQ2FsbGJhY2tcIjogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBcInNldEJhZGdlVGV4dFwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDEsXG4gICAgICAgICAgXCJmYWxsYmFja1RvTm9DYWxsYmFja1wiOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwic2V0SWNvblwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgfSxcbiAgICAgICAgXCJzZXRQb3B1cFwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDEsXG4gICAgICAgICAgXCJmYWxsYmFja1RvTm9DYWxsYmFja1wiOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwic2V0VGl0bGVcIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAxLFxuICAgICAgICAgIFwiZmFsbGJhY2tUb05vQ2FsbGJhY2tcIjogdHJ1ZVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgXCJicm93c2luZ0RhdGFcIjoge1xuICAgICAgICBcInJlbW92ZVwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDIsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDJcbiAgICAgICAgfSxcbiAgICAgICAgXCJyZW1vdmVDYWNoZVwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgfSxcbiAgICAgICAgXCJyZW1vdmVDb29raWVzXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICB9LFxuICAgICAgICBcInJlbW92ZURvd25sb2Fkc1wiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgfSxcbiAgICAgICAgXCJyZW1vdmVGb3JtRGF0YVwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgfSxcbiAgICAgICAgXCJyZW1vdmVIaXN0b3J5XCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICB9LFxuICAgICAgICBcInJlbW92ZUxvY2FsU3RvcmFnZVwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgfSxcbiAgICAgICAgXCJyZW1vdmVQYXNzd29yZHNcIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgIH0sXG4gICAgICAgIFwicmVtb3ZlUGx1Z2luRGF0YVwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgfSxcbiAgICAgICAgXCJzZXR0aW5nc1wiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDBcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFwiY29tbWFuZHNcIjoge1xuICAgICAgICBcImdldEFsbFwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDBcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFwiY29udGV4dE1lbnVzXCI6IHtcbiAgICAgICAgXCJyZW1vdmVcIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgIH0sXG4gICAgICAgIFwicmVtb3ZlQWxsXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMFxuICAgICAgICB9LFxuICAgICAgICBcInVwZGF0ZVwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDIsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDJcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFwiY29va2llc1wiOiB7XG4gICAgICAgIFwiZ2V0XCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICB9LFxuICAgICAgICBcImdldEFsbFwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgfSxcbiAgICAgICAgXCJnZXRBbGxDb29raWVTdG9yZXNcIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgIH0sXG4gICAgICAgIFwicmVtb3ZlXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICB9LFxuICAgICAgICBcInNldFwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFwiZGV2dG9vbHNcIjoge1xuICAgICAgICBcImluc3BlY3RlZFdpbmRvd1wiOiB7XG4gICAgICAgICAgXCJldmFsXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDIsXG4gICAgICAgICAgICBcInNpbmdsZUNhbGxiYWNrQXJnXCI6IGZhbHNlXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcInBhbmVsc1wiOiB7XG4gICAgICAgICAgXCJjcmVhdGVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDMsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMyxcbiAgICAgICAgICAgIFwic2luZ2xlQ2FsbGJhY2tBcmdcIjogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJlbGVtZW50c1wiOiB7XG4gICAgICAgICAgICBcImNyZWF0ZVNpZGViYXJQYW5lXCI6IHtcbiAgICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgXCJkb3dubG9hZHNcIjoge1xuICAgICAgICBcImNhbmNlbFwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgfSxcbiAgICAgICAgXCJkb3dubG9hZFwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgfSxcbiAgICAgICAgXCJlcmFzZVwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgfSxcbiAgICAgICAgXCJnZXRGaWxlSWNvblwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDJcbiAgICAgICAgfSxcbiAgICAgICAgXCJvcGVuXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMSxcbiAgICAgICAgICBcImZhbGxiYWNrVG9Ob0NhbGxiYWNrXCI6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCJwYXVzZVwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgfSxcbiAgICAgICAgXCJyZW1vdmVGaWxlXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICB9LFxuICAgICAgICBcInJlc3VtZVwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgfSxcbiAgICAgICAgXCJzZWFyY2hcIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgIH0sXG4gICAgICAgIFwic2hvd1wiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDEsXG4gICAgICAgICAgXCJmYWxsYmFja1RvTm9DYWxsYmFja1wiOiB0cnVlXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBcImV4dGVuc2lvblwiOiB7XG4gICAgICAgIFwiaXNBbGxvd2VkRmlsZVNjaGVtZUFjY2Vzc1wiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDBcbiAgICAgICAgfSxcbiAgICAgICAgXCJpc0FsbG93ZWRJbmNvZ25pdG9BY2Nlc3NcIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBcImhpc3RvcnlcIjoge1xuICAgICAgICBcImFkZFVybFwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgfSxcbiAgICAgICAgXCJkZWxldGVBbGxcIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgIH0sXG4gICAgICAgIFwiZGVsZXRlUmFuZ2VcIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgIH0sXG4gICAgICAgIFwiZGVsZXRlVXJsXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICB9LFxuICAgICAgICBcImdldFZpc2l0c1wiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgfSxcbiAgICAgICAgXCJzZWFyY2hcIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBcImkxOG5cIjoge1xuICAgICAgICBcImRldGVjdExhbmd1YWdlXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICB9LFxuICAgICAgICBcImdldEFjY2VwdExhbmd1YWdlc1wiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDBcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFwiaWRlbnRpdHlcIjoge1xuICAgICAgICBcImxhdW5jaFdlYkF1dGhGbG93XCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgXCJpZGxlXCI6IHtcbiAgICAgICAgXCJxdWVyeVN0YXRlXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgXCJtYW5hZ2VtZW50XCI6IHtcbiAgICAgICAgXCJnZXRcIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgIH0sXG4gICAgICAgIFwiZ2V0QWxsXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMFxuICAgICAgICB9LFxuICAgICAgICBcImdldFNlbGZcIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgIH0sXG4gICAgICAgIFwic2V0RW5hYmxlZFwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDIsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDJcbiAgICAgICAgfSxcbiAgICAgICAgXCJ1bmluc3RhbGxTZWxmXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgXCJub3RpZmljYXRpb25zXCI6IHtcbiAgICAgICAgXCJjbGVhclwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgfSxcbiAgICAgICAgXCJjcmVhdGVcIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAyXG4gICAgICAgIH0sXG4gICAgICAgIFwiZ2V0QWxsXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMFxuICAgICAgICB9LFxuICAgICAgICBcImdldFBlcm1pc3Npb25MZXZlbFwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDBcbiAgICAgICAgfSxcbiAgICAgICAgXCJ1cGRhdGVcIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAyLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAyXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBcInBhZ2VBY3Rpb25cIjoge1xuICAgICAgICBcImdldFBvcHVwXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICB9LFxuICAgICAgICBcImdldFRpdGxlXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICB9LFxuICAgICAgICBcImhpZGVcIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAxLFxuICAgICAgICAgIFwiZmFsbGJhY2tUb05vQ2FsbGJhY2tcIjogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBcInNldEljb25cIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgIH0sXG4gICAgICAgIFwic2V0UG9wdXBcIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAxLFxuICAgICAgICAgIFwiZmFsbGJhY2tUb05vQ2FsbGJhY2tcIjogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBcInNldFRpdGxlXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMSxcbiAgICAgICAgICBcImZhbGxiYWNrVG9Ob0NhbGxiYWNrXCI6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCJzaG93XCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMSxcbiAgICAgICAgICBcImZhbGxiYWNrVG9Ob0NhbGxiYWNrXCI6IHRydWVcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFwicGVybWlzc2lvbnNcIjoge1xuICAgICAgICBcImNvbnRhaW5zXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICB9LFxuICAgICAgICBcImdldEFsbFwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDBcbiAgICAgICAgfSxcbiAgICAgICAgXCJyZW1vdmVcIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgIH0sXG4gICAgICAgIFwicmVxdWVzdFwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFwicnVudGltZVwiOiB7XG4gICAgICAgIFwiZ2V0QmFja2dyb3VuZFBhZ2VcIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgIH0sXG4gICAgICAgIFwiZ2V0UGxhdGZvcm1JbmZvXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMFxuICAgICAgICB9LFxuICAgICAgICBcIm9wZW5PcHRpb25zUGFnZVwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDBcbiAgICAgICAgfSxcbiAgICAgICAgXCJyZXF1ZXN0VXBkYXRlQ2hlY2tcIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgIH0sXG4gICAgICAgIFwic2VuZE1lc3NhZ2VcIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAzXG4gICAgICAgIH0sXG4gICAgICAgIFwic2VuZE5hdGl2ZU1lc3NhZ2VcIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAyLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAyXG4gICAgICAgIH0sXG4gICAgICAgIFwic2V0VW5pbnN0YWxsVVJMXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgXCJzZXNzaW9uc1wiOiB7XG4gICAgICAgIFwiZ2V0RGV2aWNlc1wiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgfSxcbiAgICAgICAgXCJnZXRSZWNlbnRseUNsb3NlZFwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgfSxcbiAgICAgICAgXCJyZXN0b3JlXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgXCJzdG9yYWdlXCI6IHtcbiAgICAgICAgXCJsb2NhbFwiOiB7XG4gICAgICAgICAgXCJjbGVhclwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdldFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdldEJ5dGVzSW5Vc2VcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJyZW1vdmVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJzZXRcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJtYW5hZ2VkXCI6IHtcbiAgICAgICAgICBcImdldFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdldEJ5dGVzSW5Vc2VcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJzeW5jXCI6IHtcbiAgICAgICAgICBcImNsZWFyXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDBcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZ2V0XCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZ2V0Qnl0ZXNJblVzZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInJlbW92ZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInNldFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgXCJ0YWJzXCI6IHtcbiAgICAgICAgXCJjYXB0dXJlVmlzaWJsZVRhYlwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDJcbiAgICAgICAgfSxcbiAgICAgICAgXCJjcmVhdGVcIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgIH0sXG4gICAgICAgIFwiZGV0ZWN0TGFuZ3VhZ2VcIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgIH0sXG4gICAgICAgIFwiZGlzY2FyZFwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgfSxcbiAgICAgICAgXCJkdXBsaWNhdGVcIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgIH0sXG4gICAgICAgIFwiZXhlY3V0ZVNjcmlwdFwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDJcbiAgICAgICAgfSxcbiAgICAgICAgXCJnZXRcIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgIH0sXG4gICAgICAgIFwiZ2V0Q3VycmVudFwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDBcbiAgICAgICAgfSxcbiAgICAgICAgXCJnZXRab29tXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICB9LFxuICAgICAgICBcImdldFpvb21TZXR0aW5nc1wiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgfSxcbiAgICAgICAgXCJnb0JhY2tcIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgIH0sXG4gICAgICAgIFwiZ29Gb3J3YXJkXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICB9LFxuICAgICAgICBcImhpZ2hsaWdodFwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgfSxcbiAgICAgICAgXCJpbnNlcnRDU1NcIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAyXG4gICAgICAgIH0sXG4gICAgICAgIFwibW92ZVwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDIsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDJcbiAgICAgICAgfSxcbiAgICAgICAgXCJxdWVyeVwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgfSxcbiAgICAgICAgXCJyZWxvYWRcIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAyXG4gICAgICAgIH0sXG4gICAgICAgIFwicmVtb3ZlXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICB9LFxuICAgICAgICBcInJlbW92ZUNTU1wiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDJcbiAgICAgICAgfSxcbiAgICAgICAgXCJzZW5kTWVzc2FnZVwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDIsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDNcbiAgICAgICAgfSxcbiAgICAgICAgXCJzZXRab29tXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMlxuICAgICAgICB9LFxuICAgICAgICBcInNldFpvb21TZXR0aW5nc1wiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDJcbiAgICAgICAgfSxcbiAgICAgICAgXCJ1cGRhdGVcIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAyXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBcInRvcFNpdGVzXCI6IHtcbiAgICAgICAgXCJnZXRcIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBcIndlYk5hdmlnYXRpb25cIjoge1xuICAgICAgICBcImdldEFsbEZyYW1lc1wiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgfSxcbiAgICAgICAgXCJnZXRGcmFtZVwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFwid2ViUmVxdWVzdFwiOiB7XG4gICAgICAgIFwiaGFuZGxlckJlaGF2aW9yQ2hhbmdlZFwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDBcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFwid2luZG93c1wiOiB7XG4gICAgICAgIFwiY3JlYXRlXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICB9LFxuICAgICAgICBcImdldFwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDJcbiAgICAgICAgfSxcbiAgICAgICAgXCJnZXRBbGxcIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgIH0sXG4gICAgICAgIFwiZ2V0Q3VycmVudFwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgfSxcbiAgICAgICAgXCJnZXRMYXN0Rm9jdXNlZFwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgfSxcbiAgICAgICAgXCJyZW1vdmVcIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgIH0sXG4gICAgICAgIFwidXBkYXRlXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMixcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcblxuICAgIGlmIChPYmplY3Qua2V5cyhhcGlNZXRhZGF0YSkubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJhcGktbWV0YWRhdGEuanNvbiBoYXMgbm90IGJlZW4gaW5jbHVkZWQgaW4gYnJvd3Nlci1wb2x5ZmlsbFwiKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIFdlYWtNYXAgc3ViY2xhc3Mgd2hpY2ggY3JlYXRlcyBhbmQgc3RvcmVzIGEgdmFsdWUgZm9yIGFueSBrZXkgd2hpY2ggZG9lc1xuICAgICAqIG5vdCBleGlzdCB3aGVuIGFjY2Vzc2VkLCBidXQgYmVoYXZlcyBleGFjdGx5IGFzIGFuIG9yZGluYXJ5IFdlYWtNYXBcbiAgICAgKiBvdGhlcndpc2UuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBjcmVhdGVJdGVtXG4gICAgICogICAgICAgIEEgZnVuY3Rpb24gd2hpY2ggd2lsbCBiZSBjYWxsZWQgaW4gb3JkZXIgdG8gY3JlYXRlIHRoZSB2YWx1ZSBmb3IgYW55XG4gICAgICogICAgICAgIGtleSB3aGljaCBkb2VzIG5vdCBleGlzdCwgdGhlIGZpcnN0IHRpbWUgaXQgaXMgYWNjZXNzZWQuIFRoZVxuICAgICAqICAgICAgICBmdW5jdGlvbiByZWNlaXZlcywgYXMgaXRzIG9ubHkgYXJndW1lbnQsIHRoZSBrZXkgYmVpbmcgY3JlYXRlZC5cbiAgICAgKi9cbiAgICBjbGFzcyBEZWZhdWx0V2Vha01hcCBleHRlbmRzIFdlYWtNYXAge1xuICAgICAgY29uc3RydWN0b3IoY3JlYXRlSXRlbSwgaXRlbXMgPSB1bmRlZmluZWQpIHtcbiAgICAgICAgc3VwZXIoaXRlbXMpO1xuICAgICAgICB0aGlzLmNyZWF0ZUl0ZW0gPSBjcmVhdGVJdGVtO1xuICAgICAgfVxuXG4gICAgICBnZXQoa2V5KSB7XG4gICAgICAgIGlmICghdGhpcy5oYXMoa2V5KSkge1xuICAgICAgICAgIHRoaXMuc2V0KGtleSwgdGhpcy5jcmVhdGVJdGVtKGtleSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHN1cGVyLmdldChrZXkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gb2JqZWN0IGlzIGFuIG9iamVjdCB3aXRoIGEgYHRoZW5gIG1ldGhvZCwgYW5kIGNhblxuICAgICAqIHRoZXJlZm9yZSBiZSBhc3N1bWVkIHRvIGJlaGF2ZSBhcyBhIFByb21pc2UuXG4gICAgICpcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byB0ZXN0LlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHRoZSB2YWx1ZSBpcyB0aGVuYWJsZS5cbiAgICAgKi9cbiAgICBjb25zdCBpc1RoZW5hYmxlID0gdmFsdWUgPT4ge1xuICAgICAgcmV0dXJuIHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgdmFsdWUudGhlbiA9PT0gXCJmdW5jdGlvblwiO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuZCByZXR1cm5zIGEgZnVuY3Rpb24gd2hpY2gsIHdoZW4gY2FsbGVkLCB3aWxsIHJlc29sdmUgb3IgcmVqZWN0XG4gICAgICogdGhlIGdpdmVuIHByb21pc2UgYmFzZWQgb24gaG93IGl0IGlzIGNhbGxlZDpcbiAgICAgKlxuICAgICAqIC0gSWYsIHdoZW4gY2FsbGVkLCBgY2hyb21lLnJ1bnRpbWUubGFzdEVycm9yYCBjb250YWlucyBhIG5vbi1udWxsIG9iamVjdCxcbiAgICAgKiAgIHRoZSBwcm9taXNlIGlzIHJlamVjdGVkIHdpdGggdGhhdCB2YWx1ZS5cbiAgICAgKiAtIElmIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCBleGFjdGx5IG9uZSBhcmd1bWVudCwgdGhlIHByb21pc2UgaXNcbiAgICAgKiAgIHJlc29sdmVkIHRvIHRoYXQgdmFsdWUuXG4gICAgICogLSBPdGhlcndpc2UsIHRoZSBwcm9taXNlIGlzIHJlc29sdmVkIHRvIGFuIGFycmF5IGNvbnRhaW5pbmcgYWxsIG9mIHRoZVxuICAgICAqICAgZnVuY3Rpb24ncyBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gcHJvbWlzZVxuICAgICAqICAgICAgICBBbiBvYmplY3QgY29udGFpbmluZyB0aGUgcmVzb2x1dGlvbiBhbmQgcmVqZWN0aW9uIGZ1bmN0aW9ucyBvZiBhXG4gICAgICogICAgICAgIHByb21pc2UuXG4gICAgICogQHBhcmFtIHtmdW5jdGlvbn0gcHJvbWlzZS5yZXNvbHZlXG4gICAgICogICAgICAgIFRoZSBwcm9taXNlJ3MgcmVzb2x1dGlvbiBmdW5jdGlvbi5cbiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBwcm9taXNlLnJlamVjdFxuICAgICAqICAgICAgICBUaGUgcHJvbWlzZSdzIHJlamVjdGlvbiBmdW5jdGlvbi5cbiAgICAgKiBAcGFyYW0ge29iamVjdH0gbWV0YWRhdGFcbiAgICAgKiAgICAgICAgTWV0YWRhdGEgYWJvdXQgdGhlIHdyYXBwZWQgbWV0aG9kIHdoaWNoIGhhcyBjcmVhdGVkIHRoZSBjYWxsYmFjay5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IG1ldGFkYXRhLnNpbmdsZUNhbGxiYWNrQXJnXG4gICAgICogICAgICAgIFdoZXRoZXIgb3Igbm90IHRoZSBwcm9taXNlIGlzIHJlc29sdmVkIHdpdGggb25seSB0aGUgZmlyc3RcbiAgICAgKiAgICAgICAgYXJndW1lbnQgb2YgdGhlIGNhbGxiYWNrLCBhbHRlcm5hdGl2ZWx5IGFuIGFycmF5IG9mIGFsbCB0aGVcbiAgICAgKiAgICAgICAgY2FsbGJhY2sgYXJndW1lbnRzIGlzIHJlc29sdmVkLiBCeSBkZWZhdWx0LCBpZiB0aGUgY2FsbGJhY2tcbiAgICAgKiAgICAgICAgZnVuY3Rpb24gaXMgaW52b2tlZCB3aXRoIG9ubHkgYSBzaW5nbGUgYXJndW1lbnQsIHRoYXQgd2lsbCBiZVxuICAgICAqICAgICAgICByZXNvbHZlZCB0byB0aGUgcHJvbWlzZSwgd2hpbGUgYWxsIGFyZ3VtZW50cyB3aWxsIGJlIHJlc29sdmVkIGFzXG4gICAgICogICAgICAgIGFuIGFycmF5IGlmIG11bHRpcGxlIGFyZSBnaXZlbi5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHtmdW5jdGlvbn1cbiAgICAgKiAgICAgICAgVGhlIGdlbmVyYXRlZCBjYWxsYmFjayBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBjb25zdCBtYWtlQ2FsbGJhY2sgPSAocHJvbWlzZSwgbWV0YWRhdGEpID0+IHtcbiAgICAgIHJldHVybiAoLi4uY2FsbGJhY2tBcmdzKSA9PiB7XG4gICAgICAgIGlmIChleHRlbnNpb25BUElzLnJ1bnRpbWUubGFzdEVycm9yKSB7XG4gICAgICAgICAgcHJvbWlzZS5yZWplY3QobmV3IEVycm9yKGV4dGVuc2lvbkFQSXMucnVudGltZS5sYXN0RXJyb3IubWVzc2FnZSkpO1xuICAgICAgICB9IGVsc2UgaWYgKG1ldGFkYXRhLnNpbmdsZUNhbGxiYWNrQXJnIHx8XG4gICAgICAgICAgICAgICAgICAgKGNhbGxiYWNrQXJncy5sZW5ndGggPD0gMSAmJiBtZXRhZGF0YS5zaW5nbGVDYWxsYmFja0FyZyAhPT0gZmFsc2UpKSB7XG4gICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKGNhbGxiYWNrQXJnc1swXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKGNhbGxiYWNrQXJncyk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfTtcblxuICAgIGNvbnN0IHBsdXJhbGl6ZUFyZ3VtZW50cyA9IChudW1BcmdzKSA9PiBudW1BcmdzID09IDEgPyBcImFyZ3VtZW50XCIgOiBcImFyZ3VtZW50c1wiO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHdyYXBwZXIgZnVuY3Rpb24gZm9yIGEgbWV0aG9kIHdpdGggdGhlIGdpdmVuIG5hbWUgYW5kIG1ldGFkYXRhLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAgICAgKiAgICAgICAgVGhlIG5hbWUgb2YgdGhlIG1ldGhvZCB3aGljaCBpcyBiZWluZyB3cmFwcGVkLlxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBtZXRhZGF0YVxuICAgICAqICAgICAgICBNZXRhZGF0YSBhYm91dCB0aGUgbWV0aG9kIGJlaW5nIHdyYXBwZWQuXG4gICAgICogQHBhcmFtIHtpbnRlZ2VyfSBtZXRhZGF0YS5taW5BcmdzXG4gICAgICogICAgICAgIFRoZSBtaW5pbXVtIG51bWJlciBvZiBhcmd1bWVudHMgd2hpY2ggbXVzdCBiZSBwYXNzZWQgdG8gdGhlXG4gICAgICogICAgICAgIGZ1bmN0aW9uLiBJZiBjYWxsZWQgd2l0aCBmZXdlciB0aGFuIHRoaXMgbnVtYmVyIG9mIGFyZ3VtZW50cywgdGhlXG4gICAgICogICAgICAgIHdyYXBwZXIgd2lsbCByYWlzZSBhbiBleGNlcHRpb24uXG4gICAgICogQHBhcmFtIHtpbnRlZ2VyfSBtZXRhZGF0YS5tYXhBcmdzXG4gICAgICogICAgICAgIFRoZSBtYXhpbXVtIG51bWJlciBvZiBhcmd1bWVudHMgd2hpY2ggbWF5IGJlIHBhc3NlZCB0byB0aGVcbiAgICAgKiAgICAgICAgZnVuY3Rpb24uIElmIGNhbGxlZCB3aXRoIG1vcmUgdGhhbiB0aGlzIG51bWJlciBvZiBhcmd1bWVudHMsIHRoZVxuICAgICAqICAgICAgICB3cmFwcGVyIHdpbGwgcmFpc2UgYW4gZXhjZXB0aW9uLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gbWV0YWRhdGEuc2luZ2xlQ2FsbGJhY2tBcmdcbiAgICAgKiAgICAgICAgV2hldGhlciBvciBub3QgdGhlIHByb21pc2UgaXMgcmVzb2x2ZWQgd2l0aCBvbmx5IHRoZSBmaXJzdFxuICAgICAqICAgICAgICBhcmd1bWVudCBvZiB0aGUgY2FsbGJhY2ssIGFsdGVybmF0aXZlbHkgYW4gYXJyYXkgb2YgYWxsIHRoZVxuICAgICAqICAgICAgICBjYWxsYmFjayBhcmd1bWVudHMgaXMgcmVzb2x2ZWQuIEJ5IGRlZmF1bHQsIGlmIHRoZSBjYWxsYmFja1xuICAgICAqICAgICAgICBmdW5jdGlvbiBpcyBpbnZva2VkIHdpdGggb25seSBhIHNpbmdsZSBhcmd1bWVudCwgdGhhdCB3aWxsIGJlXG4gICAgICogICAgICAgIHJlc29sdmVkIHRvIHRoZSBwcm9taXNlLCB3aGlsZSBhbGwgYXJndW1lbnRzIHdpbGwgYmUgcmVzb2x2ZWQgYXNcbiAgICAgKiAgICAgICAgYW4gYXJyYXkgaWYgbXVsdGlwbGUgYXJlIGdpdmVuLlxuICAgICAqXG4gICAgICogQHJldHVybnMge2Z1bmN0aW9uKG9iamVjdCwgLi4uKil9XG4gICAgICogICAgICAgVGhlIGdlbmVyYXRlZCB3cmFwcGVyIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGNvbnN0IHdyYXBBc3luY0Z1bmN0aW9uID0gKG5hbWUsIG1ldGFkYXRhKSA9PiB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gYXN5bmNGdW5jdGlvbldyYXBwZXIodGFyZ2V0LCAuLi5hcmdzKSB7XG4gICAgICAgIGlmIChhcmdzLmxlbmd0aCA8IG1ldGFkYXRhLm1pbkFyZ3MpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIGF0IGxlYXN0ICR7bWV0YWRhdGEubWluQXJnc30gJHtwbHVyYWxpemVBcmd1bWVudHMobWV0YWRhdGEubWluQXJncyl9IGZvciAke25hbWV9KCksIGdvdCAke2FyZ3MubGVuZ3RofWApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGFyZ3MubGVuZ3RoID4gbWV0YWRhdGEubWF4QXJncykge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgYXQgbW9zdCAke21ldGFkYXRhLm1heEFyZ3N9ICR7cGx1cmFsaXplQXJndW1lbnRzKG1ldGFkYXRhLm1heEFyZ3MpfSBmb3IgJHtuYW1lfSgpLCBnb3QgJHthcmdzLmxlbmd0aH1gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgaWYgKG1ldGFkYXRhLmZhbGxiYWNrVG9Ob0NhbGxiYWNrKSB7XG4gICAgICAgICAgICAvLyBUaGlzIEFQSSBtZXRob2QgaGFzIGN1cnJlbnRseSBubyBjYWxsYmFjayBvbiBDaHJvbWUsIGJ1dCBpdCByZXR1cm4gYSBwcm9taXNlIG9uIEZpcmVmb3gsXG4gICAgICAgICAgICAvLyBhbmQgc28gdGhlIHBvbHlmaWxsIHdpbGwgdHJ5IHRvIGNhbGwgaXQgd2l0aCBhIGNhbGxiYWNrIGZpcnN0LCBhbmQgaXQgd2lsbCBmYWxsYmFja1xuICAgICAgICAgICAgLy8gdG8gbm90IHBhc3NpbmcgdGhlIGNhbGxiYWNrIGlmIHRoZSBmaXJzdCBjYWxsIGZhaWxzLlxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgdGFyZ2V0W25hbWVdKC4uLmFyZ3MsIG1ha2VDYWxsYmFjayh7cmVzb2x2ZSwgcmVqZWN0fSwgbWV0YWRhdGEpKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGNiRXJyb3IpIHtcbiAgICAgICAgICAgICAgY29uc29sZS53YXJuKGAke25hbWV9IEFQSSBtZXRob2QgZG9lc24ndCBzZWVtIHRvIHN1cHBvcnQgdGhlIGNhbGxiYWNrIHBhcmFtZXRlciwgYCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcImZhbGxpbmcgYmFjayB0byBjYWxsIGl0IHdpdGhvdXQgYSBjYWxsYmFjazogXCIsIGNiRXJyb3IpO1xuXG4gICAgICAgICAgICAgIHRhcmdldFtuYW1lXSguLi5hcmdzKTtcblxuICAgICAgICAgICAgICAvLyBVcGRhdGUgdGhlIEFQSSBtZXRob2QgbWV0YWRhdGEsIHNvIHRoYXQgdGhlIG5leHQgQVBJIGNhbGxzIHdpbGwgbm90IHRyeSB0b1xuICAgICAgICAgICAgICAvLyB1c2UgdGhlIHVuc3VwcG9ydGVkIGNhbGxiYWNrIGFueW1vcmUuXG4gICAgICAgICAgICAgIG1ldGFkYXRhLmZhbGxiYWNrVG9Ob0NhbGxiYWNrID0gZmFsc2U7XG4gICAgICAgICAgICAgIG1ldGFkYXRhLm5vQ2FsbGJhY2sgPSB0cnVlO1xuXG4gICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKG1ldGFkYXRhLm5vQ2FsbGJhY2spIHtcbiAgICAgICAgICAgIHRhcmdldFtuYW1lXSguLi5hcmdzKTtcbiAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGFyZ2V0W25hbWVdKC4uLmFyZ3MsIG1ha2VDYWxsYmFjayh7cmVzb2x2ZSwgcmVqZWN0fSwgbWV0YWRhdGEpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogV3JhcHMgYW4gZXhpc3RpbmcgbWV0aG9kIG9mIHRoZSB0YXJnZXQgb2JqZWN0LCBzbyB0aGF0IGNhbGxzIHRvIGl0IGFyZVxuICAgICAqIGludGVyY2VwdGVkIGJ5IHRoZSBnaXZlbiB3cmFwcGVyIGZ1bmN0aW9uLiBUaGUgd3JhcHBlciBmdW5jdGlvbiByZWNlaXZlcyxcbiAgICAgKiBhcyBpdHMgZmlyc3QgYXJndW1lbnQsIHRoZSBvcmlnaW5hbCBgdGFyZ2V0YCBvYmplY3QsIGZvbGxvd2VkIGJ5IGVhY2ggb2ZcbiAgICAgKiB0aGUgYXJndW1lbnRzIHBhc3NlZCB0byB0aGUgb3JpZ2luYWwgbWV0aG9kLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtvYmplY3R9IHRhcmdldFxuICAgICAqICAgICAgICBUaGUgb3JpZ2luYWwgdGFyZ2V0IG9iamVjdCB0aGF0IHRoZSB3cmFwcGVkIG1ldGhvZCBiZWxvbmdzIHRvLlxuICAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IG1ldGhvZFxuICAgICAqICAgICAgICBUaGUgbWV0aG9kIGJlaW5nIHdyYXBwZWQuIFRoaXMgaXMgdXNlZCBhcyB0aGUgdGFyZ2V0IG9mIHRoZSBQcm94eVxuICAgICAqICAgICAgICBvYmplY3Qgd2hpY2ggaXMgY3JlYXRlZCB0byB3cmFwIHRoZSBtZXRob2QuXG4gICAgICogQHBhcmFtIHtmdW5jdGlvbn0gd3JhcHBlclxuICAgICAqICAgICAgICBUaGUgd3JhcHBlciBmdW5jdGlvbiB3aGljaCBpcyBjYWxsZWQgaW4gcGxhY2Ugb2YgYSBkaXJlY3QgaW52b2NhdGlvblxuICAgICAqICAgICAgICBvZiB0aGUgd3JhcHBlZCBtZXRob2QuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB7UHJveHk8ZnVuY3Rpb24+fVxuICAgICAqICAgICAgICBBIFByb3h5IG9iamVjdCBmb3IgdGhlIGdpdmVuIG1ldGhvZCwgd2hpY2ggaW52b2tlcyB0aGUgZ2l2ZW4gd3JhcHBlclxuICAgICAqICAgICAgICBtZXRob2QgaW4gaXRzIHBsYWNlLlxuICAgICAqL1xuICAgIGNvbnN0IHdyYXBNZXRob2QgPSAodGFyZ2V0LCBtZXRob2QsIHdyYXBwZXIpID0+IHtcbiAgICAgIHJldHVybiBuZXcgUHJveHkobWV0aG9kLCB7XG4gICAgICAgIGFwcGx5KHRhcmdldE1ldGhvZCwgdGhpc09iaiwgYXJncykge1xuICAgICAgICAgIHJldHVybiB3cmFwcGVyLmNhbGwodGhpc09iaiwgdGFyZ2V0LCAuLi5hcmdzKTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICBsZXQgaGFzT3duUHJvcGVydHkgPSBGdW5jdGlvbi5jYWxsLmJpbmQoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSk7XG5cbiAgICAvKipcbiAgICAgKiBXcmFwcyBhbiBvYmplY3QgaW4gYSBQcm94eSB3aGljaCBpbnRlcmNlcHRzIGFuZCB3cmFwcyBjZXJ0YWluIG1ldGhvZHNcbiAgICAgKiBiYXNlZCBvbiB0aGUgZ2l2ZW4gYHdyYXBwZXJzYCBhbmQgYG1ldGFkYXRhYCBvYmplY3RzLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtvYmplY3R9IHRhcmdldFxuICAgICAqICAgICAgICBUaGUgdGFyZ2V0IG9iamVjdCB0byB3cmFwLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtvYmplY3R9IFt3cmFwcGVycyA9IHt9XVxuICAgICAqICAgICAgICBBbiBvYmplY3QgdHJlZSBjb250YWluaW5nIHdyYXBwZXIgZnVuY3Rpb25zIGZvciBzcGVjaWFsIGNhc2VzLiBBbnlcbiAgICAgKiAgICAgICAgZnVuY3Rpb24gcHJlc2VudCBpbiB0aGlzIG9iamVjdCB0cmVlIGlzIGNhbGxlZCBpbiBwbGFjZSBvZiB0aGVcbiAgICAgKiAgICAgICAgbWV0aG9kIGluIHRoZSBzYW1lIGxvY2F0aW9uIGluIHRoZSBgdGFyZ2V0YCBvYmplY3QgdHJlZS4gVGhlc2VcbiAgICAgKiAgICAgICAgd3JhcHBlciBtZXRob2RzIGFyZSBpbnZva2VkIGFzIGRlc2NyaWJlZCBpbiB7QHNlZSB3cmFwTWV0aG9kfS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBbbWV0YWRhdGEgPSB7fV1cbiAgICAgKiAgICAgICAgQW4gb2JqZWN0IHRyZWUgY29udGFpbmluZyBtZXRhZGF0YSB1c2VkIHRvIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVcbiAgICAgKiAgICAgICAgUHJvbWlzZS1iYXNlZCB3cmFwcGVyIGZ1bmN0aW9ucyBmb3IgYXN5bmNocm9ub3VzLiBBbnkgZnVuY3Rpb24gaW5cbiAgICAgKiAgICAgICAgdGhlIGB0YXJnZXRgIG9iamVjdCB0cmVlIHdoaWNoIGhhcyBhIGNvcnJlc3BvbmRpbmcgbWV0YWRhdGEgb2JqZWN0XG4gICAgICogICAgICAgIGluIHRoZSBzYW1lIGxvY2F0aW9uIGluIHRoZSBgbWV0YWRhdGFgIHRyZWUgaXMgcmVwbGFjZWQgd2l0aCBhblxuICAgICAqICAgICAgICBhdXRvbWF0aWNhbGx5LWdlbmVyYXRlZCB3cmFwcGVyIGZ1bmN0aW9uLCBhcyBkZXNjcmliZWQgaW5cbiAgICAgKiAgICAgICAge0BzZWUgd3JhcEFzeW5jRnVuY3Rpb259XG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB7UHJveHk8b2JqZWN0Pn1cbiAgICAgKi9cbiAgICBjb25zdCB3cmFwT2JqZWN0ID0gKHRhcmdldCwgd3JhcHBlcnMgPSB7fSwgbWV0YWRhdGEgPSB7fSkgPT4ge1xuICAgICAgbGV0IGNhY2hlID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgIGxldCBoYW5kbGVycyA9IHtcbiAgICAgICAgaGFzKHByb3h5VGFyZ2V0LCBwcm9wKSB7XG4gICAgICAgICAgcmV0dXJuIHByb3AgaW4gdGFyZ2V0IHx8IHByb3AgaW4gY2FjaGU7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZ2V0KHByb3h5VGFyZ2V0LCBwcm9wLCByZWNlaXZlcikge1xuICAgICAgICAgIGlmIChwcm9wIGluIGNhY2hlKSB7XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVbcHJvcF07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCEocHJvcCBpbiB0YXJnZXQpKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGxldCB2YWx1ZSA9IHRhcmdldFtwcm9wXTtcblxuICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgLy8gVGhpcyBpcyBhIG1ldGhvZCBvbiB0aGUgdW5kZXJseWluZyBvYmplY3QuIENoZWNrIGlmIHdlIG5lZWQgdG8gZG9cbiAgICAgICAgICAgIC8vIGFueSB3cmFwcGluZy5cblxuICAgICAgICAgICAgaWYgKHR5cGVvZiB3cmFwcGVyc1twcm9wXSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgIC8vIFdlIGhhdmUgYSBzcGVjaWFsLWNhc2Ugd3JhcHBlciBmb3IgdGhpcyBtZXRob2QuXG4gICAgICAgICAgICAgIHZhbHVlID0gd3JhcE1ldGhvZCh0YXJnZXQsIHRhcmdldFtwcm9wXSwgd3JhcHBlcnNbcHJvcF0pO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChoYXNPd25Qcm9wZXJ0eShtZXRhZGF0YSwgcHJvcCkpIHtcbiAgICAgICAgICAgICAgLy8gVGhpcyBpcyBhbiBhc3luYyBtZXRob2QgdGhhdCB3ZSBoYXZlIG1ldGFkYXRhIGZvci4gQ3JlYXRlIGFcbiAgICAgICAgICAgICAgLy8gUHJvbWlzZSB3cmFwcGVyIGZvciBpdC5cbiAgICAgICAgICAgICAgbGV0IHdyYXBwZXIgPSB3cmFwQXN5bmNGdW5jdGlvbihwcm9wLCBtZXRhZGF0YVtwcm9wXSk7XG4gICAgICAgICAgICAgIHZhbHVlID0gd3JhcE1ldGhvZCh0YXJnZXQsIHRhcmdldFtwcm9wXSwgd3JhcHBlcik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyBUaGlzIGlzIGEgbWV0aG9kIHRoYXQgd2UgZG9uJ3Qga25vdyBvciBjYXJlIGFib3V0LiBSZXR1cm4gdGhlXG4gICAgICAgICAgICAgIC8vIG9yaWdpbmFsIG1ldGhvZCwgYm91bmQgdG8gdGhlIHVuZGVybHlpbmcgb2JqZWN0LlxuICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLmJpbmQodGFyZ2V0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJiB2YWx1ZSAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgICAgICAgICAgKGhhc093blByb3BlcnR5KHdyYXBwZXJzLCBwcm9wKSB8fFxuICAgICAgICAgICAgICAgICAgICAgIGhhc093blByb3BlcnR5KG1ldGFkYXRhLCBwcm9wKSkpIHtcbiAgICAgICAgICAgIC8vIFRoaXMgaXMgYW4gb2JqZWN0IHRoYXQgd2UgbmVlZCB0byBkbyBzb21lIHdyYXBwaW5nIGZvciB0aGUgY2hpbGRyZW5cbiAgICAgICAgICAgIC8vIG9mLiBDcmVhdGUgYSBzdWItb2JqZWN0IHdyYXBwZXIgZm9yIGl0IHdpdGggdGhlIGFwcHJvcHJpYXRlIGNoaWxkXG4gICAgICAgICAgICAvLyBtZXRhZGF0YS5cbiAgICAgICAgICAgIHZhbHVlID0gd3JhcE9iamVjdCh2YWx1ZSwgd3JhcHBlcnNbcHJvcF0sIG1ldGFkYXRhW3Byb3BdKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGhhc093blByb3BlcnR5KG1ldGFkYXRhLCBcIipcIikpIHtcbiAgICAgICAgICAgIC8vIFdyYXAgYWxsIHByb3BlcnRpZXMgaW4gKiBuYW1lc3BhY2UuXG4gICAgICAgICAgICB2YWx1ZSA9IHdyYXBPYmplY3QodmFsdWUsIHdyYXBwZXJzW3Byb3BdLCBtZXRhZGF0YVtcIipcIl0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGRvIGFueSB3cmFwcGluZyBmb3IgdGhpcyBwcm9wZXJ0eSxcbiAgICAgICAgICAgIC8vIHNvIGp1c3QgZm9yd2FyZCBhbGwgYWNjZXNzIHRvIHRoZSB1bmRlcmx5aW5nIG9iamVjdC5cbiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjYWNoZSwgcHJvcCwge1xuICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgICAgICAgIGdldCgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0W3Byb3BdO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBzZXQodmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0YXJnZXRbcHJvcF0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2FjaGVbcHJvcF0gPSB2YWx1ZTtcbiAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH0sXG5cbiAgICAgICAgc2V0KHByb3h5VGFyZ2V0LCBwcm9wLCB2YWx1ZSwgcmVjZWl2ZXIpIHtcbiAgICAgICAgICBpZiAocHJvcCBpbiBjYWNoZSkge1xuICAgICAgICAgICAgY2FjaGVbcHJvcF0gPSB2YWx1ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGFyZ2V0W3Byb3BdID0gdmFsdWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9LFxuXG4gICAgICAgIGRlZmluZVByb3BlcnR5KHByb3h5VGFyZ2V0LCBwcm9wLCBkZXNjKSB7XG4gICAgICAgICAgcmV0dXJuIFJlZmxlY3QuZGVmaW5lUHJvcGVydHkoY2FjaGUsIHByb3AsIGRlc2MpO1xuICAgICAgICB9LFxuXG4gICAgICAgIGRlbGV0ZVByb3BlcnR5KHByb3h5VGFyZ2V0LCBwcm9wKSB7XG4gICAgICAgICAgcmV0dXJuIFJlZmxlY3QuZGVsZXRlUHJvcGVydHkoY2FjaGUsIHByb3ApO1xuICAgICAgICB9LFxuICAgICAgfTtcblxuICAgICAgLy8gUGVyIGNvbnRyYWN0IG9mIHRoZSBQcm94eSBBUEksIHRoZSBcImdldFwiIHByb3h5IGhhbmRsZXIgbXVzdCByZXR1cm4gdGhlXG4gICAgICAvLyBvcmlnaW5hbCB2YWx1ZSBvZiB0aGUgdGFyZ2V0IGlmIHRoYXQgdmFsdWUgaXMgZGVjbGFyZWQgcmVhZC1vbmx5IGFuZFxuICAgICAgLy8gbm9uLWNvbmZpZ3VyYWJsZS4gRm9yIHRoaXMgcmVhc29uLCB3ZSBjcmVhdGUgYW4gb2JqZWN0IHdpdGggdGhlXG4gICAgICAvLyBwcm90b3R5cGUgc2V0IHRvIGB0YXJnZXRgIGluc3RlYWQgb2YgdXNpbmcgYHRhcmdldGAgZGlyZWN0bHkuXG4gICAgICAvLyBPdGhlcndpc2Ugd2UgY2Fubm90IHJldHVybiBhIGN1c3RvbSBvYmplY3QgZm9yIEFQSXMgdGhhdFxuICAgICAgLy8gYXJlIGRlY2xhcmVkIHJlYWQtb25seSBhbmQgbm9uLWNvbmZpZ3VyYWJsZSwgc3VjaCBhcyBgY2hyb21lLmRldnRvb2xzYC5cbiAgICAgIC8vXG4gICAgICAvLyBUaGUgcHJveHkgaGFuZGxlcnMgdGhlbXNlbHZlcyB3aWxsIHN0aWxsIHVzZSB0aGUgb3JpZ2luYWwgYHRhcmdldGBcbiAgICAgIC8vIGluc3RlYWQgb2YgdGhlIGBwcm94eVRhcmdldGAsIHNvIHRoYXQgdGhlIG1ldGhvZHMgYW5kIHByb3BlcnRpZXMgYXJlXG4gICAgICAvLyBkZXJlZmVyZW5jZWQgdmlhIHRoZSBvcmlnaW5hbCB0YXJnZXRzLlxuICAgICAgbGV0IHByb3h5VGFyZ2V0ID0gT2JqZWN0LmNyZWF0ZSh0YXJnZXQpO1xuICAgICAgcmV0dXJuIG5ldyBQcm94eShwcm94eVRhcmdldCwgaGFuZGxlcnMpO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgc2V0IG9mIHdyYXBwZXIgZnVuY3Rpb25zIGZvciBhbiBldmVudCBvYmplY3QsIHdoaWNoIGhhbmRsZXNcbiAgICAgKiB3cmFwcGluZyBvZiBsaXN0ZW5lciBmdW5jdGlvbnMgdGhhdCB0aG9zZSBtZXNzYWdlcyBhcmUgcGFzc2VkLlxuICAgICAqXG4gICAgICogQSBzaW5nbGUgd3JhcHBlciBpcyBjcmVhdGVkIGZvciBlYWNoIGxpc3RlbmVyIGZ1bmN0aW9uLCBhbmQgc3RvcmVkIGluIGFcbiAgICAgKiBtYXAuIFN1YnNlcXVlbnQgY2FsbHMgdG8gYGFkZExpc3RlbmVyYCwgYGhhc0xpc3RlbmVyYCwgb3IgYHJlbW92ZUxpc3RlbmVyYFxuICAgICAqIHJldHJpZXZlIHRoZSBvcmlnaW5hbCB3cmFwcGVyLCBzbyB0aGF0ICBhdHRlbXB0cyB0byByZW1vdmUgYVxuICAgICAqIHByZXZpb3VzbHktYWRkZWQgbGlzdGVuZXIgd29yayBhcyBleHBlY3RlZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7RGVmYXVsdFdlYWtNYXA8ZnVuY3Rpb24sIGZ1bmN0aW9uPn0gd3JhcHBlck1hcFxuICAgICAqICAgICAgICBBIERlZmF1bHRXZWFrTWFwIG9iamVjdCB3aGljaCB3aWxsIGNyZWF0ZSB0aGUgYXBwcm9wcmlhdGUgd3JhcHBlclxuICAgICAqICAgICAgICBmb3IgYSBnaXZlbiBsaXN0ZW5lciBmdW5jdGlvbiB3aGVuIG9uZSBkb2VzIG5vdCBleGlzdCwgYW5kIHJldHJpZXZlXG4gICAgICogICAgICAgIGFuIGV4aXN0aW5nIG9uZSB3aGVuIGl0IGRvZXMuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB7b2JqZWN0fVxuICAgICAqL1xuICAgIGNvbnN0IHdyYXBFdmVudCA9IHdyYXBwZXJNYXAgPT4gKHtcbiAgICAgIGFkZExpc3RlbmVyKHRhcmdldCwgbGlzdGVuZXIsIC4uLmFyZ3MpIHtcbiAgICAgICAgdGFyZ2V0LmFkZExpc3RlbmVyKHdyYXBwZXJNYXAuZ2V0KGxpc3RlbmVyKSwgLi4uYXJncyk7XG4gICAgICB9LFxuXG4gICAgICBoYXNMaXN0ZW5lcih0YXJnZXQsIGxpc3RlbmVyKSB7XG4gICAgICAgIHJldHVybiB0YXJnZXQuaGFzTGlzdGVuZXIod3JhcHBlck1hcC5nZXQobGlzdGVuZXIpKTtcbiAgICAgIH0sXG5cbiAgICAgIHJlbW92ZUxpc3RlbmVyKHRhcmdldCwgbGlzdGVuZXIpIHtcbiAgICAgICAgdGFyZ2V0LnJlbW92ZUxpc3RlbmVyKHdyYXBwZXJNYXAuZ2V0KGxpc3RlbmVyKSk7XG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgY29uc3Qgb25SZXF1ZXN0RmluaXNoZWRXcmFwcGVycyA9IG5ldyBEZWZhdWx0V2Vha01hcChsaXN0ZW5lciA9PiB7XG4gICAgICBpZiAodHlwZW9mIGxpc3RlbmVyICE9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgcmV0dXJuIGxpc3RlbmVyO1xuICAgICAgfVxuXG4gICAgICAvKipcbiAgICAgICAqIFdyYXBzIGFuIG9uUmVxdWVzdEZpbmlzaGVkIGxpc3RlbmVyIGZ1bmN0aW9uIHNvIHRoYXQgaXQgd2lsbCByZXR1cm4gYVxuICAgICAgICogYGdldENvbnRlbnQoKWAgcHJvcGVydHkgd2hpY2ggcmV0dXJucyBhIGBQcm9taXNlYCByYXRoZXIgdGhhbiB1c2luZyBhXG4gICAgICAgKiBjYWxsYmFjayBBUEkuXG4gICAgICAgKlxuICAgICAgICogQHBhcmFtIHtvYmplY3R9IHJlcVxuICAgICAgICogICAgICAgIFRoZSBIQVIgZW50cnkgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgbmV0d29yayByZXF1ZXN0LlxuICAgICAgICovXG4gICAgICByZXR1cm4gZnVuY3Rpb24gb25SZXF1ZXN0RmluaXNoZWQocmVxKSB7XG4gICAgICAgIGNvbnN0IHdyYXBwZWRSZXEgPSB3cmFwT2JqZWN0KHJlcSwge30gLyogd3JhcHBlcnMgKi8sIHtcbiAgICAgICAgICBnZXRDb250ZW50OiB7XG4gICAgICAgICAgICBtaW5BcmdzOiAwLFxuICAgICAgICAgICAgbWF4QXJnczogMCxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgICAgbGlzdGVuZXIod3JhcHBlZFJlcSk7XG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgY29uc3Qgb25NZXNzYWdlV3JhcHBlcnMgPSBuZXcgRGVmYXVsdFdlYWtNYXAobGlzdGVuZXIgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBsaXN0ZW5lciAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHJldHVybiBsaXN0ZW5lcjtcbiAgICAgIH1cblxuICAgICAgLyoqXG4gICAgICAgKiBXcmFwcyBhIG1lc3NhZ2UgbGlzdGVuZXIgZnVuY3Rpb24gc28gdGhhdCBpdCBtYXkgc2VuZCByZXNwb25zZXMgYmFzZWQgb25cbiAgICAgICAqIGl0cyByZXR1cm4gdmFsdWUsIHJhdGhlciB0aGFuIGJ5IHJldHVybmluZyBhIHNlbnRpbmVsIHZhbHVlIGFuZCBjYWxsaW5nIGFcbiAgICAgICAqIGNhbGxiYWNrLiBJZiB0aGUgbGlzdGVuZXIgZnVuY3Rpb24gcmV0dXJucyBhIFByb21pc2UsIHRoZSByZXNwb25zZSBpc1xuICAgICAgICogc2VudCB3aGVuIHRoZSBwcm9taXNlIGVpdGhlciByZXNvbHZlcyBvciByZWplY3RzLlxuICAgICAgICpcbiAgICAgICAqIEBwYXJhbSB7Kn0gbWVzc2FnZVxuICAgICAgICogICAgICAgIFRoZSBtZXNzYWdlIHNlbnQgYnkgdGhlIG90aGVyIGVuZCBvZiB0aGUgY2hhbm5lbC5cbiAgICAgICAqIEBwYXJhbSB7b2JqZWN0fSBzZW5kZXJcbiAgICAgICAqICAgICAgICBEZXRhaWxzIGFib3V0IHRoZSBzZW5kZXIgb2YgdGhlIG1lc3NhZ2UuXG4gICAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKCopfSBzZW5kUmVzcG9uc2VcbiAgICAgICAqICAgICAgICBBIGNhbGxiYWNrIHdoaWNoLCB3aGVuIGNhbGxlZCB3aXRoIGFuIGFyYml0cmFyeSBhcmd1bWVudCwgc2VuZHNcbiAgICAgICAqICAgICAgICB0aGF0IHZhbHVlIGFzIGEgcmVzcG9uc2UuXG4gICAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICAgICAqICAgICAgICBUcnVlIGlmIHRoZSB3cmFwcGVkIGxpc3RlbmVyIHJldHVybmVkIGEgUHJvbWlzZSwgd2hpY2ggd2lsbCBsYXRlclxuICAgICAgICogICAgICAgIHlpZWxkIGEgcmVzcG9uc2UuIEZhbHNlIG90aGVyd2lzZS5cbiAgICAgICAqL1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uIG9uTWVzc2FnZShtZXNzYWdlLCBzZW5kZXIsIHNlbmRSZXNwb25zZSkge1xuICAgICAgICBsZXQgZGlkQ2FsbFNlbmRSZXNwb25zZSA9IGZhbHNlO1xuXG4gICAgICAgIGxldCB3cmFwcGVkU2VuZFJlc3BvbnNlO1xuICAgICAgICBsZXQgc2VuZFJlc3BvbnNlUHJvbWlzZSA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgICAgIHdyYXBwZWRTZW5kUmVzcG9uc2UgPSBmdW5jdGlvbihyZXNwb25zZSkge1xuICAgICAgICAgICAgZGlkQ2FsbFNlbmRSZXNwb25zZSA9IHRydWU7XG4gICAgICAgICAgICByZXNvbHZlKHJlc3BvbnNlKTtcbiAgICAgICAgICB9O1xuICAgICAgICB9KTtcblxuICAgICAgICBsZXQgcmVzdWx0O1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJlc3VsdCA9IGxpc3RlbmVyKG1lc3NhZ2UsIHNlbmRlciwgd3JhcHBlZFNlbmRSZXNwb25zZSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIHJlc3VsdCA9IFByb21pc2UucmVqZWN0KGVycik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpc1Jlc3VsdFRoZW5hYmxlID0gcmVzdWx0ICE9PSB0cnVlICYmIGlzVGhlbmFibGUocmVzdWx0KTtcblxuICAgICAgICAvLyBJZiB0aGUgbGlzdGVuZXIgZGlkbid0IHJldHVybmVkIHRydWUgb3IgYSBQcm9taXNlLCBvciBjYWxsZWRcbiAgICAgICAgLy8gd3JhcHBlZFNlbmRSZXNwb25zZSBzeW5jaHJvbm91c2x5LCB3ZSBjYW4gZXhpdCBlYXJsaWVyXG4gICAgICAgIC8vIGJlY2F1c2UgdGhlcmUgd2lsbCBiZSBubyByZXNwb25zZSBzZW50IGZyb20gdGhpcyBsaXN0ZW5lci5cbiAgICAgICAgaWYgKHJlc3VsdCAhPT0gdHJ1ZSAmJiAhaXNSZXN1bHRUaGVuYWJsZSAmJiAhZGlkQ2FsbFNlbmRSZXNwb25zZSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEEgc21hbGwgaGVscGVyIHRvIHNlbmQgdGhlIG1lc3NhZ2UgaWYgdGhlIHByb21pc2UgcmVzb2x2ZXNcbiAgICAgICAgLy8gYW5kIGFuIGVycm9yIGlmIHRoZSBwcm9taXNlIHJlamVjdHMgKGEgd3JhcHBlZCBzZW5kTWVzc2FnZSBoYXNcbiAgICAgICAgLy8gdG8gdHJhbnNsYXRlIHRoZSBtZXNzYWdlIGludG8gYSByZXNvbHZlZCBwcm9taXNlIG9yIGEgcmVqZWN0ZWRcbiAgICAgICAgLy8gcHJvbWlzZSkuXG4gICAgICAgIGNvbnN0IHNlbmRQcm9taXNlZFJlc3VsdCA9IChwcm9taXNlKSA9PiB7XG4gICAgICAgICAgcHJvbWlzZS50aGVuKG1zZyA9PiB7XG4gICAgICAgICAgICAvLyBzZW5kIHRoZSBtZXNzYWdlIHZhbHVlLlxuICAgICAgICAgICAgc2VuZFJlc3BvbnNlKG1zZyk7XG4gICAgICAgICAgfSwgZXJyb3IgPT4ge1xuICAgICAgICAgICAgLy8gU2VuZCBhIEpTT04gcmVwcmVzZW50YXRpb24gb2YgdGhlIGVycm9yIGlmIHRoZSByZWplY3RlZCB2YWx1ZVxuICAgICAgICAgICAgLy8gaXMgYW4gaW5zdGFuY2Ugb2YgZXJyb3IsIG9yIHRoZSBvYmplY3QgaXRzZWxmIG90aGVyd2lzZS5cbiAgICAgICAgICAgIGxldCBtZXNzYWdlO1xuICAgICAgICAgICAgaWYgKGVycm9yICYmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yIHx8XG4gICAgICAgICAgICAgICAgdHlwZW9mIGVycm9yLm1lc3NhZ2UgPT09IFwic3RyaW5nXCIpKSB7XG4gICAgICAgICAgICAgIG1lc3NhZ2UgPSBlcnJvci5tZXNzYWdlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgbWVzc2FnZSA9IFwiQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cnJlZFwiO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzZW5kUmVzcG9uc2Uoe1xuICAgICAgICAgICAgICBfX21veldlYkV4dGVuc2lvblBvbHlmaWxsUmVqZWN0X186IHRydWUsXG4gICAgICAgICAgICAgIG1lc3NhZ2UsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KS5jYXRjaChlcnIgPT4ge1xuICAgICAgICAgICAgLy8gUHJpbnQgYW4gZXJyb3Igb24gdGhlIGNvbnNvbGUgaWYgdW5hYmxlIHRvIHNlbmQgdGhlIHJlc3BvbnNlLlxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkZhaWxlZCB0byBzZW5kIG9uTWVzc2FnZSByZWplY3RlZCByZXBseVwiLCBlcnIpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuXG4gICAgICAgIC8vIElmIHRoZSBsaXN0ZW5lciByZXR1cm5lZCBhIFByb21pc2UsIHNlbmQgdGhlIHJlc29sdmVkIHZhbHVlIGFzIGFcbiAgICAgICAgLy8gcmVzdWx0LCBvdGhlcndpc2Ugd2FpdCB0aGUgcHJvbWlzZSByZWxhdGVkIHRvIHRoZSB3cmFwcGVkU2VuZFJlc3BvbnNlXG4gICAgICAgIC8vIGNhbGxiYWNrIHRvIHJlc29sdmUgYW5kIHNlbmQgaXQgYXMgYSByZXNwb25zZS5cbiAgICAgICAgaWYgKGlzUmVzdWx0VGhlbmFibGUpIHtcbiAgICAgICAgICBzZW5kUHJvbWlzZWRSZXN1bHQocmVzdWx0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZW5kUHJvbWlzZWRSZXN1bHQoc2VuZFJlc3BvbnNlUHJvbWlzZSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBMZXQgQ2hyb21lIGtub3cgdGhhdCB0aGUgbGlzdGVuZXIgaXMgcmVwbHlpbmcuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfTtcbiAgICB9KTtcblxuICAgIGNvbnN0IHdyYXBwZWRTZW5kTWVzc2FnZUNhbGxiYWNrID0gKHtyZWplY3QsIHJlc29sdmV9LCByZXBseSkgPT4ge1xuICAgICAgaWYgKGV4dGVuc2lvbkFQSXMucnVudGltZS5sYXN0RXJyb3IpIHtcbiAgICAgICAgLy8gRGV0ZWN0IHdoZW4gbm9uZSBvZiB0aGUgbGlzdGVuZXJzIHJlcGxpZWQgdG8gdGhlIHNlbmRNZXNzYWdlIGNhbGwgYW5kIHJlc29sdmVcbiAgICAgICAgLy8gdGhlIHByb21pc2UgdG8gdW5kZWZpbmVkIGFzIGluIEZpcmVmb3guXG4gICAgICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS93ZWJleHRlbnNpb24tcG9seWZpbGwvaXNzdWVzLzEzMFxuICAgICAgICBpZiAoZXh0ZW5zaW9uQVBJcy5ydW50aW1lLmxhc3RFcnJvci5tZXNzYWdlID09PSBDSFJPTUVfU0VORF9NRVNTQUdFX0NBTExCQUNLX05PX1JFU1BPTlNFX01FU1NBR0UpIHtcbiAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihleHRlbnNpb25BUElzLnJ1bnRpbWUubGFzdEVycm9yLm1lc3NhZ2UpKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChyZXBseSAmJiByZXBseS5fX21veldlYkV4dGVuc2lvblBvbHlmaWxsUmVqZWN0X18pIHtcbiAgICAgICAgLy8gQ29udmVydCBiYWNrIHRoZSBKU09OIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBlcnJvciBpbnRvXG4gICAgICAgIC8vIGFuIEVycm9yIGluc3RhbmNlLlxuICAgICAgICByZWplY3QobmV3IEVycm9yKHJlcGx5Lm1lc3NhZ2UpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc29sdmUocmVwbHkpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCB3cmFwcGVkU2VuZE1lc3NhZ2UgPSAobmFtZSwgbWV0YWRhdGEsIGFwaU5hbWVzcGFjZU9iaiwgLi4uYXJncykgPT4ge1xuICAgICAgaWYgKGFyZ3MubGVuZ3RoIDwgbWV0YWRhdGEubWluQXJncykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIGF0IGxlYXN0ICR7bWV0YWRhdGEubWluQXJnc30gJHtwbHVyYWxpemVBcmd1bWVudHMobWV0YWRhdGEubWluQXJncyl9IGZvciAke25hbWV9KCksIGdvdCAke2FyZ3MubGVuZ3RofWApO1xuICAgICAgfVxuXG4gICAgICBpZiAoYXJncy5sZW5ndGggPiBtZXRhZGF0YS5tYXhBcmdzKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgYXQgbW9zdCAke21ldGFkYXRhLm1heEFyZ3N9ICR7cGx1cmFsaXplQXJndW1lbnRzKG1ldGFkYXRhLm1heEFyZ3MpfSBmb3IgJHtuYW1lfSgpLCBnb3QgJHthcmdzLmxlbmd0aH1gKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgY29uc3Qgd3JhcHBlZENiID0gd3JhcHBlZFNlbmRNZXNzYWdlQ2FsbGJhY2suYmluZChudWxsLCB7cmVzb2x2ZSwgcmVqZWN0fSk7XG4gICAgICAgIGFyZ3MucHVzaCh3cmFwcGVkQ2IpO1xuICAgICAgICBhcGlOYW1lc3BhY2VPYmouc2VuZE1lc3NhZ2UoLi4uYXJncyk7XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgY29uc3Qgc3RhdGljV3JhcHBlcnMgPSB7XG4gICAgICBkZXZ0b29sczoge1xuICAgICAgICBuZXR3b3JrOiB7XG4gICAgICAgICAgb25SZXF1ZXN0RmluaXNoZWQ6IHdyYXBFdmVudChvblJlcXVlc3RGaW5pc2hlZFdyYXBwZXJzKSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBydW50aW1lOiB7XG4gICAgICAgIG9uTWVzc2FnZTogd3JhcEV2ZW50KG9uTWVzc2FnZVdyYXBwZXJzKSxcbiAgICAgICAgb25NZXNzYWdlRXh0ZXJuYWw6IHdyYXBFdmVudChvbk1lc3NhZ2VXcmFwcGVycyksXG4gICAgICAgIHNlbmRNZXNzYWdlOiB3cmFwcGVkU2VuZE1lc3NhZ2UuYmluZChudWxsLCBcInNlbmRNZXNzYWdlXCIsIHttaW5BcmdzOiAxLCBtYXhBcmdzOiAzfSksXG4gICAgICB9LFxuICAgICAgdGFiczoge1xuICAgICAgICBzZW5kTWVzc2FnZTogd3JhcHBlZFNlbmRNZXNzYWdlLmJpbmQobnVsbCwgXCJzZW5kTWVzc2FnZVwiLCB7bWluQXJnczogMiwgbWF4QXJnczogM30pLFxuICAgICAgfSxcbiAgICB9O1xuICAgIGNvbnN0IHNldHRpbmdNZXRhZGF0YSA9IHtcbiAgICAgIGNsZWFyOiB7bWluQXJnczogMSwgbWF4QXJnczogMX0sXG4gICAgICBnZXQ6IHttaW5BcmdzOiAxLCBtYXhBcmdzOiAxfSxcbiAgICAgIHNldDoge21pbkFyZ3M6IDEsIG1heEFyZ3M6IDF9LFxuICAgIH07XG4gICAgYXBpTWV0YWRhdGEucHJpdmFjeSA9IHtcbiAgICAgIG5ldHdvcms6IHtcIipcIjogc2V0dGluZ01ldGFkYXRhfSxcbiAgICAgIHNlcnZpY2VzOiB7XCIqXCI6IHNldHRpbmdNZXRhZGF0YX0sXG4gICAgICB3ZWJzaXRlczoge1wiKlwiOiBzZXR0aW5nTWV0YWRhdGF9LFxuICAgIH07XG5cbiAgICByZXR1cm4gd3JhcE9iamVjdChleHRlbnNpb25BUElzLCBzdGF0aWNXcmFwcGVycywgYXBpTWV0YWRhdGEpO1xuICB9O1xuXG4gIC8vIFRoZSBidWlsZCBwcm9jZXNzIGFkZHMgYSBVTUQgd3JhcHBlciBhcm91bmQgdGhpcyBmaWxlLCB3aGljaCBtYWtlcyB0aGVcbiAgLy8gYG1vZHVsZWAgdmFyaWFibGUgYXZhaWxhYmxlLlxuICBtb2R1bGUuZXhwb3J0cyA9IHdyYXBBUElzKGNocm9tZSk7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IGdsb2JhbFRoaXMuYnJvd3Nlcjtcbn1cbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9oZWxwZXJzL2J1bmRsZS11cmwnKS5nZXRCdW5kbGVVUkwoJzVaMjdtJykgKyBcImdwdGgtdG9nZ2xlLWNpcmNsZWQuZDk3YzNlNzUud2VicFwiICsgXCI/XCIgKyBEYXRlLm5vdygpOyIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgYnVuZGxlVVJMID0ge307XG5mdW5jdGlvbiBnZXRCdW5kbGVVUkxDYWNoZWQoaWQpIHtcbiAgdmFyIHZhbHVlID0gYnVuZGxlVVJMW2lkXTtcbiAgaWYgKCF2YWx1ZSkge1xuICAgIHZhbHVlID0gZ2V0QnVuZGxlVVJMKCk7XG4gICAgYnVuZGxlVVJMW2lkXSA9IHZhbHVlO1xuICB9XG4gIHJldHVybiB2YWx1ZTtcbn1cbmZ1bmN0aW9uIGdldEJ1bmRsZVVSTCgpIHtcbiAgdHJ5IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdmFyIG1hdGNoZXMgPSAoJycgKyBlcnIuc3RhY2spLm1hdGNoKC8oaHR0cHM/fGZpbGV8ZnRwfChjaHJvbWV8bW96fHNhZmFyaS13ZWIpLWV4dGVuc2lvbik6XFwvXFwvW14pXFxuXSsvZyk7XG4gICAgaWYgKG1hdGNoZXMpIHtcbiAgICAgIC8vIFRoZSBmaXJzdCB0d28gc3RhY2sgZnJhbWVzIHdpbGwgYmUgdGhpcyBmdW5jdGlvbiBhbmQgZ2V0QnVuZGxlVVJMQ2FjaGVkLlxuICAgICAgLy8gVXNlIHRoZSAzcmQgb25lLCB3aGljaCB3aWxsIGJlIGEgcnVudGltZSBpbiB0aGUgb3JpZ2luYWwgYnVuZGxlLlxuICAgICAgcmV0dXJuIGdldEJhc2VVUkwobWF0Y2hlc1syXSk7XG4gICAgfVxuICB9XG4gIHJldHVybiAnLyc7XG59XG5mdW5jdGlvbiBnZXRCYXNlVVJMKHVybCkge1xuICByZXR1cm4gKCcnICsgdXJsKS5yZXBsYWNlKC9eKCg/Omh0dHBzP3xmaWxlfGZ0cHwoY2hyb21lfG1venxzYWZhcmktd2ViKS1leHRlbnNpb24pOlxcL1xcLy4rKVxcL1teL10rJC8sICckMScpICsgJy8nO1xufVxuXG4vLyBUT0RPOiBSZXBsYWNlIHVzZXMgd2l0aCBgbmV3IFVSTCh1cmwpLm9yaWdpbmAgd2hlbiBpZTExIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQuXG5mdW5jdGlvbiBnZXRPcmlnaW4odXJsKSB7XG4gIHZhciBtYXRjaGVzID0gKCcnICsgdXJsKS5tYXRjaCgvKGh0dHBzP3xmaWxlfGZ0cHwoY2hyb21lfG1venxzYWZhcmktd2ViKS1leHRlbnNpb24pOlxcL1xcL1teL10rLyk7XG4gIGlmICghbWF0Y2hlcykge1xuICAgIHRocm93IG5ldyBFcnJvcignT3JpZ2luIG5vdCBmb3VuZCcpO1xuICB9XG4gIHJldHVybiBtYXRjaGVzWzBdO1xufVxuZXhwb3J0cy5nZXRCdW5kbGVVUkwgPSBnZXRCdW5kbGVVUkxDYWNoZWQ7XG5leHBvcnRzLmdldEJhc2VVUkwgPSBnZXRCYXNlVVJMO1xuZXhwb3J0cy5nZXRPcmlnaW4gPSBnZXRPcmlnaW47IiwiZXhwb3J0cy5pbnRlcm9wRGVmYXVsdCA9IGZ1bmN0aW9uIChhKSB7XG4gIHJldHVybiBhICYmIGEuX19lc01vZHVsZSA/IGEgOiB7ZGVmYXVsdDogYX07XG59O1xuXG5leHBvcnRzLmRlZmluZUludGVyb3BGbGFnID0gZnVuY3Rpb24gKGEpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsICdfX2VzTW9kdWxlJywge3ZhbHVlOiB0cnVlfSk7XG59O1xuXG5leHBvcnRzLmV4cG9ydEFsbCA9IGZ1bmN0aW9uIChzb3VyY2UsIGRlc3QpIHtcbiAgT2JqZWN0LmtleXMoc291cmNlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICBpZiAoXG4gICAgICBrZXkgPT09ICdkZWZhdWx0JyB8fFxuICAgICAga2V5ID09PSAnX19lc01vZHVsZScgfHxcbiAgICAgIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkZXN0LCBrZXkpXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRlc3QsIGtleSwge1xuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gc291cmNlW2tleV07XG4gICAgICB9LFxuICAgIH0pO1xuICB9KTtcblxuICByZXR1cm4gZGVzdDtcbn07XG5cbmV4cG9ydHMuZXhwb3J0ID0gZnVuY3Rpb24gKGRlc3QsIGRlc3ROYW1lLCBnZXQpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRlc3QsIGRlc3ROYW1lLCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGdldCxcbiAgfSk7XG59O1xuIl0sIm5hbWVzIjpbImdsb2JhbFRoaXMiLCJjaHJvbWUiLCJydW50aW1lIiwiaWQiLCJFcnJvciIsImJyb3dzZXIiLCJPYmplY3QiLCJnZXRQcm90b3R5cGVPZiIsInByb3RvdHlwZSIsIkNIUk9NRV9TRU5EX01FU1NBR0VfQ0FMTEJBQ0tfTk9fUkVTUE9OU0VfTUVTU0FHRSIsIndyYXBBUElzIiwiZXh0ZW5zaW9uQVBJcyIsImFwaU1ldGFkYXRhIiwia2V5cyIsImxlbmd0aCIsIkRlZmF1bHRXZWFrTWFwIiwiV2Vha01hcCIsImNvbnN0cnVjdG9yIiwiY3JlYXRlSXRlbSIsIml0ZW1zIiwidW5kZWZpbmVkIiwiZ2V0Iiwia2V5IiwiaGFzIiwic2V0IiwiaXNUaGVuYWJsZSIsInZhbHVlIiwidGhlbiIsIm1ha2VDYWxsYmFjayIsInByb21pc2UiLCJtZXRhZGF0YSIsImNhbGxiYWNrQXJncyIsImxhc3RFcnJvciIsInJlamVjdCIsIm1lc3NhZ2UiLCJzaW5nbGVDYWxsYmFja0FyZyIsInJlc29sdmUiLCJwbHVyYWxpemVBcmd1bWVudHMiLCJudW1BcmdzIiwid3JhcEFzeW5jRnVuY3Rpb24iLCJuYW1lIiwiYXN5bmNGdW5jdGlvbldyYXBwZXIiLCJ0YXJnZXQiLCJhcmdzIiwibWluQXJncyIsIm1heEFyZ3MiLCJQcm9taXNlIiwiZmFsbGJhY2tUb05vQ2FsbGJhY2siLCJjYkVycm9yIiwiY29uc29sZSIsIndhcm4iLCJub0NhbGxiYWNrIiwid3JhcE1ldGhvZCIsIm1ldGhvZCIsIndyYXBwZXIiLCJQcm94eSIsImFwcGx5IiwidGFyZ2V0TWV0aG9kIiwidGhpc09iaiIsImNhbGwiLCJoYXNPd25Qcm9wZXJ0eSIsIkZ1bmN0aW9uIiwiYmluZCIsIndyYXBPYmplY3QiLCJ3cmFwcGVycyIsImNhY2hlIiwiY3JlYXRlIiwiaGFuZGxlcnMiLCJwcm94eVRhcmdldCIsInByb3AiLCJyZWNlaXZlciIsImRlZmluZVByb3BlcnR5IiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsImRlc2MiLCJSZWZsZWN0IiwiZGVsZXRlUHJvcGVydHkiLCJ3cmFwRXZlbnQiLCJ3cmFwcGVyTWFwIiwiYWRkTGlzdGVuZXIiLCJsaXN0ZW5lciIsImhhc0xpc3RlbmVyIiwicmVtb3ZlTGlzdGVuZXIiLCJvblJlcXVlc3RGaW5pc2hlZFdyYXBwZXJzIiwib25SZXF1ZXN0RmluaXNoZWQiLCJyZXEiLCJ3cmFwcGVkUmVxIiwiZ2V0Q29udGVudCIsIm9uTWVzc2FnZVdyYXBwZXJzIiwib25NZXNzYWdlIiwic2VuZGVyIiwic2VuZFJlc3BvbnNlIiwiZGlkQ2FsbFNlbmRSZXNwb25zZSIsIndyYXBwZWRTZW5kUmVzcG9uc2UiLCJzZW5kUmVzcG9uc2VQcm9taXNlIiwicmVzcG9uc2UiLCJyZXN1bHQiLCJlcnIiLCJpc1Jlc3VsdFRoZW5hYmxlIiwic2VuZFByb21pc2VkUmVzdWx0IiwibXNnIiwiZXJyb3IiLCJfX21veldlYkV4dGVuc2lvblBvbHlmaWxsUmVqZWN0X18iLCJjYXRjaCIsIndyYXBwZWRTZW5kTWVzc2FnZUNhbGxiYWNrIiwicmVwbHkiLCJ3cmFwcGVkU2VuZE1lc3NhZ2UiLCJhcGlOYW1lc3BhY2VPYmoiLCJ3cmFwcGVkQ2IiLCJwdXNoIiwic2VuZE1lc3NhZ2UiLCJzdGF0aWNXcmFwcGVycyIsImRldnRvb2xzIiwibmV0d29yayIsIm9uTWVzc2FnZUV4dGVybmFsIiwidGFicyIsInNldHRpbmdNZXRhZGF0YSIsImNsZWFyIiwicHJpdmFjeSIsInNlcnZpY2VzIiwid2Vic2l0ZXMiLCJtb2R1bGUiLCJleHBvcnRzIl0sInZlcnNpb24iOjMsImZpbGUiOiJjb250ZW50LjRhMTg3MjZhLmpzLm1hcCJ9 +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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R0FBRyxTQUFVLENBQUM7SUFDbEMsT0FBTyxLQUFLLEVBQUUsVUFBVSxHQUFHLElBQUk7UUFBQyxTQUFTO0lBQUM7QUFDNUM7QUFFQSxRQUFRLGlCQUFpQixHQUFHLFNBQVUsQ0FBQztJQUNyQyxPQUFPLGNBQWMsQ0FBQyxHQUFHLGNBQWM7UUFBQyxPQUFPO0lBQUk7QUFDckQ7QUFFQSxRQUFRLFNBQVMsR0FBRyxTQUFVLE1BQU0sRUFBRSxJQUFJO0lBQ3hDLE9BQU8sSUFBSSxDQUFDLFFBQVEsT0FBTyxDQUFDLFNBQVUsR0FBRztRQUN2QyxJQUNFLFFBQVEsYUFDUixRQUFRLGdCQUNSLE9BQU8sU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxNQUUzQztRQUdGLE9BQU8sY0FBYyxDQUFDLE1BQU0sS0FBSztZQUMvQixZQUFZO1lBQ1osS0FBSztnQkFDSCxPQUFPLE1BQU0sQ0FBQyxJQUFJO1lBQ3BCO1FBQ0Y7SUFDRjtJQUVBLE9BQU87QUFDVDtBQUVBLFFBQVEsTUFBTSxHQUFHLFNBQVUsSUFBSSxFQUFFLFFBQVEsRUFBRSxHQUFHO0lBQzVDLE9BQU8sY0FBYyxDQUFDLE1BQU0sVUFBVTtRQUNwQyxZQUFZO1FBQ1osS0FBSztJQUNQO0FBQ0YiLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9AcGFyY2VsL3J1bnRpbWUtYnJvd3Nlci1obXIvbGliL3J1bnRpbWUtMTUzYzRlMDhhNGFkNjIyMi5qcyIsInNyYy9qcy9jb250ZW50LmpzIiwibm9kZV9tb2R1bGVzL3dlYmV4dGVuc2lvbi1wb2x5ZmlsbC9kaXN0L2Jyb3dzZXItcG9seWZpbGwuanMiLCJub2RlX21vZHVsZXMvQHBhcmNlbC9ydW50aW1lLWpzL2xpYi9ydW50aW1lLThlOTlmYTBkMTdhMDA0MWUuanMiLCJub2RlX21vZHVsZXMvQHBhcmNlbC9ydW50aW1lLWpzL2xpYi9oZWxwZXJzL2J1bmRsZS11cmwuanMiLCJub2RlX21vZHVsZXMvQHBhcmNlbC90cmFuc2Zvcm1lci1qcy9zcmMvZXNtb2R1bGUtaGVscGVycy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgSE1SX0hPU1QgPSBcImxvY2FsaG9zdFwiO3ZhciBITVJfUE9SVCA9IDEyMzQ7dmFyIEhNUl9TRUNVUkUgPSBmYWxzZTt2YXIgSE1SX0VOVl9IQVNIID0gXCJkZGY2ZTA3MjRiZDM1OGJkXCI7bW9kdWxlLmJ1bmRsZS5ITVJfQlVORExFX0lEID0gXCI0NWI0NGFjZDRhMTg3MjZhXCI7XCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGdsb2JhbCBITVJfSE9TVCwgSE1SX1BPUlQsIEhNUl9FTlZfSEFTSCwgSE1SX1NFQ1VSRSwgY2hyb21lLCBicm93c2VyLCBfX3BhcmNlbF9faW1wb3J0X18sIF9fcGFyY2VsX19pbXBvcnRTY3JpcHRzX18sIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSAqL1xuLyo6OlxuaW1wb3J0IHR5cGUge1xuICBITVJBc3NldCxcbiAgSE1STWVzc2FnZSxcbn0gZnJvbSAnQHBhcmNlbC9yZXBvcnRlci1kZXYtc2VydmVyL3NyYy9ITVJTZXJ2ZXIuanMnO1xuaW50ZXJmYWNlIFBhcmNlbFJlcXVpcmUge1xuICAoc3RyaW5nKTogbWl4ZWQ7XG4gIGNhY2hlOiB7fFtzdHJpbmddOiBQYXJjZWxNb2R1bGV8fTtcbiAgaG90RGF0YToge3xbc3RyaW5nXTogbWl4ZWR8fTtcbiAgTW9kdWxlOiBhbnk7XG4gIHBhcmVudDogP1BhcmNlbFJlcXVpcmU7XG4gIGlzUGFyY2VsUmVxdWlyZTogdHJ1ZTtcbiAgbW9kdWxlczoge3xbc3RyaW5nXTogW0Z1bmN0aW9uLCB7fFtzdHJpbmddOiBzdHJpbmd8fV18fTtcbiAgSE1SX0JVTkRMRV9JRDogc3RyaW5nO1xuICByb290OiBQYXJjZWxSZXF1aXJlO1xufVxuaW50ZXJmYWNlIFBhcmNlbE1vZHVsZSB7XG4gIGhvdDoge3xcbiAgICBkYXRhOiBtaXhlZCxcbiAgICBhY2NlcHQoY2I6IChGdW5jdGlvbikgPT4gdm9pZCk6IHZvaWQsXG4gICAgZGlzcG9zZShjYjogKG1peGVkKSA9PiB2b2lkKTogdm9pZCxcbiAgICAvLyBhY2NlcHQoZGVwczogQXJyYXk8c3RyaW5nPiB8IHN0cmluZywgY2I6IChGdW5jdGlvbikgPT4gdm9pZCk6IHZvaWQsXG4gICAgLy8gZGVjbGluZSgpOiB2b2lkLFxuICAgIF9hY2NlcHRDYWxsYmFja3M6IEFycmF5PChGdW5jdGlvbikgPT4gdm9pZD4sXG4gICAgX2Rpc3Bvc2VDYWxsYmFja3M6IEFycmF5PChtaXhlZCkgPT4gdm9pZD4sXG4gIHx9O1xufVxuaW50ZXJmYWNlIEV4dGVuc2lvbkNvbnRleHQge1xuICBydW50aW1lOiB7fFxuICAgIHJlbG9hZCgpOiB2b2lkLFxuICAgIGdldFVSTCh1cmw6IHN0cmluZyk6IHN0cmluZztcbiAgICBnZXRNYW5pZmVzdCgpOiB7bWFuaWZlc3RfdmVyc2lvbjogbnVtYmVyLCAuLi59O1xuICB8fTtcbn1cbmRlY2xhcmUgdmFyIG1vZHVsZToge2J1bmRsZTogUGFyY2VsUmVxdWlyZSwgLi4ufTtcbmRlY2xhcmUgdmFyIEhNUl9IT1NUOiBzdHJpbmc7XG5kZWNsYXJlIHZhciBITVJfUE9SVDogc3RyaW5nO1xuZGVjbGFyZSB2YXIgSE1SX0VOVl9IQVNIOiBzdHJpbmc7XG5kZWNsYXJlIHZhciBITVJfU0VDVVJFOiBib29sZWFuO1xuZGVjbGFyZSB2YXIgY2hyb21lOiBFeHRlbnNpb25Db250ZXh0O1xuZGVjbGFyZSB2YXIgYnJvd3NlcjogRXh0ZW5zaW9uQ29udGV4dDtcbmRlY2xhcmUgdmFyIF9fcGFyY2VsX19pbXBvcnRfXzogKHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbmRlY2xhcmUgdmFyIF9fcGFyY2VsX19pbXBvcnRTY3JpcHRzX186IChzdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG5kZWNsYXJlIHZhciBnbG9iYWxUaGlzOiB0eXBlb2Ygc2VsZjtcbmRlY2xhcmUgdmFyIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTogT2JqZWN0O1xuKi9cbnZhciBPVkVSTEFZX0lEID0gJ19fcGFyY2VsX19lcnJvcl9fb3ZlcmxheV9fJztcbnZhciBPbGRNb2R1bGUgPSBtb2R1bGUuYnVuZGxlLk1vZHVsZTtcbmZ1bmN0aW9uIE1vZHVsZShtb2R1bGVOYW1lKSB7XG4gIE9sZE1vZHVsZS5jYWxsKHRoaXMsIG1vZHVsZU5hbWUpO1xuICB0aGlzLmhvdCA9IHtcbiAgICBkYXRhOiBtb2R1bGUuYnVuZGxlLmhvdERhdGFbbW9kdWxlTmFtZV0sXG4gICAgX2FjY2VwdENhbGxiYWNrczogW10sXG4gICAgX2Rpc3Bvc2VDYWxsYmFja3M6IFtdLFxuICAgIGFjY2VwdDogZnVuY3Rpb24gKGZuKSB7XG4gICAgICB0aGlzLl9hY2NlcHRDYWxsYmFja3MucHVzaChmbiB8fCBmdW5jdGlvbiAoKSB7fSk7XG4gICAgfSxcbiAgICBkaXNwb3NlOiBmdW5jdGlvbiAoZm4pIHtcbiAgICAgIHRoaXMuX2Rpc3Bvc2VDYWxsYmFja3MucHVzaChmbik7XG4gICAgfVxuICB9O1xuICBtb2R1bGUuYnVuZGxlLmhvdERhdGFbbW9kdWxlTmFtZV0gPSB1bmRlZmluZWQ7XG59XG5tb2R1bGUuYnVuZGxlLk1vZHVsZSA9IE1vZHVsZTtcbm1vZHVsZS5idW5kbGUuaG90RGF0YSA9IHt9O1xudmFyIGNoZWNrZWRBc3NldHMgLyo6IHt8W3N0cmluZ106IGJvb2xlYW58fSAqLywgYXNzZXRzVG9EaXNwb3NlIC8qOiBBcnJheTxbUGFyY2VsUmVxdWlyZSwgc3RyaW5nXT4gKi8sIGFzc2V0c1RvQWNjZXB0IC8qOiBBcnJheTxbUGFyY2VsUmVxdWlyZSwgc3RyaW5nXT4gKi87XG5cbmZ1bmN0aW9uIGdldEhvc3RuYW1lKCkge1xuICByZXR1cm4gSE1SX0hPU1QgfHwgKGxvY2F0aW9uLnByb3RvY29sLmluZGV4T2YoJ2h0dHAnKSA9PT0gMCA/IGxvY2F0aW9uLmhvc3RuYW1lIDogJ2xvY2FsaG9zdCcpO1xufVxuZnVuY3Rpb24gZ2V0UG9ydCgpIHtcbiAgcmV0dXJuIEhNUl9QT1JUIHx8IGxvY2F0aW9uLnBvcnQ7XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZWRlY2xhcmVcbnZhciBwYXJlbnQgPSBtb2R1bGUuYnVuZGxlLnBhcmVudDtcbmlmICgoIXBhcmVudCB8fCAhcGFyZW50LmlzUGFyY2VsUmVxdWlyZSkgJiYgdHlwZW9mIFdlYlNvY2tldCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgdmFyIGhvc3RuYW1lID0gZ2V0SG9zdG5hbWUoKTtcbiAgdmFyIHBvcnQgPSBnZXRQb3J0KCk7XG4gIHZhciBwcm90b2NvbCA9IEhNUl9TRUNVUkUgfHwgbG9jYXRpb24ucHJvdG9jb2wgPT0gJ2h0dHBzOicgJiYgIVsnbG9jYWxob3N0JywgJzEyNy4wLjAuMScsICcwLjAuMC4wJ10uaW5jbHVkZXMoaG9zdG5hbWUpID8gJ3dzcycgOiAnd3MnO1xuICB2YXIgd3M7XG4gIHRyeSB7XG4gICAgd3MgPSBuZXcgV2ViU29ja2V0KHByb3RvY29sICsgJzovLycgKyBob3N0bmFtZSArIChwb3J0ID8gJzonICsgcG9ydCA6ICcnKSArICcvJyk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGlmIChlcnIubWVzc2FnZSkge1xuICAgICAgY29uc29sZS5lcnJvcihlcnIubWVzc2FnZSk7XG4gICAgfVxuICAgIHdzID0ge307XG4gIH1cblxuICAvLyBXZWIgZXh0ZW5zaW9uIGNvbnRleHRcbiAgdmFyIGV4dEN0eCA9IHR5cGVvZiBicm93c2VyID09PSAndW5kZWZpbmVkJyA/IHR5cGVvZiBjaHJvbWUgPT09ICd1bmRlZmluZWQnID8gbnVsbCA6IGNocm9tZSA6IGJyb3dzZXI7XG5cbiAgLy8gU2FmYXJpIGRvZXNuJ3Qgc3VwcG9ydCBzb3VyY2VVUkwgaW4gZXJyb3Igc3RhY2tzLlxuICAvLyBldmFsIG1heSBhbHNvIGJlIGRpc2FibGVkIHZpYSBDU1AsIHNvIGRvIGEgcXVpY2sgY2hlY2suXG4gIHZhciBzdXBwb3J0c1NvdXJjZVVSTCA9IGZhbHNlO1xuICB0cnkge1xuICAgICgwLCBldmFsKSgndGhyb3cgbmV3IEVycm9yKFwidGVzdFwiKTsgLy8jIHNvdXJjZVVSTD10ZXN0LmpzJyk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHN1cHBvcnRzU291cmNlVVJMID0gZXJyLnN0YWNrLmluY2x1ZGVzKCd0ZXN0LmpzJyk7XG4gIH1cblxuICAvLyAkRmxvd0ZpeE1lXG4gIHdzLm9ubWVzc2FnZSA9IGFzeW5jIGZ1bmN0aW9uIChldmVudCAvKjoge2RhdGE6IHN0cmluZywgLi4ufSAqLykge1xuICAgIGNoZWNrZWRBc3NldHMgPSB7fSAvKjoge3xbc3RyaW5nXTogYm9vbGVhbnx9ICovO1xuICAgIGFzc2V0c1RvQWNjZXB0ID0gW107XG4gICAgYXNzZXRzVG9EaXNwb3NlID0gW107XG4gICAgdmFyIGRhdGEgLyo6IEhNUk1lc3NhZ2UgKi8gPSBKU09OLnBhcnNlKGV2ZW50LmRhdGEpO1xuICAgIGlmIChkYXRhLnR5cGUgPT09ICd1cGRhdGUnKSB7XG4gICAgICAvLyBSZW1vdmUgZXJyb3Igb3ZlcmxheSBpZiB0aGVyZSBpcyBvbmVcbiAgICAgIGlmICh0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHJlbW92ZUVycm9yT3ZlcmxheSgpO1xuICAgICAgfVxuICAgICAgbGV0IGFzc2V0cyA9IGRhdGEuYXNzZXRzLmZpbHRlcihhc3NldCA9PiBhc3NldC5lbnZIYXNoID09PSBITVJfRU5WX0hBU0gpO1xuXG4gICAgICAvLyBIYW5kbGUgSE1SIFVwZGF0ZVxuICAgICAgbGV0IGhhbmRsZWQgPSBhc3NldHMuZXZlcnkoYXNzZXQgPT4ge1xuICAgICAgICByZXR1cm4gYXNzZXQudHlwZSA9PT0gJ2NzcycgfHwgYXNzZXQudHlwZSA9PT0gJ2pzJyAmJiBobXJBY2NlcHRDaGVjayhtb2R1bGUuYnVuZGxlLnJvb3QsIGFzc2V0LmlkLCBhc3NldC5kZXBzQnlCdW5kbGUpO1xuICAgICAgfSk7XG4gICAgICBpZiAoaGFuZGxlZCkge1xuICAgICAgICBjb25zb2xlLmNsZWFyKCk7XG5cbiAgICAgICAgLy8gRGlzcGF0Y2ggY3VzdG9tIGV2ZW50IHNvIG90aGVyIHJ1bnRpbWVzIChlLmcgUmVhY3QgUmVmcmVzaCkgYXJlIGF3YXJlLlxuICAgICAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIEN1c3RvbUV2ZW50ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgncGFyY2VsaG1yYWNjZXB0JykpO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IGhtckFwcGx5VXBkYXRlcyhhc3NldHMpO1xuXG4gICAgICAgIC8vIERpc3Bvc2UgYWxsIG9sZCBhc3NldHMuXG4gICAgICAgIGxldCBwcm9jZXNzZWRBc3NldHMgPSB7fSAvKjoge3xbc3RyaW5nXTogYm9vbGVhbnx9ICovO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFzc2V0c1RvRGlzcG9zZS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGxldCBpZCA9IGFzc2V0c1RvRGlzcG9zZVtpXVsxXTtcbiAgICAgICAgICBpZiAoIXByb2Nlc3NlZEFzc2V0c1tpZF0pIHtcbiAgICAgICAgICAgIGhtckRpc3Bvc2UoYXNzZXRzVG9EaXNwb3NlW2ldWzBdLCBpZCk7XG4gICAgICAgICAgICBwcm9jZXNzZWRBc3NldHNbaWRdID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBSdW4gYWNjZXB0IGNhbGxiYWNrcy4gVGhpcyB3aWxsIGFsc28gcmUtZXhlY3V0ZSBvdGhlciBkaXNwb3NlZCBhc3NldHMgaW4gdG9wb2xvZ2ljYWwgb3JkZXIuXG4gICAgICAgIHByb2Nlc3NlZEFzc2V0cyA9IHt9O1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFzc2V0c1RvQWNjZXB0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgbGV0IGlkID0gYXNzZXRzVG9BY2NlcHRbaV1bMV07XG4gICAgICAgICAgaWYgKCFwcm9jZXNzZWRBc3NldHNbaWRdKSB7XG4gICAgICAgICAgICBobXJBY2NlcHQoYXNzZXRzVG9BY2NlcHRbaV1bMF0sIGlkKTtcbiAgICAgICAgICAgIHByb2Nlc3NlZEFzc2V0c1tpZF0gPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGZ1bGxSZWxvYWQoKTtcbiAgICB9XG4gICAgaWYgKGRhdGEudHlwZSA9PT0gJ2Vycm9yJykge1xuICAgICAgLy8gTG9nIHBhcmNlbCBlcnJvcnMgdG8gY29uc29sZVxuICAgICAgZm9yIChsZXQgYW5zaURpYWdub3N0aWMgb2YgZGF0YS5kaWFnbm9zdGljcy5hbnNpKSB7XG4gICAgICAgIGxldCBzdGFjayA9IGFuc2lEaWFnbm9zdGljLmNvZGVmcmFtZSA/IGFuc2lEaWFnbm9zdGljLmNvZGVmcmFtZSA6IGFuc2lEaWFnbm9zdGljLnN0YWNrO1xuICAgICAgICBjb25zb2xlLmVycm9yKCfwn5qoIFtwYXJjZWxdOiAnICsgYW5zaURpYWdub3N0aWMubWVzc2FnZSArICdcXG4nICsgc3RhY2sgKyAnXFxuXFxuJyArIGFuc2lEaWFnbm9zdGljLmhpbnRzLmpvaW4oJ1xcbicpKTtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIC8vIFJlbmRlciB0aGUgZmFuY3kgaHRtbCBvdmVybGF5XG4gICAgICAgIHJlbW92ZUVycm9yT3ZlcmxheSgpO1xuICAgICAgICB2YXIgb3ZlcmxheSA9IGNyZWF0ZUVycm9yT3ZlcmxheShkYXRhLmRpYWdub3N0aWNzLmh0bWwpO1xuICAgICAgICAvLyAkRmxvd0ZpeE1lXG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQob3ZlcmxheSk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuICB3cy5vbmVycm9yID0gZnVuY3Rpb24gKGUpIHtcbiAgICBpZiAoZS5tZXNzYWdlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGUubWVzc2FnZSk7XG4gICAgfVxuICB9O1xuICB3cy5vbmNsb3NlID0gZnVuY3Rpb24gKCkge1xuICAgIGNvbnNvbGUud2FybignW3BhcmNlbF0g8J+aqCBDb25uZWN0aW9uIHRvIHRoZSBITVIgc2VydmVyIHdhcyBsb3N0Jyk7XG4gIH07XG59XG5mdW5jdGlvbiByZW1vdmVFcnJvck92ZXJsYXkoKSB7XG4gIHZhciBvdmVybGF5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoT1ZFUkxBWV9JRCk7XG4gIGlmIChvdmVybGF5KSB7XG4gICAgb3ZlcmxheS5yZW1vdmUoKTtcbiAgICBjb25zb2xlLmxvZygnW3BhcmNlbF0g4pyoIEVycm9yIHJlc29sdmVkJyk7XG4gIH1cbn1cbmZ1bmN0aW9uIGNyZWF0ZUVycm9yT3ZlcmxheShkaWFnbm9zdGljcykge1xuICB2YXIgb3ZlcmxheSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICBvdmVybGF5LmlkID0gT1ZFUkxBWV9JRDtcbiAgbGV0IGVycm9ySFRNTCA9ICc8ZGl2IHN0eWxlPVwiYmFja2dyb3VuZDogYmxhY2s7IG9wYWNpdHk6IDAuODU7IGZvbnQtc2l6ZTogMTZweDsgY29sb3I6IHdoaXRlOyBwb3NpdGlvbjogZml4ZWQ7IGhlaWdodDogMTAwJTsgd2lkdGg6IDEwMCU7IHRvcDogMHB4OyBsZWZ0OiAwcHg7IHBhZGRpbmc6IDMwcHg7IGZvbnQtZmFtaWx5OiBNZW5sbywgQ29uc29sYXMsIG1vbm9zcGFjZTsgei1pbmRleDogOTk5OTtcIj4nO1xuICBmb3IgKGxldCBkaWFnbm9zdGljIG9mIGRpYWdub3N0aWNzKSB7XG4gICAgbGV0IHN0YWNrID0gZGlhZ25vc3RpYy5mcmFtZXMubGVuZ3RoID8gZGlhZ25vc3RpYy5mcmFtZXMucmVkdWNlKChwLCBmcmFtZSkgPT4ge1xuICAgICAgcmV0dXJuIGAke3B9XG48YSBocmVmPVwiL19fcGFyY2VsX2xhdW5jaF9lZGl0b3I/ZmlsZT0ke2VuY29kZVVSSUNvbXBvbmVudChmcmFtZS5sb2NhdGlvbil9XCIgc3R5bGU9XCJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgY29sb3I6ICM4ODhcIiBvbmNsaWNrPVwiZmV0Y2godGhpcy5ocmVmKTsgcmV0dXJuIGZhbHNlXCI+JHtmcmFtZS5sb2NhdGlvbn08L2E+XG4ke2ZyYW1lLmNvZGV9YDtcbiAgICB9LCAnJykgOiBkaWFnbm9zdGljLnN0YWNrO1xuICAgIGVycm9ySFRNTCArPSBgXG4gICAgICA8ZGl2PlxuICAgICAgICA8ZGl2IHN0eWxlPVwiZm9udC1zaXplOiAxOHB4OyBmb250LXdlaWdodDogYm9sZDsgbWFyZ2luLXRvcDogMjBweDtcIj5cbiAgICAgICAgICDwn5qoICR7ZGlhZ25vc3RpYy5tZXNzYWdlfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHByZT4ke3N0YWNrfTwvcHJlPlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgICR7ZGlhZ25vc3RpYy5oaW50cy5tYXAoaGludCA9PiAnPGRpdj7wn5KhICcgKyBoaW50ICsgJzwvZGl2PicpLmpvaW4oJycpfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgJHtkaWFnbm9zdGljLmRvY3VtZW50YXRpb24gPyBgPGRpdj7wn5OdIDxhIHN0eWxlPVwiY29sb3I6IHZpb2xldFwiIGhyZWY9XCIke2RpYWdub3N0aWMuZG9jdW1lbnRhdGlvbn1cIiB0YXJnZXQ9XCJfYmxhbmtcIj5MZWFybiBtb3JlPC9hPjwvZGl2PmAgOiAnJ31cbiAgICAgIDwvZGl2PlxuICAgIGA7XG4gIH1cbiAgZXJyb3JIVE1MICs9ICc8L2Rpdj4nO1xuICBvdmVybGF5LmlubmVySFRNTCA9IGVycm9ySFRNTDtcbiAgcmV0dXJuIG92ZXJsYXk7XG59XG5mdW5jdGlvbiBmdWxsUmVsb2FkKCkge1xuICBpZiAoJ3JlbG9hZCcgaW4gbG9jYXRpb24pIHtcbiAgICBsb2NhdGlvbi5yZWxvYWQoKTtcbiAgfSBlbHNlIGlmIChleHRDdHggJiYgZXh0Q3R4LnJ1bnRpbWUgJiYgZXh0Q3R4LnJ1bnRpbWUucmVsb2FkKSB7XG4gICAgZXh0Q3R4LnJ1bnRpbWUucmVsb2FkKCk7XG4gIH1cbn1cbmZ1bmN0aW9uIGdldFBhcmVudHMoYnVuZGxlLCBpZCkgLyo6IEFycmF5PFtQYXJjZWxSZXF1aXJlLCBzdHJpbmddPiAqL3tcbiAgdmFyIG1vZHVsZXMgPSBidW5kbGUubW9kdWxlcztcbiAgaWYgKCFtb2R1bGVzKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIHZhciBwYXJlbnRzID0gW107XG4gIHZhciBrLCBkLCBkZXA7XG4gIGZvciAoayBpbiBtb2R1bGVzKSB7XG4gICAgZm9yIChkIGluIG1vZHVsZXNba11bMV0pIHtcbiAgICAgIGRlcCA9IG1vZHVsZXNba11bMV1bZF07XG4gICAgICBpZiAoZGVwID09PSBpZCB8fCBBcnJheS5pc0FycmF5KGRlcCkgJiYgZGVwW2RlcC5sZW5ndGggLSAxXSA9PT0gaWQpIHtcbiAgICAgICAgcGFyZW50cy5wdXNoKFtidW5kbGUsIGtdKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKGJ1bmRsZS5wYXJlbnQpIHtcbiAgICBwYXJlbnRzID0gcGFyZW50cy5jb25jYXQoZ2V0UGFyZW50cyhidW5kbGUucGFyZW50LCBpZCkpO1xuICB9XG4gIHJldHVybiBwYXJlbnRzO1xufVxuZnVuY3Rpb24gdXBkYXRlTGluayhsaW5rKSB7XG4gIHZhciBocmVmID0gbGluay5nZXRBdHRyaWJ1dGUoJ2hyZWYnKTtcbiAgaWYgKCFocmVmKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIHZhciBuZXdMaW5rID0gbGluay5jbG9uZU5vZGUoKTtcbiAgbmV3TGluay5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKGxpbmsucGFyZW50Tm9kZSAhPT0gbnVsbCkge1xuICAgICAgLy8gJEZsb3dGaXhNZVxuICAgICAgbGluay5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGxpbmspO1xuICAgIH1cbiAgfTtcbiAgbmV3TGluay5zZXRBdHRyaWJ1dGUoJ2hyZWYnLFxuICAvLyAkRmxvd0ZpeE1lXG4gIGhyZWYuc3BsaXQoJz8nKVswXSArICc/JyArIERhdGUubm93KCkpO1xuICAvLyAkRmxvd0ZpeE1lXG4gIGxpbmsucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobmV3TGluaywgbGluay5uZXh0U2libGluZyk7XG59XG52YXIgY3NzVGltZW91dCA9IG51bGw7XG5mdW5jdGlvbiByZWxvYWRDU1MoKSB7XG4gIGlmIChjc3NUaW1lb3V0KSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNzc1RpbWVvdXQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbGlua3MgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdsaW5rW3JlbD1cInN0eWxlc2hlZXRcIl0nKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxpbmtzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS10eXBlXVxuICAgICAgdmFyIGhyZWYgLyo6IHN0cmluZyAqLyA9IGxpbmtzW2ldLmdldEF0dHJpYnV0ZSgnaHJlZicpO1xuICAgICAgdmFyIGhvc3RuYW1lID0gZ2V0SG9zdG5hbWUoKTtcbiAgICAgIHZhciBzZXJ2ZWRGcm9tSE1SU2VydmVyID0gaG9zdG5hbWUgPT09ICdsb2NhbGhvc3QnID8gbmV3IFJlZ0V4cCgnXihodHRwcz86XFxcXC9cXFxcLygwLjAuMC4wfDEyNy4wLjAuMSl8bG9jYWxob3N0KTonICsgZ2V0UG9ydCgpKS50ZXN0KGhyZWYpIDogaHJlZi5pbmRleE9mKGhvc3RuYW1lICsgJzonICsgZ2V0UG9ydCgpKTtcbiAgICAgIHZhciBhYnNvbHV0ZSA9IC9eaHR0cHM/OlxcL1xcLy9pLnRlc3QoaHJlZikgJiYgaHJlZi5pbmRleE9mKGxvY2F0aW9uLm9yaWdpbikgIT09IDAgJiYgIXNlcnZlZEZyb21ITVJTZXJ2ZXI7XG4gICAgICBpZiAoIWFic29sdXRlKSB7XG4gICAgICAgIHVwZGF0ZUxpbmsobGlua3NbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgICBjc3NUaW1lb3V0ID0gbnVsbDtcbiAgfSwgNTApO1xufVxuZnVuY3Rpb24gaG1yRG93bmxvYWQoYXNzZXQpIHtcbiAgaWYgKGFzc2V0LnR5cGUgPT09ICdqcycpIHtcbiAgICBpZiAodHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgbGV0IHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuICAgICAgc2NyaXB0LnNyYyA9IGFzc2V0LnVybCArICc/dD0nICsgRGF0ZS5ub3coKTtcbiAgICAgIGlmIChhc3NldC5vdXRwdXRGb3JtYXQgPT09ICdlc21vZHVsZScpIHtcbiAgICAgICAgc2NyaXB0LnR5cGUgPSAnbW9kdWxlJztcbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIHZhciBfZG9jdW1lbnQkaGVhZDtcbiAgICAgICAgc2NyaXB0Lm9ubG9hZCA9ICgpID0+IHJlc29sdmUoc2NyaXB0KTtcbiAgICAgICAgc2NyaXB0Lm9uZXJyb3IgPSByZWplY3Q7XG4gICAgICAgIChfZG9jdW1lbnQkaGVhZCA9IGRvY3VtZW50LmhlYWQpID09PSBudWxsIHx8IF9kb2N1bWVudCRoZWFkID09PSB2b2lkIDAgfHwgX2RvY3VtZW50JGhlYWQuYXBwZW5kQ2hpbGQoc2NyaXB0KTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGltcG9ydFNjcmlwdHMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIC8vIFdvcmtlciBzY3JpcHRzXG4gICAgICBpZiAoYXNzZXQub3V0cHV0Rm9ybWF0ID09PSAnZXNtb2R1bGUnKSB7XG4gICAgICAgIHJldHVybiBfX3BhcmNlbF9faW1wb3J0X18oYXNzZXQudXJsICsgJz90PScgKyBEYXRlLm5vdygpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIF9fcGFyY2VsX19pbXBvcnRTY3JpcHRzX18oYXNzZXQudXJsICsgJz90PScgKyBEYXRlLm5vdygpKTtcbiAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5hc3luYyBmdW5jdGlvbiBobXJBcHBseVVwZGF0ZXMoYXNzZXRzKSB7XG4gIGdsb2JhbC5wYXJjZWxIb3RVcGRhdGUgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICBsZXQgc2NyaXB0c1RvUmVtb3ZlO1xuICB0cnkge1xuICAgIC8vIElmIHNvdXJjZVVSTCBjb21tZW50cyBhcmVuJ3Qgc3VwcG9ydGVkIGluIGV2YWwsIHdlIG5lZWQgdG8gbG9hZFxuICAgIC8vIHRoZSB1cGRhdGUgZnJvbSB0aGUgZGV2IHNlcnZlciBvdmVyIEhUVFAgc28gdGhhdCBzdGFjayB0cmFjZXNcbiAgICAvLyBhcmUgY29ycmVjdCBpbiBlcnJvcnMvbG9ncy4gVGhpcyBpcyBtdWNoIHNsb3dlciB0aGFuIGV2YWwsIHNvXG4gICAgLy8gd2Ugb25seSBkbyBpdCBpZiBuZWVkZWQgKGN1cnJlbnRseSBqdXN0IFNhZmFyaSkuXG4gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzI5N1xuICAgIC8vIFRoaXMgcGF0aCBpcyBhbHNvIHRha2VuIGlmIGEgQ1NQIGRpc2FsbG93cyBldmFsLlxuICAgIGlmICghc3VwcG9ydHNTb3VyY2VVUkwpIHtcbiAgICAgIGxldCBwcm9taXNlcyA9IGFzc2V0cy5tYXAoYXNzZXQgPT4ge1xuICAgICAgICB2YXIgX2htckRvd25sb2FkO1xuICAgICAgICByZXR1cm4gKF9obXJEb3dubG9hZCA9IGhtckRvd25sb2FkKGFzc2V0KSkgPT09IG51bGwgfHwgX2htckRvd25sb2FkID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfaG1yRG93bmxvYWQuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAvLyBXZWIgZXh0ZW5zaW9uIGZpeFxuICAgICAgICAgIGlmIChleHRDdHggJiYgZXh0Q3R4LnJ1bnRpbWUgJiYgZXh0Q3R4LnJ1bnRpbWUuZ2V0TWFuaWZlc3QoKS5tYW5pZmVzdF92ZXJzaW9uID09IDMgJiYgdHlwZW9mIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSAhPSAndW5kZWZpbmVkJyAmJiBnbG9iYWwgaW5zdGFuY2VvZiBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUpIHtcbiAgICAgICAgICAgIGV4dEN0eC5ydW50aW1lLnJlbG9hZCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICBzY3JpcHRzVG9SZW1vdmUgPSBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcyk7XG4gICAgfVxuICAgIGFzc2V0cy5mb3JFYWNoKGZ1bmN0aW9uIChhc3NldCkge1xuICAgICAgaG1yQXBwbHkobW9kdWxlLmJ1bmRsZS5yb290LCBhc3NldCk7XG4gICAgfSk7XG4gIH0gZmluYWxseSB7XG4gICAgZGVsZXRlIGdsb2JhbC5wYXJjZWxIb3RVcGRhdGU7XG4gICAgaWYgKHNjcmlwdHNUb1JlbW92ZSkge1xuICAgICAgc2NyaXB0c1RvUmVtb3ZlLmZvckVhY2goc2NyaXB0ID0+IHtcbiAgICAgICAgaWYgKHNjcmlwdCkge1xuICAgICAgICAgIHZhciBfZG9jdW1lbnQkaGVhZDI7XG4gICAgICAgICAgKF9kb2N1bWVudCRoZWFkMiA9IGRvY3VtZW50LmhlYWQpID09PSBudWxsIHx8IF9kb2N1bWVudCRoZWFkMiA9PT0gdm9pZCAwIHx8IF9kb2N1bWVudCRoZWFkMi5yZW1vdmVDaGlsZChzY3JpcHQpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbmZ1bmN0aW9uIGhtckFwcGx5KGJ1bmRsZSAvKjogUGFyY2VsUmVxdWlyZSAqLywgYXNzZXQgLyo6ICBITVJBc3NldCAqLykge1xuICB2YXIgbW9kdWxlcyA9IGJ1bmRsZS5tb2R1bGVzO1xuICBpZiAoIW1vZHVsZXMpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKGFzc2V0LnR5cGUgPT09ICdjc3MnKSB7XG4gICAgcmVsb2FkQ1NTKCk7XG4gIH0gZWxzZSBpZiAoYXNzZXQudHlwZSA9PT0gJ2pzJykge1xuICAgIGxldCBkZXBzID0gYXNzZXQuZGVwc0J5QnVuZGxlW2J1bmRsZS5ITVJfQlVORExFX0lEXTtcbiAgICBpZiAoZGVwcykge1xuICAgICAgaWYgKG1vZHVsZXNbYXNzZXQuaWRdKSB7XG4gICAgICAgIC8vIFJlbW92ZSBkZXBlbmRlbmNpZXMgdGhhdCBhcmUgcmVtb3ZlZCBhbmQgd2lsbCBiZWNvbWUgb3JwaGFuZWQuXG4gICAgICAgIC8vIFRoaXMgaXMgbmVjZXNzYXJ5IHNvIHRoYXQgaWYgdGhlIGFzc2V0IGlzIGFkZGVkIGJhY2sgYWdhaW4sIHRoZSBjYWNoZSBpcyBnb25lLCBhbmQgd2UgcHJldmVudCBhIGZ1bGwgcGFnZSByZWxvYWQuXG4gICAgICAgIGxldCBvbGREZXBzID0gbW9kdWxlc1thc3NldC5pZF1bMV07XG4gICAgICAgIGZvciAobGV0IGRlcCBpbiBvbGREZXBzKSB7XG4gICAgICAgICAgaWYgKCFkZXBzW2RlcF0gfHwgZGVwc1tkZXBdICE9PSBvbGREZXBzW2RlcF0pIHtcbiAgICAgICAgICAgIGxldCBpZCA9IG9sZERlcHNbZGVwXTtcbiAgICAgICAgICAgIGxldCBwYXJlbnRzID0gZ2V0UGFyZW50cyhtb2R1bGUuYnVuZGxlLnJvb3QsIGlkKTtcbiAgICAgICAgICAgIGlmIChwYXJlbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICBobXJEZWxldGUobW9kdWxlLmJ1bmRsZS5yb290LCBpZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoc3VwcG9ydHNTb3VyY2VVUkwpIHtcbiAgICAgICAgLy8gR2xvYmFsIGV2YWwuIFdlIHdvdWxkIHVzZSBgbmV3IEZ1bmN0aW9uYCBoZXJlIGJ1dCBicm93c2VyXG4gICAgICAgIC8vIHN1cHBvcnQgZm9yIHNvdXJjZSBtYXBzIGlzIGJldHRlciB3aXRoIGV2YWwuXG4gICAgICAgICgwLCBldmFsKShhc3NldC5vdXRwdXQpO1xuICAgICAgfVxuXG4gICAgICAvLyAkRmxvd0ZpeE1lXG4gICAgICBsZXQgZm4gPSBnbG9iYWwucGFyY2VsSG90VXBkYXRlW2Fzc2V0LmlkXTtcbiAgICAgIG1vZHVsZXNbYXNzZXQuaWRdID0gW2ZuLCBkZXBzXTtcbiAgICB9IGVsc2UgaWYgKGJ1bmRsZS5wYXJlbnQpIHtcbiAgICAgIGhtckFwcGx5KGJ1bmRsZS5wYXJlbnQsIGFzc2V0KTtcbiAgICB9XG4gIH1cbn1cbmZ1bmN0aW9uIGhtckRlbGV0ZShidW5kbGUsIGlkKSB7XG4gIGxldCBtb2R1bGVzID0gYnVuZGxlLm1vZHVsZXM7XG4gIGlmICghbW9kdWxlcykge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAobW9kdWxlc1tpZF0pIHtcbiAgICAvLyBDb2xsZWN0IGRlcGVuZGVuY2llcyB0aGF0IHdpbGwgYmVjb21lIG9ycGhhbmVkIHdoZW4gdGhpcyBtb2R1bGUgaXMgZGVsZXRlZC5cbiAgICBsZXQgZGVwcyA9IG1vZHVsZXNbaWRdWzFdO1xuICAgIGxldCBvcnBoYW5zID0gW107XG4gICAgZm9yIChsZXQgZGVwIGluIGRlcHMpIHtcbiAgICAgIGxldCBwYXJlbnRzID0gZ2V0UGFyZW50cyhtb2R1bGUuYnVuZGxlLnJvb3QsIGRlcHNbZGVwXSk7XG4gICAgICBpZiAocGFyZW50cy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgb3JwaGFucy5wdXNoKGRlcHNbZGVwXSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRGVsZXRlIHRoZSBtb2R1bGUuIFRoaXMgbXVzdCBiZSBkb25lIGJlZm9yZSBkZWxldGluZyBkZXBlbmRlbmNpZXMgaW4gY2FzZSBvZiBjaXJjdWxhciBkZXBlbmRlbmNpZXMuXG4gICAgZGVsZXRlIG1vZHVsZXNbaWRdO1xuICAgIGRlbGV0ZSBidW5kbGUuY2FjaGVbaWRdO1xuXG4gICAgLy8gTm93IGRlbGV0ZSB0aGUgb3JwaGFucy5cbiAgICBvcnBoYW5zLmZvckVhY2goaWQgPT4ge1xuICAgICAgaG1yRGVsZXRlKG1vZHVsZS5idW5kbGUucm9vdCwgaWQpO1xuICAgIH0pO1xuICB9IGVsc2UgaWYgKGJ1bmRsZS5wYXJlbnQpIHtcbiAgICBobXJEZWxldGUoYnVuZGxlLnBhcmVudCwgaWQpO1xuICB9XG59XG5mdW5jdGlvbiBobXJBY2NlcHRDaGVjayhidW5kbGUgLyo6IFBhcmNlbFJlcXVpcmUgKi8sIGlkIC8qOiBzdHJpbmcgKi8sIGRlcHNCeUJ1bmRsZSAvKjogP3sgW3N0cmluZ106IHsgW3N0cmluZ106IHN0cmluZyB9IH0qLykge1xuICBpZiAoaG1yQWNjZXB0Q2hlY2tPbmUoYnVuZGxlLCBpZCwgZGVwc0J5QnVuZGxlKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLy8gVHJhdmVyc2UgcGFyZW50cyBicmVhZHRoIGZpcnN0LiBBbGwgcG9zc2libGUgYW5jZXN0cmllcyBtdXN0IGFjY2VwdCB0aGUgSE1SIHVwZGF0ZSwgb3Igd2UnbGwgcmVsb2FkLlxuICBsZXQgcGFyZW50cyA9IGdldFBhcmVudHMobW9kdWxlLmJ1bmRsZS5yb290LCBpZCk7XG4gIGxldCBhY2NlcHRlZCA9IGZhbHNlO1xuICB3aGlsZSAocGFyZW50cy5sZW5ndGggPiAwKSB7XG4gICAgbGV0IHYgPSBwYXJlbnRzLnNoaWZ0KCk7XG4gICAgbGV0IGEgPSBobXJBY2NlcHRDaGVja09uZSh2WzBdLCB2WzFdLCBudWxsKTtcbiAgICBpZiAoYSkge1xuICAgICAgLy8gSWYgdGhpcyBwYXJlbnQgYWNjZXB0cywgc3RvcCB0cmF2ZXJzaW5nIHVwd2FyZCwgYnV0IHN0aWxsIGNvbnNpZGVyIHNpYmxpbmdzLlxuICAgICAgYWNjZXB0ZWQgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBPdGhlcndpc2UsIHF1ZXVlIHRoZSBwYXJlbnRzIGluIHRoZSBuZXh0IGxldmVsIHVwd2FyZC5cbiAgICAgIGxldCBwID0gZ2V0UGFyZW50cyhtb2R1bGUuYnVuZGxlLnJvb3QsIHZbMV0pO1xuICAgICAgaWYgKHAubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIC8vIElmIHRoZXJlIGFyZSBubyBwYXJlbnRzLCB0aGVuIHdlJ3ZlIHJlYWNoZWQgYW4gZW50cnkgd2l0aG91dCBhY2NlcHRpbmcuIFJlbG9hZC5cbiAgICAgICAgYWNjZXB0ZWQgPSBmYWxzZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBwYXJlbnRzLnB1c2goLi4ucCk7XG4gICAgfVxuICB9XG4gIHJldHVybiBhY2NlcHRlZDtcbn1cbmZ1bmN0aW9uIGhtckFjY2VwdENoZWNrT25lKGJ1bmRsZSAvKjogUGFyY2VsUmVxdWlyZSAqLywgaWQgLyo6IHN0cmluZyAqLywgZGVwc0J5QnVuZGxlIC8qOiA/eyBbc3RyaW5nXTogeyBbc3RyaW5nXTogc3RyaW5nIH0gfSovKSB7XG4gIHZhciBtb2R1bGVzID0gYnVuZGxlLm1vZHVsZXM7XG4gIGlmICghbW9kdWxlcykge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAoZGVwc0J5QnVuZGxlICYmICFkZXBzQnlCdW5kbGVbYnVuZGxlLkhNUl9CVU5ETEVfSURdKSB7XG4gICAgLy8gSWYgd2UgcmVhY2hlZCB0aGUgcm9vdCBidW5kbGUgd2l0aG91dCBmaW5kaW5nIHdoZXJlIHRoZSBhc3NldCBzaG91bGQgZ28sXG4gICAgLy8gdGhlcmUncyBub3RoaW5nIHRvIGRvLiBNYXJrIGFzIFwiYWNjZXB0ZWRcIiBzbyB3ZSBkb24ndCByZWxvYWQgdGhlIHBhZ2UuXG4gICAgaWYgKCFidW5kbGUucGFyZW50KSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGhtckFjY2VwdENoZWNrKGJ1bmRsZS5wYXJlbnQsIGlkLCBkZXBzQnlCdW5kbGUpO1xuICB9XG4gIGlmIChjaGVja2VkQXNzZXRzW2lkXSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGNoZWNrZWRBc3NldHNbaWRdID0gdHJ1ZTtcbiAgdmFyIGNhY2hlZCA9IGJ1bmRsZS5jYWNoZVtpZF07XG4gIGFzc2V0c1RvRGlzcG9zZS5wdXNoKFtidW5kbGUsIGlkXSk7XG4gIGlmICghY2FjaGVkIHx8IGNhY2hlZC5ob3QgJiYgY2FjaGVkLmhvdC5fYWNjZXB0Q2FsbGJhY2tzLmxlbmd0aCkge1xuICAgIGFzc2V0c1RvQWNjZXB0LnB1c2goW2J1bmRsZSwgaWRdKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuZnVuY3Rpb24gaG1yRGlzcG9zZShidW5kbGUgLyo6IFBhcmNlbFJlcXVpcmUgKi8sIGlkIC8qOiBzdHJpbmcgKi8pIHtcbiAgdmFyIGNhY2hlZCA9IGJ1bmRsZS5jYWNoZVtpZF07XG4gIGJ1bmRsZS5ob3REYXRhW2lkXSA9IHt9O1xuICBpZiAoY2FjaGVkICYmIGNhY2hlZC5ob3QpIHtcbiAgICBjYWNoZWQuaG90LmRhdGEgPSBidW5kbGUuaG90RGF0YVtpZF07XG4gIH1cbiAgaWYgKGNhY2hlZCAmJiBjYWNoZWQuaG90ICYmIGNhY2hlZC5ob3QuX2Rpc3Bvc2VDYWxsYmFja3MubGVuZ3RoKSB7XG4gICAgY2FjaGVkLmhvdC5fZGlzcG9zZUNhbGxiYWNrcy5mb3JFYWNoKGZ1bmN0aW9uIChjYikge1xuICAgICAgY2IoYnVuZGxlLmhvdERhdGFbaWRdKTtcbiAgICB9KTtcbiAgfVxuICBkZWxldGUgYnVuZGxlLmNhY2hlW2lkXTtcbn1cbmZ1bmN0aW9uIGhtckFjY2VwdChidW5kbGUgLyo6IFBhcmNlbFJlcXVpcmUgKi8sIGlkIC8qOiBzdHJpbmcgKi8pIHtcbiAgLy8gRXhlY3V0ZSB0aGUgbW9kdWxlLlxuICBidW5kbGUoaWQpO1xuXG4gIC8vIFJ1biB0aGUgYWNjZXB0IGNhbGxiYWNrcyBpbiB0aGUgbmV3IHZlcnNpb24gb2YgdGhlIG1vZHVsZS5cbiAgdmFyIGNhY2hlZCA9IGJ1bmRsZS5jYWNoZVtpZF07XG4gIGlmIChjYWNoZWQgJiYgY2FjaGVkLmhvdCAmJiBjYWNoZWQuaG90Ll9hY2NlcHRDYWxsYmFja3MubGVuZ3RoKSB7XG4gICAgY2FjaGVkLmhvdC5fYWNjZXB0Q2FsbGJhY2tzLmZvckVhY2goZnVuY3Rpb24gKGNiKSB7XG4gICAgICB2YXIgYXNzZXRzVG9BbHNvQWNjZXB0ID0gY2IoZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gZ2V0UGFyZW50cyhtb2R1bGUuYnVuZGxlLnJvb3QsIGlkKTtcbiAgICAgIH0pO1xuICAgICAgaWYgKGFzc2V0c1RvQWxzb0FjY2VwdCAmJiBhc3NldHNUb0FjY2VwdC5sZW5ndGgpIHtcbiAgICAgICAgYXNzZXRzVG9BbHNvQWNjZXB0LmZvckVhY2goZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgICBobXJEaXNwb3NlKGFbMF0sIGFbMV0pO1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyAkRmxvd0ZpeE1lW21ldGhvZC11bmJpbmRpbmddXG4gICAgICAgIGFzc2V0c1RvQWNjZXB0LnB1c2guYXBwbHkoYXNzZXRzVG9BY2NlcHQsIGFzc2V0c1RvQWxzb0FjY2VwdCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn0iLCIvLyBVc2UgYSBjcm9zcy1icm93c2VyIHN0b3JhZ2UgQVBJOlxyXG4vLyBjb25zdCBzdG9yYWdlID0gY2hyb21lLnN0b3JhZ2Uuc3luYyB8fCBicm93c2VyLnN0b3JhZ2Uuc3luY1xyXG5pbXBvcnQgYnJvd3NlciBmcm9tICd3ZWJleHRlbnNpb24tcG9seWZpbGwnXHJcbmltcG9ydCBncHRoVG9nZ2xlSW1nIGZyb20gJy4uL2ltZy9ncHRoLXRvZ2dsZS1jaXJjbGVkLndlYnAnXHJcblxyXG5sZXQgaXNPcHRpb25zU2hvd24gPSBmYWxzZVxyXG5cclxuYnJvd3Nlci5zdG9yYWdlLnN5bmMuZ2V0KCdncHRoZW1lJykudGhlbigoZGF0YSkgPT4ge1xyXG5cdC8qIFx0Y29uc3QgdGhlbWUgPSBkYXRhLmdwdGhlbWUgfHwgJ2RhcmsnXHJcblx0YXBwbHlUaGVtZSh0aGVtZSkgKi9cclxuXHRsZXQgdGhlbWUgPSAnJ1xyXG5cdGNvbnN0IHN0b3JlZFRoZW1lID0gZGF0YS5ncHRoZW1lXHJcblxyXG5cdGlmIChzdG9yZWRUaGVtZSkge1xyXG5cdFx0dGhlbWUgPSBzdG9yZWRUaGVtZVxyXG5cdFx0YXBwbHlUaGVtZSh0aGVtZSlcclxuXHJcblx0XHRyZXR1cm5cclxuXHR9XHJcblxyXG5cdC8vIENoZWNrIGlmIHRoZSBkYXJrIG9yIGxpZ2h0IHRoZW1lIHByZWZlcmVuY2UgaXMgc2V0XHJcblx0Y29uc3QgbGlnaHRUaGVtZVF1ZXJ5ID0gd2luZG93Lm1hdGNoTWVkaWEoJyhwcmVmZXJzLWNvbG9yLXNjaGVtZTogbGlnaHQpJylcclxuXHJcblx0bGlnaHRUaGVtZVF1ZXJ5Lm1hdGNoZXMgPyAodGhlbWUgPSAnbGlnaHQnKSA6ICh0aGVtZSA9ICdkYXJrJykgLy8gRmFsbGJhY2sgdGhlbWVcclxuXHJcblx0YXBwbHlUaGVtZSh0aGVtZSlcclxufSlcclxuXHJcbmNyZWF0ZUFuZEFwcGVuZFNWR1N0aWNreUJ0bigpXHJcbi8vIHRyYWNrSHRtbENsYXNzQ2hhbmdlcygpXHJcblxyXG5jb25zdCAkaHRtbFRhZyA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudFxyXG5jb25zdCAkb3B0aW9ucyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5ncHRoX19vcHRpb25zJylcclxuY29uc3QgJHN2Z0ljb24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZ3B0aF9fc3ZnLWljb24nKVxyXG5jb25zdCAkdGhlbWVCdXR0b25zQ29udGFpbmVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmdwdGhfX3RoZW1lcy1idG5zJylcclxuLy8gY29uc3QgJHRoZW1lQnV0dG9ucyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5ncHRoX190aGVtZXMtYnRucyBidXR0b24nKVxyXG5cclxuJHN2Z0ljb24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0b2dnbGVPcHRpb25zKVxyXG5cclxuLyogJHRoZW1lQnV0dG9ucy5mb3JFYWNoKChidG4pID0+IHtcclxuXHRidG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoeyB0YXJnZXQgfSkgPT4ge1xyXG5cdFx0Y29uc3QgdGhlbWUgPSB0YXJnZXQuaWRcclxuXHRcdGJyb3dzZXIuc3RvcmFnZS5zeW5jLnNldCh7IGdwdGhlbWU6IHRoZW1lIH0pXHJcblx0XHRhcHBseVRoZW1lKHRoZW1lKVxyXG5cdFx0dG9nZ2xlT3B0aW9ucygpXHJcblx0fSlcclxufSkgKi9cclxuJHRoZW1lQnV0dG9uc0NvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChldmVudCkgPT4ge1xyXG5cdGNvbnN0IHRoZW1lQnV0dG9uID0gZXZlbnQudGFyZ2V0LmNsb3Nlc3QoJ2J1dHRvbicpXHJcblx0aWYgKCF0aGVtZUJ1dHRvbikgcmV0dXJuXHJcblxyXG5cdGNvbnN0IHRoZW1lID0gdGhlbWVCdXR0b24uaWRcclxuXHRicm93c2VyLnN0b3JhZ2Uuc3luYy5zZXQoeyBncHRoZW1lOiB0aGVtZSB9KVxyXG5cdGFwcGx5VGhlbWUodGhlbWUpXHJcblx0dG9nZ2xlT3B0aW9ucygpXHJcbn0pXHJcblxyXG5mdW5jdGlvbiBjcmVhdGVBbmRBcHBlbmRTVkdTdGlja3lCdG4oKSB7XHJcblx0Y29uc3QgZ3B0aEZsb2F0aW5nQnRuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JylcclxuXHRncHRoRmxvYXRpbmdCdG4uY2xhc3NOYW1lID0gJ2dwdGhfX3N2ZydcclxuXHJcblx0bGV0IGh0bWxDb2RlID0gYFxyXG5cdFx0PGRpdiBjbGFzcz1cImdwdGhfX3N2Zy1pY29uXCI+XHJcblx0XHRcdDxpbWcgc3JjPVwiJHtncHRoVG9nZ2xlSW1nfVwiIGFsdD1cImdwdGgtdG9nZ2xlXCIvPlxyXG5cdFx0PC9kaXY+XHJcblx0XHQ8ZGl2IGNsYXNzPVwiZ3B0aF9fb3B0aW9uc1wiPlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwiZ3B0aF9fdGhlbWVzXCI+XHJcblx0XHRcdFx0PGRpdiBjbGFzcz1cImdwdGhfX3RoZW1lcy1idG5zXCI+XHJcblx0XHRcdFx0XHQ8YnV0dG9uIGlkPVwibGlnaHRcIiBkYXRhLWdwdGgtdGhlbWU9XCJsaWdodFwiPuKYgO+4jzwvYnV0dG9uPlxyXG5cdFx0XHRcdFx0PGJ1dHRvbiBpZD1cImRhcmtcIiBkYXRhLWdwdGgtdGhlbWU9XCJkYXJrXCI+8J+MmTwvYnV0dG9uPlxyXG5cdFx0XHRcdFx0PGJ1dHRvbiBpZD1cIm9sZWRcIiBkYXRhLWdwdGgtdGhlbWU9XCJibGFja1wiPvCfjJY8L2J1dHRvbj5cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHQ8L2Rpdj5cclxuXHRgXHJcblxyXG5cdC8vIGdwdGhGbG9hdGluZ0J0bi5pbm5lckhUTUwgPSBodG1sQ29kZVxyXG5cdGdwdGhGbG9hdGluZ0J0bi5pbnNlcnRBZGphY2VudEhUTUwoJ2JlZm9yZWVuZCcsIGh0bWxDb2RlKVxyXG5cdGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZ3B0aEZsb2F0aW5nQnRuKVxyXG59XHJcblxyXG4vKiBmdW5jdGlvbiBhcHBseVRoZW1lKHRoZW1lKSB7XHJcblx0bGV0IGh0bWxUYWcgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRcclxuXHJcblx0Ly8gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsYXNzTmFtZSA9IHRoZW1lID09PSAnb2xlZCcgPyAnb2xlZCBkYXJrJyA6IHRoZW1lXHJcblx0aWYgKHRoZW1lID09PSAnb2xlZCcpIHtcclxuXHRcdGh0bWxUYWcuZGF0YXNldC5ncHRoZW1lID0gdGhlbWVcclxuXHRcdGh0bWxUYWcuc3R5bGUuY29sb3JTY2hlbWUgPSAnZGFyaydcclxuXHRcdGh0bWxUYWcuY2xhc3NOYW1lID0gJ2RhcmsnXHJcblx0fSBlbHNlIHtcclxuXHRcdGh0bWxUYWcuc3R5bGUuY29sb3JTY2hlbWUgPSB0aGVtZVxyXG5cdFx0aHRtbFRhZy5jbGFzc05hbWUgPSB0aGVtZVxyXG5cdFx0aHRtbFRhZy5oYXNBdHRyaWJ1dGUoJ2RhdGEtZ3B0aGVtZScpICYmIGh0bWxUYWcucmVtb3ZlQXR0cmlidXRlKCdkYXRhLWdwdGhlbWUnKVxyXG5cdH1cclxufVxyXG4gKi9cclxuZnVuY3Rpb24gYXBwbHlUaGVtZSh0aGVtZSkge1xyXG5cdCRodG1sVGFnLmRhdGFzZXQuZ3B0aGVtZSA9IHRoZW1lXHJcblx0JGh0bWxUYWcuc3R5bGUuY29sb3JTY2hlbWUgPSB0aGVtZSA9PT0gJ29sZWQnID8gJ2RhcmsnIDogdGhlbWVcclxuXHQkaHRtbFRhZy5jbGFzc05hbWUgPSB0aGVtZSA9PT0gJ29sZWQnID8gJ2RhcmsnIDogdGhlbWVcclxuXHRpZiAodGhlbWUgIT09ICdvbGVkJykgJGh0bWxUYWcucmVtb3ZlQXR0cmlidXRlKCdkYXRhLWdwdGhlbWUnKVxyXG59XHJcblxyXG5mdW5jdGlvbiB0b2dnbGVPcHRpb25zKCkge1xyXG5cdGlzT3B0aW9uc1Nob3duID0gIWlzT3B0aW9uc1Nob3duXHJcblx0JG9wdGlvbnMuY2xhc3NMaXN0LnRvZ2dsZSgnZ3B0aC1vcHRpb25zLXNob3duJywgaXNPcHRpb25zU2hvd24pXHJcblxyXG5cdGlmIChpc09wdGlvbnNTaG93bikgZG9jdW1lbnQuYm9keS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGhpZGVPcHRpb25zKVxyXG5cdGVsc2UgZG9jdW1lbnQuYm9keS5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIGhpZGVPcHRpb25zKVxyXG59XHJcblxyXG5mdW5jdGlvbiBoaWRlT3B0aW9ucyhldmVudCkge1xyXG5cdGlmICghJHN2Z0ljb24uY29udGFpbnMoZXZlbnQudGFyZ2V0KSAmJiAhJG9wdGlvbnMuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xyXG5cdFx0dG9nZ2xlT3B0aW9ucygpXHJcblx0fVxyXG59XHJcblxyXG4vKiBmdW5jdGlvbiB0cmFja0h0bWxDbGFzc0NoYW5nZXMoKSB7XHJcblx0Ly8gU2VsZWN0IHRoZSB0YXJnZXQgZWxlbWVudFxyXG5cdGNvbnN0IHRhcmdldCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudFxyXG5cclxuXHQvLyBDcmVhdGUgYW4gb2JzZXJ2ZXIgaW5zdGFuY2VcclxuXHRjb25zdCBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uIChtdXRhdGlvbnMpIHtcclxuXHRcdG11dGF0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uIChtdXRhdGlvbikge1xyXG5cdFx0XHRpZiAobXV0YXRpb24udHlwZSA9PT0gJ2F0dHJpYnV0ZXMnICYmIG11dGF0aW9uLmF0dHJpYnV0ZU5hbWUgPT09ICdjbGFzcycpIHtcclxuXHRcdFx0XHQvLyBEbyBzb21ldGhpbmcgd2hlbiB0aGUgY2xhc3MgYXR0cmlidXRlIGNoYW5nZXNcclxuXHRcdFx0XHQvLyBjb25zb2xlLmxvZygnQ2xhc3MgYXR0cmlidXRlIGhhcyBjaGFuZ2VkJylcclxuXHRcdFx0XHQvLyBhbGVydCgnQ2xhc3MgYXR0cmlidXRlIGhhcyBjaGFuZ2VkJylcclxuXHRcdFx0XHQvLyBhbGVydCh0YXJnZXQuY2xhc3NOYW1lKVxyXG5cdFx0XHRcdGJyb3dzZXIuc3RvcmFnZS5zeW5jLnNldCh7IGdwdGhlbWU6IHRhcmdldC5jbGFzc05hbWUgfSlcclxuXHRcdFx0XHRhcHBseVRoZW1lKHRhcmdldC5jbGFzc05hbWUpXHJcblx0XHRcdH1cclxuXHRcdH0pXHJcblx0fSlcclxuXHJcblx0Ly8gQ29uZmlndXJhdGlvbiBvZiB0aGUgb2JzZXJ2ZXI6XHJcblx0Y29uc3QgY29uZmlnID0geyBhdHRyaWJ1dGVzOiB0cnVlLCBhdHRyaWJ1dGVGaWx0ZXI6IFsnY2xhc3MnXSB9XHJcblxyXG5cdC8vIFBhc3MgaW4gdGhlIHRhcmdldCBub2RlLCBhcyB3ZWxsIGFzIHRoZSBvYnNlcnZlciBvcHRpb25zXHJcblx0b2JzZXJ2ZXIub2JzZXJ2ZSh0YXJnZXQsIGNvbmZpZylcclxufSAqL1xyXG4iLCIvKiB3ZWJleHRlbnNpb24tcG9seWZpbGwgLSB2MC4xMC4wIC0gRnJpIEF1ZyAxMiAyMDIyIDE5OjQyOjQ0ICovXG4vKiAtKi0gTW9kZTogaW5kZW50LXRhYnMtbW9kZTogbmlsOyBqcy1pbmRlbnQtbGV2ZWw6IDIgLSotICovXG4vKiB2aW06IHNldCBzdHM9MiBzdz0yIGV0IHR3PTgwOiAqL1xuLyogVGhpcyBTb3VyY2UgQ29kZSBGb3JtIGlzIHN1YmplY3QgdG8gdGhlIHRlcm1zIG9mIHRoZSBNb3ppbGxhIFB1YmxpY1xuICogTGljZW5zZSwgdi4gMi4wLiBJZiBhIGNvcHkgb2YgdGhlIE1QTCB3YXMgbm90IGRpc3RyaWJ1dGVkIHdpdGggdGhpc1xuICogZmlsZSwgWW91IGNhbiBvYnRhaW4gb25lIGF0IGh0dHA6Ly9tb3ppbGxhLm9yZy9NUEwvMi4wLy4gKi9cblwidXNlIHN0cmljdFwiO1xuXG5pZiAoIWdsb2JhbFRoaXMuY2hyb21lPy5ydW50aW1lPy5pZCkge1xuICB0aHJvdyBuZXcgRXJyb3IoXCJUaGlzIHNjcmlwdCBzaG91bGQgb25seSBiZSBsb2FkZWQgaW4gYSBicm93c2VyIGV4dGVuc2lvbi5cIik7XG59XG5cbmlmICh0eXBlb2YgZ2xvYmFsVGhpcy5icm93c2VyID09PSBcInVuZGVmaW5lZFwiIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZihnbG9iYWxUaGlzLmJyb3dzZXIpICE9PSBPYmplY3QucHJvdG90eXBlKSB7XG4gIGNvbnN0IENIUk9NRV9TRU5EX01FU1NBR0VfQ0FMTEJBQ0tfTk9fUkVTUE9OU0VfTUVTU0FHRSA9IFwiVGhlIG1lc3NhZ2UgcG9ydCBjbG9zZWQgYmVmb3JlIGEgcmVzcG9uc2Ugd2FzIHJlY2VpdmVkLlwiO1xuXG4gIC8vIFdyYXBwaW5nIHRoZSBidWxrIG9mIHRoaXMgcG9seWZpbGwgaW4gYSBvbmUtdGltZS11c2UgZnVuY3Rpb24gaXMgYSBtaW5vclxuICAvLyBvcHRpbWl6YXRpb24gZm9yIEZpcmVmb3guIFNpbmNlIFNwaWRlcm1vbmtleSBkb2VzIG5vdCBmdWxseSBwYXJzZSB0aGVcbiAgLy8gY29udGVudHMgb2YgYSBmdW5jdGlvbiB1bnRpbCB0aGUgZmlyc3QgdGltZSBpdCdzIGNhbGxlZCwgYW5kIHNpbmNlIGl0IHdpbGxcbiAgLy8gbmV2ZXIgYWN0dWFsbHkgbmVlZCB0byBiZSBjYWxsZWQsIHRoaXMgYWxsb3dzIHRoZSBwb2x5ZmlsbCB0byBiZSBpbmNsdWRlZFxuICAvLyBpbiBGaXJlZm94IG5lYXJseSBmb3IgZnJlZS5cbiAgY29uc3Qgd3JhcEFQSXMgPSBleHRlbnNpb25BUElzID0+IHtcbiAgICAvLyBOT1RFOiBhcGlNZXRhZGF0YSBpcyBhc3NvY2lhdGVkIHRvIHRoZSBjb250ZW50IG9mIHRoZSBhcGktbWV0YWRhdGEuanNvbiBmaWxlXG4gICAgLy8gYXQgYnVpbGQgdGltZSBieSByZXBsYWNpbmcgdGhlIGZvbGxvd2luZyBcImluY2x1ZGVcIiB3aXRoIHRoZSBjb250ZW50IG9mIHRoZVxuICAgIC8vIEpTT04gZmlsZS5cbiAgICBjb25zdCBhcGlNZXRhZGF0YSA9IHtcbiAgICAgIFwiYWxhcm1zXCI6IHtcbiAgICAgICAgXCJjbGVhclwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgfSxcbiAgICAgICAgXCJjbGVhckFsbFwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDBcbiAgICAgICAgfSxcbiAgICAgICAgXCJnZXRcIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgIH0sXG4gICAgICAgIFwiZ2V0QWxsXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMFxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgXCJib29rbWFya3NcIjoge1xuICAgICAgICBcImNyZWF0ZVwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgfSxcbiAgICAgICAgXCJnZXRcIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgIH0sXG4gICAgICAgIFwiZ2V0Q2hpbGRyZW5cIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgIH0sXG4gICAgICAgIFwiZ2V0UmVjZW50XCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICB9LFxuICAgICAgICBcImdldFN1YlRyZWVcIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgIH0sXG4gICAgICAgIFwiZ2V0VHJlZVwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDBcbiAgICAgICAgfSxcbiAgICAgICAgXCJtb3ZlXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMixcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMlxuICAgICAgICB9LFxuICAgICAgICBcInJlbW92ZVwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgfSxcbiAgICAgICAgXCJyZW1vdmVUcmVlXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICB9LFxuICAgICAgICBcInNlYXJjaFwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgfSxcbiAgICAgICAgXCJ1cGRhdGVcIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAyLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAyXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBcImJyb3dzZXJBY3Rpb25cIjoge1xuICAgICAgICBcImRpc2FibGVcIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAxLFxuICAgICAgICAgIFwiZmFsbGJhY2tUb05vQ2FsbGJhY2tcIjogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBcImVuYWJsZVwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDEsXG4gICAgICAgICAgXCJmYWxsYmFja1RvTm9DYWxsYmFja1wiOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwiZ2V0QmFkZ2VCYWNrZ3JvdW5kQ29sb3JcIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgIH0sXG4gICAgICAgIFwiZ2V0QmFkZ2VUZXh0XCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICB9LFxuICAgICAgICBcImdldFBvcHVwXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICB9LFxuICAgICAgICBcImdldFRpdGxlXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICB9LFxuICAgICAgICBcIm9wZW5Qb3B1cFwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDBcbiAgICAgICAgfSxcbiAgICAgICAgXCJzZXRCYWRnZUJhY2tncm91bmRDb2xvclwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDEsXG4gICAgICAgICAgXCJmYWxsYmFja1RvTm9DYWxsYmFja1wiOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwic2V0QmFkZ2VUZXh0XCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMSxcbiAgICAgICAgICBcImZhbGxiYWNrVG9Ob0NhbGxiYWNrXCI6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCJzZXRJY29uXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICB9LFxuICAgICAgICBcInNldFBvcHVwXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMSxcbiAgICAgICAgICBcImZhbGxiYWNrVG9Ob0NhbGxiYWNrXCI6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCJzZXRUaXRsZVwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDEsXG4gICAgICAgICAgXCJmYWxsYmFja1RvTm9DYWxsYmFja1wiOiB0cnVlXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBcImJyb3dzaW5nRGF0YVwiOiB7XG4gICAgICAgIFwicmVtb3ZlXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMixcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMlxuICAgICAgICB9LFxuICAgICAgICBcInJlbW92ZUNhY2hlXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICB9LFxuICAgICAgICBcInJlbW92ZUNvb2tpZXNcIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgIH0sXG4gICAgICAgIFwicmVtb3ZlRG93bmxvYWRzXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICB9LFxuICAgICAgICBcInJlbW92ZUZvcm1EYXRhXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICB9LFxuICAgICAgICBcInJlbW92ZUhpc3RvcnlcIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgIH0sXG4gICAgICAgIFwicmVtb3ZlTG9jYWxTdG9yYWdlXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICB9LFxuICAgICAgICBcInJlbW92ZVBhc3N3b3Jkc1wiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgfSxcbiAgICAgICAgXCJyZW1vdmVQbHVnaW5EYXRhXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICB9LFxuICAgICAgICBcInNldHRpbmdzXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMFxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgXCJjb21tYW5kc1wiOiB7XG4gICAgICAgIFwiZ2V0QWxsXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMFxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgXCJjb250ZXh0TWVudXNcIjoge1xuICAgICAgICBcInJlbW92ZVwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgfSxcbiAgICAgICAgXCJyZW1vdmVBbGxcIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgIH0sXG4gICAgICAgIFwidXBkYXRlXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMixcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMlxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgXCJjb29raWVzXCI6IHtcbiAgICAgICAgXCJnZXRcIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgIH0sXG4gICAgICAgIFwiZ2V0QWxsXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICB9LFxuICAgICAgICBcImdldEFsbENvb2tpZVN0b3Jlc1wiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDBcbiAgICAgICAgfSxcbiAgICAgICAgXCJyZW1vdmVcIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgIH0sXG4gICAgICAgIFwic2V0XCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgXCJkZXZ0b29sc1wiOiB7XG4gICAgICAgIFwiaW5zcGVjdGVkV2luZG93XCI6IHtcbiAgICAgICAgICBcImV2YWxcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMixcbiAgICAgICAgICAgIFwic2luZ2xlQ2FsbGJhY2tBcmdcIjogZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFwicGFuZWxzXCI6IHtcbiAgICAgICAgICBcImNyZWF0ZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMyxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAzLFxuICAgICAgICAgICAgXCJzaW5nbGVDYWxsYmFja0FyZ1wiOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImVsZW1lbnRzXCI6IHtcbiAgICAgICAgICAgIFwiY3JlYXRlU2lkZWJhclBhbmVcIjoge1xuICAgICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBcImRvd25sb2Fkc1wiOiB7XG4gICAgICAgIFwiY2FuY2VsXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICB9LFxuICAgICAgICBcImRvd25sb2FkXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICB9LFxuICAgICAgICBcImVyYXNlXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICB9LFxuICAgICAgICBcImdldEZpbGVJY29uXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMlxuICAgICAgICB9LFxuICAgICAgICBcIm9wZW5cIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAxLFxuICAgICAgICAgIFwiZmFsbGJhY2tUb05vQ2FsbGJhY2tcIjogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBcInBhdXNlXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICB9LFxuICAgICAgICBcInJlbW92ZUZpbGVcIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgIH0sXG4gICAgICAgIFwicmVzdW1lXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICB9LFxuICAgICAgICBcInNlYXJjaFwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgfSxcbiAgICAgICAgXCJzaG93XCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMSxcbiAgICAgICAgICBcImZhbGxiYWNrVG9Ob0NhbGxiYWNrXCI6IHRydWVcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFwiZXh0ZW5zaW9uXCI6IHtcbiAgICAgICAgXCJpc0FsbG93ZWRGaWxlU2NoZW1lQWNjZXNzXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMFxuICAgICAgICB9LFxuICAgICAgICBcImlzQWxsb3dlZEluY29nbml0b0FjY2Vzc1wiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDBcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFwiaGlzdG9yeVwiOiB7XG4gICAgICAgIFwiYWRkVXJsXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICB9LFxuICAgICAgICBcImRlbGV0ZUFsbFwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDBcbiAgICAgICAgfSxcbiAgICAgICAgXCJkZWxldGVSYW5nZVwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgfSxcbiAgICAgICAgXCJkZWxldGVVcmxcIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgIH0sXG4gICAgICAgIFwiZ2V0VmlzaXRzXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICB9LFxuICAgICAgICBcInNlYXJjaFwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFwiaTE4blwiOiB7XG4gICAgICAgIFwiZGV0ZWN0TGFuZ3VhZ2VcIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgIH0sXG4gICAgICAgIFwiZ2V0QWNjZXB0TGFuZ3VhZ2VzXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMFxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgXCJpZGVudGl0eVwiOiB7XG4gICAgICAgIFwibGF1bmNoV2ViQXV0aEZsb3dcIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBcImlkbGVcIjoge1xuICAgICAgICBcInF1ZXJ5U3RhdGVcIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBcIm1hbmFnZW1lbnRcIjoge1xuICAgICAgICBcImdldFwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgfSxcbiAgICAgICAgXCJnZXRBbGxcIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgIH0sXG4gICAgICAgIFwiZ2V0U2VsZlwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDBcbiAgICAgICAgfSxcbiAgICAgICAgXCJzZXRFbmFibGVkXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMixcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMlxuICAgICAgICB9LFxuICAgICAgICBcInVuaW5zdGFsbFNlbGZcIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBcIm5vdGlmaWNhdGlvbnNcIjoge1xuICAgICAgICBcImNsZWFyXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICB9LFxuICAgICAgICBcImNyZWF0ZVwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDJcbiAgICAgICAgfSxcbiAgICAgICAgXCJnZXRBbGxcIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgIH0sXG4gICAgICAgIFwiZ2V0UGVybWlzc2lvbkxldmVsXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMFxuICAgICAgICB9LFxuICAgICAgICBcInVwZGF0ZVwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDIsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDJcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFwicGFnZUFjdGlvblwiOiB7XG4gICAgICAgIFwiZ2V0UG9wdXBcIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgIH0sXG4gICAgICAgIFwiZ2V0VGl0bGVcIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgIH0sXG4gICAgICAgIFwiaGlkZVwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDEsXG4gICAgICAgICAgXCJmYWxsYmFja1RvTm9DYWxsYmFja1wiOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwic2V0SWNvblwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgfSxcbiAgICAgICAgXCJzZXRQb3B1cFwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDEsXG4gICAgICAgICAgXCJmYWxsYmFja1RvTm9DYWxsYmFja1wiOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwic2V0VGl0bGVcIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAxLFxuICAgICAgICAgIFwiZmFsbGJhY2tUb05vQ2FsbGJhY2tcIjogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBcInNob3dcIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAxLFxuICAgICAgICAgIFwiZmFsbGJhY2tUb05vQ2FsbGJhY2tcIjogdHJ1ZVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgXCJwZXJtaXNzaW9uc1wiOiB7XG4gICAgICAgIFwiY29udGFpbnNcIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgIH0sXG4gICAgICAgIFwiZ2V0QWxsXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMFxuICAgICAgICB9LFxuICAgICAgICBcInJlbW92ZVwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgfSxcbiAgICAgICAgXCJyZXF1ZXN0XCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgXCJydW50aW1lXCI6IHtcbiAgICAgICAgXCJnZXRCYWNrZ3JvdW5kUGFnZVwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDBcbiAgICAgICAgfSxcbiAgICAgICAgXCJnZXRQbGF0Zm9ybUluZm9cIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgIH0sXG4gICAgICAgIFwib3Blbk9wdGlvbnNQYWdlXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMFxuICAgICAgICB9LFxuICAgICAgICBcInJlcXVlc3RVcGRhdGVDaGVja1wiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDBcbiAgICAgICAgfSxcbiAgICAgICAgXCJzZW5kTWVzc2FnZVwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDNcbiAgICAgICAgfSxcbiAgICAgICAgXCJzZW5kTmF0aXZlTWVzc2FnZVwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDIsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDJcbiAgICAgICAgfSxcbiAgICAgICAgXCJzZXRVbmluc3RhbGxVUkxcIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBcInNlc3Npb25zXCI6IHtcbiAgICAgICAgXCJnZXREZXZpY2VzXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICB9LFxuICAgICAgICBcImdldFJlY2VudGx5Q2xvc2VkXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICB9LFxuICAgICAgICBcInJlc3RvcmVcIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBcInN0b3JhZ2VcIjoge1xuICAgICAgICBcImxvY2FsXCI6IHtcbiAgICAgICAgICBcImNsZWFyXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDBcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZ2V0XCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZ2V0Qnl0ZXNJblVzZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInJlbW92ZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInNldFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcIm1hbmFnZWRcIjoge1xuICAgICAgICAgIFwiZ2V0XCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZ2V0Qnl0ZXNJblVzZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcInN5bmNcIjoge1xuICAgICAgICAgIFwiY2xlYXJcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMFxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJnZXRcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJnZXRCeXRlc0luVXNlXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwicmVtb3ZlXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwic2V0XCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBcInRhYnNcIjoge1xuICAgICAgICBcImNhcHR1cmVWaXNpYmxlVGFiXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMlxuICAgICAgICB9LFxuICAgICAgICBcImNyZWF0ZVwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgfSxcbiAgICAgICAgXCJkZXRlY3RMYW5ndWFnZVwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgfSxcbiAgICAgICAgXCJkaXNjYXJkXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICB9LFxuICAgICAgICBcImR1cGxpY2F0ZVwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgfSxcbiAgICAgICAgXCJleGVjdXRlU2NyaXB0XCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMlxuICAgICAgICB9LFxuICAgICAgICBcImdldFwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgfSxcbiAgICAgICAgXCJnZXRDdXJyZW50XCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMFxuICAgICAgICB9LFxuICAgICAgICBcImdldFpvb21cIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgIH0sXG4gICAgICAgIFwiZ2V0Wm9vbVNldHRpbmdzXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICB9LFxuICAgICAgICBcImdvQmFja1wiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgfSxcbiAgICAgICAgXCJnb0ZvcndhcmRcIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgIH0sXG4gICAgICAgIFwiaGlnaGxpZ2h0XCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICB9LFxuICAgICAgICBcImluc2VydENTU1wiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtb3ZlXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMixcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMlxuICAgICAgICB9LFxuICAgICAgICBcInF1ZXJ5XCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICB9LFxuICAgICAgICBcInJlbG9hZFwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDJcbiAgICAgICAgfSxcbiAgICAgICAgXCJyZW1vdmVcIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgIH0sXG4gICAgICAgIFwicmVtb3ZlQ1NTXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMlxuICAgICAgICB9LFxuICAgICAgICBcInNlbmRNZXNzYWdlXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMixcbiAgICAgICAgICBcIm1heEFyZ3NcIjogM1xuICAgICAgICB9LFxuICAgICAgICBcInNldFpvb21cIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAyXG4gICAgICAgIH0sXG4gICAgICAgIFwic2V0Wm9vbVNldHRpbmdzXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMlxuICAgICAgICB9LFxuICAgICAgICBcInVwZGF0ZVwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDJcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFwidG9wU2l0ZXNcIjoge1xuICAgICAgICBcImdldFwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDBcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFwid2ViTmF2aWdhdGlvblwiOiB7XG4gICAgICAgIFwiZ2V0QWxsRnJhbWVzXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICB9LFxuICAgICAgICBcImdldEZyYW1lXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgXCJ3ZWJSZXF1ZXN0XCI6IHtcbiAgICAgICAgXCJoYW5kbGVyQmVoYXZpb3JDaGFuZ2VkXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMFxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgXCJ3aW5kb3dzXCI6IHtcbiAgICAgICAgXCJjcmVhdGVcIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgIH0sXG4gICAgICAgIFwiZ2V0XCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMlxuICAgICAgICB9LFxuICAgICAgICBcImdldEFsbFwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgfSxcbiAgICAgICAgXCJnZXRDdXJyZW50XCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICB9LFxuICAgICAgICBcImdldExhc3RGb2N1c2VkXCI6IHtcbiAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICB9LFxuICAgICAgICBcInJlbW92ZVwiOiB7XG4gICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgfSxcbiAgICAgICAgXCJ1cGRhdGVcIjoge1xuICAgICAgICAgIFwibWluQXJnc1wiOiAyLFxuICAgICAgICAgIFwibWF4QXJnc1wiOiAyXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgaWYgKE9iamVjdC5rZXlzKGFwaU1ldGFkYXRhKS5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcImFwaS1tZXRhZGF0YS5qc29uIGhhcyBub3QgYmVlbiBpbmNsdWRlZCBpbiBicm93c2VyLXBvbHlmaWxsXCIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgV2Vha01hcCBzdWJjbGFzcyB3aGljaCBjcmVhdGVzIGFuZCBzdG9yZXMgYSB2YWx1ZSBmb3IgYW55IGtleSB3aGljaCBkb2VzXG4gICAgICogbm90IGV4aXN0IHdoZW4gYWNjZXNzZWQsIGJ1dCBiZWhhdmVzIGV4YWN0bHkgYXMgYW4gb3JkaW5hcnkgV2Vha01hcFxuICAgICAqIG90aGVyd2lzZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IGNyZWF0ZUl0ZW1cbiAgICAgKiAgICAgICAgQSBmdW5jdGlvbiB3aGljaCB3aWxsIGJlIGNhbGxlZCBpbiBvcmRlciB0byBjcmVhdGUgdGhlIHZhbHVlIGZvciBhbnlcbiAgICAgKiAgICAgICAga2V5IHdoaWNoIGRvZXMgbm90IGV4aXN0LCB0aGUgZmlyc3QgdGltZSBpdCBpcyBhY2Nlc3NlZC4gVGhlXG4gICAgICogICAgICAgIGZ1bmN0aW9uIHJlY2VpdmVzLCBhcyBpdHMgb25seSBhcmd1bWVudCwgdGhlIGtleSBiZWluZyBjcmVhdGVkLlxuICAgICAqL1xuICAgIGNsYXNzIERlZmF1bHRXZWFrTWFwIGV4dGVuZHMgV2Vha01hcCB7XG4gICAgICBjb25zdHJ1Y3RvcihjcmVhdGVJdGVtLCBpdGVtcyA9IHVuZGVmaW5lZCkge1xuICAgICAgICBzdXBlcihpdGVtcyk7XG4gICAgICAgIHRoaXMuY3JlYXRlSXRlbSA9IGNyZWF0ZUl0ZW07XG4gICAgICB9XG5cbiAgICAgIGdldChrZXkpIHtcbiAgICAgICAgaWYgKCF0aGlzLmhhcyhrZXkpKSB7XG4gICAgICAgICAgdGhpcy5zZXQoa2V5LCB0aGlzLmNyZWF0ZUl0ZW0oa2V5KSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc3VwZXIuZ2V0KGtleSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBvYmplY3QgaXMgYW4gb2JqZWN0IHdpdGggYSBgdGhlbmAgbWV0aG9kLCBhbmQgY2FuXG4gICAgICogdGhlcmVmb3JlIGJlIGFzc3VtZWQgdG8gYmVoYXZlIGFzIGEgUHJvbWlzZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHRlc3QuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdGhlIHZhbHVlIGlzIHRoZW5hYmxlLlxuICAgICAqL1xuICAgIGNvbnN0IGlzVGhlbmFibGUgPSB2YWx1ZSA9PiB7XG4gICAgICByZXR1cm4gdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiB2YWx1ZS50aGVuID09PSBcImZ1bmN0aW9uXCI7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW5kIHJldHVybnMgYSBmdW5jdGlvbiB3aGljaCwgd2hlbiBjYWxsZWQsIHdpbGwgcmVzb2x2ZSBvciByZWplY3RcbiAgICAgKiB0aGUgZ2l2ZW4gcHJvbWlzZSBiYXNlZCBvbiBob3cgaXQgaXMgY2FsbGVkOlxuICAgICAqXG4gICAgICogLSBJZiwgd2hlbiBjYWxsZWQsIGBjaHJvbWUucnVudGltZS5sYXN0RXJyb3JgIGNvbnRhaW5zIGEgbm9uLW51bGwgb2JqZWN0LFxuICAgICAqICAgdGhlIHByb21pc2UgaXMgcmVqZWN0ZWQgd2l0aCB0aGF0IHZhbHVlLlxuICAgICAqIC0gSWYgdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIGV4YWN0bHkgb25lIGFyZ3VtZW50LCB0aGUgcHJvbWlzZSBpc1xuICAgICAqICAgcmVzb2x2ZWQgdG8gdGhhdCB2YWx1ZS5cbiAgICAgKiAtIE90aGVyd2lzZSwgdGhlIHByb21pc2UgaXMgcmVzb2x2ZWQgdG8gYW4gYXJyYXkgY29udGFpbmluZyBhbGwgb2YgdGhlXG4gICAgICogICBmdW5jdGlvbidzIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBwcm9taXNlXG4gICAgICogICAgICAgIEFuIG9iamVjdCBjb250YWluaW5nIHRoZSByZXNvbHV0aW9uIGFuZCByZWplY3Rpb24gZnVuY3Rpb25zIG9mIGFcbiAgICAgKiAgICAgICAgcHJvbWlzZS5cbiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBwcm9taXNlLnJlc29sdmVcbiAgICAgKiAgICAgICAgVGhlIHByb21pc2UncyByZXNvbHV0aW9uIGZ1bmN0aW9uLlxuICAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IHByb21pc2UucmVqZWN0XG4gICAgICogICAgICAgIFRoZSBwcm9taXNlJ3MgcmVqZWN0aW9uIGZ1bmN0aW9uLlxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBtZXRhZGF0YVxuICAgICAqICAgICAgICBNZXRhZGF0YSBhYm91dCB0aGUgd3JhcHBlZCBtZXRob2Qgd2hpY2ggaGFzIGNyZWF0ZWQgdGhlIGNhbGxiYWNrLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gbWV0YWRhdGEuc2luZ2xlQ2FsbGJhY2tBcmdcbiAgICAgKiAgICAgICAgV2hldGhlciBvciBub3QgdGhlIHByb21pc2UgaXMgcmVzb2x2ZWQgd2l0aCBvbmx5IHRoZSBmaXJzdFxuICAgICAqICAgICAgICBhcmd1bWVudCBvZiB0aGUgY2FsbGJhY2ssIGFsdGVybmF0aXZlbHkgYW4gYXJyYXkgb2YgYWxsIHRoZVxuICAgICAqICAgICAgICBjYWxsYmFjayBhcmd1bWVudHMgaXMgcmVzb2x2ZWQuIEJ5IGRlZmF1bHQsIGlmIHRoZSBjYWxsYmFja1xuICAgICAqICAgICAgICBmdW5jdGlvbiBpcyBpbnZva2VkIHdpdGggb25seSBhIHNpbmdsZSBhcmd1bWVudCwgdGhhdCB3aWxsIGJlXG4gICAgICogICAgICAgIHJlc29sdmVkIHRvIHRoZSBwcm9taXNlLCB3aGlsZSBhbGwgYXJndW1lbnRzIHdpbGwgYmUgcmVzb2x2ZWQgYXNcbiAgICAgKiAgICAgICAgYW4gYXJyYXkgaWYgbXVsdGlwbGUgYXJlIGdpdmVuLlxuICAgICAqXG4gICAgICogQHJldHVybnMge2Z1bmN0aW9ufVxuICAgICAqICAgICAgICBUaGUgZ2VuZXJhdGVkIGNhbGxiYWNrIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGNvbnN0IG1ha2VDYWxsYmFjayA9IChwcm9taXNlLCBtZXRhZGF0YSkgPT4ge1xuICAgICAgcmV0dXJuICguLi5jYWxsYmFja0FyZ3MpID0+IHtcbiAgICAgICAgaWYgKGV4dGVuc2lvbkFQSXMucnVudGltZS5sYXN0RXJyb3IpIHtcbiAgICAgICAgICBwcm9taXNlLnJlamVjdChuZXcgRXJyb3IoZXh0ZW5zaW9uQVBJcy5ydW50aW1lLmxhc3RFcnJvci5tZXNzYWdlKSk7XG4gICAgICAgIH0gZWxzZSBpZiAobWV0YWRhdGEuc2luZ2xlQ2FsbGJhY2tBcmcgfHxcbiAgICAgICAgICAgICAgICAgICAoY2FsbGJhY2tBcmdzLmxlbmd0aCA8PSAxICYmIG1ldGFkYXRhLnNpbmdsZUNhbGxiYWNrQXJnICE9PSBmYWxzZSkpIHtcbiAgICAgICAgICBwcm9taXNlLnJlc29sdmUoY2FsbGJhY2tBcmdzWzBdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwcm9taXNlLnJlc29sdmUoY2FsbGJhY2tBcmdzKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9O1xuXG4gICAgY29uc3QgcGx1cmFsaXplQXJndW1lbnRzID0gKG51bUFyZ3MpID0+IG51bUFyZ3MgPT0gMSA/IFwiYXJndW1lbnRcIiA6IFwiYXJndW1lbnRzXCI7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgd3JhcHBlciBmdW5jdGlvbiBmb3IgYSBtZXRob2Qgd2l0aCB0aGUgZ2l2ZW4gbmFtZSBhbmQgbWV0YWRhdGEuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICAgICAqICAgICAgICBUaGUgbmFtZSBvZiB0aGUgbWV0aG9kIHdoaWNoIGlzIGJlaW5nIHdyYXBwZWQuXG4gICAgICogQHBhcmFtIHtvYmplY3R9IG1ldGFkYXRhXG4gICAgICogICAgICAgIE1ldGFkYXRhIGFib3V0IHRoZSBtZXRob2QgYmVpbmcgd3JhcHBlZC5cbiAgICAgKiBAcGFyYW0ge2ludGVnZXJ9IG1ldGFkYXRhLm1pbkFyZ3NcbiAgICAgKiAgICAgICAgVGhlIG1pbmltdW0gbnVtYmVyIG9mIGFyZ3VtZW50cyB3aGljaCBtdXN0IGJlIHBhc3NlZCB0byB0aGVcbiAgICAgKiAgICAgICAgZnVuY3Rpb24uIElmIGNhbGxlZCB3aXRoIGZld2VyIHRoYW4gdGhpcyBudW1iZXIgb2YgYXJndW1lbnRzLCB0aGVcbiAgICAgKiAgICAgICAgd3JhcHBlciB3aWxsIHJhaXNlIGFuIGV4Y2VwdGlvbi5cbiAgICAgKiBAcGFyYW0ge2ludGVnZXJ9IG1ldGFkYXRhLm1heEFyZ3NcbiAgICAgKiAgICAgICAgVGhlIG1heGltdW0gbnVtYmVyIG9mIGFyZ3VtZW50cyB3aGljaCBtYXkgYmUgcGFzc2VkIHRvIHRoZVxuICAgICAqICAgICAgICBmdW5jdGlvbi4gSWYgY2FsbGVkIHdpdGggbW9yZSB0aGFuIHRoaXMgbnVtYmVyIG9mIGFyZ3VtZW50cywgdGhlXG4gICAgICogICAgICAgIHdyYXBwZXIgd2lsbCByYWlzZSBhbiBleGNlcHRpb24uXG4gICAgICogQHBhcmFtIHtib29sZWFufSBtZXRhZGF0YS5zaW5nbGVDYWxsYmFja0FyZ1xuICAgICAqICAgICAgICBXaGV0aGVyIG9yIG5vdCB0aGUgcHJvbWlzZSBpcyByZXNvbHZlZCB3aXRoIG9ubHkgdGhlIGZpcnN0XG4gICAgICogICAgICAgIGFyZ3VtZW50IG9mIHRoZSBjYWxsYmFjaywgYWx0ZXJuYXRpdmVseSBhbiBhcnJheSBvZiBhbGwgdGhlXG4gICAgICogICAgICAgIGNhbGxiYWNrIGFyZ3VtZW50cyBpcyByZXNvbHZlZC4gQnkgZGVmYXVsdCwgaWYgdGhlIGNhbGxiYWNrXG4gICAgICogICAgICAgIGZ1bmN0aW9uIGlzIGludm9rZWQgd2l0aCBvbmx5IGEgc2luZ2xlIGFyZ3VtZW50LCB0aGF0IHdpbGwgYmVcbiAgICAgKiAgICAgICAgcmVzb2x2ZWQgdG8gdGhlIHByb21pc2UsIHdoaWxlIGFsbCBhcmd1bWVudHMgd2lsbCBiZSByZXNvbHZlZCBhc1xuICAgICAqICAgICAgICBhbiBhcnJheSBpZiBtdWx0aXBsZSBhcmUgZ2l2ZW4uXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB7ZnVuY3Rpb24ob2JqZWN0LCAuLi4qKX1cbiAgICAgKiAgICAgICBUaGUgZ2VuZXJhdGVkIHdyYXBwZXIgZnVuY3Rpb24uXG4gICAgICovXG4gICAgY29uc3Qgd3JhcEFzeW5jRnVuY3Rpb24gPSAobmFtZSwgbWV0YWRhdGEpID0+IHtcbiAgICAgIHJldHVybiBmdW5jdGlvbiBhc3luY0Z1bmN0aW9uV3JhcHBlcih0YXJnZXQsIC4uLmFyZ3MpIHtcbiAgICAgICAgaWYgKGFyZ3MubGVuZ3RoIDwgbWV0YWRhdGEubWluQXJncykge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgYXQgbGVhc3QgJHttZXRhZGF0YS5taW5BcmdzfSAke3BsdXJhbGl6ZUFyZ3VtZW50cyhtZXRhZGF0YS5taW5BcmdzKX0gZm9yICR7bmFtZX0oKSwgZ290ICR7YXJncy5sZW5ndGh9YCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYXJncy5sZW5ndGggPiBtZXRhZGF0YS5tYXhBcmdzKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBhdCBtb3N0ICR7bWV0YWRhdGEubWF4QXJnc30gJHtwbHVyYWxpemVBcmd1bWVudHMobWV0YWRhdGEubWF4QXJncyl9IGZvciAke25hbWV9KCksIGdvdCAke2FyZ3MubGVuZ3RofWApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICBpZiAobWV0YWRhdGEuZmFsbGJhY2tUb05vQ2FsbGJhY2spIHtcbiAgICAgICAgICAgIC8vIFRoaXMgQVBJIG1ldGhvZCBoYXMgY3VycmVudGx5IG5vIGNhbGxiYWNrIG9uIENocm9tZSwgYnV0IGl0IHJldHVybiBhIHByb21pc2Ugb24gRmlyZWZveCxcbiAgICAgICAgICAgIC8vIGFuZCBzbyB0aGUgcG9seWZpbGwgd2lsbCB0cnkgdG8gY2FsbCBpdCB3aXRoIGEgY2FsbGJhY2sgZmlyc3QsIGFuZCBpdCB3aWxsIGZhbGxiYWNrXG4gICAgICAgICAgICAvLyB0byBub3QgcGFzc2luZyB0aGUgY2FsbGJhY2sgaWYgdGhlIGZpcnN0IGNhbGwgZmFpbHMuXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICB0YXJnZXRbbmFtZV0oLi4uYXJncywgbWFrZUNhbGxiYWNrKHtyZXNvbHZlLCByZWplY3R9LCBtZXRhZGF0YSkpO1xuICAgICAgICAgICAgfSBjYXRjaCAoY2JFcnJvcikge1xuICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYCR7bmFtZX0gQVBJIG1ldGhvZCBkb2Vzbid0IHNlZW0gdG8gc3VwcG9ydCB0aGUgY2FsbGJhY2sgcGFyYW1ldGVyLCBgICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZmFsbGluZyBiYWNrIHRvIGNhbGwgaXQgd2l0aG91dCBhIGNhbGxiYWNrOiBcIiwgY2JFcnJvcik7XG5cbiAgICAgICAgICAgICAgdGFyZ2V0W25hbWVdKC4uLmFyZ3MpO1xuXG4gICAgICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgQVBJIG1ldGhvZCBtZXRhZGF0YSwgc28gdGhhdCB0aGUgbmV4dCBBUEkgY2FsbHMgd2lsbCBub3QgdHJ5IHRvXG4gICAgICAgICAgICAgIC8vIHVzZSB0aGUgdW5zdXBwb3J0ZWQgY2FsbGJhY2sgYW55bW9yZS5cbiAgICAgICAgICAgICAgbWV0YWRhdGEuZmFsbGJhY2tUb05vQ2FsbGJhY2sgPSBmYWxzZTtcbiAgICAgICAgICAgICAgbWV0YWRhdGEubm9DYWxsYmFjayA9IHRydWU7XG5cbiAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAobWV0YWRhdGEubm9DYWxsYmFjaykge1xuICAgICAgICAgICAgdGFyZ2V0W25hbWVdKC4uLmFyZ3MpO1xuICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0YXJnZXRbbmFtZV0oLi4uYXJncywgbWFrZUNhbGxiYWNrKHtyZXNvbHZlLCByZWplY3R9LCBtZXRhZGF0YSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBXcmFwcyBhbiBleGlzdGluZyBtZXRob2Qgb2YgdGhlIHRhcmdldCBvYmplY3QsIHNvIHRoYXQgY2FsbHMgdG8gaXQgYXJlXG4gICAgICogaW50ZXJjZXB0ZWQgYnkgdGhlIGdpdmVuIHdyYXBwZXIgZnVuY3Rpb24uIFRoZSB3cmFwcGVyIGZ1bmN0aW9uIHJlY2VpdmVzLFxuICAgICAqIGFzIGl0cyBmaXJzdCBhcmd1bWVudCwgdGhlIG9yaWdpbmFsIGB0YXJnZXRgIG9iamVjdCwgZm9sbG93ZWQgYnkgZWFjaCBvZlxuICAgICAqIHRoZSBhcmd1bWVudHMgcGFzc2VkIHRvIHRoZSBvcmlnaW5hbCBtZXRob2QuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gdGFyZ2V0XG4gICAgICogICAgICAgIFRoZSBvcmlnaW5hbCB0YXJnZXQgb2JqZWN0IHRoYXQgdGhlIHdyYXBwZWQgbWV0aG9kIGJlbG9uZ3MgdG8uXG4gICAgICogQHBhcmFtIHtmdW5jdGlvbn0gbWV0aG9kXG4gICAgICogICAgICAgIFRoZSBtZXRob2QgYmVpbmcgd3JhcHBlZC4gVGhpcyBpcyB1c2VkIGFzIHRoZSB0YXJnZXQgb2YgdGhlIFByb3h5XG4gICAgICogICAgICAgIG9iamVjdCB3aGljaCBpcyBjcmVhdGVkIHRvIHdyYXAgdGhlIG1ldGhvZC5cbiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSB3cmFwcGVyXG4gICAgICogICAgICAgIFRoZSB3cmFwcGVyIGZ1bmN0aW9uIHdoaWNoIGlzIGNhbGxlZCBpbiBwbGFjZSBvZiBhIGRpcmVjdCBpbnZvY2F0aW9uXG4gICAgICogICAgICAgIG9mIHRoZSB3cmFwcGVkIG1ldGhvZC5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHtQcm94eTxmdW5jdGlvbj59XG4gICAgICogICAgICAgIEEgUHJveHkgb2JqZWN0IGZvciB0aGUgZ2l2ZW4gbWV0aG9kLCB3aGljaCBpbnZva2VzIHRoZSBnaXZlbiB3cmFwcGVyXG4gICAgICogICAgICAgIG1ldGhvZCBpbiBpdHMgcGxhY2UuXG4gICAgICovXG4gICAgY29uc3Qgd3JhcE1ldGhvZCA9ICh0YXJnZXQsIG1ldGhvZCwgd3JhcHBlcikgPT4ge1xuICAgICAgcmV0dXJuIG5ldyBQcm94eShtZXRob2QsIHtcbiAgICAgICAgYXBwbHkodGFyZ2V0TWV0aG9kLCB0aGlzT2JqLCBhcmdzKSB7XG4gICAgICAgICAgcmV0dXJuIHdyYXBwZXIuY2FsbCh0aGlzT2JqLCB0YXJnZXQsIC4uLmFyZ3MpO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfTtcblxuICAgIGxldCBoYXNPd25Qcm9wZXJ0eSA9IEZ1bmN0aW9uLmNhbGwuYmluZChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5KTtcblxuICAgIC8qKlxuICAgICAqIFdyYXBzIGFuIG9iamVjdCBpbiBhIFByb3h5IHdoaWNoIGludGVyY2VwdHMgYW5kIHdyYXBzIGNlcnRhaW4gbWV0aG9kc1xuICAgICAqIGJhc2VkIG9uIHRoZSBnaXZlbiBgd3JhcHBlcnNgIGFuZCBgbWV0YWRhdGFgIG9iamVjdHMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gdGFyZ2V0XG4gICAgICogICAgICAgIFRoZSB0YXJnZXQgb2JqZWN0IHRvIHdyYXAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gW3dyYXBwZXJzID0ge31dXG4gICAgICogICAgICAgIEFuIG9iamVjdCB0cmVlIGNvbnRhaW5pbmcgd3JhcHBlciBmdW5jdGlvbnMgZm9yIHNwZWNpYWwgY2FzZXMuIEFueVxuICAgICAqICAgICAgICBmdW5jdGlvbiBwcmVzZW50IGluIHRoaXMgb2JqZWN0IHRyZWUgaXMgY2FsbGVkIGluIHBsYWNlIG9mIHRoZVxuICAgICAqICAgICAgICBtZXRob2QgaW4gdGhlIHNhbWUgbG9jYXRpb24gaW4gdGhlIGB0YXJnZXRgIG9iamVjdCB0cmVlLiBUaGVzZVxuICAgICAqICAgICAgICB3cmFwcGVyIG1ldGhvZHMgYXJlIGludm9rZWQgYXMgZGVzY3JpYmVkIGluIHtAc2VlIHdyYXBNZXRob2R9LlxuICAgICAqXG4gICAgICogQHBhcmFtIHtvYmplY3R9IFttZXRhZGF0YSA9IHt9XVxuICAgICAqICAgICAgICBBbiBvYmplY3QgdHJlZSBjb250YWluaW5nIG1ldGFkYXRhIHVzZWQgdG8gYXV0b21hdGljYWxseSBnZW5lcmF0ZVxuICAgICAqICAgICAgICBQcm9taXNlLWJhc2VkIHdyYXBwZXIgZnVuY3Rpb25zIGZvciBhc3luY2hyb25vdXMuIEFueSBmdW5jdGlvbiBpblxuICAgICAqICAgICAgICB0aGUgYHRhcmdldGAgb2JqZWN0IHRyZWUgd2hpY2ggaGFzIGEgY29ycmVzcG9uZGluZyBtZXRhZGF0YSBvYmplY3RcbiAgICAgKiAgICAgICAgaW4gdGhlIHNhbWUgbG9jYXRpb24gaW4gdGhlIGBtZXRhZGF0YWAgdHJlZSBpcyByZXBsYWNlZCB3aXRoIGFuXG4gICAgICogICAgICAgIGF1dG9tYXRpY2FsbHktZ2VuZXJhdGVkIHdyYXBwZXIgZnVuY3Rpb24sIGFzIGRlc2NyaWJlZCBpblxuICAgICAqICAgICAgICB7QHNlZSB3cmFwQXN5bmNGdW5jdGlvbn1cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHtQcm94eTxvYmplY3Q+fVxuICAgICAqL1xuICAgIGNvbnN0IHdyYXBPYmplY3QgPSAodGFyZ2V0LCB3cmFwcGVycyA9IHt9LCBtZXRhZGF0YSA9IHt9KSA9PiB7XG4gICAgICBsZXQgY2FjaGUgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgbGV0IGhhbmRsZXJzID0ge1xuICAgICAgICBoYXMocHJveHlUYXJnZXQsIHByb3ApIHtcbiAgICAgICAgICByZXR1cm4gcHJvcCBpbiB0YXJnZXQgfHwgcHJvcCBpbiBjYWNoZTtcbiAgICAgICAgfSxcblxuICAgICAgICBnZXQocHJveHlUYXJnZXQsIHByb3AsIHJlY2VpdmVyKSB7XG4gICAgICAgICAgaWYgKHByb3AgaW4gY2FjaGUpIHtcbiAgICAgICAgICAgIHJldHVybiBjYWNoZVtwcm9wXTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoIShwcm9wIGluIHRhcmdldCkpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbGV0IHZhbHVlID0gdGFyZ2V0W3Byb3BdO1xuXG4gICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAvLyBUaGlzIGlzIGEgbWV0aG9kIG9uIHRoZSB1bmRlcmx5aW5nIG9iamVjdC4gQ2hlY2sgaWYgd2UgbmVlZCB0byBkb1xuICAgICAgICAgICAgLy8gYW55IHdyYXBwaW5nLlxuXG4gICAgICAgICAgICBpZiAodHlwZW9mIHdyYXBwZXJzW3Byb3BdID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgLy8gV2UgaGF2ZSBhIHNwZWNpYWwtY2FzZSB3cmFwcGVyIGZvciB0aGlzIG1ldGhvZC5cbiAgICAgICAgICAgICAgdmFsdWUgPSB3cmFwTWV0aG9kKHRhcmdldCwgdGFyZ2V0W3Byb3BdLCB3cmFwcGVyc1twcm9wXSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhhc093blByb3BlcnR5KG1ldGFkYXRhLCBwcm9wKSkge1xuICAgICAgICAgICAgICAvLyBUaGlzIGlzIGFuIGFzeW5jIG1ldGhvZCB0aGF0IHdlIGhhdmUgbWV0YWRhdGEgZm9yLiBDcmVhdGUgYVxuICAgICAgICAgICAgICAvLyBQcm9taXNlIHdyYXBwZXIgZm9yIGl0LlxuICAgICAgICAgICAgICBsZXQgd3JhcHBlciA9IHdyYXBBc3luY0Z1bmN0aW9uKHByb3AsIG1ldGFkYXRhW3Byb3BdKTtcbiAgICAgICAgICAgICAgdmFsdWUgPSB3cmFwTWV0aG9kKHRhcmdldCwgdGFyZ2V0W3Byb3BdLCB3cmFwcGVyKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIC8vIFRoaXMgaXMgYSBtZXRob2QgdGhhdCB3ZSBkb24ndCBrbm93IG9yIGNhcmUgYWJvdXQuIFJldHVybiB0aGVcbiAgICAgICAgICAgICAgLy8gb3JpZ2luYWwgbWV0aG9kLCBib3VuZCB0byB0aGUgdW5kZXJseWluZyBvYmplY3QuXG4gICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUuYmluZCh0YXJnZXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmIHZhbHVlICE9PSBudWxsICYmXG4gICAgICAgICAgICAgICAgICAgICAoaGFzT3duUHJvcGVydHkod3JhcHBlcnMsIHByb3ApIHx8XG4gICAgICAgICAgICAgICAgICAgICAgaGFzT3duUHJvcGVydHkobWV0YWRhdGEsIHByb3ApKSkge1xuICAgICAgICAgICAgLy8gVGhpcyBpcyBhbiBvYmplY3QgdGhhdCB3ZSBuZWVkIHRvIGRvIHNvbWUgd3JhcHBpbmcgZm9yIHRoZSBjaGlsZHJlblxuICAgICAgICAgICAgLy8gb2YuIENyZWF0ZSBhIHN1Yi1vYmplY3Qgd3JhcHBlciBmb3IgaXQgd2l0aCB0aGUgYXBwcm9wcmlhdGUgY2hpbGRcbiAgICAgICAgICAgIC8vIG1ldGFkYXRhLlxuICAgICAgICAgICAgdmFsdWUgPSB3cmFwT2JqZWN0KHZhbHVlLCB3cmFwcGVyc1twcm9wXSwgbWV0YWRhdGFbcHJvcF0pO1xuICAgICAgICAgIH0gZWxzZSBpZiAoaGFzT3duUHJvcGVydHkobWV0YWRhdGEsIFwiKlwiKSkge1xuICAgICAgICAgICAgLy8gV3JhcCBhbGwgcHJvcGVydGllcyBpbiAqIG5hbWVzcGFjZS5cbiAgICAgICAgICAgIHZhbHVlID0gd3JhcE9iamVjdCh2YWx1ZSwgd3JhcHBlcnNbcHJvcF0sIG1ldGFkYXRhW1wiKlwiXSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gZG8gYW55IHdyYXBwaW5nIGZvciB0aGlzIHByb3BlcnR5LFxuICAgICAgICAgICAgLy8gc28ganVzdCBmb3J3YXJkIGFsbCBhY2Nlc3MgdG8gdGhlIHVuZGVybHlpbmcgb2JqZWN0LlxuICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNhY2hlLCBwcm9wLCB7XG4gICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgZ2V0KCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0YXJnZXRbcHJvcF07XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHNldCh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHRhcmdldFtwcm9wXSA9IHZhbHVlO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYWNoZVtwcm9wXSA9IHZhbHVlO1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfSxcblxuICAgICAgICBzZXQocHJveHlUYXJnZXQsIHByb3AsIHZhbHVlLCByZWNlaXZlcikge1xuICAgICAgICAgIGlmIChwcm9wIGluIGNhY2hlKSB7XG4gICAgICAgICAgICBjYWNoZVtwcm9wXSA9IHZhbHVlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0YXJnZXRbcHJvcF0gPSB2YWx1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZGVmaW5lUHJvcGVydHkocHJveHlUYXJnZXQsIHByb3AsIGRlc2MpIHtcbiAgICAgICAgICByZXR1cm4gUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShjYWNoZSwgcHJvcCwgZGVzYyk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZGVsZXRlUHJvcGVydHkocHJveHlUYXJnZXQsIHByb3ApIHtcbiAgICAgICAgICByZXR1cm4gUmVmbGVjdC5kZWxldGVQcm9wZXJ0eShjYWNoZSwgcHJvcCk7XG4gICAgICAgIH0sXG4gICAgICB9O1xuXG4gICAgICAvLyBQZXIgY29udHJhY3Qgb2YgdGhlIFByb3h5IEFQSSwgdGhlIFwiZ2V0XCIgcHJveHkgaGFuZGxlciBtdXN0IHJldHVybiB0aGVcbiAgICAgIC8vIG9yaWdpbmFsIHZhbHVlIG9mIHRoZSB0YXJnZXQgaWYgdGhhdCB2YWx1ZSBpcyBkZWNsYXJlZCByZWFkLW9ubHkgYW5kXG4gICAgICAvLyBub24tY29uZmlndXJhYmxlLiBGb3IgdGhpcyByZWFzb24sIHdlIGNyZWF0ZSBhbiBvYmplY3Qgd2l0aCB0aGVcbiAgICAgIC8vIHByb3RvdHlwZSBzZXQgdG8gYHRhcmdldGAgaW5zdGVhZCBvZiB1c2luZyBgdGFyZ2V0YCBkaXJlY3RseS5cbiAgICAgIC8vIE90aGVyd2lzZSB3ZSBjYW5ub3QgcmV0dXJuIGEgY3VzdG9tIG9iamVjdCBmb3IgQVBJcyB0aGF0XG4gICAgICAvLyBhcmUgZGVjbGFyZWQgcmVhZC1vbmx5IGFuZCBub24tY29uZmlndXJhYmxlLCBzdWNoIGFzIGBjaHJvbWUuZGV2dG9vbHNgLlxuICAgICAgLy9cbiAgICAgIC8vIFRoZSBwcm94eSBoYW5kbGVycyB0aGVtc2VsdmVzIHdpbGwgc3RpbGwgdXNlIHRoZSBvcmlnaW5hbCBgdGFyZ2V0YFxuICAgICAgLy8gaW5zdGVhZCBvZiB0aGUgYHByb3h5VGFyZ2V0YCwgc28gdGhhdCB0aGUgbWV0aG9kcyBhbmQgcHJvcGVydGllcyBhcmVcbiAgICAgIC8vIGRlcmVmZXJlbmNlZCB2aWEgdGhlIG9yaWdpbmFsIHRhcmdldHMuXG4gICAgICBsZXQgcHJveHlUYXJnZXQgPSBPYmplY3QuY3JlYXRlKHRhcmdldCk7XG4gICAgICByZXR1cm4gbmV3IFByb3h5KHByb3h5VGFyZ2V0LCBoYW5kbGVycyk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBzZXQgb2Ygd3JhcHBlciBmdW5jdGlvbnMgZm9yIGFuIGV2ZW50IG9iamVjdCwgd2hpY2ggaGFuZGxlc1xuICAgICAqIHdyYXBwaW5nIG9mIGxpc3RlbmVyIGZ1bmN0aW9ucyB0aGF0IHRob3NlIG1lc3NhZ2VzIGFyZSBwYXNzZWQuXG4gICAgICpcbiAgICAgKiBBIHNpbmdsZSB3cmFwcGVyIGlzIGNyZWF0ZWQgZm9yIGVhY2ggbGlzdGVuZXIgZnVuY3Rpb24sIGFuZCBzdG9yZWQgaW4gYVxuICAgICAqIG1hcC4gU3Vic2VxdWVudCBjYWxscyB0byBgYWRkTGlzdGVuZXJgLCBgaGFzTGlzdGVuZXJgLCBvciBgcmVtb3ZlTGlzdGVuZXJgXG4gICAgICogcmV0cmlldmUgdGhlIG9yaWdpbmFsIHdyYXBwZXIsIHNvIHRoYXQgIGF0dGVtcHRzIHRvIHJlbW92ZSBhXG4gICAgICogcHJldmlvdXNseS1hZGRlZCBsaXN0ZW5lciB3b3JrIGFzIGV4cGVjdGVkLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtEZWZhdWx0V2Vha01hcDxmdW5jdGlvbiwgZnVuY3Rpb24+fSB3cmFwcGVyTWFwXG4gICAgICogICAgICAgIEEgRGVmYXVsdFdlYWtNYXAgb2JqZWN0IHdoaWNoIHdpbGwgY3JlYXRlIHRoZSBhcHByb3ByaWF0ZSB3cmFwcGVyXG4gICAgICogICAgICAgIGZvciBhIGdpdmVuIGxpc3RlbmVyIGZ1bmN0aW9uIHdoZW4gb25lIGRvZXMgbm90IGV4aXN0LCBhbmQgcmV0cmlldmVcbiAgICAgKiAgICAgICAgYW4gZXhpc3Rpbmcgb25lIHdoZW4gaXQgZG9lcy5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHtvYmplY3R9XG4gICAgICovXG4gICAgY29uc3Qgd3JhcEV2ZW50ID0gd3JhcHBlck1hcCA9PiAoe1xuICAgICAgYWRkTGlzdGVuZXIodGFyZ2V0LCBsaXN0ZW5lciwgLi4uYXJncykge1xuICAgICAgICB0YXJnZXQuYWRkTGlzdGVuZXIod3JhcHBlck1hcC5nZXQobGlzdGVuZXIpLCAuLi5hcmdzKTtcbiAgICAgIH0sXG5cbiAgICAgIGhhc0xpc3RlbmVyKHRhcmdldCwgbGlzdGVuZXIpIHtcbiAgICAgICAgcmV0dXJuIHRhcmdldC5oYXNMaXN0ZW5lcih3cmFwcGVyTWFwLmdldChsaXN0ZW5lcikpO1xuICAgICAgfSxcblxuICAgICAgcmVtb3ZlTGlzdGVuZXIodGFyZ2V0LCBsaXN0ZW5lcikge1xuICAgICAgICB0YXJnZXQucmVtb3ZlTGlzdGVuZXIod3JhcHBlck1hcC5nZXQobGlzdGVuZXIpKTtcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBjb25zdCBvblJlcXVlc3RGaW5pc2hlZFdyYXBwZXJzID0gbmV3IERlZmF1bHRXZWFrTWFwKGxpc3RlbmVyID0+IHtcbiAgICAgIGlmICh0eXBlb2YgbGlzdGVuZXIgIT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICByZXR1cm4gbGlzdGVuZXI7XG4gICAgICB9XG5cbiAgICAgIC8qKlxuICAgICAgICogV3JhcHMgYW4gb25SZXF1ZXN0RmluaXNoZWQgbGlzdGVuZXIgZnVuY3Rpb24gc28gdGhhdCBpdCB3aWxsIHJldHVybiBhXG4gICAgICAgKiBgZ2V0Q29udGVudCgpYCBwcm9wZXJ0eSB3aGljaCByZXR1cm5zIGEgYFByb21pc2VgIHJhdGhlciB0aGFuIHVzaW5nIGFcbiAgICAgICAqIGNhbGxiYWNrIEFQSS5cbiAgICAgICAqXG4gICAgICAgKiBAcGFyYW0ge29iamVjdH0gcmVxXG4gICAgICAgKiAgICAgICAgVGhlIEhBUiBlbnRyeSBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBuZXR3b3JrIHJlcXVlc3QuXG4gICAgICAgKi9cbiAgICAgIHJldHVybiBmdW5jdGlvbiBvblJlcXVlc3RGaW5pc2hlZChyZXEpIHtcbiAgICAgICAgY29uc3Qgd3JhcHBlZFJlcSA9IHdyYXBPYmplY3QocmVxLCB7fSAvKiB3cmFwcGVycyAqLywge1xuICAgICAgICAgIGdldENvbnRlbnQ6IHtcbiAgICAgICAgICAgIG1pbkFyZ3M6IDAsXG4gICAgICAgICAgICBtYXhBcmdzOiAwLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgICBsaXN0ZW5lcih3cmFwcGVkUmVxKTtcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICBjb25zdCBvbk1lc3NhZ2VXcmFwcGVycyA9IG5ldyBEZWZhdWx0V2Vha01hcChsaXN0ZW5lciA9PiB7XG4gICAgICBpZiAodHlwZW9mIGxpc3RlbmVyICE9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgcmV0dXJuIGxpc3RlbmVyO1xuICAgICAgfVxuXG4gICAgICAvKipcbiAgICAgICAqIFdyYXBzIGEgbWVzc2FnZSBsaXN0ZW5lciBmdW5jdGlvbiBzbyB0aGF0IGl0IG1heSBzZW5kIHJlc3BvbnNlcyBiYXNlZCBvblxuICAgICAgICogaXRzIHJldHVybiB2YWx1ZSwgcmF0aGVyIHRoYW4gYnkgcmV0dXJuaW5nIGEgc2VudGluZWwgdmFsdWUgYW5kIGNhbGxpbmcgYVxuICAgICAgICogY2FsbGJhY2suIElmIHRoZSBsaXN0ZW5lciBmdW5jdGlvbiByZXR1cm5zIGEgUHJvbWlzZSwgdGhlIHJlc3BvbnNlIGlzXG4gICAgICAgKiBzZW50IHdoZW4gdGhlIHByb21pc2UgZWl0aGVyIHJlc29sdmVzIG9yIHJlamVjdHMuXG4gICAgICAgKlxuICAgICAgICogQHBhcmFtIHsqfSBtZXNzYWdlXG4gICAgICAgKiAgICAgICAgVGhlIG1lc3NhZ2Ugc2VudCBieSB0aGUgb3RoZXIgZW5kIG9mIHRoZSBjaGFubmVsLlxuICAgICAgICogQHBhcmFtIHtvYmplY3R9IHNlbmRlclxuICAgICAgICogICAgICAgIERldGFpbHMgYWJvdXQgdGhlIHNlbmRlciBvZiB0aGUgbWVzc2FnZS5cbiAgICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oKil9IHNlbmRSZXNwb25zZVxuICAgICAgICogICAgICAgIEEgY2FsbGJhY2sgd2hpY2gsIHdoZW4gY2FsbGVkIHdpdGggYW4gYXJiaXRyYXJ5IGFyZ3VtZW50LCBzZW5kc1xuICAgICAgICogICAgICAgIHRoYXQgdmFsdWUgYXMgYSByZXNwb25zZS5cbiAgICAgICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgICAgICogICAgICAgIFRydWUgaWYgdGhlIHdyYXBwZWQgbGlzdGVuZXIgcmV0dXJuZWQgYSBQcm9taXNlLCB3aGljaCB3aWxsIGxhdGVyXG4gICAgICAgKiAgICAgICAgeWllbGQgYSByZXNwb25zZS4gRmFsc2Ugb3RoZXJ3aXNlLlxuICAgICAgICovXG4gICAgICByZXR1cm4gZnVuY3Rpb24gb25NZXNzYWdlKG1lc3NhZ2UsIHNlbmRlciwgc2VuZFJlc3BvbnNlKSB7XG4gICAgICAgIGxldCBkaWRDYWxsU2VuZFJlc3BvbnNlID0gZmFsc2U7XG5cbiAgICAgICAgbGV0IHdyYXBwZWRTZW5kUmVzcG9uc2U7XG4gICAgICAgIGxldCBzZW5kUmVzcG9uc2VQcm9taXNlID0gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgICAgICAgd3JhcHBlZFNlbmRSZXNwb25zZSA9IGZ1bmN0aW9uKHJlc3BvbnNlKSB7XG4gICAgICAgICAgICBkaWRDYWxsU2VuZFJlc3BvbnNlID0gdHJ1ZTtcbiAgICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UpO1xuICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGxldCByZXN1bHQ7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmVzdWx0ID0gbGlzdGVuZXIobWVzc2FnZSwgc2VuZGVyLCB3cmFwcGVkU2VuZFJlc3BvbnNlKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgcmVzdWx0ID0gUHJvbWlzZS5yZWplY3QoZXJyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGlzUmVzdWx0VGhlbmFibGUgPSByZXN1bHQgIT09IHRydWUgJiYgaXNUaGVuYWJsZShyZXN1bHQpO1xuXG4gICAgICAgIC8vIElmIHRoZSBsaXN0ZW5lciBkaWRuJ3QgcmV0dXJuZWQgdHJ1ZSBvciBhIFByb21pc2UsIG9yIGNhbGxlZFxuICAgICAgICAvLyB3cmFwcGVkU2VuZFJlc3BvbnNlIHN5bmNocm9ub3VzbHksIHdlIGNhbiBleGl0IGVhcmxpZXJcbiAgICAgICAgLy8gYmVjYXVzZSB0aGVyZSB3aWxsIGJlIG5vIHJlc3BvbnNlIHNlbnQgZnJvbSB0aGlzIGxpc3RlbmVyLlxuICAgICAgICBpZiAocmVzdWx0ICE9PSB0cnVlICYmICFpc1Jlc3VsdFRoZW5hYmxlICYmICFkaWRDYWxsU2VuZFJlc3BvbnNlKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQSBzbWFsbCBoZWxwZXIgdG8gc2VuZCB0aGUgbWVzc2FnZSBpZiB0aGUgcHJvbWlzZSByZXNvbHZlc1xuICAgICAgICAvLyBhbmQgYW4gZXJyb3IgaWYgdGhlIHByb21pc2UgcmVqZWN0cyAoYSB3cmFwcGVkIHNlbmRNZXNzYWdlIGhhc1xuICAgICAgICAvLyB0byB0cmFuc2xhdGUgdGhlIG1lc3NhZ2UgaW50byBhIHJlc29sdmVkIHByb21pc2Ugb3IgYSByZWplY3RlZFxuICAgICAgICAvLyBwcm9taXNlKS5cbiAgICAgICAgY29uc3Qgc2VuZFByb21pc2VkUmVzdWx0ID0gKHByb21pc2UpID0+IHtcbiAgICAgICAgICBwcm9taXNlLnRoZW4obXNnID0+IHtcbiAgICAgICAgICAgIC8vIHNlbmQgdGhlIG1lc3NhZ2UgdmFsdWUuXG4gICAgICAgICAgICBzZW5kUmVzcG9uc2UobXNnKTtcbiAgICAgICAgICB9LCBlcnJvciA9PiB7XG4gICAgICAgICAgICAvLyBTZW5kIGEgSlNPTiByZXByZXNlbnRhdGlvbiBvZiB0aGUgZXJyb3IgaWYgdGhlIHJlamVjdGVkIHZhbHVlXG4gICAgICAgICAgICAvLyBpcyBhbiBpbnN0YW5jZSBvZiBlcnJvciwgb3IgdGhlIG9iamVjdCBpdHNlbGYgb3RoZXJ3aXNlLlxuICAgICAgICAgICAgbGV0IG1lc3NhZ2U7XG4gICAgICAgICAgICBpZiAoZXJyb3IgJiYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IgfHxcbiAgICAgICAgICAgICAgICB0eXBlb2YgZXJyb3IubWVzc2FnZSA9PT0gXCJzdHJpbmdcIikpIHtcbiAgICAgICAgICAgICAgbWVzc2FnZSA9IGVycm9yLm1lc3NhZ2U7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBtZXNzYWdlID0gXCJBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VycmVkXCI7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHNlbmRSZXNwb25zZSh7XG4gICAgICAgICAgICAgIF9fbW96V2ViRXh0ZW5zaW9uUG9seWZpbGxSZWplY3RfXzogdHJ1ZSxcbiAgICAgICAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgICAvLyBQcmludCBhbiBlcnJvciBvbiB0aGUgY29uc29sZSBpZiB1bmFibGUgdG8gc2VuZCB0aGUgcmVzcG9uc2UuXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiRmFpbGVkIHRvIHNlbmQgb25NZXNzYWdlIHJlamVjdGVkIHJlcGx5XCIsIGVycik7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gSWYgdGhlIGxpc3RlbmVyIHJldHVybmVkIGEgUHJvbWlzZSwgc2VuZCB0aGUgcmVzb2x2ZWQgdmFsdWUgYXMgYVxuICAgICAgICAvLyByZXN1bHQsIG90aGVyd2lzZSB3YWl0IHRoZSBwcm9taXNlIHJlbGF0ZWQgdG8gdGhlIHdyYXBwZWRTZW5kUmVzcG9uc2VcbiAgICAgICAgLy8gY2FsbGJhY2sgdG8gcmVzb2x2ZSBhbmQgc2VuZCBpdCBhcyBhIHJlc3BvbnNlLlxuICAgICAgICBpZiAoaXNSZXN1bHRUaGVuYWJsZSkge1xuICAgICAgICAgIHNlbmRQcm9taXNlZFJlc3VsdChyZXN1bHQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNlbmRQcm9taXNlZFJlc3VsdChzZW5kUmVzcG9uc2VQcm9taXNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIExldCBDaHJvbWUga25vdyB0aGF0IHRoZSBsaXN0ZW5lciBpcyByZXBseWluZy5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgY29uc3Qgd3JhcHBlZFNlbmRNZXNzYWdlQ2FsbGJhY2sgPSAoe3JlamVjdCwgcmVzb2x2ZX0sIHJlcGx5KSA9PiB7XG4gICAgICBpZiAoZXh0ZW5zaW9uQVBJcy5ydW50aW1lLmxhc3RFcnJvcikge1xuICAgICAgICAvLyBEZXRlY3Qgd2hlbiBub25lIG9mIHRoZSBsaXN0ZW5lcnMgcmVwbGllZCB0byB0aGUgc2VuZE1lc3NhZ2UgY2FsbCBhbmQgcmVzb2x2ZVxuICAgICAgICAvLyB0aGUgcHJvbWlzZSB0byB1bmRlZmluZWQgYXMgaW4gRmlyZWZveC5cbiAgICAgICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9tb3ppbGxhL3dlYmV4dGVuc2lvbi1wb2x5ZmlsbC9pc3N1ZXMvMTMwXG4gICAgICAgIGlmIChleHRlbnNpb25BUElzLnJ1bnRpbWUubGFzdEVycm9yLm1lc3NhZ2UgPT09IENIUk9NRV9TRU5EX01FU1NBR0VfQ0FMTEJBQ0tfTk9fUkVTUE9OU0VfTUVTU0FHRSkge1xuICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZWplY3QobmV3IEVycm9yKGV4dGVuc2lvbkFQSXMucnVudGltZS5sYXN0RXJyb3IubWVzc2FnZSkpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHJlcGx5ICYmIHJlcGx5Ll9fbW96V2ViRXh0ZW5zaW9uUG9seWZpbGxSZWplY3RfXykge1xuICAgICAgICAvLyBDb252ZXJ0IGJhY2sgdGhlIEpTT04gcmVwcmVzZW50YXRpb24gb2YgdGhlIGVycm9yIGludG9cbiAgICAgICAgLy8gYW4gRXJyb3IgaW5zdGFuY2UuXG4gICAgICAgIHJlamVjdChuZXcgRXJyb3IocmVwbHkubWVzc2FnZSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzb2x2ZShyZXBseSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IHdyYXBwZWRTZW5kTWVzc2FnZSA9IChuYW1lLCBtZXRhZGF0YSwgYXBpTmFtZXNwYWNlT2JqLCAuLi5hcmdzKSA9PiB7XG4gICAgICBpZiAoYXJncy5sZW5ndGggPCBtZXRhZGF0YS5taW5BcmdzKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgYXQgbGVhc3QgJHttZXRhZGF0YS5taW5BcmdzfSAke3BsdXJhbGl6ZUFyZ3VtZW50cyhtZXRhZGF0YS5taW5BcmdzKX0gZm9yICR7bmFtZX0oKSwgZ290ICR7YXJncy5sZW5ndGh9YCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChhcmdzLmxlbmd0aCA+IG1ldGFkYXRhLm1heEFyZ3MpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBhdCBtb3N0ICR7bWV0YWRhdGEubWF4QXJnc30gJHtwbHVyYWxpemVBcmd1bWVudHMobWV0YWRhdGEubWF4QXJncyl9IGZvciAke25hbWV9KCksIGdvdCAke2FyZ3MubGVuZ3RofWApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBjb25zdCB3cmFwcGVkQ2IgPSB3cmFwcGVkU2VuZE1lc3NhZ2VDYWxsYmFjay5iaW5kKG51bGwsIHtyZXNvbHZlLCByZWplY3R9KTtcbiAgICAgICAgYXJncy5wdXNoKHdyYXBwZWRDYik7XG4gICAgICAgIGFwaU5hbWVzcGFjZU9iai5zZW5kTWVzc2FnZSguLi5hcmdzKTtcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICBjb25zdCBzdGF0aWNXcmFwcGVycyA9IHtcbiAgICAgIGRldnRvb2xzOiB7XG4gICAgICAgIG5ldHdvcms6IHtcbiAgICAgICAgICBvblJlcXVlc3RGaW5pc2hlZDogd3JhcEV2ZW50KG9uUmVxdWVzdEZpbmlzaGVkV3JhcHBlcnMpLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHJ1bnRpbWU6IHtcbiAgICAgICAgb25NZXNzYWdlOiB3cmFwRXZlbnQob25NZXNzYWdlV3JhcHBlcnMpLFxuICAgICAgICBvbk1lc3NhZ2VFeHRlcm5hbDogd3JhcEV2ZW50KG9uTWVzc2FnZVdyYXBwZXJzKSxcbiAgICAgICAgc2VuZE1lc3NhZ2U6IHdyYXBwZWRTZW5kTWVzc2FnZS5iaW5kKG51bGwsIFwic2VuZE1lc3NhZ2VcIiwge21pbkFyZ3M6IDEsIG1heEFyZ3M6IDN9KSxcbiAgICAgIH0sXG4gICAgICB0YWJzOiB7XG4gICAgICAgIHNlbmRNZXNzYWdlOiB3cmFwcGVkU2VuZE1lc3NhZ2UuYmluZChudWxsLCBcInNlbmRNZXNzYWdlXCIsIHttaW5BcmdzOiAyLCBtYXhBcmdzOiAzfSksXG4gICAgICB9LFxuICAgIH07XG4gICAgY29uc3Qgc2V0dGluZ01ldGFkYXRhID0ge1xuICAgICAgY2xlYXI6IHttaW5BcmdzOiAxLCBtYXhBcmdzOiAxfSxcbiAgICAgIGdldDoge21pbkFyZ3M6IDEsIG1heEFyZ3M6IDF9LFxuICAgICAgc2V0OiB7bWluQXJnczogMSwgbWF4QXJnczogMX0sXG4gICAgfTtcbiAgICBhcGlNZXRhZGF0YS5wcml2YWN5ID0ge1xuICAgICAgbmV0d29yazoge1wiKlwiOiBzZXR0aW5nTWV0YWRhdGF9LFxuICAgICAgc2VydmljZXM6IHtcIipcIjogc2V0dGluZ01ldGFkYXRhfSxcbiAgICAgIHdlYnNpdGVzOiB7XCIqXCI6IHNldHRpbmdNZXRhZGF0YX0sXG4gICAgfTtcblxuICAgIHJldHVybiB3cmFwT2JqZWN0KGV4dGVuc2lvbkFQSXMsIHN0YXRpY1dyYXBwZXJzLCBhcGlNZXRhZGF0YSk7XG4gIH07XG5cbiAgLy8gVGhlIGJ1aWxkIHByb2Nlc3MgYWRkcyBhIFVNRCB3cmFwcGVyIGFyb3VuZCB0aGlzIGZpbGUsIHdoaWNoIG1ha2VzIHRoZVxuICAvLyBgbW9kdWxlYCB2YXJpYWJsZSBhdmFpbGFibGUuXG4gIG1vZHVsZS5leHBvcnRzID0gd3JhcEFQSXMoY2hyb21lKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gZ2xvYmFsVGhpcy5icm93c2VyO1xufVxuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2hlbHBlcnMvYnVuZGxlLXVybCcpLmdldEJ1bmRsZVVSTCgnNVoyN20nKSArIFwiZ3B0aC10b2dnbGUtY2lyY2xlZC5kOTdjM2U3NS53ZWJwXCIgKyBcIj9cIiArIERhdGUubm93KCk7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBidW5kbGVVUkwgPSB7fTtcbmZ1bmN0aW9uIGdldEJ1bmRsZVVSTENhY2hlZChpZCkge1xuICB2YXIgdmFsdWUgPSBidW5kbGVVUkxbaWRdO1xuICBpZiAoIXZhbHVlKSB7XG4gICAgdmFsdWUgPSBnZXRCdW5kbGVVUkwoKTtcbiAgICBidW5kbGVVUkxbaWRdID0gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufVxuZnVuY3Rpb24gZ2V0QnVuZGxlVVJMKCkge1xuICB0cnkge1xuICAgIHRocm93IG5ldyBFcnJvcigpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB2YXIgbWF0Y2hlcyA9ICgnJyArIGVyci5zdGFjaykubWF0Y2goLyhodHRwcz98ZmlsZXxmdHB8KGNocm9tZXxtb3p8c2FmYXJpLXdlYiktZXh0ZW5zaW9uKTpcXC9cXC9bXilcXG5dKy9nKTtcbiAgICBpZiAobWF0Y2hlcykge1xuICAgICAgLy8gVGhlIGZpcnN0IHR3byBzdGFjayBmcmFtZXMgd2lsbCBiZSB0aGlzIGZ1bmN0aW9uIGFuZCBnZXRCdW5kbGVVUkxDYWNoZWQuXG4gICAgICAvLyBVc2UgdGhlIDNyZCBvbmUsIHdoaWNoIHdpbGwgYmUgYSBydW50aW1lIGluIHRoZSBvcmlnaW5hbCBidW5kbGUuXG4gICAgICByZXR1cm4gZ2V0QmFzZVVSTChtYXRjaGVzWzJdKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuICcvJztcbn1cbmZ1bmN0aW9uIGdldEJhc2VVUkwodXJsKSB7XG4gIHJldHVybiAoJycgKyB1cmwpLnJlcGxhY2UoL14oKD86aHR0cHM/fGZpbGV8ZnRwfChjaHJvbWV8bW96fHNhZmFyaS13ZWIpLWV4dGVuc2lvbik6XFwvXFwvLispXFwvW14vXSskLywgJyQxJykgKyAnLyc7XG59XG5cbi8vIFRPRE86IFJlcGxhY2UgdXNlcyB3aXRoIGBuZXcgVVJMKHVybCkub3JpZ2luYCB3aGVuIGllMTEgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZC5cbmZ1bmN0aW9uIGdldE9yaWdpbih1cmwpIHtcbiAgdmFyIG1hdGNoZXMgPSAoJycgKyB1cmwpLm1hdGNoKC8oaHR0cHM/fGZpbGV8ZnRwfChjaHJvbWV8bW96fHNhZmFyaS13ZWIpLWV4dGVuc2lvbik6XFwvXFwvW14vXSsvKTtcbiAgaWYgKCFtYXRjaGVzKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdPcmlnaW4gbm90IGZvdW5kJyk7XG4gIH1cbiAgcmV0dXJuIG1hdGNoZXNbMF07XG59XG5leHBvcnRzLmdldEJ1bmRsZVVSTCA9IGdldEJ1bmRsZVVSTENhY2hlZDtcbmV4cG9ydHMuZ2V0QmFzZVVSTCA9IGdldEJhc2VVUkw7XG5leHBvcnRzLmdldE9yaWdpbiA9IGdldE9yaWdpbjsiLCJleHBvcnRzLmludGVyb3BEZWZhdWx0ID0gZnVuY3Rpb24gKGEpIHtcbiAgcmV0dXJuIGEgJiYgYS5fX2VzTW9kdWxlID8gYSA6IHtkZWZhdWx0OiBhfTtcbn07XG5cbmV4cG9ydHMuZGVmaW5lSW50ZXJvcEZsYWcgPSBmdW5jdGlvbiAoYSkge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoYSwgJ19fZXNNb2R1bGUnLCB7dmFsdWU6IHRydWV9KTtcbn07XG5cbmV4cG9ydHMuZXhwb3J0QWxsID0gZnVuY3Rpb24gKHNvdXJjZSwgZGVzdCkge1xuICBPYmplY3Qua2V5cyhzb3VyY2UpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgIGlmIChcbiAgICAgIGtleSA9PT0gJ2RlZmF1bHQnIHx8XG4gICAgICBrZXkgPT09ICdfX2VzTW9kdWxlJyB8fFxuICAgICAgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGRlc3QsIGtleSlcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZGVzdCwga2V5LCB7XG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBzb3VyY2Vba2V5XTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH0pO1xuXG4gIHJldHVybiBkZXN0O1xufTtcblxuZXhwb3J0cy5leHBvcnQgPSBmdW5jdGlvbiAoZGVzdCwgZGVzdE5hbWUsIGdldCkge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZGVzdCwgZGVzdE5hbWUsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZ2V0LFxuICB9KTtcbn07XG4iXSwibmFtZXMiOlsiZ2xvYmFsVGhpcyIsImNocm9tZSIsInJ1bnRpbWUiLCJpZCIsIkVycm9yIiwiYnJvd3NlciIsIk9iamVjdCIsImdldFByb3RvdHlwZU9mIiwicHJvdG90eXBlIiwiQ0hST01FX1NFTkRfTUVTU0FHRV9DQUxMQkFDS19OT19SRVNQT05TRV9NRVNTQUdFIiwid3JhcEFQSXMiLCJleHRlbnNpb25BUElzIiwiYXBpTWV0YWRhdGEiLCJrZXlzIiwibGVuZ3RoIiwiRGVmYXVsdFdlYWtNYXAiLCJXZWFrTWFwIiwiY29uc3RydWN0b3IiLCJjcmVhdGVJdGVtIiwiaXRlbXMiLCJ1bmRlZmluZWQiLCJnZXQiLCJrZXkiLCJoYXMiLCJzZXQiLCJpc1RoZW5hYmxlIiwidmFsdWUiLCJ0aGVuIiwibWFrZUNhbGxiYWNrIiwicHJvbWlzZSIsIm1ldGFkYXRhIiwiY2FsbGJhY2tBcmdzIiwibGFzdEVycm9yIiwicmVqZWN0IiwibWVzc2FnZSIsInNpbmdsZUNhbGxiYWNrQXJnIiwicmVzb2x2ZSIsInBsdXJhbGl6ZUFyZ3VtZW50cyIsIm51bUFyZ3MiLCJ3cmFwQXN5bmNGdW5jdGlvbiIsIm5hbWUiLCJhc3luY0Z1bmN0aW9uV3JhcHBlciIsInRhcmdldCIsImFyZ3MiLCJtaW5BcmdzIiwibWF4QXJncyIsIlByb21pc2UiLCJmYWxsYmFja1RvTm9DYWxsYmFjayIsImNiRXJyb3IiLCJjb25zb2xlIiwid2FybiIsIm5vQ2FsbGJhY2siLCJ3cmFwTWV0aG9kIiwibWV0aG9kIiwid3JhcHBlciIsIlByb3h5IiwiYXBwbHkiLCJ0YXJnZXRNZXRob2QiLCJ0aGlzT2JqIiwiY2FsbCIsImhhc093blByb3BlcnR5IiwiRnVuY3Rpb24iLCJiaW5kIiwid3JhcE9iamVjdCIsIndyYXBwZXJzIiwiY2FjaGUiLCJjcmVhdGUiLCJoYW5kbGVycyIsInByb3h5VGFyZ2V0IiwicHJvcCIsInJlY2VpdmVyIiwiZGVmaW5lUHJvcGVydHkiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwiZGVzYyIsIlJlZmxlY3QiLCJkZWxldGVQcm9wZXJ0eSIsIndyYXBFdmVudCIsIndyYXBwZXJNYXAiLCJhZGRMaXN0ZW5lciIsImxpc3RlbmVyIiwiaGFzTGlzdGVuZXIiLCJyZW1vdmVMaXN0ZW5lciIsIm9uUmVxdWVzdEZpbmlzaGVkV3JhcHBlcnMiLCJvblJlcXVlc3RGaW5pc2hlZCIsInJlcSIsIndyYXBwZWRSZXEiLCJnZXRDb250ZW50Iiwib25NZXNzYWdlV3JhcHBlcnMiLCJvbk1lc3NhZ2UiLCJzZW5kZXIiLCJzZW5kUmVzcG9uc2UiLCJkaWRDYWxsU2VuZFJlc3BvbnNlIiwid3JhcHBlZFNlbmRSZXNwb25zZSIsInNlbmRSZXNwb25zZVByb21pc2UiLCJyZXNwb25zZSIsInJlc3VsdCIsImVyciIsImlzUmVzdWx0VGhlbmFibGUiLCJzZW5kUHJvbWlzZWRSZXN1bHQiLCJtc2ciLCJlcnJvciIsIl9fbW96V2ViRXh0ZW5zaW9uUG9seWZpbGxSZWplY3RfXyIsImNhdGNoIiwid3JhcHBlZFNlbmRNZXNzYWdlQ2FsbGJhY2siLCJyZXBseSIsIndyYXBwZWRTZW5kTWVzc2FnZSIsImFwaU5hbWVzcGFjZU9iaiIsIndyYXBwZWRDYiIsInB1c2giLCJzZW5kTWVzc2FnZSIsInN0YXRpY1dyYXBwZXJzIiwiZGV2dG9vbHMiLCJuZXR3b3JrIiwib25NZXNzYWdlRXh0ZXJuYWwiLCJ0YWJzIiwic2V0dGluZ01ldGFkYXRhIiwiY2xlYXIiLCJwcml2YWN5Iiwic2VydmljZXMiLCJ3ZWJzaXRlcyIsIm1vZHVsZSIsImV4cG9ydHMiXSwidmVyc2lvbiI6MywiZmlsZSI6ImNvbnRlbnQuNGExODcyNmEuanMubWFwIn0= diff --git a/extension-dev/firefox-mv2/sass.faed8373.css b/extension-dev/firefox-mv2/sass.faed8373.css index 50de0be..b4c8fa6 100644 --- a/extension-dev/firefox-mv2/sass.faed8373.css +++ b/extension-dev/firefox-mv2/sass.faed8373.css @@ -232,20 +232,6 @@ html.dark[data-gptheme="oled"] { --box-shadow-textarea: inset 0px 0px 15px 1px hsla(var(--accent-hsl) / .05) !important; } -@keyframes animFadeInClipPathCircle { - 0% { - opacity: 0; - -webkit-clip-path: circle(0%); - clip-path: circle(0%); - } - - 100% { - opacity: 1; - -webkit-clip-path: circle(100%); - clip-path: circle(100%); - } -} - @keyframes animFadeInClipPath { 0% { opacity: 0; @@ -280,7 +266,7 @@ div[data-radix-popper-content-wrapper]:not(div[data-radix-popper-content-wrapper animation: .2s linear forwards animFadeInClipPath; } -.js-has-pseudo [csstools-has-31-2p-2x-32-w-2j-2s-2p-38-2p-19-38-2t-37-38-2x-2s-2m-1p-2r-33-32-3a-2t-36-37-2p-38-2x-33-32-19-38-39-36-32-19-2l-1m-2w-2p-37-14-38-2t-3c-38-2p-36-2t-2p-15-w-1a-2v-36-33-39-34-w-1a-38-2t-3c-38-19-2r-2t-32-38-2t-36-1a-31-38-19-1e-1a-2u-30-2t-3c-1a-2y-39-37-38-2x-2u-3d-19-2r-2t-32-38-2t-36]:not(.does-not-exist):not(.does-not-exist):not(.does-not-exist):not(.does-not-exist):not(.does-not-exist):not(does-not-exist):not(does-not-exist), .js-has-pseudo [csstools-has-31-2p-2x-32-w-2j-2s-2p-38-2p-19-38-2t-37-38-2x-2s-2m-1p-2r-33-32-3a-2t-36-37-2p-38-2x-33-32-19-38-39-36-32-19-2l-1m-2w-2p-37-14-38-2t-3c-38-2p-36-2t-2p-15-w-1a-2v-36-33-39-34-w-38-2t-3c-38-2p-36-2t-2p]:not(.does-not-exist):not(does-not-exist):not(does-not-exist):not(does-not-exist), [role="dialog"] [id*="-content-"], [role="dialog"], .js-has-pseudo [csstools-has-2s-2x-3a-2j-2s-2p-38-2p-19-36-2p-2s-2x-3c-19-34-33-34-34-2t-36-19-2r-33-32-38-2t-32-38-19-3b-36-2p-34-34-2t-36-2l-1m-2w-2p-37-14-2j-36-33-30-2t-1p-38-33-33-30-38-2x-34-2l-15]:not(.does-not-exist):not(does-not-exist), [role="dialog"] [id*="-content-"], [role="dialog"] { +.js-has-pseudo [csstools-has-31-2p-2x-32-w-2j-2s-2p-38-2p-19-38-2t-37-38-2x-2s-2m-1p-2r-33-32-3a-2t-36-37-2p-38-2x-33-32-19-38-39-36-32-19-2l-1m-2w-2p-37-14-38-2t-3c-38-2p-36-2t-2p-15-w-1a-2v-36-33-39-34-w-1a-38-2t-3c-38-19-2r-2t-32-38-2t-36-1a-31-38-19-1e-1a-2u-30-2t-3c-1a-2y-39-37-38-2x-2u-3d-19-2r-2t-32-38-2t-36]:not(.does-not-exist):not(.does-not-exist):not(.does-not-exist):not(.does-not-exist):not(.does-not-exist):not(does-not-exist):not(does-not-exist), .js-has-pseudo [csstools-has-31-2p-2x-32-w-2j-2s-2p-38-2p-19-38-2t-37-38-2x-2s-2m-1p-2r-33-32-3a-2t-36-37-2p-38-2x-33-32-19-38-39-36-32-19-2l-1m-2w-2p-37-14-38-2t-3c-38-2p-36-2t-2p-15-w-1a-2v-36-33-39-34-w-38-2t-3c-38-2p-36-2t-2p]:not(.does-not-exist):not(does-not-exist):not(does-not-exist):not(does-not-exist), [role="dialog"] [id*="-content-"], .js-has-pseudo [csstools-has-2s-2x-3a-2j-2s-2p-38-2p-19-36-2p-2s-2x-3c-19-34-33-34-34-2t-36-19-2r-33-32-38-2t-32-38-19-3b-36-2p-34-34-2t-36-2l-1m-2w-2p-37-14-2j-36-33-30-2t-1p-38-33-33-30-38-2x-34-2l-15]:not(.does-not-exist):not(does-not-exist), [role="dialog"] [id*="-content-"] { will-change: opacity; animation: .2s linear forwards animFadeIn; animation: animFadeIn var(--anim-duration, .2s) linear forwards; @@ -711,6 +697,18 @@ input[type="checkbox"]:checked { background-color: var(--c-accent) !important; } +button[role="radio"] { + border-color: var(--c-accent) !important; +} + +button[role="radio"][data-state="checked"] { + background-color: var(--c-accent); +} + +button[role="radio"] svg { + color: var(--c-on-accent) !important; +} + [role="menu"] { background-color: var(--c-bg-contextmenu) !important; border-radius: 1.27273rem !important; @@ -759,6 +757,14 @@ div[data-radix-popper-content-wrapper] { z-index: calc(var(--z-modal) + 50) !important; } +.js-has-pseudo [csstools-has-2s-2x-3a-2j-2s-2p-38-2p-19-36-2p-2s-2x-3c-19-34-33-34-34-2t-36-19-2r-33-32-38-2t-32-38-19-3b-36-2p-34-34-2t-36-2l-1m-2w-2p-37-14-2j-36-33-30-2t-1p-2s-2x-2p-30-33-2v-2l-15-w-2j-36-33-30-2t-1p-2s-2x-2p-30-33-2v-2l]:not(.does-not-exist):not(.does-not-exist):not(does-not-exist) { + --box-shadow: var(--box-shadow-contextmenu) !important; +} + +div[data-radix-popper-content-wrapper]:has([role="dialog"]) [role="dialog"] { + --box-shadow: var(--box-shadow-contextmenu) !important; +} + div[data-radix-popper-content-wrapper] [role="listbox"] { border: none; padding: .8rem !important; @@ -1316,7 +1322,6 @@ html.dark div[data-radix-popper-content-wrapper]:has([role="tooltip"]) [class*=" [role="dialog"] { box-shadow: var(--box-shadow); - --anim-duration: .28s; padding: 2rem !important; padding: var(--p-dialog) !important; background-color: var(--c-bg-dialog) !important; @@ -1359,20 +1364,20 @@ html.dark div[data-radix-popper-content-wrapper]:has([role="tooltip"]) [class*=" .js-has-pseudo [csstools-has-2j-36-33-30-2t-1p-2s-2x-2p-30-33-2v-2l-1m-2w-2p-37-14-2p-2j-2w-36-2t-2u-1p-y-2w-38-38-34-37-1m-1b-1b-33-34-2t-32-2p-2x-1a-2r-33-31-1b-2t-32-38-2t-36-34-36-2x-37-2t-y-2l-15]:not(.does-not-exist):not(does-not-exist) { max-width: max-content; + --popover-surface-primary: var(--c-bg-dialog) !important; + --main-surface-primary: transparent !important; border: none !important; padding: 0 !important; } [role="dialog"]:has(a[href="https://openai.com/enterprise"]) { max-width: max-content; + --popover-surface-primary: var(--c-bg-dialog) !important; + --main-surface-primary: transparent !important; border: none !important; padding: 0 !important; } -.js-has-pseudo [csstools-has-2j-36-33-30-2t-1p-2s-2x-2p-30-33-2v-2l-1m-2w-2p-37-14-2p-2j-2w-36-2t-2u-1p-y-2w-38-38-34-37-1m-1b-1b-33-34-2t-32-2p-2x-1a-2r-33-31-1b-2t-32-38-2t-36-34-36-2x-37-2t-y-2l-15-w-1a-2q-2v-19-3b-2w-2x-38-2t]:not(.does-not-exist):not(.does-not-exist):not(does-not-exist), .js-has-pseudo [csstools-has-2j-36-33-30-2t-1p-2s-2x-2p-30-33-2v-2l-1m-2w-2p-37-14-2p-2j-2w-36-2t-2u-1p-y-2w-38-38-34-37-1m-1b-1b-33-34-2t-32-2p-2x-1a-2r-33-31-1b-2t-32-38-2t-36-34-36-2x-37-2t-y-2l-15-w-1a-2q-2v-19-2v-36-2p-3d-19-1l-1c-1c]:not(.does-not-exist):not(.does-not-exist):not(does-not-exist), :is([role="dialog"]:has(a[href="https://openai.com/enterprise"]) .bg-white, [role="dialog"]:has(a[href="https://openai.com/enterprise"]) .bg-gray-900) { - background-color: var(--c-surface-2) !important; -} - .js-has-pseudo [csstools-has-2j-36-33-30-2t-1p-2s-2x-2p-30-33-2v-2l-1m-2w-2p-37-14-2p-2j-2w-36-2t-2u-1p-y-2w-38-38-34-37-1m-1b-1b-33-34-2t-32-2p-2x-1a-2r-33-31-1b-2t-32-38-2t-36-34-36-2x-37-2t-y-2l-15-w-1a-36-33-39-32-2s-2t-2s-19-31-2s]:not(.does-not-exist):not(.does-not-exist):not(does-not-exist) { border-radius: 2.55rem !important; border-radius: var(--br-chat-bubble) !important; @@ -1465,14 +1470,11 @@ html.dark div[data-radix-popper-content-wrapper]:has([role="tooltip"]) [class*=" } [role="dialog"] table { + --main-surface-primary: transparent !important; padding: .8rem !important; padding: var(--p-contextmenu) !important; } -[role="dialog"] table .bg-white, [role="dialog"] table .bg-gray-900 { - background-color: #0000 !important; -} - [role="dialog"] table th, [role="dialog"] table td { padding-top: 1rem !important; padding-top: var(--py-btn) !important; @@ -1525,6 +1527,30 @@ html.dark div[data-radix-popper-content-wrapper]:has([role="tooltip"]) [class*=" color: var(--c-subtext-1) !important; } +.js-has-pseudo [csstools-has-2j-36-33-30-2t-1p-2s-2x-2p-30-33-2v-2l-1m-2w-2p-37-14-2x-32-34-39-38-z-3b-33-36-2z-37-34-2p-2r-2t-19-32-2p-31-2t-15]:not(#does-not-exist):not(does-not-exist) { + --main-surface-primary: transparent !important; +} + +[role="dialog"]:has(input#workspace-name) { + --main-surface-primary: transparent !important; +} + +.js-has-pseudo [csstools-has-2j-36-33-30-2t-1p-2s-2x-2p-30-33-2v-2l-1m-2w-2p-37-14-2x-32-34-39-38-2j-32-2p-31-2t-1p-37-2t-2p-38-37-2l-15-w-2x-32-34-39-38-2j-32-2p-31-2t-1p-37-2t-2p-38-37-2l]:not(.does-not-exist):not(.does-not-exist):not(does-not-exist):not(does-not-exist) { + margin: 0 .8rem; + background-color: hsla(var(--accent-hsl) / .3) !important; + padding: .77rem !important; + padding: var(--p-btn) !important; + height: 100% !important; +} + +[role="dialog"]:has(input[name="seats"]) input[name="seats"] { + margin: 0 .8rem; + background-color: hsla(var(--accent-hsl) / .3) !important; + padding: .77rem !important; + padding: var(--p-btn) !important; + height: 100% !important; +} + main [role="presentation"], main [role="presentation"] .bg-token-main-surface-primary.h-full { background-color: var(--c-bg-chats-container) !important; } @@ -1562,7 +1588,7 @@ main [data-testid^="conversation-turn-"] .group div[class*="lg:w-[calc(100%-115p flex-grow: 1 !important; } -main [data-testid^="conversation-turn-"] .group .bg-gray-100, main [data-testid^="conversation-turn-"] .group [class*=":bg-gray-700"] { +.js-has-pseudo [csstools-has-31-2p-2x-32-w-2j-2s-2p-38-2p-19-38-2t-37-38-2x-2s-2m-1p-2r-33-32-3a-2t-36-37-2p-38-2x-33-32-19-38-39-36-32-19-2l-w-1a-2v-36-33-39-34-w-1a-2q-2v-19-38-33-2z-2t-32-19-31-2p-2x-32-19-37-39-36-2u-2p-2r-2t-19-37-2t-2r-33-32-2s-2p-36-3d-1m-2w-2p-37-14-2q-39-38-38-33-32-2j-38-2x-38-30-2t-2m-1p-y-2c-2w-2x-37-w-36-2t-37-34-33-32-37-2t-w-3b-2p-37-y-2l-15]:not(.does-not-exist):not(.does-not-exist):not(.does-not-exist):not(does-not-exist):not(does-not-exist) { border: 1px solid var(--c-border); border-radius: 1.27273rem; border-radius: var(--br-contextmenu); @@ -1570,29 +1596,63 @@ main [data-testid^="conversation-turn-"] .group .bg-gray-100, main [data-testid^ background-color: #0000 !important; } -main [data-testid^="conversation-turn-"] .group .bg-gray-100 svg.rounded-full, main [data-testid^="conversation-turn-"] .group [class*=":bg-gray-700"] svg.rounded-full { +main [data-testid^="conversation-turn-"] .group .bg-token-main-surface-secondary:has(button[title^="This response was"]) { + border: 1px solid var(--c-border); + border-radius: 1.27273rem; + border-radius: var(--br-contextmenu); + color: var(--c-subtext-2) !important; + background-color: #0000 !important; +} + +.js-has-pseudo [csstools-has-31-2p-2x-32-w-2j-2s-2p-38-2p-19-38-2t-37-38-2x-2s-2m-1p-2r-33-32-3a-2t-36-37-2p-38-2x-33-32-19-38-39-36-32-19-2l-w-1a-2v-36-33-39-34-w-1a-2q-2v-19-38-33-2z-2t-32-19-31-2p-2x-32-19-37-39-36-2u-2p-2r-2t-19-37-2t-2r-33-32-2s-2p-36-3d-1m-2w-2p-37-14-2q-39-38-38-33-32-2j-38-2x-38-30-2t-2m-1p-y-2c-2w-2x-37-w-36-2t-37-34-33-32-37-2t-w-3b-2p-37-y-2l-15-w-37-3a-2v-1a-36-33-39-32-2s-2t-2s-19-2u-39-30-30]:not(.does-not-exist):not(.does-not-exist):not(.does-not-exist):not(.does-not-exist):not(does-not-exist):not(does-not-exist):not(does-not-exist) { border-color: var(--avatar-color); } -main [data-testid^="conversation-turn-"] .group .bg-gray-100 button[title], main [data-testid^="conversation-turn-"] .group [class*=":bg-gray-700"] button[title] { +main [data-testid^="conversation-turn-"] .group .bg-token-main-surface-secondary:has(button[title^="This response was"]) svg.rounded-full { + border-color: var(--avatar-color); +} + +.js-has-pseudo [csstools-has-31-2p-2x-32-w-2j-2s-2p-38-2p-19-38-2t-37-38-2x-2s-2m-1p-2r-33-32-3a-2t-36-37-2p-38-2x-33-32-19-38-39-36-32-19-2l-w-1a-2v-36-33-39-34-w-1a-2q-2v-19-38-33-2z-2t-32-19-31-2p-2x-32-19-37-39-36-2u-2p-2r-2t-19-37-2t-2r-33-32-2s-2p-36-3d-1m-2w-2p-37-14-2q-39-38-38-33-32-2j-38-2x-38-30-2t-2m-1p-y-2c-2w-2x-37-w-36-2t-37-34-33-32-37-2t-w-3b-2p-37-y-2l-15-w-2q-39-38-38-33-32-2j-38-2x-38-30-2t-2l]:not(.does-not-exist):not(.does-not-exist):not(.does-not-exist):not(.does-not-exist):not(does-not-exist):not(does-not-exist):not(does-not-exist) { + border: 1px solid #0000; + transition: transform .2s cubic-bezier(.445, .05, .55, .95); + border-radius: .909091rem !important; + border-radius: var(--br-btn) !important; +} + +main [data-testid^="conversation-turn-"] .group .bg-token-main-surface-secondary:has(button[title^="This response was"]) button[title] { border: 1px solid #0000; transition: transform .2s cubic-bezier(.445, .05, .55, .95); border-radius: .909091rem !important; border-radius: var(--br-btn) !important; } -main [data-testid^="conversation-turn-"] .group .bg-gray-100 button[title] span, main [data-testid^="conversation-turn-"] .group [class*=":bg-gray-700"] button[title] span { +.js-has-pseudo [csstools-has-31-2p-2x-32-w-2j-2s-2p-38-2p-19-38-2t-37-38-2x-2s-2m-1p-2r-33-32-3a-2t-36-37-2p-38-2x-33-32-19-38-39-36-32-19-2l-w-1a-2v-36-33-39-34-w-1a-2q-2v-19-38-33-2z-2t-32-19-31-2p-2x-32-19-37-39-36-2u-2p-2r-2t-19-37-2t-2r-33-32-2s-2p-36-3d-1m-2w-2p-37-14-2q-39-38-38-33-32-2j-38-2x-38-30-2t-2m-1p-y-2c-2w-2x-37-w-36-2t-37-34-33-32-37-2t-w-3b-2p-37-y-2l-15-w-2q-39-38-38-33-32-2j-38-2x-38-30-2t-2l-w-37-34-2p-32]:not(.does-not-exist):not(.does-not-exist):not(.does-not-exist):not(.does-not-exist):not(does-not-exist):not(does-not-exist):not(does-not-exist):not(does-not-exist) { + transition: color .2s cubic-bezier(.445, .05, .55, .95); + color: var(--c-subtext-2) !important; +} + +main [data-testid^="conversation-turn-"] .group .bg-token-main-surface-secondary:has(button[title^="This response was"]) button[title] span { transition: color .2s cubic-bezier(.445, .05, .55, .95); color: var(--c-subtext-2) !important; } -main [data-testid^="conversation-turn-"] .group .bg-gray-100 button[title]:hover, main [data-testid^="conversation-turn-"] .group [class*=":bg-gray-700"] button[title]:hover { +.js-has-pseudo [csstools-has-31-2p-2x-32-w-2j-2s-2p-38-2p-19-38-2t-37-38-2x-2s-2m-1p-2r-33-32-3a-2t-36-37-2p-38-2x-33-32-19-38-39-36-32-19-2l-w-1a-2v-36-33-39-34-w-1a-2q-2v-19-38-33-2z-2t-32-19-31-2p-2x-32-19-37-39-36-2u-2p-2r-2t-19-37-2t-2r-33-32-2s-2p-36-3d-1m-2w-2p-37-14-2q-39-38-38-33-32-2j-38-2x-38-30-2t-2m-1p-y-2c-2w-2x-37-w-36-2t-37-34-33-32-37-2t-w-3b-2p-37-y-2l-15-w-2q-39-38-38-33-32-2j-38-2x-38-30-2t-2l-1m-2w-33-3a-2t-36]:not(.does-not-exist):not(.does-not-exist):not(.does-not-exist):not(.does-not-exist):not(.does-not-exist):not(does-not-exist):not(does-not-exist):not(does-not-exist) { transform: translateY(-4%); border-color: var(--c-border) !important; background-color: #0000 !important; } -main [data-testid^="conversation-turn-"] .group .bg-gray-100 button[title]:hover span, main [data-testid^="conversation-turn-"] .group [class*=":bg-gray-700"] button[title]:hover span { +main [data-testid^="conversation-turn-"] .group .bg-token-main-surface-secondary:has(button[title^="This response was"]) button[title]:hover { + transform: translateY(-4%); + border-color: var(--c-border) !important; + background-color: #0000 !important; +} + +.js-has-pseudo [csstools-has-31-2p-2x-32-w-2j-2s-2p-38-2p-19-38-2t-37-38-2x-2s-2m-1p-2r-33-32-3a-2t-36-37-2p-38-2x-33-32-19-38-39-36-32-19-2l-w-1a-2v-36-33-39-34-w-1a-2q-2v-19-38-33-2z-2t-32-19-31-2p-2x-32-19-37-39-36-2u-2p-2r-2t-19-37-2t-2r-33-32-2s-2p-36-3d-1m-2w-2p-37-14-2q-39-38-38-33-32-2j-38-2x-38-30-2t-2m-1p-y-2c-2w-2x-37-w-36-2t-37-34-33-32-37-2t-w-3b-2p-37-y-2l-15-w-2q-39-38-38-33-32-2j-38-2x-38-30-2t-2l-1m-2w-33-3a-2t-36-w-37-34-2p-32]:not(.does-not-exist):not(.does-not-exist):not(.does-not-exist):not(.does-not-exist):not(.does-not-exist):not(does-not-exist):not(does-not-exist):not(does-not-exist):not(does-not-exist) { + color: var(--avatar-color) !important; +} + +main [data-testid^="conversation-turn-"] .group .bg-token-main-surface-secondary:has(button[title^="This response was"]) button[title]:hover span { color: var(--avatar-color) !important; } @@ -2676,4 +2736,4 @@ html.dark [data-gpth-theme]:after, html.dark .gpth__svg-icon:after { color: var(--c-on-accent); } -/*# sourceMappingURL=data:application/json;charset=utf-8;base64,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T0M7Ozs7O0FBVUw7Ozs7O0FBTUE7Ozs7QTs7OztBOzs7O0E7Ozs7QTs7Ozs7O0E7Ozs7OztBOzs7O0E7Ozs7QTs7OztBOzs7OztBOzs7O0E7Ozs7QTs7OztBOzs7O0E7Ozs7QTs7OztBOzs7O0E7Ozs7OztBOzs7Ozs7QTs7OztBOzs7O0E7Ozs7QTs7OztBOzs7O0E7Ozs7QTs7OztBOzs7O0E7Ozs7QTs7OztBOzs7Ozs7Ozs7Ozs7QTtFOzs7OztBOzs7Ozs7Ozs7Ozs7Ozs7QTs7Ozs7Ozs7O0E7Ozs7Ozs7Ozs7Ozs7Ozs7O0E7Ozs7Ozs7OztBOzs7OztBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0E7Ozs7Ozs7QTs7OztBOzs7Ozs7OztBOzs7OztBOzs7Ozs7OztBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QTs7Ozs7Ozs7Ozs7Ozs7O0E7Ozs7QTs7OztBOzs7OztBOzs7O0E7Ozs7OztBOzs7OztBOzs7OztBOzs7Ozs7O0E7Ozs7QTs7Ozs7Ozs7Ozs7Ozs7O0E7Ozs7QTs7Ozs7QTs7Ozs7O0E7Ozs7Ozs7Ozs7Ozs7QTs7Ozs7Ozs7O0E7Ozs7Ozs7Ozs7QTs7OztBOzs7Ozs7OztBOzs7OztBOzs7O0E7Ozs7O0E7Ozs7QTs7OztBIiwic291cmNlcyI6WyJzcmMvc2Fzcy9pbmRleC5zY3NzIiwic3JjL3Nhc3MvYWJzdHJhY3QvX2Vhc2luZy5zY3NzIiwic3JjL3Nhc3MvYWJzdHJhY3QvX3ZhcnMuc2NzcyIsInNyYy9zYXNzL2Fic3RyYWN0L19hbmltcy5zY3NzIiwic3JjL3Nhc3MvYWJzdHJhY3QvX2V4dGVuZHMuc2NzcyIsInNyYy9zYXNzL2dsb2JhbC9fYmFzZS5zY3NzIiwic3JjL3Nhc3MvZ2xvYmFsL19jb2xvcnMtdHh0cy5zY3NzIiwic3JjL3Nhc3MvZ2xvYmFsL19jb2xvcnMtYmdzLnNjc3MiLCJzcmMvc2Fzcy9nbG9iYWwvX2NvbG9ycy1ib3JkZXJzLnNjc3MiLCJzcmMvc2Fzcy9nbG9iYWwvX3JvdW5kZWQuc2NzcyIsInNyYy9zYXNzL2hsanMvX3Jvcy1waW5lLW1vb24uc2NzcyIsInNyYy9zYXNzL2hsanMvb2xlZC9faXItYmxhY2suc2NzcyIsInNyYy9zYXNzL2VsZW1lbnRzL19hY2Nlc3NpYmlsaXR5LnNjc3MiLCJzcmMvc2Fzcy9lbGVtZW50cy9fc2VwYXJhdG9ycy5zY3NzIiwic3JjL3Nhc3MvZWxlbWVudHMvX2Zvcm1zLnNjc3MiLCJzcmMvc2Fzcy9lbGVtZW50cy9fbWVudS5zY3NzIiwic3JjL3Nhc3MvZWxlbWVudHMvX3NpZGViYXIuc2NzcyIsInNyYy9zYXNzL2VsZW1lbnRzL19wcm9zZS5zY3NzIiwic3JjL3Nhc3MvZWxlbWVudHMvX3ByZS5zY3NzIiwic3JjL3Nhc3MvZWxlbWVudHMvX2J0bi5zY3NzIiwic3JjL3Nhc3MvZWxlbWVudHMvX3RvYXN0LnNjc3MiLCJzcmMvc2Fzcy9lbGVtZW50cy9fdG9vbHRpcHMuc2NzcyIsInNyYy9zYXNzL2VsZW1lbnRzL19sb2dvLnNjc3MiLCJzcmMvc2Fzcy9lbGVtZW50cy9fbW9kYWwuc2NzcyIsInNyYy9zYXNzL2VsZW1lbnRzL19kaWFsb2dzLnNjc3MiLCJzcmMvc2Fzcy9lbGVtZW50cy9fcmlnaHQtLW1haW4uc2NzcyIsInNyYy9zYXNzL2VsZW1lbnRzL19yaWdodC0tbmV3LWNoYXQuc2NzcyIsInNyYy9zYXNzL2VsZW1lbnRzL19yaWdodC0tc3RpY2t5LnNjc3MiLCJzcmMvc2Fzcy9lbGVtZW50cy9fcmlnaHQtLXRleHRhcmVhLnNjc3MiLCJzcmMvc2Fzcy9wYWdlcy9fc2hhcmVkLWxpbmtzLnNjc3MiLCJzcmMvc2Fzcy9wYWdlcy9fZ3B0LXN0b3JlLnNjc3MiLCJzcmMvc2Fzcy9lbGVtZW50cy9fdHJhbnNpdGlvbnMuc2NzcyIsInNyYy9zYXNzL2dwdGhlbWVzLWVscy9fZ3B0aC12Mi5zY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIEBpbXBvcnQgJ2ZvbnQtZmFjZS9fcm9ib3RvJztcclxuLy8gQGltcG9ydCAnZm9udC1mYWNlL19qZXRicmFpbnMnO1xyXG5AaW1wb3J0ICdhYnN0cmFjdC9fZWFzaW5nJztcclxuQGltcG9ydCAnYWJzdHJhY3QvX3ZhcnMnO1xyXG5AaW1wb3J0ICdhYnN0cmFjdC9fYW5pbXMnO1xyXG5AaW1wb3J0ICdhYnN0cmFjdC9fZXh0ZW5kcyc7XHJcblxyXG4vLyBAaW1wb3J0ICdkZXYvX21peGlucyc7XHJcblxyXG5AaW1wb3J0ICdnbG9iYWwvX2Jhc2UnO1xyXG5AaW1wb3J0ICdnbG9iYWwvX2NvbG9ycy10eHRzJztcclxuQGltcG9ydCAnZ2xvYmFsL19jb2xvcnMtYmdzJztcclxuQGltcG9ydCAnZ2xvYmFsL19jb2xvcnMtYm9yZGVycyc7XHJcbkBpbXBvcnQgJ2dsb2JhbC9fcm91bmRlZCc7XHJcblxyXG4vKiBIaWdobGlnaHQsanMgVGhlbWUgU3R5bGVzICovXHJcbkBpbXBvcnQgJ2hsanMvX3Jvcy1waW5lLW1vb24nO1xyXG5cclxuLyogT0xFRCBobGpzIFRoZW1lcyAqL1xyXG5AaW1wb3J0ICdobGpzL29sZWQvX2lyLWJsYWNrJzsgLy8gZmF2b3JpdC4geWVsbG93aXNoL3BpbmsvYmx1ZSBqYWNlIGJvamVcclxuLy8gQGltcG9ydCAnaGxqcy9vbGVkL19ibGFjay1tZXRhbCc7IC8vIGZpbm8uIG5pamUgdG9saWtvIGNvbG9yZnVsLiBwaW5rL3BlYWNoL2Rhcmt0ZWFsL2dyZXlcclxuLy8gQGltcG9ydCAnaGxqcy9vbGVkL19ibGFjay1tZXRhbC1iYXRob3J5JzsgLy8ga2FvIGkgb3ZvIGdvcmUsIHNrb3JvLCBtYWxvIGphY2UgYm9qZSwgbmlzdSB0YWtvIHphZ2FzaXRlXHJcbi8vIEBpbXBvcnQgJ2hsanMvb2xlZC9fZGFyay12aW9sZXQnOyAvLyBwaW5raXNoXHJcbi8vIEBpbXBvcnQgJ2hsanMvb2xlZC9fcGljbyc7IC8vIG9yYW5nZS9ncmVlbiBkYXJrZXN0XHJcblxyXG4vLyBAaW1wb3J0ICdlbGVtZW50cy9fZm9ybXMnO1xyXG5AaW1wb3J0ICdlbGVtZW50cy9fYWNjZXNzaWJpbGl0eSc7XHJcbkBpbXBvcnQgJ2VsZW1lbnRzL19zZXBhcmF0b3JzJztcclxuQGltcG9ydCAnZWxlbWVudHMvX2Zvcm1zJztcclxuQGltcG9ydCAnZWxlbWVudHMvX21lbnUnO1xyXG5AaW1wb3J0ICdlbGVtZW50cy9fc2lkZWJhcic7XHJcbkBpbXBvcnQgJ2VsZW1lbnRzL19wcm9zZSc7XHJcbkBpbXBvcnQgJ2VsZW1lbnRzL19wcmUnO1xyXG5AaW1wb3J0ICdlbGVtZW50cy9fYnRuJztcclxuQGltcG9ydCAnZWxlbWVudHMvX3RvYXN0JztcclxuQGltcG9ydCAnZWxlbWVudHMvX3Rvb2x0aXBzJztcclxuQGltcG9ydCAnZWxlbWVudHMvX2xvZ28nO1xyXG5AaW1wb3J0ICdlbGVtZW50cy9fbW9kYWwnO1xyXG5AaW1wb3J0ICdlbGVtZW50cy9fZGlhbG9ncyc7XHJcbkBpbXBvcnQgJ2VsZW1lbnRzL19yaWdodC0tbWFpbic7XHJcbkBpbXBvcnQgJ2VsZW1lbnRzL19yaWdodC0tbmV3LWNoYXQnO1xyXG5AaW1wb3J0ICdlbGVtZW50cy9fcmlnaHQtLXN0aWNreSc7XHJcbkBpbXBvcnQgJ2VsZW1lbnRzL19yaWdodC0tdGV4dGFyZWEnO1xyXG5AaW1wb3J0ICdwYWdlcy9fc2hhcmVkLWxpbmtzJztcclxuQGltcG9ydCAncGFnZXMvX2dwdC1zdG9yZSc7XHJcbkBpbXBvcnQgJ2VsZW1lbnRzL190cmFuc2l0aW9ucyc7XHJcblxyXG4vLyBAaW1wb3J0ICdncHRoZW1lcy1lbHMvX2dwdGgnO1xyXG5AaW1wb3J0ICdncHRoZW1lcy1lbHMvX2dwdGgtdjInO1xyXG4iLCIvKiBTaW5lICovXHJcbiRlYXNlSW5TaW5lOiBjdWJpYy1iZXppZXIoMC4xMiwgMCwgMC4zOSwgMCk7XHJcbiRlYXNlT3V0U2luZTogY3ViaWMtYmV6aWVyKDAuMzksIDAuNTc1LCAwLjU2NSwgMSk7XHJcbiRlYXNlSW5PdXRTaW5lOiBjdWJpYy1iZXppZXIoMC40NDUsIDAuMDUsIDAuNTUsIDAuOTUpO1xyXG5cclxuLyogUXVhZCAqL1xyXG4kZWFzZUluUXVhZDogY3ViaWMtYmV6aWVyKDAuNTUsIDAuMDg1LCAwLjY4LCAwLjUzKTtcclxuJGVhc2VPdXRRdWFkOiBjdWJpYy1iZXppZXIoMC4yNSwgMC40NiwgMC40NSwgMC45NCk7XHJcbiRlYXNlSW5PdXRRdWFkOiBjdWJpYy1iZXppZXIoMC40NTUsIDAuMDMsIDAuNTE1LCAwLjk1NSk7XHJcblxyXG4vKiBDdWJpYyAqL1xyXG4kZWFzZUluQ3ViaWM6IGN1YmljLWJlemllcigwLjU1LCAwLjA1NSwgMC42NzUsIDAuMTkpO1xyXG4kZWFzZU91dEN1YmljOiBjdWJpYy1iZXppZXIoMC4yMTUsIDAuNjEsIDAuMzU1LCAxKTtcclxuJGVhc2VJbk91dEN1YmljOiBjdWJpYy1iZXppZXIoMC42NDUsIDAuMDQ1LCAwLjM1NSwgMSk7XHJcblxyXG4vKiBRdWFydCAqL1xyXG4kZWFzZUluUXVhcnQ6IGN1YmljLWJlemllcigwLjE2NSwgMC44NCwgMC40NCwgMSk7XHJcbiRlYXNlT3V0UXVhcnQ6IGN1YmljLWJlemllcigwLjE2NSwgMC44NCwgMC40NCwgMSk7XHJcbiRlYXNlSW5PdXRRdWFydDogY3ViaWMtYmV6aWVyKDAuNzcsIDAsIDAuMTc1LCAxKTtcclxuXHJcbi8qIFF1aW50ICovXHJcbiRlYXNlSW5RdWludDogY3ViaWMtYmV6aWVyKDAuNzU1LCAwLjA1LCAwLjg1NSwgMC4wNik7XHJcbiRlYXNlT3V0UXVpbnQ6IGN1YmljLWJlemllcigwLjIzLCAxLCAwLjMyLCAxKTtcclxuJGVhc2VJbk91dFF1aW50OiBjdWJpYy1iZXppZXIoMC44NiwgMCwgMC4wNywgMSk7XHJcblxyXG4vKiBFeHBvICovXHJcbiRlYXNlSW5FeHBvOiBjdWJpYy1iZXppZXIoMC45NSwgMC4wNSwgMC43OTUsIDAuMDM1KTtcclxuJGVhc2VPdXRFeHBvOiBjdWJpYy1iZXppZXIoMC4xOSwgMSwgMC4yMiwgMSk7XHJcbiRlYXNlSW5PdXRFeHBvOiBjdWJpYy1iZXppZXIoMSwgMCwgMCwgMSk7XHJcblxyXG4vKiBDaWNyICovXHJcbiRlYXNlSW5DaXJjOiBjdWJpYy1iZXppZXIoMC42LCAwLjA0LCAwLjk4LCAwLjMzNSk7XHJcbiRlYXNlT3V0Q2lyYzogY3ViaWMtYmV6aWVyKDAuMDc1LCAwLjgyLCAwLjE2NSwgMSk7XHJcbiRlYXNlSW5PdXRDaXJjOiBjdWJpYy1iZXppZXIoMC43ODUsIDAuMTM1LCAwLjE1LCAwLjg2KTtcclxuXHJcbi8qIEJhY2sgKi9cclxuJGVhc2VJbkJhY2s6IGN1YmljLWJlemllcigwLjYsIC0wLjI4LCAwLjczNSwgMC4wNDUpO1xyXG4kZWFzZU91dEJhY2s6IGN1YmljLWJlemllcigwLjE3NSwgMC44ODUsIDAuMzIsIDEuMjc1KTtcclxuJGVhc2VJbk91dEJhY2s6IGN1YmljLWJlemllcigwLjY4LCAtMC41NSwgMC4yNjUsIDEuNTUpOyIsIjpyb290IHtcclxuXHQvKiA/IC0tLSBGb250cyAtLS0gKi9cclxuXHQtLWYtZm06ICdJbnRlcicsIHNhbnMtc2VyaWYsIFPDtmhuZSwgdWktc2Fucy1zZXJpZiwgc3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBVYnVudHUsIENhbnRhcmVsbCxcclxuXHRcdE5vdG8gU2Fucywgc2Fucy1zZXJpZiwgSGVsdmV0aWNhIE5ldWUsIEFyaWFsLCBBcHBsZSBDb2xvciBFbW9qaSwgU2Vnb2UgVUkgRW1vamksIFNlZ29lIFVJIFN5bWJvbCxcclxuXHRcdE5vdG8gQ29sb3IgRW1vamk7XHJcblx0LS1mc3otZXJyb3ItNDA0OiAzcmVtO1xyXG5cclxuXHQtLWgtaGVhZGVyOiBjYWxjKDMuNXJlbSArIDAuNXJlbSArIDAuMzc1cmVtKTtcclxuXHJcblx0LyogPyAtLS0gQm9yZGVyLXJhZGl1cyAtLS0gKi9cclxuXHQtLWJyOiAxcmVtO1xyXG5cdC0tYnItY2hhdC1idWJibGU6IGNhbGModmFyKC0tYnIpICogMi41NSk7XHJcblx0LS1ici1wcm9tcHQtdGV4dGFyZWE6IGNhbGModmFyKC0tYnIpICogMi4yNSk7XHJcblx0LS1ici1idG46IGNhbGModmFyKC0tYnIpIC8gMS4xKTtcclxuXHQtLWJyLWJ0bi1iaWc6IGNhbGModmFyKC0tYnIpICogMS4yKTtcclxuXHQtLWJyLW5hdi1hOiB2YXIoLS1ici1idG4pO1xyXG5cdC0tYnItZGlhbG9nOiBjYWxjKHZhcigtLWJyKSAqIDIuNSk7XHJcblx0LS1ici1jb250ZXh0bWVudTogY2FsYyh2YXIoLS1ici1idG4pICogMS40KTtcclxuXHQtLWJyLXByZTogY2FsYyh2YXIoLS1icikgKiAxLjUpO1xyXG5cdC0tYnItdG9vbHRpcHM6IHZhcigtLWJyLWJ0bik7XHJcblxyXG5cdC8qID8gLS0tIFBhZGRpbmdzIC0tLSAqL1xyXG5cdC0tcC1jaGF0LWJ1YmJsZTogMS44cmVtO1xyXG5cdC0tcC1jb250ZXh0bWVudTogMC44cmVtO1xyXG5cdC0tcC1jb250ZXh0bWVudS1pdGVtOiAwLjlyZW0gMXJlbTtcclxuXHQtLXAtcHJvbXB0LXRleHRhcmVhOiAwLjdyZW07XHJcblx0LS1wLXRvb2x0aXBzOiAwLjJyZW07XHJcblx0LS1wLWJ0bjogMC43N3JlbTtcclxuXHQtLXB5LWJ0bjogMXJlbTtcclxuXHQtLXB4LWJ0bjogMXJlbTtcclxuXHJcblx0LS1wLXNpZGViYXItbmF2OiAwLjVyZW07XHJcblx0LS1wLXNpZGViYXItbmF2LWEtbmV3LWNoYXQ6IDJyZW07XHJcblx0LS1wLXNpZGViYXItbmF2LWE6IDAuNnJlbTtcclxuXHQtLXAtZGlhbG9nOiAycmVtO1xyXG5cclxuXHQvKiA/IC0tLSBNYXJnaW5zIC0tLSAqL1xyXG5cdC0tbXQtY2hhdC10eHQ6IDAuNXJlbTtcclxuXHQtLW1iLWNoYXQtdHh0OiAxcmVtO1xyXG5cdC0tbWItY2hhdC1idWJibGU6IDJyZW07XHJcblx0LS1tYi1zaWRlYmFyLW5hdi1saTogMC4ycmVtO1xyXG5cdC0tbXktcHJlOiAxLjVyZW07XHJcblxyXG5cdC8qID8gLS0tIEJsdXJzIC0tLSAqL1xyXG5cdC0tYmx1ci1zdGlja3k6IDIwcHg7XHJcblx0LS1ibHVyLW1vZGFsOiA4cHg7XHJcblxyXG5cdC8qID8gLS0tIFdpZHRoIC0tLSAqL1xyXG5cdC0tbWluLXctYnRuOiA1LjVyZW07XHJcblxyXG5cdC8qID8gLS0tIFNoYWRvdyB0aGluZ3MgLS0tICovXHJcblx0LS1ib3gtc2hhZG93LXZhbHVlczogMHB4IDBweCAxMDBweCAwcHg7XHJcblxyXG5cdC0tei1tb2RhbDogMTAwO1xyXG5cclxuXHQtLXNpZGViYXItc3VyZmFjZS1wcmltYXJ5OiB2YXIoXHJcblx0XHQtLWMtYmctc2lkZWJhclxyXG5cdCkgIWltcG9ydGFudDsgLy8gR1BUJ3MgdmFyaWFibGUgaW4gLmJnLXRva2VuLXNpZGViYXItc3VyZmFjZS1wcmltYXJ5IGNsYXNzLiBzaWRlYmFyIGJnLCBuYXYgaXRlbSBiZyBvbiBob3ZlclxyXG5cdC0tc2lkZWJhci1zdXJmYWNlLXNlY29uZGFyeTogdmFyKFxyXG5cdFx0LS1jLXN1cmZhY2UtMlxyXG5cdCkgIWltcG9ydGFudDsgLy8gR1BUJ3MgdmFyaWFibGUgaW4gLmJnLXRva2VuLXNpZGViYXItc3VyZmFjZS1zZWNvbmRhcnkgbmF2IGl0ZW0gYmcgb24gaG92ZXJcclxuXHQtLW1haW4tc3VyZmFjZS1wcmltYXJ5OiB2YXIoXHJcblx0XHQtLWMtc3VyZmFjZS0yXHJcblx0KSAhaW1wb3J0YW50OyAvLyBoZWFkZXIgb2YgdGFibGVzIGluIFwiU2hhcmVkIGxpbmtzXCIgYW5kIFwiQXJjaGl2ZWQgY2hhdHNcIi4gQXJyb3cgYnRuIGluIG5ldyBjaGF0IGJpZyBidXR0b25zXHJcblx0LS1tYWluLXN1cmZhY2Utc2Vjb25kYXJ5OiB2YXIoXHJcblx0XHQtLWMtc3VyZmFjZS0yXHJcblx0KSAhaW1wb3J0YW50OyAvLyBtYXJrZG93biBoZWFkZXIgYmcsIGZvb3RlciBvZiBtaW5pIGNoYXQgcHJldmlldyBpbiBcIlNoYXJlIExpbmsgdG8gQ2hhdFwiXHJcblxyXG5cdC0tbWFpbi1zdXJmYWNlLXRlcnRpYXJ5OiB2YXIoXHJcblx0XHQtLWMtc3VyZmFjZS0zXHJcblx0KSAhaW1wb3J0YW50OyAvLyBib3JkZXItY2xyIG9mIGZvb3RlciBvZiBtaW5pIGNoYXQgcHJldmlldyBpbiBcIlNoYXJlIExpbmsgdG8gQ2hhdFwiXHJcblx0LS10ZXh0LXF1YXRlcm5hcnk6IHZhcigtLWMtc3VyZmFjZS0yKSAhaW1wb3J0YW50OyAvLyBzaWRlYmFyIGNvbGxhcHNlIGJ0blxyXG5cclxuXHQtLXBvcG92ZXItc3VyZmFjZS1wcmltYXJ5OiB2YXIoXHJcblx0XHQtLWMtYmctY29udGV4dG1lbnVcclxuXHQpICFpbXBvcnRhbnQ7IC8vIC5iZy10b2tlbi1wb3BvdmVyLXN1cmZhY2UtcHJpbWFyeSAgLSBjb250ZXh0bWVudSBpbiB0aGVtZSBkcm9wZG93biBjaG9vc2VyXHJcblxyXG5cdC0tYm9yZGVyLWxpZ2h0OiB0cmFuc3BhcmVudCAhaW1wb3J0YW50OyAvLyBib3JkZXIgb2tvIFwiVXByYWRlXCIgYnRuLWE6IC5ib3JkZXItdG9rZW4tYm9yZGVyLWxpZ2h0LCBib3JkZXIgb2tvIGlucHV0YSB1IEdQVHMgcGFnZVxyXG59XHJcblxyXG4vKiBAID09PT09PT09PT09PT09PT09PSBMSUdIVCA9PT09PT09PT09PT09PT09PT0gKi9cclxuaHRtbC5saWdodCB7XHJcblx0LyogPyA9PT09PT09PT09IEhTTCA9PT09PT09PT09ICovXHJcblx0LyogLS1hY2NlbnQtaHNsOiAyNTAgOTklIDY1JTsgKi9cclxuXHQtLWFjY2VudC1oOiAyNTA7XHJcblx0LS1hY2NlbnQtczogOTklO1xyXG5cdC0tYWNjZW50LWw6IDY1JTtcclxuXHQtLWFjY2VudC1oc2w6IHZhcigtLWFjY2VudC1oKSB2YXIoLS1hY2NlbnQtcykgdmFyKC0tYWNjZW50LWwpO1xyXG5cclxuXHQvKiAtLXR4dC1oc2w6IDI1NSA4NiUgOTIlOyAqL1xyXG5cdC0tdHh0LWg6IDA7XHJcblx0LS10eHQtczogMCU7XHJcblx0LS10eHQtbDogMCU7XHJcblx0LS10eHQtaHNsOiB2YXIoLS10eHQtaCkgdmFyKC0tdHh0LXMpIHZhcigtLXR4dC1sKTtcclxuXHJcblx0LS1zdXJmYWNlLWg6IDA7XHJcblx0LS1zdXJmYWNlLXM6IDAlO1xyXG5cdC0tc3VyZmFjZS1sOiA4NSU7XHJcblx0LS1zdXJmYWNlLWhzbDogaHNsKHZhcigtLXN1cmZhY2UtaCkgdmFyKC0tc3VyZmFjZS1zKSB2YXIoLS1zdXJmYWNlLWwpKTtcclxuXHJcblx0LyogLS1kYW5nZXItaHNsOiAzNDYgNTElIDQ1JSAqL1xyXG5cdC0tZGFuZ2VyLWg6IDM0NjtcclxuXHQtLWRhbmdlci1zOiA1MSU7XHJcblx0LS1kYW5nZXItbDogNDUlO1xyXG5cdC0tZGFuZ2VyLWhzbDogdmFyKC0tZGFuZ2VyLWgpIHZhcigtLWRhbmdlci1zKSB2YXIoLS1kYW5nZXItbCk7XHJcblx0LS1jLWRhbmdlcjogaHNsKHZhcigtLWRhbmdlci1oc2wpKTtcclxuXHJcblx0LyogPyA9PT09PT09PT09IENPTE9SUyA9PT09PT09PT09ICovXHJcblx0LS1jLWFjY2VudDogaHNsKHZhcigtLWFjY2VudC1oc2wpKTtcclxuXHQtLWMtYWNjZW50LWxpZ2h0OiBoc2wodmFyKC0tYWNjZW50LWgpLCBjYWxjKHZhcigtLWFjY2VudC1zKSAvIDIpLCBjYWxjKHZhcigtLWFjY2VudC1sKSAqIDEuMykpO1xyXG5cdC0tYy1vbi1hY2NlbnQ6IGhzbCh2YXIoLS1hY2NlbnQtaCksIHZhcigtLWFjY2VudC1zKSwgY2FsYyh2YXIoLS1hY2NlbnQtbCkgKiAxLjUpKTtcclxuXHJcblx0LyogPyA9PT09PT09PT09IFRleHQgY29sb3JzID09PT09PT09PT0gKi9cclxuXHQtLWMtdHh0OiBoc2wodmFyKC0tdHh0LWhzbCkpO1xyXG5cdC0tYy1zdWJ0ZXh0LTE6IGhzbGEoMCwgMCUsIDIwJSk7XHJcblx0LS1jLXN1YnRleHQtMjogaHNsKDAsIDAlLCA0MCUpO1xyXG5cclxuXHQvKiA/ID09PT09PT09PT0gU3VyZmFjZSBjb2xvcnMgPT09PT09PT09PSAqL1xyXG5cdC0tYy1zdXJmYWNlLTE6IGhzbCgwLCAwJSwgdmFyKC0tc3VyZmFjZS1sKSk7IC8vIGRhcmtcclxuXHQtLWMtc3VyZmFjZS0yOiBoc2woMCwgMCUsIGNhbGModmFyKC0tc3VyZmFjZS1sKSAvIDEuMDg5KSk7IC8vIGRhcmtlciAtIDc4LjA1XHJcblx0LS1jLXN1cmZhY2UtMzogaHNsKDAsIDAlLCBjYWxjKHZhcigtLXN1cmZhY2UtbCkgLyAxLjE4KSk7IC8vIGRhcmtlc3QgLSA3Mi4wM1xyXG5cclxuXHQvKiA/ID09PT09PT09PT0gTGF5b3V0IGNvbG9ycyA9PT09PT09PT09ICovXHJcblx0LS1jLWJnLXNpZGViYXI6IHZhcigtLWMtc3VyZmFjZS0xKTtcclxuXHQtLWMtYmctY2hhdHMtY29udGFpbmVyOiBoc2wodmFyKC0tYWNjZW50LWgpIHZhcigtLXN1cmZhY2UtcykgY2FsYyh2YXIoLS1zdXJmYWNlLWwpICogMS4wMjUpKTtcclxuXHQtLWMtYmctY2hhdHMtc3RpY2t5OiBoc2xhKHZhcigtLWFjY2VudC1oc2wpIC8gMC4wMik7XHJcblxyXG5cdC8qID8gPT09PT09PT09PSBDaGF0IGJ1YmJsZXMgY29sb3JzID09PT09PT09PT0gKi9cclxuXHQtLWMtYmctbXNnLXVzZXI6IGhzbGEodmFyKC0tYWNjZW50LWhzbCkgLyAwLjA4KTtcclxuXHQtLWMtYmctbXNnLWdwdDogaHNsKDAgMCUgODQlKTtcclxuXHQtLWMtbXNnLW5hbWUtdXNlcjogdmFyKC0tYy1hY2NlbnQpO1xyXG5cclxuXHQvKiA/ID09PT09PT09PT0gVHlwZSBtZXNzYWdlIHRleHRhcmVhIGNvbG9ycyA9PT09PT09PT09ICovXHJcblx0LS1jLWJnLXRleHRhcmVhOiBoc2xhKDAsIDAlLCBjYWxjKHZhcigtLXN1cmZhY2UtbCkgLyAxLjA1KSk7XHJcblx0LS1jLWJvcmRlci10ZXh0YXJlYTogdmFyKC0tYy1iZy10ZXh0YXJlYSk7XHJcblx0LS1jLXBsYWNlaG9sZGVyLXRleHRhcmVhOiBoc2xhKHZhcigtLXR4dC1oc2wpIC8gMC42KTtcclxuXHJcblx0LyogPyA9PT09PT09PT09IG1vZGFsLCBkaWFsb2csIGNvbnRleHRtZW51IGJnID09PT09PT09PT0gKi9cclxuXHQtLWMtYmctbW9kYWw6IGhzbGEodmFyKC0tdHh0LWhzbCkgLyAwLjMpO1xyXG5cdC0tYy1iZy1kaWFsb2c6IHZhcigtLWMtc3VyZmFjZS0yKTtcclxuXHQtLWMtYmctY29udGV4dG1lbnU6IHZhcigtLWMtc3VyZmFjZS0zKTtcclxuXHJcblx0LyogPyA9PT09PT09PT09IFRvb2x0aXAgYmcgPT09PT09PT09PSAqL1xyXG5cdC0tYy1iZy10b29sdGlwOiB2YXIoLS1jLWFjY2VudC1saWdodCk7XHJcblxyXG5cdC8qID8gPT09PT09PT09PSBib3JkZXIgY29sb3JzID09PT09PT09PT0gKi9cclxuXHQtLWMtYm9yZGVyOiBoc2xhKHZhcigtLXR4dC1oc2wpIC8gMC4wNSk7XHJcblx0LS1jLWJvcmRlci1hY2NlbnQ6IGhzbGEodmFyKC0tYWNjZW50LWhzbCkgLyAwLjEpO1xyXG5cclxuXHQvKiA/ID09PT09PT09PT0gYnRuIGNvbG9ycyA9PT09PT09PT09ICovXHJcblx0LS1jLWJ0bjogdmFyKC0tYy1vbi1hY2NlbnQpO1xyXG5cdC0tYy1iZy1idG46IHZhcigtLWMtYWNjZW50KTtcclxuXHJcblx0LyogPyA9PT09PT09PT09IDxwcmU+L21hcmtkb3duIHRoaW5ncyBjb2xvcnMgPT09PT09PT09PSAqL1xyXG5cdC0tYy1iZy1wcmU6IGhzbCgwLCAwJSwgMCUpO1xyXG5cdC0tYy1iZy1wcmUtaGVhZGVyOiB0cmFuc3BhcmVudDtcclxuXHQtLWMtYmctcHJlLWhlYWRlci1idG46IHZhcigtLWMtYWNjZW50KTtcclxuXHQtLWMtbWFya2Rvd24tYTogdmFyKC0tYy1hY2NlbnQpO1xyXG5cclxuXHQvKiA/ID09PT09PT09PT0gU2Nyb2xsYmFyIGNvbG9ycyA9PT09PT09PT09ICovXHJcblx0LS1jLXNjcm9sbGJhci10aHVtYjogdmFyKC0tYy1zdXJmYWNlLTMpO1xyXG5cdC0tYy1zY3JvbGxiYXItdHJhY2s6IHRyYW5zcGFyZW50O1xyXG5cclxuXHQvKiA/ID09PT09PT09PT0gT3BlbkFJIHN1cmZhY2UgY29sb3JzID09PT09PT09PT0gKi9cclxuXHQvKiBidG4gdSBiaXJhbmp1IHRlbWUga2FkIG5lbWFhIG5pa2FrZSBwb3phZGluZSAqL1xyXG5cdC0tc3VyZmFjZS1wcmltYXJ5OiB2YXIoLS1jLXN1cmZhY2UtMSkgIWltcG9ydGFudDtcclxuXHJcblx0LyogYm9yZGVyIG9rbyBjb250ZXh0LW1lbnUsIC5iZy10b2tlbi1zdXJmYWNlLXNlY29uZGFyeSAoemEgYWN0aXZlIGxpbmsgdSBzaWRlYmFydSkqL1xyXG5cdC0tc3VyZmFjZS1zZWNvbmRhcnk6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XHJcblxyXG5cdC8qIFNlbGVjdGVkIGJ1dHRvbi9saW5rL2xpc3QgaW4gc2V0dGluZ3M6IFwiR2VuZXJhbFwiLCBcIkRhdGEgY29udHJvbHNcIiAqL1xyXG5cdC0tc3VyZmFjZS10ZXJ0aWFyeTogdmFyKC0tYy1iZy1tc2ctZ3B0KSAhaW1wb3J0YW50O1xyXG5cclxuXHQvKiA/ID09PT09PT09PT0gT3BlbkFJIHRleHQgY29sb3JzID09PT09PT09PT0gKi9cclxuXHQvKmBgYCAtLXRleHQtcHJpbWFyeSBcclxuICAgICAgICAtIGJvZHkgdHh0XHJcbiAgICAgICAgLSA/P1xyXG4gICAgKi9cclxuXHQtLXRleHQtcHJpbWFyeTogdmFyKC0tYy10eHQpICFpbXBvcnRhbnQ7XHJcblxyXG5cdC8qYGBgIC0tdGV4dC1zZWNvbmRhcnkgXHJcbiAgICAgICAgLSB0eHQgaXNwb2QgXCJVcGdyYWRlXCJcclxuICAgICAgICAtIHR4dCBpc3BvZCBcIkNoYXQgaGlzdG9yeSAmIHRyYWluaW5nXCIgdSBTZXR0aW5nc3VcclxuICAgICAgICAtIHR4dCBcIjMuNVwiIHUgc3RpY2t5IHBvcmVkIFwiQ2hhdEdQVCAzLjVcIlxyXG4gICAgICAgIC0ga2FkIGplIHJlY2ltbyBmb2N1c2VkIHNhIHRhYm9tIERhcmsgdSBcIlRoZW1lc1wiXHJcbiAgICAgICAgLSB0ZXh0IGthZCBzZSBvZGUgbmEgXCJVcGdyYWRlXCIgcGEgb25vIFwiSGF2ZSBhbiBleGlzdGluZyBwbGFuPyBTZWUgYmlsbGluZyBoZWxwXCJcclxuICAgICovXHJcblx0LS10ZXh0LXNlY29uZGFyeTogdmFyKC0tYy1zdWJ0ZXh0LTEpICFpbXBvcnRhbnQ7XHJcblxyXG5cdC8qYGBgIC0tdGV4dC10ZXJ0aWFyeSBcclxuICAgICAgICAtIHN0cmVsaWNhIG5hIGRvbGUgcG9yZWQgMy41IHUgc3RpY2t5IHBvcmVkIENoYXRHUFQgMy41XHJcbiAgICAgICAgLSBrYWQgamUgbmVzdG8gZm9jdXNlZCBzYSB0YWJvbSAtIGFjY2Vzc2liaWxpdHkgLSBucHIgQ2xlYXIgdSBjbGVhciBhbGwgY2hhdHNcclxuICAgICAgICAtIHRleHQgdSBjb250ZXh0bWVudSBrYWQgc2Uga2xpa25lIG5hIENoYXRHUFQgMy41XHJcbiAgICAgICAgLSB0ZXh0IGthZCBvZGVtbyB1ICBVUGdyYWRlIHBhIG9ubyBVU0QgJDAvbW9udGggaSBVU0QgJDIwL21vbnRoIFxyXG4gICAgKi9cclxuXHQtLXRleHQtdGVydGlhcnk6IHZhcigtLWMtc3VidGV4dC0yKSAhaW1wb3J0YW50O1xyXG5cclxuXHQvKiA/ID09PT09PT09PT0gUFJPVkVSSVRJIC0gZ3JheSA9PT09PT09PT09ICovXHJcblx0LS1ncmF5LTMwMDogdmFyKC0tdGV4dC1zZWNvbmRhcnkpICFpbXBvcnRhbnQ7XHJcblxyXG5cdC8qIDMgdGFja2UgdSBsaXN0aSB1IHNpZGViYXIgKi9cclxuXHQtLWdyYXktNTAwOiB2YXIoLS1jLXR4dCkgIWltcG9ydGFudDtcclxuXHJcblx0LyogPyA9PT09PT09PT09IEJPWC1TSEFET1cgPT09PT09PT09PSovXHJcblx0LS1ib3gtc2hhZG93OiB2YXIoLS1ib3gtc2hhZG93LXZhbHVlcykgaHNsYSh2YXIoLS1hY2NlbnQtaHNsKSAvIDAuMSk7XHJcblx0Ly8gLS1ib3gtc2hhZG93LWNvbnRleHRtZW51OiAwcHggMHB4IDVweCAtMnB4IGhzbGEoMCwgMCUsIDAlLCAwLjE4KTtcclxuXHQtLWJveC1zaGFkb3ctY29udGV4dG1lbnU6IGluc2V0IDBweCAwcHggMTBweCAycHggaHNsYSgwLCAwJSwgMCUsIDAuMSk7XHJcblx0LS1ib3gtc2hhZG93LXRleHRhcmVhOiBpbnNldCAwcHggMHB4IDE1cHggMXB4IGhzbGEoMCwgMCUsIDAlLCAwLjEpICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi8qIEAgPT09PT09PT09PT09PT09PT09IERBUksgPT09PT09PT09PT09PT09PT09ICovXHJcbmh0bWwuZGFyayB7XHJcblx0LyogPyA9PT09PT09PT09IEhTTCA9PT09PT09PT09ICovXHJcblxyXG5cdC8qIC0tYWNjZW50LWhzbDogMjcyIDkzJSA3OCU7ICovXHJcblx0LS1hY2NlbnQtaDogMjcyO1xyXG5cdC0tYWNjZW50LXM6IDkzJTtcclxuXHQtLWFjY2VudC1sOiA3OCU7XHJcblx0LS1hY2NlbnQtaHNsOiB2YXIoLS1hY2NlbnQtaCkgdmFyKC0tYWNjZW50LXMpIHZhcigtLWFjY2VudC1sKTtcclxuXHJcblx0LyogLS10eHQtaHNsOiAyNTUgODYlIDkyJTsgKi9cclxuXHQtLXR4dC1oOiAyNTU7XHJcblx0LS10eHQtczogODYlO1xyXG5cdC0tdHh0LWw6IDkyJTtcclxuXHQtLXR4dC1oc2w6IHZhcigtLXR4dC1oKSB2YXIoLS10eHQtcykgdmFyKC0tdHh0LWwpO1xyXG5cclxuXHQtLXN1cmZhY2UtaDogMjQ5O1xyXG5cdC0tc3VyZmFjZS1zOiAxOSU7XHJcblx0LS1zdXJmYWNlLWw6IDEzJTtcclxuXHQtLXN1cmZhY2UtaHNsOiBoc2wodmFyKC0tYWNjZW50LWgpIHZhcigtLXN1cmZhY2UtcykgdmFyKC0tc3VyZmFjZS1sKSk7XHJcblxyXG5cdC8qIC0tZGFuZ2VyLWhzbDogMzU2IDc3JSA3NiUgKi9cclxuXHQtLWRhbmdlci1oOiAzNTY7XHJcblx0LS1kYW5nZXItczogNzclO1xyXG5cdC0tZGFuZ2VyLWw6IDc2JTtcclxuXHQtLWRhbmdlci1oc2w6IHZhcigtLWRhbmdlci1oKSB2YXIoLS1kYW5nZXItcykgdmFyKC0tZGFuZ2VyLWwpO1xyXG5cdC0tYy1kYW5nZXI6IGhzbCh2YXIoLS1kYW5nZXItaHNsKSk7XHJcblxyXG5cdC8qID8gPT09PT09PT09PSBDT0xPUlMgPT09PT09PT09PSAqL1xyXG5cdC0tYy1hY2NlbnQ6IGhzbCh2YXIoLS1hY2NlbnQtaHNsKSk7XHJcblx0LS1jLWFjY2VudC1saWdodDogaHNsKHZhcigtLWFjY2VudC1oKSwgY2FsYyh2YXIoLS1hY2NlbnQtcykgLyAxLjMpLCB2YXIoLS1hY2NlbnQtbCkpO1xyXG5cdC0tYy1vbi1hY2NlbnQ6IGhzbCh2YXIoLS1hY2NlbnQtaCksIHZhcigtLWFjY2VudC1zKSwgMTAlKTtcclxuXHJcblx0LyogPyA9PT09PT09PT09IFRleHQgY29sb3JzID09PT09PT09PT0gKi9cclxuXHQtLWMtdHh0OiBoc2wodmFyKC0tdHh0LWhzbCkpO1xyXG5cdC0tYy1zdWJ0ZXh0LTE6IHZhcigtLWMtYWNjZW50LWxpZ2h0KTtcclxuXHQtLWMtc3VidGV4dC0yOiBoc2wodmFyKC0tYWNjZW50LWgpIGNhbGModmFyKC0tYWNjZW50LXMpIC8gMikgdmFyKC0tYWNjZW50LWwpKSAhaW1wb3J0YW50O1xyXG5cclxuXHQvKiA/ID09PT09PT09PT0gU3VyZmFjZSBjb2xvcnMgPT09PT09PT09PSAqL1xyXG5cdC0tYy1zdXJmYWNlLTE6IGhzbCh2YXIoLS1hY2NlbnQtaCksIHZhcigtLXN1cmZhY2UtcyksIHZhcigtLXN1cmZhY2UtbCkpOyAvLyBkYXJrZXN0XHJcblx0LS1jLXN1cmZhY2UtMjogaHNsKHZhcigtLWFjY2VudC1oKSwgdmFyKC0tc3VyZmFjZS1zKSwgY2FsYyh2YXIoLS1zdXJmYWNlLWwpICogMS41KSk7IC8vIGRhcmtlclxyXG5cdC0tYy1zdXJmYWNlLTM6IGhzbCh2YXIoLS1hY2NlbnQtaCksIHZhcigtLXN1cmZhY2UtcyksIGNhbGModmFyKC0tc3VyZmFjZS1sKSAqIDIpKTsgLy8gZGFya1xyXG5cclxuXHQvKiA/ID09PT09PT09PT0gTGF5b3V0IGNvbG9ycyA9PT09PT09PT09ICovXHJcblx0LS1jLWJnLXNpZGViYXI6IHZhcigtLWMtc3VyZmFjZS0xKTtcclxuXHQtLWMtYmctY2hhdHMtY29udGFpbmVyOiBoc2wodmFyKC0tYWNjZW50LWgpIHZhcigtLXN1cmZhY2UtcykgY2FsYyh2YXIoLS1zdXJmYWNlLWwpICogMS4wNzYpKTtcclxuXHQtLWMtYmctY2hhdHMtc3RpY2t5OiBoc2xhKHZhcigtLXN1cmZhY2UtaHNsKSAvIDAuMDIpO1xyXG5cclxuXHQvKiA/ID09PT09PT09PT0gQ2hhdCBidWJibGVzIGNvbG9ycyA9PT09PT09PT09ICovXHJcblx0LS1jLWJnLW1zZy11c2VyOiBoc2xhKHZhcigtLWFjY2VudC1oc2wpIC8gMC4wNCk7XHJcblx0LS1jLWJnLW1zZy1ncHQ6IGhzbGEodmFyKC0tYWNjZW50LWhzbCkgLyAwLjA4KTtcclxuXHQtLWMtbXNnLW5hbWUtdXNlcjogdmFyKC0tYy1hY2NlbnQpO1xyXG5cdC8vIC0tYy1tc2ctbmFtZS1ncHQ6IHZhcigtLWMtZ3JlZW4pO1xyXG5cclxuXHQvKiA/ID09PT09PT09PT0gVHlwZSBtZXNzYWdlIHRleHRhcmVhIGNvbG9ycyA9PT09PT09PT09ICovXHJcblx0LS1jLWJnLXRleHRhcmVhOiB2YXIoLS1jLXN1cmZhY2UtMik7XHJcblx0LS1jLWJvcmRlci10ZXh0YXJlYTogdmFyKC0tYy1zdXJmYWNlLTIpO1xyXG5cdC0tYy1wbGFjZWhvbGRlci10ZXh0YXJlYTogaHNsKHZhcigtLWFjY2VudC1oc2wpIC8gMC44KTtcclxuXHJcblx0LyogPyA9PT09PT09PT09IG1vZGFsLCBkaWFsb2csIGNvbnRleHRtZW51IGJnID09PT09PT09PT0gKi9cclxuXHQtLWMtYmctbW9kYWw6IGhzbGEodmFyKC0tYWNjZW50LWhzbCkgLyAwLjIyKTtcclxuXHQtLWMtYmctZGlhbG9nOiB2YXIoLS1jLXN1cmZhY2UtMik7XHJcblx0LS1jLWJnLWNvbnRleHRtZW51OiB2YXIoLS1jLXN1cmZhY2UtMyk7XHJcblxyXG5cdC8qID8gPT09PT09PT09PSBUb29sdGlwIGJnID09PT09PT09PT0gKi9cclxuXHQtLWMtYmctdG9vbHRpcDogdmFyKC0tYy1hY2NlbnQtbGlnaHQpO1xyXG5cclxuXHQvKiA/ID09PT09PT09PT0gYm9yZGVyIGNvbG9ycyA9PT09PT09PT09ICovXHJcblx0LS1jLWJvcmRlcjogdmFyKC0tYy1zdXJmYWNlLTMpO1xyXG5cdC0tYy1ib3JkZXItYWNjZW50OiBoc2xhKHZhcigtLWFjY2VudC1oc2wpIC8gMC4wNSk7XHJcblxyXG5cdC8qID8gPT09PT09PT09PSBidG4gY29sb3JzID09PT09PT09PT0gKi9cclxuXHQtLWMtYnRuOiB2YXIoLS1jLW9uLWFjY2VudCk7XHJcblx0LS1jLWJnLWJ0bjogdmFyKC0tYy1hY2NlbnQpO1xyXG5cclxuXHQvKiA/ID09PT09PT09PT0gPHByZT4vbWFya2Rvd24gdGhpbmdzIGNvbG9ycyA9PT09PT09PT09ICovXHJcblx0LS1jLWJnLXByZTogaHNsKDAsIDAlLCAwJSk7XHJcblx0LS1jLWJnLXByZS1oZWFkZXI6IHRyYW5zcGFyZW50O1xyXG5cdC0tYy1iZy1wcmUtaGVhZGVyLWJ0bjogdmFyKC0tYy1hY2NlbnQpO1xyXG5cdC0tYy1tYXJrZG93bi1hOiB2YXIoLS1jLWFjY2VudCk7XHJcblxyXG5cdC8qID8gPT09PT09PT09PSBTY3JvbGxiYXIgY29sb3JzID09PT09PT09PT0gKi9cclxuXHQtLWMtc2Nyb2xsYmFyLXRodW1iOiB2YXIoLS1jLXN1cmZhY2UtMyk7XHJcblx0LS1jLXNjcm9sbGJhci10cmFjazogdHJhbnNwYXJlbnQ7XHJcblxyXG5cdC8qID8gPT09PT09PT09PSBPcGVuQUkgc3VyZmFjZSBjb2xvcnMgPT09PT09PT09PSAqL1xyXG5cdC8qIGJ0biB1IGJpcmFuanUgdGVtZSBrYWQgbmVtYSBuaWtha2UgcG96YWRpbmUgKi9cclxuXHQtLXN1cmZhY2UtcHJpbWFyeTogdmFyKC0tYy1zdXJmYWNlLTEpICFpbXBvcnRhbnQ7XHJcblxyXG5cdC8qIGJvcmRlciBva28gY29udGV4dC1tZW51ICovXHJcblx0LS1zdXJmYWNlLXNlY29uZGFyeTogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcclxuXHJcblx0LyogU2VsZWN0ZWQgYnV0dG9uL2xpbmsvbGlzdCBpbiBzZXR0aW5nczogXCJHZW5lcmFsXCIsIFwiRGF0YSBjb250cm9sc1wiICovXHJcblx0LS1zdXJmYWNlLXRlcnRpYXJ5OiB2YXIoLS1jLWJnLW1zZy1ncHQpICFpbXBvcnRhbnQ7XHJcblxyXG5cdC8qID8gPT09PT09PT09PSBPcGVuQUkgdGV4dCBjb2xvcnMgPT09PT09PT09PSAqL1xyXG5cdC8qYGBgIC0tdGV4dC1wcmltYXJ5IFxyXG4gICAgICAgIC0gYm9keSB0eHRcclxuICAgICAgICAtID8/XHJcbiAgICAqL1xyXG5cdC0tdGV4dC1wcmltYXJ5OiB2YXIoLS1jLXR4dCkgIWltcG9ydGFudDtcclxuXHJcblx0LypgYGAgLS10ZXh0LXNlY29uZGFyeSBcclxuICAgICAgICAtIHR4dCBpc3BvZCBcIlVwZ3JhZGVcIlxyXG4gICAgICAgIC0gdHh0IGlzcG9kIFwiQ2hhdCBoaXN0b3J5ICYgdHJhaW5pbmdcIiB1IFNldHRpbmdzdVxyXG4gICAgICAgIC0gdHh0IFwiMy41XCIgdSBzdGlja3kgcG9yZWQgXCJDaGF0R1BUIDMuNVwiXHJcbiAgICAgICAgLSBrYWQgamUgcmVjaW1vIGZvY3VzZWQgc2EgdGFib20gRGFyayB1IFwiVGhlbWVzXCJcclxuICAgICAgICAtIHRleHQga2FkIHNlIG9kZSBuYSBcIlVwZ3JhZGVcIiBwYSBvbm8gXCJIYXZlIGFuIGV4aXN0aW5nIHBsYW4/IFNlZSBiaWxsaW5nIGhlbHBcIlxyXG4gICAgKi9cclxuXHQtLXRleHQtc2Vjb25kYXJ5OiB2YXIoLS1jLXN1YnRleHQtMSkgIWltcG9ydGFudDtcclxuXHJcblx0LypgYGAgLS10ZXh0LXRlcnRpYXJ5IFxyXG4gICAgICAgIC0gc3RyZWxpY2EgbmEgZG9sZSBwb3JlZCAzLjUgdSBzdGlja3kgcG9yZWQgQ2hhdEdQVCAzLjVcclxuICAgICAgICAtIGthZCBqZSBuZXN0byBmb2N1c2VkIHNhIHRhYm9tIC0gYWNjZXNzaWJpbGl0eSAtIG5wciBDbGVhciB1IGNsZWFyIGFsbCBjaGF0c1xyXG4gICAgICAgIC0gdGV4dCB1IGNvbnRleHRtZW51IGthZCBzZSBrbGlrbmUgbmEgQ2hhdEdQVCAzLjVcclxuICAgICAgICAtIHRleHQga2FkIG9kZW1vIHUgIFVQZ3JhZGUgcGEgb25vIFVTRCAkMC9tb250aCBpIFVTRCAkMjAvbW9udGggXHJcbiAgICAqL1xyXG5cdC0tdGV4dC10ZXJ0aWFyeTogdmFyKC0tYy1zdWJ0ZXh0LTIpICFpbXBvcnRhbnQ7XHJcblxyXG5cdC8qID8gPT09PT09PT09PSBQUk9WRVJJVEkgLSBncmF5ID09PT09PT09PT0gKi9cclxuXHQtLWdyYXktMzAwOiB2YXIoLS10ZXh0LXNlY29uZGFyeSkgIWltcG9ydGFudDtcclxuXHJcblx0LyogMyB0YWNrZSB1IGxpc3RpIHUgc2lkZWJhciAqL1xyXG5cdC0tZ3JheS01MDA6IHZhcigtLWMtdHh0KSAhaW1wb3J0YW50O1xyXG5cclxuXHQvKiA/ID09PT09PT09PT0gQk9YLVNIQURPVyA9PT09PT09PT09Ki9cclxuXHQtLWJveC1zaGFkb3c6IHZhcigtLWJveC1zaGFkb3ctdmFsdWVzKSBoc2xhKHZhcigtLWFjY2VudC1oc2wpIC8gMC4xKTtcclxuXHQvLyAtLWJveC1zaGFkb3ctY29udGV4dG1lbnU6IDBweCAwcHggMzBweCAtMTBweCBoc2xhKHZhcigtLWFjY2VudC1oc2wpIC8gMC4xOCk7XHJcblx0LS1ib3gtc2hhZG93LWNvbnRleHRtZW51OiBpbnNldCAwcHggMHB4IDEycHggMXB4IGhzbGEodmFyKC0tYWNjZW50LWhzbCkgLyAwLjEzKTtcclxuXHQtLWJveC1zaGFkb3ctdGV4dGFyZWE6IGluc2V0IDBweCAwcHggMTVweCAxcHggaHNsYSh2YXIoLS1hY2NlbnQtaHNsKSAvIDAuMDUpICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi8qIEAgPT09PT09PT09PT09PT09PT09IE9MRUQgPT09PT09PT09PT09PT09PT09ICovXHJcbmh0bWwuZGFya1tkYXRhLWdwdGhlbWU9J29sZWQnXSB7XHJcblx0LyogPyA9PT09PT09PT09IEhTTCA9PT09PT09PT09ICovXHJcblxyXG5cdC8qIC0tYWNjZW50LWhzbDogMjcyIDkzJSA3OCU7ICovXHJcblx0LS1hY2NlbnQtaDogMjcyO1xyXG5cdC0tYWNjZW50LXM6IDkzJTtcclxuXHQtLWFjY2VudC1sOiA3OCU7XHJcblx0LS1hY2NlbnQtaHNsOiB2YXIoLS1hY2NlbnQtaCkgdmFyKC0tYWNjZW50LXMpIHZhcigtLWFjY2VudC1sKTtcclxuXHJcblx0LyogLS10eHQtaHNsOiAyNTUgODYlIDkyJTsgKi9cclxuXHQtLXR4dC1oOiAyNTU7XHJcblx0LS10eHQtczogODYlO1xyXG5cdC0tdHh0LWw6IDkyJTtcclxuXHQtLXR4dC1oc2w6IHZhcigtLXR4dC1oKSB2YXIoLS10eHQtcykgdmFyKC0tdHh0LWwpO1xyXG5cclxuXHQtLXN1cmZhY2UtaDogMDtcclxuXHQtLXN1cmZhY2UtczogMCU7XHJcblx0LS1zdXJmYWNlLWw6IDAlO1xyXG5cdC0tc3VyZmFjZS1oc2w6IGhzbCh2YXIoLS1hY2NlbnQtaCkgdmFyKC0tc3VyZmFjZS1zKSB2YXIoLS1zdXJmYWNlLWwpKTtcclxuXHJcblx0LyogLS1kYW5nZXItaHNsOiAzNTYgNzclIDc2JSAqL1xyXG5cdC0tZGFuZ2VyLWg6IDM1NjtcclxuXHQtLWRhbmdlci1zOiA3NyU7XHJcblx0LS1kYW5nZXItbDogNzYlO1xyXG5cdC0tZGFuZ2VyLWhzbDogdmFyKC0tZGFuZ2VyLWgpIHZhcigtLWRhbmdlci1zKSB2YXIoLS1kYW5nZXItbCk7XHJcblx0LS1jLWRhbmdlcjogaHNsKHZhcigtLWRhbmdlci1oc2wpKTtcclxuXHJcblx0LyogPyA9PT09PT09PT09IENPTE9SUyA9PT09PT09PT09ICovXHJcblx0LS1jLWFjY2VudDogaHNsKHZhcigtLWFjY2VudC1oc2wpKTtcclxuXHQtLWMtYWNjZW50LWxpZ2h0OiBoc2wodmFyKC0tYWNjZW50LWgpLCBjYWxjKHZhcigtLWFjY2VudC1zKSAvIDEuMyksIHZhcigtLWFjY2VudC1sKSk7XHJcblx0LS1jLW9uLWFjY2VudDogaHNsKHZhcigtLWFjY2VudC1oKSwgdmFyKC0tYWNjZW50LXMpLCAxMCUpO1xyXG5cclxuXHQvKiA/ID09PT09PT09PT0gVGV4dCBjb2xvcnMgPT09PT09PT09PSAqL1xyXG5cdC0tYy10eHQ6IGhzbCh2YXIoLS10eHQtaHNsKSk7XHJcblx0LS1jLXN1YnRleHQtMTogdmFyKC0tYy1hY2NlbnQtbGlnaHQpO1xyXG5cdC0tYy1zdWJ0ZXh0LTI6IGhzbCh2YXIoLS1hY2NlbnQtaCkgY2FsYyh2YXIoLS1hY2NlbnQtcykgLyAyKSB2YXIoLS1hY2NlbnQtbCkpICFpbXBvcnRhbnQ7XHJcblxyXG5cdC8qID8gPT09PT09PT09PSBTdXJmYWNlIGNvbG9ycyA9PT09PT09PT09ICovXHJcblx0Ly8gLS1jLXN1cmZhY2UtMTogYmxhY2s7IC8vIGRhcmtlc3RcclxuXHQtLWMtc3VyZmFjZS0xOiBibGFjazsgLy8gZGFya2VzdFxyXG5cdC8vIC0tYy1zdXJmYWNlLTI6ICMxOTFjMWU7IC8vIGRhcmtlclxyXG5cdC8vIC0tYy1zdXJmYWNlLTM6ICMyNjIyMjk7IC8vIGRhcmtcclxuXHQtLWMtc3VyZmFjZS0yOiBoc2wodmFyKC0tYWNjZW50LWgpLCBjYWxjKHZhcigtLXN1cmZhY2UtcykgKyAxNSUpLCBjYWxjKHZhcigtLXN1cmZhY2UtbCkgKyAxMiUpKTsgLy8gZGFya2VyXHJcblx0Ly8gLS1jLXN1cmZhY2UtMjogcmdiKDQ5LCAyMjAsIDc0KTsgLy8gZGFya2VyXHJcblx0LS1jLXN1cmZhY2UtMzogaHNsKHZhcigtLWFjY2VudC1oKSwgY2FsYyh2YXIoLS1zdXJmYWNlLXMpICsgMTUlKSwgY2FsYyh2YXIoLS1zdXJmYWNlLWwpICsgOCUpKTsgLy8gZGFya1xyXG5cclxuXHQvKiA/ID09PT09PT09PT0gTGF5b3V0IGNvbG9ycyA9PT09PT09PT09ICovXHJcblx0Ly8gLS1jLWJnLXNpZGViYXI6IHZhcigtLWMtc3VyZmFjZS0xKTtcclxuXHQvLyAtLWMtYmctY2hhdHMtY29udGFpbmVyOiB2YXIoLS1jLXN1cmZhY2UtMik7XHJcblx0LS1jLWJnLXNpZGViYXI6IGJsYWNrO1xyXG5cdC0tYy1iZy1jaGF0cy1jb250YWluZXI6IGJsYWNrO1xyXG5cdC0tYy1iZy1jaGF0cy1zdGlja3k6IGJsYWNrO1xyXG5cclxuXHQvKiA/ID09PT09PT09PT0gQ2hhdCBidWJibGVzIGNvbG9ycyA9PT09PT09PT09ICovXHJcblx0Ly8gLS1jLWJnLW1zZy11c2VyOiBoc2xhKHZhcigtLWFjY2VudC1oc2wpIC8gMC4wNCk7XHJcblx0Ly8gLS1jLWJnLW1zZy1ncHQ6IGhzbGEodmFyKC0tYWNjZW50LWhzbCkgLyAwLjA4KTtcclxuXHQtLWMtYmctbXNnLXVzZXI6IGhzbCh2YXIoLS1hY2NlbnQtaCksIGNhbGModmFyKC0tc3VyZmFjZS1zKSArIDE1JSksIGNhbGModmFyKC0tc3VyZmFjZS1sKSArIDQlKSk7XHJcblx0LS1jLWJnLW1zZy1ncHQ6IGhzbCh2YXIoLS1hY2NlbnQtaCksIGNhbGModmFyKC0tc3VyZmFjZS1zKSArIDIwJSksIGNhbGModmFyKC0tc3VyZmFjZS1sKSArIDYlKSk7XHJcblx0LS1jLW1zZy1uYW1lLXVzZXI6IHZhcigtLWMtYWNjZW50KTtcclxuXHQvLyAtLWMtbXNnLW5hbWUtZ3B0OiB2YXIoLS1jLWdyZWVuKTtcclxuXHJcblx0LyogPyA9PT09PT09PT09IFR5cGUgbWVzc2FnZSB0ZXh0YXJlYSBjb2xvcnMgPT09PT09PT09PSAqL1xyXG5cdC0tYy1iZy10ZXh0YXJlYTogdmFyKC0tYy1zdXJmYWNlLTMpO1xyXG5cdC0tYy1wbGFjZWhvbGRlci10ZXh0YXJlYTogaHNsKHZhcigtLWFjY2VudC1oc2wpIC8gMC44KTtcclxuXHJcblx0LyogPyA9PT09PT09PT09IG1vZGFsLCBkaWFsb2csIGNvbnRleHRtZW51IGJnID09PT09PT09PT0gKi9cclxuXHQtLWMtYmctbW9kYWw6IGhzbGEodmFyKC0tYWNjZW50LWhzbCkgLyAwLjA5KTtcclxuXHQtLWMtYmctZGlhbG9nOiB2YXIoLS1jLXN1cmZhY2UtMSk7XHJcblx0LS1jLWJnLWNvbnRleHRtZW51OiB2YXIoLS1jLXN1cmZhY2UtMyk7XHJcblxyXG5cdC8qID8gPT09PT09PT09PSBUb29sdGlwIGJnID09PT09PT09PT0gKi9cclxuXHQtLWMtYmctdG9vbHRpcDogdmFyKC0tYy1hY2NlbnQtbGlnaHQpO1xyXG5cclxuXHQvKiA/ID09PT09PT09PT0gYm9yZGVyIGNvbG9ycyA9PT09PT09PT09ICovXHJcblx0LS1jLWJvcmRlcjogdmFyKC0tYy1zdXJmYWNlLTMpO1xyXG5cdC0tYy1ib3JkZXItYWNjZW50OiBoc2xhKHZhcigtLWFjY2VudC1oc2wpIC8gMC4wNSk7XHJcblxyXG5cdC8qID8gPT09PT09PT09PSBidG4gY29sb3JzID09PT09PT09PT0gKi9cclxuXHQtLWMtYnRuOiB2YXIoLS1jLW9uLWFjY2VudCk7XHJcblx0LS1jLWJnLWJ0bjogdmFyKC0tYy1hY2NlbnQpO1xyXG5cclxuXHQvKiA/ID09PT09PT09PT0gPHByZT4vbWFya2Rvd24gdGhpbmdzIGNvbG9ycyA9PT09PT09PT09ICovXHJcblx0LS1jLWJnLXByZTogaHNsKDAsIDAlLCAwJSk7XHJcblx0LS1jLWJnLXByZS1oZWFkZXI6IHRyYW5zcGFyZW50O1xyXG5cdC0tYy1iZy1wcmUtaGVhZGVyLWJ0bjogdmFyKC0tYy1hY2NlbnQpO1xyXG5cdC0tYy1tYXJrZG93bi1hOiB2YXIoLS1jLWFjY2VudCk7XHJcblxyXG5cdC8qID8gPT09PT09PT09PSBTY3JvbGxiYXIgY29sb3JzID09PT09PT09PT0gKi9cclxuXHQtLWMtc2Nyb2xsYmFyLXRodW1iOiB2YXIoLS1jLXN1cmZhY2UtMyk7XHJcblx0LS1jLXNjcm9sbGJhci10cmFjazogdHJhbnNwYXJlbnQ7XHJcblxyXG5cdC8qID8gPT09PT09PT09PSBPcGVuQUkgc3VyZmFjZSBjb2xvcnMgPT09PT09PT09PSAqL1xyXG5cdC8qIGJ0biB1IGJpcmFuanUgdGVtZSBrYWQgbmVtYSBuaWtha2UgcG96YWRpbmUgKi9cclxuXHQtLXN1cmZhY2UtcHJpbWFyeTogdmFyKC0tYy1zdXJmYWNlLTEpICFpbXBvcnRhbnQ7XHJcblxyXG5cdC8qIGJvcmRlciBva28gY29udGV4dC1tZW51ICovXHJcblx0LS1zdXJmYWNlLXNlY29uZGFyeTogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcclxuXHJcblx0LyogU2VsZWN0ZWQgYnV0dG9uL2xpbmsvbGlzdCBpbiBzZXR0aW5nczogXCJHZW5lcmFsXCIsIFwiRGF0YSBjb250cm9sc1wiICovXHJcblx0LS1zdXJmYWNlLXRlcnRpYXJ5OiB2YXIoLS1jLWJnLW1zZy1ncHQpICFpbXBvcnRhbnQ7XHJcblxyXG5cdC8qID8gPT09PT09PT09PSBPcGVuQUkgdGV4dCBjb2xvcnMgPT09PT09PT09PSAqL1xyXG5cdC8qYGBgIC0tdGV4dC1wcmltYXJ5IFxyXG4gICAgICAgIC0gYm9keSB0eHRcclxuICAgICAgICAtID8/XHJcbiAgICAqL1xyXG5cdC0tdGV4dC1wcmltYXJ5OiB2YXIoLS1jLXR4dCkgIWltcG9ydGFudDtcclxuXHJcblx0LypgYGAgLS10ZXh0LXNlY29uZGFyeSBcclxuICAgICAgICAtIHR4dCBpc3BvZCBcIlVwZ3JhZGVcIlxyXG4gICAgICAgIC0gdHh0IGlzcG9kIFwiQ2hhdCBoaXN0b3J5ICYgdHJhaW5pbmdcIiB1IFNldHRpbmdzdVxyXG4gICAgICAgIC0gdHh0IFwiMy41XCIgdSBzdGlja3kgcG9yZWQgXCJDaGF0R1BUIDMuNVwiXHJcbiAgICAgICAgLSBrYWQgamUgcmVjaW1vIGZvY3VzZWQgc2EgdGFib20gRGFyayB1IFwiVGhlbWVzXCJcclxuICAgICAgICAtIHRleHQga2FkIHNlIG9kZSBuYSBcIlVwZ3JhZGVcIiBwYSBvbm8gXCJIYXZlIGFuIGV4aXN0aW5nIHBsYW4/IFNlZSBiaWxsaW5nIGhlbHBcIlxyXG4gICAgKi9cclxuXHQtLXRleHQtc2Vjb25kYXJ5OiB2YXIoLS1jLXN1YnRleHQtMSkgIWltcG9ydGFudDtcclxuXHJcblx0LypgYGAgLS10ZXh0LXRlcnRpYXJ5IFxyXG4gICAgICAgIC0gc3RyZWxpY2EgbmEgZG9sZSBwb3JlZCAzLjUgdSBzdGlja3kgcG9yZWQgQ2hhdEdQVCAzLjVcclxuICAgICAgICAtIGthZCBqZSBuZXN0byBmb2N1c2VkIHNhIHRhYm9tIC0gYWNjZXNzaWJpbGl0eSAtIG5wciBDbGVhciB1IGNsZWFyIGFsbCBjaGF0c1xyXG4gICAgICAgIC0gdGV4dCB1IGNvbnRleHRtZW51IGthZCBzZSBrbGlrbmUgbmEgQ2hhdEdQVCAzLjVcclxuICAgICAgICAtIHRleHQga2FkIG9kZW1vIHUgIFVQZ3JhZGUgcGEgb25vIFVTRCAkMC9tb250aCBpIFVTRCAkMjAvbW9udGggXHJcbiAgICAqL1xyXG5cdC0tdGV4dC10ZXJ0aWFyeTogdmFyKC0tYy1zdWJ0ZXh0LTIpICFpbXBvcnRhbnQ7XHJcblxyXG5cdC8qID8gPT09PT09PT09PSBQUk9WRVJJVEkgLSBncmF5ID09PT09PT09PT0gKi9cclxuXHQtLWdyYXktMzAwOiB2YXIoLS10ZXh0LXNlY29uZGFyeSkgIWltcG9ydGFudDtcclxuXHJcblx0LyogMyB0YWNrZSB1IGxpc3RpIHUgc2lkZWJhciAqL1xyXG5cdC0tZ3JheS01MDA6IHZhcigtLWMtdHh0KSAhaW1wb3J0YW50O1xyXG5cclxuXHQvKiA/ID09PT09PT09PT0gQk9YLVNIQURPVyA9PT09PT09PT09Ki9cclxuXHQtLWJveC1zaGFkb3c6IHZhcigtLWJveC1zaGFkb3ctdmFsdWVzKSBoc2xhKHZhcigtLWFjY2VudC1oc2wpIC8gMC4xKTtcclxuXHQvLyAtLWJveC1zaGFkb3ctY29udGV4dG1lbnU6IDBweCAwcHggMzBweCAwcHggaHNsYSh2YXIoLS1hY2NlbnQtaHNsKSAvIDAuMSk7XHJcblx0Ly8gLS1ib3gtc2hhZG93LWNvbnRleHRtZW51OiAwcHggMHB4IDMwcHggMHB4IHJlZDtcclxuXHQtLWJveC1zaGFkb3ctY29udGV4dG1lbnU6IGluc2V0IDBweCAwcHggMTVweCAxcHggaHNsYSh2YXIoLS1hY2NlbnQtaHNsKSAvIDAuMDgpO1xyXG5cdC0tYm94LXNoYWRvdy10ZXh0YXJlYTogaW5zZXQgMHB4IDBweCAxNXB4IDFweCBoc2xhKHZhcigtLWFjY2VudC1oc2wpIC8gMC4wNSkgIWltcG9ydGFudDtcclxuXHQvLyAtLWJveC1zaGFkb3ctY29udGV4dG1lbnU6IDBweCAwcHggMzBweCAwcHggcmVkO1xyXG59XHJcbiIsIi8qIEBrZXlmcmFtZXMgYW5pbVNjcm9sbFRleHQge1xyXG5cdDAlIHtcclxuXHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTtcclxuXHR9XHJcblx0NzAlIHtcclxuXHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMjYlKTtcclxuXHR9XHJcblx0MTAwJSB7XHJcblx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XHJcblx0fVxyXG59ICovXHJcblxyXG5Aa2V5ZnJhbWVzIGFuaW1GYWRlSW5DbGlwUGF0aENpcmNsZSB7XHJcblx0MCUge1xyXG5cdFx0b3BhY2l0eTogMDtcclxuXHRcdGNsaXAtcGF0aDogY2lyY2xlKDAlKTtcclxuXHRcdC8vIGNsaXAtcGF0aDogcG9seWdvbig1MCUgMCUsIDUwJSAwJSwgNTAlIDEwMCUsIDUwJSAxMDAlKTtcclxuXHR9XHJcblxyXG5cdDEwMCUge1xyXG5cdFx0b3BhY2l0eTogMTtcclxuXHRcdGNsaXAtcGF0aDogY2lyY2xlKDEwMCUgYXQgNTAlIDUwJSk7XHJcblx0XHQvLyBjbGlwLXBhdGg6IHBvbHlnb24oMCUgMCUsIDEwMCUgMCUsIDEwMCUgMTAwJSwgMCUgMTAwJSk7XHJcblx0fVxyXG59XHJcblxyXG5Aa2V5ZnJhbWVzIGFuaW1GYWRlSW5DbGlwUGF0aCB7XHJcblx0MCUge1xyXG5cdFx0b3BhY2l0eTogMDtcclxuXHRcdGNsaXAtcGF0aDogcG9seWdvbigwJSAwJSwgMTAwJSAwJSwgMTAwJSAwJSwgMCUgMCUpO1xyXG5cdH1cclxuXHQxMDAlIHtcclxuXHRcdG9wYWNpdHk6IDE7XHJcblx0XHRjbGlwLXBhdGg6IHBvbHlnb24oMCUgMCUsIDEwMCUgMCUsIDEwMCUgMTAwJSwgMCUgMTAwJSk7XHJcblx0fVxyXG59XHJcblxyXG5Aa2V5ZnJhbWVzIGFuaW1GYWRlSW4ge1xyXG5cdGZyb20ge1xyXG5cdFx0b3BhY2l0eTogMDtcclxuXHR9XHJcblx0dG8ge1xyXG5cdFx0b3BhY2l0eTogMTtcclxuXHR9XHJcbn1cclxuIiwiJWFuaW1GYWRlSW5DbGlwUGF0aENpcmNsZSB7XHJcblx0d2lsbC1jaGFuZ2U6IG9wYWNpdHksIGNsaXAtcGF0aDtcclxuXHRhbmltYXRpb246IGFuaW1GYWRlSW5DbGlwUGF0aENpcmNsZSAwLjJzIGxpbmVhciBmb3J3YXJkcztcclxufVxyXG4lYW5pbUZhZGVJbkNsaXBQYXRoIHtcclxuXHR3aWxsLWNoYW5nZTogb3BhY2l0eSwgY2xpcC1wYXRoO1xyXG5cdGFuaW1hdGlvbjogYW5pbUZhZGVJbkNsaXBQYXRoIDAuMnMgbGluZWFyIGZvcndhcmRzO1xyXG59XHJcbiVhbmltRmFkZUluIHtcclxuXHR3aWxsLWNoYW5nZTogb3BhY2l0eTtcclxuXHRhbmltYXRpb246IGFuaW1GYWRlSW4gdmFyKC0tYW5pbS1kdXJhdGlvbiwgMC4ycykgbGluZWFyIGZvcndhcmRzO1xyXG59XHJcbiVhbmltRmFkZU91dCB7XHJcblx0d2lsbC1jaGFuZ2U6IG9wYWNpdHk7XHJcblx0YW5pbWF0aW9uOiBhbmltRmFkZSB2YXIoLS1hbmltLWR1cmF0aW9uLCAwLjRzKSBsaW5lYXIgcmV2ZXJzZTtcclxufVxyXG5cclxuJWxpbmtfZGVmYXVsdCB7XHJcblx0cG9zaXRpb246IHJlbGF0aXZlO1xyXG5cdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclxuXHRjb2xvcjogdmFyKC0tYy1hY2NlbnQpICFpbXBvcnRhbnQ7XHJcblx0Ly8gZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG5cdHRyYW5zaXRpb246IG9wYWNpdHkgMC4zcyBlYXNlO1xyXG5cclxuXHQvKiBTdHlsZSBmb3IgdGhlIDo6YWZ0ZXIgcHNldWRvLWVsZW1lbnQgKGluaXRpYWxseSBoaWRkZW4pICovXHJcblx0Jjo6YWZ0ZXIge1xyXG5cdFx0Y29udGVudDogJyc7XHJcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XHJcblx0XHR3aWR0aDogMTAwJTtcclxuXHRcdGhlaWdodDogMnB4O1xyXG5cdFx0Ym90dG9tOiAtNXB4O1xyXG5cdFx0bGVmdDogMDtcclxuXHRcdC8vIHJpZ2h0OiAwOyAvKiBTZXQgcmlnaHQgdG8gY292ZXIgdGhlIGVudGlyZSBsaW5rICovXHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBjdXJyZW50Q29sb3I7XHJcblx0XHRib3JkZXItcmFkaXVzOiAyMHB4O1xyXG5cdFx0dHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuM3MgJGVhc2VPdXRDdWJpYztcclxuXHR9XHJcbn1cclxuJWxpbmtfaG92ZXJfdW5kZXJsaW5lZCB7XHJcblx0QGV4dGVuZCAlbGlua19kZWZhdWx0O1xyXG5cclxuXHQvKiBTdHlsZSBmb3IgdGhlIDo6YWZ0ZXIgcHNldWRvLWVsZW1lbnQgKGluaXRpYWxseSBoaWRkZW4pICovXHJcblx0Jjo6YWZ0ZXIge1xyXG5cdFx0dHJhbnNmb3JtOiBzY2FsZVgoMSk7XHJcblx0XHR0cmFuc2Zvcm0tb3JpZ2luOiBib3R0b20gbGVmdDtcclxuXHR9XHJcblxyXG5cdCY6aG92ZXI6OmFmdGVyIHtcclxuXHRcdHRyYW5zZm9ybTogc2NhbGVYKDApO1xyXG5cdFx0dHJhbnNmb3JtLW9yaWdpbjogYm90dG9tIHJpZ2h0O1xyXG5cdH1cclxufVxyXG4lbGlua19ob3Zlcl91bmRlcmxlc3Mge1xyXG5cdEBleHRlbmQgJWxpbmtfZGVmYXVsdDtcclxuXHJcblx0Jjo6YWZ0ZXIge1xyXG5cdFx0dHJhbnNmb3JtOiBzY2FsZVgoMCk7XHJcblx0XHR0cmFuc2Zvcm0tb3JpZ2luOiBib3R0b20gcmlnaHQ7XHJcblx0fVxyXG5cclxuXHQmOmhvdmVyOjphZnRlciB7XHJcblx0XHR0cmFuc2Zvcm06IHNjYWxlWCgxKTtcclxuXHRcdHRyYW5zZm9ybS1vcmlnaW46IGJvdHRvbSBsZWZ0O1xyXG5cdH1cclxufVxyXG5cclxuJXNpZGViYXJfbGlua19pdGVtX2J0bnNfYmcge1xyXG5cdC8qIFxyXG4gICAgICAgIGhzbGEoMCwgMCUsIGNhbGModmFyKC0tc3VyZmFjZS1sKSAvIDEuMDg5KSwgMC43KSBcclxuICAgICAgICAtIHRoaXMgbmljZSByZXNvbHZlIGJ1dCBpdCBkb2Vzbid0IHdvcmsgYmNzIGl0IGlzIEJMQUNLLUlTSCwgV1RGID8/Pz8gXHJcbiAgICAqL1xyXG5cdC8vIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgaHNsYSgwLCAwJSwgY2FsYyh2YXIoLS1zdXJmYWNlLWwpIC8gMS4wODkpLCAwLjcpIDAlLCB2YXIoLS1jLXN1cmZhY2UtMikgMzAlLCB2YXIoLS1jLXN1cmZhY2UtMikgMTAwJSkgIWltcG9ydGFudDtcclxuXHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLXN1cmZhY2UtMikgIWltcG9ydGFudDtcclxuXHRib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogaW5oZXJpdDtcclxuXHRib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogaW5oZXJpdDtcclxuXHRwYWRkaW5nLWxlZnQ6IDAuNXJlbTtcclxufVxyXG4iLCIvKiBPdm8gbmVjZSB6Ym9nIENPUlMtYSAqL1xyXG4vLyBAaW1wb3J0IHVybCgnaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3MyP2ZhbWlseT1JbnRlcjp3Z2h0QDMwMDs0MDA7NTAwOzYwMDs3MDA7ODAwOzkwMCZkaXNwbGF5PXN3YXAnKTtcclxuLy8gQGltcG9ydCB1cmwoJ2h0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzMj9mYW1pbHk9SW50ZXI6d2dodEAzMDA7NDAwOzUwMDs2MDA7NzAwOzgwMDs5MDAmZmFtaWx5PUpldEJyYWlucytNb25vOml0YWwsd2dodEAwLDMwMDswLDQwMDswLDcwMDsxLDQwMCZkaXNwbGF5PXN3YXAnKTtcclxuXHJcbmh0bWwsXHJcbmJvZHkge1xyXG5cdC0tdGV4dC1wcmltYXJ5OiB2YXIoLS1jLXR4dCkgIWltcG9ydGFudDtcclxuXHJcblx0Zm9udC1mYW1pbHk6IHZhcigtLWYtZm0pICFpbXBvcnRhbnQ7XHJcblx0Y29sb3I6IHZhcigtLWMtdHh0KSAhaW1wb3J0YW50O1xyXG5cdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtYmctY2hhdHMtY29udGFpbmVyKSAhaW1wb3J0YW50O1xyXG59XHJcblxyXG5hIHtcclxuXHRmb250LWZhbWlseTogdmFyKC0tZi1mbSkgIWltcG9ydGFudDtcclxufVxyXG5cclxuLyogc2Nyb2xsYmFyLWNvbG9yIGZvciBGb3IgRmlyZWZveCAqL1xyXG5ALW1vei1kb2N1bWVudCB1cmwtcHJlZml4KCkge1xyXG5cdGh0bWwge1xyXG5cdFx0c2Nyb2xsYmFyLWNvbG9yOiB2YXIoLS1jLXNjcm9sbGJhci10aHVtYikgdmFyKC0tYy1zY3JvbGxiYXItdHJhY2spOyAvLyBzZWNvbmQgcGFyYW1ldGVyICh0cmFuc3BhcmVudCkgaXMgZm9yIGJnLXRodW1iXHJcblx0fVxyXG59XHJcbi8vIC8qIHNjcm9sbGJhci10aHVtYi1jb2xvciBmb3IgQ2hyb21pdW0tYmFzZWQgYnJvd3NlcnMgKi9cclxuOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XHJcblx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYy1zY3JvbGxiYXItdGh1bWIpICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbjo6c2VsZWN0aW9uIHtcclxuXHRiYWNrZ3JvdW5kLWNvbG9yOiBoc2xhKHZhcigtLWFjY2VudC1oc2wpIC8gMC41KSAhaW1wb3J0YW50O1xyXG5cdGNvbG9yOiB2YXIoLS1jLXR4dCkgIWltcG9ydGFudDtcclxuXHQvLyBjb2xvcjogdmFyKC0tYy1vbi1hY2NlbnQpICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbmJ1dHRvbiB7XHJcblx0LS10ZXh0LXByaW1hcnk6IHZhcigtLWMtdHh0KSAhaW1wb3J0YW50O1xyXG59XHJcblxyXG5pbnB1dDo6cGxhY2Vob2xkZXIsXHJcbnRleHRhcmVhOjpwbGFjZWhvbGRlciB7XHJcblx0Y29sb3I6IHZhcigtLWMtcGxhY2Vob2xkZXIpICFpbXBvcnRhbnQ7XHJcblx0b3BhY2l0eTogMC42ICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi5oLXB4IHtcclxuXHRkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi8qIC5tYXJrZG93biB7XHJcbiAgICBbdHlwZT1cImNoZWNrYm94XCJdOmNoZWNrZWQge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtYWNjZW50KTtcclxuICAgICAgICAtLXN2ZzogZXNjYXBlKCc8c3ZnIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwiQHtiYXNlfVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTEyLjIwNyA0Ljc5M2ExIDEgMCAwIDEgMCAxLjQxNGwtNSA1YTEgMSAwIDAgMS0xLjQxNCAwbC0yLTJhMSAxIDAgMCAxIDEuNDE0LTEuNDE0TDYuNSA5LjA4Nmw0LjI5My00LjI5M2ExIDEgMCAwIDEgMS40MTQgMHpcIi8+PC9zdmc+J1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgLy8gYmFja2dyb3VuZC1pbWFnZTogXCJ+dXJsKCdkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCxAe3N2Z30nKVwiO1xyXG4gICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IFwifnVybCgnZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsI3t2YXIoLS1zdmcpfX0nKVwiO1xyXG4gICAgfVxyXG59ICovXHJcblxyXG5jb2RlLmhsanMge1xyXG5cdC8vIGZvbnQtc2l6ZTogLjg1cmVtICFpbXBvcnRhbnQ7XHJcblx0Ly8gZm9udC1mYW1pbHk6ICdKZXRCcmFpbnMgTW9ubycsIG1vbm9zcGFjZSAhaW1wb3J0YW50O1xyXG5cdGxldHRlci1zcGFjaW5nOiAtMC4ycHg7XHJcbn1cclxuXHJcbi8qID09PSBCT1JERVIgUkFESVVTICovXHJcbi5yb3VuZGVkLW1kIHtcclxuXHRib3JkZXItcmFkaXVzOiB2YXIoLS1ici1idG4pO1xyXG59XHJcblxyXG4vKiBTaGFkb3cgaW4gXCJVcGdyYWRlIHlvdXIgcGxhblwiICovXHJcbi5zaGFkb3ctbWQge1xyXG5cdGJveC1zaGFkb3c6IG5vbmU7XHJcbn1cclxuXHJcbi8qIFwiNDA0IHxcIiBpbiBcIjQwNCB8IFRoaXMgcGFnZSBjb3VsZCBub3QgYmUgZm91bmRcIiAqL1xyXG4ubmV4dC1lcnJvci1oMSB7XHJcblx0Y29sb3I6IHZhcigtLWMtYWNjZW50KTtcclxuXHRib3JkZXItY29sb3I6IGN1cnJlbnRDb2xvciAhaW1wb3J0YW50O1xyXG5cdGZvbnQtc2l6ZTogdmFyKC0tZnN6LWVycm9yLTQwNCkgIWltcG9ydGFudDtcclxuXHRmb250LXdlaWdodDogNjAwICFpbXBvcnRhbnQ7XHJcbn1cclxuIiwiLyogPT09PSBUWVBPR1JBUEhZIENPTE9SUyAqL1xyXG5cclxuLypcclxuXHQtIE9icmF0aSBwYXpuanUgbmEgVE9PTFRJUCBjbHIgaSBhY2NlbnQgYnRucyBzYSBzdmchISFcclxuIFx0LSBIYXZlIHRvIGFkZCAudG9hc3Qtcm9vdCAudGV4dC13aGl0ZVtyb2xlPSdhbGVydCddIGludG8gOm5vdCgpIGJ1dCBpdCBzb21laG93IGFmZmVjdHMgdG9vbHRpcCB0eHQgY29sb3IsIHd0Zi4gQW5kIEkgY2FudCBpbnZlc3RpZ2F0ZSB0b29sdGlwIGJjcyBpdCBnb2VzIGhpZGRlbiB3aGVuIGl0IGlzIHNob3duIG9ubHkgb24gamF2YXNjcmlwdCBtb3VzZW92ZXIuXHJcblxyXG5cdC0gW2NsYXNzKj0ndGV4dC1ncmF5LSddIHV0aWNlIGkgbmEgZGl2W2RhdGEtcmFkaXgtcG9wcGVyLWNvbnRlbnQtd3JhcHBlcl0gdGogXCJUaGVtZVwiIGRyb3Bkb3duIGl0ZW1lIHRlIG5lIG1vZ3UgZGEgc2Ugb3ZlcndyaXR1anUgdGFtbyB1IF9tZW51LnNjc3MuIFphdG8gc2FtIHNrbG9uaWxhICFpbXBvcnRhbnRcclxuKi9cclxuW2NsYXNzKj0ndGV4dC1ncmF5LSddOm5vdCgudGV4dC1ncmF5LTEwMCwgLnRleHQtZ3JheS00MDAsIC50ZXh0LWdyYXktNTAwLCAudGV4dC1ncmF5LTYwMCksXHJcbltjbGFzcyo9J3RleHQtd2hpdGUnXTpub3QoLmJ0bi1wcmltYXJ5IC50ZXh0LXdoaXRlLCAuYmctZ3JlZW4tNjAwLCBzdmcsIC50b2FzdC1yb290IC50ZXh0LXdoaXRlW3JvbGU9J2FsZXJ0J10pIHtcclxuXHRjb2xvcjogdmFyKC0tYy10eHQpO1xyXG59XHJcblxyXG4vKiBcclxuIC0gSXMgdGhpcyBjb252ZXJzYXRpb24gaGVscGZ1bCBzbyBmYXI/IPCfkY3wn5GOXHJcbiAtIHRnLTUwMCBqZSByZWNpbW8gYnRuIHN2ZyB1IFwiQXJjaGl2ZWQvU2hhcmVkIExpbmtzXCIgcG9wdXBcclxuIC0gdGctNDAwIChkYXJrKSB0Zy02MDAgKGxpZ2h0KSBpbiBcIllvdSBoYXZlIG5vIHNoYXJlZCBsaW5rcy5cIlxyXG4qL1xyXG4udGV4dC1ncmF5LTQwMCxcclxuLnRleHQtZ3JheS02MDAsXHJcbi50ZXh0LWdyYXktNTAwIHtcclxuXHRjb2xvcjogdmFyKC0tYy1zdWJ0ZXh0LTIpICFpbXBvcnRhbnQ7XHJcblx0Ly8gY29sb3I6IHJlZCAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4vKiAudGV4dC1naXptby1ncmF5LTUwMCBpcyB0aGUgZm9vdGVyIHR4dCBpbiBkaWFsb2cgXCJZT1UnUkUgSU5WSVRFRCBUTyBQTFVTXCIgKi9cclxuLnRleHQtZ2l6bW8tZ3JheS01MDAsXHJcbi50ZXh0LWdyYXktMTAwIHtcclxuXHRjb2xvcjogdmFyKC0tYy1zdWJ0ZXh0LTEpICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi50ZXh0LXRva2VuLXRleHQtc2Vjb25kYXJ5IHtcclxuXHRjb2xvcjogdmFyKC0tYy1zdWJ0ZXh0LTEpICFpbXBvcnRhbnQ7XHJcblx0Ly8gY29sb3I6IHJlZCAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4vKiBcIkxvZyBvdXRcIiwgXCJEZWxldGUgYWxsIGNvbnZlcnNhdGlvbnNcIiwgXCJEZWxldGUgY2hhdFwiICovXHJcbi50ZXh0LXJlZC01MDAge1xyXG5cdGNvbG9yOiB2YXIoLS1jLWRhbmdlcikgIWltcG9ydGFudDtcclxufVxyXG5cclxuLyogSW50cm8gcGFnZSAoYmVmb3JlIGxvZ2luKSAqL1xyXG5bY2xhc3MqPSd0ZXh0LVsjRkU3NjAwXSddIHtcclxuXHRjb2xvcjogdmFyKC0tYy1hY2NlbnQpO1xyXG59XHJcbiIsIi8qID09PSBCRyBDT0xPUlMgKi9cclxuXHJcbi8qIFxyXG4tIFRleHRhcmVhIG1zZyBiZy4gXHJcbi0gXCJTaGFyZSBsaW5rIHRvIGNoYXRcIiBkaWFsb2cgY2hhdCBtaW4gZHVwbGljYXRlICguYmctd2hpdGUpXHJcbi0gQ2hhdCBoaXN0b3J5ICYgVHJhaW5pbmdcIiBjaGVja2JveCBidWxsZXRcclxuICovXHJcbi5iZy1ncmF5LTkwMCxcclxuLmJnLXdoaXRlIHtcclxuXHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLXN1cmZhY2UtMSkgIWltcG9ydGFudDtcclxuXHQvLyBiYWNrZ3JvdW5kLWNvbG9yOiByZWQgIWltcG9ydGFudDtcclxufVxyXG5cclxuLyogXHJcbi8vIGBgYCAuYmctZ3JheS01MFxyXG5cdFx0LSBcIuKdk1wiIGJ0biBcclxuXHJcbi8vIGBgYCAuYmctZ3JheS0xMDBcclxuXHRcdC0gTGluZSB8IGluIFwiSXMgdGhpcyBjb252ZXJzYXRpb24gaGVscGZ1bCBzbyBmYXI/XHJcbvCfkY0g8J+RjiB8IOKclu+4j1wiICovXHJcbi5iZy1ncmF5LTUwLFxyXG4uYmctZ3JheS0xMDAge1xyXG5cdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtc3VyZmFjZS0yKSAhaW1wb3J0YW50O1xyXG59XHJcbi8vIC5iZy1ncmF5LTUwIHtcclxuLy8gXHQvLyBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLXN1cmZhY2UtMikgIWltcG9ydGFudDtcclxuLy8gXHRiYWNrZ3JvdW5kLWNvbG9yOiByZWQgIWltcG9ydGFudDtcclxuLy8gfVxyXG5cclxuLyogXHJcbiAtIFwiV2FzIHRoaXMgcmVzcG9uc2UgYmV0dGVyIG9yIHdvcnNlP1wiIGVsIHdoZW4gY2xpY2tlZCBvbiByZWdlbmVyYXRlIGFuc3dlciBidG4gXHJcbiAtIFwiRGVsZXRlIGFsbCBzaGFyZWQgbGlua3NcIiBpbiBcIlNoYXJlZCBsaWtzXCIgZGlhbG9nXHJcbiAtIGxpbmUgfCBiZXR3ZWVuIFwicyB0aGlzIGNvbnZlcnNhdGlvbiBoZWxwZnVsIHNvIGZhcj8g8J+RjfCfkY5cIiBhbmQgXCJ4XCJcclxuKi9cclxuLy8gLmJnLWdyYXktMTAwLFxyXG4vLyBbY2xhc3MqPVwiOmJnLWdyYXktNzAwXCJdIHtcclxuLy8gICAgIGJhY2tncm91bmQtY29sb3I6IHJlZCAhaW1wb3J0YW50O1xyXG4vLyB9XHJcblxyXG4vKiBob3ZlcjpiZy1ncmF5LTEwMCBkYXJrOmhvdmVyOmJnLWdyYXktNjAwIFxyXG5cdC0gR1BUcyBTdG9yZSBQQUdFIC0gXCJGZWF0dXJlZFwiIHNlY3Rpb24gaXRlbXMgOmhvdmVyIHN0YXRlc1xyXG5cdC0gR1BUcyBTdG9yZSBQQUdFIC0gXCJUb3AgcGlja3NcIiwgXCJEQUxMRVwiLCBcIldyaXRpbmdcIiBldGMgdGFncyA6aG92ZXIgc3RhdGVzIFxyXG5cdC0gR1BUcyBTdG9yZSBQQUdFIC0gXCJTZWFyY2ggcHVibGljIEdQVHNcIiBzZWFyY2ggbGlzdCBpdGVtIGJnIDpob3ZlciBzdGF0ZXMgKi9cclxuW2NsYXNzKj0nZGFyazpob3ZlcjpiZy1ncmF5LTYwMCddIHtcclxuXHQmOmhvdmVyIHtcclxuXHRcdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtc3VyZmFjZS0xKSAhaW1wb3J0YW50O1xyXG5cdFx0Ly8gYmFja2dyb3VuZC1jb2xvcjogcmVkICFpbXBvcnRhbnQ7XHJcblx0fVxyXG59XHJcblxyXG4vKiBHUFRzIHN0b3JlIFBBR0UgLSBcIlRyZW5kaW5nXCIgc2VjdGlvbiBpdGVtcyBob3ZlciBzdGF0ZVwiICovXHJcbltjbGFzcyo9J2Rhcms6aG92ZXI6YmctZ3JheS03MDAnXSB7XHJcblx0Jjpob3ZlciB7XHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLXN1cmZhY2UtMikgIWltcG9ydGFudDtcclxuXHR9XHJcbn1cclxuXHJcbi8qIFtyb2xlPSdtZW51aXRlbSddIDpob3ZlciBzdGF0ZSAqL1xyXG5bY2xhc3MqPSdkYXJrOmhvdmVyOmJnLWdyYXktODAwJ10sXHJcbltjbGFzcyo9J2Rhcms6aG92ZXI6Ymctd2hpdGUvNSddIHtcclxuXHQmOmhvdmVyIHtcclxuXHRcdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtc3VyZmFjZS0yKSAhaW1wb3J0YW50O1xyXG5cdFx0Ly8gYmFja2dyb3VuZC1jb2xvcjogcmVkICFpbXBvcnRhbnQ7XHJcblx0fVxyXG59XHJcblxyXG4vKiBcclxuXHQtIEdQVFMgc3RvcmUgUEFHRSAtIFwiU2VhcmNoIHB1YmxpYyBHUFRzXCIgc2VhcmNoIGxpc3QgaXRlbSBiZyBcclxuXHQtIEdQVHMgU3RvcmUgUEFHRSAtIFwiVG9wIHBpY2tzXCIsIFwiREFMTEVcIiwgXCJXcml0aW5nXCIgZXRjIHRhZ3MgXHJcblx0LSBHUFRzIFN0b3JlIFBBR0UgLSBcIkZlYXR1cmVkXCIgc2VjdGlvbiBpdGVtcyBiZ1xyXG5cdC0gR1BUcyBTdG9yZSBQQUdFIC0gQmcgZm9yIEJ1dHRvbnMgbGVmdCBhbmQgcmlnaHQgYXJyb3cgZm9yIFwiVG9wIHBpY2tzXCIsIFwiREFMTEVcIiwgXCJXcml0aW5nXCIgZXRjIHRhZ3Mgb24gc21hbGxlciBzY3JlZW5zXHJcblx0LSBJbnB1dHMgaW4gXCJEZWxldGUgQWNjb3VudC0gQXJlIHlvdSBzdXJlXCIgZGlhbG9nICAqL1xyXG5bY2xhc3MqPSdkYXJrOmJnLWdyYXktNzAwJ10ge1xyXG5cdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtc3VyZmFjZS0yKSAhaW1wb3J0YW50O1xyXG5cdC8vIGJhY2tncm91bmQtY29sb3I6IHJlZCAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4vKiBcclxuLSBcIlNoYXJlZCBsaW5rc1wiIFBBR0UgLSBvdmVyYWxsIEJHICEhISFcclxuLSBHUFRTIHN0b3JlIFBBR0UgLSBcIlNlYXJjaCBwdWJsaWMgR1BUc1wiIHNlYXJjaCBpbnB1dCBiZy4gTmVtYSBrbGFzZSB6YSBsaWdodCB0ZW11IHRlIHNlbGVrdHVqZW0ga2xhc29tIHphIGRhcmtzIFxyXG4tIEJnIG9mIG1pbmkgY2hhdC1idWJibGUgaW4gXCJTaGFyZSBsaW5rIHRvIGNoYXRcIiBkaWFsb2cuXHJcbi0gVGV4dGFyZWEgaW4gW3JvbGU9XCJkaWFsb2dcIl0gKi9cclxuW2NsYXNzKj0nZGFyazpiZy1ncmF5LTgwMCddIHtcclxuXHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLWJnLWNoYXRzLWNvbnRhaW5lcikgIWltcG9ydGFudDsgLy8gdmFyKC0tYy1zdXJmYWNlLTMpXHJcblx0Ly8gYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYy1zdXJmYWNlLTEpICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi8qIFNoYXJlZCBjaGF0cyBQQUdFIC0gZ3JlZW4gYnV0dG9uIFwiVXBncmFkZSB0byBQbHVzIHRvIGNyZWF0ZSB5b3VyIG93biBHUFRcIiAqL1xyXG5bY2xhc3MqPSdiZy1ncmVlbi02MDAnXSB7XHJcblx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYy1hY2NlbnQpICFpbXBvcnRhbnQ7XHJcblx0Y29sb3I6IHZhcigtLWMtb24tYWNjZW50KSAhaW1wb3J0YW50O1xyXG59XHJcblxyXG5bY2xhc3MqPSdiZy1yZWQtNTAwLzEwJ10ge1xyXG5cdGJhY2tncm91bmQtY29sb3I6IGhzbGEodmFyKC0tZGFuZ2VyLWhzbCkgLyAwLjExKSAhaW1wb3J0YW50O1xyXG5cdGNvbG9yOiB2YXIoLS1jLWRhbmdlcikgIWltcG9ydGFudDtcclxuXHQvLyBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLWRhbmdlcikgIWltcG9ydGFudDtcclxufVxyXG5cclxuLyogTGlrZSBpY29uIGluIFwiUHJvdmlkZSBhZGl0aW9uYWwgZmVlZGJhY2tcIiBkaWFsb2cgd2hlbiBjbGlja2VkIGxpa2VkIGFuc3dlciAqL1xyXG4vLyAuYmctZ3JlZW4tMTAwIHt9XHJcblxyXG4uYmctZ3JhZGllbnQtdG8tbCxcclxuLmJnLWdyYWRpZW50LXRvLXIge1xyXG5cdC0tZ3JhZGllbnQtY29sb3ItZnJvbTogdmFyKC0tYy1zdXJmYWNlLTEpO1xyXG5cdC0tZ3JhZGllbnQtY29sb3ItdG86IHRyYW5zcGFyZW50O1xyXG5cclxuXHQtLXR3LWdyYWRpZW50LWZyb206IHZhcigtLWdyYWRpZW50LWNvbG9yLWZyb20pIHZhcigtLXR3LWdyYWRpZW50LWZyb20tcG9zaXRpb24pICFpbXBvcnRhbnQ7XHJcblx0LS10dy1ncmFkaWVudC10bzogdmFyKC0tZ3JhZGllbnQtY29sb3ItdG8pIHZhcigtLXR3LWdyYWRpZW50LXRvLXBvc2l0aW9uKTtcclxufVxyXG5cclxuLyogQWN0aXZlIGxpbmsgYmcgaW4gc2lkZWJhciBsaXN0aXRlbSAqL1xyXG4uYmctdG9rZW4tc3VyZmFjZS1zZWNvbmRhcnkge1xyXG5cdC0tc3VyZmFjZS1zZWNvbmRhcnk6IHZhcigtLWMtc3VyZmFjZS0yKSAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4vKiBcclxuLSBEaWFsb2dzXHJcbi0gVGFicyBpbiBcIlNldHRpbmdzXCJcclxuLSBUYWJsZSA8dGhlYWQ+IGVsc1xyXG4tIFNoYXJlIExpbmsgPiBNaW5pIGNoYXQgY29udmVyc2F0aW9uXHJcbi0gQ29udGV4dCBtZW51IGl0ZW1zIGluIFNoYXJlIExpbmsgPiBNaW5pIGNoYXQgY29udmVyc2F0aW9uXHJcbi0gQ29udGV4dCBtZW51IGl0ZW1zIGluIFNldHRpbmdzID4gVGhlbWUgZGRsIGFuZCBUaGVtZVxyXG4tIFN0aWNreSBoZWFkZXIgXHJcbi0gUHJvbXB0IHRleHRhcmVhXHJcbi0gU2lkZWJhciBDaXJjbGVkIGdwdCBsb2dvIC0gTkVXQ0hBVC9DTEVBUiBDSEFUXHJcbi0gQ2lyY2xlZCBncHQgbG9nbyBcIkhvdyBjYW4gSSBoZWxwIHlvdSB0b2RheVxyXG4tIFNjcm9sbGRvd24gYnRuXHJcbi0g4p2TIGJ0biBvbiBib3R0b20gcmlnaHRcclxuLSBDaGVja2JveCBjaXJjbGVcclxuLSBHUFRzIFN0b3JlIFBBR0UgLSBTZWFyY2ggcXVlcnkgc2VjdGlvblxyXG4tIEdQVHMgU3RvcmUgUEFHRSAtIFNlYXJjaCBxdWVyeSBzZWN0aW9uIGxpbmstb24taG92ZXIgLSBDSEFOR0UgSVQgISFcclxuICovXHJcbltjbGFzcyo9J2JnLXdoaXRlJ10sXHJcbi5iZy10b2tlbi1zaWRlYmFyLXN1cmZhY2Utc2Vjb25kYXJ5IHtcclxuXHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLXN1cmZhY2UtMikgIWltcG9ydGFudDtcclxuXHQvLyBAaW5jbHVkZSBib3JkZXJCb3hTaGFkb3cocmVkKTtcclxuXHQvLyBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7XHJcbn1cclxuXHJcbi8qIFxyXG4tIFNpZGViYXJcclxuLSBTaWRlYmFyIHN0aWNreSBiZWhpbmQgTkVXQ0hBVCBidG5cclxuLSBTaWRlYmFyIFwiVG9kYXlcIiwgXCJZZXN0ZXJkYXlcIi4uLiB0aW1lIGhlYWRpbmdzIFxyXG4tIFNpZGViYXIgdXNlciBwcm9maWxlIHBpY3R1cmVcclxuLSBUb29sdGlwXHJcbi0gQ2hhdEdQVCAzLjUgYnRuIGluIHN0aWNreSBoZWFkZXJcclxuLSBDb250ZXh0IG1lbnUgaXRlbXMgaW4gM2RvdHNcclxuLSBDb250ZXh0IG1lbnUgaXRlbXMgaW4gQ2hhdEdQVCAzLjVcclxuLSBNYXJrZG93biA8cHJlPlxyXG4tIFByb21wdCB0ZXh0YXJlYSBzZW5kIGJ1dHRvblxyXG4tIEdQVHMgLSBhY3RpdmUgcGlsbCAoXCJUb3AgUGlja3NcIilcclxuICovXHJcbltjbGFzcyo9J2JnLWJsYWNrJ10sXHJcbi5iZy10b2tlbi1zaWRlYmFyLXN1cmZhY2UtcHJpbWFyeSB7XHJcblx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYy1zdXJmYWNlLTEpO1xyXG5cdC8vIEBpbmNsdWRlIGJvcmRlckJveFNoYWRvdyhsaWdodGdyZWVuKTtcclxuXHQvLyBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGdyZWVuO1xyXG59XHJcbiIsIi8qID09PSBCT1JERVIgQ09MT1JTICovXHJcblxyXG4vKiBCb3JkZXIgaW4gdGV4dGFyZWEgaW4gXCJDdXN0b20gSW5zdHJ1Y3Rpb25zXCIgZGlhbG9nICovXHJcbi5ib3JkZXItZ3JheS0xMDAge1xyXG5cdC8vIGJvcmRlci1jb2xvcjogdmFyKC0tYy1zdXJmYWNlLTEpICFpbXBvcnRhbnQ7XHJcblx0Ym9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4uYm9yZGVyLWdyYXktMjAwIHtcclxuXHRib3JkZXItY29sb3I6IHZhcigtLWMtc3VyZmFjZS0yKSAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4vKiBCb3JkZXIgaW4gaW5wdXRzIGluIFwiVXBncmFkZSB5b3VyIFBsYW5cIiBkaWFsb2cgKi9cclxuLmJvcmRlci1ncmF5LTMwMCB7XHJcblx0Ly8gYm9yZGVyLWNvbG9yOiByZWQgIWltcG9ydGFudDtcclxuXHQvLyBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XHJcblx0Ym9yZGVyOiBub25lO1xyXG59XHJcblxyXG4vKiBcIlVwZ3JhZGUgeW91ciBwbGFuXCIgZGlhbG9nLCBcIlNoYXJlIGxpbmsgdG8gY2hhdFwiIGRpYWxvZyBjaGF0IG1pbiBkdXBsaWNhdGUgKi9cclxuW2NsYXNzKj0nZGFyazpib3JkZXItZ3JheS03MDAnXSB7XHJcblx0Ym9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xyXG5cdC8vIGJvcmRlci1jb2xvcjogcmVkICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi8qIEJvcmRlciBpbiBkaWFsb2dzIGFmdGVyIG1haW4gaGVhZGluZyAtIERBUksgKi9cclxuaHRtbC5kYXJrIFtjbGFzcyo9Jzpib3JkZXItd2hpdGUvMTAnXSB7XHJcblx0Ym9yZGVyLWNvbG9yOiB2YXIoLS1jLWJvcmRlci1hY2NlbnQpICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi8qIEJvcmRlciBpbiBkaWFsb2dzIGFmdGVyIG1haW4gaGVhZGluZyAtIExJR0hUICovXHJcbmh0bWwubGlnaHQgW2NsYXNzKj0nOmJvcmRlci13aGl0ZS8xMCddIHtcclxuXHRib3JkZXItY29sb3I6IHZhcigtLWMtYm9yZGVyKSAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4vKiBcIlRoaXMgY29udGVudCBtYXkgdmlvbGF0ZSBjb250ZW50IHBvbGljeS4uLlwiIHdhcm5pbmcgKi9cclxuW2NsYXNzKj0nYm9yZGVyLXJlZC01MDAnXSB7XHJcblx0Ym9yZGVyLWNvbG9yOiB2YXIoLS1jLWRhbmdlcikgIWltcG9ydGFudDtcclxufVxyXG4iLCIvLyBbY2xhc3MqPSdyb3VuZGVkLXhsJ10ge1xyXG4vLyBcdGJvcmRlci1yYWRpdXM6IHZhcigtLWJyLWJ0bi1iaWcpICFpbXBvcnRhbnQ7XHJcbi8vIFx0Ym9yZGVyOiAxcHggc29saWQgcmVkICFpbXBvcnRhbnQ7XHJcbi8vIH1cclxuLy8gW2NsYXNzKj0ncm91bmRlZC1sZyddIHtcclxuLy8gXHRib3JkZXItcmFkaXVzOiB2YXIoLS1ici1idG4pICFpbXBvcnRhbnQ7XHJcbi8vIFx0Ym9yZGVyOiAxcHggc29saWQgZ3JlZW4gIWltcG9ydGFudDtcclxuLy8gfVxyXG4vLyBbY2xhc3MqPSdyb3VuZGVkLW1kJ10ge1xyXG4vLyBcdGJvcmRlci1yYWRpdXM6IHZhcigtLWJyLWJ0bikgIWltcG9ydGFudDtcclxuLy8gXHRib3JkZXI6IDFweCBzb2xpZCB5ZWxsb3cgIWltcG9ydGFudDtcclxuLy8gfVxyXG4vKiBcclxuLSBTY3JvbGwgZG93biBidG4uXHJcbi0gR1BUcyAtIHByb2R1Y3QgY2FyZCBjaXJjbGUgcGljdHVyZXNcclxuLSBHZW5lcmFsIHByb2ZpbGUgcGljOiBcIk5FV0NIQVRcIiwgXCJVcGdyYWRlIFBsYW5cIiwgdXNlciBwcm9maWxlIGluIHNpZGViYXIuXHJcbi0gQ2hlY2sgc3dpdGNoIGJ0blxyXG4tIENsb3NlIHNpZGViYXIgYnRuICovXHJcbi5yb3VuZGVkLWZ1bGwge1xyXG5cdC8vIEBpbmNsdWRlIGJvcmRlckJveFNoYWRvdyhyZ2IoMiwgMCwgMTM5KSk7XHJcbn1cclxuXHJcbi8qIFxyXG4tIEdQVHMgLSBwaWxsIHRhZ3MgaW4gc3RpY2t5IGhlYWRlciAqL1xyXG4ucm91bmRlZC0zeGwge1xyXG5cdC8vIGJvcmRlci1yYWRpdXM6IHZhcigtLWJyLWJ0bi1iaWcpICFpbXBvcnRhbnQ7XHJcblx0Ly8gQGluY2x1ZGUgYm9yZGVyQm94U2hhZG93KHB1cnBsZSk7XHJcbn1cclxuLyogXHJcbi0gRGlhbG9nc1xyXG4tIENoYXRHUFQgMy41IGJ0biBpbiBzdGlja3kgaGVhZGVyXHJcbi0gR1BUcyAtIFNlYXJjaCBpbnB1dFxyXG4tIEdQVHMgLSBwcm9kdWN0IGNhcmRzXHJcbi0gTkVXIENIQVQgYmlnIGJ1dHRvbnNcclxuLSBORVcgQ0hBVCBiaWcgYnRucyBvbiBob3ZlciBzdmcgd3JhcHBlciBldGNcclxuLSBDdXN0b20gSW5zdHJ1Y3Rpb25zID4gXCJidWJibGVcIiBvbiByaWdodCBzaWRlIHdoZW4gdGV4dGFyZWEgZm9jdXNlZCAqL1xyXG4ucm91bmRlZC14bCB7XHJcblx0Ym9yZGVyLXJhZGl1czogdmFyKC0tYnItYnRuLWJpZykgIWltcG9ydGFudDtcclxuXHQvLyBAaW5jbHVkZSBib3JkZXJCb3hTaGFkb3cocmVkKTtcclxufVxyXG5cclxuLyogXHJcbi0gQWxsIHNpZGViYXIgPGE+IGJ1dHRvbnMvbGlua3NcclxuLSBUaGVtZSBidG4sXHJcbi0gU1ZHczogU2hhcmUgTGluaywgU2VuZCBidG4gaW4gcG9tcHQtdGV4dGFyZWEsICBcclxuLSBHUFRzIC0gc3RpY2t5IGJ0bnMgXCJHbG9iYWwgdmlld1wiIGFuZCBcIk15IEdQVHNcIlxyXG4tIEdQVHMgLSBzZWFyY2ggcXVlcnkgc2VjdGlvbiBwcm9kdWN0IGNhcmRzL2l0ZW1zIFxyXG4tIFRvYXN0IHJvb3Qgbm90aWZ5XHJcbi0gICovXHJcbi5yb3VuZGVkLWxnIHtcclxuXHRib3JkZXItcmFkaXVzOiB2YXIoLS1ici1idG4pICFpbXBvcnRhbnQ7XHJcblx0Ly8gQGluY2x1ZGUgYm9yZGVyQm94U2hhZG93KG9yYW5nZSk7XHJcbn1cclxuXHJcbi8qXHJcbi0gU21hbGwgYnRucyBpbiBjaGF0IGZvb3Rlci5cclxuLSA8cHJlPlxyXG4tIFRhYiBidG5zIGluIGRpYWxvZy5cclxuLSBjb250ZXh0bWVudS1pdGVtcyBpbiBcIlRoZW1lXCIgZGRsXHJcbi0gXCJXYXMgdGhpcyByZXNwb25zZSBiZXR0ZXIgb3Igd29yc2U/IPCfkY3wn5GOXCIgZWwgd2hlbiBjbGlja2VkIG9uIHJlZ2VuZXJhdGUgYW5zd2VyIGJ0biBhbmQgaXRzIGlubmVyIGJ1dHRvbnMgKi9cclxuLnJvdW5kZWQtbWQge1xyXG5cdGJvcmRlci1yYWRpdXM6IHZhcigtLWJyLWJ0bikgIWltcG9ydGFudDtcclxuXHQvLyBAaW5jbHVkZSBib3JkZXJCb3hTaGFkb3coeWVsbG93KTtcclxufVxyXG5cclxuLypcclxuLSBUZXh0YXJlYSBpbiBkaWFsb2cuXHJcbi0gbWVudWl0ZW1zIGluIENoYXRHUFQgMy41IGNvbnRleHRtZW51IGFuZCBjb250ZXh0bWVudSBpbiAzZG90cyBpbiBzaWRlYmFyICAoXCJTaGFyZVwiLCBcIlJlbmFtZVwiLCBcIkRlbGV0ZVwiKSAqL1xyXG4ucm91bmRlZCB7XHJcblx0Ym9yZGVyLXJhZGl1czogdmFyKC0tYnItYnRuKSAhaW1wb3J0YW50O1xyXG5cdC8vIEBpbmNsdWRlIGJvcmRlckJveFNoYWRvdyhsaWdodGdyZWVuKTtcclxufVxyXG5cclxuLnJvdW5kZWQtdC1tZCB7XHJcblx0Ly8gb3ZlcmZsb3c6IGNsaXAgIWltcG9ydGFudDtcclxuXHRib3JkZXItdG9wLWxlZnQtcmFkaXVzOiB2YXIoLS1ici1idG4pICFpbXBvcnRhbnQ7XHJcblx0Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IHZhcigtLWJyLWJ0bikgIWltcG9ydGFudDtcclxufVxyXG4ucm91bmRlZC1iLW1kIHtcclxuXHQvLyBvdmVyZmxvdzogY2xpcCAhaW1wb3J0YW50O1xyXG5cdGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IHZhcigtLWJyLWJ0bikgIWltcG9ydGFudDtcclxuXHRib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogdmFyKC0tYnItYnRuKSAhaW1wb3J0YW50O1xyXG59XHJcbiIsIi8qIVxyXG4gIFRoZW1lOiBSb3PDqSBQaW5lIE1vb25cclxuICBBdXRob3I6IEVtaWxpYSBEdW5mZWx0IDxzYXloaUBkdW5mZWx0LnNlPlxyXG4gIExpY2Vuc2U6IH4gTUlUIChvciBtb3JlIHBlcm1pc3NpdmUpIFt2aWEgYmFzZTE2LXNjaGVtZXMtc291cmNlXVxyXG4gIE1haW50YWluZXI6IEBoaWdobGlnaHRqcy9jb3JlLXRlYW1cclxuICBWZXJzaW9uOiAyMDIxLjA5LjBcclxuKi9cclxuXHJcbi8qXHJcbiAgV0FSTklORzogRE8gTk9UIEVESVQgVEhJUyBGSUxFIERJUkVDVExZLlxyXG5cclxuICBUaGlzIHRoZW1lIGZpbGUgd2FzIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGhlIEJhc2UxNiBzY2hlbWUgcm9zLXBpbmUtbW9vblxyXG4gIGJ5IHRoZSBIaWdobGlnaHQuanMgQmFzZTE2IHRlbXBsYXRlIGJ1aWxkZXIuXHJcblxyXG4gIC0gaHR0cHM6Ly9naXRodWIuY29tL2hpZ2hsaWdodGpzL2Jhc2UxNi1oaWdobGlnaHRqc1xyXG4qL1xyXG5cclxuLypcclxuYmFzZTAwICAjMjMyMTM2ICBEZWZhdWx0IEJhY2tncm91bmRcclxuYmFzZTAxICAjMmEyNzNmICBMaWdodGVyIEJhY2tncm91bmQgKFVzZWQgZm9yIHN0YXR1cyBiYXJzLCBsaW5lIG51bWJlciBhbmQgZm9sZGluZyBtYXJrcylcclxuYmFzZTAyICAjMzkzNTUyICBTZWxlY3Rpb24gQmFja2dyb3VuZFxyXG5iYXNlMDMgICM1OTU0NmQgIENvbW1lbnRzLCBJbnZpc2libGVzLCBMaW5lIEhpZ2hsaWdodGluZ1xyXG5iYXNlMDQgICM4MTdjOWMgIERhcmsgRm9yZWdyb3VuZCAoVXNlZCBmb3Igc3RhdHVzIGJhcnMpXHJcbmJhc2UwNSAgI2UwZGVmNCAgRGVmYXVsdCBGb3JlZ3JvdW5kLCBDYXJldCwgRGVsaW1pdGVycywgT3BlcmF0b3JzXHJcbmJhc2UwNiAgI2Y1ZjVmNyAgTGlnaHQgRm9yZWdyb3VuZCAoTm90IG9mdGVuIHVzZWQpXHJcbmJhc2UwNyAgI2Q5ZDdlMSAgTGlnaHQgQmFja2dyb3VuZCAoTm90IG9mdGVuIHVzZWQpXHJcbmJhc2UwOCAgI2VjZWJmMCAgVmFyaWFibGVzLCBYTUwgVGFncywgTWFya3VwIExpbmsgVGV4dCwgTWFya3VwIExpc3RzLCBEaWZmIERlbGV0ZWRcclxuYmFzZTA5ICAjZWI2ZjkyICBJbnRlZ2VycywgQm9vbGVhbiwgQ29uc3RhbnRzLCBYTUwgQXR0cmlidXRlcywgTWFya3VwIExpbmsgVXJsXHJcbmJhc2UwQSAgI2Y2YzE3NyAgQ2xhc3NlcywgTWFya3VwIEJvbGQsIFNlYXJjaCBUZXh0IEJhY2tncm91bmRcclxuYmFzZTBCICAjZWE5YTk3ICBTdHJpbmdzLCBJbmhlcml0ZWQgQ2xhc3MsIE1hcmt1cCBDb2RlLCBEaWZmIEluc2VydGVkXHJcbmJhc2UwQyAgIzNlOGZiMCAgU3VwcG9ydCwgUmVndWxhciBFeHByZXNzaW9ucywgRXNjYXBlIENoYXJhY3RlcnMsIE1hcmt1cCBRdW90ZXNcclxuYmFzZTBEICAjOWNjZmQ4ICBGdW5jdGlvbnMsIE1ldGhvZHMsIEF0dHJpYnV0ZSBJRHMsIEhlYWRpbmdzXHJcbmJhc2UwRSAgI2M0YTdlNyAgS2V5d29yZHMsIFN0b3JhZ2UsIFNlbGVjdG9yLCBNYXJrdXAgSXRhbGljLCBEaWZmIENoYW5nZWRcclxuYmFzZTBGICAjYjliOWJjICBEZXByZWNhdGVkLCBPcGVuaW5nL0Nsb3NpbmcgRW1iZWRkZWQgTGFuZ3VhZ2UgVGFncywgZS5nLiA8P3BocCA/PlxyXG4qL1xyXG5wcmUge1xyXG5cdC0tYy1iZy1wcmU6ICMyMzIxMzY7XHJcbn1cclxucHJlIGNvZGUuaGxqcyB7XHJcblx0ZGlzcGxheTogYmxvY2s7XHJcblx0b3ZlcmZsb3cteDogYXV0bztcclxuXHRwYWRkaW5nOiAxZW07XHJcbn1cclxuXHJcbmNvZGUuaGxqcyB7XHJcblx0cGFkZGluZzogM3B4IDVweDtcclxufVxyXG5cclxuLmhsanMsXHJcbi8qIG1hcmtkb3duIHByZSAqL1xyXG5wcmUgLmJnLXRva2VuLW1haW4tc3VyZmFjZS1zZWNvbmRhcnksXHJcbi8qIG1hcmtkb3duIGhlYWRlciAtIGxhbmcgbmFtZSBhbmQgY29weSBidG4gKi9cclxucHJlIC5iZy10b2tlbi1tYWluLXN1cmZhY2Utc2Vjb25kYXJ5PmRpdjpoYXMoPiBzcGFuKSB7XHJcblx0Y29sb3I6ICNlMGRlZjQgIWltcG9ydGFudDtcclxuXHRiYWNrZ3JvdW5kOiB2YXIoLS1jLWJnLXByZSkgIWltcG9ydGFudDtcclxufVxyXG5cclxuLmhsanM6OnNlbGVjdGlvbixcclxuLmhsanMgOjpzZWxlY3Rpb24ge1xyXG5cdGJhY2tncm91bmQtY29sb3I6ICMzOTM1NTIgIWltcG9ydGFudDtcclxuXHRjb2xvcjogI2UwZGVmNCAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4vKiBwdXJwb3NlbHkgZG8gbm90IGhpZ2hsaWdodCB0aGVzZSB0aGluZ3MgKi9cclxuLmhsanMtZm9ybXVsYSxcclxuLmhsanMtcGFyYW1zLFxyXG4uaGxqcy1wcm9wZXJ0eSB7XHJcbn1cclxuXHJcbi8qIGJhc2UwMyAtICM1OTU0NmQgLSAgQ29tbWVudHMsIEludmlzaWJsZXMsIExpbmUgSGlnaGxpZ2h0aW5nICovXHJcbi5obGpzLWNvbW1lbnQge1xyXG5cdGNvbG9yOiAjNTk1NDZkICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi8qIGJhc2UwNCAtICM4MTdjOWMgLSAgRGFyayBGb3JlZ3JvdW5kIChVc2VkIGZvciBzdGF0dXMgYmFycykgKi9cclxuLmhsanMtdGFnIHtcclxuXHRjb2xvcjogIzgxN2M5YyAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4vKiBiYXNlMDUgLSAjZTBkZWY0IC0gIERlZmF1bHQgRm9yZWdyb3VuZCwgQ2FyZXQsIERlbGltaXRlcnMsIE9wZXJhdG9ycyAqL1xyXG4uaGxqcy1zdWJzdCxcclxuLmhsanMtcHVuY3R1YXRpb24sXHJcbi5obGpzLW9wZXJhdG9yIHtcclxuXHRjb2xvcjogI2UwZGVmNCAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4uaGxqcy1vcGVyYXRvciB7XHJcblx0b3BhY2l0eTogMC43O1xyXG59XHJcblxyXG4vKiBiYXNlMDggLSBWYXJpYWJsZXMsIFhNTCBUYWdzLCBNYXJrdXAgTGluayBUZXh0LCBNYXJrdXAgTGlzdHMsIERpZmYgRGVsZXRlZCAqL1xyXG4uaGxqcy1idWxsZXQsXHJcbi5obGpzLXZhcmlhYmxlLFxyXG4uaGxqcy10ZW1wbGF0ZS12YXJpYWJsZSxcclxuLmhsanMtc2VsZWN0b3ItdGFnLFxyXG4uaGxqcy1uYW1lLFxyXG4uaGxqcy1kZWxldGlvbiB7XHJcblx0Y29sb3I6ICNlY2ViZjAgIWltcG9ydGFudDtcclxufVxyXG5cclxuLyogYmFzZTA5IC0gSW50ZWdlcnMsIEJvb2xlYW4sIENvbnN0YW50cywgWE1MIEF0dHJpYnV0ZXMsIE1hcmt1cCBMaW5rIFVybCAqL1xyXG4uaGxqcy1zeW1ib2wsXHJcbi5obGpzLW51bWJlcixcclxuLmhsanMtbGluayxcclxuLmhsanMtYXR0cixcclxuLmhsanMtdmFyaWFibGUuY29uc3RhbnRfLFxyXG4uaGxqcy1saXRlcmFsIHtcclxuXHRjb2xvcjogI2ViNmY5MiAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4vKiBiYXNlMEEgLSBDbGFzc2VzLCBNYXJrdXAgQm9sZCwgU2VhcmNoIFRleHQgQmFja2dyb3VuZCAqL1xyXG4uaGxqcy10aXRsZSxcclxuLmhsanMtY2xhc3MgLmhsanMtdGl0bGUsXHJcbi5obGpzLXRpdGxlLmNsYXNzXyB7XHJcblx0Y29sb3I6ICNmNmMxNzcgIWltcG9ydGFudDtcclxufVxyXG5cclxuLmhsanMtc3Ryb25nIHtcclxuXHRmb250LXdlaWdodDogYm9sZDtcclxuXHRjb2xvcjogI2Y2YzE3NyAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4vKiBiYXNlMEIgLSBTdHJpbmdzLCBJbmhlcml0ZWQgQ2xhc3MsIE1hcmt1cCBDb2RlLCBEaWZmIEluc2VydGVkICovXHJcbi5obGpzLWNvZGUsXHJcbi5obGpzLWFkZGl0aW9uLFxyXG4uaGxqcy10aXRsZS5jbGFzc18uaW5oZXJpdGVkX18sXHJcbi5obGpzLXN0cmluZyB7XHJcblx0Y29sb3I6ICNlYTlhOTcgIWltcG9ydGFudDtcclxufVxyXG5cclxuLyogYmFzZTBDIC0gU3VwcG9ydCwgUmVndWxhciBFeHByZXNzaW9ucywgRXNjYXBlIENoYXJhY3RlcnMsIE1hcmt1cCBRdW90ZXMgKi9cclxuLmhsanMtYnVpbHRfaW4sXHJcbi5obGpzLWRvY3RhZyxcclxuLyogZ3Vlc3NpbmcgKi9cclxuLmhsanMtcXVvdGUsXHJcbi5obGpzLWtleXdvcmQuaGxqcy1hdHJ1bGUsXHJcbi5obGpzLXJlZ2V4cCB7XHJcblx0Y29sb3I6ICMzZThmYjAgIWltcG9ydGFudDtcclxufVxyXG5cclxuLyogYmFzZTBEIC0gRnVuY3Rpb25zLCBNZXRob2RzLCBBdHRyaWJ1dGUgSURzLCBIZWFkaW5ncyAqL1xyXG4uaGxqcy1mdW5jdGlvbiAuaGxqcy10aXRsZSxcclxuLmhsanMtYXR0cmlidXRlLFxyXG4ucnVieSAuaGxqcy1wcm9wZXJ0eSxcclxuLmhsanMtdGl0bGUuZnVuY3Rpb25fLFxyXG4uaGxqcy1zZWN0aW9uIHtcclxuXHRjb2xvcjogIzljY2ZkOCAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4vKiBiYXNlMEUgLSBLZXl3b3JkcywgU3RvcmFnZSwgU2VsZWN0b3IsIE1hcmt1cCBJdGFsaWMsIERpZmYgQ2hhbmdlZCAqL1xyXG4uaGxqcy10eXBlLFxyXG4vKiAuaGxqcy1zZWxlY3Rvci1pZCwgKi9cclxuLyogLmhsanMtc2VsZWN0b3ItY2xhc3MsICovXHJcbi8qIC5obGpzLXNlbGVjdG9yLWF0dHIsICovXHJcbi8qIC5obGpzLXNlbGVjdG9yLXBzZXVkbywgKi9cclxuLmhsanMtdGVtcGxhdGUtdGFnLFxyXG4uZGlmZiAuaGxqcy1tZXRhLFxyXG4uaGxqcy1rZXl3b3JkIHtcclxuXHRjb2xvcjogI2M0YTdlNyAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4uaGxqcy1lbXBoYXNpcyB7XHJcblx0Y29sb3I6ICNjNGE3ZTcgIWltcG9ydGFudDtcclxuXHRmb250LXN0eWxlOiBpdGFsaWM7XHJcbn1cclxuXHJcbi8qIGJhc2UwRiAtIERlcHJlY2F0ZWQsIE9wZW5pbmcvQ2xvc2luZyBFbWJlZGRlZCBMYW5ndWFnZSBUYWdzLCBlLmcuIDw/cGhwID8+ICovXHJcbi5obGpzLW1ldGEsXHJcbi8qXHJcbiAgICBwcmV2ZW50IHRvcCBsZXZlbCAua2V5d29yZCBhbmQgLnN0cmluZyBzY29wZXNcclxuICAgIGZyb20gbGVha2luZyBpbnRvIG1ldGEgYnkgYWNjaWRlbnRcclxuICAqL1xyXG4uaGxqcy1tZXRhIC5obGpzLWtleXdvcmQsXHJcbi5obGpzLW1ldGEgLmhsanMtc3RyaW5nIHtcclxuXHRjb2xvcjogI2I5YjliYyAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4uaGxqcy1tZXRhIC5obGpzLWtleXdvcmQsXHJcbi8qIGZvciB2MTAgY29tcGF0aWJsZSB0aGVtZXMgKi9cclxuLmhsanMtbWV0YS1rZXl3b3JkIHtcclxuXHRmb250LXdlaWdodDogYm9sZDtcclxufVxyXG4iLCIvKlxyXG4gIElSX0JsYWNrIHN0eWxlIChjKSBWYXNpbHkgTWlraGFpbGl0Y2hlbmtvIDx2YXNrYXNAcHJvZ3JhbWljYS5ydT5cclxuKi9cclxuaHRtbC5kYXJrW2RhdGEtZ3B0aGVtZT0nb2xlZCddIHtcclxuXHQuaGxqcyB7XHJcblx0XHRiYWNrZ3JvdW5kOiB2YXIoLS1jLWJnLXByZSkgIWltcG9ydGFudDtcclxuXHRcdGNvbG9yOiAjZjhmOGY4ICFpbXBvcnRhbnQ7XHJcblx0fVxyXG5cclxuXHQuaGxqcy1jb21tZW50LFxyXG5cdC5obGpzLXF1b3RlLFxyXG5cdC5obGpzLW1ldGEge1xyXG5cdFx0Y29sb3I6ICM3YzdjN2MgIWltcG9ydGFudDtcclxuXHR9XHJcblxyXG5cdC5obGpzLWtleXdvcmQsXHJcblx0LmhsanMtc2VsZWN0b3ItdGFnLFxyXG5cdC5obGpzLXRhZyxcclxuXHQuaGxqcy1uYW1lIHtcclxuXHRcdGNvbG9yOiAjOTZjYmZlICFpbXBvcnRhbnQ7XHJcblx0fVxyXG5cclxuXHQuaGxqcy1hdHRyaWJ1dGUsXHJcblx0LmhsanMtc2VsZWN0b3ItaWQge1xyXG5cdFx0Y29sb3I6ICNmZmZmYjYgIWltcG9ydGFudDtcclxuXHR9XHJcblxyXG5cdC5obGpzLXN0cmluZyxcclxuXHQuaGxqcy1zZWxlY3Rvci1hdHRyLFxyXG5cdC5obGpzLXNlbGVjdG9yLXBzZXVkbyxcclxuXHQuaGxqcy1hZGRpdGlvbiB7XHJcblx0XHRjb2xvcjogI2E4ZmY2MCAhaW1wb3J0YW50O1xyXG5cdH1cclxuXHJcblx0LmhsanMtc3Vic3Qge1xyXG5cdFx0Y29sb3I6ICNkYWVmYTMgIWltcG9ydGFudDtcclxuXHR9XHJcblxyXG5cdC5obGpzLXJlZ2V4cCxcclxuXHQuaGxqcy1saW5rIHtcclxuXHRcdGNvbG9yOiAjZTljMDYyICFpbXBvcnRhbnQ7XHJcblx0fVxyXG5cclxuXHQuaGxqcy10aXRsZSxcclxuXHQuaGxqcy1zZWN0aW9uLFxyXG5cdC5obGpzLXR5cGUsXHJcblx0LmhsanMtZG9jdGFnIHtcclxuXHRcdGNvbG9yOiAjZmZmZmI2ICFpbXBvcnRhbnQ7XHJcblx0fVxyXG5cclxuXHQuaGxqcy1zeW1ib2wsXHJcblx0LmhsanMtYnVsbGV0LFxyXG5cdC5obGpzLXZhcmlhYmxlLFxyXG5cdC5obGpzLXRlbXBsYXRlLXZhcmlhYmxlLFxyXG5cdC5obGpzLWxpdGVyYWwge1xyXG5cdFx0Y29sb3I6ICNjNmM1ZmUgIWltcG9ydGFudDtcclxuXHR9XHJcblxyXG5cdC5obGpzLW51bWJlcixcclxuXHQuaGxqcy1kZWxldGlvbiB7XHJcblx0XHRjb2xvcjogI2ZmNzNmZCAhaW1wb3J0YW50O1xyXG5cdH1cclxuXHJcblx0LmhsanMtZW1waGFzaXMge1xyXG5cdFx0Zm9udC1zdHlsZTogaXRhbGljO1xyXG5cdH1cclxuXHJcblx0LmhsanMtc3Ryb25nIHtcclxuXHRcdGZvbnQtd2VpZ2h0OiBib2xkO1xyXG5cdH1cclxufVxyXG4iLCIqLFxyXG46YWZ0ZXIsXHJcbjpiZWZvcmUge1xyXG5cdC0tdHctcmluZy1jb2xvcjogaHNsKFxyXG5cdFx0dmFyKC0tYWNjZW50LWgpLFxyXG5cdFx0Y2FsYyh2YXIoLS1hY2NlbnQtcykgLyAxLjUpLFxyXG5cdFx0dmFyKC0tYWNjZW50LWwpXHJcblx0KSAhaW1wb3J0YW50OyAvLyBvdXQgYm9yZGVyIChib3gtc2hhZG93KSBvbiBkaWFsb2cgYnRucyBjb2xvclxyXG5cdC0tdHctcmluZy1vZmZzZXQtY29sb3I6IHZhcigtLWMtYmctZGlhbG9nKSAhaW1wb3J0YW50OyAvLyBpbm5lciBib3JkZXIgb24gZGlhbG9nIGJ0bnMgY29sb3JcclxufVxyXG5cclxuLypcclxuICAgIGJ1dHRvbnMsIHN3aXRjaCBidG5zLCBzdmcgYnV0dG9ucywgaW5wdXQsIG1lbnVpdGVtIChubyBidG5zIGluIGRpYWxvZyB0aG8sIGl0IGlzIHNwZWNpYWwgc3R5bGUgdy8gLS10dy1yaW5nLWNvbG9yIGFuZCAtLXR3LXJpbmctb2Zmc2V0LWNvbG9yIHZhcnMpIGJvcmRlci9vdXRsaW5lIG9uIGtleWJvYXJkIGZvY3VzIG9yIDpmb2N1cy12aXNpYmxlXHJcbiovXHJcbi8vIDppcyhidXR0b24sIGEsIFtyb2xlPVwibWVudWl0ZW1cIl06bm90KFtjbGFzcyo9XCJ0ZXh0LXJlZC1cIl0pLCBbcm9sZT1cImRpYWxvZ1wiXSB0ZXh0YXJlYSk6bm90KC5idG4tcHJpbWFyeSwgLmJ0bi1uZXV0cmFsLCB0ZXh0YXJlYSNwcm9tcHQtdGV4dGFyZWEpIHtcclxuLy8gICAgICY6Zm9jdXMtdmlzaWJsZSB7XHJcbi8vICAgICAgICAgb3V0bGluZTogMi41cHggc29saWQgaHNsKHZhcigtLWFjY2VudC1oKSwgY2FsYyh2YXIoLS1hY2NlbnQtcykgLyAxLjUpLCB2YXIoLS1hY2NlbnQtbCkpO1xyXG4vLyAgICAgfVxyXG4vLyB9XHJcblxyXG4vKiBcclxuVGhlbWUgZHJvcGRvd24gZGVvIGltYSB6ZWxlbmkgYm9yZGVyIHphIDpmb2N1cy12aXNpYmxlLlxyXG4gIC0gW2FyaWEtbGFiZWw9XCJEZWxldGUgc2hhcmVkIGxpbmtcIl0gaXMgcmVjeWNsZSBzdmcgaWNvbiBpbiBcIlNoYXJlZCBsaW5rXCIgdGFibGVcclxuICAtIC5idG4tbmV1dHJhbDpub3QoW3JvbGU9XCJjb21ib2JveFwiXSBpcyBpbiB0aGVtZSBkcm9wZG93biBcIkRhcmsvTGlnaHQvU3lzdGVtXCIgYnV0dG9uXCIpIFxyXG4qL1xyXG46Zm9jdXMtdmlzaWJsZTpub3QoXHJcblx0XHQuYnRuLXByaW1hcnksXHJcblx0XHQuYnRuLWRhbmdlcixcclxuXHRcdC5idG4tbmV1dHJhbDpub3QoW3JvbGU9J2NvbWJvYm94J10sIC5iZy10b2tlbi1zdXJmYWNlLXRlcnRpYXJ5IGlucHV0KSxcclxuXHRcdHRleHRhcmVhLFxyXG5cdFx0aW5wdXQsXHJcblx0XHRbYXJpYS1sYWJlbD0nRGVsZXRlIHNoYXJlZCBsaW5rJ10sXHJcblx0XHRbY2xhc3MqPSd0ZXh0LXJlZC0nXVxyXG5cdCkge1xyXG5cdG91dGxpbmU6IDIuNXB4IHNvbGlkIGhzbCh2YXIoLS1hY2NlbnQtaCksIGNhbGModmFyKC0tYWNjZW50LXMpIC8gMS41KSwgdmFyKC0tYWNjZW50LWwpKTtcclxufVxyXG5cclxuOmZvY3VzLXZpc2libGU6aXMoLmJ0bi1uZXV0cmFsW3JvbGU9J2NvbWJvYm94J10pIHtcclxuXHRib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcclxufVxyXG5cclxuLyog8J+Xke+4jyBSZWN5Y2xlIGljb24gaW4gXCJTaGFyZWQgbGlua1wiIHRhYmxlICovXHJcbjpmb2N1cy12aXNpYmxlOmlzKFthcmlhLWxhYmVsPSdEZWxldGUgc2hhcmVkIGxpbmsnXSwgW2NsYXNzKj0ndGV4dC1yZWQtJ10pIHtcclxuXHQtLXR3LXJpbmctY29sb3I6IHZhcigtLWMtZGFuZ2VyKSAhaW1wb3J0YW50O1xyXG5cdC8vIC0tdHctcmluZy1jb2xvcjogdmFyKC0tYy1kYW5nZXIpICFpbXBvcnRhbnQ7XHJcblx0b3V0bGluZTogMi41cHggc29saWQgdmFyKC0tYy1kYW5nZXIpICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi5idG4tZGFuZ2VyIHtcclxuXHQtLXR3LXJpbmctY29sb3I6IHZhcigtLWMtZGFuZ2VyKSAhaW1wb3J0YW50O1xyXG5cdC8vIG91dGxpbmU6IDIuNXB4IHNvbGlkIHZhcigtLWMtZGFuZ2VyKSAhaW1wb3J0YW50O1xyXG5cclxuXHQvLyAmOmZvY3VzIHtcclxuXHQvLyAgICAgb3V0bGluZS1jb2xvcjogdmFyKC0tYy1iZy1kaWFsb2cpICFpbXBvcnRhbnQ7XHJcblx0Ly8gfVxyXG59XHJcblxyXG5pbnB1dCB7XHJcbn1cclxuIiwiW3JvbGU9XCJzZXBhcmF0b3JcIl0ge1xyXG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jLWJvcmRlcikgIWltcG9ydGFudDtcclxufSIsImlucHV0W3R5cGU9J2NoZWNrYm94J10ge1xyXG5cdHBhZGRpbmc6IDdweCAhaW1wb3J0YW50O1xyXG5cdGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLWMtYWNjZW50KSAhaW1wb3J0YW50O1xyXG5cdGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XHJcblx0Ym9yZGVyLXJhZGl1czogNHB4O1xyXG5cclxuXHQmOmNoZWNrZWQge1xyXG5cdFx0YWNjZW50LWNvbG9yOiB2YXIoLS1jLWFjY2VudCkgIWltcG9ydGFudDtcclxuXHRcdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtYWNjZW50KSAhaW1wb3J0YW50O1xyXG5cdH1cclxufVxyXG4iLCJbcm9sZT0nbWVudSddIHtcclxuXHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLWJnLWNvbnRleHRtZW51KSAhaW1wb3J0YW50O1xyXG5cdGJvcmRlci1yYWRpdXM6IHZhcigtLWJyLWNvbnRleHRtZW51KSAhaW1wb3J0YW50O1xyXG5cdC8vIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50O1xyXG5cdHBhZGRpbmc6IHZhcigtLXAtY29udGV4dG1lbnUpICFpbXBvcnRhbnQ7XHJcblx0Ly8gYm9yZGVyOiAxcHggc29saWQgaHNsYSh2YXIoLS1hY2NlbnQtaHNsKSAvIDAuMikgIWltcG9ydGFudDtcclxuXHRib3gtc2hhZG93OiB2YXIoLS1ib3gtc2hhZG93LWNvbnRleHRtZW51KSAhaW1wb3J0YW50O1xyXG5cdC8vIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0O1xyXG5cclxuXHQmOm5vdChuYXZbYXJpYS1sYWJlbD0nQ2hhdCBoaXN0b3J5J10gLmdyb3VwW2RhdGEtaGVhZGxlc3N1aS1zdGF0ZV0gW3JvbGU9J21lbnUnXSkge1xyXG5cdFx0QGV4dGVuZCAlYW5pbUZhZGVJbkNsaXBQYXRoO1xyXG5cdH1cclxuXHJcblx0W3JvbGU9J21lbnVpdGVtJ10ge1xyXG5cdFx0YmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdCAhaW1wb3J0YW50O1xyXG5cdFx0cGFkZGluZzogdmFyKC0tcC1jb250ZXh0bWVudS1pdGVtKSAhaW1wb3J0YW50O1xyXG5cdFx0Ym9yZGVyLXJhZGl1czogdmFyKC0tYnItYnRuKSAhaW1wb3J0YW50O1xyXG5cdFx0dHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjNzIGVhc2UtaW4tb3V0LCBjb2xvciAwLjNzIGVhc2UtaW4tb3V0O1xyXG5cclxuXHRcdC8qIFRPRE8gZGFyazpob3ZlcjpiZy13aGl0ZS81ICAgaW1hIHZlYyB1IGdsb2JhbHUuIFZpZGV0aSBkYSBsaSBvYnJpc2F0aSBvdmFoIGhvdmVyIGkgb3N0YXZpdGkgb25haiB0YW1vIHNhbW8uIFJpemljbm8gamUgbWFsbywgc3RhIGFrbyBzZSBwcm9tZW5pIHRhIGtsYXNhICovXHJcblx0XHQmOmhvdmVyIHtcclxuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYy1zdXJmYWNlLTIpICFpbXBvcnRhbnQ7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKiBSZW1vdmUgcGFkZGluZyBmb3IgbWVudSBpbiBzaWRlYmFyIGJvdHRvbSAqL1xyXG5cdG5hdiB7XHJcblx0XHRwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XHJcblx0fVxyXG5cclxuXHQmOmhhcyhhW2hyZWY9XCJodHRwczovL29wZW5haS5jb20vcG9saWNpZXNcIl0pXHJcblx0e1xyXG5cdFx0YTpmaXJzdC1jaGlsZCBzcGFuIHtcclxuXHRcdFx0Y29sb3I6IHZhcigtLWMtYWNjZW50KSAhaW1wb3J0YW50O1xyXG5cdFx0XHRmb250LXdlaWdodDogYm9sZDtcclxuXHRcdH1cclxuXHR9XHJcbn1cclxuXHJcbi8vIFRPRE8gY2hlY2sgaWYgdGhpcyBicm9rZSBzb21ldGhpbmcgZWxzZSBiZWNhdXNlIGl0IGlzIHRoZSBlbGVtZW50IGhhcmQgZm9yIHRhcmdldGluZ1xyXG4vKiBcIk5ldyBDaGF0XCIgeHMgaW4gY29udGV4dG1lbnUgaW4gQ2hhdEdQVCAzLjUgKi9cclxuW2RhdGEtcmFkaXgtcG9wcGVyLWNvbnRlbnQtd3JhcHBlcl0gLmFic29sdXRlLnJpZ2h0LTExIHtcclxuXHQtLXN2Zy13OiAyNHB4O1xyXG5cdC0tZ2FwLWZyb20tc3ZnOiAyMHB4O1xyXG5cdHJpZ2h0OiBjYWxjKFxyXG5cdFx0dmFyKC0tcC1jb250ZXh0bWVudSkgKyB2YXIoLS1zdmctdykgKyB2YXIoLS1nYXAtZnJvbS1zdmcpXHJcblx0KSAhaW1wb3J0YW50OyAvLyBwLWNvbnRleHRtZW51ID0gMTBweCwgc3ZnLXcgPSAyNHB4LCBnYXAtZnJvbS1zdmcgPSAyMHB4ID0gKDEwcHggKyAyNHB4ICsgMjBweCkgPSA1NHB4LiBUaGlzIGlzIGNhbGN1bGF0ZWQgc3BhY2luZyBvZiBcIk5ldyBDaGF0XCIgaW4gY29udGV4dG1lbnUgaW4gQ2hhdEdQVCAzLjUgYW5kIHJpZ2h0IGVkZ2UgaW4gY29udGV4dG1lbnVpdGVtXHJcbn1cclxuXHJcbi8qIF9fIE1PREFMIC0gQ2hvb3NlIHRoZW1lIGNvbnRleHQgbWVudSAmIHRvb2x0aXBzPyAgKi9cclxuZGl2W2RhdGEtcmFkaXgtcG9wcGVyLWNvbnRlbnQtd3JhcHBlcl0ge1xyXG5cdHotaW5kZXg6IGNhbGModmFyKC0tei1tb2RhbCkgKyA1MCkgIWltcG9ydGFudDtcclxuXHQvLyB6LWluZGV4OiAyMDAgIWltcG9ydGFudDtcclxuXHJcblx0LyogTW9yYSBub3Qgcm9sZT1tZW51IGRhIG5lIGJpaCBzZWxla3RvdmFsYSBpIG9uYWogY29udGV4dG1lbnUgdSBzaWRlYmFyIGthZCBzZSBrbGlrbmUgbmEgcHJvbXB0IGxpc3RpdGVtIDMgZG90cyB6YSBvcGNpamUgaSBkaXZbZGF0YS1yYWRpeC1wb3BwZXItY29udGVudC13cmFwcGVyXTpoYXMoW3JvbGU9J3Rvb2x0aXAnXSkgZGEgbmUgYmloIHNlbGVrdG92YWxhIHRvb2x0aXAgKi9cclxuXHQmOm5vdChcclxuXHRcdFx0ZGl2W2RhdGEtcmFkaXgtcG9wcGVyLWNvbnRlbnQtd3JhcHBlcl06aGFzKGRpdltyb2xlPSdtZW51J10pLFxyXG5cdFx0XHRkaXZbZGF0YS1yYWRpeC1wb3BwZXItY29udGVudC13cmFwcGVyXTpoYXMoW3JvbGU9J3Rvb2x0aXAnXSlcclxuXHRcdCkge1xyXG5cdFx0QGV4dGVuZCAlYW5pbUZhZGVJbkNsaXBQYXRoO1xyXG5cdH1cclxuXHJcblx0LyogQ29udGV4dCBtZW51IGJnICovXHJcblx0Ly8gLmJnLXdoaXRlIHtcclxuXHQvLyAuYmctdG9rZW4tcG9wb3Zlci1zdXJmYWNlLXByaW1hcnlcclxuXHRbcm9sZT0nbGlzdGJveCddIHtcclxuXHRcdC8vIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtYmctY29udGV4dG1lbnUpICFpbXBvcnRhbnQ7XHJcblx0XHRwYWRkaW5nOiB2YXIoLS1wLWNvbnRleHRtZW51KSAhaW1wb3J0YW50O1xyXG5cdFx0Ym9yZGVyLXJhZGl1czogdmFyKC0tYnItY29udGV4dG1lbnUpICFpbXBvcnRhbnQ7XHJcblx0XHRib3gtc2hhZG93OiB2YXIoLS1ib3gtc2hhZG93LWNvbnRleHRtZW51KSAhaW1wb3J0YW50O1xyXG5cdFx0b3ZlcmZsb3c6IHZpc2libGUgIWltcG9ydGFudDsgLy8gZm9yIHdoYXQgaXMgdGhpcz8gaGhoXHJcblx0XHRib3JkZXI6IG5vbmU7XHJcblx0fVxyXG5cclxuXHRbZGF0YS1yYWRpeC1jb2xsZWN0aW9uLWl0ZW1dIHtcclxuXHRcdGJvcmRlci1yYWRpdXM6IHZhcigtLWJyLWJ0bik7XHJcblx0XHRwYWRkaW5nOiB2YXIoLS1wLWNvbnRleHRtZW51LWl0ZW0pICFpbXBvcnRhbnQ7XHJcblx0XHRoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDtcclxuXHRcdG1hcmdpbi1ib3R0b206IDRweDtcclxuXHRcdG92ZXJmbG93OiB2aXNpYmxlICFpbXBvcnRhbnQ7XHJcblx0XHRvdXRsaW5lOiBub25lICFpbXBvcnRhbnQ7XHJcblx0fVxyXG5cclxuXHQvKiBNT0RBTCAtIENob29zZSB0aGVtZSBjb250ZXh0IG1lbnVpdGVtIGhvdmVyICovXHJcblx0W2RhdGEtcmFkaXgtY29sbGVjdGlvbi1pdGVtXVtkYXRhLXN0YXRlPSd1bmNoZWNrZWQnXSB7XHJcblx0XHQmOmhvdmVyIHtcclxuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYy1zdXJmYWNlLTIpICFpbXBvcnRhbnQ7XHJcblx0XHRcdG91dGxpbmU6IG5vbmUgIWltcG9ydGFudDsgLy8gVE9ETyB0aGlzIGlzIHRlbXAgZml4LiBUaGlzIGVjYXVzZSB0aGVyZSB3ZXJlIHNvbWV3aGl0ZSB1Z2x1IG91dGxpbmUgb24gaG92ZXIuIEJ1dCB0aGlzIGFsc28gYnJlYWtzIDpmb2N1cy12aXNpYmxlIGFjY2Vzc2liaWxpdHkgc3R5bGUuLi5cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qIE1PREFMIC0gQ2hvb3NlIHRoZW1lIGNvbnRleHQgbWVudWl0ZW0gaG92ZXIgYWN0aXZlICovXHJcblx0W2RhdGEtc3RhdGU9J2NoZWNrZWQnXSB7XHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLWJnLWJ0bikgIWltcG9ydGFudDtcclxuXHRcdGNvbG9yOiB2YXIoLS1jLW9uLWFjY2VudCkgIWltcG9ydGFudDtcclxuXHR9XHJcbn1cclxuXHJcbi8vIC5kYXRhLXJhZGl4LXBvcHBlci1jb250ZW50LXdyYXBwZXIge1xyXG4vLyBcdC8vIHotaW5kZXg6IGNhbGModmFyKC0tei1tb2RhbCkgKyAyMDApICFpbXBvcnRhbnQ7XHJcbi8vIFx0ei1pbmRleDogMjAwICFpbXBvcnRhbnQ7XHJcbi8vIH1cclxuIiwiLyogU2lkZWJhciBiZy1jb2xvciAqL1xyXG4uYmctdG9rZW4tc2lkZWJhci1zdXJmYWNlLXByaW1hcnk6aGFzKG5hdlthcmlhLWxhYmVsPSdDaGF0IGhpc3RvcnknXSkge1xyXG5cdC8qIC0tc3VyZmFjZS1wcmltYXJ5IGZpeCBkYXJrL2JsYWNrIGNvbG9yIGZvciBhOmhvdmVyIHN0YXRlcyAqL1xyXG5cdC8vIC0tc3VyZmFjZS1wcmltYXJ5OiB2YXIoLS1jLXN1cmZhY2UtMikgIWltcG9ydGFudDtcclxuXHQvLyAtLXN1cmZhY2UtcHJpbWFyeTogcmVkICFpbXBvcnRhbnQ7XHJcblx0Y29sb3I6IHZhcigtLWMtdHh0KSAhaW1wb3J0YW50O1xyXG5cdC8vIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtYmctc2lkZWJhcikgIWltcG9ydGFudDtcclxuXHJcblx0LyogRml4IHdoaXRlIHR4dCBvbiBcIk5FVyBDSEFUXCIgaW4gc2lkZWJhciBmb3IgbGlnaHQgZXNwZWNpYWxseSAqL1xyXG5cdG5hdiBhID4gKiB7XHJcblx0XHRjb2xvcjogdmFyKC0tYy10eHQpICFpbXBvcnRhbnQ7XHJcblx0fVxyXG59XHJcblxyXG5uYXZbYXJpYS1sYWJlbD0nQ2hhdCBoaXN0b3J5J10ge1xyXG5cdHBhZGRpbmc6IHZhcigtLXAtc2lkZWJhci1uYXYpICFpbXBvcnRhbnQ7XHJcblxyXG5cdC8vICEgU3RyYW5nZSBibGFjayByZWN0YW5nbGUgKC5iZy1ibGFjayBjbGFzcykgb3ZlciBcIk5ldyBDaGF0XCIgYnRuIHdoZW4gb24gbGlua3M6IGh0dHBzOi8vY2hhdC5vcGVuYWkuY29tL2dwdHMvZGlzY292ZXJ5IGFuZCBodHRwczovL2NoYXQub3BlbmFpLmNvbS9nL2ctVUJZVEtXa1BqXHJcblx0LyogLnN0aWNreS5iZy1ibGFjazpoYXMoYVtocmVmPScvJ10pIHtcclxuXHRcdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtYmctc2lkZWJhcik7XHJcblx0XHRwYWRkaW5nLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50O1xyXG5cdH0gKi9cclxuXHJcblx0LyogUGFyZW50IG9mIFwiTkVXIENIQVRcIiBidG4gKi9cclxuXHQuc3RpY2t5IHtcclxuXHRcdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtYmctc2lkZWJhcikgIWltcG9ydGFudDtcclxuXHRcdGJhY2tkcm9wLWZpbHRlcjogYmx1cigwcHgpICFpbXBvcnRhbnQ7XHJcblx0XHRtYXJnaW4tYm90dG9tOiAwLjVyZW0gIWltcG9ydGFudDtcclxuXHRcdHBhZGRpbmctYm90dG9tOiAwLjVyZW07XHJcblx0fVxyXG5cclxuXHQvKiBDTEVBUiBDSEFUUyBkaXYgLSBWaXNpYmxlIHdoZW4gdW5jaGVja2VkIFwiQ2hhdCBsZWFybmluZyAmIFRyYWluaW5nXCIgaW4gU2V0dGluZ3MgKi9cclxuXHQuYWJzb2x1dGUubGVmdC0wLnRvcC0wLm92ZXJmbG93LWhpZGRlbiB7XHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLWJnLXNpZGViYXIpICFpbXBvcnRhbnQ7XHJcblx0XHRvdmVyZmxvdy15OiBzY3JvbGw7XHJcblxyXG5cdFx0bWluLWhlaWdodDogNTB2aCAhaW1wb3J0YW50O1xyXG5cclxuXHRcdC5iZy1ncmFkaWVudC10by10IHtcclxuXHRcdFx0b3BhY2l0eTogMDtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qIE5FVyBDSEFUICsgTElTVCBvZiBjaGF0cyBpbiBuYXYuIEFkZGluZyBwYWRkaW5nLWxlZnQgcHJldmVudCA6Zm9jdXMtdmlzaWJsZSBzdHlsZSBpbiB0aG9zZSBlbGVtZW50cyB0byBiZSBjcm9wcGVkIGZyb20gdGhlIGxlZnQgYmVjYXVzZSBvZiB0aGUgb3ZlcmZsb3ctaGlkZGVuICovXHJcblx0Lm92ZXJmbG93LXktYXV0byB7XHJcblx0XHRwYWRkaW5nLWxlZnQ6IDAuM3JlbSAhaW1wb3J0YW50O1xyXG5cclxuXHRcdC8qIFlvdXIgRmlyZWZveC1zcGVjaWZpYyBzdHlsZXMgaGVyZSAqL1xyXG5cdFx0QC1tb3otZG9jdW1lbnQgdXJsLXByZWZpeCgpIHtcclxuXHRcdFx0cGFkZGluZy1yaWdodDogMC44cmVtICFpbXBvcnRhbnQ7IC8vIHRoaXMgYWRkIG9ubHkgZm9yIEZpcmVmb3hcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qXHJcblx0UGFyZW50IG9mIHRpbWUgaGVhZGluZyAob2YgVG9kYXksIFllc3RlcmRheSkgaW4gc2lkZWJhci5cclxuXHQhIGRpdjpoYXMoPiBoMykgIGlzIHNlbGVjdG9yIGZvciB0aGUgc2FtZSBidXQgaW4gR1BUcyBwYWdlICEhISAqL1xyXG5cdFtkYXRhLXByb2plY3Rpb24taWRdOmhhcyhoMyksXHJcblx0ZGl2Omhhcyg+IGgzKSB7XHJcblx0XHRtYXJnaW4tdG9wOiAxLjVyZW0gIWltcG9ydGFudDtcclxuXHRcdG1hcmdpbi1ib3R0b206IDAuM3JlbSAhaW1wb3J0YW50O1xyXG5cclxuXHRcdC8qIFRvZGF5LCBZZXN0ZXJkYXkgLSBUaW1lIGhlYWRpbmcgaW4gc2lkZWJhciAqL1xyXG5cdFx0aDMge1xyXG5cdFx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudDtcclxuXHRcdFx0Y29sb3I6IHZhcigtLWMtYWNjZW50KSAhaW1wb3J0YW50O1xyXG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBoc2wodmFyKC0tYWNjZW50LWhzbCkgLyAwLjIpICFpbXBvcnRhbnQ7XHJcblx0XHRcdGJvcmRlci1yYWRpdXM6IDEwMHZ3O1xyXG5cdFx0XHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xyXG5cdFx0XHRmb250LXdlaWdodDogYm9sZDtcclxuXHRcdFx0cGFkZGluZzogMC41cmVtIDFyZW0gIWltcG9ydGFudDtcclxuXHRcdFx0aGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XHJcblx0XHRcdGxpbmUtaGVpZ2h0OiAxICFpbXBvcnRhbnQ7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRhIHtcclxuXHRcdGNvbG9yOiB2YXIoLS1jLXR4dCkgIWltcG9ydGFudDtcclxuXHRcdHBhZGRpbmc6IHZhcigtLXAtc2lkZWJhci1uYXYtYSkgIWltcG9ydGFudDtcclxuXHRcdGZvbnQtZmFtaWx5OiB2YXIoLS1mLWZtKSAhaW1wb3J0YW50O1xyXG5cdFx0Ym9yZGVyLXJhZGl1czogdmFyKC0tYnItbmF2LWEpICFpbXBvcnRhbnQ7XHJcblx0XHQvLyBib3JkZXItcmFkaXVzOiBpbmhlcml0ICFpbXBvcnRhbnQ7XHJcblxyXG5cdFx0dHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjNzIGVhc2UtaW4tb3V0O1xyXG5cclxuXHRcdC8qIFwiTmV3IENoYXRcIiBsaW5rIChmaXJzdCBpbiBuYXYgaW4gc2lkZWJhcikgKi9cclxuXHRcdCZbaHJlZj0nLyddIHtcclxuXHRcdFx0Ym9yZGVyOiAycHggc29saWQgdmFyKC0tYy1zdXJmYWNlLTIpO1xyXG5cdFx0XHRwYWRkaW5nOiB2YXIoLS1wLXNpZGViYXItbmF2LWEtbmV3LWNoYXQpICFpbXBvcnRhbnQ7XHJcblx0XHRcdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XHJcblx0XHR9XHJcblxyXG5cdFx0LyogXCJVcGdyYWRlXCIgbGluayBpbiBuYXYgYmcgKi9cclxuXHRcdHNwYW4ucm91bmRlZC1mdWxsLmJvcmRlci10b2tlbi1ib3JkZXItbGlnaHQge1xyXG5cdFx0XHRib3JkZXItY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XHJcblx0XHRcdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtYWNjZW50KSAhaW1wb3J0YW50O1xyXG5cclxuXHRcdFx0LyogU1ZHIGljb24gaW4gXCJVcGdyYWRlXCIgbGluayBpbiBuYXYgKi9cclxuXHRcdFx0JiA+IHN2ZyB7XHJcblx0XHRcdFx0Y29sb3I6IHZhcigtLWMtb24tYWNjZW50KSAhaW1wb3J0YW50O1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRsaSB7XHJcblx0XHRtYXJnaW4tYm90dG9tOiB2YXIoLS1tYi1zaWRlYmFyLW5hdi1saSkgIWltcG9ydGFudDtcclxuXHJcblx0XHQuZ3JvdXAge1xyXG5cdFx0XHQtLWR1cmF0aW9uLXRyYW5zOiAwLjNzO1xyXG5cdFx0XHQtLWR1cmF0aW9uLWFuaW06IDAuMnM7XHJcblx0XHRcdG92ZXJmbG93OiBoaWRkZW47XHJcblxyXG5cdFx0XHQmLmJnLXRva2VuLXNpZGViYXItc3VyZmFjZS1zZWNvbmRhcnksXHJcblx0XHRcdCYuYmctdG9rZW4tc2lkZWJhci1zdXJmYWNlLXByaW1hcnkge1xyXG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtc3VyZmFjZS0yKSAhaW1wb3J0YW50O1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQvKiBUT0RPIG1vemRhIGRvZGF0aSBvcGV0IHUgYnVkdWNub3N0aS4gU2FkIG5lbWEgcG9lbnRlLCBqZXIgdGV4dCBwYXJlbnQgaW1hIG92ZXJmbG93IGhpZGRlbiBpIGlzZWNlIGNpdGF2IHRleHQsIGEgb3ZhIGFuaW1hY2lqYSBnYSBzdmFrYWtvIG9wZXQgc2FtbyBwcmlrYXplIG9ub2xpa2kga29saWtpIGplLiBBa28gc3RhdmltIG92ZXJsb3c6IHZpc2libGUgbmEgaG92ZXIsIGFuaW1hY2lqYSBqZSByYXpsaWNpdG8gcHJpbWVuamVuYSBuYSBzdmFraSBlbGVtZW50LCBwb3N0byBqZSB3aWR0aCB6YSBzdmFraSBlZWxlbWVudCByYXpsaWNpdCB1IHphdmlzbm9zdGkgb2QgZHV6aW5lIHRleHRhLCBpIGFuaW1hY2lqYSBuZSBtb3plIHNhIGlzdGltIGR1cmF0aW9ub20gZGEgYnVkZSBpc3RhLCBhIHNhZHJ6YWogdHJlYmEgbW5vZ28gdmlzZSBkYSBzZSBza3JvbHVqZS4gQSBuZSB6ZWxpbSBqb3MgZGEga29yaXN0aW0gamF2YXNjcmlwdCB6YSBmZXRjaHZhbmplIHdpZHRoLWEgc3Zha29nIGVsZW1lbnRhIHBvc2Vibm8gaSBvbmRhIHBvc2VibmkgZHVyYXRpb24gemEgc3Zha2kgZWxlbWVudCB1IHphdmlzbm9zdGkgb2QgZHV6aW5lIHRleHRhLiBBIGkgcHJlb3B0ZXJldGlsYSBiaSBzZSBleHRlbnppamEgZGEgbHVwdWplbSBrcm96IHN2YWtpIGVsZW1lbnQsIGNpdGFtIHBvZGF0a2UgaSBkb2RhamVtIGFuaW1hY2lqdSwgc2FtbyB6YXJhZCB0b2cgZWZla3RhLiBOaWplIHZyZWRubyAqL1xyXG5cdFx0XHQvLyAmOmhvdmVyIHtcclxuXHRcdFx0Ly8gXHQvKiBBbmltIGxvbmcgKGFsbCBhY3R1YWxseSkgdHh0IHRvIHNjcm9sbCBsZWZ0IHRvIGJlIHNob3duIHdob2xlICovXHJcblx0XHRcdC8vIFx0YVtocmVmXj0nL2MvJ10gPiBkaXYucmVsYXRpdmUuZ3Jvdy5vdmVyZmxvdy1oaWRkZW4ud2hpdGVzcGFjZS1ub3dyYXAge1xyXG5cdFx0XHQvLyBcdFx0YW5pbWF0aW9uOiBhbmltU2Nyb2xsVGV4dCAzcyAkZWFzZUluT3V0U2luZSBiYWNrd2FyZHM7XHJcblx0XHRcdC8vIFx0fVxyXG5cdFx0XHQvLyB9XHJcblxyXG5cdFx0XHQvKiAzZG90cyBidG4gKi9cclxuXHRcdFx0YnV0dG9uIHtcclxuXHRcdFx0XHRjb2xvcjogdmFyKC0tYy10eHQpICFpbXBvcnRhbnQ7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC8qIEFyY2hpdmUgYnRuICovXHJcblx0XHRcdHNwYW4ge1xyXG5cdFx0XHRcdGJ1dHRvbiB7XHJcblx0XHRcdFx0XHRjb2xvcjogdmFyKC0tYy1zdWJ0ZXh0LTEpICFpbXBvcnRhbnQ7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQvKiBBY3RpdmUtbGluayAzLWRvdHMgYW5kIGFyY2hpdmUgYnRucyB3cmFwcGVyICovXHJcblx0XHRcdCYgPiBkaXYuYWJzb2x1dGUge1xyXG5cdFx0XHRcdEBleHRlbmQgJXNpZGViYXJfbGlua19pdGVtX2J0bnNfYmc7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdGFbaHJlZl49Jy9jLyddIHtcclxuXHRcdFx0XHQvKiAmID4gZGl2LnJlbGF0aXZlLmdyb3cub3ZlcmZsb3ctaGlkZGVuLndoaXRlc3BhY2Utbm93cmFwIHtcclxuXHRcdFx0XHRcdHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07XHJcblx0XHRcdFx0fSAqL1xyXG5cdFx0XHRcdC8qICEgTk9XIGAuYmctdG9rZW4tc3VyZmFjZS1wcmltYXJ5YCBJUyBERUxFVEVEIEJZIE9QRU5BSSBmZnMqL1xyXG5cdFx0XHRcdC8qIFNlbGVjdGVkL2FjdGl2ZS9ob3ZlciBsaW5rIGl0ZW0gKi9cclxuXHRcdFx0XHQvLyAmLmJnLXRva2VuLXN1cmZhY2UtcHJpbWFyeSB7XHJcblx0XHRcdFx0Ly8gICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtc3VyZmFjZS0yKSAhaW1wb3J0YW50O1xyXG5cclxuXHRcdFx0XHQvLyAgICAgLyogMyBkb3RzIGJ0biBiZy1ncmFkaWVudCAqL1xyXG5cdFx0XHRcdC8vICAgICAuYmctZ3JhZGllbnQtdG8tbCB7XHJcblx0XHRcdFx0Ly8gICAgICAgICBvcGFjaXR5OiAxICFpbXBvcnRhbnQ7XHJcblx0XHRcdFx0Ly8gICAgIH1cclxuXHRcdFx0XHQvLyB9XHJcblxyXG5cdFx0XHRcdC8qIDMgZG90cyBidG4gYmctZ3JhZGllbnQgLSA8ZGl2PiB1IDxhPiBpIDxkaXY+IHUgPGJ1dHRvbj4gKi9cclxuXHRcdFx0XHQuYmctZ3JhZGllbnQtdG8tbCB7XHJcblx0XHRcdFx0XHRkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XHJcblx0XHRcdFx0XHQvLyBib3JkZXI6IDJweCBzb2xpZCByZWQgIWltcG9ydGFudDtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC8qIDMgZG90cyA+IFwiUmVuYW1lXCIgY2xpY2tlZCAtIHN0eWxlIG9mIGlucHV0IHBhcmVudCBhbmQgaW5wdXQgIC0gdGhpcyBpcyA8ZGl2PiBuZXh0IHRvIDxhPiAqL1xyXG5cdFx0XHQuYmctdG9rZW4tc3VyZmFjZS10ZXJ0aWFyeSB7XHJcblx0XHRcdFx0cGFkZGluZzogdmFyKC0tcC1zaWRlYmFyLW5hdi1hKSAhaW1wb3J0YW50O1xyXG5cdFx0XHRcdGNvbG9yOiB2YXIoLS1jLXR4dCkgIWltcG9ydGFudDtcclxuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoXHJcblx0XHRcdFx0XHQtLWMtc3VyZmFjZS0zXHJcblx0XHRcdFx0KSAhaW1wb3J0YW50OyAvLyBOT1RFOiBiZyBjYW4ndCBiZSB0cmFuc3BhcmVudC1pc2g7IGl0IGNhdXNlIHR4dCBiZWhpbmQgdG8gYmUgdmlzaWJsZVxyXG5cdFx0XHRcdGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWMtYm9yZGVyKSAhaW1wb3J0YW50O1xyXG5cdFx0XHRcdGJvcmRlci1yYWRpdXM6IHZhcigtLWJyLW5hdi1hKSAhaW1wb3J0YW50O1xyXG5cclxuXHRcdFx0XHQvKiBUaGlzIG1ha2UgaXQgZnVsbCB3aWR0aCBvZiA8bGk+LCBmcm9tIGxlZnQgdG8gcmlnaHQgKi9cclxuXHRcdFx0XHRsZWZ0OiAwICFpbXBvcnRhbnQ7XHJcblx0XHRcdFx0cmlnaHQ6IDAgIWltcG9ydGFudDtcclxuXHJcblx0XHRcdFx0LyogUmVuYW1lIGlucHV0LlxyXG4gICAgICAgICAgICAgICAgICAgICEgRE8gTk9UIFRPVUNIIFBBRERJTkchIFRYVCBCRUhJTkQgR09JTiBUTyBCRSBWSVNJQkxFLiBXVEY/Pz8gXHJcbiAgICAgICAgICAgICAgICAqL1xyXG5cdFx0XHRcdGlucHV0IHtcclxuXHRcdFx0XHRcdC8vIGlucHV0IHJlbmFtZSBib3JkZXIgY29sb3Igb24gZm9jdXNlZFxyXG5cdFx0XHRcdFx0LS10dy1yaW5nLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xyXG5cdFx0XHRcdFx0Y2FyZXQtY29sb3I6IHZhcigtLWMtYWNjZW50KTtcclxuXHRcdFx0XHRcdGJvcmRlcjogbm9uZSAhaW1wb3J0YW50O1xyXG5cdFx0XHRcdFx0b3V0bGluZTogbm9uZSAhaW1wb3J0YW50O1xyXG5cdFx0XHRcdFx0Ym94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0Ly8gVE9ETyBhZGQgYmV0dGVyIHN0eWxpbmcgdG8gdGhpcyBidG5cclxuXHQvKiBVc2VyIHByb2ZpbGUgYnRuIGluIHNpZGViYXIgYm90dG9tICovXHJcblx0Lmdyb3VwW2RhdGEtaGVhZGxlc3N1aS1zdGF0ZV0ge1xyXG5cdFx0LyogVXNlciBwcm9maWxlIGJ0biBpbiBzaWRlYmFyIGJvdHRvbSAqL1xyXG5cdFx0YnV0dG9uW2FyaWEtaGFzcG9wdXA9J3RydWUnXSB7XHJcblx0XHRcdGJvcmRlci1yYWRpdXM6IHZhcigtLWJyLW5hdi1hKTtcclxuXHRcdFx0bWFyZ2luLXRvcDogMXJlbTtcclxuXHJcblx0XHRcdC8qIFVzZXJuYW1lIGRpdiAqL1xyXG5cdFx0XHQuZm9udC1zZW1pYm9sZCB7XHJcblx0XHRcdFx0Y29sb3I6IHZhcigtLWMtdHh0KSAhaW1wb3J0YW50O1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0LyogU2lkZWJhciBib3R0b20gLSBMb2cgT3V0ICAqL1xyXG5cdFx0W3JvbGU9J21lbnUnXSB7XHJcblx0XHRcdGFuaW1hdGlvbjogbm9uZSAhaW1wb3J0YW50O1xyXG5cdFx0XHQvLyB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3MgZWFzZS1pbi1vdXQsIHRyYW5zZm9ybSAwLjNzIGVhc2UtaW4tb3V0O1xyXG5cdFx0XHR0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3MgZWFzZS1pbi1vdXQsIHRyYW5zZm9ybSAwLjNzIGVhc2UtaW4tb3V0O1xyXG5cclxuXHRcdFx0W3JvbGU9J21lbnVpdGVtJ106bGFzdC1jaGlsZCB7XHJcblx0XHRcdFx0Y29sb3I6IHZhcigtLWMtZGFuZ2VyKSAhaW1wb3J0YW50O1xyXG5cclxuXHRcdFx0XHRzdmcge1xyXG5cdFx0XHRcdFx0Y29sb3I6IHZhcigtLWMtZGFuZ2VyKSAhaW1wb3J0YW50O1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyogIEJvcmRlci1yYWRpdXMgZm9yIGFsbCBlbGVtZW50cyB0aGF0IGhhdmUgLnJvdW5kZWQtbGcgY2xhc3MgaW4gPG5hdj4gb2Ygc2lkZWJhci4gQUxpIG9uIHplem5lIGJvcmRlci1yYWRpdXN1IGkgY29udGV4dG1lbnUgdSBib3R0b20gc2lkZWJhciBqZXIgaSBvbiBpbWEgb3Z1IGtsYXN1LiBaYXRvIHNhZCBkb2RhamVtIDxsaT4gKi9cclxuXHQvLyBUT0RPIG1vemRhIG1vZ3Ugb2JyaXNhdGksIGFrbyBnbG9iYWwgb3N0YW5lIGlzdGEgb3ZhXHJcblx0LnJvdW5kZWQtbGcge1xyXG5cdFx0Ym9yZGVyLXJhZGl1czogdmFyKC0tYnItbmF2LWEpICFpbXBvcnRhbnQ7XHJcblx0fVxyXG59XHJcbiIsIi5wcm9zZSB7XHJcblx0Ly8gLS10dy1wcm9zZS1jb2RlOiBjdXJyZW50Q29sb3IgIWltcG9ydGFudDsgLy8gQ29kZSB0ZXh0IGluIG1hcmtkb3duXHJcblx0Ly8gLS10dy1wcm9zZS1ib2xkOiBjdXJyZW50Q29sb3IgIWltcG9ydGFudDsgLy8gQm9sZCB0ZXh0IGluIG1hcmtkb3duXHJcblx0Y29sb3I6IHZhcigtLWMtdHh0KSAhaW1wb3J0YW50O1xyXG5cdGZvbnQtc2l6ZTogMXJlbSAhaW1wb3J0YW50O1xyXG5cclxuXHQtLXR3LXByb3NlLWJvZHk6IHZhcigtLWMtdHh0KSAhaW1wb3J0YW50O1xyXG5cdC0tdHctcHJvc2UtaGVhZGluZ3M6IHZhcigtLWMtYWNjZW50KSAhaW1wb3J0YW50O1xyXG5cdC8vIC0tdHctcHJvc2UtbGVhZDogcmVkICFpbXBvcnRhbnQ7XHJcblx0LS10dy1wcm9zZS1saW5rczogdmFyKC0tYy1hY2NlbnQpICFpbXBvcnRhbnQ7XHJcblx0LS10dy1wcm9zZS1ib2xkOiBjdXJyZW50Q29sb3IgIWltcG9ydGFudDtcclxuXHQtLXR3LXByb3NlLWNvdW50ZXJzOiB2YXIoLS1jLWFjY2VudCkgIWltcG9ydGFudDtcclxuXHQtLXR3LXByb3NlLWJ1bGxldHM6IHZhcigtLWMtYWNjZW50KSAhaW1wb3J0YW50O1xyXG5cdC0tdHctcHJvc2UtaHI6IHZhcigtLWMtYm9yZGVyKSAhaW1wb3J0YW50O1xyXG5cdC0tdHctcHJvc2UtcXVvdGVzOiB2YXIoLS1jLXN1YnRleHQtMikgIWltcG9ydGFudDtcclxuXHQtLXR3LXByb3NlLXF1b3RlLWJvcmRlcnM6IHZhcigtLWMtc3VidGV4dC0yKSAhaW1wb3J0YW50O1xyXG5cdC8vIC0tdHctcHJvc2UtY2FwdGlvbnM6IHJlZCAhaW1wb3J0YW50O1xyXG5cdC0tdHctcHJvc2UtY29kZTogY3VycmVudENvZGUgIWltcG9ydGFudDtcclxuXHQvLyAtLXR3LXByb3NlLXByZS1jb2RlOiB2YXIoLS1jLWFjY2VudCkgIWltcG9ydGFudDtcclxuXHQtLXR3LXByb3NlLXRoLWJvcmRlcnM6IHZhcigtLWMtYm9yZGVyKSAhaW1wb3J0YW50O1xyXG5cdC0tdHctcHJvc2UtdGQtYm9yZGVyczogdmFyKC0tYy1ib3JkZXIpICFpbXBvcnRhbnQ7XHJcblxyXG5cdC8qIF9fX0ZvciBEYXJrIHRoZW1lPz8/ICovXHJcblx0LS10dy1wcm9zZS1pbnZlcnQtYm9keTogdmFyKC0tYy10eHQpICFpbXBvcnRhbnQ7XHJcblx0LS10dy1wcm9zZS1pbnZlcnQtaGVhZGluZ3M6IHZhcigtLWMtYWNjZW50KSAhaW1wb3J0YW50O1xyXG5cdC8vIC0tdHctcHJvc2UtaW52ZXJ0LWxlYWQ6ICM5Y2EzYWYgIWltcG9ydGFudDtcclxuXHQtLXR3LXByb3NlLWludmVydC1saW5rczogdmFyKC0tYy1hY2NlbnQpICFpbXBvcnRhbnQ7XHJcblx0LS10dy1wcm9zZS1pbnZlcnQtYm9sZDogY3VycmVudENvbG9yICFpbXBvcnRhbnQ7XHJcblx0LS10dy1wcm9zZS1pbnZlcnQtY291bnRlcnM6IHZhcigtLWMtYWNjZW50KSAhaW1wb3J0YW50O1xyXG5cdC0tdHctcHJvc2UtaW52ZXJ0LWJ1bGxldHM6IHZhcigtLWMtYWNjZW50KSAhaW1wb3J0YW50O1xyXG5cdC0tdHctcHJvc2UtaW52ZXJ0LWhyOiB2YXIoLS1jLWJvcmRlcikgIWltcG9ydGFudDtcclxuXHQtLXR3LXByb3NlLWludmVydC1xdW90ZXM6IHZhcigtLWMtc3VidGV4dC0yKSAhaW1wb3J0YW50O1xyXG5cdC0tdHctcHJvc2UtaW52ZXJ0LXF1b3RlLWJvcmRlcnM6IHZhcigtLWMtc3VidGV4dC0yKSAhaW1wb3J0YW50O1xyXG5cdC8vIC0tdHctcHJvc2UtaW52ZXJ0LWNhcHRpb25zOiAjOWNhM2FmICFpbXBvcnRhbnQ7XHJcblx0LS10dy1wcm9zZS1pbnZlcnQtY29kZTogY3VycmVudENvbG9yICFpbXBvcnRhbnQ7XHJcblx0Ly8gLS10dy1wcm9zZS1pbnZlcnQtcHJlLWNvZGU6IHZhcigtLWMtYWNjZW50KSAhaW1wb3J0YW50O1xyXG5cdC8vIC0tdHctcHJvc2UtaW52ZXJ0LXByZS1iZzogcmVkICFpbXBvcnRhbnQ7XHJcblx0LS10dy1wcm9zZS1pbnZlcnQtdGgtYm9yZGVyczogdmFyKC0tYy1ib3JkZXIpICFpbXBvcnRhbnQ7XHJcblx0LS10dy1wcm9zZS1pbnZlcnQtdGQtYm9yZGVyczogdmFyKC0tYy1ib3JkZXIpICFpbXBvcnRhbnQ7XHJcblxyXG5cdC8qIE1hcmtkb3duIExpbmtzIHJlbmRlcmVkIGluIEdQVCBhbnN3ZXJzICovXHJcblx0YSB7XHJcblx0XHRAZXh0ZW5kICVsaW5rX2hvdmVyX3VuZGVybGluZWQ7XHJcblx0fVxyXG5cclxuXHQvKiBTdHlsZSBNYXJrZG93biBDaGVja2JveGVzICovXHJcblx0aW5wdXRbdHlwZT0nY2hlY2tib3gnXSB7XHJcblx0XHRwYWRkaW5nOiA3cHggIWltcG9ydGFudDtcclxuXHRcdGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLWMtYWNjZW50KSAhaW1wb3J0YW50O1xyXG5cdFx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcclxuXHRcdGJvcmRlci1yYWRpdXM6IDRweDtcclxuXHJcblx0XHQmOmNoZWNrZWQge1xyXG5cdFx0XHRhY2NlbnQtY29sb3I6IHZhcigtLWMtYWNjZW50KSAhaW1wb3J0YW50O1xyXG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLWFjY2VudCkgIWltcG9ydGFudDtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHRhYmxlIHtcclxuXHRcdC8qIFRPRE8gLSB0aGlzIG92ZXJmbG93IGNhdXNlIGN1dHRpbmcgdGhlIGJvcmRlciBlZGdlcyBvZiBsYXRlc3QgPHRyPiBjaGlsZCwgd3RmLiBTbyBJIGhhdmUgdG8gYWRkIGJvcmRlciB0byA8dGFibGU+IGFsc28gKGRvd24gd2hlcmUgPHRoPiwgPHRkPiBhcmUpICovXHJcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xyXG5cdFx0Ym9yZGVyLXJhZGl1czogdmFyKC0tYnItYnRuKSAhaW1wb3J0YW50O1xyXG5cclxuXHRcdHRoZWFkIHtcclxuXHRcdFx0LS10dy1wcm9zZS1oZWFkaW5nczogdmFyKC0tYy10eHQpICFpbXBvcnRhbnQ7XHJcblxyXG5cdFx0XHRib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlICFpbXBvcnRhbnQ7XHJcblx0XHRcdGJvcmRlci1zcGFjaW5nOiAwICFpbXBvcnRhbnQ7XHJcblx0XHRcdGJhY2tncm91bmQtY29sb3I6IGhzbGEodmFyKC0tdHh0LWhzbCkgLyAwLjE1KSAhaW1wb3J0YW50O1xyXG5cdFx0XHQvLyBiYWNrZ3JvdW5kLWNvbG9yOiBoc2xhKHZhcigtLWFjY2VudC1oc2wpIC8gLjE1KSAhaW1wb3J0YW50O1xyXG5cdFx0XHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xyXG5cdFx0XHRmb250LXNpemU6IDAuOHJlbSAhaW1wb3J0YW50O1xyXG5cdFx0fVxyXG5cclxuXHRcdCYsXHJcblx0XHR0aCxcclxuXHRcdHRkIHtcclxuXHRcdFx0Ym9yZGVyOiAxcHggc29saWQgdmFyKC0tYy1ib3JkZXIpICFpbXBvcnRhbnQ7XHJcblx0XHR9XHJcblxyXG5cdFx0dGgsXHJcblx0XHR0ZCB7XHJcblx0XHRcdHBhZGRpbmc6IDAuNXJlbSAhaW1wb3J0YW50O1xyXG5cdFx0fVxyXG5cclxuXHRcdC8qIE1ha2Ugb2RkIHJvd3MgZGFya2VyICovXHJcblx0XHR0Ym9keSB0cjpudGgtY2hpbGQoMm4pIHtcclxuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogaHNsYSh2YXIoLS10eHQtaHNsKSAvIDAuMDMpICFpbXBvcnRhbnQ7XHJcblx0XHR9XHJcblx0fVxyXG59XHJcblxyXG4vKiBUaGVhZCBjb2xvciBmb3IgRGFyayB0aGVtZSAqL1xyXG5odG1sLmRhcmsgLnByb3NlIHtcclxuXHR0YWJsZSB0aGVhZCB7XHJcblx0XHQtLXR3LXByb3NlLWhlYWRpbmdzOiB2YXIoLS1jLW9uLWFjY2VudCkgIWltcG9ydGFudDtcclxuXHRcdGJhY2tncm91bmQtY29sb3I6IGhzbGEodmFyKC0tYWNjZW50LWhzbCkgLyAwLjcpICFpbXBvcnRhbnQ7XHJcblx0XHQvLyBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLWFjY2VudC1saWdodCkgIWltcG9ydGFudDtcclxuXHR9XHJcbn1cclxuXHJcbi8qIENvZGUtc25pcHBldHMgbWFya2Rvd24gYW5kIG1hcmtkb3duIGhlYWRlciAqL1xyXG5odG1sLmRhcmtbZGF0YS1ncHRoZW1lPSdvbGVkJ10ge1xyXG5cdC5wcm9zZSB7XHJcblx0XHQuYmctYmxhY2sge1xyXG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwICFpbXBvcnRhbnQ7XHJcblxyXG5cdFx0XHQvKiBNYXJrZG93biBjb2RlLXNuaXBwZXRzIChwcm9zZSkgaGVhZGVyICovXHJcblx0XHRcdC5iZy10b2tlbi1zdXJmYWNlLXByaW1hcnkge1xyXG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6ICMwMDAgIWltcG9ydGFudDtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxufVxyXG4iLCIvKiA9PT0gUklHSFQgLSA8cHJlPiAtIE1BUktET1dOIENPREUgSU4gQ0hBVFMgPT09Ki9cclxuXHJcbnByZSB7XHJcblx0Ym9yZGVyLXJhZGl1czogdmFyKC0tYnItcHJlKSAhaW1wb3J0YW50O1xyXG5cdG1hcmdpbjogdmFyKC0tbXktcHJlKSBhdXRvICFpbXBvcnRhbnQ7XHJcblxyXG5cdC0tYy1iZy1wcmU6ICMyMzIxMzY7XHJcblx0LS1tYWluLXN1cmZhY2Utc2Vjb25kYXJ5OiB2YXIoLS1jLWJnLXByZSkgIWltcG9ydGFudDtcclxuXHJcblx0LmJnLWdyYXktOTUwIHtcclxuXHRcdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtYmctcHJlKSAhaW1wb3J0YW50O1xyXG5cdH1cclxuXHJcblx0Ly8gb3ZlcmZsb3c6IGNsaXAgIWltcG9ydGFudDtcclxuXHJcblx0LyogID09PSBSSUdIVCAtIDxwcmU+IC0gaGVhZGVyID09PSAqL1xyXG5cdC8qYGBgIEhlYWRlciBzZWxlY3RvcjogLmJnLWJsYWNrPmRpdjpoYXMoPiBzcGFuKSAqL1xyXG5cclxuXHQvKiAvLyBUT0RPXHJcblx0XHRUaGVyZSBzZWVtcyB0byBiZSBhbiB1bnVzdWFsIGJlaGF2aW9yIHdpdGggdGhlIHRvcC1ib3JkZXItcmFkaXVzIGZvciB0aGUgTWFya2Rvd24gaGVhZGVyLCBjYXVzaW5nIGl0IHRvIGxvc2UgaXRzIHJhZGl1cyBhbmQgYXBwZWFyIGFsbW9zdCBzaGFycCAoYWthIHRoZSBvcmlnaW5hbCBkZXNpZ24pLiBUaGlzIG9jY3VycyB3aGVuIHRoZSBpbnNwZWN0IGVsZW1lbnQgaXMgb3BlbiBvciB3aGVuIHRoZSBzY3JlZW4gc2l6ZSBpcyByZWR1Y2VkLiBJdCBoYXBwZW5zIGxpa2UgYSBmbGFzaCB3aGVuIGhvdmVyaW5nIG92ZXIgdGhlIGNoYXQtYnViYmxlIGFuZCB0aGVuIG1vdmluZyBvdXQgb2YgaXQgY29tcGxldGVseSBvciB3aGVuIGluIHRoZSBpbnNwZWN0IG1vZGUsIGFsc28gaG92ZXJpbmcgQ09QWSBidG4sIGlkay4gSSBjYW5ub3QgZnVsbHkgY29tcHJlaGVuZCB0aGUgaXNzdWUsIGJ1dCBpdCBzZWVtcyB0aGF0IHRoZSBvcmlnaW5hbCBkZXNpZ24gaXMgYmVpbmcgcmVzdG9yZWQsIGRlc3BpdGUgbXkgYXR0ZW1wdHMgdG8gb3ZlcnJpZGUgaXQgdXNpbmcgdmFyaW91cyBtZXRob2RzOlxyXG5cclxuXHRcdEkgaGF2ZSByZXdyaXR0ZW4gdGhlIC5yb3VuZGVkLW1kIGNsYXNzIGFuZCBhbHNvIHRoZSAucm91bmRlZC10LW1kIGNsYXNzIGZvciB0aGUgaGVhZGVyLiBJIGFwcGxpZWQgb3ZlcmZsb3c6IGNsaXAvaGlkZGVuIHRvIDxwcmU+IGFuZCB0aGUgTWFya2Rvd24gaGVhZGVyLiBIb3dldmVyLCBub25lIG9mIHRoZXNlIG1lYXN1cmVzIHNlZW0gdG8gcmVzb2x2ZSB0aGUgaXNzdWUuXHJcblxyXG5cdFx0Ly8gISBVUERBVEVcclxuXHRcdEl0IHNlZW1zIGl0IHdvcmtzIGZpbmUgbm93LlxyXG5cdCovXHJcblx0LyogTWFya2Rvd24gKi9cclxuXHQvKiBDb2RlIG5hbWUgaW4gbWFya2Rvd24gaGVhZGVyIChodG1sLCBwaHAsIGNzcywgZXRjKSAqL1xyXG5cdGRpdjpoYXMoYnV0dG9uKSBzcGFuIHtcclxuXHRcdGNvbG9yOiB2YXIoLS1jLWFjY2VudC1saWdodCkgIWltcG9ydGFudDtcclxuXHR9XHJcblxyXG5cdC8qICdDb3B5IGNvZGUnIGJ0biBpbiBtYXJrZG93biBoZWFkZXIgKi9cclxuXHRidXR0b246aGFzKHN2Zykge1xyXG5cdFx0dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZSAhaW1wb3J0YW50O1xyXG5cdFx0Y29sb3I6IHZhcigtLWMtb24tYWNjZW50KSAhaW1wb3J0YW50O1xyXG5cdFx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYy1iZy1wcmUtaGVhZGVyLWJ0bik7XHJcblx0XHRwYWRkaW5nOiB2YXIoLS1wLWJ0bik7XHJcblx0XHRib3JkZXItcmFkaXVzOiB2YXIoLS1ici1idG4pICFpbXBvcnRhbnQ7XHJcblxyXG5cdFx0LyogU1ZHIGljb25zIGJlZm9yZSAnQ29weSBjb2RlJyBidG4gaW4gbWQgKi9cclxuXHRcdHN2ZyB7XHJcblx0XHRcdGNvbG9yOiBjdXJyZW50Q29sb3IgIWltcG9ydGFudDtcclxuXHRcdH1cclxuXHR9XHJcbn1cclxuXHJcbmh0bWwuZGFya1tkYXRhLWdwdGhlbWU9J29sZWQnXSB7XHJcblx0cHJlIHtcclxuXHRcdC0tYy1iZy1wcmU6ICMwMDA7XHJcblx0fVxyXG59XHJcbiIsIi5idG4ge1xyXG5cdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtYmctYnRuKSAhaW1wb3J0YW50O1xyXG5cdGNvbG9yOiB2YXIoLS1jLWJ0bikgIWltcG9ydGFudDtcclxuXHRib3JkZXItcmFkaXVzOiB2YXIoLS1ici1idG4pICFpbXBvcnRhbnQ7XHJcblx0Ym9yZGVyOiBub25lICFpbXBvcnRhbnQ7XHJcblxyXG5cdCY6bm90KC5idG4tc21hbGwpIHtcclxuXHRcdC8vIHBhZGRpbmc6IDEuNXJlbSAhaW1wb3J0YW50O1xyXG5cdFx0cGFkZGluZzogdmFyKC0tcC1idG4pICFpbXBvcnRhbnQ7XHJcblx0fVxyXG59XHJcblxyXG4vKiAuYnRuLXByaW1hcnkge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYy1iZy1idG4pICFpbXBvcnRhbnQ7XHJcbn0gKi9cclxuXHJcbi5idG4tZGFuZ2VyIHtcclxuXHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLWRhbmdlcikgIWltcG9ydGFudDtcclxuXHRjb2xvcjogdmFyKC0tYy1iZy1jaGF0cy1jb250YWluZXIpICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi8qID09PSBSSUdIVCAtIFNjcm9sbCBEb3duIGFycm93IGJnIExJR0hUICA9PT0gKi9cclxuLy8gaHRtbC5saWdodCBtYWluIFtyb2xlPVwicHJlc2VudGF0aW9uXCJdIGJ1dHRvbi5hYnNvbHV0ZS5yb3VuZGVkLWZ1bGwge1xyXG4vLyAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYy10eHQpICFpbXBvcnRhbnQ7XHJcbi8vIH1cclxuXHJcbi8qID09PSBSSUdIVCAtIFNjcm9sbCBEb3duIGFycm93IGJnIERBUksgID09PSAqL1xyXG4vLyBodG1sLmRhcmsgbWFpbiBbcm9sZT1cInByZXNlbnRhdGlvblwiXSBidXR0b24uYWJzb2x1dGUucm91bmRlZC1mdWxsIHtcclxuLy8gICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtYWNjZW50KSAhaW1wb3J0YW50O1xyXG4vLyB9XHJcbm1haW4gW3JvbGU9J3ByZXNlbnRhdGlvbiddIGJ1dHRvbi5hYnNvbHV0ZS5yb3VuZGVkLWZ1bGwge1xyXG5cdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtYWNjZW50KSAhaW1wb3J0YW50O1xyXG5cdGJveC1zaGFkb3c6IHZhcigtLWJveC1zaGFkb3ctY29udGV4dG1lbnUpO1xyXG5cclxuXHQvKiBSSUdIVCAtIFNjcm9sbCBEb3duIGFycm93IFNWRyBDb2xvciA9PT0gKi9cclxuXHRzdmcge1xyXG5cdFx0Y29sb3I6IHZhcigtLWMtb24tYWNjZW50KSAhaW1wb3J0YW50O1xyXG5cdH1cclxufVxyXG5cclxuLyogPT09IEFsbCB0aGUgLmJ0biBpbnNpZGUgZGlhbG9ncyBub3QgaGF2aW5nIHN2ZyBpY29uIGluc2lkZSAqL1xyXG5bcm9sZT0nZGlhbG9nJ10ge1xyXG5cdC5idG46bm90KC5idG46aGFzKHN2ZykpIHtcclxuXHRcdG1pbi13aWR0aDogdmFyKC0tbWluLXctYnRuKTtcclxuXHR9XHJcblxyXG5cdCY6bm90KC5Qb3BvdmVyQ29udGVudCkgLmJ0bi1uZXV0cmFsIHtcclxuXHRcdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtc3VyZmFjZS0zKSAhaW1wb3J0YW50O1xyXG5cdFx0Y29sb3I6IHZhcigtLWMtdHh0KSAhaW1wb3J0YW50O1xyXG5cdH1cclxuXHJcblx0LyogXCIuUG9wb3ZlckNvbnRlbnRcIiBqZSByZWNpbW8gbWVudSBvZCBidG4gdSBcIlNoYXJlZCBMaW5rIHRvIENoYXRcIiAzZG90cyBtZW51IChTaGFyZWQgeW91ciBOYW1lICYgRGVsZXRlIExpbmspICovXHJcblx0Ji5Qb3BvdmVyQ29udGVudCB7XHJcblx0XHQuYnRuLW5ldXRyYWwge1xyXG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xyXG5cdFx0XHRjb2xvcjogdmFyKC0tYy10eHQpICFpbXBvcnRhbnQ7XHJcblx0XHR9XHJcblx0fVxyXG59XHJcblxyXG4vKiA9PT0gU2V0dGluZ3MgPiBUYWJzID09PSAqL1xyXG5bcm9sZT0ndGFibGlzdCddIGJ1dHRvbiB7XHJcblx0cGFkZGluZzogdmFyKC0tcC1idG4pICFpbXBvcnRhbnQ7XHJcblx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcclxuXHJcblx0JltkYXRhLXN0YXRlPSdhY3RpdmUnXSxcclxuXHQmOmhvdmVyIHtcclxuXHRcdC8vIFRPRE8gT3ZvIGplIG9rIHphIGRlc2t0b3AsIGFsaSB6YSBtYW5qZSBqZSBib2xqZSBzdXJmYWNlLTEuIFRha29kamUgZG9kYXRpIGhvcml6IGdhcCBpem1lZGp1XHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLXN1cmZhY2UtMykgIWltcG9ydGFudDtcclxuXHR9XHJcbn1cclxuXHJcbi8qID09PSBDaGVja2JveCBidXR0b24gLSBzd2l0Y2hlci4gSW4gXCJDaGF0IGhpc3RvcnkgJiB0cmFpbmluZzogYW5kIFwiQ3VzdG9tIGluc3RydWN0aW9uc1wiICovXHJcbmJ1dHRvbltyb2xlPSdzd2l0Y2gnXSB7XHJcblx0LyogQ2hlY2tib3ggT04gKi9cclxuXHQmOmhhcyhbZGF0YS1zdGF0ZT0nY2hlY2tlZCddKSB7XHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLWFjY2VudCkgIWltcG9ydGFudDtcclxuXHJcblx0XHQvKiBDaGIgYnVsbGV0L2NpcmNsZSBjaGVja2VkICovXHJcblx0XHRzcGFuIHtcclxuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYy1vbi1hY2NlbnQpICFpbXBvcnRhbnQ7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKiBDaGVja2JveCBPRkYgKi9cclxuXHQmOmhhcyhbZGF0YS1zdGF0ZT0ndW5jaGVja2VkJ10pIHtcclxuXHRcdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtc3VyZmFjZS0zKSAhaW1wb3J0YW50O1xyXG5cclxuXHRcdC8qIENoYiBidWxsZXQvY2lyY2xlIHVuY2hlY2tlZCAqL1xyXG5cdFx0c3BhbiB7XHJcblx0XHRcdGJhY2tncm91bmQtY29sb3I6IGhzbGEodmFyKC0tYWNjZW50LWhzbCkgLyAwLjUpICFpbXBvcnRhbnQ7XHJcblx0XHR9XHJcblx0fVxyXG59XHJcblxyXG4vKiA9PT0gU2V0dGluZ3MgPiBUaGVtZSBzZWxlY3RvciBkcm9wIGRvd24gKi9cclxuYnV0dG9uW3JvbGU9J2NvbWJvYm94J10ge1xyXG5cdEBleHRlbmQgLmJ0bjtcclxuXHRAZXh0ZW5kIC5idG4tbmV1dHJhbDtcclxuXHRtaW4td2lkdGg6IHZhcigtLW1pbi13LWJ0bik7XHJcblxyXG5cdC8qIFRoZW1lIGJ0biAtIGZpeCBoZWlnaHQgc21hbGxlciB0aGVuIG90aGVyIGJ0bnMgKi9cclxuXHRoZWlnaHQ6IGF1dG87XHJcblx0bGluZS1oZWlnaHQ6IGluaGVyaXQ7XHJcbn1cclxuXHJcbi8qID09PSDinZMgY2lyY2xlIGJ0biBvbiBib3R0b20gcmlnaHQgKi9cclxuYnV0dG9uW2lkKj0naGVhZGxlc3N1aS1tZW51LWJ1dHRvbiddW2NsYXNzKj0nYmctZ3JheS01MCddIHtcclxuXHRjb2xvcjogdmFyKC0tYy10eHQpICFpbXBvcnRhbnQ7XHJcblx0Ym9yZGVyOiBub25lICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi8qIEludHJvIHBhZ2UgKGJlZm9yZSBMb2dpbiBvciBSZWdpc3RlcikgKi9cclxuYnV0dG9uW2NsYXNzKj0nYmctWyMzQzQ2RkZdIHRleHQtWyNmZmZdJ10ge1xyXG5cdEBleHRlbmQgLmJ0bjtcclxufVxyXG4iLCIvKiBcIkNvcGllZCB5b3VyIFVzZXIgSUQgdG8gY2xpcGJvYXJkXCIgcGFyZW50IC0gdG9hc3QgbWVzc2FnZSB3aGVuIGNsaWNraW5nIG9uID8gaWNvbiBib3R0b20gcmlnaHQgb24gdXNlcm5hbWUgKi9cclxuLnRvYXN0LXJvb3Qge1xyXG5cdG1hcmdpbi10b3A6IC0wLjRyZW0gIWltcG9ydGFudDtcclxuXHJcblx0LyogXHJcblx0LSBcIkNvcGllZCB5b3VyIFVzZXIgSUQgdG8gY2xpcGJvYXJkXCIgLSBjbGlja2VkIG9uICd5b3VyZW1haWxAZXhhbXBsZS5jb20nIGluIGNvbnRleHQgbWVudSBvbiA/IGZpeGVkIGJ1dHRvbiBpbiBib3R0b20gcmlnaHQuXHJcblx0LSBBbGVydCBzaG93biBvbiBcIuKEue+4jyBVbmFibGUgdG8gbG9hZCBjb252ZXJzYXRpb25zIGoxMDg5OGQ4ZHM4YS1kc2E2ODlkNmFzOS1zNjhkN2EtajEwODk4ZDhkczhhXCIgKi9cclxuXHRbcm9sZT0nYWxlcnQnXSB7XHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLWFjY2VudCkgIWltcG9ydGFudDtcclxuXHRcdGNvbG9yOiB2YXIoLS1jLW9uLWFjY2VudCkgIWltcG9ydGFudDtcclxuXHRcdHBhZGRpbmc6IHZhcigtLXAtYnRuKSAhaW1wb3J0YW50O1xyXG5cdFx0Ym9yZGVyLXJhZGl1czogdmFyKC0tYnItYnRuKSAhaW1wb3J0YW50OyAvLyBUT0RPIG9icmlzYXRpIG92byBha28gb3N0YXZpbSB1IGdsb2JhbHUgLnJvdW5kZWQtbGcgb25halxyXG5cdFx0Ym9yZGVyOiBub25lICFpbXBvcnRhbnQ7XHJcblx0fVxyXG59XHJcbiIsIi8qID09PSBUT09MVElQUyBhcnJvdyBkaXYgYmcgY29sb3IgPT09ICovXHJcbmRpdltkYXRhLXJhZGl4LXBvcHBlci1jb250ZW50LXdyYXBwZXJdOmhhcyhbcm9sZT0ndG9vbHRpcCddKSB7XHJcblx0QGV4dGVuZCAlYW5pbUZhZGVJbjtcclxuXHJcblx0LyogVG9vbHRpcCBhbmQgdHJpYW5nbGUgYmcgKi9cclxuXHQvLyAuYmctYmxhY2sgbm90IGV4aXN0aW5nIGFueW1vcmUsIGl0IGlzIC5iZy1ncmF5LTk1MCBub3csIGJ1dCBJIHNlbGVjdCBpdCB2aWEgPGRpdj4gdGFnXHJcblxyXG5cdGRpdiB7XHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLWJnLXRvb2x0aXApICFpbXBvcnRhbnQ7XHJcblx0XHRwYWRkaW5nOiB2YXIoLS1wLXRvb2x0aXBzKSAhaW1wb3J0YW50O1xyXG5cdFx0Ym94LXNoYWRvdzogdmFyKC0tYm94LXNoYWRvdy1jb250ZXh0bWVudSkgIWltcG9ydGFudDtcclxuXHR9XHJcbn1cclxuXHJcbi8qID09PSBUT09MVElQUyB0ZXh0IGNvbG9yID09PSAqL1xyXG5odG1sLmxpZ2h0IGRpdltkYXRhLXJhZGl4LXBvcHBlci1jb250ZW50LXdyYXBwZXJdOmhhcyhbcm9sZT0ndG9vbHRpcCddKSB7XHJcblx0W2NsYXNzKj0ndGV4dC13aGl0ZSddIHtcclxuXHRcdGNvbG9yOiB2YXIoLS1jLXR4dCkgIWltcG9ydGFudDtcclxuXHR9XHJcbn1cclxuaHRtbC5kYXJrIGRpdltkYXRhLXJhZGl4LXBvcHBlci1jb250ZW50LXdyYXBwZXJdOmhhcyhbcm9sZT0ndG9vbHRpcCddKSB7XHJcblx0W2NsYXNzKj0ndGV4dC13aGl0ZSddIHtcclxuXHRcdGNvbG9yOiB2YXIoLS1jLW9uLWFjY2VudCkgIWltcG9ydGFudDtcclxuXHR9XHJcbn1cclxuIiwiLmdpem1vLXNoYWRvdy1zdHJva2UuaC1mdWxsOmhhcyhzdmcpIHtcclxuICAgIGNvbG9yOiB2YXIoLS1jLW9uLWFjY2VudCkgIWltcG9ydGFudDtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtYWNjZW50KSAhaW1wb3J0YW50O1xyXG59IiwiLyogX19fICBNT0RBTCBCYWNrZ3JvdW5kICovXHJcbi5hYnNvbHV0ZS5pbnNldC0wIC5maXhlZC5pbnNldC0wIHtcclxuXHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLWJnLW1vZGFsKSAhaW1wb3J0YW50O1xyXG5cdGJhY2tkcm9wLWZpbHRlcjogYmx1cih2YXIoLS1ibHVyLW1vZGFsKSkgIWltcG9ydGFudDtcclxuXHR6LWluZGV4OiB2YXIoLS16LW1vZGFsKTtcclxufVxyXG4iLCIvKiBfX18gRElBTE9HIC0gRGlhbG9nIFNldHRpbmdzICAqL1xyXG5bcm9sZT0nZGlhbG9nJ10ge1xyXG5cdHBhZGRpbmc6IHZhcigtLXAtZGlhbG9nKSAhaW1wb3J0YW50O1xyXG5cdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtYmctZGlhbG9nKSAhaW1wb3J0YW50O1xyXG5cdGJvcmRlci1yYWRpdXM6IHZhcigtLWJyLWRpYWxvZykgIWltcG9ydGFudDtcclxuXHRib3gtc2hhZG93OiB2YXIoLS1ib3gtc2hhZG93KTtcclxuXHQtLWFuaW0tZHVyYXRpb246IDAuMjhzO1xyXG5cdEBleHRlbmQgJWFuaW1GYWRlSW47XHJcblxyXG5cdC5ib3JkZXItdG9rZW4tYm9yZGVyLWxpZ2h0LFxyXG5cdC5ib3JkZXItd2hpdGUsXHJcblx0LmJvcmRlci1ibGFjayB7XHJcblx0XHRib3JkZXItY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XHJcblx0fVxyXG5cclxuXHQvKiBUYWIgdmlldyB0cmFuc2l0aW9ucyAtIEluIHRhYiBkaWFsb2cgcGFydCB3aGljaCBpcyBjaGFuZ2luZyBvbiB0YWJwYW5lbCBjbGljayAob24gcmlnaHQgc2lkZSkgKi9cclxuXHRbaWQqPSctY29udGVudC0nXSB7XHJcblx0XHQtLWFuaW0tZHVyYXRpb246IDAuMThzO1xyXG5cdFx0QGV4dGVuZCAlYW5pbUZhZGVJbjtcclxuXHR9XHJcblxyXG5cdFtyb2xlPSd0YWJsaXN0J10ge1xyXG5cdFx0LyogX19fIERJQUxPRyAtIFwiU2V0dGluZ3NcIiBvbiBzbWFsbGVyIGRldmljZXMgdGhlbiBkZXNrb3AgKi9cclxuXHRcdCZbZGF0YS1vcmllbnRhdGlvbj0naG9yaXpvbnRhbCddLmJnLWdyYXktMTAwIHtcclxuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYy1zdXJmYWNlLTMpICFpbXBvcnRhbnQ7XHJcblx0XHRcdC8vIGJvcmRlci1yYWRpdXM6IHZhcigtLWJyLWJ0bikgIWltcG9ydGFudDtcclxuXHJcblx0XHRcdC8vIGJ1dHRvbltyb2xlPVwidGFiXCJdW2RhdGEtc3RhdGU9XCJhY3RpdmVcIl0ge1xyXG5cdFx0XHRidXR0b25bZGF0YS1zdGF0ZT0nYWN0aXZlJ10ge1xyXG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtc3VyZmFjZS0yKSAhaW1wb3J0YW50O1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKiBBZGQgcGFkZGluZyB5IHRvIHRhYnBhbmVsIGluIFwiU2V0dGluZ3NcIiAoV2hlcmUgXCJUaGVtZVwiLFwiQXJjaGl2ZWQgY2hhdHNcIiwgXCJEZWxldGUgQWxsIGNoYXRzXCIsIGV0YyBhcmUuIEFkZGVkIGJlY2F1c2UgVGhlbWUgZHJvcGRvd24gd2FzIGN1dHRlZCBvbiBob3ZlciBvbiBzbWFsbGVyIGRldmljZXMsIGJlY2F1c2Ugb2YgT3BlbkFJJ3MgYG92ZXJmbG93LXk6IGF1dG9gICovXHJcblx0W3JvbGU9J3RhYnBhbmVsJ11bZGF0YS1vcmllbnRhdGlvbj0naG9yaXpvbnRhbCddIHtcclxuXHRcdHBhZGRpbmc6IDFyZW0gIWltcG9ydGFudDtcclxuXHR9XHJcblxyXG5cdC8qIEhlYWRpbmcgXCJTZXR0aW5nc1wiIGluIFNldHRpbmdzIE1vZGFsICovXHJcblx0aDJbYXM9J2gzJ10ge1xyXG5cdFx0dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcclxuXHR9XHJcblxyXG5cdC8qIFwiWW91ciBpbnZpdGUgaXMgdmFsaWQgdW50aWwgRGVjZW1iZXIgWCwgMjAyM1wiIGluIFwiWU9VJ1JFIElOVklURUQgVE8gUExVU1wiIGZvb3RlciAqL1xyXG5cdC50ZXh0LWdpem1vLWdyYXktNTAwIHtcclxuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcclxuXHRcdG1hcmdpbi10b3A6IDFyZW07XHJcblx0fVxyXG5cclxuXHQuYmctdG9rZW4tc3VyZmFjZS1wcmltYXJ5IHtcclxuXHRcdC0tc3VyZmFjZS1wcmltYXJ5OiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xyXG5cdH1cclxuXHJcblx0LyogRElBTE9HIC0gXCJVcGdyYWRlIHlvdXIgcGxhblwiIG9ubHkgKi9cclxuXHQmOmhhcyhhW2hyZWY9XCJodHRwczovL29wZW5haS5jb20vZW50ZXJwcmlzZVwiXSlcclxuXHR7XHJcblx0XHQvLyBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xyXG5cdFx0Ly8gQ2hhbmdlIGB3aWR0aDogbWF4LWNvbnRlbnQ7YCB0byBgbWF4LXdpZHRoOiBtYXgtY29udGVudDtgIGluIGBbcm9sZT1cImRpYWxvZ1wiXTpoYXMoYVtocmVmPVwiaHR0cHM6Ly9vcGVuYWkuY29tL2VudGVycHJpc2VcIl0pYCBiZWNhdXNlIGl0IGRpc2FibGVzIHNocmlua2luZyB0aGUgY29udGVudCBpbiBgVXBncmFkZSB5b3VyIHBsYW5gIHBvcHVwLiBCdXQgdGhlbiBJIGhhdmUgdG8gZml4IHRoZSBjb250ZW50XHJcblx0XHRtYXgtd2lkdGg6IG1heC1jb250ZW50O1xyXG5cdFx0cGFkZGluZzogMCAhaW1wb3J0YW50O1xyXG5cdFx0Ym9yZGVyOiBub25lICFpbXBvcnRhbnQ7XHJcblxyXG5cdFx0LyogU3RyYW5nZSB3aGl0ZSBiZyBiZWhpbmQg4pyU77iPIGl0ZW1zICovXHJcblx0XHQuYmctd2hpdGUsXHJcblx0XHQuYmctZ3JheS05MDAge1xyXG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLXN1cmZhY2UtMikgIWltcG9ydGFudDtcclxuXHRcdH1cclxuXHJcblx0XHQvKiBCb3JkZXIgcmFkaXVzIGZvciBcIlVwZ3JhZGUgeW91ciBwbGFuXCIgZGlhbG9nICovXHJcblx0XHQucm91bmRlZC1tZCB7XHJcblx0XHRcdGJvcmRlci1yYWRpdXM6IHZhcigtLWJyLWNoYXQtYnViYmxlKSAhaW1wb3J0YW50O1xyXG5cdFx0fVxyXG5cclxuXHRcdC8qICBTdHJva2UgY29sb3IgZm9yIOKclO+4jyBpbiBcIlVwZ3JhZGUgeW91ciBwbGFuXCIgZGlhbG9nIGxpc3QgKi9cclxuXHRcdHN2Z1tzdHJva2U9J2N1cnJlbnRDb2xvciddOmhhcyhwb2x5bGluZSkge1xyXG5cdFx0XHRzdHJva2U6IHZhcigtLWMtYWNjZW50KSAhaW1wb3J0YW50O1xyXG5cdFx0fVxyXG5cclxuXHRcdC8qIFNlZSBcIkNoYXRHUFQgRW50ZXJwcmlzZVwiICovXHJcblx0XHRhW2hyZWY9XCJodHRwczovL29wZW5haS5jb20vZW50ZXJwcmlzZVwiXVxyXG5cdFx0e1xyXG5cdFx0XHRjb2xvcjogdmFyKC0tYy1hY2NlbnQpICFpbXBvcnRhbnQ7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQmOmhhcyhbZGF0YS10ZXN0aWRePSdjb252ZXJzYXRpb24tdHVybi0nXSkge1xyXG5cdFx0W2NsYXNzKj0nZGFyazpiZy1ncmF5LTgwMCddIHtcclxuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYy1zdXJmYWNlLTEpICFpbXBvcnRhbnQ7XHJcblx0XHRcdC8vIGJhY2tncm91bmQtY29sb3I6IGxpZ2h0c2FsbW9uICFpbXBvcnRhbnQ7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKiBESUFMT0cgLSB0ZXh0YXJlYSAoXCJDdXN0b20gaW5zdHJ1Y3Rpb25zXCIpICovXHJcblx0dGV4dGFyZWEge1xyXG5cdFx0Ym9yZGVyLXJhZGl1czogdmFyKC0tYnItY29udGV4dG1lbnUpICFpbXBvcnRhbnQ7XHJcblx0XHRib3JkZXItY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLXN1cmZhY2UtMykgIWltcG9ydGFudDsgLy8gW2NsYXNzKj0nZGFyazpiZy1ncmF5LTgwMCddXHJcblx0XHRvcGFjaXR5OiAwLjc7XHJcblxyXG5cdFx0LyogVGV4dGFyZWEgZmVlZGJhY2sgd2hlbiBjbGljayBvbiBsaWtlIGJ0biBpbiBncHQgYW5zd2VycyAqL1xyXG5cdFx0JiNmZWVkYmFjay1vdGhlciB7XHJcblx0XHRcdHBhZGRpbmc6IDEuNXJlbTtcclxuXHRcdH1cclxuXHJcblx0XHQmOmZvY3VzIHtcclxuXHRcdFx0Ym9yZGVyLWNvbG9yOiB2YXIoLS1jLXN1cmZhY2UtMykgIWltcG9ydGFudDtcclxuXHRcdFx0b3BhY2l0eTogMTtcclxuXHRcdH1cclxuXHJcblx0XHQmOjpwbGFjZWhvbGRlciB7XHJcblx0XHRcdGNvbG9yOiB2YXIoLS1jLXN1YnRleHQtMSkgIWltcG9ydGFudDtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdCYgW2NsYXNzKj0nZGFyazpiZy1ncmF5LTcwMCddOmhhcyhpbnB1dFtpZF0pIHtcclxuXHRcdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtc3VyZmFjZS0zKSAhaW1wb3J0YW50O1xyXG5cclxuXHRcdGlucHV0IHtcclxuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdCAhaW1wb3J0YW50O1xyXG5cdFx0fVxyXG5cdFx0Ly8gYmFja2dyb3VuZC1jb2xvcjogcmVkICFpbXBvcnRhbnQ7XHJcblx0fVxyXG5cclxuXHQvKiBfX18gRGlhbG9nIC0gXCJTaGFyZSBDaGF0XCIgV2hpdGUgcHJldmlldyA8ZGl2PiAgKi9cclxuXHQmOmhhcyhtYWluIGRpdltkYXRhLXJhZGl4LWFzcGVjdC1yYXRpby13cmFwcGVyXSkgLnctZnVsbC5yb3VuZGVkLWxnIHtcclxuXHRcdGJvcmRlci1yYWRpdXM6IHZhcigtLWJyLWNoYXQtYnViYmxlKSAhaW1wb3J0YW50O1xyXG5cdFx0Ym94LXNoYWRvdzogdmFyKC0tYm94LXNoYWRvdyk7XHJcblx0XHRib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcclxuXHJcblx0XHQvKiBNaW5pIGNoYXQgY29udmVyc2F0aW9uICovXHJcblx0XHQtLW1haW4tc3VyZmFjZS1wcmltYXJ5OiB2YXIoLS1jLXN1cmZhY2UtMSkgIWltcG9ydGFudDsgLy8gbWluaSBjaGF0IHByZXZpZXcgYmFja2dyb3VuZCBpbiBcIlNoYXJlIExpbmsgdG8gQ2hhdFwiXHJcblx0XHQtLW1haW4tc3VyZmFjZS1zZWNvbmRhcnk6IHZhcigtLWMtc3VyZmFjZS0xKSAhaW1wb3J0YW50OyAvLyBmb290ZXIgb2YgbWluaSBjaGF0IHByZXZpZXcgaW4gXCJTaGFyZSBMaW5rIHRvIENoYXRcIlxyXG5cdFx0LS1tYWluLXN1cmZhY2UtdGVydGlhcnk6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7IC8vIGJvcmRlciBjb2xvciBvZiBmb290ZXIgb2YgbWluaSBjaGF0IHByZXZpZXcgaW4gXCJTaGFyZSBMaW5rIHRvIENoYXRcIlxyXG5cdH1cclxuXHJcblx0LyogX19fIERJQUxPRyAtIFwiU0hBUkVEIExJTktTXCIgb3IgXCJBUkNISVZFRCBDSEFUU1wiIC0gVGFibGUgICovXHJcblx0dGFibGUge1xyXG5cdFx0Ly8gLS1tYWluLXN1cmZhY2UtcHJpbWFyeTogdmFyKC0tYy1zdXJmYWNlLTIpICFpbXBvcnRhbnQ7XHJcblx0XHRwYWRkaW5nOiB2YXIoLS1wLWNvbnRleHRtZW51KSAhaW1wb3J0YW50O1xyXG5cdFx0Ly8gYm9yZGVyLXJhZGl1czogdmFyKC0tYnItY29udGV4dG1lbnUpO1xyXG5cclxuXHRcdC8qIEJHIG9mIHRoZWFkPnRoICovXHJcblx0XHQuYmctd2hpdGUsXHJcblx0XHQuYmctZ3JheS05MDAge1xyXG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xyXG5cdFx0fVxyXG5cclxuXHRcdHRoLFxyXG5cdFx0dGQge1xyXG5cdFx0XHRwYWRkaW5nLXRvcDogdmFyKC0tcHktYnRuKSAhaW1wb3J0YW50O1xyXG5cdFx0XHRwYWRkaW5nLWJvdHRvbTogdmFyKC0tcHktYnRuKSAhaW1wb3J0YW50O1xyXG5cdFx0fVxyXG5cclxuXHRcdHRoZWFkIHtcclxuXHRcdFx0dHIge1xyXG5cdFx0XHRcdC8vIGJvcmRlci1yYWRpdXM6IHZhcigtLWJyLWJ0bikgIWltcG9ydGFudDtcclxuXHRcdFx0XHQvLyBwYWRkaW5nOiB2YXIoLS1weS1idG4pIHZhcigtLXB4LWJ0bikgIWltcG9ydGFudDtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0dGgge1xyXG5cdFx0XHRcdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2UgIWltcG9ydGFudDtcclxuXHRcdFx0XHQvLyBjb2xvcjogdmFyKC0tYy1hY2NlbnQpICFpbXBvcnRhbnQ7XHJcblx0XHRcdFx0Y29sb3I6IHZhcigtLWMtdHh0KSAhaW1wb3J0YW50O1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0dGJvZHkge1xyXG5cdFx0XHQvKiBMaW5rIGluIHRhYmxlIFNoYXJlZCBMaW5rcy9BcmNoaXZlZCBDaGF0c1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIE5BTUUgLSBmaXJzdCBjb2x1bW4gTGlua3NcclxuICAgICAgICAgICAgICAgIFwiU2hhcmVkIGxpbmtzXCIgJiBcIkFyY2hpdmVkIENoYXRzXCIgbGlua3MgaW4gdGFibGUsIGJ1dCBhW2hyZWZePVwiL2MvXCJdIGlzIGFsc28gQ29udmVyc2F0aW9uIFNWRyBpbiBcIlNoYXJlZCBMaW5rc1wiLCBhaGhcclxuICAgICAgICAgICAgKi9cclxuXHRcdFx0dGQ6Zmlyc3QtY2hpbGQgYSB7XHJcblx0XHRcdFx0QGV4dGVuZCAlbGlua19ob3Zlcl91bmRlcmxlc3M7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC8qIENlbnRlciB0aGUgdmVydGljYWxseSBzdmcgaWNvbnMgbmV4dCB0byBlYWNoIG90aGVyIGluIHRhYmxlICovXHJcblx0XHRcdHRkOmhhcyhidXR0b25bYXJpYS1sYWJlbF49J0RlbGV0ZSddKSBzcGFuW2RhdGEtc3RhdGVdIHtcclxuXHRcdFx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0XHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcblx0XHRcdFx0anVzdGlmeS1pdGVtczogY2VudGVyO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0LyogXCJEZWxldGUgc2hhcmVkIGxpbmtcIiBpbiBTaGFyZWQgTGlua3MgYW5kIFwiRGVsZXRlIGNvbnZlcnNhdGlvblwiIGluIEFyY2hpdmVkIENoYXRzIHN2ZyBjb2xvciAqL1xyXG5cdFx0YnV0dG9uW2FyaWEtbGFiZWxePSdEZWxldGUnXSB7XHJcblx0XHRcdGNvbG9yOiB2YXIoLS1jLWRhbmdlcikgIWltcG9ydGFudDtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qIF9fXyBESUFMT0cgXCJEZWxldGUgYWNjb3VudCAtIGFyZSB5b3Ugc3VyZT9cIiBpbnB1dHMgcGFyZW50cyAqL1xyXG5cdGRpdltjbGFzcyo9J2ZvY3VzLXdpdGhpbjpyaW5nLTEnXTpoYXMoaW5wdXQpIHtcclxuXHRcdHBhZGRpbmc6IDAuOHJlbSAhaW1wb3J0YW50O1xyXG5cdFx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYy1zdXJmYWNlLTMpO1xyXG5cclxuXHRcdGlucHV0IHtcclxuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYy1zdXJmYWNlLTMpO1xyXG5cclxuXHRcdFx0Jjo6cGxhY2Vob2xkZXIge1xyXG5cdFx0XHRcdGNvbG9yOiB2YXIoLS1jLXN1YnRleHQtMSkgIWltcG9ydGFudDtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxufVxyXG4iLCIvKiA9PT0gUklHSFQgLSBDT05WRVJTQVRJT04gQ09OVEFJTkVSID09PSAqL1xyXG5tYWluIFtyb2xlPSdwcmVzZW50YXRpb24nXSB7XHJcblx0JixcclxuXHQvKiBTaGFyZWQgTGluayBQYWdlICovXHJcblx0LmJnLXRva2VuLW1haW4tc3VyZmFjZS1wcmltYXJ5LmgtZnVsbCB7XHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLWJnLWNoYXRzLWNvbnRhaW5lcikgIWltcG9ydGFudDtcclxuXHR9XHJcbn1cclxuXHJcbi8qID09PSBSSUdIVCAtIENoYXRzIC0gR2FwIGZyb20gaGVhZGluZyBhbmQgc3ZnIGljb25zID09PSovXHJcbm1haW4gW2RhdGEtbWVzc2FnZS1hdXRob3Itcm9sZT0ndXNlciddLFxyXG5tYWluIFtkYXRhLW1lc3NhZ2UtYXV0aG9yLXJvbGU9J2Fzc2lzdGFudCddIHtcclxuXHRtYXJnaW4tdG9wOiB2YXIoLS1tdC1jaGF0LXR4dCkgIWltcG9ydGFudDtcclxuXHRtYXJnaW4tYm90dG9tOiB2YXIoLS1tYi1jaGF0LXR4dCkgIWltcG9ydGFudDtcclxufVxyXG5cclxuLyogQCA9PT0gUklHSFQgLSBDSEFUUyBCVUJCTEVTID09PSovXHJcbm1haW4gW2RhdGEtdGVzdGlkXj0nY29udmVyc2F0aW9uLXR1cm4tJ10ge1xyXG5cdG1hcmdpbi1ib3R0b206IHZhcigtLW1iLWNoYXQtYnViYmxlKSAhaW1wb3J0YW50O1xyXG5cclxuXHQvKiBSSUdIVCAtIENIQVRTIEJVQkJMRVMgRElWICovXHJcblx0Lmdyb3VwIHtcclxuXHRcdC8vIHBhZGRpbmc6IHZhcigtLXAtY2hhdC1idWJibGUpICFpbXBvcnRhbnQ7XHJcblx0XHRwYWRkaW5nOiBjYWxjKHZhcigtLXAtY2hhdC1idWJibGUpICogMS4zKSB2YXIoLS1wLWNoYXQtYnViYmxlKSB2YXIoLS1wLWNoYXQtYnViYmxlKSB2YXIoLS1wLWNoYXQtYnViYmxlKSAhaW1wb3J0YW50O1xyXG5cdFx0Ym9yZGVyLXJhZGl1czogdmFyKC0tYnItY2hhdC1idWJibGUpICFpbXBvcnRhbnQ7XHJcblx0XHRsZXR0ZXItc3BhY2luZzogMC4zcHg7XHJcblx0XHRsaW5lLWhlaWdodDogMS44ICFpbXBvcnRhbnQ7XHJcblxyXG5cdFx0LmFnZW50LXR1cm4ge1xyXG5cdFx0XHR3aWR0aDogODAlICFpbXBvcnRhbnQ7XHJcblx0XHRcdC8vIGJvcmRlcjogMXB4IHNvbGlkIHJlZCAhaW1wb3J0YW50O1xyXG5cdFx0XHQvLyBvdmVyZmxvdy14OiBzY3JvbGwgIWltcG9ydGFudDtcclxuXHRcdH1cclxuXHJcblx0XHQvKiAgVE9ETyBcclxuICAgICAgICAgICAgZ2FwOiAwLjc1cmVtICsgd2lkdGg6IDEuNXJlbSA9IDIuMjVyZW0gdG9saWtvIHRyZWJhIGRhIGJ1ZGUgcGFkZGluZy1yaWdodC9tYXJnaW4tcmlnaHQgaSBkb2RhdGkgZmxleC1ncm93OiAxO1xyXG4gICAgICAgICAgICAgICAgb3ZvbWU6IHJlbGF0aXZlIGZsZXggdy1mdWxsIGZsZXgtY29sIGxnOnctW2NhbGMoMTAwJS0xMTVweCldIGFnZW50LXR1cm4gXHJcbiAgICAgICAgICAgICAgICBpIG92b21lOiBsZzp3LVtjYWxjKDEwMCUtMTE1cHgpXSAgICB0byBqZSBpc3RpIGRlbyBzYW1vIHphIHVzZXIgY2hhdCBidWJibGVcclxuICAgICAgICAgICAgdG8gamUga2FvIGNoYXQgb25haiBkZW8gZ2RlIGplIGNoYXQsIGN1ZG5vIGltYSB2ZWxpa2kgc3BhY2Ugc2EgZGVzbmUgc3RyYW5lLCBcclxuICAgICAgICAqL1xyXG5cdFx0Ly8gRml4IG9yaWdpbmFsIHN0cmFuZ2Ugc3BhY2Ugb24gdGhlIHJpZ2h0IChsZWZ0IGlzIHN2ZyBvZiB1c2VyL2dwdCkgaW4gdGhlIGNoYXQgYnViYmxlcyB3aGVyZSB0ZXh0IGlzXHJcblx0XHRkaXZbY2xhc3MqPSdsZzp3LVtjYWxjKDEwMCUtMTE1cHgpXSddIHtcclxuXHRcdFx0Ly8gLmFnZW50LXR1cm4ge1xyXG5cdFx0XHQtLWdhcC0zOiAwLjc1cmVtO1xyXG5cdFx0XHQtLXN2Zy13OiAxLjVyZW07XHJcblx0XHRcdGZsZXgtZ3JvdzogMSAhaW1wb3J0YW50O1xyXG5cdFx0XHRtYXJnaW4tcmlnaHQ6IGNhbGModmFyKC0tZ2FwLTMpICsgdmFyKC0tc3ZnLXcpKSAhaW1wb3J0YW50O1xyXG5cdFx0XHQvLyBwYWRkaW5nLXJpZ2h0OiBjYWxjKHZhcigtLWdhcC0zKSArIHZhcigtLXN2Zy13KSkgIWltcG9ydGFudDtcclxuXHRcdFx0Ly8gYm9yZGVyOiAycHggc29saWQgcmVkICFpbXBvcnRhbnQ7XHJcblx0XHR9XHJcblxyXG5cdFx0LyogXCJXYXMgdGhpcyByZXNwb25zZSBiZXR0ZXIgb3Igd29yc2U/IPCfkY3wn5GOXCIgZWwgd2hlbiBjbGlja2VkIG9uIHJlZ2VuZXJhdGUgYW5zd2VyIGJ0biAgKi9cclxuXHRcdC5iZy1ncmF5LTEwMCxcclxuXHRcdFtjbGFzcyo9JzpiZy1ncmF5LTcwMCddIHtcclxuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcclxuXHRcdFx0Y29sb3I6IHZhcigtLWMtc3VidGV4dC0yKSAhaW1wb3J0YW50O1xyXG5cdFx0XHRib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jLWJvcmRlcik7XHJcblx0XHRcdGJvcmRlci1yYWRpdXM6IHZhcigtLWJyLWNvbnRleHRtZW51KTtcclxuXHJcblx0XHRcdC8qIFwiU2FtZVwiIHN2ZywgZml4IHdoaXRlIGJvcmRlciBmb3IgdmlzdWFseSBjb25zaXN0ZW5jeSAqL1xyXG5cdFx0XHRzdmcucm91bmRlZC1mdWxsIHtcclxuXHRcdFx0XHRib3JkZXItY29sb3I6IHZhcigtLWF2YXRhci1jb2xvcik7XHJcblx0XHRcdH1cclxuXHRcdFx0Lyog8J+RjfCfkY4gKi9cclxuXHRcdFx0YnV0dG9uW3RpdGxlXSB7XHJcblx0XHRcdFx0Ym9yZGVyLXJhZGl1czogdmFyKC0tYnItYnRuKSAhaW1wb3J0YW50O1xyXG5cdFx0XHRcdGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xyXG5cdFx0XHRcdHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjJzICRlYXNlSW5PdXRTaW5lO1xyXG5cclxuXHRcdFx0XHQvKiBcIkJldHRlclwiLCBcIldvcnNlXCIsIFwiU2FtZVwiICovXHJcblx0XHRcdFx0c3BhbiB7XHJcblx0XHRcdFx0XHR0cmFuc2l0aW9uOiBjb2xvciAwLjJzICRlYXNlSW5PdXRTaW5lO1xyXG5cdFx0XHRcdFx0Y29sb3I6IHZhcigtLWMtc3VidGV4dC0yKSAhaW1wb3J0YW50O1xyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0Jjpob3ZlciB7XHJcblx0XHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xyXG5cdFx0XHRcdFx0Ym9yZGVyLWNvbG9yOiB2YXIoLS1jLWJvcmRlcikgIWltcG9ydGFudDtcclxuXHRcdFx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNCUpO1xyXG5cclxuXHRcdFx0XHRcdHNwYW4ge1xyXG5cdFx0XHRcdFx0XHRjb2xvcjogdmFyKC0tYXZhdGFyLWNvbG9yKSAhaW1wb3J0YW50O1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyogUklHSFQgLSBDSEFUUyBVU0VSL0dQVCBOQU1FUyAqL1xyXG5cdC5mb250LXNlbWlib2xkLnNlbGVjdC1ub25lIHtcclxuXHRcdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XHJcblx0fVxyXG5cclxuXHQuZ2l6bW8tc2hhZG93LXN0cm9rZSBkaXYge1xyXG5cdFx0Y29sb3I6IHZhcigtLWMtb24tYWNjZW50KSAhaW1wb3J0YW50O1xyXG5cdH1cclxuXHJcblx0LyogQCBSSUdIVCAtIENIQVRTIEJVQkJMRVMgLSBVU0VSICAqL1xyXG5cdC8vIFRoZXJlIGlzIG5vIFtkYXRhLW1lc3NhZ2UtYXV0aG9yLXJvbGU9XCJ1c2VyXCJdIHdoZW4gd2UgY2xpY2tlZCBvbiBcIkVkaXQgUHJvbXB0XCIsIHNvIHdlIG5lZWQgc2VsZWN0IGFuZCBsaWtlIHRoaXMgZm9yIHRoYXQgY2FzZSBzY2VuYXJpb1xyXG5cdC8vICY6bm90KCY6aGFzKFtkYXRhLW1lc3NhZ2UtYXV0aG9yLXJvbGU9J2Fzc2lzdGFudCddKSksXHJcblx0JjpoYXMoW2RhdGEtbWVzc2FnZS1hdXRob3Itcm9sZT0ndXNlciddKSB7XHJcblx0XHQvKiAgUklHSFQgLSBDSEFUUyBCVUJCTEUgQkcgKi9cclxuXHRcdC5ncm91cCB7XHJcblx0XHRcdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtYmctbXNnLXVzZXIpO1xyXG5cdFx0XHRvdXRsaW5lOiAycHggc29saWQgdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcclxuXHJcblx0XHRcdC8qID09PSBVc2VyL0NoYXRHUFQgbmFtZSA9PT0gKi9cclxuXHRcdFx0LmZvbnQtc2VtaWJvbGQuc2VsZWN0LW5vbmUge1xyXG5cdFx0XHRcdGNvbG9yOiB2YXIoLS1jLW1zZy1uYW1lLXVzZXIpO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0LyogIENoYXQgYnViYmxlIGZvb3RlciBTVkcgaWNvbnMgKi9cclxuXHRcdGJ1dHRvbiBzdmcge1xyXG5cdFx0XHRjb2xvcjogdmFyKC0tYy1tc2ctbmFtZS11c2VyKTtcclxuXHRcdH1cclxuXHR9XHJcblx0LyogVXNlciBjaGF0IGJ1YmJsZSAtIEVkaXQgc3RhdGUuIFRoZXJlIGlzIG5vIFtkYXRhLW1lc3NhZ2UtYXV0aG9yLXJvbGU9XCJ1c2VyXCJdIHdoZW4gd2UgY2xpY2tlZCBvbiBcIkVkaXQgUHJvbXB0XCIsIHNvIHdlIG5lZWQgc2VsZWN0IGFuZCBsaWtlIHRoaXMgZm9yIHRoYXQgY2FzZSBzY2VuYXJpbyAqL1xyXG5cdCY6aGFzKHRleHRhcmVhKSB7XHJcblx0XHQvKiBcdFx0LmZsZXguZmxleC1ncm93LmZsZXgtY29sLm1heC13LWZ1bGwgPiBkaXYge1xyXG5cdFx0XHRAZXh0ZW5kICVhbmltRmFkZUluO1xyXG5cdFx0fSAqL1xyXG5cdFx0Lmdyb3VwIHtcclxuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYy1iZy1jaGF0cy1jb250YWluZXIpICFpbXBvcnRhbnQ7XHJcblx0XHRcdGJveC1zaGFkb3c6IHZhcigtLWJveC1zaGFkb3ctdGV4dGFyZWEpO1xyXG5cdFx0XHRvdXRsaW5lOiAycHggc29saWQgaHNsYSh2YXIoLS1hY2NlbnQtaHNsKSAvIDAuMSkgIWltcG9ydGFudDtcclxuXHRcdFx0dHJhbnNpdGlvbjogb3V0bGluZSAwLjJzIGVhc2UtaW4tb3V0LCBib3gtc2hhZG93IDAuMnMgZWFzZS1pbi1vdXQ7XHJcblxyXG5cdFx0XHQvKiA9PT0gVXNlci9DaGF0R1BUIG5hbWUgPT09ICovXHJcblx0XHRcdC5mb250LXNlbWlib2xkLnNlbGVjdC1ub25lIHtcclxuXHRcdFx0XHRjb2xvcjogdmFyKC0tYy1tc2ctbmFtZS11c2VyKTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0dGV4dGFyZWEge1xyXG5cdFx0XHRcdEBleHRlbmQgJWFuaW1GYWRlSW47XHJcblx0XHRcdFx0Y29sb3I6IHZhcigtLWMtc3VidGV4dC0yKSAhaW1wb3J0YW50O1xyXG5cdFx0XHRcdHBhZGRpbmc6IDAuNXJlbSAwO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQvKiBQYXJlbnQgb2YgYnV0dG9uczogXCJTYXZlICYgU3VibWl0XCIgYW5kIFwiQ2FuY2VsXCIgKi9cclxuXHRcdFx0LnRleHQtY2VudGVyLm10LTIuZmxleC5qdXN0aWZ5LWNlbnRlciB7XHJcblx0XHRcdFx0QGV4dGVuZCAlYW5pbUZhZGVJbjtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0LmJ0bi1uZXV0cmFsIHtcclxuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLXN1cmZhY2UtMykgIWltcG9ydGFudDtcclxuXHRcdFx0XHRjb2xvcjogdmFyKC0tYy10eHQpICFpbXBvcnRhbnQ7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qIEAgUklHSFQgLSBDSEFUUyBCVUJCTEVTIC0gR1BUICovXHJcblx0JjpoYXMoW2RhdGEtbWVzc2FnZS1hdXRob3Itcm9sZT0nYXNzaXN0YW50J10pIHtcclxuXHRcdC8qICAgUklHSFQgLSBDSEFUUyBCVUJCTEUgQkcgICovXHJcblx0XHQuZ3JvdXAge1xyXG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLWJnLW1zZy1ncHQpO1xyXG5cclxuXHRcdFx0c3ZnW3JvbGU9J2ltZyddIHtcclxuXHRcdFx0XHRjb2xvcjogdmFyKC0tYy1zdXJmYWNlLTEpICFpbXBvcnRhbnQ7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC8qICBVc2VyL0NoYXRHUFQgbmFtZSAgKi9cclxuXHRcdFx0LmZvbnQtc2VtaWJvbGQuc2VsZWN0LW5vbmUge1xyXG5cdFx0XHRcdC8vIGNvbG9yOiB2YXIoLS1jLW1zZy1uYW1lLWdwdCk7XHJcblx0XHRcdFx0Y29sb3I6IHZhcigtLWF2YXRhci1jb2xvcik7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHQvKiAgQ2hhdCBidWJibGUgZm9vdGVyIFNWRyBpY29ucyAqL1xyXG5cdFx0YnV0dG9uIHN2ZyB7XHJcblx0XHRcdGNvbG9yOiB2YXIoLS1hdmF0YXItY29sb3IpO1xyXG5cdFx0fVxyXG5cdH1cclxufVxyXG4iLCIvKiA9PT0gUklHSFQgLSBORVcgQ0hBVCAtIDQgQklHIEJUTlMgPT09ICovXHJcblxyXG5tYWluIGZvcm0gLmdyb3cge1xyXG5cdC8qIHJlY2ltbyBnYXAgaXptZWRqdSBuZXcgY2hhdCBleGFtcGxlIGJ1dHRvbnMqL1xyXG5cdC5nYXAtMiB7XHJcblx0XHRnYXA6IDAuOHJlbSAhaW1wb3J0YW50O1xyXG5cdH1cclxuXHJcblx0LmJ0biB7XHJcblx0XHRwYWRkaW5nOiAxLjVyZW0gIWltcG9ydGFudDtcclxuXHRcdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtc3VyZmFjZS0yKSAhaW1wb3J0YW50O1xyXG5cdFx0Y29sb3I6IHZhcigtLWMtdHh0KSAhaW1wb3J0YW50O1xyXG5cdFx0Ym9yZGVyLXJhZGl1czogdmFyKC0tYnItYnRuLWJpZykgIWltcG9ydGFudDtcclxuXHRcdG92ZXJmbG93OiBoaWRkZW47IC8vIE1vcmEgamVyIGthZCBzZSBob3ZlcnVqZSAuYnRuLCBvbmRhIHNlICAuYmctZ3JhZGllbnQtdG8tbCByYWRpdXMgbmUgdWtsYXBhIHMgb3ZpbSwgbWFuamkgamUgaSBvbmRhIC5idG4gY3Vkbm8gaXpnbGVkYSBzYSBkZXNuZSBzdHJhbmUsIG92YWogZ2Egb3ZlcmZsb3d1amVcclxuXHJcblx0XHQvKiBHcmFkaWVudCBiZyB2aXNpYmxlIG9uIGhvdmVyICovXHJcblx0XHQuYmctZ3JhZGllbnQtdG8tbCB7XHJcblx0XHRcdC0tZ3JhZGllbnQtY29sb3ItZnJvbTogdmFyKC0tYy1zdXJmYWNlLTMpICFpbXBvcnRhbnQ7XHJcblx0XHRcdC8vIC0tdHctZ3JhZGllbnQtZnJvbTogdmFyKC0tYy1zdXJmYWNlLTMpIHZhcigtLXR3LWdyYWRpZW50LWZyb20tcG9zaXRpb24pICFpbXBvcnRhbnQ7XHJcblxyXG5cdFx0XHQvKiBCdXR0b24gU1ZHIHBhcmVudCDinYwgXHJcblx0XHRcdE5vIG1vcmUgLmJnLXRva2VuLXN1cmZhY2UtcHJpbWFyeSBjbGFzcywgbm93IGlzIC5iZy10b2tlbi1tYWluLXN1cmZhY2UtcHJpbWFyeSAqL1xyXG5cdFx0XHQvLyAuYmctdG9rZW4tc3VyZmFjZS1wcmltYXJ5IHtcclxuXHRcdFx0LmJnLXRva2VuLW1haW4tc3VyZmFjZS1wcmltYXJ5IHtcclxuXHRcdFx0XHQvLyAtLXN1cmZhY2Utc2Vjb25kYXJ5OiB2YXIoLS1jLXN1cmZhY2UtMikgIWltcG9ydGFudDtcclxuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLWFjY2VudCkgIWltcG9ydGFudDtcclxuXHRcdFx0XHRib3JkZXItcmFkaXVzOiAxMDB2dyAhaW1wb3J0YW50O1xyXG5cdFx0XHRcdHBhZGRpbmc6IDAuNXJlbSAhaW1wb3J0YW50O1xyXG5cclxuXHRcdFx0XHQvKiBTVkcgaWNvbiovXHJcblx0XHRcdFx0c3ZnIHtcclxuXHRcdFx0XHRcdGNvbG9yOiB2YXIoLS1jLW9uLWFjY2VudCkgIWltcG9ydGFudDtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcbn1cclxuIiwiLyogPT09IFNUSUNLWSBDaGF0R1BUIHZlcnNpb24gPT09Ki9cclxuLyogUmVtb3ZpbmcgXCJtYWluXCIgYmVmb3JlIHN0aWNreSBjYXVzZWQgdGhpcyBzdHlsZSBpcyBhcHBsaWVkIG9uIG1hbnkgZWxlbWVudHMgSSBkb24ndCB3YW50OiBTaWRlYmFyIFwiTkVXIENIVFwiIHdyYXBwZXIsIGFuZCBkb3duIHRoZSBbYXJpYS1oYXNwb3B1cD0nbWVudSddOmhvdmVyIGNhdXNlZCBhbHNvIGlzc3VlcyBvbiBpbiBwb3AtdXAgdGFibGUgb24gbW9yZSBvcHRpb25zICgzZG90cykgc3ZnIGljb24uXHJcbkJ1dCBhZGRpbmcgdGhpcyBcIm1haW5cIiBibG9ja2VkIHRoaXMgc3R5bGUgdG8gc21hbGxlciBzY3JlZW5zIHNvIEkgaGF2ZSB0byBhZGQgaXQgZG93biwgb3V0IG9mIHRoaXMgYmxvY2sgKi9cclxubWFpbiAuc3RpY2t5IHtcclxuXHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLWJnLWNoYXRzLXN0aWNreSkgIWltcG9ydGFudDtcclxuXHRiYWNrZHJvcC1maWx0ZXI6IGJsdXIodmFyKC0tYmx1ci1zdGlja3kpKTtcclxuXHJcblx0LyogIFwiTXkgR1BUc1wiIHBhZ2Ugc3RpY2t5IGhlYWRlcnMgdy8gK0NSRUFURSBidG4gKC50b3AtMCBhbmQgLnRvcC0xNCkgKi9cclxuXHQmOmhhcyhbaHJlZj0nL2dwdHMvZWRpdG9yJ10pLFxyXG5cdCYudG9wLTE0IHtcclxuXHRcdC0tYy1iZy1jaGF0cy1zdGlja3k6IHZhcigtLWMtYmctY2hhdHMtY29udGFpbmVyKSAhaW1wb3J0YW50O1xyXG5cdFx0LS1ibHVyLXN0aWNreTogMCAhaW1wb3J0YW50O1xyXG5cdH1cclxuXHQmLnRvcC0xNCB7XHJcblx0XHRwYWRkaW5nLWJvdHRvbTogMC42cmVtICFpbXBvcnRhbnQ7XHJcblx0fVxyXG5cclxuXHRbYXJpYS1oYXNwb3B1cD0nbWVudSddOmhvdmVyLFxyXG5cdFthcmlhLWhhc3BvcHVwPSdtZW51J11bZGF0YS1zdGF0ZT0nb3BlbiddIHtcclxuXHRcdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtc3VyZmFjZS0xKSAhaW1wb3J0YW50O1xyXG5cdH1cclxuXHJcblx0LyogPT09IFNUSUNLWSBDaGF0R1BUIHZlcnNpb24gc3ZnIGljb24gPT09Ki9cclxuXHQuYnRuIHtcclxuXHRcdGJvcmRlci1yYWRpdXM6IDUwdncgIWltcG9ydGFudDtcclxuXHJcblx0XHRzdmcge1xyXG5cdFx0XHRjb2xvcjogdmFyKC0tYy1vbi1hY2NlbnQpICFpbXBvcnRhbnQ7XHJcblx0XHR9XHJcblx0fVxyXG59XHJcblxyXG4vKiBTdGlja3kgaGVhZGVyIGZvciBzbWFsbGVyIHNjcmVlbnMuIFJlbW92ZSBib3JkZXItYm90dG9tICovXHJcbi5zdGlja3kuYm9yZGVyLXRva2VuLWJvcmRlci1tZWRpdW0ge1xyXG5cdGJvcmRlcjogbm9uZSAhaW1wb3J0YW50O1xyXG59XHJcbiIsIi8qID09PSAgUklHSFQgLSBURVhUQVJFQSBQQVJFTlQsIG1lc3NhZ2UgdHlwZSBhbmQgc2VuZCBidXR0b24gKi9cclxuLy8gbWFpbiBmb3JtIC5vdmVyZmxvdy1oaWRkZW46aGFzKHRleHRhcmVhI3Byb21wdC10ZXh0YXJlYSkge1xyXG5tYWluIGZvcm0gW2NsYXNzKj0nWyY6aGFzKHRleHRhcmVhOmZvY3VzKV0nXTpoYXModGV4dGFyZWEjcHJvbXB0LXRleHRhcmVhKSB7XHJcblx0cGFkZGluZzogdmFyKC0tcC1wcm9tcHQtdGV4dGFyZWEpICFpbXBvcnRhbnQ7XHJcblx0Ly8gYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcclxuXHQvLyBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLWJnLWNoYXRzLWNvbnRhaW5lcikgIWltcG9ydGFudDtcclxuXHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLWJnLXRleHRhcmVhKSAhaW1wb3J0YW50O1xyXG5cdGJvcmRlci1yYWRpdXM6IHZhcigtLWJyLXByb21wdC10ZXh0YXJlYSkgIWltcG9ydGFudDtcclxuXHQvLyBib3JkZXI6IDNweCBzb2xpZCB2YXIoLS1jLWJvcmRlci10ZXh0YXJlYSk7XHJcblx0Ym9yZGVyOiBub25lICFpbXBvcnRhbnQ7XHJcblx0Ym94LXNoYWRvdzogdmFyKC0tYm94LXNoYWRvdy10ZXh0YXJlYSk7XHJcblx0dHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjNzIGVhc2UtaW4tb3V0LCBib3gtc2hhZG93IDAuM3MgZWFzZS1pbi1vdXQ7XHJcblx0Ly8gYm94LXNoYWRvdzogdmFyKC0tYm94LXNoYWRvdy1jb250ZXh0bWVudSkgIWltcG9ydGFudDtcclxuXHJcblx0JjpoYXModGV4dGFyZWEjcHJvbXB0LXRleHRhcmVhOmZvY3VzKSB7XHJcblx0XHQvLyBib3gtc2hhZG93OiB2YXIoLS1ib3gtc2hhZG93LWNvbnRleHRtZW51KSAhaW1wb3J0YW50O1xyXG5cdFx0Ly8gYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xyXG5cdFx0Ym94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xyXG5cdH1cclxuXHJcblx0dGV4dGFyZWE6OnBsYWNlaG9sZGVyIHtcclxuXHRcdGNvbG9yOiB2YXIoLS1jLXBsYWNlaG9sZGVyLXRleHRhcmVhKSAhaW1wb3J0YW50O1xyXG5cdH1cclxuXHJcblx0LyogU2VuZCBidXR0b24gKi9cclxuXHRidXR0b25bZGF0YS10ZXN0aWQ9J3NlbmQtYnV0dG9uJ10ge1xyXG5cdFx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYy1hY2NlbnQpICFpbXBvcnRhbnQ7XHJcblx0XHRjb2xvcjogdmFyKC0tYy10eHQpICFpbXBvcnRhbnQ7XHJcblx0XHRib3JkZXItY29sb3I6IHZhcigtLWMtYWNjZW50KSAhaW1wb3J0YW50O1xyXG5cdFx0Ym9yZGVyLXJhZGl1czogMTAwdncgIWltcG9ydGFudDtcclxuXHRcdHBhZGRpbmc6IDJweDtcclxuXHRcdHJpZ2h0OiAxLjNyZW0gIWltcG9ydGFudDtcclxuXHRcdGJvdHRvbTogMS4ycmVtICFpbXBvcnRhbnQ7XHJcblxyXG5cdFx0JltkaXNhYmxlZF0ge1xyXG5cdFx0XHRvcGFjaXR5OiAwLjUgIWltcG9ydGFudDtcclxuXHRcdH1cclxuXHJcblx0XHRzdmcge1xyXG5cdFx0XHRjb2xvcjogdmFyKC0tYy1vbi1hY2NlbnQpICFpbXBvcnRhbnQ7XHJcblx0XHR9XHJcblx0fVxyXG59XHJcblxyXG4vKiA9PT0gUklHSFQgLSBURVhUQVJFQSBwYXJ0IHdyYXBwZXIsIG1hcmdpbi10b3AgPT09Ki9cclxubWFpbiBkaXZbcm9sZT0ncHJlc2VudGF0aW9uJ10gZGl2LnctZnVsbDpoYXMoZm9ybSkge1xyXG5cdG1hcmdpbi10b3A6IDAuNXJlbSAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4vKiA9PT0gUklHSFQgLSBURVhUQVJFQSBQQVJFTlQgPT09Ki9cclxubWFpbiBkaXYuZmxleC53LWZ1bGwuaXRlbXMtY2VudGVyID4gZGl2IHtcclxuXHRib3gtc2hhZG93OiBub25lO1xyXG5cdGJvcmRlcjogbm9uZTtcclxufVxyXG4iLCIvKiBGb290ZXIgdGogd3JhcHBlciBmb3IgZ3JlZW4gYnRuIFwiVXBncmFkZSB0byBQbHVzIHRvIGNyZWF0ZSB5b3VyIG93biBHUFRcIiAgKi9cclxubWFpbiBbcm9sZT1cInByZXNlbnRhdGlvblwiXSBbY2xhc3MqPVwiZW1wdHk6aGlkZGVuXCJdOmhhcyg+IGFbaHJlZj1cIi9ncHRzL2Rpc2NvdmVyeVwiXSkge1xyXG4gICAgcGFkZGluZzogMS41cmVtO1xyXG5cclxuICAgIC5iZy1ncmVlbi02MDAge1xyXG4gICAgICAgIEBleHRlbmQgLmJ0bjtcclxuICAgIH1cclxufSIsIm1haW46aGFzKC5zdGlja3kgW2hyZWY9Jy9ncHRzL2VkaXRvciddKSB7XHJcblx0Ly8gLyogTWFpbiBDYXJkcyAoYmlnKSAqL1xyXG5cdC8vIC5yb3VuZGVkLXhsIHtcclxuXHQvLyBcdGJvcmRlci1yYWRpdXM6IHZhcigtLWJyLWJ0bi1iaWcpICFpbXBvcnRhbnQ7XHJcblx0Ly8gfVxyXG5cdC8vIC8qIFNlYXJjaCBxdWVyeSBsaXN0IGNhcmRzLiBJbnB1dCBzZWFyY2ggKi9cclxuXHQvLyAucm91bmRlZC1sZyB7XHJcblx0Ly8gXHRib3JkZXItcmFkaXVzOiB2YXIoLS1ici1idG4pICFpbXBvcnRhbnQ7XHJcblx0Ly8gfVxyXG5cdC8qIFN0aWNreSBoZWFkZXIgdGFncyBha2EgXCJUb3AgUGlja3NcIiwgXCJEQUxMRVwiLCBcIldyaXRpbmdcIiwgZXRjICovXHJcblx0LnN0aWNreSB7XHJcblx0XHRbY2xhc3MqPSdtZDpyb3VuZGVkLW5vbmUnXSxcclxuXHRcdFtjbGFzcyo9J21kOnJvdW5kZWQtbGcnXSB7XHJcblx0XHRcdGJvcmRlci1yYWRpdXM6IDEwMHZ3ICFpbXBvcnRhbnQ7XHJcblx0XHRcdHBhZGRpbmctaW5saW5lOiAxcmVtICFpbXBvcnRhbnQ7XHJcblx0XHR9XHJcblx0XHQvKiBBY3RpdmUgdGFnIGFrYSBcIlRvcCBQaWNrc1wiICovXHJcblx0XHRbY2xhc3MqPSdtZDpyb3VuZGVkLW5vbmUnXSB7XHJcblx0XHRcdGJvcmRlcjogbm9uZSAhaW1wb3J0YW50O1xyXG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLWFjY2VudCkgIWltcG9ydGFudDtcclxuXHRcdFx0Y29sb3I6IHZhcigtLWMtb24tYWNjZW50KSAhaW1wb3J0YW50O1xyXG5cclxuXHRcdFx0LyogRml4IGFjdGl2ZSBwaWxsIHRhZyBiZyBiZSBvdmVyd3JpdHRlbiBieSBnbG9iYWwgW2NsYXNzKj0nYmctYmxhY2snXSAqL1xyXG5cdFx0XHQmW2NsYXNzKj0nYmctYmxhY2snXSB7XHJcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYy1hY2NlbnQpICFpbXBvcnRhbnQ7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdC8qIE5vLWFjdGl2ZSB0YWdzIGFrYSBcIkRBTExFXCIsIFwiV3JpdGluZ1wiLCBldGMgKi9cclxuXHRcdFtjbGFzcyo9J21kOnJvdW5kZWQtbGcnXSB7XHJcblx0XHRcdGJhY2tncm91bmQtY29sb3I6IGhzbGEodmFyKC0tYWNjZW50LWhzbCkgLyAwLjIpICFpbXBvcnRhbnQ7XHJcblx0XHRcdGNvbG9yOiB2YXIoLS1jLWFjY2VudCkgIWltcG9ydGFudDtcclxuXHRcdH1cclxuXHJcblx0XHQvKiBMZWZ0L3JpZ2h0IGFycm93cyBpbiB0YWdzIHRyYWNrICovXHJcblx0XHRbY2xhc3MqPSdiZy1ncmFkaWVudC10by0nXSB7XHJcblx0XHRcdGJ1dHRvbiB7XHJcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYy1hY2NlbnQpICFpbXBvcnRhbnQ7XHJcblx0XHRcdFx0Y29sb3I6IHZhcigtLWMtb24tYWNjZW50KSAhaW1wb3J0YW50O1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKiBJbnB1dCBzZWFyY2ggKi9cclxuXHRpbnB1dFtwbGFjZWhvbGRlcj0nU2VhcmNoIHB1YmxpYyBHUFRzJ10ge1xyXG5cdFx0b3V0bGluZTogbm9uZTtcclxuXHRcdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtc3VyZmFjZS0yKSAhaW1wb3J0YW50O1xyXG5cclxuXHRcdCY6OnBsYWNlaG9sZGVyIHtcclxuXHRcdFx0Y29sb3I6IHZhcigtLWMtc3VidGV4dC0xKSAhaW1wb3J0YW50O1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyogQWxsIHRoZSBjYXJkcyBob3ZlciBiZyAob24gc2VhcmNoIHF1ZXJ5IGxpc3QgYW5kIG9uIG1haW4gYmlnIG9uZXMpICovXHJcblx0W2NsYXNzKj0nZGFyazpob3ZlcjpiZy13aGl0ZS8xMCddIHtcclxuXHRcdCY6aG92ZXIge1xyXG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLXN1cmZhY2UtMykgIWltcG9ydGFudDtcclxuXHRcdH1cclxuXHR9XHJcblx0LyogU2VjdGlvbiB2aXNpYmxlIG9uIHNlYXJjaCBxdWVyeSAqL1xyXG5cdFtpZCo9J2hlYWRsZXNzdWktcG9wb3Zlci1wYW5lbC0nXSB7XHJcblx0XHQvLyAtLW1haW4tc3VyZmFjZS1wcmltYXJ5OiB2YXIoLS1jLXN1cmZhY2UtMikgIWltcG9ydGFudDtcclxuXHRcdC0tYnItc2VhcmNoLXF1ZXJ5LXNlY3Rpb246IGNhbGModmFyKC0tYnItYnRuKSAqIDEuMikgIWltcG9ydGFudDtcclxuXHJcblx0XHQvKiBBZGRlZCB0byB2aXN1YWxseSByZW1vdmUgdW5zdGlja25lc3Mgc2VhcmNoIHF1ZXJ5IHNlY3Rpb24gZnJvbSBpbnB1dCBzZWFyY2ggKi9cclxuXHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNXB4KTtcclxuXHJcblx0XHRib3JkZXItcmFkaXVzOiAwIDAgdmFyKC0tYnItc2VhcmNoLXF1ZXJ5LXNlY3Rpb24pIHZhcigtLWJyLXNlYXJjaC1xdWVyeS1zZWN0aW9uKSAhaW1wb3J0YW50O1xyXG5cclxuXHRcdC8qIFNlYXJjaCBxdWVyeSBzZWN0aW9uIGl0ZW1zL2NhcmRzICovXHJcblx0XHQuZ2l6bW8tbGluayB7XHJcblx0XHRcdGJvcmRlci1yYWRpdXM6IHZhcigtLWJyLWJ0bikgIWltcG9ydGFudDtcclxuXHRcdFx0bWFyZ2luLWJvdHRvbTogMC41cmVtO1xyXG5cclxuXHRcdFx0c3ZnLnRleHQtZ3JheS00MDAge1xyXG5cdFx0XHRcdGNvbG9yOiB2YXIoLS1jLW9uLWFjY2VudCkgIWltcG9ydGFudDtcclxuXHRcdFx0XHQvLyBjb2xvcjogcmVkICFpbXBvcnRhbnQ7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC8vICY6aG92ZXIge1xyXG5cdFx0XHQvLyBcdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtc3VyZmFjZS0zKSAhaW1wb3J0YW50O1xyXG5cdFx0XHQvLyB9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKiBBbGwgdGhlIGNhcmQgaXRlbXMgaW4gR1BUcyBTdG9yZSBtYWluIHBhZ2UgKi9cclxuXHQuaC1maXQge1xyXG5cdFx0LyogXCJTZWUgbW9yZVwiIGZ1bGwtd2lkdGggYnV0dG9ucyAqL1xyXG5cdFx0LmJ0bi53LWZ1bGwge1xyXG5cdFx0XHQvLyBwYWRkaW5nOiBjYWxjKHZhcigtLXAtYnRuKSAqIDEuNSkgIWltcG9ydGFudDtcclxuXHRcdFx0cGFkZGluZzogMS44cmVtICFpbXBvcnRhbnQ7XHJcblx0XHRcdGJvcmRlci1yYWRpdXM6IGNhbGModmFyKC0tYnItYnRuKSAqIDEuMikgIWltcG9ydGFudDtcclxuXHRcdH1cclxuXHR9XHJcbn1cclxuXHJcbi8qIFxyXG4/IEFjdGl2ZSB0YWcgY2xhc3NlcyAoXCJUb3AgUGlja3NcIikgdnMgbm8tYWN0aXZlIHRhZyBjbGFzc2VzIChcIkRBTExFXCIsIFwiV3JpdGluZ1wiLCBldGMpXHJcbmBgYGJvcmRlci10b2tlbi10ZXh0LXByaW1hcnkgYmctYmxhY2sgdGV4dC13aGl0ZSBkYXJrOmJnLWdyYXktMTAwIGRhcms6dGV4dC1ncmF5LTgwMCBtZDpyb3VuZGVkLW5vbmUgbWQ6Ym9yZGVyLWItMiBtZDp0ZXh0LWJsYWNrIGRhcms6bWQ6dGV4dC13aGl0ZVxyXG5jdXJzb3ItcG9pbnRlciBzY3JvbGwtbXgtNSB3aGl0ZXNwYWNlLW5vd3JhcCByb3VuZGVkLTN4bCBweC0zIHB5LTIgZmlyc3Q6bWwtNCBsYXN0Om1yLTQgbWQ6cHgtMiBtZDpmaXJzdDptbC0wIG1kOmxhc3Q6bXItMCBib3JkZXItdG9rZW4tdGV4dC1wcmltYXJ5IGJnLWJsYWNrIHRleHQtd2hpdGUgZGFyazpiZy1ncmF5LTEwMCBkYXJrOnRleHQtZ3JheS04MDAgbWQ6cm91bmRlZC1ub25lIG1kOmJvcmRlci1iLTIgbWQ6YmctdHJhbnNwYXJlbnQgbWQ6dGV4dC1ibGFjayBkYXJrOm1kOmJnLXRyYW5zcGFyZW50IGRhcms6bWQ6dGV4dC13aGl0ZVxyXG5cclxuYGBgYmctZ3JheS01MCwgZGFyazpiZy1ncmF5LTcwMCBtZDpyb3VuZGVkLWxnIG1kOnRleHQtdG9rZW4tdGV4dC10ZXJ0aWFyeSBtZDpob3ZlcjpiZy1ncmF5LTUwIGRhcms6bWQ6aG92ZXI6YmctZ3JheS03MDBcclxuY3Vyc29yLXBvaW50ZXIgc2Nyb2xsLW14LTUgd2hpdGVzcGFjZS1ub3dyYXAgcm91bmRlZC0zeGwgcHgtMyBweS0yIGZpcnN0Om1sLTQgbGFzdDptci00IG1kOnB4LTIgbWQ6Zmlyc3Q6bWwtMCBtZDpsYXN0Om1yLTAgYmctZ3JheS01MCBob3ZlcjpiZy1ncmF5LTEwMCBkYXJrOmJnLWdyYXktNzAwIGRhcms6aG92ZXI6YmctZ3JheS02MDAgbWQ6cm91bmRlZC1sZyBtZDpiZy10cmFuc3BhcmVudCBtZDp0ZXh0LXRva2VuLXRleHQtdGVydGlhcnkgbWQ6aG92ZXI6YmctZ3JheS01MCBkYXJrOm1kOmJnLXRyYW5zcGFyZW50IGRhcms6bWQ6aG92ZXI6YmctZ3JheS03MDBcclxuKi9cclxuIiwiLyogX19fIEdlbmVyYWwgKi9cclxuYnV0dG9uLFxyXG5saSxcclxuYSxcclxuc3ZnLFxyXG5bY2xhc3MqPSc6aG92ZXInXSxcclxuW3JvbGU9J3N3aXRjaCddIHNwYW5bZGF0YS1zdGF0ZV0ge1xyXG5cdHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0O1xyXG5cclxuXHQvLyB0cmFuc2l0aW9uOlxyXG5cdC8vICAgICBhbGwgLjM1cyB2YXIoLS1lYXNlLWRlZmF1bHQpLFxyXG5cdC8vICAgICBvcGFjaXR5IC4zIGVhc2UtaW4tb3V0LFxyXG5cdC8vICAgICBiYWNrZ3JvdW5kLWNvbG9yIC4zIGVhc2UtaW4tb3V0LFxyXG5cdC8vICAgICBjb2xvciAuMyBlYXNlLWluLW91dDtcclxuXHJcblx0LyogICAgIHRyYW5zaXRpb246XHJcbiAgICAgICAgdHJhbnNmb3JtIC4yNXMgdmFyKC0tZWFzZS1kZWZhdWx0KSxcclxuICAgICAgICBvcGFjaXR5IC4zcyBlYXNlLWluLW91dCxcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yIC4zcyBlYXNlLWluLW91dCxcclxuICAgICAgICBjb2xvciAuM3MgZWFzZS1pbi1vdXQsXHJcbiAgICAgICAgYm9yZGVyLWNvbG9yIC4zcyBlYXNlLWluLW91dCxcclxuICAgICAgICBib3gtc2hhZG93IC4zcyBlYXNlLWluLW91dCxcclxuICAgICAgICBzY2FsZSAuM3MgZWFzZS1pbi1vdXQsXHJcbiAgICAgICAgcm90YXRlIC4zcyBlYXNlLWluLW91dCxcclxuICAgICAgICB0cmFuc2xhdGUgLjNzIGVhc2UtaW4tb3V0LFxyXG4gICAgICAgIGZpbHRlciAuM3MgZWFzZS1pbi1vdXQsXHJcbiAgICAgICAgYm9yZGVyLXJhZGl1cyAuM3MgZWFzZS1pbi1vdXQsIGluc2V0IC4zcyBlYXNlLWluLW91dDsgKi9cclxufVxyXG5cclxuLyogX19fIEJVVFRPTiBTVkcgaWNvbiB3aGljaCBBUkUgTk9UIGluOlxyXG4gICAgLSBpbiAuYnRuIDxidXR0b24+XHJcbiAgICAtIFRoZW1lIGNob29zaW5nIDxidXR0b24+XHJcbiAgICAtIGluIGFjdGl2ZSB0YWIgPGJ1dHRvbj5cclxuICAgIC0gaW4gc2VuZCBtZXNzYWdlIGJ0biA8YnV0dG9uPlxyXG4gICAgLSBidG5zIGluIG1lc3NhZ2UgYnViYmxlIGZvb3RlciA8YnV0dG9uPiAoW2NsYXNzKj1cIlsuZmluYWwtY29tcGxldGlvbl1cIl0pIFxyXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAgIC0gLmJ0biAgfCAgQnV0dG9uXHJcbiAgICAtIFtyb2xlPVwidGFiXCJdICB8ICBBY3RpdmUgdGFiXHJcbiAgICAtIFtyb2xlPVwiY29tYm9ib3hcIl0gIHwgIFRoZW1lIGNob29zaW5nXHJcbiAgICAtIFtkYXRhLXRlc3RpZD1cInNlbmQtYnV0dG9uXCJdICB8ICBTZW5kIE1lc3NhZ2UgQnV0dG9uXHJcbiAgICAtIFtjbGFzcyo9XCJbLmZpbmFsLWNvbXBsZXRpb25dXCJdICB8ICBCdG5zIGluIE1lc3NhZ2UgYnViYmxlIGZvb3RlclxyXG4gICAgLSBbYXJpYS1sYWJlbF49XCJEZWxldGVcIl0pICB8IFwiRGVsZXRlXCIgaWNvbiBpbiBcIlNoYXJlZCBsaW5rc1wiIGFuZCBcIkFyY2hpdmVkIENoYXRzXCIgXHJcbiAgICAtIFthcmlhLWxhYmVsPVwiVW5hcmNoaXZlIGNvbnZlcnNhdGlvblwiXSkgIHwgXCJVbmFyY2hpdmVcIiBpY29uIGluIFwiQXJjaGl2ZWQgQ2hhdHNcIlxyXG4gICAqL1xyXG5idXR0b246bm90KFxyXG5cdFx0LmJ0bixcclxuXHRcdFtyb2xlPSd0YWInXSxcclxuXHRcdFtyb2xlPSdjb21ib2JveCddLFxyXG5cdFx0W2RhdGEtdGVzdGlkPSdzZW5kLWJ1dHRvbiddLFxyXG5cdFx0W2NsYXNzKj0nWy5maW5hbC1jb21wbGV0aW9uXSddLFxyXG5cdFx0W2FyaWEtbGFiZWxePSdEZWxldGUnXSxcclxuXHRcdFthcmlhLWxhYmVsPSdVbmFyY2hpdmUgY29udmVyc2F0aW9uJ11cclxuXHQpIHtcclxuXHRzdmcge1xyXG5cdFx0dHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGNlbnRlcjtcclxuXHRcdC8vIGJvcmRlcjogMXB4IHNvbGlkIHJlZCAhaW1wb3J0YW50O1xyXG5cdH1cclxuXHJcblx0c3ZnOmhvdmVyIHtcclxuXHRcdHRyYW5zZm9ybTogc2NhbGUoMS4xMik7XHJcblx0fVxyXG59XHJcblxyXG4uYnRuIHtcclxuXHR3aWxsLWNoYW5nZTogdHJhbnNmb3JtLCBvcGFjaXR5O1xyXG5cclxuXHQvLyB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC40cyAkZWFzZU91dEJhY2ssIG9wYWNpdHkgMC4zcyBlYXNlLWluLW91dCwgYmFja2dyb3VuZC1jb2xvciAwLjNzIGVhc2UtaW4tb3V0LCBjb2xvciAwLjNzIGVhc2UtaW4tb3V0ICFpbXBvcnRhbnQ7XHJcblx0dHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMnMgJGVhc2VJbk91dFF1YWQsIG9wYWNpdHkgMC4zcyBlYXNlLWluLW91dCwgYmFja2dyb3VuZC1jb2xvciAwLjNzIGVhc2UtaW4tb3V0LFxyXG5cdFx0Y29sb3IgMC4zcyBlYXNlLWluLW91dCAhaW1wb3J0YW50O1xyXG5cclxuXHQmOmlzKDpob3ZlciwgOmFjdGl2ZSkge1xyXG5cdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpO1xyXG5cdFx0b3BhY2l0eTogMC44O1xyXG5cdH1cclxufVxyXG5cclxuLyogZGlhbG9nIGJ1dHRvbnMgKi9cclxuW3JvbGU9J2RpYWxvZyddIHtcclxuXHQvKiBcIi5Qb3BvdmVyQ29udGVudFwiIGplIHJlY2ltbyBtZW51IG9kIGJ0biB1IFwiU2hhcmVkIExpbmsgdG8gQ2hhdFwiIDNkb3RzIG1lbnUgKFNoYXJlZCB5b3VyIE5hbWUgJiBEZWxldGUgTGluaykgKi9cclxuXHQmLlBvcG92ZXJDb250ZW50IHtcclxuXHRcdC5idG4tbmV1dHJhbDppcyg6aG92ZXIsIDpmb2N1cykge1xyXG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLXN1cmZhY2UtMikgIWltcG9ydGFudDtcclxuXHRcdFx0Y29sb3I6IHZhcigtLWMtdHh0KSAhaW1wb3J0YW50O1xyXG5cdFx0XHR0cmFuc2Zvcm06IG5vbmUgIWltcG9ydGFudDtcclxuXHRcdFx0b3BhY2l0eTogMSAhaW1wb3J0YW50O1xyXG5cdFx0fVxyXG5cdH1cclxufVxyXG5cclxuLyogX19fIFN3aXRjaCBidXR0b24gY2lyY2xlIGhvdmVyLiBPdmRlIG5lIG1vemUgOmZvY3VzLCBvc3RhbmUgc3R5bGUga2FvIGRhIGplIGNoZWNrZWQgaWxpIG9icm51dG8gaSBrYWQgc2UgdW5ob3ZlcnVqZSAqL1xyXG5idXR0b25bcm9sZT0nc3dpdGNoJ10ge1xyXG5cdHNwYW5bZGF0YS1zdGF0ZV0ge1xyXG5cdFx0dHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuNHMgJGVhc2VJbk91dEJhY2ssIGJhY2tncm91bmQtY29sb3IgMC4zcyBlYXNlLWluLW91dDtcclxuXHR9XHJcblxyXG5cdCY6aG92ZXIge1xyXG5cdFx0c3BhbltkYXRhLXN0YXRlXSB7XHJcblx0XHRcdC8qIE92byBzZSBrb3NpIHNhIG9wZW5haSBrbGFzYW1hLCBqZXIgb24gZG9kYWplIHRyYW5zbGF0ZS14IC0xOXB4LCBwYSBzZSBjaXJjbGUgcG9tZXJhIGxldm8sIHN0byBpIG5pamUgbG9zZSwgbG9sLiBBa28gdG8gbmUgemVsaW1vLCBtb3plbW8ga29yaXN0aXRpIHNjYWxlIHVtZXN0byB0cmFuc2Zvcm06IHNjYWxlICovXHJcblx0XHRcdHRyYW5zZm9ybTogc2NhbGUoMC44KTtcclxuXHRcdH1cclxuXHR9XHJcbn1cclxuXHJcbi8qIF9fXyBOZXcgQ2hhdCBiaWcgYnV0dG9ucyAqL1xyXG5tYWluIGZvcm0gLmdyb3cgLmJ0biB7XHJcblx0Ly8gdHJhbnNpdGlvbjogLjRzICRlYXNlT3V0QmFjaywgYmFja2dyb3VuZC1jb2xvciAuM3MgZWFzZS1pbi1vdXQgb3BhY2l0eSAuM3MgZWFzZS1pbi1vdXQ7XHJcblxyXG5cdC8qIEdyYWRpZW50IGJnIHZpc2libGUgb24gaG92ZXIgKi9cclxuXHQuYmctZ3JhZGllbnQtdG8tbCB7XHJcblx0XHR0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dDtcclxuXHJcblx0XHQvKiBCdXR0b24gU1ZHIHBhcmVudCB3cmFwcGVyICovXHJcblx0XHRzcGFuW2RhdGEtc3RhdGVdIHtcclxuXHRcdFx0b3ZlcmZsb3c6IGhpZGRlbjtcclxuXHRcdFx0cGFkZGluZzogNHB4OyAvLyBiZWNhdXNlIHN2ZyBidG4gbG9va3MgY3V0IG9mZiBpbiBmaXJlZm94LCBzbyBhZGQgYSBsaXR0bGUgc3BhY2UgYXJvdW5kXHJcblxyXG5cdFx0XHQvKiBCdXR0b24gdy8gU1ZHICovXHJcblx0XHRcdC8vIC5iZy10b2tlbi1zdXJmYWNlLXByaW1hcnkgeyB0aGlzIGNsYXNzIGRvZXNudCBleGlzdCBhbnltb3JlLi4uXHJcblx0XHRcdC5iZy10b2tlbi1tYWluLXN1cmZhY2UtcHJpbWFyeSB7XHJcblx0XHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEyMCUpIHNjYWxlKDAuNSk7XHJcblx0XHRcdFx0dHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuNXMgJGVhc2VPdXRCYWNrO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQmOmhvdmVyIHtcclxuXHRcdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtc3VyZmFjZS0zKSAhaW1wb3J0YW50O1xyXG5cdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC00cHgpO1xyXG5cclxuXHRcdC5iZy1ncmFkaWVudC10by1sIHtcclxuXHRcdFx0c3BhbltkYXRhLXN0YXRlXSB7XHJcblx0XHRcdFx0LyogQnV0dG9uIHcvIFNWRyAqL1xyXG5cdFx0XHRcdC8vIC5iZy10b2tlbi1zdXJmYWNlLXByaW1hcnkge1xyXG5cdFx0XHRcdC5iZy10b2tlbi1tYWluLXN1cmZhY2UtcHJpbWFyeSB7XHJcblx0XHRcdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCUpIHNjYWxlKDEpO1xyXG5cdFx0XHRcdFx0b3BhY2l0eTogMSAhaW1wb3J0YW50O1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxufVxyXG5cclxuLyogX19fIFRleHRhcmVhIHNlbmQgbWVzc2FnZSBzZW5kLWJ1dHRvbiAqL1xyXG5bZGF0YS10ZXN0aWQ9J3NlbmQtYnV0dG9uJ106bm90KFtkaXNhYmxlZF0pIHtcclxuXHR0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC40cyAkZWFzZU91dEJhY2ssIG9wYWNpdHkgMC4zcyBlYXNlLWluLW91dDtcclxuXHJcblx0Jjpob3ZlciB7XHJcblx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwJSk7XHJcblx0fVxyXG59XHJcblxyXG4vKiBfX18gQ2hhdCBCdWJibGVzICovXHJcbm1haW4gW2RhdGEtdGVzdGlkXj0nY29udmVyc2F0aW9uLXR1cm4tJ10ge1xyXG5cdC5ncm91cCB7XHJcblx0XHQmOmhvdmVyIHtcclxuXHRcdFx0LyogQnViYmxlIG1lc3NhZ2UgZm9vdGVyIChpY29ucyB3cmFwcGVyKSAqL1xyXG5cdFx0XHRkaXZbY2xhc3MqPSdlbXB0eTpoaWRkZW4nXTpoYXMoYnV0dG9uW2NsYXNzKj0nWy5maW5hbC1jb21wbGV0aW9uXSddKSAudmlzaWJsZSB7XHJcblx0XHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xyXG5cdFx0XHRcdG9wYWNpdHk6IDE7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC8qIEJ1YmJsZSBtZXNzYWdlIGZvb3RlciAoc3ZnIGljb25zKSAqL1xyXG5cdFx0XHRbY2xhc3MqPSdbLmZpbmFsLWNvbXBsZXRpb25dJ10gc3ZnIHtcclxuXHRcdFx0XHR0cmFuc2Zvcm06IHNjYWxlKDEpO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0LyogQnViYmxlIG1lc3NhZ2UgZm9vdGVyICovXHJcblx0XHRkaXZbY2xhc3MqPSdlbXB0eTpoaWRkZW4nXTpoYXMoYnV0dG9uW2NsYXNzKj0nWy5maW5hbC1jb21wbGV0aW9uXSddKSB7XHJcblx0XHRcdG92ZXJmbG93LXk6IGNsaXA7XHJcblx0XHRcdC8vIHBhZGRpbmctaW5saW5lOiAxMHB4OyAvLyB0byBtYWtlIGNvdW50ZXIgYW5zd2VyICg8Mi80PikgdmlzaWJsZSB3aGVuIHRoaXMgaXMgb3ZlcmZsb3ctaGlkZGVuLCB3ZSBuZWVkIHRvIGFkZCBwYWRkaW5nLWlubGluZSwgb3Igd2UgY2FuIHVzZSBvdmVyZmxvdy15OiBjbGlwOyBBbmQgb3ZlcmZsb3cgaXMgXCJpbXBvcnRhbnRcIiBmb3IgdHJhbnNsYXRlIHRyYW5zaXRpb25cclxuXHJcblx0XHRcdC8qIEJ1YmJsZSBtZXNzYWdlIGZvb3RlciAoaWNvbnMgd3JhcHBlcikgKi9cclxuXHRcdFx0LnZpc2libGUge1xyXG5cdFx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcclxuXHRcdFx0XHRvcGFjaXR5OiAwO1xyXG5cdFx0XHRcdHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjRzICRlYXNlT3V0QmFjaywgb3BhY2l0eSAwLjNzIGVhc2U7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHQvKiBCdWJibGUgbWVzc2FnZSBmb290ZXIgKHN2ZyBpY29ucykgKi9cclxuXHRcdFtjbGFzcyo9J1suZmluYWwtY29tcGxldGlvbl0nXSBzdmcge1xyXG5cdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMHB4KTtcclxuXHRcdFx0dHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuNHMgJGVhc2VPdXRCYWNrLCBvcGFjaXR5IDAuM3MgZWFzZS1pbi1vdXQ7XHJcblxyXG5cdFx0XHQmOmhvdmVyIHtcclxuXHRcdFx0XHRvcGFjaXR5OiAwLjg7XHJcblx0XHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0zcHgpO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG59XHJcblxyXG4vKiBcIkNvcHkgY29kZVwiIGJ0biAqL1xyXG5wcmUge1xyXG5cdGJ1dHRvbjpoYXMoc3ZnKSB7XHJcblx0XHR0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC40cyAkZWFzZU91dEJhY2ssIG9wYWNpdHkgMC4zcyBlYXNlLWluLW91dCwgYmFja2dyb3VuZC1jb2xvciAwLjJzIGVhc2UtaW4tb3V0LFxyXG5cdFx0XHRjb2xvciAwLjFzIGVhc2UtaW4tb3V0ICFpbXBvcnRhbnQ7XHJcblxyXG5cdFx0c3ZnIHtcclxuXHRcdFx0dHJhbnNpdGlvbjogY29sb3IgMC4xcyBlYXNlLWluLW91dCAhaW1wb3J0YW50O1xyXG5cdFx0fVxyXG5cclxuXHRcdCY6aG92ZXIge1xyXG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLWFjY2VudC1saWdodCkgIWltcG9ydGFudDtcclxuXHRcdFx0Y29sb3I6IHZhcigtLWMtb24tYWNjZW50KSAhaW1wb3J0YW50O1xyXG5cdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMnB4KTtcclxuXHRcdH1cclxuXHR9XHJcbn1cclxuXHJcbmh0bWwubGlnaHQgcHJlIGJ1dHRvbjpoYXMoc3ZnKTpob3ZlciB7XHJcblx0Y29sb3I6IHZhcigtLWMtdHh0KSAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4vKiBfX18gU2Nyb2xsIGRvd24gYnV0dG9uICovXHJcbm1haW4gW3JvbGU9J3ByZXNlbnRhdGlvbiddIGJ1dHRvbi5hYnNvbHV0ZS5yb3VuZGVkLWZ1bGwge1xyXG5cdHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjRzICRlYXNlT3V0QmFjaywgb3BhY2l0eSAwLjNzIGVhc2UtaW4tb3V0O1xyXG5cclxuXHQmOmhvdmVyIHtcclxuXHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMCUpO1xyXG5cdFx0b3BhY2l0eTogMSAhaW1wb3J0YW50O1xyXG5cdH1cclxufVxyXG5cclxuLyogX19fIFRhYmxlIFwiQXJjaGl2ZWQgQ2hhdHNcIiBvciBcIlNoYXJlZCBMaW5rc1wiICovXHJcbltyb2xlPSdkaWFsb2cnXSB0YWJsZSB7XHJcblx0dGJvZHkge1xyXG5cdFx0LyogVGFibGUgY29sdW1uIHRoYXQgY29udGFpbnMgXCJEZWxldGVcIiBzdmcgaWNvbiAqL1xyXG5cdFx0dGQ6aGFzKGJ1dHRvblthcmlhLWxhYmVsXj0nRGVsZXRlJ10pIHtcclxuXHRcdFx0c3ZnIHtcclxuXHRcdFx0XHR0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC40cyAkZWFzZU91dEJhY2s7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC8qIFNWRyBwYXJlbnQgd3JhcHBlciAqL1xyXG5cdFx0XHRzcGFuW2RhdGEtc3RhdGVdOmhvdmVyIHtcclxuXHRcdFx0XHRzdmcge1xyXG5cdFx0XHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKDJweCkgc2NhbGUoMSkgIWltcG9ydGFudDtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcbn1cclxuXHJcbi8qID09PSDinZMgY2lyY2xlIGJ0biBvbiBib3R0b20gcmlnaHQgKi9cclxuYnV0dG9uW2lkKj0naGVhZGxlc3N1aS1tZW51LWJ1dHRvbiddW2NsYXNzKj0ncm91bmRlZC1mdWxsJ10ge1xyXG5cdHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzICRlYXNlT3V0Q2lyYztcclxuXHJcblx0Jjpob3ZlciB7XHJcblx0XHR0cmFuc2Zvcm06IHNjYWxlKDEuMDYpO1xyXG5cdH1cclxufVxyXG5cclxuLyogR1BUcyBTdG9yZSBwYWdlIC0gQWxsIHRoZSBjYXJkIGl0ZW1zICovXHJcbm1haW46aGFzKC5zdGlja3kgW2hyZWY9Jy9ncHRzL2VkaXRvciddKSB7XHJcblx0LnN0aWNreSB7XHJcblx0XHQvKiBTdGlja3kgaGVhZGVyIHdpdGggdGFncyBha2EgXCJUb3AgUGlja3NcIiwgXCJEQUxMRVwiLCBcIldyaXRpbmdcIiwgZXRjICovXHJcblx0XHRbY2xhc3MqPSdtZDpyb3VuZGVkLW5vbmUnXSxcclxuXHRcdFtjbGFzcyo9J21kOnJvdW5kZWQtbGcnXSB7XHJcblx0XHRcdC8vIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4zcyBlYXNlLCBjb2xvciAwLjNzIGVhc2UsIHRyYW5zZm9ybSAwLjJzICRlYXNlSW5DaXJjO1xyXG5cdFx0XHR0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuM3MgJGVhc2VJbk91dFNpbmUsIGNvbG9yIDAuM3MgJGVhc2VJbk91dFNpbmUsIHRyYW5zZm9ybSAwLjNzICRlYXNlSW5PdXRTaW5lO1xyXG5cdFx0fVxyXG5cdFx0LyogTm9uLWFjdGl2ZSBwaWxsLXRhZyAqL1xyXG5cdFx0W2NsYXNzKj0nbWQ6cm91bmRlZC1sZyddOmhvdmVyIHtcclxuXHRcdFx0dHJhbnNmb3JtOiBzY2FsZSgwLjk1NSk7XHJcblx0XHRcdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtYWNjZW50KSAhaW1wb3J0YW50O1xyXG5cdFx0XHRjb2xvcjogdmFyKC0tYy1vbi1hY2NlbnQpICFpbXBvcnRhbnQ7XHJcblx0XHR9XHJcblxyXG5cdFx0LyogTGVmdC9yaWdodCBhcnJvd3MgaW4gdGFncyB0cmFjayAqL1xyXG5cdFx0W2NsYXNzKj0nYmctZ3JhZGllbnQtdG8tJ10gYnV0dG9uIHtcclxuXHRcdFx0dHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuM3MgJGVhc2VJblF1YXJ0O1xyXG5cdFx0fVxyXG5cdFx0LyogUmlnaHQgdGFncyBhcnJvdyAqL1xyXG5cdFx0W2NsYXNzKj0nYmctZ3JhZGllbnQtdG8tbCddIGJ1dHRvbiB7XHJcblx0XHRcdCY6aG92ZXIge1xyXG5cdFx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWCgzcHgpO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHQvKiBMZWZ0IHRhZ3MgYXJyb3cgKi9cclxuXHRcdFtjbGFzcyo9J2JnLWdyYWRpZW50LXRvLXInXSBidXR0b24ge1xyXG5cdFx0XHQmOmhvdmVyIHtcclxuXHRcdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTNweCk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblx0LyogQWxsIHRoZSBjYXJkIGl0ZW1zIGluIEdQVHMgU3RvcmUgbWFpbiBwYWdlICovXHJcblx0LmgtZml0IHtcclxuXHRcdGFbaHJlZio9Jy9nL2ctJ10ge1xyXG5cdFx0XHQvLyBib3JkZXI6IDFweCBzb2xpZCByZWQgIWltcG9ydGFudDtcclxuXHRcdFx0dHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuM3MgJGVhc2VJbk91dFNpbmUsIGJhY2tncm91bmQtY29sb3IgMC4zcyBlYXNlLWluLW91dDtcclxuXHJcblx0XHRcdCY6aG92ZXIge1xyXG5cdFx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtM3B4KTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxufVxyXG4iLCIuZ3B0aCB7XHJcblx0Jl9fc3ZnIHtcclxuXHRcdC0tc3ZnLXNpemU6IDIuMjVyZW07XHJcblx0XHQtLXRvcDogY2FsYyh2YXIoLS1oLWhlYWRlcikgKyAwLjVyZW0pO1xyXG5cdFx0LS1yaWdodDogMS4zcmVtO1xyXG5cdFx0cG9zaXRpb246IGZpeGVkO1xyXG5cdFx0dG9wOiB2YXIoLS10b3ApO1xyXG5cdFx0cmlnaHQ6IHZhcigtLXJpZ2h0KTtcclxuXHRcdHotaW5kZXg6IDEwO1xyXG5cclxuXHRcdC8vIHRoaXMgYWRkIG9ubHkgZm9yIEZpcmVmb3hcclxuXHRcdEAtbW96LWRvY3VtZW50IHVybC1wcmVmaXgoKSB7XHJcblx0XHRcdC0tcmlnaHQ6IDAuOTVyZW07XHJcblx0XHR9XHJcblxyXG5cdFx0Ji1pY29uIHtcclxuXHRcdFx0LS1pY29uLXNoYWRvdy1ibHVyOiAwcHg7XHJcblx0XHRcdC0taWNvbi1zaGFkb3ctb2Zmc2V0OiA2cHg7XHJcblx0XHRcdC0taWNvbi1zaGFkb3ctY29sb3I6IGhzbGEodmFyKC0tYWNjZW50LWhzbCkgLyAwLjEpO1xyXG5cdFx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XHJcblx0XHRcdGRpc3BsYXk6IGdyaWQ7XHJcblx0XHRcdHBsYWNlLWl0ZW1zOiBjZW50ZXI7XHJcblx0XHRcdHdpZHRoOiB2YXIoLS1zdmctc2l6ZSk7XHJcblx0XHRcdGhlaWdodDogdmFyKC0tc3ZnLXNpemUpO1xyXG5cdFx0XHRib3JkZXItcmFkaXVzOiA1MHZ3O1xyXG5cdFx0XHRib3gtc2hhZG93OiB2YXIoLS1ib3gtc2hhZG93KTtcclxuXHRcdFx0dHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMTVzICRlYXNlT3V0Q3ViaWMsIG91dGxpbmUgMC4yNXMgJGVhc2VPdXRDdWJpYztcclxuXHRcdFx0Y3Vyc29yOiBwb2ludGVyO1xyXG5cclxuXHRcdFx0aW1nIHtcclxuXHRcdFx0XHRvYmplY3QtZml0OiBjb3ZlcjtcclxuXHRcdFx0XHR3aWR0aDogdmFyKC0tc3ZnLXNpemUpO1xyXG5cdFx0XHRcdGhlaWdodDogdmFyKC0tc3ZnLXNpemUpO1xyXG5cdFx0XHRcdGJvcmRlci1yYWRpdXM6IDUwdnc7XHJcblx0XHRcdFx0Ym94LXNoYWRvdzogMHB4IDBweCB2YXIoLS1pY29uLXNoYWRvdy1ibHVyKSB2YXIoLS1pY29uLXNoYWRvdy1vZmZzZXQpIGhzbGEodmFyKC0tYWNjZW50LWhzbCkgLyAwLjMpO1xyXG5cdFx0XHRcdHRyYW5zaXRpb246IGJveC1zaGFkb3cgMC4ycyAkZWFzZU91dEN1YmljO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQmOjphZnRlciB7XHJcblx0XHRcdFx0Y29udGVudDogJ0NoYW5nZSB0aGVtZSc7XHJcblx0XHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xyXG5cdFx0XHRcdHRvcDogNTAlO1xyXG5cdFx0XHRcdGxlZnQ6IDA7XHJcblx0XHRcdFx0Zm9udC1zaXplOiAwLjc1cmVtO1xyXG5cdFx0XHRcdGJvcmRlci1yYWRpdXM6IDEuMnJlbTtcclxuXHRcdFx0XHR3aWR0aDogbWF4LWNvbnRlbnQ7XHJcblx0XHRcdFx0aGVpZ2h0OiBtYXgtY29udGVudDtcclxuXHRcdFx0XHRwYWRkaW5nOiAwLjVyZW0gMC44cmVtO1xyXG5cdFx0XHRcdHBvaW50ZXItZXZlbnRzOiBub25lO1xyXG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtYmctdG9vbHRpcCk7XHJcblx0XHRcdFx0b3BhY2l0eTogMDtcclxuXHRcdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMTAwJSwgLTUwJSk7XHJcblx0XHRcdFx0dHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuM3MgZWFzZS1pbi1vdXQsIG9wYWNpdHkgMC4zcyBlYXNlLWluLW91dDtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0Jjpob3ZlciB7XHJcblx0XHRcdFx0LS1pY29uLXNoYWRvdy1ibHVyOiAzMHB4O1xyXG5cdFx0XHRcdC0taWNvbi1zaGFkb3ctb2Zmc2V0OiA3cHg7XHJcblx0XHRcdFx0LS1pY29uLXNoYWRvdy1jb2xvcjogaHNsYSh2YXIoLS1hY2NlbnQtaHNsKSAvIDAuMik7XHJcblx0XHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKDJweCk7XHJcblxyXG5cdFx0XHRcdG91dGxpbmU6IDVweCBzb2xpZCBoc2xhKHZhcigtLWFjY2VudC1oc2wpIC8gMC4wNSk7XHJcblx0XHRcdFx0b3V0bGluZS1vZmZzZXQ6IDhweDtcclxuXHJcblx0XHRcdFx0Jjo6YWZ0ZXIge1xyXG5cdFx0XHRcdFx0b3BhY2l0eTogMTtcclxuXHRcdFx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlKC0xMTUlLCAtNTAlKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblx0Jl9fb3B0aW9ucyB7XHJcblx0XHRwb2ludGVyLWV2ZW50czogbm9uZTtcclxuXHRcdG9wYWNpdHk6IDA7XHJcblx0XHRkaXNwbGF5OiBncmlkO1xyXG5cdFx0cGxhY2UtaXRlbXM6IGNlbnRlcjtcclxuXHRcdGdhcDogM3JlbTtcclxuXHRcdHdpZHRoOiBtYXgtY29udGVudDtcclxuXHRcdGhlaWdodDogbWF4LWNvbnRlbnQ7XHJcblx0XHRwYWRkaW5nOiAwLjhyZW07XHJcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XHJcblx0XHRyaWdodDogNTAlO1xyXG5cdFx0dG9wOiAxNTAlO1xyXG5cdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVYKDUwJSk7XHJcblx0XHRib3JkZXItcmFkaXVzOiAyMHZ3O1xyXG5cdFx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYy1zdXJmYWNlLTMpO1xyXG5cdFx0Ym94LXNoYWRvdzogdmFyKC0tYm94LXNoYWRvdyk7XHJcblxyXG5cdFx0Ly8gYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KC0xMzVkZWcsICM3MTY3ODIsICM0MjMzNWQsICMyZTFmNDgpO1xyXG5cdFx0YmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzMzMjI1MCwgIzQyMzM1ZCA0MCUsICM2YzYwN2YgMTAwJSk7XHJcblxyXG5cdFx0Y2xpcC1wYXRoOiBwb2x5Z29uKDAgMCwgMTAwJSAwLCAxMDAlIDAsIDAlIDApO1xyXG5cdFx0dHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQ7XHJcblx0XHRiYWNrZHJvcC1maWx0ZXI6IGJsdXIoNXB4KTtcclxuXHJcblx0XHQmLmdwdGgtb3B0aW9ucy1zaG93biB7XHJcblx0XHRcdG9wYWNpdHk6IDE7XHJcblx0XHRcdHBvaW50ZXItZXZlbnRzOiBhbGwgIWltcG9ydGFudDtcclxuXHRcdFx0Y2xpcC1wYXRoOiBwb2x5Z29uKDAgMCwgMTAwJSAwLCAxMDAlIDEwMCUsIDAlIDEwMCUpICFpbXBvcnRhbnQ7XHJcblxyXG5cdFx0XHRidXR0b24ge1xyXG5cdFx0XHRcdHRyYW5zZm9ybTogc2NhbGUoMSk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHRoNSB7XHJcblx0XHRcdG1hcmdpbi1ib3R0b206IDFyZW07XHJcblx0XHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuXHRcdFx0Zm9udC1zaXplOiAxLjNyZW07XHJcblx0XHRcdGxldHRlci1zcGFjaW5nOiAxcHg7XHJcblx0XHRcdGZvbnQtd2VpZ2h0OiAxMDA7XHJcblx0XHR9XHJcblx0fVxyXG5cdCZfX3RoZW1lcyB7XHJcblx0XHRkaXNwbGF5OiBncmlkO1xyXG5cdFx0cGxhY2UtaXRlbXM6IGNlbnRlcjtcclxuXHJcblx0XHQmLWJ0bnMge1xyXG5cdFx0XHRnYXA6IDFyZW07XHJcblx0XHRcdGRpc3BsYXk6IGdyaWQ7XHJcblx0XHRcdGJvcmRlci1yYWRpdXM6IHZhcigtLWJyLWJ0bik7XHJcblxyXG5cdFx0XHRidXR0b24ge1xyXG5cdFx0XHRcdC0tYnRuLXNpemU6IDJyZW07XHJcblx0XHRcdFx0LS1idG4tYmc6IHZhcigtLWMtc3VyZmFjZS0yKTtcclxuXHRcdFx0XHQtLWJ0bi1zaGFkb3ctY29sb3I6IHZhcigtLWJ0bi1iZyk7XHJcblx0XHRcdFx0Y3Vyc29yOiBwb2ludGVyO1xyXG5cdFx0XHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuXHRcdFx0XHR3aWR0aDogdmFyKC0tYnRuLXNpemUpO1xyXG5cdFx0XHRcdGhlaWdodDogdmFyKC0tYnRuLXNpemUpO1xyXG5cdFx0XHRcdGRpc3BsYXk6IGdyaWQ7XHJcblx0XHRcdFx0cGxhY2UtaXRlbXM6IGNlbnRlcjtcclxuXHRcdFx0XHRsaW5lLWhlaWdodDogMTtcclxuXHRcdFx0XHRib3JkZXItcmFkaXVzOiA1MHZ3O1xyXG5cdFx0XHRcdGJvcmRlcjogbm9uZTtcclxuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1idG4tYmcpO1xyXG5cdFx0XHRcdC8vIGJveC1zaGFkb3c6IGluc2V0IDBweCAwcHggNXB4IDFweCB2YXIoLS1idG4tc2hhZG93LWNvbG9yKTtcclxuXHRcdFx0XHQvLyBib3gtc2hhZG93OiBpbnNldCAwcHggMHB4IDhweCAxcHggdmFyKC0tYnRuLXNoYWRvdy1jb2xvcik7XHJcblx0XHRcdFx0Ly8gYm94LXNoYWRvdzogMHB4IDBweCA1cHggMnB4IGhzbGEodmFyKC0tYWNjZW50LWhzbCkgLyAwLjIpXHJcblx0XHRcdFx0dHJhbnNmb3JtOiBzY2FsZSgwKTtcclxuXHRcdFx0XHR0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMnMgZWFzZSwgYmFja2dyb3VuZC1pbWFnZSAwLjJzIGVhc2UsIHRyYW5zZm9ybSAwLjNzIGVhc2UtaW4tb3V0O1xyXG5cclxuXHRcdFx0XHQmOjphZnRlciB7XHJcblx0XHRcdFx0XHRjb250ZW50OiBhdHRyKGRhdGEtZ3B0aC10aGVtZSk7XHJcblx0XHRcdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XHJcblx0XHRcdFx0XHR0b3A6IDUwJTtcclxuXHRcdFx0XHRcdGxlZnQ6IDUwJTtcclxuXHRcdFx0XHRcdHdpZHRoOiBtYXgtY29udGVudDtcclxuXHRcdFx0XHRcdGZvbnQtc2l6ZTogMC44cmVtO1xyXG5cdFx0XHRcdFx0cGFkZGluZzogNHB4IDRweDtcclxuXHRcdFx0XHRcdGJvcmRlci1yYWRpdXM6IDVweDtcclxuXHRcdFx0XHRcdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtYWNjZW50LWxpZ2h0KTtcclxuXHRcdFx0XHRcdG9wYWNpdHk6IDA7XHJcblx0XHRcdFx0XHRib3JkZXItcmFkaXVzOiA1MHZ3O1xyXG5cdFx0XHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSkgc2NhbGUoMCk7XHJcblx0XHRcdFx0XHR0cmFuc2l0aW9uOiAwLjI1cyBlYXNlLWluLW91dDtcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdCY6aG92ZXIge1xyXG5cdFx0XHRcdFx0LS1idG4tYmc6IGhzbGEoMCwgMCUsIDAlLCAwKSAhaW1wb3J0YW50O1xyXG5cclxuXHRcdFx0XHRcdCYjZGFyayB7XHJcblx0XHRcdFx0XHRcdGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XHJcblx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0Jjo6YWZ0ZXIge1xyXG5cdFx0XHRcdFx0XHRvcGFjaXR5OiAxO1xyXG5cdFx0XHRcdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKSBzY2FsZSgxKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdCYjbGlnaHQge1xyXG5cdFx0XHRcdFx0LS1idG4tYmc6IHZhcigtLWMtYWNjZW50LWxpZ2h0KTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0JiNkYXJrIHtcclxuXHRcdFx0XHRcdC0tYnRuLXNoYWRvdy1jb2xvcjogaHNsYSgyNTUsIDEyJSwgNyUsIDAuMik7XHJcblx0XHRcdFx0XHQtLWJ0bi1iZzogaHNsKDI3MiwgMTklLCAyMCUpO1xyXG5cdFx0XHRcdFx0YmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzhkODBhMCwgIzUwNDE2YiwgIzJmMWY0OSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdCYjb2xlZCB7XHJcblx0XHRcdFx0XHQtLWJ0bi1zaGFkb3ctY29sb3I6IGhzbGEoMCwgMCUsIDEwMCUsIDAuMik7XHJcblx0XHRcdFx0XHQtLWJ0bi1iZzogIzAwMDtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdCZfX3VwbG9hZCB7XHJcblx0XHRkaXNwbGF5OiBncmlkO1xyXG5cdFx0anVzdGlmeS1pdGVtczogY2VudGVyO1xyXG5cclxuXHRcdCYtLWNvbnRlbnQge1xyXG5cdFx0XHRkaXNwbGF5OiBncmlkO1xyXG5cdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xyXG5cdFx0XHRnYXA6IDFyZW07XHJcblx0XHR9XHJcblxyXG5cdFx0aW5wdXQge1xyXG5cdFx0XHRkaXNwbGF5OiBub25lO1xyXG5cdFx0fVxyXG5cclxuXHRcdGxhYmVsLFxyXG5cdFx0YnV0dG9uIHtcclxuXHRcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xyXG5cdFx0XHRvdXRsaW5lOiBub25lO1xyXG5cdFx0XHRib3JkZXI6IG5vbmU7XHJcblx0XHRcdGN1cnNvcjogcG9pbnRlcjtcclxuXHRcdFx0d2lkdGg6IDEwMCU7XHJcblx0XHRcdHBhZGRpbmc6IHZhcigtLXAtYnRuKTtcclxuXHRcdFx0Ym9yZGVyLXJhZGl1czogdmFyKC0tYnItYnRuKTtcclxuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYy1hY2NlbnQpO1xyXG5cdFx0XHRjb2xvcjogdmFyKC0tYy1vbi1hY2NlbnQpO1xyXG5cdFx0XHRmb250LXNpemU6IDFyZW07XHJcblx0XHR9XHJcblxyXG5cdFx0YnV0dG9uI3VwbG9hZEltYWdlIHtcclxuXHRcdFx0ZGlzcGxheTogbm9uZTtcclxuXHRcdH1cclxuXHRcdGJ1dHRvbiNyZW1vdmVJbWFnZSB7XHJcblx0XHRcdGRpc3BsYXk6IG5vbmU7XHJcblx0XHR9XHJcblxyXG5cdFx0Ji0tcHJldmlldyB7XHJcblx0XHRcdGRpc3BsYXk6IGdyaWQ7XHJcblx0XHRcdGp1c3RpZnktaXRlbXM6IGNlbnRlcjtcclxuXHJcblx0XHRcdHAge1xyXG5cdFx0XHRcdHRleHQtYWxpZ246IGNlbnRlcjtcclxuXHRcdFx0XHRtYXJnaW4tYm90dG9tOiAxcmVtO1xyXG5cdFx0XHRcdGNvbG9yOiB2YXIoLS1jLXN1YnRleHQtMik7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdCYtLXBsYWNlaG9sZGVySW1nIHtcclxuXHRcdFx0ZGlzcGxheTogZ3JpZDtcclxuXHRcdFx0anVzdGlmeS1pdGVtczogY2VudGVyO1xyXG5cdFx0XHQvLyAtLWltZy13OiAxMXJlbTtcclxuXHRcdFx0LS1pbWctdzogOTUlO1xyXG5cdFx0XHQtLWltZy1oOiA3cmVtO1xyXG5cdFx0XHQvLyBtYXJnaW46IDAgYXV0bztcclxuXHRcdFx0d2lkdGg6IHZhcigtLWltZy13KTtcclxuXHRcdFx0aGVpZ2h0OiB2YXIoLS1pbWctaCk7XHJcblx0XHRcdGJvcmRlci1yYWRpdXM6IHZhcigtLWJyLWJ0bik7XHJcblxyXG5cdFx0XHRpbWcge1xyXG5cdFx0XHRcdHdpZHRoOiB2YXIoLS1pbWctdyk7XHJcblx0XHRcdFx0aGVpZ2h0OiB2YXIoLS1pbWctaCk7XHJcblx0XHRcdFx0Ly8gd2lkdGg6IDEwMCU7XHJcblx0XHRcdFx0Ly8gaGVpZ2h0OiAxMDAlO1xyXG5cdFx0XHRcdG9iamVjdC1maXQ6IGNvdmVyO1xyXG5cdFx0XHRcdG9iamVjdC1wb3NpdGlvbjogY2VudGVyO1xyXG5cdFx0XHRcdGJvcmRlci1yYWRpdXM6IGluaGVyaXQ7XHJcblx0XHRcdFx0ZGlzcGxheTogbm9uZTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdCYtLXBsYWNlaG9sZGVyIHtcclxuXHRcdFx0d2lkdGg6IHZhcigtLWltZy13KTtcclxuXHRcdFx0aGVpZ2h0OiB2YXIoLS1pbWctaCk7XHJcblx0XHRcdGRpc3BsYXk6IGdyaWQ7XHJcblx0XHRcdGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDNmcjtcclxuXHRcdFx0b3ZlcmZsb3c6IGNsaXA7XHJcblx0XHRcdGJveC1zaGFkb3c6IDAgMCAwIDJweCBoc2xhKHZhcigtLWFjY2VudC1oc2wpIC8gMC4yKTtcclxuXHRcdFx0Ym9yZGVyLXJhZGl1czogaW5oZXJpdDtcclxuXHJcblx0XHRcdGFzaWRlIHtcclxuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBoc2xhKHZhcigtLWFjY2VudC1oc2wpIC8gMC4yKTtcclxuXHRcdFx0fVxyXG5cdFx0XHRzZWN0aW9uIHtcclxuXHRcdFx0XHQvLyBiYWNrZ3JvdW5kLWNvbG9yOiBoc2xhKHZhcigtLWFjY2VudC1oc2wpIC8gMC4wMSk7XHJcblx0XHRcdFx0ZGlzcGxheTogZ3JpZDtcclxuXHRcdFx0XHRncmlkLXRlbXBsYXRlLXJvd3M6IDNmciA0ZnIgMi41ZnI7XHJcblx0XHRcdFx0Z2FwOiA2cHg7XHJcblx0XHRcdFx0cGFkZGluZzogNXB4IDEwcHg7XHJcblxyXG5cdFx0XHRcdGFydGljbGUge1xyXG5cdFx0XHRcdFx0d2lkdGg6IDcwJTtcclxuXHRcdFx0XHRcdGJvcmRlci1yYWRpdXM6IDEwcHg7XHJcblxyXG5cdFx0XHRcdFx0JjpudGgtY2hpbGQoMSkge1xyXG5cdFx0XHRcdFx0XHQvLyBoZWlnaHQ6IDUwJTtcclxuXHRcdFx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogaHNsYSh2YXIoLS1hY2NlbnQtaHNsKSAvIDAuNCk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHQmOm50aC1jaGlsZCgyKSB7XHJcblx0XHRcdFx0XHRcdC8vIGhlaWdodDogMnJlbTtcclxuXHRcdFx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogaHNsYSh2YXIoLS1hY2NlbnQtaHNsKSAvIDAuMik7XHJcblx0XHRcdFx0XHRcdGp1c3RpZnktc2VsZjogZmxleC1lbmQ7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHQmOm50aC1jaGlsZCgzKSB7XHJcblx0XHRcdFx0XHRcdC8vIGhlaWdodDogNHJlbTtcclxuXHRcdFx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogaHNsYSh2YXIoLS1hY2NlbnQtaHNsKSAvIDAuNCk7XHJcblx0XHRcdFx0XHRcdC8vIGp1c3RpZnktc2VsZjogZmxleC1lbmQ7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG59XHJcblxyXG5odG1sLmxpZ2h0IHtcclxuXHQmIFtkYXRhLWdwdGgtdGhlbWVdOjphZnRlcixcclxuXHQuZ3B0aF9fc3ZnLWljb246OmFmdGVyIHtcclxuXHRcdGNvbG9yOiB2YXIoLS1jLXR4dCk7XHJcblx0fVxyXG59XHJcbmh0bWwuZGFyayB7XHJcblx0JiBbZGF0YS1ncHRoLXRoZW1lXTo6YWZ0ZXIsXHJcblx0LmdwdGhfX3N2Zy1pY29uOjphZnRlciB7XHJcblx0XHRjb2xvcjogdmFyKC0tYy1vbi1hY2NlbnQpO1xyXG5cdH1cclxufVxyXG4iXSwibmFtZXMiOltdLCJ2ZXJzaW9uIjozLCJmaWxlIjoic2Fzcy5mYWVkODM3My5jc3MubWFwIn0= */ +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,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Qzs7Ozs7OztBQVNDOzs7Ozs7O0FBaUJBOzs7O0FBS0g7Ozs7QUFBQTs7Ozs7QUFBQTs7Ozs7QUM5RkE7Ozs7O0FBTUM7Ozs7O0FBQUE7Ozs7O0FBUUE7Ozs7QUFjRDs7OztBQUFBOzs7O0FBQUE7Ozs7QUFBQTs7OztBQUFBOzs7O0FBd0JDOzs7O0FBQUE7Ozs7QUFLQTs7OztBQUFBOzs7Ozs7Ozs7QUFhQzs7Ozs7Ozs7O0FBQUE7Ozs7Ozs7OztBQVVDOzs7O0E7Ozs7QTs7OztBQWVEOzs7Ozs7QUFRRjs7Ozs7O0FBQUE7Ozs7OztBOzs7O0FBVUc7Ozs7QUFBQTs7OztBOzs7Ozs7QTs7Ozs7QTs7Ozs7QUE4QkY7Ozs7QUFHQzs7OztBQU1EOzs7O0E7Ozs7QTs7OztBQVFFOzs7O0FBSkM7Ozs7QUFBQTs7OztBQU1BOzs7O0FBU0Q7Ozs7Ozs7Ozs7O0FBYUE7Ozs7Ozs7Ozs7O0E7Ozs7QUFvQkE7Ozs7QTs7OztBOzs7O0FBV0g7Ozs7Ozs7Ozs7QUFXQzs7Ozs7Ozs7OztBQVNHOzs7O0E7Ozs7QUFVSDs7OztBQUdDOzs7O0FBS0Y7Ozs7QUFDQzs7OztBQWtCQzs7Ozs7QUFiQzs7OztBQUlBOzs7O0FDaFFEOzs7OztBQVVDOzs7Ozs7QUFNQTs7Ozs7O0FBTUM7Ozs7QUFHQTs7OztBOzs7OztBQVFBOzs7OztBQUlBOzs7OztBQUlBOzs7OztBOzs7OztBQVNBOzs7OztBOzs7O0FBUUM7Ozs7QUFNSDs7OztBQUdBOzs7O0FBR0E7Ozs7Ozs7QUFRQTs7Ozs7OztBQVdDOzs7Ozs7QTs7Ozs7O0FBWUE7Ozs7QUFJRjs7OztBQVNFOzs7Ozs7QUFLQzs7Ozs7O0FBQUE7Ozs7OztBQUFBOzs7Ozs7QUFBQTs7Ozs7O0FBQUE7Ozs7OztBQWlCQzs7OztBQTJDSjs7OztBOzs7O0FBTUU7Ozs7O0FBS0E7Ozs7O0FBS0E7Ozs7O0FBSUE7Ozs7O0FBU0E7Ozs7Ozs7QUFRQTs7OztBQUdDOzs7O0FBY0Q7Ozs7QUFJQzs7OztBQUFBOzs7O0FBTUE7Ozs7O0FBT0Q7Ozs7O0FBQUE7Ozs7O0E7Ozs7O0FBU0E7Ozs7O0FBQUE7Ozs7O0FBS0M7Ozs7O0FBSUM7Ozs7O0FBQUE7Ozs7O0FBYUM7Ozs7O0FBVUw7Ozs7O0FBQUE7Ozs7O0FBTUE7Ozs7QTs7OztBOzs7OztBOzs7OztBOzs7O0E7Ozs7QTs7OztBOzs7Ozs7QTs7Ozs7O0E7Ozs7O0E7Ozs7O0E7Ozs7QTs7OztBOzs7O0E7Ozs7QTs7Ozs7O0E7Ozs7OztBOzs7O0E7Ozs7QTs7OztBOzs7OztBOzs7O0E7Ozs7QTs7OztBOzs7O0E7Ozs7QTs7OztBOzs7O0E7Ozs7OztBOzs7Ozs7QTs7OztBOzs7O0E7Ozs7QTs7OztBOzs7O0E7Ozs7QTs7OztBOzs7O0E7Ozs7QTs7OztBOzs7Ozs7Ozs7Ozs7QTtFOzs7OztBOzs7Ozs7Ozs7Ozs7Ozs7QTs7Ozs7Ozs7O0E7Ozs7Ozs7Ozs7Ozs7Ozs7O0E7Ozs7Ozs7OztBOzs7OztBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0E7Ozs7Ozs7QTs7OztBOzs7Ozs7OztBOzs7OztBOzs7Ozs7OztBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QTs7Ozs7Ozs7Ozs7Ozs7O0E7Ozs7QTs7OztBOzs7OztBOzs7O0E7Ozs7OztBOzs7OztBOzs7OztBOzs7Ozs7O0E7Ozs7QTs7Ozs7Ozs7Ozs7Ozs7O0E7Ozs7QTs7Ozs7QTs7Ozs7O0E7Ozs7Ozs7Ozs7Ozs7QTs7Ozs7Ozs7O0E7Ozs7Ozs7Ozs7QTs7OztBOzs7Ozs7OztBOzs7OztBOzs7O0E7Ozs7O0E7Ozs7QTs7OztBIiwic291cmNlcyI6WyJzcmMvc2Fzcy9pbmRleC5zY3NzIiwic3JjL3Nhc3MvYWJzdHJhY3QvX2Vhc2luZy5zY3NzIiwic3JjL3Nhc3MvYWJzdHJhY3QvX3ZhcnMuc2NzcyIsInNyYy9zYXNzL2Fic3RyYWN0L19hbmltcy5zY3NzIiwic3JjL3Nhc3MvYWJzdHJhY3QvX2V4dGVuZHMuc2NzcyIsInNyYy9zYXNzL2dsb2JhbC9fYmFzZS5zY3NzIiwic3JjL3Nhc3MvZ2xvYmFsL19jb2xvcnMtdHh0cy5zY3NzIiwic3JjL3Nhc3MvZ2xvYmFsL19jb2xvcnMtYmdzLnNjc3MiLCJzcmMvc2Fzcy9nbG9iYWwvX2NvbG9ycy1ib3JkZXJzLnNjc3MiLCJzcmMvc2Fzcy9nbG9iYWwvX3JvdW5kZWQuc2NzcyIsInNyYy9zYXNzL2hsanMvX3Jvcy1waW5lLW1vb24uc2NzcyIsInNyYy9zYXNzL2hsanMvb2xlZC9faXItYmxhY2suc2NzcyIsInNyYy9zYXNzL2VsZW1lbnRzL19hY2Nlc3NpYmlsaXR5LnNjc3MiLCJzcmMvc2Fzcy9lbGVtZW50cy9fc2VwYXJhdG9ycy5zY3NzIiwic3JjL3Nhc3MvZWxlbWVudHMvX2Zvcm1zLnNjc3MiLCJzcmMvc2Fzcy9lbGVtZW50cy9fbWVudS5zY3NzIiwic3JjL3Nhc3MvZWxlbWVudHMvX3NpZGViYXIuc2NzcyIsInNyYy9zYXNzL2VsZW1lbnRzL19wcm9zZS5zY3NzIiwic3JjL3Nhc3MvZWxlbWVudHMvX3ByZS5zY3NzIiwic3JjL3Nhc3MvZWxlbWVudHMvX2J0bi5zY3NzIiwic3JjL3Nhc3MvZWxlbWVudHMvX3RvYXN0LnNjc3MiLCJzcmMvc2Fzcy9lbGVtZW50cy9fdG9vbHRpcHMuc2NzcyIsInNyYy9zYXNzL2VsZW1lbnRzL19sb2dvLnNjc3MiLCJzcmMvc2Fzcy9lbGVtZW50cy9fbW9kYWwuc2NzcyIsInNyYy9zYXNzL2VsZW1lbnRzL19kaWFsb2dzLnNjc3MiLCJzcmMvc2Fzcy9lbGVtZW50cy9fcmlnaHQtLW1haW4uc2NzcyIsInNyYy9zYXNzL2VsZW1lbnRzL19yaWdodC0tbmV3LWNoYXQuc2NzcyIsInNyYy9zYXNzL2VsZW1lbnRzL19yaWdodC0tc3RpY2t5LnNjc3MiLCJzcmMvc2Fzcy9lbGVtZW50cy9fcmlnaHQtLXRleHRhcmVhLnNjc3MiLCJzcmMvc2Fzcy9wYWdlcy9fc2hhcmVkLWxpbmtzLnNjc3MiLCJzcmMvc2Fzcy9wYWdlcy9fZ3B0LXN0b3JlLnNjc3MiLCJzcmMvc2Fzcy9lbGVtZW50cy9fdHJhbnNpdGlvbnMuc2NzcyIsInNyYy9zYXNzL2dwdGhlbWVzLWVscy9fZ3B0aC12Mi5zY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIEBpbXBvcnQgJ2ZvbnQtZmFjZS9fcm9ib3RvJztcclxuLy8gQGltcG9ydCAnZm9udC1mYWNlL19qZXRicmFpbnMnO1xyXG5AaW1wb3J0ICdhYnN0cmFjdC9fZWFzaW5nJztcclxuQGltcG9ydCAnYWJzdHJhY3QvX3ZhcnMnO1xyXG5AaW1wb3J0ICdhYnN0cmFjdC9fYW5pbXMnO1xyXG5AaW1wb3J0ICdhYnN0cmFjdC9fZXh0ZW5kcyc7XHJcblxyXG4vLyBAaW1wb3J0ICdkZXYvX21peGlucyc7XHJcblxyXG5AaW1wb3J0ICdnbG9iYWwvX2Jhc2UnO1xyXG5AaW1wb3J0ICdnbG9iYWwvX2NvbG9ycy10eHRzJztcclxuQGltcG9ydCAnZ2xvYmFsL19jb2xvcnMtYmdzJztcclxuQGltcG9ydCAnZ2xvYmFsL19jb2xvcnMtYm9yZGVycyc7XHJcbkBpbXBvcnQgJ2dsb2JhbC9fcm91bmRlZCc7XHJcblxyXG4vKiBIaWdobGlnaHQsanMgVGhlbWUgU3R5bGVzICovXHJcbkBpbXBvcnQgJ2hsanMvX3Jvcy1waW5lLW1vb24nO1xyXG5cclxuLyogT0xFRCBobGpzIFRoZW1lcyAqL1xyXG5AaW1wb3J0ICdobGpzL29sZWQvX2lyLWJsYWNrJzsgLy8gZmF2b3JpdC4geWVsbG93aXNoL3BpbmsvYmx1ZSBqYWNlIGJvamVcclxuLy8gQGltcG9ydCAnaGxqcy9vbGVkL19ibGFjay1tZXRhbCc7IC8vIGZpbm8uIG5pamUgdG9saWtvIGNvbG9yZnVsLiBwaW5rL3BlYWNoL2Rhcmt0ZWFsL2dyZXlcclxuLy8gQGltcG9ydCAnaGxqcy9vbGVkL19ibGFjay1tZXRhbC1iYXRob3J5JzsgLy8ga2FvIGkgb3ZvIGdvcmUsIHNrb3JvLCBtYWxvIGphY2UgYm9qZSwgbmlzdSB0YWtvIHphZ2FzaXRlXHJcbi8vIEBpbXBvcnQgJ2hsanMvb2xlZC9fZGFyay12aW9sZXQnOyAvLyBwaW5raXNoXHJcbi8vIEBpbXBvcnQgJ2hsanMvb2xlZC9fcGljbyc7IC8vIG9yYW5nZS9ncmVlbiBkYXJrZXN0XHJcblxyXG4vLyBAaW1wb3J0ICdlbGVtZW50cy9fZm9ybXMnO1xyXG5AaW1wb3J0ICdlbGVtZW50cy9fYWNjZXNzaWJpbGl0eSc7XHJcbkBpbXBvcnQgJ2VsZW1lbnRzL19zZXBhcmF0b3JzJztcclxuQGltcG9ydCAnZWxlbWVudHMvX2Zvcm1zJztcclxuQGltcG9ydCAnZWxlbWVudHMvX21lbnUnO1xyXG5AaW1wb3J0ICdlbGVtZW50cy9fc2lkZWJhcic7XHJcbkBpbXBvcnQgJ2VsZW1lbnRzL19wcm9zZSc7XHJcbkBpbXBvcnQgJ2VsZW1lbnRzL19wcmUnO1xyXG5AaW1wb3J0ICdlbGVtZW50cy9fYnRuJztcclxuQGltcG9ydCAnZWxlbWVudHMvX3RvYXN0JztcclxuQGltcG9ydCAnZWxlbWVudHMvX3Rvb2x0aXBzJztcclxuQGltcG9ydCAnZWxlbWVudHMvX2xvZ28nO1xyXG5AaW1wb3J0ICdlbGVtZW50cy9fbW9kYWwnO1xyXG5AaW1wb3J0ICdlbGVtZW50cy9fZGlhbG9ncyc7XHJcbkBpbXBvcnQgJ2VsZW1lbnRzL19yaWdodC0tbWFpbic7XHJcbkBpbXBvcnQgJ2VsZW1lbnRzL19yaWdodC0tbmV3LWNoYXQnO1xyXG5AaW1wb3J0ICdlbGVtZW50cy9fcmlnaHQtLXN0aWNreSc7XHJcbkBpbXBvcnQgJ2VsZW1lbnRzL19yaWdodC0tdGV4dGFyZWEnO1xyXG5AaW1wb3J0ICdwYWdlcy9fc2hhcmVkLWxpbmtzJztcclxuQGltcG9ydCAncGFnZXMvX2dwdC1zdG9yZSc7XHJcbkBpbXBvcnQgJ2VsZW1lbnRzL190cmFuc2l0aW9ucyc7XHJcblxyXG4vLyBAaW1wb3J0ICdncHRoZW1lcy1lbHMvX2dwdGgnO1xyXG5AaW1wb3J0ICdncHRoZW1lcy1lbHMvX2dwdGgtdjInO1xyXG4iLCIvKiBTaW5lICovXHJcbiRlYXNlSW5TaW5lOiBjdWJpYy1iZXppZXIoMC4xMiwgMCwgMC4zOSwgMCk7XHJcbiRlYXNlT3V0U2luZTogY3ViaWMtYmV6aWVyKDAuMzksIDAuNTc1LCAwLjU2NSwgMSk7XHJcbiRlYXNlSW5PdXRTaW5lOiBjdWJpYy1iZXppZXIoMC40NDUsIDAuMDUsIDAuNTUsIDAuOTUpO1xyXG5cclxuLyogUXVhZCAqL1xyXG4kZWFzZUluUXVhZDogY3ViaWMtYmV6aWVyKDAuNTUsIDAuMDg1LCAwLjY4LCAwLjUzKTtcclxuJGVhc2VPdXRRdWFkOiBjdWJpYy1iZXppZXIoMC4yNSwgMC40NiwgMC40NSwgMC45NCk7XHJcbiRlYXNlSW5PdXRRdWFkOiBjdWJpYy1iZXppZXIoMC40NTUsIDAuMDMsIDAuNTE1LCAwLjk1NSk7XHJcblxyXG4vKiBDdWJpYyAqL1xyXG4kZWFzZUluQ3ViaWM6IGN1YmljLWJlemllcigwLjU1LCAwLjA1NSwgMC42NzUsIDAuMTkpO1xyXG4kZWFzZU91dEN1YmljOiBjdWJpYy1iZXppZXIoMC4yMTUsIDAuNjEsIDAuMzU1LCAxKTtcclxuJGVhc2VJbk91dEN1YmljOiBjdWJpYy1iZXppZXIoMC42NDUsIDAuMDQ1LCAwLjM1NSwgMSk7XHJcblxyXG4vKiBRdWFydCAqL1xyXG4kZWFzZUluUXVhcnQ6IGN1YmljLWJlemllcigwLjE2NSwgMC44NCwgMC40NCwgMSk7XHJcbiRlYXNlT3V0UXVhcnQ6IGN1YmljLWJlemllcigwLjE2NSwgMC44NCwgMC40NCwgMSk7XHJcbiRlYXNlSW5PdXRRdWFydDogY3ViaWMtYmV6aWVyKDAuNzcsIDAsIDAuMTc1LCAxKTtcclxuXHJcbi8qIFF1aW50ICovXHJcbiRlYXNlSW5RdWludDogY3ViaWMtYmV6aWVyKDAuNzU1LCAwLjA1LCAwLjg1NSwgMC4wNik7XHJcbiRlYXNlT3V0UXVpbnQ6IGN1YmljLWJlemllcigwLjIzLCAxLCAwLjMyLCAxKTtcclxuJGVhc2VJbk91dFF1aW50OiBjdWJpYy1iZXppZXIoMC44NiwgMCwgMC4wNywgMSk7XHJcblxyXG4vKiBFeHBvICovXHJcbiRlYXNlSW5FeHBvOiBjdWJpYy1iZXppZXIoMC45NSwgMC4wNSwgMC43OTUsIDAuMDM1KTtcclxuJGVhc2VPdXRFeHBvOiBjdWJpYy1iZXppZXIoMC4xOSwgMSwgMC4yMiwgMSk7XHJcbiRlYXNlSW5PdXRFeHBvOiBjdWJpYy1iZXppZXIoMSwgMCwgMCwgMSk7XHJcblxyXG4vKiBDaWNyICovXHJcbiRlYXNlSW5DaXJjOiBjdWJpYy1iZXppZXIoMC42LCAwLjA0LCAwLjk4LCAwLjMzNSk7XHJcbiRlYXNlT3V0Q2lyYzogY3ViaWMtYmV6aWVyKDAuMDc1LCAwLjgyLCAwLjE2NSwgMSk7XHJcbiRlYXNlSW5PdXRDaXJjOiBjdWJpYy1iZXppZXIoMC43ODUsIDAuMTM1LCAwLjE1LCAwLjg2KTtcclxuXHJcbi8qIEJhY2sgKi9cclxuJGVhc2VJbkJhY2s6IGN1YmljLWJlemllcigwLjYsIC0wLjI4LCAwLjczNSwgMC4wNDUpO1xyXG4kZWFzZU91dEJhY2s6IGN1YmljLWJlemllcigwLjE3NSwgMC44ODUsIDAuMzIsIDEuMjc1KTtcclxuJGVhc2VJbk91dEJhY2s6IGN1YmljLWJlemllcigwLjY4LCAtMC41NSwgMC4yNjUsIDEuNTUpOyIsIjpyb290IHtcclxuXHQvKiA/IC0tLSBGb250cyAtLS0gKi9cclxuXHQtLWYtZm06ICdJbnRlcicsIHNhbnMtc2VyaWYsIFPDtmhuZSwgdWktc2Fucy1zZXJpZiwgc3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBVYnVudHUsIENhbnRhcmVsbCxcclxuXHRcdE5vdG8gU2Fucywgc2Fucy1zZXJpZiwgSGVsdmV0aWNhIE5ldWUsIEFyaWFsLCBBcHBsZSBDb2xvciBFbW9qaSwgU2Vnb2UgVUkgRW1vamksIFNlZ29lIFVJIFN5bWJvbCxcclxuXHRcdE5vdG8gQ29sb3IgRW1vamk7XHJcblx0LS1mc3otZXJyb3ItNDA0OiAzcmVtO1xyXG5cclxuXHQtLWgtaGVhZGVyOiBjYWxjKDMuNXJlbSArIDAuNXJlbSArIDAuMzc1cmVtKTtcclxuXHJcblx0LyogPyAtLS0gQm9yZGVyLXJhZGl1cyAtLS0gKi9cclxuXHQtLWJyOiAxcmVtO1xyXG5cdC0tYnItY2hhdC1idWJibGU6IGNhbGModmFyKC0tYnIpICogMi41NSk7XHJcblx0LS1ici1wcm9tcHQtdGV4dGFyZWE6IGNhbGModmFyKC0tYnIpICogMi4yNSk7XHJcblx0LS1ici1idG46IGNhbGModmFyKC0tYnIpIC8gMS4xKTtcclxuXHQtLWJyLWJ0bi1iaWc6IGNhbGModmFyKC0tYnIpICogMS4yKTtcclxuXHQtLWJyLW5hdi1hOiB2YXIoLS1ici1idG4pO1xyXG5cdC0tYnItZGlhbG9nOiBjYWxjKHZhcigtLWJyKSAqIDIuNSk7XHJcblx0LS1ici1jb250ZXh0bWVudTogY2FsYyh2YXIoLS1ici1idG4pICogMS40KTtcclxuXHQtLWJyLXByZTogY2FsYyh2YXIoLS1icikgKiAxLjUpO1xyXG5cdC0tYnItdG9vbHRpcHM6IHZhcigtLWJyLWJ0bik7XHJcblxyXG5cdC8qID8gLS0tIFBhZGRpbmdzIC0tLSAqL1xyXG5cdC0tcC1jaGF0LWJ1YmJsZTogMS44cmVtO1xyXG5cdC0tcC1jb250ZXh0bWVudTogMC44cmVtO1xyXG5cdC0tcC1jb250ZXh0bWVudS1pdGVtOiAwLjlyZW0gMXJlbTtcclxuXHQtLXAtcHJvbXB0LXRleHRhcmVhOiAwLjdyZW07XHJcblx0LS1wLXRvb2x0aXBzOiAwLjJyZW07XHJcblx0LS1wLWJ0bjogMC43N3JlbTtcclxuXHQtLXB5LWJ0bjogMXJlbTtcclxuXHQtLXB4LWJ0bjogMXJlbTtcclxuXHJcblx0LS1wLXNpZGViYXItbmF2OiAwLjVyZW07XHJcblx0LS1wLXNpZGViYXItbmF2LWEtbmV3LWNoYXQ6IDJyZW07XHJcblx0LS1wLXNpZGViYXItbmF2LWE6IDAuNnJlbTtcclxuXHQtLXAtZGlhbG9nOiAycmVtO1xyXG5cclxuXHQvKiA/IC0tLSBNYXJnaW5zIC0tLSAqL1xyXG5cdC0tbXQtY2hhdC10eHQ6IDAuNXJlbTtcclxuXHQtLW1iLWNoYXQtdHh0OiAxcmVtO1xyXG5cdC0tbWItY2hhdC1idWJibGU6IDJyZW07XHJcblx0LS1tYi1zaWRlYmFyLW5hdi1saTogMC4ycmVtO1xyXG5cdC0tbXktcHJlOiAxLjVyZW07XHJcblxyXG5cdC8qID8gLS0tIEJsdXJzIC0tLSAqL1xyXG5cdC0tYmx1ci1zdGlja3k6IDIwcHg7XHJcblx0LS1ibHVyLW1vZGFsOiA4cHg7XHJcblxyXG5cdC8qID8gLS0tIFdpZHRoIC0tLSAqL1xyXG5cdC0tbWluLXctYnRuOiA1LjVyZW07XHJcblxyXG5cdC8qID8gLS0tIFNoYWRvdyB0aGluZ3MgLS0tICovXHJcblx0LS1ib3gtc2hhZG93LXZhbHVlczogMHB4IDBweCAxMDBweCAwcHg7XHJcblxyXG5cdC0tei1tb2RhbDogMTAwO1xyXG5cclxuXHQtLXNpZGViYXItc3VyZmFjZS1wcmltYXJ5OiB2YXIoXHJcblx0XHQtLWMtYmctc2lkZWJhclxyXG5cdCkgIWltcG9ydGFudDsgLy8gR1BUJ3MgdmFyaWFibGUgaW4gLmJnLXRva2VuLXNpZGViYXItc3VyZmFjZS1wcmltYXJ5IGNsYXNzLiBzaWRlYmFyIGJnLCBuYXYgaXRlbSBiZyBvbiBob3ZlclxyXG5cdC0tc2lkZWJhci1zdXJmYWNlLXNlY29uZGFyeTogdmFyKFxyXG5cdFx0LS1jLXN1cmZhY2UtMlxyXG5cdCkgIWltcG9ydGFudDsgLy8gR1BUJ3MgdmFyaWFibGUgaW4gLmJnLXRva2VuLXNpZGViYXItc3VyZmFjZS1zZWNvbmRhcnkgbmF2IGl0ZW0gYmcgb24gaG92ZXJcclxuXHQtLW1haW4tc3VyZmFjZS1wcmltYXJ5OiB2YXIoXHJcblx0XHQtLWMtc3VyZmFjZS0yXHJcblx0KSAhaW1wb3J0YW50OyAvLyBoZWFkZXIgb2YgdGFibGVzIGluIFwiU2hhcmVkIGxpbmtzXCIgYW5kIFwiQXJjaGl2ZWQgY2hhdHNcIi4gQXJyb3cgYnRuIGluIG5ldyBjaGF0IGJpZyBidXR0b25zXHJcblx0LS1tYWluLXN1cmZhY2Utc2Vjb25kYXJ5OiB2YXIoXHJcblx0XHQtLWMtc3VyZmFjZS0yXHJcblx0KSAhaW1wb3J0YW50OyAvLyBtYXJrZG93biBoZWFkZXIgYmcsIGZvb3RlciBvZiBtaW5pIGNoYXQgcHJldmlldyBpbiBcIlNoYXJlIExpbmsgdG8gQ2hhdFwiXHJcblxyXG5cdC0tbWFpbi1zdXJmYWNlLXRlcnRpYXJ5OiB2YXIoXHJcblx0XHQtLWMtc3VyZmFjZS0zXHJcblx0KSAhaW1wb3J0YW50OyAvLyBib3JkZXItY2xyIG9mIGZvb3RlciBvZiBtaW5pIGNoYXQgcHJldmlldyBpbiBcIlNoYXJlIExpbmsgdG8gQ2hhdFwiXHJcblx0LS10ZXh0LXF1YXRlcm5hcnk6IHZhcigtLWMtc3VyZmFjZS0yKSAhaW1wb3J0YW50OyAvLyBzaWRlYmFyIGNvbGxhcHNlIGJ0blxyXG5cclxuXHQtLXBvcG92ZXItc3VyZmFjZS1wcmltYXJ5OiB2YXIoXHJcblx0XHQtLWMtYmctY29udGV4dG1lbnVcclxuXHQpICFpbXBvcnRhbnQ7IC8vIC5iZy10b2tlbi1wb3BvdmVyLXN1cmZhY2UtcHJpbWFyeSAgLSBjb250ZXh0bWVudSBpbiB0aGVtZSBkcm9wZG93biBjaG9vc2VyIHwgXCJVcGdyYWRlIHVyIHBsYW5cIiBkaWFsb2cgYmdcclxuXHJcblx0LS1ib3JkZXItbGlnaHQ6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7IC8vIGJvcmRlciBva28gXCJVcHJhZGVcIiBidG4tYTogLmJvcmRlci10b2tlbi1ib3JkZXItbGlnaHQsIGJvcmRlciBva28gaW5wdXRhIHUgR1BUcyBwYWdlXHJcbn1cclxuXHJcbi8qIEAgPT09PT09PT09PT09PT09PT09IExJR0hUID09PT09PT09PT09PT09PT09PSAqL1xyXG5odG1sLmxpZ2h0IHtcclxuXHQvKiA/ID09PT09PT09PT0gSFNMID09PT09PT09PT0gKi9cclxuXHQvKiAtLWFjY2VudC1oc2w6IDI1MCA5OSUgNjUlOyAqL1xyXG5cdC0tYWNjZW50LWg6IDI1MDtcclxuXHQtLWFjY2VudC1zOiA5OSU7XHJcblx0LS1hY2NlbnQtbDogNjUlO1xyXG5cdC0tYWNjZW50LWhzbDogdmFyKC0tYWNjZW50LWgpIHZhcigtLWFjY2VudC1zKSB2YXIoLS1hY2NlbnQtbCk7XHJcblxyXG5cdC8qIC0tdHh0LWhzbDogMjU1IDg2JSA5MiU7ICovXHJcblx0LS10eHQtaDogMDtcclxuXHQtLXR4dC1zOiAwJTtcclxuXHQtLXR4dC1sOiAwJTtcclxuXHQtLXR4dC1oc2w6IHZhcigtLXR4dC1oKSB2YXIoLS10eHQtcykgdmFyKC0tdHh0LWwpO1xyXG5cclxuXHQtLXN1cmZhY2UtaDogMDtcclxuXHQtLXN1cmZhY2UtczogMCU7XHJcblx0LS1zdXJmYWNlLWw6IDg1JTtcclxuXHQtLXN1cmZhY2UtaHNsOiBoc2wodmFyKC0tc3VyZmFjZS1oKSB2YXIoLS1zdXJmYWNlLXMpIHZhcigtLXN1cmZhY2UtbCkpO1xyXG5cclxuXHQvKiAtLWRhbmdlci1oc2w6IDM0NiA1MSUgNDUlICovXHJcblx0LS1kYW5nZXItaDogMzQ2O1xyXG5cdC0tZGFuZ2VyLXM6IDUxJTtcclxuXHQtLWRhbmdlci1sOiA0NSU7XHJcblx0LS1kYW5nZXItaHNsOiB2YXIoLS1kYW5nZXItaCkgdmFyKC0tZGFuZ2VyLXMpIHZhcigtLWRhbmdlci1sKTtcclxuXHQtLWMtZGFuZ2VyOiBoc2wodmFyKC0tZGFuZ2VyLWhzbCkpO1xyXG5cclxuXHQvKiA/ID09PT09PT09PT0gQ09MT1JTID09PT09PT09PT0gKi9cclxuXHQtLWMtYWNjZW50OiBoc2wodmFyKC0tYWNjZW50LWhzbCkpO1xyXG5cdC0tYy1hY2NlbnQtbGlnaHQ6IGhzbCh2YXIoLS1hY2NlbnQtaCksIGNhbGModmFyKC0tYWNjZW50LXMpIC8gMiksIGNhbGModmFyKC0tYWNjZW50LWwpICogMS4zKSk7XHJcblx0LS1jLW9uLWFjY2VudDogaHNsKHZhcigtLWFjY2VudC1oKSwgdmFyKC0tYWNjZW50LXMpLCBjYWxjKHZhcigtLWFjY2VudC1sKSAqIDEuNSkpO1xyXG5cclxuXHQvKiA/ID09PT09PT09PT0gVGV4dCBjb2xvcnMgPT09PT09PT09PSAqL1xyXG5cdC0tYy10eHQ6IGhzbCh2YXIoLS10eHQtaHNsKSk7XHJcblx0LS1jLXN1YnRleHQtMTogaHNsYSgwLCAwJSwgMjAlKTtcclxuXHQtLWMtc3VidGV4dC0yOiBoc2woMCwgMCUsIDQwJSk7XHJcblxyXG5cdC8qID8gPT09PT09PT09PSBTdXJmYWNlIGNvbG9ycyA9PT09PT09PT09ICovXHJcblx0LS1jLXN1cmZhY2UtMTogaHNsKDAsIDAlLCB2YXIoLS1zdXJmYWNlLWwpKTsgLy8gZGFya1xyXG5cdC0tYy1zdXJmYWNlLTI6IGhzbCgwLCAwJSwgY2FsYyh2YXIoLS1zdXJmYWNlLWwpIC8gMS4wODkpKTsgLy8gZGFya2VyIC0gNzguMDVcclxuXHQtLWMtc3VyZmFjZS0zOiBoc2woMCwgMCUsIGNhbGModmFyKC0tc3VyZmFjZS1sKSAvIDEuMTgpKTsgLy8gZGFya2VzdCAtIDcyLjAzXHJcblxyXG5cdC8qID8gPT09PT09PT09PSBMYXlvdXQgY29sb3JzID09PT09PT09PT0gKi9cclxuXHQtLWMtYmctc2lkZWJhcjogdmFyKC0tYy1zdXJmYWNlLTEpO1xyXG5cdC0tYy1iZy1jaGF0cy1jb250YWluZXI6IGhzbCh2YXIoLS1hY2NlbnQtaCkgdmFyKC0tc3VyZmFjZS1zKSBjYWxjKHZhcigtLXN1cmZhY2UtbCkgKiAxLjAyNSkpO1xyXG5cdC0tYy1iZy1jaGF0cy1zdGlja3k6IGhzbGEodmFyKC0tYWNjZW50LWhzbCkgLyAwLjAyKTtcclxuXHJcblx0LyogPyA9PT09PT09PT09IENoYXQgYnViYmxlcyBjb2xvcnMgPT09PT09PT09PSAqL1xyXG5cdC0tYy1iZy1tc2ctdXNlcjogaHNsYSh2YXIoLS1hY2NlbnQtaHNsKSAvIDAuMDgpO1xyXG5cdC0tYy1iZy1tc2ctZ3B0OiBoc2woMCAwJSA4NCUpO1xyXG5cdC0tYy1tc2ctbmFtZS11c2VyOiB2YXIoLS1jLWFjY2VudCk7XHJcblxyXG5cdC8qID8gPT09PT09PT09PSBUeXBlIG1lc3NhZ2UgdGV4dGFyZWEgY29sb3JzID09PT09PT09PT0gKi9cclxuXHQtLWMtYmctdGV4dGFyZWE6IGhzbGEoMCwgMCUsIGNhbGModmFyKC0tc3VyZmFjZS1sKSAvIDEuMDUpKTtcclxuXHQtLWMtYm9yZGVyLXRleHRhcmVhOiB2YXIoLS1jLWJnLXRleHRhcmVhKTtcclxuXHQtLWMtcGxhY2Vob2xkZXItdGV4dGFyZWE6IGhzbGEodmFyKC0tdHh0LWhzbCkgLyAwLjYpO1xyXG5cclxuXHQvKiA/ID09PT09PT09PT0gbW9kYWwsIGRpYWxvZywgY29udGV4dG1lbnUgYmcgPT09PT09PT09PSAqL1xyXG5cdC0tYy1iZy1tb2RhbDogaHNsYSh2YXIoLS10eHQtaHNsKSAvIDAuMyk7XHJcblx0LS1jLWJnLWRpYWxvZzogdmFyKC0tYy1zdXJmYWNlLTIpO1xyXG5cdC0tYy1iZy1jb250ZXh0bWVudTogdmFyKC0tYy1zdXJmYWNlLTMpO1xyXG5cclxuXHQvKiA/ID09PT09PT09PT0gVG9vbHRpcCBiZyA9PT09PT09PT09ICovXHJcblx0LS1jLWJnLXRvb2x0aXA6IHZhcigtLWMtYWNjZW50LWxpZ2h0KTtcclxuXHJcblx0LyogPyA9PT09PT09PT09IGJvcmRlciBjb2xvcnMgPT09PT09PT09PSAqL1xyXG5cdC0tYy1ib3JkZXI6IGhzbGEodmFyKC0tdHh0LWhzbCkgLyAwLjA1KTtcclxuXHQtLWMtYm9yZGVyLWFjY2VudDogaHNsYSh2YXIoLS1hY2NlbnQtaHNsKSAvIDAuMSk7XHJcblxyXG5cdC8qID8gPT09PT09PT09PSBidG4gY29sb3JzID09PT09PT09PT0gKi9cclxuXHQtLWMtYnRuOiB2YXIoLS1jLW9uLWFjY2VudCk7XHJcblx0LS1jLWJnLWJ0bjogdmFyKC0tYy1hY2NlbnQpO1xyXG5cclxuXHQvKiA/ID09PT09PT09PT0gPHByZT4vbWFya2Rvd24gdGhpbmdzIGNvbG9ycyA9PT09PT09PT09ICovXHJcblx0LS1jLWJnLXByZTogaHNsKDAsIDAlLCAwJSk7XHJcblx0LS1jLWJnLXByZS1oZWFkZXI6IHRyYW5zcGFyZW50O1xyXG5cdC0tYy1iZy1wcmUtaGVhZGVyLWJ0bjogdmFyKC0tYy1hY2NlbnQpO1xyXG5cdC0tYy1tYXJrZG93bi1hOiB2YXIoLS1jLWFjY2VudCk7XHJcblxyXG5cdC8qID8gPT09PT09PT09PSBTY3JvbGxiYXIgY29sb3JzID09PT09PT09PT0gKi9cclxuXHQtLWMtc2Nyb2xsYmFyLXRodW1iOiB2YXIoLS1jLXN1cmZhY2UtMyk7XHJcblx0LS1jLXNjcm9sbGJhci10cmFjazogdHJhbnNwYXJlbnQ7XHJcblxyXG5cdC8qID8gPT09PT09PT09PSBPcGVuQUkgc3VyZmFjZSBjb2xvcnMgPT09PT09PT09PSAqL1xyXG5cdC8qIGJ0biB1IGJpcmFuanUgdGVtZSBrYWQgbmVtYWEgbmlrYWtlIHBvemFkaW5lICovXHJcblx0LS1zdXJmYWNlLXByaW1hcnk6IHZhcigtLWMtc3VyZmFjZS0xKSAhaW1wb3J0YW50O1xyXG5cclxuXHQvKiBib3JkZXIgb2tvIGNvbnRleHQtbWVudSwgLmJnLXRva2VuLXN1cmZhY2Utc2Vjb25kYXJ5ICh6YSBhY3RpdmUgbGluayB1IHNpZGViYXJ1KSovXHJcblx0LS1zdXJmYWNlLXNlY29uZGFyeTogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcclxuXHJcblx0LyogU2VsZWN0ZWQgYnV0dG9uL2xpbmsvbGlzdCBpbiBzZXR0aW5nczogXCJHZW5lcmFsXCIsIFwiRGF0YSBjb250cm9sc1wiICovXHJcblx0LS1zdXJmYWNlLXRlcnRpYXJ5OiB2YXIoLS1jLWJnLW1zZy1ncHQpICFpbXBvcnRhbnQ7XHJcblxyXG5cdC8qID8gPT09PT09PT09PSBPcGVuQUkgdGV4dCBjb2xvcnMgPT09PT09PT09PSAqL1xyXG5cdC8qYGBgIC0tdGV4dC1wcmltYXJ5IFxyXG4gICAgICAgIC0gYm9keSB0eHRcclxuICAgICAgICAtID8/XHJcbiAgICAqL1xyXG5cdC0tdGV4dC1wcmltYXJ5OiB2YXIoLS1jLXR4dCkgIWltcG9ydGFudDtcclxuXHJcblx0LypgYGAgLS10ZXh0LXNlY29uZGFyeSBcclxuICAgICAgICAtIHR4dCBpc3BvZCBcIlVwZ3JhZGVcIlxyXG4gICAgICAgIC0gdHh0IGlzcG9kIFwiQ2hhdCBoaXN0b3J5ICYgdHJhaW5pbmdcIiB1IFNldHRpbmdzdVxyXG4gICAgICAgIC0gdHh0IFwiMy41XCIgdSBzdGlja3kgcG9yZWQgXCJDaGF0R1BUIDMuNVwiXHJcbiAgICAgICAgLSBrYWQgamUgcmVjaW1vIGZvY3VzZWQgc2EgdGFib20gRGFyayB1IFwiVGhlbWVzXCJcclxuICAgICAgICAtIHRleHQga2FkIHNlIG9kZSBuYSBcIlVwZ3JhZGVcIiBwYSBvbm8gXCJIYXZlIGFuIGV4aXN0aW5nIHBsYW4/IFNlZSBiaWxsaW5nIGhlbHBcIlxyXG4gICAgKi9cclxuXHQtLXRleHQtc2Vjb25kYXJ5OiB2YXIoLS1jLXN1YnRleHQtMSkgIWltcG9ydGFudDtcclxuXHJcblx0LypgYGAgLS10ZXh0LXRlcnRpYXJ5IFxyXG4gICAgICAgIC0gc3RyZWxpY2EgbmEgZG9sZSBwb3JlZCAzLjUgdSBzdGlja3kgcG9yZWQgQ2hhdEdQVCAzLjVcclxuICAgICAgICAtIGthZCBqZSBuZXN0byBmb2N1c2VkIHNhIHRhYm9tIC0gYWNjZXNzaWJpbGl0eSAtIG5wciBDbGVhciB1IGNsZWFyIGFsbCBjaGF0c1xyXG4gICAgICAgIC0gdGV4dCB1IGNvbnRleHRtZW51IGthZCBzZSBrbGlrbmUgbmEgQ2hhdEdQVCAzLjVcclxuICAgICAgICAtIHRleHQga2FkIG9kZW1vIHUgIFVQZ3JhZGUgcGEgb25vIFVTRCAkMC9tb250aCBpIFVTRCAkMjAvbW9udGggXHJcbiAgICAqL1xyXG5cdC0tdGV4dC10ZXJ0aWFyeTogdmFyKC0tYy1zdWJ0ZXh0LTIpICFpbXBvcnRhbnQ7XHJcblxyXG5cdC8qID8gPT09PT09PT09PSBQUk9WRVJJVEkgLSBncmF5ID09PT09PT09PT0gKi9cclxuXHQtLWdyYXktMzAwOiB2YXIoLS10ZXh0LXNlY29uZGFyeSkgIWltcG9ydGFudDtcclxuXHJcblx0LyogMyB0YWNrZSB1IGxpc3RpIHUgc2lkZWJhciAqL1xyXG5cdC0tZ3JheS01MDA6IHZhcigtLWMtdHh0KSAhaW1wb3J0YW50O1xyXG5cclxuXHQvKiA/ID09PT09PT09PT0gQk9YLVNIQURPVyA9PT09PT09PT09Ki9cclxuXHQtLWJveC1zaGFkb3c6IHZhcigtLWJveC1zaGFkb3ctdmFsdWVzKSBoc2xhKHZhcigtLWFjY2VudC1oc2wpIC8gMC4xKTtcclxuXHQvLyAtLWJveC1zaGFkb3ctY29udGV4dG1lbnU6IDBweCAwcHggNXB4IC0ycHggaHNsYSgwLCAwJSwgMCUsIDAuMTgpO1xyXG5cdC0tYm94LXNoYWRvdy1jb250ZXh0bWVudTogaW5zZXQgMHB4IDBweCAxMHB4IDJweCBoc2xhKDAsIDAlLCAwJSwgMC4xKTtcclxuXHQtLWJveC1zaGFkb3ctdGV4dGFyZWE6IGluc2V0IDBweCAwcHggMTVweCAxcHggaHNsYSgwLCAwJSwgMCUsIDAuMSkgIWltcG9ydGFudDtcclxufVxyXG5cclxuLyogQCA9PT09PT09PT09PT09PT09PT0gREFSSyA9PT09PT09PT09PT09PT09PT0gKi9cclxuaHRtbC5kYXJrIHtcclxuXHQvKiA/ID09PT09PT09PT0gSFNMID09PT09PT09PT0gKi9cclxuXHJcblx0LyogLS1hY2NlbnQtaHNsOiAyNzIgOTMlIDc4JTsgKi9cclxuXHQtLWFjY2VudC1oOiAyNzI7XHJcblx0LS1hY2NlbnQtczogOTMlO1xyXG5cdC0tYWNjZW50LWw6IDc4JTtcclxuXHQtLWFjY2VudC1oc2w6IHZhcigtLWFjY2VudC1oKSB2YXIoLS1hY2NlbnQtcykgdmFyKC0tYWNjZW50LWwpO1xyXG5cclxuXHQvKiAtLXR4dC1oc2w6IDI1NSA4NiUgOTIlOyAqL1xyXG5cdC0tdHh0LWg6IDI1NTtcclxuXHQtLXR4dC1zOiA4NiU7XHJcblx0LS10eHQtbDogOTIlO1xyXG5cdC0tdHh0LWhzbDogdmFyKC0tdHh0LWgpIHZhcigtLXR4dC1zKSB2YXIoLS10eHQtbCk7XHJcblxyXG5cdC0tc3VyZmFjZS1oOiAyNDk7XHJcblx0LS1zdXJmYWNlLXM6IDE5JTtcclxuXHQtLXN1cmZhY2UtbDogMTMlO1xyXG5cdC0tc3VyZmFjZS1oc2w6IGhzbCh2YXIoLS1hY2NlbnQtaCkgdmFyKC0tc3VyZmFjZS1zKSB2YXIoLS1zdXJmYWNlLWwpKTtcclxuXHJcblx0LyogLS1kYW5nZXItaHNsOiAzNTYgNzclIDc2JSAqL1xyXG5cdC0tZGFuZ2VyLWg6IDM1NjtcclxuXHQtLWRhbmdlci1zOiA3NyU7XHJcblx0LS1kYW5nZXItbDogNzYlO1xyXG5cdC0tZGFuZ2VyLWhzbDogdmFyKC0tZGFuZ2VyLWgpIHZhcigtLWRhbmdlci1zKSB2YXIoLS1kYW5nZXItbCk7XHJcblx0LS1jLWRhbmdlcjogaHNsKHZhcigtLWRhbmdlci1oc2wpKTtcclxuXHJcblx0LyogPyA9PT09PT09PT09IENPTE9SUyA9PT09PT09PT09ICovXHJcblx0LS1jLWFjY2VudDogaHNsKHZhcigtLWFjY2VudC1oc2wpKTtcclxuXHQtLWMtYWNjZW50LWxpZ2h0OiBoc2wodmFyKC0tYWNjZW50LWgpLCBjYWxjKHZhcigtLWFjY2VudC1zKSAvIDEuMyksIHZhcigtLWFjY2VudC1sKSk7XHJcblx0LS1jLW9uLWFjY2VudDogaHNsKHZhcigtLWFjY2VudC1oKSwgdmFyKC0tYWNjZW50LXMpLCAxMCUpO1xyXG5cclxuXHQvKiA/ID09PT09PT09PT0gVGV4dCBjb2xvcnMgPT09PT09PT09PSAqL1xyXG5cdC0tYy10eHQ6IGhzbCh2YXIoLS10eHQtaHNsKSk7XHJcblx0LS1jLXN1YnRleHQtMTogdmFyKC0tYy1hY2NlbnQtbGlnaHQpO1xyXG5cdC0tYy1zdWJ0ZXh0LTI6IGhzbCh2YXIoLS1hY2NlbnQtaCkgY2FsYyh2YXIoLS1hY2NlbnQtcykgLyAyKSB2YXIoLS1hY2NlbnQtbCkpICFpbXBvcnRhbnQ7XHJcblxyXG5cdC8qID8gPT09PT09PT09PSBTdXJmYWNlIGNvbG9ycyA9PT09PT09PT09ICovXHJcblx0LS1jLXN1cmZhY2UtMTogaHNsKHZhcigtLWFjY2VudC1oKSwgdmFyKC0tc3VyZmFjZS1zKSwgdmFyKC0tc3VyZmFjZS1sKSk7IC8vIGRhcmtlc3RcclxuXHQtLWMtc3VyZmFjZS0yOiBoc2wodmFyKC0tYWNjZW50LWgpLCB2YXIoLS1zdXJmYWNlLXMpLCBjYWxjKHZhcigtLXN1cmZhY2UtbCkgKiAxLjUpKTsgLy8gZGFya2VyXHJcblx0LS1jLXN1cmZhY2UtMzogaHNsKHZhcigtLWFjY2VudC1oKSwgdmFyKC0tc3VyZmFjZS1zKSwgY2FsYyh2YXIoLS1zdXJmYWNlLWwpICogMikpOyAvLyBkYXJrXHJcblxyXG5cdC8qID8gPT09PT09PT09PSBMYXlvdXQgY29sb3JzID09PT09PT09PT0gKi9cclxuXHQtLWMtYmctc2lkZWJhcjogdmFyKC0tYy1zdXJmYWNlLTEpO1xyXG5cdC0tYy1iZy1jaGF0cy1jb250YWluZXI6IGhzbCh2YXIoLS1hY2NlbnQtaCkgdmFyKC0tc3VyZmFjZS1zKSBjYWxjKHZhcigtLXN1cmZhY2UtbCkgKiAxLjA3NikpO1xyXG5cdC0tYy1iZy1jaGF0cy1zdGlja3k6IGhzbGEodmFyKC0tc3VyZmFjZS1oc2wpIC8gMC4wMik7XHJcblxyXG5cdC8qID8gPT09PT09PT09PSBDaGF0IGJ1YmJsZXMgY29sb3JzID09PT09PT09PT0gKi9cclxuXHQtLWMtYmctbXNnLXVzZXI6IGhzbGEodmFyKC0tYWNjZW50LWhzbCkgLyAwLjA0KTtcclxuXHQtLWMtYmctbXNnLWdwdDogaHNsYSh2YXIoLS1hY2NlbnQtaHNsKSAvIDAuMDgpO1xyXG5cdC0tYy1tc2ctbmFtZS11c2VyOiB2YXIoLS1jLWFjY2VudCk7XHJcblx0Ly8gLS1jLW1zZy1uYW1lLWdwdDogdmFyKC0tYy1ncmVlbik7XHJcblxyXG5cdC8qID8gPT09PT09PT09PSBUeXBlIG1lc3NhZ2UgdGV4dGFyZWEgY29sb3JzID09PT09PT09PT0gKi9cclxuXHQtLWMtYmctdGV4dGFyZWE6IHZhcigtLWMtc3VyZmFjZS0yKTtcclxuXHQtLWMtYm9yZGVyLXRleHRhcmVhOiB2YXIoLS1jLXN1cmZhY2UtMik7XHJcblx0LS1jLXBsYWNlaG9sZGVyLXRleHRhcmVhOiBoc2wodmFyKC0tYWNjZW50LWhzbCkgLyAwLjgpO1xyXG5cclxuXHQvKiA/ID09PT09PT09PT0gbW9kYWwsIGRpYWxvZywgY29udGV4dG1lbnUgYmcgPT09PT09PT09PSAqL1xyXG5cdC0tYy1iZy1tb2RhbDogaHNsYSh2YXIoLS1hY2NlbnQtaHNsKSAvIDAuMjIpO1xyXG5cdC0tYy1iZy1kaWFsb2c6IHZhcigtLWMtc3VyZmFjZS0yKTtcclxuXHQtLWMtYmctY29udGV4dG1lbnU6IHZhcigtLWMtc3VyZmFjZS0zKTtcclxuXHJcblx0LyogPyA9PT09PT09PT09IFRvb2x0aXAgYmcgPT09PT09PT09PSAqL1xyXG5cdC0tYy1iZy10b29sdGlwOiB2YXIoLS1jLWFjY2VudC1saWdodCk7XHJcblxyXG5cdC8qID8gPT09PT09PT09PSBib3JkZXIgY29sb3JzID09PT09PT09PT0gKi9cclxuXHQtLWMtYm9yZGVyOiB2YXIoLS1jLXN1cmZhY2UtMyk7XHJcblx0LS1jLWJvcmRlci1hY2NlbnQ6IGhzbGEodmFyKC0tYWNjZW50LWhzbCkgLyAwLjA1KTtcclxuXHJcblx0LyogPyA9PT09PT09PT09IGJ0biBjb2xvcnMgPT09PT09PT09PSAqL1xyXG5cdC0tYy1idG46IHZhcigtLWMtb24tYWNjZW50KTtcclxuXHQtLWMtYmctYnRuOiB2YXIoLS1jLWFjY2VudCk7XHJcblxyXG5cdC8qID8gPT09PT09PT09PSA8cHJlPi9tYXJrZG93biB0aGluZ3MgY29sb3JzID09PT09PT09PT0gKi9cclxuXHQtLWMtYmctcHJlOiBoc2woMCwgMCUsIDAlKTtcclxuXHQtLWMtYmctcHJlLWhlYWRlcjogdHJhbnNwYXJlbnQ7XHJcblx0LS1jLWJnLXByZS1oZWFkZXItYnRuOiB2YXIoLS1jLWFjY2VudCk7XHJcblx0LS1jLW1hcmtkb3duLWE6IHZhcigtLWMtYWNjZW50KTtcclxuXHJcblx0LyogPyA9PT09PT09PT09IFNjcm9sbGJhciBjb2xvcnMgPT09PT09PT09PSAqL1xyXG5cdC0tYy1zY3JvbGxiYXItdGh1bWI6IHZhcigtLWMtc3VyZmFjZS0zKTtcclxuXHQtLWMtc2Nyb2xsYmFyLXRyYWNrOiB0cmFuc3BhcmVudDtcclxuXHJcblx0LyogPyA9PT09PT09PT09IE9wZW5BSSBzdXJmYWNlIGNvbG9ycyA9PT09PT09PT09ICovXHJcblx0LyogYnRuIHUgYmlyYW5qdSB0ZW1lIGthZCBuZW1hIG5pa2FrZSBwb3phZGluZSAqL1xyXG5cdC0tc3VyZmFjZS1wcmltYXJ5OiB2YXIoLS1jLXN1cmZhY2UtMSkgIWltcG9ydGFudDtcclxuXHJcblx0LyogYm9yZGVyIG9rbyBjb250ZXh0LW1lbnUgKi9cclxuXHQtLXN1cmZhY2Utc2Vjb25kYXJ5OiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xyXG5cclxuXHQvKiBTZWxlY3RlZCBidXR0b24vbGluay9saXN0IGluIHNldHRpbmdzOiBcIkdlbmVyYWxcIiwgXCJEYXRhIGNvbnRyb2xzXCIgKi9cclxuXHQtLXN1cmZhY2UtdGVydGlhcnk6IHZhcigtLWMtYmctbXNnLWdwdCkgIWltcG9ydGFudDtcclxuXHJcblx0LyogPyA9PT09PT09PT09IE9wZW5BSSB0ZXh0IGNvbG9ycyA9PT09PT09PT09ICovXHJcblx0LypgYGAgLS10ZXh0LXByaW1hcnkgXHJcbiAgICAgICAgLSBib2R5IHR4dFxyXG4gICAgICAgIC0gPz9cclxuICAgICovXHJcblx0LS10ZXh0LXByaW1hcnk6IHZhcigtLWMtdHh0KSAhaW1wb3J0YW50O1xyXG5cclxuXHQvKmBgYCAtLXRleHQtc2Vjb25kYXJ5IFxyXG4gICAgICAgIC0gdHh0IGlzcG9kIFwiVXBncmFkZVwiXHJcbiAgICAgICAgLSB0eHQgaXNwb2QgXCJDaGF0IGhpc3RvcnkgJiB0cmFpbmluZ1wiIHUgU2V0dGluZ3N1XHJcbiAgICAgICAgLSB0eHQgXCIzLjVcIiB1IHN0aWNreSBwb3JlZCBcIkNoYXRHUFQgMy41XCJcclxuICAgICAgICAtIGthZCBqZSByZWNpbW8gZm9jdXNlZCBzYSB0YWJvbSBEYXJrIHUgXCJUaGVtZXNcIlxyXG4gICAgICAgIC0gdGV4dCBrYWQgc2Ugb2RlIG5hIFwiVXBncmFkZVwiIHBhIG9ubyBcIkhhdmUgYW4gZXhpc3RpbmcgcGxhbj8gU2VlIGJpbGxpbmcgaGVscFwiXHJcbiAgICAqL1xyXG5cdC0tdGV4dC1zZWNvbmRhcnk6IHZhcigtLWMtc3VidGV4dC0xKSAhaW1wb3J0YW50O1xyXG5cclxuXHQvKmBgYCAtLXRleHQtdGVydGlhcnkgXHJcbiAgICAgICAgLSBzdHJlbGljYSBuYSBkb2xlIHBvcmVkIDMuNSB1IHN0aWNreSBwb3JlZCBDaGF0R1BUIDMuNVxyXG4gICAgICAgIC0ga2FkIGplIG5lc3RvIGZvY3VzZWQgc2EgdGFib20gLSBhY2Nlc3NpYmlsaXR5IC0gbnByIENsZWFyIHUgY2xlYXIgYWxsIGNoYXRzXHJcbiAgICAgICAgLSB0ZXh0IHUgY29udGV4dG1lbnUga2FkIHNlIGtsaWtuZSBuYSBDaGF0R1BUIDMuNVxyXG4gICAgICAgIC0gdGV4dCBrYWQgb2RlbW8gdSAgVVBncmFkZSBwYSBvbm8gVVNEICQwL21vbnRoIGkgVVNEICQyMC9tb250aCBcclxuICAgICovXHJcblx0LS10ZXh0LXRlcnRpYXJ5OiB2YXIoLS1jLXN1YnRleHQtMikgIWltcG9ydGFudDtcclxuXHJcblx0LyogPyA9PT09PT09PT09IFBST1ZFUklUSSAtIGdyYXkgPT09PT09PT09PSAqL1xyXG5cdC0tZ3JheS0zMDA6IHZhcigtLXRleHQtc2Vjb25kYXJ5KSAhaW1wb3J0YW50O1xyXG5cclxuXHQvKiAzIHRhY2tlIHUgbGlzdGkgdSBzaWRlYmFyICovXHJcblx0LS1ncmF5LTUwMDogdmFyKC0tYy10eHQpICFpbXBvcnRhbnQ7XHJcblxyXG5cdC8qID8gPT09PT09PT09PSBCT1gtU0hBRE9XID09PT09PT09PT0qL1xyXG5cdC0tYm94LXNoYWRvdzogdmFyKC0tYm94LXNoYWRvdy12YWx1ZXMpIGhzbGEodmFyKC0tYWNjZW50LWhzbCkgLyAwLjEpO1xyXG5cdC8vIC0tYm94LXNoYWRvdy1jb250ZXh0bWVudTogMHB4IDBweCAzMHB4IC0xMHB4IGhzbGEodmFyKC0tYWNjZW50LWhzbCkgLyAwLjE4KTtcclxuXHQtLWJveC1zaGFkb3ctY29udGV4dG1lbnU6IGluc2V0IDBweCAwcHggMTJweCAxcHggaHNsYSh2YXIoLS1hY2NlbnQtaHNsKSAvIDAuMTMpO1xyXG5cdC0tYm94LXNoYWRvdy10ZXh0YXJlYTogaW5zZXQgMHB4IDBweCAxNXB4IDFweCBoc2xhKHZhcigtLWFjY2VudC1oc2wpIC8gMC4wNSkgIWltcG9ydGFudDtcclxufVxyXG5cclxuLyogQCA9PT09PT09PT09PT09PT09PT0gT0xFRCA9PT09PT09PT09PT09PT09PT0gKi9cclxuaHRtbC5kYXJrW2RhdGEtZ3B0aGVtZT0nb2xlZCddIHtcclxuXHQvKiA/ID09PT09PT09PT0gSFNMID09PT09PT09PT0gKi9cclxuXHJcblx0LyogLS1hY2NlbnQtaHNsOiAyNzIgOTMlIDc4JTsgKi9cclxuXHQtLWFjY2VudC1oOiAyNzI7XHJcblx0LS1hY2NlbnQtczogOTMlO1xyXG5cdC0tYWNjZW50LWw6IDc4JTtcclxuXHQtLWFjY2VudC1oc2w6IHZhcigtLWFjY2VudC1oKSB2YXIoLS1hY2NlbnQtcykgdmFyKC0tYWNjZW50LWwpO1xyXG5cclxuXHQvKiAtLXR4dC1oc2w6IDI1NSA4NiUgOTIlOyAqL1xyXG5cdC0tdHh0LWg6IDI1NTtcclxuXHQtLXR4dC1zOiA4NiU7XHJcblx0LS10eHQtbDogOTIlO1xyXG5cdC0tdHh0LWhzbDogdmFyKC0tdHh0LWgpIHZhcigtLXR4dC1zKSB2YXIoLS10eHQtbCk7XHJcblxyXG5cdC0tc3VyZmFjZS1oOiAwO1xyXG5cdC0tc3VyZmFjZS1zOiAwJTtcclxuXHQtLXN1cmZhY2UtbDogMCU7XHJcblx0LS1zdXJmYWNlLWhzbDogaHNsKHZhcigtLWFjY2VudC1oKSB2YXIoLS1zdXJmYWNlLXMpIHZhcigtLXN1cmZhY2UtbCkpO1xyXG5cclxuXHQvKiAtLWRhbmdlci1oc2w6IDM1NiA3NyUgNzYlICovXHJcblx0LS1kYW5nZXItaDogMzU2O1xyXG5cdC0tZGFuZ2VyLXM6IDc3JTtcclxuXHQtLWRhbmdlci1sOiA3NiU7XHJcblx0LS1kYW5nZXItaHNsOiB2YXIoLS1kYW5nZXItaCkgdmFyKC0tZGFuZ2VyLXMpIHZhcigtLWRhbmdlci1sKTtcclxuXHQtLWMtZGFuZ2VyOiBoc2wodmFyKC0tZGFuZ2VyLWhzbCkpO1xyXG5cclxuXHQvKiA/ID09PT09PT09PT0gQ09MT1JTID09PT09PT09PT0gKi9cclxuXHQtLWMtYWNjZW50OiBoc2wodmFyKC0tYWNjZW50LWhzbCkpO1xyXG5cdC0tYy1hY2NlbnQtbGlnaHQ6IGhzbCh2YXIoLS1hY2NlbnQtaCksIGNhbGModmFyKC0tYWNjZW50LXMpIC8gMS4zKSwgdmFyKC0tYWNjZW50LWwpKTtcclxuXHQtLWMtb24tYWNjZW50OiBoc2wodmFyKC0tYWNjZW50LWgpLCB2YXIoLS1hY2NlbnQtcyksIDEwJSk7XHJcblxyXG5cdC8qID8gPT09PT09PT09PSBUZXh0IGNvbG9ycyA9PT09PT09PT09ICovXHJcblx0LS1jLXR4dDogaHNsKHZhcigtLXR4dC1oc2wpKTtcclxuXHQtLWMtc3VidGV4dC0xOiB2YXIoLS1jLWFjY2VudC1saWdodCk7XHJcblx0LS1jLXN1YnRleHQtMjogaHNsKHZhcigtLWFjY2VudC1oKSBjYWxjKHZhcigtLWFjY2VudC1zKSAvIDIpIHZhcigtLWFjY2VudC1sKSkgIWltcG9ydGFudDtcclxuXHJcblx0LyogPyA9PT09PT09PT09IFN1cmZhY2UgY29sb3JzID09PT09PT09PT0gKi9cclxuXHQvLyAtLWMtc3VyZmFjZS0xOiBibGFjazsgLy8gZGFya2VzdFxyXG5cdC0tYy1zdXJmYWNlLTE6IGJsYWNrOyAvLyBkYXJrZXN0XHJcblx0Ly8gLS1jLXN1cmZhY2UtMjogIzE5MWMxZTsgLy8gZGFya2VyXHJcblx0Ly8gLS1jLXN1cmZhY2UtMzogIzI2MjIyOTsgLy8gZGFya1xyXG5cdC0tYy1zdXJmYWNlLTI6IGhzbCh2YXIoLS1hY2NlbnQtaCksIGNhbGModmFyKC0tc3VyZmFjZS1zKSArIDE1JSksIGNhbGModmFyKC0tc3VyZmFjZS1sKSArIDEyJSkpOyAvLyBkYXJrZXJcclxuXHQvLyAtLWMtc3VyZmFjZS0yOiByZ2IoNDksIDIyMCwgNzQpOyAvLyBkYXJrZXJcclxuXHQtLWMtc3VyZmFjZS0zOiBoc2wodmFyKC0tYWNjZW50LWgpLCBjYWxjKHZhcigtLXN1cmZhY2UtcykgKyAxNSUpLCBjYWxjKHZhcigtLXN1cmZhY2UtbCkgKyA4JSkpOyAvLyBkYXJrXHJcblxyXG5cdC8qID8gPT09PT09PT09PSBMYXlvdXQgY29sb3JzID09PT09PT09PT0gKi9cclxuXHQvLyAtLWMtYmctc2lkZWJhcjogdmFyKC0tYy1zdXJmYWNlLTEpO1xyXG5cdC8vIC0tYy1iZy1jaGF0cy1jb250YWluZXI6IHZhcigtLWMtc3VyZmFjZS0yKTtcclxuXHQtLWMtYmctc2lkZWJhcjogYmxhY2s7XHJcblx0LS1jLWJnLWNoYXRzLWNvbnRhaW5lcjogYmxhY2s7XHJcblx0LS1jLWJnLWNoYXRzLXN0aWNreTogYmxhY2s7XHJcblxyXG5cdC8qID8gPT09PT09PT09PSBDaGF0IGJ1YmJsZXMgY29sb3JzID09PT09PT09PT0gKi9cclxuXHQvLyAtLWMtYmctbXNnLXVzZXI6IGhzbGEodmFyKC0tYWNjZW50LWhzbCkgLyAwLjA0KTtcclxuXHQvLyAtLWMtYmctbXNnLWdwdDogaHNsYSh2YXIoLS1hY2NlbnQtaHNsKSAvIDAuMDgpO1xyXG5cdC0tYy1iZy1tc2ctdXNlcjogaHNsKHZhcigtLWFjY2VudC1oKSwgY2FsYyh2YXIoLS1zdXJmYWNlLXMpICsgMTUlKSwgY2FsYyh2YXIoLS1zdXJmYWNlLWwpICsgNCUpKTtcclxuXHQtLWMtYmctbXNnLWdwdDogaHNsKHZhcigtLWFjY2VudC1oKSwgY2FsYyh2YXIoLS1zdXJmYWNlLXMpICsgMjAlKSwgY2FsYyh2YXIoLS1zdXJmYWNlLWwpICsgNiUpKTtcclxuXHQtLWMtbXNnLW5hbWUtdXNlcjogdmFyKC0tYy1hY2NlbnQpO1xyXG5cdC8vIC0tYy1tc2ctbmFtZS1ncHQ6IHZhcigtLWMtZ3JlZW4pO1xyXG5cclxuXHQvKiA/ID09PT09PT09PT0gVHlwZSBtZXNzYWdlIHRleHRhcmVhIGNvbG9ycyA9PT09PT09PT09ICovXHJcblx0LS1jLWJnLXRleHRhcmVhOiB2YXIoLS1jLXN1cmZhY2UtMyk7XHJcblx0LS1jLXBsYWNlaG9sZGVyLXRleHRhcmVhOiBoc2wodmFyKC0tYWNjZW50LWhzbCkgLyAwLjgpO1xyXG5cclxuXHQvKiA/ID09PT09PT09PT0gbW9kYWwsIGRpYWxvZywgY29udGV4dG1lbnUgYmcgPT09PT09PT09PSAqL1xyXG5cdC0tYy1iZy1tb2RhbDogaHNsYSh2YXIoLS1hY2NlbnQtaHNsKSAvIDAuMDkpO1xyXG5cdC0tYy1iZy1kaWFsb2c6IHZhcigtLWMtc3VyZmFjZS0xKTtcclxuXHQtLWMtYmctY29udGV4dG1lbnU6IHZhcigtLWMtc3VyZmFjZS0zKTtcclxuXHJcblx0LyogPyA9PT09PT09PT09IFRvb2x0aXAgYmcgPT09PT09PT09PSAqL1xyXG5cdC0tYy1iZy10b29sdGlwOiB2YXIoLS1jLWFjY2VudC1saWdodCk7XHJcblxyXG5cdC8qID8gPT09PT09PT09PSBib3JkZXIgY29sb3JzID09PT09PT09PT0gKi9cclxuXHQtLWMtYm9yZGVyOiB2YXIoLS1jLXN1cmZhY2UtMyk7XHJcblx0LS1jLWJvcmRlci1hY2NlbnQ6IGhzbGEodmFyKC0tYWNjZW50LWhzbCkgLyAwLjA1KTtcclxuXHJcblx0LyogPyA9PT09PT09PT09IGJ0biBjb2xvcnMgPT09PT09PT09PSAqL1xyXG5cdC0tYy1idG46IHZhcigtLWMtb24tYWNjZW50KTtcclxuXHQtLWMtYmctYnRuOiB2YXIoLS1jLWFjY2VudCk7XHJcblxyXG5cdC8qID8gPT09PT09PT09PSA8cHJlPi9tYXJrZG93biB0aGluZ3MgY29sb3JzID09PT09PT09PT0gKi9cclxuXHQtLWMtYmctcHJlOiBoc2woMCwgMCUsIDAlKTtcclxuXHQtLWMtYmctcHJlLWhlYWRlcjogdHJhbnNwYXJlbnQ7XHJcblx0LS1jLWJnLXByZS1oZWFkZXItYnRuOiB2YXIoLS1jLWFjY2VudCk7XHJcblx0LS1jLW1hcmtkb3duLWE6IHZhcigtLWMtYWNjZW50KTtcclxuXHJcblx0LyogPyA9PT09PT09PT09IFNjcm9sbGJhciBjb2xvcnMgPT09PT09PT09PSAqL1xyXG5cdC0tYy1zY3JvbGxiYXItdGh1bWI6IHZhcigtLWMtc3VyZmFjZS0zKTtcclxuXHQtLWMtc2Nyb2xsYmFyLXRyYWNrOiB0cmFuc3BhcmVudDtcclxuXHJcblx0LyogPyA9PT09PT09PT09IE9wZW5BSSBzdXJmYWNlIGNvbG9ycyA9PT09PT09PT09ICovXHJcblx0LyogYnRuIHUgYmlyYW5qdSB0ZW1lIGthZCBuZW1hIG5pa2FrZSBwb3phZGluZSAqL1xyXG5cdC0tc3VyZmFjZS1wcmltYXJ5OiB2YXIoLS1jLXN1cmZhY2UtMSkgIWltcG9ydGFudDtcclxuXHJcblx0LyogYm9yZGVyIG9rbyBjb250ZXh0LW1lbnUgKi9cclxuXHQtLXN1cmZhY2Utc2Vjb25kYXJ5OiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xyXG5cclxuXHQvKiBTZWxlY3RlZCBidXR0b24vbGluay9saXN0IGluIHNldHRpbmdzOiBcIkdlbmVyYWxcIiwgXCJEYXRhIGNvbnRyb2xzXCIgKi9cclxuXHQtLXN1cmZhY2UtdGVydGlhcnk6IHZhcigtLWMtYmctbXNnLWdwdCkgIWltcG9ydGFudDtcclxuXHJcblx0LyogPyA9PT09PT09PT09IE9wZW5BSSB0ZXh0IGNvbG9ycyA9PT09PT09PT09ICovXHJcblx0LypgYGAgLS10ZXh0LXByaW1hcnkgXHJcbiAgICAgICAgLSBib2R5IHR4dFxyXG4gICAgICAgIC0gPz9cclxuICAgICovXHJcblx0LS10ZXh0LXByaW1hcnk6IHZhcigtLWMtdHh0KSAhaW1wb3J0YW50O1xyXG5cclxuXHQvKmBgYCAtLXRleHQtc2Vjb25kYXJ5IFxyXG4gICAgICAgIC0gdHh0IGlzcG9kIFwiVXBncmFkZVwiXHJcbiAgICAgICAgLSB0eHQgaXNwb2QgXCJDaGF0IGhpc3RvcnkgJiB0cmFpbmluZ1wiIHUgU2V0dGluZ3N1XHJcbiAgICAgICAgLSB0eHQgXCIzLjVcIiB1IHN0aWNreSBwb3JlZCBcIkNoYXRHUFQgMy41XCJcclxuICAgICAgICAtIGthZCBqZSByZWNpbW8gZm9jdXNlZCBzYSB0YWJvbSBEYXJrIHUgXCJUaGVtZXNcIlxyXG4gICAgICAgIC0gdGV4dCBrYWQgc2Ugb2RlIG5hIFwiVXBncmFkZVwiIHBhIG9ubyBcIkhhdmUgYW4gZXhpc3RpbmcgcGxhbj8gU2VlIGJpbGxpbmcgaGVscFwiXHJcbiAgICAqL1xyXG5cdC0tdGV4dC1zZWNvbmRhcnk6IHZhcigtLWMtc3VidGV4dC0xKSAhaW1wb3J0YW50O1xyXG5cclxuXHQvKmBgYCAtLXRleHQtdGVydGlhcnkgXHJcbiAgICAgICAgLSBzdHJlbGljYSBuYSBkb2xlIHBvcmVkIDMuNSB1IHN0aWNreSBwb3JlZCBDaGF0R1BUIDMuNVxyXG4gICAgICAgIC0ga2FkIGplIG5lc3RvIGZvY3VzZWQgc2EgdGFib20gLSBhY2Nlc3NpYmlsaXR5IC0gbnByIENsZWFyIHUgY2xlYXIgYWxsIGNoYXRzXHJcbiAgICAgICAgLSB0ZXh0IHUgY29udGV4dG1lbnUga2FkIHNlIGtsaWtuZSBuYSBDaGF0R1BUIDMuNVxyXG4gICAgICAgIC0gdGV4dCBrYWQgb2RlbW8gdSAgVVBncmFkZSBwYSBvbm8gVVNEICQwL21vbnRoIGkgVVNEICQyMC9tb250aCBcclxuICAgICovXHJcblx0LS10ZXh0LXRlcnRpYXJ5OiB2YXIoLS1jLXN1YnRleHQtMikgIWltcG9ydGFudDtcclxuXHJcblx0LyogPyA9PT09PT09PT09IFBST1ZFUklUSSAtIGdyYXkgPT09PT09PT09PSAqL1xyXG5cdC0tZ3JheS0zMDA6IHZhcigtLXRleHQtc2Vjb25kYXJ5KSAhaW1wb3J0YW50O1xyXG5cclxuXHQvKiAzIHRhY2tlIHUgbGlzdGkgdSBzaWRlYmFyICovXHJcblx0LS1ncmF5LTUwMDogdmFyKC0tYy10eHQpICFpbXBvcnRhbnQ7XHJcblxyXG5cdC8qID8gPT09PT09PT09PSBCT1gtU0hBRE9XID09PT09PT09PT0qL1xyXG5cdC0tYm94LXNoYWRvdzogdmFyKC0tYm94LXNoYWRvdy12YWx1ZXMpIGhzbGEodmFyKC0tYWNjZW50LWhzbCkgLyAwLjEpO1xyXG5cdC8vIC0tYm94LXNoYWRvdy1jb250ZXh0bWVudTogMHB4IDBweCAzMHB4IDBweCBoc2xhKHZhcigtLWFjY2VudC1oc2wpIC8gMC4xKTtcclxuXHQvLyAtLWJveC1zaGFkb3ctY29udGV4dG1lbnU6IDBweCAwcHggMzBweCAwcHggcmVkO1xyXG5cdC0tYm94LXNoYWRvdy1jb250ZXh0bWVudTogaW5zZXQgMHB4IDBweCAxNXB4IDFweCBoc2xhKHZhcigtLWFjY2VudC1oc2wpIC8gMC4wOCk7XHJcblx0LS1ib3gtc2hhZG93LXRleHRhcmVhOiBpbnNldCAwcHggMHB4IDE1cHggMXB4IGhzbGEodmFyKC0tYWNjZW50LWhzbCkgLyAwLjA1KSAhaW1wb3J0YW50O1xyXG5cdC8vIC0tYm94LXNoYWRvdy1jb250ZXh0bWVudTogMHB4IDBweCAzMHB4IDBweCByZWQ7XHJcbn1cclxuIiwiLyogQGtleWZyYW1lcyBhbmltU2Nyb2xsVGV4dCB7XHJcblx0MCUge1xyXG5cdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApO1xyXG5cdH1cclxuXHQ3MCUge1xyXG5cdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0yNiUpO1xyXG5cdH1cclxuXHQxMDAlIHtcclxuXHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTtcclxuXHR9XHJcbn0gKi9cclxuXHJcbi8qIEBrZXlmcmFtZXMgYW5pbUZhZGVJbkNsaXBQYXRoQ2lyY2xlIHtcclxuXHQwJSB7XHJcblx0XHRvcGFjaXR5OiAwO1xyXG5cdFx0Y2xpcC1wYXRoOiBjaXJjbGUoMCUpO1xyXG5cdFx0Ly8gY2xpcC1wYXRoOiBwb2x5Z29uKDUwJSAwJSwgNTAlIDAlLCA1MCUgMTAwJSwgNTAlIDEwMCUpO1xyXG5cdH1cclxuXHJcblx0MTAwJSB7XHJcblx0XHRvcGFjaXR5OiAxO1xyXG5cdFx0Y2xpcC1wYXRoOiBjaXJjbGUoMTAwJSBhdCA1MCUgNTAlKTtcclxuXHRcdC8vIGNsaXAtcGF0aDogcG9seWdvbigwJSAwJSwgMTAwJSAwJSwgMTAwJSAxMDAlLCAwJSAxMDAlKTtcclxuXHR9XHJcbn0gKi9cclxuXHJcbkBrZXlmcmFtZXMgYW5pbUZhZGVJbkNsaXBQYXRoIHtcclxuXHQwJSB7XHJcblx0XHRvcGFjaXR5OiAwO1xyXG5cdFx0Y2xpcC1wYXRoOiBwb2x5Z29uKDAlIDAlLCAxMDAlIDAlLCAxMDAlIDAlLCAwJSAwJSk7XHJcblx0fVxyXG5cdDEwMCUge1xyXG5cdFx0b3BhY2l0eTogMTtcclxuXHRcdGNsaXAtcGF0aDogcG9seWdvbigwJSAwJSwgMTAwJSAwJSwgMTAwJSAxMDAlLCAwJSAxMDAlKTtcclxuXHR9XHJcbn1cclxuXHJcbkBrZXlmcmFtZXMgYW5pbUZhZGVJbiB7XHJcblx0ZnJvbSB7XHJcblx0XHRvcGFjaXR5OiAwO1xyXG5cdH1cclxuXHR0byB7XHJcblx0XHRvcGFjaXR5OiAxO1xyXG5cdH1cclxufVxyXG4iLCIvKiAlYW5pbUZhZGVJbkNsaXBQYXRoQ2lyY2xlIHtcclxuXHR3aWxsLWNoYW5nZTogb3BhY2l0eSwgY2xpcC1wYXRoO1xyXG5cdGFuaW1hdGlvbjogYW5pbUZhZGVJbkNsaXBQYXRoQ2lyY2xlIDAuMnMgbGluZWFyIGZvcndhcmRzO1xyXG59ICovXHJcbiVhbmltRmFkZUluQ2xpcFBhdGgge1xyXG5cdHdpbGwtY2hhbmdlOiBvcGFjaXR5LCBjbGlwLXBhdGg7XHJcblx0YW5pbWF0aW9uOiBhbmltRmFkZUluQ2xpcFBhdGggMC4ycyBsaW5lYXIgZm9yd2FyZHM7XHJcbn1cclxuJWFuaW1GYWRlSW4ge1xyXG5cdHdpbGwtY2hhbmdlOiBvcGFjaXR5O1xyXG5cdGFuaW1hdGlvbjogYW5pbUZhZGVJbiB2YXIoLS1hbmltLWR1cmF0aW9uLCAwLjJzKSBsaW5lYXIgZm9yd2FyZHM7XHJcbn1cclxuLyogJWFuaW1GYWRlT3V0IHtcclxuXHR3aWxsLWNoYW5nZTogb3BhY2l0eTtcclxuXHRhbmltYXRpb246IGFuaW1GYWRlIHZhcigtLWFuaW0tZHVyYXRpb24sIDAuNHMpIGxpbmVhciByZXZlcnNlO1xyXG59ICovXHJcblxyXG4lbGlua19kZWZhdWx0IHtcclxuXHRwb3NpdGlvbjogcmVsYXRpdmU7XHJcblx0dGV4dC1kZWNvcmF0aW9uOiBub25lO1xyXG5cdGNvbG9yOiB2YXIoLS1jLWFjY2VudCkgIWltcG9ydGFudDtcclxuXHQvLyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcblx0dHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzIGVhc2U7XHJcblxyXG5cdC8qIFN0eWxlIGZvciB0aGUgOjphZnRlciBwc2V1ZG8tZWxlbWVudCAoaW5pdGlhbGx5IGhpZGRlbikgKi9cclxuXHQmOjphZnRlciB7XHJcblx0XHRjb250ZW50OiAnJztcclxuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuXHRcdHdpZHRoOiAxMDAlO1xyXG5cdFx0aGVpZ2h0OiAycHg7XHJcblx0XHRib3R0b206IC01cHg7XHJcblx0XHRsZWZ0OiAwO1xyXG5cdFx0Ly8gcmlnaHQ6IDA7IC8qIFNldCByaWdodCB0byBjb3ZlciB0aGUgZW50aXJlIGxpbmsgKi9cclxuXHRcdGJhY2tncm91bmQtY29sb3I6IGN1cnJlbnRDb2xvcjtcclxuXHRcdGJvcmRlci1yYWRpdXM6IDIwcHg7XHJcblx0XHR0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4zcyAkZWFzZU91dEN1YmljO1xyXG5cdH1cclxufVxyXG4lbGlua19ob3Zlcl91bmRlcmxpbmVkIHtcclxuXHRAZXh0ZW5kICVsaW5rX2RlZmF1bHQ7XHJcblxyXG5cdC8qIFN0eWxlIGZvciB0aGUgOjphZnRlciBwc2V1ZG8tZWxlbWVudCAoaW5pdGlhbGx5IGhpZGRlbikgKi9cclxuXHQmOjphZnRlciB7XHJcblx0XHR0cmFuc2Zvcm06IHNjYWxlWCgxKTtcclxuXHRcdHRyYW5zZm9ybS1vcmlnaW46IGJvdHRvbSBsZWZ0O1xyXG5cdH1cclxuXHJcblx0Jjpob3Zlcjo6YWZ0ZXIge1xyXG5cdFx0dHJhbnNmb3JtOiBzY2FsZVgoMCk7XHJcblx0XHR0cmFuc2Zvcm0tb3JpZ2luOiBib3R0b20gcmlnaHQ7XHJcblx0fVxyXG59XHJcbiVsaW5rX2hvdmVyX3VuZGVybGVzcyB7XHJcblx0QGV4dGVuZCAlbGlua19kZWZhdWx0O1xyXG5cclxuXHQmOjphZnRlciB7XHJcblx0XHR0cmFuc2Zvcm06IHNjYWxlWCgwKTtcclxuXHRcdHRyYW5zZm9ybS1vcmlnaW46IGJvdHRvbSByaWdodDtcclxuXHR9XHJcblxyXG5cdCY6aG92ZXI6OmFmdGVyIHtcclxuXHRcdHRyYW5zZm9ybTogc2NhbGVYKDEpO1xyXG5cdFx0dHJhbnNmb3JtLW9yaWdpbjogYm90dG9tIGxlZnQ7XHJcblx0fVxyXG59XHJcblxyXG4lc2lkZWJhcl9saW5rX2l0ZW1fYnRuc19iZyB7XHJcblx0LyogXHJcbiAgICAgICAgaHNsYSgwLCAwJSwgY2FsYyh2YXIoLS1zdXJmYWNlLWwpIC8gMS4wODkpLCAwLjcpIFxyXG4gICAgICAgIC0gdGhpcyBuaWNlIHJlc29sdmUgYnV0IGl0IGRvZXNuJ3Qgd29yayBiY3MgaXQgaXMgQkxBQ0stSVNILCBXVEYgPz8/PyBcclxuICAgICovXHJcblx0Ly8gYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCBoc2xhKDAsIDAlLCBjYWxjKHZhcigtLXN1cmZhY2UtbCkgLyAxLjA4OSksIDAuNykgMCUsIHZhcigtLWMtc3VyZmFjZS0yKSAzMCUsIHZhcigtLWMtc3VyZmFjZS0yKSAxMDAlKSAhaW1wb3J0YW50O1xyXG5cdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtc3VyZmFjZS0yKSAhaW1wb3J0YW50O1xyXG5cdGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiBpbmhlcml0O1xyXG5cdGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiBpbmhlcml0O1xyXG5cdHBhZGRpbmctbGVmdDogMC41cmVtO1xyXG59XHJcbiIsIi8qIE92byBuZWNlIHpib2cgQ09SUy1hICovXHJcbi8vIEBpbXBvcnQgdXJsKCdodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2NzczI/ZmFtaWx5PUludGVyOndnaHRAMzAwOzQwMDs1MDA7NjAwOzcwMDs4MDA7OTAwJmRpc3BsYXk9c3dhcCcpO1xyXG4vLyBAaW1wb3J0IHVybCgnaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3MyP2ZhbWlseT1JbnRlcjp3Z2h0QDMwMDs0MDA7NTAwOzYwMDs3MDA7ODAwOzkwMCZmYW1pbHk9SmV0QnJhaW5zK01vbm86aXRhbCx3Z2h0QDAsMzAwOzAsNDAwOzAsNzAwOzEsNDAwJmRpc3BsYXk9c3dhcCcpO1xyXG5cclxuaHRtbCxcclxuYm9keSB7XHJcblx0LS10ZXh0LXByaW1hcnk6IHZhcigtLWMtdHh0KSAhaW1wb3J0YW50O1xyXG5cclxuXHRmb250LWZhbWlseTogdmFyKC0tZi1mbSkgIWltcG9ydGFudDtcclxuXHRjb2xvcjogdmFyKC0tYy10eHQpICFpbXBvcnRhbnQ7XHJcblx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYy1iZy1jaGF0cy1jb250YWluZXIpICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbmEge1xyXG5cdGZvbnQtZmFtaWx5OiB2YXIoLS1mLWZtKSAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4vKiBzY3JvbGxiYXItY29sb3IgZm9yIEZvciBGaXJlZm94ICovXHJcbkAtbW96LWRvY3VtZW50IHVybC1wcmVmaXgoKSB7XHJcblx0aHRtbCB7XHJcblx0XHRzY3JvbGxiYXItY29sb3I6IHZhcigtLWMtc2Nyb2xsYmFyLXRodW1iKSB2YXIoLS1jLXNjcm9sbGJhci10cmFjayk7IC8vIHNlY29uZCBwYXJhbWV0ZXIgKHRyYW5zcGFyZW50KSBpcyBmb3IgYmctdGh1bWJcclxuXHR9XHJcbn1cclxuLy8gLyogc2Nyb2xsYmFyLXRodW1iLWNvbG9yIGZvciBDaHJvbWl1bS1iYXNlZCBicm93c2VycyAqL1xyXG46Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcclxuXHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLXNjcm9sbGJhci10aHVtYikgIWltcG9ydGFudDtcclxufVxyXG5cclxuOjpzZWxlY3Rpb24ge1xyXG5cdGJhY2tncm91bmQtY29sb3I6IGhzbGEodmFyKC0tYWNjZW50LWhzbCkgLyAwLjUpICFpbXBvcnRhbnQ7XHJcblx0Y29sb3I6IHZhcigtLWMtdHh0KSAhaW1wb3J0YW50O1xyXG5cdC8vIGNvbG9yOiB2YXIoLS1jLW9uLWFjY2VudCkgIWltcG9ydGFudDtcclxufVxyXG5cclxuYnV0dG9uIHtcclxuXHQtLXRleHQtcHJpbWFyeTogdmFyKC0tYy10eHQpICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbmlucHV0OjpwbGFjZWhvbGRlcixcclxudGV4dGFyZWE6OnBsYWNlaG9sZGVyIHtcclxuXHRjb2xvcjogdmFyKC0tYy1wbGFjZWhvbGRlcikgIWltcG9ydGFudDtcclxuXHRvcGFjaXR5OiAwLjYgIWltcG9ydGFudDtcclxufVxyXG5cclxuLmgtcHgge1xyXG5cdGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcclxufVxyXG5cclxuLyogLm1hcmtkb3duIHtcclxuICAgIFt0eXBlPVwiY2hlY2tib3hcIl06Y2hlY2tlZCB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYy1hY2NlbnQpO1xyXG4gICAgICAgIC0tc3ZnOiBlc2NhcGUoJzxzdmcgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJAe2Jhc2V9XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNMTIuMjA3IDQuNzkzYTEgMSAwIDAgMSAwIDEuNDE0bC01IDVhMSAxIDAgMCAxLTEuNDE0IDBsLTItMmExIDEgMCAwIDEgMS40MTQtMS40MTRMNi41IDkuMDg2bDQuMjkzLTQuMjkzYTEgMSAwIDAgMSAxLjQxNCAwelwiLz48L3N2Zz4nXHJcbiAgICAgICAgKTtcclxuICAgICAgICAvLyBiYWNrZ3JvdW5kLWltYWdlOiBcIn51cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LEB7c3ZnfScpXCI7XHJcbiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogXCJ+dXJsKCdkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwje3ZhcigtLXN2Zyl9fScpXCI7XHJcbiAgICB9XHJcbn0gKi9cclxuXHJcbmNvZGUuaGxqcyB7XHJcblx0Ly8gZm9udC1zaXplOiAuODVyZW0gIWltcG9ydGFudDtcclxuXHQvLyBmb250LWZhbWlseTogJ0pldEJyYWlucyBNb25vJywgbW9ub3NwYWNlICFpbXBvcnRhbnQ7XHJcblx0bGV0dGVyLXNwYWNpbmc6IC0wLjJweDtcclxufVxyXG5cclxuLyogPT09IEJPUkRFUiBSQURJVVMgKi9cclxuLnJvdW5kZWQtbWQge1xyXG5cdGJvcmRlci1yYWRpdXM6IHZhcigtLWJyLWJ0bik7XHJcbn1cclxuXHJcbi8qIFNoYWRvdyBpbiBcIlVwZ3JhZGUgeW91ciBwbGFuXCIgKi9cclxuLnNoYWRvdy1tZCB7XHJcblx0Ym94LXNoYWRvdzogbm9uZTtcclxufVxyXG5cclxuLyogXCI0MDQgfFwiIGluIFwiNDA0IHwgVGhpcyBwYWdlIGNvdWxkIG5vdCBiZSBmb3VuZFwiICovXHJcbi5uZXh0LWVycm9yLWgxIHtcclxuXHRjb2xvcjogdmFyKC0tYy1hY2NlbnQpO1xyXG5cdGJvcmRlci1jb2xvcjogY3VycmVudENvbG9yICFpbXBvcnRhbnQ7XHJcblx0Zm9udC1zaXplOiB2YXIoLS1mc3otZXJyb3ItNDA0KSAhaW1wb3J0YW50O1xyXG5cdGZvbnQtd2VpZ2h0OiA2MDAgIWltcG9ydGFudDtcclxufVxyXG4iLCIvKiA9PT09IFRZUE9HUkFQSFkgQ09MT1JTICovXHJcblxyXG4vKlxyXG5cdC0gT2JyYXRpIHBhem5qdSBuYSBUT09MVElQIGNsciBpIGFjY2VudCBidG5zIHNhIHN2ZyEhIVxyXG4gXHQtIEhhdmUgdG8gYWRkIC50b2FzdC1yb290IC50ZXh0LXdoaXRlW3JvbGU9J2FsZXJ0J10gaW50byA6bm90KCkgYnV0IGl0IHNvbWVob3cgYWZmZWN0cyB0b29sdGlwIHR4dCBjb2xvciwgd3RmLiBBbmQgSSBjYW50IGludmVzdGlnYXRlIHRvb2x0aXAgYmNzIGl0IGdvZXMgaGlkZGVuIHdoZW4gaXQgaXMgc2hvd24gb25seSBvbiBqYXZhc2NyaXB0IG1vdXNlb3Zlci5cclxuXHJcblx0LSBbY2xhc3MqPSd0ZXh0LWdyYXktJ10gdXRpY2UgaSBuYSBkaXZbZGF0YS1yYWRpeC1wb3BwZXItY29udGVudC13cmFwcGVyXSB0aiBcIlRoZW1lXCIgZHJvcGRvd24gaXRlbWUgdGUgbmUgbW9ndSBkYSBzZSBvdmVyd3JpdHVqdSB0YW1vIHUgX21lbnUuc2Nzcy4gWmF0byBzYW0gc2tsb25pbGEgIWltcG9ydGFudFxyXG4qL1xyXG5bY2xhc3MqPSd0ZXh0LWdyYXktJ106bm90KC50ZXh0LWdyYXktMTAwLCAudGV4dC1ncmF5LTQwMCwgLnRleHQtZ3JheS01MDAsIC50ZXh0LWdyYXktNjAwKSxcclxuW2NsYXNzKj0ndGV4dC13aGl0ZSddOm5vdCguYnRuLXByaW1hcnkgLnRleHQtd2hpdGUsIC5iZy1ncmVlbi02MDAsIHN2ZywgLnRvYXN0LXJvb3QgLnRleHQtd2hpdGVbcm9sZT0nYWxlcnQnXSkge1xyXG5cdGNvbG9yOiB2YXIoLS1jLXR4dCk7XHJcbn1cclxuXHJcbi8qIFxyXG4gLSBJcyB0aGlzIGNvbnZlcnNhdGlvbiBoZWxwZnVsIHNvIGZhcj8g8J+RjfCfkY5cclxuIC0gdGctNTAwIGplIHJlY2ltbyBidG4gc3ZnIHUgXCJBcmNoaXZlZC9TaGFyZWQgTGlua3NcIiBwb3B1cFxyXG4gLSB0Zy00MDAgKGRhcmspIHRnLTYwMCAobGlnaHQpIGluIFwiWW91IGhhdmUgbm8gc2hhcmVkIGxpbmtzLlwiXHJcbiovXHJcbi50ZXh0LWdyYXktNDAwLFxyXG4udGV4dC1ncmF5LTYwMCxcclxuLnRleHQtZ3JheS01MDAge1xyXG5cdGNvbG9yOiB2YXIoLS1jLXN1YnRleHQtMikgIWltcG9ydGFudDtcclxuXHQvLyBjb2xvcjogcmVkICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi8qIC50ZXh0LWdpem1vLWdyYXktNTAwIGlzIHRoZSBmb290ZXIgdHh0IGluIGRpYWxvZyBcIllPVSdSRSBJTlZJVEVEIFRPIFBMVVNcIiAqL1xyXG4udGV4dC1naXptby1ncmF5LTUwMCxcclxuLnRleHQtZ3JheS0xMDAge1xyXG5cdGNvbG9yOiB2YXIoLS1jLXN1YnRleHQtMSkgIWltcG9ydGFudDtcclxufVxyXG5cclxuLnRleHQtdG9rZW4tdGV4dC1zZWNvbmRhcnkge1xyXG5cdGNvbG9yOiB2YXIoLS1jLXN1YnRleHQtMSkgIWltcG9ydGFudDtcclxuXHQvLyBjb2xvcjogcmVkICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi8qIFwiTG9nIG91dFwiLCBcIkRlbGV0ZSBhbGwgY29udmVyc2F0aW9uc1wiLCBcIkRlbGV0ZSBjaGF0XCIgKi9cclxuLnRleHQtcmVkLTUwMCB7XHJcblx0Y29sb3I6IHZhcigtLWMtZGFuZ2VyKSAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4vKiBJbnRybyBwYWdlIChiZWZvcmUgbG9naW4pICovXHJcbltjbGFzcyo9J3RleHQtWyNGRTc2MDBdJ10ge1xyXG5cdGNvbG9yOiB2YXIoLS1jLWFjY2VudCk7XHJcbn1cclxuIiwiLyogPT09IEJHIENPTE9SUyAqL1xyXG5cclxuLyogXHJcbi0gVGV4dGFyZWEgbXNnIGJnLiBcclxuLSBcIlNoYXJlIGxpbmsgdG8gY2hhdFwiIGRpYWxvZyBjaGF0IG1pbiBkdXBsaWNhdGUgKC5iZy13aGl0ZSlcclxuLSBDaGF0IGhpc3RvcnkgJiBUcmFpbmluZ1wiIGNoZWNrYm94IGJ1bGxldFxyXG4gKi9cclxuLmJnLWdyYXktOTAwLFxyXG4uYmctd2hpdGUge1xyXG5cdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtc3VyZmFjZS0xKSAhaW1wb3J0YW50O1xyXG5cdC8vIGJhY2tncm91bmQtY29sb3I6IHJlZCAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4vKiBcclxuLy8gYGBgIC5iZy1ncmF5LTUwXHJcblx0XHQtIFwi4p2TXCIgYnRuIFxyXG5cclxuLy8gYGBgIC5iZy1ncmF5LTEwMFxyXG5cdFx0LSBMaW5lIHwgaW4gXCJJcyB0aGlzIGNvbnZlcnNhdGlvbiBoZWxwZnVsIHNvIGZhcj9cclxu8J+RjSDwn5GOIHwg4pyW77iPXCIgKi9cclxuLmJnLWdyYXktNTAsXHJcbi5iZy1ncmF5LTEwMCB7XHJcblx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYy1zdXJmYWNlLTIpICFpbXBvcnRhbnQ7XHJcbn1cclxuLy8gLmJnLWdyYXktNTAge1xyXG4vLyBcdC8vIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtc3VyZmFjZS0yKSAhaW1wb3J0YW50O1xyXG4vLyBcdGJhY2tncm91bmQtY29sb3I6IHJlZCAhaW1wb3J0YW50O1xyXG4vLyB9XHJcblxyXG4vKiBcclxuIC0gXCJXYXMgdGhpcyByZXNwb25zZSBiZXR0ZXIgb3Igd29yc2U/XCIgZWwgd2hlbiBjbGlja2VkIG9uIHJlZ2VuZXJhdGUgYW5zd2VyIGJ0biBcclxuIC0gXCJEZWxldGUgYWxsIHNoYXJlZCBsaW5rc1wiIGluIFwiU2hhcmVkIGxpa3NcIiBkaWFsb2dcclxuIC0gbGluZSB8IGJldHdlZW4gXCJzIHRoaXMgY29udmVyc2F0aW9uIGhlbHBmdWwgc28gZmFyPyDwn5GN8J+RjlwiIGFuZCBcInhcIlxyXG4qL1xyXG4vLyAuYmctZ3JheS0xMDAsXHJcbi8vIFtjbGFzcyo9XCI6YmctZ3JheS03MDBcIl0ge1xyXG4vLyAgICAgYmFja2dyb3VuZC1jb2xvcjogcmVkICFpbXBvcnRhbnQ7XHJcbi8vIH1cclxuXHJcbi8qIGhvdmVyOmJnLWdyYXktMTAwIGRhcms6aG92ZXI6YmctZ3JheS02MDAgXHJcblx0LSBHUFRzIFN0b3JlIFBBR0UgLSBcIkZlYXR1cmVkXCIgc2VjdGlvbiBpdGVtcyA6aG92ZXIgc3RhdGVzXHJcblx0LSBHUFRzIFN0b3JlIFBBR0UgLSBcIlRvcCBwaWNrc1wiLCBcIkRBTExFXCIsIFwiV3JpdGluZ1wiIGV0YyB0YWdzIDpob3ZlciBzdGF0ZXMgXHJcblx0LSBHUFRzIFN0b3JlIFBBR0UgLSBcIlNlYXJjaCBwdWJsaWMgR1BUc1wiIHNlYXJjaCBsaXN0IGl0ZW0gYmcgOmhvdmVyIHN0YXRlcyAqL1xyXG5bY2xhc3MqPSdkYXJrOmhvdmVyOmJnLWdyYXktNjAwJ10ge1xyXG5cdCY6aG92ZXIge1xyXG5cdFx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYy1zdXJmYWNlLTEpICFpbXBvcnRhbnQ7XHJcblx0XHQvLyBiYWNrZ3JvdW5kLWNvbG9yOiByZWQgIWltcG9ydGFudDtcclxuXHR9XHJcbn1cclxuXHJcbi8qIEdQVHMgc3RvcmUgUEFHRSAtIFwiVHJlbmRpbmdcIiBzZWN0aW9uIGl0ZW1zIGhvdmVyIHN0YXRlXCIgKi9cclxuW2NsYXNzKj0nZGFyazpob3ZlcjpiZy1ncmF5LTcwMCddIHtcclxuXHQmOmhvdmVyIHtcclxuXHRcdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtc3VyZmFjZS0yKSAhaW1wb3J0YW50O1xyXG5cdH1cclxufVxyXG5cclxuLyogW3JvbGU9J21lbnVpdGVtJ10gOmhvdmVyIHN0YXRlICovXHJcbltjbGFzcyo9J2Rhcms6aG92ZXI6YmctZ3JheS04MDAnXSxcclxuW2NsYXNzKj0nZGFyazpob3ZlcjpiZy13aGl0ZS81J10ge1xyXG5cdCY6aG92ZXIge1xyXG5cdFx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYy1zdXJmYWNlLTIpICFpbXBvcnRhbnQ7XHJcblx0XHQvLyBiYWNrZ3JvdW5kLWNvbG9yOiByZWQgIWltcG9ydGFudDtcclxuXHR9XHJcbn1cclxuXHJcbi8qIFxyXG5cdC0gR1BUUyBzdG9yZSBQQUdFIC0gXCJTZWFyY2ggcHVibGljIEdQVHNcIiBzZWFyY2ggbGlzdCBpdGVtIGJnIFxyXG5cdC0gR1BUcyBTdG9yZSBQQUdFIC0gXCJUb3AgcGlja3NcIiwgXCJEQUxMRVwiLCBcIldyaXRpbmdcIiBldGMgdGFncyBcclxuXHQtIEdQVHMgU3RvcmUgUEFHRSAtIFwiRmVhdHVyZWRcIiBzZWN0aW9uIGl0ZW1zIGJnXHJcblx0LSBHUFRzIFN0b3JlIFBBR0UgLSBCZyBmb3IgQnV0dG9ucyBsZWZ0IGFuZCByaWdodCBhcnJvdyBmb3IgXCJUb3AgcGlja3NcIiwgXCJEQUxMRVwiLCBcIldyaXRpbmdcIiBldGMgdGFncyBvbiBzbWFsbGVyIHNjcmVlbnNcclxuXHQtIElucHV0cyBpbiBcIkRlbGV0ZSBBY2NvdW50LSBBcmUgeW91IHN1cmVcIiBkaWFsb2cgICovXHJcbltjbGFzcyo9J2Rhcms6YmctZ3JheS03MDAnXSB7XHJcblx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYy1zdXJmYWNlLTIpICFpbXBvcnRhbnQ7XHJcblx0Ly8gYmFja2dyb3VuZC1jb2xvcjogcmVkICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi8qIFxyXG4tIFwiU2hhcmVkIGxpbmtzXCIgUEFHRSAtIG92ZXJhbGwgQkcgISEhIVxyXG4tIEdQVFMgc3RvcmUgUEFHRSAtIFwiU2VhcmNoIHB1YmxpYyBHUFRzXCIgc2VhcmNoIGlucHV0IGJnLiBOZW1hIGtsYXNlIHphIGxpZ2h0IHRlbXUgdGUgc2VsZWt0dWplbSBrbGFzb20gemEgZGFya3MgXHJcbi0gQmcgb2YgbWluaSBjaGF0LWJ1YmJsZSBpbiBcIlNoYXJlIGxpbmsgdG8gY2hhdFwiIGRpYWxvZy5cclxuLSBUZXh0YXJlYSBpbiBbcm9sZT1cImRpYWxvZ1wiXSAqL1xyXG5bY2xhc3MqPSdkYXJrOmJnLWdyYXktODAwJ10ge1xyXG5cdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtYmctY2hhdHMtY29udGFpbmVyKSAhaW1wb3J0YW50OyAvLyB2YXIoLS1jLXN1cmZhY2UtMylcclxuXHQvLyBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLXN1cmZhY2UtMSkgIWltcG9ydGFudDtcclxufVxyXG5cclxuLyogU2hhcmVkIGNoYXRzIFBBR0UgLSBncmVlbiBidXR0b24gXCJVcGdyYWRlIHRvIFBsdXMgdG8gY3JlYXRlIHlvdXIgb3duIEdQVFwiICovXHJcbltjbGFzcyo9J2JnLWdyZWVuLTYwMCddIHtcclxuXHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLWFjY2VudCkgIWltcG9ydGFudDtcclxuXHRjb2xvcjogdmFyKC0tYy1vbi1hY2NlbnQpICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbltjbGFzcyo9J2JnLXJlZC01MDAvMTAnXSB7XHJcblx0YmFja2dyb3VuZC1jb2xvcjogaHNsYSh2YXIoLS1kYW5nZXItaHNsKSAvIDAuMTEpICFpbXBvcnRhbnQ7XHJcblx0Y29sb3I6IHZhcigtLWMtZGFuZ2VyKSAhaW1wb3J0YW50O1xyXG5cdC8vIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtZGFuZ2VyKSAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4vKiBMaWtlIGljb24gaW4gXCJQcm92aWRlIGFkaXRpb25hbCBmZWVkYmFja1wiIGRpYWxvZyB3aGVuIGNsaWNrZWQgbGlrZWQgYW5zd2VyICovXHJcbi8vIC5iZy1ncmVlbi0xMDAge31cclxuXHJcbi5iZy1ncmFkaWVudC10by1sLFxyXG4uYmctZ3JhZGllbnQtdG8tciB7XHJcblx0LS1ncmFkaWVudC1jb2xvci1mcm9tOiB2YXIoLS1jLXN1cmZhY2UtMSk7XHJcblx0LS1ncmFkaWVudC1jb2xvci10bzogdHJhbnNwYXJlbnQ7XHJcblxyXG5cdC0tdHctZ3JhZGllbnQtZnJvbTogdmFyKC0tZ3JhZGllbnQtY29sb3ItZnJvbSkgdmFyKC0tdHctZ3JhZGllbnQtZnJvbS1wb3NpdGlvbikgIWltcG9ydGFudDtcclxuXHQtLXR3LWdyYWRpZW50LXRvOiB2YXIoLS1ncmFkaWVudC1jb2xvci10bykgdmFyKC0tdHctZ3JhZGllbnQtdG8tcG9zaXRpb24pO1xyXG59XHJcblxyXG4vKiBBY3RpdmUgbGluayBiZyBpbiBzaWRlYmFyIGxpc3RpdGVtICovXHJcbi5iZy10b2tlbi1zdXJmYWNlLXNlY29uZGFyeSB7XHJcblx0LS1zdXJmYWNlLXNlY29uZGFyeTogdmFyKC0tYy1zdXJmYWNlLTIpICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi8qIFxyXG4tIERpYWxvZ3NcclxuLSBUYWJzIGluIFwiU2V0dGluZ3NcIlxyXG4tIFRhYmxlIDx0aGVhZD4gZWxzXHJcbi0gU2hhcmUgTGluayA+IE1pbmkgY2hhdCBjb252ZXJzYXRpb25cclxuLSBDb250ZXh0IG1lbnUgaXRlbXMgaW4gU2hhcmUgTGluayA+IE1pbmkgY2hhdCBjb252ZXJzYXRpb25cclxuLSBDb250ZXh0IG1lbnUgaXRlbXMgaW4gU2V0dGluZ3MgPiBUaGVtZSBkZGwgYW5kIFRoZW1lXHJcbi0gU3RpY2t5IGhlYWRlciBcclxuLSBQcm9tcHQgdGV4dGFyZWFcclxuLSBTaWRlYmFyIENpcmNsZWQgZ3B0IGxvZ28gLSBORVdDSEFUL0NMRUFSIENIQVRcclxuLSBDaXJjbGVkIGdwdCBsb2dvIFwiSG93IGNhbiBJIGhlbHAgeW91IHRvZGF5XHJcbi0gU2Nyb2xsZG93biBidG5cclxuLSDinZMgYnRuIG9uIGJvdHRvbSByaWdodFxyXG4tIENoZWNrYm94IGNpcmNsZVxyXG4tIEdQVHMgU3RvcmUgUEFHRSAtIFNlYXJjaCBxdWVyeSBzZWN0aW9uXHJcbi0gR1BUcyBTdG9yZSBQQUdFIC0gU2VhcmNoIHF1ZXJ5IHNlY3Rpb24gbGluay1vbi1ob3ZlciAtIENIQU5HRSBJVCAhIVxyXG4gKi9cclxuW2NsYXNzKj0nYmctd2hpdGUnXSxcclxuLmJnLXRva2VuLXNpZGViYXItc3VyZmFjZS1zZWNvbmRhcnkge1xyXG5cdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtc3VyZmFjZS0yKSAhaW1wb3J0YW50O1xyXG5cdC8vIEBpbmNsdWRlIGJvcmRlckJveFNoYWRvdyhyZWQpO1xyXG5cdC8vIGJhY2tncm91bmQtY29sb3I6IHJlZDtcclxufVxyXG5cclxuLyogXHJcbi0gU2lkZWJhclxyXG4tIFNpZGViYXIgc3RpY2t5IGJlaGluZCBORVdDSEFUIGJ0blxyXG4tIFNpZGViYXIgXCJUb2RheVwiLCBcIlllc3RlcmRheVwiLi4uIHRpbWUgaGVhZGluZ3MgXHJcbi0gU2lkZWJhciB1c2VyIHByb2ZpbGUgcGljdHVyZVxyXG4tIFRvb2x0aXBcclxuLSBDaGF0R1BUIDMuNSBidG4gaW4gc3RpY2t5IGhlYWRlclxyXG4tIENvbnRleHQgbWVudSBpdGVtcyBpbiAzZG90c1xyXG4tIENvbnRleHQgbWVudSBpdGVtcyBpbiBDaGF0R1BUIDMuNVxyXG4tIE1hcmtkb3duIDxwcmU+XHJcbi0gUHJvbXB0IHRleHRhcmVhIHNlbmQgYnV0dG9uXHJcbi0gR1BUcyAtIGFjdGl2ZSBwaWxsIChcIlRvcCBQaWNrc1wiKVxyXG4gKi9cclxuW2NsYXNzKj0nYmctYmxhY2snXSxcclxuLmJnLXRva2VuLXNpZGViYXItc3VyZmFjZS1wcmltYXJ5IHtcclxuXHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLXN1cmZhY2UtMSk7XHJcblx0Ly8gQGluY2x1ZGUgYm9yZGVyQm94U2hhZG93KGxpZ2h0Z3JlZW4pO1xyXG5cdC8vIGJhY2tncm91bmQtY29sb3I6IGxpZ2h0Z3JlZW47XHJcbn1cclxuIiwiLyogPT09IEJPUkRFUiBDT0xPUlMgKi9cclxuXHJcbi8qIEJvcmRlciBpbiB0ZXh0YXJlYSBpbiBcIkN1c3RvbSBJbnN0cnVjdGlvbnNcIiBkaWFsb2cgKi9cclxuLmJvcmRlci1ncmF5LTEwMCB7XHJcblx0Ly8gYm9yZGVyLWNvbG9yOiB2YXIoLS1jLXN1cmZhY2UtMSkgIWltcG9ydGFudDtcclxuXHRib3JkZXItY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi5ib3JkZXItZ3JheS0yMDAge1xyXG5cdGJvcmRlci1jb2xvcjogdmFyKC0tYy1zdXJmYWNlLTIpICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi8qIEJvcmRlciBpbiBpbnB1dHMgaW4gXCJVcGdyYWRlIHlvdXIgUGxhblwiIGRpYWxvZyAqL1xyXG4uYm9yZGVyLWdyYXktMzAwIHtcclxuXHQvLyBib3JkZXItY29sb3I6IHJlZCAhaW1wb3J0YW50O1xyXG5cdC8vIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcclxuXHRib3JkZXI6IG5vbmU7XHJcbn1cclxuXHJcbi8qIFwiVXBncmFkZSB5b3VyIHBsYW5cIiBkaWFsb2csIFwiU2hhcmUgbGluayB0byBjaGF0XCIgZGlhbG9nIGNoYXQgbWluIGR1cGxpY2F0ZSAqL1xyXG5bY2xhc3MqPSdkYXJrOmJvcmRlci1ncmF5LTcwMCddIHtcclxuXHRib3JkZXItY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XHJcblx0Ly8gYm9yZGVyLWNvbG9yOiByZWQgIWltcG9ydGFudDtcclxufVxyXG5cclxuLyogQm9yZGVyIGluIGRpYWxvZ3MgYWZ0ZXIgbWFpbiBoZWFkaW5nIC0gREFSSyAqL1xyXG5odG1sLmRhcmsgW2NsYXNzKj0nOmJvcmRlci13aGl0ZS8xMCddIHtcclxuXHRib3JkZXItY29sb3I6IHZhcigtLWMtYm9yZGVyLWFjY2VudCkgIWltcG9ydGFudDtcclxufVxyXG5cclxuLyogQm9yZGVyIGluIGRpYWxvZ3MgYWZ0ZXIgbWFpbiBoZWFkaW5nIC0gTElHSFQgKi9cclxuaHRtbC5saWdodCBbY2xhc3MqPSc6Ym9yZGVyLXdoaXRlLzEwJ10ge1xyXG5cdGJvcmRlci1jb2xvcjogdmFyKC0tYy1ib3JkZXIpICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi8qIFwiVGhpcyBjb250ZW50IG1heSB2aW9sYXRlIGNvbnRlbnQgcG9saWN5Li4uXCIgd2FybmluZyAqL1xyXG5bY2xhc3MqPSdib3JkZXItcmVkLTUwMCddIHtcclxuXHRib3JkZXItY29sb3I6IHZhcigtLWMtZGFuZ2VyKSAhaW1wb3J0YW50O1xyXG59XHJcbiIsIi8vIFtjbGFzcyo9J3JvdW5kZWQteGwnXSB7XHJcbi8vIFx0Ym9yZGVyLXJhZGl1czogdmFyKC0tYnItYnRuLWJpZykgIWltcG9ydGFudDtcclxuLy8gXHRib3JkZXI6IDFweCBzb2xpZCByZWQgIWltcG9ydGFudDtcclxuLy8gfVxyXG4vLyBbY2xhc3MqPSdyb3VuZGVkLWxnJ10ge1xyXG4vLyBcdGJvcmRlci1yYWRpdXM6IHZhcigtLWJyLWJ0bikgIWltcG9ydGFudDtcclxuLy8gXHRib3JkZXI6IDFweCBzb2xpZCBncmVlbiAhaW1wb3J0YW50O1xyXG4vLyB9XHJcbi8vIFtjbGFzcyo9J3JvdW5kZWQtbWQnXSB7XHJcbi8vIFx0Ym9yZGVyLXJhZGl1czogdmFyKC0tYnItYnRuKSAhaW1wb3J0YW50O1xyXG4vLyBcdGJvcmRlcjogMXB4IHNvbGlkIHllbGxvdyAhaW1wb3J0YW50O1xyXG4vLyB9XHJcbi8qIFxyXG4tIFNjcm9sbCBkb3duIGJ0bi5cclxuLSBHUFRzIC0gcHJvZHVjdCBjYXJkIGNpcmNsZSBwaWN0dXJlc1xyXG4tIEdlbmVyYWwgcHJvZmlsZSBwaWM6IFwiTkVXQ0hBVFwiLCBcIlVwZ3JhZGUgUGxhblwiLCB1c2VyIHByb2ZpbGUgaW4gc2lkZWJhci5cclxuLSBDaGVjayBzd2l0Y2ggYnRuXHJcbi0gQ2xvc2Ugc2lkZWJhciBidG4gKi9cclxuLnJvdW5kZWQtZnVsbCB7XHJcblx0Ly8gQGluY2x1ZGUgYm9yZGVyQm94U2hhZG93KHJnYigyLCAwLCAxMzkpKTtcclxufVxyXG5cclxuLyogXHJcbi0gR1BUcyAtIHBpbGwgdGFncyBpbiBzdGlja3kgaGVhZGVyICovXHJcbi5yb3VuZGVkLTN4bCB7XHJcblx0Ly8gYm9yZGVyLXJhZGl1czogdmFyKC0tYnItYnRuLWJpZykgIWltcG9ydGFudDtcclxuXHQvLyBAaW5jbHVkZSBib3JkZXJCb3hTaGFkb3cocHVycGxlKTtcclxufVxyXG4vKiBcclxuLSBEaWFsb2dzXHJcbi0gQ2hhdEdQVCAzLjUgYnRuIGluIHN0aWNreSBoZWFkZXJcclxuLSBHUFRzIC0gU2VhcmNoIGlucHV0XHJcbi0gR1BUcyAtIHByb2R1Y3QgY2FyZHNcclxuLSBORVcgQ0hBVCBiaWcgYnV0dG9uc1xyXG4tIE5FVyBDSEFUIGJpZyBidG5zIG9uIGhvdmVyIHN2ZyB3cmFwcGVyIGV0Y1xyXG4tIEN1c3RvbSBJbnN0cnVjdGlvbnMgPiBcImJ1YmJsZVwiIG9uIHJpZ2h0IHNpZGUgd2hlbiB0ZXh0YXJlYSBmb2N1c2VkICovXHJcbi5yb3VuZGVkLXhsIHtcclxuXHRib3JkZXItcmFkaXVzOiB2YXIoLS1ici1idG4tYmlnKSAhaW1wb3J0YW50O1xyXG5cdC8vIEBpbmNsdWRlIGJvcmRlckJveFNoYWRvdyhyZWQpO1xyXG59XHJcblxyXG4vKiBcclxuLSBBbGwgc2lkZWJhciA8YT4gYnV0dG9ucy9saW5rc1xyXG4tIFRoZW1lIGJ0bixcclxuLSBTVkdzOiBTaGFyZSBMaW5rLCBTZW5kIGJ0biBpbiBwb21wdC10ZXh0YXJlYSwgIFxyXG4tIEdQVHMgLSBzdGlja3kgYnRucyBcIkdsb2JhbCB2aWV3XCIgYW5kIFwiTXkgR1BUc1wiXHJcbi0gR1BUcyAtIHNlYXJjaCBxdWVyeSBzZWN0aW9uIHByb2R1Y3QgY2FyZHMvaXRlbXMgXHJcbi0gVG9hc3Qgcm9vdCBub3RpZnlcclxuLSAgKi9cclxuLnJvdW5kZWQtbGcge1xyXG5cdGJvcmRlci1yYWRpdXM6IHZhcigtLWJyLWJ0bikgIWltcG9ydGFudDtcclxuXHQvLyBAaW5jbHVkZSBib3JkZXJCb3hTaGFkb3cob3JhbmdlKTtcclxufVxyXG5cclxuLypcclxuLSBTbWFsbCBidG5zIGluIGNoYXQgZm9vdGVyLlxyXG4tIDxwcmU+XHJcbi0gVGFiIGJ0bnMgaW4gZGlhbG9nLlxyXG4tIGNvbnRleHRtZW51LWl0ZW1zIGluIFwiVGhlbWVcIiBkZGxcclxuLSBcIldhcyB0aGlzIHJlc3BvbnNlIGJldHRlciBvciB3b3JzZT8g8J+RjfCfkY5cIiBlbCB3aGVuIGNsaWNrZWQgb24gcmVnZW5lcmF0ZSBhbnN3ZXIgYnRuIGFuZCBpdHMgaW5uZXIgYnV0dG9ucyAqL1xyXG4ucm91bmRlZC1tZCB7XHJcblx0Ym9yZGVyLXJhZGl1czogdmFyKC0tYnItYnRuKSAhaW1wb3J0YW50O1xyXG5cdC8vIEBpbmNsdWRlIGJvcmRlckJveFNoYWRvdyh5ZWxsb3cpO1xyXG59XHJcblxyXG4vKlxyXG4tIFRleHRhcmVhIGluIGRpYWxvZy5cclxuLSBtZW51aXRlbXMgaW4gQ2hhdEdQVCAzLjUgY29udGV4dG1lbnUgYW5kIGNvbnRleHRtZW51IGluIDNkb3RzIGluIHNpZGViYXIgIChcIlNoYXJlXCIsIFwiUmVuYW1lXCIsIFwiRGVsZXRlXCIpICovXHJcbi5yb3VuZGVkIHtcclxuXHRib3JkZXItcmFkaXVzOiB2YXIoLS1ici1idG4pICFpbXBvcnRhbnQ7XHJcblx0Ly8gQGluY2x1ZGUgYm9yZGVyQm94U2hhZG93KGxpZ2h0Z3JlZW4pO1xyXG59XHJcblxyXG4ucm91bmRlZC10LW1kIHtcclxuXHQvLyBvdmVyZmxvdzogY2xpcCAhaW1wb3J0YW50O1xyXG5cdGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IHZhcigtLWJyLWJ0bikgIWltcG9ydGFudDtcclxuXHRib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogdmFyKC0tYnItYnRuKSAhaW1wb3J0YW50O1xyXG59XHJcbi5yb3VuZGVkLWItbWQge1xyXG5cdC8vIG92ZXJmbG93OiBjbGlwICFpbXBvcnRhbnQ7XHJcblx0Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogdmFyKC0tYnItYnRuKSAhaW1wb3J0YW50O1xyXG5cdGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiB2YXIoLS1ici1idG4pICFpbXBvcnRhbnQ7XHJcbn1cclxuIiwiLyohXHJcbiAgVGhlbWU6IFJvc8OpIFBpbmUgTW9vblxyXG4gIEF1dGhvcjogRW1pbGlhIER1bmZlbHQgPHNheWhpQGR1bmZlbHQuc2U+XHJcbiAgTGljZW5zZTogfiBNSVQgKG9yIG1vcmUgcGVybWlzc2l2ZSkgW3ZpYSBiYXNlMTYtc2NoZW1lcy1zb3VyY2VdXHJcbiAgTWFpbnRhaW5lcjogQGhpZ2hsaWdodGpzL2NvcmUtdGVhbVxyXG4gIFZlcnNpb246IDIwMjEuMDkuMFxyXG4qL1xyXG5cclxuLypcclxuICBXQVJOSU5HOiBETyBOT1QgRURJVCBUSElTIEZJTEUgRElSRUNUTFkuXHJcblxyXG4gIFRoaXMgdGhlbWUgZmlsZSB3YXMgYXV0by1nZW5lcmF0ZWQgZnJvbSB0aGUgQmFzZTE2IHNjaGVtZSByb3MtcGluZS1tb29uXHJcbiAgYnkgdGhlIEhpZ2hsaWdodC5qcyBCYXNlMTYgdGVtcGxhdGUgYnVpbGRlci5cclxuXHJcbiAgLSBodHRwczovL2dpdGh1Yi5jb20vaGlnaGxpZ2h0anMvYmFzZTE2LWhpZ2hsaWdodGpzXHJcbiovXHJcblxyXG4vKlxyXG5iYXNlMDAgICMyMzIxMzYgIERlZmF1bHQgQmFja2dyb3VuZFxyXG5iYXNlMDEgICMyYTI3M2YgIExpZ2h0ZXIgQmFja2dyb3VuZCAoVXNlZCBmb3Igc3RhdHVzIGJhcnMsIGxpbmUgbnVtYmVyIGFuZCBmb2xkaW5nIG1hcmtzKVxyXG5iYXNlMDIgICMzOTM1NTIgIFNlbGVjdGlvbiBCYWNrZ3JvdW5kXHJcbmJhc2UwMyAgIzU5NTQ2ZCAgQ29tbWVudHMsIEludmlzaWJsZXMsIExpbmUgSGlnaGxpZ2h0aW5nXHJcbmJhc2UwNCAgIzgxN2M5YyAgRGFyayBGb3JlZ3JvdW5kIChVc2VkIGZvciBzdGF0dXMgYmFycylcclxuYmFzZTA1ICAjZTBkZWY0ICBEZWZhdWx0IEZvcmVncm91bmQsIENhcmV0LCBEZWxpbWl0ZXJzLCBPcGVyYXRvcnNcclxuYmFzZTA2ICAjZjVmNWY3ICBMaWdodCBGb3JlZ3JvdW5kIChOb3Qgb2Z0ZW4gdXNlZClcclxuYmFzZTA3ICAjZDlkN2UxICBMaWdodCBCYWNrZ3JvdW5kIChOb3Qgb2Z0ZW4gdXNlZClcclxuYmFzZTA4ICAjZWNlYmYwICBWYXJpYWJsZXMsIFhNTCBUYWdzLCBNYXJrdXAgTGluayBUZXh0LCBNYXJrdXAgTGlzdHMsIERpZmYgRGVsZXRlZFxyXG5iYXNlMDkgICNlYjZmOTIgIEludGVnZXJzLCBCb29sZWFuLCBDb25zdGFudHMsIFhNTCBBdHRyaWJ1dGVzLCBNYXJrdXAgTGluayBVcmxcclxuYmFzZTBBICAjZjZjMTc3ICBDbGFzc2VzLCBNYXJrdXAgQm9sZCwgU2VhcmNoIFRleHQgQmFja2dyb3VuZFxyXG5iYXNlMEIgICNlYTlhOTcgIFN0cmluZ3MsIEluaGVyaXRlZCBDbGFzcywgTWFya3VwIENvZGUsIERpZmYgSW5zZXJ0ZWRcclxuYmFzZTBDICAjM2U4ZmIwICBTdXBwb3J0LCBSZWd1bGFyIEV4cHJlc3Npb25zLCBFc2NhcGUgQ2hhcmFjdGVycywgTWFya3VwIFF1b3Rlc1xyXG5iYXNlMEQgICM5Y2NmZDggIEZ1bmN0aW9ucywgTWV0aG9kcywgQXR0cmlidXRlIElEcywgSGVhZGluZ3NcclxuYmFzZTBFICAjYzRhN2U3ICBLZXl3b3JkcywgU3RvcmFnZSwgU2VsZWN0b3IsIE1hcmt1cCBJdGFsaWMsIERpZmYgQ2hhbmdlZFxyXG5iYXNlMEYgICNiOWI5YmMgIERlcHJlY2F0ZWQsIE9wZW5pbmcvQ2xvc2luZyBFbWJlZGRlZCBMYW5ndWFnZSBUYWdzLCBlLmcuIDw/cGhwID8+XHJcbiovXHJcbnByZSB7XHJcblx0LS1jLWJnLXByZTogIzIzMjEzNjtcclxufVxyXG5wcmUgY29kZS5obGpzIHtcclxuXHRkaXNwbGF5OiBibG9jaztcclxuXHRvdmVyZmxvdy14OiBhdXRvO1xyXG5cdHBhZGRpbmc6IDFlbTtcclxufVxyXG5cclxuY29kZS5obGpzIHtcclxuXHRwYWRkaW5nOiAzcHggNXB4O1xyXG59XHJcblxyXG4uaGxqcyxcclxuLyogbWFya2Rvd24gcHJlICovXHJcbnByZSAuYmctdG9rZW4tbWFpbi1zdXJmYWNlLXNlY29uZGFyeSxcclxuLyogbWFya2Rvd24gaGVhZGVyIC0gbGFuZyBuYW1lIGFuZCBjb3B5IGJ0biAqL1xyXG5wcmUgLmJnLXRva2VuLW1haW4tc3VyZmFjZS1zZWNvbmRhcnk+ZGl2Omhhcyg+IHNwYW4pIHtcclxuXHRjb2xvcjogI2UwZGVmNCAhaW1wb3J0YW50O1xyXG5cdGJhY2tncm91bmQ6IHZhcigtLWMtYmctcHJlKSAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4uaGxqczo6c2VsZWN0aW9uLFxyXG4uaGxqcyA6OnNlbGVjdGlvbiB7XHJcblx0YmFja2dyb3VuZC1jb2xvcjogIzM5MzU1MiAhaW1wb3J0YW50O1xyXG5cdGNvbG9yOiAjZTBkZWY0ICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi8qIHB1cnBvc2VseSBkbyBub3QgaGlnaGxpZ2h0IHRoZXNlIHRoaW5ncyAqL1xyXG4uaGxqcy1mb3JtdWxhLFxyXG4uaGxqcy1wYXJhbXMsXHJcbi5obGpzLXByb3BlcnR5IHtcclxufVxyXG5cclxuLyogYmFzZTAzIC0gIzU5NTQ2ZCAtICBDb21tZW50cywgSW52aXNpYmxlcywgTGluZSBIaWdobGlnaHRpbmcgKi9cclxuLmhsanMtY29tbWVudCB7XHJcblx0Y29sb3I6ICM1OTU0NmQgIWltcG9ydGFudDtcclxufVxyXG5cclxuLyogYmFzZTA0IC0gIzgxN2M5YyAtICBEYXJrIEZvcmVncm91bmQgKFVzZWQgZm9yIHN0YXR1cyBiYXJzKSAqL1xyXG4uaGxqcy10YWcge1xyXG5cdGNvbG9yOiAjODE3YzljICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi8qIGJhc2UwNSAtICNlMGRlZjQgLSAgRGVmYXVsdCBGb3JlZ3JvdW5kLCBDYXJldCwgRGVsaW1pdGVycywgT3BlcmF0b3JzICovXHJcbi5obGpzLXN1YnN0LFxyXG4uaGxqcy1wdW5jdHVhdGlvbixcclxuLmhsanMtb3BlcmF0b3Ige1xyXG5cdGNvbG9yOiAjZTBkZWY0ICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi5obGpzLW9wZXJhdG9yIHtcclxuXHRvcGFjaXR5OiAwLjc7XHJcbn1cclxuXHJcbi8qIGJhc2UwOCAtIFZhcmlhYmxlcywgWE1MIFRhZ3MsIE1hcmt1cCBMaW5rIFRleHQsIE1hcmt1cCBMaXN0cywgRGlmZiBEZWxldGVkICovXHJcbi5obGpzLWJ1bGxldCxcclxuLmhsanMtdmFyaWFibGUsXHJcbi5obGpzLXRlbXBsYXRlLXZhcmlhYmxlLFxyXG4uaGxqcy1zZWxlY3Rvci10YWcsXHJcbi5obGpzLW5hbWUsXHJcbi5obGpzLWRlbGV0aW9uIHtcclxuXHRjb2xvcjogI2VjZWJmMCAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4vKiBiYXNlMDkgLSBJbnRlZ2VycywgQm9vbGVhbiwgQ29uc3RhbnRzLCBYTUwgQXR0cmlidXRlcywgTWFya3VwIExpbmsgVXJsICovXHJcbi5obGpzLXN5bWJvbCxcclxuLmhsanMtbnVtYmVyLFxyXG4uaGxqcy1saW5rLFxyXG4uaGxqcy1hdHRyLFxyXG4uaGxqcy12YXJpYWJsZS5jb25zdGFudF8sXHJcbi5obGpzLWxpdGVyYWwge1xyXG5cdGNvbG9yOiAjZWI2ZjkyICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi8qIGJhc2UwQSAtIENsYXNzZXMsIE1hcmt1cCBCb2xkLCBTZWFyY2ggVGV4dCBCYWNrZ3JvdW5kICovXHJcbi5obGpzLXRpdGxlLFxyXG4uaGxqcy1jbGFzcyAuaGxqcy10aXRsZSxcclxuLmhsanMtdGl0bGUuY2xhc3NfIHtcclxuXHRjb2xvcjogI2Y2YzE3NyAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4uaGxqcy1zdHJvbmcge1xyXG5cdGZvbnQtd2VpZ2h0OiBib2xkO1xyXG5cdGNvbG9yOiAjZjZjMTc3ICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi8qIGJhc2UwQiAtIFN0cmluZ3MsIEluaGVyaXRlZCBDbGFzcywgTWFya3VwIENvZGUsIERpZmYgSW5zZXJ0ZWQgKi9cclxuLmhsanMtY29kZSxcclxuLmhsanMtYWRkaXRpb24sXHJcbi5obGpzLXRpdGxlLmNsYXNzXy5pbmhlcml0ZWRfXyxcclxuLmhsanMtc3RyaW5nIHtcclxuXHRjb2xvcjogI2VhOWE5NyAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4vKiBiYXNlMEMgLSBTdXBwb3J0LCBSZWd1bGFyIEV4cHJlc3Npb25zLCBFc2NhcGUgQ2hhcmFjdGVycywgTWFya3VwIFF1b3RlcyAqL1xyXG4uaGxqcy1idWlsdF9pbixcclxuLmhsanMtZG9jdGFnLFxyXG4vKiBndWVzc2luZyAqL1xyXG4uaGxqcy1xdW90ZSxcclxuLmhsanMta2V5d29yZC5obGpzLWF0cnVsZSxcclxuLmhsanMtcmVnZXhwIHtcclxuXHRjb2xvcjogIzNlOGZiMCAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4vKiBiYXNlMEQgLSBGdW5jdGlvbnMsIE1ldGhvZHMsIEF0dHJpYnV0ZSBJRHMsIEhlYWRpbmdzICovXHJcbi5obGpzLWZ1bmN0aW9uIC5obGpzLXRpdGxlLFxyXG4uaGxqcy1hdHRyaWJ1dGUsXHJcbi5ydWJ5IC5obGpzLXByb3BlcnR5LFxyXG4uaGxqcy10aXRsZS5mdW5jdGlvbl8sXHJcbi5obGpzLXNlY3Rpb24ge1xyXG5cdGNvbG9yOiAjOWNjZmQ4ICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi8qIGJhc2UwRSAtIEtleXdvcmRzLCBTdG9yYWdlLCBTZWxlY3RvciwgTWFya3VwIEl0YWxpYywgRGlmZiBDaGFuZ2VkICovXHJcbi5obGpzLXR5cGUsXHJcbi8qIC5obGpzLXNlbGVjdG9yLWlkLCAqL1xyXG4vKiAuaGxqcy1zZWxlY3Rvci1jbGFzcywgKi9cclxuLyogLmhsanMtc2VsZWN0b3ItYXR0ciwgKi9cclxuLyogLmhsanMtc2VsZWN0b3ItcHNldWRvLCAqL1xyXG4uaGxqcy10ZW1wbGF0ZS10YWcsXHJcbi5kaWZmIC5obGpzLW1ldGEsXHJcbi5obGpzLWtleXdvcmQge1xyXG5cdGNvbG9yOiAjYzRhN2U3ICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi5obGpzLWVtcGhhc2lzIHtcclxuXHRjb2xvcjogI2M0YTdlNyAhaW1wb3J0YW50O1xyXG5cdGZvbnQtc3R5bGU6IGl0YWxpYztcclxufVxyXG5cclxuLyogYmFzZTBGIC0gRGVwcmVjYXRlZCwgT3BlbmluZy9DbG9zaW5nIEVtYmVkZGVkIExhbmd1YWdlIFRhZ3MsIGUuZy4gPD9waHAgPz4gKi9cclxuLmhsanMtbWV0YSxcclxuLypcclxuICAgIHByZXZlbnQgdG9wIGxldmVsIC5rZXl3b3JkIGFuZCAuc3RyaW5nIHNjb3Blc1xyXG4gICAgZnJvbSBsZWFraW5nIGludG8gbWV0YSBieSBhY2NpZGVudFxyXG4gICovXHJcbi5obGpzLW1ldGEgLmhsanMta2V5d29yZCxcclxuLmhsanMtbWV0YSAuaGxqcy1zdHJpbmcge1xyXG5cdGNvbG9yOiAjYjliOWJjICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi5obGpzLW1ldGEgLmhsanMta2V5d29yZCxcclxuLyogZm9yIHYxMCBjb21wYXRpYmxlIHRoZW1lcyAqL1xyXG4uaGxqcy1tZXRhLWtleXdvcmQge1xyXG5cdGZvbnQtd2VpZ2h0OiBib2xkO1xyXG59XHJcbiIsIi8qXHJcbiAgSVJfQmxhY2sgc3R5bGUgKGMpIFZhc2lseSBNaWtoYWlsaXRjaGVua28gPHZhc2thc0Bwcm9ncmFtaWNhLnJ1PlxyXG4qL1xyXG5odG1sLmRhcmtbZGF0YS1ncHRoZW1lPSdvbGVkJ10ge1xyXG5cdC5obGpzIHtcclxuXHRcdGJhY2tncm91bmQ6IHZhcigtLWMtYmctcHJlKSAhaW1wb3J0YW50O1xyXG5cdFx0Y29sb3I6ICNmOGY4ZjggIWltcG9ydGFudDtcclxuXHR9XHJcblxyXG5cdC5obGpzLWNvbW1lbnQsXHJcblx0LmhsanMtcXVvdGUsXHJcblx0LmhsanMtbWV0YSB7XHJcblx0XHRjb2xvcjogIzdjN2M3YyAhaW1wb3J0YW50O1xyXG5cdH1cclxuXHJcblx0LmhsanMta2V5d29yZCxcclxuXHQuaGxqcy1zZWxlY3Rvci10YWcsXHJcblx0LmhsanMtdGFnLFxyXG5cdC5obGpzLW5hbWUge1xyXG5cdFx0Y29sb3I6ICM5NmNiZmUgIWltcG9ydGFudDtcclxuXHR9XHJcblxyXG5cdC5obGpzLWF0dHJpYnV0ZSxcclxuXHQuaGxqcy1zZWxlY3Rvci1pZCB7XHJcblx0XHRjb2xvcjogI2ZmZmZiNiAhaW1wb3J0YW50O1xyXG5cdH1cclxuXHJcblx0LmhsanMtc3RyaW5nLFxyXG5cdC5obGpzLXNlbGVjdG9yLWF0dHIsXHJcblx0LmhsanMtc2VsZWN0b3ItcHNldWRvLFxyXG5cdC5obGpzLWFkZGl0aW9uIHtcclxuXHRcdGNvbG9yOiAjYThmZjYwICFpbXBvcnRhbnQ7XHJcblx0fVxyXG5cclxuXHQuaGxqcy1zdWJzdCB7XHJcblx0XHRjb2xvcjogI2RhZWZhMyAhaW1wb3J0YW50O1xyXG5cdH1cclxuXHJcblx0LmhsanMtcmVnZXhwLFxyXG5cdC5obGpzLWxpbmsge1xyXG5cdFx0Y29sb3I6ICNlOWMwNjIgIWltcG9ydGFudDtcclxuXHR9XHJcblxyXG5cdC5obGpzLXRpdGxlLFxyXG5cdC5obGpzLXNlY3Rpb24sXHJcblx0LmhsanMtdHlwZSxcclxuXHQuaGxqcy1kb2N0YWcge1xyXG5cdFx0Y29sb3I6ICNmZmZmYjYgIWltcG9ydGFudDtcclxuXHR9XHJcblxyXG5cdC5obGpzLXN5bWJvbCxcclxuXHQuaGxqcy1idWxsZXQsXHJcblx0LmhsanMtdmFyaWFibGUsXHJcblx0LmhsanMtdGVtcGxhdGUtdmFyaWFibGUsXHJcblx0LmhsanMtbGl0ZXJhbCB7XHJcblx0XHRjb2xvcjogI2M2YzVmZSAhaW1wb3J0YW50O1xyXG5cdH1cclxuXHJcblx0LmhsanMtbnVtYmVyLFxyXG5cdC5obGpzLWRlbGV0aW9uIHtcclxuXHRcdGNvbG9yOiAjZmY3M2ZkICFpbXBvcnRhbnQ7XHJcblx0fVxyXG5cclxuXHQuaGxqcy1lbXBoYXNpcyB7XHJcblx0XHRmb250LXN0eWxlOiBpdGFsaWM7XHJcblx0fVxyXG5cclxuXHQuaGxqcy1zdHJvbmcge1xyXG5cdFx0Zm9udC13ZWlnaHQ6IGJvbGQ7XHJcblx0fVxyXG59XHJcbiIsIiosXHJcbjphZnRlcixcclxuOmJlZm9yZSB7XHJcblx0LS10dy1yaW5nLWNvbG9yOiBoc2woXHJcblx0XHR2YXIoLS1hY2NlbnQtaCksXHJcblx0XHRjYWxjKHZhcigtLWFjY2VudC1zKSAvIDEuNSksXHJcblx0XHR2YXIoLS1hY2NlbnQtbClcclxuXHQpICFpbXBvcnRhbnQ7IC8vIG91dCBib3JkZXIgKGJveC1zaGFkb3cpIG9uIGRpYWxvZyBidG5zIGNvbG9yXHJcblx0LS10dy1yaW5nLW9mZnNldC1jb2xvcjogdmFyKC0tYy1iZy1kaWFsb2cpICFpbXBvcnRhbnQ7IC8vIGlubmVyIGJvcmRlciBvbiBkaWFsb2cgYnRucyBjb2xvclxyXG59XHJcblxyXG4vKlxyXG4gICAgYnV0dG9ucywgc3dpdGNoIGJ0bnMsIHN2ZyBidXR0b25zLCBpbnB1dCwgbWVudWl0ZW0gKG5vIGJ0bnMgaW4gZGlhbG9nIHRobywgaXQgaXMgc3BlY2lhbCBzdHlsZSB3LyAtLXR3LXJpbmctY29sb3IgYW5kIC0tdHctcmluZy1vZmZzZXQtY29sb3IgdmFycykgYm9yZGVyL291dGxpbmUgb24ga2V5Ym9hcmQgZm9jdXMgb3IgOmZvY3VzLXZpc2libGVcclxuKi9cclxuLy8gOmlzKGJ1dHRvbiwgYSwgW3JvbGU9XCJtZW51aXRlbVwiXTpub3QoW2NsYXNzKj1cInRleHQtcmVkLVwiXSksIFtyb2xlPVwiZGlhbG9nXCJdIHRleHRhcmVhKTpub3QoLmJ0bi1wcmltYXJ5LCAuYnRuLW5ldXRyYWwsIHRleHRhcmVhI3Byb21wdC10ZXh0YXJlYSkge1xyXG4vLyAgICAgJjpmb2N1cy12aXNpYmxlIHtcclxuLy8gICAgICAgICBvdXRsaW5lOiAyLjVweCBzb2xpZCBoc2wodmFyKC0tYWNjZW50LWgpLCBjYWxjKHZhcigtLWFjY2VudC1zKSAvIDEuNSksIHZhcigtLWFjY2VudC1sKSk7XHJcbi8vICAgICB9XHJcbi8vIH1cclxuXHJcbi8qIFxyXG5UaGVtZSBkcm9wZG93biBkZW8gaW1hIHplbGVuaSBib3JkZXIgemEgOmZvY3VzLXZpc2libGUuXHJcbiAgLSBbYXJpYS1sYWJlbD1cIkRlbGV0ZSBzaGFyZWQgbGlua1wiXSBpcyByZWN5Y2xlIHN2ZyBpY29uIGluIFwiU2hhcmVkIGxpbmtcIiB0YWJsZVxyXG4gIC0gLmJ0bi1uZXV0cmFsOm5vdChbcm9sZT1cImNvbWJvYm94XCJdIGlzIGluIHRoZW1lIGRyb3Bkb3duIFwiRGFyay9MaWdodC9TeXN0ZW1cIiBidXR0b25cIikgXHJcbiovXHJcbjpmb2N1cy12aXNpYmxlOm5vdChcclxuXHRcdC5idG4tcHJpbWFyeSxcclxuXHRcdC5idG4tZGFuZ2VyLFxyXG5cdFx0LmJ0bi1uZXV0cmFsOm5vdChbcm9sZT0nY29tYm9ib3gnXSwgLmJnLXRva2VuLXN1cmZhY2UtdGVydGlhcnkgaW5wdXQpLFxyXG5cdFx0dGV4dGFyZWEsXHJcblx0XHRpbnB1dCxcclxuXHRcdFthcmlhLWxhYmVsPSdEZWxldGUgc2hhcmVkIGxpbmsnXSxcclxuXHRcdFtjbGFzcyo9J3RleHQtcmVkLSddXHJcblx0KSB7XHJcblx0b3V0bGluZTogMi41cHggc29saWQgaHNsKHZhcigtLWFjY2VudC1oKSwgY2FsYyh2YXIoLS1hY2NlbnQtcykgLyAxLjUpLCB2YXIoLS1hY2NlbnQtbCkpO1xyXG59XHJcblxyXG46Zm9jdXMtdmlzaWJsZTppcyguYnRuLW5ldXRyYWxbcm9sZT0nY29tYm9ib3gnXSkge1xyXG5cdGJvcmRlcjogbm9uZSAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4vKiDwn5eR77iPIFJlY3ljbGUgaWNvbiBpbiBcIlNoYXJlZCBsaW5rXCIgdGFibGUgKi9cclxuOmZvY3VzLXZpc2libGU6aXMoW2FyaWEtbGFiZWw9J0RlbGV0ZSBzaGFyZWQgbGluayddLCBbY2xhc3MqPSd0ZXh0LXJlZC0nXSkge1xyXG5cdC0tdHctcmluZy1jb2xvcjogdmFyKC0tYy1kYW5nZXIpICFpbXBvcnRhbnQ7XHJcblx0Ly8gLS10dy1yaW5nLWNvbG9yOiB2YXIoLS1jLWRhbmdlcikgIWltcG9ydGFudDtcclxuXHRvdXRsaW5lOiAyLjVweCBzb2xpZCB2YXIoLS1jLWRhbmdlcikgIWltcG9ydGFudDtcclxufVxyXG5cclxuLmJ0bi1kYW5nZXIge1xyXG5cdC0tdHctcmluZy1jb2xvcjogdmFyKC0tYy1kYW5nZXIpICFpbXBvcnRhbnQ7XHJcblx0Ly8gb3V0bGluZTogMi41cHggc29saWQgdmFyKC0tYy1kYW5nZXIpICFpbXBvcnRhbnQ7XHJcblxyXG5cdC8vICY6Zm9jdXMge1xyXG5cdC8vICAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS1jLWJnLWRpYWxvZykgIWltcG9ydGFudDtcclxuXHQvLyB9XHJcbn1cclxuXHJcbmlucHV0IHtcclxufVxyXG4iLCJbcm9sZT1cInNlcGFyYXRvclwiXSB7XHJcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWMtYm9yZGVyKSAhaW1wb3J0YW50O1xyXG59IiwiaW5wdXRbdHlwZT0nY2hlY2tib3gnXSB7XHJcblx0cGFkZGluZzogN3B4ICFpbXBvcnRhbnQ7XHJcblx0Ym9yZGVyOiAycHggc29saWQgdmFyKC0tYy1hY2NlbnQpICFpbXBvcnRhbnQ7XHJcblx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcclxuXHRib3JkZXItcmFkaXVzOiA0cHg7XHJcblxyXG5cdCY6Y2hlY2tlZCB7XHJcblx0XHRhY2NlbnQtY29sb3I6IHZhcigtLWMtYWNjZW50KSAhaW1wb3J0YW50O1xyXG5cdFx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYy1hY2NlbnQpICFpbXBvcnRhbnQ7XHJcblx0fVxyXG59XHJcblxyXG4vKiBcIlNlbGVjdCB5b3VyIFRlYW0gUGxhblwiIGRpYWxvZyByYWRpbyBidXR0b25zIHdoZW4gY2xpY2tpbmcgXCJVcGdyYWRlIHBsYW5cIiA+IFwiVGVhbVwiICovXHJcbmJ1dHRvbltyb2xlPSdyYWRpbyddIHtcclxuXHRib3JkZXItY29sb3I6IHZhcigtLWMtYWNjZW50KSAhaW1wb3J0YW50O1xyXG5cclxuXHQmW2RhdGEtc3RhdGU9J2NoZWNrZWQnXSB7XHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLWFjY2VudCk7XHJcblx0fVxyXG5cclxuXHRzdmcge1xyXG5cdFx0Y29sb3I6IHZhcigtLWMtb24tYWNjZW50KSAhaW1wb3J0YW50O1xyXG5cdH1cclxufVxyXG4iLCJbcm9sZT0nbWVudSddIHtcclxuXHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLWJnLWNvbnRleHRtZW51KSAhaW1wb3J0YW50O1xyXG5cdGJvcmRlci1yYWRpdXM6IHZhcigtLWJyLWNvbnRleHRtZW51KSAhaW1wb3J0YW50O1xyXG5cdC8vIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50O1xyXG5cdHBhZGRpbmc6IHZhcigtLXAtY29udGV4dG1lbnUpICFpbXBvcnRhbnQ7XHJcblx0Ly8gYm9yZGVyOiAxcHggc29saWQgaHNsYSh2YXIoLS1hY2NlbnQtaHNsKSAvIDAuMikgIWltcG9ydGFudDtcclxuXHRib3gtc2hhZG93OiB2YXIoLS1ib3gtc2hhZG93LWNvbnRleHRtZW51KSAhaW1wb3J0YW50O1xyXG5cdC8vIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0O1xyXG5cclxuXHQmOm5vdChuYXZbYXJpYS1sYWJlbD0nQ2hhdCBoaXN0b3J5J10gLmdyb3VwW2RhdGEtaGVhZGxlc3N1aS1zdGF0ZV0gW3JvbGU9J21lbnUnXSkge1xyXG5cdFx0QGV4dGVuZCAlYW5pbUZhZGVJbkNsaXBQYXRoO1xyXG5cdH1cclxuXHJcblx0W3JvbGU9J21lbnVpdGVtJ10ge1xyXG5cdFx0YmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdCAhaW1wb3J0YW50O1xyXG5cdFx0cGFkZGluZzogdmFyKC0tcC1jb250ZXh0bWVudS1pdGVtKSAhaW1wb3J0YW50O1xyXG5cdFx0Ym9yZGVyLXJhZGl1czogdmFyKC0tYnItYnRuKSAhaW1wb3J0YW50O1xyXG5cdFx0dHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjNzIGVhc2UtaW4tb3V0LCBjb2xvciAwLjNzIGVhc2UtaW4tb3V0O1xyXG5cclxuXHRcdC8qIFRPRE8gZGFyazpob3ZlcjpiZy13aGl0ZS81ICAgaW1hIHZlYyB1IGdsb2JhbHUuIFZpZGV0aSBkYSBsaSBvYnJpc2F0aSBvdmFoIGhvdmVyIGkgb3N0YXZpdGkgb25haiB0YW1vIHNhbW8uIFJpemljbm8gamUgbWFsbywgc3RhIGFrbyBzZSBwcm9tZW5pIHRhIGtsYXNhICovXHJcblx0XHQmOmhvdmVyIHtcclxuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYy1zdXJmYWNlLTIpICFpbXBvcnRhbnQ7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKiBSZW1vdmUgcGFkZGluZyBmb3IgbWVudSBpbiBzaWRlYmFyIGJvdHRvbSAqL1xyXG5cdG5hdiB7XHJcblx0XHRwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XHJcblx0fVxyXG5cclxuXHQmOmhhcyhhW2hyZWY9XCJodHRwczovL29wZW5haS5jb20vcG9saWNpZXNcIl0pXHJcblx0e1xyXG5cdFx0YTpmaXJzdC1jaGlsZCBzcGFuIHtcclxuXHRcdFx0Y29sb3I6IHZhcigtLWMtYWNjZW50KSAhaW1wb3J0YW50O1xyXG5cdFx0XHRmb250LXdlaWdodDogYm9sZDtcclxuXHRcdH1cclxuXHR9XHJcbn1cclxuXHJcbi8vIFRPRE8gY2hlY2sgaWYgdGhpcyBicm9rZSBzb21ldGhpbmcgZWxzZSBiZWNhdXNlIGl0IGlzIHRoZSBlbGVtZW50IGhhcmQgZm9yIHRhcmdldGluZ1xyXG4vKiBcIk5ldyBDaGF0XCIgeHMgaW4gY29udGV4dG1lbnUgaW4gQ2hhdEdQVCAzLjUgKi9cclxuW2RhdGEtcmFkaXgtcG9wcGVyLWNvbnRlbnQtd3JhcHBlcl0gLmFic29sdXRlLnJpZ2h0LTExIHtcclxuXHQtLXN2Zy13OiAyNHB4O1xyXG5cdC0tZ2FwLWZyb20tc3ZnOiAyMHB4O1xyXG5cdHJpZ2h0OiBjYWxjKFxyXG5cdFx0dmFyKC0tcC1jb250ZXh0bWVudSkgKyB2YXIoLS1zdmctdykgKyB2YXIoLS1nYXAtZnJvbS1zdmcpXHJcblx0KSAhaW1wb3J0YW50OyAvLyBwLWNvbnRleHRtZW51ID0gMTBweCwgc3ZnLXcgPSAyNHB4LCBnYXAtZnJvbS1zdmcgPSAyMHB4ID0gKDEwcHggKyAyNHB4ICsgMjBweCkgPSA1NHB4LiBUaGlzIGlzIGNhbGN1bGF0ZWQgc3BhY2luZyBvZiBcIk5ldyBDaGF0XCIgaW4gY29udGV4dG1lbnUgaW4gQ2hhdEdQVCAzLjUgYW5kIHJpZ2h0IGVkZ2UgaW4gY29udGV4dG1lbnVpdGVtXHJcbn1cclxuXHJcbi8qIF9fIE1PREFMIC0gQ2hvb3NlIHRoZW1lIGNvbnRleHQgbWVudSAmIHRvb2x0aXBzPyAgKi9cclxuZGl2W2RhdGEtcmFkaXgtcG9wcGVyLWNvbnRlbnQtd3JhcHBlcl0ge1xyXG5cdHotaW5kZXg6IGNhbGModmFyKC0tei1tb2RhbCkgKyA1MCkgIWltcG9ydGFudDtcclxuXHQvLyB6LWluZGV4OiAyMDAgIWltcG9ydGFudDtcclxuXHJcblx0LyogXCJDdXN0b20gSW5zdHJ1Y3Rpb25zXCIgZGlhbG9nICovXHJcblx0JjpoYXMoW3JvbGU9J2RpYWxvZyddKSB7XHJcblx0XHQvKiBcIkN1c3RvbSBJbnN0cnVjdGlvbnNcIiBkaWFsb2cgY29udGV4dCBtZW51IHZpc2libGUgb24gdGV4dGFyZWEgZm9jdXMgKi9cclxuXHRcdFtyb2xlPSdkaWFsb2cnXSB7XHJcblx0XHRcdC0tYm94LXNoYWRvdzogdmFyKC0tYm94LXNoYWRvdy1jb250ZXh0bWVudSkgIWltcG9ydGFudDtcclxuXHRcdFx0Ly8gYm94LXNoYWRvdzogdmFyKC0tYm94LXNoYWRvdy1jb250ZXh0bWVudSkgIWltcG9ydGFudDtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qIE1vcmEgbm90IHJvbGU9bWVudSBkYSBuZSBiaWggc2VsZWt0b3ZhbGEgaSBvbmFqIGNvbnRleHRtZW51IHUgc2lkZWJhciBrYWQgc2Uga2xpa25lIG5hIHByb21wdCBsaXN0aXRlbSAzIGRvdHMgemEgb3BjaWplIGkgZGl2W2RhdGEtcmFkaXgtcG9wcGVyLWNvbnRlbnQtd3JhcHBlcl06aGFzKFtyb2xlPSd0b29sdGlwJ10pIGRhIG5lIGJpaCBzZWxla3RvdmFsYSB0b29sdGlwICovXHJcblx0Jjpub3QoXHJcblx0XHRcdGRpdltkYXRhLXJhZGl4LXBvcHBlci1jb250ZW50LXdyYXBwZXJdOmhhcyhkaXZbcm9sZT0nbWVudSddKSxcclxuXHRcdFx0ZGl2W2RhdGEtcmFkaXgtcG9wcGVyLWNvbnRlbnQtd3JhcHBlcl06aGFzKFtyb2xlPSd0b29sdGlwJ10pXHJcblx0XHQpIHtcclxuXHRcdEBleHRlbmQgJWFuaW1GYWRlSW5DbGlwUGF0aDtcclxuXHR9XHJcblxyXG5cdC8qIENvbnRleHQgbWVudSBiZyAqL1xyXG5cdC8vIC5iZy13aGl0ZSB7XHJcblx0Ly8gLmJnLXRva2VuLXBvcG92ZXItc3VyZmFjZS1wcmltYXJ5XHJcblx0W3JvbGU9J2xpc3Rib3gnXSB7XHJcblx0XHQvLyBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLWJnLWNvbnRleHRtZW51KSAhaW1wb3J0YW50O1xyXG5cdFx0cGFkZGluZzogdmFyKC0tcC1jb250ZXh0bWVudSkgIWltcG9ydGFudDtcclxuXHRcdGJvcmRlci1yYWRpdXM6IHZhcigtLWJyLWNvbnRleHRtZW51KSAhaW1wb3J0YW50O1xyXG5cdFx0Ym94LXNoYWRvdzogdmFyKC0tYm94LXNoYWRvdy1jb250ZXh0bWVudSkgIWltcG9ydGFudDtcclxuXHRcdG92ZXJmbG93OiB2aXNpYmxlICFpbXBvcnRhbnQ7IC8vIGZvciB3aGF0IGlzIHRoaXM/IGhoaFxyXG5cdFx0Ym9yZGVyOiBub25lO1xyXG5cdH1cclxuXHJcblx0W2RhdGEtcmFkaXgtY29sbGVjdGlvbi1pdGVtXSB7XHJcblx0XHRib3JkZXItcmFkaXVzOiB2YXIoLS1ici1idG4pO1xyXG5cdFx0cGFkZGluZzogdmFyKC0tcC1jb250ZXh0bWVudS1pdGVtKSAhaW1wb3J0YW50O1xyXG5cdFx0aGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XHJcblx0XHRtYXJnaW4tYm90dG9tOiA0cHg7XHJcblx0XHRvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50O1xyXG5cdFx0b3V0bGluZTogbm9uZSAhaW1wb3J0YW50O1xyXG5cdH1cclxuXHJcblx0LyogTU9EQUwgLSBDaG9vc2UgdGhlbWUgY29udGV4dCBtZW51aXRlbSBob3ZlciAqL1xyXG5cdFtkYXRhLXJhZGl4LWNvbGxlY3Rpb24taXRlbV1bZGF0YS1zdGF0ZT0ndW5jaGVja2VkJ10ge1xyXG5cdFx0Jjpob3ZlciB7XHJcblx0XHRcdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtc3VyZmFjZS0yKSAhaW1wb3J0YW50O1xyXG5cdFx0XHRvdXRsaW5lOiBub25lICFpbXBvcnRhbnQ7IC8vIFRPRE8gdGhpcyBpcyB0ZW1wIGZpeC4gVGhpcyBlY2F1c2UgdGhlcmUgd2VyZSBzb21ld2hpdGUgdWdsdSBvdXRsaW5lIG9uIGhvdmVyLiBCdXQgdGhpcyBhbHNvIGJyZWFrcyA6Zm9jdXMtdmlzaWJsZSBhY2Nlc3NpYmlsaXR5IHN0eWxlLi4uXHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKiBNT0RBTCAtIENob29zZSB0aGVtZSBjb250ZXh0IG1lbnVpdGVtIGhvdmVyIGFjdGl2ZSAqL1xyXG5cdFtkYXRhLXN0YXRlPSdjaGVja2VkJ10ge1xyXG5cdFx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYy1iZy1idG4pICFpbXBvcnRhbnQ7XHJcblx0XHRjb2xvcjogdmFyKC0tYy1vbi1hY2NlbnQpICFpbXBvcnRhbnQ7XHJcblx0fVxyXG59XHJcblxyXG4vLyAuZGF0YS1yYWRpeC1wb3BwZXItY29udGVudC13cmFwcGVyIHtcclxuLy8gXHQvLyB6LWluZGV4OiBjYWxjKHZhcigtLXotbW9kYWwpICsgMjAwKSAhaW1wb3J0YW50O1xyXG4vLyBcdHotaW5kZXg6IDIwMCAhaW1wb3J0YW50O1xyXG4vLyB9XHJcbiIsIi8qIFNpZGViYXIgYmctY29sb3IgKi9cclxuLmJnLXRva2VuLXNpZGViYXItc3VyZmFjZS1wcmltYXJ5OmhhcyhuYXZbYXJpYS1sYWJlbD0nQ2hhdCBoaXN0b3J5J10pIHtcclxuXHQvKiAtLXN1cmZhY2UtcHJpbWFyeSBmaXggZGFyay9ibGFjayBjb2xvciBmb3IgYTpob3ZlciBzdGF0ZXMgKi9cclxuXHQvLyAtLXN1cmZhY2UtcHJpbWFyeTogdmFyKC0tYy1zdXJmYWNlLTIpICFpbXBvcnRhbnQ7XHJcblx0Ly8gLS1zdXJmYWNlLXByaW1hcnk6IHJlZCAhaW1wb3J0YW50O1xyXG5cdGNvbG9yOiB2YXIoLS1jLXR4dCkgIWltcG9ydGFudDtcclxuXHQvLyBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLWJnLXNpZGViYXIpICFpbXBvcnRhbnQ7XHJcblxyXG5cdC8qIEZpeCB3aGl0ZSB0eHQgb24gXCJORVcgQ0hBVFwiIGluIHNpZGViYXIgZm9yIGxpZ2h0IGVzcGVjaWFsbHkgKi9cclxuXHRuYXYgYSA+ICoge1xyXG5cdFx0Y29sb3I6IHZhcigtLWMtdHh0KSAhaW1wb3J0YW50O1xyXG5cdH1cclxufVxyXG5cclxubmF2W2FyaWEtbGFiZWw9J0NoYXQgaGlzdG9yeSddIHtcclxuXHRwYWRkaW5nOiB2YXIoLS1wLXNpZGViYXItbmF2KSAhaW1wb3J0YW50O1xyXG5cclxuXHQvLyAhIFN0cmFuZ2UgYmxhY2sgcmVjdGFuZ2xlICguYmctYmxhY2sgY2xhc3MpIG92ZXIgXCJOZXcgQ2hhdFwiIGJ0biB3aGVuIG9uIGxpbmtzOiBodHRwczovL2NoYXQub3BlbmFpLmNvbS9ncHRzL2Rpc2NvdmVyeSBhbmQgaHR0cHM6Ly9jaGF0Lm9wZW5haS5jb20vZy9nLVVCWVRLV2tQalxyXG5cdC8qIC5zdGlja3kuYmctYmxhY2s6aGFzKGFbaHJlZj0nLyddKSB7XHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLWJnLXNpZGViYXIpO1xyXG5cdFx0cGFkZGluZy1ib3R0b206IDFyZW0gIWltcG9ydGFudDtcclxuXHR9ICovXHJcblxyXG5cdC8qIFBhcmVudCBvZiBcIk5FVyBDSEFUXCIgYnRuICovXHJcblx0LnN0aWNreSB7XHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLWJnLXNpZGViYXIpICFpbXBvcnRhbnQ7XHJcblx0XHRiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMHB4KSAhaW1wb3J0YW50O1xyXG5cdFx0bWFyZ2luLWJvdHRvbTogMC41cmVtICFpbXBvcnRhbnQ7XHJcblx0XHRwYWRkaW5nLWJvdHRvbTogMC41cmVtO1xyXG5cdH1cclxuXHJcblx0LyogQ0xFQVIgQ0hBVFMgZGl2IC0gVmlzaWJsZSB3aGVuIHVuY2hlY2tlZCBcIkNoYXQgbGVhcm5pbmcgJiBUcmFpbmluZ1wiIGluIFNldHRpbmdzICovXHJcblx0LmFic29sdXRlLmxlZnQtMC50b3AtMC5vdmVyZmxvdy1oaWRkZW4ge1xyXG5cdFx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYy1iZy1zaWRlYmFyKSAhaW1wb3J0YW50O1xyXG5cdFx0b3ZlcmZsb3cteTogc2Nyb2xsO1xyXG5cclxuXHRcdG1pbi1oZWlnaHQ6IDUwdmggIWltcG9ydGFudDtcclxuXHJcblx0XHQuYmctZ3JhZGllbnQtdG8tdCB7XHJcblx0XHRcdG9wYWNpdHk6IDA7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKiBORVcgQ0hBVCArIExJU1Qgb2YgY2hhdHMgaW4gbmF2LiBBZGRpbmcgcGFkZGluZy1sZWZ0IHByZXZlbnQgOmZvY3VzLXZpc2libGUgc3R5bGUgaW4gdGhvc2UgZWxlbWVudHMgdG8gYmUgY3JvcHBlZCBmcm9tIHRoZSBsZWZ0IGJlY2F1c2Ugb2YgdGhlIG92ZXJmbG93LWhpZGRlbiAqL1xyXG5cdC5vdmVyZmxvdy15LWF1dG8ge1xyXG5cdFx0cGFkZGluZy1sZWZ0OiAwLjNyZW0gIWltcG9ydGFudDtcclxuXHJcblx0XHQvKiBZb3VyIEZpcmVmb3gtc3BlY2lmaWMgc3R5bGVzIGhlcmUgKi9cclxuXHRcdEAtbW96LWRvY3VtZW50IHVybC1wcmVmaXgoKSB7XHJcblx0XHRcdHBhZGRpbmctcmlnaHQ6IDAuOHJlbSAhaW1wb3J0YW50OyAvLyB0aGlzIGFkZCBvbmx5IGZvciBGaXJlZm94XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKlxyXG5cdFBhcmVudCBvZiB0aW1lIGhlYWRpbmcgKG9mIFRvZGF5LCBZZXN0ZXJkYXkpIGluIHNpZGViYXIuXHJcblx0ISBkaXY6aGFzKD4gaDMpICBpcyBzZWxlY3RvciBmb3IgdGhlIHNhbWUgYnV0IGluIEdQVHMgcGFnZSAhISEgKi9cclxuXHRbZGF0YS1wcm9qZWN0aW9uLWlkXTpoYXMoaDMpLFxyXG5cdGRpdjpoYXMoPiBoMykge1xyXG5cdFx0bWFyZ2luLXRvcDogMS41cmVtICFpbXBvcnRhbnQ7XHJcblx0XHRtYXJnaW4tYm90dG9tOiAwLjNyZW0gIWltcG9ydGFudDtcclxuXHJcblx0XHQvKiBUb2RheSwgWWVzdGVyZGF5IC0gVGltZSBoZWFkaW5nIGluIHNpZGViYXIgKi9cclxuXHRcdGgzIHtcclxuXHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnQ7XHJcblx0XHRcdGNvbG9yOiB2YXIoLS1jLWFjY2VudCkgIWltcG9ydGFudDtcclxuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogaHNsKHZhcigtLWFjY2VudC1oc2wpIC8gMC4yKSAhaW1wb3J0YW50O1xyXG5cdFx0XHRib3JkZXItcmFkaXVzOiAxMDB2dztcclxuXHRcdFx0dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcclxuXHRcdFx0Zm9udC13ZWlnaHQ6IGJvbGQ7XHJcblx0XHRcdHBhZGRpbmc6IDAuNXJlbSAxcmVtICFpbXBvcnRhbnQ7XHJcblx0XHRcdGhlaWdodDogYXV0byAhaW1wb3J0YW50O1xyXG5cdFx0XHRsaW5lLWhlaWdodDogMSAhaW1wb3J0YW50O1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0YSB7XHJcblx0XHRjb2xvcjogdmFyKC0tYy10eHQpICFpbXBvcnRhbnQ7XHJcblx0XHRwYWRkaW5nOiB2YXIoLS1wLXNpZGViYXItbmF2LWEpICFpbXBvcnRhbnQ7XHJcblx0XHRmb250LWZhbWlseTogdmFyKC0tZi1mbSkgIWltcG9ydGFudDtcclxuXHRcdGJvcmRlci1yYWRpdXM6IHZhcigtLWJyLW5hdi1hKSAhaW1wb3J0YW50O1xyXG5cdFx0Ly8gYm9yZGVyLXJhZGl1czogaW5oZXJpdCAhaW1wb3J0YW50O1xyXG5cclxuXHRcdHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4zcyBlYXNlLWluLW91dDtcclxuXHJcblx0XHQvKiBcIk5ldyBDaGF0XCIgbGluayAoZmlyc3QgaW4gbmF2IGluIHNpZGViYXIpICovXHJcblx0XHQmW2hyZWY9Jy8nXSB7XHJcblx0XHRcdGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLWMtc3VyZmFjZS0yKTtcclxuXHRcdFx0cGFkZGluZzogdmFyKC0tcC1zaWRlYmFyLW5hdi1hLW5ldy1jaGF0KSAhaW1wb3J0YW50O1xyXG5cdFx0XHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8qIFwiVXBncmFkZVwiIGxpbmsgaW4gbmF2IGJnICovXHJcblx0XHRzcGFuLnJvdW5kZWQtZnVsbC5ib3JkZXItdG9rZW4tYm9yZGVyLWxpZ2h0IHtcclxuXHRcdFx0Ym9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xyXG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLWFjY2VudCkgIWltcG9ydGFudDtcclxuXHJcblx0XHRcdC8qIFNWRyBpY29uIGluIFwiVXBncmFkZVwiIGxpbmsgaW4gbmF2ICovXHJcblx0XHRcdCYgPiBzdmcge1xyXG5cdFx0XHRcdGNvbG9yOiB2YXIoLS1jLW9uLWFjY2VudCkgIWltcG9ydGFudDtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0bGkge1xyXG5cdFx0bWFyZ2luLWJvdHRvbTogdmFyKC0tbWItc2lkZWJhci1uYXYtbGkpICFpbXBvcnRhbnQ7XHJcblxyXG5cdFx0Lmdyb3VwIHtcclxuXHRcdFx0LS1kdXJhdGlvbi10cmFuczogMC4zcztcclxuXHRcdFx0LS1kdXJhdGlvbi1hbmltOiAwLjJzO1xyXG5cdFx0XHRvdmVyZmxvdzogaGlkZGVuO1xyXG5cclxuXHRcdFx0Ji5iZy10b2tlbi1zaWRlYmFyLXN1cmZhY2Utc2Vjb25kYXJ5LFxyXG5cdFx0XHQmLmJnLXRva2VuLXNpZGViYXItc3VyZmFjZS1wcmltYXJ5IHtcclxuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLXN1cmZhY2UtMikgIWltcG9ydGFudDtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0LyogVE9ETyBtb3pkYSBkb2RhdGkgb3BldCB1IGJ1ZHVjbm9zdGkuIFNhZCBuZW1hIHBvZW50ZSwgamVyIHRleHQgcGFyZW50IGltYSBvdmVyZmxvdyBoaWRkZW4gaSBpc2VjZSBjaXRhdiB0ZXh0LCBhIG92YSBhbmltYWNpamEgZ2Egc3Zha2FrbyBvcGV0IHNhbW8gcHJpa2F6ZSBvbm9saWtpIGtvbGlraSBqZS4gQWtvIHN0YXZpbSBvdmVybG93OiB2aXNpYmxlIG5hIGhvdmVyLCBhbmltYWNpamEgamUgcmF6bGljaXRvIHByaW1lbmplbmEgbmEgc3Zha2kgZWxlbWVudCwgcG9zdG8gamUgd2lkdGggemEgc3Zha2kgZWVsZW1lbnQgcmF6bGljaXQgdSB6YXZpc25vc3RpIG9kIGR1emluZSB0ZXh0YSwgaSBhbmltYWNpamEgbmUgbW96ZSBzYSBpc3RpbSBkdXJhdGlvbm9tIGRhIGJ1ZGUgaXN0YSwgYSBzYWRyemFqIHRyZWJhIG1ub2dvIHZpc2UgZGEgc2Ugc2tyb2x1amUuIEEgbmUgemVsaW0gam9zIGRhIGtvcmlzdGltIGphdmFzY3JpcHQgemEgZmV0Y2h2YW5qZSB3aWR0aC1hIHN2YWtvZyBlbGVtZW50YSBwb3NlYm5vIGkgb25kYSBwb3NlYm5pIGR1cmF0aW9uIHphIHN2YWtpIGVsZW1lbnQgdSB6YXZpc25vc3RpIG9kIGR1emluZSB0ZXh0YS4gQSBpIHByZW9wdGVyZXRpbGEgYmkgc2UgZXh0ZW56aWphIGRhIGx1cHVqZW0ga3JveiBzdmFraSBlbGVtZW50LCBjaXRhbSBwb2RhdGtlIGkgZG9kYWplbSBhbmltYWNpanUsIHNhbW8gemFyYWQgdG9nIGVmZWt0YS4gTmlqZSB2cmVkbm8gKi9cclxuXHRcdFx0Ly8gJjpob3ZlciB7XHJcblx0XHRcdC8vIFx0LyogQW5pbSBsb25nIChhbGwgYWN0dWFsbHkpIHR4dCB0byBzY3JvbGwgbGVmdCB0byBiZSBzaG93biB3aG9sZSAqL1xyXG5cdFx0XHQvLyBcdGFbaHJlZl49Jy9jLyddID4gZGl2LnJlbGF0aXZlLmdyb3cub3ZlcmZsb3ctaGlkZGVuLndoaXRlc3BhY2Utbm93cmFwIHtcclxuXHRcdFx0Ly8gXHRcdGFuaW1hdGlvbjogYW5pbVNjcm9sbFRleHQgM3MgJGVhc2VJbk91dFNpbmUgYmFja3dhcmRzO1xyXG5cdFx0XHQvLyBcdH1cclxuXHRcdFx0Ly8gfVxyXG5cclxuXHRcdFx0LyogM2RvdHMgYnRuICovXHJcblx0XHRcdGJ1dHRvbiB7XHJcblx0XHRcdFx0Y29sb3I6IHZhcigtLWMtdHh0KSAhaW1wb3J0YW50O1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQvKiBBcmNoaXZlIGJ0biAqL1xyXG5cdFx0XHRzcGFuIHtcclxuXHRcdFx0XHRidXR0b24ge1xyXG5cdFx0XHRcdFx0Y29sb3I6IHZhcigtLWMtc3VidGV4dC0xKSAhaW1wb3J0YW50O1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0LyogQWN0aXZlLWxpbmsgMy1kb3RzIGFuZCBhcmNoaXZlIGJ0bnMgd3JhcHBlciAqL1xyXG5cdFx0XHQmID4gZGl2LmFic29sdXRlIHtcclxuXHRcdFx0XHRAZXh0ZW5kICVzaWRlYmFyX2xpbmtfaXRlbV9idG5zX2JnO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRhW2hyZWZePScvYy8nXSB7XHJcblx0XHRcdFx0LyogJiA+IGRpdi5yZWxhdGl2ZS5ncm93Lm92ZXJmbG93LWhpZGRlbi53aGl0ZXNwYWNlLW5vd3JhcCB7XHJcblx0XHRcdFx0XHR3aWxsLWNoYW5nZTogdHJhbnNmb3JtO1xyXG5cdFx0XHRcdH0gKi9cclxuXHRcdFx0XHQvKiAhIE5PVyBgLmJnLXRva2VuLXN1cmZhY2UtcHJpbWFyeWAgSVMgREVMRVRFRCBCWSBPUEVOQUkgZmZzKi9cclxuXHRcdFx0XHQvKiBTZWxlY3RlZC9hY3RpdmUvaG92ZXIgbGluayBpdGVtICovXHJcblx0XHRcdFx0Ly8gJi5iZy10b2tlbi1zdXJmYWNlLXByaW1hcnkge1xyXG5cdFx0XHRcdC8vICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLXN1cmZhY2UtMikgIWltcG9ydGFudDtcclxuXHJcblx0XHRcdFx0Ly8gICAgIC8qIDMgZG90cyBidG4gYmctZ3JhZGllbnQgKi9cclxuXHRcdFx0XHQvLyAgICAgLmJnLWdyYWRpZW50LXRvLWwge1xyXG5cdFx0XHRcdC8vICAgICAgICAgb3BhY2l0eTogMSAhaW1wb3J0YW50O1xyXG5cdFx0XHRcdC8vICAgICB9XHJcblx0XHRcdFx0Ly8gfVxyXG5cclxuXHRcdFx0XHQvKiAzIGRvdHMgYnRuIGJnLWdyYWRpZW50IC0gPGRpdj4gdSA8YT4gaSA8ZGl2PiB1IDxidXR0b24+ICovXHJcblx0XHRcdFx0LmJnLWdyYWRpZW50LXRvLWwge1xyXG5cdFx0XHRcdFx0ZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xyXG5cdFx0XHRcdFx0Ly8gYm9yZGVyOiAycHggc29saWQgcmVkICFpbXBvcnRhbnQ7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQvKiAzIGRvdHMgPiBcIlJlbmFtZVwiIGNsaWNrZWQgLSBzdHlsZSBvZiBpbnB1dCBwYXJlbnQgYW5kIGlucHV0ICAtIHRoaXMgaXMgPGRpdj4gbmV4dCB0byA8YT4gKi9cclxuXHRcdFx0LmJnLXRva2VuLXN1cmZhY2UtdGVydGlhcnkge1xyXG5cdFx0XHRcdHBhZGRpbmc6IHZhcigtLXAtc2lkZWJhci1uYXYtYSkgIWltcG9ydGFudDtcclxuXHRcdFx0XHRjb2xvcjogdmFyKC0tYy10eHQpICFpbXBvcnRhbnQ7XHJcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogdmFyKFxyXG5cdFx0XHRcdFx0LS1jLXN1cmZhY2UtM1xyXG5cdFx0XHRcdCkgIWltcG9ydGFudDsgLy8gTk9URTogYmcgY2FuJ3QgYmUgdHJhbnNwYXJlbnQtaXNoOyBpdCBjYXVzZSB0eHQgYmVoaW5kIHRvIGJlIHZpc2libGVcclxuXHRcdFx0XHRib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jLWJvcmRlcikgIWltcG9ydGFudDtcclxuXHRcdFx0XHRib3JkZXItcmFkaXVzOiB2YXIoLS1ici1uYXYtYSkgIWltcG9ydGFudDtcclxuXHJcblx0XHRcdFx0LyogVGhpcyBtYWtlIGl0IGZ1bGwgd2lkdGggb2YgPGxpPiwgZnJvbSBsZWZ0IHRvIHJpZ2h0ICovXHJcblx0XHRcdFx0bGVmdDogMCAhaW1wb3J0YW50O1xyXG5cdFx0XHRcdHJpZ2h0OiAwICFpbXBvcnRhbnQ7XHJcblxyXG5cdFx0XHRcdC8qIFJlbmFtZSBpbnB1dC5cclxuICAgICAgICAgICAgICAgICAgICAhIERPIE5PVCBUT1VDSCBQQURESU5HISBUWFQgQkVISU5EIEdPSU4gVE8gQkUgVklTSUJMRS4gV1RGPz8/IFxyXG4gICAgICAgICAgICAgICAgKi9cclxuXHRcdFx0XHRpbnB1dCB7XHJcblx0XHRcdFx0XHQvLyBpbnB1dCByZW5hbWUgYm9yZGVyIGNvbG9yIG9uIGZvY3VzZWRcclxuXHRcdFx0XHRcdC0tdHctcmluZy1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcclxuXHRcdFx0XHRcdGNhcmV0LWNvbG9yOiB2YXIoLS1jLWFjY2VudCk7XHJcblx0XHRcdFx0XHRib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcclxuXHRcdFx0XHRcdG91dGxpbmU6IG5vbmUgIWltcG9ydGFudDtcclxuXHRcdFx0XHRcdGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8vIFRPRE8gYWRkIGJldHRlciBzdHlsaW5nIHRvIHRoaXMgYnRuXHJcblx0LyogVXNlciBwcm9maWxlIGJ0biBpbiBzaWRlYmFyIGJvdHRvbSAqL1xyXG5cdC5ncm91cFtkYXRhLWhlYWRsZXNzdWktc3RhdGVdIHtcclxuXHRcdC8qIFVzZXIgcHJvZmlsZSBidG4gaW4gc2lkZWJhciBib3R0b20gKi9cclxuXHRcdGJ1dHRvblthcmlhLWhhc3BvcHVwPSd0cnVlJ10ge1xyXG5cdFx0XHRib3JkZXItcmFkaXVzOiB2YXIoLS1ici1uYXYtYSk7XHJcblx0XHRcdG1hcmdpbi10b3A6IDFyZW07XHJcblxyXG5cdFx0XHQvKiBVc2VybmFtZSBkaXYgKi9cclxuXHRcdFx0LmZvbnQtc2VtaWJvbGQge1xyXG5cdFx0XHRcdGNvbG9yOiB2YXIoLS1jLXR4dCkgIWltcG9ydGFudDtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdC8qIFNpZGViYXIgYm90dG9tIC0gTG9nIE91dCAgKi9cclxuXHRcdFtyb2xlPSdtZW51J10ge1xyXG5cdFx0XHRhbmltYXRpb246IG5vbmUgIWltcG9ydGFudDtcclxuXHRcdFx0Ly8gdHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzIGVhc2UtaW4tb3V0LCB0cmFuc2Zvcm0gMC4zcyBlYXNlLWluLW91dDtcclxuXHRcdFx0dHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzIGVhc2UtaW4tb3V0LCB0cmFuc2Zvcm0gMC4zcyBlYXNlLWluLW91dDtcclxuXHJcblx0XHRcdFtyb2xlPSdtZW51aXRlbSddOmxhc3QtY2hpbGQge1xyXG5cdFx0XHRcdGNvbG9yOiB2YXIoLS1jLWRhbmdlcikgIWltcG9ydGFudDtcclxuXHJcblx0XHRcdFx0c3ZnIHtcclxuXHRcdFx0XHRcdGNvbG9yOiB2YXIoLS1jLWRhbmdlcikgIWltcG9ydGFudDtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qICBCb3JkZXItcmFkaXVzIGZvciBhbGwgZWxlbWVudHMgdGhhdCBoYXZlIC5yb3VuZGVkLWxnIGNsYXNzIGluIDxuYXY+IG9mIHNpZGViYXIuIEFMaSBvbiB6ZXpuZSBib3JkZXItcmFkaXVzdSBpIGNvbnRleHRtZW51IHUgYm90dG9tIHNpZGViYXIgamVyIGkgb24gaW1hIG92dSBrbGFzdS4gWmF0byBzYWQgZG9kYWplbSA8bGk+ICovXHJcblx0Ly8gVE9ETyBtb3pkYSBtb2d1IG9icmlzYXRpLCBha28gZ2xvYmFsIG9zdGFuZSBpc3RhIG92YVxyXG5cdC5yb3VuZGVkLWxnIHtcclxuXHRcdGJvcmRlci1yYWRpdXM6IHZhcigtLWJyLW5hdi1hKSAhaW1wb3J0YW50O1xyXG5cdH1cclxufVxyXG4iLCIucHJvc2Uge1xyXG5cdC8vIC0tdHctcHJvc2UtY29kZTogY3VycmVudENvbG9yICFpbXBvcnRhbnQ7IC8vIENvZGUgdGV4dCBpbiBtYXJrZG93blxyXG5cdC8vIC0tdHctcHJvc2UtYm9sZDogY3VycmVudENvbG9yICFpbXBvcnRhbnQ7IC8vIEJvbGQgdGV4dCBpbiBtYXJrZG93blxyXG5cdGNvbG9yOiB2YXIoLS1jLXR4dCkgIWltcG9ydGFudDtcclxuXHRmb250LXNpemU6IDFyZW0gIWltcG9ydGFudDtcclxuXHJcblx0LS10dy1wcm9zZS1ib2R5OiB2YXIoLS1jLXR4dCkgIWltcG9ydGFudDtcclxuXHQtLXR3LXByb3NlLWhlYWRpbmdzOiB2YXIoLS1jLWFjY2VudCkgIWltcG9ydGFudDtcclxuXHQvLyAtLXR3LXByb3NlLWxlYWQ6IHJlZCAhaW1wb3J0YW50O1xyXG5cdC0tdHctcHJvc2UtbGlua3M6IHZhcigtLWMtYWNjZW50KSAhaW1wb3J0YW50O1xyXG5cdC0tdHctcHJvc2UtYm9sZDogY3VycmVudENvbG9yICFpbXBvcnRhbnQ7XHJcblx0LS10dy1wcm9zZS1jb3VudGVyczogdmFyKC0tYy1hY2NlbnQpICFpbXBvcnRhbnQ7XHJcblx0LS10dy1wcm9zZS1idWxsZXRzOiB2YXIoLS1jLWFjY2VudCkgIWltcG9ydGFudDtcclxuXHQtLXR3LXByb3NlLWhyOiB2YXIoLS1jLWJvcmRlcikgIWltcG9ydGFudDtcclxuXHQtLXR3LXByb3NlLXF1b3RlczogdmFyKC0tYy1zdWJ0ZXh0LTIpICFpbXBvcnRhbnQ7XHJcblx0LS10dy1wcm9zZS1xdW90ZS1ib3JkZXJzOiB2YXIoLS1jLXN1YnRleHQtMikgIWltcG9ydGFudDtcclxuXHQvLyAtLXR3LXByb3NlLWNhcHRpb25zOiByZWQgIWltcG9ydGFudDtcclxuXHQtLXR3LXByb3NlLWNvZGU6IGN1cnJlbnRDb2RlICFpbXBvcnRhbnQ7XHJcblx0Ly8gLS10dy1wcm9zZS1wcmUtY29kZTogdmFyKC0tYy1hY2NlbnQpICFpbXBvcnRhbnQ7XHJcblx0LS10dy1wcm9zZS10aC1ib3JkZXJzOiB2YXIoLS1jLWJvcmRlcikgIWltcG9ydGFudDtcclxuXHQtLXR3LXByb3NlLXRkLWJvcmRlcnM6IHZhcigtLWMtYm9yZGVyKSAhaW1wb3J0YW50O1xyXG5cclxuXHQvKiBfX19Gb3IgRGFyayB0aGVtZT8/PyAqL1xyXG5cdC0tdHctcHJvc2UtaW52ZXJ0LWJvZHk6IHZhcigtLWMtdHh0KSAhaW1wb3J0YW50O1xyXG5cdC0tdHctcHJvc2UtaW52ZXJ0LWhlYWRpbmdzOiB2YXIoLS1jLWFjY2VudCkgIWltcG9ydGFudDtcclxuXHQvLyAtLXR3LXByb3NlLWludmVydC1sZWFkOiAjOWNhM2FmICFpbXBvcnRhbnQ7XHJcblx0LS10dy1wcm9zZS1pbnZlcnQtbGlua3M6IHZhcigtLWMtYWNjZW50KSAhaW1wb3J0YW50O1xyXG5cdC0tdHctcHJvc2UtaW52ZXJ0LWJvbGQ6IGN1cnJlbnRDb2xvciAhaW1wb3J0YW50O1xyXG5cdC0tdHctcHJvc2UtaW52ZXJ0LWNvdW50ZXJzOiB2YXIoLS1jLWFjY2VudCkgIWltcG9ydGFudDtcclxuXHQtLXR3LXByb3NlLWludmVydC1idWxsZXRzOiB2YXIoLS1jLWFjY2VudCkgIWltcG9ydGFudDtcclxuXHQtLXR3LXByb3NlLWludmVydC1ocjogdmFyKC0tYy1ib3JkZXIpICFpbXBvcnRhbnQ7XHJcblx0LS10dy1wcm9zZS1pbnZlcnQtcXVvdGVzOiB2YXIoLS1jLXN1YnRleHQtMikgIWltcG9ydGFudDtcclxuXHQtLXR3LXByb3NlLWludmVydC1xdW90ZS1ib3JkZXJzOiB2YXIoLS1jLXN1YnRleHQtMikgIWltcG9ydGFudDtcclxuXHQvLyAtLXR3LXByb3NlLWludmVydC1jYXB0aW9uczogIzljYTNhZiAhaW1wb3J0YW50O1xyXG5cdC0tdHctcHJvc2UtaW52ZXJ0LWNvZGU6IGN1cnJlbnRDb2xvciAhaW1wb3J0YW50O1xyXG5cdC8vIC0tdHctcHJvc2UtaW52ZXJ0LXByZS1jb2RlOiB2YXIoLS1jLWFjY2VudCkgIWltcG9ydGFudDtcclxuXHQvLyAtLXR3LXByb3NlLWludmVydC1wcmUtYmc6IHJlZCAhaW1wb3J0YW50O1xyXG5cdC0tdHctcHJvc2UtaW52ZXJ0LXRoLWJvcmRlcnM6IHZhcigtLWMtYm9yZGVyKSAhaW1wb3J0YW50O1xyXG5cdC0tdHctcHJvc2UtaW52ZXJ0LXRkLWJvcmRlcnM6IHZhcigtLWMtYm9yZGVyKSAhaW1wb3J0YW50O1xyXG5cclxuXHQvKiBNYXJrZG93biBMaW5rcyByZW5kZXJlZCBpbiBHUFQgYW5zd2VycyAqL1xyXG5cdGEge1xyXG5cdFx0QGV4dGVuZCAlbGlua19ob3Zlcl91bmRlcmxpbmVkO1xyXG5cdH1cclxuXHJcblx0LyogU3R5bGUgTWFya2Rvd24gQ2hlY2tib3hlcyAqL1xyXG5cdGlucHV0W3R5cGU9J2NoZWNrYm94J10ge1xyXG5cdFx0cGFkZGluZzogN3B4ICFpbXBvcnRhbnQ7XHJcblx0XHRib3JkZXI6IDJweCBzb2xpZCB2YXIoLS1jLWFjY2VudCkgIWltcG9ydGFudDtcclxuXHRcdGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XHJcblx0XHRib3JkZXItcmFkaXVzOiA0cHg7XHJcblxyXG5cdFx0JjpjaGVja2VkIHtcclxuXHRcdFx0YWNjZW50LWNvbG9yOiB2YXIoLS1jLWFjY2VudCkgIWltcG9ydGFudDtcclxuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYy1hY2NlbnQpICFpbXBvcnRhbnQ7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHR0YWJsZSB7XHJcblx0XHQvKiBUT0RPIC0gdGhpcyBvdmVyZmxvdyBjYXVzZSBjdXR0aW5nIHRoZSBib3JkZXIgZWRnZXMgb2YgbGF0ZXN0IDx0cj4gY2hpbGQsIHd0Zi4gU28gSSBoYXZlIHRvIGFkZCBib3JkZXIgdG8gPHRhYmxlPiBhbHNvIChkb3duIHdoZXJlIDx0aD4sIDx0ZD4gYXJlKSAqL1xyXG5cdFx0b3ZlcmZsb3c6IGhpZGRlbjtcclxuXHRcdGJvcmRlci1yYWRpdXM6IHZhcigtLWJyLWJ0bikgIWltcG9ydGFudDtcclxuXHJcblx0XHR0aGVhZCB7XHJcblx0XHRcdC0tdHctcHJvc2UtaGVhZGluZ3M6IHZhcigtLWMtdHh0KSAhaW1wb3J0YW50O1xyXG5cclxuXHRcdFx0Ym9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZSAhaW1wb3J0YW50O1xyXG5cdFx0XHRib3JkZXItc3BhY2luZzogMCAhaW1wb3J0YW50O1xyXG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBoc2xhKHZhcigtLXR4dC1oc2wpIC8gMC4xNSkgIWltcG9ydGFudDtcclxuXHRcdFx0Ly8gYmFja2dyb3VuZC1jb2xvcjogaHNsYSh2YXIoLS1hY2NlbnQtaHNsKSAvIC4xNSkgIWltcG9ydGFudDtcclxuXHRcdFx0dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcclxuXHRcdFx0Zm9udC1zaXplOiAwLjhyZW0gIWltcG9ydGFudDtcclxuXHRcdH1cclxuXHJcblx0XHQmLFxyXG5cdFx0dGgsXHJcblx0XHR0ZCB7XHJcblx0XHRcdGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWMtYm9yZGVyKSAhaW1wb3J0YW50O1xyXG5cdFx0fVxyXG5cclxuXHRcdHRoLFxyXG5cdFx0dGQge1xyXG5cdFx0XHRwYWRkaW5nOiAwLjVyZW0gIWltcG9ydGFudDtcclxuXHRcdH1cclxuXHJcblx0XHQvKiBNYWtlIG9kZCByb3dzIGRhcmtlciAqL1xyXG5cdFx0dGJvZHkgdHI6bnRoLWNoaWxkKDJuKSB7XHJcblx0XHRcdGJhY2tncm91bmQtY29sb3I6IGhzbGEodmFyKC0tdHh0LWhzbCkgLyAwLjAzKSAhaW1wb3J0YW50O1xyXG5cdFx0fVxyXG5cdH1cclxufVxyXG5cclxuLyogVGhlYWQgY29sb3IgZm9yIERhcmsgdGhlbWUgKi9cclxuaHRtbC5kYXJrIC5wcm9zZSB7XHJcblx0dGFibGUgdGhlYWQge1xyXG5cdFx0LS10dy1wcm9zZS1oZWFkaW5nczogdmFyKC0tYy1vbi1hY2NlbnQpICFpbXBvcnRhbnQ7XHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBoc2xhKHZhcigtLWFjY2VudC1oc2wpIC8gMC43KSAhaW1wb3J0YW50O1xyXG5cdFx0Ly8gYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYy1hY2NlbnQtbGlnaHQpICFpbXBvcnRhbnQ7XHJcblx0fVxyXG59XHJcblxyXG4vKiBDb2RlLXNuaXBwZXRzIG1hcmtkb3duIGFuZCBtYXJrZG93biBoZWFkZXIgKi9cclxuaHRtbC5kYXJrW2RhdGEtZ3B0aGVtZT0nb2xlZCddIHtcclxuXHQucHJvc2Uge1xyXG5cdFx0LmJnLWJsYWNrIHtcclxuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogIzAwMCAhaW1wb3J0YW50O1xyXG5cclxuXHRcdFx0LyogTWFya2Rvd24gY29kZS1zbmlwcGV0cyAocHJvc2UpIGhlYWRlciAqL1xyXG5cdFx0XHQuYmctdG9rZW4tc3VyZmFjZS1wcmltYXJ5IHtcclxuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwICFpbXBvcnRhbnQ7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcbn1cclxuIiwiLyogPT09IFJJR0hUIC0gPHByZT4gLSBNQVJLRE9XTiBDT0RFIElOIENIQVRTID09PSovXHJcblxyXG5wcmUge1xyXG5cdGJvcmRlci1yYWRpdXM6IHZhcigtLWJyLXByZSkgIWltcG9ydGFudDtcclxuXHRtYXJnaW46IHZhcigtLW15LXByZSkgYXV0byAhaW1wb3J0YW50O1xyXG5cclxuXHQtLWMtYmctcHJlOiAjMjMyMTM2O1xyXG5cdC0tbWFpbi1zdXJmYWNlLXNlY29uZGFyeTogdmFyKC0tYy1iZy1wcmUpICFpbXBvcnRhbnQ7XHJcblxyXG5cdC5iZy1ncmF5LTk1MCB7XHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLWJnLXByZSkgIWltcG9ydGFudDtcclxuXHR9XHJcblxyXG5cdC8vIG92ZXJmbG93OiBjbGlwICFpbXBvcnRhbnQ7XHJcblxyXG5cdC8qICA9PT0gUklHSFQgLSA8cHJlPiAtIGhlYWRlciA9PT0gKi9cclxuXHQvKmBgYCBIZWFkZXIgc2VsZWN0b3I6IC5iZy1ibGFjaz5kaXY6aGFzKD4gc3BhbikgKi9cclxuXHJcblx0LyogLy8gVE9ET1xyXG5cdFx0VGhlcmUgc2VlbXMgdG8gYmUgYW4gdW51c3VhbCBiZWhhdmlvciB3aXRoIHRoZSB0b3AtYm9yZGVyLXJhZGl1cyBmb3IgdGhlIE1hcmtkb3duIGhlYWRlciwgY2F1c2luZyBpdCB0byBsb3NlIGl0cyByYWRpdXMgYW5kIGFwcGVhciBhbG1vc3Qgc2hhcnAgKGFrYSB0aGUgb3JpZ2luYWwgZGVzaWduKS4gVGhpcyBvY2N1cnMgd2hlbiB0aGUgaW5zcGVjdCBlbGVtZW50IGlzIG9wZW4gb3Igd2hlbiB0aGUgc2NyZWVuIHNpemUgaXMgcmVkdWNlZC4gSXQgaGFwcGVucyBsaWtlIGEgZmxhc2ggd2hlbiBob3ZlcmluZyBvdmVyIHRoZSBjaGF0LWJ1YmJsZSBhbmQgdGhlbiBtb3Zpbmcgb3V0IG9mIGl0IGNvbXBsZXRlbHkgb3Igd2hlbiBpbiB0aGUgaW5zcGVjdCBtb2RlLCBhbHNvIGhvdmVyaW5nIENPUFkgYnRuLCBpZGsuIEkgY2Fubm90IGZ1bGx5IGNvbXByZWhlbmQgdGhlIGlzc3VlLCBidXQgaXQgc2VlbXMgdGhhdCB0aGUgb3JpZ2luYWwgZGVzaWduIGlzIGJlaW5nIHJlc3RvcmVkLCBkZXNwaXRlIG15IGF0dGVtcHRzIHRvIG92ZXJyaWRlIGl0IHVzaW5nIHZhcmlvdXMgbWV0aG9kczpcclxuXHJcblx0XHRJIGhhdmUgcmV3cml0dGVuIHRoZSAucm91bmRlZC1tZCBjbGFzcyBhbmQgYWxzbyB0aGUgLnJvdW5kZWQtdC1tZCBjbGFzcyBmb3IgdGhlIGhlYWRlci4gSSBhcHBsaWVkIG92ZXJmbG93OiBjbGlwL2hpZGRlbiB0byA8cHJlPiBhbmQgdGhlIE1hcmtkb3duIGhlYWRlci4gSG93ZXZlciwgbm9uZSBvZiB0aGVzZSBtZWFzdXJlcyBzZWVtIHRvIHJlc29sdmUgdGhlIGlzc3VlLlxyXG5cclxuXHRcdC8vICEgVVBEQVRFXHJcblx0XHRJdCBzZWVtcyBpdCB3b3JrcyBmaW5lIG5vdy5cclxuXHQqL1xyXG5cdC8qIE1hcmtkb3duICovXHJcblx0LyogQ29kZSBuYW1lIGluIG1hcmtkb3duIGhlYWRlciAoaHRtbCwgcGhwLCBjc3MsIGV0YykgKi9cclxuXHRkaXY6aGFzKGJ1dHRvbikgc3BhbiB7XHJcblx0XHRjb2xvcjogdmFyKC0tYy1hY2NlbnQtbGlnaHQpICFpbXBvcnRhbnQ7XHJcblx0fVxyXG5cclxuXHQvKiAnQ29weSBjb2RlJyBidG4gaW4gbWFya2Rvd24gaGVhZGVyICovXHJcblx0YnV0dG9uOmhhcyhzdmcpIHtcclxuXHRcdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2UgIWltcG9ydGFudDtcclxuXHRcdGNvbG9yOiB2YXIoLS1jLW9uLWFjY2VudCkgIWltcG9ydGFudDtcclxuXHRcdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtYmctcHJlLWhlYWRlci1idG4pO1xyXG5cdFx0cGFkZGluZzogdmFyKC0tcC1idG4pO1xyXG5cdFx0Ym9yZGVyLXJhZGl1czogdmFyKC0tYnItYnRuKSAhaW1wb3J0YW50O1xyXG5cclxuXHRcdC8qIFNWRyBpY29ucyBiZWZvcmUgJ0NvcHkgY29kZScgYnRuIGluIG1kICovXHJcblx0XHRzdmcge1xyXG5cdFx0XHRjb2xvcjogY3VycmVudENvbG9yICFpbXBvcnRhbnQ7XHJcblx0XHR9XHJcblx0fVxyXG59XHJcblxyXG5odG1sLmRhcmtbZGF0YS1ncHRoZW1lPSdvbGVkJ10ge1xyXG5cdHByZSB7XHJcblx0XHQtLWMtYmctcHJlOiAjMDAwO1xyXG5cdH1cclxufVxyXG4iLCIuYnRuIHtcclxuXHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLWJnLWJ0bikgIWltcG9ydGFudDtcclxuXHRjb2xvcjogdmFyKC0tYy1idG4pICFpbXBvcnRhbnQ7XHJcblx0Ym9yZGVyLXJhZGl1czogdmFyKC0tYnItYnRuKSAhaW1wb3J0YW50O1xyXG5cdGJvcmRlcjogbm9uZSAhaW1wb3J0YW50O1xyXG5cclxuXHQmOm5vdCguYnRuLXNtYWxsKSB7XHJcblx0XHQvLyBwYWRkaW5nOiAxLjVyZW0gIWltcG9ydGFudDtcclxuXHRcdHBhZGRpbmc6IHZhcigtLXAtYnRuKSAhaW1wb3J0YW50O1xyXG5cdH1cclxufVxyXG5cclxuLyogLmJ0bi1wcmltYXJ5IHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtYmctYnRuKSAhaW1wb3J0YW50O1xyXG59ICovXHJcblxyXG4uYnRuLWRhbmdlciB7XHJcblx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYy1kYW5nZXIpICFpbXBvcnRhbnQ7XHJcblx0Y29sb3I6IHZhcigtLWMtYmctY2hhdHMtY29udGFpbmVyKSAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4vKiA9PT0gUklHSFQgLSBTY3JvbGwgRG93biBhcnJvdyBiZyBMSUdIVCAgPT09ICovXHJcbi8vIGh0bWwubGlnaHQgbWFpbiBbcm9sZT1cInByZXNlbnRhdGlvblwiXSBidXR0b24uYWJzb2x1dGUucm91bmRlZC1mdWxsIHtcclxuLy8gICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtdHh0KSAhaW1wb3J0YW50O1xyXG4vLyB9XHJcblxyXG4vKiA9PT0gUklHSFQgLSBTY3JvbGwgRG93biBhcnJvdyBiZyBEQVJLICA9PT0gKi9cclxuLy8gaHRtbC5kYXJrIG1haW4gW3JvbGU9XCJwcmVzZW50YXRpb25cIl0gYnV0dG9uLmFic29sdXRlLnJvdW5kZWQtZnVsbCB7XHJcbi8vICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLWFjY2VudCkgIWltcG9ydGFudDtcclxuLy8gfVxyXG5tYWluIFtyb2xlPSdwcmVzZW50YXRpb24nXSBidXR0b24uYWJzb2x1dGUucm91bmRlZC1mdWxsIHtcclxuXHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLWFjY2VudCkgIWltcG9ydGFudDtcclxuXHRib3gtc2hhZG93OiB2YXIoLS1ib3gtc2hhZG93LWNvbnRleHRtZW51KTtcclxuXHJcblx0LyogUklHSFQgLSBTY3JvbGwgRG93biBhcnJvdyBTVkcgQ29sb3IgPT09ICovXHJcblx0c3ZnIHtcclxuXHRcdGNvbG9yOiB2YXIoLS1jLW9uLWFjY2VudCkgIWltcG9ydGFudDtcclxuXHR9XHJcbn1cclxuXHJcbi8qID09PSBBbGwgdGhlIC5idG4gaW5zaWRlIGRpYWxvZ3Mgbm90IGhhdmluZyBzdmcgaWNvbiBpbnNpZGUgKi9cclxuW3JvbGU9J2RpYWxvZyddIHtcclxuXHQuYnRuOm5vdCguYnRuOmhhcyhzdmcpKSB7XHJcblx0XHRtaW4td2lkdGg6IHZhcigtLW1pbi13LWJ0bik7XHJcblx0fVxyXG5cclxuXHQmOm5vdCguUG9wb3ZlckNvbnRlbnQpIC5idG4tbmV1dHJhbCB7XHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLXN1cmZhY2UtMykgIWltcG9ydGFudDtcclxuXHRcdGNvbG9yOiB2YXIoLS1jLXR4dCkgIWltcG9ydGFudDtcclxuXHR9XHJcblxyXG5cdC8qIFwiLlBvcG92ZXJDb250ZW50XCIgamUgcmVjaW1vIG1lbnUgb2QgYnRuIHUgXCJTaGFyZWQgTGluayB0byBDaGF0XCIgM2RvdHMgbWVudSAoU2hhcmVkIHlvdXIgTmFtZSAmIERlbGV0ZSBMaW5rKSAqL1xyXG5cdCYuUG9wb3ZlckNvbnRlbnQge1xyXG5cdFx0LmJ0bi1uZXV0cmFsIHtcclxuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcclxuXHRcdFx0Y29sb3I6IHZhcigtLWMtdHh0KSAhaW1wb3J0YW50O1xyXG5cdFx0fVxyXG5cdH1cclxufVxyXG5cclxuLyogPT09IFNldHRpbmdzID4gVGFicyA9PT0gKi9cclxuW3JvbGU9J3RhYmxpc3QnXSBidXR0b24ge1xyXG5cdHBhZGRpbmc6IHZhcigtLXAtYnRuKSAhaW1wb3J0YW50O1xyXG5cdGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XHJcblxyXG5cdCZbZGF0YS1zdGF0ZT0nYWN0aXZlJ10sXHJcblx0Jjpob3ZlciB7XHJcblx0XHQvLyBUT0RPIE92byBqZSBvayB6YSBkZXNrdG9wLCBhbGkgemEgbWFuamUgamUgYm9samUgc3VyZmFjZS0xLiBUYWtvZGplIGRvZGF0aSBob3JpeiBnYXAgaXptZWRqdVxyXG5cdFx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYy1zdXJmYWNlLTMpICFpbXBvcnRhbnQ7XHJcblx0fVxyXG59XHJcblxyXG4vKiA9PT0gQ2hlY2tib3ggYnV0dG9uIC0gc3dpdGNoZXIuIEluIFwiQ2hhdCBoaXN0b3J5ICYgdHJhaW5pbmc6IGFuZCBcIkN1c3RvbSBpbnN0cnVjdGlvbnNcIiAqL1xyXG5idXR0b25bcm9sZT0nc3dpdGNoJ10ge1xyXG5cdC8qIENoZWNrYm94IE9OICovXHJcblx0JjpoYXMoW2RhdGEtc3RhdGU9J2NoZWNrZWQnXSkge1xyXG5cdFx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYy1hY2NlbnQpICFpbXBvcnRhbnQ7XHJcblxyXG5cdFx0LyogQ2hiIGJ1bGxldC9jaXJjbGUgY2hlY2tlZCAqL1xyXG5cdFx0c3BhbiB7XHJcblx0XHRcdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtb24tYWNjZW50KSAhaW1wb3J0YW50O1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyogQ2hlY2tib3ggT0ZGICovXHJcblx0JjpoYXMoW2RhdGEtc3RhdGU9J3VuY2hlY2tlZCddKSB7XHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLXN1cmZhY2UtMykgIWltcG9ydGFudDtcclxuXHJcblx0XHQvKiBDaGIgYnVsbGV0L2NpcmNsZSB1bmNoZWNrZWQgKi9cclxuXHRcdHNwYW4ge1xyXG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBoc2xhKHZhcigtLWFjY2VudC1oc2wpIC8gMC41KSAhaW1wb3J0YW50O1xyXG5cdFx0fVxyXG5cdH1cclxufVxyXG5cclxuLyogPT09IFNldHRpbmdzID4gVGhlbWUgc2VsZWN0b3IgZHJvcCBkb3duICovXHJcbmJ1dHRvbltyb2xlPSdjb21ib2JveCddIHtcclxuXHRAZXh0ZW5kIC5idG47XHJcblx0QGV4dGVuZCAuYnRuLW5ldXRyYWw7XHJcblx0bWluLXdpZHRoOiB2YXIoLS1taW4tdy1idG4pO1xyXG5cclxuXHQvKiBUaGVtZSBidG4gLSBmaXggaGVpZ2h0IHNtYWxsZXIgdGhlbiBvdGhlciBidG5zICovXHJcblx0aGVpZ2h0OiBhdXRvO1xyXG5cdGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xyXG59XHJcblxyXG4vKiA9PT0g4p2TIGNpcmNsZSBidG4gb24gYm90dG9tIHJpZ2h0ICovXHJcbmJ1dHRvbltpZCo9J2hlYWRsZXNzdWktbWVudS1idXR0b24nXVtjbGFzcyo9J2JnLWdyYXktNTAnXSB7XHJcblx0Y29sb3I6IHZhcigtLWMtdHh0KSAhaW1wb3J0YW50O1xyXG5cdGJvcmRlcjogbm9uZSAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4vKiBJbnRybyBwYWdlIChiZWZvcmUgTG9naW4gb3IgUmVnaXN0ZXIpICovXHJcbmJ1dHRvbltjbGFzcyo9J2JnLVsjM0M0NkZGXSB0ZXh0LVsjZmZmXSddIHtcclxuXHRAZXh0ZW5kIC5idG47XHJcbn1cclxuIiwiLyogXCJDb3BpZWQgeW91ciBVc2VyIElEIHRvIGNsaXBib2FyZFwiIHBhcmVudCAtIHRvYXN0IG1lc3NhZ2Ugd2hlbiBjbGlja2luZyBvbiA/IGljb24gYm90dG9tIHJpZ2h0IG9uIHVzZXJuYW1lICovXHJcbi50b2FzdC1yb290IHtcclxuXHRtYXJnaW4tdG9wOiAtMC40cmVtICFpbXBvcnRhbnQ7XHJcblxyXG5cdC8qIFxyXG5cdC0gXCJDb3BpZWQgeW91ciBVc2VyIElEIHRvIGNsaXBib2FyZFwiIC0gY2xpY2tlZCBvbiAneW91cmVtYWlsQGV4YW1wbGUuY29tJyBpbiBjb250ZXh0IG1lbnUgb24gPyBmaXhlZCBidXR0b24gaW4gYm90dG9tIHJpZ2h0LlxyXG5cdC0gQWxlcnQgc2hvd24gb24gXCLihLnvuI8gVW5hYmxlIHRvIGxvYWQgY29udmVyc2F0aW9ucyBqMTA4OThkOGRzOGEtZHNhNjg5ZDZhczktczY4ZDdhLWoxMDg5OGQ4ZHM4YVwiICovXHJcblx0W3JvbGU9J2FsZXJ0J10ge1xyXG5cdFx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYy1hY2NlbnQpICFpbXBvcnRhbnQ7XHJcblx0XHRjb2xvcjogdmFyKC0tYy1vbi1hY2NlbnQpICFpbXBvcnRhbnQ7XHJcblx0XHRwYWRkaW5nOiB2YXIoLS1wLWJ0bikgIWltcG9ydGFudDtcclxuXHRcdGJvcmRlci1yYWRpdXM6IHZhcigtLWJyLWJ0bikgIWltcG9ydGFudDsgLy8gVE9ETyBvYnJpc2F0aSBvdm8gYWtvIG9zdGF2aW0gdSBnbG9iYWx1IC5yb3VuZGVkLWxnIG9uYWpcclxuXHRcdGJvcmRlcjogbm9uZSAhaW1wb3J0YW50O1xyXG5cdH1cclxufVxyXG4iLCIvKiA9PT0gVE9PTFRJUFMgYXJyb3cgZGl2IGJnIGNvbG9yID09PSAqL1xyXG5kaXZbZGF0YS1yYWRpeC1wb3BwZXItY29udGVudC13cmFwcGVyXTpoYXMoW3JvbGU9J3Rvb2x0aXAnXSkge1xyXG5cdEBleHRlbmQgJWFuaW1GYWRlSW47XHJcblxyXG5cdC8qIFRvb2x0aXAgYW5kIHRyaWFuZ2xlIGJnICovXHJcblx0Ly8gLmJnLWJsYWNrIG5vdCBleGlzdGluZyBhbnltb3JlLCBpdCBpcyAuYmctZ3JheS05NTAgbm93LCBidXQgSSBzZWxlY3QgaXQgdmlhIDxkaXY+IHRhZ1xyXG5cclxuXHRkaXYge1xyXG5cdFx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYy1iZy10b29sdGlwKSAhaW1wb3J0YW50O1xyXG5cdFx0cGFkZGluZzogdmFyKC0tcC10b29sdGlwcykgIWltcG9ydGFudDtcclxuXHRcdGJveC1zaGFkb3c6IHZhcigtLWJveC1zaGFkb3ctY29udGV4dG1lbnUpICFpbXBvcnRhbnQ7XHJcblx0fVxyXG59XHJcblxyXG4vKiA9PT0gVE9PTFRJUFMgdGV4dCBjb2xvciA9PT0gKi9cclxuaHRtbC5saWdodCBkaXZbZGF0YS1yYWRpeC1wb3BwZXItY29udGVudC13cmFwcGVyXTpoYXMoW3JvbGU9J3Rvb2x0aXAnXSkge1xyXG5cdFtjbGFzcyo9J3RleHQtd2hpdGUnXSB7XHJcblx0XHRjb2xvcjogdmFyKC0tYy10eHQpICFpbXBvcnRhbnQ7XHJcblx0fVxyXG59XHJcbmh0bWwuZGFyayBkaXZbZGF0YS1yYWRpeC1wb3BwZXItY29udGVudC13cmFwcGVyXTpoYXMoW3JvbGU9J3Rvb2x0aXAnXSkge1xyXG5cdFtjbGFzcyo9J3RleHQtd2hpdGUnXSB7XHJcblx0XHRjb2xvcjogdmFyKC0tYy1vbi1hY2NlbnQpICFpbXBvcnRhbnQ7XHJcblx0fVxyXG59XHJcbiIsIi5naXptby1zaGFkb3ctc3Ryb2tlLmgtZnVsbDpoYXMoc3ZnKSB7XHJcbiAgICBjb2xvcjogdmFyKC0tYy1vbi1hY2NlbnQpICFpbXBvcnRhbnQ7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLWFjY2VudCkgIWltcG9ydGFudDtcclxufSIsIi8qIF9fXyAgTU9EQUwgQmFja2dyb3VuZCAqL1xyXG4uYWJzb2x1dGUuaW5zZXQtMCAuZml4ZWQuaW5zZXQtMCB7XHJcblx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYy1iZy1tb2RhbCkgIWltcG9ydGFudDtcclxuXHRiYWNrZHJvcC1maWx0ZXI6IGJsdXIodmFyKC0tYmx1ci1tb2RhbCkpICFpbXBvcnRhbnQ7XHJcblx0ei1pbmRleDogdmFyKC0tei1tb2RhbCk7XHJcbn1cclxuIiwiLyogX19fIERJQUxPRyAtIERpYWxvZyBTZXR0aW5ncyAgKi9cclxuW3JvbGU9J2RpYWxvZyddIHtcclxuXHRwYWRkaW5nOiB2YXIoLS1wLWRpYWxvZykgIWltcG9ydGFudDtcclxuXHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLWJnLWRpYWxvZykgIWltcG9ydGFudDtcclxuXHRib3JkZXItcmFkaXVzOiB2YXIoLS1ici1kaWFsb2cpICFpbXBvcnRhbnQ7XHJcblx0Ym94LXNoYWRvdzogdmFyKC0tYm94LXNoYWRvdyk7XHJcblxyXG5cdC5ib3JkZXItdG9rZW4tYm9yZGVyLWxpZ2h0LFxyXG5cdC5ib3JkZXItd2hpdGUsXHJcblx0LmJvcmRlci1ibGFjayB7XHJcblx0XHRib3JkZXItY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XHJcblx0fVxyXG5cclxuXHQvKiBUYWIgdmlldyB0cmFuc2l0aW9ucyAtIEluIHRhYiBkaWFsb2cgcGFydCB3aGljaCBpcyBjaGFuZ2luZyBvbiB0YWJwYW5lbCBjbGljayAob24gcmlnaHQgc2lkZSkgKi9cclxuXHRbaWQqPSctY29udGVudC0nXSB7XHJcblx0XHQtLWFuaW0tZHVyYXRpb246IDAuMThzO1xyXG5cdFx0QGV4dGVuZCAlYW5pbUZhZGVJbjtcclxuXHR9XHJcblxyXG5cdFtyb2xlPSd0YWJsaXN0J10ge1xyXG5cdFx0LyogX19fIERJQUxPRyAtIFwiU2V0dGluZ3NcIiBvbiBzbWFsbGVyIGRldmljZXMgdGhlbiBkZXNrb3AgKi9cclxuXHRcdCZbZGF0YS1vcmllbnRhdGlvbj0naG9yaXpvbnRhbCddLmJnLWdyYXktMTAwIHtcclxuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYy1zdXJmYWNlLTMpICFpbXBvcnRhbnQ7XHJcblx0XHRcdC8vIGJvcmRlci1yYWRpdXM6IHZhcigtLWJyLWJ0bikgIWltcG9ydGFudDtcclxuXHJcblx0XHRcdC8vIGJ1dHRvbltyb2xlPVwidGFiXCJdW2RhdGEtc3RhdGU9XCJhY3RpdmVcIl0ge1xyXG5cdFx0XHRidXR0b25bZGF0YS1zdGF0ZT0nYWN0aXZlJ10ge1xyXG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtc3VyZmFjZS0yKSAhaW1wb3J0YW50O1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKiBBZGQgcGFkZGluZyB5IHRvIHRhYnBhbmVsIGluIFwiU2V0dGluZ3NcIiAoV2hlcmUgXCJUaGVtZVwiLFwiQXJjaGl2ZWQgY2hhdHNcIiwgXCJEZWxldGUgQWxsIGNoYXRzXCIsIGV0YyBhcmUuIEFkZGVkIGJlY2F1c2UgVGhlbWUgZHJvcGRvd24gd2FzIGN1dHRlZCBvbiBob3ZlciBvbiBzbWFsbGVyIGRldmljZXMsIGJlY2F1c2Ugb2YgT3BlbkFJJ3MgYG92ZXJmbG93LXk6IGF1dG9gICovXHJcblx0W3JvbGU9J3RhYnBhbmVsJ11bZGF0YS1vcmllbnRhdGlvbj0naG9yaXpvbnRhbCddIHtcclxuXHRcdHBhZGRpbmc6IDFyZW0gIWltcG9ydGFudDtcclxuXHR9XHJcblxyXG5cdC8qIEhlYWRpbmcgXCJTZXR0aW5nc1wiIGluIFNldHRpbmdzIE1vZGFsICovXHJcblx0aDJbYXM9J2gzJ10ge1xyXG5cdFx0dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcclxuXHR9XHJcblxyXG5cdC8qIFwiWW91ciBpbnZpdGUgaXMgdmFsaWQgdW50aWwgRGVjZW1iZXIgWCwgMjAyM1wiIGluIFwiWU9VJ1JFIElOVklURUQgVE8gUExVU1wiIGZvb3RlciAqL1xyXG5cdC50ZXh0LWdpem1vLWdyYXktNTAwIHtcclxuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcclxuXHRcdG1hcmdpbi10b3A6IDFyZW07XHJcblx0fVxyXG5cclxuXHQuYmctdG9rZW4tc3VyZmFjZS1wcmltYXJ5IHtcclxuXHRcdC0tc3VyZmFjZS1wcmltYXJ5OiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xyXG5cdH1cclxuXHJcblx0LyogRElBTE9HIC0gXCJVcGdyYWRlIHlvdXIgcGxhblwiIG9ubHkgKi9cclxuXHQmOmhhcyhhW2hyZWY9XCJodHRwczovL29wZW5haS5jb20vZW50ZXJwcmlzZVwiXSlcclxuXHR7XHJcblx0XHQtLXBvcG92ZXItc3VyZmFjZS1wcmltYXJ5OiB2YXIoLS1jLWJnLWRpYWxvZykgIWltcG9ydGFudDsgLyogRGlhbG9nIGJnICovXHJcblx0XHQtLW1haW4tc3VyZmFjZS1wcmltYXJ5OiB0cmFuc3BhcmVudCAhaW1wb3J0YW50OyAvKiBTdHJhbmdlIHdoaXRlIGJnIGJlaGluZCDinJTvuI8gaXRlbXMgLSBub3cgaXM6ICAuYmctdG9rZW4tbWFpbi1zdXJmYWNlLXByaW1hcnkgKi9cclxuXHRcdC8vIENoYW5nZSBgd2lkdGg6IG1heC1jb250ZW50O2AgdG8gYG1heC13aWR0aDogbWF4LWNvbnRlbnQ7YCBpbiBgW3JvbGU9XCJkaWFsb2dcIl06aGFzKGFbaHJlZj1cImh0dHBzOi8vb3BlbmFpLmNvbS9lbnRlcnByaXNlXCJdKWAgYmVjYXVzZSBpdCBkaXNhYmxlcyBzaHJpbmtpbmcgdGhlIGNvbnRlbnQgaW4gYFVwZ3JhZGUgeW91ciBwbGFuYCBwb3B1cC4gQnV0IHRoZW4gSSBoYXZlIHRvIGZpeCB0aGUgY29udGVudFxyXG5cdFx0bWF4LXdpZHRoOiBtYXgtY29udGVudDtcclxuXHRcdHBhZGRpbmc6IDAgIWltcG9ydGFudDtcclxuXHRcdGJvcmRlcjogbm9uZSAhaW1wb3J0YW50O1xyXG5cclxuXHRcdC8vIC5iZy10b2tlbi1wb3BvdmVyLXN1cmZhY2UtcHJpbWFyeSB7XHJcblx0XHQvLyBcdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtc3VyZmFjZS0yKSAhaW1wb3J0YW50O1xyXG5cdFx0Ly8gfVxyXG5cdFx0LyogU3RyYW5nZSB3aGl0ZSBiZyBiZWhpbmQg4pyU77iPIGl0ZW1zIC0gbm93IGlzOiAgLmJnLXRva2VuLW1haW4tc3VyZmFjZS1wcmltYXJ5ICovXHJcblx0XHQvKiAuYmctd2hpdGUsXHJcblx0XHQuYmctZ3JheS05MDAge1xyXG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLXN1cmZhY2UtMikgIWltcG9ydGFudDtcclxuXHRcdH0gKi9cclxuXHJcblx0XHQvKiBCb3JkZXIgcmFkaXVzIGZvciBcIlVwZ3JhZGUgeW91ciBwbGFuXCIgZGlhbG9nICovXHJcblx0XHQucm91bmRlZC1tZCB7XHJcblx0XHRcdGJvcmRlci1yYWRpdXM6IHZhcigtLWJyLWNoYXQtYnViYmxlKSAhaW1wb3J0YW50O1xyXG5cdFx0fVxyXG5cclxuXHRcdC8qICBTdHJva2UgY29sb3IgZm9yIOKclO+4jyBpbiBcIlVwZ3JhZGUgeW91ciBwbGFuXCIgZGlhbG9nIGxpc3QgKi9cclxuXHRcdHN2Z1tzdHJva2U9J2N1cnJlbnRDb2xvciddOmhhcyhwb2x5bGluZSkge1xyXG5cdFx0XHRzdHJva2U6IHZhcigtLWMtYWNjZW50KSAhaW1wb3J0YW50O1xyXG5cdFx0fVxyXG5cclxuXHRcdC8qIFNlZSBcIkNoYXRHUFQgRW50ZXJwcmlzZVwiICovXHJcblx0XHRhW2hyZWY9XCJodHRwczovL29wZW5haS5jb20vZW50ZXJwcmlzZVwiXVxyXG5cdFx0e1xyXG5cdFx0XHRjb2xvcjogdmFyKC0tYy1hY2NlbnQpICFpbXBvcnRhbnQ7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQmOmhhcyhbZGF0YS10ZXN0aWRePSdjb252ZXJzYXRpb24tdHVybi0nXSkge1xyXG5cdFx0W2NsYXNzKj0nZGFyazpiZy1ncmF5LTgwMCddIHtcclxuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYy1zdXJmYWNlLTEpICFpbXBvcnRhbnQ7XHJcblx0XHRcdC8vIGJhY2tncm91bmQtY29sb3I6IGxpZ2h0c2FsbW9uICFpbXBvcnRhbnQ7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKiBESUFMT0cgLSB0ZXh0YXJlYSAoXCJDdXN0b20gaW5zdHJ1Y3Rpb25zXCIpICovXHJcblx0dGV4dGFyZWEge1xyXG5cdFx0Ym9yZGVyLXJhZGl1czogdmFyKC0tYnItY29udGV4dG1lbnUpICFpbXBvcnRhbnQ7XHJcblx0XHRib3JkZXItY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLXN1cmZhY2UtMykgIWltcG9ydGFudDsgLy8gW2NsYXNzKj0nZGFyazpiZy1ncmF5LTgwMCddXHJcblx0XHRvcGFjaXR5OiAwLjc7XHJcblxyXG5cdFx0LyogVGV4dGFyZWEgZmVlZGJhY2sgd2hlbiBjbGljayBvbiBsaWtlIGJ0biBpbiBncHQgYW5zd2VycyAqL1xyXG5cdFx0JiNmZWVkYmFjay1vdGhlciB7XHJcblx0XHRcdHBhZGRpbmc6IDEuNXJlbTtcclxuXHRcdH1cclxuXHJcblx0XHQmOmZvY3VzIHtcclxuXHRcdFx0Ym9yZGVyLWNvbG9yOiB2YXIoLS1jLXN1cmZhY2UtMykgIWltcG9ydGFudDtcclxuXHRcdFx0b3BhY2l0eTogMTtcclxuXHRcdH1cclxuXHJcblx0XHQmOjpwbGFjZWhvbGRlciB7XHJcblx0XHRcdGNvbG9yOiB2YXIoLS1jLXN1YnRleHQtMSkgIWltcG9ydGFudDtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdCYgW2NsYXNzKj0nZGFyazpiZy1ncmF5LTcwMCddOmhhcyhpbnB1dFtpZF0pIHtcclxuXHRcdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtc3VyZmFjZS0zKSAhaW1wb3J0YW50O1xyXG5cclxuXHRcdGlucHV0IHtcclxuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdCAhaW1wb3J0YW50O1xyXG5cdFx0fVxyXG5cdFx0Ly8gYmFja2dyb3VuZC1jb2xvcjogcmVkICFpbXBvcnRhbnQ7XHJcblx0fVxyXG5cclxuXHQvKiBfX18gRGlhbG9nIC0gXCJTaGFyZSBDaGF0XCIgV2hpdGUgcHJldmlldyA8ZGl2PiAgKi9cclxuXHQmOmhhcyhtYWluIGRpdltkYXRhLXJhZGl4LWFzcGVjdC1yYXRpby13cmFwcGVyXSkgLnctZnVsbC5yb3VuZGVkLWxnIHtcclxuXHRcdGJvcmRlci1yYWRpdXM6IHZhcigtLWJyLWNoYXQtYnViYmxlKSAhaW1wb3J0YW50O1xyXG5cdFx0Ym94LXNoYWRvdzogdmFyKC0tYm94LXNoYWRvdyk7XHJcblx0XHRib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcclxuXHJcblx0XHQvKiBNaW5pIGNoYXQgY29udmVyc2F0aW9uICovXHJcblx0XHQtLW1haW4tc3VyZmFjZS1wcmltYXJ5OiB2YXIoLS1jLXN1cmZhY2UtMSkgIWltcG9ydGFudDsgLy8gbWluaSBjaGF0IHByZXZpZXcgYmFja2dyb3VuZCBpbiBcIlNoYXJlIExpbmsgdG8gQ2hhdFwiXHJcblx0XHQtLW1haW4tc3VyZmFjZS1zZWNvbmRhcnk6IHZhcigtLWMtc3VyZmFjZS0xKSAhaW1wb3J0YW50OyAvLyBmb290ZXIgb2YgbWluaSBjaGF0IHByZXZpZXcgaW4gXCJTaGFyZSBMaW5rIHRvIENoYXRcIlxyXG5cdFx0LS1tYWluLXN1cmZhY2UtdGVydGlhcnk6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7IC8vIGJvcmRlciBjb2xvciBvZiBmb290ZXIgb2YgbWluaSBjaGF0IHByZXZpZXcgaW4gXCJTaGFyZSBMaW5rIHRvIENoYXRcIlxyXG5cdH1cclxuXHJcblx0LyogX19fIERJQUxPRyAtIFwiU0hBUkVEIExJTktTXCIgb3IgXCJBUkNISVZFRCBDSEFUU1wiIC0gVGFibGUgICovXHJcblx0dGFibGUge1xyXG5cdFx0LS1tYWluLXN1cmZhY2UtcHJpbWFyeTogdHJhbnNwYXJlbnQgIWltcG9ydGFudDsgLyogQkcgb2YgdGhlYWQ+dGggLS0tPiAuYmctdG9rZW4tbWFpbi1zdXJmYWNlLXByaW1hcnkgKi9cclxuXHRcdHBhZGRpbmc6IHZhcigtLXAtY29udGV4dG1lbnUpICFpbXBvcnRhbnQ7XHJcblx0XHQvLyBib3JkZXItcmFkaXVzOiB2YXIoLS1ici1jb250ZXh0bWVudSk7XHJcblxyXG5cdFx0dGgsXHJcblx0XHR0ZCB7XHJcblx0XHRcdHBhZGRpbmctdG9wOiB2YXIoLS1weS1idG4pICFpbXBvcnRhbnQ7XHJcblx0XHRcdHBhZGRpbmctYm90dG9tOiB2YXIoLS1weS1idG4pICFpbXBvcnRhbnQ7XHJcblx0XHR9XHJcblxyXG5cdFx0dGhlYWQge1xyXG5cdFx0XHR0ciB7XHJcblx0XHRcdFx0Ly8gYm9yZGVyLXJhZGl1czogdmFyKC0tYnItYnRuKSAhaW1wb3J0YW50O1xyXG5cdFx0XHRcdC8vIHBhZGRpbmc6IHZhcigtLXB5LWJ0bikgdmFyKC0tcHgtYnRuKSAhaW1wb3J0YW50O1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHR0aCB7XHJcblx0XHRcdFx0dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZSAhaW1wb3J0YW50O1xyXG5cdFx0XHRcdC8vIGNvbG9yOiB2YXIoLS1jLWFjY2VudCkgIWltcG9ydGFudDtcclxuXHRcdFx0XHRjb2xvcjogdmFyKC0tYy10eHQpICFpbXBvcnRhbnQ7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHR0Ym9keSB7XHJcblx0XHRcdC8qIExpbmsgaW4gdGFibGUgU2hhcmVkIExpbmtzL0FyY2hpdmVkIENoYXRzXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgTkFNRSAtIGZpcnN0IGNvbHVtbiBMaW5rc1xyXG4gICAgICAgICAgICAgICAgXCJTaGFyZWQgbGlua3NcIiAmIFwiQXJjaGl2ZWQgQ2hhdHNcIiBsaW5rcyBpbiB0YWJsZSwgYnV0IGFbaHJlZl49XCIvYy9cIl0gaXMgYWxzbyBDb252ZXJzYXRpb24gU1ZHIGluIFwiU2hhcmVkIExpbmtzXCIsIGFoaFxyXG4gICAgICAgICAgICAqL1xyXG5cdFx0XHR0ZDpmaXJzdC1jaGlsZCBhIHtcclxuXHRcdFx0XHRAZXh0ZW5kICVsaW5rX2hvdmVyX3VuZGVybGVzcztcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0LyogQ2VudGVyIHRoZSB2ZXJ0aWNhbGx5IHN2ZyBpY29ucyBuZXh0IHRvIGVhY2ggb3RoZXIgaW4gdGFibGUgKi9cclxuXHRcdFx0dGQ6aGFzKGJ1dHRvblthcmlhLWxhYmVsXj0nRGVsZXRlJ10pIHNwYW5bZGF0YS1zdGF0ZV0ge1xyXG5cdFx0XHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHRcdFx0XHRqdXN0aWZ5LWl0ZW1zOiBjZW50ZXI7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHQvKiBcIkRlbGV0ZSBzaGFyZWQgbGlua1wiIGluIFNoYXJlZCBMaW5rcyBhbmQgXCJEZWxldGUgY29udmVyc2F0aW9uXCIgaW4gQXJjaGl2ZWQgQ2hhdHMgc3ZnIGNvbG9yICovXHJcblx0XHRidXR0b25bYXJpYS1sYWJlbF49J0RlbGV0ZSddIHtcclxuXHRcdFx0Y29sb3I6IHZhcigtLWMtZGFuZ2VyKSAhaW1wb3J0YW50O1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyogX19fIERJQUxPRyBcIkRlbGV0ZSBhY2NvdW50IC0gYXJlIHlvdSBzdXJlP1wiIGlucHV0cyBwYXJlbnRzICovXHJcblx0ZGl2W2NsYXNzKj0nZm9jdXMtd2l0aGluOnJpbmctMSddOmhhcyhpbnB1dCkge1xyXG5cdFx0cGFkZGluZzogMC44cmVtICFpbXBvcnRhbnQ7XHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLXN1cmZhY2UtMyk7XHJcblxyXG5cdFx0aW5wdXQge1xyXG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLXN1cmZhY2UtMyk7XHJcblxyXG5cdFx0XHQmOjpwbGFjZWhvbGRlciB7XHJcblx0XHRcdFx0Y29sb3I6IHZhcigtLWMtc3VidGV4dC0xKSAhaW1wb3J0YW50O1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKiBcIkNyZWF0ZSBXb3Jrc3BhY2VcIiBkaWFsb2cgd2hlbiBjbGlja2luZyBcIlVwZ3JhZGUgcGxhblwiID4gXCJUZWFtXCIgKi9cclxuXHQmOmhhcyhpbnB1dCN3b3Jrc3BhY2UtbmFtZSkge1xyXG5cdFx0LyogXCJXb3Jrc3BhY2UgbmFtZVwiIGJnIGNvbG9yOiAuYmctdG9rZW4tbWFpbi1zdXJmYWNlLXByaW1hcnkgKi9cclxuXHRcdC0tbWFpbi1zdXJmYWNlLXByaW1hcnk6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XHJcblx0fVxyXG5cclxuXHQvKiBcIlNlbGVjdCB5b3VyIFRlYW0gUGxhblwiIGRpYWxvZyByYWRpbyBidXR0b25zIHdoZW4gY2xpY2tpbmcgXCJVcGdyYWRlIHBsYW5cIiA+IFwiVGVhbVwiID4gXCJTZWxlY3QgYmlsbGluZyBvcHRpb25zXCIgKi9cclxuXHQmOmhhcyhpbnB1dFtuYW1lPSdzZWF0cyddKSB7XHJcblx0XHQvKiBpbnB1dCBjb3VudGVyIGZvciBzZWF0cyAqL1xyXG5cdFx0aW5wdXRbbmFtZT0nc2VhdHMnXSB7XHJcblx0XHRcdGJhY2tncm91bmQtY29sb3I6IGhzbGEodmFyKC0tYWNjZW50LWhzbCkgLyAwLjMpICFpbXBvcnRhbnQ7XHJcblx0XHRcdHBhZGRpbmc6IHZhcigtLXAtYnRuKSAhaW1wb3J0YW50O1xyXG5cdFx0XHRoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDtcclxuXHRcdFx0bWFyZ2luOiAwIDAuOHJlbTtcclxuXHRcdH1cclxuXHR9XHJcbn1cclxuIiwiLyogPT09IFJJR0hUIC0gQ09OVkVSU0FUSU9OIENPTlRBSU5FUiA9PT0gKi9cclxubWFpbiBbcm9sZT0ncHJlc2VudGF0aW9uJ10ge1xyXG5cdCYsXHJcblx0LyogU2hhcmVkIExpbmsgUGFnZSAqL1xyXG5cdC5iZy10b2tlbi1tYWluLXN1cmZhY2UtcHJpbWFyeS5oLWZ1bGwge1xyXG5cdFx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYy1iZy1jaGF0cy1jb250YWluZXIpICFpbXBvcnRhbnQ7XHJcblx0fVxyXG59XHJcblxyXG4vKiA9PT0gUklHSFQgLSBDaGF0cyAtIEdhcCBmcm9tIGhlYWRpbmcgYW5kIHN2ZyBpY29ucyA9PT0qL1xyXG5tYWluIFtkYXRhLW1lc3NhZ2UtYXV0aG9yLXJvbGU9J3VzZXInXSxcclxubWFpbiBbZGF0YS1tZXNzYWdlLWF1dGhvci1yb2xlPSdhc3Npc3RhbnQnXSB7XHJcblx0bWFyZ2luLXRvcDogdmFyKC0tbXQtY2hhdC10eHQpICFpbXBvcnRhbnQ7XHJcblx0bWFyZ2luLWJvdHRvbTogdmFyKC0tbWItY2hhdC10eHQpICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi8qIEAgPT09IFJJR0hUIC0gQ0hBVFMgQlVCQkxFUyA9PT0qL1xyXG5tYWluIFtkYXRhLXRlc3RpZF49J2NvbnZlcnNhdGlvbi10dXJuLSddIHtcclxuXHRtYXJnaW4tYm90dG9tOiB2YXIoLS1tYi1jaGF0LWJ1YmJsZSkgIWltcG9ydGFudDtcclxuXHJcblx0LyogUklHSFQgLSBDSEFUUyBCVUJCTEVTIERJViAqL1xyXG5cdC5ncm91cCB7XHJcblx0XHQvLyBwYWRkaW5nOiB2YXIoLS1wLWNoYXQtYnViYmxlKSAhaW1wb3J0YW50O1xyXG5cdFx0cGFkZGluZzogY2FsYyh2YXIoLS1wLWNoYXQtYnViYmxlKSAqIDEuMykgdmFyKC0tcC1jaGF0LWJ1YmJsZSkgdmFyKC0tcC1jaGF0LWJ1YmJsZSkgdmFyKC0tcC1jaGF0LWJ1YmJsZSkgIWltcG9ydGFudDtcclxuXHRcdGJvcmRlci1yYWRpdXM6IHZhcigtLWJyLWNoYXQtYnViYmxlKSAhaW1wb3J0YW50O1xyXG5cdFx0bGV0dGVyLXNwYWNpbmc6IDAuM3B4O1xyXG5cdFx0bGluZS1oZWlnaHQ6IDEuOCAhaW1wb3J0YW50O1xyXG5cclxuXHRcdC5hZ2VudC10dXJuIHtcclxuXHRcdFx0d2lkdGg6IDgwJSAhaW1wb3J0YW50O1xyXG5cdFx0XHQvLyBib3JkZXI6IDFweCBzb2xpZCByZWQgIWltcG9ydGFudDtcclxuXHRcdFx0Ly8gb3ZlcmZsb3cteDogc2Nyb2xsICFpbXBvcnRhbnQ7XHJcblx0XHR9XHJcblxyXG5cdFx0LyogIFRPRE8gXHJcbiAgICAgICAgICAgIGdhcDogMC43NXJlbSArIHdpZHRoOiAxLjVyZW0gPSAyLjI1cmVtIHRvbGlrbyB0cmViYSBkYSBidWRlIHBhZGRpbmctcmlnaHQvbWFyZ2luLXJpZ2h0IGkgZG9kYXRpIGZsZXgtZ3JvdzogMTtcclxuICAgICAgICAgICAgICAgIG92b21lOiByZWxhdGl2ZSBmbGV4IHctZnVsbCBmbGV4LWNvbCBsZzp3LVtjYWxjKDEwMCUtMTE1cHgpXSBhZ2VudC10dXJuIFxyXG4gICAgICAgICAgICAgICAgaSBvdm9tZTogbGc6dy1bY2FsYygxMDAlLTExNXB4KV0gICAgdG8gamUgaXN0aSBkZW8gc2FtbyB6YSB1c2VyIGNoYXQgYnViYmxlXHJcbiAgICAgICAgICAgIHRvIGplIGthbyBjaGF0IG9uYWogZGVvIGdkZSBqZSBjaGF0LCBjdWRubyBpbWEgdmVsaWtpIHNwYWNlIHNhIGRlc25lIHN0cmFuZSwgXHJcbiAgICAgICAgKi9cclxuXHRcdC8vIEZpeCBvcmlnaW5hbCBzdHJhbmdlIHNwYWNlIG9uIHRoZSByaWdodCAobGVmdCBpcyBzdmcgb2YgdXNlci9ncHQpIGluIHRoZSBjaGF0IGJ1YmJsZXMgd2hlcmUgdGV4dCBpc1xyXG5cdFx0ZGl2W2NsYXNzKj0nbGc6dy1bY2FsYygxMDAlLTExNXB4KV0nXSB7XHJcblx0XHRcdC8vIC5hZ2VudC10dXJuIHtcclxuXHRcdFx0LS1nYXAtMzogMC43NXJlbTtcclxuXHRcdFx0LS1zdmctdzogMS41cmVtO1xyXG5cdFx0XHRmbGV4LWdyb3c6IDEgIWltcG9ydGFudDtcclxuXHRcdFx0bWFyZ2luLXJpZ2h0OiBjYWxjKHZhcigtLWdhcC0zKSArIHZhcigtLXN2Zy13KSkgIWltcG9ydGFudDtcclxuXHRcdFx0Ly8gcGFkZGluZy1yaWdodDogY2FsYyh2YXIoLS1nYXAtMykgKyB2YXIoLS1zdmctdykpICFpbXBvcnRhbnQ7XHJcblx0XHRcdC8vIGJvcmRlcjogMnB4IHNvbGlkIHJlZCAhaW1wb3J0YW50O1xyXG5cdFx0fVxyXG5cclxuXHRcdC8qIFwiV2FzIHRoaXMgcmVzcG9uc2UgYmV0dGVyIG9yIHdvcnNlPyDwn5GN8J+RjlwiIGVsIHdoZW4gY2xpY2tlZCBvbiByZWdlbmVyYXRlIGFuc3dlciBidG4gICovXHJcblx0XHQuYmctdG9rZW4tbWFpbi1zdXJmYWNlLXNlY29uZGFyeTpoYXMoYnV0dG9uW3RpdGxlXj0nVGhpcyByZXNwb25zZSB3YXMnXSkge1xyXG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xyXG5cdFx0XHRjb2xvcjogdmFyKC0tYy1zdWJ0ZXh0LTIpICFpbXBvcnRhbnQ7XHJcblx0XHRcdGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWMtYm9yZGVyKTtcclxuXHRcdFx0Ym9yZGVyLXJhZGl1czogdmFyKC0tYnItY29udGV4dG1lbnUpO1xyXG5cclxuXHRcdFx0LyogXCJTYW1lXCIgc3ZnLCBmaXggd2hpdGUgYm9yZGVyIGZvciB2aXN1YWx5IGNvbnNpc3RlbmN5ICovXHJcblx0XHRcdHN2Zy5yb3VuZGVkLWZ1bGwge1xyXG5cdFx0XHRcdGJvcmRlci1jb2xvcjogdmFyKC0tYXZhdGFyLWNvbG9yKTtcclxuXHRcdFx0fVxyXG5cdFx0XHQvKiDwn5GN8J+RjiAqL1xyXG5cdFx0XHRidXR0b25bdGl0bGVdIHtcclxuXHRcdFx0XHRib3JkZXItcmFkaXVzOiB2YXIoLS1ici1idG4pICFpbXBvcnRhbnQ7XHJcblx0XHRcdFx0Ym9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XHJcblx0XHRcdFx0dHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMnMgJGVhc2VJbk91dFNpbmU7XHJcblxyXG5cdFx0XHRcdC8qIFwiQmV0dGVyXCIsIFwiV29yc2VcIiwgXCJTYW1lXCIgKi9cclxuXHRcdFx0XHRzcGFuIHtcclxuXHRcdFx0XHRcdHRyYW5zaXRpb246IGNvbG9yIDAuMnMgJGVhc2VJbk91dFNpbmU7XHJcblx0XHRcdFx0XHRjb2xvcjogdmFyKC0tYy1zdWJ0ZXh0LTIpICFpbXBvcnRhbnQ7XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHQmOmhvdmVyIHtcclxuXHRcdFx0XHRcdGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XHJcblx0XHRcdFx0XHRib3JkZXItY29sb3I6IHZhcigtLWMtYm9yZGVyKSAhaW1wb3J0YW50O1xyXG5cdFx0XHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC00JSk7XHJcblxyXG5cdFx0XHRcdFx0c3BhbiB7XHJcblx0XHRcdFx0XHRcdGNvbG9yOiB2YXIoLS1hdmF0YXItY29sb3IpICFpbXBvcnRhbnQ7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKiBSSUdIVCAtIENIQVRTIFVTRVIvR1BUIE5BTUVTICovXHJcblx0LmZvbnQtc2VtaWJvbGQuc2VsZWN0LW5vbmUge1xyXG5cdFx0dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcclxuXHR9XHJcblxyXG5cdC5naXptby1zaGFkb3ctc3Ryb2tlIGRpdiB7XHJcblx0XHRjb2xvcjogdmFyKC0tYy1vbi1hY2NlbnQpICFpbXBvcnRhbnQ7XHJcblx0fVxyXG5cclxuXHQvKiBAIFJJR0hUIC0gQ0hBVFMgQlVCQkxFUyAtIFVTRVIgICovXHJcblx0Ly8gVGhlcmUgaXMgbm8gW2RhdGEtbWVzc2FnZS1hdXRob3Itcm9sZT1cInVzZXJcIl0gd2hlbiB3ZSBjbGlja2VkIG9uIFwiRWRpdCBQcm9tcHRcIiwgc28gd2UgbmVlZCBzZWxlY3QgYW5kIGxpa2UgdGhpcyBmb3IgdGhhdCBjYXNlIHNjZW5hcmlvXHJcblx0Ly8gJjpub3QoJjpoYXMoW2RhdGEtbWVzc2FnZS1hdXRob3Itcm9sZT0nYXNzaXN0YW50J10pKSxcclxuXHQmOmhhcyhbZGF0YS1tZXNzYWdlLWF1dGhvci1yb2xlPSd1c2VyJ10pIHtcclxuXHRcdC8qICBSSUdIVCAtIENIQVRTIEJVQkJMRSBCRyAqL1xyXG5cdFx0Lmdyb3VwIHtcclxuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYy1iZy1tc2ctdXNlcik7XHJcblx0XHRcdG91dGxpbmU6IDJweCBzb2xpZCB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xyXG5cclxuXHRcdFx0LyogPT09IFVzZXIvQ2hhdEdQVCBuYW1lID09PSAqL1xyXG5cdFx0XHQuZm9udC1zZW1pYm9sZC5zZWxlY3Qtbm9uZSB7XHJcblx0XHRcdFx0Y29sb3I6IHZhcigtLWMtbXNnLW5hbWUtdXNlcik7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHQvKiAgQ2hhdCBidWJibGUgZm9vdGVyIFNWRyBpY29ucyAqL1xyXG5cdFx0YnV0dG9uIHN2ZyB7XHJcblx0XHRcdGNvbG9yOiB2YXIoLS1jLW1zZy1uYW1lLXVzZXIpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHQvKiBVc2VyIGNoYXQgYnViYmxlIC0gRWRpdCBzdGF0ZS4gVGhlcmUgaXMgbm8gW2RhdGEtbWVzc2FnZS1hdXRob3Itcm9sZT1cInVzZXJcIl0gd2hlbiB3ZSBjbGlja2VkIG9uIFwiRWRpdCBQcm9tcHRcIiwgc28gd2UgbmVlZCBzZWxlY3QgYW5kIGxpa2UgdGhpcyBmb3IgdGhhdCBjYXNlIHNjZW5hcmlvICovXHJcblx0JjpoYXModGV4dGFyZWEpIHtcclxuXHRcdC8qIFx0XHQuZmxleC5mbGV4LWdyb3cuZmxleC1jb2wubWF4LXctZnVsbCA+IGRpdiB7XHJcblx0XHRcdEBleHRlbmQgJWFuaW1GYWRlSW47XHJcblx0XHR9ICovXHJcblx0XHQuZ3JvdXAge1xyXG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLWJnLWNoYXRzLWNvbnRhaW5lcikgIWltcG9ydGFudDtcclxuXHRcdFx0Ym94LXNoYWRvdzogdmFyKC0tYm94LXNoYWRvdy10ZXh0YXJlYSk7XHJcblx0XHRcdG91dGxpbmU6IDJweCBzb2xpZCBoc2xhKHZhcigtLWFjY2VudC1oc2wpIC8gMC4xKSAhaW1wb3J0YW50O1xyXG5cdFx0XHR0cmFuc2l0aW9uOiBvdXRsaW5lIDAuMnMgZWFzZS1pbi1vdXQsIGJveC1zaGFkb3cgMC4ycyBlYXNlLWluLW91dDtcclxuXHJcblx0XHRcdC8qID09PSBVc2VyL0NoYXRHUFQgbmFtZSA9PT0gKi9cclxuXHRcdFx0LmZvbnQtc2VtaWJvbGQuc2VsZWN0LW5vbmUge1xyXG5cdFx0XHRcdGNvbG9yOiB2YXIoLS1jLW1zZy1uYW1lLXVzZXIpO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHR0ZXh0YXJlYSB7XHJcblx0XHRcdFx0QGV4dGVuZCAlYW5pbUZhZGVJbjtcclxuXHRcdFx0XHRjb2xvcjogdmFyKC0tYy1zdWJ0ZXh0LTIpICFpbXBvcnRhbnQ7XHJcblx0XHRcdFx0cGFkZGluZzogMC41cmVtIDA7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC8qIFBhcmVudCBvZiBidXR0b25zOiBcIlNhdmUgJiBTdWJtaXRcIiBhbmQgXCJDYW5jZWxcIiAqL1xyXG5cdFx0XHQudGV4dC1jZW50ZXIubXQtMi5mbGV4Lmp1c3RpZnktY2VudGVyIHtcclxuXHRcdFx0XHRAZXh0ZW5kICVhbmltRmFkZUluO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQuYnRuLW5ldXRyYWwge1xyXG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtc3VyZmFjZS0zKSAhaW1wb3J0YW50O1xyXG5cdFx0XHRcdGNvbG9yOiB2YXIoLS1jLXR4dCkgIWltcG9ydGFudDtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyogQCBSSUdIVCAtIENIQVRTIEJVQkJMRVMgLSBHUFQgKi9cclxuXHQmOmhhcyhbZGF0YS1tZXNzYWdlLWF1dGhvci1yb2xlPSdhc3Npc3RhbnQnXSkge1xyXG5cdFx0LyogICBSSUdIVCAtIENIQVRTIEJVQkJMRSBCRyAgKi9cclxuXHRcdC5ncm91cCB7XHJcblx0XHRcdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtYmctbXNnLWdwdCk7XHJcblxyXG5cdFx0XHRzdmdbcm9sZT0naW1nJ10ge1xyXG5cdFx0XHRcdGNvbG9yOiB2YXIoLS1jLXN1cmZhY2UtMSkgIWltcG9ydGFudDtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0LyogIFVzZXIvQ2hhdEdQVCBuYW1lICAqL1xyXG5cdFx0XHQuZm9udC1zZW1pYm9sZC5zZWxlY3Qtbm9uZSB7XHJcblx0XHRcdFx0Ly8gY29sb3I6IHZhcigtLWMtbXNnLW5hbWUtZ3B0KTtcclxuXHRcdFx0XHRjb2xvcjogdmFyKC0tYXZhdGFyLWNvbG9yKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdC8qICBDaGF0IGJ1YmJsZSBmb290ZXIgU1ZHIGljb25zICovXHJcblx0XHRidXR0b24gc3ZnIHtcclxuXHRcdFx0Y29sb3I6IHZhcigtLWF2YXRhci1jb2xvcik7XHJcblx0XHR9XHJcblx0fVxyXG59XHJcbiIsIi8qID09PSBSSUdIVCAtIE5FVyBDSEFUIC0gNCBCSUcgQlROUyA9PT0gKi9cclxuXHJcbm1haW4gZm9ybSAuZ3JvdyB7XHJcblx0LyogcmVjaW1vIGdhcCBpem1lZGp1IG5ldyBjaGF0IGV4YW1wbGUgYnV0dG9ucyovXHJcblx0LmdhcC0yIHtcclxuXHRcdGdhcDogMC44cmVtICFpbXBvcnRhbnQ7XHJcblx0fVxyXG5cclxuXHQuYnRuIHtcclxuXHRcdHBhZGRpbmc6IDEuNXJlbSAhaW1wb3J0YW50O1xyXG5cdFx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYy1zdXJmYWNlLTIpICFpbXBvcnRhbnQ7XHJcblx0XHRjb2xvcjogdmFyKC0tYy10eHQpICFpbXBvcnRhbnQ7XHJcblx0XHRib3JkZXItcmFkaXVzOiB2YXIoLS1ici1idG4tYmlnKSAhaW1wb3J0YW50O1xyXG5cdFx0b3ZlcmZsb3c6IGhpZGRlbjsgLy8gTW9yYSBqZXIga2FkIHNlIGhvdmVydWplIC5idG4sIG9uZGEgc2UgIC5iZy1ncmFkaWVudC10by1sIHJhZGl1cyBuZSB1a2xhcGEgcyBvdmltLCBtYW5qaSBqZSBpIG9uZGEgLmJ0biBjdWRubyBpemdsZWRhIHNhIGRlc25lIHN0cmFuZSwgb3ZhaiBnYSBvdmVyZmxvd3VqZVxyXG5cclxuXHRcdC8qIEdyYWRpZW50IGJnIHZpc2libGUgb24gaG92ZXIgKi9cclxuXHRcdC5iZy1ncmFkaWVudC10by1sIHtcclxuXHRcdFx0LS1ncmFkaWVudC1jb2xvci1mcm9tOiB2YXIoLS1jLXN1cmZhY2UtMykgIWltcG9ydGFudDtcclxuXHRcdFx0Ly8gLS10dy1ncmFkaWVudC1mcm9tOiB2YXIoLS1jLXN1cmZhY2UtMykgdmFyKC0tdHctZ3JhZGllbnQtZnJvbS1wb3NpdGlvbikgIWltcG9ydGFudDtcclxuXHJcblx0XHRcdC8qIEJ1dHRvbiBTVkcgcGFyZW50IOKdjCBcclxuXHRcdFx0Tm8gbW9yZSAuYmctdG9rZW4tc3VyZmFjZS1wcmltYXJ5IGNsYXNzLCBub3cgaXMgLmJnLXRva2VuLW1haW4tc3VyZmFjZS1wcmltYXJ5ICovXHJcblx0XHRcdC8vIC5iZy10b2tlbi1zdXJmYWNlLXByaW1hcnkge1xyXG5cdFx0XHQuYmctdG9rZW4tbWFpbi1zdXJmYWNlLXByaW1hcnkge1xyXG5cdFx0XHRcdC8vIC0tc3VyZmFjZS1zZWNvbmRhcnk6IHZhcigtLWMtc3VyZmFjZS0yKSAhaW1wb3J0YW50O1xyXG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtYWNjZW50KSAhaW1wb3J0YW50O1xyXG5cdFx0XHRcdGJvcmRlci1yYWRpdXM6IDEwMHZ3ICFpbXBvcnRhbnQ7XHJcblx0XHRcdFx0cGFkZGluZzogMC41cmVtICFpbXBvcnRhbnQ7XHJcblxyXG5cdFx0XHRcdC8qIFNWRyBpY29uKi9cclxuXHRcdFx0XHRzdmcge1xyXG5cdFx0XHRcdFx0Y29sb3I6IHZhcigtLWMtb24tYWNjZW50KSAhaW1wb3J0YW50O1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxufVxyXG4iLCIvKiA9PT0gU1RJQ0tZIENoYXRHUFQgdmVyc2lvbiA9PT0qL1xyXG4vKiBSZW1vdmluZyBcIm1haW5cIiBiZWZvcmUgc3RpY2t5IGNhdXNlZCB0aGlzIHN0eWxlIGlzIGFwcGxpZWQgb24gbWFueSBlbGVtZW50cyBJIGRvbid0IHdhbnQ6IFNpZGViYXIgXCJORVcgQ0hUXCIgd3JhcHBlciwgYW5kIGRvd24gdGhlIFthcmlhLWhhc3BvcHVwPSdtZW51J106aG92ZXIgY2F1c2VkIGFsc28gaXNzdWVzIG9uIGluIHBvcC11cCB0YWJsZSBvbiBtb3JlIG9wdGlvbnMgKDNkb3RzKSBzdmcgaWNvbi5cclxuQnV0IGFkZGluZyB0aGlzIFwibWFpblwiIGJsb2NrZWQgdGhpcyBzdHlsZSB0byBzbWFsbGVyIHNjcmVlbnMgc28gSSBoYXZlIHRvIGFkZCBpdCBkb3duLCBvdXQgb2YgdGhpcyBibG9jayAqL1xyXG5tYWluIC5zdGlja3kge1xyXG5cdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtYmctY2hhdHMtc3RpY2t5KSAhaW1wb3J0YW50O1xyXG5cdGJhY2tkcm9wLWZpbHRlcjogYmx1cih2YXIoLS1ibHVyLXN0aWNreSkpO1xyXG5cclxuXHQvKiAgXCJNeSBHUFRzXCIgcGFnZSBzdGlja3kgaGVhZGVycyB3LyArQ1JFQVRFIGJ0biAoLnRvcC0wIGFuZCAudG9wLTE0KSAqL1xyXG5cdCY6aGFzKFtocmVmPScvZ3B0cy9lZGl0b3InXSksXHJcblx0Ji50b3AtMTQge1xyXG5cdFx0LS1jLWJnLWNoYXRzLXN0aWNreTogdmFyKC0tYy1iZy1jaGF0cy1jb250YWluZXIpICFpbXBvcnRhbnQ7XHJcblx0XHQtLWJsdXItc3RpY2t5OiAwICFpbXBvcnRhbnQ7XHJcblx0fVxyXG5cdCYudG9wLTE0IHtcclxuXHRcdHBhZGRpbmctYm90dG9tOiAwLjZyZW0gIWltcG9ydGFudDtcclxuXHR9XHJcblxyXG5cdFthcmlhLWhhc3BvcHVwPSdtZW51J106aG92ZXIsXHJcblx0W2FyaWEtaGFzcG9wdXA9J21lbnUnXVtkYXRhLXN0YXRlPSdvcGVuJ10ge1xyXG5cdFx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYy1zdXJmYWNlLTEpICFpbXBvcnRhbnQ7XHJcblx0fVxyXG5cclxuXHQvKiA9PT0gU1RJQ0tZIENoYXRHUFQgdmVyc2lvbiBzdmcgaWNvbiA9PT0qL1xyXG5cdC5idG4ge1xyXG5cdFx0Ym9yZGVyLXJhZGl1czogNTB2dyAhaW1wb3J0YW50O1xyXG5cclxuXHRcdHN2ZyB7XHJcblx0XHRcdGNvbG9yOiB2YXIoLS1jLW9uLWFjY2VudCkgIWltcG9ydGFudDtcclxuXHRcdH1cclxuXHR9XHJcbn1cclxuXHJcbi8qIFN0aWNreSBoZWFkZXIgZm9yIHNtYWxsZXIgc2NyZWVucy4gUmVtb3ZlIGJvcmRlci1ib3R0b20gKi9cclxuLnN0aWNreS5ib3JkZXItdG9rZW4tYm9yZGVyLW1lZGl1bSB7XHJcblx0Ym9yZGVyOiBub25lICFpbXBvcnRhbnQ7XHJcbn1cclxuIiwiLyogPT09ICBSSUdIVCAtIFRFWFRBUkVBIFBBUkVOVCwgbWVzc2FnZSB0eXBlIGFuZCBzZW5kIGJ1dHRvbiAqL1xyXG4vLyBtYWluIGZvcm0gLm92ZXJmbG93LWhpZGRlbjpoYXModGV4dGFyZWEjcHJvbXB0LXRleHRhcmVhKSB7XHJcbm1haW4gZm9ybSBbY2xhc3MqPSdbJjpoYXModGV4dGFyZWE6Zm9jdXMpXSddOmhhcyh0ZXh0YXJlYSNwcm9tcHQtdGV4dGFyZWEpIHtcclxuXHRwYWRkaW5nOiB2YXIoLS1wLXByb21wdC10ZXh0YXJlYSkgIWltcG9ydGFudDtcclxuXHQvLyBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xyXG5cdC8vIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtYmctY2hhdHMtY29udGFpbmVyKSAhaW1wb3J0YW50O1xyXG5cdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtYmctdGV4dGFyZWEpICFpbXBvcnRhbnQ7XHJcblx0Ym9yZGVyLXJhZGl1czogdmFyKC0tYnItcHJvbXB0LXRleHRhcmVhKSAhaW1wb3J0YW50O1xyXG5cdC8vIGJvcmRlcjogM3B4IHNvbGlkIHZhcigtLWMtYm9yZGVyLXRleHRhcmVhKTtcclxuXHRib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcclxuXHRib3gtc2hhZG93OiB2YXIoLS1ib3gtc2hhZG93LXRleHRhcmVhKTtcclxuXHR0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuM3MgZWFzZS1pbi1vdXQsIGJveC1zaGFkb3cgMC4zcyBlYXNlLWluLW91dDtcclxuXHQvLyBib3gtc2hhZG93OiB2YXIoLS1ib3gtc2hhZG93LWNvbnRleHRtZW51KSAhaW1wb3J0YW50O1xyXG5cclxuXHQmOmhhcyh0ZXh0YXJlYSNwcm9tcHQtdGV4dGFyZWE6Zm9jdXMpIHtcclxuXHRcdC8vIGJveC1zaGFkb3c6IHZhcigtLWJveC1zaGFkb3ctY29udGV4dG1lbnUpICFpbXBvcnRhbnQ7XHJcblx0XHQvLyBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XHJcblx0XHRib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XHJcblx0fVxyXG5cclxuXHR0ZXh0YXJlYTo6cGxhY2Vob2xkZXIge1xyXG5cdFx0Y29sb3I6IHZhcigtLWMtcGxhY2Vob2xkZXItdGV4dGFyZWEpICFpbXBvcnRhbnQ7XHJcblx0fVxyXG5cclxuXHQvKiBTZW5kIGJ1dHRvbiAqL1xyXG5cdGJ1dHRvbltkYXRhLXRlc3RpZD0nc2VuZC1idXR0b24nXSB7XHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLWFjY2VudCkgIWltcG9ydGFudDtcclxuXHRcdGNvbG9yOiB2YXIoLS1jLXR4dCkgIWltcG9ydGFudDtcclxuXHRcdGJvcmRlci1jb2xvcjogdmFyKC0tYy1hY2NlbnQpICFpbXBvcnRhbnQ7XHJcblx0XHRib3JkZXItcmFkaXVzOiAxMDB2dyAhaW1wb3J0YW50O1xyXG5cdFx0cGFkZGluZzogMnB4O1xyXG5cdFx0cmlnaHQ6IDEuM3JlbSAhaW1wb3J0YW50O1xyXG5cdFx0Ym90dG9tOiAxLjJyZW0gIWltcG9ydGFudDtcclxuXHJcblx0XHQmW2Rpc2FibGVkXSB7XHJcblx0XHRcdG9wYWNpdHk6IDAuNSAhaW1wb3J0YW50O1xyXG5cdFx0fVxyXG5cclxuXHRcdHN2ZyB7XHJcblx0XHRcdGNvbG9yOiB2YXIoLS1jLW9uLWFjY2VudCkgIWltcG9ydGFudDtcclxuXHRcdH1cclxuXHR9XHJcbn1cclxuXHJcbi8qID09PSBSSUdIVCAtIFRFWFRBUkVBIHBhcnQgd3JhcHBlciwgbWFyZ2luLXRvcCA9PT0qL1xyXG5tYWluIGRpdltyb2xlPSdwcmVzZW50YXRpb24nXSBkaXYudy1mdWxsOmhhcyhmb3JtKSB7XHJcblx0bWFyZ2luLXRvcDogMC41cmVtICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi8qID09PSBSSUdIVCAtIFRFWFRBUkVBIFBBUkVOVCA9PT0qL1xyXG5tYWluIGRpdi5mbGV4LnctZnVsbC5pdGVtcy1jZW50ZXIgPiBkaXYge1xyXG5cdGJveC1zaGFkb3c6IG5vbmU7XHJcblx0Ym9yZGVyOiBub25lO1xyXG59XHJcbiIsIi8qIEZvb3RlciB0aiB3cmFwcGVyIGZvciBncmVlbiBidG4gXCJVcGdyYWRlIHRvIFBsdXMgdG8gY3JlYXRlIHlvdXIgb3duIEdQVFwiICAqL1xyXG5tYWluIFtyb2xlPVwicHJlc2VudGF0aW9uXCJdIFtjbGFzcyo9XCJlbXB0eTpoaWRkZW5cIl06aGFzKD4gYVtocmVmPVwiL2dwdHMvZGlzY292ZXJ5XCJdKSB7XHJcbiAgICBwYWRkaW5nOiAxLjVyZW07XHJcblxyXG4gICAgLmJnLWdyZWVuLTYwMCB7XHJcbiAgICAgICAgQGV4dGVuZCAuYnRuO1xyXG4gICAgfVxyXG59IiwibWFpbjpoYXMoLnN0aWNreSBbaHJlZj0nL2dwdHMvZWRpdG9yJ10pIHtcclxuXHQvLyAvKiBNYWluIENhcmRzIChiaWcpICovXHJcblx0Ly8gLnJvdW5kZWQteGwge1xyXG5cdC8vIFx0Ym9yZGVyLXJhZGl1czogdmFyKC0tYnItYnRuLWJpZykgIWltcG9ydGFudDtcclxuXHQvLyB9XHJcblx0Ly8gLyogU2VhcmNoIHF1ZXJ5IGxpc3QgY2FyZHMuIElucHV0IHNlYXJjaCAqL1xyXG5cdC8vIC5yb3VuZGVkLWxnIHtcclxuXHQvLyBcdGJvcmRlci1yYWRpdXM6IHZhcigtLWJyLWJ0bikgIWltcG9ydGFudDtcclxuXHQvLyB9XHJcblx0LyogU3RpY2t5IGhlYWRlciB0YWdzIGFrYSBcIlRvcCBQaWNrc1wiLCBcIkRBTExFXCIsIFwiV3JpdGluZ1wiLCBldGMgKi9cclxuXHQuc3RpY2t5IHtcclxuXHRcdFtjbGFzcyo9J21kOnJvdW5kZWQtbm9uZSddLFxyXG5cdFx0W2NsYXNzKj0nbWQ6cm91bmRlZC1sZyddIHtcclxuXHRcdFx0Ym9yZGVyLXJhZGl1czogMTAwdncgIWltcG9ydGFudDtcclxuXHRcdFx0cGFkZGluZy1pbmxpbmU6IDFyZW0gIWltcG9ydGFudDtcclxuXHRcdH1cclxuXHRcdC8qIEFjdGl2ZSB0YWcgYWthIFwiVG9wIFBpY2tzXCIgKi9cclxuXHRcdFtjbGFzcyo9J21kOnJvdW5kZWQtbm9uZSddIHtcclxuXHRcdFx0Ym9yZGVyOiBub25lICFpbXBvcnRhbnQ7XHJcblx0XHRcdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtYWNjZW50KSAhaW1wb3J0YW50O1xyXG5cdFx0XHRjb2xvcjogdmFyKC0tYy1vbi1hY2NlbnQpICFpbXBvcnRhbnQ7XHJcblxyXG5cdFx0XHQvKiBGaXggYWN0aXZlIHBpbGwgdGFnIGJnIGJlIG92ZXJ3cml0dGVuIGJ5IGdsb2JhbCBbY2xhc3MqPSdiZy1ibGFjayddICovXHJcblx0XHRcdCZbY2xhc3MqPSdiZy1ibGFjayddIHtcclxuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLWFjY2VudCkgIWltcG9ydGFudDtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0LyogTm8tYWN0aXZlIHRhZ3MgYWthIFwiREFMTEVcIiwgXCJXcml0aW5nXCIsIGV0YyAqL1xyXG5cdFx0W2NsYXNzKj0nbWQ6cm91bmRlZC1sZyddIHtcclxuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogaHNsYSh2YXIoLS1hY2NlbnQtaHNsKSAvIDAuMikgIWltcG9ydGFudDtcclxuXHRcdFx0Y29sb3I6IHZhcigtLWMtYWNjZW50KSAhaW1wb3J0YW50O1xyXG5cdFx0fVxyXG5cclxuXHRcdC8qIExlZnQvcmlnaHQgYXJyb3dzIGluIHRhZ3MgdHJhY2sgKi9cclxuXHRcdFtjbGFzcyo9J2JnLWdyYWRpZW50LXRvLSddIHtcclxuXHRcdFx0YnV0dG9uIHtcclxuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLWFjY2VudCkgIWltcG9ydGFudDtcclxuXHRcdFx0XHRjb2xvcjogdmFyKC0tYy1vbi1hY2NlbnQpICFpbXBvcnRhbnQ7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qIElucHV0IHNlYXJjaCAqL1xyXG5cdGlucHV0W3BsYWNlaG9sZGVyPSdTZWFyY2ggcHVibGljIEdQVHMnXSB7XHJcblx0XHRvdXRsaW5lOiBub25lO1xyXG5cdFx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYy1zdXJmYWNlLTIpICFpbXBvcnRhbnQ7XHJcblxyXG5cdFx0Jjo6cGxhY2Vob2xkZXIge1xyXG5cdFx0XHRjb2xvcjogdmFyKC0tYy1zdWJ0ZXh0LTEpICFpbXBvcnRhbnQ7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKiBBbGwgdGhlIGNhcmRzIGhvdmVyIGJnIChvbiBzZWFyY2ggcXVlcnkgbGlzdCBhbmQgb24gbWFpbiBiaWcgb25lcykgKi9cclxuXHRbY2xhc3MqPSdkYXJrOmhvdmVyOmJnLXdoaXRlLzEwJ10ge1xyXG5cdFx0Jjpob3ZlciB7XHJcblx0XHRcdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtc3VyZmFjZS0zKSAhaW1wb3J0YW50O1xyXG5cdFx0fVxyXG5cdH1cclxuXHQvKiBTZWN0aW9uIHZpc2libGUgb24gc2VhcmNoIHF1ZXJ5ICovXHJcblx0W2lkKj0naGVhZGxlc3N1aS1wb3BvdmVyLXBhbmVsLSddIHtcclxuXHRcdC8vIC0tbWFpbi1zdXJmYWNlLXByaW1hcnk6IHZhcigtLWMtc3VyZmFjZS0yKSAhaW1wb3J0YW50O1xyXG5cdFx0LS1ici1zZWFyY2gtcXVlcnktc2VjdGlvbjogY2FsYyh2YXIoLS1ici1idG4pICogMS4yKSAhaW1wb3J0YW50O1xyXG5cclxuXHRcdC8qIEFkZGVkIHRvIHZpc3VhbGx5IHJlbW92ZSB1bnN0aWNrbmVzcyBzZWFyY2ggcXVlcnkgc2VjdGlvbiBmcm9tIGlucHV0IHNlYXJjaCAqL1xyXG5cdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01cHgpO1xyXG5cclxuXHRcdGJvcmRlci1yYWRpdXM6IDAgMCB2YXIoLS1ici1zZWFyY2gtcXVlcnktc2VjdGlvbikgdmFyKC0tYnItc2VhcmNoLXF1ZXJ5LXNlY3Rpb24pICFpbXBvcnRhbnQ7XHJcblxyXG5cdFx0LyogU2VhcmNoIHF1ZXJ5IHNlY3Rpb24gaXRlbXMvY2FyZHMgKi9cclxuXHRcdC5naXptby1saW5rIHtcclxuXHRcdFx0Ym9yZGVyLXJhZGl1czogdmFyKC0tYnItYnRuKSAhaW1wb3J0YW50O1xyXG5cdFx0XHRtYXJnaW4tYm90dG9tOiAwLjVyZW07XHJcblxyXG5cdFx0XHRzdmcudGV4dC1ncmF5LTQwMCB7XHJcblx0XHRcdFx0Y29sb3I6IHZhcigtLWMtb24tYWNjZW50KSAhaW1wb3J0YW50O1xyXG5cdFx0XHRcdC8vIGNvbG9yOiByZWQgIWltcG9ydGFudDtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0Ly8gJjpob3ZlciB7XHJcblx0XHRcdC8vIFx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYy1zdXJmYWNlLTMpICFpbXBvcnRhbnQ7XHJcblx0XHRcdC8vIH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qIEFsbCB0aGUgY2FyZCBpdGVtcyBpbiBHUFRzIFN0b3JlIG1haW4gcGFnZSAqL1xyXG5cdC5oLWZpdCB7XHJcblx0XHQvKiBcIlNlZSBtb3JlXCIgZnVsbC13aWR0aCBidXR0b25zICovXHJcblx0XHQuYnRuLnctZnVsbCB7XHJcblx0XHRcdC8vIHBhZGRpbmc6IGNhbGModmFyKC0tcC1idG4pICogMS41KSAhaW1wb3J0YW50O1xyXG5cdFx0XHRwYWRkaW5nOiAxLjhyZW0gIWltcG9ydGFudDtcclxuXHRcdFx0Ym9yZGVyLXJhZGl1czogY2FsYyh2YXIoLS1ici1idG4pICogMS4yKSAhaW1wb3J0YW50O1xyXG5cdFx0fVxyXG5cdH1cclxufVxyXG5cclxuLyogXHJcbj8gQWN0aXZlIHRhZyBjbGFzc2VzIChcIlRvcCBQaWNrc1wiKSB2cyBuby1hY3RpdmUgdGFnIGNsYXNzZXMgKFwiREFMTEVcIiwgXCJXcml0aW5nXCIsIGV0YylcclxuYGBgYm9yZGVyLXRva2VuLXRleHQtcHJpbWFyeSBiZy1ibGFjayB0ZXh0LXdoaXRlIGRhcms6YmctZ3JheS0xMDAgZGFyazp0ZXh0LWdyYXktODAwIG1kOnJvdW5kZWQtbm9uZSBtZDpib3JkZXItYi0yIG1kOnRleHQtYmxhY2sgZGFyazptZDp0ZXh0LXdoaXRlXHJcbmN1cnNvci1wb2ludGVyIHNjcm9sbC1teC01IHdoaXRlc3BhY2Utbm93cmFwIHJvdW5kZWQtM3hsIHB4LTMgcHktMiBmaXJzdDptbC00IGxhc3Q6bXItNCBtZDpweC0yIG1kOmZpcnN0Om1sLTAgbWQ6bGFzdDptci0wIGJvcmRlci10b2tlbi10ZXh0LXByaW1hcnkgYmctYmxhY2sgdGV4dC13aGl0ZSBkYXJrOmJnLWdyYXktMTAwIGRhcms6dGV4dC1ncmF5LTgwMCBtZDpyb3VuZGVkLW5vbmUgbWQ6Ym9yZGVyLWItMiBtZDpiZy10cmFuc3BhcmVudCBtZDp0ZXh0LWJsYWNrIGRhcms6bWQ6YmctdHJhbnNwYXJlbnQgZGFyazptZDp0ZXh0LXdoaXRlXHJcblxyXG5gYGBiZy1ncmF5LTUwLCBkYXJrOmJnLWdyYXktNzAwIG1kOnJvdW5kZWQtbGcgbWQ6dGV4dC10b2tlbi10ZXh0LXRlcnRpYXJ5IG1kOmhvdmVyOmJnLWdyYXktNTAgZGFyazptZDpob3ZlcjpiZy1ncmF5LTcwMFxyXG5jdXJzb3ItcG9pbnRlciBzY3JvbGwtbXgtNSB3aGl0ZXNwYWNlLW5vd3JhcCByb3VuZGVkLTN4bCBweC0zIHB5LTIgZmlyc3Q6bWwtNCBsYXN0Om1yLTQgbWQ6cHgtMiBtZDpmaXJzdDptbC0wIG1kOmxhc3Q6bXItMCBiZy1ncmF5LTUwIGhvdmVyOmJnLWdyYXktMTAwIGRhcms6YmctZ3JheS03MDAgZGFyazpob3ZlcjpiZy1ncmF5LTYwMCBtZDpyb3VuZGVkLWxnIG1kOmJnLXRyYW5zcGFyZW50IG1kOnRleHQtdG9rZW4tdGV4dC10ZXJ0aWFyeSBtZDpob3ZlcjpiZy1ncmF5LTUwIGRhcms6bWQ6YmctdHJhbnNwYXJlbnQgZGFyazptZDpob3ZlcjpiZy1ncmF5LTcwMFxyXG4qL1xyXG4iLCIvKiBfX18gR2VuZXJhbCAqL1xyXG5idXR0b24sXHJcbmxpLFxyXG5hLFxyXG5zdmcsXHJcbltjbGFzcyo9Jzpob3ZlciddLFxyXG5bcm9sZT0nc3dpdGNoJ10gc3BhbltkYXRhLXN0YXRlXSB7XHJcblx0dHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQ7XHJcblxyXG5cdC8vIHRyYW5zaXRpb246XHJcblx0Ly8gICAgIGFsbCAuMzVzIHZhcigtLWVhc2UtZGVmYXVsdCksXHJcblx0Ly8gICAgIG9wYWNpdHkgLjMgZWFzZS1pbi1vdXQsXHJcblx0Ly8gICAgIGJhY2tncm91bmQtY29sb3IgLjMgZWFzZS1pbi1vdXQsXHJcblx0Ly8gICAgIGNvbG9yIC4zIGVhc2UtaW4tb3V0O1xyXG5cclxuXHQvKiAgICAgdHJhbnNpdGlvbjpcclxuICAgICAgICB0cmFuc2Zvcm0gLjI1cyB2YXIoLS1lYXNlLWRlZmF1bHQpLFxyXG4gICAgICAgIG9wYWNpdHkgLjNzIGVhc2UtaW4tb3V0LFxyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3IgLjNzIGVhc2UtaW4tb3V0LFxyXG4gICAgICAgIGNvbG9yIC4zcyBlYXNlLWluLW91dCxcclxuICAgICAgICBib3JkZXItY29sb3IgLjNzIGVhc2UtaW4tb3V0LFxyXG4gICAgICAgIGJveC1zaGFkb3cgLjNzIGVhc2UtaW4tb3V0LFxyXG4gICAgICAgIHNjYWxlIC4zcyBlYXNlLWluLW91dCxcclxuICAgICAgICByb3RhdGUgLjNzIGVhc2UtaW4tb3V0LFxyXG4gICAgICAgIHRyYW5zbGF0ZSAuM3MgZWFzZS1pbi1vdXQsXHJcbiAgICAgICAgZmlsdGVyIC4zcyBlYXNlLWluLW91dCxcclxuICAgICAgICBib3JkZXItcmFkaXVzIC4zcyBlYXNlLWluLW91dCwgaW5zZXQgLjNzIGVhc2UtaW4tb3V0OyAqL1xyXG59XHJcblxyXG4vKiBfX18gQlVUVE9OIFNWRyBpY29uIHdoaWNoIEFSRSBOT1QgaW46XHJcbiAgICAtIGluIC5idG4gPGJ1dHRvbj5cclxuICAgIC0gVGhlbWUgY2hvb3NpbmcgPGJ1dHRvbj5cclxuICAgIC0gaW4gYWN0aXZlIHRhYiA8YnV0dG9uPlxyXG4gICAgLSBpbiBzZW5kIG1lc3NhZ2UgYnRuIDxidXR0b24+XHJcbiAgICAtIGJ0bnMgaW4gbWVzc2FnZSBidWJibGUgZm9vdGVyIDxidXR0b24+IChbY2xhc3MqPVwiWy5maW5hbC1jb21wbGV0aW9uXVwiXSkgXHJcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICAgLSAuYnRuICB8ICBCdXR0b25cclxuICAgIC0gW3JvbGU9XCJ0YWJcIl0gIHwgIEFjdGl2ZSB0YWJcclxuICAgIC0gW3JvbGU9XCJjb21ib2JveFwiXSAgfCAgVGhlbWUgY2hvb3NpbmdcclxuICAgIC0gW2RhdGEtdGVzdGlkPVwic2VuZC1idXR0b25cIl0gIHwgIFNlbmQgTWVzc2FnZSBCdXR0b25cclxuICAgIC0gW2NsYXNzKj1cIlsuZmluYWwtY29tcGxldGlvbl1cIl0gIHwgIEJ0bnMgaW4gTWVzc2FnZSBidWJibGUgZm9vdGVyXHJcbiAgICAtIFthcmlhLWxhYmVsXj1cIkRlbGV0ZVwiXSkgIHwgXCJEZWxldGVcIiBpY29uIGluIFwiU2hhcmVkIGxpbmtzXCIgYW5kIFwiQXJjaGl2ZWQgQ2hhdHNcIiBcclxuICAgIC0gW2FyaWEtbGFiZWw9XCJVbmFyY2hpdmUgY29udmVyc2F0aW9uXCJdKSAgfCBcIlVuYXJjaGl2ZVwiIGljb24gaW4gXCJBcmNoaXZlZCBDaGF0c1wiXHJcbiAgICovXHJcbmJ1dHRvbjpub3QoXHJcblx0XHQuYnRuLFxyXG5cdFx0W3JvbGU9J3RhYiddLFxyXG5cdFx0W3JvbGU9J2NvbWJvYm94J10sXHJcblx0XHRbZGF0YS10ZXN0aWQ9J3NlbmQtYnV0dG9uJ10sXHJcblx0XHRbY2xhc3MqPSdbLmZpbmFsLWNvbXBsZXRpb25dJ10sXHJcblx0XHRbYXJpYS1sYWJlbF49J0RlbGV0ZSddLFxyXG5cdFx0W2FyaWEtbGFiZWw9J1VuYXJjaGl2ZSBjb252ZXJzYXRpb24nXVxyXG5cdCkge1xyXG5cdHN2ZyB7XHJcblx0XHR0cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXIgY2VudGVyO1xyXG5cdFx0Ly8gYm9yZGVyOiAxcHggc29saWQgcmVkICFpbXBvcnRhbnQ7XHJcblx0fVxyXG5cclxuXHRzdmc6aG92ZXIge1xyXG5cdFx0dHJhbnNmb3JtOiBzY2FsZSgxLjEyKTtcclxuXHR9XHJcbn1cclxuXHJcbi5idG4ge1xyXG5cdHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm0sIG9wYWNpdHk7XHJcblxyXG5cdC8vIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjRzICRlYXNlT3V0QmFjaywgb3BhY2l0eSAwLjNzIGVhc2UtaW4tb3V0LCBiYWNrZ3JvdW5kLWNvbG9yIDAuM3MgZWFzZS1pbi1vdXQsIGNvbG9yIDAuM3MgZWFzZS1pbi1vdXQgIWltcG9ydGFudDtcclxuXHR0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4ycyAkZWFzZUluT3V0UXVhZCwgb3BhY2l0eSAwLjNzIGVhc2UtaW4tb3V0LCBiYWNrZ3JvdW5kLWNvbG9yIDAuM3MgZWFzZS1pbi1vdXQsXHJcblx0XHRjb2xvciAwLjNzIGVhc2UtaW4tb3V0ICFpbXBvcnRhbnQ7XHJcblxyXG5cdCY6aXMoOmhvdmVyLCA6YWN0aXZlKSB7XHJcblx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7XHJcblx0XHRvcGFjaXR5OiAwLjg7XHJcblx0fVxyXG59XHJcblxyXG4vKiBkaWFsb2cgYnV0dG9ucyAqL1xyXG5bcm9sZT0nZGlhbG9nJ10ge1xyXG5cdC8qIFwiLlBvcG92ZXJDb250ZW50XCIgamUgcmVjaW1vIG1lbnUgb2QgYnRuIHUgXCJTaGFyZWQgTGluayB0byBDaGF0XCIgM2RvdHMgbWVudSAoU2hhcmVkIHlvdXIgTmFtZSAmIERlbGV0ZSBMaW5rKSAqL1xyXG5cdCYuUG9wb3ZlckNvbnRlbnQge1xyXG5cdFx0LmJ0bi1uZXV0cmFsOmlzKDpob3ZlciwgOmZvY3VzKSB7XHJcblx0XHRcdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtc3VyZmFjZS0yKSAhaW1wb3J0YW50O1xyXG5cdFx0XHRjb2xvcjogdmFyKC0tYy10eHQpICFpbXBvcnRhbnQ7XHJcblx0XHRcdHRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50O1xyXG5cdFx0XHRvcGFjaXR5OiAxICFpbXBvcnRhbnQ7XHJcblx0XHR9XHJcblx0fVxyXG59XHJcblxyXG4vKiBfX18gU3dpdGNoIGJ1dHRvbiBjaXJjbGUgaG92ZXIuIE92ZGUgbmUgbW96ZSA6Zm9jdXMsIG9zdGFuZSBzdHlsZSBrYW8gZGEgamUgY2hlY2tlZCBpbGkgb2JybnV0byBpIGthZCBzZSB1bmhvdmVydWplICovXHJcbmJ1dHRvbltyb2xlPSdzd2l0Y2gnXSB7XHJcblx0c3BhbltkYXRhLXN0YXRlXSB7XHJcblx0XHR0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC40cyAkZWFzZUluT3V0QmFjaywgYmFja2dyb3VuZC1jb2xvciAwLjNzIGVhc2UtaW4tb3V0O1xyXG5cdH1cclxuXHJcblx0Jjpob3ZlciB7XHJcblx0XHRzcGFuW2RhdGEtc3RhdGVdIHtcclxuXHRcdFx0LyogT3ZvIHNlIGtvc2kgc2Egb3BlbmFpIGtsYXNhbWEsIGplciBvbiBkb2RhamUgdHJhbnNsYXRlLXggLTE5cHgsIHBhIHNlIGNpcmNsZSBwb21lcmEgbGV2bywgc3RvIGkgbmlqZSBsb3NlLCBsb2wuIEFrbyB0byBuZSB6ZWxpbW8sIG1vemVtbyBrb3Jpc3RpdGkgc2NhbGUgdW1lc3RvIHRyYW5zZm9ybTogc2NhbGUgKi9cclxuXHRcdFx0dHJhbnNmb3JtOiBzY2FsZSgwLjgpO1xyXG5cdFx0fVxyXG5cdH1cclxufVxyXG5cclxuLyogX19fIE5ldyBDaGF0IGJpZyBidXR0b25zICovXHJcbm1haW4gZm9ybSAuZ3JvdyAuYnRuIHtcclxuXHQvLyB0cmFuc2l0aW9uOiAuNHMgJGVhc2VPdXRCYWNrLCBiYWNrZ3JvdW5kLWNvbG9yIC4zcyBlYXNlLWluLW91dCBvcGFjaXR5IC4zcyBlYXNlLWluLW91dDtcclxuXHJcblx0LyogR3JhZGllbnQgYmcgdmlzaWJsZSBvbiBob3ZlciAqL1xyXG5cdC5iZy1ncmFkaWVudC10by1sIHtcclxuXHRcdHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0O1xyXG5cclxuXHRcdC8qIEJ1dHRvbiBTVkcgcGFyZW50IHdyYXBwZXIgKi9cclxuXHRcdHNwYW5bZGF0YS1zdGF0ZV0ge1xyXG5cdFx0XHRvdmVyZmxvdzogaGlkZGVuO1xyXG5cdFx0XHRwYWRkaW5nOiA0cHg7IC8vIGJlY2F1c2Ugc3ZnIGJ0biBsb29rcyBjdXQgb2ZmIGluIGZpcmVmb3gsIHNvIGFkZCBhIGxpdHRsZSBzcGFjZSBhcm91bmRcclxuXHJcblx0XHRcdC8qIEJ1dHRvbiB3LyBTVkcgKi9cclxuXHRcdFx0Ly8gLmJnLXRva2VuLXN1cmZhY2UtcHJpbWFyeSB7IHRoaXMgY2xhc3MgZG9lc250IGV4aXN0IGFueW1vcmUuLi5cclxuXHRcdFx0LmJnLXRva2VuLW1haW4tc3VyZmFjZS1wcmltYXJ5IHtcclxuXHRcdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTIwJSkgc2NhbGUoMC41KTtcclxuXHRcdFx0XHR0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC41cyAkZWFzZU91dEJhY2s7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdCY6aG92ZXIge1xyXG5cdFx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYy1zdXJmYWNlLTMpICFpbXBvcnRhbnQ7XHJcblx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTRweCk7XHJcblxyXG5cdFx0LmJnLWdyYWRpZW50LXRvLWwge1xyXG5cdFx0XHRzcGFuW2RhdGEtc3RhdGVdIHtcclxuXHRcdFx0XHQvKiBCdXR0b24gdy8gU1ZHICovXHJcblx0XHRcdFx0Ly8gLmJnLXRva2VuLXN1cmZhY2UtcHJpbWFyeSB7XHJcblx0XHRcdFx0LmJnLXRva2VuLW1haW4tc3VyZmFjZS1wcmltYXJ5IHtcclxuXHRcdFx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwJSkgc2NhbGUoMSk7XHJcblx0XHRcdFx0XHRvcGFjaXR5OiAxICFpbXBvcnRhbnQ7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG59XHJcblxyXG4vKiBfX18gVGV4dGFyZWEgc2VuZCBtZXNzYWdlIHNlbmQtYnV0dG9uICovXHJcbltkYXRhLXRlc3RpZD0nc2VuZC1idXR0b24nXTpub3QoW2Rpc2FibGVkXSkge1xyXG5cdHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjRzICRlYXNlT3V0QmFjaywgb3BhY2l0eSAwLjNzIGVhc2UtaW4tb3V0O1xyXG5cclxuXHQmOmhvdmVyIHtcclxuXHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTAlKTtcclxuXHR9XHJcbn1cclxuXHJcbi8qIF9fXyBDaGF0IEJ1YmJsZXMgKi9cclxubWFpbiBbZGF0YS10ZXN0aWRePSdjb252ZXJzYXRpb24tdHVybi0nXSB7XHJcblx0Lmdyb3VwIHtcclxuXHRcdCY6aG92ZXIge1xyXG5cdFx0XHQvKiBCdWJibGUgbWVzc2FnZSBmb290ZXIgKGljb25zIHdyYXBwZXIpICovXHJcblx0XHRcdGRpdltjbGFzcyo9J2VtcHR5OmhpZGRlbiddOmhhcyhidXR0b25bY2xhc3MqPSdbLmZpbmFsLWNvbXBsZXRpb25dJ10pIC52aXNpYmxlIHtcclxuXHRcdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XHJcblx0XHRcdFx0b3BhY2l0eTogMTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0LyogQnViYmxlIG1lc3NhZ2UgZm9vdGVyIChzdmcgaWNvbnMpICovXHJcblx0XHRcdFtjbGFzcyo9J1suZmluYWwtY29tcGxldGlvbl0nXSBzdmcge1xyXG5cdFx0XHRcdHRyYW5zZm9ybTogc2NhbGUoMSk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHQvKiBCdWJibGUgbWVzc2FnZSBmb290ZXIgKi9cclxuXHRcdGRpdltjbGFzcyo9J2VtcHR5OmhpZGRlbiddOmhhcyhidXR0b25bY2xhc3MqPSdbLmZpbmFsLWNvbXBsZXRpb25dJ10pIHtcclxuXHRcdFx0b3ZlcmZsb3cteTogY2xpcDtcclxuXHRcdFx0Ly8gcGFkZGluZy1pbmxpbmU6IDEwcHg7IC8vIHRvIG1ha2UgY291bnRlciBhbnN3ZXIgKDwyLzQ+KSB2aXNpYmxlIHdoZW4gdGhpcyBpcyBvdmVyZmxvdy1oaWRkZW4sIHdlIG5lZWQgdG8gYWRkIHBhZGRpbmctaW5saW5lLCBvciB3ZSBjYW4gdXNlIG92ZXJmbG93LXk6IGNsaXA7IEFuZCBvdmVyZmxvdyBpcyBcImltcG9ydGFudFwiIGZvciB0cmFuc2xhdGUgdHJhbnNpdGlvblxyXG5cclxuXHRcdFx0LyogQnViYmxlIG1lc3NhZ2UgZm9vdGVyIChpY29ucyB3cmFwcGVyKSAqL1xyXG5cdFx0XHQudmlzaWJsZSB7XHJcblx0XHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xyXG5cdFx0XHRcdG9wYWNpdHk6IDA7XHJcblx0XHRcdFx0dHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuNHMgJGVhc2VPdXRCYWNrLCBvcGFjaXR5IDAuM3MgZWFzZTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdC8qIEJ1YmJsZSBtZXNzYWdlIGZvb3RlciAoc3ZnIGljb25zKSAqL1xyXG5cdFx0W2NsYXNzKj0nWy5maW5hbC1jb21wbGV0aW9uXSddIHN2ZyB7XHJcblx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpO1xyXG5cdFx0XHR0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC40cyAkZWFzZU91dEJhY2ssIG9wYWNpdHkgMC4zcyBlYXNlLWluLW91dDtcclxuXHJcblx0XHRcdCY6aG92ZXIge1xyXG5cdFx0XHRcdG9wYWNpdHk6IDAuODtcclxuXHRcdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTNweCk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcbn1cclxuXHJcbi8qIFwiQ29weSBjb2RlXCIgYnRuICovXHJcbnByZSB7XHJcblx0YnV0dG9uOmhhcyhzdmcpIHtcclxuXHRcdHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjRzICRlYXNlT3V0QmFjaywgb3BhY2l0eSAwLjNzIGVhc2UtaW4tb3V0LCBiYWNrZ3JvdW5kLWNvbG9yIDAuMnMgZWFzZS1pbi1vdXQsXHJcblx0XHRcdGNvbG9yIDAuMXMgZWFzZS1pbi1vdXQgIWltcG9ydGFudDtcclxuXHJcblx0XHRzdmcge1xyXG5cdFx0XHR0cmFuc2l0aW9uOiBjb2xvciAwLjFzIGVhc2UtaW4tb3V0ICFpbXBvcnRhbnQ7XHJcblx0XHR9XHJcblxyXG5cdFx0Jjpob3ZlciB7XHJcblx0XHRcdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtYWNjZW50LWxpZ2h0KSAhaW1wb3J0YW50O1xyXG5cdFx0XHRjb2xvcjogdmFyKC0tYy1vbi1hY2NlbnQpICFpbXBvcnRhbnQ7XHJcblx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgycHgpO1xyXG5cdFx0fVxyXG5cdH1cclxufVxyXG5cclxuaHRtbC5saWdodCBwcmUgYnV0dG9uOmhhcyhzdmcpOmhvdmVyIHtcclxuXHRjb2xvcjogdmFyKC0tYy10eHQpICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi8qIF9fXyBTY3JvbGwgZG93biBidXR0b24gKi9cclxubWFpbiBbcm9sZT0ncHJlc2VudGF0aW9uJ10gYnV0dG9uLmFic29sdXRlLnJvdW5kZWQtZnVsbCB7XHJcblx0dHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuNHMgJGVhc2VPdXRCYWNrLCBvcGFjaXR5IDAuM3MgZWFzZS1pbi1vdXQ7XHJcblxyXG5cdCY6aG92ZXIge1xyXG5cdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwJSk7XHJcblx0XHRvcGFjaXR5OiAxICFpbXBvcnRhbnQ7XHJcblx0fVxyXG59XHJcblxyXG4vKiBfX18gVGFibGUgXCJBcmNoaXZlZCBDaGF0c1wiIG9yIFwiU2hhcmVkIExpbmtzXCIgKi9cclxuW3JvbGU9J2RpYWxvZyddIHRhYmxlIHtcclxuXHR0Ym9keSB7XHJcblx0XHQvKiBUYWJsZSBjb2x1bW4gdGhhdCBjb250YWlucyBcIkRlbGV0ZVwiIHN2ZyBpY29uICovXHJcblx0XHR0ZDpoYXMoYnV0dG9uW2FyaWEtbGFiZWxePSdEZWxldGUnXSkge1xyXG5cdFx0XHRzdmcge1xyXG5cdFx0XHRcdHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjRzICRlYXNlT3V0QmFjaztcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0LyogU1ZHIHBhcmVudCB3cmFwcGVyICovXHJcblx0XHRcdHNwYW5bZGF0YS1zdGF0ZV06aG92ZXIge1xyXG5cdFx0XHRcdHN2ZyB7XHJcblx0XHRcdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMnB4KSBzY2FsZSgxKSAhaW1wb3J0YW50O1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxufVxyXG5cclxuLyogPT09IOKdkyBjaXJjbGUgYnRuIG9uIGJvdHRvbSByaWdodCAqL1xyXG5idXR0b25baWQqPSdoZWFkbGVzc3VpLW1lbnUtYnV0dG9uJ11bY2xhc3MqPSdyb3VuZGVkLWZ1bGwnXSB7XHJcblx0dHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuM3MgJGVhc2VPdXRDaXJjO1xyXG5cclxuXHQmOmhvdmVyIHtcclxuXHRcdHRyYW5zZm9ybTogc2NhbGUoMS4wNik7XHJcblx0fVxyXG59XHJcblxyXG4vKiBHUFRzIFN0b3JlIHBhZ2UgLSBBbGwgdGhlIGNhcmQgaXRlbXMgKi9cclxubWFpbjpoYXMoLnN0aWNreSBbaHJlZj0nL2dwdHMvZWRpdG9yJ10pIHtcclxuXHQuc3RpY2t5IHtcclxuXHRcdC8qIFN0aWNreSBoZWFkZXIgd2l0aCB0YWdzIGFrYSBcIlRvcCBQaWNrc1wiLCBcIkRBTExFXCIsIFwiV3JpdGluZ1wiLCBldGMgKi9cclxuXHRcdFtjbGFzcyo9J21kOnJvdW5kZWQtbm9uZSddLFxyXG5cdFx0W2NsYXNzKj0nbWQ6cm91bmRlZC1sZyddIHtcclxuXHRcdFx0Ly8gdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjNzIGVhc2UsIGNvbG9yIDAuM3MgZWFzZSwgdHJhbnNmb3JtIDAuMnMgJGVhc2VJbkNpcmM7XHJcblx0XHRcdHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4zcyAkZWFzZUluT3V0U2luZSwgY29sb3IgMC4zcyAkZWFzZUluT3V0U2luZSwgdHJhbnNmb3JtIDAuM3MgJGVhc2VJbk91dFNpbmU7XHJcblx0XHR9XHJcblx0XHQvKiBOb24tYWN0aXZlIHBpbGwtdGFnICovXHJcblx0XHRbY2xhc3MqPSdtZDpyb3VuZGVkLWxnJ106aG92ZXIge1xyXG5cdFx0XHR0cmFuc2Zvcm06IHNjYWxlKDAuOTU1KTtcclxuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYy1hY2NlbnQpICFpbXBvcnRhbnQ7XHJcblx0XHRcdGNvbG9yOiB2YXIoLS1jLW9uLWFjY2VudCkgIWltcG9ydGFudDtcclxuXHRcdH1cclxuXHJcblx0XHQvKiBMZWZ0L3JpZ2h0IGFycm93cyBpbiB0YWdzIHRyYWNrICovXHJcblx0XHRbY2xhc3MqPSdiZy1ncmFkaWVudC10by0nXSBidXR0b24ge1xyXG5cdFx0XHR0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4zcyAkZWFzZUluUXVhcnQ7XHJcblx0XHR9XHJcblx0XHQvKiBSaWdodCB0YWdzIGFycm93ICovXHJcblx0XHRbY2xhc3MqPSdiZy1ncmFkaWVudC10by1sJ10gYnV0dG9uIHtcclxuXHRcdFx0Jjpob3ZlciB7XHJcblx0XHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVYKDNweCk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdC8qIExlZnQgdGFncyBhcnJvdyAqL1xyXG5cdFx0W2NsYXNzKj0nYmctZ3JhZGllbnQtdG8tciddIGJ1dHRvbiB7XHJcblx0XHRcdCY6aG92ZXIge1xyXG5cdFx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtM3B4KTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHQvKiBBbGwgdGhlIGNhcmQgaXRlbXMgaW4gR1BUcyBTdG9yZSBtYWluIHBhZ2UgKi9cclxuXHQuaC1maXQge1xyXG5cdFx0YVtocmVmKj0nL2cvZy0nXSB7XHJcblx0XHRcdC8vIGJvcmRlcjogMXB4IHNvbGlkIHJlZCAhaW1wb3J0YW50O1xyXG5cdFx0XHR0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4zcyAkZWFzZUluT3V0U2luZSwgYmFja2dyb3VuZC1jb2xvciAwLjNzIGVhc2UtaW4tb3V0O1xyXG5cclxuXHRcdFx0Jjpob3ZlciB7XHJcblx0XHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0zcHgpO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG59XHJcbiIsIi5ncHRoIHtcclxuXHQmX19zdmcge1xyXG5cdFx0LS1zdmctc2l6ZTogMi4yNXJlbTtcclxuXHRcdC0tdG9wOiBjYWxjKHZhcigtLWgtaGVhZGVyKSArIDAuNXJlbSk7XHJcblx0XHQtLXJpZ2h0OiAxLjNyZW07XHJcblx0XHRwb3NpdGlvbjogZml4ZWQ7XHJcblx0XHR0b3A6IHZhcigtLXRvcCk7XHJcblx0XHRyaWdodDogdmFyKC0tcmlnaHQpO1xyXG5cdFx0ei1pbmRleDogMTA7XHJcblxyXG5cdFx0Ly8gdGhpcyBhZGQgb25seSBmb3IgRmlyZWZveFxyXG5cdFx0QC1tb3otZG9jdW1lbnQgdXJsLXByZWZpeCgpIHtcclxuXHRcdFx0LS1yaWdodDogMC45NXJlbTtcclxuXHRcdH1cclxuXHJcblx0XHQmLWljb24ge1xyXG5cdFx0XHQtLWljb24tc2hhZG93LWJsdXI6IDBweDtcclxuXHRcdFx0LS1pY29uLXNoYWRvdy1vZmZzZXQ6IDZweDtcclxuXHRcdFx0LS1pY29uLXNoYWRvdy1jb2xvcjogaHNsYSh2YXIoLS1hY2NlbnQtaHNsKSAvIDAuMSk7XHJcblx0XHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuXHRcdFx0ZGlzcGxheTogZ3JpZDtcclxuXHRcdFx0cGxhY2UtaXRlbXM6IGNlbnRlcjtcclxuXHRcdFx0d2lkdGg6IHZhcigtLXN2Zy1zaXplKTtcclxuXHRcdFx0aGVpZ2h0OiB2YXIoLS1zdmctc2l6ZSk7XHJcblx0XHRcdGJvcmRlci1yYWRpdXM6IDUwdnc7XHJcblx0XHRcdGJveC1zaGFkb3c6IHZhcigtLWJveC1zaGFkb3cpO1xyXG5cdFx0XHR0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4xNXMgJGVhc2VPdXRDdWJpYywgb3V0bGluZSAwLjI1cyAkZWFzZU91dEN1YmljO1xyXG5cdFx0XHRjdXJzb3I6IHBvaW50ZXI7XHJcblxyXG5cdFx0XHRpbWcge1xyXG5cdFx0XHRcdG9iamVjdC1maXQ6IGNvdmVyO1xyXG5cdFx0XHRcdHdpZHRoOiB2YXIoLS1zdmctc2l6ZSk7XHJcblx0XHRcdFx0aGVpZ2h0OiB2YXIoLS1zdmctc2l6ZSk7XHJcblx0XHRcdFx0Ym9yZGVyLXJhZGl1czogNTB2dztcclxuXHRcdFx0XHRib3gtc2hhZG93OiAwcHggMHB4IHZhcigtLWljb24tc2hhZG93LWJsdXIpIHZhcigtLWljb24tc2hhZG93LW9mZnNldCkgaHNsYSh2YXIoLS1hY2NlbnQtaHNsKSAvIDAuMyk7XHJcblx0XHRcdFx0dHJhbnNpdGlvbjogYm94LXNoYWRvdyAwLjJzICRlYXNlT3V0Q3ViaWM7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdCY6OmFmdGVyIHtcclxuXHRcdFx0XHRjb250ZW50OiAnQ2hhbmdlIHRoZW1lJztcclxuXHRcdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XHJcblx0XHRcdFx0dG9wOiA1MCU7XHJcblx0XHRcdFx0bGVmdDogMDtcclxuXHRcdFx0XHRmb250LXNpemU6IDAuNzVyZW07XHJcblx0XHRcdFx0Ym9yZGVyLXJhZGl1czogMS4ycmVtO1xyXG5cdFx0XHRcdHdpZHRoOiBtYXgtY29udGVudDtcclxuXHRcdFx0XHRoZWlnaHQ6IG1heC1jb250ZW50O1xyXG5cdFx0XHRcdHBhZGRpbmc6IDAuNXJlbSAwLjhyZW07XHJcblx0XHRcdFx0cG9pbnRlci1ldmVudHM6IG5vbmU7XHJcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYy1iZy10b29sdGlwKTtcclxuXHRcdFx0XHRvcGFjaXR5OiAwO1xyXG5cdFx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlKC0xMDAlLCAtNTAlKTtcclxuXHRcdFx0XHR0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4zcyBlYXNlLWluLW91dCwgb3BhY2l0eSAwLjNzIGVhc2UtaW4tb3V0O1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQmOmhvdmVyIHtcclxuXHRcdFx0XHQtLWljb24tc2hhZG93LWJsdXI6IDMwcHg7XHJcblx0XHRcdFx0LS1pY29uLXNoYWRvdy1vZmZzZXQ6IDdweDtcclxuXHRcdFx0XHQtLWljb24tc2hhZG93LWNvbG9yOiBoc2xhKHZhcigtLWFjY2VudC1oc2wpIC8gMC4yKTtcclxuXHRcdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMnB4KTtcclxuXHJcblx0XHRcdFx0b3V0bGluZTogNXB4IHNvbGlkIGhzbGEodmFyKC0tYWNjZW50LWhzbCkgLyAwLjA1KTtcclxuXHRcdFx0XHRvdXRsaW5lLW9mZnNldDogOHB4O1xyXG5cclxuXHRcdFx0XHQmOjphZnRlciB7XHJcblx0XHRcdFx0XHRvcGFjaXR5OiAxO1xyXG5cdFx0XHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGUoLTExNSUsIC01MCUpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHQmX19vcHRpb25zIHtcclxuXHRcdHBvaW50ZXItZXZlbnRzOiBub25lO1xyXG5cdFx0b3BhY2l0eTogMDtcclxuXHRcdGRpc3BsYXk6IGdyaWQ7XHJcblx0XHRwbGFjZS1pdGVtczogY2VudGVyO1xyXG5cdFx0Z2FwOiAzcmVtO1xyXG5cdFx0d2lkdGg6IG1heC1jb250ZW50O1xyXG5cdFx0aGVpZ2h0OiBtYXgtY29udGVudDtcclxuXHRcdHBhZGRpbmc6IDAuOHJlbTtcclxuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuXHRcdHJpZ2h0OiA1MCU7XHJcblx0XHR0b3A6IDE1MCU7XHJcblx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoNTAlKTtcclxuXHRcdGJvcmRlci1yYWRpdXM6IDIwdnc7XHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLXN1cmZhY2UtMyk7XHJcblx0XHRib3gtc2hhZG93OiB2YXIoLS1ib3gtc2hhZG93KTtcclxuXHJcblx0XHQvLyBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoLTEzNWRlZywgIzcxNjc4MiwgIzQyMzM1ZCwgIzJlMWY0OCk7XHJcblx0XHRiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMzMyMjUwLCAjNDIzMzVkIDQwJSwgIzZjNjA3ZiAxMDAlKTtcclxuXHJcblx0XHRjbGlwLXBhdGg6IHBvbHlnb24oMCAwLCAxMDAlIDAsIDEwMCUgMCwgMCUgMCk7XHJcblx0XHR0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dDtcclxuXHRcdGJhY2tkcm9wLWZpbHRlcjogYmx1cig1cHgpO1xyXG5cclxuXHRcdCYuZ3B0aC1vcHRpb25zLXNob3duIHtcclxuXHRcdFx0b3BhY2l0eTogMTtcclxuXHRcdFx0cG9pbnRlci1ldmVudHM6IGFsbCAhaW1wb3J0YW50O1xyXG5cdFx0XHRjbGlwLXBhdGg6IHBvbHlnb24oMCAwLCAxMDAlIDAsIDEwMCUgMTAwJSwgMCUgMTAwJSkgIWltcG9ydGFudDtcclxuXHJcblx0XHRcdGJ1dHRvbiB7XHJcblx0XHRcdFx0dHJhbnNmb3JtOiBzY2FsZSgxKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdGg1IHtcclxuXHRcdFx0bWFyZ2luLWJvdHRvbTogMXJlbTtcclxuXHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG5cdFx0XHRmb250LXNpemU6IDEuM3JlbTtcclxuXHRcdFx0bGV0dGVyLXNwYWNpbmc6IDFweDtcclxuXHRcdFx0Zm9udC13ZWlnaHQ6IDEwMDtcclxuXHRcdH1cclxuXHR9XHJcblx0Jl9fdGhlbWVzIHtcclxuXHRcdGRpc3BsYXk6IGdyaWQ7XHJcblx0XHRwbGFjZS1pdGVtczogY2VudGVyO1xyXG5cclxuXHRcdCYtYnRucyB7XHJcblx0XHRcdGdhcDogMXJlbTtcclxuXHRcdFx0ZGlzcGxheTogZ3JpZDtcclxuXHRcdFx0Ym9yZGVyLXJhZGl1czogdmFyKC0tYnItYnRuKTtcclxuXHJcblx0XHRcdGJ1dHRvbiB7XHJcblx0XHRcdFx0LS1idG4tc2l6ZTogMnJlbTtcclxuXHRcdFx0XHQtLWJ0bi1iZzogdmFyKC0tYy1zdXJmYWNlLTIpO1xyXG5cdFx0XHRcdC0tYnRuLXNoYWRvdy1jb2xvcjogdmFyKC0tYnRuLWJnKTtcclxuXHRcdFx0XHRjdXJzb3I6IHBvaW50ZXI7XHJcblx0XHRcdFx0cG9zaXRpb246IHJlbGF0aXZlO1xyXG5cdFx0XHRcdHdpZHRoOiB2YXIoLS1idG4tc2l6ZSk7XHJcblx0XHRcdFx0aGVpZ2h0OiB2YXIoLS1idG4tc2l6ZSk7XHJcblx0XHRcdFx0ZGlzcGxheTogZ3JpZDtcclxuXHRcdFx0XHRwbGFjZS1pdGVtczogY2VudGVyO1xyXG5cdFx0XHRcdGxpbmUtaGVpZ2h0OiAxO1xyXG5cdFx0XHRcdGJvcmRlci1yYWRpdXM6IDUwdnc7XHJcblx0XHRcdFx0Ym9yZGVyOiBub25lO1xyXG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ0bi1iZyk7XHJcblx0XHRcdFx0Ly8gYm94LXNoYWRvdzogaW5zZXQgMHB4IDBweCA1cHggMXB4IHZhcigtLWJ0bi1zaGFkb3ctY29sb3IpO1xyXG5cdFx0XHRcdC8vIGJveC1zaGFkb3c6IGluc2V0IDBweCAwcHggOHB4IDFweCB2YXIoLS1idG4tc2hhZG93LWNvbG9yKTtcclxuXHRcdFx0XHQvLyBib3gtc2hhZG93OiAwcHggMHB4IDVweCAycHggaHNsYSh2YXIoLS1hY2NlbnQtaHNsKSAvIDAuMilcclxuXHRcdFx0XHR0cmFuc2Zvcm06IHNjYWxlKDApO1xyXG5cdFx0XHRcdHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4ycyBlYXNlLCBiYWNrZ3JvdW5kLWltYWdlIDAuMnMgZWFzZSwgdHJhbnNmb3JtIDAuM3MgZWFzZS1pbi1vdXQ7XHJcblxyXG5cdFx0XHRcdCY6OmFmdGVyIHtcclxuXHRcdFx0XHRcdGNvbnRlbnQ6IGF0dHIoZGF0YS1ncHRoLXRoZW1lKTtcclxuXHRcdFx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuXHRcdFx0XHRcdHRvcDogNTAlO1xyXG5cdFx0XHRcdFx0bGVmdDogNTAlO1xyXG5cdFx0XHRcdFx0d2lkdGg6IG1heC1jb250ZW50O1xyXG5cdFx0XHRcdFx0Zm9udC1zaXplOiAwLjhyZW07XHJcblx0XHRcdFx0XHRwYWRkaW5nOiA0cHggNHB4O1xyXG5cdFx0XHRcdFx0Ym9yZGVyLXJhZGl1czogNXB4O1xyXG5cdFx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYy1hY2NlbnQtbGlnaHQpO1xyXG5cdFx0XHRcdFx0b3BhY2l0eTogMDtcclxuXHRcdFx0XHRcdGJvcmRlci1yYWRpdXM6IDUwdnc7XHJcblx0XHRcdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKSBzY2FsZSgwKTtcclxuXHRcdFx0XHRcdHRyYW5zaXRpb246IDAuMjVzIGVhc2UtaW4tb3V0O1xyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0Jjpob3ZlciB7XHJcblx0XHRcdFx0XHQtLWJ0bi1iZzogaHNsYSgwLCAwJSwgMCUsIDApICFpbXBvcnRhbnQ7XHJcblxyXG5cdFx0XHRcdFx0JiNkYXJrIHtcclxuXHRcdFx0XHRcdFx0YmFja2dyb3VuZC1pbWFnZTogbm9uZTtcclxuXHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHQmOjphZnRlciB7XHJcblx0XHRcdFx0XHRcdG9wYWNpdHk6IDE7XHJcblx0XHRcdFx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpIHNjYWxlKDEpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0JiNsaWdodCB7XHJcblx0XHRcdFx0XHQtLWJ0bi1iZzogdmFyKC0tYy1hY2NlbnQtbGlnaHQpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHQmI2Rhcmsge1xyXG5cdFx0XHRcdFx0LS1idG4tc2hhZG93LWNvbG9yOiBoc2xhKDI1NSwgMTIlLCA3JSwgMC4yKTtcclxuXHRcdFx0XHRcdC0tYnRuLWJnOiBoc2woMjcyLCAxOSUsIDIwJSk7XHJcblx0XHRcdFx0XHRiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjOGQ4MGEwLCAjNTA0MTZiLCAjMmYxZjQ5KTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0JiNvbGVkIHtcclxuXHRcdFx0XHRcdC0tYnRuLXNoYWRvdy1jb2xvcjogaHNsYSgwLCAwJSwgMTAwJSwgMC4yKTtcclxuXHRcdFx0XHRcdC0tYnRuLWJnOiAjMDAwO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0Jl9fdXBsb2FkIHtcclxuXHRcdGRpc3BsYXk6IGdyaWQ7XHJcblx0XHRqdXN0aWZ5LWl0ZW1zOiBjZW50ZXI7XHJcblxyXG5cdFx0Ji0tY29udGVudCB7XHJcblx0XHRcdGRpc3BsYXk6IGdyaWQ7XHJcblx0XHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcblx0XHRcdGdhcDogMXJlbTtcclxuXHRcdH1cclxuXHJcblx0XHRpbnB1dCB7XHJcblx0XHRcdGRpc3BsYXk6IG5vbmU7XHJcblx0XHR9XHJcblxyXG5cdFx0bGFiZWwsXHJcblx0XHRidXR0b24ge1xyXG5cdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XHJcblx0XHRcdG91dGxpbmU6IG5vbmU7XHJcblx0XHRcdGJvcmRlcjogbm9uZTtcclxuXHRcdFx0Y3Vyc29yOiBwb2ludGVyO1xyXG5cdFx0XHR3aWR0aDogMTAwJTtcclxuXHRcdFx0cGFkZGluZzogdmFyKC0tcC1idG4pO1xyXG5cdFx0XHRib3JkZXItcmFkaXVzOiB2YXIoLS1ici1idG4pO1xyXG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLWFjY2VudCk7XHJcblx0XHRcdGNvbG9yOiB2YXIoLS1jLW9uLWFjY2VudCk7XHJcblx0XHRcdGZvbnQtc2l6ZTogMXJlbTtcclxuXHRcdH1cclxuXHJcblx0XHRidXR0b24jdXBsb2FkSW1hZ2Uge1xyXG5cdFx0XHRkaXNwbGF5OiBub25lO1xyXG5cdFx0fVxyXG5cdFx0YnV0dG9uI3JlbW92ZUltYWdlIHtcclxuXHRcdFx0ZGlzcGxheTogbm9uZTtcclxuXHRcdH1cclxuXHJcblx0XHQmLS1wcmV2aWV3IHtcclxuXHRcdFx0ZGlzcGxheTogZ3JpZDtcclxuXHRcdFx0anVzdGlmeS1pdGVtczogY2VudGVyO1xyXG5cclxuXHRcdFx0cCB7XHJcblx0XHRcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xyXG5cdFx0XHRcdG1hcmdpbi1ib3R0b206IDFyZW07XHJcblx0XHRcdFx0Y29sb3I6IHZhcigtLWMtc3VidGV4dC0yKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0Ji0tcGxhY2Vob2xkZXJJbWcge1xyXG5cdFx0XHRkaXNwbGF5OiBncmlkO1xyXG5cdFx0XHRqdXN0aWZ5LWl0ZW1zOiBjZW50ZXI7XHJcblx0XHRcdC8vIC0taW1nLXc6IDExcmVtO1xyXG5cdFx0XHQtLWltZy13OiA5NSU7XHJcblx0XHRcdC0taW1nLWg6IDdyZW07XHJcblx0XHRcdC8vIG1hcmdpbjogMCBhdXRvO1xyXG5cdFx0XHR3aWR0aDogdmFyKC0taW1nLXcpO1xyXG5cdFx0XHRoZWlnaHQ6IHZhcigtLWltZy1oKTtcclxuXHRcdFx0Ym9yZGVyLXJhZGl1czogdmFyKC0tYnItYnRuKTtcclxuXHJcblx0XHRcdGltZyB7XHJcblx0XHRcdFx0d2lkdGg6IHZhcigtLWltZy13KTtcclxuXHRcdFx0XHRoZWlnaHQ6IHZhcigtLWltZy1oKTtcclxuXHRcdFx0XHQvLyB3aWR0aDogMTAwJTtcclxuXHRcdFx0XHQvLyBoZWlnaHQ6IDEwMCU7XHJcblx0XHRcdFx0b2JqZWN0LWZpdDogY292ZXI7XHJcblx0XHRcdFx0b2JqZWN0LXBvc2l0aW9uOiBjZW50ZXI7XHJcblx0XHRcdFx0Ym9yZGVyLXJhZGl1czogaW5oZXJpdDtcclxuXHRcdFx0XHRkaXNwbGF5OiBub25lO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0Ji0tcGxhY2Vob2xkZXIge1xyXG5cdFx0XHR3aWR0aDogdmFyKC0taW1nLXcpO1xyXG5cdFx0XHRoZWlnaHQ6IHZhcigtLWltZy1oKTtcclxuXHRcdFx0ZGlzcGxheTogZ3JpZDtcclxuXHRcdFx0Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgM2ZyO1xyXG5cdFx0XHRvdmVyZmxvdzogY2xpcDtcclxuXHRcdFx0Ym94LXNoYWRvdzogMCAwIDAgMnB4IGhzbGEodmFyKC0tYWNjZW50LWhzbCkgLyAwLjIpO1xyXG5cdFx0XHRib3JkZXItcmFkaXVzOiBpbmhlcml0O1xyXG5cclxuXHRcdFx0YXNpZGUge1xyXG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6IGhzbGEodmFyKC0tYWNjZW50LWhzbCkgLyAwLjIpO1xyXG5cdFx0XHR9XHJcblx0XHRcdHNlY3Rpb24ge1xyXG5cdFx0XHRcdC8vIGJhY2tncm91bmQtY29sb3I6IGhzbGEodmFyKC0tYWNjZW50LWhzbCkgLyAwLjAxKTtcclxuXHRcdFx0XHRkaXNwbGF5OiBncmlkO1xyXG5cdFx0XHRcdGdyaWQtdGVtcGxhdGUtcm93czogM2ZyIDRmciAyLjVmcjtcclxuXHRcdFx0XHRnYXA6IDZweDtcclxuXHRcdFx0XHRwYWRkaW5nOiA1cHggMTBweDtcclxuXHJcblx0XHRcdFx0YXJ0aWNsZSB7XHJcblx0XHRcdFx0XHR3aWR0aDogNzAlO1xyXG5cdFx0XHRcdFx0Ym9yZGVyLXJhZGl1czogMTBweDtcclxuXHJcblx0XHRcdFx0XHQmOm50aC1jaGlsZCgxKSB7XHJcblx0XHRcdFx0XHRcdC8vIGhlaWdodDogNTAlO1xyXG5cdFx0XHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBoc2xhKHZhcigtLWFjY2VudC1oc2wpIC8gMC40KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdCY6bnRoLWNoaWxkKDIpIHtcclxuXHRcdFx0XHRcdFx0Ly8gaGVpZ2h0OiAycmVtO1xyXG5cdFx0XHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBoc2xhKHZhcigtLWFjY2VudC1oc2wpIC8gMC4yKTtcclxuXHRcdFx0XHRcdFx0anVzdGlmeS1zZWxmOiBmbGV4LWVuZDtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdCY6bnRoLWNoaWxkKDMpIHtcclxuXHRcdFx0XHRcdFx0Ly8gaGVpZ2h0OiA0cmVtO1xyXG5cdFx0XHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBoc2xhKHZhcigtLWFjY2VudC1oc2wpIC8gMC40KTtcclxuXHRcdFx0XHRcdFx0Ly8ganVzdGlmeS1zZWxmOiBmbGV4LWVuZDtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcbn1cclxuXHJcbmh0bWwubGlnaHQge1xyXG5cdCYgW2RhdGEtZ3B0aC10aGVtZV06OmFmdGVyLFxyXG5cdC5ncHRoX19zdmctaWNvbjo6YWZ0ZXIge1xyXG5cdFx0Y29sb3I6IHZhcigtLWMtdHh0KTtcclxuXHR9XHJcbn1cclxuaHRtbC5kYXJrIHtcclxuXHQmIFtkYXRhLWdwdGgtdGhlbWVdOjphZnRlcixcclxuXHQuZ3B0aF9fc3ZnLWljb246OmFmdGVyIHtcclxuXHRcdGNvbG9yOiB2YXIoLS1jLW9uLWFjY2VudCk7XHJcblx0fVxyXG59XHJcbiJdLCJuYW1lcyI6W10sInZlcnNpb24iOjMsImZpbGUiOiJzYXNzLmZhZWQ4MzczLmNzcy5tYXAifQ== */ diff --git a/package.json b/package.json index a15fd2c..c231568 100644 --- a/package.json +++ b/package.json @@ -11,15 +11,15 @@ }, "homepage": "https://github.com/itsmartashub/GPThemes/", "scripts": { - "clean_dev": "rimraf .parcel-cache extension-dev", - "clean_prod": "rimraf .parcel-cache extension-prod", - "clean_zips": "rimraf extension-zips", + "clean-dev": "rimraf .parcel-cache extension-dev", + "clean-prod": "rimraf .parcel-cache extension-prod", + "clean-zips": "rimraf extension-zips", "dev": "parcel watch src/manifests/chrome/manifest.json --host localhost --dist-dir extension-dev/chromium", - "dev_ff": "parcel watch src/manifests/firefox-mv2/manifest.json --host localhost --dist-dir extension-dev/firefox-mv2", + "dev-ff": "parcel watch src/manifests/firefox-mv2/manifest.json --host localhost --dist-dir extension-dev/firefox-mv2", "build": "parcel build src/manifests/chrome/manifest.json --dist-dir extension-prod/gpthemes-chromium --no-source-maps", - "build_ff": "parcel build src/manifests/firefox-mv2/manifest.json --dist-dir extension-prod/gpthemes-firefox-mv2 --no-source-maps", + "build-ff": "parcel build src/manifests/firefox-mv2/manifest.json --dist-dir extension-prod/gpthemes-firefox-mv2 --no-source-maps", "zip": "node ./scripts/zip.js", - "build_all": "npm run clean_prod && npm run build && npm run build_ff && npm run zip" + "build-all": "npm run clean-prod && npm run build && npm run build-ff && npm run zip" }, "author": "itsmarta", "keywords": [ diff --git a/src/sass/elements/_menu.scss b/src/sass/elements/_menu.scss index 78766fb..17153ab 100644 --- a/src/sass/elements/_menu.scss +++ b/src/sass/elements/_menu.scss @@ -52,6 +52,15 @@ div[data-radix-popper-content-wrapper] { z-index: calc(var(--z-modal) + 50) !important; // z-index: 200 !important; + /* "Custom Instructions" dialog */ + &:has([role='dialog']) { + /* "Custom Instructions" dialog context menu visible on textarea focus */ + [role='dialog'] { + --box-shadow: var(--box-shadow-contextmenu) !important; + // box-shadow: var(--box-shadow-contextmenu) !important; + } + } + /* Mora not role=menu da ne bih selektovala i onaj contextmenu u sidebar kad se klikne na prompt listitem 3 dots za opcije i div[data-radix-popper-content-wrapper]:has([role='tooltip']) da ne bih selektovala tooltip */ &:not( div[data-radix-popper-content-wrapper]:has(div[role='menu']),