分身AI.com × 自分を知るワーク(Session 5 — 最終)
Session 5: 事業の核心 (Business Core)
最後は、誰に何を届ける事業かを言語化して完成させます。正解はありません。思いつくままに、気楽に答えてください。
全10問 / 所要時間: 約10-15分(最終セッション)
Q1 / 10
10%
なぜそう思う?(任意)
スキップしました。後からいつでも答え直せます
折り返し地点です
あと5問で分身AIの核データが完成します。
ここまでの回答はすべて自動保存されています。
Session 5 完了!
0
全回答数
0
全スキップ数
全体進捗(全48問)
0%
後からいつでも答え直せます
このブラウザに自動保存済みです。次回は同じ端末から続きを再開できます。
CiAgICAoZnVuY3Rpb24gKCkgewogICAgICB2YXIgcWZzU2NyaXB0ID0gZG9jdW1lbnQuY3VycmVudFNjcmlwdDsKICAgICAgdmFyIHFmc0NvbnRhaW5lciA9IHFmc1NjcmlwdCA/IHFmc1NjcmlwdC5jbG9zZXN0KCcucWYtc291bC1jb250YWluZXInKSA6IG51bGw7CiAgICAgIGlmICghcWZzQ29udGFpbmVyKSB7CiAgICAgICAgcmV0dXJuOwogICAgICB9CgogICAgICB2YXIgdXJsUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKTsKCiAgICAgIGZ1bmN0aW9uIHFmT25lKHNlbGVjdG9yKSB7CiAgICAgICAgcmV0dXJuIHFmc0NvbnRhaW5lci5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKTsKICAgICAgfQoKICAgICAgZnVuY3Rpb24gcWZBbGwoc2VsZWN0b3IpIHsKICAgICAgICByZXR1cm4gcWZzQ29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpOwogICAgICB9CgogICAgICAvKiDilIDilIAgUXVlc3Rpb25zIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAqLwoKICAgICAgdmFyIFFGX1NPVUxfUVVFU1RJT05TID0gWwogICAgICAgIHsgaWQ6ICdFMScsIHR5cGU6ICdsb25nX3RleHQnLCBxdWVzdGlvbjogJ+OBguOBquOBn+OBrueQhuaDs+mhp+WuouOBr+OAgeOBqeOCk+OBqueKtuaFi+OBruS6uuOBp+OBmeOBi++8nycsIHBsYWNlaG9sZGVyOiAn44Gp44KT44Gq5oKp44G/44KS5oqx44GI44CB44Gp44KT44Gq54q25rOB44Gr44GE44KL5Lq644Gn44GZ44GLLi4uJywgYmJTZWN0aW9uOiAnQ1VTVE9NRVInLCBiYkZpZWxkOiAn6aGn5a6i44Oa44Or44K944OKJyB9LAogICAgICAgIHsgaWQ6ICdFMicsIHR5cGU6ICdsb25nX3RleHQnLCBxdWVzdGlvbjogJ+OBguOBquOBn+OBjOacgOOCguino+axuuOBl+OBn+OBhOOAjOmhp+WuouOBruagueacrOiqsumhjOOAjeOBr+S9leOBp+OBmeOBi++8nycsIHBsYWNlaG9sZGVyOiAn6KGo6Z2i55qE44Gq5ZWP6aGM44Gn44Gv44Gq44GP44CB5qC55pys44Gr44GC44KL6Kqy6aGM44GvLi4uJywgYmJTZWN0aW9uOiAnQ1VTVE9NRVInLCBiYkZpZWxkOiAn6aGn5a6i44Oa44Or44K944OKJyB9LAogICAgICAgIHsgaWQ6ICdFMycsIHR5cGU6ICdzaG9ydF90ZXh0JywgcXVlc3Rpb246ICfjgZ3jga7oqrLpoYzjgavlr77jgZfjgabjgIHjgYLjgarjgZ/jgYzku5bjgojjgorlvLfjgYTnkIbnlLHjga/kvZXjgafjgZnjgYvvvJ8nLCBwbGFjZWhvbGRlcjogJ+S+izog5ZCM44GY57WM6aiT44KS44GX44Gf44CB54us6Ieq44Gu5pa55rOV6KuW44GM44GC44KLLi4uJywgYmJTZWN0aW9uOiAnQ1VTVE9NRVInLCBiYkZpZWxkOiAn6aGn5a6i44Oa44Or44K944OKJyB9LAogICAgICAgIHsgaWQ6ICdFNCcsIHR5cGU6ICdzaG9ydF90ZXh0JywgcXVlc3Rpb246ICfloLHphazjgYzjgarjgY/jgabjgoLntprjgZHjgZ/jgYTmtLvli5Xjga/kvZXjgafjgZnjgYvvvJ8nLCBwbGFjZWhvbGRlcjogJ+S+izog44Kz44Of44Ol44OL44OG44Kj6YGL5Za244CB55m65L+h44CB44Oh44Oz44K/44Oq44Oz44KwLi4uJywgYmJTZWN0aW9uOiAnU1RSQVRFR1knLCBiYkZpZWxkOiAn54us6Ieq44Gu5by344G/JyB9LAogICAgICAgIHsgaWQ6ICdFNScsIHR5cGU6ICdzaG9ydF90ZXh0JywgcXVlc3Rpb246ICfjgYLjgarjgZ/jga7kuovmpa3kvqHlgKTjgpLkuIDoqIDjgafoqIDjgYbjgajvvJ8nLCBwbGFjZWhvbGRlcjogJ+S4gOiogOOBp+ihqOePvuOBl+OBpuOBj+OBoOOBleOBhC4uLicsIGJiU2VjdGlvbjogJ1NUUkFURUdZJywgYmJGaWVsZDogJ+eLrOiHquOBruW8t+OBvycgfSwKICAgICAgICB7IGlkOiAnRTYnLCB0eXBlOiAnY2hvaWNlJywgcXVlc3Rpb246ICfkuovmpa3miJDplbfjga7jgZ/jgoHjgavmiYvmlL7jgZnjgbnjgY3mpa3li5njga/jganjgozjgavov5HjgYTjgafjgZnjgYvvvJ8nLCBvcHRpb25zOiBbJ+S9juWNmOS+oeWun+WLmScsICfljZjnmbrlr77lv5wnLCAn5Y+N5b6p5LqL5YuZJywgJ+WIpOaWreS4jeimgeOBruiqv+aVtOalreWLmSddLCBiYlNlY3Rpb246ICdDVVNUT01FUicsIGJiRmllbGQ6ICfjgqLjg7Pjg4Hjg5rjg6vjgr3jg4onIH0sCiAgICAgICAgeyBpZDogJ0U3JywgdHlwZTogJ2Nob2ljZScsIHF1ZXN0aW9uOiAn5LuK5b6MMTLjgYvmnIjjgafmnIDjgoLkvLjjgbDjgZfjgZ/jgYTjg6zjg5Djg7zjga/jganjgozjgafjgZnjgYvvvJ8nLCBvcHRpb25zOiBbJ+aWsOimj+mbhuWuoicsICfml6LlrZjpoaflrqLmt7HogJUnLCAn5Y2Y5L6h6Kit6KiIJywgJ+WVhuWTgS/jgrXjg7zjg5Pjgrnlho3oqK3oqIgnXSwgYmJTZWN0aW9uOiAnQ1VTVE9NRVInLCBiYkZpZWxkOiAn44Ki44Oz44OB44Oa44Or44K944OKJyB9LAogICAgICAgIHsgaWQ6ICdFOCcsIHR5cGU6ICdzaG9ydF90ZXh0JywgcXVlc3Rpb246ICfjgIzjgZPjga7ku5Xkuovjga/lj5fjgZHjgarjgYTjgI3jgajmsbrjgoHjgovlooPnlYznt5rjgpLmlZnjgYjjgabjgY/jgaDjgZXjgYTjgIInLCBwbGFjZWhvbGRlcjogJ+S+izog5L6h5YCk6Kaz44GM5ZCI44KP44Gq44GE44CB5Y2Y5L6h44GM6KaL5ZCI44KP44Gq44GELi4uJywgYmJTZWN0aW9uOiAnQ1VTVE9NRVInLCBiYkZpZWxkOiAn44Ki44Oz44OB44Oa44Or44K944OKJyB9LAogICAgICAgIHsgaWQ6ICdFOScsIHR5cGU6ICdsb25nX3RleHQnLCBxdWVzdGlvbjogJzPlubTlvozjgavlrp/nj77jgZfjgZ/jgYTkuovmpa3nirbmhYvjgpLlhbfkvZPnmoTjgavmm7jjgYTjgabjgY/jgaDjgZXjgYTjgIInLCBwbGFjZWhvbGRlcjogJ+WjsuS4iuOAgeODgeODvOODoOOAgemhp+WuouaVsOOAgeeUn+a0u+OCueOCv+OCpOODq+OBquOBqeWFt+S9k+eahOOBqy4uLicsIGJiU2VjdGlvbjogJ1NUUkFURUdZK1RFQU0nLCBiYkZpZWxkOiAn44OT44K444On44OzJyB9LAogICAgICAgIHsgaWQ6ICdFMTAnLCB0eXBlOiAnc2hvcnRfdGV4dCcsIHF1ZXN0aW9uOiAn5YiG6LqrQUnjgajkuIDnt5LjgavmnIDliJ3jga45MOaXpeOBp+mBlOaIkOOBl+OBn+OBhOebruaomeOBr+S9leOBp+OBmeOBi++8nycsIHBsYWNlaG9sZGVyOiAn5L6LOiDjg6Hjg7zjg6vlr77lv5zjga7oh6rli5XljJbjgIHpgLE15pys44GuU05T5oqV56i/Li4uJywgYmJTZWN0aW9uOiAnU1RSQVRFR1krVEVBTScsIGJiRmllbGQ6ICfjg5Pjgrjjg6fjg7MnIH0KICAgICAgXTsKCiAgICAgIHZhciBTRVNTSU9OX05VTUJFUiA9IDU7CgogICAgICB2YXIgR1JPV1RIX1NUQUdFUyA9IFsKICAgICAgICB7IG1pbjogMCwgbWF4OiAxOSwgbmFtZTogJ+OBn+OBvuOBlCcsIGVtb2ppOiAnXHVEODNFXHVERDVBJyB9LAogICAgICAgIHsgbWluOiAyMCwgbWF4OiAzOSwgbmFtZTogJ+OBsuOBs+WJsuOCjCcsIGVtb2ppOiAnXHVEODNEXHVEQzIzJyB9LAogICAgICAgIHsgbWluOiA0MCwgbWF4OiA1OSwgbmFtZTogJ+OBteWMlicsIGVtb2ppOiAnXHVEODNEXHVEQzI1JyB9LAogICAgICAgIHsgbWluOiA2MCwgbWF4OiA3OSwgbmFtZTogJ+OCiOOBoeOCiOOBoeWIhui6q0FJJywgZW1vamk6ICdcdUQ4M0VcdUREMTYnIH0sCiAgICAgICAgeyBtaW46IDgwLCBtYXg6IDEwMCwgbmFtZTogJ+ebuOajkuODouODvOODiScsIGVtb2ppOiAnXHVEODNFXHVEREJFJyB9CiAgICAgIF07CgogICAgICB2YXIgU0hBTExPV19QQVRURVJOUyA9IFsKICAgICAgICAv5Zuw44Gj44Gm44GE44KL5Lq6LywKICAgICAgICAv6Imv44GE44K144O844OT44K5LywKICAgICAgICAv5L6h5YCk5o+Q5L6bLywKICAgICAgICAv5oiQ6ZW344GX44Gf44GELywKICAgICAgICAv5pmu6YCa44GrLywKICAgICAgICAv54m544Gr44Gq44GELywKICAgICAgICAv44Gq44KT44Go44Gq44GPLywKICAgICAgICAv44GE44KN44GE44KNLwogICAgICBdOwoKICAgICAgdmFyIEZJVkVfU0VOU0VfSElOVCA9ICfnkIbmg7Pjga7poaflrqLjgYzliJ3jgoHjgabjgYLjgarjgZ/jgavlh7rkvJrjgYbnnqzplpPjgIHkvZXjgYzotbfjgY3jgabjgYTjgb7jgZnjgYvvvJ8nOwoKICAgICAgLyog4pSA4pSAIERPTSByZWZzIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAqLwoKICAgICAgdmFyIHFmc1NjcmVlbnMgPSB7CiAgICAgICAgd2VsY29tZTogcWZPbmUoJ1tkYXRhLXFmLXNvdWwtc2NyZWVuPSJ3ZWxjb21lIl0nKSwKICAgICAgICBxdWl6OiBxZk9uZSgnW2RhdGEtcWYtc291bC1zY3JlZW49InF1aXoiXScpLAogICAgICAgIG1pZHBvaW50OiBxZk9uZSgnW2RhdGEtcWYtc291bC1zY3JlZW49Im1pZHBvaW50Il0nKSwKICAgICAgICBjb21wbGV0ZTogcWZPbmUoJ1tkYXRhLXFmLXNvdWwtc2NyZWVuPSJjb21wbGV0ZSJdJykKICAgICAgfTsKCiAgICAgIHZhciBxZnNVSSA9IHsKICAgICAgICBzdGFydEJ1dHRvbjogcWZPbmUoJ1tkYXRhLXFmLXNvdWwtYWN0aW9uPSJzdGFydCJdJyksCiAgICAgICAgY291bnRlcjogcWZPbmUoJ1tkYXRhLXFmLXNvdWwtY291bnRlcl0nKSwKICAgICAgICBwZXJjZW50OiBxZk9uZSgnW2RhdGEtcWYtc291bC1wZXJjZW50XScpLAogICAgICAgIHByb2dyZXNzQmFyOiBxZk9uZSgnW2RhdGEtcWYtc291bC1wcm9ncmVzc10nKSwKICAgICAgICBxdWVzdGlvbkJveDogcWZPbmUoJ1tkYXRhLXFmLXNvdWwtcXVlc3Rpb24tYm94XScpLAogICAgICAgIHF1ZXN0aW9uTGFiZWw6IHFmT25lKCdbZGF0YS1xZi1zb3VsLXF1ZXN0aW9uLWxhYmVsXScpLAogICAgICAgIHF1ZXN0aW9uVGV4dDogcWZPbmUoJ1tkYXRhLXFmLXNvdWwtcXVlc3Rpb24tdGV4dF0nKSwKICAgICAgICBpbnB1dEFyZWE6IHFmT25lKCdbZGF0YS1xZi1zb3VsLWlucHV0LWFyZWFdJyksCiAgICAgICAgcmVqZWN0aW9uOiBxZk9uZSgnW2RhdGEtcWYtc291bC1yZWplY3Rpb25dJyksCiAgICAgICAgcmVqZWN0aW9uTXNnOiBxZk9uZSgnW2RhdGEtcWYtc291bC1yZWplY3Rpb24tbXNnXScpLAogICAgICAgIHJlamVjdGlvbkhpbnQ6IHFmT25lKCdbZGF0YS1xZi1zb3VsLWhpbnRdJyksCiAgICAgICAgZm9sbG93dXA6IHFmT25lKCdbZGF0YS1xZi1zb3VsLWZvbGxvd3VwXScpLAogICAgICAgIGZvbGxvd3VwSW5wdXQ6IHFmT25lKCdbZGF0YS1xZi1zb3VsLWZvbGxvd3VwLWlucHV0XScpLAogICAgICAgIG5leHRCdG46IHFmT25lKCdbZGF0YS1xZi1zb3VsLWFjdGlvbj0ibmV4dCJdJyksCiAgICAgICAgc2tpcEJ0bjogcWZPbmUoJ1tkYXRhLXFmLXNvdWwtYWN0aW9uPSJza2lwIl0nKSwKICAgICAgICBza2lwTXNnOiBxZk9uZSgnW2RhdGEtcWYtc291bC1za2lwLW1zZ10nKSwKICAgICAgICBjb250aW51ZUJ0bjogcWZPbmUoJ1tkYXRhLXFmLXNvdWwtYWN0aW9uPSJjb250aW51ZSJdJyksCiAgICAgICAgZW5kQnRuOiBxZk9uZSgnW2RhdGEtcWYtc291bC1hY3Rpb249ImVuZCJdJyksCiAgICAgICAgc2F2ZUNvbmZpcm06IHFmT25lKCdbZGF0YS1xZi1zb3VsLXNhdmUtY29uZmlybV0nKSwKICAgICAgICBncm93dGhCYWRnZTogcWZPbmUoJ1tkYXRhLXFmLXNvdWwtZ3Jvd3RoLWJhZGdlXScpLAogICAgICAgIGdyb3d0aEVtb2ppOiBxZk9uZSgnW2RhdGEtcWYtc291bC1ncm93dGgtZW1vamldJyksCiAgICAgICAgZ3Jvd3RoTmFtZTogcWZPbmUoJ1tkYXRhLXFmLXNvdWwtZ3Jvd3RoLW5hbWVdJyksCiAgICAgICAgbWlkRW1vamk6IHFmT25lKCdbZGF0YS1xZi1zb3VsLW1pZC1lbW9qaV0nKSwKICAgICAgICBtaWRHcm93dGhFbW9qaTogcWZPbmUoJ1tkYXRhLXFmLXNvdWwtbWlkLWdyb3d0aC1lbW9qaV0nKSwKICAgICAgICBtaWRHcm93dGhOYW1lOiBxZk9uZSgnW2RhdGEtcWYtc291bC1taWQtZ3Jvd3RoLW5hbWVdJyksCiAgICAgICAgY29tcGxldGVFbW9qaTogcWZPbmUoJ1tkYXRhLXFmLXNvdWwtY29tcGxldGUtZW1vamldJyksCiAgICAgICAgY29tcGxldGVUaXRsZTogcWZPbmUoJ1tkYXRhLXFmLXNvdWwtY29tcGxldGUtdGl0bGVdJyksCiAgICAgICAgY29tcGxldGVTdWI6IHFmT25lKCdbZGF0YS1xZi1zb3VsLWNvbXBsZXRlLXN1Yl0nKSwKICAgICAgICBjb21wbGV0ZUdyb3d0aEVtb2ppOiBxZk9uZSgnW2RhdGEtcWYtc291bC1jb21wbGV0ZS1ncm93dGgtZW1vamldJyksCiAgICAgICAgY29tcGxldGVHcm93dGhOYW1lOiBxZk9uZSgnW2RhdGEtcWYtc291bC1jb21wbGV0ZS1ncm93dGgtbmFtZV0nKSwKICAgICAgICBzdGF0QW5zd2VyZWQ6IHFmT25lKCdbZGF0YS1xZi1zb3VsLXN0YXQtYW5zd2VyZWRdJyksCiAgICAgICAgc3RhdFNraXBwZWQ6IHFmT25lKCdbZGF0YS1xZi1zb3VsLXN0YXQtc2tpcHBlZF0nKSwKICAgICAgICBvdmVyYWxsUGVyY2VudDogcWZPbmUoJ1tkYXRhLXFmLXNvdWwtb3ZlcmFsbC1wZXJjZW50XScpLAogICAgICAgIG92ZXJhbGxCYXI6IHFmT25lKCdbZGF0YS1xZi1zb3VsLW92ZXJhbGwtYmFyXScpLAogICAgICAgIGNvbXBsZXRlTXNnOiBxZk9uZSgnW2RhdGEtcWYtc291bC1jb21wbGV0ZS1tc2ddJyksCiAgICAgICAgcmVtYWluaW5nTXNnOiBxZk9uZSgnW2RhdGEtcWYtc291bC1yZW1haW5pbmctbXNnXScpLAogICAgICAgIHNraXBwZWRSZXZpZXc6IHFmT25lKCdbZGF0YS1xZi1zb3VsLXNraXBwZWQtcmV2aWV3XScpLAogICAgICAgIHNraXBwZWRSZXZpZXdUaXRsZTogcWZPbmUoJ1tkYXRhLXFmLXNvdWwtc2tpcHBlZC1yZXZpZXctdGl0bGVdJyksCiAgICAgICAgc2tpcHBlZFJldmlld0xpc3Q6IHFmT25lKCdbZGF0YS1xZi1zb3VsLXNraXBwZWQtcmV2aWV3LWxpc3RdJyksCiAgICAgICAgcmV2aWV3U2tpcHBlZEJ0bjogcWZPbmUoJ1tkYXRhLXFmLXNvdWwtYWN0aW9uPSJyZXZpZXctc2tpcHBlZCJdJyksCiAgICAgICAgZ2VuZXJhdGVQcm9maWxlQnRuOiBxZk9uZSgnW2RhdGEtcWYtc291bC1hY3Rpb249ImdlbmVyYXRlLXByb2ZpbGUiXScpCiAgICAgIH07CgogICAgICAvKiDilIDilIAgU3RhdGUgJiBTdG9yYWdlIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAqLwoKICAgICAgdmFyIFRPVEFMX1FVRVNUSU9OUyA9IDQ4OwogICAgICB2YXIgU0VTU0lPTl9RVUVTVElPTlMgPSAxMDsKICAgICAgdmFyIHVzZXJJZCA9IHVybFBhcmFtcy5nZXQoJ3VpZCcpIHx8ICcnOwogICAgICBpZiAoIXVzZXJJZCkgeyB0cnkgeyB1c2VySWQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncWZTb3VsV29yazpjdXJyZW50VXNlcicpIHx8ICcnOyB9IGNhdGNoKGlnKSB7fSB9CiAgICAgIGlmICghdXNlcklkKSB7CiAgICAgICAgdXNlcklkID0gJ3VfJyArIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIsIDEwKSArIERhdGUubm93KCkudG9TdHJpbmcoMzYpOwogICAgICB9CiAgICAgIHRyeSB7IGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdxZlNvdWxXb3JrOmN1cnJlbnRVc2VyJywgdXNlcklkKTsgfSBjYXRjaChpZykge30KCiAgICAgIHZhciBTVE9SQUdFX0tFWSA9ICdxZlNvdWxXb3JrOnYxOicgKyB1c2VySWQ7CgogICAgICBmdW5jdGlvbiBsb2FkU3RvcmFnZSgpIHsKICAgICAgICB0cnkgewogICAgICAgICAgdmFyIHJhdyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFNUT1JBR0VfS0VZKTsKICAgICAgICAgIGlmIChyYXcpIHsKICAgICAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UocmF3KTsKICAgICAgICAgIH0KICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAvKiBpZ25vcmUgKi8KICAgICAgICB9CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIH0KCiAgICAgIGZ1bmN0aW9uIGNyZWF0ZURlZmF1bHRTdG9yYWdlKCkgewogICAgICAgIHZhciBheGlzU2NvcmVzID0ge307CiAgICAgICAgdmFyIGF4aXNLZXlzID0gWydob2xkJywgJ2RlbGVnJywgJ2FpJywgJ2JsaW5kJ107CiAgICAgICAgdmFyIGk7CiAgICAgICAgZm9yIChpID0gMDsgaSA8IGF4aXNLZXlzLmxlbmd0aDsgaSArPSAxKSB7CiAgICAgICAgICB2YXIgdiA9IHVybFBhcmFtcy5nZXQoYXhpc0tleXNbaV0pOwogICAgICAgICAgaWYgKHYpIHsKICAgICAgICAgICAgYXhpc1Njb3Jlc1theGlzS2V5c1tpXV0gPSBwYXJzZUludCh2LCAxMCkgfHwgMDsKICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiB7CiAgICAgICAgICB2ZXJzaW9uOiAnMS4wLjAnLAogICAgICAgICAgdXNlcklkOiB1c2VySWQsCiAgICAgICAgICBxdWl6VHlwZTogdXJsUGFyYW1zLmdldCgndHlwZScpIHx8ICd1bmtub3duJywKICAgICAgICAgIGF4aXNTY29yZXM6IGF4aXNTY29yZXMsCiAgICAgICAgICBwcm9ncmVzczogewogICAgICAgICAgICBjdXJyZW50U2Vzc2lvbjogU0VTU0lPTl9OVU1CRVIsCiAgICAgICAgICAgIGNvbXBsZXRlZFNlc3Npb25zOiBbXSwKICAgICAgICAgICAgYW5zd2VyZWRDb3VudDogMCwKICAgICAgICAgICAgdG90YWxDb3VudDogVE9UQUxfUVVFU1RJT05TLAogICAgICAgICAgICBhbGxDb21wbGV0ZTogZmFsc2UKICAgICAgICAgIH0sCiAgICAgICAgICBhbnN3ZXJzOiB7fQogICAgICAgIH07CiAgICAgIH0KCiAgICAgIGZ1bmN0aW9uIHNhdmVTdG9yYWdlKGRhdGEpIHsKICAgICAgICB0cnkgewogICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oU1RPUkFHRV9LRVksIEpTT04uc3RyaW5naWZ5KGRhdGEpKTsKICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAvKiBpZ25vcmUgKi8KICAgICAgICB9CiAgICAgIH0KCiAgICAgIHZhciBzdG9yYWdlRGF0YSA9IGxvYWRTdG9yYWdlKCkgfHwgY3JlYXRlRGVmYXVsdFN0b3JhZ2UoKTsKCiAgICAgIC8qIOKUgOKUgCBHcm93dGggU3RhZ2Ug4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAICovCgogICAgICBmdW5jdGlvbiBnZXRHcm93dGhTdGFnZShhbnN3ZXJlZENvdW50KSB7CiAgICAgICAgdmFyIHBjdCA9IE1hdGgucm91bmQoKGFuc3dlcmVkQ291bnQgLyBUT1RBTF9RVUVTVElPTlMpICogMTAwKTsKICAgICAgICB2YXIgaTsKICAgICAgICBmb3IgKGkgPSAwOyBpIDwgR1JPV1RIX1NUQUdFUy5sZW5ndGg7IGkgKz0gMSkgewogICAgICAgICAgaWYgKHBjdCA+PSBHUk9XVEhfU1RBR0VTW2ldLm1pbiAmJiBwY3QgPD0gR1JPV1RIX1NUQUdFU1tpXS5tYXgpIHsKICAgICAgICAgICAgcmV0dXJuIEdST1dUSF9TVEFHRVNbaV07CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiBHUk9XVEhfU1RBR0VTWzBdOwogICAgICB9CgogICAgICBmdW5jdGlvbiB1cGRhdGVHcm93dGhEaXNwbGF5KCkgewogICAgICAgIHZhciBzdGFnZSA9IGdldEdyb3d0aFN0YWdlKHN0b3JhZ2VEYXRhLnByb2dyZXNzLmFuc3dlcmVkQ291bnQpOwogICAgICAgIGlmIChxZnNVSS5ncm93dGhFbW9qaSkgewogICAgICAgICAgcWZzVUkuZ3Jvd3RoRW1vamkudGV4dENvbnRlbnQgPSBzdGFnZS5lbW9qaTsKICAgICAgICB9CiAgICAgICAgaWYgKHFmc1VJLmdyb3d0aE5hbWUpIHsKICAgICAgICAgIHFmc1VJLmdyb3d0aE5hbWUudGV4dENvbnRlbnQgPSBzdGFnZS5uYW1lOwogICAgICAgIH0KICAgICAgfQoKICAgICAgLyog4pSA4pSAIFF1aXogU3RhdGUg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAICovCgogICAgICB2YXIgcWZzU3RhdGUgPSB7CiAgICAgICAgaW5kZXg6IDAsCiAgICAgICAgcmVqZWN0aW9uQ291bnQ6IDAsCiAgICAgICAgc2VsZWN0ZWRDaG9pY2U6IG51bGwsCiAgICAgICAgc2hvd2luZ01pZHBvaW50OiBmYWxzZQogICAgICB9OwoKICAgICAgLyog4pSA4pSAIFNjcmVlbiBOYXZpZ2F0aW9uIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAqLwoKICAgICAgZnVuY3Rpb24gcWZzU2hvd1NjcmVlbihuYW1lKSB7CiAgICAgICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhxZnNTY3JlZW5zKTsKICAgICAgICB2YXIgaTsKICAgICAgICBmb3IgKGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkgKz0gMSkgewogICAgICAgICAgcWZzU2NyZWVuc1trZXlzW2ldXS5jbGFzc0xpc3QucmVtb3ZlKCdxZi1zb3VsLWFjdGl2ZScpOwogICAgICAgIH0KICAgICAgICBxZnNTY3JlZW5zW25hbWVdLmNsYXNzTGlzdC5hZGQoJ3FmLXNvdWwtYWN0aXZlJyk7CiAgICAgIH0KCiAgICAgIC8qIOKUgOKUgCBTaGFsbG93IERldGVjdGlvbiDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgKi8KCiAgICAgIGZ1bmN0aW9uIGlzU2hhbGxvdyh0ZXh0KSB7CiAgICAgICAgaWYgKCF0ZXh0IHx8IHRleHQubGVuZ3RoIDwgMjApIHsKICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgICAgICB2YXIgaTsKICAgICAgICBmb3IgKGkgPSAwOyBpIDwgU0hBTExPV19QQVRURVJOUy5sZW5ndGg7IGkgKz0gMSkgewogICAgICAgICAgaWYgKFNIQUxMT1dfUEFUVEVSTlNbaV0udGVzdCh0ZXh0KSkgewogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICB9CgogICAgICAvKiDilIDilIAgUHJvZ3Jlc3Mg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAICovCgogICAgICBmdW5jdGlvbiB1cGRhdGVQcm9ncmVzcygpIHsKICAgICAgICB2YXIgY3VycmVudCA9IHFmc1N0YXRlLmluZGV4ICsgMTsKICAgICAgICB2YXIgcGN0ID0gTWF0aC5yb3VuZCgoY3VycmVudCAvIFNFU1NJT05fUVVFU1RJT05TKSAqIDEwMCk7CiAgICAgICAgcWZzVUkuY291bnRlci50ZXh0Q29udGVudCA9ICdRJyArIGN1cnJlbnQgKyAnIC8gJyArIFNFU1NJT05fUVVFU1RJT05TOwogICAgICAgIHFmc1VJLnBlcmNlbnQudGV4dENvbnRlbnQgPSBwY3QgKyAnJSc7CiAgICAgICAgcWZzVUkucHJvZ3Jlc3NCYXIuc3R5bGUud2lkdGggPSBwY3QgKyAnJSc7CiAgICAgIH0KCiAgICAgIC8qIOKUgOKUgCBSZW5kZXIgUXVlc3Rpb24g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAICovCgogICAgICBmdW5jdGlvbiByZW5kZXJRdWVzdGlvbigpIHsKICAgICAgICB2YXIgaXRlbSA9IFFGX1NPVUxfUVVFU1RJT05TW3Fmc1N0YXRlLmluZGV4XTsKICAgICAgICBxZnNTdGF0ZS5yZWplY3Rpb25Db3VudCA9IDA7CiAgICAgICAgcWZzU3RhdGUuc2VsZWN0ZWRDaG9pY2UgPSBudWxsOwoKICAgICAgICB1cGRhdGVQcm9ncmVzcygpOwoKICAgICAgICBxZnNVSS5xdWVzdGlvbkxhYmVsLnRleHRDb250ZW50ID0gaXRlbS5iYlNlY3Rpb24gKyAnID4gJyArIGl0ZW0uYmJGaWVsZDsKICAgICAgICBxZnNVSS5xdWVzdGlvblRleHQudGV4dENvbnRlbnQgPSBpdGVtLnF1ZXN0aW9uOwogICAgICAgIHFmc1VJLmlucHV0QXJlYS5pbm5lckhUTUwgPSAnJzsKICAgICAgICBxZnNVSS5yZWplY3Rpb24uY2xhc3NMaXN0LnJlbW92ZSgncWYtc291bC1yZWplY3Rpb24tdmlzaWJsZScpOwogICAgICAgIHFmc1VJLnJlamVjdGlvbk1zZy50ZXh0Q29udGVudCA9ICcnOwogICAgICAgIHFmc1VJLnJlamVjdGlvbkhpbnQudGV4dENvbnRlbnQgPSAnJzsKICAgICAgICBxZnNVSS5mb2xsb3d1cElucHV0LnZhbHVlID0gJyc7CiAgICAgICAgcWZzVUkuc2tpcEJ0bi5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgIHFmc1VJLnNraXBNc2cuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgICBxZnNVSS5uZXh0QnRuLnN0eWxlLmRpc3BsYXkgPSAnJzsKCiAgICAgICAgLyogUmVzdG9yZSBleGlzdGluZyBhbnN3ZXIgaWYgYW55ICovCiAgICAgICAgdmFyIGV4aXN0aW5nID0gc3RvcmFnZURhdGEuYW5zd2Vyc1tpdGVtLmlkXTsKCiAgICAgICAgaWYgKGl0ZW0udHlwZSA9PT0gJ2Nob2ljZScpIHsKICAgICAgICAgIHFmc1VJLmZvbGxvd3VwLnN0eWxlLmRpc3BsYXkgPSAnJzsKICAgICAgICAgIHZhciBpOwogICAgICAgICAgZm9yIChpID0gMDsgaSA8IGl0ZW0ub3B0aW9ucy5sZW5ndGg7IGkgKz0gMSkgewogICAgICAgICAgICAoZnVuY3Rpb24gKG9wdGlvblRleHQsIGlkeCkgewogICAgICAgICAgICAgIHZhciBidG4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTsKICAgICAgICAgICAgICBidG4udHlwZSA9ICdidXR0b24nOwogICAgICAgICAgICAgIGJ0bi5jbGFzc05hbWUgPSAncWYtc291bC1idG4gcWYtc291bC1idG4tb3B0aW9uJzsKICAgICAgICAgICAgICBidG4udGV4dENvbnRlbnQgPSBvcHRpb25UZXh0OwogICAgICAgICAgICAgIGlmIChleGlzdGluZyAmJiBleGlzdGluZy52YWx1ZSA9PT0gb3B0aW9uVGV4dCkgewogICAgICAgICAgICAgICAgYnRuLmNsYXNzTGlzdC5hZGQoJ3FmLXNvdWwtYnRuLW9wdGlvbi1zZWxlY3RlZCcpOwogICAgICAgICAgICAgICAgcWZzU3RhdGUuc2VsZWN0ZWRDaG9pY2UgPSBvcHRpb25UZXh0OwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBidG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICB2YXIgYWxsT3B0cyA9IHFmc1VJLmlucHV0QXJlYS5xdWVyeVNlbGVjdG9yQWxsKCcucWYtc291bC1idG4tb3B0aW9uJyk7CiAgICAgICAgICAgICAgICB2YXIgajsKICAgICAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBhbGxPcHRzLmxlbmd0aDsgaiArPSAxKSB7CiAgICAgICAgICAgICAgICAgIGFsbE9wdHNbal0uY2xhc3NMaXN0LnJlbW92ZSgncWYtc291bC1idG4tb3B0aW9uLXNlbGVjdGVkJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBidG4uY2xhc3NMaXN0LmFkZCgncWYtc291bC1idG4tb3B0aW9uLXNlbGVjdGVkJyk7CiAgICAgICAgICAgICAgICBxZnNTdGF0ZS5zZWxlY3RlZENob2ljZSA9IG9wdGlvblRleHQ7CiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgcWZzVUkuaW5wdXRBcmVhLmFwcGVuZENoaWxkKGJ0bik7CiAgICAgICAgICAgIH0pKGl0ZW0ub3B0aW9uc1tpXSwgaSk7CiAgICAgICAgICB9CiAgICAgICAgICBpZiAoZXhpc3RpbmcgJiYgZXhpc3Rpbmcud2h5KSB7CiAgICAgICAgICAgIHFmc1VJLmZvbGxvd3VwSW5wdXQudmFsdWUgPSBleGlzdGluZy53aHk7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAvKiBzaG9ydF90ZXh0IG9yIGxvbmdfdGV4dCAqLwogICAgICAgIHFmc1VJLmZvbGxvd3VwLnN0eWxlLmRpc3BsYXkgPSAnJzsKICAgICAgICB2YXIgbWF4TGVuID0gaXRlbS50eXBlID09PSAnc2hvcnRfdGV4dCcgPyAxNjAgOiAxMDAwOwoKICAgICAgICBpZiAoaXRlbS50eXBlID09PSAnc2hvcnRfdGV4dCcpIHsKICAgICAgICAgIHZhciBpbnAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpOwogICAgICAgICAgaW5wLnR5cGUgPSAndGV4dCc7CiAgICAgICAgICBpbnAuY2xhc3NOYW1lID0gJ3FmLXNvdWwtaW5wdXQnOwogICAgICAgICAgaW5wLnBsYWNlaG9sZGVyID0gaXRlbS5wbGFjZWhvbGRlciB8fCAnJzsKICAgICAgICAgIGlucC5tYXhMZW5ndGggPSBtYXhMZW47CiAgICAgICAgICBpbnAuc2V0QXR0cmlidXRlKCdkYXRhLXFmLXNvdWwtbWFpbi1pbnB1dCcsICcnKTsKICAgICAgICAgIGlmIChleGlzdGluZyAmJiBleGlzdGluZy52YWx1ZSkgewogICAgICAgICAgICBpbnAudmFsdWUgPSBleGlzdGluZy52YWx1ZTsKICAgICAgICAgIH0KICAgICAgICAgIHFmc1VJLmlucHV0QXJlYS5hcHBlbmRDaGlsZChpbnApOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICB2YXIgdGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZXh0YXJlYScpOwogICAgICAgICAgdGEuY2xhc3NOYW1lID0gJ3FmLXNvdWwtdGV4dGFyZWEnOwogICAgICAgICAgdGEucGxhY2Vob2xkZXIgPSBpdGVtLnBsYWNlaG9sZGVyIHx8ICcnOwogICAgICAgICAgdGEubWF4TGVuZ3RoID0gbWF4TGVuOwogICAgICAgICAgdGEuc2V0QXR0cmlidXRlKCdkYXRhLXFmLXNvdWwtbWFpbi1pbnB1dCcsICcnKTsKICAgICAgICAgIGlmIChleGlzdGluZyAmJiBleGlzdGluZy52YWx1ZSkgewogICAgICAgICAgICB0YS52YWx1ZSA9IGV4aXN0aW5nLnZhbHVlOwogICAgICAgICAgfQogICAgICAgICAgcWZzVUkuaW5wdXRBcmVhLmFwcGVuZENoaWxkKHRhKTsKCiAgICAgICAgICB2YXIgY2MgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgICAgICAgIGNjLmNsYXNzTmFtZSA9ICdxZi1zb3VsLWNoYXItY291bnQnOwogICAgICAgICAgY2Muc2V0QXR0cmlidXRlKCdkYXRhLXFmLXNvdWwtY2hhci1jb3VudCcsICcnKTsKICAgICAgICAgIGNjLnRleHRDb250ZW50ID0gKGV4aXN0aW5nICYmIGV4aXN0aW5nLnZhbHVlID8gZXhpc3RpbmcudmFsdWUubGVuZ3RoIDogMCkgKyAnIC8gJyArIG1heExlbjsKICAgICAgICAgIHFmc1VJLmlucHV0QXJlYS5hcHBlbmRDaGlsZChjYyk7CgogICAgICAgICAgdGEuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHZhciBsZW4gPSB0YS52YWx1ZS5sZW5ndGg7CiAgICAgICAgICAgIGNjLnRleHRDb250ZW50ID0gbGVuICsgJyAvICcgKyBtYXhMZW47CiAgICAgICAgICAgIGlmIChsZW4gPiBtYXhMZW4gKiAwLjkpIHsKICAgICAgICAgICAgICBjYy5jbGFzc0xpc3QuYWRkKCdxZi1zb3VsLWNoYXItd2FybicpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIGNjLmNsYXNzTGlzdC5yZW1vdmUoJ3FmLXNvdWwtY2hhci13YXJuJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0pOwogICAgICAgIH0KCiAgICAgICAgaWYgKGV4aXN0aW5nICYmIGV4aXN0aW5nLndoeSkgewogICAgICAgICAgcWZzVUkuZm9sbG93dXBJbnB1dC52YWx1ZSA9IGV4aXN0aW5nLndoeTsKICAgICAgICB9CgogICAgICAgIC8qIFJlc3RvcmUgcmVqZWN0aW9uIHN0YXRlICovCiAgICAgICAgaWYgKGV4aXN0aW5nICYmIGV4aXN0aW5nLnJlamVjdGlvbkNvdW50KSB7CiAgICAgICAgICBxZnNTdGF0ZS5yZWplY3Rpb25Db3VudCA9IGV4aXN0aW5nLnJlamVjdGlvbkNvdW50OwogICAgICAgICAgaWYgKHFmc1N0YXRlLnJlamVjdGlvbkNvdW50ID49IDIpIHsKICAgICAgICAgICAgcWZzVUkuc2tpcEJ0bi5zdHlsZS5kaXNwbGF5ID0gJyc7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CgogICAgICAvKiDilIDilIAgQW5zd2VyIExvZ2ljIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAqLwoKICAgICAgZnVuY3Rpb24gZ2V0Q3VycmVudFZhbHVlKCkgewogICAgICAgIHZhciBpdGVtID0gUUZfU09VTF9RVUVTVElPTlNbcWZzU3RhdGUuaW5kZXhdOwogICAgICAgIGlmIChpdGVtLnR5cGUgPT09ICdjaG9pY2UnKSB7CiAgICAgICAgICByZXR1cm4gcWZzU3RhdGUuc2VsZWN0ZWRDaG9pY2UgfHwgJyc7CiAgICAgICAgfQogICAgICAgIHZhciBtYWluSW5wdXQgPSBxZk9uZSgnW2RhdGEtcWYtc291bC1tYWluLWlucHV0XScpOwogICAgICAgIHJldHVybiBtYWluSW5wdXQgPyBtYWluSW5wdXQudmFsdWUudHJpbSgpIDogJyc7CiAgICAgIH0KCiAgICAgIGZ1bmN0aW9uIHNhdmVBbnN3ZXIodmFsdWUsIHNraXBwZWQpIHsKICAgICAgICB2YXIgaXRlbSA9IFFGX1NPVUxfUVVFU1RJT05TW3Fmc1N0YXRlLmluZGV4XTsKICAgICAgICB2YXIgd2h5VmFsID0gcWZzVUkuZm9sbG93dXBJbnB1dC52YWx1ZS50cmltKCk7CgogICAgICAgIHN0b3JhZ2VEYXRhLmFuc3dlcnNbaXRlbS5pZF0gPSB7CiAgICAgICAgICB0eXBlOiBpdGVtLnR5cGUsCiAgICAgICAgICB2YWx1ZTogdmFsdWUsCiAgICAgICAgICB3aHk6IHdoeVZhbCwKICAgICAgICAgIHNraXBwZWQ6ICEhc2tpcHBlZCwKICAgICAgICAgIHJlamVjdGlvbkNvdW50OiBxZnNTdGF0ZS5yZWplY3Rpb25Db3VudCwKICAgICAgICAgIHVwZGF0ZWRBdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpCiAgICAgICAgfTsKCiAgICAgICAgLyogUmVjb3VudCBhbnN3ZXJlZCAqLwogICAgICAgIHZhciBjb3VudCA9IDA7CiAgICAgICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhzdG9yYWdlRGF0YS5hbnN3ZXJzKTsKICAgICAgICB2YXIgaTsKICAgICAgICBmb3IgKGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkgKz0gMSkgewogICAgICAgICAgaWYgKCFzdG9yYWdlRGF0YS5hbnN3ZXJzW2tleXNbaV1dLnNraXBwZWQpIHsKICAgICAgICAgICAgY291bnQgKz0gMTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgc3RvcmFnZURhdGEucHJvZ3Jlc3MuYW5zd2VyZWRDb3VudCA9IGNvdW50OwoKICAgICAgICBzYXZlU3RvcmFnZShzdG9yYWdlRGF0YSk7CiAgICAgIH0KCiAgICAgIGZ1bmN0aW9uIGhhbmRsZU5leHQoKSB7CiAgICAgICAgdmFyIGl0ZW0gPSBRRl9TT1VMX1FVRVNUSU9OU1txZnNTdGF0ZS5pbmRleF07CiAgICAgICAgdmFyIHZhbHVlID0gZ2V0Q3VycmVudFZhbHVlKCk7CgogICAgICAgIC8qIENob2ljZTogbXVzdCBzZWxlY3QgKi8KICAgICAgICBpZiAoaXRlbS50eXBlID09PSAnY2hvaWNlJyAmJiAhdmFsdWUpIHsKICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIC8qIFRleHQ6IHNoYWxsb3cgZGV0ZWN0aW9uICovCiAgICAgICAgaWYgKGl0ZW0udHlwZSAhPT0gJ2Nob2ljZScpIHsKICAgICAgICAgIGlmIChpc1NoYWxsb3codmFsdWUpICYmIHFmc1N0YXRlLnJlamVjdGlvbkNvdW50IDwgMikgewogICAgICAgICAgICBxZnNTdGF0ZS5yZWplY3Rpb25Db3VudCArPSAxOwogICAgICAgICAgICBxZnNVSS5yZWplY3Rpb24uY2xhc3NMaXN0LmFkZCgncWYtc291bC1yZWplY3Rpb24tdmlzaWJsZScpOwoKICAgICAgICAgICAgaWYgKHFmc1N0YXRlLnJlamVjdGlvbkNvdW50ID09PSAxKSB7CiAgICAgICAgICAgICAgcWZzVUkucmVqZWN0aW9uTXNnLnRleHRDb250ZW50ID0gJ+OCguOBhuWwkeOBl+WFt+S9k+eahOOBq+aVmeOBiOOBpuOBj+OBoOOBleOBhOOAguaDheaZr+OBjOa1ruOBi+OBtuOCiOOBhuOBquWbnuetlOOBjOOAgeOBguOBquOBn+OBruWIhui6q0FJ44KS5by344GP44GX44G+44GZIFx1RDgzRFx1RENBQSc7CiAgICAgICAgICAgICAgcWZzVUkucmVqZWN0aW9uSGludC50ZXh0Q29udGVudCA9IEZJVkVfU0VOU0VfSElOVDsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICBxZnNVSS5yZWplY3Rpb25Nc2cudGV4dENvbnRlbnQgPSAn44GT44GT44Gv5aSn5LqL44Gq44Od44Kk44Oz44OI44Gn44GZ44CC44Gn44KC44CB5LuK44GZ44GQ562U44GI44GM5Ye644Gq44GP44Gm44KC5aSn5LiI5aSr44CC5b6M44Gn5oi744Gj44Gm44GP44KL44GT44Go44KC44Gn44GN44G+44GZJzsKICAgICAgICAgICAgICBxZnNVSS5yZWplY3Rpb25IaW50LnRleHRDb250ZW50ID0gJyc7CiAgICAgICAgICAgICAgcWZzVUkuc2tpcEJ0bi5zdHlsZS5kaXNwbGF5ID0gJyc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgc2F2ZUFuc3dlcih2YWx1ZSwgZmFsc2UpOwogICAgICAgIGFkdmFuY2VRdWVzdGlvbigpOwogICAgICB9CgogICAgICBmdW5jdGlvbiBoYW5kbGVTa2lwKCkgewogICAgICAgIHNhdmVBbnN3ZXIoJycsIHRydWUpOwogICAgICAgIHFmc1VJLnNraXBNc2cuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CiAgICAgICAgICBxZnNVSS5za2lwTXNnLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICAgICBhZHZhbmNlUXVlc3Rpb24oKTsKICAgICAgICB9LCAxMjAwKTsKICAgICAgfQoKICAgICAgZnVuY3Rpb24gYWR2YW5jZVF1ZXN0aW9uKCkgewogICAgICAgIHFmc1N0YXRlLmluZGV4ICs9IDE7CgogICAgICAgIC8qIE1pZHBvaW50IGFmdGVyIFE1IChpbmRleCA1KSAqLwogICAgICAgIGlmIChxZnNTdGF0ZS5pbmRleCA9PT0gNSAmJiAhcWZzU3RhdGUuc2hvd2luZ01pZHBvaW50KSB7CiAgICAgICAgICBxZnNTdGF0ZS5zaG93aW5nTWlkcG9pbnQgPSB0cnVlOwogICAgICAgICAgc2hvd01pZHBvaW50KCk7CiAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBpZiAocWZzU3RhdGUuaW5kZXggPj0gU0VTU0lPTl9RVUVTVElPTlMpIHsKICAgICAgICAgIHNob3dDb21wbGV0ZSgpOwogICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgbGVhdmVBbmRSZW5kZXIoKTsKICAgICAgfQoKICAgICAgZnVuY3Rpb24gbGVhdmVBbmRSZW5kZXIoKSB7CiAgICAgICAgcWZzVUkucXVlc3Rpb25Cb3guY2xhc3NMaXN0LmFkZCgncWYtc291bC1sZWF2aW5nJyk7CiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CiAgICAgICAgICBxZnNVSS5xdWVzdGlvbkJveC5jbGFzc0xpc3QucmVtb3ZlKCdxZi1zb3VsLWxlYXZpbmcnKTsKICAgICAgICAgIHJlbmRlclF1ZXN0aW9uKCk7CiAgICAgICAgfSwgMjQwKTsKICAgICAgfQoKICAgICAgLyog4pSA4pSAIE1pZHBvaW50IOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAqLwoKICAgICAgZnVuY3Rpb24gc2hvd01pZHBvaW50KCkgewogICAgICAgIHZhciBzdGFnZSA9IGdldEdyb3d0aFN0YWdlKHN0b3JhZ2VEYXRhLnByb2dyZXNzLmFuc3dlcmVkQ291bnQpOwogICAgICAgIHFmc1VJLm1pZEVtb2ppLnRleHRDb250ZW50ID0gc3RhZ2UuZW1vamk7CiAgICAgICAgcWZzVUkubWlkR3Jvd3RoRW1vamkudGV4dENvbnRlbnQgPSBzdGFnZS5lbW9qaTsKICAgICAgICBxZnNVSS5taWRHcm93dGhOYW1lLnRleHRDb250ZW50ID0gc3RhZ2UubmFtZTsKICAgICAgICBxZnNTaG93U2NyZWVuKCdtaWRwb2ludCcpOwogICAgICB9CgogICAgICAvKiDilIDilIAgU2tpcHBlZCBRdWVzdGlvbnMgKEFsbCBTZXNzaW9ucykg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAICovCgogICAgICBmdW5jdGlvbiBnZXRTa2lwcGVkUXVlc3Rpb25zKCkgewogICAgICAgIHZhciBza2lwcGVkID0gW107CiAgICAgICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhzdG9yYWdlRGF0YS5hbnN3ZXJzKTsKICAgICAgICB2YXIgaTsKICAgICAgICBmb3IgKGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkgKz0gMSkgewogICAgICAgICAgaWYgKHN0b3JhZ2VEYXRhLmFuc3dlcnNba2V5c1tpXV0uc2tpcHBlZCkgewogICAgICAgICAgICBza2lwcGVkLnB1c2goa2V5c1tpXSk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiBza2lwcGVkOwogICAgICB9CgogICAgICAvKiDilIDilIAgQ29tcGxldGUg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAICovCgogICAgICBmdW5jdGlvbiBzaG93Q29tcGxldGUoKSB7CiAgICAgICAgLyogTWFyayBzZXNzaW9uIGNvbXBsZXRlZCAqLwogICAgICAgIGlmIChzdG9yYWdlRGF0YS5wcm9ncmVzcy5jb21wbGV0ZWRTZXNzaW9ucy5pbmRleE9mKFNFU1NJT05fTlVNQkVSKSA9PT0gLTEpIHsKICAgICAgICAgIHN0b3JhZ2VEYXRhLnByb2dyZXNzLmNvbXBsZXRlZFNlc3Npb25zLnB1c2goU0VTU0lPTl9OVU1CRVIpOwogICAgICAgIH0KCiAgICAgICAgLyogTWFyayBhbGwgY29tcGxldGUgKi8KICAgICAgICBzdG9yYWdlRGF0YS5wcm9ncmVzcy5hbGxDb21wbGV0ZSA9IHRydWU7CgogICAgICAgIHNhdmVTdG9yYWdlKHN0b3JhZ2VEYXRhKTsKCiAgICAgICAgdmFyIHN0YWdlID0gZ2V0R3Jvd3RoU3RhZ2Uoc3RvcmFnZURhdGEucHJvZ3Jlc3MuYW5zd2VyZWRDb3VudCk7CgogICAgICAgIC8qIENlbGVicmF0aW9uIGhlYWRlciAqLwogICAgICAgIHFmc1VJLmNvbXBsZXRlRW1vamkudGV4dENvbnRlbnQgPSAnXHVEODNDXHVERjg5JzsKICAgICAgICBxZnNVSS5jb21wbGV0ZVRpdGxlLnRleHRDb250ZW50ID0gJ1x1NTE2OFx1MDAzNFx1MDAzOFx1NTU0RiBcdTVCOENcdTRFODZcdUZGMDEnOwogICAgICAgIHFmc1VJLmNvbXBsZXRlU3ViLnRleHRDb250ZW50ID0gJ1x1NTIwNlx1OEVBQiBBSVx1MzA2RVx1NjgzOFx1MzBDN1x1MzBGQ1x1MzBCRlx1MzA0Q1x1NjNDM1x1MzA0NFx1MzA3RVx1MzA1N1x1MzA1Ric7CgogICAgICAgIHFmc1VJLmNvbXBsZXRlR3Jvd3RoRW1vamkudGV4dENvbnRlbnQgPSBzdGFnZS5lbW9qaTsKICAgICAgICBxZnNVSS5jb21wbGV0ZUdyb3d0aE5hbWUudGV4dENvbnRlbnQgPSBzdGFnZS5uYW1lOwoKICAgICAgICAvKiBTdGF0czogY291bnQgQUxMIHNlc3Npb25zICovCiAgICAgICAgdmFyIHRvdGFsQW5zd2VyZWQgPSAwOwogICAgICAgIHZhciB0b3RhbFNraXBwZWQgPSAwOwogICAgICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMoc3RvcmFnZURhdGEuYW5zd2Vycyk7CiAgICAgICAgdmFyIGk7CiAgICAgICAgZm9yIChpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpICs9IDEpIHsKICAgICAgICAgIGlmIChzdG9yYWdlRGF0YS5hbnN3ZXJzW2tleXNbaV1dLnNraXBwZWQpIHsKICAgICAgICAgICAgdG90YWxTa2lwcGVkICs9IDE7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB0b3RhbEFuc3dlcmVkICs9IDE7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHFmc1VJLnN0YXRBbnN3ZXJlZC50ZXh0Q29udGVudCA9IHRvdGFsQW5zd2VyZWQ7CiAgICAgICAgcWZzVUkuc3RhdFNraXBwZWQudGV4dENvbnRlbnQgPSB0b3RhbFNraXBwZWQ7CgogICAgICAgIC8qIE92ZXJhbGwgcHJvZ3Jlc3MgKi8KICAgICAgICB2YXIgb3ZlcmFsbFBjdCA9IE1hdGgucm91bmQoKHN0b3JhZ2VEYXRhLnByb2dyZXNzLmFuc3dlcmVkQ291bnQgLyBUT1RBTF9RVUVTVElPTlMpICogMTAwKTsKICAgICAgICBxZnNVSS5vdmVyYWxsUGVyY2VudC50ZXh0Q29udGVudCA9IG92ZXJhbGxQY3QgKyAnJSc7CiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CiAgICAgICAgICBxZnNVSS5vdmVyYWxsQmFyLnN0eWxlLndpZHRoID0gb3ZlcmFsbFBjdCArICclJzsKICAgICAgICB9LCAxMDApOwoKICAgICAgICAvKiBNZXNzYWdlcyAqLwogICAgICAgIHFmc1VJLmNvbXBsZXRlTXNnLnRleHRDb250ZW50ID0gJ1x1NTIwNlx1OEVBQiBBSVx1MzA2RVx1NjgzOFx1MzBDN1x1MzBGQ1x1MzBCRlx1MzA0Q1x1NjNDM1x1MzA0NFx1MzA3RVx1MzA1N1x1MzA1Rlx1MzAwMlx1NkIyMVx1MzA2Rlx1NTIxRFx1NjcxRlx1MzBEN1x1MzBFRFx1MzBENVx1MzBBMVx1MzBBNFx1MzBFQlx1MzA5Mlx1NzUxRlx1NjIxMFx1MzA1N1x1MzA3RVx1MzA1OVx1MzAwMic7CiAgICAgICAgcWZzVUkucmVtYWluaW5nTXNnLnRleHRDb250ZW50ID0gJ1x1MzA0QVx1MzA2NFx1MzA0Qlx1MzA4Q1x1MzA1NVx1MzA3RVx1MzA2N1x1MzA1N1x1MzA1Rlx1RkYwMVx1NTE2OFx1MDAzNVx1MzBCQlx1MzBDM1x1MzBCN1x1MzBFN1x1MzBGM1x1MzA5Mlx1NUI4Q1x1OEQ3MFx1MzA1N1x1MzA3RVx1MzA1N1x1MzA1Rlx1MzAwMlx1NTIwNlx1OEVBQiBBSVx1MzA0Q1x1MzA0Mlx1MzA2QVx1MzA1Rlx1MzA2RVx1NTM5Rlx1NzBCOVx1MzA5Mlx1OEE5RVx1MzA4Q1x1MzA4Qlx1MzA4OFx1MzA0Nlx1MzA2Qlx1MzA2QVx1MzA4QVx1MzA3RVx1MzA1OVx1MzAwMic7CgogICAgICAgIC8qIFNraXBwZWQgcXVlc3Rpb25zIHJldmlldyAqLwogICAgICAgIHZhciBza2lwcGVkTGlzdCA9IGdldFNraXBwZWRRdWVzdGlvbnMoKTsKICAgICAgICBpZiAoc2tpcHBlZExpc3QubGVuZ3RoID4gMCkgewogICAgICAgICAgcWZzVUkuc2tpcHBlZFJldmlldy5zdHlsZS5kaXNwbGF5ID0gJyc7CiAgICAgICAgICBxZnNVSS5za2lwcGVkUmV2aWV3VGl0bGUudGV4dENvbnRlbnQgPSAnXHUzMEI5XHUzMEFEXHUzMEMzXHUzMEQ3XHUzMDU3XHUzMDVGXHU4Q0VBXHU1NTRGOiAnICsgc2tpcHBlZExpc3Quam9pbignLCAnKSArICcgKCcgKyBza2lwcGVkTGlzdC5sZW5ndGggKyAnXHU1NTRGKSc7CiAgICAgICAgICBxZnNVSS5za2lwcGVkUmV2aWV3TGlzdC50ZXh0Q29udGVudCA9ICcnOwogICAgICAgICAgaWYgKHFmc1VJLnJldmlld1NraXBwZWRCdG4pIHsKICAgICAgICAgICAgcWZzVUkucmV2aWV3U2tpcHBlZEJ0bi5zdHlsZS5kaXNwbGF5ID0gJyc7CiAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHFmc1VJLnNraXBwZWRSZXZpZXcuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgICAgIGlmIChxZnNVSS5yZXZpZXdTa2lwcGVkQnRuKSB7CiAgICAgICAgICAgIHFmc1VJLnJldmlld1NraXBwZWRCdG4uc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHFmc1Nob3dTY3JlZW4oJ2NvbXBsZXRlJyk7CiAgICAgIH0KCiAgICAgIC8qIOKUgOKUgCBGaW5kIEZpcnN0IFVuYW5zd2VyZWQg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAICovCgogICAgICBmdW5jdGlvbiBmaW5kRmlyc3RVbmFuc3dlcmVkKCkgewogICAgICAgIHZhciBpOwogICAgICAgIGZvciAoaSA9IDA7IGkgPCBRRl9TT1VMX1FVRVNUSU9OUy5sZW5ndGg7IGkgKz0gMSkgewogICAgICAgICAgdmFyIHFpZCA9IFFGX1NPVUxfUVVFU1RJT05TW2ldLmlkOwogICAgICAgICAgaWYgKCFzdG9yYWdlRGF0YS5hbnN3ZXJzW3FpZF0pIHsKICAgICAgICAgICAgcmV0dXJuIGk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiAtMTsKICAgICAgfQoKICAgICAgLyog4pSA4pSAIEluaXRpYWxpemF0aW9uIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAqLwoKICAgICAgdXBkYXRlR3Jvd3RoRGlzcGxheSgpOwoKICAgICAgLyogQ2hlY2sgaWYgc2Vzc2lvbiBhbHJlYWR5IGNvbXBsZXRlZCAqLwogICAgICB2YXIgYWxsQW5zd2VyZWQgPSB0cnVlOwogICAgICB2YXIgazsKICAgICAgZm9yIChrID0gMDsgayA8IFFGX1NPVUxfUVVFU1RJT05TLmxlbmd0aDsgayArPSAxKSB7CiAgICAgICAgaWYgKCFzdG9yYWdlRGF0YS5hbnN3ZXJzW1FGX1NPVUxfUVVFU1RJT05TW2tdLmlkXSkgewogICAgICAgICAgYWxsQW5zd2VyZWQgPSBmYWxzZTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgfQoKICAgICAgaWYgKGFsbEFuc3dlcmVkICYmIHN0b3JhZ2VEYXRhLnByb2dyZXNzLmNvbXBsZXRlZFNlc3Npb25zLmluZGV4T2YoU0VTU0lPTl9OVU1CRVIpICE9PSAtMSkgewogICAgICAgIC8qIEFscmVhZHkgY29tcGxldGVkIC0gc2hvdyBjb21wbGV0ZSBzY3JlZW4gKi8KICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgIHNob3dDb21wbGV0ZSgpOwogICAgICAgIH0sIDEwMCk7CiAgICAgIH0KCiAgICAgIC8qIOKUgOKUgCBFdmVudCBMaXN0ZW5lcnMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAICovCgogICAgICBxZnNVSS5zdGFydEJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHsKICAgICAgICB2YXIgcmVzdW1lSW5kZXggPSBmaW5kRmlyc3RVbmFuc3dlcmVkKCk7CiAgICAgICAgaWYgKHJlc3VtZUluZGV4ID09PSAtMSkgewogICAgICAgICAgLyogQWxsIGFuc3dlcmVkICovCiAgICAgICAgICBxZnNTdGF0ZS5pbmRleCA9IDA7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHFmc1N0YXRlLmluZGV4ID0gcmVzdW1lSW5kZXg7CiAgICAgICAgICAvKiBJZiBwYXN0IG1pZHBvaW50LCBtYXJrIGFzIHNob3duICovCiAgICAgICAgICBpZiAocWZzU3RhdGUuaW5kZXggPj0gNSkgewogICAgICAgICAgICBxZnNTdGF0ZS5zaG93aW5nTWlkcG9pbnQgPSB0cnVlOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBxZnNTaG93U2NyZWVuKCdxdWl6Jyk7CiAgICAgICAgcmVuZGVyUXVlc3Rpb24oKTsKICAgICAgfSk7CgogICAgICBxZnNVSS5uZXh0QnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogICAgICAgIGhhbmRsZU5leHQoKTsKICAgICAgfSk7CgogICAgICBxZnNVSS5za2lwQnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogICAgICAgIGhhbmRsZVNraXAoKTsKICAgICAgfSk7CgogICAgICBxZnNVSS5jb250aW51ZUJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHsKICAgICAgICBxZnNTaG93U2NyZWVuKCdxdWl6Jyk7CiAgICAgICAgcmVuZGVyUXVlc3Rpb24oKTsKICAgICAgfSk7CgogICAgICBxZnNVSS5lbmRCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgcWZzVUkuc2F2ZUNvbmZpcm0uc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CiAgICAgIH0pOwoKICAgICAgaWYgKHFmc1VJLnJldmlld1NraXBwZWRCdG4pIHsKICAgICAgICBxZnNVSS5yZXZpZXdTa2lwcGVkQnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgdmFyIHJldmlldyA9IHFmc1VJLnNraXBwZWRSZXZpZXc7CiAgICAgICAgICBpZiAocmV2aWV3KSB7CiAgICAgICAgICAgIGlmIChyZXZpZXcuc3R5bGUuZGlzcGxheSA9PT0gJ25vbmUnKSB7CiAgICAgICAgICAgICAgcmV2aWV3LnN0eWxlLmRpc3BsYXkgPSAnJzsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICByZXZpZXcuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0pOwogICAgICB9CgogICAgICB2YXIgcHJvZmlsZUJ0biA9IHFmT25lKCdbZGF0YS1xZi1zb3VsLWFjdGlvbj0iZ2VuZXJhdGUtcHJvZmlsZSJdJyk7CiAgICAgIGlmIChwcm9maWxlQnRuKSB7CiAgICAgICAgcHJvZmlsZUJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uIChlKSB7CiAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICcvcHJvZmlsZS1nZW5lcmF0ZS8/dWlkPScgKyBlbmNvZGVVUklDb21wb25lbnQoc3RvcmFnZURhdGEudXNlcklkKTsKICAgICAgICB9KTsKICAgICAgfQogICAgfSkoKTsKICA=
