import base64,os
data=base64.b64decode("IyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwoiIiIKU0VFRFMgU2NhbHBpbmcgQm90IHYyIOKAlCBGZWUtYXdhcmUgdGFyZ2V0cwpLcmFrZW4gbWFya2V0IG9yZGVyIGZlZXM6IDAuNDAlIHBlciBzaWRlID0gMC44MCUgcm91bmQgdHJpcAoKU3RyYXRlZ3k6Ci0gVGFrZSBwcm9maXQ6IDIuNSUgKG5ldHMgfjEuNyUgYWZ0ZXIgZmVlcykKLSBTdG9wIGxvc3M6ICAgMS4wJSAoY29zdHMgfjEuOCUgYWZ0ZXIgZmVlcykKLSBXaW4gcmF0ZSBuZWVkZWQgdG8gYnJlYWsgZXZlbjogfjUxJQotIE9ubHkgdHJhZGVzIHdpdGggc3Ryb25nIG1vbWVudHVtICsgdm9sdW1lIGNvbmZpcm1hdGlvbgotIENoZWNrcyBCVEMgdHJlbmQg4oCUIG5vIHRyYWRlcyBpbiBjcmFzaGluZyBtYXJrZXQKIiIiCmltcG9ydCB0aW1lLCBqc29uLCBvcywgc3lzLCBsb2dnaW5nCmZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lCgpsb2dnaW5nLmJhc2ljQ29uZmlnKAogICAgbGV2ZWw9bG9nZ2luZy5JTkZPLAogICAgZm9ybWF0PSclKGFzY3RpbWUpcyBbJShsZXZlbG5hbWUpc10gJShtZXNzYWdlKXMnLAogICAgaGFuZGxlcnM9W2xvZ2dpbmcuU3RyZWFtSGFuZGxlcigpXQopCmxvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQoKQk9UX0RJUiAgICA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmFic3BhdGgoX19maWxlX18pKQpUUkFERV9GSUxFID0gb3MucGF0aC5qb2luKEJPVF9ESVIsICdzY2FscF90cmFkZXMuanNvbicpCkNUUkxfRklMRSAgPSBvcy5wYXRoLmpvaW4oQk9UX0RJUiwgJ2JvdF9jb250cm9sLmpzb24nKQoKc3lzLnBhdGguaW5zZXJ0KDAsIEJPVF9ESVIpCgojIOKUgOKUgCBDb25maWcg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSACkNPSU5TID0gWwogICAgeydwYWlyJzogJ1hYUlBaVVNEJywgJ2NvaW4nOiAnWFJQJywgICdjYXBpdGFsJzogMjAuMCwgJ2RlY2ltYWxzJzogNX0sCiAgICB7J3BhaXInOiAnQURBVVNEJywgICAnY29pbic6ICdBREEnLCAgJ2NhcGl0YWwnOiAyMC4wLCAnZGVjaW1hbHMnOiA0fSwKICAgIHsncGFpcic6ICdYREdVU0QnLCAgICdjb2luJzogJ0RPR0UnLCAnY2FwaXRhbCc6IDIwLjAsICdkZWNpbWFscyc6IDV9LApdCgpGRUVfUEVSX1NJREUgID0gMC4wMDQwICAgIyAwLjQwJSBtYXJrZXQgb3JkZXIgZmVlIG9uIEtyYWtlbgpST1VORF9UUklQICAgID0gRkVFX1BFUl9TSURFICogMiAgIyAwLjgwJSB0b3RhbAoKVEFLRV9QUk9GSVQgICA9IDAuMDI1ICAgICMgMi41JSBncm9zcyDihpIgfjEuNyUgbmV0IGFmdGVyIGZlZXMKU1RPUF9MT1NTICAgICA9IDAuMDEwICAgICMgMS4wJSBncm9zcyDihpIgfjEuOCUgbmV0IGxvc3MgKHRpZ2h0IGJ1dCBuZWNlc3NhcnkpCk1JTl9NT01FTlRVTSAgPSAwLjAwNiAgICAjIG5lZWQgMC42JSBwcmljZSBtb3ZlIGluIGxhc3QgNSBwZXJpb2RzCkxPT0tCQUNLICAgICAgPSAxNSAgICAgICAjIHByaWNlIGhpc3RvcnkgcGVyaW9kcwpWT0xfTE9PS0JBQ0sgID0gMTAgICAgICAgIyB2b2x1bWUgY29tcGFyaXNvbiBwZXJpb2RzCklOVEVSVkFMICAgICAgPSA0NSAgICAgICAjIGNoZWNrIGV2ZXJ5IDQ1IHNlY29uZHMKCmRlZiBsb2FkX3N0YXRlKCk6CiAgICB0cnk6CiAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoVFJBREVfRklMRSk6CiAgICAgICAgICAgIHdpdGggb3BlbihUUkFERV9GSUxFKSBhcyBmOgogICAgICAgICAgICAgICAgcmV0dXJuIGpzb24ubG9hZChmKQogICAgZXhjZXB0OiBwYXNzCiAgICByZXR1cm4geyd0cmFkZXMnOiBbXSwgJ3RvdGFsX3Byb2ZpdCc6IDAuMCwgJ3Bvc2l0aW9ucyc6IHt9fQoKZGVmIHNhdmVfc3RhdGUocyk6CiAgICB0cnk6CiAgICAgICAgb3BlbihUUkFERV9GSUxFLCAndycpLndyaXRlKGpzb24uZHVtcHMocywgaW5kZW50PTIpKQogICAgZXhjZXB0OiBwYXNzCgpkZWYgaXNfZW5hYmxlZCgpOgogICAgdHJ5OgogICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKENUUkxfRklMRSk6CiAgICAgICAgICAgIHdpdGggb3BlbihDVFJMX0ZJTEUpIGFzIGY6CiAgICAgICAgICAgICAgICByZXR1cm4ganNvbi5sb2FkKGYpLmdldCgnc2NhbHBpbmdfZW5hYmxlZCcsIFRydWUpCiAgICBleGNlcHQ6IHBhc3MKICAgIHJldHVybiBUcnVlCgpkZWYgYnRjX3RyZW5kX29rKGFwaSk6CiAgICAiIiJSZXR1cm5zIFRydWUgaWYgQlRDIGlzIG5vdCBjcmFzaGluZyB0b2RheSIiIgogICAgdHJ5OgogICAgICAgIHIgPSBhcGkucXVlcnlfcHVibGljKCdUaWNrZXInLCB7J3BhaXInOiAnWFhCVFpVU0QnfSkKICAgICAgICBpZiBub3Qgci5nZXQoJ2Vycm9yJyk6CiAgICAgICAgICAgIGQgICAgPSBsaXN0KHJbJ3Jlc3VsdCddLnZhbHVlcygpKVswXQogICAgICAgICAgICBub3cgID0gZmxvYXQoZFsnYyddWzBdKQogICAgICAgICAgICBvcGVuXz0gZmxvYXQoZFsnbyddKQogICAgICAgICAgICBjaGcgID0gKG5vdyAtIG9wZW5fKSAvIG9wZW5fCiAgICAgICAgICAgIGlmIGNoZyA8IC0wLjAzOgogICAgICAgICAgICAgICAgbG9nLmluZm8oZidbTWFya2V0XSBCVEMgZG93biB7Y2hnKjEwMDouMWZ9JSB0b2RheSDigJQgcGF1c2luZyBzY2FscGluZycpCiAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgIGV4Y2VwdDogcGFzcwogICAgcmV0dXJuIFRydWUKCmNsYXNzIFNjYWxwQm90OgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGNmZywgYXBpKToKICAgICAgICBzZWxmLnBhaXIgICAgID0gY2ZnWydwYWlyJ10KICAgICAgICBzZWxmLmNvaW4gICAgID0gY2ZnWydjb2luJ10KICAgICAgICBzZWxmLmNhcGl0YWwgID0gY2ZnWydjYXBpdGFsJ10KICAgICAgICBzZWxmLmRlY2ltYWxzID0gY2ZnWydkZWNpbWFscyddCiAgICAgICAgc2VsZi5hcGkgICAgICA9IGFwaQogICAgICAgIHNlbGYucHJpY2VzICAgPSBbXQogICAgICAgIHNlbGYudm9sdW1lcyAgPSBbXQogICAgICAgIHNlbGYucG9zaXRpb24gPSBOb25lCiAgICAgICAgc2VsZi5idXlfcHJpY2U9IDAuMAogICAgICAgIHNlbGYudm9sdW1lICAgPSAwLjAKCiAgICBkZWYgZ2V0X3RpY2tlcihzZWxmKToKICAgICAgICB0cnk6CiAgICAgICAgICAgIHIgPSBzZWxmLmFwaS5xdWVyeV9wdWJsaWMoJ1RpY2tlcicsIHsncGFpcic6IHNlbGYucGFpcn0pCiAgICAgICAgICAgIGlmIG5vdCByLmdldCgnZXJyb3InKToKICAgICAgICAgICAgICAgIGQgPSBsaXN0KHJbJ3Jlc3VsdCddLnZhbHVlcygpKVswXQogICAgICAgICAgICAgICAgcHJpY2UgID0gZmxvYXQoZFsnYyddWzBdKQogICAgICAgICAgICAgICAgdm9sdW1lID0gZmxvYXQoZFsndiddWzFdKSAgICMgMjRoIHZvbHVtZQogICAgICAgICAgICAgICAgYmlkICAgID0gZmxvYXQoZFsnYiddWzBdKQogICAgICAgICAgICAgICAgYXNrICAgID0gZmxvYXQoZFsnYSddWzBdKQogICAgICAgICAgICAgICAgc3ByZWFkID0gKGFzayAtIGJpZCkgLyBwcmljZQogICAgICAgICAgICAgICAgcmV0dXJuIHByaWNlLCB2b2x1bWUsIHNwcmVhZAogICAgICAgIGV4Y2VwdDogcGFzcwogICAgICAgIHJldHVybiBOb25lLCBOb25lLCBOb25lCgogICAgZGVmIG1vbWVudHVtKHNlbGYpOgogICAgICAgICIiIlJldHVybnMgcHJpY2UgY2hhbmdlIG92ZXIgbGFzdCA1IHBlcmlvZHMiIiIKICAgICAgICBpZiBsZW4oc2VsZi5wcmljZXMpIDwgNjoKICAgICAgICAgICAgcmV0dXJuIDAKICAgICAgICByZWNlbnQgPSBzZWxmLnByaWNlc1stMV0KICAgICAgICBwYXN0ICAgPSBzZWxmLnByaWNlc1stNl0KICAgICAgICByZXR1cm4gKHJlY2VudCAtIHBhc3QpIC8gcGFzdAoKICAgIGRlZiB2b2xfc3Bpa2Uoc2VsZik6CiAgICAgICAgIiIiUmV0dXJucyBUcnVlIGlmIGN1cnJlbnQgdm9sdW1lIGlzIGFib3ZlIGF2ZXJhZ2UiIiIKICAgICAgICBpZiBsZW4oc2VsZi52b2x1bWVzKSA8IFZPTF9MT09LQkFDSzoKICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgYXZnID0gc3VtKHNlbGYudm9sdW1lc1stVk9MX0xPT0tCQUNLOl0pIC8gVk9MX0xPT0tCQUNLCiAgICAgICAgY3VyID0gc2VsZi52b2x1bWVzWy0xXQogICAgICAgIHJldHVybiBjdXIgPiBhdmcgKiAxLjMgICMgMzAlIGFib3ZlIGF2ZXJhZ2UKCiAgICBkZWYgdXBkYXRlKHNlbGYsIHN0YXRlLCBtYXJrZXRfb2spOgogICAgICAgIHByaWNlLCB2b2x1bWUsIHNwcmVhZCA9IHNlbGYuZ2V0X3RpY2tlcigpCiAgICAgICAgaWYgbm90IHByaWNlOgogICAgICAgICAgICByZXR1cm4KCiAgICAgICAgc2VsZi5wcmljZXMuYXBwZW5kKHByaWNlKQogICAgICAgIHNlbGYudm9sdW1lcy5hcHBlbmQodm9sdW1lIG9yIDApCiAgICAgICAgaWYgbGVuKHNlbGYucHJpY2VzKSAgPiBMT09LQkFDSyAqIDM6IHNlbGYucHJpY2VzICA9IHNlbGYucHJpY2VzWy1MT09LQkFDSyozOl0KICAgICAgICBpZiBsZW4oc2VsZi52b2x1bWVzKSA+IFZPTF9MT09LQkFDSyAqIDM6IHNlbGYudm9sdW1lcyA9IHNlbGYudm9sdW1lc1stVk9MX0xPT0tCQUNLKjM6XQoKICAgICAgICBtb20gPSBzZWxmLm1vbWVudHVtKCkKICAgICAgICBsb2cuaW5mbyhmJ1t7c2VsZi5jb2lufV0gJHtwcmljZTouNWZ9IHwgTW9tOiB7bW9tKjEwMDouMmZ9JSB8IFNwcmVhZDoge3NwcmVhZCoxMDA6LjNmfSUnKQoKICAgICAgICAjIOKUgOKUgCBFeGl0IGxvZ2ljIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgAogICAgICAgIGlmIHNlbGYucG9zaXRpb24gPT0gJ2xvbmcnOgogICAgICAgICAgICBwbmxfZ3Jvc3MgPSAocHJpY2UgLSBzZWxmLmJ1eV9wcmljZSkgLyBzZWxmLmJ1eV9wcmljZQogICAgICAgICAgICBwbmxfbmV0ICAgPSBwbmxfZ3Jvc3MgLSBST1VORF9UUklQCiAgICAgICAgICAgIGxvZy5pbmZvKGYnW3tzZWxmLmNvaW59XSBQJkwgZ3Jvc3M6IHtwbmxfZ3Jvc3MqMTAwOi4yZn0lIHwgbmV0OiB7cG5sX25ldCoxMDA6LjJmfSUgKCR7cG5sX25ldCpzZWxmLmNhcGl0YWw6LjRmfSknKQoKICAgICAgICAgICAgaWYgcG5sX2dyb3NzID49IFRBS0VfUFJPRklUOgogICAgICAgICAgICAgICAgc2VsZi5fc2VsbChwcmljZSwgJ3Rha2VfcHJvZml0Jywgc3RhdGUpCiAgICAgICAgICAgIGVsaWYgcG5sX2dyb3NzIDw9IC1TVE9QX0xPU1M6CiAgICAgICAgICAgICAgICBzZWxmLl9zZWxsKHByaWNlLCAnc3RvcF9sb3NzJywgc3RhdGUpCiAgICAgICAgICAgIHJldHVybgoKICAgICAgICAjIOKUgOKUgCBFbnRyeSBsb2dpYyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAKICAgICAgICBpZiBub3QgbWFya2V0X29rOgogICAgICAgICAgICByZXR1cm4KCiAgICAgICAgaWYgbGVuKHNlbGYucHJpY2VzKSA8IExPT0tCQUNLOgogICAgICAgICAgICBsb2cuaW5mbyhmJ1t7c2VsZi5jb2lufV0gQnVpbGRpbmcgaGlzdG9yeSAoe2xlbihzZWxmLnByaWNlcyl9L3tMT09LQkFDS30pJykKICAgICAgICAgICAgcmV0dXJuCgogICAgICAgICMgU3ByZWFkIG11c3QgYmUgdGlnaHQg4oCUIHdpZGUgc3ByZWFkID0gZXh0cmEgaGlkZGVuIGNvc3QKICAgICAgICBpZiBzcHJlYWQgPiAwLjAwMjoKICAgICAgICAgICAgbG9nLmluZm8oZidbe3NlbGYuY29pbn1dIFNwcmVhZCB0b28gd2lkZSB7c3ByZWFkKjEwMDouM2Z9JSDigJQgc2tpcHBpbmcnKQogICAgICAgICAgICByZXR1cm4KCiAgICAgICAgIyBTdHJvbmcgdXB3YXJkIG1vbWVudHVtICsgdm9sdW1lIGNvbmZpcm1hdGlvbgogICAgICAgIGlmIG1vbSA+PSBNSU5fTU9NRU5UVU0gYW5kIHNlbGYudm9sX3NwaWtlKCk6CiAgICAgICAgICAgIGxvZy5pbmZvKGYnW3tzZWxmLmNvaW59XSBFTlRSWSBTSUdOQUwg4oCUIE1vbSB7bW9tKjEwMDouMmZ9JSB8IFZvbCBzcGlrZSBjb25maXJtZWQnKQogICAgICAgICAgICBzZWxmLl9idXkocHJpY2UsIHN0YXRlKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJlYXNvbnMgPSBbXQogICAgICAgICAgICBpZiBtb20gPCBNSU5fTU9NRU5UVU06IHJlYXNvbnMuYXBwZW5kKGYnbW9tIHttb20qMTAwOi4yZn0lIDwge01JTl9NT01FTlRVTSoxMDA6LjFmfSUnKQogICAgICAgICAgICBpZiBub3Qgc2VsZi52b2xfc3Bpa2UoKTogcmVhc29ucy5hcHBlbmQoJ25vIHZvbCBzcGlrZScpCiAgICAgICAgICAgIGxvZy5pbmZvKGYnW3tzZWxmLmNvaW59XSBObyBzaWduYWwg4oCUIHsiLCAiLmpvaW4ocmVhc29ucyl9JykKCiAgICBkZWYgX2J1eShzZWxmLCBwcmljZSwgc3RhdGUpOgogICAgICAgIHRyeToKICAgICAgICAgICAgdm9sdW1lID0gcm91bmQoc2VsZi5jYXBpdGFsIC8gcHJpY2UsIHNlbGYuZGVjaW1hbHMpCiAgICAgICAgICAgIHIgPSBzZWxmLmFwaS5xdWVyeV9wcml2YXRlKCdBZGRPcmRlcicsIHsKICAgICAgICAgICAgICAgICdwYWlyJzogICAgICBzZWxmLnBhaXIsCiAgICAgICAgICAgICAgICAndHlwZSc6ICAgICAgJ2J1eScsCiAgICAgICAgICAgICAgICAnb3JkZXJ0eXBlJzogJ21hcmtldCcsCiAgICAgICAgICAgICAgICAndm9sdW1lJzogICAgc3RyKHZvbHVtZSkKICAgICAgICAgICAgfSkKICAgICAgICAgICAgaWYgci5nZXQoJ2Vycm9yJyk6CiAgICAgICAgICAgICAgICBsb2cud2FybmluZyhmJ1t7c2VsZi5jb2lufV0gQnV5IGVycm9yOiB7clsiZXJyb3IiXX0nKQogICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgIG9pZCA9IHJbJ3Jlc3VsdCddWyd0eGlkJ11bMF0gaWYgci5nZXQoJ3Jlc3VsdCcpIGVsc2UgTm9uZQogICAgICAgICAgICBzZWxmLnBvc2l0aW9uICA9ICdsb25nJwogICAgICAgICAgICBzZWxmLmJ1eV9wcmljZSA9IHByaWNlCiAgICAgICAgICAgIHNlbGYudm9sdW1lICAgID0gdm9sdW1lCiAgICAgICAgICAgIHRwID0gcm91bmQocHJpY2UgKiAoMSArIFRBS0VfUFJPRklUKSwgc2VsZi5kZWNpbWFscykKICAgICAgICAgICAgc2wgPSByb3VuZChwcmljZSAqICgxIC0gU1RPUF9MT1NTKSwgICBzZWxmLmRlY2ltYWxzKQogICAgICAgICAgICBzdGF0ZVsncG9zaXRpb25zJ11bc2VsZi5jb2luXSA9IHsKICAgICAgICAgICAgICAgICdhY3RpdmUnOiBUcnVlLCAnYnV5X3ByaWNlJzogcHJpY2UsCiAgICAgICAgICAgICAgICAndm9sdW1lJzogdm9sdW1lLCAnb3JkZXJfaWQnOiBvaWQsCiAgICAgICAgICAgICAgICAndGltZSc6IGRhdGV0aW1lLm5vdygpLmlzb2Zvcm1hdCgpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgc2F2ZV9zdGF0ZShzdGF0ZSkKICAgICAgICAgICAgbG9nLmluZm8oZidbe3NlbGYuY29pbn1dIFNDQUxQIEJVWSBAICR7cHJpY2U6LjVmfSB8IFZvbDp7dm9sdW1lfSB8IFRQOiR7dHB9IHwgU0w6JHtzbH0gfCBOZXQgdGFyZ2V0OiB7KFRBS0VfUFJPRklULVJPVU5EX1RSSVApKjEwMDouMWZ9JScpCiAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICBsb2cuZXJyb3IoZidbe3NlbGYuY29pbn1dIEJ1eSBleGNlcHRpb246IHtlfScpCgogICAgZGVmIF9zZWxsKHNlbGYsIHByaWNlLCByZWFzb24sIHN0YXRlKToKICAgICAgICB0cnk6CiAgICAgICAgICAgIHIgPSBzZWxmLmFwaS5xdWVyeV9wcml2YXRlKCdBZGRPcmRlcicsIHsKICAgICAgICAgICAgICAgICdwYWlyJzogICAgICBzZWxmLnBhaXIsCiAgICAgICAgICAgICAgICAndHlwZSc6ICAgICAgJ3NlbGwnLAogICAgICAgICAgICAgICAgJ29yZGVydHlwZSc6ICdtYXJrZXQnLAogICAgICAgICAgICAgICAgJ3ZvbHVtZSc6ICAgIHN0cihzZWxmLnZvbHVtZSkKICAgICAgICAgICAgfSkKICAgICAgICAgICAgaWYgci5nZXQoJ2Vycm9yJyk6CiAgICAgICAgICAgICAgICBsb2cud2FybmluZyhmJ1t7c2VsZi5jb2lufV0gU2VsbCBlcnJvcjoge3JbImVycm9yIl19JykKICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICBncm9zcyA9IChwcmljZSAtIHNlbGYuYnV5X3ByaWNlKSAqIHNlbGYudm9sdW1lCiAgICAgICAgICAgIGZlZXMgID0gKHNlbGYuYnV5X3ByaWNlICsgcHJpY2UpICogc2VsZi52b2x1bWUgKiBGRUVfUEVSX1NJREUKICAgICAgICAgICAgbmV0ICAgPSBncm9zcyAtIGZlZXMKICAgICAgICAgICAgc3RhdGVbJ3RvdGFsX3Byb2ZpdCddID0gcm91bmQoc3RhdGUuZ2V0KCd0b3RhbF9wcm9maXQnLCAwKSArIG5ldCwgNCkKICAgICAgICAgICAgc3RhdGVbJ3RyYWRlcyddLmFwcGVuZCh7CiAgICAgICAgICAgICAgICAnY29pbic6ICAgICAgIHNlbGYuY29pbiwKICAgICAgICAgICAgICAgICdidXlfcHJpY2UnOiAgc2VsZi5idXlfcHJpY2UsCiAgICAgICAgICAgICAgICAnc2VsbF9wcmljZSc6IHByaWNlLAogICAgICAgICAgICAgICAgJ3Byb2ZpdF91c2QnOiByb3VuZChuZXQsIDQpLAogICAgICAgICAgICAgICAgJ2ZlZXNfcGFpZCc6ICByb3VuZChmZWVzLCA0KSwKICAgICAgICAgICAgICAgICdyZWFzb24nOiAgICAgcmVhc29uLAogICAgICAgICAgICAgICAgJ3RpbWUnOiAgICAgICBkYXRldGltZS5ub3coKS5pc29mb3JtYXQoKQogICAgICAgICAgICB9KQogICAgICAgICAgICBzdGF0ZVsncG9zaXRpb25zJ11bc2VsZi5jb2luXSA9IHsnYWN0aXZlJzogRmFsc2V9CiAgICAgICAgICAgIHNhdmVfc3RhdGUoc3RhdGUpCiAgICAgICAgICAgIHNlbGYucG9zaXRpb24gID0gTm9uZQogICAgICAgICAgICBzZWxmLmJ1eV9wcmljZSA9IDAuMAogICAgICAgICAgICBsb2cuaW5mbyhmJ1t7c2VsZi5jb2lufV0gU0NBTFAgU0VMTCBAICR7cHJpY2U6LjVmfSB8IHtyZWFzb259IHwgR3Jvc3M6ICR7Z3Jvc3M6LjRmfSB8IEZlZXM6ICR7ZmVlczouNGZ9IHwgTmV0OiAke25ldDouNGZ9JykKICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgIGxvZy5lcnJvcihmJ1t7c2VsZi5jb2lufV0gU2VsbCBleGNlcHRpb246IHtlfScpCgpkZWYgbWFpbigpOgogICAgaW1wb3J0IGtyYWtlbmV4CiAgICBmcm9tIGNvbmZpZ19hZHZhbmNlZCBpbXBvcnQgQVBJX0tFWSwgQVBJX1NFQ1JFVAogICAgYXBpICAgPSBrcmFrZW5leC5BUEkoa2V5PUFQSV9LRVksIHNlY3JldD1BUElfU0VDUkVUKQogICAgc3RhdGUgPSBsb2FkX3N0YXRlKCkKICAgIGJvdHMgID0gW1NjYWxwQm90KGNmZywgYXBpKSBmb3IgY2ZnIGluIENPSU5TXQoKICAgICMgUmVzdG9yZSBvcGVuIHBvc2l0aW9ucwogICAgZm9yIGJvdCBpbiBib3RzOgogICAgICAgIHBvcyA9IHN0YXRlLmdldCgncG9zaXRpb25zJywge30pLmdldChib3QuY29pbiwge30pCiAgICAgICAgaWYgcG9zLmdldCgnYWN0aXZlJyk6CiAgICAgICAgICAgIGJvdC5wb3NpdGlvbiAgPSAnbG9uZycKICAgICAgICAgICAgYm90LmJ1eV9wcmljZSA9IHBvcy5nZXQoJ2J1eV9wcmljZScsIDApCiAgICAgICAgICAgIGJvdC52b2x1bWUgICAgPSBwb3MuZ2V0KCd2b2x1bWUnLCAwKQoKICAgIGxvZy5pbmZvKCc9JyAqIDYwKQogICAgbG9nLmluZm8oJ1NFRURTIFNjYWxwaW5nIEJvdCB2MiB8IEZlZS1Bd2FyZSB8IExJVkUnKQogICAgbG9nLmluZm8oZidDb2luczoge1tjWyJjb2luIl0gZm9yIGMgaW4gQ09JTlNdfScpCiAgICBsb2cuaW5mbyhmJ1Rha2UgUHJvZml0OiB7VEFLRV9QUk9GSVQqMTAwOi4xZn0lIGdyb3NzIHwgeyhUQUtFX1BST0ZJVC1ST1VORF9UUklQKSoxMDA6LjFmfSUgbmV0IGFmdGVyIGZlZXMnKQogICAgbG9nLmluZm8oZidTdG9wIExvc3M6ICAge1NUT1BfTE9TUyoxMDA6LjFmfSUgZ3Jvc3MgfCB7KFNUT1BfTE9TUytST1VORF9UUklQKSoxMDA6LjFmfSUgbmV0IGxvc3MnKQogICAgbG9nLmluZm8oZidLcmFrZW4gZmVlczoge0ZFRV9QRVJfU0lERSoxMDA6LjJmfSUgcGVyIHNpZGUgfCB7Uk9VTkRfVFJJUCoxMDA6LjJmfSUgcm91bmQgdHJpcCcpCiAgICBsb2cuaW5mbyhmJ0NhcGl0YWw6ICR7c3VtKGNbImNhcGl0YWwiXSBmb3IgYyBpbiBDT0lOUyk6LjBmfSB0b3RhbCcpCiAgICBsb2cuaW5mbygnPScgKiA2MCkKCiAgICBjeWNsZSA9IDAKICAgIHdoaWxlIFRydWU6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBpZiBub3QgaXNfZW5hYmxlZCgpOgogICAgICAgICAgICAgICAgbG9nLmluZm8oJ1tTY2FscF0gRGlzYWJsZWQgdmlhIGNvbnRyb2wgcGFuZWwnKQogICAgICAgICAgICAgICAgdGltZS5zbGVlcCgzMCkKICAgICAgICAgICAgICAgIGNvbnRpbnVlCgogICAgICAgICAgICBjeWNsZSArPSAxCiAgICAgICAgICAgIG1hcmtldF9vayA9IGJ0Y190cmVuZF9vayhhcGkpCiAgICAgICAgICAgIGxvZy5pbmZvKGYnLS0tIFNjYWxwIEN5Y2xlIHtjeWNsZX0gfCB7ZGF0ZXRpbWUubm93KCkuc3RyZnRpbWUoIiVZLSVtLSVkICVIOiVNOiVTIil9IHwgTWFya2V0IE9LOiB7bWFya2V0X29rfSAtLS0nKQoKICAgICAgICAgICAgZm9yIGJvdCBpbiBib3RzOgogICAgICAgICAgICAgICAgYm90LnVwZGF0ZShzdGF0ZSwgbWFya2V0X29rKQogICAgICAgICAgICAgICAgdGltZS5zbGVlcCgyKQoKICAgICAgICAgICAgbG9nLmluZm8oZidTVU1NQVJZIHwgUCZMOiAke3N0YXRlWyJ0b3RhbF9wcm9maXQiXTouNGZ9IHwgVHJhZGVzOiB7bGVuKHN0YXRlWyJ0cmFkZXMiXSl9JykKICAgICAgICAgICAgdGltZS5zbGVlcChJTlRFUlZBTCkKCiAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgogICAgICAgICAgICBsb2cuaW5mbygnU2NhbHBpbmcgYm90IHN0b3BwZWQuJykKICAgICAgICAgICAgYnJlYWsKICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgIGxvZy5lcnJvcihmJ1VuZXhwZWN0ZWQgZXJyb3I6IHtlfScpCiAgICAgICAgICAgIHRpbWUuc2xlZXAoMTUpCgppZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgbWFpbigpCg==")
open('/root/seeds/scalping_bot.py','wb').write(data)
print(f"✅ scalping_bot.py updated ({len(data):,} bytes)")
import ast
ast.parse(data.decode())
print("✅ Syntax verified")
