Skip to contentLy8gPGJsb2NrOnNldHVwOjM+CmNvbnN0IEdST1VQUyA9IFsncmVnaW9uJywgJ2RpdmlzaW9uJywgJ3N0YXRlJ107CmNvbnN0IERBVEFfQ09VTlQgPSAxMjsKY29uc3QgTlVNQkVSX0NGRyA9IHtjb3VudDogREFUQV9DT1VOVCwgbWluOiAyLCBtYXg6IDQwfTsKCmZ1bmN0aW9uIGNhcGl0YWxpemVGaXJzdExldHRlcihzdHJpbmcpIHsKICByZXR1cm4gc3RyaW5nLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgc3RyaW5nLnNsaWNlKDEpOwp9Ci8vIDwvYmxvY2s6c2V0dXA+CgovLyA8YmxvY2s6b3B0aW9uczoyPgpjb25zdCBvcHRpb25zID0gewogIHBsdWdpbnM6IHsKICAgIHRpdGxlOiB7CiAgICAgIGRpc3BsYXk6IHRydWUsCiAgICAgIHRleHQ6IChjdHgpID0+ICdVUyBhcmVhIGJ5ICcgKyBHUk9VUFMuam9pbignIC8gJykKICAgIH0sCiAgICBsZWdlbmQ6IHsKICAgICAgZGlzcGxheTogZmFsc2UKICAgIH0sCiAgICB0b29sdGlwOiB7CiAgICAgIGNhbGxiYWNrczogewogICAgICAgIHRpdGxlKGl0ZW1zKSB7CiAgICAgICAgICByZXR1cm4gY2FwaXRhbGl6ZUZpcnN0TGV0dGVyKGl0ZW1zWzBdLmRhdGFzZXQua2V5KTsKICAgICAgICB9LAogICAgICAgIGxhYmVsKGl0ZW0pIHsKICAgICAgICAgIGNvbnN0IGRhdGFJdGVtID0gaXRlbS5yYXc7CiAgICAgICAgICBjb25zdCBvYmogPSBkYXRhSXRlbS5fZGF0YTsKICAgICAgICAgIGNvbnN0IGxhYmVsID0gb2JqLnN0YXRlIHx8IG9iai5kaXZpc2lvbiB8fCBvYmoucmVnaW9uOwogICAgICAgICAgcmV0dXJuIGxhYmVsICsgJzogJyArIGRhdGFJdGVtLnY7CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfQp9OwovLyA8L2Jsb2NrOm9wdGlvbnM+CgovLyA8YmxvY2s6Y29uZmlnOjA+CmNvbnN0IGNvbmZpZyA9IHsKICB0eXBlOiAndHJlZW1hcCcsCiAgZGF0YTogewogICAgZGF0YXNldHM6IFt7CiAgICAgIHRyZWU6IERhdGEuc3RhdHNCeVN0YXRlLAogICAgICBrZXk6ICdhcmVhJywKICAgICAgZ3JvdXBzOiBHUk9VUFMsCiAgICAgIHNwYWNpbmc6IDEsCiAgICAgIGJvcmRlcldpZHRoOiAwLjUsCiAgICAgIGJvcmRlckNvbG9yOiAncmdiYSgyMDAsMjAwLDIwMCwxKScsCiAgICAgIGJhY2tncm91bmRDb2xvcjogJ3JnYmEoMjIwLDIzMCwyMjAsMC4zKScsCiAgICAgIGhvdmVyQmFja2dyb3VuZENvbG9yOiAncmdiYSgyMjAsMjMwLDIyMCwwLjUpJywKICAgICAgY2FwdGlvbnM6IHsKICAgICAgICBhbGlnbjogJ2NlbnRlcicsCiAgICAgICAgZGlzcGxheTogdHJ1ZSwKICAgICAgICBjb2xvcjogJ3JlZCcsCiAgICAgICAgZm9udDogewogICAgICAgICAgc2l6ZTogMTQsCiAgICAgICAgfSwKICAgICAgICBob3ZlckZvbnQ6IHsKICAgICAgICAgIHNpemU6IDE2LAogICAgICAgICAgd2VpZ2h0OiAnYm9sZCcKICAgICAgICB9LAogICAgICAgIHBhZGRpbmc6IDUKICAgICAgfSwKICAgICAgbGFiZWxzOiB7CiAgICAgICAgZGlzcGxheTogZmFsc2UsCiAgICAgICAgb3ZlcmZsb3c6ICdoaWRkZW4nCiAgICAgIH0KICAgIH1dCiAgfSwKICBvcHRpb25zOiBvcHRpb25zCn07Ci8vIDwvYmxvY2s6Y29uZmlnPgoKY29uc3QgYWN0aW9ucyA9IFsKICB7CiAgICBuYW1lOiAnVG9nZ2xlIGxhYmVscycsCiAgICBoYW5kbGVyKGNoYXJ0KSB7CiAgICAgIGNvbnN0IGxhYmVscyA9IGNoYXJ0LmRhdGEuZGF0YXNldHNbMF0ubGFiZWxzOwogICAgICBsYWJlbHMuZGlzcGxheSA9ICFsYWJlbHMuZGlzcGxheTsKICAgICAgY2hhcnQudXBkYXRlKCdub25lJyk7CiAgICB9CiAgfQpdOwoKbW9kdWxlLmV4cG9ydHMgPSB7CiAgY29uZmlnLAogIGFjdGlvbnMKfTs=