{"remainingRequest":"D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\thread-loader\\dist\\cjs.js!D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\babel-loader\\lib\\index.js!D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\eslint-loader\\index.js??ref--13-0!D:\\jenkins\\workspace\\xcjy-fvue\\src\\store\\menu.js","dependencies":[{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\src\\store\\menu.js","mtime":1741314105284},{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\babel.config.js","mtime":1741314102158},{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\thread-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\babel-loader\\lib\\index.js","mtime":456789000000},{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\eslint-loader\\index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9yZWdlbmVyYXRvclJ1bnRpbWUuanMiOwppbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIGZyb20gIkQ6L2plbmtpbnMvd29ya3NwYWNlL3hjanktZnZ1ZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXMuanMiOwppbXBvcnQgX2FzeW5jVG9HZW5lcmF0b3IgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3luY1RvR2VuZXJhdG9yLmpzIjsKaW1wb3J0IF9vYmplY3RTcHJlYWQgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RTcHJlYWQyLmpzIjsKdmFyIF9leGNsdWRlZCA9IFsiY2hpbGRyZW4iLCAiYWxpYXMiXTsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuY29uY2F0LmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuam9pbi5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5Lm1hcC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LnB1c2guanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5zb3J0LmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuc3BsaWNlLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuZnVuY3Rpb24ubmFtZS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLml0ZXJhdG9yLmNvbnN0cnVjdG9yLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuaXRlcmF0b3IuZm9yLWVhY2guanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5pdGVyYXRvci5tYXAuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5pdGVyYXRvci5zb21lLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuanNvbi5zdHJpbmdpZnkuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3Qua2V5cy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC50by1zdHJpbmcuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy93ZWIuZG9tLWNvbGxlY3Rpb25zLmZvci1lYWNoLmpzIjsKaW1wb3J0IHBvcnRhbCBmcm9tICdAL2FwaS9wb3J0YWwuanMnOwppbXBvcnQgcHJvY2VzcyBmcm9tICdAL2FwaS9wcm9jZXNzLmpzJzsKdmFyIHN0YXRlID0gewogIGFsbDogW10sCiAgLy/oj5zljZXmlbDmja4KICByZXNpZHVhbDogZmFsc2UsCiAgLy/miYvliqjkv67mlLnkuoboj5zljZXnmoTmoIforrAKICBzdGF0ZW1lbnQ6IFtdLAogIC8v5oql6KGo5Lit5b+D6I+c5Y2VCiAgcGFnaW5hdGlvbjoge30sCiAgLy/liIbpobXlj4LmlbAKICByb3dzOiBbXSwKICAvL+aWsOmXu+WKqOaAgeWIl+ihqOaVsOaNrgogIG5vdGljZTogW10sCiAgLy/lj5HmloflhazlkYrliJfooajmlbDmja4KICB0b3RhbDogMCwKICAvL+WIl+ihqOaVsOaNruaAu+adoeaVsAogIGZpbGVzRGF0YToge30sCiAgLy/mlrDpl7vlhazlkYror6bmg4UKICBtZWV0aW5nOiBbXSwKICAvL+S8muiuruWIl+ihqAogIG1lbnVNYXBzOiB7fSwKICAvL+WKqOaAgeiPnOWNleaVsOaNrgogIGN1cnJlbnRNZW51OiB7fSwKICAvL+W9k+WJjeS4gOe6p+iPnOWNlQogIGNvbHVtbkFsaWFzQXJ5OiBbXSwKICAvL+W9k+WJjeimgeivt+axguagj+ebruaVsOaNrueahOWIq+WQjeaVsOe7hAogIGNvbHVtblF1ZXJ5TWVyZ2luZzogbnVsbCwKICAvL+iOt+WPluagj+ebruaVsOaNrueahOivt+axguWQiOW5tuagh+iusOWPmOmHjwogIGNvbHVtbkRhdGE6IHt9LAogIC8v5ZCE5qCP55uu55qE5pWw5o2uCiAgY29sdW1uRGF0YUxvYWRlZEFsaWFzZXM6IG51bGwsCiAgc3lzTWVudXM6IFtdLAogIC8v57O757uf5ZCO5Y+w6I+c5Y2VCiAgZnJvbnRNZW51czogW10sCiAgLy/liY3lj7Doj5zljZUKICByb2xlTWVudXM6IFtdIC8vIOinkuiJsuiPnOWNlQp9Owp2YXIgZ2V0dGVycyA9IHsKICBnZXRDb2x1bW5EYXRhV2l0aEFsaWFzOiBmdW5jdGlvbiBnZXRDb2x1bW5EYXRhV2l0aEFsaWFzKHN0YXRlKSB7CiAgICByZXR1cm4gZnVuY3Rpb24gKGFsaWFzKSB7CiAgICAgIHJldHVybiBzdGF0ZS5jb2x1bW5EYXRhW2FsaWFzXTsKICAgIH07CiAgfSwKICBoYXNDb2x1bW5EYXRhV2l0aEFsaWFzOiBmdW5jdGlvbiBoYXNDb2x1bW5EYXRhV2l0aEFsaWFzKHN0YXRlKSB7CiAgICByZXR1cm4gZnVuY3Rpb24gKGFsaWFzKSB7CiAgICAgIHJldHVybiBzdGF0ZS5jb2x1bW5EYXRhLmhhc093blByb3BlcnR5KGFsaWFzKTsKICAgIH07CiAgfSwKICBmcm9udE1lbnVzOiBmdW5jdGlvbiBmcm9udE1lbnVzKHN0YXRlKSB7CiAgICByZXR1cm4gc3RhdGUuZnJvbnRNZW51czsKICB9LAogIHN5c01lbnVzOiBmdW5jdGlvbiBzeXNNZW51cyhzdGF0ZSkgewogICAgcmV0dXJuIHN0YXRlLnN5c01lbnVzOwogIH0sCiAgcm9sZU1lbnU6IGZ1bmN0aW9uIHJvbGVNZW51KHN0YXRlKSB7CiAgICByZXR1cm4gc3RhdGUucm9sZU1lbnU7CiAgfQp9Owp2YXIgYWN0aW9ucyA9IHsKICBhY3Rpb25zUm9sZU1lbnU6IGZ1bmN0aW9uIGFjdGlvbnNSb2xlTWVudShfcmVmLCByb2xlQ29kZXMpIHsKICAgIHZhciBjb21taXQgPSBfcmVmLmNvbW1pdCwKICAgICAgc3RhdGUgPSBfcmVmLnN0YXRlOwogICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgLy8g6KeS6Imy6I+c5Y2V5q+P5qyh6YO96K+35rGC5o6l5Y+j77yM5LiN5YGa57yT5a2YCiAgICAgIHBvcnRhbC5nZXRSb2xlTWVudXMocm9sZUNvZGVzKS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7CiAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnY3VycmVudFJvbGVNZW51cycsIEpTT04uc3RyaW5naWZ5KGRhdGEpKTsKICAgICAgICBjb21taXQoJ211dGF0aW9uUm9sZU1lbnVzJywgZGF0YSk7CiAgICAgICAgcmVzb2x2ZShkYXRhKTsKICAgICAgfSk7CiAgICB9KTsKICB9LAogIGFjdGlvblN5c01lbnVzOiBmdW5jdGlvbiBhY3Rpb25TeXNNZW51cyhfcmVmMikgewogICAgdmFyIGNvbW1pdCA9IF9yZWYyLmNvbW1pdCwKICAgICAgc3RhdGUgPSBfcmVmMi5zdGF0ZTsKICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgIGlmIChzdGF0ZS5tZW51cyAmJiBzdGF0ZS5tZW51cy5sZW5ndGggPj0gMSkgewogICAgICAgIHJlc29sdmUoKTsKICAgICAgfSBlbHNlIGlmIChzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdjdXJyZW50U3lzTWVudXMnKSkgewogICAgICAgIHZhciBtZW51cyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2N1cnJlbnRTeXNNZW51cycpOwogICAgICAgIGNvbW1pdCgnbXV0YXRpb25TeXNNZW51cycsIEpTT04ucGFyc2UobWVudXMpKTsKICAgICAgICByZXNvbHZlKEpTT04ucGFyc2UobWVudXMpKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBwb3J0YWwuZ2V0U3lzTWVudXMoKS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7CiAgICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdjdXJyZW50U3lzTWVudXMnLCBKU09OLnN0cmluZ2lmeShkYXRhKSk7CiAgICAgICAgICBjb21taXQoJ211dGF0aW9uU3lzTWVudXMnLCBkYXRhKTsKICAgICAgICAgIHJlc29sdmUoZGF0YSk7CiAgICAgICAgfSk7CiAgICAgIH0KICAgIH0pOwogIH0sCiAgYWN0aW9uRnJvbnRNZW51czogZnVuY3Rpb24gYWN0aW9uRnJvbnRNZW51cyhfcmVmMykgewogICAgdmFyIGNvbW1pdCA9IF9yZWYzLmNvbW1pdCwKICAgICAgc3RhdGUgPSBfcmVmMy5zdGF0ZTsKICAgIC8vIOmAkuW9kuihpeWFheWFqOi3r+eUsei3r+W+hOaWueazlQogICAgdmFyIF9wcm9jZXNzUm91dGluZyA9IGZ1bmN0aW9uIHByb2Nlc3NSb3V0aW5nKHRyZWVEYXRhKSB7CiAgICAgIHZhciBwYXJlbnRQYXRoQXJyID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiBbXTsKICAgICAgcmV0dXJuIHRyZWVEYXRhLm1hcChmdW5jdGlvbiAoaXRlbSkgewogICAgICAgIC8vIOWwhuW9k+WJjeiKgueCueeahGFsaWFz5re75Yqg5Yiw6Lev5b6E5pWw57uE5LitCiAgICAgICAgdmFyIGN1cnJlbnRQYXRoID0gcGFyZW50UGF0aEFyci5jb25jYXQoaXRlbS5hbGlhcyk7CiAgICAgICAgdmFyIGNoaWxkcmVuID0gW107CiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaXRlbS5jaGlsZHJlbikgJiYgaXRlbS5jaGlsZHJlbi5sZW5ndGgpIHsKICAgICAgICAgIGNoaWxkcmVuID0gX3Byb2Nlc3NSb3V0aW5nKGl0ZW0uY2hpbGRyZW4sIGN1cnJlbnRQYXRoKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgaXRlbSksIHt9LCB7CiAgICAgICAgICBjaGlsZHJlbjogY2hpbGRyZW4sCiAgICAgICAgICByb3V0ZXJQYXRoOiAnLycgKyBjdXJyZW50UGF0aC5qb2luKCcvJyksCiAgICAgICAgICBwYXRoQXJyOiBjdXJyZW50UGF0aAogICAgICAgIH0pOwogICAgICB9KTsKICAgIH07CiAgICByZXR1cm4gbmV3IFByb21pc2UoLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHsKICAgICAgdmFyIF9yZWY0ID0gX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUocmVzb2x2ZSkgewogICAgICAgIHZhciBtZW51cywgbWVudTsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZSQoX2NvbnRleHQpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0LnByZXYgPSBfY29udGV4dC5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBpZiAoIShzdGF0ZS5mcm9udE1lbnVzICYmIHN0YXRlLmZyb250TWVudXMubGVuZ3RoID49IDEpKSB7CiAgICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gNDsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICByZXNvbHZlKHN0YXRlLmZyb250TWVudXMpOwogICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAxOTsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSA0OgogICAgICAgICAgICAgIGlmICghc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnY3VycmVudEZyb250TWVudXMnKSkgewogICAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDEwOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIG1lbnVzID0gSlNPTi5wYXJzZShzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdjdXJyZW50RnJvbnRNZW51cycpKTsKICAgICAgICAgICAgICBjb21taXQoJ211dGF0aW9uRnJvbnRNZW51cycsIG1lbnVzKTsKICAgICAgICAgICAgICByZXNvbHZlKG1lbnVzKTsKICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gMTk7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgMTA6CiAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDEyOwogICAgICAgICAgICAgIHJldHVybiBwb3J0YWwuZ2V0RnJvbnRNZW51cygpOwogICAgICAgICAgICBjYXNlIDEyOgogICAgICAgICAgICAgIF9jb250ZXh0LnQwID0gX2NvbnRleHQuc2VudDsKICAgICAgICAgICAgICBpZiAoX2NvbnRleHQudDApIHsKICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAxNTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBfY29udGV4dC50MCA9IFtdOwogICAgICAgICAgICBjYXNlIDE1OgogICAgICAgICAgICAgIG1lbnUgPSBfY29udGV4dC50MC5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICAgICAgICAgIHZhciBjaGlsZHJlbiA9IGl0ZW0uY2hpbGRyZW4sCiAgICAgICAgICAgICAgICAgIGFsaWFzID0gaXRlbS5hbGlhcywKICAgICAgICAgICAgICAgICAgaSA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhpdGVtLCBfZXhjbHVkZWQpOwogICAgICAgICAgICAgICAgdmFyIHJvdXRlclBhdGggPSBhbGlhcyA9PT0gJ25vcm1hbCcgPyAncGxhdExheW91dCcgOiBhbGlhczsKICAgICAgICAgICAgICAgIC8vIOWIneWni+WMluesrOS4gOe6p+WIq+eahHBhdGhBcnIKICAgICAgICAgICAgICAgIHZhciBwYXRoQXJyID0gW3JvdXRlclBhdGhdOwogICAgICAgICAgICAgICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgaSksIHt9LCB7CiAgICAgICAgICAgICAgICAgIGFsaWFzOiBhbGlhcywKICAgICAgICAgICAgICAgICAgcm91dGVyUGF0aDogIi8iLmNvbmNhdChyb3V0ZXJQYXRoKSwKICAgICAgICAgICAgICAgICAgcGF0aEFycjogcGF0aEFyciwKICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IF9wcm9jZXNzUm91dGluZyhjaGlsZHJlbiwgcGF0aEFycikKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ2N1cnJlbnRGcm9udE1lbnVzJywgSlNPTi5zdHJpbmdpZnkobWVudSkpOwogICAgICAgICAgICAgIGNvbW1pdCgnbXV0YXRpb25Gcm9udE1lbnVzJywgbWVudSk7CiAgICAgICAgICAgICAgcmVzb2x2ZShtZW51KTsKICAgICAgICAgICAgY2FzZSAxOToKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWUpOwogICAgICB9KSk7CiAgICAgIHJldHVybiBmdW5jdGlvbiAoX3gpIHsKICAgICAgICByZXR1cm4gX3JlZjQuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgICAgfTsKICAgIH0oKSk7CiAgfSwKICAvLyDmn6Xor6LpnZnmgIHotYTmupDnm67lvZUKICBnZXRTdGF0aWNNZW51czogZnVuY3Rpb24gZ2V0U3RhdGljTWVudXMoX3JlZjUpIHsKICAgIHZhciBjb21taXQgPSBfcmVmNS5jb21taXQ7CiAgICBwb3J0YWwuZ2V0TWVudXMoZnVuY3Rpb24gKG1lbnVzKSB7CiAgICAgIGNvbW1pdCgnYXBwZW5kTWVudXMnLCBtZW51cyk7CiAgICB9KTsKICB9LAogIC8vIOafpeivoua1geeoi+S4reW/g+S4i+eahOi1hOa6kOebruW9lQogIGdldFN5bmNNZW51czogZnVuY3Rpb24gZ2V0U3luY01lbnVzKF9yZWY2LCBpc0xlYWRlcikgewogICAgdmFyIGNvbW1pdCA9IF9yZWY2LmNvbW1pdDsKICAgIHBvcnRhbC5nZXRTdWJNZW51cygnZnJvbnRfbWVudScsIGZ1bmN0aW9uIChyZXNwb25zZSkgewogICAgICBwcm9jZXNzLmdldFNlY3JldGFyeUJ5VXNlcklkKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICB2YXIgaXNMZWFkZXIgPSBmYWxzZTsKICAgICAgICBpZiAocmVzICYmIHJlcy5sZW5ndGggPT0gMCkgewogICAgICAgICAgLy/msqHmnInpooblr7wKICAgICAgICAgIGlzTGVhZGVyID0gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgcmVzcG9uc2UuaXNMZWFkZXIgPSBpc0xlYWRlcjsKICAgICAgICBjb21taXQoJ3NldFN5bmNNZW51cycsIHJlc3BvbnNlKTsKICAgICAgfSk7CiAgICB9KTsKICB9LAogIC8v6I635Y+W5rWB56iL5Lit5b+D5LiL55qE6LWE5rqQ55uu5b2VCiAgZ2V0RGVmYXVsdE1lbnVzOiBmdW5jdGlvbiBnZXREZWZhdWx0TWVudXMoX3JlZjcpIHsKICAgIHZhciBjb21taXQgPSBfcmVmNy5jb21taXQ7CiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgewogICAgICBwb3J0YWwuZ2V0U3ViTWVudXMoJ2Zyb250X21lbnUnLCBmdW5jdGlvbiAocmVzcG9uc2UpIHsKICAgICAgICBwcm9jZXNzLmdldFNlY3JldGFyeUJ5VXNlcklkKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICAgIHZhciBpc0xlYWRlciA9IGZhbHNlOwogICAgICAgICAgaWYgKHJlcyAmJiByZXMubGVuZ3RoID09IDApIHsKICAgICAgICAgICAgLy/msqHmnInpooblr7wKICAgICAgICAgICAgaXNMZWFkZXIgPSB0cnVlOwogICAgICAgICAgfQogICAgICAgICAgcmVzcG9uc2UuaXNMZWFkZXIgPSBpc0xlYWRlcjsKICAgICAgICAgIGNvbW1pdCgnc2V0U3luY01lbnVzJywgcmVzcG9uc2UpOwogICAgICAgICAgcmVzb2x2ZSgpOwogICAgICAgIH0pOwogICAgICB9KTsKICAgIH0pOwogIH0sCiAgLy8g5b2T5YmN55So5oi35o6l5Y+j5p2D6ZmQCiAgZ2V0Q3VycmVudFVzZXJNZXRob2RBdXRoOiBmdW5jdGlvbiBnZXRDdXJyZW50VXNlck1ldGhvZEF1dGgoX3JlZjgpIHsKICAgIHZhciBjb21taXQgPSBfcmVmOC5jb21taXQ7CiAgICBwb3J0YWwuZ2V0Q3VycmVudFVzZXJNZXRob2RBdXRoKGZ1bmN0aW9uIChyZXNwb25zZSkgewogICAgICB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UuYWxsTWV0aG9kID0gcmVzcG9uc2UuZGF0YS5hbGxNZXRob2Q7CiAgICAgIHdpbmRvdy5zZXNzaW9uU3RvcmFnZS5tZXRob2RBdXRoID0gcmVzcG9uc2UuZGF0YS5jdXJVc2VyTWV0aG9kOwogICAgfSk7CiAgfSwKICAvLyDlvZPliY3oj5zljZUKICBnZXRBbGxtZW51czogZnVuY3Rpb24gZ2V0QWxsbWVudXMoX3JlZjksIG1lbnUpIHsKICAgIHZhciBjb21taXQgPSBfcmVmOS5jb21taXQ7CiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgewogICAgICByZXNvbHZlKHN0YXRlLmFsbCk7CiAgICB9KTsKICB9LAogIC8vIOW9k+WJjeiPnOWNlQogIGdldEN1cnJlbnRNZW51OiBmdW5jdGlvbiBnZXRDdXJyZW50TWVudShfcmVmMTAsIG1lbnUpIHsKICAgIHZhciBjb21taXQgPSBfcmVmMTAuY29tbWl0OwogICAgY29tbWl0KCdzZXRDdXJyZW50TWVudScsIG1lbnUpOwogIH0sCiAgLy8g6L+95Yqg5LiA5Liq55uu5b2V5Yiw55uu5b2V6I+c5Y2V5LitCiAgYXBwZW5kMm1lbnVzOiBmdW5jdGlvbiBhcHBlbmQybWVudXMoX3JlZjExLCBtZW51KSB7CiAgICB2YXIgY29tbWl0ID0gX3JlZjExLmNvbW1pdCwKICAgICAgc3RhdGUgPSBfcmVmMTEuc3RhdGU7CiAgICBjb21taXQoJ2FwcGVuZE1lbnVzJywgW21lbnVdKTsKICB9LAogIC8vIOS4tOaXtuiuvue9ruS4gOS4quS/ruaUuei/h+eahOebruW9leiPnOWNlQogIHNldFRlbXBsYXRlTWVudXM6IGZ1bmN0aW9uIHNldFRlbXBsYXRlTWVudXMoX3JlZjEyLCBtZW51KSB7CiAgICB2YXIgY29tbWl0ID0gX3JlZjEyLmNvbW1pdDsKICAgIGNvbW1pdCgnc2V0TWVudXMnLCBtZW51KTsKICAgIGNvbW1pdCgnc2V0UmVzaWR1YWwnLCB0cnVlKTsKICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewogICAgICAvLyAwLjXnp5LlkI7ph43nva7miYvliqjkv67mlLnnm67lvZXmlbDmja7nmoTmoIforrAKICAgICAgY29tbWl0KCdzZXRSZXNpZHVhbCcsIGZhbHNlKTsKICAgIH0sIDUwMCk7CiAgfSwKICAvLyDkuLTml7borr7nva7kuIDkuKrkv67mlLnov4fnmoTnm67lvZXoj5zljZUKICBzZXRDb3B5TWVudXM6IGZ1bmN0aW9uIHNldENvcHlNZW51cyhfcmVmMTMsIG1lbnUpIHsKICAgIHZhciBjb21taXQgPSBfcmVmMTMuY29tbWl0OwogICAgY29tbWl0KCdzZXRNZW51cycsIG1lbnUpOwogIH0sCiAgLy/mm7TmlrDmr4/pobXkuIvmi4nmmL7npLrmlbDmja4KICBzZXRQYWdpbmF0aW9uU2l6ZTogZnVuY3Rpb24gc2V0UGFnaW5hdGlvblNpemUoX3JlZjE0LCBzaXplKSB7CiAgICB2YXIgY29tbWl0ID0gX3JlZjE0LmNvbW1pdCwKICAgICAgc3RhdGUgPSBfcmVmMTQuc3RhdGU7CiAgICBjb21taXQoJ3NldFBhZ2luYXRpb25TaXplJywgc2l6ZSk7CiAgfSwKICAvL+abtOaWsOesrOWHoOmhtQogIHNldFBhZ2luYXRpb25QYWdlTnVtOiBmdW5jdGlvbiBzZXRQYWdpbmF0aW9uUGFnZU51bShfcmVmMTUsIGN1cnJlbnRQYWdlKSB7CiAgICB2YXIgY29tbWl0ID0gX3JlZjE1LmNvbW1pdCwKICAgICAgc3RhdGUgPSBfcmVmMTUuc3RhdGU7CiAgICBjb21taXQoJ3NldFBhZ2luYXRpb25QYWdlTnVtJywgY3VycmVudFBhZ2UpOwogIH0sCiAgZ2V0TmV3c1BhZ2luYXRpb25MaXN0OiBmdW5jdGlvbiBnZXROZXdzUGFnaW5hdGlvbkxpc3QoX3JlZjE2LCBwYWdpbmF0aW9uKSB7CiAgICB2YXIgY29tbWl0ID0gX3JlZjE2LmNvbW1pdCwKICAgICAgc3RhdGUgPSBfcmVmMTYuc3RhdGU7CiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgewogICAgICBwb3J0YWwuZ2V0TmV3c1BhZ2luYXRpb25MaXN0KHBhZ2luYXRpb24sIGZ1bmN0aW9uIChyZXNwb25zZSkgewogICAgICAgIGNvbW1pdCgnc2V0Um93cycsIHJlc3BvbnNlLmRhdGEucm93cyk7CiAgICAgICAgY29tbWl0KCdzZXRUb3RhbCcsIHJlc3BvbnNlLmRhdGEudG90YWwpOwogICAgICAgIHZhciBwYWdlQmVhbiA9IHsKICAgICAgICAgICdwYWdlJzogcmVzcG9uc2UuZGF0YS5wYWdlLAogICAgICAgICAgJ3BhZ2VTaXplJzogcmVzcG9uc2UuZGF0YS5wYWdlU2l6ZSwKICAgICAgICAgICdzaG93VG90YWwnOiAndHJ1ZScKICAgICAgICB9OwogICAgICAgIGNvbW1pdCgnc2V0UGFnaW5hdGlvbicsIHBhZ2VCZWFuKTsKICAgICAgICByZXNvbHZlKCk7CiAgICAgIH0pOwogICAgfSk7CiAgfSwKICAvL+mZhOS7tuWcqOe6v+mihOiniAogIG9ubGluZVByZXZpZXc6IGZ1bmN0aW9uIG9ubGluZVByZXZpZXcoX3JlZjE3LCBpZCkgewogICAgdmFyIGNvbW1pdCA9IF9yZWYxNy5jb21taXQsCiAgICAgIHN0YXRlID0gX3JlZjE3LnN0YXRlOwogICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgcG9ydGFsLm9ubGluZVByZXZpZXcoaWQsIGZ1bmN0aW9uIChyZXNwb25zZSkgewogICAgICAgIHJlc29sdmUocmVzcG9uc2UuZGF0YSk7CiAgICAgIH0pOwogICAgfSk7CiAgfSwKICAvL+mZhOS7tuS4i+i9vQogIGRvd25sb2FkRmlsZTogZnVuY3Rpb24gZG93bmxvYWRGaWxlKF9yZWYxOCwgaWQpIHsKICAgIHZhciBjb21taXQgPSBfcmVmMTguY29tbWl0LAogICAgICBzdGF0ZSA9IF9yZWYxOC5zdGF0ZTsKICAgIHBvcnRhbC5kb3dubG9hZEZpbGUoaWQpOwogIH0sCiAgZG93bmxvYWRJbWc6IGZ1bmN0aW9uIGRvd25sb2FkSW1nKF9yZWYxOSwgdXJsKSB7CiAgICB2YXIgY29tbWl0ID0gX3JlZjE5LmNvbW1pdCwKICAgICAgc3RhdGUgPSBfcmVmMTkuc3RhdGU7CiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgewogICAgICBwb3J0YWwuZG93bmxvYWRJbWcodXJsLCBmdW5jdGlvbiAocmVzcG9uc2UpIHsKICAgICAgICByZXNvbHZlKHJlc3BvbnNlKTsKICAgICAgfSk7CiAgICB9KTsKICB9LAogIC8v6I635Y+W6KaB5Y+C5Yqg55qE5Lya6K6u5YiX6KGoCiAgZ2V0TWVldGluZ1BhZ2luYXRpb246IGZ1bmN0aW9uIGdldE1lZXRpbmdQYWdpbmF0aW9uKF9yZWYyMCwgcGFnaW5hdGlvbikgewogICAgdmFyIGNvbW1pdCA9IF9yZWYyMC5jb21taXQsCiAgICAgIHN0YXRlID0gX3JlZjIwLnN0YXRlOwogICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgcG9ydGFsLmdldE1lZXRpbmdQYWdpbmF0aW9uKHBhZ2luYXRpb24sIGZ1bmN0aW9uIChyZXNwb25zZSkgewogICAgICAgIGNvbW1pdCgnc2V0TWVldGluZycsIHJlc3BvbnNlLmRhdGEucm93cyk7IC8v5Lya6K6u5pWw5o2uCiAgICAgICAgY29tbWl0KCdzZXRUb3RhbCcsIHJlc3BvbnNlLmRhdGEudG90YWwpOyAvL+aAu+aVsOaNruadoeaVsAogICAgICAgIHZhciBwYWdlQmVhbiA9IHsKICAgICAgICAgICdwYWdlJzogcmVzcG9uc2UuZGF0YS5wYWdlLAogICAgICAgICAgJ3BhZ2VTaXplJzogcmVzcG9uc2UuZGF0YS5wYWdlU2l6ZSwKICAgICAgICAgICdzaG93VG90YWwnOiAndHJ1ZScKICAgICAgICB9OyAvL+aOpeWPo+aWueazlei/lOWbnueahHBhZ2VCZWFuCiAgICAgICAgY29tbWl0KCdzZXRQYWdpbmF0aW9uJywgcGFnZUJlYW4pOyAvL+aYvuekuuesrOWHoOmhte+8jOavj+mhteaYvuekuuWkmuWwkeadoQogICAgICAgIHJlc29sdmUoKTsKICAgICAgfSk7CiAgICB9KTsKICB9LAogIC8v6I635Y+W5pWw5o2u5a2X5YW4CiAgZ2V0QnlUeXBlS2V5Rm9yQ29tQm86IGZ1bmN0aW9uIGdldEJ5VHlwZUtleUZvckNvbUJvKF9yZWYyMSwgZGljS2V5KSB7CiAgICB2YXIgY29tbWl0ID0gX3JlZjIxLmNvbW1pdCwKICAgICAgc3RhdGUgPSBfcmVmMjEuc3RhdGU7CiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgewogICAgICBwb3J0YWwuZ2V0QnlUeXBlS2V5Rm9yQ29tQm8oZGljS2V5LCBmdW5jdGlvbiAocmVzcG9uc2UpIHsKICAgICAgICByZXNvbHZlKHJlc3BvbnNlKTsKICAgICAgfSk7CiAgICB9KTsKICB9LAogIC8v6I635Y+W5LiL5LiA5Liq5rWB5rC05Y+3CiAgZ2V0TmV4dElkQnlBbGlhczogZnVuY3Rpb24gZ2V0TmV4dElkQnlBbGlhcyhfcmVmMjIsIGFsaWFzKSB7CiAgICB2YXIgY29tbWl0ID0gX3JlZjIyLmNvbW1pdCwKICAgICAgc3RhdGUgPSBfcmVmMjIuc3RhdGU7CiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgewogICAgICBwb3J0YWwuZ2V0TmV4dElkQnlBbGlhcyhhbGlhcywgZnVuY3Rpb24gKHJlc3BvbnNlKSB7CiAgICAgICAgcmVzb2x2ZShyZXNwb25zZSk7CiAgICAgIH0pOwogICAgfSk7CiAgfSwKICAvL+iOt+WPlummlumhteW4g+WxgAogIHZ1ZUZyb250SG9tZTogZnVuY3Rpb24gdnVlRnJvbnRIb21lKF9yZWYyMykgewogICAgdmFyIGNvbW1pdCA9IF9yZWYyMy5jb21taXQsCiAgICAgIHN0YXRlID0gX3JlZjIzLnN0YXRlOwogICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgcG9ydGFsLnZ1ZUZyb250SG9tZShmdW5jdGlvbiAocmVzcG9uc2UpIHsKICAgICAgICByZXNvbHZlKHJlc3BvbnNlKTsKICAgICAgfSk7CiAgICB9KTsKICB9LAogIC8v6I635Y+W6aaW6aG15biD5bGACiAgZ2V0Q29sdW1uQnlBbGlhczogZnVuY3Rpb24gZ2V0Q29sdW1uQnlBbGlhcyhfcmVmMjQsIGFsaWFzKSB7CiAgICB2YXIgY29tbWl0ID0gX3JlZjI0LmNvbW1pdCwKICAgICAgc3RhdGUgPSBfcmVmMjQuc3RhdGU7CiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgewogICAgICBwb3J0YWwuZ2V0Q29sdW1uQnlBbGlhcyhhbGlhcywgZnVuY3Rpb24gKHJlc3BvbnNlKSB7CiAgICAgICAgcmVzb2x2ZShyZXNwb25zZSk7CiAgICAgICAgY29tbWl0KCd1cGRhdGVDb2x1bW5EYXRhJywgcmVzcG9uc2UpOwogICAgICB9KTsKICAgIH0pOwogIH0sCiAgLy8g5om56YeP6I635Y+W6aaW6aG15biD5bGA77yI6K+35rGC5Y+C5pWw6L+Y5piv6YCQ5Liq5qCP55uu77yM5L2G5piv5LiA5a6a5pe26Ze06Ze06ZqU55qE6K+35rGC5Lya5ZCI5bm25Li65LiA5qyh77yJCiAgZ2V0Q29sdW1uQnlBbGlhc0JhdGNoOiBmdW5jdGlvbiBnZXRDb2x1bW5CeUFsaWFzQmF0Y2goX3JlZjI1LCBhbGlhcykgewogICAgdmFyIGNvbW1pdCA9IF9yZWYyNS5jb21taXQsCiAgICAgIHN0YXRlID0gX3JlZjI1LnN0YXRlLAogICAgICBnZXR0ZXJzID0gX3JlZjI1LmdldHRlcnM7CiAgICAvLyAxLuWmguaenOW9k+WJjeagj+ebruaVsOaNruS4reW3sue7j+acieWvueW6lOeahOWAvOS6hu+8jOebtOaOpei/lOWbnuOAggogICAgaWYgKGdldHRlcnMuaGFzQ29sdW1uRGF0YVdpdGhBbGlhcyhhbGlhcykpIHsKICAgICAgcmV0dXJuOwogICAgfQogICAgLy8gMi7mmK/lkKbmraPlnKjov5vooYzor7fmsYLlkIjlubbvvJsKICAgIGlmIChzdGF0ZS5jb2x1bW5RdWVyeU1lcmdpbmcpIHsKICAgICAgLy8gKDEpLuWPlua2iOW9k+WJjeWAkuiuoeaXtu+8mwogICAgICBjbGVhclRpbWVvdXQoc3RhdGUuY29sdW1uUXVlcnlNZXJnaW5nKTsKICAgICAgLy8gKDIpLumHjee9ruW9k+WJjeWAkuiuoeaXtuWPlua2iOagh+iusOS9je+8mwogICAgICBjb21taXQoJ3NldENvbHVtblF1ZXJ5TWVyZ2luZycsIG51bGwpOwogICAgfQogICAgLy8gMy7mnoTlu7rkuIDkuKror7fmsYLlgJLorqHml7bvvIjpu5jorqTkuKTkuKror7fmsYLnm7jlt641MOavq+enkuWGheS8muWQiOW5tuS4uuS4gOS4quivt+axgu+8ie+8mwogICAgdmFyIHRpbWVvdXRDYW5jZWwgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgLy8gNC7lgJLorqHml7bnu5PmnZ/vvIznnJ/mraPlj5HpgIHor7fmsYLvvJsKICAgICAgcG9ydGFsLmJhdGNoR2V0Q29sdW1uQnlBbGlhc2VzKHN0YXRlLmNvbHVtbkFsaWFzQXJ5LmpvaW4oJywnKSwgZnVuY3Rpb24gKHJlc3BvbnNlKSB7CiAgICAgICAgLy8gNS7mm7TmlrDmoI/nm67mlbDmja7liLB2dWV455qEc3RhdGXkuK3jgIIKICAgICAgICBjb21taXQoJ3NldENvbHVtbkRhdGEnLCByZXNwb25zZSk7CiAgICAgIH0pOwogICAgICAvLyDmuIXnqbrmoI/nm67or7fmsYLmn6Xor6LliKvlkI3mlbDnu4QKICAgICAgY29tbWl0KCdjbGVhckNvbHVtbkFsaWFzQXJ5Jyk7CiAgICAgIC8vIOmHjee9ruWAkuiuoeaXtuWPlua2iOagh+iusOS9jQogICAgICBjb21taXQoJ3NldENvbHVtblF1ZXJ5TWVyZ2luZycsIG51bGwpOwogICAgfSwgNTApOwogICAgLy8g5re75Yqg5qCP55uu6K+35rGC5p+l6K+i5Yir5ZCN5Yiw5pWw57uECiAgICBjb21taXQoJ2FkZENvbHVtbkFsaWFzJywgYWxpYXMpOwogICAgLy8g5pu05paw5YCS6K6h5pe25Y+W5raI5qCH6K6w5L2NCiAgICBjb21taXQoJ3NldENvbHVtblF1ZXJ5TWVyZ2luZycsIHRpbWVvdXRDYW5jZWwpOwogIH0sCiAgLy/ojrflj5bmoI/nm67mlbDmja4KICBnZXRDb2x1bW5EYXRhOiBmdW5jdGlvbiBnZXRDb2x1bW5EYXRhKF9yZWYyNiwgY29sdW1uKSB7CiAgICB2YXIgY29tbWl0ID0gX3JlZjI2LmNvbW1pdCwKICAgICAgc3RhdGUgPSBfcmVmMjYuc3RhdGU7CiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgewogICAgICBwb3J0YWwuZ2V0Q29sdW1uRGF0YShjb2x1bW4sIGZ1bmN0aW9uIChyZXNwb25zZSkgewogICAgICAgIHJlc29sdmUocmVzcG9uc2UpOwogICAgICB9KTsKICAgIH0pOwogIH0sCiAgLy/mm7TmlrDpmYTku7bnmoTmianlsZXlsZ7mgKcKICB1cGRhdGVGaWxlRXh0cmFQcm9wOiBmdW5jdGlvbiB1cGRhdGVGaWxlRXh0cmFQcm9wKF9yZWYyNywgY29sdW1uKSB7CiAgICB2YXIgY29tbWl0ID0gX3JlZjI3LmNvbW1pdCwKICAgICAgc3RhdGUgPSBfcmVmMjcuc3RhdGU7CiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgewogICAgICBwb3J0YWwudXBkYXRlRmlsZUV4dHJhUHJvcChjb2x1bW4sIGZ1bmN0aW9uIChyZXNwb25zZSkgewogICAgICAgIHJlc29sdmUocmVzcG9uc2UpOwogICAgICB9KTsKICAgIH0pOwogIH0sCiAgY2xlYXJNZW51czogZnVuY3Rpb24gY2xlYXJNZW51cyhfcmVmMjgsIGNvbHVtbikgewogICAgdmFyIGNvbW1pdCA9IF9yZWYyOC5jb21taXQsCiAgICAgIHN0YXRlID0gX3JlZjI4LnN0YXRlOwogICAgY29tbWl0KCdjbGVhck1lbnVzJyk7CiAgICB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbSgnY3VycmVudEZyb250TWVudXMnKTsKICAgIHdpbmRvdy5zZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKCdkaWN0X2RhdGEnKTsKICAgIHdpbmRvdy5zZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKCdhbGxNZXRob2QnKTsKICAgIHdpbmRvdy5zZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKCdtZXRob2RBdXRoJyk7CiAgfQp9Owp2YXIgbXV0YXRpb25zID0gewogIHNldE1lbnVzOiBmdW5jdGlvbiBzZXRNZW51cyhzdGF0ZSwgbWVudXMpIHsKICAgIHN0YXRlLmFsbCA9IG1lbnVzOwogIH0sCiAgY2xlYXJNZW51czogZnVuY3Rpb24gY2xlYXJNZW51cygpIHsKICAgIHN0YXRlLmZyb250TWVudXMgPSBbXTsKICAgIHN0YXRlLnN5c01lbnVzID0gW107CiAgfSwKICBzZXRSZXNpZHVhbDogZnVuY3Rpb24gc2V0UmVzaWR1YWwoc3RhdGUsIHZhbCkgewogICAgc3RhdGUucmVzaWR1YWwgPSB2YWw7CiAgfSwKICBhcHBlbmRNZW51czogZnVuY3Rpb24gYXBwZW5kTWVudXMoc3RhdGUsIG1lbnVzKSB7CiAgICBtZW51cy5mb3JFYWNoKGZ1bmN0aW9uIChtZW51KSB7CiAgICAgIGlmICghc3RhdGUuYWxsLnNvbWUoZnVuY3Rpb24gKG0pIHsKICAgICAgICByZXR1cm4gbS5hbGlhcyA9PT0gbWVudS5hbGlhczsKICAgICAgfSkpIHsKICAgICAgICBzdGF0ZS5hbGwucHVzaChtZW51KTsKICAgICAgfQogICAgfSk7CiAgICBzdGF0ZS5hbGwuc29ydChmdW5jdGlvbiAobSwgbikgewogICAgICByZXR1cm4gbS5pZCAtIG4uaWQ7CiAgICB9KTsKICB9LAogIHNldFN5bmNNZW51czogZnVuY3Rpb24gc2V0U3luY01lbnVzKHN0YXRlLCByZXNwb25zZSkgewogICAgaWYgKHJlc3BvbnNlICYmIHJlc3BvbnNlLmRhdGEgJiYgcmVzcG9uc2UuZGF0YS52YWx1ZSAmJiByZXNwb25zZS5kYXRhLnZhbHVlLmxlbmd0aCA+IDApIHsKICAgICAgdmFyIG1lbnVzID0gcmVzcG9uc2UuZGF0YS52YWx1ZTsKICAgICAgbWVudXMuZm9yRWFjaChmdW5jdGlvbiAobWVudSkgewogICAgICAgIGlmICghc3RhdGUuYWxsLnNvbWUoZnVuY3Rpb24gKG0pIHsKICAgICAgICAgIHJldHVybiBtLmNvZGUgPT09IG1lbnUuYWxpYXM7CiAgICAgICAgfSkpIHsKICAgICAgICAgIHN0YXRlLmFsbC5wdXNoKHsKICAgICAgICAgICAgaWQ6IG1lbnUuaWQsCiAgICAgICAgICAgIGNvZGU6IG1lbnUuYWxpYXMsCiAgICAgICAgICAgIGFsaWFzOiBtZW51LmFsaWFzLAogICAgICAgICAgICBwYXRoOiBtZW51Lm1lbnVVcmwsCiAgICAgICAgICAgIG5hbWU6IG1lbnUubmFtZSwKICAgICAgICAgICAgc246IG1lbnUuc24KICAgICAgICAgIH0pOwogICAgICAgICAgLy/liKTmlq3mmK/lkKbmmK/mtYHnqIvkuK3lv4MKICAgICAgICAgIGlmIChtZW51LmFsaWFzID09ICd2LWZsb3cnKSB7CiAgICAgICAgICAgIGlmIChyZXNwb25zZS5pc0xlYWRlcikgewogICAgICAgICAgICAgIC8v5rKh5pyJ6aKG5a+8CiAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtZW51LmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICBpZiAobWVudS5jaGlsZHJlbltpXS5hbGlhcyA9PSAndi1sZWFkZXInKSB7CiAgICAgICAgICAgICAgICAgIG1lbnUuY2hpbGRyZW4uc3BsaWNlKGksIDEpOwogICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgc3RhdGUubWVudU1hcHNbbWVudS5hbGlhc10gPSBtZW51LmNoaWxkcmVuOwogICAgICAgICAgICB9IGVsc2UgaWYgKCFyZXNwb25zZS5pc0xlYWRlcikgewogICAgICAgICAgICAgIC8v5pyJ6aKG5a+8CiAgICAgICAgICAgICAgc3RhdGUubWVudU1hcHNbbWVudS5hbGlhc10gPSBtZW51LmNoaWxkcmVuOwogICAgICAgICAgICB9CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBzdGF0ZS5tZW51TWFwc1ttZW51LmFsaWFzXSA9IG1lbnUuY2hpbGRyZW47CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIC8vIH0KICAgICAgfSk7CiAgICB9CiAgfSwKICBzZXRDdXJyZW50TWVudTogZnVuY3Rpb24gc2V0Q3VycmVudE1lbnUoc3RhdGUsIHJlc3BvbnNlKSB7CiAgICBzdGF0ZS5jdXJyZW50TWVudSA9IHJlc3BvbnNlOwogIH0sCiAgZ2V0QWxsbWVudXM6IGZ1bmN0aW9uIGdldEFsbG1lbnVzKHN0YXRlLCByZXNwb25zZSkgewogICAgcmV0dXJuIHN0YXRlLmFsbDsKICB9LAogIHNldFBhZ2luYXRpb246IGZ1bmN0aW9uIHNldFBhZ2luYXRpb24oc3RhdGUsIHBhZ2luYXRpb24pIHsKICAgIHN0YXRlLnBhZ2luYXRpb24gPSBwYWdpbmF0aW9uOwogIH0sCiAgc2V0UGFnaW5hdGlvblNpemU6IGZ1bmN0aW9uIHNldFBhZ2luYXRpb25TaXplKHN0YXRlLCBzaXplKSB7CiAgICBzdGF0ZS5wYWdpbmF0aW9uLnBhZ2VTaXplID0gc2l6ZTsKICB9LAogIHNldFBhZ2luYXRpb25QYWdlTnVtOiBmdW5jdGlvbiBzZXRQYWdpbmF0aW9uUGFnZU51bShzdGF0ZSwgY3VycmVudFBhZ2UpIHsKICAgIHN0YXRlLnBhZ2luYXRpb24ucGFnZSA9IGN1cnJlbnRQYWdlOwogIH0sCiAgc2V0Um93czogZnVuY3Rpb24gc2V0Um93cyhzdGF0ZSwgcm93cykgewogICAgc3RhdGUucm93cyA9IHJvd3M7CiAgfSwKICBzZXROb3RpY2U6IGZ1bmN0aW9uIHNldE5vdGljZShzdGF0ZSwgbm90aWNlKSB7CiAgICBzdGF0ZS5ub3RpY2UgPSBub3RpY2U7CiAgfSwKICBzZXRUb3RhbDogZnVuY3Rpb24gc2V0VG90YWwoc3RhdGUsIHRvdGFsKSB7CiAgICBzdGF0ZS50b3RhbCA9IHRvdGFsOwogIH0sCiAgc2V0RmlsZXNEYXRhOiBmdW5jdGlvbiBzZXRGaWxlc0RhdGEoc3RhdGUsIGZpbGVzRGF0YSkgewogICAgc3RhdGUuZmlsZXNEYXRhID0gZmlsZXNEYXRhOwogIH0sCiAgc2V0TWVldGluZzogZnVuY3Rpb24gc2V0TWVldGluZyhzdGF0ZSwgbWVldGluZykgewogICAgc3RhdGUubWVldGluZyA9IG1lZXRpbmc7CiAgfSwKICBhZGRDb2x1bW5BbGlhczogZnVuY3Rpb24gYWRkQ29sdW1uQWxpYXMoc3RhdGUsIGFsaWFzKSB7CiAgICBzdGF0ZS5jb2x1bW5BbGlhc0FyeS5wdXNoKGFsaWFzKTsKICB9LAogIGNsZWFyQ29sdW1uQWxpYXNBcnk6IGZ1bmN0aW9uIGNsZWFyQ29sdW1uQWxpYXNBcnkoc3RhdGUpIHsKICAgIHN0YXRlLmNvbHVtbkFsaWFzQXJ5ID0gW107CiAgfSwKICBzZXRDb2x1bW5RdWVyeU1lcmdpbmc6IGZ1bmN0aW9uIHNldENvbHVtblF1ZXJ5TWVyZ2luZyhzdGF0ZSwgdmFsKSB7CiAgICBzdGF0ZS5jb2x1bW5RdWVyeU1lcmdpbmcgPSB2YWw7CiAgfSwKICBzZXRDb2x1bW5EYXRhOiBmdW5jdGlvbiBzZXRDb2x1bW5EYXRhKHN0YXRlLCBkYXRhKSB7CiAgICB2YXIgX2NvbERhdGEgPSBzdGF0ZS5jb2x1bW5EYXRhIHx8IHt9LAogICAgICBhbGlhc0FyeSA9IHN0YXRlLmNvbHVtbkRhdGFMb2FkZWRBbGlhc2VzID8gc3RhdGUuY29sdW1uRGF0YUxvYWRlZEFsaWFzZXMuc3BsaXQoJywnKSA6IFtdOwogICAgaWYgKGRhdGEgJiYgZGF0YS5sZW5ndGggPiAwKSB7CiAgICAgIGRhdGEuZm9yRWFjaChmdW5jdGlvbiAoZCkgewogICAgICAgIGFsaWFzQXJ5LnB1c2goZC5hbGlhcyk7CiAgICAgICAgX2NvbERhdGFbZC5hbGlhc10gPSBkOwogICAgICB9KTsKICAgIH0KICAgIHN0YXRlLmNvbHVtbkRhdGEgPSBfY29sRGF0YTsKICAgIHN0YXRlLmNvbHVtbkRhdGFMb2FkZWRBbGlhc2VzID0gYWxpYXNBcnkuam9pbignLCcpOwogIH0sCiAgdXBkYXRlQ29sdW1uRGF0YTogZnVuY3Rpb24gdXBkYXRlQ29sdW1uRGF0YShzdGF0ZSwgZGF0YSkgewogICAgaWYgKGRhdGEgJiYgZGF0YS5hbGlhcykgewogICAgICBzdGF0ZS5jb2x1bW5EYXRhW2RhdGEuYWxpYXNdID0gZGF0YTsKICAgIH0KICB9LAogIC8vIOWJjeWPsOiPnOWNlei1i+WAvAogIG11dGF0aW9uRnJvbnRNZW51czogZnVuY3Rpb24gbXV0YXRpb25Gcm9udE1lbnVzKHN0YXRlLCBmcm9udE1lbnVzKSB7CiAgICBzdGF0ZS5mcm9udE1lbnVzID0gZnJvbnRNZW51czsKICB9LAogIC8vIOWQjuWPsOiPnOWNlei1i+WAvAogIG11dGF0aW9uU3lzTWVudXM6IGZ1bmN0aW9uIG11dGF0aW9uU3lzTWVudXMoc3RhdGUsIHN5c01lbnVzKSB7CiAgICBzdGF0ZS5zeXNNZW51cyA9IHN5c01lbnVzOwogIH0sCiAgLy8g5ZCO5Y+w6KeS6Imy6I+c5Y2V6LWL5YC8CiAgbXV0YXRpb25Sb2xlTWVudXM6IGZ1bmN0aW9uIG11dGF0aW9uUm9sZU1lbnVzKHN0YXRlLCByb2xlTWVudXMpIHsKICAgIHN0YXRlLnJvbGVNZW51cyA9IHJvbGVNZW51czsKICB9Cn07CmV4cG9ydCBkZWZhdWx0IHsKICBuYW1lc3BhY2VkOiB0cnVlLAogIHN0YXRlOiBzdGF0ZSwKICBnZXR0ZXJzOiBnZXR0ZXJzLAogIGFjdGlvbnM6IGFjdGlvbnMsCiAgbXV0YXRpb25zOiBtdXRhdGlvbnMKfTs="},null]}