{"id":"ssc-mainnet-hive","json":{"contractName":"contract","contractAction":"update","contractPayload":{"name":"comments","params":"","code":"Y29uc3QgU01UX1BSRUNJU0lPTj0xMCxNQVhfVk9USU5HX1BPV0VSPTFlNCxNQVhfV0VJR0hUPTFlNCxQT1NUX1FVRVJZX0xJTUlUPTFlMztmdW5jdGlvbiBjYWxjdWxhdGVXZWlnaHRSc2hhcmVzKHJld2FyZFBvb2wsdm90ZVJzaGFyZVN1bSl7aWYoYXBpLkJpZ051bWJlcih2b3RlUnNoYXJlU3VtKS5sdGUoMCkpcmV0dXJuIGFwaS5CaWdOdW1iZXIoMCk7aWYoInBvd2VyIj09PXJld2FyZFBvb2wuY29uZmlnLnBvc3RSZXdhcmRDdXJ2ZSl7Y29uc3QgcG9zdFJld2FyZEV4cG9uZW50PWFwaS5CaWdOdW1iZXIocmV3YXJkUG9vbC5jb25maWcucG9zdFJld2FyZEN1cnZlUGFyYW1ldGVyKTtyZXR1cm4gcG9zdFJld2FyZEV4cG9uZW50LmVxKCIxIil8fHBvc3RSZXdhcmRFeHBvbmVudC5lcSgiMiIpP2FwaS5CaWdOdW1iZXIodm90ZVJzaGFyZVN1bSkucG93KHJld2FyZFBvb2wuY29uZmlnLnBvc3RSZXdhcmRDdXJ2ZVBhcmFtZXRlcikudG9GaXhlZCgxMCxhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pOmFwaS5CaWdOdW1iZXIocGFyc2VGbG9hdCh2b3RlUnNoYXJlU3VtKSoqcGFyc2VGbG9hdChyZXdhcmRQb29sLmNvbmZpZy5wb3N0UmV3YXJkQ3VydmVQYXJhbWV0ZXIpKS50b0ZpeGVkKDEwLGFwaS5CaWdOdW1iZXIuUk9VTkRfRE9XTil9cmV0dXJuIGFwaS5CaWdOdW1iZXIodm90ZVJzaGFyZVN1bSl9ZnVuY3Rpb24gY2FsY3VsYXRlQ3VyYXRpb25XZWlnaHRSc2hhcmVzKHJld2FyZFBvb2wsdm90ZVJzaGFyZVN1bSl7aWYoYXBpLkJpZ051bWJlcih2b3RlUnNoYXJlU3VtKS5sdGUoMCkpcmV0dXJuIGFwaS5CaWdOdW1iZXIoMCk7aWYoInBvd2VyIj09PXJld2FyZFBvb2wuY29uZmlnLmN1cmF0aW9uUmV3YXJkQ3VydmUpe2NvbnN0IGN1cmF0aW9uUmV3YXJkRXhwb25lbnQ9YXBpLkJpZ051bWJlcihyZXdhcmRQb29sLmNvbmZpZy5jdXJhdGlvblJld2FyZEN1cnZlUGFyYW1ldGVyKTtyZXR1cm4gY3VyYXRpb25SZXdhcmRFeHBvbmVudC5lcSgiMC41Iik/YXBpLkJpZ051bWJlcih2b3RlUnNoYXJlU3VtKS5zcXJ0KCkudG9GaXhlZCgxMCxhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pOmN1cmF0aW9uUmV3YXJkRXhwb25lbnQuZXEoIjEiKT9hcGkuQmlnTnVtYmVyKHZvdGVSc2hhcmVTdW0pLnRvRml4ZWQoMTAsYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKTphcGkuQmlnTnVtYmVyKHBhcnNlRmxvYXQodm90ZVJzaGFyZVN1bSkqKnBhcnNlRmxvYXQocmV3YXJkUG9vbC5jb25maWcuY3VyYXRpb25SZXdhcmRDdXJ2ZVBhcmFtZXRlcikpLnRvRml4ZWQoMTAsYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKX1yZXR1cm4gYXBpLkJpZ051bWJlcih2b3RlUnNoYXJlU3VtKX1hc3luYyBmdW5jdGlvbiBwYXlVc2VyKHN5bWJvbCxxdWFudGl0eSx1c2VyLHN0YWtlZFJld2FyZFBlcmNlbnRhZ2UsbXV0ZSl7aWYobXV0ZSlyZXR1cm47Y29uc3QgcXVhbnRpdHlCaWdudW09YXBpLkJpZ051bWJlcihxdWFudGl0eSksc3Rha2VkUXVhbnRpdHk9cXVhbnRpdHlCaWdudW0ubXVsdGlwbGllZEJ5KHN0YWtlZFJld2FyZFBlcmNlbnRhZ2UpLmRpdmlkZWRCeSgxMDApLnRvRml4ZWQocXVhbnRpdHlCaWdudW0uZHAoKSxhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pLGxpcXVpZFF1YW50aXR5PXF1YW50aXR5QmlnbnVtLm1pbnVzKHN0YWtlZFF1YW50aXR5KS50b0ZpeGVkKHF1YW50aXR5QmlnbnVtLmRwKCksYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKTtsZXQgcmVzO2FwaS5CaWdOdW1iZXIobGlxdWlkUXVhbnRpdHkpLmd0KDApJiYocmVzPWF3YWl0IGFwaS50cmFuc2ZlclRva2Vucyh1c2VyLHN5bWJvbCxsaXF1aWRRdWFudGl0eSwidXNlciIpLHJlcy5lcnJvcnMmJmFwaS5kZWJ1ZyhgRXJyb3IgcGF5aW5nIG91dCBsaXF1aWQgJHtsaXF1aWRRdWFudGl0eX0gJHtzeW1ib2x9IHRvICR7dXNlcn0gKFRYSUQgJHthcGkudHJhbnNhY3Rpb25JZH0pOiBcbiR7cmVzLmVycm9yc31gKSksYXBpLkJpZ051bWJlcihzdGFrZWRRdWFudGl0eSkuZ3QoMCkmJihyZXM9YXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ0b2tlbnMiLCJzdGFrZUZyb21Db250cmFjdCIse3RvOnVzZXIsc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpzdGFrZWRRdWFudGl0eX0pLHJlcy5lcnJvcnMmJmFwaS5kZWJ1ZyhgRXJyb3IgcGF5aW5nIG91dCBzdGFrZWQgJHtzdGFrZWRRdWFudGl0eX0gJHtzeW1ib2x9IHRvICR7dXNlcn0gKFRYSUQgJHthcGkudHJhbnNhY3Rpb25JZH0pOiBcbiR7cmVzLmVycm9yc31gKSl9YXN5bmMgZnVuY3Rpb24gZ2V0TXV0ZShyZXdhcmRQb29sSWQsYWNjb3VudCl7Y29uc3Qgdm90aW5nUG93ZXI9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInZvdGluZ1Bvd2VyIix7cmV3YXJkUG9vbElkOnJld2FyZFBvb2xJZCxhY2NvdW50OmFjY291bnR9KTtyZXR1cm4hIXZvdGluZ1Bvd2VyJiZ2b3RpbmdQb3dlci5tdXRlfWFzeW5jIGZ1bmN0aW9uIHBheU91dEJlbmVmaWNpYXJpZXMocmV3YXJkUG9vbCx0b2tlbixwb3N0LGF1dGhvckJlbmVQb3J0aW9uKXtjb25zdHthdXRob3JwZXJtOmF1dGhvcnBlcm0sc3ltYm9sOnN5bWJvbCxyZXdhcmRQb29sSWQ6cmV3YXJkUG9vbElkLGJlbmVmaWNpYXJpZXM6YmVuZWZpY2lhcmllc309cG9zdDtpZighYmVuZWZpY2lhcmllc3x8MD09PWJlbmVmaWNpYXJpZXMubGVuZ3RoKXJldHVybiBhcGkuQmlnTnVtYmVyKDApO2xldCB0b3RhbEJlbmVQYXk9YXBpLkJpZ051bWJlcigwKTtmb3IobGV0IGk9MDtpPGJlbmVmaWNpYXJpZXMubGVuZ3RoO2krPTEpe2NvbnN0IGJlbmVmaWNpYXJ5PWJlbmVmaWNpYXJpZXNbaV0sYmVuZVBheT1hcGkuQmlnTnVtYmVyKGF1dGhvckJlbmVQb3J0aW9uKS5tdWx0aXBsaWVkQnkoYmVuZWZpY2lhcnkud2VpZ2h0KS5kaXZpZGVkQnkoMWU0KS50b0ZpeGVkKHRva2VuLnByZWNpc2lvbixhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pLG11dGU9YXdhaXQgZ2V0TXV0ZShyZXdhcmRQb29sSWQsYmVuZWZpY2lhcnkuYWNjb3VudCkscmV3YXJkTG9nPXtyZXdhcmRQb29sSWQ6cmV3YXJkUG9vbElkLGF1dGhvcnBlcm06YXV0aG9ycGVybSxzeW1ib2w6c3ltYm9sLGFjY291bnQ6YmVuZWZpY2lhcnkuYWNjb3VudCxxdWFudGl0eTpiZW5lUGF5fTttdXRlJiYocmV3YXJkTG9nLm11dGU9ITApLGFwaS5lbWl0KCJiZW5lZmljaWFyeVJld2FyZCIscmV3YXJkTG9nKSxhd2FpdCBwYXlVc2VyKHN5bWJvbCxiZW5lUGF5LGJlbmVmaWNpYXJ5LmFjY291bnQscmV3YXJkUG9vbC5jb25maWcuc3Rha2VkUmV3YXJkUGVyY2VudGFnZSxtdXRlKSx0b3RhbEJlbmVQYXk9YXBpLkJpZ051bWJlcih0b3RhbEJlbmVQYXkpLnBsdXMoYmVuZVBheSl9cmV0dXJuIHRvdGFsQmVuZVBheX1hc3luYyBmdW5jdGlvbiBwYXlPdXRDdXJhdG9ycyhyZXdhcmRQb29sLHRva2VuLHBvc3QsY3VyYXRvclBvcnRpb24scGFyYW1zKXtjb25zdHthdXRob3JwZXJtOmF1dGhvcnBlcm0sc3ltYm9sOnN5bWJvbCxyZXdhcmRQb29sSWQ6cmV3YXJkUG9vbElkfT1wb3N0LHt2b3RlUXVlcnlMaW1pdDp2b3RlUXVlcnlMaW1pdH09cGFyYW1zLHJlc3BvbnNlPXtkb25lOiExLHZvdGVzUHJvY2Vzc2VkOjB9LHZvdGVzVG9QYXlvdXQ9YXdhaXQgYXBpLmRiLmZpbmQoInZvdGVzIix7cmV3YXJkUG9vbElkOnJld2FyZFBvb2xJZCxhdXRob3JwZXJtOmF1dGhvcnBlcm19LHZvdGVRdWVyeUxpbWl0LDAsW3tpbmRleDoiYnlUaW1lc3RhbXAiLGRlc2NlbmRpbmc6ITF9LHtpbmRleDoiX2lkIixkZXNjZW5kaW5nOiExfV0pO2lmKDA9PT12b3Rlc1RvUGF5b3V0Lmxlbmd0aClyZXNwb25zZS5kb25lPSEwO2Vsc2V7Zm9yKGxldCBpPTA7aTx2b3Rlc1RvUGF5b3V0Lmxlbmd0aDtpKz0xKXtjb25zdCB2b3RlPXZvdGVzVG9QYXlvdXRbaV07aWYoYXBpLkJpZ051bWJlcih2b3RlLmN1cmF0aW9uV2VpZ2h0KT4wKXtjb25zdCB0b3RhbEN1cmF0aW9uV2VpZ2h0PWNhbGN1bGF0ZUN1cmF0aW9uV2VpZ2h0UnNoYXJlcyhyZXdhcmRQb29sLHBvc3Qudm90ZVBvc2l0aXZlUnNoYXJlU3VtKSx2b3RlUGF5PWFwaS5CaWdOdW1iZXIoY3VyYXRvclBvcnRpb24pLm11bHRpcGxpZWRCeSh2b3RlLmN1cmF0aW9uV2VpZ2h0KS5kaXZpZGVkQnkodG90YWxDdXJhdGlvbldlaWdodCkudG9GaXhlZCh0b2tlbi5wcmVjaXNpb24sYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKSxtdXRlPWF3YWl0IGdldE11dGUocmV3YXJkUG9vbElkLHZvdGUudm90ZXIpLHJld2FyZExvZz17cmV3YXJkUG9vbElkOnJld2FyZFBvb2xJZCxhdXRob3JwZXJtOmF1dGhvcnBlcm0sc3ltYm9sOnN5bWJvbCxhY2NvdW50OnZvdGUudm90ZXIscXVhbnRpdHk6dm90ZVBheX07bXV0ZSYmKHJld2FyZExvZy5tdXRlPSEwKSxhcGkuZW1pdCgiY3VyYXRpb25SZXdhcmQiLHJld2FyZExvZyksYXdhaXQgcGF5VXNlcihzeW1ib2wsdm90ZVBheSx2b3RlLnZvdGVyLHJld2FyZFBvb2wuY29uZmlnLnN0YWtlZFJld2FyZFBlcmNlbnRhZ2UsbXV0ZSl9YXdhaXQgYXBpLmRiLnJlbW92ZSgidm90ZXMiLHZvdGUpfXJlc3BvbnNlLnZvdGVzUHJvY2Vzc2VkKz12b3Rlc1RvUGF5b3V0Lmxlbmd0aCx2b3Rlc1RvUGF5b3V0Lmxlbmd0aDx2b3RlUXVlcnlMaW1pdCYmKHJlc3BvbnNlLmRvbmU9ITApfXJldHVybiByZXNwb25zZX1hc3luYyBmdW5jdGlvbiBwYXlPdXRQb3N0KHJld2FyZFBvb2wsdG9rZW4scG9zdCxwYXJhbXMpe2NvbnN0IHJlc3BvbnNlPXt0b3RhbFBheW91dFZhbHVlOjAsdm90ZXNQcm9jZXNzZWQ6MCxkb25lOiExfTtpZihwb3N0LmRlY2xpbmVQYXlvdXQpcmV0dXJuIGFwaS5lbWl0KCJhdXRob3JSZXdhcmQiLHtyZXdhcmRQb29sSWQ6cG9zdC5yZXdhcmRQb29sSWQsYXV0aG9ycGVybTpwb3N0LmF1dGhvcnBlcm0sc3ltYm9sOnBvc3Quc3ltYm9sLGFjY291bnQ6cG9zdC5hdXRob3IscXVhbnRpdHk6IjAifSkscmVzcG9uc2UuZG9uZT0hMCxhd2FpdCBhcGkuZGIucmVtb3ZlKCJwb3N0cyIscG9zdCkscmVzcG9uc2U7Y29uc3QgcG9zdENsYWltcz1jYWxjdWxhdGVXZWlnaHRSc2hhcmVzKHJld2FyZFBvb2wscG9zdC52b3RlUnNoYXJlU3VtKSxwb3N0UGVuZGluZ1Rva2VuPWFwaS5CaWdOdW1iZXIocmV3YXJkUG9vbC5pbnRlcnZhbFBlbmRpbmdDbGFpbXMpLmd0KDApP2FwaS5CaWdOdW1iZXIocmV3YXJkUG9vbC5pbnRlcnZhbFJld2FyZFBvb2wpLm11bHRpcGxpZWRCeShwb3N0Q2xhaW1zKS5kaXZpZGVkQnkocmV3YXJkUG9vbC5pbnRlcnZhbFBlbmRpbmdDbGFpbXMpLnRvRml4ZWQodG9rZW4ucHJlY2lzaW9uLGFwaS5CaWdOdW1iZXIuUk9VTkRfRE9XTik6IjAiO3Jlc3BvbnNlLnRvdGFsUGF5b3V0VmFsdWU9cG9zdFBlbmRpbmdUb2tlbjtjb25zdCBjdXJhdG9yUG9ydGlvbj1hcGkuQmlnTnVtYmVyKHBvc3RQZW5kaW5nVG9rZW4pLm11bHRpcGxpZWRCeShyZXdhcmRQb29sLmNvbmZpZy5jdXJhdGlvblJld2FyZFBlcmNlbnRhZ2UpLmRpdmlkZWRCeSgxMDApLnRvRml4ZWQodG9rZW4ucHJlY2lzaW9uLGFwaS5CaWdOdW1iZXIuUk9VTkRfRE9XTiksYXV0aG9yQmVuZVBvcnRpb249YXBpLkJpZ051bWJlcihwb3N0UGVuZGluZ1Rva2VuKS5taW51cyhjdXJhdG9yUG9ydGlvbikudG9GaXhlZCh0b2tlbi5wcmVjaXNpb24sYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKSxiZW5lZmljaWFyaWVzUGF5b3V0VmFsdWU9YXdhaXQgcGF5T3V0QmVuZWZpY2lhcmllcyhyZXdhcmRQb29sLHRva2VuLHBvc3QsYXV0aG9yQmVuZVBvcnRpb24pLGF1dGhvclBvcnRpb249YXBpLkJpZ051bWJlcihhdXRob3JCZW5lUG9ydGlvbikubWludXMoYmVuZWZpY2lhcmllc1BheW91dFZhbHVlKS50b0ZpeGVkKHRva2VuLnByZWNpc2lvbixhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pLGN1cmF0b3JQYXlTdGF0dXM9YXdhaXQgcGF5T3V0Q3VyYXRvcnMocmV3YXJkUG9vbCx0b2tlbixwb3N0LGN1cmF0b3JQb3J0aW9uLHBhcmFtcyk7aWYocmVzcG9uc2Uudm90ZXNQcm9jZXNzZWQrPWN1cmF0b3JQYXlTdGF0dXMudm90ZXNQcm9jZXNzZWQscmVzcG9uc2UuZG9uZT1jdXJhdG9yUGF5U3RhdHVzLmRvbmUsY3VyYXRvclBheVN0YXR1cy5kb25lKXtjb25zdCBtdXRlPWF3YWl0IGdldE11dGUocG9zdC5yZXdhcmRQb29sSWQscG9zdC5hdXRob3IpLHJld2FyZExvZz17cmV3YXJkUG9vbElkOnBvc3QucmV3YXJkUG9vbElkLGF1dGhvcnBlcm06cG9zdC5hdXRob3JwZXJtLHN5bWJvbDpwb3N0LnN5bWJvbCxhY2NvdW50OnBvc3QuYXV0aG9yLHF1YW50aXR5OmF1dGhvclBvcnRpb259O211dGUmJihyZXdhcmRMb2cubXV0ZT0hMCksYXBpLmVtaXQoImF1dGhvclJld2FyZCIscmV3YXJkTG9nKSxhd2FpdCBwYXlVc2VyKHBvc3Quc3ltYm9sLGF1dGhvclBvcnRpb24scG9zdC5hdXRob3IscmV3YXJkUG9vbC5jb25maWcuc3Rha2VkUmV3YXJkUGVyY2VudGFnZSxtdXRlKSxhd2FpdCBhcGkuZGIucmVtb3ZlKCJwb3N0cyIscG9zdCl9cmV0dXJuIHJlc3BvbnNlfWFzeW5jIGZ1bmN0aW9uIGNvbXB1dGVQb3N0UmV3YXJkcyhwYXJhbXMscmV3YXJkUG9vbCx0b2tlbixlbmRUaW1lc3RhbXApe2NvbnN0e2xhc3RDbGFpbURlY2F5VGltZXN0YW1wOmxhc3RDbGFpbURlY2F5VGltZXN0YW1wfT1yZXdhcmRQb29sLHttYXhQb3N0c1Byb2Nlc3NlZFBlclJvdW5kOm1heFBvc3RzUHJvY2Vzc2VkUGVyUm91bmQsbWF4Vm90ZXNQcm9jZXNzZWRQZXJSb3VuZDptYXhWb3Rlc1Byb2Nlc3NlZFBlclJvdW5kfT1wYXJhbXMscG9zdHNUb1BheW91dD1hd2FpdCBhcGkuZGIuZmluZCgicG9zdHMiLHtyZXdhcmRQb29sSWQ6cmV3YXJkUG9vbC5faWQsY2FzaG91dFRpbWU6eyRndGU6bGFzdENsYWltRGVjYXlUaW1lc3RhbXAsJGx0ZTplbmRUaW1lc3RhbXB9fSxtYXhQb3N0c1Byb2Nlc3NlZFBlclJvdW5kLDAsW3tpbmRleDoiYnlDYXNob3V0VGltZSIsZGVzY2VuZGluZzohMX0se2luZGV4OiJfaWQiLGRlc2NlbmRpbmc6ITF9XSk7bGV0IGRvbmU9ITEsZGVkdWN0RnJvbVJld2FyZFBvb2w9YXBpLkJpZ051bWJlcigwKSx2b3Rlc1Byb2Nlc3NlZD0wO2lmKHBvc3RzVG9QYXlvdXQmJnBvc3RzVG9QYXlvdXQubGVuZ3RoPjApe2xldCBsaW1pdFJlYWNoZWQ9ITE7Zm9yKGxldCBpPTA7aTxwb3N0c1RvUGF5b3V0Lmxlbmd0aDtpKz0xKXtjb25zdCBwb3N0PXBvc3RzVG9QYXlvdXRbaV0scG9zdFBheW91dFJlc3BvbnNlPWF3YWl0IHBheU91dFBvc3QocmV3YXJkUG9vbCx0b2tlbixwb3N0LHBhcmFtcykse3RvdGFsUGF5b3V0VmFsdWU6dG90YWxQYXlvdXRWYWx1ZX09cG9zdFBheW91dFJlc3BvbnNlO2lmKHZvdGVzUHJvY2Vzc2VkKz1wb3N0UGF5b3V0UmVzcG9uc2Uudm90ZXNQcm9jZXNzZWQscG9zdFBheW91dFJlc3BvbnNlLmRvbmUmJihkZWR1Y3RGcm9tUmV3YXJkUG9vbD1kZWR1Y3RGcm9tUmV3YXJkUG9vbC5wbHVzKHRvdGFsUGF5b3V0VmFsdWUpKSwhcG9zdFBheW91dFJlc3BvbnNlLmRvbmV8fHZvdGVzUHJvY2Vzc2VkPj1tYXhWb3Rlc1Byb2Nlc3NlZFBlclJvdW5kKXtsaW1pdFJlYWNoZWQ9ITA7YnJlYWt9fSFsaW1pdFJlYWNoZWQmJnBvc3RzVG9QYXlvdXQubGVuZ3RoPG1heFBvc3RzUHJvY2Vzc2VkUGVyUm91bmQmJihkb25lPSEwKSxyZXdhcmRQb29sLnJld2FyZFBvb2w9YXBpLkJpZ051bWJlcihyZXdhcmRQb29sLnJld2FyZFBvb2wpLm1pbnVzKGRlZHVjdEZyb21SZXdhcmRQb29sKS50b0ZpeGVkKHRva2VuLnByZWNpc2lvbixhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pfWVsc2UgZG9uZT0hMDtkb25lJiYocmV3YXJkUG9vbC5sYXN0Q2xhaW1EZWNheVRpbWVzdGFtcD1lbmRUaW1lc3RhbXApfWFzeW5jIGZ1bmN0aW9uIHBvc3RDbGFpbXNJbkludGVydmFsKHBhcmFtcyxyZXdhcmRQb29sLHN0YXJ0LGVuZCl7bGV0IHBvc3RPZmZzZXQ9MCxuZXdQZW5kaW5nQ2xhaW1zPWFwaS5CaWdOdW1iZXIoMCkscG9zdHNUb1BheW91dD1hd2FpdCBhcGkuZGIuZmluZCgicG9zdHMiLHtyZXdhcmRQb29sSWQ6cmV3YXJkUG9vbC5faWQsY2FzaG91dFRpbWU6eyRndGU6c3RhcnQsJGx0ZTplbmR9fSwxZTMscG9zdE9mZnNldCxbe2luZGV4OiJieUNhc2hvdXRUaW1lIixkZXNjZW5kaW5nOiExfSx7aW5kZXg6Il9pZCIsZGVzY2VuZGluZzohMX1dKTtmb3IoO3Bvc3RzVG9QYXlvdXQmJnBvc3RzVG9QYXlvdXQubGVuZ3RoPjAmJihuZXdQZW5kaW5nQ2xhaW1zPW5ld1BlbmRpbmdDbGFpbXMucGx1cyhwb3N0c1RvUGF5b3V0LnJlZHVjZSgoeCx5KT0+eC5wbHVzKGNhbGN1bGF0ZVdlaWdodFJzaGFyZXMocmV3YXJkUG9vbCx5LnZvdGVSc2hhcmVTdW0pKSxhcGkuQmlnTnVtYmVyKDApKSkuZHAoMTAsYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKSwhKHBvc3RzVG9QYXlvdXQubGVuZ3RoPDFlMykpOylwb3N0T2Zmc2V0Kz0xZTMscG9zdHNUb1BheW91dD1hd2FpdCBhcGkuZGIuZmluZCgicG9zdHMiLHtyZXdhcmRQb29sSWQ6cmV3YXJkUG9vbC5faWQsY2FzaG91dFRpbWU6eyRndGU6c3RhcnQsJGx0ZTplbmR9fSwxZTMscG9zdE9mZnNldCxbe2luZGV4OiJieUNhc2hvdXRUaW1lIixkZXNjZW5kaW5nOiExfSx7aW5kZXg6Il9pZCIsZGVzY2VuZGluZzohMX1dKTtyZXR1cm4gbmV3UGVuZGluZ0NsYWltc31hc3luYyBmdW5jdGlvbiB0b2tlbk1haW50ZW5hbmNlKCl7Y29uc3QgdGltZXN0YW1wPW5ldyBEYXRlKGFwaS5oaXZlQmxvY2tUaW1lc3RhbXArIi4wMDBaIikuZ2V0VGltZSgpLHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSkse2xhc3RNYWludGVuYW5jZUJsb2NrOmxhc3RNYWludGVuYW5jZUJsb2NrLGxhc3RQcm9jZXNzZWRQb29sSWQ6bGFzdFByb2Nlc3NlZFBvb2xJZCxtYWludGVuYW5jZVRva2Vuc1BlckJsb2NrOm1haW50ZW5hbmNlVG9rZW5zUGVyQmxvY2t9PXBhcmFtcztpZihsYXN0TWFpbnRlbmFuY2VCbG9jaz49YXBpLmJsb2NrTnVtYmVyKXJldHVybjtwYXJhbXMubGFzdE1haW50ZW5hbmNlQmxvY2s9YXBpLmJsb2NrTnVtYmVyO2NvbnN0IHJld2FyZFBvb2xQcm9jZXNzaW5nRXhwcmVzc2lvbj17JGx0ZTpbIiRsYXN0Q2xhaW1EZWNheVRpbWVzdGFtcCIseyRzdWJ0cmFjdDpbdGltZXN0YW1wLHskbXVsdGlwbHk6WyIkY29uZmlnLnJld2FyZEludGVydmFsU2Vjb25kcyIsMWUzXX1dfV19O2xldCByZXdhcmRQb29scz1hd2FpdCBhcGkuZGIuZmluZCgicmV3YXJkUG9vbHMiLHthY3RpdmU6ITAsJGV4cHI6cmV3YXJkUG9vbFByb2Nlc3NpbmdFeHByZXNzaW9uLF9pZDp7JGd0Omxhc3RQcm9jZXNzZWRQb29sSWR9fSxtYWludGVuYW5jZVRva2Vuc1BlckJsb2NrLDAsW3tpbmRleDoiX2lkIixkZXNjZW5kaW5nOiExfV0pO2lmKCFyZXdhcmRQb29sc3x8cmV3YXJkUG9vbHMubGVuZ3RoPG1haW50ZW5hbmNlVG9rZW5zUGVyQmxvY2spe3Jld2FyZFBvb2xzfHwocmV3YXJkUG9vbHM9W10pO2NvbnN0IG1vcmVSZXdhcmRQb29scz1hd2FpdCBhcGkuZGIuZmluZCgicmV3YXJkUG9vbHMiLHthY3RpdmU6ITAsJGV4cHI6cmV3YXJkUG9vbFByb2Nlc3NpbmdFeHByZXNzaW9ufSxtYWludGVuYW5jZVRva2Vuc1BlckJsb2NrLXJld2FyZFBvb2xzLmxlbmd0aCwwLFt7aW5kZXg6Il9pZCIsZGVzY2VuZGluZzohMX1dKSxleGlzdGluZ0lkcz1uZXcgU2V0KHJld2FyZFBvb2xzLm1hcChwPT5wLl9pZCkpO21vcmVSZXdhcmRQb29scy5mb3JFYWNoKG1ycD0+e2V4aXN0aW5nSWRzLmhhcyhtcnAuX2lkKXx8cmV3YXJkUG9vbHMucHVzaChtcnApfSl9aWYocmV3YXJkUG9vbHMpZm9yKGxldCBpPTA7aTxyZXdhcmRQb29scy5sZW5ndGg7aSs9MSl7Y29uc3QgcmV3YXJkUG9vbD1yZXdhcmRQb29sc1tpXTtwYXJhbXMubGFzdFByb2Nlc3NlZFBvb2xJZD1yZXdhcmRQb29sLl9pZDtjb25zdHtzeW1ib2w6c3ltYm9sLGxhc3RDbGFpbURlY2F5VGltZXN0YW1wOmxhc3RDbGFpbURlY2F5VGltZXN0YW1wLGxhc3RSZXdhcmRUaW1lc3RhbXA6bGFzdFJld2FyZFRpbWVzdGFtcCxjb25maWc6Y29uZmlnfT1yZXdhcmRQb29sLHtyZXdhcmRJbnRlcnZhbFNlY29uZHM6cmV3YXJkSW50ZXJ2YWxTZWNvbmRzLHJld2FyZFBlckludGVydmFsOnJld2FyZFBlckludGVydmFsLGNhc2hvdXRXaW5kb3dEYXlzOmNhc2hvdXRXaW5kb3dEYXlzfT1jb25maWcsdG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJ0b2tlbnMiLHtzeW1ib2w6c3ltYm9sfSkscmV3YXJkSW50ZXJ2YWxEdXJhdGlvbk1pbGxpcz0xZTMqcmV3YXJkSW50ZXJ2YWxTZWNvbmRzLG5leHRSZXdhcmRUaW1lc3RhbXA9bGFzdFJld2FyZFRpbWVzdGFtcCtyZXdhcmRJbnRlcnZhbER1cmF0aW9uTWlsbGlzLG5leHRDbGFpbURlY2F5VGltZXN0YW1wPWxhc3RDbGFpbURlY2F5VGltZXN0YW1wK3Jld2FyZEludGVydmFsRHVyYXRpb25NaWxsaXM7aWYobmV4dENsYWltRGVjYXlUaW1lc3RhbXA+PW5leHRSZXdhcmRUaW1lc3RhbXApe2NvbnN0IHJld2FyZFRvQWRkPWFwaS5CaWdOdW1iZXIocmV3YXJkUGVySW50ZXJ2YWwpO2FwaS5CaWdOdW1iZXIocmV3YXJkVG9BZGQpLmd0KDApJiYoYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ0b2tlbnMiLCJpc3N1ZVRvQ29udHJhY3QiLHtzeW1ib2w6cmV3YXJkUG9vbC5zeW1ib2wscXVhbnRpdHk6cmV3YXJkVG9BZGQsdG86ImNvbW1lbnRzIixpc1NpZ25lZFdpdGhBY3RpdmVLZXk6ITB9KSxyZXdhcmRQb29sLnJld2FyZFBvb2w9YXBpLkJpZ051bWJlcihyZXdhcmRQb29sLnJld2FyZFBvb2wpLnBsdXMocmV3YXJkVG9BZGQpLnRvRml4ZWQodG9rZW4ucHJlY2lzaW9uLGFwaS5CaWdOdW1iZXIuUk9VTkRfRE9XTikpO2NvbnN0IGFkanVzdE51bWVyPW5leHRSZXdhcmRUaW1lc3RhbXAtbGFzdFJld2FyZFRpbWVzdGFtcCxhZGp1c3REZW5vbT0yNCooMipjYXNob3V0V2luZG93RGF5cysxKSozNjAwKjFlMztyZXdhcmRQb29sLnBlbmRpbmdDbGFpbXM9YXBpLkJpZ051bWJlcihyZXdhcmRQb29sLnBlbmRpbmdDbGFpbXMpLm1pbnVzKGFwaS5CaWdOdW1iZXIocmV3YXJkUG9vbC5wZW5kaW5nQ2xhaW1zKS5tdWx0aXBsaWVkQnkoYWRqdXN0TnVtZXIpLmRpdmlkZWRCeShhZGp1c3REZW5vbSkpLnRvRml4ZWQoMTAsYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKSxyZXdhcmRQb29sLnBlbmRpbmdDbGFpbXM9YXBpLkJpZ051bWJlcihyZXdhcmRQb29sLnBlbmRpbmdDbGFpbXMpLnBsdXMoYXdhaXQgcG9zdENsYWltc0luSW50ZXJ2YWwocGFyYW1zLHJld2FyZFBvb2wsbGFzdFJld2FyZFRpbWVzdGFtcCxuZXh0UmV3YXJkVGltZXN0YW1wKSkudG9GaXhlZCgxMCxhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pLHJld2FyZFBvb2wubGFzdFJld2FyZFRpbWVzdGFtcD1uZXh0UmV3YXJkVGltZXN0YW1wLHJld2FyZFBvb2wuaW50ZXJ2YWxQZW5kaW5nQ2xhaW1zPXJld2FyZFBvb2wucGVuZGluZ0NsYWltcyxyZXdhcmRQb29sLmludGVydmFsUmV3YXJkUG9vbD1yZXdhcmRQb29sLnJld2FyZFBvb2x9YXdhaXQgY29tcHV0ZVBvc3RSZXdhcmRzKHBhcmFtcyxyZXdhcmRQb29sLHRva2VuLG5leHRDbGFpbURlY2F5VGltZXN0YW1wKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJyZXdhcmRQb29scyIscmV3YXJkUG9vbCl9YXdhaXQgYXBpLmRiLnVwZGF0ZSgicGFyYW1zIixwYXJhbXMpfWFzeW5jIGZ1bmN0aW9uIGdldFJld2FyZFBvb2xJZHMocGF5bG9hZCl7Y29uc3R7cmV3YXJkUG9vbHM6cmV3YXJkUG9vbHMsanNvbk1ldGFkYXRhOmpzb25NZXRhZGF0YSxwYXJlbnRBdXRob3I6cGFyZW50QXV0aG9yLHBhcmVudFBlcm1saW5rOnBhcmVudFBlcm1saW5rfT1wYXlsb2FkLHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSk7aWYocGFyZW50QXV0aG9yJiZwYXJlbnRQZXJtbGluayl7Y29uc3QgcGFyZW50QXV0aG9ycGVybT1gQCR7cGFyZW50QXV0aG9yfS8ke3BhcmVudFBlcm1saW5rfWAscGFyZW50UG9zdE1ldGFkYXRhPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwb3N0TWV0YWRhdGEiLHthdXRob3JwZXJtOnBhcmVudEF1dGhvcnBlcm19KTtpZihwYXJlbnRQb3N0TWV0YWRhdGEpcmV0dXJuIHBhcmVudFBvc3RNZXRhZGF0YS5yZXdhcmRQb29sSWRzO2NvbnN0IHBhcmVudFBvc3RzPWF3YWl0IGFwaS5kYi5maW5kKCJwb3N0cyIse2F1dGhvcnBlcm06cGFyZW50QXV0aG9ycGVybX0pO3JldHVybiBwYXJlbnRQb3N0cyYmcGFyZW50UG9zdHMubGVuZ3RoPjA/cGFyZW50UG9zdHMubWFwKHA9PnAucmV3YXJkUG9vbElkKTpbXX1pZihqc29uTWV0YWRhdGEmJmpzb25NZXRhZGF0YS50YWdzJiZBcnJheS5pc0FycmF5KGpzb25NZXRhZGF0YS50YWdzKSYmanNvbk1ldGFkYXRhLnRhZ3MuZXZlcnkodD0+InN0cmluZyI9PXR5cGVvZiB0KSl7Y29uc3Qgc2VhcmNoVGFncz1wYXJlbnRQZXJtbGluaz9qc29uTWV0YWRhdGEudGFncy5jb25jYXQoW3BhcmVudFBlcm1saW5rXSk6anNvbk1ldGFkYXRhLnRhZ3MsdGFnUmV3YXJkUG9vbHM9YXdhaXQgYXBpLmRiLmZpbmQoInJld2FyZFBvb2xzIix7ImNvbmZpZy50YWdzIjp7JGluOnNlYXJjaFRhZ3N9fSxwYXJhbXMubWF4UG9vbHNQZXJQb3N0LDAsW3tpbmRleDoiX2lkIixkZXNjZW5kaW5nOiExfV0pO2lmKHRhZ1Jld2FyZFBvb2xzJiZ0YWdSZXdhcmRQb29scy5sZW5ndGg+MClyZXR1cm4gdGFnUmV3YXJkUG9vbHMubWFwKHI9PnIuX2lkKX1yZXR1cm4gcmV3YXJkUG9vbHMmJkFycmF5LmlzQXJyYXkocmV3YXJkUG9vbHMpJiZyZXdhcmRQb29scy5sZW5ndGg+MD9yZXdhcmRQb29scy5zbGljZSgwLHBhcmFtcy5tYXhQb29sc1BlclBvc3QpOltdfWFzeW5jIGZ1bmN0aW9uIHByb2Nlc3NWb3RlKHBvc3Qsdm90ZXIsd2VpZ2h0LHRpbWVzdGFtcCl7Y29uc3R7cmV3YXJkUG9vbElkOnJld2FyZFBvb2xJZCxzeW1ib2w6c3ltYm9sLGF1dGhvcnBlcm06YXV0aG9ycGVybSxjYXNob3V0VGltZTpjYXNob3V0VGltZX09cG9zdDtpZihjYXNob3V0VGltZTx0aW1lc3RhbXApcmV0dXJuO2NvbnN0IHJld2FyZFBvb2w9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInJld2FyZFBvb2xzIix7X2lkOnJld2FyZFBvb2xJZH0pO2lmKCFyZXdhcmRQb29sfHwhcmV3YXJkUG9vbC5hY3RpdmUpcmV0dXJuO2xldCB2b3RpbmdQb3dlcj1hd2FpdCBhcGkuZGIuZmluZE9uZSgidm90aW5nUG93ZXIiLHtyZXdhcmRQb29sSWQ6cmV3YXJkUG9vbElkLGFjY291bnQ6dm90ZXJ9KTt2b3RpbmdQb3dlcj8odm90aW5nUG93ZXIudm90aW5nUG93ZXIrPTFlNCoodGltZXN0YW1wLXZvdGluZ1Bvd2VyLmxhc3RWb3RlVGltZXN0YW1wKS8oMjQqcmV3YXJkUG9vbC5jb25maWcudm90ZVJlZ2VuZXJhdGlvbkRheXMqMzYwMCoxZTMpLHZvdGluZ1Bvd2VyLnZvdGluZ1Bvd2VyPU1hdGguZmxvb3Iodm90aW5nUG93ZXIudm90aW5nUG93ZXIpLHZvdGluZ1Bvd2VyLnZvdGluZ1Bvd2VyPU1hdGgubWluKHZvdGluZ1Bvd2VyLnZvdGluZ1Bvd2VyLDFlNCksdm90aW5nUG93ZXIuZG93bnZvdGluZ1Bvd2VyKz0xZTQqKHRpbWVzdGFtcC12b3RpbmdQb3dlci5sYXN0Vm90ZVRpbWVzdGFtcCkvKDI0KnJld2FyZFBvb2wuY29uZmlnLmRvd252b3RlUmVnZW5lcmF0aW9uRGF5cyozNjAwKjFlMyksdm90aW5nUG93ZXIuZG93bnZvdGluZ1Bvd2VyPU1hdGguZmxvb3Iodm90aW5nUG93ZXIuZG93bnZvdGluZ1Bvd2VyKSx2b3RpbmdQb3dlci5kb3dudm90aW5nUG93ZXI9TWF0aC5taW4odm90aW5nUG93ZXIuZG93bnZvdGluZ1Bvd2VyLDFlNCksdm90aW5nUG93ZXIubGFzdFZvdGVUaW1lc3RhbXA9dGltZXN0YW1wKToodm90aW5nUG93ZXI9e3Jld2FyZFBvb2xJZDpyZXdhcmRQb29sSWQsYWNjb3VudDp2b3RlcixsYXN0Vm90ZVRpbWVzdGFtcDp0aW1lc3RhbXAsdm90aW5nUG93ZXI6MWU0LGRvd252b3RpbmdQb3dlcjoxZTR9LHZvdGluZ1Bvd2VyPWF3YWl0IGFwaS5kYi5pbnNlcnQoInZvdGluZ1Bvd2VyIix2b3RpbmdQb3dlcikpO2NvbnN0IHZvdGVyVG9rZW5CYWxhbmNlPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwiYmFsYW5jZXMiLHtzeW1ib2w6c3ltYm9sLGFjY291bnQ6dm90ZXJ9KTtsZXQgc3Rha2U9dm90ZXJUb2tlbkJhbGFuY2U/dm90ZXJUb2tlbkJhbGFuY2Uuc3Rha2U6IjAiO3ZvdGVyVG9rZW5CYWxhbmNlJiZ2b3RlclRva2VuQmFsYW5jZS5kZWxlZ2F0aW9uc0luJiZhcGkuQmlnTnVtYmVyKHZvdGVyVG9rZW5CYWxhbmNlLmRlbGVnYXRpb25zSW4pLmlzRmluaXRlKCkmJihzdGFrZT1hcGkuQmlnTnVtYmVyKHN0YWtlKS5wbHVzKHZvdGVyVG9rZW5CYWxhbmNlLmRlbGVnYXRpb25zSW4pKTtsZXQgdm90ZVJzaGFyZXM9IjAiLHVwZGF0ZWRQb3N0UnNoYXJlcz0iMCIsdXNlZFBvd2VyPTAsdXNlZERvd252b3RlUG93ZXI9MCxjdXJhdGlvbldlaWdodD0iMCI7aWYod2VpZ2h0PjApe3ZvdGVSc2hhcmVzPWFwaS5CaWdOdW1iZXIoc3Rha2UpLm11bHRpcGxpZWRCeSh3ZWlnaHQpLm11bHRpcGxpZWRCeSh2b3RpbmdQb3dlci52b3RpbmdQb3dlcikuZGl2aWRlZEJ5KDFlNCkuZGl2aWRlZEJ5KDFlNCkudG9GaXhlZCgxMCxhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pLHVzZWRQb3dlcj1NYXRoLmZsb29yKHZvdGluZ1Bvd2VyLnZvdGluZ1Bvd2VyKk1hdGguYWJzKHdlaWdodCkqNjAqNjAqMjQvMWU0KTtjb25zdCB1c2VkUG93ZXJEZW5vbT1NYXRoLmZsb29yKDg2NGU2L3Jld2FyZFBvb2wuY29uZmlnLnZvdGVQb3dlckNvbnN1bXB0aW9uKTt1c2VkUG93ZXI9TWF0aC5mbG9vcigodXNlZFBvd2VyK3VzZWRQb3dlckRlbm9tLTEpL3VzZWRQb3dlckRlbm9tKSx2b3RpbmdQb3dlci52b3RpbmdQb3dlcj1NYXRoLm1heCgwLE1hdGguZmxvb3Iodm90aW5nUG93ZXIudm90aW5nUG93ZXItdXNlZFBvd2VyKSksY3VyYXRpb25XZWlnaHQ9YXBpLkJpZ051bWJlcihjYWxjdWxhdGVDdXJhdGlvbldlaWdodFJzaGFyZXMocmV3YXJkUG9vbCxhcGkuQmlnTnVtYmVyKHZvdGVSc2hhcmVzKS5wbHVzKHBvc3Qudm90ZVBvc2l0aXZlUnNoYXJlU3VtKSkpLm1pbnVzKGNhbGN1bGF0ZUN1cmF0aW9uV2VpZ2h0UnNoYXJlcyhyZXdhcmRQb29sLHBvc3Qudm90ZVBvc2l0aXZlUnNoYXJlU3VtKSkudG9GaXhlZCgxMCxhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pfWVsc2UgaWYod2VpZ2h0PDAmJiFyZXdhcmRQb29sLmNvbmZpZy5kaXNhYmxlRG93bnZvdGUpe3ZvdGVSc2hhcmVzPWFwaS5CaWdOdW1iZXIoc3Rha2UpLm11bHRpcGxpZWRCeSh3ZWlnaHQpLm11bHRpcGxpZWRCeSh2b3RpbmdQb3dlci5kb3dudm90aW5nUG93ZXIpLmRpdmlkZWRCeSgxZTQpLmRpdmlkZWRCeSgxZTQpLnRvRml4ZWQoMTAsYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKSx1c2VkRG93bnZvdGVQb3dlcj1NYXRoLmZsb29yKHZvdGluZ1Bvd2VyLmRvd252b3RpbmdQb3dlcipNYXRoLmFicyh3ZWlnaHQpKjYwKjYwKjI0LzFlNCk7Y29uc3QgdXNlZERvd252b3RlUG93ZXJEZW5vbT1NYXRoLmZsb29yKDg2NGU2L3Jld2FyZFBvb2wuY29uZmlnLmRvd252b3RlUG93ZXJDb25zdW1wdGlvbik7dXNlZERvd252b3RlUG93ZXI9TWF0aC5mbG9vcigodXNlZERvd252b3RlUG93ZXIrdXNlZERvd252b3RlUG93ZXJEZW5vbS0xKS91c2VkRG93bnZvdGVQb3dlckRlbm9tKSx2b3RpbmdQb3dlci5kb3dudm90aW5nUG93ZXI9TWF0aC5tYXgoMCxNYXRoLmZsb29yKHZvdGluZ1Bvd2VyLmRvd252b3RpbmdQb3dlci11c2VkRG93bnZvdGVQb3dlcikpfXZvdGluZ1Bvd2VyLm11dGUmJih2b3RlUnNoYXJlcz0iMCIsY3VyYXRpb25XZWlnaHQ9IjAiKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJ2b3RpbmdQb3dlciIsdm90aW5nUG93ZXIpO2xldCB2b3RlPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ2b3RlcyIse3Jld2FyZFBvb2xJZDpyZXdhcmRQb29sSWQsYXV0aG9ycGVybTphdXRob3JwZXJtLHZvdGVyOnZvdGVyfSk7aWYodm90ZSl7dm90ZS50aW1lc3RhbXA9dGltZXN0YW1wLHZvdGUud2VpZ2h0PXdlaWdodCx2b3RlLmN1cmF0aW9uV2VpZ2h0PSIwIjtjb25zdCBvbGRWb3RlUnNoYXJlcz12b3RlLnJzaGFyZXM7dm90ZS5yc2hhcmVzPXZvdGVSc2hhcmVzLHVwZGF0ZWRQb3N0UnNoYXJlcz1hcGkuQmlnTnVtYmVyKHZvdGVSc2hhcmVzKS5taW51cyhvbGRWb3RlUnNoYXJlcykudG9GaXhlZCgxMCxhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pLGF3YWl0IGFwaS5kYi51cGRhdGUoInZvdGVzIix2b3RlKTtjb25zdCB2b3RlTG9nPXtyZXdhcmRQb29sSWQ6cmV3YXJkUG9vbElkLHN5bWJvbDpyZXdhcmRQb29sLnN5bWJvbCxyc2hhcmVzOnZvdGVSc2hhcmVzfTt2b3RpbmdQb3dlci5tdXRlJiYodm90ZUxvZy5tdXRlPSEwKSxhcGkuZW1pdCgidXBkYXRlVm90ZSIsdm90ZUxvZyl9ZWxzZXt2b3RlPXtyZXdhcmRQb29sSWQ6cmV3YXJkUG9vbElkLHN5bWJvbDpzeW1ib2wsYXV0aG9ycGVybTphdXRob3JwZXJtLHdlaWdodDp3ZWlnaHQscnNoYXJlczp2b3RlUnNoYXJlcyxjdXJhdGlvbldlaWdodDpjdXJhdGlvbldlaWdodCx0aW1lc3RhbXA6dGltZXN0YW1wLHZvdGVyOnZvdGVyfSx1cGRhdGVkUG9zdFJzaGFyZXM9dm90ZVJzaGFyZXMsYXdhaXQgYXBpLmRiLmluc2VydCgidm90ZXMiLHZvdGUpO2NvbnN0IHZvdGVMb2c9e3Jld2FyZFBvb2xJZDpyZXdhcmRQb29sSWQsc3ltYm9sOnJld2FyZFBvb2wuc3ltYm9sLHJzaGFyZXM6dm90ZVJzaGFyZXN9O3ZvdGluZ1Bvd2VyLm11dGUmJih2b3RlTG9nLm11dGU9ITApLGFwaS5lbWl0KCJuZXdWb3RlIix2b3RlTG9nKX1jb25zdCBvbGRQb3N0Q2xhaW1zPWNhbGN1bGF0ZVdlaWdodFJzaGFyZXMocmV3YXJkUG9vbCxwb3N0LnZvdGVSc2hhcmVTdW0pO2lmKHBvc3Qudm90ZVJzaGFyZVN1bT1hcGkuQmlnTnVtYmVyKHBvc3Qudm90ZVJzaGFyZVN1bSkucGx1cyh1cGRhdGVkUG9zdFJzaGFyZXMpLnRvRml4ZWQoMTAsYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKSxhcGkuQmlnTnVtYmVyKHVwZGF0ZWRQb3N0UnNoYXJlcykuZ3QoMCkmJihwb3N0LnZvdGVQb3NpdGl2ZVJzaGFyZVN1bT1hcGkuQmlnTnVtYmVyKHBvc3Qudm90ZVBvc2l0aXZlUnNoYXJlU3VtKS5wbHVzKHVwZGF0ZWRQb3N0UnNoYXJlcykudG9GaXhlZCgxMCxhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pLHRpbWVzdGFtcDxyZXdhcmRQb29sLmNyZWF0ZWRUaW1lc3RhbXArMjQqKDIqcmV3YXJkUG9vbC5jb25maWcuY2FzaG91dFdpbmRvd0RheXMrMSkqMzYwMCoxZTMpKXtjb25zdCBuZXdQb3N0Q2xhaW1zPWNhbGN1bGF0ZVdlaWdodFJzaGFyZXMocmV3YXJkUG9vbCxwb3N0LnZvdGVSc2hhcmVTdW0pO3Jld2FyZFBvb2wucGVuZGluZ0NsYWltcz1hcGkuQmlnTnVtYmVyKHJld2FyZFBvb2wucGVuZGluZ0NsYWltcykucGx1cyhuZXdQb3N0Q2xhaW1zKS5taW51cyhvbGRQb3N0Q2xhaW1zKS50b0ZpeGVkKDEwLGFwaS5CaWdOdW1iZXIuUk9VTkRfRE9XTiksYXdhaXQgYXBpLmRiLnVwZGF0ZSgicmV3YXJkUG9vbHMiLHJld2FyZFBvb2wpfWF3YWl0IGFwaS5kYi51cGRhdGUoInBvc3RzIixwb3N0KX1hY3Rpb25zLmNyZWF0ZVNTQz1hc3luYygpPT57aWYoITE9PT1hd2FpdCBhcGkuZGIudGFibGVFeGlzdHMoInJld2FyZFBvb2xzIikpe2F3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgicGFyYW1zIiksYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJyZXdhcmRQb29scyIsWyJjb25maWcudGFncyIsImxhc3RDbGFpbURlY2F5VGltZXN0YW1wIl0pLGF3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgicG9zdHMiLFsiYXV0aG9ycGVybSIse25hbWU6ImJ5Q2FzaG91dFRpbWUiLGluZGV4OntyZXdhcmRQb29sSWQ6MSxjYXNob3V0VGltZToxfX1dLHtwcmltYXJ5S2V5OlsiYXV0aG9ycGVybSIsInJld2FyZFBvb2xJZCJdfSksYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJwb3N0TWV0YWRhdGEiLFtdLHtwcmltYXJ5S2V5OlsiYXV0aG9ycGVybSJdfSksYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJ2b3RlcyIsW3tuYW1lOiJieVRpbWVzdGFtcCIsaW5kZXg6e3Jld2FyZFBvb2xJZDoxLGF1dGhvcnBlcm06MSx0aW1lc3RhbXA6MX19XSx7cHJpbWFyeUtleTpbInJld2FyZFBvb2xJZCIsImF1dGhvcnBlcm0iLCJ2b3RlciJdfSksYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJ2b3RpbmdQb3dlciIsW10se3ByaW1hcnlLZXk6WyJyZXdhcmRQb29sSWQiLCJhY2NvdW50Il19KTtjb25zdCBwYXJhbXM9e3NldHVwRmVlOiIxMDAwIix1cGRhdGVGZWU6IjIwIixtYXhQb29sc1BlclBvc3Q6MjAsbWF4VGFnc1BlclBvb2w6NSxtYWludGVuYW5jZVRva2Vuc1BlckJsb2NrOjIsbGFzdE1haW50ZW5hbmNlQmxvY2s6YXBpLmJsb2NrTnVtYmVyLG1heFBvc3RzUHJvY2Vzc2VkUGVyUm91bmQ6MjAsdm90ZVF1ZXJ5TGltaXQ6MTAwLG1heFZvdGVzUHJvY2Vzc2VkUGVyUm91bmQ6MTAwLGxhc3RQcm9jZXNzZWRQb29sSWQ6MH07YXdhaXQgYXBpLmRiLmluc2VydCgicGFyYW1zIixwYXJhbXMpfX0sYWN0aW9ucy51cGRhdGVQYXJhbXM9YXN5bmMgcGF5bG9hZD0+e2lmKGFwaS5zZW5kZXIhPT1hcGkub3duZXIpcmV0dXJuO2NvbnN0e3NldHVwRmVlOnNldHVwRmVlLHVwZGF0ZUZlZTp1cGRhdGVGZWUsbWFpbnRlbmFuY2VUb2tlbnNQZXJCbG9jazptYWludGVuYW5jZVRva2Vuc1BlckJsb2NrLG1heFBvc3RzUHJvY2Vzc2VkUGVyUm91bmQ6bWF4UG9zdHNQcm9jZXNzZWRQZXJSb3VuZCxtYXhWb3Rlc1Byb2Nlc3NlZFBlclJvdW5kOm1heFZvdGVzUHJvY2Vzc2VkUGVyUm91bmQsdm90ZVF1ZXJ5TGltaXQ6dm90ZVF1ZXJ5TGltaXR9PXBheWxvYWQscGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KTtpZihzZXR1cEZlZSl7aWYoIWFwaS5hc3NlcnQoInN0cmluZyI9PXR5cGVvZiBzZXR1cEZlZSYmIWFwaS5CaWdOdW1iZXIoc2V0dXBGZWUpLmlzTmFOKCkmJmFwaS5CaWdOdW1iZXIoc2V0dXBGZWUpLmd0ZSgwKSwiaW52YWxpZCBzZXR1cEZlZSIpKXJldHVybjtwYXJhbXMuc2V0dXBGZWU9c2V0dXBGZWV9aWYodXBkYXRlRmVlKXtpZighYXBpLmFzc2VydCgic3RyaW5nIj09dHlwZW9mIHVwZGF0ZUZlZSYmIWFwaS5CaWdOdW1iZXIodXBkYXRlRmVlKS5pc05hTigpJiZhcGkuQmlnTnVtYmVyKHVwZGF0ZUZlZSkuZ3RlKDApLCJpbnZhbGlkIHVwZGF0ZUZlZSIpKXJldHVybjtwYXJhbXMudXBkYXRlRmVlPXVwZGF0ZUZlZX1pZihtYWludGVuYW5jZVRva2Vuc1BlckJsb2NrKXtpZighYXBpLmFzc2VydChOdW1iZXIuaXNJbnRlZ2VyKG1haW50ZW5hbmNlVG9rZW5zUGVyQmxvY2spJiZtYWludGVuYW5jZVRva2Vuc1BlckJsb2NrPj0xLCJpbnZhbGlkIG1haW50ZW5hbmNlVG9rZW5zUGVyQmxvY2siKSlyZXR1cm47cGFyYW1zLm1haW50ZW5hbmNlVG9rZW5zUGVyQmxvY2s9bWFpbnRlbmFuY2VUb2tlbnNQZXJCbG9ja31pZihtYXhQb3N0c1Byb2Nlc3NlZFBlclJvdW5kKXtpZighYXBpLmFzc2VydChOdW1iZXIuaXNJbnRlZ2VyKG1heFBvc3RzUHJvY2Vzc2VkUGVyUm91bmQpJiZtYXhQb3N0c1Byb2Nlc3NlZFBlclJvdW5kPj0xLCJpbnZhbGlkIG1heFBvc3RzUHJvY2Vzc2VkUGVyUm91bmQiKSlyZXR1cm47cGFyYW1zLm1heFBvc3RzUHJvY2Vzc2VkUGVyUm91bmQ9bWF4UG9zdHNQcm9jZXNzZWRQZXJSb3VuZH1pZihtYXhWb3Rlc1Byb2Nlc3NlZFBlclJvdW5kKXtpZighYXBpLmFzc2VydChOdW1iZXIuaXNJbnRlZ2VyKG1heFZvdGVzUHJvY2Vzc2VkUGVyUm91bmQpJiZtYXhWb3Rlc1Byb2Nlc3NlZFBlclJvdW5kPj0xLCJpbnZhbGlkIG1heFZvdGVzUHJvY2Vzc2VkUGVyUm91bmQiKSlyZXR1cm47cGFyYW1zLm1heFZvdGVzUHJvY2Vzc2VkUGVyUm91bmQ9bWF4Vm90ZXNQcm9jZXNzZWRQZXJSb3VuZH1pZih2b3RlUXVlcnlMaW1pdCl7aWYoIWFwaS5hc3NlcnQoTnVtYmVyLmlzSW50ZWdlcih2b3RlUXVlcnlMaW1pdCkmJnZvdGVRdWVyeUxpbWl0Pj0xLCJpbnZhbGlkIHZvdGVRdWVyeUxpbWl0IikpcmV0dXJuO3BhcmFtcy52b3RlUXVlcnlMaW1pdD12b3RlUXVlcnlMaW1pdH1hd2FpdCBhcGkuZGIudXBkYXRlKCJwYXJhbXMiLHBhcmFtcyl9LGFjdGlvbnMuY3JlYXRlUmV3YXJkUG9vbD1hc3luYyBwYXlsb2FkPT57Y29uc3R7c3ltYm9sOnN5bWJvbCxjb25maWc6Y29uZmlnLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQ7aWYoIWFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksIm9wZXJhdGlvbiBtdXN0IGJlIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpKXJldHVybjtjb25zdCBwYXJhbXM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pLHtzZXR1cEZlZTpzZXR1cEZlZSxtYXhUYWdzUGVyUG9vbDptYXhUYWdzUGVyUG9vbH09cGFyYW1zLHV0aWxpdHlUb2tlbkJhbGFuY2U9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJiYWxhbmNlcyIse2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6IkJFRSJ9KSxhdXRob3JpemVkQ3JlYXRpb249ISghYXBpLkJpZ051bWJlcihzZXR1cEZlZSkubHRlKDApJiZhcGkuc2VuZGVyIT09YXBpLm93bmVyKXx8dXRpbGl0eVRva2VuQmFsYW5jZSYmYXBpLkJpZ051bWJlcih1dGlsaXR5VG9rZW5CYWxhbmNlLmJhbGFuY2UpLmd0ZShzZXR1cEZlZSk7aWYoIWFwaS5hc3NlcnQoYXV0aG9yaXplZENyZWF0aW9uLCJ5b3UgbXVzdCBoYXZlIGVub3VnaCB0b2tlbnMgdG8gY292ZXIgdGhlIGNyZWF0aW9uIGZlZSIpKXJldHVybjtjb25zdCB0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsInRva2VucyIse3N5bWJvbDpzeW1ib2x9KTtpZighYXBpLmFzc2VydCh0b2tlbiwidG9rZW4gbm90IGZvdW5kIikpcmV0dXJuO2lmKCFhcGkuYXNzZXJ0KGNvbmZpZyYmIm9iamVjdCI9PXR5cGVvZiBjb25maWcsImNvbmZpZyBpbnZhbGlkIikpcmV0dXJuO2NvbnN0e3Bvc3RSZXdhcmRDdXJ2ZTpwb3N0UmV3YXJkQ3VydmUscG9zdFJld2FyZEN1cnZlUGFyYW1ldGVyOnBvc3RSZXdhcmRDdXJ2ZVBhcmFtZXRlcixjdXJhdGlvblJld2FyZEN1cnZlOmN1cmF0aW9uUmV3YXJkQ3VydmUsY3VyYXRpb25SZXdhcmRDdXJ2ZVBhcmFtZXRlcjpjdXJhdGlvblJld2FyZEN1cnZlUGFyYW1ldGVyLGN1cmF0aW9uUmV3YXJkUGVyY2VudGFnZTpjdXJhdGlvblJld2FyZFBlcmNlbnRhZ2UsY2FzaG91dFdpbmRvd0RheXM6Y2FzaG91dFdpbmRvd0RheXMscmV3YXJkUGVySW50ZXJ2YWw6cmV3YXJkUGVySW50ZXJ2YWwscmV3YXJkSW50ZXJ2YWxTZWNvbmRzOnJld2FyZEludGVydmFsU2Vjb25kcyx2b3RlUmVnZW5lcmF0aW9uRGF5czp2b3RlUmVnZW5lcmF0aW9uRGF5cyxkb3dudm90ZVJlZ2VuZXJhdGlvbkRheXM6ZG93bnZvdGVSZWdlbmVyYXRpb25EYXlzLHN0YWtlZFJld2FyZFBlcmNlbnRhZ2U6c3Rha2VkUmV3YXJkUGVyY2VudGFnZSx2b3RlUG93ZXJDb25zdW1wdGlvbjp2b3RlUG93ZXJDb25zdW1wdGlvbixkb3dudm90ZVBvd2VyQ29uc3VtcHRpb246ZG93bnZvdGVQb3dlckNvbnN1bXB0aW9uLHRhZ3M6dGFncyxkaXNhYmxlRG93bnZvdGU6ZGlzYWJsZURvd252b3RlLGlnbm9yZURlY2xpbmVQYXlvdXQ6aWdub3JlRGVjbGluZVBheW91dH09Y29uZmlnO2lmKCFhcGkuYXNzZXJ0KHBvc3RSZXdhcmRDdXJ2ZSYmInBvd2VyIj09PXBvc3RSZXdhcmRDdXJ2ZSwicG9zdFJld2FyZEN1cnZlIHNob3VsZCBiZSBvbmUgb2Y6IFtwb3dlcl0iKSlyZXR1cm47Y29uc3QgcG9zdEV4cG9uZW50PWFwaS5CaWdOdW1iZXIocG9zdFJld2FyZEN1cnZlUGFyYW1ldGVyKTtpZighYXBpLmFzc2VydCgic3RyaW5nIj09dHlwZW9mIHBvc3RSZXdhcmRDdXJ2ZVBhcmFtZXRlciYmcG9zdEV4cG9uZW50LmlzRmluaXRlKCkmJnBvc3RFeHBvbmVudC5ndGUoIjEiKSYmcG9zdEV4cG9uZW50Lmx0ZSgiMiIpJiZwb3N0RXhwb25lbnQuZHAoKTw9MiwncG9zdFJld2FyZEN1cnZlUGFyYW1ldGVyIHNob3VsZCBiZSBiZXR3ZWVuICIxIiBhbmQgIjIiIHdpdGggcHJlY2lzaW9uIGF0IG1vc3QgMicpKXJldHVybjtpZighYXBpLmFzc2VydChjdXJhdGlvblJld2FyZEN1cnZlJiYicG93ZXIiPT09Y3VyYXRpb25SZXdhcmRDdXJ2ZSwiY3VyYXRpb25SZXdhcmRDdXJ2ZSBzaG91bGQgYmUgb25lIG9mOiBbcG93ZXJdIikpcmV0dXJuO2NvbnN0IGN1cmF0aW9uRXhwb25lbnQ9YXBpLkJpZ051bWJlcihjdXJhdGlvblJld2FyZEN1cnZlUGFyYW1ldGVyKTtpZighYXBpLmFzc2VydCgic3RyaW5nIj09dHlwZW9mIGN1cmF0aW9uUmV3YXJkQ3VydmVQYXJhbWV0ZXImJmN1cmF0aW9uRXhwb25lbnQuaXNGaW5pdGUoKSYmY3VyYXRpb25FeHBvbmVudC5ndGUoIjAuNSIpJiZjdXJhdGlvbkV4cG9uZW50Lmx0ZSgiMSIpJiZjdXJhdGlvbkV4cG9uZW50LmRwKCk8PTIsJ2N1cmF0aW9uUmV3YXJkQ3VydmVQYXJhbWV0ZXIgY2FuIG9ubHkgYmUgYmV0d2VlbiAiMC41IiBhbmQgIjEiIHdpdGggcHJlY2lzaW9uIGF0IG1vc3QgMicpKXJldHVybjtpZighYXBpLmFzc2VydChOdW1iZXIuaXNJbnRlZ2VyKGN1cmF0aW9uUmV3YXJkUGVyY2VudGFnZSkmJmN1cmF0aW9uUmV3YXJkUGVyY2VudGFnZT49MCYmY3VyYXRpb25SZXdhcmRQZXJjZW50YWdlPD0xMDAsImN1cmF0aW9uUmV3YXJkUGVyY2VudGFnZSBzaG91bGQgYmUgYW4gaW50ZWdlciBiZXR3ZWVuIDAgYW5kIDEwMCIpKXJldHVybjtpZighYXBpLmFzc2VydChjYXNob3V0V2luZG93RGF5cyYmTnVtYmVyLmlzSW50ZWdlcihjYXNob3V0V2luZG93RGF5cykmJmNhc2hvdXRXaW5kb3dEYXlzPj0xJiZjYXNob3V0V2luZG93RGF5czw9MzAsImNhc2hvdXRXaW5kb3dEYXlzIHNob3VsZCBiZSBhbiBpbnRlZ2VyIGJldHdlZW4gMSBhbmQgMzAiKSlyZXR1cm47Y29uc3QgcGFyc2VkUmV3YXJkUGVySW50ZXJ2YWw9YXBpLkJpZ051bWJlcihyZXdhcmRQZXJJbnRlcnZhbCk7aWYoIWFwaS5hc3NlcnQoInN0cmluZyI9PXR5cGVvZiByZXdhcmRQZXJJbnRlcnZhbCYmcGFyc2VkUmV3YXJkUGVySW50ZXJ2YWwuaXNGaW5pdGUoKSYmcGFyc2VkUmV3YXJkUGVySW50ZXJ2YWwuZ3QoMCksInJld2FyZFBlckludGVydmFsIGludmFsaWQiKXx8IWFwaS5hc3NlcnQocGFyc2VkUmV3YXJkUGVySW50ZXJ2YWwuZHAoKTw9dG9rZW4ucHJlY2lzaW9uLCJ0b2tlbiBwcmVjaXNpb24gbWlzbWF0Y2ggZm9yIHJld2FyZFBlckludGVydmFsIikpcmV0dXJuO2lmKCFhcGkuYXNzZXJ0KHJld2FyZEludGVydmFsU2Vjb25kcyYmTnVtYmVyLmlzSW50ZWdlcihyZXdhcmRJbnRlcnZhbFNlY29uZHMpJiZyZXdhcmRJbnRlcnZhbFNlY29uZHM+PTMmJnJld2FyZEludGVydmFsU2Vjb25kczw9ODY0MDAmJnJld2FyZEludGVydmFsU2Vjb25kcyUzPT0wLCJyZXdhcmRJbnRlcnZhbFNlY29uZHMgc2hvdWxkIGJlIGFuIGludGVnZXIgYmV0d2VlbiAzIGFuZCA4NjQwMCwgYW5kIGRpdmlzaWJsZSBieSAzIikpcmV0dXJuO2lmKCFhcGkuYXNzZXJ0KHZvdGVSZWdlbmVyYXRpb25EYXlzJiZOdW1iZXIuaXNJbnRlZ2VyKHZvdGVSZWdlbmVyYXRpb25EYXlzKSYmdm90ZVJlZ2VuZXJhdGlvbkRheXM+PTEmJnZvdGVSZWdlbmVyYXRpb25EYXlzPD0zMCwidm90ZVJlZ2VuZXJhdGlvbkRheXMgc2hvdWxkIGJlIGFuIGludGVnZXIgYmV0d2VlbiAxIGFuZCAzMCIpKXJldHVybjtpZighYXBpLmFzc2VydChkb3dudm90ZVJlZ2VuZXJhdGlvbkRheXMmJk51bWJlci5pc0ludGVnZXIoZG93bnZvdGVSZWdlbmVyYXRpb25EYXlzKSYmZG93bnZvdGVSZWdlbmVyYXRpb25EYXlzPj0xJiZkb3dudm90ZVJlZ2VuZXJhdGlvbkRheXM8PTMwLCJkb3dudm90ZVJlZ2VuZXJhdGlvbkRheXMgc2hvdWxkIGJlIGFuIGludGVnZXIgYmV0d2VlbiAxIGFuZCAzMCIpKXJldHVybjtpZighYXBpLmFzc2VydChOdW1iZXIuaXNJbnRlZ2VyKHN0YWtlZFJld2FyZFBlcmNlbnRhZ2UpJiZzdGFrZWRSZXdhcmRQZXJjZW50YWdlPj0wJiZzdGFrZWRSZXdhcmRQZXJjZW50YWdlPD0xMDAsInN0YWtlZFJld2FyZFBlcmNlbnRhZ2Ugc2hvdWxkIGJlIGFuIGludGVnZXIgYmV0d2VlbiAwIGFuZCAxMDAiKSlyZXR1cm47aWYoIWFwaS5hc3NlcnQodm90ZVBvd2VyQ29uc3VtcHRpb24mJk51bWJlci5pc0ludGVnZXIodm90ZVBvd2VyQ29uc3VtcHRpb24pJiZ2b3RlUG93ZXJDb25zdW1wdGlvbj49MSYmdm90ZVBvd2VyQ29uc3VtcHRpb248PTFlNCwidm90ZVBvd2VyQ29uc3VtcHRpb24gc2hvdWxkIGJlIGFuIGludGVnZXIgYmV0d2VlbiAxIGFuZCAxMDAwMCIpKXJldHVybjtpZighYXBpLmFzc2VydChkb3dudm90ZVBvd2VyQ29uc3VtcHRpb24mJk51bWJlci5pc0ludGVnZXIoZG93bnZvdGVQb3dlckNvbnN1bXB0aW9uKSYmZG93bnZvdGVQb3dlckNvbnN1bXB0aW9uPj0xJiZkb3dudm90ZVBvd2VyQ29uc3VtcHRpb248PTFlNCwiZG93bnZvdGVQb3dlckNvbnN1bXB0aW9uIHNob3VsZCBiZSBhbiBpbnRlZ2VyIGJldHdlZW4gMSBhbmQgMTAwMDAiKSlyZXR1cm47aWYoIWFwaS5hc3NlcnQoQXJyYXkuaXNBcnJheSh0YWdzKSYmdGFncy5sZW5ndGg+PTEmJnRhZ3MubGVuZ3RoPD1tYXhUYWdzUGVyUG9vbCYmdGFncy5ldmVyeSh0PT4ic3RyaW5nIj09dHlwZW9mIHQpLCJ0YWdzIHNob3VsZCBiZSBhIG5vbi1lbXB0eSBhcnJheSBvZiBzdHJpbmdzIG9mIGxlbmd0aCBhdCBtb3N0ICIrbWF4VGFnc1BlclBvb2wpKXJldHVybjtpZighYXBpLmFzc2VydCgiYm9vbGVhbiI9PXR5cGVvZiBkaXNhYmxlRG93bnZvdGUsImRpc2FibGVEb3dudm90ZSBzaG91bGQgYmUgYm9vbGVhbiIpKXJldHVybjtpZighYXBpLmFzc2VydCgiYm9vbGVhbiI9PXR5cGVvZiBpZ25vcmVEZWNsaW5lUGF5b3V0LCJpZ25vcmVEZWNsaW5lUGF5b3V0IHNob3VsZCBiZSBib29sZWFuIikpcmV0dXJuO2lmKCFhcGkuYXNzZXJ0KGFwaS5zZW5kZXI9PT10b2tlbi5pc3N1ZXJ8fGFwaS5zZW5kZXI9PT1hcGkub3duZXImJiJCRUUiPT09dG9rZW4uc3ltYm9sLCJtdXN0IGJlIGlzc3VlciBvZiB0b2tlbiIpKXJldHVybjtpZighYXBpLmFzc2VydCh0b2tlbi5zdGFraW5nRW5hYmxlZCwidG9rZW4gbXVzdCBoYXZlIHN0YWtpbmcgZW5hYmxlZCIpKXJldHVybjtjb25zdCBleGlzdGluZ1Jld2FyZFBvb2w9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInJld2FyZFBvb2xzIix7c3ltYm9sOnN5bWJvbH0pO2lmKCFhcGkuYXNzZXJ0KCFleGlzdGluZ1Jld2FyZFBvb2wsImNhbm5vdCBjcmVhdGUgbXVsdGlwbGUgcmV3YXJkIHBvb2xzIHBlciB0b2tlbiIpKXJldHVybjtjb25zdCB0aW1lc3RhbXA9bmV3IERhdGUoYXBpLmhpdmVCbG9ja1RpbWVzdGFtcCsiLjAwMFoiKS5nZXRUaW1lKCkscmV3YXJkUG9vbD17c3ltYm9sOnN5bWJvbCxyZXdhcmRQb29sOiIwIixsYXN0UmV3YXJkVGltZXN0YW1wOnRpbWVzdGFtcCxsYXN0Q2xhaW1EZWNheVRpbWVzdGFtcDp0aW1lc3RhbXAsY3JlYXRlZFRpbWVzdGFtcDp0aW1lc3RhbXAsY29uZmlnOntwb3N0UmV3YXJkQ3VydmU6cG9zdFJld2FyZEN1cnZlLHBvc3RSZXdhcmRDdXJ2ZVBhcmFtZXRlcjpwb3N0UmV3YXJkQ3VydmVQYXJhbWV0ZXIsY3VyYXRpb25SZXdhcmRDdXJ2ZTpjdXJhdGlvblJld2FyZEN1cnZlLGN1cmF0aW9uUmV3YXJkQ3VydmVQYXJhbWV0ZXI6Y3VyYXRpb25SZXdhcmRDdXJ2ZVBhcmFtZXRlcixjdXJhdGlvblJld2FyZFBlcmNlbnRhZ2U6Y3VyYXRpb25SZXdhcmRQZXJjZW50YWdlLGNhc2hvdXRXaW5kb3dEYXlzOmNhc2hvdXRXaW5kb3dEYXlzLHJld2FyZFBlckludGVydmFsOnJld2FyZFBlckludGVydmFsLHJld2FyZEludGVydmFsU2Vjb25kczpyZXdhcmRJbnRlcnZhbFNlY29uZHMsdm90ZVJlZ2VuZXJhdGlvbkRheXM6dm90ZVJlZ2VuZXJhdGlvbkRheXMsZG93bnZvdGVSZWdlbmVyYXRpb25EYXlzOmRvd252b3RlUmVnZW5lcmF0aW9uRGF5cyxzdGFrZWRSZXdhcmRQZXJjZW50YWdlOnN0YWtlZFJld2FyZFBlcmNlbnRhZ2Usdm90ZVBvd2VyQ29uc3VtcHRpb246dm90ZVBvd2VyQ29uc3VtcHRpb24sZG93bnZvdGVQb3dlckNvbnN1bXB0aW9uOmRvd252b3RlUG93ZXJDb25zdW1wdGlvbix0YWdzOnRhZ3MsZGlzYWJsZURvd252b3RlOmRpc2FibGVEb3dudm90ZSxpZ25vcmVEZWNsaW5lUGF5b3V0Omlnbm9yZURlY2xpbmVQYXlvdXR9LHBlbmRpbmdDbGFpbXM6IjAiLGFjdGl2ZTohMH0saW5zZXJ0ZWRSZXdhcmRQb29sPWF3YWl0IGFwaS5kYi5pbnNlcnQoInJld2FyZFBvb2xzIixyZXdhcmRQb29sKTthcGkuc2VuZGVyIT09YXBpLm93bmVyJiZhcGkuQmlnTnVtYmVyKHNldHVwRmVlKS5ndCgwKSYmYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ0b2tlbnMiLCJ0cmFuc2ZlciIse3RvOiJudWxsIixzeW1ib2w6IkJFRSIscXVhbnRpdHk6c2V0dXBGZWUsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX0pLGFwaS5lbWl0KCJjcmVhdGVSZXdhcmRQb29sIix7X2lkOmluc2VydGVkUmV3YXJkUG9vbC5faWR9KX0sYWN0aW9ucy51cGRhdGVSZXdhcmRQb29sPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtyZXdhcmRQb29sSWQ6cmV3YXJkUG9vbElkLGNvbmZpZzpjb25maWcsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZDtpZighYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwib3BlcmF0aW9uIG11c3QgYmUgc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikpcmV0dXJuO2NvbnN0IHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSkse3VwZGF0ZUZlZTp1cGRhdGVGZWUsbWF4VGFnc1BlclBvb2w6bWF4VGFnc1BlclBvb2x9PXBhcmFtcyx1dGlsaXR5VG9rZW5CYWxhbmNlPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwiYmFsYW5jZXMiLHthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOiJCRUUifSksYXV0aG9yaXplZD0hKCFhcGkuQmlnTnVtYmVyKHVwZGF0ZUZlZSkubHRlKDApJiZhcGkuc2VuZGVyIT09YXBpLm93bmVyKXx8dXRpbGl0eVRva2VuQmFsYW5jZSYmYXBpLkJpZ051bWJlcih1dGlsaXR5VG9rZW5CYWxhbmNlLmJhbGFuY2UpLmd0ZSh1cGRhdGVGZWUpO2lmKCFhcGkuYXNzZXJ0KGF1dGhvcml6ZWQsInlvdSBtdXN0IGhhdmUgZW5vdWdoIHRva2VucyB0byBjb3ZlciB0aGUgdXBkYXRlIGZlZSIpKXJldHVybjtpZighYXBpLmFzc2VydChjb25maWcmJiJvYmplY3QiPT10eXBlb2YgY29uZmlnLCJjb25maWcgaW52YWxpZCIpKXJldHVybjtjb25zdHtwb3N0UmV3YXJkQ3VydmU6cG9zdFJld2FyZEN1cnZlLHBvc3RSZXdhcmRDdXJ2ZVBhcmFtZXRlcjpwb3N0UmV3YXJkQ3VydmVQYXJhbWV0ZXIsY3VyYXRpb25SZXdhcmRDdXJ2ZTpjdXJhdGlvblJld2FyZEN1cnZlLGN1cmF0aW9uUmV3YXJkQ3VydmVQYXJhbWV0ZXI6Y3VyYXRpb25SZXdhcmRDdXJ2ZVBhcmFtZXRlcixjdXJhdGlvblJld2FyZFBlcmNlbnRhZ2U6Y3VyYXRpb25SZXdhcmRQZXJjZW50YWdlLGNhc2hvdXRXaW5kb3dEYXlzOmNhc2hvdXRXaW5kb3dEYXlzLHJld2FyZFBlckludGVydmFsOnJld2FyZFBlckludGVydmFsLHJld2FyZEludGVydmFsU2Vjb25kczpyZXdhcmRJbnRlcnZhbFNlY29uZHMsdm90ZVJlZ2VuZXJhdGlvbkRheXM6dm90ZVJlZ2VuZXJhdGlvbkRheXMsZG93bnZvdGVSZWdlbmVyYXRpb25EYXlzOmRvd252b3RlUmVnZW5lcmF0aW9uRGF5cyxzdGFrZWRSZXdhcmRQZXJjZW50YWdlOnN0YWtlZFJld2FyZFBlcmNlbnRhZ2Usdm90ZVBvd2VyQ29uc3VtcHRpb246dm90ZVBvd2VyQ29uc3VtcHRpb24sZG93bnZvdGVQb3dlckNvbnN1bXB0aW9uOmRvd252b3RlUG93ZXJDb25zdW1wdGlvbix0YWdzOnRhZ3MsZGlzYWJsZURvd252b3RlOmRpc2FibGVEb3dudm90ZSxpZ25vcmVEZWNsaW5lUGF5b3V0Omlnbm9yZURlY2xpbmVQYXlvdXR9PWNvbmZpZyxleGlzdGluZ1Jld2FyZFBvb2w9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInJld2FyZFBvb2xzIix7X2lkOnJld2FyZFBvb2xJZH0pO2lmKCFhcGkuYXNzZXJ0KGV4aXN0aW5nUmV3YXJkUG9vbCwicmV3YXJkIHBvb2wgbm90IGZvdW5kIikpcmV0dXJuO2NvbnN0IHRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwidG9rZW5zIix7c3ltYm9sOmV4aXN0aW5nUmV3YXJkUG9vbC5zeW1ib2x9KTtpZighYXBpLmFzc2VydChwb3N0UmV3YXJkQ3VydmUmJiJwb3dlciI9PT1wb3N0UmV3YXJkQ3VydmUsInBvc3RSZXdhcmRDdXJ2ZSBzaG91bGQgYmUgb25lIG9mOiBbcG93ZXJdIikpcmV0dXJuO2V4aXN0aW5nUmV3YXJkUG9vbC5jb25maWcucG9zdFJld2FyZEN1cnZlPXBvc3RSZXdhcmRDdXJ2ZTtjb25zdCBwb3N0RXhwb25lbnQ9YXBpLkJpZ051bWJlcihwb3N0UmV3YXJkQ3VydmVQYXJhbWV0ZXIpO2lmKCFhcGkuYXNzZXJ0KCJzdHJpbmciPT10eXBlb2YgcG9zdFJld2FyZEN1cnZlUGFyYW1ldGVyJiZwb3N0RXhwb25lbnQuaXNGaW5pdGUoKSYmcG9zdEV4cG9uZW50Lmd0ZSgiMSIpJiZwb3N0RXhwb25lbnQubHRlKCIyIikmJnBvc3RFeHBvbmVudC5kcCgpPD0yLCdwb3N0UmV3YXJkQ3VydmVQYXJhbWV0ZXIgc2hvdWxkIGJlIGJldHdlZW4gIjEiIGFuZCAiMiIgd2l0aCBwcmVjaXNpb24gYXQgbW9zdCAyJykpcmV0dXJuO2lmKGV4aXN0aW5nUmV3YXJkUG9vbC5jb25maWcucG9zdFJld2FyZEN1cnZlUGFyYW1ldGVyPXBvc3RSZXdhcmRDdXJ2ZVBhcmFtZXRlciwhYXBpLmFzc2VydChjdXJhdGlvblJld2FyZEN1cnZlJiYicG93ZXIiPT09Y3VyYXRpb25SZXdhcmRDdXJ2ZSwiY3VyYXRpb25SZXdhcmRDdXJ2ZSBzaG91bGQgYmUgb25lIG9mOiBbcG93ZXJdIikpcmV0dXJuO2NvbnN0IGN1cmF0aW9uRXhwb25lbnQ9YXBpLkJpZ051bWJlcihjdXJhdGlvblJld2FyZEN1cnZlUGFyYW1ldGVyKTtpZighYXBpLmFzc2VydCgic3RyaW5nIj09dHlwZW9mIGN1cmF0aW9uUmV3YXJkQ3VydmVQYXJhbWV0ZXImJmN1cmF0aW9uRXhwb25lbnQuaXNGaW5pdGUoKSYmY3VyYXRpb25FeHBvbmVudC5ndGUoIjAuNSIpJiZjdXJhdGlvbkV4cG9uZW50Lmx0ZSgiMSIpJiZjdXJhdGlvbkV4cG9uZW50LmRwKCk8PTIsJ2N1cmF0aW9uUmV3YXJkQ3VydmVQYXJhbWV0ZXIgY2FuIG9ubHkgYmUgYmV0d2VlbiAiMC41IiBhbmQgIjEiIHdpdGggcHJlY2lzaW9uIGF0IG1vc3QgMicpKXJldHVybjtpZihleGlzdGluZ1Jld2FyZFBvb2wuY29uZmlnLmN1cmF0aW9uUmV3YXJkQ3VydmVQYXJhbWV0ZXI9Y3VyYXRpb25SZXdhcmRDdXJ2ZVBhcmFtZXRlciwhYXBpLmFzc2VydChOdW1iZXIuaXNJbnRlZ2VyKGN1cmF0aW9uUmV3YXJkUGVyY2VudGFnZSkmJmN1cmF0aW9uUmV3YXJkUGVyY2VudGFnZT49MCYmY3VyYXRpb25SZXdhcmRQZXJjZW50YWdlPD0xMDAsImN1cmF0aW9uUmV3YXJkUGVyY2VudGFnZSBzaG91bGQgYmUgYW4gaW50ZWdlciBiZXR3ZWVuIDAgYW5kIDEwMCIpKXJldHVybjtpZihleGlzdGluZ1Jld2FyZFBvb2wuY29uZmlnLmN1cmF0aW9uUmV3YXJkUGVyY2VudGFnZT1jdXJhdGlvblJld2FyZFBlcmNlbnRhZ2UsIWFwaS5hc3NlcnQoY2FzaG91dFdpbmRvd0RheXMmJk51bWJlci5pc0ludGVnZXIoY2FzaG91dFdpbmRvd0RheXMpJiZjYXNob3V0V2luZG93RGF5cz49MSYmY2FzaG91dFdpbmRvd0RheXM8PTMwLCJjYXNob3V0V2luZG93RGF5cyBzaG91bGQgYmUgYW4gaW50ZWdlciBiZXR3ZWVuIDEgYW5kIDMwIikpcmV0dXJuO2V4aXN0aW5nUmV3YXJkUG9vbC5jb25maWcuY2FzaG91dFdpbmRvd0RheXM9Y2FzaG91dFdpbmRvd0RheXM7Y29uc3QgcGFyc2VkUmV3YXJkUGVySW50ZXJ2YWw9YXBpLkJpZ051bWJlcihyZXdhcmRQZXJJbnRlcnZhbCk7YXBpLmFzc2VydCgic3RyaW5nIj09dHlwZW9mIHJld2FyZFBlckludGVydmFsJiZwYXJzZWRSZXdhcmRQZXJJbnRlcnZhbC5pc0Zpbml0ZSgpJiZwYXJzZWRSZXdhcmRQZXJJbnRlcnZhbC5ndCgwKSwicmV3YXJkUGVySW50ZXJ2YWwgaW52YWxpZCIpJiZhcGkuYXNzZXJ0KHBhcnNlZFJld2FyZFBlckludGVydmFsLmRwKCk8PXRva2VuLnByZWNpc2lvbiwidG9rZW4gcHJlY2lzaW9uIG1pc21hdGNoIGZvciByZXdhcmRQZXJJbnRlcnZhbCIpJiYoZXhpc3RpbmdSZXdhcmRQb29sLmNvbmZpZy5yZXdhcmRQZXJJbnRlcnZhbD1yZXdhcmRQZXJJbnRlcnZhbCxhcGkuYXNzZXJ0KHJld2FyZEludGVydmFsU2Vjb25kcyYmTnVtYmVyLmlzSW50ZWdlcihyZXdhcmRJbnRlcnZhbFNlY29uZHMpJiZyZXdhcmRJbnRlcnZhbFNlY29uZHM+PTMmJnJld2FyZEludGVydmFsU2Vjb25kczw9ODY0MDAmJnJld2FyZEludGVydmFsU2Vjb25kcyUzPT0wLCJyZXdhcmRJbnRlcnZhbFNlY29uZHMgc2hvdWxkIGJlIGFuIGludGVnZXIgYmV0d2VlbiAzIGFuZCA4NjQwMCwgYW5kIGRpdmlzaWJsZSBieSAzIikmJihleGlzdGluZ1Jld2FyZFBvb2wuY29uZmlnLnJld2FyZEludGVydmFsU2Vjb25kcz1yZXdhcmRJbnRlcnZhbFNlY29uZHMsYXBpLmFzc2VydCh2b3RlUmVnZW5lcmF0aW9uRGF5cyYmTnVtYmVyLmlzSW50ZWdlcih2b3RlUmVnZW5lcmF0aW9uRGF5cykmJnZvdGVSZWdlbmVyYXRpb25EYXlzPj0xJiZ2b3RlUmVnZW5lcmF0aW9uRGF5czw9MzAsInZvdGVSZWdlbmVyYXRpb25EYXlzIHNob3VsZCBiZSBhbiBpbnRlZ2VyIGJldHdlZW4gMSBhbmQgMzAiKSYmKGV4aXN0aW5nUmV3YXJkUG9vbC5jb25maWcudm90ZVJlZ2VuZXJhdGlvbkRheXM9dm90ZVJlZ2VuZXJhdGlvbkRheXMsYXBpLmFzc2VydChkb3dudm90ZVJlZ2VuZXJhdGlvbkRheXMmJk51bWJlci5pc0ludGVnZXIoZG93bnZvdGVSZWdlbmVyYXRpb25EYXlzKSYmZG93bnZvdGVSZWdlbmVyYXRpb25EYXlzPj0xJiZkb3dudm90ZVJlZ2VuZXJhdGlvbkRheXM8PTMwLCJkb3dudm90ZVJlZ2VuZXJhdGlvbkRheXMgc2hvdWxkIGJlIGFuIGludGVnZXIgYmV0d2VlbiAxIGFuZCAzMCIpJiYoZXhpc3RpbmdSZXdhcmRQb29sLmNvbmZpZy5kb3dudm90ZVJlZ2VuZXJhdGlvbkRheXM9ZG93bnZvdGVSZWdlbmVyYXRpb25EYXlzLGFwaS5hc3NlcnQoTnVtYmVyLmlzSW50ZWdlcihzdGFrZWRSZXdhcmRQZXJjZW50YWdlKSYmc3Rha2VkUmV3YXJkUGVyY2VudGFnZT49MCYmc3Rha2VkUmV3YXJkUGVyY2VudGFnZTw9MTAwLCJzdGFrZWRSZXdhcmRQZXJjZW50YWdlIHNob3VsZCBiZSBhbiBpbnRlZ2VyIGJldHdlZW4gMCBhbmQgMTAwIikmJihleGlzdGluZ1Jld2FyZFBvb2wuY29uZmlnLnN0YWtlZFJld2FyZFBlcmNlbnRhZ2U9c3Rha2VkUmV3YXJkUGVyY2VudGFnZSxhcGkuYXNzZXJ0KHZvdGVQb3dlckNvbnN1bXB0aW9uJiZOdW1iZXIuaXNJbnRlZ2VyKHZvdGVQb3dlckNvbnN1bXB0aW9uKSYmdm90ZVBvd2VyQ29uc3VtcHRpb24+PTEmJnZvdGVQb3dlckNvbnN1bXB0aW9uPD0xZTQsInZvdGVQb3dlckNvbnN1bXB0aW9uIHNob3VsZCBiZSBhbiBpbnRlZ2VyIGJldHdlZW4gMSBhbmQgMTAwMDAiKSYmKGV4aXN0aW5nUmV3YXJkUG9vbC5jb25maWcudm90ZVBvd2VyQ29uc3VtcHRpb249dm90ZVBvd2VyQ29uc3VtcHRpb24sYXBpLmFzc2VydChkb3dudm90ZVBvd2VyQ29uc3VtcHRpb24mJk51bWJlci5pc0ludGVnZXIoZG93bnZvdGVQb3dlckNvbnN1bXB0aW9uKSYmZG93bnZvdGVQb3dlckNvbnN1bXB0aW9uPj0xJiZkb3dudm90ZVBvd2VyQ29uc3VtcHRpb248PTFlNCwiZG93bnZvdGVQb3dlckNvbnN1bXB0aW9uIHNob3VsZCBiZSBhbiBpbnRlZ2VyIGJldHdlZW4gMSBhbmQgMTAwMDAiKSYmKGV4aXN0aW5nUmV3YXJkUG9vbC5jb25maWcuZG93bnZvdGVQb3dlckNvbnN1bXB0aW9uPWRvd252b3RlUG93ZXJDb25zdW1wdGlvbixhcGkuYXNzZXJ0KEFycmF5LmlzQXJyYXkodGFncykmJnRhZ3MubGVuZ3RoPj0xJiZ0YWdzLmxlbmd0aDw9bWF4VGFnc1BlclBvb2wmJnRhZ3MuZXZlcnkodD0+InN0cmluZyI9PXR5cGVvZiB0KSwidGFncyBzaG91bGQgYmUgYSBub24tZW1wdHkgYXJyYXkgb2Ygc3RyaW5ncyBvZiBsZW5ndGggYXQgbW9zdCAiK21heFRhZ3NQZXJQb29sKSYmKGV4aXN0aW5nUmV3YXJkUG9vbC5jb25maWcudGFncz10YWdzLGFwaS5hc3NlcnQoImJvb2xlYW4iPT10eXBlb2YgZGlzYWJsZURvd252b3RlLCJkaXNhYmxlRG93bnZvdGUgc2hvdWxkIGJlIGJvb2xlYW4iKSYmKGV4aXN0aW5nUmV3YXJkUG9vbC5jb25maWcuZGlzYWJsZURvd252b3RlPWRpc2FibGVEb3dudm90ZSxhcGkuYXNzZXJ0KCJib29sZWFuIj09dHlwZW9mIGlnbm9yZURlY2xpbmVQYXlvdXQsImlnbm9yZURlY2xpbmVQYXlvdXQgc2hvdWxkIGJlIGJvb2xlYW4iKSYmKGV4aXN0aW5nUmV3YXJkUG9vbC5jb25maWcuaWdub3JlRGVjbGluZVBheW91dD1pZ25vcmVEZWNsaW5lUGF5b3V0LGFwaS5hc3NlcnQoYXBpLnNlbmRlcj09PXRva2VuLmlzc3Vlcnx8YXBpLnNlbmRlcj09PWFwaS5vd25lciYmIkJFRSI9PT10b2tlbi5zeW1ib2wsIm11c3QgYmUgaXNzdWVyIG9mIHRva2VuIikmJihhcGkuc2VuZGVyIT09YXBpLm93bmVyJiZhcGkuQmlnTnVtYmVyKHVwZGF0ZUZlZSkuZ3QoMCkmJmF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgidG9rZW5zIiwidHJhbnNmZXIiLHt0bzoibnVsbCIsc3ltYm9sOiJCRUUiLHF1YW50aXR5OnVwZGF0ZUZlZSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fSksYXdhaXQgYXBpLmRiLnVwZGF0ZSgicmV3YXJkUG9vbHMiLGV4aXN0aW5nUmV3YXJkUG9vbCkpKSkpKSkpKSkpKX0sYWN0aW9ucy5zZXRBY3RpdmU9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3Jld2FyZFBvb2xJZDpyZXdhcmRQb29sSWQsYWN0aXZlOmFjdGl2ZSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKCFhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJvcGVyYXRpb24gbXVzdCBiZSBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSlyZXR1cm47Y29uc3QgZXhpc3RpbmdSZXdhcmRQb29sPWF3YWl0IGFwaS5kYi5maW5kT25lKCJyZXdhcmRQb29scyIse19pZDpyZXdhcmRQb29sSWR9KTtpZighYXBpLmFzc2VydChleGlzdGluZ1Jld2FyZFBvb2wsInJld2FyZCBwb29sIG5vdCBmb3VuZCIpKXJldHVybjtjb25zdCB0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsInRva2VucyIse3N5bWJvbDpleGlzdGluZ1Jld2FyZFBvb2wuc3ltYm9sfSk7YXBpLmFzc2VydChhcGkuc2VuZGVyPT09dG9rZW4uaXNzdWVyfHxhcGkuc2VuZGVyPT09YXBpLm93bmVyLCJtdXN0IGJlIGlzc3VlciBvZiB0b2tlbiIpJiYoZXhpc3RpbmdSZXdhcmRQb29sLmFjdGl2ZT1hY3RpdmUsYXdhaXQgYXBpLmRiLnVwZGF0ZSgicmV3YXJkUG9vbHMiLGV4aXN0aW5nUmV3YXJkUG9vbCkpfSxhY3Rpb25zLnNldE11dGU9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3Jld2FyZFBvb2xJZDpyZXdhcmRQb29sSWQsYWNjb3VudDphY2NvdW50LG11dGU6bXV0ZSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKCFhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJvcGVyYXRpb24gbXVzdCBiZSBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSlyZXR1cm47Y29uc3QgZXhpc3RpbmdSZXdhcmRQb29sPWF3YWl0IGFwaS5kYi5maW5kT25lKCJyZXdhcmRQb29scyIse19pZDpyZXdhcmRQb29sSWR9KTtpZighYXBpLmFzc2VydChleGlzdGluZ1Jld2FyZFBvb2wsInJld2FyZCBwb29sIG5vdCBmb3VuZCIpKXJldHVybjtjb25zdCB0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsInRva2VucyIse3N5bWJvbDpleGlzdGluZ1Jld2FyZFBvb2wuc3ltYm9sfSk7aWYoIWFwaS5hc3NlcnQoYXBpLnNlbmRlcj09PXRva2VuLmlzc3Vlcnx8YXBpLnNlbmRlcj09PWFwaS5vd25lciwibXVzdCBiZSBpc3N1ZXIgb2YgdG9rZW4iKSlyZXR1cm47aWYoIWFwaS5hc3NlcnQoYXBpLmlzVmFsaWRBY2NvdW50TmFtZShhY2NvdW50KSwiaW52YWxpZCBhY2NvdW50IikpcmV0dXJuO2lmKCFhcGkuYXNzZXJ0KCJib29sZWFuIj09dHlwZW9mIG11dGUsIm11dGUgbXVzdCBiZSBhIGJvb2xlYW4iKSlyZXR1cm47Y29uc3Qgdm90aW5nUG93ZXI9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInZvdGluZ1Bvd2VyIix7cmV3YXJkUG9vbElkOnJld2FyZFBvb2xJZCxhY2NvdW50OmFjY291bnR9KTtpZih2b3RpbmdQb3dlcil2b3RpbmdQb3dlci5tdXRlPW11dGUsYXdhaXQgYXBpLmRiLnVwZGF0ZSgidm90aW5nUG93ZXIiLHZvdGluZ1Bvd2VyKTtlbHNle2NvbnN0IG5ld1ZvdGluZ1Bvd2VyPXtyZXdhcmRQb29sSWQ6cmV3YXJkUG9vbElkLGFjY291bnQ6YWNjb3VudCxsYXN0Vm90ZVRpbWVzdGFtcDpuZXcgRGF0ZShhcGkuaGl2ZUJsb2NrVGltZXN0YW1wKyIuMDAwWiIpLmdldFRpbWUoKSx2b3RpbmdQb3dlcjoxZTQsZG93bnZvdGluZ1Bvd2VyOjFlNCxtdXRlOm11dGV9O2F3YWl0IGFwaS5kYi5pbnNlcnQoInZvdGluZ1Bvd2VyIixuZXdWb3RpbmdQb3dlcil9fSxhY3Rpb25zLnJlc2V0UG9vbD1hc3luYyBwYXlsb2FkPT57Y29uc3R7cmV3YXJkUG9vbElkOnJld2FyZFBvb2xJZCxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKCFhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJvcGVyYXRpb24gbXVzdCBiZSBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSlyZXR1cm47Y29uc3QgZXhpc3RpbmdSZXdhcmRQb29sPWF3YWl0IGFwaS5kYi5maW5kT25lKCJyZXdhcmRQb29scyIse19pZDpyZXdhcmRQb29sSWR9KTtpZighYXBpLmFzc2VydChleGlzdGluZ1Jld2FyZFBvb2wsInJld2FyZCBwb29sIG5vdCBmb3VuZCIpKXJldHVybjtjb25zdCB0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsInRva2VucyIse3N5bWJvbDpleGlzdGluZ1Jld2FyZFBvb2wuc3ltYm9sfSk7aWYoIWFwaS5hc3NlcnQoYXBpLnNlbmRlcj09PXRva2VuLmlzc3Vlcnx8YXBpLnNlbmRlcj09PWFwaS5vd25lciwibXVzdCBiZSBpc3N1ZXIgb2YgdG9rZW4iKSlyZXR1cm47Y29uc3QgdGltZXN0YW1wPW5ldyBEYXRlKGFwaS5oaXZlQmxvY2tUaW1lc3RhbXArIi4wMDBaIikuZ2V0VGltZSgpO2V4aXN0aW5nUmV3YXJkUG9vbC5yZXdhcmRQb29sPSIwIixleGlzdGluZ1Jld2FyZFBvb2wubGFzdFJld2FyZFRpbWVzdGFtcD10aW1lc3RhbXAsZXhpc3RpbmdSZXdhcmRQb29sLmxhc3RDbGFpbURlY2F5VGltZXN0YW1wPXRpbWVzdGFtcCxleGlzdGluZ1Jld2FyZFBvb2wuY3JlYXRlZFRpbWVzdGFtcD10aW1lc3RhbXAsZXhpc3RpbmdSZXdhcmRQb29sLnBlbmRpbmdDbGFpbXM9IjAiLGF3YWl0IGFwaS5kYi51cGRhdGUoInJld2FyZFBvb2xzIixleGlzdGluZ1Jld2FyZFBvb2wpfSxhY3Rpb25zLmNvbW1lbnQ9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e2F1dGhvcjphdXRob3IscGVybWxpbms6cGVybWxpbmsscmV3YXJkUG9vbHM6cmV3YXJkUG9vbHN9PXBheWxvYWQ7aWYoIWFwaS5hc3NlcnQoIm51bGwiPT09YXBpLnNlbmRlciwiYWN0aW9uIG11c3QgdXNlIGNvbW1lbnQgb3BlcmF0aW9uIikpcmV0dXJuO2lmKGF3YWl0IHRva2VuTWFpbnRlbmFuY2UoKSwhYXBpLmFzc2VydCghcmV3YXJkUG9vbHN8fEFycmF5LmlzQXJyYXkocmV3YXJkUG9vbHMpJiZyZXdhcmRQb29scy5ldmVyeShycD0+TnVtYmVyLmlzSW50ZWdlcihycCkpLCJyZXdhcmRQb29scyBtdXN0IGJlIGFuIGFycmF5IG9mIGludGVnZXJzIikpcmV0dXJuO2NvbnN0IHJld2FyZFBvb2xJZHM9YXdhaXQgZ2V0UmV3YXJkUG9vbElkcyhwYXlsb2FkKSxhdXRob3JwZXJtPWBAJHthdXRob3J9LyR7cGVybWxpbmt9YDtpZihhd2FpdCBhcGkuZGIuZmluZE9uZSgicG9zdE1ldGFkYXRhIix7YXV0aG9ycGVybTphdXRob3JwZXJtfSkpcmV0dXJuO2lmKGF3YWl0IGFwaS5kYi5maW5kT25lKCJwb3N0cyIse2F1dGhvcnBlcm06YXV0aG9ycGVybX0pKXJldHVybjthd2FpdCBhcGkuZGIuaW5zZXJ0KCJwb3N0TWV0YWRhdGEiLHthdXRob3JwZXJtOmF1dGhvcnBlcm0scmV3YXJkUG9vbElkczpyZXdhcmRQb29sSWRzfSk7Y29uc3QgdGltZXN0YW1wPW5ldyBEYXRlKGFwaS5oaXZlQmxvY2tUaW1lc3RhbXArIi4wMDBaIikuZ2V0VGltZSgpO2ZvcihsZXQgaT0wO2k8cmV3YXJkUG9vbElkcy5sZW5ndGg7aSs9MSl7Y29uc3QgcmV3YXJkUG9vbElkPXJld2FyZFBvb2xJZHNbaV0scmV3YXJkUG9vbD1hd2FpdCBhcGkuZGIuZmluZE9uZSgicmV3YXJkUG9vbHMiLHtfaWQ6cmV3YXJkUG9vbElkfSk7aWYocmV3YXJkUG9vbCYmcmV3YXJkUG9vbC5hY3RpdmUpe2NvbnN0IGNhc2hvdXRUaW1lPXRpbWVzdGFtcCsyNCpyZXdhcmRQb29sLmNvbmZpZy5jYXNob3V0V2luZG93RGF5cyozNjAwKjFlMyxwb3N0PXtyZXdhcmRQb29sSWQ6cmV3YXJkUG9vbElkLHN5bWJvbDpyZXdhcmRQb29sLnN5bWJvbCxhdXRob3JwZXJtOmF1dGhvcnBlcm0sYXV0aG9yOmF1dGhvcixjcmVhdGVkOnRpbWVzdGFtcCxjYXNob3V0VGltZTpjYXNob3V0VGltZSx2b3RlUG9zaXRpdmVSc2hhcmVTdW06IjAiLHZvdGVSc2hhcmVTdW06IjAifTthd2FpdCBhcGkuZGIuaW5zZXJ0KCJwb3N0cyIscG9zdCksYXBpLmVtaXQoIm5ld0NvbW1lbnQiLHtyZXdhcmRQb29sSWQ6cmV3YXJkUG9vbElkLHN5bWJvbDpyZXdhcmRQb29sLnN5bWJvbH0pfX19LGFjdGlvbnMuY29tbWVudE9wdGlvbnM9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e2F1dGhvcjphdXRob3IscGVybWxpbms6cGVybWxpbmssbWF4QWNjZXB0ZWRQYXlvdXQ6bWF4QWNjZXB0ZWRQYXlvdXQsYmVuZWZpY2lhcmllczpiZW5lZmljaWFyaWVzfT1wYXlsb2FkO2lmKCFhcGkuYXNzZXJ0KCJudWxsIj09PWFwaS5zZW5kZXIsImFjdGlvbiBtdXN0IHVzZSBjb21tZW50T3B0aW9ucyBvcGVyYXRpb24iKSlyZXR1cm47Y29uc3QgYXV0aG9ycGVybT1gQCR7YXV0aG9yfS8ke3Blcm1saW5rfWAsZXhpc3RpbmdQb3N0cz1hd2FpdCBhcGkuZGIuZmluZCgicG9zdHMiLHthdXRob3JwZXJtOmF1dGhvcnBlcm19KTtpZighZXhpc3RpbmdQb3N0cylyZXR1cm47Y29uc3QgZGVjbGluZVBheW91dD1tYXhBY2NlcHRlZFBheW91dC5zdGFydHNXaXRoKCIwLjAwMCIpO2ZvcihsZXQgaT0wO2k8ZXhpc3RpbmdQb3N0cy5sZW5ndGg7aSs9MSl7Y29uc3QgcG9zdD1leGlzdGluZ1Bvc3RzW2ldOyhhd2FpdCBhcGkuZGIuZmluZE9uZSgicmV3YXJkUG9vbHMiLHtfaWQ6cG9zdC5yZXdhcmRQb29sSWR9KSkuY29uZmlnLmlnbm9yZURlY2xpbmVQYXlvdXR8fChwb3N0LmRlY2xpbmVQYXlvdXQ9ZGVjbGluZVBheW91dCkscG9zdC5iZW5lZmljaWFyaWVzPWJlbmVmaWNpYXJpZXMsYXdhaXQgYXBpLmRiLnVwZGF0ZSgicG9zdHMiLHBvc3QpfX0sYWN0aW9ucy52b3RlPWFzeW5jIHBheWxvYWQ9Pntjb25zdHt2b3Rlcjp2b3RlcixhdXRob3I6YXV0aG9yLHBlcm1saW5rOnBlcm1saW5rLHdlaWdodDp3ZWlnaHR9PXBheWxvYWQ7aWYoIWFwaS5hc3NlcnQoIm51bGwiPT09YXBpLnNlbmRlciwiY2FuIG9ubHkgdm90ZSB3aXRoIHZvdGluZyBvcCIpKXJldHVybjtpZihhd2FpdCB0b2tlbk1haW50ZW5hbmNlKCksIWFwaS5hc3NlcnQoTnVtYmVyLmlzSW50ZWdlcih3ZWlnaHQpJiZ3ZWlnaHQ+PS0xZTQmJndlaWdodDw9MWU0LCJ3ZWlnaHQgbXVzdCBiZSBhbiBpbnRlZ2VyIGZyb20gLTEwMDAwIHRvIDEwMDAwIikpcmV0dXJuO2NvbnN0IHRpbWVzdGFtcD1uZXcgRGF0ZShhcGkuaGl2ZUJsb2NrVGltZXN0YW1wKyIuMDAwWiIpLmdldFRpbWUoKSxhdXRob3JwZXJtPWBAJHthdXRob3J9LyR7cGVybWxpbmt9YCxwb3N0cz1hd2FpdCBhcGkuZGIuZmluZCgicG9zdHMiLHthdXRob3JwZXJtOmF1dGhvcnBlcm19LDFlMywwLFt7aW5kZXg6Il9pZCIsZGVzY2VuZGluZzohMX1dKTtpZihwb3N0cylmb3IobGV0IGk9MDtpPHBvc3RzLmxlbmd0aDtpKz0xKXtjb25zdCBwb3N0PXBvc3RzW2ldO2F3YWl0IHByb2Nlc3NWb3RlKHBvc3Qsdm90ZXIsd2VpZ2h0LHRpbWVzdGFtcCl9fTs="}}}