Skip to content
KernelIndex
Search⌘K

submission 28260

KernelBot user 126 · 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_mla_version_2.py
curl "https://kernelindex.com/api/v1/implementations/kernelbot-amd-mla-decode-28260?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
3.32ms
#28 of 79
2025-05-27

Reported · How evidence levels are derived →

Source and license

sourceavailable
revision digestsha256:5f0e8ed39c76b294b20437f286e92ab53ad717d01ec4cce98bc5fecccbc002ed
license declaredunknown
license concludedunknown
imported2026-08-15

Kernel source

submission_mla_version_2.py1 lines
aW1wb3J0IG1hdGgKaW1wb3J0IHRpbWUKaW1wb3J0IHJhbmRvbQoKaW1wb3J0IG51bXB5IGFzIG5wCmltcG9ydCB0b3JjaAppbXBvcnQgdG9yY2gubm4uZnVuY3Rpb25hbCBhcyBGCgpmcm9tIHRhc2sgaW1wb3J0IGlucHV0X3QsIG91dHB1dF90CmZyb20gcmVmZXJlbmNlIGltcG9ydCBLVkNhY2hlLCBDb25maWcKZnJvbSB1dGlscyBpbXBvcnQgdmVyYm9zZV9hbGxjbG9zZQoKCmRlZiBzZXRfc2VlZChzZWVkPTApOgogICAgcmFuZG9tLnNlZWQoc2VlZCkKICAgIG5wLnJhbmRvbS5zZWVkKHNlZWQpCiAgICB0b3JjaC5tYW51YWxfc2VlZChzZWVkKQoKCnFrX3JvcGVfaGVhZF9kaW0gPSA2NAoKIyBzdGFydCA9IHRpbWUucGVyZl9jb3VudGVyX25zKCkKCnRoZXRhID0gMTAwMDAgKiogKC10b3JjaC5hcmFuZ2UoMCwgcWtfcm9wZV9oZWFkX2RpbSAvLyAyLCBkdHlwZT10b3JjaC5iZmxvYXQxNiwgZGV2aWNlPSJjdWRhIikgLyAocWtfcm9wZV9oZWFkX2RpbSAvLyAyKSkKc2VxX2lkeCA9IHRvcmNoLmFyYW5nZSgwLCA4MTkyLCBkZXZpY2U9ImN1ZGEiKQppZHhfdGhldGEgPSB0b3JjaC5laW5zdW0oJ3MsZC0+c2QnLCBzZXFfaWR4LCB0aGV0YSkKaWR4X3RoZXRhMiA9IHRvcmNoLmNhdChbaWR4X3RoZXRhLCBpZHhfdGhldGFdLCBkaW09LTEpCnByZV9jb3MgPSBpZHhfdGhldGEyLmNvcygpLnRvKHRvcmNoLmJmbG9hdDE2KS51bnNxdWVlemUoMSkKcHJlX3NpbiA9IGlkeF90aGV0YTIuc2luKCkudG8odG9yY2guYmZsb2F0MTYpLnVuc3F1ZWV6ZSgxKQoKIyBlbmQgPSB0aW1lLnBlcmZfY291bnRlcl9ucygpCiMgcHJpbnQoZW5kIC0gc3RhcnQpCgoKZGVmIHJvdGF0ZV9oYWxmKHg6IHRvcmNoLlRlbnNvcikgLT4gdG9yY2guVGVuc29yOgogICAgeDEsIHgyID0geC5jaHVuaygyLCBkaW09LTEpCiAgICByZXR1cm4gdG9yY2guY2F0KCgteDIsIHgxKSwgZGltPS0xKQoKCmRlZiByb3BlKHg6IHRvcmNoLlRlbnNvciwgdGhldGE6IHRvcmNoLlRlbnNvciwgc3RhcnRfcG9zOiBpbnQgPSAwKSAtPiB0b3JjaC5UZW5zb3I6CiAgICBzZXFfbGVuID0geC5zaXplKC0yKQogICAgc2VxX2lkeCA9IHRvcmNoLmFyYW5nZShzdGFydF9wb3MsIHN0YXJ0X3BvcyArIHNlcV9sZW4sIGRldmljZT14LmRldmljZSkKICAgIGlkeF90aGV0YSA9IHRvcmNoLmVpbnN1bSgncyxkLT5zZCcsIHNlcV9pZHgsIHRoZXRhKQogICAgaWR4X3RoZXRhMiA9IHRvcmNoLmNhdChbaWR4X3RoZXRhLCBpZHhfdGhldGFdLCBkaW09LTEpCiAgICBjb3MgPSBpZHhfdGhldGEyLmNvcygpLnRvKHRvcmNoLmJmbG9hdDE2KQogICAgc2luID0gaWR4X3RoZXRhMi5zaW4oKS50byh0b3JjaC5iZmxvYXQxNikKICAgIHJldHVybiB4ICogY29zICsgcm90YXRlX2hhbGYoeCkgKiBzaW4KCgpkZWYgYXBwbHlfcm90YXJ5X2VtYih4OiB0b3JjaC5UZW5zb3IsIHRoZXRhOiB0b3JjaC5UZW5zb3IsIHN0YXJ0X3BvczogaW50ID0gMCkgLT4gdG9yY2guVGVuc29yOgogICAgc2VxX2xlbiA9IHguc2l6ZSgtMykKICAgIHNlcV9pZHggPSB0b3JjaC5hcmFuZ2Uoc3RhcnRfcG9zLCBzdGFydF9wb3MgKyBzZXFfbGVuLCBkZXZpY2U9eC5kZXZpY2UpCiAgICBpZHhfdGhldGEgPSB0b3JjaC5laW5zdW0oJ3MsZC0+c2QnLCBzZXFfaWR4LCB0aGV0YSkKICAgIGlkeF90aGV0YTIgPSB0b3JjaC5jYXQoW2lkeF90aGV0YSwgaWR4X3RoZXRhXSwgZGltPS0xKQogICAgY29zID0gaWR4X3RoZXRhMi5jb3MoKS50byh0b3JjaC5iZmxvYXQxNikudW5zcXVlZXplKDEpCiAgICBzaW4gPSBpZHhfdGhldGEyLnNpbigpLnRvKHRvcmNoLmJmbG9hdDE2KS51bnNxdWVlemUoMSkKICAgIHJldHVybiB4ICogY29zICsgcm90YXRlX2hhbGYoeCkgKiBzaW4KCgpkZWYgYXBwbHlfcm90YXJ5X2VtYl9wcmUoeDogdG9yY2guVGVuc29yLCB0aGV0YTogdG9yY2guVGVuc29yLCBzdGFydF9wb3M6IGludCA9IDApIC0+IHRvcmNoLlRlbnNvcjoKICAgIHNlcV9sZW4gPSB4LnNpemUoLTMpCiAgICBjb3MgPSBwcmVfY29zW3N0YXJ0X3BvczpzdGFydF9wb3MgKyBzZXFfbGVuXQogICAgc2luID0gcHJlX3NpbltzdGFydF9wb3M6c3RhcnRfcG9zICsgc2VxX2xlbl0KICAgIHJldHVybiB4ICogY29zICsgcm90YXRlX2hhbGYoeCkgKiBzaW4KCgpkZWYgdGVzdF9hcHBseV9yb3RhcnlfZW1iKCk6CiAgICAjIHNoYXBlIFticywgaGVhZCwgc2VxX2xlbiwgZGltXQogICAgeCA9IHRvcmNoLnJhbmRuKDEsIDIsIDQsIGRpbSwgZHR5cGU9dG9yY2guYmZsb2F0MTYpCiAgICB5ID0gcm9wZSh4LCB0aGV0YSkKICAgIHByaW50KHkpCgogICAgeCA9IHgucGVybXV0ZSgwLCAyLCAxLCAzKQogICAgeSA9IGFwcGx5X3JvdGFyeV9lbWIoeCwgdGhldGEpCiAgICB5ID0geS5wZXJtdXRlKDAsIDIsIDEsIDMpCiAgICBwcmludCh5KQoKCmRlZiBtbGFfbmF2aWUoeDogdG9yY2guVGVuc29yLCBrdl9jYWNoZTogS1ZDYWNoZSwgY29uZmlnOiBDb25maWcpIC0+IHRvcmNoLlRlbnNvcjoKICAgIGJzeiwgc2VxbGVuLCBfID0geC5zaXplKCkKCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICMgZ2V0IHFfbm9wZSwgcV9yb3BlCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICMgcSA9IHNlbGYud3FfYihGLmxpbmVhcih4LCBzZWxmLndxX2EoeCkpCiAgICBxID0gRi5saW5lYXIoRi5saW5lYXIoeCwgY29uZmlnLlFfcHJval9kb3duX3dlaWdodCksIGNvbmZpZy5RX3Byb2pfdXBfd2VpZ2h0KQogICAgcSA9IHEudmlldyhic3osIHNlcWxlbiwgY29uZmlnLm5faGVhZHMsIGNvbmZpZy5xa19ub3BlX2hlYWRfZGltICsgY29uZmlnLnFrX3JvcGVfaGVhZF9kaW0pCiAgICBxX25vcGUsIHFfcm9wZSA9IHRvcmNoLnNwbGl0KHEsIFtjb25maWcucWtfbm9wZV9oZWFkX2RpbSwgY29uZmlnLnFrX3JvcGVfaGVhZF9kaW1dLCBkaW09LTEpCgogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAjIGdldCBrdiwga19yb3BlCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICMga3YgPSBzZWxmLndrdl9hKHgpCiAgICBrdiA9IEYubGluZWFyKHgsIGNvbmZpZy5LVl9wcm9qX2Rvd25fd2VpZ2h0KQogICAga3YsIGt2X2xlbiA9IGt2X2NhY2hlKGt2KQogICAga3YsIGtfcm9wZSA9IHRvcmNoLnNwbGl0KGt2LCBbY29uZmlnLmt2X2xvcmFfcmFuaywgY29uZmlnLnFrX3JvcGVfaGVhZF9kaW1dLCBkaW09LTEpCgogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAjIGFwcGxlIHJvcGUKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgcV9yb3BlID0gYXBwbHlfcm90YXJ5X2VtYihxX3JvcGUsIHRoZXRhLCBzdGFydF9wb3M9a3ZfbGVuIC0gMSkKICAgIGtfcm9wZSA9IGFwcGx5X3JvdGFyeV9lbWIoa19yb3BlLnVuc3F1ZWV6ZSgyKSwgdGhldGEpCiAgICAKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgIyBnZXQgcQogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICBxID0gdG9yY2guY2F0KFtxX25vcGUsIHFfcm9wZV0sIGRpbT0tMSkKCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICMgZ2V0IGssIHYKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgIyBrdiA9IHNlbGYud2t2X2Ioa3YpCiAgICBrdiA9IEYubGluZWFyKGt2LCBjb25maWcuS1ZfcHJval91cF93ZWlnaHQpCiAgICBrdiA9IGt2LnZpZXcoYnN6LCBrdl9sZW4sIGNvbmZpZy5uX2hlYWRzLCBjb25maWcucWtfbm9wZV9oZWFkX2RpbSArIGNvbmZpZy52X2hlYWRfZGltKQogICAga19ub3BlLCB2ID0gdG9yY2guc3BsaXQoa3YsIFtjb25maWcucWtfbm9wZV9oZWFkX2RpbSwgY29uZmlnLnZfaGVhZF9kaW1dLCBkaW09LTEpCiAgICBrID0gdG9yY2guY2F0KFtrX25vcGUsIGtfcm9wZS5leHBhbmQoLTEsIC0xLCBjb25maWcubl9oZWFkcywgLTEpXSwgZGltPS0xKQoKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgIyBhdHRlbnRpb24KICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgc2NvcmVzID0gdG9yY2guZWluc3VtKCJic2hkLGJ0aGQtPmJzaHQiLCBxLCBrKSAvIG1hdGguc3FydChjb25maWcucWtfcm9wZV9oZWFkX2RpbSArIGNvbmZpZy5xa19ub3BlX2hlYWRfZGltKQogICAgc2NvcmVzID0gc2NvcmVzLnNvZnRtYXgoZGltPS0xLCBkdHlwZT10b3JjaC5mbG9hdDMyKS50eXBlX2FzKHgpCiAgICB4ID0gdG9yY2guZWluc3VtKCJic2h0LGJ0aGQtPmJzaGQiLCBzY29yZXMsIHYpCgogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAjIG91dHB1dCBwcm9qZWN0aW9uCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgIHggPSBGLmxpbmVhcih4LmZsYXR0ZW4oMiksIGNvbmZpZy53b193ZWlnaHQpCgogICAgcmV0dXJuIHgsIGt2X2NhY2hlLmdldF9kYXRhKCkKCgpkZWYgbWxhX2Fic29yYih4OiB0b3JjaC5UZW5zb3IsIGt2X2NhY2hlOiBLVkNhY2hlLCBjb25maWc6IENvbmZpZykgLT4gdG9yY2guVGVuc29yOgogICAgYnN6LCBzZXFsZW4sIF8gPSB4LnNpemUoKQoKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgIyBnZXQgcV9ub3BlLCBxX3JvcGUKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgIyBxID0gc2VsZi53cV9iKHNlbGYucV9ub3JtKHNlbGYud3FfYSh4KSkpCiAgICBxID0gRi5saW5lYXIoRi5saW5lYXIoeCwgY29uZmlnLlFfcHJval9kb3duX3dlaWdodCksIGNvbmZpZy5RX3Byb2pfdXBfd2VpZ2h0KQogICAgcSA9IHEudmlldyhic3osIHNlcWxlbiwgY29uZmlnLm5faGVhZHMsIGNvbmZpZy5xa19ub3BlX2hlYWRfZGltICsgY29uZmlnLnFrX3JvcGVfaGVhZF9kaW0pCiAgICBxX25vcGUsIHFfcm9wZSA9IHRvcmNoLnNwbGl0KHEsIFtjb25maWcucWtfbm9wZV9oZWFkX2RpbSwgY29uZmlnLnFrX3JvcGVfaGVhZF9kaW1dLCBkaW09LTEpCgogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAjIGdldCBrdiwga19yb3BlCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICMga3YgPSBzZWxmLndrdl9hKHgpCiAgICBrdiA9IEYubGluZWFyKHgsIGNvbmZpZy5LVl9wcm9qX2Rvd25fd2VpZ2h0KQogICAga3YsIGt2X2xlbiA9IGt2X2NhY2hlKGt2KQogICAga3YsIGtfcm9wZSA9IHRvcmNoLnNwbGl0KGt2LCBbY29uZmlnLmt2X2xvcmFfcmFuaywgY29uZmlnLnFrX3JvcGVfaGVhZF9kaW1dLCBkaW09LTEpCgogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAjIGFwcGx5IHJvcGUKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgcV9yb3BlID0gYXBwbHlfcm90YXJ5X2VtYihxX3JvcGUsIHRoZXRhLCBzdGFydF9wb3M9a3ZfbGVuIC0gMSkKICAgIGtfcm9wZSA9IGFwcGx5X3JvdGFyeV9lbWIoa19yb3BlLnVuc3F1ZWV6ZSgyKSwgdGhldGEpCgogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAjIG11bHRpcGx5IHFfbm9wZSB3aXRoIHdfdWsKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgd2t2X2IgPSBjb25maWcuS1ZfcHJval91cF93ZWlnaHQudmlldyhjb25maWcubl9oZWFkcywgLTEsIGNvbmZpZy5rdl9sb3JhX3JhbmspCiAgICAjIHFfbm9wZSBzaGFwZSBbMTI4LCAxLCAxMjgsIDEyOF0sIHdrdl9iIHNoYXBlIFsxMjgsIDEyOCwgNTEyXSwgcmVzIHNoYXBlIFsxMjgsIDEsIDEyOCwgNTEyXSwgZmxvcHMgMS4wNyBHCiAgICBxX25vcGUgPSB0b3JjaC5laW5zdW0oImJzaGQsaGRjLT5ic2hjIiwgcV9ub3BlLCB3a3ZfYls6LCA6Y29uZmlnLnFrX25vcGVfaGVhZF9kaW1dKQoKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgIyBhdHRlbnRpb24KICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgIyBxX25vcGUgc2hhcGUgWzEyOCwgMSwgMTI4LCA1MTJdLCBrdiBzaGFwZSBbMTI4LCA1MTMsIDUxMl0sIHJlcyBzaGFwZSBbMTI4LCAxLCAxMjgsIDUxM10sIGZsb3BzIDQuMyBHCiAgICAjIHFfbm9wZSBzaGFwZSBbMTI4LCAxLCAxMjgsIDY0XSwga3Ygc2hhcGUgWzEyOCwgNTEzLCA2NF0sIHJlcyBzaGFwZSBbMTI4LCAxLCAxMjgsIDUxM10sIGZsb3BzIDAuNTQgRwogICAgc2NvcmVzID0gKHRvcmNoLmVpbnN1bSgiYnNoYyxidGMtPmJzaHQiLCBxX25vcGUsIGt2KSArCiAgICAgICAgICAgICAgdG9yY2guZWluc3VtKCJic2hyLGJ0ci0+YnNodCIsIHFfcm9wZSwga19yb3BlLnNxdWVlemUoMikpKSAvIG1hdGguc3FydChjb25maWcucWtfcm9wZV9oZWFkX2RpbSArIGNvbmZpZy5xa19ub3BlX2hlYWRfZGltKQogICAgc2NvcmVzID0gc2NvcmVzLnNvZnRtYXgoZGltPS0xLCBkdHlwZT10b3JjaC5mbG9hdDMyKS50eXBlX2FzKHgpCiAgICAjIHNjb3JlcyBzaGFwZSBbMTI4LCAxLCAxMjgsIDUxM10sIGt2IHNoYXBlIFsxMjgsIDUxMywgNTEyXSwgcmVzIHNoYXBlIFsxMjgsIDEsIDEyOCwgNTEyXSwgZmxvcHMgNC4zIEcKICAgIHggPSB0b3JjaC5laW5zdW0oImJzaHQsYnRjLT5ic2hjIiwgc2NvcmVzLCBrdikKICAgICMgeCBzaGFwZSBbMTI4LCAxLCAxMjgsIDUxMl0sIHdrdl9iIHNoYXBlIFsxMjgsIDEyOCwgNTEyXSwgcmVzIHNoYXBlIFsxMjgsIDEyOCwgNTEyXSwgZmxvcHMgMS4wNyBHCiAgICB4ID0gdG9yY2guZWluc3VtKCJic2hjLGhkYy0+YnNoZCIsIHgsIHdrdl9iWzosIC1jb25maWcudl9oZWFkX2RpbTpdKQoKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgIyBvdXRwdXQgcHJvamVjdGlvbgogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICB4ID0gRi5saW5lYXIoeC5mbGF0dGVuKDIpLCBjb25maWcud29fd2VpZ2h0KQoKICAgIHJldHVybiB4LCBrdl9jYWNoZS5nZXRfZGF0YSgpCgoKZGVmIGN1c3RvbV9rZXJuZWwoZGF0YTogaW5wdXRfdCkgLT4gb3V0cHV0X3Q6CiAgICBjb25maWcsIHgsIGt2X2NhY2hlID0gZGF0YQogICAgcmV0dXJuIG1sYV9hYnNvcmIoeCwga3ZfY2FjaGUsIGNvbmZpZykKCgppZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgc2V0X3NlZWQoKQoKICAgIGZyb20gcmVmZXJlbmNlIGltcG9ydCBnZW5lcmF0ZV9pbnB1dCwgcmVmX2tlcm5lbAogICAgZnJvbSBldmFsIGltcG9ydCBjb3B5X2t2X2NhY2hlCgogICAgYmF0Y2hzaXplID0gMTI4CiAgICBkaW0gPSA3MTY4IAogICAgZHEgPSAxNTM2CiAgICBwcmVmaWxsID0gNTEyCiAgICBzZWVkID0gOTcKCiAgICBjb25maWcsIHgsIGt2X2NhY2hlID0gZ2VuZXJhdGVfaW5wdXQoYmF0Y2hzaXplLCBkaW0sIGRxLCBwcmVmaWxsLCBzZWVkKQogICAgcmVmX2t2X2NhY2hlID0gY29weV9rdl9jYWNoZShrdl9jYWNoZSwgY29uZmlnLmt2X2NhY2hlX3NoYXBlKQoKICAgIHN0YXJ0ID0gdGltZS5wZXJmX2NvdW50ZXJfbnMoKQogICAgb3V0cHV0LCBrdiA9IG1sYV9hYnNvcmIoeCwga3ZfY2FjaGUsIGNvbmZpZykKICAgIGVuZCA9IHRpbWUucGVyZl9jb3VudGVyX25zKCkKICAgIHByaW50KGVuZCAtIHN0YXJ0KQogICAgIyBwcmludChvdXRwdXQuc2hhcGUpCiAgICAjIHByaW50KGt2LnNoYXBlKQoKICAgIHN0YXJ0ID0gdGltZS5wZXJmX2NvdW50ZXJfbnMoKQogICAgcmVmX291dHB1dCwgcmVmX2t2ID0gcmVmX2tlcm5lbCgoY29uZmlnLCB4LCByZWZfa3ZfY2FjaGUpKQogICAgZW5kID0gdGltZS5wZXJmX2NvdW50ZXJfbnMoKQogICAgcHJpbnQoZW5kIC0gc3RhcnQpCiAgICAjIHByaW50KHJlZl9vdXRwdXQuc2hhcGUpCiAgICAjIHByaW50KHJlZl9rdi5zaGFwZSkKCiAgICAjIHN0YXJ0ID0gdGltZS5wZXJmX2NvdW50ZXJfbnMoKQogICAgIyByZWZfb3V0cHV0LCByZWZfa3YgPSBtbGFfbmF2aWUoeCwgcmVmX2t2X2NhY2hlLCBjb25maWcpCiAgICAjIGVuZCA9IHRpbWUucGVyZl9jb3VudGVyX25zKCkKICAgICMgcHJpbnQoZW5kIC0gc3RhcnQpCiAgICAjIHByaW50KHJlZl9vdXRwdXQuc2hhcGUpCiAgICAjIHByaW50KHJlZl9rdi5zaGFwZSkKCiAgICBwcmludCh2ZXJib3NlX2FsbGNsb3NlKG91dHB1dCwgcmVmX291dHB1dCwgcnRvbD0yZS0wMiwgYXRvbD04ZS0wMykpCiAgICBwcmludCh2ZXJib3NlX2FsbGNsb3NlKGt2LCByZWZfa3YsIHJ0b2w9MmUtMDIsIGF0b2w9OGUtMDMpKQo=

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 26172.

- aW1wb3J0IG1hdGgKCmltcG9ydCB0b3JjaAppbXBvcnQgdG9yY2gubm4uZnVuY3Rpb25hbCBhcyBGCgpmcm9tIHRhc2sgaW1wb3J0IGlucHV0X3QsIG91dHB1dF90CgoKZGVmIHJvdGF0ZV9oYWxmKHg6IHRvcmNoLlRlbnNvcikgLT4gdG9yY2guVGVuc29yOgogICAgeDEsIHgyID0geC5jaHVuaygyLCBkaW09LTEpCiAgICByZXR1cm4gdG9yY2guY2F0KCgteDIsIHgxKSwgZGltPS0xKQoKZGVmIHJvcGUoeDogdG9yY2guVGVuc29yLCB0aGV0YTogdG9yY2guVGVuc29yICxzdGFydF9wb3M6IGludCA9IDApIC0+IHRvcmNoLlRlbnNvcjoKICAgIHNlcV9sZW4gPSB4LnNpemUoLTIpCiAgICBkX21vZGVsID0geC5zaXplKC0xKQogICAgc2VxX2lkeCA9IHRvcmNoLmFyYW5nZShzdGFydF9wb3MsIHN0YXJ0X3BvcyArIHNlcV9sZW4sIGRldmljZT14LmRldmljZSkKICAgIGlkeF90aGV0YSA9IHRvcmNoLmVpbnN1bSgncyxkLT5zZCcsIHNlcV9pZHgsIHRoZXRhKQogICAgaWR4X3RoZXRhMiA9IHRvcmNoLmNhdChbaWR4X3RoZXRhLCBpZHhfdGhldGFdLCBkaW09LTEpCiAgICBjb3MgPSBpZHhfdGhldGEyLmNvcygpLnRvKHRvcmNoLmJmbG9hdDE2KQogICAgc2luID0gaWR4X3RoZXRhMi5zaW4oKS50byh0b3JjaC5iZmxvYXQxNikKICAgIHJldHVybiB4ICogY29zICsgcm90YXRlX2hhbGYoeCkgKiBzaW4KCgpkZWYgY3VzdG9tX2tlcm5lbChkYXRhOiBpbnB1dF90KSAtPiBvdXRwdXRfdDoKICAgIGNvbmZpZywgeCwga3ZfY2FjaGUgPSBkYXRhCgogICAgdGhldGEgPSAxMDAwMCAqKiAoLXRvcmNoLmFyYW5nZSgwLCBjb25maWcucWtfcm9wZV9oZWFkX2RpbS8vMixkdHlwZT10b3JjaC5iZmxvYXQxNikgLyAoY29uZmlnLnFrX3JvcGVfaGVhZF9kaW0vLzIpKS5jdWRhKCkKCiAgICAjIHNlcV9sZW4gPSAxIGFsd2F5cyBoZXJlCiAgICBiYXRjaF9zaXplLCBzZXFfbGVuLCBtb2RlbF9kaW0gPSB4LnNpemUoKQoKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAjICAgICAgICAgICAgICAgICBTdGVwIDE6IEhhbmRsZSBkb3duLXByb2plY3Rpb24gKyBLViBjYWNoZSAgICAgICAgICAgICAgICAgICAgIwogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICBxX2xvcmEgPSBGLmxpbmVhcih4LCBjb25maWcuUV9wcm9qX2Rvd25fd2VpZ2h0KQogICAga3ZfbG9yYSA9IEYubGluZWFyKHgsIGNvbmZpZy5LVl9wcm9qX2Rvd25fd2VpZ2h0KQogICAga3ZfbG9yYSwga3ZfbGVuID0ga3ZfY2FjaGUoa3ZfbG9yYSkKICAgIHF1ZXJ5X3BvcyA9IGt2X2xlbiAtIDEKCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgIyAgICAgICAgICAgICAgICAgIFN0ZXAgMjogVXAtcHJvamVjdCBhbmQgcHJlcGFyZSBOb1BFICsgUm9QRSAgICAgICAgICAgICAgICAgICMKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgogICAgIyBIYW5kbGUgcXVlcmllcyBRIGZpcnN0CiAgICBxX25vcGVfYW5kX3JvcGUgPSBGLmxpbmVhcihxX2xvcmEsIGNvbmZpZy5RX3Byb2pfdXBfd2VpZ2h0KS52aWV3KAogICAgICAgIGJhdGNoX3NpemUsIHNlcV9sZW4sIGNvbmZpZy5uX2hlYWRzLCBjb25maWcucWtfbm9wZV9oZWFkX2RpbSArIGNvbmZpZy5xa19yb3BlX2hlYWRfZGltKQogICAgcV9ub3BlLCBxX3JvcGUgPSB0b3JjaC5zcGxpdChxX25vcGVfYW5kX3JvcGUsIFtjb25maWcucWtfbm9wZV9oZWFkX2RpbSwgY29uZmlnLnFrX3JvcGVfaGVhZF9kaW1dLCBkaW09LTEpCgogICAgIyBIYW5kbGUga2V5cyBhbmQgdmFsdWVzIEsvVi4gViBkb2VzIG5vdCBuZWVkIFJvUEUKICAgIGt2X25vcGUsIGtfcm9wZSA9IHRvcmNoLnNwbGl0KGt2X2xvcmEsIFtjb25maWcua3ZfbG9yYV9yYW5rLCBjb25maWcucWtfcm9wZV9oZWFkX2RpbV0sIGRpbT0tMSkKICAgIGt2X25vcGUgPSBGLmxpbmVhcihrdl9ub3BlLCBjb25maWcuS1ZfcHJval91cF93ZWlnaHQpLnZpZXcoCiAgICAgICAgYmF0Y2hfc2l6ZSwga3ZfbGVuLCBjb25maWcubl9oZWFkcywgY29uZmlnLnFrX25vcGVfaGVhZF9kaW0gKyBjb25maWcudl9oZWFkX2RpbSkKICAgIGtfbm9wZSwgdiA9IHRvcmNoLnNwbGl0KGt2X25vcGUsIFtjb25maWcucWtfbm9wZV9oZWFkX2RpbSwgY29uZmlnLnZfaGVhZF9kaW1dLCBkaW09LTEpCgogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICMgICAgICAgICAgICAgICAgICAgIFN0ZXAgMzogSGFuZGxlIFJvUEUgU3RyZWFtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKICAgICMgQ29tcHV0ZSBSb1BFIGZvciBxdWVyaWVzIGFuZCBjb21iaW5lIHdpdGggbm8tUm9QRSBwYXJ0CiAgICBxX3JvcGUgPSBxX3JvcGUucmVzaGFwZShiYXRjaF9zaXplLCBjb25maWcubl9oZWFkcywgc2VxX2xlbiwgY29uZmlnLnFrX3JvcGVfaGVhZF9kaW0pCiAgICBxX3JvcGUgPSByb3BlKHFfcm9wZSwgdGhldGEsIHN0YXJ0X3Bvcz1xdWVyeV9wb3MpCiAgICBxX3JvcGUgPSBxX3JvcGUucmVzaGFwZShiYXRjaF9zaXplLCBzZXFfbGVuLCBjb25maWcubl9oZWFkcywgY29uZmlnLnFrX3JvcGVfaGVhZF9kaW0pCiAgICBxID0gdG9yY2guY29uY2F0KFtxX25vcGUsIHFfcm9wZV0sIGRpbT0tMSkKCiAgICAjIENvbXB1dGUgUm9QRSBmb3Iga2V5cyBhbmQgY29tYmluZSB3aXRoIG5vLVJvUEUgcGFydAogICAga19yb3BlID0ga19yb3BlWzosIDosIE5vbmUsIDpdCiAgICBrX3JvcGUgPSByb3BlKGtfcm9wZSwgdGhldGEpLmV4cGFuZCgtMSwtMSxjb25maWcubl9oZWFkcywtMSkKICAgIGsgPSB0b3JjaC5jb25jYXQoW2tfbm9wZSwga19yb3BlXSwgZGltPS0xKQoKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAjICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHV0ZSBNdWx0aS1oZWFkIEF0dGVudGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgIwogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICBxID0gcS5yZXNoYXBlKGJhdGNoX3NpemUsIGNvbmZpZy5uX2hlYWRzLCAxLCBjb25maWcucWtfcm9wZV9oZWFkX2RpbSArIGNvbmZpZy5xa19ub3BlX2hlYWRfZGltKQogICAgayA9IGsucmVzaGFwZShiYXRjaF9zaXplLCBjb25maWcubl9oZWFkcywga3ZfbGVuLCBjb25maWcucWtfcm9wZV9oZWFkX2RpbSArIGNvbmZpZy5xa19ub3BlX2hlYWRfZGltKQogICAgdiA9IHYucmVzaGFwZShiYXRjaF9zaXplLCBjb25maWcubl9oZWFkcywgLTEsIGNvbmZpZy52X2hlYWRfZGltKQogICAgc2NvcmVzID0gdG9yY2gubWF0bXVsKHEsIGsudHJhbnNwb3NlKC0xLCAtMikpIC8gbWF0aC5zcXJ0KGNvbmZpZy5xa19yb3BlX2hlYWRfZGltICsgY29uZmlnLnFrX25vcGVfaGVhZF9kaW0pCiAgICBhdHRuID0gRi5zb2Z0bWF4KHNjb3JlcywgZGltPS0xKS50byh0b3JjaC5iZmxvYXQxNikKICAgIHkgPSB0b3JjaC5tYXRtdWwoYXR0biwgdikudmlldyhiYXRjaF9zaXplLCAxLCAtMSkKICAgIHkgPSBGLmxpbmVhcih5LCBjb25maWcud29fd2VpZ2h0KQoKICAgIHJldHVybiB5LCBrdl9jYWNoZS5nZXRfZGF0YSgpCg==
No newline at end of file
+ aW1wb3J0IG1hdGgKaW1wb3J0IHRpbWUKaW1wb3J0IHJhbmRvbQoKaW1wb3J0IG51bXB5IGFzIG5wCmltcG9ydCB0b3JjaAppbXBvcnQgdG9yY2gubm4uZnVuY3Rpb25hbCBhcyBGCgpmcm9tIHRhc2sgaW1wb3J0IGlucHV0X3QsIG91dHB1dF90CmZyb20gcmVmZXJlbmNlIGltcG9ydCBLVkNhY2hlLCBDb25maWcKZnJvbSB1dGlscyBpbXBvcnQgdmVyYm9zZV9hbGxjbG9zZQoKCmRlZiBzZXRfc2VlZChzZWVkPTApOgogICAgcmFuZG9tLnNlZWQoc2VlZCkKICAgIG5wLnJhbmRvbS5zZWVkKHNlZWQpCiAgICB0b3JjaC5tYW51YWxfc2VlZChzZWVkKQoKCnFrX3JvcGVfaGVhZF9kaW0gPSA2NAoKIyBzdGFydCA9IHRpbWUucGVyZl9jb3VudGVyX25zKCkKCnRoZXRhID0gMTAwMDAgKiogKC10b3JjaC5hcmFuZ2UoMCwgcWtfcm9wZV9oZWFkX2RpbSAvLyAyLCBkdHlwZT10b3JjaC5iZmxvYXQxNiwgZGV2aWNlPSJjdWRhIikgLyAocWtfcm9wZV9oZWFkX2RpbSAvLyAyKSkKc2VxX2lkeCA9IHRvcmNoLmFyYW5nZSgwLCA4MTkyLCBkZXZpY2U9ImN1ZGEiKQppZHhfdGhldGEgPSB0b3JjaC5laW5zdW0oJ3MsZC0+c2QnLCBzZXFfaWR4LCB0aGV0YSkKaWR4X3RoZXRhMiA9IHRvcmNoLmNhdChbaWR4X3RoZXRhLCBpZHhfdGhldGFdLCBkaW09LTEpCnByZV9jb3MgPSBpZHhfdGhldGEyLmNvcygpLnRvKHRvcmNoLmJmbG9hdDE2KS51bnNxdWVlemUoMSkKcHJlX3NpbiA9IGlkeF90aGV0YTIuc2luKCkudG8odG9yY2guYmZsb2F0MTYpLnVuc3F1ZWV6ZSgxKQoKIyBlbmQgPSB0aW1lLnBlcmZfY291bnRlcl9ucygpCiMgcHJpbnQoZW5kIC0gc3RhcnQpCgoKZGVmIHJvdGF0ZV9oYWxmKHg6IHRvcmNoLlRlbnNvcikgLT4gdG9yY2guVGVuc29yOgogICAgeDEsIHgyID0geC5jaHVuaygyLCBkaW09LTEpCiAgICByZXR1cm4gdG9yY2guY2F0KCgteDIsIHgxKSwgZGltPS0xKQoKCmRlZiByb3BlKHg6IHRvcmNoLlRlbnNvciwgdGhldGE6IHRvcmNoLlRlbnNvciwgc3RhcnRfcG9zOiBpbnQgPSAwKSAtPiB0b3JjaC5UZW5zb3I6CiAgICBzZXFfbGVuID0geC5zaXplKC0yKQogICAgc2VxX2lkeCA9IHRvcmNoLmFyYW5nZShzdGFydF9wb3MsIHN0YXJ0X3BvcyArIHNlcV9sZW4sIGRldmljZT14LmRldmljZSkKICAgIGlkeF90aGV0YSA9IHRvcmNoLmVpbnN1bSgncyxkLT5zZCcsIHNlcV9pZHgsIHRoZXRhKQogICAgaWR4X3RoZXRhMiA9IHRvcmNoLmNhdChbaWR4X3RoZXRhLCBpZHhfdGhldGFdLCBkaW09LTEpCiAgICBjb3MgPSBpZHhfdGhldGEyLmNvcygpLnRvKHRvcmNoLmJmbG9hdDE2KQogICAgc2luID0gaWR4X3RoZXRhMi5zaW4oKS50byh0b3JjaC5iZmxvYXQxNikKICAgIHJldHVybiB4ICogY29zICsgcm90YXRlX2hhbGYoeCkgKiBzaW4KCgpkZWYgYXBwbHlfcm90YXJ5X2VtYih4OiB0b3JjaC5UZW5zb3IsIHRoZXRhOiB0b3JjaC5UZW5zb3IsIHN0YXJ0X3BvczogaW50ID0gMCkgLT4gdG9yY2guVGVuc29yOgogICAgc2VxX2xlbiA9IHguc2l6ZSgtMykKICAgIHNlcV9pZHggPSB0b3JjaC5hcmFuZ2Uoc3RhcnRfcG9zLCBzdGFydF9wb3MgKyBzZXFfbGVuLCBkZXZpY2U9eC5kZXZpY2UpCiAgICBpZHhfdGhldGEgPSB0b3JjaC5laW5zdW0oJ3MsZC0+c2QnLCBzZXFfaWR4LCB0aGV0YSkKICAgIGlkeF90aGV0YTIgPSB0b3JjaC5jYXQoW2lkeF90aGV0YSwgaWR4X3RoZXRhXSwgZGltPS0xKQogICAgY29zID0gaWR4X3RoZXRhMi5jb3MoKS50byh0b3JjaC5iZmxvYXQxNikudW5zcXVlZXplKDEpCiAgICBzaW4gPSBpZHhfdGhldGEyLnNpbigpLnRvKHRvcmNoLmJmbG9hdDE2KS51bnNxdWVlemUoMSkKICAgIHJldHVybiB4ICogY29zICsgcm90YXRlX2hhbGYoeCkgKiBzaW4KCgpkZWYgYXBwbHlfcm90YXJ5X2VtYl9wcmUoeDogdG9yY2guVGVuc29yLCB0aGV0YTogdG9yY2guVGVuc29yLCBzdGFydF9wb3M6IGludCA9IDApIC0+IHRvcmNoLlRlbnNvcjoKICAgIHNlcV9sZW4gPSB4LnNpemUoLTMpCiAgICBjb3MgPSBwcmVfY29zW3N0YXJ0X3BvczpzdGFydF9wb3MgKyBzZXFfbGVuXQogICAgc2luID0gcHJlX3NpbltzdGFydF9wb3M6c3RhcnRfcG9zICsgc2VxX2xlbl0KICAgIHJldHVybiB4ICogY29zICsgcm90YXRlX2hhbGYoeCkgKiBzaW4KCgpkZWYgdGVzdF9hcHBseV9yb3RhcnlfZW1iKCk6CiAgICAjIHNoYXBlIFticywgaGVhZCwgc2VxX2xlbiwgZGltXQogICAgeCA9IHRvcmNoLnJhbmRuKDEsIDIsIDQsIGRpbSwgZHR5cGU9dG9yY2guYmZsb2F0MTYpCiAgICB5ID0gcm9wZSh4LCB0aGV0YSkKICAgIHByaW50KHkpCgogICAgeCA9IHgucGVybXV0ZSgwLCAyLCAxLCAzKQogICAgeSA9IGFwcGx5X3JvdGFyeV9lbWIoeCwgdGhldGEpCiAgICB5ID0geS5wZXJtdXRlKDAsIDIsIDEsIDMpCiAgICBwcmludCh5KQoKCmRlZiBtbGFfbmF2aWUoeDogdG9yY2guVGVuc29yLCBrdl9jYWNoZTogS1ZDYWNoZSwgY29uZmlnOiBDb25maWcpIC0+IHRvcmNoLlRlbnNvcjoKICAgIGJzeiwgc2VxbGVuLCBfID0geC5zaXplKCkKCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICMgZ2V0IHFfbm9wZSwgcV9yb3BlCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICMgcSA9IHNlbGYud3FfYihGLmxpbmVhcih4LCBzZWxmLndxX2EoeCkpCiAgICBxID0gRi5saW5lYXIoRi5saW5lYXIoeCwgY29uZmlnLlFfcHJval9kb3duX3dlaWdodCksIGNvbmZpZy5RX3Byb2pfdXBfd2VpZ2h0KQogICAgcSA9IHEudmlldyhic3osIHNlcWxlbiwgY29uZmlnLm5faGVhZHMsIGNvbmZpZy5xa19ub3BlX2hlYWRfZGltICsgY29uZmlnLnFrX3JvcGVfaGVhZF9kaW0pCiAgICBxX25vcGUsIHFfcm9wZSA9IHRvcmNoLnNwbGl0KHEsIFtjb25maWcucWtfbm9wZV9oZWFkX2RpbSwgY29uZmlnLnFrX3JvcGVfaGVhZF9kaW1dLCBkaW09LTEpCgogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAjIGdldCBrdiwga19yb3BlCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICMga3YgPSBzZWxmLndrdl9hKHgpCiAgICBrdiA9IEYubGluZWFyKHgsIGNvbmZpZy5LVl9wcm9qX2Rvd25fd2VpZ2h0KQogICAga3YsIGt2X2xlbiA9IGt2X2NhY2hlKGt2KQogICAga3YsIGtfcm9wZSA9IHRvcmNoLnNwbGl0KGt2LCBbY29uZmlnLmt2X2xvcmFfcmFuaywgY29uZmlnLnFrX3JvcGVfaGVhZF9kaW1dLCBkaW09LTEpCgogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAjIGFwcGxlIHJvcGUKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgcV9yb3BlID0gYXBwbHlfcm90YXJ5X2VtYihxX3JvcGUsIHRoZXRhLCBzdGFydF9wb3M9a3ZfbGVuIC0gMSkKICAgIGtfcm9wZSA9IGFwcGx5X3JvdGFyeV9lbWIoa19yb3BlLnVuc3F1ZWV6ZSgyKSwgdGhldGEpCiAgICAKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgIyBnZXQgcQogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICBxID0gdG9yY2guY2F0KFtxX25vcGUsIHFfcm9wZV0sIGRpbT0tMSkKCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICMgZ2V0IGssIHYKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgIyBrdiA9IHNlbGYud2t2X2Ioa3YpCiAgICBrdiA9IEYubGluZWFyKGt2LCBjb25maWcuS1ZfcHJval91cF93ZWlnaHQpCiAgICBrdiA9IGt2LnZpZXcoYnN6LCBrdl9sZW4sIGNvbmZpZy5uX2hlYWRzLCBjb25maWcucWtfbm9wZV9oZWFkX2RpbSArIGNvbmZpZy52X2hlYWRfZGltKQogICAga19ub3BlLCB2ID0gdG9yY2guc3BsaXQoa3YsIFtjb25maWcucWtfbm9wZV9oZWFkX2RpbSwgY29uZmlnLnZfaGVhZF9kaW1dLCBkaW09LTEpCiAgICBrID0gdG9yY2guY2F0KFtrX25vcGUsIGtfcm9wZS5leHBhbmQoLTEsIC0xLCBjb25maWcubl9oZWFkcywgLTEpXSwgZGltPS0xKQoKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgIyBhdHRlbnRpb24KICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgc2NvcmVzID0gdG9yY2guZWluc3VtKCJic2hkLGJ0aGQtPmJzaHQiLCBxLCBrKSAvIG1hdGguc3FydChjb25maWcucWtfcm9wZV9oZWFkX2RpbSArIGNvbmZpZy5xa19ub3BlX2hlYWRfZGltKQogICAgc2NvcmVzID0gc2NvcmVzLnNvZnRtYXgoZGltPS0xLCBkdHlwZT10b3JjaC5mbG9hdDMyKS50eXBlX2FzKHgpCiAgICB4ID0gdG9yY2guZWluc3VtKCJic2h0LGJ0aGQtPmJzaGQiLCBzY29yZXMsIHYpCgogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAjIG91dHB1dCBwcm9qZWN0aW9uCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgIHggPSBGLmxpbmVhcih4LmZsYXR0ZW4oMiksIGNvbmZpZy53b193ZWlnaHQpCgogICAgcmV0dXJuIHgsIGt2X2NhY2hlLmdldF9kYXRhKCkKCgpkZWYgbWxhX2Fic29yYih4OiB0b3JjaC5UZW5zb3IsIGt2X2NhY2hlOiBLVkNhY2hlLCBjb25maWc6IENvbmZpZykgLT4gdG9yY2guVGVuc29yOgogICAgYnN6LCBzZXFsZW4sIF8gPSB4LnNpemUoKQoKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgIyBnZXQgcV9ub3BlLCBxX3JvcGUKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgIyBxID0gc2VsZi53cV9iKHNlbGYucV9ub3JtKHNlbGYud3FfYSh4KSkpCiAgICBxID0gRi5saW5lYXIoRi5saW5lYXIoeCwgY29uZmlnLlFfcHJval9kb3duX3dlaWdodCksIGNvbmZpZy5RX3Byb2pfdXBfd2VpZ2h0KQogICAgcSA9IHEudmlldyhic3osIHNlcWxlbiwgY29uZmlnLm5faGVhZHMsIGNvbmZpZy5xa19ub3BlX2hlYWRfZGltICsgY29uZmlnLnFrX3JvcGVfaGVhZF9kaW0pCiAgICBxX25vcGUsIHFfcm9wZSA9IHRvcmNoLnNwbGl0KHEsIFtjb25maWcucWtfbm9wZV9oZWFkX2RpbSwgY29uZmlnLnFrX3JvcGVfaGVhZF9kaW1dLCBkaW09LTEpCgogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAjIGdldCBrdiwga19yb3BlCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICMga3YgPSBzZWxmLndrdl9hKHgpCiAgICBrdiA9IEYubGluZWFyKHgsIGNvbmZpZy5LVl9wcm9qX2Rvd25fd2VpZ2h0KQogICAga3YsIGt2X2xlbiA9IGt2X2NhY2hlKGt2KQogICAga3YsIGtfcm9wZSA9IHRvcmNoLnNwbGl0KGt2LCBbY29uZmlnLmt2X2xvcmFfcmFuaywgY29uZmlnLnFrX3JvcGVfaGVhZF9kaW1dLCBkaW09LTEpCgogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAjIGFwcGx5IHJvcGUKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgcV9yb3BlID0gYXBwbHlfcm90YXJ5X2VtYihxX3JvcGUsIHRoZXRhLCBzdGFydF9wb3M9a3ZfbGVuIC0gMSkKICAgIGtfcm9wZSA9IGFwcGx5X3JvdGFyeV9lbWIoa19yb3BlLnVuc3F1ZWV6ZSgyKSwgdGhldGEpCgogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAjIG11bHRpcGx5IHFfbm9wZSB3aXRoIHdfdWsKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgd2t2X2IgPSBjb25maWcuS1ZfcHJval91cF93ZWlnaHQudmlldyhjb25maWcubl9oZWFkcywgLTEsIGNvbmZpZy5rdl9sb3JhX3JhbmspCiAgICAjIHFfbm9wZSBzaGFwZSBbMTI4LCAxLCAxMjgsIDEyOF0sIHdrdl9iIHNoYXBlIFsxMjgsIDEyOCwgNTEyXSwgcmVzIHNoYXBlIFsxMjgsIDEsIDEyOCwgNTEyXSwgZmxvcHMgMS4wNyBHCiAgICBxX25vcGUgPSB0b3JjaC5laW5zdW0oImJzaGQsaGRjLT5ic2hjIiwgcV9ub3BlLCB3a3ZfYls6LCA6Y29uZmlnLnFrX25vcGVfaGVhZF9kaW1dKQoKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgIyBhdHRlbnRpb24KICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgIyBxX25vcGUgc2hhcGUgWzEyOCwgMSwgMTI4LCA1MTJdLCBrdiBzaGFwZSBbMTI4LCA1MTMsIDUxMl0sIHJlcyBzaGFwZSBbMTI4LCAxLCAxMjgsIDUxM10sIGZsb3BzIDQuMyBHCiAgICAjIHFfbm9wZSBzaGFwZSBbMTI4LCAxLCAxMjgsIDY0XSwga3Ygc2hhcGUgWzEyOCwgNTEzLCA2NF0sIHJlcyBzaGFwZSBbMTI4LCAxLCAxMjgsIDUxM10sIGZsb3BzIDAuNTQgRwogICAgc2NvcmVzID0gKHRvcmNoLmVpbnN1bSgiYnNoYyxidGMtPmJzaHQiLCBxX25vcGUsIGt2KSArCiAgICAgICAgICAgICAgdG9yY2guZWluc3VtKCJic2hyLGJ0ci0+YnNodCIsIHFfcm9wZSwga19yb3BlLnNxdWVlemUoMikpKSAvIG1hdGguc3FydChjb25maWcucWtfcm9wZV9oZWFkX2RpbSArIGNvbmZpZy5xa19ub3BlX2hlYWRfZGltKQogICAgc2NvcmVzID0gc2NvcmVzLnNvZnRtYXgoZGltPS0xLCBkdHlwZT10b3JjaC5mbG9hdDMyKS50eXBlX2FzKHgpCiAgICAjIHNjb3JlcyBzaGFwZSBbMTI4LCAxLCAxMjgsIDUxM10sIGt2IHNoYXBlIFsxMjgsIDUxMywgNTEyXSwgcmVzIHNoYXBlIFsxMjgsIDEsIDEyOCwgNTEyXSwgZmxvcHMgNC4zIEcKICAgIHggPSB0b3JjaC5laW5zdW0oImJzaHQsYnRjLT5ic2hjIiwgc2NvcmVzLCBrdikKICAgICMgeCBzaGFwZSBbMTI4LCAxLCAxMjgsIDUxMl0sIHdrdl9iIHNoYXBlIFsxMjgsIDEyOCwgNTEyXSwgcmVzIHNoYXBlIFsxMjgsIDEyOCwgNTEyXSwgZmxvcHMgMS4wNyBHCiAgICB4ID0gdG9yY2guZWluc3VtKCJic2hjLGhkYy0+YnNoZCIsIHgsIHdrdl9iWzosIC1jb25maWcudl9oZWFkX2RpbTpdKQoKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgIyBvdXRwdXQgcHJvamVjdGlvbgogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICB4ID0gRi5saW5lYXIoeC5mbGF0dGVuKDIpLCBjb25maWcud29fd2VpZ2h0KQoKICAgIHJldHVybiB4LCBrdl9jYWNoZS5nZXRfZGF0YSgpCgoKZGVmIGN1c3RvbV9rZXJuZWwoZGF0YTogaW5wdXRfdCkgLT4gb3V0cHV0X3Q6CiAgICBjb25maWcsIHgsIGt2X2NhY2hlID0gZGF0YQogICAgcmV0dXJuIG1sYV9hYnNvcmIoeCwga3ZfY2FjaGUsIGNvbmZpZykKCgppZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgc2V0X3NlZWQoKQoKICAgIGZyb20gcmVmZXJlbmNlIGltcG9ydCBnZW5lcmF0ZV9pbnB1dCwgcmVmX2tlcm5lbAogICAgZnJvbSBldmFsIGltcG9ydCBjb3B5X2t2X2NhY2hlCgogICAgYmF0Y2hzaXplID0gMTI4CiAgICBkaW0gPSA3MTY4IAogICAgZHEgPSAxNTM2CiAgICBwcmVmaWxsID0gNTEyCiAgICBzZWVkID0gOTcKCiAgICBjb25maWcsIHgsIGt2X2NhY2hlID0gZ2VuZXJhdGVfaW5wdXQoYmF0Y2hzaXplLCBkaW0sIGRxLCBwcmVmaWxsLCBzZWVkKQogICAgcmVmX2t2X2NhY2hlID0gY29weV9rdl9jYWNoZShrdl9jYWNoZSwgY29uZmlnLmt2X2NhY2hlX3NoYXBlKQoKICAgIHN0YXJ0ID0gdGltZS5wZXJmX2NvdW50ZXJfbnMoKQogICAgb3V0cHV0LCBrdiA9IG1sYV9hYnNvcmIoeCwga3ZfY2FjaGUsIGNvbmZpZykKICAgIGVuZCA9IHRpbWUucGVyZl9jb3VudGVyX25zKCkKICAgIHByaW50KGVuZCAtIHN0YXJ0KQogICAgIyBwcmludChvdXRwdXQuc2hhcGUpCiAgICAjIHByaW50KGt2LnNoYXBlKQoKICAgIHN0YXJ0ID0gdGltZS5wZXJmX2NvdW50ZXJfbnMoKQogICAgcmVmX291dHB1dCwgcmVmX2t2ID0gcmVmX2tlcm5lbCgoY29uZmlnLCB4LCByZWZfa3ZfY2FjaGUpKQogICAgZW5kID0gdGltZS5wZXJmX2NvdW50ZXJfbnMoKQogICAgcHJpbnQoZW5kIC0gc3RhcnQpCiAgICAjIHByaW50KHJlZl9vdXRwdXQuc2hhcGUpCiAgICAjIHByaW50KHJlZl9rdi5zaGFwZSkKCiAgICAjIHN0YXJ0ID0gdGltZS5wZXJmX2NvdW50ZXJfbnMoKQogICAgIyByZWZfb3V0cHV0LCByZWZfa3YgPSBtbGFfbmF2aWUoeCwgcmVmX2t2X2NhY2hlLCBjb25maWcpCiAgICAjIGVuZCA9IHRpbWUucGVyZl9jb3VudGVyX25zKCkKICAgICMgcHJpbnQoZW5kIC0gc3RhcnQpCiAgICAjIHByaW50KHJlZl9vdXRwdXQuc2hhcGUpCiAgICAjIHByaW50KHJlZl9rdi5zaGFwZSkKCiAgICBwcmludCh2ZXJib3NlX2FsbGNsb3NlKG91dHB1dCwgcmVmX291dHB1dCwgcnRvbD0yZS0wMiwgYXRvbD04ZS0wMykpCiAgICBwcmludCh2ZXJib3NlX2FsbGNsb3NlKGt2LCByZWZfa3YsIHJ0b2w9MmUtMDIsIGF0b2w9OGUtMDMpKQo=
No newline at end of file

Best evidence level for this revision: reported

JSON