Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 海阔视界规则分享,当前分享的是:二级页面详情¥page_detail¥武庚纪 第四季@@eyJkYXRhIjoie1wiYXNzb2NpYXRlZE1vZGVsc01hcEZvckpvaW5UYWJsZVwiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhGS1wiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhvdXRGS1wiOnt9LFwiZmllbGRzVG9TZXRUb0RlZmF1bHRcIjpbXSxcImlkXCI6MCxcImxhc3RfY2hhcHRlcl9ydWxlXCI6XCJqczooXFxuZnVuY3Rpb24gKGFwcHR5cGUsIGFwcFVybCwgYXBwVWEpIHtcXG4gICAgbGV0IGNocCA9IFtdO1xcbiAgICB0cnkge1xcbiAgICAgICAgbGV0IGNvbnRzID0gW10sIGh0bWwgPSBKU09OLnBhcnNlKGZldGNoKE1ZX1VSTC5zcGxpdChcXFwiIyNcXFwiKVsxXSwge2hlYWRlcnM6IHtcXFwiVXNlci1BZ2VudFxcXCI6IGFwcFVhfX0pKTtcXG4gICAgICAgIGlmIChhcHB0eXBlLmluY2x1ZGVzKFxcXCJUVlxcXCIpKSB7XFxuICAgICAgICAgICAgY29udHMgPSBPYmplY3Qua2V5cyhodG1sLnZpZGVvbGlzdCk7XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIGlmIChhcHBVcmwuaW5jbHVkZXMoXFxcImFwaS5waHAvYXBwXFxcIikpIHtcXG4gICAgICAgICAgICAgICAgY29udHMgPSBodG1sLmRhdGEudm9kX3VybF93aXRoX3BsYXllcjtcXG4gICAgICAgICAgICAgICAgaWYgKGNvbnRzLmxlbmd0aCA8IDEpIHtcXG4gICAgICAgICAgICAgICAgICAgIGNvbnRzID0gaHRtbC5kYXRhLnZvZF9wbGF5X3VybC5zcGxpdChcXFwiJCQkXFxcIik7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICBpZiAoYXBwVXJsLmluY2x1ZGVzKFxcXCJ4Z2FwcFxcXCIpKSB7XFxuICAgICAgICAgICAgICAgICAgICBjb250cyA9IGh0bWwuZGF0YS52b2RfaW5mby52b2RfdXJsX3dpdGhfcGxheWVyO1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRzLmxlbmd0aCA8IDEpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250cyA9IGh0bWwuZGF0YS52b2RfaW5mby52b2RfcGxheV91cmwuc3BsaXQoXFxcIiQkJFxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgY29udHMgPSBodG1sLmRhdGEudm9kX3BsYXlfbGlzdDtcXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb250cy5sZW5ndGggPCAxKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udHMgPSBodG1sLmRhdGEudm9kX3BsYXlfdXJsLnNwbGl0KFxcXCIkJCRcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgICAgIGxldCBsaXN0ID0gW107XFxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbnRzLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgaWYgKGFwcHR5cGUuaW5jbHVkZXMoXFxcIlRWXFxcIikpIHtcXG4gICAgICAgICAgICAgICAgbGlzdCA9IGh0bWwudmlkZW9saXN0W2NvbnRzW2ldXTtcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICBpZiAoY29udHNbaV0udXJscykge1xcbiAgICAgICAgICAgICAgICAgICAgbGlzdCA9IGNvbnRzW2ldLnVybHM7XFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoY29udHNbaV0udXJsKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbGlzdCA9IGNvbnRzW2ldLnVybC5zcGxpdChcXFwiI1xcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsaXN0ID0gY29udHNbaV0uc3BsaXQoXFxcIiNcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBjaHAucHVzaChsaXN0Lmxlbmd0aCk7XFxuICAgICAgICB9XFxuICAgIH1cXG4gICAgY2F0Y2ggKGUpIHtcXG4gICAgfVxcbiAgICBzZXRSZXN1bHQoXFxcIlxcXFx1NjZmNFxcXFx1NjViMFxcXFx1ODFmMzpcXFwiICsgKE1hdGgubWF4LmFwcGx5KE1hdGgsIGNocCkpKTtcXG59XFxuKShcXFwiQVBQXFxcIixcXFwiaHR0cDovL3pnanhkdGcuY24vcnVpZmVuZ2xiX2FwaS5waHAvdjEudm9kXFxcIixcXFwib2todHRwLzQuMS4wXFxcIilcIixcImxpc3RUb0NsZWFyQXNzb2NpYXRlZEZLXCI6W10sXCJsaXN0VG9DbGVhclNlbGZGS1wiOltdLFwicGFnZUxpc3RcIjpbe1wibmFtZVwiOlwiQVBQ5YiG57G75YiX6KGoXCIsXCJwYXRoXCI6XCJhcHBsaXN0ZGF0YVwiLFwicnVsZVwiOlwiKFxcbmZ1bmN0aW9uICgpIHtcXG4gICAgbGV0IGxpc3QgPSBbXTtcXG4gICAgaWYgKGFwcFVybC5pbmNsdWRlcyhcXFwiYXBpLnBocC9hcHBcXFwiKSkge1xcbiAgICAgICAgbGlzdCA9IGh0bWwubGlzdDtcXG4gICAgfSBlbHNlIHtcXG4gICAgICAgIGlmIChhcHBVcmwuaW5jbHVkZXMoXFxcInhnYXBwXFxcIikpIHtcXG4gICAgICAgICAgICBsaXN0ID0gaHRtbC5kYXRhO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICBpZiAoYXBwVXJsLmluY2x1ZGVzKFxcXCIudm9kXFxcIikpIHtcXG4gICAgICAgICAgICAgICAgbGlzdCA9IGh0bWwuZGF0YS5saXN0O1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgfVxcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgIGxldCB7dm9kX25hbWUsIHZvZF9waWMsIHZvZF9pZCwgdm9kX3JlbWFya3N9ID0gbGlzdFtpXTtcXG4gICAgICAgIGxldCBsaW5rID0gXFxcIlxcXCI7XFxuICAgICAgICBpZiAoYXBwVXJsLmluY2x1ZGVzKFxcXCJhcGkucGhwL2FwcFxcXCIpIHx8IGFwcFVybC5pbmNsdWRlcyhcXFwieGdhcHBcXFwiKSkge1xcbiAgICAgICAgICAgIGxpbmsgPSBhcHBVcmwgKyBcXFwidmlkZW9fZGV0YWlsP2lkPVxcXCIgKyB2b2RfaWQgKyBcXFwiJnRva2VuPVxcXCI7XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIGlmIChhcHBVcmwuaW5jbHVkZXMoXFxcIi52b2RcXFwiKSkge1xcbiAgICAgICAgICAgICAgICBsZXQgZGF0ZSA9IG5ldyBEYXRlKCk7XFxuICAgICAgICAgICAgICAgIGxpbmsgPSBhcHBVcmwgKyBcXFwiL2RldGFpbD92b2RfaWQ9XFxcIiArIHZvZF9pZCArIFxcXCImcmVsX2xpbWl0PTEwJmtleT1cXFwiICsgKGRhdGUuZ2V0TW9udGgoKSArIDEpICsgKGRhdGUuZ2V0RGF0ZSgpIDwgMTAgPyBcXFwiMFxcXCIgKyBkYXRlLmdldERhdGUoKSA6IGRhdGUuZ2V0RGF0ZSgpKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgICAgICBpZiAoL2lvcGVueXVuLy50ZXN0KGFwcFVybCkpIHtcXG4gICAgICAgICAgICBsaW5rID0gYXBwVXJsICsgXFxcIi9kZXRhaWxJRD92b2RfaWQ9XFxcIiArIHZvZF9pZCArIFxcXCImcmVsX2xpbWl0PTEwXFxcIjtcXG4gICAgICAgIH1cXG4gICAgICAgIGl0ZW1zLnB1c2goe3RpdGxlOiB2b2RfbmFtZSwgcGljX3VybDogdm9kX3BpYyArIFxcXCJAUmVmZXJlcj1cXFwiLCBkZXNjOiB2b2RfcmVtYXJrcywgY29sX3R5cGU6IFxcXCJtb3ZpZV8zX21hcnF1ZWVcXFwiLCB1cmw6ICQoXFxcIiNpbW1lcnNpdmVUaGVtZSNoaWtlcjovL2VtcHR5IyNcXFwiICsgbGluaykucnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICAgICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvYXBwbW92bGlzdFxcXCIpKS5ydWxlKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgY2F0Y2ggKGUpIHtcXG4gICAgICAgICAgICAgICAgbG9nKFxcXCJcXFxcdTVmNzFcXFxcdTcyNDdcXFxcdThiZTZcXFxcdTYwYzVcXFxcdTUxZmFcXFxcdTk1MTk6XFxcIiArIGUubWVzc2FnZSk7XFxuICAgICAgICAgICAgICAgIHNldFJlc3VsdChbXSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICAgICAgKX0pO1xcbiAgICB9XFxufVxcbikoKVwifSx7XCJuYW1lXCI6XCJBUFDpppbpobXliJfooahcIixcInBhdGhcIjpcImFwcGluZGV4ZGF0YVwiLFwicnVsZVwiOlwiKFxcbmZ1bmN0aW9uICgpIHtcXG4gICAgbGV0IGxpc3QgPSBbXTtcXG4gICAgaWYgKGFwcFVybC5pbmNsdWRlcyhcXFwiYXBpLnBocC9hcHBcXFwiKSkge1xcbiAgICAgICAgbGlzdCA9IGh0bWwubGlzdDtcXG4gICAgfSBlbHNlIHtcXG4gICAgICAgIGlmIChhcHBVcmwuaW5jbHVkZXMoXFxcInhnYXBwXFxcIikpIHtcXG4gICAgICAgICAgICBsaXN0ID0gaHRtbC5kYXRhO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICBpZiAoYXBwVXJsLmluY2x1ZGVzKFxcXCIudm9kXFxcIikpIHtcXG4gICAgICAgICAgICAgICAgbGlzdCA9IGh0bWwuZGF0YS5saXN0O1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgfVxcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgIGxldCBsaXN0cyA9IFtdLCB0eXBlbmFtZSA9IFxcXCJcXFwiO1xcbiAgICAgICAgaWYgKGFwcFVybC5pbmNsdWRlcyhcXFwiYXBpLnBocC9hcHBcXFwiKSB8fCBhcHBVcmwuaW5jbHVkZXMoXFxcInhnYXBwXFxcIikpIHtcXG4gICAgICAgICAgICBsaXN0cyA9IGxpc3RbaV0udmxpc3Q7XFxuICAgICAgICAgICAgdHlwZW5hbWUgPSBsaXN0W2ldLnR5cGVfbmFtZTtcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgaWYgKGFwcFVybC5pbmNsdWRlcyhcXFwiLnZvZFxcXCIpKSB7XFxuICAgICAgICAgICAgICAgIGxpc3RzID0gbGlzdFtpXS52b2RfbGlzdDtcXG4gICAgICAgICAgICAgICAgdHlwZW5hbWUgPSBsaXN0W2ldLnZvZF90eXBlX25hbWU7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICAgICAgaXRlbXMucHVzaCh7dGl0bGU6IHR5cGVuYW1lLCBjb2xfdHlwZTogXFxcInRleHRfMVxcXCIsIHVybDogXFxcImhpa2VyOi8vZW1wdHlcXFwifSk7XFxuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGxpc3RzLmxlbmd0aDsgaisrKSB7XFxuICAgICAgICAgICAgbGV0IHt2b2RfbmFtZSwgdm9kX3BpYywgdm9kX2lkLCB2b2RfcmVtYXJrc30gPSBsaXN0c1tqXTtcXG4gICAgICAgICAgICBsZXQgbGluayA9IFxcXCJcXFwiO1xcbiAgICAgICAgICAgIGlmIChhcHBVcmwuaW5jbHVkZXMoXFxcImFwaS5waHAvYXBwXFxcIikgfHwgYXBwVXJsLmluY2x1ZGVzKFxcXCJ4Z2FwcFxcXCIpKSB7XFxuICAgICAgICAgICAgICAgIGxpbmsgPSBhcHBVcmwgKyBcXFwidmlkZW9fZGV0YWlsP2lkPVxcXCIgKyB2b2RfaWQgKyBcXFwiJnRva2VuPSZrZXk9XFxcIjtcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICBpZiAoYXBwVXJsLmluY2x1ZGVzKFxcXCIudm9kXFxcIikpIHtcXG4gICAgICAgICAgICAgICAgICAgIGxldCBkYXRlID0gbmV3IERhdGUoKTtcXG4gICAgICAgICAgICAgICAgICAgIGxpbmsgPSBhcHBVcmwgKyBcXFwiL2RldGFpbD92b2RfaWQ9XFxcIiArIHZvZF9pZCArIFxcXCImcmVsX2xpbWl0PTEwJmtleT1cXFwiICsgKGRhdGUuZ2V0TW9udGgoKSArIDEpICsgKGRhdGUuZ2V0RGF0ZSgpIDwgMTAgPyBcXFwiMFxcXCIgKyBkYXRlLmdldERhdGUoKSA6IGRhdGUuZ2V0RGF0ZSgpKTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBpZiAoL2lvcGVueXVuLy50ZXN0KGFwcFVybCkpIHtcXG4gICAgICAgICAgICAgICAgbGluayA9IGFwcFVybCArIFxcXCIvZGV0YWlsSUQ/dm9kX2lkPVxcXCIgKyB2b2RfaWQgKyBcXFwiJnJlbF9saW1pdD0xMFxcXCI7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGl0ZW1zLnB1c2goe3RpdGxlOiB2b2RfbmFtZSwgcGljX3VybDogdm9kX3BpYyArIFxcXCJAUmVmZXJlcj1cXFwiLCBkZXNjOiB2b2RfcmVtYXJrcywgY29sX3R5cGU6IFxcXCJtb3ZpZV8zX21hcnF1ZWVcXFwiLCB1cmw6ICQoXFxcIiNpbW1lcnNpdmVUaGVtZSNoaWtlcjovL2VtcHR5IyNcXFwiICsgbGluaykucnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgICAgICAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9hcHBtb3ZsaXN0XFxcIikpLnJ1bGUpO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7XFxuICAgICAgICAgICAgICAgICAgICBsb2coXFxcIlxcXFx1NWY3MVxcXFx1NzI0N1xcXFx1OGJlNlxcXFx1NjBjNVxcXFx1NTFmYVxcXFx1OTUxOTpcXFwiICsgZS5tZXNzYWdlKTtcXG4gICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChbXSk7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgKX0pO1xcbiAgICAgICAgfVxcbiAgICB9XFxufVxcbikoKVwifSx7XCJuYW1lXCI6XCJBUFDpgInpm4ZcIixcInBhdGhcIjpcImFwcG1vdmxpc3RcIixcInJ1bGVcIjpcIihcXG5mdW5jdGlvbiAoY2hhbmdlVXJsLCBhcHBVcmwsIGFwcFVhKSB7XFxuICAgIGFkZExpc3RlbmVyKFxcXCJvbkNsb3NlXFxcIiwgJC50b1N0cmluZygodXJsKSA9PiB7XFxuICAgICAgICBjbGVhclZhcihcXFwiYXBwbm93XFxcIik7XFxuICAgICAgICBjbGVhclZhcih1cmwpO1xcbiAgICB9XFxuICAgICwgTVlfVVJMKSk7XFxuICAgIGxldCBpdGVtcyA9IFtdLCBodG1sID0gZ2V0VmFyKE1ZX1VSTCwgXFxcIlxcXCIpLCBkYXRhID0ge307XFxuICAgIGlmIChodG1sID09IFxcXCJcXFwiKSB7XFxuICAgICAgICBsZXQgdXJsID0gTVlfVVJMLnNwbGl0KFxcXCIjI1xcXCIpWzFdO1xcbiAgICAgICAgdXJsID0gY2hhbmdlVXJsKHVybCk7XFxuICAgICAgICBodG1sID0gZmV0Y2godXJsLCB7aGVhZGVyczoge1xcXCJVc2VyLUFnZW50XFxcIjogYXBwVWF9fSk7XFxuICAgICAgICBwdXRWYXIoTVlfVVJMLCBodG1sKTtcXG4gICAgfVxcbiAgICBpZiAoYXBwVXJsLmluY2x1ZGVzKFxcXCJ4Z2FwcFxcXCIpKSB7XFxuICAgICAgICBkYXRhID0gSlNPTi5wYXJzZShodG1sKS5kYXRhLnZvZF9pbmZvO1xcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgZGF0YSA9IEpTT04ucGFyc2UoaHRtbCkuZGF0YTtcXG4gICAgfVxcbiAgICBsZXQge3ZvZF9uYW1lLCB2b2RfcGljLCB2b2RfY29udGVudCwgdm9kX2NsYXNzLCB2b2RfcmVtYXJrcywgdm9kX2RpcmVjdG9yLCB2b2RfYWN0b3IsIHZvZF9hcmVhLCB2b2RfbGFuZywgdm9kX3llYXJ9ID0gZGF0YTtcXG4gICAgaXRlbXMucHVzaCh7dGl0bGU6IHZvZF9uYW1lICsgXFxcIlxcXFxuXFxcIiArIHZvZF9jbGFzcyArIFxcXCIsXFxcIiArIHZvZF9yZW1hcmtzICsgXFxcIlxcXFxuXFxcIiArIHZvZF9hcmVhICsgXFxcIi9cXFwiICsgdm9kX2xhbmcgKyBcXFwiL1xcXCIgKyB2b2RfeWVhciwgZGVzYzogXFxcIlxcXFx1NWJmY1xcXFx1NmYxNDpcXFwiICsgdm9kX2RpcmVjdG9yICsgXFxcIlxcXFxuXFxcXHU0ZTNiXFxcXHU2ZjE0OlxcXCIgKyB2b2RfYWN0b3IsIHBpY191cmw6IHZvZF9waWMsIHVybDogXFxcImhpa2VyOi8vZW1wdHlcXFwiLCBjb2xfdHlwZTogXFxcIm1vdmllXzFfdmVydGljYWxfcGljX2JsdXJcXFwifSwge3RpdGxlOiBcXFwiXFxcXHU1MjY3XFxcXHU2MGM1XFxcXHU3YjgwXFxcXHU0ZWNiOlxcXCIsIGRlc2M6IHZvZF9jb250ZW50LCB1cmw6ICQoXFxcImhpa2VyOi8vZW1wdHkjbm9SZWNvcmRIaXN0b3J5I1xcXCIpLnJ1bGUoKGRlc2MpID0+IHtcXG4gICAgICAgIHNldFJlc3VsdChbe3RpdGxlOiBkZXNjLCBjb2xfdHlwZTogXFxcImxvbmdfdGV4dFxcXCJ9XSk7XFxuICAgIH1cXG4gICAgLCB2b2RfY29udGVudCksIGNvbF90eXBlOiBcXFwidGV4dF8xXFxcIn0pO1xcbiAgICBsZXQgZG5lbiA9IGdldE15VmFyKFxcXCJkbmVuXFxcIiwgXFxcIjBcXFwiKTtcXG4gICAgaXRlbXMucHVzaCh7dGl0bGU6IFxcXCJcXFxcdTY1YWRcXFxcdTYzZDI6XFxcIiArIChkbmVuID09IFxcXCIxXFxcIiA/IFxcXCJcXFxcdTIwMWNcXFxcdTIwMWNcXFxcdTI3MDVcXFxcdTIwMWRcXFxcdTIwMWRcXFwiIDogXFxcIlxcXFx1Mjc0ZVxcXCIpLCB1cmw6ICQoXFxcIlxcXCIpLmxhenlSdWxlKChkbmVuKSA9PiB7XFxuICAgICAgICBpZiAoZG5lbiA9PSBcXFwiMVxcXCIpIHtcXG4gICAgICAgICAgICBwdXRNeVZhcihcXFwiZG5lblxcXCIsIFxcXCIwXFxcIik7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly9cXFxcdTVkZjJcXFxcdTc5ODFcXFxcdTc1MjhcXFxcdTY1YWRcXFxcdTYzZDJcXFxcdThjMDNcXFxcdTc1MjghXFxcIjtcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgcHV0TXlWYXIoXFxcImRuZW5cXFwiLCBcXFwiMVxcXCIpO1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8vXFxcXHU1ZGYyXFxcXHU1ZjAwXFxcXHU1NDJmXFxcXHU2NWFkXFxcXHU2M2QyXFxcXHU4YzAzXFxcXHU3NTI4IVxcXCI7XFxuICAgICAgICB9XFxuICAgIH1cXG4gICAgLCBkbmVuKSwgY29sX3R5cGU6IFxcXCJ0ZXh0XzJcXFwifSk7XFxuICAgIGl0ZW1zLnB1c2goe3RpdGxlOiBcXFwiXFxcXHU3ZWJmXFxcXHU4ZGVmXFxcXHU5MTRkXFxcXHU3ZjZlXFxcIiwgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eSNub1JlY29yZEhpc3RvcnkjQHJ1bGU9anM6dGhpcy5kPVtdO3JlcXVpcmUoJ2h0dHBzOi8vZ2l0ZWEuY29tL0FJOTU3L0hpa2VyL3Jhdy9tL3YvUm91dGUuanMnKTtSb3V0ZS5zZXRQYXJzZSgpO3NldFJlc3VsdChkKTtcXFwiLCBjb2xfdHlwZTogXFxcInRleHRfMlxcXCJ9KTtcXG4gICAgaXRlbXMucHVzaCh7dGl0bGU6IFxcXCJcXFxcdTIwMWNcXFxcdTIwMWNcXFxcdTIxOTNcXFxcdTIxOTFcXFxcdTIwMWRcXFxcdTIwMWRcXFwiLCB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ2FwcG1hcHBzb3J0JywgZ2V0VmFyKCdhcHBtYXBwc29ydCcsJzEnKT09JzEnPycwJzonMScpO3JlZnJlc2hQYWdlKGZhbHNlKTsndG9hc3Q6Ly9cXFxcdTUyMDdcXFxcdTYzNjJcXFxcdTYyMTBcXFxcdTUyOWYhJ1xcXCIsIGNvbF90eXBlOiBcXFwic2Nyb2xsX2J1dHRvblxcXCJ9KTtcXG4gICAgbGV0IGNvbnRzID0gW10sIHRhYnMgPSBbXTtcXG4gICAgaWYgKGFwcFVybC5pbmNsdWRlcyhcXFwiYXBpLnBocC9hcHBcXFwiKSB8fCBhcHBVcmwuaW5jbHVkZXMoXFxcInhnYXBwXFxcIikpIHtcXG4gICAgICAgIGNvbnRzID0gZGF0YS52b2RfdXJsX3dpdGhfcGxheWVyO1xcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgY29udHMgPSBkYXRhLnZvZF9wbGF5X2xpc3Q7XFxuICAgIH1cXG4gICAgaWYgKGNvbnRzLmxlbmd0aCA8IDEpIHtcXG4gICAgICAgIGNvbnRzID0gZGF0YS52b2RfcGxheV91cmwuc3BsaXQoXFxcIiQkJFxcXCIpO1xcbiAgICAgICAgdGFicyA9IGRhdGEudm9kX3BsYXlfZnJvbS5zcGxpdChcXFwiJCQkXFxcIik7XFxuICAgIH1cXG4gICAgbGV0IHB0YWIgPSBcXFwiXFxcIjtcXG4gICAgaWYgKGdldFZhcihcXFwiYXBwbm93XFxcIiwgXFxcIlxcXCIpID09IFxcXCJcXFwiKSB7XFxuICAgICAgICBwdXRWYXIoXFxcImFwcG5vd1xcXCIsIFxcXCIwXFxcIik7XFxuICAgIH1cXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb250cy5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgbGV0IHNwdGFiID0gXFxcIlxcXCIsIHRhYm5hbWUgPSBcXFwiXFxcIjtcXG4gICAgICAgIGlmIChhcHBVcmwuaW5jbHVkZXMoXFxcImFwaS5waHAvYXBwXFxcIikgfHwgYXBwVXJsLmluY2x1ZGVzKFxcXCJ4Z2FwcFxcXCIpKSB7XFxuICAgICAgICAgICAgc3B0YWIgPSBjb250c1tpXS5jb2RlID8gY29udHNbaV0uY29kZSA6IHRhYnNbaV07XFxuICAgICAgICAgICAgdGFibmFtZSA9IGNvbnRzW2ldLm5hbWUgfHwgc3B0YWI7XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIHNwdGFiID0gY29udHNbaV0uZnJvbSA/IGNvbnRzW2ldLmZyb20gOiB0YWJzW2ldO1xcbiAgICAgICAgICAgIHRhYm5hbWUgPSBjb250c1tpXS5wbGF5ZXJfaW5mbyA/IGNvbnRzW2ldLnBsYXllcl9pbmZvLnNob3cgOiBzcHRhYjtcXG4gICAgICAgIH1cXG4gICAgICAgIGl0ZW1zLnB1c2goe3RpdGxlOiBnZXRWYXIoXFxcImFwcG5vd1xcXCIpID09IGkgPyBcXFwiXFxcXHUyMDFjXFxcXHUyMDFjXFxcXHUyMDFkXFxcXHUyMDFkXFxcIiArIHRhYm5hbWUuYm9sZCgpLmZvbnRjb2xvcihcXFwiI0ZBNzI5OFxcXCIpIDogdGFibmFtZSwgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdhcHBub3cnLCdcXFwiICsgaSArIFxcXCInKTtyZWZyZXNoUGFnZShmYWxzZSk7J3RvYXN0Oi8vXFxcXHU1MjA3XFxcXHU2MzYyXFxcXHU2MjEwXFxcXHU1MjlmISdcXFwiLCBjb2xfdHlwZTogXFxcInNjcm9sbF9idXR0b25cXFwifSk7XFxuICAgICAgICBpZiAoZ2V0VmFyKFxcXCJhcHBub3dcXFwiKSA9PSBpKSB7XFxuICAgICAgICAgICAgcHRhYiA9IHNwdGFiO1xcbiAgICAgICAgfVxcbiAgICB9XFxuICAgIGxldCBsaXN0ID0gW10sIGluZGV4ID0gZ2V0VmFyKFxcXCJhcHBub3dcXFwiKTtcXG4gICAgaWYgKGFwcFVybC5pbmNsdWRlcyhcXFwiYXBpLnBocC9hcHBcXFwiKSB8fCBhcHBVcmwuaW5jbHVkZXMoXFxcInhnYXBwXFxcIikpIHtcXG4gICAgICAgIGxpc3QgPSBjb250c1tpbmRleF0udXJsLnNwbGl0KFxcXCIjXFxcIik7XFxuICAgIH0gZWxzZSB7XFxuICAgICAgICBsaXN0ID0gY29udHNbaW5kZXhdLnVybHMgPyBjb250c1tpbmRleF0udXJscyA6IGNvbnRzW2luZGV4XS51cmwuc3BsaXQoXFxcIiNcXFwiKTtcXG4gICAgfVxcbiAgICBpZiAoZ2V0VmFyKFxcXCJhcHBtYXBwc29ydFxcXCIsIFxcXCIxXFxcIikgPT0gXFxcIjBcXFwiKSB7XFxuICAgICAgICBsaXN0LnJldmVyc2UoKTtcXG4gICAgfVxcbiAgICBsZXQgamllayA9IFtdO1xcbiAgICB0cnkge1xcbiAgICAgICAgaWYgKGFwcFVybC5pbmNsdWRlcyhcXFwiYXBpLnBocC9hcHBcXFwiKSB8fCBhcHBVcmwuaW5jbHVkZXMoXFxcInhnYXBwXFxcIikpIHtcXG4gICAgICAgICAgICBqaWVrLnB1c2goY29udHNbaW5kZXhdLnBhcnNlX2FwaSB8fCBcXFwiXFxcIik7XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIGppZWsgPSAoY29udHNbaW5kZXhdLnBsYXllcl9pbmZvLnBhcnNlMiB8fCBcXFwiXFxcIikuc3BsaXQoXFxcIixcXFwiKS5jb25jYXQoKGNvbnRzW2luZGV4XS5wbGF5ZXJfaW5mby5wYXJzZSB8fCBcXFwiXFxcIikuc3BsaXQoXFxcIixcXFwiKSk7XFxuICAgICAgICAgICAgamllayA9IGppZWsubWFwKGN1ciA9PiBjdXIucmVwbGFjZShcXFwiLi5cXFwiLCBcXFwiLlxcXCIpLnJlcGxhY2UoXFxcImpzb25ic1xcXCIsIFxcXCJcXFwiKSk7XFxuICAgICAgICB9XFxuICAgIH1cXG4gICAgY2F0Y2ggKGUpIHtcXG4gICAgfVxcbiAgICBqaWVrID0gamllay5maWx0ZXIoY3VyID0+ICEhY3VyKTtcXG4gICAgbGV0IGp4VXJsID0gamlla1swXSB8fCBcXFwiXFxcIjtcXG4gICAgbG9nKFxcXCJcXFxcblxcXFx1NWY1M1xcXFx1NTI0ZFxcXFx1N2ViZlxcXFx1OGRlZjpcXFwiICsgcHRhYiArIFxcXCJcXFxcblxcXFx1NjNhNVxcXFx1NTNlM1xcXFx1NTIxN1xcXFx1ODg2ODpcXFwiICsgJC5zdHJpbmdpZnkoamllaykpO1xcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IGxpc3QubGVuZ3RoOyBqKyspIHtcXG4gICAgICAgIGxldCB2bGluayA9IFxcXCJcXFwiLCB0aXRsZSA9IFxcXCJcXFwiO1xcbiAgICAgICAgaWYgKGxpc3Rbal0udXJsKSB7XFxuICAgICAgICAgICAgdmxpbmsgPSBsaXN0W2pdLnVybC5yZXBsYWNlKC8jNDU2Iy9nLCBcXFwiaHR0cFxcXCIpLnJlcGxhY2UoLyMxMjMjL2csIFxcXCIuXFxcIikucmVwbGFjZSgvIzc4OSMvZywgXFxcIjpcXFwiKTtcXG4gICAgICAgICAgICB0aXRsZSA9IGxpc3Rbal0ubmFtZTtcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgdmxpbmsgPSBsaXN0W2pdLnNwbGl0KFxcXCIkXFxcIilbMV07XFxuICAgICAgICAgICAgdGl0bGUgPSBsaXN0W2pdLnNwbGl0KFxcXCIkXFxcIilbMF07XFxuICAgICAgICB9XFxuICAgICAgICBpdGVtcy5wdXNoKHt0aXRsZTogdGl0bGUsIGNvbF90eXBlOiBcXFwidGV4dF80XFxcIiwgdXJsOiBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9sYXp5UGFyc2VcXFwiKSkucnVsZSl9KTtcXG4gICAgfVxcbiAgICBzZXRSZXN1bHQoaXRlbXMpO1xcbn1cXG4pKFxcbmZ1bmN0aW9uIGNoYW5nZVVybCh1cmwpIHtcXG4gICAgbGV0IG5ld1VybCA9IHVybDtcXG4gICAgaWYgKHVybC5pbmNsdWRlcyhcXFwib21vZnVuXFxcIikpIHtcXG4gICAgICAgIG5ld1VybCA9IHVybCArIFxcXCImY3NyZj1hJTJCSUtHTHVuSkNadWFkJTJCeEVUTHJadUJvcWhsdUZDRDBkSDg2RThJRU52QnpNZkJMYTZkQjhSem94eEl2dkJFTWVKekpuVVN0NTFGaGxQQmQ0S3I1eWhHWGx5TnZEa0p5Tk1EZ0RaMWIlMkZzalhBZU10ajE3WHRlTThwdVRZMlBRblF3WU95aiUyRkhVQ0FWUlprcmZsc2s4N1lHMVZlU3duRVQ4VHByREQ4dDZ1ZyUzREBzaWduYXR1cmU9RkVENEEwOTJENUJCQkUxODExN0EzQjU1OEVCNjQ2MUE5MkE1MkNGN1xcXCI7XFxuICAgIH0gZWxzZSB7XFxuICAgICAgICBpZiAodXJsLmluY2x1ZGVzKFxcXCJ4aW5sdWFuXFxcIikpIHtcXG4gICAgICAgICAgICBuZXdVcmwgPSB1cmwgKyBcXFwiJmNzcmY9U1JFUUFQWDh0RkVLcFYyZExEakxaaEtrOEl4SmZEV2hOJTJCbWtzV0olMkZrZFJWd2dVaCUyRlFrVERaRW9RQVNhQXA3SHpVaXg4N1QlMkJQTGtBSXc2eUglMkI2TXJ2YXFKTTlySjVsMmI4NUlRUmJCYlclMkJEYlNZUk84Ym1Uc0tkTFlEVFZ0UkhoejVueWxSV2xHVWlkeEhmVnlMTzl0WlVpQmsxWTJBd28lMkZ6c2EydEgydTglM0RAc2lnbmF0dXJlPUZCQzcwODhDNjc3RDI5N0U2QkJCQzg1ODRBOTMzNzJEREUxMEZEOTZcXFwiO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICBpZiAodXJsLmluY2x1ZGVzKFxcXCJzeGJyZFxcXCIpKSB7XFxuICAgICAgICAgICAgICAgIG5ld1VybCA9IHVybCArIFxcXCImY3NyZj1yMk5ETHRwUzhFdXFoJTJGJTJGOFk5NnljT1VPS1M5SUN6Tll6eWF3NUMyVWZFZ29ERkRIWCUyRnJxaiUyQlljTFdRekg1JTJCUjZtb1VPbHdPQW9KUkV0VWEzNzZ1ZDc0NjI3VUR6TlExc1JHZFREOGtiMzZzMWVUTWVtY244ZDBpN1dKNms5aWg1SVA0QWQ3ZnBhNiUyRjNEc3Qxam9HbmN5cjcxNmRSSERNZmN2cnMzUzI5akklM0RAY2xpZW50X25hbWU9NTVXRjU1eUw1YjJ4NktlR1xcXCI7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICB9XFxuICAgIHJldHVybiBuZXdVcmw7XFxufVxcbixcXFwiaHR0cDovL3pnanhkdGcuY24vcnVpZmVuZ2xiX2FwaS5waHAvdjEudm9kXFxcIixcXFwib2todHRwLzQuMS4wXFxcIilcIn0se1wibmFtZVwiOlwi6KeG6aKR6Kej5p6QXCIsXCJwYXRoXCI6XCJsYXp5UGFyc2VcIixcInJ1bGVcIjpcIihcXG5mdW5jdGlvbiAoKSB7XFxuICAgIHJldHVybiAkKFxcXCJcXFwiKS5sYXp5UnVsZSgocHRhYiwgdmxpbmssIGp4VXJsLCBhcHBVcmwpID0+IHtcXG4gICAgICAgIGxvZyhcXFwiXFxcXHU4OWM2XFxcXHU5ODkxXFxcXHU5NGZlXFxcXHU2M2E1OlxcXCIgKyB2bGluayk7XFxuICAgICAgICB0cnkge1xcbiAgICAgICAgICAgIGZ1bmN0aW9uIGNoYW5nZVZpZGVvVXJsKHVybCkge1xcbiAgICAgICAgICAgICAgICBpZiAodXJsLmluY2x1ZGVzKFxcXCJ3a2ZpbGVcXFwiKSkge1xcbiAgICAgICAgICAgICAgICAgICAgdXJsID0gdXJsICsgXFxcIjt7UmVmZXJlckBodHRwczovL2ZhbnR1YW4ud2tmaWxlLmNvbS99XFxcIjtcXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgIGlmIChwdGFiID09IFxcXCJiaWxpYmlsaVxcXCIpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmwgPSB1cmwgKyBcXFwiO3tSZWZlcmVyQGh0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS8mJlVzZXItQWdlbnRATW96aWxsYS81LjB9XFxcIjtcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHB0YWIgPT0gXFxcIm1ndHZcXFwiKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybCA9IHVybCArIFxcXCI7e1JlZmVyZXJAd3d3Lm1ndHYuY29tJiZVc2VyLUFnZW50QE1vemlsbGEvNS4wfVxcXCI7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVybC5pbmNsdWRlcyhcXFwib2pia1xcXCIpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmwgPSB1cmwgKyBcXFwiO3tSZWZlcmVyQGh0dHBzOi8vYmFrLm9qYmtqeC5jb20vfVxcXCI7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgaWYgKCF1cmwuaW5jbHVkZXMoXFxcImh0dHBcXFwiKSkge1xcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxcXCJcXFxcdTk0ZmVcXFxcdTYzYTVcXFxcdTRlMGRcXFxcdTY2MmZcXFxcdTRlZTVodHRwXFxcXHU1ZjAwXFxcXHU1OTM0XFxcIik7XFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoL1xcXFwubTN1OC8udGVzdCh1cmwpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhY2hlTTN1OCh1cmwpO1xcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdXJsICsgXFxcIiNpc1ZpZGVvPXRydWUjXFxcIjtcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBmdW5jdGlvbiBEZSh3b3JkLCB0b2tlbl9rZXksIHRva2VuX2l2KSB7XFxuICAgICAgICAgICAgICAgIGV2YWwoZ2V0Q3J5cHRvSlMoKSk7XFxuICAgICAgICAgICAgICAgIHZhciBrZXkgPSBDcnlwdG9KUy5lbmMuVXRmOC5wYXJzZSh0b2tlbl9rZXkpO1xcbiAgICAgICAgICAgICAgICB2YXIgaXYgPSBDcnlwdG9KUy5lbmMuVXRmOC5wYXJzZSh0b2tlbl9pdik7XFxuICAgICAgICAgICAgICAgIHJldHVybiBDcnlwdG9KUy5BRVMuZGVjcnlwdCh3b3JkLCBrZXksIHtpdjogaXYsIG1vZGU6IENyeXB0b0pTLm1vZGUuQ0JDLCBwYWRkaW5nOiBDcnlwdG9KUy5wYWQuUGtjczd9KS50b1N0cmluZyhDcnlwdG9KUy5lbmMuVXRmOCk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGlmICgvXFxcXC5tM3U4fFxcXFwubXA0fG9ialxcXFwvdG9zfG5ldGVhc2VcXFxcLmNvbS8udGVzdCh2bGluaykgJiYgL2h0dHAvLnRlc3QodmxpbmspICYmICEvXFxcXC5odG1sLy50ZXN0KHZsaW5rKSkge1xcbiAgICAgICAgICAgICAgICBsZXQgcHVybCA9IHZsaW5rO1xcbiAgICAgICAgICAgICAgICBpZiAocHRhYi5pbmNsdWRlcyhcXFwiZHVvZHVvenlcXFwiKSB8fCB2bGluay5pbmNsdWRlcyhcXFwibTN1OC5jYWNoZS5zdW95by5jY1xcXCIpKSB7XFxuICAgICAgICAgICAgICAgICAgICBsZXQgdXJsID0gSlNPTi5wYXJzZShmZXRjaChcXFwiaHR0cHM6Ly9qaHBjLm1hbmR1aHUuY29tL2R1b2R1by9hcGkucGhwP3VybD1cXFwiICsgdmxpbmspKS51cmw7XFxuICAgICAgICAgICAgICAgICAgICBwdXJsID0gRGUodXJsLCBtZDUoXFxcInJYald2WGw2XFxcIiksIFxcXCJOWGJIb1dKYnBzRU9pbjhiXFxcIik7XFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICBpZiAocHRhYi5pbmNsdWRlcyhcXFwiQ0w0S1xcXCIpIHx8IHZsaW5rLmluY2x1ZGVzKFxcXCJydWlmZW5nbGJcXFwiKSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBodG1sID0gZmV0Y2goXFxcImh0dHBzOi8vdHYueWpoYW4uY29tOjQ0MzMvQ0w0Sy8/dXJsPVxcXCIgKyB2bGluayksIGxlX3Rva2VuID0gaHRtbC5tYXRjaCgvbGVfdG9rZW4uKj0uKlxcXCIoLiopXFxcIi8pWzFdLCB1cmwgPSBodG1sLm1hdGNoKC9cXFwidXJsXFxcIi4qOi4qXFxcIiguKilcXFwiLylbMV07XFxuICAgICAgICAgICAgICAgICAgICAgICAgcHVybCA9IERlKHVybCwgXFxcIkE0MkVBQzBDMkI0MDg0NzJcXFwiLCBsZV90b2tlbik7XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgaWYgKCF2bGluay5pbmNsdWRlcyhcXFwibGFvZGlcXFwiKSkge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNoYW5nZVZpZGVvVXJsKHB1cmwpO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGlmIChwdGFiLmluY2x1ZGVzKFxcXCJuZXRmbGl4bW9tXFxcIikgfHwgL15uZXRmbGl4bW9tLy50ZXN0KHZsaW5rKSkge1xcbiAgICAgICAgICAgICAgICBsZXQgaHRtbCA9IGZldGNoKFxcXCJodHRwczovL3BsYXllci40a3lhLmNvbS8/dXJsPVxcXCIgKyB2bGluaywge2hlYWRlcnM6IHtyZWZlcmVyOiBcXFwiaHR0cHM6Ly9uZXRmbGl4Lm1vbVxcXCJ9fSksIGxlX3Rva2VuID0gaHRtbC5tYXRjaCgvbGVfdG9rZW5cXFxccyo9XFxcXHMqXFxcIiguKilcXFwiLylbMV0sIHVybCA9IGh0bWwubWF0Y2goL1xcXCJ1cmxcXFwiXFxcXHMqOlxcXFxzKlxcXCIoLiopXFxcIi8pWzFdO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gY2hhbmdlVmlkZW9VcmwoRGUodXJsLCBcXFwiMzMzMTgwQjNFRjBFRDlEMFxcXCIsIGxlX3Rva2VuKSk7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgaWYgKGFwcFVybC5pbmNsdWRlcyhcXFwiaWFwcC5uZnV4cy5jbHViXFxcIikpIHtcXG4gICAgICAgICAgICAgICAgICAgIGxldCBodG1sID0gZmV0Y2goXFxcImh0dHBzOi8vYXBpLnhrdmlkZW8uZGVzaWduL20zdTgucGhwP3VybD1cXFwiICsgdmxpbmspLCBsZV90b2tlbiA9IGh0bWwubWF0Y2goL2J0X3Rva2VuXFxcXHMqPVxcXFxzKlxcXCIoLiopXFxcIi8pWzFdLCB1cmwgPSBodG1sLm1hdGNoKC9cXFwidXJsXFxcIlxcXFxzKjpcXFxccypnZXRWaWRlb0luZm9cXFxcKFxcXCIoLiopXFxcIi8pWzFdO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNoYW5nZVZpZGVvVXJsKERlKHVybCwgXFxcInpzZHJmODgwMjAzZ2h1cmRcXFwiLCBsZV90b2tlbikpO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGxvZyhcXFwiXFxcXHU0ZjdmXFxcXHU3NTI4XFxcXHU2M2E1XFxcXHU1M2UzOlxcXCIgKyBqeFVybCk7XFxuICAgICAgICAgICAgbGV0IGxpbmsgPSBqeFVybCArIHZsaW5rLCBzY29kZSA9IEpTT04ucGFyc2UoZmV0Y2gobGluaywge2hlYWRlcnM6IHtcXFwiVXNlci1BZ2VudFxcXCI6IFxcXCJEYXJ0LzIuMTMgKGRhcnQ6aW8pXFxcIn0sIHJlZGlyZWN0OiBmYWxzZSwgd2l0aFN0YXR1c0NvZGU6IHRydWV9KSk7XFxuICAgICAgICAgICAgaWYgKHNjb2RlLnN0YXR1c0NvZGUgPT0gXFxcIjMwMlxcXCIgfHwgc2NvZGUuc3RhdHVzQ29kZSA9PSBcXFwiMzAxXFxcIikge1xcbiAgICAgICAgICAgICAgICBsZXQgcmVkdXJsID0gc2NvZGUuaGVhZGVycy5sb2NhdGlvblswXS5yZXBsYWNlKC9cXFxcXFxcXC9nLCBcXFwiXFxcIik7XFxuICAgICAgICAgICAgICAgIGxvZyhcXFwiXFxcXHU5MWNkXFxcXHU1YjlhXFxcXHU1NDExOlxcXCIgKyByZWR1cmwpO1xcbiAgICAgICAgICAgICAgICBsZXQgcHVybCA9IHJlZHVybDtcXG4gICAgICAgICAgICAgICAgaWYgKC8odXJsfHZpZHx2KVxcXFw9Ly50ZXN0KHJlZHVybCkpIHtcXG4gICAgICAgICAgICAgICAgICAgIHB1cmwgPSBKU09OLnBhcnNlKGZldGNoKHJlZHVybCwge30pKS51cmw7XFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoL1xcXFw9aHR0cC8udGVzdChyZWR1cmwpICYmIC9cXFxcLm0zdTh8XFxcXC5tcDR8XFxcXC5mbHYvLnRlc3QocmVkdXJsKSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1cmwgPSByZWR1cmwuc3Vic3RyaW5nKHJlZHVybC5pbmRleE9mKFxcXCI9aHR0cFxcXCIpICsgMSk7XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNoYW5nZVZpZGVvVXJsKHB1cmwpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBsZXQgaHRtbCA9IHNjb2RlLmJvZHk7XFxuICAgICAgICAgICAgaWYgKC80MDQgTm90IEZvdW5kfOWkh+ahiOWQjuWPr+e7p+e7reiuv+mXri8udGVzdChodG1sKSkge1xcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXFxcIjQwNFxcXFx1NGU4NlxcXCIpO1xcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIGlmICgvXFxcXDxib2R5Ly50ZXN0KGh0bWwpKSB7XFxuICAgICAgICAgICAgICAgICAgICBsb2coXFxcIlxcXFx1NWMxZFxcXFx1OGJkNVxcXFx1NGVjZVxcXFx1N2Y1MVxcXFx1OTg3NVxcXFx1NTVjNVxcXFx1NjNhMlxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgcmVxdWlyZUNhY2hlKFxcXCJodHRwczovL2NvZGUuYWxpeXVuLmNvbS9semsyMzU1OS9QdWJsaWNSdWxlL3Jhdy9tYXN0ZXIveDVydWxlLmpzXFxcIiwgMjQpO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHg1cnVsZShsaW5rLCBsaW5rKTtcXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgIGxvZyhcXFwiXFxcXHU1YzFkXFxcXHU4YmQ1XFxcXHU0ZWNlXFxcXHU5NzVlXFxcXHU3ZjUxXFxcXHU5ODc1XFxcXHU4M2I3XFxcXHU1M2Q2XFxcIik7XFxuICAgICAgICAgICAgICAgICAgICB0cnkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwdXJsID0gSlNPTi5wYXJzZShodG1sKS51cmw7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNoYW5nZVZpZGVvVXJsKHB1cmwpO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGUpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcHVybCA9IGh0bWwubWF0Y2goL1tcXFxcJ1xcXFxcXFwiXXVybFtcXFxcJ1xcXFxcXFwiXTouKj9bXFxcXCdcXFxcXFxcIl0oLio/KVtcXFxcJ1xcXFxcXFwiXS8pWzFdLnJlcGxhY2UoL1xcXFxcXFxcL2csIFxcXCJcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2hhbmdlVmlkZW9VcmwocHVybCk7XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgICAgICBjYXRjaCAoZSkge1xcbiAgICAgICAgICAgIGxvZyhcXFwiXFxcXHU2NzJhXFxcXHU4MGZkXFxcXHU2MjEwXFxcXHU1MjlmXFxcXHU4M2I3XFxcXHU1M2Q2XFxcXHU4OWM2XFxcXHU5ODkxXFxcXHU1NzMwXFxcXHU1NzQwOlxcXCIgKyBlLm1lc3NhZ2UpO1xcbiAgICAgICAgICAgIGxldCBlbkRuID0gZ2V0TXlWYXIoXFxcImRuZW5cXFwiLCBcXFwiMFxcXCIpLCB0ZXN0MSA9IHZsaW5rLnNlYXJjaCgveW91a3V8bWd0dnxpeGlndWF8cXEuY29tfHFpeWl8bWlndXxiaWxpYmlsaXxzb2h1fHBwdHZ8bGV8MTkwNS5jb20vKSAhPSAtMSAmJiB2bGluay5zZWFyY2goL2h0bWx8YmlsaWJpbGkvKSAhPSAtMSwgdGVzdDIgPSB2bGluay5zZWFyY2goL0xUXFxcXC18Um9uZ1hpbmdWUlxcXFwtfHJlbnJlbm1pXFxcXC18eGZ5XFxcXC0vKSAhPSAtMTtcXG4gICAgICAgICAgICBpZiAoKHRlc3QxIHx8IHRlc3QyKSAmJiBlbkRuID09IFxcXCIxXFxcIikge1xcbiAgICAgICAgICAgICAgICBsb2coXFxcIlxcXFx1OGMwM1xcXFx1NzUyOFxcXFx1NjVhZFxcXFx1NjNkMlxcXFx1ODllM1xcXFx1Njc5MFxcXCIpO1xcbiAgICAgICAgICAgICAgICBldmFsKFxcXCJsZXQgY29uZmlnID1cXFwiICsgZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvY2FjaGUvTXlQYXJzZVNldC5qc29uXFxcIikpO1xcbiAgICAgICAgICAgICAgICBldmFsKGZldGNoKGNvbmZpZy5jaikpO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gYXl0bVBhcnNlKHZsaW5rKTtcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gdmxpbms7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICB9XFxuICAgICwgcHRhYiwgdmxpbmssIGp4VXJsLCBhcHBVcmwpO1xcbn1cXG4pKClcIn1dLFwic2F2ZWRcIjpmYWxzZSxcInRpdGxlXCI6XCLkuIDkuKrovbvlkIjpm4ZcIixcInZlcnNpb25cIjowLFwidXJsXCI6XCIjaW1tZXJzaXZlVGhlbWUjaGlrZXI6Ly9lbXB0eSMjaHR0cDovL3pnanhkdGcuY24vcnVpZmVuZ2xiX2FwaS5waHAvdjEudm9kL2RldGFpbD92b2RfaWQ9MzYxOTY2JnRva2VuPVwiLFwiZmluZF9ydWxlXCI6XCJqczooXFxuKGFwcHR5cGUpID0+IHtcXG4gICAgaWYgKC9UVi8udGVzdChhcHB0eXBlKSkge1xcbiAgICAgICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvdHZtb3ZsaXN0XFxcIikpLnJ1bGUpO1xcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvYXBwbW92bGlzdFxcXCIpKS5ydWxlKTtcXG4gICAgfVxcbn1cXG4pKFxcXCJBUFBcXFwiKVwiLFwiZ3JvdXBcIjpcIuS4gOS4qui9u+WQiOmbhlwiLFwicGFnZXNcIjpcIlt7XFxcIm5hbWVcXFwiOlxcXCJBUFDliIbnsbvliJfooahcXFwiLFxcXCJwYXRoXFxcIjpcXFwiYXBwbGlzdGRhdGFcXFwiLFxcXCJydWxlXFxcIjpcXFwiKFxcXFxuZnVuY3Rpb24gKCkge1xcXFxuICAgIGxldCBsaXN0ID0gW107XFxcXG4gICAgaWYgKGFwcFVybC5pbmNsdWRlcyhcXFxcXFxcImFwaS5waHAvYXBwXFxcXFxcXCIpKSB7XFxcXG4gICAgICAgIGxpc3QgPSBodG1sLmxpc3Q7XFxcXG4gICAgfSBlbHNlIHtcXFxcbiAgICAgICAgaWYgKGFwcFVybC5pbmNsdWRlcyhcXFxcXFxcInhnYXBwXFxcXFxcXCIpKSB7XFxcXG4gICAgICAgICAgICBsaXN0ID0gaHRtbC5kYXRhO1xcXFxuICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgaWYgKGFwcFVybC5pbmNsdWRlcyhcXFxcXFxcIi52b2RcXFxcXFxcIikpIHtcXFxcbiAgICAgICAgICAgICAgICBsaXN0ID0gaHRtbC5kYXRhLmxpc3Q7XFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgIH1cXFxcbiAgICB9XFxcXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XFxcXG4gICAgICAgIGxldCB7dm9kX25hbWUsIHZvZF9waWMsIHZvZF9pZCwgdm9kX3JlbWFya3N9ID0gbGlzdFtpXTtcXFxcbiAgICAgICAgbGV0IGxpbmsgPSBcXFxcXFxcIlxcXFxcXFwiO1xcXFxuICAgICAgICBpZiAoYXBwVXJsLmluY2x1ZGVzKFxcXFxcXFwiYXBpLnBocC9hcHBcXFxcXFxcIikgfHwgYXBwVXJsLmluY2x1ZGVzKFxcXFxcXFwieGdhcHBcXFxcXFxcIikpIHtcXFxcbiAgICAgICAgICAgIGxpbmsgPSBhcHBVcmwgKyBcXFxcXFxcInZpZGVvX2RldGFpbD9pZD1cXFxcXFxcIiArIHZvZF9pZCArIFxcXFxcXFwiJnRva2VuPVxcXFxcXFwiO1xcXFxuICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgaWYgKGFwcFVybC5pbmNsdWRlcyhcXFxcXFxcIi52b2RcXFxcXFxcIikpIHtcXFxcbiAgICAgICAgICAgICAgICBsZXQgZGF0ZSA9IG5ldyBEYXRlKCk7XFxcXG4gICAgICAgICAgICAgICAgbGluayA9IGFwcFVybCArIFxcXFxcXFwiL2RldGFpbD92b2RfaWQ9XFxcXFxcXCIgKyB2b2RfaWQgKyBcXFxcXFxcIiZyZWxfbGltaXQ9MTAma2V5PVxcXFxcXFwiICsgKGRhdGUuZ2V0TW9udGgoKSArIDEpICsgKGRhdGUuZ2V0RGF0ZSgpIDwgMTAgPyBcXFxcXFxcIjBcXFxcXFxcIiArIGRhdGUuZ2V0RGF0ZSgpIDogZGF0ZS5nZXREYXRlKCkpO1xcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICB9XFxcXG4gICAgICAgIGlmICgvaW9wZW55dW4vLnRlc3QoYXBwVXJsKSkge1xcXFxuICAgICAgICAgICAgbGluayA9IGFwcFVybCArIFxcXFxcXFwiL2RldGFpbElEP3ZvZF9pZD1cXFxcXFxcIiArIHZvZF9pZCArIFxcXFxcXFwiJnJlbF9saW1pdD0xMFxcXFxcXFwiO1xcXFxuICAgICAgICB9XFxcXG4gICAgICAgIGl0ZW1zLnB1c2goe3RpdGxlOiB2b2RfbmFtZSwgcGljX3VybDogdm9kX3BpYyArIFxcXFxcXFwiQFJlZmVyZXI9XFxcXFxcXCIsIGRlc2M6IHZvZF9yZW1hcmtzLCBjb2xfdHlwZTogXFxcXFxcXCJtb3ZpZV8zX21hcnF1ZWVcXFxcXFxcIiwgdXJsOiAkKFxcXFxcXFwiI2ltbWVyc2l2ZVRoZW1lI2hpa2VyOi8vZW1wdHkjI1xcXFxcXFwiICsgbGluaykucnVsZSgoKSA9PiB7XFxcXG4gICAgICAgICAgICB0cnkge1xcXFxuICAgICAgICAgICAgICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFxcXFxcImhpa2VyOi8vcGFnZS9hcHBtb3ZsaXN0XFxcXFxcXCIpKS5ydWxlKTtcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIGNhdGNoIChlKSB7XFxcXG4gICAgICAgICAgICAgICAgbG9nKFxcXFxcXFwiXFxcXFxcXFx1NWY3MVxcXFxcXFxcdTcyNDdcXFxcXFxcXHU4YmU2XFxcXFxcXFx1NjBjNVxcXFxcXFxcdTUxZmFcXFxcXFxcXHU5NTE5OlxcXFxcXFwiICsgZS5tZXNzYWdlKTtcXFxcbiAgICAgICAgICAgICAgICBzZXRSZXN1bHQoW10pO1xcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICB9XFxcXG4gICAgICAgICl9KTtcXFxcbiAgICB9XFxcXG59XFxcXG4pKClcXFwifSx7XFxcIm5hbWVcXFwiOlxcXCJBUFDpppbpobXliJfooahcXFwiLFxcXCJwYXRoXFxcIjpcXFwiYXBwaW5kZXhkYXRhXFxcIixcXFwicnVsZVxcXCI6XFxcIihcXFxcbmZ1bmN0aW9uICgpIHtcXFxcbiAgICBsZXQgbGlzdCA9IFtdO1xcXFxuICAgIGlmIChhcHBVcmwuaW5jbHVkZXMoXFxcXFxcXCJhcGkucGhwL2FwcFxcXFxcXFwiKSkge1xcXFxuICAgICAgICBsaXN0ID0gaHRtbC5saXN0O1xcXFxuICAgIH0gZWxzZSB7XFxcXG4gICAgICAgIGlmIChhcHBVcmwuaW5jbHVkZXMoXFxcXFxcXCJ4Z2FwcFxcXFxcXFwiKSkge1xcXFxuICAgICAgICAgICAgbGlzdCA9IGh0bWwuZGF0YTtcXFxcbiAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgIGlmIChhcHBVcmwuaW5jbHVkZXMoXFxcXFxcXCIudm9kXFxcXFxcXCIpKSB7XFxcXG4gICAgICAgICAgICAgICAgbGlzdCA9IGh0bWwuZGF0YS5saXN0O1xcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICB9XFxcXG4gICAgfVxcXFxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykge1xcXFxuICAgICAgICBsZXQgbGlzdHMgPSBbXSwgdHlwZW5hbWUgPSBcXFxcXFxcIlxcXFxcXFwiO1xcXFxuICAgICAgICBpZiAoYXBwVXJsLmluY2x1ZGVzKFxcXFxcXFwiYXBpLnBocC9hcHBcXFxcXFxcIikgfHwgYXBwVXJsLmluY2x1ZGVzKFxcXFxcXFwieGdhcHBcXFxcXFxcIikpIHtcXFxcbiAgICAgICAgICAgIGxpc3RzID0gbGlzdFtpXS52bGlzdDtcXFxcbiAgICAgICAgICAgIHR5cGVuYW1lID0gbGlzdFtpXS50eXBlX25hbWU7XFxcXG4gICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICBpZiAoYXBwVXJsLmluY2x1ZGVzKFxcXFxcXFwiLnZvZFxcXFxcXFwiKSkge1xcXFxuICAgICAgICAgICAgICAgIGxpc3RzID0gbGlzdFtpXS52b2RfbGlzdDtcXFxcbiAgICAgICAgICAgICAgICB0eXBlbmFtZSA9IGxpc3RbaV0udm9kX3R5cGVfbmFtZTtcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgfVxcXFxuICAgICAgICBpdGVtcy5wdXNoKHt0aXRsZTogdHlwZW5hbWUsIGNvbF90eXBlOiBcXFxcXFxcInRleHRfMVxcXFxcXFwiLCB1cmw6IFxcXFxcXFwiaGlrZXI6Ly9lbXB0eVxcXFxcXFwifSk7XFxcXG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbGlzdHMubGVuZ3RoOyBqKyspIHtcXFxcbiAgICAgICAgICAgIGxldCB7dm9kX25hbWUsIHZvZF9waWMsIHZvZF9pZCwgdm9kX3JlbWFya3N9ID0gbGlzdHNbal07XFxcXG4gICAgICAgICAgICBsZXQgbGluayA9IFxcXFxcXFwiXFxcXFxcXCI7XFxcXG4gICAgICAgICAgICBpZiAoYXBwVXJsLmluY2x1ZGVzKFxcXFxcXFwiYXBpLnBocC9hcHBcXFxcXFxcIikgfHwgYXBwVXJsLmluY2x1ZGVzKFxcXFxcXFwieGdhcHBcXFxcXFxcIikpIHtcXFxcbiAgICAgICAgICAgICAgICBsaW5rID0gYXBwVXJsICsgXFxcXFxcXCJ2aWRlb19kZXRhaWw/aWQ9XFxcXFxcXCIgKyB2b2RfaWQgKyBcXFxcXFxcIiZ0b2tlbj0ma2V5PVxcXFxcXFwiO1xcXFxuICAgICAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgICAgICBpZiAoYXBwVXJsLmluY2x1ZGVzKFxcXFxcXFwiLnZvZFxcXFxcXFwiKSkge1xcXFxuICAgICAgICAgICAgICAgICAgICBsZXQgZGF0ZSA9IG5ldyBEYXRlKCk7XFxcXG4gICAgICAgICAgICAgICAgICAgIGxpbmsgPSBhcHBVcmwgKyBcXFxcXFxcIi9kZXRhaWw/dm9kX2lkPVxcXFxcXFwiICsgdm9kX2lkICsgXFxcXFxcXCImcmVsX2xpbWl0PTEwJmtleT1cXFxcXFxcIiArIChkYXRlLmdldE1vbnRoKCkgKyAxKSArIChkYXRlLmdldERhdGUoKSA8IDEwID8gXFxcXFxcXCIwXFxcXFxcXCIgKyBkYXRlLmdldERhdGUoKSA6IGRhdGUuZ2V0RGF0ZSgpKTtcXFxcbiAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICBpZiAoL2lvcGVueXVuLy50ZXN0KGFwcFVybCkpIHtcXFxcbiAgICAgICAgICAgICAgICBsaW5rID0gYXBwVXJsICsgXFxcXFxcXCIvZGV0YWlsSUQ/dm9kX2lkPVxcXFxcXFwiICsgdm9kX2lkICsgXFxcXFxcXCImcmVsX2xpbWl0PTEwXFxcXFxcXCI7XFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICBpdGVtcy5wdXNoKHt0aXRsZTogdm9kX25hbWUsIHBpY191cmw6IHZvZF9waWMgKyBcXFxcXFxcIkBSZWZlcmVyPVxcXFxcXFwiLCBkZXNjOiB2b2RfcmVtYXJrcywgY29sX3R5cGU6IFxcXFxcXFwibW92aWVfM19tYXJxdWVlXFxcXFxcXCIsIHVybDogJChcXFxcXFxcIiNpbW1lcnNpdmVUaGVtZSNoaWtlcjovL2VtcHR5IyNcXFxcXFxcIiArIGxpbmspLnJ1bGUoKCkgPT4ge1xcXFxuICAgICAgICAgICAgICAgIHRyeSB7XFxcXG4gICAgICAgICAgICAgICAgICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFxcXFxcImhpa2VyOi8vcGFnZS9hcHBtb3ZsaXN0XFxcXFxcXCIpKS5ydWxlKTtcXFxcbiAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgY2F0Y2ggKGUpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgbG9nKFxcXFxcXFwiXFxcXFxcXFx1NWY3MVxcXFxcXFxcdTcyNDdcXFxcXFxcXHU4YmU2XFxcXFxcXFx1NjBjNVxcXFxcXFxcdTUxZmFcXFxcXFxcXHU5NTE5OlxcXFxcXFwiICsgZS5tZXNzYWdlKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgc2V0UmVzdWx0KFtdKTtcXFxcbiAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICApfSk7XFxcXG4gICAgICAgIH1cXFxcbiAgICB9XFxcXG59XFxcXG4pKClcXFwifSx7XFxcIm5hbWVcXFwiOlxcXCJBUFDpgInpm4ZcXFwiLFxcXCJwYXRoXFxcIjpcXFwiYXBwbW92bGlzdFxcXCIsXFxcInJ1bGVcXFwiOlxcXCIoXFxcXG5mdW5jdGlvbiAoY2hhbmdlVXJsLCBhcHBVcmwsIGFwcFVhKSB7XFxcXG4gICAgYWRkTGlzdGVuZXIoXFxcXFxcXCJvbkNsb3NlXFxcXFxcXCIsICQudG9TdHJpbmcoKHVybCkgPT4ge1xcXFxuICAgICAgICBjbGVhclZhcihcXFxcXFxcImFwcG5vd1xcXFxcXFwiKTtcXFxcbiAgICAgICAgY2xlYXJWYXIodXJsKTtcXFxcbiAgICB9XFxcXG4gICAgLCBNWV9VUkwpKTtcXFxcbiAgICBsZXQgaXRlbXMgPSBbXSwgaHRtbCA9IGdldFZhcihNWV9VUkwsIFxcXFxcXFwiXFxcXFxcXCIpLCBkYXRhID0ge307XFxcXG4gICAgaWYgKGh0bWwgPT0gXFxcXFxcXCJcXFxcXFxcIikge1xcXFxuICAgICAgICBsZXQgdXJsID0gTVlfVVJMLnNwbGl0KFxcXFxcXFwiIyNcXFxcXFxcIilbMV07XFxcXG4gICAgICAgIHVybCA9IGNoYW5nZVVybCh1cmwpO1xcXFxuICAgICAgICBodG1sID0gZmV0Y2godXJsLCB7aGVhZGVyczoge1xcXFxcXFwiVXNlci1BZ2VudFxcXFxcXFwiOiBhcHBVYX19KTtcXFxcbiAgICAgICAgcHV0VmFyKE1ZX1VSTCwgaHRtbCk7XFxcXG4gICAgfVxcXFxuICAgIGlmIChhcHBVcmwuaW5jbHVkZXMoXFxcXFxcXCJ4Z2FwcFxcXFxcXFwiKSkge1xcXFxuICAgICAgICBkYXRhID0gSlNPTi5wYXJzZShodG1sKS5kYXRhLnZvZF9pbmZvO1xcXFxuICAgIH0gZWxzZSB7XFxcXG4gICAgICAgIGRhdGEgPSBKU09OLnBhcnNlKGh0bWwpLmRhdGE7XFxcXG4gICAgfVxcXFxuICAgIGxldCB7dm9kX25hbWUsIHZvZF9waWMsIHZvZF9jb250ZW50LCB2b2RfY2xhc3MsIHZvZF9yZW1hcmtzLCB2b2RfZGlyZWN0b3IsIHZvZF9hY3Rvciwgdm9kX2FyZWEsIHZvZF9sYW5nLCB2b2RfeWVhcn0gPSBkYXRhO1xcXFxuICAgIGl0ZW1zLnB1c2goe3RpdGxlOiB2b2RfbmFtZSArIFxcXFxcXFwiXFxcXFxcXFxuXFxcXFxcXCIgKyB2b2RfY2xhc3MgKyBcXFxcXFxcIixcXFxcXFxcIiArIHZvZF9yZW1hcmtzICsgXFxcXFxcXCJcXFxcXFxcXG5cXFxcXFxcIiArIHZvZF9hcmVhICsgXFxcXFxcXCIvXFxcXFxcXCIgKyB2b2RfbGFuZyArIFxcXFxcXFwiL1xcXFxcXFwiICsgdm9kX3llYXIsIGRlc2M6IFxcXFxcXFwiXFxcXFxcXFx1NWJmY1xcXFxcXFxcdTZmMTQ6XFxcXFxcXCIgKyB2b2RfZGlyZWN0b3IgKyBcXFxcXFxcIlxcXFxcXFxcblxcXFxcXFxcdTRlM2JcXFxcXFxcXHU2ZjE0OlxcXFxcXFwiICsgdm9kX2FjdG9yLCBwaWNfdXJsOiB2b2RfcGljLCB1cmw6IFxcXFxcXFwiaGlrZXI6Ly9lbXB0eVxcXFxcXFwiLCBjb2xfdHlwZTogXFxcXFxcXCJtb3ZpZV8xX3ZlcnRpY2FsX3BpY19ibHVyXFxcXFxcXCJ9LCB7dGl0bGU6IFxcXFxcXFwiXFxcXFxcXFx1NTI2N1xcXFxcXFxcdTYwYzVcXFxcXFxcXHU3YjgwXFxcXFxcXFx1NGVjYjpcXFxcXFxcIiwgZGVzYzogdm9kX2NvbnRlbnQsIHVybDogJChcXFxcXFxcImhpa2VyOi8vZW1wdHkjbm9SZWNvcmRIaXN0b3J5I1xcXFxcXFwiKS5ydWxlKChkZXNjKSA9PiB7XFxcXG4gICAgICAgIHNldFJlc3VsdChbe3RpdGxlOiBkZXNjLCBjb2xfdHlwZTogXFxcXFxcXCJsb25nX3RleHRcXFxcXFxcIn1dKTtcXFxcbiAgICB9XFxcXG4gICAgLCB2b2RfY29udGVudCksIGNvbF90eXBlOiBcXFxcXFxcInRleHRfMVxcXFxcXFwifSk7XFxcXG4gICAgbGV0IGRuZW4gPSBnZXRNeVZhcihcXFxcXFxcImRuZW5cXFxcXFxcIiwgXFxcXFxcXCIwXFxcXFxcXCIpO1xcXFxuICAgIGl0ZW1zLnB1c2goe3RpdGxlOiBcXFxcXFxcIlxcXFxcXFxcdTY1YWRcXFxcXFxcXHU2M2QyOlxcXFxcXFwiICsgKGRuZW4gPT0gXFxcXFxcXCIxXFxcXFxcXCIgPyBcXFxcXFxcIlxcXFxcXFxcdTIwMWNcXFxcXFxcXHUyMDFjXFxcXFxcXFx1MjcwNVxcXFxcXFxcdTIwMWRcXFxcXFxcXHUyMDFkXFxcXFxcXCIgOiBcXFxcXFxcIlxcXFxcXFxcdTI3NGVcXFxcXFxcIiksIHVybDogJChcXFxcXFxcIlxcXFxcXFwiKS5sYXp5UnVsZSgoZG5lbikgPT4ge1xcXFxuICAgICAgICBpZiAoZG5lbiA9PSBcXFxcXFxcIjFcXFxcXFxcIikge1xcXFxuICAgICAgICAgICAgcHV0TXlWYXIoXFxcXFxcXCJkbmVuXFxcXFxcXCIsIFxcXFxcXFwiMFxcXFxcXFwiKTtcXFxcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXFxcbiAgICAgICAgICAgIHJldHVybiBcXFxcXFxcInRvYXN0Oi8vXFxcXFxcXFx1NWRmMlxcXFxcXFxcdTc5ODFcXFxcXFxcXHU3NTI4XFxcXFxcXFx1NjVhZFxcXFxcXFxcdTYzZDJcXFxcXFxcXHU4YzAzXFxcXFxcXFx1NzUyOCFcXFxcXFxcIjtcXFxcbiAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgIHB1dE15VmFyKFxcXFxcXFwiZG5lblxcXFxcXFwiLCBcXFxcXFxcIjFcXFxcXFxcIik7XFxcXG4gICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxcXG4gICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJ0b2FzdDovL1xcXFxcXFxcdTVkZjJcXFxcXFxcXHU1ZjAwXFxcXFxcXFx1NTQyZlxcXFxcXFxcdTY1YWRcXFxcXFxcXHU2M2QyXFxcXFxcXFx1OGMwM1xcXFxcXFxcdTc1MjghXFxcXFxcXCI7XFxcXG4gICAgICAgIH1cXFxcbiAgICB9XFxcXG4gICAgLCBkbmVuKSwgY29sX3R5cGU6IFxcXFxcXFwidGV4dF8yXFxcXFxcXCJ9KTtcXFxcbiAgICBpdGVtcy5wdXNoKHt0aXRsZTogXFxcXFxcXCJcXFxcXFxcXHU3ZWJmXFxcXFxcXFx1OGRlZlxcXFxcXFxcdTkxNGRcXFxcXFxcXHU3ZjZlXFxcXFxcXCIsIHVybDogXFxcXFxcXCJoaWtlcjovL2VtcHR5I25vUmVjb3JkSGlzdG9yeSNAcnVsZT1qczp0aGlzLmQ9W107cmVxdWlyZSgnaHR0cHM6Ly9naXRlYS5jb20vQUk5NTcvSGlrZXIvcmF3L20vdi9Sb3V0ZS5qcycpO1JvdXRlLnNldFBhcnNlKCk7c2V0UmVzdWx0KGQpO1xcXFxcXFwiLCBjb2xfdHlwZTogXFxcXFxcXCJ0ZXh0XzJcXFxcXFxcIn0pO1xcXFxuICAgIGl0ZW1zLnB1c2goe3RpdGxlOiBcXFxcXFxcIlxcXFxcXFxcdTIwMWNcXFxcXFxcXHUyMDFjXFxcXFxcXFx1MjE5M1xcXFxcXFxcdTIxOTFcXFxcXFxcXHUyMDFkXFxcXFxcXFx1MjAxZFxcXFxcXFwiLCB1cmw6IFxcXFxcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdhcHBtYXBwc29ydCcsIGdldFZhcignYXBwbWFwcHNvcnQnLCcxJyk9PScxJz8nMCc6JzEnKTtyZWZyZXNoUGFnZShmYWxzZSk7J3RvYXN0Oi8vXFxcXFxcXFx1NTIwN1xcXFxcXFxcdTYzNjJcXFxcXFxcXHU2MjEwXFxcXFxcXFx1NTI5ZiEnXFxcXFxcXCIsIGNvbF90eXBlOiBcXFxcXFxcInNjcm9sbF9idXR0b25cXFxcXFxcIn0pO1xcXFxuICAgIGxldCBjb250cyA9IFtdLCB0YWJzID0gW107XFxcXG4gICAgaWYgKGFwcFVybC5pbmNsdWRlcyhcXFxcXFxcImFwaS5waHAvYXBwXFxcXFxcXCIpIHx8IGFwcFVybC5pbmNsdWRlcyhcXFxcXFxcInhnYXBwXFxcXFxcXCIpKSB7XFxcXG4gICAgICAgIGNvbnRzID0gZGF0YS52b2RfdXJsX3dpdGhfcGxheWVyO1xcXFxuICAgIH0gZWxzZSB7XFxcXG4gICAgICAgIGNvbnRzID0gZGF0YS52b2RfcGxheV9saXN0O1xcXFxuICAgIH1cXFxcbiAgICBpZiAoY29udHMubGVuZ3RoIDwgMSkge1xcXFxuICAgICAgICBjb250cyA9IGRhdGEudm9kX3BsYXlfdXJsLnNwbGl0KFxcXFxcXFwiJCQkXFxcXFxcXCIpO1xcXFxuICAgICAgICB0YWJzID0gZGF0YS52b2RfcGxheV9mcm9tLnNwbGl0KFxcXFxcXFwiJCQkXFxcXFxcXCIpO1xcXFxuICAgIH1cXFxcbiAgICBsZXQgcHRhYiA9IFxcXFxcXFwiXFxcXFxcXCI7XFxcXG4gICAgaWYgKGdldFZhcihcXFxcXFxcImFwcG5vd1xcXFxcXFwiLCBcXFxcXFxcIlxcXFxcXFwiKSA9PSBcXFxcXFxcIlxcXFxcXFwiKSB7XFxcXG4gICAgICAgIHB1dFZhcihcXFxcXFxcImFwcG5vd1xcXFxcXFwiLCBcXFxcXFxcIjBcXFxcXFxcIik7XFxcXG4gICAgfVxcXFxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29udHMubGVuZ3RoOyBpKyspIHtcXFxcbiAgICAgICAgbGV0IHNwdGFiID0gXFxcXFxcXCJcXFxcXFxcIiwgdGFibmFtZSA9IFxcXFxcXFwiXFxcXFxcXCI7XFxcXG4gICAgICAgIGlmIChhcHBVcmwuaW5jbHVkZXMoXFxcXFxcXCJhcGkucGhwL2FwcFxcXFxcXFwiKSB8fCBhcHBVcmwuaW5jbHVkZXMoXFxcXFxcXCJ4Z2FwcFxcXFxcXFwiKSkge1xcXFxuICAgICAgICAgICAgc3B0YWIgPSBjb250c1tpXS5jb2RlID8gY29udHNbaV0uY29kZSA6IHRhYnNbaV07XFxcXG4gICAgICAgICAgICB0YWJuYW1lID0gY29udHNbaV0ubmFtZSB8fCBzcHRhYjtcXFxcbiAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgIHNwdGFiID0gY29udHNbaV0uZnJvbSA/IGNvbnRzW2ldLmZyb20gOiB0YWJzW2ldO1xcXFxuICAgICAgICAgICAgdGFibmFtZSA9IGNvbnRzW2ldLnBsYXllcl9pbmZvID8gY29udHNbaV0ucGxheWVyX2luZm8uc2hvdyA6IHNwdGFiO1xcXFxuICAgICAgICB9XFxcXG4gICAgICAgIGl0ZW1zLnB1c2goe3RpdGxlOiBnZXRWYXIoXFxcXFxcXCJhcHBub3dcXFxcXFxcIikgPT0gaSA/IFxcXFxcXFwiXFxcXFxcXFx1MjAxY1xcXFxcXFxcdTIwMWNcXFxcXFxcXHUyMDFkXFxcXFxcXFx1MjAxZFxcXFxcXFwiICsgdGFibmFtZS5ib2xkKCkuZm9udGNvbG9yKFxcXFxcXFwiI0ZBNzI5OFxcXFxcXFwiKSA6IHRhYm5hbWUsIHVybDogXFxcXFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ2FwcG5vdycsJ1xcXFxcXFwiICsgaSArIFxcXFxcXFwiJyk7cmVmcmVzaFBhZ2UoZmFsc2UpOyd0b2FzdDovL1xcXFxcXFxcdTUyMDdcXFxcXFxcXHU2MzYyXFxcXFxcXFx1NjIxMFxcXFxcXFxcdTUyOWYhJ1xcXFxcXFwiLCBjb2xfdHlwZTogXFxcXFxcXCJzY3JvbGxfYnV0dG9uXFxcXFxcXCJ9KTtcXFxcbiAgICAgICAgaWYgKGdldFZhcihcXFxcXFxcImFwcG5vd1xcXFxcXFwiKSA9PSBpKSB7XFxcXG4gICAgICAgICAgICBwdGFiID0gc3B0YWI7XFxcXG4gICAgICAgIH1cXFxcbiAgICB9XFxcXG4gICAgbGV0IGxpc3QgPSBbXSwgaW5kZXggPSBnZXRWYXIoXFxcXFxcXCJhcHBub3dcXFxcXFxcIik7XFxcXG4gICAgaWYgKGFwcFVybC5pbmNsdWRlcyhcXFxcXFxcImFwaS5waHAvYXBwXFxcXFxcXCIpIHx8IGFwcFVybC5pbmNsdWRlcyhcXFxcXFxcInhnYXBwXFxcXFxcXCIpKSB7XFxcXG4gICAgICAgIGxpc3QgPSBjb250c1tpbmRleF0udXJsLnNwbGl0KFxcXFxcXFwiI1xcXFxcXFwiKTtcXFxcbiAgICB9IGVsc2Uge1xcXFxuICAgICAgICBsaXN0ID0gY29udHNbaW5kZXhdLnVybHMgPyBjb250c1tpbmRleF0udXJscyA6IGNvbnRzW2luZGV4XS51cmwuc3BsaXQoXFxcXFxcXCIjXFxcXFxcXCIpO1xcXFxuICAgIH1cXFxcbiAgICBpZiAoZ2V0VmFyKFxcXFxcXFwiYXBwbWFwcHNvcnRcXFxcXFxcIiwgXFxcXFxcXCIxXFxcXFxcXCIpID09IFxcXFxcXFwiMFxcXFxcXFwiKSB7XFxcXG4gICAgICAgIGxpc3QucmV2ZXJzZSgpO1xcXFxuICAgIH1cXFxcbiAgICBsZXQgamllayA9IFtdO1xcXFxuICAgIHRyeSB7XFxcXG4gICAgICAgIGlmIChhcHBVcmwuaW5jbHVkZXMoXFxcXFxcXCJhcGkucGhwL2FwcFxcXFxcXFwiKSB8fCBhcHBVcmwuaW5jbHVkZXMoXFxcXFxcXCJ4Z2FwcFxcXFxcXFwiKSkge1xcXFxuICAgICAgICAgICAgamllay5wdXNoKGNvbnRzW2luZGV4XS5wYXJzZV9hcGkgfHwgXFxcXFxcXCJcXFxcXFxcIik7XFxcXG4gICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICBqaWVrID0gKGNvbnRzW2luZGV4XS5wbGF5ZXJfaW5mby5wYXJzZTIgfHwgXFxcXFxcXCJcXFxcXFxcIikuc3BsaXQoXFxcXFxcXCIsXFxcXFxcXCIpLmNvbmNhdCgoY29udHNbaW5kZXhdLnBsYXllcl9pbmZvLnBhcnNlIHx8IFxcXFxcXFwiXFxcXFxcXCIpLnNwbGl0KFxcXFxcXFwiLFxcXFxcXFwiKSk7XFxcXG4gICAgICAgICAgICBqaWVrID0gamllay5tYXAoY3VyID0+IGN1ci5yZXBsYWNlKFxcXFxcXFwiLi5cXFxcXFxcIiwgXFxcXFxcXCIuXFxcXFxcXCIpLnJlcGxhY2UoXFxcXFxcXCJqc29uYnNcXFxcXFxcIiwgXFxcXFxcXCJcXFxcXFxcIikpO1xcXFxuICAgICAgICB9XFxcXG4gICAgfVxcXFxuICAgIGNhdGNoIChlKSB7XFxcXG4gICAgfVxcXFxuICAgIGppZWsgPSBqaWVrLmZpbHRlcihjdXIgPT4gISFjdXIpO1xcXFxuICAgIGxldCBqeFVybCA9IGppZWtbMF0gfHwgXFxcXFxcXCJcXFxcXFxcIjtcXFxcbiAgICBsb2coXFxcXFxcXCJcXFxcXFxcXG5cXFxcXFxcXHU1ZjUzXFxcXFxcXFx1NTI0ZFxcXFxcXFxcdTdlYmZcXFxcXFxcXHU4ZGVmOlxcXFxcXFwiICsgcHRhYiArIFxcXFxcXFwiXFxcXFxcXFxuXFxcXFxcXFx1NjNhNVxcXFxcXFxcdTUzZTNcXFxcXFxcXHU1MjE3XFxcXFxcXFx1ODg2ODpcXFxcXFxcIiArICQuc3RyaW5naWZ5KGppZWspKTtcXFxcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IGxpc3QubGVuZ3RoOyBqKyspIHtcXFxcbiAgICAgICAgbGV0IHZsaW5rID0gXFxcXFxcXCJcXFxcXFxcIiwgdGl0bGUgPSBcXFxcXFxcIlxcXFxcXFwiO1xcXFxuICAgICAgICBpZiAobGlzdFtqXS51cmwpIHtcXFxcbiAgICAgICAgICAgIHZsaW5rID0gbGlzdFtqXS51cmwucmVwbGFjZSgvIzQ1NiMvZywgXFxcXFxcXCJodHRwXFxcXFxcXCIpLnJlcGxhY2UoLyMxMjMjL2csIFxcXFxcXFwiLlxcXFxcXFwiKS5yZXBsYWNlKC8jNzg5Iy9nLCBcXFxcXFxcIjpcXFxcXFxcIik7XFxcXG4gICAgICAgICAgICB0aXRsZSA9IGxpc3Rbal0ubmFtZTtcXFxcbiAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgIHZsaW5rID0gbGlzdFtqXS5zcGxpdChcXFxcXFxcIiRcXFxcXFxcIilbMV07XFxcXG4gICAgICAgICAgICB0aXRsZSA9IGxpc3Rbal0uc3BsaXQoXFxcXFxcXCIkXFxcXFxcXCIpWzBdO1xcXFxuICAgICAgICB9XFxcXG4gICAgICAgIGl0ZW1zLnB1c2goe3RpdGxlOiB0aXRsZSwgY29sX3R5cGU6IFxcXFxcXFwidGV4dF80XFxcXFxcXCIsIHVybDogZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL2xhenlQYXJzZVxcXFxcXFwiKSkucnVsZSl9KTtcXFxcbiAgICB9XFxcXG4gICAgc2V0UmVzdWx0KGl0ZW1zKTtcXFxcbn1cXFxcbikoXFxcXG5mdW5jdGlvbiBjaGFuZ2VVcmwodXJsKSB7XFxcXG4gICAgbGV0IG5ld1VybCA9IHVybDtcXFxcbiAgICBpZiAodXJsLmluY2x1ZGVzKFxcXFxcXFwib21vZnVuXFxcXFxcXCIpKSB7XFxcXG4gICAgICAgIG5ld1VybCA9IHVybCArIFxcXFxcXFwiJmNzcmY9YSUyQklLR0x1bkpDWnVhZCUyQnhFVExyWnVCb3FobHVGQ0QwZEg4NkU4SUVOdkJ6TWZCTGE2ZEI4UnpveHhJdnZCRU1lSnpKblVTdDUxRmhsUEJkNEtyNXloR1hseU52RGtKeU5NRGdEWjFiJTJGc2pYQWVNdGoxN1h0ZU04cHVUWTJQUW5Rd1lPeWolMkZIVUNBVlJaa3JmbHNrODdZRzFWZVN3bkVUOFRwckREOHQ2dWclM0RAc2lnbmF0dXJlPUZFRDRBMDkyRDVCQkJFMTgxMTdBM0I1NThFQjY0NjFBOTJBNTJDRjdcXFxcXFxcIjtcXFxcbiAgICB9IGVsc2Uge1xcXFxuICAgICAgICBpZiAodXJsLmluY2x1ZGVzKFxcXFxcXFwieGlubHVhblxcXFxcXFwiKSkge1xcXFxuICAgICAgICAgICAgbmV3VXJsID0gdXJsICsgXFxcXFxcXCImY3NyZj1TUkVRQVBYOHRGRUtwVjJkTERqTFpoS2s4SXhKZkRXaE4lMkJta3NXSiUyRmtkUlZ3Z1VoJTJGUWtURFpFb1FBU2FBcDdIelVpeDg3VCUyQlBMa0FJdzZ5SCUyQjZNcnZhcUpNOXJKNWwyYjg1SVFSYkJiVyUyQkRiU1lSTzhibVRzS2RMWURUVnRSSGh6NW55bFJXbEdVaWR4SGZWeUxPOXRaVWlCazFZMkF3byUyRnpzYTJ0SDJ1OCUzREBzaWduYXR1cmU9RkJDNzA4OEM2NzdEMjk3RTZCQkJDODU4NEE5MzM3MkRERTEwRkQ5NlxcXFxcXFwiO1xcXFxuICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgaWYgKHVybC5pbmNsdWRlcyhcXFxcXFxcInN4YnJkXFxcXFxcXCIpKSB7XFxcXG4gICAgICAgICAgICAgICAgbmV3VXJsID0gdXJsICsgXFxcXFxcXCImY3NyZj1yMk5ETHRwUzhFdXFoJTJGJTJGOFk5NnljT1VPS1M5SUN6Tll6eWF3NUMyVWZFZ29ERkRIWCUyRnJxaiUyQlljTFdRekg1JTJCUjZtb1VPbHdPQW9KUkV0VWEzNzZ1ZDc0NjI3VUR6TlExc1JHZFREOGtiMzZzMWVUTWVtY244ZDBpN1dKNms5aWg1SVA0QWQ3ZnBhNiUyRjNEc3Qxam9HbmN5cjcxNmRSSERNZmN2cnMzUzI5akklM0RAY2xpZW50X25hbWU9NTVXRjU1eUw1YjJ4NktlR1xcXFxcXFwiO1xcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICB9XFxcXG4gICAgfVxcXFxuICAgIHJldHVybiBuZXdVcmw7XFxcXG59XFxcXG4sXFxcXFxcXCJodHRwOi8vemdqeGR0Zy5jbi9ydWlmZW5nbGJfYXBpLnBocC92MS52b2RcXFxcXFxcIixcXFxcXFxcIm9raHR0cC80LjEuMFxcXFxcXFwiKVxcXCJ9LHtcXFwibmFtZVxcXCI6XFxcIuinhumikeino+aekFxcXCIsXFxcInBhdGhcXFwiOlxcXCJsYXp5UGFyc2VcXFwiLFxcXCJydWxlXFxcIjpcXFwiKFxcXFxuZnVuY3Rpb24gKCkge1xcXFxuICAgIHJldHVybiAkKFxcXFxcXFwiXFxcXFxcXCIpLmxhenlSdWxlKChwdGFiLCB2bGluaywganhVcmwsIGFwcFVybCkgPT4ge1xcXFxuICAgICAgICBsb2coXFxcXFxcXCJcXFxcXFxcXHU4OWM2XFxcXFxcXFx1OTg5MVxcXFxcXFxcdTk0ZmVcXFxcXFxcXHU2M2E1OlxcXFxcXFwiICsgdmxpbmspO1xcXFxuICAgICAgICB0cnkge1xcXFxuICAgICAgICAgICAgZnVuY3Rpb24gY2hhbmdlVmlkZW9VcmwodXJsKSB7XFxcXG4gICAgICAgICAgICAgICAgaWYgKHVybC5pbmNsdWRlcyhcXFxcXFxcIndrZmlsZVxcXFxcXFwiKSkge1xcXFxuICAgICAgICAgICAgICAgICAgICB1cmwgPSB1cmwgKyBcXFxcXFxcIjt7UmVmZXJlckBodHRwczovL2ZhbnR1YW4ud2tmaWxlLmNvbS99XFxcXFxcXCI7XFxcXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgaWYgKHB0YWIgPT0gXFxcXFxcXCJiaWxpYmlsaVxcXFxcXFwiKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmwgPSB1cmwgKyBcXFxcXFxcIjt7UmVmZXJlckBodHRwczovL3d3dy5iaWxpYmlsaS5jb20vJiZVc2VyLUFnZW50QE1vemlsbGEvNS4wfVxcXFxcXFwiO1xcXFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHB0YWIgPT0gXFxcXFxcXCJtZ3R2XFxcXFxcXCIpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmwgPSB1cmwgKyBcXFxcXFxcIjt7UmVmZXJlckB3d3cubWd0di5jb20mJlVzZXItQWdlbnRATW96aWxsYS81LjB9XFxcXFxcXCI7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1cmwuaW5jbHVkZXMoXFxcXFxcXCJvamJrXFxcXFxcXCIpKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybCA9IHVybCArIFxcXFxcXFwiO3tSZWZlcmVyQGh0dHBzOi8vYmFrLm9qYmtqeC5jb20vfVxcXFxcXFwiO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICBpZiAoIXVybC5pbmNsdWRlcyhcXFxcXFxcImh0dHBcXFxcXFxcIikpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxcXFxcXFwiXFxcXFxcXFx1OTRmZVxcXFxcXFxcdTYzYTVcXFxcXFxcXHU0ZTBkXFxcXFxcXFx1NjYyZlxcXFxcXFxcdTRlZTVodHRwXFxcXFxcXFx1NWYwMFxcXFxcXFxcdTU5MzRcXFxcXFxcIik7XFxcXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgaWYgKC9cXFxcXFxcXC5tM3U4Ly50ZXN0KHVybCkpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWNoZU0zdTgodXJsKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1cmwgKyBcXFxcXFxcIiNpc1ZpZGVvPXRydWUjXFxcXFxcXCI7XFxcXG4gICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICBmdW5jdGlvbiBEZSh3b3JkLCB0b2tlbl9rZXksIHRva2VuX2l2KSB7XFxcXG4gICAgICAgICAgICAgICAgZXZhbChnZXRDcnlwdG9KUygpKTtcXFxcbiAgICAgICAgICAgICAgICB2YXIga2V5ID0gQ3J5cHRvSlMuZW5jLlV0ZjgucGFyc2UodG9rZW5fa2V5KTtcXFxcbiAgICAgICAgICAgICAgICB2YXIgaXYgPSBDcnlwdG9KUy5lbmMuVXRmOC5wYXJzZSh0b2tlbl9pdik7XFxcXG4gICAgICAgICAgICAgICAgcmV0dXJuIENyeXB0b0pTLkFFUy5kZWNyeXB0KHdvcmQsIGtleSwge2l2OiBpdiwgbW9kZTogQ3J5cHRvSlMubW9kZS5DQkMsIHBhZGRpbmc6IENyeXB0b0pTLnBhZC5Qa2NzN30pLnRvU3RyaW5nKENyeXB0b0pTLmVuYy5VdGY4KTtcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIGlmICgvXFxcXFxcXFwubTN1OHxcXFxcXFxcXC5tcDR8b2JqXFxcXFxcXFwvdG9zfG5ldGVhc2VcXFxcXFxcXC5jb20vLnRlc3QodmxpbmspICYmIC9odHRwLy50ZXN0KHZsaW5rKSAmJiAhL1xcXFxcXFxcLmh0bWwvLnRlc3QodmxpbmspKSB7XFxcXG4gICAgICAgICAgICAgICAgbGV0IHB1cmwgPSB2bGluaztcXFxcbiAgICAgICAgICAgICAgICBpZiAocHRhYi5pbmNsdWRlcyhcXFxcXFxcImR1b2R1b3p5XFxcXFxcXCIpIHx8IHZsaW5rLmluY2x1ZGVzKFxcXFxcXFwibTN1OC5jYWNoZS5zdW95by5jY1xcXFxcXFwiKSkge1xcXFxuICAgICAgICAgICAgICAgICAgICBsZXQgdXJsID0gSlNPTi5wYXJzZShmZXRjaChcXFxcXFxcImh0dHBzOi8vamhwYy5tYW5kdWh1LmNvbS9kdW9kdW8vYXBpLnBocD91cmw9XFxcXFxcXCIgKyB2bGluaykpLnVybDtcXFxcbiAgICAgICAgICAgICAgICAgICAgcHVybCA9IERlKHVybCwgbWQ1KFxcXFxcXFwiclhqV3ZYbDZcXFxcXFxcIiksIFxcXFxcXFwiTlhiSG9XSmJwc0VPaW44YlxcXFxcXFwiKTtcXFxcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgICAgICAgICBpZiAocHRhYi5pbmNsdWRlcyhcXFxcXFxcIkNMNEtcXFxcXFxcIikgfHwgdmxpbmsuaW5jbHVkZXMoXFxcXFxcXCJydWlmZW5nbGJcXFxcXFxcIikpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBodG1sID0gZmV0Y2goXFxcXFxcXCJodHRwczovL3R2LnlqaGFuLmNvbTo0NDMzL0NMNEsvP3VybD1cXFxcXFxcIiArIHZsaW5rKSwgbGVfdG9rZW4gPSBodG1sLm1hdGNoKC9sZV90b2tlbi4qPS4qXFxcXFxcXCIoLiopXFxcXFxcXCIvKVsxXSwgdXJsID0gaHRtbC5tYXRjaCgvXFxcXFxcXCJ1cmxcXFxcXFxcIi4qOi4qXFxcXFxcXCIoLiopXFxcXFxcXCIvKVsxXTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1cmwgPSBEZSh1cmwsIFxcXFxcXFwiQTQyRUFDMEMyQjQwODQ3MlxcXFxcXFwiLCBsZV90b2tlbik7XFxcXG4gICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgaWYgKCF2bGluay5pbmNsdWRlcyhcXFxcXFxcImxhb2RpXFxcXFxcXCIpKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjaGFuZ2VWaWRlb1VybChwdXJsKTtcXFxcbiAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICBpZiAocHRhYi5pbmNsdWRlcyhcXFxcXFxcIm5ldGZsaXhtb21cXFxcXFxcIikgfHwgL15uZXRmbGl4bW9tLy50ZXN0KHZsaW5rKSkge1xcXFxuICAgICAgICAgICAgICAgIGxldCBodG1sID0gZmV0Y2goXFxcXFxcXCJodHRwczovL3BsYXllci40a3lhLmNvbS8/dXJsPVxcXFxcXFwiICsgdmxpbmssIHtoZWFkZXJzOiB7cmVmZXJlcjogXFxcXFxcXCJodHRwczovL25ldGZsaXgubW9tXFxcXFxcXCJ9fSksIGxlX3Rva2VuID0gaHRtbC5tYXRjaCgvbGVfdG9rZW5cXFxcXFxcXHMqPVxcXFxcXFxccypcXFxcXFxcIiguKilcXFxcXFxcIi8pWzFdLCB1cmwgPSBodG1sLm1hdGNoKC9cXFxcXFxcInVybFxcXFxcXFwiXFxcXFxcXFxzKjpcXFxcXFxcXHMqXFxcXFxcXCIoLiopXFxcXFxcXCIvKVsxXTtcXFxcbiAgICAgICAgICAgICAgICByZXR1cm4gY2hhbmdlVmlkZW9VcmwoRGUodXJsLCBcXFxcXFxcIjMzMzE4MEIzRUYwRUQ5RDBcXFxcXFxcIiwgbGVfdG9rZW4pKTtcXFxcbiAgICAgICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICAgICAgaWYgKGFwcFVybC5pbmNsdWRlcyhcXFxcXFxcImlhcHAubmZ1eHMuY2x1YlxcXFxcXFwiKSkge1xcXFxuICAgICAgICAgICAgICAgICAgICBsZXQgaHRtbCA9IGZldGNoKFxcXFxcXFwiaHR0cHM6Ly9hcGkueGt2aWRlby5kZXNpZ24vbTN1OC5waHA/dXJsPVxcXFxcXFwiICsgdmxpbmspLCBsZV90b2tlbiA9IGh0bWwubWF0Y2goL2J0X3Rva2VuXFxcXFxcXFxzKj1cXFxcXFxcXHMqXFxcXFxcXCIoLiopXFxcXFxcXCIvKVsxXSwgdXJsID0gaHRtbC5tYXRjaCgvXFxcXFxcXCJ1cmxcXFxcXFxcIlxcXFxcXFxccyo6XFxcXFxcXFxzKmdldFZpZGVvSW5mb1xcXFxcXFxcKFxcXFxcXFwiKC4qKVxcXFxcXFwiLylbMV07XFxcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjaGFuZ2VWaWRlb1VybChEZSh1cmwsIFxcXFxcXFwienNkcmY4ODAyMDNnaHVyZFxcXFxcXFwiLCBsZV90b2tlbikpO1xcXFxuICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIGxvZyhcXFxcXFxcIlxcXFxcXFxcdTRmN2ZcXFxcXFxcXHU3NTI4XFxcXFxcXFx1NjNhNVxcXFxcXFxcdTUzZTM6XFxcXFxcXCIgKyBqeFVybCk7XFxcXG4gICAgICAgICAgICBsZXQgbGluayA9IGp4VXJsICsgdmxpbmssIHNjb2RlID0gSlNPTi5wYXJzZShmZXRjaChsaW5rLCB7aGVhZGVyczoge1xcXFxcXFwiVXNlci1BZ2VudFxcXFxcXFwiOiBcXFxcXFxcIkRhcnQvMi4xMyAoZGFydDppbylcXFxcXFxcIn0sIHJlZGlyZWN0OiBmYWxzZSwgd2l0aFN0YXR1c0NvZGU6IHRydWV9KSk7XFxcXG4gICAgICAgICAgICBpZiAoc2NvZGUuc3RhdHVzQ29kZSA9PSBcXFxcXFxcIjMwMlxcXFxcXFwiIHx8IHNjb2RlLnN0YXR1c0NvZGUgPT0gXFxcXFxcXCIzMDFcXFxcXFxcIikge1xcXFxuICAgICAgICAgICAgICAgIGxldCByZWR1cmwgPSBzY29kZS5oZWFkZXJzLmxvY2F0aW9uWzBdLnJlcGxhY2UoL1xcXFxcXFxcXFxcXFxcXFwvZywgXFxcXFxcXCJcXFxcXFxcIik7XFxcXG4gICAgICAgICAgICAgICAgbG9nKFxcXFxcXFwiXFxcXFxcXFx1OTFjZFxcXFxcXFxcdTViOWFcXFxcXFxcXHU1NDExOlxcXFxcXFwiICsgcmVkdXJsKTtcXFxcbiAgICAgICAgICAgICAgICBsZXQgcHVybCA9IHJlZHVybDtcXFxcbiAgICAgICAgICAgICAgICBpZiAoLyh1cmx8dmlkfHYpXFxcXFxcXFw9Ly50ZXN0KHJlZHVybCkpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgcHVybCA9IEpTT04ucGFyc2UoZmV0Y2gocmVkdXJsLCB7fSkpLnVybDtcXFxcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgICAgICAgICBpZiAoL1xcXFxcXFxcPWh0dHAvLnRlc3QocmVkdXJsKSAmJiAvXFxcXFxcXFwubTN1OHxcXFxcXFxcXC5tcDR8XFxcXFxcXFwuZmx2Ly50ZXN0KHJlZHVybCkpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1cmwgPSByZWR1cmwuc3Vic3RyaW5nKHJlZHVybC5pbmRleE9mKFxcXFxcXFwiPWh0dHBcXFxcXFxcIikgKyAxKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICByZXR1cm4gY2hhbmdlVmlkZW9VcmwocHVybCk7XFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICBsZXQgaHRtbCA9IHNjb2RlLmJvZHk7XFxcXG4gICAgICAgICAgICBpZiAoLzQwNCBOb3QgRm91bmR85aSH5qGI5ZCO5Y+v57un57ut6K6/6ZeuLy50ZXN0KGh0bWwpKSB7XFxcXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxcXFxcXFwiNDA0XFxcXFxcXFx1NGU4NlxcXFxcXFwiKTtcXFxcbiAgICAgICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICAgICAgaWYgKC9cXFxcXFxcXDxib2R5Ly50ZXN0KGh0bWwpKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgIGxvZyhcXFxcXFxcIlxcXFxcXFxcdTVjMWRcXFxcXFxcXHU4YmQ1XFxcXFxcXFx1NGVjZVxcXFxcXFxcdTdmNTFcXFxcXFxcXHU5ODc1XFxcXFxcXFx1NTVjNVxcXFxcXFxcdTYzYTJcXFxcXFxcIik7XFxcXG4gICAgICAgICAgICAgICAgICAgIHJlcXVpcmVDYWNoZShcXFxcXFxcImh0dHBzOi8vY29kZS5hbGl5dW4uY29tL2x6azIzNTU5L1B1YmxpY1J1bGUvcmF3L21hc3Rlci94NXJ1bGUuanNcXFxcXFxcIiwgMjQpO1xcXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4geDVydWxlKGxpbmssIGxpbmspO1xcXFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICAgICAgICAgIGxvZyhcXFxcXFxcIlxcXFxcXFxcdTVjMWRcXFxcXFxcXHU4YmQ1XFxcXFxcXFx1NGVjZVxcXFxcXFxcdTk3NWVcXFxcXFxcXHU3ZjUxXFxcXFxcXFx1OTg3NVxcXFxcXFxcdTgzYjdcXFxcXFxcXHU1M2Q2XFxcXFxcXCIpO1xcXFxuICAgICAgICAgICAgICAgICAgICB0cnkge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHB1cmwgPSBKU09OLnBhcnNlKGh0bWwpLnVybDtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjaGFuZ2VWaWRlb1VybChwdXJsKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgICAgICBjYXRjaCAoZSkge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHB1cmwgPSBodG1sLm1hdGNoKC9bXFxcXFxcXFwnXFxcXFxcXFxcXFxcXFxcIl11cmxbXFxcXFxcXFwnXFxcXFxcXFxcXFxcXFxcIl06Lio/W1xcXFxcXFxcJ1xcXFxcXFxcXFxcXFxcXCJdKC4qPylbXFxcXFxcXFwnXFxcXFxcXFxcXFxcXFxcIl0vKVsxXS5yZXBsYWNlKC9cXFxcXFxcXFxcXFxcXFxcL2csIFxcXFxcXFwiXFxcXFxcXCIpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNoYW5nZVZpZGVvVXJsKHB1cmwpO1xcXFxuICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICB9XFxcXG4gICAgICAgIGNhdGNoIChlKSB7XFxcXG4gICAgICAgICAgICBsb2coXFxcXFxcXCJcXFxcXFxcXHU2NzJhXFxcXFxcXFx1ODBmZFxcXFxcXFxcdTYyMTBcXFxcXFxcXHU1MjlmXFxcXFxcXFx1ODNiN1xcXFxcXFxcdTUzZDZcXFxcXFxcXHU4OWM2XFxcXFxcXFx1OTg5MVxcXFxcXFxcdTU3MzBcXFxcXFxcXHU1NzQwOlxcXFxcXFwiICsgZS5tZXNzYWdlKTtcXFxcbiAgICAgICAgICAgIGxldCBlbkRuID0gZ2V0TXlWYXIoXFxcXFxcXCJkbmVuXFxcXFxcXCIsIFxcXFxcXFwiMFxcXFxcXFwiKSwgdGVzdDEgPSB2bGluay5zZWFyY2goL3lvdWt1fG1ndHZ8aXhpZ3VhfHFxLmNvbXxxaXlpfG1pZ3V8YmlsaWJpbGl8c29odXxwcHR2fGxlfDE5MDUuY29tLykgIT0gLTEgJiYgdmxpbmsuc2VhcmNoKC9odG1sfGJpbGliaWxpLykgIT0gLTEsIHRlc3QyID0gdmxpbmsuc2VhcmNoKC9MVFxcXFxcXFxcLXxSb25nWGluZ1ZSXFxcXFxcXFwtfHJlbnJlbm1pXFxcXFxcXFwtfHhmeVxcXFxcXFxcLS8pICE9IC0xO1xcXFxuICAgICAgICAgICAgaWYgKCh0ZXN0MSB8fCB0ZXN0MikgJiYgZW5EbiA9PSBcXFxcXFxcIjFcXFxcXFxcIikge1xcXFxuICAgICAgICAgICAgICAgIGxvZyhcXFxcXFxcIlxcXFxcXFxcdThjMDNcXFxcXFxcXHU3NTI4XFxcXFxcXFx1NjVhZFxcXFxcXFxcdTYzZDJcXFxcXFxcXHU4OWUzXFxcXFxcXFx1Njc5MFxcXFxcXFwiKTtcXFxcbiAgICAgICAgICAgICAgICBldmFsKFxcXFxcXFwibGV0IGNvbmZpZyA9XFxcXFxcXCIgKyBmZXRjaChcXFxcXFxcImhpa2VyOi8vZmlsZXMvY2FjaGUvTXlQYXJzZVNldC5qc29uXFxcXFxcXCIpKTtcXFxcbiAgICAgICAgICAgICAgICBldmFsKGZldGNoKGNvbmZpZy5jaikpO1xcXFxuICAgICAgICAgICAgICAgIHJldHVybiBheXRtUGFyc2UodmxpbmspO1xcXFxuICAgICAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgICAgICByZXR1cm4gdmxpbms7XFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgIH1cXFxcbiAgICB9XFxcXG4gICAgLCBwdGFiLCB2bGluaywganhVcmwsIGFwcFVybCk7XFxcXG59XFxcXG4pKClcXFwifV1cIn0iLCJwaWNVcmwiOiJodHRwOi8vaW5ld3MuZ3RpbWcuY29tL25ld3NhcHBfbHMvMC8xNDMwMDQwNzQxNS8wLmpwZ0BSZWZlcmVyPSIsInRpdGxlIjoi5q2m5bqa57qqIOesrOWbm+WtoyJ9
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement