Name: series-workflowf7fn2 Phase: Succeeded StartedAt: 2026-06-25 15:59:36 +0000 UTC FinishedAt: 2026-06-25 20:25:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf7fn2[0] Phase: Succeeded StartedAt: 2026-06-25 15:59:36 +0000 UTC FinishedAt: 2026-06-25 16:18:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf7fn2[0].run-triage Phase: Succeeded StartedAt: 2026-06-25 15:59:36 +0000 UTC FinishedAt: 2026-06-25 16:18:47 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "ab9de95c9cf952332ab79453b4b5d1bfca8e514f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VHOST_VSOCK" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "ab9de95c9cf952332ab79453b4b5d1bfca8e514f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VHOST_VSOCK" ], "series_id": "fb2e4154-6f80-42ad-a42d-a0c24ceb1ffa" }, "track": "KASAN", "fuzz": { "focus": [ "kvm", "net" ], "focus_symbols": [ "vhost_vsock_reset_owner", "vhost_vsock_start", "vhost_vsock_stop", "vhost_vsock_dev_ioctl" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDE2OjE3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZIT1NUX1ZTT0NLJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dmhvc3RfdnNvY2tfcmVzZXRfb3duZXImIzM0OywKICAgICYjMzQ7dmhvc3RfdnNvY2tfc3RhcnQmIzM0OywKICAgICYjMzQ7dmhvc3RfdnNvY2tfc3RvcCYjMzQ7LAogICAgJiMzNDt2aG9zdF92c29ja19kZXZfaW9jdGwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHZob3N0LXZzb2NrIGRyaXZlciB0byBoYW5kbGUgdGhlIFZIT1NUX1JFU0VUX09XTkVSIGlvY3RsIGV4cGxpY2l0bHksIGFkZGluZyBhIG5ldyB2aG9zdF92c29ja19yZXNldF9vd25lciBmdW5jdGlvbiBhbmQgbW9kaWZ5aW5nIHRoZSBwYWNrZXQgc2VuZGluZyBsb2dpYyB0byBoYW5kbGUgZGV2aWNlIHN0b3AvcmVzZXQgY29ycmVjdGx5LiBUaGlzIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgL2Rldi92aG9zdC12c29jayBpb2N0bHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMTY6MTc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1ODVmNGYyOGQxMWRmZjQyMTA4Mzg0ZWE5MzQxYWE4ZGI1YTQzZDliXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdW4gMjUgMTY6MTc6NTMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy92aG9zdC92c29jay5jIGIvZHJpdmVycy92aG9zdC92c29jay5jXG5pbmRleCA5YWFhYjZiYjgwNjFjMS4uZjBhMGFhN2QzMjAwMDEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3Zob3N0L3Zzb2NrLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdmhvc3QvdnNvY2suY1xuQEAgLTYxLDYgJiM0Mzs2MSw3IEBAIHN0cnVjdCB2aG9zdF92c29jayB7XG4gXG4gXHR1MzIgZ3Vlc3RfY2lkO1xuIFx0Ym9vbCBzZXFwYWNrZXRfYWxsb3c7XG4mIzQzO1x0Ym9vbCBzdGFydGVkO1x0XHQvKiBzZXQgb24gZmlyc3QgU0VUX1JVTk5JTkcoMSk7IG5ldmVyIGNsZWFyZWQgKi9cbiB9O1xuIFxuIHN0YXRpYyB1MzIgdmhvc3RfdHJhbnNwb3J0X2dldF9sb2NhbF9jaWQodm9pZClcbkBAIC0zMDIsMTcgJiM0MzszMDMsMTIgQEAgdmhvc3RfdHJhbnNwb3J0X3NlbmRfcGt0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXQgKm5ldClcbiBcdFx0cmV0dXJuIC1FTk9ERVY7XG4gXHR9XG4gXG4tXHQvKiBGYXN0LWZhaWwgaWYgdGhlIGd1ZXN0IGhhc24mIzM5O3QgZW5hYmxlZCB0aGUgUlggdnEgeWV0LiBRdWV1aW5nIHRoZSBwYWNrZXRcbi1cdCAqIGFuZCBtYWtpbmcgdGhlIGNhbGxlciB3YWl0IGlzIHBvaW50bGVzczogZXZlbiBpZiB0aGUgZ3Vlc3QgbWFuYWdlcyB0byBpbml0XG4tXHQgKiB3aXRoaW4gdGhlIHRpbWVvdXQsIGl0JiMzOTtsbCBpbW1lZGlhdGVseSByZXBseSB3aXRoIFJTVCwgYmVjYXVzZSB0aGVyZSYjMzk7cyBub1xuLVx0ICogbGlzdGVuZXIgb24gdGhlIHBvcnQgeWV0LlxuLVx0ICpcbi1cdCAqIHZob3N0X3ZxX2dldF9iYWNrZW5kKCkgd2l0aG91dCB2cS1cdTAwM2VtdXRleCBpcyBhY2NlcHRhYmxlIGhlcmU6IGxvY2tpbmdcbi1cdCAqIHRoZSBtdXRleCB3b3VsZCBiZSB0b28gZXhwZW5zaXZlIGluIHRoaXMgaG90IHBhdGgsIGFuZCB3ZSBhbHJlYWR5IGhhdmVcbi1cdCAqIGFsbCB0aGUgb3V0Y29tZXMgY292ZXJlZDogaWYgdGhlIGJhY2tlbmQgYmVjb21lcyBOVUxMIHJpZ2h0IGFmdGVyIHRoZSBjaGVjayxcbi1cdCAqIHZob3N0X3RyYW5zcG9ydF9kb19zZW5kX3BrdCgpIHdpbGwgY2hlY2sgaXQgdW5kZXIgdGhlIG11dGV4IGFueXdheS5cbiYjNDM7XHQvKiBGYXN0LWZhaWwgdW50aWwgdGhlIGd1ZXN0IGZpcnN0IGVuYWJsZXMgdGhlIGRldmljZSAoU0VUX1JVTk5JTkcoMSkpLlxuJiM0MztcdCAqIEJlZm9yZSB0aGF0IHRoZXJlIGlzIG5vIGxpc3RlbmVyLCBzbyBxdWV1aW5nIGlzIHBvaW50bGVzcy4gJiMzOTtzdGFydGVkJiMzOTtcbiYjNDM7XHQgKiBpcyBuZXZlciBjbGVhcmVkLCBzbyBvbmNlIHdlJiMzOTtyZSB1cCB3ZSBrZWVwIHF1ZXVpbmcgYWNyb3NzIGxhdGVyXG4mIzQzO1x0ICogc3RvcCAvIENQUi1wYXVzZSB3aW5kb3dzLlxuIFx0ICovXG4tXHRpZiAodW5saWtlbHkoIWRhdGFfcmFjZSh2aG9zdF92cV9nZXRfYmFja2VuZChcdTAwMjZ2c29jay1cdTAwM2V2cXNbVlNPQ0tfVlFfUlhdKSkpKSB7XG4mIzQzO1x0aWYgKHVubGlrZWx5KCFSRUFEX09OQ0UodnNvY2stXHUwMDNlc3RhcnRlZCkpKSB7XG4gXHRcdHJjdV9yZWFkX3VubG9jaygpO1xuIFx0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIC1FSE9TVFVOUkVBQ0g7XG5AQCAtMzIyLDcgJiM0MzszMTgsMTQgQEAgdmhvc3RfdHJhbnNwb3J0X3NlbmRfcGt0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXQgKm5ldClcbiBcdFx0YXRvbWljX2luYyhcdTAwMjZ2c29jay1cdTAwM2VxdWV1ZWRfcmVwbGllcyk7XG4gXG4gXHR2aXJ0aW9fdnNvY2tfc2tiX3F1ZXVlX3RhaWwoXHUwMDI2dnNvY2stXHUwMDNlc2VuZF9wa3RfcXVldWUsIHNrYik7XG4tXHR2aG9zdF92cV93b3JrX3F1ZXVlKFx1MDAyNnZzb2NrLVx1MDAzZXZxc1tWU09DS19WUV9SWF0sIFx1MDAyNnZzb2NrLVx1MDAzZXNlbmRfcGt0X3dvcmspO1xuJiM0MztcbiYjNDM7XHQvKiBTa2lwIHRoZSBraWNrIG9uY2UgdGhlIGJhY2tlbmQgaXMgZ29uZSAoc3RvcC9SRVNFVF9PV05FUik7IHRoZSBza2JcbiYjNDM7XHQgKiBzdGF5cyBxdWV1ZWQgYW5kIHZob3N0X3Zzb2NrX3N0YXJ0KCkgZHJhaW5zIGl0LiBQYWlycyB3aXRoIHRoZVxuJiM0MztcdCAqIHN5bmNocm9uaXplX3JjdSgpIGluIHZob3N0X3Zzb2NrX3Jlc2V0X293bmVyKCkuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKGRhdGFfcmFjZSh2aG9zdF92cV9nZXRfYmFja2VuZChcdTAwMjZ2c29jay1cdTAwM2V2cXNbVlNPQ0tfVlFfUlhdKSkpXG4mIzQzO1x0XHR2aG9zdF92cV93b3JrX3F1ZXVlKFx1MDAyNnZzb2NrLVx1MDAzZXZxc1tWU09DS19WUV9SWF0sXG4mIzQzO1x0XHRcdFx0ICAgIFx1MDAyNnZzb2NrLVx1MDAzZXNlbmRfcGt0X3dvcmspO1xuIFxuIFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4gXHRyZXR1cm4gbGVuO1xuQEAgLTM1MCw3ICYjNDM7MzUzLDE1IEBAIHZob3N0X3RyYW5zcG9ydF9jYW5jZWxfcGt0KHN0cnVjdCB2c29ja19zb2NrICp2c2spXG4gXHRcdGludCBuZXdfY250O1xuIFxuIFx0XHRuZXdfY250ID0gYXRvbWljX3N1Yl9yZXR1cm4oY250LCBcdTAwMjZ2c29jay1cdTAwM2VxdWV1ZWRfcmVwbGllcyk7XG4tXHRcdGlmIChuZXdfY250ICYjNDM7IGNudCBcdTAwM2U9IHR4X3ZxLVx1MDAzZW51bSBcdTAwMjZcdTAwMjYgbmV3X2NudCBcdTAwM2MgdHhfdnEtXHUwMDNlbnVtKVxuJiM0MztcbiYjNDM7XHRcdC8qIFNraXAgdGhlIGtpY2sgb25jZSB0aGUgYmFja2VuZCBpcyBnb25lIChzdG9wL1JFU0VUX09XTkVSKTpcbiYjNDM7XHRcdCAqIHZob3N0X3BvbGxfcXVldWUoKSB3b3VsZCB0b3VjaCB0aGUgd29ya2VyIHdoaWNoIGlzIGJlaW5nIGZyZWVkXG4mIzQzO1x0XHQgKiBieSB0ZWFyZG93biwgZS5nLiBvbiBSRVNFVF9PV05FUi4gIFBhaXJzIHdpdGggdGhlXG4mIzQzO1x0XHQgKiBzeW5jaHJvbml6ZV9yY3UoKSBpbiB2aG9zdF92c29ja19yZXNldF9vd25lcigpLiAgVGhlIFRYIFZRIGlzXG4mIzQzO1x0XHQgKiByZS1raWNrZWQgYnkgdmhvc3RfdnNvY2tfc3RhcnQoKS5cbiYjNDM7XHRcdCAqL1xuJiM0MztcdFx0aWYgKGRhdGFfcmFjZSh2aG9zdF92cV9nZXRfYmFja2VuZCh0eF92cSkpIFx1MDAyNlx1MDAyNlxuJiM0MztcdFx0ICAgIG5ld19jbnQgJiM0MzsgY250IFx1MDAzZT0gdHhfdnEtXHUwMDNlbnVtIFx1MDAyNlx1MDAyNiBuZXdfY250IFx1MDAzYyB0eF92cS1cdTAwM2VudW0pXG4gXHRcdFx0dmhvc3RfcG9sbF9xdWV1ZShcdTAwMjZ0eF92cS1cdTAwM2Vwb2xsKTtcbiBcdH1cbiBcbkBAIC02NDAsMTEgJiM0Mzs2NTEsMjMgQEAgc3RhdGljIGludCB2aG9zdF92c29ja19zdGFydChzdHJ1Y3Qgdmhvc3RfdnNvY2sgKnZzb2NrKVxuIFx0XHRtdXRleF91bmxvY2soXHUwMDI2dnEtXHUwMDNlbXV0ZXgpO1xuIFx0fVxuIFxuJiM0MztcdC8qIFNldCAmIzM5O3N0YXJ0ZWQmIzM5OyBmbGFnIG9uIHRoZSBmaXJzdCBzdGFydDsgbmV2ZXIgY2xlYXJlZCwgc28gc2VuZF9wa3RcbiYjNDM7XHQgKiBrZWVwcyBxdWV1aW5nIChpbnN0ZWFkIG9mIGZhc3QtZmFpbGluZykgb24gbGF0ZXIgc3RvcCAvIENQUiBwYXVzZXMuXG4mIzQzO1x0ICovXG4mIzQzO1x0V1JJVEVfT05DRSh2c29jay1cdTAwM2VzdGFydGVkLCB0cnVlKTtcbiYjNDM7XG4gXHQvKiBTb21lIHBhY2tldHMgbWF5IGhhdmUgYmVlbiBxdWV1ZWQgYmVmb3JlIHRoZSBkZXZpY2Ugd2FzIHN0YXJ0ZWQsXG4gXHQgKiBsZXQmIzM5O3Mga2ljayB0aGUgc2VuZCB3b3JrZXIgdG8gc2VuZCB0aGVtLlxuIFx0ICovXG4gXHR2aG9zdF92cV93b3JrX3F1ZXVlKFx1MDAyNnZzb2NrLVx1MDAzZXZxc1tWU09DS19WUV9SWF0sIFx1MDAyNnZzb2NrLVx1MDAzZXNlbmRfcGt0X3dvcmspO1xuIFxuJiM0MztcdC8qXG4mIzQzO1x0ICogU29tZSBwYWNrZXRzIG1pZ2h0JiMzOTt2ZSBhbHNvIGJlZW4gcXVldWVkIGluIFRYIFZRLiAgVGhhdCBpcyB0aGUgY2FzZVxuJiM0MztcdCAqIGR1cmluZyB0aGUgYnJpZWYgZGV2aWNlIHBhdXNlIGNhdXNlZCBieSBWSE9TVF9SRVNFVF9PV05FUi4gIFJlLXNjYW5cbiYjNDM7XHQgKiB0aGUgVFggVlEgaGVyZSwgbWlycm9yaW5nIHRoZSBSWCBzZW5kLXdvcmtlciBraWNrIGFib3ZlLlxuJiM0MztcdCAqL1xuJiM0MztcdHZob3N0X3BvbGxfcXVldWUoXHUwMDI2dnNvY2stXHUwMDNldnFzW1ZTT0NLX1ZRX1RYXS5wb2xsKTtcbiYjNDM7XG4gXHRtdXRleF91bmxvY2soXHUwMDI2dnNvY2stXHUwMDNlZGV2Lm11dGV4KTtcbiBcdHJldHVybiAwO1xuIFxuQEAgLTY2NCw5ICYjNDM7Njg3LDI0IEBAIHN0YXRpYyBpbnQgdmhvc3RfdnNvY2tfc3RhcnQoc3RydWN0IHZob3N0X3Zzb2NrICp2c29jaylcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuLXN0YXRpYyBpbnQgdmhvc3RfdnNvY2tfc3RvcChzdHJ1Y3Qgdmhvc3RfdnNvY2sgKnZzb2NrLCBib29sIGNoZWNrX293bmVyKVxuJiM0MztzdGF0aWMgdm9pZCB2aG9zdF92c29ja19kcm9wX2JhY2tlbmRzKHN0cnVjdCB2aG9zdF92c29jayAqdnNvY2spXG4ge1xuJiM0MztcdHN0cnVjdCB2aG9zdF92aXJ0cXVldWUgKnZxO1xuIFx0c2l6ZV90IGk7XG4mIzQzO1xuJiM0MztcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXHUwMDI2dnNvY2stXHUwMDNlZGV2Lm11dGV4KTtcbiYjNDM7XG4mIzQzO1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRSh2c29jay1cdTAwM2V2cXMpOyBpJiM0MzsmIzQzOykge1xuJiM0MztcdFx0dnEgPSBcdTAwMjZ2c29jay1cdTAwM2V2cXNbaV07XG4mIzQzO1xuJiM0MztcdFx0bXV0ZXhfbG9jayhcdTAwMjZ2cS1cdTAwM2VtdXRleCk7XG4mIzQzO1x0XHR2aG9zdF92cV9zZXRfYmFja2VuZCh2cSwgTlVMTCk7XG4mIzQzO1x0XHRtdXRleF91bmxvY2soXHUwMDI2dnEtXHUwMDNlbXV0ZXgpO1xuJiM0MztcdH1cbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGludCB2aG9zdF92c29ja19zdG9wKHN0cnVjdCB2aG9zdF92c29jayAqdnNvY2ssIGJvb2wgY2hlY2tfb3duZXIpXG4mIzQzO3tcbiBcdGludCByZXQgPSAwO1xuIFxuIFx0bXV0ZXhfbG9jayhcdTAwMjZ2c29jay1cdTAwM2VkZXYubXV0ZXgpO1xuQEAgLTY3NywxNCAmIzQzOzcxNSw3IEBAIHN0YXRpYyBpbnQgdmhvc3RfdnNvY2tfc3RvcChzdHJ1Y3Qgdmhvc3RfdnNvY2sgKnZzb2NrLCBib29sIGNoZWNrX293bmVyKVxuIFx0XHRcdGdvdG8gZXJyO1xuIFx0fVxuIFxuLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRSh2c29jay1cdTAwM2V2cXMpOyBpJiM0MzsmIzQzOykge1xuLVx0XHRzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cSA9IFx1MDAyNnZzb2NrLVx1MDAzZXZxc1tpXTtcbi1cbi1cdFx0bXV0ZXhfbG9jayhcdTAwMjZ2cS1cdTAwM2VtdXRleCk7XG4tXHRcdHZob3N0X3ZxX3NldF9iYWNrZW5kKHZxLCBOVUxMKTtcbi1cdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnZxLVx1MDAzZW11dGV4KTtcbi1cdH1cbi1cbiYjNDM7XHR2aG9zdF92c29ja19kcm9wX2JhY2tlbmRzKHZzb2NrKTtcbiBlcnI6XG4gXHRtdXRleF91bmxvY2soXHUwMDI2dnNvY2stXHUwMDNlZGV2Lm11dGV4KTtcbiBcdHJldHVybiByZXQ7XG5AQCAtNzIwLDYgJiM0Mzs3NTEsNyBAQCBzdGF0aWMgaW50IHZob3N0X3Zzb2NrX2Rldl9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxuIFxuIFx0dnNvY2stXHUwMDNlZ3Vlc3RfY2lkID0gMDsgLyogbm8gQ0lEIGFzc2lnbmVkIHlldCAqL1xuIFx0dnNvY2stXHUwMDNlc2VxcGFja2V0X2FsbG93ID0gZmFsc2U7XG4mIzQzO1x0dnNvY2stXHUwMDNlc3RhcnRlZCA9IGZhbHNlO1xuIFxuIFx0YXRvbWljX3NldChcdTAwMjZ2c29jay1cdTAwM2VxdWV1ZWRfcmVwbGllcywgMCk7XG4gXG5AQCAtODg2LDYgJiM0Mzs5MTgsMzYgQEAgc3RhdGljIGludCB2aG9zdF92c29ja19zZXRfZmVhdHVyZXMoc3RydWN0IHZob3N0X3Zzb2NrICp2c29jaywgdTY0IGZlYXR1cmVzKVxuIFx0cmV0dXJuIC1FRkFVTFQ7XG4gfVxuIFxuJiM0MztzdGF0aWMgaW50IHZob3N0X3Zzb2NrX3Jlc2V0X293bmVyKHN0cnVjdCB2aG9zdF92c29jayAqdnNvY2spXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3Qgdmhvc3RfaW90bGIgKnVtZW07XG4mIzQzO1x0bG9uZyBlcnI7XG4mIzQzO1xuJiM0MztcdG11dGV4X2xvY2soXHUwMDI2dnNvY2stXHUwMDNlZGV2Lm11dGV4KTtcbiYjNDM7XHRlcnIgPSB2aG9zdF9kZXZfY2hlY2tfb3duZXIoXHUwMDI2dnNvY2stXHUwMDNlZGV2KTtcbiYjNDM7XHRpZiAoZXJyKVxuJiM0MztcdFx0Z290byBkb25lO1xuJiM0MztcdHVtZW0gPSB2aG9zdF9kZXZfcmVzZXRfb3duZXJfcHJlcGFyZSgpO1xuJiM0MztcdGlmICghdW1lbSkge1xuJiM0MztcdFx0ZXJyID0gLUVOT01FTTtcbiYjNDM7XHRcdGdvdG8gZG9uZTtcbiYjNDM7XHR9XG4mIzQzO1x0dmhvc3RfdnNvY2tfZHJvcF9iYWNrZW5kcyh2c29jayk7XG4mIzQzO1xuJiM0MztcdC8qIExldCBpbi1mbGlnaHQgc2VuZF9wa3QoKSBjYWxsZXJzIHN0b3AgdG91Y2hpbmcgdGhlIHdvcmtlciBiZWZvcmUgdGhlXG4mIzQzO1x0ICogZmx1c2ggJiM0MzsgZnJlZSBiZWxvdy4gUGFpcnMgd2l0aCB0aGUgYmFja2VuZCBjaGVjayBpblxuJiM0MztcdCAqIHZob3N0X3RyYW5zcG9ydF9zZW5kX3BrdCgpLlxuJiM0MztcdCAqL1xuJiM0MztcdHN5bmNocm9uaXplX3JjdSgpO1xuJiM0MztcbiYjNDM7XHR2aG9zdF92c29ja19mbHVzaCh2c29jayk7XG4mIzQzO1x0dmhvc3RfZGV2X3N0b3AoXHUwMDI2dnNvY2stXHUwMDNlZGV2KTtcbiYjNDM7XHR2aG9zdF9kZXZfcmVzZXRfb3duZXIoXHUwMDI2dnNvY2stXHUwMDNlZGV2LCB1bWVtKTtcbiYjNDM7ZG9uZTpcbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2dnNvY2stXHUwMDNlZGV2Lm11dGV4KTtcbiYjNDM7XHRyZXR1cm4gZXJyO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBsb25nIHZob3N0X3Zzb2NrX2Rldl9pb2N0bChzdHJ1Y3QgZmlsZSAqZiwgdW5zaWduZWQgaW50IGlvY3RsLFxuIFx0XHRcdFx0ICB1bnNpZ25lZCBsb25nIGFyZylcbiB7XG5AQCAtOTI5LDYgJiM0Mzs5OTEsOCBAQCBzdGF0aWMgbG9uZyB2aG9zdF92c29ja19kZXZfaW9jdGwoc3RydWN0IGZpbGUgKmYsIHVuc2lnbmVkIGludCBpb2N0bCxcbiBcdFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4gXHRcdHZob3N0X3NldF9iYWNrZW5kX2ZlYXR1cmVzKFx1MDAyNnZzb2NrLVx1MDAzZWRldiwgZmVhdHVyZXMpO1xuIFx0XHRyZXR1cm4gMDtcbiYjNDM7XHRjYXNlIFZIT1NUX1JFU0VUX09XTkVSOlxuJiM0MztcdFx0cmV0dXJuIHZob3N0X3Zzb2NrX3Jlc2V0X293bmVyKHZzb2NrKTtcbiBcdGRlZmF1bHQ6XG4gXHRcdG11dGV4X2xvY2soXHUwMDI2dnNvY2stXHUwMDNlZGV2Lm11dGV4KTtcbiBcdFx0ciA9IHZob3N0X2Rldl9pb2N0bChcdTAwMjZ2c29jay1cdTAwM2VkZXYsIGlvY3RsLCBhcmdwKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAxNjoxNzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtWSE9TVF9WU09DSyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Zob3N0X3Zzb2NrX3Jlc2V0X293bmVyJiMzNDssCiAgICAmIzM0O3Zob3N0X3Zzb2NrX3N0YXJ0JiMzNDssCiAgICAmIzM0O3Zob3N0X3Zzb2NrX3N0b3AmIzM0OywKICAgICYjMzQ7dmhvc3RfdnNvY2tfZGV2X2lvY3RsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB2aG9zdC12c29jayBkcml2ZXIgdG8gaGFuZGxlIHRoZSBWSE9TVF9SRVNFVF9PV05FUiBpb2N0bCBleHBsaWNpdGx5LCBhZGRpbmcgYSBuZXcgdmhvc3RfdnNvY2tfcmVzZXRfb3duZXIgZnVuY3Rpb24gYW5kIG1vZGlmeWluZyB0aGUgcGFja2V0IHNlbmRpbmcgbG9naWMgdG8gaGFuZGxlIGRldmljZSBzdG9wL3Jlc2V0IGNvcnJlY3RseS4gVGhpcyBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIC9kZXYvdmhvc3QtdnNvY2sgaW9jdGxzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1ODVmNGYyOGQxMWRmZjQyMTA4Mzg0ZWE5MzQxYWE4ZGI1YTQzZDliCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdW4gMjUgMTY6MTc6NTMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Zob3N0L3Zzb2NrLmMgYi9kcml2ZXJzL3Zob3N0L3Zzb2NrLmMKaW5kZXggOWFhYWI2YmI4MDYxYzEuLmYwYTBhYTdkMzIwMDAxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Zob3N0L3Zzb2NrLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy92aG9zdC92c29jay5jCkBAIC02MSw2ICYjNDM7NjEsNyBAQCBzdHJ1Y3Qgdmhvc3RfdnNvY2sgewogCiAJdTMyIGd1ZXN0X2NpZDsKIAlib29sIHNlcXBhY2tldF9hbGxvdzsKJiM0MzsJYm9vbCBzdGFydGVkOwkJLyogc2V0IG9uIGZpcnN0IFNFVF9SVU5OSU5HKDEpOyBuZXZlciBjbGVhcmVkICovCiB9OwogCiBzdGF0aWMgdTMyIHZob3N0X3RyYW5zcG9ydF9nZXRfbG9jYWxfY2lkKHZvaWQpCkBAIC0zMDIsMTcgJiM0MzszMDMsMTIgQEAgdmhvc3RfdHJhbnNwb3J0X3NlbmRfcGt0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXQgKm5ldCkKIAkJcmV0dXJuIC1FTk9ERVY7CiAJfQogCi0JLyogRmFzdC1mYWlsIGlmIHRoZSBndWVzdCBoYXNuJiMzOTt0IGVuYWJsZWQgdGhlIFJYIHZxIHlldC4gUXVldWluZyB0aGUgcGFja2V0Ci0JICogYW5kIG1ha2luZyB0aGUgY2FsbGVyIHdhaXQgaXMgcG9pbnRsZXNzOiBldmVuIGlmIHRoZSBndWVzdCBtYW5hZ2VzIHRvIGluaXQKLQkgKiB3aXRoaW4gdGhlIHRpbWVvdXQsIGl0JiMzOTtsbCBpbW1lZGlhdGVseSByZXBseSB3aXRoIFJTVCwgYmVjYXVzZSB0aGVyZSYjMzk7cyBubwotCSAqIGxpc3RlbmVyIG9uIHRoZSBwb3J0IHlldC4KLQkgKgotCSAqIHZob3N0X3ZxX2dldF9iYWNrZW5kKCkgd2l0aG91dCB2cS0mZ3Q7bXV0ZXggaXMgYWNjZXB0YWJsZSBoZXJlOiBsb2NraW5nCi0JICogdGhlIG11dGV4IHdvdWxkIGJlIHRvbyBleHBlbnNpdmUgaW4gdGhpcyBob3QgcGF0aCwgYW5kIHdlIGFscmVhZHkgaGF2ZQotCSAqIGFsbCB0aGUgb3V0Y29tZXMgY292ZXJlZDogaWYgdGhlIGJhY2tlbmQgYmVjb21lcyBOVUxMIHJpZ2h0IGFmdGVyIHRoZSBjaGVjaywKLQkgKiB2aG9zdF90cmFuc3BvcnRfZG9fc2VuZF9wa3QoKSB3aWxsIGNoZWNrIGl0IHVuZGVyIHRoZSBtdXRleCBhbnl3YXkuCiYjNDM7CS8qIEZhc3QtZmFpbCB1bnRpbCB0aGUgZ3Vlc3QgZmlyc3QgZW5hYmxlcyB0aGUgZGV2aWNlIChTRVRfUlVOTklORygxKSkuCiYjNDM7CSAqIEJlZm9yZSB0aGF0IHRoZXJlIGlzIG5vIGxpc3RlbmVyLCBzbyBxdWV1aW5nIGlzIHBvaW50bGVzcy4gJiMzOTtzdGFydGVkJiMzOTsKJiM0MzsJICogaXMgbmV2ZXIgY2xlYXJlZCwgc28gb25jZSB3ZSYjMzk7cmUgdXAgd2Uga2VlcCBxdWV1aW5nIGFjcm9zcyBsYXRlcgomIzQzOwkgKiBzdG9wIC8gQ1BSLXBhdXNlIHdpbmRvd3MuCiAJICovCi0JaWYgKHVubGlrZWx5KCFkYXRhX3JhY2Uodmhvc3RfdnFfZ2V0X2JhY2tlbmQoJmFtcDt2c29jay0mZ3Q7dnFzW1ZTT0NLX1ZRX1JYXSkpKSkgewomIzQzOwlpZiAodW5saWtlbHkoIVJFQURfT05DRSh2c29jay0mZ3Q7c3RhcnRlZCkpKSB7CiAJCXJjdV9yZWFkX3VubG9jaygpOwogCQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIC1FSE9TVFVOUkVBQ0g7CkBAIC0zMjIsNyAmIzQzOzMxOCwxNCBAQCB2aG9zdF90cmFuc3BvcnRfc2VuZF9wa3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldCAqbmV0KQogCQlhdG9taWNfaW5jKCZhbXA7dnNvY2stJmd0O3F1ZXVlZF9yZXBsaWVzKTsKIAogCXZpcnRpb192c29ja19za2JfcXVldWVfdGFpbCgmYW1wO3Zzb2NrLSZndDtzZW5kX3BrdF9xdWV1ZSwgc2tiKTsKLQl2aG9zdF92cV93b3JrX3F1ZXVlKCZhbXA7dnNvY2stJmd0O3Zxc1tWU09DS19WUV9SWF0sICZhbXA7dnNvY2stJmd0O3NlbmRfcGt0X3dvcmspOwomIzQzOwomIzQzOwkvKiBTa2lwIHRoZSBraWNrIG9uY2UgdGhlIGJhY2tlbmQgaXMgZ29uZSAoc3RvcC9SRVNFVF9PV05FUik7IHRoZSBza2IKJiM0MzsJICogc3RheXMgcXVldWVkIGFuZCB2aG9zdF92c29ja19zdGFydCgpIGRyYWlucyBpdC4gUGFpcnMgd2l0aCB0aGUKJiM0MzsJICogc3luY2hyb25pemVfcmN1KCkgaW4gdmhvc3RfdnNvY2tfcmVzZXRfb3duZXIoKS4KJiM0MzsJICovCiYjNDM7CWlmIChkYXRhX3JhY2Uodmhvc3RfdnFfZ2V0X2JhY2tlbmQoJmFtcDt2c29jay0mZ3Q7dnFzW1ZTT0NLX1ZRX1JYXSkpKQomIzQzOwkJdmhvc3RfdnFfd29ya19xdWV1ZSgmYW1wO3Zzb2NrLSZndDt2cXNbVlNPQ0tfVlFfUlhdLAomIzQzOwkJCQkgICAgJmFtcDt2c29jay0mZ3Q7c2VuZF9wa3Rfd29yayk7CiAKIAlyY3VfcmVhZF91bmxvY2soKTsKIAlyZXR1cm4gbGVuOwpAQCAtMzUwLDcgJiM0MzszNTMsMTUgQEAgdmhvc3RfdHJhbnNwb3J0X2NhbmNlbF9wa3Qoc3RydWN0IHZzb2NrX3NvY2sgKnZzaykKIAkJaW50IG5ld19jbnQ7CiAKIAkJbmV3X2NudCA9IGF0b21pY19zdWJfcmV0dXJuKGNudCwgJmFtcDt2c29jay0mZ3Q7cXVldWVkX3JlcGxpZXMpOwotCQlpZiAobmV3X2NudCAmIzQzOyBjbnQgJmd0Oz0gdHhfdnEtJmd0O251bSAmYW1wOyZhbXA7IG5ld19jbnQgJmx0OyB0eF92cS0mZ3Q7bnVtKQomIzQzOwomIzQzOwkJLyogU2tpcCB0aGUga2ljayBvbmNlIHRoZSBiYWNrZW5kIGlzIGdvbmUgKHN0b3AvUkVTRVRfT1dORVIpOgomIzQzOwkJICogdmhvc3RfcG9sbF9xdWV1ZSgpIHdvdWxkIHRvdWNoIHRoZSB3b3JrZXIgd2hpY2ggaXMgYmVpbmcgZnJlZWQKJiM0MzsJCSAqIGJ5IHRlYXJkb3duLCBlLmcuIG9uIFJFU0VUX09XTkVSLiAgUGFpcnMgd2l0aCB0aGUKJiM0MzsJCSAqIHN5bmNocm9uaXplX3JjdSgpIGluIHZob3N0X3Zzb2NrX3Jlc2V0X293bmVyKCkuICBUaGUgVFggVlEgaXMKJiM0MzsJCSAqIHJlLWtpY2tlZCBieSB2aG9zdF92c29ja19zdGFydCgpLgomIzQzOwkJICovCiYjNDM7CQlpZiAoZGF0YV9yYWNlKHZob3N0X3ZxX2dldF9iYWNrZW5kKHR4X3ZxKSkgJmFtcDsmYW1wOwomIzQzOwkJICAgIG5ld19jbnQgJiM0MzsgY250ICZndDs9IHR4X3ZxLSZndDtudW0gJmFtcDsmYW1wOyBuZXdfY250ICZsdDsgdHhfdnEtJmd0O251bSkKIAkJCXZob3N0X3BvbGxfcXVldWUoJmFtcDt0eF92cS0mZ3Q7cG9sbCk7CiAJfQogCkBAIC02NDAsMTEgJiM0Mzs2NTEsMjMgQEAgc3RhdGljIGludCB2aG9zdF92c29ja19zdGFydChzdHJ1Y3Qgdmhvc3RfdnNvY2sgKnZzb2NrKQogCQltdXRleF91bmxvY2soJmFtcDt2cS0mZ3Q7bXV0ZXgpOwogCX0KIAomIzQzOwkvKiBTZXQgJiMzOTtzdGFydGVkJiMzOTsgZmxhZyBvbiB0aGUgZmlyc3Qgc3RhcnQ7IG5ldmVyIGNsZWFyZWQsIHNvIHNlbmRfcGt0CiYjNDM7CSAqIGtlZXBzIHF1ZXVpbmcgKGluc3RlYWQgb2YgZmFzdC1mYWlsaW5nKSBvbiBsYXRlciBzdG9wIC8gQ1BSIHBhdXNlcy4KJiM0MzsJICovCiYjNDM7CVdSSVRFX09OQ0UodnNvY2stJmd0O3N0YXJ0ZWQsIHRydWUpOwomIzQzOwogCS8qIFNvbWUgcGFja2V0cyBtYXkgaGF2ZSBiZWVuIHF1ZXVlZCBiZWZvcmUgdGhlIGRldmljZSB3YXMgc3RhcnRlZCwKIAkgKiBsZXQmIzM5O3Mga2ljayB0aGUgc2VuZCB3b3JrZXIgdG8gc2VuZCB0aGVtLgogCSAqLwogCXZob3N0X3ZxX3dvcmtfcXVldWUoJmFtcDt2c29jay0mZ3Q7dnFzW1ZTT0NLX1ZRX1JYXSwgJmFtcDt2c29jay0mZ3Q7c2VuZF9wa3Rfd29yayk7CiAKJiM0MzsJLyoKJiM0MzsJICogU29tZSBwYWNrZXRzIG1pZ2h0JiMzOTt2ZSBhbHNvIGJlZW4gcXVldWVkIGluIFRYIFZRLiAgVGhhdCBpcyB0aGUgY2FzZQomIzQzOwkgKiBkdXJpbmcgdGhlIGJyaWVmIGRldmljZSBwYXVzZSBjYXVzZWQgYnkgVkhPU1RfUkVTRVRfT1dORVIuICBSZS1zY2FuCiYjNDM7CSAqIHRoZSBUWCBWUSBoZXJlLCBtaXJyb3JpbmcgdGhlIFJYIHNlbmQtd29ya2VyIGtpY2sgYWJvdmUuCiYjNDM7CSAqLwomIzQzOwl2aG9zdF9wb2xsX3F1ZXVlKCZhbXA7dnNvY2stJmd0O3Zxc1tWU09DS19WUV9UWF0ucG9sbCk7CiYjNDM7CiAJbXV0ZXhfdW5sb2NrKCZhbXA7dnNvY2stJmd0O2Rldi5tdXRleCk7CiAJcmV0dXJuIDA7CiAKQEAgLTY2NCw5ICYjNDM7Njg3LDI0IEBAIHN0YXRpYyBpbnQgdmhvc3RfdnNvY2tfc3RhcnQoc3RydWN0IHZob3N0X3Zzb2NrICp2c29jaykKIAlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgaW50IHZob3N0X3Zzb2NrX3N0b3Aoc3RydWN0IHZob3N0X3Zzb2NrICp2c29jaywgYm9vbCBjaGVja19vd25lcikKJiM0MztzdGF0aWMgdm9pZCB2aG9zdF92c29ja19kcm9wX2JhY2tlbmRzKHN0cnVjdCB2aG9zdF92c29jayAqdnNvY2spCiB7CiYjNDM7CXN0cnVjdCB2aG9zdF92aXJ0cXVldWUgKnZxOwogCXNpemVfdCBpOwomIzQzOwomIzQzOwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZhbXA7dnNvY2stJmd0O2Rldi5tdXRleCk7CiYjNDM7CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBBUlJBWV9TSVpFKHZzb2NrLSZndDt2cXMpOyBpJiM0MzsmIzQzOykgewomIzQzOwkJdnEgPSAmYW1wO3Zzb2NrLSZndDt2cXNbaV07CiYjNDM7CiYjNDM7CQltdXRleF9sb2NrKCZhbXA7dnEtJmd0O211dGV4KTsKJiM0MzsJCXZob3N0X3ZxX3NldF9iYWNrZW5kKHZxLCBOVUxMKTsKJiM0MzsJCW11dGV4X3VubG9jaygmYW1wO3ZxLSZndDttdXRleCk7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGludCB2aG9zdF92c29ja19zdG9wKHN0cnVjdCB2aG9zdF92c29jayAqdnNvY2ssIGJvb2wgY2hlY2tfb3duZXIpCiYjNDM7ewogCWludCByZXQgPSAwOwogCiAJbXV0ZXhfbG9jaygmYW1wO3Zzb2NrLSZndDtkZXYubXV0ZXgpOwpAQCAtNjc3LDE0ICYjNDM7NzE1LDcgQEAgc3RhdGljIGludCB2aG9zdF92c29ja19zdG9wKHN0cnVjdCB2aG9zdF92c29jayAqdnNvY2ssIGJvb2wgY2hlY2tfb3duZXIpCiAJCQlnb3RvIGVycjsKIAl9CiAKLQlmb3IgKGkgPSAwOyBpICZsdDsgQVJSQVlfU0laRSh2c29jay0mZ3Q7dnFzKTsgaSYjNDM7JiM0MzspIHsKLQkJc3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnEgPSAmYW1wO3Zzb2NrLSZndDt2cXNbaV07Ci0KLQkJbXV0ZXhfbG9jaygmYW1wO3ZxLSZndDttdXRleCk7Ci0JCXZob3N0X3ZxX3NldF9iYWNrZW5kKHZxLCBOVUxMKTsKLQkJbXV0ZXhfdW5sb2NrKCZhbXA7dnEtJmd0O211dGV4KTsKLQl9Ci0KJiM0MzsJdmhvc3RfdnNvY2tfZHJvcF9iYWNrZW5kcyh2c29jayk7CiBlcnI6CiAJbXV0ZXhfdW5sb2NrKCZhbXA7dnNvY2stJmd0O2Rldi5tdXRleCk7CiAJcmV0dXJuIHJldDsKQEAgLTcyMCw2ICYjNDM7NzUxLDcgQEAgc3RhdGljIGludCB2aG9zdF92c29ja19kZXZfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKIAogCXZzb2NrLSZndDtndWVzdF9jaWQgPSAwOyAvKiBubyBDSUQgYXNzaWduZWQgeWV0ICovCiAJdnNvY2stJmd0O3NlcXBhY2tldF9hbGxvdyA9IGZhbHNlOwomIzQzOwl2c29jay0mZ3Q7c3RhcnRlZCA9IGZhbHNlOwogCiAJYXRvbWljX3NldCgmYW1wO3Zzb2NrLSZndDtxdWV1ZWRfcmVwbGllcywgMCk7CiAKQEAgLTg4Niw2ICYjNDM7OTE4LDM2IEBAIHN0YXRpYyBpbnQgdmhvc3RfdnNvY2tfc2V0X2ZlYXR1cmVzKHN0cnVjdCB2aG9zdF92c29jayAqdnNvY2ssIHU2NCBmZWF0dXJlcykKIAlyZXR1cm4gLUVGQVVMVDsKIH0KIAomIzQzO3N0YXRpYyBpbnQgdmhvc3RfdnNvY2tfcmVzZXRfb3duZXIoc3RydWN0IHZob3N0X3Zzb2NrICp2c29jaykKJiM0Mzt7CiYjNDM7CXN0cnVjdCB2aG9zdF9pb3RsYiAqdW1lbTsKJiM0MzsJbG9uZyBlcnI7CiYjNDM7CiYjNDM7CW11dGV4X2xvY2soJmFtcDt2c29jay0mZ3Q7ZGV2Lm11dGV4KTsKJiM0MzsJZXJyID0gdmhvc3RfZGV2X2NoZWNrX293bmVyKCZhbXA7dnNvY2stJmd0O2Rldik7CiYjNDM7CWlmIChlcnIpCiYjNDM7CQlnb3RvIGRvbmU7CiYjNDM7CXVtZW0gPSB2aG9zdF9kZXZfcmVzZXRfb3duZXJfcHJlcGFyZSgpOwomIzQzOwlpZiAoIXVtZW0pIHsKJiM0MzsJCWVyciA9IC1FTk9NRU07CiYjNDM7CQlnb3RvIGRvbmU7CiYjNDM7CX0KJiM0MzsJdmhvc3RfdnNvY2tfZHJvcF9iYWNrZW5kcyh2c29jayk7CiYjNDM7CiYjNDM7CS8qIExldCBpbi1mbGlnaHQgc2VuZF9wa3QoKSBjYWxsZXJzIHN0b3AgdG91Y2hpbmcgdGhlIHdvcmtlciBiZWZvcmUgdGhlCiYjNDM7CSAqIGZsdXNoICYjNDM7IGZyZWUgYmVsb3cuIFBhaXJzIHdpdGggdGhlIGJhY2tlbmQgY2hlY2sgaW4KJiM0MzsJICogdmhvc3RfdHJhbnNwb3J0X3NlbmRfcGt0KCkuCiYjNDM7CSAqLwomIzQzOwlzeW5jaHJvbml6ZV9yY3UoKTsKJiM0MzsKJiM0MzsJdmhvc3RfdnNvY2tfZmx1c2godnNvY2spOwomIzQzOwl2aG9zdF9kZXZfc3RvcCgmYW1wO3Zzb2NrLSZndDtkZXYpOwomIzQzOwl2aG9zdF9kZXZfcmVzZXRfb3duZXIoJmFtcDt2c29jay0mZ3Q7ZGV2LCB1bWVtKTsKJiM0Mztkb25lOgomIzQzOwltdXRleF91bmxvY2soJmFtcDt2c29jay0mZ3Q7ZGV2Lm11dGV4KTsKJiM0MzsJcmV0dXJuIGVycjsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgbG9uZyB2aG9zdF92c29ja19kZXZfaW9jdGwoc3RydWN0IGZpbGUgKmYsIHVuc2lnbmVkIGludCBpb2N0bCwKIAkJCQkgIHVuc2lnbmVkIGxvbmcgYXJnKQogewpAQCAtOTI5LDYgJiM0Mzs5OTEsOCBAQCBzdGF0aWMgbG9uZyB2aG9zdF92c29ja19kZXZfaW9jdGwoc3RydWN0IGZpbGUgKmYsIHVuc2lnbmVkIGludCBpb2N0bCwKIAkJCXJldHVybiAtRU9QTk9UU1VQUDsKIAkJdmhvc3Rfc2V0X2JhY2tlbmRfZmVhdHVyZXMoJmFtcDt2c29jay0mZ3Q7ZGV2LCBmZWF0dXJlcyk7CiAJCXJldHVybiAwOwomIzQzOwljYXNlIFZIT1NUX1JFU0VUX09XTkVSOgomIzQzOwkJcmV0dXJuIHZob3N0X3Zzb2NrX3Jlc2V0X293bmVyKHZzb2NrKTsKIAlkZWZhdWx0OgogCQltdXRleF9sb2NrKCZhbXA7dnNvY2stJmd0O2Rldi5tdXRleCk7CiAJCXIgPSB2aG9zdF9kZXZfaW9jdGwoJmFtcDt2c29jay0mZ3Q7ZGV2LCBpb2N0bCwgYXJncCk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDE2OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxMzQKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAyMDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKkFuYWx5emluZyB0aGUgVmhvc3QtVlNPQ0sgUGF0Y2ggYW5kIFJlYWNoYWJpbGl0eSoqCgpSaWdodCwgc28gd2UmIzM5O3ZlIGdvdCBhIHBhdGNoIHRoYXQmIzM5O3MgdG91Y2hlZCBgZHJpdmVycy92aG9zdC92c29jay5jYC4gVGhlIGNoYW5nZXMgaW52b2x2ZSBhIG5ldyBgc3RhcnRlZGAgZmxhZyB3aXRoaW4gdGhlIGB2aG9zdF92c29ja2Agc3RydWN0dXJlLCBhbmQgaXQgbG9va3MgbGlrZSBgdmhvc3RfdHJhbnNwb3J0X3NlbmRfcGt0YCBhbmQgYHZob3N0X3RyYW5zcG9ydF9jYW5jZWxfcGt0YCBhcmUgZ2V0dGluZyB0d2Vha2VkLiBJbnRlcmVzdGluZy4gQWxzbywgYSBuZXcgZnVuY3Rpb24sIGB2aG9zdF92c29ja19yZXNldF9vd25lcmAsIGhhcyBiZWVuIGFkZGVkIGZvciBoYW5kbGluZyB0aGUgYFZIT1NUX1JFU0VUX09XTkVSYCBpb2N0bC4KCk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBpcyB0aGlzIGV2ZW4gKnJlYWNoYWJsZSo/IElzIHRoaXMgY29kZSBwYXRoIGFjdGl2ZT8gV2VsbCwgYGRyaXZlcnMvdmhvc3QvdnNvY2suY2AgaXMgdGhlIHZob3N0LXZzb2NrIGRyaXZlciwgYW5kIHRoYXQgc2hvdWxkIGJlIHByZXR0eSBjbGVhci4gSXQmIzM5O3MgdGhlIHByb3ZpZGVyIG9mIHRoZSBgL2Rldi92aG9zdC12c29ja2AgZGV2aWNlIG5vZGUuIEFuZCB0aGUgYFZIT1NUX1JFU0VUX09XTkVSYCBpb2N0bCBpcyBoYW5kbGVkIHdpdGhpbiB0aGF0IGRyaXZlci4gVGhhdCBpb2N0bCBpbXBsZW1lbnRhdGlvbiBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZSwgYW5kIHRodXMgZnVuY3Rpb25hbC4gTm8gY29uY2VybnMgdGhlcmUuCgpOb3csIGxldCYjMzk7cyB0aGluayBhYm91dCB0aGUgY29uZmlndXJhdGlvbi4gYGRyaXZlcnMvdmhvc3QvdnNvY2suY2AgaXMgY29tcGlsZWQgYmFzZWQgb24gdGhlIGBDT05GSUdfVkhPU1RfVlNPQ0tgIGNvbmZpZyBvcHRpb24uIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgdGhpcyBpcyBjb3JyZWN0bHkgZW5hYmxlZCwgYnV0IGFzc3VtaW5nIGl0IGlzLCB0aGVuIHRoZSBjb2RlIHBhdGggaXMgY2VydGFpbmx5IHZhbGlkLiBJJiMzOTtsbCBsb29rIGludG8gdmVyaWZ5aW5nIHRoZSBjb25maWcgc2hvcnRseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAxNjoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtWSE9TVF9WU09DSyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmhvc3QvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmhvc3QvS2NvbmZpZz00Nj1jb25maWcgVkhPU1RfU0NTSVxuLS1cbmRyaXZlcnMvdmhvc3QvS2NvbmZpZy01NS1cbmRyaXZlcnMvdmhvc3QvS2NvbmZpZzo1Njpjb25maWcgVkhPU1RfVlNPQ0tcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZy01Ny1cdHRyaXN0YXRlIFwmIzM0O3Zob3N0IHZpcnRpby12c29jayBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL3Zob3N0L01ha2VmaWxlPTY9dmhvc3Rfc2NzaS15IDo9IHNjc2kub1xuZHJpdmVycy92aG9zdC9NYWtlZmlsZS03LVxuZHJpdmVycy92aG9zdC9NYWtlZmlsZTo4Om9iai0kKENPTkZJR19WSE9TVF9WU09DSykgJiM0Mzs9IHZob3N0X3Zzb2NrLm9cbmRyaXZlcnMvdmhvc3QvTWFrZWZpbGUtOS12aG9zdF92c29jay15IDo9IHZzb2NrLm9cbi0tXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmM9ODU4PXN0YXRpYyB2b2lkIF9fdmhvc3RfdnFfYXR0YWNoX3dvcmtlcihzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cSxcbi0tXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtOTA3LVx0XHQvKlxuZHJpdmVycy92aG9zdC92aG9zdC5jOjkwODpcdFx0ICogdnNvY2sgY2FuIHF1ZXVlIGFueXRpbWUgYWZ0ZXIgVkhPU1RfVlNPQ0tfU0VUX0dVRVNUX0NJRC5cbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYy05MDktXHRcdCAqIFdhcm4gaWYgaXQgYWRkcyBzdXBwb3J0IGZvciBtdWx0aXBsZSB3b3JrZXJzIGJ1dCBmb3JnZXRzIHRvXG4tLVxuZHJpdmVycy92aG9zdC92c29jay5jLTIxLVxuZHJpdmVycy92aG9zdC92c29jay5jOjIyOiNkZWZpbmUgVkhPU1RfVlNPQ0tfREVGQVVMVF9IT1NUX0NJRFx0MlxuZHJpdmVycy92aG9zdC92c29jay5jLTIzLS8qIE1heCBudW1iZXIgb2YgYnl0ZXMgdHJhbnNmZXJyZWQgYmVmb3JlIHJlcXVldWVpbmcgdGhlIGpvYi5cbmRyaXZlcnMvdmhvc3QvdnNvY2suYy0yNC0gKiBVc2luZyB0aGlzIGxpbWl0IHByZXZlbnRzIG9uZSB2aXJ0cXVldWUgZnJvbSBzdGFydmluZyBvdGhlcnMuICovXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmM6MjU6I2RlZmluZSBWSE9TVF9WU09DS19XRUlHSFQgMHg4MDAwMFxuZHJpdmVycy92aG9zdC92c29jay5jLTI2LS8qIE1heCBudW1iZXIgb2YgcGFja2V0cyB0cmFuc2ZlcnJlZCBiZWZvcmUgcmVxdWV1ZWluZyB0aGUgam9iLlxuLS1cbmRyaXZlcnMvdmhvc3QvdnNvY2suYy0yOS0gKi9cbmRyaXZlcnMvdmhvc3QvdnNvY2suYzozMDojZGVmaW5lIFZIT1NUX1ZTT0NLX1BLVF9XRUlHSFQgMjU2XG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmMtMzEtXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmM9MzI9c3RhdGljIGNvbnN0IGludCB2aG9zdF92c29ja19iaXRzW10gPSB7XG4tLVxuZHJpdmVycy92aG9zdC92c29jay5jLTM3LVxuZHJpdmVycy92aG9zdC92c29jay5jOjM4OiNkZWZpbmUgVkhPU1RfVlNPQ0tfRkVBVFVSRVMgVkhPU1RfRkVBVFVSRVNfVTY0KHZob3N0X3Zzb2NrX2JpdHMsIDApXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmMtMzktXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmM9NDA9ZW51bSB7XG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmM6NDE6XHRWSE9TVF9WU09DS19CQUNLRU5EX0ZFQVRVUkVTID0gKDFVTEwgXHUwMDNjXHUwMDNjIFZIT1NUX0JBQ0tFTkRfRl9JT1RMQl9NU0dfVjIpXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmMtNDItfTtcbi0tXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmM9Njc9c3RhdGljIHUzMiB2aG9zdF90cmFuc3BvcnRfZ2V0X2xvY2FsX2NpZCh2b2lkKVxuZHJpdmVycy92aG9zdC92c29jay5jLTY4LXtcbmRyaXZlcnMvdmhvc3QvdnNvY2suYzo2OTpcdHJldHVybiBWSE9TVF9WU09DS19ERUZBVUxUX0hPU1RfQ0lEO1xuZHJpdmVycy92aG9zdC92c29jay5jLTcwLX1cbi0tXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmM9NzI5PXN0YXRpYyBpbnQgdmhvc3RfdnNvY2tfZGV2X29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpXG4tLVxuZHJpdmVycy92aG9zdC92c29jay5jLTc2My1cdHZob3N0X2Rldl9pbml0KFx1MDAyNnZzb2NrLVx1MDAzZWRldiwgdnFzLCBBUlJBWV9TSVpFKHZzb2NrLVx1MDAzZXZxcyksXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmM6NzY0Olx0XHQgICAgICAgVUlPX01BWElPViwgVkhPU1RfVlNPQ0tfUEtUX1dFSUdIVCxcbmRyaXZlcnMvdmhvc3QvdnNvY2suYzo3NjU6XHRcdCAgICAgICBWSE9TVF9WU09DS19XRUlHSFQsIHRydWUsIE5VTEwpO1xuZHJpdmVycy92aG9zdC92c29jay5jLTc2Ni1cbi0tXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmM9ODg2PXN0YXRpYyBpbnQgdmhvc3RfdnNvY2tfc2V0X2ZlYXR1cmVzKHN0cnVjdCB2aG9zdF92c29jayAqdnNvY2ssIHU2NCBmZWF0dXJlcylcbi0tXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmMtODkwLVxuZHJpdmVycy92aG9zdC92c29jay5jOjg5MTpcdGlmIChmZWF0dXJlcyBcdTAwMjYgflZIT1NUX1ZTT0NLX0ZFQVRVUkVTKVxuZHJpdmVycy92aG9zdC92c29jay5jLTg5Mi1cdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuLS1cbmRyaXZlcnMvdmhvc3QvdnNvY2suYz05NTE9c3RhdGljIGxvbmcgdmhvc3RfdnNvY2tfZGV2X2lvY3RsKHN0cnVjdCBmaWxlICpmLCB1bnNpZ25lZCBpbnQgaW9jdGwsXG4tLVxuZHJpdmVycy92aG9zdC92c29jay5jLTk2MS1cdHN3aXRjaCAoaW9jdGwpIHtcbmRyaXZlcnMvdmhvc3QvdnNvY2suYzo5NjI6XHRjYXNlIFZIT1NUX1ZTT0NLX1NFVF9HVUVTVF9DSUQ6XG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmMtOTYzLVx0XHRpZiAoY29weV9mcm9tX3VzZXIoXHUwMDI2Z3Vlc3RfY2lkLCBhcmdwLCBzaXplb2YoZ3Vlc3RfY2lkKSkpXG4tLVxuZHJpdmVycy92aG9zdC92c29jay5jLTk2NS1cdFx0cmV0dXJuIHZob3N0X3Zzb2NrX3NldF9jaWQodnNvY2ssIGd1ZXN0X2NpZCk7XG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmM6OTY2Olx0Y2FzZSBWSE9TVF9WU09DS19TRVRfUlVOTklORzpcbmRyaXZlcnMvdmhvc3QvdnNvY2suYy05NjctXHRcdGlmIChjb3B5X2Zyb21fdXNlcihcdTAwMjZzdGFydCwgYXJncCwgc2l6ZW9mKHN0YXJ0KSkpXG4tLVxuZHJpdmVycy92aG9zdC92c29jay5jLTk3My1cdGNhc2UgVkhPU1RfR0VUX0ZFQVRVUkVTOlxuZHJpdmVycy92aG9zdC92c29jay5jOjk3NDpcdFx0ZmVhdHVyZXMgPSBWSE9TVF9WU09DS19GRUFUVVJFUztcbmRyaXZlcnMvdmhvc3QvdnNvY2suYy05NzUtXHRcdGlmIChjb3B5X3RvX3VzZXIoYXJncCwgXHUwMDI2ZmVhdHVyZXMsIHNpemVvZihmZWF0dXJlcykpKVxuLS1cbmRyaXZlcnMvdmhvc3QvdnNvY2suYy05ODItXHRjYXNlIFZIT1NUX0dFVF9CQUNLRU5EX0ZFQVRVUkVTOlxuZHJpdmVycy92aG9zdC92c29jay5jOjk4MzpcdFx0ZmVhdHVyZXMgPSBWSE9TVF9WU09DS19CQUNLRU5EX0ZFQVRVUkVTO1xuZHJpdmVycy92aG9zdC92c29jay5jLTk4NC1cdFx0aWYgKGNvcHlfdG9fdXNlcihhcmdwLCBcdTAwMjZmZWF0dXJlcywgc2l6ZW9mKGZlYXR1cmVzKSkpXG4tLVxuZHJpdmVycy92aG9zdC92c29jay5jLTk4OS1cdFx0XHRyZXR1cm4gLUVGQVVMVDtcbmRyaXZlcnMvdmhvc3QvdnNvY2suYzo5OTA6XHRcdGlmIChmZWF0dXJlcyBcdTAwMjYgflZIT1NUX1ZTT0NLX0JBQ0tFTkRfRkVBVFVSRVMpXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmMtOTkxLVx0XHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbi0tXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmM9MTA0OD1zdGF0aWMgc3RydWN0IG1pc2NkZXZpY2Ugdmhvc3RfdnNvY2tfbWlzYyA9IHtcbmRyaXZlcnMvdmhvc3QvdnNvY2suYzoxMDQ5Olx0Lm1pbm9yID0gVkhPU1RfVlNPQ0tfTUlOT1IsXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmMtMTA1MC1cdC5uYW1lID0gXCYjMzQ7dmhvc3QtdnNvY2tcJiMzNDssXG4tLVxuZHJpdmVycy92aG9zdC92c29jay5jPTEwODI9TU9EVUxFX0RFU0NSSVBUSU9OKFwmIzM0O3Zob3N0IHRyYW5zcG9ydCBmb3IgdnNvY2sgXCYjMzQ7KTtcbmRyaXZlcnMvdmhvc3QvdnNvY2suYzoxMDgzOk1PRFVMRV9BTElBU19NSVNDREVWKFZIT1NUX1ZTT0NLX01JTk9SKTtcbmRyaXZlcnMvdmhvc3QvdnNvY2suYy0xMDg0LU1PRFVMRV9BTElBUyhcJiMzNDtkZXZuYW1lOnZob3N0LXZzb2NrXCYjMzQ7KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAxNjoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MTg3CgkJCQkJCQlvdXRwdXQ6IDE1MQoJCQkJCQkJdGhvdWdodHM6IDExMDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgdGhlIHZob3N0LXZzb2NrIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYWltZWQgc3F1YXJlbHkgYXQgdGhlIGBkcml2ZXJzL3Zob3N0L3Zzb2NrLmNgIGZpbGUuIE15IGluaXRpYWwgaW1wcmVzc2lvbiBpcyB0aGF0IGl0JiMzOTtzIGZ1bmN0aW9uYWwgYW5kIGludHJvZHVjZXMgYSBmZXcgc2lnbmlmaWNhbnQgY2hhbmdlcy4gRmlyc3QsIGEgYHN0YXJ0ZWRgIGZsYWcgaXMgYWRkZWQgdG8gdGhlIGB2aG9zdF92c29ja2Agc3RydWN0LiBUaGlzIGlzIHNtYXJ0OyB0aGV5JiMzOTtyZSBjaGFuZ2luZyB0aGUgbG9naWMgaW4gYHZob3N0X3RyYW5zcG9ydF9zZW5kX3BrdGAgdG8gcmVseSBvbiB0aGlzIGBzdGFydGVkYCBmbGFnIGluc3RlYWQgb2YganVzdCBjaGVja2luZyBmb3IgYSBub24tTlVMTCBiYWNrZW5kLiBUaGlzIGlzIGNsZWFuZXIgYW5kIG1ha2VzIHRoZSBjb250cm9sIGZsb3cgbW9yZSBleHBsaWNpdC4gVGhlIGB2aG9zdF92c29ja19zdGFydGAgZnVuY3Rpb24gbm93IHNldHMgdGhpcyBgc3RhcnRlZGAgZmxhZywgd2hpY2ggbWFrZXMgc2Vuc2UuCgpUaGUgbW9zdCBpbnRlcmVzdGluZyBwYXJ0IGlzIHRoZSBhZGRpdGlvbiBvZiBgdmhvc3RfdnNvY2tfcmVzZXRfb3duZXJgLiBUaGlzIGlzIGNsZWFybHkgaW4gcmVzcG9uc2UgdG8gaGFuZGxpbmcgdGhlIGBWSE9TVF9SRVNFVF9PV05FUmAgaW9jdGwuIFByZXZpb3VzbHksIHRoaXMgd2FzIGhhbmRsZWQgYnkgYSBnZW5lcmljIGhhbmRsZXIsIGJ1dCBub3csIGl0IGhhcyBkZWRpY2F0ZWQgbG9naWMgZm9yIHZzb2NrLiBUaGUgcGF0Y2ggYWxzbyBpbnRyb2R1Y2VzIGB2aG9zdF92c29ja19kcm9wX2JhY2tlbmRzYCwgY2FsbGVkIGZyb20gYm90aCBgdmhvc3RfdnNvY2tfc3RvcGAgYW5kIGB2aG9zdF92c29ja19yZXNldF9vd25lcmAuIFRoaXMgc3VnZ2VzdHMgYSBjYXJlZnVsIGNsZWFudXAgcHJvY2VkdXJlIHdoZW4gdGhlIGRldmljZSBpcyBzdG9wcGVkIG9yIHJlc2V0LgoKVGhlIHBhdGNoIGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlOyB0aGUgdmhvc3QtdnNvY2sgZHJpdmVyIGlzIGV4cG9zZWQgdmlhIGAvZGV2L3Zob3N0LXZzb2NrYCBpb2N0bHMuIEkgc2VlIHRoYXQgYHZob3N0X3Zzb2NrX2Rldl9pb2N0bGAgaGFuZGxlcyBgVkhPU1RfUkVTRVRfT1dORVJgIG5vdywgaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCBpb2N0bCBoYW5kbGVyLiBJJiMzOTttIGZvY3VzaW5nIG9uIHRoZSBleHBsaWNpdCBoYW5kbGluZyBvZiBgVkhPU1RfUkVTRVRfT1dORVJgLgoKSSYjMzk7dmUgY2hlY2tlZCB0aGUgYEtjb25maWdgIGZpbGUsIGFuZCBgQ09ORklHX1ZIT1NUX1ZTT0NLYCBpcyB0aGUgcmVsZXZhbnQgY29uZmlnIG9wdGlvbi4KCkkgbmVlZCB0byBkZWNpZGUgd2hpY2ggZnVuY3Rpb25zIGFyZSB0aGUga2V5IG9uZXMgdG8gZm9jdXMgb24gZm9yIGZ1enppbmcuIEkgaW5pdGlhbGx5IGxvb2tlZCBhdCBgdmhvc3RfdnNvY2tfcmVzZXRfb3duZXJgLCBgdmhvc3RfdnNvY2tfZGV2X2lvY3RsYCwgYHZob3N0X3Zzb2NrX3N0YXJ0YCwgYHZob3N0X3Zzb2NrX3N0b3BgLCBgdmhvc3RfdHJhbnNwb3J0X3NlbmRfcGt0YCwgYW5kIGB2aG9zdF90cmFuc3BvcnRfY2FuY2VsX3BrdGAsIGJ1dCBgdmhvc3RfdHJhbnNwb3J0X3NlbmRfcGt0YCBhbmQgYHZob3N0X3RyYW5zcG9ydF9jYW5jZWxfcGt0YCBhcmUgaG90LXBhdGgsIHNvIEkgd2lsbCBhdm9pZCB0aGVtLiBTbywgdGhlIGtleSBmdW5jdGlvbnMgYXJlIGB2aG9zdF92c29ja19yZXNldF9vd25lcmAsIGB2aG9zdF92c29ja19kZXZfaW9jdGxgLCBgdmhvc3RfdnNvY2tfc3RhcnRgLCBhbmQgYHZob3N0X3Zzb2NrX3N0b3BgLgoKTG9va2luZyBhdCB0aGUgaW1wbGVtZW50YXRpb24gb2YgYHZob3N0X3Zzb2NrX3Jlc2V0X293bmVyYCwgaXQmIzM5O3MgY2xlYXIgdGhpcyB3YXJyYW50cyBmdXp6aW5nLiBJdCBoYW5kbGVzIG93bmVyIHJlc2V0LCBpbmNsdWRpbmcgc3luY2hyb25pemF0aW9uLCBiYWNrZW5kIGRyb3BwaW5nLCBmbHVzaGluZywgZGV2aWNlIHN0b3BwaW5nLCBhbmQgcmVzZXQuIFRoZSBjb2RlIGxvb2tzIGNvcnJlY3QsIGJ1dCBpdCYjMzk7cyBjb21wbGV4IGVub3VnaCB0byBiZW5lZml0IGZyb20gZnV6emluZy4KCkkmIzM5O3ZlIGNvbmZpcm1lZCB0aGF0IGB2aG9zdF92c29ja19kZXZfaW9jdGxgIGlzIHRoZSBlbnRyeSBwb2ludCBmb3IgdGhlIGAvZGV2L3Zob3N0LXZzb2NrYCBpb2N0bCBoYW5kbGluZywgd2hpY2ggY29uZmlybXMgYFZIT1NUX1JFU0VUX09XTkVSYCBpcyByZWFjaGFibGUuCgpJJiMzOTt2ZSBhbHNvIGNoZWNrZWQgdGhlIGNvbmZpZyBkZXBlbmRlbmNpZXMsIGFuZCBgVkhPU1RfVlNPQ0tgIGRlcGVuZHMgb24gYFZIT1NUYCBhbmQgYFZTT0NLRVRTYCwgYnV0IGxpc3RpbmcgYFZIT1NUX1ZTT0NLYCBpcyBzdWZmaWNpZW50LgoKTXkgY29uY2x1c2lvbiBpcyB0aGF0IHRoaXMgcGF0Y2ggaXMgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nLiBJJiMzOTtsbCBmb2N1cyBvbiB0aGUgZnVuY3Rpb25zOiBgdmhvc3RfdnNvY2tfcmVzZXRfb3duZXJgLCBgdmhvc3RfdnNvY2tfc3RhcnRgLCBgdmhvc3RfdnNvY2tfc3RvcGAsIGFuZCBhbHNvIGluY2x1ZGUgYHZob3N0X3Zzb2NrX2Rldl9pb2N0bGAgYXMgYW4gZW50cnkgcG9pbnQuIFRoZSBwcmltYXJ5IGNvbmZpZyBpcyBgVkhPU1RfVlNPQ0tgLiBUaGUgbWFpbiByZWFzb24gdG8gZnV6eiBpcyB0aGF0IHRoZSBwYXRjaCBleHBsaWNpdGx5IGhhbmRsZXMgdGhlIGBWSE9TVF9SRVNFVF9PV05FUmAgaW9jdGwsIGFkZGluZyBhIG5ldyBgdmhvc3RfdnNvY2tfcmVzZXRfb3duZXJgIGZ1bmN0aW9uLCBhbmQgbW9kaWZpZXMgdGhlIHBhY2tldC1zZW5kaW5nIGxvZ2ljLiBUaGVzZSBjaGFuZ2VzIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdGhyb3VnaCBgL2Rldi92aG9zdC12c29ja2AgaW9jdGxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDE2OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtWSE9TVF9WU09DSyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Zob3N0X3Zzb2NrX3Jlc2V0X293bmVyJiMzNDssCiAgICAmIzM0O3Zob3N0X3Zzb2NrX3N0YXJ0JiMzNDssCiAgICAmIzM0O3Zob3N0X3Zzb2NrX3N0b3AmIzM0OywKICAgICYjMzQ7dmhvc3RfdnNvY2tfZGV2X2lvY3RsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB2aG9zdC12c29jayBkcml2ZXIgdG8gaGFuZGxlIHRoZSBWSE9TVF9SRVNFVF9PV05FUiBpb2N0bCBleHBsaWNpdGx5LCBhZGRpbmcgYSBuZXcgdmhvc3RfdnNvY2tfcmVzZXRfb3duZXIgZnVuY3Rpb24gYW5kIG1vZGlmeWluZyB0aGUgcGFja2V0IHNlbmRpbmcgbG9naWMgdG8gaGFuZGxlIGRldmljZSBzdG9wL3Jlc2V0IGNvcnJlY3RseS4gVGhpcyBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIC9kZXYvdmhvc3QtdnNvY2sgaW9jdGxzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtWSE9TVF9WU09DSyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Zob3N0X3Zzb2NrX3Jlc2V0X293bmVyJiMzNDssCiAgICAmIzM0O3Zob3N0X3Zzb2NrX3N0YXJ0JiMzNDssCiAgICAmIzM0O3Zob3N0X3Zzb2NrX3N0b3AmIzM0OywKICAgICYjMzQ7dmhvc3RfdnNvY2tfZGV2X2lvY3RsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB2aG9zdC12c29jayBkcml2ZXIgdG8gaGFuZGxlIHRoZSBWSE9TVF9SRVNFVF9PV05FUiBpb2N0bCBleHBsaWNpdGx5LCBhZGRpbmcgYSBuZXcgdmhvc3RfdnNvY2tfcmVzZXRfb3duZXIgZnVuY3Rpb24gYW5kIG1vZGlmeWluZyB0aGUgcGFja2V0IHNlbmRpbmcgbG9naWMgdG8gaGFuZGxlIGRldmljZSBzdG9wL3Jlc2V0IGNvcnJlY3RseS4gVGhpcyBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIC9kZXYvdmhvc3QtdnNvY2sgaW9jdGxzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMjVUMTY6MTc6NTQuODA0MTI2MjI3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDE4OTY2NzI0NjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVkhPU1RfVlNPQ0tcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2aG9zdF92c29ja19yZXNldF9vd25lclwiLFxuICAgIFwidmhvc3RfdnNvY2tfc3RhcnRcIixcbiAgICBcInZob3N0X3Zzb2NrX3N0b3BcIixcbiAgICBcInZob3N0X3Zzb2NrX2Rldl9pb2N0bFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB2aG9zdC12c29jayBkcml2ZXIgdG8gaGFuZGxlIHRoZSBWSE9TVF9SRVNFVF9PV05FUiBpb2N0bCBleHBsaWNpdGx5LCBhZGRpbmcgYSBuZXcgdmhvc3RfdnNvY2tfcmVzZXRfb3duZXIgZnVuY3Rpb24gYW5kIG1vZGlmeWluZyB0aGUgcGFja2V0IHNlbmRpbmcgbG9naWMgdG8gaGFuZGxlIGRldmljZSBzdG9wL3Jlc2V0IGNvcnJlY3RseS4gVGhpcyBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIC9kZXYvdmhvc3QtdnNvY2sgaW9jdGxzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQxNjoxNzo1NC44MDQxMzI5MjdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3MDk1Nzk1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDU4NWY0ZjI4ZDExZGZmNDIxMDgzODRlYTkzNDFhYThkYjVhNDNkOWJcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBKdW4gMjUgMTY6MTc6NTMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy92aG9zdC92c29jay5jIGIvZHJpdmVycy92aG9zdC92c29jay5jXFxuaW5kZXggOWFhYWI2YmI4MDYxYzEuLmYwYTBhYTdkMzIwMDAxIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvdmhvc3QvdnNvY2suY1xcbisrKyBiL2RyaXZlcnMvdmhvc3QvdnNvY2suY1xcbkBAIC02MSw2ICs2MSw3IEBAIHN0cnVjdCB2aG9zdF92c29jayB7XFxuIFxcbiBcXHR1MzIgZ3Vlc3RfY2lkO1xcbiBcXHRib29sIHNlcXBhY2tldF9hbGxvdztcXG4rXFx0Ym9vbCBzdGFydGVkO1xcdFxcdC8qIHNldCBvbiBmaXJzdCBTRVRfUlVOTklORygxKTsgbmV2ZXIgY2xlYXJlZCAqL1xcbiB9O1xcbiBcXG4gc3RhdGljIHUzMiB2aG9zdF90cmFuc3BvcnRfZ2V0X2xvY2FsX2NpZCh2b2lkKVxcbkBAIC0zMDIsMTcgKzMwMywxMiBAQCB2aG9zdF90cmFuc3BvcnRfc2VuZF9wa3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldCAqbmV0KVxcbiBcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4gXFx0fVxcbiBcXG4tXFx0LyogRmFzdC1mYWlsIGlmIHRoZSBndWVzdCBoYXNuJ3QgZW5hYmxlZCB0aGUgUlggdnEgeWV0LiBRdWV1aW5nIHRoZSBwYWNrZXRcXG4tXFx0ICogYW5kIG1ha2luZyB0aGUgY2FsbGVyIHdhaXQgaXMgcG9pbnRsZXNzOiBldmVuIGlmIHRoZSBndWVzdCBtYW5hZ2VzIHRvIGluaXRcXG4tXFx0ICogd2l0aGluIHRoZSB0aW1lb3V0LCBpdCdsbCBpbW1lZGlhdGVseSByZXBseSB3aXRoIFJTVCwgYmVjYXVzZSB0aGVyZSdzIG5vXFxuLVxcdCAqIGxpc3RlbmVyIG9uIHRoZSBwb3J0IHlldC5cXG4tXFx0ICpcXG4tXFx0ICogdmhvc3RfdnFfZ2V0X2JhY2tlbmQoKSB3aXRob3V0IHZxLVxcdTAwM2VtdXRleCBpcyBhY2NlcHRhYmxlIGhlcmU6IGxvY2tpbmdcXG4tXFx0ICogdGhlIG11dGV4IHdvdWxkIGJlIHRvbyBleHBlbnNpdmUgaW4gdGhpcyBob3QgcGF0aCwgYW5kIHdlIGFscmVhZHkgaGF2ZVxcbi1cXHQgKiBhbGwgdGhlIG91dGNvbWVzIGNvdmVyZWQ6IGlmIHRoZSBiYWNrZW5kIGJlY29tZXMgTlVMTCByaWdodCBhZnRlciB0aGUgY2hlY2ssXFxuLVxcdCAqIHZob3N0X3RyYW5zcG9ydF9kb19zZW5kX3BrdCgpIHdpbGwgY2hlY2sgaXQgdW5kZXIgdGhlIG11dGV4IGFueXdheS5cXG4rXFx0LyogRmFzdC1mYWlsIHVudGlsIHRoZSBndWVzdCBmaXJzdCBlbmFibGVzIHRoZSBkZXZpY2UgKFNFVF9SVU5OSU5HKDEpKS5cXG4rXFx0ICogQmVmb3JlIHRoYXQgdGhlcmUgaXMgbm8gbGlzdGVuZXIsIHNvIHF1ZXVpbmcgaXMgcG9pbnRsZXNzLiAnc3RhcnRlZCdcXG4rXFx0ICogaXMgbmV2ZXIgY2xlYXJlZCwgc28gb25jZSB3ZSdyZSB1cCB3ZSBrZWVwIHF1ZXVpbmcgYWNyb3NzIGxhdGVyXFxuK1xcdCAqIHN0b3AgLyBDUFItcGF1c2Ugd2luZG93cy5cXG4gXFx0ICovXFxuLVxcdGlmICh1bmxpa2VseSghZGF0YV9yYWNlKHZob3N0X3ZxX2dldF9iYWNrZW5kKFxcdTAwMjZ2c29jay1cXHUwMDNldnFzW1ZTT0NLX1ZRX1JYXSkpKSkge1xcbitcXHRpZiAodW5saWtlbHkoIVJFQURfT05DRSh2c29jay1cXHUwMDNlc3RhcnRlZCkpKSB7XFxuIFxcdFxcdHJjdV9yZWFkX3VubG9jaygpO1xcbiBcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0cmV0dXJuIC1FSE9TVFVOUkVBQ0g7XFxuQEAgLTMyMiw3ICszMTgsMTQgQEAgdmhvc3RfdHJhbnNwb3J0X3NlbmRfcGt0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXQgKm5ldClcXG4gXFx0XFx0YXRvbWljX2luYyhcXHUwMDI2dnNvY2stXFx1MDAzZXF1ZXVlZF9yZXBsaWVzKTtcXG4gXFxuIFxcdHZpcnRpb192c29ja19za2JfcXVldWVfdGFpbChcXHUwMDI2dnNvY2stXFx1MDAzZXNlbmRfcGt0X3F1ZXVlLCBza2IpO1xcbi1cXHR2aG9zdF92cV93b3JrX3F1ZXVlKFxcdTAwMjZ2c29jay1cXHUwMDNldnFzW1ZTT0NLX1ZRX1JYXSwgXFx1MDAyNnZzb2NrLVxcdTAwM2VzZW5kX3BrdF93b3JrKTtcXG4rXFxuK1xcdC8qIFNraXAgdGhlIGtpY2sgb25jZSB0aGUgYmFja2VuZCBpcyBnb25lIChzdG9wL1JFU0VUX09XTkVSKTsgdGhlIHNrYlxcbitcXHQgKiBzdGF5cyBxdWV1ZWQgYW5kIHZob3N0X3Zzb2NrX3N0YXJ0KCkgZHJhaW5zIGl0LiBQYWlycyB3aXRoIHRoZVxcbitcXHQgKiBzeW5jaHJvbml6ZV9yY3UoKSBpbiB2aG9zdF92c29ja19yZXNldF9vd25lcigpLlxcbitcXHQgKi9cXG4rXFx0aWYgKGRhdGFfcmFjZSh2aG9zdF92cV9nZXRfYmFja2VuZChcXHUwMDI2dnNvY2stXFx1MDAzZXZxc1tWU09DS19WUV9SWF0pKSlcXG4rXFx0XFx0dmhvc3RfdnFfd29ya19xdWV1ZShcXHUwMDI2dnNvY2stXFx1MDAzZXZxc1tWU09DS19WUV9SWF0sXFxuK1xcdFxcdFxcdFxcdCAgICBcXHUwMDI2dnNvY2stXFx1MDAzZXNlbmRfcGt0X3dvcmspO1xcbiBcXG4gXFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuIFxcdHJldHVybiBsZW47XFxuQEAgLTM1MCw3ICszNTMsMTUgQEAgdmhvc3RfdHJhbnNwb3J0X2NhbmNlbF9wa3Qoc3RydWN0IHZzb2NrX3NvY2sgKnZzaylcXG4gXFx0XFx0aW50IG5ld19jbnQ7XFxuIFxcbiBcXHRcXHRuZXdfY250ID0gYXRvbWljX3N1Yl9yZXR1cm4oY250LCBcXHUwMDI2dnNvY2stXFx1MDAzZXF1ZXVlZF9yZXBsaWVzKTtcXG4tXFx0XFx0aWYgKG5ld19jbnQgKyBjbnQgXFx1MDAzZT0gdHhfdnEtXFx1MDAzZW51bSBcXHUwMDI2XFx1MDAyNiBuZXdfY250IFxcdTAwM2MgdHhfdnEtXFx1MDAzZW51bSlcXG4rXFxuK1xcdFxcdC8qIFNraXAgdGhlIGtpY2sgb25jZSB0aGUgYmFja2VuZCBpcyBnb25lIChzdG9wL1JFU0VUX09XTkVSKTpcXG4rXFx0XFx0ICogdmhvc3RfcG9sbF9xdWV1ZSgpIHdvdWxkIHRvdWNoIHRoZSB3b3JrZXIgd2hpY2ggaXMgYmVpbmcgZnJlZWRcXG4rXFx0XFx0ICogYnkgdGVhcmRvd24sIGUuZy4gb24gUkVTRVRfT1dORVIuICBQYWlycyB3aXRoIHRoZVxcbitcXHRcXHQgKiBzeW5jaHJvbml6ZV9yY3UoKSBpbiB2aG9zdF92c29ja19yZXNldF9vd25lcigpLiAgVGhlIFRYIFZRIGlzXFxuK1xcdFxcdCAqIHJlLWtpY2tlZCBieSB2aG9zdF92c29ja19zdGFydCgpLlxcbitcXHRcXHQgKi9cXG4rXFx0XFx0aWYgKGRhdGFfcmFjZSh2aG9zdF92cV9nZXRfYmFja2VuZCh0eF92cSkpIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdCAgICBuZXdfY250ICsgY250IFxcdTAwM2U9IHR4X3ZxLVxcdTAwM2VudW0gXFx1MDAyNlxcdTAwMjYgbmV3X2NudCBcXHUwMDNjIHR4X3ZxLVxcdTAwM2VudW0pXFxuIFxcdFxcdFxcdHZob3N0X3BvbGxfcXVldWUoXFx1MDAyNnR4X3ZxLVxcdTAwM2Vwb2xsKTtcXG4gXFx0fVxcbiBcXG5AQCAtNjQwLDExICs2NTEsMjMgQEAgc3RhdGljIGludCB2aG9zdF92c29ja19zdGFydChzdHJ1Y3Qgdmhvc3RfdnNvY2sgKnZzb2NrKVxcbiBcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnZxLVxcdTAwM2VtdXRleCk7XFxuIFxcdH1cXG4gXFxuK1xcdC8qIFNldCAnc3RhcnRlZCcgZmxhZyBvbiB0aGUgZmlyc3Qgc3RhcnQ7IG5ldmVyIGNsZWFyZWQsIHNvIHNlbmRfcGt0XFxuK1xcdCAqIGtlZXBzIHF1ZXVpbmcgKGluc3RlYWQgb2YgZmFzdC1mYWlsaW5nKSBvbiBsYXRlciBzdG9wIC8gQ1BSIHBhdXNlcy5cXG4rXFx0ICovXFxuK1xcdFdSSVRFX09OQ0UodnNvY2stXFx1MDAzZXN0YXJ0ZWQsIHRydWUpO1xcbitcXG4gXFx0LyogU29tZSBwYWNrZXRzIG1heSBoYXZlIGJlZW4gcXVldWVkIGJlZm9yZSB0aGUgZGV2aWNlIHdhcyBzdGFydGVkLFxcbiBcXHQgKiBsZXQncyBraWNrIHRoZSBzZW5kIHdvcmtlciB0byBzZW5kIHRoZW0uXFxuIFxcdCAqL1xcbiBcXHR2aG9zdF92cV93b3JrX3F1ZXVlKFxcdTAwMjZ2c29jay1cXHUwMDNldnFzW1ZTT0NLX1ZRX1JYXSwgXFx1MDAyNnZzb2NrLVxcdTAwM2VzZW5kX3BrdF93b3JrKTtcXG4gXFxuK1xcdC8qXFxuK1xcdCAqIFNvbWUgcGFja2V0cyBtaWdodCd2ZSBhbHNvIGJlZW4gcXVldWVkIGluIFRYIFZRLiAgVGhhdCBpcyB0aGUgY2FzZVxcbitcXHQgKiBkdXJpbmcgdGhlIGJyaWVmIGRldmljZSBwYXVzZSBjYXVzZWQgYnkgVkhPU1RfUkVTRVRfT1dORVIuICBSZS1zY2FuXFxuK1xcdCAqIHRoZSBUWCBWUSBoZXJlLCBtaXJyb3JpbmcgdGhlIFJYIHNlbmQtd29ya2VyIGtpY2sgYWJvdmUuXFxuK1xcdCAqL1xcbitcXHR2aG9zdF9wb2xsX3F1ZXVlKFxcdTAwMjZ2c29jay1cXHUwMDNldnFzW1ZTT0NLX1ZRX1RYXS5wb2xsKTtcXG4rXFxuIFxcdG11dGV4X3VubG9jayhcXHUwMDI2dnNvY2stXFx1MDAzZWRldi5tdXRleCk7XFxuIFxcdHJldHVybiAwO1xcbiBcXG5AQCAtNjY0LDkgKzY4NywyNCBAQCBzdGF0aWMgaW50IHZob3N0X3Zzb2NrX3N0YXJ0KHN0cnVjdCB2aG9zdF92c29jayAqdnNvY2spXFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG4gXFxuLXN0YXRpYyBpbnQgdmhvc3RfdnNvY2tfc3RvcChzdHJ1Y3Qgdmhvc3RfdnNvY2sgKnZzb2NrLCBib29sIGNoZWNrX293bmVyKVxcbitzdGF0aWMgdm9pZCB2aG9zdF92c29ja19kcm9wX2JhY2tlbmRzKHN0cnVjdCB2aG9zdF92c29jayAqdnNvY2spXFxuIHtcXG4rXFx0c3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnE7XFxuIFxcdHNpemVfdCBpO1xcbitcXG4rXFx0bG9ja2RlcF9hc3NlcnRfaGVsZChcXHUwMDI2dnNvY2stXFx1MDAzZWRldi5tdXRleCk7XFxuK1xcbitcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQVJSQVlfU0laRSh2c29jay1cXHUwMDNldnFzKTsgaSsrKSB7XFxuK1xcdFxcdHZxID0gXFx1MDAyNnZzb2NrLVxcdTAwM2V2cXNbaV07XFxuK1xcbitcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZ2cS1cXHUwMDNlbXV0ZXgpO1xcbitcXHRcXHR2aG9zdF92cV9zZXRfYmFja2VuZCh2cSwgTlVMTCk7XFxuK1xcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2dnEtXFx1MDAzZW11dGV4KTtcXG4rXFx0fVxcbit9XFxuK1xcbitzdGF0aWMgaW50IHZob3N0X3Zzb2NrX3N0b3Aoc3RydWN0IHZob3N0X3Zzb2NrICp2c29jaywgYm9vbCBjaGVja19vd25lcilcXG4re1xcbiBcXHRpbnQgcmV0ID0gMDtcXG4gXFxuIFxcdG11dGV4X2xvY2soXFx1MDAyNnZzb2NrLVxcdTAwM2VkZXYubXV0ZXgpO1xcbkBAIC02NzcsMTQgKzcxNSw3IEBAIHN0YXRpYyBpbnQgdmhvc3RfdnNvY2tfc3RvcChzdHJ1Y3Qgdmhvc3RfdnNvY2sgKnZzb2NrLCBib29sIGNoZWNrX293bmVyKVxcbiBcXHRcXHRcXHRnb3RvIGVycjtcXG4gXFx0fVxcbiBcXG4tXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUodnNvY2stXFx1MDAzZXZxcyk7IGkrKykge1xcbi1cXHRcXHRzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cSA9IFxcdTAwMjZ2c29jay1cXHUwMDNldnFzW2ldO1xcbi1cXG4tXFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2dnEtXFx1MDAzZW11dGV4KTtcXG4tXFx0XFx0dmhvc3RfdnFfc2V0X2JhY2tlbmQodnEsIE5VTEwpO1xcbi1cXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnZxLVxcdTAwM2VtdXRleCk7XFxuLVxcdH1cXG4tXFxuK1xcdHZob3N0X3Zzb2NrX2Ryb3BfYmFja2VuZHModnNvY2spO1xcbiBlcnI6XFxuIFxcdG11dGV4X3VubG9jayhcXHUwMDI2dnNvY2stXFx1MDAzZWRldi5tdXRleCk7XFxuIFxcdHJldHVybiByZXQ7XFxuQEAgLTcyMCw2ICs3NTEsNyBAQCBzdGF0aWMgaW50IHZob3N0X3Zzb2NrX2Rldl9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxcbiBcXG4gXFx0dnNvY2stXFx1MDAzZWd1ZXN0X2NpZCA9IDA7IC8qIG5vIENJRCBhc3NpZ25lZCB5ZXQgKi9cXG4gXFx0dnNvY2stXFx1MDAzZXNlcXBhY2tldF9hbGxvdyA9IGZhbHNlO1xcbitcXHR2c29jay1cXHUwMDNlc3RhcnRlZCA9IGZhbHNlO1xcbiBcXG4gXFx0YXRvbWljX3NldChcXHUwMDI2dnNvY2stXFx1MDAzZXF1ZXVlZF9yZXBsaWVzLCAwKTtcXG4gXFxuQEAgLTg4Niw2ICs5MTgsMzYgQEAgc3RhdGljIGludCB2aG9zdF92c29ja19zZXRfZmVhdHVyZXMoc3RydWN0IHZob3N0X3Zzb2NrICp2c29jaywgdTY0IGZlYXR1cmVzKVxcbiBcXHRyZXR1cm4gLUVGQVVMVDtcXG4gfVxcbiBcXG4rc3RhdGljIGludCB2aG9zdF92c29ja19yZXNldF9vd25lcihzdHJ1Y3Qgdmhvc3RfdnNvY2sgKnZzb2NrKVxcbit7XFxuK1xcdHN0cnVjdCB2aG9zdF9pb3RsYiAqdW1lbTtcXG4rXFx0bG9uZyBlcnI7XFxuK1xcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZ2c29jay1cXHUwMDNlZGV2Lm11dGV4KTtcXG4rXFx0ZXJyID0gdmhvc3RfZGV2X2NoZWNrX293bmVyKFxcdTAwMjZ2c29jay1cXHUwMDNlZGV2KTtcXG4rXFx0aWYgKGVycilcXG4rXFx0XFx0Z290byBkb25lO1xcbitcXHR1bWVtID0gdmhvc3RfZGV2X3Jlc2V0X293bmVyX3ByZXBhcmUoKTtcXG4rXFx0aWYgKCF1bWVtKSB7XFxuK1xcdFxcdGVyciA9IC1FTk9NRU07XFxuK1xcdFxcdGdvdG8gZG9uZTtcXG4rXFx0fVxcbitcXHR2aG9zdF92c29ja19kcm9wX2JhY2tlbmRzKHZzb2NrKTtcXG4rXFxuK1xcdC8qIExldCBpbi1mbGlnaHQgc2VuZF9wa3QoKSBjYWxsZXJzIHN0b3AgdG91Y2hpbmcgdGhlIHdvcmtlciBiZWZvcmUgdGhlXFxuK1xcdCAqIGZsdXNoICsgZnJlZSBiZWxvdy4gUGFpcnMgd2l0aCB0aGUgYmFja2VuZCBjaGVjayBpblxcbitcXHQgKiB2aG9zdF90cmFuc3BvcnRfc2VuZF9wa3QoKS5cXG4rXFx0ICovXFxuK1xcdHN5bmNocm9uaXplX3JjdSgpO1xcbitcXG4rXFx0dmhvc3RfdnNvY2tfZmx1c2godnNvY2spO1xcbitcXHR2aG9zdF9kZXZfc3RvcChcXHUwMDI2dnNvY2stXFx1MDAzZWRldik7XFxuK1xcdHZob3N0X2Rldl9yZXNldF9vd25lcihcXHUwMDI2dnNvY2stXFx1MDAzZWRldiwgdW1lbSk7XFxuK2RvbmU6XFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2dnNvY2stXFx1MDAzZWRldi5tdXRleCk7XFxuK1xcdHJldHVybiBlcnI7XFxuK31cXG4rXFxuIHN0YXRpYyBsb25nIHZob3N0X3Zzb2NrX2Rldl9pb2N0bChzdHJ1Y3QgZmlsZSAqZiwgdW5zaWduZWQgaW50IGlvY3RsLFxcbiBcXHRcXHRcXHRcXHQgIHVuc2lnbmVkIGxvbmcgYXJnKVxcbiB7XFxuQEAgLTkyOSw2ICs5OTEsOCBAQCBzdGF0aWMgbG9uZyB2aG9zdF92c29ja19kZXZfaW9jdGwoc3RydWN0IGZpbGUgKmYsIHVuc2lnbmVkIGludCBpb2N0bCxcXG4gXFx0XFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbiBcXHRcXHR2aG9zdF9zZXRfYmFja2VuZF9mZWF0dXJlcyhcXHUwMDI2dnNvY2stXFx1MDAzZWRldiwgZmVhdHVyZXMpO1xcbiBcXHRcXHRyZXR1cm4gMDtcXG4rXFx0Y2FzZSBWSE9TVF9SRVNFVF9PV05FUjpcXG4rXFx0XFx0cmV0dXJuIHZob3N0X3Zzb2NrX3Jlc2V0X293bmVyKHZzb2NrKTtcXG4gXFx0ZGVmYXVsdDpcXG4gXFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2dnNvY2stXFx1MDAzZWRldi5tdXRleCk7XFxuIFxcdFxcdHIgPSB2aG9zdF9kZXZfaW9jdGwoXFx1MDAyNnZzb2NrLVxcdTAwM2VkZXYsIGlvY3RsLCBhcmdwKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMTY6MTc6NTUuMzc2MjUxNzA1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTMyNDUzMDU5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWSE9TVF9WU09DS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInZob3N0X3Zzb2NrX3Jlc2V0X293bmVyXCIsXG4gICAgXCJ2aG9zdF92c29ja19zdGFydFwiLFxuICAgIFwidmhvc3RfdnNvY2tfc3RvcFwiLFxuICAgIFwidmhvc3RfdnNvY2tfZGV2X2lvY3RsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHZob3N0LXZzb2NrIGRyaXZlciB0byBoYW5kbGUgdGhlIFZIT1NUX1JFU0VUX09XTkVSIGlvY3RsIGV4cGxpY2l0bHksIGFkZGluZyBhIG5ldyB2aG9zdF92c29ja19yZXNldF9vd25lciBmdW5jdGlvbiBhbmQgbW9kaWZ5aW5nIHRoZSBwYWNrZXQgc2VuZGluZyBsb2dpYyB0byBoYW5kbGUgZGV2aWNlIHN0b3AvcmVzZXQgY29ycmVjdGx5LiBUaGlzIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgL2Rldi92aG9zdC12c29jayBpb2N0bHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNTg1ZjRmMjhkMTFkZmY0MjEwODM4NGVhOTM0MWFhOGRiNWE0M2Q5YlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVuIDI1IDE2OjE3OjUzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy92aG9zdC92c29jay5jIGIvZHJpdmVycy92aG9zdC92c29jay5jXG5pbmRleCA5YWFhYjZiYjgwNjFjMS4uZjBhMGFhN2QzMjAwMDEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3Zob3N0L3Zzb2NrLmNcbisrKyBiL2RyaXZlcnMvdmhvc3QvdnNvY2suY1xuQEAgLTYxLDYgKzYxLDcgQEAgc3RydWN0IHZob3N0X3Zzb2NrIHtcbiBcbiBcdHUzMiBndWVzdF9jaWQ7XG4gXHRib29sIHNlcXBhY2tldF9hbGxvdztcbitcdGJvb2wgc3RhcnRlZDtcdFx0Lyogc2V0IG9uIGZpcnN0IFNFVF9SVU5OSU5HKDEpOyBuZXZlciBjbGVhcmVkICovXG4gfTtcbiBcbiBzdGF0aWMgdTMyIHZob3N0X3RyYW5zcG9ydF9nZXRfbG9jYWxfY2lkKHZvaWQpXG5AQCAtMzAyLDE3ICszMDMsMTIgQEAgdmhvc3RfdHJhbnNwb3J0X3NlbmRfcGt0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXQgKm5ldClcbiBcdFx0cmV0dXJuIC1FTk9ERVY7XG4gXHR9XG4gXG4tXHQvKiBGYXN0LWZhaWwgaWYgdGhlIGd1ZXN0IGhhc24ndCBlbmFibGVkIHRoZSBSWCB2cSB5ZXQuIFF1ZXVpbmcgdGhlIHBhY2tldFxuLVx0ICogYW5kIG1ha2luZyB0aGUgY2FsbGVyIHdhaXQgaXMgcG9pbnRsZXNzOiBldmVuIGlmIHRoZSBndWVzdCBtYW5hZ2VzIHRvIGluaXRcbi1cdCAqIHdpdGhpbiB0aGUgdGltZW91dCwgaXQnbGwgaW1tZWRpYXRlbHkgcmVwbHkgd2l0aCBSU1QsIGJlY2F1c2UgdGhlcmUncyBub1xuLVx0ICogbGlzdGVuZXIgb24gdGhlIHBvcnQgeWV0LlxuLVx0ICpcbi1cdCAqIHZob3N0X3ZxX2dldF9iYWNrZW5kKCkgd2l0aG91dCB2cS1cdTAwM2VtdXRleCBpcyBhY2NlcHRhYmxlIGhlcmU6IGxvY2tpbmdcbi1cdCAqIHRoZSBtdXRleCB3b3VsZCBiZSB0b28gZXhwZW5zaXZlIGluIHRoaXMgaG90IHBhdGgsIGFuZCB3ZSBhbHJlYWR5IGhhdmVcbi1cdCAqIGFsbCB0aGUgb3V0Y29tZXMgY292ZXJlZDogaWYgdGhlIGJhY2tlbmQgYmVjb21lcyBOVUxMIHJpZ2h0IGFmdGVyIHRoZSBjaGVjayxcbi1cdCAqIHZob3N0X3RyYW5zcG9ydF9kb19zZW5kX3BrdCgpIHdpbGwgY2hlY2sgaXQgdW5kZXIgdGhlIG11dGV4IGFueXdheS5cbitcdC8qIEZhc3QtZmFpbCB1bnRpbCB0aGUgZ3Vlc3QgZmlyc3QgZW5hYmxlcyB0aGUgZGV2aWNlIChTRVRfUlVOTklORygxKSkuXG4rXHQgKiBCZWZvcmUgdGhhdCB0aGVyZSBpcyBubyBsaXN0ZW5lciwgc28gcXVldWluZyBpcyBwb2ludGxlc3MuICdzdGFydGVkJ1xuK1x0ICogaXMgbmV2ZXIgY2xlYXJlZCwgc28gb25jZSB3ZSdyZSB1cCB3ZSBrZWVwIHF1ZXVpbmcgYWNyb3NzIGxhdGVyXG4rXHQgKiBzdG9wIC8gQ1BSLXBhdXNlIHdpbmRvd3MuXG4gXHQgKi9cbi1cdGlmICh1bmxpa2VseSghZGF0YV9yYWNlKHZob3N0X3ZxX2dldF9iYWNrZW5kKFx1MDAyNnZzb2NrLVx1MDAzZXZxc1tWU09DS19WUV9SWF0pKSkpIHtcbitcdGlmICh1bmxpa2VseSghUkVBRF9PTkNFKHZzb2NrLVx1MDAzZXN0YXJ0ZWQpKSkge1xuIFx0XHRyY3VfcmVhZF91bmxvY2soKTtcbiBcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiAtRUhPU1RVTlJFQUNIO1xuQEAgLTMyMiw3ICszMTgsMTQgQEAgdmhvc3RfdHJhbnNwb3J0X3NlbmRfcGt0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXQgKm5ldClcbiBcdFx0YXRvbWljX2luYyhcdTAwMjZ2c29jay1cdTAwM2VxdWV1ZWRfcmVwbGllcyk7XG4gXG4gXHR2aXJ0aW9fdnNvY2tfc2tiX3F1ZXVlX3RhaWwoXHUwMDI2dnNvY2stXHUwMDNlc2VuZF9wa3RfcXVldWUsIHNrYik7XG4tXHR2aG9zdF92cV93b3JrX3F1ZXVlKFx1MDAyNnZzb2NrLVx1MDAzZXZxc1tWU09DS19WUV9SWF0sIFx1MDAyNnZzb2NrLVx1MDAzZXNlbmRfcGt0X3dvcmspO1xuK1xuK1x0LyogU2tpcCB0aGUga2ljayBvbmNlIHRoZSBiYWNrZW5kIGlzIGdvbmUgKHN0b3AvUkVTRVRfT1dORVIpOyB0aGUgc2tiXG4rXHQgKiBzdGF5cyBxdWV1ZWQgYW5kIHZob3N0X3Zzb2NrX3N0YXJ0KCkgZHJhaW5zIGl0LiBQYWlycyB3aXRoIHRoZVxuK1x0ICogc3luY2hyb25pemVfcmN1KCkgaW4gdmhvc3RfdnNvY2tfcmVzZXRfb3duZXIoKS5cbitcdCAqL1xuK1x0aWYgKGRhdGFfcmFjZSh2aG9zdF92cV9nZXRfYmFja2VuZChcdTAwMjZ2c29jay1cdTAwM2V2cXNbVlNPQ0tfVlFfUlhdKSkpXG4rXHRcdHZob3N0X3ZxX3dvcmtfcXVldWUoXHUwMDI2dnNvY2stXHUwMDNldnFzW1ZTT0NLX1ZRX1JYXSxcbitcdFx0XHRcdCAgICBcdTAwMjZ2c29jay1cdTAwM2VzZW5kX3BrdF93b3JrKTtcbiBcbiBcdHJjdV9yZWFkX3VubG9jaygpO1xuIFx0cmV0dXJuIGxlbjtcbkBAIC0zNTAsNyArMzUzLDE1IEBAIHZob3N0X3RyYW5zcG9ydF9jYW5jZWxfcGt0KHN0cnVjdCB2c29ja19zb2NrICp2c2spXG4gXHRcdGludCBuZXdfY250O1xuIFxuIFx0XHRuZXdfY250ID0gYXRvbWljX3N1Yl9yZXR1cm4oY250LCBcdTAwMjZ2c29jay1cdTAwM2VxdWV1ZWRfcmVwbGllcyk7XG4tXHRcdGlmIChuZXdfY250ICsgY250IFx1MDAzZT0gdHhfdnEtXHUwMDNlbnVtIFx1MDAyNlx1MDAyNiBuZXdfY250IFx1MDAzYyB0eF92cS1cdTAwM2VudW0pXG4rXG4rXHRcdC8qIFNraXAgdGhlIGtpY2sgb25jZSB0aGUgYmFja2VuZCBpcyBnb25lIChzdG9wL1JFU0VUX09XTkVSKTpcbitcdFx0ICogdmhvc3RfcG9sbF9xdWV1ZSgpIHdvdWxkIHRvdWNoIHRoZSB3b3JrZXIgd2hpY2ggaXMgYmVpbmcgZnJlZWRcbitcdFx0ICogYnkgdGVhcmRvd24sIGUuZy4gb24gUkVTRVRfT1dORVIuICBQYWlycyB3aXRoIHRoZVxuK1x0XHQgKiBzeW5jaHJvbml6ZV9yY3UoKSBpbiB2aG9zdF92c29ja19yZXNldF9vd25lcigpLiAgVGhlIFRYIFZRIGlzXG4rXHRcdCAqIHJlLWtpY2tlZCBieSB2aG9zdF92c29ja19zdGFydCgpLlxuK1x0XHQgKi9cbitcdFx0aWYgKGRhdGFfcmFjZSh2aG9zdF92cV9nZXRfYmFja2VuZCh0eF92cSkpIFx1MDAyNlx1MDAyNlxuK1x0XHQgICAgbmV3X2NudCArIGNudCBcdTAwM2U9IHR4X3ZxLVx1MDAzZW51bSBcdTAwMjZcdTAwMjYgbmV3X2NudCBcdTAwM2MgdHhfdnEtXHUwMDNlbnVtKVxuIFx0XHRcdHZob3N0X3BvbGxfcXVldWUoXHUwMDI2dHhfdnEtXHUwMDNlcG9sbCk7XG4gXHR9XG4gXG5AQCAtNjQwLDExICs2NTEsMjMgQEAgc3RhdGljIGludCB2aG9zdF92c29ja19zdGFydChzdHJ1Y3Qgdmhvc3RfdnNvY2sgKnZzb2NrKVxuIFx0XHRtdXRleF91bmxvY2soXHUwMDI2dnEtXHUwMDNlbXV0ZXgpO1xuIFx0fVxuIFxuK1x0LyogU2V0ICdzdGFydGVkJyBmbGFnIG9uIHRoZSBmaXJzdCBzdGFydDsgbmV2ZXIgY2xlYXJlZCwgc28gc2VuZF9wa3RcbitcdCAqIGtlZXBzIHF1ZXVpbmcgKGluc3RlYWQgb2YgZmFzdC1mYWlsaW5nKSBvbiBsYXRlciBzdG9wIC8gQ1BSIHBhdXNlcy5cbitcdCAqL1xuK1x0V1JJVEVfT05DRSh2c29jay1cdTAwM2VzdGFydGVkLCB0cnVlKTtcbitcbiBcdC8qIFNvbWUgcGFja2V0cyBtYXkgaGF2ZSBiZWVuIHF1ZXVlZCBiZWZvcmUgdGhlIGRldmljZSB3YXMgc3RhcnRlZCxcbiBcdCAqIGxldCdzIGtpY2sgdGhlIHNlbmQgd29ya2VyIHRvIHNlbmQgdGhlbS5cbiBcdCAqL1xuIFx0dmhvc3RfdnFfd29ya19xdWV1ZShcdTAwMjZ2c29jay1cdTAwM2V2cXNbVlNPQ0tfVlFfUlhdLCBcdTAwMjZ2c29jay1cdTAwM2VzZW5kX3BrdF93b3JrKTtcbiBcbitcdC8qXG4rXHQgKiBTb21lIHBhY2tldHMgbWlnaHQndmUgYWxzbyBiZWVuIHF1ZXVlZCBpbiBUWCBWUS4gIFRoYXQgaXMgdGhlIGNhc2VcbitcdCAqIGR1cmluZyB0aGUgYnJpZWYgZGV2aWNlIHBhdXNlIGNhdXNlZCBieSBWSE9TVF9SRVNFVF9PV05FUi4gIFJlLXNjYW5cbitcdCAqIHRoZSBUWCBWUSBoZXJlLCBtaXJyb3JpbmcgdGhlIFJYIHNlbmQtd29ya2VyIGtpY2sgYWJvdmUuXG4rXHQgKi9cbitcdHZob3N0X3BvbGxfcXVldWUoXHUwMDI2dnNvY2stXHUwMDNldnFzW1ZTT0NLX1ZRX1RYXS5wb2xsKTtcbitcbiBcdG11dGV4X3VubG9jayhcdTAwMjZ2c29jay1cdTAwM2VkZXYubXV0ZXgpO1xuIFx0cmV0dXJuIDA7XG4gXG5AQCAtNjY0LDkgKzY4NywyNCBAQCBzdGF0aWMgaW50IHZob3N0X3Zzb2NrX3N0YXJ0KHN0cnVjdCB2aG9zdF92c29jayAqdnNvY2spXG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbi1zdGF0aWMgaW50IHZob3N0X3Zzb2NrX3N0b3Aoc3RydWN0IHZob3N0X3Zzb2NrICp2c29jaywgYm9vbCBjaGVja19vd25lcilcbitzdGF0aWMgdm9pZCB2aG9zdF92c29ja19kcm9wX2JhY2tlbmRzKHN0cnVjdCB2aG9zdF92c29jayAqdnNvY2spXG4ge1xuK1x0c3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnE7XG4gXHRzaXplX3QgaTtcbitcbitcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXHUwMDI2dnNvY2stXHUwMDNlZGV2Lm11dGV4KTtcbitcbitcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUodnNvY2stXHUwMDNldnFzKTsgaSsrKSB7XG4rXHRcdHZxID0gXHUwMDI2dnNvY2stXHUwMDNldnFzW2ldO1xuK1xuK1x0XHRtdXRleF9sb2NrKFx1MDAyNnZxLVx1MDAzZW11dGV4KTtcbitcdFx0dmhvc3RfdnFfc2V0X2JhY2tlbmQodnEsIE5VTEwpO1xuK1x0XHRtdXRleF91bmxvY2soXHUwMDI2dnEtXHUwMDNlbXV0ZXgpO1xuK1x0fVxuK31cbitcbitzdGF0aWMgaW50IHZob3N0X3Zzb2NrX3N0b3Aoc3RydWN0IHZob3N0X3Zzb2NrICp2c29jaywgYm9vbCBjaGVja19vd25lcilcbit7XG4gXHRpbnQgcmV0ID0gMDtcbiBcbiBcdG11dGV4X2xvY2soXHUwMDI2dnNvY2stXHUwMDNlZGV2Lm11dGV4KTtcbkBAIC02NzcsMTQgKzcxNSw3IEBAIHN0YXRpYyBpbnQgdmhvc3RfdnNvY2tfc3RvcChzdHJ1Y3Qgdmhvc3RfdnNvY2sgKnZzb2NrLCBib29sIGNoZWNrX293bmVyKVxuIFx0XHRcdGdvdG8gZXJyO1xuIFx0fVxuIFxuLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRSh2c29jay1cdTAwM2V2cXMpOyBpKyspIHtcbi1cdFx0c3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnEgPSBcdTAwMjZ2c29jay1cdTAwM2V2cXNbaV07XG4tXG4tXHRcdG11dGV4X2xvY2soXHUwMDI2dnEtXHUwMDNlbXV0ZXgpO1xuLVx0XHR2aG9zdF92cV9zZXRfYmFja2VuZCh2cSwgTlVMTCk7XG4tXHRcdG11dGV4X3VubG9jayhcdTAwMjZ2cS1cdTAwM2VtdXRleCk7XG4tXHR9XG4tXG4rXHR2aG9zdF92c29ja19kcm9wX2JhY2tlbmRzKHZzb2NrKTtcbiBlcnI6XG4gXHRtdXRleF91bmxvY2soXHUwMDI2dnNvY2stXHUwMDNlZGV2Lm11dGV4KTtcbiBcdHJldHVybiByZXQ7XG5AQCAtNzIwLDYgKzc1MSw3IEBAIHN0YXRpYyBpbnQgdmhvc3RfdnNvY2tfZGV2X29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpXG4gXG4gXHR2c29jay1cdTAwM2VndWVzdF9jaWQgPSAwOyAvKiBubyBDSUQgYXNzaWduZWQgeWV0ICovXG4gXHR2c29jay1cdTAwM2VzZXFwYWNrZXRfYWxsb3cgPSBmYWxzZTtcbitcdHZzb2NrLVx1MDAzZXN0YXJ0ZWQgPSBmYWxzZTtcbiBcbiBcdGF0b21pY19zZXQoXHUwMDI2dnNvY2stXHUwMDNlcXVldWVkX3JlcGxpZXMsIDApO1xuIFxuQEAgLTg4Niw2ICs5MTgsMzYgQEAgc3RhdGljIGludCB2aG9zdF92c29ja19zZXRfZmVhdHVyZXMoc3RydWN0IHZob3N0X3Zzb2NrICp2c29jaywgdTY0IGZlYXR1cmVzKVxuIFx0cmV0dXJuIC1FRkFVTFQ7XG4gfVxuIFxuK3N0YXRpYyBpbnQgdmhvc3RfdnNvY2tfcmVzZXRfb3duZXIoc3RydWN0IHZob3N0X3Zzb2NrICp2c29jaylcbit7XG4rXHRzdHJ1Y3Qgdmhvc3RfaW90bGIgKnVtZW07XG4rXHRsb25nIGVycjtcbitcbitcdG11dGV4X2xvY2soXHUwMDI2dnNvY2stXHUwMDNlZGV2Lm11dGV4KTtcbitcdGVyciA9IHZob3N0X2Rldl9jaGVja19vd25lcihcdTAwMjZ2c29jay1cdTAwM2VkZXYpO1xuK1x0aWYgKGVycilcbitcdFx0Z290byBkb25lO1xuK1x0dW1lbSA9IHZob3N0X2Rldl9yZXNldF9vd25lcl9wcmVwYXJlKCk7XG4rXHRpZiAoIXVtZW0pIHtcbitcdFx0ZXJyID0gLUVOT01FTTtcbitcdFx0Z290byBkb25lO1xuK1x0fVxuK1x0dmhvc3RfdnNvY2tfZHJvcF9iYWNrZW5kcyh2c29jayk7XG4rXG4rXHQvKiBMZXQgaW4tZmxpZ2h0IHNlbmRfcGt0KCkgY2FsbGVycyBzdG9wIHRvdWNoaW5nIHRoZSB3b3JrZXIgYmVmb3JlIHRoZVxuK1x0ICogZmx1c2ggKyBmcmVlIGJlbG93LiBQYWlycyB3aXRoIHRoZSBiYWNrZW5kIGNoZWNrIGluXG4rXHQgKiB2aG9zdF90cmFuc3BvcnRfc2VuZF9wa3QoKS5cbitcdCAqL1xuK1x0c3luY2hyb25pemVfcmN1KCk7XG4rXG4rXHR2aG9zdF92c29ja19mbHVzaCh2c29jayk7XG4rXHR2aG9zdF9kZXZfc3RvcChcdTAwMjZ2c29jay1cdTAwM2VkZXYpO1xuK1x0dmhvc3RfZGV2X3Jlc2V0X293bmVyKFx1MDAyNnZzb2NrLVx1MDAzZWRldiwgdW1lbSk7XG4rZG9uZTpcbitcdG11dGV4X3VubG9jayhcdTAwMjZ2c29jay1cdTAwM2VkZXYubXV0ZXgpO1xuK1x0cmV0dXJuIGVycjtcbit9XG4rXG4gc3RhdGljIGxvbmcgdmhvc3RfdnNvY2tfZGV2X2lvY3RsKHN0cnVjdCBmaWxlICpmLCB1bnNpZ25lZCBpbnQgaW9jdGwsXG4gXHRcdFx0XHQgIHVuc2lnbmVkIGxvbmcgYXJnKVxuIHtcbkBAIC05MjksNiArOTkxLDggQEAgc3RhdGljIGxvbmcgdmhvc3RfdnNvY2tfZGV2X2lvY3RsKHN0cnVjdCBmaWxlICpmLCB1bnNpZ25lZCBpbnQgaW9jdGwsXG4gXHRcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuIFx0XHR2aG9zdF9zZXRfYmFja2VuZF9mZWF0dXJlcyhcdTAwMjZ2c29jay1cdTAwM2VkZXYsIGZlYXR1cmVzKTtcbiBcdFx0cmV0dXJuIDA7XG4rXHRjYXNlIFZIT1NUX1JFU0VUX09XTkVSOlxuK1x0XHRyZXR1cm4gdmhvc3RfdnNvY2tfcmVzZXRfb3duZXIodnNvY2spO1xuIFx0ZGVmYXVsdDpcbiBcdFx0bXV0ZXhfbG9jayhcdTAwMjZ2c29jay1cdTAwM2VkZXYubXV0ZXgpO1xuIFx0XHRyID0gdmhvc3RfZGV2X2lvY3RsKFx1MDAyNnZzb2NrLVx1MDAzZWRldiwgaW9jdGwsIGFyZ3ApO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMTY6MTc6NTUuMzc2MjU0ODM2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTU4MDc3NTU3NDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipBbmFseXppbmcgdGhlIFZob3N0LVZTT0NLIFBhdGNoIGFuZCBSZWFjaGFiaWxpdHkqKlxuXG5SaWdodCwgc28gd2UndmUgZ290IGEgcGF0Y2ggdGhhdCdzIHRvdWNoZWQgYGRyaXZlcnMvdmhvc3QvdnNvY2suY2AuIFRoZSBjaGFuZ2VzIGludm9sdmUgYSBuZXcgYHN0YXJ0ZWRgIGZsYWcgd2l0aGluIHRoZSBgdmhvc3RfdnNvY2tgIHN0cnVjdHVyZSwgYW5kIGl0IGxvb2tzIGxpa2UgYHZob3N0X3RyYW5zcG9ydF9zZW5kX3BrdGAgYW5kIGB2aG9zdF90cmFuc3BvcnRfY2FuY2VsX3BrdGAgYXJlIGdldHRpbmcgdHdlYWtlZC4gSW50ZXJlc3RpbmcuIEFsc28sIGEgbmV3IGZ1bmN0aW9uLCBgdmhvc3RfdnNvY2tfcmVzZXRfb3duZXJgLCBoYXMgYmVlbiBhZGRlZCBmb3IgaGFuZGxpbmcgdGhlIGBWSE9TVF9SRVNFVF9PV05FUmAgaW9jdGwuXG5cbk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBpcyB0aGlzIGV2ZW4gKnJlYWNoYWJsZSo/IElzIHRoaXMgY29kZSBwYXRoIGFjdGl2ZT8gV2VsbCwgYGRyaXZlcnMvdmhvc3QvdnNvY2suY2AgaXMgdGhlIHZob3N0LXZzb2NrIGRyaXZlciwgYW5kIHRoYXQgc2hvdWxkIGJlIHByZXR0eSBjbGVhci4gSXQncyB0aGUgcHJvdmlkZXIgb2YgdGhlIGAvZGV2L3Zob3N0LXZzb2NrYCBkZXZpY2Ugbm9kZS4gQW5kIHRoZSBgVkhPU1RfUkVTRVRfT1dORVJgIGlvY3RsIGlzIGhhbmRsZWQgd2l0aGluIHRoYXQgZHJpdmVyLiBUaGF0IGlvY3RsIGltcGxlbWVudGF0aW9uIGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlLCBhbmQgdGh1cyBmdW5jdGlvbmFsLiBObyBjb25jZXJucyB0aGVyZS5cblxuTm93LCBsZXQncyB0aGluayBhYm91dCB0aGUgY29uZmlndXJhdGlvbi4gYGRyaXZlcnMvdmhvc3QvdnNvY2suY2AgaXMgY29tcGlsZWQgYmFzZWQgb24gdGhlIGBDT05GSUdfVkhPU1RfVlNPQ0tgIGNvbmZpZyBvcHRpb24uIEknbGwgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdCB0aGlzIGlzIGNvcnJlY3RseSBlbmFibGVkLCBidXQgYXNzdW1pbmcgaXQgaXMsIHRoZW4gdGhlIGNvZGUgcGF0aCBpcyBjZXJ0YWlubHkgdmFsaWQuIEknbGwgbG9vayBpbnRvIHZlcmlmeWluZyB0aGUgY29uZmlnIHNob3J0bHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxMzQsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQxNjoxODoxMS4xODQwMTUzMjRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjE1ODUzOTE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlZIT1NUX1ZTT0NLXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmhvc3QvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmhvc3QvS2NvbmZpZz00Nj1jb25maWcgVkhPU1RfU0NTSVxcbi0tXFxuZHJpdmVycy92aG9zdC9LY29uZmlnLTU1LVxcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZzo1Njpjb25maWcgVkhPU1RfVlNPQ0tcXG5kcml2ZXJzL3Zob3N0L0tjb25maWctNTctXFx0dHJpc3RhdGUgXFxcInZob3N0IHZpcnRpby12c29jayBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL3Zob3N0L01ha2VmaWxlPTY9dmhvc3Rfc2NzaS15IDo9IHNjc2kub1xcbmRyaXZlcnMvdmhvc3QvTWFrZWZpbGUtNy1cXG5kcml2ZXJzL3Zob3N0L01ha2VmaWxlOjg6b2JqLSQoQ09ORklHX1ZIT1NUX1ZTT0NLKSArPSB2aG9zdF92c29jay5vXFxuZHJpdmVycy92aG9zdC9NYWtlZmlsZS05LXZob3N0X3Zzb2NrLXkgOj0gdnNvY2sub1xcbi0tXFxuZHJpdmVycy92aG9zdC92aG9zdC5jPTg1OD1zdGF0aWMgdm9pZCBfX3Zob3N0X3ZxX2F0dGFjaF93b3JrZXIoc3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnEsXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtOTA3LVxcdFxcdC8qXFxuZHJpdmVycy92aG9zdC92aG9zdC5jOjkwODpcXHRcXHQgKiB2c29jayBjYW4gcXVldWUgYW55dGltZSBhZnRlciBWSE9TVF9WU09DS19TRVRfR1VFU1RfQ0lELlxcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYy05MDktXFx0XFx0ICogV2FybiBpZiBpdCBhZGRzIHN1cHBvcnQgZm9yIG11bHRpcGxlIHdvcmtlcnMgYnV0IGZvcmdldHMgdG9cXG4tLVxcbmRyaXZlcnMvdmhvc3QvdnNvY2suYy0yMS1cXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmM6MjI6I2RlZmluZSBWSE9TVF9WU09DS19ERUZBVUxUX0hPU1RfQ0lEXFx0MlxcbmRyaXZlcnMvdmhvc3QvdnNvY2suYy0yMy0vKiBNYXggbnVtYmVyIG9mIGJ5dGVzIHRyYW5zZmVycmVkIGJlZm9yZSByZXF1ZXVlaW5nIHRoZSBqb2IuXFxuZHJpdmVycy92aG9zdC92c29jay5jLTI0LSAqIFVzaW5nIHRoaXMgbGltaXQgcHJldmVudHMgb25lIHZpcnRxdWV1ZSBmcm9tIHN0YXJ2aW5nIG90aGVycy4gKi9cXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmM6MjU6I2RlZmluZSBWSE9TVF9WU09DS19XRUlHSFQgMHg4MDAwMFxcbmRyaXZlcnMvdmhvc3QvdnNvY2suYy0yNi0vKiBNYXggbnVtYmVyIG9mIHBhY2tldHMgdHJhbnNmZXJyZWQgYmVmb3JlIHJlcXVldWVpbmcgdGhlIGpvYi5cXG4tLVxcbmRyaXZlcnMvdmhvc3QvdnNvY2suYy0yOS0gKi9cXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmM6MzA6I2RlZmluZSBWSE9TVF9WU09DS19QS1RfV0VJR0hUIDI1NlxcbmRyaXZlcnMvdmhvc3QvdnNvY2suYy0zMS1cXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmM9MzI9c3RhdGljIGNvbnN0IGludCB2aG9zdF92c29ja19iaXRzW10gPSB7XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmMtMzctXFxuZHJpdmVycy92aG9zdC92c29jay5jOjM4OiNkZWZpbmUgVkhPU1RfVlNPQ0tfRkVBVFVSRVMgVkhPU1RfRkVBVFVSRVNfVTY0KHZob3N0X3Zzb2NrX2JpdHMsIDApXFxuZHJpdmVycy92aG9zdC92c29jay5jLTM5LVxcbmRyaXZlcnMvdmhvc3QvdnNvY2suYz00MD1lbnVtIHtcXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmM6NDE6XFx0VkhPU1RfVlNPQ0tfQkFDS0VORF9GRUFUVVJFUyA9ICgxVUxMIFxcdTAwM2NcXHUwMDNjIFZIT1NUX0JBQ0tFTkRfRl9JT1RMQl9NU0dfVjIpXFxuZHJpdmVycy92aG9zdC92c29jay5jLTQyLX07XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmM9Njc9c3RhdGljIHUzMiB2aG9zdF90cmFuc3BvcnRfZ2V0X2xvY2FsX2NpZCh2b2lkKVxcbmRyaXZlcnMvdmhvc3QvdnNvY2suYy02OC17XFxuZHJpdmVycy92aG9zdC92c29jay5jOjY5OlxcdHJldHVybiBWSE9TVF9WU09DS19ERUZBVUxUX0hPU1RfQ0lEO1xcbmRyaXZlcnMvdmhvc3QvdnNvY2suYy03MC19XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmM9NzI5PXN0YXRpYyBpbnQgdmhvc3RfdnNvY2tfZGV2X29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmMtNzYzLVxcdHZob3N0X2Rldl9pbml0KFxcdTAwMjZ2c29jay1cXHUwMDNlZGV2LCB2cXMsIEFSUkFZX1NJWkUodnNvY2stXFx1MDAzZXZxcyksXFxuZHJpdmVycy92aG9zdC92c29jay5jOjc2NDpcXHRcXHQgICAgICAgVUlPX01BWElPViwgVkhPU1RfVlNPQ0tfUEtUX1dFSUdIVCxcXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmM6NzY1OlxcdFxcdCAgICAgICBWSE9TVF9WU09DS19XRUlHSFQsIHRydWUsIE5VTEwpO1xcbmRyaXZlcnMvdmhvc3QvdnNvY2suYy03NjYtXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmM9ODg2PXN0YXRpYyBpbnQgdmhvc3RfdnNvY2tfc2V0X2ZlYXR1cmVzKHN0cnVjdCB2aG9zdF92c29jayAqdnNvY2ssIHU2NCBmZWF0dXJlcylcXG4tLVxcbmRyaXZlcnMvdmhvc3QvdnNvY2suYy04OTAtXFxuZHJpdmVycy92aG9zdC92c29jay5jOjg5MTpcXHRpZiAoZmVhdHVyZXMgXFx1MDAyNiB+VkhPU1RfVlNPQ0tfRkVBVFVSRVMpXFxuZHJpdmVycy92aG9zdC92c29jay5jLTg5Mi1cXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmM9OTUxPXN0YXRpYyBsb25nIHZob3N0X3Zzb2NrX2Rldl9pb2N0bChzdHJ1Y3QgZmlsZSAqZiwgdW5zaWduZWQgaW50IGlvY3RsLFxcbi0tXFxuZHJpdmVycy92aG9zdC92c29jay5jLTk2MS1cXHRzd2l0Y2ggKGlvY3RsKSB7XFxuZHJpdmVycy92aG9zdC92c29jay5jOjk2MjpcXHRjYXNlIFZIT1NUX1ZTT0NLX1NFVF9HVUVTVF9DSUQ6XFxuZHJpdmVycy92aG9zdC92c29jay5jLTk2My1cXHRcXHRpZiAoY29weV9mcm9tX3VzZXIoXFx1MDAyNmd1ZXN0X2NpZCwgYXJncCwgc2l6ZW9mKGd1ZXN0X2NpZCkpKVxcbi0tXFxuZHJpdmVycy92aG9zdC92c29jay5jLTk2NS1cXHRcXHRyZXR1cm4gdmhvc3RfdnNvY2tfc2V0X2NpZCh2c29jaywgZ3Vlc3RfY2lkKTtcXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmM6OTY2OlxcdGNhc2UgVkhPU1RfVlNPQ0tfU0VUX1JVTk5JTkc6XFxuZHJpdmVycy92aG9zdC92c29jay5jLTk2Ny1cXHRcXHRpZiAoY29weV9mcm9tX3VzZXIoXFx1MDAyNnN0YXJ0LCBhcmdwLCBzaXplb2Yoc3RhcnQpKSlcXG4tLVxcbmRyaXZlcnMvdmhvc3QvdnNvY2suYy05NzMtXFx0Y2FzZSBWSE9TVF9HRVRfRkVBVFVSRVM6XFxuZHJpdmVycy92aG9zdC92c29jay5jOjk3NDpcXHRcXHRmZWF0dXJlcyA9IFZIT1NUX1ZTT0NLX0ZFQVRVUkVTO1xcbmRyaXZlcnMvdmhvc3QvdnNvY2suYy05NzUtXFx0XFx0aWYgKGNvcHlfdG9fdXNlcihhcmdwLCBcXHUwMDI2ZmVhdHVyZXMsIHNpemVvZihmZWF0dXJlcykpKVxcbi0tXFxuZHJpdmVycy92aG9zdC92c29jay5jLTk4Mi1cXHRjYXNlIFZIT1NUX0dFVF9CQUNLRU5EX0ZFQVRVUkVTOlxcbmRyaXZlcnMvdmhvc3QvdnNvY2suYzo5ODM6XFx0XFx0ZmVhdHVyZXMgPSBWSE9TVF9WU09DS19CQUNLRU5EX0ZFQVRVUkVTO1xcbmRyaXZlcnMvdmhvc3QvdnNvY2suYy05ODQtXFx0XFx0aWYgKGNvcHlfdG9fdXNlcihhcmdwLCBcXHUwMDI2ZmVhdHVyZXMsIHNpemVvZihmZWF0dXJlcykpKVxcbi0tXFxuZHJpdmVycy92aG9zdC92c29jay5jLTk4OS1cXHRcXHRcXHRyZXR1cm4gLUVGQVVMVDtcXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmM6OTkwOlxcdFxcdGlmIChmZWF0dXJlcyBcXHUwMDI2IH5WSE9TVF9WU09DS19CQUNLRU5EX0ZFQVRVUkVTKVxcbmRyaXZlcnMvdmhvc3QvdnNvY2suYy05OTEtXFx0XFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbi0tXFxuZHJpdmVycy92aG9zdC92c29jay5jPTEwNDg9c3RhdGljIHN0cnVjdCBtaXNjZGV2aWNlIHZob3N0X3Zzb2NrX21pc2MgPSB7XFxuZHJpdmVycy92aG9zdC92c29jay5jOjEwNDk6XFx0Lm1pbm9yID0gVkhPU1RfVlNPQ0tfTUlOT1IsXFxuZHJpdmVycy92aG9zdC92c29jay5jLTEwNTAtXFx0Lm5hbWUgPSBcXFwidmhvc3QtdnNvY2tcXFwiLFxcbi0tXFxuZHJpdmVycy92aG9zdC92c29jay5jPTEwODI9TU9EVUxFX0RFU0NSSVBUSU9OKFxcXCJ2aG9zdCB0cmFuc3BvcnQgZm9yIHZzb2NrIFxcXCIpO1xcbmRyaXZlcnMvdmhvc3QvdnNvY2suYzoxMDgzOk1PRFVMRV9BTElBU19NSVNDREVWKFZIT1NUX1ZTT0NLX01JTk9SKTtcXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmMtMTA4NC1NT0RVTEVfQUxJQVMoXFxcImRldm5hbWU6dmhvc3QtdnNvY2tcXFwiKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMTY6MTg6MTEuNzk5ODgyNDcxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjQ2NDI0NTAyMDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgdGhlIHZob3N0LXZzb2NrIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBhaW1lZCBzcXVhcmVseSBhdCB0aGUgYGRyaXZlcnMvdmhvc3QvdnNvY2suY2AgZmlsZS4gTXkgaW5pdGlhbCBpbXByZXNzaW9uIGlzIHRoYXQgaXQncyBmdW5jdGlvbmFsIGFuZCBpbnRyb2R1Y2VzIGEgZmV3IHNpZ25pZmljYW50IGNoYW5nZXMuIEZpcnN0LCBhIGBzdGFydGVkYCBmbGFnIGlzIGFkZGVkIHRvIHRoZSBgdmhvc3RfdnNvY2tgIHN0cnVjdC4gVGhpcyBpcyBzbWFydDsgdGhleSdyZSBjaGFuZ2luZyB0aGUgbG9naWMgaW4gYHZob3N0X3RyYW5zcG9ydF9zZW5kX3BrdGAgdG8gcmVseSBvbiB0aGlzIGBzdGFydGVkYCBmbGFnIGluc3RlYWQgb2YganVzdCBjaGVja2luZyBmb3IgYSBub24tTlVMTCBiYWNrZW5kLiBUaGlzIGlzIGNsZWFuZXIgYW5kIG1ha2VzIHRoZSBjb250cm9sIGZsb3cgbW9yZSBleHBsaWNpdC4gVGhlIGB2aG9zdF92c29ja19zdGFydGAgZnVuY3Rpb24gbm93IHNldHMgdGhpcyBgc3RhcnRlZGAgZmxhZywgd2hpY2ggbWFrZXMgc2Vuc2UuXG5cblRoZSBtb3N0IGludGVyZXN0aW5nIHBhcnQgaXMgdGhlIGFkZGl0aW9uIG9mIGB2aG9zdF92c29ja19yZXNldF9vd25lcmAuIFRoaXMgaXMgY2xlYXJseSBpbiByZXNwb25zZSB0byBoYW5kbGluZyB0aGUgYFZIT1NUX1JFU0VUX09XTkVSYCBpb2N0bC4gUHJldmlvdXNseSwgdGhpcyB3YXMgaGFuZGxlZCBieSBhIGdlbmVyaWMgaGFuZGxlciwgYnV0IG5vdywgaXQgaGFzIGRlZGljYXRlZCBsb2dpYyBmb3IgdnNvY2suIFRoZSBwYXRjaCBhbHNvIGludHJvZHVjZXMgYHZob3N0X3Zzb2NrX2Ryb3BfYmFja2VuZHNgLCBjYWxsZWQgZnJvbSBib3RoIGB2aG9zdF92c29ja19zdG9wYCBhbmQgYHZob3N0X3Zzb2NrX3Jlc2V0X293bmVyYC4gVGhpcyBzdWdnZXN0cyBhIGNhcmVmdWwgY2xlYW51cCBwcm9jZWR1cmUgd2hlbiB0aGUgZGV2aWNlIGlzIHN0b3BwZWQgb3IgcmVzZXQuXG5cblRoZSBwYXRjaCBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZTsgdGhlIHZob3N0LXZzb2NrIGRyaXZlciBpcyBleHBvc2VkIHZpYSBgL2Rldi92aG9zdC12c29ja2AgaW9jdGxzLiBJIHNlZSB0aGF0IGB2aG9zdF92c29ja19kZXZfaW9jdGxgIGhhbmRsZXMgYFZIT1NUX1JFU0VUX09XTkVSYCBub3csIGluc3RlYWQgb2YgdGhlIGRlZmF1bHQgaW9jdGwgaGFuZGxlci4gSSdtIGZvY3VzaW5nIG9uIHRoZSBleHBsaWNpdCBoYW5kbGluZyBvZiBgVkhPU1RfUkVTRVRfT1dORVJgLlxuXG5JJ3ZlIGNoZWNrZWQgdGhlIGBLY29uZmlnYCBmaWxlLCBhbmQgYENPTkZJR19WSE9TVF9WU09DS2AgaXMgdGhlIHJlbGV2YW50IGNvbmZpZyBvcHRpb24uXG5cbkkgbmVlZCB0byBkZWNpZGUgd2hpY2ggZnVuY3Rpb25zIGFyZSB0aGUga2V5IG9uZXMgdG8gZm9jdXMgb24gZm9yIGZ1enppbmcuIEkgaW5pdGlhbGx5IGxvb2tlZCBhdCBgdmhvc3RfdnNvY2tfcmVzZXRfb3duZXJgLCBgdmhvc3RfdnNvY2tfZGV2X2lvY3RsYCwgYHZob3N0X3Zzb2NrX3N0YXJ0YCwgYHZob3N0X3Zzb2NrX3N0b3BgLCBgdmhvc3RfdHJhbnNwb3J0X3NlbmRfcGt0YCwgYW5kIGB2aG9zdF90cmFuc3BvcnRfY2FuY2VsX3BrdGAsIGJ1dCBgdmhvc3RfdHJhbnNwb3J0X3NlbmRfcGt0YCBhbmQgYHZob3N0X3RyYW5zcG9ydF9jYW5jZWxfcGt0YCBhcmUgaG90LXBhdGgsIHNvIEkgd2lsbCBhdm9pZCB0aGVtLiBTbywgdGhlIGtleSBmdW5jdGlvbnMgYXJlIGB2aG9zdF92c29ja19yZXNldF9vd25lcmAsIGB2aG9zdF92c29ja19kZXZfaW9jdGxgLCBgdmhvc3RfdnNvY2tfc3RhcnRgLCBhbmQgYHZob3N0X3Zzb2NrX3N0b3BgLlxuXG5Mb29raW5nIGF0IHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgdmhvc3RfdnNvY2tfcmVzZXRfb3duZXJgLCBpdCdzIGNsZWFyIHRoaXMgd2FycmFudHMgZnV6emluZy4gSXQgaGFuZGxlcyBvd25lciByZXNldCwgaW5jbHVkaW5nIHN5bmNocm9uaXphdGlvbiwgYmFja2VuZCBkcm9wcGluZywgZmx1c2hpbmcsIGRldmljZSBzdG9wcGluZywgYW5kIHJlc2V0LiBUaGUgY29kZSBsb29rcyBjb3JyZWN0LCBidXQgaXQncyBjb21wbGV4IGVub3VnaCB0byBiZW5lZml0IGZyb20gZnV6emluZy5cblxuSSd2ZSBjb25maXJtZWQgdGhhdCBgdmhvc3RfdnNvY2tfZGV2X2lvY3RsYCBpcyB0aGUgZW50cnkgcG9pbnQgZm9yIHRoZSBgL2Rldi92aG9zdC12c29ja2AgaW9jdGwgaGFuZGxpbmcsIHdoaWNoIGNvbmZpcm1zIGBWSE9TVF9SRVNFVF9PV05FUmAgaXMgcmVhY2hhYmxlLlxuXG5JJ3ZlIGFsc28gY2hlY2tlZCB0aGUgY29uZmlnIGRlcGVuZGVuY2llcywgYW5kIGBWSE9TVF9WU09DS2AgZGVwZW5kcyBvbiBgVkhPU1RgIGFuZCBgVlNPQ0tFVFNgLCBidXQgbGlzdGluZyBgVkhPU1RfVlNPQ0tgIGlzIHN1ZmZpY2llbnQuXG5cbk15IGNvbmNsdXNpb24gaXMgdGhhdCB0aGlzIHBhdGNoIGlzIGRlZmluaXRlbHkgd29ydGggZnV6emluZy4gSSdsbCBmb2N1cyBvbiB0aGUgZnVuY3Rpb25zOiBgdmhvc3RfdnNvY2tfcmVzZXRfb3duZXJgLCBgdmhvc3RfdnNvY2tfc3RhcnRgLCBgdmhvc3RfdnNvY2tfc3RvcGAsIGFuZCBhbHNvIGluY2x1ZGUgYHZob3N0X3Zzb2NrX2Rldl9pb2N0bGAgYXMgYW4gZW50cnkgcG9pbnQuIFRoZSBwcmltYXJ5IGNvbmZpZyBpcyBgVkhPU1RfVlNPQ0tgLiBUaGUgbWFpbiByZWFzb24gdG8gZnV6eiBpcyB0aGF0IHRoZSBwYXRjaCBleHBsaWNpdGx5IGhhbmRsZXMgdGhlIGBWSE9TVF9SRVNFVF9PV05FUmAgaW9jdGwsIGFkZGluZyBhIG5ldyBgdmhvc3RfdnNvY2tfcmVzZXRfb3duZXJgIGZ1bmN0aW9uLCBhbmQgbW9kaWZpZXMgdGhlIHBhY2tldC1zZW5kaW5nIGxvZ2ljLiBUaGVzZSBjaGFuZ2VzIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdGhyb3VnaCBgL2Rldi92aG9zdC12c29ja2AgaW9jdGxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MTg3LCJPdXRwdXRUb2tlbnMiOjE1MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMTY6MTg6MzYuNDQyMzM2MTE4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTg0Mzc3ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlZIT1NUX1ZTT0NLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmhvc3RfdnNvY2tfcmVzZXRfb3duZXJcIixcbiAgICBcInZob3N0X3Zzb2NrX3N0YXJ0XCIsXG4gICAgXCJ2aG9zdF92c29ja19zdG9wXCIsXG4gICAgXCJ2aG9zdF92c29ja19kZXZfaW9jdGxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgdmhvc3QtdnNvY2sgZHJpdmVyIHRvIGhhbmRsZSB0aGUgVkhPU1RfUkVTRVRfT1dORVIgaW9jdGwgZXhwbGljaXRseSwgYWRkaW5nIGEgbmV3IHZob3N0X3Zzb2NrX3Jlc2V0X293bmVyIGZ1bmN0aW9uIGFuZCBtb2RpZnlpbmcgdGhlIHBhY2tldCBzZW5kaW5nIGxvZ2ljIHRvIGhhbmRsZSBkZXZpY2Ugc3RvcC9yZXNldCBjb3JyZWN0bHkuIFRoaXMgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSAvZGV2L3Zob3N0LXZzb2NrIGlvY3Rscy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWSE9TVF9WU09DS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInZob3N0X3Zzb2NrX3Jlc2V0X293bmVyXCIsXG4gICAgXCJ2aG9zdF92c29ja19zdGFydFwiLFxuICAgIFwidmhvc3RfdnNvY2tfc3RvcFwiLFxuICAgIFwidmhvc3RfdnNvY2tfZGV2X2lvY3RsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHZob3N0LXZzb2NrIGRyaXZlciB0byBoYW5kbGUgdGhlIFZIT1NUX1JFU0VUX09XTkVSIGlvY3RsIGV4cGxpY2l0bHksIGFkZGluZyBhIG5ldyB2aG9zdF92c29ja19yZXNldF9vd25lciBmdW5jdGlvbiBhbmQgbW9kaWZ5aW5nIHRoZSBwYWNrZXQgc2VuZGluZyBsb2dpYyB0byBoYW5kbGUgZGV2aWNlIHN0b3AvcmVzZXQgY29ycmVjdGx5LiBUaGlzIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgL2Rldi92aG9zdC12c29jayBpb2N0bHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowf7fn2[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-25 15:59:36 +0000 UTC FinishedAt: 2026-06-25 16:18:37 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "ab9de95c9cf952332ab79453b4b5d1bfca8e514f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VHOST_VSOCK" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "ab9de95c9cf952332ab79453b4b5d1bfca8e514f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VHOST_VSOCK" ], "series_id": "fb2e4154-6f80-42ad-a42d-a0c24ceb1ffa" }, "track": "KASAN", "fuzz": { "focus": [ "kvm", "net" ], "focus_symbols": [ "vhost_vsock_reset_owner", "vhost_vsock_start", "vhost_vsock_stop", "vhost_vsock_dev_ioctl" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDE2OjE3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZIT1NUX1ZTT0NLJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dmhvc3RfdnNvY2tfcmVzZXRfb3duZXImIzM0OywKICAgICYjMzQ7dmhvc3RfdnNvY2tfc3RhcnQmIzM0OywKICAgICYjMzQ7dmhvc3RfdnNvY2tfc3RvcCYjMzQ7LAogICAgJiMzNDt2aG9zdF92c29ja19kZXZfaW9jdGwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHZob3N0LXZzb2NrIGRyaXZlciB0byBoYW5kbGUgdGhlIFZIT1NUX1JFU0VUX09XTkVSIGlvY3RsIGV4cGxpY2l0bHksIGFkZGluZyBhIG5ldyB2aG9zdF92c29ja19yZXNldF9vd25lciBmdW5jdGlvbiBhbmQgbW9kaWZ5aW5nIHRoZSBwYWNrZXQgc2VuZGluZyBsb2dpYyB0byBoYW5kbGUgZGV2aWNlIHN0b3AvcmVzZXQgY29ycmVjdGx5LiBUaGlzIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgL2Rldi92aG9zdC12c29jayBpb2N0bHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMTY6MTc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1ODVmNGYyOGQxMWRmZjQyMTA4Mzg0ZWE5MzQxYWE4ZGI1YTQzZDliXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdW4gMjUgMTY6MTc6NTMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy92aG9zdC92c29jay5jIGIvZHJpdmVycy92aG9zdC92c29jay5jXG5pbmRleCA5YWFhYjZiYjgwNjFjMS4uZjBhMGFhN2QzMjAwMDEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3Zob3N0L3Zzb2NrLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdmhvc3QvdnNvY2suY1xuQEAgLTYxLDYgJiM0Mzs2MSw3IEBAIHN0cnVjdCB2aG9zdF92c29jayB7XG4gXG4gXHR1MzIgZ3Vlc3RfY2lkO1xuIFx0Ym9vbCBzZXFwYWNrZXRfYWxsb3c7XG4mIzQzO1x0Ym9vbCBzdGFydGVkO1x0XHQvKiBzZXQgb24gZmlyc3QgU0VUX1JVTk5JTkcoMSk7IG5ldmVyIGNsZWFyZWQgKi9cbiB9O1xuIFxuIHN0YXRpYyB1MzIgdmhvc3RfdHJhbnNwb3J0X2dldF9sb2NhbF9jaWQodm9pZClcbkBAIC0zMDIsMTcgJiM0MzszMDMsMTIgQEAgdmhvc3RfdHJhbnNwb3J0X3NlbmRfcGt0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXQgKm5ldClcbiBcdFx0cmV0dXJuIC1FTk9ERVY7XG4gXHR9XG4gXG4tXHQvKiBGYXN0LWZhaWwgaWYgdGhlIGd1ZXN0IGhhc24mIzM5O3QgZW5hYmxlZCB0aGUgUlggdnEgeWV0LiBRdWV1aW5nIHRoZSBwYWNrZXRcbi1cdCAqIGFuZCBtYWtpbmcgdGhlIGNhbGxlciB3YWl0IGlzIHBvaW50bGVzczogZXZlbiBpZiB0aGUgZ3Vlc3QgbWFuYWdlcyB0byBpbml0XG4tXHQgKiB3aXRoaW4gdGhlIHRpbWVvdXQsIGl0JiMzOTtsbCBpbW1lZGlhdGVseSByZXBseSB3aXRoIFJTVCwgYmVjYXVzZSB0aGVyZSYjMzk7cyBub1xuLVx0ICogbGlzdGVuZXIgb24gdGhlIHBvcnQgeWV0LlxuLVx0ICpcbi1cdCAqIHZob3N0X3ZxX2dldF9iYWNrZW5kKCkgd2l0aG91dCB2cS1cdTAwM2VtdXRleCBpcyBhY2NlcHRhYmxlIGhlcmU6IGxvY2tpbmdcbi1cdCAqIHRoZSBtdXRleCB3b3VsZCBiZSB0b28gZXhwZW5zaXZlIGluIHRoaXMgaG90IHBhdGgsIGFuZCB3ZSBhbHJlYWR5IGhhdmVcbi1cdCAqIGFsbCB0aGUgb3V0Y29tZXMgY292ZXJlZDogaWYgdGhlIGJhY2tlbmQgYmVjb21lcyBOVUxMIHJpZ2h0IGFmdGVyIHRoZSBjaGVjayxcbi1cdCAqIHZob3N0X3RyYW5zcG9ydF9kb19zZW5kX3BrdCgpIHdpbGwgY2hlY2sgaXQgdW5kZXIgdGhlIG11dGV4IGFueXdheS5cbiYjNDM7XHQvKiBGYXN0LWZhaWwgdW50aWwgdGhlIGd1ZXN0IGZpcnN0IGVuYWJsZXMgdGhlIGRldmljZSAoU0VUX1JVTk5JTkcoMSkpLlxuJiM0MztcdCAqIEJlZm9yZSB0aGF0IHRoZXJlIGlzIG5vIGxpc3RlbmVyLCBzbyBxdWV1aW5nIGlzIHBvaW50bGVzcy4gJiMzOTtzdGFydGVkJiMzOTtcbiYjNDM7XHQgKiBpcyBuZXZlciBjbGVhcmVkLCBzbyBvbmNlIHdlJiMzOTtyZSB1cCB3ZSBrZWVwIHF1ZXVpbmcgYWNyb3NzIGxhdGVyXG4mIzQzO1x0ICogc3RvcCAvIENQUi1wYXVzZSB3aW5kb3dzLlxuIFx0ICovXG4tXHRpZiAodW5saWtlbHkoIWRhdGFfcmFjZSh2aG9zdF92cV9nZXRfYmFja2VuZChcdTAwMjZ2c29jay1cdTAwM2V2cXNbVlNPQ0tfVlFfUlhdKSkpKSB7XG4mIzQzO1x0aWYgKHVubGlrZWx5KCFSRUFEX09OQ0UodnNvY2stXHUwMDNlc3RhcnRlZCkpKSB7XG4gXHRcdHJjdV9yZWFkX3VubG9jaygpO1xuIFx0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIC1FSE9TVFVOUkVBQ0g7XG5AQCAtMzIyLDcgJiM0MzszMTgsMTQgQEAgdmhvc3RfdHJhbnNwb3J0X3NlbmRfcGt0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXQgKm5ldClcbiBcdFx0YXRvbWljX2luYyhcdTAwMjZ2c29jay1cdTAwM2VxdWV1ZWRfcmVwbGllcyk7XG4gXG4gXHR2aXJ0aW9fdnNvY2tfc2tiX3F1ZXVlX3RhaWwoXHUwMDI2dnNvY2stXHUwMDNlc2VuZF9wa3RfcXVldWUsIHNrYik7XG4tXHR2aG9zdF92cV93b3JrX3F1ZXVlKFx1MDAyNnZzb2NrLVx1MDAzZXZxc1tWU09DS19WUV9SWF0sIFx1MDAyNnZzb2NrLVx1MDAzZXNlbmRfcGt0X3dvcmspO1xuJiM0MztcbiYjNDM7XHQvKiBTa2lwIHRoZSBraWNrIG9uY2UgdGhlIGJhY2tlbmQgaXMgZ29uZSAoc3RvcC9SRVNFVF9PV05FUik7IHRoZSBza2JcbiYjNDM7XHQgKiBzdGF5cyBxdWV1ZWQgYW5kIHZob3N0X3Zzb2NrX3N0YXJ0KCkgZHJhaW5zIGl0LiBQYWlycyB3aXRoIHRoZVxuJiM0MztcdCAqIHN5bmNocm9uaXplX3JjdSgpIGluIHZob3N0X3Zzb2NrX3Jlc2V0X293bmVyKCkuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKGRhdGFfcmFjZSh2aG9zdF92cV9nZXRfYmFja2VuZChcdTAwMjZ2c29jay1cdTAwM2V2cXNbVlNPQ0tfVlFfUlhdKSkpXG4mIzQzO1x0XHR2aG9zdF92cV93b3JrX3F1ZXVlKFx1MDAyNnZzb2NrLVx1MDAzZXZxc1tWU09DS19WUV9SWF0sXG4mIzQzO1x0XHRcdFx0ICAgIFx1MDAyNnZzb2NrLVx1MDAzZXNlbmRfcGt0X3dvcmspO1xuIFxuIFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4gXHRyZXR1cm4gbGVuO1xuQEAgLTM1MCw3ICYjNDM7MzUzLDE1IEBAIHZob3N0X3RyYW5zcG9ydF9jYW5jZWxfcGt0KHN0cnVjdCB2c29ja19zb2NrICp2c2spXG4gXHRcdGludCBuZXdfY250O1xuIFxuIFx0XHRuZXdfY250ID0gYXRvbWljX3N1Yl9yZXR1cm4oY250LCBcdTAwMjZ2c29jay1cdTAwM2VxdWV1ZWRfcmVwbGllcyk7XG4tXHRcdGlmIChuZXdfY250ICYjNDM7IGNudCBcdTAwM2U9IHR4X3ZxLVx1MDAzZW51bSBcdTAwMjZcdTAwMjYgbmV3X2NudCBcdTAwM2MgdHhfdnEtXHUwMDNlbnVtKVxuJiM0MztcbiYjNDM7XHRcdC8qIFNraXAgdGhlIGtpY2sgb25jZSB0aGUgYmFja2VuZCBpcyBnb25lIChzdG9wL1JFU0VUX09XTkVSKTpcbiYjNDM7XHRcdCAqIHZob3N0X3BvbGxfcXVldWUoKSB3b3VsZCB0b3VjaCB0aGUgd29ya2VyIHdoaWNoIGlzIGJlaW5nIGZyZWVkXG4mIzQzO1x0XHQgKiBieSB0ZWFyZG93biwgZS5nLiBvbiBSRVNFVF9PV05FUi4gIFBhaXJzIHdpdGggdGhlXG4mIzQzO1x0XHQgKiBzeW5jaHJvbml6ZV9yY3UoKSBpbiB2aG9zdF92c29ja19yZXNldF9vd25lcigpLiAgVGhlIFRYIFZRIGlzXG4mIzQzO1x0XHQgKiByZS1raWNrZWQgYnkgdmhvc3RfdnNvY2tfc3RhcnQoKS5cbiYjNDM7XHRcdCAqL1xuJiM0MztcdFx0aWYgKGRhdGFfcmFjZSh2aG9zdF92cV9nZXRfYmFja2VuZCh0eF92cSkpIFx1MDAyNlx1MDAyNlxuJiM0MztcdFx0ICAgIG5ld19jbnQgJiM0MzsgY250IFx1MDAzZT0gdHhfdnEtXHUwMDNlbnVtIFx1MDAyNlx1MDAyNiBuZXdfY250IFx1MDAzYyB0eF92cS1cdTAwM2VudW0pXG4gXHRcdFx0dmhvc3RfcG9sbF9xdWV1ZShcdTAwMjZ0eF92cS1cdTAwM2Vwb2xsKTtcbiBcdH1cbiBcbkBAIC02NDAsMTEgJiM0Mzs2NTEsMjMgQEAgc3RhdGljIGludCB2aG9zdF92c29ja19zdGFydChzdHJ1Y3Qgdmhvc3RfdnNvY2sgKnZzb2NrKVxuIFx0XHRtdXRleF91bmxvY2soXHUwMDI2dnEtXHUwMDNlbXV0ZXgpO1xuIFx0fVxuIFxuJiM0MztcdC8qIFNldCAmIzM5O3N0YXJ0ZWQmIzM5OyBmbGFnIG9uIHRoZSBmaXJzdCBzdGFydDsgbmV2ZXIgY2xlYXJlZCwgc28gc2VuZF9wa3RcbiYjNDM7XHQgKiBrZWVwcyBxdWV1aW5nIChpbnN0ZWFkIG9mIGZhc3QtZmFpbGluZykgb24gbGF0ZXIgc3RvcCAvIENQUiBwYXVzZXMuXG4mIzQzO1x0ICovXG4mIzQzO1x0V1JJVEVfT05DRSh2c29jay1cdTAwM2VzdGFydGVkLCB0cnVlKTtcbiYjNDM7XG4gXHQvKiBTb21lIHBhY2tldHMgbWF5IGhhdmUgYmVlbiBxdWV1ZWQgYmVmb3JlIHRoZSBkZXZpY2Ugd2FzIHN0YXJ0ZWQsXG4gXHQgKiBsZXQmIzM5O3Mga2ljayB0aGUgc2VuZCB3b3JrZXIgdG8gc2VuZCB0aGVtLlxuIFx0ICovXG4gXHR2aG9zdF92cV93b3JrX3F1ZXVlKFx1MDAyNnZzb2NrLVx1MDAzZXZxc1tWU09DS19WUV9SWF0sIFx1MDAyNnZzb2NrLVx1MDAzZXNlbmRfcGt0X3dvcmspO1xuIFxuJiM0MztcdC8qXG4mIzQzO1x0ICogU29tZSBwYWNrZXRzIG1pZ2h0JiMzOTt2ZSBhbHNvIGJlZW4gcXVldWVkIGluIFRYIFZRLiAgVGhhdCBpcyB0aGUgY2FzZVxuJiM0MztcdCAqIGR1cmluZyB0aGUgYnJpZWYgZGV2aWNlIHBhdXNlIGNhdXNlZCBieSBWSE9TVF9SRVNFVF9PV05FUi4gIFJlLXNjYW5cbiYjNDM7XHQgKiB0aGUgVFggVlEgaGVyZSwgbWlycm9yaW5nIHRoZSBSWCBzZW5kLXdvcmtlciBraWNrIGFib3ZlLlxuJiM0MztcdCAqL1xuJiM0MztcdHZob3N0X3BvbGxfcXVldWUoXHUwMDI2dnNvY2stXHUwMDNldnFzW1ZTT0NLX1ZRX1RYXS5wb2xsKTtcbiYjNDM7XG4gXHRtdXRleF91bmxvY2soXHUwMDI2dnNvY2stXHUwMDNlZGV2Lm11dGV4KTtcbiBcdHJldHVybiAwO1xuIFxuQEAgLTY2NCw5ICYjNDM7Njg3LDI0IEBAIHN0YXRpYyBpbnQgdmhvc3RfdnNvY2tfc3RhcnQoc3RydWN0IHZob3N0X3Zzb2NrICp2c29jaylcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuLXN0YXRpYyBpbnQgdmhvc3RfdnNvY2tfc3RvcChzdHJ1Y3Qgdmhvc3RfdnNvY2sgKnZzb2NrLCBib29sIGNoZWNrX293bmVyKVxuJiM0MztzdGF0aWMgdm9pZCB2aG9zdF92c29ja19kcm9wX2JhY2tlbmRzKHN0cnVjdCB2aG9zdF92c29jayAqdnNvY2spXG4ge1xuJiM0MztcdHN0cnVjdCB2aG9zdF92aXJ0cXVldWUgKnZxO1xuIFx0c2l6ZV90IGk7XG4mIzQzO1xuJiM0MztcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXHUwMDI2dnNvY2stXHUwMDNlZGV2Lm11dGV4KTtcbiYjNDM7XG4mIzQzO1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRSh2c29jay1cdTAwM2V2cXMpOyBpJiM0MzsmIzQzOykge1xuJiM0MztcdFx0dnEgPSBcdTAwMjZ2c29jay1cdTAwM2V2cXNbaV07XG4mIzQzO1xuJiM0MztcdFx0bXV0ZXhfbG9jayhcdTAwMjZ2cS1cdTAwM2VtdXRleCk7XG4mIzQzO1x0XHR2aG9zdF92cV9zZXRfYmFja2VuZCh2cSwgTlVMTCk7XG4mIzQzO1x0XHRtdXRleF91bmxvY2soXHUwMDI2dnEtXHUwMDNlbXV0ZXgpO1xuJiM0MztcdH1cbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGludCB2aG9zdF92c29ja19zdG9wKHN0cnVjdCB2aG9zdF92c29jayAqdnNvY2ssIGJvb2wgY2hlY2tfb3duZXIpXG4mIzQzO3tcbiBcdGludCByZXQgPSAwO1xuIFxuIFx0bXV0ZXhfbG9jayhcdTAwMjZ2c29jay1cdTAwM2VkZXYubXV0ZXgpO1xuQEAgLTY3NywxNCAmIzQzOzcxNSw3IEBAIHN0YXRpYyBpbnQgdmhvc3RfdnNvY2tfc3RvcChzdHJ1Y3Qgdmhvc3RfdnNvY2sgKnZzb2NrLCBib29sIGNoZWNrX293bmVyKVxuIFx0XHRcdGdvdG8gZXJyO1xuIFx0fVxuIFxuLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRSh2c29jay1cdTAwM2V2cXMpOyBpJiM0MzsmIzQzOykge1xuLVx0XHRzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cSA9IFx1MDAyNnZzb2NrLVx1MDAzZXZxc1tpXTtcbi1cbi1cdFx0bXV0ZXhfbG9jayhcdTAwMjZ2cS1cdTAwM2VtdXRleCk7XG4tXHRcdHZob3N0X3ZxX3NldF9iYWNrZW5kKHZxLCBOVUxMKTtcbi1cdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnZxLVx1MDAzZW11dGV4KTtcbi1cdH1cbi1cbiYjNDM7XHR2aG9zdF92c29ja19kcm9wX2JhY2tlbmRzKHZzb2NrKTtcbiBlcnI6XG4gXHRtdXRleF91bmxvY2soXHUwMDI2dnNvY2stXHUwMDNlZGV2Lm11dGV4KTtcbiBcdHJldHVybiByZXQ7XG5AQCAtNzIwLDYgJiM0Mzs3NTEsNyBAQCBzdGF0aWMgaW50IHZob3N0X3Zzb2NrX2Rldl9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxuIFxuIFx0dnNvY2stXHUwMDNlZ3Vlc3RfY2lkID0gMDsgLyogbm8gQ0lEIGFzc2lnbmVkIHlldCAqL1xuIFx0dnNvY2stXHUwMDNlc2VxcGFja2V0X2FsbG93ID0gZmFsc2U7XG4mIzQzO1x0dnNvY2stXHUwMDNlc3RhcnRlZCA9IGZhbHNlO1xuIFxuIFx0YXRvbWljX3NldChcdTAwMjZ2c29jay1cdTAwM2VxdWV1ZWRfcmVwbGllcywgMCk7XG4gXG5AQCAtODg2LDYgJiM0Mzs5MTgsMzYgQEAgc3RhdGljIGludCB2aG9zdF92c29ja19zZXRfZmVhdHVyZXMoc3RydWN0IHZob3N0X3Zzb2NrICp2c29jaywgdTY0IGZlYXR1cmVzKVxuIFx0cmV0dXJuIC1FRkFVTFQ7XG4gfVxuIFxuJiM0MztzdGF0aWMgaW50IHZob3N0X3Zzb2NrX3Jlc2V0X293bmVyKHN0cnVjdCB2aG9zdF92c29jayAqdnNvY2spXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3Qgdmhvc3RfaW90bGIgKnVtZW07XG4mIzQzO1x0bG9uZyBlcnI7XG4mIzQzO1xuJiM0MztcdG11dGV4X2xvY2soXHUwMDI2dnNvY2stXHUwMDNlZGV2Lm11dGV4KTtcbiYjNDM7XHRlcnIgPSB2aG9zdF9kZXZfY2hlY2tfb3duZXIoXHUwMDI2dnNvY2stXHUwMDNlZGV2KTtcbiYjNDM7XHRpZiAoZXJyKVxuJiM0MztcdFx0Z290byBkb25lO1xuJiM0MztcdHVtZW0gPSB2aG9zdF9kZXZfcmVzZXRfb3duZXJfcHJlcGFyZSgpO1xuJiM0MztcdGlmICghdW1lbSkge1xuJiM0MztcdFx0ZXJyID0gLUVOT01FTTtcbiYjNDM7XHRcdGdvdG8gZG9uZTtcbiYjNDM7XHR9XG4mIzQzO1x0dmhvc3RfdnNvY2tfZHJvcF9iYWNrZW5kcyh2c29jayk7XG4mIzQzO1xuJiM0MztcdC8qIExldCBpbi1mbGlnaHQgc2VuZF9wa3QoKSBjYWxsZXJzIHN0b3AgdG91Y2hpbmcgdGhlIHdvcmtlciBiZWZvcmUgdGhlXG4mIzQzO1x0ICogZmx1c2ggJiM0MzsgZnJlZSBiZWxvdy4gUGFpcnMgd2l0aCB0aGUgYmFja2VuZCBjaGVjayBpblxuJiM0MztcdCAqIHZob3N0X3RyYW5zcG9ydF9zZW5kX3BrdCgpLlxuJiM0MztcdCAqL1xuJiM0MztcdHN5bmNocm9uaXplX3JjdSgpO1xuJiM0MztcbiYjNDM7XHR2aG9zdF92c29ja19mbHVzaCh2c29jayk7XG4mIzQzO1x0dmhvc3RfZGV2X3N0b3AoXHUwMDI2dnNvY2stXHUwMDNlZGV2KTtcbiYjNDM7XHR2aG9zdF9kZXZfcmVzZXRfb3duZXIoXHUwMDI2dnNvY2stXHUwMDNlZGV2LCB1bWVtKTtcbiYjNDM7ZG9uZTpcbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2dnNvY2stXHUwMDNlZGV2Lm11dGV4KTtcbiYjNDM7XHRyZXR1cm4gZXJyO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBsb25nIHZob3N0X3Zzb2NrX2Rldl9pb2N0bChzdHJ1Y3QgZmlsZSAqZiwgdW5zaWduZWQgaW50IGlvY3RsLFxuIFx0XHRcdFx0ICB1bnNpZ25lZCBsb25nIGFyZylcbiB7XG5AQCAtOTI5LDYgJiM0Mzs5OTEsOCBAQCBzdGF0aWMgbG9uZyB2aG9zdF92c29ja19kZXZfaW9jdGwoc3RydWN0IGZpbGUgKmYsIHVuc2lnbmVkIGludCBpb2N0bCxcbiBcdFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4gXHRcdHZob3N0X3NldF9iYWNrZW5kX2ZlYXR1cmVzKFx1MDAyNnZzb2NrLVx1MDAzZWRldiwgZmVhdHVyZXMpO1xuIFx0XHRyZXR1cm4gMDtcbiYjNDM7XHRjYXNlIFZIT1NUX1JFU0VUX09XTkVSOlxuJiM0MztcdFx0cmV0dXJuIHZob3N0X3Zzb2NrX3Jlc2V0X293bmVyKHZzb2NrKTtcbiBcdGRlZmF1bHQ6XG4gXHRcdG11dGV4X2xvY2soXHUwMDI2dnNvY2stXHUwMDNlZGV2Lm11dGV4KTtcbiBcdFx0ciA9IHZob3N0X2Rldl9pb2N0bChcdTAwMjZ2c29jay1cdTAwM2VkZXYsIGlvY3RsLCBhcmdwKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAxNjoxNzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtWSE9TVF9WU09DSyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Zob3N0X3Zzb2NrX3Jlc2V0X293bmVyJiMzNDssCiAgICAmIzM0O3Zob3N0X3Zzb2NrX3N0YXJ0JiMzNDssCiAgICAmIzM0O3Zob3N0X3Zzb2NrX3N0b3AmIzM0OywKICAgICYjMzQ7dmhvc3RfdnNvY2tfZGV2X2lvY3RsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB2aG9zdC12c29jayBkcml2ZXIgdG8gaGFuZGxlIHRoZSBWSE9TVF9SRVNFVF9PV05FUiBpb2N0bCBleHBsaWNpdGx5LCBhZGRpbmcgYSBuZXcgdmhvc3RfdnNvY2tfcmVzZXRfb3duZXIgZnVuY3Rpb24gYW5kIG1vZGlmeWluZyB0aGUgcGFja2V0IHNlbmRpbmcgbG9naWMgdG8gaGFuZGxlIGRldmljZSBzdG9wL3Jlc2V0IGNvcnJlY3RseS4gVGhpcyBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIC9kZXYvdmhvc3QtdnNvY2sgaW9jdGxzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1ODVmNGYyOGQxMWRmZjQyMTA4Mzg0ZWE5MzQxYWE4ZGI1YTQzZDliCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdW4gMjUgMTY6MTc6NTMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Zob3N0L3Zzb2NrLmMgYi9kcml2ZXJzL3Zob3N0L3Zzb2NrLmMKaW5kZXggOWFhYWI2YmI4MDYxYzEuLmYwYTBhYTdkMzIwMDAxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Zob3N0L3Zzb2NrLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy92aG9zdC92c29jay5jCkBAIC02MSw2ICYjNDM7NjEsNyBAQCBzdHJ1Y3Qgdmhvc3RfdnNvY2sgewogCiAJdTMyIGd1ZXN0X2NpZDsKIAlib29sIHNlcXBhY2tldF9hbGxvdzsKJiM0MzsJYm9vbCBzdGFydGVkOwkJLyogc2V0IG9uIGZpcnN0IFNFVF9SVU5OSU5HKDEpOyBuZXZlciBjbGVhcmVkICovCiB9OwogCiBzdGF0aWMgdTMyIHZob3N0X3RyYW5zcG9ydF9nZXRfbG9jYWxfY2lkKHZvaWQpCkBAIC0zMDIsMTcgJiM0MzszMDMsMTIgQEAgdmhvc3RfdHJhbnNwb3J0X3NlbmRfcGt0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXQgKm5ldCkKIAkJcmV0dXJuIC1FTk9ERVY7CiAJfQogCi0JLyogRmFzdC1mYWlsIGlmIHRoZSBndWVzdCBoYXNuJiMzOTt0IGVuYWJsZWQgdGhlIFJYIHZxIHlldC4gUXVldWluZyB0aGUgcGFja2V0Ci0JICogYW5kIG1ha2luZyB0aGUgY2FsbGVyIHdhaXQgaXMgcG9pbnRsZXNzOiBldmVuIGlmIHRoZSBndWVzdCBtYW5hZ2VzIHRvIGluaXQKLQkgKiB3aXRoaW4gdGhlIHRpbWVvdXQsIGl0JiMzOTtsbCBpbW1lZGlhdGVseSByZXBseSB3aXRoIFJTVCwgYmVjYXVzZSB0aGVyZSYjMzk7cyBubwotCSAqIGxpc3RlbmVyIG9uIHRoZSBwb3J0IHlldC4KLQkgKgotCSAqIHZob3N0X3ZxX2dldF9iYWNrZW5kKCkgd2l0aG91dCB2cS0mZ3Q7bXV0ZXggaXMgYWNjZXB0YWJsZSBoZXJlOiBsb2NraW5nCi0JICogdGhlIG11dGV4IHdvdWxkIGJlIHRvbyBleHBlbnNpdmUgaW4gdGhpcyBob3QgcGF0aCwgYW5kIHdlIGFscmVhZHkgaGF2ZQotCSAqIGFsbCB0aGUgb3V0Y29tZXMgY292ZXJlZDogaWYgdGhlIGJhY2tlbmQgYmVjb21lcyBOVUxMIHJpZ2h0IGFmdGVyIHRoZSBjaGVjaywKLQkgKiB2aG9zdF90cmFuc3BvcnRfZG9fc2VuZF9wa3QoKSB3aWxsIGNoZWNrIGl0IHVuZGVyIHRoZSBtdXRleCBhbnl3YXkuCiYjNDM7CS8qIEZhc3QtZmFpbCB1bnRpbCB0aGUgZ3Vlc3QgZmlyc3QgZW5hYmxlcyB0aGUgZGV2aWNlIChTRVRfUlVOTklORygxKSkuCiYjNDM7CSAqIEJlZm9yZSB0aGF0IHRoZXJlIGlzIG5vIGxpc3RlbmVyLCBzbyBxdWV1aW5nIGlzIHBvaW50bGVzcy4gJiMzOTtzdGFydGVkJiMzOTsKJiM0MzsJICogaXMgbmV2ZXIgY2xlYXJlZCwgc28gb25jZSB3ZSYjMzk7cmUgdXAgd2Uga2VlcCBxdWV1aW5nIGFjcm9zcyBsYXRlcgomIzQzOwkgKiBzdG9wIC8gQ1BSLXBhdXNlIHdpbmRvd3MuCiAJICovCi0JaWYgKHVubGlrZWx5KCFkYXRhX3JhY2Uodmhvc3RfdnFfZ2V0X2JhY2tlbmQoJmFtcDt2c29jay0mZ3Q7dnFzW1ZTT0NLX1ZRX1JYXSkpKSkgewomIzQzOwlpZiAodW5saWtlbHkoIVJFQURfT05DRSh2c29jay0mZ3Q7c3RhcnRlZCkpKSB7CiAJCXJjdV9yZWFkX3VubG9jaygpOwogCQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIC1FSE9TVFVOUkVBQ0g7CkBAIC0zMjIsNyAmIzQzOzMxOCwxNCBAQCB2aG9zdF90cmFuc3BvcnRfc2VuZF9wa3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldCAqbmV0KQogCQlhdG9taWNfaW5jKCZhbXA7dnNvY2stJmd0O3F1ZXVlZF9yZXBsaWVzKTsKIAogCXZpcnRpb192c29ja19za2JfcXVldWVfdGFpbCgmYW1wO3Zzb2NrLSZndDtzZW5kX3BrdF9xdWV1ZSwgc2tiKTsKLQl2aG9zdF92cV93b3JrX3F1ZXVlKCZhbXA7dnNvY2stJmd0O3Zxc1tWU09DS19WUV9SWF0sICZhbXA7dnNvY2stJmd0O3NlbmRfcGt0X3dvcmspOwomIzQzOwomIzQzOwkvKiBTa2lwIHRoZSBraWNrIG9uY2UgdGhlIGJhY2tlbmQgaXMgZ29uZSAoc3RvcC9SRVNFVF9PV05FUik7IHRoZSBza2IKJiM0MzsJICogc3RheXMgcXVldWVkIGFuZCB2aG9zdF92c29ja19zdGFydCgpIGRyYWlucyBpdC4gUGFpcnMgd2l0aCB0aGUKJiM0MzsJICogc3luY2hyb25pemVfcmN1KCkgaW4gdmhvc3RfdnNvY2tfcmVzZXRfb3duZXIoKS4KJiM0MzsJICovCiYjNDM7CWlmIChkYXRhX3JhY2Uodmhvc3RfdnFfZ2V0X2JhY2tlbmQoJmFtcDt2c29jay0mZ3Q7dnFzW1ZTT0NLX1ZRX1JYXSkpKQomIzQzOwkJdmhvc3RfdnFfd29ya19xdWV1ZSgmYW1wO3Zzb2NrLSZndDt2cXNbVlNPQ0tfVlFfUlhdLAomIzQzOwkJCQkgICAgJmFtcDt2c29jay0mZ3Q7c2VuZF9wa3Rfd29yayk7CiAKIAlyY3VfcmVhZF91bmxvY2soKTsKIAlyZXR1cm4gbGVuOwpAQCAtMzUwLDcgJiM0MzszNTMsMTUgQEAgdmhvc3RfdHJhbnNwb3J0X2NhbmNlbF9wa3Qoc3RydWN0IHZzb2NrX3NvY2sgKnZzaykKIAkJaW50IG5ld19jbnQ7CiAKIAkJbmV3X2NudCA9IGF0b21pY19zdWJfcmV0dXJuKGNudCwgJmFtcDt2c29jay0mZ3Q7cXVldWVkX3JlcGxpZXMpOwotCQlpZiAobmV3X2NudCAmIzQzOyBjbnQgJmd0Oz0gdHhfdnEtJmd0O251bSAmYW1wOyZhbXA7IG5ld19jbnQgJmx0OyB0eF92cS0mZ3Q7bnVtKQomIzQzOwomIzQzOwkJLyogU2tpcCB0aGUga2ljayBvbmNlIHRoZSBiYWNrZW5kIGlzIGdvbmUgKHN0b3AvUkVTRVRfT1dORVIpOgomIzQzOwkJICogdmhvc3RfcG9sbF9xdWV1ZSgpIHdvdWxkIHRvdWNoIHRoZSB3b3JrZXIgd2hpY2ggaXMgYmVpbmcgZnJlZWQKJiM0MzsJCSAqIGJ5IHRlYXJkb3duLCBlLmcuIG9uIFJFU0VUX09XTkVSLiAgUGFpcnMgd2l0aCB0aGUKJiM0MzsJCSAqIHN5bmNocm9uaXplX3JjdSgpIGluIHZob3N0X3Zzb2NrX3Jlc2V0X293bmVyKCkuICBUaGUgVFggVlEgaXMKJiM0MzsJCSAqIHJlLWtpY2tlZCBieSB2aG9zdF92c29ja19zdGFydCgpLgomIzQzOwkJICovCiYjNDM7CQlpZiAoZGF0YV9yYWNlKHZob3N0X3ZxX2dldF9iYWNrZW5kKHR4X3ZxKSkgJmFtcDsmYW1wOwomIzQzOwkJICAgIG5ld19jbnQgJiM0MzsgY250ICZndDs9IHR4X3ZxLSZndDtudW0gJmFtcDsmYW1wOyBuZXdfY250ICZsdDsgdHhfdnEtJmd0O251bSkKIAkJCXZob3N0X3BvbGxfcXVldWUoJmFtcDt0eF92cS0mZ3Q7cG9sbCk7CiAJfQogCkBAIC02NDAsMTEgJiM0Mzs2NTEsMjMgQEAgc3RhdGljIGludCB2aG9zdF92c29ja19zdGFydChzdHJ1Y3Qgdmhvc3RfdnNvY2sgKnZzb2NrKQogCQltdXRleF91bmxvY2soJmFtcDt2cS0mZ3Q7bXV0ZXgpOwogCX0KIAomIzQzOwkvKiBTZXQgJiMzOTtzdGFydGVkJiMzOTsgZmxhZyBvbiB0aGUgZmlyc3Qgc3RhcnQ7IG5ldmVyIGNsZWFyZWQsIHNvIHNlbmRfcGt0CiYjNDM7CSAqIGtlZXBzIHF1ZXVpbmcgKGluc3RlYWQgb2YgZmFzdC1mYWlsaW5nKSBvbiBsYXRlciBzdG9wIC8gQ1BSIHBhdXNlcy4KJiM0MzsJICovCiYjNDM7CVdSSVRFX09OQ0UodnNvY2stJmd0O3N0YXJ0ZWQsIHRydWUpOwomIzQzOwogCS8qIFNvbWUgcGFja2V0cyBtYXkgaGF2ZSBiZWVuIHF1ZXVlZCBiZWZvcmUgdGhlIGRldmljZSB3YXMgc3RhcnRlZCwKIAkgKiBsZXQmIzM5O3Mga2ljayB0aGUgc2VuZCB3b3JrZXIgdG8gc2VuZCB0aGVtLgogCSAqLwogCXZob3N0X3ZxX3dvcmtfcXVldWUoJmFtcDt2c29jay0mZ3Q7dnFzW1ZTT0NLX1ZRX1JYXSwgJmFtcDt2c29jay0mZ3Q7c2VuZF9wa3Rfd29yayk7CiAKJiM0MzsJLyoKJiM0MzsJICogU29tZSBwYWNrZXRzIG1pZ2h0JiMzOTt2ZSBhbHNvIGJlZW4gcXVldWVkIGluIFRYIFZRLiAgVGhhdCBpcyB0aGUgY2FzZQomIzQzOwkgKiBkdXJpbmcgdGhlIGJyaWVmIGRldmljZSBwYXVzZSBjYXVzZWQgYnkgVkhPU1RfUkVTRVRfT1dORVIuICBSZS1zY2FuCiYjNDM7CSAqIHRoZSBUWCBWUSBoZXJlLCBtaXJyb3JpbmcgdGhlIFJYIHNlbmQtd29ya2VyIGtpY2sgYWJvdmUuCiYjNDM7CSAqLwomIzQzOwl2aG9zdF9wb2xsX3F1ZXVlKCZhbXA7dnNvY2stJmd0O3Zxc1tWU09DS19WUV9UWF0ucG9sbCk7CiYjNDM7CiAJbXV0ZXhfdW5sb2NrKCZhbXA7dnNvY2stJmd0O2Rldi5tdXRleCk7CiAJcmV0dXJuIDA7CiAKQEAgLTY2NCw5ICYjNDM7Njg3LDI0IEBAIHN0YXRpYyBpbnQgdmhvc3RfdnNvY2tfc3RhcnQoc3RydWN0IHZob3N0X3Zzb2NrICp2c29jaykKIAlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgaW50IHZob3N0X3Zzb2NrX3N0b3Aoc3RydWN0IHZob3N0X3Zzb2NrICp2c29jaywgYm9vbCBjaGVja19vd25lcikKJiM0MztzdGF0aWMgdm9pZCB2aG9zdF92c29ja19kcm9wX2JhY2tlbmRzKHN0cnVjdCB2aG9zdF92c29jayAqdnNvY2spCiB7CiYjNDM7CXN0cnVjdCB2aG9zdF92aXJ0cXVldWUgKnZxOwogCXNpemVfdCBpOwomIzQzOwomIzQzOwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZhbXA7dnNvY2stJmd0O2Rldi5tdXRleCk7CiYjNDM7CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBBUlJBWV9TSVpFKHZzb2NrLSZndDt2cXMpOyBpJiM0MzsmIzQzOykgewomIzQzOwkJdnEgPSAmYW1wO3Zzb2NrLSZndDt2cXNbaV07CiYjNDM7CiYjNDM7CQltdXRleF9sb2NrKCZhbXA7dnEtJmd0O211dGV4KTsKJiM0MzsJCXZob3N0X3ZxX3NldF9iYWNrZW5kKHZxLCBOVUxMKTsKJiM0MzsJCW11dGV4X3VubG9jaygmYW1wO3ZxLSZndDttdXRleCk7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGludCB2aG9zdF92c29ja19zdG9wKHN0cnVjdCB2aG9zdF92c29jayAqdnNvY2ssIGJvb2wgY2hlY2tfb3duZXIpCiYjNDM7ewogCWludCByZXQgPSAwOwogCiAJbXV0ZXhfbG9jaygmYW1wO3Zzb2NrLSZndDtkZXYubXV0ZXgpOwpAQCAtNjc3LDE0ICYjNDM7NzE1LDcgQEAgc3RhdGljIGludCB2aG9zdF92c29ja19zdG9wKHN0cnVjdCB2aG9zdF92c29jayAqdnNvY2ssIGJvb2wgY2hlY2tfb3duZXIpCiAJCQlnb3RvIGVycjsKIAl9CiAKLQlmb3IgKGkgPSAwOyBpICZsdDsgQVJSQVlfU0laRSh2c29jay0mZ3Q7dnFzKTsgaSYjNDM7JiM0MzspIHsKLQkJc3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnEgPSAmYW1wO3Zzb2NrLSZndDt2cXNbaV07Ci0KLQkJbXV0ZXhfbG9jaygmYW1wO3ZxLSZndDttdXRleCk7Ci0JCXZob3N0X3ZxX3NldF9iYWNrZW5kKHZxLCBOVUxMKTsKLQkJbXV0ZXhfdW5sb2NrKCZhbXA7dnEtJmd0O211dGV4KTsKLQl9Ci0KJiM0MzsJdmhvc3RfdnNvY2tfZHJvcF9iYWNrZW5kcyh2c29jayk7CiBlcnI6CiAJbXV0ZXhfdW5sb2NrKCZhbXA7dnNvY2stJmd0O2Rldi5tdXRleCk7CiAJcmV0dXJuIHJldDsKQEAgLTcyMCw2ICYjNDM7NzUxLDcgQEAgc3RhdGljIGludCB2aG9zdF92c29ja19kZXZfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKIAogCXZzb2NrLSZndDtndWVzdF9jaWQgPSAwOyAvKiBubyBDSUQgYXNzaWduZWQgeWV0ICovCiAJdnNvY2stJmd0O3NlcXBhY2tldF9hbGxvdyA9IGZhbHNlOwomIzQzOwl2c29jay0mZ3Q7c3RhcnRlZCA9IGZhbHNlOwogCiAJYXRvbWljX3NldCgmYW1wO3Zzb2NrLSZndDtxdWV1ZWRfcmVwbGllcywgMCk7CiAKQEAgLTg4Niw2ICYjNDM7OTE4LDM2IEBAIHN0YXRpYyBpbnQgdmhvc3RfdnNvY2tfc2V0X2ZlYXR1cmVzKHN0cnVjdCB2aG9zdF92c29jayAqdnNvY2ssIHU2NCBmZWF0dXJlcykKIAlyZXR1cm4gLUVGQVVMVDsKIH0KIAomIzQzO3N0YXRpYyBpbnQgdmhvc3RfdnNvY2tfcmVzZXRfb3duZXIoc3RydWN0IHZob3N0X3Zzb2NrICp2c29jaykKJiM0Mzt7CiYjNDM7CXN0cnVjdCB2aG9zdF9pb3RsYiAqdW1lbTsKJiM0MzsJbG9uZyBlcnI7CiYjNDM7CiYjNDM7CW11dGV4X2xvY2soJmFtcDt2c29jay0mZ3Q7ZGV2Lm11dGV4KTsKJiM0MzsJZXJyID0gdmhvc3RfZGV2X2NoZWNrX293bmVyKCZhbXA7dnNvY2stJmd0O2Rldik7CiYjNDM7CWlmIChlcnIpCiYjNDM7CQlnb3RvIGRvbmU7CiYjNDM7CXVtZW0gPSB2aG9zdF9kZXZfcmVzZXRfb3duZXJfcHJlcGFyZSgpOwomIzQzOwlpZiAoIXVtZW0pIHsKJiM0MzsJCWVyciA9IC1FTk9NRU07CiYjNDM7CQlnb3RvIGRvbmU7CiYjNDM7CX0KJiM0MzsJdmhvc3RfdnNvY2tfZHJvcF9iYWNrZW5kcyh2c29jayk7CiYjNDM7CiYjNDM7CS8qIExldCBpbi1mbGlnaHQgc2VuZF9wa3QoKSBjYWxsZXJzIHN0b3AgdG91Y2hpbmcgdGhlIHdvcmtlciBiZWZvcmUgdGhlCiYjNDM7CSAqIGZsdXNoICYjNDM7IGZyZWUgYmVsb3cuIFBhaXJzIHdpdGggdGhlIGJhY2tlbmQgY2hlY2sgaW4KJiM0MzsJICogdmhvc3RfdHJhbnNwb3J0X3NlbmRfcGt0KCkuCiYjNDM7CSAqLwomIzQzOwlzeW5jaHJvbml6ZV9yY3UoKTsKJiM0MzsKJiM0MzsJdmhvc3RfdnNvY2tfZmx1c2godnNvY2spOwomIzQzOwl2aG9zdF9kZXZfc3RvcCgmYW1wO3Zzb2NrLSZndDtkZXYpOwomIzQzOwl2aG9zdF9kZXZfcmVzZXRfb3duZXIoJmFtcDt2c29jay0mZ3Q7ZGV2LCB1bWVtKTsKJiM0Mztkb25lOgomIzQzOwltdXRleF91bmxvY2soJmFtcDt2c29jay0mZ3Q7ZGV2Lm11dGV4KTsKJiM0MzsJcmV0dXJuIGVycjsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgbG9uZyB2aG9zdF92c29ja19kZXZfaW9jdGwoc3RydWN0IGZpbGUgKmYsIHVuc2lnbmVkIGludCBpb2N0bCwKIAkJCQkgIHVuc2lnbmVkIGxvbmcgYXJnKQogewpAQCAtOTI5LDYgJiM0Mzs5OTEsOCBAQCBzdGF0aWMgbG9uZyB2aG9zdF92c29ja19kZXZfaW9jdGwoc3RydWN0IGZpbGUgKmYsIHVuc2lnbmVkIGludCBpb2N0bCwKIAkJCXJldHVybiAtRU9QTk9UU1VQUDsKIAkJdmhvc3Rfc2V0X2JhY2tlbmRfZmVhdHVyZXMoJmFtcDt2c29jay0mZ3Q7ZGV2LCBmZWF0dXJlcyk7CiAJCXJldHVybiAwOwomIzQzOwljYXNlIFZIT1NUX1JFU0VUX09XTkVSOgomIzQzOwkJcmV0dXJuIHZob3N0X3Zzb2NrX3Jlc2V0X293bmVyKHZzb2NrKTsKIAlkZWZhdWx0OgogCQltdXRleF9sb2NrKCZhbXA7dnNvY2stJmd0O2Rldi5tdXRleCk7CiAJCXIgPSB2aG9zdF9kZXZfaW9jdGwoJmFtcDt2c29jay0mZ3Q7ZGV2LCBpb2N0bCwgYXJncCk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDE2OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxMzQKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAyMDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKkFuYWx5emluZyB0aGUgVmhvc3QtVlNPQ0sgUGF0Y2ggYW5kIFJlYWNoYWJpbGl0eSoqCgpSaWdodCwgc28gd2UmIzM5O3ZlIGdvdCBhIHBhdGNoIHRoYXQmIzM5O3MgdG91Y2hlZCBgZHJpdmVycy92aG9zdC92c29jay5jYC4gVGhlIGNoYW5nZXMgaW52b2x2ZSBhIG5ldyBgc3RhcnRlZGAgZmxhZyB3aXRoaW4gdGhlIGB2aG9zdF92c29ja2Agc3RydWN0dXJlLCBhbmQgaXQgbG9va3MgbGlrZSBgdmhvc3RfdHJhbnNwb3J0X3NlbmRfcGt0YCBhbmQgYHZob3N0X3RyYW5zcG9ydF9jYW5jZWxfcGt0YCBhcmUgZ2V0dGluZyB0d2Vha2VkLiBJbnRlcmVzdGluZy4gQWxzbywgYSBuZXcgZnVuY3Rpb24sIGB2aG9zdF92c29ja19yZXNldF9vd25lcmAsIGhhcyBiZWVuIGFkZGVkIGZvciBoYW5kbGluZyB0aGUgYFZIT1NUX1JFU0VUX09XTkVSYCBpb2N0bC4KCk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBpcyB0aGlzIGV2ZW4gKnJlYWNoYWJsZSo/IElzIHRoaXMgY29kZSBwYXRoIGFjdGl2ZT8gV2VsbCwgYGRyaXZlcnMvdmhvc3QvdnNvY2suY2AgaXMgdGhlIHZob3N0LXZzb2NrIGRyaXZlciwgYW5kIHRoYXQgc2hvdWxkIGJlIHByZXR0eSBjbGVhci4gSXQmIzM5O3MgdGhlIHByb3ZpZGVyIG9mIHRoZSBgL2Rldi92aG9zdC12c29ja2AgZGV2aWNlIG5vZGUuIEFuZCB0aGUgYFZIT1NUX1JFU0VUX09XTkVSYCBpb2N0bCBpcyBoYW5kbGVkIHdpdGhpbiB0aGF0IGRyaXZlci4gVGhhdCBpb2N0bCBpbXBsZW1lbnRhdGlvbiBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZSwgYW5kIHRodXMgZnVuY3Rpb25hbC4gTm8gY29uY2VybnMgdGhlcmUuCgpOb3csIGxldCYjMzk7cyB0aGluayBhYm91dCB0aGUgY29uZmlndXJhdGlvbi4gYGRyaXZlcnMvdmhvc3QvdnNvY2suY2AgaXMgY29tcGlsZWQgYmFzZWQgb24gdGhlIGBDT05GSUdfVkhPU1RfVlNPQ0tgIGNvbmZpZyBvcHRpb24uIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgdGhpcyBpcyBjb3JyZWN0bHkgZW5hYmxlZCwgYnV0IGFzc3VtaW5nIGl0IGlzLCB0aGVuIHRoZSBjb2RlIHBhdGggaXMgY2VydGFpbmx5IHZhbGlkLiBJJiMzOTtsbCBsb29rIGludG8gdmVyaWZ5aW5nIHRoZSBjb25maWcgc2hvcnRseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAxNjoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtWSE9TVF9WU09DSyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmhvc3QvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmhvc3QvS2NvbmZpZz00Nj1jb25maWcgVkhPU1RfU0NTSVxuLS1cbmRyaXZlcnMvdmhvc3QvS2NvbmZpZy01NS1cbmRyaXZlcnMvdmhvc3QvS2NvbmZpZzo1Njpjb25maWcgVkhPU1RfVlNPQ0tcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZy01Ny1cdHRyaXN0YXRlIFwmIzM0O3Zob3N0IHZpcnRpby12c29jayBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL3Zob3N0L01ha2VmaWxlPTY9dmhvc3Rfc2NzaS15IDo9IHNjc2kub1xuZHJpdmVycy92aG9zdC9NYWtlZmlsZS03LVxuZHJpdmVycy92aG9zdC9NYWtlZmlsZTo4Om9iai0kKENPTkZJR19WSE9TVF9WU09DSykgJiM0Mzs9IHZob3N0X3Zzb2NrLm9cbmRyaXZlcnMvdmhvc3QvTWFrZWZpbGUtOS12aG9zdF92c29jay15IDo9IHZzb2NrLm9cbi0tXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmM9ODU4PXN0YXRpYyB2b2lkIF9fdmhvc3RfdnFfYXR0YWNoX3dvcmtlcihzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cSxcbi0tXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtOTA3LVx0XHQvKlxuZHJpdmVycy92aG9zdC92aG9zdC5jOjkwODpcdFx0ICogdnNvY2sgY2FuIHF1ZXVlIGFueXRpbWUgYWZ0ZXIgVkhPU1RfVlNPQ0tfU0VUX0dVRVNUX0NJRC5cbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYy05MDktXHRcdCAqIFdhcm4gaWYgaXQgYWRkcyBzdXBwb3J0IGZvciBtdWx0aXBsZSB3b3JrZXJzIGJ1dCBmb3JnZXRzIHRvXG4tLVxuZHJpdmVycy92aG9zdC92c29jay5jLTIxLVxuZHJpdmVycy92aG9zdC92c29jay5jOjIyOiNkZWZpbmUgVkhPU1RfVlNPQ0tfREVGQVVMVF9IT1NUX0NJRFx0MlxuZHJpdmVycy92aG9zdC92c29jay5jLTIzLS8qIE1heCBudW1iZXIgb2YgYnl0ZXMgdHJhbnNmZXJyZWQgYmVmb3JlIHJlcXVldWVpbmcgdGhlIGpvYi5cbmRyaXZlcnMvdmhvc3QvdnNvY2suYy0yNC0gKiBVc2luZyB0aGlzIGxpbWl0IHByZXZlbnRzIG9uZSB2aXJ0cXVldWUgZnJvbSBzdGFydmluZyBvdGhlcnMuICovXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmM6MjU6I2RlZmluZSBWSE9TVF9WU09DS19XRUlHSFQgMHg4MDAwMFxuZHJpdmVycy92aG9zdC92c29jay5jLTI2LS8qIE1heCBudW1iZXIgb2YgcGFja2V0cyB0cmFuc2ZlcnJlZCBiZWZvcmUgcmVxdWV1ZWluZyB0aGUgam9iLlxuLS1cbmRyaXZlcnMvdmhvc3QvdnNvY2suYy0yOS0gKi9cbmRyaXZlcnMvdmhvc3QvdnNvY2suYzozMDojZGVmaW5lIFZIT1NUX1ZTT0NLX1BLVF9XRUlHSFQgMjU2XG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmMtMzEtXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmM9MzI9c3RhdGljIGNvbnN0IGludCB2aG9zdF92c29ja19iaXRzW10gPSB7XG4tLVxuZHJpdmVycy92aG9zdC92c29jay5jLTM3LVxuZHJpdmVycy92aG9zdC92c29jay5jOjM4OiNkZWZpbmUgVkhPU1RfVlNPQ0tfRkVBVFVSRVMgVkhPU1RfRkVBVFVSRVNfVTY0KHZob3N0X3Zzb2NrX2JpdHMsIDApXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmMtMzktXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmM9NDA9ZW51bSB7XG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmM6NDE6XHRWSE9TVF9WU09DS19CQUNLRU5EX0ZFQVRVUkVTID0gKDFVTEwgXHUwMDNjXHUwMDNjIFZIT1NUX0JBQ0tFTkRfRl9JT1RMQl9NU0dfVjIpXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmMtNDItfTtcbi0tXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmM9Njc9c3RhdGljIHUzMiB2aG9zdF90cmFuc3BvcnRfZ2V0X2xvY2FsX2NpZCh2b2lkKVxuZHJpdmVycy92aG9zdC92c29jay5jLTY4LXtcbmRyaXZlcnMvdmhvc3QvdnNvY2suYzo2OTpcdHJldHVybiBWSE9TVF9WU09DS19ERUZBVUxUX0hPU1RfQ0lEO1xuZHJpdmVycy92aG9zdC92c29jay5jLTcwLX1cbi0tXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmM9NzI5PXN0YXRpYyBpbnQgdmhvc3RfdnNvY2tfZGV2X29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpXG4tLVxuZHJpdmVycy92aG9zdC92c29jay5jLTc2My1cdHZob3N0X2Rldl9pbml0KFx1MDAyNnZzb2NrLVx1MDAzZWRldiwgdnFzLCBBUlJBWV9TSVpFKHZzb2NrLVx1MDAzZXZxcyksXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmM6NzY0Olx0XHQgICAgICAgVUlPX01BWElPViwgVkhPU1RfVlNPQ0tfUEtUX1dFSUdIVCxcbmRyaXZlcnMvdmhvc3QvdnNvY2suYzo3NjU6XHRcdCAgICAgICBWSE9TVF9WU09DS19XRUlHSFQsIHRydWUsIE5VTEwpO1xuZHJpdmVycy92aG9zdC92c29jay5jLTc2Ni1cbi0tXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmM9ODg2PXN0YXRpYyBpbnQgdmhvc3RfdnNvY2tfc2V0X2ZlYXR1cmVzKHN0cnVjdCB2aG9zdF92c29jayAqdnNvY2ssIHU2NCBmZWF0dXJlcylcbi0tXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmMtODkwLVxuZHJpdmVycy92aG9zdC92c29jay5jOjg5MTpcdGlmIChmZWF0dXJlcyBcdTAwMjYgflZIT1NUX1ZTT0NLX0ZFQVRVUkVTKVxuZHJpdmVycy92aG9zdC92c29jay5jLTg5Mi1cdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuLS1cbmRyaXZlcnMvdmhvc3QvdnNvY2suYz05NTE9c3RhdGljIGxvbmcgdmhvc3RfdnNvY2tfZGV2X2lvY3RsKHN0cnVjdCBmaWxlICpmLCB1bnNpZ25lZCBpbnQgaW9jdGwsXG4tLVxuZHJpdmVycy92aG9zdC92c29jay5jLTk2MS1cdHN3aXRjaCAoaW9jdGwpIHtcbmRyaXZlcnMvdmhvc3QvdnNvY2suYzo5NjI6XHRjYXNlIFZIT1NUX1ZTT0NLX1NFVF9HVUVTVF9DSUQ6XG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmMtOTYzLVx0XHRpZiAoY29weV9mcm9tX3VzZXIoXHUwMDI2Z3Vlc3RfY2lkLCBhcmdwLCBzaXplb2YoZ3Vlc3RfY2lkKSkpXG4tLVxuZHJpdmVycy92aG9zdC92c29jay5jLTk2NS1cdFx0cmV0dXJuIHZob3N0X3Zzb2NrX3NldF9jaWQodnNvY2ssIGd1ZXN0X2NpZCk7XG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmM6OTY2Olx0Y2FzZSBWSE9TVF9WU09DS19TRVRfUlVOTklORzpcbmRyaXZlcnMvdmhvc3QvdnNvY2suYy05NjctXHRcdGlmIChjb3B5X2Zyb21fdXNlcihcdTAwMjZzdGFydCwgYXJncCwgc2l6ZW9mKHN0YXJ0KSkpXG4tLVxuZHJpdmVycy92aG9zdC92c29jay5jLTk3My1cdGNhc2UgVkhPU1RfR0VUX0ZFQVRVUkVTOlxuZHJpdmVycy92aG9zdC92c29jay5jOjk3NDpcdFx0ZmVhdHVyZXMgPSBWSE9TVF9WU09DS19GRUFUVVJFUztcbmRyaXZlcnMvdmhvc3QvdnNvY2suYy05NzUtXHRcdGlmIChjb3B5X3RvX3VzZXIoYXJncCwgXHUwMDI2ZmVhdHVyZXMsIHNpemVvZihmZWF0dXJlcykpKVxuLS1cbmRyaXZlcnMvdmhvc3QvdnNvY2suYy05ODItXHRjYXNlIFZIT1NUX0dFVF9CQUNLRU5EX0ZFQVRVUkVTOlxuZHJpdmVycy92aG9zdC92c29jay5jOjk4MzpcdFx0ZmVhdHVyZXMgPSBWSE9TVF9WU09DS19CQUNLRU5EX0ZFQVRVUkVTO1xuZHJpdmVycy92aG9zdC92c29jay5jLTk4NC1cdFx0aWYgKGNvcHlfdG9fdXNlcihhcmdwLCBcdTAwMjZmZWF0dXJlcywgc2l6ZW9mKGZlYXR1cmVzKSkpXG4tLVxuZHJpdmVycy92aG9zdC92c29jay5jLTk4OS1cdFx0XHRyZXR1cm4gLUVGQVVMVDtcbmRyaXZlcnMvdmhvc3QvdnNvY2suYzo5OTA6XHRcdGlmIChmZWF0dXJlcyBcdTAwMjYgflZIT1NUX1ZTT0NLX0JBQ0tFTkRfRkVBVFVSRVMpXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmMtOTkxLVx0XHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbi0tXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmM9MTA0OD1zdGF0aWMgc3RydWN0IG1pc2NkZXZpY2Ugdmhvc3RfdnNvY2tfbWlzYyA9IHtcbmRyaXZlcnMvdmhvc3QvdnNvY2suYzoxMDQ5Olx0Lm1pbm9yID0gVkhPU1RfVlNPQ0tfTUlOT1IsXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmMtMTA1MC1cdC5uYW1lID0gXCYjMzQ7dmhvc3QtdnNvY2tcJiMzNDssXG4tLVxuZHJpdmVycy92aG9zdC92c29jay5jPTEwODI9TU9EVUxFX0RFU0NSSVBUSU9OKFwmIzM0O3Zob3N0IHRyYW5zcG9ydCBmb3IgdnNvY2sgXCYjMzQ7KTtcbmRyaXZlcnMvdmhvc3QvdnNvY2suYzoxMDgzOk1PRFVMRV9BTElBU19NSVNDREVWKFZIT1NUX1ZTT0NLX01JTk9SKTtcbmRyaXZlcnMvdmhvc3QvdnNvY2suYy0xMDg0LU1PRFVMRV9BTElBUyhcJiMzNDtkZXZuYW1lOnZob3N0LXZzb2NrXCYjMzQ7KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAxNjoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MTg3CgkJCQkJCQlvdXRwdXQ6IDE1MQoJCQkJCQkJdGhvdWdodHM6IDExMDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgdGhlIHZob3N0LXZzb2NrIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYWltZWQgc3F1YXJlbHkgYXQgdGhlIGBkcml2ZXJzL3Zob3N0L3Zzb2NrLmNgIGZpbGUuIE15IGluaXRpYWwgaW1wcmVzc2lvbiBpcyB0aGF0IGl0JiMzOTtzIGZ1bmN0aW9uYWwgYW5kIGludHJvZHVjZXMgYSBmZXcgc2lnbmlmaWNhbnQgY2hhbmdlcy4gRmlyc3QsIGEgYHN0YXJ0ZWRgIGZsYWcgaXMgYWRkZWQgdG8gdGhlIGB2aG9zdF92c29ja2Agc3RydWN0LiBUaGlzIGlzIHNtYXJ0OyB0aGV5JiMzOTtyZSBjaGFuZ2luZyB0aGUgbG9naWMgaW4gYHZob3N0X3RyYW5zcG9ydF9zZW5kX3BrdGAgdG8gcmVseSBvbiB0aGlzIGBzdGFydGVkYCBmbGFnIGluc3RlYWQgb2YganVzdCBjaGVja2luZyBmb3IgYSBub24tTlVMTCBiYWNrZW5kLiBUaGlzIGlzIGNsZWFuZXIgYW5kIG1ha2VzIHRoZSBjb250cm9sIGZsb3cgbW9yZSBleHBsaWNpdC4gVGhlIGB2aG9zdF92c29ja19zdGFydGAgZnVuY3Rpb24gbm93IHNldHMgdGhpcyBgc3RhcnRlZGAgZmxhZywgd2hpY2ggbWFrZXMgc2Vuc2UuCgpUaGUgbW9zdCBpbnRlcmVzdGluZyBwYXJ0IGlzIHRoZSBhZGRpdGlvbiBvZiBgdmhvc3RfdnNvY2tfcmVzZXRfb3duZXJgLiBUaGlzIGlzIGNsZWFybHkgaW4gcmVzcG9uc2UgdG8gaGFuZGxpbmcgdGhlIGBWSE9TVF9SRVNFVF9PV05FUmAgaW9jdGwuIFByZXZpb3VzbHksIHRoaXMgd2FzIGhhbmRsZWQgYnkgYSBnZW5lcmljIGhhbmRsZXIsIGJ1dCBub3csIGl0IGhhcyBkZWRpY2F0ZWQgbG9naWMgZm9yIHZzb2NrLiBUaGUgcGF0Y2ggYWxzbyBpbnRyb2R1Y2VzIGB2aG9zdF92c29ja19kcm9wX2JhY2tlbmRzYCwgY2FsbGVkIGZyb20gYm90aCBgdmhvc3RfdnNvY2tfc3RvcGAgYW5kIGB2aG9zdF92c29ja19yZXNldF9vd25lcmAuIFRoaXMgc3VnZ2VzdHMgYSBjYXJlZnVsIGNsZWFudXAgcHJvY2VkdXJlIHdoZW4gdGhlIGRldmljZSBpcyBzdG9wcGVkIG9yIHJlc2V0LgoKVGhlIHBhdGNoIGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlOyB0aGUgdmhvc3QtdnNvY2sgZHJpdmVyIGlzIGV4cG9zZWQgdmlhIGAvZGV2L3Zob3N0LXZzb2NrYCBpb2N0bHMuIEkgc2VlIHRoYXQgYHZob3N0X3Zzb2NrX2Rldl9pb2N0bGAgaGFuZGxlcyBgVkhPU1RfUkVTRVRfT1dORVJgIG5vdywgaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCBpb2N0bCBoYW5kbGVyLiBJJiMzOTttIGZvY3VzaW5nIG9uIHRoZSBleHBsaWNpdCBoYW5kbGluZyBvZiBgVkhPU1RfUkVTRVRfT1dORVJgLgoKSSYjMzk7dmUgY2hlY2tlZCB0aGUgYEtjb25maWdgIGZpbGUsIGFuZCBgQ09ORklHX1ZIT1NUX1ZTT0NLYCBpcyB0aGUgcmVsZXZhbnQgY29uZmlnIG9wdGlvbi4KCkkgbmVlZCB0byBkZWNpZGUgd2hpY2ggZnVuY3Rpb25zIGFyZSB0aGUga2V5IG9uZXMgdG8gZm9jdXMgb24gZm9yIGZ1enppbmcuIEkgaW5pdGlhbGx5IGxvb2tlZCBhdCBgdmhvc3RfdnNvY2tfcmVzZXRfb3duZXJgLCBgdmhvc3RfdnNvY2tfZGV2X2lvY3RsYCwgYHZob3N0X3Zzb2NrX3N0YXJ0YCwgYHZob3N0X3Zzb2NrX3N0b3BgLCBgdmhvc3RfdHJhbnNwb3J0X3NlbmRfcGt0YCwgYW5kIGB2aG9zdF90cmFuc3BvcnRfY2FuY2VsX3BrdGAsIGJ1dCBgdmhvc3RfdHJhbnNwb3J0X3NlbmRfcGt0YCBhbmQgYHZob3N0X3RyYW5zcG9ydF9jYW5jZWxfcGt0YCBhcmUgaG90LXBhdGgsIHNvIEkgd2lsbCBhdm9pZCB0aGVtLiBTbywgdGhlIGtleSBmdW5jdGlvbnMgYXJlIGB2aG9zdF92c29ja19yZXNldF9vd25lcmAsIGB2aG9zdF92c29ja19kZXZfaW9jdGxgLCBgdmhvc3RfdnNvY2tfc3RhcnRgLCBhbmQgYHZob3N0X3Zzb2NrX3N0b3BgLgoKTG9va2luZyBhdCB0aGUgaW1wbGVtZW50YXRpb24gb2YgYHZob3N0X3Zzb2NrX3Jlc2V0X293bmVyYCwgaXQmIzM5O3MgY2xlYXIgdGhpcyB3YXJyYW50cyBmdXp6aW5nLiBJdCBoYW5kbGVzIG93bmVyIHJlc2V0LCBpbmNsdWRpbmcgc3luY2hyb25pemF0aW9uLCBiYWNrZW5kIGRyb3BwaW5nLCBmbHVzaGluZywgZGV2aWNlIHN0b3BwaW5nLCBhbmQgcmVzZXQuIFRoZSBjb2RlIGxvb2tzIGNvcnJlY3QsIGJ1dCBpdCYjMzk7cyBjb21wbGV4IGVub3VnaCB0byBiZW5lZml0IGZyb20gZnV6emluZy4KCkkmIzM5O3ZlIGNvbmZpcm1lZCB0aGF0IGB2aG9zdF92c29ja19kZXZfaW9jdGxgIGlzIHRoZSBlbnRyeSBwb2ludCBmb3IgdGhlIGAvZGV2L3Zob3N0LXZzb2NrYCBpb2N0bCBoYW5kbGluZywgd2hpY2ggY29uZmlybXMgYFZIT1NUX1JFU0VUX09XTkVSYCBpcyByZWFjaGFibGUuCgpJJiMzOTt2ZSBhbHNvIGNoZWNrZWQgdGhlIGNvbmZpZyBkZXBlbmRlbmNpZXMsIGFuZCBgVkhPU1RfVlNPQ0tgIGRlcGVuZHMgb24gYFZIT1NUYCBhbmQgYFZTT0NLRVRTYCwgYnV0IGxpc3RpbmcgYFZIT1NUX1ZTT0NLYCBpcyBzdWZmaWNpZW50LgoKTXkgY29uY2x1c2lvbiBpcyB0aGF0IHRoaXMgcGF0Y2ggaXMgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nLiBJJiMzOTtsbCBmb2N1cyBvbiB0aGUgZnVuY3Rpb25zOiBgdmhvc3RfdnNvY2tfcmVzZXRfb3duZXJgLCBgdmhvc3RfdnNvY2tfc3RhcnRgLCBgdmhvc3RfdnNvY2tfc3RvcGAsIGFuZCBhbHNvIGluY2x1ZGUgYHZob3N0X3Zzb2NrX2Rldl9pb2N0bGAgYXMgYW4gZW50cnkgcG9pbnQuIFRoZSBwcmltYXJ5IGNvbmZpZyBpcyBgVkhPU1RfVlNPQ0tgLiBUaGUgbWFpbiByZWFzb24gdG8gZnV6eiBpcyB0aGF0IHRoZSBwYXRjaCBleHBsaWNpdGx5IGhhbmRsZXMgdGhlIGBWSE9TVF9SRVNFVF9PV05FUmAgaW9jdGwsIGFkZGluZyBhIG5ldyBgdmhvc3RfdnNvY2tfcmVzZXRfb3duZXJgIGZ1bmN0aW9uLCBhbmQgbW9kaWZpZXMgdGhlIHBhY2tldC1zZW5kaW5nIGxvZ2ljLiBUaGVzZSBjaGFuZ2VzIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdGhyb3VnaCBgL2Rldi92aG9zdC12c29ja2AgaW9jdGxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDE2OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtWSE9TVF9WU09DSyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Zob3N0X3Zzb2NrX3Jlc2V0X293bmVyJiMzNDssCiAgICAmIzM0O3Zob3N0X3Zzb2NrX3N0YXJ0JiMzNDssCiAgICAmIzM0O3Zob3N0X3Zzb2NrX3N0b3AmIzM0OywKICAgICYjMzQ7dmhvc3RfdnNvY2tfZGV2X2lvY3RsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB2aG9zdC12c29jayBkcml2ZXIgdG8gaGFuZGxlIHRoZSBWSE9TVF9SRVNFVF9PV05FUiBpb2N0bCBleHBsaWNpdGx5LCBhZGRpbmcgYSBuZXcgdmhvc3RfdnNvY2tfcmVzZXRfb3duZXIgZnVuY3Rpb24gYW5kIG1vZGlmeWluZyB0aGUgcGFja2V0IHNlbmRpbmcgbG9naWMgdG8gaGFuZGxlIGRldmljZSBzdG9wL3Jlc2V0IGNvcnJlY3RseS4gVGhpcyBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIC9kZXYvdmhvc3QtdnNvY2sgaW9jdGxzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtWSE9TVF9WU09DSyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Zob3N0X3Zzb2NrX3Jlc2V0X293bmVyJiMzNDssCiAgICAmIzM0O3Zob3N0X3Zzb2NrX3N0YXJ0JiMzNDssCiAgICAmIzM0O3Zob3N0X3Zzb2NrX3N0b3AmIzM0OywKICAgICYjMzQ7dmhvc3RfdnNvY2tfZGV2X2lvY3RsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB2aG9zdC12c29jayBkcml2ZXIgdG8gaGFuZGxlIHRoZSBWSE9TVF9SRVNFVF9PV05FUiBpb2N0bCBleHBsaWNpdGx5LCBhZGRpbmcgYSBuZXcgdmhvc3RfdnNvY2tfcmVzZXRfb3duZXIgZnVuY3Rpb24gYW5kIG1vZGlmeWluZyB0aGUgcGFja2V0IHNlbmRpbmcgbG9naWMgdG8gaGFuZGxlIGRldmljZSBzdG9wL3Jlc2V0IGNvcnJlY3RseS4gVGhpcyBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIC9kZXYvdmhvc3QtdnNvY2sgaW9jdGxzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMjVUMTY6MTc6NTQuODA0MTI2MjI3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDE4OTY2NzI0NjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVkhPU1RfVlNPQ0tcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2aG9zdF92c29ja19yZXNldF9vd25lclwiLFxuICAgIFwidmhvc3RfdnNvY2tfc3RhcnRcIixcbiAgICBcInZob3N0X3Zzb2NrX3N0b3BcIixcbiAgICBcInZob3N0X3Zzb2NrX2Rldl9pb2N0bFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB2aG9zdC12c29jayBkcml2ZXIgdG8gaGFuZGxlIHRoZSBWSE9TVF9SRVNFVF9PV05FUiBpb2N0bCBleHBsaWNpdGx5LCBhZGRpbmcgYSBuZXcgdmhvc3RfdnNvY2tfcmVzZXRfb3duZXIgZnVuY3Rpb24gYW5kIG1vZGlmeWluZyB0aGUgcGFja2V0IHNlbmRpbmcgbG9naWMgdG8gaGFuZGxlIGRldmljZSBzdG9wL3Jlc2V0IGNvcnJlY3RseS4gVGhpcyBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIC9kZXYvdmhvc3QtdnNvY2sgaW9jdGxzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQxNjoxNzo1NC44MDQxMzI5MjdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3MDk1Nzk1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDU4NWY0ZjI4ZDExZGZmNDIxMDgzODRlYTkzNDFhYThkYjVhNDNkOWJcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBKdW4gMjUgMTY6MTc6NTMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy92aG9zdC92c29jay5jIGIvZHJpdmVycy92aG9zdC92c29jay5jXFxuaW5kZXggOWFhYWI2YmI4MDYxYzEuLmYwYTBhYTdkMzIwMDAxIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvdmhvc3QvdnNvY2suY1xcbisrKyBiL2RyaXZlcnMvdmhvc3QvdnNvY2suY1xcbkBAIC02MSw2ICs2MSw3IEBAIHN0cnVjdCB2aG9zdF92c29jayB7XFxuIFxcbiBcXHR1MzIgZ3Vlc3RfY2lkO1xcbiBcXHRib29sIHNlcXBhY2tldF9hbGxvdztcXG4rXFx0Ym9vbCBzdGFydGVkO1xcdFxcdC8qIHNldCBvbiBmaXJzdCBTRVRfUlVOTklORygxKTsgbmV2ZXIgY2xlYXJlZCAqL1xcbiB9O1xcbiBcXG4gc3RhdGljIHUzMiB2aG9zdF90cmFuc3BvcnRfZ2V0X2xvY2FsX2NpZCh2b2lkKVxcbkBAIC0zMDIsMTcgKzMwMywxMiBAQCB2aG9zdF90cmFuc3BvcnRfc2VuZF9wa3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldCAqbmV0KVxcbiBcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4gXFx0fVxcbiBcXG4tXFx0LyogRmFzdC1mYWlsIGlmIHRoZSBndWVzdCBoYXNuJ3QgZW5hYmxlZCB0aGUgUlggdnEgeWV0LiBRdWV1aW5nIHRoZSBwYWNrZXRcXG4tXFx0ICogYW5kIG1ha2luZyB0aGUgY2FsbGVyIHdhaXQgaXMgcG9pbnRsZXNzOiBldmVuIGlmIHRoZSBndWVzdCBtYW5hZ2VzIHRvIGluaXRcXG4tXFx0ICogd2l0aGluIHRoZSB0aW1lb3V0LCBpdCdsbCBpbW1lZGlhdGVseSByZXBseSB3aXRoIFJTVCwgYmVjYXVzZSB0aGVyZSdzIG5vXFxuLVxcdCAqIGxpc3RlbmVyIG9uIHRoZSBwb3J0IHlldC5cXG4tXFx0ICpcXG4tXFx0ICogdmhvc3RfdnFfZ2V0X2JhY2tlbmQoKSB3aXRob3V0IHZxLVxcdTAwM2VtdXRleCBpcyBhY2NlcHRhYmxlIGhlcmU6IGxvY2tpbmdcXG4tXFx0ICogdGhlIG11dGV4IHdvdWxkIGJlIHRvbyBleHBlbnNpdmUgaW4gdGhpcyBob3QgcGF0aCwgYW5kIHdlIGFscmVhZHkgaGF2ZVxcbi1cXHQgKiBhbGwgdGhlIG91dGNvbWVzIGNvdmVyZWQ6IGlmIHRoZSBiYWNrZW5kIGJlY29tZXMgTlVMTCByaWdodCBhZnRlciB0aGUgY2hlY2ssXFxuLVxcdCAqIHZob3N0X3RyYW5zcG9ydF9kb19zZW5kX3BrdCgpIHdpbGwgY2hlY2sgaXQgdW5kZXIgdGhlIG11dGV4IGFueXdheS5cXG4rXFx0LyogRmFzdC1mYWlsIHVudGlsIHRoZSBndWVzdCBmaXJzdCBlbmFibGVzIHRoZSBkZXZpY2UgKFNFVF9SVU5OSU5HKDEpKS5cXG4rXFx0ICogQmVmb3JlIHRoYXQgdGhlcmUgaXMgbm8gbGlzdGVuZXIsIHNvIHF1ZXVpbmcgaXMgcG9pbnRsZXNzLiAnc3RhcnRlZCdcXG4rXFx0ICogaXMgbmV2ZXIgY2xlYXJlZCwgc28gb25jZSB3ZSdyZSB1cCB3ZSBrZWVwIHF1ZXVpbmcgYWNyb3NzIGxhdGVyXFxuK1xcdCAqIHN0b3AgLyBDUFItcGF1c2Ugd2luZG93cy5cXG4gXFx0ICovXFxuLVxcdGlmICh1bmxpa2VseSghZGF0YV9yYWNlKHZob3N0X3ZxX2dldF9iYWNrZW5kKFxcdTAwMjZ2c29jay1cXHUwMDNldnFzW1ZTT0NLX1ZRX1JYXSkpKSkge1xcbitcXHRpZiAodW5saWtlbHkoIVJFQURfT05DRSh2c29jay1cXHUwMDNlc3RhcnRlZCkpKSB7XFxuIFxcdFxcdHJjdV9yZWFkX3VubG9jaygpO1xcbiBcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0cmV0dXJuIC1FSE9TVFVOUkVBQ0g7XFxuQEAgLTMyMiw3ICszMTgsMTQgQEAgdmhvc3RfdHJhbnNwb3J0X3NlbmRfcGt0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXQgKm5ldClcXG4gXFx0XFx0YXRvbWljX2luYyhcXHUwMDI2dnNvY2stXFx1MDAzZXF1ZXVlZF9yZXBsaWVzKTtcXG4gXFxuIFxcdHZpcnRpb192c29ja19za2JfcXVldWVfdGFpbChcXHUwMDI2dnNvY2stXFx1MDAzZXNlbmRfcGt0X3F1ZXVlLCBza2IpO1xcbi1cXHR2aG9zdF92cV93b3JrX3F1ZXVlKFxcdTAwMjZ2c29jay1cXHUwMDNldnFzW1ZTT0NLX1ZRX1JYXSwgXFx1MDAyNnZzb2NrLVxcdTAwM2VzZW5kX3BrdF93b3JrKTtcXG4rXFxuK1xcdC8qIFNraXAgdGhlIGtpY2sgb25jZSB0aGUgYmFja2VuZCBpcyBnb25lIChzdG9wL1JFU0VUX09XTkVSKTsgdGhlIHNrYlxcbitcXHQgKiBzdGF5cyBxdWV1ZWQgYW5kIHZob3N0X3Zzb2NrX3N0YXJ0KCkgZHJhaW5zIGl0LiBQYWlycyB3aXRoIHRoZVxcbitcXHQgKiBzeW5jaHJvbml6ZV9yY3UoKSBpbiB2aG9zdF92c29ja19yZXNldF9vd25lcigpLlxcbitcXHQgKi9cXG4rXFx0aWYgKGRhdGFfcmFjZSh2aG9zdF92cV9nZXRfYmFja2VuZChcXHUwMDI2dnNvY2stXFx1MDAzZXZxc1tWU09DS19WUV9SWF0pKSlcXG4rXFx0XFx0dmhvc3RfdnFfd29ya19xdWV1ZShcXHUwMDI2dnNvY2stXFx1MDAzZXZxc1tWU09DS19WUV9SWF0sXFxuK1xcdFxcdFxcdFxcdCAgICBcXHUwMDI2dnNvY2stXFx1MDAzZXNlbmRfcGt0X3dvcmspO1xcbiBcXG4gXFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuIFxcdHJldHVybiBsZW47XFxuQEAgLTM1MCw3ICszNTMsMTUgQEAgdmhvc3RfdHJhbnNwb3J0X2NhbmNlbF9wa3Qoc3RydWN0IHZzb2NrX3NvY2sgKnZzaylcXG4gXFx0XFx0aW50IG5ld19jbnQ7XFxuIFxcbiBcXHRcXHRuZXdfY250ID0gYXRvbWljX3N1Yl9yZXR1cm4oY250LCBcXHUwMDI2dnNvY2stXFx1MDAzZXF1ZXVlZF9yZXBsaWVzKTtcXG4tXFx0XFx0aWYgKG5ld19jbnQgKyBjbnQgXFx1MDAzZT0gdHhfdnEtXFx1MDAzZW51bSBcXHUwMDI2XFx1MDAyNiBuZXdfY250IFxcdTAwM2MgdHhfdnEtXFx1MDAzZW51bSlcXG4rXFxuK1xcdFxcdC8qIFNraXAgdGhlIGtpY2sgb25jZSB0aGUgYmFja2VuZCBpcyBnb25lIChzdG9wL1JFU0VUX09XTkVSKTpcXG4rXFx0XFx0ICogdmhvc3RfcG9sbF9xdWV1ZSgpIHdvdWxkIHRvdWNoIHRoZSB3b3JrZXIgd2hpY2ggaXMgYmVpbmcgZnJlZWRcXG4rXFx0XFx0ICogYnkgdGVhcmRvd24sIGUuZy4gb24gUkVTRVRfT1dORVIuICBQYWlycyB3aXRoIHRoZVxcbitcXHRcXHQgKiBzeW5jaHJvbml6ZV9yY3UoKSBpbiB2aG9zdF92c29ja19yZXNldF9vd25lcigpLiAgVGhlIFRYIFZRIGlzXFxuK1xcdFxcdCAqIHJlLWtpY2tlZCBieSB2aG9zdF92c29ja19zdGFydCgpLlxcbitcXHRcXHQgKi9cXG4rXFx0XFx0aWYgKGRhdGFfcmFjZSh2aG9zdF92cV9nZXRfYmFja2VuZCh0eF92cSkpIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdCAgICBuZXdfY250ICsgY250IFxcdTAwM2U9IHR4X3ZxLVxcdTAwM2VudW0gXFx1MDAyNlxcdTAwMjYgbmV3X2NudCBcXHUwMDNjIHR4X3ZxLVxcdTAwM2VudW0pXFxuIFxcdFxcdFxcdHZob3N0X3BvbGxfcXVldWUoXFx1MDAyNnR4X3ZxLVxcdTAwM2Vwb2xsKTtcXG4gXFx0fVxcbiBcXG5AQCAtNjQwLDExICs2NTEsMjMgQEAgc3RhdGljIGludCB2aG9zdF92c29ja19zdGFydChzdHJ1Y3Qgdmhvc3RfdnNvY2sgKnZzb2NrKVxcbiBcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnZxLVxcdTAwM2VtdXRleCk7XFxuIFxcdH1cXG4gXFxuK1xcdC8qIFNldCAnc3RhcnRlZCcgZmxhZyBvbiB0aGUgZmlyc3Qgc3RhcnQ7IG5ldmVyIGNsZWFyZWQsIHNvIHNlbmRfcGt0XFxuK1xcdCAqIGtlZXBzIHF1ZXVpbmcgKGluc3RlYWQgb2YgZmFzdC1mYWlsaW5nKSBvbiBsYXRlciBzdG9wIC8gQ1BSIHBhdXNlcy5cXG4rXFx0ICovXFxuK1xcdFdSSVRFX09OQ0UodnNvY2stXFx1MDAzZXN0YXJ0ZWQsIHRydWUpO1xcbitcXG4gXFx0LyogU29tZSBwYWNrZXRzIG1heSBoYXZlIGJlZW4gcXVldWVkIGJlZm9yZSB0aGUgZGV2aWNlIHdhcyBzdGFydGVkLFxcbiBcXHQgKiBsZXQncyBraWNrIHRoZSBzZW5kIHdvcmtlciB0byBzZW5kIHRoZW0uXFxuIFxcdCAqL1xcbiBcXHR2aG9zdF92cV93b3JrX3F1ZXVlKFxcdTAwMjZ2c29jay1cXHUwMDNldnFzW1ZTT0NLX1ZRX1JYXSwgXFx1MDAyNnZzb2NrLVxcdTAwM2VzZW5kX3BrdF93b3JrKTtcXG4gXFxuK1xcdC8qXFxuK1xcdCAqIFNvbWUgcGFja2V0cyBtaWdodCd2ZSBhbHNvIGJlZW4gcXVldWVkIGluIFRYIFZRLiAgVGhhdCBpcyB0aGUgY2FzZVxcbitcXHQgKiBkdXJpbmcgdGhlIGJyaWVmIGRldmljZSBwYXVzZSBjYXVzZWQgYnkgVkhPU1RfUkVTRVRfT1dORVIuICBSZS1zY2FuXFxuK1xcdCAqIHRoZSBUWCBWUSBoZXJlLCBtaXJyb3JpbmcgdGhlIFJYIHNlbmQtd29ya2VyIGtpY2sgYWJvdmUuXFxuK1xcdCAqL1xcbitcXHR2aG9zdF9wb2xsX3F1ZXVlKFxcdTAwMjZ2c29jay1cXHUwMDNldnFzW1ZTT0NLX1ZRX1RYXS5wb2xsKTtcXG4rXFxuIFxcdG11dGV4X3VubG9jayhcXHUwMDI2dnNvY2stXFx1MDAzZWRldi5tdXRleCk7XFxuIFxcdHJldHVybiAwO1xcbiBcXG5AQCAtNjY0LDkgKzY4NywyNCBAQCBzdGF0aWMgaW50IHZob3N0X3Zzb2NrX3N0YXJ0KHN0cnVjdCB2aG9zdF92c29jayAqdnNvY2spXFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG4gXFxuLXN0YXRpYyBpbnQgdmhvc3RfdnNvY2tfc3RvcChzdHJ1Y3Qgdmhvc3RfdnNvY2sgKnZzb2NrLCBib29sIGNoZWNrX293bmVyKVxcbitzdGF0aWMgdm9pZCB2aG9zdF92c29ja19kcm9wX2JhY2tlbmRzKHN0cnVjdCB2aG9zdF92c29jayAqdnNvY2spXFxuIHtcXG4rXFx0c3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnE7XFxuIFxcdHNpemVfdCBpO1xcbitcXG4rXFx0bG9ja2RlcF9hc3NlcnRfaGVsZChcXHUwMDI2dnNvY2stXFx1MDAzZWRldi5tdXRleCk7XFxuK1xcbitcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQVJSQVlfU0laRSh2c29jay1cXHUwMDNldnFzKTsgaSsrKSB7XFxuK1xcdFxcdHZxID0gXFx1MDAyNnZzb2NrLVxcdTAwM2V2cXNbaV07XFxuK1xcbitcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZ2cS1cXHUwMDNlbXV0ZXgpO1xcbitcXHRcXHR2aG9zdF92cV9zZXRfYmFja2VuZCh2cSwgTlVMTCk7XFxuK1xcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2dnEtXFx1MDAzZW11dGV4KTtcXG4rXFx0fVxcbit9XFxuK1xcbitzdGF0aWMgaW50IHZob3N0X3Zzb2NrX3N0b3Aoc3RydWN0IHZob3N0X3Zzb2NrICp2c29jaywgYm9vbCBjaGVja19vd25lcilcXG4re1xcbiBcXHRpbnQgcmV0ID0gMDtcXG4gXFxuIFxcdG11dGV4X2xvY2soXFx1MDAyNnZzb2NrLVxcdTAwM2VkZXYubXV0ZXgpO1xcbkBAIC02NzcsMTQgKzcxNSw3IEBAIHN0YXRpYyBpbnQgdmhvc3RfdnNvY2tfc3RvcChzdHJ1Y3Qgdmhvc3RfdnNvY2sgKnZzb2NrLCBib29sIGNoZWNrX293bmVyKVxcbiBcXHRcXHRcXHRnb3RvIGVycjtcXG4gXFx0fVxcbiBcXG4tXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUodnNvY2stXFx1MDAzZXZxcyk7IGkrKykge1xcbi1cXHRcXHRzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cSA9IFxcdTAwMjZ2c29jay1cXHUwMDNldnFzW2ldO1xcbi1cXG4tXFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2dnEtXFx1MDAzZW11dGV4KTtcXG4tXFx0XFx0dmhvc3RfdnFfc2V0X2JhY2tlbmQodnEsIE5VTEwpO1xcbi1cXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnZxLVxcdTAwM2VtdXRleCk7XFxuLVxcdH1cXG4tXFxuK1xcdHZob3N0X3Zzb2NrX2Ryb3BfYmFja2VuZHModnNvY2spO1xcbiBlcnI6XFxuIFxcdG11dGV4X3VubG9jayhcXHUwMDI2dnNvY2stXFx1MDAzZWRldi5tdXRleCk7XFxuIFxcdHJldHVybiByZXQ7XFxuQEAgLTcyMCw2ICs3NTEsNyBAQCBzdGF0aWMgaW50IHZob3N0X3Zzb2NrX2Rldl9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxcbiBcXG4gXFx0dnNvY2stXFx1MDAzZWd1ZXN0X2NpZCA9IDA7IC8qIG5vIENJRCBhc3NpZ25lZCB5ZXQgKi9cXG4gXFx0dnNvY2stXFx1MDAzZXNlcXBhY2tldF9hbGxvdyA9IGZhbHNlO1xcbitcXHR2c29jay1cXHUwMDNlc3RhcnRlZCA9IGZhbHNlO1xcbiBcXG4gXFx0YXRvbWljX3NldChcXHUwMDI2dnNvY2stXFx1MDAzZXF1ZXVlZF9yZXBsaWVzLCAwKTtcXG4gXFxuQEAgLTg4Niw2ICs5MTgsMzYgQEAgc3RhdGljIGludCB2aG9zdF92c29ja19zZXRfZmVhdHVyZXMoc3RydWN0IHZob3N0X3Zzb2NrICp2c29jaywgdTY0IGZlYXR1cmVzKVxcbiBcXHRyZXR1cm4gLUVGQVVMVDtcXG4gfVxcbiBcXG4rc3RhdGljIGludCB2aG9zdF92c29ja19yZXNldF9vd25lcihzdHJ1Y3Qgdmhvc3RfdnNvY2sgKnZzb2NrKVxcbit7XFxuK1xcdHN0cnVjdCB2aG9zdF9pb3RsYiAqdW1lbTtcXG4rXFx0bG9uZyBlcnI7XFxuK1xcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZ2c29jay1cXHUwMDNlZGV2Lm11dGV4KTtcXG4rXFx0ZXJyID0gdmhvc3RfZGV2X2NoZWNrX293bmVyKFxcdTAwMjZ2c29jay1cXHUwMDNlZGV2KTtcXG4rXFx0aWYgKGVycilcXG4rXFx0XFx0Z290byBkb25lO1xcbitcXHR1bWVtID0gdmhvc3RfZGV2X3Jlc2V0X293bmVyX3ByZXBhcmUoKTtcXG4rXFx0aWYgKCF1bWVtKSB7XFxuK1xcdFxcdGVyciA9IC1FTk9NRU07XFxuK1xcdFxcdGdvdG8gZG9uZTtcXG4rXFx0fVxcbitcXHR2aG9zdF92c29ja19kcm9wX2JhY2tlbmRzKHZzb2NrKTtcXG4rXFxuK1xcdC8qIExldCBpbi1mbGlnaHQgc2VuZF9wa3QoKSBjYWxsZXJzIHN0b3AgdG91Y2hpbmcgdGhlIHdvcmtlciBiZWZvcmUgdGhlXFxuK1xcdCAqIGZsdXNoICsgZnJlZSBiZWxvdy4gUGFpcnMgd2l0aCB0aGUgYmFja2VuZCBjaGVjayBpblxcbitcXHQgKiB2aG9zdF90cmFuc3BvcnRfc2VuZF9wa3QoKS5cXG4rXFx0ICovXFxuK1xcdHN5bmNocm9uaXplX3JjdSgpO1xcbitcXG4rXFx0dmhvc3RfdnNvY2tfZmx1c2godnNvY2spO1xcbitcXHR2aG9zdF9kZXZfc3RvcChcXHUwMDI2dnNvY2stXFx1MDAzZWRldik7XFxuK1xcdHZob3N0X2Rldl9yZXNldF9vd25lcihcXHUwMDI2dnNvY2stXFx1MDAzZWRldiwgdW1lbSk7XFxuK2RvbmU6XFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2dnNvY2stXFx1MDAzZWRldi5tdXRleCk7XFxuK1xcdHJldHVybiBlcnI7XFxuK31cXG4rXFxuIHN0YXRpYyBsb25nIHZob3N0X3Zzb2NrX2Rldl9pb2N0bChzdHJ1Y3QgZmlsZSAqZiwgdW5zaWduZWQgaW50IGlvY3RsLFxcbiBcXHRcXHRcXHRcXHQgIHVuc2lnbmVkIGxvbmcgYXJnKVxcbiB7XFxuQEAgLTkyOSw2ICs5OTEsOCBAQCBzdGF0aWMgbG9uZyB2aG9zdF92c29ja19kZXZfaW9jdGwoc3RydWN0IGZpbGUgKmYsIHVuc2lnbmVkIGludCBpb2N0bCxcXG4gXFx0XFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbiBcXHRcXHR2aG9zdF9zZXRfYmFja2VuZF9mZWF0dXJlcyhcXHUwMDI2dnNvY2stXFx1MDAzZWRldiwgZmVhdHVyZXMpO1xcbiBcXHRcXHRyZXR1cm4gMDtcXG4rXFx0Y2FzZSBWSE9TVF9SRVNFVF9PV05FUjpcXG4rXFx0XFx0cmV0dXJuIHZob3N0X3Zzb2NrX3Jlc2V0X293bmVyKHZzb2NrKTtcXG4gXFx0ZGVmYXVsdDpcXG4gXFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2dnNvY2stXFx1MDAzZWRldi5tdXRleCk7XFxuIFxcdFxcdHIgPSB2aG9zdF9kZXZfaW9jdGwoXFx1MDAyNnZzb2NrLVxcdTAwM2VkZXYsIGlvY3RsLCBhcmdwKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMTY6MTc6NTUuMzc2MjUxNzA1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTMyNDUzMDU5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWSE9TVF9WU09DS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInZob3N0X3Zzb2NrX3Jlc2V0X293bmVyXCIsXG4gICAgXCJ2aG9zdF92c29ja19zdGFydFwiLFxuICAgIFwidmhvc3RfdnNvY2tfc3RvcFwiLFxuICAgIFwidmhvc3RfdnNvY2tfZGV2X2lvY3RsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHZob3N0LXZzb2NrIGRyaXZlciB0byBoYW5kbGUgdGhlIFZIT1NUX1JFU0VUX09XTkVSIGlvY3RsIGV4cGxpY2l0bHksIGFkZGluZyBhIG5ldyB2aG9zdF92c29ja19yZXNldF9vd25lciBmdW5jdGlvbiBhbmQgbW9kaWZ5aW5nIHRoZSBwYWNrZXQgc2VuZGluZyBsb2dpYyB0byBoYW5kbGUgZGV2aWNlIHN0b3AvcmVzZXQgY29ycmVjdGx5LiBUaGlzIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgL2Rldi92aG9zdC12c29jayBpb2N0bHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNTg1ZjRmMjhkMTFkZmY0MjEwODM4NGVhOTM0MWFhOGRiNWE0M2Q5YlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVuIDI1IDE2OjE3OjUzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy92aG9zdC92c29jay5jIGIvZHJpdmVycy92aG9zdC92c29jay5jXG5pbmRleCA5YWFhYjZiYjgwNjFjMS4uZjBhMGFhN2QzMjAwMDEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3Zob3N0L3Zzb2NrLmNcbisrKyBiL2RyaXZlcnMvdmhvc3QvdnNvY2suY1xuQEAgLTYxLDYgKzYxLDcgQEAgc3RydWN0IHZob3N0X3Zzb2NrIHtcbiBcbiBcdHUzMiBndWVzdF9jaWQ7XG4gXHRib29sIHNlcXBhY2tldF9hbGxvdztcbitcdGJvb2wgc3RhcnRlZDtcdFx0Lyogc2V0IG9uIGZpcnN0IFNFVF9SVU5OSU5HKDEpOyBuZXZlciBjbGVhcmVkICovXG4gfTtcbiBcbiBzdGF0aWMgdTMyIHZob3N0X3RyYW5zcG9ydF9nZXRfbG9jYWxfY2lkKHZvaWQpXG5AQCAtMzAyLDE3ICszMDMsMTIgQEAgdmhvc3RfdHJhbnNwb3J0X3NlbmRfcGt0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXQgKm5ldClcbiBcdFx0cmV0dXJuIC1FTk9ERVY7XG4gXHR9XG4gXG4tXHQvKiBGYXN0LWZhaWwgaWYgdGhlIGd1ZXN0IGhhc24ndCBlbmFibGVkIHRoZSBSWCB2cSB5ZXQuIFF1ZXVpbmcgdGhlIHBhY2tldFxuLVx0ICogYW5kIG1ha2luZyB0aGUgY2FsbGVyIHdhaXQgaXMgcG9pbnRsZXNzOiBldmVuIGlmIHRoZSBndWVzdCBtYW5hZ2VzIHRvIGluaXRcbi1cdCAqIHdpdGhpbiB0aGUgdGltZW91dCwgaXQnbGwgaW1tZWRpYXRlbHkgcmVwbHkgd2l0aCBSU1QsIGJlY2F1c2UgdGhlcmUncyBub1xuLVx0ICogbGlzdGVuZXIgb24gdGhlIHBvcnQgeWV0LlxuLVx0ICpcbi1cdCAqIHZob3N0X3ZxX2dldF9iYWNrZW5kKCkgd2l0aG91dCB2cS1cdTAwM2VtdXRleCBpcyBhY2NlcHRhYmxlIGhlcmU6IGxvY2tpbmdcbi1cdCAqIHRoZSBtdXRleCB3b3VsZCBiZSB0b28gZXhwZW5zaXZlIGluIHRoaXMgaG90IHBhdGgsIGFuZCB3ZSBhbHJlYWR5IGhhdmVcbi1cdCAqIGFsbCB0aGUgb3V0Y29tZXMgY292ZXJlZDogaWYgdGhlIGJhY2tlbmQgYmVjb21lcyBOVUxMIHJpZ2h0IGFmdGVyIHRoZSBjaGVjayxcbi1cdCAqIHZob3N0X3RyYW5zcG9ydF9kb19zZW5kX3BrdCgpIHdpbGwgY2hlY2sgaXQgdW5kZXIgdGhlIG11dGV4IGFueXdheS5cbitcdC8qIEZhc3QtZmFpbCB1bnRpbCB0aGUgZ3Vlc3QgZmlyc3QgZW5hYmxlcyB0aGUgZGV2aWNlIChTRVRfUlVOTklORygxKSkuXG4rXHQgKiBCZWZvcmUgdGhhdCB0aGVyZSBpcyBubyBsaXN0ZW5lciwgc28gcXVldWluZyBpcyBwb2ludGxlc3MuICdzdGFydGVkJ1xuK1x0ICogaXMgbmV2ZXIgY2xlYXJlZCwgc28gb25jZSB3ZSdyZSB1cCB3ZSBrZWVwIHF1ZXVpbmcgYWNyb3NzIGxhdGVyXG4rXHQgKiBzdG9wIC8gQ1BSLXBhdXNlIHdpbmRvd3MuXG4gXHQgKi9cbi1cdGlmICh1bmxpa2VseSghZGF0YV9yYWNlKHZob3N0X3ZxX2dldF9iYWNrZW5kKFx1MDAyNnZzb2NrLVx1MDAzZXZxc1tWU09DS19WUV9SWF0pKSkpIHtcbitcdGlmICh1bmxpa2VseSghUkVBRF9PTkNFKHZzb2NrLVx1MDAzZXN0YXJ0ZWQpKSkge1xuIFx0XHRyY3VfcmVhZF91bmxvY2soKTtcbiBcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiAtRUhPU1RVTlJFQUNIO1xuQEAgLTMyMiw3ICszMTgsMTQgQEAgdmhvc3RfdHJhbnNwb3J0X3NlbmRfcGt0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXQgKm5ldClcbiBcdFx0YXRvbWljX2luYyhcdTAwMjZ2c29jay1cdTAwM2VxdWV1ZWRfcmVwbGllcyk7XG4gXG4gXHR2aXJ0aW9fdnNvY2tfc2tiX3F1ZXVlX3RhaWwoXHUwMDI2dnNvY2stXHUwMDNlc2VuZF9wa3RfcXVldWUsIHNrYik7XG4tXHR2aG9zdF92cV93b3JrX3F1ZXVlKFx1MDAyNnZzb2NrLVx1MDAzZXZxc1tWU09DS19WUV9SWF0sIFx1MDAyNnZzb2NrLVx1MDAzZXNlbmRfcGt0X3dvcmspO1xuK1xuK1x0LyogU2tpcCB0aGUga2ljayBvbmNlIHRoZSBiYWNrZW5kIGlzIGdvbmUgKHN0b3AvUkVTRVRfT1dORVIpOyB0aGUgc2tiXG4rXHQgKiBzdGF5cyBxdWV1ZWQgYW5kIHZob3N0X3Zzb2NrX3N0YXJ0KCkgZHJhaW5zIGl0LiBQYWlycyB3aXRoIHRoZVxuK1x0ICogc3luY2hyb25pemVfcmN1KCkgaW4gdmhvc3RfdnNvY2tfcmVzZXRfb3duZXIoKS5cbitcdCAqL1xuK1x0aWYgKGRhdGFfcmFjZSh2aG9zdF92cV9nZXRfYmFja2VuZChcdTAwMjZ2c29jay1cdTAwM2V2cXNbVlNPQ0tfVlFfUlhdKSkpXG4rXHRcdHZob3N0X3ZxX3dvcmtfcXVldWUoXHUwMDI2dnNvY2stXHUwMDNldnFzW1ZTT0NLX1ZRX1JYXSxcbitcdFx0XHRcdCAgICBcdTAwMjZ2c29jay1cdTAwM2VzZW5kX3BrdF93b3JrKTtcbiBcbiBcdHJjdV9yZWFkX3VubG9jaygpO1xuIFx0cmV0dXJuIGxlbjtcbkBAIC0zNTAsNyArMzUzLDE1IEBAIHZob3N0X3RyYW5zcG9ydF9jYW5jZWxfcGt0KHN0cnVjdCB2c29ja19zb2NrICp2c2spXG4gXHRcdGludCBuZXdfY250O1xuIFxuIFx0XHRuZXdfY250ID0gYXRvbWljX3N1Yl9yZXR1cm4oY250LCBcdTAwMjZ2c29jay1cdTAwM2VxdWV1ZWRfcmVwbGllcyk7XG4tXHRcdGlmIChuZXdfY250ICsgY250IFx1MDAzZT0gdHhfdnEtXHUwMDNlbnVtIFx1MDAyNlx1MDAyNiBuZXdfY250IFx1MDAzYyB0eF92cS1cdTAwM2VudW0pXG4rXG4rXHRcdC8qIFNraXAgdGhlIGtpY2sgb25jZSB0aGUgYmFja2VuZCBpcyBnb25lIChzdG9wL1JFU0VUX09XTkVSKTpcbitcdFx0ICogdmhvc3RfcG9sbF9xdWV1ZSgpIHdvdWxkIHRvdWNoIHRoZSB3b3JrZXIgd2hpY2ggaXMgYmVpbmcgZnJlZWRcbitcdFx0ICogYnkgdGVhcmRvd24sIGUuZy4gb24gUkVTRVRfT1dORVIuICBQYWlycyB3aXRoIHRoZVxuK1x0XHQgKiBzeW5jaHJvbml6ZV9yY3UoKSBpbiB2aG9zdF92c29ja19yZXNldF9vd25lcigpLiAgVGhlIFRYIFZRIGlzXG4rXHRcdCAqIHJlLWtpY2tlZCBieSB2aG9zdF92c29ja19zdGFydCgpLlxuK1x0XHQgKi9cbitcdFx0aWYgKGRhdGFfcmFjZSh2aG9zdF92cV9nZXRfYmFja2VuZCh0eF92cSkpIFx1MDAyNlx1MDAyNlxuK1x0XHQgICAgbmV3X2NudCArIGNudCBcdTAwM2U9IHR4X3ZxLVx1MDAzZW51bSBcdTAwMjZcdTAwMjYgbmV3X2NudCBcdTAwM2MgdHhfdnEtXHUwMDNlbnVtKVxuIFx0XHRcdHZob3N0X3BvbGxfcXVldWUoXHUwMDI2dHhfdnEtXHUwMDNlcG9sbCk7XG4gXHR9XG4gXG5AQCAtNjQwLDExICs2NTEsMjMgQEAgc3RhdGljIGludCB2aG9zdF92c29ja19zdGFydChzdHJ1Y3Qgdmhvc3RfdnNvY2sgKnZzb2NrKVxuIFx0XHRtdXRleF91bmxvY2soXHUwMDI2dnEtXHUwMDNlbXV0ZXgpO1xuIFx0fVxuIFxuK1x0LyogU2V0ICdzdGFydGVkJyBmbGFnIG9uIHRoZSBmaXJzdCBzdGFydDsgbmV2ZXIgY2xlYXJlZCwgc28gc2VuZF9wa3RcbitcdCAqIGtlZXBzIHF1ZXVpbmcgKGluc3RlYWQgb2YgZmFzdC1mYWlsaW5nKSBvbiBsYXRlciBzdG9wIC8gQ1BSIHBhdXNlcy5cbitcdCAqL1xuK1x0V1JJVEVfT05DRSh2c29jay1cdTAwM2VzdGFydGVkLCB0cnVlKTtcbitcbiBcdC8qIFNvbWUgcGFja2V0cyBtYXkgaGF2ZSBiZWVuIHF1ZXVlZCBiZWZvcmUgdGhlIGRldmljZSB3YXMgc3RhcnRlZCxcbiBcdCAqIGxldCdzIGtpY2sgdGhlIHNlbmQgd29ya2VyIHRvIHNlbmQgdGhlbS5cbiBcdCAqL1xuIFx0dmhvc3RfdnFfd29ya19xdWV1ZShcdTAwMjZ2c29jay1cdTAwM2V2cXNbVlNPQ0tfVlFfUlhdLCBcdTAwMjZ2c29jay1cdTAwM2VzZW5kX3BrdF93b3JrKTtcbiBcbitcdC8qXG4rXHQgKiBTb21lIHBhY2tldHMgbWlnaHQndmUgYWxzbyBiZWVuIHF1ZXVlZCBpbiBUWCBWUS4gIFRoYXQgaXMgdGhlIGNhc2VcbitcdCAqIGR1cmluZyB0aGUgYnJpZWYgZGV2aWNlIHBhdXNlIGNhdXNlZCBieSBWSE9TVF9SRVNFVF9PV05FUi4gIFJlLXNjYW5cbitcdCAqIHRoZSBUWCBWUSBoZXJlLCBtaXJyb3JpbmcgdGhlIFJYIHNlbmQtd29ya2VyIGtpY2sgYWJvdmUuXG4rXHQgKi9cbitcdHZob3N0X3BvbGxfcXVldWUoXHUwMDI2dnNvY2stXHUwMDNldnFzW1ZTT0NLX1ZRX1RYXS5wb2xsKTtcbitcbiBcdG11dGV4X3VubG9jayhcdTAwMjZ2c29jay1cdTAwM2VkZXYubXV0ZXgpO1xuIFx0cmV0dXJuIDA7XG4gXG5AQCAtNjY0LDkgKzY4NywyNCBAQCBzdGF0aWMgaW50IHZob3N0X3Zzb2NrX3N0YXJ0KHN0cnVjdCB2aG9zdF92c29jayAqdnNvY2spXG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbi1zdGF0aWMgaW50IHZob3N0X3Zzb2NrX3N0b3Aoc3RydWN0IHZob3N0X3Zzb2NrICp2c29jaywgYm9vbCBjaGVja19vd25lcilcbitzdGF0aWMgdm9pZCB2aG9zdF92c29ja19kcm9wX2JhY2tlbmRzKHN0cnVjdCB2aG9zdF92c29jayAqdnNvY2spXG4ge1xuK1x0c3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnE7XG4gXHRzaXplX3QgaTtcbitcbitcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXHUwMDI2dnNvY2stXHUwMDNlZGV2Lm11dGV4KTtcbitcbitcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUodnNvY2stXHUwMDNldnFzKTsgaSsrKSB7XG4rXHRcdHZxID0gXHUwMDI2dnNvY2stXHUwMDNldnFzW2ldO1xuK1xuK1x0XHRtdXRleF9sb2NrKFx1MDAyNnZxLVx1MDAzZW11dGV4KTtcbitcdFx0dmhvc3RfdnFfc2V0X2JhY2tlbmQodnEsIE5VTEwpO1xuK1x0XHRtdXRleF91bmxvY2soXHUwMDI2dnEtXHUwMDNlbXV0ZXgpO1xuK1x0fVxuK31cbitcbitzdGF0aWMgaW50IHZob3N0X3Zzb2NrX3N0b3Aoc3RydWN0IHZob3N0X3Zzb2NrICp2c29jaywgYm9vbCBjaGVja19vd25lcilcbit7XG4gXHRpbnQgcmV0ID0gMDtcbiBcbiBcdG11dGV4X2xvY2soXHUwMDI2dnNvY2stXHUwMDNlZGV2Lm11dGV4KTtcbkBAIC02NzcsMTQgKzcxNSw3IEBAIHN0YXRpYyBpbnQgdmhvc3RfdnNvY2tfc3RvcChzdHJ1Y3Qgdmhvc3RfdnNvY2sgKnZzb2NrLCBib29sIGNoZWNrX293bmVyKVxuIFx0XHRcdGdvdG8gZXJyO1xuIFx0fVxuIFxuLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRSh2c29jay1cdTAwM2V2cXMpOyBpKyspIHtcbi1cdFx0c3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnEgPSBcdTAwMjZ2c29jay1cdTAwM2V2cXNbaV07XG4tXG4tXHRcdG11dGV4X2xvY2soXHUwMDI2dnEtXHUwMDNlbXV0ZXgpO1xuLVx0XHR2aG9zdF92cV9zZXRfYmFja2VuZCh2cSwgTlVMTCk7XG4tXHRcdG11dGV4X3VubG9jayhcdTAwMjZ2cS1cdTAwM2VtdXRleCk7XG4tXHR9XG4tXG4rXHR2aG9zdF92c29ja19kcm9wX2JhY2tlbmRzKHZzb2NrKTtcbiBlcnI6XG4gXHRtdXRleF91bmxvY2soXHUwMDI2dnNvY2stXHUwMDNlZGV2Lm11dGV4KTtcbiBcdHJldHVybiByZXQ7XG5AQCAtNzIwLDYgKzc1MSw3IEBAIHN0YXRpYyBpbnQgdmhvc3RfdnNvY2tfZGV2X29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpXG4gXG4gXHR2c29jay1cdTAwM2VndWVzdF9jaWQgPSAwOyAvKiBubyBDSUQgYXNzaWduZWQgeWV0ICovXG4gXHR2c29jay1cdTAwM2VzZXFwYWNrZXRfYWxsb3cgPSBmYWxzZTtcbitcdHZzb2NrLVx1MDAzZXN0YXJ0ZWQgPSBmYWxzZTtcbiBcbiBcdGF0b21pY19zZXQoXHUwMDI2dnNvY2stXHUwMDNlcXVldWVkX3JlcGxpZXMsIDApO1xuIFxuQEAgLTg4Niw2ICs5MTgsMzYgQEAgc3RhdGljIGludCB2aG9zdF92c29ja19zZXRfZmVhdHVyZXMoc3RydWN0IHZob3N0X3Zzb2NrICp2c29jaywgdTY0IGZlYXR1cmVzKVxuIFx0cmV0dXJuIC1FRkFVTFQ7XG4gfVxuIFxuK3N0YXRpYyBpbnQgdmhvc3RfdnNvY2tfcmVzZXRfb3duZXIoc3RydWN0IHZob3N0X3Zzb2NrICp2c29jaylcbit7XG4rXHRzdHJ1Y3Qgdmhvc3RfaW90bGIgKnVtZW07XG4rXHRsb25nIGVycjtcbitcbitcdG11dGV4X2xvY2soXHUwMDI2dnNvY2stXHUwMDNlZGV2Lm11dGV4KTtcbitcdGVyciA9IHZob3N0X2Rldl9jaGVja19vd25lcihcdTAwMjZ2c29jay1cdTAwM2VkZXYpO1xuK1x0aWYgKGVycilcbitcdFx0Z290byBkb25lO1xuK1x0dW1lbSA9IHZob3N0X2Rldl9yZXNldF9vd25lcl9wcmVwYXJlKCk7XG4rXHRpZiAoIXVtZW0pIHtcbitcdFx0ZXJyID0gLUVOT01FTTtcbitcdFx0Z290byBkb25lO1xuK1x0fVxuK1x0dmhvc3RfdnNvY2tfZHJvcF9iYWNrZW5kcyh2c29jayk7XG4rXG4rXHQvKiBMZXQgaW4tZmxpZ2h0IHNlbmRfcGt0KCkgY2FsbGVycyBzdG9wIHRvdWNoaW5nIHRoZSB3b3JrZXIgYmVmb3JlIHRoZVxuK1x0ICogZmx1c2ggKyBmcmVlIGJlbG93LiBQYWlycyB3aXRoIHRoZSBiYWNrZW5kIGNoZWNrIGluXG4rXHQgKiB2aG9zdF90cmFuc3BvcnRfc2VuZF9wa3QoKS5cbitcdCAqL1xuK1x0c3luY2hyb25pemVfcmN1KCk7XG4rXG4rXHR2aG9zdF92c29ja19mbHVzaCh2c29jayk7XG4rXHR2aG9zdF9kZXZfc3RvcChcdTAwMjZ2c29jay1cdTAwM2VkZXYpO1xuK1x0dmhvc3RfZGV2X3Jlc2V0X293bmVyKFx1MDAyNnZzb2NrLVx1MDAzZWRldiwgdW1lbSk7XG4rZG9uZTpcbitcdG11dGV4X3VubG9jayhcdTAwMjZ2c29jay1cdTAwM2VkZXYubXV0ZXgpO1xuK1x0cmV0dXJuIGVycjtcbit9XG4rXG4gc3RhdGljIGxvbmcgdmhvc3RfdnNvY2tfZGV2X2lvY3RsKHN0cnVjdCBmaWxlICpmLCB1bnNpZ25lZCBpbnQgaW9jdGwsXG4gXHRcdFx0XHQgIHVuc2lnbmVkIGxvbmcgYXJnKVxuIHtcbkBAIC05MjksNiArOTkxLDggQEAgc3RhdGljIGxvbmcgdmhvc3RfdnNvY2tfZGV2X2lvY3RsKHN0cnVjdCBmaWxlICpmLCB1bnNpZ25lZCBpbnQgaW9jdGwsXG4gXHRcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuIFx0XHR2aG9zdF9zZXRfYmFja2VuZF9mZWF0dXJlcyhcdTAwMjZ2c29jay1cdTAwM2VkZXYsIGZlYXR1cmVzKTtcbiBcdFx0cmV0dXJuIDA7XG4rXHRjYXNlIFZIT1NUX1JFU0VUX09XTkVSOlxuK1x0XHRyZXR1cm4gdmhvc3RfdnNvY2tfcmVzZXRfb3duZXIodnNvY2spO1xuIFx0ZGVmYXVsdDpcbiBcdFx0bXV0ZXhfbG9jayhcdTAwMjZ2c29jay1cdTAwM2VkZXYubXV0ZXgpO1xuIFx0XHRyID0gdmhvc3RfZGV2X2lvY3RsKFx1MDAyNnZzb2NrLVx1MDAzZWRldiwgaW9jdGwsIGFyZ3ApO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMTY6MTc6NTUuMzc2MjU0ODM2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTU4MDc3NTU3NDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipBbmFseXppbmcgdGhlIFZob3N0LVZTT0NLIFBhdGNoIGFuZCBSZWFjaGFiaWxpdHkqKlxuXG5SaWdodCwgc28gd2UndmUgZ290IGEgcGF0Y2ggdGhhdCdzIHRvdWNoZWQgYGRyaXZlcnMvdmhvc3QvdnNvY2suY2AuIFRoZSBjaGFuZ2VzIGludm9sdmUgYSBuZXcgYHN0YXJ0ZWRgIGZsYWcgd2l0aGluIHRoZSBgdmhvc3RfdnNvY2tgIHN0cnVjdHVyZSwgYW5kIGl0IGxvb2tzIGxpa2UgYHZob3N0X3RyYW5zcG9ydF9zZW5kX3BrdGAgYW5kIGB2aG9zdF90cmFuc3BvcnRfY2FuY2VsX3BrdGAgYXJlIGdldHRpbmcgdHdlYWtlZC4gSW50ZXJlc3RpbmcuIEFsc28sIGEgbmV3IGZ1bmN0aW9uLCBgdmhvc3RfdnNvY2tfcmVzZXRfb3duZXJgLCBoYXMgYmVlbiBhZGRlZCBmb3IgaGFuZGxpbmcgdGhlIGBWSE9TVF9SRVNFVF9PV05FUmAgaW9jdGwuXG5cbk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBpcyB0aGlzIGV2ZW4gKnJlYWNoYWJsZSo/IElzIHRoaXMgY29kZSBwYXRoIGFjdGl2ZT8gV2VsbCwgYGRyaXZlcnMvdmhvc3QvdnNvY2suY2AgaXMgdGhlIHZob3N0LXZzb2NrIGRyaXZlciwgYW5kIHRoYXQgc2hvdWxkIGJlIHByZXR0eSBjbGVhci4gSXQncyB0aGUgcHJvdmlkZXIgb2YgdGhlIGAvZGV2L3Zob3N0LXZzb2NrYCBkZXZpY2Ugbm9kZS4gQW5kIHRoZSBgVkhPU1RfUkVTRVRfT1dORVJgIGlvY3RsIGlzIGhhbmRsZWQgd2l0aGluIHRoYXQgZHJpdmVyLiBUaGF0IGlvY3RsIGltcGxlbWVudGF0aW9uIGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlLCBhbmQgdGh1cyBmdW5jdGlvbmFsLiBObyBjb25jZXJucyB0aGVyZS5cblxuTm93LCBsZXQncyB0aGluayBhYm91dCB0aGUgY29uZmlndXJhdGlvbi4gYGRyaXZlcnMvdmhvc3QvdnNvY2suY2AgaXMgY29tcGlsZWQgYmFzZWQgb24gdGhlIGBDT05GSUdfVkhPU1RfVlNPQ0tgIGNvbmZpZyBvcHRpb24uIEknbGwgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdCB0aGlzIGlzIGNvcnJlY3RseSBlbmFibGVkLCBidXQgYXNzdW1pbmcgaXQgaXMsIHRoZW4gdGhlIGNvZGUgcGF0aCBpcyBjZXJ0YWlubHkgdmFsaWQuIEknbGwgbG9vayBpbnRvIHZlcmlmeWluZyB0aGUgY29uZmlnIHNob3J0bHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxMzQsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQxNjoxODoxMS4xODQwMTUzMjRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjE1ODUzOTE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlZIT1NUX1ZTT0NLXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmhvc3QvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmhvc3QvS2NvbmZpZz00Nj1jb25maWcgVkhPU1RfU0NTSVxcbi0tXFxuZHJpdmVycy92aG9zdC9LY29uZmlnLTU1LVxcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZzo1Njpjb25maWcgVkhPU1RfVlNPQ0tcXG5kcml2ZXJzL3Zob3N0L0tjb25maWctNTctXFx0dHJpc3RhdGUgXFxcInZob3N0IHZpcnRpby12c29jayBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL3Zob3N0L01ha2VmaWxlPTY9dmhvc3Rfc2NzaS15IDo9IHNjc2kub1xcbmRyaXZlcnMvdmhvc3QvTWFrZWZpbGUtNy1cXG5kcml2ZXJzL3Zob3N0L01ha2VmaWxlOjg6b2JqLSQoQ09ORklHX1ZIT1NUX1ZTT0NLKSArPSB2aG9zdF92c29jay5vXFxuZHJpdmVycy92aG9zdC9NYWtlZmlsZS05LXZob3N0X3Zzb2NrLXkgOj0gdnNvY2sub1xcbi0tXFxuZHJpdmVycy92aG9zdC92aG9zdC5jPTg1OD1zdGF0aWMgdm9pZCBfX3Zob3N0X3ZxX2F0dGFjaF93b3JrZXIoc3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnEsXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtOTA3LVxcdFxcdC8qXFxuZHJpdmVycy92aG9zdC92aG9zdC5jOjkwODpcXHRcXHQgKiB2c29jayBjYW4gcXVldWUgYW55dGltZSBhZnRlciBWSE9TVF9WU09DS19TRVRfR1VFU1RfQ0lELlxcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYy05MDktXFx0XFx0ICogV2FybiBpZiBpdCBhZGRzIHN1cHBvcnQgZm9yIG11bHRpcGxlIHdvcmtlcnMgYnV0IGZvcmdldHMgdG9cXG4tLVxcbmRyaXZlcnMvdmhvc3QvdnNvY2suYy0yMS1cXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmM6MjI6I2RlZmluZSBWSE9TVF9WU09DS19ERUZBVUxUX0hPU1RfQ0lEXFx0MlxcbmRyaXZlcnMvdmhvc3QvdnNvY2suYy0yMy0vKiBNYXggbnVtYmVyIG9mIGJ5dGVzIHRyYW5zZmVycmVkIGJlZm9yZSByZXF1ZXVlaW5nIHRoZSBqb2IuXFxuZHJpdmVycy92aG9zdC92c29jay5jLTI0LSAqIFVzaW5nIHRoaXMgbGltaXQgcHJldmVudHMgb25lIHZpcnRxdWV1ZSBmcm9tIHN0YXJ2aW5nIG90aGVycy4gKi9cXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmM6MjU6I2RlZmluZSBWSE9TVF9WU09DS19XRUlHSFQgMHg4MDAwMFxcbmRyaXZlcnMvdmhvc3QvdnNvY2suYy0yNi0vKiBNYXggbnVtYmVyIG9mIHBhY2tldHMgdHJhbnNmZXJyZWQgYmVmb3JlIHJlcXVldWVpbmcgdGhlIGpvYi5cXG4tLVxcbmRyaXZlcnMvdmhvc3QvdnNvY2suYy0yOS0gKi9cXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmM6MzA6I2RlZmluZSBWSE9TVF9WU09DS19QS1RfV0VJR0hUIDI1NlxcbmRyaXZlcnMvdmhvc3QvdnNvY2suYy0zMS1cXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmM9MzI9c3RhdGljIGNvbnN0IGludCB2aG9zdF92c29ja19iaXRzW10gPSB7XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmMtMzctXFxuZHJpdmVycy92aG9zdC92c29jay5jOjM4OiNkZWZpbmUgVkhPU1RfVlNPQ0tfRkVBVFVSRVMgVkhPU1RfRkVBVFVSRVNfVTY0KHZob3N0X3Zzb2NrX2JpdHMsIDApXFxuZHJpdmVycy92aG9zdC92c29jay5jLTM5LVxcbmRyaXZlcnMvdmhvc3QvdnNvY2suYz00MD1lbnVtIHtcXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmM6NDE6XFx0VkhPU1RfVlNPQ0tfQkFDS0VORF9GRUFUVVJFUyA9ICgxVUxMIFxcdTAwM2NcXHUwMDNjIFZIT1NUX0JBQ0tFTkRfRl9JT1RMQl9NU0dfVjIpXFxuZHJpdmVycy92aG9zdC92c29jay5jLTQyLX07XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmM9Njc9c3RhdGljIHUzMiB2aG9zdF90cmFuc3BvcnRfZ2V0X2xvY2FsX2NpZCh2b2lkKVxcbmRyaXZlcnMvdmhvc3QvdnNvY2suYy02OC17XFxuZHJpdmVycy92aG9zdC92c29jay5jOjY5OlxcdHJldHVybiBWSE9TVF9WU09DS19ERUZBVUxUX0hPU1RfQ0lEO1xcbmRyaXZlcnMvdmhvc3QvdnNvY2suYy03MC19XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmM9NzI5PXN0YXRpYyBpbnQgdmhvc3RfdnNvY2tfZGV2X29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmMtNzYzLVxcdHZob3N0X2Rldl9pbml0KFxcdTAwMjZ2c29jay1cXHUwMDNlZGV2LCB2cXMsIEFSUkFZX1NJWkUodnNvY2stXFx1MDAzZXZxcyksXFxuZHJpdmVycy92aG9zdC92c29jay5jOjc2NDpcXHRcXHQgICAgICAgVUlPX01BWElPViwgVkhPU1RfVlNPQ0tfUEtUX1dFSUdIVCxcXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmM6NzY1OlxcdFxcdCAgICAgICBWSE9TVF9WU09DS19XRUlHSFQsIHRydWUsIE5VTEwpO1xcbmRyaXZlcnMvdmhvc3QvdnNvY2suYy03NjYtXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmM9ODg2PXN0YXRpYyBpbnQgdmhvc3RfdnNvY2tfc2V0X2ZlYXR1cmVzKHN0cnVjdCB2aG9zdF92c29jayAqdnNvY2ssIHU2NCBmZWF0dXJlcylcXG4tLVxcbmRyaXZlcnMvdmhvc3QvdnNvY2suYy04OTAtXFxuZHJpdmVycy92aG9zdC92c29jay5jOjg5MTpcXHRpZiAoZmVhdHVyZXMgXFx1MDAyNiB+VkhPU1RfVlNPQ0tfRkVBVFVSRVMpXFxuZHJpdmVycy92aG9zdC92c29jay5jLTg5Mi1cXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmM9OTUxPXN0YXRpYyBsb25nIHZob3N0X3Zzb2NrX2Rldl9pb2N0bChzdHJ1Y3QgZmlsZSAqZiwgdW5zaWduZWQgaW50IGlvY3RsLFxcbi0tXFxuZHJpdmVycy92aG9zdC92c29jay5jLTk2MS1cXHRzd2l0Y2ggKGlvY3RsKSB7XFxuZHJpdmVycy92aG9zdC92c29jay5jOjk2MjpcXHRjYXNlIFZIT1NUX1ZTT0NLX1NFVF9HVUVTVF9DSUQ6XFxuZHJpdmVycy92aG9zdC92c29jay5jLTk2My1cXHRcXHRpZiAoY29weV9mcm9tX3VzZXIoXFx1MDAyNmd1ZXN0X2NpZCwgYXJncCwgc2l6ZW9mKGd1ZXN0X2NpZCkpKVxcbi0tXFxuZHJpdmVycy92aG9zdC92c29jay5jLTk2NS1cXHRcXHRyZXR1cm4gdmhvc3RfdnNvY2tfc2V0X2NpZCh2c29jaywgZ3Vlc3RfY2lkKTtcXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmM6OTY2OlxcdGNhc2UgVkhPU1RfVlNPQ0tfU0VUX1JVTk5JTkc6XFxuZHJpdmVycy92aG9zdC92c29jay5jLTk2Ny1cXHRcXHRpZiAoY29weV9mcm9tX3VzZXIoXFx1MDAyNnN0YXJ0LCBhcmdwLCBzaXplb2Yoc3RhcnQpKSlcXG4tLVxcbmRyaXZlcnMvdmhvc3QvdnNvY2suYy05NzMtXFx0Y2FzZSBWSE9TVF9HRVRfRkVBVFVSRVM6XFxuZHJpdmVycy92aG9zdC92c29jay5jOjk3NDpcXHRcXHRmZWF0dXJlcyA9IFZIT1NUX1ZTT0NLX0ZFQVRVUkVTO1xcbmRyaXZlcnMvdmhvc3QvdnNvY2suYy05NzUtXFx0XFx0aWYgKGNvcHlfdG9fdXNlcihhcmdwLCBcXHUwMDI2ZmVhdHVyZXMsIHNpemVvZihmZWF0dXJlcykpKVxcbi0tXFxuZHJpdmVycy92aG9zdC92c29jay5jLTk4Mi1cXHRjYXNlIFZIT1NUX0dFVF9CQUNLRU5EX0ZFQVRVUkVTOlxcbmRyaXZlcnMvdmhvc3QvdnNvY2suYzo5ODM6XFx0XFx0ZmVhdHVyZXMgPSBWSE9TVF9WU09DS19CQUNLRU5EX0ZFQVRVUkVTO1xcbmRyaXZlcnMvdmhvc3QvdnNvY2suYy05ODQtXFx0XFx0aWYgKGNvcHlfdG9fdXNlcihhcmdwLCBcXHUwMDI2ZmVhdHVyZXMsIHNpemVvZihmZWF0dXJlcykpKVxcbi0tXFxuZHJpdmVycy92aG9zdC92c29jay5jLTk4OS1cXHRcXHRcXHRyZXR1cm4gLUVGQVVMVDtcXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmM6OTkwOlxcdFxcdGlmIChmZWF0dXJlcyBcXHUwMDI2IH5WSE9TVF9WU09DS19CQUNLRU5EX0ZFQVRVUkVTKVxcbmRyaXZlcnMvdmhvc3QvdnNvY2suYy05OTEtXFx0XFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbi0tXFxuZHJpdmVycy92aG9zdC92c29jay5jPTEwNDg9c3RhdGljIHN0cnVjdCBtaXNjZGV2aWNlIHZob3N0X3Zzb2NrX21pc2MgPSB7XFxuZHJpdmVycy92aG9zdC92c29jay5jOjEwNDk6XFx0Lm1pbm9yID0gVkhPU1RfVlNPQ0tfTUlOT1IsXFxuZHJpdmVycy92aG9zdC92c29jay5jLTEwNTAtXFx0Lm5hbWUgPSBcXFwidmhvc3QtdnNvY2tcXFwiLFxcbi0tXFxuZHJpdmVycy92aG9zdC92c29jay5jPTEwODI9TU9EVUxFX0RFU0NSSVBUSU9OKFxcXCJ2aG9zdCB0cmFuc3BvcnQgZm9yIHZzb2NrIFxcXCIpO1xcbmRyaXZlcnMvdmhvc3QvdnNvY2suYzoxMDgzOk1PRFVMRV9BTElBU19NSVNDREVWKFZIT1NUX1ZTT0NLX01JTk9SKTtcXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmMtMTA4NC1NT0RVTEVfQUxJQVMoXFxcImRldm5hbWU6dmhvc3QtdnNvY2tcXFwiKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMTY6MTg6MTEuNzk5ODgyNDcxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjQ2NDI0NTAyMDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgdGhlIHZob3N0LXZzb2NrIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBhaW1lZCBzcXVhcmVseSBhdCB0aGUgYGRyaXZlcnMvdmhvc3QvdnNvY2suY2AgZmlsZS4gTXkgaW5pdGlhbCBpbXByZXNzaW9uIGlzIHRoYXQgaXQncyBmdW5jdGlvbmFsIGFuZCBpbnRyb2R1Y2VzIGEgZmV3IHNpZ25pZmljYW50IGNoYW5nZXMuIEZpcnN0LCBhIGBzdGFydGVkYCBmbGFnIGlzIGFkZGVkIHRvIHRoZSBgdmhvc3RfdnNvY2tgIHN0cnVjdC4gVGhpcyBpcyBzbWFydDsgdGhleSdyZSBjaGFuZ2luZyB0aGUgbG9naWMgaW4gYHZob3N0X3RyYW5zcG9ydF9zZW5kX3BrdGAgdG8gcmVseSBvbiB0aGlzIGBzdGFydGVkYCBmbGFnIGluc3RlYWQgb2YganVzdCBjaGVja2luZyBmb3IgYSBub24tTlVMTCBiYWNrZW5kLiBUaGlzIGlzIGNsZWFuZXIgYW5kIG1ha2VzIHRoZSBjb250cm9sIGZsb3cgbW9yZSBleHBsaWNpdC4gVGhlIGB2aG9zdF92c29ja19zdGFydGAgZnVuY3Rpb24gbm93IHNldHMgdGhpcyBgc3RhcnRlZGAgZmxhZywgd2hpY2ggbWFrZXMgc2Vuc2UuXG5cblRoZSBtb3N0IGludGVyZXN0aW5nIHBhcnQgaXMgdGhlIGFkZGl0aW9uIG9mIGB2aG9zdF92c29ja19yZXNldF9vd25lcmAuIFRoaXMgaXMgY2xlYXJseSBpbiByZXNwb25zZSB0byBoYW5kbGluZyB0aGUgYFZIT1NUX1JFU0VUX09XTkVSYCBpb2N0bC4gUHJldmlvdXNseSwgdGhpcyB3YXMgaGFuZGxlZCBieSBhIGdlbmVyaWMgaGFuZGxlciwgYnV0IG5vdywgaXQgaGFzIGRlZGljYXRlZCBsb2dpYyBmb3IgdnNvY2suIFRoZSBwYXRjaCBhbHNvIGludHJvZHVjZXMgYHZob3N0X3Zzb2NrX2Ryb3BfYmFja2VuZHNgLCBjYWxsZWQgZnJvbSBib3RoIGB2aG9zdF92c29ja19zdG9wYCBhbmQgYHZob3N0X3Zzb2NrX3Jlc2V0X293bmVyYC4gVGhpcyBzdWdnZXN0cyBhIGNhcmVmdWwgY2xlYW51cCBwcm9jZWR1cmUgd2hlbiB0aGUgZGV2aWNlIGlzIHN0b3BwZWQgb3IgcmVzZXQuXG5cblRoZSBwYXRjaCBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZTsgdGhlIHZob3N0LXZzb2NrIGRyaXZlciBpcyBleHBvc2VkIHZpYSBgL2Rldi92aG9zdC12c29ja2AgaW9jdGxzLiBJIHNlZSB0aGF0IGB2aG9zdF92c29ja19kZXZfaW9jdGxgIGhhbmRsZXMgYFZIT1NUX1JFU0VUX09XTkVSYCBub3csIGluc3RlYWQgb2YgdGhlIGRlZmF1bHQgaW9jdGwgaGFuZGxlci4gSSdtIGZvY3VzaW5nIG9uIHRoZSBleHBsaWNpdCBoYW5kbGluZyBvZiBgVkhPU1RfUkVTRVRfT1dORVJgLlxuXG5JJ3ZlIGNoZWNrZWQgdGhlIGBLY29uZmlnYCBmaWxlLCBhbmQgYENPTkZJR19WSE9TVF9WU09DS2AgaXMgdGhlIHJlbGV2YW50IGNvbmZpZyBvcHRpb24uXG5cbkkgbmVlZCB0byBkZWNpZGUgd2hpY2ggZnVuY3Rpb25zIGFyZSB0aGUga2V5IG9uZXMgdG8gZm9jdXMgb24gZm9yIGZ1enppbmcuIEkgaW5pdGlhbGx5IGxvb2tlZCBhdCBgdmhvc3RfdnNvY2tfcmVzZXRfb3duZXJgLCBgdmhvc3RfdnNvY2tfZGV2X2lvY3RsYCwgYHZob3N0X3Zzb2NrX3N0YXJ0YCwgYHZob3N0X3Zzb2NrX3N0b3BgLCBgdmhvc3RfdHJhbnNwb3J0X3NlbmRfcGt0YCwgYW5kIGB2aG9zdF90cmFuc3BvcnRfY2FuY2VsX3BrdGAsIGJ1dCBgdmhvc3RfdHJhbnNwb3J0X3NlbmRfcGt0YCBhbmQgYHZob3N0X3RyYW5zcG9ydF9jYW5jZWxfcGt0YCBhcmUgaG90LXBhdGgsIHNvIEkgd2lsbCBhdm9pZCB0aGVtLiBTbywgdGhlIGtleSBmdW5jdGlvbnMgYXJlIGB2aG9zdF92c29ja19yZXNldF9vd25lcmAsIGB2aG9zdF92c29ja19kZXZfaW9jdGxgLCBgdmhvc3RfdnNvY2tfc3RhcnRgLCBhbmQgYHZob3N0X3Zzb2NrX3N0b3BgLlxuXG5Mb29raW5nIGF0IHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgdmhvc3RfdnNvY2tfcmVzZXRfb3duZXJgLCBpdCdzIGNsZWFyIHRoaXMgd2FycmFudHMgZnV6emluZy4gSXQgaGFuZGxlcyBvd25lciByZXNldCwgaW5jbHVkaW5nIHN5bmNocm9uaXphdGlvbiwgYmFja2VuZCBkcm9wcGluZywgZmx1c2hpbmcsIGRldmljZSBzdG9wcGluZywgYW5kIHJlc2V0LiBUaGUgY29kZSBsb29rcyBjb3JyZWN0LCBidXQgaXQncyBjb21wbGV4IGVub3VnaCB0byBiZW5lZml0IGZyb20gZnV6emluZy5cblxuSSd2ZSBjb25maXJtZWQgdGhhdCBgdmhvc3RfdnNvY2tfZGV2X2lvY3RsYCBpcyB0aGUgZW50cnkgcG9pbnQgZm9yIHRoZSBgL2Rldi92aG9zdC12c29ja2AgaW9jdGwgaGFuZGxpbmcsIHdoaWNoIGNvbmZpcm1zIGBWSE9TVF9SRVNFVF9PV05FUmAgaXMgcmVhY2hhYmxlLlxuXG5JJ3ZlIGFsc28gY2hlY2tlZCB0aGUgY29uZmlnIGRlcGVuZGVuY2llcywgYW5kIGBWSE9TVF9WU09DS2AgZGVwZW5kcyBvbiBgVkhPU1RgIGFuZCBgVlNPQ0tFVFNgLCBidXQgbGlzdGluZyBgVkhPU1RfVlNPQ0tgIGlzIHN1ZmZpY2llbnQuXG5cbk15IGNvbmNsdXNpb24gaXMgdGhhdCB0aGlzIHBhdGNoIGlzIGRlZmluaXRlbHkgd29ydGggZnV6emluZy4gSSdsbCBmb2N1cyBvbiB0aGUgZnVuY3Rpb25zOiBgdmhvc3RfdnNvY2tfcmVzZXRfb3duZXJgLCBgdmhvc3RfdnNvY2tfc3RhcnRgLCBgdmhvc3RfdnNvY2tfc3RvcGAsIGFuZCBhbHNvIGluY2x1ZGUgYHZob3N0X3Zzb2NrX2Rldl9pb2N0bGAgYXMgYW4gZW50cnkgcG9pbnQuIFRoZSBwcmltYXJ5IGNvbmZpZyBpcyBgVkhPU1RfVlNPQ0tgLiBUaGUgbWFpbiByZWFzb24gdG8gZnV6eiBpcyB0aGF0IHRoZSBwYXRjaCBleHBsaWNpdGx5IGhhbmRsZXMgdGhlIGBWSE9TVF9SRVNFVF9PV05FUmAgaW9jdGwsIGFkZGluZyBhIG5ldyBgdmhvc3RfdnNvY2tfcmVzZXRfb3duZXJgIGZ1bmN0aW9uLCBhbmQgbW9kaWZpZXMgdGhlIHBhY2tldC1zZW5kaW5nIGxvZ2ljLiBUaGVzZSBjaGFuZ2VzIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdGhyb3VnaCBgL2Rldi92aG9zdC12c29ja2AgaW9jdGxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MTg3LCJPdXRwdXRUb2tlbnMiOjE1MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMTY6MTg6MzYuNDQyMzM2MTE4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTg0Mzc3ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlZIT1NUX1ZTT0NLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmhvc3RfdnNvY2tfcmVzZXRfb3duZXJcIixcbiAgICBcInZob3N0X3Zzb2NrX3N0YXJ0XCIsXG4gICAgXCJ2aG9zdF92c29ja19zdG9wXCIsXG4gICAgXCJ2aG9zdF92c29ja19kZXZfaW9jdGxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgdmhvc3QtdnNvY2sgZHJpdmVyIHRvIGhhbmRsZSB0aGUgVkhPU1RfUkVTRVRfT1dORVIgaW9jdGwgZXhwbGljaXRseSwgYWRkaW5nIGEgbmV3IHZob3N0X3Zzb2NrX3Jlc2V0X293bmVyIGZ1bmN0aW9uIGFuZCBtb2RpZnlpbmcgdGhlIHBhY2tldCBzZW5kaW5nIGxvZ2ljIHRvIGhhbmRsZSBkZXZpY2Ugc3RvcC9yZXNldCBjb3JyZWN0bHkuIFRoaXMgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSAvZGV2L3Zob3N0LXZzb2NrIGlvY3Rscy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWSE9TVF9WU09DS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInZob3N0X3Zzb2NrX3Jlc2V0X293bmVyXCIsXG4gICAgXCJ2aG9zdF92c29ja19zdGFydFwiLFxuICAgIFwidmhvc3RfdnNvY2tfc3RvcFwiLFxuICAgIFwidmhvc3RfdnNvY2tfZGV2X2lvY3RsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHZob3N0LXZzb2NrIGRyaXZlciB0byBoYW5kbGUgdGhlIFZIT1NUX1JFU0VUX09XTkVSIGlvY3RsIGV4cGxpY2l0bHksIGFkZGluZyBhIG5ldyB2aG9zdF92c29ja19yZXNldF9vd25lciBmdW5jdGlvbiBhbmQgbW9kaWZ5aW5nIHRoZSBwYWNrZXQgc2VuZGluZyBsb2dpYyB0byBoYW5kbGUgZGV2aWNlIHN0b3AvcmVzZXQgY29ycmVjdGx5LiBUaGlzIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgL2Rldi92aG9zdC12c29jayBpb2N0bHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowf7fn2[1] Phase: Succeeded StartedAt: 2026-06-25 16:18:47 +0000 UTC FinishedAt: 2026-06-25 16:18:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf7fn2[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-25 16:18:47 +0000 UTC FinishedAt: 2026-06-25 16:18:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf7fn2[2] Phase: Succeeded StartedAt: 2026-06-25 16:18:47 +0000 UTC FinishedAt: 2026-06-25 20:25:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf7fn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_vsock_reset_owner","vhost_vsock_start","vhost_vsock_stop","vhost_vsock_dev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"fb2e4154-6f80-42ad-a42d-a0c24ceb1ffa","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-06-25 16:18:47 +0000 UTC FinishedAt: 2026-06-25 20:25:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_vsock_reset_owner","vhost_vsock_start","vhost_vsock_stop","vhost_vsock_dev_ioctl"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"fb2e4154-6f80-42ad-a42d-a0c24ceb1ffa","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowf7fn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_vsock_reset_owner","vhost_vsock_start","vhost_vsock_stop","vhost_vsock_dev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"fb2e4154-6f80-42ad-a42d-a0c24ceb1ffa","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-25 16:18:47 +0000 UTC FinishedAt: 2026-06-25 16:20:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf7fn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_vsock_reset_owner","vhost_vsock_start","vhost_vsock_stop","vhost_vsock_dev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"fb2e4154-6f80-42ad-a42d-a0c24ceb1ffa","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-06-25 16:18:47 +0000 UTC FinishedAt: 2026-06-25 16:20:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowf7fn2/series-workflowf7fn2-convert-artifact-142419617/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowf7fn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_vsock_reset_owner","vhost_vsock_start","vhost_vsock_stop","vhost_vsock_dev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"fb2e4154-6f80-42ad-a42d-a0c24ceb1ffa","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-25 16:20:28 +0000 UTC FinishedAt: 2026-06-25 16:51:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf7fn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_vsock_reset_owner","vhost_vsock_start","vhost_vsock_stop","vhost_vsock_dev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"fb2e4154-6f80-42ad-a42d-a0c24ceb1ffa","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-06-25 16:20:28 +0000 UTC FinishedAt: 2026-06-25 16:51:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*b591d91e-8325-48b9-a8a5-bd5f39d5e4f1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowf7fn2/series-workflowf7fn2-convert-artifact-142419617/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "9ed53a66-3432-4ee9-8702-654d6b885d6f", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowf7fn2/series-workflowf7fn2-build-action-3908959695/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowf7fn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_vsock_reset_owner","vhost_vsock_start","vhost_vsock_stop","vhost_vsock_dev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"fb2e4154-6f80-42ad-a42d-a0c24ceb1ffa","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-06-25 16:20:28 +0000 UTC FinishedAt: 2026-06-25 16:51:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*b591d91e-8325-48b9-a8a5-bd5f39d5e4f1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowf7fn2/series-workflowf7fn2-convert-artifact-142419617/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "9ed53a66-3432-4ee9-8702-654d6b885d6f", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowf7fn2/series-workflowf7fn2-build-action-3908959695/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowf7fn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_vsock_reset_owner","vhost_vsock_start","vhost_vsock_stop","vhost_vsock_dev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"fb2e4154-6f80-42ad-a42d-a0c24ceb1ffa","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-06-25 16:51:15 +0000 UTC FinishedAt: 2026-06-25 16:51:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf7fn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_vsock_reset_owner","vhost_vsock_start","vhost_vsock_stop","vhost_vsock_dev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"fb2e4154-6f80-42ad-a42d-a0c24ceb1ffa","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-06-25 16:51:15 +0000 UTC FinishedAt: 2026-06-25 16:51:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf7fn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_vsock_reset_owner","vhost_vsock_start","vhost_vsock_stop","vhost_vsock_dev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"fb2e4154-6f80-42ad-a42d-a0c24ceb1ffa","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-06-25 16:51:15 +0000 UTC FinishedAt: 2026-06-25 16:53:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf7fn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_vsock_reset_owner","vhost_vsock_start","vhost_vsock_stop","vhost_vsock_dev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"fb2e4154-6f80-42ad-a42d-a0c24ceb1ffa","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-06-25 16:51:15 +0000 UTC FinishedAt: 2026-06-25 16:51:53 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"fb2e4154-6f80-42ad-a42d-a0c24ceb1ffa","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowf7fn2/series-workflowf7fn2-convert-artifact-2433348852/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowf7fn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_vsock_reset_owner","vhost_vsock_start","vhost_vsock_stop","vhost_vsock_dev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"fb2e4154-6f80-42ad-a42d-a0c24ceb1ffa","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-06-25 16:53:18 +0000 UTC FinishedAt: 2026-06-25 16:55:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf7fn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_vsock_reset_owner","vhost_vsock_start","vhost_vsock_stop","vhost_vsock_dev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"fb2e4154-6f80-42ad-a42d-a0c24ceb1ffa","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-06-25 16:53:18 +0000 UTC FinishedAt: 2026-06-25 16:55:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*9ed53a66-3432-4ee9-8702-654d6b885d6f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowf7fn2/series-workflowf7fn2-build-action-3908959695/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },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-workflowf7fn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_vsock_reset_owner","vhost_vsock_start","vhost_vsock_stop","vhost_vsock_dev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"fb2e4154-6f80-42ad-a42d-a0c24ceb1ffa","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-06-25 16:55:19 +0000 UTC FinishedAt: 2026-06-25 16:55:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf7fn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_vsock_reset_owner","vhost_vsock_start","vhost_vsock_stop","vhost_vsock_dev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"fb2e4154-6f80-42ad-a42d-a0c24ceb1ffa","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-06-25 16:55:19 +0000 UTC FinishedAt: 2026-06-25 16:55:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf7fn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_vsock_reset_owner","vhost_vsock_start","vhost_vsock_stop","vhost_vsock_dev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"fb2e4154-6f80-42ad-a42d-a0c24ceb1ffa","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-06-25 16:55:19 +0000 UTC FinishedAt: 2026-06-25 17:19:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf7fn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_vsock_reset_owner","vhost_vsock_start","vhost_vsock_stop","vhost_vsock_dev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"fb2e4154-6f80-42ad-a42d-a0c24ceb1ffa","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-06-25 16:55:19 +0000 UTC FinishedAt: 2026-06-25 17:19:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*b591d91e-8325-48b9-a8a5-bd5f39d5e4f1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowf7fn2/series-workflowf7fn2-convert-artifact-2433348852/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "c38f466e-7eec-4d28-8482-1cca1ab1fcd5", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowf7fn2/series-workflowf7fn2-build-action-1162422720/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowf7fn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_vsock_reset_owner","vhost_vsock_start","vhost_vsock_stop","vhost_vsock_dev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"fb2e4154-6f80-42ad-a42d-a0c24ceb1ffa","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-06-25 16:55:19 +0000 UTC FinishedAt: 2026-06-25 17:18:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*b591d91e-8325-48b9-a8a5-bd5f39d5e4f1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowf7fn2/series-workflowf7fn2-convert-artifact-2433348852/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "c38f466e-7eec-4d28-8482-1cca1ab1fcd5", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowf7fn2/series-workflowf7fn2-build-action-1162422720/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowf7fn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_vsock_reset_owner","vhost_vsock_start","vhost_vsock_stop","vhost_vsock_dev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"fb2e4154-6f80-42ad-a42d-a0c24ceb1ffa","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-06-25 17:19:00 +0000 UTC FinishedAt: 2026-06-25 17:19:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf7fn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_vsock_reset_owner","vhost_vsock_start","vhost_vsock_stop","vhost_vsock_dev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"fb2e4154-6f80-42ad-a42d-a0c24ceb1ffa","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-06-25 17:19:00 +0000 UTC FinishedAt: 2026-06-25 17:19:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf7fn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_vsock_reset_owner","vhost_vsock_start","vhost_vsock_stop","vhost_vsock_dev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"fb2e4154-6f80-42ad-a42d-a0c24ceb1ffa","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-06-25 17:19:00 +0000 UTC FinishedAt: 2026-06-25 17:20:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf7fn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_vsock_reset_owner","vhost_vsock_start","vhost_vsock_stop","vhost_vsock_dev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"fb2e4154-6f80-42ad-a42d-a0c24ceb1ffa","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-06-25 17:19:00 +0000 UTC FinishedAt: 2026-06-25 17:20:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*c38f466e-7eec-4d28-8482-1cca1ab1fcd5,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowf7fn2/series-workflowf7fn2-build-action-1162422720/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },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-workflowf7fn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_vsock_reset_owner","vhost_vsock_start","vhost_vsock_stop","vhost_vsock_dev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"fb2e4154-6f80-42ad-a42d-a0c24ceb1ffa","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-06-25 17:20:58 +0000 UTC FinishedAt: 2026-06-25 20:25:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf7fn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_vsock_reset_owner","vhost_vsock_start","vhost_vsock_stop","vhost_vsock_dev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"fb2e4154-6f80-42ad-a42d-a0c24ceb1ffa","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-06-25 17:20:58 +0000 UTC FinishedAt: 2026-06-25 20:25:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_vsock_reset_owner","vhost_vsock_start","vhost_vsock_stop","vhost_vsock_dev_ioctl"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*9ed53a66-3432-4ee9-8702-654d6b885d6f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*c38f466e-7eec-4d28-8482-1cca1ab1fcd5,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowf7fn2/series-workflowf7fn2-build-action-3908959695/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowf7fn2/series-workflowf7fn2-build-action-1162422720/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowf7fn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_vsock_reset_owner","vhost_vsock_start","vhost_vsock_stop","vhost_vsock_dev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"fb2e4154-6f80-42ad-a42d-a0c24ceb1ffa","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-06-25 17:20:58 +0000 UTC FinishedAt: 2026-06-25 17:23:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf7fn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_vsock_reset_owner","vhost_vsock_start","vhost_vsock_stop","vhost_vsock_dev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"fb2e4154-6f80-42ad-a42d-a0c24ceb1ffa","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-06-25 17:20:58 +0000 UTC FinishedAt: 2026-06-25 17:21:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_vsock_reset_owner","vhost_vsock_start","vhost_vsock_stop","vhost_vsock_dev_ioctl"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowf7fn2/series-workflowf7fn2-convert-artifact-3807134493/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowf7fn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_vsock_reset_owner","vhost_vsock_start","vhost_vsock_stop","vhost_vsock_dev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"fb2e4154-6f80-42ad-a42d-a0c24ceb1ffa","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-06-25 17:20:58 +0000 UTC FinishedAt: 2026-06-25 17:20:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf7fn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_vsock_reset_owner","vhost_vsock_start","vhost_vsock_stop","vhost_vsock_dev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"fb2e4154-6f80-42ad-a42d-a0c24ceb1ffa","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-06-25 17:20:58 +0000 UTC FinishedAt: 2026-06-25 17:20:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf7fn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_vsock_reset_owner","vhost_vsock_start","vhost_vsock_stop","vhost_vsock_dev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"fb2e4154-6f80-42ad-a42d-a0c24ceb1ffa","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-06-25 17:20:58 +0000 UTC FinishedAt: 2026-06-25 17:20:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf7fn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_vsock_reset_owner","vhost_vsock_start","vhost_vsock_stop","vhost_vsock_dev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"fb2e4154-6f80-42ad-a42d-a0c24ceb1ffa","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-06-25 17:23:20 +0000 UTC FinishedAt: 2026-06-25 20:25:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf7fn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_vsock_reset_owner","vhost_vsock_start","vhost_vsock_stop","vhost_vsock_dev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"fb2e4154-6f80-42ad-a42d-a0c24ceb1ffa","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-06-25 17:23:20 +0000 UTC FinishedAt: 2026-06-25 20:24:53 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*9ed53a66-3432-4ee9-8702-654d6b885d6f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*c38f466e-7eec-4d28-8482-1cca1ab1fcd5,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowf7fn2/series-workflowf7fn2-build-action-3908959695/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowf7fn2/series-workflowf7fn2-build-action-1162422720/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowf7fn2/series-workflowf7fn2-convert-artifact-3807134493/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}