Skip to content
KernelIndex
Search⌘K

submission 29488

KernelBot user 7 · 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.

amd-mla-submission.py
curl "https://kernelindex.com/api/v1/implementations/kernelbot-amd-mla-decode-29488?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
2.68ms
#27 of 79
2025-05-31

Reported · How evidence levels are derived →

Source and license

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

Kernel source

amd-mla-submission.py1 lines
aW1wb3J0IG1hdGgNCmltcG9ydCB0b3JjaA0KZnJvbSB0b3JjaCBpbXBvcnQgbm4NCmZyb20gdGFzayBpbXBvcnQgaW5wdXRfdCwgb3V0cHV0X3QNCg0KZGVmIHJvcGUoeDogdG9yY2guVGVuc29yLCBwb3M6IGludCkgLT4gdG9yY2guVGVuc29yOg0KDQogICAgbiwgc2wsIGQgPSB4LnNoYXBlDQoNCiAgICB0aGV0YSA9IHRvcmNoLmFyYW5nZShkIC8vIDIsIGR0eXBlPXRvcmNoLmJmbG9hdDE2LCBkZXZpY2U9J2N1ZGEnKQ0KICAgIHRoZXRhID0gMTAwMDAgKiogKC0yICogdGhldGEgLyBkKQ0KICAgIGlkeCA9IHRvcmNoLmFyYW5nZShwb3MsIHBvcyArIHNsLCBkdHlwZT10b3JjaC5iZmxvYXQxNiwgZGV2aWNlPSdjdWRhJykNCiAgICBpZHhfdGhldGEgPSB0b3JjaC5laW5zdW0oJ3MsZC0+c2QnLCBpZHgsIHRoZXRhKQ0KICAgIGNvcyA9IHRvcmNoLmNvcyhpZHhfdGhldGEpLnRvKHRvcmNoLmJmbG9hdDE2KQ0KICAgIHNpbiA9IHRvcmNoLnNpbihpZHhfdGhldGEpLnRvKHRvcmNoLmJmbG9hdDE2KQ0KDQogICAgeSA9IHRvcmNoLmVtcHR5X2xpa2UoeCkNCiAgICB4MSA9IHhbOiwgOiwgOmQvLzJdDQogICAgeDIgPSB4WzosIDosIGQvLzI6XQ0KICAgIHlbOiwgOiwgOmQvLzJdID0geDEgKiBjb3MgLSB4MiAqIHNpbg0KICAgIHlbOiwgOiwgZC8vMjpdID0geDIgKiBjb3MgKyB4MSAqIHNpbg0KICAgIHJldHVybiB5DQoNCmRlZiBjdXN0b21fa2VybmVsKGRhdGE6IGlucHV0X3QpIC0+IG91dHB1dF90Og0KICAgIGNvbmZpZywgeCwga3ZfY2FjaGUgPSBkYXRhDQoNCiAgICBicyA9IGNvbmZpZy5iYXRjaF9zaXplDQogICAgc2wgPSBjb25maWcuc2VxX2xlbg0KICAgIHBsID0ga3ZfY2FjaGUuc2VxX2xlbg0KICAgIG5oID0gY29uZmlnLm5faGVhZHMNCiAgICBkID0gIGNvbmZpZy5kaW0NCiAgICBkcSA9IGNvbmZpZy5xX2xvcmFfcmFuaw0KICAgIGRrdiA9IGNvbmZpZy5rdl9sb3JhX3JhbmsNCiAgICBkbm9wZSA9IGNvbmZpZy5xa19ub3BlX2hlYWRfZGltDQogICAgZHJvcGUgPSBjb25maWcucWtfcm9wZV9oZWFkX2RpbQ0KICAgIGR2ID0gY29uZmlnLnZfaGVhZF9kaW0NCg0KICAgIHdEUSAgPSBjb25maWcuUV9wcm9qX2Rvd25fd2VpZ2h0ICAgICAgICAgICAgICAgICAgICAgICAgIyBbZHEsIGRdDQogICAgd0RLViA9IGNvbmZpZy5LVl9wcm9qX2Rvd25fd2VpZ2h0ICAgICAgICAgICAgICAgICAgICAgICAjIFtka3YgKyBkcm9wZSwgZF0NCiAgICB3VVEgID0gY29uZmlnLlFfcHJval91cF93ZWlnaHQgICAgICAgICAgICAgICAgICAgICAgICAgICMgW25oICogKGRub3BlICsgZHJvcGUpLCBkcV0NCiAgICB3VUtWID0gY29uZmlnLktWX3Byb2pfdXBfd2VpZ2h0ICAgICAgICAgICAgICAgICAgICAgICAgICMgW25oICogKGRub3BlICsgZHYpLCBka3ZdDQogICAgd08gICA9IGNvbmZpZy53b193ZWlnaHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFtkLCBuaCAqIGR2XQ0KDQogICAgeCA9IHgudmlldyhicywgZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFticywgZF0NCiAgICBxRCA9IHggQCB3RFEuVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgW2JzLCBkcV0NCiAgICBxVSA9IChxRCBAIHdVUS5UKS52aWV3KGJzICogbmgsIHNsLCBkbm9wZSArIGRyb3BlKSAgICAgICMgW2JzKm5oLCBzbCwgZG5vcGUgKyBkcm9wZV0NCiAgICBxVVs6LCA6LCBkbm9wZTpdID0gcm9wZShxVVs6LCA6LCBkbm9wZTpdLCBwbCkNCiAgICBxVSA9IHFVLnZpZXcoYnMsIG5oLCBkbm9wZSArIGRyb3BlKSAgICAgICAgICAgICAgICAgICAgICMgW2JzLCBuaCwgZG5vcGUgKyBkcm9wZV0NCg0KICAgIHdES1YgPSB3REtWLnZpZXcoZGt2ICsgZHJvcGUsIGQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFtka3YgKyBkcm9wZSwgZF0NCiAgICBrdl9jYWNoZS5kYXRhWzosIHBsOnBsKzEsIDpdID0gKHggQCB3REtWLlQpLnZpZXcoYnMsIDEsIGRrdiArIGRyb3BlKQ0KICAgIGt2X2NhY2hlLnNlcV9sZW4gKz0gMQ0KICAgIGtSID0gcm9wZShrdl9jYWNoZS5kYXRhWzosIDpwbCsxLCBka3Y6XSwgMCkudmlldyhicywgcGwrc2wsIGRyb3BlKSAgICAgICAgICAjIFticywgcGwrc2wsIGRyb3BlXQ0KDQogICAgd1VLViA9IHdVS1YudmlldyhuaCwgZG5vcGUgKyBkdiwgZGt2KQ0KICAgIHFDd1VLID0gdG9yY2guYm1tKHFVWzosIDosIDpkbm9wZV0udHJhbnNwb3NlKDAsIDEpLCB3VUtWWzosIDpkbm9wZSwgOl0pLnRyYW5zcG9zZSgwLCAxKSAgIyBbYnMsIG5oLCBka3ZdDQoNCiAgICBxayA9IHRvcmNoLmJtbShxQ3dVSywga3ZfY2FjaGUuZGF0YVs6LCA6cGwrc2wsIDpka3ZdLnRyYW5zcG9zZSgxLCAyKSkgKyAgdG9yY2guYm1tKHFVWzosIDosIGRub3BlOl0sIGtSLnRyYW5zcG9zZSgxLCAyKSkNCiAgICBxayA9IHRvcmNoLnNvZnRtYXgocWsgLyBtYXRoLnNxcnQoZG5vcGUgKyBkcm9wZSksIGRpbT0tMSkgICAgICAgICAgICAgICAgICAgIyBbYnMsIG5oLCBwbCtzbF0NCiAgICBxa2t2QyA9IHRvcmNoLmJtbShxaywga3ZfY2FjaGUuZGF0YVs6LCA6cGwrc2wsIDpka3ZdKSAgICAgICAgICAgICAgICAgICAgICAgIyBbYnMsIG5oLCBka3ZdDQogICAgcWt2ID0gdG9yY2guYm1tKHFra3ZDLnRyYW5zcG9zZSgwLCAxKSwgd1VLVls6LCBkbm9wZTosIDpdLnRyYW5zcG9zZSgxLCAyKSkudHJhbnNwb3NlKDAsIDEpDQogICAgb3V0cHV0ID0gKHFrdi5yZXNoYXBlKGJzLCBuaCAqIGR2KSBAIHdPLlQpLnZpZXcoYnMsIHNsLCBkKSAgIyBbYnMsIHNsLCBkXQ0KDQogICAgcmV0dXJuIG91dHB1dCwga3ZfY2FjaGUuZGF0YQ==

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

- aW1wb3J0IG1hdGgNCmltcG9ydCB0b3JjaA0KZnJvbSB0b3JjaCBpbXBvcnQgbm4NCmZyb20gdGFzayBpbXBvcnQgaW5wdXRfdCwgb3V0cHV0X3QNCg0KZGVmIG15cm9wZSh4OiB0b3JjaC5UZW5zb3IsIHBvczogaW50KSAtPiB0b3JjaC5UZW5zb3I6DQoNCiAgICBuLCBzbCwgZCA9IHguc2hhcGUNCg0KICAgIHRoZXRhID0gdG9yY2guYXJhbmdlKGQgLy8gMiwgZHR5cGU9dG9yY2guYmZsb2F0MTYsIGRldmljZT0nY3VkYScpDQogICAgdGhldGEgPSAxMDAwMCAqKiAoLTIgKiB0aGV0YSAvIGQpDQogICAgaWR4ID0gdG9yY2guYXJhbmdlKHBvcywgcG9zICsgc2wsIGR0eXBlPXRvcmNoLmJmbG9hdDE2LCBkZXZpY2U9J2N1ZGEnKQ0KICAgIGlkeF90aGV0YSA9IHRvcmNoLmVpbnN1bSgncyxkLT5zZCcsIGlkeCwgdGhldGEpDQogICAgY29zID0gdG9yY2guY29zKGlkeF90aGV0YSkudG8odG9yY2guYmZsb2F0MTYpDQogICAgc2luID0gdG9yY2guc2luKGlkeF90aGV0YSkudG8odG9yY2guYmZsb2F0MTYpDQoNCiAgICB5ID0gdG9yY2guZW1wdHlfbGlrZSh4KQ0KICAgIHgxID0geFs6LCA6LCA6ZC8vMl0NCiAgICB4MiA9IHhbOiwgOiwgZC8vMjpdDQogICAgeVs6LCA6LCA6ZC8vMl0gPSB4MSAqIGNvcyAtIHgyICogc2luDQogICAgeVs6LCA6LCBkLy8yOl0gPSB4MiAqIGNvcyArIHgxICogc2luDQogICAgcmV0dXJuIHkNCg0KZGVmIGN1c3RvbV9rZXJuZWwoZGF0YTogaW5wdXRfdCkgLT4gb3V0cHV0X3Q6DQogICAgY29uZmlnLCB4LCBrdl9jYWNoZSA9IGRhdGENCg0KICAgIGJzID0gY29uZmlnLmJhdGNoX3NpemUNCiAgICBzbCA9IGNvbmZpZy5zZXFfbGVuDQogICAgcGwgPSBrdl9jYWNoZS5zZXFfbGVuDQogICAgbmggPSBjb25maWcubl9oZWFkcw0KICAgIGQgPSAgY29uZmlnLmRpbQ0KICAgIGRxID0gY29uZmlnLnFfbG9yYV9yYW5rDQogICAgZGt2ID0gY29uZmlnLmt2X2xvcmFfcmFuaw0KICAgIGRub3BlID0gY29uZmlnLnFrX25vcGVfaGVhZF9kaW0NCiAgICBkcm9wZSA9IGNvbmZpZy5xa19yb3BlX2hlYWRfZGltDQogICAgZHYgPSBjb25maWcudl9oZWFkX2RpbQ0KDQogICAgd0RRICA9IGNvbmZpZy5RX3Byb2pfZG93bl93ZWlnaHQgICAgICAgICAgICAgICAgICAgICAgICAjIFtkcSwgZF0NCiAgICB3REtWID0gY29uZmlnLktWX3Byb2pfZG93bl93ZWlnaHQgICAgICAgICAgICAgICAgICAgICAgICMgW2RrdiArIGRyb3BlLCBkXQ0KICAgIHdVUSAgPSBjb25maWcuUV9wcm9qX3VwX3dlaWdodCAgICAgICAgICAgICAgICAgICAgICAgICAgIyBbbmggKiAoZG5vcGUgKyBkcm9wZSksIGRxXQ0KICAgIHdVS1YgPSBjb25maWcuS1ZfcHJval91cF93ZWlnaHQgICAgICAgICAgICAgICAgICAgICAgICAgIyBbbmggKiAoZG5vcGUgKyBkdiksIGRrdl0NCiAgICB3TyAgID0gY29uZmlnLndvX3dlaWdodCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgW2QsIG5oICogZHZdDQoNCiAgICB4ID0geC52aWV3KGJzLCBkKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgW2JzLCBkXQ0KICAgIHFEID0geCBAIHdEUS5UICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBbYnMsIGRxXQ0KICAgIHFVID0gKHFEIEAgd1VRLlQpLnZpZXcoYnMgKiBuaCwgc2wsIGRub3BlICsgZHJvcGUpICAgICAgIyBbYnMqbmgsIHNsLCBkbm9wZSArIGRyb3BlXQ0KICAgIHFVWzosIDosIGRub3BlOl0gPSBteXJvcGUocVVbOiwgOiwgZG5vcGU6XSwgcGwpDQogICAgcVUgPSBxVS52aWV3KGJzLCBuaCwgZG5vcGUgKyBkcm9wZSkgICAgICAgICAgICAgICAgICAgICAjIFticywgbmgsIGRub3BlICsgZHJvcGVdDQoNCiAgICB3REtWID0gd0RLVi52aWV3KGRrdiArIGRyb3BlLCBkKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBbZGt2ICsgZHJvcGUsIGRdDQogICAga3ZfY2FjaGUuZGF0YVs6LCBwbDpwbCsxLCA6XSA9ICh4IEAgd0RLVi5UKS52aWV3KGJzLCAxLCBka3YgKyBkcm9wZSkNCiAgICBrdl9jYWNoZS5zZXFfbGVuICs9IDENCiAgICBrUiA9IG15cm9wZShrdl9jYWNoZS5kYXRhWzosIDpwbCsxLCBka3Y6XSwgMCkudmlldyhicywgcGwrc2wsIGRyb3BlKSAgICAgICAgICAjIFticywgcGwrc2wsIGRyb3BlXQ0KICAgIHFDd1VLID0gdG9yY2guZW1wdHkoKGJzLCBuaCwgZGt2KSwgZHR5cGU9dG9yY2guYmZsb2F0MTYsIGRldmljZT0nY3VkYScpDQogICAgd1VLViA9IHdVS1YudmlldyhuaCwgZG5vcGUgKyBkdiwgZGt2KQ0KICAgIGZvciBpX25oIGluIHJhbmdlKG5oKToNCiAgICAgICAgcUN3VUtbOiwgaV9uaCwgOl0gPSBxVVs6LCBpX25oLCA6ZG5vcGVdIEAgd1VLVltpX25oLCA6ZG5vcGUsIDpdDQogICAgcWsgPSB0b3JjaC5lbXB0eSgoYnMsIG5oLCBwbCtzbCksIGR0eXBlPXRvcmNoLmJmbG9hdDE2LCBkZXZpY2U9J2N1ZGEnKQ0KICAgIGZvciBpX2JzIGluIHJhbmdlKGJzKToNCiAgICAgICAgcWtbaV9icywgOiwgOl0gPSBxQ3dVS1tpX2JzLCA6LCA6XSBAIGt2X2NhY2hlLmRhdGFbaV9icywgOnBsK3NsLCA6ZGt2XS5UICsgcVVbaV9icywgOiwgZG5vcGU6XSBAIGtSW2lfYnMsIDpwbCtzbCwgOl0uVA0KICAgIHFrID0gdG9yY2guc29mdG1heChxayAvIG1hdGguc3FydChkbm9wZSArIGRyb3BlKSwgZGltPS0xKSAgICAgICAgICAgICAgICAgICAjIFticywgbmgsIHBsK3NsXQ0KICAgIHFra3ZDID0gdG9yY2guZW1wdHkoKGJzLCBuaCwgZGt2KSwgZHR5cGU9dG9yY2guYmZsb2F0MTYsIGRldmljZT0nY3VkYScpDQogICAgZm9yIGlfYnMgaW4gcmFuZ2UoYnMpOg0KICAgICAgICBxa2t2Q1tpX2JzLCA6LCA6XSA9IHFrW2lfYnMsIDosIDpdIEAga3ZfY2FjaGUuZGF0YVtpX2JzLCA6cGwrc2wsIDpka3ZdDQogICAgcWt2ID0gdG9yY2guZW1wdHkoKGJzLCBuaCwgZHYpLCBkdHlwZT10b3JjaC5iZmxvYXQxNiwgZGV2aWNlPSdjdWRhJykNCiAgICBmb3IgaV9uaCBpbiByYW5nZShuaCk6DQogICAgICAgIHFrdls6LCBpX25oLCA6XSA9IHFra3ZDWzosIGlfbmgsIDpdIEAgd1VLVltpX25oLCBkbm9wZTosIDpdLlQNCiAgICBvdXRwdXQgPSAocWt2LnZpZXcoYnMsIG5oICogZHYpIEAgd08uVCkudmlldyhicywgc2wsIGQpICAjIFticywgc2wsIGRdDQoNCiAgICByZXR1cm4gb3V0cHV0LCBrdl9jYWNoZS5kYXRh
No newline at end of file
+ aW1wb3J0IG1hdGgNCmltcG9ydCB0b3JjaA0KZnJvbSB0b3JjaCBpbXBvcnQgbm4NCmZyb20gdGFzayBpbXBvcnQgaW5wdXRfdCwgb3V0cHV0X3QNCg0KZGVmIHJvcGUoeDogdG9yY2guVGVuc29yLCBwb3M6IGludCkgLT4gdG9yY2guVGVuc29yOg0KDQogICAgbiwgc2wsIGQgPSB4LnNoYXBlDQoNCiAgICB0aGV0YSA9IHRvcmNoLmFyYW5nZShkIC8vIDIsIGR0eXBlPXRvcmNoLmJmbG9hdDE2LCBkZXZpY2U9J2N1ZGEnKQ0KICAgIHRoZXRhID0gMTAwMDAgKiogKC0yICogdGhldGEgLyBkKQ0KICAgIGlkeCA9IHRvcmNoLmFyYW5nZShwb3MsIHBvcyArIHNsLCBkdHlwZT10b3JjaC5iZmxvYXQxNiwgZGV2aWNlPSdjdWRhJykNCiAgICBpZHhfdGhldGEgPSB0b3JjaC5laW5zdW0oJ3MsZC0+c2QnLCBpZHgsIHRoZXRhKQ0KICAgIGNvcyA9IHRvcmNoLmNvcyhpZHhfdGhldGEpLnRvKHRvcmNoLmJmbG9hdDE2KQ0KICAgIHNpbiA9IHRvcmNoLnNpbihpZHhfdGhldGEpLnRvKHRvcmNoLmJmbG9hdDE2KQ0KDQogICAgeSA9IHRvcmNoLmVtcHR5X2xpa2UoeCkNCiAgICB4MSA9IHhbOiwgOiwgOmQvLzJdDQogICAgeDIgPSB4WzosIDosIGQvLzI6XQ0KICAgIHlbOiwgOiwgOmQvLzJdID0geDEgKiBjb3MgLSB4MiAqIHNpbg0KICAgIHlbOiwgOiwgZC8vMjpdID0geDIgKiBjb3MgKyB4MSAqIHNpbg0KICAgIHJldHVybiB5DQoNCmRlZiBjdXN0b21fa2VybmVsKGRhdGE6IGlucHV0X3QpIC0+IG91dHB1dF90Og0KICAgIGNvbmZpZywgeCwga3ZfY2FjaGUgPSBkYXRhDQoNCiAgICBicyA9IGNvbmZpZy5iYXRjaF9zaXplDQogICAgc2wgPSBjb25maWcuc2VxX2xlbg0KICAgIHBsID0ga3ZfY2FjaGUuc2VxX2xlbg0KICAgIG5oID0gY29uZmlnLm5faGVhZHMNCiAgICBkID0gIGNvbmZpZy5kaW0NCiAgICBkcSA9IGNvbmZpZy5xX2xvcmFfcmFuaw0KICAgIGRrdiA9IGNvbmZpZy5rdl9sb3JhX3JhbmsNCiAgICBkbm9wZSA9IGNvbmZpZy5xa19ub3BlX2hlYWRfZGltDQogICAgZHJvcGUgPSBjb25maWcucWtfcm9wZV9oZWFkX2RpbQ0KICAgIGR2ID0gY29uZmlnLnZfaGVhZF9kaW0NCg0KICAgIHdEUSAgPSBjb25maWcuUV9wcm9qX2Rvd25fd2VpZ2h0ICAgICAgICAgICAgICAgICAgICAgICAgIyBbZHEsIGRdDQogICAgd0RLViA9IGNvbmZpZy5LVl9wcm9qX2Rvd25fd2VpZ2h0ICAgICAgICAgICAgICAgICAgICAgICAjIFtka3YgKyBkcm9wZSwgZF0NCiAgICB3VVEgID0gY29uZmlnLlFfcHJval91cF93ZWlnaHQgICAgICAgICAgICAgICAgICAgICAgICAgICMgW25oICogKGRub3BlICsgZHJvcGUpLCBkcV0NCiAgICB3VUtWID0gY29uZmlnLktWX3Byb2pfdXBfd2VpZ2h0ICAgICAgICAgICAgICAgICAgICAgICAgICMgW25oICogKGRub3BlICsgZHYpLCBka3ZdDQogICAgd08gICA9IGNvbmZpZy53b193ZWlnaHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFtkLCBuaCAqIGR2XQ0KDQogICAgeCA9IHgudmlldyhicywgZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFticywgZF0NCiAgICBxRCA9IHggQCB3RFEuVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgW2JzLCBkcV0NCiAgICBxVSA9IChxRCBAIHdVUS5UKS52aWV3KGJzICogbmgsIHNsLCBkbm9wZSArIGRyb3BlKSAgICAgICMgW2JzKm5oLCBzbCwgZG5vcGUgKyBkcm9wZV0NCiAgICBxVVs6LCA6LCBkbm9wZTpdID0gcm9wZShxVVs6LCA6LCBkbm9wZTpdLCBwbCkNCiAgICBxVSA9IHFVLnZpZXcoYnMsIG5oLCBkbm9wZSArIGRyb3BlKSAgICAgICAgICAgICAgICAgICAgICMgW2JzLCBuaCwgZG5vcGUgKyBkcm9wZV0NCg0KICAgIHdES1YgPSB3REtWLnZpZXcoZGt2ICsgZHJvcGUsIGQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFtka3YgKyBkcm9wZSwgZF0NCiAgICBrdl9jYWNoZS5kYXRhWzosIHBsOnBsKzEsIDpdID0gKHggQCB3REtWLlQpLnZpZXcoYnMsIDEsIGRrdiArIGRyb3BlKQ0KICAgIGt2X2NhY2hlLnNlcV9sZW4gKz0gMQ0KICAgIGtSID0gcm9wZShrdl9jYWNoZS5kYXRhWzosIDpwbCsxLCBka3Y6XSwgMCkudmlldyhicywgcGwrc2wsIGRyb3BlKSAgICAgICAgICAjIFticywgcGwrc2wsIGRyb3BlXQ0KDQogICAgd1VLViA9IHdVS1YudmlldyhuaCwgZG5vcGUgKyBkdiwgZGt2KQ0KICAgIHFDd1VLID0gdG9yY2guYm1tKHFVWzosIDosIDpkbm9wZV0udHJhbnNwb3NlKDAsIDEpLCB3VUtWWzosIDpkbm9wZSwgOl0pLnRyYW5zcG9zZSgwLCAxKSAgIyBbYnMsIG5oLCBka3ZdDQoNCiAgICBxayA9IHRvcmNoLmJtbShxQ3dVSywga3ZfY2FjaGUuZGF0YVs6LCA6cGwrc2wsIDpka3ZdLnRyYW5zcG9zZSgxLCAyKSkgKyAgdG9yY2guYm1tKHFVWzosIDosIGRub3BlOl0sIGtSLnRyYW5zcG9zZSgxLCAyKSkNCiAgICBxayA9IHRvcmNoLnNvZnRtYXgocWsgLyBtYXRoLnNxcnQoZG5vcGUgKyBkcm9wZSksIGRpbT0tMSkgICAgICAgICAgICAgICAgICAgIyBbYnMsIG5oLCBwbCtzbF0NCiAgICBxa2t2QyA9IHRvcmNoLmJtbShxaywga3ZfY2FjaGUuZGF0YVs6LCA6cGwrc2wsIDpka3ZdKSAgICAgICAgICAgICAgICAgICAgICAgIyBbYnMsIG5oLCBka3ZdDQogICAgcWt2ID0gdG9yY2guYm1tKHFra3ZDLnRyYW5zcG9zZSgwLCAxKSwgd1VLVls6LCBkbm9wZTosIDpdLnRyYW5zcG9zZSgxLCAyKSkudHJhbnNwb3NlKDAsIDEpDQogICAgb3V0cHV0ID0gKHFrdi5yZXNoYXBlKGJzLCBuaCAqIGR2KSBAIHdPLlQpLnZpZXcoYnMsIHNsLCBkKSAgIyBbYnMsIHNsLCBkXQ0KDQogICAgcmV0dXJuIG91dHB1dCwga3ZfY2FjaGUuZGF0YQ==
No newline at end of file

Best evidence level for this revision: reported

JSON