Skip to content
KernelIndex
Search⌘K

submission 30233

KernelBot user 266 · python · License unknown

Use it

Vendorable · source mirrored · license unknownView source →

No package. Vendor the mirrored source: 1 lines, June 9 Researcher Reciprocity License v1.0.

submission.py
curl "https://kernelindex.com/api/v1/implementations/kernelbot-amd-mla-decode-30233?include=source"
interfacepython
Compatibility
measured onAMD Instinct MI300X
declared hardwareAMD Instinct MI300X
architecturesgfx942
dtypesbf16

Benchmark evidence

1 measurement across 1 GPU, fastest first.

Operation / workload
Hardware
Latency
Rank
Observed
AMD MLA decodebf16 · [128, 1, 7168]
AMD Instinct MI300X
957.3ms
#59 of 79
2025-06-01

Reported · How evidence levels are derived →

Source and license

sourceavailable
revision digestsha256:e5f7a8b58d8ca1792830205e1607490d11b61f66305180429c264ba06cbf8868
license declaredunknown
license concludedunknown
imported2026-08-15

Kernel source

submission.py1 lines
ZnJvbSBwaXAuX2ludGVybmFsIGltcG9ydCBtYWluIGFzIHBpcF9tYWluCnBpcF9tYWluKFsiaW5zdGFsbCIsInRpbGVsYW5nLXJvY20iXSkKIyBwaXBfbWFpbihbImluc3RhbGwiLCJlaW5vcHM9PTAuOC4xIl0pIAppbXBvcnQgbWF0aApmcm9tIGRhdGFjbGFzc2VzIGltcG9ydCBkYXRhY2xhc3MKaW1wb3J0IHRvcmNoCmZyb20gdG9yY2ggaW1wb3J0IG5uCmltcG9ydCB0b3JjaC5ubi5mdW5jdGlvbmFsIGFzIEYKZnJvbSB0YXNrIGltcG9ydCBpbnB1dF90LCBvdXRwdXRfdAppbXBvcnQgdG9yY2gubm4uZnVuY3Rpb25hbCBhcyBGCmltcG9ydCB0aWxlbGFuZwpmcm9tIHRpbGVsYW5nLmF1dG90dW5lciBpbXBvcnQgKgppbXBvcnQgdGlsZWxhbmcubGFuZ3VhZ2UgYXMgVApmcm9tIGVpbm9wcyBpbXBvcnQgcmVhcnJhbmdlLCBlaW5zdW0KaW1wb3J0IGFyZ3BhcnNlCgpAdGlsZWxhbmcuaml0CmRlZiBmbGFzaG1sYV9kZWNvZGUoYmF0Y2gsCiAgICAgICAgICAgICAgICAgICAgaGVhZHMsCiAgICAgICAgICAgICAgICAgICAga3ZfaGVhZF9udW0sCiAgICAgICAgICAgICAgICAgICAgc2VxbGVuX2t2LAogICAgICAgICAgICAgICAgICAgIGRpbSwKICAgICAgICAgICAgICAgICAgICBwZV9kaW0sCiAgICAgICAgICAgICAgICAgICAgYmxvY2tfTiwKICAgICAgICAgICAgICAgICAgICBibG9ja19ILAogICAgICAgICAgICAgICAgICAgIG51bV9zcGxpdCwKICAgICAgICAgICAgICAgICAgICB0aHJlYWRzPTEyOCk6CiAgICAjIHNjYWxlID0gKDEuMCAvIChkaW0gKyBwZV9kaW0pKSoqMC41ICogMS40NDI2OTUwNCAgIyBsb2cyKGUpCiAgICBzY2FsZSA9ICgxLjAgLyAoMTI4ICsgNjQpKSoqMC41ICogMS40NDI2OTUwNAogICAgIyBkdHlwZSA9ICJmbG9hdDE2IgogICAgZHR5cGUgPSAiYmZsb2F0MTYiCiAgICBhY2N1bV9kdHlwZSA9ICJmbG9hdCIKICAgIGt2X2dyb3VwX251bSA9IGhlYWRzIC8vIGt2X2hlYWRfbnVtCiAgICBWQUxJRF9CTE9DS19IID0gbWluKGJsb2NrX0gsIGt2X2dyb3VwX251bSkKICAgIGFzc2VydCBrdl9oZWFkX251bSA9PSAxLCAia3ZfaGVhZF9udW0gbXVzdCBiZSAxIgoKICAgIEBULm1hY3JvCiAgICBkZWYgZmxhc2hfYXR0bigKICAgICAgICAgICAgUTogVC5UZW5zb3IoW2JhdGNoLCBoZWFkcywgZGltXSwgZHR5cGUpLAogICAgICAgICAgICBRX3BlOiBULlRlbnNvcihbYmF0Y2gsIGhlYWRzLCBwZV9kaW1dLCBkdHlwZSksCiAgICAgICAgICAgIEtWOiBULlRlbnNvcihbYmF0Y2gsIHNlcWxlbl9rdiwga3ZfaGVhZF9udW0sIGRpbV0sIGR0eXBlKSwKICAgICAgICAgICAgS19wZTogVC5UZW5zb3IoW2JhdGNoLCBzZXFsZW5fa3YsIGt2X2hlYWRfbnVtLCBwZV9kaW1dLCBkdHlwZSksCiAgICAgICAgICAgIE91dHB1dDogVC5UZW5zb3IoW2JhdGNoLCBoZWFkcywgZGltXSwgZHR5cGUpLAogICAgKToKICAgICAgICB3aXRoIFQuS2VybmVsKGJhdGNoLCBoZWFkcyAvLyBtaW4oYmxvY2tfSCwga3ZfZ3JvdXBfbnVtKSwgdGhyZWFkcz10aHJlYWRzKSBhcyAoYngsIGJ5KToKICAgICAgICAgICAgUV9sb2NhbCA9IFQuYWxsb2NfZnJhZ21lbnQoW2Jsb2NrX0gsIGRpbV0sIGR0eXBlKQogICAgICAgICAgICBRX3BlX2xvY2FsID0gVC5hbGxvY19mcmFnbWVudChbYmxvY2tfSCwgcGVfZGltXSwgZHR5cGUpCiAgICAgICAgICAgIEtWX3NoYXJlZCA9IFQuYWxsb2Nfc2hhcmVkKFtibG9ja19OLCBkaW1dLCBkdHlwZSkKICAgICAgICAgICAgS19wZV9zaGFyZWQgPSBULmFsbG9jX3NoYXJlZChbYmxvY2tfTiwgcGVfZGltXSwgZHR5cGUpCiAgICAgICAgICAgIGFjY19zID0gVC5hbGxvY19mcmFnbWVudChbYmxvY2tfSCwgYmxvY2tfTl0sIGFjY3VtX2R0eXBlKQogICAgICAgICAgICBhY2Nfc19jYXN0ID0gVC5hbGxvY19mcmFnbWVudChbYmxvY2tfSCwgYmxvY2tfTl0sIGR0eXBlKQogICAgICAgICAgICBhY2NfbyA9IFQuYWxsb2NfZnJhZ21lbnQoW2Jsb2NrX0gsIGRpbV0sIGFjY3VtX2R0eXBlKQogICAgICAgICAgICBzY29yZXNfbWF4ID0gVC5hbGxvY19mcmFnbWVudChbYmxvY2tfSF0sIGFjY3VtX2R0eXBlKQogICAgICAgICAgICBzY29yZXNfbWF4X3ByZXYgPSBULmFsbG9jX2ZyYWdtZW50KFtibG9ja19IXSwgYWNjdW1fZHR5cGUpCiAgICAgICAgICAgIHNjb3Jlc19zY2FsZSA9IFQuYWxsb2NfZnJhZ21lbnQoW2Jsb2NrX0hdLCBhY2N1bV9kdHlwZSkKICAgICAgICAgICAgc2NvcmVzX3N1bSA9IFQuYWxsb2NfZnJhZ21lbnQoW2Jsb2NrX0hdLCBhY2N1bV9kdHlwZSkKICAgICAgICAgICAgbG9nc3VtID0gVC5hbGxvY19mcmFnbWVudChbYmxvY2tfSF0sIGFjY3VtX2R0eXBlKQoKICAgICAgICAgICAgY3VyX2t2X2hlYWQgPSBieSAvLyAoa3ZfZ3JvdXBfbnVtIC8vIGJsb2NrX0gpCiAgICAgICAgICAgIFQudXNlX3N3aXp6bGUoMTApCgogICAgICAgICAgICBULmNvcHkoUVtieCwgYnkgKiBWQUxJRF9CTE9DS19IOihieSArIDEpICogVkFMSURfQkxPQ0tfSCwgOl0sIFFfbG9jYWwpCiAgICAgICAgICAgIFQuY29weShRX3BlW2J4LCBieSAqIFZBTElEX0JMT0NLX0g6KGJ5ICsgMSkgKiBWQUxJRF9CTE9DS19ILCA6XSwgUV9wZV9sb2NhbCkKICAgICAgICAgICAgVC5maWxsKGFjY19vLCAwKQogICAgICAgICAgICBULmZpbGwobG9nc3VtLCAwKQogICAgICAgICAgICBULmZpbGwoc2NvcmVzX21heCwgLVQuaW5maW5pdHkoYWNjdW1fZHR5cGUpKQoKICAgICAgICAgICAgbG9vcF9yYW5nZSA9IFQuY2VpbGRpdihzZXFsZW5fa3YsIGJsb2NrX04pCiAgICAgICAgICAgIGZvciBrIGluIFQuUGlwZWxpbmVkKGxvb3BfcmFuZ2UsIG51bV9zdGFnZXM9Mik6CiAgICAgICAgICAgICAgICBULmNvcHkoS1ZbYngsIGsgKiBibG9ja19OOihrICsgMSkgKiBibG9ja19OLCBjdXJfa3ZfaGVhZCwgOl0sIEtWX3NoYXJlZCkKICAgICAgICAgICAgICAgIFQuY29weShLX3BlW2J4LCBrICogYmxvY2tfTjooayArIDEpICogYmxvY2tfTiwgY3VyX2t2X2hlYWQsIDpdLCBLX3BlX3NoYXJlZCkKICAgICAgICAgICAgICAgIFQuY2xlYXIoYWNjX3MpCiAgICAgICAgICAgICAgICBULmdlbW0oUV9sb2NhbCwgS1Zfc2hhcmVkLCBhY2NfcywgdHJhbnNwb3NlX0I9VHJ1ZSwgcG9saWN5PVQuR2VtbVdhcnBQb2xpY3kuRnVsbFJvdykKICAgICAgICAgICAgICAgIFQuZ2VtbSgKICAgICAgICAgICAgICAgICAgICBRX3BlX2xvY2FsLAogICAgICAgICAgICAgICAgICAgIEtfcGVfc2hhcmVkLAogICAgICAgICAgICAgICAgICAgIGFjY19zLAogICAgICAgICAgICAgICAgICAgIHRyYW5zcG9zZV9CPVRydWUsCiAgICAgICAgICAgICAgICAgICAgcG9saWN5PVQuR2VtbVdhcnBQb2xpY3kuRnVsbFJvdykKICAgICAgICAgICAgICAgIFQuY29weShzY29yZXNfbWF4LCBzY29yZXNfbWF4X3ByZXYpCiAgICAgICAgICAgICAgICBULmZpbGwoc2NvcmVzX21heCwgLVQuaW5maW5pdHkoYWNjdW1fZHR5cGUpKQogICAgICAgICAgICAgICAgVC5yZWR1Y2VfbWF4KGFjY19zLCBzY29yZXNfbWF4LCBkaW09MSwgY2xlYXI9RmFsc2UpCiAgICAgICAgICAgICAgICBmb3IgaSBpbiBULlBhcmFsbGVsKGJsb2NrX0gpOgogICAgICAgICAgICAgICAgICAgIHNjb3Jlc19zY2FsZVtpXSA9IFQuZXhwMihzY29yZXNfbWF4X3ByZXZbaV0gKiBzY2FsZSAtIHNjb3Jlc19tYXhbaV0gKiBzY2FsZSkKICAgICAgICAgICAgICAgIGZvciBpLCBqIGluIFQuUGFyYWxsZWwoYmxvY2tfSCwgYmxvY2tfTik6CiAgICAgICAgICAgICAgICAgICAgYWNjX3NbaSwgal0gPSBULmV4cDIoYWNjX3NbaSwgal0gKiBzY2FsZSAtIHNjb3Jlc19tYXhbaV0gKiBzY2FsZSkKICAgICAgICAgICAgICAgIFQucmVkdWNlX3N1bShhY2Nfcywgc2NvcmVzX3N1bSwgZGltPTEpCiAgICAgICAgICAgICAgICAjIFQuY29weShhY2NfcywgU19zaGFyZWQpCiAgICAgICAgICAgICAgICBULmNvcHkoYWNjX3MsIGFjY19zX2Nhc3QpCiAgICAgICAgICAgICAgICBmb3IgaSBpbiBULlBhcmFsbGVsKGJsb2NrX0gpOgogICAgICAgICAgICAgICAgICAgIGxvZ3N1bVtpXSA9IGxvZ3N1bVtpXSAqIHNjb3Jlc19zY2FsZVtpXSArIHNjb3Jlc19zdW1baV0KICAgICAgICAgICAgICAgIGZvciBpLCBqIGluIFQuUGFyYWxsZWwoYmxvY2tfSCwgZGltKToKICAgICAgICAgICAgICAgICAgICBhY2Nfb1tpLCBqXSAqPSBzY29yZXNfc2NhbGVbaV0KICAgICAgICAgICAgICAgIFQuZ2VtbShhY2Nfc19jYXN0LCBLVl9zaGFyZWQsIGFjY19vLCBwb2xpY3k9VC5HZW1tV2FycFBvbGljeS5GdWxsUm93KQogICAgICAgICAgICBmb3IgaSwgaiBpbiBULlBhcmFsbGVsKGJsb2NrX0gsIGRpbSk6CiAgICAgICAgICAgICAgICBhY2Nfb1tpLCBqXSAvPSBsb2dzdW1baV0KICAgICAgICAgICAgVC5jb3B5KGFjY19vLCBPdXRwdXRbYngsIGJ5ICogVkFMSURfQkxPQ0tfSDooYnkgKyAxKSAqIFZBTElEX0JMT0NLX0gsIDpdKQoKICAgIEBULm1hY3JvCiAgICBkZWYgZmxhc2hfYXR0bl9zcGxpdCgKICAgICAgICAgICAgUTogVC5UZW5zb3IoW2JhdGNoLCBoZWFkcywgZGltXSwgZHR5cGUpLAogICAgICAgICAgICBRX3BlOiBULlRlbnNvcihbYmF0Y2gsIGhlYWRzLCBwZV9kaW1dLCBkdHlwZSksCiAgICAgICAgICAgIEtWOiBULlRlbnNvcihbYmF0Y2gsIHNlcWxlbl9rdiwga3ZfaGVhZF9udW0sIGRpbV0sIGR0eXBlKSwKICAgICAgICAgICAgS19wZTogVC5UZW5zb3IoW2JhdGNoLCBzZXFsZW5fa3YsIGt2X2hlYWRfbnVtLCBwZV9kaW1dLCBkdHlwZSksCiAgICAgICAgICAgIGdsc2U6IFQuVGVuc29yKFtiYXRjaCwgaGVhZHMsIG51bV9zcGxpdF0sIGR0eXBlKSwKICAgICAgICAgICAgT3V0cHV0X3BhcnRpYWw6IFQuVGVuc29yKFtiYXRjaCwgaGVhZHMsIG51bV9zcGxpdCwgZGltXSwgZHR5cGUpLAogICAgKToKICAgICAgICB3aXRoIFQuS2VybmVsKAogICAgICAgICAgICAgICAgYmF0Y2gsIGhlYWRzIC8vIG1pbihibG9ja19ILCBrdl9ncm91cF9udW0pLCBudW1fc3BsaXQsCiAgICAgICAgICAgICAgICB0aHJlYWRzPXRocmVhZHMpIGFzIChieCwgYnksIGJ6KToKICAgICAgICAgICAgUV9sb2NhbCA9IFQuYWxsb2NfZnJhZ21lbnQoW2Jsb2NrX0gsIGRpbV0sIGR0eXBlKQogICAgICAgICAgICBRX3BlX2xvY2FsID0gVC5hbGxvY19mcmFnbWVudChbYmxvY2tfSCwgcGVfZGltXSwgZHR5cGUpCiAgICAgICAgICAgIEtWX3NoYXJlZCA9IFQuYWxsb2Nfc2hhcmVkKFtibG9ja19OLCBkaW1dLCBkdHlwZSkKICAgICAgICAgICAgS19wZV9zaGFyZWQgPSBULmFsbG9jX3NoYXJlZChbYmxvY2tfTiwgcGVfZGltXSwgZHR5cGUpCiAgICAgICAgICAgIGFjY19zID0gVC5hbGxvY19mcmFnbWVudChbYmxvY2tfSCwgYmxvY2tfTl0sIGFjY3VtX2R0eXBlKQogICAgICAgICAgICBhY2Nfc19jYXN0ID0gVC5hbGxvY19mcmFnbWVudChbYmxvY2tfSCwgYmxvY2tfTl0sIGR0eXBlKQogICAgICAgICAgICBhY2NfbyA9IFQuYWxsb2NfZnJhZ21lbnQoW2Jsb2NrX0gsIGRpbV0sIGFjY3VtX2R0eXBlKQogICAgICAgICAgICBzY29yZXNfbWF4ID0gVC5hbGxvY19mcmFnbWVudChbYmxvY2tfSF0sIGFjY3VtX2R0eXBlKQogICAgICAgICAgICBzY29yZXNfbWF4X3ByZXYgPSBULmFsbG9jX2ZyYWdtZW50KFtibG9ja19IXSwgYWNjdW1fZHR5cGUpCiAgICAgICAgICAgIHNjb3Jlc19zY2FsZSA9IFQuYWxsb2NfZnJhZ21lbnQoW2Jsb2NrX0hdLCBhY2N1bV9kdHlwZSkKICAgICAgICAgICAgc2NvcmVzX3N1bSA9IFQuYWxsb2NfZnJhZ21lbnQoW2Jsb2NrX0hdLCBhY2N1bV9kdHlwZSkKICAgICAgICAgICAgbG9nc3VtID0gVC5hbGxvY19mcmFnbWVudChbYmxvY2tfSF0sIGFjY3VtX2R0eXBlKQoKICAgICAgICAgICAgY3VyX2t2X2hlYWQgPSBieSAvLyAoa3ZfZ3JvdXBfbnVtIC8vIGJsb2NrX0gpCiAgICAgICAgICAgIFQudXNlX3N3aXp6bGUoMTApCiAgICAgICAgICAgIFQuY29weShRW2J4LCBieSAqIFZBTElEX0JMT0NLX0g6KGJ5ICsgMSkgKiBWQUxJRF9CTE9DS19ILCA6XSwgUV9sb2NhbCkKICAgICAgICAgICAgVC5jb3B5KFFfcGVbYngsIGJ5ICogVkFMSURfQkxPQ0tfSDooYnkgKyAxKSAqIFZBTElEX0JMT0NLX0gsIDpdLCBRX3BlX2xvY2FsKQogICAgICAgICAgICBULmZpbGwoYWNjX28sIDApCiAgICAgICAgICAgIFQuZmlsbChsb2dzdW0sIDApCiAgICAgICAgICAgIFQuZmlsbChzY29yZXNfbWF4LCAtVC5pbmZpbml0eShhY2N1bV9kdHlwZSkpCgogICAgICAgICAgICBsb29wX3JhbmdlID0gVC5jZWlsZGl2KChzZXFsZW5fa3YgLy8gbnVtX3NwbGl0KSwgYmxvY2tfTikKICAgICAgICAgICAgZm9yIGsgaW4gVC5QaXBlbGluZWQobG9vcF9yYW5nZSwgbnVtX3N0YWdlcz0wKToKICAgICAgICAgICAgICAgIGt2X3N0YXJ0ID0gKHNlcWxlbl9rdiAvLyBudW1fc3BsaXQpICogYnogKyBrICogYmxvY2tfTgogICAgICAgICAgICAgICAga3ZfZW5kID0gKHNlcWxlbl9rdiAvLyBudW1fc3BsaXQpICogYnogKyAoayArIDEpICogYmxvY2tfTgogICAgICAgICAgICAgICAgVC5jb3B5KEtWW2J4LCBrdl9zdGFydDprdl9lbmQsIGN1cl9rdl9oZWFkLCA6XSwgS1Zfc2hhcmVkKQogICAgICAgICAgICAgICAgVC5jb3B5KEtfcGVbYngsIGt2X3N0YXJ0Omt2X2VuZCwgY3VyX2t2X2hlYWQsIDpdLCBLX3BlX3NoYXJlZCkKICAgICAgICAgICAgICAgIFQuY2xlYXIoYWNjX3MpCiAgICAgICAgICAgICAgICBULmdlbW0oUV9sb2NhbCwgS1Zfc2hhcmVkLCBhY2NfcywgdHJhbnNwb3NlX0I9VHJ1ZSwgcG9saWN5PVQuR2VtbVdhcnBQb2xpY3kuRnVsbFJvdykKICAgICAgICAgICAgICAgIFQuZ2VtbSgKICAgICAgICAgICAgICAgICAgICBRX3BlX2xvY2FsLAogICAgICAgICAgICAgICAgICAgIEtfcGVfc2hhcmVkLAogICAgICAgICAgICAgICAgICAgIGFjY19zLAogICAgICAgICAgICAgICAgICAgIHRyYW5zcG9zZV9CPVRydWUsCiAgICAgICAgICAgICAgICAgICAgcG9saWN5PVQuR2VtbVdhcnBQb2xpY3kuRnVsbFJvdykKICAgICAgICAgICAgICAgIFQuY29weShzY29yZXNfbWF4LCBzY29yZXNfbWF4X3ByZXYpCiAgICAgICAgICAgICAgICBULmZpbGwoc2NvcmVzX21heCwgLVQuaW5maW5pdHkoYWNjdW1fZHR5cGUpKQogICAgICAgICAgICAgICAgVC5yZWR1Y2VfbWF4KGFjY19zLCBzY29yZXNfbWF4LCBkaW09MSwgY2xlYXI9RmFsc2UpCiAgICAgICAgICAgICAgICBmb3IgaSBpbiBULlBhcmFsbGVsKGJsb2NrX0gpOgogICAgICAgICAgICAgICAgICAgIHNjb3Jlc19zY2FsZVtpXSA9IFQuZXhwMihzY29yZXNfbWF4X3ByZXZbaV0gKiBzY2FsZSAtIHNjb3Jlc19tYXhbaV0gKiBzY2FsZSkKICAgICAgICAgICAgICAgIGZvciBpLCBqIGluIFQuUGFyYWxsZWwoYmxvY2tfSCwgYmxvY2tfTik6CiAgICAgICAgICAgICAgICAgICAgYWNjX3NbaSwgal0gPSBULmV4cDIoYWNjX3NbaSwgal0gKiBzY2FsZSAtIHNjb3Jlc19tYXhbaV0gKiBzY2FsZSkKICAgICAgICAgICAgICAgIFQucmVkdWNlX3N1bShhY2Nfcywgc2NvcmVzX3N1bSwgZGltPTEpCiAgICAgICAgICAgICAgICBULmNvcHkoYWNjX3MsIGFjY19zX2Nhc3QpCiAgICAgICAgICAgICAgICBmb3IgaSBpbiBULlBhcmFsbGVsKGJsb2NrX0gpOgogICAgICAgICAgICAgICAgICAgIGxvZ3N1bVtpXSA9IGxvZ3N1bVtpXSAqIHNjb3Jlc19zY2FsZVtpXSArIHNjb3Jlc19zdW1baV0KICAgICAgICAgICAgICAgIGZvciBpLCBqIGluIFQuUGFyYWxsZWwoYmxvY2tfSCwgZGltKToKICAgICAgICAgICAgICAgICAgICBhY2Nfb1tpLCBqXSAqPSBzY29yZXNfc2NhbGVbaV0KICAgICAgICAgICAgICAgIFQuZ2VtbShhY2Nfc19jYXN0LCBLVl9zaGFyZWQsIGFjY19vLCBwb2xpY3k9VC5HZW1tV2FycFBvbGljeS5GdWxsUm93KQogICAgICAgICAgICBmb3IgaSwgaiBpbiBULlBhcmFsbGVsKGJsb2NrX0gsIGRpbSk6CiAgICAgICAgICAgICAgICBhY2Nfb1tpLCBqXSAvPSBsb2dzdW1baV0KICAgICAgICAgICAgZm9yIGkgaW4gVC5QYXJhbGxlbChibG9ja19IKToKICAgICAgICAgICAgICAgIGxvZ3N1bVtpXSA9IFQubG9nMihsb2dzdW1baV0pICsgc2NvcmVzX21heFtpXSAqIHNjYWxlCiAgICAgICAgICAgIFQuY29weShsb2dzdW0sIGdsc2VbYngsIGJ5ICogVkFMSURfQkxPQ0tfSDooYnkgKyAxKSAqIFZBTElEX0JMT0NLX0gsIGJ6XSkKICAgICAgICAgICAgVC5jb3B5KGFjY19vLCBPdXRwdXRfcGFydGlhbFtieCwgYnkgKiBWQUxJRF9CTE9DS19IOihieSArIDEpICogVkFMSURfQkxPQ0tfSCwgYnosIDpdKQoKICAgIEBULm1hY3JvCiAgICBkZWYgY29tYmluZSgKICAgICAgICAgICAgZ2xzZTogVC5UZW5zb3IoW2JhdGNoLCBoZWFkcywgbnVtX3NwbGl0XSwgZHR5cGUpLAogICAgICAgICAgICBPdXRwdXRfcGFydGlhbDogVC5UZW5zb3IoW2JhdGNoLCBoZWFkcywgbnVtX3NwbGl0LCBkaW1dLCBkdHlwZSksCiAgICAgICAgICAgIE91dHB1dDogVC5UZW5zb3IoW2JhdGNoLCBoZWFkcywgZGltXSwgZHR5cGUpLAogICAgKToKICAgICAgICB3aXRoIFQuS2VybmVsKGhlYWRzLCBiYXRjaCwgdGhyZWFkcz0xMjgpIGFzIChieSwgYnopOgogICAgICAgICAgICBwb19sb2NhbCA9IFQuYWxsb2NfZnJhZ21lbnQoW2RpbV0sIGR0eXBlKQogICAgICAgICAgICBvX2FjY3VtX2xvY2FsID0gVC5hbGxvY19mcmFnbWVudChbZGltXSwgYWNjdW1fZHR5cGUpCiAgICAgICAgICAgIGxzZV9sb2NhbF9zcGxpdCA9IFQuYWxsb2NfbG9jYWwoWzFdLCBhY2N1bV9kdHlwZSkKICAgICAgICAgICAgbHNlX2xvZ3N1bV9sb2NhbCA9IFQuYWxsb2NfbG9jYWwoWzFdLCBhY2N1bV9kdHlwZSkKICAgICAgICAgICAgbHNlX21heF9sb2NhbCA9IFQuYWxsb2NfbG9jYWwoWzFdLCBhY2N1bV9kdHlwZSkKICAgICAgICAgICAgc2NhbGVfbG9jYWwgPSBULmFsbG9jX2xvY2FsKFsxXSwgYWNjdW1fZHR5cGUpCgogICAgICAgICAgICBULmFubm90YXRlX2xheW91dCh7CiAgICAgICAgICAgICAgICBsc2VfbG9nc3VtX2xvY2FsOiBULkZyYWdtZW50KGxzZV9sb2dzdW1fbG9jYWwuc2hhcGUsIGZvcndhcmRfdGhyZWFkX2ZuPWxhbWJkYSBpOiBpKSwKICAgICAgICAgICAgfSkKCiAgICAgICAgICAgIFQuY2xlYXIobHNlX2xvZ3N1bV9sb2NhbCkKICAgICAgICAgICAgVC5jbGVhcihvX2FjY3VtX2xvY2FsKQogICAgICAgICAgICBsc2VfbWF4X2xvY2FsWzBdID0gLVQuaW5maW5pdHkoYWNjdW1fZHR5cGUpCiAgICAgICAgICAgIGZvciBrIGluIFQuc2VyaWFsKG51bV9zcGxpdCk6CiAgICAgICAgICAgICAgICBsc2VfbWF4X2xvY2FsWzBdID0gVC5tYXgobHNlX21heF9sb2NhbFswXSwgZ2xzZVtieiwgYnksIGtdKQogICAgICAgICAgICBmb3IgayBpbiBULlBpcGVsaW5lZChudW1fc3BsaXQsIG51bV9zdGFnZXM9MSk6CiAgICAgICAgICAgICAgICBsc2VfbG9jYWxfc3BsaXRbMF0gPSBnbHNlW2J6LCBieSwga10KICAgICAgICAgICAgICAgIGxzZV9sb2dzdW1fbG9jYWxbMF0gKz0gVC5leHAyKGxzZV9sb2NhbF9zcGxpdFswXSAtIGxzZV9tYXhfbG9jYWxbMF0pCiAgICAgICAgICAgIGxzZV9sb2dzdW1fbG9jYWxbMF0gPSBULmxvZzIobHNlX2xvZ3N1bV9sb2NhbFswXSkgKyBsc2VfbWF4X2xvY2FsWzBdCiAgICAgICAgICAgIGZvciBrIGluIFQuc2VyaWFsKG51bV9zcGxpdCk6CiAgICAgICAgICAgICAgICBmb3IgaSBpbiBULlBhcmFsbGVsKGRpbSk6CiAgICAgICAgICAgICAgICAgICAgcG9fbG9jYWxbaV0gPSBPdXRwdXRfcGFydGlhbFtieiwgYnksIGssIGldCiAgICAgICAgICAgICAgICBsc2VfbG9jYWxfc3BsaXRbMF0gPSBnbHNlW2J6LCBieSwga10KICAgICAgICAgICAgICAgIHNjYWxlX2xvY2FsWzBdID0gVC5leHAyKGxzZV9sb2NhbF9zcGxpdFswXSAtIGxzZV9sb2dzdW1fbG9jYWxbMF0pCiAgICAgICAgICAgICAgICBmb3IgaSBpbiBULlBhcmFsbGVsKGRpbSk6CiAgICAgICAgICAgICAgICAgICAgb19hY2N1bV9sb2NhbFtpXSArPSBwb19sb2NhbFtpXSAqIHNjYWxlX2xvY2FsWzBdCiAgICAgICAgICAgIGZvciBpIGluIFQuUGFyYWxsZWwoZGltKToKICAgICAgICAgICAgICAgIE91dHB1dFtieiwgYnksIGldID0gb19hY2N1bV9sb2NhbFtpXQoKICAgIEBULnByaW1fZnVuYwogICAgZGVmIG1haW5fc3BsaXQoCiAgICAgICAgICAgIFE6IFQuVGVuc29yKFtiYXRjaCwgaGVhZHMsIGRpbV0sIGR0eXBlKSwKICAgICAgICAgICAgUV9wZTogVC5UZW5zb3IoW2JhdGNoLCBoZWFkcywgcGVfZGltXSwgZHR5cGUpLAogICAgICAgICAgICBLVjogVC5UZW5zb3IoW2JhdGNoLCBzZXFsZW5fa3YsIGt2X2hlYWRfbnVtLCBkaW1dLCBkdHlwZSksCiAgICAgICAgICAgIEtfcGU6IFQuVGVuc29yKFtiYXRjaCwgc2VxbGVuX2t2LCBrdl9oZWFkX251bSwgcGVfZGltXSwgZHR5cGUpLAogICAgICAgICAgICBnbHNlOiBULlRlbnNvcihbYmF0Y2gsIGhlYWRzLCBudW1fc3BsaXRdLCBkdHlwZSksCiAgICAgICAgICAgIE91dHB1dF9wYXJ0aWFsOiBULlRlbnNvcihbYmF0Y2gsIGhlYWRzLCBudW1fc3BsaXQsIGRpbV0sIGR0eXBlKSwKICAgICAgICAgICAgT3V0cHV0OiBULlRlbnNvcihbYmF0Y2gsIGhlYWRzLCBkaW1dLCBkdHlwZSksCiAgICApOgogICAgICAgIGZsYXNoX2F0dG5fc3BsaXQoUSwgUV9wZSwgS1YsIEtfcGUsIGdsc2UsIE91dHB1dF9wYXJ0aWFsKQogICAgICAgIGNvbWJpbmUoZ2xzZSwgT3V0cHV0X3BhcnRpYWwsIE91dHB1dCkKCiAgICBAVC5wcmltX2Z1bmMKICAgIGRlZiBtYWluX25vX3NwbGl0KAogICAgICAgICAgICBROiBULlRlbnNvcihbYmF0Y2gsIGhlYWRzLCBkaW1dLCBkdHlwZSksCiAgICAgICAgICAgIFFfcGU6IFQuVGVuc29yKFtiYXRjaCwgaGVhZHMsIHBlX2RpbV0sIGR0eXBlKSwKICAgICAgICAgICAgS1Y6IFQuVGVuc29yKFtiYXRjaCwgc2VxbGVuX2t2LCBrdl9oZWFkX251bSwgZGltXSwgZHR5cGUpLAogICAgICAgICAgICBLX3BlOiBULlRlbnNvcihbYmF0Y2gsIHNlcWxlbl9rdiwga3ZfaGVhZF9udW0sIHBlX2RpbV0sIGR0eXBlKSwKICAgICAgICAgICAgZ2xzZTogVC5UZW5zb3IoW2JhdGNoLCBoZWFkcywgbnVtX3NwbGl0XSwgZHR5cGUpLAogICAgICAgICAgICBPdXRwdXRfcGFydGlhbDogVC5UZW5zb3IoW2JhdGNoLCBoZWFkcywgbnVtX3NwbGl0LCBkaW1dLCBkdHlwZSksCiAgICAgICAgICAgIE91dHB1dDogVC5UZW5zb3IoW2JhdGNoLCBoZWFkcywgZGltXSwgZHR5cGUpLAogICAgKToKICAgICAgICBmbGFzaF9hdHRuKFEsIFFfcGUsIEtWLCBLX3BlLCBPdXRwdXQpCgogICAgaWYgbnVtX3NwbGl0ID4gMToKICAgICAgICByZXR1cm4gbWFpbl9zcGxpdAogICAgZWxzZToKICAgICAgICByZXR1cm4gbWFpbl9ub19zcGxpdAoKCmNsYXNzIFJvUEUobm4uTW9kdWxlKToKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkX21vZGVsOiBpbnQpOgogICAgICAgIHN1cGVyKCkuX19pbml0X18oKQogICAgICAgIHNlbGYuZF9tb2RlbCA9IGRfbW9kZWwKICAgICAgICB0aGV0YSA9IDEwMDAwICoqICgtdG9yY2guYXJhbmdlKDAsIGRfbW9kZWwvLzIsZHR5cGU9dG9yY2guYmZsb2F0MTYpIC8gKGRfbW9kZWwvLzIpKQogICAgICAgIHNlbGYucmVnaXN0ZXJfYnVmZmVyKCJ0aGV0YSIsIHRoZXRhKQoKICAgIGRlZiByb3RhdGVfaGFsZihzZWxmLCB4OiB0b3JjaC5UZW5zb3IpIC0+IHRvcmNoLlRlbnNvcjoKICAgICAgICB4MSwgeDIgPSB4LmNodW5rKDIsIGRpbT0tMSkKICAgICAgICByZXR1cm4gdG9yY2guY2F0KCgteDIsIHgxKSwgZGltPS0xKQoKICAgIGRlZiBmb3J3YXJkKHNlbGYsIHg6IHRvcmNoLlRlbnNvciwgc3RhcnRfcG9zOiBpbnQgPSAwKSAtPiB0b3JjaC5UZW5zb3I6CiAgICAgICAgc2VxX2xlbiA9IHguc2l6ZSgtMikKICAgICAgICBkX21vZGVsID0geC5zaXplKC0xKQogICAgICAgIGFzc2VydCBkX21vZGVsID09IHNlbGYuZF9tb2RlbAogICAgICAgIHNlcV9pZHggPSB0b3JjaC5hcmFuZ2Uoc3RhcnRfcG9zLCBzdGFydF9wb3MgKyBzZXFfbGVuLCBkZXZpY2U9eC5kZXZpY2UpCiAgICAgICAgaWR4X3RoZXRhID0gdG9yY2guZWluc3VtKCdzLGQtPnNkJywgc2VxX2lkeCwgc2VsZi50aGV0YSkKICAgICAgICBpZHhfdGhldGEyID0gdG9yY2guY2F0KFtpZHhfdGhldGEsIGlkeF90aGV0YV0sIGRpbT0tMSkKICAgICAgICBjb3MgPSBpZHhfdGhldGEyLmNvcygpLnRvKHRvcmNoLmJmbG9hdDE2KQogICAgICAgIHNpbiA9IGlkeF90aGV0YTIuc2luKCkudG8odG9yY2guYmZsb2F0MTYpCiAgICAgICAgcmV0dXJuIHggKiBjb3MgKyBzZWxmLnJvdGF0ZV9oYWxmKHgpICogc2luCgoKY2xhc3MgS1ZDYWNoZShubi5Nb2R1bGUpOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGt2X2NhY2hlX3NoYXBlOiB0dXBsZSkgLT4gTm9uZToKICAgICAgICBzdXBlcigpLl9faW5pdF9fKCkKICAgICAgICBzZWxmLnJlZ2lzdGVyX2J1ZmZlcignZGF0YScsIHRvcmNoLnplcm9zKGt2X2NhY2hlX3NoYXBlLCBkdHlwZT10b3JjaC5iZmxvYXQxNiwgZGV2aWNlPSdjdWRhJykpCiAgICAgICAgc2VsZi5zZXFfbGVuID0gMAogICAgICAgIHNlbGYuemVybygpCgogICAgZGVmIHplcm8oc2VsZikgLT4gTm9uZToKICAgICAgICBzZWxmLmRhdGEuemVyb18oKQogICAgCiAgICBkZWYgZ2V0X2RhdGEoc2VsZikgLT4gdG9yY2guVGVuc29yOgogICAgICAgIHJldHVybiBzZWxmLmRhdGEKCiAgICBkZWYgZm9yd2FyZChzZWxmLCBjX2t2OiB0b3JjaC5UZW5zb3IpIC0+IHRvcmNoLlRlbnNvcjoKICAgICAgICBhc3NlcnQgc2VsZi5zZXFfbGVuICsgY19rdi5zaXplKDEpIDw9IHNlbGYuZGF0YS5zaXplKDEpLCAiS1YgQ2FjaGUgRXhjZWVkZWQiCgogICAgICAgIHNlbGYuZGF0YSA9IHNlbGYuZGF0YS50byhjX2t2LmR0eXBlKQogICAgICAgIHNlbGYuZGF0YVsKICAgICAgICAgICAgOiwgc2VsZi5zZXFfbGVuIDogc2VsZi5zZXFfbGVuICsgY19rdi5zaXplKDEpLCA6CiAgICAgICAgXSA9IGNfa3YKICAgICAgICBzZWxmLnNlcV9sZW4gKz0gY19rdi5zaXplKDEpCgogICAgICAgIHJldHVybiBzZWxmLmRhdGFbOiwgOnNlbGYuc2VxX2xlbl0sIHNlbGYuc2VxX2xlbgoKZGVmIGZpbmRfc2lnbmlmaWNhbnRfbm9uemVybyhtYXRyaXgsIHRvbGVyYW5jZT04ZS0zKToKICAgICIiIuaJvuWHuue7neWvueWAvOi2hei/h+WuueW3rueahOWFg+e0oCIiIgogICAgIyDliJvlu7rmjqnnoIHvvJp8eHwgPiB0b2xlcmFuY2UKICAgIHNpZ25pZmljYW50X21hc2sgPSB0b3JjaC5hYnMobWF0cml4KSA+IHRvbGVyYW5jZQogICAgCiAgICAjIOiOt+WPlue0ouW8leWSjOWAvAogICAgaW5kaWNlcyA9IHRvcmNoLm5vbnplcm8oc2lnbmlmaWNhbnRfbWFzaykKICAgIHZhbHVlcyA9IG1hdHJpeFtzaWduaWZpY2FudF9tYXNrXQogICAgCiAgICByZXR1cm4gaW5kaWNlcywgdmFsdWVzLCBzaWduaWZpY2FudF9tYXNrCgpAZGF0YWNsYXNzCmNsYXNzIENvbmZpZzoKICAgIGJhdGNoX3NpemU6IGludAogICAgZGltOiBpbnQKICAgIG5faGVhZHM6IGludAogICAgcV9sb3JhX3Jhbms6IGludCAKICAgIGt2X2xvcmFfcmFuazogaW50CiAgICBxa19ub3BlX2hlYWRfZGltOiBpbnQKICAgIHFrX3JvcGVfaGVhZF9kaW06IGludAogICAgdl9oZWFkX2RpbTogaW50CiAgICBzZXFfbGVuOiBpbnQKICAgIG1heF9zZXFfbGVuOiBpbnQKICAgIGt2X2NhY2hlX3NoYXBlOiB0dXBsZQogICAgUV9wcm9qX2Rvd25fd2VpZ2h0OiB0b3JjaC5UZW5zb3IKICAgIFFfcHJval91cF93ZWlnaHQ6IHRvcmNoLlRlbnNvcgogICAgS1ZfcHJval9kb3duX3dlaWdodDogdG9yY2guVGVuc29yCiAgICBLVl9wcm9qX3VwX3dlaWdodDogdG9yY2guVGVuc29yCiAgICB3b193ZWlnaHQ6IHRvcmNoLlRlbnNvcgoKY2xhc3MgTUxBKG5uLk1vZHVsZSk6CiAgICBkZWYgX19pbml0X18oc2VsZiwgY29uZmlnOiBDb25maWcsIG1sYV90bF9rZXJuZWw6IHRpbGVsYW5nLkpJVEtlcm5lbCk6CiAgICAgICAgc3VwZXIoKS5fX2luaXRfXygpCiAgICAgICAgc2VsZi5kaW0gPSBjb25maWcuZGltCiAgICAgICAgc2VsZi5uX2hlYWRzID0gY29uZmlnLm5faGVhZHMKICAgICAgICBzZWxmLnFfbG9yYV9yYW5rID0gY29uZmlnLnFfbG9yYV9yYW5rCiAgICAgICAgc2VsZi5rdl9sb3JhX3JhbmsgPSBjb25maWcua3ZfbG9yYV9yYW5rCiAgICAgICAgc2VsZi5ub3BlX2hlYWRfZGltID0gY29uZmlnLnFrX25vcGVfaGVhZF9kaW0KICAgICAgICBzZWxmLnJvcGVfaGVhZF9kaW0gPSBjb25maWcucWtfcm9wZV9oZWFkX2RpbQogICAgICAgIHNlbGYudl9oZWFkX2RpbSA9IGNvbmZpZy52X2hlYWRfZGltCiAgICAgICAgIyBEb3duLXByb2plY3Rpb24gbWF0cmljZXMKICAgICAgICBzZWxmLlFfcHJval9kb3duID0gbm4uTGluZWFyKHNlbGYuZGltLCBzZWxmLnFfbG9yYV9yYW5rLCBiaWFzPUZhbHNlLCBkdHlwZT10b3JjaC5iZmxvYXQxNikKICAgICAgICBzZWxmLktWX3Byb2pfZG93biA9IG5uLkxpbmVhcihzZWxmLmRpbSwgc2VsZi5rdl9sb3JhX3JhbmsgKyBzZWxmLnJvcGVfaGVhZF9kaW0sIGJpYXM9RmFsc2UsIGR0eXBlPXRvcmNoLmJmbG9hdDE2KQoKICAgICAgICAjIFVwLXByb2plY3Rpb24gYW5kIHJvcGUgcHJvamVjdGlvbiBtYXRyaWNlcwogICAgICAgIHNlbGYuUV9wcm9qX3VwID0gbm4uTGluZWFyKHNlbGYucV9sb3JhX3JhbmssIChzZWxmLm5vcGVfaGVhZF9kaW0gKyBzZWxmLnJvcGVfaGVhZF9kaW0pICogc2VsZi5uX2hlYWRzLCBiaWFzPUZhbHNlLCBkdHlwZT10b3JjaC5iZmxvYXQxNikKICAgICAgICBzZWxmLktWX3Byb2pfdXAgPSBubi5MaW5lYXIoc2VsZi5rdl9sb3JhX3JhbmssIChzZWxmLm5vcGVfaGVhZF9kaW0gKyBzZWxmLnZfaGVhZF9kaW0pICogc2VsZi5uX2hlYWRzLCBiaWFzPUZhbHNlLCBkdHlwZT10b3JjaC5iZmxvYXQxNikKCiAgICAgICAgIyBSb1BFIG9uIGhhbGYgZW1iZWRkaW5ncwogICAgICAgIHNlbGYucV9yb3BlID0gUm9QRShzZWxmLnJvcGVfaGVhZF9kaW0pCiAgICAgICAgc2VsZi5rX3JvcGUgPSBSb1BFKHNlbGYucm9wZV9oZWFkX2RpbSkKCiAgICAgICAgIyBPdXRwdXQgcHJvamVjdGlvbgogICAgICAgIHNlbGYud28gPSBubi5MaW5lYXIoc2VsZi52X2hlYWRfZGltICogc2VsZi5uX2hlYWRzLCBzZWxmLmRpbSwgZHR5cGU9dG9yY2guYmZsb2F0MTYsIGJpYXM9RmFsc2UpCiAgICAgICAgc2VsZi5lcHMgPSAxZS02CiAgICAgICAgc2VsZi5tbGFfdGxfa2VybmVsID0gbWxhX3RsX2tlcm5lbAogICAKICAgIGRlZiBmb3J3YXJkKHNlbGYsIHg6IHRvcmNoLlRlbnNvciwga3ZfY2FjaGU6IEtWQ2FjaGUpIC0+IHRvcmNoLlRlbnNvcjoKICAgICAgICAjIHNlcV9sZW4gPSAxIGFsd2F5cyBoZXJlCiAgICAgICAgYmF0Y2hfc2l6ZSwgc2VxX2xlbiwgbW9kZWxfZGltID0geC5zaXplKCkKCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICAjICAgICAgICAgICAgICAgICBTdGVwIDE6IEhhbmRsZSBkb3duLXByb2plY3Rpb24gKyBLViBjYWNoZSAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgcV9sb3JhID0gc2VsZi5RX3Byb2pfZG93bih4KQogICAgICAgIGt2X2xvcmEgPSBzZWxmLktWX3Byb2pfZG93bih4KQogICAgICAgIGt2X2xvcmEsIGt2X2xlbiA9IGt2X2NhY2hlKGt2X2xvcmEpICAjIGt2X2xlbiA9IHByZWZpbGwgKyAxCiAgICAgICAgcXVlcnlfcG9zID0ga3ZfbGVuIC0gMQoKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgICMgICAgICAgICAgICAgICAgICBTdGVwIDI6IFVwLXByb2plY3QgYW5kIHByZXBhcmUgTm9QRSArIFJvUEUgICAgICAgICAgICAgICAgICAjCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICAjIEhhbmRsZSBxdWVyaWVzIFEgZmlyc3QKICAgICAgICBxX25vcGVfYW5kX3BlID0gc2VsZi5RX3Byb2pfdXAocV9sb3JhKS52aWV3KAogICAgICAgICAgICBiYXRjaF9zaXplLCBzZXFfbGVuLCBzZWxmLm5faGVhZHMsIHNlbGYubm9wZV9oZWFkX2RpbSArIHNlbGYucm9wZV9oZWFkX2RpbSkudHJhbnNwb3NlKDEsIDIpCiAgICAgICAgcSwgcV9wZSA9IHRvcmNoLnNwbGl0KHFfbm9wZV9hbmRfcGUsIFtzZWxmLm5vcGVfaGVhZF9kaW0sIHNlbGYucm9wZV9oZWFkX2RpbV0sIGRpbT0tMSkKICAgICAgICAjIOWvuXHlgZpyb3BlCiAgICAgICAgcV9wZSA9IHNlbGYucV9yb3BlKHFfcGUsIHN0YXJ0X3Bvcz1xdWVyeV9wb3MpCgogICAgICAgICMgSGFuZGxlIGtleXMgYW5kIHZhbHVlcyBLL1YuIFYgZG9lcyBub3QgbmVlZCBSb1BFCiAgICAgICAga3YsIGtfcGUgPSB0b3JjaC5zcGxpdChrdl9sb3JhLCBbc2VsZi5rdl9sb3JhX3JhbmssIHNlbGYucm9wZV9oZWFkX2RpbV0sIGRpbT0tMSkKICAgICAgICBrX3BlID0ga19wZVs6LCBOb25lLCA6LCA6XQogICAgICAgICMg5a+5a+WBmnJvcGUKICAgICAgICBrX3BlID0gc2VsZi5rX3JvcGUoa19wZSkKCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICAjICAgICAgICAgICAgICAgICAgICBTdGVwIDM6IGFic29yYiBtYXRyaXggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgS1ZfcHJval91cCA9IHNlbGYuS1ZfcHJval91cC53ZWlnaHQudmlldyhzZWxmLm5faGVhZHMsIC0xLCBzZWxmLmt2X2xvcmFfcmFuaykKICAgICAgICBxX2Fic29yYiA9IEtWX3Byb2pfdXBbOiwgOnNlbGYubm9wZV9oZWFkX2RpbSwgOl0KICAgICAgICBvdXRfYWJzb3JiID0gS1ZfcHJval91cFs6LCBzZWxmLm5vcGVfaGVhZF9kaW06LCA6XQogICAgICAgIHEgPSB0b3JjaC5tYXRtdWwocSwgcV9hYnNvcmIpCiAgICAgICAgCiAgICAgICAgc29mdG1heF9zY2FsZSA9IDEgLyBtYXRoLnNxcnQoc2VsZi5yb3BlX2hlYWRfZGltICsgc2VsZi5ub3BlX2hlYWRfZGltKQoKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgICMg6L+Z6YOo5YiG5bqU6K+l55SodGlsZWxhbmfmm7/mjaLmjokKICAgICAgICAjIHRvcmNo5a6e546wCiAgICAgICAgIyBhdHRuX3dlaWdodHMgPSAodG9yY2gubWF0bXVsKHFfcGUsIGtfcGUubVQpICsgdG9yY2gubWF0bXVsKHEsIGt2LnVuc3F1ZWV6ZSgtMykubVQpKSAqIHNvZnRtYXhfc2NhbGUKICAgICAgICAjIHFfcHJlID0gcQogICAgICAgICMgcV9wZV9wcmUgPSBxX3BlCiAgICAgICAgIyBrdl9wcmUgPSBrdgogICAgICAgICMga19wZV9wcmUgPSBrX3BlCiAgICAgICAgIyBhdHRuX3dfMSA9IHRvcmNoLm1hdG11bChxX3BlLCBrX3BlLm1UKQogICAgICAgICMgYXR0bl93XzIgPSB0b3JjaC5tYXRtdWwocSwga3YudW5zcXVlZXplKC0zKS5tVCkKICAgICAgICAjIGF0dG5fd2VpZ2h0cyA9IChhdHRuX3dfMSArIGF0dG5fd18yKSAqIHNvZnRtYXhfc2NhbGUKICAgICAgICAjIGF0dG5fd2VpZ2h0c19zb2Z0bWF4ID0gbm4uZnVuY3Rpb25hbC5zb2Z0bWF4KGF0dG5fd2VpZ2h0cywgZGltPS0xLCBkdHlwZT10b3JjaC5mbG9hdDMyKS50byhxLmR0eXBlKQogICAgICAgICMgYXR0bl9vdXRwdXQgPSB0b3JjaC5laW5zdW0oJ2JocWwsIGJsYyAtPiBiaHFjJywgYXR0bl93ZWlnaHRzX3NvZnRtYXgsIGt2KQogICAgICAgICMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgICMgYXR0bl9vdXRwdXRfcmVmXzEgPSB0b3JjaC5tYXRtdWwoYXR0bl9vdXRwdXQsIG91dF9hYnNvcmIubVQpCiAgICAgICAgIyBhdHRuX291dHB1dF9yZWZfMiA9IGF0dG5fb3V0cHV0X3JlZl8xLnRyYW5zcG9zZSgxLCAyKS5jb250aWd1b3VzKCkKICAgICAgICAjIGF0dG5fb3V0cHV0X3JlZl8zID0gYXR0bl9vdXRwdXRfcmVmXzIucmVzaGFwZShiYXRjaF9zaXplLCBzZXFfbGVuLCBzZWxmLm5faGVhZHMgKiBzZWxmLnZfaGVhZF9kaW0pCiAgICAgICAgIyBhdHRuX291dHB1dF9yZWZfNCA9IHNlbGYud28oYXR0bl9vdXRwdXRfcmVmXzMpCiAKICAgICAgICAjICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgIyAjICAgICAgICAgICAgICAgICAgICBTdGVwIDQ6IFRpbGVMYW5nIGtlcm5lbCDmlbDmja7lpITnkIblkozosIPnlKggICAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICAjICMg5Yid5aeL5YyWdGlsZWxhbmcga2VybmVsCiAgICAgICAgbnVtX3NwbGl0cyA9IDEKICAgICAgICBkdHlwZSA9IHRvcmNoLmJmbG9hdDE2CiAgICAgICAgZ2xzZSA9IHRvcmNoLnplcm9zKChiYXRjaF9zaXplLCBzZWxmLm5faGVhZHMsIG51bV9zcGxpdHMpLCBkdHlwZT1kdHlwZSwgZGV2aWNlPXguZGV2aWNlKQogICAgICAgIG91dHB1dF9wYXJ0aWFsID0gdG9yY2guemVyb3MoKGJhdGNoX3NpemUsIHNlbGYubl9oZWFkcywgbnVtX3NwbGl0cywgc2VsZi5rdl9sb3JhX3JhbmspLCBkdHlwZT1kdHlwZSwgZGV2aWNlPXguZGV2aWNlKQogICAgICAgIAogICAgICAgICMgcHJvZ3JhbSA9IGZsYXNobWxhX2RlY29kZShiYXRjaD1iYXRjaF9zaXplLCBoZWFkcz1zZWxmLm5faGVhZHMsIGt2X2hlYWRfbnVtPTEsIHNlcWxlbl9rdj1rdl9sZW4sIGRpbT1zZWxmLmt2X2xvcmFfcmFuaywgcGVfZGltPXNlbGYucm9wZV9oZWFkX2RpbSwgYmxvY2tfTj0xNiwgYmxvY2tfSD0zMiwgbnVtX3NwbGl0PW51bV9zcGxpdHMpCiAgICAgICAgIyB0aWxlbGFuZ19rZXJuZWwgPSB0aWxlbGFuZy5jb21waWxlKHByb2dyYW0sIG91dF9pZHg9WzZdKQogICAgICAgIAogICAgICAgIHFfdGwgPSBxLnZpZXcoYmF0Y2hfc2l6ZSwgc2VsZi5uX2hlYWRzLCBzZWxmLmt2X2xvcmFfcmFuaykKICAgICAgICBxX3BlX3RsID0gcV9wZS52aWV3KGJhdGNoX3NpemUsIHNlbGYubl9oZWFkcywgc2VsZi5yb3BlX2hlYWRfZGltKQogICAgICAgIGt2X3RsID0ga3YudmlldyhiYXRjaF9zaXplLCBrdl9sZW4sIDEsIHNlbGYua3ZfbG9yYV9yYW5rKS5jb250aWd1b3VzKCkKICAgICAgICBrX3BlX3RsID0ga19wZS50cmFuc3Bvc2UoMSwgMikKCiAgICAgICAgdGxfYXR0bl9vdXQgPSB0b3JjaC56ZXJvcygoYmF0Y2hfc2l6ZSwgc2VsZi5uX2hlYWRzLCBzZWxmLmt2X2xvcmFfcmFuayksIGR0eXBlPWR0eXBlLCBkZXZpY2U9eC5kZXZpY2UpCiAgICAgICAgaWYga3ZfbGVuIDwgMjU2OgogICAgICAgICAgICAjIG51bV9oZWFkX2dyb3VwcyA9IHFfdGwuc2hhcGVbMV0gLy8ga3ZfdGwuc2hhcGVbMl0KICAgICAgICAgICAgIyAjIHNjYWxlID0gKGRpbSArIHBlX2RpbSkqKjAuNQogICAgICAgICAgICAjIHNjYWxlID0gKDEyOCArIDY0KSoqMC41CiAgICAgICAgICAgICMgcV90bCA9IHJlYXJyYW5nZSgKICAgICAgICAgICAgIyAgICAgcV90bCwgJ2IgKGggZykgZCAtPiBiIGcgaCBkJywgZz1udW1faGVhZF9ncm91cHMpICAjIFtiYXRjaF9zaXplLCBudW1faGVhZF9ncm91cHMsIGdyb3VwcywgZGltXQoKICAgICAgICAgICAgIyBxX3BlX3RsID0gcmVhcnJhbmdlKAogICAgICAgICAgICAjICAgICBxX3BlX3RsLCAnYiAoaCBnKSBkIC0+IGIgZyBoIGQnLAogICAgICAgICAgICAjICAgICBnPW51bV9oZWFkX2dyb3VwcykgICMgW2JhdGNoX3NpemUsIG51bV9oZWFkX2dyb3VwcywgZ3JvdXBzLCBwZV9kaW1dCgogICAgICAgICAgICAjIGt2X3RsID0gcmVhcnJhbmdlKGt2X3RsLCAnYiBuIGggZCAtPiBiIGggbiBkJykgICMgW2JhdGNoX3NpemUsIGdyb3Vwcywgc2VxbGVuX2t2LCBkaW1dCgogICAgICAgICAgICAjIGtfcGVfdGwgPSByZWFycmFuZ2Uoa19wZV90bCwgJ2IgbiBoIGQgLT4gYiBoIG4gZCcpICAjIFtiYXRjaF9zaXplLCBudW1faGVhZF9ncm91cHMsIGdyb3VwcywgcGVfZGltXQoKICAgICAgICAgICAgIyBxdWVyeSA9IHRvcmNoLmNvbmNhdChbcV90bCwgcV9wZV90bF0sIGRpbT0tMSkKICAgICAgICAgICAgIyBrZXkgPSB0b3JjaC5jb25jYXQoW2t2X3RsLCBrX3BlX3RsXSwgZGltPS0xKQoKICAgICAgICAgICAgIyBzY29yZXMgPSBlaW5zdW0oICAKICAgICAgICAgICAgIyAgICAgcXVlcnksIGtleSwKICAgICAgICAgICAgIyAgICAgJ2IgZyBoIGQsIGIgaCBzIGQgLT4gYiBnIGggcycpICAjIFtiYXRjaF9zaXplLCBudW1faGVhZF9ncm91cHMsIGdyb3Vwcywgc2VxbGVuX2t2XQoKICAgICAgICAgICAgIyBhdHRlbnRpb24gPSBGLnNvZnRtYXgoCiAgICAgICAgICAgICMgICAgIHNjb3JlcyAvIHNjYWxlLCBkaW09LTEpICAjIFtiYXRjaF9zaXplLCBudW1faGVhZF9ncm91cHMsIGdyb3Vwcywgc2VxbGVuX2t2XQoKICAgICAgICAgICAgIyB0bF9hdHRuX291dCA9IGVpbnN1bShhdHRlbnRpb24sIGt2X3RsLAogICAgICAgICAgICAjICAgICAgICAgICAgICdiIGcgaCBzLCBiIGggcyBkIC0+IGIgZyBoIGQnKSAgIyBbYmF0Y2hfc2l6ZSwgbnVtX2hlYWRfZ3JvdXBzLCBncm91cHMsIGRpbV0KICAgICAgICAgICAgIyB0bF9hdHRuX291dCA9IHJlYXJyYW5nZSh0bF9hdHRuX291dCwgJ2IgZyBoIGQgLT4gYiAoaCBnKSBkJykgICMgW2JhdGNoX3NpemUsIGhlYWRzLCBkaW1dCgoKICAgICAgICAgICAgYXR0bl93XzEgPSB0b3JjaC5tYXRtdWwocV9wZSwga19wZS5tVCkKICAgICAgICAgICAgYXR0bl93XzIgPSB0b3JjaC5tYXRtdWwocSwga3YudW5zcXVlZXplKC0zKS5tVCkKICAgICAgICAgICAgYXR0bl93ZWlnaHRzID0gKGF0dG5fd18xICsgYXR0bl93XzIpICogc29mdG1heF9zY2FsZQogICAgICAgICAgICBhdHRuX3dlaWdodHNfc29mdG1heCA9IG5uLmZ1bmN0aW9uYWwuc29mdG1heChhdHRuX3dlaWdodHMsIGRpbT0tMSwgZHR5cGU9dG9yY2guZmxvYXQzMikudG8ocS5kdHlwZSkKICAgICAgICAgICAgdGxfYXR0bl9vdXQgPSB0b3JjaC5laW5zdW0oJ2JocWwsIGJsYyAtPiBiaHFjJywgYXR0bl93ZWlnaHRzX3NvZnRtYXgsIGt2KQogICAgICAgIGVsc2U6CiAgICAgICAgICAgICMgIGppdOiwg+eUqHRpbGVsYW5nIGtlcm5lbAogICAgICAgICAgICBzZWxmLm1sYV90bF9rZXJuZWwoCiAgICAgICAgICAgICAgICBxX3RsLCAgICAgICAgIAogICAgICAgICAgICAgICAgcV9wZV90bCwgICAgIAogICAgICAgICAgICAgICAga3ZfdGwsICAgICAgICAjIFtiYXRjaCwga3ZfbGVuLCAxLCBrdl9sb3JhX3JhbmtdCiAgICAgICAgICAgICAgICBrX3BlX3RsLCAgICAgICMgW2JhdGNoLCBrdl9sZW4sIDEsIHJvcGVfaGVhZF9kaW1dCiAgICAgICAgICAgICAgICBnbHNlLAogICAgICAgICAgICAgICAgb3V0cHV0X3BhcnRpYWwsCiAgICAgICAgICAgICAgICB0bF9hdHRuX291dAogICAgICAgICAgICApICAjIOi+k+WHujogW2JhdGNoLCBuX2hlYWRzLCBrdl9sb3JhX3JhbmtdCgogICAgICAgIHRsX2F0dG5fb3V0ID0gdGxfYXR0bl9vdXQudmlldyhiYXRjaF9zaXplLCBzZWxmLm5faGVhZHMsIDEsIHNlbGYua3ZfbG9yYV9yYW5rKQogICAgICAgIHRsX2F0dG5fb3V0ID0gdG9yY2gubWF0bXVsKHRsX2F0dG5fb3V0LCBvdXRfYWJzb3JiLm1UKQogICAgICAgIHRsX2F0dG5fb3V0ID0gdGxfYXR0bl9vdXQudHJhbnNwb3NlKDEsIDIpLmNvbnRpZ3VvdXMoKQogICAgICAgIHRsX2F0dG5fb3V0ID0gdGxfYXR0bl9vdXQucmVzaGFwZShiYXRjaF9zaXplLCAxLCBzZWxmLm5faGVhZHMgKiBzZWxmLnZfaGVhZF9kaW0pLnRvKHRvcmNoLmJmbG9hdDE2KQogICAgICAgIHRsX2F0dG5fb3V0ID0gc2VsZi53byh0bF9hdHRuX291dCkKICAgICAgICByZXR1cm4gdGxfYXR0bl9vdXQsIGt2X2NhY2hlLmdldF9kYXRhKCkgCgpkZWYgY3VzdG9tX2tlcm5lbChkYXRhOiBpbnB1dF90KSAtPiBvdXRwdXRfdDoKICAgIGNvbmZpZywgeCwga3ZfY2FjaGUgPSBkYXRhCiAgICBtbGFfdGxfa2VybmVsID0gZmxhc2htbGFfZGVjb2RlKGJhdGNoPWNvbmZpZy5iYXRjaF9zaXplLCBoZWFkcz1jb25maWcubl9oZWFkcywga3ZfaGVhZF9udW09MSwgc2VxbGVuX2t2PWt2X2NhY2hlLnNlcV9sZW4rMSwgZGltPWNvbmZpZy5rdl9sb3JhX3JhbmssIHBlX2RpbT1jb25maWcucWtfcm9wZV9oZWFkX2RpbSwgYmxvY2tfTj0xNiwgYmxvY2tfSD0zMiwgbnVtX3NwbGl0PTEpCiAgICBtb2RlbCA9IE1MQShjb25maWcsIG1sYV90bF9rZXJuZWwpLnRvKCdjdWRhJykKICAgIG1vZGVsLlFfcHJval9kb3duLndlaWdodCA9IG5uLlBhcmFtZXRlcihjb25maWcuUV9wcm9qX2Rvd25fd2VpZ2h0KQogICAgbW9kZWwuUV9wcm9qX3VwLndlaWdodCA9IG5uLlBhcmFtZXRlcihjb25maWcuUV9wcm9qX3VwX3dlaWdodCkKICAgIG1vZGVsLktWX3Byb2pfZG93bi53ZWlnaHQgPSBubi5QYXJhbWV0ZXIoY29uZmlnLktWX3Byb2pfZG93bl93ZWlnaHQpCiAgICBtb2RlbC5LVl9wcm9qX3VwLndlaWdodCA9IG5uLlBhcmFtZXRlcihjb25maWcuS1ZfcHJval91cF93ZWlnaHQpCiAgICBtb2RlbC53by53ZWlnaHQgPSBubi5QYXJhbWV0ZXIoY29uZmlnLndvX3dlaWdodCkKCiAgICBvdXRwdXQsIGt2X2NhY2hlID0gbW9kZWwoeCwga3ZfY2FjaGUpCiAgICByZXR1cm4gb3V0cHV0LCBrdl9jYWNoZQ==

Source code from GPU Mode and the KernelBot dataset · June 9 Researcher Reciprocity License v1.0

Changes from previous submission

Against this author's previous submission submission 30230.

Best evidence level for this revision: reported

JSON