{"id":"ssc-testnet-hive","json":{"contractName":"contract","contractAction":"update","contractPayload":{"name":"nft","params":"","code":"Y29uc3QgQ09OVFJBQ1RfTkFNRT0ibmZ0IixVVElMSVRZX1RPS0VOX1NZTUJPTD0iQkVFIixNQVhfTlVNX0FVVEhPUklaRURfSVNTVUVSUz0xMCxNQVhfTlVNX0xPQ0tFRF9UT0tFTl9UWVBFUz0xMCxNQVhfU1lNQk9MX0xFTkdUSD0xMCxNQVhfREFUQV9QUk9QRVJUWV9MRU5HVEg9MTAwLE1BWF9OVU1fTkZUU19JU1NVQUJMRT0xMCxNQVhfTlVNX05GVFNfRURJVEFCTEU9NTAsTUFYX05VTV9ORlRTX09QRVJBQkxFPTUwLE1BWF9OVU1fQ09OVEFJTkVSX05GVFNfT1BFUkFCTEU9MSxSRVNFUlZFRF9TWU1CT0xTPXtDRUxMOiJiZWdnYXJzIixRVVNUOiJzaW1wbGVnYW1lIixURVNURVJBOiJhZ2dyb2VkIixTUVJMOiJzdHVmZmJ5c3BlbmNlciIsQ1JBRlQ6ImltbWFudWVsOTQiLE1VU0lDOiJhdG9tY29sbGVjdG9yIixDR1VMTDoiY2d1bGwiLE5GVDoiY2FkYXdnIixSQVJFOiJiZWdnYXJzIixMSUM6ImxpY3Rva2VuIixNRU1CRVI6Im1lbWJlcnRva2VuIixDT0ZGRUU6ImMwZmYzM2EiLEFSVDoiYnlvIixST0NLOiJiZWdnYXJzIixDUklUVEVSOiJjcnlwdG9tYW5jZXIiLENJVFk6ImdlcmJlciIsTU9OU1RFUlM6InNpbXBsZWdhbWUiLFNFVFM6Imxvb3RraXQuZ2FtZXMiLEFOSU1FOiJhbmltZXRva2VuIixQSE9UT0ZUOiJ3d3dpZWJlIixCRUVSOiJkZXRsZXYiLFNQSVI6InNwaW52ZXN0IixJRkc6Imxpb24yMDAiLEdVSUxEUzoic2ltcGxlZ2FtZSIsRkNBUkQ6Imxpb24yMDAiLFBYTDoicGl4ZWxuZnQiLENPVzoic3R1ZmZieXNwZW5jZXIiLExPT09UOiJzdHVmZmJ5c3BlbmNlciIsQVBJOiJzdGVlbWNpdHlhcGkiLFNQT1JUU01PTToic3BvcnRzdGVzdGVyIixTV1Q6InNhdHJlbiIsU1RBUjoiYXRvbWNvbGxlY3RvciJ9O2FjdGlvbnMuY3JlYXRlU1NDPWFzeW5jKCk9PntsZXQgZT1hd2FpdCBhcGkuZGIudGFibGVFeGlzdHMoIm5mdHMiKTtpZighMT09PWUpe2F3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgibmZ0cyIsWyJzeW1ib2wiXSksYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJwYXJhbXMiKSxhd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoInBlbmRpbmdVbmRlbGVnYXRpb25zIixbInN5bWJvbCIsImNvbXBsZXRlVGltZXN0YW1wIl0pO2xldCB0PXt9O3QubmZ0Q3JlYXRpb25GZWU9IjEwMCIsdC5uZnRJc3N1YW5jZUZlZT17QkVFOiIwLjAwMSIsUEFMOiIwLjAwMSJ9LHQuZGF0YVByb3BlcnR5Q3JlYXRpb25GZWU9IjEwMCIsdC5lbmFibGVEZWxlZ2F0aW9uRmVlPSIxMDAwIixhd2FpdCBhcGkuZGIuaW5zZXJ0KCJwYXJhbXMiLHQpfX0sYWN0aW9ucy51cGRhdGVQYXJhbXM9YXN5bmMgZT0+e2lmKGFwaS5zZW5kZXIhPT1hcGkub3duZXIpcmV0dXJuO2xldHtuZnRDcmVhdGlvbkZlZTp0LG5mdElzc3VhbmNlRmVlOnMsZGF0YVByb3BlcnR5Q3JlYXRpb25GZWU6YSxlbmFibGVEZWxlZ2F0aW9uRmVlOm59PWUsaT1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSk7dCYmInN0cmluZyI9PXR5cGVvZiB0JiYhYXBpLkJpZ051bWJlcih0KS5pc05hTigpJiZhcGkuQmlnTnVtYmVyKHQpLmd0ZSgwKSYmKGkubmZ0Q3JlYXRpb25GZWU9dCkscyYmIm9iamVjdCI9PXR5cGVvZiBzJiYoaS5uZnRJc3N1YW5jZUZlZT1zKSxhJiYic3RyaW5nIj09dHlwZW9mIGEmJiFhcGkuQmlnTnVtYmVyKGEpLmlzTmFOKCkmJmFwaS5CaWdOdW1iZXIoYSkuZ3RlKDApJiYoaS5kYXRhUHJvcGVydHlDcmVhdGlvbkZlZT1hKSxuJiYic3RyaW5nIj09dHlwZW9mIG4mJiFhcGkuQmlnTnVtYmVyKG4pLmlzTmFOKCkmJmFwaS5CaWdOdW1iZXIobikuZ3RlKDApJiYoaS5lbmFibGVEZWxlZ2F0aW9uRmVlPW4pLGF3YWl0IGFwaS5kYi51cGRhdGUoInBhcmFtcyIsaSl9O2NvbnN0IGlzVG9rZW5UcmFuc2ZlclZlcmlmaWVkPShlLHQscyxhLG4saSk9PnZvaWQgMD09PWUuZXJyb3JzJiYhIWUuZXZlbnRzJiZ2b2lkIDAhPT1lLmV2ZW50cy5maW5kKGU9PiJ0b2tlbnMiPT09ZS5jb250cmFjdCYmZS5ldmVudD09PWkmJmUuZGF0YS5mcm9tPT09dCYmZS5kYXRhLnRvPT09cyYmZS5kYXRhLnF1YW50aXR5PT09biYmZS5kYXRhLnN5bWJvbD09PWEpLGNhbGN1bGF0ZUJhbGFuY2U9KGUsdCxzLGEpPT5hP2FwaS5CaWdOdW1iZXIoZSkucGx1cyh0KS50b0ZpeGVkKHMpOmFwaS5CaWdOdW1iZXIoZSkubWludXModCkudG9GaXhlZChzKSxjb3VudERlY2ltYWxzPWU9PmFwaS5CaWdOdW1iZXIoZSkuZHAoKSxjb250YWluc0R1cGxpY2F0ZXM9ZT0+bmV3IFNldChlKS5zaXplIT09ZS5sZW5ndGgsaXNWYWxpZEhpdmVBY2NvdW50TGVuZ3RoPWU9PmUubGVuZ3RoPj0zJiZlLmxlbmd0aDw9MTYsaXNWYWxpZENvbnRyYWN0TGVuZ3RoPWU9PmUubGVuZ3RoPj0zJiZlLmxlbmd0aDw9NTAsaXNWYWxpZEFjY291bnRzQXJyYXk9ZT0+e2xldCB0PSEwO3JldHVybiBlLmZvckVhY2goZT0+eyJzdHJpbmciPT10eXBlb2YgZSYmaXNWYWxpZEhpdmVBY2NvdW50TGVuZ3RoKGUpfHwodD0hMSl9KSx0fSxpc1ZhbGlkQ29udHJhY3RzQXJyYXk9ZT0+e2xldCB0PSEwO3JldHVybiBlLmZvckVhY2goZT0+eyJzdHJpbmciPT10eXBlb2YgZSYmaXNWYWxpZENvbnRyYWN0TGVuZ3RoKGUpfHwodD0hMSl9KSx0fSxpc1ZhbGlkRGF0YVByb3BlcnRpZXM9KGUsdCxzLGEpPT57bGV0IG49T2JqZWN0LmtleXMoYSkubGVuZ3RoLGk9T2JqZWN0LmtleXMocy5wcm9wZXJ0aWVzKS5sZW5ndGg7aWYoIWFwaS5hc3NlcnQobjw9aSwiY2Fubm90IHNldCBtb3JlIGRhdGEgcHJvcGVydGllcyB0aGFuIE5GVCBoYXMiKSlyZXR1cm4hMTtmb3IobGV0W3Isb11vZiBPYmplY3QuZW50cmllcyhhKSl7bGV0IGw9ITE7aWYoYXBpLmFzc2VydChyJiYic3RyaW5nIj09dHlwZW9mIHImJmFwaS52YWxpZGF0b3IuaXNBbHBoYW51bWVyaWMocikmJnIubGVuZ3RoPjAmJnIubGVuZ3RoPD0yNSwiaW52YWxpZCBkYXRhIHByb3BlcnR5IG5hbWU6IGxldHRlcnMgJiBudW1iZXJzIG9ubHksIG1heCBsZW5ndGggb2YgMjUiKSYmYXBpLmFzc2VydChyIGluIHMucHJvcGVydGllcywiZGF0YSBwcm9wZXJ0eSBtdXN0IGV4aXN0Iikpe2xldCBkPXMucHJvcGVydGllc1tyXTthcGkuYXNzZXJ0KG51bGwhPW8mJih0eXBlb2Ygbz09PWQudHlwZXx8Im51bWJlciI9PT1kLnR5cGUmJiJzdHJpbmciPT10eXBlb2YgbyYmIWFwaS5CaWdOdW1iZXIobykuaXNOYU4oKSksYGRhdGEgcHJvcGVydHkgdHlwZSBtaXNtYXRjaDogZXhwZWN0ZWQgJHtkLnR5cGV9IGJ1dCBnb3QgJHt0eXBlb2Ygb30gZm9yIHByb3BlcnR5ICR7cn1gKSYmYXBpLmFzc2VydCgic3RyaW5nIiE9dHlwZW9mIG98fG8ubGVuZ3RoPD0xMDAsInN0cmluZyBwcm9wZXJ0eSBtYXggbGVuZ3RoIGlzIDEwMCBjaGFyYWN0ZXJzIikmJmFwaS5hc3NlcnQoImNvbnRyYWN0Ij09PXQmJmQuYXV0aG9yaXplZEVkaXRpbmdDb250cmFjdHMuaW5jbHVkZXMoZSl8fCJ1c2VyIj09PXQmJmQuYXV0aG9yaXplZEVkaXRpbmdBY2NvdW50cy5pbmNsdWRlcyhlKSwibm90IGFsbG93ZWQgdG8gc2V0IGRhdGEgcHJvcGVydGllcyIpJiYobD0hMCwibnVtYmVyIj09PWQudHlwZSYmInN0cmluZyI9PXR5cGVvZiBvJiYoYVtyXT1hcGkuQmlnTnVtYmVyKG8pLnRvTnVtYmVyKCkpKX1pZighbClyZXR1cm4hMX1yZXR1cm4hMH0saXNWYWxpZERhdGFQcm9wZXJ0aWVzQXJyYXk9KGUsdCxzLGEpPT57dHJ5e2ZvcihsZXQgbj0wO248YS5sZW5ndGg7bis9MSl7bGV0IGk9ITEse2lkOnIscHJvcGVydGllczpvfT1hW25dO2lmKGFwaS5hc3NlcnQociYmInN0cmluZyI9PXR5cGVvZiByJiYhYXBpLkJpZ051bWJlcihyKS5pc05hTigpJiZhcGkuQmlnTnVtYmVyKHIpLmd0KDApJiZvJiYib2JqZWN0Ij09dHlwZW9mIG8sImludmFsaWQgZGF0YSBwcm9wZXJ0aWVzIikmJmlzVmFsaWREYXRhUHJvcGVydGllcyhlLHQscyxvKSYmKGk9ITApLCFpKXJldHVybiExfX1jYXRjaChsKXtyZXR1cm4hMX1yZXR1cm4hMH0saXNWYWxpZE5mdElkQXJyYXk9ZT0+e3RyeXtsZXQgdD0wO2ZvcihsZXQgcz0wO3M8ZS5sZW5ndGg7cys9MSl7bGV0IGE9ITEse3N5bWJvbDpuLGlkczppfT1lW3NdO2lmKGFwaS5hc3NlcnQobiYmInN0cmluZyI9PXR5cGVvZiBuJiZhcGkudmFsaWRhdG9yLmlzQWxwaGEobikmJmFwaS52YWxpZGF0b3IuaXNVcHBlcmNhc2UobikmJm4ubGVuZ3RoPjAmJm4ubGVuZ3RoPD0xMCYmaSYmIm9iamVjdCI9PXR5cGVvZiBpJiZBcnJheS5pc0FycmF5KGkpLCJpbnZhbGlkIG5mdCBsaXN0IikmJih0Kz1pLmxlbmd0aCxhcGkuYXNzZXJ0KHQ8PTUwLCJjYW5ub3Qgb3BlcmF0ZSBvbiBtb3JlIHRoYW4gNTAgTkZUIGluc3RhbmNlcyBhdCBvbmNlIikpKXtmb3IobGV0IHI9MDtyPGkubGVuZ3RoO3IrPTEpe2xldCBvPWlbcl07aWYoIWFwaS5hc3NlcnQobyYmInN0cmluZyI9PXR5cGVvZiBvJiYhYXBpLkJpZ051bWJlcihvKS5pc05hTigpJiZhcGkuQmlnTnVtYmVyKG8pLmd0KDApLCJpbnZhbGlkIG5mdCBsaXN0IikpcmV0dXJuITF9YT0hMH1pZighYSlyZXR1cm4hMX19Y2F0Y2gobCl7cmV0dXJuITF9cmV0dXJuITB9LGlzVmFsaWRUb2tlbkJhc2tldD1hc3luYyhlLHQscyxhLG4pPT57dHJ5e2xldCBpPU9iamVjdC5rZXlzKGUpLmxlbmd0aDtpZihpPjEwKXJldHVybiExO2ZvcihsZXRbcixvXW9mIE9iamVjdC5lbnRyaWVzKGUpKXtsZXQgbD0hMTtpZigic3RyaW5nIj09dHlwZW9mIHImJmFwaS52YWxpZGF0b3IuaXNBbHBoYShyKSYmYXBpLnZhbGlkYXRvci5pc1VwcGVyY2FzZShyKSYmci5sZW5ndGg+MCYmci5sZW5ndGg8PTEwKXtsZXQgZD1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsInRva2VucyIse3N5bWJvbDpyfSk7aWYoZCYmbyYmInN0cmluZyI9PXR5cGVvZiBvJiYhYXBpLkJpZ051bWJlcihvKS5pc05hTigpJiZhcGkuQmlnTnVtYmVyKG8pLmd0KDApJiZjb3VudERlY2ltYWxzKG8pPD1kLnByZWNpc2lvbil7bGV0IHU9cj09PWE/Y2FsY3VsYXRlQmFsYW5jZShvLG4sZC5wcmVjaXNpb24sITApOm8sYz1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsdCx7YWNjb3VudDpzLHN5bWJvbDpyfSk7YyYmYXBpLkJpZ051bWJlcihjLmJhbGFuY2UpLmd0ZSh1KSYmKGw9ITApfX1pZighbClyZXR1cm4hMX19Y2F0Y2goZil7cmV0dXJuITF9cmV0dXJuITB9LHRyYW5zZmVyQW5kVmVyaWZ5TmZ0cz1hc3luYyhlLHQscyxhLG4saSxyKT0+e2xldCBvPXtzdWNjZXNzOltdLGZhaWw6W119LGw9InVzZXIiPT09dD8idSI6ImMiLGQ9InVzZXIiPT09YT8idSI6ImMiO2F3YWl0IGFjdGlvbnMudHJhbnNmZXIoe2Zyb21UeXBlOnQsdG86cyx0b1R5cGU6YSxuZnRzOm4saXNTaWduZWRXaXRoQWN0aXZlS2V5OmksY2FsbGluZ0NvbnRyYWN0SW5mbzpyfSk7bGV0IHU9YXBpLmxvZ3MoKSxjPXt9LGY9e307aWYodS5ldmVudHMpZm9yKGxldCBwPTA7cDx1LmV2ZW50cy5sZW5ndGg7cCs9MSl7bGV0IGc9dS5ldmVudHNbcF07aWYoZy5jb250cmFjdCYmZy5ldmVudCYmZy5kYXRhJiYibmZ0Ij09PWcuY29udHJhY3QmJiJ0cmFuc2ZlciI9PT1nLmV2ZW50JiZnLmRhdGEuZnJvbT09PWUmJmcuZGF0YS5mcm9tVHlwZT09PWwmJmcuZGF0YS50bz09PXMmJmcuZGF0YS50b1R5cGU9PT1kKXtsZXQgeT1nLmRhdGEuc3ltYm9sKyItIitnLmRhdGEuaWQ7Y1t5XT0xfX1mb3IobGV0IG09MDttPG4ubGVuZ3RoO20rPTEpe2xldHtzeW1ib2w6JCxpZHM6aH09blttXSxiPVtdLHY9W107Zm9yKGxldCB3PTA7dzxoLmxlbmd0aDt3Kz0xKXtsZXQgTj0kKyItIitoW3ddO04gaW4gZnx8KE4gaW4gYz9iLnB1c2goaFt3XS50b1N0cmluZygpKTp2LnB1c2goaFt3XS50b1N0cmluZygpKSxmW05dPTEpfWIubGVuZ3RoPjAmJm8uc3VjY2Vzcy5wdXNoKHtzeW1ib2w6JCxpZHM6Yn0pLHYubGVuZ3RoPjAmJm8uZmFpbC5wdXNoKHtzeW1ib2w6JCxpZHM6dn0pfXJldHVybiBvfTthY3Rpb25zLnVwZGF0ZVVybD1hc3luYyBlPT57bGV0e3VybDp0LHN5bWJvbDpzfT1lO2lmKGFwaS5hc3NlcnQocyYmInN0cmluZyI9PXR5cGVvZiBzJiZ0JiYic3RyaW5nIj09dHlwZW9mIHQsImludmFsaWQgcGFyYW1zIikmJmFwaS5hc3NlcnQodC5sZW5ndGg8PTI1NSwiaW52YWxpZCB1cmw6IG1heCBsZW5ndGggb2YgMjU1Iikpe2xldCBhPWF3YWl0IGFwaS5kYi5maW5kT25lKCJuZnRzIix7c3ltYm9sOnN9KTtpZihhJiZhcGkuYXNzZXJ0KGEuaXNzdWVyPT09YXBpLnNlbmRlciwibXVzdCBiZSB0aGUgaXNzdWVyIikpdHJ5e2xldCBuPUpTT04ucGFyc2UoYS5tZXRhZGF0YSk7YXBpLmFzc2VydChuJiZuLnVybCwiYW4gZXJyb3Igb2NjdXJlZCB3aGVuIHRyeWluZyB0byB1cGRhdGUgdGhlIHVybCIpJiYobi51cmw9dCxhLm1ldGFkYXRhPUpTT04uc3RyaW5naWZ5KG4pLGF3YWl0IGFwaS5kYi51cGRhdGUoIm5mdHMiLGEpKX1jYXRjaChpKXt9fX0sYWN0aW9ucy51cGRhdGVNZXRhZGF0YT1hc3luYyBlPT57bGV0e21ldGFkYXRhOnQsc3ltYm9sOnN9PWU7aWYoYXBpLmFzc2VydChzJiYic3RyaW5nIj09dHlwZW9mIHMmJnQmJiJvYmplY3QiPT10eXBlb2YgdCwiaW52YWxpZCBwYXJhbXMiKSl7bGV0IGE9YXdhaXQgYXBpLmRiLmZpbmRPbmUoIm5mdHMiLHtzeW1ib2w6c30pO2lmKGEmJmFwaS5hc3NlcnQoYS5pc3N1ZXI9PT1hcGkuc2VuZGVyLCJtdXN0IGJlIHRoZSBpc3N1ZXIiKSl0cnl7bGV0IG49SlNPTi5zdHJpbmdpZnkodCk7YXBpLmFzc2VydChuLmxlbmd0aDw9MWUzLCJpbnZhbGlkIG1ldGFkYXRhOiBtYXggbGVuZ3RoIG9mIDEwMDAiKSYmKGEubWV0YWRhdGE9bixhd2FpdCBhcGkuZGIudXBkYXRlKCJuZnRzIixhKSl9Y2F0Y2goaSl7fX19LGFjdGlvbnMudXBkYXRlTmFtZT1hc3luYyBlPT57bGV0e25hbWU6dCxzeW1ib2w6c309ZTtpZihhcGkuYXNzZXJ0KHMmJiJzdHJpbmciPT10eXBlb2YgcyYmdCYmInN0cmluZyI9PXR5cGVvZiB0LCJpbnZhbGlkIHBhcmFtcyIpJiZhcGkuYXNzZXJ0KGFwaS52YWxpZGF0b3IuaXNBbHBoYW51bWVyaWMoYXBpLnZhbGlkYXRvci5ibGFja2xpc3QodCwiICIpKSYmdC5sZW5ndGg+MCYmdC5sZW5ndGg8PTUwLCJpbnZhbGlkIG5hbWU6IGxldHRlcnMsIG51bWJlcnMsIHdoaXRlc3BhY2VzIG9ubHksIG1heCBsZW5ndGggb2YgNTAiKSl7bGV0IGE9YXdhaXQgYXBpLmRiLmZpbmRPbmUoIm5mdHMiLHtzeW1ib2w6c30pO2EmJmFwaS5hc3NlcnQoYS5pc3N1ZXI9PT1hcGkuc2VuZGVyLCJtdXN0IGJlIHRoZSBpc3N1ZXIiKSYmKGEubmFtZT10LGF3YWl0IGFwaS5kYi51cGRhdGUoIm5mdHMiLGEpKX19LGFjdGlvbnMudXBkYXRlT3JnTmFtZT1hc3luYyBlPT57bGV0e29yZ05hbWU6dCxzeW1ib2w6c309ZTtpZihhcGkuYXNzZXJ0KHMmJiJzdHJpbmciPT10eXBlb2YgcyYmdCYmInN0cmluZyI9PXR5cGVvZiB0LCJpbnZhbGlkIHBhcmFtcyIpJiZhcGkuYXNzZXJ0KGFwaS52YWxpZGF0b3IuaXNBbHBoYW51bWVyaWMoYXBpLnZhbGlkYXRvci5ibGFja2xpc3QodCwiICIpKSYmdC5sZW5ndGg+MCYmdC5sZW5ndGg8PTUwLCJpbnZhbGlkIG9yZyBuYW1lOiBsZXR0ZXJzLCBudW1iZXJzLCB3aGl0ZXNwYWNlcyBvbmx5LCBtYXggbGVuZ3RoIG9mIDUwIikpe2xldCBhPWF3YWl0IGFwaS5kYi5maW5kT25lKCJuZnRzIix7c3ltYm9sOnN9KTthJiZhcGkuYXNzZXJ0KGEuaXNzdWVyPT09YXBpLnNlbmRlciwibXVzdCBiZSB0aGUgaXNzdWVyIikmJihhLm9yZ05hbWU9dCxhd2FpdCBhcGkuZGIudXBkYXRlKCJuZnRzIixhKSl9fSxhY3Rpb25zLnVwZGF0ZVByb2R1Y3ROYW1lPWFzeW5jIGU9PntsZXR7cHJvZHVjdE5hbWU6dCxzeW1ib2w6c309ZTtpZihhcGkuYXNzZXJ0KHMmJiJzdHJpbmciPT10eXBlb2YgcyYmdCYmInN0cmluZyI9PXR5cGVvZiB0LCJpbnZhbGlkIHBhcmFtcyIpJiZhcGkuYXNzZXJ0KGFwaS52YWxpZGF0b3IuaXNBbHBoYW51bWVyaWMoYXBpLnZhbGlkYXRvci5ibGFja2xpc3QodCwiICIpKSYmdC5sZW5ndGg+MCYmdC5sZW5ndGg8PTUwLCJpbnZhbGlkIHByb2R1Y3QgbmFtZTogbGV0dGVycywgbnVtYmVycywgd2hpdGVzcGFjZXMgb25seSwgbWF4IGxlbmd0aCBvZiA1MCIpKXtsZXQgYT1hd2FpdCBhcGkuZGIuZmluZE9uZSgibmZ0cyIse3N5bWJvbDpzfSk7YSYmYXBpLmFzc2VydChhLmlzc3Vlcj09PWFwaS5zZW5kZXIsIm11c3QgYmUgdGhlIGlzc3VlciIpJiYoYS5wcm9kdWN0TmFtZT10LGF3YWl0IGFwaS5kYi51cGRhdGUoIm5mdHMiLGEpKX19LGFjdGlvbnMuYWRkQXV0aG9yaXplZElzc3VpbmdBY2NvdW50cz1hc3luYyBlPT57bGV0e2FjY291bnRzOnQsc3ltYm9sOnMsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmF9PWU7aWYoYXBpLmFzc2VydCghMD09PWEsInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KHMmJiJzdHJpbmciPT10eXBlb2YgcyYmdCYmIm9iamVjdCI9PXR5cGVvZiB0JiZBcnJheS5pc0FycmF5KHQpLCJpbnZhbGlkIHBhcmFtcyIpJiZhcGkuYXNzZXJ0KHQubGVuZ3RoPD0xMCwiY2Fubm90IGhhdmUgbW9yZSB0aGFuIDEwIGF1dGhvcml6ZWQgaXNzdWluZyBhY2NvdW50cyIpKXtsZXQgbj1pc1ZhbGlkQWNjb3VudHNBcnJheSh0KTtpZihhcGkuYXNzZXJ0KG4sImludmFsaWQgYWNjb3VudCBsaXN0Iikpe2xldCBpPWF3YWl0IGFwaS5kYi5maW5kT25lKCJuZnRzIix7c3ltYm9sOnN9KTtpZihpKXtsZXQgcj1bXTtpZih0LmZvckVhY2goZT0+e2xldCB0PWUudHJpbSgpLnRvTG93ZXJDYXNlKCkscz0hMTtmb3IobGV0IGE9MDthPGkuYXV0aG9yaXplZElzc3VpbmdBY2NvdW50cy5sZW5ndGg7YSs9MSlpZih0PT09aS5hdXRob3JpemVkSXNzdWluZ0FjY291bnRzW2FdKXtzPSEwO2JyZWFrfXN8fHIucHVzaCh0KX0pLGFwaS5hc3NlcnQoaS5pc3N1ZXI9PT1hcGkuc2VuZGVyLCJtdXN0IGJlIHRoZSBpc3N1ZXIiKSYmYXBpLmFzc2VydCghY29udGFpbnNEdXBsaWNhdGVzKHIpLCJjYW5ub3QgYWRkIHRoZSBzYW1lIGFjY291bnQgdHdpY2UiKSYmYXBpLmFzc2VydChpLmF1dGhvcml6ZWRJc3N1aW5nQWNjb3VudHMubGVuZ3RoK3IubGVuZ3RoPD0xMCwiY2Fubm90IGhhdmUgbW9yZSB0aGFuIDEwIGF1dGhvcml6ZWQgaXNzdWluZyBhY2NvdW50cyIpKXtsZXQgbz1pLmF1dGhvcml6ZWRJc3N1aW5nQWNjb3VudHMuY29uY2F0KHIpO2kuYXV0aG9yaXplZElzc3VpbmdBY2NvdW50cz1vLGF3YWl0IGFwaS5kYi51cGRhdGUoIm5mdHMiLGkpfX19fX0sYWN0aW9ucy5hZGRBdXRob3JpemVkSXNzdWluZ0NvbnRyYWN0cz1hc3luYyBlPT57bGV0e2NvbnRyYWN0czp0LHN5bWJvbDpzLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTphfT1lO2lmKGFwaS5hc3NlcnQoITA9PT1hLCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChzJiYic3RyaW5nIj09dHlwZW9mIHMmJnQmJiJvYmplY3QiPT10eXBlb2YgdCYmQXJyYXkuaXNBcnJheSh0KSwiaW52YWxpZCBwYXJhbXMiKSYmYXBpLmFzc2VydCh0Lmxlbmd0aDw9MTAsImNhbm5vdCBoYXZlIG1vcmUgdGhhbiAxMCBhdXRob3JpemVkIGlzc3VpbmcgY29udHJhY3RzIikpe2xldCBuPWlzVmFsaWRDb250cmFjdHNBcnJheSh0KTtpZihhcGkuYXNzZXJ0KG4sImludmFsaWQgY29udHJhY3QgbGlzdCIpKXtsZXQgaT1hd2FpdCBhcGkuZGIuZmluZE9uZSgibmZ0cyIse3N5bWJvbDpzfSk7aWYoaSl7bGV0IHI9W107aWYodC5mb3JFYWNoKGU9PntsZXQgdD1lLnRyaW0oKSxzPSExO2ZvcihsZXQgYT0wO2E8aS5hdXRob3JpemVkSXNzdWluZ0NvbnRyYWN0cy5sZW5ndGg7YSs9MSlpZih0PT09aS5hdXRob3JpemVkSXNzdWluZ0NvbnRyYWN0c1thXSl7cz0hMDticmVha31zfHxyLnB1c2godCl9KSxhcGkuYXNzZXJ0KGkuaXNzdWVyPT09YXBpLnNlbmRlciwibXVzdCBiZSB0aGUgaXNzdWVyIikmJmFwaS5hc3NlcnQoIWNvbnRhaW5zRHVwbGljYXRlcyhyKSwiY2Fubm90IGFkZCB0aGUgc2FtZSBjb250cmFjdCB0d2ljZSIpJiZhcGkuYXNzZXJ0KGkuYXV0aG9yaXplZElzc3VpbmdDb250cmFjdHMubGVuZ3RoK3IubGVuZ3RoPD0xMCwiY2Fubm90IGhhdmUgbW9yZSB0aGFuIDEwIGF1dGhvcml6ZWQgaXNzdWluZyBjb250cmFjdHMiKSl7bGV0IG89aS5hdXRob3JpemVkSXNzdWluZ0NvbnRyYWN0cy5jb25jYXQocik7aS5hdXRob3JpemVkSXNzdWluZ0NvbnRyYWN0cz1vLGF3YWl0IGFwaS5kYi51cGRhdGUoIm5mdHMiLGkpfX19fX0sYWN0aW9ucy5yZW1vdmVBdXRob3JpemVkSXNzdWluZ0FjY291bnRzPWFzeW5jIGU9PntsZXR7YWNjb3VudHM6dCxzeW1ib2w6cyxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6YX09ZTtpZihhcGkuYXNzZXJ0KCEwPT09YSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQocyYmInN0cmluZyI9PXR5cGVvZiBzJiZ0JiYib2JqZWN0Ij09dHlwZW9mIHQmJkFycmF5LmlzQXJyYXkodCksImludmFsaWQgcGFyYW1zIikmJmFwaS5hc3NlcnQodC5sZW5ndGg8PTEwLCJjYW5ub3QgcmVtb3ZlIG1vcmUgdGhhbiAxMCBhdXRob3JpemVkIGlzc3VpbmcgYWNjb3VudHMiKSl7bGV0IG49aXNWYWxpZEFjY291bnRzQXJyYXkodCk7aWYoYXBpLmFzc2VydChuLCJpbnZhbGlkIGFjY291bnQgbGlzdCIpKXtsZXQgaT1hd2FpdCBhcGkuZGIuZmluZE9uZSgibmZ0cyIse3N5bWJvbDpzfSk7aWYoaSYmYXBpLmFzc2VydChpLmlzc3Vlcj09PWFwaS5zZW5kZXIsIm11c3QgYmUgdGhlIGlzc3VlciIpKXtsZXQgcj1pLmF1dGhvcml6ZWRJc3N1aW5nQWNjb3VudHMuZmlsdGVyKGU9Pntmb3IobGV0IHM9MDtzPHQubGVuZ3RoO3MrPTEpe2xldCBhPXRbc10udHJpbSgpLnRvTG93ZXJDYXNlKCk7aWYoZT09PWEpcmV0dXJuITF9cmV0dXJuITB9KTtpLmF1dGhvcml6ZWRJc3N1aW5nQWNjb3VudHM9cixhd2FpdCBhcGkuZGIudXBkYXRlKCJuZnRzIixpKX19fX0sYWN0aW9ucy5yZW1vdmVBdXRob3JpemVkSXNzdWluZ0NvbnRyYWN0cz1hc3luYyBlPT57bGV0e2NvbnRyYWN0czp0LHN5bWJvbDpzLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTphfT1lO2lmKGFwaS5hc3NlcnQoITA9PT1hLCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChzJiYic3RyaW5nIj09dHlwZW9mIHMmJnQmJiJvYmplY3QiPT10eXBlb2YgdCYmQXJyYXkuaXNBcnJheSh0KSwiaW52YWxpZCBwYXJhbXMiKSYmYXBpLmFzc2VydCh0Lmxlbmd0aDw9MTAsImNhbm5vdCByZW1vdmUgbW9yZSB0aGFuIDEwIGF1dGhvcml6ZWQgaXNzdWluZyBjb250cmFjdHMiKSl7bGV0IG49aXNWYWxpZENvbnRyYWN0c0FycmF5KHQpO2lmKGFwaS5hc3NlcnQobiwiaW52YWxpZCBjb250cmFjdCBsaXN0Iikpe2xldCBpPWF3YWl0IGFwaS5kYi5maW5kT25lKCJuZnRzIix7c3ltYm9sOnN9KTtpZihpJiZhcGkuYXNzZXJ0KGkuaXNzdWVyPT09YXBpLnNlbmRlciwibXVzdCBiZSB0aGUgaXNzdWVyIikpe2xldCByPWkuYXV0aG9yaXplZElzc3VpbmdDb250cmFjdHMuZmlsdGVyKGU9Pntmb3IobGV0IHM9MDtzPHQubGVuZ3RoO3MrPTEpe2xldCBhPXRbc10udHJpbSgpO2lmKGU9PT1hKXJldHVybiExfXJldHVybiEwfSk7aS5hdXRob3JpemVkSXNzdWluZ0NvbnRyYWN0cz1yLGF3YWl0IGFwaS5kYi51cGRhdGUoIm5mdHMiLGkpfX19fSxhY3Rpb25zLnRyYW5zZmVyT3duZXJzaGlwPWFzeW5jIGU9PntsZXR7c3ltYm9sOnQsdG86cyxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6YX09ZTtpZihhcGkuYXNzZXJ0KCEwPT09YSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQodCYmInN0cmluZyI9PXR5cGVvZiB0JiZzJiYic3RyaW5nIj09dHlwZW9mIHMsImludmFsaWQgcGFyYW1zIikpe2xldCBuPWF3YWl0IGFwaS5kYi5maW5kT25lKCJuZnRzIix7c3ltYm9sOnR9KTtpZihuJiZhcGkuYXNzZXJ0KG4uaXNzdWVyPT09YXBpLnNlbmRlciwibXVzdCBiZSB0aGUgaXNzdWVyIikpe2xldCBpPXMudHJpbSgpLnRvTG93ZXJDYXNlKCk7YXBpLmFzc2VydChpc1ZhbGlkSGl2ZUFjY291bnRMZW5ndGgoaSksImludmFsaWQgdG8iKSYmKG4uaXNzdWVyPWksYXdhaXQgYXBpLmRiLnVwZGF0ZSgibmZ0cyIsbikpfX19LGFjdGlvbnMuZW5hYmxlRGVsZWdhdGlvbj1hc3luYyBlPT57bGV0e3N5bWJvbDp0LHVuZGVsZWdhdGlvbkNvb2xkb3duOnMsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmF9PWUsbj1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSkse2VuYWJsZURlbGVnYXRpb25GZWU6aX09bixyPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwiYmFsYW5jZXMiLHthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOiJCRUUifSksbz0hIWFwaS5CaWdOdW1iZXIoaSkubHRlKDApfHxyJiZhcGkuQmlnTnVtYmVyKHIuYmFsYW5jZSkuZ3RlKGkpO2lmKGFwaS5hc3NlcnQobywieW91IG11c3QgaGF2ZSBlbm91Z2ggdG9rZW5zIHRvIGNvdmVyIGZlZXMiKSYmYXBpLmFzc2VydCghMD09PWEsInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KHQmJiJzdHJpbmciPT10eXBlb2YgdCwiaW52YWxpZCBzeW1ib2wiKSYmYXBpLmFzc2VydChzJiZOdW1iZXIuaXNJbnRlZ2VyKHMpJiZzPjAmJnM8PTE4MjUwLCJ1bmRlbGVnYXRpb25Db29sZG93biBtdXN0IGJlIGFuIGludGVnZXIgYmV0d2VlbiAxIGFuZCAxODI1MCIpKXtsZXQgbD1hd2FpdCBhcGkuZGIuZmluZE9uZSgibmZ0cyIse3N5bWJvbDp0fSk7aWYoYXBpLmFzc2VydChudWxsIT09bCwic3ltYm9sIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQobC5pc3N1ZXI9PT1hcGkuc2VuZGVyLCJtdXN0IGJlIHRoZSBpc3N1ZXIiKSYmYXBpLmFzc2VydCh2b2lkIDA9PT1sLmRlbGVnYXRpb25FbmFibGVkfHwhMT09PWwuZGVsZWdhdGlvbkVuYWJsZWQsImRlbGVnYXRpb24gYWxyZWFkeSBlbmFibGVkIikpe2lmKGFwaS5CaWdOdW1iZXIoaSkuZ3QoMCkpe2xldCBkPWF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgidG9rZW5zIiwidHJhbnNmZXIiLHt0bzoibnVsbCIsc3ltYm9sOiJCRUUiLHF1YW50aXR5OmksaXNTaWduZWRXaXRoQWN0aXZlS2V5OmF9KTtpZighaXNUb2tlblRyYW5zZmVyVmVyaWZpZWQoZCxhcGkuc2VuZGVyLCJudWxsIiwiQkVFIixpLCJ0cmFuc2ZlciIpKXJldHVybiExfXJldHVybiBsLmRlbGVnYXRpb25FbmFibGVkPSEwLGwudW5kZWxlZ2F0aW9uQ29vbGRvd249cyxhd2FpdCBhcGkuZGIudXBkYXRlKCJuZnRzIixsKSwhMH19cmV0dXJuITF9LGFjdGlvbnMudXBkYXRlUHJvcGVydHlEZWZpbml0aW9uPWFzeW5jIGU9PntsZXR7c3ltYm9sOnQsbmFtZTpzLG5ld05hbWU6YSx0eXBlOm4saXNSZWFkT25seTppLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTpyfT1lO2lmKGFwaS5hc3NlcnQoITA9PT1yLCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydCh0JiYic3RyaW5nIj09dHlwZW9mIHQmJnMmJiJzdHJpbmciPT10eXBlb2YgcywiaW52YWxpZCBwYXJhbXMiKSYmYXBpLmFzc2VydChhcGkudmFsaWRhdG9yLmlzQWxwaGFudW1lcmljKHMpJiZzLmxlbmd0aD4wJiZzLmxlbmd0aDw9MjUsImludmFsaWQgbmFtZTogbGV0dGVycyAmIG51bWJlcnMgb25seSwgbWF4IGxlbmd0aCBvZiAyNSIpJiZhcGkuYXNzZXJ0KHZvaWQgMD09PWF8fCJzdHJpbmciPT10eXBlb2YgYSYmYXBpLnZhbGlkYXRvci5pc0FscGhhbnVtZXJpYyhhKSYmYS5sZW5ndGg+MCYmYS5sZW5ndGg8PTI1LCJpbnZhbGlkIG5ldyBuYW1lOiBsZXR0ZXJzICYgbnVtYmVycyBvbmx5LCBtYXggbGVuZ3RoIG9mIDI1IikmJmFwaS5hc3NlcnQodm9pZCAwPT09bnx8InN0cmluZyI9PXR5cGVvZiBuJiYoIm51bWJlciI9PT1ufHwic3RyaW5nIj09PW58fCJib29sZWFuIj09PW4pLCJpbnZhbGlkIHR5cGU6IG11c3QgYmUgbnVtYmVyLCBzdHJpbmcsIG9yIGJvb2xlYW4iKSYmYXBpLmFzc2VydCh2b2lkIDA9PT1pfHwiYm9vbGVhbiI9PXR5cGVvZiBpLCJpbnZhbGlkIGlzUmVhZE9ubHk6IG11c3QgYmUgdHJ1ZSBvciBmYWxzZSIpKXtsZXQgbz1hd2FpdCBhcGkuZGIuZmluZE9uZSgibmZ0cyIse3N5bWJvbDp0fSk7aWYobyYmYXBpLmFzc2VydCgwPT09by5zdXBwbHksImNhbm5vdCBjaGFuZ2UgZGF0YSBwcm9wZXJ0eSBkZWZpbml0aW9uOyB0b2tlbnMgYWxyZWFkeSBpc3N1ZWQiKSYmYXBpLmFzc2VydChzIGluIG8ucHJvcGVydGllcywicHJvcGVydHkgbXVzdCBleGlzdCIpJiZhcGkuYXNzZXJ0KG8uaXNzdWVyPT09YXBpLnNlbmRlciwibXVzdCBiZSB0aGUgaXNzdWVyIikpe2lmKHZvaWQgMCE9PWEmJih2b2lkIDAhPT1vLmdyb3VwQnkmJm8uZ3JvdXBCeS5sZW5ndGg+MCYmIWFwaS5hc3NlcnQoIW8uZ3JvdXBCeS5pbmNsdWRlcyhzKSwiY2Fubm90IGNoYW5nZSBkYXRhIHByb3BlcnR5IG5hbWU7IHByb3BlcnR5IGlzIHBhcnQgb2YgZ3JvdXBCeSIpfHwhYXBpLmFzc2VydChhIT09cywibmV3IG5hbWUgbXVzdCBiZSBkaWZmZXJlbnQgZnJvbSBvbGQgbmFtZSIpfHwhYXBpLmFzc2VydCghKGEgaW4gby5wcm9wZXJ0aWVzKSwidGhlcmUgaXMgYWxyZWFkeSBhIGRhdGEgcHJvcGVydHkgd2l0aCB0aGUgZ2l2ZW4gbmV3IG5hbWUiKSkpcmV0dXJuITE7bGV0IGw9ITEsZD1vLnByb3BlcnRpZXNbc10udHlwZSx1PW8ucHJvcGVydGllc1tzXS5pc1JlYWRPbmx5O3JldHVybiB2b2lkIDAhPT1uJiZuIT09ZCYmKG8ucHJvcGVydGllc1tzXS50eXBlPW4sbD0hMCksdm9pZCAwIT09aSYmaSE9PXUmJihvLnByb3BlcnRpZXNbc10uaXNSZWFkT25seT1pLGw9ITApLHZvaWQgMCE9PWEmJmEhPT1zJiYoby5wcm9wZXJ0aWVzW2FdPW8ucHJvcGVydGllc1tzXSxkZWxldGUgby5wcm9wZXJ0aWVzW3NdLGw9ITApLGwmJihhd2FpdCBhcGkuZGIudXBkYXRlKCJuZnRzIixvKSxhcGkuZW1pdCgidXBkYXRlUHJvcGVydHlEZWZpbml0aW9uIix7c3ltYm9sOnQsb3JpZ2luYWxOYW1lOnMsb3JpZ2luYWxUeXBlOmQsb3JpZ2luYWxJc1JlYWRPbmx5OnUsbmV3TmFtZTphLG5ld1R5cGU6bixuZXdJc1JlYWRPbmx5Oml9KSksITB9fXJldHVybiExfSxhY3Rpb25zLmFkZFByb3BlcnR5PWFzeW5jIGU9PntsZXR7c3ltYm9sOnQsbmFtZTpzLHR5cGU6YSxpc1JlYWRPbmx5Om4sYXV0aG9yaXplZEVkaXRpbmdBY2NvdW50czppLGF1dGhvcml6ZWRFZGl0aW5nQ29udHJhY3RzOnIsaXNTaWduZWRXaXRoQWN0aXZlS2V5Om99PWUsbD1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSkse2RhdGFQcm9wZXJ0eUNyZWF0aW9uRmVlOmR9PWw7aWYoYXBpLmFzc2VydCghMD09PW8sInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KHQmJiJzdHJpbmciPT10eXBlb2YgdCYmcyYmInN0cmluZyI9PXR5cGVvZiBzJiYodm9pZCAwPT09bnx8ImJvb2xlYW4iPT10eXBlb2YgbikmJih2b2lkIDA9PT1pfHxpJiYib2JqZWN0Ij09dHlwZW9mIGkmJkFycmF5LmlzQXJyYXkoaSkpJiYodm9pZCAwPT09cnx8ciYmIm9iamVjdCI9PXR5cGVvZiByJiZBcnJheS5pc0FycmF5KHIpKSYmYSYmInN0cmluZyI9PXR5cGVvZiBhLCJpbnZhbGlkIHBhcmFtcyIpJiZhcGkuYXNzZXJ0KGFwaS52YWxpZGF0b3IuaXNBbHBoYW51bWVyaWMocykmJnMubGVuZ3RoPjAmJnMubGVuZ3RoPD0yNSwiaW52YWxpZCBuYW1lOiBsZXR0ZXJzICYgbnVtYmVycyBvbmx5LCBtYXggbGVuZ3RoIG9mIDI1IikmJmFwaS5hc3NlcnQoIm51bWJlciI9PT1hfHwic3RyaW5nIj09PWF8fCJib29sZWFuIj09PWEsImludmFsaWQgdHlwZTogbXVzdCBiZSBudW1iZXIsIHN0cmluZywgb3IgYm9vbGVhbiIpKXtsZXQgdT1hd2FpdCBhcGkuZGIuZmluZE9uZSgibmZ0cyIse3N5bWJvbDp0fSk7aWYodSYmYXBpLmFzc2VydCghKHMgaW4gdS5wcm9wZXJ0aWVzKSwiY2Fubm90IGFkZCB0aGUgc2FtZSBwcm9wZXJ0eSB0d2ljZSIpJiZhcGkuYXNzZXJ0KHUuaXNzdWVyPT09YXBpLnNlbmRlciwibXVzdCBiZSB0aGUgaXNzdWVyIikpe2xldCBjPU9iamVjdC5rZXlzKHUucHJvcGVydGllcykubGVuZ3RoO2lmKGM+PTMpe2xldCBmPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwiYmFsYW5jZXMiLHthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOiJCRUUifSkscD0hIWFwaS5CaWdOdW1iZXIoZCkubHRlKDApfHxmJiZhcGkuQmlnTnVtYmVyKGYuYmFsYW5jZSkuZ3RlKGQpO2lmKCFhcGkuYXNzZXJ0KHAsInlvdSBtdXN0IGhhdmUgZW5vdWdoIHRva2VucyB0byBjb3ZlciB0aGUgY3JlYXRpb24gZmVlcyIpKXJldHVybiExO2lmKGFwaS5CaWdOdW1iZXIoZCkuZ3QoMCkpe2xldCBnPWF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgidG9rZW5zIiwidHJhbnNmZXIiLHt0bzoibnVsbCIsc3ltYm9sOiJCRUUiLHF1YW50aXR5OmQsaXNTaWduZWRXaXRoQWN0aXZlS2V5Om99KTtpZighaXNUb2tlblRyYW5zZmVyVmVyaWZpZWQoZyxhcGkuc2VuZGVyLCJudWxsIiwiQkVFIixkLCJ0cmFuc2ZlciIpKXJldHVybiExfX1sZXQgeT12b2lkIDAhPT1uJiZuLG09dm9pZCAwPT09aT9bYXBpLnNlbmRlcl06W10sJD17dHlwZTphLGlzUmVhZE9ubHk6eSxhdXRob3JpemVkRWRpdGluZ0FjY291bnRzOm0sYXV0aG9yaXplZEVkaXRpbmdDb250cmFjdHM6W119O3JldHVybiB1LnByb3BlcnRpZXNbc109JCxhd2FpdCBhcGkuZGIudXBkYXRlKCJuZnRzIix1KSwoaXx8cikmJmF3YWl0IGFjdGlvbnMuc2V0UHJvcGVydHlQZXJtaXNzaW9ucyh7c3ltYm9sOnQsbmFtZTpzLGFjY291bnRzOmksY29udHJhY3RzOnIsaXNTaWduZWRXaXRoQWN0aXZlS2V5Om99KSwhMH19cmV0dXJuITF9LGFjdGlvbnMuc2V0UHJvcGVydHlQZXJtaXNzaW9ucz1hc3luYyBlPT57bGV0e3N5bWJvbDp0LG5hbWU6cyxhY2NvdW50czphLGNvbnRyYWN0czpuLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppfT1lO2lmKGFwaS5hc3NlcnQoITA9PT1pLCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydCh0JiYic3RyaW5nIj09dHlwZW9mIHQmJnMmJiJzdHJpbmciPT10eXBlb2YgcyYmKHZvaWQgMD09PWF8fGEmJiJvYmplY3QiPT10eXBlb2YgYSYmQXJyYXkuaXNBcnJheShhKSkmJih2b2lkIDA9PT1ufHxuJiYib2JqZWN0Ij09dHlwZW9mIG4mJkFycmF5LmlzQXJyYXkobikpLCJpbnZhbGlkIHBhcmFtcyIpJiZhcGkuYXNzZXJ0KGFwaS52YWxpZGF0b3IuaXNBbHBoYW51bWVyaWMocykmJnMubGVuZ3RoPjAmJnMubGVuZ3RoPD0yNSwiaW52YWxpZCBuYW1lOiBsZXR0ZXJzICYgbnVtYmVycyBvbmx5LCBtYXggbGVuZ3RoIG9mIDI1IikmJmFwaS5hc3NlcnQodm9pZCAwPT09YXx8YS5sZW5ndGg8PTEwLCJjYW5ub3QgaGF2ZSBtb3JlIHRoYW4gMTAgYXV0aG9yaXplZCBhY2NvdW50cyIpJiZhcGkuYXNzZXJ0KHZvaWQgMD09PW58fG4ubGVuZ3RoPD0xMCwiY2Fubm90IGhhdmUgbW9yZSB0aGFuIDEwIGF1dGhvcml6ZWQgY29udHJhY3RzIikmJmFwaS5hc3NlcnQodm9pZCAwPT09YXx8aXNWYWxpZEFjY291bnRzQXJyYXkoYSksImludmFsaWQgYWNjb3VudCBsaXN0IikmJmFwaS5hc3NlcnQodm9pZCAwPT09bnx8aXNWYWxpZENvbnRyYWN0c0FycmF5KG4pLCJpbnZhbGlkIGNvbnRyYWN0IGxpc3QiKSl7bGV0IHI9YXdhaXQgYXBpLmRiLmZpbmRPbmUoIm5mdHMiLHtzeW1ib2w6dH0pO2lmKHImJmFwaS5hc3NlcnQocyBpbiByLnByb3BlcnRpZXMsInByb3BlcnR5IG11c3QgZXhpc3QiKSYmYXBpLmFzc2VydChyLmlzc3Vlcj09PWFwaS5zZW5kZXIsIm11c3QgYmUgdGhlIGlzc3VlciIpKXtsZXQgbz1bXSxsPVtdO2lmKGEmJihvPWEubWFwKGU9PmUudHJpbSgpLnRvTG93ZXJDYXNlKCkpKSxuJiYobD1uLm1hcChlPT5lLnRyaW0oKSkpLGFwaS5hc3NlcnQodm9pZCAwPT09YXx8IWNvbnRhaW5zRHVwbGljYXRlcyhvKSwiY2Fubm90IGFkZCB0aGUgc2FtZSBhY2NvdW50IHR3aWNlIikmJmFwaS5hc3NlcnQodm9pZCAwPT09bnx8IWNvbnRhaW5zRHVwbGljYXRlcyhsKSwiY2Fubm90IGFkZCB0aGUgc2FtZSBjb250cmFjdCB0d2ljZSIpKXtsZXQgZD0hMTthJiYoci5wcm9wZXJ0aWVzW3NdLmF1dGhvcml6ZWRFZGl0aW5nQWNjb3VudHM9byxkPSEwKSxuJiYoci5wcm9wZXJ0aWVzW3NdLmF1dGhvcml6ZWRFZGl0aW5nQ29udHJhY3RzPWwsZD0hMCksZCYmYXdhaXQgYXBpLmRiLnVwZGF0ZSgibmZ0cyIscil9fX19LGFjdGlvbnMuc2V0R3JvdXBCeT1hc3luYyBlPT57bGV0e3N5bWJvbDp0LHByb3BlcnRpZXM6cyxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6YX09ZTtpZihhcGkuYXNzZXJ0KCEwPT09YSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQodCYmInN0cmluZyI9PXR5cGVvZiB0JiZzJiYib2JqZWN0Ij09dHlwZW9mIHMmJkFycmF5LmlzQXJyYXkocyksImludmFsaWQgcGFyYW1zIikpe2xldCBuPWF3YWl0IGFwaS5kYi5maW5kT25lKCJuZnRzIix7c3ltYm9sOnR9KTtpZihuKXtsZXQgaT1PYmplY3Qua2V5cyhuLnByb3BlcnRpZXMpLmxlbmd0aDtpZihhcGkuYXNzZXJ0KG4uaXNzdWVyPT09YXBpLnNlbmRlciwibXVzdCBiZSB0aGUgaXNzdWVyIikmJmFwaS5hc3NlcnQodm9pZCAwPT09bi5ncm91cEJ5fHwwPT09bi5ncm91cEJ5Lmxlbmd0aCwibGlzdCBpcyBhbHJlYWR5IHNldCIpJiZhcGkuYXNzZXJ0KHMubGVuZ3RoPD1pLCJjYW5ub3Qgc2V0IG1vcmUgZGF0YSBwcm9wZXJ0aWVzIHRoYW4gTkZUIGhhcyIpJiZhcGkuYXNzZXJ0KCFjb250YWluc0R1cGxpY2F0ZXMocyksImxpc3QgY2Fubm90IGNvbnRhaW4gZHVwbGljYXRlcyIpKXtmb3IobGV0IHI9MDtyPHMubGVuZ3RoO3IrPTEpe2xldCBvPXNbcl07aWYoIWFwaS5hc3NlcnQobyYmInN0cmluZyI9PXR5cGVvZiBvJiZvIGluIG4ucHJvcGVydGllcywiZGF0YSBwcm9wZXJ0eSBtdXN0IGV4aXN0IikpcmV0dXJuITF9cmV0dXJuIG4uZ3JvdXBCeT1zLGF3YWl0IGFwaS5kYi51cGRhdGUoIm5mdHMiLG4pLCEwfX19cmV0dXJuITF9LGFjdGlvbnMuc2V0UHJvcGVydGllcz1hc3luYyBlPT57bGV0e3N5bWJvbDp0LGZyb21UeXBlOnMsbmZ0czphLGNhbGxpbmdDb250cmFjdEluZm86bn09ZSxpPVsidXNlciIsImNvbnRyYWN0Il0scj12b2lkIDA9PT1zPyJ1c2VyIjpzO2lmKGFwaS5hc3NlcnQoYSYmIm9iamVjdCI9PXR5cGVvZiBhJiZBcnJheS5pc0FycmF5KGEpJiZyJiYic3RyaW5nIj09dHlwZW9mIHImJmkuaW5jbHVkZXMocikmJnQmJiJzdHJpbmciPT10eXBlb2YgdCYmKG58fHZvaWQgMD09PW4mJiJ1c2VyIj09PXIpLCJpbnZhbGlkIHBhcmFtcyIpJiZhcGkuYXNzZXJ0KGEubGVuZ3RoPD01MCwiY2Fubm90IHNldCBwcm9wZXJ0aWVzIG9uIG1vcmUgdGhhbiA1MCBORlQgaW5zdGFuY2VzIGF0IG9uY2UiKSl7bGV0IG89InVzZXIiPT09cj9hcGkuc2VuZGVyOm4ubmFtZSxsPWF3YWl0IGFwaS5kYi5maW5kT25lKCJuZnRzIix7c3ltYm9sOnR9KTtpZihhcGkuYXNzZXJ0KG51bGwhPT1sLCJzeW1ib2wgZG9lcyBub3QgZXhpc3QiKSl7aWYoIWlzVmFsaWREYXRhUHJvcGVydGllc0FycmF5KG8scixsLGEpKXJldHVybiExO2xldCBkPXQrImluc3RhbmNlcyI7Zm9yKGxldCB1PTA7dTxhLmxlbmd0aDt1Kz0xKXtsZXR7aWQ6Yyxwcm9wZXJ0aWVzOmZ9PWFbdV07aWYoMD09PU9iamVjdC5rZXlzKGYpLmxlbmd0aCljb250aW51ZTtsZXQgcD1hd2FpdCBhcGkuZGIuZmluZE9uZShkLHtfaWQ6YXBpLkJpZ051bWJlcihjKS50b051bWJlcigpfSk7aWYoYXBpLmFzc2VydChudWxsIT09cCwibmZ0IGluc3RhbmNlIGRvZXMgbm90IGV4aXN0Iikpe2xldCBnPSExO2ZvcihsZXRbeSxtXW9mIE9iamVjdC5lbnRyaWVzKGYpKXtsZXQgJD1sLnByb3BlcnRpZXNbeV0saD1udWxsOyQuaXNSZWFkT25seT9hcGkuYXNzZXJ0KCEoeSBpbiBwLnByb3BlcnRpZXMpLCJjYW5ub3QgZWRpdCByZWFkLW9ubHkgcHJvcGVydGllcyIpJiYocC5wcm9wZXJ0aWVzW3ldPW0sZz0hMCk6KGg9cC5wcm9wZXJ0aWVzW3ldLHAucHJvcGVydGllc1t5XT1tLGc9ITApLGcmJmghPT1tJiZhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIm1pbmluZyIsImhhbmRsZU5mdFNldFByb3BlcnR5Iix7c3ltYm9sOnQsbmZ0OnAscHJvcGVydHlOYW1lOnksb2xkVmFsdWU6aH0pfWcmJmF3YWl0IGFwaS5kYi51cGRhdGUoZCxwKX19cmV0dXJuITB9fXJldHVybiExfSxhY3Rpb25zLmJ1cm49YXN5bmMgZT0+e2xldHtmcm9tVHlwZTp0LG5mdHM6cyxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6YSxjYWxsaW5nQ29udHJhY3RJbmZvOm59PWUsaT1bInVzZXIiLCJjb250cmFjdCJdLHI9dm9pZCAwPT09dD8idXNlciI6dDtpZihhcGkuYXNzZXJ0KCEwPT09YSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQociYmInN0cmluZyI9PXR5cGVvZiByJiZpLmluY2x1ZGVzKHIpJiYobnx8dm9pZCAwPT09biYmInVzZXIiPT09cikmJnMmJiJvYmplY3QiPT10eXBlb2YgcyYmQXJyYXkuaXNBcnJheShzKSwiaW52YWxpZCBwYXJhbXMiKSYmaXNWYWxpZE5mdElkQXJyYXkocykpe2xldCBvPSJ1c2VyIj09PXI/YXBpLnNlbmRlcjpuLm5hbWUsbD0wLGQ9MCx1PSExO2ZvcihsZXQgYz0wO2M8cy5sZW5ndGg7Yys9MSl7bGV0e3N5bWJvbDpmLGlkczpwfT1zW2NdLGc9YXdhaXQgYXBpLmRiLmZpbmRPbmUoIm5mdHMiLHtzeW1ib2w6Zn0pO2lmKGcpe2xldCB5PWYrImluc3RhbmNlcyI7Zm9yKGxldCBtPTA7bTxwLmxlbmd0aDttKz0xKXtsZXQgJD1wW21dLGg9YXdhaXQgYXBpLmRiLmZpbmRPbmUoeSx7X2lkOmFwaS5CaWdOdW1iZXIoJCkudG9OdW1iZXIoKX0pO2lmKGgpe2xldCBiPSEwO2lmKGgubG9ja2VkTmZ0cyYmaC5sb2NrZWROZnRzLmxlbmd0aD4wPygwPT09ZCYmKHU9ITApLCgobCs9MSk+MXx8IXUpJiYoYj0hMSkpOnUmJihiPSExKSxkKz0xLGguYWNjb3VudD09PW8mJigidSI9PT1oLm93bmVkQnkmJiJ1c2VyIj09PXJ8fCJjIj09PWgub3duZWRCeSYmImNvbnRyYWN0Ij09PXIpJiZ2b2lkIDA9PT1oLmRlbGVnYXRlZFRvJiZiKXtsZXQgdj17fSx3PSEwO2ZvcihsZXRbTixfXW9mIE9iamVjdC5lbnRyaWVzKGgubG9ja2VkVG9rZW5zKSl7bGV0IEE9YXdhaXQgYXBpLnRyYW5zZmVyVG9rZW5zKG8sTixfLHIpO2lzVG9rZW5UcmFuc2ZlclZlcmlmaWVkKEEsIm5mdCIsbyxOLF8sInRyYW5zZmVyRnJvbUNvbnRyYWN0Iil8fCh2W05dPV8sdz0hMSl9YXBpLmFzc2VydCh3LGB1bmFibGUgdG8gcmVsZWFzZSBsb2NrZWQgdG9rZW5zIGluOiAke2Z9LCBpZCAkeyR9YCk7bGV0IFQ9aC5sb2NrZWROZnRzJiZoLmxvY2tlZE5mdHMubGVuZ3RoPjA/aC5sb2NrZWROZnRzOltdO2lmKHcmJmgubG9ja2VkTmZ0cyYmaC5sb2NrZWROZnRzLmxlbmd0aD4wKXtsZXQgaz1hd2FpdCB0cmFuc2ZlckFuZFZlcmlmeU5mdHMoIm5mdCIsImNvbnRyYWN0IixvLHIsaC5sb2NrZWROZnRzLGEse25hbWU6Im5mdCJ9KTtoLmxvY2tlZE5mdHM9ay5mYWlsLGgubG9ja2VkTmZ0cy5sZW5ndGg+MCYmKHc9ITEpLGFwaS5hc3NlcnQodyxgdW5hYmxlIHRvIHJlbGVhc2UgbG9ja2VkIE5GVCBpbnN0YW5jZXMgaW46ICR7Zn0sIGlkICR7JH1gKX1sZXQgQj1oLm93bmVkQnksRT1oLmxvY2tlZFRva2VucztoLmxvY2tlZFRva2Vucz12LHcmJihoLnByZXZpb3VzQWNjb3VudD1oLmFjY291bnQsaC5wcmV2aW91c093bmVkQnk9aC5vd25lZEJ5LGguYWNjb3VudD0ibnVsbCIsaC5vd25lZEJ5PSJ1IixnLmNpcmN1bGF0aW5nU3VwcGx5LT0xKSxhd2FpdCBhcGkuZGIudXBkYXRlKHksaCksdyYmYXBpLmVtaXQoImJ1cm4iLHthY2NvdW50Om8sb3duZWRCeTpCLHVubG9ja2VkVG9rZW5zOkUsdW5sb2NrZWROZnRzOlQsc3ltYm9sOmYsaWQ6JH0pfX19YXdhaXQgYXBpLmRiLnVwZGF0ZSgibmZ0cyIsZyl9fX19LGFjdGlvbnMudHJhbnNmZXI9YXN5bmMgZT0+e2xldHtmcm9tVHlwZTp0LHRvOnMsdG9UeXBlOmEsbmZ0czpuLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppLGNhbGxpbmdDb250cmFjdEluZm86cn09ZSxvPVsidXNlciIsImNvbnRyYWN0Il0sbD12b2lkIDA9PT1hPyJ1c2VyIjphLGQ9dm9pZCAwPT09dD8idXNlciI6dDtpZihhcGkuYXNzZXJ0KCEwPT09aSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQoZCYmInN0cmluZyI9PXR5cGVvZiBkJiZvLmluY2x1ZGVzKGQpJiZzJiYic3RyaW5nIj09dHlwZW9mIHMmJmwmJiJzdHJpbmciPT10eXBlb2YgbCYmby5pbmNsdWRlcyhsKSYmKHJ8fHZvaWQgMD09PXImJiJ1c2VyIj09PWQpJiZuJiYib2JqZWN0Ij09dHlwZW9mIG4mJkFycmF5LmlzQXJyYXkobiksImludmFsaWQgcGFyYW1zIikmJmlzVmFsaWROZnRJZEFycmF5KG4pKXtsZXQgdT0idXNlciI9PT1sP3MudHJpbSgpLnRvTG93ZXJDYXNlKCk6cy50cmltKCksYz0idXNlciI9PT1sP2lzVmFsaWRIaXZlQWNjb3VudExlbmd0aCh1KTppc1ZhbGlkQ29udHJhY3RMZW5ndGgodSksZj0idXNlciI9PT1kP2FwaS5zZW5kZXI6ci5uYW1lO2lmKGFwaS5hc3NlcnQoYywiaW52YWxpZCB0byIpJiZhcGkuYXNzZXJ0KCEobD09PWQmJnU9PT1mKSwiY2Fubm90IHRyYW5zZmVyIHRvIHNlbGYiKSYmYXBpLmFzc2VydCghKCJ1c2VyIj09PWwmJiJudWxsIj09PXUpLCJjYW5ub3QgdHJhbnNmZXIgdG8gbnVsbDsgdXNlIGJ1cm4gYWN0aW9uIGluc3RlYWQiKSlmb3IobGV0IHA9MDtwPG4ubGVuZ3RoO3ArPTEpe2xldHtzeW1ib2w6ZyxpZHM6eX09bltwXSxtPWF3YWl0IGFwaS5kYi5maW5kT25lKCJuZnRzIix7c3ltYm9sOmd9KTtpZihtKXtsZXQgJD1nKyJpbnN0YW5jZXMiO2ZvcihsZXQgaD0wO2g8eS5sZW5ndGg7aCs9MSl7bGV0IGI9eVtoXSx2PWF3YWl0IGFwaS5kYi5maW5kT25lKCQse19pZDphcGkuQmlnTnVtYmVyKGIpLnRvTnVtYmVyKCl9KTtpZih2JiZ2LmFjY291bnQ9PT1mJiYoInUiPT09di5vd25lZEJ5JiYidXNlciI9PT1kfHwiYyI9PT12Lm93bmVkQnkmJiJjb250cmFjdCI9PT1kKSYmdm9pZCAwPT09di5kZWxlZ2F0ZWRUbyYmIXYuc291bEJvdW5kKXtsZXQgdz12Lm93bmVkQnksTj0idXNlciI9PT1sPyJ1IjoiYyI7di5wcmV2aW91c0FjY291bnQ9di5hY2NvdW50LHYucHJldmlvdXNPd25lZEJ5PXYub3duZWRCeSx2LmFjY291bnQ9dSx2Lm93bmVkQnk9Tixhd2FpdCBhcGkuZGIudXBkYXRlKCQsdiksYXBpLmVtaXQoInRyYW5zZmVyIix7ZnJvbTpmLGZyb21UeXBlOncsdG86dSx0b1R5cGU6TixzeW1ib2w6ZyxpZDpifSl9fX19fX0sYWN0aW9ucy5kZWxlZ2F0ZT1hc3luYyBlPT57bGV0e2Zyb21UeXBlOnQsdG86cyx0b1R5cGU6YSxuZnRzOm4saXNTaWduZWRXaXRoQWN0aXZlS2V5OmksY2FsbGluZ0NvbnRyYWN0SW5mbzpyfT1lLG89WyJ1c2VyIiwiY29udHJhY3QiXSxsPXZvaWQgMD09PWE/InVzZXIiOmEsZD12b2lkIDA9PT10PyJ1c2VyIjp0O2lmKGFwaS5hc3NlcnQoITA9PT1pLCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChkJiYic3RyaW5nIj09dHlwZW9mIGQmJm8uaW5jbHVkZXMoZCkmJnMmJiJzdHJpbmciPT10eXBlb2YgcyYmbCYmInN0cmluZyI9PXR5cGVvZiBsJiZvLmluY2x1ZGVzKGwpJiYocnx8dm9pZCAwPT09ciYmInVzZXIiPT09ZCkmJm4mJiJvYmplY3QiPT10eXBlb2YgbiYmQXJyYXkuaXNBcnJheShuKSwiaW52YWxpZCBwYXJhbXMiKSYmaXNWYWxpZE5mdElkQXJyYXkobikpe2xldCB1PSJ1c2VyIj09PWw/cy50cmltKCkudG9Mb3dlckNhc2UoKTpzLnRyaW0oKSxjPSJ1c2VyIj09PWw/aXNWYWxpZEhpdmVBY2NvdW50TGVuZ3RoKHUpOmlzVmFsaWRDb250cmFjdExlbmd0aCh1KSxmPSJ1c2VyIj09PWQ/YXBpLnNlbmRlcjpyLm5hbWU7aWYoYXBpLmFzc2VydChjLCJpbnZhbGlkIHRvIikmJmFwaS5hc3NlcnQoIShsPT09ZCYmdT09PWYpLCJjYW5ub3QgZGVsZWdhdGUgdG8gc2VsZiIpJiZhcGkuYXNzZXJ0KCEoInVzZXIiPT09bCYmIm51bGwiPT09dSksImNhbm5vdCBkZWxlZ2F0ZSB0byBudWxsIikpZm9yKGxldCBwPTA7cDxuLmxlbmd0aDtwKz0xKXtsZXR7c3ltYm9sOmcsaWRzOnl9PW5bcF0sbT1hd2FpdCBhcGkuZGIuZmluZE9uZSgibmZ0cyIse3N5bWJvbDpnfSk7aWYobSYmYXBpLmFzc2VydCghMD09PW0uZGVsZWdhdGlvbkVuYWJsZWQsYGRlbGVnYXRpb24gbm90IGVuYWJsZWQgZm9yICR7Z31gKSl7bGV0ICQ9ZysiaW5zdGFuY2VzIjtmb3IobGV0IGg9MDtoPHkubGVuZ3RoO2grPTEpe2xldCBiPXlbaF0sdj1hd2FpdCBhcGkuZGIuZmluZE9uZSgkLHtfaWQ6YXBpLkJpZ051bWJlcihiKS50b051bWJlcigpfSk7aWYodiYmdi5hY2NvdW50PT09ZiYmKCJ1Ij09PXYub3duZWRCeSYmInVzZXIiPT09ZHx8ImMiPT09di5vd25lZEJ5JiYiY29udHJhY3QiPT09ZCkmJnZvaWQgMD09PXYuZGVsZWdhdGVkVG8pe2xldCB3PSJ1c2VyIj09PWw/InUiOiJjIixOPXthY2NvdW50OnUsb3duZWRCeTp3fTt2LmRlbGVnYXRlZFRvPU4sYXdhaXQgYXBpLmRiLnVwZGF0ZSgkLHYpLGFwaS5lbWl0KCJkZWxlZ2F0ZSIse2Zyb206Zixmcm9tVHlwZTp2Lm93bmVkQnksdG86dSx0b1R5cGU6dyxzeW1ib2w6ZyxpZDpifSksYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJtaW5pbmciLCJoYW5kbGVOZnREZWxlZ2F0aW9uQ2hhbmdlIix7c3ltYm9sOmcsbmZ0OnYsYWRkOiEwfSl9fX19fX0sYWN0aW9ucy51bmRlbGVnYXRlPWFzeW5jIGU9PntsZXR7ZnJvbVR5cGU6dCxuZnRzOnMsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmEsY2FsbGluZ0NvbnRyYWN0SW5mbzpufT1lLGk9WyJ1c2VyIiwiY29udHJhY3QiXSxyPXZvaWQgMD09PXQ/InVzZXIiOnQ7aWYoYXBpLmFzc2VydCghMD09PWEsInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KHImJiJzdHJpbmciPT10eXBlb2YgciYmaS5pbmNsdWRlcyhyKSYmKG58fHZvaWQgMD09PW4mJiJ1c2VyIj09PXIpJiZzJiYib2JqZWN0Ij09dHlwZW9mIHMmJkFycmF5LmlzQXJyYXkocyksImludmFsaWQgcGFyYW1zIikmJmlzVmFsaWROZnRJZEFycmF5KHMpKXtsZXQgbz0idXNlciI9PT1yP2FwaS5zZW5kZXI6bi5uYW1lLGw9bmV3IERhdGUoYCR7YXBpLmhpdmVCbG9ja1RpbWVzdGFtcH0uMDAwWmApO2ZvcihsZXQgZD0wO2Q8cy5sZW5ndGg7ZCs9MSl7bGV0e3N5bWJvbDp1LGlkczpjfT1zW2RdLGY9YXdhaXQgYXBpLmRiLmZpbmRPbmUoIm5mdHMiLHtzeW1ib2w6dX0pO2lmKGYmJmFwaS5hc3NlcnQoITA9PT1mLmRlbGVnYXRpb25FbmFibGVkLGBkZWxlZ2F0aW9uIG5vdCBlbmFibGVkIGZvciAke3V9YCkpe2xldCBwPTg2NGU1KmYudW5kZWxlZ2F0aW9uQ29vbGRvd24sZz1sLmdldFRpbWUoKStwLHk9dSsiaW5zdGFuY2VzIixtPXtzeW1ib2w6dSxpZHM6W10sY29tcGxldGVUaW1lc3RhbXA6Z307Zm9yKGxldCAkPTA7JDxjLmxlbmd0aDskKz0xKXtsZXQgaD1jWyRdLGI9YXdhaXQgYXBpLmRiLmZpbmRPbmUoeSx7X2lkOmFwaS5CaWdOdW1iZXIoaCkudG9OdW1iZXIoKX0pO2ImJmIuYWNjb3VudD09PW8mJigidSI9PT1iLm93bmVkQnkmJiJ1c2VyIj09PXJ8fCJjIj09PWIub3duZWRCeSYmImNvbnRyYWN0Ij09PXIpJiZiLmRlbGVnYXRlZFRvJiZ2b2lkIDA9PT1iLmRlbGVnYXRlZFRvLnVuZGVsZWdhdGVBdCYmKGIuZGVsZWdhdGVkVG8udW5kZWxlZ2F0ZUF0PWcsbS5pZHMucHVzaChiLl9pZCksYXdhaXQgYXBpLmRiLnVwZGF0ZSh5LGIpLGFwaS5lbWl0KCJ1bmRlbGVnYXRlU3RhcnQiLHtmcm9tOmIuZGVsZWdhdGVkVG8uYWNjb3VudCxmcm9tVHlwZTpiLmRlbGVnYXRlZFRvLm93bmVkQnksc3ltYm9sOnUsaWQ6aH0pLGF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgibWluaW5nIiwiaGFuZGxlTmZ0RGVsZWdhdGlvbkNoYW5nZSIse3N5bWJvbDp1LG5mdDpiLGFkZDohMX0pKX1tLmlkcy5sZW5ndGg+MCYmYXdhaXQgYXBpLmRiLmluc2VydCgicGVuZGluZ1VuZGVsZWdhdGlvbnMiLG0pfX19fTtjb25zdCBwcm9jZXNzVW5kZWxlZ2F0aW9uPWFzeW5jIGU9PntsZXR7c3ltYm9sOnQsaWRzOnN9PWUsYT10KyJpbnN0YW5jZXMiLG49YXdhaXQgYXBpLmRiLmZpbmQoYSx7X2lkOnskaW46c319LDUwLDAsW3tpbmRleDoiX2lkIixkZXNjZW5kaW5nOiExfV0pO2ZvcihsZXQgaT0wO2k8bi5sZW5ndGg7aSs9MSlkZWxldGUgbltpXS5kZWxlZ2F0ZWRUbyxhd2FpdCBhcGkuZGIudXBkYXRlKGEsbltpXSx7ZGVsZWdhdGVkVG86IiJ9KTthd2FpdCBhcGkuZGIucmVtb3ZlKCJwZW5kaW5nVW5kZWxlZ2F0aW9ucyIsZSksYXBpLmVtaXQoInVuZGVsZWdhdGVEb25lIix7c3ltYm9sOnQsaWRzOnN9KX07YWN0aW9ucy5jaGVja1BlbmRpbmdVbmRlbGVnYXRpb25zPWFzeW5jKCk9PntpZihhcGkuYXNzZXJ0KCJudWxsIj09PWFwaS5zZW5kZXIsIm5vdCBhdXRob3JpemVkIikpe2xldCBlPW5ldyBEYXRlKGAke2FwaS5oaXZlQmxvY2tUaW1lc3RhbXB9LjAwMFpgKSx0PWUuZ2V0VGltZSgpLHM9YXdhaXQgYXBpLmRiLmZpbmQoInBlbmRpbmdVbmRlbGVnYXRpb25zIix7Y29tcGxldGVUaW1lc3RhbXA6eyRsdGU6dH19KSxhPXMubGVuZ3RoO2Zvcig7YT4wOyl7Zm9yKGxldCBuPTA7bjxhO24rPTEpe2xldCBpPXNbbl07YXdhaXQgcHJvY2Vzc1VuZGVsZWdhdGlvbihpKX1hPShzPWF3YWl0IGFwaS5kYi5maW5kKCJwZW5kaW5nVW5kZWxlZ2F0aW9ucyIse2NvbXBsZXRlVGltZXN0YW1wOnskbHRlOnR9fSkpLmxlbmd0aH19fSxhY3Rpb25zLmNyZWF0ZT1hc3luYyBlPT57bGV0e25hbWU6dCxvcmdOYW1lOnMscHJvZHVjdE5hbWU6YSxzeW1ib2w6bix1cmw6aSxtYXhTdXBwbHk6cixhdXRob3JpemVkSXNzdWluZ0FjY291bnRzOm8sYXV0aG9yaXplZElzc3VpbmdDb250cmFjdHM6bCxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6ZH09ZSx1PWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KSx7bmZ0Q3JlYXRpb25GZWU6Y309dSxmPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwiYmFsYW5jZXMiLHthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOiJCRUUifSkscD0hIWFwaS5CaWdOdW1iZXIoYykubHRlKDApfHxmJiZhcGkuQmlnTnVtYmVyKGYuYmFsYW5jZSkuZ3RlKGMpO2lmKGFwaS5hc3NlcnQocCwieW91IG11c3QgaGF2ZSBlbm91Z2ggdG9rZW5zIHRvIGNvdmVyIHRoZSBjcmVhdGlvbiBmZWVzIikmJmFwaS5hc3NlcnQoITA9PT1kLCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydCh0JiYic3RyaW5nIj09dHlwZW9mIHQmJm4mJiJzdHJpbmciPT10eXBlb2YgbiYmKHZvaWQgMD09PWl8fGkmJiJzdHJpbmciPT10eXBlb2YgaSkmJih2b2lkIDA9PT1zfHxzJiYic3RyaW5nIj09dHlwZW9mIHMpJiYodm9pZCAwPT09YXx8YSYmInN0cmluZyI9PXR5cGVvZiBhKSYmKHZvaWQgMD09PW98fG8mJiJvYmplY3QiPT10eXBlb2YgbyYmQXJyYXkuaXNBcnJheShvKSkmJih2b2lkIDA9PT1sfHxsJiYib2JqZWN0Ij09dHlwZW9mIGwmJkFycmF5LmlzQXJyYXkobCkpJiYodm9pZCAwPT09cnx8ciYmInN0cmluZyI9PXR5cGVvZiByJiYhYXBpLkJpZ051bWJlcihyKS5pc05hTigpKSwiaW52YWxpZCBwYXJhbXMiKSYmYXBpLmFzc2VydChhcGkudmFsaWRhdG9yLmlzQWxwaGEobikmJmFwaS52YWxpZGF0b3IuaXNVcHBlcmNhc2UobikmJm4ubGVuZ3RoPjAmJm4ubGVuZ3RoPD0xMCwiaW52YWxpZCBzeW1ib2w6IHVwcGVyY2FzZSBsZXR0ZXJzIG9ubHksIG1heCBsZW5ndGggb2YgMTAiKSYmYXBpLmFzc2VydCh2b2lkIDA9PT1SRVNFUlZFRF9TWU1CT0xTW25dfHxhcGkuc2VuZGVyPT09UkVTRVJWRURfU1lNQk9MU1tuXSwiY2Fubm90IHVzZSB0aGlzIHN5bWJvbCIpJiZhcGkuYXNzZXJ0KGFwaS52YWxpZGF0b3IuaXNBbHBoYW51bWVyaWMoYXBpLnZhbGlkYXRvci5ibGFja2xpc3QodCwiICIpKSYmdC5sZW5ndGg+MCYmdC5sZW5ndGg8PTUwLCJpbnZhbGlkIG5hbWU6IGxldHRlcnMsIG51bWJlcnMsIHdoaXRlc3BhY2VzIG9ubHksIG1heCBsZW5ndGggb2YgNTAiKSYmYXBpLmFzc2VydCh2b2lkIDA9PT1zfHxhcGkudmFsaWRhdG9yLmlzQWxwaGFudW1lcmljKGFwaS52YWxpZGF0b3IuYmxhY2tsaXN0KHMsIiAiKSkmJnMubGVuZ3RoPjAmJnMubGVuZ3RoPD01MCwiaW52YWxpZCBvcmcgbmFtZTogbGV0dGVycywgbnVtYmVycywgd2hpdGVzcGFjZXMgb25seSwgbWF4IGxlbmd0aCBvZiA1MCIpJiZhcGkuYXNzZXJ0KHZvaWQgMD09PWF8fGFwaS52YWxpZGF0b3IuaXNBbHBoYW51bWVyaWMoYXBpLnZhbGlkYXRvci5ibGFja2xpc3QoYSwiICIpKSYmYS5sZW5ndGg+MCYmYS5sZW5ndGg8PTUwLCJpbnZhbGlkIHByb2R1Y3QgbmFtZTogbGV0dGVycywgbnVtYmVycywgd2hpdGVzcGFjZXMgb25seSwgbWF4IGxlbmd0aCBvZiA1MCIpJiZhcGkuYXNzZXJ0KHZvaWQgMD09PWl8fGkubGVuZ3RoPD0yNTUsImludmFsaWQgdXJsOiBtYXggbGVuZ3RoIG9mIDI1NSIpJiZhcGkuYXNzZXJ0KHZvaWQgMD09PXJ8fGFwaS5CaWdOdW1iZXIocikuZ3QoMCksIm1heFN1cHBseSBtdXN0IGJlIHBvc2l0aXZlIikmJmFwaS5hc3NlcnQodm9pZCAwPT09cnx8YXBpLkJpZ051bWJlcihyKS5sdGUoTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpLGBtYXhTdXBwbHkgbXVzdCBiZSBsb3dlciB0aGFuICR7TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJ9YCkpe2xldCBnPWF3YWl0IGFwaS5kYi5maW5kT25lKCJuZnRzIix7c3ltYm9sOm59KTtpZihhcGkuYXNzZXJ0KG51bGw9PT1nLCJzeW1ib2wgYWxyZWFkeSBleGlzdHMiKSl7aWYoYXBpLkJpZ051bWJlcihjKS5ndCgwKSl7bGV0IHk9YXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ0b2tlbnMiLCJ0cmFuc2ZlciIse3RvOiJudWxsIixzeW1ib2w6IkJFRSIscXVhbnRpdHk6Yyxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6ZH0pO2lmKCFpc1Rva2VuVHJhbnNmZXJWZXJpZmllZCh5LGFwaS5zZW5kZXIsIm51bGwiLCJCRUUiLGMsInRyYW5zZmVyIikpcmV0dXJuITF9bGV0IG09dm9pZCAwPT09cj8wOmFwaS5CaWdOdW1iZXIocikuaW50ZWdlclZhbHVlKGFwaS5CaWdOdW1iZXIuUk9VTkRfRE9XTikudG9OdW1iZXIoKSwkPXZvaWQgMD09PXM/IiI6cyxoPXZvaWQgMD09PWE/IiI6YSxiPXZvaWQgMD09PWk/IiI6aSx2PXt1cmw6Yn07dj1KU09OLnN0cmluZ2lmeSh2KTtsZXQgdz12b2lkIDA9PT1vP1thcGkuc2VuZGVyXTpbXSxOPXtpc3N1ZXI6YXBpLnNlbmRlcixzeW1ib2w6bixuYW1lOnQsb3JnTmFtZTokLHByb2R1Y3ROYW1lOmgsbWV0YWRhdGE6dixtYXhTdXBwbHk6bSxzdXBwbHk6MCxjaXJjdWxhdGluZ1N1cHBseTowLGRlbGVnYXRpb25FbmFibGVkOiExLHVuZGVsZWdhdGlvbkNvb2xkb3duOjAsYXV0aG9yaXplZElzc3VpbmdBY2NvdW50czp3LGF1dGhvcml6ZWRJc3N1aW5nQ29udHJhY3RzOltdLHByb3BlcnRpZXM6e30sZ3JvdXBCeTpbXX0sXz1uKyJpbnN0YW5jZXMiLEE9YXdhaXQgYXBpLmRiLnRhYmxlRXhpc3RzKF8pO3JldHVybiExPT09QSYmYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKF8sWyJhY2NvdW50Iiwib3duZWRCeSJdKSxhd2FpdCBhcGkuZGIuaW5zZXJ0KCJuZnRzIixOKSx2b2lkIDAhPT1vJiZhd2FpdCBhY3Rpb25zLmFkZEF1dGhvcml6ZWRJc3N1aW5nQWNjb3VudHMoe2FjY291bnRzOm8sc3ltYm9sOm4saXNTaWduZWRXaXRoQWN0aXZlS2V5OmR9KSx2b2lkIDAhPT1sJiZhd2FpdCBhY3Rpb25zLmFkZEF1dGhvcml6ZWRJc3N1aW5nQ29udHJhY3RzKHtjb250cmFjdHM6bCxzeW1ib2w6bixpc1NpZ25lZFdpdGhBY3RpdmVLZXk6ZH0pLCEwfX1yZXR1cm4hMX0sYWN0aW9ucy5pc3N1ZT1hc3luYyBlPT57bGV0e3N5bWJvbDp0LGZyb21UeXBlOnMsdG86YSx0b1R5cGU6bixmZWVTeW1ib2w6aSxsb2NrVG9rZW5zOnIsbG9ja05mdHM6byxzb3VsQm91bmQ6bCxwcm9wZXJ0aWVzOmQsaXNTaWduZWRXaXRoQWN0aXZlS2V5OnUsY2FsbGluZ0NvbnRyYWN0SW5mbzpjfT1lLGY9WyJ1c2VyIiwiY29udHJhY3QiXSxwPXZvaWQgMD09PW4/InVzZXIiOm4sZz12b2lkIDA9PT1zPyJ1c2VyIjpzLHk9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pLHtuZnRJc3N1YW5jZUZlZTptfT15O2lmKGFwaS5hc3NlcnQoITA9PT11LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydCh0JiYic3RyaW5nIj09dHlwZW9mIHQmJmcmJiJzdHJpbmciPT10eXBlb2YgZyYmZi5pbmNsdWRlcyhnKSYmKGN8fHZvaWQgMD09PWMmJiJ1c2VyIj09PWcpJiZhJiYic3RyaW5nIj09dHlwZW9mIGEmJnAmJiJzdHJpbmciPT10eXBlb2YgcCYmZi5pbmNsdWRlcyhwKSYmaSYmInN0cmluZyI9PXR5cGVvZiBpJiZpIGluIG0mJih2b2lkIDA9PT1kfHxkJiYib2JqZWN0Ij09dHlwZW9mIGQpJiYodm9pZCAwPT09cnx8ciYmIm9iamVjdCI9PXR5cGVvZiByKSYmKHZvaWQgMD09PW98fG8mJiJvYmplY3QiPT10eXBlb2YgbyYmQXJyYXkuaXNBcnJheShvKSkmJih2b2lkIDA9PT1sfHxsJiYiYm9vbGVhbiI9PXR5cGVvZiBsKSwiaW52YWxpZCBwYXJhbXMiKSYmKHZvaWQgMD09PW98fGlzVmFsaWROZnRJZEFycmF5KG8pKSl7bGV0ICQ9InVzZXIiPT09cD9hLnRyaW0oKS50b0xvd2VyQ2FzZSgpOmEudHJpbSgpLGg9InVzZXIiPT09cD9pc1ZhbGlkSGl2ZUFjY291bnRMZW5ndGgoJCk6aXNWYWxpZENvbnRyYWN0TGVuZ3RoKCQpLGI9InVzZXIiPT09Zz9hcGkuc2VuZGVyOmMubmFtZSx2PSJ1c2VyIj09PWc/ImJhbGFuY2VzIjoiY29udHJhY3RzQmFsYW5jZXMiO2lmKGFwaS5hc3NlcnQoaCwiaW52YWxpZCB0byIpKXtsZXQgdz1hd2FpdCBhcGkuZGIuZmluZE9uZSgibmZ0cyIse3N5bWJvbDp0fSksTj1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsInRva2VucyIse3N5bWJvbDppfSk7aWYoYXBpLmFzc2VydChudWxsIT09dywic3ltYm9sIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQobnVsbCE9PU4sImZlZSBzeW1ib2wgZG9lcyBub3QgZXhpc3QiKSl7bGV0IF89dCsiaW5zdGFuY2VzIjtpZihhcGkuYXNzZXJ0KCJjb250cmFjdCI9PT1nJiZ3LmF1dGhvcml6ZWRJc3N1aW5nQ29udHJhY3RzLmluY2x1ZGVzKGIpfHwidXNlciI9PT1nJiZ3LmF1dGhvcml6ZWRJc3N1aW5nQWNjb3VudHMuaW5jbHVkZXMoYiksIm5vdCBhbGxvd2VkIHRvIGlzc3VlIHRva2VucyIpJiZhcGkuYXNzZXJ0KDA9PT13Lm1heFN1cHBseXx8dy5zdXBwbHk8dy5tYXhTdXBwbHksIm1heCBzdXBwbHkgbGltaXQgcmVhY2hlZCIpKXtsZXQgQT1PYmplY3Qua2V5cyh3LnByb3BlcnRpZXMpLmxlbmd0aCxUPWFwaS5CaWdOdW1iZXIobVtpXSkubXVsdGlwbGllZEJ5KEEpLGs9Y2FsY3VsYXRlQmFsYW5jZShtW2ldLFQsTi5wcmVjaXNpb24sITApLEI9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLHYse2FjY291bnQ6YixzeW1ib2w6aX0pLEU9ISFhcGkuQmlnTnVtYmVyKGspLmx0ZSgwKXx8QiYmYXBpLkJpZ051bWJlcihCLmJhbGFuY2UpLmd0ZShrKTtpZihyKXtsZXQgTz1hd2FpdCBpc1ZhbGlkVG9rZW5CYXNrZXQocix2LGIsaSxrKTtpZighYXBpLmFzc2VydChPLCJpbnZhbGlkIGJhc2tldCBvZiB0b2tlbnMgdG8gbG9jayAoY2Fubm90IGxvY2sgbW9yZSB0aGFuIDEwIHRva2VuIHR5cGVzOyBpc3N1aW5nIGFjY291bnQgbXVzdCBoYXZlIGVub3VnaCBiYWxhbmNlKSIpKXJldHVybiExfWxldCBDPXt9O2lmKHZvaWQgMCE9PWQpe3RyeXtpZighaXNWYWxpZERhdGFQcm9wZXJ0aWVzKGIsZyx3LGQpKXJldHVybiExfWNhdGNoKEkpe3JldHVybiExfUM9ZH1pZihhcGkuYXNzZXJ0KEUsInlvdSBtdXN0IGhhdmUgZW5vdWdoIHRva2VucyB0byBjb3ZlciB0aGUgaXNzdWFuY2UgZmVlcyIpKXtpZihhcGkuQmlnTnVtYmVyKGspLmd0KDApKXtpZigiY29udHJhY3QiPT09Zyl7bGV0IFM9YXdhaXQgYXBpLnRyYW5zZmVyVG9rZW5zRnJvbUNhbGxpbmdDb250cmFjdCgibnVsbCIsaSxrLCJ1c2VyIik7aWYoIWFwaS5hc3NlcnQoaXNUb2tlblRyYW5zZmVyVmVyaWZpZWQoUyxiLCJudWxsIixpLGssInRyYW5zZmVyRnJvbUNvbnRyYWN0IiksInVuYWJsZSB0byB0cmFuc2ZlciBpc3N1YW5jZSBmZWUiKSlyZXR1cm4hMX1lbHNle2xldCBWPWF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgidG9rZW5zIiwidHJhbnNmZXIiLHt0bzoibnVsbCIsc3ltYm9sOmkscXVhbnRpdHk6ayxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6dX0pO2lmKCFhcGkuYXNzZXJ0KGlzVG9rZW5UcmFuc2ZlclZlcmlmaWVkKFYsYiwibnVsbCIsaSxrLCJ0cmFuc2ZlciIpLCJ1bmFibGUgdG8gdHJhbnNmZXIgaXNzdWFuY2UgZmVlIikpcmV0dXJuITF9fWxldCB4PXt9O2lmKHIpZm9yKGxldFtqLExdb2YgT2JqZWN0LmVudHJpZXMocikpaWYoImNvbnRyYWN0Ij09PWcpe2xldCB6PWF3YWl0IGFwaS50cmFuc2ZlclRva2Vuc0Zyb21DYWxsaW5nQ29udHJhY3QoIm5mdCIsaixMLCJjb250cmFjdCIpO2lzVG9rZW5UcmFuc2ZlclZlcmlmaWVkKHosYiwibmZ0IixqLEwsInRyYW5zZmVyRnJvbUNvbnRyYWN0IikmJih4W2pdPUwpfWVsc2V7bGV0IFI9YXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ0b2tlbnMiLCJ0cmFuc2ZlclRvQ29udHJhY3QiLHt0bzoibmZ0IixzeW1ib2w6aixxdWFudGl0eTpMLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTp1fSk7aXNUb2tlblRyYW5zZmVyVmVyaWZpZWQoUixiLCJuZnQiLGosTCwidHJhbnNmZXJUb0NvbnRyYWN0IikmJih4W2pdPUwpfWxldCBGPVtdO2lmKG8mJm8ubGVuZ3RoPjApe2xldCBEPWF3YWl0IHRyYW5zZmVyQW5kVmVyaWZ5TmZ0cyhiLGcsIm5mdCIsImNvbnRyYWN0IixvLHUsYyk7Rj1ELnN1Y2Nlc3N9bGV0IE09InVzZXIiPT09cD8idSI6ImMiLFA9e307UD1GLmxlbmd0aD4wP3thY2NvdW50OiQsc291bEJvdW5kOmwsb3duZWRCeTpNLGxvY2tlZFRva2Vuczp4LGxvY2tlZE5mdHM6Rixwcm9wZXJ0aWVzOkN9OnthY2NvdW50OiQsc291bEJvdW5kOmwsb3duZWRCeTpNLGxvY2tlZFRva2Vuczp4LHByb3BlcnRpZXM6Q307bGV0IFU9YXdhaXQgYXBpLmRiLmluc2VydChfLFApO3JldHVybiB3LnN1cHBseSs9MSwoIm51bGwiIT09JHx8ImNvbnRyYWN0Ij09PXApJiYody5jaXJjdWxhdGluZ1N1cHBseSs9MSksYXdhaXQgYXBpLmRiLnVwZGF0ZSgibmZ0cyIsdyksYXBpLmVtaXQoImlzc3VlIix7ZnJvbTpiLGZyb21UeXBlOmcsdG86JCx0b1R5cGU6cCxzeW1ib2w6dCxsb2NrZWRUb2tlbnM6eCxsb2NrZWROZnRzOkYscHJvcGVydGllczpDLGlkOlUuX2lkfSksITB9fX19fXJldHVybiExfSxhY3Rpb25zLmlzc3VlTXVsdGlwbGU9YXN5bmMgZT0+e2xldHtpbnN0YW5jZXM6dCxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6cyxjYWxsaW5nQ29udHJhY3RJbmZvOmF9PWU7aWYoYXBpLmFzc2VydCghMD09PXMsInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KHQmJiJvYmplY3QiPT10eXBlb2YgdCYmQXJyYXkuaXNBcnJheSh0KSwiaW52YWxpZCBwYXJhbXMiKSYmYXBpLmFzc2VydCh0Lmxlbmd0aDw9MTAsImNhbm5vdCBpc3N1ZSBtb3JlIHRoYW4gMTAgTkZUIGluc3RhbmNlcyBhdCBvbmNlIikpe2xldCBuPTA7aWYodC5mb3JFYWNoKGU9PntlLmxvY2tOZnRzJiYobis9MSl9KSxhcGkuYXNzZXJ0KG48PTEsImNhbm5vdCBpc3N1ZSBtb3JlIHRoYW4gMSBjb250YWluZXIgTkZUIGluc3RhbmNlcyBhdCBvbmNlIikmJmFwaS5hc3NlcnQoMD09PW58fG49PT10Lmxlbmd0aCwiY2Fubm90IGlzc3VlIGEgbWl4IG9mIGNvbnRhaW5lciBhbmQgbm9uLWNvbnRhaW5lciBORlQgaW5zdGFuY2VzIHNpbXVsdGFuZW91c2x5IikpZm9yKGxldCBpPTA7aTx0Lmxlbmd0aDtpKz0xKXtsZXR7c3ltYm9sOnIsZnJvbVR5cGU6byx0bzpsLHRvVHlwZTpkLGZlZVN5bWJvbDp1LGxvY2tUb2tlbnM6Yyxsb2NrTmZ0czpmLHByb3BlcnRpZXM6cH09dFtpXTthd2FpdCBhY3Rpb25zLmlzc3VlKHtzeW1ib2w6cixmcm9tVHlwZTpvLHRvOmwsdG9UeXBlOmQsZmVlU3ltYm9sOnUsbG9ja1Rva2VuczpjLGxvY2tOZnRzOmYscHJvcGVydGllczpwLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTpzLGNhbGxpbmdDb250cmFjdEluZm86YX0pfX19Ow=="}}}
You are viewing a single comment's thread from: