Files
sam-hotfix/e2e/runner/b64_2.txt
김보곤 6d320b396d test: E2E 전체 테스트 66/75 (88.0%) 통과 - 시나리오 리라이트 후 재실행
- 실패 시나리오 11개 리라이트 + 중복 2개 삭제 (fill_form → READ-only 패턴)
- 이전 78.7% → 88.0% 개선 (+9.3%p)
- 실패 9건 중 7건은 사이드바 렌더링 인프라 이슈
- 실질 기능 성공률 97.1% (66/68)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 22:01:54 +09:00

1 line
18 KiB
Plaintext

dXBTY29yZSsrOyByZXR1cm4gbW9ja3VwU2NvcmUgPj0gMiA/IHdhcm4oYFBvc3NpYmxlIG1vY2t1cCBwYWdlIChzY29yZTogJHttb2NrdXBTY29yZX0pYCkgOiBwYXNzKGBSZWFsIHBhZ2U6ICR7aW5wdXRzLmxlbmd0aH0gaW5wdXRzLCAke2J1dHRvbnMubGVuZ3RofSBidXR0b25zYCk7IH0sIGFzeW5jIHZlcmlmeV9kaWFsb2coYWN0aW9uLCBjdHgpIHsgY29uc3QgdiA9IGFjdGlvbi52ZXJpZmljYXRpb24gfHwge307IGNvbnN0IGRpYWxvZyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tyb2xlPSJhbGVydGRpYWxvZyJdJykgfHwgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW3JvbGU9ImRpYWxvZyJdJyk7IGlmICghZGlhbG9nKSByZXR1cm4gd2FybignTm8gZGlhbG9nIGZvdW5kJyk7IGNvbnN0IHRleHQgPSBkaWFsb2cuaW5uZXJUZXh0IHx8ICcnOyBpZiAodi5jb250ZW50X2NvbnRhaW5zICYmICF0ZXh0LmluY2x1ZGVzKHYuY29udGVudF9jb250YWlucykpIHsgcmV0dXJuIHdhcm4oYERpYWxvZyBtaXNzaW5nIHRleHQ6ICR7di5jb250ZW50X2NvbnRhaW5zfWApOyB9IHJldHVybiBwYXNzKCdEaWFsb2cgdmVyaWZpZWQnKTsgfSwgYXN5bmMgdmVyaWZ5X2lucHV0X3ZhbHVlKGFjdGlvbiwgY3R4KSB7IGNvbnN0IGVsID0gZmluZEVsKGFjdGlvbi50YXJnZXQsIHsgc2VsZWN0b3JzOiBjdHguc2VsZWN0b3JzIH0pOyBpZiAoIWVsKSByZXR1cm4gZmFpbChgSW5wdXQgbm90IGZvdW5kOiAke2FjdGlvbi50YXJnZXR9YCk7IGNvbnN0IHYgPSBhY3Rpb24udmVyaWZpY2F0aW9uIHx8IHt9OyBpZiAodi52YWx1ZSAmJiBlbC52YWx1ZSAhPT0gdi52YWx1ZSkgeyByZXR1cm4gZmFpbChgVmFsdWUgbWlzbWF0Y2g6IGV4cGVjdGVkICIke3YudmFsdWV9IiwgZ290ICIke2VsLnZhbHVlfSJgKTsgfSByZXR1cm4gcGFzcyhgSW5wdXQgdmFsdWU6ICIke2VsLnZhbHVlPy5zdWJzdHJpbmcoMCwgMzApfSJgKTsgfSwgYXN5bmMgdmVyaWZ5X3BhZ2UoYWN0aW9uLCBjdHgpIHsgY29uc3QgdiA9IGFjdGlvbi52ZXJpZmljYXRpb24gfHwge307IGNvbnN0IHBhZ2VUZXh0ID0gZG9jdW1lbnQuYm9keS5pbm5lclRleHQ7IGlmICh2LnRpdGxlICYmICFwYWdlVGV4dC5pbmNsdWRlcyh2LnRpdGxlKSkgeyByZXR1cm4gZmFpbChgUGFnZSB0aXRsZSBtaXNzaW5nOiAke3YudGl0bGV9YCk7IH0gaWYgKHYuY29udGVudF9jb250YWlucyAmJiAhcGFnZVRleHQuaW5jbHVkZXModi5jb250ZW50X2NvbnRhaW5zKSkgeyByZXR1cm4gZmFpbChgUGFnZSBjb250ZW50IG1pc3Npbmc6ICR7di5jb250ZW50X2NvbnRhaW5zfWApOyB9IHJldHVybiBwYXNzKCdQYWdlIHZlcmlmaWVkJyk7IH0sIGFzeW5jIHZlcmlmeV9jb25zb2xlKGFjdGlvbiwgY3R4KSB7IHJldHVybiBwYXNzKCdDb25zb2xlIGNoZWNrIChtb25pdG9yZWQgZXh0ZXJuYWxseSknKTsgfSwgYXN5bmMgdmVyaWZ5X2RhdGFfY2hhbmdlKGFjdGlvbiwgY3R4KSB7IGF3YWl0IHNsZWVwKDEwMDApOyByZXR1cm4gcGFzcygnRGF0YSBjaGFuZ2UgY2hlY2snKTsgfSwgYXN5bmMgdmVyaWZ5X2VkaXRfbW9kZShhY3Rpb24sIGN0eCkgeyBjb25zdCB1cmwgPSB3aW5kb3cubG9jYXRpb24uaHJlZjsgY29uc3QgaGFzRWRpdCA9IHVybC5pbmNsdWRlcygnbW9kZT1lZGl0JykgfHwgdXJsLmluY2x1ZGVzKCdlZGl0Jyk7IGNvbnN0IGlucHV0cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2lucHV0Om5vdChbdHlwZT0iaGlkZGVuIl0pOm5vdChbZGlzYWJsZWRdKScpOyByZXR1cm4gaGFzRWRpdCB8fCBpbnB1dHMubGVuZ3RoID4gMCA/IHBhc3MoJ0VkaXQgbW9kZSBhY3RpdmUnKSA6IHdhcm4oJ0VkaXQgbW9kZSBub3QgZGV0ZWN0ZWQnKTsgfSwgYXN5bmMgc2F2ZV91cmwoYWN0aW9uLCBjdHgpIHsgY29uc3QgdmFyTmFtZSA9IGFjdGlvbi52YXJpYWJsZSB8fCAnc2F2ZWRfdXJsJzsgY3R4LnZhcmlhYmxlc1t2YXJOYW1lXSA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmOyByZXR1cm4gcGFzcyhgU2F2ZWQgVVJMIOKGkiAke3Zhck5hbWV9YCk7IH0sIGFzeW5jIGV4dHJhY3RfZnJvbV91cmwoYWN0aW9uLCBjdHgpIHsgY29uc3QgcGF0dGVybiA9IGFjdGlvbi5wYXR0ZXJuOyBjb25zdCB2YXJOYW1lID0gYWN0aW9uLnZhcmlhYmxlIHx8ICdleHRyYWN0ZWQnOyBjb25zdCBtID0gd2luZG93LmxvY2F0aW9uLmhyZWYubWF0Y2gobmV3IFJlZ0V4cChwYXR0ZXJuKSk7IGlmIChtICYmIG1bMV0pIHsgY3R4LnZhcmlhYmxlc1t2YXJOYW1lXSA9IG1bMV07IHJldHVybiBwYXNzKGBFeHRyYWN0ZWQgIiR7bVsxXX0iIOKGkiAke3Zhck5hbWV9YCk7IH0gcmV0dXJuIHdhcm4oYFBhdHRlcm4gbm90IG1hdGNoZWQ6ICR7cGF0dGVybn1gKTsgfSwgYXN5bmMgY2FwdHVyZShhY3Rpb24sIGN0eCkgeyByZXR1cm4geyBzdGF0dXM6ICduYXRpdmVfcmVxdWlyZWQnLCB0eXBlOiAnc2NyZWVuc2hvdCcsIGRldGFpbHM6IGFjdGlvbi5uYW1lIHx8ICdjYXB0dXJlJyB9OyB9LCBhc3luYyBjbG9zZV9tb2RhbChhY3Rpb24sIGN0eCkgeyBjb25zdCByZXN1bHQgPSBhd2FpdCBNb2RhbEd1YXJkLmNsb3NlKCk7IHJldHVybiByZXN1bHQuY2xvc2VkID8gcGFzcygnTW9kYWwgY2xvc2VkJykgOiB3YXJuKCdNb2RhbCBjbG9zZSBmYWlsZWQnKTsgfSwgYXN5bmMgY2xvc2VfbW9kYWxfaWZfb3BlbihhY3Rpb24sIGN0eCkgeyBpZiAoIU1vZGFsR3VhcmQuY2hlY2soKS5vcGVuKSByZXR1cm4gcGFzcygnTm8gbW9kYWwgb3BlbicpOyBjb25zdCByZXN1bHQgPSBhd2FpdCBNb2RhbEd1YXJkLmNsb3NlKCk7IHJldHVybiByZXN1bHQuY2xvc2VkID8gcGFzcygnTW9kYWwgY2xvc2VkJykgOiB3YXJuKCdNb2RhbCBjbG9zZSBmYWlsZWQnKTsgfSwgYXN5bmMgc2Nyb2xsQW5kRmluZChhY3Rpb24sIGN0eCkgeyBjb25zdCB0ZXh0ID0gYWN0aW9uLnRhcmdldDsgY29uc3QgY29udGFpbmVyU2VsID0gYWN0aW9uLmNvbnRhaW5lciB8fCAnLnNpZGViYXItc2Nyb2xsLCBbZGF0YS1zaWRlYmFyPSJjb250ZW50Il0sIG5hdic7IGNvbnN0IG1heEF0dGVtcHRzID0gYWN0aW9uLm1heEF0dGVtcHRzIHx8IDEwOyBjb25zdCBzY3JvbGxTdGVwID0gYWN0aW9uLnNjcm9sbFN0ZXAgfHwgMjAwOyBjb25zdCBjb250YWluZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGNvbnRhaW5lclNlbC5zcGxpdCgnLCcpWzBdLnRyaW0oKSkgfHwgZG9jdW1lbnQucXVlcnlTZWxlY3Rvcihjb250YWluZXJTZWwuc3BsaXQoJywnKVsxXT8udHJpbSgpKSB8fCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCduYXYnKTsgaWYgKGNvbnRhaW5lcikgY29udGFpbmVyLnNjcm9sbFRvKHsgdG9wOiAwLCBiZWhhdmlvcjogJ2luc3RhbnQnIH0pOyBhd2FpdCBzbGVlcCgyMDApOyBmb3IgKGxldCBpID0gMDsgaSA8IG1heEF0dGVtcHRzOyBpKyspIHsgY29uc3QgZWwgPSBmaW5kRWwodGV4dCk7IGlmIChlbCkgeyBzY3JvbGxJbnRvVmlldyhlbCk7IHJldHVybiBwYXNzKGBGb3VuZDogJHt0ZXh0fWApOyB9IGlmIChjb250YWluZXIpIGNvbnRhaW5lci5zY3JvbGxCeSh7IHRvcDogc2Nyb2xsU3RlcCwgYmVoYXZpb3I6ICdpbnN0YW50JyB9KTsgYXdhaXQgc2xlZXAoMTUwKTsgfSByZXR1cm4gd2Fybihgc2Nyb2xsQW5kRmluZDogIiR7dGV4dH0iIG5vdCBmb3VuZCBhZnRlciAke21heEF0dGVtcHRzfSBzY3JvbGxzYCk7IH0sIGFzeW5jIGV2YWx1YXRlKGFjdGlvbiwgY3R4KSB7IHRyeSB7IGNvbnN0IHJlc3VsdCA9IGV2YWwoYWN0aW9uLnNjcmlwdCk7IGlmIChyZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlKSBhd2FpdCByZXN1bHQ7IHJldHVybiBwYXNzKCdldmFsdWF0ZSBvaycpOyB9IGNhdGNoIChlcnIpIHsgcmV0dXJuIHdhcm4oYGV2YWx1YXRlIGVycm9yOiAke2Vyci5tZXNzYWdlfWApOyB9IH0sIGFzeW5jIHNlYXJjaChhY3Rpb24sIGN0eCkgeyBjb25zdCBlbCA9IGZpbmRFbChhY3Rpb24udGFyZ2V0LCB7IHNlbGVjdG9yczogY3R4LnNlbGVjdG9ycyB9KTsgaWYgKCFlbCkgeyBjb25zdCBzZWFyY2hJbnB1dCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoICdpbnB1dFt0eXBlPSJzZWFyY2giXSwgaW5wdXRbcGxhY2Vob2xkZXIqPSLqsoDsg4kiXSwgaW5wdXRbcGxhY2Vob2xkZXIqPSJTZWFyY2giXScgKTsgaWYgKCFzZWFyY2hJbnB1dCkgcmV0dXJuIGZhaWwoJ1NlYXJjaCBpbnB1dCBub3QgZm91bmQnKTsgY2xlYXJJbnB1dChzZWFyY2hJbnB1dCk7IHNldElucHV0VmFsdWUoc2VhcmNoSW5wdXQsIGFjdGlvbi52YWx1ZSB8fCAnJyk7IGF3YWl0IHNsZWVwKDEwMDApOyByZXR1cm4gcGFzcyhgU2VhcmNoZWQ6ICIke2FjdGlvbi52YWx1ZX0iYCk7IH0gY2xlYXJJbnB1dChlbCk7IHNldElucHV0VmFsdWUoZWwsIGFjdGlvbi52YWx1ZSB8fCAnJyk7IGF3YWl0IHNsZWVwKDEwMDApOyByZXR1cm4gcGFzcyhgU2VhcmNoZWQ6ICIke2FjdGlvbi52YWx1ZX0iYCk7IH0sIGFzeW5jIGNsaWNrX2FuZF9jb25maXJtKGFjdGlvbiwgY3R4KSB7IGNvbnN0IGVsID0gZmluZEVsKGFjdGlvbi50YXJnZXQsIHsgc2VsZWN0b3JzOiBjdHguc2VsZWN0b3JzIH0pOyBpZiAoIWVsKSByZXR1cm4gZmFpbChgRWxlbWVudCBub3QgZm91bmQ6ICR7YWN0aW9uLnRhcmdldH1gKTsgdHJpZ2dlckNsaWNrKGVsKTsgYXdhaXQgc2xlZXAoNTAwKTsgcmV0dXJuIEFjdGlvbkhhbmRsZXJzLmNsaWNrX2RpYWxvZ19jb25maXJtKGFjdGlvbiwgY3R4KTsgfSwgYXN5bmMgY2xpY2tfaWZfZXhpc3RzKGFjdGlvbiwgY3R4KSB7IGNvbnN0IGVsID0gZmluZEVsKGFjdGlvbi50YXJnZXQsIHsgc2VsZWN0b3JzOiBjdHguc2VsZWN0b3JzIH0pOyBpZiAoIWVsKSByZXR1cm4gcGFzcyhgRWxlbWVudCBub3QgcHJlc2VudCAob2spOiAke2FjdGlvbi50YXJnZXR9YCk7IHRyaWdnZXJDbGljayhlbCk7IGF3YWl0IHNsZWVwKDMwMCk7IHJldHVybiBwYXNzKGBDbGlja2VkIChleGlzdGVkKTogJHthY3Rpb24udGFyZ2V0fWApOyB9LCBhc3luYyBwcmVzc19rZXkoYWN0aW9uLCBjdHgpIHsgY29uc3Qga2V5ID0gYWN0aW9uLnZhbHVlIHx8IGFjdGlvbi5rZXkgfHwgJ0VzY2FwZSc7IGNvbnN0IHRhcmdldCA9IGFjdGlvbi50YXJnZXQgPyBmaW5kRWwoYWN0aW9uLnRhcmdldCwgeyBzZWxlY3RvcnM6IGN0eC5zZWxlY3RvcnMgfSkgOiBkb2N1bWVudC5hY3RpdmVFbGVtZW50OyBpZiAodGFyZ2V0KSB7IHRhcmdldC5kaXNwYXRjaEV2ZW50KG5ldyBLZXlib2FyZEV2ZW50KCdrZXlkb3duJywgeyBrZXksIGJ1YmJsZXM6IHRydWUgfSkpOyB0YXJnZXQuZGlzcGF0Y2hFdmVudChuZXcgS2V5Ym9hcmRFdmVudCgna2V5dXAnLCB7IGtleSwgYnViYmxlczogdHJ1ZSB9KSk7IH0gYXdhaXQgc2xlZXAoMjAwKTsgcmV0dXJuIHBhc3MoYFByZXNzZWQga2V5OiAke2tleX1gKTsgfSwgYXN5bmMgYmx1cihhY3Rpb24sIGN0eCkgeyBjb25zdCBlbCA9IGFjdGlvbi50YXJnZXQgPyBmaW5kRWwoYWN0aW9uLnRhcmdldCwgeyBzZWxlY3RvcnM6IGN0eC5zZWxlY3RvcnMgfSkgOiBkb2N1bWVudC5hY3RpdmVFbGVtZW50OyBpZiAoZWwpIGVsLmJsdXIoKTsgYXdhaXQgc2xlZXAoMjAwKTsgcmV0dXJuIHBhc3MoJ0JsdXJyZWQnKTsgfSwgYXN5bmMgZ2VuZXJhdGVfdGltZXN0YW1wKGFjdGlvbiwgY3R4KSB7IGNvbnN0IG4gPSBuZXcgRGF0ZSgpOyBjb25zdCBwYWQgPSAodikgPT4gdi50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyk7IGNvbnN0IHRzID0gYCR7bi5nZXRGdWxsWWVhcigpfSR7cGFkKG4uZ2V0TW9udGgoKSArIDEpfSR7cGFkKG4uZ2V0RGF0ZSgpKX1fJHtwYWQobi5nZXRIb3VycygpKX0ke3BhZChuLmdldE1pbnV0ZXMoKSl9JHtwYWQobi5nZXRTZWNvbmRzKCkpfWA7IGNvbnN0IHZhck5hbWUgPSBhY3Rpb24udmFyaWFibGUgfHwgJ3RpbWVzdGFtcCc7IGN0eC52YXJpYWJsZXNbdmFyTmFtZV0gPSB0czsgcmV0dXJuIHBhc3MoYEdlbmVyYXRlZCB0aW1lc3RhbXA6ICR7dHN9YCk7IH0sIGFzeW5jIHZlcmlmeV90b2FzdChhY3Rpb24sIGN0eCkgeyBjb25zdCB0b2FzdFNlbHMgPSBbICdbY2xhc3MqPSJ0b2FzdCJdJywgJ1tjbGFzcyo9IlRvYXN0Il0nLCAnW2NsYXNzKj0ibm90aWZpY2F0aW9uIl0nLCAnW2NsYXNzKj0iTm90aWZpY2F0aW9uIl0nLCAnW2NsYXNzKj0ic25hY2tiYXIiXScsICdbY2xhc3MqPSJTbmFja2JhciJdJywgJ1tyb2xlPSJhbGVydCJdJywgJ1tjbGFzcyo9ImFsZXJ0Il06bm90KFtjbGFzcyo9ImRpYWxvZyJdKScsIF07IGF3YWl0IHNsZWVwKDUwMCk7IGZvciAoY29uc3Qgc2VsIG9mIHRvYXN0U2VscykgeyBjb25zdCBlbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsKTsgaWYgKGVsICYmIGVsLm9mZnNldFBhcmVudCAhPT0gbnVsbCkgeyBjb25zdCB0ZXh0ID0gZWwuaW5uZXJUZXh0IHx8ICcnOyBjb25zdCB2ID0gYWN0aW9uLnZlcmlmaWNhdGlvbiB8fCBhY3Rpb24udmVyaWZ5IHx8IHt9OyBpZiAodi5jb250YWlucykgeyBjb25zdCBwYXR0ZXJucyA9IHYuY29udGFpbnMuc3BsaXQoJ3wnKTsgaWYgKHBhdHRlcm5zLnNvbWUoKHApID0+IHRleHQuaW5jbHVkZXMocCkpKSB7IHJldHVybiBwYXNzKGBUb2FzdCBmb3VuZDogIiR7dGV4dC5zdWJzdHJpbmcoMCwgNTApfSJgKTsgfSB9IHJldHVybiBwYXNzKGBUb2FzdCB2aXNpYmxlOiAiJHt0ZXh0LnN1YnN0cmluZygwLCA1MCl9ImApOyB9IH0gcmV0dXJuIHdhcm4oJ05vIHRvYXN0L25vdGlmaWNhdGlvbiBmb3VuZCcpOyB9LCBhc3luYyBob3ZlcihhY3Rpb24sIGN0eCkgeyBjb25zdCBlbCA9IGZpbmRFbChhY3Rpb24udGFyZ2V0LCB7IHNlbGVjdG9yczogY3R4LnNlbGVjdG9ycyB9KTsgaWYgKCFlbCkgcmV0dXJuIHdhcm4oYEhvdmVyIHRhcmdldCBub3QgZm91bmQ6ICR7YWN0aW9uLnRhcmdldH1gKTsgZWwuZGlzcGF0Y2hFdmVudChuZXcgTW91c2VFdmVudCgnbW91c2VvdmVyJywgeyBidWJibGVzOiB0cnVlIH0pKTsgZWwuZGlzcGF0Y2hFdmVudChuZXcgTW91c2VFdmVudCgnbW91c2VlbnRlcicsIHsgYnViYmxlczogdHJ1ZSB9KSk7IGF3YWl0IHNsZWVwKDMwMCk7IHJldHVybiBwYXNzKGBIb3ZlcmVkOiAke2FjdGlvbi50YXJnZXR9YCk7IH0sIGFzeW5jIG5hdmlnYXRlKGFjdGlvbiwgY3R4KSB7IGNvbnN0IHVybCA9IGFjdGlvbi50YXJnZXQ7IGlmICh1cmwgJiYgdXJsLnN0YXJ0c1dpdGgoJy8nKSkgeyB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB1cmw7IHJldHVybiB7IHN0YXR1czogJ25hdmlnYXRpb24nLCBkZXRhaWxzOiBgTmF2aWdhdGUgdG8gJHt1cmx9YCB9OyB9IHJldHVybiB7IHN0YXR1czogJ25hdmlnYXRpb24nLCBkZXRhaWxzOiBgTmF2aWdhdGU6ICR7dXJsfWAgfTsgfSwgYXN5bmMgcmVsb2FkKGFjdGlvbiwgY3R4KSB7IHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTsgcmV0dXJuIHsgc3RhdHVzOiAnbmF2aWdhdGlvbicsIGRldGFpbHM6ICdQYWdlIHJlbG9hZCcgfTsgfSwgYXN5bmMgbmF2aWdhdGVfYmFjayhhY3Rpb24sIGN0eCkgeyB3aW5kb3cuaGlzdG9yeS5iYWNrKCk7IHJldHVybiB7IHN0YXR1czogJ25hdmlnYXRpb24nLCBkZXRhaWxzOiAnTmF2aWdhdGUgYmFjaycgfTsgfSwgYXN5bmMgbWVudV9uYXZpZ2F0ZShhY3Rpb24sIGN0eCkgeyBjb25zdCBleHBhbmRCdG4gPSBBcnJheS5mcm9tKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2J1dHRvbicpKS5maW5kKChiKSA9PiBiLmlubmVyVGV4dD8uaW5jbHVkZXMoJ+uqqOuRkCDtjrzsuZjquLAnKSApOyBpZiAoZXhwYW5kQnRuKSB7IGV4cGFuZEJ0bi5jbGljaygpOyBhd2FpdCBzbGVlcCgxNTAwKTsgfSBjb25zdCBsMSA9IGFjdGlvbi5sZXZlbDE7IGNvbnN0IGwyID0gYWN0aW9uLmxldmVsMjsgaWYgKGwxKSB7IGNvbnN0IGwxRWwgPSBmaW5kRWwobDEpOyBpZiAobDFFbCkgeyB0cmlnZ2VyQ2xpY2sobDFFbCk7IGF3YWl0IHNsZWVwKDUwMCk7IH0gfSBpZiAobDIpIHsgY29uc3QgbDJFbCA9IGZpbmRFbChsMik7IGlmIChsMkVsKSB7IHRyaWdnZXJDbGljayhsMkVsKTsgYXdhaXQgc2xlZXAoMjAwMCk7IH0gfSBjb25zdCB2ID0gYWN0aW9uLmV4cGVjdGVkIHx8IHt9OyBpZiAodi51cmxfY29udGFpbnMgJiYgIXdpbmRvdy5sb2NhdGlvbi5ocmVmLmluY2x1ZGVzKHYudXJsX2NvbnRhaW5zKSkgeyByZXR1cm4gd2FybihgTWVudSBuYXY6IFVSTCBtaXNzaW5nICIke3YudXJsX2NvbnRhaW5zfSJgKTsgfSByZXR1cm4gcGFzcyhgTWVudSBuYXZpZ2F0aW9uOiAke2wxfSA+ICR7bDJ9YCk7IH0sIGFzeW5jIG5vb3AoYWN0aW9uLCBjdHgpIHsgcmV0dXJuIHBhc3MoJ05vIGFjdGlvbicpOyB9LCB9OyBmdW5jdGlvbiBwYXNzKGRldGFpbHMpIHsgcmV0dXJuIHsgc3RhdHVzOiAncGFzcycsIGRldGFpbHMgfTsgfSBmdW5jdGlvbiBmYWlsKGRldGFpbHMpIHsgcmV0dXJuIHsgc3RhdHVzOiAnZmFpbCcsIGRldGFpbHMgfTsgfSBmdW5jdGlvbiB3YXJuKGRldGFpbHMpIHsgcmV0dXJuIHsgc3RhdHVzOiAnd2FybicsIGRldGFpbHMgfTsgfSBmdW5jdGlvbiByZXBsYWNlVmFycyhzdHIsIHZhcnMpIHsgaWYgKHR5cGVvZiBzdHIgIT09ICdzdHJpbmcnKSByZXR1cm4gc3RyOyBzdHIgPSBzdHIucmVwbGFjZSgvXHt0aW1lc3RhbXBcfS9nLCAoKSA9PiB7IGNvbnN0IG4gPSBuZXcgRGF0ZSgpOyBjb25zdCBwYWQgPSAodikgPT4gdi50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyk7IHJldHVybiBgJHtuLmdldEZ1bGxZZWFyKCl9JHtwYWQobi5nZXRNb250aCgpICsgMSl9JHtwYWQobi5nZXREYXRlKCkpfV8ke3BhZChuLmdldEhvdXJzKCkpfSR7cGFkKG4uZ2V0TWludXRlcygpKX0ke3BhZChuLmdldFNlY29uZHMoKSl9YDsgfSk7IGlmICh2YXJzKSB7IHN0ciA9IHN0ci5yZXBsYWNlKC9ceyhcdyspXH0vZywgKF8sIGtleSkgPT4gdmFyc1trZXldID8/IGB7JHtrZXl9fWApOyB9IHJldHVybiBzdHI7IH0gYXN5bmMgZnVuY3Rpb24gcmV0cnlBY3Rpb24oaGFuZGxlciwgYWN0aW9uLCBjdHgsIG1heFJldHJpZXMgPSAyLCBkZWxheU1zID0gNTAwKSB7IGxldCBsYXN0UmVzdWx0OyBmb3IgKGxldCBhdHRlbXB0ID0gMDsgYXR0ZW1wdCA8PSBtYXhSZXRyaWVzOyBhdHRlbXB0KyspIHsgbGFzdFJlc3VsdCA9IGF3YWl0IGhhbmRsZXIoYWN0aW9uLCBjdHgpOyBpZiAobGFzdFJlc3VsdC5zdGF0dXMgPT09ICdwYXNzJyB8fCBsYXN0UmVzdWx0LnN0YXR1cyA9PT0gJ25hdmlnYXRpb24nIHx8IGxhc3RSZXN1bHQuc3RhdHVzID09PSAnbmF0aXZlX3JlcXVpcmVkJykgeyByZXR1cm4gbGFzdFJlc3VsdDsgfSBpZiAoYXR0ZW1wdCA8IG1heFJldHJpZXMpIHsgaWYgKGxhc3RSZXN1bHQuZGV0YWlscz8uaW5jbHVkZXMoJ25vdCBmb3VuZCcpIHx8IGxhc3RSZXN1bHQuZGV0YWlscz8uaW5jbHVkZXMoJ25vdCB2aXNpYmxlJykpIHsgYXdhaXQgc2xlZXAoZGVsYXlNcyk7IGlmIChNb2RhbEd1YXJkLmNoZWNrKCkub3BlbikgYXdhaXQgTW9kYWxHdWFyZC5jbG9zZSgpOyB9IGVsc2UgeyBhd2FpdCBzbGVlcChkZWxheU1zKTsgfSB9IH0gcmV0dXJuIGxhc3RSZXN1bHQ7IH0gYXN5bmMgZnVuY3Rpb24gcnVuQmF0Y2goc3RlcHMsIHZhcnMgPSB7fSwgY29uZmlnID0ge30pIHsgY29uc3QgcmVzdWx0cyA9IFtdOyBjb25zdCBjdHggPSB7IHZhcmlhYmxlczogeyAuLi52YXJzIH0sIHNlbGVjdG9yczogY29uZmlnLnNlbGVjdG9ycyB8fCB7fSwgfTsgY29uc3Qgc3RhcnRVcmwgPSB3aW5kb3cubG9jYXRpb24uaHJlZjsgbGV0IHN0b3BwZWRSZWFzb24gPSAnY29tcGxldGUnOyBsZXQgc3RvcHBlZEF0SW5kZXggPSBzdGVwcy5sZW5ndGg7IGZvciAobGV0IGkgPSAwOyBpIDwgc3RlcHMubGVuZ3RoOyBpKyspIHsgY29uc3Qgc3RlcCA9IHN0ZXBzW2ldOyBjb25zdCBub3JtYWxpemVkID0gbm9ybWFsaXplU3RlcChzdGVwKTsgY29uc3Qgc3RlcFN0YXJ0ID0gbm93KCk7IGxldCBzdGVwU3RhdHVzID0gJ3Bhc3MnOyBsZXQgc3RlcERldGFpbHMgPSAnJzsgbGV0IHN0ZXBFcnJvciA9IG51bGw7IGxldCBzdWJSZXN1bHRzID0gW107IGZvciAobGV0IGogPSAwOyBqIDwgbm9ybWFsaXplZC5zdWJBY3Rpb25zLmxlbmd0aDsgaisrKSB7IGNvbnN0IGFjdGlvbiA9IG5vcm1hbGl6ZWQuc3ViQWN0aW9uc1tqXTsgY29uc3QgYWN0aW9uVHlwZSA9IGFjdGlvbi50eXBlOyBpZiAoYWN0aW9uVHlwZSA9PT0gJ2NhcHR1cmUnIHx8IGFjdGlvblR5cGUgPT09ICdzY3JlZW5zaG90JykgeyBzdG9wcGVkUmVhc29uID0gJ25hdGl2ZV9yZXF1aXJlZCc7IHN0b3BwZWRBdEluZGV4ID0gaTsgcmVzdWx0cy5wdXNoKHsgc3RlcElkOiBub3JtYWxpemVkLnN0ZXBJZCwgbmFtZTogbm9ybWFsaXplZC5uYW1lLCBzdGF0dXM6ICdza2lwJywgZHVyYXRpb246IG5vdygpIC0gc3RlcFN0YXJ0LCBkZXRhaWxzOiAnUmVxdWlyZXMgbmF0aXZlIHNjcmVlbnNob3QnLCBlcnJvcjogbnVsbCwgcGhhc2U6IG5vcm1hbGl6ZWQucGhhc2UsIH0pOyByZXR1cm4gYnVpbGRCYXRjaFJlc3VsdChyZXN1bHRzLCBjdHgsIHN0b3BwZWRSZWFzb24sIHN0b3BwZWRBdEluZGV4KTsgfSBjb25zdCBoYW5kbGVyID0gQWN0aW9uSGFuZGxlcnNbYWN0aW9uVHlwZV07IGlmICghaGFuZGxlcikgeyBzdWJSZXN1bHRzLnB1c2god2FybihgVW5rbm93biBhY3Rpb24gdHlwZTogJHthY3Rpb25UeXBlfWApKTsgY29udGludWU7IH0gY29uc3QgcmVzdWx0ID0gYXdhaXQgcmV0cnlBY3Rpb24oaGFuZGxlciwgYWN0aW9uLCBjdHgpOyBpZiAocmVzdWx0LnN0YXR1cyA9PT0gJ25hdmlnYXRpb24nKSB7IHN1YlJlc3VsdHMucHVzaChyZXN1bHQpOyBzdG9wcGVkUmVhc29uID0gJ25hdmlnYXRpb24nOyBzdG9wcGVkQXRJbmRleCA9IGkgKyAxOyBjb25zdCBzciA9IGJ1aWxkU3RlcFJlc3VsdChub3JtYWxpemVkLCBzdWJSZXN1bHRzLCBzdGVwU3RhcnQpOyByZXN1bHRzLnB1c2goc3IpOyByZXR1cm4gYnVpbGRCYXRjaFJlc3VsdChyZXN1bHRzLCBjdHgsIHN0b3BwZWRSZWFzb24sIHN0b3BwZWRBdEluZGV4KTsgfSBpZiAocmVzdWx0LnN0YXR1cyA9PT0gJ25hdGl2ZV9yZXF1aXJlZCcpIHsgc3RvcHBlZFJlYXNvbiA9ICduYXRpdmVfcmVxdWlyZWQnOyBzdG9wcGVkQXRJbmRleCA9IGk7IGNvbnN0IHNyID0gYnVpbGRTdGVwUmVzdWx0KG5vcm1hbGl6ZWQsIHN1YlJlc3VsdHMsIHN0ZXBTdGFydCk7IHJlc3VsdHMucHVzaChzcik7IHJldHVybiBidWlsZEJhdGNoUmVzdWx0KHJlc3VsdHMsIGN0eCwgc3RvcHBlZFJlYXNvbiwgc3RvcHBlZEF0SW5kZXgpOyB9IHN1YlJlc3VsdHMucHVzaChyZXN1bHQpOyBjb25zdCBjdXJyZW50VXJsID0gd2luZG93LmxvY2F0aW9uLmhyZWY7IGlmIChjdXJyZW50VXJsICE9PSBzdGFydFVybCAmJiBqIDwgbm9ybWFsaXplZC5zdWJBY3Rpb25zLmxlbmd0aCAtIDEpIHsgfSB9IGNvbnN0IHNyID0gYnVpbGRTdGVwUmVzdWx0KG5vcm1hbGl6ZWQsIHN1YlJlc3VsdHMsIHN0ZXBTdGFydCk7IHJlc3VsdHMucHVzaChzcik7IGlmIChzci5zdGF0dXMgPT09ICdmYWlsJyAmJiBub3JtYWxpemVkLmNyaXRpY2FsKSB7IHN0b3BwZWRSZWFzb24gPSAnY3JpdGljYWxfZmFpbHVyZSc7IHN0b3BwZWRBdEluZGV4ID0gaSArIDE7IHJldHVybiBidWlsZEJhdGNoUmVzdWx0KHJlc3VsdHMsIGN0eCwgc3RvcHBlZFJlYXNvbiwgc3RvcHBlZEF0SW5kZXgpOyB9IH0gcmV0dXJuIGJ1aWxkQmF0Y2hSZXN1bHQocmVzdWx0cywgY3R4LCBzdG9wcGVkUmVhc29uLCBzdG9wcGVkQXRJbmRleCk7IH0gZnVuY3Rpb24gYnVpbGRTdGVwUmVzdWx0KG5vcm1hbGl6ZWQsIHN1YlJlc3VsdHMsIHN0ZXBTdGFydCkgeyBjb25zdCBmYWlsZWQgPSBzdWJSZXN1bHRzLmZpbHRlcigocikgPT4gci5zdGF0dXMgPT09ICdmYWlsJyk7IGNvbnN0IHdhcm5zID0gc3ViUmVzdWx0cy5maWx0ZXIoKHIpID0+IHIuc3RhdHVzID09PSAnd2FybicpOyBsZXQgc3RhdHVzID0gJ3Bhc3MnOyBpZiAoZmFpbGVkLmxlbmd0aCA+IDApIHN0YXR1cyA9ICdmYWlsJzsgZWxzZSBpZiAod2FybnMubGVuZ3RoID4gMCkgc3RhdHVzID0gJ3dhcm4nOyBjb25zdCBkZXRhaWxzID0gc3ViUmVzdWx0cy5tYXAoKHIpID0+IHIuZGV0YWlscykuam9pbignIHwgJyk7IGNvbnN0IGVycm9yID0gZmFpbGVkLmxlbmd0aCA+IDAgPyBmYWlsZWQubWFwKChmKSA9PiBmLmRldGFpbHMpLmpvaW4oJzsgJykgOiBudWxsOyByZXR1cm4geyBzdGVwSWQ6IG5vcm1hbGl6ZWQuc3RlcElkLCBuYW1lOiBub3JtYWxpemVkLm5hbWUsIHN0YXR1cywgZHVyYXRpb246IG5vdygpIC0gc3RlcFN0YXJ0LCBkZXRhaWxzOiBkZXRhaWxzLnN1YnN0cmluZygwLCAyMDApLCBlcnJvciwgcGhhc2U6IG5vcm1hbGl6ZWQucGhhc2UsIH07IH0gZnVuY3Rpb24gYnVpbGRCYXRjaFJlc3VsdChyZXN1bHRzLCBjdHgsIHN0b3BwZWRSZWFzb24sIHN0b3BwZWRBdEluZGV4KSB7IHJldHVybiB7IHRvdGFsU3RlcHM6IHJlc3VsdHMubGVuZ3RoLCBjb21wbGV0ZWRTdGVwczogcmVzdWx0cy5maWx0ZXIoKHIpID0+IHIuc3RhdHVzICE9PSAnc2tpcCcpLmxlbmd0aCwgcGFzc2VkOiByZXN1bHRzLmZpbHRlcigocikgPT4gci5zdGF0dXMgPT09ICdwYXNzJykubGVuZ3RoLCBmYWlsZWQ6IHJlc3VsdHMuZmlsdGVyKChyKSA9PiByLnN0YXR1cyA9PT0gJ2ZhaWwnKS5sZW5ndGgsIHdhcm5lZDogcmVzdWx0cy5maWx0ZXIoKHIpID0+IHIuc3RhdHVzID09PSAnd2FybicpLmxlbmd0aCwgcmVzdWx0cywgdmFyaWFibGVzOiBjdHgudmFyaWFibGVzLCBhcGlTdW1tYXJ5OiBBcGlNb25pdG9yLnN1bW1hcnkoKSwgY3VycmVudFVybDogd2luZG93LmxvY2F0aW9uLmhyZWYsIHN0b3BwZWRSZWFzb24sIHN0b3BwZWRBdEluZGV4LCB9OyB9IHdpbmRvdy5fX0UyRV9fID0geyBfdmVyc2lvbjogMSwgaW5pdChjb25maWcgPSB7fSkgeyBBcGlNb25pdG9yLmluc3RhbGwoKTsgQXBpTW9uaXRvci5yZXNldCgpOyByZXR1cm4geyByZWFkeTogdHJ1ZSwgdXJsOiB3aW5kb3cubG9jYXRpb24uaHJlZiwgYXBpTW9uaXRvcmluZzogdHJ1ZSwgfTsgfSwgcnVuQmF0Y2gsIGdldFN0YXRlKCkgeyByZXR1cm4geyB1cmw6IHdpbmRvdy5sb2NhdGlvbi5ocmVmLCBtb2RhbE9wZW46IE1vZGFsR3VhcmQuY2hlY2soKS5vcGVuLCBhcGlTdW1tYXJ5OiBBcGlNb25pdG9yLnN1bW1hcnkoKSwgdGl0bGU6IGRvY3VtZW50LnRpdGxlLCBib2R5VGV4dExlbmd0aDogZG9jdW1lbnQuYm9keS5pbm5lclRleHQ/Lmxlbmd0aCB8fCAwLCB9OyB9LCBhc3luYyBydW5BY3Rpb24oYWN0aW9uVHlwZSwgcGFyYW1zID0ge30sIHNlbGVjdG9ycyA9IHt9KSB7IGNvbnN0IGhhbmRsZXIgPSBBY3Rpb25IYW5kbGVyc1tub3JtYWxpemVBY3Rpb25UeXBlKGFjdGlvblR5cGUpXTsgaWYgKCFoYW5kbGVyKSByZXR1cm4gZmFpbChgVW5rbm93biBhY3Rpb246ICR7YWN0aW9uVHlwZX1gKTsgY29uc3QgY3R4ID0geyB2YXJpYWJsZXM6IHt9LCBzZWxlY3RvcnMgfTsgcmV0dXJuIGhhbmRsZXIocGFyYW1zLCBjdHgpOyB9LCBjbG9zZU1vZGFsOiAoKSA9PiBNb2RhbEd1YXJkLmNsb3NlKCksIGNoZWNrTW9kYWw6ICgpID0+IE1vZGFsR3VhcmQuY2hlY2soKSwgZ2V0QXBpTG9nczogKCkgPT4gKHsgbG9nczogQXBpTW9uaXRvci5fbG9ncy5zbGljZSgtNTApLCBlcnJvcnM6IEFwaU1vbml0b3IuX2Vycm9ycy5zbGljZSgtMjApLCBzdW1tYXJ5OiBBcGlNb25pdG9yLnN1bW1hcnkoKSwgfSksIGZpbmRFbCwgfTsgfSkoKTs=