Name: series-workflow8qngl Phase: Failed StartedAt: 2026-07-27 22:07:43 +0000 UTC FinishedAt: 2026-07-27 22:39:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8qngl[0] Phase: Succeeded StartedAt: 2026-07-27 22:07:43 +0000 UTC FinishedAt: 2026-07-27 22:39:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8qngl[0].run-triage Phase: Succeeded StartedAt: 2026-07-27 22:07:43 +0000 UTC FinishedAt: 2026-07-27 22:39:15 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDIyOjM4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgcmVuYW1lcyB0aGUgZnVuY3Rpb25zIHB3cnNlcV9wb3dlcl9vbiB0byBwd3JzZXFfdm90ZV9vbiBhbmQgcHdyc2VxX3Bvd2VyX29mZiB0byBwd3JzZXFfdm90ZV9vZmYgYWNyb3NzIHRoZSBwb3dlciBzZXF1ZW5jaW5nIHN1YnN5c3RlbSBhbmQgaXRzIGNvbnN1bWVycy4gVGhlcmUgYXJlIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAyMjozODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDIzZDRjYzZiOTVkNDBmMjMzMThiYzE0ZTE3ODcxNWJjZWUwZjc3ODJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCAyNyAyMjozODo1MyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvcHdyc2VxLnJzdCBiL0RvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9wd3JzZXEucnN0XG5pbmRleCBhZDE4YjIzMjZiNjg5YS4uZmFiYTVhOGUzMzM3ZTggMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvcHdyc2VxLnJzdFxuJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3B3cnNlcS5yc3RcbkBAIC01MCw5ICYjNDM7NTAsOSBAQCBDb25zdW1lciBpbnRlcmZhY2VcbiBUaGUgY29uc3VtZXIgQVBJIGlzIGFpbWVkIHRvIGJlIGFzIHNpbXBsZSBhcyBwb3NzaWJsZS4gVGhlIGRyaXZlciBpbnRlcmVzdGVkIGluXG4gZ2V0dGluZyBhIGRlc2NyaXB0b3IgZnJvbSB0aGUgcG93ZXIgc2VxdWVuY2VyIHNob3VsZCBjYWxsIHB3cnNlcV9nZXQoKSBhbmRcbiBzcGVjaWZ5IHRoZSBuYW1lIG9mIHRoZSB0YXJnZXQgaXQgd2FudHMgdG8gcmVhY2ggaW4gdGhlIHNlcXVlbmNlIGFmdGVyIGNhbGxpbmdcbi1wd3JzZXFfcG93ZXJfdXAoKS4gVGhlIGRlc2NyaXB0b3IgY2FuIGJlIHJlbGVhc2VkIGJ5IGNhbGxpbmcgcHdyc2VxX3B1dCgpIGFuZFxuJiM0Mztwd3JzZXFfdm90ZV9vbigpLiBUaGUgZGVzY3JpcHRvciBjYW4gYmUgcmVsZWFzZWQgYnkgY2FsbGluZyBwd3JzZXFfcHV0KCkgYW5kXG4gdGhlIGNvbnN1bWVyIGNhbiByZXF1ZXN0IHRoZSBwb3dlcmluZyBkb3duIG9mIGl0cyB0YXJnZXQgd2l0aFxuLXB3cnNlcV9wb3dlcl9vZmYoKS4gTm90ZSB0aGF0IHRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IHB3cnNlcV9wb3dlcl9vZmYoKVxuJiM0Mztwd3JzZXFfdm90ZV9vZmYoKS4gTm90ZSB0aGF0IHRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IHB3cnNlcV92b3RlX29mZigpXG4gd2lsbCBoYXZlIGFueSBlZmZlY3QgYXMgdGhlcmUgbWF5IGJlIG11bHRpcGxlIHVzZXJzIG9mIHRoZSB1bmRlcmx5aW5nIHJlc291cmNlc1xuIHdobyBtYXkga2VlcCB0aGVtIGFjdGl2ZS5cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2JsdWV0b290aC9oY2lfcWNhLmMgYi9kcml2ZXJzL2JsdWV0b290aC9oY2lfcWNhLmNcbmluZGV4IGU2ZDEwN2Y2Nzc1OWY1Li41YWFhYmM5ZmIxYjY2ZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmx1ZXRvb3RoL2hjaV9xY2EuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibHVldG9vdGgvaGNpX3FjYS5jXG5AQCAtMjI1OSw3ICYjNDM7MjI1OSw3IEBAIHN0YXRpYyB2b2lkIHFjYV9wb3dlcl9vZmYoc3RydWN0IGhjaV91YXJ0ICpodSlcbiBcdH1cbiBcbiBcdGlmIChwb3dlciBcdTAwMjZcdTAwMjYgcG93ZXItXHUwMDNlcHdyc2VxKSB7XG4tXHRcdHB3cnNlcV9wb3dlcl9vZmYocG93ZXItXHUwMDNlcHdyc2VxKTtcbiYjNDM7XHRcdHB3cnNlcV92b3RlX29mZihwb3dlci1cdTAwM2Vwd3JzZXEpO1xuIFx0XHRzZXRfYml0KFFDQV9CVF9PRkYsIFx1MDAyNnFjYS1cdTAwM2VmbGFncyk7XG4gXHRcdHJldHVybjtcbiAgICAgICAgIH1cbkBAIC0yMzE5LDcgJiM0MzsyMzE5LDcgQEAgc3RhdGljIGludCBxY2FfcmVndWxhdG9yX2VuYWJsZShzdHJ1Y3QgcWNhX3NlcmRldiAqcWNhZGV2KVxuIFx0aW50IHJldDtcbiBcbiBcdGlmIChwb3dlci1cdTAwM2Vwd3JzZXEpXG4tXHRcdHJldHVybiBwd3JzZXFfcG93ZXJfb24ocG93ZXItXHUwMDNlcHdyc2VxKTtcbiYjNDM7XHRcdHJldHVybiBwd3JzZXFfdm90ZV9vbihwb3dlci1cdTAwM2Vwd3JzZXEpO1xuIFxuIFx0LyogQWxyZWFkeSBlbmFibGVkICovXG4gXHRpZiAocG93ZXItXHUwMDNldnJlZ3Nfb24pXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2ltYWdpbmF0aW9uL3B2cl9wb3dlci5jIGIvZHJpdmVycy9ncHUvZHJtL2ltYWdpbmF0aW9uL3B2cl9wb3dlci5jXG5pbmRleCBhNzFkNWIzNTYwMWU3Yi4uYzZkZmEyNjg1ZWU2NDAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vaW1hZ2luYXRpb24vcHZyX3Bvd2VyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZ3B1L2RybS9pbWFnaW5hdGlvbi9wdnJfcG93ZXIuY1xuQEAgLTM1MiwxMiAmIzQzOzM1MiwxMiBAQCBzdGF0aWMgaW50IHB2cl9wb3dlcl9pbml0X3B3cnNlcShzdHJ1Y3QgcHZyX2RldmljZSAqcHZyX2RldilcbiBcbiBzdGF0aWMgaW50IHB2cl9wb3dlcl9vbl9zZXF1ZW5jZV9wd3JzZXEoc3RydWN0IHB2cl9kZXZpY2UgKnB2cl9kZXYpXG4ge1xuLVx0cmV0dXJuIHB3cnNlcV9wb3dlcl9vbihwdnJfZGV2LVx1MDAzZXB3cnNlcSk7XG4mIzQzO1x0cmV0dXJuIHB3cnNlcV92b3RlX29uKHB2cl9kZXYtXHUwMDNlcHdyc2VxKTtcbiB9XG4gXG4gc3RhdGljIGludCBwdnJfcG93ZXJfb2ZmX3NlcXVlbmNlX3B3cnNlcShzdHJ1Y3QgcHZyX2RldmljZSAqcHZyX2RldilcbiB7XG4tXHRyZXR1cm4gcHdyc2VxX3Bvd2VyX29mZihwdnJfZGV2LVx1MDAzZXB3cnNlcSk7XG4mIzQzO1x0cmV0dXJuIHB3cnNlcV92b3RlX29mZihwdnJfZGV2LVx1MDAzZXB3cnNlcSk7XG4gfVxuIFxuIGNvbnN0IHN0cnVjdCBwdnJfcG93ZXJfc2VxdWVuY2Vfb3BzIHB2cl9wb3dlcl9zZXF1ZW5jZV9vcHNfcHdyc2VxID0ge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvc25vYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9zbm9jLmNcbmluZGV4IDMxMDY1MDIyNzU3ODFkLi5mODdlNTY1NzZlMjkxMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvc25vYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Nub2MuY1xuQEAgLTEwMjUsNyAmIzQzOzEwMjUsNyBAQCBzdGF0aWMgaW50IGF0aDEwa19od19wb3dlcl9vbihzdHJ1Y3QgYXRoMTBrICphcilcbiBcbiBcdGF0aDEwa19kYmcoYXIsIEFUSDEwS19EQkdfU05PQywgXCYjMzQ7c29jIHBvd2VyIG9uXFxuXCYjMzQ7KTtcbiBcbi1cdHJldCA9IHB3cnNlcV9wb3dlcl9vbihhcl9zbm9jLVx1MDAzZXB3cnNlcSk7XG4mIzQzO1x0cmV0ID0gcHdyc2VxX3ZvdGVfb24oYXJfc25vYy1cdTAwM2Vwd3JzZXEpO1xuIFx0aWYgKHJldClcbiBcdFx0cmV0dXJuIHJldDtcbiBcbkBAIC0xMDQyLDcgJiM0MzsxMDQyLDcgQEAgc3RhdGljIGludCBhdGgxMGtfaHdfcG93ZXJfb24oc3RydWN0IGF0aDEwayAqYXIpXG4gdnJlZ19vZmY6XG4gXHRyZWd1bGF0b3JfYnVsa19kaXNhYmxlKGFyX3Nub2MtXHUwMDNlbnVtX3ZyZWdzLCBhcl9zbm9jLVx1MDAzZXZyZWdzKTtcbiBwd3JzZXFfb2ZmOlxuLVx0cHdyc2VxX3Bvd2VyX29mZihhcl9zbm9jLVx1MDAzZXB3cnNlcSk7XG4mIzQzO1x0cHdyc2VxX3ZvdGVfb2ZmKGFyX3Nub2MtXHUwMDNlcHdyc2VxKTtcbiBcbiBcdHJldHVybiByZXQ7XG4gfVxuQEAgLTEwNjAsNyAmIzQzOzEwNjAsNyBAQCBzdGF0aWMgaW50IGF0aDEwa19od19wb3dlcl9vZmYoc3RydWN0IGF0aDEwayAqYXIpXG4gXHRyZXRfdnJlZyA9IHJlZ3VsYXRvcl9idWxrX2Rpc2FibGUoYXJfc25vYy1cdTAwM2VudW1fdnJlZ3MsIGFyX3Nub2MtXHUwMDNldnJlZ3MpO1xuIFxuIFx0aWYgKGFyX3Nub2MtXHUwMDNlcHdyc2VxKVxuLVx0XHRyZXRfc2VxID0gcHdyc2VxX3Bvd2VyX29mZihhcl9zbm9jLVx1MDAzZXB3cnNlcSk7XG4mIzQzO1x0XHRyZXRfc2VxID0gcHdyc2VxX3ZvdGVfb2ZmKGFyX3Nub2MtXHUwMDNlcHdyc2VxKTtcbiBcbiBcdHJldHVybiByZXRfdnJlZyA/IDogcmV0X3NlcTtcbiB9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvcHdyY3RybC9nZW5lcmljLmMgYi9kcml2ZXJzL3BjaS9wd3JjdHJsL2dlbmVyaWMuY1xuaW5kZXggYTdlNTk5ZDg0MWU2MjguLjg4NzJmNjUwMTM1MmQ3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9wY2kvcHdyY3RybC9nZW5lcmljLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvcGNpL3B3cmN0cmwvZ2VuZXJpYy5jXG5AQCAtMjksNyAmIzQzOzI5LDcgQEAgc3RhdGljIGludCBzbG90X3B3cmN0cmxfcG93ZXJfb24oc3RydWN0IHBjaV9wd3JjdHJsICpwd3JjdHJsKVxuIFx0aW50IHJldDtcbiBcbiBcdGlmIChzbG90LVx1MDAzZXB3cnNlcSkge1xuLVx0XHRwd3JzZXFfcG93ZXJfb24oc2xvdC1cdTAwM2Vwd3JzZXEpO1xuJiM0MztcdFx0cHdyc2VxX3ZvdGVfb24oc2xvdC1cdTAwM2Vwd3JzZXEpO1xuIFx0XHRyZXR1cm4gMDtcbiBcdH1cbiBcbkBAIC00OCw3ICYjNDM7NDgsNyBAQCBzdGF0aWMgaW50IHNsb3RfcHdyY3RybF9wb3dlcl9vZmYoc3RydWN0IHBjaV9wd3JjdHJsICpwd3JjdHJsKVxuIFx0XHRcdFx0XHRcdHN0cnVjdCBzbG90X3B3cmN0cmwsIHB3cmN0cmwpO1xuIFxuIFx0aWYgKHNsb3QtXHUwMDNlcHdyc2VxKSB7XG4tXHRcdHB3cnNlcV9wb3dlcl9vZmYoc2xvdC1cdTAwM2Vwd3JzZXEpO1xuJiM0MztcdFx0cHdyc2VxX3ZvdGVfb2ZmKHNsb3QtXHUwMDNlcHdyc2VxKTtcbiBcdFx0cmV0dXJuIDA7XG4gXHR9XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvcHdyY3RybC9wY2ktcHdyY3RybC1wd3JzZXEuYyBiL2RyaXZlcnMvcGNpL3B3cmN0cmwvcGNpLXB3cmN0cmwtcHdyc2VxLmNcbmluZGV4IGEzMDhiZjRiNWZjMDFkLi44NjgyMmYwZjY0NWViNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvcGNpL3B3cmN0cmwvcGNpLXB3cmN0cmwtcHdyc2VxLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvcGNpL3B3cmN0cmwvcGNpLXB3cmN0cmwtcHdyc2VxLmNcbkBAIC01Niw3ICYjNDM7NTYsNyBAQCBzdGF0aWMgaW50IHB3cnNlcV9wd3JjdHJsX3Bvd2VyX29uKHN0cnVjdCBwY2lfcHdyY3RybCAqcHdyY3RybClcbiBcdHN0cnVjdCBwd3JzZXFfcHdyY3RybCAqcHdyc2VxID0gY29udGFpbmVyX29mKHB3cmN0cmwsXG4gXHRcdFx0XHRcdCAgIHN0cnVjdCBwd3JzZXFfcHdyY3RybCwgcHdyY3RybCk7XG4gXG4tXHRyZXR1cm4gcHdyc2VxX3Bvd2VyX29uKHB3cnNlcS1cdTAwM2Vwd3JzZXEpO1xuJiM0MztcdHJldHVybiBwd3JzZXFfdm90ZV9vbihwd3JzZXEtXHUwMDNlcHdyc2VxKTtcbiB9XG4gXG4gc3RhdGljIGludCBwd3JzZXFfcHdyY3RybF9wb3dlcl9vZmYoc3RydWN0IHBjaV9wd3JjdHJsICpwd3JjdHJsKVxuQEAgLTY0LDcgJiM0Mzs2NCw3IEBAIHN0YXRpYyBpbnQgcHdyc2VxX3B3cmN0cmxfcG93ZXJfb2ZmKHN0cnVjdCBwY2lfcHdyY3RybCAqcHdyY3RybClcbiBcdHN0cnVjdCBwd3JzZXFfcHdyY3RybCAqcHdyc2VxID0gY29udGFpbmVyX29mKHB3cmN0cmwsXG4gXHRcdFx0XHRcdCAgIHN0cnVjdCBwd3JzZXFfcHdyY3RybCwgcHdyY3RybCk7XG4gXG4tXHRyZXR1cm4gcHdyc2VxX3Bvd2VyX29mZihwd3JzZXEtXHUwMDNlcHdyc2VxKTtcbiYjNDM7XHRyZXR1cm4gcHdyc2VxX3ZvdGVfb2ZmKHB3cnNlcS1cdTAwM2Vwd3JzZXEpO1xuIH1cbiBcbiBzdGF0aWMgaW50IHB3cnNlcV9wd3JjdHJsX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9wb3dlci9zZXF1ZW5jaW5nL2NvcmUuYyBiL2RyaXZlcnMvcG93ZXIvc2VxdWVuY2luZy9jb3JlLmNcbmluZGV4IDAyZjQyZGE5MTU5ODUzLi5jNjMwYjE0ZjZmMmM0NyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvcG93ZXIvc2VxdWVuY2luZy9jb3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvcG93ZXIvc2VxdWVuY2luZy9jb3JlLmNcbkBAIC03MDgsNyAmIzQzOzcwOCw3IEBAIHZvaWQgcHdyc2VxX3B1dChzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpXG4gXHRwd3JzZXEgPSBkZXNjLVx1MDAzZXB3cnNlcTtcbiBcbiBcdGlmIChkZXNjLVx1MDAzZXBvd2VyZWRfb24pXG4tXHRcdHB3cnNlcV9wb3dlcl9vZmYoZGVzYyk7XG4mIzQzO1x0XHRwd3JzZXFfdm90ZV9vZmYoZGVzYyk7XG4gXG4gXHRrZnJlZShkZXNjKTtcbiBcdG1vZHVsZV9wdXQocHdyc2VxLVx1MDAzZW93bmVyKTtcbkBAIC04NzQsNyAmIzQzOzg3NCw3IEBAIHN0YXRpYyBpbnQgcHdyc2VxX3VuaXRfZGlzYWJsZShzdHJ1Y3QgcHdyc2VxX2RldmljZSAqcHdyc2VxLFxuIH1cbiBcbiAvKipcbi0gKiBwd3JzZXFfcG93ZXJfb24oKSAtIElzc3VlIGEgcG93ZXItb24gcmVxdWVzdCBvbiBiZWhhbGYgb2YgdGhlIGNvbnN1bWVyXG4mIzQzOyAqIHB3cnNlcV92b3RlX29uKCkgLSBJc3N1ZSBhIHBvd2VyLW9uIHJlcXVlc3Qgb24gYmVoYWxmIG9mIHRoZSBjb25zdW1lclxuICAqICAgICAgICAgICAgICAgICAgICAgZGV2aWNlLlxuICAqIEBkZXNjOiBEZXNjcmlwdG9yIHJlZmVyZW5jaW5nIHRoZSBwb3dlciBzZXF1ZW5jZXIuXG4gICpcbkBAIC04ODcsNyAmIzQzOzg4Nyw3IEBAIHN0YXRpYyBpbnQgcHdyc2VxX3VuaXRfZGlzYWJsZShzdHJ1Y3QgcHdyc2VxX2RldmljZSAqcHdyc2VxLFxuICAqIFJldHVybnM6XG4gICogMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJvciBudW1iZXIgb24gZmFpbHVyZS5cbiAgKi9cbi1pbnQgcHdyc2VxX3Bvd2VyX29uKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYylcbiYjNDM7aW50IHB3cnNlcV92b3RlX29uKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYylcbiB7XG4gXHRzdHJ1Y3QgcHdyc2VxX2RldmljZSAqcHdyc2VxO1xuIFx0c3RydWN0IHB3cnNlcV90YXJnZXQgKnRhcmdldDtcbkBAIC05MjUsMTQgJiM0Mzs5MjUsMTQgQEAgaW50IHB3cnNlcV9wb3dlcl9vbihzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpXG4gXG4gXHRyZXR1cm4gcmV0O1xuIH1cbi1FWFBPUlRfU1lNQk9MX0dQTChwd3JzZXFfcG93ZXJfb24pO1xuJiM0MztFWFBPUlRfU1lNQk9MX0dQTChwd3JzZXFfdm90ZV9vbik7XG4gXG4gLyoqXG4tICogcHdyc2VxX3Bvd2VyX29mZigpIC0gSXNzdWUgYSBwb3dlci1vZmYgcmVxdWVzdCBvbiBiZWhhbGYgb2YgdGhlIGNvbnN1bWVyXG4mIzQzOyAqIHB3cnNlcV92b3RlX29mZigpIC0gSXNzdWUgYSBwb3dlci1vZmYgcmVxdWVzdCBvbiBiZWhhbGYgb2YgdGhlIGNvbnN1bWVyXG4gICogICAgICAgICAgICAgICAgICAgICAgZGV2aWNlLlxuICAqIEBkZXNjOiBEZXNjcmlwdG9yIHJlZmVyZW5jaW5nIHRoZSBwb3dlciBzZXF1ZW5jZXIuXG4gICpcbi0gKiBUaGlzIHVuZG9lcyB0aGUgZWZmZWN0cyBvZiBwd3JzZXFfcG93ZXJfb24oKS4gSXQgaXNzdWVzIGEgcG93ZXItb2ZmIHJlcXVlc3RcbiYjNDM7ICogVGhpcyB1bmRvZXMgdGhlIGVmZmVjdHMgb2YgcHdyc2VxX3ZvdGVfb24oKS4gSXQgaXNzdWVzIGEgcG93ZXItb2ZmIHJlcXVlc3RcbiAgKiBvbiBiZWhhbGYgb2YgdGhlIGNvbnN1bWVyIGFuZCB3aGVuIHRoZSBsYXN0IHJlbWFpbmluZyB1c2VyIGRvZXMgc28sIHRoZVxuICAqIHBvd2VyLWRvd24gc2VxdWVuY2Ugd2lsbCBiZSBzdGFydGVkLiBJZiBvbmUgaXMgaW4gcHJvZ3Jlc3MsIHRoZSBmdW5jdGlvblxuICAqIHdpbGwgYmxvY2sgdW50aWwgaXQmIzM5O3MgY29tcGxldGUgYW5kIHRoZW4gcmV0dXJuLlxuQEAgLTk0MCw3ICYjNDM7OTQwLDcgQEAgRVhQT1JUX1NZTUJPTF9HUEwocHdyc2VxX3Bvd2VyX29uKTtcbiAgKiBSZXR1cm5zOlxuICAqIDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3IgbnVtYmVyIG9uIGZhaWx1cmUuXG4gICovXG4taW50IHB3cnNlcV9wb3dlcl9vZmYoc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKVxuJiM0MztpbnQgcHdyc2VxX3ZvdGVfb2ZmKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYylcbiB7XG4gXHRzdHJ1Y3QgcHdyc2VxX2RldmljZSAqcHdyc2VxO1xuIFx0c3RydWN0IHB3cnNlcV91bml0ICp1bml0O1xuQEAgLTk2Niw3ICYjNDM7OTY2LDcgQEAgaW50IHB3cnNlcV9wb3dlcl9vZmYoc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKVxuIFxuIFx0cmV0dXJuIHJldDtcbiB9XG4tRVhQT1JUX1NZTUJPTF9HUEwocHdyc2VxX3Bvd2VyX29mZik7XG4mIzQzO0VYUE9SVF9TWU1CT0xfR1BMKHB3cnNlcV92b3RlX29mZik7XG4gXG4gLyoqXG4gICogcHdyc2VxX3RvX2RldmljZSgpIC0gR2V0IHRoZSBwd3JzZXEgZGV2aWNlIHBvaW50ZXIgZnJvbSBhIGRlc2NyaXB0b3IuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9wd3JzZXEvY29uc3VtZXIuaCBiL2luY2x1ZGUvbGludXgvcHdyc2VxL2NvbnN1bWVyLmhcbmluZGV4IDNjOTA3YzllMTg4NWRjLi5lNGQyY2IzMjEzNTRmMCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvcHdyc2VxL2NvbnN1bWVyLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvcHdyc2VxL2NvbnN1bWVyLmhcbkBAIC0yMCw4ICYjNDM7MjAsOCBAQCB2b2lkIHB3cnNlcV9wdXQoc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKTtcbiBzdHJ1Y3QgcHdyc2VxX2Rlc2MgKiBfX211c3RfY2hlY2tcbiBkZXZtX3B3cnNlcV9nZXQoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBjaGFyICp0YXJnZXQpO1xuIFxuLWludCBwd3JzZXFfcG93ZXJfb24oc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKTtcbi1pbnQgcHdyc2VxX3Bvd2VyX29mZihzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpO1xuJiM0MztpbnQgcHdyc2VxX3ZvdGVfb24oc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKTtcbiYjNDM7aW50IHB3cnNlcV92b3RlX29mZihzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpO1xuIFxuIHN0cnVjdCBkZXZpY2UgKnB3cnNlcV90b19kZXZpY2Uoc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKTtcbiBcbkBAIC00MywxMiAmIzQzOzQzLDEyIEBAIGRldm1fcHdyc2VxX2dldChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IGNoYXIgKnRhcmdldClcbiBcdHJldHVybiBFUlJfUFRSKC1FTk9TWVMpO1xuIH1cbiBcbi1zdGF0aWMgaW5saW5lIGludCBwd3JzZXFfcG93ZXJfb24oc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKVxuJiM0MztzdGF0aWMgaW5saW5lIGludCBwd3JzZXFfdm90ZV9vbihzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpXG4ge1xuIFx0cmV0dXJuIC1FTk9TWVM7XG4gfVxuIFxuLXN0YXRpYyBpbmxpbmUgaW50IHB3cnNlcV9wb3dlcl9vZmYoc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKVxuJiM0MztzdGF0aWMgaW5saW5lIGludCBwd3JzZXFfdm90ZV9vZmYoc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKVxuIHtcbiBcdHJldHVybiAtRU5PU1lTO1xuIH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAyMjozODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSByZW5hbWVzIHRoZSBmdW5jdGlvbnMgcHdyc2VxX3Bvd2VyX29uIHRvIHB3cnNlcV92b3RlX29uIGFuZCBwd3JzZXFfcG93ZXJfb2ZmIHRvIHB3cnNlcV92b3RlX29mZiBhY3Jvc3MgdGhlIHBvd2VyIHNlcXVlbmNpbmcgc3Vic3lzdGVtIGFuZCBpdHMgY29uc3VtZXJzLiBUaGVyZSBhcmUgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMjNkNGNjNmI5NWQ0MGYyMzMxOGJjMTRlMTc4NzE1YmNlZTBmNzc4MgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gSnVsIDI3IDIyOjM4OjUzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3B3cnNlcS5yc3QgYi9Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvcHdyc2VxLnJzdAppbmRleCBhZDE4YjIzMjZiNjg5YS4uZmFiYTVhOGUzMzM3ZTggMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9wd3JzZXEucnN0CiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9wd3JzZXEucnN0CkBAIC01MCw5ICYjNDM7NTAsOSBAQCBDb25zdW1lciBpbnRlcmZhY2UKIFRoZSBjb25zdW1lciBBUEkgaXMgYWltZWQgdG8gYmUgYXMgc2ltcGxlIGFzIHBvc3NpYmxlLiBUaGUgZHJpdmVyIGludGVyZXN0ZWQgaW4KIGdldHRpbmcgYSBkZXNjcmlwdG9yIGZyb20gdGhlIHBvd2VyIHNlcXVlbmNlciBzaG91bGQgY2FsbCBwd3JzZXFfZ2V0KCkgYW5kCiBzcGVjaWZ5IHRoZSBuYW1lIG9mIHRoZSB0YXJnZXQgaXQgd2FudHMgdG8gcmVhY2ggaW4gdGhlIHNlcXVlbmNlIGFmdGVyIGNhbGxpbmcKLXB3cnNlcV9wb3dlcl91cCgpLiBUaGUgZGVzY3JpcHRvciBjYW4gYmUgcmVsZWFzZWQgYnkgY2FsbGluZyBwd3JzZXFfcHV0KCkgYW5kCiYjNDM7cHdyc2VxX3ZvdGVfb24oKS4gVGhlIGRlc2NyaXB0b3IgY2FuIGJlIHJlbGVhc2VkIGJ5IGNhbGxpbmcgcHdyc2VxX3B1dCgpIGFuZAogdGhlIGNvbnN1bWVyIGNhbiByZXF1ZXN0IHRoZSBwb3dlcmluZyBkb3duIG9mIGl0cyB0YXJnZXQgd2l0aAotcHdyc2VxX3Bvd2VyX29mZigpLiBOb3RlIHRoYXQgdGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoYXQgcHdyc2VxX3Bvd2VyX29mZigpCiYjNDM7cHdyc2VxX3ZvdGVfb2ZmKCkuIE5vdGUgdGhhdCB0aGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCBwd3JzZXFfdm90ZV9vZmYoKQogd2lsbCBoYXZlIGFueSBlZmZlY3QgYXMgdGhlcmUgbWF5IGJlIG11bHRpcGxlIHVzZXJzIG9mIHRoZSB1bmRlcmx5aW5nIHJlc291cmNlcwogd2hvIG1heSBrZWVwIHRoZW0gYWN0aXZlLgogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2JsdWV0b290aC9oY2lfcWNhLmMgYi9kcml2ZXJzL2JsdWV0b290aC9oY2lfcWNhLmMKaW5kZXggZTZkMTA3ZjY3NzU5ZjUuLjVhYWFiYzlmYjFiNjZlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2JsdWV0b290aC9oY2lfcWNhLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibHVldG9vdGgvaGNpX3FjYS5jCkBAIC0yMjU5LDcgJiM0MzsyMjU5LDcgQEAgc3RhdGljIHZvaWQgcWNhX3Bvd2VyX29mZihzdHJ1Y3QgaGNpX3VhcnQgKmh1KQogCX0KIAogCWlmIChwb3dlciAmYW1wOyZhbXA7IHBvd2VyLSZndDtwd3JzZXEpIHsKLQkJcHdyc2VxX3Bvd2VyX29mZihwb3dlci0mZ3Q7cHdyc2VxKTsKJiM0MzsJCXB3cnNlcV92b3RlX29mZihwb3dlci0mZ3Q7cHdyc2VxKTsKIAkJc2V0X2JpdChRQ0FfQlRfT0ZGLCAmYW1wO3FjYS0mZ3Q7ZmxhZ3MpOwogCQlyZXR1cm47CiAgICAgICAgIH0KQEAgLTIzMTksNyAmIzQzOzIzMTksNyBAQCBzdGF0aWMgaW50IHFjYV9yZWd1bGF0b3JfZW5hYmxlKHN0cnVjdCBxY2Ffc2VyZGV2ICpxY2FkZXYpCiAJaW50IHJldDsKIAogCWlmIChwb3dlci0mZ3Q7cHdyc2VxKQotCQlyZXR1cm4gcHdyc2VxX3Bvd2VyX29uKHBvd2VyLSZndDtwd3JzZXEpOwomIzQzOwkJcmV0dXJuIHB3cnNlcV92b3RlX29uKHBvd2VyLSZndDtwd3JzZXEpOwogCiAJLyogQWxyZWFkeSBlbmFibGVkICovCiAJaWYgKHBvd2VyLSZndDt2cmVnc19vbikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pbWFnaW5hdGlvbi9wdnJfcG93ZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pbWFnaW5hdGlvbi9wdnJfcG93ZXIuYwppbmRleCBhNzFkNWIzNTYwMWU3Yi4uYzZkZmEyNjg1ZWU2NDAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pbWFnaW5hdGlvbi9wdnJfcG93ZXIuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2dwdS9kcm0vaW1hZ2luYXRpb24vcHZyX3Bvd2VyLmMKQEAgLTM1MiwxMiAmIzQzOzM1MiwxMiBAQCBzdGF0aWMgaW50IHB2cl9wb3dlcl9pbml0X3B3cnNlcShzdHJ1Y3QgcHZyX2RldmljZSAqcHZyX2RldikKIAogc3RhdGljIGludCBwdnJfcG93ZXJfb25fc2VxdWVuY2VfcHdyc2VxKHN0cnVjdCBwdnJfZGV2aWNlICpwdnJfZGV2KQogewotCXJldHVybiBwd3JzZXFfcG93ZXJfb24ocHZyX2Rldi0mZ3Q7cHdyc2VxKTsKJiM0MzsJcmV0dXJuIHB3cnNlcV92b3RlX29uKHB2cl9kZXYtJmd0O3B3cnNlcSk7CiB9CiAKIHN0YXRpYyBpbnQgcHZyX3Bvd2VyX29mZl9zZXF1ZW5jZV9wd3JzZXEoc3RydWN0IHB2cl9kZXZpY2UgKnB2cl9kZXYpCiB7Ci0JcmV0dXJuIHB3cnNlcV9wb3dlcl9vZmYocHZyX2Rldi0mZ3Q7cHdyc2VxKTsKJiM0MzsJcmV0dXJuIHB3cnNlcV92b3RlX29mZihwdnJfZGV2LSZndDtwd3JzZXEpOwogfQogCiBjb25zdCBzdHJ1Y3QgcHZyX3Bvd2VyX3NlcXVlbmNlX29wcyBwdnJfcG93ZXJfc2VxdWVuY2Vfb3BzX3B3cnNlcSA9IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvc25vYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9zbm9jLmMKaW5kZXggMzEwNjUwMjI3NTc4MWQuLmY4N2U1NjU3NmUyOTEyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Nub2MuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Nub2MuYwpAQCAtMTAyNSw3ICYjNDM7MTAyNSw3IEBAIHN0YXRpYyBpbnQgYXRoMTBrX2h3X3Bvd2VyX29uKHN0cnVjdCBhdGgxMGsgKmFyKQogCiAJYXRoMTBrX2RiZyhhciwgQVRIMTBLX0RCR19TTk9DLCAmIzM0O3NvYyBwb3dlciBvblxuJiMzNDspOwogCi0JcmV0ID0gcHdyc2VxX3Bvd2VyX29uKGFyX3Nub2MtJmd0O3B3cnNlcSk7CiYjNDM7CXJldCA9IHB3cnNlcV92b3RlX29uKGFyX3Nub2MtJmd0O3B3cnNlcSk7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIApAQCAtMTA0Miw3ICYjNDM7MTA0Miw3IEBAIHN0YXRpYyBpbnQgYXRoMTBrX2h3X3Bvd2VyX29uKHN0cnVjdCBhdGgxMGsgKmFyKQogdnJlZ19vZmY6CiAJcmVndWxhdG9yX2J1bGtfZGlzYWJsZShhcl9zbm9jLSZndDtudW1fdnJlZ3MsIGFyX3Nub2MtJmd0O3ZyZWdzKTsKIHB3cnNlcV9vZmY6Ci0JcHdyc2VxX3Bvd2VyX29mZihhcl9zbm9jLSZndDtwd3JzZXEpOwomIzQzOwlwd3JzZXFfdm90ZV9vZmYoYXJfc25vYy0mZ3Q7cHdyc2VxKTsKIAogCXJldHVybiByZXQ7CiB9CkBAIC0xMDYwLDcgJiM0MzsxMDYwLDcgQEAgc3RhdGljIGludCBhdGgxMGtfaHdfcG93ZXJfb2ZmKHN0cnVjdCBhdGgxMGsgKmFyKQogCXJldF92cmVnID0gcmVndWxhdG9yX2J1bGtfZGlzYWJsZShhcl9zbm9jLSZndDtudW1fdnJlZ3MsIGFyX3Nub2MtJmd0O3ZyZWdzKTsKIAogCWlmIChhcl9zbm9jLSZndDtwd3JzZXEpCi0JCXJldF9zZXEgPSBwd3JzZXFfcG93ZXJfb2ZmKGFyX3Nub2MtJmd0O3B3cnNlcSk7CiYjNDM7CQlyZXRfc2VxID0gcHdyc2VxX3ZvdGVfb2ZmKGFyX3Nub2MtJmd0O3B3cnNlcSk7CiAKIAlyZXR1cm4gcmV0X3ZyZWcgPyA6IHJldF9zZXE7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9wd3JjdHJsL2dlbmVyaWMuYyBiL2RyaXZlcnMvcGNpL3B3cmN0cmwvZ2VuZXJpYy5jCmluZGV4IGE3ZTU5OWQ4NDFlNjI4Li44ODcyZjY1MDEzNTJkNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9wY2kvcHdyY3RybC9nZW5lcmljLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9wY2kvcHdyY3RybC9nZW5lcmljLmMKQEAgLTI5LDcgJiM0MzsyOSw3IEBAIHN0YXRpYyBpbnQgc2xvdF9wd3JjdHJsX3Bvd2VyX29uKHN0cnVjdCBwY2lfcHdyY3RybCAqcHdyY3RybCkKIAlpbnQgcmV0OwogCiAJaWYgKHNsb3QtJmd0O3B3cnNlcSkgewotCQlwd3JzZXFfcG93ZXJfb24oc2xvdC0mZ3Q7cHdyc2VxKTsKJiM0MzsJCXB3cnNlcV92b3RlX29uKHNsb3QtJmd0O3B3cnNlcSk7CiAJCXJldHVybiAwOwogCX0KIApAQCAtNDgsNyAmIzQzOzQ4LDcgQEAgc3RhdGljIGludCBzbG90X3B3cmN0cmxfcG93ZXJfb2ZmKHN0cnVjdCBwY2lfcHdyY3RybCAqcHdyY3RybCkKIAkJCQkJCXN0cnVjdCBzbG90X3B3cmN0cmwsIHB3cmN0cmwpOwogCiAJaWYgKHNsb3QtJmd0O3B3cnNlcSkgewotCQlwd3JzZXFfcG93ZXJfb2ZmKHNsb3QtJmd0O3B3cnNlcSk7CiYjNDM7CQlwd3JzZXFfdm90ZV9vZmYoc2xvdC0mZ3Q7cHdyc2VxKTsKIAkJcmV0dXJuIDA7CiAJfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9wd3JjdHJsL3BjaS1wd3JjdHJsLXB3cnNlcS5jIGIvZHJpdmVycy9wY2kvcHdyY3RybC9wY2ktcHdyY3RybC1wd3JzZXEuYwppbmRleCBhMzA4YmY0YjVmYzAxZC4uODY4MjJmMGY2NDVlYjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGNpL3B3cmN0cmwvcGNpLXB3cmN0cmwtcHdyc2VxLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9wY2kvcHdyY3RybC9wY2ktcHdyY3RybC1wd3JzZXEuYwpAQCAtNTYsNyAmIzQzOzU2LDcgQEAgc3RhdGljIGludCBwd3JzZXFfcHdyY3RybF9wb3dlcl9vbihzdHJ1Y3QgcGNpX3B3cmN0cmwgKnB3cmN0cmwpCiAJc3RydWN0IHB3cnNlcV9wd3JjdHJsICpwd3JzZXEgPSBjb250YWluZXJfb2YocHdyY3RybCwKIAkJCQkJICAgc3RydWN0IHB3cnNlcV9wd3JjdHJsLCBwd3JjdHJsKTsKIAotCXJldHVybiBwd3JzZXFfcG93ZXJfb24ocHdyc2VxLSZndDtwd3JzZXEpOwomIzQzOwlyZXR1cm4gcHdyc2VxX3ZvdGVfb24ocHdyc2VxLSZndDtwd3JzZXEpOwogfQogCiBzdGF0aWMgaW50IHB3cnNlcV9wd3JjdHJsX3Bvd2VyX29mZihzdHJ1Y3QgcGNpX3B3cmN0cmwgKnB3cmN0cmwpCkBAIC02NCw3ICYjNDM7NjQsNyBAQCBzdGF0aWMgaW50IHB3cnNlcV9wd3JjdHJsX3Bvd2VyX29mZihzdHJ1Y3QgcGNpX3B3cmN0cmwgKnB3cmN0cmwpCiAJc3RydWN0IHB3cnNlcV9wd3JjdHJsICpwd3JzZXEgPSBjb250YWluZXJfb2YocHdyY3RybCwKIAkJCQkJICAgc3RydWN0IHB3cnNlcV9wd3JjdHJsLCBwd3JjdHJsKTsKIAotCXJldHVybiBwd3JzZXFfcG93ZXJfb2ZmKHB3cnNlcS0mZ3Q7cHdyc2VxKTsKJiM0MzsJcmV0dXJuIHB3cnNlcV92b3RlX29mZihwd3JzZXEtJmd0O3B3cnNlcSk7CiB9CiAKIHN0YXRpYyBpbnQgcHdyc2VxX3B3cmN0cmxfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcG93ZXIvc2VxdWVuY2luZy9jb3JlLmMgYi9kcml2ZXJzL3Bvd2VyL3NlcXVlbmNpbmcvY29yZS5jCmluZGV4IDAyZjQyZGE5MTU5ODUzLi5jNjMwYjE0ZjZmMmM0NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9wb3dlci9zZXF1ZW5jaW5nL2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3Bvd2VyL3NlcXVlbmNpbmcvY29yZS5jCkBAIC03MDgsNyAmIzQzOzcwOCw3IEBAIHZvaWQgcHdyc2VxX3B1dChzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpCiAJcHdyc2VxID0gZGVzYy0mZ3Q7cHdyc2VxOwogCiAJaWYgKGRlc2MtJmd0O3Bvd2VyZWRfb24pCi0JCXB3cnNlcV9wb3dlcl9vZmYoZGVzYyk7CiYjNDM7CQlwd3JzZXFfdm90ZV9vZmYoZGVzYyk7CiAKIAlrZnJlZShkZXNjKTsKIAltb2R1bGVfcHV0KHB3cnNlcS0mZ3Q7b3duZXIpOwpAQCAtODc0LDcgJiM0Mzs4NzQsNyBAQCBzdGF0aWMgaW50IHB3cnNlcV91bml0X2Rpc2FibGUoc3RydWN0IHB3cnNlcV9kZXZpY2UgKnB3cnNlcSwKIH0KIAogLyoqCi0gKiBwd3JzZXFfcG93ZXJfb24oKSAtIElzc3VlIGEgcG93ZXItb24gcmVxdWVzdCBvbiBiZWhhbGYgb2YgdGhlIGNvbnN1bWVyCiYjNDM7ICogcHdyc2VxX3ZvdGVfb24oKSAtIElzc3VlIGEgcG93ZXItb24gcmVxdWVzdCBvbiBiZWhhbGYgb2YgdGhlIGNvbnN1bWVyCiAgKiAgICAgICAgICAgICAgICAgICAgIGRldmljZS4KICAqIEBkZXNjOiBEZXNjcmlwdG9yIHJlZmVyZW5jaW5nIHRoZSBwb3dlciBzZXF1ZW5jZXIuCiAgKgpAQCAtODg3LDcgJiM0Mzs4ODcsNyBAQCBzdGF0aWMgaW50IHB3cnNlcV91bml0X2Rpc2FibGUoc3RydWN0IHB3cnNlcV9kZXZpY2UgKnB3cnNlcSwKICAqIFJldHVybnM6CiAgKiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIG51bWJlciBvbiBmYWlsdXJlLgogICovCi1pbnQgcHdyc2VxX3Bvd2VyX29uKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYykKJiM0MztpbnQgcHdyc2VxX3ZvdGVfb24oc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKQogewogCXN0cnVjdCBwd3JzZXFfZGV2aWNlICpwd3JzZXE7CiAJc3RydWN0IHB3cnNlcV90YXJnZXQgKnRhcmdldDsKQEAgLTkyNSwxNCAmIzQzOzkyNSwxNCBAQCBpbnQgcHdyc2VxX3Bvd2VyX29uKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYykKIAogCXJldHVybiByZXQ7CiB9Ci1FWFBPUlRfU1lNQk9MX0dQTChwd3JzZXFfcG93ZXJfb24pOwomIzQzO0VYUE9SVF9TWU1CT0xfR1BMKHB3cnNlcV92b3RlX29uKTsKIAogLyoqCi0gKiBwd3JzZXFfcG93ZXJfb2ZmKCkgLSBJc3N1ZSBhIHBvd2VyLW9mZiByZXF1ZXN0IG9uIGJlaGFsZiBvZiB0aGUgY29uc3VtZXIKJiM0MzsgKiBwd3JzZXFfdm90ZV9vZmYoKSAtIElzc3VlIGEgcG93ZXItb2ZmIHJlcXVlc3Qgb24gYmVoYWxmIG9mIHRoZSBjb25zdW1lcgogICogICAgICAgICAgICAgICAgICAgICAgZGV2aWNlLgogICogQGRlc2M6IERlc2NyaXB0b3IgcmVmZXJlbmNpbmcgdGhlIHBvd2VyIHNlcXVlbmNlci4KICAqCi0gKiBUaGlzIHVuZG9lcyB0aGUgZWZmZWN0cyBvZiBwd3JzZXFfcG93ZXJfb24oKS4gSXQgaXNzdWVzIGEgcG93ZXItb2ZmIHJlcXVlc3QKJiM0MzsgKiBUaGlzIHVuZG9lcyB0aGUgZWZmZWN0cyBvZiBwd3JzZXFfdm90ZV9vbigpLiBJdCBpc3N1ZXMgYSBwb3dlci1vZmYgcmVxdWVzdAogICogb24gYmVoYWxmIG9mIHRoZSBjb25zdW1lciBhbmQgd2hlbiB0aGUgbGFzdCByZW1haW5pbmcgdXNlciBkb2VzIHNvLCB0aGUKICAqIHBvd2VyLWRvd24gc2VxdWVuY2Ugd2lsbCBiZSBzdGFydGVkLiBJZiBvbmUgaXMgaW4gcHJvZ3Jlc3MsIHRoZSBmdW5jdGlvbgogICogd2lsbCBibG9jayB1bnRpbCBpdCYjMzk7cyBjb21wbGV0ZSBhbmQgdGhlbiByZXR1cm4uCkBAIC05NDAsNyAmIzQzOzk0MCw3IEBAIEVYUE9SVF9TWU1CT0xfR1BMKHB3cnNlcV9wb3dlcl9vbik7CiAgKiBSZXR1cm5zOgogICogMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJvciBudW1iZXIgb24gZmFpbHVyZS4KICAqLwotaW50IHB3cnNlcV9wb3dlcl9vZmYoc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKQomIzQzO2ludCBwd3JzZXFfdm90ZV9vZmYoc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKQogewogCXN0cnVjdCBwd3JzZXFfZGV2aWNlICpwd3JzZXE7CiAJc3RydWN0IHB3cnNlcV91bml0ICp1bml0OwpAQCAtOTY2LDcgJiM0Mzs5NjYsNyBAQCBpbnQgcHdyc2VxX3Bvd2VyX29mZihzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpCiAKIAlyZXR1cm4gcmV0OwogfQotRVhQT1JUX1NZTUJPTF9HUEwocHdyc2VxX3Bvd2VyX29mZik7CiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwocHdyc2VxX3ZvdGVfb2ZmKTsKIAogLyoqCiAgKiBwd3JzZXFfdG9fZGV2aWNlKCkgLSBHZXQgdGhlIHB3cnNlcSBkZXZpY2UgcG9pbnRlciBmcm9tIGEgZGVzY3JpcHRvci4KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcHdyc2VxL2NvbnN1bWVyLmggYi9pbmNsdWRlL2xpbnV4L3B3cnNlcS9jb25zdW1lci5oCmluZGV4IDNjOTA3YzllMTg4NWRjLi5lNGQyY2IzMjEzNTRmMCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9wd3JzZXEvY29uc3VtZXIuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3B3cnNlcS9jb25zdW1lci5oCkBAIC0yMCw4ICYjNDM7MjAsOCBAQCB2b2lkIHB3cnNlcV9wdXQoc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKTsKIHN0cnVjdCBwd3JzZXFfZGVzYyAqIF9fbXVzdF9jaGVjawogZGV2bV9wd3JzZXFfZ2V0KHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3QgY2hhciAqdGFyZ2V0KTsKIAotaW50IHB3cnNlcV9wb3dlcl9vbihzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpOwotaW50IHB3cnNlcV9wb3dlcl9vZmYoc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKTsKJiM0MztpbnQgcHdyc2VxX3ZvdGVfb24oc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKTsKJiM0MztpbnQgcHdyc2VxX3ZvdGVfb2ZmKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYyk7CiAKIHN0cnVjdCBkZXZpY2UgKnB3cnNlcV90b19kZXZpY2Uoc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKTsKIApAQCAtNDMsMTIgJiM0Mzs0MywxMiBAQCBkZXZtX3B3cnNlcV9nZXQoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBjaGFyICp0YXJnZXQpCiAJcmV0dXJuIEVSUl9QVFIoLUVOT1NZUyk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgaW50IHB3cnNlcV9wb3dlcl9vbihzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpCiYjNDM7c3RhdGljIGlubGluZSBpbnQgcHdyc2VxX3ZvdGVfb24oc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKQogewogCXJldHVybiAtRU5PU1lTOwogfQogCi1zdGF0aWMgaW5saW5lIGludCBwd3JzZXFfcG93ZXJfb2ZmKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYykKJiM0MztzdGF0aWMgaW5saW5lIGludCBwd3JzZXFfdm90ZV9vZmYoc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKQogewogCXJldHVybiAtRU5PU1lTOwogfQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAyMjozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDEwCgkJCQkJCQlvdXRwdXQ6IDg4CgkJCQkJCQl0aG91Z2h0czogNDg0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBvd2VyIFNlcXVlbmNpbmcgQVBJIFJlbmFtZSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQmIzM5O3MgZXNzZW50aWFsbHkgYSBzdHJhaWdodGZvcndhcmQgcmVuYW1lIHdpdGhpbiB0aGUgcG93ZXIgc2VxdWVuY2luZyBzdWJzeXN0ZW0uIFRoZXkmIzM5O3JlIGNoYW5naW5nIGBwd3JzZXFfcG93ZXJfb25gIHRvIGBwd3JzZXFfdm90ZV9vbmAgYW5kIGBwd3JzZXFfcG93ZXJfb2ZmYCB0byBgcHdyc2VxX3ZvdGVfb2ZmYC4gSXQmIzM5O3MgYSBmYWlybHkgbG9jYWxpemVkIGNoYW5nZSwgaW1wYWN0aW5nIGBkcml2ZXJzL3Bvd2VyL3NlcXVlbmNpbmcvY29yZS5jYCBhbmQgYGluY2x1ZGUvbGludXgvcHdyc2VxL2NvbnN1bWVyLmhgLCBwbHVzIGEgYnVuY2ggb2YgY2FsbGVycyBhY3Jvc3MgZGlmZmVyZW50IGRyaXZlcnMg4oCTIGJsdWV0b290aCwgR1BVLCB3aWZpLCBQQ0kuCgpNeSBpbml0aWFsIHRob3VnaHQgaXMsIGxldCYjMzk7cyBtYWtlIHN1cmUgdGhpcyBpcyAqcHVyZWx5KiBhIHJlbmFtZSBhbmQgbm90IGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gZGlzZ3Vpc2UuIEkgbmVlZCB0byB2ZXJpZnkgdGhlcmUgYXJlIG5vIGhpZGRlbiByZWdyZXNzaW9ucy4gTG9va2luZyBhdCB0aGUgZGlmZiwgaXQgc2VlbXMgdGhhdCYjMzk7cyBwcmVjaXNlbHkgd2hhdCBpdCBpcy4gVGhlIGRvY3VtZW50YXRpb24gaXMgdXBkYXRlZCBhY2NvcmRpbmdseSwgYW5kIGFsbCB0aGUgY2FsbGVycyBzaW1wbHkgcmVmbGVjdCB0aGUgbmV3IGZ1bmN0aW9uIG5hbWVzLgoKSSYjMzk7dmUgY2hlY2tlZCB0aGUgZGlmZiBhbmQgbWFkZSBzdXJlIHRoZXJlIGFyZSBubyBsb2dpYyBjaGFuZ2VzLiBTcGVjaWZpY2FsbHksIEkmIzM5O3ZlIGNvbmZpcm1lZCB0aGF0IHRoZSBjb3JlIGltcGxlbWVudGF0aW9uIGluIGBkcml2ZXJzL3Bvd2VyL3NlcXVlbmNpbmcvY29yZS5jYCBpcyB1bmNoYW5nZWQsIG90aGVyIHRoYW4gdGhlIG5hbWUgaXRzZWxmIGFuZCB0aGUgYWNjb21wYW55aW5nIGBFWFBPUlRfU1lNQk9MX0dQTGAuIE5vdGhpbmcgdG8gc3VnZ2VzdCBhbnkgbmV3IGJlaGF2aW91ciBvciBhZGRlZCBjb21wbGV4aXR5LgoKR2l2ZW4gdGhlIHB1cmUgY29zbWV0aWMgbmF0dXJlIG9mIHRoaXMgY2hhbmdlLCBJJiMzOTttIGNvbmZpZGVudCBpbiBzZXR0aW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBJdCYjMzk7cyBhIHNhZmUgcmVuYW1lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDIyOjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSByZW5hbWVzIHRoZSBmdW5jdGlvbnMgcHdyc2VxX3Bvd2VyX29uIHRvIHB3cnNlcV92b3RlX29uIGFuZCBwd3JzZXFfcG93ZXJfb2ZmIHRvIHB3cnNlcV92b3RlX29mZiBhY3Jvc3MgdGhlIHBvd2VyIHNlcXVlbmNpbmcgc3Vic3lzdGVtIGFuZCBpdHMgY29uc3VtZXJzLiBUaGVyZSBhcmUgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IHJlbmFtZXMgdGhlIGZ1bmN0aW9ucyBwd3JzZXFfcG93ZXJfb24gdG8gcHdyc2VxX3ZvdGVfb24gYW5kIHB3cnNlcV9wb3dlcl9vZmYgdG8gcHdyc2VxX3ZvdGVfb2ZmIGFjcm9zcyB0aGUgcG93ZXIgc2VxdWVuY2luZyBzdWJzeXN0ZW0gYW5kIGl0cyBjb25zdW1lcnMuIFRoZXJlIGFyZSBubyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yN1QyMjozODo1Ni4xNTQ4NDY5MDRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3Mzk5NDEzMDI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IHJlbmFtZXMgdGhlIGZ1bmN0aW9ucyBwd3JzZXFfcG93ZXJfb24gdG8gcHdyc2VxX3ZvdGVfb24gYW5kIHB3cnNlcV9wb3dlcl9vZmYgdG8gcHdyc2VxX3ZvdGVfb2ZmIGFjcm9zcyB0aGUgcG93ZXIgc2VxdWVuY2luZyBzdWJzeXN0ZW0gYW5kIGl0cyBjb25zdW1lcnMuIFRoZXJlIGFyZSBubyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDIyOjM4OjU2LjE1NDg1MzEwNFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzI0NDU5NzQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMjNkNGNjNmI5NWQ0MGYyMzMxOGJjMTRlMTc4NzE1YmNlZTBmNzc4MlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEp1bCAyNyAyMjozODo1MyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvcHdyc2VxLnJzdCBiL0RvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9wd3JzZXEucnN0XFxuaW5kZXggYWQxOGIyMzI2YjY4OWEuLmZhYmE1YThlMzMzN2U4IDEwMDY0NFxcbi0tLSBhL0RvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9wd3JzZXEucnN0XFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3B3cnNlcS5yc3RcXG5AQCAtNTAsOSArNTAsOSBAQCBDb25zdW1lciBpbnRlcmZhY2VcXG4gVGhlIGNvbnN1bWVyIEFQSSBpcyBhaW1lZCB0byBiZSBhcyBzaW1wbGUgYXMgcG9zc2libGUuIFRoZSBkcml2ZXIgaW50ZXJlc3RlZCBpblxcbiBnZXR0aW5nIGEgZGVzY3JpcHRvciBmcm9tIHRoZSBwb3dlciBzZXF1ZW5jZXIgc2hvdWxkIGNhbGwgcHdyc2VxX2dldCgpIGFuZFxcbiBzcGVjaWZ5IHRoZSBuYW1lIG9mIHRoZSB0YXJnZXQgaXQgd2FudHMgdG8gcmVhY2ggaW4gdGhlIHNlcXVlbmNlIGFmdGVyIGNhbGxpbmdcXG4tcHdyc2VxX3Bvd2VyX3VwKCkuIFRoZSBkZXNjcmlwdG9yIGNhbiBiZSByZWxlYXNlZCBieSBjYWxsaW5nIHB3cnNlcV9wdXQoKSBhbmRcXG4rcHdyc2VxX3ZvdGVfb24oKS4gVGhlIGRlc2NyaXB0b3IgY2FuIGJlIHJlbGVhc2VkIGJ5IGNhbGxpbmcgcHdyc2VxX3B1dCgpIGFuZFxcbiB0aGUgY29uc3VtZXIgY2FuIHJlcXVlc3QgdGhlIHBvd2VyaW5nIGRvd24gb2YgaXRzIHRhcmdldCB3aXRoXFxuLXB3cnNlcV9wb3dlcl9vZmYoKS4gTm90ZSB0aGF0IHRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IHB3cnNlcV9wb3dlcl9vZmYoKVxcbitwd3JzZXFfdm90ZV9vZmYoKS4gTm90ZSB0aGF0IHRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IHB3cnNlcV92b3RlX29mZigpXFxuIHdpbGwgaGF2ZSBhbnkgZWZmZWN0IGFzIHRoZXJlIG1heSBiZSBtdWx0aXBsZSB1c2VycyBvZiB0aGUgdW5kZXJseWluZyByZXNvdXJjZXNcXG4gd2hvIG1heSBrZWVwIHRoZW0gYWN0aXZlLlxcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibHVldG9vdGgvaGNpX3FjYS5jIGIvZHJpdmVycy9ibHVldG9vdGgvaGNpX3FjYS5jXFxuaW5kZXggZTZkMTA3ZjY3NzU5ZjUuLjVhYWFiYzlmYjFiNjZlIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvYmx1ZXRvb3RoL2hjaV9xY2EuY1xcbisrKyBiL2RyaXZlcnMvYmx1ZXRvb3RoL2hjaV9xY2EuY1xcbkBAIC0yMjU5LDcgKzIyNTksNyBAQCBzdGF0aWMgdm9pZCBxY2FfcG93ZXJfb2ZmKHN0cnVjdCBoY2lfdWFydCAqaHUpXFxuIFxcdH1cXG4gXFxuIFxcdGlmIChwb3dlciBcXHUwMDI2XFx1MDAyNiBwb3dlci1cXHUwMDNlcHdyc2VxKSB7XFxuLVxcdFxcdHB3cnNlcV9wb3dlcl9vZmYocG93ZXItXFx1MDAzZXB3cnNlcSk7XFxuK1xcdFxcdHB3cnNlcV92b3RlX29mZihwb3dlci1cXHUwMDNlcHdyc2VxKTtcXG4gXFx0XFx0c2V0X2JpdChRQ0FfQlRfT0ZGLCBcXHUwMDI2cWNhLVxcdTAwM2VmbGFncyk7XFxuIFxcdFxcdHJldHVybjtcXG4gICAgICAgICB9XFxuQEAgLTIzMTksNyArMjMxOSw3IEBAIHN0YXRpYyBpbnQgcWNhX3JlZ3VsYXRvcl9lbmFibGUoc3RydWN0IHFjYV9zZXJkZXYgKnFjYWRldilcXG4gXFx0aW50IHJldDtcXG4gXFxuIFxcdGlmIChwb3dlci1cXHUwMDNlcHdyc2VxKVxcbi1cXHRcXHRyZXR1cm4gcHdyc2VxX3Bvd2VyX29uKHBvd2VyLVxcdTAwM2Vwd3JzZXEpO1xcbitcXHRcXHRyZXR1cm4gcHdyc2VxX3ZvdGVfb24ocG93ZXItXFx1MDAzZXB3cnNlcSk7XFxuIFxcbiBcXHQvKiBBbHJlYWR5IGVuYWJsZWQgKi9cXG4gXFx0aWYgKHBvd2VyLVxcdTAwM2V2cmVnc19vbilcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2ltYWdpbmF0aW9uL3B2cl9wb3dlci5jIGIvZHJpdmVycy9ncHUvZHJtL2ltYWdpbmF0aW9uL3B2cl9wb3dlci5jXFxuaW5kZXggYTcxZDViMzU2MDFlN2IuLmM2ZGZhMjY4NWVlNjQwIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pbWFnaW5hdGlvbi9wdnJfcG93ZXIuY1xcbisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pbWFnaW5hdGlvbi9wdnJfcG93ZXIuY1xcbkBAIC0zNTIsMTIgKzM1MiwxMiBAQCBzdGF0aWMgaW50IHB2cl9wb3dlcl9pbml0X3B3cnNlcShzdHJ1Y3QgcHZyX2RldmljZSAqcHZyX2RldilcXG4gXFxuIHN0YXRpYyBpbnQgcHZyX3Bvd2VyX29uX3NlcXVlbmNlX3B3cnNlcShzdHJ1Y3QgcHZyX2RldmljZSAqcHZyX2RldilcXG4ge1xcbi1cXHRyZXR1cm4gcHdyc2VxX3Bvd2VyX29uKHB2cl9kZXYtXFx1MDAzZXB3cnNlcSk7XFxuK1xcdHJldHVybiBwd3JzZXFfdm90ZV9vbihwdnJfZGV2LVxcdTAwM2Vwd3JzZXEpO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IHB2cl9wb3dlcl9vZmZfc2VxdWVuY2VfcHdyc2VxKHN0cnVjdCBwdnJfZGV2aWNlICpwdnJfZGV2KVxcbiB7XFxuLVxcdHJldHVybiBwd3JzZXFfcG93ZXJfb2ZmKHB2cl9kZXYtXFx1MDAzZXB3cnNlcSk7XFxuK1xcdHJldHVybiBwd3JzZXFfdm90ZV9vZmYocHZyX2Rldi1cXHUwMDNlcHdyc2VxKTtcXG4gfVxcbiBcXG4gY29uc3Qgc3RydWN0IHB2cl9wb3dlcl9zZXF1ZW5jZV9vcHMgcHZyX3Bvd2VyX3NlcXVlbmNlX29wc19wd3JzZXEgPSB7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvc25vYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9zbm9jLmNcXG5pbmRleCAzMTA2NTAyMjc1NzgxZC4uZjg3ZTU2NTc2ZTI5MTIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9zbm9jLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Nub2MuY1xcbkBAIC0xMDI1LDcgKzEwMjUsNyBAQCBzdGF0aWMgaW50IGF0aDEwa19od19wb3dlcl9vbihzdHJ1Y3QgYXRoMTBrICphcilcXG4gXFxuIFxcdGF0aDEwa19kYmcoYXIsIEFUSDEwS19EQkdfU05PQywgXFxcInNvYyBwb3dlciBvblxcXFxuXFxcIik7XFxuIFxcbi1cXHRyZXQgPSBwd3JzZXFfcG93ZXJfb24oYXJfc25vYy1cXHUwMDNlcHdyc2VxKTtcXG4rXFx0cmV0ID0gcHdyc2VxX3ZvdGVfb24oYXJfc25vYy1cXHUwMDNlcHdyc2VxKTtcXG4gXFx0aWYgKHJldClcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG4gXFxuQEAgLTEwNDIsNyArMTA0Miw3IEBAIHN0YXRpYyBpbnQgYXRoMTBrX2h3X3Bvd2VyX29uKHN0cnVjdCBhdGgxMGsgKmFyKVxcbiB2cmVnX29mZjpcXG4gXFx0cmVndWxhdG9yX2J1bGtfZGlzYWJsZShhcl9zbm9jLVxcdTAwM2VudW1fdnJlZ3MsIGFyX3Nub2MtXFx1MDAzZXZyZWdzKTtcXG4gcHdyc2VxX29mZjpcXG4tXFx0cHdyc2VxX3Bvd2VyX29mZihhcl9zbm9jLVxcdTAwM2Vwd3JzZXEpO1xcbitcXHRwd3JzZXFfdm90ZV9vZmYoYXJfc25vYy1cXHUwMDNlcHdyc2VxKTtcXG4gXFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG5AQCAtMTA2MCw3ICsxMDYwLDcgQEAgc3RhdGljIGludCBhdGgxMGtfaHdfcG93ZXJfb2ZmKHN0cnVjdCBhdGgxMGsgKmFyKVxcbiBcXHRyZXRfdnJlZyA9IHJlZ3VsYXRvcl9idWxrX2Rpc2FibGUoYXJfc25vYy1cXHUwMDNlbnVtX3ZyZWdzLCBhcl9zbm9jLVxcdTAwM2V2cmVncyk7XFxuIFxcbiBcXHRpZiAoYXJfc25vYy1cXHUwMDNlcHdyc2VxKVxcbi1cXHRcXHRyZXRfc2VxID0gcHdyc2VxX3Bvd2VyX29mZihhcl9zbm9jLVxcdTAwM2Vwd3JzZXEpO1xcbitcXHRcXHRyZXRfc2VxID0gcHdyc2VxX3ZvdGVfb2ZmKGFyX3Nub2MtXFx1MDAzZXB3cnNlcSk7XFxuIFxcbiBcXHRyZXR1cm4gcmV0X3ZyZWcgPyA6IHJldF9zZXE7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvcHdyY3RybC9nZW5lcmljLmMgYi9kcml2ZXJzL3BjaS9wd3JjdHJsL2dlbmVyaWMuY1xcbmluZGV4IGE3ZTU5OWQ4NDFlNjI4Li44ODcyZjY1MDEzNTJkNyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3BjaS9wd3JjdHJsL2dlbmVyaWMuY1xcbisrKyBiL2RyaXZlcnMvcGNpL3B3cmN0cmwvZ2VuZXJpYy5jXFxuQEAgLTI5LDcgKzI5LDcgQEAgc3RhdGljIGludCBzbG90X3B3cmN0cmxfcG93ZXJfb24oc3RydWN0IHBjaV9wd3JjdHJsICpwd3JjdHJsKVxcbiBcXHRpbnQgcmV0O1xcbiBcXG4gXFx0aWYgKHNsb3QtXFx1MDAzZXB3cnNlcSkge1xcbi1cXHRcXHRwd3JzZXFfcG93ZXJfb24oc2xvdC1cXHUwMDNlcHdyc2VxKTtcXG4rXFx0XFx0cHdyc2VxX3ZvdGVfb24oc2xvdC1cXHUwMDNlcHdyc2VxKTtcXG4gXFx0XFx0cmV0dXJuIDA7XFxuIFxcdH1cXG4gXFxuQEAgLTQ4LDcgKzQ4LDcgQEAgc3RhdGljIGludCBzbG90X3B3cmN0cmxfcG93ZXJfb2ZmKHN0cnVjdCBwY2lfcHdyY3RybCAqcHdyY3RybClcXG4gXFx0XFx0XFx0XFx0XFx0XFx0c3RydWN0IHNsb3RfcHdyY3RybCwgcHdyY3RybCk7XFxuIFxcbiBcXHRpZiAoc2xvdC1cXHUwMDNlcHdyc2VxKSB7XFxuLVxcdFxcdHB3cnNlcV9wb3dlcl9vZmYoc2xvdC1cXHUwMDNlcHdyc2VxKTtcXG4rXFx0XFx0cHdyc2VxX3ZvdGVfb2ZmKHNsb3QtXFx1MDAzZXB3cnNlcSk7XFxuIFxcdFxcdHJldHVybiAwO1xcbiBcXHR9XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9wd3JjdHJsL3BjaS1wd3JjdHJsLXB3cnNlcS5jIGIvZHJpdmVycy9wY2kvcHdyY3RybC9wY2ktcHdyY3RybC1wd3JzZXEuY1xcbmluZGV4IGEzMDhiZjRiNWZjMDFkLi44NjgyMmYwZjY0NWViNyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3BjaS9wd3JjdHJsL3BjaS1wd3JjdHJsLXB3cnNlcS5jXFxuKysrIGIvZHJpdmVycy9wY2kvcHdyY3RybC9wY2ktcHdyY3RybC1wd3JzZXEuY1xcbkBAIC01Niw3ICs1Niw3IEBAIHN0YXRpYyBpbnQgcHdyc2VxX3B3cmN0cmxfcG93ZXJfb24oc3RydWN0IHBjaV9wd3JjdHJsICpwd3JjdHJsKVxcbiBcXHRzdHJ1Y3QgcHdyc2VxX3B3cmN0cmwgKnB3cnNlcSA9IGNvbnRhaW5lcl9vZihwd3JjdHJsLFxcbiBcXHRcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgcHdyc2VxX3B3cmN0cmwsIHB3cmN0cmwpO1xcbiBcXG4tXFx0cmV0dXJuIHB3cnNlcV9wb3dlcl9vbihwd3JzZXEtXFx1MDAzZXB3cnNlcSk7XFxuK1xcdHJldHVybiBwd3JzZXFfdm90ZV9vbihwd3JzZXEtXFx1MDAzZXB3cnNlcSk7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgcHdyc2VxX3B3cmN0cmxfcG93ZXJfb2ZmKHN0cnVjdCBwY2lfcHdyY3RybCAqcHdyY3RybClcXG5AQCAtNjQsNyArNjQsNyBAQCBzdGF0aWMgaW50IHB3cnNlcV9wd3JjdHJsX3Bvd2VyX29mZihzdHJ1Y3QgcGNpX3B3cmN0cmwgKnB3cmN0cmwpXFxuIFxcdHN0cnVjdCBwd3JzZXFfcHdyY3RybCAqcHdyc2VxID0gY29udGFpbmVyX29mKHB3cmN0cmwsXFxuIFxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBwd3JzZXFfcHdyY3RybCwgcHdyY3RybCk7XFxuIFxcbi1cXHRyZXR1cm4gcHdyc2VxX3Bvd2VyX29mZihwd3JzZXEtXFx1MDAzZXB3cnNlcSk7XFxuK1xcdHJldHVybiBwd3JzZXFfdm90ZV9vZmYocHdyc2VxLVxcdTAwM2Vwd3JzZXEpO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IHB3cnNlcV9wd3JjdHJsX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvcG93ZXIvc2VxdWVuY2luZy9jb3JlLmMgYi9kcml2ZXJzL3Bvd2VyL3NlcXVlbmNpbmcvY29yZS5jXFxuaW5kZXggMDJmNDJkYTkxNTk4NTMuLmM2MzBiMTRmNmYyYzQ3IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvcG93ZXIvc2VxdWVuY2luZy9jb3JlLmNcXG4rKysgYi9kcml2ZXJzL3Bvd2VyL3NlcXVlbmNpbmcvY29yZS5jXFxuQEAgLTcwOCw3ICs3MDgsNyBAQCB2b2lkIHB3cnNlcV9wdXQoc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKVxcbiBcXHRwd3JzZXEgPSBkZXNjLVxcdTAwM2Vwd3JzZXE7XFxuIFxcbiBcXHRpZiAoZGVzYy1cXHUwMDNlcG93ZXJlZF9vbilcXG4tXFx0XFx0cHdyc2VxX3Bvd2VyX29mZihkZXNjKTtcXG4rXFx0XFx0cHdyc2VxX3ZvdGVfb2ZmKGRlc2MpO1xcbiBcXG4gXFx0a2ZyZWUoZGVzYyk7XFxuIFxcdG1vZHVsZV9wdXQocHdyc2VxLVxcdTAwM2Vvd25lcik7XFxuQEAgLTg3NCw3ICs4NzQsNyBAQCBzdGF0aWMgaW50IHB3cnNlcV91bml0X2Rpc2FibGUoc3RydWN0IHB3cnNlcV9kZXZpY2UgKnB3cnNlcSxcXG4gfVxcbiBcXG4gLyoqXFxuLSAqIHB3cnNlcV9wb3dlcl9vbigpIC0gSXNzdWUgYSBwb3dlci1vbiByZXF1ZXN0IG9uIGJlaGFsZiBvZiB0aGUgY29uc3VtZXJcXG4rICogcHdyc2VxX3ZvdGVfb24oKSAtIElzc3VlIGEgcG93ZXItb24gcmVxdWVzdCBvbiBiZWhhbGYgb2YgdGhlIGNvbnN1bWVyXFxuICAqICAgICAgICAgICAgICAgICAgICAgZGV2aWNlLlxcbiAgKiBAZGVzYzogRGVzY3JpcHRvciByZWZlcmVuY2luZyB0aGUgcG93ZXIgc2VxdWVuY2VyLlxcbiAgKlxcbkBAIC04ODcsNyArODg3LDcgQEAgc3RhdGljIGludCBwd3JzZXFfdW5pdF9kaXNhYmxlKHN0cnVjdCBwd3JzZXFfZGV2aWNlICpwd3JzZXEsXFxuICAqIFJldHVybnM6XFxuICAqIDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3IgbnVtYmVyIG9uIGZhaWx1cmUuXFxuICAqL1xcbi1pbnQgcHdyc2VxX3Bvd2VyX29uKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYylcXG4raW50IHB3cnNlcV92b3RlX29uKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYylcXG4ge1xcbiBcXHRzdHJ1Y3QgcHdyc2VxX2RldmljZSAqcHdyc2VxO1xcbiBcXHRzdHJ1Y3QgcHdyc2VxX3RhcmdldCAqdGFyZ2V0O1xcbkBAIC05MjUsMTQgKzkyNSwxNCBAQCBpbnQgcHdyc2VxX3Bvd2VyX29uKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYylcXG4gXFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG4tRVhQT1JUX1NZTUJPTF9HUEwocHdyc2VxX3Bvd2VyX29uKTtcXG4rRVhQT1JUX1NZTUJPTF9HUEwocHdyc2VxX3ZvdGVfb24pO1xcbiBcXG4gLyoqXFxuLSAqIHB3cnNlcV9wb3dlcl9vZmYoKSAtIElzc3VlIGEgcG93ZXItb2ZmIHJlcXVlc3Qgb24gYmVoYWxmIG9mIHRoZSBjb25zdW1lclxcbisgKiBwd3JzZXFfdm90ZV9vZmYoKSAtIElzc3VlIGEgcG93ZXItb2ZmIHJlcXVlc3Qgb24gYmVoYWxmIG9mIHRoZSBjb25zdW1lclxcbiAgKiAgICAgICAgICAgICAgICAgICAgICBkZXZpY2UuXFxuICAqIEBkZXNjOiBEZXNjcmlwdG9yIHJlZmVyZW5jaW5nIHRoZSBwb3dlciBzZXF1ZW5jZXIuXFxuICAqXFxuLSAqIFRoaXMgdW5kb2VzIHRoZSBlZmZlY3RzIG9mIHB3cnNlcV9wb3dlcl9vbigpLiBJdCBpc3N1ZXMgYSBwb3dlci1vZmYgcmVxdWVzdFxcbisgKiBUaGlzIHVuZG9lcyB0aGUgZWZmZWN0cyBvZiBwd3JzZXFfdm90ZV9vbigpLiBJdCBpc3N1ZXMgYSBwb3dlci1vZmYgcmVxdWVzdFxcbiAgKiBvbiBiZWhhbGYgb2YgdGhlIGNvbnN1bWVyIGFuZCB3aGVuIHRoZSBsYXN0IHJlbWFpbmluZyB1c2VyIGRvZXMgc28sIHRoZVxcbiAgKiBwb3dlci1kb3duIHNlcXVlbmNlIHdpbGwgYmUgc3RhcnRlZC4gSWYgb25lIGlzIGluIHByb2dyZXNzLCB0aGUgZnVuY3Rpb25cXG4gICogd2lsbCBibG9jayB1bnRpbCBpdCdzIGNvbXBsZXRlIGFuZCB0aGVuIHJldHVybi5cXG5AQCAtOTQwLDcgKzk0MCw3IEBAIEVYUE9SVF9TWU1CT0xfR1BMKHB3cnNlcV9wb3dlcl9vbik7XFxuICAqIFJldHVybnM6XFxuICAqIDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3IgbnVtYmVyIG9uIGZhaWx1cmUuXFxuICAqL1xcbi1pbnQgcHdyc2VxX3Bvd2VyX29mZihzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpXFxuK2ludCBwd3JzZXFfdm90ZV9vZmYoc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKVxcbiB7XFxuIFxcdHN0cnVjdCBwd3JzZXFfZGV2aWNlICpwd3JzZXE7XFxuIFxcdHN0cnVjdCBwd3JzZXFfdW5pdCAqdW5pdDtcXG5AQCAtOTY2LDcgKzk2Niw3IEBAIGludCBwd3JzZXFfcG93ZXJfb2ZmKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYylcXG4gXFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG4tRVhQT1JUX1NZTUJPTF9HUEwocHdyc2VxX3Bvd2VyX29mZik7XFxuK0VYUE9SVF9TWU1CT0xfR1BMKHB3cnNlcV92b3RlX29mZik7XFxuIFxcbiAvKipcXG4gICogcHdyc2VxX3RvX2RldmljZSgpIC0gR2V0IHRoZSBwd3JzZXEgZGV2aWNlIHBvaW50ZXIgZnJvbSBhIGRlc2NyaXB0b3IuXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcHdyc2VxL2NvbnN1bWVyLmggYi9pbmNsdWRlL2xpbnV4L3B3cnNlcS9jb25zdW1lci5oXFxuaW5kZXggM2M5MDdjOWUxODg1ZGMuLmU0ZDJjYjMyMTM1NGYwIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvcHdyc2VxL2NvbnN1bWVyLmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L3B3cnNlcS9jb25zdW1lci5oXFxuQEAgLTIwLDggKzIwLDggQEAgdm9pZCBwd3JzZXFfcHV0KHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYyk7XFxuIHN0cnVjdCBwd3JzZXFfZGVzYyAqIF9fbXVzdF9jaGVja1xcbiBkZXZtX3B3cnNlcV9nZXQoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBjaGFyICp0YXJnZXQpO1xcbiBcXG4taW50IHB3cnNlcV9wb3dlcl9vbihzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpO1xcbi1pbnQgcHdyc2VxX3Bvd2VyX29mZihzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpO1xcbitpbnQgcHdyc2VxX3ZvdGVfb24oc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKTtcXG4raW50IHB3cnNlcV92b3RlX29mZihzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpO1xcbiBcXG4gc3RydWN0IGRldmljZSAqcHdyc2VxX3RvX2RldmljZShzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpO1xcbiBcXG5AQCAtNDMsMTIgKzQzLDEyIEBAIGRldm1fcHdyc2VxX2dldChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IGNoYXIgKnRhcmdldClcXG4gXFx0cmV0dXJuIEVSUl9QVFIoLUVOT1NZUyk7XFxuIH1cXG4gXFxuLXN0YXRpYyBpbmxpbmUgaW50IHB3cnNlcV9wb3dlcl9vbihzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpXFxuK3N0YXRpYyBpbmxpbmUgaW50IHB3cnNlcV92b3RlX29uKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYylcXG4ge1xcbiBcXHRyZXR1cm4gLUVOT1NZUztcXG4gfVxcbiBcXG4tc3RhdGljIGlubGluZSBpbnQgcHdyc2VxX3Bvd2VyX29mZihzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpXFxuK3N0YXRpYyBpbmxpbmUgaW50IHB3cnNlcV92b3RlX29mZihzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpXFxuIHtcXG4gXFx0cmV0dXJuIC1FTk9TWVM7XFxuIH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMjI6Mzg6NTYuODgwMTY0OTE2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NjY3NDA4ODc3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSByZW5hbWVzIHRoZSBmdW5jdGlvbnMgcHdyc2VxX3Bvd2VyX29uIHRvIHB3cnNlcV92b3RlX29uIGFuZCBwd3JzZXFfcG93ZXJfb2ZmIHRvIHB3cnNlcV92b3RlX29mZiBhY3Jvc3MgdGhlIHBvd2VyIHNlcXVlbmNpbmcgc3Vic3lzdGVtIGFuZCBpdHMgY29uc3VtZXJzLiBUaGVyZSBhcmUgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyM2Q0Y2M2Yjk1ZDQwZjIzMzE4YmMxNGUxNzg3MTViY2VlMGY3NzgyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgMjcgMjI6Mzg6NTMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvcHdyc2VxLnJzdCBiL0RvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9wd3JzZXEucnN0XG5pbmRleCBhZDE4YjIzMjZiNjg5YS4uZmFiYTVhOGUzMzM3ZTggMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvcHdyc2VxLnJzdFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3B3cnNlcS5yc3RcbkBAIC01MCw5ICs1MCw5IEBAIENvbnN1bWVyIGludGVyZmFjZVxuIFRoZSBjb25zdW1lciBBUEkgaXMgYWltZWQgdG8gYmUgYXMgc2ltcGxlIGFzIHBvc3NpYmxlLiBUaGUgZHJpdmVyIGludGVyZXN0ZWQgaW5cbiBnZXR0aW5nIGEgZGVzY3JpcHRvciBmcm9tIHRoZSBwb3dlciBzZXF1ZW5jZXIgc2hvdWxkIGNhbGwgcHdyc2VxX2dldCgpIGFuZFxuIHNwZWNpZnkgdGhlIG5hbWUgb2YgdGhlIHRhcmdldCBpdCB3YW50cyB0byByZWFjaCBpbiB0aGUgc2VxdWVuY2UgYWZ0ZXIgY2FsbGluZ1xuLXB3cnNlcV9wb3dlcl91cCgpLiBUaGUgZGVzY3JpcHRvciBjYW4gYmUgcmVsZWFzZWQgYnkgY2FsbGluZyBwd3JzZXFfcHV0KCkgYW5kXG4rcHdyc2VxX3ZvdGVfb24oKS4gVGhlIGRlc2NyaXB0b3IgY2FuIGJlIHJlbGVhc2VkIGJ5IGNhbGxpbmcgcHdyc2VxX3B1dCgpIGFuZFxuIHRoZSBjb25zdW1lciBjYW4gcmVxdWVzdCB0aGUgcG93ZXJpbmcgZG93biBvZiBpdHMgdGFyZ2V0IHdpdGhcbi1wd3JzZXFfcG93ZXJfb2ZmKCkuIE5vdGUgdGhhdCB0aGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCBwd3JzZXFfcG93ZXJfb2ZmKClcbitwd3JzZXFfdm90ZV9vZmYoKS4gTm90ZSB0aGF0IHRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IHB3cnNlcV92b3RlX29mZigpXG4gd2lsbCBoYXZlIGFueSBlZmZlY3QgYXMgdGhlcmUgbWF5IGJlIG11bHRpcGxlIHVzZXJzIG9mIHRoZSB1bmRlcmx5aW5nIHJlc291cmNlc1xuIHdobyBtYXkga2VlcCB0aGVtIGFjdGl2ZS5cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2JsdWV0b290aC9oY2lfcWNhLmMgYi9kcml2ZXJzL2JsdWV0b290aC9oY2lfcWNhLmNcbmluZGV4IGU2ZDEwN2Y2Nzc1OWY1Li41YWFhYmM5ZmIxYjY2ZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmx1ZXRvb3RoL2hjaV9xY2EuY1xuKysrIGIvZHJpdmVycy9ibHVldG9vdGgvaGNpX3FjYS5jXG5AQCAtMjI1OSw3ICsyMjU5LDcgQEAgc3RhdGljIHZvaWQgcWNhX3Bvd2VyX29mZihzdHJ1Y3QgaGNpX3VhcnQgKmh1KVxuIFx0fVxuIFxuIFx0aWYgKHBvd2VyIFx1MDAyNlx1MDAyNiBwb3dlci1cdTAwM2Vwd3JzZXEpIHtcbi1cdFx0cHdyc2VxX3Bvd2VyX29mZihwb3dlci1cdTAwM2Vwd3JzZXEpO1xuK1x0XHRwd3JzZXFfdm90ZV9vZmYocG93ZXItXHUwMDNlcHdyc2VxKTtcbiBcdFx0c2V0X2JpdChRQ0FfQlRfT0ZGLCBcdTAwMjZxY2EtXHUwMDNlZmxhZ3MpO1xuIFx0XHRyZXR1cm47XG4gICAgICAgICB9XG5AQCAtMjMxOSw3ICsyMzE5LDcgQEAgc3RhdGljIGludCBxY2FfcmVndWxhdG9yX2VuYWJsZShzdHJ1Y3QgcWNhX3NlcmRldiAqcWNhZGV2KVxuIFx0aW50IHJldDtcbiBcbiBcdGlmIChwb3dlci1cdTAwM2Vwd3JzZXEpXG4tXHRcdHJldHVybiBwd3JzZXFfcG93ZXJfb24ocG93ZXItXHUwMDNlcHdyc2VxKTtcbitcdFx0cmV0dXJuIHB3cnNlcV92b3RlX29uKHBvd2VyLVx1MDAzZXB3cnNlcSk7XG4gXG4gXHQvKiBBbHJlYWR5IGVuYWJsZWQgKi9cbiBcdGlmIChwb3dlci1cdTAwM2V2cmVnc19vbilcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaW1hZ2luYXRpb24vcHZyX3Bvd2VyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaW1hZ2luYXRpb24vcHZyX3Bvd2VyLmNcbmluZGV4IGE3MWQ1YjM1NjAxZTdiLi5jNmRmYTI2ODVlZTY0MCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pbWFnaW5hdGlvbi9wdnJfcG93ZXIuY1xuKysrIGIvZHJpdmVycy9ncHUvZHJtL2ltYWdpbmF0aW9uL3B2cl9wb3dlci5jXG5AQCAtMzUyLDEyICszNTIsMTIgQEAgc3RhdGljIGludCBwdnJfcG93ZXJfaW5pdF9wd3JzZXEoc3RydWN0IHB2cl9kZXZpY2UgKnB2cl9kZXYpXG4gXG4gc3RhdGljIGludCBwdnJfcG93ZXJfb25fc2VxdWVuY2VfcHdyc2VxKHN0cnVjdCBwdnJfZGV2aWNlICpwdnJfZGV2KVxuIHtcbi1cdHJldHVybiBwd3JzZXFfcG93ZXJfb24ocHZyX2Rldi1cdTAwM2Vwd3JzZXEpO1xuK1x0cmV0dXJuIHB3cnNlcV92b3RlX29uKHB2cl9kZXYtXHUwMDNlcHdyc2VxKTtcbiB9XG4gXG4gc3RhdGljIGludCBwdnJfcG93ZXJfb2ZmX3NlcXVlbmNlX3B3cnNlcShzdHJ1Y3QgcHZyX2RldmljZSAqcHZyX2RldilcbiB7XG4tXHRyZXR1cm4gcHdyc2VxX3Bvd2VyX29mZihwdnJfZGV2LVx1MDAzZXB3cnNlcSk7XG4rXHRyZXR1cm4gcHdyc2VxX3ZvdGVfb2ZmKHB2cl9kZXYtXHUwMDNlcHdyc2VxKTtcbiB9XG4gXG4gY29uc3Qgc3RydWN0IHB2cl9wb3dlcl9zZXF1ZW5jZV9vcHMgcHZyX3Bvd2VyX3NlcXVlbmNlX29wc19wd3JzZXEgPSB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9zbm9jLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Nub2MuY1xuaW5kZXggMzEwNjUwMjI3NTc4MWQuLmY4N2U1NjU3NmUyOTEyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9zbm9jLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvc25vYy5jXG5AQCAtMTAyNSw3ICsxMDI1LDcgQEAgc3RhdGljIGludCBhdGgxMGtfaHdfcG93ZXJfb24oc3RydWN0IGF0aDEwayAqYXIpXG4gXG4gXHRhdGgxMGtfZGJnKGFyLCBBVEgxMEtfREJHX1NOT0MsIFwic29jIHBvd2VyIG9uXFxuXCIpO1xuIFxuLVx0cmV0ID0gcHdyc2VxX3Bvd2VyX29uKGFyX3Nub2MtXHUwMDNlcHdyc2VxKTtcbitcdHJldCA9IHB3cnNlcV92b3RlX29uKGFyX3Nub2MtXHUwMDNlcHdyc2VxKTtcbiBcdGlmIChyZXQpXG4gXHRcdHJldHVybiByZXQ7XG4gXG5AQCAtMTA0Miw3ICsxMDQyLDcgQEAgc3RhdGljIGludCBhdGgxMGtfaHdfcG93ZXJfb24oc3RydWN0IGF0aDEwayAqYXIpXG4gdnJlZ19vZmY6XG4gXHRyZWd1bGF0b3JfYnVsa19kaXNhYmxlKGFyX3Nub2MtXHUwMDNlbnVtX3ZyZWdzLCBhcl9zbm9jLVx1MDAzZXZyZWdzKTtcbiBwd3JzZXFfb2ZmOlxuLVx0cHdyc2VxX3Bvd2VyX29mZihhcl9zbm9jLVx1MDAzZXB3cnNlcSk7XG4rXHRwd3JzZXFfdm90ZV9vZmYoYXJfc25vYy1cdTAwM2Vwd3JzZXEpO1xuIFxuIFx0cmV0dXJuIHJldDtcbiB9XG5AQCAtMTA2MCw3ICsxMDYwLDcgQEAgc3RhdGljIGludCBhdGgxMGtfaHdfcG93ZXJfb2ZmKHN0cnVjdCBhdGgxMGsgKmFyKVxuIFx0cmV0X3ZyZWcgPSByZWd1bGF0b3JfYnVsa19kaXNhYmxlKGFyX3Nub2MtXHUwMDNlbnVtX3ZyZWdzLCBhcl9zbm9jLVx1MDAzZXZyZWdzKTtcbiBcbiBcdGlmIChhcl9zbm9jLVx1MDAzZXB3cnNlcSlcbi1cdFx0cmV0X3NlcSA9IHB3cnNlcV9wb3dlcl9vZmYoYXJfc25vYy1cdTAwM2Vwd3JzZXEpO1xuK1x0XHRyZXRfc2VxID0gcHdyc2VxX3ZvdGVfb2ZmKGFyX3Nub2MtXHUwMDNlcHdyc2VxKTtcbiBcbiBcdHJldHVybiByZXRfdnJlZyA/IDogcmV0X3NlcTtcbiB9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvcHdyY3RybC9nZW5lcmljLmMgYi9kcml2ZXJzL3BjaS9wd3JjdHJsL2dlbmVyaWMuY1xuaW5kZXggYTdlNTk5ZDg0MWU2MjguLjg4NzJmNjUwMTM1MmQ3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9wY2kvcHdyY3RybC9nZW5lcmljLmNcbisrKyBiL2RyaXZlcnMvcGNpL3B3cmN0cmwvZ2VuZXJpYy5jXG5AQCAtMjksNyArMjksNyBAQCBzdGF0aWMgaW50IHNsb3RfcHdyY3RybF9wb3dlcl9vbihzdHJ1Y3QgcGNpX3B3cmN0cmwgKnB3cmN0cmwpXG4gXHRpbnQgcmV0O1xuIFxuIFx0aWYgKHNsb3QtXHUwMDNlcHdyc2VxKSB7XG4tXHRcdHB3cnNlcV9wb3dlcl9vbihzbG90LVx1MDAzZXB3cnNlcSk7XG4rXHRcdHB3cnNlcV92b3RlX29uKHNsb3QtXHUwMDNlcHdyc2VxKTtcbiBcdFx0cmV0dXJuIDA7XG4gXHR9XG4gXG5AQCAtNDgsNyArNDgsNyBAQCBzdGF0aWMgaW50IHNsb3RfcHdyY3RybF9wb3dlcl9vZmYoc3RydWN0IHBjaV9wd3JjdHJsICpwd3JjdHJsKVxuIFx0XHRcdFx0XHRcdHN0cnVjdCBzbG90X3B3cmN0cmwsIHB3cmN0cmwpO1xuIFxuIFx0aWYgKHNsb3QtXHUwMDNlcHdyc2VxKSB7XG4tXHRcdHB3cnNlcV9wb3dlcl9vZmYoc2xvdC1cdTAwM2Vwd3JzZXEpO1xuK1x0XHRwd3JzZXFfdm90ZV9vZmYoc2xvdC1cdTAwM2Vwd3JzZXEpO1xuIFx0XHRyZXR1cm4gMDtcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9wd3JjdHJsL3BjaS1wd3JjdHJsLXB3cnNlcS5jIGIvZHJpdmVycy9wY2kvcHdyY3RybC9wY2ktcHdyY3RybC1wd3JzZXEuY1xuaW5kZXggYTMwOGJmNGI1ZmMwMWQuLjg2ODIyZjBmNjQ1ZWI3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9wY2kvcHdyY3RybC9wY2ktcHdyY3RybC1wd3JzZXEuY1xuKysrIGIvZHJpdmVycy9wY2kvcHdyY3RybC9wY2ktcHdyY3RybC1wd3JzZXEuY1xuQEAgLTU2LDcgKzU2LDcgQEAgc3RhdGljIGludCBwd3JzZXFfcHdyY3RybF9wb3dlcl9vbihzdHJ1Y3QgcGNpX3B3cmN0cmwgKnB3cmN0cmwpXG4gXHRzdHJ1Y3QgcHdyc2VxX3B3cmN0cmwgKnB3cnNlcSA9IGNvbnRhaW5lcl9vZihwd3JjdHJsLFxuIFx0XHRcdFx0XHQgICBzdHJ1Y3QgcHdyc2VxX3B3cmN0cmwsIHB3cmN0cmwpO1xuIFxuLVx0cmV0dXJuIHB3cnNlcV9wb3dlcl9vbihwd3JzZXEtXHUwMDNlcHdyc2VxKTtcbitcdHJldHVybiBwd3JzZXFfdm90ZV9vbihwd3JzZXEtXHUwMDNlcHdyc2VxKTtcbiB9XG4gXG4gc3RhdGljIGludCBwd3JzZXFfcHdyY3RybF9wb3dlcl9vZmYoc3RydWN0IHBjaV9wd3JjdHJsICpwd3JjdHJsKVxuQEAgLTY0LDcgKzY0LDcgQEAgc3RhdGljIGludCBwd3JzZXFfcHdyY3RybF9wb3dlcl9vZmYoc3RydWN0IHBjaV9wd3JjdHJsICpwd3JjdHJsKVxuIFx0c3RydWN0IHB3cnNlcV9wd3JjdHJsICpwd3JzZXEgPSBjb250YWluZXJfb2YocHdyY3RybCxcbiBcdFx0XHRcdFx0ICAgc3RydWN0IHB3cnNlcV9wd3JjdHJsLCBwd3JjdHJsKTtcbiBcbi1cdHJldHVybiBwd3JzZXFfcG93ZXJfb2ZmKHB3cnNlcS1cdTAwM2Vwd3JzZXEpO1xuK1x0cmV0dXJuIHB3cnNlcV92b3RlX29mZihwd3JzZXEtXHUwMDNlcHdyc2VxKTtcbiB9XG4gXG4gc3RhdGljIGludCBwd3JzZXFfcHdyY3RybF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvcG93ZXIvc2VxdWVuY2luZy9jb3JlLmMgYi9kcml2ZXJzL3Bvd2VyL3NlcXVlbmNpbmcvY29yZS5jXG5pbmRleCAwMmY0MmRhOTE1OTg1My4uYzYzMGIxNGY2ZjJjNDcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3Bvd2VyL3NlcXVlbmNpbmcvY29yZS5jXG4rKysgYi9kcml2ZXJzL3Bvd2VyL3NlcXVlbmNpbmcvY29yZS5jXG5AQCAtNzA4LDcgKzcwOCw3IEBAIHZvaWQgcHdyc2VxX3B1dChzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpXG4gXHRwd3JzZXEgPSBkZXNjLVx1MDAzZXB3cnNlcTtcbiBcbiBcdGlmIChkZXNjLVx1MDAzZXBvd2VyZWRfb24pXG4tXHRcdHB3cnNlcV9wb3dlcl9vZmYoZGVzYyk7XG4rXHRcdHB3cnNlcV92b3RlX29mZihkZXNjKTtcbiBcbiBcdGtmcmVlKGRlc2MpO1xuIFx0bW9kdWxlX3B1dChwd3JzZXEtXHUwMDNlb3duZXIpO1xuQEAgLTg3NCw3ICs4NzQsNyBAQCBzdGF0aWMgaW50IHB3cnNlcV91bml0X2Rpc2FibGUoc3RydWN0IHB3cnNlcV9kZXZpY2UgKnB3cnNlcSxcbiB9XG4gXG4gLyoqXG4tICogcHdyc2VxX3Bvd2VyX29uKCkgLSBJc3N1ZSBhIHBvd2VyLW9uIHJlcXVlc3Qgb24gYmVoYWxmIG9mIHRoZSBjb25zdW1lclxuKyAqIHB3cnNlcV92b3RlX29uKCkgLSBJc3N1ZSBhIHBvd2VyLW9uIHJlcXVlc3Qgb24gYmVoYWxmIG9mIHRoZSBjb25zdW1lclxuICAqICAgICAgICAgICAgICAgICAgICAgZGV2aWNlLlxuICAqIEBkZXNjOiBEZXNjcmlwdG9yIHJlZmVyZW5jaW5nIHRoZSBwb3dlciBzZXF1ZW5jZXIuXG4gICpcbkBAIC04ODcsNyArODg3LDcgQEAgc3RhdGljIGludCBwd3JzZXFfdW5pdF9kaXNhYmxlKHN0cnVjdCBwd3JzZXFfZGV2aWNlICpwd3JzZXEsXG4gICogUmV0dXJuczpcbiAgKiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIG51bWJlciBvbiBmYWlsdXJlLlxuICAqL1xuLWludCBwd3JzZXFfcG93ZXJfb24oc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKVxuK2ludCBwd3JzZXFfdm90ZV9vbihzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpXG4ge1xuIFx0c3RydWN0IHB3cnNlcV9kZXZpY2UgKnB3cnNlcTtcbiBcdHN0cnVjdCBwd3JzZXFfdGFyZ2V0ICp0YXJnZXQ7XG5AQCAtOTI1LDE0ICs5MjUsMTQgQEAgaW50IHB3cnNlcV9wb3dlcl9vbihzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpXG4gXG4gXHRyZXR1cm4gcmV0O1xuIH1cbi1FWFBPUlRfU1lNQk9MX0dQTChwd3JzZXFfcG93ZXJfb24pO1xuK0VYUE9SVF9TWU1CT0xfR1BMKHB3cnNlcV92b3RlX29uKTtcbiBcbiAvKipcbi0gKiBwd3JzZXFfcG93ZXJfb2ZmKCkgLSBJc3N1ZSBhIHBvd2VyLW9mZiByZXF1ZXN0IG9uIGJlaGFsZiBvZiB0aGUgY29uc3VtZXJcbisgKiBwd3JzZXFfdm90ZV9vZmYoKSAtIElzc3VlIGEgcG93ZXItb2ZmIHJlcXVlc3Qgb24gYmVoYWxmIG9mIHRoZSBjb25zdW1lclxuICAqICAgICAgICAgICAgICAgICAgICAgIGRldmljZS5cbiAgKiBAZGVzYzogRGVzY3JpcHRvciByZWZlcmVuY2luZyB0aGUgcG93ZXIgc2VxdWVuY2VyLlxuICAqXG4tICogVGhpcyB1bmRvZXMgdGhlIGVmZmVjdHMgb2YgcHdyc2VxX3Bvd2VyX29uKCkuIEl0IGlzc3VlcyBhIHBvd2VyLW9mZiByZXF1ZXN0XG4rICogVGhpcyB1bmRvZXMgdGhlIGVmZmVjdHMgb2YgcHdyc2VxX3ZvdGVfb24oKS4gSXQgaXNzdWVzIGEgcG93ZXItb2ZmIHJlcXVlc3RcbiAgKiBvbiBiZWhhbGYgb2YgdGhlIGNvbnN1bWVyIGFuZCB3aGVuIHRoZSBsYXN0IHJlbWFpbmluZyB1c2VyIGRvZXMgc28sIHRoZVxuICAqIHBvd2VyLWRvd24gc2VxdWVuY2Ugd2lsbCBiZSBzdGFydGVkLiBJZiBvbmUgaXMgaW4gcHJvZ3Jlc3MsIHRoZSBmdW5jdGlvblxuICAqIHdpbGwgYmxvY2sgdW50aWwgaXQncyBjb21wbGV0ZSBhbmQgdGhlbiByZXR1cm4uXG5AQCAtOTQwLDcgKzk0MCw3IEBAIEVYUE9SVF9TWU1CT0xfR1BMKHB3cnNlcV9wb3dlcl9vbik7XG4gICogUmV0dXJuczpcbiAgKiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIG51bWJlciBvbiBmYWlsdXJlLlxuICAqL1xuLWludCBwd3JzZXFfcG93ZXJfb2ZmKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYylcbitpbnQgcHdyc2VxX3ZvdGVfb2ZmKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYylcbiB7XG4gXHRzdHJ1Y3QgcHdyc2VxX2RldmljZSAqcHdyc2VxO1xuIFx0c3RydWN0IHB3cnNlcV91bml0ICp1bml0O1xuQEAgLTk2Niw3ICs5NjYsNyBAQCBpbnQgcHdyc2VxX3Bvd2VyX29mZihzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpXG4gXG4gXHRyZXR1cm4gcmV0O1xuIH1cbi1FWFBPUlRfU1lNQk9MX0dQTChwd3JzZXFfcG93ZXJfb2ZmKTtcbitFWFBPUlRfU1lNQk9MX0dQTChwd3JzZXFfdm90ZV9vZmYpO1xuIFxuIC8qKlxuICAqIHB3cnNlcV90b19kZXZpY2UoKSAtIEdldCB0aGUgcHdyc2VxIGRldmljZSBwb2ludGVyIGZyb20gYSBkZXNjcmlwdG9yLlxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcHdyc2VxL2NvbnN1bWVyLmggYi9pbmNsdWRlL2xpbnV4L3B3cnNlcS9jb25zdW1lci5oXG5pbmRleCAzYzkwN2M5ZTE4ODVkYy4uZTRkMmNiMzIxMzU0ZjAgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L3B3cnNlcS9jb25zdW1lci5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L3B3cnNlcS9jb25zdW1lci5oXG5AQCAtMjAsOCArMjAsOCBAQCB2b2lkIHB3cnNlcV9wdXQoc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKTtcbiBzdHJ1Y3QgcHdyc2VxX2Rlc2MgKiBfX211c3RfY2hlY2tcbiBkZXZtX3B3cnNlcV9nZXQoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBjaGFyICp0YXJnZXQpO1xuIFxuLWludCBwd3JzZXFfcG93ZXJfb24oc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKTtcbi1pbnQgcHdyc2VxX3Bvd2VyX29mZihzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpO1xuK2ludCBwd3JzZXFfdm90ZV9vbihzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpO1xuK2ludCBwd3JzZXFfdm90ZV9vZmYoc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKTtcbiBcbiBzdHJ1Y3QgZGV2aWNlICpwd3JzZXFfdG9fZGV2aWNlKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYyk7XG4gXG5AQCAtNDMsMTIgKzQzLDEyIEBAIGRldm1fcHdyc2VxX2dldChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IGNoYXIgKnRhcmdldClcbiBcdHJldHVybiBFUlJfUFRSKC1FTk9TWVMpO1xuIH1cbiBcbi1zdGF0aWMgaW5saW5lIGludCBwd3JzZXFfcG93ZXJfb24oc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKVxuK3N0YXRpYyBpbmxpbmUgaW50IHB3cnNlcV92b3RlX29uKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYylcbiB7XG4gXHRyZXR1cm4gLUVOT1NZUztcbiB9XG4gXG4tc3RhdGljIGlubGluZSBpbnQgcHdyc2VxX3Bvd2VyX29mZihzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpXG4rc3RhdGljIGlubGluZSBpbnQgcHdyc2VxX3ZvdGVfb2ZmKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYylcbiB7XG4gXHRyZXR1cm4gLUVOT1NZUztcbiB9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QyMjozODo1Ni44ODAxNjU5OTZaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2Njc0MDU3MjIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBvd2VyIFNlcXVlbmNpbmcgQVBJIFJlbmFtZSoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF0J3MgZXNzZW50aWFsbHkgYSBzdHJhaWdodGZvcndhcmQgcmVuYW1lIHdpdGhpbiB0aGUgcG93ZXIgc2VxdWVuY2luZyBzdWJzeXN0ZW0uIFRoZXkncmUgY2hhbmdpbmcgYHB3cnNlcV9wb3dlcl9vbmAgdG8gYHB3cnNlcV92b3RlX29uYCBhbmQgYHB3cnNlcV9wb3dlcl9vZmZgIHRvIGBwd3JzZXFfdm90ZV9vZmZgLiBJdCdzIGEgZmFpcmx5IGxvY2FsaXplZCBjaGFuZ2UsIGltcGFjdGluZyBgZHJpdmVycy9wb3dlci9zZXF1ZW5jaW5nL2NvcmUuY2AgYW5kIGBpbmNsdWRlL2xpbnV4L3B3cnNlcS9jb25zdW1lci5oYCwgcGx1cyBhIGJ1bmNoIG9mIGNhbGxlcnMgYWNyb3NzIGRpZmZlcmVudCBkcml2ZXJzIOKAkyBibHVldG9vdGgsIEdQVSwgd2lmaSwgUENJLlxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMsIGxldCdzIG1ha2Ugc3VyZSB0aGlzIGlzICpwdXJlbHkqIGEgcmVuYW1lIGFuZCBub3QgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBkaXNndWlzZS4gSSBuZWVkIHRvIHZlcmlmeSB0aGVyZSBhcmUgbm8gaGlkZGVuIHJlZ3Jlc3Npb25zLiBMb29raW5nIGF0IHRoZSBkaWZmLCBpdCBzZWVtcyB0aGF0J3MgcHJlY2lzZWx5IHdoYXQgaXQgaXMuIFRoZSBkb2N1bWVudGF0aW9uIGlzIHVwZGF0ZWQgYWNjb3JkaW5nbHksIGFuZCBhbGwgdGhlIGNhbGxlcnMgc2ltcGx5IHJlZmxlY3QgdGhlIG5ldyBmdW5jdGlvbiBuYW1lcy5cblxuSSd2ZSBjaGVja2VkIHRoZSBkaWZmIGFuZCBtYWRlIHN1cmUgdGhlcmUgYXJlIG5vIGxvZ2ljIGNoYW5nZXMuIFNwZWNpZmljYWxseSwgSSd2ZSBjb25maXJtZWQgdGhhdCB0aGUgY29yZSBpbXBsZW1lbnRhdGlvbiBpbiBgZHJpdmVycy9wb3dlci9zZXF1ZW5jaW5nL2NvcmUuY2AgaXMgdW5jaGFuZ2VkLCBvdGhlciB0aGFuIHRoZSBuYW1lIGl0c2VsZiBhbmQgdGhlIGFjY29tcGFueWluZyBgRVhQT1JUX1NZTUJPTF9HUExgLiBOb3RoaW5nIHRvIHN1Z2dlc3QgYW55IG5ldyBiZWhhdmlvdXIgb3IgYWRkZWQgY29tcGxleGl0eS5cblxuR2l2ZW4gdGhlIHB1cmUgY29zbWV0aWMgbmF0dXJlIG9mIHRoaXMgY2hhbmdlLCBJJ20gY29uZmlkZW50IGluIHNldHRpbmcgYFdvcnRoRnV6emluZz1mYWxzZWAuIEl0J3MgYSBzYWZlIHJlbmFtZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTQxMCwiT3V0cHV0VG9rZW5zIjo4OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ4NCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDIyOjM5OjAzLjU1NDIyNTc3OVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjU0OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSByZW5hbWVzIHRoZSBmdW5jdGlvbnMgcHdyc2VxX3Bvd2VyX29uIHRvIHB3cnNlcV92b3RlX29uIGFuZCBwd3JzZXFfcG93ZXJfb2ZmIHRvIHB3cnNlcV92b3RlX29mZiBhY3Jvc3MgdGhlIHBvd2VyIHNlcXVlbmNpbmcgc3Vic3lzdGVtIGFuZCBpdHMgY29uc3VtZXJzLiBUaGVyZSBhcmUgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IHJlbmFtZXMgdGhlIGZ1bmN0aW9ucyBwd3JzZXFfcG93ZXJfb24gdG8gcHdyc2VxX3ZvdGVfb24gYW5kIHB3cnNlcV9wb3dlcl9vZmYgdG8gcHdyc2VxX3ZvdGVfb2ZmIGFjcm9zcyB0aGUgcG93ZXIgc2VxdWVuY2luZyBzdWJzeXN0ZW0gYW5kIGl0cyBjb25zdW1lcnMuIFRoZXJlIGFyZSBubyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow8qngl[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-27 22:07:43 +0000 UTC FinishedAt: 2026-07-27 22:39:05 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDIyOjM4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgcmVuYW1lcyB0aGUgZnVuY3Rpb25zIHB3cnNlcV9wb3dlcl9vbiB0byBwd3JzZXFfdm90ZV9vbiBhbmQgcHdyc2VxX3Bvd2VyX29mZiB0byBwd3JzZXFfdm90ZV9vZmYgYWNyb3NzIHRoZSBwb3dlciBzZXF1ZW5jaW5nIHN1YnN5c3RlbSBhbmQgaXRzIGNvbnN1bWVycy4gVGhlcmUgYXJlIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAyMjozODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDIzZDRjYzZiOTVkNDBmMjMzMThiYzE0ZTE3ODcxNWJjZWUwZjc3ODJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCAyNyAyMjozODo1MyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvcHdyc2VxLnJzdCBiL0RvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9wd3JzZXEucnN0XG5pbmRleCBhZDE4YjIzMjZiNjg5YS4uZmFiYTVhOGUzMzM3ZTggMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvcHdyc2VxLnJzdFxuJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3B3cnNlcS5yc3RcbkBAIC01MCw5ICYjNDM7NTAsOSBAQCBDb25zdW1lciBpbnRlcmZhY2VcbiBUaGUgY29uc3VtZXIgQVBJIGlzIGFpbWVkIHRvIGJlIGFzIHNpbXBsZSBhcyBwb3NzaWJsZS4gVGhlIGRyaXZlciBpbnRlcmVzdGVkIGluXG4gZ2V0dGluZyBhIGRlc2NyaXB0b3IgZnJvbSB0aGUgcG93ZXIgc2VxdWVuY2VyIHNob3VsZCBjYWxsIHB3cnNlcV9nZXQoKSBhbmRcbiBzcGVjaWZ5IHRoZSBuYW1lIG9mIHRoZSB0YXJnZXQgaXQgd2FudHMgdG8gcmVhY2ggaW4gdGhlIHNlcXVlbmNlIGFmdGVyIGNhbGxpbmdcbi1wd3JzZXFfcG93ZXJfdXAoKS4gVGhlIGRlc2NyaXB0b3IgY2FuIGJlIHJlbGVhc2VkIGJ5IGNhbGxpbmcgcHdyc2VxX3B1dCgpIGFuZFxuJiM0Mztwd3JzZXFfdm90ZV9vbigpLiBUaGUgZGVzY3JpcHRvciBjYW4gYmUgcmVsZWFzZWQgYnkgY2FsbGluZyBwd3JzZXFfcHV0KCkgYW5kXG4gdGhlIGNvbnN1bWVyIGNhbiByZXF1ZXN0IHRoZSBwb3dlcmluZyBkb3duIG9mIGl0cyB0YXJnZXQgd2l0aFxuLXB3cnNlcV9wb3dlcl9vZmYoKS4gTm90ZSB0aGF0IHRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IHB3cnNlcV9wb3dlcl9vZmYoKVxuJiM0Mztwd3JzZXFfdm90ZV9vZmYoKS4gTm90ZSB0aGF0IHRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IHB3cnNlcV92b3RlX29mZigpXG4gd2lsbCBoYXZlIGFueSBlZmZlY3QgYXMgdGhlcmUgbWF5IGJlIG11bHRpcGxlIHVzZXJzIG9mIHRoZSB1bmRlcmx5aW5nIHJlc291cmNlc1xuIHdobyBtYXkga2VlcCB0aGVtIGFjdGl2ZS5cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2JsdWV0b290aC9oY2lfcWNhLmMgYi9kcml2ZXJzL2JsdWV0b290aC9oY2lfcWNhLmNcbmluZGV4IGU2ZDEwN2Y2Nzc1OWY1Li41YWFhYmM5ZmIxYjY2ZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmx1ZXRvb3RoL2hjaV9xY2EuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibHVldG9vdGgvaGNpX3FjYS5jXG5AQCAtMjI1OSw3ICYjNDM7MjI1OSw3IEBAIHN0YXRpYyB2b2lkIHFjYV9wb3dlcl9vZmYoc3RydWN0IGhjaV91YXJ0ICpodSlcbiBcdH1cbiBcbiBcdGlmIChwb3dlciBcdTAwMjZcdTAwMjYgcG93ZXItXHUwMDNlcHdyc2VxKSB7XG4tXHRcdHB3cnNlcV9wb3dlcl9vZmYocG93ZXItXHUwMDNlcHdyc2VxKTtcbiYjNDM7XHRcdHB3cnNlcV92b3RlX29mZihwb3dlci1cdTAwM2Vwd3JzZXEpO1xuIFx0XHRzZXRfYml0KFFDQV9CVF9PRkYsIFx1MDAyNnFjYS1cdTAwM2VmbGFncyk7XG4gXHRcdHJldHVybjtcbiAgICAgICAgIH1cbkBAIC0yMzE5LDcgJiM0MzsyMzE5LDcgQEAgc3RhdGljIGludCBxY2FfcmVndWxhdG9yX2VuYWJsZShzdHJ1Y3QgcWNhX3NlcmRldiAqcWNhZGV2KVxuIFx0aW50IHJldDtcbiBcbiBcdGlmIChwb3dlci1cdTAwM2Vwd3JzZXEpXG4tXHRcdHJldHVybiBwd3JzZXFfcG93ZXJfb24ocG93ZXItXHUwMDNlcHdyc2VxKTtcbiYjNDM7XHRcdHJldHVybiBwd3JzZXFfdm90ZV9vbihwb3dlci1cdTAwM2Vwd3JzZXEpO1xuIFxuIFx0LyogQWxyZWFkeSBlbmFibGVkICovXG4gXHRpZiAocG93ZXItXHUwMDNldnJlZ3Nfb24pXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2ltYWdpbmF0aW9uL3B2cl9wb3dlci5jIGIvZHJpdmVycy9ncHUvZHJtL2ltYWdpbmF0aW9uL3B2cl9wb3dlci5jXG5pbmRleCBhNzFkNWIzNTYwMWU3Yi4uYzZkZmEyNjg1ZWU2NDAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vaW1hZ2luYXRpb24vcHZyX3Bvd2VyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZ3B1L2RybS9pbWFnaW5hdGlvbi9wdnJfcG93ZXIuY1xuQEAgLTM1MiwxMiAmIzQzOzM1MiwxMiBAQCBzdGF0aWMgaW50IHB2cl9wb3dlcl9pbml0X3B3cnNlcShzdHJ1Y3QgcHZyX2RldmljZSAqcHZyX2RldilcbiBcbiBzdGF0aWMgaW50IHB2cl9wb3dlcl9vbl9zZXF1ZW5jZV9wd3JzZXEoc3RydWN0IHB2cl9kZXZpY2UgKnB2cl9kZXYpXG4ge1xuLVx0cmV0dXJuIHB3cnNlcV9wb3dlcl9vbihwdnJfZGV2LVx1MDAzZXB3cnNlcSk7XG4mIzQzO1x0cmV0dXJuIHB3cnNlcV92b3RlX29uKHB2cl9kZXYtXHUwMDNlcHdyc2VxKTtcbiB9XG4gXG4gc3RhdGljIGludCBwdnJfcG93ZXJfb2ZmX3NlcXVlbmNlX3B3cnNlcShzdHJ1Y3QgcHZyX2RldmljZSAqcHZyX2RldilcbiB7XG4tXHRyZXR1cm4gcHdyc2VxX3Bvd2VyX29mZihwdnJfZGV2LVx1MDAzZXB3cnNlcSk7XG4mIzQzO1x0cmV0dXJuIHB3cnNlcV92b3RlX29mZihwdnJfZGV2LVx1MDAzZXB3cnNlcSk7XG4gfVxuIFxuIGNvbnN0IHN0cnVjdCBwdnJfcG93ZXJfc2VxdWVuY2Vfb3BzIHB2cl9wb3dlcl9zZXF1ZW5jZV9vcHNfcHdyc2VxID0ge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvc25vYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9zbm9jLmNcbmluZGV4IDMxMDY1MDIyNzU3ODFkLi5mODdlNTY1NzZlMjkxMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvc25vYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Nub2MuY1xuQEAgLTEwMjUsNyAmIzQzOzEwMjUsNyBAQCBzdGF0aWMgaW50IGF0aDEwa19od19wb3dlcl9vbihzdHJ1Y3QgYXRoMTBrICphcilcbiBcbiBcdGF0aDEwa19kYmcoYXIsIEFUSDEwS19EQkdfU05PQywgXCYjMzQ7c29jIHBvd2VyIG9uXFxuXCYjMzQ7KTtcbiBcbi1cdHJldCA9IHB3cnNlcV9wb3dlcl9vbihhcl9zbm9jLVx1MDAzZXB3cnNlcSk7XG4mIzQzO1x0cmV0ID0gcHdyc2VxX3ZvdGVfb24oYXJfc25vYy1cdTAwM2Vwd3JzZXEpO1xuIFx0aWYgKHJldClcbiBcdFx0cmV0dXJuIHJldDtcbiBcbkBAIC0xMDQyLDcgJiM0MzsxMDQyLDcgQEAgc3RhdGljIGludCBhdGgxMGtfaHdfcG93ZXJfb24oc3RydWN0IGF0aDEwayAqYXIpXG4gdnJlZ19vZmY6XG4gXHRyZWd1bGF0b3JfYnVsa19kaXNhYmxlKGFyX3Nub2MtXHUwMDNlbnVtX3ZyZWdzLCBhcl9zbm9jLVx1MDAzZXZyZWdzKTtcbiBwd3JzZXFfb2ZmOlxuLVx0cHdyc2VxX3Bvd2VyX29mZihhcl9zbm9jLVx1MDAzZXB3cnNlcSk7XG4mIzQzO1x0cHdyc2VxX3ZvdGVfb2ZmKGFyX3Nub2MtXHUwMDNlcHdyc2VxKTtcbiBcbiBcdHJldHVybiByZXQ7XG4gfVxuQEAgLTEwNjAsNyAmIzQzOzEwNjAsNyBAQCBzdGF0aWMgaW50IGF0aDEwa19od19wb3dlcl9vZmYoc3RydWN0IGF0aDEwayAqYXIpXG4gXHRyZXRfdnJlZyA9IHJlZ3VsYXRvcl9idWxrX2Rpc2FibGUoYXJfc25vYy1cdTAwM2VudW1fdnJlZ3MsIGFyX3Nub2MtXHUwMDNldnJlZ3MpO1xuIFxuIFx0aWYgKGFyX3Nub2MtXHUwMDNlcHdyc2VxKVxuLVx0XHRyZXRfc2VxID0gcHdyc2VxX3Bvd2VyX29mZihhcl9zbm9jLVx1MDAzZXB3cnNlcSk7XG4mIzQzO1x0XHRyZXRfc2VxID0gcHdyc2VxX3ZvdGVfb2ZmKGFyX3Nub2MtXHUwMDNlcHdyc2VxKTtcbiBcbiBcdHJldHVybiByZXRfdnJlZyA/IDogcmV0X3NlcTtcbiB9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvcHdyY3RybC9nZW5lcmljLmMgYi9kcml2ZXJzL3BjaS9wd3JjdHJsL2dlbmVyaWMuY1xuaW5kZXggYTdlNTk5ZDg0MWU2MjguLjg4NzJmNjUwMTM1MmQ3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9wY2kvcHdyY3RybC9nZW5lcmljLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvcGNpL3B3cmN0cmwvZ2VuZXJpYy5jXG5AQCAtMjksNyAmIzQzOzI5LDcgQEAgc3RhdGljIGludCBzbG90X3B3cmN0cmxfcG93ZXJfb24oc3RydWN0IHBjaV9wd3JjdHJsICpwd3JjdHJsKVxuIFx0aW50IHJldDtcbiBcbiBcdGlmIChzbG90LVx1MDAzZXB3cnNlcSkge1xuLVx0XHRwd3JzZXFfcG93ZXJfb24oc2xvdC1cdTAwM2Vwd3JzZXEpO1xuJiM0MztcdFx0cHdyc2VxX3ZvdGVfb24oc2xvdC1cdTAwM2Vwd3JzZXEpO1xuIFx0XHRyZXR1cm4gMDtcbiBcdH1cbiBcbkBAIC00OCw3ICYjNDM7NDgsNyBAQCBzdGF0aWMgaW50IHNsb3RfcHdyY3RybF9wb3dlcl9vZmYoc3RydWN0IHBjaV9wd3JjdHJsICpwd3JjdHJsKVxuIFx0XHRcdFx0XHRcdHN0cnVjdCBzbG90X3B3cmN0cmwsIHB3cmN0cmwpO1xuIFxuIFx0aWYgKHNsb3QtXHUwMDNlcHdyc2VxKSB7XG4tXHRcdHB3cnNlcV9wb3dlcl9vZmYoc2xvdC1cdTAwM2Vwd3JzZXEpO1xuJiM0MztcdFx0cHdyc2VxX3ZvdGVfb2ZmKHNsb3QtXHUwMDNlcHdyc2VxKTtcbiBcdFx0cmV0dXJuIDA7XG4gXHR9XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvcHdyY3RybC9wY2ktcHdyY3RybC1wd3JzZXEuYyBiL2RyaXZlcnMvcGNpL3B3cmN0cmwvcGNpLXB3cmN0cmwtcHdyc2VxLmNcbmluZGV4IGEzMDhiZjRiNWZjMDFkLi44NjgyMmYwZjY0NWViNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvcGNpL3B3cmN0cmwvcGNpLXB3cmN0cmwtcHdyc2VxLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvcGNpL3B3cmN0cmwvcGNpLXB3cmN0cmwtcHdyc2VxLmNcbkBAIC01Niw3ICYjNDM7NTYsNyBAQCBzdGF0aWMgaW50IHB3cnNlcV9wd3JjdHJsX3Bvd2VyX29uKHN0cnVjdCBwY2lfcHdyY3RybCAqcHdyY3RybClcbiBcdHN0cnVjdCBwd3JzZXFfcHdyY3RybCAqcHdyc2VxID0gY29udGFpbmVyX29mKHB3cmN0cmwsXG4gXHRcdFx0XHRcdCAgIHN0cnVjdCBwd3JzZXFfcHdyY3RybCwgcHdyY3RybCk7XG4gXG4tXHRyZXR1cm4gcHdyc2VxX3Bvd2VyX29uKHB3cnNlcS1cdTAwM2Vwd3JzZXEpO1xuJiM0MztcdHJldHVybiBwd3JzZXFfdm90ZV9vbihwd3JzZXEtXHUwMDNlcHdyc2VxKTtcbiB9XG4gXG4gc3RhdGljIGludCBwd3JzZXFfcHdyY3RybF9wb3dlcl9vZmYoc3RydWN0IHBjaV9wd3JjdHJsICpwd3JjdHJsKVxuQEAgLTY0LDcgJiM0Mzs2NCw3IEBAIHN0YXRpYyBpbnQgcHdyc2VxX3B3cmN0cmxfcG93ZXJfb2ZmKHN0cnVjdCBwY2lfcHdyY3RybCAqcHdyY3RybClcbiBcdHN0cnVjdCBwd3JzZXFfcHdyY3RybCAqcHdyc2VxID0gY29udGFpbmVyX29mKHB3cmN0cmwsXG4gXHRcdFx0XHRcdCAgIHN0cnVjdCBwd3JzZXFfcHdyY3RybCwgcHdyY3RybCk7XG4gXG4tXHRyZXR1cm4gcHdyc2VxX3Bvd2VyX29mZihwd3JzZXEtXHUwMDNlcHdyc2VxKTtcbiYjNDM7XHRyZXR1cm4gcHdyc2VxX3ZvdGVfb2ZmKHB3cnNlcS1cdTAwM2Vwd3JzZXEpO1xuIH1cbiBcbiBzdGF0aWMgaW50IHB3cnNlcV9wd3JjdHJsX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9wb3dlci9zZXF1ZW5jaW5nL2NvcmUuYyBiL2RyaXZlcnMvcG93ZXIvc2VxdWVuY2luZy9jb3JlLmNcbmluZGV4IDAyZjQyZGE5MTU5ODUzLi5jNjMwYjE0ZjZmMmM0NyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvcG93ZXIvc2VxdWVuY2luZy9jb3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvcG93ZXIvc2VxdWVuY2luZy9jb3JlLmNcbkBAIC03MDgsNyAmIzQzOzcwOCw3IEBAIHZvaWQgcHdyc2VxX3B1dChzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpXG4gXHRwd3JzZXEgPSBkZXNjLVx1MDAzZXB3cnNlcTtcbiBcbiBcdGlmIChkZXNjLVx1MDAzZXBvd2VyZWRfb24pXG4tXHRcdHB3cnNlcV9wb3dlcl9vZmYoZGVzYyk7XG4mIzQzO1x0XHRwd3JzZXFfdm90ZV9vZmYoZGVzYyk7XG4gXG4gXHRrZnJlZShkZXNjKTtcbiBcdG1vZHVsZV9wdXQocHdyc2VxLVx1MDAzZW93bmVyKTtcbkBAIC04NzQsNyAmIzQzOzg3NCw3IEBAIHN0YXRpYyBpbnQgcHdyc2VxX3VuaXRfZGlzYWJsZShzdHJ1Y3QgcHdyc2VxX2RldmljZSAqcHdyc2VxLFxuIH1cbiBcbiAvKipcbi0gKiBwd3JzZXFfcG93ZXJfb24oKSAtIElzc3VlIGEgcG93ZXItb24gcmVxdWVzdCBvbiBiZWhhbGYgb2YgdGhlIGNvbnN1bWVyXG4mIzQzOyAqIHB3cnNlcV92b3RlX29uKCkgLSBJc3N1ZSBhIHBvd2VyLW9uIHJlcXVlc3Qgb24gYmVoYWxmIG9mIHRoZSBjb25zdW1lclxuICAqICAgICAgICAgICAgICAgICAgICAgZGV2aWNlLlxuICAqIEBkZXNjOiBEZXNjcmlwdG9yIHJlZmVyZW5jaW5nIHRoZSBwb3dlciBzZXF1ZW5jZXIuXG4gICpcbkBAIC04ODcsNyAmIzQzOzg4Nyw3IEBAIHN0YXRpYyBpbnQgcHdyc2VxX3VuaXRfZGlzYWJsZShzdHJ1Y3QgcHdyc2VxX2RldmljZSAqcHdyc2VxLFxuICAqIFJldHVybnM6XG4gICogMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJvciBudW1iZXIgb24gZmFpbHVyZS5cbiAgKi9cbi1pbnQgcHdyc2VxX3Bvd2VyX29uKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYylcbiYjNDM7aW50IHB3cnNlcV92b3RlX29uKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYylcbiB7XG4gXHRzdHJ1Y3QgcHdyc2VxX2RldmljZSAqcHdyc2VxO1xuIFx0c3RydWN0IHB3cnNlcV90YXJnZXQgKnRhcmdldDtcbkBAIC05MjUsMTQgJiM0Mzs5MjUsMTQgQEAgaW50IHB3cnNlcV9wb3dlcl9vbihzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpXG4gXG4gXHRyZXR1cm4gcmV0O1xuIH1cbi1FWFBPUlRfU1lNQk9MX0dQTChwd3JzZXFfcG93ZXJfb24pO1xuJiM0MztFWFBPUlRfU1lNQk9MX0dQTChwd3JzZXFfdm90ZV9vbik7XG4gXG4gLyoqXG4tICogcHdyc2VxX3Bvd2VyX29mZigpIC0gSXNzdWUgYSBwb3dlci1vZmYgcmVxdWVzdCBvbiBiZWhhbGYgb2YgdGhlIGNvbnN1bWVyXG4mIzQzOyAqIHB3cnNlcV92b3RlX29mZigpIC0gSXNzdWUgYSBwb3dlci1vZmYgcmVxdWVzdCBvbiBiZWhhbGYgb2YgdGhlIGNvbnN1bWVyXG4gICogICAgICAgICAgICAgICAgICAgICAgZGV2aWNlLlxuICAqIEBkZXNjOiBEZXNjcmlwdG9yIHJlZmVyZW5jaW5nIHRoZSBwb3dlciBzZXF1ZW5jZXIuXG4gICpcbi0gKiBUaGlzIHVuZG9lcyB0aGUgZWZmZWN0cyBvZiBwd3JzZXFfcG93ZXJfb24oKS4gSXQgaXNzdWVzIGEgcG93ZXItb2ZmIHJlcXVlc3RcbiYjNDM7ICogVGhpcyB1bmRvZXMgdGhlIGVmZmVjdHMgb2YgcHdyc2VxX3ZvdGVfb24oKS4gSXQgaXNzdWVzIGEgcG93ZXItb2ZmIHJlcXVlc3RcbiAgKiBvbiBiZWhhbGYgb2YgdGhlIGNvbnN1bWVyIGFuZCB3aGVuIHRoZSBsYXN0IHJlbWFpbmluZyB1c2VyIGRvZXMgc28sIHRoZVxuICAqIHBvd2VyLWRvd24gc2VxdWVuY2Ugd2lsbCBiZSBzdGFydGVkLiBJZiBvbmUgaXMgaW4gcHJvZ3Jlc3MsIHRoZSBmdW5jdGlvblxuICAqIHdpbGwgYmxvY2sgdW50aWwgaXQmIzM5O3MgY29tcGxldGUgYW5kIHRoZW4gcmV0dXJuLlxuQEAgLTk0MCw3ICYjNDM7OTQwLDcgQEAgRVhQT1JUX1NZTUJPTF9HUEwocHdyc2VxX3Bvd2VyX29uKTtcbiAgKiBSZXR1cm5zOlxuICAqIDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3IgbnVtYmVyIG9uIGZhaWx1cmUuXG4gICovXG4taW50IHB3cnNlcV9wb3dlcl9vZmYoc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKVxuJiM0MztpbnQgcHdyc2VxX3ZvdGVfb2ZmKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYylcbiB7XG4gXHRzdHJ1Y3QgcHdyc2VxX2RldmljZSAqcHdyc2VxO1xuIFx0c3RydWN0IHB3cnNlcV91bml0ICp1bml0O1xuQEAgLTk2Niw3ICYjNDM7OTY2LDcgQEAgaW50IHB3cnNlcV9wb3dlcl9vZmYoc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKVxuIFxuIFx0cmV0dXJuIHJldDtcbiB9XG4tRVhQT1JUX1NZTUJPTF9HUEwocHdyc2VxX3Bvd2VyX29mZik7XG4mIzQzO0VYUE9SVF9TWU1CT0xfR1BMKHB3cnNlcV92b3RlX29mZik7XG4gXG4gLyoqXG4gICogcHdyc2VxX3RvX2RldmljZSgpIC0gR2V0IHRoZSBwd3JzZXEgZGV2aWNlIHBvaW50ZXIgZnJvbSBhIGRlc2NyaXB0b3IuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9wd3JzZXEvY29uc3VtZXIuaCBiL2luY2x1ZGUvbGludXgvcHdyc2VxL2NvbnN1bWVyLmhcbmluZGV4IDNjOTA3YzllMTg4NWRjLi5lNGQyY2IzMjEzNTRmMCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvcHdyc2VxL2NvbnN1bWVyLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvcHdyc2VxL2NvbnN1bWVyLmhcbkBAIC0yMCw4ICYjNDM7MjAsOCBAQCB2b2lkIHB3cnNlcV9wdXQoc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKTtcbiBzdHJ1Y3QgcHdyc2VxX2Rlc2MgKiBfX211c3RfY2hlY2tcbiBkZXZtX3B3cnNlcV9nZXQoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBjaGFyICp0YXJnZXQpO1xuIFxuLWludCBwd3JzZXFfcG93ZXJfb24oc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKTtcbi1pbnQgcHdyc2VxX3Bvd2VyX29mZihzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpO1xuJiM0MztpbnQgcHdyc2VxX3ZvdGVfb24oc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKTtcbiYjNDM7aW50IHB3cnNlcV92b3RlX29mZihzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpO1xuIFxuIHN0cnVjdCBkZXZpY2UgKnB3cnNlcV90b19kZXZpY2Uoc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKTtcbiBcbkBAIC00MywxMiAmIzQzOzQzLDEyIEBAIGRldm1fcHdyc2VxX2dldChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IGNoYXIgKnRhcmdldClcbiBcdHJldHVybiBFUlJfUFRSKC1FTk9TWVMpO1xuIH1cbiBcbi1zdGF0aWMgaW5saW5lIGludCBwd3JzZXFfcG93ZXJfb24oc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKVxuJiM0MztzdGF0aWMgaW5saW5lIGludCBwd3JzZXFfdm90ZV9vbihzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpXG4ge1xuIFx0cmV0dXJuIC1FTk9TWVM7XG4gfVxuIFxuLXN0YXRpYyBpbmxpbmUgaW50IHB3cnNlcV9wb3dlcl9vZmYoc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKVxuJiM0MztzdGF0aWMgaW5saW5lIGludCBwd3JzZXFfdm90ZV9vZmYoc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKVxuIHtcbiBcdHJldHVybiAtRU5PU1lTO1xuIH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAyMjozODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSByZW5hbWVzIHRoZSBmdW5jdGlvbnMgcHdyc2VxX3Bvd2VyX29uIHRvIHB3cnNlcV92b3RlX29uIGFuZCBwd3JzZXFfcG93ZXJfb2ZmIHRvIHB3cnNlcV92b3RlX29mZiBhY3Jvc3MgdGhlIHBvd2VyIHNlcXVlbmNpbmcgc3Vic3lzdGVtIGFuZCBpdHMgY29uc3VtZXJzLiBUaGVyZSBhcmUgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMjNkNGNjNmI5NWQ0MGYyMzMxOGJjMTRlMTc4NzE1YmNlZTBmNzc4MgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gSnVsIDI3IDIyOjM4OjUzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3B3cnNlcS5yc3QgYi9Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvcHdyc2VxLnJzdAppbmRleCBhZDE4YjIzMjZiNjg5YS4uZmFiYTVhOGUzMzM3ZTggMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9wd3JzZXEucnN0CiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9wd3JzZXEucnN0CkBAIC01MCw5ICYjNDM7NTAsOSBAQCBDb25zdW1lciBpbnRlcmZhY2UKIFRoZSBjb25zdW1lciBBUEkgaXMgYWltZWQgdG8gYmUgYXMgc2ltcGxlIGFzIHBvc3NpYmxlLiBUaGUgZHJpdmVyIGludGVyZXN0ZWQgaW4KIGdldHRpbmcgYSBkZXNjcmlwdG9yIGZyb20gdGhlIHBvd2VyIHNlcXVlbmNlciBzaG91bGQgY2FsbCBwd3JzZXFfZ2V0KCkgYW5kCiBzcGVjaWZ5IHRoZSBuYW1lIG9mIHRoZSB0YXJnZXQgaXQgd2FudHMgdG8gcmVhY2ggaW4gdGhlIHNlcXVlbmNlIGFmdGVyIGNhbGxpbmcKLXB3cnNlcV9wb3dlcl91cCgpLiBUaGUgZGVzY3JpcHRvciBjYW4gYmUgcmVsZWFzZWQgYnkgY2FsbGluZyBwd3JzZXFfcHV0KCkgYW5kCiYjNDM7cHdyc2VxX3ZvdGVfb24oKS4gVGhlIGRlc2NyaXB0b3IgY2FuIGJlIHJlbGVhc2VkIGJ5IGNhbGxpbmcgcHdyc2VxX3B1dCgpIGFuZAogdGhlIGNvbnN1bWVyIGNhbiByZXF1ZXN0IHRoZSBwb3dlcmluZyBkb3duIG9mIGl0cyB0YXJnZXQgd2l0aAotcHdyc2VxX3Bvd2VyX29mZigpLiBOb3RlIHRoYXQgdGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoYXQgcHdyc2VxX3Bvd2VyX29mZigpCiYjNDM7cHdyc2VxX3ZvdGVfb2ZmKCkuIE5vdGUgdGhhdCB0aGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCBwd3JzZXFfdm90ZV9vZmYoKQogd2lsbCBoYXZlIGFueSBlZmZlY3QgYXMgdGhlcmUgbWF5IGJlIG11bHRpcGxlIHVzZXJzIG9mIHRoZSB1bmRlcmx5aW5nIHJlc291cmNlcwogd2hvIG1heSBrZWVwIHRoZW0gYWN0aXZlLgogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2JsdWV0b290aC9oY2lfcWNhLmMgYi9kcml2ZXJzL2JsdWV0b290aC9oY2lfcWNhLmMKaW5kZXggZTZkMTA3ZjY3NzU5ZjUuLjVhYWFiYzlmYjFiNjZlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2JsdWV0b290aC9oY2lfcWNhLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibHVldG9vdGgvaGNpX3FjYS5jCkBAIC0yMjU5LDcgJiM0MzsyMjU5LDcgQEAgc3RhdGljIHZvaWQgcWNhX3Bvd2VyX29mZihzdHJ1Y3QgaGNpX3VhcnQgKmh1KQogCX0KIAogCWlmIChwb3dlciAmYW1wOyZhbXA7IHBvd2VyLSZndDtwd3JzZXEpIHsKLQkJcHdyc2VxX3Bvd2VyX29mZihwb3dlci0mZ3Q7cHdyc2VxKTsKJiM0MzsJCXB3cnNlcV92b3RlX29mZihwb3dlci0mZ3Q7cHdyc2VxKTsKIAkJc2V0X2JpdChRQ0FfQlRfT0ZGLCAmYW1wO3FjYS0mZ3Q7ZmxhZ3MpOwogCQlyZXR1cm47CiAgICAgICAgIH0KQEAgLTIzMTksNyAmIzQzOzIzMTksNyBAQCBzdGF0aWMgaW50IHFjYV9yZWd1bGF0b3JfZW5hYmxlKHN0cnVjdCBxY2Ffc2VyZGV2ICpxY2FkZXYpCiAJaW50IHJldDsKIAogCWlmIChwb3dlci0mZ3Q7cHdyc2VxKQotCQlyZXR1cm4gcHdyc2VxX3Bvd2VyX29uKHBvd2VyLSZndDtwd3JzZXEpOwomIzQzOwkJcmV0dXJuIHB3cnNlcV92b3RlX29uKHBvd2VyLSZndDtwd3JzZXEpOwogCiAJLyogQWxyZWFkeSBlbmFibGVkICovCiAJaWYgKHBvd2VyLSZndDt2cmVnc19vbikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pbWFnaW5hdGlvbi9wdnJfcG93ZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pbWFnaW5hdGlvbi9wdnJfcG93ZXIuYwppbmRleCBhNzFkNWIzNTYwMWU3Yi4uYzZkZmEyNjg1ZWU2NDAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pbWFnaW5hdGlvbi9wdnJfcG93ZXIuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2dwdS9kcm0vaW1hZ2luYXRpb24vcHZyX3Bvd2VyLmMKQEAgLTM1MiwxMiAmIzQzOzM1MiwxMiBAQCBzdGF0aWMgaW50IHB2cl9wb3dlcl9pbml0X3B3cnNlcShzdHJ1Y3QgcHZyX2RldmljZSAqcHZyX2RldikKIAogc3RhdGljIGludCBwdnJfcG93ZXJfb25fc2VxdWVuY2VfcHdyc2VxKHN0cnVjdCBwdnJfZGV2aWNlICpwdnJfZGV2KQogewotCXJldHVybiBwd3JzZXFfcG93ZXJfb24ocHZyX2Rldi0mZ3Q7cHdyc2VxKTsKJiM0MzsJcmV0dXJuIHB3cnNlcV92b3RlX29uKHB2cl9kZXYtJmd0O3B3cnNlcSk7CiB9CiAKIHN0YXRpYyBpbnQgcHZyX3Bvd2VyX29mZl9zZXF1ZW5jZV9wd3JzZXEoc3RydWN0IHB2cl9kZXZpY2UgKnB2cl9kZXYpCiB7Ci0JcmV0dXJuIHB3cnNlcV9wb3dlcl9vZmYocHZyX2Rldi0mZ3Q7cHdyc2VxKTsKJiM0MzsJcmV0dXJuIHB3cnNlcV92b3RlX29mZihwdnJfZGV2LSZndDtwd3JzZXEpOwogfQogCiBjb25zdCBzdHJ1Y3QgcHZyX3Bvd2VyX3NlcXVlbmNlX29wcyBwdnJfcG93ZXJfc2VxdWVuY2Vfb3BzX3B3cnNlcSA9IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvc25vYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9zbm9jLmMKaW5kZXggMzEwNjUwMjI3NTc4MWQuLmY4N2U1NjU3NmUyOTEyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Nub2MuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Nub2MuYwpAQCAtMTAyNSw3ICYjNDM7MTAyNSw3IEBAIHN0YXRpYyBpbnQgYXRoMTBrX2h3X3Bvd2VyX29uKHN0cnVjdCBhdGgxMGsgKmFyKQogCiAJYXRoMTBrX2RiZyhhciwgQVRIMTBLX0RCR19TTk9DLCAmIzM0O3NvYyBwb3dlciBvblxuJiMzNDspOwogCi0JcmV0ID0gcHdyc2VxX3Bvd2VyX29uKGFyX3Nub2MtJmd0O3B3cnNlcSk7CiYjNDM7CXJldCA9IHB3cnNlcV92b3RlX29uKGFyX3Nub2MtJmd0O3B3cnNlcSk7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIApAQCAtMTA0Miw3ICYjNDM7MTA0Miw3IEBAIHN0YXRpYyBpbnQgYXRoMTBrX2h3X3Bvd2VyX29uKHN0cnVjdCBhdGgxMGsgKmFyKQogdnJlZ19vZmY6CiAJcmVndWxhdG9yX2J1bGtfZGlzYWJsZShhcl9zbm9jLSZndDtudW1fdnJlZ3MsIGFyX3Nub2MtJmd0O3ZyZWdzKTsKIHB3cnNlcV9vZmY6Ci0JcHdyc2VxX3Bvd2VyX29mZihhcl9zbm9jLSZndDtwd3JzZXEpOwomIzQzOwlwd3JzZXFfdm90ZV9vZmYoYXJfc25vYy0mZ3Q7cHdyc2VxKTsKIAogCXJldHVybiByZXQ7CiB9CkBAIC0xMDYwLDcgJiM0MzsxMDYwLDcgQEAgc3RhdGljIGludCBhdGgxMGtfaHdfcG93ZXJfb2ZmKHN0cnVjdCBhdGgxMGsgKmFyKQogCXJldF92cmVnID0gcmVndWxhdG9yX2J1bGtfZGlzYWJsZShhcl9zbm9jLSZndDtudW1fdnJlZ3MsIGFyX3Nub2MtJmd0O3ZyZWdzKTsKIAogCWlmIChhcl9zbm9jLSZndDtwd3JzZXEpCi0JCXJldF9zZXEgPSBwd3JzZXFfcG93ZXJfb2ZmKGFyX3Nub2MtJmd0O3B3cnNlcSk7CiYjNDM7CQlyZXRfc2VxID0gcHdyc2VxX3ZvdGVfb2ZmKGFyX3Nub2MtJmd0O3B3cnNlcSk7CiAKIAlyZXR1cm4gcmV0X3ZyZWcgPyA6IHJldF9zZXE7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9wd3JjdHJsL2dlbmVyaWMuYyBiL2RyaXZlcnMvcGNpL3B3cmN0cmwvZ2VuZXJpYy5jCmluZGV4IGE3ZTU5OWQ4NDFlNjI4Li44ODcyZjY1MDEzNTJkNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9wY2kvcHdyY3RybC9nZW5lcmljLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9wY2kvcHdyY3RybC9nZW5lcmljLmMKQEAgLTI5LDcgJiM0MzsyOSw3IEBAIHN0YXRpYyBpbnQgc2xvdF9wd3JjdHJsX3Bvd2VyX29uKHN0cnVjdCBwY2lfcHdyY3RybCAqcHdyY3RybCkKIAlpbnQgcmV0OwogCiAJaWYgKHNsb3QtJmd0O3B3cnNlcSkgewotCQlwd3JzZXFfcG93ZXJfb24oc2xvdC0mZ3Q7cHdyc2VxKTsKJiM0MzsJCXB3cnNlcV92b3RlX29uKHNsb3QtJmd0O3B3cnNlcSk7CiAJCXJldHVybiAwOwogCX0KIApAQCAtNDgsNyAmIzQzOzQ4LDcgQEAgc3RhdGljIGludCBzbG90X3B3cmN0cmxfcG93ZXJfb2ZmKHN0cnVjdCBwY2lfcHdyY3RybCAqcHdyY3RybCkKIAkJCQkJCXN0cnVjdCBzbG90X3B3cmN0cmwsIHB3cmN0cmwpOwogCiAJaWYgKHNsb3QtJmd0O3B3cnNlcSkgewotCQlwd3JzZXFfcG93ZXJfb2ZmKHNsb3QtJmd0O3B3cnNlcSk7CiYjNDM7CQlwd3JzZXFfdm90ZV9vZmYoc2xvdC0mZ3Q7cHdyc2VxKTsKIAkJcmV0dXJuIDA7CiAJfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9wd3JjdHJsL3BjaS1wd3JjdHJsLXB3cnNlcS5jIGIvZHJpdmVycy9wY2kvcHdyY3RybC9wY2ktcHdyY3RybC1wd3JzZXEuYwppbmRleCBhMzA4YmY0YjVmYzAxZC4uODY4MjJmMGY2NDVlYjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGNpL3B3cmN0cmwvcGNpLXB3cmN0cmwtcHdyc2VxLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9wY2kvcHdyY3RybC9wY2ktcHdyY3RybC1wd3JzZXEuYwpAQCAtNTYsNyAmIzQzOzU2LDcgQEAgc3RhdGljIGludCBwd3JzZXFfcHdyY3RybF9wb3dlcl9vbihzdHJ1Y3QgcGNpX3B3cmN0cmwgKnB3cmN0cmwpCiAJc3RydWN0IHB3cnNlcV9wd3JjdHJsICpwd3JzZXEgPSBjb250YWluZXJfb2YocHdyY3RybCwKIAkJCQkJICAgc3RydWN0IHB3cnNlcV9wd3JjdHJsLCBwd3JjdHJsKTsKIAotCXJldHVybiBwd3JzZXFfcG93ZXJfb24ocHdyc2VxLSZndDtwd3JzZXEpOwomIzQzOwlyZXR1cm4gcHdyc2VxX3ZvdGVfb24ocHdyc2VxLSZndDtwd3JzZXEpOwogfQogCiBzdGF0aWMgaW50IHB3cnNlcV9wd3JjdHJsX3Bvd2VyX29mZihzdHJ1Y3QgcGNpX3B3cmN0cmwgKnB3cmN0cmwpCkBAIC02NCw3ICYjNDM7NjQsNyBAQCBzdGF0aWMgaW50IHB3cnNlcV9wd3JjdHJsX3Bvd2VyX29mZihzdHJ1Y3QgcGNpX3B3cmN0cmwgKnB3cmN0cmwpCiAJc3RydWN0IHB3cnNlcV9wd3JjdHJsICpwd3JzZXEgPSBjb250YWluZXJfb2YocHdyY3RybCwKIAkJCQkJICAgc3RydWN0IHB3cnNlcV9wd3JjdHJsLCBwd3JjdHJsKTsKIAotCXJldHVybiBwd3JzZXFfcG93ZXJfb2ZmKHB3cnNlcS0mZ3Q7cHdyc2VxKTsKJiM0MzsJcmV0dXJuIHB3cnNlcV92b3RlX29mZihwd3JzZXEtJmd0O3B3cnNlcSk7CiB9CiAKIHN0YXRpYyBpbnQgcHdyc2VxX3B3cmN0cmxfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcG93ZXIvc2VxdWVuY2luZy9jb3JlLmMgYi9kcml2ZXJzL3Bvd2VyL3NlcXVlbmNpbmcvY29yZS5jCmluZGV4IDAyZjQyZGE5MTU5ODUzLi5jNjMwYjE0ZjZmMmM0NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9wb3dlci9zZXF1ZW5jaW5nL2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3Bvd2VyL3NlcXVlbmNpbmcvY29yZS5jCkBAIC03MDgsNyAmIzQzOzcwOCw3IEBAIHZvaWQgcHdyc2VxX3B1dChzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpCiAJcHdyc2VxID0gZGVzYy0mZ3Q7cHdyc2VxOwogCiAJaWYgKGRlc2MtJmd0O3Bvd2VyZWRfb24pCi0JCXB3cnNlcV9wb3dlcl9vZmYoZGVzYyk7CiYjNDM7CQlwd3JzZXFfdm90ZV9vZmYoZGVzYyk7CiAKIAlrZnJlZShkZXNjKTsKIAltb2R1bGVfcHV0KHB3cnNlcS0mZ3Q7b3duZXIpOwpAQCAtODc0LDcgJiM0Mzs4NzQsNyBAQCBzdGF0aWMgaW50IHB3cnNlcV91bml0X2Rpc2FibGUoc3RydWN0IHB3cnNlcV9kZXZpY2UgKnB3cnNlcSwKIH0KIAogLyoqCi0gKiBwd3JzZXFfcG93ZXJfb24oKSAtIElzc3VlIGEgcG93ZXItb24gcmVxdWVzdCBvbiBiZWhhbGYgb2YgdGhlIGNvbnN1bWVyCiYjNDM7ICogcHdyc2VxX3ZvdGVfb24oKSAtIElzc3VlIGEgcG93ZXItb24gcmVxdWVzdCBvbiBiZWhhbGYgb2YgdGhlIGNvbnN1bWVyCiAgKiAgICAgICAgICAgICAgICAgICAgIGRldmljZS4KICAqIEBkZXNjOiBEZXNjcmlwdG9yIHJlZmVyZW5jaW5nIHRoZSBwb3dlciBzZXF1ZW5jZXIuCiAgKgpAQCAtODg3LDcgJiM0Mzs4ODcsNyBAQCBzdGF0aWMgaW50IHB3cnNlcV91bml0X2Rpc2FibGUoc3RydWN0IHB3cnNlcV9kZXZpY2UgKnB3cnNlcSwKICAqIFJldHVybnM6CiAgKiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIG51bWJlciBvbiBmYWlsdXJlLgogICovCi1pbnQgcHdyc2VxX3Bvd2VyX29uKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYykKJiM0MztpbnQgcHdyc2VxX3ZvdGVfb24oc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKQogewogCXN0cnVjdCBwd3JzZXFfZGV2aWNlICpwd3JzZXE7CiAJc3RydWN0IHB3cnNlcV90YXJnZXQgKnRhcmdldDsKQEAgLTkyNSwxNCAmIzQzOzkyNSwxNCBAQCBpbnQgcHdyc2VxX3Bvd2VyX29uKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYykKIAogCXJldHVybiByZXQ7CiB9Ci1FWFBPUlRfU1lNQk9MX0dQTChwd3JzZXFfcG93ZXJfb24pOwomIzQzO0VYUE9SVF9TWU1CT0xfR1BMKHB3cnNlcV92b3RlX29uKTsKIAogLyoqCi0gKiBwd3JzZXFfcG93ZXJfb2ZmKCkgLSBJc3N1ZSBhIHBvd2VyLW9mZiByZXF1ZXN0IG9uIGJlaGFsZiBvZiB0aGUgY29uc3VtZXIKJiM0MzsgKiBwd3JzZXFfdm90ZV9vZmYoKSAtIElzc3VlIGEgcG93ZXItb2ZmIHJlcXVlc3Qgb24gYmVoYWxmIG9mIHRoZSBjb25zdW1lcgogICogICAgICAgICAgICAgICAgICAgICAgZGV2aWNlLgogICogQGRlc2M6IERlc2NyaXB0b3IgcmVmZXJlbmNpbmcgdGhlIHBvd2VyIHNlcXVlbmNlci4KICAqCi0gKiBUaGlzIHVuZG9lcyB0aGUgZWZmZWN0cyBvZiBwd3JzZXFfcG93ZXJfb24oKS4gSXQgaXNzdWVzIGEgcG93ZXItb2ZmIHJlcXVlc3QKJiM0MzsgKiBUaGlzIHVuZG9lcyB0aGUgZWZmZWN0cyBvZiBwd3JzZXFfdm90ZV9vbigpLiBJdCBpc3N1ZXMgYSBwb3dlci1vZmYgcmVxdWVzdAogICogb24gYmVoYWxmIG9mIHRoZSBjb25zdW1lciBhbmQgd2hlbiB0aGUgbGFzdCByZW1haW5pbmcgdXNlciBkb2VzIHNvLCB0aGUKICAqIHBvd2VyLWRvd24gc2VxdWVuY2Ugd2lsbCBiZSBzdGFydGVkLiBJZiBvbmUgaXMgaW4gcHJvZ3Jlc3MsIHRoZSBmdW5jdGlvbgogICogd2lsbCBibG9jayB1bnRpbCBpdCYjMzk7cyBjb21wbGV0ZSBhbmQgdGhlbiByZXR1cm4uCkBAIC05NDAsNyAmIzQzOzk0MCw3IEBAIEVYUE9SVF9TWU1CT0xfR1BMKHB3cnNlcV9wb3dlcl9vbik7CiAgKiBSZXR1cm5zOgogICogMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJvciBudW1iZXIgb24gZmFpbHVyZS4KICAqLwotaW50IHB3cnNlcV9wb3dlcl9vZmYoc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKQomIzQzO2ludCBwd3JzZXFfdm90ZV9vZmYoc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKQogewogCXN0cnVjdCBwd3JzZXFfZGV2aWNlICpwd3JzZXE7CiAJc3RydWN0IHB3cnNlcV91bml0ICp1bml0OwpAQCAtOTY2LDcgJiM0Mzs5NjYsNyBAQCBpbnQgcHdyc2VxX3Bvd2VyX29mZihzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpCiAKIAlyZXR1cm4gcmV0OwogfQotRVhQT1JUX1NZTUJPTF9HUEwocHdyc2VxX3Bvd2VyX29mZik7CiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwocHdyc2VxX3ZvdGVfb2ZmKTsKIAogLyoqCiAgKiBwd3JzZXFfdG9fZGV2aWNlKCkgLSBHZXQgdGhlIHB3cnNlcSBkZXZpY2UgcG9pbnRlciBmcm9tIGEgZGVzY3JpcHRvci4KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcHdyc2VxL2NvbnN1bWVyLmggYi9pbmNsdWRlL2xpbnV4L3B3cnNlcS9jb25zdW1lci5oCmluZGV4IDNjOTA3YzllMTg4NWRjLi5lNGQyY2IzMjEzNTRmMCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9wd3JzZXEvY29uc3VtZXIuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3B3cnNlcS9jb25zdW1lci5oCkBAIC0yMCw4ICYjNDM7MjAsOCBAQCB2b2lkIHB3cnNlcV9wdXQoc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKTsKIHN0cnVjdCBwd3JzZXFfZGVzYyAqIF9fbXVzdF9jaGVjawogZGV2bV9wd3JzZXFfZ2V0KHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3QgY2hhciAqdGFyZ2V0KTsKIAotaW50IHB3cnNlcV9wb3dlcl9vbihzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpOwotaW50IHB3cnNlcV9wb3dlcl9vZmYoc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKTsKJiM0MztpbnQgcHdyc2VxX3ZvdGVfb24oc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKTsKJiM0MztpbnQgcHdyc2VxX3ZvdGVfb2ZmKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYyk7CiAKIHN0cnVjdCBkZXZpY2UgKnB3cnNlcV90b19kZXZpY2Uoc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKTsKIApAQCAtNDMsMTIgJiM0Mzs0MywxMiBAQCBkZXZtX3B3cnNlcV9nZXQoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBjaGFyICp0YXJnZXQpCiAJcmV0dXJuIEVSUl9QVFIoLUVOT1NZUyk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgaW50IHB3cnNlcV9wb3dlcl9vbihzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpCiYjNDM7c3RhdGljIGlubGluZSBpbnQgcHdyc2VxX3ZvdGVfb24oc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKQogewogCXJldHVybiAtRU5PU1lTOwogfQogCi1zdGF0aWMgaW5saW5lIGludCBwd3JzZXFfcG93ZXJfb2ZmKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYykKJiM0MztzdGF0aWMgaW5saW5lIGludCBwd3JzZXFfdm90ZV9vZmYoc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKQogewogCXJldHVybiAtRU5PU1lTOwogfQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAyMjozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDEwCgkJCQkJCQlvdXRwdXQ6IDg4CgkJCQkJCQl0aG91Z2h0czogNDg0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBvd2VyIFNlcXVlbmNpbmcgQVBJIFJlbmFtZSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQmIzM5O3MgZXNzZW50aWFsbHkgYSBzdHJhaWdodGZvcndhcmQgcmVuYW1lIHdpdGhpbiB0aGUgcG93ZXIgc2VxdWVuY2luZyBzdWJzeXN0ZW0uIFRoZXkmIzM5O3JlIGNoYW5naW5nIGBwd3JzZXFfcG93ZXJfb25gIHRvIGBwd3JzZXFfdm90ZV9vbmAgYW5kIGBwd3JzZXFfcG93ZXJfb2ZmYCB0byBgcHdyc2VxX3ZvdGVfb2ZmYC4gSXQmIzM5O3MgYSBmYWlybHkgbG9jYWxpemVkIGNoYW5nZSwgaW1wYWN0aW5nIGBkcml2ZXJzL3Bvd2VyL3NlcXVlbmNpbmcvY29yZS5jYCBhbmQgYGluY2x1ZGUvbGludXgvcHdyc2VxL2NvbnN1bWVyLmhgLCBwbHVzIGEgYnVuY2ggb2YgY2FsbGVycyBhY3Jvc3MgZGlmZmVyZW50IGRyaXZlcnMg4oCTIGJsdWV0b290aCwgR1BVLCB3aWZpLCBQQ0kuCgpNeSBpbml0aWFsIHRob3VnaHQgaXMsIGxldCYjMzk7cyBtYWtlIHN1cmUgdGhpcyBpcyAqcHVyZWx5KiBhIHJlbmFtZSBhbmQgbm90IGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gZGlzZ3Vpc2UuIEkgbmVlZCB0byB2ZXJpZnkgdGhlcmUgYXJlIG5vIGhpZGRlbiByZWdyZXNzaW9ucy4gTG9va2luZyBhdCB0aGUgZGlmZiwgaXQgc2VlbXMgdGhhdCYjMzk7cyBwcmVjaXNlbHkgd2hhdCBpdCBpcy4gVGhlIGRvY3VtZW50YXRpb24gaXMgdXBkYXRlZCBhY2NvcmRpbmdseSwgYW5kIGFsbCB0aGUgY2FsbGVycyBzaW1wbHkgcmVmbGVjdCB0aGUgbmV3IGZ1bmN0aW9uIG5hbWVzLgoKSSYjMzk7dmUgY2hlY2tlZCB0aGUgZGlmZiBhbmQgbWFkZSBzdXJlIHRoZXJlIGFyZSBubyBsb2dpYyBjaGFuZ2VzLiBTcGVjaWZpY2FsbHksIEkmIzM5O3ZlIGNvbmZpcm1lZCB0aGF0IHRoZSBjb3JlIGltcGxlbWVudGF0aW9uIGluIGBkcml2ZXJzL3Bvd2VyL3NlcXVlbmNpbmcvY29yZS5jYCBpcyB1bmNoYW5nZWQsIG90aGVyIHRoYW4gdGhlIG5hbWUgaXRzZWxmIGFuZCB0aGUgYWNjb21wYW55aW5nIGBFWFBPUlRfU1lNQk9MX0dQTGAuIE5vdGhpbmcgdG8gc3VnZ2VzdCBhbnkgbmV3IGJlaGF2aW91ciBvciBhZGRlZCBjb21wbGV4aXR5LgoKR2l2ZW4gdGhlIHB1cmUgY29zbWV0aWMgbmF0dXJlIG9mIHRoaXMgY2hhbmdlLCBJJiMzOTttIGNvbmZpZGVudCBpbiBzZXR0aW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBJdCYjMzk7cyBhIHNhZmUgcmVuYW1lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDIyOjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSByZW5hbWVzIHRoZSBmdW5jdGlvbnMgcHdyc2VxX3Bvd2VyX29uIHRvIHB3cnNlcV92b3RlX29uIGFuZCBwd3JzZXFfcG93ZXJfb2ZmIHRvIHB3cnNlcV92b3RlX29mZiBhY3Jvc3MgdGhlIHBvd2VyIHNlcXVlbmNpbmcgc3Vic3lzdGVtIGFuZCBpdHMgY29uc3VtZXJzLiBUaGVyZSBhcmUgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IHJlbmFtZXMgdGhlIGZ1bmN0aW9ucyBwd3JzZXFfcG93ZXJfb24gdG8gcHdyc2VxX3ZvdGVfb24gYW5kIHB3cnNlcV9wb3dlcl9vZmYgdG8gcHdyc2VxX3ZvdGVfb2ZmIGFjcm9zcyB0aGUgcG93ZXIgc2VxdWVuY2luZyBzdWJzeXN0ZW0gYW5kIGl0cyBjb25zdW1lcnMuIFRoZXJlIGFyZSBubyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yN1QyMjozODo1Ni4xNTQ4NDY5MDRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3Mzk5NDEzMDI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IHJlbmFtZXMgdGhlIGZ1bmN0aW9ucyBwd3JzZXFfcG93ZXJfb24gdG8gcHdyc2VxX3ZvdGVfb24gYW5kIHB3cnNlcV9wb3dlcl9vZmYgdG8gcHdyc2VxX3ZvdGVfb2ZmIGFjcm9zcyB0aGUgcG93ZXIgc2VxdWVuY2luZyBzdWJzeXN0ZW0gYW5kIGl0cyBjb25zdW1lcnMuIFRoZXJlIGFyZSBubyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDIyOjM4OjU2LjE1NDg1MzEwNFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzI0NDU5NzQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMjNkNGNjNmI5NWQ0MGYyMzMxOGJjMTRlMTc4NzE1YmNlZTBmNzc4MlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEp1bCAyNyAyMjozODo1MyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvcHdyc2VxLnJzdCBiL0RvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9wd3JzZXEucnN0XFxuaW5kZXggYWQxOGIyMzI2YjY4OWEuLmZhYmE1YThlMzMzN2U4IDEwMDY0NFxcbi0tLSBhL0RvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9wd3JzZXEucnN0XFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3B3cnNlcS5yc3RcXG5AQCAtNTAsOSArNTAsOSBAQCBDb25zdW1lciBpbnRlcmZhY2VcXG4gVGhlIGNvbnN1bWVyIEFQSSBpcyBhaW1lZCB0byBiZSBhcyBzaW1wbGUgYXMgcG9zc2libGUuIFRoZSBkcml2ZXIgaW50ZXJlc3RlZCBpblxcbiBnZXR0aW5nIGEgZGVzY3JpcHRvciBmcm9tIHRoZSBwb3dlciBzZXF1ZW5jZXIgc2hvdWxkIGNhbGwgcHdyc2VxX2dldCgpIGFuZFxcbiBzcGVjaWZ5IHRoZSBuYW1lIG9mIHRoZSB0YXJnZXQgaXQgd2FudHMgdG8gcmVhY2ggaW4gdGhlIHNlcXVlbmNlIGFmdGVyIGNhbGxpbmdcXG4tcHdyc2VxX3Bvd2VyX3VwKCkuIFRoZSBkZXNjcmlwdG9yIGNhbiBiZSByZWxlYXNlZCBieSBjYWxsaW5nIHB3cnNlcV9wdXQoKSBhbmRcXG4rcHdyc2VxX3ZvdGVfb24oKS4gVGhlIGRlc2NyaXB0b3IgY2FuIGJlIHJlbGVhc2VkIGJ5IGNhbGxpbmcgcHdyc2VxX3B1dCgpIGFuZFxcbiB0aGUgY29uc3VtZXIgY2FuIHJlcXVlc3QgdGhlIHBvd2VyaW5nIGRvd24gb2YgaXRzIHRhcmdldCB3aXRoXFxuLXB3cnNlcV9wb3dlcl9vZmYoKS4gTm90ZSB0aGF0IHRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IHB3cnNlcV9wb3dlcl9vZmYoKVxcbitwd3JzZXFfdm90ZV9vZmYoKS4gTm90ZSB0aGF0IHRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IHB3cnNlcV92b3RlX29mZigpXFxuIHdpbGwgaGF2ZSBhbnkgZWZmZWN0IGFzIHRoZXJlIG1heSBiZSBtdWx0aXBsZSB1c2VycyBvZiB0aGUgdW5kZXJseWluZyByZXNvdXJjZXNcXG4gd2hvIG1heSBrZWVwIHRoZW0gYWN0aXZlLlxcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibHVldG9vdGgvaGNpX3FjYS5jIGIvZHJpdmVycy9ibHVldG9vdGgvaGNpX3FjYS5jXFxuaW5kZXggZTZkMTA3ZjY3NzU5ZjUuLjVhYWFiYzlmYjFiNjZlIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvYmx1ZXRvb3RoL2hjaV9xY2EuY1xcbisrKyBiL2RyaXZlcnMvYmx1ZXRvb3RoL2hjaV9xY2EuY1xcbkBAIC0yMjU5LDcgKzIyNTksNyBAQCBzdGF0aWMgdm9pZCBxY2FfcG93ZXJfb2ZmKHN0cnVjdCBoY2lfdWFydCAqaHUpXFxuIFxcdH1cXG4gXFxuIFxcdGlmIChwb3dlciBcXHUwMDI2XFx1MDAyNiBwb3dlci1cXHUwMDNlcHdyc2VxKSB7XFxuLVxcdFxcdHB3cnNlcV9wb3dlcl9vZmYocG93ZXItXFx1MDAzZXB3cnNlcSk7XFxuK1xcdFxcdHB3cnNlcV92b3RlX29mZihwb3dlci1cXHUwMDNlcHdyc2VxKTtcXG4gXFx0XFx0c2V0X2JpdChRQ0FfQlRfT0ZGLCBcXHUwMDI2cWNhLVxcdTAwM2VmbGFncyk7XFxuIFxcdFxcdHJldHVybjtcXG4gICAgICAgICB9XFxuQEAgLTIzMTksNyArMjMxOSw3IEBAIHN0YXRpYyBpbnQgcWNhX3JlZ3VsYXRvcl9lbmFibGUoc3RydWN0IHFjYV9zZXJkZXYgKnFjYWRldilcXG4gXFx0aW50IHJldDtcXG4gXFxuIFxcdGlmIChwb3dlci1cXHUwMDNlcHdyc2VxKVxcbi1cXHRcXHRyZXR1cm4gcHdyc2VxX3Bvd2VyX29uKHBvd2VyLVxcdTAwM2Vwd3JzZXEpO1xcbitcXHRcXHRyZXR1cm4gcHdyc2VxX3ZvdGVfb24ocG93ZXItXFx1MDAzZXB3cnNlcSk7XFxuIFxcbiBcXHQvKiBBbHJlYWR5IGVuYWJsZWQgKi9cXG4gXFx0aWYgKHBvd2VyLVxcdTAwM2V2cmVnc19vbilcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2ltYWdpbmF0aW9uL3B2cl9wb3dlci5jIGIvZHJpdmVycy9ncHUvZHJtL2ltYWdpbmF0aW9uL3B2cl9wb3dlci5jXFxuaW5kZXggYTcxZDViMzU2MDFlN2IuLmM2ZGZhMjY4NWVlNjQwIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pbWFnaW5hdGlvbi9wdnJfcG93ZXIuY1xcbisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pbWFnaW5hdGlvbi9wdnJfcG93ZXIuY1xcbkBAIC0zNTIsMTIgKzM1MiwxMiBAQCBzdGF0aWMgaW50IHB2cl9wb3dlcl9pbml0X3B3cnNlcShzdHJ1Y3QgcHZyX2RldmljZSAqcHZyX2RldilcXG4gXFxuIHN0YXRpYyBpbnQgcHZyX3Bvd2VyX29uX3NlcXVlbmNlX3B3cnNlcShzdHJ1Y3QgcHZyX2RldmljZSAqcHZyX2RldilcXG4ge1xcbi1cXHRyZXR1cm4gcHdyc2VxX3Bvd2VyX29uKHB2cl9kZXYtXFx1MDAzZXB3cnNlcSk7XFxuK1xcdHJldHVybiBwd3JzZXFfdm90ZV9vbihwdnJfZGV2LVxcdTAwM2Vwd3JzZXEpO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IHB2cl9wb3dlcl9vZmZfc2VxdWVuY2VfcHdyc2VxKHN0cnVjdCBwdnJfZGV2aWNlICpwdnJfZGV2KVxcbiB7XFxuLVxcdHJldHVybiBwd3JzZXFfcG93ZXJfb2ZmKHB2cl9kZXYtXFx1MDAzZXB3cnNlcSk7XFxuK1xcdHJldHVybiBwd3JzZXFfdm90ZV9vZmYocHZyX2Rldi1cXHUwMDNlcHdyc2VxKTtcXG4gfVxcbiBcXG4gY29uc3Qgc3RydWN0IHB2cl9wb3dlcl9zZXF1ZW5jZV9vcHMgcHZyX3Bvd2VyX3NlcXVlbmNlX29wc19wd3JzZXEgPSB7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvc25vYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9zbm9jLmNcXG5pbmRleCAzMTA2NTAyMjc1NzgxZC4uZjg3ZTU2NTc2ZTI5MTIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9zbm9jLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Nub2MuY1xcbkBAIC0xMDI1LDcgKzEwMjUsNyBAQCBzdGF0aWMgaW50IGF0aDEwa19od19wb3dlcl9vbihzdHJ1Y3QgYXRoMTBrICphcilcXG4gXFxuIFxcdGF0aDEwa19kYmcoYXIsIEFUSDEwS19EQkdfU05PQywgXFxcInNvYyBwb3dlciBvblxcXFxuXFxcIik7XFxuIFxcbi1cXHRyZXQgPSBwd3JzZXFfcG93ZXJfb24oYXJfc25vYy1cXHUwMDNlcHdyc2VxKTtcXG4rXFx0cmV0ID0gcHdyc2VxX3ZvdGVfb24oYXJfc25vYy1cXHUwMDNlcHdyc2VxKTtcXG4gXFx0aWYgKHJldClcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG4gXFxuQEAgLTEwNDIsNyArMTA0Miw3IEBAIHN0YXRpYyBpbnQgYXRoMTBrX2h3X3Bvd2VyX29uKHN0cnVjdCBhdGgxMGsgKmFyKVxcbiB2cmVnX29mZjpcXG4gXFx0cmVndWxhdG9yX2J1bGtfZGlzYWJsZShhcl9zbm9jLVxcdTAwM2VudW1fdnJlZ3MsIGFyX3Nub2MtXFx1MDAzZXZyZWdzKTtcXG4gcHdyc2VxX29mZjpcXG4tXFx0cHdyc2VxX3Bvd2VyX29mZihhcl9zbm9jLVxcdTAwM2Vwd3JzZXEpO1xcbitcXHRwd3JzZXFfdm90ZV9vZmYoYXJfc25vYy1cXHUwMDNlcHdyc2VxKTtcXG4gXFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG5AQCAtMTA2MCw3ICsxMDYwLDcgQEAgc3RhdGljIGludCBhdGgxMGtfaHdfcG93ZXJfb2ZmKHN0cnVjdCBhdGgxMGsgKmFyKVxcbiBcXHRyZXRfdnJlZyA9IHJlZ3VsYXRvcl9idWxrX2Rpc2FibGUoYXJfc25vYy1cXHUwMDNlbnVtX3ZyZWdzLCBhcl9zbm9jLVxcdTAwM2V2cmVncyk7XFxuIFxcbiBcXHRpZiAoYXJfc25vYy1cXHUwMDNlcHdyc2VxKVxcbi1cXHRcXHRyZXRfc2VxID0gcHdyc2VxX3Bvd2VyX29mZihhcl9zbm9jLVxcdTAwM2Vwd3JzZXEpO1xcbitcXHRcXHRyZXRfc2VxID0gcHdyc2VxX3ZvdGVfb2ZmKGFyX3Nub2MtXFx1MDAzZXB3cnNlcSk7XFxuIFxcbiBcXHRyZXR1cm4gcmV0X3ZyZWcgPyA6IHJldF9zZXE7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvcHdyY3RybC9nZW5lcmljLmMgYi9kcml2ZXJzL3BjaS9wd3JjdHJsL2dlbmVyaWMuY1xcbmluZGV4IGE3ZTU5OWQ4NDFlNjI4Li44ODcyZjY1MDEzNTJkNyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3BjaS9wd3JjdHJsL2dlbmVyaWMuY1xcbisrKyBiL2RyaXZlcnMvcGNpL3B3cmN0cmwvZ2VuZXJpYy5jXFxuQEAgLTI5LDcgKzI5LDcgQEAgc3RhdGljIGludCBzbG90X3B3cmN0cmxfcG93ZXJfb24oc3RydWN0IHBjaV9wd3JjdHJsICpwd3JjdHJsKVxcbiBcXHRpbnQgcmV0O1xcbiBcXG4gXFx0aWYgKHNsb3QtXFx1MDAzZXB3cnNlcSkge1xcbi1cXHRcXHRwd3JzZXFfcG93ZXJfb24oc2xvdC1cXHUwMDNlcHdyc2VxKTtcXG4rXFx0XFx0cHdyc2VxX3ZvdGVfb24oc2xvdC1cXHUwMDNlcHdyc2VxKTtcXG4gXFx0XFx0cmV0dXJuIDA7XFxuIFxcdH1cXG4gXFxuQEAgLTQ4LDcgKzQ4LDcgQEAgc3RhdGljIGludCBzbG90X3B3cmN0cmxfcG93ZXJfb2ZmKHN0cnVjdCBwY2lfcHdyY3RybCAqcHdyY3RybClcXG4gXFx0XFx0XFx0XFx0XFx0XFx0c3RydWN0IHNsb3RfcHdyY3RybCwgcHdyY3RybCk7XFxuIFxcbiBcXHRpZiAoc2xvdC1cXHUwMDNlcHdyc2VxKSB7XFxuLVxcdFxcdHB3cnNlcV9wb3dlcl9vZmYoc2xvdC1cXHUwMDNlcHdyc2VxKTtcXG4rXFx0XFx0cHdyc2VxX3ZvdGVfb2ZmKHNsb3QtXFx1MDAzZXB3cnNlcSk7XFxuIFxcdFxcdHJldHVybiAwO1xcbiBcXHR9XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9wd3JjdHJsL3BjaS1wd3JjdHJsLXB3cnNlcS5jIGIvZHJpdmVycy9wY2kvcHdyY3RybC9wY2ktcHdyY3RybC1wd3JzZXEuY1xcbmluZGV4IGEzMDhiZjRiNWZjMDFkLi44NjgyMmYwZjY0NWViNyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3BjaS9wd3JjdHJsL3BjaS1wd3JjdHJsLXB3cnNlcS5jXFxuKysrIGIvZHJpdmVycy9wY2kvcHdyY3RybC9wY2ktcHdyY3RybC1wd3JzZXEuY1xcbkBAIC01Niw3ICs1Niw3IEBAIHN0YXRpYyBpbnQgcHdyc2VxX3B3cmN0cmxfcG93ZXJfb24oc3RydWN0IHBjaV9wd3JjdHJsICpwd3JjdHJsKVxcbiBcXHRzdHJ1Y3QgcHdyc2VxX3B3cmN0cmwgKnB3cnNlcSA9IGNvbnRhaW5lcl9vZihwd3JjdHJsLFxcbiBcXHRcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgcHdyc2VxX3B3cmN0cmwsIHB3cmN0cmwpO1xcbiBcXG4tXFx0cmV0dXJuIHB3cnNlcV9wb3dlcl9vbihwd3JzZXEtXFx1MDAzZXB3cnNlcSk7XFxuK1xcdHJldHVybiBwd3JzZXFfdm90ZV9vbihwd3JzZXEtXFx1MDAzZXB3cnNlcSk7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgcHdyc2VxX3B3cmN0cmxfcG93ZXJfb2ZmKHN0cnVjdCBwY2lfcHdyY3RybCAqcHdyY3RybClcXG5AQCAtNjQsNyArNjQsNyBAQCBzdGF0aWMgaW50IHB3cnNlcV9wd3JjdHJsX3Bvd2VyX29mZihzdHJ1Y3QgcGNpX3B3cmN0cmwgKnB3cmN0cmwpXFxuIFxcdHN0cnVjdCBwd3JzZXFfcHdyY3RybCAqcHdyc2VxID0gY29udGFpbmVyX29mKHB3cmN0cmwsXFxuIFxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBwd3JzZXFfcHdyY3RybCwgcHdyY3RybCk7XFxuIFxcbi1cXHRyZXR1cm4gcHdyc2VxX3Bvd2VyX29mZihwd3JzZXEtXFx1MDAzZXB3cnNlcSk7XFxuK1xcdHJldHVybiBwd3JzZXFfdm90ZV9vZmYocHdyc2VxLVxcdTAwM2Vwd3JzZXEpO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IHB3cnNlcV9wd3JjdHJsX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvcG93ZXIvc2VxdWVuY2luZy9jb3JlLmMgYi9kcml2ZXJzL3Bvd2VyL3NlcXVlbmNpbmcvY29yZS5jXFxuaW5kZXggMDJmNDJkYTkxNTk4NTMuLmM2MzBiMTRmNmYyYzQ3IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvcG93ZXIvc2VxdWVuY2luZy9jb3JlLmNcXG4rKysgYi9kcml2ZXJzL3Bvd2VyL3NlcXVlbmNpbmcvY29yZS5jXFxuQEAgLTcwOCw3ICs3MDgsNyBAQCB2b2lkIHB3cnNlcV9wdXQoc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKVxcbiBcXHRwd3JzZXEgPSBkZXNjLVxcdTAwM2Vwd3JzZXE7XFxuIFxcbiBcXHRpZiAoZGVzYy1cXHUwMDNlcG93ZXJlZF9vbilcXG4tXFx0XFx0cHdyc2VxX3Bvd2VyX29mZihkZXNjKTtcXG4rXFx0XFx0cHdyc2VxX3ZvdGVfb2ZmKGRlc2MpO1xcbiBcXG4gXFx0a2ZyZWUoZGVzYyk7XFxuIFxcdG1vZHVsZV9wdXQocHdyc2VxLVxcdTAwM2Vvd25lcik7XFxuQEAgLTg3NCw3ICs4NzQsNyBAQCBzdGF0aWMgaW50IHB3cnNlcV91bml0X2Rpc2FibGUoc3RydWN0IHB3cnNlcV9kZXZpY2UgKnB3cnNlcSxcXG4gfVxcbiBcXG4gLyoqXFxuLSAqIHB3cnNlcV9wb3dlcl9vbigpIC0gSXNzdWUgYSBwb3dlci1vbiByZXF1ZXN0IG9uIGJlaGFsZiBvZiB0aGUgY29uc3VtZXJcXG4rICogcHdyc2VxX3ZvdGVfb24oKSAtIElzc3VlIGEgcG93ZXItb24gcmVxdWVzdCBvbiBiZWhhbGYgb2YgdGhlIGNvbnN1bWVyXFxuICAqICAgICAgICAgICAgICAgICAgICAgZGV2aWNlLlxcbiAgKiBAZGVzYzogRGVzY3JpcHRvciByZWZlcmVuY2luZyB0aGUgcG93ZXIgc2VxdWVuY2VyLlxcbiAgKlxcbkBAIC04ODcsNyArODg3LDcgQEAgc3RhdGljIGludCBwd3JzZXFfdW5pdF9kaXNhYmxlKHN0cnVjdCBwd3JzZXFfZGV2aWNlICpwd3JzZXEsXFxuICAqIFJldHVybnM6XFxuICAqIDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3IgbnVtYmVyIG9uIGZhaWx1cmUuXFxuICAqL1xcbi1pbnQgcHdyc2VxX3Bvd2VyX29uKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYylcXG4raW50IHB3cnNlcV92b3RlX29uKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYylcXG4ge1xcbiBcXHRzdHJ1Y3QgcHdyc2VxX2RldmljZSAqcHdyc2VxO1xcbiBcXHRzdHJ1Y3QgcHdyc2VxX3RhcmdldCAqdGFyZ2V0O1xcbkBAIC05MjUsMTQgKzkyNSwxNCBAQCBpbnQgcHdyc2VxX3Bvd2VyX29uKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYylcXG4gXFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG4tRVhQT1JUX1NZTUJPTF9HUEwocHdyc2VxX3Bvd2VyX29uKTtcXG4rRVhQT1JUX1NZTUJPTF9HUEwocHdyc2VxX3ZvdGVfb24pO1xcbiBcXG4gLyoqXFxuLSAqIHB3cnNlcV9wb3dlcl9vZmYoKSAtIElzc3VlIGEgcG93ZXItb2ZmIHJlcXVlc3Qgb24gYmVoYWxmIG9mIHRoZSBjb25zdW1lclxcbisgKiBwd3JzZXFfdm90ZV9vZmYoKSAtIElzc3VlIGEgcG93ZXItb2ZmIHJlcXVlc3Qgb24gYmVoYWxmIG9mIHRoZSBjb25zdW1lclxcbiAgKiAgICAgICAgICAgICAgICAgICAgICBkZXZpY2UuXFxuICAqIEBkZXNjOiBEZXNjcmlwdG9yIHJlZmVyZW5jaW5nIHRoZSBwb3dlciBzZXF1ZW5jZXIuXFxuICAqXFxuLSAqIFRoaXMgdW5kb2VzIHRoZSBlZmZlY3RzIG9mIHB3cnNlcV9wb3dlcl9vbigpLiBJdCBpc3N1ZXMgYSBwb3dlci1vZmYgcmVxdWVzdFxcbisgKiBUaGlzIHVuZG9lcyB0aGUgZWZmZWN0cyBvZiBwd3JzZXFfdm90ZV9vbigpLiBJdCBpc3N1ZXMgYSBwb3dlci1vZmYgcmVxdWVzdFxcbiAgKiBvbiBiZWhhbGYgb2YgdGhlIGNvbnN1bWVyIGFuZCB3aGVuIHRoZSBsYXN0IHJlbWFpbmluZyB1c2VyIGRvZXMgc28sIHRoZVxcbiAgKiBwb3dlci1kb3duIHNlcXVlbmNlIHdpbGwgYmUgc3RhcnRlZC4gSWYgb25lIGlzIGluIHByb2dyZXNzLCB0aGUgZnVuY3Rpb25cXG4gICogd2lsbCBibG9jayB1bnRpbCBpdCdzIGNvbXBsZXRlIGFuZCB0aGVuIHJldHVybi5cXG5AQCAtOTQwLDcgKzk0MCw3IEBAIEVYUE9SVF9TWU1CT0xfR1BMKHB3cnNlcV9wb3dlcl9vbik7XFxuICAqIFJldHVybnM6XFxuICAqIDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3IgbnVtYmVyIG9uIGZhaWx1cmUuXFxuICAqL1xcbi1pbnQgcHdyc2VxX3Bvd2VyX29mZihzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpXFxuK2ludCBwd3JzZXFfdm90ZV9vZmYoc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKVxcbiB7XFxuIFxcdHN0cnVjdCBwd3JzZXFfZGV2aWNlICpwd3JzZXE7XFxuIFxcdHN0cnVjdCBwd3JzZXFfdW5pdCAqdW5pdDtcXG5AQCAtOTY2LDcgKzk2Niw3IEBAIGludCBwd3JzZXFfcG93ZXJfb2ZmKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYylcXG4gXFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG4tRVhQT1JUX1NZTUJPTF9HUEwocHdyc2VxX3Bvd2VyX29mZik7XFxuK0VYUE9SVF9TWU1CT0xfR1BMKHB3cnNlcV92b3RlX29mZik7XFxuIFxcbiAvKipcXG4gICogcHdyc2VxX3RvX2RldmljZSgpIC0gR2V0IHRoZSBwd3JzZXEgZGV2aWNlIHBvaW50ZXIgZnJvbSBhIGRlc2NyaXB0b3IuXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcHdyc2VxL2NvbnN1bWVyLmggYi9pbmNsdWRlL2xpbnV4L3B3cnNlcS9jb25zdW1lci5oXFxuaW5kZXggM2M5MDdjOWUxODg1ZGMuLmU0ZDJjYjMyMTM1NGYwIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvcHdyc2VxL2NvbnN1bWVyLmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L3B3cnNlcS9jb25zdW1lci5oXFxuQEAgLTIwLDggKzIwLDggQEAgdm9pZCBwd3JzZXFfcHV0KHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYyk7XFxuIHN0cnVjdCBwd3JzZXFfZGVzYyAqIF9fbXVzdF9jaGVja1xcbiBkZXZtX3B3cnNlcV9nZXQoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBjaGFyICp0YXJnZXQpO1xcbiBcXG4taW50IHB3cnNlcV9wb3dlcl9vbihzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpO1xcbi1pbnQgcHdyc2VxX3Bvd2VyX29mZihzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpO1xcbitpbnQgcHdyc2VxX3ZvdGVfb24oc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKTtcXG4raW50IHB3cnNlcV92b3RlX29mZihzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpO1xcbiBcXG4gc3RydWN0IGRldmljZSAqcHdyc2VxX3RvX2RldmljZShzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpO1xcbiBcXG5AQCAtNDMsMTIgKzQzLDEyIEBAIGRldm1fcHdyc2VxX2dldChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IGNoYXIgKnRhcmdldClcXG4gXFx0cmV0dXJuIEVSUl9QVFIoLUVOT1NZUyk7XFxuIH1cXG4gXFxuLXN0YXRpYyBpbmxpbmUgaW50IHB3cnNlcV9wb3dlcl9vbihzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpXFxuK3N0YXRpYyBpbmxpbmUgaW50IHB3cnNlcV92b3RlX29uKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYylcXG4ge1xcbiBcXHRyZXR1cm4gLUVOT1NZUztcXG4gfVxcbiBcXG4tc3RhdGljIGlubGluZSBpbnQgcHdyc2VxX3Bvd2VyX29mZihzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpXFxuK3N0YXRpYyBpbmxpbmUgaW50IHB3cnNlcV92b3RlX29mZihzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpXFxuIHtcXG4gXFx0cmV0dXJuIC1FTk9TWVM7XFxuIH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMjI6Mzg6NTYuODgwMTY0OTE2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NjY3NDA4ODc3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSByZW5hbWVzIHRoZSBmdW5jdGlvbnMgcHdyc2VxX3Bvd2VyX29uIHRvIHB3cnNlcV92b3RlX29uIGFuZCBwd3JzZXFfcG93ZXJfb2ZmIHRvIHB3cnNlcV92b3RlX29mZiBhY3Jvc3MgdGhlIHBvd2VyIHNlcXVlbmNpbmcgc3Vic3lzdGVtIGFuZCBpdHMgY29uc3VtZXJzLiBUaGVyZSBhcmUgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyM2Q0Y2M2Yjk1ZDQwZjIzMzE4YmMxNGUxNzg3MTViY2VlMGY3NzgyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgMjcgMjI6Mzg6NTMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvcHdyc2VxLnJzdCBiL0RvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9wd3JzZXEucnN0XG5pbmRleCBhZDE4YjIzMjZiNjg5YS4uZmFiYTVhOGUzMzM3ZTggMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvcHdyc2VxLnJzdFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3B3cnNlcS5yc3RcbkBAIC01MCw5ICs1MCw5IEBAIENvbnN1bWVyIGludGVyZmFjZVxuIFRoZSBjb25zdW1lciBBUEkgaXMgYWltZWQgdG8gYmUgYXMgc2ltcGxlIGFzIHBvc3NpYmxlLiBUaGUgZHJpdmVyIGludGVyZXN0ZWQgaW5cbiBnZXR0aW5nIGEgZGVzY3JpcHRvciBmcm9tIHRoZSBwb3dlciBzZXF1ZW5jZXIgc2hvdWxkIGNhbGwgcHdyc2VxX2dldCgpIGFuZFxuIHNwZWNpZnkgdGhlIG5hbWUgb2YgdGhlIHRhcmdldCBpdCB3YW50cyB0byByZWFjaCBpbiB0aGUgc2VxdWVuY2UgYWZ0ZXIgY2FsbGluZ1xuLXB3cnNlcV9wb3dlcl91cCgpLiBUaGUgZGVzY3JpcHRvciBjYW4gYmUgcmVsZWFzZWQgYnkgY2FsbGluZyBwd3JzZXFfcHV0KCkgYW5kXG4rcHdyc2VxX3ZvdGVfb24oKS4gVGhlIGRlc2NyaXB0b3IgY2FuIGJlIHJlbGVhc2VkIGJ5IGNhbGxpbmcgcHdyc2VxX3B1dCgpIGFuZFxuIHRoZSBjb25zdW1lciBjYW4gcmVxdWVzdCB0aGUgcG93ZXJpbmcgZG93biBvZiBpdHMgdGFyZ2V0IHdpdGhcbi1wd3JzZXFfcG93ZXJfb2ZmKCkuIE5vdGUgdGhhdCB0aGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCBwd3JzZXFfcG93ZXJfb2ZmKClcbitwd3JzZXFfdm90ZV9vZmYoKS4gTm90ZSB0aGF0IHRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IHB3cnNlcV92b3RlX29mZigpXG4gd2lsbCBoYXZlIGFueSBlZmZlY3QgYXMgdGhlcmUgbWF5IGJlIG11bHRpcGxlIHVzZXJzIG9mIHRoZSB1bmRlcmx5aW5nIHJlc291cmNlc1xuIHdobyBtYXkga2VlcCB0aGVtIGFjdGl2ZS5cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2JsdWV0b290aC9oY2lfcWNhLmMgYi9kcml2ZXJzL2JsdWV0b290aC9oY2lfcWNhLmNcbmluZGV4IGU2ZDEwN2Y2Nzc1OWY1Li41YWFhYmM5ZmIxYjY2ZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmx1ZXRvb3RoL2hjaV9xY2EuY1xuKysrIGIvZHJpdmVycy9ibHVldG9vdGgvaGNpX3FjYS5jXG5AQCAtMjI1OSw3ICsyMjU5LDcgQEAgc3RhdGljIHZvaWQgcWNhX3Bvd2VyX29mZihzdHJ1Y3QgaGNpX3VhcnQgKmh1KVxuIFx0fVxuIFxuIFx0aWYgKHBvd2VyIFx1MDAyNlx1MDAyNiBwb3dlci1cdTAwM2Vwd3JzZXEpIHtcbi1cdFx0cHdyc2VxX3Bvd2VyX29mZihwb3dlci1cdTAwM2Vwd3JzZXEpO1xuK1x0XHRwd3JzZXFfdm90ZV9vZmYocG93ZXItXHUwMDNlcHdyc2VxKTtcbiBcdFx0c2V0X2JpdChRQ0FfQlRfT0ZGLCBcdTAwMjZxY2EtXHUwMDNlZmxhZ3MpO1xuIFx0XHRyZXR1cm47XG4gICAgICAgICB9XG5AQCAtMjMxOSw3ICsyMzE5LDcgQEAgc3RhdGljIGludCBxY2FfcmVndWxhdG9yX2VuYWJsZShzdHJ1Y3QgcWNhX3NlcmRldiAqcWNhZGV2KVxuIFx0aW50IHJldDtcbiBcbiBcdGlmIChwb3dlci1cdTAwM2Vwd3JzZXEpXG4tXHRcdHJldHVybiBwd3JzZXFfcG93ZXJfb24ocG93ZXItXHUwMDNlcHdyc2VxKTtcbitcdFx0cmV0dXJuIHB3cnNlcV92b3RlX29uKHBvd2VyLVx1MDAzZXB3cnNlcSk7XG4gXG4gXHQvKiBBbHJlYWR5IGVuYWJsZWQgKi9cbiBcdGlmIChwb3dlci1cdTAwM2V2cmVnc19vbilcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaW1hZ2luYXRpb24vcHZyX3Bvd2VyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaW1hZ2luYXRpb24vcHZyX3Bvd2VyLmNcbmluZGV4IGE3MWQ1YjM1NjAxZTdiLi5jNmRmYTI2ODVlZTY0MCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pbWFnaW5hdGlvbi9wdnJfcG93ZXIuY1xuKysrIGIvZHJpdmVycy9ncHUvZHJtL2ltYWdpbmF0aW9uL3B2cl9wb3dlci5jXG5AQCAtMzUyLDEyICszNTIsMTIgQEAgc3RhdGljIGludCBwdnJfcG93ZXJfaW5pdF9wd3JzZXEoc3RydWN0IHB2cl9kZXZpY2UgKnB2cl9kZXYpXG4gXG4gc3RhdGljIGludCBwdnJfcG93ZXJfb25fc2VxdWVuY2VfcHdyc2VxKHN0cnVjdCBwdnJfZGV2aWNlICpwdnJfZGV2KVxuIHtcbi1cdHJldHVybiBwd3JzZXFfcG93ZXJfb24ocHZyX2Rldi1cdTAwM2Vwd3JzZXEpO1xuK1x0cmV0dXJuIHB3cnNlcV92b3RlX29uKHB2cl9kZXYtXHUwMDNlcHdyc2VxKTtcbiB9XG4gXG4gc3RhdGljIGludCBwdnJfcG93ZXJfb2ZmX3NlcXVlbmNlX3B3cnNlcShzdHJ1Y3QgcHZyX2RldmljZSAqcHZyX2RldilcbiB7XG4tXHRyZXR1cm4gcHdyc2VxX3Bvd2VyX29mZihwdnJfZGV2LVx1MDAzZXB3cnNlcSk7XG4rXHRyZXR1cm4gcHdyc2VxX3ZvdGVfb2ZmKHB2cl9kZXYtXHUwMDNlcHdyc2VxKTtcbiB9XG4gXG4gY29uc3Qgc3RydWN0IHB2cl9wb3dlcl9zZXF1ZW5jZV9vcHMgcHZyX3Bvd2VyX3NlcXVlbmNlX29wc19wd3JzZXEgPSB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9zbm9jLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Nub2MuY1xuaW5kZXggMzEwNjUwMjI3NTc4MWQuLmY4N2U1NjU3NmUyOTEyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9zbm9jLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvc25vYy5jXG5AQCAtMTAyNSw3ICsxMDI1LDcgQEAgc3RhdGljIGludCBhdGgxMGtfaHdfcG93ZXJfb24oc3RydWN0IGF0aDEwayAqYXIpXG4gXG4gXHRhdGgxMGtfZGJnKGFyLCBBVEgxMEtfREJHX1NOT0MsIFwic29jIHBvd2VyIG9uXFxuXCIpO1xuIFxuLVx0cmV0ID0gcHdyc2VxX3Bvd2VyX29uKGFyX3Nub2MtXHUwMDNlcHdyc2VxKTtcbitcdHJldCA9IHB3cnNlcV92b3RlX29uKGFyX3Nub2MtXHUwMDNlcHdyc2VxKTtcbiBcdGlmIChyZXQpXG4gXHRcdHJldHVybiByZXQ7XG4gXG5AQCAtMTA0Miw3ICsxMDQyLDcgQEAgc3RhdGljIGludCBhdGgxMGtfaHdfcG93ZXJfb24oc3RydWN0IGF0aDEwayAqYXIpXG4gdnJlZ19vZmY6XG4gXHRyZWd1bGF0b3JfYnVsa19kaXNhYmxlKGFyX3Nub2MtXHUwMDNlbnVtX3ZyZWdzLCBhcl9zbm9jLVx1MDAzZXZyZWdzKTtcbiBwd3JzZXFfb2ZmOlxuLVx0cHdyc2VxX3Bvd2VyX29mZihhcl9zbm9jLVx1MDAzZXB3cnNlcSk7XG4rXHRwd3JzZXFfdm90ZV9vZmYoYXJfc25vYy1cdTAwM2Vwd3JzZXEpO1xuIFxuIFx0cmV0dXJuIHJldDtcbiB9XG5AQCAtMTA2MCw3ICsxMDYwLDcgQEAgc3RhdGljIGludCBhdGgxMGtfaHdfcG93ZXJfb2ZmKHN0cnVjdCBhdGgxMGsgKmFyKVxuIFx0cmV0X3ZyZWcgPSByZWd1bGF0b3JfYnVsa19kaXNhYmxlKGFyX3Nub2MtXHUwMDNlbnVtX3ZyZWdzLCBhcl9zbm9jLVx1MDAzZXZyZWdzKTtcbiBcbiBcdGlmIChhcl9zbm9jLVx1MDAzZXB3cnNlcSlcbi1cdFx0cmV0X3NlcSA9IHB3cnNlcV9wb3dlcl9vZmYoYXJfc25vYy1cdTAwM2Vwd3JzZXEpO1xuK1x0XHRyZXRfc2VxID0gcHdyc2VxX3ZvdGVfb2ZmKGFyX3Nub2MtXHUwMDNlcHdyc2VxKTtcbiBcbiBcdHJldHVybiByZXRfdnJlZyA/IDogcmV0X3NlcTtcbiB9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvcHdyY3RybC9nZW5lcmljLmMgYi9kcml2ZXJzL3BjaS9wd3JjdHJsL2dlbmVyaWMuY1xuaW5kZXggYTdlNTk5ZDg0MWU2MjguLjg4NzJmNjUwMTM1MmQ3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9wY2kvcHdyY3RybC9nZW5lcmljLmNcbisrKyBiL2RyaXZlcnMvcGNpL3B3cmN0cmwvZ2VuZXJpYy5jXG5AQCAtMjksNyArMjksNyBAQCBzdGF0aWMgaW50IHNsb3RfcHdyY3RybF9wb3dlcl9vbihzdHJ1Y3QgcGNpX3B3cmN0cmwgKnB3cmN0cmwpXG4gXHRpbnQgcmV0O1xuIFxuIFx0aWYgKHNsb3QtXHUwMDNlcHdyc2VxKSB7XG4tXHRcdHB3cnNlcV9wb3dlcl9vbihzbG90LVx1MDAzZXB3cnNlcSk7XG4rXHRcdHB3cnNlcV92b3RlX29uKHNsb3QtXHUwMDNlcHdyc2VxKTtcbiBcdFx0cmV0dXJuIDA7XG4gXHR9XG4gXG5AQCAtNDgsNyArNDgsNyBAQCBzdGF0aWMgaW50IHNsb3RfcHdyY3RybF9wb3dlcl9vZmYoc3RydWN0IHBjaV9wd3JjdHJsICpwd3JjdHJsKVxuIFx0XHRcdFx0XHRcdHN0cnVjdCBzbG90X3B3cmN0cmwsIHB3cmN0cmwpO1xuIFxuIFx0aWYgKHNsb3QtXHUwMDNlcHdyc2VxKSB7XG4tXHRcdHB3cnNlcV9wb3dlcl9vZmYoc2xvdC1cdTAwM2Vwd3JzZXEpO1xuK1x0XHRwd3JzZXFfdm90ZV9vZmYoc2xvdC1cdTAwM2Vwd3JzZXEpO1xuIFx0XHRyZXR1cm4gMDtcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9wd3JjdHJsL3BjaS1wd3JjdHJsLXB3cnNlcS5jIGIvZHJpdmVycy9wY2kvcHdyY3RybC9wY2ktcHdyY3RybC1wd3JzZXEuY1xuaW5kZXggYTMwOGJmNGI1ZmMwMWQuLjg2ODIyZjBmNjQ1ZWI3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9wY2kvcHdyY3RybC9wY2ktcHdyY3RybC1wd3JzZXEuY1xuKysrIGIvZHJpdmVycy9wY2kvcHdyY3RybC9wY2ktcHdyY3RybC1wd3JzZXEuY1xuQEAgLTU2LDcgKzU2LDcgQEAgc3RhdGljIGludCBwd3JzZXFfcHdyY3RybF9wb3dlcl9vbihzdHJ1Y3QgcGNpX3B3cmN0cmwgKnB3cmN0cmwpXG4gXHRzdHJ1Y3QgcHdyc2VxX3B3cmN0cmwgKnB3cnNlcSA9IGNvbnRhaW5lcl9vZihwd3JjdHJsLFxuIFx0XHRcdFx0XHQgICBzdHJ1Y3QgcHdyc2VxX3B3cmN0cmwsIHB3cmN0cmwpO1xuIFxuLVx0cmV0dXJuIHB3cnNlcV9wb3dlcl9vbihwd3JzZXEtXHUwMDNlcHdyc2VxKTtcbitcdHJldHVybiBwd3JzZXFfdm90ZV9vbihwd3JzZXEtXHUwMDNlcHdyc2VxKTtcbiB9XG4gXG4gc3RhdGljIGludCBwd3JzZXFfcHdyY3RybF9wb3dlcl9vZmYoc3RydWN0IHBjaV9wd3JjdHJsICpwd3JjdHJsKVxuQEAgLTY0LDcgKzY0LDcgQEAgc3RhdGljIGludCBwd3JzZXFfcHdyY3RybF9wb3dlcl9vZmYoc3RydWN0IHBjaV9wd3JjdHJsICpwd3JjdHJsKVxuIFx0c3RydWN0IHB3cnNlcV9wd3JjdHJsICpwd3JzZXEgPSBjb250YWluZXJfb2YocHdyY3RybCxcbiBcdFx0XHRcdFx0ICAgc3RydWN0IHB3cnNlcV9wd3JjdHJsLCBwd3JjdHJsKTtcbiBcbi1cdHJldHVybiBwd3JzZXFfcG93ZXJfb2ZmKHB3cnNlcS1cdTAwM2Vwd3JzZXEpO1xuK1x0cmV0dXJuIHB3cnNlcV92b3RlX29mZihwd3JzZXEtXHUwMDNlcHdyc2VxKTtcbiB9XG4gXG4gc3RhdGljIGludCBwd3JzZXFfcHdyY3RybF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvcG93ZXIvc2VxdWVuY2luZy9jb3JlLmMgYi9kcml2ZXJzL3Bvd2VyL3NlcXVlbmNpbmcvY29yZS5jXG5pbmRleCAwMmY0MmRhOTE1OTg1My4uYzYzMGIxNGY2ZjJjNDcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3Bvd2VyL3NlcXVlbmNpbmcvY29yZS5jXG4rKysgYi9kcml2ZXJzL3Bvd2VyL3NlcXVlbmNpbmcvY29yZS5jXG5AQCAtNzA4LDcgKzcwOCw3IEBAIHZvaWQgcHdyc2VxX3B1dChzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpXG4gXHRwd3JzZXEgPSBkZXNjLVx1MDAzZXB3cnNlcTtcbiBcbiBcdGlmIChkZXNjLVx1MDAzZXBvd2VyZWRfb24pXG4tXHRcdHB3cnNlcV9wb3dlcl9vZmYoZGVzYyk7XG4rXHRcdHB3cnNlcV92b3RlX29mZihkZXNjKTtcbiBcbiBcdGtmcmVlKGRlc2MpO1xuIFx0bW9kdWxlX3B1dChwd3JzZXEtXHUwMDNlb3duZXIpO1xuQEAgLTg3NCw3ICs4NzQsNyBAQCBzdGF0aWMgaW50IHB3cnNlcV91bml0X2Rpc2FibGUoc3RydWN0IHB3cnNlcV9kZXZpY2UgKnB3cnNlcSxcbiB9XG4gXG4gLyoqXG4tICogcHdyc2VxX3Bvd2VyX29uKCkgLSBJc3N1ZSBhIHBvd2VyLW9uIHJlcXVlc3Qgb24gYmVoYWxmIG9mIHRoZSBjb25zdW1lclxuKyAqIHB3cnNlcV92b3RlX29uKCkgLSBJc3N1ZSBhIHBvd2VyLW9uIHJlcXVlc3Qgb24gYmVoYWxmIG9mIHRoZSBjb25zdW1lclxuICAqICAgICAgICAgICAgICAgICAgICAgZGV2aWNlLlxuICAqIEBkZXNjOiBEZXNjcmlwdG9yIHJlZmVyZW5jaW5nIHRoZSBwb3dlciBzZXF1ZW5jZXIuXG4gICpcbkBAIC04ODcsNyArODg3LDcgQEAgc3RhdGljIGludCBwd3JzZXFfdW5pdF9kaXNhYmxlKHN0cnVjdCBwd3JzZXFfZGV2aWNlICpwd3JzZXEsXG4gICogUmV0dXJuczpcbiAgKiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIG51bWJlciBvbiBmYWlsdXJlLlxuICAqL1xuLWludCBwd3JzZXFfcG93ZXJfb24oc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKVxuK2ludCBwd3JzZXFfdm90ZV9vbihzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpXG4ge1xuIFx0c3RydWN0IHB3cnNlcV9kZXZpY2UgKnB3cnNlcTtcbiBcdHN0cnVjdCBwd3JzZXFfdGFyZ2V0ICp0YXJnZXQ7XG5AQCAtOTI1LDE0ICs5MjUsMTQgQEAgaW50IHB3cnNlcV9wb3dlcl9vbihzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpXG4gXG4gXHRyZXR1cm4gcmV0O1xuIH1cbi1FWFBPUlRfU1lNQk9MX0dQTChwd3JzZXFfcG93ZXJfb24pO1xuK0VYUE9SVF9TWU1CT0xfR1BMKHB3cnNlcV92b3RlX29uKTtcbiBcbiAvKipcbi0gKiBwd3JzZXFfcG93ZXJfb2ZmKCkgLSBJc3N1ZSBhIHBvd2VyLW9mZiByZXF1ZXN0IG9uIGJlaGFsZiBvZiB0aGUgY29uc3VtZXJcbisgKiBwd3JzZXFfdm90ZV9vZmYoKSAtIElzc3VlIGEgcG93ZXItb2ZmIHJlcXVlc3Qgb24gYmVoYWxmIG9mIHRoZSBjb25zdW1lclxuICAqICAgICAgICAgICAgICAgICAgICAgIGRldmljZS5cbiAgKiBAZGVzYzogRGVzY3JpcHRvciByZWZlcmVuY2luZyB0aGUgcG93ZXIgc2VxdWVuY2VyLlxuICAqXG4tICogVGhpcyB1bmRvZXMgdGhlIGVmZmVjdHMgb2YgcHdyc2VxX3Bvd2VyX29uKCkuIEl0IGlzc3VlcyBhIHBvd2VyLW9mZiByZXF1ZXN0XG4rICogVGhpcyB1bmRvZXMgdGhlIGVmZmVjdHMgb2YgcHdyc2VxX3ZvdGVfb24oKS4gSXQgaXNzdWVzIGEgcG93ZXItb2ZmIHJlcXVlc3RcbiAgKiBvbiBiZWhhbGYgb2YgdGhlIGNvbnN1bWVyIGFuZCB3aGVuIHRoZSBsYXN0IHJlbWFpbmluZyB1c2VyIGRvZXMgc28sIHRoZVxuICAqIHBvd2VyLWRvd24gc2VxdWVuY2Ugd2lsbCBiZSBzdGFydGVkLiBJZiBvbmUgaXMgaW4gcHJvZ3Jlc3MsIHRoZSBmdW5jdGlvblxuICAqIHdpbGwgYmxvY2sgdW50aWwgaXQncyBjb21wbGV0ZSBhbmQgdGhlbiByZXR1cm4uXG5AQCAtOTQwLDcgKzk0MCw3IEBAIEVYUE9SVF9TWU1CT0xfR1BMKHB3cnNlcV9wb3dlcl9vbik7XG4gICogUmV0dXJuczpcbiAgKiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIG51bWJlciBvbiBmYWlsdXJlLlxuICAqL1xuLWludCBwd3JzZXFfcG93ZXJfb2ZmKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYylcbitpbnQgcHdyc2VxX3ZvdGVfb2ZmKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYylcbiB7XG4gXHRzdHJ1Y3QgcHdyc2VxX2RldmljZSAqcHdyc2VxO1xuIFx0c3RydWN0IHB3cnNlcV91bml0ICp1bml0O1xuQEAgLTk2Niw3ICs5NjYsNyBAQCBpbnQgcHdyc2VxX3Bvd2VyX29mZihzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpXG4gXG4gXHRyZXR1cm4gcmV0O1xuIH1cbi1FWFBPUlRfU1lNQk9MX0dQTChwd3JzZXFfcG93ZXJfb2ZmKTtcbitFWFBPUlRfU1lNQk9MX0dQTChwd3JzZXFfdm90ZV9vZmYpO1xuIFxuIC8qKlxuICAqIHB3cnNlcV90b19kZXZpY2UoKSAtIEdldCB0aGUgcHdyc2VxIGRldmljZSBwb2ludGVyIGZyb20gYSBkZXNjcmlwdG9yLlxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcHdyc2VxL2NvbnN1bWVyLmggYi9pbmNsdWRlL2xpbnV4L3B3cnNlcS9jb25zdW1lci5oXG5pbmRleCAzYzkwN2M5ZTE4ODVkYy4uZTRkMmNiMzIxMzU0ZjAgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L3B3cnNlcS9jb25zdW1lci5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L3B3cnNlcS9jb25zdW1lci5oXG5AQCAtMjAsOCArMjAsOCBAQCB2b2lkIHB3cnNlcV9wdXQoc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKTtcbiBzdHJ1Y3QgcHdyc2VxX2Rlc2MgKiBfX211c3RfY2hlY2tcbiBkZXZtX3B3cnNlcV9nZXQoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBjaGFyICp0YXJnZXQpO1xuIFxuLWludCBwd3JzZXFfcG93ZXJfb24oc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKTtcbi1pbnQgcHdyc2VxX3Bvd2VyX29mZihzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpO1xuK2ludCBwd3JzZXFfdm90ZV9vbihzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpO1xuK2ludCBwd3JzZXFfdm90ZV9vZmYoc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKTtcbiBcbiBzdHJ1Y3QgZGV2aWNlICpwd3JzZXFfdG9fZGV2aWNlKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYyk7XG4gXG5AQCAtNDMsMTIgKzQzLDEyIEBAIGRldm1fcHdyc2VxX2dldChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IGNoYXIgKnRhcmdldClcbiBcdHJldHVybiBFUlJfUFRSKC1FTk9TWVMpO1xuIH1cbiBcbi1zdGF0aWMgaW5saW5lIGludCBwd3JzZXFfcG93ZXJfb24oc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKVxuK3N0YXRpYyBpbmxpbmUgaW50IHB3cnNlcV92b3RlX29uKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYylcbiB7XG4gXHRyZXR1cm4gLUVOT1NZUztcbiB9XG4gXG4tc3RhdGljIGlubGluZSBpbnQgcHdyc2VxX3Bvd2VyX29mZihzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpXG4rc3RhdGljIGlubGluZSBpbnQgcHdyc2VxX3ZvdGVfb2ZmKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYylcbiB7XG4gXHRyZXR1cm4gLUVOT1NZUztcbiB9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QyMjozODo1Ni44ODAxNjU5OTZaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2Njc0MDU3MjIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBvd2VyIFNlcXVlbmNpbmcgQVBJIFJlbmFtZSoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF0J3MgZXNzZW50aWFsbHkgYSBzdHJhaWdodGZvcndhcmQgcmVuYW1lIHdpdGhpbiB0aGUgcG93ZXIgc2VxdWVuY2luZyBzdWJzeXN0ZW0uIFRoZXkncmUgY2hhbmdpbmcgYHB3cnNlcV9wb3dlcl9vbmAgdG8gYHB3cnNlcV92b3RlX29uYCBhbmQgYHB3cnNlcV9wb3dlcl9vZmZgIHRvIGBwd3JzZXFfdm90ZV9vZmZgLiBJdCdzIGEgZmFpcmx5IGxvY2FsaXplZCBjaGFuZ2UsIGltcGFjdGluZyBgZHJpdmVycy9wb3dlci9zZXF1ZW5jaW5nL2NvcmUuY2AgYW5kIGBpbmNsdWRlL2xpbnV4L3B3cnNlcS9jb25zdW1lci5oYCwgcGx1cyBhIGJ1bmNoIG9mIGNhbGxlcnMgYWNyb3NzIGRpZmZlcmVudCBkcml2ZXJzIOKAkyBibHVldG9vdGgsIEdQVSwgd2lmaSwgUENJLlxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMsIGxldCdzIG1ha2Ugc3VyZSB0aGlzIGlzICpwdXJlbHkqIGEgcmVuYW1lIGFuZCBub3QgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBkaXNndWlzZS4gSSBuZWVkIHRvIHZlcmlmeSB0aGVyZSBhcmUgbm8gaGlkZGVuIHJlZ3Jlc3Npb25zLiBMb29raW5nIGF0IHRoZSBkaWZmLCBpdCBzZWVtcyB0aGF0J3MgcHJlY2lzZWx5IHdoYXQgaXQgaXMuIFRoZSBkb2N1bWVudGF0aW9uIGlzIHVwZGF0ZWQgYWNjb3JkaW5nbHksIGFuZCBhbGwgdGhlIGNhbGxlcnMgc2ltcGx5IHJlZmxlY3QgdGhlIG5ldyBmdW5jdGlvbiBuYW1lcy5cblxuSSd2ZSBjaGVja2VkIHRoZSBkaWZmIGFuZCBtYWRlIHN1cmUgdGhlcmUgYXJlIG5vIGxvZ2ljIGNoYW5nZXMuIFNwZWNpZmljYWxseSwgSSd2ZSBjb25maXJtZWQgdGhhdCB0aGUgY29yZSBpbXBsZW1lbnRhdGlvbiBpbiBgZHJpdmVycy9wb3dlci9zZXF1ZW5jaW5nL2NvcmUuY2AgaXMgdW5jaGFuZ2VkLCBvdGhlciB0aGFuIHRoZSBuYW1lIGl0c2VsZiBhbmQgdGhlIGFjY29tcGFueWluZyBgRVhQT1JUX1NZTUJPTF9HUExgLiBOb3RoaW5nIHRvIHN1Z2dlc3QgYW55IG5ldyBiZWhhdmlvdXIgb3IgYWRkZWQgY29tcGxleGl0eS5cblxuR2l2ZW4gdGhlIHB1cmUgY29zbWV0aWMgbmF0dXJlIG9mIHRoaXMgY2hhbmdlLCBJJ20gY29uZmlkZW50IGluIHNldHRpbmcgYFdvcnRoRnV6emluZz1mYWxzZWAuIEl0J3MgYSBzYWZlIHJlbmFtZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTQxMCwiT3V0cHV0VG9rZW5zIjo4OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ4NCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDIyOjM5OjAzLjU1NDIyNTc3OVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjU0OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSByZW5hbWVzIHRoZSBmdW5jdGlvbnMgcHdyc2VxX3Bvd2VyX29uIHRvIHB3cnNlcV92b3RlX29uIGFuZCBwd3JzZXFfcG93ZXJfb2ZmIHRvIHB3cnNlcV92b3RlX29mZiBhY3Jvc3MgdGhlIHBvd2VyIHNlcXVlbmNpbmcgc3Vic3lzdGVtIGFuZCBpdHMgY29uc3VtZXJzLiBUaGVyZSBhcmUgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IHJlbmFtZXMgdGhlIGZ1bmN0aW9ucyBwd3JzZXFfcG93ZXJfb24gdG8gcHdyc2VxX3ZvdGVfb24gYW5kIHB3cnNlcV9wb3dlcl9vZmYgdG8gcHdyc2VxX3ZvdGVfb2ZmIGFjcm9zcyB0aGUgcG93ZXIgc2VxdWVuY2luZyBzdWJzeXN0ZW0gYW5kIGl0cyBjb25zdW1lcnMuIFRoZXJlIGFyZSBubyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow8qngl[1] Phase: Running StartedAt: 2026-07-27 22:39:15 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8qngl[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-27 22:39:15 +0000 UTC FinishedAt: 2026-07-27 22:39:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}