1 |
- {"remainingRequest":"E:\\boman-framwork\\ruoyi-ui\\node_modules\\thread-loader\\dist\\cjs.js!E:\\boman-framwork\\ruoyi-ui\\node_modules\\babel-loader\\lib\\index.js!E:\\boman-framwork\\ruoyi-ui\\node_modules\\cache-loader\\dist\\cjs.js??ref--0-0!E:\\boman-framwork\\ruoyi-ui\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!E:\\boman-framwork\\ruoyi-ui\\src\\components\\MutipleSelectPop\\index.vue?vue&type=script&lang=js&","dependencies":[{"path":"E:\\boman-framwork\\ruoyi-ui\\src\\components\\MutipleSelectPop\\index.vue","mtime":1620609644454},{"path":"E:\\boman-framwork\\ruoyi-ui\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"E:\\boman-framwork\\ruoyi-ui\\node_modules\\thread-loader\\dist\\cjs.js","mtime":499162500000},{"path":"E:\\boman-framwork\\ruoyi-ui\\node_modules\\babel-loader\\lib\\index.js","mtime":315532800000},{"path":"E:\\boman-framwork\\ruoyi-ui\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"E:\\boman-framwork\\ruoyi-ui\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0IF90b0NvbnN1bWFibGVBcnJheSBmcm9tICJFOi9ib21hbi1mcmFtd29yay9ydW95aS11aS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdG9Db25zdW1hYmxlQXJyYXkiOwppbXBvcnQgX3R5cGVvZiBmcm9tICJFOi9ib21hbi1mcmFtd29yay9ydW95aS11aS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdHlwZW9mIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LmtleXMuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcuc2VhcmNoLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMucmVnZXhwLmV4ZWMuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcuc3BsaXQuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy93ZWIuZG9tLWNvbGxlY3Rpb25zLmZvci1lYWNoLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuZmluZC1pbmRleC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLm51bWJlci5jb25zdHJ1Y3Rvci5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5Lm1hcC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmZpbHRlci5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmNvbmNhdC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LnNwbGljZS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmZyb20uanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcuaXRlcmF0b3IuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5zZXQuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3QudG8tc3RyaW5nLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvd2ViLmRvbS1jb2xsZWN0aW9ucy5pdGVyYXRvci5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LnJlZHVjZS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmluY2x1ZGVzLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLmluY2x1ZGVzLmpzIjsKLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KaW1wb3J0IHsgYWRkR2VubXV0aXBvciwgYWRkR2VubXV0aXBvcnVkZXIsIGFkZEdlbm11dGlwb3J0cmVlIH0gZnJvbSAiQC9hcGkvYWN0aXZpdGkvZGVmaW5pdGlvbiI7CmV4cG9ydCBkZWZhdWx0IHsKICBuYW1lOiAiTXV0aXBsZSIsCiAgcHJvcHM6IHsKICAgIC8vIHRyZWVkYXRhOiB7CiAgICAvLyAgIHR5cGU6IEFycmF5LAogICAgLy8gICBkZWZhdWx0KCkgewogICAgLy8gICAgIHJldHVybiBbXTsKICAgIC8vICAgfQogICAgLy8gfSwKICAgIC8vIGNvbXBvbmVudERhdGE6IHsKICAgIC8vICAgdHlwZTogQXJyYXksCiAgICAvLyAgIGRlZmF1bHQoKSB7CiAgICAvLyAgICAgcmV0dXJuIFtdOwogICAgLy8gICB9CiAgICAvLyB9LAogICAgcmVzdWx0RGF0YTogewogICAgICB0eXBlOiBPYmplY3QsCiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkgewogICAgICAgIHJldHVybiB7fTsKICAgICAgfQogICAgfSwKICAgIGxvYWRpbmc6IHsKICAgICAgdHlwZTogQm9vbGVhbiwKICAgICAgZGVmYXVsdDogZmFsc2UKICAgIH0sCiAgICAvLyB0cmVlTG9hZGluZzogewogICAgLy8gICB0eXBlOiBCb29sZWFuLAogICAgLy8gICBkZWZhdWx0OiBmYWxzZQogICAgLy8gfSwKICAgIC8vIHRhYmxlTG9hZGluZzogewogICAgLy8gICB0eXBlOiBCb29sZWFuLAogICAgLy8gICBkZWZhdWx0OiBmYWxzZQogICAgLy8gfSwKICAgIG9wZW46IHsKICAgICAgdHlwZTogQm9vbGVhbiwKICAgICAgZGVmYXVsdDogZmFsc2UKICAgIH0sCiAgICBpY29uX2RlbGVjdDogewogICAgICB0eXBlOiBTdHJpbmcsCiAgICAgIGRlZmF1bHQ6ICJpY29uZm9udCAgaWNvbi1ial9kZWxldGUiCiAgICB9LAogICAgY2hlY2tlZExpc3Q6IHsKICAgICAgdHlwZTogQXJyYXksCiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkgewogICAgICAgIHJldHVybiBbXTsKICAgICAgfQogICAgfSwKICAgIC8vIHRhYmxlU2VhcmNoOiB7CiAgICAvLyAgIHR5cGU6IFN0cmluZywKICAgIC8vICAgZGVmYXVsdDogIiIKICAgIC8vIH0sCiAgICBpc1VzZTogewogICAgICB0eXBlOiBCb29sZWFuLAogICAgICBkZWZhdWx0OiB0cnVlCiAgICB9LAogICAgaXNNdXRpcGxlOiB7CiAgICAgIC8v5piv5ZCm5aSa6YCJCiAgICAgIHR5cGU6IEJvb2xlYW4sCiAgICAgIGRlZmF1bHQ6IHRydWUKICAgIH0sCiAgICAvLyBpc1Jlc3VsdFNob3c6IHsKICAgIC8vICAgLy9yZXN1bHQubGlzdOaYr+WQpuWPjeaYvgogICAgLy8gICB0eXBlOiBCb29sZWFuLAogICAgLy8gICBkZWZhdWx0OiB0cnVlCiAgICAvLyB9LAogICAgaXNDYWxsSW50ZXJmYWNlOiB7CiAgICAgIC8v55So5p2l5o6n5Yi26LCD55So5o6l5Y+j5ou/5Yiw5pWw5o2uIC8v5Lmf5Y+v5Lul55CG6Kej5Li65by55qGG5YWz6Zet54q25oCBCiAgICAgIHR5cGU6IEJvb2xlYW4sCiAgICAgIGRlZmF1bHQ6IGZhbHNlCiAgICB9CiAgfSwKICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkgewogICAgcmV0dXJuIHsKICAgICAgdGFibGVMb2FkaW5nOiBmYWxzZSwKICAgICAgdHJlZUxvYWRpbmc6IGZhbHNlLAogICAgICB0cmVlOiB7CiAgICAgICAgcGxhY2Vob2xkZXI6ICLlj6/mkJzntKLlupfku5Mv6YOo6ZeoIiwKICAgICAgICBzZWFyY2g6ICIiCiAgICAgIH0sCiAgICAgIHRhYmxlOiB7CiAgICAgICAgLy/ooajmoLzmmL7npLrpg6jliIbmkJzntKIKICAgICAgICBwbGFjZWhvbGRlcjogIuebtOaOpei+k+WFpeS6uuWRmOWnk+WQjeaQnOe0oiIsCiAgICAgICAgc2VhcmNoOiAiIgogICAgICB9LAogICAgICBjb2x1bW5zOiBbXSwKICAgICAgdHJlZU5ld0RhdGE6IFtdLAogICAgICBzaG93VHJlZTogdGhpcy5vcGVuLAogICAgICBjb21wb25lbnR0OiBbewogICAgICAgIHRhYjogIuetm+mAiee7k+aenCIsCiAgICAgICAgY29sdW1uczogW3sKICAgICAgICAgIGtleTogIk5BTUUiLAogICAgICAgICAgdGl0bGU6ICLnlKjmiLflkI0iCiAgICAgICAgfSwgewogICAgICAgICAga2V5OiAiRU5BTUUiLAogICAgICAgICAgdGl0bGU6ICLnlKjmiLflp5PlkI0iCiAgICAgICAgfV0sCiAgICAgICAgbGlzdDogW10sCiAgICAgICAgdG90YWw6IDAsCiAgICAgICAgcGFnZVNpemU6IDEwLAogICAgICAgIHBhZ2VOdW06IDEsCiAgICAgICAgLy/lvZPliY3pobXnoIEKICAgICAgICBwYWdlT3B0aW9uczogWzEwLCAyMCwgNTAsIDEwMF0sCiAgICAgICAgaGVpZ2h0OiAzNDAKICAgICAgfV0sCiAgICAgIHJlc3VsdFJpZ2h0RGF0YTogewogICAgICAgIHRvdGFsOiAwLAogICAgICAgIGxpc3Q6IFtdCiAgICAgIH0sCiAgICAgIHRlbXBsYXRlTmFtZTogIiIsCiAgICAgIGluZGV4OiAwLAogICAgICBxdWVyeVN0eWxlOiB7CiAgICAgICAgY29sb3I6ICIjZmQ2NDQyIgogICAgICB9LAogICAgICBzZWxlY3RSb3c6IFtdLAogICAgICAvL+ihqOagvOmAieS4reeahOaVsOaNrgogICAgICBzZWxlY3REYXRhczoge30sCiAgICAgIC8v5Y2V6KGM6YCJ5LitCiAgICAgIG9iajoge30gLy8KCiAgICB9OwogIH0sCiAgY29tcHV0ZWQ6IHsKICAgIHRyZWVMaXN0czogZnVuY3Rpb24gdHJlZUxpc3RzKCkgewogICAgICAvLyB0aGlzLnRyZWVOZXdEYXRhID0gdGhpcy50cmVlZGF0YTsKICAgICAgcmV0dXJuIHRoaXMudHJlZU5ld0RhdGE7CiAgICB9LAogICAgVGFiUGFuZURhdGE6IGZ1bmN0aW9uIFRhYlBhbmVEYXRhKCkgewogICAgICAvLyBsZXQgZGF0YSA9IE9iamVjdC5hc3NpZ24odGhpcy5jb21wb25lbnQsIHRoaXMuY29tcG9uZW50RGF0YSk7CiAgICAgIC8vIHJldHVybiBkYXRhOwogICAgICBpZiAodGhpcy5pc011dGlwbGUpIHsvLyB0aGlzLmNvbXBvbmVudHRbMF0uY29sdW1ucy51bnNoaWZ0KHsKICAgICAgICAvLyAgIHR5cGU6ICJzZWxlY3Rpb24iLAogICAgICAgIC8vICAgYWxpZ246ICJjZW50ZXIiLAogICAgICAgIC8vICAgZml4ZWQ6ICJsZWZ0IiwKICAgICAgICAvLyAgIHdpZHRoOiAzMAogICAgICAgIC8vIH0pOwogICAgICB9CgogICAgICByZXR1cm4gdGhpcy5jb21wb25lbnR0OwogICAgfSwKICAgIHJlc3VsdE1lc3NhZ2U6IGZ1bmN0aW9uIHJlc3VsdE1lc3NhZ2UoKSB7CiAgICAgIC8vIGxldCBkYXRhID0gT2JqZWN0LmFzc2lnbih0aGlzLnJlc3VsdFJpZ2h0RGF0YSwgdGhpcy5yZXN1bHREYXRhKTsKICAgICAgcmV0dXJuIHRoaXMucmVzdWx0UmlnaHREYXRhOwogICAgfQogIH0sCiAgd2F0Y2g6IHsKICAgIGlzQ2FsbEludGVyZmFjZTogewogICAgICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKG5ld1ZhbHVlLCBvbGRWYWx1ZSkgewogICAgICAgIGlmIChuZXdWYWx1ZSkgewogICAgICAgICAgLy/miafooYzor7fmsYIKICAgICAgICAgIHRoaXMuY29tcG9uZW50dFswXS5wYWdlTnVtID0gMTsKICAgICAgICAgIHRoaXMuZ2V0VHJlZURhdGEoKTsKCiAgICAgICAgICBpZiAodGhpcy5yZXN1bHREYXRhLmxpc3QpIHsKICAgICAgICAgICAgdGhpcy5yZXN1bHRSaWdodERhdGEgPSB0aGlzLmRlZXBDb3B5KHRoaXMucmVzdWx0RGF0YSk7CiAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGlmICh0aGlzLnNlbGVjdFJvdy5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgIHRoaXMuc2VsZWN0Um93ID0gW107CiAgICAgICAgICB9CgogICAgICAgICAgaWYgKE9iamVjdC5rZXlzKHRoaXMuc2VsZWN0RGF0YXMpLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgdGhpcy5zZWxlY3REYXRhcyA9IHt9OwogICAgICAgICAgfQoKICAgICAgICAgIGlmICh0aGlzLnRhYmxlLnNlYXJjaCkgewogICAgICAgICAgICB0aGlzLnRhYmxlLnNlYXJjaCA9ICIiOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfQogIH0sCiAgbWV0aG9kczogewogICAgZGVlcENvcHk6IGZ1bmN0aW9uIGRlZXBDb3B5KG9iaikgewogICAgICAvL+WFkeeOsOa3seaLt+i0nQogICAgICB2YXIgcmVzdWx0ID0gQXJyYXkuaXNBcnJheShvYmopID8gW10gOiB7fTsKCiAgICAgIGZvciAodmFyIGtleSBpbiBvYmopIHsKICAgICAgICBpZiAob2JqLmhhc093blByb3BlcnR5KGtleSkpIHsKICAgICAgICAgIGlmIChfdHlwZW9mKG9ialtrZXldKSA9PT0gIm9iamVjdCIgJiYgb2JqW2tleV0gIT09IG51bGwpIHsKICAgICAgICAgICAgcmVzdWx0W2tleV0gPSB0aGlzLmRlZXBDb3B5KG9ialtrZXldKTsgLy/pgJLlvZLlpI3liLYKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJlc3VsdFtrZXldID0gb2JqW2tleV07CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CgogICAgICByZXR1cm4gcmVzdWx0OwogICAgfSwKICAgIGdldFNlbGVjdGVkTm9kZXM6IGZ1bmN0aW9uIGdldFNlbGVjdGVkTm9kZXModmFsKSB7CiAgICAgIHZhciBfdGhpcyA9IHRoaXM7CgogICAgICAvLyBpZiAodGhpcy5pc011dGlwbGUpIHsKICAgICAgaWYgKHZhbC5sZW5ndGggPiAwKSB7CiAgICAgICAgdGhpcy5vYmogPSB7fTsKICAgICAgICB0aGlzLnNhdmVPYmogPSB2YWxbMF07CiAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwogICAgICAgIHZhciB2YWxJRCA9ICIiOwoKICAgICAgICBpZiAodmFsWzBdLklELmluZGV4T2YoIi4iKSAhPT0gLTEpIHsKICAgICAgICAgIHZhbElEID0gdmFsWzBdLklELnNwbGl0KCIuIilbMV07CiAgICAgICAgICB2YWxJRCA9IHBhcnNlSW50KHZhbElEKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdmFsSUQgPSBwYXJzZUludCh2YWxbMF0uSUQpOwogICAgICAgIH0KCiAgICAgICAgaWYgKHZhbFswXS5DUF9DX09SR1VQX0lEID09PSBudWxsKSB7CiAgICAgICAgICAvL+agueiKgueCuQogICAgICAgICAgdGhpcy5maW5kVXNlcih7fSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIC8v5b2TaXRlbeeahFRZUEXkuLrlupfku5Pml7YKICAgICAgICAgIGlmICh2YWxbMF0uVFlQRSA9PT0gIkNQX0NfU1RPUkVfSUQiKSB7CiAgICAgICAgICAgIHRoaXMub2JqLkNQX0NfU1RPUkVfSUQgPSAiaW4oIiArIHZhbElEICsgIikiOwogICAgICAgICAgICBzZWxmLmZpbmRVc2VyKHNlbGYub2JqKTsKICAgICAgICAgIH0gLy/lvZNpdGVt55qEVFlQReS4uuS+m+W6lOWVhuaXtgogICAgICAgICAgLy8gIOW9k2l0ZW3nmoRUWVBF5Li657uE57uH5pe2CgoKICAgICAgICAgIGlmICh2YWxbMF0uVFlQRSA9PT0gIkNQX0NfSFJPUkdfSUQiKSB7CiAgICAgICAgICAgIGFkZEdlbm11dGlwb3IoewogICAgICAgICAgICAgIENQX0NfT1JHVVBfSUQ6IHZhbElECiAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlcykgewogICAgICAgICAgICAgIGlmIChyZXMuZGF0YS5yZXN1bHRDb2RlID09PSAwKSB7CiAgICAgICAgICAgICAgICB2YXIgSFJPUkcgPSAiaW4gKCI7IC8v5YKo5a2Y6ZSu5ZCN5Li6Q1BfQ19IUk9SR19JROWvueixoeeahElECgogICAgICAgICAgICAgICAgdmFyIFNUT1JFID0gImluICgiOyAvL+WCqOWtmOmUruWQjeS4ukNQX0NfU1RPUkVfSUTlr7nosaHnmoRJRAoKICAgICAgICAgICAgICAgIGlmIChyZXMuZGF0YS5kYXRhLkNQX0NfSFJPUkcgJiYgcmVzLmRhdGEuZGF0YS5DUF9DX0hST1JHLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgICAgICAgcmVzLmRhdGEuZGF0YS5DUF9DX0hST1JHLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICAgICAgICAgICAgICBIUk9SRyArPSBpdGVtLklEICsgIiwiOyAvLyBpbiAxLDIsMyw1LDYsODcsOCw2CiAgICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgICAgaWYgKHJlcy5kYXRhLmRhdGEuQ1BfQ19IUk9SRy5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgc2VsZi5vYmouQ1BfQ19IUk9SR19JRCA9IEhST1JHLnN1YnN0cmluZygwLCBIUk9SRy5sZW5ndGggLSAxKSArICIpIjsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmIChyZXMuZGF0YS5kYXRhLkNQX0NfU1RPUkUgJiYgcmVzLmRhdGEuZGF0YS5DUF9DX1NUT1JFLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgICAgICAgcmVzLmRhdGEuZGF0YS5DUF9DX1NUT1JFLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICAgICAgICAgICAgICBTVE9SRSArPSBpdGVtLklEICsgIiwiOwogICAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAgIGlmIChyZXMuZGF0YS5kYXRhLkNQX0NfU1RPUkUubGVuZ3RoID4gMCkgewogICAgICAgICAgICAgICAgICAgIHNlbGYub2JqLkNQX0NfU1RPUkVfSUQgPSBTVE9SRS5zdWJzdHJpbmcoMCwgU1RPUkUubGVuZ3RoIC0gMSkgKyAiKSI7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBzZWxmLmZpbmRVc2VyKHNlbGYub2JqKTsKICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgX3RoaXMuJE1vZGFsLmZjRXJyb3IoewogICAgICAgICAgICAgICAgICB0aXRsZTogIumUmeivr+aPkOekuiIsCiAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHJlcy5kYXRhLnJlc3VsdE1zZwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICAgIH0gLy8gc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgIC8vICAgc2VsZi5maW5kVXNlcihzZWxmLm9iaik7CiAgICAgICAgICAvLyB9KTsKCiAgICAgICAgfQogICAgICB9IC8vIH0KCgogICAgICB0aGlzLiRlbWl0KCJvbi1zZWxlY3QtdHJlZSIsIHZhbCwgdGhpcyk7CiAgICB9LAogICAgZ2V0Q2hlY2tlZE5vZGVzOiBmdW5jdGlvbiBnZXRDaGVja2VkTm9kZXMob2JqKSB7CiAgICAgIHRoaXMuJGVtaXQoIm9uLWNoYW5nZS10cmVlIiwgb2JqLCB0aGlzKTsKICAgIH0sCiAgICB0YWJDbGljazogZnVuY3Rpb24gdGFiQ2xpY2soaW5kZXgpIHsKICAgICAgdGhpcy5pbmRleCA9IGluZGV4OwogICAgICB0aGlzLiRlbWl0KCJvbi1jbGljay10YWIiLCBpbmRleCwgdGhpcyk7CiAgICB9LAogICAgcGFnZUNoYW5nZTogZnVuY3Rpb24gcGFnZUNoYW5nZShpbmRleCkgewogICAgICB0aGlzLiRlbWl0KCJvbi1jaGFuZ2UtcGFnZSIsIGluZGV4LCB0aGlzKTsKICAgICAgdGhpcy5jb21wb25lbnR0WzBdLnBhZ2VOdW0gPSBpbmRleDsKICAgICAgdmFyIHBhcmFtID0gT2JqZWN0LmFzc2lnbih0aGlzLm9iaiwgewogICAgICAgIHBhZ2U6IGluZGV4LAogICAgICAgIHBhZ2VTaXplOiAxMAogICAgICB9KTsKCiAgICAgIGlmICh0aGlzLnRhYmxlLnNlYXJjaCAhPT0gIiIpIHsKICAgICAgICBwYXJhbS5FTkFNRSA9IHRoaXMudGFibGUuc2VhcmNoOwogICAgICB9CgogICAgICB0aGlzLmZpbmRVc2VyKHBhcmFtKTsKICAgIH0sCiAgICBwYWdlQ2hhbmdlU2l6ZTogZnVuY3Rpb24gcGFnZUNoYW5nZVNpemUoaW5kZXgpIHsKICAgICAgdGhpcy4kZW1pdCgib24tY2hhbmdlLXBhZ2VTaXplIiwgaW5kZXgsIHRoaXMpOwogICAgICB0aGlzLmNvbXBvbmVudHRbMF0ucGFnZVNpemUgPSBpbmRleDsKICAgICAgdmFyIHBhcmFtID0gT2JqZWN0LmFzc2lnbih0aGlzLm9iaiwgewogICAgICAgIHBhZ2U6IDEsCiAgICAgICAgcGFnZVNpemU6IGluZGV4CiAgICAgIH0pOwoKICAgICAgaWYgKHRoaXMudGFibGUuc2VhcmNoICE9PSAiIikgewogICAgICAgIHBhcmFtLkVOQU1FID0gdGhpcy50YWJsZS5zZWFyY2g7CiAgICAgIH0KCiAgICAgIHRoaXMuZmluZFVzZXIocGFyYW0pOwogICAgfSwKICAgIHJvd2RiQ2xpY2s6IGZ1bmN0aW9uIHJvd2RiQ2xpY2socm93LCBpbmRleCkgewogICAgICB2YXIgc2VsZWN0T2JqID0gT2JqZWN0LmFzc2lnbih7fSwgcm93KTsKCiAgICAgIGlmICghdGhpcy5pc011dGlwbGUpIHsKICAgICAgICBzZWxlY3RPYmouc3RyaW5nID0gc2VsZWN0T2JqLkVOQU1FOwoKICAgICAgICBpZiAodGhpcy5yZXN1bHRSaWdodERhdGEubGlzdCkgewogICAgICAgICAgdGhpcy5yZXN1bHRSaWdodERhdGEubGlzdCA9IFtdOwogICAgICAgICAgdGhpcy5yZXN1bHRSaWdodERhdGEubGlzdC5wdXNoKHNlbGVjdE9iaik7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHRoaXMuJHNldCh0aGlzLnJlc3VsdFJpZ2h0RGF0YSwgImxpc3QiLCBbc2VsZWN0T2JqXSk7CiAgICAgICAgfQogICAgICB9IGVsc2UgewogICAgICAgIHZhciBfc2VsZWN0T2JqID0gT2JqZWN0LmFzc2lnbih7CiAgICAgICAgICBhcHByb3ZlX3R5cGU6IDQKICAgICAgICB9LCByb3cpOwoKICAgICAgICBfc2VsZWN0T2JqLnN0cmluZyA9IF9zZWxlY3RPYmouRU5BTUU7CgogICAgICAgIGlmICh0aGlzLnJlc3VsdFJpZ2h0RGF0YS5saXN0ICYmIHRoaXMucmVzdWx0UmlnaHREYXRhLmxpc3QubGVuZ3RoID4gMCkgewogICAgICAgICAgdmFyIGZsYWdJbmRleCA9IHRoaXMucmVzdWx0UmlnaHREYXRhLmxpc3QuZmluZEluZGV4KGZ1bmN0aW9uIChpbm5lcikgewogICAgICAgICAgICByZXR1cm4gX3NlbGVjdE9iai5JRCA9PT0gaW5uZXIuSUQgfHwgX3NlbGVjdE9iai5JRCA9PT0gTnVtYmVyKGlubmVyLmFwcHJvdmVfdmFsdWUpOwogICAgICAgICAgfSk7CgogICAgICAgICAgaWYgKGZsYWdJbmRleCA9PT0gLTEpIHsKICAgICAgICAgICAgLy/msqHmnInmib7liLDnm7jlkIznmoTlsLHliqDlhaUKICAgICAgICAgICAgdGhpcy5yZXN1bHRSaWdodERhdGEubGlzdC5wdXNoKF9zZWxlY3RPYmopOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdGhpcy4kbWVzc2FnZSh7CiAgICAgICAgICAgICAgbWVzc2FnZTogX3NlbGVjdE9iai5FTkFNRSArICLlt7Lnu4/pgInmi6nov4fkuoYs6K+35LiN6KaB6YeN5aSN6YCJ5oup77yBIiwKICAgICAgICAgICAgICB0eXBlOiAnd2FybmluZycKICAgICAgICAgICAgfSk7CiAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHRoaXMuJHNldCh0aGlzLnJlc3VsdFJpZ2h0RGF0YSwgImxpc3QiLCBbX3NlbGVjdE9ial0pOwogICAgICAgIH0KICAgICAgfQoKICAgICAgdGhpcy5yZXN1bHRSaWdodERhdGEudG90YWwgPyB0aGlzLnJlc3VsdFJpZ2h0RGF0YS50b3RhbCA9IHRoaXMucmVzdWx0UmlnaHREYXRhLmxpc3QubGVuZ3RoIDogdGhpcy4kc2V0KHRoaXMucmVzdWx0UmlnaHREYXRhLCAidG90YWwiLCB0aGlzLnJlc3VsdFJpZ2h0RGF0YS5saXN0Lmxlbmd0aCk7CiAgICAgIHRoaXMuJGVtaXQoImdldFJlc3VsdCIsIHRoaXMucmVzdWx0UmlnaHREYXRhKTsKICAgICAgdGhpcy4kcmVmcy5UYWJsZVswXS5jbGVhckN1cnJlbnRSb3coKTsKICAgICAgdGhpcy4kZW1pdCgib24tcm93LWRibGNsaWNrIiwgcm93LCBpbmRleCwgdGhpcyk7CiAgICB9LAogICAgcm93Q2xpY2s6IGZ1bmN0aW9uIHJvd0NsaWNrKHJvdywgaW5kZXgpIHsKICAgICAgaWYgKCF0aGlzLmlzTXV0aXBsZSkgewogICAgICAgIHRoaXMuc2VsZWN0RGF0YXMgPSBPYmplY3QuYXNzaWduKHRoaXMuc2VsZWN0RGF0YXMsIHJvdyk7CiAgICAgIH0KCiAgICAgIHRoaXMuJGVtaXQoIm9uLXJvdy1jbGljayIsIHJvdywgaW5kZXgsIHRoaXMpOwogICAgfSwKICAgIE9uc2VsZWN0OiBmdW5jdGlvbiBPbnNlbGVjdChzZWxlY3Rpb24sIHJvdykgewogICAgICBpZiAodGhpcy5pc011dGlwbGUpIHsKICAgICAgICB0aGlzLmNvbXBvbmVudHRbMF0ubGlzdC5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICAgIGlmIChyb3cuSUQgPT09IGl0ZW0uSUQpIHsKICAgICAgICAgICAgaXRlbS5fY2hlY2tlZCA9IHRydWU7CiAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgICAgdGhpcy5zZWxlY3RSb3cgPSBbXTsKICAgICAgICB0aGlzLnNlbGVjdFJvdyA9IHNlbGVjdGlvbjsKICAgICAgfQoKICAgICAgdGhpcy4kZW1pdCgib24tc2VsZWN0Iiwgc2VsZWN0aW9uLCByb3cpOwogICAgfSwKICAgIG9uU2VsZWN0Q2FuY2VsOiBmdW5jdGlvbiBvblNlbGVjdENhbmNlbChzZWxlY3Rpb24sIHJvdykgewogICAgICB0aGlzLmNvbXBvbmVudHRbMF0ubGlzdC5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICBpZiAocm93LklEID09PSBpdGVtLklEKSB7CiAgICAgICAgICBpdGVtLl9jaGVja2VkID0gZmFsc2U7CiAgICAgICAgfQogICAgICB9KTsKICAgICAgdGhpcy5zZWxlY3RSb3cgPSBbXTsKICAgICAgdGhpcy5zZWxlY3RSb3cgPSBzZWxlY3Rpb247CiAgICAgIHRoaXMuJGVtaXQoIm9uLXNlbGVjdC1jYW5jZWwiLCBzZWxlY3Rpb24sIHJvdyk7CiAgICB9LAogICAgb25TZWxlY3RBbGw6IGZ1bmN0aW9uIG9uU2VsZWN0QWxsKHNlbGVjdGlvbikgewogICAgICB0aGlzLnNlbGVjdFJvdyA9IFtdOwogICAgICB0aGlzLmNvbXBvbmVudHRbMF0ubGlzdC5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICBpdGVtLl9jaGVja2VkID0gdHJ1ZTsKICAgICAgfSk7CiAgICAgIHRoaXMuc2VsZWN0Um93ID0gc2VsZWN0aW9uOwogICAgICB0aGlzLiRlbWl0KCJvbi1zZWxlY3QtYWxsIiwgc2VsZWN0aW9uKTsKICAgIH0sCiAgICBvblNlbGVjdEFsbENhbmNlbDogZnVuY3Rpb24gb25TZWxlY3RBbGxDYW5jZWwoc2VsZWN0aW9uKSB7CiAgICAgIHRoaXMuY29tcG9uZW50dFswXS5saXN0Lm1hcChmdW5jdGlvbiAoaXRlbSkgewogICAgICAgIGl0ZW0uX2NoZWNrZWQgPSBmYWxzZTsKICAgICAgfSk7CiAgICAgIHRoaXMuc2VsZWN0Um93ID0gW107CiAgICAgIHRoaXMuJGVtaXQoIm9uLXNlbGVjdC1hbGwtY2FuY2VsIiwgc2VsZWN0aW9uKTsKICAgIH0sCiAgICBvblNlbGVjdENoYW5nZTogZnVuY3Rpb24gb25TZWxlY3RDaGFuZ2Uoc2VsZWN0aW9uKSB7CiAgICAgIHRoaXMuJGVtaXQoIm9uLXNlbGVjdC1jaGFuZ2UiLCBzZWxlY3Rpb24pOwogICAgfSwKICAgIGlucHV0Y2hhbmdlOiBmdW5jdGlvbiBpbnB1dGNoYW5nZShldmVudCkgewogICAgICAvLyBpZighdGhpcy5pc1VzZSYmIXRoaXMuaXNNdXRpcGxlKXsKICAgICAgdGhpcy50YWJsZS5zZWFyY2ggPSBldmVudC50YXJnZXQudmFsdWU7IC8vIH0KCiAgICAgIHRoaXMuJGVtaXQoIm9uLWNoYW5nZSIsIGV2ZW50LCB0aGlzKTsKICAgIH0sCiAgICBpbnB1dGtleWRvd246IGZ1bmN0aW9uIGlucHV0a2V5ZG93bihldmVudCkgewogICAgICB0aGlzLiRlbWl0KCJvbi1rZXlkb3duIiwgZXZlbnQsIHRoaXMpOwogICAgfSwKICAgIGlucHV0c2VhcmNoOiBmdW5jdGlvbiBpbnB1dHNlYXJjaChldmVudCkgewogICAgICB2YXIgcGFyYW0gPSBPYmplY3QuYXNzaWduKHRoaXMub2JqLCB7CiAgICAgICAgcGFnZTogMSwKICAgICAgICBwYWdlU2l6ZTogMTAsCiAgICAgICAgRU5BTUU6IGV2ZW50CiAgICAgIH0pOwogICAgICB0aGlzLmZpbmRVc2VyKHBhcmFtKTsKICAgICAgdGhpcy4kZW1pdCgib24tc2VhcmNoIiwgZXZlbnQsIHRoaXMpOwogICAgfSwKICAgIG9wZXJhdGlvblR3bzogZnVuY3Rpb24gb3BlcmF0aW9uVHdvKCkgewogICAgICB2YXIgX3RoaXMyID0gdGhpczsKCiAgICAgIHZhciBzZWxlY3ROb2RlID0gdGhpcy4kcmVmcy5UcmVlLmdldENoZWNrZWROb2RlcygpOwogICAgICBzZWxlY3ROb2RlID0gc2VsZWN0Tm9kZS5maWx0ZXIoZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICByZXR1cm4gaXRlbS50aXRsZSAhPT0gJ+WFqOmDqCc7CiAgICAgIH0pOwoKICAgICAgaWYgKHRoaXMuaXNNdXRpcGxlKSB7CiAgICAgICAgaWYgKHNlbGVjdE5vZGUubGVuZ3RoID4gMCkgewogICAgICAgICAgdGhpcy5yZXN1bHRSaWdodERhdGEudG90YWwgPyB0aGlzLiRzZXQodGhpcy5yZXN1bHRSaWdodERhdGEsICJ0b3RhbCIsIHRoaXMucmVzdWx0RGF0YS50b3RhbCArIHNlbGVjdE5vZGUubGVuZ3RoKSA6IHRoaXMuJHNldCh0aGlzLnJlc3VsdFJpZ2h0RGF0YSwgInRvdGFsIiwgc2VsZWN0Tm9kZS5sZW5ndGgpOwogICAgICAgICAgc2VsZWN0Tm9kZS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICAgICAgdmFyIHNlbGVjdE9iaiA9IE9iamVjdC5hc3NpZ24oewogICAgICAgICAgICAgIGFwcHJvdmVfdHlwZTogMgogICAgICAgICAgICB9LCBpdGVtKTsKICAgICAgICAgICAgc2VsZWN0T2JqLnN0cmluZyA9IGl0ZW0uRU5BTUU7CgogICAgICAgICAgICBpZiAoX3RoaXMyLnJlc3VsdFJpZ2h0RGF0YS5saXN0ICYmIF90aGlzMi5yZXN1bHRSaWdodERhdGEubGlzdC5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgdmFyIGZsYWdJbmRleCA9IF90aGlzMi5yZXN1bHRSaWdodERhdGEubGlzdC5maW5kSW5kZXgoZnVuY3Rpb24gKGlubmVyKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gaXRlbS5JRCA9PT0gaW5uZXIuSUQgfHwgaXRlbS5JRCA9PT0gTnVtYmVyKGlubmVyLmFwcHJvdmVfdmFsdWUpOwogICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICBpZiAoZmxhZ0luZGV4ID09PSAtMSkgewogICAgICAgICAgICAgICAgLy/msqHmnInmib7liLDnm7jlkIznmoTlsLHliqDlhaUKICAgICAgICAgICAgICAgIF90aGlzMi5yZXN1bHRSaWdodERhdGEubGlzdC5wdXNoKHNlbGVjdE9iaik7CiAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIF90aGlzMi4kbWVzc2FnZSh7CiAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGl0ZW0uRU5BTUUgKyAi5bey57uP6YCJ5oup6L+H5LqGLOivt+S4jeimgemHjeWkjemAieaLqe+8gSIsCiAgICAgICAgICAgICAgICAgIHR5cGU6ICd3YXJuaW5nJwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIF90aGlzMi4kc2V0KF90aGlzMi5yZXN1bHRSaWdodERhdGEsICJsaXN0IiwgW3NlbGVjdE9ial0pOwogICAgICAgICAgICB9CiAgICAgICAgICB9KTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgaGlzLiRtZXNzYWdlKHsKICAgICAgICAgICAgbWVzc2FnZTogIuivt+mAieaLqemDqOmXqO+8gSIsCiAgICAgICAgICAgIHR5cGU6ICd3YXJuaW5nJwogICAgICAgICAgfSk7IC8vIHRoaXMuJE1lc3NhZ2Uud2FybmluZygi6K+36YCJ5oup6YOo6ZeoIik7CiAgICAgICAgfQoKICAgICAgICB0aGlzLmdldFRyZWVEYXRhKCk7CiAgICAgIH0KCiAgICAgIGlmICh0aGlzLnNlbGVjdFJvdy5sZW5ndGggPiAwKSB7CiAgICAgICAgLy/pgInkuK3nirbmgIHnmoTmuIXpmaQKICAgICAgICB0aGlzLnNlbGVjdFJvdyA9IFtdOwogICAgICB9CgogICAgICBpZiAoT2JqZWN0LmtleXModGhpcy5zZWxlY3REYXRhcykubGVuZ3RoID4gMCkgewogICAgICAgIHRoaXMuc2VsZWN0RGF0YXMgPSB7fTsKICAgICAgfQoKICAgICAgdGhpcy4kZW1pdCgiZ2V0UmVzdWx0IiwgdGhpcy5yZXN1bHRSaWdodERhdGEpOwogICAgICB0aGlzLiRlbWl0KCJvbi10cmFuc2Zlci10d28iLCBzZWxlY3ROb2RlLCB0aGlzKTsKICAgIH0sCiAgICBvcGVyYXRpb246IGZ1bmN0aW9uIG9wZXJhdGlvbigpIHsKICAgICAgdmFyIF90aGlzMyA9IHRoaXM7CgogICAgICBpZiAoIXRoaXMuaXNNdXRpcGxlKSB7CiAgICAgICAgLy/ljZXpgInpgLvovpEKICAgICAgICBpZiAoT2JqZWN0LmtleXModGhpcy5zZWxlY3REYXRhcykubGVuZ3RoID09PSAwKSB7CiAgICAgICAgICB0aGlzLiRtZXNzYWdlKHsKICAgICAgICAgICAgbWVzc2FnZTogJ+ivt+mAieaLqeS6uuWRmCcsCiAgICAgICAgICAgIHR5cGU6ICd3YXJuaW5nJwogICAgICAgICAgfSk7IC8vIHRoaXMuJE1lc3NhZ2Uud2FybmluZygi6K+36YCJ5oup5Lq65ZGYIik7CgogICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgdGhpcy5yZXN1bHRSaWdodERhdGEudG90YWwgPyB0aGlzLnJlc3VsdFJpZ2h0RGF0YS50b3RhbCA9IDEgOiB0aGlzLiRzZXQodGhpcy5yZXN1bHRSaWdodERhdGEsICJ0b3RhbCIsIDEpOwogICAgICAgIHZhciBzZWxlY3RPYmogPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLnNlbGVjdERhdGFzKTsKICAgICAgICBzZWxlY3RPYmouc3RyaW5nID0gc2VsZWN0T2JqLkVOQU1FOwoKICAgICAgICBpZiAodGhpcy5yZXN1bHRSaWdodERhdGEubGlzdCkgewogICAgICAgICAgdGhpcy5yZXN1bHRSaWdodERhdGEubGlzdCA9IFtdOwogICAgICAgICAgdGhpcy5yZXN1bHRSaWdodERhdGEubGlzdC5wdXNoKHNlbGVjdE9iaik7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHRoaXMuJHNldCh0aGlzLnJlc3VsdFJpZ2h0RGF0YSwgImxpc3QiLCBbc2VsZWN0T2JqXSk7CiAgICAgICAgfQogICAgICB9IGVsc2UgewogICAgICAgIC8v5aSa6YCJ6YC76L6RCiAgICAgICAgaWYgKHRoaXMuc2VsZWN0Um93Lmxlbmd0aCA+IDApIHsKICAgICAgICAgIHRoaXMuc2VsZWN0Um93Lm1hcChmdW5jdGlvbiAoaXRlbSkgewogICAgICAgICAgICB2YXIgc2VsZWN0T2JqID0gT2JqZWN0LmFzc2lnbih7CiAgICAgICAgICAgICAgYXBwcm92ZV90eXBlOiA0CiAgICAgICAgICAgIH0sIGl0ZW0pOwogICAgICAgICAgICBzZWxlY3RPYmouc3RyaW5nID0gaXRlbS5FTkFNRTsKCiAgICAgICAgICAgIGlmIChfdGhpczMucmVzdWx0UmlnaHREYXRhLmxpc3QgJiYgX3RoaXMzLnJlc3VsdFJpZ2h0RGF0YS5saXN0Lmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgICB2YXIgZmxhZ0luZGV4ID0gX3RoaXMzLnJlc3VsdFJpZ2h0RGF0YS5saXN0LmZpbmRJbmRleChmdW5jdGlvbiAoaW5uZXIpIHsKICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLklEID09PSBpbm5lci5JRCB8fCBpdGVtLklEID09PSBOdW1iZXIoaW5uZXIuYXBwcm92ZV92YWx1ZSk7CiAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgIGlmIChmbGFnSW5kZXggPT09IC0xKSB7CiAgICAgICAgICAgICAgICAvL+ayoeacieaJvuWIsOebuOWQjOeahOWwseWKoOWFpQogICAgICAgICAgICAgICAgX3RoaXMzLnJlc3VsdFJpZ2h0RGF0YS5saXN0LnB1c2goc2VsZWN0T2JqKTsKICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgX3RoaXMzLiRtZXNzYWdlKHsKICAgICAgICAgICAgICAgICAgbWVzc2FnZTogaXRlbS5FTkFNRSArICLlt7Lnu4/pgInmi6nov4fkuoYs6K+35LiN6KaB6YeN5aSN6YCJ5oup77yBIiwKICAgICAgICAgICAgICAgICAgdHlwZTogJ3dhcm5pbmcnCiAgICAgICAgICAgICAgICB9KTsgLy8gdGhpcy4kTWVzc2FnZS53YXJuaW5nKAogICAgICAgICAgICAgICAgLy8gICBpdGVtLkVOQU1FICsgIuW3sue7j+mAieaLqei/h+S6hizor7fkuI3opoHph43lpI3pgInmi6nvvIEiCiAgICAgICAgICAgICAgICAvLyApOwoKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgX3RoaXMzLiRzZXQoX3RoaXMzLnJlc3VsdFJpZ2h0RGF0YSwgImxpc3QiLCBbc2VsZWN0T2JqXSk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0pOwogICAgICAgICAgdGhpcy5yZXN1bHRSaWdodERhdGEudG90YWwgPyB0aGlzLnJlc3VsdFJpZ2h0RGF0YS50b3RhbCA9IHRoaXMucmVzdWx0UmlnaHREYXRhLmxpc3QubGVuZ3RoIDogdGhpcy4kc2V0KHRoaXMucmVzdWx0UmlnaHREYXRhLCAidG90YWwiLCB0aGlzLnJlc3VsdFJpZ2h0RGF0YS5saXN0Lmxlbmd0aCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHRoaXMuJG1lc3NhZ2UoewogICAgICAgICAgICBtZXNzYWdlOiAn6K+36YCJ5oup5Lq65ZGYJywKICAgICAgICAgICAgdHlwZTogJ3dhcm5pbmcnCiAgICAgICAgICB9KTsgLy8gdGhpcy4kTWVzc2FnZS53YXJuaW5nKCLor7fpgInmi6nkurrlkZgiKTsKICAgICAgICB9CiAgICAgIH0gLy/liLfmlrDooajmoLzmlbDmja4KCgogICAgICB0aGlzLmNvbXBvbmVudHRbMF0ubGlzdC5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICBpdGVtLl9jaGVja2VkID0gZmFsc2U7CiAgICAgIH0pOwogICAgICB0aGlzLmNvbXBvbmVudHRbMF0ubGlzdCA9IHRoaXMuY29tcG9uZW50dFswXS5saXN0LmNvbmNhdChbXSk7CgogICAgICBpZiAodGhpcy5zZWxlY3RSb3cubGVuZ3RoID4gMCkgewogICAgICAgIC8v6YCJ5Lit54q25oCB55qE5riF6ZmkCiAgICAgICAgdGhpcy5zZWxlY3RSb3cgPSBbXTsKICAgICAgfQoKICAgICAgaWYgKE9iamVjdC5rZXlzKHRoaXMuc2VsZWN0RGF0YXMpLmxlbmd0aCA+IDApIHsKICAgICAgICB0aGlzLnNlbGVjdERhdGFzID0ge307CiAgICAgIH0KCiAgICAgIHRoaXMuJGVtaXQoImdldFJlc3VsdCIsIHRoaXMucmVzdWx0UmlnaHREYXRhKTsKICAgICAgdGhpcy4kZW1pdCgib24tdHJhbnNmZXIiLCB0aGlzKTsKICAgIH0sCiAgICBkZWxldGVMaTogZnVuY3Rpb24gZGVsZXRlTGkoaW5kZXgsIHRlbSkgewogICAgICB2YXIgX3RoaXM0ID0gdGhpczsKCiAgICAgIHZhciBzZWxlY3ROb2RlID0gdGhpcy4kcmVmcy5UcmVlLmdldENoZWNrZWROb2RlcygpOwoKICAgICAgaWYgKHNlbGVjdE5vZGUgJiYgc2VsZWN0Tm9kZS5sZW5ndGggPiAwKSB7CiAgICAgICAgc2VsZWN0Tm9kZS5tYXAoZnVuY3Rpb24gKGluSXRlbSkgewogICAgICAgICAgaWYgKGluSXRlbS5JRCA9PT0gdGVtLklEKSB7CiAgICAgICAgICAgIF90aGlzNC4kcmVmcy5UcmVlLmhhbmRsZUNoZWNrKHsKICAgICAgICAgICAgICBjaGVja2VkOiBmYWxzZSwKICAgICAgICAgICAgICBub2RlS2V5OiBpbkl0ZW0ubm9kZUtleQogICAgICAgICAgICB9KTsKICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgfQoKICAgICAgdmFyIHNlbGVjdHJvdyA9IHRoaXMuVGFiUGFuZURhdGFbMF0ubGlzdDsgLy/ooajmoLzmlbDmja4KCiAgICAgIHNlbGVjdHJvdy5tYXAoZnVuY3Rpb24gKHJvdywgSW5kZXgpIHsKICAgICAgICBpZiAocm93LklEID09PSB0ZW0uSUQpIHsKICAgICAgICAgIHJvdy5fY2hlY2tlZCA9IGZhbHNlOwogICAgICAgIH0KICAgICAgfSk7CiAgICAgIHRoaXMucmVzdWx0UmlnaHREYXRhLmxpc3Quc3BsaWNlKGluZGV4LCAxKTsKICAgICAgdGhpcy5yZXN1bHRSaWdodERhdGEudG90YWwgPSB0aGlzLnJlc3VsdFJpZ2h0RGF0YS5saXN0Lmxlbmd0aDsKICAgICAgdGhpcy4kZW1pdCgiZ2V0UmVzdWx0IiwgdGhpcy5yZXN1bHRSaWdodERhdGEpOwogICAgICB0aGlzLiRlbWl0KCJvbi1kZWxlY3RsaSIsIGluZGV4LCB0ZW0sIHRoaXMpOwogICAgfSwKICAgIHRyZWVPcGVuOiBmdW5jdGlvbiB0cmVlT3BlbihjaGVja2VkKSB7CiAgICAgIHRoaXMuc2hvd1RyZWUgPSAhY2hlY2tlZDsKICAgICAgdGhpcy50cmVlTmV3RGF0YS5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgaXRlbS5leHBhbmQgPSAhaXRlbS5leHBhbmQ7CiAgICAgIH0pOwogICAgfSwKICAgIGRlbGVjRnVuOiBmdW5jdGlvbiBkZWxlY0Z1bigpIHsKICAgICAgdmFyIF90aGlzNSA9IHRoaXM7CgogICAgICB2YXIgc2VsZWN0Tm9kZSA9IHRoaXMuJHJlZnMuVHJlZS5nZXRDaGVja2VkTm9kZXMoKTsKCiAgICAgIGlmIChzZWxlY3ROb2RlICYmIHNlbGVjdE5vZGUubGVuZ3RoID4gMCkgewogICAgICAgIHNlbGVjdE5vZGUubWFwKGZ1bmN0aW9uIChpbkl0ZW0pIHsKICAgICAgICAgIF90aGlzNS4kcmVmcy5UcmVlLmhhbmRsZUNoZWNrKHsKICAgICAgICAgICAgY2hlY2tlZDogZmFsc2UsCiAgICAgICAgICAgIG5vZGVLZXk6IGluSXRlbS5ub2RlS2V5CiAgICAgICAgICB9KTsKICAgICAgICB9KTsKICAgICAgfQoKICAgICAgdmFyIHNlbGVjdHJvdyA9IHRoaXMuVGFiUGFuZURhdGFbMF0ubGlzdDsgLy/ooajmoLzmlbDmja4KCiAgICAgIGlmIChzZWxlY3Ryb3cgJiYgc2VsZWN0cm93Lmxlbmd0aCA+IDApIHsKICAgICAgICBzZWxlY3Ryb3cubWFwKGZ1bmN0aW9uIChyb3csIEluZGV4KSB7CiAgICAgICAgICByb3cuX2NoZWNrZWQgPSBmYWxzZTsKICAgICAgICB9KTsKICAgICAgfQoKICAgICAgdGhpcy4kZW1pdCgib24tZGVsZUJ0biIsIHRoaXMpOwogICAgICB0aGlzLnJlc3VsdFJpZ2h0RGF0YS50b3RhbCA9IDA7CiAgICAgIHRoaXMucmVzdWx0UmlnaHREYXRhLmxpc3QgPSBbXTsKICAgICAgdGhpcy5jb21wb25lbnR0WzBdLmxpc3QubWFwKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgaXRlbS5fY2hlY2tlZCA9IGZhbHNlOwogICAgICB9KTsKICAgICAgdGhpcy5jb21wb25lbnR0WzBdLmxpc3QgPSB0aGlzLmNvbXBvbmVudHRbMF0ubGlzdC5jb25jYXQoW10pOwogICAgICB0aGlzLiRlbWl0KCJnZXRSZXN1bHQiLCB0aGlzLnJlc3VsdFJpZ2h0RGF0YSk7CiAgICB9LAogICAgLy/mn6Xmib7nlKjmiLfkv6Hmga8KICAgIGZpbmRVc2VyOiBmdW5jdGlvbiBmaW5kVXNlcihwYXJhbSkgewogICAgICB2YXIgX3RoaXM2ID0gdGhpczsKCiAgICAgIHRoaXMudGFibGVMb2FkaW5nID0gdHJ1ZTsKICAgICAgYWRkR2VubXV0aXBvcnVkZXIocGFyYW0pLnRoZW4oZnVuY3Rpb24gKHJlcykgewogICAgICAgIF90aGlzNi50YWJsZUxvYWRpbmcgPSBmYWxzZTsKICAgICAgICB2YXIgZGF0YSA9IHJlczsKCiAgICAgICAgaWYgKHJlcy5jb2RlID09PSAwKSB7CiAgICAgICAgICBpZiAoZGF0YS5kYXRhKSB7CiAgICAgICAgICAgIF90aGlzNi50cmFuc2ZlclRib2R5KGRhdGEuZGF0YSk7CiAgICAgICAgICB9CgogICAgICAgICAgaWYgKGRhdGEuZGF0YXMpIHsKICAgICAgICAgICAgX3RoaXM2LnRyYW5zZmVyVGJvZHkoZGF0YS5kYXRhcyk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9KTsKICAgIH0sCiAgICAvL+ihqOagvOS9k+aVsOaNrui9rOWMlgogICAgdHJhbnNmZXJUYm9keTogZnVuY3Rpb24gdHJhbnNmZXJUYm9keShkYXRhKSB7CiAgICAgIHZhciBfdGhpczcgPSB0aGlzOwoKICAgICAgdGhpcy5jb21wb25lbnR0WzBdLnRvdGFsID0gZGF0YS50b3RhbFJvd0NvdW50OwogICAgICB0aGlzLmNvbXBvbmVudHRbMF0ucGFnZU9wdGlvbnMgPSBkYXRhLnNlbGVjdHJhbmdlOwogICAgICB0aGlzLmNvbXBvbmVudHRbMF0ubGlzdCA9IFtdOwogICAgICBkYXRhLnJvdy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICB2YXIgdGVtID0ge307CiAgICAgICAgdmFyIHRlbXZhbCA9IHt9OwogICAgICAgIE9iamVjdC5rZXlzKGl0ZW0pLm1hcChmdW5jdGlvbiAoaW5uZXIpIHsKICAgICAgICAgIHRlbVtpbm5lcl0gPSBpdGVtW2lubmVyXS52YWw7CiAgICAgICAgfSk7CiAgICAgICAgdGVtdmFsID0gT2JqZWN0LmFzc2lnbih7fSwgdGVtKTsKCiAgICAgICAgX3RoaXM3LmNvbXBvbmVudHRbMF0ubGlzdC5wdXNoKHRlbSk7CiAgICAgIH0pOwogICAgfSwKICAgIC8v6I635Y+W5qCR5pWw5o2uCiAgICBnZXRUcmVlRGF0YTogZnVuY3Rpb24gZ2V0VHJlZURhdGEoKSB7CiAgICAgIHZhciBfdGhpczggPSB0aGlzOwoKICAgICAgdGhpcy50cmVlX2xvYWRpbmcgPSB0cnVlOwogICAgICBhZGRHZW5tdXRpcG9ydHJlZSgpLnRoZW4oZnVuY3Rpb24gKHJlcykgewogICAgICAgIF90aGlzOC50cmVlX2xvYWRpbmcgPSBmYWxzZTsKCiAgICAgICAgaWYgKHJlcy5yZXN1bHRDb2RlID09PSAwKSB7CiAgICAgICAgICBjb25zb2xlLmxvZygzNDU2NzgpOwogICAgICAgICAgX3RoaXM4LnRyZWVOZXdEYXRhID0gW107CiAgICAgICAgICB2YXIgbmV3QXJyID0gW107CiAgICAgICAgICB2YXIgcm9vdCA9IHt9OwoKICAgICAgICAgIGlmIChyZXMuZGF0YS5yZWNvcmRzLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgY29uc29sZS5sb2coMzQ1Njc4OCk7CiAgICAgICAgICAgIHJlcy5kYXRhLnJlY29yZHMuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkgewogICAgICAgICAgICAgIHZhciB0ZW0gPSBPYmplY3QuYXNzaWduKGl0ZW0pOwogICAgICAgICAgICAgIG5ld0Fyci5wdXNoKHRlbSk7CgogICAgICAgICAgICAgIGlmIChpdGVtWyJDUF9DX09SR1VQX0lEIl0gPT09IG51bGwgfHwgaXRlbVsiQ1BfQ19PUkdVUF9JRCJdID09PSAiIikgewogICAgICAgICAgICAgICAgcm9vdCA9IE9iamVjdC5hc3NpZ24oe30sIGl0ZW0pOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIF90aGlzOC50cmVlTmV3RGF0YSA9IF90aGlzOC5hcnJheVRyYW5zVHJlZShuZXdBcnIsICJDUF9DX09SR1VQX0lEIik7CiAgICAgICAgICAgIGNvbnNvbGUubG9nKF90aGlzOC50cmVlTmV3RGF0YSk7CiAgICAgICAgICB9CgogICAgICAgICAgX3RoaXM4LmZpbmRVc2VyKHt9KTsgLy/mmL7npLrmiYDmnInnmoTnlKjmiLcKCiAgICAgICAgfQogICAgICB9KTsKICAgIH0sCiAgICAvL+aUuemAoOagkeaVsOaNrueahOe7k+aehAogICAgYXJyYXlUcmFuc1RyZWU6IGZ1bmN0aW9uIGFycmF5VHJhbnNUcmVlKGxpc3QsIGtleSkgewogICAgICB2YXIgcGFyZW50ID0gW107CiAgICAgIHZhciBjaGlsZHJlbiA9IFtdOwogICAgICBsaXN0Lm1hcChmdW5jdGlvbiAoaXRlbSkgewogICAgICAgIGl0ZW0uZXhwYW5kID0gZmFsc2U7CiAgICAgICAgaXRlbS50aXRsZSA9IGl0ZW0uRU5BTUU7CgogICAgICAgIGlmICghaXRlbVtrZXldIHx8IGl0ZW1ba2V5XS5pbmRleE9mKCcuJykgIT09IC0xICYmICFpdGVtW2tleV0uc3BsaXQoIi4iKVsxXSkgewogICAgICAgICAgLy/moLnoioLngrkKICAgICAgICAgIHBhcmVudC5wdXNoKGl0ZW0pOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAvL+acieeItuiKgueCueeahAogICAgICAgICAgY2hpbGRyZW4ucHVzaChpdGVtKTsKICAgICAgICB9CiAgICAgIH0pOwoKICAgICAgaWYgKHBhcmVudC5sZW5ndGggPCAxKSB7CiAgICAgICAgLy/msqHmnInmoLnoioLngrkKICAgICAgICB2YXIgbmV3UGFyZW50ID0gdGhpcy5maW5kVHJlZVJvb3RGaXJzdENoaWxkKGxpc3QsIGtleSk7IC8v5ou/5Yiw5LiA57qn6IqC54K5CgogICAgICAgIHZhciByb290QXJyID0gbmV3UGFyZW50Lm1hcChmdW5jdGlvbiAoaXRlbSkgewogICAgICAgICAgcmV0dXJuIGl0ZW1ba2V5XTsKICAgICAgICB9KTsKICAgICAgICB2YXIgcm9vdFRlbSA9IEFycmF5LmZyb20obmV3IFNldChfdG9Db25zdW1hYmxlQXJyYXkocm9vdEFycikpKTsKCiAgICAgICAgaWYgKHJvb3RUZW0ubGVuZ3RoID09PSAxKSB7CiAgICAgICAgICBwYXJlbnQgPSBbewogICAgICAgICAgICBDUF9DX09SR1VQX0lEOiBudWxsLAogICAgICAgICAgICBFQ09ERTogIjAwMDAwIiwKICAgICAgICAgICAgRU5BTUU6ICLlhajpg6giLAogICAgICAgICAgICBJRDogcm9vdFRlbVswXSwKICAgICAgICAgICAgTUlYTkFNRTogIlswMDAwMF3lhajpg6giLAogICAgICAgICAgICBPUkdUWVBFOiAiSU4iLAogICAgICAgICAgICBUWVBFOiAiQ1BfQ19IUk9SR19JRCIsCiAgICAgICAgICAgIHRpdGxlOiAn5YWo6YOoJwogICAgICAgICAgfV07CiAgICAgICAgICB0aGlzLnRyYW5zbGF0b3IocGFyZW50LCBjaGlsZHJlbiwga2V5KTsKICAgICAgICAgIHJldHVybiBwYXJlbnQ7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHRoaXMuJG1lc3NhZ2UoewogICAgICAgICAgICBtZXNzYWdlOiAn5pWw5o2u5pyJ6Zeu6aKY77yM6K+35qOA5p+lLi4uJywKICAgICAgICAgICAgdHlwZTogJ3dhcm5pbmcnCiAgICAgICAgICB9KTsgLy8gdGhpcy4kTWVzc2FnZS53YXJuaW5nKCLmlbDmja7mnInpl67popjvvIzor7fmo4Dmn6UuLi4iKTsKCiAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICB9IGVsc2UgewogICAgICAgIHRoaXMudHJhbnNsYXRvcihwYXJlbnQsIGNoaWxkcmVuLCBrZXkpOwogICAgICAgIHJldHVybiBwYXJlbnQ7CiAgICAgIH0KICAgIH0sCiAgICB0cmFuc2xhdG9yOiBmdW5jdGlvbiB0cmFuc2xhdG9yKHBhcmVudHMsIGNoaWxkcmVuLCBrZXkpIHsKICAgICAgdmFyIF90aGlzOSA9IHRoaXM7CgogICAgICB2YXIgdGVtcCA9IFtdOwogICAgICBjaGlsZHJlbi5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICAvL+WvueWtkOiKgueCueaVsOaNrui/m+ihjOa3seWkjeWItu+8jOi/memHjOWPquaUr+aMgemDqOWIhuexu+Wei+eahOaVsOaNrua3seWkjeWItgogICAgICAgIHZhciB0ZW1JdGVtID0gT2JqZWN0LmFzc2lnbih7fSwgaXRlbSk7CiAgICAgICAgdGVtcC5wdXNoKHRlbUl0ZW0pOwogICAgICB9KTsgLy/pgY3ljobniLboioLngrnmlbDmja4KCiAgICAgIHBhcmVudHMubWFwKGZ1bmN0aW9uIChwYXJlbnQpIHsKICAgICAgICAvL+mBjeWOhuWtkOiKgueCueaVsOaNrgogICAgICAgIGNoaWxkcmVuLm1hcChmdW5jdGlvbiAoY3VycmVudCwgaW5kZXgpIHsKICAgICAgICAgIC8v5q2k5pe25om+5Yiw54i26IqC54K55a+55bqU55qE5LiA5Liq5a2Q6IqC54K5CiAgICAgICAgICBpZiAoY3VycmVudFtrZXldID09PSBwYXJlbnQuSUQpIHsKICAgICAgICAgICAgLy/orqnlvZPliY3lrZDoioLngrnku450ZW1w5Lit56e76Zmk77yMdGVtcOS9nOS4uuaWsOeahOWtkOiKgueCueaVsOaNru+8jOi/memHjOaYr+S4uuS6huiuqemAkuW9kuaXtu+8jOWtkOiKgueCueeahOmBjeWOhuasoeaVsOabtOWwke+8jOWmguaenOeItuWtkOWFs+ezu+eahOWxgue6p+i2iuWkmu+8jOi2iuacieWIqQogICAgICAgICAgICB0ZW1wLnNwbGljZShpbmRleCwgMSk7IC8v6K6p5b2T5YmN5a2Q6IqC54K55L2c5Li65ZSv5LiA55qE54i26IqC54K577yM5Y676YCS5b2S5p+l5om+5YW25a+55bqU55qE5a2Q6IqC54K5CgogICAgICAgICAgICBfdGhpczkudHJhbnNsYXRvcihbY3VycmVudF0sIHRlbXAsIGtleSk7IC8v5oqK5om+5Yiw5a2Q6IqC54K55pS+5YWl54i26IqC54K555qEY2hpbGRyZW7lsZ7mgKfkuK0KCgogICAgICAgICAgICBwYXJlbnQuY2hpbGRyZW4gPyBwYXJlbnQuY2hpbGRyZW4ucHVzaChjdXJyZW50KSA6IHBhcmVudC5jaGlsZHJlbiA9IFtjdXJyZW50XTsKICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgfSk7CiAgICB9LAogICAgdHJlZVRyYW5zQXJyYXk6IGZ1bmN0aW9uIHRyZWVUcmFuc0FycmF5KHRyZWUsIGtleSkgewogICAgICByZXR1cm4gdHJlZS5yZWR1Y2UoZnVuY3Rpb24gaXRlcmF0aW9uKGNvbiwgaXRlbSkgewogICAgICAgIGNvbi5wdXNoKGl0ZW0pOwogICAgICAgIGlmIChpdGVtW2tleV0gJiYgaXRlbVtrZXldLmxlbmd0aCA+IDApIGl0ZW1ba2V5XS5yZWR1Y2UoaXRlcmF0aW9uLCBjb24pOwogICAgICAgIHJldHVybiBjb247CiAgICAgIH0sIFtdKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICBpdGVtW2tleV0gPSBbXTsKICAgICAgICByZXR1cm4gaXRlbTsKICAgICAgfSk7CiAgICB9LAogICAgZmluZFRyZWVSb290Rmlyc3RDaGlsZDogZnVuY3Rpb24gZmluZFRyZWVSb290Rmlyc3RDaGlsZChBcnIsIGtleSkgewogICAgICB2YXIgaWRBcnIgPSBbXTsKICAgICAgdmFyIHJlc3VsdCA9IFtdOwogICAgICBpZEFyciA9IEFyci5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICByZXR1cm4gaXRlbVsiSUQiXTsKICAgICAgfSk7CiAgICAgIEFyci5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICBpZiAoIWlkQXJyLmluY2x1ZGVzKGl0ZW1ba2V5XSkpIHsKICAgICAgICAgIC8v5LiA57qn6IqC54K555qE54m554K55piv5a2Y5Zyo54i26IqC54K5IOS9huaYr+W3sueItuiKgueCueS4uklE55qE6IqC54K55piv5LiN5a2Y5Zyo55qECiAgICAgICAgICByZXN1bHQucHVzaChpdGVtKTsKICAgICAgICB9CiAgICAgIH0pOwogICAgICByZXR1cm4gcmVzdWx0OwogICAgfSwKICAgIGhhbmRsZUNoZWNrQ2hhbmdlOiBmdW5jdGlvbiBoYW5kbGVDaGVja0NoYW5nZSgpIHt9CiAgfSwKICBtb3VudGVkOiBmdW5jdGlvbiBtb3VudGVkKCkgey8vIGlmKHRoaXMuaXNDYWxsSW50ZXJmYWNlKXsKICAgIC8vICAgdGhpcy5nZXRUcmVlRGF0YSgpOwogICAgLy8gICBpZiAodGhpcy5yZXN1bHREYXRhLmxpc3QpIHsKICAgIC8vICAgICB0aGlzLnJlc3VsdFJpZ2h0RGF0YSA9IHRoaXMuZGVlcENvcHkodGhpcy5yZXN1bHREYXRhKTsKICAgIC8vICAgfQogICAgLy8gfWVsc2V7CiAgICAvLyAgICBpZiAodGhpcy5zZWxlY3RSb3cubGVuZ3RoID4gMCkgewogICAgLy8gICAgICAgdGhpcy5zZWxlY3RSb3cgPSBbXTsKICAgIC8vICAgICB9CiAgICAvLyAgICAgaWYgKE9iamVjdC5rZXlzKHRoaXMuc2VsZWN0RGF0YXMpLmxlbmd0aCA+IDApIHsKICAgIC8vICAgICAgIHRoaXMuc2VsZWN0RGF0YXMgPSB7fTsKICAgIC8vICAgICB9CiAgICAvLyAgICAgaWYgKHRoaXMudGFibGUuc2VhcmNoKSB7CiAgICAvLyAgICAgICB0aGlzLnRhYmxlLnNlYXJjaCA9ICIiOwogICAgLy8gICAgIH0KICAgIC8vIH0KICB9LAogIGRlc3Ryb3llZDogZnVuY3Rpb24gZGVzdHJveWVkKCkgewogICAgaWYgKHRoaXMuc2VsZWN0Um93Lmxlbmd0aCA+IDApIHsKICAgICAgdGhpcy5zZWxlY3RSb3cgPSBbXTsKICAgIH0KCiAgICBpZiAoT2JqZWN0LmtleXModGhpcy5zZWxlY3REYXRhcykubGVuZ3RoID4gMCkgewogICAgICB0aGlzLnNlbGVjdERhdGFzID0ge307CiAgICB9CgogICAgaWYgKHRoaXMudGFibGUuc2VhcmNoKSB7CiAgICAgIHRoaXMudGFibGUuc2VhcmNoID0gIiI7CiAgICB9CiAgfQp9Ow=="},null]}
|