@overlap.ai/react-video-subtitles 1.0.2 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.esm.js +2 -2
- package/dist/index.js +2 -2
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -595,7 +595,7 @@ var SubtitleText = /*#__PURE__*/React.memo(function (_ref) {
|
|
|
595
595
|
// Calculate adjusted font size based on text width
|
|
596
596
|
var adjustedFontSize = React.useMemo(function () {
|
|
597
597
|
var maxLineWidth = style.maxLineWidth || 1080; // Default max width
|
|
598
|
-
var baseFontSize = style.fontSize
|
|
598
|
+
var baseFontSize = style.fontSize || 64; // Default font size
|
|
599
599
|
var fontFamily = style.fontFamily || 'Arial';
|
|
600
600
|
var textWidth = estimateTextWidth(text, baseFontSize, fontFamily);
|
|
601
601
|
if (textWidth > maxLineWidth) {
|
|
@@ -2514,4 +2514,4 @@ exports.useAdjustedPhrases = useAdjustedPhrases;
|
|
|
2514
2514
|
exports.useAdjustedPosition = useAdjustedPosition;
|
|
2515
2515
|
exports.useStyleConfig = useStyleConfig;
|
|
2516
2516
|
exports.useTextStyle = useTextStyle;
|
|
2517
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbIi4uL25vZGVfbW9kdWxlcy90c2xpYi90c2xpYi5lczYuanMiLCIuLi9zcmMvY29tcG9uZW50cy9TdWJ0aXRsZVRleHQuanN4IiwiLi4vc3JjL3V0aWxzL2ZpbmRQaHJhc2VzSW5SYW5nZS50cyIsIi4uL3NyYy9ob29rcy91c2VUZXh0U3R5bGUuanMiLCIuLi9zcmMvaG9va3MvZm9udExvYWRlci5qcyIsIi4uL3NyYy9jb21wb25lbnRzL1N1YnRpdGxlcy50c3giLCIuLi9zcmMvaG9va3MvdXNlU3R5bGVDb25maWcudHMiLCIuLi9zcmMvaG9va3MvdXNlQWRqdXN0ZWRQb3NpdGlvbi5qcyIsIi4uL3NyYy9ob29rcy91c2VBZGp1c3RlZFBocmFzZXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5Db3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi5cclxuXHJcblBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZC9vciBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueVxyXG5wdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQuXHJcblxyXG5USEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiIEFORCBUSEUgQVVUSE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUyBXSVRIXHJcblJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWVxyXG5BTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsXHJcbklORElSRUNULCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTVxyXG5MT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUlxyXG5PVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SXHJcblBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuXHJcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovXHJcbi8qIGdsb2JhbCBSZWZsZWN0LCBQcm9taXNlLCBTdXBwcmVzc2VkRXJyb3IsIFN5bWJvbCwgSXRlcmF0b3IgKi9cclxuXHJcbnZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24oZCwgYikge1xyXG4gICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxyXG4gICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcclxuICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYiwgcCkpIGRbcF0gPSBiW3BdOyB9O1xyXG4gICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19leHRlbmRzKGQsIGIpIHtcclxuICAgIGlmICh0eXBlb2YgYiAhPT0gXCJmdW5jdGlvblwiICYmIGIgIT09IG51bGwpXHJcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIgKyBTdHJpbmcoYikgKyBcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO1xyXG4gICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcclxuICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxyXG4gICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xyXG59XHJcblxyXG5leHBvcnQgdmFyIF9fYXNzaWduID0gZnVuY3Rpb24oKSB7XHJcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gX19hc3NpZ24odCkge1xyXG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xyXG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpIHRbcF0gPSBzW3BdO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdDtcclxuICAgIH1cclxuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19yZXN0KHMsIGUpIHtcclxuICAgIHZhciB0ID0ge307XHJcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcclxuICAgICAgICB0W3BdID0gc1twXTtcclxuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcclxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcclxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xyXG4gICAgICAgIH1cclxuICAgIHJldHVybiB0O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYykge1xyXG4gICAgdmFyIGMgPSBhcmd1bWVudHMubGVuZ3RoLCByID0gYyA8IDMgPyB0YXJnZXQgOiBkZXNjID09PSBudWxsID8gZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpIDogZGVzYywgZDtcclxuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSA9PT0gXCJmdW5jdGlvblwiKSByID0gUmVmbGVjdC5kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYyk7XHJcbiAgICBlbHNlIGZvciAodmFyIGkgPSBkZWNvcmF0b3JzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSBpZiAoZCA9IGRlY29yYXRvcnNbaV0pIHIgPSAoYyA8IDMgPyBkKHIpIDogYyA+IDMgPyBkKHRhcmdldCwga2V5LCByKSA6IGQodGFyZ2V0LCBrZXkpKSB8fCByO1xyXG4gICAgcmV0dXJuIGMgPiAzICYmIHIgJiYgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCByKSwgcjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcGFyYW0ocGFyYW1JbmRleCwgZGVjb3JhdG9yKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldCwga2V5KSB7IGRlY29yYXRvcih0YXJnZXQsIGtleSwgcGFyYW1JbmRleCk7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZXNEZWNvcmF0ZShjdG9yLCBkZXNjcmlwdG9ySW4sIGRlY29yYXRvcnMsIGNvbnRleHRJbiwgaW5pdGlhbGl6ZXJzLCBleHRyYUluaXRpYWxpemVycykge1xyXG4gICAgZnVuY3Rpb24gYWNjZXB0KGYpIHsgaWYgKGYgIT09IHZvaWQgMCAmJiB0eXBlb2YgZiAhPT0gXCJmdW5jdGlvblwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRnVuY3Rpb24gZXhwZWN0ZWRcIik7IHJldHVybiBmOyB9XHJcbiAgICB2YXIga2luZCA9IGNvbnRleHRJbi5raW5kLCBrZXkgPSBraW5kID09PSBcImdldHRlclwiID8gXCJnZXRcIiA6IGtpbmQgPT09IFwic2V0dGVyXCIgPyBcInNldFwiIDogXCJ2YWx1ZVwiO1xyXG4gICAgdmFyIHRhcmdldCA9ICFkZXNjcmlwdG9ySW4gJiYgY3RvciA/IGNvbnRleHRJbltcInN0YXRpY1wiXSA/IGN0b3IgOiBjdG9yLnByb3RvdHlwZSA6IG51bGw7XHJcbiAgICB2YXIgZGVzY3JpcHRvciA9IGRlc2NyaXB0b3JJbiB8fCAodGFyZ2V0ID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGNvbnRleHRJbi5uYW1lKSA6IHt9KTtcclxuICAgIHZhciBfLCBkb25lID0gZmFsc2U7XHJcbiAgICBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xyXG4gICAgICAgIHZhciBjb250ZXh0ID0ge307XHJcbiAgICAgICAgZm9yICh2YXIgcCBpbiBjb250ZXh0SW4pIGNvbnRleHRbcF0gPSBwID09PSBcImFjY2Vzc1wiID8ge30gOiBjb250ZXh0SW5bcF07XHJcbiAgICAgICAgZm9yICh2YXIgcCBpbiBjb250ZXh0SW4uYWNjZXNzKSBjb250ZXh0LmFjY2Vzc1twXSA9IGNvbnRleHRJbi5hY2Nlc3NbcF07XHJcbiAgICAgICAgY29udGV4dC5hZGRJbml0aWFsaXplciA9IGZ1bmN0aW9uIChmKSB7IGlmIChkb25lKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkXCIpOyBleHRyYUluaXRpYWxpemVycy5wdXNoKGFjY2VwdChmIHx8IG51bGwpKTsgfTtcclxuICAgICAgICB2YXIgcmVzdWx0ID0gKDAsIGRlY29yYXRvcnNbaV0pKGtpbmQgPT09IFwiYWNjZXNzb3JcIiA/IHsgZ2V0OiBkZXNjcmlwdG9yLmdldCwgc2V0OiBkZXNjcmlwdG9yLnNldCB9IDogZGVzY3JpcHRvcltrZXldLCBjb250ZXh0KTtcclxuICAgICAgICBpZiAoa2luZCA9PT0gXCJhY2Nlc3NvclwiKSB7XHJcbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IHZvaWQgMCkgY29udGludWU7XHJcbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IG51bGwgfHwgdHlwZW9mIHJlc3VsdCAhPT0gXCJvYmplY3RcIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk9iamVjdCBleHBlY3RlZFwiKTtcclxuICAgICAgICAgICAgaWYgKF8gPSBhY2NlcHQocmVzdWx0LmdldCkpIGRlc2NyaXB0b3IuZ2V0ID0gXztcclxuICAgICAgICAgICAgaWYgKF8gPSBhY2NlcHQocmVzdWx0LnNldCkpIGRlc2NyaXB0b3Iuc2V0ID0gXztcclxuICAgICAgICAgICAgaWYgKF8gPSBhY2NlcHQocmVzdWx0LmluaXQpKSBpbml0aWFsaXplcnMudW5zaGlmdChfKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoXyA9IGFjY2VwdChyZXN1bHQpKSB7XHJcbiAgICAgICAgICAgIGlmIChraW5kID09PSBcImZpZWxkXCIpIGluaXRpYWxpemVycy51bnNoaWZ0KF8pO1xyXG4gICAgICAgICAgICBlbHNlIGRlc2NyaXB0b3Jba2V5XSA9IF87XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRhcmdldCkgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgY29udGV4dEluLm5hbWUsIGRlc2NyaXB0b3IpO1xyXG4gICAgZG9uZSA9IHRydWU7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19ydW5Jbml0aWFsaXplcnModGhpc0FyZywgaW5pdGlhbGl6ZXJzLCB2YWx1ZSkge1xyXG4gICAgdmFyIHVzZVZhbHVlID0gYXJndW1lbnRzLmxlbmd0aCA+IDI7XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGluaXRpYWxpemVycy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHZhbHVlID0gdXNlVmFsdWUgPyBpbml0aWFsaXplcnNbaV0uY2FsbCh0aGlzQXJnLCB2YWx1ZSkgOiBpbml0aWFsaXplcnNbaV0uY2FsbCh0aGlzQXJnKTtcclxuICAgIH1cclxuICAgIHJldHVybiB1c2VWYWx1ZSA/IHZhbHVlIDogdm9pZCAwO1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcHJvcEtleSh4KSB7XHJcbiAgICByZXR1cm4gdHlwZW9mIHggPT09IFwic3ltYm9sXCIgPyB4IDogXCJcIi5jb25jYXQoeCk7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19zZXRGdW5jdGlvbk5hbWUoZiwgbmFtZSwgcHJlZml4KSB7XHJcbiAgICBpZiAodHlwZW9mIG5hbWUgPT09IFwic3ltYm9sXCIpIG5hbWUgPSBuYW1lLmRlc2NyaXB0aW9uID8gXCJbXCIuY29uY2F0KG5hbWUuZGVzY3JpcHRpb24sIFwiXVwiKSA6IFwiXCI7XHJcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGYsIFwibmFtZVwiLCB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSwgdmFsdWU6IHByZWZpeCA/IFwiXCIuY29uY2F0KHByZWZpeCwgXCIgXCIsIG5hbWUpIDogbmFtZSB9KTtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX21ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKSB7XHJcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QubWV0YWRhdGEgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIFJlZmxlY3QubWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xyXG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XHJcbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcclxuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cclxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XHJcbiAgICB9KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZ2VuZXJhdG9yKHRoaXNBcmcsIGJvZHkpIHtcclxuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGcgPSBPYmplY3QuY3JlYXRlKCh0eXBlb2YgSXRlcmF0b3IgPT09IFwiZnVuY3Rpb25cIiA/IEl0ZXJhdG9yIDogT2JqZWN0KS5wcm90b3R5cGUpO1xyXG4gICAgcmV0dXJuIGcubmV4dCA9IHZlcmIoMCksIGdbXCJ0aHJvd1wiXSA9IHZlcmIoMSksIGdbXCJyZXR1cm5cIl0gPSB2ZXJiKDIpLCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cclxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcclxuICAgICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XHJcbiAgICAgICAgd2hpbGUgKGcgJiYgKGcgPSAwLCBvcFswXSAmJiAoXyA9IDApKSwgXykgdHJ5IHtcclxuICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xyXG4gICAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XHJcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcclxuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxyXG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgdmFyIF9fY3JlYXRlQmluZGluZyA9IE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcclxuICAgIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XHJcbiAgICB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobSwgayk7XHJcbiAgICBpZiAoIWRlc2MgfHwgKFwiZ2V0XCIgaW4gZGVzYyA/ICFtLl9fZXNNb2R1bGUgOiBkZXNjLndyaXRhYmxlIHx8IGRlc2MuY29uZmlndXJhYmxlKSkge1xyXG4gICAgICAgIGRlc2MgPSB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24oKSB7IHJldHVybiBtW2tdOyB9IH07XHJcbiAgICB9XHJcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgazIsIGRlc2MpO1xyXG59KSA6IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xyXG4gICAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcclxuICAgIG9bazJdID0gbVtrXTtcclxufSk7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19leHBvcnRTdGFyKG0sIG8pIHtcclxuICAgIGZvciAodmFyIHAgaW4gbSkgaWYgKHAgIT09IFwiZGVmYXVsdFwiICYmICFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobywgcCkpIF9fY3JlYXRlQmluZGluZyhvLCBtLCBwKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fdmFsdWVzKG8pIHtcclxuICAgIHZhciBzID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIFN5bWJvbC5pdGVyYXRvciwgbSA9IHMgJiYgb1tzXSwgaSA9IDA7XHJcbiAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTtcclxuICAgIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gXCJudW1iZXJcIikgcmV0dXJuIHtcclxuICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7XHJcbiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihzID8gXCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiIDogXCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19yZWFkKG8sIG4pIHtcclxuICAgIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXTtcclxuICAgIGlmICghbSkgcmV0dXJuIG87XHJcbiAgICB2YXIgaSA9IG0uY2FsbChvKSwgciwgYXIgPSBbXSwgZTtcclxuICAgIHRyeSB7XHJcbiAgICAgICAgd2hpbGUgKChuID09PSB2b2lkIDAgfHwgbi0tID4gMCkgJiYgIShyID0gaS5uZXh0KCkpLmRvbmUpIGFyLnB1c2goci52YWx1ZSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXJyb3IpIHsgZSA9IHsgZXJyb3I6IGVycm9yIH07IH1cclxuICAgIGZpbmFsbHkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGlmIChyICYmICFyLmRvbmUgJiYgKG0gPSBpW1wicmV0dXJuXCJdKSkgbS5jYWxsKGkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmaW5hbGx5IHsgaWYgKGUpIHRocm93IGUuZXJyb3I7IH1cclxuICAgIH1cclxuICAgIHJldHVybiBhcjtcclxufVxyXG5cclxuLyoqIEBkZXByZWNhdGVkICovXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZCgpIHtcclxuICAgIGZvciAodmFyIGFyID0gW10sIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKVxyXG4gICAgICAgIGFyID0gYXIuY29uY2F0KF9fcmVhZChhcmd1bWVudHNbaV0pKTtcclxuICAgIHJldHVybiBhcjtcclxufVxyXG5cclxuLyoqIEBkZXByZWNhdGVkICovXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZEFycmF5cygpIHtcclxuICAgIGZvciAodmFyIHMgPSAwLCBpID0gMCwgaWwgPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgaWw7IGkrKykgcyArPSBhcmd1bWVudHNbaV0ubGVuZ3RoO1xyXG4gICAgZm9yICh2YXIgciA9IEFycmF5KHMpLCBrID0gMCwgaSA9IDA7IGkgPCBpbDsgaSsrKVxyXG4gICAgICAgIGZvciAodmFyIGEgPSBhcmd1bWVudHNbaV0sIGogPSAwLCBqbCA9IGEubGVuZ3RoOyBqIDwgamw7IGorKywgaysrKVxyXG4gICAgICAgICAgICByW2tdID0gYVtqXTtcclxuICAgIHJldHVybiByO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19zcHJlYWRBcnJheSh0bywgZnJvbSwgcGFjaykge1xyXG4gICAgaWYgKHBhY2sgfHwgYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgZm9yICh2YXIgaSA9IDAsIGwgPSBmcm9tLmxlbmd0aCwgYXI7IGkgPCBsOyBpKyspIHtcclxuICAgICAgICBpZiAoYXIgfHwgIShpIGluIGZyb20pKSB7XHJcbiAgICAgICAgICAgIGlmICghYXIpIGFyID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZnJvbSwgMCwgaSk7XHJcbiAgICAgICAgICAgIGFyW2ldID0gZnJvbVtpXTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdG8uY29uY2F0KGFyIHx8IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20pKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXdhaXQodikge1xyXG4gICAgcmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBfX2F3YWl0ID8gKHRoaXMudiA9IHYsIHRoaXMpIDogbmV3IF9fYXdhaXQodik7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jR2VuZXJhdG9yKHRoaXNBcmcsIF9hcmd1bWVudHMsIGdlbmVyYXRvcikge1xyXG4gICAgaWYgKCFTeW1ib2wuYXN5bmNJdGVyYXRvcikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcclxuICAgIHZhciBnID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pLCBpLCBxID0gW107XHJcbiAgICByZXR1cm4gaSA9IE9iamVjdC5jcmVhdGUoKHR5cGVvZiBBc3luY0l0ZXJhdG9yID09PSBcImZ1bmN0aW9uXCIgPyBBc3luY0l0ZXJhdG9yIDogT2JqZWN0KS5wcm90b3R5cGUpLCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIpLCB2ZXJiKFwicmV0dXJuXCIsIGF3YWl0UmV0dXJuKSwgaVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpO1xyXG4gICAgZnVuY3Rpb24gYXdhaXRSZXR1cm4oZikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh2KS50aGVuKGYsIHJlamVjdCk7IH07IH1cclxuICAgIGZ1bmN0aW9uIHZlcmIobiwgZikgeyBpZiAoZ1tuXSkgeyBpW25dID0gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChhLCBiKSB7IHEucHVzaChbbiwgdiwgYSwgYl0pID4gMSB8fCByZXN1bWUobiwgdik7IH0pOyB9OyBpZiAoZikgaVtuXSA9IGYoaVtuXSk7IH0gfVxyXG4gICAgZnVuY3Rpb24gcmVzdW1lKG4sIHYpIHsgdHJ5IHsgc3RlcChnW25dKHYpKTsgfSBjYXRjaCAoZSkgeyBzZXR0bGUocVswXVszXSwgZSk7IH0gfVxyXG4gICAgZnVuY3Rpb24gc3RlcChyKSB7IHIudmFsdWUgaW5zdGFuY2VvZiBfX2F3YWl0ID8gUHJvbWlzZS5yZXNvbHZlKHIudmFsdWUudikudGhlbihmdWxmaWxsLCByZWplY3QpIDogc2V0dGxlKHFbMF1bMl0sIHIpOyB9XHJcbiAgICBmdW5jdGlvbiBmdWxmaWxsKHZhbHVlKSB7IHJlc3VtZShcIm5leHRcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiByZWplY3QodmFsdWUpIHsgcmVzdW1lKFwidGhyb3dcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiBzZXR0bGUoZiwgdikgeyBpZiAoZih2KSwgcS5zaGlmdCgpLCBxLmxlbmd0aCkgcmVzdW1lKHFbMF1bMF0sIHFbMF1bMV0pOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jRGVsZWdhdG9yKG8pIHtcclxuICAgIHZhciBpLCBwO1xyXG4gICAgcmV0dXJuIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiLCBmdW5jdGlvbiAoZSkgeyB0aHJvdyBlOyB9KSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobiwgZikgeyBpW25dID0gb1tuXSA/IGZ1bmN0aW9uICh2KSB7IHJldHVybiAocCA9ICFwKSA/IHsgdmFsdWU6IF9fYXdhaXQob1tuXSh2KSksIGRvbmU6IGZhbHNlIH0gOiBmID8gZih2KSA6IHY7IH0gOiBmOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jVmFsdWVzKG8pIHtcclxuICAgIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbiAgICB2YXIgbSA9IG9bU3ltYm9sLmFzeW5jSXRlcmF0b3JdLCBpO1xyXG4gICAgcmV0dXJuIG0gPyBtLmNhbGwobykgOiAobyA9IHR5cGVvZiBfX3ZhbHVlcyA9PT0gXCJmdW5jdGlvblwiID8gX192YWx1ZXMobykgOiBvW1N5bWJvbC5pdGVyYXRvcl0oKSwgaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIpLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGkpO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IGlbbl0gPSBvW25dICYmIGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7IHYgPSBvW25dKHYpLCBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCB2LmRvbmUsIHYudmFsdWUpOyB9KTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgZCwgdikgeyBQcm9taXNlLnJlc29sdmUodikudGhlbihmdW5jdGlvbih2KSB7IHJlc29sdmUoeyB2YWx1ZTogdiwgZG9uZTogZCB9KTsgfSwgcmVqZWN0KTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19tYWtlVGVtcGxhdGVPYmplY3QoY29va2VkLCByYXcpIHtcclxuICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvb2tlZCwgXCJyYXdcIiwgeyB2YWx1ZTogcmF3IH0pOyB9IGVsc2UgeyBjb29rZWQucmF3ID0gcmF3OyB9XHJcbiAgICByZXR1cm4gY29va2VkO1xyXG59O1xyXG5cclxudmFyIF9fc2V0TW9kdWxlRGVmYXVsdCA9IE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgdikge1xyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIFwiZGVmYXVsdFwiLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2IH0pO1xyXG59KSA6IGZ1bmN0aW9uKG8sIHYpIHtcclxuICAgIG9bXCJkZWZhdWx0XCJdID0gdjtcclxufTtcclxuXHJcbnZhciBvd25LZXlzID0gZnVuY3Rpb24obykge1xyXG4gICAgb3duS2V5cyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzIHx8IGZ1bmN0aW9uIChvKSB7XHJcbiAgICAgICAgdmFyIGFyID0gW107XHJcbiAgICAgICAgZm9yICh2YXIgayBpbiBvKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG8sIGspKSBhclthci5sZW5ndGhdID0gaztcclxuICAgICAgICByZXR1cm4gYXI7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIG93bktleXMobyk7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19pbXBvcnRTdGFyKG1vZCkge1xyXG4gICAgaWYgKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgcmV0dXJuIG1vZDtcclxuICAgIHZhciByZXN1bHQgPSB7fTtcclxuICAgIGlmIChtb2QgIT0gbnVsbCkgZm9yICh2YXIgayA9IG93bktleXMobW9kKSwgaSA9IDA7IGkgPCBrLmxlbmd0aDsgaSsrKSBpZiAoa1tpXSAhPT0gXCJkZWZhdWx0XCIpIF9fY3JlYXRlQmluZGluZyhyZXN1bHQsIG1vZCwga1tpXSk7XHJcbiAgICBfX3NldE1vZHVsZURlZmF1bHQocmVzdWx0LCBtb2QpO1xyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9faW1wb3J0RGVmYXVsdChtb2QpIHtcclxuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgZGVmYXVsdDogbW9kIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHJlY2VpdmVyLCBzdGF0ZSwga2luZCwgZikge1xyXG4gICAgaWYgKGtpbmQgPT09IFwiYVwiICYmICFmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBhY2Nlc3NvciB3YXMgZGVmaW5lZCB3aXRob3V0IGEgZ2V0dGVyXCIpO1xyXG4gICAgaWYgKHR5cGVvZiBzdGF0ZSA9PT0gXCJmdW5jdGlvblwiID8gcmVjZWl2ZXIgIT09IHN0YXRlIHx8ICFmIDogIXN0YXRlLmhhcyhyZWNlaXZlcikpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgcmVhZCBwcml2YXRlIG1lbWJlciBmcm9tIGFuIG9iamVjdCB3aG9zZSBjbGFzcyBkaWQgbm90IGRlY2xhcmUgaXRcIik7XHJcbiAgICByZXR1cm4ga2luZCA9PT0gXCJtXCIgPyBmIDoga2luZCA9PT0gXCJhXCIgPyBmLmNhbGwocmVjZWl2ZXIpIDogZiA/IGYudmFsdWUgOiBzdGF0ZS5nZXQocmVjZWl2ZXIpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZFNldChyZWNlaXZlciwgc3RhdGUsIHZhbHVlLCBraW5kLCBmKSB7XHJcbiAgICBpZiAoa2luZCA9PT0gXCJtXCIpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJQcml2YXRlIG1ldGhvZCBpcyBub3Qgd3JpdGFibGVcIik7XHJcbiAgICBpZiAoa2luZCA9PT0gXCJhXCIgJiYgIWYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJQcml2YXRlIGFjY2Vzc29yIHdhcyBkZWZpbmVkIHdpdGhvdXQgYSBzZXR0ZXJcIik7XHJcbiAgICBpZiAodHlwZW9mIHN0YXRlID09PSBcImZ1bmN0aW9uXCIgPyByZWNlaXZlciAhPT0gc3RhdGUgfHwgIWYgOiAhc3RhdGUuaGFzKHJlY2VpdmVyKSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCB3cml0ZSBwcml2YXRlIG1lbWJlciB0byBhbiBvYmplY3Qgd2hvc2UgY2xhc3MgZGlkIG5vdCBkZWNsYXJlIGl0XCIpO1xyXG4gICAgcmV0dXJuIChraW5kID09PSBcImFcIiA/IGYuY2FsbChyZWNlaXZlciwgdmFsdWUpIDogZiA/IGYudmFsdWUgPSB2YWx1ZSA6IHN0YXRlLnNldChyZWNlaXZlciwgdmFsdWUpKSwgdmFsdWU7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2NsYXNzUHJpdmF0ZUZpZWxkSW4oc3RhdGUsIHJlY2VpdmVyKSB7XHJcbiAgICBpZiAocmVjZWl2ZXIgPT09IG51bGwgfHwgKHR5cGVvZiByZWNlaXZlciAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgcmVjZWl2ZXIgIT09IFwiZnVuY3Rpb25cIikpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgdXNlICdpbicgb3BlcmF0b3Igb24gbm9uLW9iamVjdFwiKTtcclxuICAgIHJldHVybiB0eXBlb2Ygc3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IHJlY2VpdmVyID09PSBzdGF0ZSA6IHN0YXRlLmhhcyhyZWNlaXZlcik7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FkZERpc3Bvc2FibGVSZXNvdXJjZShlbnYsIHZhbHVlLCBhc3luYykge1xyXG4gICAgaWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB2b2lkIDApIHtcclxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiB2YWx1ZSAhPT0gXCJmdW5jdGlvblwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiT2JqZWN0IGV4cGVjdGVkLlwiKTtcclxuICAgICAgICB2YXIgZGlzcG9zZSwgaW5uZXI7XHJcbiAgICAgICAgaWYgKGFzeW5jKSB7XHJcbiAgICAgICAgICAgIGlmICghU3ltYm9sLmFzeW5jRGlzcG9zZSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0Rpc3Bvc2UgaXMgbm90IGRlZmluZWQuXCIpO1xyXG4gICAgICAgICAgICBkaXNwb3NlID0gdmFsdWVbU3ltYm9sLmFzeW5jRGlzcG9zZV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChkaXNwb3NlID09PSB2b2lkIDApIHtcclxuICAgICAgICAgICAgaWYgKCFTeW1ib2wuZGlzcG9zZSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5kaXNwb3NlIGlzIG5vdCBkZWZpbmVkLlwiKTtcclxuICAgICAgICAgICAgZGlzcG9zZSA9IHZhbHVlW1N5bWJvbC5kaXNwb3NlXTtcclxuICAgICAgICAgICAgaWYgKGFzeW5jKSBpbm5lciA9IGRpc3Bvc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0eXBlb2YgZGlzcG9zZSAhPT0gXCJmdW5jdGlvblwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiT2JqZWN0IG5vdCBkaXNwb3NhYmxlLlwiKTtcclxuICAgICAgICBpZiAoaW5uZXIpIGRpc3Bvc2UgPSBmdW5jdGlvbigpIHsgdHJ5IHsgaW5uZXIuY2FsbCh0aGlzKTsgfSBjYXRjaCAoZSkgeyByZXR1cm4gUHJvbWlzZS5yZWplY3QoZSk7IH0gfTtcclxuICAgICAgICBlbnYuc3RhY2sucHVzaCh7IHZhbHVlOiB2YWx1ZSwgZGlzcG9zZTogZGlzcG9zZSwgYXN5bmM6IGFzeW5jIH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoYXN5bmMpIHtcclxuICAgICAgICBlbnYuc3RhY2sucHVzaCh7IGFzeW5jOiB0cnVlIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZhbHVlO1xyXG5cclxufVxyXG5cclxudmFyIF9TdXBwcmVzc2VkRXJyb3IgPSB0eXBlb2YgU3VwcHJlc3NlZEVycm9yID09PSBcImZ1bmN0aW9uXCIgPyBTdXBwcmVzc2VkRXJyb3IgOiBmdW5jdGlvbiAoZXJyb3IsIHN1cHByZXNzZWQsIG1lc3NhZ2UpIHtcclxuICAgIHZhciBlID0gbmV3IEVycm9yKG1lc3NhZ2UpO1xyXG4gICAgcmV0dXJuIGUubmFtZSA9IFwiU3VwcHJlc3NlZEVycm9yXCIsIGUuZXJyb3IgPSBlcnJvciwgZS5zdXBwcmVzc2VkID0gc3VwcHJlc3NlZCwgZTtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2Rpc3Bvc2VSZXNvdXJjZXMoZW52KSB7XHJcbiAgICBmdW5jdGlvbiBmYWlsKGUpIHtcclxuICAgICAgICBlbnYuZXJyb3IgPSBlbnYuaGFzRXJyb3IgPyBuZXcgX1N1cHByZXNzZWRFcnJvcihlLCBlbnYuZXJyb3IsIFwiQW4gZXJyb3Igd2FzIHN1cHByZXNzZWQgZHVyaW5nIGRpc3Bvc2FsLlwiKSA6IGU7XHJcbiAgICAgICAgZW52Lmhhc0Vycm9yID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIHZhciByLCBzID0gMDtcclxuICAgIGZ1bmN0aW9uIG5leHQoKSB7XHJcbiAgICAgICAgd2hpbGUgKHIgPSBlbnYuc3RhY2sucG9wKCkpIHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIGlmICghci5hc3luYyAmJiBzID09PSAxKSByZXR1cm4gcyA9IDAsIGVudi5zdGFjay5wdXNoKHIpLCBQcm9taXNlLnJlc29sdmUoKS50aGVuKG5leHQpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHIuZGlzcG9zZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSByLmRpc3Bvc2UuY2FsbChyLnZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoci5hc3luYykgcmV0dXJuIHMgfD0gMiwgUHJvbWlzZS5yZXNvbHZlKHJlc3VsdCkudGhlbihuZXh0LCBmdW5jdGlvbihlKSB7IGZhaWwoZSk7IHJldHVybiBuZXh0KCk7IH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBzIHw9IDE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgIGZhaWwoZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHMgPT09IDEpIHJldHVybiBlbnYuaGFzRXJyb3IgPyBQcm9taXNlLnJlamVjdChlbnYuZXJyb3IpIDogUHJvbWlzZS5yZXNvbHZlKCk7XHJcbiAgICAgICAgaWYgKGVudi5oYXNFcnJvcikgdGhyb3cgZW52LmVycm9yO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5leHQoKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcmV3cml0ZVJlbGF0aXZlSW1wb3J0RXh0ZW5zaW9uKHBhdGgsIHByZXNlcnZlSnN4KSB7XHJcbiAgICBpZiAodHlwZW9mIHBhdGggPT09IFwic3RyaW5nXCIgJiYgL15cXC5cXC4/XFwvLy50ZXN0KHBhdGgpKSB7XHJcbiAgICAgICAgcmV0dXJuIHBhdGgucmVwbGFjZSgvXFwuKHRzeCkkfCgoPzpcXC5kKT8pKCg/OlxcLlteLi9dKz8pPylcXC4oW2NtXT8pdHMkL2ksIGZ1bmN0aW9uIChtLCB0c3gsIGQsIGV4dCwgY20pIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRzeCA/IHByZXNlcnZlSnN4ID8gXCIuanN4XCIgOiBcIi5qc1wiIDogZCAmJiAoIWV4dCB8fCAhY20pID8gbSA6IChkICsgZXh0ICsgXCIuXCIgKyBjbS50b0xvd2VyQ2FzZSgpICsgXCJqc1wiKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiBwYXRoO1xyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCB7XHJcbiAgICBfX2V4dGVuZHM6IF9fZXh0ZW5kcyxcclxuICAgIF9fYXNzaWduOiBfX2Fzc2lnbixcclxuICAgIF9fcmVzdDogX19yZXN0LFxyXG4gICAgX19kZWNvcmF0ZTogX19kZWNvcmF0ZSxcclxuICAgIF9fcGFyYW06IF9fcGFyYW0sXHJcbiAgICBfX2VzRGVjb3JhdGU6IF9fZXNEZWNvcmF0ZSxcclxuICAgIF9fcnVuSW5pdGlhbGl6ZXJzOiBfX3J1bkluaXRpYWxpemVycyxcclxuICAgIF9fcHJvcEtleTogX19wcm9wS2V5LFxyXG4gICAgX19zZXRGdW5jdGlvbk5hbWU6IF9fc2V0RnVuY3Rpb25OYW1lLFxyXG4gICAgX19tZXRhZGF0YTogX19tZXRhZGF0YSxcclxuICAgIF9fYXdhaXRlcjogX19hd2FpdGVyLFxyXG4gICAgX19nZW5lcmF0b3I6IF9fZ2VuZXJhdG9yLFxyXG4gICAgX19jcmVhdGVCaW5kaW5nOiBfX2NyZWF0ZUJpbmRpbmcsXHJcbiAgICBfX2V4cG9ydFN0YXI6IF9fZXhwb3J0U3RhcixcclxuICAgIF9fdmFsdWVzOiBfX3ZhbHVlcyxcclxuICAgIF9fcmVhZDogX19yZWFkLFxyXG4gICAgX19zcHJlYWQ6IF9fc3ByZWFkLFxyXG4gICAgX19zcHJlYWRBcnJheXM6IF9fc3ByZWFkQXJyYXlzLFxyXG4gICAgX19zcHJlYWRBcnJheTogX19zcHJlYWRBcnJheSxcclxuICAgIF9fYXdhaXQ6IF9fYXdhaXQsXHJcbiAgICBfX2FzeW5jR2VuZXJhdG9yOiBfX2FzeW5jR2VuZXJhdG9yLFxyXG4gICAgX19hc3luY0RlbGVnYXRvcjogX19hc3luY0RlbGVnYXRvcixcclxuICAgIF9fYXN5bmNWYWx1ZXM6IF9fYXN5bmNWYWx1ZXMsXHJcbiAgICBfX21ha2VUZW1wbGF0ZU9iamVjdDogX19tYWtlVGVtcGxhdGVPYmplY3QsXHJcbiAgICBfX2ltcG9ydFN0YXI6IF9faW1wb3J0U3RhcixcclxuICAgIF9faW1wb3J0RGVmYXVsdDogX19pbXBvcnREZWZhdWx0LFxyXG4gICAgX19jbGFzc1ByaXZhdGVGaWVsZEdldDogX19jbGFzc1ByaXZhdGVGaWVsZEdldCxcclxuICAgIF9fY2xhc3NQcml2YXRlRmllbGRTZXQ6IF9fY2xhc3NQcml2YXRlRmllbGRTZXQsXHJcbiAgICBfX2NsYXNzUHJpdmF0ZUZpZWxkSW46IF9fY2xhc3NQcml2YXRlRmllbGRJbixcclxuICAgIF9fYWRkRGlzcG9zYWJsZVJlc291cmNlOiBfX2FkZERpc3Bvc2FibGVSZXNvdXJjZSxcclxuICAgIF9fZGlzcG9zZVJlc291cmNlczogX19kaXNwb3NlUmVzb3VyY2VzLFxyXG4gICAgX19yZXdyaXRlUmVsYXRpdmVJbXBvcnRFeHRlbnNpb246IF9fcmV3cml0ZVJlbGF0aXZlSW1wb3J0RXh0ZW5zaW9uLFxyXG59O1xyXG4iLCJpbXBvcnQgUmVhY3QseyBtZW1vLCB1c2VNZW1vLCB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHNwcmluZywgcmFuZG9tLCB1c2VDdXJyZW50RnJhbWUgfSBmcm9tIFwicmVtb3Rpb25cIjtcblxuLy8gSGVscGVyIGZ1bmN0aW9uIHRvIGVzdGltYXRlIHRleHQgd2lkdGhcbmNvbnN0IGVzdGltYXRlVGV4dFdpZHRoID0gKHRleHQsIGZvbnRTaXplLCBmb250RmFtaWx5KSA9PiB7XG4gIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XG4gIGNvbnRleHQuZm9udCA9IGAke2ZvbnRTaXplfXB4ICR7Zm9udEZhbWlseX1gO1xuICByZXR1cm4gY29udGV4dC5tZWFzdXJlVGV4dCh0ZXh0KS53aWR0aDtcbn07XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byBnZW5lcmF0ZSBvdXRsaW5lIHNoYWRvd1xuY29uc3QgZ2VuZXJhdGVPdXRsaW5lU2hhZG93ID0gKCgpID0+IHtcbiAgY29uc3QgY2FjaGUgPSBuZXcgTWFwKCk7XG4gIFxuICByZXR1cm4gKGNvbG9yLCB3aWR0aCwgb3V0bGluZVN0eWxlID0gXCJyb3VuZFwiKSA9PiB7XG4gICAgY29uc3Qga2V5ID0gYCR7Y29sb3J9LSR7d2lkdGh9LSR7b3V0bGluZVN0eWxlfWA7XG4gICAgaWYgKGNhY2hlLmhhcyhrZXkpKSB7XG4gICAgICByZXR1cm4gY2FjaGUuZ2V0KGtleSk7XG4gICAgfVxuICAgIFxuICAgIGNvbnN0IHNoYWRvd3MgPSBbXTtcbiAgICBjb25zdCBwYXJzZWRXaWR0aCA9IHBhcnNlSW50KHdpZHRoLCAxMCk7XG4gICAgXG4gICAgaWYgKG91dGxpbmVTdHlsZSA9PT0gXCJhbmd1bGFyXCIpIHtcbiAgICAgIC8vIENyZWF0ZSBzaGFycCBjb3JuZXJzIGJ5IHVzaW5nIHBlcnBlbmRpY3VsYXIgbGluZXNcbiAgICAgIC8vIFRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdFxuICAgICAgc2hhZG93cy5wdXNoKGAwIC0ke3BhcnNlZFdpZHRofXB4IDAgJHtjb2xvcn1gKTsgIC8vIFRvcFxuICAgICAgc2hhZG93cy5wdXNoKGAke3BhcnNlZFdpZHRofXB4IDAgMCAke2NvbG9yfWApOyAgIC8vIFJpZ2h0XG4gICAgICBzaGFkb3dzLnB1c2goYDAgJHtwYXJzZWRXaWR0aH1weCAwICR7Y29sb3J9YCk7ICAgLy8gQm90dG9tXG4gICAgICBzaGFkb3dzLnB1c2goYC0ke3BhcnNlZFdpZHRofXB4IDAgMCAke2NvbG9yfWApOyAgLy8gTGVmdFxuICAgICAgXG4gICAgICAvLyBBZGQgZGlhZ29uYWwgcG9pbnRzIGZvciBjb3JuZXJzXG4gICAgICBzaGFkb3dzLnB1c2goYCR7cGFyc2VkV2lkdGh9cHggLSR7cGFyc2VkV2lkdGh9cHggMCAke2NvbG9yfWApOyAgLy8gVG9wLXJpZ2h0XG4gICAgICBzaGFkb3dzLnB1c2goYCR7cGFyc2VkV2lkdGh9cHggJHtwYXJzZWRXaWR0aH1weCAwICR7Y29sb3J9YCk7ICAgLy8gQm90dG9tLXJpZ2h0XG4gICAgICBzaGFkb3dzLnB1c2goYC0ke3BhcnNlZFdpZHRofXB4ICR7cGFyc2VkV2lkdGh9cHggMCAke2NvbG9yfWApOyAgLy8gQm90dG9tLWxlZnRcbiAgICAgIHNoYWRvd3MucHVzaChgLSR7cGFyc2VkV2lkdGh9cHggLSR7cGFyc2VkV2lkdGh9cHggMCAke2NvbG9yfWApOyAvLyBUb3AtbGVmdFxuICAgICAgXG4gICAgICAvLyBBZGQgaW50ZXJtZWRpYXRlIHBvaW50cyBmb3IgYmV0dGVyIGNvdmVyYWdlXG4gICAgICBjb25zdCBoYWxmV2lkdGggPSBNYXRoLnJvdW5kKHBhcnNlZFdpZHRoICogMC43MDcxKTsgLy8gY29zKDQ1wrApIOKJiCAwLjcwNzFcbiAgICAgIHNoYWRvd3MucHVzaChgJHtoYWxmV2lkdGh9cHggLSR7cGFyc2VkV2lkdGh9cHggMCAke2NvbG9yfWApOyAgICAvLyBUb3AtcmlnaHQgaW50ZXJtZWRpYXRlXG4gICAgICBzaGFkb3dzLnB1c2goYCR7cGFyc2VkV2lkdGh9cHggLSR7aGFsZldpZHRofXB4IDAgJHtjb2xvcn1gKTsgICAgLy8gUmlnaHQtdG9wIGludGVybWVkaWF0ZVxuICAgICAgc2hhZG93cy5wdXNoKGAke3BhcnNlZFdpZHRofXB4ICR7aGFsZldpZHRofXB4IDAgJHtjb2xvcn1gKTsgICAgIC8vIFJpZ2h0LWJvdHRvbSBpbnRlcm1lZGlhdGVcbiAgICAgIHNoYWRvd3MucHVzaChgJHtoYWxmV2lkdGh9cHggJHtwYXJzZWRXaWR0aH1weCAwICR7Y29sb3J9YCk7ICAgICAvLyBCb3R0b20tcmlnaHQgaW50ZXJtZWRpYXRlXG4gICAgICBzaGFkb3dzLnB1c2goYC0ke2hhbGZXaWR0aH1weCAke3BhcnNlZFdpZHRofXB4IDAgJHtjb2xvcn1gKTsgICAgLy8gQm90dG9tLWxlZnQgaW50ZXJtZWRpYXRlXG4gICAgICBzaGFkb3dzLnB1c2goYC0ke3BhcnNlZFdpZHRofXB4ICR7aGFsZldpZHRofXB4IDAgJHtjb2xvcn1gKTsgICAgLy8gTGVmdC1ib3R0b20gaW50ZXJtZWRpYXRlXG4gICAgICBzaGFkb3dzLnB1c2goYC0ke3BhcnNlZFdpZHRofXB4IC0ke2hhbGZXaWR0aH1weCAwICR7Y29sb3J9YCk7ICAgLy8gTGVmdC10b3AgaW50ZXJtZWRpYXRlXG4gICAgICBzaGFkb3dzLnB1c2goYC0ke2hhbGZXaWR0aH1weCAtJHtwYXJzZWRXaWR0aH1weCAwICR7Y29sb3J9YCk7ICAgLy8gVG9wLWxlZnQgaW50ZXJtZWRpYXRlXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIE9yaWdpbmFsIHJvdW5kIHN0eWxlXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDM2MDsgaSArPSAyMi41KSB7XG4gICAgICAgIGNvbnN0IGFuZ2xlID0gKGkgKiBNYXRoLlBJKSAvIDE4MDtcbiAgICAgICAgY29uc3QgeCA9IE1hdGgucm91bmQoTWF0aC5jb3MoYW5nbGUpICogcGFyc2VkV2lkdGgpO1xuICAgICAgICBjb25zdCB5ID0gTWF0aC5yb3VuZChNYXRoLnNpbihhbmdsZSkgKiBwYXJzZWRXaWR0aCk7XG4gICAgICAgIHNoYWRvd3MucHVzaChgJHt4fXB4ICR7eX1weCAwICR7Y29sb3J9YCk7XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIGNvbnN0IHJlc3VsdCA9IHNoYWRvd3Muam9pbignLCcpO1xuICAgIGNhY2hlLnNldChrZXksIHJlc3VsdCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcbn0pKCk7XG5cblxuZXhwb3J0IGNvbnN0IFN1YnRpdGxlVGV4dCA9IG1lbW8oKHsgXG4gIHRleHQsIFxuICBzdHlsZSwgXG4gIGFuaW1hdGlvblN0eWxlLCBcbiAgZnJhbWUsXG4gIHN0YXJ0RnJhbWUsIFxuICByYW5kb21Db2xvcnMsIFxuICB3b3JkcywgXG4gIGZwcyxcbiAgaGlnaGxpZ2h0V29yZHNDb2xvcixcbn0pID0+IHtcbiAgY29uc3QgcmVsYXRpdmVGcmFtZSA9IGZyYW1lIC0gc3RhcnRGcmFtZTtcbiAgXG4gIGNvbnN0IHNjYWxlID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKGFuaW1hdGlvblN0eWxlID09PSBcInBsZWFzdXJlLXBvZC1hbmltYXRpb25cIikge1xuICAgICAgcmV0dXJuIHNwcmluZyh7XG4gICAgICAgIGZyYW1lOiByZWxhdGl2ZUZyYW1lLFxuICAgICAgICBmcm9tOiAwLjk1LFxuICAgICAgICB0bzogMS4wLCAgXG4gICAgICAgIGZwczogMzAsXG4gICAgICAgIGNvbmZpZzoge1xuICAgICAgICAgIGRhbXBpbmc6IDIwLFxuICAgICAgICAgIHN0aWZmbmVzczogNDAwLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGFuaW1hdGlvblN0eWxlID09PSBcInNwcmluZ1wiKSB7XG4gICAgICBjb25zdCBzcHJpbmdWYWx1ZSA9IHNwcmluZyh7XG4gICAgICAgIGZyYW1lOiByZWxhdGl2ZUZyYW1lLFxuICAgICAgICBmcm9tOiAwLjksXG4gICAgICAgIHRvOiAxLFxuICAgICAgICBmcHMsXG4gICAgICAgIGNvbmZpZzoge1xuICAgICAgICAgIG1hc3M6IDAuNSxcbiAgICAgICAgICBzdGlmZm5lc3M6IDE1MCxcbiAgICAgICAgICBkYW1waW5nOiAxNSxcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gc3ByaW5nVmFsdWU7XG4gICAgfVxuICAgIFxuICAgIHJldHVybiAxO1xuICB9LCBbYW5pbWF0aW9uU3R5bGUsIHJlbGF0aXZlRnJhbWUsIGZwc10pO1xuXG4gIGNvbnN0IHRyYW5zbGF0ZVkgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoYW5pbWF0aW9uU3R5bGUgPT09IFwic3ByaW5nXCIpIHtcbiAgICAgIGNvbnN0IHRyYW5zbGF0ZVZhbHVlID0gc3ByaW5nKHtcbiAgICAgICAgZnJhbWU6IHJlbGF0aXZlRnJhbWUsXG4gICAgICAgIGZyb206IDEwLFxuICAgICAgICB0bzogMCxcbiAgICAgICAgZnBzLFxuICAgICAgICBjb25maWc6IHtcbiAgICAgICAgICBtYXNzOiAwLjUsXG4gICAgICAgICAgc3RpZmZuZXNzOiAxNTAsXG4gICAgICAgICAgZGFtcGluZzogMTUsXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHRyYW5zbGF0ZVZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gMDtcbiAgfSwgW2FuaW1hdGlvblN0eWxlLCByZWxhdGl2ZUZyYW1lLCBmcHNdKTtcblxuXG4gIC8vIENhbGN1bGF0ZSBhZGp1c3RlZCBmb250IHNpemUgYmFzZWQgb24gdGV4dCB3aWR0aFxuICBjb25zdCBhZGp1c3RlZEZvbnRTaXplID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgbWF4TGluZVdpZHRoID0gc3R5bGUubWF4TGluZVdpZHRoIHx8IDEwODA7IC8vIERlZmF1bHQgbWF4IHdpZHRoXG4gICAgY29uc3QgYmFzZUZvbnRTaXplID0gc3R5bGUuZm9udFNpemUgKiAyfHwgNjQ7IC8vIERlZmF1bHQgZm9udCBzaXplXG4gICAgY29uc3QgZm9udEZhbWlseSA9IHN0eWxlLmZvbnRGYW1pbHkgfHwgJ0FyaWFsJztcbiAgICBcbiAgICBjb25zdCB0ZXh0V2lkdGggPSBlc3RpbWF0ZVRleHRXaWR0aCh0ZXh0LCBiYXNlRm9udFNpemUsIGZvbnRGYW1pbHkpO1xuICAgIGlmICh0ZXh0V2lkdGggPiBtYXhMaW5lV2lkdGgpIHtcbiAgICAgIGNvbnN0IHNjYWxlRmFjdG9yID0gbWF4TGluZVdpZHRoIC8gdGV4dFdpZHRoO1xuICAgICAgcmV0dXJuIE1hdGguZmxvb3IoYmFzZUZvbnRTaXplICogc2NhbGVGYWN0b3IpO1xuICAgIH1cbiAgICByZXR1cm4gYmFzZUZvbnRTaXplO1xuICB9LCBbdGV4dCwgc3R5bGUubWF4TGluZVdpZHRoLCBzdHlsZS5mb250U2l6ZSwgc3R5bGUuZm9udEZhbWlseV0pO1xuXG4gIC8vIENhbGN1bGF0ZSBhZGp1c3RlZCBmb250IHNpemUgYmFzZWQgb24gdGV4dCB3aWR0aFxuICBjb25zdCBhbmltYXRlZFN0eWxlID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgYmFzZVBhZGRpbmcgPSBzdHlsZS5iYWNrZ3JvdW5kUGFkZGluZyB8fCAnMTUnO1xuICAgIFxuICAgIC8vIENyZWF0ZSB0ZXh0IHNoYWRvdyBiYXNlZCBvbiBpbnRlbnNpdHlcbiAgICBjb25zdCBzaGFkb3dJbnRlbnNpdHkgPSBzdHlsZS5zaGFkb3dJbnRlbnNpdHkgfHwgMTtcbiAgICBjb25zdCBzaGFkb3dDb2xvciA9IHN0eWxlLnNoYWRvd0NvbG9yIHx8ICcjMDAwMDAwJztcbiAgICBjb25zdCBzaGFkb3dCbHVyID0gc3R5bGUuc2hhZG93Qmx1ciB8fCAnMic7XG4gICAgY29uc3Qgc2hhZG93T2Zmc2V0WCA9IHN0eWxlLnNoYWRvd09mZnNldFggfHwgJzAnO1xuICAgIGNvbnN0IHNoYWRvd09mZnNldFkgPSBzdHlsZS5zaGFkb3dPZmZzZXRZIHx8ICcwJztcbiAgICBcbiAgICAvLyBTdGFjayBtdWx0aXBsZSBzaGFkb3dzIGJhc2VkIG9uIGludGVuc2l0eVxuICAgIGNvbnN0IHNoYWRvd3MgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNoYWRvd0ludGVuc2l0eTsgaSsrKSB7XG4gICAgICBzaGFkb3dzLnB1c2goYCR7c2hhZG93T2Zmc2V0WH1weCAke3NoYWRvd09mZnNldFl9cHggJHtzaGFkb3dCbHVyfXB4ICR7c2hhZG93Q29sb3J9YCk7XG4gICAgfVxuICAgIGNvbnN0IHRleHRTaGFkb3cgPSBzaGFkb3dzLmpvaW4oJywgJyk7XG5cbiAgICAvLyBDb252ZXJ0IGhleCB0byByZ2JhIGZvciBiYWNrZ3JvdW5kIGNvbG9yXG4gICAgY29uc3QgaGV4VG9SZ2JhID0gKGhleCwgb3BhY2l0eSkgPT4ge1xuICAgICAgY29uc3Qgc2hvcnRoYW5kUmVnZXggPSAvXiM/KFthLWZcXGRdKShbYS1mXFxkXSkoW2EtZlxcZF0pJC9pO1xuICAgICAgaGV4ID0gaGV4LnJlcGxhY2Uoc2hvcnRoYW5kUmVnZXgsIChtLCByLCBnLCBiKSA9PiByICsgciArIGcgKyBnICsgYiArIGIpO1xuICAgICAgY29uc3QgcmVzdWx0ID0gL14jPyhbYS1mXFxkXXsyfSkoW2EtZlxcZF17Mn0pKFthLWZcXGRdezJ9KSQvaS5leGVjKGhleCk7XG4gICAgICBpZiAoIXJlc3VsdCkgcmV0dXJuIGhleDtcbiAgICAgIGNvbnN0IHIgPSBwYXJzZUludChyZXN1bHRbMV0sIDE2KTtcbiAgICAgIGNvbnN0IGcgPSBwYXJzZUludChyZXN1bHRbMl0sIDE2KTtcbiAgICAgIGNvbnN0IGIgPSBwYXJzZUludChyZXN1bHRbM10sIDE2KTtcbiAgICAgIHJldHVybiBgcmdiYSgke3J9LCAke2d9LCAke2J9LCAke29wYWNpdHl9KWA7XG4gICAgfTtcblxuICAgIGNvbnN0IGJhY2tncm91bmRDb2xvciA9IHN0eWxlLmJhY2tncm91bmRDb2xvciB8fCAnIzAwMDAwMCc7XG4gICAgY29uc3Qgb3BhY2l0eSA9IHR5cGVvZiBzdHlsZS5iYWNrZ3JvdW5kT3BhY2l0eSA9PT0gJ3N0cmluZycgXG4gICAgICA/IHBhcnNlRmxvYXQoc3R5bGUuYmFja2dyb3VuZE9wYWNpdHkudHJpbSgpKVxuICAgICAgOiBwYXJzZUZsb2F0KHN0eWxlLmJhY2tncm91bmRPcGFjaXR5KSB8fCAwO1xuICAgICAgXG4gICAgY29uc3QgYmFja2dyb3VuZCA9IGhleFRvUmdiYShiYWNrZ3JvdW5kQ29sb3IsIG9wYWNpdHkpO1xuICAgIGNvbnN0IGhhc0JhY2tncm91bmQgPSBvcGFjaXR5ID4gMDtcbiAgICBjb25zdCBoYXNTaGFkb3cgPSBzaGFkb3dJbnRlbnNpdHkgPiAwICYmIChzaGFkb3dCbHVyICE9PSAnMCcgfHwgc2hhZG93T2Zmc2V0WCAhPT0gJzAnIHx8IHNoYWRvd09mZnNldFkgIT09ICcwJyk7XG5cbiAgICAvLyBIYW5kbGUgYm9yZGVyIHJhZGl1cyBwcm9wZXJseVxuICAgIGNvbnN0IGJvcmRlclJhZGl1cyA9IHN0eWxlLmJhY2tncm91bmRCb3JkZXJSYWRpdXMgXG4gICAgICA/IGAke3BhcnNlSW50KHN0eWxlLmJhY2tncm91bmRCb3JkZXJSYWRpdXMsIDEwKX1weGBcbiAgICAgIDogJzBweCc7XG4gICAgXG4gICAgLy8gSGFuZGxlIGJhY2tncm91bmQgd3JhcHBpbmdcbiAgICBjb25zdCBpc1dyYXBwZWQgPSBzdHlsZS5iYWNrZ3JvdW5kRmlsbFN0eWxlID09PSBcIndyYXBcIjtcbiAgICBjb25zdCBwYWRkaW5nVmFsdWUgPSBwYXJzZUludChiYXNlUGFkZGluZywgMTApO1xuICAgIFxuICAgIC8vIEZvciB3cmFwcGVkIHN0eWxlLCB1c2UgdW5pZm9ybSBwYWRkaW5nXG4gICAgY29uc3QgcGFkZGluZyA9IGlzV3JhcHBlZCBcbiAgICAgID8gYCR7cGFkZGluZ1ZhbHVlfXB4ICR7TWF0aC5yb3VuZChwYWRkaW5nVmFsdWUgKiAxLjIpfXB4YFxuICAgICAgOiBgJHtwYWRkaW5nVmFsdWV9cHggJHtwYWRkaW5nVmFsdWUgKiAzfXB4YDtcbiAgICBcbiAgICBjb25zdCB3aWR0aCA9IGlzV3JhcHBlZCA/IFwiYXV0b1wiIDogc3R5bGUud2lkdGg7XG4gICAgY29uc3QgZGlzcGxheSA9IGlzV3JhcHBlZCA/IFwiaW5saW5lLWJsb2NrXCIgOiBzdHlsZS5kaXNwbGF5IHx8IFwiYmxvY2tcIjtcbiAgICBcbiAgICBjb25zdCBiYXNlU3R5bGUgPSB7XG4gICAgICBwYWRkaW5nLFxuICAgICAgYmFja2dyb3VuZCxcbiAgICAgIGJvcmRlclJhZGl1cyxcbiAgICAgIHdpZHRoLFxuICAgICAgZGlzcGxheSxcbiAgICAgIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgICAgIC4uLnN0eWxlLFxuICAgICAgLy8gS2VlcCBmb250RmFtaWx5IGluIHRoZSBpbmxpbmUgc3R5bGVzIG5vd1xuICAgICAgdGV4dFNoYWRvdzogJ25vbmUnLFxuICAgICAgYm94U2hhZG93OiBoYXNCYWNrZ3JvdW5kICYmIGhhc1NoYWRvdyA/IHRleHRTaGFkb3cgOiAnbm9uZScsXG4gICAgICB0cmFuc2Zvcm06IGFuaW1hdGlvblN0eWxlID09PSBcInNwcmluZ1wiIFxuICAgICAgICA/IGAke3N0eWxlLnRyYW5zZm9ybSA/IGAke3N0eWxlLnRyYW5zZm9ybX0gYCA6ICcnfXRyYW5zbGF0ZTNkKDAsICR7dHJhbnNsYXRlWX1weCwgMCkgc2NhbGUoJHtzY2FsZX0pYFxuICAgICAgICA6IHN0eWxlLnRyYW5zZm9ybSB8fCAnbm9uZScsXG4gICAgICBmb250U2l6ZTogdHlwZW9mIHN0eWxlLmZvbnRTaXplID09PSAnc3RyaW5nJyA/IGFkanVzdGVkRm9udFNpemUgOiBhZGp1c3RlZEZvbnRTaXplLFxuICAgIH07XG5cbiAgICByZXR1cm4gYmFzZVN0eWxlO1xuICB9LCBbc3R5bGUsIHNjYWxlLCB0cmFuc2xhdGVZLCBhZGp1c3RlZEZvbnRTaXplLCBhbmltYXRpb25TdHlsZV0pO1xuXG4gIGNvbnN0IHdyYXBwZXJTdHlsZSA9IHVzZU1lbW8oKCkgPT4gKHtcbiAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICB0cmFuc2Zvcm06IGBzY2FsZVkoJHtzdHlsZS52ZXJ0aWNhbFN0cmV0Y2ggfHwgMX0pYCxcbiAgICB3aGl0ZVNwYWNlOiAnbm93cmFwJyxcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgd2lkdGg6ICdmaXQtY29udGVudCcsXG4gICAgd2lsbENoYW5nZTogJ3RyYW5zZm9ybSdcbiAgfSksIFtzdHlsZS52ZXJ0aWNhbFN0cmV0Y2hdKTtcblxuICBjb25zdCBvdXRsaW5lU3R5bGUgPSB1c2VNZW1vKCgpID0+ICh7XG4gICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgbGVmdDogMCxcbiAgICB0b3A6IDAsXG4gICAgcmlnaHQ6IDAsXG4gICAgYm90dG9tOiAwLFxuICAgIGNvbG9yOiBzdHlsZS5vdXRsaW5lQ29sb3IsXG4gICAgdGV4dFNoYWRvdzogZ2VuZXJhdGVPdXRsaW5lU2hhZG93KHN0eWxlLm91dGxpbmVDb2xvciwgc3R5bGUub3V0bGluZVdpZHRoLCBzdHlsZS5vdXRsaW5lU3R5bGUpLFxuICAgIFdlYmtpdFRleHRGaWxsQ29sb3I6ICd0cmFuc3BhcmVudCcsXG4gICAgekluZGV4OiAwLFxuICB9KSwgW3N0eWxlLm91dGxpbmVDb2xvciwgc3R5bGUub3V0bGluZVdpZHRoLCBzdHlsZS5vdXRsaW5lU3R5bGVdKTtcblxuICBjb25zdCBtYWluVGV4dFN0eWxlID0gdXNlTWVtbygoKSA9PiAoe1xuICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgIHpJbmRleDogMSxcbiAgICBXZWJraXRUZXh0U3Ryb2tlOiAndW5zZXQnLFxuICAgIGNvbG9yOiBzdHlsZS5jb2xvcixcbiAgfSksIFtzdHlsZS5jb2xvcl0pO1xuXG4gIC8vIFNwbGl0IHRleHQgaW50byB3b3JkcyBhbmQgY2FsY3VsYXRlIGN1cnJlbnQgdGltZVxuICBjb25zdCB0ZXh0V29yZHMgPSB1c2VNZW1vKCgpID0+IHRleHQuc3BsaXQoJyAnKSwgW3RleHRdKTtcbiAgY29uc3QgY3VycmVudFdvcmRUaW1lID0gZnJhbWUgLyBmcHM7XG5cbiAgLy8gRmluZCBjdXJyZW50bHkgc3Bva2VuIHdvcmRcblxuICAvLyBDcmVhdGUgYW1wbGlmaWVkIGdyYWRpZW50IHN0eWxlIGlmIGFtcGxpZmllZENvbG9yIGlzIGEgZ3JhZGllbnQgYXJyYXlcbiAgY29uc3QgcGhyYXNlQW1wbGlmaWVkU3R5bGUgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShzdHlsZS5hbXBsaWZpZWRDb2xvcnMpKSB7XG4gICAgICBjb25zdCBmaXJzdFdvcmQgPSB3b3Jkc1swXS53b3JkO1xuICAgICAgY29uc3QgZ3JhZGllbnRJbmRleCA9IE1hdGguZmxvb3IocmFuZG9tKGBhbXBsaWZpZWQtcGhyYXNlLSR7Zmlyc3RXb3JkfWApICogc3R5bGUuYW1wbGlmaWVkQ29sb3JzLmxlbmd0aCk7XG4gICAgICBjb25zdCBncmFkaWVudCA9IHN0eWxlLmFtcGxpZmllZENvbG9yc1tncmFkaWVudEluZGV4XTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGJhY2tncm91bmQ6IGBsaW5lYXItZ3JhZGllbnQoJHtncmFkaWVudC5hbmdsZX1kZWcsICR7Z3JhZGllbnQuY29sb3JzLmpvaW4oXCIsIFwiKX0pYCxcbiAgICAgICAgYmFja2dyb3VuZENsaXA6IFwidGV4dFwiLFxuICAgICAgICBXZWJraXRUZXh0RmlsbENvbG9yOiBcInRyYW5zcGFyZW50XCIsXG4gICAgICAgIFdlYmtpdEJhY2tncm91bmRDbGlwOiBcInRleHRcIixcbiAgICAgICAgZGlzcGxheTogXCJpbmxpbmUtYmxvY2tcIixcbiAgICAgICAgcG9zaXRpb246IFwicmVsYXRpdmVcIixcbiAgICAgICAgekluZGV4OiAxLFxuICAgICAgfTtcbiAgICB9XG4gICAgY29uc29sZS5sb2coXCJoaWdobGlnaHQgd29yZHMgY29sb3I6XCIsIGhpZ2hsaWdodFdvcmRzQ29sb3IpO1xuICAgIGlmICh0eXBlb2Ygc3R5bGUuYW1wbGlmaWVkQ29sb3IgPT09ICdvYmplY3QnICYmIHN0eWxlLmFtcGxpZmllZENvbG9yLnR5cGUgPT09ICdncmFkaWVudCcpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGJhY2tncm91bmQ6IGBsaW5lYXItZ3JhZGllbnQoJHtzdHlsZS5hbXBsaWZpZWRDb2xvci5jb2xvcnNbMF0uYW5nbGV9ZGVnLCAke3N0eWxlLmFtcGxpZmllZENvbG9yLmNvbG9yc1swXS5jb2xvcnMuam9pbihcIiwgXCIpfSlgLFxuICAgICAgICBiYWNrZ3JvdW5kQ2xpcDogXCJ0ZXh0XCIsXG4gICAgICAgIFdlYmtpdFRleHRGaWxsQ29sb3I6IFwidHJhbnNwYXJlbnRcIixcbiAgICAgICAgV2Via2l0QmFja2dyb3VuZENsaXA6IFwidGV4dFwiLFxuICAgICAgICBkaXNwbGF5OiBcImlubGluZS1ibG9ja1wiLFxuICAgICAgICBwb3NpdGlvbjogXCJyZWxhdGl2ZVwiLFxuICAgICAgICB6SW5kZXg6IDEsXG4gICAgICB9O1xuICAgIH1cbiAgICBcbiAgICByZXR1cm4geyBcbiAgICAgIGNvbG9yOiBzdHlsZS5hbXBsaWZpZWRDb2xvcixcbiAgICAgIFdlYmtpdFRleHRGaWxsQ29sb3I6IHN0eWxlLmFtcGxpZmllZENvbG9yLFxuICAgIH07XG4gIH0sIFtzdHlsZS5hbXBsaWZpZWRDb2xvcnMsIHN0eWxlLmFtcGxpZmllZENvbG9yLCB3b3Jkc10pO1xuXG4gIC8vIEhhbmRsZSByYW5kb20gY29sb3JzIGlmIGVuYWJsZWRcbiAgY29uc3QgcmFuZG9tQ29sb3JEYXRhID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKCFyYW5kb21Db2xvcnM/LmVuYWJsZWQgfHwgIXdvcmRzKSByZXR1cm4gbnVsbDtcbiAgICBcbiAgICBjb25zdCBzaG91bGRDb2xvciA9IHJhbmRvbShgc2hvdWxkLWNvbG9yLSR7d29yZHNbMF0ud29yZH1gKSA8IHJhbmRvbUNvbG9ycy5wY3RBcHBsaWVkO1xuICAgIGlmICghc2hvdWxkQ29sb3IpIHJldHVybiBudWxsO1xuXG4gICAgY29uc3QgW21pbldvcmRzLCBtYXhXb3Jkc10gPSByYW5kb21Db2xvcnM/LnJhbmRvbVdvcmRDb3VudFJhbmdlIHx8IFswLCAwXTtcbiAgICBjb25zdCByYW5nZSA9IG1heFdvcmRzIC0gbWluV29yZHMgKyAxO1xuICAgIGNvbnN0IHJhbmRvbVdvcmRDb3VudCA9IE1hdGguZmxvb3IocmFuZG9tKGB3b3JkLWNvdW50LSR7d29yZHNbMF0ud29yZH1gKSAqIHJhbmdlKSArIG1pbldvcmRzO1xuICAgIGNvbnN0IG1heFN0YXJ0SW5kZXggPSBNYXRoLm1heCgwLCB0ZXh0V29yZHMubGVuZ3RoIC0gcmFuZG9tV29yZENvdW50KTtcbiAgICBjb25zdCBzdGFydEluZGV4ID0gTWF0aC5mbG9vcihyYW5kb20oYHN0YXJ0LWluZGV4LSR7d29yZHNbMF0ud29yZH1gKSAqIChtYXhTdGFydEluZGV4ICsgMSkpO1xuICAgIGNvbnN0IHJhbmRvbUNvbG9yT2JqID0gcmFuZG9tQ29sb3JzLmNvbG9yc1tNYXRoLmZsb29yKHJhbmRvbShgY29sb3ItJHt3b3Jkc1swXS53b3JkfWApICogcmFuZG9tQ29sb3JzLmNvbG9ycy5sZW5ndGgpXTtcblxuICAgIHJldHVybiB7XG4gICAgICBzaG91bGRDb2xvcixcbiAgICAgIHJhbmRvbVdvcmRDb3VudCxcbiAgICAgIHN0YXJ0SW5kZXgsXG4gICAgICByYW5kb21Db2xvck9ialxuICAgIH07XG4gIH0sIFtyYW5kb21Db2xvcnMsIHdvcmRzLCB0ZXh0V29yZHMubGVuZ3RoXSk7XG5cbiAgY29uc3QgcGhyYXNlU3R5bGUgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoIXJhbmRvbUNvbG9yRGF0YSkge1xuICAgICAgcmV0dXJuIHsgXG4gICAgICAgIGNvbG9yOiBzdHlsZS5jb2xvcixcbiAgICAgICAgV2Via2l0VGV4dEZpbGxDb2xvcjogc3R5bGUuY29sb3IsXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IHsgcmFuZG9tQ29sb3JPYmogfSA9IHJhbmRvbUNvbG9yRGF0YTtcbiAgICByZXR1cm4gcmFuZG9tQ29sb3JPYmoudHlwZSA9PT0gXCJncmFkaWVudFwiID8gXG4gICAgICB7XG4gICAgICAgIGJhY2tncm91bmQ6IGBsaW5lYXItZ3JhZGllbnQoJHtyYW5kb21Db2xvck9iai5hbmdsZX1kZWcsICR7cmFuZG9tQ29sb3JPYmouY29sb3JzLmpvaW4oXCIsIFwiKX0pYCxcbiAgICAgICAgYmFja2dyb3VuZENsaXA6IFwidGV4dFwiLFxuICAgICAgICBXZWJraXRUZXh0RmlsbENvbG9yOiBcInRyYW5zcGFyZW50XCIsXG4gICAgICAgIFdlYmtpdEJhY2tncm91bmRDbGlwOiBcInRleHRcIixcbiAgICAgICAgZGlzcGxheTogXCJpbmxpbmUtYmxvY2tcIixcbiAgICAgICAgcG9zaXRpb246IFwicmVsYXRpdmVcIixcbiAgICAgICAgekluZGV4OiAxLFxuICAgICAgfSA6IFxuICAgICAgeyBcbiAgICAgICAgY29sb3I6IHJhbmRvbUNvbG9yT2JqLmNvbG9yLFxuICAgICAgICBXZWJraXRUZXh0RmlsbENvbG9yOiByYW5kb21Db2xvck9iai5jb2xvcixcbiAgICAgIH07XG4gIH0sIFtyYW5kb21Db2xvckRhdGEsIHN0eWxlLmNvbG9yXSk7XG5cbiAgY29uc3Qgd29yZENvbnRlbnQgPSB1c2VNZW1vKCgpID0+IHRleHRXb3Jkcy5tYXAoKHdvcmQsIGluZGV4KSA9PiB7XG4gICAgLy8gQ2hlY2sgaWYgdGhlIHdvcmQgaXMgc3Vycm91bmRlZCBieSA8aD4gdGFnc1xuICAgIGNvbnN0IGhpZ2hsaWdodGVkTWF0Y2ggPSB3b3JkLm1hdGNoKC9ePGg+KC4qPyk8XFwvaD4kLyk7XG4gICAgY29uc3QgaXNIaWdobGlnaHRlZCA9IGhpZ2hsaWdodGVkTWF0Y2ggIT09IG51bGw7XG4gICAgY29uc3QgZGlzcGxheVdvcmQgPSBpc0hpZ2hsaWdodGVkID8gaGlnaGxpZ2h0ZWRNYXRjaFsxXSA6IHdvcmQ7XG5cbiAgICBjb25zdCBzaG91bGRDb2xvclRoaXNXb3JkID0gcmFuZG9tQ29sb3JEYXRhICYmIFxuICAgICAgaW5kZXggPj0gcmFuZG9tQ29sb3JEYXRhLnN0YXJ0SW5kZXggJiYgXG4gICAgICBpbmRleCA8IHJhbmRvbUNvbG9yRGF0YS5zdGFydEluZGV4ICsgcmFuZG9tQ29sb3JEYXRhLnJhbmRvbVdvcmRDb3VudCAmJlxuICAgICAgaW5kZXggPCB0ZXh0V29yZHMubGVuZ3RoO1xuXG4gICAgY29uc3Qgd29yZFRpbWluZyA9IHdvcmRzPy5baW5kZXhdO1xuICAgIGNvbnN0IGhhc0JlZW5TcG9rZW4gPSB3b3JkVGltaW5nICYmIGN1cnJlbnRXb3JkVGltZSA+PSB3b3JkVGltaW5nLmVuZDtcbiAgICBjb25zdCBpc0N1cnJlbnRseVNwb2tlbiA9IHdvcmRUaW1pbmcgJiYgXG4gICAgICBjdXJyZW50V29yZFRpbWUgPj0gd29yZFRpbWluZy5zdGFydCAmJiBcbiAgICAgIGN1cnJlbnRXb3JkVGltZSA8IHdvcmRUaW1pbmcuZW5kO1xuXG4gICAgY29uc3QgdGV4dEhpZ2hsaWdodFBlcnNpc3RzID0gc3R5bGUudGV4dEhpZ2hsaWdodFBlcnNpc3RzID8gdHJ1ZSA6IGZhbHNlO1xuICAgIFxuICAgIGNvbnN0IHNob3VsZEhpZ2hsaWdodCA9IHN0eWxlLmFtcGxpZnlTcG9rZW5Xb3JkcyAmJiBcbiAgICAgIChpc0N1cnJlbnRseVNwb2tlbiB8fCAodGV4dEhpZ2hsaWdodFBlcnNpc3RzICYmIGhhc0JlZW5TcG9rZW4pKTtcbiAgICBcbiAgICAvLyBNb2RpZmllZCBsb2dpYyB0byBwcmlvcml0aXplIDxoPiB0YWcgaGlnaGxpZ2h0aW5nXG4gICAgY29uc3Qgd29yZFN0eWxlID0gaXNIaWdobGlnaHRlZFxuICAgICAgPyB7IFxuICAgICAgICAgIGNvbG9yOiBoaWdobGlnaHRXb3Jkc0NvbG9yLFxuICAgICAgICAgIFdlYmtpdFRleHRGaWxsQ29sb3I6IGhpZ2hsaWdodFdvcmRzQ29sb3IsXG4gICAgICAgICAgb3BhY2l0eTogc3R5bGUub3BhY2l0eSB8fCAxLFxuICAgICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICB9XG4gICAgICA6IHNob3VsZEhpZ2hsaWdodFxuICAgICAgICA/IHtcbiAgICAgICAgICAgIC4uLnBocmFzZUFtcGxpZmllZFN0eWxlLFxuICAgICAgICAgICAgb3BhY2l0eTogc3R5bGUuYW1wbGlmaWVkT3BhY2l0eSB8fCAxLFxuICAgICAgICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgICAgICAgfVxuICAgICAgICA6IHNob3VsZENvbG9yVGhpc1dvcmQgXG4gICAgICAgICAgPyB7XG4gICAgICAgICAgICAgIC4uLnBocmFzZVN0eWxlLFxuICAgICAgICAgICAgICBvcGFjaXR5OiBzdHlsZS5vcGFjaXR5IHx8IDEsXG4gICAgICAgICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICAgICAgfVxuICAgICAgICAgIDogeyBcbiAgICAgICAgICAgICAgY29sb3I6IHN0eWxlLmNvbG9yLFxuICAgICAgICAgICAgICBXZWJraXRUZXh0RmlsbENvbG9yOiBzdHlsZS5jb2xvcixcbiAgICAgICAgICAgICAgb3BhY2l0eTogc3R5bGUudW5BbXBsaWZpZWRPcGFjaXR5IHx8IDEsXG4gICAgICAgICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICAgICAgfTtcblxuICAgIC8vIEFkZCB6LWluZGV4IHRvIGVuc3VyZSBwcm9wZXIgc3RhY2tpbmcgb2Ygd29yZCBibG9ja3NcbiAgICBjb25zdCBjb250YWluZXJTdHlsZSA9IHtcbiAgICAgIC4uLndvcmRTdHlsZSxcbiAgICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICAgICAgbWFyZ2luUmlnaHQ6IGluZGV4IDwgdGV4dFdvcmRzLmxlbmd0aCAtIDEgPyAnMC4yNWVtJyA6IDAsXG4gICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICAgIHpJbmRleDogaXNDdXJyZW50bHlTcG9rZW4gPyAyIDogMSxcbiAgICAgIHdoaXRlU3BhY2U6ICdub3dyYXAnXG4gICAgfTtcblxuICAgIHJldHVybiAoXG4gICAgICA8c3BhbiBrZXk9e2luZGV4fSBzdHlsZT17Y29udGFpbmVyU3R5bGV9PlxuICAgICAgICB7c3R5bGUuY3VycmVudFdvcmRCbG9jayAmJiBpc0N1cnJlbnRseVNwb2tlbiAmJiAoXG4gICAgICAgICAgPHNwYW4gc3R5bGU9e3tcbiAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICAgICAgY29udGVudDogJ1wiXCInLFxuICAgICAgICAgICAgbGVmdDogYC0keyhzdHlsZS5jdXJyZW50V29yZEJsb2NrUGFkZGluZyB8fCA1KSAqIDJ9cHhgLFxuICAgICAgICAgICAgcmlnaHQ6IGAtJHsoc3R5bGUuY3VycmVudFdvcmRCbG9ja1BhZGRpbmcgfHwgNSkgKiAyfXB4YCxcbiAgICAgICAgICAgIHRvcDogMCxcbiAgICAgICAgICAgIGhlaWdodDogJzcwJScsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHN0eWxlLmN1cnJlbnRXb3JkQmxvY2tCYWNrZ3JvdW5kQ29sb3IgfHwgJyMwMDAwMDAnLFxuICAgICAgICAgICAgb3BhY2l0eTogc3R5bGUuY3VycmVudFdvcmRCbG9ja09wYWNpdHkgfHwgMSxcbiAgICAgICAgICAgIGJvcmRlclJhZGl1czogYCR7c3R5bGUuY3VycmVudFdvcmRCbG9ja0JvcmRlclJhZGl1cyB8fCAxNX1weGAsXG4gICAgICAgICAgICB6SW5kZXg6IC0xLFxuICAgICAgICAgICAgcG9pbnRlckV2ZW50czogJ25vbmUnLFxuICAgICAgICAgICAgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgycHgpJyxcbiAgICAgICAgICAgIHBhZGRpbmc6IGAke3N0eWxlLmN1cnJlbnRXb3JkQmxvY2tQYWRkaW5nIHx8IDV9cHggMGAsXG4gICAgICAgICAgICBib3hTaXppbmc6ICdjb250ZW50LWJveCdcbiAgICAgICAgICB9fSAvPlxuICAgICAgICApfVxuICAgICAgICB7ZGlzcGxheVdvcmR9IHsvKiBEaXNwbGF5IHRoZSB3b3JkIHdpdGhvdXQgPGg+IHRhZ3MgKi99XG4gICAgICA8L3NwYW4+XG4gICAgKTtcbiAgfSksIFt0ZXh0V29yZHMsIHJhbmRvbUNvbG9yRGF0YSwgd29yZHMsIGN1cnJlbnRXb3JkVGltZSwgc3R5bGUuYW1wbGlmeVNwb2tlbldvcmRzLCBzdHlsZS50ZXh0SGlnaGxpZ2h0UGVyc2lzdHMsIHBocmFzZUFtcGxpZmllZFN0eWxlLCBwaHJhc2VTdHlsZSwgc3R5bGUuY29sb3IsIHN0eWxlLmN1cnJlbnRXb3JkQmxvY2ssIHN0eWxlLmN1cnJlbnRXb3JkQmxvY2tCYWNrZ3JvdW5kQ29sb3IsIHN0eWxlLmN1cnJlbnRXb3JkQmxvY2tPcGFjaXR5LCBzdHlsZS5jdXJyZW50V29yZEJsb2NrUGFkZGluZywgc3R5bGUuY3VycmVudFdvcmRCbG9ja0JvcmRlclJhZGl1cywgaGlnaGxpZ2h0V29yZHNDb2xvcl0pO1xuICAvLyBjb25zb2xlLmxvZygnU3VidGl0bGVUZXh0IC0gcmVjZWl2ZWQgc3R5bGUgZm9udEZhbWlseTonLCBzdHlsZS5mb250RmFtaWx5KTtcbiAgcmV0dXJuIChcbiAgICA8ZGl2IFxuICAgICAgc3R5bGU9e3tcbiAgICAgICAgLi4uYW5pbWF0ZWRTdHlsZSxcbiAgICAgICAgd2hpdGVTcGFjZTogJ25vd3JhcCcsXG4gICAgICAgIHdpZHRoOiAnZml0LWNvbnRlbnQnLFxuICAgICAgICBkaXNwbGF5OiAnYmxvY2snXG4gICAgICB9fVxuICAgID5cbiAgICAgIDxkaXYgc3R5bGU9e3dyYXBwZXJTdHlsZX0+XG4gICAgICAgIDxkaXYgc3R5bGU9e3suLi5vdXRsaW5lU3R5bGUsIHdoaXRlU3BhY2U6ICdub3dyYXAnfX0+e3dvcmRDb250ZW50fTwvZGl2PlxuICAgICAgICA8ZGl2IHN0eWxlPXt7Li4ubWFpblRleHRTdHlsZSwgd2hpdGVTcGFjZTogJ25vd3JhcCd9fT57d29yZENvbnRlbnR9PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn0sIChwcmV2UHJvcHMsIG5leHRQcm9wcykgPT4ge1xuICAvLyBPbmx5IHJlLXJlbmRlciBpZiB0aGVzZSBlc3NlbnRpYWwgcHJvcHMgaGF2ZSBjaGFuZ2VkXG4gIGNvbnN0IGVzc2VudGlhbFByb3BzID0gWydmcmFtZScsICd0ZXh0JywgJ3N0YXJ0RnJhbWUnXTtcbiAgY29uc3QgaGFzRXNzZW50aWFsUHJvcHNDaGFuZ2VkID0gZXNzZW50aWFsUHJvcHMuc29tZShcbiAgICBwcm9wID0+IHByZXZQcm9wc1twcm9wXSAhPT0gbmV4dFByb3BzW3Byb3BdXG4gICk7XG4gIFxuICAvLyBEZWVwIGNvbXBhcmUgc3R5bGUgYW5kIHJhbmRvbUNvbG9ycyBvbmx5IGlmIGVzc2VudGlhbCBwcm9wcyBoYXZlbid0IGNoYW5nZWRcbiAgaWYgKCFoYXNFc3NlbnRpYWxQcm9wc0NoYW5nZWQpIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkocHJldlByb3BzLnN0eWxlKSA9PT0gSlNPTi5zdHJpbmdpZnkobmV4dFByb3BzLnN0eWxlKSAmJlxuICAgICAgICAgICBKU09OLnN0cmluZ2lmeShwcmV2UHJvcHMucmFuZG9tQ29sb3JzKSA9PT0gSlNPTi5zdHJpbmdpZnkobmV4dFByb3BzLnJhbmRvbUNvbG9ycyk7XG4gIH1cbiAgXG4gIHJldHVybiBmYWxzZTtcbn0pOyAiLG51bGwsImltcG9ydCBSZWFjdCwgeyB1c2VNZW1vIH0gZnJvbSAncmVhY3QnO1xuXG4vLyBIZWxwZXIgdG8gY29udmVydCBoZXggdG8gcmdiXG5jb25zdCBoZXhUb1JnYiA9IChoZXgpID0+IHtcbiAgLy8gUmVtb3ZlICMgaWYgcHJlc2VudFxuICBoZXggPSBoZXgucmVwbGFjZSgnIycsICcnKTtcbiAgXG4gIC8vIEhhbmRsZSBib3RoIDMtZGlnaXQgYW5kIDYtZGlnaXQgaGV4XG4gIGNvbnN0IHIgPSBwYXJzZUludChoZXgubGVuZ3RoID09PSAzID8gaGV4WzBdICsgaGV4WzBdIDogaGV4LnNsaWNlKDAsIDIpLCAxNik7XG4gIGNvbnN0IGcgPSBwYXJzZUludChoZXgubGVuZ3RoID09PSAzID8gaGV4WzFdICsgaGV4WzFdIDogaGV4LnNsaWNlKDIsIDQpLCAxNik7XG4gIGNvbnN0IGIgPSBwYXJzZUludChoZXgubGVuZ3RoID09PSAzID8gaGV4WzJdICsgaGV4WzJdIDogaGV4LnNsaWNlKDQsIDYpLCAxNik7XG4gIFxuICByZXR1cm4gYCR7cn0sICR7Z30sICR7Yn1gO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZVRleHRTdHlsZSA9IChwcmVzZXQsIHgsIGFkanVzdGVkWSwgdmlkZW9XaWR0aCkgPT4geyAgXG4gIHJldHVybiB1c2VNZW1vKCgpID0+IHtcbiAgICAvLyBDcmVhdGUgdGV4dCBzaGFkb3cgYmFzZWQgb24gaW50ZW5zaXR5XG4gICAgY29uc3Qgc2hhZG93SW50ZW5zaXR5ID0gcHJlc2V0LnNoYWRvd0ludGVuc2l0eSB8fCAxO1xuICAgIGNvbnN0IHNoYWRvd0NvbG9yID0gcHJlc2V0LnNoYWRvd0NvbG9yIHx8ICcjMDAwMDAwJztcbiAgICBjb25zdCBzaGFkb3dCbHVyID0gcHJlc2V0LnNoYWRvd0JsdXIgfHwgJzInO1xuICAgIGNvbnN0IHNoYWRvd09mZnNldFggPSBwcmVzZXQuc2hhZG93T2Zmc2V0WCB8fCAnMCc7XG4gICAgY29uc3Qgc2hhZG93T2Zmc2V0WSA9IHByZXNldC5zaGFkb3dPZmZzZXRZIHx8ICcwJztcbiAgICBcbiAgICAvLyBTdGFjayBtdWx0aXBsZSBzaGFkb3dzIGJhc2VkIG9uIGludGVuc2l0eVxuICAgIGNvbnN0IHNoYWRvd3MgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNoYWRvd0ludGVuc2l0eTsgaSsrKSB7XG4gICAgICBzaGFkb3dzLnB1c2goYCR7c2hhZG93T2Zmc2V0WH1weCAke3NoYWRvd09mZnNldFl9cHggJHtzaGFkb3dCbHVyfXB4ICR7c2hhZG93Q29sb3J9YCk7XG4gICAgfVxuICAgIGNvbnN0IHRleHRTaGFkb3cgPSBzaGFkb3dzLmpvaW4oJywgJyk7XG5cbiAgICBjb25zdCBkcm9wU2hhZG93ID0gKHByZXNldC5zaGFkb3dFbmFibGVkICE9PSBmYWxzZSAmJiAocHJlc2V0LnNoYWRvd09mZnNldFggfHwgcHJlc2V0LnNoYWRvd09mZnNldFkgfHwgcHJlc2V0LnNoYWRvd0JsdXIpKVxuICAgICAgPyBgZHJvcC1zaGFkb3coJHtwcmVzZXQuc2hhZG93T2Zmc2V0WH1weCAke3ByZXNldC5zaGFkb3dPZmZzZXRZfXB4ICR7cHJlc2V0LnNoYWRvd0JsdXJ9cHggJHtwcmVzZXQuc2hhZG93Q29sb3J9KWBcbiAgICAgIDogJ25vbmUnO1xuXG4gICAgY29uc3QgYmFja2dyb3VuZENvbG9yID0gcHJlc2V0LmJhY2tncm91bmRDb2xvciA9PT0gJ3RyYW5zcGFyZW50JyBcbiAgICAgID8gJ3RyYW5zcGFyZW50JyBcbiAgICAgIDogcHJlc2V0LmJhY2tncm91bmRDb2xvciAmJiBwcmVzZXQuYmFja2dyb3VuZE9wYWNpdHlcbiAgICAgICAgPyBgcmdiYSgke2hleFRvUmdiKHByZXNldC5iYWNrZ3JvdW5kQ29sb3IpfSwgJHtwcmVzZXQuYmFja2dyb3VuZE9wYWNpdHl9KWBcbiAgICAgICAgOiBwcmVzZXQuYmFja2dyb3VuZENvbG9yIHx8ICcjMDAwMDAwJztcbiAgICBcbiAgICAvLyBIYW5kbGUgYm90aCBkaXJlY3Rpb25hbCBhbmQgdW5pZm9ybSBwYWRkaW5nXG4gICAgY29uc3QgcGFkZGluZ1ggPSBwcmVzZXQuYmFja2dyb3VuZFBhZGRpbmdYIHx8IHByZXNldC5iYWNrZ3JvdW5kUGFkZGluZyB8fCAnMTAnO1xuICAgIGNvbnN0IHBhZGRpbmdZID0gcHJlc2V0LmJhY2tncm91bmRQYWRkaW5nWSB8fCBwcmVzZXQuYmFja2dyb3VuZFBhZGRpbmcgfHwgJzEwJztcbiAgICBjb25zdCBiYXNlUGFkZGluZyA9IGAke3BhZGRpbmdZfXB4ICR7cGFkZGluZ1h9cHhgO1xuICAgIFxuICAgIGNvbnN0IHN0eWxlID0ge1xuICAgICAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgICAgIGxlZnQ6IGAke3h9cHhgLFxuICAgICAgdG9wOiBgJHthZGp1c3RlZFl9cHhgLFxuICAgICAgdHJhbnNmb3JtOiBcInRyYW5zbGF0ZSgtNTAlLCAtNTAlKVwiLFxuICAgICAgZm9udEZhbWlseTogcHJlc2V0LmZvbnRGYW1pbHksXG4gICAgICBmb250U2l6ZTogYCR7cHJlc2V0LmZvbnRTaXplfXB4YCxcbiAgICAgIGZvbnRXZWlnaHQ6IHByZXNldC5mb250V2VpZ2h0LFxuICAgICAgY29sb3I6IHByZXNldC5mb250Q29sb3IsXG4gICAgICBhbXBsaWZpZWRDb2xvcjogcHJlc2V0LmFtcGxpZmllZENvbG9yLFxuICAgICAgYW1wbGlmaWVkQ29sb3JzOiBwcmVzZXQuYW1wbGlmaWVkQ29sb3JzLFxuICAgICAgYW1wbGlmeVNwb2tlbldvcmRzOiBwcmVzZXQuYW1wbGlmeVNwb2tlbldvcmRzLFxuICAgICAgdGV4dFRyYW5zZm9ybTogcHJlc2V0LnRleHRDYXNlLFxuICAgICAgZm9udFN0eWxlOiBwcmVzZXQuaXNJdGFsaWMgPyBcIml0YWxpY1wiIDogXCJub3JtYWxcIixcbiAgICAgIHRleHRBbGlnbjogXCJjZW50ZXJcIixcbiAgICAgIGxldHRlclNwYWNpbmc6IGAke3ByZXNldC50ZXh0U3BhY2luZ31weGAsXG4gICAgICBiYWNrZ3JvdW5kQ29sb3IsXG4gICAgICBiYWNrZ3JvdW5kUGFkZGluZzogYmFzZVBhZGRpbmcsXG4gICAgICBiYWNrZ3JvdW5kQm9yZGVyUmFkaXVzOiBwcmVzZXQuYmFja2dyb3VuZEJvcmRlclJhZGl1cyxcbiAgICAgIHZlcnRpY2FsU3RyZXRjaDogcHJlc2V0LnZlcnRpY2FsU3RyZXRjaCB8fCAxLFxuICAgICAgdHJhbnNmb3JtT3JpZ2luOiBcImNlbnRlciBjZW50ZXJcIixcbiAgICAgIHdpZHRoOiBcImF1dG9cIixcbiAgICAgIG1heFdpZHRoOiBgJHt2aWRlb1dpZHRoICogMC45fXB4YCxcbiAgICAgIHdoaXRlU3BhY2U6IFwicHJlLXdyYXBcIixcbiAgICAgIG92ZXJmbG93OiBcInZpc2libGVcIixcbiAgICAgIG91dGxpbmVDb2xvcjogcHJlc2V0Lm91dGxpbmVDb2xvcixcbiAgICAgIG91dGxpbmVXaWR0aDogcHJlc2V0Lm91dGxpbmVXaWR0aCxcbiAgICAgIGZpbHRlcjogZHJvcFNoYWRvdyxcbiAgICAgIGRpc3BsYXk6IFwiaW5saW5lLWJsb2NrXCIsXG4gICAgICB0ZXh0SGlnaGxpZ2h0UGVyc2lzdHM6IHByZXNldC50ZXh0SGlnaGxpZ2h0UGVyc2lzdHMsXG4gICAgICBhbXBsaWZpZWRPcGFjaXR5OiBwcmVzZXQuYW1wbGlmaWVkT3BhY2l0eSxcbiAgICAgIHVuQW1wbGlmaWVkT3BhY2l0eTogcHJlc2V0Lm9wYWNpdHksXG4gICAgICBjdXJyZW50V29yZEJsb2NrOiBwcmVzZXQuY3VycmVudFdvcmRCbG9jayxcbiAgICAgIGN1cnJlbnRXb3JkQmxvY2tCYWNrZ3JvdW5kQ29sb3I6IHByZXNldC5jdXJyZW50V29yZEJsb2NrQmFja2dyb3VuZENvbG9yLFxuICAgICAgY3VycmVudFdvcmRCbG9ja09wYWNpdHk6IHByZXNldC5jdXJyZW50V29yZEJsb2NrT3BhY2l0eSxcbiAgICAgIGN1cnJlbnRXb3JkQmxvY2tQYWRkaW5nOiBwcmVzZXQuY3VycmVudFdvcmRCbG9ja1BhZGRpbmcsXG4gICAgICBjdXJyZW50V29yZEJsb2NrQm9yZGVyUmFkaXVzOiBwcmVzZXQuY3VycmVudFdvcmRCbG9ja0JvcmRlclJhZGl1cyxcbiAgICAgIGFtcGxpZnlPcGFjaXR5VHJhbnNpdGlvbkR1cmF0aW9uOiBwcmVzZXQuYW1wbGlmeU9wYWNpdHlUcmFuc2l0aW9uRHVyYXRpb24sXG4gICAgICB0ZXh0U2hhZG93LFxuICAgICAgc2hhZG93SW50ZW5zaXR5OiBwcmVzZXQuc2hhZG93SW50ZW5zaXR5LFxuICAgIH07XG4gICAgXG4gICAgLy8gY29uc29sZS5sb2coJ3VzZVRleHRTdHlsZSAtIG91dHB1dCBzdHlsZSBmb250RmFtaWx5OicsIHN0eWxlLmZvbnRGYW1pbHkpO1xuICAgIHJldHVybiBzdHlsZTtcbiAgfSwgW3ByZXNldCwgeCwgYWRqdXN0ZWRZLCB2aWRlb1dpZHRoXSk7XG59OyAiLCIvLyBGb250IG1hcCB0aGF0IG1hdGNoZXMgQ1NTIGZvbnQtZmFtaWx5IG5hbWVzIHRvIHRoZWlyIGZvbnQgZmlsZXMgYW5kIHdlaWdodHNcbmNvbnN0IEZPTlRfTUFQID0ge1xuICAnUG9zdGVyYW1hLTE5MjctVzAxLVVsdHJhQmxhY2snOiBbeyBzcmM6ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vb3ZlcmxhcC1mb250cy9mb250cy9Qb3N0ZXJhbWEtMTkyNy1XMDEtVWx0cmFCbGFjay50dGY/YWx0PW1lZGlhJywgd2VpZ2h0OiA5MDAsIHN0eWxlOiAnbm9ybWFsJyB9XSxcbiAgJ1N0YXBlbC1OYXJyb3cnOiBbeyBzcmM6ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vb3ZlcmxhcC1mb250cy9mb250cy9OZXVlSGFhc0Rpc3BsYXkvTmV1ZUhhYXNEaXNwbGF5Um9tYW4udHRmP2FsdD1tZWRpYScsIHdlaWdodDogNDAwLCBzdHlsZTogJ25vcm1hbCcgfV0sXG4gICdTdGFwZWwtTmFycm93TWVkaXVtJzogW3sgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvc3RhcGVsL1N0YXBlbC1OYXJyb3dNZWRpdW0udHRmP2FsdD1tZWRpYScsIHdlaWdodDogNTAwLCBzdHlsZTogJ25vcm1hbCcgfV0sXG4gICdOZXVlSGFhc0Rpc3BsYXlCb2xkJzogW3sgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvTmV1ZUhhYXNEaXNwbGF5Qm9sZC50dGY/YWx0PW1lZGlhJywgd2VpZ2h0OiA3MDAsIHN0eWxlOiAnbm9ybWFsJyB9XSxcbiAgJ1RoZUJvbGRGb250JzogW3sgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvdGhlYm9sZGZvbnQudHRmP2FsdD1tZWRpYScsIHdlaWdodDogNzAwLCBzdHlsZTogJ25vcm1hbCcgfV0sXG4gICdNZXJjYWRpbGxvIEJsYWNrJzogW3sgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvbWVyY2FkaWxsby9NZXJjYWRpbGxvLUJsYWNrLnR0Zj9hbHQ9bWVkaWEnLCB3ZWlnaHQ6IDkwMCwgc3R5bGU6ICdub3JtYWwnIH1dLFxuICAnTWVyY2FkaWxsbyBCb2xkJzogW3sgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvbWVyY2FkaWxsby9NZXJjYWRpbGxvLUJvbGQudHRmP2FsdD1tZWRpYScsIHdlaWdodDogNzAwLCBzdHlsZTogJ25vcm1hbCcgfV0sXG4gIFxuICAvLyBuZWVkIHRvIGFkZCBpbnRlciBmb250IHZhcmlhdGlvbnNcbiAgLy8gSW50ZXIgZm9udCB2YXJpYXRpb25zXG4gICdJbnRlcic6IFtcbiAgICB7IHNyYzogJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9vdmVybGFwLWZvbnRzL2ZvbnRzL0ludGVyL0ludGVyLVRoaW4ud29mZjI/YWx0PW1lZGlhJywgd2VpZ2h0OiAxMDAsIHN0eWxlOiAnbm9ybWFsJyB9LFxuICAgIHsgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvSW50ZXIvSW50ZXItRXh0cmFMaWdodC53b2ZmMj9hbHQ9bWVkaWEnLCB3ZWlnaHQ6IDIwMCwgc3R5bGU6ICdub3JtYWwnIH0sXG4gICAgeyBzcmM6ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vb3ZlcmxhcC1mb250cy9mb250cy9JbnRlci9JbnRlci1MaWdodC53b2ZmMj9hbHQ9bWVkaWEnLCB3ZWlnaHQ6IDMwMCwgc3R5bGU6ICdub3JtYWwnIH0sXG4gICAgeyBzcmM6ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vb3ZlcmxhcC1mb250cy9mb250cy9JbnRlci9JbnRlci1SZWd1bGFyLndvZmYyP2FsdD1tZWRpYScsIHdlaWdodDogNDAwLCBzdHlsZTogJ25vcm1hbCcgfSxcbiAgICB7IHNyYzogJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9vdmVybGFwLWZvbnRzL2ZvbnRzL0ludGVyL0ludGVyLU1lZGl1bS53b2ZmMj9hbHQ9bWVkaWEnLCB3ZWlnaHQ6IDUwMCwgc3R5bGU6ICdub3JtYWwnIH0sXG4gICAgeyBzcmM6ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vb3ZlcmxhcC1mb250cy9mb250cy9JbnRlci9JbnRlci1TZW1pQm9sZC53b2ZmMj9hbHQ9bWVkaWEnLCB3ZWlnaHQ6IDYwMCwgc3R5bGU6ICdub3JtYWwnIH0sXG4gICAgeyBzcmM6ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vb3ZlcmxhcC1mb250cy9mb250cy9JbnRlci9JbnRlci1Cb2xkLndvZmYyP2FsdD1tZWRpYScsIHdlaWdodDogNzAwLCBzdHlsZTogJ25vcm1hbCcgfSxcbiAgICB7IHNyYzogJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9vdmVybGFwLWZvbnRzL2ZvbnRzL0ludGVyL0ludGVyLUV4dHJhQm9sZC53b2ZmMj9hbHQ9bWVkaWEnLCB3ZWlnaHQ6IDgwMCwgc3R5bGU6ICdub3JtYWwnIH0sXG4gICAgeyBzcmM6ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vb3ZlcmxhcC1mb250cy9mb250cy9JbnRlci9JbnRlci1CbGFjay53b2ZmMj9hbHQ9bWVkaWEnLCB3ZWlnaHQ6IDkwMCwgc3R5bGU6ICdub3JtYWwnIH1cbiAgXSxcblxuICAvLyBNaWxsaWFyZCBmb250IHZhcmlhdGlvbnNcbiAgJ01pbGxpYXJkJzogW1xuICAgIHsgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvbWlsbGlhcmQvUmVuZSUyMEJpZWRlciUyMCUyME1pbGxpYXJkJTIwVGhpbi5vdGY/YWx0PW1lZGlhJywgd2VpZ2h0OiAxMDAsIHN0eWxlOiAnbm9ybWFsJyB9LFxuICAgIHsgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvbWlsbGlhcmQvUmVuZSUyMEJpZWRlciUyMCUyME1pbGxpYXJkJTIwVGhpbiUyMEl0YWxpYy5vdGY/YWx0PW1lZGlhJywgd2VpZ2h0OiAxMDAsIHN0eWxlOiAnaXRhbGljJyB9LFxuICAgIHsgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvbWlsbGlhcmQvUmVuZSUyMEJpZWRlciUyMCUyME1pbGxpYXJkJTIwRXh0cmFMaWdodC5vdGY/YWx0PW1lZGlhJywgd2VpZ2h0OiAyMDAsIHN0eWxlOiAnbm9ybWFsJyB9LFxuICAgIHsgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvbWlsbGlhcmQvUmVuZSUyMEJpZWRlciUyMCUyME1pbGxpYXJkJTIwRXh0cmFMaWdodCUyMEl0YWxpYy5vdGY/YWx0PW1lZGlhJywgd2VpZ2h0OiAyMDAsIHN0eWxlOiAnaXRhbGljJyB9LFxuICAgIHsgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvbWlsbGlhcmQvUmVuZSUyMEJpZWRlciUyMCUyME1pbGxpYXJkJTIwTGlnaHQub3RmP2FsdD1tZWRpYScsIHdlaWdodDogMzAwLCBzdHlsZTogJ25vcm1hbCcgfSxcbiAgICB7IHNyYzogJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9vdmVybGFwLWZvbnRzL2ZvbnRzL21pbGxpYXJkL1JlbmUlMjBCaWVkZXIlMjAlMjBNaWxsaWFyZCUyMExpZ2h0JTIwSXRhbGljLm90Zj9hbHQ9bWVkaWEnLCB3ZWlnaHQ6IDMwMCwgc3R5bGU6ICdpdGFsaWMnIH0sXG4gICAgeyBzcmM6ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vb3ZlcmxhcC1mb250cy9mb250cy9taWxsaWFyZC9SZW5lJTIwQmllZGVyJTIwJTIwTWlsbGlhcmQlMjBCb29rLm90Zj9hbHQ9bWVkaWEnLCB3ZWlnaHQ6IDQwMCwgc3R5bGU6ICdub3JtYWwnIH0sXG4gICAgeyBzcmM6ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vb3ZlcmxhcC1mb250cy9mb250cy9taWxsaWFyZC9SZW5lJTIwQmllZGVyJTIwJTIwTWlsbGlhcmQlMjBCb29rJTIwSXRhbGljLm90Zj9hbHQ9bWVkaWEnLCB3ZWlnaHQ6IDQwMCwgc3R5bGU6ICdpdGFsaWMnIH0sXG4gICAgeyBzcmM6ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vb3ZlcmxhcC1mb250cy9mb250cy9taWxsaWFyZC9SZW5lJTIwQmllZGVyJTIwJTIwTWlsbGlhcmQlMjBNZWRpdW0ub3RmP2FsdD1tZWRpYScsIHdlaWdodDogNTAwLCBzdHlsZTogJ25vcm1hbCcgfSxcbiAgICB7IHNyYzogJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9vdmVybGFwLWZvbnRzL2ZvbnRzL21pbGxpYXJkL1JlbmUlMjBCaWVkZXIlMjAlMjBNaWxsaWFyZCUyME1lZGl1bSUyMEl0YWxpYy5vdGY/YWx0PW1lZGlhJywgd2VpZ2h0OiA1MDAsIHN0eWxlOiAnaXRhbGljJyB9LFxuICAgIHsgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvbWlsbGlhcmQvUmVuZSUyMEJpZWRlciUyMCUyME1pbGxpYXJkJTIwU2VtaUJvbGQub3RmP2FsdD1tZWRpYScsIHdlaWdodDogNjAwLCBzdHlsZTogJ25vcm1hbCcgfSxcbiAgICB7IHNyYzogJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9vdmVybGFwLWZvbnRzL2ZvbnRzL21pbGxpYXJkL1JlbmUlMjBCaWVkZXIlMjAlMjBNaWxsaWFyZCUyMFNlbWlCb2xkJTIwSXRhbGljLm90Zj9hbHQ9bWVkaWEnLCB3ZWlnaHQ6IDYwMCwgc3R5bGU6ICdpdGFsaWMnIH0sXG4gICAgeyBzcmM6ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vb3ZlcmxhcC1mb250cy9mb250cy9taWxsaWFyZC9SZW5lJTIwQmllZGVyJTIwJTIwTWlsbGlhcmQlMjBCb2xkLm90Zj9hbHQ9bWVkaWEnLCB3ZWlnaHQ6IDcwMCwgc3R5bGU6ICdub3JtYWwnIH0sXG4gICAgeyBzcmM6ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vb3ZlcmxhcC1mb250cy9mb250cy9taWxsaWFyZC9SZW5lJTIwQmllZGVyJTIwJTIwTWlsbGlhcmQlMjBCb2xkJTIwSXRhbGljLm90Zj9hbHQ9bWVkaWEnLCB3ZWlnaHQ6IDcwMCwgc3R5bGU6ICdpdGFsaWMnIH0sXG4gICAgeyBzcmM6ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vb3ZlcmxhcC1mb250cy9mb250cy9taWxsaWFyZC9SZW5lJTIwQmllZGVyJTIwJTIwTWlsbGlhcmQlMjBFeHRyYUJvbGQub3RmP2FsdD1tZWRpYScsIHdlaWdodDogODAwLCBzdHlsZTogJ25vcm1hbCcgfSxcbiAgICB7IHNyYzogJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9vdmVybGFwLWZvbnRzL2ZvbnRzL21pbGxpYXJkL1JlbmUlMjBCaWVkZXIlMjAlMjBNaWxsaWFyZCUyMEV4dHJhQm9sZCUyMEl0YWxpYy5vdGY/YWx0PW1lZGlhJywgd2VpZ2h0OiA4MDAsIHN0eWxlOiAnaXRhbGljJyB9LFxuICAgIHsgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvbWlsbGlhcmQvUmVuZSUyMEJpZWRlciUyMCUyME1pbGxpYXJkJTIwQmxhY2sub3RmP2FsdD1tZWRpYScsIHdlaWdodDogOTAwLCBzdHlsZTogJ25vcm1hbCcgfSxcbiAgICB7IHNyYzogJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9vdmVybGFwLWZvbnRzL2ZvbnRzL21pbGxpYXJkL1JlbmUlMjBCaWVkZXIlMjAlMjBNaWxsaWFyZCUyMEJsYWNrJTIwSXRhbGljLm90Zj9hbHQ9bWVkaWEnLCB3ZWlnaHQ6IDkwMCwgc3R5bGU6ICdpdGFsaWMnIH1cbiAgXSxcblxuICAnQXJpYWwgQmxhY2snOiBbeyBzcmM6ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vb3ZlcmxhcC1mb250cy9mb250cy9BcmlhbCUyMEJsYWNrLnR0Zj9hbHQ9bWVkaWEnLCB3ZWlnaHQ6IDkwMCwgc3R5bGU6ICdub3JtYWwnIH1dLFxuICBcbiAgLy8gU29maWEgUHJvIGZvbnQgdmFyaWF0aW9uc1xuICAnU29maWEgUHJvJzogW1xuICAgIHsgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvc29maWEtcHJvL1NvZmlhJTIwUHJvJTIwTGlnaHQlMjBBei5vdGY/YWx0PW1lZGlhJywgd2VpZ2h0OiAzMDAsIHN0eWxlOiAnbm9ybWFsJyB9LFxuICAgIHsgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvc29maWEtcHJvL1NvZmlhJTIwUHJvJTIwTGlnaHQlMjBJdGFsaWMlMjBBei5vdGY/YWx0PW1lZGlhJywgd2VpZ2h0OiAzMDAsIHN0eWxlOiAnaXRhbGljJyB9LFxuICAgIHsgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvc29maWEtcHJvL1NvZmlhJTIwUHJvJTIwUmVndWxhciUyMEF6Lm90Zj9hbHQ9bWVkaWEnLCB3ZWlnaHQ6IDQwMCwgc3R5bGU6ICdub3JtYWwnIH0sXG4gICAgeyBzcmM6ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vb3ZlcmxhcC1mb250cy9mb250cy9zb2ZpYS1wcm8vU29maWElMjBQcm8lMjBSZWd1bGFyJTIwSXRhbGljJTIwQXoub3RmP2FsdD1tZWRpYScsIHdlaWdodDogNDAwLCBzdHlsZTogJ2l0YWxpYycgfSxcbiAgICB7IHNyYzogJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9vdmVybGFwLWZvbnRzL2ZvbnRzL3NvZmlhLXByby9Tb2ZpYSUyMFBybyUyME1lZGl1bSUyMEF6Lm90Zj9hbHQ9bWVkaWEnLCB3ZWlnaHQ6IDUwMCwgc3R5bGU6ICdub3JtYWwnIH0sXG4gICAgeyBzcmM6ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vb3ZlcmxhcC1mb250cy9mb250cy9zb2ZpYS1wcm8vU29maWElMjBQcm8lMjBNZWRpdW0lMjBJdGFsaWMlMjBBei5vdGY/YWx0PW1lZGlhJywgd2VpZ2h0OiA1MDAsIHN0eWxlOiAnaXRhbGljJyB9LFxuICAgIHsgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvc29maWEtcHJvL1NvZmlhJTIwUHJvJTIwU2VtaSUyMEJvbGQlMjBBei5vdGY/YWx0PW1lZGlhJywgd2VpZ2h0OiA2MDAsIHN0eWxlOiAnbm9ybWFsJyB9LFxuICAgIHsgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvc29maWEtcHJvL1NvZmlhJTIwUHJvJTIwU2VtaSUyMEJvbGQlMjBJdGFsaWMlMjBBei5vdGY/YWx0PW1lZGlhJywgd2VpZ2h0OiA2MDAsIHN0eWxlOiAnaXRhbGljJyB9LFxuICAgIHsgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvc29maWEtcHJvL1NvZmlhJTIwUHJvJTIwQm9sZCUyMEF6Lm90Zj9hbHQ9bWVkaWEnLCB3ZWlnaHQ6IDcwMCwgc3R5bGU6ICdub3JtYWwnIH0sXG4gICAgeyBzcmM6ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vb3ZlcmxhcC1mb250cy9mb250cy9zb2ZpYS1wcm8vU29maWElMjBQcm8lMjBCb2xkJTIwSXRhbGljJTIwQXoub3RmP2FsdD1tZWRpYScsIHdlaWdodDogNzAwLCBzdHlsZTogJ2l0YWxpYycgfSxcbiAgICB7IHNyYzogJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9vdmVybGFwLWZvbnRzL2ZvbnRzL3NvZmlhLXByby9Tb2ZpYSUyMFBybyUyMEJsYWNrJTIwQXoub3RmP2FsdD1tZWRpYScsIHdlaWdodDogOTAwLCBzdHlsZTogJ25vcm1hbCcgfSxcbiAgICB7IHNyYzogJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9vdmVybGFwLWZvbnRzL2ZvbnRzL3NvZmlhLXByby9Tb2ZpYSUyMFBybyUyMEJsYWNrJTIwSXRhbGljJTIwQXoub3RmP2FsdD1tZWRpYScsIHdlaWdodDogOTAwLCBzdHlsZTogJ2l0YWxpYycgfSxcbiAgICB7IHNyYzogJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9vdmVybGFwLWZvbnRzL2ZvbnRzL3NvZmlhLXByby9Tb2ZpYSUyMFBybyUyMEV4dHJhTGlnaHQlMjBBei5vdGY/YWx0PW1lZGlhJywgd2VpZ2h0OiAyMDAsIHN0eWxlOiAnbm9ybWFsJyB9LFxuICAgIHsgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvc29maWEtcHJvL1NvZmlhJTIwUHJvJTIwRXh0cmFMaWdodCUyMEl0YWxpYyUyMEF6Lm90Zj9hbHQ9bWVkaWEnLCB3ZWlnaHQ6IDIwMCwgc3R5bGU6ICdpdGFsaWMnIH0sXG4gICAgeyBzcmM6ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vb3ZlcmxhcC1mb250cy9mb250cy9zb2ZpYS1wcm8vU29maWElMjBQcm8lMjBVbHRyYUxpZ2h0JTIwQXoub3RmP2FsdD1tZWRpYScsIHdlaWdodDogMTAwLCBzdHlsZTogJ25vcm1hbCcgfSxcbiAgICB7IHNyYzogJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9vdmVybGFwLWZvbnRzL2ZvbnRzL3NvZmlhLXByby9Tb2ZpYSUyMFBybyUyMFVsdHJhTGlnaHQlMjBJdGFsaWMlMjBBei5vdGY/YWx0PW1lZGlhJywgd2VpZ2h0OiAxMDAsIHN0eWxlOiAnaXRhbGljJyB9XG4gIF1cbn07XG5cbmV4cG9ydCBjb25zdCBsb2FkRG9jdW1lbnRGb250cyA9IGFzeW5jIChmb250RmFtaWx5KSA9PiB7ICBcbiAgaWYgKGZvbnRGYW1pbHkgPT09ICdBcmlhbCcpIHsgXG4gICAgcmV0dXJuO1xuICB9XG4gIGVsc2UgaWYgKCFmb250RmFtaWx5IHx8IHR5cGVvZiBkb2N1bWVudCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBjb25zb2xlLndhcm4oJ0ZvbnQgZmFtaWx5IGlzIG5vdCBwcm92aWRlZCBvciBkb2N1bWVudCBpcyB1bmRlZmluZWQuJyk7XG4gICAgcmV0dXJuO1xuICB9IFxuXG4gIC8vIENsZWFuIHRoZSBmb250IGZhbWlseSBuYW1lIChyZW1vdmUgcXVvdGVzIGFuZCBmYWxsYmFja3MpXG4gIGNvbnN0IGNsZWFuRm9udEZhbWlseSA9IGZvbnRGYW1pbHkucmVwbGFjZSgvWydcIl0vZywgJycpLnNwbGl0KCcsJylbMF0udHJpbSgpO1xuICAvLyBjb25zb2xlLmxvZyhgQ2xlYW5lZCBmb250IGZhbWlseSBuYW1lOiAke2NsZWFuRm9udEZhbWlseX1gKTtcbiAgXG4gIC8vIEdldCBmb250IHZhcmlhdGlvbnMgZm9yIHRoaXMgZmFtaWx5XG4gIGNvbnN0IGZvbnRWYXJpYXRpb25zID0gRk9OVF9NQVBbY2xlYW5Gb250RmFtaWx5XTtcbiAgaWYgKCFmb250VmFyaWF0aW9ucykge1xuICAgIGNvbnNvbGUud2FybihgRm9udCBmYW1pbHkgXCIke2NsZWFuRm9udEZhbWlseX1cIiBub3QgZm91bmQgaW4gZm9udCBtYXBgKTtcbiAgICByZXR1cm47XG4gIH1cbiAgXG4gIC8vIGNvbnNvbGUubG9nKGBGb3VuZCBmb250IHZhcmlhdGlvbnMgZm9yIFwiJHtjbGVhbkZvbnRGYW1pbHl9XCI6YCwgZm9udFZhcmlhdGlvbnMpO1xuXG4gIHRyeSB7XG4gICAgLy8gTG9hZCBhbGwgdmFyaWF0aW9ucyBvZiB0aGUgZm9udCBmYW1pbHlcbiAgICBjb25zdCBsb2FkUHJvbWlzZXMgPSBmb250VmFyaWF0aW9ucy5tYXAoYXN5bmMgKHsgc3JjLCB3ZWlnaHQsIHN0eWxlIH0pID0+IHtcbiAgICAgIGNvbnN0IGZvbnQgPSBuZXcgRm9udEZhY2UoY2xlYW5Gb250RmFtaWx5LCBgdXJsKCR7c3JjfSlgLCB7IHdlaWdodCwgc3R5bGUgfSk7XG4gICAgICBjb25zdCBsb2FkZWRGb250ID0gYXdhaXQgZm9udC5sb2FkKCk7XG4gICAgICBkb2N1bWVudC5mb250cy5hZGQobG9hZGVkRm9udCk7XG4gICAgICByZXR1cm4gbG9hZGVkRm9udDtcbiAgICB9KTtcblxuICAgIGF3YWl0IFByb21pc2UuYWxsKGxvYWRQcm9taXNlcyk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29uc29sZS5lcnJvcihgRXJyb3IgbG9hZGluZyBmb250IGZhbWlseSBcIiR7Y2xlYW5Gb250RmFtaWx5fVwiOmAsIGVycm9yKTtcbiAgfVxufTsiLG51bGwsbnVsbCwiaW1wb3J0IHsgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUN1cnJlbnRGcmFtZSB9IGZyb20gJ3JlbW90aW9uJztcblxuZXhwb3J0IGNvbnN0IHVzZUFkanVzdGVkUG9zaXRpb24gPSAoeSwgZmFjZURhdGEpID0+IHtcbiAgY29uc3QgY3VycmVudEZyYW1lID0gdXNlQ3VycmVudEZyYW1lKCk7XG5cbiAgLy8gTWVtb2l6ZSBmYWNlIGV2ZW50IGxvb2t1cFxuICBjb25zdCBjdXJyZW50RmFjZUV2ZW50ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKCFmYWNlRGF0YT8uZXZlbnRzPy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiB7IG51bVBlb3BsZTogMiB9O1xuICAgIH1cbiAgICByZXR1cm4gZmFjZURhdGEuZXZlbnRzLmZpbmRMYXN0KFxuICAgICAgKGV2ZW50KSA9PiBldmVudC5mcmFtZSA8PSBjdXJyZW50RnJhbWVcbiAgICApIHx8IHsgbnVtUGVvcGxlOiAyIH07XG4gIH0sIFtjdXJyZW50RnJhbWUsIGZhY2VEYXRhPy5ldmVudHNdKTtcbiAgXG4gIC8vIEFkanVzdCBZIHBvc2l0aW9uIG9ubHkgaWYgZmFjZSBkZXRlY3Rpb24gZGF0YSBpcyBhdmFpbGFibGVcbiAgY29uc3QgYWRqdXN0ZWRZID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKGN1cnJlbnRGYWNlRXZlbnQubnVtUGVvcGxlID09PSAyKSB7XG4gICAgICByZXR1cm4geTtcbiAgICB9XG4gICAgaWYgKHkgPT09IDk2MCkge1xuICAgICAgcmV0dXJuIHkgKiAyIC0gMzAwO1xuICAgIH1cbiAgICByZXR1cm4geTtcbiAgfSwgW3ksIGN1cnJlbnRGYWNlRXZlbnQubnVtUGVvcGxlXSk7XG5cbiAgcmV0dXJuIHsgY3VycmVudEZhY2VFdmVudCwgYWRqdXN0ZWRZIH07XG59OyAiLCJpbXBvcnQgeyB1c2VNZW1vIH0gZnJvbSAncmVhY3QnO1xuXG5leHBvcnQgY29uc3QgdXNlQWRqdXN0ZWRQaHJhc2VzID0gKHN1YnRpdGxlc0RhdGEsIG1heENoYXJzUGVyTGluZSwgZnBzLCBzZWdtZW50RGF0YSA9IFtdKSA9PiB7XG4gIHJldHVybiB1c2VNZW1vKCgpID0+IHtcbiAgICAvLyBJZiBubyBzZWdtZW50IGRhdGEsIHJldHVybiBlbXB0eSBhcnJheVxuICAgIGlmICghc2VnbWVudERhdGEgfHwgc2VnbWVudERhdGEubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgY29uc3QgZ2V0TWlzc2luZ1dvcmRQaHJhc2VzSWZFeGlzdCA9IChzdGFydFRpbWUsIGVuZFRpbWUpID0+IHtcbiAgICAgIC8vIEZpbmQgd29yZHMgdGhhdCBmYWxsIGluIHRoZSBnYXBcbiAgICAgIGNvbnN0IGdhcFdvcmRzID0gc3VidGl0bGVzRGF0YS5maWx0ZXIod29yZCA9PiBcbiAgICAgICAgd29yZC5zdGFydCA+PSBzdGFydFRpbWUgJiYgd29yZC5lbmQgPD0gZW5kVGltZVxuICAgICAgKTtcblxuICAgICAgaWYgKGdhcFdvcmRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIFtdO1xuXG4gICAgICAvLyBDcmVhdGUgcGhyYXNlcyBmcm9tIGdhcCB3b3JkcyB1c2luZyBzYW1lIGxvZ2ljIGFzIHNlZ21lbnQgcGhyYXNlc1xuICAgICAgY29uc3QgZ2FwUGhyYXNlcyA9IFtdO1xuICAgICAgbGV0IGN1cnJlbnRQaHJhc2UgPSB7XG4gICAgICAgIHRleHQ6IFwiXCIsXG4gICAgICAgIHdvcmRzOiBbXSxcbiAgICAgICAgc3RhcnQ6IG51bGwsXG4gICAgICAgIGVuZDogbnVsbCxcbiAgICAgICAgc2VnbWVudEluZGV4OiAtMSwgIC8vIFNwZWNpYWwgaW5kZXggZm9yIGdhcCBwaHJhc2VzXG4gICAgICAgIGR1cmF0aW9uSW5GcmFtZXM6IDBcbiAgICAgIH07XG5cbiAgICAgIGdhcFdvcmRzLmZvckVhY2goKHdvcmQsIHdvcmRJbmRleCkgPT4ge1xuICAgICAgICBjb25zdCB3b3JkV2l0aFNwYWNlID0gd29yZEluZGV4ID09PSAwID8gd29yZC53b3JkIDogYCAke3dvcmQud29yZH1gO1xuICAgICAgICBjb25zdCBuZXdMZW5ndGggPSBjdXJyZW50UGhyYXNlLnRleHQubGVuZ3RoICsgd29yZFdpdGhTcGFjZS5sZW5ndGg7XG5cbiAgICAgICAgaWYgKG5ld0xlbmd0aCA8PSBtYXhDaGFyc1BlckxpbmUpIHtcbiAgICAgICAgICAvLyBBZGQgdG8gY3VycmVudCBwaHJhc2VcbiAgICAgICAgICBjdXJyZW50UGhyYXNlLnRleHQgKz0gd29yZFdpdGhTcGFjZTtcbiAgICAgICAgICBjdXJyZW50UGhyYXNlLndvcmRzLnB1c2god29yZCk7XG4gICAgICAgICAgY3VycmVudFBocmFzZS5zdGFydCA9IGN1cnJlbnRQaHJhc2Uuc3RhcnQgPT09IG51bGwgPyB3b3JkLnN0YXJ0IDogY3VycmVudFBocmFzZS5zdGFydDtcbiAgICAgICAgICBjdXJyZW50UGhyYXNlLmVuZCA9IHdvcmQuZW5kO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIEZpbmFsaXplIGN1cnJlbnQgcGhyYXNlXG4gICAgICAgICAgaWYgKGN1cnJlbnRQaHJhc2Uud29yZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgZ2FwUGhyYXNlcy5wdXNoKGN1cnJlbnRQaHJhc2UpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIFN0YXJ0IG5ldyBwaHJhc2Ugd2l0aCBjdXJyZW50IHdvcmRcbiAgICAgICAgICBjdXJyZW50UGhyYXNlID0ge1xuICAgICAgICAgICAgdGV4dDogd29yZC53b3JkLFxuICAgICAgICAgICAgd29yZHM6IFt3b3JkXSxcbiAgICAgICAgICAgIHN0YXJ0OiB3b3JkLnN0YXJ0LFxuICAgICAgICAgICAgZW5kOiB3b3JkLmVuZCxcbiAgICAgICAgICAgIHNlZ21lbnRJbmRleDogLTFcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgLy8gQWRkIHRoZSBsYXN0IHBocmFzZSBpZiBpdCBoYXMgd29yZHNcbiAgICAgIGlmIChjdXJyZW50UGhyYXNlLndvcmRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgZ2FwUGhyYXNlcy5wdXNoKGN1cnJlbnRQaHJhc2UpO1xuICAgICAgfVxuXG4gICAgICAvLyBQcm9jZXNzIHRpbWluZyBmb3IgZ2FwIHBocmFzZXNcbiAgICAgIGNvbnN0IHByb2Nlc3NlZEdhcFBocmFzZXMgPSBnYXBQaHJhc2VzLm1hcCgocGhyYXNlLCBwaHJhc2VJbmRleCkgPT4ge1xuICAgICAgICBjb25zdCBzdGFydEZyYW1lID0gTWF0aC5mbG9vcihwaHJhc2Uuc3RhcnQgKiBmcHMpO1xuICAgICAgICBsZXQgZW5kRnJhbWU7XG5cbiAgICAgICAgaWYgKHBocmFzZUluZGV4IDwgZ2FwUGhyYXNlcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgY29uc3QgbmV4dFBocmFzZSA9IGdhcFBocmFzZXNbcGhyYXNlSW5kZXggKyAxXTtcbiAgICAgICAgICBjb25zdCB0aW1lRGlmZiA9IG5leHRQaHJhc2Uuc3RhcnQgLSBwaHJhc2UuZW5kO1xuICAgICAgICAgIGVuZEZyYW1lID0gdGltZURpZmYgPiAwLjMgPyBcbiAgICAgICAgICAgIE1hdGguZmxvb3IocGhyYXNlLmVuZCAqIGZwcykgOiBcbiAgICAgICAgICAgIE1hdGguZmxvb3IobmV4dFBocmFzZS5zdGFydCAqIGZwcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZW5kRnJhbWUgPSBNYXRoLmZsb29yKHBocmFzZS5lbmQgKiBmcHMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5waHJhc2UsXG4gICAgICAgICAgc3RhcnRGcmFtZSxcbiAgICAgICAgICBlbmRGcmFtZSxcbiAgICAgICAgICBkdXJhdGlvbkluRnJhbWVzOiBlbmRGcmFtZSAtIHN0YXJ0RnJhbWUgKyAxXG4gICAgICAgIH07XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHByb2Nlc3NlZEdhcFBocmFzZXM7XG4gICAgfTtcblxuICAgIGNvbnN0IG1hc3RlclBocmFzZXMgPSBbXTtcblxuICAgIC8vIENoZWNrIGZvciB3b3JkcyBiZWZvcmUgdGhlIGZpcnN0IHNlZ21lbnRcbiAgICBpZiAoc2VnbWVudERhdGEubGVuZ3RoID4gMCAmJiBzdWJ0aXRsZXNEYXRhLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZpcnN0U2VnbWVudFN0YXJ0ID0gc2VnbWVudERhdGFbMF0uc3RhcnQ7XG4gICAgICBjb25zdCBmaXJzdFdvcmRTdGFydCA9IDA7IC8vIFN0YXJ0IGZyb20gdGhlIGJlZ2lubmluZ1xuICAgICAgY29uc3QgcHJlU2VnbWVudFBocmFzZXMgPSBnZXRNaXNzaW5nV29yZFBocmFzZXNJZkV4aXN0KGZpcnN0V29yZFN0YXJ0LCBmaXJzdFNlZ21lbnRTdGFydCk7XG4gICAgICBpZiAocHJlU2VnbWVudFBocmFzZXMubGVuZ3RoID4gMCkge1xuICAgICAgICBtYXN0ZXJQaHJhc2VzLnB1c2goLi4ucHJlU2VnbWVudFBocmFzZXMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFByb2Nlc3MgZWFjaCBzZWdtZW50IGFuZCBnYXBzIGJldHdlZW4gc2VnbWVudHNcbiAgICBzZWdtZW50RGF0YS5mb3JFYWNoKChzZWdtZW50LCBzZWdtZW50SW5kZXgpID0+IHtcbiAgICAgIC8vIDEuIEdldCB3b3JkcyBmb3IgdGhpcyBzZWdtZW50XG4gICAgICBjb25zdCBzZWdtZW50V29yZHMgPSBzdWJ0aXRsZXNEYXRhLmZpbHRlcih3b3JkID0+IHdvcmQuc2VnbWVudElkID09PSBzZWdtZW50SW5kZXgpO1xuICAgICAgXG4gICAgICAvLyBQcm9jZXNzIHNlZ21lbnQgcGhyYXNlc1xuICAgICAgaWYgKHNlZ21lbnRXb3Jkcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIC8vIDIuIENyZWF0ZSBwaHJhc2VzIGZvciB0aGlzIHNlZ21lbnRcbiAgICAgICAgY29uc3QgY3VycmVudFNlZ21lbnRQaHJhc2VzID0gW107XG4gICAgICAgIGxldCBjdXJyZW50UGhyYXNlID0ge1xuICAgICAgICAgIHRleHQ6IFwiXCIsXG4gICAgICAgICAgd29yZHM6IFtdLFxuICAgICAgICAgIHN0YXJ0OiBudWxsLFxuICAgICAgICAgIGVuZDogbnVsbCxcbiAgICAgICAgICBzZWdtZW50SW5kZXhcbiAgICAgICAgfTtcblxuICAgICAgICBzZWdtZW50V29yZHMuZm9yRWFjaCgod29yZCwgd29yZEluZGV4KSA9PiB7XG4gICAgICAgICAgY29uc3Qgd29yZFdpdGhTcGFjZSA9IHdvcmRJbmRleCA9PT0gMCA/IHdvcmQud29yZCA6IGAgJHt3b3JkLndvcmR9YDtcbiAgICAgICAgICBjb25zdCBuZXdMZW5ndGggPSBjdXJyZW50UGhyYXNlLnRleHQubGVuZ3RoICsgd29yZFdpdGhTcGFjZS5sZW5ndGg7XG5cbiAgICAgICAgICBpZiAobmV3TGVuZ3RoIDw9IG1heENoYXJzUGVyTGluZSkge1xuICAgICAgICAgICAgLy8gQWRkIHRvIGN1cnJlbnQgcGhyYXNlXG4gICAgICAgICAgICBjdXJyZW50UGhyYXNlLnRleHQgKz0gd29yZFdpdGhTcGFjZTtcbiAgICAgICAgICAgIGN1cnJlbnRQaHJhc2Uud29yZHMucHVzaCh3b3JkKTtcbiAgICAgICAgICAgIGN1cnJlbnRQaHJhc2Uuc3RhcnQgPSBjdXJyZW50UGhyYXNlLnN0YXJ0ID09PSBudWxsID8gd29yZC5zdGFydCA6IGN1cnJlbnRQaHJhc2Uuc3RhcnQ7XG4gICAgICAgICAgICBjdXJyZW50UGhyYXNlLmVuZCA9IHdvcmQuZW5kO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBGaW5hbGl6ZSBjdXJyZW50IHBocmFzZVxuICAgICAgICAgICAgaWYgKGN1cnJlbnRQaHJhc2Uud29yZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICBjdXJyZW50U2VnbWVudFBocmFzZXMucHVzaChjdXJyZW50UGhyYXNlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gU3RhcnQgbmV3IHBocmFzZSB3aXRoIGN1cnJlbnQgd29yZFxuICAgICAgICAgICAgY3VycmVudFBocmFzZSA9IHtcbiAgICAgICAgICAgICAgdGV4dDogd29yZC53b3JkLFxuICAgICAgICAgICAgICB3b3JkczogW3dvcmRdLFxuICAgICAgICAgICAgICBzdGFydDogd29yZC5zdGFydCxcbiAgICAgICAgICAgICAgZW5kOiB3b3JkLmVuZCxcbiAgICAgICAgICAgICAgc2VnbWVudEluZGV4XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gQWRkIHRoZSBsYXN0IHBocmFzZSBpZiBpdCBoYXMgd29yZHNcbiAgICAgICAgaWYgKGN1cnJlbnRQaHJhc2Uud29yZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGN1cnJlbnRTZWdtZW50UGhyYXNlcy5wdXNoKGN1cnJlbnRQaHJhc2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gMy4gUHJvY2VzcyB0aW1pbmcgZm9yIHBocmFzZXNcbiAgICAgICAgY29uc3QgcHJvY2Vzc2VkUGhyYXNlcyA9IGN1cnJlbnRTZWdtZW50UGhyYXNlcy5tYXAoKHBocmFzZSwgcGhyYXNlSW5kZXgpID0+IHtcbiAgICAgICAgICBjb25zdCBzdGFydEZyYW1lID0gTWF0aC5mbG9vcihwaHJhc2Uuc3RhcnQgKiBmcHMpO1xuICAgICAgICAgIGxldCBlbmRGcmFtZTtcblxuICAgICAgICAgIC8vIENhbGN1bGF0ZSBlbmQgZnJhbWUgYmFzZWQgb24gbmV4dCBwaHJhc2Ugb3Igc2VnbWVudCBlbmRcbiAgICAgICAgICBpZiAocGhyYXNlSW5kZXggPCBjdXJyZW50U2VnbWVudFBocmFzZXMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgY29uc3QgbmV4dFBocmFzZSA9IGN1cnJlbnRTZWdtZW50UGhyYXNlc1twaHJhc2VJbmRleCArIDFdO1xuICAgICAgICAgICAgY29uc3QgdGltZURpZmYgPSBuZXh0UGhyYXNlLnN0YXJ0IC0gcGhyYXNlLmVuZDtcbiAgICAgICAgICAgIGVuZEZyYW1lID0gdGltZURpZmYgPiAwLjMgPyBcbiAgICAgICAgICAgICAgTWF0aC5mbG9vcihwaHJhc2UuZW5kICogZnBzKSA6IFxuICAgICAgICAgICAgICBNYXRoLmZsb29yKG5leHRQaHJhc2Uuc3RhcnQgKiBmcHMpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBlbmRGcmFtZSA9IE1hdGguZmxvb3IocGhyYXNlLmVuZCAqIGZwcyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gRW5zdXJlIHBocmFzZSBkb2Vzbid0IGV4dGVuZCBiZXlvbmQgc2VnbWVudCBib3VuZGFyaWVzXG4gICAgICAgICAgZW5kRnJhbWUgPSBNYXRoLm1pbihlbmRGcmFtZSwgTWF0aC5mbG9vcihzZWdtZW50LmVuZCAqIGZwcykpO1xuXG4gICAgICAgICAgY29uc3QgcHJvY2Vzc2VkUGhyYXNlID0ge1xuICAgICAgICAgICAgLi4ucGhyYXNlLFxuICAgICAgICAgICAgc3RhcnRGcmFtZSxcbiAgICAgICAgICAgIGVuZEZyYW1lLFxuICAgICAgICAgICAgZHVyYXRpb25JbkZyYW1lczogZW5kRnJhbWUgLSBzdGFydEZyYW1lICsgMVxuICAgICAgICAgIH07XG4gICAgICAgICAgcmV0dXJuIHByb2Nlc3NlZFBocmFzZTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gNC4gQWRkIHRvIG1hc3RlciBhcnJheVxuICAgICAgICBtYXN0ZXJQaHJhc2VzLnB1c2goLi4ucHJvY2Vzc2VkUGhyYXNlcyk7XG4gICAgICB9XG5cbiAgICAgIC8vIENoZWNrIGZvciBnYXAgYWZ0ZXIgdGhpcyBzZWdtZW50XG4gICAgICBpZiAoc2VnbWVudEluZGV4IDwgc2VnbWVudERhdGEubGVuZ3RoIC0gMSkge1xuICAgICAgICBjb25zdCBuZXh0U2VnbWVudCA9IHNlZ21lbnREYXRhW3NlZ21lbnRJbmRleCArIDFdO1xuICAgICAgICBjb25zdCBnYXBQaHJhc2VzID0gZ2V0TWlzc2luZ1dvcmRQaHJhc2VzSWZFeGlzdChzZWdtZW50LmVuZCwgbmV4dFNlZ21lbnQuc3RhcnQpO1xuICAgICAgICBpZiAoZ2FwUGhyYXNlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgbWFzdGVyUGhyYXNlcy5wdXNoKC4uLmdhcFBocmFzZXMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBTb3J0IGZpbmFsIHBocmFzZXMgYnkgc3RhcnQgdGltZVxuICAgIG1hc3RlclBocmFzZXMuc29ydCgoYSwgYikgPT4gYS5zdGFydCAtIGIuc3RhcnQpO1xuICAgIFxuICAgIHJldHVybiBtYXN0ZXJQaHJhc2VzO1xuICB9LCBbc3VidGl0bGVzRGF0YSwgbWF4Q2hhcnNQZXJMaW5lLCBmcHMsIHNlZ21lbnREYXRhXSk7XG59OyAiXSwibmFtZXMiOlsiZXN0aW1hdGVUZXh0V2lkdGgiLCJ0ZXh0IiwiZm9udFNpemUiLCJmb250RmFtaWx5IiwiY2FudmFzIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiY29udGV4dCIsImdldENvbnRleHQiLCJmb250IiwiY29uY2F0IiwibWVhc3VyZVRleHQiLCJ3aWR0aCIsImdlbmVyYXRlT3V0bGluZVNoYWRvdyIsImNhY2hlIiwiTWFwIiwiY29sb3IiLCJvdXRsaW5lU3R5bGUiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJrZXkiLCJoYXMiLCJnZXQiLCJzaGFkb3dzIiwicGFyc2VkV2lkdGgiLCJwYXJzZUludCIsInB1c2giLCJoYWxmV2lkdGgiLCJNYXRoIiwicm91bmQiLCJpIiwiYW5nbGUiLCJQSSIsIngiLCJjb3MiLCJ5Iiwic2luIiwicmVzdWx0Iiwiam9pbiIsInNldCIsIlN1YnRpdGxlVGV4dCIsIm1lbW8iLCJfcmVmIiwic3R5bGUiLCJhbmltYXRpb25TdHlsZSIsImZyYW1lIiwic3RhcnRGcmFtZSIsInJhbmRvbUNvbG9ycyIsIndvcmRzIiwiZnBzIiwiaGlnaGxpZ2h0V29yZHNDb2xvciIsInJlbGF0aXZlRnJhbWUiLCJzY2FsZSIsInVzZU1lbW8iLCJzcHJpbmciLCJmcm9tIiwidG8iLCJjb25maWciLCJkYW1waW5nIiwic3RpZmZuZXNzIiwic3ByaW5nVmFsdWUiLCJtYXNzIiwidHJhbnNsYXRlWSIsInRyYW5zbGF0ZVZhbHVlIiwiYWRqdXN0ZWRGb250U2l6ZSIsIm1heExpbmVXaWR0aCIsImJhc2VGb250U2l6ZSIsInRleHRXaWR0aCIsInNjYWxlRmFjdG9yIiwiZmxvb3IiLCJhbmltYXRlZFN0eWxlIiwiYmFzZVBhZGRpbmciLCJiYWNrZ3JvdW5kUGFkZGluZyIsInNoYWRvd0ludGVuc2l0eSIsInNoYWRvd0NvbG9yIiwic2hhZG93Qmx1ciIsInNoYWRvd09mZnNldFgiLCJzaGFkb3dPZmZzZXRZIiwidGV4dFNoYWRvdyIsImhleFRvUmdiYSIsImhleCIsIm9wYWNpdHkiLCJzaG9ydGhhbmRSZWdleCIsInJlcGxhY2UiLCJtIiwiciIsImciLCJiIiwiZXhlYyIsImJhY2tncm91bmRDb2xvciIsImJhY2tncm91bmRPcGFjaXR5IiwicGFyc2VGbG9hdCIsInRyaW0iLCJiYWNrZ3JvdW5kIiwiaGFzQmFja2dyb3VuZCIsImhhc1NoYWRvdyIsImJvcmRlclJhZGl1cyIsImJhY2tncm91bmRCb3JkZXJSYWRpdXMiLCJpc1dyYXBwZWQiLCJiYWNrZ3JvdW5kRmlsbFN0eWxlIiwicGFkZGluZ1ZhbHVlIiwicGFkZGluZyIsImRpc3BsYXkiLCJiYXNlU3R5bGUiLCJfb2JqZWN0U3ByZWFkIiwib3ZlcmZsb3ciLCJib3hTaGFkb3ciLCJ0cmFuc2Zvcm0iLCJ3cmFwcGVyU3R5bGUiLCJwb3NpdGlvbiIsInZlcnRpY2FsU3RyZXRjaCIsIndoaXRlU3BhY2UiLCJhbGlnbkl0ZW1zIiwid2lsbENoYW5nZSIsImxlZnQiLCJ0b3AiLCJyaWdodCIsImJvdHRvbSIsIm91dGxpbmVDb2xvciIsIm91dGxpbmVXaWR0aCIsIldlYmtpdFRleHRGaWxsQ29sb3IiLCJ6SW5kZXgiLCJtYWluVGV4dFN0eWxlIiwiV2Via2l0VGV4dFN0cm9rZSIsInRleHRXb3JkcyIsInNwbGl0IiwiY3VycmVudFdvcmRUaW1lIiwicGhyYXNlQW1wbGlmaWVkU3R5bGUiLCJBcnJheSIsImlzQXJyYXkiLCJhbXBsaWZpZWRDb2xvcnMiLCJmaXJzdFdvcmQiLCJ3b3JkIiwiZ3JhZGllbnRJbmRleCIsInJhbmRvbSIsImdyYWRpZW50IiwiY29sb3JzIiwiYmFja2dyb3VuZENsaXAiLCJXZWJraXRCYWNrZ3JvdW5kQ2xpcCIsImNvbnNvbGUiLCJsb2ciLCJfdHlwZW9mIiwiYW1wbGlmaWVkQ29sb3IiLCJ0eXBlIiwicmFuZG9tQ29sb3JEYXRhIiwiZW5hYmxlZCIsInNob3VsZENvbG9yIiwicGN0QXBwbGllZCIsIl9yZWYyIiwicmFuZG9tV29yZENvdW50UmFuZ2UiLCJfcmVmMyIsIl9zbGljZWRUb0FycmF5IiwibWluV29yZHMiLCJtYXhXb3JkcyIsInJhbmdlIiwicmFuZG9tV29yZENvdW50IiwibWF4U3RhcnRJbmRleCIsIm1heCIsInN0YXJ0SW5kZXgiLCJyYW5kb21Db2xvck9iaiIsInBocmFzZVN0eWxlIiwid29yZENvbnRlbnQiLCJtYXAiLCJpbmRleCIsImhpZ2hsaWdodGVkTWF0Y2giLCJtYXRjaCIsImlzSGlnaGxpZ2h0ZWQiLCJkaXNwbGF5V29yZCIsInNob3VsZENvbG9yVGhpc1dvcmQiLCJ3b3JkVGltaW5nIiwiaGFzQmVlblNwb2tlbiIsImVuZCIsImlzQ3VycmVudGx5U3Bva2VuIiwic3RhcnQiLCJ0ZXh0SGlnaGxpZ2h0UGVyc2lzdHMiLCJzaG91bGRIaWdobGlnaHQiLCJhbXBsaWZ5U3Bva2VuV29yZHMiLCJ3b3JkU3R5bGUiLCJhbXBsaWZpZWRPcGFjaXR5IiwidW5BbXBsaWZpZWRPcGFjaXR5IiwiY29udGFpbmVyU3R5bGUiLCJtYXJnaW5SaWdodCIsIlJlYWN0IiwiY3VycmVudFdvcmRCbG9jayIsImNvbnRlbnQiLCJjdXJyZW50V29yZEJsb2NrUGFkZGluZyIsImhlaWdodCIsImN1cnJlbnRXb3JkQmxvY2tCYWNrZ3JvdW5kQ29sb3IiLCJjdXJyZW50V29yZEJsb2NrT3BhY2l0eSIsImN1cnJlbnRXb3JkQmxvY2tCb3JkZXJSYWRpdXMiLCJwb2ludGVyRXZlbnRzIiwiYm94U2l6aW5nIiwicHJldlByb3BzIiwibmV4dFByb3BzIiwiZXNzZW50aWFsUHJvcHMiLCJoYXNFc3NlbnRpYWxQcm9wc0NoYW5nZWQiLCJzb21lIiwicHJvcCIsIkpTT04iLCJzdHJpbmdpZnkiLCJmaW5kUGhyYXNlc0luUmFuZ2UiLCJ0aW1lIiwicGhyYXNlcyIsIm1pZCIsInBocmFzZSIsImhleFRvUmdiIiwic2xpY2UiLCJ1c2VUZXh0U3R5bGUiLCJwcmVzZXQiLCJhZGp1c3RlZFkiLCJ2aWRlb1dpZHRoIiwiZHJvcFNoYWRvdyIsInNoYWRvd0VuYWJsZWQiLCJwYWRkaW5nWCIsImJhY2tncm91bmRQYWRkaW5nWCIsInBhZGRpbmdZIiwiYmFja2dyb3VuZFBhZGRpbmdZIiwiZm9udFdlaWdodCIsImZvbnRDb2xvciIsInRleHRUcmFuc2Zvcm0iLCJ0ZXh0Q2FzZSIsImZvbnRTdHlsZSIsImlzSXRhbGljIiwidGV4dEFsaWduIiwibGV0dGVyU3BhY2luZyIsInRleHRTcGFjaW5nIiwidHJhbnNmb3JtT3JpZ2luIiwibWF4V2lkdGgiLCJmaWx0ZXIiLCJhbXBsaWZ5T3BhY2l0eVRyYW5zaXRpb25EdXJhdGlvbiIsIkZPTlRfTUFQIiwic3JjIiwid2VpZ2h0IiwibG9hZERvY3VtZW50Rm9udHMiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZTIiLCJjbGVhbkZvbnRGYW1pbHkiLCJmb250VmFyaWF0aW9ucyIsImxvYWRQcm9taXNlcyIsIndyYXAiLCJfY2FsbGVlMiQiLCJfY29udGV4dDIiLCJwcmV2IiwibmV4dCIsImFicnVwdCIsIndhcm4iLCJfY2FsbGVlIiwibG9hZGVkRm9udCIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJGb250RmFjZSIsImxvYWQiLCJzZW50IiwiZm9udHMiLCJhZGQiLCJzdG9wIiwiX3gyIiwiYXBwbHkiLCJQcm9taXNlIiwiYWxsIiwidDAiLCJlcnJvciIsIl94IiwiYWRkUGl4ZWxVbml0IiwidmFsdWUiLCJlbmRzV2l0aCIsIlN1YnRpdGxlc0NvbXBvc2l0aW9uIiwiX2EiLCJzdHlsZUNvbmZpZyIsImN1cnJlbnRGcmFtZSIsImN1cnJlbnRUaW1lIiwidXNlRWZmZWN0IiwiY3VycmVudFBocmFzZXMiLCJfanN4IiwiX19hc3NpZ24iLCJjaGlsZHJlbiIsInByb3BzIiwiU3VidGl0bGVzIiwiZGV2TW9kZSIsIlBsYXllciIsImNvbXBvbmVudCIsImlucHV0UHJvcHMiLCJkdXJhdGlvbkluRnJhbWVzIiwiY29tcG9zaXRpb25XaWR0aCIsImNvbXBvc2l0aW9uSGVpZ2h0IiwiY29udHJvbHMiLCJhdXRvUGxheSIsImxvb3AiLCJ1c2VTdHlsZUNvbmZpZyIsInN1YnRpdGxlU3R5bGUiLCJ0ZXh0U3R5bGUiLCJuYW1lIiwiY2FwdGlvblBvc2l0aW9uIiwidXNlQWRqdXN0ZWRQb3NpdGlvbiIsImZhY2VEYXRhIiwidXNlQ3VycmVudEZyYW1lIiwiY3VycmVudEZhY2VFdmVudCIsIl9mYWNlRGF0YSRldmVudHMiLCJldmVudHMiLCJudW1QZW9wbGUiLCJmaW5kTGFzdCIsImV2ZW50IiwidXNlQWRqdXN0ZWRQaHJhc2VzIiwic3VidGl0bGVzRGF0YSIsIm1heENoYXJzUGVyTGluZSIsInNlZ21lbnREYXRhIiwiZ2V0TWlzc2luZ1dvcmRQaHJhc2VzSWZFeGlzdCIsInN0YXJ0VGltZSIsImVuZFRpbWUiLCJnYXBXb3JkcyIsImdhcFBocmFzZXMiLCJjdXJyZW50UGhyYXNlIiwic2VnbWVudEluZGV4IiwiZm9yRWFjaCIsIndvcmRJbmRleCIsIndvcmRXaXRoU3BhY2UiLCJuZXdMZW5ndGgiLCJwcm9jZXNzZWRHYXBQaHJhc2VzIiwicGhyYXNlSW5kZXgiLCJlbmRGcmFtZSIsIm5leHRQaHJhc2UiLCJ0aW1lRGlmZiIsIm1hc3RlclBocmFzZXMiLCJmaXJzdFNlZ21lbnRTdGFydCIsImZpcnN0V29yZFN0YXJ0IiwicHJlU2VnbWVudFBocmFzZXMiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJzZWdtZW50Iiwic2VnbWVudFdvcmRzIiwic2VnbWVudElkIiwiY3VycmVudFNlZ21lbnRQaHJhc2VzIiwicHJvY2Vzc2VkUGhyYXNlcyIsIm1pbiIsInByb2Nlc3NlZFBocmFzZSIsIm5leHRTZWdtZW50Iiwic29ydCIsImEiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWVBO0FBQ08sSUFBSSxRQUFRLEdBQUcsV0FBVztBQUNqQyxJQUFJLFFBQVEsR0FBRyxNQUFNLENBQUMsTUFBTSxJQUFJLFNBQVMsUUFBUSxDQUFDLENBQUMsRUFBRTtBQUNyRCxRQUFRLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzdELFlBQVksQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM3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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OyIsInhfZ29vZ2xlX2lnbm9yZUxpc3QiOlswXX0=
|
|
2517
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbIi4uL25vZGVfbW9kdWxlcy90c2xpYi90c2xpYi5lczYuanMiLCIuLi9zcmMvY29tcG9uZW50cy9TdWJ0aXRsZVRleHQuanN4IiwiLi4vc3JjL3V0aWxzL2ZpbmRQaHJhc2VzSW5SYW5nZS50cyIsIi4uL3NyYy9ob29rcy91c2VUZXh0U3R5bGUuanMiLCIuLi9zcmMvaG9va3MvZm9udExvYWRlci5qcyIsIi4uL3NyYy9jb21wb25lbnRzL1N1YnRpdGxlcy50c3giLCIuLi9zcmMvaG9va3MvdXNlU3R5bGVDb25maWcudHMiLCIuLi9zcmMvaG9va3MvdXNlQWRqdXN0ZWRQb3NpdGlvbi5qcyIsIi4uL3NyYy9ob29rcy91c2VBZGp1c3RlZFBocmFzZXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5Db3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi5cclxuXHJcblBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZC9vciBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueVxyXG5wdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQuXHJcblxyXG5USEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiIEFORCBUSEUgQVVUSE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUyBXSVRIXHJcblJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWVxyXG5BTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsXHJcbklORElSRUNULCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTVxyXG5MT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUlxyXG5PVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SXHJcblBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuXHJcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovXHJcbi8qIGdsb2JhbCBSZWZsZWN0LCBQcm9taXNlLCBTdXBwcmVzc2VkRXJyb3IsIFN5bWJvbCwgSXRlcmF0b3IgKi9cclxuXHJcbnZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24oZCwgYikge1xyXG4gICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxyXG4gICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcclxuICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYiwgcCkpIGRbcF0gPSBiW3BdOyB9O1xyXG4gICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19leHRlbmRzKGQsIGIpIHtcclxuICAgIGlmICh0eXBlb2YgYiAhPT0gXCJmdW5jdGlvblwiICYmIGIgIT09IG51bGwpXHJcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIgKyBTdHJpbmcoYikgKyBcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO1xyXG4gICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcclxuICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxyXG4gICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xyXG59XHJcblxyXG5leHBvcnQgdmFyIF9fYXNzaWduID0gZnVuY3Rpb24oKSB7XHJcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gX19hc3NpZ24odCkge1xyXG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xyXG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpIHRbcF0gPSBzW3BdO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdDtcclxuICAgIH1cclxuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19yZXN0KHMsIGUpIHtcclxuICAgIHZhciB0ID0ge307XHJcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcclxuICAgICAgICB0W3BdID0gc1twXTtcclxuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcclxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcclxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xyXG4gICAgICAgIH1cclxuICAgIHJldHVybiB0O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYykge1xyXG4gICAgdmFyIGMgPSBhcmd1bWVudHMubGVuZ3RoLCByID0gYyA8IDMgPyB0YXJnZXQgOiBkZXNjID09PSBudWxsID8gZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpIDogZGVzYywgZDtcclxuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSA9PT0gXCJmdW5jdGlvblwiKSByID0gUmVmbGVjdC5kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYyk7XHJcbiAgICBlbHNlIGZvciAodmFyIGkgPSBkZWNvcmF0b3JzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSBpZiAoZCA9IGRlY29yYXRvcnNbaV0pIHIgPSAoYyA8IDMgPyBkKHIpIDogYyA+IDMgPyBkKHRhcmdldCwga2V5LCByKSA6IGQodGFyZ2V0LCBrZXkpKSB8fCByO1xyXG4gICAgcmV0dXJuIGMgPiAzICYmIHIgJiYgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCByKSwgcjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcGFyYW0ocGFyYW1JbmRleCwgZGVjb3JhdG9yKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldCwga2V5KSB7IGRlY29yYXRvcih0YXJnZXQsIGtleSwgcGFyYW1JbmRleCk7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZXNEZWNvcmF0ZShjdG9yLCBkZXNjcmlwdG9ySW4sIGRlY29yYXRvcnMsIGNvbnRleHRJbiwgaW5pdGlhbGl6ZXJzLCBleHRyYUluaXRpYWxpemVycykge1xyXG4gICAgZnVuY3Rpb24gYWNjZXB0KGYpIHsgaWYgKGYgIT09IHZvaWQgMCAmJiB0eXBlb2YgZiAhPT0gXCJmdW5jdGlvblwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRnVuY3Rpb24gZXhwZWN0ZWRcIik7IHJldHVybiBmOyB9XHJcbiAgICB2YXIga2luZCA9IGNvbnRleHRJbi5raW5kLCBrZXkgPSBraW5kID09PSBcImdldHRlclwiID8gXCJnZXRcIiA6IGtpbmQgPT09IFwic2V0dGVyXCIgPyBcInNldFwiIDogXCJ2YWx1ZVwiO1xyXG4gICAgdmFyIHRhcmdldCA9ICFkZXNjcmlwdG9ySW4gJiYgY3RvciA/IGNvbnRleHRJbltcInN0YXRpY1wiXSA/IGN0b3IgOiBjdG9yLnByb3RvdHlwZSA6IG51bGw7XHJcbiAgICB2YXIgZGVzY3JpcHRvciA9IGRlc2NyaXB0b3JJbiB8fCAodGFyZ2V0ID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGNvbnRleHRJbi5uYW1lKSA6IHt9KTtcclxuICAgIHZhciBfLCBkb25lID0gZmFsc2U7XHJcbiAgICBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xyXG4gICAgICAgIHZhciBjb250ZXh0ID0ge307XHJcbiAgICAgICAgZm9yICh2YXIgcCBpbiBjb250ZXh0SW4pIGNvbnRleHRbcF0gPSBwID09PSBcImFjY2Vzc1wiID8ge30gOiBjb250ZXh0SW5bcF07XHJcbiAgICAgICAgZm9yICh2YXIgcCBpbiBjb250ZXh0SW4uYWNjZXNzKSBjb250ZXh0LmFjY2Vzc1twXSA9IGNvbnRleHRJbi5hY2Nlc3NbcF07XHJcbiAgICAgICAgY29udGV4dC5hZGRJbml0aWFsaXplciA9IGZ1bmN0aW9uIChmKSB7IGlmIChkb25lKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkXCIpOyBleHRyYUluaXRpYWxpemVycy5wdXNoKGFjY2VwdChmIHx8IG51bGwpKTsgfTtcclxuICAgICAgICB2YXIgcmVzdWx0ID0gKDAsIGRlY29yYXRvcnNbaV0pKGtpbmQgPT09IFwiYWNjZXNzb3JcIiA/IHsgZ2V0OiBkZXNjcmlwdG9yLmdldCwgc2V0OiBkZXNjcmlwdG9yLnNldCB9IDogZGVzY3JpcHRvcltrZXldLCBjb250ZXh0KTtcclxuICAgICAgICBpZiAoa2luZCA9PT0gXCJhY2Nlc3NvclwiKSB7XHJcbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IHZvaWQgMCkgY29udGludWU7XHJcbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IG51bGwgfHwgdHlwZW9mIHJlc3VsdCAhPT0gXCJvYmplY3RcIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk9iamVjdCBleHBlY3RlZFwiKTtcclxuICAgICAgICAgICAgaWYgKF8gPSBhY2NlcHQocmVzdWx0LmdldCkpIGRlc2NyaXB0b3IuZ2V0ID0gXztcclxuICAgICAgICAgICAgaWYgKF8gPSBhY2NlcHQocmVzdWx0LnNldCkpIGRlc2NyaXB0b3Iuc2V0ID0gXztcclxuICAgICAgICAgICAgaWYgKF8gPSBhY2NlcHQocmVzdWx0LmluaXQpKSBpbml0aWFsaXplcnMudW5zaGlmdChfKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoXyA9IGFjY2VwdChyZXN1bHQpKSB7XHJcbiAgICAgICAgICAgIGlmIChraW5kID09PSBcImZpZWxkXCIpIGluaXRpYWxpemVycy51bnNoaWZ0KF8pO1xyXG4gICAgICAgICAgICBlbHNlIGRlc2NyaXB0b3Jba2V5XSA9IF87XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRhcmdldCkgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgY29udGV4dEluLm5hbWUsIGRlc2NyaXB0b3IpO1xyXG4gICAgZG9uZSA9IHRydWU7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19ydW5Jbml0aWFsaXplcnModGhpc0FyZywgaW5pdGlhbGl6ZXJzLCB2YWx1ZSkge1xyXG4gICAgdmFyIHVzZVZhbHVlID0gYXJndW1lbnRzLmxlbmd0aCA+IDI7XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGluaXRpYWxpemVycy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHZhbHVlID0gdXNlVmFsdWUgPyBpbml0aWFsaXplcnNbaV0uY2FsbCh0aGlzQXJnLCB2YWx1ZSkgOiBpbml0aWFsaXplcnNbaV0uY2FsbCh0aGlzQXJnKTtcclxuICAgIH1cclxuICAgIHJldHVybiB1c2VWYWx1ZSA/IHZhbHVlIDogdm9pZCAwO1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcHJvcEtleSh4KSB7XHJcbiAgICByZXR1cm4gdHlwZW9mIHggPT09IFwic3ltYm9sXCIgPyB4IDogXCJcIi5jb25jYXQoeCk7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19zZXRGdW5jdGlvbk5hbWUoZiwgbmFtZSwgcHJlZml4KSB7XHJcbiAgICBpZiAodHlwZW9mIG5hbWUgPT09IFwic3ltYm9sXCIpIG5hbWUgPSBuYW1lLmRlc2NyaXB0aW9uID8gXCJbXCIuY29uY2F0KG5hbWUuZGVzY3JpcHRpb24sIFwiXVwiKSA6IFwiXCI7XHJcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGYsIFwibmFtZVwiLCB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSwgdmFsdWU6IHByZWZpeCA/IFwiXCIuY29uY2F0KHByZWZpeCwgXCIgXCIsIG5hbWUpIDogbmFtZSB9KTtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX21ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKSB7XHJcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QubWV0YWRhdGEgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIFJlZmxlY3QubWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xyXG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XHJcbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcclxuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cclxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XHJcbiAgICB9KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZ2VuZXJhdG9yKHRoaXNBcmcsIGJvZHkpIHtcclxuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGcgPSBPYmplY3QuY3JlYXRlKCh0eXBlb2YgSXRlcmF0b3IgPT09IFwiZnVuY3Rpb25cIiA/IEl0ZXJhdG9yIDogT2JqZWN0KS5wcm90b3R5cGUpO1xyXG4gICAgcmV0dXJuIGcubmV4dCA9IHZlcmIoMCksIGdbXCJ0aHJvd1wiXSA9IHZlcmIoMSksIGdbXCJyZXR1cm5cIl0gPSB2ZXJiKDIpLCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cclxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcclxuICAgICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XHJcbiAgICAgICAgd2hpbGUgKGcgJiYgKGcgPSAwLCBvcFswXSAmJiAoXyA9IDApKSwgXykgdHJ5IHtcclxuICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xyXG4gICAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XHJcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcclxuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxyXG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgdmFyIF9fY3JlYXRlQmluZGluZyA9IE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcclxuICAgIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XHJcbiAgICB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobSwgayk7XHJcbiAgICBpZiAoIWRlc2MgfHwgKFwiZ2V0XCIgaW4gZGVzYyA/ICFtLl9fZXNNb2R1bGUgOiBkZXNjLndyaXRhYmxlIHx8IGRlc2MuY29uZmlndXJhYmxlKSkge1xyXG4gICAgICAgIGRlc2MgPSB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24oKSB7IHJldHVybiBtW2tdOyB9IH07XHJcbiAgICB9XHJcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgazIsIGRlc2MpO1xyXG59KSA6IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xyXG4gICAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcclxuICAgIG9bazJdID0gbVtrXTtcclxufSk7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19leHBvcnRTdGFyKG0sIG8pIHtcclxuICAgIGZvciAodmFyIHAgaW4gbSkgaWYgKHAgIT09IFwiZGVmYXVsdFwiICYmICFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobywgcCkpIF9fY3JlYXRlQmluZGluZyhvLCBtLCBwKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fdmFsdWVzKG8pIHtcclxuICAgIHZhciBzID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIFN5bWJvbC5pdGVyYXRvciwgbSA9IHMgJiYgb1tzXSwgaSA9IDA7XHJcbiAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTtcclxuICAgIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gXCJudW1iZXJcIikgcmV0dXJuIHtcclxuICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7XHJcbiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihzID8gXCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiIDogXCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19yZWFkKG8sIG4pIHtcclxuICAgIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXTtcclxuICAgIGlmICghbSkgcmV0dXJuIG87XHJcbiAgICB2YXIgaSA9IG0uY2FsbChvKSwgciwgYXIgPSBbXSwgZTtcclxuICAgIHRyeSB7XHJcbiAgICAgICAgd2hpbGUgKChuID09PSB2b2lkIDAgfHwgbi0tID4gMCkgJiYgIShyID0gaS5uZXh0KCkpLmRvbmUpIGFyLnB1c2goci52YWx1ZSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXJyb3IpIHsgZSA9IHsgZXJyb3I6IGVycm9yIH07IH1cclxuICAgIGZpbmFsbHkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGlmIChyICYmICFyLmRvbmUgJiYgKG0gPSBpW1wicmV0dXJuXCJdKSkgbS5jYWxsKGkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmaW5hbGx5IHsgaWYgKGUpIHRocm93IGUuZXJyb3I7IH1cclxuICAgIH1cclxuICAgIHJldHVybiBhcjtcclxufVxyXG5cclxuLyoqIEBkZXByZWNhdGVkICovXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZCgpIHtcclxuICAgIGZvciAodmFyIGFyID0gW10sIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKVxyXG4gICAgICAgIGFyID0gYXIuY29uY2F0KF9fcmVhZChhcmd1bWVudHNbaV0pKTtcclxuICAgIHJldHVybiBhcjtcclxufVxyXG5cclxuLyoqIEBkZXByZWNhdGVkICovXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZEFycmF5cygpIHtcclxuICAgIGZvciAodmFyIHMgPSAwLCBpID0gMCwgaWwgPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgaWw7IGkrKykgcyArPSBhcmd1bWVudHNbaV0ubGVuZ3RoO1xyXG4gICAgZm9yICh2YXIgciA9IEFycmF5KHMpLCBrID0gMCwgaSA9IDA7IGkgPCBpbDsgaSsrKVxyXG4gICAgICAgIGZvciAodmFyIGEgPSBhcmd1bWVudHNbaV0sIGogPSAwLCBqbCA9IGEubGVuZ3RoOyBqIDwgamw7IGorKywgaysrKVxyXG4gICAgICAgICAgICByW2tdID0gYVtqXTtcclxuICAgIHJldHVybiByO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19zcHJlYWRBcnJheSh0bywgZnJvbSwgcGFjaykge1xyXG4gICAgaWYgKHBhY2sgfHwgYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgZm9yICh2YXIgaSA9IDAsIGwgPSBmcm9tLmxlbmd0aCwgYXI7IGkgPCBsOyBpKyspIHtcclxuICAgICAgICBpZiAoYXIgfHwgIShpIGluIGZyb20pKSB7XHJcbiAgICAgICAgICAgIGlmICghYXIpIGFyID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZnJvbSwgMCwgaSk7XHJcbiAgICAgICAgICAgIGFyW2ldID0gZnJvbVtpXTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdG8uY29uY2F0KGFyIHx8IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20pKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXdhaXQodikge1xyXG4gICAgcmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBfX2F3YWl0ID8gKHRoaXMudiA9IHYsIHRoaXMpIDogbmV3IF9fYXdhaXQodik7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jR2VuZXJhdG9yKHRoaXNBcmcsIF9hcmd1bWVudHMsIGdlbmVyYXRvcikge1xyXG4gICAgaWYgKCFTeW1ib2wuYXN5bmNJdGVyYXRvcikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcclxuICAgIHZhciBnID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pLCBpLCBxID0gW107XHJcbiAgICByZXR1cm4gaSA9IE9iamVjdC5jcmVhdGUoKHR5cGVvZiBBc3luY0l0ZXJhdG9yID09PSBcImZ1bmN0aW9uXCIgPyBBc3luY0l0ZXJhdG9yIDogT2JqZWN0KS5wcm90b3R5cGUpLCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIpLCB2ZXJiKFwicmV0dXJuXCIsIGF3YWl0UmV0dXJuKSwgaVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpO1xyXG4gICAgZnVuY3Rpb24gYXdhaXRSZXR1cm4oZikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh2KS50aGVuKGYsIHJlamVjdCk7IH07IH1cclxuICAgIGZ1bmN0aW9uIHZlcmIobiwgZikgeyBpZiAoZ1tuXSkgeyBpW25dID0gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChhLCBiKSB7IHEucHVzaChbbiwgdiwgYSwgYl0pID4gMSB8fCByZXN1bWUobiwgdik7IH0pOyB9OyBpZiAoZikgaVtuXSA9IGYoaVtuXSk7IH0gfVxyXG4gICAgZnVuY3Rpb24gcmVzdW1lKG4sIHYpIHsgdHJ5IHsgc3RlcChnW25dKHYpKTsgfSBjYXRjaCAoZSkgeyBzZXR0bGUocVswXVszXSwgZSk7IH0gfVxyXG4gICAgZnVuY3Rpb24gc3RlcChyKSB7IHIudmFsdWUgaW5zdGFuY2VvZiBfX2F3YWl0ID8gUHJvbWlzZS5yZXNvbHZlKHIudmFsdWUudikudGhlbihmdWxmaWxsLCByZWplY3QpIDogc2V0dGxlKHFbMF1bMl0sIHIpOyB9XHJcbiAgICBmdW5jdGlvbiBmdWxmaWxsKHZhbHVlKSB7IHJlc3VtZShcIm5leHRcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiByZWplY3QodmFsdWUpIHsgcmVzdW1lKFwidGhyb3dcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiBzZXR0bGUoZiwgdikgeyBpZiAoZih2KSwgcS5zaGlmdCgpLCBxLmxlbmd0aCkgcmVzdW1lKHFbMF1bMF0sIHFbMF1bMV0pOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jRGVsZWdhdG9yKG8pIHtcclxuICAgIHZhciBpLCBwO1xyXG4gICAgcmV0dXJuIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiLCBmdW5jdGlvbiAoZSkgeyB0aHJvdyBlOyB9KSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobiwgZikgeyBpW25dID0gb1tuXSA/IGZ1bmN0aW9uICh2KSB7IHJldHVybiAocCA9ICFwKSA/IHsgdmFsdWU6IF9fYXdhaXQob1tuXSh2KSksIGRvbmU6IGZhbHNlIH0gOiBmID8gZih2KSA6IHY7IH0gOiBmOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jVmFsdWVzKG8pIHtcclxuICAgIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbiAgICB2YXIgbSA9IG9bU3ltYm9sLmFzeW5jSXRlcmF0b3JdLCBpO1xyXG4gICAgcmV0dXJuIG0gPyBtLmNhbGwobykgOiAobyA9IHR5cGVvZiBfX3ZhbHVlcyA9PT0gXCJmdW5jdGlvblwiID8gX192YWx1ZXMobykgOiBvW1N5bWJvbC5pdGVyYXRvcl0oKSwgaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIpLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGkpO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IGlbbl0gPSBvW25dICYmIGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7IHYgPSBvW25dKHYpLCBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCB2LmRvbmUsIHYudmFsdWUpOyB9KTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgZCwgdikgeyBQcm9taXNlLnJlc29sdmUodikudGhlbihmdW5jdGlvbih2KSB7IHJlc29sdmUoeyB2YWx1ZTogdiwgZG9uZTogZCB9KTsgfSwgcmVqZWN0KTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19tYWtlVGVtcGxhdGVPYmplY3QoY29va2VkLCByYXcpIHtcclxuICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvb2tlZCwgXCJyYXdcIiwgeyB2YWx1ZTogcmF3IH0pOyB9IGVsc2UgeyBjb29rZWQucmF3ID0gcmF3OyB9XHJcbiAgICByZXR1cm4gY29va2VkO1xyXG59O1xyXG5cclxudmFyIF9fc2V0TW9kdWxlRGVmYXVsdCA9IE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgdikge1xyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIFwiZGVmYXVsdFwiLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2IH0pO1xyXG59KSA6IGZ1bmN0aW9uKG8sIHYpIHtcclxuICAgIG9bXCJkZWZhdWx0XCJdID0gdjtcclxufTtcclxuXHJcbnZhciBvd25LZXlzID0gZnVuY3Rpb24obykge1xyXG4gICAgb3duS2V5cyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzIHx8IGZ1bmN0aW9uIChvKSB7XHJcbiAgICAgICAgdmFyIGFyID0gW107XHJcbiAgICAgICAgZm9yICh2YXIgayBpbiBvKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG8sIGspKSBhclthci5sZW5ndGhdID0gaztcclxuICAgICAgICByZXR1cm4gYXI7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIG93bktleXMobyk7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19pbXBvcnRTdGFyKG1vZCkge1xyXG4gICAgaWYgKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgcmV0dXJuIG1vZDtcclxuICAgIHZhciByZXN1bHQgPSB7fTtcclxuICAgIGlmIChtb2QgIT0gbnVsbCkgZm9yICh2YXIgayA9IG93bktleXMobW9kKSwgaSA9IDA7IGkgPCBrLmxlbmd0aDsgaSsrKSBpZiAoa1tpXSAhPT0gXCJkZWZhdWx0XCIpIF9fY3JlYXRlQmluZGluZyhyZXN1bHQsIG1vZCwga1tpXSk7XHJcbiAgICBfX3NldE1vZHVsZURlZmF1bHQocmVzdWx0LCBtb2QpO1xyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9faW1wb3J0RGVmYXVsdChtb2QpIHtcclxuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgZGVmYXVsdDogbW9kIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHJlY2VpdmVyLCBzdGF0ZSwga2luZCwgZikge1xyXG4gICAgaWYgKGtpbmQgPT09IFwiYVwiICYmICFmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBhY2Nlc3NvciB3YXMgZGVmaW5lZCB3aXRob3V0IGEgZ2V0dGVyXCIpO1xyXG4gICAgaWYgKHR5cGVvZiBzdGF0ZSA9PT0gXCJmdW5jdGlvblwiID8gcmVjZWl2ZXIgIT09IHN0YXRlIHx8ICFmIDogIXN0YXRlLmhhcyhyZWNlaXZlcikpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgcmVhZCBwcml2YXRlIG1lbWJlciBmcm9tIGFuIG9iamVjdCB3aG9zZSBjbGFzcyBkaWQgbm90IGRlY2xhcmUgaXRcIik7XHJcbiAgICByZXR1cm4ga2luZCA9PT0gXCJtXCIgPyBmIDoga2luZCA9PT0gXCJhXCIgPyBmLmNhbGwocmVjZWl2ZXIpIDogZiA/IGYudmFsdWUgOiBzdGF0ZS5nZXQocmVjZWl2ZXIpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZFNldChyZWNlaXZlciwgc3RhdGUsIHZhbHVlLCBraW5kLCBmKSB7XHJcbiAgICBpZiAoa2luZCA9PT0gXCJtXCIpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJQcml2YXRlIG1ldGhvZCBpcyBub3Qgd3JpdGFibGVcIik7XHJcbiAgICBpZiAoa2luZCA9PT0gXCJhXCIgJiYgIWYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJQcml2YXRlIGFjY2Vzc29yIHdhcyBkZWZpbmVkIHdpdGhvdXQgYSBzZXR0ZXJcIik7XHJcbiAgICBpZiAodHlwZW9mIHN0YXRlID09PSBcImZ1bmN0aW9uXCIgPyByZWNlaXZlciAhPT0gc3RhdGUgfHwgIWYgOiAhc3RhdGUuaGFzKHJlY2VpdmVyKSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCB3cml0ZSBwcml2YXRlIG1lbWJlciB0byBhbiBvYmplY3Qgd2hvc2UgY2xhc3MgZGlkIG5vdCBkZWNsYXJlIGl0XCIpO1xyXG4gICAgcmV0dXJuIChraW5kID09PSBcImFcIiA/IGYuY2FsbChyZWNlaXZlciwgdmFsdWUpIDogZiA/IGYudmFsdWUgPSB2YWx1ZSA6IHN0YXRlLnNldChyZWNlaXZlciwgdmFsdWUpKSwgdmFsdWU7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2NsYXNzUHJpdmF0ZUZpZWxkSW4oc3RhdGUsIHJlY2VpdmVyKSB7XHJcbiAgICBpZiAocmVjZWl2ZXIgPT09IG51bGwgfHwgKHR5cGVvZiByZWNlaXZlciAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgcmVjZWl2ZXIgIT09IFwiZnVuY3Rpb25cIikpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgdXNlICdpbicgb3BlcmF0b3Igb24gbm9uLW9iamVjdFwiKTtcclxuICAgIHJldHVybiB0eXBlb2Ygc3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IHJlY2VpdmVyID09PSBzdGF0ZSA6IHN0YXRlLmhhcyhyZWNlaXZlcik7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FkZERpc3Bvc2FibGVSZXNvdXJjZShlbnYsIHZhbHVlLCBhc3luYykge1xyXG4gICAgaWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB2b2lkIDApIHtcclxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiB2YWx1ZSAhPT0gXCJmdW5jdGlvblwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiT2JqZWN0IGV4cGVjdGVkLlwiKTtcclxuICAgICAgICB2YXIgZGlzcG9zZSwgaW5uZXI7XHJcbiAgICAgICAgaWYgKGFzeW5jKSB7XHJcbiAgICAgICAgICAgIGlmICghU3ltYm9sLmFzeW5jRGlzcG9zZSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0Rpc3Bvc2UgaXMgbm90IGRlZmluZWQuXCIpO1xyXG4gICAgICAgICAgICBkaXNwb3NlID0gdmFsdWVbU3ltYm9sLmFzeW5jRGlzcG9zZV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChkaXNwb3NlID09PSB2b2lkIDApIHtcclxuICAgICAgICAgICAgaWYgKCFTeW1ib2wuZGlzcG9zZSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5kaXNwb3NlIGlzIG5vdCBkZWZpbmVkLlwiKTtcclxuICAgICAgICAgICAgZGlzcG9zZSA9IHZhbHVlW1N5bWJvbC5kaXNwb3NlXTtcclxuICAgICAgICAgICAgaWYgKGFzeW5jKSBpbm5lciA9IGRpc3Bvc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0eXBlb2YgZGlzcG9zZSAhPT0gXCJmdW5jdGlvblwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiT2JqZWN0IG5vdCBkaXNwb3NhYmxlLlwiKTtcclxuICAgICAgICBpZiAoaW5uZXIpIGRpc3Bvc2UgPSBmdW5jdGlvbigpIHsgdHJ5IHsgaW5uZXIuY2FsbCh0aGlzKTsgfSBjYXRjaCAoZSkgeyByZXR1cm4gUHJvbWlzZS5yZWplY3QoZSk7IH0gfTtcclxuICAgICAgICBlbnYuc3RhY2sucHVzaCh7IHZhbHVlOiB2YWx1ZSwgZGlzcG9zZTogZGlzcG9zZSwgYXN5bmM6IGFzeW5jIH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoYXN5bmMpIHtcclxuICAgICAgICBlbnYuc3RhY2sucHVzaCh7IGFzeW5jOiB0cnVlIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZhbHVlO1xyXG5cclxufVxyXG5cclxudmFyIF9TdXBwcmVzc2VkRXJyb3IgPSB0eXBlb2YgU3VwcHJlc3NlZEVycm9yID09PSBcImZ1bmN0aW9uXCIgPyBTdXBwcmVzc2VkRXJyb3IgOiBmdW5jdGlvbiAoZXJyb3IsIHN1cHByZXNzZWQsIG1lc3NhZ2UpIHtcclxuICAgIHZhciBlID0gbmV3IEVycm9yKG1lc3NhZ2UpO1xyXG4gICAgcmV0dXJuIGUubmFtZSA9IFwiU3VwcHJlc3NlZEVycm9yXCIsIGUuZXJyb3IgPSBlcnJvciwgZS5zdXBwcmVzc2VkID0gc3VwcHJlc3NlZCwgZTtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2Rpc3Bvc2VSZXNvdXJjZXMoZW52KSB7XHJcbiAgICBmdW5jdGlvbiBmYWlsKGUpIHtcclxuICAgICAgICBlbnYuZXJyb3IgPSBlbnYuaGFzRXJyb3IgPyBuZXcgX1N1cHByZXNzZWRFcnJvcihlLCBlbnYuZXJyb3IsIFwiQW4gZXJyb3Igd2FzIHN1cHByZXNzZWQgZHVyaW5nIGRpc3Bvc2FsLlwiKSA6IGU7XHJcbiAgICAgICAgZW52Lmhhc0Vycm9yID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIHZhciByLCBzID0gMDtcclxuICAgIGZ1bmN0aW9uIG5leHQoKSB7XHJcbiAgICAgICAgd2hpbGUgKHIgPSBlbnYuc3RhY2sucG9wKCkpIHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIGlmICghci5hc3luYyAmJiBzID09PSAxKSByZXR1cm4gcyA9IDAsIGVudi5zdGFjay5wdXNoKHIpLCBQcm9taXNlLnJlc29sdmUoKS50aGVuKG5leHQpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHIuZGlzcG9zZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSByLmRpc3Bvc2UuY2FsbChyLnZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoci5hc3luYykgcmV0dXJuIHMgfD0gMiwgUHJvbWlzZS5yZXNvbHZlKHJlc3VsdCkudGhlbihuZXh0LCBmdW5jdGlvbihlKSB7IGZhaWwoZSk7IHJldHVybiBuZXh0KCk7IH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBzIHw9IDE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgIGZhaWwoZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHMgPT09IDEpIHJldHVybiBlbnYuaGFzRXJyb3IgPyBQcm9taXNlLnJlamVjdChlbnYuZXJyb3IpIDogUHJvbWlzZS5yZXNvbHZlKCk7XHJcbiAgICAgICAgaWYgKGVudi5oYXNFcnJvcikgdGhyb3cgZW52LmVycm9yO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5leHQoKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcmV3cml0ZVJlbGF0aXZlSW1wb3J0RXh0ZW5zaW9uKHBhdGgsIHByZXNlcnZlSnN4KSB7XHJcbiAgICBpZiAodHlwZW9mIHBhdGggPT09IFwic3RyaW5nXCIgJiYgL15cXC5cXC4/XFwvLy50ZXN0KHBhdGgpKSB7XHJcbiAgICAgICAgcmV0dXJuIHBhdGgucmVwbGFjZSgvXFwuKHRzeCkkfCgoPzpcXC5kKT8pKCg/OlxcLlteLi9dKz8pPylcXC4oW2NtXT8pdHMkL2ksIGZ1bmN0aW9uIChtLCB0c3gsIGQsIGV4dCwgY20pIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRzeCA/IHByZXNlcnZlSnN4ID8gXCIuanN4XCIgOiBcIi5qc1wiIDogZCAmJiAoIWV4dCB8fCAhY20pID8gbSA6IChkICsgZXh0ICsgXCIuXCIgKyBjbS50b0xvd2VyQ2FzZSgpICsgXCJqc1wiKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiBwYXRoO1xyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCB7XHJcbiAgICBfX2V4dGVuZHM6IF9fZXh0ZW5kcyxcclxuICAgIF9fYXNzaWduOiBfX2Fzc2lnbixcclxuICAgIF9fcmVzdDogX19yZXN0LFxyXG4gICAgX19kZWNvcmF0ZTogX19kZWNvcmF0ZSxcclxuICAgIF9fcGFyYW06IF9fcGFyYW0sXHJcbiAgICBfX2VzRGVjb3JhdGU6IF9fZXNEZWNvcmF0ZSxcclxuICAgIF9fcnVuSW5pdGlhbGl6ZXJzOiBfX3J1bkluaXRpYWxpemVycyxcclxuICAgIF9fcHJvcEtleTogX19wcm9wS2V5LFxyXG4gICAgX19zZXRGdW5jdGlvbk5hbWU6IF9fc2V0RnVuY3Rpb25OYW1lLFxyXG4gICAgX19tZXRhZGF0YTogX19tZXRhZGF0YSxcclxuICAgIF9fYXdhaXRlcjogX19hd2FpdGVyLFxyXG4gICAgX19nZW5lcmF0b3I6IF9fZ2VuZXJhdG9yLFxyXG4gICAgX19jcmVhdGVCaW5kaW5nOiBfX2NyZWF0ZUJpbmRpbmcsXHJcbiAgICBfX2V4cG9ydFN0YXI6IF9fZXhwb3J0U3RhcixcclxuICAgIF9fdmFsdWVzOiBfX3ZhbHVlcyxcclxuICAgIF9fcmVhZDogX19yZWFkLFxyXG4gICAgX19zcHJlYWQ6IF9fc3ByZWFkLFxyXG4gICAgX19zcHJlYWRBcnJheXM6IF9fc3ByZWFkQXJyYXlzLFxyXG4gICAgX19zcHJlYWRBcnJheTogX19zcHJlYWRBcnJheSxcclxuICAgIF9fYXdhaXQ6IF9fYXdhaXQsXHJcbiAgICBfX2FzeW5jR2VuZXJhdG9yOiBfX2FzeW5jR2VuZXJhdG9yLFxyXG4gICAgX19hc3luY0RlbGVnYXRvcjogX19hc3luY0RlbGVnYXRvcixcclxuICAgIF9fYXN5bmNWYWx1ZXM6IF9fYXN5bmNWYWx1ZXMsXHJcbiAgICBfX21ha2VUZW1wbGF0ZU9iamVjdDogX19tYWtlVGVtcGxhdGVPYmplY3QsXHJcbiAgICBfX2ltcG9ydFN0YXI6IF9faW1wb3J0U3RhcixcclxuICAgIF9faW1wb3J0RGVmYXVsdDogX19pbXBvcnREZWZhdWx0LFxyXG4gICAgX19jbGFzc1ByaXZhdGVGaWVsZEdldDogX19jbGFzc1ByaXZhdGVGaWVsZEdldCxcclxuICAgIF9fY2xhc3NQcml2YXRlRmllbGRTZXQ6IF9fY2xhc3NQcml2YXRlRmllbGRTZXQsXHJcbiAgICBfX2NsYXNzUHJpdmF0ZUZpZWxkSW46IF9fY2xhc3NQcml2YXRlRmllbGRJbixcclxuICAgIF9fYWRkRGlzcG9zYWJsZVJlc291cmNlOiBfX2FkZERpc3Bvc2FibGVSZXNvdXJjZSxcclxuICAgIF9fZGlzcG9zZVJlc291cmNlczogX19kaXNwb3NlUmVzb3VyY2VzLFxyXG4gICAgX19yZXdyaXRlUmVsYXRpdmVJbXBvcnRFeHRlbnNpb246IF9fcmV3cml0ZVJlbGF0aXZlSW1wb3J0RXh0ZW5zaW9uLFxyXG59O1xyXG4iLCJpbXBvcnQgUmVhY3QseyBtZW1vLCB1c2VNZW1vLCB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHNwcmluZywgcmFuZG9tLCB1c2VDdXJyZW50RnJhbWUgfSBmcm9tIFwicmVtb3Rpb25cIjtcblxuLy8gSGVscGVyIGZ1bmN0aW9uIHRvIGVzdGltYXRlIHRleHQgd2lkdGhcbmNvbnN0IGVzdGltYXRlVGV4dFdpZHRoID0gKHRleHQsIGZvbnRTaXplLCBmb250RmFtaWx5KSA9PiB7XG4gIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XG4gIGNvbnRleHQuZm9udCA9IGAke2ZvbnRTaXplfXB4ICR7Zm9udEZhbWlseX1gO1xuICByZXR1cm4gY29udGV4dC5tZWFzdXJlVGV4dCh0ZXh0KS53aWR0aDtcbn07XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byBnZW5lcmF0ZSBvdXRsaW5lIHNoYWRvd1xuY29uc3QgZ2VuZXJhdGVPdXRsaW5lU2hhZG93ID0gKCgpID0+IHtcbiAgY29uc3QgY2FjaGUgPSBuZXcgTWFwKCk7XG4gIFxuICByZXR1cm4gKGNvbG9yLCB3aWR0aCwgb3V0bGluZVN0eWxlID0gXCJyb3VuZFwiKSA9PiB7XG4gICAgY29uc3Qga2V5ID0gYCR7Y29sb3J9LSR7d2lkdGh9LSR7b3V0bGluZVN0eWxlfWA7XG4gICAgaWYgKGNhY2hlLmhhcyhrZXkpKSB7XG4gICAgICByZXR1cm4gY2FjaGUuZ2V0KGtleSk7XG4gICAgfVxuICAgIFxuICAgIGNvbnN0IHNoYWRvd3MgPSBbXTtcbiAgICBjb25zdCBwYXJzZWRXaWR0aCA9IHBhcnNlSW50KHdpZHRoLCAxMCk7XG4gICAgXG4gICAgaWYgKG91dGxpbmVTdHlsZSA9PT0gXCJhbmd1bGFyXCIpIHtcbiAgICAgIC8vIENyZWF0ZSBzaGFycCBjb3JuZXJzIGJ5IHVzaW5nIHBlcnBlbmRpY3VsYXIgbGluZXNcbiAgICAgIC8vIFRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdFxuICAgICAgc2hhZG93cy5wdXNoKGAwIC0ke3BhcnNlZFdpZHRofXB4IDAgJHtjb2xvcn1gKTsgIC8vIFRvcFxuICAgICAgc2hhZG93cy5wdXNoKGAke3BhcnNlZFdpZHRofXB4IDAgMCAke2NvbG9yfWApOyAgIC8vIFJpZ2h0XG4gICAgICBzaGFkb3dzLnB1c2goYDAgJHtwYXJzZWRXaWR0aH1weCAwICR7Y29sb3J9YCk7ICAgLy8gQm90dG9tXG4gICAgICBzaGFkb3dzLnB1c2goYC0ke3BhcnNlZFdpZHRofXB4IDAgMCAke2NvbG9yfWApOyAgLy8gTGVmdFxuICAgICAgXG4gICAgICAvLyBBZGQgZGlhZ29uYWwgcG9pbnRzIGZvciBjb3JuZXJzXG4gICAgICBzaGFkb3dzLnB1c2goYCR7cGFyc2VkV2lkdGh9cHggLSR7cGFyc2VkV2lkdGh9cHggMCAke2NvbG9yfWApOyAgLy8gVG9wLXJpZ2h0XG4gICAgICBzaGFkb3dzLnB1c2goYCR7cGFyc2VkV2lkdGh9cHggJHtwYXJzZWRXaWR0aH1weCAwICR7Y29sb3J9YCk7ICAgLy8gQm90dG9tLXJpZ2h0XG4gICAgICBzaGFkb3dzLnB1c2goYC0ke3BhcnNlZFdpZHRofXB4ICR7cGFyc2VkV2lkdGh9cHggMCAke2NvbG9yfWApOyAgLy8gQm90dG9tLWxlZnRcbiAgICAgIHNoYWRvd3MucHVzaChgLSR7cGFyc2VkV2lkdGh9cHggLSR7cGFyc2VkV2lkdGh9cHggMCAke2NvbG9yfWApOyAvLyBUb3AtbGVmdFxuICAgICAgXG4gICAgICAvLyBBZGQgaW50ZXJtZWRpYXRlIHBvaW50cyBmb3IgYmV0dGVyIGNvdmVyYWdlXG4gICAgICBjb25zdCBoYWxmV2lkdGggPSBNYXRoLnJvdW5kKHBhcnNlZFdpZHRoICogMC43MDcxKTsgLy8gY29zKDQ1wrApIOKJiCAwLjcwNzFcbiAgICAgIHNoYWRvd3MucHVzaChgJHtoYWxmV2lkdGh9cHggLSR7cGFyc2VkV2lkdGh9cHggMCAke2NvbG9yfWApOyAgICAvLyBUb3AtcmlnaHQgaW50ZXJtZWRpYXRlXG4gICAgICBzaGFkb3dzLnB1c2goYCR7cGFyc2VkV2lkdGh9cHggLSR7aGFsZldpZHRofXB4IDAgJHtjb2xvcn1gKTsgICAgLy8gUmlnaHQtdG9wIGludGVybWVkaWF0ZVxuICAgICAgc2hhZG93cy5wdXNoKGAke3BhcnNlZFdpZHRofXB4ICR7aGFsZldpZHRofXB4IDAgJHtjb2xvcn1gKTsgICAgIC8vIFJpZ2h0LWJvdHRvbSBpbnRlcm1lZGlhdGVcbiAgICAgIHNoYWRvd3MucHVzaChgJHtoYWxmV2lkdGh9cHggJHtwYXJzZWRXaWR0aH1weCAwICR7Y29sb3J9YCk7ICAgICAvLyBCb3R0b20tcmlnaHQgaW50ZXJtZWRpYXRlXG4gICAgICBzaGFkb3dzLnB1c2goYC0ke2hhbGZXaWR0aH1weCAke3BhcnNlZFdpZHRofXB4IDAgJHtjb2xvcn1gKTsgICAgLy8gQm90dG9tLWxlZnQgaW50ZXJtZWRpYXRlXG4gICAgICBzaGFkb3dzLnB1c2goYC0ke3BhcnNlZFdpZHRofXB4ICR7aGFsZldpZHRofXB4IDAgJHtjb2xvcn1gKTsgICAgLy8gTGVmdC1ib3R0b20gaW50ZXJtZWRpYXRlXG4gICAgICBzaGFkb3dzLnB1c2goYC0ke3BhcnNlZFdpZHRofXB4IC0ke2hhbGZXaWR0aH1weCAwICR7Y29sb3J9YCk7ICAgLy8gTGVmdC10b3AgaW50ZXJtZWRpYXRlXG4gICAgICBzaGFkb3dzLnB1c2goYC0ke2hhbGZXaWR0aH1weCAtJHtwYXJzZWRXaWR0aH1weCAwICR7Y29sb3J9YCk7ICAgLy8gVG9wLWxlZnQgaW50ZXJtZWRpYXRlXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIE9yaWdpbmFsIHJvdW5kIHN0eWxlXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDM2MDsgaSArPSAyMi41KSB7XG4gICAgICAgIGNvbnN0IGFuZ2xlID0gKGkgKiBNYXRoLlBJKSAvIDE4MDtcbiAgICAgICAgY29uc3QgeCA9IE1hdGgucm91bmQoTWF0aC5jb3MoYW5nbGUpICogcGFyc2VkV2lkdGgpO1xuICAgICAgICBjb25zdCB5ID0gTWF0aC5yb3VuZChNYXRoLnNpbihhbmdsZSkgKiBwYXJzZWRXaWR0aCk7XG4gICAgICAgIHNoYWRvd3MucHVzaChgJHt4fXB4ICR7eX1weCAwICR7Y29sb3J9YCk7XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIGNvbnN0IHJlc3VsdCA9IHNoYWRvd3Muam9pbignLCcpO1xuICAgIGNhY2hlLnNldChrZXksIHJlc3VsdCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcbn0pKCk7XG5cblxuZXhwb3J0IGNvbnN0IFN1YnRpdGxlVGV4dCA9IG1lbW8oKHsgXG4gIHRleHQsIFxuICBzdHlsZSwgXG4gIGFuaW1hdGlvblN0eWxlLCBcbiAgZnJhbWUsXG4gIHN0YXJ0RnJhbWUsIFxuICByYW5kb21Db2xvcnMsIFxuICB3b3JkcywgXG4gIGZwcyxcbiAgaGlnaGxpZ2h0V29yZHNDb2xvcixcbn0pID0+IHtcbiAgY29uc3QgcmVsYXRpdmVGcmFtZSA9IGZyYW1lIC0gc3RhcnRGcmFtZTtcbiAgXG4gIGNvbnN0IHNjYWxlID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKGFuaW1hdGlvblN0eWxlID09PSBcInBsZWFzdXJlLXBvZC1hbmltYXRpb25cIikge1xuICAgICAgcmV0dXJuIHNwcmluZyh7XG4gICAgICAgIGZyYW1lOiByZWxhdGl2ZUZyYW1lLFxuICAgICAgICBmcm9tOiAwLjk1LFxuICAgICAgICB0bzogMS4wLCAgXG4gICAgICAgIGZwczogMzAsXG4gICAgICAgIGNvbmZpZzoge1xuICAgICAgICAgIGRhbXBpbmc6IDIwLFxuICAgICAgICAgIHN0aWZmbmVzczogNDAwLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGFuaW1hdGlvblN0eWxlID09PSBcInNwcmluZ1wiKSB7XG4gICAgICBjb25zdCBzcHJpbmdWYWx1ZSA9IHNwcmluZyh7XG4gICAgICAgIGZyYW1lOiByZWxhdGl2ZUZyYW1lLFxuICAgICAgICBmcm9tOiAwLjksXG4gICAgICAgIHRvOiAxLFxuICAgICAgICBmcHMsXG4gICAgICAgIGNvbmZpZzoge1xuICAgICAgICAgIG1hc3M6IDAuNSxcbiAgICAgICAgICBzdGlmZm5lc3M6IDE1MCxcbiAgICAgICAgICBkYW1waW5nOiAxNSxcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gc3ByaW5nVmFsdWU7XG4gICAgfVxuICAgIFxuICAgIHJldHVybiAxO1xuICB9LCBbYW5pbWF0aW9uU3R5bGUsIHJlbGF0aXZlRnJhbWUsIGZwc10pO1xuXG4gIGNvbnN0IHRyYW5zbGF0ZVkgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoYW5pbWF0aW9uU3R5bGUgPT09IFwic3ByaW5nXCIpIHtcbiAgICAgIGNvbnN0IHRyYW5zbGF0ZVZhbHVlID0gc3ByaW5nKHtcbiAgICAgICAgZnJhbWU6IHJlbGF0aXZlRnJhbWUsXG4gICAgICAgIGZyb206IDEwLFxuICAgICAgICB0bzogMCxcbiAgICAgICAgZnBzLFxuICAgICAgICBjb25maWc6IHtcbiAgICAgICAgICBtYXNzOiAwLjUsXG4gICAgICAgICAgc3RpZmZuZXNzOiAxNTAsXG4gICAgICAgICAgZGFtcGluZzogMTUsXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHRyYW5zbGF0ZVZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gMDtcbiAgfSwgW2FuaW1hdGlvblN0eWxlLCByZWxhdGl2ZUZyYW1lLCBmcHNdKTtcblxuXG4gIC8vIENhbGN1bGF0ZSBhZGp1c3RlZCBmb250IHNpemUgYmFzZWQgb24gdGV4dCB3aWR0aFxuICBjb25zdCBhZGp1c3RlZEZvbnRTaXplID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgbWF4TGluZVdpZHRoID0gc3R5bGUubWF4TGluZVdpZHRoIHx8IDEwODA7IC8vIERlZmF1bHQgbWF4IHdpZHRoXG4gICAgY29uc3QgYmFzZUZvbnRTaXplID0gc3R5bGUuZm9udFNpemV8fCA2NDsgLy8gRGVmYXVsdCBmb250IHNpemVcbiAgICBjb25zdCBmb250RmFtaWx5ID0gc3R5bGUuZm9udEZhbWlseSB8fCAnQXJpYWwnO1xuICAgIFxuICAgIGNvbnN0IHRleHRXaWR0aCA9IGVzdGltYXRlVGV4dFdpZHRoKHRleHQsIGJhc2VGb250U2l6ZSwgZm9udEZhbWlseSk7XG4gICAgaWYgKHRleHRXaWR0aCA+IG1heExpbmVXaWR0aCkge1xuICAgICAgY29uc3Qgc2NhbGVGYWN0b3IgPSBtYXhMaW5lV2lkdGggLyB0ZXh0V2lkdGg7XG4gICAgICByZXR1cm4gTWF0aC5mbG9vcihiYXNlRm9udFNpemUgKiBzY2FsZUZhY3Rvcik7XG4gICAgfVxuICAgIHJldHVybiBiYXNlRm9udFNpemU7XG4gIH0sIFt0ZXh0LCBzdHlsZS5tYXhMaW5lV2lkdGgsIHN0eWxlLmZvbnRTaXplLCBzdHlsZS5mb250RmFtaWx5XSk7XG5cbiAgLy8gQ2FsY3VsYXRlIGFkanVzdGVkIGZvbnQgc2l6ZSBiYXNlZCBvbiB0ZXh0IHdpZHRoXG4gIGNvbnN0IGFuaW1hdGVkU3R5bGUgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCBiYXNlUGFkZGluZyA9IHN0eWxlLmJhY2tncm91bmRQYWRkaW5nIHx8ICcxNSc7XG4gICAgXG4gICAgLy8gQ3JlYXRlIHRleHQgc2hhZG93IGJhc2VkIG9uIGludGVuc2l0eVxuICAgIGNvbnN0IHNoYWRvd0ludGVuc2l0eSA9IHN0eWxlLnNoYWRvd0ludGVuc2l0eSB8fCAxO1xuICAgIGNvbnN0IHNoYWRvd0NvbG9yID0gc3R5bGUuc2hhZG93Q29sb3IgfHwgJyMwMDAwMDAnO1xuICAgIGNvbnN0IHNoYWRvd0JsdXIgPSBzdHlsZS5zaGFkb3dCbHVyIHx8ICcyJztcbiAgICBjb25zdCBzaGFkb3dPZmZzZXRYID0gc3R5bGUuc2hhZG93T2Zmc2V0WCB8fCAnMCc7XG4gICAgY29uc3Qgc2hhZG93T2Zmc2V0WSA9IHN0eWxlLnNoYWRvd09mZnNldFkgfHwgJzAnO1xuICAgIFxuICAgIC8vIFN0YWNrIG11bHRpcGxlIHNoYWRvd3MgYmFzZWQgb24gaW50ZW5zaXR5XG4gICAgY29uc3Qgc2hhZG93cyA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2hhZG93SW50ZW5zaXR5OyBpKyspIHtcbiAgICAgIHNoYWRvd3MucHVzaChgJHtzaGFkb3dPZmZzZXRYfXB4ICR7c2hhZG93T2Zmc2V0WX1weCAke3NoYWRvd0JsdXJ9cHggJHtzaGFkb3dDb2xvcn1gKTtcbiAgICB9XG4gICAgY29uc3QgdGV4dFNoYWRvdyA9IHNoYWRvd3Muam9pbignLCAnKTtcblxuICAgIC8vIENvbnZlcnQgaGV4IHRvIHJnYmEgZm9yIGJhY2tncm91bmQgY29sb3JcbiAgICBjb25zdCBoZXhUb1JnYmEgPSAoaGV4LCBvcGFjaXR5KSA9PiB7XG4gICAgICBjb25zdCBzaG9ydGhhbmRSZWdleCA9IC9eIz8oW2EtZlxcZF0pKFthLWZcXGRdKShbYS1mXFxkXSkkL2k7XG4gICAgICBoZXggPSBoZXgucmVwbGFjZShzaG9ydGhhbmRSZWdleCwgKG0sIHIsIGcsIGIpID0+IHIgKyByICsgZyArIGcgKyBiICsgYik7XG4gICAgICBjb25zdCByZXN1bHQgPSAvXiM/KFthLWZcXGRdezJ9KShbYS1mXFxkXXsyfSkoW2EtZlxcZF17Mn0pJC9pLmV4ZWMoaGV4KTtcbiAgICAgIGlmICghcmVzdWx0KSByZXR1cm4gaGV4O1xuICAgICAgY29uc3QgciA9IHBhcnNlSW50KHJlc3VsdFsxXSwgMTYpO1xuICAgICAgY29uc3QgZyA9IHBhcnNlSW50KHJlc3VsdFsyXSwgMTYpO1xuICAgICAgY29uc3QgYiA9IHBhcnNlSW50KHJlc3VsdFszXSwgMTYpO1xuICAgICAgcmV0dXJuIGByZ2JhKCR7cn0sICR7Z30sICR7Yn0sICR7b3BhY2l0eX0pYDtcbiAgICB9O1xuXG4gICAgY29uc3QgYmFja2dyb3VuZENvbG9yID0gc3R5bGUuYmFja2dyb3VuZENvbG9yIHx8ICcjMDAwMDAwJztcbiAgICBjb25zdCBvcGFjaXR5ID0gdHlwZW9mIHN0eWxlLmJhY2tncm91bmRPcGFjaXR5ID09PSAnc3RyaW5nJyBcbiAgICAgID8gcGFyc2VGbG9hdChzdHlsZS5iYWNrZ3JvdW5kT3BhY2l0eS50cmltKCkpXG4gICAgICA6IHBhcnNlRmxvYXQoc3R5bGUuYmFja2dyb3VuZE9wYWNpdHkpIHx8IDA7XG4gICAgICBcbiAgICBjb25zdCBiYWNrZ3JvdW5kID0gaGV4VG9SZ2JhKGJhY2tncm91bmRDb2xvciwgb3BhY2l0eSk7XG4gICAgY29uc3QgaGFzQmFja2dyb3VuZCA9IG9wYWNpdHkgPiAwO1xuICAgIGNvbnN0IGhhc1NoYWRvdyA9IHNoYWRvd0ludGVuc2l0eSA+IDAgJiYgKHNoYWRvd0JsdXIgIT09ICcwJyB8fCBzaGFkb3dPZmZzZXRYICE9PSAnMCcgfHwgc2hhZG93T2Zmc2V0WSAhPT0gJzAnKTtcblxuICAgIC8vIEhhbmRsZSBib3JkZXIgcmFkaXVzIHByb3Blcmx5XG4gICAgY29uc3QgYm9yZGVyUmFkaXVzID0gc3R5bGUuYmFja2dyb3VuZEJvcmRlclJhZGl1cyBcbiAgICAgID8gYCR7cGFyc2VJbnQoc3R5bGUuYmFja2dyb3VuZEJvcmRlclJhZGl1cywgMTApfXB4YFxuICAgICAgOiAnMHB4JztcbiAgICBcbiAgICAvLyBIYW5kbGUgYmFja2dyb3VuZCB3cmFwcGluZ1xuICAgIGNvbnN0IGlzV3JhcHBlZCA9IHN0eWxlLmJhY2tncm91bmRGaWxsU3R5bGUgPT09IFwid3JhcFwiO1xuICAgIGNvbnN0IHBhZGRpbmdWYWx1ZSA9IHBhcnNlSW50KGJhc2VQYWRkaW5nLCAxMCk7XG4gICAgXG4gICAgLy8gRm9yIHdyYXBwZWQgc3R5bGUsIHVzZSB1bmlmb3JtIHBhZGRpbmdcbiAgICBjb25zdCBwYWRkaW5nID0gaXNXcmFwcGVkIFxuICAgICAgPyBgJHtwYWRkaW5nVmFsdWV9cHggJHtNYXRoLnJvdW5kKHBhZGRpbmdWYWx1ZSAqIDEuMil9cHhgXG4gICAgICA6IGAke3BhZGRpbmdWYWx1ZX1weCAke3BhZGRpbmdWYWx1ZSAqIDN9cHhgO1xuICAgIFxuICAgIGNvbnN0IHdpZHRoID0gaXNXcmFwcGVkID8gXCJhdXRvXCIgOiBzdHlsZS53aWR0aDtcbiAgICBjb25zdCBkaXNwbGF5ID0gaXNXcmFwcGVkID8gXCJpbmxpbmUtYmxvY2tcIiA6IHN0eWxlLmRpc3BsYXkgfHwgXCJibG9ja1wiO1xuICAgIFxuICAgIGNvbnN0IGJhc2VTdHlsZSA9IHtcbiAgICAgIHBhZGRpbmcsXG4gICAgICBiYWNrZ3JvdW5kLFxuICAgICAgYm9yZGVyUmFkaXVzLFxuICAgICAgd2lkdGgsXG4gICAgICBkaXNwbGF5LFxuICAgICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgICAgLi4uc3R5bGUsXG4gICAgICAvLyBLZWVwIGZvbnRGYW1pbHkgaW4gdGhlIGlubGluZSBzdHlsZXMgbm93XG4gICAgICB0ZXh0U2hhZG93OiAnbm9uZScsXG4gICAgICBib3hTaGFkb3c6IGhhc0JhY2tncm91bmQgJiYgaGFzU2hhZG93ID8gdGV4dFNoYWRvdyA6ICdub25lJyxcbiAgICAgIHRyYW5zZm9ybTogYW5pbWF0aW9uU3R5bGUgPT09IFwic3ByaW5nXCIgXG4gICAgICAgID8gYCR7c3R5bGUudHJhbnNmb3JtID8gYCR7c3R5bGUudHJhbnNmb3JtfSBgIDogJyd9dHJhbnNsYXRlM2QoMCwgJHt0cmFuc2xhdGVZfXB4LCAwKSBzY2FsZSgke3NjYWxlfSlgXG4gICAgICAgIDogc3R5bGUudHJhbnNmb3JtIHx8ICdub25lJyxcbiAgICAgIGZvbnRTaXplOiB0eXBlb2Ygc3R5bGUuZm9udFNpemUgPT09ICdzdHJpbmcnID8gYWRqdXN0ZWRGb250U2l6ZSA6IGFkanVzdGVkRm9udFNpemUsXG4gICAgfTtcblxuICAgIHJldHVybiBiYXNlU3R5bGU7XG4gIH0sIFtzdHlsZSwgc2NhbGUsIHRyYW5zbGF0ZVksIGFkanVzdGVkRm9udFNpemUsIGFuaW1hdGlvblN0eWxlXSk7XG5cbiAgY29uc3Qgd3JhcHBlclN0eWxlID0gdXNlTWVtbygoKSA9PiAoe1xuICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgIHRyYW5zZm9ybTogYHNjYWxlWSgke3N0eWxlLnZlcnRpY2FsU3RyZXRjaCB8fCAxfSlgLFxuICAgIHdoaXRlU3BhY2U6ICdub3dyYXAnLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICB3aWR0aDogJ2ZpdC1jb250ZW50JyxcbiAgICB3aWxsQ2hhbmdlOiAndHJhbnNmb3JtJ1xuICB9KSwgW3N0eWxlLnZlcnRpY2FsU3RyZXRjaF0pO1xuXG4gIGNvbnN0IG91dGxpbmVTdHlsZSA9IHVzZU1lbW8oKCkgPT4gKHtcbiAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICBsZWZ0OiAwLFxuICAgIHRvcDogMCxcbiAgICByaWdodDogMCxcbiAgICBib3R0b206IDAsXG4gICAgY29sb3I6IHN0eWxlLm91dGxpbmVDb2xvcixcbiAgICB0ZXh0U2hhZG93OiBnZW5lcmF0ZU91dGxpbmVTaGFkb3coc3R5bGUub3V0bGluZUNvbG9yLCBzdHlsZS5vdXRsaW5lV2lkdGgsIHN0eWxlLm91dGxpbmVTdHlsZSksXG4gICAgV2Via2l0VGV4dEZpbGxDb2xvcjogJ3RyYW5zcGFyZW50JyxcbiAgICB6SW5kZXg6IDAsXG4gIH0pLCBbc3R5bGUub3V0bGluZUNvbG9yLCBzdHlsZS5vdXRsaW5lV2lkdGgsIHN0eWxlLm91dGxpbmVTdHlsZV0pO1xuXG4gIGNvbnN0IG1haW5UZXh0U3R5bGUgPSB1c2VNZW1vKCgpID0+ICh7XG4gICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgekluZGV4OiAxLFxuICAgIFdlYmtpdFRleHRTdHJva2U6ICd1bnNldCcsXG4gICAgY29sb3I6IHN0eWxlLmNvbG9yLFxuICB9KSwgW3N0eWxlLmNvbG9yXSk7XG5cbiAgLy8gU3BsaXQgdGV4dCBpbnRvIHdvcmRzIGFuZCBjYWxjdWxhdGUgY3VycmVudCB0aW1lXG4gIGNvbnN0IHRleHRXb3JkcyA9IHVzZU1lbW8oKCkgPT4gdGV4dC5zcGxpdCgnICcpLCBbdGV4dF0pO1xuICBjb25zdCBjdXJyZW50V29yZFRpbWUgPSBmcmFtZSAvIGZwcztcblxuICAvLyBGaW5kIGN1cnJlbnRseSBzcG9rZW4gd29yZFxuXG4gIC8vIENyZWF0ZSBhbXBsaWZpZWQgZ3JhZGllbnQgc3R5bGUgaWYgYW1wbGlmaWVkQ29sb3IgaXMgYSBncmFkaWVudCBhcnJheVxuICBjb25zdCBwaHJhc2VBbXBsaWZpZWRTdHlsZSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHN0eWxlLmFtcGxpZmllZENvbG9ycykpIHtcbiAgICAgIGNvbnN0IGZpcnN0V29yZCA9IHdvcmRzWzBdLndvcmQ7XG4gICAgICBjb25zdCBncmFkaWVudEluZGV4ID0gTWF0aC5mbG9vcihyYW5kb20oYGFtcGxpZmllZC1waHJhc2UtJHtmaXJzdFdvcmR9YCkgKiBzdHlsZS5hbXBsaWZpZWRDb2xvcnMubGVuZ3RoKTtcbiAgICAgIGNvbnN0IGdyYWRpZW50ID0gc3R5bGUuYW1wbGlmaWVkQ29sb3JzW2dyYWRpZW50SW5kZXhdO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYmFja2dyb3VuZDogYGxpbmVhci1ncmFkaWVudCgke2dyYWRpZW50LmFuZ2xlfWRlZywgJHtncmFkaWVudC5jb2xvcnMuam9pbihcIiwgXCIpfSlgLFxuICAgICAgICBiYWNrZ3JvdW5kQ2xpcDogXCJ0ZXh0XCIsXG4gICAgICAgIFdlYmtpdFRleHRGaWxsQ29sb3I6IFwidHJhbnNwYXJlbnRcIixcbiAgICAgICAgV2Via2l0QmFja2dyb3VuZENsaXA6IFwidGV4dFwiLFxuICAgICAgICBkaXNwbGF5OiBcImlubGluZS1ibG9ja1wiLFxuICAgICAgICBwb3NpdGlvbjogXCJyZWxhdGl2ZVwiLFxuICAgICAgICB6SW5kZXg6IDEsXG4gICAgICB9O1xuICAgIH1cbiAgICBjb25zb2xlLmxvZyhcImhpZ2hsaWdodCB3b3JkcyBjb2xvcjpcIiwgaGlnaGxpZ2h0V29yZHNDb2xvcik7XG4gICAgaWYgKHR5cGVvZiBzdHlsZS5hbXBsaWZpZWRDb2xvciA9PT0gJ29iamVjdCcgJiYgc3R5bGUuYW1wbGlmaWVkQ29sb3IudHlwZSA9PT0gJ2dyYWRpZW50Jykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYmFja2dyb3VuZDogYGxpbmVhci1ncmFkaWVudCgke3N0eWxlLmFtcGxpZmllZENvbG9yLmNvbG9yc1swXS5hbmdsZX1kZWcsICR7c3R5bGUuYW1wbGlmaWVkQ29sb3IuY29sb3JzWzBdLmNvbG9ycy5qb2luKFwiLCBcIil9KWAsXG4gICAgICAgIGJhY2tncm91bmRDbGlwOiBcInRleHRcIixcbiAgICAgICAgV2Via2l0VGV4dEZpbGxDb2xvcjogXCJ0cmFuc3BhcmVudFwiLFxuICAgICAgICBXZWJraXRCYWNrZ3JvdW5kQ2xpcDogXCJ0ZXh0XCIsXG4gICAgICAgIGRpc3BsYXk6IFwiaW5saW5lLWJsb2NrXCIsXG4gICAgICAgIHBvc2l0aW9uOiBcInJlbGF0aXZlXCIsXG4gICAgICAgIHpJbmRleDogMSxcbiAgICAgIH07XG4gICAgfVxuICAgIFxuICAgIHJldHVybiB7IFxuICAgICAgY29sb3I6IHN0eWxlLmFtcGxpZmllZENvbG9yLFxuICAgICAgV2Via2l0VGV4dEZpbGxDb2xvcjogc3R5bGUuYW1wbGlmaWVkQ29sb3IsXG4gICAgfTtcbiAgfSwgW3N0eWxlLmFtcGxpZmllZENvbG9ycywgc3R5bGUuYW1wbGlmaWVkQ29sb3IsIHdvcmRzXSk7XG5cbiAgLy8gSGFuZGxlIHJhbmRvbSBjb2xvcnMgaWYgZW5hYmxlZFxuICBjb25zdCByYW5kb21Db2xvckRhdGEgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoIXJhbmRvbUNvbG9ycz8uZW5hYmxlZCB8fCAhd29yZHMpIHJldHVybiBudWxsO1xuICAgIFxuICAgIGNvbnN0IHNob3VsZENvbG9yID0gcmFuZG9tKGBzaG91bGQtY29sb3ItJHt3b3Jkc1swXS53b3JkfWApIDwgcmFuZG9tQ29sb3JzLnBjdEFwcGxpZWQ7XG4gICAgaWYgKCFzaG91bGRDb2xvcikgcmV0dXJuIG51bGw7XG5cbiAgICBjb25zdCBbbWluV29yZHMsIG1heFdvcmRzXSA9IHJhbmRvbUNvbG9ycz8ucmFuZG9tV29yZENvdW50UmFuZ2UgfHwgWzAsIDBdO1xuICAgIGNvbnN0IHJhbmdlID0gbWF4V29yZHMgLSBtaW5Xb3JkcyArIDE7XG4gICAgY29uc3QgcmFuZG9tV29yZENvdW50ID0gTWF0aC5mbG9vcihyYW5kb20oYHdvcmQtY291bnQtJHt3b3Jkc1swXS53b3JkfWApICogcmFuZ2UpICsgbWluV29yZHM7XG4gICAgY29uc3QgbWF4U3RhcnRJbmRleCA9IE1hdGgubWF4KDAsIHRleHRXb3Jkcy5sZW5ndGggLSByYW5kb21Xb3JkQ291bnQpO1xuICAgIGNvbnN0IHN0YXJ0SW5kZXggPSBNYXRoLmZsb29yKHJhbmRvbShgc3RhcnQtaW5kZXgtJHt3b3Jkc1swXS53b3JkfWApICogKG1heFN0YXJ0SW5kZXggKyAxKSk7XG4gICAgY29uc3QgcmFuZG9tQ29sb3JPYmogPSByYW5kb21Db2xvcnMuY29sb3JzW01hdGguZmxvb3IocmFuZG9tKGBjb2xvci0ke3dvcmRzWzBdLndvcmR9YCkgKiByYW5kb21Db2xvcnMuY29sb3JzLmxlbmd0aCldO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHNob3VsZENvbG9yLFxuICAgICAgcmFuZG9tV29yZENvdW50LFxuICAgICAgc3RhcnRJbmRleCxcbiAgICAgIHJhbmRvbUNvbG9yT2JqXG4gICAgfTtcbiAgfSwgW3JhbmRvbUNvbG9ycywgd29yZHMsIHRleHRXb3Jkcy5sZW5ndGhdKTtcblxuICBjb25zdCBwaHJhc2VTdHlsZSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmICghcmFuZG9tQ29sb3JEYXRhKSB7XG4gICAgICByZXR1cm4geyBcbiAgICAgICAgY29sb3I6IHN0eWxlLmNvbG9yLFxuICAgICAgICBXZWJraXRUZXh0RmlsbENvbG9yOiBzdHlsZS5jb2xvcixcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3QgeyByYW5kb21Db2xvck9iaiB9ID0gcmFuZG9tQ29sb3JEYXRhO1xuICAgIHJldHVybiByYW5kb21Db2xvck9iai50eXBlID09PSBcImdyYWRpZW50XCIgPyBcbiAgICAgIHtcbiAgICAgICAgYmFja2dyb3VuZDogYGxpbmVhci1ncmFkaWVudCgke3JhbmRvbUNvbG9yT2JqLmFuZ2xlfWRlZywgJHtyYW5kb21Db2xvck9iai5jb2xvcnMuam9pbihcIiwgXCIpfSlgLFxuICAgICAgICBiYWNrZ3JvdW5kQ2xpcDogXCJ0ZXh0XCIsXG4gICAgICAgIFdlYmtpdFRleHRGaWxsQ29sb3I6IFwidHJhbnNwYXJlbnRcIixcbiAgICAgICAgV2Via2l0QmFja2dyb3VuZENsaXA6IFwidGV4dFwiLFxuICAgICAgICBkaXNwbGF5OiBcImlubGluZS1ibG9ja1wiLFxuICAgICAgICBwb3NpdGlvbjogXCJyZWxhdGl2ZVwiLFxuICAgICAgICB6SW5kZXg6IDEsXG4gICAgICB9IDogXG4gICAgICB7IFxuICAgICAgICBjb2xvcjogcmFuZG9tQ29sb3JPYmouY29sb3IsXG4gICAgICAgIFdlYmtpdFRleHRGaWxsQ29sb3I6IHJhbmRvbUNvbG9yT2JqLmNvbG9yLFxuICAgICAgfTtcbiAgfSwgW3JhbmRvbUNvbG9yRGF0YSwgc3R5bGUuY29sb3JdKTtcblxuICBjb25zdCB3b3JkQ29udGVudCA9IHVzZU1lbW8oKCkgPT4gdGV4dFdvcmRzLm1hcCgod29yZCwgaW5kZXgpID0+IHtcbiAgICAvLyBDaGVjayBpZiB0aGUgd29yZCBpcyBzdXJyb3VuZGVkIGJ5IDxoPiB0YWdzXG4gICAgY29uc3QgaGlnaGxpZ2h0ZWRNYXRjaCA9IHdvcmQubWF0Y2goL148aD4oLio/KTxcXC9oPiQvKTtcbiAgICBjb25zdCBpc0hpZ2hsaWdodGVkID0gaGlnaGxpZ2h0ZWRNYXRjaCAhPT0gbnVsbDtcbiAgICBjb25zdCBkaXNwbGF5V29yZCA9IGlzSGlnaGxpZ2h0ZWQgPyBoaWdobGlnaHRlZE1hdGNoWzFdIDogd29yZDtcblxuICAgIGNvbnN0IHNob3VsZENvbG9yVGhpc1dvcmQgPSByYW5kb21Db2xvckRhdGEgJiYgXG4gICAgICBpbmRleCA+PSByYW5kb21Db2xvckRhdGEuc3RhcnRJbmRleCAmJiBcbiAgICAgIGluZGV4IDwgcmFuZG9tQ29sb3JEYXRhLnN0YXJ0SW5kZXggKyByYW5kb21Db2xvckRhdGEucmFuZG9tV29yZENvdW50ICYmXG4gICAgICBpbmRleCA8IHRleHRXb3Jkcy5sZW5ndGg7XG5cbiAgICBjb25zdCB3b3JkVGltaW5nID0gd29yZHM/LltpbmRleF07XG4gICAgY29uc3QgaGFzQmVlblNwb2tlbiA9IHdvcmRUaW1pbmcgJiYgY3VycmVudFdvcmRUaW1lID49IHdvcmRUaW1pbmcuZW5kO1xuICAgIGNvbnN0IGlzQ3VycmVudGx5U3Bva2VuID0gd29yZFRpbWluZyAmJiBcbiAgICAgIGN1cnJlbnRXb3JkVGltZSA+PSB3b3JkVGltaW5nLnN0YXJ0ICYmIFxuICAgICAgY3VycmVudFdvcmRUaW1lIDwgd29yZFRpbWluZy5lbmQ7XG5cbiAgICBjb25zdCB0ZXh0SGlnaGxpZ2h0UGVyc2lzdHMgPSBzdHlsZS50ZXh0SGlnaGxpZ2h0UGVyc2lzdHMgPyB0cnVlIDogZmFsc2U7XG4gICAgXG4gICAgY29uc3Qgc2hvdWxkSGlnaGxpZ2h0ID0gc3R5bGUuYW1wbGlmeVNwb2tlbldvcmRzICYmIFxuICAgICAgKGlzQ3VycmVudGx5U3Bva2VuIHx8ICh0ZXh0SGlnaGxpZ2h0UGVyc2lzdHMgJiYgaGFzQmVlblNwb2tlbikpO1xuICAgIFxuICAgIC8vIE1vZGlmaWVkIGxvZ2ljIHRvIHByaW9yaXRpemUgPGg+IHRhZyBoaWdobGlnaHRpbmdcbiAgICBjb25zdCB3b3JkU3R5bGUgPSBpc0hpZ2hsaWdodGVkXG4gICAgICA/IHsgXG4gICAgICAgICAgY29sb3I6IGhpZ2hsaWdodFdvcmRzQ29sb3IsXG4gICAgICAgICAgV2Via2l0VGV4dEZpbGxDb2xvcjogaGlnaGxpZ2h0V29yZHNDb2xvcixcbiAgICAgICAgICBvcGFjaXR5OiBzdHlsZS5vcGFjaXR5IHx8IDEsXG4gICAgICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgICAgIH1cbiAgICAgIDogc2hvdWxkSGlnaGxpZ2h0XG4gICAgICAgID8ge1xuICAgICAgICAgICAgLi4ucGhyYXNlQW1wbGlmaWVkU3R5bGUsXG4gICAgICAgICAgICBvcGFjaXR5OiBzdHlsZS5hbXBsaWZpZWRPcGFjaXR5IHx8IDEsXG4gICAgICAgICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICAgICAgICB9XG4gICAgICAgIDogc2hvdWxkQ29sb3JUaGlzV29yZCBcbiAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgLi4ucGhyYXNlU3R5bGUsXG4gICAgICAgICAgICAgIG9wYWNpdHk6IHN0eWxlLm9wYWNpdHkgfHwgMSxcbiAgICAgICAgICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgOiB7IFxuICAgICAgICAgICAgICBjb2xvcjogc3R5bGUuY29sb3IsXG4gICAgICAgICAgICAgIFdlYmtpdFRleHRGaWxsQ29sb3I6IHN0eWxlLmNvbG9yLFxuICAgICAgICAgICAgICBvcGFjaXR5OiBzdHlsZS51bkFtcGxpZmllZE9wYWNpdHkgfHwgMSxcbiAgICAgICAgICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgICAgICAgICB9O1xuXG4gICAgLy8gQWRkIHotaW5kZXggdG8gZW5zdXJlIHByb3BlciBzdGFja2luZyBvZiB3b3JkIGJsb2Nrc1xuICAgIGNvbnN0IGNvbnRhaW5lclN0eWxlID0ge1xuICAgICAgLi4ud29yZFN0eWxlLFxuICAgICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgICBtYXJnaW5SaWdodDogaW5kZXggPCB0ZXh0V29yZHMubGVuZ3RoIC0gMSA/ICcwLjI1ZW0nIDogMCxcbiAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgekluZGV4OiBpc0N1cnJlbnRseVNwb2tlbiA/IDIgOiAxLFxuICAgICAgd2hpdGVTcGFjZTogJ25vd3JhcCdcbiAgICB9O1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxzcGFuIGtleT17aW5kZXh9IHN0eWxlPXtjb250YWluZXJTdHlsZX0+XG4gICAgICAgIHtzdHlsZS5jdXJyZW50V29yZEJsb2NrICYmIGlzQ3VycmVudGx5U3Bva2VuICYmIChcbiAgICAgICAgICA8c3BhbiBzdHlsZT17e1xuICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgICAgICBjb250ZW50OiAnXCJcIicsXG4gICAgICAgICAgICBsZWZ0OiBgLSR7KHN0eWxlLmN1cnJlbnRXb3JkQmxvY2tQYWRkaW5nIHx8IDUpICogMn1weGAsXG4gICAgICAgICAgICByaWdodDogYC0keyhzdHlsZS5jdXJyZW50V29yZEJsb2NrUGFkZGluZyB8fCA1KSAqIDJ9cHhgLFxuICAgICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgICAgaGVpZ2h0OiAnNzAlJyxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogc3R5bGUuY3VycmVudFdvcmRCbG9ja0JhY2tncm91bmRDb2xvciB8fCAnIzAwMDAwMCcsXG4gICAgICAgICAgICBvcGFjaXR5OiBzdHlsZS5jdXJyZW50V29yZEJsb2NrT3BhY2l0eSB8fCAxLFxuICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiBgJHtzdHlsZS5jdXJyZW50V29yZEJsb2NrQm9yZGVyUmFkaXVzIHx8IDE1fXB4YCxcbiAgICAgICAgICAgIHpJbmRleDogLTEsXG4gICAgICAgICAgICBwb2ludGVyRXZlbnRzOiAnbm9uZScsXG4gICAgICAgICAgICB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDJweCknLFxuICAgICAgICAgICAgcGFkZGluZzogYCR7c3R5bGUuY3VycmVudFdvcmRCbG9ja1BhZGRpbmcgfHwgNX1weCAwYCxcbiAgICAgICAgICAgIGJveFNpemluZzogJ2NvbnRlbnQtYm94J1xuICAgICAgICAgIH19IC8+XG4gICAgICAgICl9XG4gICAgICAgIHtkaXNwbGF5V29yZH0gey8qIERpc3BsYXkgdGhlIHdvcmQgd2l0aG91dCA8aD4gdGFncyAqL31cbiAgICAgIDwvc3Bhbj5cbiAgICApO1xuICB9KSwgW3RleHRXb3JkcywgcmFuZG9tQ29sb3JEYXRhLCB3b3JkcywgY3VycmVudFdvcmRUaW1lLCBzdHlsZS5hbXBsaWZ5U3Bva2VuV29yZHMsIHN0eWxlLnRleHRIaWdobGlnaHRQZXJzaXN0cywgcGhyYXNlQW1wbGlmaWVkU3R5bGUsIHBocmFzZVN0eWxlLCBzdHlsZS5jb2xvciwgc3R5bGUuY3VycmVudFdvcmRCbG9jaywgc3R5bGUuY3VycmVudFdvcmRCbG9ja0JhY2tncm91bmRDb2xvciwgc3R5bGUuY3VycmVudFdvcmRCbG9ja09wYWNpdHksIHN0eWxlLmN1cnJlbnRXb3JkQmxvY2tQYWRkaW5nLCBzdHlsZS5jdXJyZW50V29yZEJsb2NrQm9yZGVyUmFkaXVzLCBoaWdobGlnaHRXb3Jkc0NvbG9yXSk7XG4gIC8vIGNvbnNvbGUubG9nKCdTdWJ0aXRsZVRleHQgLSByZWNlaXZlZCBzdHlsZSBmb250RmFtaWx5OicsIHN0eWxlLmZvbnRGYW1pbHkpO1xuICByZXR1cm4gKFxuICAgIDxkaXYgXG4gICAgICBzdHlsZT17e1xuICAgICAgICAuLi5hbmltYXRlZFN0eWxlLFxuICAgICAgICB3aGl0ZVNwYWNlOiAnbm93cmFwJyxcbiAgICAgICAgd2lkdGg6ICdmaXQtY29udGVudCcsXG4gICAgICAgIGRpc3BsYXk6ICdibG9jaydcbiAgICAgIH19XG4gICAgPlxuICAgICAgPGRpdiBzdHlsZT17d3JhcHBlclN0eWxlfT5cbiAgICAgICAgPGRpdiBzdHlsZT17ey4uLm91dGxpbmVTdHlsZSwgd2hpdGVTcGFjZTogJ25vd3JhcCd9fT57d29yZENvbnRlbnR9PC9kaXY+XG4gICAgICAgIDxkaXYgc3R5bGU9e3suLi5tYWluVGV4dFN0eWxlLCB3aGl0ZVNwYWNlOiAnbm93cmFwJ319Pnt3b3JkQ29udGVudH08L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufSwgKHByZXZQcm9wcywgbmV4dFByb3BzKSA9PiB7XG4gIC8vIE9ubHkgcmUtcmVuZGVyIGlmIHRoZXNlIGVzc2VudGlhbCBwcm9wcyBoYXZlIGNoYW5nZWRcbiAgY29uc3QgZXNzZW50aWFsUHJvcHMgPSBbJ2ZyYW1lJywgJ3RleHQnLCAnc3RhcnRGcmFtZSddO1xuICBjb25zdCBoYXNFc3NlbnRpYWxQcm9wc0NoYW5nZWQgPSBlc3NlbnRpYWxQcm9wcy5zb21lKFxuICAgIHByb3AgPT4gcHJldlByb3BzW3Byb3BdICE9PSBuZXh0UHJvcHNbcHJvcF1cbiAgKTtcbiAgXG4gIC8vIERlZXAgY29tcGFyZSBzdHlsZSBhbmQgcmFuZG9tQ29sb3JzIG9ubHkgaWYgZXNzZW50aWFsIHByb3BzIGhhdmVuJ3QgY2hhbmdlZFxuICBpZiAoIWhhc0Vzc2VudGlhbFByb3BzQ2hhbmdlZCkge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShwcmV2UHJvcHMuc3R5bGUpID09PSBKU09OLnN0cmluZ2lmeShuZXh0UHJvcHMuc3R5bGUpICYmXG4gICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHByZXZQcm9wcy5yYW5kb21Db2xvcnMpID09PSBKU09OLnN0cmluZ2lmeShuZXh0UHJvcHMucmFuZG9tQ29sb3JzKTtcbiAgfVxuICBcbiAgcmV0dXJuIGZhbHNlO1xufSk7ICIsbnVsbCwiaW1wb3J0IFJlYWN0LCB7IHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5cbi8vIEhlbHBlciB0byBjb252ZXJ0IGhleCB0byByZ2JcbmNvbnN0IGhleFRvUmdiID0gKGhleCkgPT4ge1xuICAvLyBSZW1vdmUgIyBpZiBwcmVzZW50XG4gIGhleCA9IGhleC5yZXBsYWNlKCcjJywgJycpO1xuICBcbiAgLy8gSGFuZGxlIGJvdGggMy1kaWdpdCBhbmQgNi1kaWdpdCBoZXhcbiAgY29uc3QgciA9IHBhcnNlSW50KGhleC5sZW5ndGggPT09IDMgPyBoZXhbMF0gKyBoZXhbMF0gOiBoZXguc2xpY2UoMCwgMiksIDE2KTtcbiAgY29uc3QgZyA9IHBhcnNlSW50KGhleC5sZW5ndGggPT09IDMgPyBoZXhbMV0gKyBoZXhbMV0gOiBoZXguc2xpY2UoMiwgNCksIDE2KTtcbiAgY29uc3QgYiA9IHBhcnNlSW50KGhleC5sZW5ndGggPT09IDMgPyBoZXhbMl0gKyBoZXhbMl0gOiBoZXguc2xpY2UoNCwgNiksIDE2KTtcbiAgXG4gIHJldHVybiBgJHtyfSwgJHtnfSwgJHtifWA7XG59O1xuXG5leHBvcnQgY29uc3QgdXNlVGV4dFN0eWxlID0gKHByZXNldCwgeCwgYWRqdXN0ZWRZLCB2aWRlb1dpZHRoKSA9PiB7ICBcbiAgcmV0dXJuIHVzZU1lbW8oKCkgPT4ge1xuICAgIC8vIENyZWF0ZSB0ZXh0IHNoYWRvdyBiYXNlZCBvbiBpbnRlbnNpdHlcbiAgICBjb25zdCBzaGFkb3dJbnRlbnNpdHkgPSBwcmVzZXQuc2hhZG93SW50ZW5zaXR5IHx8IDE7XG4gICAgY29uc3Qgc2hhZG93Q29sb3IgPSBwcmVzZXQuc2hhZG93Q29sb3IgfHwgJyMwMDAwMDAnO1xuICAgIGNvbnN0IHNoYWRvd0JsdXIgPSBwcmVzZXQuc2hhZG93Qmx1ciB8fCAnMic7XG4gICAgY29uc3Qgc2hhZG93T2Zmc2V0WCA9IHByZXNldC5zaGFkb3dPZmZzZXRYIHx8ICcwJztcbiAgICBjb25zdCBzaGFkb3dPZmZzZXRZID0gcHJlc2V0LnNoYWRvd09mZnNldFkgfHwgJzAnO1xuICAgIFxuICAgIC8vIFN0YWNrIG11bHRpcGxlIHNoYWRvd3MgYmFzZWQgb24gaW50ZW5zaXR5XG4gICAgY29uc3Qgc2hhZG93cyA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2hhZG93SW50ZW5zaXR5OyBpKyspIHtcbiAgICAgIHNoYWRvd3MucHVzaChgJHtzaGFkb3dPZmZzZXRYfXB4ICR7c2hhZG93T2Zmc2V0WX1weCAke3NoYWRvd0JsdXJ9cHggJHtzaGFkb3dDb2xvcn1gKTtcbiAgICB9XG4gICAgY29uc3QgdGV4dFNoYWRvdyA9IHNoYWRvd3Muam9pbignLCAnKTtcblxuICAgIGNvbnN0IGRyb3BTaGFkb3cgPSAocHJlc2V0LnNoYWRvd0VuYWJsZWQgIT09IGZhbHNlICYmIChwcmVzZXQuc2hhZG93T2Zmc2V0WCB8fCBwcmVzZXQuc2hhZG93T2Zmc2V0WSB8fCBwcmVzZXQuc2hhZG93Qmx1cikpXG4gICAgICA/IGBkcm9wLXNoYWRvdygke3ByZXNldC5zaGFkb3dPZmZzZXRYfXB4ICR7cHJlc2V0LnNoYWRvd09mZnNldFl9cHggJHtwcmVzZXQuc2hhZG93Qmx1cn1weCAke3ByZXNldC5zaGFkb3dDb2xvcn0pYFxuICAgICAgOiAnbm9uZSc7XG5cbiAgICBjb25zdCBiYWNrZ3JvdW5kQ29sb3IgPSBwcmVzZXQuYmFja2dyb3VuZENvbG9yID09PSAndHJhbnNwYXJlbnQnIFxuICAgICAgPyAndHJhbnNwYXJlbnQnIFxuICAgICAgOiBwcmVzZXQuYmFja2dyb3VuZENvbG9yICYmIHByZXNldC5iYWNrZ3JvdW5kT3BhY2l0eVxuICAgICAgICA/IGByZ2JhKCR7aGV4VG9SZ2IocHJlc2V0LmJhY2tncm91bmRDb2xvcil9LCAke3ByZXNldC5iYWNrZ3JvdW5kT3BhY2l0eX0pYFxuICAgICAgICA6IHByZXNldC5iYWNrZ3JvdW5kQ29sb3IgfHwgJyMwMDAwMDAnO1xuICAgIFxuICAgIC8vIEhhbmRsZSBib3RoIGRpcmVjdGlvbmFsIGFuZCB1bmlmb3JtIHBhZGRpbmdcbiAgICBjb25zdCBwYWRkaW5nWCA9IHByZXNldC5iYWNrZ3JvdW5kUGFkZGluZ1ggfHwgcHJlc2V0LmJhY2tncm91bmRQYWRkaW5nIHx8ICcxMCc7XG4gICAgY29uc3QgcGFkZGluZ1kgPSBwcmVzZXQuYmFja2dyb3VuZFBhZGRpbmdZIHx8IHByZXNldC5iYWNrZ3JvdW5kUGFkZGluZyB8fCAnMTAnO1xuICAgIGNvbnN0IGJhc2VQYWRkaW5nID0gYCR7cGFkZGluZ1l9cHggJHtwYWRkaW5nWH1weGA7XG4gICAgXG4gICAgY29uc3Qgc3R5bGUgPSB7XG4gICAgICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICAgICAgbGVmdDogYCR7eH1weGAsXG4gICAgICB0b3A6IGAke2FkanVzdGVkWX1weGAsXG4gICAgICB0cmFuc2Zvcm06IFwidHJhbnNsYXRlKC01MCUsIC01MCUpXCIsXG4gICAgICBmb250RmFtaWx5OiBwcmVzZXQuZm9udEZhbWlseSxcbiAgICAgIGZvbnRTaXplOiBgJHtwcmVzZXQuZm9udFNpemV9cHhgLFxuICAgICAgZm9udFdlaWdodDogcHJlc2V0LmZvbnRXZWlnaHQsXG4gICAgICBjb2xvcjogcHJlc2V0LmZvbnRDb2xvcixcbiAgICAgIGFtcGxpZmllZENvbG9yOiBwcmVzZXQuYW1wbGlmaWVkQ29sb3IsXG4gICAgICBhbXBsaWZpZWRDb2xvcnM6IHByZXNldC5hbXBsaWZpZWRDb2xvcnMsXG4gICAgICBhbXBsaWZ5U3Bva2VuV29yZHM6IHByZXNldC5hbXBsaWZ5U3Bva2VuV29yZHMsXG4gICAgICB0ZXh0VHJhbnNmb3JtOiBwcmVzZXQudGV4dENhc2UsXG4gICAgICBmb250U3R5bGU6IHByZXNldC5pc0l0YWxpYyA/IFwiaXRhbGljXCIgOiBcIm5vcm1hbFwiLFxuICAgICAgdGV4dEFsaWduOiBcImNlbnRlclwiLFxuICAgICAgbGV0dGVyU3BhY2luZzogYCR7cHJlc2V0LnRleHRTcGFjaW5nfXB4YCxcbiAgICAgIGJhY2tncm91bmRDb2xvcixcbiAgICAgIGJhY2tncm91bmRQYWRkaW5nOiBiYXNlUGFkZGluZyxcbiAgICAgIGJhY2tncm91bmRCb3JkZXJSYWRpdXM6IHByZXNldC5iYWNrZ3JvdW5kQm9yZGVyUmFkaXVzLFxuICAgICAgdmVydGljYWxTdHJldGNoOiBwcmVzZXQudmVydGljYWxTdHJldGNoIHx8IDEsXG4gICAgICB0cmFuc2Zvcm1PcmlnaW46IFwiY2VudGVyIGNlbnRlclwiLFxuICAgICAgd2lkdGg6IFwiYXV0b1wiLFxuICAgICAgbWF4V2lkdGg6IGAke3ZpZGVvV2lkdGggKiAwLjl9cHhgLFxuICAgICAgd2hpdGVTcGFjZTogXCJwcmUtd3JhcFwiLFxuICAgICAgb3ZlcmZsb3c6IFwidmlzaWJsZVwiLFxuICAgICAgb3V0bGluZUNvbG9yOiBwcmVzZXQub3V0bGluZUNvbG9yLFxuICAgICAgb3V0bGluZVdpZHRoOiBwcmVzZXQub3V0bGluZVdpZHRoLFxuICAgICAgZmlsdGVyOiBkcm9wU2hhZG93LFxuICAgICAgZGlzcGxheTogXCJpbmxpbmUtYmxvY2tcIixcbiAgICAgIHRleHRIaWdobGlnaHRQZXJzaXN0czogcHJlc2V0LnRleHRIaWdobGlnaHRQZXJzaXN0cyxcbiAgICAgIGFtcGxpZmllZE9wYWNpdHk6IHByZXNldC5hbXBsaWZpZWRPcGFjaXR5LFxuICAgICAgdW5BbXBsaWZpZWRPcGFjaXR5OiBwcmVzZXQub3BhY2l0eSxcbiAgICAgIGN1cnJlbnRXb3JkQmxvY2s6IHByZXNldC5jdXJyZW50V29yZEJsb2NrLFxuICAgICAgY3VycmVudFdvcmRCbG9ja0JhY2tncm91bmRDb2xvcjogcHJlc2V0LmN1cnJlbnRXb3JkQmxvY2tCYWNrZ3JvdW5kQ29sb3IsXG4gICAgICBjdXJyZW50V29yZEJsb2NrT3BhY2l0eTogcHJlc2V0LmN1cnJlbnRXb3JkQmxvY2tPcGFjaXR5LFxuICAgICAgY3VycmVudFdvcmRCbG9ja1BhZGRpbmc6IHByZXNldC5jdXJyZW50V29yZEJsb2NrUGFkZGluZyxcbiAgICAgIGN1cnJlbnRXb3JkQmxvY2tCb3JkZXJSYWRpdXM6IHByZXNldC5jdXJyZW50V29yZEJsb2NrQm9yZGVyUmFkaXVzLFxuICAgICAgYW1wbGlmeU9wYWNpdHlUcmFuc2l0aW9uRHVyYXRpb246IHByZXNldC5hbXBsaWZ5T3BhY2l0eVRyYW5zaXRpb25EdXJhdGlvbixcbiAgICAgIHRleHRTaGFkb3csXG4gICAgICBzaGFkb3dJbnRlbnNpdHk6IHByZXNldC5zaGFkb3dJbnRlbnNpdHksXG4gICAgfTtcbiAgICBcbiAgICAvLyBjb25zb2xlLmxvZygndXNlVGV4dFN0eWxlIC0gb3V0cHV0IHN0eWxlIGZvbnRGYW1pbHk6Jywgc3R5bGUuZm9udEZhbWlseSk7XG4gICAgcmV0dXJuIHN0eWxlO1xuICB9LCBbcHJlc2V0LCB4LCBhZGp1c3RlZFksIHZpZGVvV2lkdGhdKTtcbn07ICIsIi8vIEZvbnQgbWFwIHRoYXQgbWF0Y2hlcyBDU1MgZm9udC1mYW1pbHkgbmFtZXMgdG8gdGhlaXIgZm9udCBmaWxlcyBhbmQgd2VpZ2h0c1xuY29uc3QgRk9OVF9NQVAgPSB7XG4gICdQb3N0ZXJhbWEtMTkyNy1XMDEtVWx0cmFCbGFjayc6IFt7IHNyYzogJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9vdmVybGFwLWZvbnRzL2ZvbnRzL1Bvc3RlcmFtYS0xOTI3LVcwMS1VbHRyYUJsYWNrLnR0Zj9hbHQ9bWVkaWEnLCB3ZWlnaHQ6IDkwMCwgc3R5bGU6ICdub3JtYWwnIH1dLFxuICAnU3RhcGVsLU5hcnJvdyc6IFt7IHNyYzogJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9vdmVybGFwLWZvbnRzL2ZvbnRzL05ldWVIYWFzRGlzcGxheS9OZXVlSGFhc0Rpc3BsYXlSb21hbi50dGY/YWx0PW1lZGlhJywgd2VpZ2h0OiA0MDAsIHN0eWxlOiAnbm9ybWFsJyB9XSxcbiAgJ1N0YXBlbC1OYXJyb3dNZWRpdW0nOiBbeyBzcmM6ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vb3ZlcmxhcC1mb250cy9mb250cy9zdGFwZWwvU3RhcGVsLU5hcnJvd01lZGl1bS50dGY/YWx0PW1lZGlhJywgd2VpZ2h0OiA1MDAsIHN0eWxlOiAnbm9ybWFsJyB9XSxcbiAgJ05ldWVIYWFzRGlzcGxheUJvbGQnOiBbeyBzcmM6ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vb3ZlcmxhcC1mb250cy9mb250cy9OZXVlSGFhc0Rpc3BsYXlCb2xkLnR0Zj9hbHQ9bWVkaWEnLCB3ZWlnaHQ6IDcwMCwgc3R5bGU6ICdub3JtYWwnIH1dLFxuICAnVGhlQm9sZEZvbnQnOiBbeyBzcmM6ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vb3ZlcmxhcC1mb250cy9mb250cy90aGVib2xkZm9udC50dGY/YWx0PW1lZGlhJywgd2VpZ2h0OiA3MDAsIHN0eWxlOiAnbm9ybWFsJyB9XSxcbiAgJ01lcmNhZGlsbG8gQmxhY2snOiBbeyBzcmM6ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vb3ZlcmxhcC1mb250cy9mb250cy9tZXJjYWRpbGxvL01lcmNhZGlsbG8tQmxhY2sudHRmP2FsdD1tZWRpYScsIHdlaWdodDogOTAwLCBzdHlsZTogJ25vcm1hbCcgfV0sXG4gICdNZXJjYWRpbGxvIEJvbGQnOiBbeyBzcmM6ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vb3ZlcmxhcC1mb250cy9mb250cy9tZXJjYWRpbGxvL01lcmNhZGlsbG8tQm9sZC50dGY/YWx0PW1lZGlhJywgd2VpZ2h0OiA3MDAsIHN0eWxlOiAnbm9ybWFsJyB9XSxcbiAgXG4gIC8vIG5lZWQgdG8gYWRkIGludGVyIGZvbnQgdmFyaWF0aW9uc1xuICAvLyBJbnRlciBmb250IHZhcmlhdGlvbnNcbiAgJ0ludGVyJzogW1xuICAgIHsgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvSW50ZXIvSW50ZXItVGhpbi53b2ZmMj9hbHQ9bWVkaWEnLCB3ZWlnaHQ6IDEwMCwgc3R5bGU6ICdub3JtYWwnIH0sXG4gICAgeyBzcmM6ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vb3ZlcmxhcC1mb250cy9mb250cy9JbnRlci9JbnRlci1FeHRyYUxpZ2h0LndvZmYyP2FsdD1tZWRpYScsIHdlaWdodDogMjAwLCBzdHlsZTogJ25vcm1hbCcgfSxcbiAgICB7IHNyYzogJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9vdmVybGFwLWZvbnRzL2ZvbnRzL0ludGVyL0ludGVyLUxpZ2h0LndvZmYyP2FsdD1tZWRpYScsIHdlaWdodDogMzAwLCBzdHlsZTogJ25vcm1hbCcgfSxcbiAgICB7IHNyYzogJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9vdmVybGFwLWZvbnRzL2ZvbnRzL0ludGVyL0ludGVyLVJlZ3VsYXIud29mZjI/YWx0PW1lZGlhJywgd2VpZ2h0OiA0MDAsIHN0eWxlOiAnbm9ybWFsJyB9LFxuICAgIHsgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvSW50ZXIvSW50ZXItTWVkaXVtLndvZmYyP2FsdD1tZWRpYScsIHdlaWdodDogNTAwLCBzdHlsZTogJ25vcm1hbCcgfSxcbiAgICB7IHNyYzogJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9vdmVybGFwLWZvbnRzL2ZvbnRzL0ludGVyL0ludGVyLVNlbWlCb2xkLndvZmYyP2FsdD1tZWRpYScsIHdlaWdodDogNjAwLCBzdHlsZTogJ25vcm1hbCcgfSxcbiAgICB7IHNyYzogJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9vdmVybGFwLWZvbnRzL2ZvbnRzL0ludGVyL0ludGVyLUJvbGQud29mZjI/YWx0PW1lZGlhJywgd2VpZ2h0OiA3MDAsIHN0eWxlOiAnbm9ybWFsJyB9LFxuICAgIHsgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvSW50ZXIvSW50ZXItRXh0cmFCb2xkLndvZmYyP2FsdD1tZWRpYScsIHdlaWdodDogODAwLCBzdHlsZTogJ25vcm1hbCcgfSxcbiAgICB7IHNyYzogJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9vdmVybGFwLWZvbnRzL2ZvbnRzL0ludGVyL0ludGVyLUJsYWNrLndvZmYyP2FsdD1tZWRpYScsIHdlaWdodDogOTAwLCBzdHlsZTogJ25vcm1hbCcgfVxuICBdLFxuXG4gIC8vIE1pbGxpYXJkIGZvbnQgdmFyaWF0aW9uc1xuICAnTWlsbGlhcmQnOiBbXG4gICAgeyBzcmM6ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vb3ZlcmxhcC1mb250cy9mb250cy9taWxsaWFyZC9SZW5lJTIwQmllZGVyJTIwJTIwTWlsbGlhcmQlMjBUaGluLm90Zj9hbHQ9bWVkaWEnLCB3ZWlnaHQ6IDEwMCwgc3R5bGU6ICdub3JtYWwnIH0sXG4gICAgeyBzcmM6ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vb3ZlcmxhcC1mb250cy9mb250cy9taWxsaWFyZC9SZW5lJTIwQmllZGVyJTIwJTIwTWlsbGlhcmQlMjBUaGluJTIwSXRhbGljLm90Zj9hbHQ9bWVkaWEnLCB3ZWlnaHQ6IDEwMCwgc3R5bGU6ICdpdGFsaWMnIH0sXG4gICAgeyBzcmM6ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vb3ZlcmxhcC1mb250cy9mb250cy9taWxsaWFyZC9SZW5lJTIwQmllZGVyJTIwJTIwTWlsbGlhcmQlMjBFeHRyYUxpZ2h0Lm90Zj9hbHQ9bWVkaWEnLCB3ZWlnaHQ6IDIwMCwgc3R5bGU6ICdub3JtYWwnIH0sXG4gICAgeyBzcmM6ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vb3ZlcmxhcC1mb250cy9mb250cy9taWxsaWFyZC9SZW5lJTIwQmllZGVyJTIwJTIwTWlsbGlhcmQlMjBFeHRyYUxpZ2h0JTIwSXRhbGljLm90Zj9hbHQ9bWVkaWEnLCB3ZWlnaHQ6IDIwMCwgc3R5bGU6ICdpdGFsaWMnIH0sXG4gICAgeyBzcmM6ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vb3ZlcmxhcC1mb250cy9mb250cy9taWxsaWFyZC9SZW5lJTIwQmllZGVyJTIwJTIwTWlsbGlhcmQlMjBMaWdodC5vdGY/YWx0PW1lZGlhJywgd2VpZ2h0OiAzMDAsIHN0eWxlOiAnbm9ybWFsJyB9LFxuICAgIHsgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvbWlsbGlhcmQvUmVuZSUyMEJpZWRlciUyMCUyME1pbGxpYXJkJTIwTGlnaHQlMjBJdGFsaWMub3RmP2FsdD1tZWRpYScsIHdlaWdodDogMzAwLCBzdHlsZTogJ2l0YWxpYycgfSxcbiAgICB7IHNyYzogJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9vdmVybGFwLWZvbnRzL2ZvbnRzL21pbGxpYXJkL1JlbmUlMjBCaWVkZXIlMjAlMjBNaWxsaWFyZCUyMEJvb2sub3RmP2FsdD1tZWRpYScsIHdlaWdodDogNDAwLCBzdHlsZTogJ25vcm1hbCcgfSxcbiAgICB7IHNyYzogJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9vdmVybGFwLWZvbnRzL2ZvbnRzL21pbGxpYXJkL1JlbmUlMjBCaWVkZXIlMjAlMjBNaWxsaWFyZCUyMEJvb2slMjBJdGFsaWMub3RmP2FsdD1tZWRpYScsIHdlaWdodDogNDAwLCBzdHlsZTogJ2l0YWxpYycgfSxcbiAgICB7IHNyYzogJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9vdmVybGFwLWZvbnRzL2ZvbnRzL21pbGxpYXJkL1JlbmUlMjBCaWVkZXIlMjAlMjBNaWxsaWFyZCUyME1lZGl1bS5vdGY/YWx0PW1lZGlhJywgd2VpZ2h0OiA1MDAsIHN0eWxlOiAnbm9ybWFsJyB9LFxuICAgIHsgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvbWlsbGlhcmQvUmVuZSUyMEJpZWRlciUyMCUyME1pbGxpYXJkJTIwTWVkaXVtJTIwSXRhbGljLm90Zj9hbHQ9bWVkaWEnLCB3ZWlnaHQ6IDUwMCwgc3R5bGU6ICdpdGFsaWMnIH0sXG4gICAgeyBzcmM6ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vb3ZlcmxhcC1mb250cy9mb250cy9taWxsaWFyZC9SZW5lJTIwQmllZGVyJTIwJTIwTWlsbGlhcmQlMjBTZW1pQm9sZC5vdGY/YWx0PW1lZGlhJywgd2VpZ2h0OiA2MDAsIHN0eWxlOiAnbm9ybWFsJyB9LFxuICAgIHsgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvbWlsbGlhcmQvUmVuZSUyMEJpZWRlciUyMCUyME1pbGxpYXJkJTIwU2VtaUJvbGQlMjBJdGFsaWMub3RmP2FsdD1tZWRpYScsIHdlaWdodDogNjAwLCBzdHlsZTogJ2l0YWxpYycgfSxcbiAgICB7IHNyYzogJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9vdmVybGFwLWZvbnRzL2ZvbnRzL21pbGxpYXJkL1JlbmUlMjBCaWVkZXIlMjAlMjBNaWxsaWFyZCUyMEJvbGQub3RmP2FsdD1tZWRpYScsIHdlaWdodDogNzAwLCBzdHlsZTogJ25vcm1hbCcgfSxcbiAgICB7IHNyYzogJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9vdmVybGFwLWZvbnRzL2ZvbnRzL21pbGxpYXJkL1JlbmUlMjBCaWVkZXIlMjAlMjBNaWxsaWFyZCUyMEJvbGQlMjBJdGFsaWMub3RmP2FsdD1tZWRpYScsIHdlaWdodDogNzAwLCBzdHlsZTogJ2l0YWxpYycgfSxcbiAgICB7IHNyYzogJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9vdmVybGFwLWZvbnRzL2ZvbnRzL21pbGxpYXJkL1JlbmUlMjBCaWVkZXIlMjAlMjBNaWxsaWFyZCUyMEV4dHJhQm9sZC5vdGY/YWx0PW1lZGlhJywgd2VpZ2h0OiA4MDAsIHN0eWxlOiAnbm9ybWFsJyB9LFxuICAgIHsgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvbWlsbGlhcmQvUmVuZSUyMEJpZWRlciUyMCUyME1pbGxpYXJkJTIwRXh0cmFCb2xkJTIwSXRhbGljLm90Zj9hbHQ9bWVkaWEnLCB3ZWlnaHQ6IDgwMCwgc3R5bGU6ICdpdGFsaWMnIH0sXG4gICAgeyBzcmM6ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vb3ZlcmxhcC1mb250cy9mb250cy9taWxsaWFyZC9SZW5lJTIwQmllZGVyJTIwJTIwTWlsbGlhcmQlMjBCbGFjay5vdGY/YWx0PW1lZGlhJywgd2VpZ2h0OiA5MDAsIHN0eWxlOiAnbm9ybWFsJyB9LFxuICAgIHsgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvbWlsbGlhcmQvUmVuZSUyMEJpZWRlciUyMCUyME1pbGxpYXJkJTIwQmxhY2slMjBJdGFsaWMub3RmP2FsdD1tZWRpYScsIHdlaWdodDogOTAwLCBzdHlsZTogJ2l0YWxpYycgfVxuICBdLFxuXG4gICdBcmlhbCBCbGFjayc6IFt7IHNyYzogJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9vdmVybGFwLWZvbnRzL2ZvbnRzL0FyaWFsJTIwQmxhY2sudHRmP2FsdD1tZWRpYScsIHdlaWdodDogOTAwLCBzdHlsZTogJ25vcm1hbCcgfV0sXG4gIFxuICAvLyBTb2ZpYSBQcm8gZm9udCB2YXJpYXRpb25zXG4gICdTb2ZpYSBQcm8nOiBbXG4gICAgeyBzcmM6ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vb3ZlcmxhcC1mb250cy9mb250cy9zb2ZpYS1wcm8vU29maWElMjBQcm8lMjBMaWdodCUyMEF6Lm90Zj9hbHQ9bWVkaWEnLCB3ZWlnaHQ6IDMwMCwgc3R5bGU6ICdub3JtYWwnIH0sXG4gICAgeyBzcmM6ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vb3ZlcmxhcC1mb250cy9mb250cy9zb2ZpYS1wcm8vU29maWElMjBQcm8lMjBMaWdodCUyMEl0YWxpYyUyMEF6Lm90Zj9hbHQ9bWVkaWEnLCB3ZWlnaHQ6IDMwMCwgc3R5bGU6ICdpdGFsaWMnIH0sXG4gICAgeyBzcmM6ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vb3ZlcmxhcC1mb250cy9mb250cy9zb2ZpYS1wcm8vU29maWElMjBQcm8lMjBSZWd1bGFyJTIwQXoub3RmP2FsdD1tZWRpYScsIHdlaWdodDogNDAwLCBzdHlsZTogJ25vcm1hbCcgfSxcbiAgICB7IHNyYzogJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9vdmVybGFwLWZvbnRzL2ZvbnRzL3NvZmlhLXByby9Tb2ZpYSUyMFBybyUyMFJlZ3VsYXIlMjBJdGFsaWMlMjBBei5vdGY/YWx0PW1lZGlhJywgd2VpZ2h0OiA0MDAsIHN0eWxlOiAnaXRhbGljJyB9LFxuICAgIHsgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvc29maWEtcHJvL1NvZmlhJTIwUHJvJTIwTWVkaXVtJTIwQXoub3RmP2FsdD1tZWRpYScsIHdlaWdodDogNTAwLCBzdHlsZTogJ25vcm1hbCcgfSxcbiAgICB7IHNyYzogJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9vdmVybGFwLWZvbnRzL2ZvbnRzL3NvZmlhLXByby9Tb2ZpYSUyMFBybyUyME1lZGl1bSUyMEl0YWxpYyUyMEF6Lm90Zj9hbHQ9bWVkaWEnLCB3ZWlnaHQ6IDUwMCwgc3R5bGU6ICdpdGFsaWMnIH0sXG4gICAgeyBzcmM6ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vb3ZlcmxhcC1mb250cy9mb250cy9zb2ZpYS1wcm8vU29maWElMjBQcm8lMjBTZW1pJTIwQm9sZCUyMEF6Lm90Zj9hbHQ9bWVkaWEnLCB3ZWlnaHQ6IDYwMCwgc3R5bGU6ICdub3JtYWwnIH0sXG4gICAgeyBzcmM6ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vb3ZlcmxhcC1mb250cy9mb250cy9zb2ZpYS1wcm8vU29maWElMjBQcm8lMjBTZW1pJTIwQm9sZCUyMEl0YWxpYyUyMEF6Lm90Zj9hbHQ9bWVkaWEnLCB3ZWlnaHQ6IDYwMCwgc3R5bGU6ICdpdGFsaWMnIH0sXG4gICAgeyBzcmM6ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vb3ZlcmxhcC1mb250cy9mb250cy9zb2ZpYS1wcm8vU29maWElMjBQcm8lMjBCb2xkJTIwQXoub3RmP2FsdD1tZWRpYScsIHdlaWdodDogNzAwLCBzdHlsZTogJ25vcm1hbCcgfSxcbiAgICB7IHNyYzogJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9vdmVybGFwLWZvbnRzL2ZvbnRzL3NvZmlhLXByby9Tb2ZpYSUyMFBybyUyMEJvbGQlMjBJdGFsaWMlMjBBei5vdGY/YWx0PW1lZGlhJywgd2VpZ2h0OiA3MDAsIHN0eWxlOiAnaXRhbGljJyB9LFxuICAgIHsgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvc29maWEtcHJvL1NvZmlhJTIwUHJvJTIwQmxhY2slMjBBei5vdGY/YWx0PW1lZGlhJywgd2VpZ2h0OiA5MDAsIHN0eWxlOiAnbm9ybWFsJyB9LFxuICAgIHsgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvc29maWEtcHJvL1NvZmlhJTIwUHJvJTIwQmxhY2slMjBJdGFsaWMlMjBBei5vdGY/YWx0PW1lZGlhJywgd2VpZ2h0OiA5MDAsIHN0eWxlOiAnaXRhbGljJyB9LFxuICAgIHsgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvc29maWEtcHJvL1NvZmlhJTIwUHJvJTIwRXh0cmFMaWdodCUyMEF6Lm90Zj9hbHQ9bWVkaWEnLCB3ZWlnaHQ6IDIwMCwgc3R5bGU6ICdub3JtYWwnIH0sXG4gICAgeyBzcmM6ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vb3ZlcmxhcC1mb250cy9mb250cy9zb2ZpYS1wcm8vU29maWElMjBQcm8lMjBFeHRyYUxpZ2h0JTIwSXRhbGljJTIwQXoub3RmP2FsdD1tZWRpYScsIHdlaWdodDogMjAwLCBzdHlsZTogJ2l0YWxpYycgfSxcbiAgICB7IHNyYzogJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9vdmVybGFwLWZvbnRzL2ZvbnRzL3NvZmlhLXByby9Tb2ZpYSUyMFBybyUyMFVsdHJhTGlnaHQlMjBBei5vdGY/YWx0PW1lZGlhJywgd2VpZ2h0OiAxMDAsIHN0eWxlOiAnbm9ybWFsJyB9LFxuICAgIHsgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvc29maWEtcHJvL1NvZmlhJTIwUHJvJTIwVWx0cmFMaWdodCUyMEl0YWxpYyUyMEF6Lm90Zj9hbHQ9bWVkaWEnLCB3ZWlnaHQ6IDEwMCwgc3R5bGU6ICdpdGFsaWMnIH1cbiAgXVxufTtcblxuZXhwb3J0IGNvbnN0IGxvYWREb2N1bWVudEZvbnRzID0gYXN5bmMgKGZvbnRGYW1pbHkpID0+IHsgIFxuICBpZiAoZm9udEZhbWlseSA9PT0gJ0FyaWFsJykgeyBcbiAgICByZXR1cm47XG4gIH1cbiAgZWxzZSBpZiAoIWZvbnRGYW1pbHkgfHwgdHlwZW9mIGRvY3VtZW50ID09PSAndW5kZWZpbmVkJykge1xuICAgIGNvbnNvbGUud2FybignRm9udCBmYW1pbHkgaXMgbm90IHByb3ZpZGVkIG9yIGRvY3VtZW50IGlzIHVuZGVmaW5lZC4nKTtcbiAgICByZXR1cm47XG4gIH0gXG5cbiAgLy8gQ2xlYW4gdGhlIGZvbnQgZmFtaWx5IG5hbWUgKHJlbW92ZSBxdW90ZXMgYW5kIGZhbGxiYWNrcylcbiAgY29uc3QgY2xlYW5Gb250RmFtaWx5ID0gZm9udEZhbWlseS5yZXBsYWNlKC9bJ1wiXS9nLCAnJykuc3BsaXQoJywnKVswXS50cmltKCk7XG4gIC8vIGNvbnNvbGUubG9nKGBDbGVhbmVkIGZvbnQgZmFtaWx5IG5hbWU6ICR7Y2xlYW5Gb250RmFtaWx5fWApO1xuICBcbiAgLy8gR2V0IGZvbnQgdmFyaWF0aW9ucyBmb3IgdGhpcyBmYW1pbHlcbiAgY29uc3QgZm9udFZhcmlhdGlvbnMgPSBGT05UX01BUFtjbGVhbkZvbnRGYW1pbHldO1xuICBpZiAoIWZvbnRWYXJpYXRpb25zKSB7XG4gICAgY29uc29sZS53YXJuKGBGb250IGZhbWlseSBcIiR7Y2xlYW5Gb250RmFtaWx5fVwiIG5vdCBmb3VuZCBpbiBmb250IG1hcGApO1xuICAgIHJldHVybjtcbiAgfVxuICBcbiAgLy8gY29uc29sZS5sb2coYEZvdW5kIGZvbnQgdmFyaWF0aW9ucyBmb3IgXCIke2NsZWFuRm9udEZhbWlseX1cIjpgLCBmb250VmFyaWF0aW9ucyk7XG5cbiAgdHJ5IHtcbiAgICAvLyBMb2FkIGFsbCB2YXJpYXRpb25zIG9mIHRoZSBmb250IGZhbWlseVxuICAgIGNvbnN0IGxvYWRQcm9taXNlcyA9IGZvbnRWYXJpYXRpb25zLm1hcChhc3luYyAoeyBzcmMsIHdlaWdodCwgc3R5bGUgfSkgPT4ge1xuICAgICAgY29uc3QgZm9udCA9IG5ldyBGb250RmFjZShjbGVhbkZvbnRGYW1pbHksIGB1cmwoJHtzcmN9KWAsIHsgd2VpZ2h0LCBzdHlsZSB9KTtcbiAgICAgIGNvbnN0IGxvYWRlZEZvbnQgPSBhd2FpdCBmb250LmxvYWQoKTtcbiAgICAgIGRvY3VtZW50LmZvbnRzLmFkZChsb2FkZWRGb250KTtcbiAgICAgIHJldHVybiBsb2FkZWRGb250O1xuICAgIH0pO1xuXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwobG9hZFByb21pc2VzKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBjb25zb2xlLmVycm9yKGBFcnJvciBsb2FkaW5nIGZvbnQgZmFtaWx5IFwiJHtjbGVhbkZvbnRGYW1pbHl9XCI6YCwgZXJyb3IpO1xuICB9XG59OyIsbnVsbCxudWxsLCJpbXBvcnQgeyB1c2VNZW1vIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlQ3VycmVudEZyYW1lIH0gZnJvbSAncmVtb3Rpb24nO1xuXG5leHBvcnQgY29uc3QgdXNlQWRqdXN0ZWRQb3NpdGlvbiA9ICh5LCBmYWNlRGF0YSkgPT4ge1xuICBjb25zdCBjdXJyZW50RnJhbWUgPSB1c2VDdXJyZW50RnJhbWUoKTtcblxuICAvLyBNZW1vaXplIGZhY2UgZXZlbnQgbG9va3VwXG4gIGNvbnN0IGN1cnJlbnRGYWNlRXZlbnQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoIWZhY2VEYXRhPy5ldmVudHM/Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHsgbnVtUGVvcGxlOiAyIH07XG4gICAgfVxuICAgIHJldHVybiBmYWNlRGF0YS5ldmVudHMuZmluZExhc3QoXG4gICAgICAoZXZlbnQpID0+IGV2ZW50LmZyYW1lIDw9IGN1cnJlbnRGcmFtZVxuICAgICkgfHwgeyBudW1QZW9wbGU6IDIgfTtcbiAgfSwgW2N1cnJlbnRGcmFtZSwgZmFjZURhdGE/LmV2ZW50c10pO1xuICBcbiAgLy8gQWRqdXN0IFkgcG9zaXRpb24gb25seSBpZiBmYWNlIGRldGVjdGlvbiBkYXRhIGlzIGF2YWlsYWJsZVxuICBjb25zdCBhZGp1c3RlZFkgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoY3VycmVudEZhY2VFdmVudC5udW1QZW9wbGUgPT09IDIpIHtcbiAgICAgIHJldHVybiB5O1xuICAgIH1cbiAgICBpZiAoeSA9PT0gOTYwKSB7XG4gICAgICByZXR1cm4geSAqIDIgLSAzMDA7XG4gICAgfVxuICAgIHJldHVybiB5O1xuICB9LCBbeSwgY3VycmVudEZhY2VFdmVudC5udW1QZW9wbGVdKTtcblxuICByZXR1cm4geyBjdXJyZW50RmFjZUV2ZW50LCBhZGp1c3RlZFkgfTtcbn07ICIsImltcG9ydCB7IHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5cbmV4cG9ydCBjb25zdCB1c2VBZGp1c3RlZFBocmFzZXMgPSAoc3VidGl0bGVzRGF0YSwgbWF4Q2hhcnNQZXJMaW5lLCBmcHMsIHNlZ21lbnREYXRhID0gW10pID0+IHtcbiAgcmV0dXJuIHVzZU1lbW8oKCkgPT4ge1xuICAgIC8vIElmIG5vIHNlZ21lbnQgZGF0YSwgcmV0dXJuIGVtcHR5IGFycmF5XG4gICAgaWYgKCFzZWdtZW50RGF0YSB8fCBzZWdtZW50RGF0YS5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBjb25zdCBnZXRNaXNzaW5nV29yZFBocmFzZXNJZkV4aXN0ID0gKHN0YXJ0VGltZSwgZW5kVGltZSkgPT4ge1xuICAgICAgLy8gRmluZCB3b3JkcyB0aGF0IGZhbGwgaW4gdGhlIGdhcFxuICAgICAgY29uc3QgZ2FwV29yZHMgPSBzdWJ0aXRsZXNEYXRhLmZpbHRlcih3b3JkID0+IFxuICAgICAgICB3b3JkLnN0YXJ0ID49IHN0YXJ0VGltZSAmJiB3b3JkLmVuZCA8PSBlbmRUaW1lXG4gICAgICApO1xuXG4gICAgICBpZiAoZ2FwV29yZHMubGVuZ3RoID09PSAwKSByZXR1cm4gW107XG5cbiAgICAgIC8vIENyZWF0ZSBwaHJhc2VzIGZyb20gZ2FwIHdvcmRzIHVzaW5nIHNhbWUgbG9naWMgYXMgc2VnbWVudCBwaHJhc2VzXG4gICAgICBjb25zdCBnYXBQaHJhc2VzID0gW107XG4gICAgICBsZXQgY3VycmVudFBocmFzZSA9IHtcbiAgICAgICAgdGV4dDogXCJcIixcbiAgICAgICAgd29yZHM6IFtdLFxuICAgICAgICBzdGFydDogbnVsbCxcbiAgICAgICAgZW5kOiBudWxsLFxuICAgICAgICBzZWdtZW50SW5kZXg6IC0xLCAgLy8gU3BlY2lhbCBpbmRleCBmb3IgZ2FwIHBocmFzZXNcbiAgICAgICAgZHVyYXRpb25JbkZyYW1lczogMFxuICAgICAgfTtcblxuICAgICAgZ2FwV29yZHMuZm9yRWFjaCgod29yZCwgd29yZEluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IHdvcmRXaXRoU3BhY2UgPSB3b3JkSW5kZXggPT09IDAgPyB3b3JkLndvcmQgOiBgICR7d29yZC53b3JkfWA7XG4gICAgICAgIGNvbnN0IG5ld0xlbmd0aCA9IGN1cnJlbnRQaHJhc2UudGV4dC5sZW5ndGggKyB3b3JkV2l0aFNwYWNlLmxlbmd0aDtcblxuICAgICAgICBpZiAobmV3TGVuZ3RoIDw9IG1heENoYXJzUGVyTGluZSkge1xuICAgICAgICAgIC8vIEFkZCB0byBjdXJyZW50IHBocmFzZVxuICAgICAgICAgIGN1cnJlbnRQaHJhc2UudGV4dCArPSB3b3JkV2l0aFNwYWNlO1xuICAgICAgICAgIGN1cnJlbnRQaHJhc2Uud29yZHMucHVzaCh3b3JkKTtcbiAgICAgICAgICBjdXJyZW50UGhyYXNlLnN0YXJ0ID0gY3VycmVudFBocmFzZS5zdGFydCA9PT0gbnVsbCA/IHdvcmQuc3RhcnQgOiBjdXJyZW50UGhyYXNlLnN0YXJ0O1xuICAgICAgICAgIGN1cnJlbnRQaHJhc2UuZW5kID0gd29yZC5lbmQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gRmluYWxpemUgY3VycmVudCBwaHJhc2VcbiAgICAgICAgICBpZiAoY3VycmVudFBocmFzZS53b3Jkcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBnYXBQaHJhc2VzLnB1c2goY3VycmVudFBocmFzZSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gU3RhcnQgbmV3IHBocmFzZSB3aXRoIGN1cnJlbnQgd29yZFxuICAgICAgICAgIGN1cnJlbnRQaHJhc2UgPSB7XG4gICAgICAgICAgICB0ZXh0OiB3b3JkLndvcmQsXG4gICAgICAgICAgICB3b3JkczogW3dvcmRdLFxuICAgICAgICAgICAgc3RhcnQ6IHdvcmQuc3RhcnQsXG4gICAgICAgICAgICBlbmQ6IHdvcmQuZW5kLFxuICAgICAgICAgICAgc2VnbWVudEluZGV4OiAtMVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICAvLyBBZGQgdGhlIGxhc3QgcGhyYXNlIGlmIGl0IGhhcyB3b3Jkc1xuICAgICAgaWYgKGN1cnJlbnRQaHJhc2Uud29yZHMubGVuZ3RoID4gMCkge1xuICAgICAgICBnYXBQaHJhc2VzLnB1c2goY3VycmVudFBocmFzZSk7XG4gICAgICB9XG5cbiAgICAgIC8vIFByb2Nlc3MgdGltaW5nIGZvciBnYXAgcGhyYXNlc1xuICAgICAgY29uc3QgcHJvY2Vzc2VkR2FwUGhyYXNlcyA9IGdhcFBocmFzZXMubWFwKChwaHJhc2UsIHBocmFzZUluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IHN0YXJ0RnJhbWUgPSBNYXRoLmZsb29yKHBocmFzZS5zdGFydCAqIGZwcyk7XG4gICAgICAgIGxldCBlbmRGcmFtZTtcblxuICAgICAgICBpZiAocGhyYXNlSW5kZXggPCBnYXBQaHJhc2VzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICBjb25zdCBuZXh0UGhyYXNlID0gZ2FwUGhyYXNlc1twaHJhc2VJbmRleCArIDFdO1xuICAgICAgICAgIGNvbnN0IHRpbWVEaWZmID0gbmV4dFBocmFzZS5zdGFydCAtIHBocmFzZS5lbmQ7XG4gICAgICAgICAgZW5kRnJhbWUgPSB0aW1lRGlmZiA+IDAuMyA/IFxuICAgICAgICAgICAgTWF0aC5mbG9vcihwaHJhc2UuZW5kICogZnBzKSA6IFxuICAgICAgICAgICAgTWF0aC5mbG9vcihuZXh0UGhyYXNlLnN0YXJ0ICogZnBzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBlbmRGcmFtZSA9IE1hdGguZmxvb3IocGhyYXNlLmVuZCAqIGZwcyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnBocmFzZSxcbiAgICAgICAgICBzdGFydEZyYW1lLFxuICAgICAgICAgIGVuZEZyYW1lLFxuICAgICAgICAgIGR1cmF0aW9uSW5GcmFtZXM6IGVuZEZyYW1lIC0gc3RhcnRGcmFtZSArIDFcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gcHJvY2Vzc2VkR2FwUGhyYXNlcztcbiAgICB9O1xuXG4gICAgY29uc3QgbWFzdGVyUGhyYXNlcyA9IFtdO1xuXG4gICAgLy8gQ2hlY2sgZm9yIHdvcmRzIGJlZm9yZSB0aGUgZmlyc3Qgc2VnbWVudFxuICAgIGlmIChzZWdtZW50RGF0YS5sZW5ndGggPiAwICYmIHN1YnRpdGxlc0RhdGEubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZmlyc3RTZWdtZW50U3RhcnQgPSBzZWdtZW50RGF0YVswXS5zdGFydDtcbiAgICAgIGNvbnN0IGZpcnN0V29yZFN0YXJ0ID0gMDsgLy8gU3RhcnQgZnJvbSB0aGUgYmVnaW5uaW5nXG4gICAgICBjb25zdCBwcmVTZWdtZW50UGhyYXNlcyA9IGdldE1pc3NpbmdXb3JkUGhyYXNlc0lmRXhpc3QoZmlyc3RXb3JkU3RhcnQsIGZpcnN0U2VnbWVudFN0YXJ0KTtcbiAgICAgIGlmIChwcmVTZWdtZW50UGhyYXNlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIG1hc3RlclBocmFzZXMucHVzaCguLi5wcmVTZWdtZW50UGhyYXNlcyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gUHJvY2VzcyBlYWNoIHNlZ21lbnQgYW5kIGdhcHMgYmV0d2VlbiBzZWdtZW50c1xuICAgIHNlZ21lbnREYXRhLmZvckVhY2goKHNlZ21lbnQsIHNlZ21lbnRJbmRleCkgPT4ge1xuICAgICAgLy8gMS4gR2V0IHdvcmRzIGZvciB0aGlzIHNlZ21lbnRcbiAgICAgIGNvbnN0IHNlZ21lbnRXb3JkcyA9IHN1YnRpdGxlc0RhdGEuZmlsdGVyKHdvcmQgPT4gd29yZC5zZWdtZW50SWQgPT09IHNlZ21lbnRJbmRleCk7XG4gICAgICBcbiAgICAgIC8vIFByb2Nlc3Mgc2VnbWVudCBwaHJhc2VzXG4gICAgICBpZiAoc2VnbWVudFdvcmRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgLy8gMi4gQ3JlYXRlIHBocmFzZXMgZm9yIHRoaXMgc2VnbWVudFxuICAgICAgICBjb25zdCBjdXJyZW50U2VnbWVudFBocmFzZXMgPSBbXTtcbiAgICAgICAgbGV0IGN1cnJlbnRQaHJhc2UgPSB7XG4gICAgICAgICAgdGV4dDogXCJcIixcbiAgICAgICAgICB3b3JkczogW10sXG4gICAgICAgICAgc3RhcnQ6IG51bGwsXG4gICAgICAgICAgZW5kOiBudWxsLFxuICAgICAgICAgIHNlZ21lbnRJbmRleFxuICAgICAgICB9O1xuXG4gICAgICAgIHNlZ21lbnRXb3Jkcy5mb3JFYWNoKCh3b3JkLCB3b3JkSW5kZXgpID0+IHtcbiAgICAgICAgICBjb25zdCB3b3JkV2l0aFNwYWNlID0gd29yZEluZGV4ID09PSAwID8gd29yZC53b3JkIDogYCAke3dvcmQud29yZH1gO1xuICAgICAgICAgIGNvbnN0IG5ld0xlbmd0aCA9IGN1cnJlbnRQaHJhc2UudGV4dC5sZW5ndGggKyB3b3JkV2l0aFNwYWNlLmxlbmd0aDtcblxuICAgICAgICAgIGlmIChuZXdMZW5ndGggPD0gbWF4Q2hhcnNQZXJMaW5lKSB7XG4gICAgICAgICAgICAvLyBBZGQgdG8gY3VycmVudCBwaHJhc2VcbiAgICAgICAgICAgIGN1cnJlbnRQaHJhc2UudGV4dCArPSB3b3JkV2l0aFNwYWNlO1xuICAgICAgICAgICAgY3VycmVudFBocmFzZS53b3Jkcy5wdXNoKHdvcmQpO1xuICAgICAgICAgICAgY3VycmVudFBocmFzZS5zdGFydCA9IGN1cnJlbnRQaHJhc2Uuc3RhcnQgPT09IG51bGwgPyB3b3JkLnN0YXJ0IDogY3VycmVudFBocmFzZS5zdGFydDtcbiAgICAgICAgICAgIGN1cnJlbnRQaHJhc2UuZW5kID0gd29yZC5lbmQ7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIEZpbmFsaXplIGN1cnJlbnQgcGhyYXNlXG4gICAgICAgICAgICBpZiAoY3VycmVudFBocmFzZS53b3Jkcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIGN1cnJlbnRTZWdtZW50UGhyYXNlcy5wdXNoKGN1cnJlbnRQaHJhc2UpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBTdGFydCBuZXcgcGhyYXNlIHdpdGggY3VycmVudCB3b3JkXG4gICAgICAgICAgICBjdXJyZW50UGhyYXNlID0ge1xuICAgICAgICAgICAgICB0ZXh0OiB3b3JkLndvcmQsXG4gICAgICAgICAgICAgIHdvcmRzOiBbd29yZF0sXG4gICAgICAgICAgICAgIHN0YXJ0OiB3b3JkLnN0YXJ0LFxuICAgICAgICAgICAgICBlbmQ6IHdvcmQuZW5kLFxuICAgICAgICAgICAgICBzZWdtZW50SW5kZXhcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBBZGQgdGhlIGxhc3QgcGhyYXNlIGlmIGl0IGhhcyB3b3Jkc1xuICAgICAgICBpZiAoY3VycmVudFBocmFzZS53b3Jkcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgY3VycmVudFNlZ21lbnRQaHJhc2VzLnB1c2goY3VycmVudFBocmFzZSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyAzLiBQcm9jZXNzIHRpbWluZyBmb3IgcGhyYXNlc1xuICAgICAgICBjb25zdCBwcm9jZXNzZWRQaHJhc2VzID0gY3VycmVudFNlZ21lbnRQaHJhc2VzLm1hcCgocGhyYXNlLCBwaHJhc2VJbmRleCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHN0YXJ0RnJhbWUgPSBNYXRoLmZsb29yKHBocmFzZS5zdGFydCAqIGZwcyk7XG4gICAgICAgICAgbGV0IGVuZEZyYW1lO1xuXG4gICAgICAgICAgLy8gQ2FsY3VsYXRlIGVuZCBmcmFtZSBiYXNlZCBvbiBuZXh0IHBocmFzZSBvciBzZWdtZW50IGVuZFxuICAgICAgICAgIGlmIChwaHJhc2VJbmRleCA8IGN1cnJlbnRTZWdtZW50UGhyYXNlcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICBjb25zdCBuZXh0UGhyYXNlID0gY3VycmVudFNlZ21lbnRQaHJhc2VzW3BocmFzZUluZGV4ICsgMV07XG4gICAgICAgICAgICBjb25zdCB0aW1lRGlmZiA9IG5leHRQaHJhc2Uuc3RhcnQgLSBwaHJhc2UuZW5kO1xuICAgICAgICAgICAgZW5kRnJhbWUgPSB0aW1lRGlmZiA+IDAuMyA/IFxuICAgICAgICAgICAgICBNYXRoLmZsb29yKHBocmFzZS5lbmQgKiBmcHMpIDogXG4gICAgICAgICAgICAgIE1hdGguZmxvb3IobmV4dFBocmFzZS5zdGFydCAqIGZwcyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGVuZEZyYW1lID0gTWF0aC5mbG9vcihwaHJhc2UuZW5kICogZnBzKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBFbnN1cmUgcGhyYXNlIGRvZXNuJ3QgZXh0ZW5kIGJleW9uZCBzZWdtZW50IGJvdW5kYXJpZXNcbiAgICAgICAgICBlbmRGcmFtZSA9IE1hdGgubWluKGVuZEZyYW1lLCBNYXRoLmZsb29yKHNlZ21lbnQuZW5kICogZnBzKSk7XG5cbiAgICAgICAgICBjb25zdCBwcm9jZXNzZWRQaHJhc2UgPSB7XG4gICAgICAgICAgICAuLi5waHJhc2UsXG4gICAgICAgICAgICBzdGFydEZyYW1lLFxuICAgICAgICAgICAgZW5kRnJhbWUsXG4gICAgICAgICAgICBkdXJhdGlvbkluRnJhbWVzOiBlbmRGcmFtZSAtIHN0YXJ0RnJhbWUgKyAxXG4gICAgICAgICAgfTtcbiAgICAgICAgICByZXR1cm4gcHJvY2Vzc2VkUGhyYXNlO1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyA0LiBBZGQgdG8gbWFzdGVyIGFycmF5XG4gICAgICAgIG1hc3RlclBocmFzZXMucHVzaCguLi5wcm9jZXNzZWRQaHJhc2VzKTtcbiAgICAgIH1cblxuICAgICAgLy8gQ2hlY2sgZm9yIGdhcCBhZnRlciB0aGlzIHNlZ21lbnRcbiAgICAgIGlmIChzZWdtZW50SW5kZXggPCBzZWdtZW50RGF0YS5sZW5ndGggLSAxKSB7XG4gICAgICAgIGNvbnN0IG5leHRTZWdtZW50ID0gc2VnbWVudERhdGFbc2VnbWVudEluZGV4ICsgMV07XG4gICAgICAgIGNvbnN0IGdhcFBocmFzZXMgPSBnZXRNaXNzaW5nV29yZFBocmFzZXNJZkV4aXN0KHNlZ21lbnQuZW5kLCBuZXh0U2VnbWVudC5zdGFydCk7XG4gICAgICAgIGlmIChnYXBQaHJhc2VzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBtYXN0ZXJQaHJhc2VzLnB1c2goLi4uZ2FwUGhyYXNlcyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIFNvcnQgZmluYWwgcGhyYXNlcyBieSBzdGFydCB0aW1lXG4gICAgbWFzdGVyUGhyYXNlcy5zb3J0KChhLCBiKSA9PiBhLnN0YXJ0IC0gYi5zdGFydCk7XG4gICAgXG4gICAgcmV0dXJuIG1hc3RlclBocmFzZXM7XG4gIH0sIFtzdWJ0aXRsZXNEYXRhLCBtYXhDaGFyc1BlckxpbmUsIGZwcywgc2VnbWVudERhdGFdKTtcbn07ICJdLCJuYW1lcyI6WyJlc3RpbWF0ZVRleHRXaWR0aCIsInRleHQiLCJmb250U2l6ZSIsImZvbnRGYW1pbHkiLCJjYW52YXMiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJjb250ZXh0IiwiZ2V0Q29udGV4dCIsImZvbnQiLCJjb25jYXQiLCJtZWFzdXJlVGV4dCIsIndpZHRoIiwiZ2VuZXJhdGVPdXRsaW5lU2hhZG93IiwiY2FjaGUiLCJNYXAiLCJjb2xvciIsIm91dGxpbmVTdHlsZSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsImtleSIsImhhcyIsImdldCIsInNoYWRvd3MiLCJwYXJzZWRXaWR0aCIsInBhcnNlSW50IiwicHVzaCIsImhhbGZXaWR0aCIsIk1hdGgiLCJyb3VuZCIsImkiLCJhbmdsZSIsIlBJIiwieCIsImNvcyIsInkiLCJzaW4iLCJyZXN1bHQiLCJqb2luIiwic2V0IiwiU3VidGl0bGVUZXh0IiwibWVtbyIsIl9yZWYiLCJzdHlsZSIsImFuaW1hdGlvblN0eWxlIiwiZnJhbWUiLCJzdGFydEZyYW1lIiwicmFuZG9tQ29sb3JzIiwid29yZHMiLCJmcHMiLCJoaWdobGlnaHRXb3Jkc0NvbG9yIiwicmVsYXRpdmVGcmFtZSIsInNjYWxlIiwidXNlTWVtbyIsInNwcmluZyIsImZyb20iLCJ0byIsImNvbmZpZyIsImRhbXBpbmciLCJzdGlmZm5lc3MiLCJzcHJpbmdWYWx1ZSIsIm1hc3MiLCJ0cmFuc2xhdGVZIiwidHJhbnNsYXRlVmFsdWUiLCJhZGp1c3RlZEZvbnRTaXplIiwibWF4TGluZVdpZHRoIiwiYmFzZUZvbnRTaXplIiwidGV4dFdpZHRoIiwic2NhbGVGYWN0b3IiLCJmbG9vciIsImFuaW1hdGVkU3R5bGUiLCJiYXNlUGFkZGluZyIsImJhY2tncm91bmRQYWRkaW5nIiwic2hhZG93SW50ZW5zaXR5Iiwic2hhZG93Q29sb3IiLCJzaGFkb3dCbHVyIiwic2hhZG93T2Zmc2V0WCIsInNoYWRvd09mZnNldFkiLCJ0ZXh0U2hhZG93IiwiaGV4VG9SZ2JhIiwiaGV4Iiwib3BhY2l0eSIsInNob3J0aGFuZFJlZ2V4IiwicmVwbGFjZSIsIm0iLCJyIiwiZyIsImIiLCJleGVjIiwiYmFja2dyb3VuZENvbG9yIiwiYmFja2dyb3VuZE9wYWNpdHkiLCJwYXJzZUZsb2F0IiwidHJpbSIsImJhY2tncm91bmQiLCJoYXNCYWNrZ3JvdW5kIiwiaGFzU2hhZG93IiwiYm9yZGVyUmFkaXVzIiwiYmFja2dyb3VuZEJvcmRlclJhZGl1cyIsImlzV3JhcHBlZCIsImJhY2tncm91bmRGaWxsU3R5bGUiLCJwYWRkaW5nVmFsdWUiLCJwYWRkaW5nIiwiZGlzcGxheSIsImJhc2VTdHlsZSIsIl9vYmplY3RTcHJlYWQiLCJvdmVyZmxvdyIsImJveFNoYWRvdyIsInRyYW5zZm9ybSIsIndyYXBwZXJTdHlsZSIsInBvc2l0aW9uIiwidmVydGljYWxTdHJldGNoIiwid2hpdGVTcGFjZSIsImFsaWduSXRlbXMiLCJ3aWxsQ2hhbmdlIiwibGVmdCIsInRvcCIsInJpZ2h0IiwiYm90dG9tIiwib3V0bGluZUNvbG9yIiwib3V0bGluZVdpZHRoIiwiV2Via2l0VGV4dEZpbGxDb2xvciIsInpJbmRleCIsIm1haW5UZXh0U3R5bGUiLCJXZWJraXRUZXh0U3Ryb2tlIiwidGV4dFdvcmRzIiwic3BsaXQiLCJjdXJyZW50V29yZFRpbWUiLCJwaHJhc2VBbXBsaWZpZWRTdHlsZSIsIkFycmF5IiwiaXNBcnJheSIsImFtcGxpZmllZENvbG9ycyIsImZpcnN0V29yZCIsIndvcmQiLCJncmFkaWVudEluZGV4IiwicmFuZG9tIiwiZ3JhZGllbnQiLCJjb2xvcnMiLCJiYWNrZ3JvdW5kQ2xpcCIsIldlYmtpdEJhY2tncm91bmRDbGlwIiwiY29uc29sZSIsImxvZyIsIl90eXBlb2YiLCJhbXBsaWZpZWRDb2xvciIsInR5cGUiLCJyYW5kb21Db2xvckRhdGEiLCJlbmFibGVkIiwic2hvdWxkQ29sb3IiLCJwY3RBcHBsaWVkIiwiX3JlZjIiLCJyYW5kb21Xb3JkQ291bnRSYW5nZSIsIl9yZWYzIiwiX3NsaWNlZFRvQXJyYXkiLCJtaW5Xb3JkcyIsIm1heFdvcmRzIiwicmFuZ2UiLCJyYW5kb21Xb3JkQ291bnQiLCJtYXhTdGFydEluZGV4IiwibWF4Iiwic3RhcnRJbmRleCIsInJhbmRvbUNvbG9yT2JqIiwicGhyYXNlU3R5bGUiLCJ3b3JkQ29udGVudCIsIm1hcCIsImluZGV4IiwiaGlnaGxpZ2h0ZWRNYXRjaCIsIm1hdGNoIiwiaXNIaWdobGlnaHRlZCIsImRpc3BsYXlXb3JkIiwic2hvdWxkQ29sb3JUaGlzV29yZCIsIndvcmRUaW1pbmciLCJoYXNCZWVuU3Bva2VuIiwiZW5kIiwiaXNDdXJyZW50bHlTcG9rZW4iLCJzdGFydCIsInRleHRIaWdobGlnaHRQZXJzaXN0cyIsInNob3VsZEhpZ2hsaWdodCIsImFtcGxpZnlTcG9rZW5Xb3JkcyIsIndvcmRTdHlsZSIsImFtcGxpZmllZE9wYWNpdHkiLCJ1bkFtcGxpZmllZE9wYWNpdHkiLCJjb250YWluZXJTdHlsZSIsIm1hcmdpblJpZ2h0IiwiUmVhY3QiLCJjdXJyZW50V29yZEJsb2NrIiwiY29udGVudCIsImN1cnJlbnRXb3JkQmxvY2tQYWRkaW5nIiwiaGVpZ2h0IiwiY3VycmVudFdvcmRCbG9ja0JhY2tncm91bmRDb2xvciIsImN1cnJlbnRXb3JkQmxvY2tPcGFjaXR5IiwiY3VycmVudFdvcmRCbG9ja0JvcmRlclJhZGl1cyIsInBvaW50ZXJFdmVudHMiLCJib3hTaXppbmciLCJwcmV2UHJvcHMiLCJuZXh0UHJvcHMiLCJlc3NlbnRpYWxQcm9wcyIsImhhc0Vzc2VudGlhbFByb3BzQ2hhbmdlZCIsInNvbWUiLCJwcm9wIiwiSlNPTiIsInN0cmluZ2lmeSIsImZpbmRQaHJhc2VzSW5SYW5nZSIsInRpbWUiLCJwaHJhc2VzIiwibWlkIiwicGhyYXNlIiwiaGV4VG9SZ2IiLCJzbGljZSIsInVzZVRleHRTdHlsZSIsInByZXNldCIsImFkanVzdGVkWSIsInZpZGVvV2lkdGgiLCJkcm9wU2hhZG93Iiwic2hhZG93RW5hYmxlZCIsInBhZGRpbmdYIiwiYmFja2dyb3VuZFBhZGRpbmdYIiwicGFkZGluZ1kiLCJiYWNrZ3JvdW5kUGFkZGluZ1kiLCJmb250V2VpZ2h0IiwiZm9udENvbG9yIiwidGV4dFRyYW5zZm9ybSIsInRleHRDYXNlIiwiZm9udFN0eWxlIiwiaXNJdGFsaWMiLCJ0ZXh0QWxpZ24iLCJsZXR0ZXJTcGFjaW5nIiwidGV4dFNwYWNpbmciLCJ0cmFuc2Zvcm1PcmlnaW4iLCJtYXhXaWR0aCIsImZpbHRlciIsImFtcGxpZnlPcGFjaXR5VHJhbnNpdGlvbkR1cmF0aW9uIiwiRk9OVF9NQVAiLCJzcmMiLCJ3ZWlnaHQiLCJsb2FkRG9jdW1lbnRGb250cyIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlMiIsImNsZWFuRm9udEZhbWlseSIsImZvbnRWYXJpYXRpb25zIiwibG9hZFByb21pc2VzIiwid3JhcCIsIl9jYWxsZWUyJCIsIl9jb250ZXh0MiIsInByZXYiLCJuZXh0IiwiYWJydXB0Iiwid2FybiIsIl9jYWxsZWUiLCJsb2FkZWRGb250IiwiX2NhbGxlZSQiLCJfY29udGV4dCIsIkZvbnRGYWNlIiwibG9hZCIsInNlbnQiLCJmb250cyIsImFkZCIsInN0b3AiLCJfeDIiLCJhcHBseSIsIlByb21pc2UiLCJhbGwiLCJ0MCIsImVycm9yIiwiX3giLCJhZGRQaXhlbFVuaXQiLCJ2YWx1ZSIsImVuZHNXaXRoIiwiU3VidGl0bGVzQ29tcG9zaXRpb24iLCJfYSIsInN0eWxlQ29uZmlnIiwiY3VycmVudEZyYW1lIiwiY3VycmVudFRpbWUiLCJ1c2VFZmZlY3QiLCJjdXJyZW50UGhyYXNlcyIsIl9qc3giLCJfX2Fzc2lnbiIsImNoaWxkcmVuIiwicHJvcHMiLCJTdWJ0aXRsZXMiLCJkZXZNb2RlIiwiUGxheWVyIiwiY29tcG9uZW50IiwiaW5wdXRQcm9wcyIsImR1cmF0aW9uSW5GcmFtZXMiLCJjb21wb3NpdGlvbldpZHRoIiwiY29tcG9zaXRpb25IZWlnaHQiLCJjb250cm9scyIsImF1dG9QbGF5IiwibG9vcCIsInVzZVN0eWxlQ29uZmlnIiwic3VidGl0bGVTdHlsZSIsInRleHRTdHlsZSIsIm5hbWUiLCJjYXB0aW9uUG9zaXRpb24iLCJ1c2VBZGp1c3RlZFBvc2l0aW9uIiwiZmFjZURhdGEiLCJ1c2VDdXJyZW50RnJhbWUiLCJjdXJyZW50RmFjZUV2ZW50IiwiX2ZhY2VEYXRhJGV2ZW50cyIsImV2ZW50cyIsIm51bVBlb3BsZSIsImZpbmRMYXN0IiwiZXZlbnQiLCJ1c2VBZGp1c3RlZFBocmFzZXMiLCJzdWJ0aXRsZXNEYXRhIiwibWF4Q2hhcnNQZXJMaW5lIiwic2VnbWVudERhdGEiLCJnZXRNaXNzaW5nV29yZFBocmFzZXNJZkV4aXN0Iiwic3RhcnRUaW1lIiwiZW5kVGltZSIsImdhcFdvcmRzIiwiZ2FwUGhyYXNlcyIsImN1cnJlbnRQaHJhc2UiLCJzZWdtZW50SW5kZXgiLCJmb3JFYWNoIiwid29yZEluZGV4Iiwid29yZFdpdGhTcGFjZSIsIm5ld0xlbmd0aCIsInByb2Nlc3NlZEdhcFBocmFzZXMiLCJwaHJhc2VJbmRleCIsImVuZEZyYW1lIiwibmV4dFBocmFzZSIsInRpbWVEaWZmIiwibWFzdGVyUGhyYXNlcyIsImZpcnN0U2VnbWVudFN0YXJ0IiwiZmlyc3RXb3JkU3RhcnQiLCJwcmVTZWdtZW50UGhyYXNlcyIsIl90b0NvbnN1bWFibGVBcnJheSIsInNlZ21lbnQiLCJzZWdtZW50V29yZHMiLCJzZWdtZW50SWQiLCJjdXJyZW50U2VnbWVudFBocmFzZXMiLCJwcm9jZXNzZWRQaHJhc2VzIiwibWluIiwicHJvY2Vzc2VkUGhyYXNlIiwibmV4dFNlZ21lbnQiLCJzb3J0IiwiYSJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBZUE7QUFDTyxJQUFJLFFBQVEsR0FBRyxXQUFXO0FBQ2pDLElBQUksUUFBUSxHQUFHLE1BQU0sQ0FBQyxNQUFNLElBQUksU0FBUyxRQUFRLENBQUMsQ0FBQyxFQUFFO0FBQ3JELFFBQVEsS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDN0QsWUFBWSxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdCLFlB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QWpCLE1BQUEsQ0FBSWtCLFNBQVMsRUFBQWxCLEtBQUFBLENBQUFBLENBQUFBLE1BQUEsQ0FBTWUsV0FBVyxXQUFBZixNQUFBLENBQVFNLEtBQUssQ0FBRSxDQUFDLENBQUM7QUFDM0RRLE1BQUFBLE9BQU8sQ0FBQ0csSUFBSSxDQUFBLEdBQUEsQ0FBQWpCLE1BQUEsQ0FBS2tCLFNBQVMsRUFBQWxCLEtBQUFBLENBQUFBLENBQUFBLE1BQUEsQ0FBTWUsV0FBVyxXQUFBZixNQUFBLENBQVFNLEtBQUssQ0FBRSxDQUFDLENBQUM7QUFDNURRLE1BQUFBLE9BQU8sQ0FBQ0csSUFBSSxDQUFBLEdBQUEsQ0FBQWpCLE1BQUEsQ0FBS2UsV0FBVyxFQUFBZixLQUFBQSxDQUFBQSxDQUFBQSxNQUFBLENBQU1rQixTQUFTLFdBQUFsQixNQUFBLENBQVFNLEtBQUssQ0FBRSxDQUFDLENBQUM7QUFDNURRLE1BQUFBLE9BQU8sQ0FBQ0csSUFBSSxDQUFBLEdBQUEsQ0FBQWpCLE1BQUEsQ0FBS2UsV0FBVyxFQUFBZixNQUFBQSxDQUFBQSxDQUFBQSxNQUFBLENBQU9rQixTQUFTLFdBQUFsQixNQUFBLENBQVFNLEtBQUssQ0FBRSxDQUFDLENBQUM7QUFDN0RRLE1BQUFBLE9BQU8sQ0FBQ0csSUFBSSxDQUFBLEdBQUEsQ0FBQWpCLE1BQUEsQ0FBS2tCLFNBQVMsRUFBQWxCLE1BQUFBLENBQUFBLENBQUFBLE1BQUEsQ0FBT2UsV0FBVyxXQUFBZixNQUFBLENBQVFNLEtBQUssQ0FBRSxDQUFDLENBQUM7QUFDL0QsS0FBQyxNQUFNO0FBQ0w7QUFDQSxNQUFBLEtBQUssSUFBSWUsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxHQUFHLEdBQUcsRUFBRUEsQ0FBQyxJQUFJLElBQUksRUFBRTtRQUNsQyxJQUFNQyxLQUFLLEdBQUlELENBQUMsR0FBR0YsSUFBSSxDQUFDSSxFQUFFLEdBQUksR0FBRyxDQUFBO0FBQ2pDLFFBQUEsSUFBTUMsQ0FBQyxHQUFHTCxJQUFJLENBQUNDLEtBQUssQ0FBQ0QsSUFBSSxDQUFDTSxHQUFHLENB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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsiLCJ4X2dvb2dsZV9pZ25vcmVMaXN0IjpbMF19
|