{"remainingRequest":"D:\\jenkins\\workspace\\bzzgj-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\thread-loader\\dist\\cjs.js!D:\\jenkins\\workspace\\bzzgj-fvue\\node_modules\\babel-loader\\lib\\index.js!D:\\jenkins\\workspace\\bzzgj-fvue\\node_modules\\eslint-loader\\index.js??ref--13-0!D:\\jenkins\\workspace\\bzzgj-fvue\\src\\store\\menu.js","dependencies":[{"path":"D:\\jenkins\\workspace\\bzzgj-fvue\\src\\store\\menu.js","mtime":1667545182301},{"path":"D:\\jenkins\\workspace\\bzzgj-fvue\\babel.config.js","mtime":1725536844935},{"path":"D:\\jenkins\\workspace\\bzzgj-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\bzzgj-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\thread-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\bzzgj-fvue\\node_modules\\babel-loader\\lib\\index.js","mtime":456789000000},{"path":"D:\\jenkins\\workspace\\bzzgj-fvue\\node_modules\\eslint-loader\\index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tICJEOi9qZW5raW5zL3dvcmtzcGFjZS9ienpnai1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eS5qcyI7CnZhciBfYWN0aW9uczsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuam9pbi5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LnB1c2guanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5zb3J0LmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuc3BsaWNlLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuZnVuY3Rpb24ubmFtZS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLml0ZXJhdG9yLmNvbnN0cnVjdG9yLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuaXRlcmF0b3IuZm9yLWVhY2guanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5pdGVyYXRvci5zb21lLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuanNvbi5zdHJpbmdpZnkuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3Qua2V5cy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC50by1zdHJpbmcuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy93ZWIuZG9tLWNvbGxlY3Rpb25zLmZvci1lYWNoLmpzIjsKaW1wb3J0IHBvcnRhbCBmcm9tICJAL2FwaS9wb3J0YWwuanMiOwppbXBvcnQgcHJvY2VzcyBmcm9tICJAL2FwaS9wcm9jZXNzLmpzIjsKdmFyIHN0YXRlID0gewogIGFsbDogW10sCiAgLy/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+c5Y2VCiAgZnJvbnRNZW51czogW10gLy/liY3lj7Doj5zljZUKfTsKdmFyIGdldHRlcnMgPSB7CiAgZ2V0Q29sdW1uRGF0YVdpdGhBbGlhczogZnVuY3Rpb24gZ2V0Q29sdW1uRGF0YVdpdGhBbGlhcyhzdGF0ZSkgewogICAgcmV0dXJuIGZ1bmN0aW9uIChhbGlhcykgewogICAgICByZXR1cm4gc3RhdGUuY29sdW1uRGF0YVthbGlhc107CiAgICB9OwogIH0sCiAgaGFzQ29sdW1uRGF0YVdpdGhBbGlhczogZnVuY3Rpb24gaGFzQ29sdW1uRGF0YVdpdGhBbGlhcyhzdGF0ZSkgewogICAgcmV0dXJuIGZ1bmN0aW9uIChhbGlhcykgewogICAgICByZXR1cm4gc3RhdGUuY29sdW1uRGF0YS5oYXNPd25Qcm9wZXJ0eShhbGlhcyk7CiAgICB9OwogIH0sCiAgZnJvbnRNZW51czogZnVuY3Rpb24gZnJvbnRNZW51cyhzdGF0ZSkgewogICAgcmV0dXJuIHN0YXRlLmZyb250TWVudXM7CiAgfSwKICBzeXNNZW51czogZnVuY3Rpb24gc3lzTWVudXMoc3RhdGUpIHsKICAgIHJldHVybiBzdGF0ZS5zeXNNZW51czsKICB9Cn07CnZhciBhY3Rpb25zID0gKF9hY3Rpb25zID0gewogIGFjdGlvblN5c01lbnVzOiBmdW5jdGlvbiBhY3Rpb25TeXNNZW51cyhfcmVmKSB7CiAgICB2YXIgY29tbWl0ID0gX3JlZi5jb21taXQsCiAgICAgIHN0YXRlID0gX3JlZi5zdGF0ZTsKICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgIGlmIChzdGF0ZS5tZW51cyAmJiBzdGF0ZS5tZW51cy5sZW5ndGggPj0gMSkgewogICAgICAgIHJlc29sdmUoKTsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgcG9ydGFsLmdldFN5c01lbnVzKCkudGhlbihmdW5jdGlvbiAoZGF0YSkgewogICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oImN1cnJlbnRTeXNNZW51cyIsIEpTT04uc3RyaW5naWZ5KGRhdGEpKTsKICAgICAgICBjb21taXQoIm11dGF0aW9uU3lzTWVudXMiLCBkYXRhKTsKICAgICAgICByZXNvbHZlKGRhdGEpOwogICAgICB9KTsKICAgIH0pOwogIH0sCiAgYWN0aW9uRnJvbnRNZW51czogZnVuY3Rpb24gYWN0aW9uRnJvbnRNZW51cyhfcmVmMikgewogICAgdmFyIGNvbW1pdCA9IF9yZWYyLmNvbW1pdCwKICAgICAgc3RhdGUgPSBfcmVmMi5zdGF0ZTsKICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgIGlmIChzdGF0ZS5mcm9udE1lbnVzICYmIHN0YXRlLmZyb250TWVudXMubGVuZ3RoID49IDEpIHsKICAgICAgICByZXNvbHZlKHN0YXRlLmZyb250TWVudXMpOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICBwb3J0YWwuZ2V0RnJvbnRNZW51cygpLnRoZW4oZnVuY3Rpb24gKGRhdGEpIHsKICAgICAgICAvLyAgIGNvbnNvbGUubG9nKGRhdGEsICdkYXRhJykKICAgICAgICAvLyBkYXRhLnB1c2goc3RhdGUucGVyc29uYWxNZW51c1swXSk7CiAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgiY3VycmVudEZyb250TWVudXMiLCBKU09OLnN0cmluZ2lmeShkYXRhKSk7CiAgICAgICAgY29tbWl0KCJtdXRhdGlvbkZyb250TWVudXMiLCBkYXRhKTsKICAgICAgICByZXNvbHZlKGRhdGEpOwogICAgICB9KTsKICAgIH0pOwogIH0sCiAgLy8g5p+l6K+i6Z2Z5oCB6LWE5rqQ55uu5b2VCiAgZ2V0U3RhdGljTWVudXM6IGZ1bmN0aW9uIGdldFN0YXRpY01lbnVzKF9yZWYzKSB7CiAgICB2YXIgY29tbWl0ID0gX3JlZjMuY29tbWl0OwogICAgcG9ydGFsLmdldE1lbnVzKGZ1bmN0aW9uIChtZW51cykgewogICAgICBjb21taXQoJ2FwcGVuZE1lbnVzJywgbWVudXMpOwogICAgfSk7CiAgfSwKICAvLyDmn6Xor6LmtYHnqIvkuK3lv4PkuIvnmoTotYTmupDnm67lvZUKICBnZXRTeW5jTWVudXM6IGZ1bmN0aW9uIGdldFN5bmNNZW51cyhfcmVmNCwgaXNMZWFkZXIpIHsKICAgIHZhciBjb21taXQgPSBfcmVmNC5jb21taXQ7CiAgICBwb3J0YWwuZ2V0U3ViTWVudXMoJ2Zyb250X21lbnUnLCBmdW5jdGlvbiAocmVzcG9uc2UpIHsKICAgICAgcHJvY2Vzcy5nZXRTZWNyZXRhcnlCeVVzZXJJZChmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgdmFyIGlzTGVhZGVyID0gZmFsc2U7CiAgICAgICAgaWYgKHJlcyAmJiByZXMubGVuZ3RoID09IDApIHsKICAgICAgICAgIC8v5rKh5pyJ6aKG5a+8CiAgICAgICAgICBpc0xlYWRlciA9IHRydWU7CiAgICAgICAgfQogICAgICAgIHJlc3BvbnNlLmlzTGVhZGVyID0gaXNMZWFkZXI7CiAgICAgICAgY29tbWl0KCdzZXRTeW5jTWVudXMnLCByZXNwb25zZSk7CiAgICAgIH0pOwogICAgfSk7CiAgfSwKICAvL+iOt+WPlua1geeoi+S4reW/g+S4i+eahOi1hOa6kOebruW9lQogIGdldERlZmF1bHRNZW51czogZnVuY3Rpb24gZ2V0RGVmYXVsdE1lbnVzKF9yZWY1KSB7CiAgICB2YXIgY29tbWl0ID0gX3JlZjUuY29tbWl0OwogICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgcG9ydGFsLmdldFN1Yk1lbnVzKCdmcm9udF9tZW51JywgZnVuY3Rpb24gKHJlc3BvbnNlKSB7CiAgICAgICAgcHJvY2Vzcy5nZXRTZWNyZXRhcnlCeVVzZXJJZChmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgICB2YXIgaXNMZWFkZXIgPSBmYWxzZTsKICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmxlbmd0aCA9PSAwKSB7CiAgICAgICAgICAgIC8v5rKh5pyJ6aKG5a+8CiAgICAgICAgICAgIGlzTGVhZGVyID0gdHJ1ZTsKICAgICAgICAgIH0KICAgICAgICAgIHJlc3BvbnNlLmlzTGVhZGVyID0gaXNMZWFkZXI7CiAgICAgICAgICBjb21taXQoJ3NldFN5bmNNZW51cycsIHJlc3BvbnNlKTsKICAgICAgICAgIHJlc29sdmUoKTsKICAgICAgICB9KTsKICAgICAgfSk7CiAgICB9KTsKICB9LAogIC8vIOW9k+WJjeeUqOaIt+aOpeWPo+adg+mZkAogIGdldEN1cnJlbnRVc2VyTWV0aG9kQXV0aDogZnVuY3Rpb24gZ2V0Q3VycmVudFVzZXJNZXRob2RBdXRoKF9yZWY2KSB7CiAgICB2YXIgY29tbWl0ID0gX3JlZjYuY29tbWl0OwogICAgcG9ydGFsLmdldEN1cnJlbnRVc2VyTWV0aG9kQXV0aChmdW5jdGlvbiAocmVzcG9uc2UpIHsKICAgICAgd2luZG93LnNlc3Npb25TdG9yYWdlLmFsbE1ldGhvZCA9IHJlc3BvbnNlLmRhdGEuYWxsTWV0aG9kOwogICAgICB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UubWV0aG9kQXV0aCA9IHJlc3BvbnNlLmRhdGEuY3VyVXNlck1ldGhvZDsKICAgIH0pOwogIH0sCiAgLy8g5b2T5YmN6I+c5Y2VCiAgZ2V0QWxsbWVudXM6IGZ1bmN0aW9uIGdldEFsbG1lbnVzKF9yZWY3LCBtZW51KSB7CiAgICB2YXIgY29tbWl0ID0gX3JlZjcuY29tbWl0OwogICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgcmVzb2x2ZShzdGF0ZS5hbGwpOwogICAgfSk7CiAgfSwKICAvLyDlvZPliY3oj5zljZUKICBnZXRDdXJyZW50TWVudTogZnVuY3Rpb24gZ2V0Q3VycmVudE1lbnUoX3JlZjgsIG1lbnUpIHsKICAgIHZhciBjb21taXQgPSBfcmVmOC5jb21taXQ7CiAgICBjb21taXQoJ3NldEN1cnJlbnRNZW51JywgbWVudSk7CiAgfSwKICAvLyDov73liqDkuIDkuKrnm67lvZXliLDnm67lvZXoj5zljZXkuK0KICBhcHBlbmQybWVudXM6IGZ1bmN0aW9uIGFwcGVuZDJtZW51cyhfcmVmOSwgbWVudSkgewogICAgdmFyIGNvbW1pdCA9IF9yZWY5LmNvbW1pdCwKICAgICAgc3RhdGUgPSBfcmVmOS5zdGF0ZTsKICAgIGNvbW1pdCgnYXBwZW5kTWVudXMnLCBbbWVudV0pOwogIH0sCiAgLy8g5Li05pe26K6+572u5LiA5Liq5L+u5pS56L+H55qE55uu5b2V6I+c5Y2VCiAgc2V0VGVtcGxhdGVNZW51czogZnVuY3Rpb24gc2V0VGVtcGxhdGVNZW51cyhfcmVmMTAsIG1lbnUpIHsKICAgIHZhciBjb21taXQgPSBfcmVmMTAuY29tbWl0OwogICAgY29tbWl0KCdzZXRNZW51cycsIG1lbnUpOwogICAgY29tbWl0KCdzZXRSZXNpZHVhbCcsIHRydWUpOwogICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CiAgICAgIC8vIDAuNeenkuWQjumHjee9ruaJi+WKqOS/ruaUueebruW9leaVsOaNrueahOagh+iusAogICAgICBjb21taXQoJ3NldFJlc2lkdWFsJywgZmFsc2UpOwogICAgfSwgNTAwKTsKICB9LAogIC8vIOS4tOaXtuiuvue9ruS4gOS4quS/ruaUuei/h+eahOebruW9leiPnOWNlQogIHNldENvcHlNZW51czogZnVuY3Rpb24gc2V0Q29weU1lbnVzKF9yZWYxMSwgbWVudSkgewogICAgdmFyIGNvbW1pdCA9IF9yZWYxMS5jb21taXQ7CiAgICBjb21taXQoJ3NldE1lbnVzJywgbWVudSk7CiAgfSwKICAvL+abtOaWsOavj+mhteS4i+aLieaYvuekuuaVsOaNrgogIHNldFBhZ2luYXRpb25TaXplOiBmdW5jdGlvbiBzZXRQYWdpbmF0aW9uU2l6ZShfcmVmMTIsIHNpemUpIHsKICAgIHZhciBjb21taXQgPSBfcmVmMTIuY29tbWl0LAogICAgICBzdGF0ZSA9IF9yZWYxMi5zdGF0ZTsKICAgIGNvbW1pdCgic2V0UGFnaW5hdGlvblNpemUiLCBzaXplKTsKICB9LAogIC8v5pu05paw56ys5Yeg6aG1CiAgc2V0UGFnaW5hdGlvblBhZ2VOdW06IGZ1bmN0aW9uIHNldFBhZ2luYXRpb25QYWdlTnVtKF9yZWYxMywgY3VycmVudFBhZ2UpIHsKICAgIHZhciBjb21taXQgPSBfcmVmMTMuY29tbWl0LAogICAgICBzdGF0ZSA9IF9yZWYxMy5zdGF0ZTsKICAgIGNvbW1pdCgic2V0UGFnaW5hdGlvblBhZ2VOdW0iLCBjdXJyZW50UGFnZSk7CiAgfSwKICAvL+iOt+WPluaWsOmXu+WKqOaAgeWIl+ihqAogIGdldE5ld3NQYWdpbmF0aW9uOiBmdW5jdGlvbiBnZXROZXdzUGFnaW5hdGlvbihfcmVmMTQsIHBhZ2luYXRpb24pIHsKICAgIHZhciBjb21taXQgPSBfcmVmMTQuY29tbWl0LAogICAgICBzdGF0ZSA9IF9yZWYxNC5zdGF0ZTsKICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgIHBvcnRhbC5nZXROZXdzUGFnaW5hdGlvbihwYWdpbmF0aW9uLCBmdW5jdGlvbiAocmVzcG9uc2UpIHsKICAgICAgICBjb21taXQoInNldFJvd3MiLCByZXNwb25zZS5kYXRhLnJvd3MpOyAvL+aWsOmXu+WKqOaAgeaVsOaNrgogICAgICAgIGNvbW1pdCgic2V0VG90YWwiLCByZXNwb25zZS5kYXRhLnRvdGFsKTsgLy/mgLvmlbDmja7mnaHmlbAKICAgICAgICB2YXIgcGFnZUJlYW4gPSB7CiAgICAgICAgICAicGFnZSI6IHJlc3BvbnNlLmRhdGEucGFnZSwKICAgICAgICAgICJwYWdlU2l6ZSI6IHJlc3BvbnNlLmRhdGEucGFnZVNpemUsCiAgICAgICAgICAic2hvd1RvdGFsIjogInRydWUiCiAgICAgICAgfTsgLy/mjqXlj6Pmlrnms5Xov5Tlm57nmoRwYWdlQmVhbgogICAgICAgIGNvbW1pdCgic2V0UGFnaW5hdGlvbiIsIHBhZ2VCZWFuKTsgLy/mmL7npLrnrKzlh6DpobXvvIzmr4/pobXmmL7npLrlpJrlsJHmnaEKICAgICAgICByZXNvbHZlKCk7CiAgICAgIH0pOwogICAgfSk7CiAgfQp9LCBfZGVmaW5lUHJvcGVydHkoX2RlZmluZVByb3BlcnR5KF9kZWZpbmVQcm9wZXJ0eShfZGVmaW5lUHJvcGVydHkoX2RlZmluZVByb3BlcnR5KF9kZWZpbmVQcm9wZXJ0eShfZGVmaW5lUHJvcGVydHkoX2RlZmluZVByb3BlcnR5KF9kZWZpbmVQcm9wZXJ0eShfZGVmaW5lUHJvcGVydHkoX2FjdGlvbnMsICJnZXROZXdzUGFnaW5hdGlvbiIsIGZ1bmN0aW9uIGdldE5ld3NQYWdpbmF0aW9uKF9yZWYxNSwgdHlwZSkgewogIHZhciBjb21taXQgPSBfcmVmMTUuY29tbWl0LAogICAgc3RhdGUgPSBfcmVmMTUuc3RhdGU7CiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKICAgIHBvcnRhbC5nZXROZXdzUGFnaW5hdGlvbih0eXBlLCBmdW5jdGlvbiAocmVzcG9uc2UpIHsKICAgICAgcmVzb2x2ZShyZXNwb25zZS5kYXRhKTsKICAgIH0pOwogIH0pOwp9KSwgImdldE5ld3NQYWdpbmF0aW9uTGlzdCIsIGZ1bmN0aW9uIGdldE5ld3NQYWdpbmF0aW9uTGlzdChfcmVmMTYsIHBhZ2luYXRpb24pIHsKICB2YXIgY29tbWl0ID0gX3JlZjE2LmNvbW1pdCwKICAgIHN0YXRlID0gX3JlZjE2LnN0YXRlOwogIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICBwb3J0YWwuZ2V0TmV3c1BhZ2luYXRpb25MaXN0KHBhZ2luYXRpb24sIGZ1bmN0aW9uIChyZXNwb25zZSkgewogICAgICBjb21taXQoInNldFJvd3MiLCByZXNwb25zZS5kYXRhLnJvd3MpOwogICAgICBjb21taXQoInNldFRvdGFsIiwgcmVzcG9uc2UuZGF0YS50b3RhbCk7CiAgICAgIHZhciBwYWdlQmVhbiA9IHsKICAgICAgICAicGFnZSI6IHJlc3BvbnNlLmRhdGEucGFnZSwKICAgICAgICAicGFnZVNpemUiOiByZXNwb25zZS5kYXRhLnBhZ2VTaXplLAogICAgICAgICJzaG93VG90YWwiOiAidHJ1ZSIKICAgICAgfTsKICAgICAgY29tbWl0KCJzZXRQYWdpbmF0aW9uIiwgcGFnZUJlYW4pOwogICAgICByZXNvbHZlKCk7CiAgICB9KTsKICB9KTsKfSksICJnZXROb3RpY2VQYWdpbmF0aW9uIiwgZnVuY3Rpb24gZ2V0Tm90aWNlUGFnaW5hdGlvbihfcmVmMTcsIHBhZ2luYXRpb24pIHsKICB2YXIgY29tbWl0ID0gX3JlZjE3LmNvbW1pdCwKICAgIHN0YXRlID0gX3JlZjE3LnN0YXRlOwogIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICBwb3J0YWwuZ2V0Tm90aWNlUGFnaW5hdGlvbihwYWdpbmF0aW9uLCBmdW5jdGlvbiAocmVzcG9uc2UpIHsKICAgICAgY29tbWl0KCJzZXROb3RpY2UiLCByZXNwb25zZS5kYXRhLnJvd3MpOyAvL+WPkeaWh+WRiuaVsOaNrgogICAgICBjb21taXQoInNldFRvdGFsIiwgcmVzcG9uc2UuZGF0YS50b3RhbCk7IC8v5oC75pWw5o2u5p2h5pWwCiAgICAgIHZhciBwYWdlQmVhbiA9IHsKICAgICAgICAicGFnZSI6IHJlc3BvbnNlLmRhdGEucGFnZSwKICAgICAgICAicGFnZVNpemUiOiByZXNwb25zZS5kYXRhLnBhZ2VTaXplLAogICAgICAgICJzaG93VG90YWwiOiAidHJ1ZSIKICAgICAgfTsgLy/mjqXlj6Pmlrnms5Xov5Tlm57nmoRwYWdlQmVhbgogICAgICBjb21taXQoInNldFBhZ2luYXRpb24iLCBwYWdlQmVhbik7IC8v5pi+56S656ys5Yeg6aG177yM5q+P6aG15pi+56S65aSa5bCR5p2hCiAgICAgIHJlc29sdmUoKTsKICAgIH0pOwogIH0pOwp9KSwgImdldE5ld3NCeUlkIiwgZnVuY3Rpb24gZ2V0TmV3c0J5SWQoX3JlZjE4LCBwYWdpbmF0aW9uKSB7CiAgdmFyIGNvbW1pdCA9IF9yZWYxOC5jb21taXQsCiAgICBzdGF0ZSA9IF9yZWYxOC5zdGF0ZTsKICBwb3J0YWwuZ2V0TmV3c0J5SWQocGFnaW5hdGlvbiwgZnVuY3Rpb24gKHJlc3BvbnNlKSB7CiAgICBpZiAocmVzcG9uc2UuZGF0YS5mZmopIHsKICAgICAgdmFyIGZpbGVzID0gSlNPTi5wYXJzZShyZXNwb25zZS5kYXRhLmZmaik7CiAgICAgIHJlc3BvbnNlLmRhdGEuZmZqID0gZmlsZXM7CiAgICB9CiAgICBjb21taXQoInNldEZpbGVzRGF0YSIsIHJlc3BvbnNlLmRhdGEpOyAvL+WPkeaWh+WRiuaVsOaNrgogIH0pOwp9KSwgIm9ubGluZVByZXZpZXciLCBmdW5jdGlvbiBvbmxpbmVQcmV2aWV3KF9yZWYxOSwgaWQpIHsKICB2YXIgY29tbWl0ID0gX3JlZjE5LmNvbW1pdCwKICAgIHN0YXRlID0gX3JlZjE5LnN0YXRlOwogIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICBwb3J0YWwub25saW5lUHJldmlldyhpZCwgZnVuY3Rpb24gKHJlc3BvbnNlKSB7CiAgICAgIHJlc29sdmUocmVzcG9uc2UuZGF0YSk7CiAgICB9KTsKICB9KTsKfSksICJkb3dubG9hZEZpbGUiLCBmdW5jdGlvbiBkb3dubG9hZEZpbGUoX3JlZjIwLCBpZCkgewogIHZhciBjb21taXQgPSBfcmVmMjAuY29tbWl0LAogICAgc3RhdGUgPSBfcmVmMjAuc3RhdGU7CiAgcG9ydGFsLmRvd25sb2FkRmlsZShpZCk7Cn0pLCAiZG93bmxvYWRJbWciLCBmdW5jdGlvbiBkb3dubG9hZEltZyhfcmVmMjEsIHVybCkgewogIHZhciBjb21taXQgPSBfcmVmMjEuY29tbWl0LAogICAgc3RhdGUgPSBfcmVmMjEuc3RhdGU7CiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKICAgIHBvcnRhbC5kb3dubG9hZEltZyh1cmwsIGZ1bmN0aW9uIChyZXNwb25zZSkgewogICAgICByZXNvbHZlKHJlc3BvbnNlKTsKICAgIH0pOwogIH0pOwp9KSwgImdldE1lZXRpbmdQYWdpbmF0aW9uIiwgZnVuY3Rpb24gZ2V0TWVldGluZ1BhZ2luYXRpb24oX3JlZjIyLCBwYWdpbmF0aW9uKSB7CiAgdmFyIGNvbW1pdCA9IF9yZWYyMi5jb21taXQsCiAgICBzdGF0ZSA9IF9yZWYyMi5zdGF0ZTsKICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgewogICAgcG9ydGFsLmdldE1lZXRpbmdQYWdpbmF0aW9uKHBhZ2luYXRpb24sIGZ1bmN0aW9uIChyZXNwb25zZSkgewogICAgICBjb21taXQoInNldE1lZXRpbmciLCByZXNwb25zZS5kYXRhLnJvd3MpOyAvL+S8muiuruaVsOaNrgogICAgICBjb21taXQoInNldFRvdGFsIiwgcmVzcG9uc2UuZGF0YS50b3RhbCk7IC8v5oC75pWw5o2u5p2h5pWwCiAgICAgIHZhciBwYWdlQmVhbiA9IHsKICAgICAgICAicGFnZSI6IHJlc3BvbnNlLmRhdGEucGFnZSwKICAgICAgICAicGFnZVNpemUiOiByZXNwb25zZS5kYXRhLnBhZ2VTaXplLAogICAgICAgICJzaG93VG90YWwiOiAidHJ1ZSIKICAgICAgfTsgLy/mjqXlj6Pmlrnms5Xov5Tlm57nmoRwYWdlQmVhbgogICAgICBjb21taXQoInNldFBhZ2luYXRpb24iLCBwYWdlQmVhbik7IC8v5pi+56S656ys5Yeg6aG177yM5q+P6aG15pi+56S65aSa5bCR5p2hCiAgICAgIHJlc29sdmUoKTsKICAgIH0pOwogIH0pOwp9KSwgImdldEJ5VHlwZUtleUZvckNvbUJvIiwgZnVuY3Rpb24gZ2V0QnlUeXBlS2V5Rm9yQ29tQm8oX3JlZjIzLCBkaWNLZXkpIHsKICB2YXIgY29tbWl0ID0gX3JlZjIzLmNvbW1pdCwKICAgIHN0YXRlID0gX3JlZjIzLnN0YXRlOwogIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICBwb3J0YWwuZ2V0QnlUeXBlS2V5Rm9yQ29tQm8oZGljS2V5LCBmdW5jdGlvbiAocmVzcG9uc2UpIHsKICAgICAgcmVzb2x2ZShyZXNwb25zZSk7CiAgICB9KTsKICB9KTsKfSksICJnZXROZXh0SWRCeUFsaWFzIiwgZnVuY3Rpb24gZ2V0TmV4dElkQnlBbGlhcyhfcmVmMjQsIGFsaWFzKSB7CiAgdmFyIGNvbW1pdCA9IF9yZWYyNC5jb21taXQsCiAgICBzdGF0ZSA9IF9yZWYyNC5zdGF0ZTsKICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgewogICAgcG9ydGFsLmdldE5leHRJZEJ5QWxpYXMoYWxpYXMsIGZ1bmN0aW9uIChyZXNwb25zZSkgewogICAgICByZXNvbHZlKHJlc3BvbnNlKTsKICAgIH0pOwogIH0pOwp9KSwgX2RlZmluZVByb3BlcnR5KF9kZWZpbmVQcm9wZXJ0eShfZGVmaW5lUHJvcGVydHkoX2RlZmluZVByb3BlcnR5KF9kZWZpbmVQcm9wZXJ0eShfZGVmaW5lUHJvcGVydHkoX2FjdGlvbnMsICJ2dWVGcm9udEhvbWUiLCBmdW5jdGlvbiB2dWVGcm9udEhvbWUoX3JlZjI1KSB7CiAgdmFyIGNvbW1pdCA9IF9yZWYyNS5jb21taXQsCiAgICBzdGF0ZSA9IF9yZWYyNS5zdGF0ZTsKICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgewogICAgcG9ydGFsLnZ1ZUZyb250SG9tZShmdW5jdGlvbiAocmVzcG9uc2UpIHsKICAgICAgcmVzb2x2ZShyZXNwb25zZSk7CiAgICB9KTsKICB9KTsKfSksICJnZXRDb2x1bW5CeUFsaWFzIiwgZnVuY3Rpb24gZ2V0Q29sdW1uQnlBbGlhcyhfcmVmMjYsIGFsaWFzKSB7CiAgdmFyIGNvbW1pdCA9IF9yZWYyNi5jb21taXQsCiAgICBzdGF0ZSA9IF9yZWYyNi5zdGF0ZTsKICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgewogICAgcG9ydGFsLmdldENvbHVtbkJ5QWxpYXMoYWxpYXMsIGZ1bmN0aW9uIChyZXNwb25zZSkgewogICAgICByZXNvbHZlKHJlc3BvbnNlKTsKICAgICAgY29tbWl0KCJ1cGRhdGVDb2x1bW5EYXRhIiwgcmVzcG9uc2UpOwogICAgfSk7CiAgfSk7Cn0pLCAiZ2V0Q29sdW1uQnlBbGlhc0JhdGNoIiwgZnVuY3Rpb24gZ2V0Q29sdW1uQnlBbGlhc0JhdGNoKF9yZWYyNywgYWxpYXMpIHsKICB2YXIgY29tbWl0ID0gX3JlZjI3LmNvbW1pdCwKICAgIHN0YXRlID0gX3JlZjI3LnN0YXRlLAogICAgZ2V0dGVycyA9IF9yZWYyNy5nZXR0ZXJzOwogIC8vIDEu5aaC5p6c5b2T5YmN5qCP55uu5pWw5o2u5Lit5bey57uP5pyJ5a+55bqU55qE5YC85LqG77yM55u05o6l6L+U5Zue44CCCiAgaWYgKGdldHRlcnMuaGFzQ29sdW1uRGF0YVdpdGhBbGlhcyhhbGlhcykpIHsKICAgIHJldHVybjsKICB9CiAgLy8gMi7mmK/lkKbmraPlnKjov5vooYzor7fmsYLlkIjlubbvvJsKICBpZiAoc3RhdGUuY29sdW1uUXVlcnlNZXJnaW5nKSB7CiAgICAvLyAoMSku5Y+W5raI5b2T5YmN5YCS6K6h5pe277ybCiAgICBjbGVhclRpbWVvdXQoc3RhdGUuY29sdW1uUXVlcnlNZXJnaW5nKTsKICAgIC8vICgyKS7ph43nva7lvZPliY3lgJLorqHml7blj5bmtojmoIforrDkvY3vvJsKICAgIGNvbW1pdCgic2V0Q29sdW1uUXVlcnlNZXJnaW5nIiwgbnVsbCk7CiAgfQogIC8vIDMu5p6E5bu65LiA5Liq6K+35rGC5YCS6K6h5pe277yI6buY6K6k5Lik5Liq6K+35rGC55u45beuNTDmr6vnp5LlhoXkvJrlkIjlubbkuLrkuIDkuKror7fmsYLvvInvvJsKICB2YXIgdGltZW91dENhbmNlbCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewogICAgLy8gNC7lgJLorqHml7bnu5PmnZ/vvIznnJ/mraPlj5HpgIHor7fmsYLvvJsKICAgIHBvcnRhbC5iYXRjaEdldENvbHVtbkJ5QWxpYXNlcyhzdGF0ZS5jb2x1bW5BbGlhc0FyeS5qb2luKCIsIiksIGZ1bmN0aW9uIChyZXNwb25zZSkgewogICAgICAvLyA1LuabtOaWsOagj+ebruaVsOaNruWIsHZ1ZXjnmoRzdGF0ZeS4reOAggogICAgICBjb21taXQoInNldENvbHVtbkRhdGEiLCByZXNwb25zZSk7CiAgICB9KTsKICAgIC8vIOa4heepuuagj+ebruivt+axguafpeivouWIq+WQjeaVsOe7hAogICAgY29tbWl0KCJjbGVhckNvbHVtbkFsaWFzQXJ5Iik7CiAgICAvLyDph43nva7lgJLorqHml7blj5bmtojmoIforrDkvY0KICAgIGNvbW1pdCgic2V0Q29sdW1uUXVlcnlNZXJnaW5nIiwgbnVsbCk7CiAgfSwgNTApOwogIC8vIOa3u+WKoOagj+ebruivt+axguafpeivouWIq+WQjeWIsOaVsOe7hAogIGNvbW1pdCgiYWRkQ29sdW1uQWxpYXMiLCBhbGlhcyk7CiAgLy8g5pu05paw5YCS6K6h5pe25Y+W5raI5qCH6K6w5L2NCiAgY29tbWl0KCJzZXRDb2x1bW5RdWVyeU1lcmdpbmciLCB0aW1lb3V0Q2FuY2VsKTsKfSksICJnZXRDb2x1bW5EYXRhIiwgZnVuY3Rpb24gZ2V0Q29sdW1uRGF0YShfcmVmMjgsIGNvbHVtbikgewogIHZhciBjb21taXQgPSBfcmVmMjguY29tbWl0LAogICAgc3RhdGUgPSBfcmVmMjguc3RhdGU7CiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKICAgIHBvcnRhbC5nZXRDb2x1bW5EYXRhKGNvbHVtbiwgZnVuY3Rpb24gKHJlc3BvbnNlKSB7CiAgICAgIHJlc29sdmUocmVzcG9uc2UpOwogICAgfSk7CiAgfSk7Cn0pLCAidXBkYXRlRmlsZUV4dHJhUHJvcCIsIGZ1bmN0aW9uIHVwZGF0ZUZpbGVFeHRyYVByb3AoX3JlZjI5LCBjb2x1bW4pIHsKICB2YXIgY29tbWl0ID0gX3JlZjI5LmNvbW1pdCwKICAgIHN0YXRlID0gX3JlZjI5LnN0YXRlOwogIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICBwb3J0YWwudXBkYXRlRmlsZUV4dHJhUHJvcChjb2x1bW4sIGZ1bmN0aW9uIChyZXNwb25zZSkgewogICAgICByZXNvbHZlKHJlc3BvbnNlKTsKICAgIH0pOwogIH0pOwp9KSwgImNsZWFyTWVudXMiLCBmdW5jdGlvbiBjbGVhck1lbnVzKF9yZWYzMCwgY29sdW1uKSB7CiAgdmFyIGNvbW1pdCA9IF9yZWYzMC5jb21taXQsCiAgICBzdGF0ZSA9IF9yZWYzMC5zdGF0ZTsKICBjb21taXQoImNsZWFyTWVudXMiKTsKICB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbSgiY3VycmVudEZyb250TWVudXMiKTsKICB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbSgiZGljdF9kYXRhIik7CiAgd2luZG93LnNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oImFsbE1ldGhvZCIpOwogIHdpbmRvdy5zZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKCJtZXRob2RBdXRoIik7Cn0pKTsKdmFyIG11dGF0aW9ucyA9IHsKICBzZXRNZW51czogZnVuY3Rpb24gc2V0TWVudXMoc3RhdGUsIG1lbnVzKSB7CiAgICBzdGF0ZS5hbGwgPSBtZW51czsKICB9LAogIGNsZWFyTWVudXM6IGZ1bmN0aW9uIGNsZWFyTWVudXMoKSB7CiAgICBzdGF0ZS5mcm9udE1lbnVzID0gW107CiAgICBzdGF0ZS5zeXNNZW51cyA9IFtdOwogIH0sCiAgc2V0UmVzaWR1YWw6IGZ1bmN0aW9uIHNldFJlc2lkdWFsKHN0YXRlLCB2YWwpIHsKICAgIHN0YXRlLnJlc2lkdWFsID0gdmFsOwogIH0sCiAgYXBwZW5kTWVudXM6IGZ1bmN0aW9uIGFwcGVuZE1lbnVzKHN0YXRlLCBtZW51cykgewogICAgbWVudXMuZm9yRWFjaChmdW5jdGlvbiAobWVudSkgewogICAgICBpZiAoIXN0YXRlLmFsbC5zb21lKGZ1bmN0aW9uIChtKSB7CiAgICAgICAgcmV0dXJuIG0uYWxpYXMgPT09IG1lbnUuYWxpYXM7CiAgICAgIH0pKSB7CiAgICAgICAgc3RhdGUuYWxsLnB1c2gobWVudSk7CiAgICAgIH0KICAgIH0pOwogICAgc3RhdGUuYWxsLnNvcnQoZnVuY3Rpb24gKG0sIG4pIHsKICAgICAgcmV0dXJuIG0uaWQgLSBuLmlkOwogICAgfSk7CiAgfSwKICBzZXRTeW5jTWVudXM6IGZ1bmN0aW9uIHNldFN5bmNNZW51cyhzdGF0ZSwgcmVzcG9uc2UpIHsKICAgIGlmIChyZXNwb25zZSAmJiByZXNwb25zZS5kYXRhICYmIHJlc3BvbnNlLmRhdGEudmFsdWUgJiYgcmVzcG9uc2UuZGF0YS52YWx1ZS5sZW5ndGggPiAwKSB7CiAgICAgIHZhciBtZW51cyA9IHJlc3BvbnNlLmRhdGEudmFsdWU7CiAgICAgIG1lbnVzLmZvckVhY2goZnVuY3Rpb24gKG1lbnUpIHsKICAgICAgICBpZiAoIXN0YXRlLmFsbC5zb21lKGZ1bmN0aW9uIChtKSB7CiAgICAgICAgICByZXR1cm4gbS5jb2RlID09PSBtZW51LmFsaWFzOwogICAgICAgIH0pKSB7CiAgICAgICAgICBzdGF0ZS5hbGwucHVzaCh7CiAgICAgICAgICAgIGlkOiBtZW51LmlkLAogICAgICAgICAgICBjb2RlOiBtZW51LmFsaWFzLAogICAgICAgICAgICBhbGlhczogbWVudS5hbGlhcywKICAgICAgICAgICAgcGF0aDogbWVudS5tZW51VXJsLAogICAgICAgICAgICBuYW1lOiBtZW51Lm5hbWUsCiAgICAgICAgICAgIHNuOiBtZW51LnNuCiAgICAgICAgICB9KTsKICAgICAgICAgIC8v5Yik5pat5piv5ZCm5piv5rWB56iL5Lit5b+DCiAgICAgICAgICBpZiAobWVudS5hbGlhcyA9PSAidi1mbG93IikgewogICAgICAgICAgICBpZiAocmVzcG9uc2UuaXNMZWFkZXIpIHsKICAgICAgICAgICAgICAvL+ayoeaciemihuWvvAogICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWVudS5jaGlsZHJlbi5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgaWYgKG1lbnUuY2hpbGRyZW5baV0uYWxpYXMgPT0gInYtbGVhZGVyIikgewogICAgICAgICAgICAgICAgICBtZW51LmNoaWxkcmVuLnNwbGljZShpLCAxKTsKICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHN0YXRlLm1lbnVNYXBzW21lbnUuYWxpYXNdID0gbWVudS5jaGlsZHJlbjsKICAgICAgICAgICAgfSBlbHNlIGlmICghcmVzcG9uc2UuaXNMZWFkZXIpIHsKICAgICAgICAgICAgICAvL+aciemihuWvvAogICAgICAgICAgICAgIHN0YXRlLm1lbnVNYXBzW21lbnUuYWxpYXNdID0gbWVudS5jaGlsZHJlbjsKICAgICAgICAgICAgfQogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgc3RhdGUubWVudU1hcHNbbWVudS5hbGlhc10gPSBtZW51LmNoaWxkcmVuOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAvLyB9CiAgICAgIH0pOwogICAgfQogIH0sCiAgc2V0Q3VycmVudE1lbnU6IGZ1bmN0aW9uIHNldEN1cnJlbnRNZW51KHN0YXRlLCByZXNwb25zZSkgewogICAgc3RhdGUuY3VycmVudE1lbnUgPSByZXNwb25zZTsKICB9LAogIGdldEFsbG1lbnVzOiBmdW5jdGlvbiBnZXRBbGxtZW51cyhzdGF0ZSwgcmVzcG9uc2UpIHsKICAgIHJldHVybiBzdGF0ZS5hbGw7CiAgfSwKICBzZXRQYWdpbmF0aW9uOiBmdW5jdGlvbiBzZXRQYWdpbmF0aW9uKHN0YXRlLCBwYWdpbmF0aW9uKSB7CiAgICBzdGF0ZS5wYWdpbmF0aW9uID0gcGFnaW5hdGlvbjsKICB9LAogIHNldFBhZ2luYXRpb25TaXplOiBmdW5jdGlvbiBzZXRQYWdpbmF0aW9uU2l6ZShzdGF0ZSwgc2l6ZSkgewogICAgc3RhdGUucGFnaW5hdGlvbi5wYWdlU2l6ZSA9IHNpemU7CiAgfSwKICBzZXRQYWdpbmF0aW9uUGFnZU51bTogZnVuY3Rpb24gc2V0UGFnaW5hdGlvblBhZ2VOdW0oc3RhdGUsIGN1cnJlbnRQYWdlKSB7CiAgICBzdGF0ZS5wYWdpbmF0aW9uLnBhZ2UgPSBjdXJyZW50UGFnZTsKICB9LAogIHNldFJvd3M6IGZ1bmN0aW9uIHNldFJvd3Moc3RhdGUsIHJvd3MpIHsKICAgIHN0YXRlLnJvd3MgPSByb3dzOwogIH0sCiAgc2V0Tm90aWNlOiBmdW5jdGlvbiBzZXROb3RpY2Uoc3RhdGUsIG5vdGljZSkgewogICAgc3RhdGUubm90aWNlID0gbm90aWNlOwogIH0sCiAgc2V0VG90YWw6IGZ1bmN0aW9uIHNldFRvdGFsKHN0YXRlLCB0b3RhbCkgewogICAgc3RhdGUudG90YWwgPSB0b3RhbDsKICB9LAogIHNldEZpbGVzRGF0YTogZnVuY3Rpb24gc2V0RmlsZXNEYXRhKHN0YXRlLCBmaWxlc0RhdGEpIHsKICAgIHN0YXRlLmZpbGVzRGF0YSA9IGZpbGVzRGF0YTsKICB9LAogIHNldE1lZXRpbmc6IGZ1bmN0aW9uIHNldE1lZXRpbmcoc3RhdGUsIG1lZXRpbmcpIHsKICAgIHN0YXRlLm1lZXRpbmcgPSBtZWV0aW5nOwogIH0sCiAgYWRkQ29sdW1uQWxpYXM6IGZ1bmN0aW9uIGFkZENvbHVtbkFsaWFzKHN0YXRlLCBhbGlhcykgewogICAgc3RhdGUuY29sdW1uQWxpYXNBcnkucHVzaChhbGlhcyk7CiAgfSwKICBjbGVhckNvbHVtbkFsaWFzQXJ5OiBmdW5jdGlvbiBjbGVhckNvbHVtbkFsaWFzQXJ5KHN0YXRlKSB7CiAgICBzdGF0ZS5jb2x1bW5BbGlhc0FyeSA9IFtdOwogIH0sCiAgc2V0Q29sdW1uUXVlcnlNZXJnaW5nOiBmdW5jdGlvbiBzZXRDb2x1bW5RdWVyeU1lcmdpbmcoc3RhdGUsIHZhbCkgewogICAgc3RhdGUuY29sdW1uUXVlcnlNZXJnaW5nID0gdmFsOwogIH0sCiAgc2V0Q29sdW1uRGF0YTogZnVuY3Rpb24gc2V0Q29sdW1uRGF0YShzdGF0ZSwgZGF0YSkgewogICAgdmFyIF9jb2xEYXRhID0gc3RhdGUuY29sdW1uRGF0YSB8fCB7fSwKICAgICAgYWxpYXNBcnkgPSBzdGF0ZS5jb2x1bW5EYXRhTG9hZGVkQWxpYXNlcyA/IHN0YXRlLmNvbHVtbkRhdGFMb2FkZWRBbGlhc2VzLnNwbGl0KCcsJykgOiBbXTsKICAgIGlmIChkYXRhICYmIGRhdGEubGVuZ3RoID4gMCkgewogICAgICBkYXRhLmZvckVhY2goZnVuY3Rpb24gKGQpIHsKICAgICAgICBhbGlhc0FyeS5wdXNoKGQuYWxpYXMpOwogICAgICAgIF9jb2xEYXRhW2QuYWxpYXNdID0gZDsKICAgICAgfSk7CiAgICB9CiAgICBzdGF0ZS5jb2x1bW5EYXRhID0gX2NvbERhdGE7CiAgICBzdGF0ZS5jb2x1bW5EYXRhTG9hZGVkQWxpYXNlcyA9IGFsaWFzQXJ5LmpvaW4oIiwiKTsKICB9LAogIHVwZGF0ZUNvbHVtbkRhdGE6IGZ1bmN0aW9uIHVwZGF0ZUNvbHVtbkRhdGEoc3RhdGUsIGRhdGEpIHsKICAgIGlmIChkYXRhICYmIGRhdGEuYWxpYXMpIHsKICAgICAgc3RhdGUuY29sdW1uRGF0YVtkYXRhLmFsaWFzXSA9IGRhdGE7CiAgICB9CiAgfSwKICAvLyDliY3lj7Doj5zljZXotYvlgLwKICBtdXRhdGlvbkZyb250TWVudXM6IGZ1bmN0aW9uIG11dGF0aW9uRnJvbnRNZW51cyhzdGF0ZSwgZnJvbnRNZW51cykgewogICAgc3RhdGUuZnJvbnRNZW51cyA9IGZyb250TWVudXM7CiAgfSwKICAvLyDlkI7lj7Doj5zljZXotYvlgLwKICBtdXRhdGlvblN5c01lbnVzOiBmdW5jdGlvbiBtdXRhdGlvblN5c01lbnVzKHN0YXRlLCBzeXNNZW51cykgewogICAgc3RhdGUuc3lzTWVudXMgPSBzeXNNZW51czsKICB9Cn07CmV4cG9ydCBkZWZhdWx0IHsKICBuYW1lc3BhY2VkOiB0cnVlLAogIHN0YXRlOiBzdGF0ZSwKICBnZXR0ZXJzOiBnZXR0ZXJzLAogIGFjdGlvbnM6IGFjdGlvbnMsCiAgbXV0YXRpb25zOiBtdXRhdGlvbnMKfTs="},null]}