{"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\\cache-loader\\dist\\cjs.js??ref--0-0!D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\jenkins\\workspace\\xcjy-fvue\\src\\components\\MineMap\\index.vue?vue&type=script&lang=js","dependencies":[{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\src\\components\\MineMap\\index.vue","mtime":1741378119818},{"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\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0IF9vYmplY3RTcHJlYWQgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RTcHJlYWQyLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuc3ltYm9sLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuc3ltYm9sLmRlc2NyaXB0aW9uLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkubWFwLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkucHVzaC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLml0ZXJhdG9yLmNvbnN0cnVjdG9yLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuaXRlcmF0b3IuZm9yLWVhY2guanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5pdGVyYXRvci5tYXAuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3QuZnJlZXplLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LnRvLXN0cmluZy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL3dlYi5kb20tY29sbGVjdGlvbnMuZm9yLWVhY2guanMiOwovLwovLwovLwovLwoKaW1wb3J0IHBhdHJvSWNvbiBmcm9tICdAL3ZpZXdzL2JpZ1NjcmVlbi9wYXRyb2xSZXNjdWUvaW1hZ2UvcGF0cm9sLWljb24ucG5nJzsKaW1wb3J0IHJlc2N1ZUljb24gZnJvbSAnQC92aWV3cy9iaWdTY3JlZW4vcGF0cm9sUmVzY3VlL2ltYWdlL3Jlc2N1ZS1pY29uLnBuZyc7CmltcG9ydCBlbWVyZ2VyRXZlbnRJY29uIGZyb20gJ0Avdmlld3MvYmlnU2NyZWVuL3BhdHJvbFJlc2N1ZS9pbWFnZS9lbWVyZ2VyLWV2ZW50LWljb24ucG5nJzsKaW1wb3J0IHJlc2N1ZUV2ZW50SWNvbiBmcm9tICdAL3ZpZXdzL2JpZ1NjcmVlbi9wYXRyb2xSZXNjdWUvaW1hZ2UvcmVzY3VlLWV2ZW50LWljb24ucG5nJzsKaW1wb3J0IHJvYWRJY29uIGZyb20gJ0Avdmlld3MvYmlnU2NyZWVuL3BhdHJvbFJlc2N1ZS9pbWFnZS9jYXJkUnJvYWQucG5nJzsKaW1wb3J0IHBpY2t1cEljb24gZnJvbSAnQC92aWV3cy9iaWdTY3JlZW4vcGF0cm9sUmVzY3VlL2ltYWdlL3BpY2t1cC5wbmcnOwpleHBvcnQgZGVmYXVsdCB7CiAgbmFtZTogJ01pbmVNYXAnLAogIC8vIE1haW4KICBwcm9wczogewogICAgLy8g6buY6K6k5Zyw5Zu+5Yqg6L296YWN572uCiAgICBkZWZhdWx0T3B0aW9uczogewogICAgICBkZWZhdWx0OiBmdW5jdGlvbiBfZGVmYXVsdCgpIHsKICAgICAgICByZXR1cm4ge307CiAgICAgIH0sCiAgICAgIHR5cGU6IE9iamVjdCwKICAgICAgcmVxdWlyZWQ6IGZhbHNlCiAgICB9LAogICAgLy8g6Ieq5a6a5LmJ57G75ZCNCiAgICBjdXN0b21DbGFzczogewogICAgICBkZWZhdWx0OiAnJywKICAgICAgdHlwZTogU3RyaW5nLAogICAgICByZXF1aXJlZDogZmFsc2UKICAgIH0sCiAgICAvLyDoh6rlrprkuYnngrnkvY3pm4blkIgKICAgIG1hcmtlcnM6IHsKICAgICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7CiAgICAgICAgcmV0dXJuIFtdOwogICAgICB9LAogICAgICB0eXBlOiBBcnJheSwKICAgICAgcmVxdWlyZWQ6IGZhbHNlCiAgICB9LAogICAgLy8g6Ieq5a6a5LmJ57q/6ZuG5ZCICiAgICBsaW5lczogewogICAgICBkZWZhdWx0OiBmdW5jdGlvbiBfZGVmYXVsdCgpIHsKICAgICAgICByZXR1cm4gW107CiAgICAgIH0sCiAgICAgIHR5cGU6IEFycmF5LAogICAgICByZXF1aXJlZDogZmFsc2UKICAgIH0sCiAgICAvLyDoh6rlrprkuYnpnaLpm4blkIgKICAgIHBvbHlnb25zOiB7CiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkgewogICAgICAgIHJldHVybiBbXTsKICAgICAgfSwKICAgICAgdHlwZTogQXJyYXksCiAgICAgIHJlcXVpcmVkOiBmYWxzZQogICAgfQogIH0sCiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHsKICAgIHJldHVybiB7CiAgICAgIG1hcE9wdGlvbnM6IHsKICAgICAgICAvLyBzdHlsZTogJ2h0dHBzOi8vc2VydmljZS5taW5lZGF0YS5jbi9tYXAvc29sdS9zdHlsZS8xMTAwMScgLyog5bqV5Zu+5qC35byPICovLAogICAgICAgIC8vIHN0eWxlOiAnbWluaU1hcC9zZXJ2aWNlL3NvbHUvc3R5bGUvaWQvMTY5MzInIC8qIOW6leWbvuagt+W8jyAqLywKICAgICAgICBzdHlsZTogJ2h0dHBzOi8vbWFwLmhvcGUuY21ldDE5NjUuY29tOjU4MDAwL3NlcnZpY2Uvc29sdS9zdHlsZS9pZC8xNjkzMicgLyog5bqV5Zu+5qC35byPICovLAogICAgICAgIGNlbnRlcjogWzEwNy44NTU4NSwgMjguNDY1OTA4XSAvKuWcsOWbvuS4reW/g+eCuSovLAogICAgICAgIHpvb206IDYgLyrlnLDlm77pu5jorqTnvKnmlL7nrYnnuqcqLywKICAgICAgICBwaXRjaDogMCAvKuWcsOWbvuS/r+S7sOinkuW6piovLAogICAgICAgIG1heFpvb206IDIwIC8q5Zyw5Zu+5pyA5aSn57yp5pS+562J57qnKi8sCiAgICAgICAgbWluWm9vbTogMyAvKuWcsOWbvuacgOWwj+e8qeaUvuetiee6pyovCiAgICAgIH0sCiAgICAgIG1pbmVNYXA6IE9iamVjdC5mcmVlemUobWluZW1hcCksCiAgICAgIC8vIG1pbmVNYXDmj5Lku7YKICAgICAgbWFwOiBudWxsLAogICAgICAvLyDlnLDlm77lrp7kvovlr7nosaEKICAgICAgbWFwTG9hZGVkOiBmYWxzZSwKICAgICAgYm91bmRhcnlMaW5lRmFjZTogW3sKICAgICAgICAvLyDlnLDlm77nnIHku73ovrnnlYwgIGxheWVySWRs6L6555WM57q/IGxheWVySWRmIOi+ueeVjOmdogogICAgICAgIGNvZGU6ICdTQycsCiAgICAgICAgbGF5ZXJJZGw6ICcyMDE4N2FjNzM2N2UxNDAzNGI4YzE5YTQwYTMzZmUzMCcsCiAgICAgICAgbGF5ZXJJZGY6ICc0Mzk0ODc2NDYwZjZjM2JkMzRkMDYxNWJmMDRjZmY0NycKICAgICAgfSwgewogICAgICAgIGNvZGU6ICdBSCcsCiAgICAgICAgbGF5ZXJJZGw6ICdlZjAxYTAxNjlhYWVjODFlNzdlOWYwMDQ4Y2ViOTcxMycsCiAgICAgICAgbGF5ZXJJZGY6ICczZGRlNTEwYzQ0NjIzMGNiZDRmZGQxNWM1ZmI4NTQxNicKICAgICAgfSwgewogICAgICAgIGNvZGU6ICdZTicsCiAgICAgICAgbGF5ZXJJZGw6ICcwNmZjMDIzMGRhZDQzN2U4NWQyNDYwMGUwNjUxNjU4NycsCiAgICAgICAgbGF5ZXJJZGY6ICcwMzFlNWU2MWRmNzM3NzhiY2UyYzJkODJhNGZjMGExYycKICAgICAgfSwgewogICAgICAgIGNvZGU6ICdHWicsCiAgICAgICAgbGF5ZXJJZGw6ICc2YzY2Y2RiYWRkYmNmODM5YTUyOWIwM2JjZWUyMzI2NicsCiAgICAgICAgbGF5ZXJJZGY6ICdkOTYwY2U0ZjBmZTNlYWZlZWJmMDJhOTA4ZTI1OTEwYicKICAgICAgfSwgewogICAgICAgIGNvZGU6ICdDUScsCiAgICAgICAgbGF5ZXJJZGw6ICdkZmM5Nzc5YTUxZGU3OWIyZWI0MDc5MGY2MTM5NjRlMicsCiAgICAgICAgbGF5ZXJJZGY6ICdiMzc1NzNkNWQ3M2YyMjNhYTVjZjQyOTNlZmVkYTNjMCcKICAgICAgfSwgewogICAgICAgIGNvZGU6ICdYSicsCiAgICAgICAgbGF5ZXJJZGw6ICdiNmY4YzczYjJkMzE0YmQ2ZTA5MTAxMmZkNzY5OGU5NCcsCiAgICAgICAgbGF5ZXJJZGY6ICcyMzhhNWU5ZGU1NmZhYTczODU4NzNhYWFkZjNhZDY3ZCcKICAgICAgfSwgewogICAgICAgIGNvZGU6ICdITicsCiAgICAgICAgbGF5ZXJJZGw6ICc0ZWRiZTk1ZTNlYzg3ODYyNzZiYjM5Y2U3YzQyNDUzZicsCiAgICAgICAgbGF5ZXJJZGY6ICdjMWM1YzA0MDI1NzMyNjM1MmQ2OTQ1MjhiN2UzM2ZhYycKICAgICAgfV0sCiAgICAgIC8vIOmHjeW6hiAxNzY2MDE3NDcyNjk3NDc1MDcyCiAgICAgIC8v5LqR5Y2XICAgMTc2NjAxNzk3NjIwMjY5ODc1MgogICAgICAvL+Wbm+W3nSAxNzY2MDE5MzIyODk3MjQ0MTYwCiAgICAgIHByb3ZpbmNlTWFya2VyOiBbewogICAgICAgIHpiOiBbMTA3LjU2OTg1NSwgMzAuMzY3MDk1XSwKICAgICAgICBpZDogJzE0MzAwNDk1NTA1Mzc3MjM5MDQnLAogICAgICAgIC8v6YeN5bqGCiAgICAgICAgem9vbTogNi44CiAgICAgIH0sIHsKICAgICAgICB6YjogWzEwMi45Mjg5OTUsIDMwLjUyNDg3XSwKICAgICAgICBpZDogJyIxNTUxOTczNjM0NTY1Nzg3NjM3IicsCiAgICAgICAgem9vbTogNS44IC8v5Zub5bedCiAgICAgIH0sIHsKICAgICAgICB6YjogWzEwMS41OTMxMDMsIDI1LjM1MzM3NV0sCiAgICAgICAgaWQ6ICcxNTUxOTczNjMwMTAyMDgxNTM2JywKICAgICAgICAvL+S6keWNlwogICAgICAgIHpvb206IDYKICAgICAgfSwgewogICAgICAgIHpiOiBbMTA2LjY0MTI0MywgMjcuMTA3OTddLAogICAgICAgIGlkOiAnR1onLAogICAgICAgIHpvb206IDYuNQogICAgICB9LCB7CiAgICAgICAgemI6IFsxMTcuMjI5OTI5LCAzMi4zMjUzOThdLAogICAgICAgIGlkOiAnQUgnLAogICAgICAgIHpvb206IDYuNQogICAgICB9XSwKICAgICAgaW50ZXJ2YWxJZDogbnVsbCwKICAgICAgc3RhcnRSZXNjdWVpbnRlcnZhbElkOiBudWxsLAogICAgICByZXNjdWVCbGlua0ludGVydmFsczogW10sCiAgICAgIGlkTGlzdDogW10sCiAgICAgIHNvdXJjZUlkTGlzdDogW10sCiAgICAgIHJlc2N1ZUlkTGlzdDogW10sCiAgICAgIHJlc2N1ZVNvdXJjZUlkTGlzdDogW10sCiAgICAgIC8v5Zu+5bGC6LWE5rqQaWQKICAgICAgbWFya2Vyc1Jlc2N1ZTogW10sCiAgICAgIG1hcmtlclJlc2N1ZUV2ZW50OiBbXSwKICAgICAgbWFya2VyRW1lcmdlbmNpZXM6IFtdLAogICAgICBtYXJrZXJPbmxpbmVDYXI6IFtdLAogICAgICBtYXJrZXJPbmx5Q2FyOiBbXSwKICAgICAgb25saW5lQ2FyQ2xpY2s6IGZhbHNlLAogICAgICBjb3VudDogMCwKICAgICAgcGF0cm9sQ2xpY2s6IGZhbHNlLAogICAgICByZXNjdWVDbGljazogZmFsc2UsCiAgICAgIGVtZXJnZW5jaWVzQ2xpY2s6IGZhbHNlLAogICAgICByZXNjdWVFdmVudENsaWNrOiBmYWxzZSwKICAgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgIGV2ZW50TWFya2VyczogW10sCiAgICAgIC8vIOS6i+S7tumpu+eCuQogICAgICB0YXNrTWFya2VyczogW10sCiAgICAgIC8vIOS7u+WKoempu+eCuQogICAgICBqeVBsYWNlTWFya2VyczogW10sCiAgICAgIC8vIOW3oeafpempu+eCuQogICAgICB4Y1BsYWNlTWFya2VyczogW10gLy8g5pWR5o+06am754K5CiAgICB9OwogIH0sCiAgY3JlYXRlZDogZnVuY3Rpb24gY3JlYXRlZCgpIHsKICAgIC8vIOmFjee9riBrZXnjgIFzb2x1dGlvbgogICAgdGhpcy5taW5lTWFwLmtleSA9ICczMGJlNzgzMWNhZjg0Njg1Yjk0ZTc4NzI3ZTRjZTI1Zic7CiAgICB0aGlzLm1pbmVNYXAuc29sdXRpb24gPSAxNjkzMjsKICAgIHRoaXMubWluZU1hcC5kb21haW5VcmwgPSAnaHR0cHM6Ly9tYXAuaG9wZS5jbWV0MTk2NS5jb206NTgwMDAnOyAvKiBNaW5lTWFw5qC55Z+f5ZCN5Zyw5Z2AICovCiAgICAvKiBNaW5lTWFw55+i6YeP5pWw5o2u5pyN5Yqh5qC55Z+f5ZCN5Zyw5Z2AICovCiAgICB0aGlzLm1pbmVNYXAuZGF0YURvbWFpblVybCA9ICdodHRwczovL21hcC5ob3BlLmNtZXQxOTY1LmNvbTo1ODAwMCc7CiAgICAvKiBNaW5lTWFw55+i6YeP5pWw5o2u5pyN5Yqh5paw6KeE6IyD5qC55Z+f5ZCN5Zyw5Z2AICovCiAgICB0aGlzLm1pbmVNYXAuc2VydmVyRG9tYWluVXJsID0gJ2h0dHBzOi8vbWFwLmhvcGUuY21ldDE5NjUuY29tOjU4MDAwJzsKICAgIC8qIE1pbmVNYXDlupXlm77pm6rnoqflm77lnLDlnYAgKi8KICAgIHRoaXMubWluZU1hcC5zcHJpdGVVcmwgPSBbJ2h0dHBzOi8vbWFwLmhvcGUuY21ldDE5NjUuY29tOjU4MDAwL21pbmVtYXBhcGkvenN4ei96c3h6J107IC8vICIuL21hcHJlc291cmNlL3Nwcml0ZS9zcHJpdGUiLAogICAgLyogTWluZU1hcOWQjuWPsOacjeWKoeagueWcsOWdgCAqLwogICAgdGhpcy5taW5lTWFwLnNlcnZpY2VVcmwgPSAnaHR0cHM6Ly9tYXAuaG9wZS5jbWV0MTk2NS5jb206NTgwMDAvc2VydmljZS8nOwoKICAgIC8vIOWQiOW5tuimhueblum7mOiupOmFjee9rumhuQogICAgdGhpcy5tYXBPcHRpb25zID0gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCB0aGlzLm1hcE9wdGlvbnMpLCB0aGlzLmRlZmF1bHRPcHRpb25zKTsKICB9LAogIG1vdW50ZWQ6IGZ1bmN0aW9uIG1vdW50ZWQoKSB7CiAgICB0aGlzLmluaXRNaW5lTWFwKCk7CiAgfSwKICBtZXRob2RzOiB7CiAgICAvLyDliqDovb1taW5lTWFwMkTlnLDlm74KICAgIGluaXRNaW5lTWFwOiBmdW5jdGlvbiBpbml0TWluZU1hcCgpIHsKICAgICAgdmFyIF90aGlzID0gdGhpczsKICAgICAgLy8g5Yid5aeL5YyW5Zyw5Zu+5a6e5L6LCiAgICAgIHRoaXMubWFwID0gbmV3IHRoaXMubWluZU1hcC5NYXAoX29iamVjdFNwcmVhZCh7CiAgICAgICAgY29udGFpbmVyOiB0aGlzLiRyZWZzLm1hcAogICAgICB9LCB0aGlzLm1hcE9wdGlvbnMpKS5vbignbG9hZCcsIGZ1bmN0aW9uIChfKSB7CiAgICAgICAgX3RoaXMuc2V0SGluaWdodCgpOyAvLyDnoa7kv53lnKjlnLDlm77liqDovb3lrozmiJDlkI7osIPnlKggc2V0SGluaWdodAogICAgICAgIF90aGlzLm1hcExvYWRlZCA9IHRydWU7IC8vIOW9k+WcsOWbvuWKoOi9veWujOaIkOaXtu+8jOiuvue9ruagh+W/l+S4uiB0cnVlCiAgICAgIH0pLm9uKCdlcnJvcicsIGZ1bmN0aW9uIChlcnJvcikgewogICAgICAgIHJldHVybiBfdGhpcy4kZW1pdCgnb25FcnJvcicsIGVycm9yKTsKICAgICAgfSk7CiAgICB9LAogICAgLy/orr7nva7pq5jkuq7ljLrln58KICAgIHNldEhpbmlnaHQ6IGZ1bmN0aW9uIHNldEhpbmlnaHQoKSB7CiAgICAgIHZhciBfdGhpczIgPSB0aGlzOwogICAgICBpZiAodGhpcy5tYXApIHsKICAgICAgICB0aGlzLmJvdW5kYXJ5TGluZUZhY2UuZm9yRWFjaChmdW5jdGlvbiAoZWwpIHsKICAgICAgICAgIF90aGlzMi5tYXAuc2V0TGF5b3V0UHJvcGVydHkoZWwubGF5ZXJJZGwsICd2aXNpYmlsaXR5JywgJ3Zpc2libGUnKTsKICAgICAgICAgIF90aGlzMi5tYXAuc2V0TGF5b3V0UHJvcGVydHkoZWwubGF5ZXJJZGYsICd2aXNpYmlsaXR5JywgJ3Zpc2libGUnKTsKICAgICAgICB9KTsKICAgICAgICB0aGlzLiRlbWl0KCdvbkxvYWQnLCB0aGlzLm1hcCk7CiAgICAgIH0KICAgIH0sCiAgICAvL+WcsOWbvuS4reW/g+eCueWIh+aNoi10ZXN0CiAgICBjaGFuZ2VNYXBDZW50ZXI6IGZ1bmN0aW9uIGNoYW5nZU1hcENlbnRlcih2YWwpIHsKICAgICAgdmFyIF90aGlzMyA9IHRoaXM7CiAgICAgIHRoaXMucHJvdmluY2VNYXJrZXIuZm9yRWFjaChmdW5jdGlvbiAoZWwpIHsKICAgICAgICBpZiAodmFsID09PSBlbC5pZCkgewogICAgICAgICAgX3RoaXMzLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIF90aGlzMy5tYXAuZmx5VG8oewogICAgICAgICAgICAgIGNlbnRlcjogZWwuemIsCiAgICAgICAgICAgICAgem9vbTogZWwuem9vbQogICAgICAgICAgICB9KTsKICAgICAgICAgIH0pOwogICAgICAgIH0KICAgICAgfSk7CiAgICB9LAogICAgLy8g6YeN5paw5Yqg6L295Zyw5Zu+CiAgICByZXNldE1hcDogZnVuY3Rpb24gcmVzZXRNYXAoY2FsbGJhY2spIHsKICAgICAgdmFyIF90aGlzNCA9IHRoaXM7CiAgICAgIGlmICh0aGlzLm1hcCAmJiB0aGlzLm1hcExvYWRlZCkgewogICAgICAgIC8vIOenu+mZpOaJgOacieWKqOaAgea3u+WKoOeahOagh+iusOOAgee6v+WSjOmdogogICAgICAgIHRoaXMubWFya2Vycy5mb3JFYWNoKGZ1bmN0aW9uIChtYXJrZXIpIHsKICAgICAgICAgIHJldHVybiBtYXJrZXIucmVtb3ZlKCk7CiAgICAgICAgfSk7CiAgICAgICAgdGhpcy5saW5lcy5mb3JFYWNoKGZ1bmN0aW9uIChsaW5lKSB7CiAgICAgICAgICByZXR1cm4gX3RoaXM0Lm1hcC5yZW1vdmVMYXllcihsaW5lLmlkKTsKICAgICAgICB9KTsKICAgICAgICB0aGlzLnBvbHlnb25zLmZvckVhY2goZnVuY3Rpb24gKHBvbHlnb24pIHsKICAgICAgICAgIHJldHVybiBfdGhpczQubWFwLnJlbW92ZUxheWVyKHBvbHlnb24uaWQpOwogICAgICAgIH0pOwoKICAgICAgICAvLyDmuIXnqbrlrZjlgqjnmoTlm77lsYLlvJXnlKgKICAgICAgICB0aGlzLm1hcmtlcnMubGVuZ3RoID0gMDsKICAgICAgICB0aGlzLmxpbmVzLmxlbmd0aCA9IDA7CiAgICAgICAgdGhpcy5wb2x5Z29ucy5sZW5ndGggPSAwOwoKICAgICAgICAvLyDph43mlrDlupTnlKjlupXlm77moLflvI8KICAgICAgICB2YXIgX3RoaXMkbWFwT3B0aW9ucyA9IHRoaXMubWFwT3B0aW9ucywKICAgICAgICAgIGNlbnRlciA9IF90aGlzJG1hcE9wdGlvbnMuY2VudGVyLAogICAgICAgICAgem9vbSA9IF90aGlzJG1hcE9wdGlvbnMuem9vbTsKICAgICAgICB0aGlzLm1hcC5zZXRDZW50ZXIoY2VudGVyKTsKICAgICAgICB0aGlzLm1hcC5zZXRab29tKHpvb20pOwogICAgICB9CiAgICAgIGNhbGxiYWNrICYmIGNhbGxiYWNrKHRoaXMubWFwKTsKICAgIH0sCiAgICAvL+a4hemZpOW3oeafpempu+eCueWbvuWxguagh+iusAogICAgY2xlYXJMYXlNYXJrZXI6IGZ1bmN0aW9uIGNsZWFyTGF5TWFya2VyKCkgewogICAgICB2YXIgX3RoaXM1ID0gdGhpczsKICAgICAgdGhpcy5tYXJrZXJzLmZvckVhY2goZnVuY3Rpb24gKG1hcmtlcikgewogICAgICAgIHJldHVybiBtYXJrZXIucmVtb3ZlKCk7CiAgICAgIH0pOwogICAgICB0aGlzLm1hcmtlcnMubGVuZ3RoID0gMDsgLy8g5riF56m65qCH6K6w5pWw57uECiAgICAgIC8v56e76Zmk5pWw5o2u5rqQCiAgICAgIHRoaXMuc291cmNlSWRMaXN0LmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICBfdGhpczUubWFwLnJlbW92ZVNvdXJjZShpdGVtKTsKICAgICAgfSk7CiAgICAgIHRoaXMuc291cmNlSWRMaXN0Lmxlbmd0aCA9IDA7CiAgICAgIC8vIOenu+mZpOi3r+auteWbvuWxggogICAgICB0aGlzLmlkTGlzdC5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgaWYgKF90aGlzNS5tYXAuZ2V0TGF5ZXIoaXRlbSkpIHsKICAgICAgICAgIF90aGlzNS5tYXAucmVtb3ZlTGF5ZXIoaXRlbSk7CiAgICAgICAgfQogICAgICB9KTsKICAgICAgdGhpcy5pZExpc3QubGVuZ3RoID0gMDsKICAgICAgLy8gdGhpcy5zdG9wQmxpbmsoKQogICAgICAvLyB0aGlzLnN0b3BCbGlua2luZygpCiAgICB9LAogICAgLy/muIXpmaTmlZHmj7Tpqbvngrnlm77lsYLmoIforrAKICAgIGNsZWFyTGF5UmVzY3VlTWFrZXI6IGZ1bmN0aW9uIGNsZWFyTGF5UmVzY3VlTWFrZXIoKSB7CiAgICAgIHZhciBfdGhpczYgPSB0aGlzOwogICAgICB0aGlzLm1hcmtlcnNSZXNjdWUuZm9yRWFjaChmdW5jdGlvbiAobWFya2VyKSB7CiAgICAgICAgcmV0dXJuIG1hcmtlci5yZW1vdmUoKTsKICAgICAgfSk7CiAgICAgIHRoaXMubWFya2Vyc1Jlc2N1ZS5sZW5ndGggPSAwOyAvLyDmuIXnqbrmoIforrDmlbDnu4QKICAgICAgLy/np7vpmaTmlbDmja7mupAKICAgICAgdGhpcy5yZXNjdWVTb3VyY2VJZExpc3QuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkgewogICAgICAgIF90aGlzNi5tYXAucmVtb3ZlU291cmNlKGl0ZW0pOwogICAgICB9KTsKICAgICAgdGhpcy5yZXNjdWVTb3VyY2VJZExpc3QubGVuZ3RoID0gMDsKICAgICAgLy8g56e76Zmk6Lev5q615Zu+5bGCCiAgICAgIHRoaXMucmVzY3VlSWRMaXN0LmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICBpZiAoX3RoaXM2Lm1hcC5nZXRMYXllcihpdGVtKSkgewogICAgICAgICAgX3RoaXM2Lm1hcC5yZW1vdmVMYXllcihpdGVtKTsKICAgICAgICB9CiAgICAgIH0pOwogICAgICB0aGlzLnJlc2N1ZUlkTGlzdC5sZW5ndGggPSAwOwogICAgICB0aGlzLnN0b3BSZXNjdWVTdGFydEJsaW5raW5nKCk7CiAgICB9LAogICAgLy/muIXpmaTovabovobmo4DmtYvmoIforrAKICAgIGNsZWFyQ2FyTWFya2VyOiBmdW5jdGlvbiBjbGVhckNhck1hcmtlcigpIHsKICAgICAgdGhpcy5tYXJrZXJPbmxpbmVDYXIuZm9yRWFjaChmdW5jdGlvbiAobWFya2VyKSB7CiAgICAgICAgbWFya2VyLnJlbW92ZSgpOwogICAgICB9KTsKICAgICAgdGhpcy5tYXJrZXJPbmxpbmVDYXIubGVuZ3RoID0gMDsKICAgICAgdGhpcy5tYXJrZXJPbmx5Q2FyLmZvckVhY2goZnVuY3Rpb24gKG1hcmtlcikgewogICAgICAgIG1hcmtlci5yZW1vdmUoKTsKICAgICAgfSk7CiAgICAgIHRoaXMubWFya2VyT25seUNhci5sZW5ndGggPSAwOwogICAgfSwKICAgIC8v5pS55Y+Y5Zyw5Zu+5Lit5b+D54K5CiAgICBjaGFuZ2VDZW50ZXI6IGZ1bmN0aW9uIGNoYW5nZUNlbnRlcih2YWwpIHsKICAgICAgaWYgKHRoaXMubWFwKSB7CiAgICAgICAgLy8gdGhpcy5tYXAgLy8g5ZCM5pe25Lyg5YWl57yp5pS+57qn5Yir5ZKM5Lit5b+D54K557uP57qs5bqmCiAgICAgICAgLy8gICAuc2V0Wm9vbUFuZENlbnRlcig4LCB2YWwpIC8v6K6+572u5Zyw5Zu+5bGC57qnCiAgICAgICAgdGhpcy5tYXAuZmx5VG8oewogICAgICAgICAgY2VudGVyOiB2YWwsCiAgICAgICAgICB6b29tOiA2LjUKICAgICAgICB9KTsKICAgICAgfQogICAgfSwKICAgIC8qKg0KICAgICAqIEBkZXNjcmlwdGlvbjoNCiAgICAgKiBAcGFyYW0geyp9IHR5cGUg57G75Z6LDQogICAgICogQHJldHVybiB7Kn0NCiAgICAgKi8KICAgIHJlbW92ZU1hcmtlcjogZnVuY3Rpb24gcmVtb3ZlTWFya2VyKHR5cGUpIHsKICAgICAgdGhpc1siIi5jb25jYXQodHlwZSwgIk1hcmtlcnMiKV0uZm9yRWFjaChmdW5jdGlvbiAobWFya2VyKSB7CiAgICAgICAgcmV0dXJuIG1hcmtlci5yZW1vdmUoKTsKICAgICAgfSk7CiAgICB9LAogICAgcmVtb3ZlQWxsTWFya2VyOiBmdW5jdGlvbiByZW1vdmVBbGxNYXJrZXIoKSB7CiAgICAgIHRoaXMuZXZlbnRNYXJrZXJzLmZvckVhY2goZnVuY3Rpb24gKG1hcmtlcikgewogICAgICAgIHJldHVybiBtYXJrZXIucmVtb3ZlKCk7CiAgICAgIH0pOwogICAgICB0aGlzLnRhc2tNYXJrZXJzLmZvckVhY2goZnVuY3Rpb24gKG1hcmtlcikgewogICAgICAgIHJldHVybiBtYXJrZXIucmVtb3ZlKCk7CiAgICAgIH0pOwogICAgICB0aGlzLmp5UGxhY2VNYXJrZXJzLmZvckVhY2goZnVuY3Rpb24gKG1hcmtlcikgewogICAgICAgIHJldHVybiBtYXJrZXIucmVtb3ZlKCk7CiAgICAgIH0pOwogICAgICB0aGlzLnhjUGxhY2VNYXJrZXJzLmZvckVhY2goZnVuY3Rpb24gKG1hcmtlcikgewogICAgICAgIHJldHVybiBtYXJrZXIucmVtb3ZlKCk7CiAgICAgIH0pOwogICAgfSwKICAgIC8qKg0KICAgICAqIEBkZXNjcmlwdGlvbjoNCiAgICAgKiBAcGFyYW0ge0FycmF5fSBtYXJrZXJzIOeCueS9jembhuWQiA0KICAgICAqIEBwYXJhbSB7U3RyaW5nfSB0eXBlIOexu+Weiw0KICAgICAqIEByZXR1cm4geyB2b2lkIH0NCiAgICAgKi8KICAgIC8vIOWcsOWbvuaJk+eCuQogICAgbWluZW1hcE1hcmtlcjogZnVuY3Rpb24gbWluZW1hcE1hcmtlcihtYXJrZXJzLCB0eXBlKSB7CiAgICAgIHZhciBfdGhpczcgPSB0aGlzOwogICAgICBtYXJrZXJzLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICBpZiAoaXRlbS5sbmcgJiYgaXRlbS5sYXQpIHsKICAgICAgICAgIGl0ZW0ubG5nbGF0ID0gW2l0ZW0ubG5nLCBpdGVtLmxhdF07CiAgICAgICAgICAvLyDliJvlu7pkaXbkvZzkuLrmoIforrDngrkKICAgICAgICAgIHZhciBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICAgICAgZWwuY2xhc3NOYW1lID0gJ21hcC1wb2ludCc7CgogICAgICAgICAgLy8gbGV0IHAxID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykKICAgICAgICAgIC8vIHAxLmNsYXNzTmFtZSA9ICd0ZXh0LWJveCB0ZXh0LWJveC1iZy0nICsgaXRlbS5zdGF0ZQogICAgICAgICAgLy8gcDEuaW5uZXJIVE1MID0gaXRlbS5icmlkZ2VOYW1lCgogICAgICAgICAgdmFyIHAyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgICAgICBwMi5jbGFzc05hbWUgPSAnaWNvbi1ib3ggaWNvbi1wb2ludC0nICsgdHlwZSArICdQb2ludCc7CgogICAgICAgICAgLy8gbGV0IHAzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykKICAgICAgICAgIC8vIHAzLmNsYXNzTmFtZSA9ICdpY29uLWJyaWRnZSBpY29uLWJyaWRnZS0nICsgaXRlbS50eXBlCgogICAgICAgICAgLy8gcDIuYXBwZW5kQ2hpbGQocDMpCiAgICAgICAgICAvLyBlbC5hcHBlbmRDaGlsZChwMSkKICAgICAgICAgIGVsLmFwcGVuZENoaWxkKHAyKTsKCiAgICAgICAgICAvLyDmoIforrDngrnkvY0KICAgICAgICAgIHZhciBtYXJrZXIgPSBuZXcgbWluZW1hcC5NYXJrZXIoZWwsIHsKICAgICAgICAgICAgb2Zmc2V0OiBbLTMzLCAtMzBdCiAgICAgICAgICB9KS5zZXRMbmdMYXQoaXRlbS5sbmdsYXQpLmFkZFRvKF90aGlzNy5tYXApOwogICAgICAgICAgX3RoaXM3WyIiLmNvbmNhdCh0eXBlLCAiTWFya2VycyIpXS5wdXNoKG1hcmtlcik7CiAgICAgICAgICAvLyDmt7vliqDngrnlh7vkuovku7YKICAgICAgICAgIC8vIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4gewogICAgICAgICAgLy8gICB0aGlzLiRyZWZzLmluZm9EaWFsb2cub3BlbihpdGVtKQogICAgICAgICAgLy8gfSkKICAgICAgICB9IGVsc2UgewogICAgICAgICAgY29uc29sZS5sb2coJ+ivpeeCueS9jeaXoOWumuS9jeaVsOaNricsIGl0ZW0pOwogICAgICAgIH0KICAgICAgfSk7CiAgICB9LAogICAgYWJjOiBmdW5jdGlvbiBhYmMoKSB7CiAgICAgIGNvbnNvbGUubG9nKDEyMywgJ+iwg+eUqOWcsOWbvuaWueazlS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJyk7CiAgICB9LAogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAvL+a7muWKqOe7hOS7tui9pui9veW4g+aOp+eQgwogICAgYWRkQ2FyVmlkZW9NYXJrZXI6IGZ1bmN0aW9uIGFkZENhclZpZGVvTWFya2VyKHZhbCkgewogICAgICB2YXIgX3RoaXM4ID0gdGhpczsKICAgICAgdGhpcy5jbGVhckNhck1hcmtlcigpOwogICAgICBpZiAodGhpcy5tYXApIHsKICAgICAgICB2YXIgY29vcmRpbmF0ZU9iamVjdHMgPSBbXTsKICAgICAgICBpZiAoIXZhbCkgewogICAgICAgICAgY29vcmRpbmF0ZU9iamVjdHMgPSBbewogICAgICAgICAgICBsbmc6IDEwNi4wOCwKICAgICAgICAgICAgbGF0OiAyOS44OAogICAgICAgICAgfSwgewogICAgICAgICAgICBsbmc6IDEwNi4xLAogICAgICAgICAgICBsYXQ6IDI5Ljg2CiAgICAgICAgICB9LCB7CiAgICAgICAgICAgIGxuZzogMTA1LjcxOTAxNywKICAgICAgICAgICAgbGF0OiAzMC4yNTMwNAogICAgICAgICAgfV07CiAgICAgICAgICB0aGlzLmNvdW50Kys7CiAgICAgICAgICB0aGlzLmNoYW5nZUNlbnRlcihbMTA2LjA4LCAyOS44OF0pOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBjb29yZGluYXRlT2JqZWN0cy5wdXNoKHsKICAgICAgICAgICAgbG5nOiAxMDYuMDgsCiAgICAgICAgICAgIGxhdDogMjkuODgKICAgICAgICAgIH0pOwogICAgICAgICAgdGhpcy5jaGFuZ2VDZW50ZXIoWzEwNi4wOCwgMjkuODhdKTsKICAgICAgICAgIHRoaXMuY291bnQgPSAwOwogICAgICAgICAgdGhpcy5jbGVhckNhck1hcmtlcigpOwogICAgICAgIH0KICAgICAgICBpZiAodGhpcy5jb3VudCAhPT0gMCAmJiB0aGlzLmNvdW50ICUgMiA9PSAwKSB7CiAgICAgICAgICB0aGlzLmNsZWFyQ2FyTWFya2VyKCk7CiAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIC8vIOmBjeWOhuWdkOagh+WvueixoeaVsOe7hO+8jOS4uuavj+S4quWdkOagh+WIm+W7uuS4gOS4quagh+azqAogICAgICAgIGNvb3JkaW5hdGVPYmplY3RzLmZvckVhY2goZnVuY3Rpb24gKGNvb3JkaW5hdGVPYmosIGluZGV4KSB7CiAgICAgICAgICB2YXIgYm94ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgICAgICBib3guc3R5bGVbJ3Bvc2l0aW9uJ10gPSAncmVsYXRpdmUnOwogICAgICAgICAgYm94LnN0eWxlLndpZHRoID0gJzc1cHgnOwogICAgICAgICAgYm94LnN0eWxlLndpZHRoID0gJzEyOHB4JzsKICAgICAgICAgIC8vIOWIm+W7uuagh+azqOWFg+e0oAogICAgICAgICAgdmFyIGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgICAgICB2YXIgY2FyTWFrZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgICAgICAgIHZhciBjYXJOdW1iZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgICAgICAgIHZhciBzbWFsbGJveCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICAgICAgZWwuaWQgPSAnbWFya2VyJzsKICAgICAgICAgIGNhck1ha2VyLnN0eWxlLndpZHRoID0gJzNweCc7CiAgICAgICAgICBjYXJNYWtlci5zdHlsZS5oZWlnaHQgPSAnNDZweCc7CiAgICAgICAgICBjYXJNYWtlci5zdHlsZS5iYWNrZ3JvdW5kID0gJ2xpbmVhci1ncmFkaWVudCggMTgwZGVnLCAjMUFCM0ZGIDQ0JSwgcmdiYSgyNiwxNzksMjU1LDApIDEwMCUpJzsKICAgICAgICAgIGNhck1ha2VyLnN0eWxlLmJvcmRlclJhZGl1cyA9ICcwIDAgMnB4IDJweCc7CiAgICAgICAgICBjYXJOdW1iZXIudGV4dENvbnRlbnQgPSAn5ridQVlYMjg2JzsKICAgICAgICAgIGNhck51bWJlci5zdHlsZS53aWR0aCA9ICc3NXB4JzsKICAgICAgICAgIGNhck51bWJlci5zdHlsZS5oZWlnaHQgPSAnMjJweCc7CiAgICAgICAgICBjYXJOdW1iZXIuc3R5bGUuYmFja2dyb3VuZCA9ICcjMWFiM2ZmJzsKICAgICAgICAgIGNhck51bWJlci5zdHlsZVsnYm9yZGVyJ10gPSAnMXB4IHNvbGlkICNmZmYnOwogICAgICAgICAgY2FyTnVtYmVyLnN0eWxlWydmb250LXNpemUnXSA9ICcxMnB4JzsKICAgICAgICAgIGNhck51bWJlci5zdHlsZS5jb2xvciA9ICcjZmZmJzsKICAgICAgICAgIGNhck51bWJlci5zdHlsZVsnYm94LXNoYWRvdyddID0gJ2luc2V0IDAgMCA0cHggMCc7CiAgICAgICAgICBjYXJOdW1iZXIuc3R5bGUudGV4dEFsaWduID0gJ2NlbnRlcic7CiAgICAgICAgICBlbC5zdHlsZVsnYmFja2dyb3VuZC1pbWFnZSddID0gInVybCgiLmNvbmNhdChwaWNrdXBJY29uLCAiKSIpOwogICAgICAgICAgZWwuc3R5bGVbJ2JhY2tncm91bmQtc2l6ZSddID0gJ2NvdmVyJzsKICAgICAgICAgIGVsLnN0eWxlLndpZHRoID0gJzYwcHgnOwogICAgICAgICAgZWwuc3R5bGUuaGVpZ2h0ID0gJzYwcHgnOwogICAgICAgICAgZWwuc3R5bGVbJ2JvcmRlci1yYWRpdXMnXSA9ICcyMCUnOwogICAgICAgICAgc21hbGxib3guc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnOwogICAgICAgICAgc21hbGxib3guc3R5bGUudG9wID0gJy0zMnB4JzsKICAgICAgICAgIHNtYWxsYm94LnN0eWxlLmxlZnQgPSAnMjhweCc7CiAgICAgICAgICBzbWFsbGJveC5hcHBlbmRDaGlsZChjYXJOdW1iZXIpOwogICAgICAgICAgc21hbGxib3guYXBwZW5kQ2hpbGQoY2FyTWFrZXIpOwogICAgICAgICAgYm94LmFwcGVuZENoaWxkKHNtYWxsYm94KTsKICAgICAgICAgIGJveC5hcHBlbmRDaGlsZChlbCk7CiAgICAgICAgICBpZiAoIXZhbCkgewogICAgICAgICAgICB2YXIgX21hcmtlciA9IG5ldyBtaW5lbWFwLk1hcmtlcihib3gsIHsKICAgICAgICAgICAgICBvZmZzZXQ6IFswLCAwXQogICAgICAgICAgICB9KS5zZXRMbmdMYXQoY29vcmRpbmF0ZU9iaikgLy8g5L2/55So5a+56LGh55qEIGxuZyDlkowgbGF0IOWxnuaApwogICAgICAgICAgICAuYWRkVG8oX3RoaXM4Lm1hcCk7CiAgICAgICAgICAgIF90aGlzOC5tYXJrZXJPbmxpbmVDYXIucHVzaChfbWFya2VyKTsKICAgICAgICAgICAgYm94LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgIF90aGlzOC4kZW1pdCgnb3BlblZpZGVvRGlhbG9nJywgY29vcmRpbmF0ZU9iaik7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgLy/ovabovb3op4bpopHmmL7npLoKICAgICAgICAgICAgdmFyIF9tYXJrZXIgPSBuZXcgbWluZW1hcC5NYXJrZXIoYm94LCB7CiAgICAgICAgICAgICAgb2Zmc2V0OiBbMCwgMF0KICAgICAgICAgICAgfSkuc2V0TG5nTGF0KGNvb3JkaW5hdGVPYmopIC8vIOS9v+eUqOWvueixoeeahCBsbmcg5ZKMIGxhdCDlsZ7mgKcKICAgICAgICAgICAgLmFkZFRvKF90aGlzOC5tYXApOwogICAgICAgICAgICBfdGhpczgubWFya2VyT25seUNhci5wdXNoKF9tYXJrZXIpOwogICAgICAgICAgICBfdGhpczguJGVtaXQoJ29wZW5WaWRlb0RpYWxvZycsIGNvb3JkaW5hdGVPYmopOwogICAgICAgICAgfQogICAgICAgIH0pOwogICAgICB9CiAgICB9LAogICAgLy/ot6/nur/lm77lsYIKICAgIGFkZEN1c3RvbWVyTWFya2VyOiBmdW5jdGlvbiBhZGRDdXN0b21lck1hcmtlcih2YWwpIHsKICAgICAgdmFyIF90aGlzOSA9IHRoaXM7CiAgICAgIGlmICh0aGlzLm1hcCkgewogICAgICAgIC8vIHRoaXMuY2xlYXJMYXlNYXJrZXIoKQogICAgICAgIHZhciBjb29yZGluYXRlT2JqZWN0cyA9IFt7CiAgICAgICAgICBsbmc6IDEwNS44OSwKICAgICAgICAgIGxhdDogMzAuMDcsCiAgICAgICAgICBkZXNjcmlwdGlvbjogJ+eSp+WxseWMl+aUtui0ueermScsCiAgICAgICAgICBpZDogMSwKICAgICAgICAgIGNvb3JkaW5hdGVzOiBbWzEwNS45NiwgMjkuOTddLCBbMTA1Ljg5LCAzMC4wN11dLAogICAgICAgICAgU2VjdGlvbnM6ICfmuJ3pgYInLAogICAgICAgICAgU3RhdGlvbjogWzM5MCwgMF0sCiAgICAgICAgICB0eXBlOiAn5pS26LS556uZJywKICAgICAgICAgIG1hbmFnZW1lbnRDb21wYW55OiAn6YeN5bqG54+R6ZKf5pWR5o+05pyN5Yqh5pyJ6ZmQ5YWs5Y+4JywKICAgICAgICAgIHRyYWlsZXJOdW06IDMsCiAgICAgICAgICAvL+aLlui9pgogICAgICAgICAgY3JhbmU6IDIsCiAgICAgICAgICAvL+WQiui9pgogICAgICAgICAgbGVhZGVyOiAn5rKz5LicJywKICAgICAgICAgIGxlYWRlclBob25lOiAnMTU4MjU5MjI3MTYnLAogICAgICAgICAgcGlja3VwOiAyIC8v55qu5Y2hCiAgICAgICAgfSwgewogICAgICAgICAgbG5nOiAxMDYuMSwKICAgICAgICAgIGxhdDogMjkuODYsCiAgICAgICAgICBkZXNjcmlwdGlvbjogJ+mTnOaigeWMl+aUtui0ueermScsCiAgICAgICAgICBpZDogMiwKICAgICAgICAgIGNvb3JkaW5hdGVzOiBbWzEwNi4xLCAyOS44Nl0sIFsxMDYuMTEsIDI5Ljg1XV0sCiAgICAgICAgICBTZWN0aW9uczogJ+a4nemBgicsCiAgICAgICAgICBTdGF0aW9uOiBbMzYzLCAwXSwKICAgICAgICAgIHR5cGU6ICfmlLbotLnnq5knLAogICAgICAgICAgbWFuYWdlbWVudENvbXBhbnk6ICfph43luobnj5Hpkp/mlZHmj7TmnI3liqHmnInpmZDlhazlj7gnLAogICAgICAgICAgdHJhaWxlck51bTogMywKICAgICAgICAgIC8v5ouW6L2mCiAgICAgICAgICBjcmFuZTogMiwKICAgICAgICAgIC8v5ZCK6L2mCiAgICAgICAgICBsZWFkZXI6ICfmsrPkuJwnLAogICAgICAgICAgbGVhZGVyUGhvbmU6ICcxNTgyNTkyMjcxNicsCiAgICAgICAgICBwaWNrdXA6IDMgLy/nmq7ljaEKICAgICAgICB9LCB7CiAgICAgICAgICBsbmc6IDEwNS43MTkwMTcsCiAgICAgICAgICBsYXQ6IDMwLjI1MzA0LAogICAgICAgICAgZGVzY3JpcHRpb246ICfpk5zmooHkuJzmlLbotLnnq5knLAogICAgICAgICAgaWQ6IDMsCiAgICAgICAgICBjb29yZGluYXRlczogW1sxMDUuNzE5MDE3LCAzMC4yNTMwNF0sIFsxMDUuNzIxMzY3LCAzMC4yNDY0MDFdXSwKICAgICAgICAgIFNlY3Rpb25zOiAn5rid6YGCJywKICAgICAgICAgIFN0YXRpb246IFszNzIsIDBdLAogICAgICAgICAgdHlwZTogJ+aUtui0ueermScsCiAgICAgICAgICBtYW5hZ2VtZW50Q29tcGFueTogJ+mHjeW6huePkemSn+aVkeaPtOacjeWKoeaciemZkOWFrOWPuCcsCiAgICAgICAgICB0cmFpbGVyTnVtOiAzLAogICAgICAgICAgLy/mi5bovaYKICAgICAgICAgIGNyYW5lOiAyLAogICAgICAgICAgLy/lkIrovaYKICAgICAgICAgIGxlYWRlcjogJ+ays+S4nCcsCiAgICAgICAgICBsZWFkZXJQaG9uZTogJzE1ODI1OTIyNzE2JywKICAgICAgICAgIHBpY2t1cDogNSAvL+earuWNoQogICAgICAgIH0sIHsKICAgICAgICAgIGxuZzogMTA1Ljk4LAogICAgICAgICAgbGF0OiAyOS45NSwKICAgICAgICAgIGRlc2NyaXB0aW9uOiAn55Sw5a625pS26LS556uZJywKICAgICAgICAgIGlkOiA0LAogICAgICAgICAgY29vcmRpbmF0ZXM6IFtbMTA1Ljk4LCAyOS45NV0sIFsxMDYuMDEsIDI5LjkzXV0sCiAgICAgICAgICBTZWN0aW9uczogJ+a4nemBgicsCiAgICAgICAgICBTdGF0aW9uOiBbMzMwLCAwXSwKICAgICAgICAgIHR5cGU6ICfmlLbotLnnq5knLAogICAgICAgICAgbWFuYWdlbWVudENvbXBhbnk6ICfph43luobnj5Hpkp/mlZHmj7TmnI3liqHmnInpmZDlhazlj7gnLAogICAgICAgICAgdHJhaWxlck51bTogMywKICAgICAgICAgIC8v5ouW6L2mCiAgICAgICAgICBjcmFuZTogMiwKICAgICAgICAgIC8v5ZCK6L2mCiAgICAgICAgICBsZWFkZXI6ICfmsrPkuJwnLAogICAgICAgICAgbGVhZGVyUGhvbmU6ICcxNTgyNTkyMjcxNicsCiAgICAgICAgICBwaWNrdXA6IDIgLy/nmq7ljaEKICAgICAgICB9XTsKICAgICAgICB0aGlzLmNoYW5nZUNlbnRlcihbMTA2LjA4LCAyOS44OF0pOwogICAgICAgIC8v5Yik5pat5piv5ZCm5riF6Zmk5qCH6K6wCiAgICAgICAgaWYgKHZhbCA9PSAncGF0cm9sJykgewogICAgICAgICAgdGhpcy5wYXRyb2xDbGljayA9ICF0aGlzLnBhdHJvbENsaWNrOwogICAgICAgICAgaWYgKCF0aGlzLnBhdHJvbENsaWNrKSB7CiAgICAgICAgICAgIHRoaXMuY2xlYXJMYXlNYXJrZXIoKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAodmFsID09ICdyZXNjdWUnKSB7CiAgICAgICAgICB0aGlzLnJlc2N1ZUNsaWNrID0gIXRoaXMucmVzY3VlQ2xpY2s7CiAgICAgICAgICBpZiAoIXRoaXMucmVzY3VlQ2xpY2spIHsKICAgICAgICAgICAgdGhpcy5jbGVhckxheVJlc2N1ZU1ha2VyKCk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKHZhbCA9PSAnRW1lcmdlbmNpZXMnKSB7CiAgICAgICAgICB0aGlzLmVtZXJnZW5jaWVzQ2xpY2sgPSAhdGhpcy5lbWVyZ2VuY2llc0NsaWNrOwogICAgICAgICAgaWYgKCF0aGlzLmVtZXJnZW5jaWVzQ2xpY2spIHsKICAgICAgICAgICAgdGhpcy5tYXJrZXJFbWVyZ2VuY2llcy5mb3JFYWNoKGZ1bmN0aW9uIChtYXJrZXIpIHsKICAgICAgICAgICAgICByZXR1cm4gbWFya2VyLnJlbW92ZSgpOwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgdGhpcy5tYXJrZXJFbWVyZ2VuY2llcy5sZW5ndGggPSAwOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmICh2YWwgPT0gJ3Jlc2N1ZUV2ZW50JykgewogICAgICAgICAgdGhpcy5yZXNjdWVFdmVudENsaWNrID0gIXRoaXMucmVzY3VlRXZlbnRDbGljazsKICAgICAgICAgIGlmICghdGhpcy5yZXNjdWVFdmVudENsaWNrKSB7CiAgICAgICAgICAgIHRoaXMubWFya2VyUmVzY3VlRXZlbnQuZm9yRWFjaChmdW5jdGlvbiAobWFya2VyKSB7CiAgICAgICAgICAgICAgcmV0dXJuIG1hcmtlci5yZW1vdmUoKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIHRoaXMubWFya2VyUmVzY3VlRXZlbnQubGVuZ3RoID0gMDsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAvLyDpgY3ljoblnZDmoIflr7nosaHmlbDnu4TvvIzkuLrmr4/kuKrlnZDmoIfliJvlu7rkuIDkuKrmoIfms6gKICAgICAgICBjb29yZGluYXRlT2JqZWN0cy5mb3JFYWNoKGZ1bmN0aW9uIChjb29yZGluYXRlT2JqLCBpbmRleCkgewogICAgICAgICAgLy/lhazlhbHlrrnlmagKICAgICAgICAgIHZhciBwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgICAgICAvLyDliJvlu7rmoIfms6jlhYPntKAKICAgICAgICAgIHZhciBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICAgICAgdmFyIHRleHRFbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICAgICAgZWwuaWQgPSAnbWFya2VyJzsKCiAgICAgICAgICAvL+W3oeafpempu+eCuQogICAgICAgICAgaWYgKHZhbCA9PSAncGF0cm9sJykgewogICAgICAgICAgICBlbC5zdHlsZVsnYmFja2dyb3VuZC1pbWFnZSddID0gInVybCgiLmNvbmNhdChwYXRyb0ljb24sICIpIik7CiAgICAgICAgICAgIHRleHRFbC5zdHlsZS5ib3JkZXIgPSAnMnB4IHNvbGlkICM1MWZkOGEnOwogICAgICAgICAgICB0ZXh0RWwuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJyMxZWE2NGInOyAvLyDlj6/ku6Xorr7nva7og4zmma/oibIKICAgICAgICAgIH0KICAgICAgICAgIC8v5pWR5o+06am754K5CiAgICAgICAgICBpZiAodmFsID09ICdyZXNjdWUnKSB7CiAgICAgICAgICAgIGVsLnN0eWxlWydiYWNrZ3JvdW5kLWltYWdlJ10gPSAidXJsKCIuY29uY2F0KHJlc2N1ZUljb24sICIpIik7CiAgICAgICAgICAgIHRleHRFbC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAnIzQzYWRhZCc7CiAgICAgICAgICAgIHRleHRFbC5zdHlsZS5ib3JkZXIgPSAnMnB4IHNvbGlkICMwNGZiZmInOwogICAgICAgICAgfQogICAgICAgICAgLy/nqoHlj5Hkuovku7YKICAgICAgICAgIGlmICh2YWwgPT0gJ0VtZXJnZW5jaWVzJykgewogICAgICAgICAgICBlbC5zdHlsZVsnYmFja2dyb3VuZC1pbWFnZSddID0gInVybCgiLmNvbmNhdChlbWVyZ2VyRXZlbnRJY29uLCAiKSIpOwogICAgICAgICAgICB0ZXh0RWwuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJyM3ODUwMDAnOwogICAgICAgICAgICB0ZXh0RWwuc3R5bGUuYm9yZGVyID0gJzJweCBzb2xpZCAjZmZjOTVhJzsKICAgICAgICAgIH0KICAgICAgICAgIC8v5pWR5o+05LqL5Lu2CiAgICAgICAgICBpZiAodmFsID09ICdyZXNjdWVFdmVudCcpIHsKICAgICAgICAgICAgZWwuc3R5bGVbJ2JhY2tncm91bmQtaW1hZ2UnXSA9ICJ1cmwoIi5jb25jYXQocmVzY3VlRXZlbnRJY29uLCAiKSIpOwogICAgICAgICAgICB0ZXh0RWwuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJyM3YzBkMmQnOwogICAgICAgICAgICB0ZXh0RWwuc3R5bGUuYm9yZGVyID0gJzJweCBzb2xpZCAjYmQ0NDY3JzsKICAgICAgICAgIH0KICAgICAgICAgIGVsLnN0eWxlWydiYWNrZ3JvdW5kLXNpemUnXSA9ICdjb3Zlcic7CiAgICAgICAgICBlbC5zdHlsZS53aWR0aCA9ICc0MHB4JzsKICAgICAgICAgIGVsLnN0eWxlLmhlaWdodCA9ICc0MHB4JzsKICAgICAgICAgIGVsLnN0eWxlWydib3JkZXItcmFkaXVzJ10gPSAnMjAlJzsKICAgICAgICAgIC8vIOWIm+W7uuaWh+Wtl+aPj+i/sOWFg+e0oAogICAgICAgICAgdGV4dEVsLnRleHRDb250ZW50ID0gY29vcmRpbmF0ZU9iai5kZXNjcmlwdGlvbjsgLy8g6K6+572u5o+P6L+w5paH5pysCiAgICAgICAgICB0ZXh0RWwuc3R5bGUucGFkZGluZyA9ICcycHggNXB4JzsgLy8g5YaF6L656LedCiAgICAgICAgICB0ZXh0RWwuc3R5bGUuYm9yZGVyUmFkaXVzID0gJzNweCc7IC8vIOWchuinkgogICAgICAgICAgdGV4dEVsLnN0eWxlLmZvbnRTaXplID0gJzEycHgnOyAvLyDlrZfkvZPlpKflsI8KICAgICAgICAgIHRleHRFbC5zdHlsZS5jb2xvciA9ICd3aGl0ZSc7CiAgICAgICAgICB0ZXh0RWwuc3R5bGUud2hpdGVTcGFjZSA9ICdub3dyYXAnOyAvLyDpmLLmraLmlofmnKzmjaLooYwKICAgICAgICAgIHAuYXBwZW5kQ2hpbGQodGV4dEVsKTsKICAgICAgICAgIHAuYXBwZW5kQ2hpbGQoZWwpOwogICAgICAgICAgcC5zdHlsZS5kaXNwbGF5ID0gJ2ZsZXgnOwogICAgICAgICAgcC5zdHlsZS5mbGV4RGlyZWN0aW9uID0gJ2NvbHVtbic7CiAgICAgICAgICBwLnN0eWxlLmp1c3RpZnlDb250ZW50ID0gJ2NlbnRlcic7CiAgICAgICAgICBwLnN0eWxlLmFsaWduSXRlbXMgPSAnY2VudGVyJzsKICAgICAgICAgIC8vIOWIm+W7uuS4gOS4quaWsOeahOagh+azqOWunuS+i++8jOW5tuiuvue9ruWBj+enu+mHjwogICAgICAgICAgaWYgKHZhbCA9PSAncGF0cm9sJykgewogICAgICAgICAgICB2YXIgX21hcmtlciA9IG5ldyBtaW5lbWFwLk1hcmtlcihwLCB7CiAgICAgICAgICAgICAgb2Zmc2V0OiBbMCwgMF0KICAgICAgICAgICAgfSkuc2V0TG5nTGF0KGNvb3JkaW5hdGVPYmopIC8vIOS9v+eUqOWvueixoeeahCBsbmcg5ZKMIGxhdCDlsZ7mgKcKICAgICAgICAgICAgLmFkZFRvKF90aGlzOS5tYXApOwogICAgICAgICAgICBfdGhpczkubWFya2Vycy5wdXNoKF9tYXJrZXIpOwogICAgICAgICAgICBfdGhpczkuYWRkU291cmNlcyhjb29yZGluYXRlT2JqLmNvb3JkaW5hdGVzLCBjb29yZGluYXRlT2JqLmlkKTsKICAgICAgICAgICAgX3RoaXM5LmFkZExheWVycyhjb29yZGluYXRlT2JqLmlkKTsKICAgICAgICAgICAgX3RoaXM5LmlkTGlzdC5wdXNoKCJsaW5lTGF5ZXItIi5jb25jYXQoY29vcmRpbmF0ZU9iai5pZCkpOwogICAgICAgICAgICBfdGhpczkuc291cmNlSWRMaXN0LnB1c2goImxpbmVTb3VyY2UtIi5jb25jYXQoY29vcmRpbmF0ZU9iai5pZCkpOwogICAgICAgICAgICBpZiAoX3RoaXM5LnJlc2N1ZUlkTGlzdC5sZW5ndGgpIHsKICAgICAgICAgICAgICBfdGhpczkuc3RvcFJlc2N1ZVN0YXJ0QmxpbmtpbmcoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBwLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgIF90aGlzOS4kZW1pdCgncGF0cm9sU3RhdGlvbkxpc3QnLCBjb29yZGluYXRlT2JqKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICB9CiAgICAgICAgICBpZiAodmFsID09ICdyZXNjdWUnKSB7CiAgICAgICAgICAgIHZhciBfbWFya2VyID0gbmV3IG1pbmVtYXAuTWFya2VyKHAsIHsKICAgICAgICAgICAgICBvZmZzZXQ6IFswLCAwXQogICAgICAgICAgICB9KS5zZXRMbmdMYXQoY29vcmRpbmF0ZU9iaikgLy8g5L2/55So5a+56LGh55qEIGxuZyDlkowgbGF0IOWxnuaApwogICAgICAgICAgICAuYWRkVG8oX3RoaXM5Lm1hcCk7CiAgICAgICAgICAgIF90aGlzOS5tYXJrZXJzUmVzY3VlLnB1c2goX21hcmtlcik7CiAgICAgICAgICAgIF90aGlzOS5hZGRSZXNjdWVTb3VyY2VzKGNvb3JkaW5hdGVPYmouY29vcmRpbmF0ZXMsIGNvb3JkaW5hdGVPYmouaWQpOwogICAgICAgICAgICBfdGhpczkuYWRkUmVzY3VlTGF5ZXJzKGNvb3JkaW5hdGVPYmouaWQpOwogICAgICAgICAgICBfdGhpczkucmVzY3VlSWRMaXN0LnB1c2goImxpbmVSZXNjdWVMYXllci0iLmNvbmNhdChjb29yZGluYXRlT2JqLmlkKSk7CiAgICAgICAgICAgIF90aGlzOS5yZXNjdWVTb3VyY2VJZExpc3QucHVzaCgibGluZVJlc2N1ZVNvdXJjZS0iLmNvbmNhdChjb29yZGluYXRlT2JqLmlkKSk7CiAgICAgICAgICAgIHAuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgX3RoaXM5LiRlbWl0KCdzdGF0aW9uTGlzdCcsIGNvb3JkaW5hdGVPYmopOwogICAgICAgICAgICB9KTsKICAgICAgICAgIH0KICAgICAgICAgIGlmICh2YWwgPT0gJ0VtZXJnZW5jaWVzJykgewogICAgICAgICAgICB2YXIgX21hcmtlciA9IG5ldyBtaW5lbWFwLk1hcmtlcihwLCB7CiAgICAgICAgICAgICAgb2Zmc2V0OiBbMCwgMF0KICAgICAgICAgICAgfSkuc2V0TG5nTGF0KGNvb3JkaW5hdGVPYmopIC8vIOS9v+eUqOWvueixoeeahCBsbmcg5ZKMIGxhdCDlsZ7mgKcKICAgICAgICAgICAgLmFkZFRvKF90aGlzOS5tYXApOwogICAgICAgICAgICBfdGhpczkubWFya2VyRW1lcmdlbmNpZXMucHVzaChfbWFya2VyKTsKICAgICAgICAgICAgLy8gaWYgKHRoaXMuaWRMaXN0Lmxlbmd0aCkgewogICAgICAgICAgICAvLyAgIHRoaXMuc3RvcEJsaW5rKCkKICAgICAgICAgICAgLy8gfQogICAgICAgICAgICBpZiAoX3RoaXM5LnJlc2N1ZUlkTGlzdC5sZW5ndGgpIHsKICAgICAgICAgICAgICBfdGhpczkuc3RvcFJlc2N1ZVN0YXJ0QmxpbmtpbmcoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBwLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgIF90aGlzOS4kZW1pdCgnb3BlbkV2ZW50RGlhbG9nJywgY29vcmRpbmF0ZU9iaik7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgfQogICAgICAgICAgaWYgKHZhbCA9PSAncmVzY3VlRXZlbnQnKSB7CiAgICAgICAgICAgIHZhciBfbWFya2VyID0gbmV3IG1pbmVtYXAuTWFya2VyKHAsIHsKICAgICAgICAgICAgICBvZmZzZXQ6IFswLCAwXQogICAgICAgICAgICB9KS5zZXRMbmdMYXQoY29vcmRpbmF0ZU9iaikgLy8g5L2/55So5a+56LGh55qEIGxuZyDlkowgbGF0IOWxnuaApwogICAgICAgICAgICAuYWRkVG8oX3RoaXM5Lm1hcCk7CiAgICAgICAgICAgIF90aGlzOS5tYXJrZXJSZXNjdWVFdmVudC5wdXNoKF9tYXJrZXIpOwogICAgICAgICAgICAvLyBpZiAodGhpcy5pZExpc3QubGVuZ3RoKSB7CiAgICAgICAgICAgIC8vICAgdGhpcy5zdG9wQmxpbmsoKQogICAgICAgICAgICAvLyB9CiAgICAgICAgICAgIGlmIChfdGhpczkucmVzY3VlSWRMaXN0Lmxlbmd0aCkgewogICAgICAgICAgICAgIF90aGlzOS5zdG9wUmVzY3VlU3RhcnRCbGlua2luZygpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHAuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgX3RoaXM5LiRlbWl0KCdvcGVuRXZlbnREaWFsb2cnLCBjb29yZGluYXRlT2JqKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgICAgaWYgKHRoaXMucmVzY3VlSWRMaXN0Lmxlbmd0aCAmJiB2YWwgPT0gJ3Jlc2N1ZScpIHsKICAgICAgICAgIHRoaXMuc3RhcnRSZXNjdWVTdGFydEJsaW5raW5nKCk7CiAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgX3RoaXM5LnN0b3BSZXNjdWVTdGFydEJsaW5raW5nKCk7CiAgICAgICAgICB9LCA4MDAwKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICAvLyDkuLrmr4/kuKrmoIfms6jngrnorr7orqHmupAtLeW3oeafpempu+eCuQogICAgYWRkU291cmNlczogZnVuY3Rpb24gYWRkU291cmNlcyhjb29yZGluYXRlcywgaWQpIHsKICAgICAgdmFyIGpzb25EYXRhID0gewogICAgICAgIHR5cGU6ICdGZWF0dXJlQ29sbGVjdGlvbicsCiAgICAgICAgZmVhdHVyZXM6IFt7CiAgICAgICAgICB0eXBlOiAnRmVhdHVyZScsCiAgICAgICAgICBnZW9tZXRyeTogewogICAgICAgICAgICB0eXBlOiAnTGluZVN0cmluZycsCiAgICAgICAgICAgIGNvb3JkaW5hdGVzOiBjb29yZGluYXRlcwogICAgICAgICAgfSwKICAgICAgICAgIHByb3BlcnRpZXM6IHsKICAgICAgICAgICAgdGl0bGU6ICfot6/nur/kuIAnLAogICAgICAgICAgICBraW5kOiAxCiAgICAgICAgICB9CiAgICAgICAgfV0KICAgICAgfTsKICAgICAgdGhpcy5tYXAuYWRkU291cmNlKCJsaW5lU291cmNlLSIuY29uY2F0KGlkKSwgewogICAgICAgIHR5cGU6ICdnZW9qc29uJywKICAgICAgICBkYXRhOiBqc29uRGF0YQogICAgICB9KTsKICAgIH0sCiAgICAvLyDkuLrmr4/kuKrmoIfms6jngrnmt7vliqDlm77lsYItLeW3oeafpempu+eCuQogICAgYWRkTGF5ZXJzOiBmdW5jdGlvbiBhZGRMYXllcnMoaWQpIHsKICAgICAgdGhpcy5tYXAuYWRkTGF5ZXIoewogICAgICAgIGlkOiAibGluZUxheWVyLSIuY29uY2F0KGlkKSwKICAgICAgICB0eXBlOiAnbGluZScsCiAgICAgICAgc291cmNlOiAibGluZVNvdXJjZS0iLmNvbmNhdChpZCksCiAgICAgICAgbGF5b3V0OiB7CiAgICAgICAgICAnbGluZS1qb2luJzogJ3JvdW5kJywKICAgICAgICAgICdsaW5lLWNhcCc6ICdyb3VuZCcsCiAgICAgICAgICAnYm9yZGVyLXZpc2liaWxpdHknOiAndmlzaWJsZScgLy/mmK/lkKblvIDlkK/nur/ovrnmoYYKICAgICAgICB9LAogICAgICAgIHBhaW50OiB7CiAgICAgICAgICAnbGluZS13aWR0aCc6IDgsCiAgICAgICAgICAnbGluZS1jb2xvcic6IHsKICAgICAgICAgICAgdHlwZTogJ2NhdGVnb3JpY2FsJywKICAgICAgICAgICAgcHJvcGVydHk6ICdraW5kJywKICAgICAgICAgICAgc3RvcHM6IFtbMSwgJyNGRkQ0OEEgJ10sIFsyLCAnI0ZGRDQ4QSAnXV0sCiAgICAgICAgICAgIGRlZmF1bHQ6ICcjZmYwMDAwJwogICAgICAgICAgfSwKICAgICAgICAgICdsaW5lLWJvcmRlci13aWR0aCc6IDIsCiAgICAgICAgICAvL+iuvue9rue6v+i+ueahhuWuveW6pgogICAgICAgICAgJ2xpbmUtYm9yZGVyLW9wYWNpdHknOiAxLAogICAgICAgICAgLy/orr7nva7nur/ovrnmoYbpgI/mmI7luqYKICAgICAgICAgICdsaW5lLWJvcmRlci1jb2xvcic6IHsKICAgICAgICAgICAgc3RvcHM6IFtbMSwgJyMwMEZGRkYnXSwgWzIsICcgI0ZGRkZGRiddXQogICAgICAgICAgfSAvL+iuvue9rue6v+i+ueahhuminOiJsgogICAgICAgIH0sCiAgICAgICAgbWluem9vbTogNywKICAgICAgICBtYXh6b29tOiAxNy41CiAgICAgIH0pOwogICAgfSwKICAgIC8vIOS4uuavj+S4quagh+azqOeCueiuvuiuoea6kC0t5pWR5o+06am754K5CiAgICBhZGRSZXNjdWVTb3VyY2VzOiBmdW5jdGlvbiBhZGRSZXNjdWVTb3VyY2VzKGNvb3JkaW5hdGVzLCBpZCkgewogICAgICB2YXIganNvbkRhdGEgPSB7CiAgICAgICAgdHlwZTogJ0ZlYXR1cmVDb2xsZWN0aW9uJywKICAgICAgICBmZWF0dXJlczogW3sKICAgICAgICAgIHR5cGU6ICdGZWF0dXJlJywKICAgICAgICAgIGdlb21ldHJ5OiB7CiAgICAgICAgICAgIHR5cGU6ICdMaW5lU3RyaW5nJywKICAgICAgICAgICAgY29vcmRpbmF0ZXM6IGNvb3JkaW5hdGVzCiAgICAgICAgICB9LAogICAgICAgICAgcHJvcGVydGllczogewogICAgICAgICAgICB0aXRsZTogJ+i3r+e6v+S4gCcsCiAgICAgICAgICAgIGtpbmQ6IDEKICAgICAgICAgIH0KICAgICAgICB9XQogICAgICB9OwogICAgICB0aGlzLm1hcC5hZGRTb3VyY2UoImxpbmVSZXNjdWVTb3VyY2UtIi5jb25jYXQoaWQpLCB7CiAgICAgICAgdHlwZTogJ2dlb2pzb24nLAogICAgICAgIGRhdGE6IGpzb25EYXRhCiAgICAgIH0pOwogICAgfSwKICAgIC8vIOS4uuavj+S4quagh+azqOeCuea3u+WKoOWbvuWxgi0t5pWR5o+06am754K5CiAgICBhZGRSZXNjdWVMYXllcnM6IGZ1bmN0aW9uIGFkZFJlc2N1ZUxheWVycyhpZCkgewogICAgICB0aGlzLm1hcC5hZGRMYXllcih7CiAgICAgICAgaWQ6ICJsaW5lUmVzY3VlTGF5ZXItIi5jb25jYXQoaWQpLAogICAgICAgIHR5cGU6ICdsaW5lJywKICAgICAgICBzb3VyY2U6ICJsaW5lUmVzY3VlU291cmNlLSIuY29uY2F0KGlkKSwKICAgICAgICBsYXlvdXQ6IHsKICAgICAgICAgICdsaW5lLWpvaW4nOiAncm91bmQnLAogICAgICAgICAgJ2xpbmUtY2FwJzogJ3JvdW5kJywKICAgICAgICAgICdib3JkZXItdmlzaWJpbGl0eSc6ICd2aXNpYmxlJyAvL+aYr+WQpuW8gOWQr+e6v+i+ueahhgogICAgICAgIH0sCiAgICAgICAgcGFpbnQ6IHsKICAgICAgICAgICdsaW5lLXdpZHRoJzogOCwKICAgICAgICAgICdsaW5lLWNvbG9yJzogewogICAgICAgICAgICB0eXBlOiAnY2F0ZWdvcmljYWwnLAogICAgICAgICAgICBwcm9wZXJ0eTogJ2tpbmQnLAogICAgICAgICAgICBzdG9wczogW1sxLCAnI0ZGRDQ4QSAnXSwgWzIsICcjRkZENDhBICddXSwKICAgICAgICAgICAgZGVmYXVsdDogJyNmZjAwMDAnCiAgICAgICAgICB9LAogICAgICAgICAgJ2xpbmUtYm9yZGVyLXdpZHRoJzogMiwKICAgICAgICAgIC8v6K6+572u57q/6L655qGG5a695bqmCiAgICAgICAgICAnbGluZS1ib3JkZXItb3BhY2l0eSc6IDEsCiAgICAgICAgICAvL+iuvue9rue6v+i+ueahhumAj+aYjuW6pgogICAgICAgICAgJ2xpbmUtYm9yZGVyLWNvbG9yJzogewogICAgICAgICAgICBzdG9wczogW1sxLCAnIzAwRkZGRiddLCBbMiwgJyAjRkZGRkZGJ11dCiAgICAgICAgICB9IC8v6K6+572u57q/6L655qGG6aKc6ImyCiAgICAgICAgfSwKICAgICAgICBtaW56b29tOiA3LAogICAgICAgIG1heHpvb206IDE3LjUKICAgICAgfSk7CiAgICB9LAogICAgLy8gLy/lt6Hmn6Xpqbvngrnpl6rng4EKICAgIC8vIHN0YXJ0QmxpbmtpbmcoKSB7CiAgICAvLyAgIHRoaXMuaW50ZXJ2YWxJZCA9IHNldEludGVydmFsKCgpID0+IHsKICAgIC8vICAgICB0aGlzLmlkTGlzdC5mb3JFYWNoKChpdGVtKSA9PiB7CiAgICAvLyAgICAgICAvLyB0aGlzLm1hcC5zZXRQYWludFByb3BlcnR5KGl0ZW0sICdsaW5lLW9wYWNpdHknLCAwKQogICAgLy8gICAgICAgaWYgKHRoaXMubWFwLmdldExheWVyKSB7CiAgICAvLyAgICAgICAgIHRoaXMubWFwLnNldFBhaW50UHJvcGVydHkoCiAgICAvLyAgICAgICAgICAgaXRlbSwKICAgIC8vICAgICAgICAgICAnbGluZS1vcGFjaXR5JywKICAgIC8vICAgICAgICAgICB0aGlzLm1hcC5nZXRQYWludFByb3BlcnR5KGl0ZW0sICdsaW5lLW9wYWNpdHknKSA9PSAwID8gMSA6IDAKICAgIC8vICAgICAgICAgKQogICAgLy8gICAgICAgfQogICAgLy8gICAgIH0pCiAgICAvLyAgIH0sIDEwMDApCiAgICAvLyB9LAogICAgLy8gLy/lhbPpl63lt6Hmn6Xpqbvngrnpl6rng4EKICAgIC8vIHN0b3BCbGluaygpIHsKICAgIC8vICAgaWYgKHRoaXMuaW50ZXJ2YWxJZCkgewogICAgLy8gICAgIGNsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbElkKQogICAgLy8gICAgIHRoaXMuaW50ZXJ2YWxJZCA9IG51bGwgLy8g5riF6Zmk5byV55So77yM6YG/5YWN5YaF5a2Y5rOE5ryPCiAgICAvLyAgICAgdGhpcy5pZExpc3QuZm9yRWFjaCgoaXRlbSkgPT4gewogICAgLy8gICAgICAgdGhpcy5tYXAuc2V0UGFpbnRQcm9wZXJ0eShpdGVtLCAnbGluZS1vcGFjaXR5JywgMSkKICAgIC8vICAgICB9KQogICAgLy8gICB9CiAgICAvLyB9LAogICAgLy/lvIDlkK/mlZHmj7Tpqbvngrnpl6rng4EKICAgIHN0YXJ0UmVzY3VlU3RhcnRCbGlua2luZzogZnVuY3Rpb24gc3RhcnRSZXNjdWVTdGFydEJsaW5raW5nKCkgewogICAgICB2YXIgX3RoaXMxMCA9IHRoaXM7CiAgICAgIHRoaXMuc3RhcnRSZXNjdWVpbnRlcnZhbElkID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkgewogICAgICAgIF90aGlzMTAucmVzY3VlSWRMaXN0LmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICAgIGlmIChfdGhpczEwLm1hcC5nZXRMYXllcikgewogICAgICAgICAgICBfdGhpczEwLm1hcC5zZXRQYWludFByb3BlcnR5KGl0ZW0sICdsaW5lLW9wYWNpdHknLCBfdGhpczEwLm1hcC5nZXRQYWludFByb3BlcnR5KGl0ZW0sICdsaW5lLW9wYWNpdHknKSA9PSAwID8gMSA6IDApOwogICAgICAgICAgfQogICAgICAgIH0pOwogICAgICB9LCAxMDAwKTsKICAgIH0sCiAgICAvL+WFs+mXreW3oeafpeaVkeaPtOmXqueDgQogICAgc3RvcFJlc2N1ZVN0YXJ0Qmxpbmtpbmc6IGZ1bmN0aW9uIHN0b3BSZXNjdWVTdGFydEJsaW5raW5nKCkgewogICAgICB2YXIgX3RoaXMxMSA9IHRoaXM7CiAgICAgIGlmICh0aGlzLnN0YXJ0UmVzY3VlaW50ZXJ2YWxJZCkgewogICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5zdGFydFJlc2N1ZWludGVydmFsSWQpOwogICAgICAgIHRoaXMuc3RhcnRSZXNjdWVpbnRlcnZhbElkID0gbnVsbDsKICAgICAgICB0aGlzLnJlc2N1ZUlkTGlzdC5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgICBfdGhpczExLm1hcC5zZXRQYWludFByb3BlcnR5KGl0ZW0sICdsaW5lLW9wYWNpdHknLCAxKTsKICAgICAgICB9KTsKICAgICAgfQogICAgfQogIH0sCiAgYmVmb3JlRGVzdHJveTogZnVuY3Rpb24gYmVmb3JlRGVzdHJveSgpIHsKICAgIC8vIOazqOmUgOWcsOWbvuWunuS+iyznp7vpmaTlnLDlm74KICAgIGlmICh0aGlzLm1hcCkgewogICAgICB0aGlzLm1hcC5yZW1vdmUoKTsKICAgIH0KICB9Cn07"},null]}