{"data":{"format":"sidebud-widget-pack","formatVersion":2,"exportedAt":"2026-09-26T11:44:53.582Z","manifest":{"id":"app.sidebud.claude-code-sessions","mcp":{"env":{"SIDEBUD_HOME":"{{env.RVA_HOME}}","CLAUDE_CONFIG_DIR":"{{env.CLAUDE_CONFIG_DIR}}","CLAUDE_CODE_COMMAND":"{{setting.claudeCommand}}","CLAUDE_SESSIONS_START_FOLDERS":"{{setting.startFolders}}","CLAUDE_SESSIONS_RUNNING_MINUTES":"{{setting.runningMinutes}}"},"args":["server/index.mjs"],"command":"node","transport":"stdio"},"data":[{"id":"sessions","tool":"list_sessions","arguments":{"limit":20},"refreshSeconds":20},{"id":"projects","tool":"list_projects","arguments":{"limit":10},"refreshSeconds":60}],"logo":{"kind":"file","path":"logo.png","source":"https://claude.ai/apple-touch-icon.png"},"name":"Claude Code sessions","tile":{"size":"large"},"badge":{"text":"{{sessions/finishedRecently}}","tone":"success"},"setup":{"steps":["Install Claude Code 2.1.0 or newer and sign in (claude --version prints the version; claude update updates it). The pack uses your own Claude login and settings.","Needs Node.js 22 or newer, which the companion already runs on. Nothing else to install: the pack reads Claude Code's session files (~/.claude/projects, or CLAUDE_CONFIG_DIR) read-only.","To let the agent start new sessions, set Folders for new sessions to the folders it may use; until then starting is off. Continuing a session works in that session's own folder.","Sessions started or continued from here run headless: they cannot answer Claude's permission prompts, so tools your Claude settings do not already allow are refused."],"detect":{"anyPath":["~/.claude/projects"]},"prerequisites":[{"name":"Claude Code","command":"claude"},{"name":"Node.js","command":"node"}]},"skill":{"path":"SKILL.md"},"author":{"name":"Sidebud"},"blocks":[{"type":"stats","items":[{"tone":"info","label":"Running","value":"{{sessions/running|default:0}}"},{"tone":"warning","label":"Waiting","value":"{{sessions/waiting|default:0}}"},{"tone":"success","label":"Finished","value":"{{sessions/finishedRecently|default:0}}"}]},{"item":{"key":"{{item/id}}","time":"{{item/lastActivityAt}}","title":"{{item/title|truncate:60}}","status":"{{item/activity}}","subtitle":"{{item/location}}","statusTones":{"running":"info","needs you":"warning"}},"type":"list","items":"{{sessions/sessions|sort:-state=waiting,-state=running,-lastActivityAt}}","limit":8,"title":"Sessions","emptyText":"No Claude Code sessions yet"},{"item":{"key":"{{item/id}}","time":"{{item/lastActivityAt}}","title":"{{item/name}}","status":"{{item/activity}}","subtitle":"{{item/latestSession|truncate:50}}","statusTones":{"running":"info","needs you":"warning"}},"type":"list","items":"{{projects/projects}}","limit":6,"title":"Projects","emptyText":"No projects yet"}],"detail":{"tool":"read_session","message":{"at":"{{item/at}}","role":"{{item/role}}","text":"{{item/content}}"},"messages":"{{detail/messages}}","arguments":{"limit":6,"session_id":"{{item/id}}"}},"glance":{"stats":[{"tone":"info","label":"Running","value":"{{sessions/running|default:0}}"},{"tone":"neutral","label":"Today","value":"{{sessions/today|default:0}}"}]},"notify":[{"id":"sessions","key":"{{item/id}}","items":"{{sessions/sessions}}","rules":[{"text":"Claude finished “{{item/title}}” in {{item/project}}.","state":"done","priority":"finished","withLatest":true},{"text":"Claude is waiting for you in {{item/project}} (“{{item/title}}”).","state":"needs_you","priority":"needs_you"}],"state":"{{item/turn}}","category":"agents"}],"license":"MIT","listing":{"account":"Claude Code on this computer","category":"agents","homepage":"https://code.claude.com/docs","connectsTo":"Claude Code's session files and the claude command on this computer, through the server in this pack"},"preview":{"at":"2026-09-25T09:00:00.000Z","data":{"projects":{"count":3,"projects":[{"id":"5b0e7a52-1f7c-4d7e-9a57-3c1f2b6d8e01","name":"portfolio","running":1,"activity":"running","sessions":5,"latestSession":"Add dark mode to the settings page","lastActivityAt":"2026-09-25T08:59:00.000Z"},{"id":"8c2d41f0-6a3b-4f9e-b1d2-7e4a9c0f5a12","name":"photo-site","running":0,"activity":"needs you","sessions":2,"latestSession":"Migrate the image pipeline to WebP","lastActivityAt":"2026-09-25T08:52:00.000Z"},{"id":"d91f3e6a-2b7c-4a0d-8e5f-1c3b7a9d2e34","name":"shop-api","running":0,"activity":"","sessions":3,"latestSession":"Fix the flaky checkout test","lastActivityAt":"2026-09-25T08:40:00.000Z"}]},"sessions":{"count":4,"today":4,"running":1,"waiting":1,"sessions":[{"id":"5b0e7a52-1f7c-4d7e-9a57-3c1f2b6d8e01","turn":"working","state":"running","title":"Add dark mode to the settings page","project":"portfolio","activity":"running","location":"portfolio · dark-mode","lastActivityAt":"2026-09-25T08:59:00.000Z"},{"id":"8c2d41f0-6a3b-4f9e-b1d2-7e4a9c0f5a12","turn":"needs_you","state":"waiting","title":"Migrate the image pipeline to WebP","project":"photo-site","activity":"needs you","location":"photo-site · main","lastActivityAt":"2026-09-25T08:52:00.000Z"},{"id":"d91f3e6a-2b7c-4a0d-8e5f-1c3b7a9d2e34","turn":"done","state":"idle","title":"Fix the flaky checkout test","project":"shop-api","activity":"","location":"shop-api · fix-checkout","lastActivityAt":"2026-09-25T08:40:00.000Z"},{"id":"0a4c6e8b-9d1f-4b3a-a5c7-e9f1b3d5a7c9","turn":"","state":"idle","title":"Write release notes for 2.3","project":"portfolio","activity":"","location":"portfolio · main","lastActivityAt":"2026-09-25T06:15:00.000Z"}],"finishedRecently":1}}},"version":"1.0.1","controls":[{"id":"status","kind":"prompt","label":"What's Claude working on?","prompt":"What's Claude Code working on right now, and what did it finish recently?","default":true},{"id":"waiting","kind":"prompt","label":"Anything waiting on me?","prompt":"Is any Claude Code session waiting for me?","default":true},{"id":"projects","kind":"prompt","label":"Projects","prompt":"Which projects has Claude Code worked on today, and where did each one get to?"}],"settings":[{"id":"startFolders","type":"text","label":"Folders for new sessions","default":"","description":"Absolute folders (comma-separated) where the agent may start a new Claude Code session, including their subfolders. Empty turns starting sessions off."},{"id":"runningMinutes","type":"select","label":"Running window","default":"5","options":[{"id":"2","label":"2 minutes"},{"id":"5","label":"5 minutes"},{"id":"10","label":"10 minutes"},{"id":"15","label":"15 minutes"}],"description":"Used only when Claude Code cannot list its open sessions (claude agents --json, older versions): a session counts as running, and is never resumed, while its file changed this recently."},{"id":"claudeCommand","type":"text","label":"Claude command","default":"claude","description":"The claude program to run, when it is not on the companion's PATH (for example /Users/you/.local/bin/claude)."}],"subtitle":"{{sessions/running|default:0}} running · {{sessions/waiting|default:0}} waiting on you · {{sessions/today|default:0}} today","description":"The Claude Code sessions you started in a terminal, IDE, or the desktop app: what is running, what is waiting on you, and what just finished, by project. The execution agent can read a session, continue one that is not open elsewhere, or start one in a folder you allow.","permissions":{"reach":["computer"],"tools":[{"name":"list_sessions","access":"read","description":"Recent sessions and which are running or waiting"},{"name":"list_projects","access":"read","description":"Folders Claude Code has worked in"},{"name":"read_session","access":"read","description":"A session's latest messages, trimmed for voice"},{"name":"send_message","access":"write","description":"Continue a session that is not open elsewhere"},{"name":"start_session","access":"write","description":"Start a session in an allowed folder"},{"name":"stop_session","access":"write","description":"Stop a run this pack started"}]},"schemaVersion":3,"refreshSeconds":20,"contentHash":"sha256:d4d115c01c72c49603346e603579ba9586ff7b31f1a93baf4ecc3efcfa8cb2d2"},"files":{"logo.png":"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","server/index.mjs":"Ly8gQ2xhdWRlIENvZGUgc2Vzc2lvbnMgTUNQIHNlcnZlciBmb3IgdGhpcyBwYWNrOiB0aGUgQ2xhdWRlIENvZGUgc2Vzc2lvbnMgdGhlCi8vIHVzZXIgc3RhcnRlZCBpbiBhIHRlcm1pbmFsLCBhbiBJREUsIG9yIHRoZSBkZXNrdG9wIGFwcCwgcmVhZCBmcm9tIENsYXVkZQovLyBDb2RlJ3Mgb3duIGZpbGVzIChyZWFkLW9ubHkpIGFuZCBzdGVlcmVkIHRocm91Z2ggdGhlIGBjbGF1ZGVgIENMSS4KLy8KLy8gU2Vzc2lvbnMgYXJlIGA8Y29uZmlnPi9wcm9qZWN0cy88Zm9sZGVyIHdpdGggc2VwYXJhdG9ycyBhcyAtPi88aWQ+Lmpzb25sYCwKLy8gb25lIEpTT04gcmVjb3JkIHBlciBsaW5lLCB3aGVyZSA8Y29uZmlnPiBpcyBDTEFVREVfQ09ORklHX0RJUiBvciB+Ly5jbGF1ZGUuCi8vIFdoaWNoIHNlc3Npb25zIGFyZSBvcGVuIHJpZ2h0IG5vdyBjb21lcyBmcm9tIGBjbGF1ZGUgYWdlbnRzIC0tanNvbmAsIHRoZQovLyBDTEkncyBsaXN0IG9mIGxpdmUgQ2xhdWRlIHByb2Nlc3NlcyAod2l0aCBidXN5L2lkbGUvd2FpdGluZyBzdGF0dXMpOyB3aGVuCi8vIHRoYXQgY29tbWFuZCBpcyB1bmF2YWlsYWJsZSAob2xkZXIgQ2xhdWRlIENvZGUpLCBhIHNlc3Npb24gY291bnRzIGFzIHJ1bm5pbmcKLy8gd2hpbGUgaXRzIGZpbGUgY2hhbmdlZCB3aXRoaW4gdGhlIHJ1bm5pbmcgd2luZG93LgovLwovLyBFbnZpcm9ubWVudCAoZnJvbSB0aGUgcGFjaydzIHNldHRpbmdzKTogQ0xBVURFX0NPREVfQ09NTUFORCAoZGVmYXVsdAovLyBgY2xhdWRlYCksIENMQVVERV9TRVNTSU9OU19TVEFSVF9GT0xERVJTIChmb2xkZXJzIHN0YXJ0X3Nlc3Npb24gbWF5IHVzZSwKLy8gY29tbWEgb3IgbmV3bGluZSBzZXBhcmF0ZWQ7IG5vbmUgbWVhbnMgc3RhcnRpbmcgaXMgb2ZmKSwKLy8gQ0xBVURFX1NFU1NJT05TX1JVTk5JTkdfTUlOVVRFUyAodGhlIGZhbGxiYWNrIHdpbmRvdywgZGVmYXVsdCA1KSwgYW5kCi8vIFNJREVCVURfSE9NRSAodGhlIGNvbXBhbmlvbidzIGhvbWUsIHdob3NlIG93biBhZ2VudCBzZXNzaW9ucyBhcmUgaGlkZGVuKS4KaW1wb3J0IHsgZXhlY0ZpbGUsIHNwYXduIH0gZnJvbSAnbm9kZTpjaGlsZF9wcm9jZXNzJwppbXBvcnQgeyByYW5kb21VVUlEIH0gZnJvbSAnbm9kZTpjcnlwdG8nCmltcG9ydCB7IGNsb3NlU3luYywgZXhpc3RzU3luYywgb3BlblN5bmMsIHJlYWRkaXJTeW5jLCByZWFkU3luYywgcmVhbHBhdGhTeW5jLCBzdGF0U3luYyB9IGZyb20gJ25vZGU6ZnMnCmltcG9ydCB7IGhvbWVkaXIgfSBmcm9tICdub2RlOm9zJwppbXBvcnQgeyBiYXNlbmFtZSwgaXNBYnNvbHV0ZSwgam9pbiwgcmVsYXRpdmUsIHJlc29sdmUgfSBmcm9tICdub2RlOnBhdGgnCmltcG9ydCB7IHBhdGhUb0ZpbGVVUkwgfSBmcm9tICdub2RlOnVybCcKaW1wb3J0IHsgYXJnLCBzZXJ2ZSB9IGZyb20gJy4vbWNwLm1qcycKCmNvbnN0IHJlYWQgPSB7IHJlYWRPbmx5SGludDogdHJ1ZSwgZGVzdHJ1Y3RpdmVIaW50OiBmYWxzZSwgaWRlbXBvdGVudEhpbnQ6IHRydWUgfQpjb25zdCB3b3JrID0geyByZWFkT25seUhpbnQ6IGZhbHNlLCBkZXN0cnVjdGl2ZUhpbnQ6IGZhbHNlLCBpZGVtcG90ZW50SGludDogZmFsc2UgfQpjb25zdCBTRVNTSU9OX0lEID0gL15bMC05YS1mXXs4fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXsxMn0kL2kKLyoqIE9sZGVzdCBDbGF1ZGUgQ29kZSB0aGlzIHNlcnZlciBoYXMgYmVlbiBjaGVja2VkIGFnYWluc3QgZm9yIHdyaXRlcyAoc2Vzc2lvbiByZWdpc3RyeSwgYC0tc2Vzc2lvbi1pZGAsIHByb21wdCBvbiBzdGRpbikuICovCmV4cG9ydCBjb25zdCBNSU5fQ0xBVURFX1ZFUlNJT04gPSAnMi4xLjAnCi8qKiBBIHNlc3Npb24gd2hvc2UgdHVybiBlbmRlZCB0aGlzIHJlY2VudGx5IGlzICJkb25lIjogaXRzIGVuZCBpcyBzdGlsbCBuZXdzLiAqLwpjb25zdCBET05FX1dJTkRPV19NUyA9IDE1ICogNjBfMDAwCi8qKiAiRmluaXNoZWQgcmVjZW50bHkiLCB0aGUgd2lkZ2V0J3MgYmFkZ2UuICovCmNvbnN0IFJFQ0VOVF9NUyA9IDYwICogNjBfMDAwCmNvbnN0IEhFQURfQllURVMgPSAxMjggKiAxMDI0CmNvbnN0IFRBSUxfQllURVMgPSAyNTYgKiAxMDI0CmNvbnN0IE1BWF9SRUFEX0JZVEVTID0gOCAqIDEwMjQgKiAxMDI0Cgpjb25zdCBjbGlwID0gKHRleHQsIG1heCkgPT4gKHR5cGVvZiB0ZXh0ID09PSAnc3RyaW5nJyA/ICh0ZXh0Lmxlbmd0aCA+IG1heCA/IGAke3RleHQuc2xpY2UoMCwgbWF4IC0gMSkudHJpbUVuZCgpfeKApmAgOiB0ZXh0KSA6IG51bGwpCmNvbnN0IGlzbyA9IChtcykgPT4gKE51bWJlci5pc0Zpbml0ZShtcykgJiYgbXMgPiAwID8gbmV3IERhdGUobXMpLnRvSVNPU3RyaW5nKCkgOiBudWxsKQpjb25zdCBsb3dlciA9ICh0ZXh0KSA9PiAodGV4dCA/PyAnJykudG9Mb3dlckNhc2UoKQoKLyoqIFRleHQgYXMgaXQgcmVhZHMgYWxvdWQ6IGNvZGUgYmxvY2tzIGFuZCBtYXJrdXAgY29sbGFwc2VkLCB3aGl0ZXNwYWNlIGZvbGRlZCwgY2xpcHBlZC4gKi8KZXhwb3J0IGZ1bmN0aW9uIGZvclZvaWNlKHRleHQsIG1heCA9IDcwMCkgewogIGlmICh0eXBlb2YgdGV4dCAhPT0gJ3N0cmluZycpIHJldHVybiAnJwogIGNvbnN0IHBsYWluID0gdGV4dAogICAgLnJlcGxhY2UoL2BgYFtcc1xTXSo/KGBgYHwkKS9nLCAnIChjb2RlKSAnKQogICAgLnJlcGxhY2UoLzxzeXN0ZW0tcmVtaW5kZXI+W1xzXFNdKj88XC9zeXN0ZW0tcmVtaW5kZXI+L2csICcgJykKICAgIC5yZXBsYWNlKC8hXFtbXlxdXSpcXVwoW14pXSpcKS9nLCAnICcpCiAgICAucmVwbGFjZSgvXFsoW15cXV0rKVxdXChbXildKlwpL2csICckMScpCiAgICAucmVwbGFjZSgvXlxzezAsM30oI3sxLDZ9fFstKitdfFxkK1wuKVxzKy9nbSwgJycpCiAgICAucmVwbGFjZSgvWypfYF17MSwzfS9nLCAnJykKICAgIC5yZXBsYWNlKC9ccysvZywgJyAnKQogICAgLnRyaW0oKQogIHJldHVybiBjbGlwKHBsYWluLCBtYXgpID8/ICcnCn0KCi8qKiBXaGF0IHRoZSB1c2VyIHR5cGVkIGluIG9uZSBgdXNlcmAgcmVjb3JkLCBvciBudWxsIGZvciB0b29sIHJlc3VsdHMsIHJlbWluZGVycywgYW5kIGNvbW1hbmQgb3V0cHV0LiAqLwpmdW5jdGlvbiB1c2VyVGV4dChyZWNvcmQpIHsKICBpZiAocmVjb3JkLmlzTWV0YSB8fCByZWNvcmQuaXNDb21wYWN0U3VtbWFyeSB8fCByZWNvcmQuaXNWaXNpYmxlSW5UcmFuc2NyaXB0T25seSB8fCByZWNvcmQudG9vbFVzZVJlc3VsdCAhPT0gdW5kZWZpbmVkKSByZXR1cm4gbnVsbAogIGNvbnN0IGNvbnRlbnQgPSByZWNvcmQubWVzc2FnZT8uY29udGVudAogIGNvbnN0IHRleHQgPSB0eXBlb2YgY29udGVudCA9PT0gJ3N0cmluZycgPyBjb250ZW50IDogQXJyYXkuaXNBcnJheShjb250ZW50KSA/IGNvbnRlbnQuZmlsdGVyKChibG9jaykgPT4gYmxvY2s/LnR5cGUgPT09ICd0ZXh0JykubWFwKChibG9jaykgPT4gYmxvY2sudGV4dCkuam9pbignXG4nKSA6ICcnCiAgaWYgKCF0ZXh0LnRyaW0oKSkgcmV0dXJuIG51bGwKICBjb25zdCBjb21tYW5kID0gdGV4dC5tYXRjaCgvPGNvbW1hbmQtbmFtZT4oW148XSopPFwvY29tbWFuZC1uYW1lPi8pCiAgaWYgKGNvbW1hbmQpIHsKICAgIGNvbnN0IGFyZ3MgPSB0ZXh0Lm1hdGNoKC88Y29tbWFuZC1hcmdzPihbXjxdKik8XC9jb21tYW5kLWFyZ3M+Lyk/LlsxXT8udHJpbSgpCiAgICByZXR1cm4gYCR7Y29tbWFuZFsxXS50cmltKCl9JHthcmdzID8gYCAke2FyZ3N9YCA6ICcnfWAKICB9CiAgaWYgKC9eXHMqPChsb2NhbC1jb21tYW5kLXN0ZG91dHxsb2NhbC1jb21tYW5kLXN0ZGVycnxsb2NhbC1jb21tYW5kLWNhdmVhdHxiYXNoLXN0ZG91dHxiYXNoLXN0ZGVycik+Ly50ZXN0KHRleHQpKSByZXR1cm4gbnVsbAogIGNvbnN0IGNsZWFuZWQgPSB0ZXh0LnJlcGxhY2UoLzxzeXN0ZW0tcmVtaW5kZXI+W1xzXFNdKj88XC9zeXN0ZW0tcmVtaW5kZXI+L2csICcnKS50cmltKCkKICByZXR1cm4gY2xlYW5lZCAmJiAhL15cW1JlcXVlc3QgaW50ZXJydXB0ZWQgYnkgdXNlci8udGVzdChjbGVhbmVkKSA/IGNsZWFuZWQgOiBudWxsCn0KCi8qKiBUaGUgdGV4dCBibG9ja3Mgb2Ygb25lIGBhc3Npc3RhbnRgIHJlY29yZCAodGhpbmtpbmcgYW5kIHRvb2wgY2FsbHMgbGVmdCBvdXQpLiAqLwpjb25zdCBhc3Npc3RhbnRUZXh0ID0gKHJlY29yZCkgPT4gKEFycmF5LmlzQXJyYXkocmVjb3JkLm1lc3NhZ2U/LmNvbnRlbnQpID8gcmVjb3JkLm1lc3NhZ2UuY29udGVudC5maWx0ZXIoKGJsb2NrKSA9PiBibG9jaz8udHlwZSA9PT0gJ3RleHQnICYmIGJsb2NrLnRleHQ/LnRyaW0oKSkubWFwKChibG9jaykgPT4gYmxvY2sudGV4dCkuam9pbignXG4nKSA6ICcnKQoKLyoqIENvbXBsZXRlIEpTT04gbGluZXMgaW4gYSBieXRlIHJhbmdlIG9mIGEgZmlsZTsgYSBsaW5lIGN1dCBieSB0aGUgcmFuZ2UncyBzdGFydCBpcyBkcm9wcGVkLiAqLwpmdW5jdGlvbiByZWFkTGluZXMocGF0aCwgc3RhcnQsIGVuZCkgewogIGNvbnN0IGxlbmd0aCA9IE1hdGgubWF4KDAsIGVuZCAtIHN0YXJ0KQogIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5hbGxvYyhsZW5ndGgpCiAgY29uc3QgZmQgPSBvcGVuU3luYyhwYXRoLCAncicpCiAgdHJ5IHsKICAgIHJlYWRTeW5jKGZkLCBidWZmZXIsIDAsIGxlbmd0aCwgc3RhcnQpCiAgfSBmaW5hbGx5IHsKICAgIGNsb3NlU3luYyhmZCkKICB9CiAgY29uc3QgbGluZXMgPSBidWZmZXIudG9TdHJpbmcoJ3V0ZjgnKS5zcGxpdCgnXG4nKQogIGlmIChzdGFydCA+IDApIGxpbmVzLnNoaWZ0KCkKICBpZiAoZW5kIDwgc3RhdFN5bmMocGF0aCkuc2l6ZSkgbGluZXMucG9wKCkKICBjb25zdCByZWNvcmRzID0gW10KICBmb3IgKGNvbnN0IGxpbmUgb2YgbGluZXMpIHsKICAgIGlmICghbGluZS50cmltKCkpIGNvbnRpbnVlCiAgICB0cnkgewogICAgICByZWNvcmRzLnB1c2goSlNPTi5wYXJzZShsaW5lKSkKICAgIH0gY2F0Y2ggewogICAgICAvLyBBIGxpbmUgY3V0IGJ5IHRoZSByYW5nZSBvciBzdGlsbCBiZWluZyB3cml0dGVuLgogICAgfQogIH0KICByZXR1cm4gcmVjb3Jkcwp9Cgpjb25zdCB0aW1lc3RhbXBPZiA9IChyZWNvcmQpID0+IHsKICBjb25zdCBtcyA9IHR5cGVvZiByZWNvcmQudGltZXN0YW1wID09PSAnc3RyaW5nJyA/IERhdGUucGFyc2UocmVjb3JkLnRpbWVzdGFtcCkgOiBOYU4KICByZXR1cm4gTnVtYmVyLmlzRmluaXRlKG1zKSA/IG1zIDogbnVsbAp9CgovKiogQWJzb2x1dGUgcGF0aHMgZnJvbSBhIGNvbW1hLSBvciBuZXdsaW5lLXNlcGFyYXRlZCBsaXN0LCB3aXRoIGB+YCBleHBhbmRlZDsgcmVsYXRpdmUgZW50cmllcyBhcmUgZHJvcHBlZC4gKi8KZXhwb3J0IGZ1bmN0aW9uIGZvbGRlckxpc3QodmFsdWUsIGhvbWUgPSBob21lZGlyKCkpIHsKICByZXR1cm4gU3RyaW5nKHZhbHVlID8/ICcnKQogICAgLnNwbGl0KC9bXG4sO10vKQogICAgLm1hcCgoZW50cnkpID0+IGVudHJ5LnRyaW0oKSkKICAgIC5maWx0ZXIoQm9vbGVhbikKICAgIC5tYXAoKGVudHJ5KSA9PiAoZW50cnkgPT09ICd+JyA/IGhvbWUgOiBlbnRyeS5zdGFydHNXaXRoKCd+LycpIHx8IGVudHJ5LnN0YXJ0c1dpdGgoJ35cXCcpID8gam9pbihob21lLCBlbnRyeS5zbGljZSgyKSkgOiBlbnRyeSkpCiAgICAuZmlsdGVyKChlbnRyeSkgPT4gaXNBYnNvbHV0ZShlbnRyeSkpCn0KCmNvbnN0IGluc2lkZSA9IChmb2xkZXIsIHJvb3QpID0+IHsKICBjb25zdCBwYXRoID0gcmVsYXRpdmUocm9vdCwgZm9sZGVyKQogIHJldHVybiBwYXRoID09PSAnJyB8fCAoISFwYXRoICYmICFwYXRoLnN0YXJ0c1dpdGgoJy4uJykgJiYgIWlzQWJzb2x1dGUocGF0aCkpCn0KCi8qKgogKiBDbGF1ZGUgQ29kZSdzIHNlc3Npb24gZmlsZXMsIHJlYWQtb25seS4gYGNvbmZpZ0RpcmAgaXMgQ2xhdWRlJ3MgY29uZmlnIGZvbGRlcjsKICogc2Vzc2lvbnMgd2hvc2UgZm9sZGVyIGlzIGluc2lkZSBvbmUgb2YgYGhpZGRlblJvb3RzYCBhcmUgbGVmdCBvdXQgKHRoZQogKiBjb21wYW5pb24ncyBvd24gYWdlbnQpLiBNZXRhZGF0YSBpcyBjYWNoZWQgcGVyIGZpbGUgYnkgc2l6ZSBhbmQgdGltZSwgc28gYQogKiByZWZyZXNoIHJlYWRzIG9ubHkgZmlsZXMgdGhhdCBjaGFuZ2VkLgogKi8KZXhwb3J0IGZ1bmN0aW9uIGNsYXVkZVN0b3JlKHsgY29uZmlnRGlyLCBoaWRkZW5Sb290cyA9IFtdIH0pIHsKICBjb25zdCBwcm9qZWN0c0RpciA9IGpvaW4oY29uZmlnRGlyLCAncHJvamVjdHMnKQogIGNvbnN0IGNhY2hlID0gbmV3IE1hcCgpCgogIGNvbnN0IGZpbGVzID0gKCkgPT4gewogICAgaWYgKCFleGlzdHNTeW5jKHByb2plY3RzRGlyKSkgcmV0dXJuIFtdCiAgICBjb25zdCBmb3VuZCA9IFtdCiAgICBmb3IgKGNvbnN0IGRpciBvZiByZWFkZGlyU3luYyhwcm9qZWN0c0RpciwgeyB3aXRoRmlsZVR5cGVzOiB0cnVlIH0pKSB7CiAgICAgIGlmICghZGlyLmlzRGlyZWN0b3J5KCkpIGNvbnRpbnVlCiAgICAgIGNvbnN0IGZvbGRlciA9IGpvaW4ocHJvamVjdHNEaXIsIGRpci5uYW1lKQogICAgICBsZXQgZW50cmllcwogICAgICB0cnkgewogICAgICAgIGVudHJpZXMgPSByZWFkZGlyU3luYyhmb2xkZXIsIHsgd2l0aEZpbGVUeXBlczogdHJ1ZSB9KQogICAgICB9IGNhdGNoIHsKICAgICAgICBjb250aW51ZQogICAgICB9CiAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykgewogICAgICAgIGlmICghZW50cnkuaXNGaWxlKCkgfHwgIWVudHJ5Lm5hbWUuZW5kc1dpdGgoJy5qc29ubCcpKSBjb250aW51ZQogICAgICAgIGNvbnN0IGlkID0gZW50cnkubmFtZS5zbGljZSgwLCAtJy5qc29ubCcubGVuZ3RoKQogICAgICAgIGlmICghU0VTU0lPTl9JRC50ZXN0KGlkKSkgY29udGludWUKICAgICAgICB0cnkgewogICAgICAgICAgY29uc3Qgc3RhdCA9IHN0YXRTeW5jKGpvaW4oZm9sZGVyLCBlbnRyeS5uYW1lKSkKICAgICAgICAgIGZvdW5kLnB1c2goeyBpZCwgcGF0aDogam9pbihmb2xkZXIsIGVudHJ5Lm5hbWUpLCBwcm9qZWN0RGlyOiBkaXIubmFtZSwgc2l6ZTogc3RhdC5zaXplLCBtdGltZU1zOiBzdGF0Lm10aW1lTXMgfSkKICAgICAgICB9IGNhdGNoIHsKICAgICAgICAgIC8vIFJlbW92ZWQgd2hpbGUgbGlzdGluZy4KICAgICAgICB9CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBmb3VuZAogIH0KCiAgLyoqIE9uZSBzZXNzaW9uJ3MgbWV0YWRhdGEgZnJvbSB0aGUgc3RhcnQgYW5kIGVuZCBvZiBpdHMgZmlsZTogZm9sZGVyLCBicmFuY2gsIHRpdGxlLCBmaXJzdCByZXF1ZXN0LCBhbmQgbGFzdCBhY3Rpdml0eS4gKi8KICBjb25zdCBtZXRhID0gKGZpbGUpID0+IHsKICAgIGNvbnN0IGNhY2hlZCA9IGNhY2hlLmdldChmaWxlLnBhdGgpCiAgICBpZiAoY2FjaGVkICYmIGNhY2hlZC5zaXplID09PSBmaWxlLnNpemUgJiYgY2FjaGVkLm10aW1lTXMgPT09IGZpbGUubXRpbWVNcykgcmV0dXJuIGNhY2hlZC5tZXRhCiAgICBjb25zdCBoZWFkID0gcmVhZExpbmVzKGZpbGUucGF0aCwgMCwgTWF0aC5taW4oZmlsZS5zaXplLCBIRUFEX0JZVEVTKSkKICAgIGNvbnN0IHRhaWwgPSBmaWxlLnNpemUgPiBIRUFEX0JZVEVTID8gcmVhZExpbmVzKGZpbGUucGF0aCwgTWF0aC5tYXgoSEVBRF9CWVRFUywgZmlsZS5zaXplIC0gVEFJTF9CWVRFUyksIGZpbGUuc2l6ZSkgOiBbXQogICAgY29uc3QgcmVzdWx0ID0geyBjd2Q6IG51bGwsIGJyYW5jaDogbnVsbCwgZmlyc3RQcm9tcHQ6IG51bGwsIHN0YXJ0ZWRBdDogbnVsbCwgbGFzdEFjdGl2aXR5QXQ6IG51bGwsIGN1c3RvbVRpdGxlOiBudWxsLCBhaVRpdGxlOiBudWxsLCBzdW1tYXJ5OiBudWxsLCBsYXN0UHJvbXB0OiBudWxsLCBlbnRyeXBvaW50OiBudWxsLCB2ZXJzaW9uOiBudWxsLCBsYXN0Um9sZTogbnVsbCwgbWVzc2FnZXM6IDAgfQogICAgZm9yIChjb25zdCByZWNvcmQgb2YgWy4uLmhlYWQsIC4uLnRhaWxdKSB7CiAgICAgIGlmIChyZWNvcmQuaXNTaWRlY2hhaW4pIGNvbnRpbnVlCiAgICAgIGlmICh0eXBlb2YgcmVjb3JkLmN3ZCA9PT0gJ3N0cmluZycgJiYgIXJlc3VsdC5jd2QpIHJlc3VsdC5jd2QgPSByZWNvcmQuY3dkCiAgICAgIGlmICh0eXBlb2YgcmVjb3JkLmdpdEJyYW5jaCA9PT0gJ3N0cmluZycgJiYgcmVjb3JkLmdpdEJyYW5jaCAmJiByZWNvcmQuZ2l0QnJhbmNoICE9PSAnSEVBRCcpIHJlc3VsdC5icmFuY2ggPSByZWNvcmQuZ2l0QnJhbmNoCiAgICAgIGlmICh0eXBlb2YgcmVjb3JkLmVudHJ5cG9pbnQgPT09ICdzdHJpbmcnKSByZXN1bHQuZW50cnlwb2ludCA9IHJlY29yZC5lbnRyeXBvaW50CiAgICAgIGlmICh0eXBlb2YgcmVjb3JkLnZlcnNpb24gPT09ICdzdHJpbmcnKSByZXN1bHQudmVyc2lvbiA9IHJlY29yZC52ZXJzaW9uCiAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gJ2N1c3RvbS10aXRsZScgJiYgcmVjb3JkLmN1c3RvbVRpdGxlKSByZXN1bHQuY3VzdG9tVGl0bGUgPSByZWNvcmQuY3VzdG9tVGl0bGUKICAgICAgaWYgKHJlY29yZC50eXBlID09PSAnYWktdGl0bGUnICYmIHJlY29yZC5haVRpdGxlKSByZXN1bHQuYWlUaXRsZSA9IHJlY29yZC5haVRpdGxlCiAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gJ3N1bW1hcnknICYmIHJlY29yZC5zdW1tYXJ5KSByZXN1bHQuc3VtbWFyeSA9IHJlY29yZC5zdW1tYXJ5CiAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gJ2xhc3QtcHJvbXB0JyAmJiByZWNvcmQubGFzdFByb21wdCkgcmVzdWx0Lmxhc3RQcm9tcHQgPSByZWNvcmQubGFzdFByb21wdAogICAgICBjb25zdCBhdCA9IHRpbWVzdGFtcE9mKHJlY29yZCkKICAgICAgaWYgKGF0ICE9PSBudWxsKSB7CiAgICAgICAgcmVzdWx0LnN0YXJ0ZWRBdCA9IHJlc3VsdC5zdGFydGVkQXQgPT09IG51bGwgPyBhdCA6IE1hdGgubWluKHJlc3VsdC5zdGFydGVkQXQsIGF0KQogICAgICAgIHJlc3VsdC5sYXN0QWN0aXZpdHlBdCA9IE1hdGgubWF4KHJlc3VsdC5sYXN0QWN0aXZpdHlBdCA/PyAwLCBhdCkKICAgICAgfQogICAgICBpZiAocmVjb3JkLnR5cGUgPT09ICd1c2VyJykgewogICAgICAgIGNvbnN0IHRleHQgPSB1c2VyVGV4dChyZWNvcmQpCiAgICAgICAgaWYgKHRleHQpIHsKICAgICAgICAgIHJlc3VsdC5maXJzdFByb21wdCA/Pz0gdGV4dAogICAgICAgICAgcmVzdWx0Lmxhc3RSb2xlID0gJ3VzZXInCiAgICAgICAgICByZXN1bHQubWVzc2FnZXMgKz0gMQogICAgICAgIH0KICAgICAgfSBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gJ2Fzc2lzdGFudCcgJiYgYXNzaXN0YW50VGV4dChyZWNvcmQpKSB7CiAgICAgICAgcmVzdWx0Lmxhc3RSb2xlID0gJ2Fzc2lzdGFudCcKICAgICAgICByZXN1bHQubWVzc2FnZXMgKz0gMQogICAgICB9CiAgICB9CiAgICAvLyBBIGZpbGUgdGhhdCBvbmx5IGhvbGRzIGJvb2trZWVwaW5nIChubyBwcm9tcHQgeWV0KSBpcyBub3QgYSBjb252ZXJzYXRpb24uCiAgICBjb25zdCB2YWx1ZSA9IHsgLi4ucmVzdWx0LCBsYXN0QWN0aXZpdHlBdDogcmVzdWx0Lmxhc3RBY3Rpdml0eUF0ID8/IGZpbGUubXRpbWVNcywgY29udmVyc2F0aW9uOiByZXN1bHQuZmlyc3RQcm9tcHQgIT09IG51bGwgfHwgcmVzdWx0LmFpVGl0bGUgIT09IG51bGwgfHwgcmVzdWx0LmN1c3RvbVRpdGxlICE9PSBudWxsIHx8IHJlc3VsdC5zdW1tYXJ5ICE9PSBudWxsIH0KICAgIGNhY2hlLnNldChmaWxlLnBhdGgsIHsgc2l6ZTogZmlsZS5zaXplLCBtdGltZU1zOiBmaWxlLm10aW1lTXMsIG1ldGE6IHZhbHVlIH0pCiAgICByZXR1cm4gdmFsdWUKICB9CgogIGNvbnN0IGhpZGRlbiA9IChjd2QpID0+ICEhY3dkICYmIGhpZGRlblJvb3RzLnNvbWUoKHJvb3QpID0+IGluc2lkZShjd2QsIHJvb3QpKQoKICByZXR1cm4gewogICAgcHJvamVjdHNEaXIsCiAgICAvKiogRXZlcnkgdmlzaWJsZSBzZXNzaW9uIGZpbGUgd2l0aCBpdHMgbWV0YWRhdGEsIG5ld2VzdCBjaGFuZ2UgZmlyc3QuICovCiAgICBzZXNzaW9ucygpIHsKICAgICAgcmV0dXJuIGZpbGVzKCkKICAgICAgICAuc29ydCgoYSwgYikgPT4gYi5tdGltZU1zIC0gYS5tdGltZU1zKQogICAgICAgIC5tYXAoKGZpbGUpID0+ICh7IGZpbGUsIG1ldGE6IG1ldGEoZmlsZSkgfSkpCiAgICAgICAgLmZpbHRlcigoeyBtZXRhOiBpbmZvIH0pID0+IGluZm8uY29udmVyc2F0aW9uICYmICFoaWRkZW4oaW5mby5jd2QpKQogICAgfSwKICAgIGZpbmQoaWQpIHsKICAgICAgcmV0dXJuIHRoaXMuc2Vzc2lvbnMoKS5maW5kKCh7IGZpbGUgfSkgPT4gZmlsZS5pZCA9PT0gaWQpID8/IG51bGwKICAgIH0sCiAgICAvKioKICAgICAqIFRoZSBsYXRlc3QgYGxpbWl0YCB1c2VyIGFuZCBhc3Npc3RhbnQgbWVzc2FnZXMgb2Ygb25lIHNlc3Npb24sIG9sZGVzdAogICAgICogZmlyc3QuIFJlYWRzIGJhY2t3YXJkcyBmcm9tIHRoZSBlbmQgb2YgdGhlIGZpbGUsIHdpZGVuaW5nIHVudGlsIGl0IGhhcwogICAgICogZW5vdWdoIG9yIHJlYWNoZXMgdGhlIHN0YXJ0LiBDb25zZWN1dGl2ZSBhc3Npc3RhbnQgcmVjb3JkcyBvZiBvbmUgcmVwbHkKICAgICAqIGFyZSBqb2luZWQuCiAgICAgKi8KICAgIG1lc3NhZ2VzKGZpbGUsIGxpbWl0KSB7CiAgICAgIGxldCBzcGFuID0gTWF0aC5taW4oZmlsZS5zaXplLCA1MTIgKiAxMDI0KQogICAgICBmb3IgKDs7KSB7CiAgICAgICAgY29uc3Qgc3RhcnQgPSBmaWxlLnNpemUgLSBzcGFuCiAgICAgICAgY29uc3QgbWVzc2FnZXMgPSBbXQogICAgICAgIGZvciAoY29uc3QgcmVjb3JkIG9mIHJlYWRMaW5lcyhmaWxlLnBhdGgsIHN0YXJ0LCBmaWxlLnNpemUpKSB7CiAgICAgICAgICBpZiAocmVjb3JkLmlzU2lkZWNoYWluKSBjb250aW51ZQogICAgICAgICAgY29uc3QgYXQgPSBpc28odGltZXN0YW1wT2YocmVjb3JkKSkKICAgICAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gJ3VzZXInKSB7CiAgICAgICAgICAgIGNvbnN0IHRleHQgPSB1c2VyVGV4dChyZWNvcmQpCiAgICAgICAgICAgIGlmICh0ZXh0KSBtZXNzYWdlcy5wdXNoKHsgcm9sZTogJ3VzZXInLCB0ZXh0LCBhdCwgaWQ6IG51bGwgfSkKICAgICAgICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09ICdhc3Npc3RhbnQnKSB7CiAgICAgICAgICAgIGNvbnN0IHRleHQgPSBhc3Npc3RhbnRUZXh0KHJlY29yZCkKICAgICAgICAgICAgaWYgKCF0ZXh0KSBjb250aW51ZQogICAgICAgICAgICBjb25zdCBwcmV2aW91cyA9IG1lc3NhZ2VzLmF0KC0xKQogICAgICAgICAgICBjb25zdCBpZCA9IHJlY29yZC5tZXNzYWdlPy5pZCA/PyBudWxsCiAgICAgICAgICAgIGlmIChwcmV2aW91cz8ucm9sZSA9PT0gJ2Fzc2lzdGFudCcgJiYgaWQgJiYgcHJldmlvdXMuaWQgPT09IGlkKSB7CiAgICAgICAgICAgICAgcHJldmlvdXMudGV4dCA9IGAke3ByZXZpb3VzLnRleHR9XG4ke3RleHR9YAogICAgICAgICAgICAgIHByZXZpb3VzLmF0ID0gYXQgPz8gcHJldmlvdXMuYXQKICAgICAgICAgICAgfSBlbHNlIG1lc3NhZ2VzLnB1c2goeyByb2xlOiAnYXNzaXN0YW50JywgdGV4dCwgYXQsIGlkIH0pCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGNvbnN0IGxhc3RSZXF1ZXN0ID0gbWVzc2FnZXMuZmluZExhc3RJbmRleCgobWVzc2FnZSkgPT4gbWVzc2FnZS5yb2xlID09PSAndXNlcicpCiAgICAgICAgaWYgKChtZXNzYWdlcy5sZW5ndGggPiBsaW1pdCAmJiBsYXN0UmVxdWVzdCA+PSAwKSB8fCBzdGFydCA9PT0gMCB8fCBzcGFuID49IE1BWF9SRUFEX0JZVEVTKSB7CiAgICAgICAgICAvLyBUaGUgbGF0ZXN0IGV4Y2hhbmdlOiB0aGUgdXNlcidzIGxhc3QgcmVxdWVzdCBhbHdheXMgbGVhZHMsIGV2ZW4gd2hlbiBDbGF1ZGUgaGFzIHNhaWQgbW9yZSBzaW5jZS4KICAgICAgICAgIGNvbnN0IGtlcHQgPSBsYXN0UmVxdWVzdCA+PSAwICYmIGxhc3RSZXF1ZXN0IDwgbWVzc2FnZXMubGVuZ3RoIC0gbGltaXQgPyBbbWVzc2FnZXNbbGFzdFJlcXVlc3RdLCAuLi5tZXNzYWdlcy5zbGljZSgtKGxpbWl0IC0gMSkgfHwgbWVzc2FnZXMubGVuZ3RoKV0gOiBtZXNzYWdlcy5zbGljZSgtbGltaXQpCiAgICAgICAgICByZXR1cm4geyBtZXNzYWdlczoga2VwdC5zbGljZSgtbGltaXQpLm1hcCgoeyBpZDogX2lkLCAuLi5tZXNzYWdlIH0pID0+IG1lc3NhZ2UpLCBlYXJsaWVyT21pdHRlZDogbWVzc2FnZXMubGVuZ3RoID4ga2VwdC5sZW5ndGggfHwgc3RhcnQgPiAwIH0KICAgICAgICB9CiAgICAgICAgc3BhbiA9IE1hdGgubWluKGZpbGUuc2l6ZSwgc3BhbiAqIDQsIE1BWF9SRUFEX0JZVEVTKQogICAgICB9CiAgICB9LAogIH0KfQoKLyoqIFdoZXRoZXIgYSB2ZXJzaW9uIHN0cmluZyAoYDIuMS4yODIgKENsYXVkZSBDb2RlKWApIGlzIGF0IGxlYXN0IGBtaW5pbXVtYC4gKi8KZXhwb3J0IGZ1bmN0aW9uIHZlcnNpb25BdExlYXN0KHZlcnNpb24sIG1pbmltdW0pIHsKICBjb25zdCBwYXJ0cyA9ICh0ZXh0KSA9PiAoU3RyaW5nKHRleHQpLm1hdGNoKC8oXGQrKVwuKFxkKylcLihcZCspLykgPz8gW10pLnNsaWNlKDEpLm1hcChOdW1iZXIpCiAgY29uc3QgaGF2ZSA9IHBhcnRzKHZlcnNpb24pCiAgY29uc3QgbmVlZCA9IHBhcnRzKG1pbmltdW0pCiAgaWYgKGhhdmUubGVuZ3RoICE9PSAzKSByZXR1cm4gZmFsc2UKICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgMzsgaW5kZXggKz0gMSkgaWYgKGhhdmVbaW5kZXhdICE9PSBuZWVkW2luZGV4XSkgcmV0dXJuIGhhdmVbaW5kZXhdID4gbmVlZFtpbmRleF0KICByZXR1cm4gdHJ1ZQp9CgovKioKICogVGhlIHNlcnZlcidzIHRvb2xzLiBgc3RvcmVgIGlzIGEgYGNsYXVkZVN0b3JlYDsgYGxpdmUoKWAgcmVzb2x2ZXMgdG8gYSBNYXAgb2YKICogc2Vzc2lvbiBpZCDihpIgYHsgcGlkLCBzdGF0dXMsIHdhaXRpbmdGb3IsIGtpbmQgfWAgZm9yIENsYXVkZSBwcm9jZXNzZXMgb3BlbgogKiBub3csIG9yIG51bGwgd2hlbiBDbGF1ZGUgY2Fubm90IHNheTsgYHZlcnNpb24oKWAgcmVzb2x2ZXMgdG8gYGNsYXVkZQogKiAtLXZlcnNpb25gJ3Mgb3V0cHV0OyBgcnVuKHsgYXJncywgY3dkLCBpbnB1dCB9KWAgc3RhcnRzIGEgaGVhZGxlc3MgYGNsYXVkZWAKICogYW5kIHJldHVybnMgYHsgcGlkLCBkb25lLCBzdG9wIH1gIHdoZXJlIGBkb25lYCByZXNvbHZlcyB0byBgeyBjb2RlLCBzdGRvdXQsCiAqIHN0ZGVyciB9YC4gYHN0YXJ0Rm9sZGVyc2AgYXJlIHRoZSBmb2xkZXJzIHN0YXJ0X3Nlc3Npb24gbWF5IHVzZS4KICovCmV4cG9ydCBmdW5jdGlvbiBjbGF1ZGVUb29scyh7IHN0b3JlLCBsaXZlLCB2ZXJzaW9uLCBydW4sIHN0YXJ0Rm9sZGVycyA9IFtdLCBydW5uaW5nV2luZG93TXMgPSA1ICogNjBfMDAwLCBub3cgPSAoKSA9PiBEYXRlLm5vdygpIH0pIHsKICAvKiogSGVhZGxlc3MgcnVucyB0aGlzIHNlcnZlciBzdGFydGVkIGFuZCB0aGF0IGFyZSBzdGlsbCBnb2luZywgYnkgc2Vzc2lvbiBpZC4gKi8KICBjb25zdCBydW5zID0gbmV3IE1hcCgpCgogIGNvbnN0IHN0YXRlT2YgPSAoZmlsZSwgaW5mbywgcHJvY2Vzc2VzKSA9PiB7CiAgICBjb25zdCBvcGVuID0gcHJvY2Vzc2VzPy5nZXQoZmlsZS5pZCkKICAgIGNvbnN0IG91cnMgPSBydW5zLmdldChmaWxlLmlkKQogICAgbGV0IHN0YXRlCiAgICBpZiAob3Vycykgc3RhdGUgPSAncnVubmluZycKICAgIGVsc2UgaWYgKG9wZW4pIHN0YXRlID0gb3Blbi5zdGF0dXMgPT09ICdidXN5JyA/ICdydW5uaW5nJyA6IG9wZW4uc3RhdHVzID09PSAnd2FpdGluZycgPyAnd2FpdGluZycgOiAnb3BlbicKICAgIGVsc2UgaWYgKHByb2Nlc3NlcyA9PT0gbnVsbCAmJiBub3coKSAtIGZpbGUubXRpbWVNcyA8IHJ1bm5pbmdXaW5kb3dNcykgc3RhdGUgPSAncnVubmluZycKICAgIGVsc2Ugc3RhdGUgPSAnaWRsZScKICAgIGNvbnN0IGVuZGVkID0gc3RhdGUgIT09ICdydW5uaW5nJyAmJiBzdGF0ZSAhPT0gJ3dhaXRpbmcnID8gaW5mby5sYXN0QWN0aXZpdHlBdCA6IG51bGwKICAgIGNvbnN0IHR1cm4gPSBzdGF0ZSA9PT0gJ3J1bm5pbmcnID8gJ3dvcmtpbmcnIDogc3RhdGUgPT09ICd3YWl0aW5nJyA/ICduZWVkc195b3UnIDogZW5kZWQgIT09IG51bGwgJiYgbm93KCkgLSBlbmRlZCA8IERPTkVfV0lORE9XX01TID8gJ2RvbmUnIDogJycKICAgIHJldHVybiB7IHN0YXRlLCB0dXJuLCBvcGVuOiAhIW9wZW4gfHwgISFvdXJzLCB3YWl0aW5nRm9yOiBvcGVuPy53YWl0aW5nRm9yID8/IG51bGwsIHBpZDogb3Blbj8ucGlkID8/IG91cnM/LnBpZCA/PyBudWxsIH0KICB9CgogIGNvbnN0IHdoZXJlID0geyBjbGk6ICd0ZXJtaW5hbCcsICdzZGstY2xpJzogJ2hlYWRsZXNzJywgJ3Nkay10cyc6ICdhcHAnIH0KICBjb25zdCBkZXNjcmliZSA9ICh7IGZpbGUsIG1ldGE6IGluZm8gfSwgcHJvY2Vzc2VzKSA9PiB7CiAgICBjb25zdCBzdGF0ZSA9IHN0YXRlT2YoZmlsZSwgaW5mbywgcHJvY2Vzc2VzKQogICAgY29uc3QgcHJvamVjdCA9IGluZm8uY3dkID8gYmFzZW5hbWUoaW5mby5jd2QpIDogZmlsZS5wcm9qZWN0RGlyLnJlcGxhY2UoL14tKy8sICcnKQogICAgcmV0dXJuIHsKICAgICAgaWQ6IGZpbGUuaWQsCiAgICAgIHRpdGxlOiBjbGlwKGluZm8uY3VzdG9tVGl0bGUgfHwgaW5mby5haVRpdGxlIHx8IGluZm8uc3VtbWFyeSB8fCBmb3JWb2ljZShpbmZvLmZpcnN0UHJvbXB0LCAyMDApIHx8ICdVbnRpdGxlZCBzZXNzaW9uJywgMTIwKSwKICAgICAgcHJvamVjdCwKICAgICAgZm9sZGVyOiBpbmZvLmN3ZCwKICAgICAgYnJhbmNoOiBpbmZvLmJyYW5jaCwKICAgICAgLyoqICJwcm9qZWN0IMK3IGJyYW5jaCIsIGZvciBhIHJvdydzIHN1YnRpdGxlLiAqLwogICAgICBsb2NhdGlvbjogaW5mby5icmFuY2ggPyBgJHtwcm9qZWN0fSDCtyAke2luZm8uYnJhbmNofWAgOiBwcm9qZWN0LAogICAgICBzdGF0ZTogc3RhdGUuc3RhdGUsCiAgICAgIC8qKiBBIHJvdyBzdGF0dXMgb25seSB3aGVuIGl0IGlzIG5ld3M6IHJ1bm5pbmcsIG9yIHdhaXRpbmcgZm9yIHRoZSB1c2VyLiAqLwogICAgICBhY3Rpdml0eTogc3RhdGUuc3RhdGUgPT09ICdydW5uaW5nJyA/ICdydW5uaW5nJyA6IHN0YXRlLnN0YXRlID09PSAnd2FpdGluZycgPyAnbmVlZHMgeW91JyA6ICcnLAogICAgICAvKiogd29ya2luZywgbmVlZHNfeW91LCBkb25lIChpdHMgdHVybiBlbmRlZCBpbiB0aGUgbGFzdCAxNSBtaW51dGVzKSwgb3IgZW1wdHk7IHNwb2tlbiB1cGRhdGVzIHdhdGNoIHRoaXMuICovCiAgICAgIHR1cm46IHN0YXRlLnR1cm4sCiAgICAgIHdhaXRpbmdGb3I6IHN0YXRlLndhaXRpbmdGb3IsCiAgICAgIC8qKiBPcGVuIGluIGEgQ2xhdWRlIHByb2Nlc3Mgbm93IChhIHRlcm1pbmFsLCBJREUsIGFwcCwgb3IgYSBydW4gdGhpcyBwYWNrIHN0YXJ0ZWQpLiBTdWNoIGEgc2Vzc2lvbiBpcyBub3QgcmVzdW1lZCBmcm9tIGhlcmUuICovCiAgICAgIGxpdmU6IHN0YXRlLm9wZW4sCiAgICAgIHNvdXJjZTogd2hlcmVbaW5mby5lbnRyeXBvaW50XSA/PyBpbmZvLmVudHJ5cG9pbnQgPz8gbnVsbCwKICAgICAgbGFzdFNwZWFrZXI6IGluZm8ubGFzdFJvbGUsCiAgICAgIG1lc3NhZ2VzOiBpbmZvLm1lc3NhZ2VzLAogICAgICBzdGFydGVkQXQ6IGlzbyhpbmZvLnN0YXJ0ZWRBdCksCiAgICAgIGxhc3RBY3Rpdml0eUF0OiBpc28oaW5mby5sYXN0QWN0aXZpdHlBdCksCiAgICAgIGxhc3RQcm9tcHQ6IGZvclZvaWNlKGluZm8ubGFzdFByb21wdCwgMTYwKSB8fCBudWxsLAogICAgfQogIH0KCiAgY29uc3Qgc3RhcnRPZlRvZGF5ID0gKCkgPT4gewogICAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZShub3coKSkKICAgIHRvZGF5LnNldEhvdXJzKDAsIDAsIDAsIDApCiAgICByZXR1cm4gdG9kYXkuZ2V0VGltZSgpCiAgfQoKICBjb25zdCBmaW5kU2Vzc2lvbiA9IChpZCkgPT4gewogICAgY29uc3QgZm91bmQgPSBzdG9yZS5maW5kKGlkKQogICAgaWYgKCFmb3VuZCkgdGhyb3cgbmV3IEVycm9yKGBObyBDbGF1ZGUgQ29kZSBzZXNzaW9uICR7aWR9LiBsaXN0X3Nlc3Npb25zIHNob3dzIHRoZSByZWNlbnQgb25lcy5gKQogICAgcmV0dXJuIGZvdW5kCiAgfQoKICBjb25zdCByZXF1aXJlQ2xhdWRlID0gYXN5bmMgKCkgPT4gewogICAgY29uc3Qgb3V0cHV0ID0gYXdhaXQgdmVyc2lvbigpCiAgICBpZiAoIXZlcnNpb25BdExlYXN0KG91dHB1dCwgTUlOX0NMQVVERV9WRVJTSU9OKSkgdGhyb3cgbmV3IEVycm9yKGBUaGlzIHBhY2sgbmVlZHMgQ2xhdWRlIENvZGUgJHtNSU5fQ0xBVURFX1ZFUlNJT059IG9yIG5ld2VyIChmb3VuZCAke2NsaXAoU3RyaW5nKG91dHB1dCkudHJpbSgpLCA0MCkgfHwgJ25vbmUnfSkuIFVwZGF0ZSBpdCB3aXRoIGNsYXVkZSB1cGRhdGUuYCkKICB9CgogIC8qKiBXYWl0cyB1cCB0byBgc2Vjb25kc2AgZm9yIGEgcnVuOyBpdHMgcmVzdWx0LCBvciBudWxsIHdoaWxlIGl0IGtlZXBzIGdvaW5nLiAqLwogIGNvbnN0IHNldHRsZSA9IGFzeW5jIChoYW5kbGUsIHNlY29uZHMpID0+IHsKICAgIGxldCB0aW1lcgogICAgY29uc3Qgb3V0Y29tZSA9IGF3YWl0IFByb21pc2UucmFjZShbaGFuZGxlLmRvbmUsIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiAodGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHJlc29sdmUobnVsbCksIHNlY29uZHMgKiAxMDAwKSkpXSkKICAgIGNsZWFyVGltZW91dCh0aW1lcikKICAgIGlmICghb3V0Y29tZSkgcmV0dXJuIG51bGwKICAgIGxldCByZXN1bHQgPSBudWxsCiAgICB0cnkgewogICAgICByZXN1bHQgPSBKU09OLnBhcnNlKG91dGNvbWUuc3Rkb3V0LnRyaW0oKS5zcGxpdCgnXG4nKS5hdCgtMSkgPz8gJycpCiAgICB9IGNhdGNoIHsKICAgICAgLy8gQ2xhdWRlIHByaW50ZWQgbm8gSlNPTjogaXQgZmFpbGVkIGJlZm9yZSBzdGFydGluZyAoYXV0aCwgYSBiYWQgZmxhZywgYSBtaXNzaW5nIHNlc3Npb24pLgogICAgfQogICAgaWYgKCFyZXN1bHQpIHJldHVybiB7IGZpbmlzaGVkOiB0cnVlLCBpc0Vycm9yOiB0cnVlLCByZXBseTogbnVsbCwgZXJyb3I6IGNsaXAoZm9yVm9pY2Uob3V0Y29tZS5zdGRlcnIgfHwgb3V0Y29tZS5zdGRvdXQsIDQwMCksIDQwMCkgfHwgYGNsYXVkZSBleGl0ZWQgd2l0aCBjb2RlICR7b3V0Y29tZS5jb2RlfWAgfQogICAgY29uc3QgZGVuaWVkID0gQXJyYXkuaXNBcnJheShyZXN1bHQucGVybWlzc2lvbl9kZW5pYWxzKSA/IHJlc3VsdC5wZXJtaXNzaW9uX2RlbmlhbHMubWFwKChkZW5pYWwpID0+IGRlbmlhbD8udG9vbF9uYW1lKS5maWx0ZXIoQm9vbGVhbikgOiBbXQogICAgcmV0dXJuIHsKICAgICAgZmluaXNoZWQ6IHRydWUsCiAgICAgIGlzRXJyb3I6ICEhcmVzdWx0LmlzX2Vycm9yLAogICAgICByZXBseTogZm9yVm9pY2UocmVzdWx0LnJlc3VsdCwgOTAwKSB8fCBudWxsLAogICAgICAuLi4ocmVzdWx0LmlzX2Vycm9yID8geyBlcnJvcjogY2xpcChmb3JWb2ljZShyZXN1bHQucmVzdWx0IHx8IHJlc3VsdC5zdWJ0eXBlLCA0MDApLCA0MDApIH0gOiB7fSksCiAgICAgIC4uLihkZW5pZWQubGVuZ3RoID8geyBwZXJtaXNzaW9uRGVuaWVkOiBbLi4ubmV3IFNldChkZW5pZWQpXSwgbm90ZTogJ1NvbWUgdG9vbCB1c2VzIG5lZWRlZCBwZXJtaXNzaW9uLCB3aGljaCBhIGhlYWRsZXNzIHJ1biBjYW5ub3QgYXNrIGZvciwgc28gdGhleSB3ZXJlIHJlZnVzZWQuIFRoZSB1c2VyIGNhbiBhbGxvdyB0aGVtIGluIHRoZWlyIENsYXVkZSBzZXR0aW5ncyBvciBjb250aW51ZSBpbiBhIHRlcm1pbmFsLicgfSA6IHt9KSwKICAgICAgdHVybnM6IHJlc3VsdC5udW1fdHVybnMgPz8gbnVsbCwKICAgICAgY29zdFVzZDogdHlwZW9mIHJlc3VsdC50b3RhbF9jb3N0X3VzZCA9PT0gJ251bWJlcicgPyBNYXRoLnJvdW5kKHJlc3VsdC50b3RhbF9jb3N0X3VzZCAqIDEwXzAwMCkgLyAxMF8wMDAgOiBudWxsLAogICAgfQogIH0KCiAgY29uc3QgbGF1bmNoID0gKGlkLCBhcmdzLCBjd2QsIGlucHV0KSA9PiB7CiAgICBjb25zdCBoYW5kbGUgPSBydW4oeyBhcmdzLCBjd2QsIGlucHV0IH0pCiAgICBydW5zLnNldChpZCwgaGFuZGxlKQogICAgaGFuZGxlLmRvbmUuZmluYWxseSgoKSA9PiB7CiAgICAgIGlmIChydW5zLmdldChpZCkgPT09IGhhbmRsZSkgcnVucy5kZWxldGUoaWQpCiAgICB9KQogICAgcmV0dXJuIGhhbmRsZQogIH0KCiAgY29uc3Qgd2FpdFNlY29uZHMgPSAoYXJncykgPT4gYXJnLmludGVnZXIoYXJncywgJ3dhaXRfc2Vjb25kcycsIHsgbWluOiAwLCBtYXg6IDUwLCBmYWxsYmFjazogMjAgfSkKCiAgcmV0dXJuIFsKICAgIHsKICAgICAgbmFtZTogJ2xpc3Rfc2Vzc2lvbnMnLAogICAgICBkZXNjcmlwdGlvbjogIlJlY2VudCBDbGF1ZGUgQ29kZSBzZXNzaW9ucyB0aGUgdXNlciBzdGFydGVkIGluIGEgdGVybWluYWwsIElERSwgb3IgdGhlIGRlc2t0b3AgYXBwLCBuZXdlc3QgYWN0aXZpdHkgZmlyc3Q6IGlkLCB0aXRsZSwgcHJvamVjdCAoZm9sZGVyIG5hbWUpLCBicmFuY2gsIHN0YXRlIChydW5uaW5nLCB3YWl0aW5nIGZvciB0aGUgdXNlciwgb3BlbiBidXQgaWRsZSwgb3IgaWRsZSksIHdoZXRoZXIgYSBDbGF1ZGUgcHJvY2VzcyBoYXMgaXQgb3BlbiwgYW5kIHRpbWVzLiBGaWx0ZXIgYnkgcHJvamVjdCBvciB3b3JkcyBpbiB0aGUgdGl0bGUvYnJhbmNoLiBQYXNzIHRoZSBpZCB0byByZWFkX3Nlc3Npb24gb3Igc2VuZF9tZXNzYWdlLiIsCiAgICAgIGlucHV0U2NoZW1hOiB7CiAgICAgICAgdHlwZTogJ29iamVjdCcsCiAgICAgICAgcHJvcGVydGllczogewogICAgICAgICAgcHJvamVjdDogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICdPbmx5IHNlc3Npb25zIHdob3NlIHByb2plY3QgZm9sZGVyIG5hbWUgb3IgcGF0aCBjb250YWlucyB0aGlzIChjYXNlLWluc2Vuc2l0aXZlKScgfSwKICAgICAgICAgIHF1ZXJ5OiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ09ubHkgc2Vzc2lvbnMgd2hvc2UgdGl0bGUsIGJyYW5jaCwgcHJvamVjdCwgb3IgbGFzdCBwcm9tcHQgY29udGFpbnMgdGhpcyAoY2FzZS1pbnNlbnNpdGl2ZSknIH0sCiAgICAgICAgICBydW5uaW5nX29ubHk6IHsgdHlwZTogJ2Jvb2xlYW4nLCBkZWZhdWx0OiBmYWxzZSwgZGVzY3JpcHRpb246ICdPbmx5IHNlc3Npb25zIHRoYXQgYXJlIHJ1bm5pbmcgb3Igd2FpdGluZyBmb3IgdGhlIHVzZXInIH0sCiAgICAgICAgICBsaW1pdDogeyB0eXBlOiAnaW50ZWdlcicsIG1pbmltdW06IDEsIG1heGltdW06IDEwMCwgZGVmYXVsdDogMjAgfSwKICAgICAgICB9LAogICAgICB9LAogICAgICBhbm5vdGF0aW9uczogcmVhZCwKICAgICAgcnVuOiBhc3luYyAoYXJncykgPT4gewogICAgICAgIGNvbnN0IHByb2plY3QgPSBsb3dlcihhcmcub3B0aW9uYWxTdHJpbmcoYXJncywgJ3Byb2plY3QnLCB7IG1heDogMjAwIH0pKQogICAgICAgIGNvbnN0IHF1ZXJ5ID0gbG93ZXIoYXJnLm9wdGlvbmFsU3RyaW5nKGFyZ3MsICdxdWVyeScsIHsgbWF4OiAyMDAgfSkpCiAgICAgICAgY29uc3QgcnVubmluZ09ubHkgPSBhcmcuYm9vbGVhbihhcmdzLCAncnVubmluZ19vbmx5JywgZmFsc2UpCiAgICAgICAgY29uc3QgbGltaXQgPSBhcmcuaW50ZWdlcihhcmdzLCAnbGltaXQnLCB7IG1pbjogMSwgbWF4OiAxMDAsIGZhbGxiYWNrOiAyMCB9KQogICAgICAgIGNvbnN0IHByb2Nlc3NlcyA9IGF3YWl0IGxpdmUoKQogICAgICAgIGNvbnN0IGFsbCA9IHN0b3JlLnNlc3Npb25zKCkubWFwKChlbnRyeSkgPT4gZGVzY3JpYmUoZW50cnksIHByb2Nlc3NlcykpCiAgICAgICAgY29uc3QgdG9kYXkgPSBzdGFydE9mVG9kYXkoKQogICAgICAgIGNvbnN0IG1hdGNoZXMgPSBhbGwuZmlsdGVyKChzZXNzaW9uKSA9PgogICAgICAgICAgKCFwcm9qZWN0IHx8IGxvd2VyKHNlc3Npb24ucHJvamVjdCkuaW5jbHVkZXMocHJvamVjdCkgfHwgbG93ZXIoc2Vzc2lvbi5mb2xkZXIpLmluY2x1ZGVzKHByb2plY3QpKSAmJgogICAgICAgICAgKCFxdWVyeSB8fCBbc2Vzc2lvbi50aXRsZSwgc2Vzc2lvbi5icmFuY2gsIHNlc3Npb24ucHJvamVjdCwgc2Vzc2lvbi5sYXN0UHJvbXB0XS5zb21lKCh0ZXh0KSA9PiBsb3dlcih0ZXh0KS5pbmNsdWRlcyhxdWVyeSkpKSAmJgogICAgICAgICAgKCFydW5uaW5nT25seSB8fCBzZXNzaW9uLnN0YXRlID09PSAncnVubmluZycgfHwgc2Vzc2lvbi5zdGF0ZSA9PT0gJ3dhaXRpbmcnKQogICAgICAgICkKICAgICAgICByZXR1cm4gewogICAgICAgICAgY291bnQ6IG1hdGNoZXMubGVuZ3RoLAogICAgICAgICAgcnVubmluZzogYWxsLmZpbHRlcigoc2Vzc2lvbikgPT4gc2Vzc2lvbi5zdGF0ZSA9PT0gJ3J1bm5pbmcnKS5sZW5ndGgsCiAgICAgICAgICB3YWl0aW5nOiBhbGwuZmlsdGVyKChzZXNzaW9uKSA9PiBzZXNzaW9uLnN0YXRlID09PSAnd2FpdGluZycpLmxlbmd0aCwKICAgICAgICAgIHRvZGF5OiBhbGwuZmlsdGVyKChzZXNzaW9uKSA9PiBEYXRlLnBhcnNlKHNlc3Npb24ubGFzdEFjdGl2aXR5QXQpID49IHRvZGF5KS5sZW5ndGgsCiAgICAgICAgICBmaW5pc2hlZFJlY2VudGx5OiBhbGwuZmlsdGVyKChzZXNzaW9uKSA9PiBzZXNzaW9uLnN0YXRlICE9PSAncnVubmluZycgJiYgc2Vzc2lvbi5zdGF0ZSAhPT0gJ3dhaXRpbmcnICYmIG5vdygpIC0gRGF0ZS5wYXJzZShzZXNzaW9uLmxhc3RBY3Rpdml0eUF0KSA8IFJFQ0VOVF9NUyAmJiBzZXNzaW9uLmxhc3RTcGVha2VyID09PSAnYXNzaXN0YW50JykubGVuZ3RoLAogICAgICAgICAgbGl2ZVN0YXR1czogcHJvY2Vzc2VzID09PSBudWxsID8gYHVuYXZhaWxhYmxlOiBydW5uaW5nIG1lYW5zIHRoZSBmaWxlIGNoYW5nZWQgaW4gdGhlIGxhc3QgJHtNYXRoLnJvdW5kKHJ1bm5pbmdXaW5kb3dNcyAvIDYwXzAwMCl9IG1pbnV0ZXNgIDogJ2Zyb20gY2xhdWRlIGFnZW50cycsCiAgICAgICAgICBzZXNzaW9uczogbWF0Y2hlcy5zbGljZSgwLCBsaW1pdCksCiAgICAgICAgfQogICAgICB9LAogICAgfSwKICAgIHsKICAgICAgbmFtZTogJ2xpc3RfcHJvamVjdHMnLAogICAgICBkZXNjcmlwdGlvbjogJ0ZvbGRlcnMgdGhlIHVzZXIgaGFzIHJ1biBDbGF1ZGUgQ29kZSBpbiwgbW9zdCByZWNlbnQgZmlyc3Q6IHByb2plY3QgbmFtZSwgZm9sZGVyLCBudW1iZXIgb2Ygc2Vzc2lvbnMsIGhvdyBtYW55IGFyZSBydW5uaW5nLCB0aGUgbGF0ZXN0IHNlc3Npb24gdGl0bGUsIGFuZCBsYXN0IGFjdGl2aXR5LicsCiAgICAgIGlucHV0U2NoZW1hOiB7IHR5cGU6ICdvYmplY3QnLCBwcm9wZXJ0aWVzOiB7IGxpbWl0OiB7IHR5cGU6ICdpbnRlZ2VyJywgbWluaW11bTogMSwgbWF4aW11bTogMTAwLCBkZWZhdWx0OiAyMCB9IH0gfSwKICAgICAgYW5ub3RhdGlvbnM6IHJlYWQsCiAgICAgIHJ1bjogYXN5bmMgKGFyZ3MpID0+IHsKICAgICAgICBjb25zdCBsaW1pdCA9IGFyZy5pbnRlZ2VyKGFyZ3MsICdsaW1pdCcsIHsgbWluOiAxLCBtYXg6IDEwMCwgZmFsbGJhY2s6IDIwIH0pCiAgICAgICAgY29uc3QgcHJvY2Vzc2VzID0gYXdhaXQgbGl2ZSgpCiAgICAgICAgY29uc3QgcHJvamVjdHMgPSBuZXcgTWFwKCkKICAgICAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIHN0b3JlLnNlc3Npb25zKCkpIHsKICAgICAgICAgIGNvbnN0IHNlc3Npb24gPSBkZXNjcmliZShlbnRyeSwgcHJvY2Vzc2VzKQogICAgICAgICAgY29uc3Qga2V5ID0gc2Vzc2lvbi5mb2xkZXIgPz8gc2Vzc2lvbi5wcm9qZWN0CiAgICAgICAgICBjb25zdCBwcm9qZWN0ID0gcHJvamVjdHMuZ2V0KGtleSkgPz8geyBuYW1lOiBzZXNzaW9uLnByb2plY3QsIGZvbGRlcjogc2Vzc2lvbi5mb2xkZXIsIHNlc3Npb25zOiAwLCBydW5uaW5nOiAwLCB3YWl0aW5nOiAwLCBsYXRlc3RTZXNzaW9uOiBzZXNzaW9uLnRpdGxlLCBsYXRlc3RTZXNzaW9uSWQ6IHNlc3Npb24uaWQsIGxhc3RBY3Rpdml0eUF0OiBzZXNzaW9uLmxhc3RBY3Rpdml0eUF0IH0KICAgICAgICAgIHByb2plY3Quc2Vzc2lvbnMgKz0gMQogICAgICAgICAgaWYgKHNlc3Npb24uc3RhdGUgPT09ICdydW5uaW5nJykgcHJvamVjdC5ydW5uaW5nICs9IDEKICAgICAgICAgIGlmIChzZXNzaW9uLnN0YXRlID09PSAnd2FpdGluZycpIHByb2plY3Qud2FpdGluZyArPSAxCiAgICAgICAgICBpZiAoRGF0ZS5wYXJzZShzZXNzaW9uLmxhc3RBY3Rpdml0eUF0KSA+IERhdGUucGFyc2UocHJvamVjdC5sYXN0QWN0aXZpdHlBdCkpIE9iamVjdC5hc3NpZ24ocHJvamVjdCwgeyBsYXRlc3RTZXNzaW9uOiBzZXNzaW9uLnRpdGxlLCBsYXRlc3RTZXNzaW9uSWQ6IHNlc3Npb24uaWQsIGxhc3RBY3Rpdml0eUF0OiBzZXNzaW9uLmxhc3RBY3Rpdml0eUF0IH0pCiAgICAgICAgICBwcm9qZWN0cy5zZXQoa2V5LCBwcm9qZWN0KQogICAgICAgIH0KICAgICAgICBjb25zdCBsaXN0ID0gWy4uLnByb2plY3RzLnZhbHVlcygpXS5zb3J0KChhLCBiKSA9PiBEYXRlLnBhcnNlKGIubGFzdEFjdGl2aXR5QXQpIC0gRGF0ZS5wYXJzZShhLmxhc3RBY3Rpdml0eUF0KSkKICAgICAgICByZXR1cm4gewogICAgICAgICAgY291bnQ6IGxpc3QubGVuZ3RoLAogICAgICAgICAgLy8gYGlkYCBpcyB0aGUgbGF0ZXN0IHNlc3Npb24ncywgc28gYSBwcm9qZWN0IHJvdyBvcGVucyB0aGF0IHNlc3Npb24gbGlrZSBhIHNlc3Npb24gcm93IGRvZXMuCiAgICAgICAgICBwcm9qZWN0czogbGlzdC5zbGljZSgwLCBsaW1pdCkubWFwKChwcm9qZWN0KSA9PiAoeyAuLi5wcm9qZWN0LCBpZDogcHJvamVjdC5sYXRlc3RTZXNzaW9uSWQsIGFjdGl2aXR5OiBwcm9qZWN0LndhaXRpbmcgPyAnbmVlZHMgeW91JyA6IHByb2plY3QucnVubmluZyA/ICdydW5uaW5nJyA6ICcnIH0pKSwKICAgICAgICB9CiAgICAgIH0sCiAgICB9LAogICAgewogICAgICBuYW1lOiAncmVhZF9zZXNzaW9uJywKICAgICAgZGVzY3JpcHRpb246ICJUaGUgbGF0ZXN0IG1lc3NhZ2VzIG9mIG9uZSBDbGF1ZGUgQ29kZSBzZXNzaW9uLCBvbGRlc3QgZmlyc3Q6IHRoZSB1c2VyJ3MgcmVxdWVzdHMgYW5kIENsYXVkZSdzIHJlcGxpZXMgKHRvb2wgY2FsbHMsIHRoaW5raW5nLCBhbmQgY29tbWFuZCBvdXRwdXQgbGVmdCBvdXQpLCB0cmltbWVkIGZvciByZWFkaW5nIGFsb3VkLCBwbHVzIHRoZSBzZXNzaW9uJ3Mgc3RhdGUuIiwKICAgICAgaW5wdXRTY2hlbWE6IHsKICAgICAgICB0eXBlOiAnb2JqZWN0JywKICAgICAgICBwcm9wZXJ0aWVzOiB7CiAgICAgICAgICBzZXNzaW9uX2lkOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ1Nlc3Npb24gaWQgZnJvbSBsaXN0X3Nlc3Npb25zJyB9LAogICAgICAgICAgbGltaXQ6IHsgdHlwZTogJ2ludGVnZXInLCBtaW5pbXVtOiAxLCBtYXhpbXVtOiAzMCwgZGVmYXVsdDogNiB9LAogICAgICAgICAgbWF4X2NoYXJzOiB7IHR5cGU6ICdpbnRlZ2VyJywgbWluaW11bTogMTAwLCBtYXhpbXVtOiA0MDAwLCBkZWZhdWx0OiA3MDAsIGRlc2NyaXB0aW9uOiAnTG9uZ2VzdCB0ZXh0IGtlcHQgcGVyIG1lc3NhZ2UnIH0sCiAgICAgICAgfSwKICAgICAgICByZXF1aXJlZDogWydzZXNzaW9uX2lkJ10sCiAgICAgIH0sCiAgICAgIGFubm90YXRpb25zOiByZWFkLAogICAgICBydW46IGFzeW5jIChhcmdzKSA9PiB7CiAgICAgICAgY29uc3QgaWQgPSBhcmcuc3RyaW5nKGFyZ3MsICdzZXNzaW9uX2lkJywgeyBwYXR0ZXJuOiBTRVNTSU9OX0lEIH0pCiAgICAgICAgY29uc3QgbGltaXQgPSBhcmcuaW50ZWdlcihhcmdzLCAnbGltaXQnLCB7IG1pbjogMSwgbWF4OiAzMCwgZmFsbGJhY2s6IDYgfSkKICAgICAgICBjb25zdCBtYXhDaGFycyA9IGFyZy5pbnRlZ2VyKGFyZ3MsICdtYXhfY2hhcnMnLCB7IG1pbjogMTAwLCBtYXg6IDQwMDAsIGZhbGxiYWNrOiA3MDAgfSkKICAgICAgICBjb25zdCBlbnRyeSA9IGZpbmRTZXNzaW9uKGlkKQogICAgICAgIGNvbnN0IHNlc3Npb24gPSBkZXNjcmliZShlbnRyeSwgYXdhaXQgbGl2ZSgpKQogICAgICAgIGNvbnN0IHsgbWVzc2FnZXMsIGVhcmxpZXJPbWl0dGVkIH0gPSBzdG9yZS5tZXNzYWdlcyhlbnRyeS5maWxlLCBsaW1pdCkKICAgICAgICByZXR1cm4geyAuLi5zZXNzaW9uLCBjb3VudDogbWVzc2FnZXMubGVuZ3RoLCBlYXJsaWVyT21pdHRlZCwgbWVzc2FnZXM6IG1lc3NhZ2VzLm1hcCgobWVzc2FnZSkgPT4gKHsgcm9sZTogbWVzc2FnZS5yb2xlLCBjb250ZW50OiBmb3JWb2ljZShtZXNzYWdlLnRleHQsIG1heENoYXJzKSwgYXQ6IG1lc3NhZ2UuYXQgfSkpIH0KICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgIG5hbWU6ICdzZW5kX21lc3NhZ2UnLAogICAgICBkZXNjcmlwdGlvbjogIkNvbnRpbnVlIGEgQ2xhdWRlIENvZGUgc2Vzc2lvbiB3aXRoIHRoZSB1c2VyJ3MgbWVzc2FnZSwgaGVhZGxlc3MgKGNsYXVkZSAtcCAtLXJlc3VtZSkgaW4gdGhlIHNlc3Npb24ncyBmb2xkZXIgd2l0aCB0aGUgdXNlcidzIG93biBDbGF1ZGUgc2V0dGluZ3MuIFJlZnVzZWQgd2hpbGUgdGhlIHNlc3Npb24gaXMgb3BlbiBpbiBhIHRlcm1pbmFsLCBJREUsIG9yIGFwcCwgYmVjYXVzZSB0d28gd3JpdGVycyBjb3JydXB0IGEgc2Vzc2lvbi4gV2FpdHMgdXAgdG8gd2FpdF9zZWNvbmRzIGZvciBDbGF1ZGUncyByZXBseTsgaWYgaXQgdGFrZXMgbG9uZ2VyLCBDbGF1ZGUga2VlcHMgd29ya2luZyBhbmQgcmVhZF9zZXNzaW9uIHNob3dzIHRoZSByZXBseSBsYXRlci4iLAogICAgICBpbnB1dFNjaGVtYTogewogICAgICAgIHR5cGU6ICdvYmplY3QnLAogICAgICAgIHByb3BlcnRpZXM6IHsKICAgICAgICAgIHNlc3Npb25faWQ6IHsgdHlwZTogJ3N0cmluZycgfSwKICAgICAgICAgIG1lc3NhZ2U6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAiRXhhY3RseSB3aGF0IHRoZSB1c2VyIHNhaWQgdG8gc2VuZCIgfSwKICAgICAgICAgIHdhaXRfc2Vjb25kczogeyB0eXBlOiAnaW50ZWdlcicsIG1pbmltdW06IDAsIG1heGltdW06IDUwLCBkZWZhdWx0OiAyMCB9LAogICAgICAgIH0sCiAgICAgICAgcmVxdWlyZWQ6IFsnc2Vzc2lvbl9pZCcsICdtZXNzYWdlJ10sCiAgICAgIH0sCiAgICAgIGFubm90YXRpb25zOiB3b3JrLAogICAgICBydW46IGFzeW5jIChhcmdzKSA9PiB7CiAgICAgICAgY29uc3QgaWQgPSBhcmcuc3RyaW5nKGFyZ3MsICdzZXNzaW9uX2lkJywgeyBwYXR0ZXJuOiBTRVNTSU9OX0lEIH0pCiAgICAgICAgY29uc3QgbWVzc2FnZSA9IGFyZy5zdHJpbmcoYXJncywgJ21lc3NhZ2UnLCB7IG1heDogMjBfMDAwIH0pCiAgICAgICAgY29uc3Qgc2Vjb25kcyA9IHdhaXRTZWNvbmRzKGFyZ3MpCiAgICAgICAgYXdhaXQgcmVxdWlyZUNsYXVkZSgpCiAgICAgICAgY29uc3QgZW50cnkgPSBmaW5kU2Vzc2lvbihpZCkKICAgICAgICBjb25zdCBwcm9jZXNzZXMgPSBhd2FpdCBsaXZlKCkKICAgICAgICBjb25zdCBzZXNzaW9uID0gZGVzY3JpYmUoZW50cnksIHByb2Nlc3NlcykKICAgICAgICBpZiAocnVucy5oYXMoaWQpKSB0aHJvdyBuZXcgRXJyb3IoJ0NsYXVkZSBpcyBzdGlsbCB3b3JraW5nIG9uIHRoZSBsYXN0IG1lc3NhZ2Ugc2VudCBmcm9tIGhlcmUuIFdhaXQgZm9yIGl0IChyZWFkX3Nlc3Npb24pLCBvciBzdG9wX3Nlc3Npb24gdG8gc3RvcCBpdC4nKQogICAgICAgIGlmIChzZXNzaW9uLmxpdmUpIHRocm93IG5ldyBFcnJvcihg4oCcJHtzZXNzaW9uLnRpdGxlfeKAnSBpcyBvcGVuIGluIGEgQ2xhdWRlIHByb2Nlc3MgKCR7c2Vzc2lvbi5zdGF0ZSA9PT0gJ3dhaXRpbmcnID8gJ3dhaXRpbmcgZm9yIHRoZSB1c2VyIHRoZXJlJyA6IHNlc3Npb24uc3RhdGUgPT09ICdydW5uaW5nJyA/ICd3b3JraW5nJyA6ICdpZGxlJ30pLCBwcm9iYWJseSBhIHRlcm1pbmFsIG9yIElERS4gUmVmdXNpbmcgdG8gcmVzdW1lIGl0IGZyb20gaGVyZSwgYmVjYXVzZSB0d28gd3JpdGVycyBjb3JydXB0IGEgc2Vzc2lvbi4gUmVwbHkgdGhlcmUsIG9yIGNsb3NlIGl0IGFuZCB0cnkgYWdhaW4uYCkKICAgICAgICBpZiAocHJvY2Vzc2VzID09PSBudWxsICYmIHNlc3Npb24uc3RhdGUgPT09ICdydW5uaW5nJykgdGhyb3cgbmV3IEVycm9yKGDigJwke3Nlc3Npb24udGl0bGV94oCdIGNoYW5nZWQgaW4gdGhlIGxhc3QgZmV3IG1pbnV0ZXMgYW5kIG1heSBzdGlsbCBiZSBvcGVuIGluIGEgdGVybWluYWwuIFJlZnVzaW5nIHRvIHJlc3VtZSBpdCwgYmVjYXVzZSB0d28gd3JpdGVycyBjb3JydXB0IGEgc2Vzc2lvbi4gVHJ5IGFnYWluIG9uY2UgaXQgaGFzIGJlZW4gcXVpZXQgZm9yIGEgd2hpbGUuYCkKICAgICAgICBpZiAoIXNlc3Npb24uZm9sZGVyIHx8ICFleGlzdHNTeW5jKHNlc3Npb24uZm9sZGVyKSB8fCAhc3RhdFN5bmMoc2Vzc2lvbi5mb2xkZXIpLmlzRGlyZWN0b3J5KCkpIHRocm93IG5ldyBFcnJvcihgVGhlIHNlc3Npb24ncyBmb2xkZXIgJHtzZXNzaW9uLmZvbGRlciA/PyAnKHVua25vd24pJ30gbm8gbG9uZ2VyIGV4aXN0cywgc28gQ2xhdWRlIGNhbm5vdCByZXN1bWUgaXQuYCkKICAgICAgICBjb25zdCBoYW5kbGUgPSBsYXVuY2goaWQsIFsnLXAnLCAnLS1yZXN1bWUnLCBpZCwgJy0tb3V0cHV0LWZvcm1hdCcsICdqc29uJ10sIHNlc3Npb24uZm9sZGVyLCBtZXNzYWdlKQogICAgICAgIGNvbnN0IG91dGNvbWUgPSBhd2FpdCBzZXR0bGUoaGFuZGxlLCBzZWNvbmRzKQogICAgICAgIHJldHVybiBvdXRjb21lCiAgICAgICAgICA/IHsgc2VudDogdHJ1ZSwgc2Vzc2lvbl9pZDogaWQsIHRpdGxlOiBzZXNzaW9uLnRpdGxlLCBwcm9qZWN0OiBzZXNzaW9uLnByb2plY3QsIC4uLm91dGNvbWUgfQogICAgICAgICAgOiB7IHNlbnQ6IHRydWUsIHNlc3Npb25faWQ6IGlkLCB0aXRsZTogc2Vzc2lvbi50aXRsZSwgcHJvamVjdDogc2Vzc2lvbi5wcm9qZWN0LCBmaW5pc2hlZDogZmFsc2UsIG5vdGU6ICdDbGF1ZGUgaXMgd29ya2luZyBvbiBpdDsgcmVhZF9zZXNzaW9uIHNob3dzIHRoZSByZXBseSB3aGVuIGl0IGZpbmlzaGVzLicgfQogICAgICB9LAogICAgfSwKICAgIHsKICAgICAgbmFtZTogJ3N0YXJ0X3Nlc3Npb24nLAogICAgICBkZXNjcmlwdGlvbjogIlN0YXJ0IGEgbmV3IGhlYWRsZXNzIENsYXVkZSBDb2RlIHNlc3Npb24gKGNsYXVkZSAtcCkgd2l0aCB0aGUgdXNlcidzIHByb21wdCBpbiBhIGZvbGRlciB0aGUgdXNlciBhbGxvd2VkIGluIHRoaXMgcGFjaydzIHNldHRpbmdzLCB3aXRoIHRoZSB1c2VyJ3Mgb3duIENsYXVkZSBzZXR0aW5ncy4gUmV0dXJucyB0aGUgbmV3IHNlc3Npb24ncyBpZCBhdCBvbmNlIGFuZCB3YWl0cyB1cCB0byB3YWl0X3NlY29uZHMgZm9yIHRoZSBmaXJzdCByZXBseS4iLAogICAgICBpbnB1dFNjaGVtYTogewogICAgICAgIHR5cGU6ICdvYmplY3QnLAogICAgICAgIHByb3BlcnRpZXM6IHsKICAgICAgICAgIGZvbGRlcjogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICdBYnNvbHV0ZSBmb2xkZXIgdG8gd29yayBpbiwgaW5zaWRlIG9uZSBvZiB0aGUgYWxsb3dlZCBmb2xkZXJzJyB9LAogICAgICAgICAgbWVzc2FnZTogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICJUaGUgdXNlcidzIHJlcXVlc3QsIGFzIHRoZXkgc2FpZCBpdCIgfSwKICAgICAgICAgIHdhaXRfc2Vjb25kczogeyB0eXBlOiAnaW50ZWdlcicsIG1pbmltdW06IDAsIG1heGltdW06IDUwLCBkZWZhdWx0OiAyMCB9LAogICAgICAgIH0sCiAgICAgICAgcmVxdWlyZWQ6IFsnZm9sZGVyJywgJ21lc3NhZ2UnXSwKICAgICAgfSwKICAgICAgYW5ub3RhdGlvbnM6IHdvcmssCiAgICAgIHJ1bjogYXN5bmMgKGFyZ3MpID0+IHsKICAgICAgICBjb25zdCBmb2xkZXIgPSBhcmcuc3RyaW5nKGFyZ3MsICdmb2xkZXInLCB7IG1heDogMV8wMDAgfSkKICAgICAgICBjb25zdCBtZXNzYWdlID0gYXJnLnN0cmluZyhhcmdzLCAnbWVzc2FnZScsIHsgbWF4OiAyMF8wMDAgfSkKICAgICAgICBjb25zdCBzZWNvbmRzID0gd2FpdFNlY29uZHMoYXJncykKICAgICAgICBpZiAoIXN0YXJ0Rm9sZGVycy5sZW5ndGgpIHRocm93IG5ldyBFcnJvcignU3RhcnRpbmcgQ2xhdWRlIENvZGUgc2Vzc2lvbnMgaXMgb2ZmOiBubyBmb2xkZXJzIGFyZSBhbGxvd2VkLiBUaGUgdXNlciBjYW4gYWRkIGZvbGRlcnMgaW4gdGhpcyBwYWNrXCdzIHNldHRpbmdzICgiRm9sZGVycyBmb3IgbmV3IHNlc3Npb25zIikuJykKICAgICAgICBpZiAoIWlzQWJzb2x1dGUoZm9sZGVyKSkgdGhyb3cgbmV3IEVycm9yKCdmb2xkZXIgbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoJykKICAgICAgICBsZXQgcmVhbAogICAgICAgIHRyeSB7CiAgICAgICAgICByZWFsID0gcmVhbHBhdGhTeW5jKHJlc29sdmUoZm9sZGVyKSkKICAgICAgICB9IGNhdGNoIHsKICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgJHtmb2xkZXJ9IGRvZXMgbm90IGV4aXN0YCkKICAgICAgICB9CiAgICAgICAgaWYgKCFzdGF0U3luYyhyZWFsKS5pc0RpcmVjdG9yeSgpKSB0aHJvdyBuZXcgRXJyb3IoYCR7Zm9sZGVyfSBpcyBub3QgYSBmb2xkZXJgKQogICAgICAgIGNvbnN0IHJvb3RzID0gc3RhcnRGb2xkZXJzLmZsYXRNYXAoKHJvb3QpID0+IHsKICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgIHJldHVybiBbcmVhbHBhdGhTeW5jKHJvb3QpXQogICAgICAgICAgfSBjYXRjaCB7CiAgICAgICAgICAgIHJldHVybiBbXQogICAgICAgICAgfQogICAgICAgIH0pCiAgICAgICAgaWYgKCFyb290cy5zb21lKChyb290KSA9PiBpbnNpZGUocmVhbCwgcm9vdCkpKSB0aHJvdyBuZXcgRXJyb3IoYCR7Zm9sZGVyfSBpcyBub3QgaW5zaWRlIGEgZm9sZGVyIGFsbG93ZWQgZm9yIG5ldyBzZXNzaW9ucyAoJHtzdGFydEZvbGRlcnMuam9pbignLCAnKX0pLmApCiAgICAgICAgYXdhaXQgcmVxdWlyZUNsYXVkZSgpCiAgICAgICAgY29uc3QgaWQgPSByYW5kb21VVUlEKCkKICAgICAgICBjb25zdCBoYW5kbGUgPSBsYXVuY2goaWQsIFsnLXAnLCAnLS1zZXNzaW9uLWlkJywgaWQsICctLW91dHB1dC1mb3JtYXQnLCAnanNvbiddLCByZWFsLCBtZXNzYWdlKQogICAgICAgIGNvbnN0IG91dGNvbWUgPSBhd2FpdCBzZXR0bGUoaGFuZGxlLCBzZWNvbmRzKQogICAgICAgIHJldHVybiBvdXRjb21lCiAgICAgICAgICA/IHsgc3RhcnRlZDogdHJ1ZSwgc2Vzc2lvbl9pZDogaWQsIGZvbGRlcjogcmVhbCwgcHJvamVjdDogYmFzZW5hbWUocmVhbCksIC4uLm91dGNvbWUgfQogICAgICAgICAgOiB7IHN0YXJ0ZWQ6IHRydWUsIHNlc3Npb25faWQ6IGlkLCBmb2xkZXI6IHJlYWwsIHByb2plY3Q6IGJhc2VuYW1lKHJlYWwpLCBmaW5pc2hlZDogZmFsc2UsIG5vdGU6ICdDbGF1ZGUgaXMgd29ya2luZyBvbiBpdDsgcmVhZF9zZXNzaW9uIHNob3dzIHRoZSByZXBseSB3aGVuIGl0IGZpbmlzaGVzLicgfQogICAgICB9LAogICAgfSwKICAgIHsKICAgICAgbmFtZTogJ3N0b3Bfc2Vzc2lvbicsCiAgICAgIGRlc2NyaXB0aW9uOiAnU3RvcCBhIGhlYWRsZXNzIHJ1biB0aGlzIHBhY2sgc3RhcnRlZCAoc2VuZF9tZXNzYWdlIG9yIHN0YXJ0X3Nlc3Npb24pIHRoYXQgaXMgc3RpbGwgd29ya2luZy4gVGhlIGNvbnZlcnNhdGlvbiBzbyBmYXIgaXMga2VwdC4gU2Vzc2lvbnMgb3BlbiBpbiBhIHRlcm1pbmFsLCBJREUsIG9yIGFwcCBhcmUgbmV2ZXIgc3RvcHBlZCBmcm9tIGhlcmU7IHRoZSB1c2VyIHN0b3BzIHRob3NlIHdoZXJlIHRoZXkgcnVuLicsCiAgICAgIGlucHV0U2NoZW1hOiB7IHR5cGU6ICdvYmplY3QnLCBwcm9wZXJ0aWVzOiB7IHNlc3Npb25faWQ6IHsgdHlwZTogJ3N0cmluZycgfSB9LCByZXF1aXJlZDogWydzZXNzaW9uX2lkJ10gfSwKICAgICAgYW5ub3RhdGlvbnM6IHsgcmVhZE9ubHlIaW50OiBmYWxzZSwgZGVzdHJ1Y3RpdmVIaW50OiB0cnVlLCBpZGVtcG90ZW50SGludDogdHJ1ZSB9LAogICAgICBydW46IGFzeW5jIChhcmdzKSA9PiB7CiAgICAgICAgY29uc3QgaWQgPSBhcmcuc3RyaW5nKGFyZ3MsICdzZXNzaW9uX2lkJywgeyBwYXR0ZXJuOiBTRVNTSU9OX0lEIH0pCiAgICAgICAgY29uc3QgaGFuZGxlID0gcnVucy5nZXQoaWQpCiAgICAgICAgaWYgKCFoYW5kbGUpIHRocm93IG5ldyBFcnJvcignTm8gcnVuIHN0YXJ0ZWQgZnJvbSBoZXJlIGlzIHdvcmtpbmcgb24gdGhhdCBzZXNzaW9uLiBTZXNzaW9ucyBvcGVuIGluIGEgdGVybWluYWwsIElERSwgb3IgYXBwIGNhbiBvbmx5IGJlIHN0b3BwZWQgdGhlcmUuJykKICAgICAgICBoYW5kbGUuc3RvcCgpCiAgICAgICAgYXdhaXQgUHJvbWlzZS5yYWNlKFtoYW5kbGUuZG9uZSwgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgNV8wMDApKV0pCiAgICAgICAgcmV0dXJuIHsgc3RvcHBlZDogdHJ1ZSwgc2Vzc2lvbl9pZDogaWQgfQogICAgICB9LAogICAgfSwKICBdCn0KCmNvbnN0IG5vdEZvdW5kID0gKGNvbW1hbmQsIGVycm9yKSA9PiAoZXJyb3I/LmNvZGUgPT09ICdFTk9FTlQnID8gYCR7Y29tbWFuZH0gaXMgbm90IGluc3RhbGxlZCBvciBub3Qgb24gdGhlIFBBVEguIEluc3RhbGwgQ2xhdWRlIENvZGUsIG9yIHNldCB0aGUgY2xhdWRlIGNvbW1hbmQgaW4gdGhpcyBwYWNrJ3Mgc2V0dGluZ3MuYCA6IG51bGwpCgovKiogYGNsYXVkZSAtLXZlcnNpb25gLCBjYWNoZWQgZm9yIGEgbWludXRlLiAqLwpleHBvcnQgY29uc3QgY2xhdWRlVmVyc2lvbiA9IChjb21tYW5kLCBlbnYpID0+IHsKICBsZXQgY2FjaGVkID0gbnVsbAogIHJldHVybiAoKSA9PiB7CiAgICBpZiAoY2FjaGVkICYmIERhdGUubm93KCkgLSBjYWNoZWQuYXQgPCA2MF8wMDApIHJldHVybiBjYWNoZWQudmFsdWUKICAgIGNvbnN0IHZhbHVlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gewogICAgICBleGVjRmlsZShjb21tYW5kLCBbJy0tdmVyc2lvbiddLCB7IHRpbWVvdXQ6IDE1XzAwMCwgZW52LCBjd2Q6IGhvbWVkaXIoKSB9LCAoZXJyb3IsIHN0ZG91dCkgPT4gKGVycm9yID8gcmVqZWN0KG5ldyBFcnJvcihub3RGb3VuZChjb21tYW5kLCBlcnJvcikgPz8gYGNsYXVkZSAtLXZlcnNpb24gZmFpbGVkOiAke2NsaXAoZXJyb3IubWVzc2FnZSwgMjAwKX1gKSkgOiByZXNvbHZlKHN0ZG91dC50cmltKCkpKSkKICAgIH0pCiAgICBjYWNoZWQgPSB7IGF0OiBEYXRlLm5vdygpLCB2YWx1ZSB9CiAgICB2YWx1ZS5jYXRjaCgoKSA9PiAoY2FjaGVkID0gbnVsbCkpCiAgICByZXR1cm4gdmFsdWUKICB9Cn0KCi8qKgogKiBMaXZlIENsYXVkZSBwcm9jZXNzZXMgZnJvbSBgY2xhdWRlIGFnZW50cyAtLWpzb25gLCBieSBzZXNzaW9uIGlkLCBjYWNoZWQgZm9yCiAqIHR3byBzZWNvbmRzOyBudWxsIHdoZW4gdGhlIGNvbW1hbmQgaXMgbWlzc2luZyBvciBmYWlscyAob2xkZXIgQ2xhdWRlIENvZGUpLgogKi8KZXhwb3J0IGNvbnN0IGNsYXVkZUxpdmUgPSAoY29tbWFuZCwgZW52KSA9PiB7CiAgbGV0IGNhY2hlZCA9IG51bGwKICByZXR1cm4gKCkgPT4gewogICAgaWYgKGNhY2hlZCAmJiBEYXRlLm5vdygpIC0gY2FjaGVkLmF0IDwgMl8wMDApIHJldHVybiBjYWNoZWQudmFsdWUKICAgIGNvbnN0IHZhbHVlID0gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHsKICAgICAgZXhlY0ZpbGUoY29tbWFuZCwgWydhZ2VudHMnLCAnLS1qc29uJ10sIHsgdGltZW91dDogMTBfMDAwLCBlbnYsIGN3ZDogaG9tZWRpcigpLCBtYXhCdWZmZXI6IDQgKiAxMDI0ICogMTAyNCB9LCAoZXJyb3IsIHN0ZG91dCkgPT4gewogICAgICAgIGlmIChlcnJvcikgcmV0dXJuIHJlc29sdmUobnVsbCkKICAgICAgICB0cnkgewogICAgICAgICAgY29uc3QgbGlzdCA9IEpTT04ucGFyc2Uoc3Rkb3V0KQogICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGxpc3QpKSByZXR1cm4gcmVzb2x2ZShudWxsKQogICAgICAgICAgcmVzb2x2ZShuZXcgTWFwKGxpc3QuZmlsdGVyKChlbnRyeSkgPT4gdHlwZW9mIGVudHJ5Py5zZXNzaW9uSWQgPT09ICdzdHJpbmcnKS5tYXAoKGVudHJ5KSA9PiBbZW50cnkuc2Vzc2lvbklkLCB7IHBpZDogZW50cnkucGlkID8/IG51bGwsIHN0YXR1czogZW50cnkuc3RhdHVzID8/IG51bGwsIHdhaXRpbmdGb3I6IGVudHJ5LndhaXRpbmdGb3IgPz8gbnVsbCwga2luZDogZW50cnkua2luZCA/PyBudWxsIH1dKSkpCiAgICAgICAgfSBjYXRjaCB7CiAgICAgICAgICByZXNvbHZlKG51bGwpCiAgICAgICAgfQogICAgICB9KQogICAgfSkKICAgIGNhY2hlZCA9IHsgYXQ6IERhdGUubm93KCksIHZhbHVlIH0KICAgIHJldHVybiB2YWx1ZQogIH0KfQoKLyoqCiAqIFN0YXJ0cyBhIGhlYWRsZXNzIGBjbGF1ZGVgIHdpdGggdGhlIHByb21wdCBvbiBzdGRpbiAoc28gYSBtZXNzYWdlIGlzIG5ldmVyCiAqIHJlYWQgYXMgYSBmbGFnKSwgaW4gaXRzIG93biBwcm9jZXNzIGdyb3VwIHNvIHN0b3BwaW5nIGl0IGFsc28gc3RvcHMgdGhlCiAqIHRvb2xzIGl0IHN0YXJ0ZWQuIEl0IGtlZXBzIHJ1bm5pbmcgaWYgdGhpcyBzZXJ2ZXIgZXhpdHMuCiAqLwpleHBvcnQgY29uc3QgY2xhdWRlUnVuID0gKGNvbW1hbmQsIGVudikgPT4gKHsgYXJncywgY3dkLCBpbnB1dCB9KSA9PiB7CiAgY29uc3Qgd2luZG93cyA9IHByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMicKICBjb25zdCBjaGlsZCA9IHNwYXduKGNvbW1hbmQsIGFyZ3MsIHsgY3dkLCBlbnYsIGRldGFjaGVkOiAhd2luZG93cywgc3RkaW86IFsncGlwZScsICdwaXBlJywgJ3BpcGUnXSwgd2luZG93c0hpZGU6IHRydWUgfSkKICBsZXQgc3Rkb3V0ID0gJycKICBsZXQgc3RkZXJyID0gJycKICBjaGlsZC5zdGRvdXQuc2V0RW5jb2RpbmcoJ3V0ZjgnKS5vbignZGF0YScsIChjaHVuaykgPT4gewogICAgaWYgKHN0ZG91dC5sZW5ndGggPCAyXzAwMF8wMDApIHN0ZG91dCArPSBjaHVuawogIH0pCiAgY2hpbGQuc3RkZXJyLnNldEVuY29kaW5nKCd1dGY4Jykub24oJ2RhdGEnLCAoY2h1bmspID0+IHsKICAgIGlmIChzdGRlcnIubGVuZ3RoIDwgMjBfMDAwKSBzdGRlcnIgKz0gY2h1bmsKICB9KQogIGNvbnN0IGRvbmUgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gewogICAgY2hpbGQub25jZSgnZXJyb3InLCAoZXJyb3IpID0+IHJlc29sdmUoeyBjb2RlOiAtMSwgc3Rkb3V0LCBzdGRlcnI6IG5vdEZvdW5kKGNvbW1hbmQsIGVycm9yKSA/PyBlcnJvci5tZXNzYWdlIH0pKQogICAgY2hpbGQub25jZSgnY2xvc2UnLCAoY29kZSkgPT4gcmVzb2x2ZSh7IGNvZGUsIHN0ZG91dCwgc3RkZXJyIH0pKQogIH0pCiAgY2hpbGQuc3RkaW4ub24oJ2Vycm9yJywgKCkgPT4ge30pCiAgY2hpbGQuc3RkaW4uZW5kKGlucHV0KQogIHJldHVybiB7CiAgICBwaWQ6IGNoaWxkLnBpZCA/PyBudWxsLAogICAgZG9uZSwKICAgIHN0b3AoKSB7CiAgICAgIHRyeSB7CiAgICAgICAgaWYgKCF3aW5kb3dzICYmIGNoaWxkLnBpZCkgcHJvY2Vzcy5raWxsKC1jaGlsZC5waWQsICdTSUdURVJNJykKICAgICAgICBlbHNlIGNoaWxkLmtpbGwoKQogICAgICB9IGNhdGNoIHsKICAgICAgICBjaGlsZC5raWxsKCkKICAgICAgfQogICAgfSwKICB9Cn0KCmlmIChpbXBvcnQubWV0YS51cmwgPT09IHBhdGhUb0ZpbGVVUkwocHJvY2Vzcy5hcmd2WzFdID8/ICcnKS5ocmVmKSB7CiAgLy8gQ2xhdWRlIHJ1bnMgd2l0aCB0aGlzIHNlcnZlcidzIGVudmlyb25tZW50IG1pbnVzIHRoZSBwYWNrJ3Mgb3duIHNldHRpbmdzLgogIC8vIEFuIHVuc2V0IHNldHRpbmcgYXJyaXZlcyBhcyBhbiBlbXB0eSBzdHJpbmcsIHdoaWNoIENsYXVkZSBtdXN0IG5vdCBzZWUgYXMgYQogIC8vIGNvbmZpZyBmb2xkZXI7IHRoZSBtYXJrZXJzIG9mIGFuIGVuY2xvc2luZyBDbGF1ZGUgc2Vzc2lvbiBhcmUgZHJvcHBlZCB0b28uCiAgY29uc3QgZW52ID0geyAuLi5wcm9jZXNzLmVudiB9CiAgZm9yIChjb25zdCBuYW1lIG9mIFsnU0lERUJVRF9IT01FJywgJ0NMQVVERV9TRVNTSU9OU19TVEFSVF9GT0xERVJTJywgJ0NMQVVERV9TRVNTSU9OU19SVU5OSU5HX01JTlVURVMnLCAnQ0xBVURFX0NPREVfQ09NTUFORCcsICdDTEFVREVDT0RFJywgJ0NMQVVERV9DT0RFX0VOVFJZUE9JTlQnXSkgZGVsZXRlIGVudltuYW1lXQogIGlmICghZW52LkNMQVVERV9DT05GSUdfRElSPy50cmltKCkpIGRlbGV0ZSBlbnYuQ0xBVURFX0NPTkZJR19ESVIKICBjb25zdCBjb21tYW5kID0gcHJvY2Vzcy5lbnYuQ0xBVURFX0NPREVfQ09NTUFORD8udHJpbSgpIHx8ICdjbGF1ZGUnCiAgY29uc3QgY29uZmlnRGlyID0gcHJvY2Vzcy5lbnYuQ0xBVURFX0NPTkZJR19ESVI/LnRyaW0oKSB8fCBqb2luKGhvbWVkaXIoKSwgJy5jbGF1ZGUnKQogIGNvbnN0IHNpZGVidWRIb21lID0gcHJvY2Vzcy5lbnYuU0lERUJVRF9IT01FPy50cmltKCkgfHwgam9pbihob21lZGlyKCksICcucmVtb3RlLXZvaWNlLWFnZW50JykKICBjb25zdCBtaW51dGVzID0gTnVtYmVyLnBhcnNlSW50KHByb2Nlc3MuZW52LkNMQVVERV9TRVNTSU9OU19SVU5OSU5HX01JTlVURVMgPz8gJycsIDEwKQogIGNvbnN0IHN0b3JlID0gY2xhdWRlU3RvcmUoeyBjb25maWdEaXIsIGhpZGRlblJvb3RzOiBbc2lkZWJ1ZEhvbWVdIH0pCiAgc2VydmUoewogICAgbmFtZTogJ3NpZGVidWQtcGFjay1jbGF1ZGUtY29kZS1zZXNzaW9ucycsCiAgICB2ZXJzaW9uOiAnMS4wLjAnLAogICAgdG9vbHM6IGNsYXVkZVRvb2xzKHsKICAgICAgc3RvcmUsCiAgICAgIGxpdmU6IGNsYXVkZUxpdmUoY29tbWFuZCwgZW52KSwKICAgICAgdmVyc2lvbjogY2xhdWRlVmVyc2lvbihjb21tYW5kLCBlbnYpLAogICAgICBydW46IGNsYXVkZVJ1bihjb21tYW5kLCBlbnYpLAogICAgICBzdGFydEZvbGRlcnM6IGZvbGRlckxpc3QocHJvY2Vzcy5lbnYuQ0xBVURFX1NFU1NJT05TX1NUQVJUX0ZPTERFUlMpLAogICAgICBydW5uaW5nV2luZG93TXM6IChOdW1iZXIuaXNGaW5pdGUobWludXRlcykgJiYgbWludXRlcyA+IDAgPyBNYXRoLm1pbihtaW51dGVzLCAxMjApIDogNSkgKiA2MF8wMDAsCiAgICB9KSwKICB9KQp9Cgo=","server/mcp.mjs":"Ly8gQSBtaW5pbWFsIE1DUCBzZXJ2ZXIgb3ZlciBzdGRpbzogbmV3bGluZS1kZWxpbWl0ZWQgSlNPTi1SUEMgMi4wIHdpdGggdGhlCi8vIGluaXRpYWxpemUsIHBpbmcsIHRvb2xzL2xpc3QsIGFuZCB0b29scy9jYWxsIG1ldGhvZHMuIE5vIGRlcGVuZGVuY2llcywgc28gYQovLyBwYWNrJ3Mgc2VydmVyIHJ1bnMgd2l0aCBwbGFpbiBgbm9kZWAgYW5kIG5vdGhpbmcgdG8gaW5zdGFsbC4gQ29weSB0aGlzIGZpbGUKLy8gaW50byBhbnkgcGFjayB0aGF0IHNoaXBzIGl0cyBvd24gc2VydmVyLgppbXBvcnQgeyBjcmVhdGVJbnRlcmZhY2UgfSBmcm9tICdub2RlOnJlYWRsaW5lJwoKLyoqCiAqIEVhY2ggdG9vbCBpcyBgeyBuYW1lLCBkZXNjcmlwdGlvbiwgaW5wdXRTY2hlbWEsIGFubm90YXRpb25zLCBydW4gfWAsIHdoZXJlCiAqIGBydW4oYXJncylgIHJldHVybnMgSlNPTiBkYXRhIChzZW50IGFzIHN0cnVjdHVyZWQgY29udGVudCBhbmQgYXMgdGV4dCkgb3IKICogdGhyb3dzIGFuIEVycm9yIHdob3NlIG1lc3NhZ2UgdGhlIGNhbGxlciBzZWVzLgogKi8KZXhwb3J0IGZ1bmN0aW9uIHNlcnZlKHsgbmFtZSwgdmVyc2lvbiwgdG9vbHMgfSkgewogIGNvbnN0IHNlbmQgPSAobWVzc2FnZSkgPT4gcHJvY2Vzcy5zdGRvdXQud3JpdGUoYCR7SlNPTi5zdHJpbmdpZnkobWVzc2FnZSl9XG5gKQogIGNvbnN0IGhhbmRsZXJzID0gewogICAgaW5pdGlhbGl6ZTogKHBhcmFtcykgPT4gKHsgcHJvdG9jb2xWZXJzaW9uOiBwYXJhbXM/LnByb3RvY29sVmVyc2lvbiA/PyAnMjAyNS0wNi0xOCcsIGNhcGFiaWxpdGllczogeyB0b29sczoge30gfSwgc2VydmVySW5mbzogeyBuYW1lLCB2ZXJzaW9uIH0gfSksCiAgICBwaW5nOiAoKSA9PiAoe30pLAogICAgJ3Rvb2xzL2xpc3QnOiAoKSA9PiAoeyB0b29sczogdG9vbHMubWFwKCh7IHJ1bjogX3J1biwgLi4udG9vbCB9KSA9PiB0b29sKSB9KSwKICAgICd0b29scy9jYWxsJzogKHBhcmFtcykgPT4gY2FsbFRvb2wodG9vbHMsIHBhcmFtcz8ubmFtZSwgcGFyYW1zPy5hcmd1bWVudHMgPz8ge30pLAogIH0KICBjb25zdCBpbnB1dCA9IGNyZWF0ZUludGVyZmFjZSh7IGlucHV0OiBwcm9jZXNzLnN0ZGluIH0pCiAgaW5wdXQub24oJ2xpbmUnLCBhc3luYyAobGluZSkgPT4gewogICAgbGV0IG1lc3NhZ2UKICAgIHRyeSB7CiAgICAgIG1lc3NhZ2UgPSBKU09OLnBhcnNlKGxpbmUpCiAgICB9IGNhdGNoIHsKICAgICAgcmV0dXJuCiAgICB9CiAgICAvLyBOb3RpZmljYXRpb25zIChubyBpZCkgbmVlZCBubyByZXBseS4KICAgIGlmIChtZXNzYWdlPy5pZCA9PT0gdW5kZWZpbmVkIHx8IG1lc3NhZ2UuaWQgPT09IG51bGwpIHJldHVybgogICAgY29uc3QgaGFuZGxlciA9IGhhbmRsZXJzW21lc3NhZ2UubWV0aG9kXQogICAgaWYgKCFoYW5kbGVyKSByZXR1cm4gc2VuZCh7IGpzb25ycGM6ICcyLjAnLCBpZDogbWVzc2FnZS5pZCwgZXJyb3I6IHsgY29kZTogLTMyNjAxLCBtZXNzYWdlOiBgTWV0aG9kIG5vdCBmb3VuZDogJHttZXNzYWdlLm1ldGhvZH1gIH0gfSkKICAgIHRyeSB7CiAgICAgIHNlbmQoeyBqc29ucnBjOiAnMi4wJywgaWQ6IG1lc3NhZ2UuaWQsIHJlc3VsdDogYXdhaXQgaGFuZGxlcihtZXNzYWdlLnBhcmFtcykgfSkKICAgIH0gY2F0Y2ggKGVycm9yKSB7CiAgICAgIHNlbmQoeyBqc29ucnBjOiAnMi4wJywgaWQ6IG1lc3NhZ2UuaWQsIGVycm9yOiB7IGNvZGU6IC0zMjYwMywgbWVzc2FnZTogZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpIH0gfSkKICAgIH0KICB9KQogIGlucHV0Lm9uKCdjbG9zZScsICgpID0+IHByb2Nlc3MuZXhpdCgwKSkKfQoKLyoqIFJ1bnMgb25lIHRvb2w7IGZhaWx1cmVzIGJlY29tZSBhbiBlcnJvciByZXN1bHQgdGhlIGFnZW50IGNhbiByZWFkLCBuZXZlciBhIGNyYXNoLiAqLwpleHBvcnQgYXN5bmMgZnVuY3Rpb24gY2FsbFRvb2wodG9vbHMsIG5hbWUsIGFyZ3MpIHsKICBjb25zdCB0b29sID0gdG9vbHMuZmluZCgoY2FuZGlkYXRlKSA9PiBjYW5kaWRhdGUubmFtZSA9PT0gbmFtZSkKICBpZiAoIXRvb2wpIHJldHVybiB7IGNvbnRlbnQ6IFt7IHR5cGU6ICd0ZXh0JywgdGV4dDogYFVua25vd24gdG9vbCAke25hbWV9YCB9XSwgaXNFcnJvcjogdHJ1ZSB9CiAgdHJ5IHsKICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0b29sLnJ1bihhcmdzKQogICAgcmV0dXJuIHsgY29udGVudDogW3sgdHlwZTogJ3RleHQnLCB0ZXh0OiBKU09OLnN0cmluZ2lmeShkYXRhKSB9XSwgc3RydWN0dXJlZENvbnRlbnQ6IGRhdGEgfQogIH0gY2F0Y2ggKGVycm9yKSB7CiAgICByZXR1cm4geyBjb250ZW50OiBbeyB0eXBlOiAndGV4dCcsIHRleHQ6IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKSB9XSwgaXNFcnJvcjogdHJ1ZSB9CiAgfQp9CgovKiogQXJndW1lbnQgY2hlY2tzIHRoYXQgdGhyb3cgYSByZWFkYWJsZSBtZXNzYWdlOyBlYWNoIHJldHVybnMgdGhlIHZhbHVlIG9yIGl0cyBkZWZhdWx0LiAqLwpleHBvcnQgY29uc3QgYXJnID0gewogIHN0cmluZyhhcmdzLCBrZXksIHsgbWF4ID0gNTAwLCBwYXR0ZXJuLCBmYWxsYmFjayB9ID0ge30pIHsKICAgIGNvbnN0IHZhbHVlID0gYXJnc1trZXldID8/IGZhbGxiYWNrCiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJyB8fCAhdmFsdWUubGVuZ3RoIHx8IHZhbHVlLmxlbmd0aCA+IG1heCB8fCAocGF0dGVybiAmJiAhcGF0dGVybi50ZXN0KHZhbHVlKSkpIHRocm93IG5ldyBFcnJvcihgJHtrZXl9IGlzIG1pc3Npbmcgb3IgaW52YWxpZGApCiAgICByZXR1cm4gdmFsdWUKICB9LAogIG9wdGlvbmFsU3RyaW5nKGFyZ3MsIGtleSwgeyBtYXggPSAyXzAwMCB9ID0ge30pIHsKICAgIGNvbnN0IHZhbHVlID0gYXJnc1trZXldCiAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCkgcmV0dXJuIHVuZGVmaW5lZAogICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycgfHwgdmFsdWUubGVuZ3RoID4gbWF4KSB0aHJvdyBuZXcgRXJyb3IoYCR7a2V5fSBpcyBpbnZhbGlkYCkKICAgIHJldHVybiB2YWx1ZQogIH0sCiAgaW50ZWdlcihhcmdzLCBrZXksIHsgbWluLCBtYXgsIGZhbGxiYWNrIH0pIHsKICAgIGNvbnN0IHZhbHVlID0gYXJnc1trZXldID8/IGZhbGxiYWNrCiAgICBpZiAoIU51bWJlci5pc0ludGVnZXIodmFsdWUpIHx8IHZhbHVlIDwgbWluIHx8IHZhbHVlID4gbWF4KSB0aHJvdyBuZXcgRXJyb3IoYCR7a2V5fSBtdXN0IGJlIGEgd2hvbGUgbnVtYmVyIGZyb20gJHttaW59IHRvICR7bWF4fWApCiAgICByZXR1cm4gdmFsdWUKICB9LAogIGJvb2xlYW4oYXJncywga2V5LCBmYWxsYmFjaykgewogICAgY29uc3QgdmFsdWUgPSBhcmdzW2tleV0gPz8gZmFsbGJhY2sKICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdib29sZWFuJykgdGhyb3cgbmV3IEVycm9yKGAke2tleX0gbXVzdCBiZSB0cnVlIG9yIGZhbHNlYCkKICAgIHJldHVybiB2YWx1ZQogIH0sCiAgb25lT2YoYXJncywga2V5LCBvcHRpb25zLCBmYWxsYmFjaykgewogICAgY29uc3QgdmFsdWUgPSBhcmdzW2tleV0gPz8gZmFsbGJhY2sKICAgIGlmICghb3B0aW9ucy5pbmNsdWRlcyh2YWx1ZSkpIHRocm93IG5ldyBFcnJvcihgJHtrZXl9IG11c3QgYmUgb25lIG9mICR7b3B0aW9ucy5qb2luKCcsICcpfWApCiAgICByZXR1cm4gdmFsdWUKICB9LAogIGxpc3QoYXJncywga2V5LCB7IG1pbiA9IDAsIG1heCA9IDIwLCBpdGVtIH0pIHsKICAgIGNvbnN0IHZhbHVlID0gYXJnc1trZXldCiAgICBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWUpIHx8IHZhbHVlLmxlbmd0aCA8IG1pbiB8fCB2YWx1ZS5sZW5ndGggPiBtYXggfHwgIXZhbHVlLmV2ZXJ5KGl0ZW0pKSB0aHJvdyBuZXcgRXJyb3IoYCR7a2V5fSBpcyBtaXNzaW5nIG9yIGludmFsaWRgKQogICAgcmV0dXJuIHZhbHVlCiAgfSwKICBkYXRlVGltZShhcmdzLCBrZXksIGZhbGxiYWNrKSB7CiAgICBjb25zdCB2YWx1ZSA9IGFyZ3Nba2V5XSA/PyBmYWxsYmFjawogICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHJldHVybiB1bmRlZmluZWQKICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnIHx8ICEvXlxkezR9LVxkezJ9LVxkezJ9VFxkezJ9OlxkezJ9KDpcZHsyfShcLlxkKyk/KT8oWnxbKy1dXGR7Mn06XGR7Mn0pJC8udGVzdCh2YWx1ZSkpIHRocm93IG5ldyBFcnJvcihgJHtrZXl9IG11c3QgYmUgYW4gSVNPIGRhdGUtdGltZSB3aXRoIGEgdGltZSB6b25lYCkKICAgIHJldHVybiB2YWx1ZQogIH0sCn0K","SKILL.md":"LS0tCm5hbWU6IENsYXVkZSBDb2RlIHNlc3Npb25zCmRlc2NyaXB0aW9uOiBTZWUgYW5kIHN0ZWVyIHRoZSBDbGF1ZGUgQ29kZSBzZXNzaW9ucyB0aGUgdXNlciBzdGFydGVkIGluIGEgdGVybWluYWwsIElERSwgb3IgdGhlIGRlc2t0b3AgYXBwIOKAlCB3aGF0IGVhY2ggaXMgZG9pbmcsIHdoYXQgaXMgd2FpdGluZyBvbiB0aGVtLCBhbmQgd2hhdCBmaW5pc2hlZCDigJQgYW5kIGNvbnRpbnVlIG9yIHN0YXJ0IG9uZSBoZWFkbGVzcy4KLS0tCgojIENsYXVkZSBDb2RlIHNlc3Npb25zCgpUaGlzIHBhY2sgc2hvd3MgdGhlIENsYXVkZSBDb2RlIHNlc3Npb25zIHRoZSB1c2VyIHN0YXJ0ZWQgKipvdXRzaWRlIFNpZGVidWQqKjogaW4gYSB0ZXJtaW5hbCwgYW4gSURFLCBvciB0aGUgQ2xhdWRlIGRlc2t0b3AgYXBwLiBJdCByZWFkcyBDbGF1ZGUgQ29kZSdzIG93biBzZXNzaW9uIGZpbGVzIHJlYWQtb25seSBhbmQgYWN0cyB0aHJvdWdoIHRoZSBgY2xhdWRlYCBjb21tYW5kIHdpdGggdGhlIHVzZXIncyBvd24gQ2xhdWRlIGxvZ2luIGFuZCBzZXR0aW5ncy4gVG9vbCBuYW1lcyBiZWxvdyBhcmUgdGhlIHNlcnZlcidzIG93bjsgeW91ciBNQ1AgY2xpZW50IG1heSBzaG93IHRoZW0gd2l0aCB0aGlzIGludGVncmF0aW9uJ3MgcHJlZml4IChmb3IgZXhhbXBsZSBgY2xhdWRlX2NvZGVfc2Vzc2lvbnNfX2xpc3Rfc2Vzc2lvbnNgKS4gUmVzdWx0cyBhcmUgSlNPTi4KCldvcmsgdGhhdCBTaWRlYnVkIGl0c2VsZiBzdGFydGVkIChhIFNpZGVidWQgdGFzayBvciBqb2IsIGV2ZW4gb25lIHJ1biBieSBDbGF1ZGUpIGlzIHRyYWNrZWQgYXMgYSBTaWRlYnVkIHRhc2ssIG5vdCBoZXJlLiBBbnN3ZXIgcXVlc3Rpb25zIGFib3V0IHRoYXQgd29yayBmcm9tIFNpZGVidWQncyB0YXNrcy4KCiMjIFRlcm1zCgotICoqU2Vzc2lvbioqOiBvbmUgQ2xhdWRlIENvZGUgY29udmVyc2F0aW9uIChgaWRgLCBgdGl0bGVgLCBgcHJvamVjdGAsIGBmb2xkZXJgLCBgYnJhbmNoYCkuIGBwcm9qZWN0YCBpcyB0aGUgbmFtZSBvZiB0aGUgZm9sZGVyIGl0IHJ1bnMgaW4sIHdoaWNoIGlzIGhvdyB0aGUgdXNlciB1c3VhbGx5IG5hbWVzIGl0ICgicG9ydGZvbGlvIiwgInRoZSBBUEkiKS4KLSAqKnN0YXRlKio6IGBydW5uaW5nYCAoQ2xhdWRlIGlzIHdvcmtpbmcpLCBgd2FpdGluZ2AgKENsYXVkZSBpcyB3YWl0aW5nIGZvciB0aGUgdXNlciBpbiB0aGF0IHRlcm1pbmFsIG9yIGFwcCwgb2Z0ZW4gYSBwZXJtaXNzaW9uIHByb21wdDsgYHdhaXRpbmdGb3JgIHNheXMgd2hhdCksIGBvcGVuYCAob3BlbiBpbiBhIHRlcm1pbmFsIG9yIGFwcCBidXQgaWRsZSwgaXRzIHR1cm4gaXMgZG9uZSksIG9yIGBpZGxlYCAobm8gQ2xhdWRlIHByb2Nlc3MgaGFzIGl0IG9wZW4pLgotICoqbGl2ZSoqOiBgdHJ1ZWAgd2hpbGUgYSBDbGF1ZGUgcHJvY2VzcyAodGVybWluYWwsIElERSwgYXBwLCBvciBhIHJ1biB0aGlzIHBhY2sgc3RhcnRlZCkgaGFzIHRoZSBzZXNzaW9uIG9wZW4uIEEgbGl2ZSBzZXNzaW9uIGlzIG5ldmVyIGNvbnRpbnVlZCBmcm9tIGhlcmUuCi0gKip0dXJuKio6IGBkb25lYCBtZWFucyBpdHMgbGFzdCB0dXJuIGVuZGVkIGluIHRoZSBwYXN0IDE1IG1pbnV0ZXMuCgojIyBGaW5kaW5nIHRoZSByaWdodCBzZXNzaW9uIGZyb20gdGhlIHVzZXIncyB3b3JkcwoKMS4gYGxpc3Rfc2Vzc2lvbnNgIGxpc3RzIHNlc3Npb25zIG5ld2VzdCBhY3Rpdml0eSBmaXJzdC4gTmFycm93IGl0IHdpdGggYHByb2plY3RgIChmb2xkZXIgbmFtZSBvciBwYXRoLCBlLmcuICJwb3J0Zm9saW8iKSBhbmQvb3IgYHF1ZXJ5YCAod29yZHMgaW4gdGhlIHRpdGxlLCBicmFuY2gsIG9yIGxhc3QgcHJvbXB0LCBlLmcuICJkYXJrIG1vZGUiIG9yICJjaGVja291dC1maXgiKTsgYHJ1bm5pbmdfb25seTogdHJ1ZWAgZm9yICJ3aGF0J3MgcnVubmluZyIuCjIuIE1hdGNoIHRoZSB1c2VyJ3Mgd29yZHMgYWdhaW5zdCBgcHJvamVjdGAsIGBicmFuY2hgLCBhbmQgYHRpdGxlYC4gIldoYXQncyBDbGF1ZGUgZG9pbmcgaW4gcG9ydGZvbGlvPyIgbWVhbnMgdGhlIG1vc3QgcmVjZW50IHNlc3Npb24gd2hvc2UgcHJvamVjdCBpcyBwb3J0Zm9saW87IGlmIHNldmVyYWwgdGhlcmUgYXJlIHJ1bm5pbmcsIG5hbWUgZWFjaCBicmllZmx5LgozLiBJZiBub25lIG9yIHNldmVyYWwgZml0IGFuZCB0aGUgdXNlciBtZWFudCBvbmUsIHNheSB3aGljaCB5b3UgZm91bmQgYW5kIGFzay4gYGxpc3RfcHJvamVjdHNgIGhlbHBzIHdoZW4gdGhlIHVzZXIgbmFtZXMgYSBwcm9qZWN0IHlvdSBkbyBub3Qgc2VlLgo0LiBSZWZlciB0byBzZXNzaW9ucyBieSB0aGVpciB0aXRsZSBhbmQgcHJvamVjdCwgbmV2ZXIgYnkgaWQuCgojIyBSZWFkaW5nIGZvciB2b2ljZQoKYHJlYWRfc2Vzc2lvbmAgd2l0aCB0aGUgYHNlc3Npb25faWRgIHJldHVybnMgdGhlIGxhdGVzdCByZXF1ZXN0IGFuZCBDbGF1ZGUncyByZXBsaWVzICh0b29sIGNhbGxzIGFuZCB0aGlua2luZyBsZWZ0IG91dCksIGFscmVhZHkgdHJpbW1lZC4gU3VtbWFyaXplIHByb2dyZXNzIGluICoqdHdvIHNlbnRlbmNlcyBhdCBtb3N0Kio6IHdoYXQgaXQgd2FzIGFza2VkLCBhbmQgd2hlcmUgaXQgZ290IHRvIChkb25lLCBzdGlsbCB3b3JraW5nLCBvciB3YWl0aW5nIG9uIHRoZSB1c2VyIGFuZCBmb3Igd2hhdCkuIE5ldmVyIHJlYWQgY29kZSwgcGF0aHMsIGlkcywgb3IgbG9uZyBtZXNzYWdlcyBhbG91ZC4KCiMjIENoYW5naW5nIHRoaW5ncwoKLSAqKkNvbnRpbnVlIGEgc2Vzc2lvbioqOiBgc2VuZF9tZXNzYWdlYCB3aXRoIHRoZSBgc2Vzc2lvbl9pZGAgYW5kICoqZXhhY3RseSB3aGF0IHRoZSB1c2VyIHNhaWQqKiB0byBzZW5kLCB3b3JkIGZvciB3b3JkLiBEbyBub3QgcmVwaHJhc2UsIGFkZCBpbnN0cnVjdGlvbnMsIG9yIGNvbWJpbmUgc2V2ZXJhbCByZXF1ZXN0cy4gSXQgcnVucyBgY2xhdWRlIC1wIC0tcmVzdW1lYCBpbiB0aGUgc2Vzc2lvbidzIGZvbGRlciBhbmQgd2FpdHMgdXAgdG8gYHdhaXRfc2Vjb25kc2AgKGRlZmF1bHQgMjApOyBpZiBDbGF1ZGUgYW5zd2VycyBpbiB0aW1lLCBzdW1tYXJpemUgdGhlIGByZXBseWA7IG90aGVyd2lzZSBzYXkgQ2xhdWRlIGlzIHdvcmtpbmcgb24gaXQgYW5kIHJlYWQgdGhlIHNlc3Npb24gbGF0ZXIgd2hlbiBhc2tlZC4KLSAqKlN0YXJ0IGEgc2Vzc2lvbioqOiBgc3RhcnRfc2Vzc2lvbmAgd2l0aCBhbiBhYnNvbHV0ZSBgZm9sZGVyYCBhbmQgdGhlIHVzZXIncyByZXF1ZXN0LCBvbmx5IHdoZW4gdGhlIHVzZXIgYXNrcyBmb3IgbmV3IHdvcmsgb3V0c2lkZSBhbiBleGlzdGluZyBzZXNzaW9uLiBUaGUgZm9sZGVyIG11c3QgYmUgaW5zaWRlIG9uZSB0aGUgdXNlciBhbGxvd2VkIGluIHRoaXMgcGFjaydzIHNldHRpbmdzOyBpZiBzdGFydGluZyBpcyBvZmYgb3IgdGhlIGZvbGRlciBpcyBub3QgYWxsb3dlZCwgdGVsbCB0aGUgdXNlciB0byBhZGQgaXQgdW5kZXIgKipGb2xkZXJzIGZvciBuZXcgc2Vzc2lvbnMqKiBpbiB0aGUgcGFjaydzIHNldHRpbmdzIG9uIHRoZSBjb21wdXRlci4gRG8gbm90IGxvb2sgZm9yIGEgZGlmZmVyZW50IGZvbGRlciB0byBnZXQgYXJvdW5kIGl0LgotIEEgc3VjY2Vzc2Z1bCBjYWxsIGlzIHRoZSBjb25maXJtYXRpb24uIERvIG5vdCBzZW5kIHRoZSBzYW1lIG1lc3NhZ2UgdHdpY2UuCgojIyBSZWZ1c2Fsczogd2hhdCBuZXZlciB0byBkbwoKLSAqKk5ldmVyIGNvbnRpbnVlIGEgbGl2ZSBzZXNzaW9uKiogKGBsaXZlOiB0cnVlYCwgb3Igc3RhdGUgYHJ1bm5pbmdgLCBgd2FpdGluZ2AsIG9yIGBvcGVuYCkuIFR3byB3cml0ZXJzIGNvcnJ1cHQgYSBzZXNzaW9uLiBgc2VuZF9tZXNzYWdlYCByZWZ1c2VzIGl0OyB0ZWxsIHRoZSB1c2VyIGl0IGlzIG9wZW4gaW4gYSB0ZXJtaW5hbCBvciBhcHAgYW5kIHRvIHJlcGx5IHRoZXJlIChvciBjbG9zZSBpdCBhbmQgYXNrIGFnYWluKS4gRG8gbm90IHJldHJ5LCBhbmQgZG8gbm90IHdvcmsgYXJvdW5kIGl0IGJ5IHN0YXJ0aW5nIGEgbmV3IHNlc3Npb24gd2l0aCB0aGUgc2FtZSByZXF1ZXN0IHVubGVzcyB0aGUgdXNlciBhc2tzIGZvciB0aGF0LgotICoqTmV2ZXIgYW5zd2VyIENsYXVkZSdzIHBlcm1pc3Npb24gcHJvbXB0cy4qKiBBIHNlc3Npb24gaW4gc3RhdGUgYHdhaXRpbmdgIGlzIGFza2luZyB0aGUgdXNlciBzb21ldGhpbmcgaW4gdGhlaXIgdGVybWluYWwgb3IgYXBwOyB0ZWxsIHRoZW0gd2hhdCBpdCBpcyB3YWl0aW5nIGZvciAoYHdhaXRpbmdGb3JgKSBhbmQgdGhhdCB0aGV5IG5lZWQgdG8gYW5zd2VyIGl0IHRoZXJlLgotIEhlYWRsZXNzIHJ1bnMgY2Fubm90IGFuc3dlciBwZXJtaXNzaW9uIHByb21wdHMgZWl0aGVyLiBXaGVuIGEgcmVzdWx0IGxpc3RzIGBwZXJtaXNzaW9uRGVuaWVkYCwgdGVsbCB0aGUgdXNlciB3aGljaCB0b29scyB3ZXJlIHJlZnVzZWQ7IHRoZXkgY2FuIGFsbG93IHRoZW0gaW4gdGhlaXIgQ2xhdWRlIHNldHRpbmdzIG9yIGNvbnRpbnVlIGluIGEgdGVybWluYWwuIE5ldmVyIHN1Z2dlc3Qgc2tpcHBpbmcgcGVybWlzc2lvbnMuCgojIyBTdG9wcGluZyBhbmQgdW5kbwoKYHN0b3Bfc2Vzc2lvbmAgc3RvcHMgYSBydW4gdGhpcyBwYWNrIHN0YXJ0ZWQgKGZyb20gYHNlbmRfbWVzc2FnZWAgb3IgYHN0YXJ0X3Nlc3Npb25gKSB0aGF0IGlzIHN0aWxsIHdvcmtpbmc7IHRoZSBjb252ZXJzYXRpb24gc28gZmFyIGlzIGtlcHQuIFNlc3Npb25zIG9wZW4gaW4gYSB0ZXJtaW5hbCwgSURFLCBvciBhcHAgY2Fubm90IGJlIHN0b3BwZWQgZnJvbSBoZXJlOiB0aGUgdXNlciBzdG9wcyB0aGVtIHdoZXJlIHRoZXkgcnVuIChFc2Mgb3IgQ3RybCtDKS4gQ2xhdWRlJ3MgY2hhbmdlcyB0byBmaWxlcyBhcmUgbm90IHVuZG9uZSBieSBzdG9wcGluZzsgdGhlIHVzZXIgcmV2aWV3cyB0aGVtIGluIHRoZSBwcm9qZWN0IChmb3IgZXhhbXBsZSB3aXRoIGdpdCkuCgojIyBMaW1pdHMgYW5kIGVycm9ycwoKLSBUaXRsZXMgYXJlIENsYXVkZSdzIG93biB0aXRsZSBmb3IgdGhlIHNlc3Npb24gKG9yIGl0cyBmaXJzdCByZXF1ZXN0KSBhbmQgY2FuIGxhZyBhIGxpdHRsZSBiZWhpbmQgdGhlIHdvcmsuCi0gUGVuZGluZyBwZXJtaXNzaW9uIHByb21wdHMgc2hvdyBvbmx5IGFzIGB3YWl0aW5nYDsgdGhlIHBhY2sgY2Fubm90IHNlZSBvciBhbnN3ZXIgdGhlIHByb21wdCBpdHNlbGYuCi0gIm5vdCBpbnN0YWxsZWQgb3Igbm90IG9uIHRoZSBQQVRIIjogQ2xhdWRlIENvZGUgaXMgbWlzc2luZywgb3IgdGhlIGNvbXBhbmlvbiBjYW5ub3QgZmluZCBpdDsgdGhlIHVzZXIgc2V0cyB0aGUgY2xhdWRlIGNvbW1hbmQgaW4gdGhlIHBhY2sncyBzZXR0aW5ncy4KLSAibmVlZHMgQ2xhdWRlIENvZGUgMi4xLjAgb3IgbmV3ZXIiOiB0aGUgdXNlciBydW5zIGBjbGF1ZGUgdXBkYXRlYC4KLSBBIHNlc3Npb24gd2hvc2UgZm9sZGVyIHdhcyBtb3ZlZCBvciBkZWxldGVkIGNhbm5vdCBiZSBjb250aW51ZWQuCi0gYGxpdmVTdGF0dXNgIG90aGVyIHRoYW4gImZyb20gY2xhdWRlIGFnZW50cyIgbWVhbnMgQ2xhdWRlIGNvdWxkIG5vdCBsaXN0IGl0cyBvcGVuIHNlc3Npb25zOyBydW5uaW5nIGlzIHRoZW4gZ3Vlc3NlZCBmcm9tIHJlY2VudCBmaWxlIGNoYW5nZXMsIHNvIHRyZWF0IGBpZGxlYCB3aXRoIGNhcmUuCg=="},"signature":{"publicKey":"4d9b98c280e248815370a0c3fe152828a508cc7955e60e1910c9a90c97e9a674","value":"b713b19725284bc633a5f021da76093ab094a59ac3ef23793f272a9b52da646b95dfc5bca61c282d0b3584def59c5ce86611669916fbb2111982700c2049dc0f"}},"error":null}