Skip to contentLy8gPGJsb2NrOnNldHVwOjE+CmNvbnN0IERBVEFfQ09VTlQgPSAxMjsKY29uc3QgTlVNQkVSX0NGRyA9IHtjb3VudDogREFUQV9DT1VOVCwgbWluOiAyLCBtYXg6IDQwfTsKLy8gPC9ibG9jazpzZXR1cD4KCi8vIDxibG9jazp1dGlsczoyPgpmdW5jdGlvbiBjb2xvckZyb21SYXcoY3R4LCBib3JkZXIpIHsKICBpZiAoY3R4LnR5cGUgIT09ICdkYXRhJykgewogICAgcmV0dXJuICd0cmFuc3BhcmVudCc7CiAgfQogIGNvbnN0IHZhbHVlID0gY3R4LnJhdy52OwogIGxldCBhbHBoYSA9ICgxICsgTWF0aC5sb2codmFsdWUpKSAvIDU7CiAgY29uc3QgY29sb3IgPSAncHVycGxlJzsKICBpZiAoYm9yZGVyKSB7CiAgICBhbHBoYSArPSAwLjAxOwogIH0KICByZXR1cm4gaGVscGVycy5jb2xvcihjb2xvcikKICAgIC5hbHBoYShhbHBoYSkKICAgIC5yZ2JTdHJpbmcoKTsKfQovLyA8L2Jsb2NrOnV0aWxzPgoKLy8gPGJsb2NrOmNvbmZpZzowPgpjb25zdCBjb25maWcgPSB7CiAgdHlwZTogJ3RyZWVtYXAnLAogIGRhdGE6IHsKICAgIGRhdGFzZXRzOiBbCiAgICAgIHsKICAgICAgICBsYWJlbDogJ015IEZpcnN0IGRhdGFzZXQnLAogICAgICAgIHRyZWU6IFV0aWxzLm51bWJlcnMoTlVNQkVSX0NGRyksCiAgICAgICAgYm9yZGVyQ29sb3I6IChjdHgpID0+IGNvbG9yRnJvbVJhdyhjdHgsIHRydWUpLAogICAgICAgIGJvcmRlcldpZHRoOiAxLAogICAgICAgIHNwYWNpbmc6IDAsCiAgICAgICAgYmFja2dyb3VuZENvbG9yOiAoY3R4KSA9PiBjb2xvckZyb21SYXcoY3R4KSwKICAgICAgICBkYXRhbGFiZWxzOiB7CiAgICAgICAgICBkaXNwbGF5OiAnYXV0bycsCiAgICAgICAgICBhbmNob3I6ICdzdGFydCcsCiAgICAgICAgICBhbGlnbjogNDUsCiAgICAgICAgICBmb3JtYXR0ZXI6ICh2YWx1ZSkgPT4gTWF0aC50cnVuYyh2YWx1ZS52KSwKICAgICAgICAgIGNvbG9yOiAnd2hpdGUnLAogICAgICAgICAgZm9udDogewogICAgICAgICAgICBzaXplOiAyMAogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgXSwKICB9LAogIG9wdGlvbnM6IHsKICAgIHBsdWdpbnM6IHsKICAgICAgZGF0YWxhYmVsczogewogICAgICAgIGRpc3BsYXk6IHRydWUsCiAgICAgIH0KICAgIH0KICB9Cn07CgovLyA8L2Jsb2NrOmNvbmZpZz4KCmNvbnN0IGFjdGlvbnMgPSBbCiAgewogICAgbmFtZTogJ1JhbmRvbWl6ZScsCiAgICBoYW5kbGVyKGNoYXJ0KSB7CiAgICAgIGNoYXJ0LmRhdGEuZGF0YXNldHMuZm9yRWFjaChkYXRhc2V0ID0+IHsKICAgICAgICBkYXRhc2V0LnRyZWUgPSBVdGlscy5udW1iZXJzKE5VTUJFUl9DRkcpOwogICAgICB9KTsKICAgICAgY2hhcnQudXBkYXRlKCk7CiAgICB9CiAgfSwKXTsKCm1vZHVsZS5leHBvcnRzID0gewogIGFjdGlvbnMsCiAgY29uZmlnLAp9Ow==