Name: series-workflownw79j Phase: Failed StartedAt: 2026-08-13 21:12:25 +0000 UTC FinishedAt: 2026-08-13 21:33:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflownw79j[0] Phase: Succeeded StartedAt: 2026-08-13 21:12:25 +0000 UTC FinishedAt: 2026-08-13 21:33:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflownw79j[0].run-triage Phase: Succeeded StartedAt: 2026-08-13 21:12:25 +0000 UTC FinishedAt: 2026-08-13 21:33:13 +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+CgkJCTx0ZD4yMDI2LzA4LzEzIDIxOjMyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBmaXhlcyByYWNlIGNvbmRpdGlvbnMgZHVyaW5nIGRyaXZlciB1bnJlZ2lzdHJhdGlvbiBhbmQgdGVhcmRvd24gKHBzZV9jb250cm9sbGVyX3VucmVnaXN0ZXIpLiBUaGVzZSBjb2RlIHBhdGhzIGFyZSBleGVjdXRlZCBkdXJpbmcgZHJpdmVyIHVuYmluZCBvciBkZXZpY2UgcmVtb3ZhbCwgd2hpY2ggZmFsbHMgdW5kZXIgdGhlIGV4Y2x1c2lvbiBjcml0ZXJpYSBmb3IgdGVhcmRvd24gY2FsbGJhY2tzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAyMTozMjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGIxY2Y1NmM2ZGQzNDFmMzc3Y2FmYmQzNWI2MzdlZGUyYjkyMTA1MzJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyAxMyAyMTozMjo1MCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYyBiL2RyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jXG5pbmRleCBhNWU2ZDdiMjZiOWZkLi4yYTlhMDdkYzhjNDgxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jXG5AQCAtMTQ0LDcgJiM0MzsxNDQsMTMgQEAgc3RhdGljIHZvaWQgcHNlX3JlbGVhc2VfcGlzKHN0cnVjdCBwc2VfY29udHJvbGxlcl9kZXYgKnBjZGV2KVxuIFx0XHRvZl9ub2RlX3B1dChwY2Rldi1cdTAwM2VwaVtpXS5wYWlyc2V0WzFdLm5wKTtcbiBcdFx0b2Zfbm9kZV9wdXQocGNkZXYtXHUwMDNlcGlbaV0ubnApO1xuIFx0fVxuJiM0MztcdC8qIEZyZWUgdW5kZXIgdGhlIGxvY2sgc28gdGhlIE5VTEwgc3RvcmUgaXMgYXV0aG9yaXRhdGl2ZSBhZ2FpbnN0XG4mIzQzO1x0ICogdGhlIHJlZ3VsYXRvciBvcHMgdGhhdCByZWFkIHBjZGV2LVx1MDAzZXBpIHVuZGVyIHBjZGV2LVx1MDAzZWxvY2suXG4mIzQzO1x0ICovXG4mIzQzO1x0bXV0ZXhfbG9jayhcdTAwMjZwY2Rldi1cdTAwM2Vsb2NrKTtcbiBcdGtmcmVlKHBjZGV2LVx1MDAzZXBpKTtcbiYjNDM7XHRwY2Rldi1cdTAwM2VwaSA9IE5VTEw7XG4mIzQzO1x0bXV0ZXhfdW5sb2NrKFx1MDAyNnBjZGV2LVx1MDAzZWxvY2spO1xuIH1cbiBcbiAvKipcbkBAIC00MjEsNiAmIzQzOzQyNywxMSBAQCBzdGF0aWMgaW50IHBzZV9waV9pc19lbmFibGVkKHN0cnVjdCByZWd1bGF0b3JfZGV2ICpyZGV2KVxuIFxuIFx0aWQgPSByZGV2X2dldF9pZChyZGV2KTtcbiBcdG11dGV4X2xvY2soXHUwMDI2cGNkZXYtXHUwMDNlbG9jayk7XG4mIzQzO1x0LyogQ29udHJvbGxlciBtYXkgYmUgdW5yZWdpc3RlcmVkIChwY2Rldi1cdTAwM2VwaSBmcmVlZCkgbWlkLXRlYXJkb3duLiAqL1xuJiM0MztcdGlmICghcGNkZXYtXHUwMDNlcGkpIHtcbiYjNDM7XHRcdHJldCA9IC1FTk9ERVY7XG4mIzQzO1x0XHRnb3RvIG91dDtcbiYjNDM7XHR9XG4gXHRpZiAocHNlX3B3X2RfaXNfc3dfcHdfY29udHJvbChwY2RldiwgcGNkZXYtXHUwMDNlcGlbaWRdLnB3X2QpKSB7XG4gXHRcdHJldCA9IHBjZGV2LVx1MDAzZXBpW2lkXS5hZG1pbl9zdGF0ZV9lbmFibGVkO1xuIFx0XHRnb3RvIG91dDtcbkBAIC02NzQsNiAmIzQzOzY4NSwxMSBAQCBzdGF0aWMgaW50IHBzZV9waV9lbmFibGUoc3RydWN0IHJlZ3VsYXRvcl9kZXYgKnJkZXYpXG4gXG4gXHRpZCA9IHJkZXZfZ2V0X2lkKHJkZXYpO1xuIFx0bXV0ZXhfbG9jayhcdTAwMjZwY2Rldi1cdTAwM2Vsb2NrKTtcbiYjNDM7XHQvKiBDb250cm9sbGVyIG1heSBiZSB1bnJlZ2lzdGVyZWQgKHBjZGV2LVx1MDAzZXBpIGZyZWVkKSBtaWQtdGVhcmRvd24uICovXG4mIzQzO1x0aWYgKCFwY2Rldi1cdTAwM2VwaSkge1xuJiM0MztcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBjZGV2LVx1MDAzZWxvY2spO1xuJiM0MztcdFx0cmV0dXJuIC1FTk9ERVY7XG4mIzQzO1x0fVxuIFx0aWYgKHBzZV9wd19kX2lzX3N3X3B3X2NvbnRyb2wocGNkZXYsIHBjZGV2LVx1MDAzZXBpW2lkXS5wd19kKSkge1xuIFx0XHQvKiBNYW5hZ2UgZW5hYmxlZCBzdGF0dXMgYnkgc29mdHdhcmUuXG4gXHRcdCAqIFJlYWwgZW5hYmxlIHByb2Nlc3Mgd2lsbCBoYXBwZW4gaWYgYSBwb3J0IGlzIGNvbm5lY3RlZC5cbkBAIC03MDIsMTUgJiM0Mzs3MTgsMjAgQEAgc3RhdGljIGludCBwc2VfcGlfZW5hYmxlKHN0cnVjdCByZWd1bGF0b3JfZGV2ICpyZGV2KVxuIHN0YXRpYyBpbnQgcHNlX3BpX2Rpc2FibGUoc3RydWN0IHJlZ3VsYXRvcl9kZXYgKnJkZXYpXG4ge1xuIFx0c3RydWN0IHBzZV9jb250cm9sbGVyX2RldiAqcGNkZXYgPSByZGV2X2dldF9kcnZkYXRhKHJkZXYpO1xuLVx0c3RydWN0IHBzZV9waSAqcGk7XG4gXHRpbnQgaWQsIHJldDtcbiBcbiBcdGlkID0gcmRldl9nZXRfaWQocmRldik7XG4tXHRwaSA9IFx1MDAyNnBjZGV2LVx1MDAzZXBpW2lkXTtcbiBcdG11dGV4X2xvY2soXHUwMDI2cGNkZXYtXHUwMDNlbG9jayk7XG4mIzQzO1x0LyogUmVhY2hlZCB2aWEgdGhlIHJlZ3VsYXRvciBjb3JlJiMzOTtzIGRlZmVycmVkLWRpc2FibGUgZmx1c2ggYWZ0ZXJcbiYjNDM7XHQgKiBwY2Rldi1cdTAwM2VwaSBpcyBmcmVlZCBvbiB1bnJlZ2lzdGVyLlxuJiM0MztcdCAqL1xuJiM0MztcdGlmICghcGNkZXYtXHUwMDNlcGkpIHtcbiYjNDM7XHRcdG11dGV4X3VubG9jayhcdTAwMjZwY2Rldi1cdTAwM2Vsb2NrKTtcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcdH1cbiBcdHJldCA9IF9wc2VfcGlfZGlzYWJsZShwY2RldiwgaWQpO1xuIFx0aWYgKCFyZXQpXG4tXHRcdHBpLVx1MDAzZWFkbWluX3N0YXRlX2VuYWJsZWQgPSAwO1xuJiM0MztcdFx0cGNkZXYtXHUwMDNlcGlbaWRdLmFkbWluX3N0YXRlX2VuYWJsZWQgPSAwO1xuIFxuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBjZGV2LVx1MDAzZWxvY2spO1xuIFx0cmV0dXJuIDA7XG5AQCAtMTExNCwxNSAmIzQzOzExMzUsMjMgQEAgRVhQT1JUX1NZTUJPTF9HUEwocHNlX2NvbnRyb2xsZXJfcmVnaXN0ZXIpO1xuICAqL1xuIHZvaWQgcHNlX2NvbnRyb2xsZXJfdW5yZWdpc3RlcihzdHJ1Y3QgcHNlX2NvbnRyb2xsZXJfZGV2ICpwY2RldilcbiB7XG4tXHRwc2VfZmx1c2hfcHdfZHMocGNkZXYpO1xuLVx0cHNlX3JlbGVhc2VfcGlzKHBjZGV2KTtcbiYjNDM7XHQvKiBTdG9wIHRoZSBJUlEgYW5kIG5vdGlmaWNhdGlvbiB3b3JrZXIgYmVmb3JlIGZyZWVpbmcgd2hhdCB0aGV5XG4mIzQzO1x0ICogcmVhY2g6IGJvdGggdG91Y2ggcGNkZXYtXHUwMDNlcGksIGFuZCB0aGUgSVJRIGFsc28gdXNlcyBwd19kLVx1MDAzZXN1cHBseVxuJiM0MztcdCAqIHRoYXQgcHNlX2ZsdXNoX3B3X2RzKCkgZHJvcHMuXG4mIzQzO1x0ICovXG4gXHRpZiAocGNkZXYtXHUwMDNlaXJxKVxuIFx0XHRkaXNhYmxlX2lycShwY2Rldi1cdTAwM2VpcnEpO1xuIFx0Y2FuY2VsX3dvcmtfc3luYyhcdTAwMjZwY2Rldi1cdTAwM2VudGZfd29yayk7XG4tXHRrZmlmb19mcmVlKFx1MDAyNnBjZGV2LVx1MDAzZW50Zl9maWZvKTtcbiYjNDM7XHRwc2VfZmx1c2hfcHdfZHMocGNkZXYpO1xuJiM0MztcdC8qIFVubGluayBiZWZvcmUgZnJlZWluZyBwY2Rldi1cdTAwM2VwaTogb2ZfcHNlX2NvbnRyb2xfZ2V0KCkgd2Fsa3MgdGhlXG4mIzQzO1x0ICogbGlzdCB1bmRlciBwc2VfbGlzdF9tdXRleCBhbmQgZGVyZWZlcmVuY2VzIHBjZGV2LVx1MDAzZXBpW10gdmlhXG4mIzQzO1x0ICogb2ZfcHNlX21hdGNoX3BpKCksIHNvIGEgbG9va3VwIG11c3QgbmV2ZXIgcmVhY2ggYSBmcmVlZCBhcnJheS5cbiYjNDM7XHQgKi9cbiBcdG11dGV4X2xvY2soXHUwMDI2cHNlX2xpc3RfbXV0ZXgpO1xuIFx0bGlzdF9kZWwoXHUwMDI2cGNkZXYtXHUwMDNlbGlzdCk7XG4gXHRtdXRleF91bmxvY2soXHUwMDI2cHNlX2xpc3RfbXV0ZXgpO1xuJiM0MztcdHBzZV9yZWxlYXNlX3BpcyhwY2Rldik7XG4mIzQzO1x0a2ZpZm9fZnJlZShcdTAwMjZwY2Rldi1cdTAwM2VudGZfZmlmbyk7XG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKHBzZV9jb250cm9sbGVyX3VucmVnaXN0ZXIpO1xuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDIxOjMyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGZpeGVzIHJhY2UgY29uZGl0aW9ucyBkdXJpbmcgZHJpdmVyIHVucmVnaXN0cmF0aW9uIGFuZCB0ZWFyZG93biAocHNlX2NvbnRyb2xsZXJfdW5yZWdpc3RlcikuIFRoZXNlIGNvZGUgcGF0aHMgYXJlIGV4ZWN1dGVkIGR1cmluZyBkcml2ZXIgdW5iaW5kIG9yIGRldmljZSByZW1vdmFsLCB3aGljaCBmYWxscyB1bmRlciB0aGUgZXhjbHVzaW9uIGNyaXRlcmlhIGZvciB0ZWFyZG93biBjYWxsYmFja3MuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYjFjZjU2YzZkZDM0MWYzNzdjYWZiZDM1YjYzN2VkZTJiOTIxMDUzMgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgQXVnIDEzIDIxOjMyOjUwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmMgYi9kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYwppbmRleCBhNWU2ZDdiMjZiOWZkLi4yYTlhMDdkYzhjNDgxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYwpAQCAtMTQ0LDcgJiM0MzsxNDQsMTMgQEAgc3RhdGljIHZvaWQgcHNlX3JlbGVhc2VfcGlzKHN0cnVjdCBwc2VfY29udHJvbGxlcl9kZXYgKnBjZGV2KQogCQlvZl9ub2RlX3B1dChwY2Rldi0mZ3Q7cGlbaV0ucGFpcnNldFsxXS5ucCk7CiAJCW9mX25vZGVfcHV0KHBjZGV2LSZndDtwaVtpXS5ucCk7CiAJfQomIzQzOwkvKiBGcmVlIHVuZGVyIHRoZSBsb2NrIHNvIHRoZSBOVUxMIHN0b3JlIGlzIGF1dGhvcml0YXRpdmUgYWdhaW5zdAomIzQzOwkgKiB0aGUgcmVndWxhdG9yIG9wcyB0aGF0IHJlYWQgcGNkZXYtJmd0O3BpIHVuZGVyIHBjZGV2LSZndDtsb2NrLgomIzQzOwkgKi8KJiM0MzsJbXV0ZXhfbG9jaygmYW1wO3BjZGV2LSZndDtsb2NrKTsKIAlrZnJlZShwY2Rldi0mZ3Q7cGkpOwomIzQzOwlwY2Rldi0mZ3Q7cGkgPSBOVUxMOwomIzQzOwltdXRleF91bmxvY2soJmFtcDtwY2Rldi0mZ3Q7bG9jayk7CiB9CiAKIC8qKgpAQCAtNDIxLDYgJiM0Mzs0MjcsMTEgQEAgc3RhdGljIGludCBwc2VfcGlfaXNfZW5hYmxlZChzdHJ1Y3QgcmVndWxhdG9yX2RldiAqcmRldikKIAogCWlkID0gcmRldl9nZXRfaWQocmRldik7CiAJbXV0ZXhfbG9jaygmYW1wO3BjZGV2LSZndDtsb2NrKTsKJiM0MzsJLyogQ29udHJvbGxlciBtYXkgYmUgdW5yZWdpc3RlcmVkIChwY2Rldi0mZ3Q7cGkgZnJlZWQpIG1pZC10ZWFyZG93bi4gKi8KJiM0MzsJaWYgKCFwY2Rldi0mZ3Q7cGkpIHsKJiM0MzsJCXJldCA9IC1FTk9ERVY7CiYjNDM7CQlnb3RvIG91dDsKJiM0MzsJfQogCWlmIChwc2VfcHdfZF9pc19zd19wd19jb250cm9sKHBjZGV2LCBwY2Rldi0mZ3Q7cGlbaWRdLnB3X2QpKSB7CiAJCXJldCA9IHBjZGV2LSZndDtwaVtpZF0uYWRtaW5fc3RhdGVfZW5hYmxlZDsKIAkJZ290byBvdXQ7CkBAIC02NzQsNiAmIzQzOzY4NSwxMSBAQCBzdGF0aWMgaW50IHBzZV9waV9lbmFibGUoc3RydWN0IHJlZ3VsYXRvcl9kZXYgKnJkZXYpCiAKIAlpZCA9IHJkZXZfZ2V0X2lkKHJkZXYpOwogCW11dGV4X2xvY2soJmFtcDtwY2Rldi0mZ3Q7bG9jayk7CiYjNDM7CS8qIENvbnRyb2xsZXIgbWF5IGJlIHVucmVnaXN0ZXJlZCAocGNkZXYtJmd0O3BpIGZyZWVkKSBtaWQtdGVhcmRvd24uICovCiYjNDM7CWlmICghcGNkZXYtJmd0O3BpKSB7CiYjNDM7CQltdXRleF91bmxvY2soJmFtcDtwY2Rldi0mZ3Q7bG9jayk7CiYjNDM7CQlyZXR1cm4gLUVOT0RFVjsKJiM0MzsJfQogCWlmIChwc2VfcHdfZF9pc19zd19wd19jb250cm9sKHBjZGV2LCBwY2Rldi0mZ3Q7cGlbaWRdLnB3X2QpKSB7CiAJCS8qIE1hbmFnZSBlbmFibGVkIHN0YXR1cyBieSBzb2Z0d2FyZS4KIAkJICogUmVhbCBlbmFibGUgcHJvY2VzcyB3aWxsIGhhcHBlbiBpZiBhIHBvcnQgaXMgY29ubmVjdGVkLgpAQCAtNzAyLDE1ICYjNDM7NzE4LDIwIEBAIHN0YXRpYyBpbnQgcHNlX3BpX2VuYWJsZShzdHJ1Y3QgcmVndWxhdG9yX2RldiAqcmRldikKIHN0YXRpYyBpbnQgcHNlX3BpX2Rpc2FibGUoc3RydWN0IHJlZ3VsYXRvcl9kZXYgKnJkZXYpCiB7CiAJc3RydWN0IHBzZV9jb250cm9sbGVyX2RldiAqcGNkZXYgPSByZGV2X2dldF9kcnZkYXRhKHJkZXYpOwotCXN0cnVjdCBwc2VfcGkgKnBpOwogCWludCBpZCwgcmV0OwogCiAJaWQgPSByZGV2X2dldF9pZChyZGV2KTsKLQlwaSA9ICZhbXA7cGNkZXYtJmd0O3BpW2lkXTsKIAltdXRleF9sb2NrKCZhbXA7cGNkZXYtJmd0O2xvY2spOwomIzQzOwkvKiBSZWFjaGVkIHZpYSB0aGUgcmVndWxhdG9yIGNvcmUmIzM5O3MgZGVmZXJyZWQtZGlzYWJsZSBmbHVzaCBhZnRlcgomIzQzOwkgKiBwY2Rldi0mZ3Q7cGkgaXMgZnJlZWQgb24gdW5yZWdpc3Rlci4KJiM0MzsJICovCiYjNDM7CWlmICghcGNkZXYtJmd0O3BpKSB7CiYjNDM7CQltdXRleF91bmxvY2soJmFtcDtwY2Rldi0mZ3Q7bG9jayk7CiYjNDM7CQlyZXR1cm4gMDsKJiM0MzsJfQogCXJldCA9IF9wc2VfcGlfZGlzYWJsZShwY2RldiwgaWQpOwogCWlmICghcmV0KQotCQlwaS0mZ3Q7YWRtaW5fc3RhdGVfZW5hYmxlZCA9IDA7CiYjNDM7CQlwY2Rldi0mZ3Q7cGlbaWRdLmFkbWluX3N0YXRlX2VuYWJsZWQgPSAwOwogCiAJbXV0ZXhfdW5sb2NrKCZhbXA7cGNkZXYtJmd0O2xvY2spOwogCXJldHVybiAwOwpAQCAtMTExNCwxNSAmIzQzOzExMzUsMjMgQEAgRVhQT1JUX1NZTUJPTF9HUEwocHNlX2NvbnRyb2xsZXJfcmVnaXN0ZXIpOwogICovCiB2b2lkIHBzZV9jb250cm9sbGVyX3VucmVnaXN0ZXIoc3RydWN0IHBzZV9jb250cm9sbGVyX2RldiAqcGNkZXYpCiB7Ci0JcHNlX2ZsdXNoX3B3X2RzKHBjZGV2KTsKLQlwc2VfcmVsZWFzZV9waXMocGNkZXYpOwomIzQzOwkvKiBTdG9wIHRoZSBJUlEgYW5kIG5vdGlmaWNhdGlvbiB3b3JrZXIgYmVmb3JlIGZyZWVpbmcgd2hhdCB0aGV5CiYjNDM7CSAqIHJlYWNoOiBib3RoIHRvdWNoIHBjZGV2LSZndDtwaSwgYW5kIHRoZSBJUlEgYWxzbyB1c2VzIHB3X2QtJmd0O3N1cHBseQomIzQzOwkgKiB0aGF0IHBzZV9mbHVzaF9wd19kcygpIGRyb3BzLgomIzQzOwkgKi8KIAlpZiAocGNkZXYtJmd0O2lycSkKIAkJZGlzYWJsZV9pcnEocGNkZXYtJmd0O2lycSk7CiAJY2FuY2VsX3dvcmtfc3luYygmYW1wO3BjZGV2LSZndDtudGZfd29yayk7Ci0Ja2ZpZm9fZnJlZSgmYW1wO3BjZGV2LSZndDtudGZfZmlmbyk7CiYjNDM7CXBzZV9mbHVzaF9wd19kcyhwY2Rldik7CiYjNDM7CS8qIFVubGluayBiZWZvcmUgZnJlZWluZyBwY2Rldi0mZ3Q7cGk6IG9mX3BzZV9jb250cm9sX2dldCgpIHdhbGtzIHRoZQomIzQzOwkgKiBsaXN0IHVuZGVyIHBzZV9saXN0X211dGV4IGFuZCBkZXJlZmVyZW5jZXMgcGNkZXYtJmd0O3BpW10gdmlhCiYjNDM7CSAqIG9mX3BzZV9tYXRjaF9waSgpLCBzbyBhIGxvb2t1cCBtdXN0IG5ldmVyIHJlYWNoIGEgZnJlZWQgYXJyYXkuCiYjNDM7CSAqLwogCW11dGV4X2xvY2soJmFtcDtwc2VfbGlzdF9tdXRleCk7CiAJbGlzdF9kZWwoJmFtcDtwY2Rldi0mZ3Q7bGlzdCk7CiAJbXV0ZXhfdW5sb2NrKCZhbXA7cHNlX2xpc3RfbXV0ZXgpOwomIzQzOwlwc2VfcmVsZWFzZV9waXMocGNkZXYpOwomIzQzOwlrZmlmb19mcmVlKCZhbXA7cGNkZXYtJmd0O250Zl9maWZvKTsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKHBzZV9jb250cm9sbGVyX3VucmVnaXN0ZXIpOwogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDIxOjMyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwNDcKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTmV0d29yayBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuY2AuIFNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2ggYXQgZmlyc3QgZ2xhbmNlIOKAkyBpdCYjMzk7cyBhZGRpbmcgYSBmZXcgYE5VTExgIGNoZWNrcyBmb3IgYHBjZGV2LSZndDtwaWAgaW4gYHBzZV9waV9pc19lbmFibGVkYCwgYHBzZV9waV9lbmFibGVgLCBhbmQgYHBzZV9waV9kaXNhYmxlYC4gU21hcnQgbW92ZTsgYWx3YXlzIGdvb2QgdG8gYmUgcm9idXN0LiBBbmQgaXQmIzM5O3MgYWxzbyBzZXR0aW5nIGBwY2Rldi0mZ3Q7cGkgPSBOVUxMYCB3aXRoaW4gYSBsb2NrIGluIGBwc2VfcmVsZWFzZV9waXNgLCBhbmQgdGhlbiByZW9yZGVyaW5nIHNvbWUgc3R1ZmYgaW4gYHBzZV9jb250cm9sbGVyX3VucmVnaXN0ZXJgLiBEZWZpbml0ZWx5IHNtZWxscyBsaWtlIGEgcmFjZSBjb25kaXRpb24gZml4IHJlbGF0ZWQgdG8gdGVhcmRvd24gb3IgdW5yZWdpc3RlcmluZywgYXMgSSBzdXNwZWN0ZWQuCgpOb3csIHRoaXMgaXMgd2hlcmUgaXQgZ2V0cyBpbnRlcmVzdGluZywgYmVjYXVzZSB0aGUgaW5zdHJ1Y3Rpb25zIGFyZSB0ZWxsaW5nIG1lIHdoZXRoZXIgdGhpcyBwYXRjaCBpcyB3b3J0aCBmdXp6aW5nLiBJdCBzYXlzIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiBpdCAqb25seSogY29udGFpbnMgY2hhbmdlcyBpbiBkcml2ZXIgYC5yZW1vdmVgLCBgLnNodXRkb3duYCwgb3IgYHBjaV91bnJlZ2lzdGVyX2RyaXZlcmAgdGVhcmRvd24gY2FsbGJhY2tzIHRoYXQgYXJlIGV4ZWN1dGVkIGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpIYW5nIG9uIGEgc2Vjb25k4oCmIGBwc2VfY29udHJvbGxlcl91bnJlZ2lzdGVyYC4uLiB0aGF0ICppcyogYSB0ZWFyZG93biBjYWxsYmFjaywgaXNuJiMzOTt0IGl0PyBMZXQgbWUgY2hlY2sgd2hlcmUgdGhhdCBmdW5jdGlvbiBpcyBhY3R1YWxseSBjYWxsZWQuIEdvdHRhIG1ha2Ugc3VyZSBpdCAqb25seSogcnVucyBkdXJpbmcgdGhlIGhvdC11bnBsdWcgb3IgdW5iaW5kIG9wZXJhdGlvbnMgdG8gZ2l2ZSBhIGRlZmluaXRpdmUgYW5zd2VyIGFib3V0IGZ1enppbmcuIFNvLCBsZXQgbWUgZ28gY2hlY2sgdGhlIGNhbGwgc2l0ZXMgZm9yIHRoaXMgZnVuY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMjE6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cHNlX2NvbnRyb2xsZXJfdW5yZWdpc3RlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BzZS1wZC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmM9MTEzMD1FWFBPUlRfU1lNQk9MX0dQTChwc2VfY29udHJvbGxlcl9yZWdpc3Rlcik7XG4tLVxuZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmMtMTEzMi0vKipcbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jOjExMzM6ICogcHNlX2NvbnRyb2xsZXJfdW5yZWdpc3RlciAtIHVucmVnaXN0ZXIgYSBQU0UgY29udHJvbGxlciBkZXZpY2VcbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jLTExMzQtICogQHBjZGV2OiBhIHBvaW50ZXIgdG8gdGhlIFBTRSBjb250cm9sbGVyIGRldmljZVxuZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmMtMTEzNS0gKi9cbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jOjExMzY6dm9pZCBwc2VfY29udHJvbGxlcl91bnJlZ2lzdGVyKHN0cnVjdCBwc2VfY29udHJvbGxlcl9kZXYgKnBjZGV2KVxuZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmMtMTEzNy17XG4tLVxuZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmMtMTE1NS19XG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYzoxMTU2OkVYUE9SVF9TWU1CT0xfR1BMKHBzZV9jb250cm9sbGVyX3VucmVnaXN0ZXIpO1xuZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmMtMTE1Ny1cbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jPTExNTg9c3RhdGljIHZvaWQgZGV2bV9wc2VfY29udHJvbGxlcl9yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqcmVzKVxuZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmMtMTE1OS17XG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYzoxMTYwOlx0cHNlX2NvbnRyb2xsZXJfdW5yZWdpc3RlcigqKHN0cnVjdCBwc2VfY29udHJvbGxlcl9kZXYgKiopcmVzKTtcbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jLTExNjEtfVxuLS1cbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jLTExNjgtICogTWFuYWdlZCBwc2VfY29udHJvbGxlcl9yZWdpc3RlcigpLiBGb3IgUFNFIGNvbnRyb2xsZXJzIHJlZ2lzdGVyZWQgYnlcbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jOjExNjk6ICogdGhpcyBmdW5jdGlvbiwgcHNlX2NvbnRyb2xsZXJfdW5yZWdpc3RlcigpIGlzIGF1dG9tYXRpY2FsbHkgY2FsbGVkIG9uXG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYy0xMTcwLSAqIGRyaXZlciBkZXRhY2guIFNlZSBwc2VfY29udHJvbGxlcl9yZWdpc3RlcigpIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDIxOjMyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxMTUKCQkJCQkJCW91dHB1dDogNzUKCQkJCQkJCXRob3VnaHRzOiAyNzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gmIzM5O3MgSW1wYWN0KioKCk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCwgaXQgc2VlbXMgdGhlIGNvcmUgaXNzdWUgcmV2b2x2ZXMgYXJvdW5kIHRoZSBgcHNlX2NvbnRyb2xsZXJfdW5yZWdpc3RlcmAgZnVuY3Rpb24gYmVpbmcgY2FsbGVkIGR1cmluZyBkcml2ZXIgZGV0YWNobWVudC4gVGhlIHBhdGNoIGFsdGVycyBzZXZlcmFsIGZ1bmN0aW9uczogYHBzZV9yZWxlYXNlX3Bpc2AsIGBwc2VfcGlfaXNfZW5hYmxlZGAsIGBwc2VfcGlfZW5hYmxlYCwgYHBzZV9waV9kaXNhYmxlYCwgYW5kLCBvZiBjb3Vyc2UsIGBwc2VfY29udHJvbGxlcl91bnJlZ2lzdGVyYCBpdHNlbGYuIEl04oCZcyBhbGwgYWJvdXQgdGhlIHRlYXJkb3duIHNlcXVlbmNlLCBzcGVjaWZpY2FsbHkgdW5yZWdpc3RlcmluZyB0aGUgY29udHJvbGxlci4gSG9sZCBvbiwgYHBzZV9waV9pc19lbmFibGVkYCwgYHBzZV9waV9lbmFibGVgLCBhbmQgYHBzZV9waV9kaXNhYmxlYCBhcmUgcmVndWxhdG9yIG9wZXJhdGlvbnMsIHdoaWNoIGlzIGludGVyZXN0aW5nLgoKVGhlIHBhdGNoIHNlZW1zIHRvIGJlIGFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24uIEl0IGFkZHMgYSBjcnVjaWFsIGNoZWNrOiBgaWYgKCFwY2Rldi0mZ3Q7cGkpYCB0byBoYW5kbGUgdGhlIHNjZW5hcmlvIHdoZXJlIHRoZSBjb250cm9sbGVyIGdldHMgdW5yZWdpc3RlcmVkICptaWQtdGVhcmRvd24qLiBUaGUgY29tbWVudHMgZXhwbGFpbiB0aGUgc2l0dWF0aW9uIHBlcmZlY3RseTogdGhlIGNvbnRyb2xsZXIgY291bGQgYmUgdW5yZWdpc3RlcmVkIGFuZCBgcGNkZXYtJmd0O3BpYCBmcmVlZCBkdXJpbmcgdGhlIHRlYXJkb3duIHByb2Nlc3MsIGFuZCB0aGF0IHRoaXMgY291bGQgYmUgcmVhY2hlZCB2aWEgdGhlIHJlZ3VsYXRvciBjb3JlJiMzOTtzIGRlZmVycmVkLWRpc2FibGUgZmx1c2ggYWZ0ZXIgYHBjZGV2LSZndDtwaWAgaXMgZnJlZWQuCgpUaGlzIHBlcmZlY3RseSBkZXNjcmliZXMgdGhlIHByb2JsZW0gc2NlbmFyaW86IGEgZHJpdmVy4oCZcyBgLnJlbW92ZWAsIGAuc2h1dGRvd25gLCBvciBgcGNpX3VucmVnaXN0ZXJfZHJpdmVyYCB0ZWFyZG93biBjYWxsYmFjayB0aGF0IGdldHMgZXhlY3V0ZWQgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCkkmIzM5O3ZlIGNvbmZpcm1lZCB0aGF0IHRoZSBwYXRjaCBpcyBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gdGhvc2UgdGVhci1kb3duIHJhY2UgY29uZGl0aW9ucy4gR2l2ZW4gdGhhdCB0aGUgY2hhbmdlcyBhcmUgaXNvbGF0ZWQgdG8gcHJldmVudGluZyBpc3N1ZXMgZHVyaW5nIGNvbnRyb2xsZXIgdW5yZWdpc3RyYXRpb24sIGFuZCB0aGV5IGZvY3VzIG9uIGVuc3VyaW5nIHRoYXQgd2UgZG9uJiMzOTt0IGFjY2VzcyBmcmVlZCBtZW1vcnksIEkmIzM5O20gZ29pbmcgdG8gY2F0ZWdvcml6ZSB0aGlzIGFzIG5vdCBiZWluZyB3b3J0aCBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDIxOjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBmaXhlcyByYWNlIGNvbmRpdGlvbnMgZHVyaW5nIGRyaXZlciB1bnJlZ2lzdHJhdGlvbiBhbmQgdGVhcmRvd24gKHBzZV9jb250cm9sbGVyX3VucmVnaXN0ZXIpLiBUaGVzZSBjb2RlIHBhdGhzIGFyZSBleGVjdXRlZCBkdXJpbmcgZHJpdmVyIHVuYmluZCBvciBkZXZpY2UgcmVtb3ZhbCwgd2hpY2ggZmFsbHMgdW5kZXIgdGhlIGV4Y2x1c2lvbiBjcml0ZXJpYSBmb3IgdGVhcmRvd24gY2FsbGJhY2tzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBmaXhlcyByYWNlIGNvbmRpdGlvbnMgZHVyaW5nIGRyaXZlciB1bnJlZ2lzdHJhdGlvbiBhbmQgdGVhcmRvd24gKHBzZV9jb250cm9sbGVyX3VucmVnaXN0ZXIpLiBUaGVzZSBjb2RlIHBhdGhzIGFyZSBleGVjdXRlZCBkdXJpbmcgZHJpdmVyIHVuYmluZCBvciBkZXZpY2UgcmVtb3ZhbCwgd2hpY2ggZmFsbHMgdW5kZXIgdGhlIGV4Y2x1c2lvbiBjcml0ZXJpYSBmb3IgdGVhcmRvd24gY2FsbGJhY2tzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAyMTozMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMTNUMjE6MzI6NTEuODg2MjgyNTE3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTExNDQzMDMwNjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGZpeGVzIHJhY2UgY29uZGl0aW9ucyBkdXJpbmcgZHJpdmVyIHVucmVnaXN0cmF0aW9uIGFuZCB0ZWFyZG93biAocHNlX2NvbnRyb2xsZXJfdW5yZWdpc3RlcikuIFRoZXNlIGNvZGUgcGF0aHMgYXJlIGV4ZWN1dGVkIGR1cmluZyBkcml2ZXIgdW5iaW5kIG9yIGRldmljZSByZW1vdmFsLCB3aGljaCBmYWxscyB1bmRlciB0aGUgZXhjbHVzaW9uIGNyaXRlcmlhIGZvciB0ZWFyZG93biBjYWxsYmFja3MuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QyMTozMjo1MS44ODYyOTA0ODdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MjQxMjExNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGIxY2Y1NmM2ZGQzNDFmMzc3Y2FmYmQzNWI2MzdlZGUyYjkyMTA1MzJcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBBdWcgMTMgMjE6MzI6NTAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmMgYi9kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuY1xcbmluZGV4IGE1ZTZkN2IyNmI5ZmQuLjJhOWEwN2RjOGM0ODEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmNcXG4rKysgYi9kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuY1xcbkBAIC0xNDQsNyArMTQ0LDEzIEBAIHN0YXRpYyB2b2lkIHBzZV9yZWxlYXNlX3BpcyhzdHJ1Y3QgcHNlX2NvbnRyb2xsZXJfZGV2ICpwY2RldilcXG4gXFx0XFx0b2Zfbm9kZV9wdXQocGNkZXYtXFx1MDAzZXBpW2ldLnBhaXJzZXRbMV0ubnApO1xcbiBcXHRcXHRvZl9ub2RlX3B1dChwY2Rldi1cXHUwMDNlcGlbaV0ubnApO1xcbiBcXHR9XFxuK1xcdC8qIEZyZWUgdW5kZXIgdGhlIGxvY2sgc28gdGhlIE5VTEwgc3RvcmUgaXMgYXV0aG9yaXRhdGl2ZSBhZ2FpbnN0XFxuK1xcdCAqIHRoZSByZWd1bGF0b3Igb3BzIHRoYXQgcmVhZCBwY2Rldi1cXHUwMDNlcGkgdW5kZXIgcGNkZXYtXFx1MDAzZWxvY2suXFxuK1xcdCAqL1xcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZwY2Rldi1cXHUwMDNlbG9jayk7XFxuIFxcdGtmcmVlKHBjZGV2LVxcdTAwM2VwaSk7XFxuK1xcdHBjZGV2LVxcdTAwM2VwaSA9IE5VTEw7XFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2cGNkZXYtXFx1MDAzZWxvY2spO1xcbiB9XFxuIFxcbiAvKipcXG5AQCAtNDIxLDYgKzQyNywxMSBAQCBzdGF0aWMgaW50IHBzZV9waV9pc19lbmFibGVkKHN0cnVjdCByZWd1bGF0b3JfZGV2ICpyZGV2KVxcbiBcXG4gXFx0aWQgPSByZGV2X2dldF9pZChyZGV2KTtcXG4gXFx0bXV0ZXhfbG9jayhcXHUwMDI2cGNkZXYtXFx1MDAzZWxvY2spO1xcbitcXHQvKiBDb250cm9sbGVyIG1heSBiZSB1bnJlZ2lzdGVyZWQgKHBjZGV2LVxcdTAwM2VwaSBmcmVlZCkgbWlkLXRlYXJkb3duLiAqL1xcbitcXHRpZiAoIXBjZGV2LVxcdTAwM2VwaSkge1xcbitcXHRcXHRyZXQgPSAtRU5PREVWO1xcbitcXHRcXHRnb3RvIG91dDtcXG4rXFx0fVxcbiBcXHRpZiAocHNlX3B3X2RfaXNfc3dfcHdfY29udHJvbChwY2RldiwgcGNkZXYtXFx1MDAzZXBpW2lkXS5wd19kKSkge1xcbiBcXHRcXHRyZXQgPSBwY2Rldi1cXHUwMDNlcGlbaWRdLmFkbWluX3N0YXRlX2VuYWJsZWQ7XFxuIFxcdFxcdGdvdG8gb3V0O1xcbkBAIC02NzQsNiArNjg1LDExIEBAIHN0YXRpYyBpbnQgcHNlX3BpX2VuYWJsZShzdHJ1Y3QgcmVndWxhdG9yX2RldiAqcmRldilcXG4gXFxuIFxcdGlkID0gcmRldl9nZXRfaWQocmRldik7XFxuIFxcdG11dGV4X2xvY2soXFx1MDAyNnBjZGV2LVxcdTAwM2Vsb2NrKTtcXG4rXFx0LyogQ29udHJvbGxlciBtYXkgYmUgdW5yZWdpc3RlcmVkIChwY2Rldi1cXHUwMDNlcGkgZnJlZWQpIG1pZC10ZWFyZG93bi4gKi9cXG4rXFx0aWYgKCFwY2Rldi1cXHUwMDNlcGkpIHtcXG4rXFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwY2Rldi1cXHUwMDNlbG9jayk7XFxuK1xcdFxcdHJldHVybiAtRU5PREVWO1xcbitcXHR9XFxuIFxcdGlmIChwc2VfcHdfZF9pc19zd19wd19jb250cm9sKHBjZGV2LCBwY2Rldi1cXHUwMDNlcGlbaWRdLnB3X2QpKSB7XFxuIFxcdFxcdC8qIE1hbmFnZSBlbmFibGVkIHN0YXR1cyBieSBzb2Z0d2FyZS5cXG4gXFx0XFx0ICogUmVhbCBlbmFibGUgcHJvY2VzcyB3aWxsIGhhcHBlbiBpZiBhIHBvcnQgaXMgY29ubmVjdGVkLlxcbkBAIC03MDIsMTUgKzcxOCwyMCBAQCBzdGF0aWMgaW50IHBzZV9waV9lbmFibGUoc3RydWN0IHJlZ3VsYXRvcl9kZXYgKnJkZXYpXFxuIHN0YXRpYyBpbnQgcHNlX3BpX2Rpc2FibGUoc3RydWN0IHJlZ3VsYXRvcl9kZXYgKnJkZXYpXFxuIHtcXG4gXFx0c3RydWN0IHBzZV9jb250cm9sbGVyX2RldiAqcGNkZXYgPSByZGV2X2dldF9kcnZkYXRhKHJkZXYpO1xcbi1cXHRzdHJ1Y3QgcHNlX3BpICpwaTtcXG4gXFx0aW50IGlkLCByZXQ7XFxuIFxcbiBcXHRpZCA9IHJkZXZfZ2V0X2lkKHJkZXYpO1xcbi1cXHRwaSA9IFxcdTAwMjZwY2Rldi1cXHUwMDNlcGlbaWRdO1xcbiBcXHRtdXRleF9sb2NrKFxcdTAwMjZwY2Rldi1cXHUwMDNlbG9jayk7XFxuK1xcdC8qIFJlYWNoZWQgdmlhIHRoZSByZWd1bGF0b3IgY29yZSdzIGRlZmVycmVkLWRpc2FibGUgZmx1c2ggYWZ0ZXJcXG4rXFx0ICogcGNkZXYtXFx1MDAzZXBpIGlzIGZyZWVkIG9uIHVucmVnaXN0ZXIuXFxuK1xcdCAqL1xcbitcXHRpZiAoIXBjZGV2LVxcdTAwM2VwaSkge1xcbitcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnBjZGV2LVxcdTAwM2Vsb2NrKTtcXG4rXFx0XFx0cmV0dXJuIDA7XFxuK1xcdH1cXG4gXFx0cmV0ID0gX3BzZV9waV9kaXNhYmxlKHBjZGV2LCBpZCk7XFxuIFxcdGlmICghcmV0KVxcbi1cXHRcXHRwaS1cXHUwMDNlYWRtaW5fc3RhdGVfZW5hYmxlZCA9IDA7XFxuK1xcdFxcdHBjZGV2LVxcdTAwM2VwaVtpZF0uYWRtaW5fc3RhdGVfZW5hYmxlZCA9IDA7XFxuIFxcbiBcXHRtdXRleF91bmxvY2soXFx1MDAyNnBjZGV2LVxcdTAwM2Vsb2NrKTtcXG4gXFx0cmV0dXJuIDA7XFxuQEAgLTExMTQsMTUgKzExMzUsMjMgQEAgRVhQT1JUX1NZTUJPTF9HUEwocHNlX2NvbnRyb2xsZXJfcmVnaXN0ZXIpO1xcbiAgKi9cXG4gdm9pZCBwc2VfY29udHJvbGxlcl91bnJlZ2lzdGVyKHN0cnVjdCBwc2VfY29udHJvbGxlcl9kZXYgKnBjZGV2KVxcbiB7XFxuLVxcdHBzZV9mbHVzaF9wd19kcyhwY2Rldik7XFxuLVxcdHBzZV9yZWxlYXNlX3BpcyhwY2Rldik7XFxuK1xcdC8qIFN0b3AgdGhlIElSUSBhbmQgbm90aWZpY2F0aW9uIHdvcmtlciBiZWZvcmUgZnJlZWluZyB3aGF0IHRoZXlcXG4rXFx0ICogcmVhY2g6IGJvdGggdG91Y2ggcGNkZXYtXFx1MDAzZXBpLCBhbmQgdGhlIElSUSBhbHNvIHVzZXMgcHdfZC1cXHUwMDNlc3VwcGx5XFxuK1xcdCAqIHRoYXQgcHNlX2ZsdXNoX3B3X2RzKCkgZHJvcHMuXFxuK1xcdCAqL1xcbiBcXHRpZiAocGNkZXYtXFx1MDAzZWlycSlcXG4gXFx0XFx0ZGlzYWJsZV9pcnEocGNkZXYtXFx1MDAzZWlycSk7XFxuIFxcdGNhbmNlbF93b3JrX3N5bmMoXFx1MDAyNnBjZGV2LVxcdTAwM2VudGZfd29yayk7XFxuLVxcdGtmaWZvX2ZyZWUoXFx1MDAyNnBjZGV2LVxcdTAwM2VudGZfZmlmbyk7XFxuK1xcdHBzZV9mbHVzaF9wd19kcyhwY2Rldik7XFxuK1xcdC8qIFVubGluayBiZWZvcmUgZnJlZWluZyBwY2Rldi1cXHUwMDNlcGk6IG9mX3BzZV9jb250cm9sX2dldCgpIHdhbGtzIHRoZVxcbitcXHQgKiBsaXN0IHVuZGVyIHBzZV9saXN0X211dGV4IGFuZCBkZXJlZmVyZW5jZXMgcGNkZXYtXFx1MDAzZXBpW10gdmlhXFxuK1xcdCAqIG9mX3BzZV9tYXRjaF9waSgpLCBzbyBhIGxvb2t1cCBtdXN0IG5ldmVyIHJlYWNoIGEgZnJlZWQgYXJyYXkuXFxuK1xcdCAqL1xcbiBcXHRtdXRleF9sb2NrKFxcdTAwMjZwc2VfbGlzdF9tdXRleCk7XFxuIFxcdGxpc3RfZGVsKFxcdTAwMjZwY2Rldi1cXHUwMDNlbGlzdCk7XFxuIFxcdG11dGV4X3VubG9jayhcXHUwMDI2cHNlX2xpc3RfbXV0ZXgpO1xcbitcXHRwc2VfcmVsZWFzZV9waXMocGNkZXYpO1xcbitcXHRrZmlmb19mcmVlKFxcdTAwMjZwY2Rldi1cXHUwMDNlbnRmX2ZpZm8pO1xcbiB9XFxuIEVYUE9SVF9TWU1CT0xfR1BMKHBzZV9jb250cm9sbGVyX3VucmVnaXN0ZXIpO1xcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMjE6MzI6NTIuMzU5NDgzNDgzWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTA2NzEwODY1MzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgZml4ZXMgcmFjZSBjb25kaXRpb25zIGR1cmluZyBkcml2ZXIgdW5yZWdpc3RyYXRpb24gYW5kIHRlYXJkb3duIChwc2VfY29udHJvbGxlcl91bnJlZ2lzdGVyKS4gVGhlc2UgY29kZSBwYXRocyBhcmUgZXhlY3V0ZWQgZHVyaW5nIGRyaXZlciB1bmJpbmQgb3IgZGV2aWNlIHJlbW92YWwsIHdoaWNoIGZhbGxzIHVuZGVyIHRoZSBleGNsdXNpb24gY3JpdGVyaWEgZm9yIHRlYXJkb3duIGNhbGxiYWNrcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGIxY2Y1NmM2ZGQzNDFmMzc3Y2FmYmQzNWI2MzdlZGUyYjkyMTA1MzJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyAxMyAyMTozMjo1MCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jIGIvZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmNcbmluZGV4IGE1ZTZkN2IyNmI5ZmQuLjJhOWEwN2RjOGM0ODEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuY1xuKysrIGIvZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmNcbkBAIC0xNDQsNyArMTQ0LDEzIEBAIHN0YXRpYyB2b2lkIHBzZV9yZWxlYXNlX3BpcyhzdHJ1Y3QgcHNlX2NvbnRyb2xsZXJfZGV2ICpwY2RldilcbiBcdFx0b2Zfbm9kZV9wdXQocGNkZXYtXHUwMDNlcGlbaV0ucGFpcnNldFsxXS5ucCk7XG4gXHRcdG9mX25vZGVfcHV0KHBjZGV2LVx1MDAzZXBpW2ldLm5wKTtcbiBcdH1cbitcdC8qIEZyZWUgdW5kZXIgdGhlIGxvY2sgc28gdGhlIE5VTEwgc3RvcmUgaXMgYXV0aG9yaXRhdGl2ZSBhZ2FpbnN0XG4rXHQgKiB0aGUgcmVndWxhdG9yIG9wcyB0aGF0IHJlYWQgcGNkZXYtXHUwMDNlcGkgdW5kZXIgcGNkZXYtXHUwMDNlbG9jay5cbitcdCAqL1xuK1x0bXV0ZXhfbG9jayhcdTAwMjZwY2Rldi1cdTAwM2Vsb2NrKTtcbiBcdGtmcmVlKHBjZGV2LVx1MDAzZXBpKTtcbitcdHBjZGV2LVx1MDAzZXBpID0gTlVMTDtcbitcdG11dGV4X3VubG9jayhcdTAwMjZwY2Rldi1cdTAwM2Vsb2NrKTtcbiB9XG4gXG4gLyoqXG5AQCAtNDIxLDYgKzQyNywxMSBAQCBzdGF0aWMgaW50IHBzZV9waV9pc19lbmFibGVkKHN0cnVjdCByZWd1bGF0b3JfZGV2ICpyZGV2KVxuIFxuIFx0aWQgPSByZGV2X2dldF9pZChyZGV2KTtcbiBcdG11dGV4X2xvY2soXHUwMDI2cGNkZXYtXHUwMDNlbG9jayk7XG4rXHQvKiBDb250cm9sbGVyIG1heSBiZSB1bnJlZ2lzdGVyZWQgKHBjZGV2LVx1MDAzZXBpIGZyZWVkKSBtaWQtdGVhcmRvd24uICovXG4rXHRpZiAoIXBjZGV2LVx1MDAzZXBpKSB7XG4rXHRcdHJldCA9IC1FTk9ERVY7XG4rXHRcdGdvdG8gb3V0O1xuK1x0fVxuIFx0aWYgKHBzZV9wd19kX2lzX3N3X3B3X2NvbnRyb2wocGNkZXYsIHBjZGV2LVx1MDAzZXBpW2lkXS5wd19kKSkge1xuIFx0XHRyZXQgPSBwY2Rldi1cdTAwM2VwaVtpZF0uYWRtaW5fc3RhdGVfZW5hYmxlZDtcbiBcdFx0Z290byBvdXQ7XG5AQCAtNjc0LDYgKzY4NSwxMSBAQCBzdGF0aWMgaW50IHBzZV9waV9lbmFibGUoc3RydWN0IHJlZ3VsYXRvcl9kZXYgKnJkZXYpXG4gXG4gXHRpZCA9IHJkZXZfZ2V0X2lkKHJkZXYpO1xuIFx0bXV0ZXhfbG9jayhcdTAwMjZwY2Rldi1cdTAwM2Vsb2NrKTtcbitcdC8qIENvbnRyb2xsZXIgbWF5IGJlIHVucmVnaXN0ZXJlZCAocGNkZXYtXHUwMDNlcGkgZnJlZWQpIG1pZC10ZWFyZG93bi4gKi9cbitcdGlmICghcGNkZXYtXHUwMDNlcGkpIHtcbitcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBjZGV2LVx1MDAzZWxvY2spO1xuK1x0XHRyZXR1cm4gLUVOT0RFVjtcbitcdH1cbiBcdGlmIChwc2VfcHdfZF9pc19zd19wd19jb250cm9sKHBjZGV2LCBwY2Rldi1cdTAwM2VwaVtpZF0ucHdfZCkpIHtcbiBcdFx0LyogTWFuYWdlIGVuYWJsZWQgc3RhdHVzIGJ5IHNvZnR3YXJlLlxuIFx0XHQgKiBSZWFsIGVuYWJsZSBwcm9jZXNzIHdpbGwgaGFwcGVuIGlmIGEgcG9ydCBpcyBjb25uZWN0ZWQuXG5AQCAtNzAyLDE1ICs3MTgsMjAgQEAgc3RhdGljIGludCBwc2VfcGlfZW5hYmxlKHN0cnVjdCByZWd1bGF0b3JfZGV2ICpyZGV2KVxuIHN0YXRpYyBpbnQgcHNlX3BpX2Rpc2FibGUoc3RydWN0IHJlZ3VsYXRvcl9kZXYgKnJkZXYpXG4ge1xuIFx0c3RydWN0IHBzZV9jb250cm9sbGVyX2RldiAqcGNkZXYgPSByZGV2X2dldF9kcnZkYXRhKHJkZXYpO1xuLVx0c3RydWN0IHBzZV9waSAqcGk7XG4gXHRpbnQgaWQsIHJldDtcbiBcbiBcdGlkID0gcmRldl9nZXRfaWQocmRldik7XG4tXHRwaSA9IFx1MDAyNnBjZGV2LVx1MDAzZXBpW2lkXTtcbiBcdG11dGV4X2xvY2soXHUwMDI2cGNkZXYtXHUwMDNlbG9jayk7XG4rXHQvKiBSZWFjaGVkIHZpYSB0aGUgcmVndWxhdG9yIGNvcmUncyBkZWZlcnJlZC1kaXNhYmxlIGZsdXNoIGFmdGVyXG4rXHQgKiBwY2Rldi1cdTAwM2VwaSBpcyBmcmVlZCBvbiB1bnJlZ2lzdGVyLlxuK1x0ICovXG4rXHRpZiAoIXBjZGV2LVx1MDAzZXBpKSB7XG4rXHRcdG11dGV4X3VubG9jayhcdTAwMjZwY2Rldi1cdTAwM2Vsb2NrKTtcbitcdFx0cmV0dXJuIDA7XG4rXHR9XG4gXHRyZXQgPSBfcHNlX3BpX2Rpc2FibGUocGNkZXYsIGlkKTtcbiBcdGlmICghcmV0KVxuLVx0XHRwaS1cdTAwM2VhZG1pbl9zdGF0ZV9lbmFibGVkID0gMDtcbitcdFx0cGNkZXYtXHUwMDNlcGlbaWRdLmFkbWluX3N0YXRlX2VuYWJsZWQgPSAwO1xuIFxuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBjZGV2LVx1MDAzZWxvY2spO1xuIFx0cmV0dXJuIDA7XG5AQCAtMTExNCwxNSArMTEzNSwyMyBAQCBFWFBPUlRfU1lNQk9MX0dQTChwc2VfY29udHJvbGxlcl9yZWdpc3Rlcik7XG4gICovXG4gdm9pZCBwc2VfY29udHJvbGxlcl91bnJlZ2lzdGVyKHN0cnVjdCBwc2VfY29udHJvbGxlcl9kZXYgKnBjZGV2KVxuIHtcbi1cdHBzZV9mbHVzaF9wd19kcyhwY2Rldik7XG4tXHRwc2VfcmVsZWFzZV9waXMocGNkZXYpO1xuK1x0LyogU3RvcCB0aGUgSVJRIGFuZCBub3RpZmljYXRpb24gd29ya2VyIGJlZm9yZSBmcmVlaW5nIHdoYXQgdGhleVxuK1x0ICogcmVhY2g6IGJvdGggdG91Y2ggcGNkZXYtXHUwMDNlcGksIGFuZCB0aGUgSVJRIGFsc28gdXNlcyBwd19kLVx1MDAzZXN1cHBseVxuK1x0ICogdGhhdCBwc2VfZmx1c2hfcHdfZHMoKSBkcm9wcy5cbitcdCAqL1xuIFx0aWYgKHBjZGV2LVx1MDAzZWlycSlcbiBcdFx0ZGlzYWJsZV9pcnEocGNkZXYtXHUwMDNlaXJxKTtcbiBcdGNhbmNlbF93b3JrX3N5bmMoXHUwMDI2cGNkZXYtXHUwMDNlbnRmX3dvcmspO1xuLVx0a2ZpZm9fZnJlZShcdTAwMjZwY2Rldi1cdTAwM2VudGZfZmlmbyk7XG4rXHRwc2VfZmx1c2hfcHdfZHMocGNkZXYpO1xuK1x0LyogVW5saW5rIGJlZm9yZSBmcmVlaW5nIHBjZGV2LVx1MDAzZXBpOiBvZl9wc2VfY29udHJvbF9nZXQoKSB3YWxrcyB0aGVcbitcdCAqIGxpc3QgdW5kZXIgcHNlX2xpc3RfbXV0ZXggYW5kIGRlcmVmZXJlbmNlcyBwY2Rldi1cdTAwM2VwaVtdIHZpYVxuK1x0ICogb2ZfcHNlX21hdGNoX3BpKCksIHNvIGEgbG9va3VwIG11c3QgbmV2ZXIgcmVhY2ggYSBmcmVlZCBhcnJheS5cbitcdCAqL1xuIFx0bXV0ZXhfbG9jayhcdTAwMjZwc2VfbGlzdF9tdXRleCk7XG4gXHRsaXN0X2RlbChcdTAwMjZwY2Rldi1cdTAwM2VsaXN0KTtcbiBcdG11dGV4X3VubG9jayhcdTAwMjZwc2VfbGlzdF9tdXRleCk7XG4rXHRwc2VfcmVsZWFzZV9waXMocGNkZXYpO1xuK1x0a2ZpZm9fZnJlZShcdTAwMjZwY2Rldi1cdTAwM2VudGZfZmlmbyk7XG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKHBzZV9jb250cm9sbGVyX3VucmVnaXN0ZXIpO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMjE6MzI6NTIuMzU5NDg1MjQzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDY3NTE4NDkyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBOZXR3b3JrIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuY2AuIFNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2ggYXQgZmlyc3QgZ2xhbmNlIOKAkyBpdCdzIGFkZGluZyBhIGZldyBgTlVMTGAgY2hlY2tzIGZvciBgcGNkZXYtXHUwMDNlcGlgIGluIGBwc2VfcGlfaXNfZW5hYmxlZGAsIGBwc2VfcGlfZW5hYmxlYCwgYW5kIGBwc2VfcGlfZGlzYWJsZWAuIFNtYXJ0IG1vdmU7IGFsd2F5cyBnb29kIHRvIGJlIHJvYnVzdC4gQW5kIGl0J3MgYWxzbyBzZXR0aW5nIGBwY2Rldi1cdTAwM2VwaSA9IE5VTExgIHdpdGhpbiBhIGxvY2sgaW4gYHBzZV9yZWxlYXNlX3Bpc2AsIGFuZCB0aGVuIHJlb3JkZXJpbmcgc29tZSBzdHVmZiBpbiBgcHNlX2NvbnRyb2xsZXJfdW5yZWdpc3RlcmAuIERlZmluaXRlbHkgc21lbGxzIGxpa2UgYSByYWNlIGNvbmRpdGlvbiBmaXggcmVsYXRlZCB0byB0ZWFyZG93biBvciB1bnJlZ2lzdGVyaW5nLCBhcyBJIHN1c3BlY3RlZC5cblxuTm93LCB0aGlzIGlzIHdoZXJlIGl0IGdldHMgaW50ZXJlc3RpbmcsIGJlY2F1c2UgdGhlIGluc3RydWN0aW9ucyBhcmUgdGVsbGluZyBtZSB3aGV0aGVyIHRoaXMgcGF0Y2ggaXMgd29ydGggZnV6emluZy4gSXQgc2F5cyB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgaXQgKm9ubHkqIGNvbnRhaW5zIGNoYW5nZXMgaW4gZHJpdmVyIGAucmVtb3ZlYCwgYC5zaHV0ZG93bmAsIG9yIGBwY2lfdW5yZWdpc3Rlcl9kcml2ZXJgIHRlYXJkb3duIGNhbGxiYWNrcyB0aGF0IGFyZSBleGVjdXRlZCBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5IYW5nIG9uIGEgc2Vjb25k4oCmIGBwc2VfY29udHJvbGxlcl91bnJlZ2lzdGVyYC4uLiB0aGF0ICppcyogYSB0ZWFyZG93biBjYWxsYmFjaywgaXNuJ3QgaXQ/IExldCBtZSBjaGVjayB3aGVyZSB0aGF0IGZ1bmN0aW9uIGlzIGFjdHVhbGx5IGNhbGxlZC4gR290dGEgbWFrZSBzdXJlIGl0ICpvbmx5KiBydW5zIGR1cmluZyB0aGUgaG90LXVucGx1ZyBvciB1bmJpbmQgb3BlcmF0aW9ucyB0byBnaXZlIGEgZGVmaW5pdGl2ZSBhbnN3ZXIgYWJvdXQgZnV6emluZy4gU28sIGxldCBtZSBnbyBjaGVjayB0aGUgY2FsbCBzaXRlcyBmb3IgdGhpcyBmdW5jdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA0NywiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxOSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDIxOjMyOjU3LjAzNDY3MjkyNVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzAyOTQwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwc2VfY29udHJvbGxlcl91bnJlZ2lzdGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BzZS1wZC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmM9MTEzMD1FWFBPUlRfU1lNQk9MX0dQTChwc2VfY29udHJvbGxlcl9yZWdpc3Rlcik7XFxuLS1cXG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYy0xMTMyLS8qKlxcbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jOjExMzM6ICogcHNlX2NvbnRyb2xsZXJfdW5yZWdpc3RlciAtIHVucmVnaXN0ZXIgYSBQU0UgY29udHJvbGxlciBkZXZpY2VcXG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYy0xMTM0LSAqIEBwY2RldjogYSBwb2ludGVyIHRvIHRoZSBQU0UgY29udHJvbGxlciBkZXZpY2VcXG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYy0xMTM1LSAqL1xcbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jOjExMzY6dm9pZCBwc2VfY29udHJvbGxlcl91bnJlZ2lzdGVyKHN0cnVjdCBwc2VfY29udHJvbGxlcl9kZXYgKnBjZGV2KVxcbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jLTExMzcte1xcbi0tXFxuZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmMtMTE1NS19XFxuZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmM6MTE1NjpFWFBPUlRfU1lNQk9MX0dQTChwc2VfY29udHJvbGxlcl91bnJlZ2lzdGVyKTtcXG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYy0xMTU3LVxcbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jPTExNTg9c3RhdGljIHZvaWQgZGV2bV9wc2VfY29udHJvbGxlcl9yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqcmVzKVxcbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jLTExNTkte1xcbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jOjExNjA6XFx0cHNlX2NvbnRyb2xsZXJfdW5yZWdpc3RlcigqKHN0cnVjdCBwc2VfY29udHJvbGxlcl9kZXYgKiopcmVzKTtcXG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYy0xMTYxLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jLTExNjgtICogTWFuYWdlZCBwc2VfY29udHJvbGxlcl9yZWdpc3RlcigpLiBGb3IgUFNFIGNvbnRyb2xsZXJzIHJlZ2lzdGVyZWQgYnlcXG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYzoxMTY5OiAqIHRoaXMgZnVuY3Rpb24sIHBzZV9jb250cm9sbGVyX3VucmVnaXN0ZXIoKSBpcyBhdXRvbWF0aWNhbGx5IGNhbGxlZCBvblxcbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jLTExNzAtICogZHJpdmVyIGRldGFjaC4gU2VlIHBzZV9jb250cm9sbGVyX3JlZ2lzdGVyKCkgZm9yIG1vcmUgaW5mb3JtYXRpb24uXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDIxOjMyOjU3LjA4MTcwNzU0NFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5NDg4MzE1NDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gncyBJbXBhY3QqKlxuXG5Pa2F5LCBzbyBsb29raW5nIGF0IHRoaXMgcGF0Y2gsIGl0IHNlZW1zIHRoZSBjb3JlIGlzc3VlIHJldm9sdmVzIGFyb3VuZCB0aGUgYHBzZV9jb250cm9sbGVyX3VucmVnaXN0ZXJgIGZ1bmN0aW9uIGJlaW5nIGNhbGxlZCBkdXJpbmcgZHJpdmVyIGRldGFjaG1lbnQuIFRoZSBwYXRjaCBhbHRlcnMgc2V2ZXJhbCBmdW5jdGlvbnM6IGBwc2VfcmVsZWFzZV9waXNgLCBgcHNlX3BpX2lzX2VuYWJsZWRgLCBgcHNlX3BpX2VuYWJsZWAsIGBwc2VfcGlfZGlzYWJsZWAsIGFuZCwgb2YgY291cnNlLCBgcHNlX2NvbnRyb2xsZXJfdW5yZWdpc3RlcmAgaXRzZWxmLiBJdOKAmXMgYWxsIGFib3V0IHRoZSB0ZWFyZG93biBzZXF1ZW5jZSwgc3BlY2lmaWNhbGx5IHVucmVnaXN0ZXJpbmcgdGhlIGNvbnRyb2xsZXIuIEhvbGQgb24sIGBwc2VfcGlfaXNfZW5hYmxlZGAsIGBwc2VfcGlfZW5hYmxlYCwgYW5kIGBwc2VfcGlfZGlzYWJsZWAgYXJlIHJlZ3VsYXRvciBvcGVyYXRpb25zLCB3aGljaCBpcyBpbnRlcmVzdGluZy5cblxuVGhlIHBhdGNoIHNlZW1zIHRvIGJlIGFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24uIEl0IGFkZHMgYSBjcnVjaWFsIGNoZWNrOiBgaWYgKCFwY2Rldi1cdTAwM2VwaSlgIHRvIGhhbmRsZSB0aGUgc2NlbmFyaW8gd2hlcmUgdGhlIGNvbnRyb2xsZXIgZ2V0cyB1bnJlZ2lzdGVyZWQgKm1pZC10ZWFyZG93biouIFRoZSBjb21tZW50cyBleHBsYWluIHRoZSBzaXR1YXRpb24gcGVyZmVjdGx5OiB0aGUgY29udHJvbGxlciBjb3VsZCBiZSB1bnJlZ2lzdGVyZWQgYW5kIGBwY2Rldi1cdTAwM2VwaWAgZnJlZWQgZHVyaW5nIHRoZSB0ZWFyZG93biBwcm9jZXNzLCBhbmQgdGhhdCB0aGlzIGNvdWxkIGJlIHJlYWNoZWQgdmlhIHRoZSByZWd1bGF0b3IgY29yZSdzIGRlZmVycmVkLWRpc2FibGUgZmx1c2ggYWZ0ZXIgYHBjZGV2LVx1MDAzZXBpYCBpcyBmcmVlZC5cblxuVGhpcyBwZXJmZWN0bHkgZGVzY3JpYmVzIHRoZSBwcm9ibGVtIHNjZW5hcmlvOiBhIGRyaXZlcuKAmXMgYC5yZW1vdmVgLCBgLnNodXRkb3duYCwgb3IgYHBjaV91bnJlZ2lzdGVyX2RyaXZlcmAgdGVhcmRvd24gY2FsbGJhY2sgdGhhdCBnZXRzIGV4ZWN1dGVkIGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbkkndmUgY29uZmlybWVkIHRoYXQgdGhlIHBhdGNoIGlzIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiB0aG9zZSB0ZWFyLWRvd24gcmFjZSBjb25kaXRpb25zLiBHaXZlbiB0aGF0IHRoZSBjaGFuZ2VzIGFyZSBpc29sYXRlZCB0byBwcmV2ZW50aW5nIGlzc3VlcyBkdXJpbmcgY29udHJvbGxlciB1bnJlZ2lzdHJhdGlvbiwgYW5kIHRoZXkgZm9jdXMgb24gZW5zdXJpbmcgdGhhdCB3ZSBkb24ndCBhY2Nlc3MgZnJlZWQgbWVtb3J5LCBJJ20gZ29pbmcgdG8gY2F0ZWdvcml6ZSB0aGlzIGFzIG5vdCBiZWluZyB3b3J0aCBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTE1LCJPdXRwdXRUb2tlbnMiOjc1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjc3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDIxOjMzOjAzLjAzMDU0MzAwOFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ5NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBmaXhlcyByYWNlIGNvbmRpdGlvbnMgZHVyaW5nIGRyaXZlciB1bnJlZ2lzdHJhdGlvbiBhbmQgdGVhcmRvd24gKHBzZV9jb250cm9sbGVyX3VucmVnaXN0ZXIpLiBUaGVzZSBjb2RlIHBhdGhzIGFyZSBleGVjdXRlZCBkdXJpbmcgZHJpdmVyIHVuYmluZCBvciBkZXZpY2UgcmVtb3ZhbCwgd2hpY2ggZmFsbHMgdW5kZXIgdGhlIGV4Y2x1c2lvbiBjcml0ZXJpYSBmb3IgdGVhcmRvd24gY2FsbGJhY2tzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBmaXhlcyByYWNlIGNvbmRpdGlvbnMgZHVyaW5nIGRyaXZlciB1bnJlZ2lzdHJhdGlvbiBhbmQgdGVhcmRvd24gKHBzZV9jb250cm9sbGVyX3VucmVnaXN0ZXIpLiBUaGVzZSBjb2RlIHBhdGhzIGFyZSBleGVjdXRlZCBkdXJpbmcgZHJpdmVyIHVuYmluZCBvciBkZXZpY2UgcmVtb3ZhbCwgd2hpY2ggZmFsbHMgdW5kZXIgdGhlIGV4Y2x1c2lvbiBjcml0ZXJpYSBmb3IgdGVhcmRvd24gY2FsbGJhY2tzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMjE6MzM6MDMuMDMwNTcyNjc4WiIsIlNlcSI6NywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflownw79j[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-13 21:12:25 +0000 UTC FinishedAt: 2026-08-13 21:33:03 +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+CgkJCTx0ZD4yMDI2LzA4LzEzIDIxOjMyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBmaXhlcyByYWNlIGNvbmRpdGlvbnMgZHVyaW5nIGRyaXZlciB1bnJlZ2lzdHJhdGlvbiBhbmQgdGVhcmRvd24gKHBzZV9jb250cm9sbGVyX3VucmVnaXN0ZXIpLiBUaGVzZSBjb2RlIHBhdGhzIGFyZSBleGVjdXRlZCBkdXJpbmcgZHJpdmVyIHVuYmluZCBvciBkZXZpY2UgcmVtb3ZhbCwgd2hpY2ggZmFsbHMgdW5kZXIgdGhlIGV4Y2x1c2lvbiBjcml0ZXJpYSBmb3IgdGVhcmRvd24gY2FsbGJhY2tzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAyMTozMjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGIxY2Y1NmM2ZGQzNDFmMzc3Y2FmYmQzNWI2MzdlZGUyYjkyMTA1MzJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyAxMyAyMTozMjo1MCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYyBiL2RyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jXG5pbmRleCBhNWU2ZDdiMjZiOWZkLi4yYTlhMDdkYzhjNDgxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jXG5AQCAtMTQ0LDcgJiM0MzsxNDQsMTMgQEAgc3RhdGljIHZvaWQgcHNlX3JlbGVhc2VfcGlzKHN0cnVjdCBwc2VfY29udHJvbGxlcl9kZXYgKnBjZGV2KVxuIFx0XHRvZl9ub2RlX3B1dChwY2Rldi1cdTAwM2VwaVtpXS5wYWlyc2V0WzFdLm5wKTtcbiBcdFx0b2Zfbm9kZV9wdXQocGNkZXYtXHUwMDNlcGlbaV0ubnApO1xuIFx0fVxuJiM0MztcdC8qIEZyZWUgdW5kZXIgdGhlIGxvY2sgc28gdGhlIE5VTEwgc3RvcmUgaXMgYXV0aG9yaXRhdGl2ZSBhZ2FpbnN0XG4mIzQzO1x0ICogdGhlIHJlZ3VsYXRvciBvcHMgdGhhdCByZWFkIHBjZGV2LVx1MDAzZXBpIHVuZGVyIHBjZGV2LVx1MDAzZWxvY2suXG4mIzQzO1x0ICovXG4mIzQzO1x0bXV0ZXhfbG9jayhcdTAwMjZwY2Rldi1cdTAwM2Vsb2NrKTtcbiBcdGtmcmVlKHBjZGV2LVx1MDAzZXBpKTtcbiYjNDM7XHRwY2Rldi1cdTAwM2VwaSA9IE5VTEw7XG4mIzQzO1x0bXV0ZXhfdW5sb2NrKFx1MDAyNnBjZGV2LVx1MDAzZWxvY2spO1xuIH1cbiBcbiAvKipcbkBAIC00MjEsNiAmIzQzOzQyNywxMSBAQCBzdGF0aWMgaW50IHBzZV9waV9pc19lbmFibGVkKHN0cnVjdCByZWd1bGF0b3JfZGV2ICpyZGV2KVxuIFxuIFx0aWQgPSByZGV2X2dldF9pZChyZGV2KTtcbiBcdG11dGV4X2xvY2soXHUwMDI2cGNkZXYtXHUwMDNlbG9jayk7XG4mIzQzO1x0LyogQ29udHJvbGxlciBtYXkgYmUgdW5yZWdpc3RlcmVkIChwY2Rldi1cdTAwM2VwaSBmcmVlZCkgbWlkLXRlYXJkb3duLiAqL1xuJiM0MztcdGlmICghcGNkZXYtXHUwMDNlcGkpIHtcbiYjNDM7XHRcdHJldCA9IC1FTk9ERVY7XG4mIzQzO1x0XHRnb3RvIG91dDtcbiYjNDM7XHR9XG4gXHRpZiAocHNlX3B3X2RfaXNfc3dfcHdfY29udHJvbChwY2RldiwgcGNkZXYtXHUwMDNlcGlbaWRdLnB3X2QpKSB7XG4gXHRcdHJldCA9IHBjZGV2LVx1MDAzZXBpW2lkXS5hZG1pbl9zdGF0ZV9lbmFibGVkO1xuIFx0XHRnb3RvIG91dDtcbkBAIC02NzQsNiAmIzQzOzY4NSwxMSBAQCBzdGF0aWMgaW50IHBzZV9waV9lbmFibGUoc3RydWN0IHJlZ3VsYXRvcl9kZXYgKnJkZXYpXG4gXG4gXHRpZCA9IHJkZXZfZ2V0X2lkKHJkZXYpO1xuIFx0bXV0ZXhfbG9jayhcdTAwMjZwY2Rldi1cdTAwM2Vsb2NrKTtcbiYjNDM7XHQvKiBDb250cm9sbGVyIG1heSBiZSB1bnJlZ2lzdGVyZWQgKHBjZGV2LVx1MDAzZXBpIGZyZWVkKSBtaWQtdGVhcmRvd24uICovXG4mIzQzO1x0aWYgKCFwY2Rldi1cdTAwM2VwaSkge1xuJiM0MztcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBjZGV2LVx1MDAzZWxvY2spO1xuJiM0MztcdFx0cmV0dXJuIC1FTk9ERVY7XG4mIzQzO1x0fVxuIFx0aWYgKHBzZV9wd19kX2lzX3N3X3B3X2NvbnRyb2wocGNkZXYsIHBjZGV2LVx1MDAzZXBpW2lkXS5wd19kKSkge1xuIFx0XHQvKiBNYW5hZ2UgZW5hYmxlZCBzdGF0dXMgYnkgc29mdHdhcmUuXG4gXHRcdCAqIFJlYWwgZW5hYmxlIHByb2Nlc3Mgd2lsbCBoYXBwZW4gaWYgYSBwb3J0IGlzIGNvbm5lY3RlZC5cbkBAIC03MDIsMTUgJiM0Mzs3MTgsMjAgQEAgc3RhdGljIGludCBwc2VfcGlfZW5hYmxlKHN0cnVjdCByZWd1bGF0b3JfZGV2ICpyZGV2KVxuIHN0YXRpYyBpbnQgcHNlX3BpX2Rpc2FibGUoc3RydWN0IHJlZ3VsYXRvcl9kZXYgKnJkZXYpXG4ge1xuIFx0c3RydWN0IHBzZV9jb250cm9sbGVyX2RldiAqcGNkZXYgPSByZGV2X2dldF9kcnZkYXRhKHJkZXYpO1xuLVx0c3RydWN0IHBzZV9waSAqcGk7XG4gXHRpbnQgaWQsIHJldDtcbiBcbiBcdGlkID0gcmRldl9nZXRfaWQocmRldik7XG4tXHRwaSA9IFx1MDAyNnBjZGV2LVx1MDAzZXBpW2lkXTtcbiBcdG11dGV4X2xvY2soXHUwMDI2cGNkZXYtXHUwMDNlbG9jayk7XG4mIzQzO1x0LyogUmVhY2hlZCB2aWEgdGhlIHJlZ3VsYXRvciBjb3JlJiMzOTtzIGRlZmVycmVkLWRpc2FibGUgZmx1c2ggYWZ0ZXJcbiYjNDM7XHQgKiBwY2Rldi1cdTAwM2VwaSBpcyBmcmVlZCBvbiB1bnJlZ2lzdGVyLlxuJiM0MztcdCAqL1xuJiM0MztcdGlmICghcGNkZXYtXHUwMDNlcGkpIHtcbiYjNDM7XHRcdG11dGV4X3VubG9jayhcdTAwMjZwY2Rldi1cdTAwM2Vsb2NrKTtcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcdH1cbiBcdHJldCA9IF9wc2VfcGlfZGlzYWJsZShwY2RldiwgaWQpO1xuIFx0aWYgKCFyZXQpXG4tXHRcdHBpLVx1MDAzZWFkbWluX3N0YXRlX2VuYWJsZWQgPSAwO1xuJiM0MztcdFx0cGNkZXYtXHUwMDNlcGlbaWRdLmFkbWluX3N0YXRlX2VuYWJsZWQgPSAwO1xuIFxuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBjZGV2LVx1MDAzZWxvY2spO1xuIFx0cmV0dXJuIDA7XG5AQCAtMTExNCwxNSAmIzQzOzExMzUsMjMgQEAgRVhQT1JUX1NZTUJPTF9HUEwocHNlX2NvbnRyb2xsZXJfcmVnaXN0ZXIpO1xuICAqL1xuIHZvaWQgcHNlX2NvbnRyb2xsZXJfdW5yZWdpc3RlcihzdHJ1Y3QgcHNlX2NvbnRyb2xsZXJfZGV2ICpwY2RldilcbiB7XG4tXHRwc2VfZmx1c2hfcHdfZHMocGNkZXYpO1xuLVx0cHNlX3JlbGVhc2VfcGlzKHBjZGV2KTtcbiYjNDM7XHQvKiBTdG9wIHRoZSBJUlEgYW5kIG5vdGlmaWNhdGlvbiB3b3JrZXIgYmVmb3JlIGZyZWVpbmcgd2hhdCB0aGV5XG4mIzQzO1x0ICogcmVhY2g6IGJvdGggdG91Y2ggcGNkZXYtXHUwMDNlcGksIGFuZCB0aGUgSVJRIGFsc28gdXNlcyBwd19kLVx1MDAzZXN1cHBseVxuJiM0MztcdCAqIHRoYXQgcHNlX2ZsdXNoX3B3X2RzKCkgZHJvcHMuXG4mIzQzO1x0ICovXG4gXHRpZiAocGNkZXYtXHUwMDNlaXJxKVxuIFx0XHRkaXNhYmxlX2lycShwY2Rldi1cdTAwM2VpcnEpO1xuIFx0Y2FuY2VsX3dvcmtfc3luYyhcdTAwMjZwY2Rldi1cdTAwM2VudGZfd29yayk7XG4tXHRrZmlmb19mcmVlKFx1MDAyNnBjZGV2LVx1MDAzZW50Zl9maWZvKTtcbiYjNDM7XHRwc2VfZmx1c2hfcHdfZHMocGNkZXYpO1xuJiM0MztcdC8qIFVubGluayBiZWZvcmUgZnJlZWluZyBwY2Rldi1cdTAwM2VwaTogb2ZfcHNlX2NvbnRyb2xfZ2V0KCkgd2Fsa3MgdGhlXG4mIzQzO1x0ICogbGlzdCB1bmRlciBwc2VfbGlzdF9tdXRleCBhbmQgZGVyZWZlcmVuY2VzIHBjZGV2LVx1MDAzZXBpW10gdmlhXG4mIzQzO1x0ICogb2ZfcHNlX21hdGNoX3BpKCksIHNvIGEgbG9va3VwIG11c3QgbmV2ZXIgcmVhY2ggYSBmcmVlZCBhcnJheS5cbiYjNDM7XHQgKi9cbiBcdG11dGV4X2xvY2soXHUwMDI2cHNlX2xpc3RfbXV0ZXgpO1xuIFx0bGlzdF9kZWwoXHUwMDI2cGNkZXYtXHUwMDNlbGlzdCk7XG4gXHRtdXRleF91bmxvY2soXHUwMDI2cHNlX2xpc3RfbXV0ZXgpO1xuJiM0MztcdHBzZV9yZWxlYXNlX3BpcyhwY2Rldik7XG4mIzQzO1x0a2ZpZm9fZnJlZShcdTAwMjZwY2Rldi1cdTAwM2VudGZfZmlmbyk7XG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKHBzZV9jb250cm9sbGVyX3VucmVnaXN0ZXIpO1xuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDIxOjMyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGZpeGVzIHJhY2UgY29uZGl0aW9ucyBkdXJpbmcgZHJpdmVyIHVucmVnaXN0cmF0aW9uIGFuZCB0ZWFyZG93biAocHNlX2NvbnRyb2xsZXJfdW5yZWdpc3RlcikuIFRoZXNlIGNvZGUgcGF0aHMgYXJlIGV4ZWN1dGVkIGR1cmluZyBkcml2ZXIgdW5iaW5kIG9yIGRldmljZSByZW1vdmFsLCB3aGljaCBmYWxscyB1bmRlciB0aGUgZXhjbHVzaW9uIGNyaXRlcmlhIGZvciB0ZWFyZG93biBjYWxsYmFja3MuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYjFjZjU2YzZkZDM0MWYzNzdjYWZiZDM1YjYzN2VkZTJiOTIxMDUzMgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgQXVnIDEzIDIxOjMyOjUwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmMgYi9kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYwppbmRleCBhNWU2ZDdiMjZiOWZkLi4yYTlhMDdkYzhjNDgxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYwpAQCAtMTQ0LDcgJiM0MzsxNDQsMTMgQEAgc3RhdGljIHZvaWQgcHNlX3JlbGVhc2VfcGlzKHN0cnVjdCBwc2VfY29udHJvbGxlcl9kZXYgKnBjZGV2KQogCQlvZl9ub2RlX3B1dChwY2Rldi0mZ3Q7cGlbaV0ucGFpcnNldFsxXS5ucCk7CiAJCW9mX25vZGVfcHV0KHBjZGV2LSZndDtwaVtpXS5ucCk7CiAJfQomIzQzOwkvKiBGcmVlIHVuZGVyIHRoZSBsb2NrIHNvIHRoZSBOVUxMIHN0b3JlIGlzIGF1dGhvcml0YXRpdmUgYWdhaW5zdAomIzQzOwkgKiB0aGUgcmVndWxhdG9yIG9wcyB0aGF0IHJlYWQgcGNkZXYtJmd0O3BpIHVuZGVyIHBjZGV2LSZndDtsb2NrLgomIzQzOwkgKi8KJiM0MzsJbXV0ZXhfbG9jaygmYW1wO3BjZGV2LSZndDtsb2NrKTsKIAlrZnJlZShwY2Rldi0mZ3Q7cGkpOwomIzQzOwlwY2Rldi0mZ3Q7cGkgPSBOVUxMOwomIzQzOwltdXRleF91bmxvY2soJmFtcDtwY2Rldi0mZ3Q7bG9jayk7CiB9CiAKIC8qKgpAQCAtNDIxLDYgJiM0Mzs0MjcsMTEgQEAgc3RhdGljIGludCBwc2VfcGlfaXNfZW5hYmxlZChzdHJ1Y3QgcmVndWxhdG9yX2RldiAqcmRldikKIAogCWlkID0gcmRldl9nZXRfaWQocmRldik7CiAJbXV0ZXhfbG9jaygmYW1wO3BjZGV2LSZndDtsb2NrKTsKJiM0MzsJLyogQ29udHJvbGxlciBtYXkgYmUgdW5yZWdpc3RlcmVkIChwY2Rldi0mZ3Q7cGkgZnJlZWQpIG1pZC10ZWFyZG93bi4gKi8KJiM0MzsJaWYgKCFwY2Rldi0mZ3Q7cGkpIHsKJiM0MzsJCXJldCA9IC1FTk9ERVY7CiYjNDM7CQlnb3RvIG91dDsKJiM0MzsJfQogCWlmIChwc2VfcHdfZF9pc19zd19wd19jb250cm9sKHBjZGV2LCBwY2Rldi0mZ3Q7cGlbaWRdLnB3X2QpKSB7CiAJCXJldCA9IHBjZGV2LSZndDtwaVtpZF0uYWRtaW5fc3RhdGVfZW5hYmxlZDsKIAkJZ290byBvdXQ7CkBAIC02NzQsNiAmIzQzOzY4NSwxMSBAQCBzdGF0aWMgaW50IHBzZV9waV9lbmFibGUoc3RydWN0IHJlZ3VsYXRvcl9kZXYgKnJkZXYpCiAKIAlpZCA9IHJkZXZfZ2V0X2lkKHJkZXYpOwogCW11dGV4X2xvY2soJmFtcDtwY2Rldi0mZ3Q7bG9jayk7CiYjNDM7CS8qIENvbnRyb2xsZXIgbWF5IGJlIHVucmVnaXN0ZXJlZCAocGNkZXYtJmd0O3BpIGZyZWVkKSBtaWQtdGVhcmRvd24uICovCiYjNDM7CWlmICghcGNkZXYtJmd0O3BpKSB7CiYjNDM7CQltdXRleF91bmxvY2soJmFtcDtwY2Rldi0mZ3Q7bG9jayk7CiYjNDM7CQlyZXR1cm4gLUVOT0RFVjsKJiM0MzsJfQogCWlmIChwc2VfcHdfZF9pc19zd19wd19jb250cm9sKHBjZGV2LCBwY2Rldi0mZ3Q7cGlbaWRdLnB3X2QpKSB7CiAJCS8qIE1hbmFnZSBlbmFibGVkIHN0YXR1cyBieSBzb2Z0d2FyZS4KIAkJICogUmVhbCBlbmFibGUgcHJvY2VzcyB3aWxsIGhhcHBlbiBpZiBhIHBvcnQgaXMgY29ubmVjdGVkLgpAQCAtNzAyLDE1ICYjNDM7NzE4LDIwIEBAIHN0YXRpYyBpbnQgcHNlX3BpX2VuYWJsZShzdHJ1Y3QgcmVndWxhdG9yX2RldiAqcmRldikKIHN0YXRpYyBpbnQgcHNlX3BpX2Rpc2FibGUoc3RydWN0IHJlZ3VsYXRvcl9kZXYgKnJkZXYpCiB7CiAJc3RydWN0IHBzZV9jb250cm9sbGVyX2RldiAqcGNkZXYgPSByZGV2X2dldF9kcnZkYXRhKHJkZXYpOwotCXN0cnVjdCBwc2VfcGkgKnBpOwogCWludCBpZCwgcmV0OwogCiAJaWQgPSByZGV2X2dldF9pZChyZGV2KTsKLQlwaSA9ICZhbXA7cGNkZXYtJmd0O3BpW2lkXTsKIAltdXRleF9sb2NrKCZhbXA7cGNkZXYtJmd0O2xvY2spOwomIzQzOwkvKiBSZWFjaGVkIHZpYSB0aGUgcmVndWxhdG9yIGNvcmUmIzM5O3MgZGVmZXJyZWQtZGlzYWJsZSBmbHVzaCBhZnRlcgomIzQzOwkgKiBwY2Rldi0mZ3Q7cGkgaXMgZnJlZWQgb24gdW5yZWdpc3Rlci4KJiM0MzsJICovCiYjNDM7CWlmICghcGNkZXYtJmd0O3BpKSB7CiYjNDM7CQltdXRleF91bmxvY2soJmFtcDtwY2Rldi0mZ3Q7bG9jayk7CiYjNDM7CQlyZXR1cm4gMDsKJiM0MzsJfQogCXJldCA9IF9wc2VfcGlfZGlzYWJsZShwY2RldiwgaWQpOwogCWlmICghcmV0KQotCQlwaS0mZ3Q7YWRtaW5fc3RhdGVfZW5hYmxlZCA9IDA7CiYjNDM7CQlwY2Rldi0mZ3Q7cGlbaWRdLmFkbWluX3N0YXRlX2VuYWJsZWQgPSAwOwogCiAJbXV0ZXhfdW5sb2NrKCZhbXA7cGNkZXYtJmd0O2xvY2spOwogCXJldHVybiAwOwpAQCAtMTExNCwxNSAmIzQzOzExMzUsMjMgQEAgRVhQT1JUX1NZTUJPTF9HUEwocHNlX2NvbnRyb2xsZXJfcmVnaXN0ZXIpOwogICovCiB2b2lkIHBzZV9jb250cm9sbGVyX3VucmVnaXN0ZXIoc3RydWN0IHBzZV9jb250cm9sbGVyX2RldiAqcGNkZXYpCiB7Ci0JcHNlX2ZsdXNoX3B3X2RzKHBjZGV2KTsKLQlwc2VfcmVsZWFzZV9waXMocGNkZXYpOwomIzQzOwkvKiBTdG9wIHRoZSBJUlEgYW5kIG5vdGlmaWNhdGlvbiB3b3JrZXIgYmVmb3JlIGZyZWVpbmcgd2hhdCB0aGV5CiYjNDM7CSAqIHJlYWNoOiBib3RoIHRvdWNoIHBjZGV2LSZndDtwaSwgYW5kIHRoZSBJUlEgYWxzbyB1c2VzIHB3X2QtJmd0O3N1cHBseQomIzQzOwkgKiB0aGF0IHBzZV9mbHVzaF9wd19kcygpIGRyb3BzLgomIzQzOwkgKi8KIAlpZiAocGNkZXYtJmd0O2lycSkKIAkJZGlzYWJsZV9pcnEocGNkZXYtJmd0O2lycSk7CiAJY2FuY2VsX3dvcmtfc3luYygmYW1wO3BjZGV2LSZndDtudGZfd29yayk7Ci0Ja2ZpZm9fZnJlZSgmYW1wO3BjZGV2LSZndDtudGZfZmlmbyk7CiYjNDM7CXBzZV9mbHVzaF9wd19kcyhwY2Rldik7CiYjNDM7CS8qIFVubGluayBiZWZvcmUgZnJlZWluZyBwY2Rldi0mZ3Q7cGk6IG9mX3BzZV9jb250cm9sX2dldCgpIHdhbGtzIHRoZQomIzQzOwkgKiBsaXN0IHVuZGVyIHBzZV9saXN0X211dGV4IGFuZCBkZXJlZmVyZW5jZXMgcGNkZXYtJmd0O3BpW10gdmlhCiYjNDM7CSAqIG9mX3BzZV9tYXRjaF9waSgpLCBzbyBhIGxvb2t1cCBtdXN0IG5ldmVyIHJlYWNoIGEgZnJlZWQgYXJyYXkuCiYjNDM7CSAqLwogCW11dGV4X2xvY2soJmFtcDtwc2VfbGlzdF9tdXRleCk7CiAJbGlzdF9kZWwoJmFtcDtwY2Rldi0mZ3Q7bGlzdCk7CiAJbXV0ZXhfdW5sb2NrKCZhbXA7cHNlX2xpc3RfbXV0ZXgpOwomIzQzOwlwc2VfcmVsZWFzZV9waXMocGNkZXYpOwomIzQzOwlrZmlmb19mcmVlKCZhbXA7cGNkZXYtJmd0O250Zl9maWZvKTsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKHBzZV9jb250cm9sbGVyX3VucmVnaXN0ZXIpOwogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDIxOjMyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwNDcKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTmV0d29yayBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuY2AuIFNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2ggYXQgZmlyc3QgZ2xhbmNlIOKAkyBpdCYjMzk7cyBhZGRpbmcgYSBmZXcgYE5VTExgIGNoZWNrcyBmb3IgYHBjZGV2LSZndDtwaWAgaW4gYHBzZV9waV9pc19lbmFibGVkYCwgYHBzZV9waV9lbmFibGVgLCBhbmQgYHBzZV9waV9kaXNhYmxlYC4gU21hcnQgbW92ZTsgYWx3YXlzIGdvb2QgdG8gYmUgcm9idXN0LiBBbmQgaXQmIzM5O3MgYWxzbyBzZXR0aW5nIGBwY2Rldi0mZ3Q7cGkgPSBOVUxMYCB3aXRoaW4gYSBsb2NrIGluIGBwc2VfcmVsZWFzZV9waXNgLCBhbmQgdGhlbiByZW9yZGVyaW5nIHNvbWUgc3R1ZmYgaW4gYHBzZV9jb250cm9sbGVyX3VucmVnaXN0ZXJgLiBEZWZpbml0ZWx5IHNtZWxscyBsaWtlIGEgcmFjZSBjb25kaXRpb24gZml4IHJlbGF0ZWQgdG8gdGVhcmRvd24gb3IgdW5yZWdpc3RlcmluZywgYXMgSSBzdXNwZWN0ZWQuCgpOb3csIHRoaXMgaXMgd2hlcmUgaXQgZ2V0cyBpbnRlcmVzdGluZywgYmVjYXVzZSB0aGUgaW5zdHJ1Y3Rpb25zIGFyZSB0ZWxsaW5nIG1lIHdoZXRoZXIgdGhpcyBwYXRjaCBpcyB3b3J0aCBmdXp6aW5nLiBJdCBzYXlzIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiBpdCAqb25seSogY29udGFpbnMgY2hhbmdlcyBpbiBkcml2ZXIgYC5yZW1vdmVgLCBgLnNodXRkb3duYCwgb3IgYHBjaV91bnJlZ2lzdGVyX2RyaXZlcmAgdGVhcmRvd24gY2FsbGJhY2tzIHRoYXQgYXJlIGV4ZWN1dGVkIGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpIYW5nIG9uIGEgc2Vjb25k4oCmIGBwc2VfY29udHJvbGxlcl91bnJlZ2lzdGVyYC4uLiB0aGF0ICppcyogYSB0ZWFyZG93biBjYWxsYmFjaywgaXNuJiMzOTt0IGl0PyBMZXQgbWUgY2hlY2sgd2hlcmUgdGhhdCBmdW5jdGlvbiBpcyBhY3R1YWxseSBjYWxsZWQuIEdvdHRhIG1ha2Ugc3VyZSBpdCAqb25seSogcnVucyBkdXJpbmcgdGhlIGhvdC11bnBsdWcgb3IgdW5iaW5kIG9wZXJhdGlvbnMgdG8gZ2l2ZSBhIGRlZmluaXRpdmUgYW5zd2VyIGFib3V0IGZ1enppbmcuIFNvLCBsZXQgbWUgZ28gY2hlY2sgdGhlIGNhbGwgc2l0ZXMgZm9yIHRoaXMgZnVuY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMjE6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cHNlX2NvbnRyb2xsZXJfdW5yZWdpc3RlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BzZS1wZC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmM9MTEzMD1FWFBPUlRfU1lNQk9MX0dQTChwc2VfY29udHJvbGxlcl9yZWdpc3Rlcik7XG4tLVxuZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmMtMTEzMi0vKipcbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jOjExMzM6ICogcHNlX2NvbnRyb2xsZXJfdW5yZWdpc3RlciAtIHVucmVnaXN0ZXIgYSBQU0UgY29udHJvbGxlciBkZXZpY2VcbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jLTExMzQtICogQHBjZGV2OiBhIHBvaW50ZXIgdG8gdGhlIFBTRSBjb250cm9sbGVyIGRldmljZVxuZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmMtMTEzNS0gKi9cbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jOjExMzY6dm9pZCBwc2VfY29udHJvbGxlcl91bnJlZ2lzdGVyKHN0cnVjdCBwc2VfY29udHJvbGxlcl9kZXYgKnBjZGV2KVxuZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmMtMTEzNy17XG4tLVxuZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmMtMTE1NS19XG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYzoxMTU2OkVYUE9SVF9TWU1CT0xfR1BMKHBzZV9jb250cm9sbGVyX3VucmVnaXN0ZXIpO1xuZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmMtMTE1Ny1cbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jPTExNTg9c3RhdGljIHZvaWQgZGV2bV9wc2VfY29udHJvbGxlcl9yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqcmVzKVxuZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmMtMTE1OS17XG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYzoxMTYwOlx0cHNlX2NvbnRyb2xsZXJfdW5yZWdpc3RlcigqKHN0cnVjdCBwc2VfY29udHJvbGxlcl9kZXYgKiopcmVzKTtcbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jLTExNjEtfVxuLS1cbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jLTExNjgtICogTWFuYWdlZCBwc2VfY29udHJvbGxlcl9yZWdpc3RlcigpLiBGb3IgUFNFIGNvbnRyb2xsZXJzIHJlZ2lzdGVyZWQgYnlcbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jOjExNjk6ICogdGhpcyBmdW5jdGlvbiwgcHNlX2NvbnRyb2xsZXJfdW5yZWdpc3RlcigpIGlzIGF1dG9tYXRpY2FsbHkgY2FsbGVkIG9uXG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYy0xMTcwLSAqIGRyaXZlciBkZXRhY2guIFNlZSBwc2VfY29udHJvbGxlcl9yZWdpc3RlcigpIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDIxOjMyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxMTUKCQkJCQkJCW91dHB1dDogNzUKCQkJCQkJCXRob3VnaHRzOiAyNzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gmIzM5O3MgSW1wYWN0KioKCk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCwgaXQgc2VlbXMgdGhlIGNvcmUgaXNzdWUgcmV2b2x2ZXMgYXJvdW5kIHRoZSBgcHNlX2NvbnRyb2xsZXJfdW5yZWdpc3RlcmAgZnVuY3Rpb24gYmVpbmcgY2FsbGVkIGR1cmluZyBkcml2ZXIgZGV0YWNobWVudC4gVGhlIHBhdGNoIGFsdGVycyBzZXZlcmFsIGZ1bmN0aW9uczogYHBzZV9yZWxlYXNlX3Bpc2AsIGBwc2VfcGlfaXNfZW5hYmxlZGAsIGBwc2VfcGlfZW5hYmxlYCwgYHBzZV9waV9kaXNhYmxlYCwgYW5kLCBvZiBjb3Vyc2UsIGBwc2VfY29udHJvbGxlcl91bnJlZ2lzdGVyYCBpdHNlbGYuIEl04oCZcyBhbGwgYWJvdXQgdGhlIHRlYXJkb3duIHNlcXVlbmNlLCBzcGVjaWZpY2FsbHkgdW5yZWdpc3RlcmluZyB0aGUgY29udHJvbGxlci4gSG9sZCBvbiwgYHBzZV9waV9pc19lbmFibGVkYCwgYHBzZV9waV9lbmFibGVgLCBhbmQgYHBzZV9waV9kaXNhYmxlYCBhcmUgcmVndWxhdG9yIG9wZXJhdGlvbnMsIHdoaWNoIGlzIGludGVyZXN0aW5nLgoKVGhlIHBhdGNoIHNlZW1zIHRvIGJlIGFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24uIEl0IGFkZHMgYSBjcnVjaWFsIGNoZWNrOiBgaWYgKCFwY2Rldi0mZ3Q7cGkpYCB0byBoYW5kbGUgdGhlIHNjZW5hcmlvIHdoZXJlIHRoZSBjb250cm9sbGVyIGdldHMgdW5yZWdpc3RlcmVkICptaWQtdGVhcmRvd24qLiBUaGUgY29tbWVudHMgZXhwbGFpbiB0aGUgc2l0dWF0aW9uIHBlcmZlY3RseTogdGhlIGNvbnRyb2xsZXIgY291bGQgYmUgdW5yZWdpc3RlcmVkIGFuZCBgcGNkZXYtJmd0O3BpYCBmcmVlZCBkdXJpbmcgdGhlIHRlYXJkb3duIHByb2Nlc3MsIGFuZCB0aGF0IHRoaXMgY291bGQgYmUgcmVhY2hlZCB2aWEgdGhlIHJlZ3VsYXRvciBjb3JlJiMzOTtzIGRlZmVycmVkLWRpc2FibGUgZmx1c2ggYWZ0ZXIgYHBjZGV2LSZndDtwaWAgaXMgZnJlZWQuCgpUaGlzIHBlcmZlY3RseSBkZXNjcmliZXMgdGhlIHByb2JsZW0gc2NlbmFyaW86IGEgZHJpdmVy4oCZcyBgLnJlbW92ZWAsIGAuc2h1dGRvd25gLCBvciBgcGNpX3VucmVnaXN0ZXJfZHJpdmVyYCB0ZWFyZG93biBjYWxsYmFjayB0aGF0IGdldHMgZXhlY3V0ZWQgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCkkmIzM5O3ZlIGNvbmZpcm1lZCB0aGF0IHRoZSBwYXRjaCBpcyBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gdGhvc2UgdGVhci1kb3duIHJhY2UgY29uZGl0aW9ucy4gR2l2ZW4gdGhhdCB0aGUgY2hhbmdlcyBhcmUgaXNvbGF0ZWQgdG8gcHJldmVudGluZyBpc3N1ZXMgZHVyaW5nIGNvbnRyb2xsZXIgdW5yZWdpc3RyYXRpb24sIGFuZCB0aGV5IGZvY3VzIG9uIGVuc3VyaW5nIHRoYXQgd2UgZG9uJiMzOTt0IGFjY2VzcyBmcmVlZCBtZW1vcnksIEkmIzM5O20gZ29pbmcgdG8gY2F0ZWdvcml6ZSB0aGlzIGFzIG5vdCBiZWluZyB3b3J0aCBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDIxOjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBmaXhlcyByYWNlIGNvbmRpdGlvbnMgZHVyaW5nIGRyaXZlciB1bnJlZ2lzdHJhdGlvbiBhbmQgdGVhcmRvd24gKHBzZV9jb250cm9sbGVyX3VucmVnaXN0ZXIpLiBUaGVzZSBjb2RlIHBhdGhzIGFyZSBleGVjdXRlZCBkdXJpbmcgZHJpdmVyIHVuYmluZCBvciBkZXZpY2UgcmVtb3ZhbCwgd2hpY2ggZmFsbHMgdW5kZXIgdGhlIGV4Y2x1c2lvbiBjcml0ZXJpYSBmb3IgdGVhcmRvd24gY2FsbGJhY2tzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBmaXhlcyByYWNlIGNvbmRpdGlvbnMgZHVyaW5nIGRyaXZlciB1bnJlZ2lzdHJhdGlvbiBhbmQgdGVhcmRvd24gKHBzZV9jb250cm9sbGVyX3VucmVnaXN0ZXIpLiBUaGVzZSBjb2RlIHBhdGhzIGFyZSBleGVjdXRlZCBkdXJpbmcgZHJpdmVyIHVuYmluZCBvciBkZXZpY2UgcmVtb3ZhbCwgd2hpY2ggZmFsbHMgdW5kZXIgdGhlIGV4Y2x1c2lvbiBjcml0ZXJpYSBmb3IgdGVhcmRvd24gY2FsbGJhY2tzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAyMTozMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMTNUMjE6MzI6NTEuODg2MjgyNTE3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTExNDQzMDMwNjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGZpeGVzIHJhY2UgY29uZGl0aW9ucyBkdXJpbmcgZHJpdmVyIHVucmVnaXN0cmF0aW9uIGFuZCB0ZWFyZG93biAocHNlX2NvbnRyb2xsZXJfdW5yZWdpc3RlcikuIFRoZXNlIGNvZGUgcGF0aHMgYXJlIGV4ZWN1dGVkIGR1cmluZyBkcml2ZXIgdW5iaW5kIG9yIGRldmljZSByZW1vdmFsLCB3aGljaCBmYWxscyB1bmRlciB0aGUgZXhjbHVzaW9uIGNyaXRlcmlhIGZvciB0ZWFyZG93biBjYWxsYmFja3MuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QyMTozMjo1MS44ODYyOTA0ODdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MjQxMjExNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGIxY2Y1NmM2ZGQzNDFmMzc3Y2FmYmQzNWI2MzdlZGUyYjkyMTA1MzJcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBBdWcgMTMgMjE6MzI6NTAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmMgYi9kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuY1xcbmluZGV4IGE1ZTZkN2IyNmI5ZmQuLjJhOWEwN2RjOGM0ODEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmNcXG4rKysgYi9kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuY1xcbkBAIC0xNDQsNyArMTQ0LDEzIEBAIHN0YXRpYyB2b2lkIHBzZV9yZWxlYXNlX3BpcyhzdHJ1Y3QgcHNlX2NvbnRyb2xsZXJfZGV2ICpwY2RldilcXG4gXFx0XFx0b2Zfbm9kZV9wdXQocGNkZXYtXFx1MDAzZXBpW2ldLnBhaXJzZXRbMV0ubnApO1xcbiBcXHRcXHRvZl9ub2RlX3B1dChwY2Rldi1cXHUwMDNlcGlbaV0ubnApO1xcbiBcXHR9XFxuK1xcdC8qIEZyZWUgdW5kZXIgdGhlIGxvY2sgc28gdGhlIE5VTEwgc3RvcmUgaXMgYXV0aG9yaXRhdGl2ZSBhZ2FpbnN0XFxuK1xcdCAqIHRoZSByZWd1bGF0b3Igb3BzIHRoYXQgcmVhZCBwY2Rldi1cXHUwMDNlcGkgdW5kZXIgcGNkZXYtXFx1MDAzZWxvY2suXFxuK1xcdCAqL1xcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZwY2Rldi1cXHUwMDNlbG9jayk7XFxuIFxcdGtmcmVlKHBjZGV2LVxcdTAwM2VwaSk7XFxuK1xcdHBjZGV2LVxcdTAwM2VwaSA9IE5VTEw7XFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2cGNkZXYtXFx1MDAzZWxvY2spO1xcbiB9XFxuIFxcbiAvKipcXG5AQCAtNDIxLDYgKzQyNywxMSBAQCBzdGF0aWMgaW50IHBzZV9waV9pc19lbmFibGVkKHN0cnVjdCByZWd1bGF0b3JfZGV2ICpyZGV2KVxcbiBcXG4gXFx0aWQgPSByZGV2X2dldF9pZChyZGV2KTtcXG4gXFx0bXV0ZXhfbG9jayhcXHUwMDI2cGNkZXYtXFx1MDAzZWxvY2spO1xcbitcXHQvKiBDb250cm9sbGVyIG1heSBiZSB1bnJlZ2lzdGVyZWQgKHBjZGV2LVxcdTAwM2VwaSBmcmVlZCkgbWlkLXRlYXJkb3duLiAqL1xcbitcXHRpZiAoIXBjZGV2LVxcdTAwM2VwaSkge1xcbitcXHRcXHRyZXQgPSAtRU5PREVWO1xcbitcXHRcXHRnb3RvIG91dDtcXG4rXFx0fVxcbiBcXHRpZiAocHNlX3B3X2RfaXNfc3dfcHdfY29udHJvbChwY2RldiwgcGNkZXYtXFx1MDAzZXBpW2lkXS5wd19kKSkge1xcbiBcXHRcXHRyZXQgPSBwY2Rldi1cXHUwMDNlcGlbaWRdLmFkbWluX3N0YXRlX2VuYWJsZWQ7XFxuIFxcdFxcdGdvdG8gb3V0O1xcbkBAIC02NzQsNiArNjg1LDExIEBAIHN0YXRpYyBpbnQgcHNlX3BpX2VuYWJsZShzdHJ1Y3QgcmVndWxhdG9yX2RldiAqcmRldilcXG4gXFxuIFxcdGlkID0gcmRldl9nZXRfaWQocmRldik7XFxuIFxcdG11dGV4X2xvY2soXFx1MDAyNnBjZGV2LVxcdTAwM2Vsb2NrKTtcXG4rXFx0LyogQ29udHJvbGxlciBtYXkgYmUgdW5yZWdpc3RlcmVkIChwY2Rldi1cXHUwMDNlcGkgZnJlZWQpIG1pZC10ZWFyZG93bi4gKi9cXG4rXFx0aWYgKCFwY2Rldi1cXHUwMDNlcGkpIHtcXG4rXFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwY2Rldi1cXHUwMDNlbG9jayk7XFxuK1xcdFxcdHJldHVybiAtRU5PREVWO1xcbitcXHR9XFxuIFxcdGlmIChwc2VfcHdfZF9pc19zd19wd19jb250cm9sKHBjZGV2LCBwY2Rldi1cXHUwMDNlcGlbaWRdLnB3X2QpKSB7XFxuIFxcdFxcdC8qIE1hbmFnZSBlbmFibGVkIHN0YXR1cyBieSBzb2Z0d2FyZS5cXG4gXFx0XFx0ICogUmVhbCBlbmFibGUgcHJvY2VzcyB3aWxsIGhhcHBlbiBpZiBhIHBvcnQgaXMgY29ubmVjdGVkLlxcbkBAIC03MDIsMTUgKzcxOCwyMCBAQCBzdGF0aWMgaW50IHBzZV9waV9lbmFibGUoc3RydWN0IHJlZ3VsYXRvcl9kZXYgKnJkZXYpXFxuIHN0YXRpYyBpbnQgcHNlX3BpX2Rpc2FibGUoc3RydWN0IHJlZ3VsYXRvcl9kZXYgKnJkZXYpXFxuIHtcXG4gXFx0c3RydWN0IHBzZV9jb250cm9sbGVyX2RldiAqcGNkZXYgPSByZGV2X2dldF9kcnZkYXRhKHJkZXYpO1xcbi1cXHRzdHJ1Y3QgcHNlX3BpICpwaTtcXG4gXFx0aW50IGlkLCByZXQ7XFxuIFxcbiBcXHRpZCA9IHJkZXZfZ2V0X2lkKHJkZXYpO1xcbi1cXHRwaSA9IFxcdTAwMjZwY2Rldi1cXHUwMDNlcGlbaWRdO1xcbiBcXHRtdXRleF9sb2NrKFxcdTAwMjZwY2Rldi1cXHUwMDNlbG9jayk7XFxuK1xcdC8qIFJlYWNoZWQgdmlhIHRoZSByZWd1bGF0b3IgY29yZSdzIGRlZmVycmVkLWRpc2FibGUgZmx1c2ggYWZ0ZXJcXG4rXFx0ICogcGNkZXYtXFx1MDAzZXBpIGlzIGZyZWVkIG9uIHVucmVnaXN0ZXIuXFxuK1xcdCAqL1xcbitcXHRpZiAoIXBjZGV2LVxcdTAwM2VwaSkge1xcbitcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnBjZGV2LVxcdTAwM2Vsb2NrKTtcXG4rXFx0XFx0cmV0dXJuIDA7XFxuK1xcdH1cXG4gXFx0cmV0ID0gX3BzZV9waV9kaXNhYmxlKHBjZGV2LCBpZCk7XFxuIFxcdGlmICghcmV0KVxcbi1cXHRcXHRwaS1cXHUwMDNlYWRtaW5fc3RhdGVfZW5hYmxlZCA9IDA7XFxuK1xcdFxcdHBjZGV2LVxcdTAwM2VwaVtpZF0uYWRtaW5fc3RhdGVfZW5hYmxlZCA9IDA7XFxuIFxcbiBcXHRtdXRleF91bmxvY2soXFx1MDAyNnBjZGV2LVxcdTAwM2Vsb2NrKTtcXG4gXFx0cmV0dXJuIDA7XFxuQEAgLTExMTQsMTUgKzExMzUsMjMgQEAgRVhQT1JUX1NZTUJPTF9HUEwocHNlX2NvbnRyb2xsZXJfcmVnaXN0ZXIpO1xcbiAgKi9cXG4gdm9pZCBwc2VfY29udHJvbGxlcl91bnJlZ2lzdGVyKHN0cnVjdCBwc2VfY29udHJvbGxlcl9kZXYgKnBjZGV2KVxcbiB7XFxuLVxcdHBzZV9mbHVzaF9wd19kcyhwY2Rldik7XFxuLVxcdHBzZV9yZWxlYXNlX3BpcyhwY2Rldik7XFxuK1xcdC8qIFN0b3AgdGhlIElSUSBhbmQgbm90aWZpY2F0aW9uIHdvcmtlciBiZWZvcmUgZnJlZWluZyB3aGF0IHRoZXlcXG4rXFx0ICogcmVhY2g6IGJvdGggdG91Y2ggcGNkZXYtXFx1MDAzZXBpLCBhbmQgdGhlIElSUSBhbHNvIHVzZXMgcHdfZC1cXHUwMDNlc3VwcGx5XFxuK1xcdCAqIHRoYXQgcHNlX2ZsdXNoX3B3X2RzKCkgZHJvcHMuXFxuK1xcdCAqL1xcbiBcXHRpZiAocGNkZXYtXFx1MDAzZWlycSlcXG4gXFx0XFx0ZGlzYWJsZV9pcnEocGNkZXYtXFx1MDAzZWlycSk7XFxuIFxcdGNhbmNlbF93b3JrX3N5bmMoXFx1MDAyNnBjZGV2LVxcdTAwM2VudGZfd29yayk7XFxuLVxcdGtmaWZvX2ZyZWUoXFx1MDAyNnBjZGV2LVxcdTAwM2VudGZfZmlmbyk7XFxuK1xcdHBzZV9mbHVzaF9wd19kcyhwY2Rldik7XFxuK1xcdC8qIFVubGluayBiZWZvcmUgZnJlZWluZyBwY2Rldi1cXHUwMDNlcGk6IG9mX3BzZV9jb250cm9sX2dldCgpIHdhbGtzIHRoZVxcbitcXHQgKiBsaXN0IHVuZGVyIHBzZV9saXN0X211dGV4IGFuZCBkZXJlZmVyZW5jZXMgcGNkZXYtXFx1MDAzZXBpW10gdmlhXFxuK1xcdCAqIG9mX3BzZV9tYXRjaF9waSgpLCBzbyBhIGxvb2t1cCBtdXN0IG5ldmVyIHJlYWNoIGEgZnJlZWQgYXJyYXkuXFxuK1xcdCAqL1xcbiBcXHRtdXRleF9sb2NrKFxcdTAwMjZwc2VfbGlzdF9tdXRleCk7XFxuIFxcdGxpc3RfZGVsKFxcdTAwMjZwY2Rldi1cXHUwMDNlbGlzdCk7XFxuIFxcdG11dGV4X3VubG9jayhcXHUwMDI2cHNlX2xpc3RfbXV0ZXgpO1xcbitcXHRwc2VfcmVsZWFzZV9waXMocGNkZXYpO1xcbitcXHRrZmlmb19mcmVlKFxcdTAwMjZwY2Rldi1cXHUwMDNlbnRmX2ZpZm8pO1xcbiB9XFxuIEVYUE9SVF9TWU1CT0xfR1BMKHBzZV9jb250cm9sbGVyX3VucmVnaXN0ZXIpO1xcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMjE6MzI6NTIuMzU5NDgzNDgzWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTA2NzEwODY1MzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgZml4ZXMgcmFjZSBjb25kaXRpb25zIGR1cmluZyBkcml2ZXIgdW5yZWdpc3RyYXRpb24gYW5kIHRlYXJkb3duIChwc2VfY29udHJvbGxlcl91bnJlZ2lzdGVyKS4gVGhlc2UgY29kZSBwYXRocyBhcmUgZXhlY3V0ZWQgZHVyaW5nIGRyaXZlciB1bmJpbmQgb3IgZGV2aWNlIHJlbW92YWwsIHdoaWNoIGZhbGxzIHVuZGVyIHRoZSBleGNsdXNpb24gY3JpdGVyaWEgZm9yIHRlYXJkb3duIGNhbGxiYWNrcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGIxY2Y1NmM2ZGQzNDFmMzc3Y2FmYmQzNWI2MzdlZGUyYjkyMTA1MzJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyAxMyAyMTozMjo1MCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jIGIvZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmNcbmluZGV4IGE1ZTZkN2IyNmI5ZmQuLjJhOWEwN2RjOGM0ODEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuY1xuKysrIGIvZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmNcbkBAIC0xNDQsNyArMTQ0LDEzIEBAIHN0YXRpYyB2b2lkIHBzZV9yZWxlYXNlX3BpcyhzdHJ1Y3QgcHNlX2NvbnRyb2xsZXJfZGV2ICpwY2RldilcbiBcdFx0b2Zfbm9kZV9wdXQocGNkZXYtXHUwMDNlcGlbaV0ucGFpcnNldFsxXS5ucCk7XG4gXHRcdG9mX25vZGVfcHV0KHBjZGV2LVx1MDAzZXBpW2ldLm5wKTtcbiBcdH1cbitcdC8qIEZyZWUgdW5kZXIgdGhlIGxvY2sgc28gdGhlIE5VTEwgc3RvcmUgaXMgYXV0aG9yaXRhdGl2ZSBhZ2FpbnN0XG4rXHQgKiB0aGUgcmVndWxhdG9yIG9wcyB0aGF0IHJlYWQgcGNkZXYtXHUwMDNlcGkgdW5kZXIgcGNkZXYtXHUwMDNlbG9jay5cbitcdCAqL1xuK1x0bXV0ZXhfbG9jayhcdTAwMjZwY2Rldi1cdTAwM2Vsb2NrKTtcbiBcdGtmcmVlKHBjZGV2LVx1MDAzZXBpKTtcbitcdHBjZGV2LVx1MDAzZXBpID0gTlVMTDtcbitcdG11dGV4X3VubG9jayhcdTAwMjZwY2Rldi1cdTAwM2Vsb2NrKTtcbiB9XG4gXG4gLyoqXG5AQCAtNDIxLDYgKzQyNywxMSBAQCBzdGF0aWMgaW50IHBzZV9waV9pc19lbmFibGVkKHN0cnVjdCByZWd1bGF0b3JfZGV2ICpyZGV2KVxuIFxuIFx0aWQgPSByZGV2X2dldF9pZChyZGV2KTtcbiBcdG11dGV4X2xvY2soXHUwMDI2cGNkZXYtXHUwMDNlbG9jayk7XG4rXHQvKiBDb250cm9sbGVyIG1heSBiZSB1bnJlZ2lzdGVyZWQgKHBjZGV2LVx1MDAzZXBpIGZyZWVkKSBtaWQtdGVhcmRvd24uICovXG4rXHRpZiAoIXBjZGV2LVx1MDAzZXBpKSB7XG4rXHRcdHJldCA9IC1FTk9ERVY7XG4rXHRcdGdvdG8gb3V0O1xuK1x0fVxuIFx0aWYgKHBzZV9wd19kX2lzX3N3X3B3X2NvbnRyb2wocGNkZXYsIHBjZGV2LVx1MDAzZXBpW2lkXS5wd19kKSkge1xuIFx0XHRyZXQgPSBwY2Rldi1cdTAwM2VwaVtpZF0uYWRtaW5fc3RhdGVfZW5hYmxlZDtcbiBcdFx0Z290byBvdXQ7XG5AQCAtNjc0LDYgKzY4NSwxMSBAQCBzdGF0aWMgaW50IHBzZV9waV9lbmFibGUoc3RydWN0IHJlZ3VsYXRvcl9kZXYgKnJkZXYpXG4gXG4gXHRpZCA9IHJkZXZfZ2V0X2lkKHJkZXYpO1xuIFx0bXV0ZXhfbG9jayhcdTAwMjZwY2Rldi1cdTAwM2Vsb2NrKTtcbitcdC8qIENvbnRyb2xsZXIgbWF5IGJlIHVucmVnaXN0ZXJlZCAocGNkZXYtXHUwMDNlcGkgZnJlZWQpIG1pZC10ZWFyZG93bi4gKi9cbitcdGlmICghcGNkZXYtXHUwMDNlcGkpIHtcbitcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBjZGV2LVx1MDAzZWxvY2spO1xuK1x0XHRyZXR1cm4gLUVOT0RFVjtcbitcdH1cbiBcdGlmIChwc2VfcHdfZF9pc19zd19wd19jb250cm9sKHBjZGV2LCBwY2Rldi1cdTAwM2VwaVtpZF0ucHdfZCkpIHtcbiBcdFx0LyogTWFuYWdlIGVuYWJsZWQgc3RhdHVzIGJ5IHNvZnR3YXJlLlxuIFx0XHQgKiBSZWFsIGVuYWJsZSBwcm9jZXNzIHdpbGwgaGFwcGVuIGlmIGEgcG9ydCBpcyBjb25uZWN0ZWQuXG5AQCAtNzAyLDE1ICs3MTgsMjAgQEAgc3RhdGljIGludCBwc2VfcGlfZW5hYmxlKHN0cnVjdCByZWd1bGF0b3JfZGV2ICpyZGV2KVxuIHN0YXRpYyBpbnQgcHNlX3BpX2Rpc2FibGUoc3RydWN0IHJlZ3VsYXRvcl9kZXYgKnJkZXYpXG4ge1xuIFx0c3RydWN0IHBzZV9jb250cm9sbGVyX2RldiAqcGNkZXYgPSByZGV2X2dldF9kcnZkYXRhKHJkZXYpO1xuLVx0c3RydWN0IHBzZV9waSAqcGk7XG4gXHRpbnQgaWQsIHJldDtcbiBcbiBcdGlkID0gcmRldl9nZXRfaWQocmRldik7XG4tXHRwaSA9IFx1MDAyNnBjZGV2LVx1MDAzZXBpW2lkXTtcbiBcdG11dGV4X2xvY2soXHUwMDI2cGNkZXYtXHUwMDNlbG9jayk7XG4rXHQvKiBSZWFjaGVkIHZpYSB0aGUgcmVndWxhdG9yIGNvcmUncyBkZWZlcnJlZC1kaXNhYmxlIGZsdXNoIGFmdGVyXG4rXHQgKiBwY2Rldi1cdTAwM2VwaSBpcyBmcmVlZCBvbiB1bnJlZ2lzdGVyLlxuK1x0ICovXG4rXHRpZiAoIXBjZGV2LVx1MDAzZXBpKSB7XG4rXHRcdG11dGV4X3VubG9jayhcdTAwMjZwY2Rldi1cdTAwM2Vsb2NrKTtcbitcdFx0cmV0dXJuIDA7XG4rXHR9XG4gXHRyZXQgPSBfcHNlX3BpX2Rpc2FibGUocGNkZXYsIGlkKTtcbiBcdGlmICghcmV0KVxuLVx0XHRwaS1cdTAwM2VhZG1pbl9zdGF0ZV9lbmFibGVkID0gMDtcbitcdFx0cGNkZXYtXHUwMDNlcGlbaWRdLmFkbWluX3N0YXRlX2VuYWJsZWQgPSAwO1xuIFxuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBjZGV2LVx1MDAzZWxvY2spO1xuIFx0cmV0dXJuIDA7XG5AQCAtMTExNCwxNSArMTEzNSwyMyBAQCBFWFBPUlRfU1lNQk9MX0dQTChwc2VfY29udHJvbGxlcl9yZWdpc3Rlcik7XG4gICovXG4gdm9pZCBwc2VfY29udHJvbGxlcl91bnJlZ2lzdGVyKHN0cnVjdCBwc2VfY29udHJvbGxlcl9kZXYgKnBjZGV2KVxuIHtcbi1cdHBzZV9mbHVzaF9wd19kcyhwY2Rldik7XG4tXHRwc2VfcmVsZWFzZV9waXMocGNkZXYpO1xuK1x0LyogU3RvcCB0aGUgSVJRIGFuZCBub3RpZmljYXRpb24gd29ya2VyIGJlZm9yZSBmcmVlaW5nIHdoYXQgdGhleVxuK1x0ICogcmVhY2g6IGJvdGggdG91Y2ggcGNkZXYtXHUwMDNlcGksIGFuZCB0aGUgSVJRIGFsc28gdXNlcyBwd19kLVx1MDAzZXN1cHBseVxuK1x0ICogdGhhdCBwc2VfZmx1c2hfcHdfZHMoKSBkcm9wcy5cbitcdCAqL1xuIFx0aWYgKHBjZGV2LVx1MDAzZWlycSlcbiBcdFx0ZGlzYWJsZV9pcnEocGNkZXYtXHUwMDNlaXJxKTtcbiBcdGNhbmNlbF93b3JrX3N5bmMoXHUwMDI2cGNkZXYtXHUwMDNlbnRmX3dvcmspO1xuLVx0a2ZpZm9fZnJlZShcdTAwMjZwY2Rldi1cdTAwM2VudGZfZmlmbyk7XG4rXHRwc2VfZmx1c2hfcHdfZHMocGNkZXYpO1xuK1x0LyogVW5saW5rIGJlZm9yZSBmcmVlaW5nIHBjZGV2LVx1MDAzZXBpOiBvZl9wc2VfY29udHJvbF9nZXQoKSB3YWxrcyB0aGVcbitcdCAqIGxpc3QgdW5kZXIgcHNlX2xpc3RfbXV0ZXggYW5kIGRlcmVmZXJlbmNlcyBwY2Rldi1cdTAwM2VwaVtdIHZpYVxuK1x0ICogb2ZfcHNlX21hdGNoX3BpKCksIHNvIGEgbG9va3VwIG11c3QgbmV2ZXIgcmVhY2ggYSBmcmVlZCBhcnJheS5cbitcdCAqL1xuIFx0bXV0ZXhfbG9jayhcdTAwMjZwc2VfbGlzdF9tdXRleCk7XG4gXHRsaXN0X2RlbChcdTAwMjZwY2Rldi1cdTAwM2VsaXN0KTtcbiBcdG11dGV4X3VubG9jayhcdTAwMjZwc2VfbGlzdF9tdXRleCk7XG4rXHRwc2VfcmVsZWFzZV9waXMocGNkZXYpO1xuK1x0a2ZpZm9fZnJlZShcdTAwMjZwY2Rldi1cdTAwM2VudGZfZmlmbyk7XG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKHBzZV9jb250cm9sbGVyX3VucmVnaXN0ZXIpO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMjE6MzI6NTIuMzU5NDg1MjQzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDY3NTE4NDkyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBOZXR3b3JrIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuY2AuIFNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2ggYXQgZmlyc3QgZ2xhbmNlIOKAkyBpdCdzIGFkZGluZyBhIGZldyBgTlVMTGAgY2hlY2tzIGZvciBgcGNkZXYtXHUwMDNlcGlgIGluIGBwc2VfcGlfaXNfZW5hYmxlZGAsIGBwc2VfcGlfZW5hYmxlYCwgYW5kIGBwc2VfcGlfZGlzYWJsZWAuIFNtYXJ0IG1vdmU7IGFsd2F5cyBnb29kIHRvIGJlIHJvYnVzdC4gQW5kIGl0J3MgYWxzbyBzZXR0aW5nIGBwY2Rldi1cdTAwM2VwaSA9IE5VTExgIHdpdGhpbiBhIGxvY2sgaW4gYHBzZV9yZWxlYXNlX3Bpc2AsIGFuZCB0aGVuIHJlb3JkZXJpbmcgc29tZSBzdHVmZiBpbiBgcHNlX2NvbnRyb2xsZXJfdW5yZWdpc3RlcmAuIERlZmluaXRlbHkgc21lbGxzIGxpa2UgYSByYWNlIGNvbmRpdGlvbiBmaXggcmVsYXRlZCB0byB0ZWFyZG93biBvciB1bnJlZ2lzdGVyaW5nLCBhcyBJIHN1c3BlY3RlZC5cblxuTm93LCB0aGlzIGlzIHdoZXJlIGl0IGdldHMgaW50ZXJlc3RpbmcsIGJlY2F1c2UgdGhlIGluc3RydWN0aW9ucyBhcmUgdGVsbGluZyBtZSB3aGV0aGVyIHRoaXMgcGF0Y2ggaXMgd29ydGggZnV6emluZy4gSXQgc2F5cyB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgaXQgKm9ubHkqIGNvbnRhaW5zIGNoYW5nZXMgaW4gZHJpdmVyIGAucmVtb3ZlYCwgYC5zaHV0ZG93bmAsIG9yIGBwY2lfdW5yZWdpc3Rlcl9kcml2ZXJgIHRlYXJkb3duIGNhbGxiYWNrcyB0aGF0IGFyZSBleGVjdXRlZCBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5IYW5nIG9uIGEgc2Vjb25k4oCmIGBwc2VfY29udHJvbGxlcl91bnJlZ2lzdGVyYC4uLiB0aGF0ICppcyogYSB0ZWFyZG93biBjYWxsYmFjaywgaXNuJ3QgaXQ/IExldCBtZSBjaGVjayB3aGVyZSB0aGF0IGZ1bmN0aW9uIGlzIGFjdHVhbGx5IGNhbGxlZC4gR290dGEgbWFrZSBzdXJlIGl0ICpvbmx5KiBydW5zIGR1cmluZyB0aGUgaG90LXVucGx1ZyBvciB1bmJpbmQgb3BlcmF0aW9ucyB0byBnaXZlIGEgZGVmaW5pdGl2ZSBhbnN3ZXIgYWJvdXQgZnV6emluZy4gU28sIGxldCBtZSBnbyBjaGVjayB0aGUgY2FsbCBzaXRlcyBmb3IgdGhpcyBmdW5jdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA0NywiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxOSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDIxOjMyOjU3LjAzNDY3MjkyNVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzAyOTQwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwc2VfY29udHJvbGxlcl91bnJlZ2lzdGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BzZS1wZC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmM9MTEzMD1FWFBPUlRfU1lNQk9MX0dQTChwc2VfY29udHJvbGxlcl9yZWdpc3Rlcik7XFxuLS1cXG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYy0xMTMyLS8qKlxcbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jOjExMzM6ICogcHNlX2NvbnRyb2xsZXJfdW5yZWdpc3RlciAtIHVucmVnaXN0ZXIgYSBQU0UgY29udHJvbGxlciBkZXZpY2VcXG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYy0xMTM0LSAqIEBwY2RldjogYSBwb2ludGVyIHRvIHRoZSBQU0UgY29udHJvbGxlciBkZXZpY2VcXG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYy0xMTM1LSAqL1xcbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jOjExMzY6dm9pZCBwc2VfY29udHJvbGxlcl91bnJlZ2lzdGVyKHN0cnVjdCBwc2VfY29udHJvbGxlcl9kZXYgKnBjZGV2KVxcbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jLTExMzcte1xcbi0tXFxuZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmMtMTE1NS19XFxuZHJpdmVycy9uZXQvcHNlLXBkL3BzZV9jb3JlLmM6MTE1NjpFWFBPUlRfU1lNQk9MX0dQTChwc2VfY29udHJvbGxlcl91bnJlZ2lzdGVyKTtcXG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYy0xMTU3LVxcbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jPTExNTg9c3RhdGljIHZvaWQgZGV2bV9wc2VfY29udHJvbGxlcl9yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqcmVzKVxcbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jLTExNTkte1xcbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jOjExNjA6XFx0cHNlX2NvbnRyb2xsZXJfdW5yZWdpc3RlcigqKHN0cnVjdCBwc2VfY29udHJvbGxlcl9kZXYgKiopcmVzKTtcXG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYy0xMTYxLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jLTExNjgtICogTWFuYWdlZCBwc2VfY29udHJvbGxlcl9yZWdpc3RlcigpLiBGb3IgUFNFIGNvbnRyb2xsZXJzIHJlZ2lzdGVyZWQgYnlcXG5kcml2ZXJzL25ldC9wc2UtcGQvcHNlX2NvcmUuYzoxMTY5OiAqIHRoaXMgZnVuY3Rpb24sIHBzZV9jb250cm9sbGVyX3VucmVnaXN0ZXIoKSBpcyBhdXRvbWF0aWNhbGx5IGNhbGxlZCBvblxcbmRyaXZlcnMvbmV0L3BzZS1wZC9wc2VfY29yZS5jLTExNzAtICogZHJpdmVyIGRldGFjaC4gU2VlIHBzZV9jb250cm9sbGVyX3JlZ2lzdGVyKCkgZm9yIG1vcmUgaW5mb3JtYXRpb24uXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDIxOjMyOjU3LjA4MTcwNzU0NFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5NDg4MzE1NDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gncyBJbXBhY3QqKlxuXG5Pa2F5LCBzbyBsb29raW5nIGF0IHRoaXMgcGF0Y2gsIGl0IHNlZW1zIHRoZSBjb3JlIGlzc3VlIHJldm9sdmVzIGFyb3VuZCB0aGUgYHBzZV9jb250cm9sbGVyX3VucmVnaXN0ZXJgIGZ1bmN0aW9uIGJlaW5nIGNhbGxlZCBkdXJpbmcgZHJpdmVyIGRldGFjaG1lbnQuIFRoZSBwYXRjaCBhbHRlcnMgc2V2ZXJhbCBmdW5jdGlvbnM6IGBwc2VfcmVsZWFzZV9waXNgLCBgcHNlX3BpX2lzX2VuYWJsZWRgLCBgcHNlX3BpX2VuYWJsZWAsIGBwc2VfcGlfZGlzYWJsZWAsIGFuZCwgb2YgY291cnNlLCBgcHNlX2NvbnRyb2xsZXJfdW5yZWdpc3RlcmAgaXRzZWxmLiBJdOKAmXMgYWxsIGFib3V0IHRoZSB0ZWFyZG93biBzZXF1ZW5jZSwgc3BlY2lmaWNhbGx5IHVucmVnaXN0ZXJpbmcgdGhlIGNvbnRyb2xsZXIuIEhvbGQgb24sIGBwc2VfcGlfaXNfZW5hYmxlZGAsIGBwc2VfcGlfZW5hYmxlYCwgYW5kIGBwc2VfcGlfZGlzYWJsZWAgYXJlIHJlZ3VsYXRvciBvcGVyYXRpb25zLCB3aGljaCBpcyBpbnRlcmVzdGluZy5cblxuVGhlIHBhdGNoIHNlZW1zIHRvIGJlIGFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24uIEl0IGFkZHMgYSBjcnVjaWFsIGNoZWNrOiBgaWYgKCFwY2Rldi1cdTAwM2VwaSlgIHRvIGhhbmRsZSB0aGUgc2NlbmFyaW8gd2hlcmUgdGhlIGNvbnRyb2xsZXIgZ2V0cyB1bnJlZ2lzdGVyZWQgKm1pZC10ZWFyZG93biouIFRoZSBjb21tZW50cyBleHBsYWluIHRoZSBzaXR1YXRpb24gcGVyZmVjdGx5OiB0aGUgY29udHJvbGxlciBjb3VsZCBiZSB1bnJlZ2lzdGVyZWQgYW5kIGBwY2Rldi1cdTAwM2VwaWAgZnJlZWQgZHVyaW5nIHRoZSB0ZWFyZG93biBwcm9jZXNzLCBhbmQgdGhhdCB0aGlzIGNvdWxkIGJlIHJlYWNoZWQgdmlhIHRoZSByZWd1bGF0b3IgY29yZSdzIGRlZmVycmVkLWRpc2FibGUgZmx1c2ggYWZ0ZXIgYHBjZGV2LVx1MDAzZXBpYCBpcyBmcmVlZC5cblxuVGhpcyBwZXJmZWN0bHkgZGVzY3JpYmVzIHRoZSBwcm9ibGVtIHNjZW5hcmlvOiBhIGRyaXZlcuKAmXMgYC5yZW1vdmVgLCBgLnNodXRkb3duYCwgb3IgYHBjaV91bnJlZ2lzdGVyX2RyaXZlcmAgdGVhcmRvd24gY2FsbGJhY2sgdGhhdCBnZXRzIGV4ZWN1dGVkIGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbkkndmUgY29uZmlybWVkIHRoYXQgdGhlIHBhdGNoIGlzIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiB0aG9zZSB0ZWFyLWRvd24gcmFjZSBjb25kaXRpb25zLiBHaXZlbiB0aGF0IHRoZSBjaGFuZ2VzIGFyZSBpc29sYXRlZCB0byBwcmV2ZW50aW5nIGlzc3VlcyBkdXJpbmcgY29udHJvbGxlciB1bnJlZ2lzdHJhdGlvbiwgYW5kIHRoZXkgZm9jdXMgb24gZW5zdXJpbmcgdGhhdCB3ZSBkb24ndCBhY2Nlc3MgZnJlZWQgbWVtb3J5LCBJJ20gZ29pbmcgdG8gY2F0ZWdvcml6ZSB0aGlzIGFzIG5vdCBiZWluZyB3b3J0aCBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTE1LCJPdXRwdXRUb2tlbnMiOjc1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjc3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDIxOjMzOjAzLjAzMDU0MzAwOFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ5NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBmaXhlcyByYWNlIGNvbmRpdGlvbnMgZHVyaW5nIGRyaXZlciB1bnJlZ2lzdHJhdGlvbiBhbmQgdGVhcmRvd24gKHBzZV9jb250cm9sbGVyX3VucmVnaXN0ZXIpLiBUaGVzZSBjb2RlIHBhdGhzIGFyZSBleGVjdXRlZCBkdXJpbmcgZHJpdmVyIHVuYmluZCBvciBkZXZpY2UgcmVtb3ZhbCwgd2hpY2ggZmFsbHMgdW5kZXIgdGhlIGV4Y2x1c2lvbiBjcml0ZXJpYSBmb3IgdGVhcmRvd24gY2FsbGJhY2tzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBmaXhlcyByYWNlIGNvbmRpdGlvbnMgZHVyaW5nIGRyaXZlciB1bnJlZ2lzdHJhdGlvbiBhbmQgdGVhcmRvd24gKHBzZV9jb250cm9sbGVyX3VucmVnaXN0ZXIpLiBUaGVzZSBjb2RlIHBhdGhzIGFyZSBleGVjdXRlZCBkdXJpbmcgZHJpdmVyIHVuYmluZCBvciBkZXZpY2UgcmVtb3ZhbCwgd2hpY2ggZmFsbHMgdW5kZXIgdGhlIGV4Y2x1c2lvbiBjcml0ZXJpYSBmb3IgdGVhcmRvd24gY2FsbGJhY2tzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMjE6MzM6MDMuMDMwNTcyNjc4WiIsIlNlcSI6NywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflownw79j[1] Phase: Running StartedAt: 2026-08-13 21:33:13 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflownw79j[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-13 21:33:13 +0000 UTC FinishedAt: 2026-08-13 21:33:19 +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,}