{"remainingRequest":"D:\\test\\ssi-satoken\\ui\\node_modules\\babel-loader\\lib\\index.js!D:\\test\\ssi-satoken\\ui\\node_modules\\cache-loader\\dist\\cjs.js??ref--0-0!D:\\test\\ssi-satoken\\ui\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\test\\ssi-satoken\\ui\\src\\views\\sysManager\\userManager\\index.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\test\\ssi-satoken\\ui\\src\\views\\sysManager\\userManager\\index.vue","mtime":1696909835000},{"path":"D:\\test\\ssi-satoken\\ui\\babel.config.js","mtime":1696909835000},{"path":"D:\\test\\ssi-satoken\\ui\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1697005520931},{"path":"D:\\test\\ssi-satoken\\ui\\node_modules\\babel-loader\\lib\\index.js","mtime":1697005523218},{"path":"D:\\test\\ssi-satoken\\ui\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1697005520931},{"path":"D:\\test\\ssi-satoken\\ui\\node_modules\\vue-loader\\lib\\index.js","mtime":1697005524089}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:InVzZSBzdHJpY3QiOwoKdmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSByZXF1aXJlKCJEOi90ZXN0L3NzaS1zYXRva2VuL3VpL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2ludGVyb3BSZXF1aXJlRGVmYXVsdC5qcyIpLmRlZmF1bHQ7Ck9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsKICB2YWx1ZTogdHJ1ZQp9KTsKZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwOwpyZXF1aXJlKCJjb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LnRvLXN0cmluZy5qcyIpOwp2YXIgX3JlZ2VuZXJhdG9yUnVudGltZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoIkQ6L3Rlc3Qvc3NpLXNhdG9rZW4vdWkvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvcmVnZW5lcmF0b3JSdW50aW1lLmpzIikpOwp2YXIgX2FzeW5jVG9HZW5lcmF0b3IyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKCJEOi90ZXN0L3NzaS1zYXRva2VuL3VpL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2FzeW5jVG9HZW5lcmF0b3IuanMiKSk7CnZhciBfbG9kYXNoID0gcmVxdWlyZSgibG9kYXNoIik7CnZhciBfc211dGlsID0gcmVxdWlyZSgiQC91dGlscy9zbXV0aWwiKTsKLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KdmFyIF9kZWZhdWx0ID0gewogIG5hbWU6ICJVc2VyIiwKICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkgewogICAgcmV0dXJuIHsKICAgICAgcGlja2VyT3B0aW9uczogewogICAgICAgIGRpc2FibGVkRGF0ZTogZnVuY3Rpb24gZGlzYWJsZWREYXRlKHRpbWUpIHsKICAgICAgICAgIHJldHVybiB0aW1lLmdldFRpbWUoKSA8IERhdGUubm93KCkgLSA4LjY0ZTc7CiAgICAgICAgfQogICAgICB9LAogICAgICBzeXNSb2xlOiAnJywKICAgICAgaWQ6IHVuZGVmaW5lZCwKICAgICAgdXNlcm5hbWU6IHVuZGVmaW5lZCwKICAgICAgbmlja25hbWU6IHVuZGVmaW5lZCwKICAgICAgaWRjYXJkOiB1bmRlZmluZWQsCiAgICAgIHBob25lbnVtYmVyOiB1bmRlZmluZWQsCiAgICAgIG1haWxib3g6IHVuZGVmaW5lZCwKICAgICAgc3RhdHVzOiAiMCIsCiAgICAgIHVzZXJ0eXBlOiAiMCIsCiAgICAgIHJlbWFyazogdW5kZWZpbmVkLAogICAgICBleHBEYXRlOiB1bmRlZmluZWQsCiAgICAgIC8vIOinkuiJsuihqOagvOaVsOaNrgogICAgICBqc3VzZXJpZDogJycsCiAgICAgIHJvbGVMaXN0OiBbXSwKICAgICAganN1c2VybmFtZTogJycsCiAgICAgIGpzbmlja25hbWU6ICcnLAogICAgICB1c2VyUm9sZUlkOiAnJywKICAgICAganN1c2VydHlwZTogJycsCiAgICAgIHN0YXR1c09wdGlvbnM6IFt7CiAgICAgICAgdmFsdWU6ICcwJywKICAgICAgICBsYWJlbDogJ+ato+W4uCcKICAgICAgfSwgewogICAgICAgIHZhbHVlOiAnMScsCiAgICAgICAgbGFiZWw6ICfplIHlrponCiAgICAgIH0sIHsKICAgICAgICB2YWx1ZTogJzInLAogICAgICAgIGxhYmVsOiAn5rOo6ZSAJwogICAgICB9XSwKICAgICAgdHlwZU9wdGlvbnM6IFt7CiAgICAgICAgdmFsdWU6ICcwJywKICAgICAgICBsYWJlbDogJ+euoeeQhuWRmCcKICAgICAgfSwgewogICAgICAgIHZhbHVlOiAnMScsCiAgICAgICAgbGFiZWw6ICfkuJrliqHnlKjmiLcnCiAgICAgIH1dLAogICAgICAvLyDpga7nvanlsYIKICAgICAgbG9hZGluZzogdHJ1ZSwKICAgICAgc2hvd1RhYmxlOiB0cnVlLAogICAgICAvLyDpgInkuK3mlbDnu4QKICAgICAgaWRzOiBbXSwKICAgICAgLy8g6Z2e5Y2V5Liq56aB55SoCiAgICAgIHNpbmdsZTogdHJ1ZSwKICAgICAgLy8g6Z2e5aSa5Liq56aB55SoCiAgICAgIG11bHRpcGxlOiB0cnVlLAogICAgICBjdXJyZW50UGFnZTogMSwKICAgICAgcGFnZVNpemU6IDEwLAogICAgICAvLyDmgLvmnaHmlbAKICAgICAgdG90YWw6IDAsCiAgICAgIC8vIOeUqOaIt+ihqOagvOaVsOaNrgogICAgICB1c2VyTGlzdDogW10sCiAgICAgIGxvY2t0aXRsZTogIumJtOWIq+aTjeS9nCIsCiAgICAgIC8vIOW8ueWHuuWxguagh+mimAogICAgICB0aXRsZTogIiIsCiAgICAgIC8vIOinkuiJsuWIhumFjeW8ueWHuuWxguagh+mimAogICAgICBqc3RpdGxlOiAiIiwKICAgICAgLy8g5piv5ZCm5pi+56S65by55Ye65bGCCiAgICAgIG9wZW46IGZhbHNlLAogICAgICBsb2Nrb3BlbjogZmFsc2UsCiAgICAgIC8vIOinkuiJsuaYr+WQpuaYvuekuuW8ueWHuuWxggogICAgICBqc29wZW46IGZhbHNlLAogICAgICAvLyDpu5jorqTlr4bnoIEKICAgICAgaW5pdFBhc3N3b3JkOiB1bmRlZmluZWQsCiAgICAgIC8vIOinkuiJsumAiemhuQogICAgICByb2xlT3B0aW9uczogW10sCiAgICAgIC8vIOihqOWNleWPguaVsAogICAgICBmb3JtOiB7fSwKICAgICAgbG9ja2Zvcm06IHt9LAogICAgICAvLyDmn6Xor6Llj4LmlbAKICAgICAgcXVlcnlQYXJhbXM6IHsKICAgICAgICB1c2VybmFtZTogdW5kZWZpbmVkLAogICAgICAgIHBob25lbnVtYmVyOiB1bmRlZmluZWQsCiAgICAgICAgc3RhdHVzOiB1bmRlZmluZWQKICAgICAgfSwKICAgICAgbWVudUV4cGFuZDogZmFsc2UsCiAgICAgIC8vIOiPnOWNleWIl+ihqAogICAgICBtZW51T3B0aW9uczogW10sCiAgICAgIGRlZmF1bHRQcm9wczogewogICAgICAgIGNoaWxkcmVuOiAiY2hpbGRyZW4iLAogICAgICAgIGxhYmVsOiAibGFiZWwiCiAgICAgIH0sCiAgICAgIGVkaXQ6IGZhbHNlLAogICAgICAvLyDooajljZXmoKHpqowKICAgICAgcnVsZXM6IHsKICAgICAgICB1c2VybmFtZTogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogIueUqOaIt+i0puWPt+S4jeiDveS4uuepuiIsCiAgICAgICAgICB0cmlnZ2VyOiAiYmx1ciIKICAgICAgICB9LCB7CiAgICAgICAgICBtaW46IDUsCiAgICAgICAgICBtYXg6IDIwLAogICAgICAgICAgbWVzc2FnZTogJ+eUqOaIt+i0puWPt+mVv+W6puW/hemhu+S7i+S6jiA1IOWSjCAyMCDkuYvpl7QnLAogICAgICAgICAgdHJpZ2dlcjogJ2JsdXInCiAgICAgICAgfV0sCiAgICAgICAgbmlja25hbWU6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICLnlKjmiLflp5PlkI3kuI3og73kuLrnqboiLAogICAgICAgICAgdHJpZ2dlcjogImJsdXIiCiAgICAgICAgfSwgewogICAgICAgICAgbWluOiAyLAogICAgICAgICAgbWF4OiAzMCwKICAgICAgICAgIG1lc3NhZ2U6ICfnlKjmiLflp5PlkI3plb/luqblv4Xpobvku4vkuo4gMiDlkowgMzAg5LmL6Ze0JywKICAgICAgICAgIHRyaWdnZXI6ICdibHVyJwogICAgICAgIH1dLAogICAgICAgIGlkY2FyZDogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogIui6q+S7veivgeWPt+eggeS4jeiDveS4uuepuiIsCiAgICAgICAgICB0cmlnZ2VyOiAiYmx1ciIKICAgICAgICB9LCB7CiAgICAgICAgICBtaW46IDE1LAogICAgICAgICAgbWF4OiAxOCwKICAgICAgICAgIG1lc3NhZ2U6ICfouqvku73or4Hlj7for7fovpPlhaUxNeS9jeaIluiAhTE45L2NJywKICAgICAgICAgIHRyaWdnZXI6ICdibHVyJwogICAgICAgIH1dLAogICAgICAgIG1haWxib3g6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICLpgq7nrrHkuI3og73kuLrnqboiLAogICAgICAgICAgdHJpZ2dlcjogImJsdXIiCiAgICAgICAgfSwgewogICAgICAgICAgdHlwZTogImVtYWlsIiwKICAgICAgICAgIG1lc3NhZ2U6ICLor7fovpPlhaXmraPnoa7nmoTpgq7nrrHlnLDlnYAiLAogICAgICAgICAgdHJpZ2dlcjogWyJibHVyIiwgImNoYW5nZSJdCiAgICAgICAgfV0sCiAgICAgICAgcGhvbmVudW1iZXI6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICLmiYvmnLrlj7fnoIHkuI3og73kuLrnqboiLAogICAgICAgICAgdHJpZ2dlcjogImJsdXIiCiAgICAgICAgfSwgewogICAgICAgICAgcGF0dGVybjogL14xWzN8NHw1fDZ8N3w4fDldWzAtOV1cZHs4fSQvLAogICAgICAgICAgbWVzc2FnZTogIuivt+i+k+WFpeato+ehrueahOaJi+acuuWPt+eggSIsCiAgICAgICAgICB0cmlnZ2VyOiAiYmx1ciIKICAgICAgICB9XQogICAgICB9CiAgICB9OwogIH0sCiAgd2F0Y2g6IHt9LAogIGNyZWF0ZWQ6IGZ1bmN0aW9uIGNyZWF0ZWQoKSB7CiAgICB0aGlzLmdldExpc3QoKTsKICAgIHRoaXMuZ2V0VXNlckJ5Um9sZSgpOwogIH0sCiAgbWV0aG9kczogewogICAgZ2V0VXNlckJ5Um9sZTogZnVuY3Rpb24gZ2V0VXNlckJ5Um9sZSgpIHsKICAgICAgdmFyIF90aGlzMiA9IHRoaXM7CiAgICAgIHJldHVybiAoMCwgX2FzeW5jVG9HZW5lcmF0b3IyLmRlZmF1bHQpKCAvKiNfX1BVUkVfXyovKDAsIF9yZWdlbmVyYXRvclJ1bnRpbWUyLmRlZmF1bHQpKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlKCkgewogICAgICAgIHZhciBzeXNUaW1lMiwgbGsyLCBzZWFyY2hQYXJhbXMyOwogICAgICAgIHJldHVybiAoMCwgX3JlZ2VuZXJhdG9yUnVudGltZTIuZGVmYXVsdCkoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUkKF9jb250ZXh0KSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dC5wcmV2ID0gX2NvbnRleHQubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDI7CiAgICAgICAgICAgICAgcmV0dXJuIF90aGlzMi4kYXhpb3MuZ2V0KCcvc3lzUG9saWN5Q29udHJvbGxlci9nZXRMaWNlbnNlS2V5JykudGhlbihmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgICAgICAgICBzeXNUaW1lMiA9IHJlcy5kYXRhLnN5c1RpbWU7CiAgICAgICAgICAgICAgICBsazIgPSByZXMuZGF0YS5sazsKICAgICAgICAgICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHt9KTsKICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgIHNlYXJjaFBhcmFtczIgPSB7CiAgICAgICAgICAgICAgICBzeXNUaW1lOiBzeXNUaW1lMiwKICAgICAgICAgICAgICAgIGxrOiBsazIKICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSA1OwogICAgICAgICAgICAgIHJldHVybiBfdGhpczIuJGF4aW9zLmdldCgnL3N5c1JvbGVDb250cm9sbGVyL2dldFVzZXJCeVJvbGUnLCB7CiAgICAgICAgICAgICAgICBwYXJhbXM6IHNlYXJjaFBhcmFtczIKICAgICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICAgICAgICAgIF90aGlzMi5zeXNSb2xlID0gcmVzLmRhdGE7CiAgICAgICAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7fSk7CiAgICAgICAgICAgIGNhc2UgNToKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWUpOwogICAgICB9KSkoKTsKICAgIH0sCiAgICAvLyDmoJHmnYPpmZDvvIjlsZXlvIAv5oqY5Y+g77yJCiAgICBoYW5kbGVDaGVja2VkVHJlZUV4cGFuZDogZnVuY3Rpb24gaGFuZGxlQ2hlY2tlZFRyZWVFeHBhbmQodmFsdWUsIHR5cGUpIHsKICAgICAgaWYgKHR5cGUgPT0gJ21lbnUnKSB7CiAgICAgICAgdmFyIHRyZWVMaXN0ID0gdGhpcy5tZW51T3B0aW9uczsKICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRyZWVMaXN0Lmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICB0aGlzLiRyZWZzLm1lbnUuc3RvcmUubm9kZXNNYXBbdHJlZUxpc3RbaV0uaWRdLmV4cGFuZGVkID0gdmFsdWU7CiAgICAgICAgfQogICAgICB9CiAgICB9LAogICAgc2V0Um93Q2xhc3M6IGZ1bmN0aW9uIHNldFJvd0NsYXNzKF9yZWYpIHsKICAgICAgdmFyIHJvdyA9IF9yZWYucm93LAogICAgICAgIHJvd0luZGV4ID0gX3JlZi5yb3dJbmRleDsKICAgICAgaWYgKHJvdy5zaWduc3RyID09PSAnMScpIHsKICAgICAgICByZXR1cm4gImJhY2tncm91bmQ6ICNGRkVGRDUiOwogICAgICB9CiAgICB9LAogICAgLy8g5rOo6ZSA5pON5L2cCiAgICBoYW5kbGVMb2dPZmY6IGZ1bmN0aW9uIGhhbmRsZUxvZ09mZigpIHsKICAgICAgdmFyIF90aGlzMyA9IHRoaXM7CiAgICAgIHZhciBfc2VsZWN0RGF0YSA9IHRoaXMuJHJlZnMudXNlclRhYmxlLmdldFJhZGlvUmVjb3JkKHRydWUpOwogICAgICBpZiAoX3NlbGVjdERhdGEgPT0gbnVsbCkgewogICAgICAgIHRoaXMuJG1lc3NhZ2UoewogICAgICAgICAgdHlwZTogJ3dhcm5pbmcnLAogICAgICAgICAgbWVzc2FnZTogJ+ivt+mAieaLqeiusOW9lSEnCiAgICAgICAgfSk7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIGlmIChfc2VsZWN0RGF0YS5pZCA9PSAxKSB7CiAgICAgICAgdGhpcy4kbWVzc2FnZSh7CiAgICAgICAgICB0eXBlOiAnd2FybmluZycsCiAgICAgICAgICBtZXNzYWdlOiAn5YaF572u57O757uf566h55CG5ZGY55So5oi35LiN6IO95rOo6ZSAIScKICAgICAgICB9KTsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgaWYgKF9zZWxlY3REYXRhLmlkID09IDIpIHsKICAgICAgICB0aGlzLiRtZXNzYWdlKHsKICAgICAgICAgIHR5cGU6ICd3YXJuaW5nJywKICAgICAgICAgIG1lc3NhZ2U6ICflhoXnva7lrqHorqHnrqHnkIblkZjnlKjmiLfkuI3og73ms6jplIAhJwogICAgICAgIH0pOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICBpZiAoX3NlbGVjdERhdGEuaWQgPT0gMjQpIHsKICAgICAgICB0aGlzLiRtZXNzYWdlKHsKICAgICAgICAgIHR5cGU6ICd3YXJuaW5nJywKICAgICAgICAgIG1lc3NhZ2U6ICflhoXnva7lrqHmoLjnrqHnkIblkZjnlKjmiLfkuI3og73ms6jplIAhJwogICAgICAgIH0pOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICBpZiAoX3NlbGVjdERhdGEuc3RhdHVzID09IDIpIHsKICAgICAgICB0aGlzLiRtZXNzYWdlKHsKICAgICAgICAgIHR5cGU6ICd3YXJuaW5nJywKICAgICAgICAgIG1lc3NhZ2U6ICflt7Lms6jplIDnmoTotKblj7fkuI3og73lho3mrKHms6jplIAhJwogICAgICAgIH0pOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICBpZiAoX3NlbGVjdERhdGEuc2lnbnN0ciA9PSAnMScpIHsKICAgICAgICB0aGlzLiRtZXNzYWdlKHsKICAgICAgICAgIHR5cGU6ICd3YXJuaW5nJywKICAgICAgICAgIG1lc3NhZ2U6ICflrZjlnKjlvoXlrqHmoLjvvIzlrqHmoLjnrqHnkIblkZjlrqHmoLjlkI7or7fliLfmlrDliJfooagnCiAgICAgICAgfSk7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIHRoaXMuJHByb21wdCgn6K+36L6T5YWl55m75b2V5a+G56CBJywgJ+mJtOWIq+aTjeS9nCcsIHsKICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogJ+ehruWumicsCiAgICAgICAgY2FuY2VsQnV0dG9uVGV4dDogJ+WPlua2iCcsCiAgICAgICAgaW5wdXRUeXBlOiAncGFzc3dvcmQnLAogICAgICAgIC8vIGN1c3RvbUNsYXNzOiduby1hdXRvZmlsbC1wd2QnLAogICAgICAgIGlucHV0VmFsaWRhdG9yOiBmdW5jdGlvbiBpbnB1dFZhbGlkYXRvcih2YWwpIHsKICAgICAgICAgIGlmICh2YWwgPT09IG51bGwgfHwgdmFsLmxlbmd0aCA8IDEgfHwgdmFsLmxlbmd0aCA+IDIwKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIGlucHV0RXJyb3JNZXNzYWdlOiAn5LiN6IO95Li656m6LOacgOWkmuWPr+W9leWFpTIw5Liq5a2X56ymJywKICAgICAgICBiZWZvcmVDbG9zZTogZnVuY3Rpb24gYmVmb3JlQ2xvc2UoYWN0aW9uLCBpbnN0YW5jZSwgZG9uZSkgewogICAgICAgICAgaWYgKGFjdGlvbiA9PT0gImNvbmZpcm0iKSB7CiAgICAgICAgICAgIGluc3RhbmNlLiRyZWZzWyJjb25maXJtIl0uJGVsLm9uY2xpY2sgPSBmdW5jdGlvbiAoZSkgewogICAgICAgICAgICAgIGUgPSBlIHx8IHdpbmRvdy5ldmVudDsKICAgICAgICAgICAgICBpZiAoZS5kZXRhaWwgIT0gMCkgewogICAgICAgICAgICAgICAgZG9uZSgpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSgpOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgZG9uZSgpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfSkudGhlbiggLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHsKICAgICAgICB2YXIgX3JlZjMgPSAoMCwgX2FzeW5jVG9HZW5lcmF0b3IyLmRlZmF1bHQpKCAvKiNfX1BVUkVfXyovKDAsIF9yZWdlbmVyYXRvclJ1bnRpbWUyLmRlZmF1bHQpKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlMihfcmVmMikgewogICAgICAgICAgdmFyIHZhbHVlOwogICAgICAgICAgcmV0dXJuICgwLCBfcmVnZW5lcmF0b3JSdW50aW1lMi5kZWZhdWx0KSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTIkKF9jb250ZXh0MikgewogICAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDIucHJldiA9IF9jb250ZXh0Mi5uZXh0KSB7CiAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgdmFsdWUgPSBfcmVmMi52YWx1ZTsKICAgICAgICAgICAgICAgIF90aGlzMy5kb0xvZ29mZihfc2VsZWN0RGF0YSwgdmFsdWUpOwogICAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Mi5zdG9wKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0sIF9jYWxsZWUyKTsKICAgICAgICB9KSk7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChfeCkgewogICAgICAgICAgcmV0dXJuIF9yZWYzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgICAgfTsKICAgICAgfSgpKS5jYXRjaChmdW5jdGlvbiAoZSkge30pOwogICAgfSwKICAgIC8qKg0KICAgICAqIOazqOmUgOaPkOS6pA0KICAgICAqLwogICAgZG9Mb2dvZmY6ICgwLCBfbG9kYXNoLmRlYm91bmNlKSggLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHsKICAgICAgdmFyIF9yZWY0ID0gKDAsIF9hc3luY1RvR2VuZXJhdG9yMi5kZWZhdWx0KSggLyojX19QVVJFX18qLygwLCBfcmVnZW5lcmF0b3JSdW50aW1lMi5kZWZhdWx0KSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTMoX3NlbGVjdERhdGEsIGFnYWluUHdkKSB7CiAgICAgICAgdmFyIF90aGlzNCA9IHRoaXM7CiAgICAgICAgdmFyIHN5c1RpbWUsIGxrLCBwYXJhbTsKICAgICAgICByZXR1cm4gKDAsIF9yZWdlbmVyYXRvclJ1bnRpbWUyLmRlZmF1bHQpKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlMyQoX2NvbnRleHQzKSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDMucHJldiA9IF9jb250ZXh0My5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBfY29udGV4dDMubmV4dCA9IDI7CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuJGF4aW9zLmdldCgnL3N5c1BvbGljeUNvbnRyb2xsZXIvZ2V0TGljZW5zZUtleScpLnRoZW4oZnVuY3Rpb24gKHJlcykgewogICAgICAgICAgICAgICAgc3lzVGltZSA9IHJlcy5kYXRhLnN5c1RpbWU7CiAgICAgICAgICAgICAgICBsayA9IHJlcy5kYXRhLmxrOwogICAgICAgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge30pOwogICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgcGFyYW0gPSB7CiAgICAgICAgICAgICAgICBpZDogX3NlbGVjdERhdGEuaWQsCiAgICAgICAgICAgICAgICBhZ2FpblB3ZDogYWdhaW5Qd2QsCiAgICAgICAgICAgICAgICBzeXNUaW1lOiBzeXNUaW1lLAogICAgICAgICAgICAgICAgbGs6IGxrCiAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICBfY29udGV4dDMubmV4dCA9IDU7CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuJGF4aW9zLnBvc3QoJy9zeXNVc2VyQ29udHJvbGxlci9sb2dPZmZVc2VyJywgcGFyYW0pLnRoZW4oZnVuY3Rpb24gKHJlcykgewogICAgICAgICAgICAgICAgaWYgKHJlcy5jb2RlID09IDApIHsKICAgICAgICAgICAgICAgICAgX3RoaXM0LiRtZXNzYWdlKHsKICAgICAgICAgICAgICAgICAgICB0eXBlOiAnc3VjY2VzcycsCiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogcmVzLmRhdGEKICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgIF90aGlzNC5nZXRMaXN0KCk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICBfdGhpczQuJG1lc3NhZ2UoewogICAgICAgICAgICAgICAgICAgIHR5cGU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogcmVzLmRhdGEKICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7CiAgICAgICAgICAgICAgICBfdGhpczQuJG1lc3NhZ2UoewogICAgICAgICAgICAgICAgICB0eXBlOiAnZXJyb3InLAogICAgICAgICAgICAgICAgICBtZXNzYWdlOiAn5Yig6Zmk5aSx6LSlIScKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgX3RoaXM0LmxvYWRpbmcgPSBmYWxzZTsKICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgY2FzZSA1OgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDMuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWUzLCB0aGlzKTsKICAgICAgfSkpOwogICAgICByZXR1cm4gZnVuY3Rpb24gKF94MiwgX3gzKSB7CiAgICAgICAgcmV0dXJuIF9yZWY0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgIH07CiAgICB9KCksIDUwMCksCiAgICAvLyDliJfooajnirbmgIHmoLzlvI/ljJYKICAgIHN0YXR1c0Zvcm1hdDogZnVuY3Rpb24gc3RhdHVzRm9ybWF0KF9yZWY1KSB7CiAgICAgIHZhciBjZWxsVmFsdWUgPSBfcmVmNS5jZWxsVmFsdWU7CiAgICAgIHZhciBiZWxvbmdUbyA9ICfmnKrnn6XnmoTnsbvlnosnOwogICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuc3RhdHVzT3B0aW9ucy5sZW5ndGg7IGkrKykgewogICAgICAgIGlmIChjZWxsVmFsdWUgPT0gIjAiKSB7CiAgICAgICAgICBiZWxvbmdUbyA9ICLmraPluLgiOwogICAgICAgIH0gZWxzZSBpZiAoY2VsbFZhbHVlID09ICIxIikgewogICAgICAgICAgYmVsb25nVG8gPSAi6ZSB5a6aIjsKICAgICAgICB9IGVsc2UgaWYgKGNlbGxWYWx1ZSA9PSAiMiIpIHsKICAgICAgICAgIGJlbG9uZ1RvID0gIuazqOmUgCI7CiAgICAgICAgfQogICAgICB9CiAgICAgIHJldHVybiBiZWxvbmdUbzsKICAgIH0sCiAgICAvLyDliJfooajnirbmgIHmoLzlvI/ljJYKICAgIHNmc2g6IGZ1bmN0aW9uIHNmc2goX3JlZjYpIHsKICAgICAgdmFyIGNlbGxWYWx1ZSA9IF9yZWY2LmNlbGxWYWx1ZTsKICAgICAgdmFyIGJlbG9uZ1RvID0gJ+WQpic7CiAgICAgIGlmIChjZWxsVmFsdWUgPT0gIjEiKSB7CiAgICAgICAgYmVsb25nVG8gPSAi5pivIjsKICAgICAgfQogICAgICByZXR1cm4gYmVsb25nVG87CiAgICB9LAogICAgLy8g5YiX6KGo54q25oCB5qC85byP5YyWCiAgICB0eXBlRm9ybWF0OiBmdW5jdGlvbiB0eXBlRm9ybWF0KF9yZWY3KSB7CiAgICAgIHZhciBjZWxsVmFsdWUgPSBfcmVmNy5jZWxsVmFsdWU7CiAgICAgIHZhciBiZWxvbmdUbyA9ICfmnKrnn6XnmoTnsbvlnosnOwogICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMudHlwZU9wdGlvbnMubGVuZ3RoOyBpKyspIHsKICAgICAgICBpZiAoY2VsbFZhbHVlID09ICIwIikgewogICAgICAgICAgYmVsb25nVG8gPSAi566h55CG5ZGYIjsKICAgICAgICB9IGVsc2UgaWYgKGNlbGxWYWx1ZSA9PSAiMSIpIHsKICAgICAgICAgIGJlbG9uZ1RvID0gIuS4muWKoeeUqOaItyI7CiAgICAgICAgfQogICAgICB9CiAgICAgIHJldHVybiBiZWxvbmdUbzsKICAgIH0sCiAgICAvKiog5pCc57Si5oyJ6ZKu5pON5L2cICovCiAgICBoYW5kbGVRdWVyeTogKDAsIF9sb2Rhc2guZGVib3VuY2UpKGZ1bmN0aW9uICgpIHsKICAgICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7CiAgICAgIHRoaXMucGFnZVNpemUgPSAxMDsKICAgICAgdGhpcy5nZXRMaXN0KCk7CiAgICB9LCAxMDAwKSwKICAgIC8qKiDmn6Xor6LnlKjmiLfliJfooaggKi9nZXRMaXN0OiBmdW5jdGlvbiBnZXRMaXN0KCkgewogICAgICB2YXIgX3RoaXM1ID0gdGhpczsKICAgICAgcmV0dXJuICgwLCBfYXN5bmNUb0dlbmVyYXRvcjIuZGVmYXVsdCkoIC8qI19fUFVSRV9fKi8oMCwgX3JlZ2VuZXJhdG9yUnVudGltZTIuZGVmYXVsdCkoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU0KCkgewogICAgICAgIHZhciBzeXNUaW1lLCBsaywgc2VhcmNoUGFyYW1zOwogICAgICAgIHJldHVybiAoMCwgX3JlZ2VuZXJhdG9yUnVudGltZTIuZGVmYXVsdCkoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWU0JChfY29udGV4dDQpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0NC5wcmV2ID0gX2NvbnRleHQ0Lm5leHQpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIF90aGlzNS5sb2FkaW5nID0gdHJ1ZTsKICAgICAgICAgICAgICBfY29udGV4dDQubmV4dCA9IDM7CiAgICAgICAgICAgICAgcmV0dXJuIF90aGlzNS4kYXhpb3MuZ2V0KCcvc3lzUG9saWN5Q29udHJvbGxlci9nZXRMaWNlbnNlS2V5JykudGhlbihmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgICAgICAgICBzeXNUaW1lID0gcmVzLmRhdGEuc3lzVGltZTsKICAgICAgICAgICAgICAgIGxrID0gcmVzLmRhdGEubGs7CiAgICAgICAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7CiAgICAgICAgICAgICAgICBfdGhpczUubG9hZGluZyA9IGZhbHNlOwogICAgICAgICAgICAgIH0pOwogICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgc2VhcmNoUGFyYW1zID0gewogICAgICAgICAgICAgICAgY3VycmVudFBhZ2U6IF90aGlzNS5jdXJyZW50UGFnZSwKICAgICAgICAgICAgICAgIHBhZ2VTaXplOiBfdGhpczUucGFnZVNpemUsCiAgICAgICAgICAgICAgICB1c2VybmFtZTogX3RoaXM1LnF1ZXJ5UGFyYW1zLnVzZXJuYW1lLAogICAgICAgICAgICAgICAgcGhvbmVudW1iZXI6IF90aGlzNS5xdWVyeVBhcmFtcy5waG9uZW51bWJlciwKICAgICAgICAgICAgICAgIHN0YXR1czogX3RoaXM1LnF1ZXJ5UGFyYW1zLnN0YXR1cywKICAgICAgICAgICAgICAgIHN5c1RpbWU6IHN5c1RpbWUsCiAgICAgICAgICAgICAgICBsazogbGsKICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgIF9jb250ZXh0NC5uZXh0ID0gNjsKICAgICAgICAgICAgICByZXR1cm4gX3RoaXM1LiRheGlvcy5nZXQoJy9zeXNVc2VyQ29udHJvbGxlci9nZXRBbGwnLCB7CiAgICAgICAgICAgICAgICBwYXJhbXM6IHNlYXJjaFBhcmFtcwogICAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlcykgewogICAgICAgICAgICAgICAgX3RoaXM1LnVzZXJMaXN0ID0gcmVzLmRhdGE7CiAgICAgICAgICAgICAgICBfdGhpczUudG90YWwgPSByZXMuZGF0YS5sZW5ndGg7CiAgICAgICAgICAgICAgICBpZiAocmVzLmRhdGEucmVjb3JkcyA9PSAnJykgewogICAgICAgICAgICAgICAgICBfdGhpczUuc2hvd1RhYmxlID0gZmFsc2U7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICBfdGhpczUuc2hvd1RhYmxlID0gdHJ1ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF90aGlzNS5sb2FkaW5nID0gZmFsc2U7CiAgICAgICAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7CiAgICAgICAgICAgICAgICBfdGhpczUubG9hZGluZyA9IGZhbHNlOwogICAgICAgICAgICAgICAgLy8gdGhpcy4kbWVzc2FnZS5lcnJvcihlcnJvcikKICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgY2FzZSA2OgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDQuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWU0KTsKICAgICAgfSkpKCk7CiAgICB9LAogICAgLy8g55So5oi354q25oCB5L+u5pS5CiAgICBoYW5kbGVTdGF0dXNDaGFuZ2U6IGZ1bmN0aW9uIGhhbmRsZVN0YXR1c0NoYW5nZShyb3cpIHsKICAgICAgdmFyIF90aGlzNiA9IHRoaXM7CiAgICAgIHZhciB0ZXh0ID0gcm93LnN0YXR1cyA9PT0gIjAiID8gIuWQr+eUqCIgOiAi5YGc55SoIjsKICAgICAgdGhpcy4kbW9kYWwuY29uZmlybSgn56Gu6K6k6KaBIicgKyB0ZXh0ICsgJyIiJyArIHJvdy51c2VyTmFtZSArICci55So5oi35ZCX77yfJykudGhlbihmdW5jdGlvbiAoKSB7CiAgICAgICAgcmV0dXJuIGNoYW5nZVVzZXJTdGF0dXMocm93LnVzZXJJZCwgcm93LnN0YXR1cyk7CiAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgewogICAgICAgIF90aGlzNi4kbW9kYWwubXNnU3VjY2Vzcyh0ZXh0ICsgIuaIkOWKnyIpOwogICAgICB9KS5jYXRjaChmdW5jdGlvbiAoKSB7CiAgICAgICAgcm93LnN0YXR1cyA9IHJvdy5zdGF0dXMgPT09ICIwIiA/ICIxIiA6ICIwIjsKICAgICAgfSk7CiAgICB9LAogICAgLy8g5Y+W5raI5oyJ6ZKuCiAgICBjYW5jZWw6IGZ1bmN0aW9uIGNhbmNlbCgpIHsKICAgICAgdGhpcy5nZXRMaXN0KCk7CiAgICAgIHRoaXMub3BlbiA9IGZhbHNlOwogICAgICB0aGlzLnJlc2V0KCk7CiAgICB9LAogICAgLy8g6KeS6Imy5Y+W5raI5oyJ6ZKuCiAgICBqc2NhbmNlbDogZnVuY3Rpb24ganNjYW5jZWwoKSB7CiAgICAgIHRoaXMuanNvcGVuID0gZmFsc2U7CiAgICAgIHRoaXMudXNlclJvbGVJZCA9ICcnOwogICAgICB0aGlzLm1lbnVPcHRpb25zID0gW107CiAgICB9LAogICAgLy8g6KGo5Y2V6YeN572uCiAgICByZXNldDogZnVuY3Rpb24gcmVzZXQoKSB7CiAgICAgIHRoaXMuZWRpdCA9IGZhbHNlOwogICAgICB0aGlzLmZvcm0gPSB7CiAgICAgICAgaWQ6IHVuZGVmaW5lZCwKICAgICAgICB1c2VybmFtZTogdW5kZWZpbmVkLAogICAgICAgIG5pY2tuYW1lOiB1bmRlZmluZWQsCiAgICAgICAgaWRjYXJkOiB1bmRlZmluZWQsCiAgICAgICAgcGhvbmVudW1iZXI6IHVuZGVmaW5lZCwKICAgICAgICBtYWlsYm94OiB1bmRlZmluZWQsCiAgICAgICAgc3RhdHVzOiAiMCIsCiAgICAgICAgdXNlcnR5cGU6ICIwIiwKICAgICAgICByZW1hcms6IHVuZGVmaW5lZCwKICAgICAgICBleHBEYXRlOiB1bmRlZmluZWQKICAgICAgfTsKICAgICAgaWYgKHRoaXMuJHJlZnNbImZvcm0iXSkgewogICAgICAgIHRoaXMuJHJlZnNbImZvcm0iXS5jbGVhclZhbGlkYXRlKCk7CiAgICAgIH0KICAgIH0sCiAgICAvKiog6YeN572u5oyJ6ZKu5pON5L2cICovcmVzZXRRdWVyeTogZnVuY3Rpb24gcmVzZXRRdWVyeSgpIHsKICAgICAgdGhpcy5yZXNldEZvcm0oInF1ZXJ5Rm9ybSIpOwogICAgfSwKICAgIC8qKiDmlrDlop7mjInpkq7mk43kvZwgKi9oYW5kbGVBZGQ6IGZ1bmN0aW9uIGhhbmRsZUFkZCgpIHsKICAgICAgdGhpcy5yZXNldCgpOwogICAgICB0aGlzLmVkaXQgPSBmYWxzZTsKICAgICAgdGhpcy5vcGVuID0gdHJ1ZTsKICAgICAgdGhpcy50aXRsZSA9ICLmt7vliqDnlKjmiLciOwogICAgICB0aGlzLmZvcm0ucGFzc3dvcmQgPSB0aGlzLmluaXRQYXNzd29yZDsKICAgIH0sCiAgICAvKiog5o+Q5Lqk5oyJ6ZKuICovCiAgICBzdWJtaXRGb3JtOiAoMCwgX2xvZGFzaC5kZWJvdW5jZSkoZnVuY3Rpb24gKCkgewogICAgICB2YXIgX3RoaXM3ID0gdGhpczsKICAgICAgdGhpcy4kcmVmc1siZm9ybSJdLnZhbGlkYXRlKCAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkgewogICAgICAgIHZhciBfcmVmOCA9ICgwLCBfYXN5bmNUb0dlbmVyYXRvcjIuZGVmYXVsdCkoIC8qI19fUFVSRV9fKi8oMCwgX3JlZ2VuZXJhdG9yUnVudGltZTIuZGVmYXVsdCkoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU3KHZhbGlkKSB7CiAgICAgICAgICByZXR1cm4gKDAsIF9yZWdlbmVyYXRvclJ1bnRpbWUyLmRlZmF1bHQpKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlNyQoX2NvbnRleHQ3KSB7CiAgICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0Ny5wcmV2ID0gX2NvbnRleHQ3Lm5leHQpIHsKICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICBpZiAodmFsaWQpIHsKICAgICAgICAgICAgICAgICAgaWYgKF90aGlzNy5mb3JtLmlkICE9IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgICAgIF90aGlzNy4kcHJvbXB0KCfor7fovpPlhaXnmbvlvZXlr4bnoIEnLCAn6Ym05Yir5pON5L2cJywgewogICAgICAgICAgICAgICAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6ICfnoa7lrponLAogICAgICAgICAgICAgICAgICAgICAgY2FuY2VsQnV0dG9uVGV4dDogJ+WPlua2iCcsCiAgICAgICAgICAgICAgICAgICAgICBpbnB1dFR5cGU6ICdwYXNzd29yZCcsCiAgICAgICAgICAgICAgICAgICAgICAvLyBjdXN0b21DbGFzczonbm8tYXV0b2ZpbGwtcHdkJywKICAgICAgICAgICAgICAgICAgICAgIGlucHV0VmFsaWRhdG9yOiBmdW5jdGlvbiBpbnB1dFZhbGlkYXRvcih2YWwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbCA9PT0gbnVsbCB8fCB2YWwubGVuZ3RoIDwgMSB8fCB2YWwubGVuZ3RoID4gMjApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICBpbnB1dEVycm9yTWVzc2FnZTogJ+S4jeiDveS4uuepuizmnIDlpJrlj6/lvZXlhaUyMOS4quWtl+espicsCiAgICAgICAgICAgICAgICAgICAgICBiZWZvcmVDbG9zZTogZnVuY3Rpb24gYmVmb3JlQ2xvc2UoYWN0aW9uLCBpbnN0YW5jZSwgZG9uZSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWN0aW9uID09PSAiY29uZmlybSIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS4kcmVmc1siY29uZmlybSJdLiRlbC5vbmNsaWNrID0gZnVuY3Rpb24gKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSBlIHx8IHdpbmRvdy5ldmVudDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlLmRldGFpbCAhPSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICB9KCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgZG9uZSgpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSkudGhlbiggLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgIHZhciBfcmVmMTAgPSAoMCwgX2FzeW5jVG9HZW5lcmF0b3IyLmRlZmF1bHQpKCAvKiNfX1BVUkVfXyovKDAsIF9yZWdlbmVyYXRvclJ1bnRpbWUyLmRlZmF1bHQpKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlNShfcmVmOSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdmFsdWUsIHN5c1RpbWUsIGxrOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKDAsIF9yZWdlbmVyYXRvclJ1bnRpbWUyLmRlZmF1bHQpKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlNSQoX2NvbnRleHQ1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQ1LnByZXYgPSBfY29udGV4dDUubmV4dCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IF9yZWY5LnZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfY29udGV4dDUubmV4dCA9IDM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfdGhpczcuJGF4aW9zLmdldCgnL3N5c1BvbGljeUNvbnRyb2xsZXIvZ2V0TGljZW5zZUtleScpLnRoZW4oZnVuY3Rpb24gKHJlcykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5c1RpbWUgPSByZXMuZGF0YS5zeXNUaW1lOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxrID0gcmVzLmRhdGEubGs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge30pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdGhpczcuZm9ybS5zeXNUaW1lID0gc3lzVGltZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXM3LmZvcm0ubGsgPSBsazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXM3LmZvcm0uYWdhaW5Qd2QgPSB2YWx1ZTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOabtOaWsOaTjeS9nAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfY29udGV4dDUubmV4dCA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfdGhpczcuJGF4aW9zLnBvc3QoJy9zeXNVc2VyQ29udHJvbGxlci91cGRhdGVVc2VyJywgX3RoaXM3LmZvcm0pLnRoZW4oZnVuY3Rpb24gKHJlcykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMuY29kZSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdGhpczcuJG1lc3NhZ2Uuc3VjY2VzcyhyZXMuZGF0YSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdGhpczcub3BlbiA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXM3LnJlc2V0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdGhpczcuZ2V0TGlzdCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzLmNvZGUgPT0gMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXM3LiRtZXNzYWdlLmVycm9yKHJlcy5kYXRhKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXM3LmxvYWRpbmcgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcy4kbWVzc2FnZS5lcnJvcihlcnJvcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdGhpczcubG9hZGluZyA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgODoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDUuc3RvcCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwgX2NhbGxlZTUpOwogICAgICAgICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChfeDUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9yZWYxMC5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICB9KCkpLmNhdGNoKGZ1bmN0aW9uIChlKSB7fSk7CiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgX3RoaXM3LiRwcm9tcHQoJ+ivt+i+k+WFpeeZu+W9leWvhueggScsICfpibTliKvmk43kvZwnLCB7CiAgICAgICAgICAgICAgICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogJ+ehruWumicsCiAgICAgICAgICAgICAgICAgICAgICBjYW5jZWxCdXR0b25UZXh0OiAn5Y+W5raIJywKICAgICAgICAgICAgICAgICAgICAgIGlucHV0VHlwZTogJ3Bhc3N3b3JkJywKICAgICAgICAgICAgICAgICAgICAgIC8vIGN1c3RvbUNsYXNzOiduby1hdXRvZmlsbC1wd2QnLAogICAgICAgICAgICAgICAgICAgICAgaW5wdXRWYWxpZGF0b3I6IGZ1bmN0aW9uIGlucHV0VmFsaWRhdG9yKHZhbCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsID09PSBudWxsIHx8IHZhbC5sZW5ndGggPCAxIHx8IHZhbC5sZW5ndGggPiAyMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgIGlucHV0RXJyb3JNZXNzYWdlOiAn5LiN6IO95Li656m6LOacgOWkmuWPr+W9leWFpTIw5Liq5a2X56ymJywKICAgICAgICAgICAgICAgICAgICAgIGJlZm9yZUNsb3NlOiBmdW5jdGlvbiBiZWZvcmVDbG9zZShhY3Rpb24sIGluc3RhbmNlLCBkb25lKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhY3Rpb24gPT09ICJjb25maXJtIikgewogICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLiRyZWZzWyJjb25maXJtIl0uJGVsLm9uY2xpY2sgPSBmdW5jdGlvbiAoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IGUgfHwgd2luZG93LmV2ZW50OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUuZGV0YWlsICE9IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9uZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIH0oKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBkb25lKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KS50aGVuKCAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgdmFyIF9yZWYxMiA9ICgwLCBfYXN5bmNUb0dlbmVyYXRvcjIuZGVmYXVsdCkoIC8qI19fUFVSRV9fKi8oMCwgX3JlZ2VuZXJhdG9yUnVudGltZTIuZGVmYXVsdCkoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU2KF9yZWYxMSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdmFsdWUsIHN5c1RpbWUsIGxrOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKDAsIF9yZWdlbmVyYXRvclJ1bnRpbWUyLmRlZmF1bHQpKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlNiQoX2NvbnRleHQ2KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQ2LnByZXYgPSBfY29udGV4dDYubmV4dCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IF9yZWYxMS52YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2NvbnRleHQ2Lm5leHQgPSAzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3RoaXM3LiRheGlvcy5nZXQoJy9zeXNQb2xpY3lDb250cm9sbGVyL2dldExpY2Vuc2VLZXknKS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXNUaW1lID0gcmVzLmRhdGEuc3lzVGltZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsayA9IHJlcy5kYXRhLmxrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHt9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXM3LmZvcm0uc3lzVGltZSA9IHN5c1RpbWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzNy5mb3JtLmxrID0gbGs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzNy5mb3JtLmFnYWluUHdkID0gdmFsdWU7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDmm7TmlrDmk43kvZwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2NvbnRleHQ2Lm5leHQgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3RoaXM3LiRheGlvcy5wb3N0KCcvc3lzVXNlckNvbnRyb2xsZXIvYWRkVXNlcicsIF90aGlzNy5mb3JtKS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzLmNvZGUgPT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXM3LiRtZXNzYWdlLnN1Y2Nlc3MocmVzLmRhdGEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXM3Lm9wZW4gPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzNy5yZXNldCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXM3LmdldExpc3QoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5jb2RlID09IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzNy4kbWVzc2FnZS5lcnJvcihyZXMuZGF0YSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzNy5sb2FkaW5nID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMuJG1lc3NhZ2UuZXJyb3IoZXJyb3IpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXM3LmxvYWRpbmcgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDg6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ2LnN0b3AoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0sIF9jYWxsZWU2KTsKICAgICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoX3g2KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfcmVmMTIuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgfSgpKS5jYXRjaChmdW5jdGlvbiAoZSkge30pOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ3LnN0b3AoKTsKICAgICAgICAgICAgfQogICAgICAgICAgfSwgX2NhbGxlZTcpOwogICAgICAgIH0pKTsKICAgICAgICByZXR1cm4gZnVuY3Rpb24gKF94NCkgewogICAgICAgICAgcmV0dXJuIF9yZWY4LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgICAgfTsKICAgICAgfSgpKTsKICAgIH0sIDEwMDApLAogICAgLyoqIOmHjee9ruWvhueggeaMiemSruaTjeS9nCAqL2hhbmRsZVJlc2V0UHdkOiBmdW5jdGlvbiBoYW5kbGVSZXNldFB3ZChyb3cpIHsKICAgICAgdmFyIF90aGlzOCA9IHRoaXM7CiAgICAgIGlmIChyb3cuc2lnbnN0ciA9PSAnMScpIHsKICAgICAgICB0aGlzLiRtZXNzYWdlKHsKICAgICAgICAgIHR5cGU6ICd3YXJuaW5nJywKICAgICAgICAgIG1lc3NhZ2U6ICflrZjlnKjlvoXlrqHmoLjvvIzlrqHmoLjnrqHnkIblkZjlrqHmoLjlkI7or7fliLfmlrDliJfooagnCiAgICAgICAgfSk7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIGlmIChyb3cuc3RhdHVzID09ICcyJykgewogICAgICAgIHRoaXMuJG1lc3NhZ2UoewogICAgICAgICAgdHlwZTogJ3dhcm5pbmcnLAogICAgICAgICAgbWVzc2FnZTogJ+W3suazqOmUgOeahOi0puWPt+S4jeiDveWIneWniy/ph43nva7lr4bnoIEhJwogICAgICAgIH0pOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICB0aGlzLiRwcm9tcHQoJ+ivt+i+k+WFpeeZu+W9leWvhueggScsICfpibTliKvmk43kvZwnLCB7CiAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6ICfnoa7lrponLAogICAgICAgIGNhbmNlbEJ1dHRvblRleHQ6ICflj5bmtognLAogICAgICAgIGlucHV0VHlwZTogJ3Bhc3N3b3JkJywKICAgICAgICAvLyBjdXN0b21DbGFzczonbm8tYXV0b2ZpbGwtcHdkJywKICAgICAgICBpbnB1dFZhbGlkYXRvcjogZnVuY3Rpb24gaW5wdXRWYWxpZGF0b3IodmFsKSB7CiAgICAgICAgICBpZiAodmFsID09PSBudWxsIHx8IHZhbC5sZW5ndGggPCAxIHx8IHZhbC5sZW5ndGggPiAyMCkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBpbnB1dEVycm9yTWVzc2FnZTogJ+S4jeiDveS4uuepuizmnIDlpJrlj6/lvZXlhaUyMOS4quWtl+espicsCiAgICAgICAgYmVmb3JlQ2xvc2U6IGZ1bmN0aW9uIGJlZm9yZUNsb3NlKGFjdGlvbiwgaW5zdGFuY2UsIGRvbmUpIHsKICAgICAgICAgIGlmIChhY3Rpb24gPT09ICJjb25maXJtIikgewogICAgICAgICAgICBpbnN0YW5jZS4kcmVmc1siY29uZmlybSJdLiRlbC5vbmNsaWNrID0gZnVuY3Rpb24gKGUpIHsKICAgICAgICAgICAgICBlID0gZSB8fCB3aW5kb3cuZXZlbnQ7CiAgICAgICAgICAgICAgaWYgKGUuZGV0YWlsICE9IDApIHsKICAgICAgICAgICAgICAgIGRvbmUoKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0oKTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGRvbmUoKTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0pLnRoZW4oIC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7CiAgICAgICAgdmFyIF9yZWYxNCA9ICgwLCBfYXN5bmNUb0dlbmVyYXRvcjIuZGVmYXVsdCkoIC8qI19fUFVSRV9fKi8oMCwgX3JlZ2VuZXJhdG9yUnVudGltZTIuZGVmYXVsdCkoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU4KF9yZWYxMykgewogICAgICAgICAgdmFyIHZhbHVlOwogICAgICAgICAgcmV0dXJuICgwLCBfcmVnZW5lcmF0b3JSdW50aW1lMi5kZWZhdWx0KSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTgkKF9jb250ZXh0OCkgewogICAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDgucHJldiA9IF9jb250ZXh0OC5uZXh0KSB7CiAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgdmFsdWUgPSBfcmVmMTMudmFsdWU7CiAgICAgICAgICAgICAgICBfdGhpczguZG9SZXNldFB3ZChyb3csIHZhbHVlKTsKICAgICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDguc3RvcCgpOwogICAgICAgICAgICB9CiAgICAgICAgICB9LCBfY2FsbGVlOCk7CiAgICAgICAgfSkpOwogICAgICAgIHJldHVybiBmdW5jdGlvbiAoX3g3KSB7CiAgICAgICAgICByZXR1cm4gX3JlZjE0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgICAgfTsKICAgICAgfSgpKS5jYXRjaChmdW5jdGlvbiAoZSkge30pOwogICAgfSwKICAgIGRvUmVzZXRQd2Q6ICgwLCBfbG9kYXNoLmRlYm91bmNlKSggLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHsKICAgICAgdmFyIF9yZWYxNSA9ICgwLCBfYXN5bmNUb0dlbmVyYXRvcjIuZGVmYXVsdCkoIC8qI19fUFVSRV9fKi8oMCwgX3JlZ2VuZXJhdG9yUnVudGltZTIuZGVmYXVsdCkoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU5KHJvdywgYWdhaW5Qd2QpIHsKICAgICAgICB2YXIgX3RoaXM5ID0gdGhpczsKICAgICAgICB2YXIgc3lzVGltZSwgbGssIHBhcmFtOwogICAgICAgIHJldHVybiAoMCwgX3JlZ2VuZXJhdG9yUnVudGltZTIuZGVmYXVsdCkoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWU5JChfY29udGV4dDkpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0OS5wcmV2ID0gX2NvbnRleHQ5Lm5leHQpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIF9jb250ZXh0OS5uZXh0ID0gMjsKICAgICAgICAgICAgICByZXR1cm4gdGhpcy4kYXhpb3MuZ2V0KCcvc3lzUG9saWN5Q29udHJvbGxlci9nZXRMaWNlbnNlS2V5JykudGhlbihmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgICAgICAgICBzeXNUaW1lID0gcmVzLmRhdGEuc3lzVGltZTsKICAgICAgICAgICAgICAgIGxrID0gcmVzLmRhdGEubGs7CiAgICAgICAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7fSk7CiAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICBwYXJhbSA9IHsKICAgICAgICAgICAgICAgIGlkOiByb3cuaWQsCiAgICAgICAgICAgICAgICBhZ2FpblB3ZDogYWdhaW5Qd2QsCiAgICAgICAgICAgICAgICBzeXNUaW1lOiBzeXNUaW1lLAogICAgICAgICAgICAgICAgbGs6IGxrCiAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICBfY29udGV4dDkubmV4dCA9IDU7CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuJGF4aW9zLnBvc3QoJy9zeXNVc2VyQ29udHJvbGxlci9yZXNldFBhc3N3b3JkJywgcGFyYW0pLnRoZW4oZnVuY3Rpb24gKHJlcykgewogICAgICAgICAgICAgICAgaWYgKHJlcy5jb2RlID09IDApIHsKICAgICAgICAgICAgICAgICAgX3RoaXM5LiRtZXNzYWdlKHsKICAgICAgICAgICAgICAgICAgICB0eXBlOiAnc3VjY2VzcycsCiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJ+WIm+W7uuW5tuWPkemAgeaIkOWKnyEnCiAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgX3RoaXM5LiRtZXNzYWdlKHsKICAgICAgICAgICAgICAgICAgICB0eXBlOiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHJlcy5kYXRhCiAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikgewogICAgICAgICAgICAgICAgX3RoaXM5LiRtZXNzYWdlKHsKICAgICAgICAgICAgICAgICAgdHlwZTogJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJ+WIm+W7uuWvhueggeWksei0pSEnCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIF90aGlzOS5sb2FkaW5nID0gZmFsc2U7CiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGNhc2UgNToKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ5LnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlOSwgdGhpcyk7CiAgICAgIH0pKTsKICAgICAgcmV0dXJuIGZ1bmN0aW9uIChfeDgsIF94OSkgewogICAgICAgIHJldHVybiBfcmVmMTUuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgICAgfTsKICAgIH0oKSwgMTAwMCksCiAgICAvKiog5Yig6Zmk5oyJ6ZKu5pON5L2cICovaGFuZGxlRGVsZXRlOiBmdW5jdGlvbiBoYW5kbGVEZWxldGUoKSB7CiAgICAgIHZhciBfdGhpczEwID0gdGhpczsKICAgICAgdmFyIF9zZWxlY3REYXRhID0gdGhpcy4kcmVmcy51c2VyVGFibGUuZ2V0UmFkaW9SZWNvcmQodHJ1ZSk7CiAgICAgIGlmIChfc2VsZWN0RGF0YSA9PSBudWxsKSB7CiAgICAgICAgdGhpcy4kbWVzc2FnZSh7CiAgICAgICAgICB0eXBlOiAnd2FybmluZycsCiAgICAgICAgICBtZXNzYWdlOiAn6K+36YCJ5oup6K6w5b2VIScKICAgICAgICB9KTsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgaWYgKF9zZWxlY3REYXRhLmlkID09IDEpIHsKICAgICAgICB0aGlzLiRtZXNzYWdlKHsKICAgICAgICAgIHR5cGU6ICd3YXJuaW5nJywKICAgICAgICAgIG1lc3NhZ2U6ICflhoXnva7ns7vnu5/nrqHnkIblkZjkuI3og73liKDpmaQhJwogICAgICAgIH0pOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICBpZiAoX3NlbGVjdERhdGEuaWQgPT0gMikgewogICAgICAgIHRoaXMuJG1lc3NhZ2UoewogICAgICAgICAgdHlwZTogJ3dhcm5pbmcnLAogICAgICAgICAgbWVzc2FnZTogJ+WGhee9ruWuoeiuoeeuoeeQhuWRmOS4jeiDveWIoOmZpCEnCiAgICAgICAgfSk7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIGlmIChfc2VsZWN0RGF0YS5pZCA9PSAyNCkgewogICAgICAgIHRoaXMuJG1lc3NhZ2UoewogICAgICAgICAgdHlwZTogJ3dhcm5pbmcnLAogICAgICAgICAgbWVzc2FnZTogJ+WGhee9ruWuoeaguOeuoeeQhuWRmOS4jeiDveWIoOmZpCEnCiAgICAgICAgfSk7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIHRoaXMuJHByb21wdCgn6K+36L6T5YWl5a+G56CBJywgJ+mJtOWIq+aTjeS9nCcsIHsKICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogJ+ehruWumicsCiAgICAgICAgY2FuY2VsQnV0dG9uVGV4dDogJ+WPlua2iCcsCiAgICAgICAgaW5wdXRUeXBlOiAncGFzc3dvcmQnLAogICAgICAgIC8vIGN1c3RvbUNsYXNzOiduby1hdXRvZmlsbC1wd2QnLAogICAgICAgIGlucHV0VmFsaWRhdG9yOiBmdW5jdGlvbiBpbnB1dFZhbGlkYXRvcih2YWwpIHsKICAgICAgICAgIGlmICh2YWwgPT09IG51bGwgfHwgdmFsLmxlbmd0aCA8IDEgfHwgdmFsLmxlbmd0aCA+IDIwKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIGlucHV0RXJyb3JNZXNzYWdlOiAn5LiN6IO95Li656m6LOacgOWkmuWPr+W9leWFpTIw5Liq5a2X56ymJywKICAgICAgICBiZWZvcmVDbG9zZTogZnVuY3Rpb24gYmVmb3JlQ2xvc2UoYWN0aW9uLCBpbnN0YW5jZSwgZG9uZSkgewogICAgICAgICAgaWYgKGFjdGlvbiA9PT0gImNvbmZpcm0iKSB7CiAgICAgICAgICAgIGluc3RhbmNlLiRyZWZzWyJjb25maXJtIl0uJGVsLm9uY2xpY2sgPSBmdW5jdGlvbiAoZSkgewogICAgICAgICAgICAgIGUgPSBlIHx8IHdpbmRvdy5ldmVudDsKICAgICAgICAgICAgICBpZiAoZS5kZXRhaWwgIT0gMCkgewogICAgICAgICAgICAgICAgZG9uZSgpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSgpOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgZG9uZSgpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfSkudGhlbiggLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHsKICAgICAgICB2YXIgX3JlZjE3ID0gKDAsIF9hc3luY1RvR2VuZXJhdG9yMi5kZWZhdWx0KSggLyojX19QVVJFX18qLygwLCBfcmVnZW5lcmF0b3JSdW50aW1lMi5kZWZhdWx0KSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTEwKF9yZWYxNikgewogICAgICAgICAgdmFyIHZhbHVlOwogICAgICAgICAgcmV0dXJuICgwLCBfcmVnZW5lcmF0b3JSdW50aW1lMi5kZWZhdWx0KSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTEwJChfY29udGV4dDEwKSB7CiAgICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0MTAucHJldiA9IF9jb250ZXh0MTAubmV4dCkgewogICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgIHZhbHVlID0gX3JlZjE2LnZhbHVlOwogICAgICAgICAgICAgICAgX3RoaXMxMC5kb0RlbGV0ZShfc2VsZWN0RGF0YSwgdmFsdWUpOwogICAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0MTAuc3RvcCgpOwogICAgICAgICAgICB9CiAgICAgICAgICB9LCBfY2FsbGVlMTApOwogICAgICAgIH0pKTsKICAgICAgICByZXR1cm4gZnVuY3Rpb24gKF94MTApIHsKICAgICAgICAgIHJldHVybiBfcmVmMTcuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgICAgICB9OwogICAgICB9KCkpLmNhdGNoKGZ1bmN0aW9uIChlKSB7fSk7CiAgICB9LAogICAgLyoqDQogICAgICog5Yig6Zmk5o+Q5LqkDQogICAgICovCiAgICBkb0RlbGV0ZTogKDAsIF9sb2Rhc2guZGVib3VuY2UpKCAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkgewogICAgICB2YXIgX3JlZjE4ID0gKDAsIF9hc3luY1RvR2VuZXJhdG9yMi5kZWZhdWx0KSggLyojX19QVVJFX18qLygwLCBfcmVnZW5lcmF0b3JSdW50aW1lMi5kZWZhdWx0KSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTExKF9zZWxlY3REYXRhLCBhZ2FpblB3ZCkgewogICAgICAgIHZhciBfdGhpczExID0gdGhpczsKICAgICAgICB2YXIgc3lzVGltZSwgbGssIHBhcmFtOwogICAgICAgIHJldHVybiAoMCwgX3JlZ2VuZXJhdG9yUnVudGltZTIuZGVmYXVsdCkoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUxMSQoX2NvbnRleHQxMSkgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQxMS5wcmV2ID0gX2NvbnRleHQxMS5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBfY29udGV4dDExLm5leHQgPSAyOwogICAgICAgICAgICAgIHJldHVybiB0aGlzLiRheGlvcy5nZXQoJy9zeXNQb2xpY3lDb250cm9sbGVyL2dldExpY2Vuc2VLZXknKS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICAgICAgICAgIHN5c1RpbWUgPSByZXMuZGF0YS5zeXNUaW1lOwogICAgICAgICAgICAgICAgbGsgPSByZXMuZGF0YS5sazsKICAgICAgICAgICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHt9KTsKICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgIHBhcmFtID0gewogICAgICAgICAgICAgICAgaWQ6IF9zZWxlY3REYXRhLmlkLAogICAgICAgICAgICAgICAgYWdhaW5Qd2Q6IGFnYWluUHdkLAogICAgICAgICAgICAgICAgc3lzVGltZTogc3lzVGltZSwKICAgICAgICAgICAgICAgIGxrOiBsawogICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgX2NvbnRleHQxMS5uZXh0ID0gNTsKICAgICAgICAgICAgICByZXR1cm4gdGhpcy4kYXhpb3MucG9zdCgnL3N5c1VzZXJDb250cm9sbGVyL2RlbFVzZXInLCBwYXJhbSkudGhlbihmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgICAgICAgICBpZiAocmVzLmNvZGUgPT0gMCkgewogICAgICAgICAgICAgICAgICBfdGhpczExLiRtZXNzYWdlKHsKICAgICAgICAgICAgICAgICAgICB0eXBlOiAnc3VjY2VzcycsCiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogcmVzLmRhdGEKICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgIF90aGlzMTEuZ2V0TGlzdCgpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgX3RoaXMxMS4kbWVzc2FnZSh7CiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiByZXMuZGF0YQogICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHsKICAgICAgICAgICAgICAgIF90aGlzMTEuJG1lc3NhZ2UoewogICAgICAgICAgICAgICAgICB0eXBlOiAnZXJyb3InLAogICAgICAgICAgICAgICAgICBtZXNzYWdlOiAn5Yig6Zmk5aSx6LSlIScKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgX3RoaXMxMS5sb2FkaW5nID0gZmFsc2U7CiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGNhc2UgNToKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQxMS5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTExLCB0aGlzKTsKICAgICAgfSkpOwogICAgICByZXR1cm4gZnVuY3Rpb24gKF94MTEsIF94MTIpIHsKICAgICAgICByZXR1cm4gX3JlZjE4LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgIH07CiAgICB9KCksIDUwMCksCiAgICAvKiog5L+u5pS55oyJ6ZKu5pON5L2cICovaGFuZGxlVXBkYXRlOiBmdW5jdGlvbiBoYW5kbGVVcGRhdGUoKSB7CiAgICAgIHRoaXMucmVzZXQoKTsKICAgICAgdmFyIF9zZWxlY3REYXRhID0gdGhpcy4kcmVmcy51c2VyVGFibGUuZ2V0UmFkaW9SZWNvcmQodHJ1ZSk7CiAgICAgIGlmIChfc2VsZWN0RGF0YSA9PSBudWxsKSB7CiAgICAgICAgdGhpcy4kbWVzc2FnZSh7CiAgICAgICAgICB0eXBlOiAnd2FybmluZycsCiAgICAgICAgICBtZXNzYWdlOiAn6K+36YCJ5oup6K6w5b2VIScKICAgICAgICB9KTsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgaWYgKF9zZWxlY3REYXRhLmlkID09IDEpIHsKICAgICAgICB0aGlzLiRtZXNzYWdlKHsKICAgICAgICAgIHR5cGU6ICd3YXJuaW5nJywKICAgICAgICAgIG1lc3NhZ2U6ICflhoXnva7ns7vnu5/nrqHnkIblkZjkuI3og73kv67mlLkhJwogICAgICAgIH0pOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICBpZiAoX3NlbGVjdERhdGEuaWQgPT0gMikgewogICAgICAgIHRoaXMuJG1lc3NhZ2UoewogICAgICAgICAgdHlwZTogJ3dhcm5pbmcnLAogICAgICAgICAgbWVzc2FnZTogJ+WGhee9ruWuoeiuoeeuoeeQhuWRmOS4jeiDveS/ruaUuSEnCiAgICAgICAgfSk7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIGlmIChfc2VsZWN0RGF0YS5pZCA9PSAyNCkgewogICAgICAgIHRoaXMuJG1lc3NhZ2UoewogICAgICAgICAgdHlwZTogJ3dhcm5pbmcnLAogICAgICAgICAgbWVzc2FnZTogJ+WGhee9ruWuoeaguOeuoeeQhuWRmOS4jeiDveS/ruaUuSEnCiAgICAgICAgfSk7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIGlmIChfc2VsZWN0RGF0YS5zdGF0dXMgPT0gMikgewogICAgICAgIHRoaXMuJG1lc3NhZ2UoewogICAgICAgICAgdHlwZTogJ3dhcm5pbmcnLAogICAgICAgICAgbWVzc2FnZTogJ+azqOmUgOeahOi0puWPt+S4jeiDveaTjeS9nCEnCiAgICAgICAgfSk7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIGlmIChfc2VsZWN0RGF0YS5zaWduc3RyID09ICcxJykgewogICAgICAgIHRoaXMuJG1lc3NhZ2UoewogICAgICAgICAgdHlwZTogJ3dhcm5pbmcnLAogICAgICAgICAgbWVzc2FnZTogJ+WtmOWcqOW+heWuoeaguO+8jOWuoeaguOeuoeeQhuWRmOWuoeaguOWQjuivt+WIt+aWsOWIl+ihqCcKICAgICAgICB9KTsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgdGhpcy5mb3JtID0gX3NlbGVjdERhdGE7CiAgICAgIHRoaXMub3BlbiA9IHRydWU7CiAgICAgIHRoaXMudGl0bGUgPSAi5L+u5pS555So5oi3IjsKICAgICAgdGhpcy5lZGl0ID0gdHJ1ZTsKICAgIH0sCiAgICAvLyDlj5bmtojmjInpkq4KICAgIGxvY2tmb3JtY2FuY2VsOiBmdW5jdGlvbiBsb2NrZm9ybWNhbmNlbCgpIHsKICAgICAgdGhpcy5sb2Nrb3BlbiA9IGZhbHNlOwogICAgICB0aGlzLmxvY2tmb3JtID0ge307CiAgICB9LAogICAgc3VibG9ja2Zvcm06IGZ1bmN0aW9uIHN1YmxvY2tmb3JtKCkgewogICAgICBpZiAodGhpcy5sb2NrZm9ybS5leHBEYXRlID09IG51bGwgfHwgdGhpcy5sb2NrZm9ybS5leHBEYXRlID09IHVuZGVmaW5lZCkgewogICAgICAgIHRoaXMuJG1lc3NhZ2UoewogICAgICAgICAgdHlwZTogJ3dhcm5pbmcnLAogICAgICAgICAgbWVzc2FnZTogJ+ivt+mAieaLqeaIquatouaXpeacnyEnCiAgICAgICAgfSk7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIGlmICh0aGlzLmxvY2tmb3JtLnBhc3N3b3JkID09IG51bGwgfHwgdGhpcy5sb2NrZm9ybS5wYXNzd29yZCA9PSB1bmRlZmluZWQpIHsKICAgICAgICB0aGlzLiRtZXNzYWdlKHsKICAgICAgICAgIHR5cGU6ICd3YXJuaW5nJywKICAgICAgICAgIG1lc3NhZ2U6ICfor7fovpPlhaXnmbvlvZXlr4bnoIEhJwogICAgICAgIH0pOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICB2YXIgX3NlbGVjdERhdGEgPSB0aGlzLiRyZWZzLnVzZXJUYWJsZS5nZXRSYWRpb1JlY29yZCh0cnVlKTsKICAgICAgdGhpcy5kb1JlbG9jayhfc2VsZWN0RGF0YSwgdGhpcy5sb2NrZm9ybS5wYXNzd29yZCwgdGhpcy5sb2NrZm9ybS5leHBEYXRlKTsKICAgIH0sCiAgICAvKiog6Kej6ZSB5oyJ6ZKu5pON5L2cICovaGFuZGxlUmVsb2NrOiBmdW5jdGlvbiBoYW5kbGVSZWxvY2soKSB7CiAgICAgIHZhciBfdGhpczEyID0gdGhpczsKICAgICAgdmFyIF9zZWxlY3REYXRhID0gdGhpcy4kcmVmcy51c2VyVGFibGUuZ2V0UmFkaW9SZWNvcmQodHJ1ZSk7CiAgICAgIGlmIChfc2VsZWN0RGF0YSA9PSBudWxsKSB7CiAgICAgICAgdGhpcy4kbWVzc2FnZSh7CiAgICAgICAgICB0eXBlOiAnd2FybmluZycsCiAgICAgICAgICBtZXNzYWdlOiAn6K+36YCJ5oup6K6w5b2VIScKICAgICAgICB9KTsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgaWYgKF9zZWxlY3REYXRhLnN0YXR1cyA9PSAyKSB7CiAgICAgICAgdGhpcy4kbWVzc2FnZSh7CiAgICAgICAgICB0eXBlOiAnd2FybmluZycsCiAgICAgICAgICBtZXNzYWdlOiAn5rOo6ZSA55qE6LSm5Y+35LiN6IO95pON5L2cIScKICAgICAgICB9KTsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgaWYgKF9zZWxlY3REYXRhLnN0YXR1cyAhPT0gJzEnKSB7CiAgICAgICAgdGhpcy4kbWVzc2FnZSh7CiAgICAgICAgICB0eXBlOiAnd2FybmluZycsCiAgICAgICAgICBtZXNzYWdlOiAn5Y+q6IO95a+544CQ6ZSB5a6a44CR54q25oCB55qE6L+b6KGM6Kej6ZSBIScKICAgICAgICB9KTsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgaWYgKF9zZWxlY3REYXRhLnNpZ25zdHIgPT0gJzEnKSB7CiAgICAgICAgdGhpcy4kbWVzc2FnZSh7CiAgICAgICAgICB0eXBlOiAnd2FybmluZycsCiAgICAgICAgICBtZXNzYWdlOiAn5a2Y5Zyo5b6F5a6h5qC477yM5a6h5qC4566h55CG5ZGY5a6h5qC45ZCO6K+35Yi35paw5YiX6KGoJwogICAgICAgIH0pOwogICAgICAgIHJldHVybjsKICAgICAgfQoKICAgICAgLy8g5Yik5pat5piv5ZCm5Li05pe26LSm5Y+3CiAgICAgIGlmIChfc2VsZWN0RGF0YS5leHBEYXRlKSB7CiAgICAgICAgdGhpcy5sb2Nrb3BlbiA9IHRydWU7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy4kcHJvbXB0KCfor7fovpPlhaXnmbvlvZXlr4bnoIEnLCAn6Ym05Yir5pON5L2cJywgewogICAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6ICfnoa7lrponLAogICAgICAgICAgY2FuY2VsQnV0dG9uVGV4dDogJ+WPlua2iCcsCiAgICAgICAgICBpbnB1dFR5cGU6ICdwYXNzd29yZCcsCiAgICAgICAgICAvLyBjdXN0b21DbGFzczonbm8tYXV0b2ZpbGwtcHdkJywKICAgICAgICAgIGlucHV0VmFsaWRhdG9yOiBmdW5jdGlvbiBpbnB1dFZhbGlkYXRvcih2YWwpIHsKICAgICAgICAgICAgaWYgKHZhbCA9PT0gbnVsbCB8fCB2YWwubGVuZ3RoIDwgMSB8fCB2YWwubGVuZ3RoID4gMjApIHsKICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICBpbnB1dEVycm9yTWVzc2FnZTogJ+S4jeiDveS4uuepuizmnIDlpJrlj6/lvZXlhaUyMOS4quWtl+espicsCiAgICAgICAgICBiZWZvcmVDbG9zZTogZnVuY3Rpb24gYmVmb3JlQ2xvc2UoYWN0aW9uLCBpbnN0YW5jZSwgZG9uZSkgewogICAgICAgICAgICBpZiAoYWN0aW9uID09PSAiY29uZmlybSIpIHsKICAgICAgICAgICAgICBpbnN0YW5jZS4kcmVmc1siY29uZmlybSJdLiRlbC5vbmNsaWNrID0gZnVuY3Rpb24gKGUpIHsKICAgICAgICAgICAgICAgIGUgPSBlIHx8IHdpbmRvdy5ldmVudDsKICAgICAgICAgICAgICAgIGlmIChlLmRldGFpbCAhPSAwKSB7CiAgICAgICAgICAgICAgICAgIGRvbmUoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9KCk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgZG9uZSgpOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfSkudGhlbiggLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHsKICAgICAgICAgIHZhciBfcmVmMjAgPSAoMCwgX2FzeW5jVG9HZW5lcmF0b3IyLmRlZmF1bHQpKCAvKiNfX1BVUkVfXyovKDAsIF9yZWdlbmVyYXRvclJ1bnRpbWUyLmRlZmF1bHQpKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlMTIoX3JlZjE5KSB7CiAgICAgICAgICAgIHZhciB2YWx1ZTsKICAgICAgICAgICAgcmV0dXJuICgwLCBfcmVnZW5lcmF0b3JSdW50aW1lMi5kZWZhdWx0KSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTEyJChfY29udGV4dDEyKSB7CiAgICAgICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQxMi5wcmV2ID0gX2NvbnRleHQxMi5uZXh0KSB7CiAgICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICAgIHZhbHVlID0gX3JlZjE5LnZhbHVlOwogICAgICAgICAgICAgICAgICBfdGhpczEyLmRvUmVsb2NrKF9zZWxlY3REYXRhLCB2YWx1ZSk7CiAgICAgICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQxMi5zdG9wKCk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCBfY2FsbGVlMTIpOwogICAgICAgICAgfSkpOwogICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChfeDEzKSB7CiAgICAgICAgICAgIHJldHVybiBfcmVmMjAuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgICAgICAgIH07CiAgICAgICAgfSgpKS5jYXRjaChmdW5jdGlvbiAoZSkge30pOwogICAgICB9CiAgICB9LAogICAgLyoqDQogICAgICog6Kej6ZSB5o+Q5LqkDQogICAgICovCiAgICBkb1JlbG9jazogKDAsIF9sb2Rhc2guZGVib3VuY2UpKCAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkgewogICAgICB2YXIgX3JlZjIxID0gKDAsIF9hc3luY1RvR2VuZXJhdG9yMi5kZWZhdWx0KSggLyojX19QVVJFX18qLygwLCBfcmVnZW5lcmF0b3JSdW50aW1lMi5kZWZhdWx0KSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTEzKF9zZWxlY3REYXRhLCBhZ2FpblB3ZCwgZXhwRGF0ZSkgewogICAgICAgIHZhciBfdGhpczEzID0gdGhpczsKICAgICAgICB2YXIgc3lzVGltZSwgbGssIHBhcmFtOwogICAgICAgIHJldHVybiAoMCwgX3JlZ2VuZXJhdG9yUnVudGltZTIuZGVmYXVsdCkoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUxMyQoX2NvbnRleHQxMykgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQxMy5wcmV2ID0gX2NvbnRleHQxMy5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBfY29udGV4dDEzLm5leHQgPSAyOwogICAgICAgICAgICAgIHJldHVybiB0aGlzLiRheGlvcy5nZXQoJy9zeXNQb2xpY3lDb250cm9sbGVyL2dldExpY2Vuc2VLZXknKS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICAgICAgICAgIHN5c1RpbWUgPSByZXMuZGF0YS5zeXNUaW1lOwogICAgICAgICAgICAgICAgbGsgPSByZXMuZGF0YS5sazsKICAgICAgICAgICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHt9KTsKICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgIHBhcmFtID0gewogICAgICAgICAgICAgICAgaWQ6IF9zZWxlY3REYXRhLmlkLAogICAgICAgICAgICAgICAgYWdhaW5Qd2Q6IGFnYWluUHdkLAogICAgICAgICAgICAgICAgZXhwRGF0ZTogZXhwRGF0ZSwKICAgICAgICAgICAgICAgIHN5c1RpbWU6IHN5c1RpbWUsCiAgICAgICAgICAgICAgICBsazogbGsKICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgIF9jb250ZXh0MTMubmV4dCA9IDU7CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuJGF4aW9zLnBvc3QoJy9zeXNVc2VyQ29udHJvbGxlci9yZWxvY2tVc2VyJywgcGFyYW0pLnRoZW4oZnVuY3Rpb24gKHJlcykgewogICAgICAgICAgICAgICAgaWYgKHJlcy5jb2RlID09IDApIHsKICAgICAgICAgICAgICAgICAgX3RoaXMxMy4kbWVzc2FnZSh7CiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3N1Y2Nlc3MnLAogICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHJlcy5kYXRhCiAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICBfdGhpczEzLmdldExpc3QoKTsKICAgICAgICAgICAgICAgICAgX3RoaXMxMy5sb2NrZm9ybWNhbmNlbCgpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgX3RoaXMxMy4kbWVzc2FnZSh7CiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiByZXMuZGF0YQogICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHsKICAgICAgICAgICAgICAgIF90aGlzMTMuJG1lc3NhZ2UoewogICAgICAgICAgICAgICAgICB0eXBlOiAnZXJyb3InLAogICAgICAgICAgICAgICAgICBtZXNzYWdlOiAn6Kej6ZSB5aSx6LSlIScKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgX3RoaXMxMy5sb2FkaW5nID0gZmFsc2U7CiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGNhc2UgNToKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQxMy5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTEzLCB0aGlzKTsKICAgICAgfSkpOwogICAgICByZXR1cm4gZnVuY3Rpb24gKF94MTQsIF94MTUsIF94MTYpIHsKICAgICAgICByZXR1cm4gX3JlZjIxLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgIH07CiAgICB9KCksIDEwMDApLAogICAgLyoqDQogICAgICog6KeS6Imy57G75Z6L5pS55Y+Y5pe25pu05pS55p2D6ZmQ5YiX6KGoDQogICAgICogQHBhcmFtIHJvd1JvbGVJZA0KICAgICAqIEByZXR1cm5zIHtQcm9taXNlPHVua25vd24+fQ0KICAgICAqLwogICAgZ2V0TWVudTogZnVuY3Rpb24gZ2V0TWVudShyb3dSb2xlSWQpIHsKICAgICAgdmFyIGEgPSB0aGlzLiRheGlvczsKICAgICAgdmFyIF90aGlzID0gdGhpczsKICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKCAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkgewogICAgICAgIHZhciBfcmVmMjIgPSAoMCwgX2FzeW5jVG9HZW5lcmF0b3IyLmRlZmF1bHQpKCAvKiNfX1BVUkVfXyovKDAsIF9yZWdlbmVyYXRvclJ1bnRpbWUyLmRlZmF1bHQpKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlMTQocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgICAgICB2YXIgc3lzVGltZSwgbGssIHBhcmFtMTsKICAgICAgICAgIHJldHVybiAoMCwgX3JlZ2VuZXJhdG9yUnVudGltZTIuZGVmYXVsdCkoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUxNCQoX2NvbnRleHQxNCkgewogICAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDE0LnByZXYgPSBfY29udGV4dDE0Lm5leHQpIHsKICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICBfY29udGV4dDE0Lm5leHQgPSAyOwogICAgICAgICAgICAgICAgcmV0dXJuIGEuZ2V0KCcvc3lzUG9saWN5Q29udHJvbGxlci9nZXRMaWNlbnNlS2V5JykudGhlbihmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgICAgICAgICAgIHN5c1RpbWUgPSByZXMuZGF0YS5zeXNUaW1lOwogICAgICAgICAgICAgICAgICBsayA9IHJlcy5kYXRhLmxrOwogICAgICAgICAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7fSk7CiAgICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgICAgcGFyYW0xID0gewogICAgICAgICAgICAgICAgICByb2xlSWQ6IHJvd1JvbGVJZCwKICAgICAgICAgICAgICAgICAgc3lzVGltZTogc3lzVGltZSwKICAgICAgICAgICAgICAgICAgbGs6IGxrCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgX2NvbnRleHQxNC5uZXh0ID0gNTsKICAgICAgICAgICAgICAgIHJldHVybiBhLmdldCgnL3N5c01lbnVDb250cm9sbGVyL3JvbGVNZW51VHJlZXNlbGVjdEZvclVzZXInLCB7CiAgICAgICAgICAgICAgICAgIHBhcmFtczogcGFyYW0xCiAgICAgICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICAgICAgICAgICAgX3RoaXMubWVudU9wdGlvbnMgPSByZXMuZGF0YS5tZW51czsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgIGNhc2UgNToKICAgICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0MTQuc3RvcCgpOwogICAgICAgICAgICB9CiAgICAgICAgICB9LCBfY2FsbGVlMTQpOwogICAgICAgIH0pKTsKICAgICAgICByZXR1cm4gZnVuY3Rpb24gKF94MTcsIF94MTgpIHsKICAgICAgICAgIHJldHVybiBfcmVmMjIuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgICAgICB9OwogICAgICB9KCkpLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikgewogICAgICAgIGNvbnNvbGUuZXJyb3IoJ+iOt+WPlueUqOaIt+inkuiJsuWHuumUmScgKyBlcnJvcik7CiAgICAgIH0pOwogICAgfSwKICAgIGdldFVzZXJSb2xlOiBmdW5jdGlvbiBnZXRVc2VyUm9sZSh1c2VyaWQpIHsKICAgICAgdmFyIGEgPSB0aGlzLiRheGlvczsKICAgICAgdmFyIF90aGlzID0gdGhpczsKICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKCAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkgewogICAgICAgIHZhciBfcmVmMjMgPSAoMCwgX2FzeW5jVG9HZW5lcmF0b3IyLmRlZmF1bHQpKCAvKiNfX1BVUkVfXyovKDAsIF9yZWdlbmVyYXRvclJ1bnRpbWUyLmRlZmF1bHQpKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlMTUocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgICAgICB2YXIgc3lzVGltZSwgbGssIHVzZXJSb2xlUGFyYW1zLCBzeXNUaW1lMSwgbGsxLCBwYXJhbTE7CiAgICAgICAgICByZXR1cm4gKDAsIF9yZWdlbmVyYXRvclJ1bnRpbWUyLmRlZmF1bHQpKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlMTUkKF9jb250ZXh0MTUpIHsKICAgICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQxNS5wcmV2ID0gX2NvbnRleHQxNS5uZXh0KSB7CiAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgX2NvbnRleHQxNS5uZXh0ID0gMjsKICAgICAgICAgICAgICAgIHJldHVybiBhLmdldCgnL3N5c1BvbGljeUNvbnRyb2xsZXIvZ2V0TGljZW5zZUtleScpLnRoZW4oZnVuY3Rpb24gKHJlcykgewogICAgICAgICAgICAgICAgICBzeXNUaW1lID0gcmVzLmRhdGEuc3lzVGltZTsKICAgICAgICAgICAgICAgICAgbGsgPSByZXMuZGF0YS5sazsKICAgICAgICAgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge30pOwogICAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICAgIHVzZXJSb2xlUGFyYW1zID0gewogICAgICAgICAgICAgICAgICB1c2VySWQ6IHVzZXJpZCwKICAgICAgICAgICAgICAgICAgc3lzVGltZTogc3lzVGltZSwKICAgICAgICAgICAgICAgICAgbGs6IGxrCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgX2NvbnRleHQxNS5uZXh0ID0gNTsKICAgICAgICAgICAgICAgIHJldHVybiBhLmdldCgnL3N5c1VzZXJDb250cm9sbGVyL2dldFVzZXJSb2xlJywgewogICAgICAgICAgICAgICAgICBwYXJhbXM6IHVzZXJSb2xlUGFyYW1zCiAgICAgICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICAgICAgICAgICAgaWYgKHJlcy5kYXRhID09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgICAgIF90aGlzLnVzZXJSb2xlSWQgPSAnJzsKICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBfdGhpcy51c2VyUm9sZUlkID0gcmVzLmRhdGEucm9sZUlkOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIC8vIOi/lOWbnnVzZXJSb2xl5a+56LGhCiAgICAgICAgICAgICAgICAgIHJlc29sdmUocmVzLmRhdGEpOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgY2FzZSA1OgogICAgICAgICAgICAgICAgX2NvbnRleHQxNS5uZXh0ID0gNzsKICAgICAgICAgICAgICAgIHJldHVybiBhLmdldCgnL3N5c1BvbGljeUNvbnRyb2xsZXIvZ2V0TGljZW5zZUtleScpLnRoZW4oZnVuY3Rpb24gKHJlcykgewogICAgICAgICAgICAgICAgICBzeXNUaW1lMSA9IHJlcy5kYXRhLnN5c1RpbWU7CiAgICAgICAgICAgICAgICAgIGxrMSA9IHJlcy5kYXRhLmxrOwogICAgICAgICAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7fSk7CiAgICAgICAgICAgICAgY2FzZSA3OgogICAgICAgICAgICAgICAgcGFyYW0xID0gewogICAgICAgICAgICAgICAgICByb2xlSWQ6IF90aGlzLnVzZXJSb2xlSWQsCiAgICAgICAgICAgICAgICAgIHN5c1RpbWU6IHN5c1RpbWUxLAogICAgICAgICAgICAgICAgICBsazogbGsxCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgX2NvbnRleHQxNS5uZXh0ID0gMTA7CiAgICAgICAgICAgICAgICByZXR1cm4gYS5nZXQoJy9zeXNNZW51Q29udHJvbGxlci9yb2xlTWVudVRyZWVzZWxlY3RGb3JVc2VyJywgewogICAgICAgICAgICAgICAgICBwYXJhbXM6IHBhcmFtMQogICAgICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgICAgICAgICAgIF90aGlzLm1lbnVPcHRpb25zID0gcmVzLmRhdGEubWVudXM7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICBjYXNlIDEwOgogICAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQxNS5zdG9wKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0sIF9jYWxsZWUxNSk7CiAgICAgICAgfSkpOwogICAgICAgIHJldHVybiBmdW5jdGlvbiAoX3gxOSwgX3gyMCkgewogICAgICAgICAgcmV0dXJuIF9yZWYyMy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAgICAgIH07CiAgICAgIH0oKSkuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7CiAgICAgICAgY29uc29sZS5lcnJvcign6I635Y+W55So5oi36KeS6Imy5Ye66ZSZJyArIGVycm9yKTsKICAgICAgfSk7CiAgICB9LAogICAgZ2V0Um9sZUJ5VHlwZTogZnVuY3Rpb24gZ2V0Um9sZUJ5VHlwZSh1c2VydHlwZSkgewogICAgICB2YXIgX3RoaXMxNSA9IHRoaXM7CiAgICAgIC8vIOagueaNrueUqOaIt+exu+Wei+iOt+WPluinkuiJsuWIl+ihqAogICAgICB2YXIgYSA9IHRoaXMuJGF4aW9zOwogICAgICB2YXIgX3RoaXMgPSB0aGlzOwogICAgICByZXR1cm4gbmV3IFByb21pc2UoIC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7CiAgICAgICAgdmFyIF9yZWYyNCA9ICgwLCBfYXN5bmNUb0dlbmVyYXRvcjIuZGVmYXVsdCkoIC8qI19fUFVSRV9fKi8oMCwgX3JlZ2VuZXJhdG9yUnVudGltZTIuZGVmYXVsdCkoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUxNihyZXNvbHZlLCByZWplY3QpIHsKICAgICAgICAgIHZhciBfdGhpczE0ID0gdGhpczsKICAgICAgICAgIHZhciBzeXNUaW1lLCBsaywgc2VhcmNoUGFyYW1zOwogICAgICAgICAgcmV0dXJuICgwLCBfcmVnZW5lcmF0b3JSdW50aW1lMi5kZWZhdWx0KSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTE2JChfY29udGV4dDE2KSB7CiAgICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0MTYucHJldiA9IF9jb250ZXh0MTYubmV4dCkgewogICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgIF9jb250ZXh0MTYubmV4dCA9IDI7CiAgICAgICAgICAgICAgICByZXR1cm4gYS5nZXQoJy9zeXNQb2xpY3lDb250cm9sbGVyL2dldExpY2Vuc2VLZXknKS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICAgICAgICAgICAgc3lzVGltZSA9IHJlcy5kYXRhLnN5c1RpbWU7CiAgICAgICAgICAgICAgICAgIGxrID0gcmVzLmRhdGEubGs7CiAgICAgICAgICAgICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHt9KTsKICAgICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgICBzZWFyY2hQYXJhbXMgPSB7CiAgICAgICAgICAgICAgICAgIHVzZXJ0eXBlOiB1c2VydHlwZSwKICAgICAgICAgICAgICAgICAgc3lzVGltZTogc3lzVGltZSwKICAgICAgICAgICAgICAgICAgbGs6IGxrCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgX2NvbnRleHQxNi5uZXh0ID0gNTsKICAgICAgICAgICAgICAgIHJldHVybiBhLmdldCgnL3N5c1JvbGVDb250cm9sbGVyL2dldFJvbGVCeVR5cGUnLCB7CiAgICAgICAgICAgICAgICAgIHBhcmFtczogc2VhcmNoUGFyYW1zCiAgICAgICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICAgICAgICAgICAgaWYgKHJlcy5jb2RlID09IDApIHsKICAgICAgICAgICAgICAgICAgICAvLyDov5Tlm57op5LoibLliJfooagKICAgICAgICAgICAgICAgICAgICBfdGhpcy5yb2xlTGlzdCA9IHJlcy5kYXRhOwogICAgICAgICAgICAgICAgICAgIHJlc29sdmUocmVzLmRhdGEpOwogICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIC8vIOi+k+WHuuWQjuerr+i/lOWbnuS/oeaBrwogICAgICAgICAgICAgICAgICAgIF90aGlzMTQuJG1lc3NhZ2UoewogICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHJlcy5kYXRhCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgIGNhc2UgNToKICAgICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0MTYuc3RvcCgpOwogICAgICAgICAgICB9CiAgICAgICAgICB9LCBfY2FsbGVlMTYpOwogICAgICAgIH0pKTsKICAgICAgICByZXR1cm4gZnVuY3Rpb24gKF94MjEsIF94MjIpIHsKICAgICAgICAgIHJldHVybiBfcmVmMjQuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgICAgICB9OwogICAgICB9KCkpLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikgewogICAgICAgIF90aGlzMTUubG9hZGluZyA9IGZhbHNlOwogICAgICAgIF90aGlzMTUuJG1lc3NhZ2UuZXJyb3IoZXJyb3IpOwogICAgICB9KTsKICAgIH0sCiAgICAvKiog5YiG6YWN6KeS6Imy5pON5L2cICovCiAgICBoYW5kbGVBdXRoUm9sZTogKDAsIF9sb2Rhc2guZGVib3VuY2UpKGZ1bmN0aW9uIChyb3cpIHsKICAgICAgaWYgKHRoaXMuc3lzUm9sZS5yb2xlS2V5ID09ICdYVEdMJyAmJiByb3cudXNlcnR5cGUgPT0gJzEnKSB7CiAgICAgICAgLy8g57O757uf566h55CG5ZGY5LiN6IO957uZ5Lia5Yqh55So5oi35YiG6YWN5p2D6ZmQCiAgICAgICAgdGhpcy4kbWVzc2FnZSh7CiAgICAgICAgICB0eXBlOiAnd2FybmluZycsCiAgICAgICAgICBtZXNzYWdlOiAn57O757uf566h55CG5ZGY5LiN6IO957uZ5Lia5Yqh55So5oi35YiG6YWN5p2D6ZmQ77yM6K+35Lia5Yqh566h55CG5ZGY6L+b6KGM5YiG6YWNIScKICAgICAgICB9KTsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgaWYgKHJvdy5pZCA9PSAxKSB7CiAgICAgICAgdGhpcy4kbWVzc2FnZSh7CiAgICAgICAgICB0eXBlOiAnd2FybmluZycsCiAgICAgICAgICBtZXNzYWdlOiAn5YaF572u57O757uf566h55CG5ZGY5LiN6IO95YiG6YWN6KeS6ImyIScKICAgICAgICB9KTsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgaWYgKHJvdy5pZCA9PSAyKSB7CiAgICAgICAgdGhpcy4kbWVzc2FnZSh7CiAgICAgICAgICB0eXBlOiAnd2FybmluZycsCiAgICAgICAgICBtZXNzYWdlOiAn5YaF572u5a6h6K6h566h55CG5ZGY5LiN6IO95YiG6YWN6KeS6ImyIScKICAgICAgICB9KTsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgaWYgKHJvdy5pZCA9PSAyNCkgewogICAgICAgIHRoaXMuJG1lc3NhZ2UoewogICAgICAgICAgdHlwZTogJ3dhcm5pbmcnLAogICAgICAgICAgbWVzc2FnZTogJ+WGhee9ruWuoeaguOeuoeeQhuWRmOS4jeiDveWIhumFjeinkuiJsiEnCiAgICAgICAgfSk7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIGlmIChyb3cuc3RhdHVzID09ICcyJykgewogICAgICAgIHRoaXMuJG1lc3NhZ2UoewogICAgICAgICAgdHlwZTogJ3dhcm5pbmcnLAogICAgICAgICAgbWVzc2FnZTogJ+azqOmUgOeahOi0puWPt+S4jeiDveaTjeS9nCEnCiAgICAgICAgfSk7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIGlmIChyb3cuc2lnbnN0ciA9PSAnMScpIHsKICAgICAgICB0aGlzLiRtZXNzYWdlKHsKICAgICAgICAgIHR5cGU6ICd3YXJuaW5nJywKICAgICAgICAgIG1lc3NhZ2U6ICflrZjlnKjlvoXlrqHmoLjvvIzlrqHmoLjnrqHnkIblkZjlrqHmoLjlkI7or7fliLfmlrDliJfooagnCiAgICAgICAgfSk7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIHRoaXMuanN1c2VyaWQgPSByb3cuaWQ7CiAgICAgIHRoaXMuanN1c2VybmFtZSA9IHJvdy51c2VybmFtZTsKICAgICAgdGhpcy5qc25pY2tuYW1lID0gcm93Lm5pY2tuYW1lOwogICAgICB0aGlzLmdldFJvbGVCeVR5cGUocm93LnVzZXJ0eXBlKTsKICAgICAgdGhpcy5nZXRVc2VyUm9sZSh0aGlzLmpzdXNlcmlkKTsKICAgICAgdGhpcy5qc29wZW4gPSB0cnVlOwogICAgICB0aGlzLnRpdGxlID0gIuWIhumFjeinkuiJsiI7CiAgICAgIC8vIFByb21pc2UuYWxsKFt0aGlzLmdldFJvbGVCeVR5cGUocm93LnVzZXJ0eXBlKSwgdGhpcy5nZXRVc2VyUm9sZSh0aGlzLmpzdXNlcmlkKV0pLnRoZW4oKHJlcykgPT4gewogICAgICAvLyAgIGlmIChyZXNbMV0gIT0gJycgJiYgcmVzWzFdICE9IHVuZGVmaW5lZCkgewogICAgICAvLyAgICAgY29uc3Qgcm9sZVRhYmxlID0gdGhpcy4kcmVmcy54VGFibGUuZ2V0VGFibGVEYXRhKCkKICAgICAgLy8gICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcm9sZVRhYmxlLnRhYmxlRGF0YS5sZW5ndGg7IGkrKykgewogICAgICAvLyAgICAgICBpZiAocmVzWzFdLnJvbGVJZCA9PSByb2xlVGFibGUudGFibGVEYXRhW2ldLnJvbGVJZCkgewogICAgICAvLyAgICAgICAgIC8vIOWwhuWOn+acieeahOinkuiJsuWLvumAieS4igogICAgICAvLyAgICAgICAgIHRoaXMuJHJlZnMueFRhYmxlLnNldENoZWNrYm94Um93KHJvbGVUYWJsZS50YWJsZURhdGFbaV0sIHRydWUpCiAgICAgIC8vICAgICAgIH0KICAgICAgLy8gICAgIH0KICAgICAgLy8gICB9CiAgICAgIC8vIH0pLmNhdGNoKGUgPT4gewogICAgICAvLyAgIHRoaXMubG9hZGluZyA9IGZhbHNlCiAgICAgIC8vICAgdGhpcy4kbWVzc2FnZS5lcnJvcigi6I635Y+W5YiG6YWN6KeS6Imy5byC5bi477yaIiArIGUpCiAgICAgIC8vIH0pCiAgICB9LCAxMDAwKSwKICAgIC8qKiDop5LoibLliIbphY3mj5DkuqTmjInpkq4gKi8KICAgIGpzc3VibWl0Rm9ybTogKDAsIF9sb2Rhc2guZGVib3VuY2UpKCAvKiNfX1BVUkVfXyovKDAsIF9hc3luY1RvR2VuZXJhdG9yMi5kZWZhdWx0KSggLyojX19QVVJFX18qLygwLCBfcmVnZW5lcmF0b3JSdW50aW1lMi5kZWZhdWx0KSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTE4KCkgewogICAgICB2YXIgX3RoaXMxNiA9IHRoaXM7CiAgICAgIHJldHVybiAoMCwgX3JlZ2VuZXJhdG9yUnVudGltZTIuZGVmYXVsdCkoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUxOCQoX2NvbnRleHQxOCkgewogICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0MTgucHJldiA9IF9jb250ZXh0MTgubmV4dCkgewogICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICB0aGlzLiRwcm9tcHQoJ+ivt+i+k+WFpeeZu+W9leWvhueggScsICfpibTliKvmk43kvZwnLCB7CiAgICAgICAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6ICfnoa7lrponLAogICAgICAgICAgICAgIGNhbmNlbEJ1dHRvblRleHQ6ICflj5bmtognLAogICAgICAgICAgICAgIGlucHV0VHlwZTogJ3Bhc3N3b3JkJywKICAgICAgICAgICAgICAvLyBjdXN0b21DbGFzczonbm8tYXV0b2ZpbGwtcHdkJywKICAgICAgICAgICAgICBpbnB1dFZhbGlkYXRvcjogZnVuY3Rpb24gaW5wdXRWYWxpZGF0b3IodmFsKSB7CiAgICAgICAgICAgICAgICBpZiAodmFsID09PSBudWxsIHx8IHZhbC5sZW5ndGggPCAxIHx8IHZhbC5sZW5ndGggPiAyMCkgewogICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICBpbnB1dEVycm9yTWVzc2FnZTogJ+S4jeiDveS4uuepuizmnIDlpJrlj6/lvZXlhaUyMOS4quWtl+espicsCiAgICAgICAgICAgICAgYmVmb3JlQ2xvc2U6IGZ1bmN0aW9uIGJlZm9yZUNsb3NlKGFjdGlvbiwgaW5zdGFuY2UsIGRvbmUpIHsKICAgICAgICAgICAgICAgIGlmIChhY3Rpb24gPT09ICJjb25maXJtIikgewogICAgICAgICAgICAgICAgICBpbnN0YW5jZS4kcmVmc1siY29uZmlybSJdLiRlbC5vbmNsaWNrID0gZnVuY3Rpb24gKGUpIHsKICAgICAgICAgICAgICAgICAgICBlID0gZSB8fCB3aW5kb3cuZXZlbnQ7CiAgICAgICAgICAgICAgICAgICAgaWYgKGUuZGV0YWlsICE9IDApIHsKICAgICAgICAgICAgICAgICAgICAgIGRvbmUoKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIH0oKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgIGRvbmUoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pLnRoZW4oIC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgdmFyIF9yZWYyNyA9ICgwLCBfYXN5bmNUb0dlbmVyYXRvcjIuZGVmYXVsdCkoIC8qI19fUFVSRV9fKi8oMCwgX3JlZ2VuZXJhdG9yUnVudGltZTIuZGVmYXVsdCkoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUxNyhfcmVmMjYpIHsKICAgICAgICAgICAgICAgIHZhciB2YWx1ZSwgc3lzVGltZSwgbGssIHBhcmFtOwogICAgICAgICAgICAgICAgcmV0dXJuICgwLCBfcmVnZW5lcmF0b3JSdW50aW1lMi5kZWZhdWx0KSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTE3JChfY29udGV4dDE3KSB7CiAgICAgICAgICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0MTcucHJldiA9IF9jb250ZXh0MTcubmV4dCkgewogICAgICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gX3JlZjI2LnZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgX2NvbnRleHQxNy5uZXh0ID0gMzsKICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfdGhpczE2LiRheGlvcy5nZXQoJy9zeXNQb2xpY3lDb250cm9sbGVyL2dldExpY2Vuc2VLZXknKS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgc3lzVGltZSA9IHJlcy5kYXRhLnN5c1RpbWU7CiAgICAgICAgICAgICAgICAgICAgICAgIGxrID0gcmVzLmRhdGEubGs7CiAgICAgICAgICAgICAgICAgICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHt9KTsKICAgICAgICAgICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgICAgICAgICAvLyDmj5DkuqTlkI7lj7Dop5LoibLliIbphY0KICAgICAgICAgICAgICAgICAgICAgIHBhcmFtID0gewogICAgICAgICAgICAgICAgICAgICAgICB1c2VySWQ6IF90aGlzMTYuanN1c2VyaWQsCiAgICAgICAgICAgICAgICAgICAgICAgIHJvbGVJZDogX3RoaXMxNi51c2VyUm9sZUlkLAogICAgICAgICAgICAgICAgICAgICAgICBzeXNUaW1lOiBzeXNUaW1lLAogICAgICAgICAgICAgICAgICAgICAgICBsazogbGssCiAgICAgICAgICAgICAgICAgICAgICAgIGFnYWluUHdkOiB2YWx1ZQogICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgIF9jb250ZXh0MTcubmV4dCA9IDY7CiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3RoaXMxNi4kYXhpb3MucG9zdCgnL3N5c1VzZXJDb250cm9sbGVyL2F1dGhSb2xlJywgcGFyYW0pLnRoZW4oZnVuY3Rpb24gKHJlcykgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzLmNvZGUgPT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzMTYuJG1lc3NhZ2UoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3N1Y2Nlc3MnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogcmVzLmRhdGEKICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICBfdGhpczE2LmpzY2FuY2VsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXMxNi5nZXRMaXN0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXMxNi4kbWVzc2FnZSh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogcmVzLmRhdGEKICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzMTYuJG1lc3NhZ2UoewogICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJ+inkuiJsuWIhumFjeWksei0pSEnCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICBfdGhpczE2LmxvYWRpbmcgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIGNhc2UgNjoKICAgICAgICAgICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0MTcuc3RvcCgpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LCBfY2FsbGVlMTcpOwogICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKF94MjMpIHsKICAgICAgICAgICAgICAgIHJldHVybiBfcmVmMjcuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9KCkpLmNhdGNoKGZ1bmN0aW9uIChlKSB7fSk7CiAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICByZXR1cm4gX2NvbnRleHQxOC5zdG9wKCk7CiAgICAgICAgfQogICAgICB9LCBfY2FsbGVlMTgsIHRoaXMpOwogICAgfSkpLCAxMDAwKQogIH0KfTsKZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7"},{"version":3,"names":["_lodash","require","_smutil","name","data","pickerOptions","disabledDate","time","getTime","Date","now","sysRole","id","undefined","username","nickname","idcard","phonenumber","mailbox","status","usertype","remark","expDate","jsuserid","roleList","jsusername","jsnickname","userRoleId","jsusertype","statusOptions","value","label","typeOptions","loading","showTable","ids","single","multiple","currentPage","pageSize","total","userList","locktitle","title","jstitle","open","lockopen","jsopen","initPassword","roleOptions","form","lockform","queryParams","menuExpand","menuOptions","defaultProps","children","edit","rules","required","message","trigger","min","max","type","pattern","watch","created","getList","getUserByRole","methods","_this2","_asyncToGenerator2","default","_regeneratorRuntime2","mark","_callee","sysTime2","lk2","searchParams2","wrap","_callee$","_context","prev","next","$axios","get","then","res","sysTime","lk","catch","error","params","stop","handleCheckedTreeExpand","treeList","i","length","$refs","menu","store","nodesMap","expanded","setRowClass","_ref","row","rowIndex","signstr","handleLogOff","_this3","_selectData","userTable","getRadioRecord","$message","$prompt","confirmButtonText","cancelButtonText","inputType","inputValidator","val","inputErrorMessage","beforeClose","action","instance","done","$el","onclick","e","window","event","detail","_ref3","_callee2","_ref2","_callee2$","_context2","doLogoff","_x","apply","arguments","debounce","_ref4","_callee3","againPwd","_this4","param","_callee3$","_context3","post","code","_x2","_x3","statusFormat","_ref5","cellValue","belongTo","sfsh","_ref6","typeFormat","_ref7","handleQuery","_this5","_callee4","searchParams","_callee4$","_context4","records","handleStatusChange","_this6","text","$modal","confirm","userName","changeUserStatus","userId","msgSuccess","cancel","reset","jscancel","clearValidate","resetQuery","resetForm","handleAdd","password","submitForm","_this7","validate","_ref8","_callee7","valid","_callee7$","_context7","_ref10","_callee5","_ref9","_callee5$","_context5","success","_x5","_ref12","_callee6","_ref11","_callee6$","_context6","_x6","_x4","handleResetPwd","_this8","_ref14","_callee8","_ref13","_callee8$","_context8","doResetPwd","_x7","_ref15","_callee9","_this9","_callee9$","_context9","_x8","_x9","handleDelete","_this10","_ref17","_callee10","_ref16","_callee10$","_context10","doDelete","_x10","_ref18","_callee11","_this11","_callee11$","_context11","_x11","_x12","handleUpdate","lockformcancel","sublockform","doRelock","handleRelock","_this12","_ref20","_callee12","_ref19","_callee12$","_context12","_x13","_ref21","_callee13","_this13","_callee13$","_context13","_x14","_x15","_x16","getMenu","rowRoleId","a","_this","Promise","_ref22","_callee14","resolve","reject","param1","_callee14$","_context14","roleId","menus","_x17","_x18","console","getUserRole","userid","_ref23","_callee15","userRoleParams","sysTime1","lk1","_callee15$","_context15","_x19","_x20","getRoleByType","_this15","_ref24","_callee16","_this14","_callee16$","_context16","_x21","_x22","handleAuthRole","roleKey","jssubmitForm","_callee18","_this16","_callee18$","_context18","_ref27","_callee17","_ref26","_callee17$","_context17","_x23","exports","_default"],"sources":["src/views/sysManager/userManager/index.vue"],"sourcesContent":["\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n"],"mappings":"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"}]}