Name: series-workflowsw4zg Phase: Succeeded StartedAt: 2026-07-27 07:20:01 +0000 UTC FinishedAt: 2026-07-27 12:22:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsw4zg[0] Phase: Succeeded StartedAt: 2026-07-27 07:20:01 +0000 UTC FinishedAt: 2026-07-27 07:48:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsw4zg[0].run-triage Phase: Succeeded StartedAt: 2026-07-27 07:20:01 +0000 UTC FinishedAt: 2026-07-27 07:48:12 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "vfs", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git", "commit_hash": "24f3a09163caad1dde3f801f1bafc69f1991a357", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "AUDIT", "AUDITSYSCALL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "vfs", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git", "commit_hash": "24f3a09163caad1dde3f801f1bafc69f1991a357", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "AUDIT", "AUDITSYSCALL" ], "series_id": "24864c8b-db9e-43cd-a500-df7e1ff782f7" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "__audit_proctitle_free", "__audit_bprm" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDA3OjQ1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FVRElUJiMzNDssCiAgICAmIzM0O0FVRElUU1lTQ0FMTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19fYXVkaXRfcHJvY3RpdGxlX2ZyZWUmIzM0OywKICAgICYjMzQ7X19hdWRpdF9icHJtJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIGV4ZWN2ZSBwYXRoIHRvIGNsZWFyIHRoZSBhdWRpdCBwcm9jdGl0bGUgY29udGV4dCBiZWZvcmUgYGF1ZGl0X2Jwcm1gIGlzIGNhbGxlZC4gVGhpcyBmaXhlcyBhIHBvdGVudGlhbCBtZW1vcnkgbGVhayBvciBzdGF0ZSBpc3N1ZS4gVGhpcyBpcyByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwgY29kZSBpbiB0aGUga2VybmVsJiMzOTtzIGF1ZGl0IHN1YnN5c3RlbS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzo0NTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGVkNzQzZmNhODM1MGE3ZmM1NjBiNjFiYzg2YTNlZmMzM2YxMDdlOGFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCAyNyAwNzo0NTo0NCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9leGVjLmMgYi9mcy9leGVjLmNcbmluZGV4IGI5MmZlN2RiMTc2Y2ZmLi5iZDUxNDg5ZGVjMjMyYiAxMDA2NDRcbi0tLSBhL2ZzL2V4ZWMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvZXhlYy5jXG5AQCAtMTc0NCw2ICYjNDM7MTc0NCw4IEBAIHN0YXRpYyBpbnQgZXhlY19iaW5wcm0oc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSlcbiBcdFx0XHRmcHV0KGV4ZWMpO1xuIFx0fVxuIFxuJiM0MztcdC8qIGNsZWFyIHByb2N0aXRsZSBpbiBhdWRpdCBjb250ZXh0IHRvIGFsbG93IHJlcGxhY2VtZW50ICovXG4mIzQzO1x0YXVkaXRfcHJvY3RpdGxlX2ZyZWUoYXVkaXRfY29udGV4dCgpKTtcbiBcdGF1ZGl0X2Jwcm0oYnBybSk7XG4gXHR0cmFjZV9zY2hlZF9wcm9jZXNzX2V4ZWMoY3VycmVudCwgb2xkX3BpZCwgYnBybSk7XG4gXHRwdHJhY2VfZXZlbnQoUFRSQUNFX0VWRU5UX0VYRUMsIG9sZF92cGlkKTtcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2F1ZGl0LmggYi9pbmNsdWRlL2xpbnV4L2F1ZGl0LmhcbmluZGV4IDQ1YWJiMzcyMmQzMDRjLi4wM2FlNTYzY2EzNDg5YyAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvYXVkaXQuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9hdWRpdC5oXG5AQCAtMzIwLDYgJiM0MzszMjAsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYXVkaXRfY2ZnX2xzbShjb25zdCBzdHJ1Y3QgbHNtX2lkICpsc21pZCwgaW50IGZsYWdzKVxuIC8qIFRoZXNlIGFyZSBkZWZpbmVkIGluIGF1ZGl0c2MuYyAqL1xuIFx0XHRcdFx0LyogUHVibGljIEFQSSAqL1xuIGV4dGVybiBpbnQgIGF1ZGl0X2FsbG9jKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzayk7XG4mIzQzO2V4dGVybiB2b2lkIF9fYXVkaXRfcHJvY3RpdGxlX2ZyZWUoc3RydWN0IGF1ZGl0X2NvbnRleHQgKmNvbnRleHQpO1xuIGV4dGVybiB2b2lkIF9fYXVkaXRfZnJlZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spO1xuIGV4dGVybiB2b2lkIF9fYXVkaXRfdXJpbmdfZW50cnkodTggb3ApO1xuIGV4dGVybiB2b2lkIF9fYXVkaXRfdXJpbmdfZXhpdChpbnQgc3VjY2VzcywgbG9uZyBjb2RlKTtcbkBAIC0zNTMsNiAmIzQzOzM1NCwxMSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgYXVkaXRfZHVtbXlfY29udGV4dCh2b2lkKVxuIFx0dm9pZCAqcCA9IGF1ZGl0X2NvbnRleHQoKTtcbiBcdHJldHVybiAhcCB8fCAqKGludCAqKXA7XG4gfVxuJiM0MztzdGF0aWMgaW5saW5lIHZvaWQgYXVkaXRfcHJvY3RpdGxlX2ZyZWUoc3RydWN0IGF1ZGl0X2NvbnRleHQgKmNvbnRleHQpXG4mIzQzO3tcbiYjNDM7XHRpZiAodW5saWtlbHkoIWF1ZGl0X2R1bW15X2NvbnRleHQoKSkpXG4mIzQzO1x0XHRfX2F1ZGl0X3Byb2N0aXRsZV9mcmVlKGNvbnRleHQpO1xuJiM0Mzt9XG4gc3RhdGljIGlubGluZSB2b2lkIGF1ZGl0X2ZyZWUoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKVxuIHtcbiBcdGlmICh1bmxpa2VseSh0YXNrLVx1MDAzZWF1ZGl0X2NvbnRleHQpKVxuQEAgLTQ3MCw2ICYjNDM7NDc2LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGF1ZGl0X2Jwcm0oc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSlcbiBcdGlmICh1bmxpa2VseSghYXVkaXRfZHVtbXlfY29udGV4dCgpKSlcbiBcdFx0X19hdWRpdF9icHJtKGJwcm0pO1xuIH1cbiYjNDM7XG4gc3RhdGljIGlubGluZSBpbnQgYXVkaXRfc29ja2V0Y2FsbChpbnQgbmFyZ3MsIHVuc2lnbmVkIGxvbmcgKmFyZ3MpXG4ge1xuIFx0aWYgKHVubGlrZWx5KCFhdWRpdF9kdW1teV9jb250ZXh0KCkpKVxuQEAgLTYwNSw2ICYjNDM7NjEyLDggQEAgc3RhdGljIGlubGluZSBpbnQgYXVkaXRfYWxsb2Moc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKVxuIHtcbiBcdHJldHVybiAwO1xuIH1cbiYjNDM7c3RhdGljIGlubGluZSB2b2lkIGF1ZGl0X3Byb2N0aXRsZV9mcmVlKHN0cnVjdCBhdWRpdF9jb250ZXh0ICpjb250ZXh0KVxuJiM0Mzt7IH1cbiBzdGF0aWMgaW5saW5lIHZvaWQgYXVkaXRfZnJlZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spXG4geyB9XG4gc3RhdGljIGlubGluZSB2b2lkIGF1ZGl0X3VyaW5nX2VudHJ5KHU4IG9wKVxuZGlmZiAtLWdpdCBhL2tlcm5lbC9hdWRpdHNjLmMgYi9rZXJuZWwvYXVkaXRzYy5jXG5pbmRleCA2NjEwZTY2N2M3MjhhYS4uNjk0ODRhYjJjOGJjNWIgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYXVkaXRzYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYXVkaXRzYy5jXG5AQCAtOTEzLDcgJiM0Mzs5MTMsNyBAQCB2b2lkIGF1ZGl0X2ZpbHRlcl9pbm9kZXMoc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssIHN0cnVjdCBhdWRpdF9jb250ZXh0ICpjdHgpXG4gXHRyY3VfcmVhZF91bmxvY2soKTtcbiB9XG4gXG4tc3RhdGljIGlubGluZSB2b2lkIGF1ZGl0X3Byb2N0aXRsZV9mcmVlKHN0cnVjdCBhdWRpdF9jb250ZXh0ICpjb250ZXh0KVxuJiM0Mzt2b2lkIF9fYXVkaXRfcHJvY3RpdGxlX2ZyZWUoc3RydWN0IGF1ZGl0X2NvbnRleHQgKmNvbnRleHQpXG4ge1xuIFx0a2ZyZWUoY29udGV4dC1cdTAwM2Vwcm9jdGl0bGUudmFsdWUpO1xuIFx0Y29udGV4dC1cdTAwM2Vwcm9jdGl0bGUudmFsdWUgPSBOVUxMO1xuQEAgLTEwODYsNyAmIzQzOzEwODYsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYXVkaXRfZnJlZV9jb250ZXh0KHN0cnVjdCBhdWRpdF9jb250ZXh0ICpjb250ZXh0KVxuIHtcbiBcdC8qIHJlc2V0dGluZyBpcyBleHRyYSB3b3JrLCBidXQgaXQgaXMgbGlrZWx5IGp1c3Qgbm9pc2UgKi9cbiBcdGF1ZGl0X3Jlc2V0X2NvbnRleHQoY29udGV4dCk7XG4tXHRhdWRpdF9wcm9jdGl0bGVfZnJlZShjb250ZXh0KTtcbiYjNDM7XHRfX2F1ZGl0X3Byb2N0aXRsZV9mcmVlKGNvbnRleHQpO1xuIFx0ZnJlZV90cmVlX3JlZnMoY29udGV4dCk7XG4gXHRrZnJlZShjb250ZXh0LVx1MDAzZWZpbHRlcmtleSk7XG4gXHRrZnJlZShjb250ZXh0KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzo0NTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QVVESVQmIzM0OywKICAgICYjMzQ7QVVESVRTWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19hdWRpdF9wcm9jdGl0bGVfZnJlZSYjMzQ7LAogICAgJiMzNDtfX2F1ZGl0X2Jwcm0mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgZXhlY3ZlIHBhdGggdG8gY2xlYXIgdGhlIGF1ZGl0IHByb2N0aXRsZSBjb250ZXh0IGJlZm9yZSBgYXVkaXRfYnBybWAgaXMgY2FsbGVkLiBUaGlzIGZpeGVzIGEgcG90ZW50aWFsIG1lbW9yeSBsZWFrIG9yIHN0YXRlIGlzc3VlLiBUaGlzIGlzIHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbCBjb2RlIGluIHRoZSBrZXJuZWwmIzM5O3MgYXVkaXQgc3Vic3lzdGVtLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZWQ3NDNmY2E4MzUwYTdmYzU2MGI2MWJjODZhM2VmYzMzZjEwN2U4YQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gSnVsIDI3IDA3OjQ1OjQ0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZnMvZXhlYy5jIGIvZnMvZXhlYy5jCmluZGV4IGI5MmZlN2RiMTc2Y2ZmLi5iZDUxNDg5ZGVjMjMyYiAxMDA2NDQKLS0tIGEvZnMvZXhlYy5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2V4ZWMuYwpAQCAtMTc0NCw2ICYjNDM7MTc0NCw4IEBAIHN0YXRpYyBpbnQgZXhlY19iaW5wcm0oc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSkKIAkJCWZwdXQoZXhlYyk7CiAJfQogCiYjNDM7CS8qIGNsZWFyIHByb2N0aXRsZSBpbiBhdWRpdCBjb250ZXh0IHRvIGFsbG93IHJlcGxhY2VtZW50ICovCiYjNDM7CWF1ZGl0X3Byb2N0aXRsZV9mcmVlKGF1ZGl0X2NvbnRleHQoKSk7CiAJYXVkaXRfYnBybShicHJtKTsKIAl0cmFjZV9zY2hlZF9wcm9jZXNzX2V4ZWMoY3VycmVudCwgb2xkX3BpZCwgYnBybSk7CiAJcHRyYWNlX2V2ZW50KFBUUkFDRV9FVkVOVF9FWEVDLCBvbGRfdnBpZCk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2F1ZGl0LmggYi9pbmNsdWRlL2xpbnV4L2F1ZGl0LmgKaW5kZXggNDVhYmIzNzIyZDMwNGMuLjAzYWU1NjNjYTM0ODljIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2F1ZGl0LmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9hdWRpdC5oCkBAIC0zMjAsNiAmIzQzOzMyMCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhdWRpdF9jZmdfbHNtKGNvbnN0IHN0cnVjdCBsc21faWQgKmxzbWlkLCBpbnQgZmxhZ3MpCiAvKiBUaGVzZSBhcmUgZGVmaW5lZCBpbiBhdWRpdHNjLmMgKi8KIAkJCQkvKiBQdWJsaWMgQVBJICovCiBleHRlcm4gaW50ICBhdWRpdF9hbGxvYyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spOwomIzQzO2V4dGVybiB2b2lkIF9fYXVkaXRfcHJvY3RpdGxlX2ZyZWUoc3RydWN0IGF1ZGl0X2NvbnRleHQgKmNvbnRleHQpOwogZXh0ZXJuIHZvaWQgX19hdWRpdF9mcmVlKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzayk7CiBleHRlcm4gdm9pZCBfX2F1ZGl0X3VyaW5nX2VudHJ5KHU4IG9wKTsKIGV4dGVybiB2b2lkIF9fYXVkaXRfdXJpbmdfZXhpdChpbnQgc3VjY2VzcywgbG9uZyBjb2RlKTsKQEAgLTM1Myw2ICYjNDM7MzU0LDExIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBhdWRpdF9kdW1teV9jb250ZXh0KHZvaWQpCiAJdm9pZCAqcCA9IGF1ZGl0X2NvbnRleHQoKTsKIAlyZXR1cm4gIXAgfHwgKihpbnQgKilwOwogfQomIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBhdWRpdF9wcm9jdGl0bGVfZnJlZShzdHJ1Y3QgYXVkaXRfY29udGV4dCAqY29udGV4dCkKJiM0Mzt7CiYjNDM7CWlmICh1bmxpa2VseSghYXVkaXRfZHVtbXlfY29udGV4dCgpKSkKJiM0MzsJCV9fYXVkaXRfcHJvY3RpdGxlX2ZyZWUoY29udGV4dCk7CiYjNDM7fQogc3RhdGljIGlubGluZSB2b2lkIGF1ZGl0X2ZyZWUoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKQogewogCWlmICh1bmxpa2VseSh0YXNrLSZndDthdWRpdF9jb250ZXh0KSkKQEAgLTQ3MCw2ICYjNDM7NDc2LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGF1ZGl0X2Jwcm0oc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSkKIAlpZiAodW5saWtlbHkoIWF1ZGl0X2R1bW15X2NvbnRleHQoKSkpCiAJCV9fYXVkaXRfYnBybShicHJtKTsKIH0KJiM0MzsKIHN0YXRpYyBpbmxpbmUgaW50IGF1ZGl0X3NvY2tldGNhbGwoaW50IG5hcmdzLCB1bnNpZ25lZCBsb25nICphcmdzKQogewogCWlmICh1bmxpa2VseSghYXVkaXRfZHVtbXlfY29udGV4dCgpKSkKQEAgLTYwNSw2ICYjNDM7NjEyLDggQEAgc3RhdGljIGlubGluZSBpbnQgYXVkaXRfYWxsb2Moc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKQogewogCXJldHVybiAwOwogfQomIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBhdWRpdF9wcm9jdGl0bGVfZnJlZShzdHJ1Y3QgYXVkaXRfY29udGV4dCAqY29udGV4dCkKJiM0Mzt7IH0KIHN0YXRpYyBpbmxpbmUgdm9pZCBhdWRpdF9mcmVlKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaykKIHsgfQogc3RhdGljIGlubGluZSB2b2lkIGF1ZGl0X3VyaW5nX2VudHJ5KHU4IG9wKQpkaWZmIC0tZ2l0IGEva2VybmVsL2F1ZGl0c2MuYyBiL2tlcm5lbC9hdWRpdHNjLmMKaW5kZXggNjYxMGU2NjdjNzI4YWEuLjY5NDg0YWIyYzhiYzViIDEwMDY0NAotLS0gYS9rZXJuZWwvYXVkaXRzYy5jCiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9hdWRpdHNjLmMKQEAgLTkxMyw3ICYjNDM7OTEzLDcgQEAgdm9pZCBhdWRpdF9maWx0ZXJfaW5vZGVzKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCBzdHJ1Y3QgYXVkaXRfY29udGV4dCAqY3R4KQogCXJjdV9yZWFkX3VubG9jaygpOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgYXVkaXRfcHJvY3RpdGxlX2ZyZWUoc3RydWN0IGF1ZGl0X2NvbnRleHQgKmNvbnRleHQpCiYjNDM7dm9pZCBfX2F1ZGl0X3Byb2N0aXRsZV9mcmVlKHN0cnVjdCBhdWRpdF9jb250ZXh0ICpjb250ZXh0KQogewogCWtmcmVlKGNvbnRleHQtJmd0O3Byb2N0aXRsZS52YWx1ZSk7CiAJY29udGV4dC0mZ3Q7cHJvY3RpdGxlLnZhbHVlID0gTlVMTDsKQEAgLTEwODYsNyAmIzQzOzEwODYsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYXVkaXRfZnJlZV9jb250ZXh0KHN0cnVjdCBhdWRpdF9jb250ZXh0ICpjb250ZXh0KQogewogCS8qIHJlc2V0dGluZyBpcyBleHRyYSB3b3JrLCBidXQgaXQgaXMgbGlrZWx5IGp1c3Qgbm9pc2UgKi8KIAlhdWRpdF9yZXNldF9jb250ZXh0KGNvbnRleHQpOwotCWF1ZGl0X3Byb2N0aXRsZV9mcmVlKGNvbnRleHQpOwomIzQzOwlfX2F1ZGl0X3Byb2N0aXRsZV9mcmVlKGNvbnRleHQpOwogCWZyZWVfdHJlZV9yZWZzKGNvbnRleHQpOwogCWtmcmVlKGNvbnRleHQtJmd0O2ZpbHRlcmtleSk7CiAJa2ZyZWUoY29udGV4dCk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDA3OjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4OTEKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAyMDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBBdWRpdCBTeXN0ZW0gUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgZnMvZXhlYy5jYCwgYGluY2x1ZGUvbGludXgvYXVkaXQuaGAsIGFuZCBga2VybmVsL2F1ZGl0c2MuY2AuIEl0JiMzOTtzIHByb21vdGluZyBgYXVkaXRfcHJvY3RpdGxlX2ZyZWVgIHRvIGBfX2F1ZGl0X3Byb2N0aXRsZV9mcmVlYCBhbmQgc3RyYXRlZ2ljYWxseSBjYWxsaW5nIGl0IGZyb20gd2l0aGluIGBleGVjX2JpbnBybWAgaW4gYGZzL2V4ZWMuY2AgKmJlZm9yZSogdGhlIGBhdWRpdF9icHJtKGJwcm0pYCBjYWxsLiBUaGF0JiMzOTtzIGludGVyZXN0aW5nLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aHkuCgpGaXJzdCwgbGV0JiMzOTtzIGxvb2sgYXQgdGhlIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBga2VybmVsL2F1ZGl0c2MuY2AgcmVsaWVzIG9uIGBDT05GSUdfQVVESVRTWVNDQUxMYC4gIGBmcy9leGVjLmNgIGlzIGFsd2F5cyBjb21waWxlZCwgd2hpY2ggbWFrZXMgc2Vuc2UuIGBpbmNsdWRlL2xpbnV4L2F1ZGl0LmhgIGlzIGFsd2F5cyBpbmNsdWRlZCwgd2hpY2ggaXMgZXhwZWN0ZWQuIEhvd2V2ZXIsIHRoZSBgYXVkaXRfcHJvY3RpdGxlX2ZyZWVgIGZ1bmN0aW9uIGlzIGVmZmVjdGl2ZWx5IGEgbm8tb3AgdW5sZXNzIGVpdGhlciBgQ09ORklHX0FVRElUYCBvciBgQ09ORklHX0FVRElUU1lTQ0FMTGAgaXMgZW5hYmxlZC4gVGhhdCBzaW1wbGlmaWVzIHRoaW5ncyBhIGJpdDsgdGhlIG5vLW9wIGNvbmRpdGlvbiBnaXZlcyB1cyBhIGNsZWFyIHBhdGggZm9yIGNvbnRyb2wgZmxvdy4KCk5vdywgSSYjMzk7bGwgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhlIGBrZXJuZWwvTWFrZWZpbGVgIHRvIGNvbmZpcm0gdGhlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIG9mIGBhdWRpdHNjLmNgLiBJdCYjMzk7cyB1c3VhbGx5IGJldHRlciB0byBiZSBleHBsaWNpdCBhYm91dCB0aGVzZSB0aGluZ3MuIFdlIHdhbnQgdG8gYmUgc3VyZSB0aGF0IHdlIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBmdWxseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdWRpdHNjLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL01ha2VmaWxlPTk3PW9iai0kKENPTkZJR19BVURJVCkgJiM0Mzs9IGF1ZGl0Lm8gYXVkaXRmaWx0ZXIub1xua2VybmVsL01ha2VmaWxlOjk4Om9iai0kKENPTkZJR19BVURJVFNZU0NBTEwpICYjNDM7PSBhdWRpdHNjLm8gYXVkaXRfd2F0Y2gubyBhdWRpdF9mc25vdGlmeS5vIGF1ZGl0X3RyZWUub1xua2VybmVsL01ha2VmaWxlLTk5LW9iai0kKENPTkZJR19HQ09WX0tFUk5FTCkgJiM0Mzs9IGdjb3YvXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDc6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzUwOQoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKktlcm5lbCBBdWRpdGluZyBDb25maWd1cmF0aW9uIOKAkyBBIFF1aWNrIENoZWNrKioKClJpZ2h0LCBzbyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgc2l0dWF0aW9uIHdoZXJlIHdlIG5lZWQgYXVkaXQgc3lzdGVtIGNhbGwgbG9nZ2luZy4gVGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoZSBkZXBlbmRlbmN5IOKAkyB3ZSBuZWVkIHRvIHZlcmlmeSB0aGF0IGBDT05GSUdfQVVESVRTWVNDQUxMYCBpcyBwcm9wZXJseSBjb25maWd1cmVkLCBhbmQgdGhhdCBtZWFucyBkaXZpbmcgaW50byB0aGUgS2NvbmZpZyBmaWxlcywgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYGluaXRgIGRpcmVjdG9yeS4gV2UgbmVlZCB0byByYXBpZGx5IGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGVuc3VyZSB0aGUgYnVpbGQgc3lzdGVtIGtub3dzIHdoYXQmIzM5O3MgcmVxdWlyZWQgdG8gbWFrZSB0aGF0IG9wdGlvbiBhdmFpbGFibGUuIExldCYjMzk7cyBzZWUgd2hhdCBuZWVkcyB0byBiZSBpbiBwbGFjZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQVVESVRTWVNDQUxMJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5pdC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luaXQvS2NvbmZpZz01NDU9Y29uZmlnIEhBVkVfQVJDSF9BVURJVFNZU0NBTExcbi0tXG5pbml0L0tjb25maWctNTQ3LVxuaW5pdC9LY29uZmlnOjU0ODpjb25maWcgQVVESVRTWVNDQUxMXG5pbml0L0tjb25maWctNTQ5LVx0ZGVmX2Jvb2wgeVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDA3OjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3NzcKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOgoKKipDb25kaXRpb25hbCBEZWZpbml0aW9uIGFuZCBBdWRpdGluZyBMb2dpYyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBkZWZpbml0aW9uLCBhbmQgSSBzZWUgdGhhdCBgZGVmX2Jvb2wgeWAgaXMgZ29pbmcgdG8gYmUgc2V0IGlmICpib3RoKiBgQVVESVRgIGFuZCBgSEFWRV9BUkNIX0FVRElUU1lTQ0FMTGAgYXJlIGVuYWJsZWQuIFRoYXQmIzM5O3MgYSBwcmV0dHkgY2xlYXIgY29uZGl0aW9uYWwuIFRoaXMgbWVhbnMgdGhlIHN5c3RlbSYjMzk7cyBhdWRpdGluZyBmZWF0dXJlcyBhcmUgYWN0aXZhdGVkLCBhbmQgc3BlY2lmaWNhbGx5LCB0aGUgYXJjaGl0ZWN0dXJlIGhhcyBzdXBwb3J0IGZvciBhdWRpdCBzeXN0ZW0gY2FsbHMuIFRoaXMgbWFrZXMgc2Vuc2UuIFdlJiMzOTtyZSB0YWxraW5nIGFib3V0IHNldHRpbmcgdXAgYSBib29sZWFuIHZhcmlhYmxlLCBsaWtlbHkgdG8gY29udHJvbCBzb21lIGFzcGVjdCBvZiBhdWRpdCBmdW5jdGlvbmFsaXR5LiBUaGUgZGVwZW5kZW5jeSBvbiBib3RoIGNvbmRpdGlvbnMgaW5kaWNhdGVzIGEgbGV2ZWwgb2YgZ3JhbnVsYXJpdHkgLSBhdWRpdGluZyB3b24mIzM5O3QgYmUgdHJpZ2dlcmVkIHVubGVzcyBib3RoIHRoZSBnZW5lcmFsIGF1ZGl0aW5nIGZyYW1ld29yayAqYW5kKiBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgc3VwcG9ydCBhcmUgaW4gcGxhY2UuIFRoaXMgbWFrZXMgdGhlIG92ZXJhbGwgc3lzdGVtIGxlc3MgYnJpdHRsZSB0aGFuIGlmIGl0IHdlcmUgY29uZGl0aW9uYWwgb24gb25lIG9mIHRob3NlIGRlZmluaXRpb25zIGFsb25lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDA3OjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBBVURJVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luaXQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbml0L0tjb25maWc9NTI2PWNvbmZpZyBDUk9TU19NRU1PUllfQVRUQUNIXG4tLVxuaW5pdC9LY29uZmlnLTUzNS1cbmluaXQvS2NvbmZpZzo1MzY6Y29uZmlnIEFVRElUXG5pbml0L0tjb25maWctNTM3LVx0Ym9vbCBcJiMzNDtBdWRpdGluZyBzdXBwb3J0XCYjMzQ7XG4tLVxuaW5pdC9LY29uZmlnPTU0NT1jb25maWcgSEFWRV9BUkNIX0FVRElUU1lTQ0FMTFxuLS1cbmluaXQvS2NvbmZpZy01NDctXG5pbml0L0tjb25maWc6NTQ4OmNvbmZpZyBBVURJVFNZU0NBTExcbmluaXQvS2NvbmZpZy01NDktXHRkZWZfYm9vbCB5XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDc6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDE1NQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIHByZXNlbnRlZCBhcyBhIHN0cmVhbSBvZiB0aG91Z2h0OgoKKipDaGVja2luZyBEZXBlbmRlbmNpZXMgZm9yIEFVRElUU1lTQ0FMTCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBgQVVESVRTWVNDQUxMYCBtb2R1bGUgb3IgZnVuY3Rpb24gb3Igd2hhdGV2ZXIgaXQgaXMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aC4gQmVmb3JlIGRpdmluZyBkZWVwLCB0aGUgZmlyc3QgdGhpbmcgdGhhdCBhbHdheXMgY29tZXMgdG8gbWluZCBpcyB0aGUgZGVwZW5kZW5jaWVzLiBXaGVyZSBkb2VzIHRoaXMgdGhpbmcgbGl2ZT8gV2hhdCBvdGhlciBwaWVjZXMgb2YgdGhlIHN5c3RlbSByZWx5IG9uIGl0PyBXaGF0IGNvdWxkIGJyZWFrIGlmIEkgY2hhbmdlIGl0IG9yIG1vdmUgaXQsIG9yIGdvZCBmb3JiaWQsIHJlbW92ZSBpdD8gU28sIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgcnVubmluZyBhIHF1aWNrIGNoZWNrIG9uIGl0cyBkZXBlbmRlbmNpZXMuIEkmIzM5O20gZ29pbmcgdG8gcnVuIHRoZSBjb21tYW5kLCBsZXQmIzM5O3MgY2hlY2sgYGRlcGVuZHMgb25gIGZvciBgQVVESVRTWVNDQUxMYC4gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgaXRzIHJvbGUgaW4gdGhlIGVjb3N5c3RlbSBiZWZvcmUgSSBzdGFydCB0byBtYWtlIGFueSBqdWRnbWVudHMgb3IgZXZlbiBjb25zaWRlciB0aGUgbmV4dCBzdGVwcy4gR290dGEgdW5kZXJzdGFuZCB0aGUgbGFuZHNjYXBlIGZpcnN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2luaXQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDU0NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNTQ1Olx0Y29uZmlnIEhBVkVfQVJDSF9BVURJVFNZU0NBTExcbiA1NDY6XHRcdGJvb2xcbiA1NDc6XHRcbiA1NDg6XHRjb25maWcgQVVESVRTWVNDQUxMXG4gNTQ5Olx0XHRkZWZfYm9vbCB5XG4gNTUwOlx0XHRkZXBlbmRzIG9uIEFVRElUIFx1MDAyNlx1MDAyNiBIQVZFX0FSQ0hfQVVESVRTWVNDQUxMXG4gNTUxOlx0XHRzZWxlY3QgRlNOT1RJRllcbiA1NTI6XHRcbiA1NTM6XHRzb3VyY2UgXCYjMzQ7a2VybmVsL2lycS9LY29uZmlnXCYjMzQ7XG4gNTU0Olx0c291cmNlIFwmIzM0O2tlcm5lbC90aW1lL0tjb25maWdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDc6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDUzNwoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDczCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3Npbmc6CgoqKkFuYWx5emluZyB0aGUgQXVkaXQgSW1wYWN0KioKClJpZ2h0LCBzbyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGFuIGBBVURJVGAtcmVsYXRlZCBpc3N1ZS4gVGhlIHBhdGNoIHNwZWNpZmljYWxseSB0YXJnZXRzIGBleGVjX2JpbnBybWAgd2l0aGluIGBmcy9leGVjLmNgLiBHaXZlbiBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBrZXJuZWwgaW50ZXJuYWxzLCB0aGF0IGZ1bmN0aW9uJiMzOTtzIGRlZmluaXRlbHkgYSBjcml0aWNhbCBwYXRoIOKAkyBpdCYjMzk7cyByZWFjaGFibGUsIGFuZCBjaGFuZ2VzIHRoZXJlIHdpbGwgKmFic29sdXRlbHkqIGhhdmUgYW4gaW1wYWN0LiBUaGUgY29kZSBpcyBmdW5jdGlvbmFsLCBzbyBpdCB3aWxsIHdvcmsuIEkmIzM5O20gYXNzdW1pbmcgdGhpcyBwYXRjaCBpcyBmaXhpbmcgYSBtZW1vcnkgbGVhaywgbGlrZWx5IHJlbGF0ZWQgdG8gaG93IHRoZSBhdWRpdCBwcm9jdGl0bGUgaXMgaGFuZGxlZCBkdXJpbmcgYGV4ZWN2ZWAuIEkmIzM5O3ZlIHNlZW4gc2ltaWxhciBpc3N1ZXMgcG9wIHVwIGJlZm9yZS4KCkFscmlnaHQsIGxldCYjMzk7cyBwdWxsIHVwIGBleGVjX2JpbnBybWAgaW4gYGZzL2V4ZWMuY2AgYW5kIHRha2UgYSBjbG9zZXIgbG9vay4gSSYjMzk7bGwgbmVlZCB0byBjb25maXJtIHRoZSBleGFjdCBuYXR1cmUgb2YgdGhlIHByb2JsZW0gYW5kIHZlcmlmeSB0aGUgcGF0Y2gmIzM5O3MgaW1wbGVtZW50YXRpb24gdG8gc2VlIGlmIHRoaXMgc29sdmVzIHRoZSBpc3N1ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDc6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZXhlY19iaW5wcm0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9leGVjLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZXhlYy5jPTE0MjU9c3RhdGljIHN0cnVjdCBsaW51eF9iaW5wcm0gKmFsbG9jX2Jwcm0oaW50IGZkLCBzdHJ1Y3QgZmlsZW5hbWUgKmZpbGVuYW1lLCBpbnQgZmxhZ3MpXG4tLVxuZnMvZXhlYy5jLTE0NzYtXHQgKiBicHJtX2V4ZWN2ZSgpLiAgSW5kZWVkLCB0aGUga2VybmVsIHNob3VsZCBub3QgdHJ5IHRvIHBhcnNlIHRoZVxuZnMvZXhlYy5jOjE0Nzc6XHQgKiBjb250ZW50IG9mIHRoZSBmaWxlIHdpdGggZXhlY19iaW5wcm0oKSBub3IgY2hhbmdlIHRoZSBjYWxsaW5nXG5mcy9leGVjLmMtMTQ3OC1cdCAqIHRocmVhZCwgd2hpY2ggbWVhbnMgdGhhdCB0aGUgZm9sbG93aW5nIHNlY3VyaXR5IGZ1bmN0aW9ucyB3aWxsIG5vdFxuLS1cbmZzL2V4ZWMuYz0xNjc1PXN0YXRpYyBpbnQgc2VhcmNoX2JpbmFyeV9oYW5kbGVyKHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pXG4tLVxuZnMvZXhlYy5jLTE3MDgtLyogYmluZm10IGhhbmRsZXJzIHdpbGwgY2FsbCBiYWNrIGludG8gYmVnaW5fbmV3X2V4ZWMoKSBvbiBzdWNjZXNzLiAqL1xuZnMvZXhlYy5jOjE3MDk6c3RhdGljIGludCBleGVjX2JpbnBybShzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKVxuZnMvZXhlYy5jLTE3MTAte1xuLS1cbmZzL2V4ZWMuYz0xNzU2PXN0YXRpYyBpbnQgYnBybV9leGVjdmUoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSlcbi0tXG5mcy9leGVjLmMtMTc2NC1cdC8qXG5mcy9leGVjLmM6MTc2NTpcdCAqIENoZWNrIGZvciB1bnNhZmUgZXhlY3V0aW9uIHN0YXRlcyBiZWZvcmUgZXhlY19iaW5wcm0oKSwgd2hpY2hcbmZzL2V4ZWMuYy0xNzY2LVx0ICogd2lsbCBjYWxsIGJhY2sgaW50byBiZWdpbl9uZXdfZXhlYygpLCBpbnRvIGJwcm1fY3JlZHNfZnJvbV9maWxlKCksXG4tLVxuZnMvZXhlYy5jLTE3NzktXG5mcy9leGVjLmM6MTc4MDpcdHJldHZhbCA9IGV4ZWNfYmlucHJtKGJwcm0pO1xuZnMvZXhlYy5jLTE3ODEtXHRpZiAocmV0dmFsIFx1MDAzYyAwKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MjQ5CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMjQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRXhlY3ZlIEZsb3cgYW5kIEF1ZGl0IFRpdGxlIEZyZWVpbmcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGhvdyBpdCBpbnRlZ3JhdGVzIGludG8gdGhlIGBleGVjdmVgIHN5c3RlbSBjYWxsIGZsb3cuIFRoZSBjcnVjaWFsIHRoaW5nIGhlcmUgaXMgYGV4ZWNfYmlucHJtYCB3aGljaCBpcyBjYWxsZWQgYnkgYGJwcm1fZXhlY3ZlYCwgYW5kIHRoYXQmIzM5O3MgY2FsbGVkIGJ5IGBkb19leGVjdmVhdF9jb21tb25gLiBUaGF0JiMzOTtzIG15IGNvcmUgYGV4ZWN2ZWAgcGF0aC4gVGhlIHBhdGNoIHNwZWNpZmljYWxseSBjYWxscyBgYXVkaXRfcHJvY3RpdGxlX2ZyZWUoYXVkaXRfY29udGV4dCgpKWAgd2l0aGluIGBleGVjX2JpbnBybWAuIFNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCwgZnVuY3Rpb25hbGx5LgoKTm93LCBJIG5lZWQgdG8gcGljayBnb29kIHRhcmdldHMgZm9yIGZ1cnRoZXIgYW5hbHlzaXMsIHNwZWNpZmljYWxseSBBUEkgZW50cnkgcG9pbnRzLiBUaGUgcHJvbXB0IGFjdHVhbGx5IHNhaWQgdG8gcHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIGVudHJ5cG9pbnQgZnVuY3Rpb25zLgoKSSBzdGFydGVkIGJ5IGNoZWNraW5nIGlmIGBleGVjX2JpbnBybWAgd2FzIHN0YXRpYy4gWWVwLCBpdCYjMzk7cyBzdGF0aWMuIFNhbWUgZm9yIGBicHJtX2V4ZWN2ZWAgYW5kIGBkb19leGVjdmVhdF9jb21tb25gLiBBbGwgc3RhdGljLCB3aGljaCBtZWFucyB0aGV5IGFyZSBsaWtlbHkgaW50ZXJuYWwgaGVscGVycywgc28gSSBtYXkgbm90IHdhbnQgdG8gdGFyZ2V0IHRoZW0uCgpJIGNoZWNrZWQgYGRvX2V4ZWN2ZWAsIGFuZCBpdCYjMzk7cyAqbm90KiBzdGF0aWMsIHNvIGl04oCZcyBsaWtlbHkgdGhlIEFQSSBlbnRyeXBvaW50IEkgd2FudC4gQW5kIGp1c3QgdG8gY29uZmlybSwgSSBhbHNvIGZvdW5kIHRoYXQgYF9fYXVkaXRfcHJvY3RpdGxlX2ZyZWVgIGlzIG5vbi1zdGF0aWMgYXMgd2VsbC4KCk5vdywgSSYjMzk7bSBnb2luZyB0byBsb29rIGF0IGBkb19leGVjdmVgIGluIGBmcy9leGVjLmNgIHRvIHNlZSB3aGVyZSB0aGUgZnVuY3Rpb24gbGl2ZXMgYW5kIHRoZSBmdWxsIGNvbnRleHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDA3OjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RvX2V4ZWN2ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2V4ZWMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9leGVjLmM9NDAyPXN0YXRpYyBpbnQgYnBybV9zdGFja19saW1pdHMoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSlcbi0tXG5mcy9leGVjLmMtNDM0LVx0ICogYXJnYyBjYW4gbmV2ZXIgYmUgMCwgdG8ga2VlcCB0aGVtIGZyb20gd2Fsa2luZyBlbnZwIGJ5IGFjY2lkZW50LlxuZnMvZXhlYy5jOjQzNTpcdCAqIFNlZSBkb19leGVjdmVhdF9jb21tb24oKS5cbmZzL2V4ZWMuYy00MzYtXHQgKi9cbi0tXG5mcy9leGVjLmM9MTc1Nj1zdGF0aWMgaW50IGJwcm1fZXhlY3ZlKHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pXG4tLVxuZnMvZXhlYy5jLTE4MDktXG5mcy9leGVjLmM6MTgxMDpzdGF0aWMgaW50IGRvX2V4ZWN2ZWF0X2NvbW1vbihpbnQgZmQsIHN0cnVjdCBmaWxlbmFtZSAqZmlsZW5hbWUsXG5mcy9leGVjLmMtMTgxMS1cdFx0XHQgICAgICBzdHJ1Y3QgdXNlcl9hcmdfcHRyIGFyZ3YsXG4tLVxuZnMvZXhlYy5jPTE5NDU9U1lTQ0FMTF9ERUZJTkUzKGV4ZWN2ZSxcbi0tXG5mcy9leGVjLmMtMTk1MC1cdENMQVNTKGZpbGVuYW1lLCBuYW1lKShmaWxlbmFtZSk7XG5mcy9leGVjLmM6MTk1MTpcdHJldHVybiBkb19leGVjdmVhdF9jb21tb24oQVRfRkRDV0QsIG5hbWUsXG5mcy9leGVjLmMtMTk1Mi1cdFx0XHRcdCAgbmF0aXZlX2FyZyhhcmd2KSwgbmF0aXZlX2FyZyhlbnZwKSwgMCk7XG4tLVxuZnMvZXhlYy5jPTE5NTU9U1lTQ0FMTF9ERUZJTkU1KGV4ZWN2ZWF0LFxuLS1cbmZzL2V4ZWMuYy0xOTYxLVx0Q0xBU1MoZmlsZW5hbWVfdWZsYWdzLCBuYW1lKShmaWxlbmFtZSwgZmxhZ3MpO1xuZnMvZXhlYy5jOjE5NjI6XHRyZXR1cm4gZG9fZXhlY3ZlYXRfY29tbW9uKGZkLCBuYW1lLFxuZnMvZXhlYy5jLTE5NjMtXHRcdFx0XHQgIG5hdGl2ZV9hcmcoYXJndiksIG5hdGl2ZV9hcmcoZW52cCksIGZsYWdzKTtcbi0tXG5mcy9leGVjLmM9MTk3Mz1DT01QQVRfU1lTQ0FMTF9ERUZJTkUzKGV4ZWN2ZSwgY29uc3QgY2hhciBfX3VzZXIgKiwgZmlsZW5hbWUsXG4tLVxuZnMvZXhlYy5jLTE5NzctXHRDTEFTUyhmaWxlbmFtZSwgbmFtZSkoZmlsZW5hbWUpO1xuZnMvZXhlYy5jOjE5Nzg6XHRyZXR1cm4gZG9fZXhlY3ZlYXRfY29tbW9uKEFUX0ZEQ1dELCBuYW1lLFxuZnMvZXhlYy5jLTE5NzktXHRcdFx0XHQgIGNvbXBhdF9hcmcoYXJndiksIGNvbXBhdF9hcmcoZW52cCksIDApO1xuLS1cbmZzL2V4ZWMuYz0xOTgyPUNPTVBBVF9TWVNDQUxMX0RFRklORTUoZXhlY3ZlYXQsIGludCwgZmQsXG4tLVxuZnMvZXhlYy5jLTE5ODgtXHRDTEFTUyhmaWxlbmFtZV91ZmxhZ3MsIG5hbWUpKGZpbGVuYW1lLCBmbGFncyk7XG5mcy9leGVjLmM6MTk4OTpcdHJldHVybiBkb19leGVjdmVhdF9jb21tb24oZmQsIG5hbWUsXG5mcy9leGVjLmMtMTk5MC1cdFx0XHRcdCAgY29tcGF0X2FyZyhhcmd2KSwgY29tcGF0X2FyZyhlbnZwKSwgZmxhZ3MpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDg1CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk5hdmlnYXRpbmcgdGhlIEV4ZWN2ZSBMYW5kc2NhcGUqKgoKT2theSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gd3JhcCBteSBoZWFkIGFyb3VuZCB0aGlzIGtlcm5lbCBjaGFuZ2UuLi4gZmlyc3QgdGhvdWdodDogaGFuZyBvbiwgd2hlcmUgZGlkIGBkb19leGVjdmVgIGdvPyBEb2VzbiYjMzk7dCBzZWVtIHRvIGJlIGEgdGhpbmcgYW55bW9yZS4gQWgsIHJpZ2h0LCBpdOKAmXMgYmVlbiBzdWJzdW1lZCBieSBgZG9fZXhlY3ZlYXRfY29tbW9uYCwgd2hpY2ggaXMgbm93ICpzdGF0aWMqLiBUaGF0IG1ha2VzIHNlbnNlIGluIHRlcm1zIG9mIG1vZHVsYXJpdHkuIEJ1dCB0aGUgcmVhbCBlbnRyeSBwb2ludHMsIGZvciBleHRlcm5hbCBpbnRlcmFjdGlvbiwgYXJlIHRoZSBzeXN0ZW0gY2FsbHM6IGBzeXNfZXhlY3ZlYCBhbmQgYHN5c19leGVjdmVhdGAuIEdvdCBpdC4KCk5vdywgYHN5c19leGVjdmVgIGlzIGNsZWFybHkgYSBzeXN0ZW0gY2FsbCwgd2hpY2ggaXMgbXkgYnJlYWQgYW5kIGJ1dHRlci4gSSBuZWVkIGEgZ29vZCBzeW1ib2wgdG8gZm9jdXMgb24gd2hlbiByZXZpZXdpbmcgdGhlIGNoYW5nZXMuIGBfX2F1ZGl0X3Byb2N0aXRsZV9mcmVlYCBpcyBsb29raW5nIHByb21pc2luZy4gSXQmIzM5O3MgKm5vdCogc3RhdGljLCBzbyBpdCYjMzk7cyBsaWtlbHkgdG8gYmUgZXhwb3NlZCwgYW5kIHRoaXMgKnBhdGNoKiBkaXJlY3RseSBtb2RpZmllcyBpdC4gWWVzLCB0aGF0JiMzOTtzIGRlZmluaXRlbHkgYSBzeW1ib2wgdG8gZm9sbG93LgoKV2FpdCBhIHNlY29uZOKApiBJIGtub3cgSSYjMzk7dmUgc2VlbiB0aGF0IG5hbWUgYmVmb3JlLiBSaWdodCwgYF9fYXVkaXRfcHJvY3RpdGxlX2ZyZWVgIGlzIGNhbGxlZCAqZnJvbSogYGV4ZWNfYmlucHJtYC4gT2theSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhhdCByZWxhdGlvbnNoaXAgYW5kIHZlcmlmeSB0aGF0IGFzc29jaWF0aW9uLiBMZXQmIzM5O3MgZGlnIGludG8gYGtlcm5lbC9hdWRpdHNjLmNgIGFuZCBzcGVjaWZpY2FsbHkgY2hlY2sgb3V0IGhvdyBgX19hdWRpdF9wcm9jdGl0bGVfZnJlZWAgaXMgZGVmaW5lZCBhbmQgdXNlZC4gTGV0JiMzOTtzIHNlZSBob3cgdGhpcyBhbGwgY29ubmVjdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDA3OjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19fYXVkaXRfcHJvY3RpdGxlX2ZyZWUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYXVkaXRzYy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9hdWRpdHNjLmM9OTAwPXZvaWQgYXVkaXRfZmlsdGVyX2lub2RlcyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywgc3RydWN0IGF1ZGl0X2NvbnRleHQgKmN0eClcbi0tXG5rZXJuZWwvYXVkaXRzYy5jLTkxNS1cbmtlcm5lbC9hdWRpdHNjLmM6OTE2OnZvaWQgX19hdWRpdF9wcm9jdGl0bGVfZnJlZShzdHJ1Y3QgYXVkaXRfY29udGV4dCAqY29udGV4dClcbmtlcm5lbC9hdWRpdHNjLmMtOTE3LXtcbi0tXG5rZXJuZWwvYXVkaXRzYy5jPTEwODU9c3RhdGljIGlubGluZSB2b2lkIGF1ZGl0X2ZyZWVfY29udGV4dChzdHJ1Y3QgYXVkaXRfY29udGV4dCAqY29udGV4dClcbi0tXG5rZXJuZWwvYXVkaXRzYy5jLTEwODgtXHRhdWRpdF9yZXNldF9jb250ZXh0KGNvbnRleHQpO1xua2VybmVsL2F1ZGl0c2MuYzoxMDg5Olx0X19hdWRpdF9wcm9jdGl0bGVfZnJlZShjb250ZXh0KTtcbmtlcm5lbC9hdWRpdHNjLmMtMTA5MC1cdGZyZWVfdHJlZV9yZWZzKGNvbnRleHQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MTY0CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogODIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBBdWRpdCBQcm9jZXNzIFRpdGxlIEZyZWVpbmcgYW5kIFJlbGF0ZWQgQ2FsbHMqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBhdWRpdC1yZWxhdGVkIGNvZGUsIGFuZCBpdCBsb29rcyBsaWtlIGBfX2F1ZGl0X3Byb2N0aXRsZV9mcmVlYCBpcyBleHBvc2VkIGFuZCBhY3RpdmVseSBiZWluZyBjYWxsZWQuICBUaGF0JiMzOTtzIG15IHN0YXJ0aW5nIHBvaW50LiBOb3csIEkmIzM5O20gdHJ5aW5nIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55ICpvdGhlciogbm9uLXN0YXRpYyBmdW5jdGlvbnMgcmVsYXRlZCB0byB0aGlzIHByb2Nlc3MgdGl0bGUgbWFuYWdlbWVudCwganVzdCB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZS4gTXkgaW1tZWRpYXRlIG5leHQgb2JzZXJ2YXRpb24gaXMgdGhhdCBgYXVkaXRfYnBybWAgaXMgY2FsbGVkIGRpcmVjdGx5ICphZnRlciogYGF1ZGl0X3Byb2N0aXRsZV9mcmVlKGF1ZGl0X2NvbnRleHQoKSlgLiBJbnRydWlnaW5nLgoKSSBrbm93IGBhdWRpdF9icHJtYCBpcyBkZWZpbmVkIGFzIGFuIGlubGluZSBmdW5jdGlvbi4gSW5saW5lIGZ1bmN0aW9ucyBjYW4gYmUgZGVjZXB0aXZlLCBhcyB0aGV5IGNhbiBzb21ldGltZXMgb2JzY3VyZSB0aGUgdHJ1ZSBmdW5jdGlvbiB0aGF0JiMzOTtzIGJlaW5nIGNhbGxlZCwgc28gbm93IEkgYW0gZXhhbWluaW5nIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgYXVkaXRfYnBybWAuIEkgY2FuIHNlZSBmcm9tIGhlcmUgdGhhdCBpdCYjMzk7cyBqdXN0IGEgd3JhcHBlciBmb3IgYF9fYXVkaXRfYnBybWAsIHNvIEkgcmVhbGx5IG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGhhcHBlbmluZyB3aXRoaW4gYF9fYXVkaXRfYnBybWAgdG8gZ3Jhc3AgdGhlIGZsb3cgaGVyZS4gU28gbGV0JiMzOTtzIGNoZWNrIG91dCBgX19hdWRpdF9icHJtYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDc6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X19hdWRpdF9icHJtJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2F1ZGl0c2MuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYXVkaXRzYy5jPTI1ODk9dm9pZCBfX2F1ZGl0X2lwY19zZXRfcGVybSh1bnNpZ25lZCBsb25nIHFieXRlcywgdWlkX3QgdWlkLCBnaWRfdCBnaWQsIHVtb2RlX3QgbW9kZSlcbi0tXG5rZXJuZWwvYXVkaXRzYy5jLTI1OTktXG5rZXJuZWwvYXVkaXRzYy5jOjI2MDA6dm9pZCBfX2F1ZGl0X2Jwcm0oc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSlcbmtlcm5lbC9hdWRpdHNjLmMtMjYwMS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDA3OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc2MjQKCQkJCQkJCW91dHB1dDogMTExCgkJCQkJCQl0aG91Z2h0czogNTY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBBdWRpdCBTdWJzeXN0ZW0gZm9yIEZ1enppbmcqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBpbnR1aXRpb24gcG9pbnRzIHRvIGBfX2F1ZGl0X2Jwcm1gIGFzIGEgc29saWQgZm9jdXMgc3ltYm9sIGZvciBmdXp6aW5nLiBHaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSBwYXRjaCwgSSBuZWVkIHRvIHZlcmlmeSB3aGljaCBjb25maWd1cmF0aW9ucyBhcmUgZXNzZW50aWFsIGZvciByZWFjaGluZyB0aGlzIGNvZGUgcGF0aC4KCkZpcnN0LCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gYEFVRElUU1lTQ0FMTGAgcmVsaWVzIG9uIGJvdGggYEFVRElUYCBhbmQgYEhBVkVfQVJDSF9BVURJVFNZU0NBTExgLiBUaGUgbGF0dGVyIGlzIHR5cGljYWxseSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMuIFNpbmNlIGBBVURJVFNZU0NBTExgIGlzICppbXBsaWNpdGx5KiBlbmFibGVkIGFzIGBkZWZfYm9vbCB5YCBpZiBgQVVESVRgIGFuZCBgSEFWRV9BUkNIX0FVRElUU1lTQ0FMTGAgYXJlIG9uLCB0aGUga2V5IGNvbmZpZ3VyYXRpb25zIHRvIGV4cGxpY2l0bHkgZW5hYmxlIGFwcGVhciB0byBiZSBgQVVESVRgIGFuZCBgQVVESVRTWVNDQUxMYC4gSSYjMzk7dmUgY29uZmlybWVkIGJvdGggYEFVRElUU1lTQ0FMTGAgYW5kIGBBVURJVGAgYXJlLCBpbiBmYWN0LCBjb25maWd1cmFibGUgb3B0aW9ucy4KCk15IGluaXRpYWwgYXNzZXNzbWVudCB3b3VsZCBiZToKCiogICAqKldvcnRoRnV6emluZyoqOiBUcnVlCiogICAqKkZvY3VzU3ltYm9scyoqOiBgX19hdWRpdF9wcm9jdGl0bGVfZnJlZWAsIGBfX2F1ZGl0X2Jwcm1gCiogICAqKkVuYWJsZUNvbmZpZ3MqKjogYEFVRElUYCwgYEFVRElUU1lTQ0FMTGAKKiAgICoqUmVhc29uaW5nKio6IFRoZSBwYXRjaCB0b3VjaGVzIHRoZSBjb3JlIGBleGVjdmVgIHBhdGgsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGF1ZGl0IHN1YnN5c3RlbS4gSXQgbW9kaWZpZXMgdGhlIGNvZGUgdG8gY2xlYXIgdGhlIGF1ZGl0IHByb2N0aXRsZSBjb250ZXh0ICpiZWZvcmUqIGBhdWRpdF9icHJtYCBpcyBpbnZva2VkLCB3aGljaCBhZGRyZXNzZXMgYSBwb3RlbnRpYWwgbWVtb3J5IGxlYWsgb3Igc3RhdGUgY29ycnVwdGlvbiBpc3N1ZS4gVGhpcyBpcyByZWFjaGFibGUsIGZ1bmN0aW9uYWwgY29kZSB3aXRoaW4gdGhlIGtlcm5lbCYjMzk7cyBhdWRpdGluZy4KCkhvd2V2ZXIsIGEgY2xvc2VyIGxvb2sgYXQgYF9fYXVkaXRfcHJvY3RpdGxlX2ZyZWVgIHJldmVhbHMgaXQmIzM5O3MgYSB2ZXJ5IHNpbXBsZSBmdW5jdGlvbi4gSXQmIzM5O3MgZXNzZW50aWFsbHkganVzdCBga2ZyZWVgIG9uIGEgYE5VTExgIGNoZWNrLiBGdXp6aW5nIHRoaXMgZGlyZWN0bHkgbWlnaHQgbm90IGJlIHZlcnkgcHJvZHVjdGl2ZS4gYF9fYXVkaXRfYnBybWAsIG9uIHRoZSBvdGhlciBoYW5kLCBpcyB0aGUgY2VudHJhbCBhdWRpdCBmdW5jdGlvbiBjYWxsZWQgZHVyaW5nIGBleGVjdmVgLCBtYWtpbmcgaXQgYSBtb3JlIGZydWl0ZnVsIHRhcmdldC4gTmV2ZXJ0aGVsZXNzLCBJJiMzOTtsbCBpbmNsdWRlIGJvdGggc2luY2UgYF9fYXVkaXRfcHJvY3RpdGxlX2ZyZWVgIGlzIHRoZSBvbmUgbW9kaWZpZWQgYW5kIG1pZ2h0IHJldmVhbCBpbnRlcmFjdGlvbiB3aXRoIG90aGVyIGZ1bmN0aW9ucy4KCkxldCYjMzk7cyBxdWlja2x5IHJlY29uZmlybSBhYm91dCBgQVVESVRTWVNDQUxMYCBhZ2Fpbiwgc2luY2UgaXQmIzM5O3MgYGRlZl9ib29sIHlgIGl0IHdpbGwgYmUgYXV0b21hdGljYWxseSBzZXQgdG8gYHlgIGlmIGBBVURJVGAgaXMuIEl0JiMzOTtzIHNhZmUgdG8gaW5jbHVkZSBpbiB0aGUgbGlzdCBmb3IgY2xhcml0eS4gSSYjMzk7bGwgcmUtdmVyaWZ5IGl0JiMzOTtzIGVuYWJsZWQgaW4gYGluaXQvS2NvbmZpZ2AgdG8gYmUgY2VydGFpbi4gWWVzLCBhbGwgaXMgZ29vZC4KCkkmIzM5O3ZlIGNoZWNrZWQgZm9yIGFueSBvdGhlciByZWxldmFudCBjb25maWd1cmF0aW9ucywgYW5kIEkgdGhpbmsgd2UmIzM5O3JlIGRvbmUuIExldCYjMzk7cyBzZW5kIHRoZSByZXN1bHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QVVESVQmIzM0OywKICAgICYjMzQ7QVVESVRTWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19hdWRpdF9wcm9jdGl0bGVfZnJlZSYjMzQ7LAogICAgJiMzNDtfX2F1ZGl0X2Jwcm0mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgZXhlY3ZlIHBhdGggdG8gY2xlYXIgdGhlIGF1ZGl0IHByb2N0aXRsZSBjb250ZXh0IGJlZm9yZSBgYXVkaXRfYnBybWAgaXMgY2FsbGVkLiBUaGlzIGZpeGVzIGEgcG90ZW50aWFsIG1lbW9yeSBsZWFrIG9yIHN0YXRlIGlzc3VlLiBUaGlzIGlzIHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbCBjb2RlIGluIHRoZSBrZXJuZWwmIzM5O3MgYXVkaXQgc3Vic3lzdGVtLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtBVURJVCYjMzQ7LAogICAgJiMzNDtBVURJVFNZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX2F1ZGl0X3Byb2N0aXRsZV9mcmVlJiMzNDssCiAgICAmIzM0O19fYXVkaXRfYnBybSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBleGVjdmUgcGF0aCB0byBjbGVhciB0aGUgYXVkaXQgcHJvY3RpdGxlIGNvbnRleHQgYmVmb3JlIGBhdWRpdF9icHJtYCBpcyBjYWxsZWQuIFRoaXMgZml4ZXMgYSBwb3RlbnRpYWwgbWVtb3J5IGxlYWsgb3Igc3RhdGUgaXNzdWUuIFRoaXMgaXMgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsIGNvZGUgaW4gdGhlIGtlcm5lbCYjMzk7cyBhdWRpdCBzdWJzeXN0ZW0uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzo0NTo0NS42NTQzNjUxNjlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzMyMzA5NDI4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJBVURJVFwiLFxuICAgIFwiQVVESVRTWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19hdWRpdF9wcm9jdGl0bGVfZnJlZVwiLFxuICAgIFwiX19hdWRpdF9icHJtXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgZXhlY3ZlIHBhdGggdG8gY2xlYXIgdGhlIGF1ZGl0IHByb2N0aXRsZSBjb250ZXh0IGJlZm9yZSBgYXVkaXRfYnBybWAgaXMgY2FsbGVkLiBUaGlzIGZpeGVzIGEgcG90ZW50aWFsIG1lbW9yeSBsZWFrIG9yIHN0YXRlIGlzc3VlLiBUaGlzIGlzIHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbCBjb2RlIGluIHRoZSBrZXJuZWwncyBhdWRpdCBzdWJzeXN0ZW0uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDA3OjQ1OjQ1LjY1NDM3MTE2OVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjYyNzMzMDcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZWQ3NDNmY2E4MzUwYTdmYzU2MGI2MWJjODZhM2VmYzMzZjEwN2U4YVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEp1bCAyNyAwNzo0NTo0NCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9mcy9leGVjLmMgYi9mcy9leGVjLmNcXG5pbmRleCBiOTJmZTdkYjE3NmNmZi4uYmQ1MTQ4OWRlYzIzMmIgMTAwNjQ0XFxuLS0tIGEvZnMvZXhlYy5jXFxuKysrIGIvZnMvZXhlYy5jXFxuQEAgLTE3NDQsNiArMTc0NCw4IEBAIHN0YXRpYyBpbnQgZXhlY19iaW5wcm0oc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSlcXG4gXFx0XFx0XFx0ZnB1dChleGVjKTtcXG4gXFx0fVxcbiBcXG4rXFx0LyogY2xlYXIgcHJvY3RpdGxlIGluIGF1ZGl0IGNvbnRleHQgdG8gYWxsb3cgcmVwbGFjZW1lbnQgKi9cXG4rXFx0YXVkaXRfcHJvY3RpdGxlX2ZyZWUoYXVkaXRfY29udGV4dCgpKTtcXG4gXFx0YXVkaXRfYnBybShicHJtKTtcXG4gXFx0dHJhY2Vfc2NoZWRfcHJvY2Vzc19leGVjKGN1cnJlbnQsIG9sZF9waWQsIGJwcm0pO1xcbiBcXHRwdHJhY2VfZXZlbnQoUFRSQUNFX0VWRU5UX0VYRUMsIG9sZF92cGlkKTtcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9hdWRpdC5oIGIvaW5jbHVkZS9saW51eC9hdWRpdC5oXFxuaW5kZXggNDVhYmIzNzIyZDMwNGMuLjAzYWU1NjNjYTM0ODljIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvYXVkaXQuaFxcbisrKyBiL2luY2x1ZGUvbGludXgvYXVkaXQuaFxcbkBAIC0zMjAsNiArMzIwLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGF1ZGl0X2NmZ19sc20oY29uc3Qgc3RydWN0IGxzbV9pZCAqbHNtaWQsIGludCBmbGFncylcXG4gLyogVGhlc2UgYXJlIGRlZmluZWQgaW4gYXVkaXRzYy5jICovXFxuIFxcdFxcdFxcdFxcdC8qIFB1YmxpYyBBUEkgKi9cXG4gZXh0ZXJuIGludCAgYXVkaXRfYWxsb2Moc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKTtcXG4rZXh0ZXJuIHZvaWQgX19hdWRpdF9wcm9jdGl0bGVfZnJlZShzdHJ1Y3QgYXVkaXRfY29udGV4dCAqY29udGV4dCk7XFxuIGV4dGVybiB2b2lkIF9fYXVkaXRfZnJlZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spO1xcbiBleHRlcm4gdm9pZCBfX2F1ZGl0X3VyaW5nX2VudHJ5KHU4IG9wKTtcXG4gZXh0ZXJuIHZvaWQgX19hdWRpdF91cmluZ19leGl0KGludCBzdWNjZXNzLCBsb25nIGNvZGUpO1xcbkBAIC0zNTMsNiArMzU0LDExIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBhdWRpdF9kdW1teV9jb250ZXh0KHZvaWQpXFxuIFxcdHZvaWQgKnAgPSBhdWRpdF9jb250ZXh0KCk7XFxuIFxcdHJldHVybiAhcCB8fCAqKGludCAqKXA7XFxuIH1cXG4rc3RhdGljIGlubGluZSB2b2lkIGF1ZGl0X3Byb2N0aXRsZV9mcmVlKHN0cnVjdCBhdWRpdF9jb250ZXh0ICpjb250ZXh0KVxcbit7XFxuK1xcdGlmICh1bmxpa2VseSghYXVkaXRfZHVtbXlfY29udGV4dCgpKSlcXG4rXFx0XFx0X19hdWRpdF9wcm9jdGl0bGVfZnJlZShjb250ZXh0KTtcXG4rfVxcbiBzdGF0aWMgaW5saW5lIHZvaWQgYXVkaXRfZnJlZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spXFxuIHtcXG4gXFx0aWYgKHVubGlrZWx5KHRhc2stXFx1MDAzZWF1ZGl0X2NvbnRleHQpKVxcbkBAIC00NzAsNiArNDc2LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGF1ZGl0X2Jwcm0oc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSlcXG4gXFx0aWYgKHVubGlrZWx5KCFhdWRpdF9kdW1teV9jb250ZXh0KCkpKVxcbiBcXHRcXHRfX2F1ZGl0X2Jwcm0oYnBybSk7XFxuIH1cXG4rXFxuIHN0YXRpYyBpbmxpbmUgaW50IGF1ZGl0X3NvY2tldGNhbGwoaW50IG5hcmdzLCB1bnNpZ25lZCBsb25nICphcmdzKVxcbiB7XFxuIFxcdGlmICh1bmxpa2VseSghYXVkaXRfZHVtbXlfY29udGV4dCgpKSlcXG5AQCAtNjA1LDYgKzYxMiw4IEBAIHN0YXRpYyBpbmxpbmUgaW50IGF1ZGl0X2FsbG9jKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaylcXG4ge1xcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbitzdGF0aWMgaW5saW5lIHZvaWQgYXVkaXRfcHJvY3RpdGxlX2ZyZWUoc3RydWN0IGF1ZGl0X2NvbnRleHQgKmNvbnRleHQpXFxuK3sgfVxcbiBzdGF0aWMgaW5saW5lIHZvaWQgYXVkaXRfZnJlZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spXFxuIHsgfVxcbiBzdGF0aWMgaW5saW5lIHZvaWQgYXVkaXRfdXJpbmdfZW50cnkodTggb3ApXFxuZGlmZiAtLWdpdCBhL2tlcm5lbC9hdWRpdHNjLmMgYi9rZXJuZWwvYXVkaXRzYy5jXFxuaW5kZXggNjYxMGU2NjdjNzI4YWEuLjY5NDg0YWIyYzhiYzViIDEwMDY0NFxcbi0tLSBhL2tlcm5lbC9hdWRpdHNjLmNcXG4rKysgYi9rZXJuZWwvYXVkaXRzYy5jXFxuQEAgLTkxMyw3ICs5MTMsNyBAQCB2b2lkIGF1ZGl0X2ZpbHRlcl9pbm9kZXMoc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssIHN0cnVjdCBhdWRpdF9jb250ZXh0ICpjdHgpXFxuIFxcdHJjdV9yZWFkX3VubG9jaygpO1xcbiB9XFxuIFxcbi1zdGF0aWMgaW5saW5lIHZvaWQgYXVkaXRfcHJvY3RpdGxlX2ZyZWUoc3RydWN0IGF1ZGl0X2NvbnRleHQgKmNvbnRleHQpXFxuK3ZvaWQgX19hdWRpdF9wcm9jdGl0bGVfZnJlZShzdHJ1Y3QgYXVkaXRfY29udGV4dCAqY29udGV4dClcXG4ge1xcbiBcXHRrZnJlZShjb250ZXh0LVxcdTAwM2Vwcm9jdGl0bGUudmFsdWUpO1xcbiBcXHRjb250ZXh0LVxcdTAwM2Vwcm9jdGl0bGUudmFsdWUgPSBOVUxMO1xcbkBAIC0xMDg2LDcgKzEwODYsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYXVkaXRfZnJlZV9jb250ZXh0KHN0cnVjdCBhdWRpdF9jb250ZXh0ICpjb250ZXh0KVxcbiB7XFxuIFxcdC8qIHJlc2V0dGluZyBpcyBleHRyYSB3b3JrLCBidXQgaXQgaXMgbGlrZWx5IGp1c3Qgbm9pc2UgKi9cXG4gXFx0YXVkaXRfcmVzZXRfY29udGV4dChjb250ZXh0KTtcXG4tXFx0YXVkaXRfcHJvY3RpdGxlX2ZyZWUoY29udGV4dCk7XFxuK1xcdF9fYXVkaXRfcHJvY3RpdGxlX2ZyZWUoY29udGV4dCk7XFxuIFxcdGZyZWVfdHJlZV9yZWZzKGNvbnRleHQpO1xcbiBcXHRrZnJlZShjb250ZXh0LVxcdTAwM2VmaWx0ZXJrZXkpO1xcbiBcXHRrZnJlZShjb250ZXh0KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6NDU6NDYuMzE3NjI5NzVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo0MjY1OTgxOTg4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJBVURJVFwiLFxuICAgIFwiQVVESVRTWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19hdWRpdF9wcm9jdGl0bGVfZnJlZVwiLFxuICAgIFwiX19hdWRpdF9icHJtXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgZXhlY3ZlIHBhdGggdG8gY2xlYXIgdGhlIGF1ZGl0IHByb2N0aXRsZSBjb250ZXh0IGJlZm9yZSBgYXVkaXRfYnBybWAgaXMgY2FsbGVkLiBUaGlzIGZpeGVzIGEgcG90ZW50aWFsIG1lbW9yeSBsZWFrIG9yIHN0YXRlIGlzc3VlLiBUaGlzIGlzIHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbCBjb2RlIGluIHRoZSBrZXJuZWwncyBhdWRpdCBzdWJzeXN0ZW0uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGVkNzQzZmNhODM1MGE3ZmM1NjBiNjFiYzg2YTNlZmMzM2YxMDdlOGFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCAyNyAwNzo0NTo0NCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2V4ZWMuYyBiL2ZzL2V4ZWMuY1xuaW5kZXggYjkyZmU3ZGIxNzZjZmYuLmJkNTE0ODlkZWMyMzJiIDEwMDY0NFxuLS0tIGEvZnMvZXhlYy5jXG4rKysgYi9mcy9leGVjLmNcbkBAIC0xNzQ0LDYgKzE3NDQsOCBAQCBzdGF0aWMgaW50IGV4ZWNfYmlucHJtKHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pXG4gXHRcdFx0ZnB1dChleGVjKTtcbiBcdH1cbiBcbitcdC8qIGNsZWFyIHByb2N0aXRsZSBpbiBhdWRpdCBjb250ZXh0IHRvIGFsbG93IHJlcGxhY2VtZW50ICovXG4rXHRhdWRpdF9wcm9jdGl0bGVfZnJlZShhdWRpdF9jb250ZXh0KCkpO1xuIFx0YXVkaXRfYnBybShicHJtKTtcbiBcdHRyYWNlX3NjaGVkX3Byb2Nlc3NfZXhlYyhjdXJyZW50LCBvbGRfcGlkLCBicHJtKTtcbiBcdHB0cmFjZV9ldmVudChQVFJBQ0VfRVZFTlRfRVhFQywgb2xkX3ZwaWQpO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYXVkaXQuaCBiL2luY2x1ZGUvbGludXgvYXVkaXQuaFxuaW5kZXggNDVhYmIzNzIyZDMwNGMuLjAzYWU1NjNjYTM0ODljIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9hdWRpdC5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L2F1ZGl0LmhcbkBAIC0zMjAsNiArMzIwLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGF1ZGl0X2NmZ19sc20oY29uc3Qgc3RydWN0IGxzbV9pZCAqbHNtaWQsIGludCBmbGFncylcbiAvKiBUaGVzZSBhcmUgZGVmaW5lZCBpbiBhdWRpdHNjLmMgKi9cbiBcdFx0XHRcdC8qIFB1YmxpYyBBUEkgKi9cbiBleHRlcm4gaW50ICBhdWRpdF9hbGxvYyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spO1xuK2V4dGVybiB2b2lkIF9fYXVkaXRfcHJvY3RpdGxlX2ZyZWUoc3RydWN0IGF1ZGl0X2NvbnRleHQgKmNvbnRleHQpO1xuIGV4dGVybiB2b2lkIF9fYXVkaXRfZnJlZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spO1xuIGV4dGVybiB2b2lkIF9fYXVkaXRfdXJpbmdfZW50cnkodTggb3ApO1xuIGV4dGVybiB2b2lkIF9fYXVkaXRfdXJpbmdfZXhpdChpbnQgc3VjY2VzcywgbG9uZyBjb2RlKTtcbkBAIC0zNTMsNiArMzU0LDExIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBhdWRpdF9kdW1teV9jb250ZXh0KHZvaWQpXG4gXHR2b2lkICpwID0gYXVkaXRfY29udGV4dCgpO1xuIFx0cmV0dXJuICFwIHx8ICooaW50ICopcDtcbiB9XG4rc3RhdGljIGlubGluZSB2b2lkIGF1ZGl0X3Byb2N0aXRsZV9mcmVlKHN0cnVjdCBhdWRpdF9jb250ZXh0ICpjb250ZXh0KVxuK3tcbitcdGlmICh1bmxpa2VseSghYXVkaXRfZHVtbXlfY29udGV4dCgpKSlcbitcdFx0X19hdWRpdF9wcm9jdGl0bGVfZnJlZShjb250ZXh0KTtcbit9XG4gc3RhdGljIGlubGluZSB2b2lkIGF1ZGl0X2ZyZWUoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKVxuIHtcbiBcdGlmICh1bmxpa2VseSh0YXNrLVx1MDAzZWF1ZGl0X2NvbnRleHQpKVxuQEAgLTQ3MCw2ICs0NzYsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYXVkaXRfYnBybShzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKVxuIFx0aWYgKHVubGlrZWx5KCFhdWRpdF9kdW1teV9jb250ZXh0KCkpKVxuIFx0XHRfX2F1ZGl0X2Jwcm0oYnBybSk7XG4gfVxuK1xuIHN0YXRpYyBpbmxpbmUgaW50IGF1ZGl0X3NvY2tldGNhbGwoaW50IG5hcmdzLCB1bnNpZ25lZCBsb25nICphcmdzKVxuIHtcbiBcdGlmICh1bmxpa2VseSghYXVkaXRfZHVtbXlfY29udGV4dCgpKSlcbkBAIC02MDUsNiArNjEyLDggQEAgc3RhdGljIGlubGluZSBpbnQgYXVkaXRfYWxsb2Moc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKVxuIHtcbiBcdHJldHVybiAwO1xuIH1cbitzdGF0aWMgaW5saW5lIHZvaWQgYXVkaXRfcHJvY3RpdGxlX2ZyZWUoc3RydWN0IGF1ZGl0X2NvbnRleHQgKmNvbnRleHQpXG4reyB9XG4gc3RhdGljIGlubGluZSB2b2lkIGF1ZGl0X2ZyZWUoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKVxuIHsgfVxuIHN0YXRpYyBpbmxpbmUgdm9pZCBhdWRpdF91cmluZ19lbnRyeSh1OCBvcClcbmRpZmYgLS1naXQgYS9rZXJuZWwvYXVkaXRzYy5jIGIva2VybmVsL2F1ZGl0c2MuY1xuaW5kZXggNjYxMGU2NjdjNzI4YWEuLjY5NDg0YWIyYzhiYzViIDEwMDY0NFxuLS0tIGEva2VybmVsL2F1ZGl0c2MuY1xuKysrIGIva2VybmVsL2F1ZGl0c2MuY1xuQEAgLTkxMyw3ICs5MTMsNyBAQCB2b2lkIGF1ZGl0X2ZpbHRlcl9pbm9kZXMoc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssIHN0cnVjdCBhdWRpdF9jb250ZXh0ICpjdHgpXG4gXHRyY3VfcmVhZF91bmxvY2soKTtcbiB9XG4gXG4tc3RhdGljIGlubGluZSB2b2lkIGF1ZGl0X3Byb2N0aXRsZV9mcmVlKHN0cnVjdCBhdWRpdF9jb250ZXh0ICpjb250ZXh0KVxuK3ZvaWQgX19hdWRpdF9wcm9jdGl0bGVfZnJlZShzdHJ1Y3QgYXVkaXRfY29udGV4dCAqY29udGV4dClcbiB7XG4gXHRrZnJlZShjb250ZXh0LVx1MDAzZXByb2N0aXRsZS52YWx1ZSk7XG4gXHRjb250ZXh0LVx1MDAzZXByb2N0aXRsZS52YWx1ZSA9IE5VTEw7XG5AQCAtMTA4Niw3ICsxMDg2LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGF1ZGl0X2ZyZWVfY29udGV4dChzdHJ1Y3QgYXVkaXRfY29udGV4dCAqY29udGV4dClcbiB7XG4gXHQvKiByZXNldHRpbmcgaXMgZXh0cmEgd29yaywgYnV0IGl0IGlzIGxpa2VseSBqdXN0IG5vaXNlICovXG4gXHRhdWRpdF9yZXNldF9jb250ZXh0KGNvbnRleHQpO1xuLVx0YXVkaXRfcHJvY3RpdGxlX2ZyZWUoY29udGV4dCk7XG4rXHRfX2F1ZGl0X3Byb2N0aXRsZV9mcmVlKGNvbnRleHQpO1xuIFx0ZnJlZV90cmVlX3JlZnMoY29udGV4dCk7XG4gXHRrZnJlZShjb250ZXh0LVx1MDAzZWZpbHRlcmtleSk7XG4gXHRrZnJlZShjb250ZXh0KTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDA3OjQ1OjQ2LjMxNzYzMDc4WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDUyNDI0MjA1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEF1ZGl0IFN5c3RlbSBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGZzL2V4ZWMuY2AsIGBpbmNsdWRlL2xpbnV4L2F1ZGl0LmhgLCBhbmQgYGtlcm5lbC9hdWRpdHNjLmNgLiBJdCdzIHByb21vdGluZyBgYXVkaXRfcHJvY3RpdGxlX2ZyZWVgIHRvIGBfX2F1ZGl0X3Byb2N0aXRsZV9mcmVlYCBhbmQgc3RyYXRlZ2ljYWxseSBjYWxsaW5nIGl0IGZyb20gd2l0aGluIGBleGVjX2JpbnBybWAgaW4gYGZzL2V4ZWMuY2AgKmJlZm9yZSogdGhlIGBhdWRpdF9icHJtKGJwcm0pYCBjYWxsLiBUaGF0J3MgaW50ZXJlc3RpbmcsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoeS5cblxuRmlyc3QsIGxldCdzIGxvb2sgYXQgdGhlIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBga2VybmVsL2F1ZGl0c2MuY2AgcmVsaWVzIG9uIGBDT05GSUdfQVVESVRTWVNDQUxMYC4gIGBmcy9leGVjLmNgIGlzIGFsd2F5cyBjb21waWxlZCwgd2hpY2ggbWFrZXMgc2Vuc2UuIGBpbmNsdWRlL2xpbnV4L2F1ZGl0LmhgIGlzIGFsd2F5cyBpbmNsdWRlZCwgd2hpY2ggaXMgZXhwZWN0ZWQuIEhvd2V2ZXIsIHRoZSBgYXVkaXRfcHJvY3RpdGxlX2ZyZWVgIGZ1bmN0aW9uIGlzIGVmZmVjdGl2ZWx5IGEgbm8tb3AgdW5sZXNzIGVpdGhlciBgQ09ORklHX0FVRElUYCBvciBgQ09ORklHX0FVRElUU1lTQ0FMTGAgaXMgZW5hYmxlZC4gVGhhdCBzaW1wbGlmaWVzIHRoaW5ncyBhIGJpdDsgdGhlIG5vLW9wIGNvbmRpdGlvbiBnaXZlcyB1cyBhIGNsZWFyIHBhdGggZm9yIGNvbnRyb2wgZmxvdy5cblxuTm93LCBJJ2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoZSBga2VybmVsL01ha2VmaWxlYCB0byBjb25maXJtIHRoZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBvZiBgYXVkaXRzYy5jYC4gSXQncyB1c3VhbGx5IGJldHRlciB0byBiZSBleHBsaWNpdCBhYm91dCB0aGVzZSB0aGluZ3MuIFdlIHdhbnQgdG8gYmUgc3VyZSB0aGF0IHdlIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBmdWxseS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg5MSwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwMywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDA3OjQ1OjUwLjg0MTg3NTkyMVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTY5NDEwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdWRpdHNjLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9NYWtlZmlsZT05Nz1vYmotJChDT05GSUdfQVVESVQpICs9IGF1ZGl0Lm8gYXVkaXRmaWx0ZXIub1xcbmtlcm5lbC9NYWtlZmlsZTo5ODpvYmotJChDT05GSUdfQVVESVRTWVNDQUxMKSArPSBhdWRpdHNjLm8gYXVkaXRfd2F0Y2gubyBhdWRpdF9mc25vdGlmeS5vIGF1ZGl0X3RyZWUub1xcbmtlcm5lbC9NYWtlZmlsZS05OS1vYmotJChDT05GSUdfR0NPVl9LRVJORUwpICs9IGdjb3YvXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDA3OjQ1OjUwLjkwMzU3NzA3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzYwMzcyOTExNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqS2VybmVsIEF1ZGl0aW5nIENvbmZpZ3VyYXRpb24g4oCTIEEgUXVpY2sgQ2hlY2sqKlxuXG5SaWdodCwgc28gd2UncmUgZGVhbGluZyB3aXRoIGEgc2l0dWF0aW9uIHdoZXJlIHdlIG5lZWQgYXVkaXQgc3lzdGVtIGNhbGwgbG9nZ2luZy4gVGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoZSBkZXBlbmRlbmN5IOKAkyB3ZSBuZWVkIHRvIHZlcmlmeSB0aGF0IGBDT05GSUdfQVVESVRTWVNDQUxMYCBpcyBwcm9wZXJseSBjb25maWd1cmVkLCBhbmQgdGhhdCBtZWFucyBkaXZpbmcgaW50byB0aGUgS2NvbmZpZyBmaWxlcywgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYGluaXRgIGRpcmVjdG9yeS4gV2UgbmVlZCB0byByYXBpZGx5IGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGVuc3VyZSB0aGUgYnVpbGQgc3lzdGVtIGtub3dzIHdoYXQncyByZXF1aXJlZCB0byBtYWtlIHRoYXQgb3B0aW9uIGF2YWlsYWJsZS4gTGV0J3Mgc2VlIHdoYXQgbmVlZHMgdG8gYmUgaW4gcGxhY2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1MDksIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzo0NTo1NC41MDczMDgyNjdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDEzMzc3MTA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBBVURJVFNZU0NBTExcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5pdC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluaXQvS2NvbmZpZz01NDU9Y29uZmlnIEhBVkVfQVJDSF9BVURJVFNZU0NBTExcXG4tLVxcbmluaXQvS2NvbmZpZy01NDctXFxuaW5pdC9LY29uZmlnOjU0ODpjb25maWcgQVVESVRTWVNDQUxMXFxuaW5pdC9LY29uZmlnLTU0OS1cXHRkZWZfYm9vbCB5XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDA3OjQ1OjU0LjkyMDY5MDIyNVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MDA5ODQ3NzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOlxuXG4qKkNvbmRpdGlvbmFsIERlZmluaXRpb24gYW5kIEF1ZGl0aW5nIExvZ2ljKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBkZWZpbml0aW9uLCBhbmQgSSBzZWUgdGhhdCBgZGVmX2Jvb2wgeWAgaXMgZ29pbmcgdG8gYmUgc2V0IGlmICpib3RoKiBgQVVESVRgIGFuZCBgSEFWRV9BUkNIX0FVRElUU1lTQ0FMTGAgYXJlIGVuYWJsZWQuIFRoYXQncyBhIHByZXR0eSBjbGVhciBjb25kaXRpb25hbC4gVGhpcyBtZWFucyB0aGUgc3lzdGVtJ3MgYXVkaXRpbmcgZmVhdHVyZXMgYXJlIGFjdGl2YXRlZCwgYW5kIHNwZWNpZmljYWxseSwgdGhlIGFyY2hpdGVjdHVyZSBoYXMgc3VwcG9ydCBmb3IgYXVkaXQgc3lzdGVtIGNhbGxzLiBUaGlzIG1ha2VzIHNlbnNlLiBXZSdyZSB0YWxraW5nIGFib3V0IHNldHRpbmcgdXAgYSBib29sZWFuIHZhcmlhYmxlLCBsaWtlbHkgdG8gY29udHJvbCBzb21lIGFzcGVjdCBvZiBhdWRpdCBmdW5jdGlvbmFsaXR5LiBUaGUgZGVwZW5kZW5jeSBvbiBib3RoIGNvbmRpdGlvbnMgaW5kaWNhdGVzIGEgbGV2ZWwgb2YgZ3JhbnVsYXJpdHkgLSBhdWRpdGluZyB3b24ndCBiZSB0cmlnZ2VyZWQgdW5sZXNzIGJvdGggdGhlIGdlbmVyYWwgYXVkaXRpbmcgZnJhbWV3b3JrICphbmQqIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBzdXBwb3J0IGFyZSBpbiBwbGFjZS4gVGhpcyBtYWtlcyB0aGUgb3ZlcmFsbCBzeXN0ZW0gbGVzcyBicml0dGxlIHRoYW4gaWYgaXQgd2VyZSBjb25kaXRpb25hbCBvbiBvbmUgb2YgdGhvc2UgZGVmaW5pdGlvbnMgYWxvbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3NzcsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzo0NTo1OC41MjE2Nzc2ODNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjIzMzQ0NTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEFVRElUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImluaXQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbml0L0tjb25maWc9NTI2PWNvbmZpZyBDUk9TU19NRU1PUllfQVRUQUNIXFxuLS1cXG5pbml0L0tjb25maWctNTM1LVxcbmluaXQvS2NvbmZpZzo1MzY6Y29uZmlnIEFVRElUXFxuaW5pdC9LY29uZmlnLTUzNy1cXHRib29sIFxcXCJBdWRpdGluZyBzdXBwb3J0XFxcIlxcbi0tXFxuaW5pdC9LY29uZmlnPTU0NT1jb25maWcgSEFWRV9BUkNIX0FVRElUU1lTQ0FMTFxcbi0tXFxuaW5pdC9LY29uZmlnLTU0Ny1cXG5pbml0L0tjb25maWc6NTQ4OmNvbmZpZyBBVURJVFNZU0NBTExcXG5pbml0L0tjb25maWctNTQ5LVxcdGRlZl9ib29sIHlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6NDU6NTguNTg0MDIxMTcxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE4MTcwNDc4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIHByZXNlbnRlZCBhcyBhIHN0cmVhbSBvZiB0aG91Z2h0OlxuXG4qKkNoZWNraW5nIERlcGVuZGVuY2llcyBmb3IgQVVESVRTWVNDQUxMKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBgQVVESVRTWVNDQUxMYCBtb2R1bGUgb3IgZnVuY3Rpb24gb3Igd2hhdGV2ZXIgaXQgaXMgd2UncmUgZGVhbGluZyB3aXRoLiBCZWZvcmUgZGl2aW5nIGRlZXAsIHRoZSBmaXJzdCB0aGluZyB0aGF0IGFsd2F5cyBjb21lcyB0byBtaW5kIGlzIHRoZSBkZXBlbmRlbmNpZXMuIFdoZXJlIGRvZXMgdGhpcyB0aGluZyBsaXZlPyBXaGF0IG90aGVyIHBpZWNlcyBvZiB0aGUgc3lzdGVtIHJlbHkgb24gaXQ/IFdoYXQgY291bGQgYnJlYWsgaWYgSSBjaGFuZ2UgaXQgb3IgbW92ZSBpdCwgb3IgZ29kIGZvcmJpZCwgcmVtb3ZlIGl0PyBTbywgSSdtIGdvaW5nIHRvIHN0YXJ0IGJ5IHJ1bm5pbmcgYSBxdWljayBjaGVjayBvbiBpdHMgZGVwZW5kZW5jaWVzLiBJJ20gZ29pbmcgdG8gcnVuIHRoZSBjb21tYW5kLCBsZXQncyBjaGVjayBgZGVwZW5kcyBvbmAgZm9yIGBBVURJVFNZU0NBTExgLiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBpdHMgcm9sZSBpbiB0aGUgZWNvc3lzdGVtIGJlZm9yZSBJIHN0YXJ0IHRvIG1ha2UgYW55IGp1ZGdtZW50cyBvciBldmVuIGNvbnNpZGVyIHRoZSBuZXh0IHN0ZXBzLiBHb3R0YSB1bmRlcnN0YW5kIHRoZSBsYW5kc2NhcGUgZmlyc3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxNTUsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzo0NjowMS43NjU3Mjc5NVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDk1MDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiaW5pdC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDU0NSxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDU0NTpcXHRjb25maWcgSEFWRV9BUkNIX0FVRElUU1lTQ0FMTFxcbiA1NDY6XFx0XFx0Ym9vbFxcbiA1NDc6XFx0XFxuIDU0ODpcXHRjb25maWcgQVVESVRTWVNDQUxMXFxuIDU0OTpcXHRcXHRkZWZfYm9vbCB5XFxuIDU1MDpcXHRcXHRkZXBlbmRzIG9uIEFVRElUIFxcdTAwMjZcXHUwMDI2IEhBVkVfQVJDSF9BVURJVFNZU0NBTExcXG4gNTUxOlxcdFxcdHNlbGVjdCBGU05PVElGWVxcbiA1NTI6XFx0XFxuIDU1MzpcXHRzb3VyY2UgXFxcImtlcm5lbC9pcnEvS2NvbmZpZ1xcXCJcXG4gNTU0OlxcdHNvdXJjZSBcXFwia2VybmVsL3RpbWUvS2NvbmZpZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6NDY6MDEuNzY1ODQwNDNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU2ODIxMTE3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3Npbmc6XG5cbioqQW5hbHl6aW5nIHRoZSBBdWRpdCBJbXBhY3QqKlxuXG5SaWdodCwgc28gd2UncmUgZGVhbGluZyB3aXRoIGFuIGBBVURJVGAtcmVsYXRlZCBpc3N1ZS4gVGhlIHBhdGNoIHNwZWNpZmljYWxseSB0YXJnZXRzIGBleGVjX2JpbnBybWAgd2l0aGluIGBmcy9leGVjLmNgLiBHaXZlbiBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBrZXJuZWwgaW50ZXJuYWxzLCB0aGF0IGZ1bmN0aW9uJ3MgZGVmaW5pdGVseSBhIGNyaXRpY2FsIHBhdGgg4oCTIGl0J3MgcmVhY2hhYmxlLCBhbmQgY2hhbmdlcyB0aGVyZSB3aWxsICphYnNvbHV0ZWx5KiBoYXZlIGFuIGltcGFjdC4gVGhlIGNvZGUgaXMgZnVuY3Rpb25hbCwgc28gaXQgd2lsbCB3b3JrLiBJJ20gYXNzdW1pbmcgdGhpcyBwYXRjaCBpcyBmaXhpbmcgYSBtZW1vcnkgbGVhaywgbGlrZWx5IHJlbGF0ZWQgdG8gaG93IHRoZSBhdWRpdCBwcm9jdGl0bGUgaXMgaGFuZGxlZCBkdXJpbmcgYGV4ZWN2ZWAuIEkndmUgc2VlbiBzaW1pbGFyIGlzc3VlcyBwb3AgdXAgYmVmb3JlLlxuXG5BbHJpZ2h0LCBsZXQncyBwdWxsIHVwIGBleGVjX2JpbnBybWAgaW4gYGZzL2V4ZWMuY2AgYW5kIHRha2UgYSBjbG9zZXIgbG9vay4gSSdsbCBuZWVkIHRvIGNvbmZpcm0gdGhlIGV4YWN0IG5hdHVyZSBvZiB0aGUgcHJvYmxlbSBhbmQgdmVyaWZ5IHRoZSBwYXRjaCdzIGltcGxlbWVudGF0aW9uIHRvIHNlZSBpZiB0aGlzIHNvbHZlcyB0aGUgaXNzdWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1MzcsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDA3OjQ2OjA1LjMzNDA1NTAxOVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjkxODQxOTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZXhlY19iaW5wcm1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvZXhlYy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2V4ZWMuYz0xNDI1PXN0YXRpYyBzdHJ1Y3QgbGludXhfYmlucHJtICphbGxvY19icHJtKGludCBmZCwgc3RydWN0IGZpbGVuYW1lICpmaWxlbmFtZSwgaW50IGZsYWdzKVxcbi0tXFxuZnMvZXhlYy5jLTE0NzYtXFx0ICogYnBybV9leGVjdmUoKS4gIEluZGVlZCwgdGhlIGtlcm5lbCBzaG91bGQgbm90IHRyeSB0byBwYXJzZSB0aGVcXG5mcy9leGVjLmM6MTQ3NzpcXHQgKiBjb250ZW50IG9mIHRoZSBmaWxlIHdpdGggZXhlY19iaW5wcm0oKSBub3IgY2hhbmdlIHRoZSBjYWxsaW5nXFxuZnMvZXhlYy5jLTE0NzgtXFx0ICogdGhyZWFkLCB3aGljaCBtZWFucyB0aGF0IHRoZSBmb2xsb3dpbmcgc2VjdXJpdHkgZnVuY3Rpb25zIHdpbGwgbm90XFxuLS1cXG5mcy9leGVjLmM9MTY3NT1zdGF0aWMgaW50IHNlYXJjaF9iaW5hcnlfaGFuZGxlcihzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKVxcbi0tXFxuZnMvZXhlYy5jLTE3MDgtLyogYmluZm10IGhhbmRsZXJzIHdpbGwgY2FsbCBiYWNrIGludG8gYmVnaW5fbmV3X2V4ZWMoKSBvbiBzdWNjZXNzLiAqL1xcbmZzL2V4ZWMuYzoxNzA5OnN0YXRpYyBpbnQgZXhlY19iaW5wcm0oc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSlcXG5mcy9leGVjLmMtMTcxMC17XFxuLS1cXG5mcy9leGVjLmM9MTc1Nj1zdGF0aWMgaW50IGJwcm1fZXhlY3ZlKHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pXFxuLS1cXG5mcy9leGVjLmMtMTc2NC1cXHQvKlxcbmZzL2V4ZWMuYzoxNzY1OlxcdCAqIENoZWNrIGZvciB1bnNhZmUgZXhlY3V0aW9uIHN0YXRlcyBiZWZvcmUgZXhlY19iaW5wcm0oKSwgd2hpY2hcXG5mcy9leGVjLmMtMTc2Ni1cXHQgKiB3aWxsIGNhbGwgYmFjayBpbnRvIGJlZ2luX25ld19leGVjKCksIGludG8gYnBybV9jcmVkc19mcm9tX2ZpbGUoKSxcXG4tLVxcbmZzL2V4ZWMuYy0xNzc5LVxcbmZzL2V4ZWMuYzoxNzgwOlxcdHJldHZhbCA9IGV4ZWNfYmlucHJtKGJwcm0pO1xcbmZzL2V4ZWMuYy0xNzgxLVxcdGlmIChyZXR2YWwgXFx1MDAzYyAwKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzo0NjowNS40MDMyNDQxNDdaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTUwNTQzMTU1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEV4ZWN2ZSBGbG93IGFuZCBBdWRpdCBUaXRsZSBGcmVlaW5nKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaG93IGl0IGludGVncmF0ZXMgaW50byB0aGUgYGV4ZWN2ZWAgc3lzdGVtIGNhbGwgZmxvdy4gVGhlIGNydWNpYWwgdGhpbmcgaGVyZSBpcyBgZXhlY19iaW5wcm1gIHdoaWNoIGlzIGNhbGxlZCBieSBgYnBybV9leGVjdmVgLCBhbmQgdGhhdCdzIGNhbGxlZCBieSBgZG9fZXhlY3ZlYXRfY29tbW9uYC4gVGhhdCdzIG15IGNvcmUgYGV4ZWN2ZWAgcGF0aC4gVGhlIHBhdGNoIHNwZWNpZmljYWxseSBjYWxscyBgYXVkaXRfcHJvY3RpdGxlX2ZyZWUoYXVkaXRfY29udGV4dCgpKWAgd2l0aGluIGBleGVjX2JpbnBybWAuIFNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCwgZnVuY3Rpb25hbGx5LlxuXG5Ob3csIEkgbmVlZCB0byBwaWNrIGdvb2QgdGFyZ2V0cyBmb3IgZnVydGhlciBhbmFseXNpcywgc3BlY2lmaWNhbGx5IEFQSSBlbnRyeSBwb2ludHMuIFRoZSBwcm9tcHQgYWN0dWFsbHkgc2FpZCB0byBwcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgZW50cnlwb2ludCBmdW5jdGlvbnMuXG5cbkkgc3RhcnRlZCBieSBjaGVja2luZyBpZiBgZXhlY19iaW5wcm1gIHdhcyBzdGF0aWMuIFllcCwgaXQncyBzdGF0aWMuIFNhbWUgZm9yIGBicHJtX2V4ZWN2ZWAgYW5kIGBkb19leGVjdmVhdF9jb21tb25gLiBBbGwgc3RhdGljLCB3aGljaCBtZWFucyB0aGV5IGFyZSBsaWtlbHkgaW50ZXJuYWwgaGVscGVycywgc28gSSBtYXkgbm90IHdhbnQgdG8gdGFyZ2V0IHRoZW0uXG5cbkkgY2hlY2tlZCBgZG9fZXhlY3ZlYCwgYW5kIGl0J3MgKm5vdCogc3RhdGljLCBzbyBpdOKAmXMgbGlrZWx5IHRoZSBBUEkgZW50cnlwb2ludCBJIHdhbnQuIEFuZCBqdXN0IHRvIGNvbmZpcm0sIEkgYWxzbyBmb3VuZCB0aGF0IGBfX2F1ZGl0X3Byb2N0aXRsZV9mcmVlYCBpcyBub24tc3RhdGljIGFzIHdlbGwuXG5cbk5vdywgSSdtIGdvaW5nIHRvIGxvb2sgYXQgYGRvX2V4ZWN2ZWAgaW4gYGZzL2V4ZWMuY2AgdG8gc2VlIHdoZXJlIHRoZSBmdW5jdGlvbiBsaXZlcyBhbmQgdGhlIGZ1bGwgY29udGV4dC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTI0OSwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzo0NjoxMC45MDg2Nzc3NVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODU2MTk0NDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZG9fZXhlY3ZlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2V4ZWMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9leGVjLmM9NDAyPXN0YXRpYyBpbnQgYnBybV9zdGFja19saW1pdHMoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSlcXG4tLVxcbmZzL2V4ZWMuYy00MzQtXFx0ICogYXJnYyBjYW4gbmV2ZXIgYmUgMCwgdG8ga2VlcCB0aGVtIGZyb20gd2Fsa2luZyBlbnZwIGJ5IGFjY2lkZW50LlxcbmZzL2V4ZWMuYzo0MzU6XFx0ICogU2VlIGRvX2V4ZWN2ZWF0X2NvbW1vbigpLlxcbmZzL2V4ZWMuYy00MzYtXFx0ICovXFxuLS1cXG5mcy9leGVjLmM9MTc1Nj1zdGF0aWMgaW50IGJwcm1fZXhlY3ZlKHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pXFxuLS1cXG5mcy9leGVjLmMtMTgwOS1cXG5mcy9leGVjLmM6MTgxMDpzdGF0aWMgaW50IGRvX2V4ZWN2ZWF0X2NvbW1vbihpbnQgZmQsIHN0cnVjdCBmaWxlbmFtZSAqZmlsZW5hbWUsXFxuZnMvZXhlYy5jLTE4MTEtXFx0XFx0XFx0ICAgICAgc3RydWN0IHVzZXJfYXJnX3B0ciBhcmd2LFxcbi0tXFxuZnMvZXhlYy5jPTE5NDU9U1lTQ0FMTF9ERUZJTkUzKGV4ZWN2ZSxcXG4tLVxcbmZzL2V4ZWMuYy0xOTUwLVxcdENMQVNTKGZpbGVuYW1lLCBuYW1lKShmaWxlbmFtZSk7XFxuZnMvZXhlYy5jOjE5NTE6XFx0cmV0dXJuIGRvX2V4ZWN2ZWF0X2NvbW1vbihBVF9GRENXRCwgbmFtZSxcXG5mcy9leGVjLmMtMTk1Mi1cXHRcXHRcXHRcXHQgIG5hdGl2ZV9hcmcoYXJndiksIG5hdGl2ZV9hcmcoZW52cCksIDApO1xcbi0tXFxuZnMvZXhlYy5jPTE5NTU9U1lTQ0FMTF9ERUZJTkU1KGV4ZWN2ZWF0LFxcbi0tXFxuZnMvZXhlYy5jLTE5NjEtXFx0Q0xBU1MoZmlsZW5hbWVfdWZsYWdzLCBuYW1lKShmaWxlbmFtZSwgZmxhZ3MpO1xcbmZzL2V4ZWMuYzoxOTYyOlxcdHJldHVybiBkb19leGVjdmVhdF9jb21tb24oZmQsIG5hbWUsXFxuZnMvZXhlYy5jLTE5NjMtXFx0XFx0XFx0XFx0ICBuYXRpdmVfYXJnKGFyZ3YpLCBuYXRpdmVfYXJnKGVudnApLCBmbGFncyk7XFxuLS1cXG5mcy9leGVjLmM9MTk3Mz1DT01QQVRfU1lTQ0FMTF9ERUZJTkUzKGV4ZWN2ZSwgY29uc3QgY2hhciBfX3VzZXIgKiwgZmlsZW5hbWUsXFxuLS1cXG5mcy9leGVjLmMtMTk3Ny1cXHRDTEFTUyhmaWxlbmFtZSwgbmFtZSkoZmlsZW5hbWUpO1xcbmZzL2V4ZWMuYzoxOTc4OlxcdHJldHVybiBkb19leGVjdmVhdF9jb21tb24oQVRfRkRDV0QsIG5hbWUsXFxuZnMvZXhlYy5jLTE5NzktXFx0XFx0XFx0XFx0ICBjb21wYXRfYXJnKGFyZ3YpLCBjb21wYXRfYXJnKGVudnApLCAwKTtcXG4tLVxcbmZzL2V4ZWMuYz0xOTgyPUNPTVBBVF9TWVNDQUxMX0RFRklORTUoZXhlY3ZlYXQsIGludCwgZmQsXFxuLS1cXG5mcy9leGVjLmMtMTk4OC1cXHRDTEFTUyhmaWxlbmFtZV91ZmxhZ3MsIG5hbWUpKGZpbGVuYW1lLCBmbGFncyk7XFxuZnMvZXhlYy5jOjE5ODk6XFx0cmV0dXJuIGRvX2V4ZWN2ZWF0X2NvbW1vbihmZCwgbmFtZSxcXG5mcy9leGVjLmMtMTk5MC1cXHRcXHRcXHRcXHQgIGNvbXBhdF9hcmcoYXJndiksIGNvbXBhdF9hcmcoZW52cCksIGZsYWdzKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6NDY6MTAuOTk0MzAxMTY3WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1OTA2MTA2MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTmF2aWdhdGluZyB0aGUgRXhlY3ZlIExhbmRzY2FwZSoqXG5cbk9rYXksIHNvIEknbSB0cnlpbmcgdG8gd3JhcCBteSBoZWFkIGFyb3VuZCB0aGlzIGtlcm5lbCBjaGFuZ2UuLi4gZmlyc3QgdGhvdWdodDogaGFuZyBvbiwgd2hlcmUgZGlkIGBkb19leGVjdmVgIGdvPyBEb2Vzbid0IHNlZW0gdG8gYmUgYSB0aGluZyBhbnltb3JlLiBBaCwgcmlnaHQsIGl04oCZcyBiZWVuIHN1YnN1bWVkIGJ5IGBkb19leGVjdmVhdF9jb21tb25gLCB3aGljaCBpcyBub3cgKnN0YXRpYyouIFRoYXQgbWFrZXMgc2Vuc2UgaW4gdGVybXMgb2YgbW9kdWxhcml0eS4gQnV0IHRoZSByZWFsIGVudHJ5IHBvaW50cywgZm9yIGV4dGVybmFsIGludGVyYWN0aW9uLCBhcmUgdGhlIHN5c3RlbSBjYWxsczogYHN5c19leGVjdmVgIGFuZCBgc3lzX2V4ZWN2ZWF0YC4gR290IGl0LlxuXG5Ob3csIGBzeXNfZXhlY3ZlYCBpcyBjbGVhcmx5IGEgc3lzdGVtIGNhbGwsIHdoaWNoIGlzIG15IGJyZWFkIGFuZCBidXR0ZXIuIEkgbmVlZCBhIGdvb2Qgc3ltYm9sIHRvIGZvY3VzIG9uIHdoZW4gcmV2aWV3aW5nIHRoZSBjaGFuZ2VzLiBgX19hdWRpdF9wcm9jdGl0bGVfZnJlZWAgaXMgbG9va2luZyBwcm9taXNpbmcuIEl0J3MgKm5vdCogc3RhdGljLCBzbyBpdCdzIGxpa2VseSB0byBiZSBleHBvc2VkLCBhbmQgdGhpcyAqcGF0Y2gqIGRpcmVjdGx5IG1vZGlmaWVzIGl0LiBZZXMsIHRoYXQncyBkZWZpbml0ZWx5IGEgc3ltYm9sIHRvIGZvbGxvdy5cblxuV2FpdCBhIHNlY29uZOKApiBJIGtub3cgSSd2ZSBzZWVuIHRoYXQgbmFtZSBiZWZvcmUuIFJpZ2h0LCBgX19hdWRpdF9wcm9jdGl0bGVfZnJlZWAgaXMgY2FsbGVkICpmcm9tKiBgZXhlY19iaW5wcm1gLiBPa2F5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0IHJlbGF0aW9uc2hpcCBhbmQgdmVyaWZ5IHRoYXQgYXNzb2NpYXRpb24uIExldCdzIGRpZyBpbnRvIGBrZXJuZWwvYXVkaXRzYy5jYCBhbmQgc3BlY2lmaWNhbGx5IGNoZWNrIG91dCBob3cgYF9fYXVkaXRfcHJvY3RpdGxlX2ZyZWVgIGlzIGRlZmluZWQgYW5kIHVzZWQuIExldCdzIHNlZSBob3cgdGhpcyBhbGwgY29ubmVjdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY0ODUsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6NDY6MTUuNTg0OTEzNjE3WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NTE1MDUwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX2F1ZGl0X3Byb2N0aXRsZV9mcmVlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9hdWRpdHNjLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2F1ZGl0c2MuYz05MDA9dm9pZCBhdWRpdF9maWx0ZXJfaW5vZGVzKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCBzdHJ1Y3QgYXVkaXRfY29udGV4dCAqY3R4KVxcbi0tXFxua2VybmVsL2F1ZGl0c2MuYy05MTUtXFxua2VybmVsL2F1ZGl0c2MuYzo5MTY6dm9pZCBfX2F1ZGl0X3Byb2N0aXRsZV9mcmVlKHN0cnVjdCBhdWRpdF9jb250ZXh0ICpjb250ZXh0KVxcbmtlcm5lbC9hdWRpdHNjLmMtOTE3LXtcXG4tLVxcbmtlcm5lbC9hdWRpdHNjLmM9MTA4NT1zdGF0aWMgaW5saW5lIHZvaWQgYXVkaXRfZnJlZV9jb250ZXh0KHN0cnVjdCBhdWRpdF9jb250ZXh0ICpjb250ZXh0KVxcbi0tXFxua2VybmVsL2F1ZGl0c2MuYy0xMDg4LVxcdGF1ZGl0X3Jlc2V0X2NvbnRleHQoY29udGV4dCk7XFxua2VybmVsL2F1ZGl0c2MuYzoxMDg5OlxcdF9fYXVkaXRfcHJvY3RpdGxlX2ZyZWUoY29udGV4dCk7XFxua2VybmVsL2F1ZGl0c2MuYy0xMDkwLVxcdGZyZWVfdHJlZV9yZWZzKGNvbnRleHQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzo0NjoxNS42NTAwNjc4NjVaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ4OTQzMDMwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEF1ZGl0IFByb2Nlc3MgVGl0bGUgRnJlZWluZyBhbmQgUmVsYXRlZCBDYWxscyoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhpcyBhdWRpdC1yZWxhdGVkIGNvZGUsIGFuZCBpdCBsb29rcyBsaWtlIGBfX2F1ZGl0X3Byb2N0aXRsZV9mcmVlYCBpcyBleHBvc2VkIGFuZCBhY3RpdmVseSBiZWluZyBjYWxsZWQuICBUaGF0J3MgbXkgc3RhcnRpbmcgcG9pbnQuIE5vdywgSSdtIHRyeWluZyB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSAqb3RoZXIqIG5vbi1zdGF0aWMgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gdGhpcyBwcm9jZXNzIHRpdGxlIG1hbmFnZW1lbnQsIGp1c3QgdG8gZ2V0IHRoZSBmdWxsIHBpY3R1cmUuIE15IGltbWVkaWF0ZSBuZXh0IG9ic2VydmF0aW9uIGlzIHRoYXQgYGF1ZGl0X2Jwcm1gIGlzIGNhbGxlZCBkaXJlY3RseSAqYWZ0ZXIqIGBhdWRpdF9wcm9jdGl0bGVfZnJlZShhdWRpdF9jb250ZXh0KCkpYC4gSW50cnVpZ2luZy5cblxuSSBrbm93IGBhdWRpdF9icHJtYCBpcyBkZWZpbmVkIGFzIGFuIGlubGluZSBmdW5jdGlvbi4gSW5saW5lIGZ1bmN0aW9ucyBjYW4gYmUgZGVjZXB0aXZlLCBhcyB0aGV5IGNhbiBzb21ldGltZXMgb2JzY3VyZSB0aGUgdHJ1ZSBmdW5jdGlvbiB0aGF0J3MgYmVpbmcgY2FsbGVkLCBzbyBub3cgSSBhbSBleGFtaW5pbmcgdGhlIGltcGxlbWVudGF0aW9uIG9mIGBhdWRpdF9icHJtYC4gSSBjYW4gc2VlIGZyb20gaGVyZSB0aGF0IGl0J3MganVzdCBhIHdyYXBwZXIgZm9yIGBfX2F1ZGl0X2Jwcm1gLCBzbyBJIHJlYWxseSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGhhcHBlbmluZyB3aXRoaW4gYF9fYXVkaXRfYnBybWAgdG8gZ3Jhc3AgdGhlIGZsb3cgaGVyZS4gU28gbGV0J3MgY2hlY2sgb3V0IGBfX2F1ZGl0X2Jwcm1gLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MTY0LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6NDY6MTkuMTM5NTAwNTE2WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozODI3MjUyNzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19hdWRpdF9icHJtXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9hdWRpdHNjLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2F1ZGl0c2MuYz0yNTg5PXZvaWQgX19hdWRpdF9pcGNfc2V0X3Blcm0odW5zaWduZWQgbG9uZyBxYnl0ZXMsIHVpZF90IHVpZCwgZ2lkX3QgZ2lkLCB1bW9kZV90IG1vZGUpXFxuLS1cXG5rZXJuZWwvYXVkaXRzYy5jLTI1OTktXFxua2VybmVsL2F1ZGl0c2MuYzoyNjAwOnZvaWQgX19hdWRpdF9icHJtKHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pXFxua2VybmVsL2F1ZGl0c2MuYy0yNjAxLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6NDY6MTkuNTIyMjM0MjY1WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkzNjM5OTIyMzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIEF1ZGl0IFN1YnN5c3RlbSBmb3IgRnV6emluZyoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBpbnR1aXRpb24gcG9pbnRzIHRvIGBfX2F1ZGl0X2Jwcm1gIGFzIGEgc29saWQgZm9jdXMgc3ltYm9sIGZvciBmdXp6aW5nLiBHaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSBwYXRjaCwgSSBuZWVkIHRvIHZlcmlmeSB3aGljaCBjb25maWd1cmF0aW9ucyBhcmUgZXNzZW50aWFsIGZvciByZWFjaGluZyB0aGlzIGNvZGUgcGF0aC5cblxuRmlyc3QsIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBgQVVESVRTWVNDQUxMYCByZWxpZXMgb24gYm90aCBgQVVESVRgIGFuZCBgSEFWRV9BUkNIX0FVRElUU1lTQ0FMTGAuIFRoZSBsYXR0ZXIgaXMgdHlwaWNhbGx5IGFyY2hpdGVjdHVyZS1zcGVjaWZpYy4gU2luY2UgYEFVRElUU1lTQ0FMTGAgaXMgKmltcGxpY2l0bHkqIGVuYWJsZWQgYXMgYGRlZl9ib29sIHlgIGlmIGBBVURJVGAgYW5kIGBIQVZFX0FSQ0hfQVVESVRTWVNDQUxMYCBhcmUgb24sIHRoZSBrZXkgY29uZmlndXJhdGlvbnMgdG8gZXhwbGljaXRseSBlbmFibGUgYXBwZWFyIHRvIGJlIGBBVURJVGAgYW5kIGBBVURJVFNZU0NBTExgLiBJJ3ZlIGNvbmZpcm1lZCBib3RoIGBBVURJVFNZU0NBTExgIGFuZCBgQVVESVRgIGFyZSwgaW4gZmFjdCwgY29uZmlndXJhYmxlIG9wdGlvbnMuXG5cbk15IGluaXRpYWwgYXNzZXNzbWVudCB3b3VsZCBiZTpcblxuKiAgICoqV29ydGhGdXp6aW5nKio6IFRydWVcbiogICAqKkZvY3VzU3ltYm9scyoqOiBgX19hdWRpdF9wcm9jdGl0bGVfZnJlZWAsIGBfX2F1ZGl0X2Jwcm1gXG4qICAgKipFbmFibGVDb25maWdzKio6IGBBVURJVGAsIGBBVURJVFNZU0NBTExgXG4qICAgKipSZWFzb25pbmcqKjogVGhlIHBhdGNoIHRvdWNoZXMgdGhlIGNvcmUgYGV4ZWN2ZWAgcGF0aCwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYXVkaXQgc3Vic3lzdGVtLiBJdCBtb2RpZmllcyB0aGUgY29kZSB0byBjbGVhciB0aGUgYXVkaXQgcHJvY3RpdGxlIGNvbnRleHQgKmJlZm9yZSogYGF1ZGl0X2Jwcm1gIGlzIGludm9rZWQsIHdoaWNoIGFkZHJlc3NlcyBhIHBvdGVudGlhbCBtZW1vcnkgbGVhayBvciBzdGF0ZSBjb3JydXB0aW9uIGlzc3VlLiBUaGlzIGlzIHJlYWNoYWJsZSwgZnVuY3Rpb25hbCBjb2RlIHdpdGhpbiB0aGUga2VybmVsJ3MgYXVkaXRpbmcuXG5cbkhvd2V2ZXIsIGEgY2xvc2VyIGxvb2sgYXQgYF9fYXVkaXRfcHJvY3RpdGxlX2ZyZWVgIHJldmVhbHMgaXQncyBhIHZlcnkgc2ltcGxlIGZ1bmN0aW9uLiBJdCdzIGVzc2VudGlhbGx5IGp1c3QgYGtmcmVlYCBvbiBhIGBOVUxMYCBjaGVjay4gRnV6emluZyB0aGlzIGRpcmVjdGx5IG1pZ2h0IG5vdCBiZSB2ZXJ5IHByb2R1Y3RpdmUuIGBfX2F1ZGl0X2Jwcm1gLCBvbiB0aGUgb3RoZXIgaGFuZCwgaXMgdGhlIGNlbnRyYWwgYXVkaXQgZnVuY3Rpb24gY2FsbGVkIGR1cmluZyBgZXhlY3ZlYCwgbWFraW5nIGl0IGEgbW9yZSBmcnVpdGZ1bCB0YXJnZXQuIE5ldmVydGhlbGVzcywgSSdsbCBpbmNsdWRlIGJvdGggc2luY2UgYF9fYXVkaXRfcHJvY3RpdGxlX2ZyZWVgIGlzIHRoZSBvbmUgbW9kaWZpZWQgYW5kIG1pZ2h0IHJldmVhbCBpbnRlcmFjdGlvbiB3aXRoIG90aGVyIGZ1bmN0aW9ucy5cblxuTGV0J3MgcXVpY2tseSByZWNvbmZpcm0gYWJvdXQgYEFVRElUU1lTQ0FMTGAgYWdhaW4sIHNpbmNlIGl0J3MgYGRlZl9ib29sIHlgIGl0IHdpbGwgYmUgYXV0b21hdGljYWxseSBzZXQgdG8gYHlgIGlmIGBBVURJVGAgaXMuIEl0J3Mgc2FmZSB0byBpbmNsdWRlIGluIHRoZSBsaXN0IGZvciBjbGFyaXR5LiBJJ2xsIHJlLXZlcmlmeSBpdCdzIGVuYWJsZWQgaW4gYGluaXQvS2NvbmZpZ2AgdG8gYmUgY2VydGFpbi4gWWVzLCBhbGwgaXMgZ29vZC5cblxuSSd2ZSBjaGVja2VkIGZvciBhbnkgb3RoZXIgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMsIGFuZCBJIHRoaW5rIHdlJ3JlIGRvbmUuIExldCdzIHNlbmQgdGhlIHJlc3VsdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc2MjQsIk91dHB1dFRva2VucyI6MTExLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTY2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDA3OjQ2OjI4Ljg4NjIyODMyOVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkxMjE3Njk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJBVURJVFwiLFxuICAgIFwiQVVESVRTWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19hdWRpdF9wcm9jdGl0bGVfZnJlZVwiLFxuICAgIFwiX19hdWRpdF9icHJtXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgZXhlY3ZlIHBhdGggdG8gY2xlYXIgdGhlIGF1ZGl0IHByb2N0aXRsZSBjb250ZXh0IGJlZm9yZSBgYXVkaXRfYnBybWAgaXMgY2FsbGVkLiBUaGlzIGZpeGVzIGEgcG90ZW50aWFsIG1lbW9yeSBsZWFrIG9yIHN0YXRlIGlzc3VlLiBUaGlzIGlzIHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbCBjb2RlIGluIHRoZSBrZXJuZWwncyBhdWRpdCBzdWJzeXN0ZW0uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQVVESVRcIixcbiAgICBcIkFVRElUU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fYXVkaXRfcHJvY3RpdGxlX2ZyZWVcIixcbiAgICBcIl9fYXVkaXRfYnBybVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIGV4ZWN2ZSBwYXRoIHRvIGNsZWFyIHRoZSBhdWRpdCBwcm9jdGl0bGUgY29udGV4dCBiZWZvcmUgYGF1ZGl0X2Jwcm1gIGlzIGNhbGxlZC4gVGhpcyBmaXhlcyBhIHBvdGVudGlhbCBtZW1vcnkgbGVhayBvciBzdGF0ZSBpc3N1ZS4gVGhpcyBpcyByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwgY29kZSBpbiB0aGUga2VybmVsJ3MgYXVkaXQgc3Vic3lzdGVtLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowsw4zg[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-27 07:20:01 +0000 UTC FinishedAt: 2026-07-27 07:46:30 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "vfs", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git", "commit_hash": "24f3a09163caad1dde3f801f1bafc69f1991a357", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "AUDIT", "AUDITSYSCALL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "vfs", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git", "commit_hash": "24f3a09163caad1dde3f801f1bafc69f1991a357", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "AUDIT", "AUDITSYSCALL" ], "series_id": "24864c8b-db9e-43cd-a500-df7e1ff782f7" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "__audit_proctitle_free", "__audit_bprm" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDA3OjQ1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FVRElUJiMzNDssCiAgICAmIzM0O0FVRElUU1lTQ0FMTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19fYXVkaXRfcHJvY3RpdGxlX2ZyZWUmIzM0OywKICAgICYjMzQ7X19hdWRpdF9icHJtJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIGV4ZWN2ZSBwYXRoIHRvIGNsZWFyIHRoZSBhdWRpdCBwcm9jdGl0bGUgY29udGV4dCBiZWZvcmUgYGF1ZGl0X2Jwcm1gIGlzIGNhbGxlZC4gVGhpcyBmaXhlcyBhIHBvdGVudGlhbCBtZW1vcnkgbGVhayBvciBzdGF0ZSBpc3N1ZS4gVGhpcyBpcyByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwgY29kZSBpbiB0aGUga2VybmVsJiMzOTtzIGF1ZGl0IHN1YnN5c3RlbS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzo0NTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGVkNzQzZmNhODM1MGE3ZmM1NjBiNjFiYzg2YTNlZmMzM2YxMDdlOGFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCAyNyAwNzo0NTo0NCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9leGVjLmMgYi9mcy9leGVjLmNcbmluZGV4IGI5MmZlN2RiMTc2Y2ZmLi5iZDUxNDg5ZGVjMjMyYiAxMDA2NDRcbi0tLSBhL2ZzL2V4ZWMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvZXhlYy5jXG5AQCAtMTc0NCw2ICYjNDM7MTc0NCw4IEBAIHN0YXRpYyBpbnQgZXhlY19iaW5wcm0oc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSlcbiBcdFx0XHRmcHV0KGV4ZWMpO1xuIFx0fVxuIFxuJiM0MztcdC8qIGNsZWFyIHByb2N0aXRsZSBpbiBhdWRpdCBjb250ZXh0IHRvIGFsbG93IHJlcGxhY2VtZW50ICovXG4mIzQzO1x0YXVkaXRfcHJvY3RpdGxlX2ZyZWUoYXVkaXRfY29udGV4dCgpKTtcbiBcdGF1ZGl0X2Jwcm0oYnBybSk7XG4gXHR0cmFjZV9zY2hlZF9wcm9jZXNzX2V4ZWMoY3VycmVudCwgb2xkX3BpZCwgYnBybSk7XG4gXHRwdHJhY2VfZXZlbnQoUFRSQUNFX0VWRU5UX0VYRUMsIG9sZF92cGlkKTtcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2F1ZGl0LmggYi9pbmNsdWRlL2xpbnV4L2F1ZGl0LmhcbmluZGV4IDQ1YWJiMzcyMmQzMDRjLi4wM2FlNTYzY2EzNDg5YyAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvYXVkaXQuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9hdWRpdC5oXG5AQCAtMzIwLDYgJiM0MzszMjAsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYXVkaXRfY2ZnX2xzbShjb25zdCBzdHJ1Y3QgbHNtX2lkICpsc21pZCwgaW50IGZsYWdzKVxuIC8qIFRoZXNlIGFyZSBkZWZpbmVkIGluIGF1ZGl0c2MuYyAqL1xuIFx0XHRcdFx0LyogUHVibGljIEFQSSAqL1xuIGV4dGVybiBpbnQgIGF1ZGl0X2FsbG9jKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzayk7XG4mIzQzO2V4dGVybiB2b2lkIF9fYXVkaXRfcHJvY3RpdGxlX2ZyZWUoc3RydWN0IGF1ZGl0X2NvbnRleHQgKmNvbnRleHQpO1xuIGV4dGVybiB2b2lkIF9fYXVkaXRfZnJlZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spO1xuIGV4dGVybiB2b2lkIF9fYXVkaXRfdXJpbmdfZW50cnkodTggb3ApO1xuIGV4dGVybiB2b2lkIF9fYXVkaXRfdXJpbmdfZXhpdChpbnQgc3VjY2VzcywgbG9uZyBjb2RlKTtcbkBAIC0zNTMsNiAmIzQzOzM1NCwxMSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgYXVkaXRfZHVtbXlfY29udGV4dCh2b2lkKVxuIFx0dm9pZCAqcCA9IGF1ZGl0X2NvbnRleHQoKTtcbiBcdHJldHVybiAhcCB8fCAqKGludCAqKXA7XG4gfVxuJiM0MztzdGF0aWMgaW5saW5lIHZvaWQgYXVkaXRfcHJvY3RpdGxlX2ZyZWUoc3RydWN0IGF1ZGl0X2NvbnRleHQgKmNvbnRleHQpXG4mIzQzO3tcbiYjNDM7XHRpZiAodW5saWtlbHkoIWF1ZGl0X2R1bW15X2NvbnRleHQoKSkpXG4mIzQzO1x0XHRfX2F1ZGl0X3Byb2N0aXRsZV9mcmVlKGNvbnRleHQpO1xuJiM0Mzt9XG4gc3RhdGljIGlubGluZSB2b2lkIGF1ZGl0X2ZyZWUoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKVxuIHtcbiBcdGlmICh1bmxpa2VseSh0YXNrLVx1MDAzZWF1ZGl0X2NvbnRleHQpKVxuQEAgLTQ3MCw2ICYjNDM7NDc2LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGF1ZGl0X2Jwcm0oc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSlcbiBcdGlmICh1bmxpa2VseSghYXVkaXRfZHVtbXlfY29udGV4dCgpKSlcbiBcdFx0X19hdWRpdF9icHJtKGJwcm0pO1xuIH1cbiYjNDM7XG4gc3RhdGljIGlubGluZSBpbnQgYXVkaXRfc29ja2V0Y2FsbChpbnQgbmFyZ3MsIHVuc2lnbmVkIGxvbmcgKmFyZ3MpXG4ge1xuIFx0aWYgKHVubGlrZWx5KCFhdWRpdF9kdW1teV9jb250ZXh0KCkpKVxuQEAgLTYwNSw2ICYjNDM7NjEyLDggQEAgc3RhdGljIGlubGluZSBpbnQgYXVkaXRfYWxsb2Moc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKVxuIHtcbiBcdHJldHVybiAwO1xuIH1cbiYjNDM7c3RhdGljIGlubGluZSB2b2lkIGF1ZGl0X3Byb2N0aXRsZV9mcmVlKHN0cnVjdCBhdWRpdF9jb250ZXh0ICpjb250ZXh0KVxuJiM0Mzt7IH1cbiBzdGF0aWMgaW5saW5lIHZvaWQgYXVkaXRfZnJlZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spXG4geyB9XG4gc3RhdGljIGlubGluZSB2b2lkIGF1ZGl0X3VyaW5nX2VudHJ5KHU4IG9wKVxuZGlmZiAtLWdpdCBhL2tlcm5lbC9hdWRpdHNjLmMgYi9rZXJuZWwvYXVkaXRzYy5jXG5pbmRleCA2NjEwZTY2N2M3MjhhYS4uNjk0ODRhYjJjOGJjNWIgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYXVkaXRzYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYXVkaXRzYy5jXG5AQCAtOTEzLDcgJiM0Mzs5MTMsNyBAQCB2b2lkIGF1ZGl0X2ZpbHRlcl9pbm9kZXMoc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssIHN0cnVjdCBhdWRpdF9jb250ZXh0ICpjdHgpXG4gXHRyY3VfcmVhZF91bmxvY2soKTtcbiB9XG4gXG4tc3RhdGljIGlubGluZSB2b2lkIGF1ZGl0X3Byb2N0aXRsZV9mcmVlKHN0cnVjdCBhdWRpdF9jb250ZXh0ICpjb250ZXh0KVxuJiM0Mzt2b2lkIF9fYXVkaXRfcHJvY3RpdGxlX2ZyZWUoc3RydWN0IGF1ZGl0X2NvbnRleHQgKmNvbnRleHQpXG4ge1xuIFx0a2ZyZWUoY29udGV4dC1cdTAwM2Vwcm9jdGl0bGUudmFsdWUpO1xuIFx0Y29udGV4dC1cdTAwM2Vwcm9jdGl0bGUudmFsdWUgPSBOVUxMO1xuQEAgLTEwODYsNyAmIzQzOzEwODYsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYXVkaXRfZnJlZV9jb250ZXh0KHN0cnVjdCBhdWRpdF9jb250ZXh0ICpjb250ZXh0KVxuIHtcbiBcdC8qIHJlc2V0dGluZyBpcyBleHRyYSB3b3JrLCBidXQgaXQgaXMgbGlrZWx5IGp1c3Qgbm9pc2UgKi9cbiBcdGF1ZGl0X3Jlc2V0X2NvbnRleHQoY29udGV4dCk7XG4tXHRhdWRpdF9wcm9jdGl0bGVfZnJlZShjb250ZXh0KTtcbiYjNDM7XHRfX2F1ZGl0X3Byb2N0aXRsZV9mcmVlKGNvbnRleHQpO1xuIFx0ZnJlZV90cmVlX3JlZnMoY29udGV4dCk7XG4gXHRrZnJlZShjb250ZXh0LVx1MDAzZWZpbHRlcmtleSk7XG4gXHRrZnJlZShjb250ZXh0KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzo0NTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QVVESVQmIzM0OywKICAgICYjMzQ7QVVESVRTWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19hdWRpdF9wcm9jdGl0bGVfZnJlZSYjMzQ7LAogICAgJiMzNDtfX2F1ZGl0X2Jwcm0mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgZXhlY3ZlIHBhdGggdG8gY2xlYXIgdGhlIGF1ZGl0IHByb2N0aXRsZSBjb250ZXh0IGJlZm9yZSBgYXVkaXRfYnBybWAgaXMgY2FsbGVkLiBUaGlzIGZpeGVzIGEgcG90ZW50aWFsIG1lbW9yeSBsZWFrIG9yIHN0YXRlIGlzc3VlLiBUaGlzIGlzIHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbCBjb2RlIGluIHRoZSBrZXJuZWwmIzM5O3MgYXVkaXQgc3Vic3lzdGVtLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZWQ3NDNmY2E4MzUwYTdmYzU2MGI2MWJjODZhM2VmYzMzZjEwN2U4YQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gSnVsIDI3IDA3OjQ1OjQ0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZnMvZXhlYy5jIGIvZnMvZXhlYy5jCmluZGV4IGI5MmZlN2RiMTc2Y2ZmLi5iZDUxNDg5ZGVjMjMyYiAxMDA2NDQKLS0tIGEvZnMvZXhlYy5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2V4ZWMuYwpAQCAtMTc0NCw2ICYjNDM7MTc0NCw4IEBAIHN0YXRpYyBpbnQgZXhlY19iaW5wcm0oc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSkKIAkJCWZwdXQoZXhlYyk7CiAJfQogCiYjNDM7CS8qIGNsZWFyIHByb2N0aXRsZSBpbiBhdWRpdCBjb250ZXh0IHRvIGFsbG93IHJlcGxhY2VtZW50ICovCiYjNDM7CWF1ZGl0X3Byb2N0aXRsZV9mcmVlKGF1ZGl0X2NvbnRleHQoKSk7CiAJYXVkaXRfYnBybShicHJtKTsKIAl0cmFjZV9zY2hlZF9wcm9jZXNzX2V4ZWMoY3VycmVudCwgb2xkX3BpZCwgYnBybSk7CiAJcHRyYWNlX2V2ZW50KFBUUkFDRV9FVkVOVF9FWEVDLCBvbGRfdnBpZCk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2F1ZGl0LmggYi9pbmNsdWRlL2xpbnV4L2F1ZGl0LmgKaW5kZXggNDVhYmIzNzIyZDMwNGMuLjAzYWU1NjNjYTM0ODljIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2F1ZGl0LmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9hdWRpdC5oCkBAIC0zMjAsNiAmIzQzOzMyMCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhdWRpdF9jZmdfbHNtKGNvbnN0IHN0cnVjdCBsc21faWQgKmxzbWlkLCBpbnQgZmxhZ3MpCiAvKiBUaGVzZSBhcmUgZGVmaW5lZCBpbiBhdWRpdHNjLmMgKi8KIAkJCQkvKiBQdWJsaWMgQVBJICovCiBleHRlcm4gaW50ICBhdWRpdF9hbGxvYyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spOwomIzQzO2V4dGVybiB2b2lkIF9fYXVkaXRfcHJvY3RpdGxlX2ZyZWUoc3RydWN0IGF1ZGl0X2NvbnRleHQgKmNvbnRleHQpOwogZXh0ZXJuIHZvaWQgX19hdWRpdF9mcmVlKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzayk7CiBleHRlcm4gdm9pZCBfX2F1ZGl0X3VyaW5nX2VudHJ5KHU4IG9wKTsKIGV4dGVybiB2b2lkIF9fYXVkaXRfdXJpbmdfZXhpdChpbnQgc3VjY2VzcywgbG9uZyBjb2RlKTsKQEAgLTM1Myw2ICYjNDM7MzU0LDExIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBhdWRpdF9kdW1teV9jb250ZXh0KHZvaWQpCiAJdm9pZCAqcCA9IGF1ZGl0X2NvbnRleHQoKTsKIAlyZXR1cm4gIXAgfHwgKihpbnQgKilwOwogfQomIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBhdWRpdF9wcm9jdGl0bGVfZnJlZShzdHJ1Y3QgYXVkaXRfY29udGV4dCAqY29udGV4dCkKJiM0Mzt7CiYjNDM7CWlmICh1bmxpa2VseSghYXVkaXRfZHVtbXlfY29udGV4dCgpKSkKJiM0MzsJCV9fYXVkaXRfcHJvY3RpdGxlX2ZyZWUoY29udGV4dCk7CiYjNDM7fQogc3RhdGljIGlubGluZSB2b2lkIGF1ZGl0X2ZyZWUoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKQogewogCWlmICh1bmxpa2VseSh0YXNrLSZndDthdWRpdF9jb250ZXh0KSkKQEAgLTQ3MCw2ICYjNDM7NDc2LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGF1ZGl0X2Jwcm0oc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSkKIAlpZiAodW5saWtlbHkoIWF1ZGl0X2R1bW15X2NvbnRleHQoKSkpCiAJCV9fYXVkaXRfYnBybShicHJtKTsKIH0KJiM0MzsKIHN0YXRpYyBpbmxpbmUgaW50IGF1ZGl0X3NvY2tldGNhbGwoaW50IG5hcmdzLCB1bnNpZ25lZCBsb25nICphcmdzKQogewogCWlmICh1bmxpa2VseSghYXVkaXRfZHVtbXlfY29udGV4dCgpKSkKQEAgLTYwNSw2ICYjNDM7NjEyLDggQEAgc3RhdGljIGlubGluZSBpbnQgYXVkaXRfYWxsb2Moc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKQogewogCXJldHVybiAwOwogfQomIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBhdWRpdF9wcm9jdGl0bGVfZnJlZShzdHJ1Y3QgYXVkaXRfY29udGV4dCAqY29udGV4dCkKJiM0Mzt7IH0KIHN0YXRpYyBpbmxpbmUgdm9pZCBhdWRpdF9mcmVlKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaykKIHsgfQogc3RhdGljIGlubGluZSB2b2lkIGF1ZGl0X3VyaW5nX2VudHJ5KHU4IG9wKQpkaWZmIC0tZ2l0IGEva2VybmVsL2F1ZGl0c2MuYyBiL2tlcm5lbC9hdWRpdHNjLmMKaW5kZXggNjYxMGU2NjdjNzI4YWEuLjY5NDg0YWIyYzhiYzViIDEwMDY0NAotLS0gYS9rZXJuZWwvYXVkaXRzYy5jCiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9hdWRpdHNjLmMKQEAgLTkxMyw3ICYjNDM7OTEzLDcgQEAgdm9pZCBhdWRpdF9maWx0ZXJfaW5vZGVzKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCBzdHJ1Y3QgYXVkaXRfY29udGV4dCAqY3R4KQogCXJjdV9yZWFkX3VubG9jaygpOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgYXVkaXRfcHJvY3RpdGxlX2ZyZWUoc3RydWN0IGF1ZGl0X2NvbnRleHQgKmNvbnRleHQpCiYjNDM7dm9pZCBfX2F1ZGl0X3Byb2N0aXRsZV9mcmVlKHN0cnVjdCBhdWRpdF9jb250ZXh0ICpjb250ZXh0KQogewogCWtmcmVlKGNvbnRleHQtJmd0O3Byb2N0aXRsZS52YWx1ZSk7CiAJY29udGV4dC0mZ3Q7cHJvY3RpdGxlLnZhbHVlID0gTlVMTDsKQEAgLTEwODYsNyAmIzQzOzEwODYsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYXVkaXRfZnJlZV9jb250ZXh0KHN0cnVjdCBhdWRpdF9jb250ZXh0ICpjb250ZXh0KQogewogCS8qIHJlc2V0dGluZyBpcyBleHRyYSB3b3JrLCBidXQgaXQgaXMgbGlrZWx5IGp1c3Qgbm9pc2UgKi8KIAlhdWRpdF9yZXNldF9jb250ZXh0KGNvbnRleHQpOwotCWF1ZGl0X3Byb2N0aXRsZV9mcmVlKGNvbnRleHQpOwomIzQzOwlfX2F1ZGl0X3Byb2N0aXRsZV9mcmVlKGNvbnRleHQpOwogCWZyZWVfdHJlZV9yZWZzKGNvbnRleHQpOwogCWtmcmVlKGNvbnRleHQtJmd0O2ZpbHRlcmtleSk7CiAJa2ZyZWUoY29udGV4dCk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDA3OjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4OTEKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAyMDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBBdWRpdCBTeXN0ZW0gUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgZnMvZXhlYy5jYCwgYGluY2x1ZGUvbGludXgvYXVkaXQuaGAsIGFuZCBga2VybmVsL2F1ZGl0c2MuY2AuIEl0JiMzOTtzIHByb21vdGluZyBgYXVkaXRfcHJvY3RpdGxlX2ZyZWVgIHRvIGBfX2F1ZGl0X3Byb2N0aXRsZV9mcmVlYCBhbmQgc3RyYXRlZ2ljYWxseSBjYWxsaW5nIGl0IGZyb20gd2l0aGluIGBleGVjX2JpbnBybWAgaW4gYGZzL2V4ZWMuY2AgKmJlZm9yZSogdGhlIGBhdWRpdF9icHJtKGJwcm0pYCBjYWxsLiBUaGF0JiMzOTtzIGludGVyZXN0aW5nLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aHkuCgpGaXJzdCwgbGV0JiMzOTtzIGxvb2sgYXQgdGhlIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBga2VybmVsL2F1ZGl0c2MuY2AgcmVsaWVzIG9uIGBDT05GSUdfQVVESVRTWVNDQUxMYC4gIGBmcy9leGVjLmNgIGlzIGFsd2F5cyBjb21waWxlZCwgd2hpY2ggbWFrZXMgc2Vuc2UuIGBpbmNsdWRlL2xpbnV4L2F1ZGl0LmhgIGlzIGFsd2F5cyBpbmNsdWRlZCwgd2hpY2ggaXMgZXhwZWN0ZWQuIEhvd2V2ZXIsIHRoZSBgYXVkaXRfcHJvY3RpdGxlX2ZyZWVgIGZ1bmN0aW9uIGlzIGVmZmVjdGl2ZWx5IGEgbm8tb3AgdW5sZXNzIGVpdGhlciBgQ09ORklHX0FVRElUYCBvciBgQ09ORklHX0FVRElUU1lTQ0FMTGAgaXMgZW5hYmxlZC4gVGhhdCBzaW1wbGlmaWVzIHRoaW5ncyBhIGJpdDsgdGhlIG5vLW9wIGNvbmRpdGlvbiBnaXZlcyB1cyBhIGNsZWFyIHBhdGggZm9yIGNvbnRyb2wgZmxvdy4KCk5vdywgSSYjMzk7bGwgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhlIGBrZXJuZWwvTWFrZWZpbGVgIHRvIGNvbmZpcm0gdGhlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIG9mIGBhdWRpdHNjLmNgLiBJdCYjMzk7cyB1c3VhbGx5IGJldHRlciB0byBiZSBleHBsaWNpdCBhYm91dCB0aGVzZSB0aGluZ3MuIFdlIHdhbnQgdG8gYmUgc3VyZSB0aGF0IHdlIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBmdWxseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdWRpdHNjLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL01ha2VmaWxlPTk3PW9iai0kKENPTkZJR19BVURJVCkgJiM0Mzs9IGF1ZGl0Lm8gYXVkaXRmaWx0ZXIub1xua2VybmVsL01ha2VmaWxlOjk4Om9iai0kKENPTkZJR19BVURJVFNZU0NBTEwpICYjNDM7PSBhdWRpdHNjLm8gYXVkaXRfd2F0Y2gubyBhdWRpdF9mc25vdGlmeS5vIGF1ZGl0X3RyZWUub1xua2VybmVsL01ha2VmaWxlLTk5LW9iai0kKENPTkZJR19HQ09WX0tFUk5FTCkgJiM0Mzs9IGdjb3YvXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDc6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzUwOQoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKktlcm5lbCBBdWRpdGluZyBDb25maWd1cmF0aW9uIOKAkyBBIFF1aWNrIENoZWNrKioKClJpZ2h0LCBzbyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgc2l0dWF0aW9uIHdoZXJlIHdlIG5lZWQgYXVkaXQgc3lzdGVtIGNhbGwgbG9nZ2luZy4gVGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoZSBkZXBlbmRlbmN5IOKAkyB3ZSBuZWVkIHRvIHZlcmlmeSB0aGF0IGBDT05GSUdfQVVESVRTWVNDQUxMYCBpcyBwcm9wZXJseSBjb25maWd1cmVkLCBhbmQgdGhhdCBtZWFucyBkaXZpbmcgaW50byB0aGUgS2NvbmZpZyBmaWxlcywgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYGluaXRgIGRpcmVjdG9yeS4gV2UgbmVlZCB0byByYXBpZGx5IGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGVuc3VyZSB0aGUgYnVpbGQgc3lzdGVtIGtub3dzIHdoYXQmIzM5O3MgcmVxdWlyZWQgdG8gbWFrZSB0aGF0IG9wdGlvbiBhdmFpbGFibGUuIExldCYjMzk7cyBzZWUgd2hhdCBuZWVkcyB0byBiZSBpbiBwbGFjZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQVVESVRTWVNDQUxMJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5pdC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luaXQvS2NvbmZpZz01NDU9Y29uZmlnIEhBVkVfQVJDSF9BVURJVFNZU0NBTExcbi0tXG5pbml0L0tjb25maWctNTQ3LVxuaW5pdC9LY29uZmlnOjU0ODpjb25maWcgQVVESVRTWVNDQUxMXG5pbml0L0tjb25maWctNTQ5LVx0ZGVmX2Jvb2wgeVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDA3OjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3NzcKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOgoKKipDb25kaXRpb25hbCBEZWZpbml0aW9uIGFuZCBBdWRpdGluZyBMb2dpYyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBkZWZpbml0aW9uLCBhbmQgSSBzZWUgdGhhdCBgZGVmX2Jvb2wgeWAgaXMgZ29pbmcgdG8gYmUgc2V0IGlmICpib3RoKiBgQVVESVRgIGFuZCBgSEFWRV9BUkNIX0FVRElUU1lTQ0FMTGAgYXJlIGVuYWJsZWQuIFRoYXQmIzM5O3MgYSBwcmV0dHkgY2xlYXIgY29uZGl0aW9uYWwuIFRoaXMgbWVhbnMgdGhlIHN5c3RlbSYjMzk7cyBhdWRpdGluZyBmZWF0dXJlcyBhcmUgYWN0aXZhdGVkLCBhbmQgc3BlY2lmaWNhbGx5LCB0aGUgYXJjaGl0ZWN0dXJlIGhhcyBzdXBwb3J0IGZvciBhdWRpdCBzeXN0ZW0gY2FsbHMuIFRoaXMgbWFrZXMgc2Vuc2UuIFdlJiMzOTtyZSB0YWxraW5nIGFib3V0IHNldHRpbmcgdXAgYSBib29sZWFuIHZhcmlhYmxlLCBsaWtlbHkgdG8gY29udHJvbCBzb21lIGFzcGVjdCBvZiBhdWRpdCBmdW5jdGlvbmFsaXR5LiBUaGUgZGVwZW5kZW5jeSBvbiBib3RoIGNvbmRpdGlvbnMgaW5kaWNhdGVzIGEgbGV2ZWwgb2YgZ3JhbnVsYXJpdHkgLSBhdWRpdGluZyB3b24mIzM5O3QgYmUgdHJpZ2dlcmVkIHVubGVzcyBib3RoIHRoZSBnZW5lcmFsIGF1ZGl0aW5nIGZyYW1ld29yayAqYW5kKiBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgc3VwcG9ydCBhcmUgaW4gcGxhY2UuIFRoaXMgbWFrZXMgdGhlIG92ZXJhbGwgc3lzdGVtIGxlc3MgYnJpdHRsZSB0aGFuIGlmIGl0IHdlcmUgY29uZGl0aW9uYWwgb24gb25lIG9mIHRob3NlIGRlZmluaXRpb25zIGFsb25lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDA3OjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBBVURJVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luaXQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbml0L0tjb25maWc9NTI2PWNvbmZpZyBDUk9TU19NRU1PUllfQVRUQUNIXG4tLVxuaW5pdC9LY29uZmlnLTUzNS1cbmluaXQvS2NvbmZpZzo1MzY6Y29uZmlnIEFVRElUXG5pbml0L0tjb25maWctNTM3LVx0Ym9vbCBcJiMzNDtBdWRpdGluZyBzdXBwb3J0XCYjMzQ7XG4tLVxuaW5pdC9LY29uZmlnPTU0NT1jb25maWcgSEFWRV9BUkNIX0FVRElUU1lTQ0FMTFxuLS1cbmluaXQvS2NvbmZpZy01NDctXG5pbml0L0tjb25maWc6NTQ4OmNvbmZpZyBBVURJVFNZU0NBTExcbmluaXQvS2NvbmZpZy01NDktXHRkZWZfYm9vbCB5XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDc6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDE1NQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIHByZXNlbnRlZCBhcyBhIHN0cmVhbSBvZiB0aG91Z2h0OgoKKipDaGVja2luZyBEZXBlbmRlbmNpZXMgZm9yIEFVRElUU1lTQ0FMTCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBgQVVESVRTWVNDQUxMYCBtb2R1bGUgb3IgZnVuY3Rpb24gb3Igd2hhdGV2ZXIgaXQgaXMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aC4gQmVmb3JlIGRpdmluZyBkZWVwLCB0aGUgZmlyc3QgdGhpbmcgdGhhdCBhbHdheXMgY29tZXMgdG8gbWluZCBpcyB0aGUgZGVwZW5kZW5jaWVzLiBXaGVyZSBkb2VzIHRoaXMgdGhpbmcgbGl2ZT8gV2hhdCBvdGhlciBwaWVjZXMgb2YgdGhlIHN5c3RlbSByZWx5IG9uIGl0PyBXaGF0IGNvdWxkIGJyZWFrIGlmIEkgY2hhbmdlIGl0IG9yIG1vdmUgaXQsIG9yIGdvZCBmb3JiaWQsIHJlbW92ZSBpdD8gU28sIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgcnVubmluZyBhIHF1aWNrIGNoZWNrIG9uIGl0cyBkZXBlbmRlbmNpZXMuIEkmIzM5O20gZ29pbmcgdG8gcnVuIHRoZSBjb21tYW5kLCBsZXQmIzM5O3MgY2hlY2sgYGRlcGVuZHMgb25gIGZvciBgQVVESVRTWVNDQUxMYC4gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgaXRzIHJvbGUgaW4gdGhlIGVjb3N5c3RlbSBiZWZvcmUgSSBzdGFydCB0byBtYWtlIGFueSBqdWRnbWVudHMgb3IgZXZlbiBjb25zaWRlciB0aGUgbmV4dCBzdGVwcy4gR290dGEgdW5kZXJzdGFuZCB0aGUgbGFuZHNjYXBlIGZpcnN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2luaXQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDU0NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNTQ1Olx0Y29uZmlnIEhBVkVfQVJDSF9BVURJVFNZU0NBTExcbiA1NDY6XHRcdGJvb2xcbiA1NDc6XHRcbiA1NDg6XHRjb25maWcgQVVESVRTWVNDQUxMXG4gNTQ5Olx0XHRkZWZfYm9vbCB5XG4gNTUwOlx0XHRkZXBlbmRzIG9uIEFVRElUIFx1MDAyNlx1MDAyNiBIQVZFX0FSQ0hfQVVESVRTWVNDQUxMXG4gNTUxOlx0XHRzZWxlY3QgRlNOT1RJRllcbiA1NTI6XHRcbiA1NTM6XHRzb3VyY2UgXCYjMzQ7a2VybmVsL2lycS9LY29uZmlnXCYjMzQ7XG4gNTU0Olx0c291cmNlIFwmIzM0O2tlcm5lbC90aW1lL0tjb25maWdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDc6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDUzNwoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDczCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3Npbmc6CgoqKkFuYWx5emluZyB0aGUgQXVkaXQgSW1wYWN0KioKClJpZ2h0LCBzbyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGFuIGBBVURJVGAtcmVsYXRlZCBpc3N1ZS4gVGhlIHBhdGNoIHNwZWNpZmljYWxseSB0YXJnZXRzIGBleGVjX2JpbnBybWAgd2l0aGluIGBmcy9leGVjLmNgLiBHaXZlbiBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBrZXJuZWwgaW50ZXJuYWxzLCB0aGF0IGZ1bmN0aW9uJiMzOTtzIGRlZmluaXRlbHkgYSBjcml0aWNhbCBwYXRoIOKAkyBpdCYjMzk7cyByZWFjaGFibGUsIGFuZCBjaGFuZ2VzIHRoZXJlIHdpbGwgKmFic29sdXRlbHkqIGhhdmUgYW4gaW1wYWN0LiBUaGUgY29kZSBpcyBmdW5jdGlvbmFsLCBzbyBpdCB3aWxsIHdvcmsuIEkmIzM5O20gYXNzdW1pbmcgdGhpcyBwYXRjaCBpcyBmaXhpbmcgYSBtZW1vcnkgbGVhaywgbGlrZWx5IHJlbGF0ZWQgdG8gaG93IHRoZSBhdWRpdCBwcm9jdGl0bGUgaXMgaGFuZGxlZCBkdXJpbmcgYGV4ZWN2ZWAuIEkmIzM5O3ZlIHNlZW4gc2ltaWxhciBpc3N1ZXMgcG9wIHVwIGJlZm9yZS4KCkFscmlnaHQsIGxldCYjMzk7cyBwdWxsIHVwIGBleGVjX2JpbnBybWAgaW4gYGZzL2V4ZWMuY2AgYW5kIHRha2UgYSBjbG9zZXIgbG9vay4gSSYjMzk7bGwgbmVlZCB0byBjb25maXJtIHRoZSBleGFjdCBuYXR1cmUgb2YgdGhlIHByb2JsZW0gYW5kIHZlcmlmeSB0aGUgcGF0Y2gmIzM5O3MgaW1wbGVtZW50YXRpb24gdG8gc2VlIGlmIHRoaXMgc29sdmVzIHRoZSBpc3N1ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDc6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZXhlY19iaW5wcm0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9leGVjLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZXhlYy5jPTE0MjU9c3RhdGljIHN0cnVjdCBsaW51eF9iaW5wcm0gKmFsbG9jX2Jwcm0oaW50IGZkLCBzdHJ1Y3QgZmlsZW5hbWUgKmZpbGVuYW1lLCBpbnQgZmxhZ3MpXG4tLVxuZnMvZXhlYy5jLTE0NzYtXHQgKiBicHJtX2V4ZWN2ZSgpLiAgSW5kZWVkLCB0aGUga2VybmVsIHNob3VsZCBub3QgdHJ5IHRvIHBhcnNlIHRoZVxuZnMvZXhlYy5jOjE0Nzc6XHQgKiBjb250ZW50IG9mIHRoZSBmaWxlIHdpdGggZXhlY19iaW5wcm0oKSBub3IgY2hhbmdlIHRoZSBjYWxsaW5nXG5mcy9leGVjLmMtMTQ3OC1cdCAqIHRocmVhZCwgd2hpY2ggbWVhbnMgdGhhdCB0aGUgZm9sbG93aW5nIHNlY3VyaXR5IGZ1bmN0aW9ucyB3aWxsIG5vdFxuLS1cbmZzL2V4ZWMuYz0xNjc1PXN0YXRpYyBpbnQgc2VhcmNoX2JpbmFyeV9oYW5kbGVyKHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pXG4tLVxuZnMvZXhlYy5jLTE3MDgtLyogYmluZm10IGhhbmRsZXJzIHdpbGwgY2FsbCBiYWNrIGludG8gYmVnaW5fbmV3X2V4ZWMoKSBvbiBzdWNjZXNzLiAqL1xuZnMvZXhlYy5jOjE3MDk6c3RhdGljIGludCBleGVjX2JpbnBybShzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKVxuZnMvZXhlYy5jLTE3MTAte1xuLS1cbmZzL2V4ZWMuYz0xNzU2PXN0YXRpYyBpbnQgYnBybV9leGVjdmUoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSlcbi0tXG5mcy9leGVjLmMtMTc2NC1cdC8qXG5mcy9leGVjLmM6MTc2NTpcdCAqIENoZWNrIGZvciB1bnNhZmUgZXhlY3V0aW9uIHN0YXRlcyBiZWZvcmUgZXhlY19iaW5wcm0oKSwgd2hpY2hcbmZzL2V4ZWMuYy0xNzY2LVx0ICogd2lsbCBjYWxsIGJhY2sgaW50byBiZWdpbl9uZXdfZXhlYygpLCBpbnRvIGJwcm1fY3JlZHNfZnJvbV9maWxlKCksXG4tLVxuZnMvZXhlYy5jLTE3NzktXG5mcy9leGVjLmM6MTc4MDpcdHJldHZhbCA9IGV4ZWNfYmlucHJtKGJwcm0pO1xuZnMvZXhlYy5jLTE3ODEtXHRpZiAocmV0dmFsIFx1MDAzYyAwKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MjQ5CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMjQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRXhlY3ZlIEZsb3cgYW5kIEF1ZGl0IFRpdGxlIEZyZWVpbmcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGhvdyBpdCBpbnRlZ3JhdGVzIGludG8gdGhlIGBleGVjdmVgIHN5c3RlbSBjYWxsIGZsb3cuIFRoZSBjcnVjaWFsIHRoaW5nIGhlcmUgaXMgYGV4ZWNfYmlucHJtYCB3aGljaCBpcyBjYWxsZWQgYnkgYGJwcm1fZXhlY3ZlYCwgYW5kIHRoYXQmIzM5O3MgY2FsbGVkIGJ5IGBkb19leGVjdmVhdF9jb21tb25gLiBUaGF0JiMzOTtzIG15IGNvcmUgYGV4ZWN2ZWAgcGF0aC4gVGhlIHBhdGNoIHNwZWNpZmljYWxseSBjYWxscyBgYXVkaXRfcHJvY3RpdGxlX2ZyZWUoYXVkaXRfY29udGV4dCgpKWAgd2l0aGluIGBleGVjX2JpbnBybWAuIFNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCwgZnVuY3Rpb25hbGx5LgoKTm93LCBJIG5lZWQgdG8gcGljayBnb29kIHRhcmdldHMgZm9yIGZ1cnRoZXIgYW5hbHlzaXMsIHNwZWNpZmljYWxseSBBUEkgZW50cnkgcG9pbnRzLiBUaGUgcHJvbXB0IGFjdHVhbGx5IHNhaWQgdG8gcHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIGVudHJ5cG9pbnQgZnVuY3Rpb25zLgoKSSBzdGFydGVkIGJ5IGNoZWNraW5nIGlmIGBleGVjX2JpbnBybWAgd2FzIHN0YXRpYy4gWWVwLCBpdCYjMzk7cyBzdGF0aWMuIFNhbWUgZm9yIGBicHJtX2V4ZWN2ZWAgYW5kIGBkb19leGVjdmVhdF9jb21tb25gLiBBbGwgc3RhdGljLCB3aGljaCBtZWFucyB0aGV5IGFyZSBsaWtlbHkgaW50ZXJuYWwgaGVscGVycywgc28gSSBtYXkgbm90IHdhbnQgdG8gdGFyZ2V0IHRoZW0uCgpJIGNoZWNrZWQgYGRvX2V4ZWN2ZWAsIGFuZCBpdCYjMzk7cyAqbm90KiBzdGF0aWMsIHNvIGl04oCZcyBsaWtlbHkgdGhlIEFQSSBlbnRyeXBvaW50IEkgd2FudC4gQW5kIGp1c3QgdG8gY29uZmlybSwgSSBhbHNvIGZvdW5kIHRoYXQgYF9fYXVkaXRfcHJvY3RpdGxlX2ZyZWVgIGlzIG5vbi1zdGF0aWMgYXMgd2VsbC4KCk5vdywgSSYjMzk7bSBnb2luZyB0byBsb29rIGF0IGBkb19leGVjdmVgIGluIGBmcy9leGVjLmNgIHRvIHNlZSB3aGVyZSB0aGUgZnVuY3Rpb24gbGl2ZXMgYW5kIHRoZSBmdWxsIGNvbnRleHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDA3OjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RvX2V4ZWN2ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2V4ZWMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9leGVjLmM9NDAyPXN0YXRpYyBpbnQgYnBybV9zdGFja19saW1pdHMoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSlcbi0tXG5mcy9leGVjLmMtNDM0LVx0ICogYXJnYyBjYW4gbmV2ZXIgYmUgMCwgdG8ga2VlcCB0aGVtIGZyb20gd2Fsa2luZyBlbnZwIGJ5IGFjY2lkZW50LlxuZnMvZXhlYy5jOjQzNTpcdCAqIFNlZSBkb19leGVjdmVhdF9jb21tb24oKS5cbmZzL2V4ZWMuYy00MzYtXHQgKi9cbi0tXG5mcy9leGVjLmM9MTc1Nj1zdGF0aWMgaW50IGJwcm1fZXhlY3ZlKHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pXG4tLVxuZnMvZXhlYy5jLTE4MDktXG5mcy9leGVjLmM6MTgxMDpzdGF0aWMgaW50IGRvX2V4ZWN2ZWF0X2NvbW1vbihpbnQgZmQsIHN0cnVjdCBmaWxlbmFtZSAqZmlsZW5hbWUsXG5mcy9leGVjLmMtMTgxMS1cdFx0XHQgICAgICBzdHJ1Y3QgdXNlcl9hcmdfcHRyIGFyZ3YsXG4tLVxuZnMvZXhlYy5jPTE5NDU9U1lTQ0FMTF9ERUZJTkUzKGV4ZWN2ZSxcbi0tXG5mcy9leGVjLmMtMTk1MC1cdENMQVNTKGZpbGVuYW1lLCBuYW1lKShmaWxlbmFtZSk7XG5mcy9leGVjLmM6MTk1MTpcdHJldHVybiBkb19leGVjdmVhdF9jb21tb24oQVRfRkRDV0QsIG5hbWUsXG5mcy9leGVjLmMtMTk1Mi1cdFx0XHRcdCAgbmF0aXZlX2FyZyhhcmd2KSwgbmF0aXZlX2FyZyhlbnZwKSwgMCk7XG4tLVxuZnMvZXhlYy5jPTE5NTU9U1lTQ0FMTF9ERUZJTkU1KGV4ZWN2ZWF0LFxuLS1cbmZzL2V4ZWMuYy0xOTYxLVx0Q0xBU1MoZmlsZW5hbWVfdWZsYWdzLCBuYW1lKShmaWxlbmFtZSwgZmxhZ3MpO1xuZnMvZXhlYy5jOjE5NjI6XHRyZXR1cm4gZG9fZXhlY3ZlYXRfY29tbW9uKGZkLCBuYW1lLFxuZnMvZXhlYy5jLTE5NjMtXHRcdFx0XHQgIG5hdGl2ZV9hcmcoYXJndiksIG5hdGl2ZV9hcmcoZW52cCksIGZsYWdzKTtcbi0tXG5mcy9leGVjLmM9MTk3Mz1DT01QQVRfU1lTQ0FMTF9ERUZJTkUzKGV4ZWN2ZSwgY29uc3QgY2hhciBfX3VzZXIgKiwgZmlsZW5hbWUsXG4tLVxuZnMvZXhlYy5jLTE5NzctXHRDTEFTUyhmaWxlbmFtZSwgbmFtZSkoZmlsZW5hbWUpO1xuZnMvZXhlYy5jOjE5Nzg6XHRyZXR1cm4gZG9fZXhlY3ZlYXRfY29tbW9uKEFUX0ZEQ1dELCBuYW1lLFxuZnMvZXhlYy5jLTE5NzktXHRcdFx0XHQgIGNvbXBhdF9hcmcoYXJndiksIGNvbXBhdF9hcmcoZW52cCksIDApO1xuLS1cbmZzL2V4ZWMuYz0xOTgyPUNPTVBBVF9TWVNDQUxMX0RFRklORTUoZXhlY3ZlYXQsIGludCwgZmQsXG4tLVxuZnMvZXhlYy5jLTE5ODgtXHRDTEFTUyhmaWxlbmFtZV91ZmxhZ3MsIG5hbWUpKGZpbGVuYW1lLCBmbGFncyk7XG5mcy9leGVjLmM6MTk4OTpcdHJldHVybiBkb19leGVjdmVhdF9jb21tb24oZmQsIG5hbWUsXG5mcy9leGVjLmMtMTk5MC1cdFx0XHRcdCAgY29tcGF0X2FyZyhhcmd2KSwgY29tcGF0X2FyZyhlbnZwKSwgZmxhZ3MpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDg1CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk5hdmlnYXRpbmcgdGhlIEV4ZWN2ZSBMYW5kc2NhcGUqKgoKT2theSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gd3JhcCBteSBoZWFkIGFyb3VuZCB0aGlzIGtlcm5lbCBjaGFuZ2UuLi4gZmlyc3QgdGhvdWdodDogaGFuZyBvbiwgd2hlcmUgZGlkIGBkb19leGVjdmVgIGdvPyBEb2VzbiYjMzk7dCBzZWVtIHRvIGJlIGEgdGhpbmcgYW55bW9yZS4gQWgsIHJpZ2h0LCBpdOKAmXMgYmVlbiBzdWJzdW1lZCBieSBgZG9fZXhlY3ZlYXRfY29tbW9uYCwgd2hpY2ggaXMgbm93ICpzdGF0aWMqLiBUaGF0IG1ha2VzIHNlbnNlIGluIHRlcm1zIG9mIG1vZHVsYXJpdHkuIEJ1dCB0aGUgcmVhbCBlbnRyeSBwb2ludHMsIGZvciBleHRlcm5hbCBpbnRlcmFjdGlvbiwgYXJlIHRoZSBzeXN0ZW0gY2FsbHM6IGBzeXNfZXhlY3ZlYCBhbmQgYHN5c19leGVjdmVhdGAuIEdvdCBpdC4KCk5vdywgYHN5c19leGVjdmVgIGlzIGNsZWFybHkgYSBzeXN0ZW0gY2FsbCwgd2hpY2ggaXMgbXkgYnJlYWQgYW5kIGJ1dHRlci4gSSBuZWVkIGEgZ29vZCBzeW1ib2wgdG8gZm9jdXMgb24gd2hlbiByZXZpZXdpbmcgdGhlIGNoYW5nZXMuIGBfX2F1ZGl0X3Byb2N0aXRsZV9mcmVlYCBpcyBsb29raW5nIHByb21pc2luZy4gSXQmIzM5O3MgKm5vdCogc3RhdGljLCBzbyBpdCYjMzk7cyBsaWtlbHkgdG8gYmUgZXhwb3NlZCwgYW5kIHRoaXMgKnBhdGNoKiBkaXJlY3RseSBtb2RpZmllcyBpdC4gWWVzLCB0aGF0JiMzOTtzIGRlZmluaXRlbHkgYSBzeW1ib2wgdG8gZm9sbG93LgoKV2FpdCBhIHNlY29uZOKApiBJIGtub3cgSSYjMzk7dmUgc2VlbiB0aGF0IG5hbWUgYmVmb3JlLiBSaWdodCwgYF9fYXVkaXRfcHJvY3RpdGxlX2ZyZWVgIGlzIGNhbGxlZCAqZnJvbSogYGV4ZWNfYmlucHJtYC4gT2theSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhhdCByZWxhdGlvbnNoaXAgYW5kIHZlcmlmeSB0aGF0IGFzc29jaWF0aW9uLiBMZXQmIzM5O3MgZGlnIGludG8gYGtlcm5lbC9hdWRpdHNjLmNgIGFuZCBzcGVjaWZpY2FsbHkgY2hlY2sgb3V0IGhvdyBgX19hdWRpdF9wcm9jdGl0bGVfZnJlZWAgaXMgZGVmaW5lZCBhbmQgdXNlZC4gTGV0JiMzOTtzIHNlZSBob3cgdGhpcyBhbGwgY29ubmVjdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDA3OjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19fYXVkaXRfcHJvY3RpdGxlX2ZyZWUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYXVkaXRzYy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9hdWRpdHNjLmM9OTAwPXZvaWQgYXVkaXRfZmlsdGVyX2lub2RlcyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywgc3RydWN0IGF1ZGl0X2NvbnRleHQgKmN0eClcbi0tXG5rZXJuZWwvYXVkaXRzYy5jLTkxNS1cbmtlcm5lbC9hdWRpdHNjLmM6OTE2OnZvaWQgX19hdWRpdF9wcm9jdGl0bGVfZnJlZShzdHJ1Y3QgYXVkaXRfY29udGV4dCAqY29udGV4dClcbmtlcm5lbC9hdWRpdHNjLmMtOTE3LXtcbi0tXG5rZXJuZWwvYXVkaXRzYy5jPTEwODU9c3RhdGljIGlubGluZSB2b2lkIGF1ZGl0X2ZyZWVfY29udGV4dChzdHJ1Y3QgYXVkaXRfY29udGV4dCAqY29udGV4dClcbi0tXG5rZXJuZWwvYXVkaXRzYy5jLTEwODgtXHRhdWRpdF9yZXNldF9jb250ZXh0KGNvbnRleHQpO1xua2VybmVsL2F1ZGl0c2MuYzoxMDg5Olx0X19hdWRpdF9wcm9jdGl0bGVfZnJlZShjb250ZXh0KTtcbmtlcm5lbC9hdWRpdHNjLmMtMTA5MC1cdGZyZWVfdHJlZV9yZWZzKGNvbnRleHQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MTY0CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogODIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBBdWRpdCBQcm9jZXNzIFRpdGxlIEZyZWVpbmcgYW5kIFJlbGF0ZWQgQ2FsbHMqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBhdWRpdC1yZWxhdGVkIGNvZGUsIGFuZCBpdCBsb29rcyBsaWtlIGBfX2F1ZGl0X3Byb2N0aXRsZV9mcmVlYCBpcyBleHBvc2VkIGFuZCBhY3RpdmVseSBiZWluZyBjYWxsZWQuICBUaGF0JiMzOTtzIG15IHN0YXJ0aW5nIHBvaW50LiBOb3csIEkmIzM5O20gdHJ5aW5nIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55ICpvdGhlciogbm9uLXN0YXRpYyBmdW5jdGlvbnMgcmVsYXRlZCB0byB0aGlzIHByb2Nlc3MgdGl0bGUgbWFuYWdlbWVudCwganVzdCB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZS4gTXkgaW1tZWRpYXRlIG5leHQgb2JzZXJ2YXRpb24gaXMgdGhhdCBgYXVkaXRfYnBybWAgaXMgY2FsbGVkIGRpcmVjdGx5ICphZnRlciogYGF1ZGl0X3Byb2N0aXRsZV9mcmVlKGF1ZGl0X2NvbnRleHQoKSlgLiBJbnRydWlnaW5nLgoKSSBrbm93IGBhdWRpdF9icHJtYCBpcyBkZWZpbmVkIGFzIGFuIGlubGluZSBmdW5jdGlvbi4gSW5saW5lIGZ1bmN0aW9ucyBjYW4gYmUgZGVjZXB0aXZlLCBhcyB0aGV5IGNhbiBzb21ldGltZXMgb2JzY3VyZSB0aGUgdHJ1ZSBmdW5jdGlvbiB0aGF0JiMzOTtzIGJlaW5nIGNhbGxlZCwgc28gbm93IEkgYW0gZXhhbWluaW5nIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgYXVkaXRfYnBybWAuIEkgY2FuIHNlZSBmcm9tIGhlcmUgdGhhdCBpdCYjMzk7cyBqdXN0IGEgd3JhcHBlciBmb3IgYF9fYXVkaXRfYnBybWAsIHNvIEkgcmVhbGx5IG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGhhcHBlbmluZyB3aXRoaW4gYF9fYXVkaXRfYnBybWAgdG8gZ3Jhc3AgdGhlIGZsb3cgaGVyZS4gU28gbGV0JiMzOTtzIGNoZWNrIG91dCBgX19hdWRpdF9icHJtYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDc6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X19hdWRpdF9icHJtJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2F1ZGl0c2MuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYXVkaXRzYy5jPTI1ODk9dm9pZCBfX2F1ZGl0X2lwY19zZXRfcGVybSh1bnNpZ25lZCBsb25nIHFieXRlcywgdWlkX3QgdWlkLCBnaWRfdCBnaWQsIHVtb2RlX3QgbW9kZSlcbi0tXG5rZXJuZWwvYXVkaXRzYy5jLTI1OTktXG5rZXJuZWwvYXVkaXRzYy5jOjI2MDA6dm9pZCBfX2F1ZGl0X2Jwcm0oc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSlcbmtlcm5lbC9hdWRpdHNjLmMtMjYwMS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDA3OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc2MjQKCQkJCQkJCW91dHB1dDogMTExCgkJCQkJCQl0aG91Z2h0czogNTY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBBdWRpdCBTdWJzeXN0ZW0gZm9yIEZ1enppbmcqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBpbnR1aXRpb24gcG9pbnRzIHRvIGBfX2F1ZGl0X2Jwcm1gIGFzIGEgc29saWQgZm9jdXMgc3ltYm9sIGZvciBmdXp6aW5nLiBHaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSBwYXRjaCwgSSBuZWVkIHRvIHZlcmlmeSB3aGljaCBjb25maWd1cmF0aW9ucyBhcmUgZXNzZW50aWFsIGZvciByZWFjaGluZyB0aGlzIGNvZGUgcGF0aC4KCkZpcnN0LCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gYEFVRElUU1lTQ0FMTGAgcmVsaWVzIG9uIGJvdGggYEFVRElUYCBhbmQgYEhBVkVfQVJDSF9BVURJVFNZU0NBTExgLiBUaGUgbGF0dGVyIGlzIHR5cGljYWxseSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMuIFNpbmNlIGBBVURJVFNZU0NBTExgIGlzICppbXBsaWNpdGx5KiBlbmFibGVkIGFzIGBkZWZfYm9vbCB5YCBpZiBgQVVESVRgIGFuZCBgSEFWRV9BUkNIX0FVRElUU1lTQ0FMTGAgYXJlIG9uLCB0aGUga2V5IGNvbmZpZ3VyYXRpb25zIHRvIGV4cGxpY2l0bHkgZW5hYmxlIGFwcGVhciB0byBiZSBgQVVESVRgIGFuZCBgQVVESVRTWVNDQUxMYC4gSSYjMzk7dmUgY29uZmlybWVkIGJvdGggYEFVRElUU1lTQ0FMTGAgYW5kIGBBVURJVGAgYXJlLCBpbiBmYWN0LCBjb25maWd1cmFibGUgb3B0aW9ucy4KCk15IGluaXRpYWwgYXNzZXNzbWVudCB3b3VsZCBiZToKCiogICAqKldvcnRoRnV6emluZyoqOiBUcnVlCiogICAqKkZvY3VzU3ltYm9scyoqOiBgX19hdWRpdF9wcm9jdGl0bGVfZnJlZWAsIGBfX2F1ZGl0X2Jwcm1gCiogICAqKkVuYWJsZUNvbmZpZ3MqKjogYEFVRElUYCwgYEFVRElUU1lTQ0FMTGAKKiAgICoqUmVhc29uaW5nKio6IFRoZSBwYXRjaCB0b3VjaGVzIHRoZSBjb3JlIGBleGVjdmVgIHBhdGgsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGF1ZGl0IHN1YnN5c3RlbS4gSXQgbW9kaWZpZXMgdGhlIGNvZGUgdG8gY2xlYXIgdGhlIGF1ZGl0IHByb2N0aXRsZSBjb250ZXh0ICpiZWZvcmUqIGBhdWRpdF9icHJtYCBpcyBpbnZva2VkLCB3aGljaCBhZGRyZXNzZXMgYSBwb3RlbnRpYWwgbWVtb3J5IGxlYWsgb3Igc3RhdGUgY29ycnVwdGlvbiBpc3N1ZS4gVGhpcyBpcyByZWFjaGFibGUsIGZ1bmN0aW9uYWwgY29kZSB3aXRoaW4gdGhlIGtlcm5lbCYjMzk7cyBhdWRpdGluZy4KCkhvd2V2ZXIsIGEgY2xvc2VyIGxvb2sgYXQgYF9fYXVkaXRfcHJvY3RpdGxlX2ZyZWVgIHJldmVhbHMgaXQmIzM5O3MgYSB2ZXJ5IHNpbXBsZSBmdW5jdGlvbi4gSXQmIzM5O3MgZXNzZW50aWFsbHkganVzdCBga2ZyZWVgIG9uIGEgYE5VTExgIGNoZWNrLiBGdXp6aW5nIHRoaXMgZGlyZWN0bHkgbWlnaHQgbm90IGJlIHZlcnkgcHJvZHVjdGl2ZS4gYF9fYXVkaXRfYnBybWAsIG9uIHRoZSBvdGhlciBoYW5kLCBpcyB0aGUgY2VudHJhbCBhdWRpdCBmdW5jdGlvbiBjYWxsZWQgZHVyaW5nIGBleGVjdmVgLCBtYWtpbmcgaXQgYSBtb3JlIGZydWl0ZnVsIHRhcmdldC4gTmV2ZXJ0aGVsZXNzLCBJJiMzOTtsbCBpbmNsdWRlIGJvdGggc2luY2UgYF9fYXVkaXRfcHJvY3RpdGxlX2ZyZWVgIGlzIHRoZSBvbmUgbW9kaWZpZWQgYW5kIG1pZ2h0IHJldmVhbCBpbnRlcmFjdGlvbiB3aXRoIG90aGVyIGZ1bmN0aW9ucy4KCkxldCYjMzk7cyBxdWlja2x5IHJlY29uZmlybSBhYm91dCBgQVVESVRTWVNDQUxMYCBhZ2Fpbiwgc2luY2UgaXQmIzM5O3MgYGRlZl9ib29sIHlgIGl0IHdpbGwgYmUgYXV0b21hdGljYWxseSBzZXQgdG8gYHlgIGlmIGBBVURJVGAgaXMuIEl0JiMzOTtzIHNhZmUgdG8gaW5jbHVkZSBpbiB0aGUgbGlzdCBmb3IgY2xhcml0eS4gSSYjMzk7bGwgcmUtdmVyaWZ5IGl0JiMzOTtzIGVuYWJsZWQgaW4gYGluaXQvS2NvbmZpZ2AgdG8gYmUgY2VydGFpbi4gWWVzLCBhbGwgaXMgZ29vZC4KCkkmIzM5O3ZlIGNoZWNrZWQgZm9yIGFueSBvdGhlciByZWxldmFudCBjb25maWd1cmF0aW9ucywgYW5kIEkgdGhpbmsgd2UmIzM5O3JlIGRvbmUuIExldCYjMzk7cyBzZW5kIHRoZSByZXN1bHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QVVESVQmIzM0OywKICAgICYjMzQ7QVVESVRTWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19hdWRpdF9wcm9jdGl0bGVfZnJlZSYjMzQ7LAogICAgJiMzNDtfX2F1ZGl0X2Jwcm0mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgZXhlY3ZlIHBhdGggdG8gY2xlYXIgdGhlIGF1ZGl0IHByb2N0aXRsZSBjb250ZXh0IGJlZm9yZSBgYXVkaXRfYnBybWAgaXMgY2FsbGVkLiBUaGlzIGZpeGVzIGEgcG90ZW50aWFsIG1lbW9yeSBsZWFrIG9yIHN0YXRlIGlzc3VlLiBUaGlzIGlzIHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbCBjb2RlIGluIHRoZSBrZXJuZWwmIzM5O3MgYXVkaXQgc3Vic3lzdGVtLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtBVURJVCYjMzQ7LAogICAgJiMzNDtBVURJVFNZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX2F1ZGl0X3Byb2N0aXRsZV9mcmVlJiMzNDssCiAgICAmIzM0O19fYXVkaXRfYnBybSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBleGVjdmUgcGF0aCB0byBjbGVhciB0aGUgYXVkaXQgcHJvY3RpdGxlIGNvbnRleHQgYmVmb3JlIGBhdWRpdF9icHJtYCBpcyBjYWxsZWQuIFRoaXMgZml4ZXMgYSBwb3RlbnRpYWwgbWVtb3J5IGxlYWsgb3Igc3RhdGUgaXNzdWUuIFRoaXMgaXMgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsIGNvZGUgaW4gdGhlIGtlcm5lbCYjMzk7cyBhdWRpdCBzdWJzeXN0ZW0uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzo0NTo0NS42NTQzNjUxNjlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzMyMzA5NDI4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJBVURJVFwiLFxuICAgIFwiQVVESVRTWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19hdWRpdF9wcm9jdGl0bGVfZnJlZVwiLFxuICAgIFwiX19hdWRpdF9icHJtXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgZXhlY3ZlIHBhdGggdG8gY2xlYXIgdGhlIGF1ZGl0IHByb2N0aXRsZSBjb250ZXh0IGJlZm9yZSBgYXVkaXRfYnBybWAgaXMgY2FsbGVkLiBUaGlzIGZpeGVzIGEgcG90ZW50aWFsIG1lbW9yeSBsZWFrIG9yIHN0YXRlIGlzc3VlLiBUaGlzIGlzIHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbCBjb2RlIGluIHRoZSBrZXJuZWwncyBhdWRpdCBzdWJzeXN0ZW0uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDA3OjQ1OjQ1LjY1NDM3MTE2OVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjYyNzMzMDcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZWQ3NDNmY2E4MzUwYTdmYzU2MGI2MWJjODZhM2VmYzMzZjEwN2U4YVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEp1bCAyNyAwNzo0NTo0NCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9mcy9leGVjLmMgYi9mcy9leGVjLmNcXG5pbmRleCBiOTJmZTdkYjE3NmNmZi4uYmQ1MTQ4OWRlYzIzMmIgMTAwNjQ0XFxuLS0tIGEvZnMvZXhlYy5jXFxuKysrIGIvZnMvZXhlYy5jXFxuQEAgLTE3NDQsNiArMTc0NCw4IEBAIHN0YXRpYyBpbnQgZXhlY19iaW5wcm0oc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSlcXG4gXFx0XFx0XFx0ZnB1dChleGVjKTtcXG4gXFx0fVxcbiBcXG4rXFx0LyogY2xlYXIgcHJvY3RpdGxlIGluIGF1ZGl0IGNvbnRleHQgdG8gYWxsb3cgcmVwbGFjZW1lbnQgKi9cXG4rXFx0YXVkaXRfcHJvY3RpdGxlX2ZyZWUoYXVkaXRfY29udGV4dCgpKTtcXG4gXFx0YXVkaXRfYnBybShicHJtKTtcXG4gXFx0dHJhY2Vfc2NoZWRfcHJvY2Vzc19leGVjKGN1cnJlbnQsIG9sZF9waWQsIGJwcm0pO1xcbiBcXHRwdHJhY2VfZXZlbnQoUFRSQUNFX0VWRU5UX0VYRUMsIG9sZF92cGlkKTtcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9hdWRpdC5oIGIvaW5jbHVkZS9saW51eC9hdWRpdC5oXFxuaW5kZXggNDVhYmIzNzIyZDMwNGMuLjAzYWU1NjNjYTM0ODljIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvYXVkaXQuaFxcbisrKyBiL2luY2x1ZGUvbGludXgvYXVkaXQuaFxcbkBAIC0zMjAsNiArMzIwLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGF1ZGl0X2NmZ19sc20oY29uc3Qgc3RydWN0IGxzbV9pZCAqbHNtaWQsIGludCBmbGFncylcXG4gLyogVGhlc2UgYXJlIGRlZmluZWQgaW4gYXVkaXRzYy5jICovXFxuIFxcdFxcdFxcdFxcdC8qIFB1YmxpYyBBUEkgKi9cXG4gZXh0ZXJuIGludCAgYXVkaXRfYWxsb2Moc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKTtcXG4rZXh0ZXJuIHZvaWQgX19hdWRpdF9wcm9jdGl0bGVfZnJlZShzdHJ1Y3QgYXVkaXRfY29udGV4dCAqY29udGV4dCk7XFxuIGV4dGVybiB2b2lkIF9fYXVkaXRfZnJlZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spO1xcbiBleHRlcm4gdm9pZCBfX2F1ZGl0X3VyaW5nX2VudHJ5KHU4IG9wKTtcXG4gZXh0ZXJuIHZvaWQgX19hdWRpdF91cmluZ19leGl0KGludCBzdWNjZXNzLCBsb25nIGNvZGUpO1xcbkBAIC0zNTMsNiArMzU0LDExIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBhdWRpdF9kdW1teV9jb250ZXh0KHZvaWQpXFxuIFxcdHZvaWQgKnAgPSBhdWRpdF9jb250ZXh0KCk7XFxuIFxcdHJldHVybiAhcCB8fCAqKGludCAqKXA7XFxuIH1cXG4rc3RhdGljIGlubGluZSB2b2lkIGF1ZGl0X3Byb2N0aXRsZV9mcmVlKHN0cnVjdCBhdWRpdF9jb250ZXh0ICpjb250ZXh0KVxcbit7XFxuK1xcdGlmICh1bmxpa2VseSghYXVkaXRfZHVtbXlfY29udGV4dCgpKSlcXG4rXFx0XFx0X19hdWRpdF9wcm9jdGl0bGVfZnJlZShjb250ZXh0KTtcXG4rfVxcbiBzdGF0aWMgaW5saW5lIHZvaWQgYXVkaXRfZnJlZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spXFxuIHtcXG4gXFx0aWYgKHVubGlrZWx5KHRhc2stXFx1MDAzZWF1ZGl0X2NvbnRleHQpKVxcbkBAIC00NzAsNiArNDc2LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGF1ZGl0X2Jwcm0oc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSlcXG4gXFx0aWYgKHVubGlrZWx5KCFhdWRpdF9kdW1teV9jb250ZXh0KCkpKVxcbiBcXHRcXHRfX2F1ZGl0X2Jwcm0oYnBybSk7XFxuIH1cXG4rXFxuIHN0YXRpYyBpbmxpbmUgaW50IGF1ZGl0X3NvY2tldGNhbGwoaW50IG5hcmdzLCB1bnNpZ25lZCBsb25nICphcmdzKVxcbiB7XFxuIFxcdGlmICh1bmxpa2VseSghYXVkaXRfZHVtbXlfY29udGV4dCgpKSlcXG5AQCAtNjA1LDYgKzYxMiw4IEBAIHN0YXRpYyBpbmxpbmUgaW50IGF1ZGl0X2FsbG9jKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaylcXG4ge1xcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbitzdGF0aWMgaW5saW5lIHZvaWQgYXVkaXRfcHJvY3RpdGxlX2ZyZWUoc3RydWN0IGF1ZGl0X2NvbnRleHQgKmNvbnRleHQpXFxuK3sgfVxcbiBzdGF0aWMgaW5saW5lIHZvaWQgYXVkaXRfZnJlZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spXFxuIHsgfVxcbiBzdGF0aWMgaW5saW5lIHZvaWQgYXVkaXRfdXJpbmdfZW50cnkodTggb3ApXFxuZGlmZiAtLWdpdCBhL2tlcm5lbC9hdWRpdHNjLmMgYi9rZXJuZWwvYXVkaXRzYy5jXFxuaW5kZXggNjYxMGU2NjdjNzI4YWEuLjY5NDg0YWIyYzhiYzViIDEwMDY0NFxcbi0tLSBhL2tlcm5lbC9hdWRpdHNjLmNcXG4rKysgYi9rZXJuZWwvYXVkaXRzYy5jXFxuQEAgLTkxMyw3ICs5MTMsNyBAQCB2b2lkIGF1ZGl0X2ZpbHRlcl9pbm9kZXMoc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssIHN0cnVjdCBhdWRpdF9jb250ZXh0ICpjdHgpXFxuIFxcdHJjdV9yZWFkX3VubG9jaygpO1xcbiB9XFxuIFxcbi1zdGF0aWMgaW5saW5lIHZvaWQgYXVkaXRfcHJvY3RpdGxlX2ZyZWUoc3RydWN0IGF1ZGl0X2NvbnRleHQgKmNvbnRleHQpXFxuK3ZvaWQgX19hdWRpdF9wcm9jdGl0bGVfZnJlZShzdHJ1Y3QgYXVkaXRfY29udGV4dCAqY29udGV4dClcXG4ge1xcbiBcXHRrZnJlZShjb250ZXh0LVxcdTAwM2Vwcm9jdGl0bGUudmFsdWUpO1xcbiBcXHRjb250ZXh0LVxcdTAwM2Vwcm9jdGl0bGUudmFsdWUgPSBOVUxMO1xcbkBAIC0xMDg2LDcgKzEwODYsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYXVkaXRfZnJlZV9jb250ZXh0KHN0cnVjdCBhdWRpdF9jb250ZXh0ICpjb250ZXh0KVxcbiB7XFxuIFxcdC8qIHJlc2V0dGluZyBpcyBleHRyYSB3b3JrLCBidXQgaXQgaXMgbGlrZWx5IGp1c3Qgbm9pc2UgKi9cXG4gXFx0YXVkaXRfcmVzZXRfY29udGV4dChjb250ZXh0KTtcXG4tXFx0YXVkaXRfcHJvY3RpdGxlX2ZyZWUoY29udGV4dCk7XFxuK1xcdF9fYXVkaXRfcHJvY3RpdGxlX2ZyZWUoY29udGV4dCk7XFxuIFxcdGZyZWVfdHJlZV9yZWZzKGNvbnRleHQpO1xcbiBcXHRrZnJlZShjb250ZXh0LVxcdTAwM2VmaWx0ZXJrZXkpO1xcbiBcXHRrZnJlZShjb250ZXh0KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6NDU6NDYuMzE3NjI5NzVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo0MjY1OTgxOTg4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJBVURJVFwiLFxuICAgIFwiQVVESVRTWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19hdWRpdF9wcm9jdGl0bGVfZnJlZVwiLFxuICAgIFwiX19hdWRpdF9icHJtXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgZXhlY3ZlIHBhdGggdG8gY2xlYXIgdGhlIGF1ZGl0IHByb2N0aXRsZSBjb250ZXh0IGJlZm9yZSBgYXVkaXRfYnBybWAgaXMgY2FsbGVkLiBUaGlzIGZpeGVzIGEgcG90ZW50aWFsIG1lbW9yeSBsZWFrIG9yIHN0YXRlIGlzc3VlLiBUaGlzIGlzIHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbCBjb2RlIGluIHRoZSBrZXJuZWwncyBhdWRpdCBzdWJzeXN0ZW0uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGVkNzQzZmNhODM1MGE3ZmM1NjBiNjFiYzg2YTNlZmMzM2YxMDdlOGFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCAyNyAwNzo0NTo0NCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2V4ZWMuYyBiL2ZzL2V4ZWMuY1xuaW5kZXggYjkyZmU3ZGIxNzZjZmYuLmJkNTE0ODlkZWMyMzJiIDEwMDY0NFxuLS0tIGEvZnMvZXhlYy5jXG4rKysgYi9mcy9leGVjLmNcbkBAIC0xNzQ0LDYgKzE3NDQsOCBAQCBzdGF0aWMgaW50IGV4ZWNfYmlucHJtKHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pXG4gXHRcdFx0ZnB1dChleGVjKTtcbiBcdH1cbiBcbitcdC8qIGNsZWFyIHByb2N0aXRsZSBpbiBhdWRpdCBjb250ZXh0IHRvIGFsbG93IHJlcGxhY2VtZW50ICovXG4rXHRhdWRpdF9wcm9jdGl0bGVfZnJlZShhdWRpdF9jb250ZXh0KCkpO1xuIFx0YXVkaXRfYnBybShicHJtKTtcbiBcdHRyYWNlX3NjaGVkX3Byb2Nlc3NfZXhlYyhjdXJyZW50LCBvbGRfcGlkLCBicHJtKTtcbiBcdHB0cmFjZV9ldmVudChQVFJBQ0VfRVZFTlRfRVhFQywgb2xkX3ZwaWQpO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYXVkaXQuaCBiL2luY2x1ZGUvbGludXgvYXVkaXQuaFxuaW5kZXggNDVhYmIzNzIyZDMwNGMuLjAzYWU1NjNjYTM0ODljIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9hdWRpdC5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L2F1ZGl0LmhcbkBAIC0zMjAsNiArMzIwLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGF1ZGl0X2NmZ19sc20oY29uc3Qgc3RydWN0IGxzbV9pZCAqbHNtaWQsIGludCBmbGFncylcbiAvKiBUaGVzZSBhcmUgZGVmaW5lZCBpbiBhdWRpdHNjLmMgKi9cbiBcdFx0XHRcdC8qIFB1YmxpYyBBUEkgKi9cbiBleHRlcm4gaW50ICBhdWRpdF9hbGxvYyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spO1xuK2V4dGVybiB2b2lkIF9fYXVkaXRfcHJvY3RpdGxlX2ZyZWUoc3RydWN0IGF1ZGl0X2NvbnRleHQgKmNvbnRleHQpO1xuIGV4dGVybiB2b2lkIF9fYXVkaXRfZnJlZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spO1xuIGV4dGVybiB2b2lkIF9fYXVkaXRfdXJpbmdfZW50cnkodTggb3ApO1xuIGV4dGVybiB2b2lkIF9fYXVkaXRfdXJpbmdfZXhpdChpbnQgc3VjY2VzcywgbG9uZyBjb2RlKTtcbkBAIC0zNTMsNiArMzU0LDExIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBhdWRpdF9kdW1teV9jb250ZXh0KHZvaWQpXG4gXHR2b2lkICpwID0gYXVkaXRfY29udGV4dCgpO1xuIFx0cmV0dXJuICFwIHx8ICooaW50ICopcDtcbiB9XG4rc3RhdGljIGlubGluZSB2b2lkIGF1ZGl0X3Byb2N0aXRsZV9mcmVlKHN0cnVjdCBhdWRpdF9jb250ZXh0ICpjb250ZXh0KVxuK3tcbitcdGlmICh1bmxpa2VseSghYXVkaXRfZHVtbXlfY29udGV4dCgpKSlcbitcdFx0X19hdWRpdF9wcm9jdGl0bGVfZnJlZShjb250ZXh0KTtcbit9XG4gc3RhdGljIGlubGluZSB2b2lkIGF1ZGl0X2ZyZWUoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKVxuIHtcbiBcdGlmICh1bmxpa2VseSh0YXNrLVx1MDAzZWF1ZGl0X2NvbnRleHQpKVxuQEAgLTQ3MCw2ICs0NzYsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYXVkaXRfYnBybShzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKVxuIFx0aWYgKHVubGlrZWx5KCFhdWRpdF9kdW1teV9jb250ZXh0KCkpKVxuIFx0XHRfX2F1ZGl0X2Jwcm0oYnBybSk7XG4gfVxuK1xuIHN0YXRpYyBpbmxpbmUgaW50IGF1ZGl0X3NvY2tldGNhbGwoaW50IG5hcmdzLCB1bnNpZ25lZCBsb25nICphcmdzKVxuIHtcbiBcdGlmICh1bmxpa2VseSghYXVkaXRfZHVtbXlfY29udGV4dCgpKSlcbkBAIC02MDUsNiArNjEyLDggQEAgc3RhdGljIGlubGluZSBpbnQgYXVkaXRfYWxsb2Moc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKVxuIHtcbiBcdHJldHVybiAwO1xuIH1cbitzdGF0aWMgaW5saW5lIHZvaWQgYXVkaXRfcHJvY3RpdGxlX2ZyZWUoc3RydWN0IGF1ZGl0X2NvbnRleHQgKmNvbnRleHQpXG4reyB9XG4gc3RhdGljIGlubGluZSB2b2lkIGF1ZGl0X2ZyZWUoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKVxuIHsgfVxuIHN0YXRpYyBpbmxpbmUgdm9pZCBhdWRpdF91cmluZ19lbnRyeSh1OCBvcClcbmRpZmYgLS1naXQgYS9rZXJuZWwvYXVkaXRzYy5jIGIva2VybmVsL2F1ZGl0c2MuY1xuaW5kZXggNjYxMGU2NjdjNzI4YWEuLjY5NDg0YWIyYzhiYzViIDEwMDY0NFxuLS0tIGEva2VybmVsL2F1ZGl0c2MuY1xuKysrIGIva2VybmVsL2F1ZGl0c2MuY1xuQEAgLTkxMyw3ICs5MTMsNyBAQCB2b2lkIGF1ZGl0X2ZpbHRlcl9pbm9kZXMoc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssIHN0cnVjdCBhdWRpdF9jb250ZXh0ICpjdHgpXG4gXHRyY3VfcmVhZF91bmxvY2soKTtcbiB9XG4gXG4tc3RhdGljIGlubGluZSB2b2lkIGF1ZGl0X3Byb2N0aXRsZV9mcmVlKHN0cnVjdCBhdWRpdF9jb250ZXh0ICpjb250ZXh0KVxuK3ZvaWQgX19hdWRpdF9wcm9jdGl0bGVfZnJlZShzdHJ1Y3QgYXVkaXRfY29udGV4dCAqY29udGV4dClcbiB7XG4gXHRrZnJlZShjb250ZXh0LVx1MDAzZXByb2N0aXRsZS52YWx1ZSk7XG4gXHRjb250ZXh0LVx1MDAzZXByb2N0aXRsZS52YWx1ZSA9IE5VTEw7XG5AQCAtMTA4Niw3ICsxMDg2LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGF1ZGl0X2ZyZWVfY29udGV4dChzdHJ1Y3QgYXVkaXRfY29udGV4dCAqY29udGV4dClcbiB7XG4gXHQvKiByZXNldHRpbmcgaXMgZXh0cmEgd29yaywgYnV0IGl0IGlzIGxpa2VseSBqdXN0IG5vaXNlICovXG4gXHRhdWRpdF9yZXNldF9jb250ZXh0KGNvbnRleHQpO1xuLVx0YXVkaXRfcHJvY3RpdGxlX2ZyZWUoY29udGV4dCk7XG4rXHRfX2F1ZGl0X3Byb2N0aXRsZV9mcmVlKGNvbnRleHQpO1xuIFx0ZnJlZV90cmVlX3JlZnMoY29udGV4dCk7XG4gXHRrZnJlZShjb250ZXh0LVx1MDAzZWZpbHRlcmtleSk7XG4gXHRrZnJlZShjb250ZXh0KTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDA3OjQ1OjQ2LjMxNzYzMDc4WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDUyNDI0MjA1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEF1ZGl0IFN5c3RlbSBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGZzL2V4ZWMuY2AsIGBpbmNsdWRlL2xpbnV4L2F1ZGl0LmhgLCBhbmQgYGtlcm5lbC9hdWRpdHNjLmNgLiBJdCdzIHByb21vdGluZyBgYXVkaXRfcHJvY3RpdGxlX2ZyZWVgIHRvIGBfX2F1ZGl0X3Byb2N0aXRsZV9mcmVlYCBhbmQgc3RyYXRlZ2ljYWxseSBjYWxsaW5nIGl0IGZyb20gd2l0aGluIGBleGVjX2JpbnBybWAgaW4gYGZzL2V4ZWMuY2AgKmJlZm9yZSogdGhlIGBhdWRpdF9icHJtKGJwcm0pYCBjYWxsLiBUaGF0J3MgaW50ZXJlc3RpbmcsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoeS5cblxuRmlyc3QsIGxldCdzIGxvb2sgYXQgdGhlIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBga2VybmVsL2F1ZGl0c2MuY2AgcmVsaWVzIG9uIGBDT05GSUdfQVVESVRTWVNDQUxMYC4gIGBmcy9leGVjLmNgIGlzIGFsd2F5cyBjb21waWxlZCwgd2hpY2ggbWFrZXMgc2Vuc2UuIGBpbmNsdWRlL2xpbnV4L2F1ZGl0LmhgIGlzIGFsd2F5cyBpbmNsdWRlZCwgd2hpY2ggaXMgZXhwZWN0ZWQuIEhvd2V2ZXIsIHRoZSBgYXVkaXRfcHJvY3RpdGxlX2ZyZWVgIGZ1bmN0aW9uIGlzIGVmZmVjdGl2ZWx5IGEgbm8tb3AgdW5sZXNzIGVpdGhlciBgQ09ORklHX0FVRElUYCBvciBgQ09ORklHX0FVRElUU1lTQ0FMTGAgaXMgZW5hYmxlZC4gVGhhdCBzaW1wbGlmaWVzIHRoaW5ncyBhIGJpdDsgdGhlIG5vLW9wIGNvbmRpdGlvbiBnaXZlcyB1cyBhIGNsZWFyIHBhdGggZm9yIGNvbnRyb2wgZmxvdy5cblxuTm93LCBJJ2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoZSBga2VybmVsL01ha2VmaWxlYCB0byBjb25maXJtIHRoZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBvZiBgYXVkaXRzYy5jYC4gSXQncyB1c3VhbGx5IGJldHRlciB0byBiZSBleHBsaWNpdCBhYm91dCB0aGVzZSB0aGluZ3MuIFdlIHdhbnQgdG8gYmUgc3VyZSB0aGF0IHdlIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBmdWxseS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg5MSwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwMywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDA3OjQ1OjUwLjg0MTg3NTkyMVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTY5NDEwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdWRpdHNjLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9NYWtlZmlsZT05Nz1vYmotJChDT05GSUdfQVVESVQpICs9IGF1ZGl0Lm8gYXVkaXRmaWx0ZXIub1xcbmtlcm5lbC9NYWtlZmlsZTo5ODpvYmotJChDT05GSUdfQVVESVRTWVNDQUxMKSArPSBhdWRpdHNjLm8gYXVkaXRfd2F0Y2gubyBhdWRpdF9mc25vdGlmeS5vIGF1ZGl0X3RyZWUub1xcbmtlcm5lbC9NYWtlZmlsZS05OS1vYmotJChDT05GSUdfR0NPVl9LRVJORUwpICs9IGdjb3YvXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDA3OjQ1OjUwLjkwMzU3NzA3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzYwMzcyOTExNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqS2VybmVsIEF1ZGl0aW5nIENvbmZpZ3VyYXRpb24g4oCTIEEgUXVpY2sgQ2hlY2sqKlxuXG5SaWdodCwgc28gd2UncmUgZGVhbGluZyB3aXRoIGEgc2l0dWF0aW9uIHdoZXJlIHdlIG5lZWQgYXVkaXQgc3lzdGVtIGNhbGwgbG9nZ2luZy4gVGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoZSBkZXBlbmRlbmN5IOKAkyB3ZSBuZWVkIHRvIHZlcmlmeSB0aGF0IGBDT05GSUdfQVVESVRTWVNDQUxMYCBpcyBwcm9wZXJseSBjb25maWd1cmVkLCBhbmQgdGhhdCBtZWFucyBkaXZpbmcgaW50byB0aGUgS2NvbmZpZyBmaWxlcywgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYGluaXRgIGRpcmVjdG9yeS4gV2UgbmVlZCB0byByYXBpZGx5IGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGVuc3VyZSB0aGUgYnVpbGQgc3lzdGVtIGtub3dzIHdoYXQncyByZXF1aXJlZCB0byBtYWtlIHRoYXQgb3B0aW9uIGF2YWlsYWJsZS4gTGV0J3Mgc2VlIHdoYXQgbmVlZHMgdG8gYmUgaW4gcGxhY2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1MDksIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzo0NTo1NC41MDczMDgyNjdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDEzMzc3MTA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBBVURJVFNZU0NBTExcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5pdC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluaXQvS2NvbmZpZz01NDU9Y29uZmlnIEhBVkVfQVJDSF9BVURJVFNZU0NBTExcXG4tLVxcbmluaXQvS2NvbmZpZy01NDctXFxuaW5pdC9LY29uZmlnOjU0ODpjb25maWcgQVVESVRTWVNDQUxMXFxuaW5pdC9LY29uZmlnLTU0OS1cXHRkZWZfYm9vbCB5XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDA3OjQ1OjU0LjkyMDY5MDIyNVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MDA5ODQ3NzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOlxuXG4qKkNvbmRpdGlvbmFsIERlZmluaXRpb24gYW5kIEF1ZGl0aW5nIExvZ2ljKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBkZWZpbml0aW9uLCBhbmQgSSBzZWUgdGhhdCBgZGVmX2Jvb2wgeWAgaXMgZ29pbmcgdG8gYmUgc2V0IGlmICpib3RoKiBgQVVESVRgIGFuZCBgSEFWRV9BUkNIX0FVRElUU1lTQ0FMTGAgYXJlIGVuYWJsZWQuIFRoYXQncyBhIHByZXR0eSBjbGVhciBjb25kaXRpb25hbC4gVGhpcyBtZWFucyB0aGUgc3lzdGVtJ3MgYXVkaXRpbmcgZmVhdHVyZXMgYXJlIGFjdGl2YXRlZCwgYW5kIHNwZWNpZmljYWxseSwgdGhlIGFyY2hpdGVjdHVyZSBoYXMgc3VwcG9ydCBmb3IgYXVkaXQgc3lzdGVtIGNhbGxzLiBUaGlzIG1ha2VzIHNlbnNlLiBXZSdyZSB0YWxraW5nIGFib3V0IHNldHRpbmcgdXAgYSBib29sZWFuIHZhcmlhYmxlLCBsaWtlbHkgdG8gY29udHJvbCBzb21lIGFzcGVjdCBvZiBhdWRpdCBmdW5jdGlvbmFsaXR5LiBUaGUgZGVwZW5kZW5jeSBvbiBib3RoIGNvbmRpdGlvbnMgaW5kaWNhdGVzIGEgbGV2ZWwgb2YgZ3JhbnVsYXJpdHkgLSBhdWRpdGluZyB3b24ndCBiZSB0cmlnZ2VyZWQgdW5sZXNzIGJvdGggdGhlIGdlbmVyYWwgYXVkaXRpbmcgZnJhbWV3b3JrICphbmQqIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBzdXBwb3J0IGFyZSBpbiBwbGFjZS4gVGhpcyBtYWtlcyB0aGUgb3ZlcmFsbCBzeXN0ZW0gbGVzcyBicml0dGxlIHRoYW4gaWYgaXQgd2VyZSBjb25kaXRpb25hbCBvbiBvbmUgb2YgdGhvc2UgZGVmaW5pdGlvbnMgYWxvbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3NzcsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzo0NTo1OC41MjE2Nzc2ODNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjIzMzQ0NTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEFVRElUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImluaXQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbml0L0tjb25maWc9NTI2PWNvbmZpZyBDUk9TU19NRU1PUllfQVRUQUNIXFxuLS1cXG5pbml0L0tjb25maWctNTM1LVxcbmluaXQvS2NvbmZpZzo1MzY6Y29uZmlnIEFVRElUXFxuaW5pdC9LY29uZmlnLTUzNy1cXHRib29sIFxcXCJBdWRpdGluZyBzdXBwb3J0XFxcIlxcbi0tXFxuaW5pdC9LY29uZmlnPTU0NT1jb25maWcgSEFWRV9BUkNIX0FVRElUU1lTQ0FMTFxcbi0tXFxuaW5pdC9LY29uZmlnLTU0Ny1cXG5pbml0L0tjb25maWc6NTQ4OmNvbmZpZyBBVURJVFNZU0NBTExcXG5pbml0L0tjb25maWctNTQ5LVxcdGRlZl9ib29sIHlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6NDU6NTguNTg0MDIxMTcxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE4MTcwNDc4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIHByZXNlbnRlZCBhcyBhIHN0cmVhbSBvZiB0aG91Z2h0OlxuXG4qKkNoZWNraW5nIERlcGVuZGVuY2llcyBmb3IgQVVESVRTWVNDQUxMKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBgQVVESVRTWVNDQUxMYCBtb2R1bGUgb3IgZnVuY3Rpb24gb3Igd2hhdGV2ZXIgaXQgaXMgd2UncmUgZGVhbGluZyB3aXRoLiBCZWZvcmUgZGl2aW5nIGRlZXAsIHRoZSBmaXJzdCB0aGluZyB0aGF0IGFsd2F5cyBjb21lcyB0byBtaW5kIGlzIHRoZSBkZXBlbmRlbmNpZXMuIFdoZXJlIGRvZXMgdGhpcyB0aGluZyBsaXZlPyBXaGF0IG90aGVyIHBpZWNlcyBvZiB0aGUgc3lzdGVtIHJlbHkgb24gaXQ/IFdoYXQgY291bGQgYnJlYWsgaWYgSSBjaGFuZ2UgaXQgb3IgbW92ZSBpdCwgb3IgZ29kIGZvcmJpZCwgcmVtb3ZlIGl0PyBTbywgSSdtIGdvaW5nIHRvIHN0YXJ0IGJ5IHJ1bm5pbmcgYSBxdWljayBjaGVjayBvbiBpdHMgZGVwZW5kZW5jaWVzLiBJJ20gZ29pbmcgdG8gcnVuIHRoZSBjb21tYW5kLCBsZXQncyBjaGVjayBgZGVwZW5kcyBvbmAgZm9yIGBBVURJVFNZU0NBTExgLiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBpdHMgcm9sZSBpbiB0aGUgZWNvc3lzdGVtIGJlZm9yZSBJIHN0YXJ0IHRvIG1ha2UgYW55IGp1ZGdtZW50cyBvciBldmVuIGNvbnNpZGVyIHRoZSBuZXh0IHN0ZXBzLiBHb3R0YSB1bmRlcnN0YW5kIHRoZSBsYW5kc2NhcGUgZmlyc3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxNTUsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzo0NjowMS43NjU3Mjc5NVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDk1MDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiaW5pdC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDU0NSxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDU0NTpcXHRjb25maWcgSEFWRV9BUkNIX0FVRElUU1lTQ0FMTFxcbiA1NDY6XFx0XFx0Ym9vbFxcbiA1NDc6XFx0XFxuIDU0ODpcXHRjb25maWcgQVVESVRTWVNDQUxMXFxuIDU0OTpcXHRcXHRkZWZfYm9vbCB5XFxuIDU1MDpcXHRcXHRkZXBlbmRzIG9uIEFVRElUIFxcdTAwMjZcXHUwMDI2IEhBVkVfQVJDSF9BVURJVFNZU0NBTExcXG4gNTUxOlxcdFxcdHNlbGVjdCBGU05PVElGWVxcbiA1NTI6XFx0XFxuIDU1MzpcXHRzb3VyY2UgXFxcImtlcm5lbC9pcnEvS2NvbmZpZ1xcXCJcXG4gNTU0OlxcdHNvdXJjZSBcXFwia2VybmVsL3RpbWUvS2NvbmZpZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6NDY6MDEuNzY1ODQwNDNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU2ODIxMTE3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3Npbmc6XG5cbioqQW5hbHl6aW5nIHRoZSBBdWRpdCBJbXBhY3QqKlxuXG5SaWdodCwgc28gd2UncmUgZGVhbGluZyB3aXRoIGFuIGBBVURJVGAtcmVsYXRlZCBpc3N1ZS4gVGhlIHBhdGNoIHNwZWNpZmljYWxseSB0YXJnZXRzIGBleGVjX2JpbnBybWAgd2l0aGluIGBmcy9leGVjLmNgLiBHaXZlbiBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBrZXJuZWwgaW50ZXJuYWxzLCB0aGF0IGZ1bmN0aW9uJ3MgZGVmaW5pdGVseSBhIGNyaXRpY2FsIHBhdGgg4oCTIGl0J3MgcmVhY2hhYmxlLCBhbmQgY2hhbmdlcyB0aGVyZSB3aWxsICphYnNvbHV0ZWx5KiBoYXZlIGFuIGltcGFjdC4gVGhlIGNvZGUgaXMgZnVuY3Rpb25hbCwgc28gaXQgd2lsbCB3b3JrLiBJJ20gYXNzdW1pbmcgdGhpcyBwYXRjaCBpcyBmaXhpbmcgYSBtZW1vcnkgbGVhaywgbGlrZWx5IHJlbGF0ZWQgdG8gaG93IHRoZSBhdWRpdCBwcm9jdGl0bGUgaXMgaGFuZGxlZCBkdXJpbmcgYGV4ZWN2ZWAuIEkndmUgc2VlbiBzaW1pbGFyIGlzc3VlcyBwb3AgdXAgYmVmb3JlLlxuXG5BbHJpZ2h0LCBsZXQncyBwdWxsIHVwIGBleGVjX2JpbnBybWAgaW4gYGZzL2V4ZWMuY2AgYW5kIHRha2UgYSBjbG9zZXIgbG9vay4gSSdsbCBuZWVkIHRvIGNvbmZpcm0gdGhlIGV4YWN0IG5hdHVyZSBvZiB0aGUgcHJvYmxlbSBhbmQgdmVyaWZ5IHRoZSBwYXRjaCdzIGltcGxlbWVudGF0aW9uIHRvIHNlZSBpZiB0aGlzIHNvbHZlcyB0aGUgaXNzdWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1MzcsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDA3OjQ2OjA1LjMzNDA1NTAxOVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjkxODQxOTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZXhlY19iaW5wcm1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvZXhlYy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2V4ZWMuYz0xNDI1PXN0YXRpYyBzdHJ1Y3QgbGludXhfYmlucHJtICphbGxvY19icHJtKGludCBmZCwgc3RydWN0IGZpbGVuYW1lICpmaWxlbmFtZSwgaW50IGZsYWdzKVxcbi0tXFxuZnMvZXhlYy5jLTE0NzYtXFx0ICogYnBybV9leGVjdmUoKS4gIEluZGVlZCwgdGhlIGtlcm5lbCBzaG91bGQgbm90IHRyeSB0byBwYXJzZSB0aGVcXG5mcy9leGVjLmM6MTQ3NzpcXHQgKiBjb250ZW50IG9mIHRoZSBmaWxlIHdpdGggZXhlY19iaW5wcm0oKSBub3IgY2hhbmdlIHRoZSBjYWxsaW5nXFxuZnMvZXhlYy5jLTE0NzgtXFx0ICogdGhyZWFkLCB3aGljaCBtZWFucyB0aGF0IHRoZSBmb2xsb3dpbmcgc2VjdXJpdHkgZnVuY3Rpb25zIHdpbGwgbm90XFxuLS1cXG5mcy9leGVjLmM9MTY3NT1zdGF0aWMgaW50IHNlYXJjaF9iaW5hcnlfaGFuZGxlcihzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKVxcbi0tXFxuZnMvZXhlYy5jLTE3MDgtLyogYmluZm10IGhhbmRsZXJzIHdpbGwgY2FsbCBiYWNrIGludG8gYmVnaW5fbmV3X2V4ZWMoKSBvbiBzdWNjZXNzLiAqL1xcbmZzL2V4ZWMuYzoxNzA5OnN0YXRpYyBpbnQgZXhlY19iaW5wcm0oc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSlcXG5mcy9leGVjLmMtMTcxMC17XFxuLS1cXG5mcy9leGVjLmM9MTc1Nj1zdGF0aWMgaW50IGJwcm1fZXhlY3ZlKHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pXFxuLS1cXG5mcy9leGVjLmMtMTc2NC1cXHQvKlxcbmZzL2V4ZWMuYzoxNzY1OlxcdCAqIENoZWNrIGZvciB1bnNhZmUgZXhlY3V0aW9uIHN0YXRlcyBiZWZvcmUgZXhlY19iaW5wcm0oKSwgd2hpY2hcXG5mcy9leGVjLmMtMTc2Ni1cXHQgKiB3aWxsIGNhbGwgYmFjayBpbnRvIGJlZ2luX25ld19leGVjKCksIGludG8gYnBybV9jcmVkc19mcm9tX2ZpbGUoKSxcXG4tLVxcbmZzL2V4ZWMuYy0xNzc5LVxcbmZzL2V4ZWMuYzoxNzgwOlxcdHJldHZhbCA9IGV4ZWNfYmlucHJtKGJwcm0pO1xcbmZzL2V4ZWMuYy0xNzgxLVxcdGlmIChyZXR2YWwgXFx1MDAzYyAwKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzo0NjowNS40MDMyNDQxNDdaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTUwNTQzMTU1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEV4ZWN2ZSBGbG93IGFuZCBBdWRpdCBUaXRsZSBGcmVlaW5nKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaG93IGl0IGludGVncmF0ZXMgaW50byB0aGUgYGV4ZWN2ZWAgc3lzdGVtIGNhbGwgZmxvdy4gVGhlIGNydWNpYWwgdGhpbmcgaGVyZSBpcyBgZXhlY19iaW5wcm1gIHdoaWNoIGlzIGNhbGxlZCBieSBgYnBybV9leGVjdmVgLCBhbmQgdGhhdCdzIGNhbGxlZCBieSBgZG9fZXhlY3ZlYXRfY29tbW9uYC4gVGhhdCdzIG15IGNvcmUgYGV4ZWN2ZWAgcGF0aC4gVGhlIHBhdGNoIHNwZWNpZmljYWxseSBjYWxscyBgYXVkaXRfcHJvY3RpdGxlX2ZyZWUoYXVkaXRfY29udGV4dCgpKWAgd2l0aGluIGBleGVjX2JpbnBybWAuIFNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCwgZnVuY3Rpb25hbGx5LlxuXG5Ob3csIEkgbmVlZCB0byBwaWNrIGdvb2QgdGFyZ2V0cyBmb3IgZnVydGhlciBhbmFseXNpcywgc3BlY2lmaWNhbGx5IEFQSSBlbnRyeSBwb2ludHMuIFRoZSBwcm9tcHQgYWN0dWFsbHkgc2FpZCB0byBwcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgZW50cnlwb2ludCBmdW5jdGlvbnMuXG5cbkkgc3RhcnRlZCBieSBjaGVja2luZyBpZiBgZXhlY19iaW5wcm1gIHdhcyBzdGF0aWMuIFllcCwgaXQncyBzdGF0aWMuIFNhbWUgZm9yIGBicHJtX2V4ZWN2ZWAgYW5kIGBkb19leGVjdmVhdF9jb21tb25gLiBBbGwgc3RhdGljLCB3aGljaCBtZWFucyB0aGV5IGFyZSBsaWtlbHkgaW50ZXJuYWwgaGVscGVycywgc28gSSBtYXkgbm90IHdhbnQgdG8gdGFyZ2V0IHRoZW0uXG5cbkkgY2hlY2tlZCBgZG9fZXhlY3ZlYCwgYW5kIGl0J3MgKm5vdCogc3RhdGljLCBzbyBpdOKAmXMgbGlrZWx5IHRoZSBBUEkgZW50cnlwb2ludCBJIHdhbnQuIEFuZCBqdXN0IHRvIGNvbmZpcm0sIEkgYWxzbyBmb3VuZCB0aGF0IGBfX2F1ZGl0X3Byb2N0aXRsZV9mcmVlYCBpcyBub24tc3RhdGljIGFzIHdlbGwuXG5cbk5vdywgSSdtIGdvaW5nIHRvIGxvb2sgYXQgYGRvX2V4ZWN2ZWAgaW4gYGZzL2V4ZWMuY2AgdG8gc2VlIHdoZXJlIHRoZSBmdW5jdGlvbiBsaXZlcyBhbmQgdGhlIGZ1bGwgY29udGV4dC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTI0OSwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzo0NjoxMC45MDg2Nzc3NVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODU2MTk0NDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZG9fZXhlY3ZlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2V4ZWMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9leGVjLmM9NDAyPXN0YXRpYyBpbnQgYnBybV9zdGFja19saW1pdHMoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSlcXG4tLVxcbmZzL2V4ZWMuYy00MzQtXFx0ICogYXJnYyBjYW4gbmV2ZXIgYmUgMCwgdG8ga2VlcCB0aGVtIGZyb20gd2Fsa2luZyBlbnZwIGJ5IGFjY2lkZW50LlxcbmZzL2V4ZWMuYzo0MzU6XFx0ICogU2VlIGRvX2V4ZWN2ZWF0X2NvbW1vbigpLlxcbmZzL2V4ZWMuYy00MzYtXFx0ICovXFxuLS1cXG5mcy9leGVjLmM9MTc1Nj1zdGF0aWMgaW50IGJwcm1fZXhlY3ZlKHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pXFxuLS1cXG5mcy9leGVjLmMtMTgwOS1cXG5mcy9leGVjLmM6MTgxMDpzdGF0aWMgaW50IGRvX2V4ZWN2ZWF0X2NvbW1vbihpbnQgZmQsIHN0cnVjdCBmaWxlbmFtZSAqZmlsZW5hbWUsXFxuZnMvZXhlYy5jLTE4MTEtXFx0XFx0XFx0ICAgICAgc3RydWN0IHVzZXJfYXJnX3B0ciBhcmd2LFxcbi0tXFxuZnMvZXhlYy5jPTE5NDU9U1lTQ0FMTF9ERUZJTkUzKGV4ZWN2ZSxcXG4tLVxcbmZzL2V4ZWMuYy0xOTUwLVxcdENMQVNTKGZpbGVuYW1lLCBuYW1lKShmaWxlbmFtZSk7XFxuZnMvZXhlYy5jOjE5NTE6XFx0cmV0dXJuIGRvX2V4ZWN2ZWF0X2NvbW1vbihBVF9GRENXRCwgbmFtZSxcXG5mcy9leGVjLmMtMTk1Mi1cXHRcXHRcXHRcXHQgIG5hdGl2ZV9hcmcoYXJndiksIG5hdGl2ZV9hcmcoZW52cCksIDApO1xcbi0tXFxuZnMvZXhlYy5jPTE5NTU9U1lTQ0FMTF9ERUZJTkU1KGV4ZWN2ZWF0LFxcbi0tXFxuZnMvZXhlYy5jLTE5NjEtXFx0Q0xBU1MoZmlsZW5hbWVfdWZsYWdzLCBuYW1lKShmaWxlbmFtZSwgZmxhZ3MpO1xcbmZzL2V4ZWMuYzoxOTYyOlxcdHJldHVybiBkb19leGVjdmVhdF9jb21tb24oZmQsIG5hbWUsXFxuZnMvZXhlYy5jLTE5NjMtXFx0XFx0XFx0XFx0ICBuYXRpdmVfYXJnKGFyZ3YpLCBuYXRpdmVfYXJnKGVudnApLCBmbGFncyk7XFxuLS1cXG5mcy9leGVjLmM9MTk3Mz1DT01QQVRfU1lTQ0FMTF9ERUZJTkUzKGV4ZWN2ZSwgY29uc3QgY2hhciBfX3VzZXIgKiwgZmlsZW5hbWUsXFxuLS1cXG5mcy9leGVjLmMtMTk3Ny1cXHRDTEFTUyhmaWxlbmFtZSwgbmFtZSkoZmlsZW5hbWUpO1xcbmZzL2V4ZWMuYzoxOTc4OlxcdHJldHVybiBkb19leGVjdmVhdF9jb21tb24oQVRfRkRDV0QsIG5hbWUsXFxuZnMvZXhlYy5jLTE5NzktXFx0XFx0XFx0XFx0ICBjb21wYXRfYXJnKGFyZ3YpLCBjb21wYXRfYXJnKGVudnApLCAwKTtcXG4tLVxcbmZzL2V4ZWMuYz0xOTgyPUNPTVBBVF9TWVNDQUxMX0RFRklORTUoZXhlY3ZlYXQsIGludCwgZmQsXFxuLS1cXG5mcy9leGVjLmMtMTk4OC1cXHRDTEFTUyhmaWxlbmFtZV91ZmxhZ3MsIG5hbWUpKGZpbGVuYW1lLCBmbGFncyk7XFxuZnMvZXhlYy5jOjE5ODk6XFx0cmV0dXJuIGRvX2V4ZWN2ZWF0X2NvbW1vbihmZCwgbmFtZSxcXG5mcy9leGVjLmMtMTk5MC1cXHRcXHRcXHRcXHQgIGNvbXBhdF9hcmcoYXJndiksIGNvbXBhdF9hcmcoZW52cCksIGZsYWdzKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6NDY6MTAuOTk0MzAxMTY3WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1OTA2MTA2MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTmF2aWdhdGluZyB0aGUgRXhlY3ZlIExhbmRzY2FwZSoqXG5cbk9rYXksIHNvIEknbSB0cnlpbmcgdG8gd3JhcCBteSBoZWFkIGFyb3VuZCB0aGlzIGtlcm5lbCBjaGFuZ2UuLi4gZmlyc3QgdGhvdWdodDogaGFuZyBvbiwgd2hlcmUgZGlkIGBkb19leGVjdmVgIGdvPyBEb2Vzbid0IHNlZW0gdG8gYmUgYSB0aGluZyBhbnltb3JlLiBBaCwgcmlnaHQsIGl04oCZcyBiZWVuIHN1YnN1bWVkIGJ5IGBkb19leGVjdmVhdF9jb21tb25gLCB3aGljaCBpcyBub3cgKnN0YXRpYyouIFRoYXQgbWFrZXMgc2Vuc2UgaW4gdGVybXMgb2YgbW9kdWxhcml0eS4gQnV0IHRoZSByZWFsIGVudHJ5IHBvaW50cywgZm9yIGV4dGVybmFsIGludGVyYWN0aW9uLCBhcmUgdGhlIHN5c3RlbSBjYWxsczogYHN5c19leGVjdmVgIGFuZCBgc3lzX2V4ZWN2ZWF0YC4gR290IGl0LlxuXG5Ob3csIGBzeXNfZXhlY3ZlYCBpcyBjbGVhcmx5IGEgc3lzdGVtIGNhbGwsIHdoaWNoIGlzIG15IGJyZWFkIGFuZCBidXR0ZXIuIEkgbmVlZCBhIGdvb2Qgc3ltYm9sIHRvIGZvY3VzIG9uIHdoZW4gcmV2aWV3aW5nIHRoZSBjaGFuZ2VzLiBgX19hdWRpdF9wcm9jdGl0bGVfZnJlZWAgaXMgbG9va2luZyBwcm9taXNpbmcuIEl0J3MgKm5vdCogc3RhdGljLCBzbyBpdCdzIGxpa2VseSB0byBiZSBleHBvc2VkLCBhbmQgdGhpcyAqcGF0Y2gqIGRpcmVjdGx5IG1vZGlmaWVzIGl0LiBZZXMsIHRoYXQncyBkZWZpbml0ZWx5IGEgc3ltYm9sIHRvIGZvbGxvdy5cblxuV2FpdCBhIHNlY29uZOKApiBJIGtub3cgSSd2ZSBzZWVuIHRoYXQgbmFtZSBiZWZvcmUuIFJpZ2h0LCBgX19hdWRpdF9wcm9jdGl0bGVfZnJlZWAgaXMgY2FsbGVkICpmcm9tKiBgZXhlY19iaW5wcm1gLiBPa2F5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0IHJlbGF0aW9uc2hpcCBhbmQgdmVyaWZ5IHRoYXQgYXNzb2NpYXRpb24uIExldCdzIGRpZyBpbnRvIGBrZXJuZWwvYXVkaXRzYy5jYCBhbmQgc3BlY2lmaWNhbGx5IGNoZWNrIG91dCBob3cgYF9fYXVkaXRfcHJvY3RpdGxlX2ZyZWVgIGlzIGRlZmluZWQgYW5kIHVzZWQuIExldCdzIHNlZSBob3cgdGhpcyBhbGwgY29ubmVjdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY0ODUsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6NDY6MTUuNTg0OTEzNjE3WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NTE1MDUwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX2F1ZGl0X3Byb2N0aXRsZV9mcmVlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9hdWRpdHNjLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2F1ZGl0c2MuYz05MDA9dm9pZCBhdWRpdF9maWx0ZXJfaW5vZGVzKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCBzdHJ1Y3QgYXVkaXRfY29udGV4dCAqY3R4KVxcbi0tXFxua2VybmVsL2F1ZGl0c2MuYy05MTUtXFxua2VybmVsL2F1ZGl0c2MuYzo5MTY6dm9pZCBfX2F1ZGl0X3Byb2N0aXRsZV9mcmVlKHN0cnVjdCBhdWRpdF9jb250ZXh0ICpjb250ZXh0KVxcbmtlcm5lbC9hdWRpdHNjLmMtOTE3LXtcXG4tLVxcbmtlcm5lbC9hdWRpdHNjLmM9MTA4NT1zdGF0aWMgaW5saW5lIHZvaWQgYXVkaXRfZnJlZV9jb250ZXh0KHN0cnVjdCBhdWRpdF9jb250ZXh0ICpjb250ZXh0KVxcbi0tXFxua2VybmVsL2F1ZGl0c2MuYy0xMDg4LVxcdGF1ZGl0X3Jlc2V0X2NvbnRleHQoY29udGV4dCk7XFxua2VybmVsL2F1ZGl0c2MuYzoxMDg5OlxcdF9fYXVkaXRfcHJvY3RpdGxlX2ZyZWUoY29udGV4dCk7XFxua2VybmVsL2F1ZGl0c2MuYy0xMDkwLVxcdGZyZWVfdHJlZV9yZWZzKGNvbnRleHQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzo0NjoxNS42NTAwNjc4NjVaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ4OTQzMDMwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEF1ZGl0IFByb2Nlc3MgVGl0bGUgRnJlZWluZyBhbmQgUmVsYXRlZCBDYWxscyoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhpcyBhdWRpdC1yZWxhdGVkIGNvZGUsIGFuZCBpdCBsb29rcyBsaWtlIGBfX2F1ZGl0X3Byb2N0aXRsZV9mcmVlYCBpcyBleHBvc2VkIGFuZCBhY3RpdmVseSBiZWluZyBjYWxsZWQuICBUaGF0J3MgbXkgc3RhcnRpbmcgcG9pbnQuIE5vdywgSSdtIHRyeWluZyB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSAqb3RoZXIqIG5vbi1zdGF0aWMgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gdGhpcyBwcm9jZXNzIHRpdGxlIG1hbmFnZW1lbnQsIGp1c3QgdG8gZ2V0IHRoZSBmdWxsIHBpY3R1cmUuIE15IGltbWVkaWF0ZSBuZXh0IG9ic2VydmF0aW9uIGlzIHRoYXQgYGF1ZGl0X2Jwcm1gIGlzIGNhbGxlZCBkaXJlY3RseSAqYWZ0ZXIqIGBhdWRpdF9wcm9jdGl0bGVfZnJlZShhdWRpdF9jb250ZXh0KCkpYC4gSW50cnVpZ2luZy5cblxuSSBrbm93IGBhdWRpdF9icHJtYCBpcyBkZWZpbmVkIGFzIGFuIGlubGluZSBmdW5jdGlvbi4gSW5saW5lIGZ1bmN0aW9ucyBjYW4gYmUgZGVjZXB0aXZlLCBhcyB0aGV5IGNhbiBzb21ldGltZXMgb2JzY3VyZSB0aGUgdHJ1ZSBmdW5jdGlvbiB0aGF0J3MgYmVpbmcgY2FsbGVkLCBzbyBub3cgSSBhbSBleGFtaW5pbmcgdGhlIGltcGxlbWVudGF0aW9uIG9mIGBhdWRpdF9icHJtYC4gSSBjYW4gc2VlIGZyb20gaGVyZSB0aGF0IGl0J3MganVzdCBhIHdyYXBwZXIgZm9yIGBfX2F1ZGl0X2Jwcm1gLCBzbyBJIHJlYWxseSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGhhcHBlbmluZyB3aXRoaW4gYF9fYXVkaXRfYnBybWAgdG8gZ3Jhc3AgdGhlIGZsb3cgaGVyZS4gU28gbGV0J3MgY2hlY2sgb3V0IGBfX2F1ZGl0X2Jwcm1gLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MTY0LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6NDY6MTkuMTM5NTAwNTE2WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozODI3MjUyNzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19hdWRpdF9icHJtXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9hdWRpdHNjLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2F1ZGl0c2MuYz0yNTg5PXZvaWQgX19hdWRpdF9pcGNfc2V0X3Blcm0odW5zaWduZWQgbG9uZyBxYnl0ZXMsIHVpZF90IHVpZCwgZ2lkX3QgZ2lkLCB1bW9kZV90IG1vZGUpXFxuLS1cXG5rZXJuZWwvYXVkaXRzYy5jLTI1OTktXFxua2VybmVsL2F1ZGl0c2MuYzoyNjAwOnZvaWQgX19hdWRpdF9icHJtKHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pXFxua2VybmVsL2F1ZGl0c2MuYy0yNjAxLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6NDY6MTkuNTIyMjM0MjY1WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkzNjM5OTIyMzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIEF1ZGl0IFN1YnN5c3RlbSBmb3IgRnV6emluZyoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBpbnR1aXRpb24gcG9pbnRzIHRvIGBfX2F1ZGl0X2Jwcm1gIGFzIGEgc29saWQgZm9jdXMgc3ltYm9sIGZvciBmdXp6aW5nLiBHaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSBwYXRjaCwgSSBuZWVkIHRvIHZlcmlmeSB3aGljaCBjb25maWd1cmF0aW9ucyBhcmUgZXNzZW50aWFsIGZvciByZWFjaGluZyB0aGlzIGNvZGUgcGF0aC5cblxuRmlyc3QsIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBgQVVESVRTWVNDQUxMYCByZWxpZXMgb24gYm90aCBgQVVESVRgIGFuZCBgSEFWRV9BUkNIX0FVRElUU1lTQ0FMTGAuIFRoZSBsYXR0ZXIgaXMgdHlwaWNhbGx5IGFyY2hpdGVjdHVyZS1zcGVjaWZpYy4gU2luY2UgYEFVRElUU1lTQ0FMTGAgaXMgKmltcGxpY2l0bHkqIGVuYWJsZWQgYXMgYGRlZl9ib29sIHlgIGlmIGBBVURJVGAgYW5kIGBIQVZFX0FSQ0hfQVVESVRTWVNDQUxMYCBhcmUgb24sIHRoZSBrZXkgY29uZmlndXJhdGlvbnMgdG8gZXhwbGljaXRseSBlbmFibGUgYXBwZWFyIHRvIGJlIGBBVURJVGAgYW5kIGBBVURJVFNZU0NBTExgLiBJJ3ZlIGNvbmZpcm1lZCBib3RoIGBBVURJVFNZU0NBTExgIGFuZCBgQVVESVRgIGFyZSwgaW4gZmFjdCwgY29uZmlndXJhYmxlIG9wdGlvbnMuXG5cbk15IGluaXRpYWwgYXNzZXNzbWVudCB3b3VsZCBiZTpcblxuKiAgICoqV29ydGhGdXp6aW5nKio6IFRydWVcbiogICAqKkZvY3VzU3ltYm9scyoqOiBgX19hdWRpdF9wcm9jdGl0bGVfZnJlZWAsIGBfX2F1ZGl0X2Jwcm1gXG4qICAgKipFbmFibGVDb25maWdzKio6IGBBVURJVGAsIGBBVURJVFNZU0NBTExgXG4qICAgKipSZWFzb25pbmcqKjogVGhlIHBhdGNoIHRvdWNoZXMgdGhlIGNvcmUgYGV4ZWN2ZWAgcGF0aCwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYXVkaXQgc3Vic3lzdGVtLiBJdCBtb2RpZmllcyB0aGUgY29kZSB0byBjbGVhciB0aGUgYXVkaXQgcHJvY3RpdGxlIGNvbnRleHQgKmJlZm9yZSogYGF1ZGl0X2Jwcm1gIGlzIGludm9rZWQsIHdoaWNoIGFkZHJlc3NlcyBhIHBvdGVudGlhbCBtZW1vcnkgbGVhayBvciBzdGF0ZSBjb3JydXB0aW9uIGlzc3VlLiBUaGlzIGlzIHJlYWNoYWJsZSwgZnVuY3Rpb25hbCBjb2RlIHdpdGhpbiB0aGUga2VybmVsJ3MgYXVkaXRpbmcuXG5cbkhvd2V2ZXIsIGEgY2xvc2VyIGxvb2sgYXQgYF9fYXVkaXRfcHJvY3RpdGxlX2ZyZWVgIHJldmVhbHMgaXQncyBhIHZlcnkgc2ltcGxlIGZ1bmN0aW9uLiBJdCdzIGVzc2VudGlhbGx5IGp1c3QgYGtmcmVlYCBvbiBhIGBOVUxMYCBjaGVjay4gRnV6emluZyB0aGlzIGRpcmVjdGx5IG1pZ2h0IG5vdCBiZSB2ZXJ5IHByb2R1Y3RpdmUuIGBfX2F1ZGl0X2Jwcm1gLCBvbiB0aGUgb3RoZXIgaGFuZCwgaXMgdGhlIGNlbnRyYWwgYXVkaXQgZnVuY3Rpb24gY2FsbGVkIGR1cmluZyBgZXhlY3ZlYCwgbWFraW5nIGl0IGEgbW9yZSBmcnVpdGZ1bCB0YXJnZXQuIE5ldmVydGhlbGVzcywgSSdsbCBpbmNsdWRlIGJvdGggc2luY2UgYF9fYXVkaXRfcHJvY3RpdGxlX2ZyZWVgIGlzIHRoZSBvbmUgbW9kaWZpZWQgYW5kIG1pZ2h0IHJldmVhbCBpbnRlcmFjdGlvbiB3aXRoIG90aGVyIGZ1bmN0aW9ucy5cblxuTGV0J3MgcXVpY2tseSByZWNvbmZpcm0gYWJvdXQgYEFVRElUU1lTQ0FMTGAgYWdhaW4sIHNpbmNlIGl0J3MgYGRlZl9ib29sIHlgIGl0IHdpbGwgYmUgYXV0b21hdGljYWxseSBzZXQgdG8gYHlgIGlmIGBBVURJVGAgaXMuIEl0J3Mgc2FmZSB0byBpbmNsdWRlIGluIHRoZSBsaXN0IGZvciBjbGFyaXR5LiBJJ2xsIHJlLXZlcmlmeSBpdCdzIGVuYWJsZWQgaW4gYGluaXQvS2NvbmZpZ2AgdG8gYmUgY2VydGFpbi4gWWVzLCBhbGwgaXMgZ29vZC5cblxuSSd2ZSBjaGVja2VkIGZvciBhbnkgb3RoZXIgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMsIGFuZCBJIHRoaW5rIHdlJ3JlIGRvbmUuIExldCdzIHNlbmQgdGhlIHJlc3VsdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc2MjQsIk91dHB1dFRva2VucyI6MTExLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTY2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDA3OjQ2OjI4Ljg4NjIyODMyOVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkxMjE3Njk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJBVURJVFwiLFxuICAgIFwiQVVESVRTWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19hdWRpdF9wcm9jdGl0bGVfZnJlZVwiLFxuICAgIFwiX19hdWRpdF9icHJtXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgZXhlY3ZlIHBhdGggdG8gY2xlYXIgdGhlIGF1ZGl0IHByb2N0aXRsZSBjb250ZXh0IGJlZm9yZSBgYXVkaXRfYnBybWAgaXMgY2FsbGVkLiBUaGlzIGZpeGVzIGEgcG90ZW50aWFsIG1lbW9yeSBsZWFrIG9yIHN0YXRlIGlzc3VlLiBUaGlzIGlzIHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbCBjb2RlIGluIHRoZSBrZXJuZWwncyBhdWRpdCBzdWJzeXN0ZW0uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQVVESVRcIixcbiAgICBcIkFVRElUU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fYXVkaXRfcHJvY3RpdGxlX2ZyZWVcIixcbiAgICBcIl9fYXVkaXRfYnBybVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIGV4ZWN2ZSBwYXRoIHRvIGNsZWFyIHRoZSBhdWRpdCBwcm9jdGl0bGUgY29udGV4dCBiZWZvcmUgYGF1ZGl0X2Jwcm1gIGlzIGNhbGxlZC4gVGhpcyBmaXhlcyBhIHBvdGVudGlhbCBtZW1vcnkgbGVhayBvciBzdGF0ZSBpc3N1ZS4gVGhpcyBpcyByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwgY29kZSBpbiB0aGUga2VybmVsJ3MgYXVkaXQgc3Vic3lzdGVtLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowsw4zg[1] Phase: Succeeded StartedAt: 2026-07-27 07:48:12 +0000 UTC FinishedAt: 2026-07-27 07:48:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsw4zg[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-27 07:48:12 +0000 UTC FinishedAt: 2026-07-27 07:48:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsw4zg[2] Phase: Succeeded StartedAt: 2026-07-27 07:48:12 +0000 UTC FinishedAt: 2026-07-27 12:22:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsw4zg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24f3a09163caad1dde3f801f1bafc69f1991a357","config_name":"upstream-apparmor-kasan.config","enable_configs":["AUDIT","AUDITSYSCALL"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__audit_proctitle_free","__audit_bprm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24f3a09163caad1dde3f801f1bafc69f1991a357","config_name":"upstream-apparmor-kasan.config","enable_configs":["AUDIT","AUDITSYSCALL"],"series_id":"24864c8b-db9e-43cd-a500-df7e1ff782f7","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-27 07:48:12 +0000 UTC FinishedAt: 2026-07-27 12:22:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"24f3a09163caad1dde3f801f1bafc69f1991a357","config_name":"upstream-apparmor-kasan.config","enable_configs":["AUDIT","AUDITSYSCALL"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__audit_proctitle_free","__audit_bprm"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"24f3a09163caad1dde3f801f1bafc69f1991a357","config_name":"upstream-apparmor-kasan.config","enable_configs":["AUDIT","AUDITSYSCALL"],"series_id":"24864c8b-db9e-43cd-a500-df7e1ff782f7","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowsw4zg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24f3a09163caad1dde3f801f1bafc69f1991a357","config_name":"upstream-apparmor-kasan.config","enable_configs":["AUDIT","AUDITSYSCALL"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__audit_proctitle_free","__audit_bprm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24f3a09163caad1dde3f801f1bafc69f1991a357","config_name":"upstream-apparmor-kasan.config","enable_configs":["AUDIT","AUDITSYSCALL"],"series_id":"24864c8b-db9e-43cd-a500-df7e1ff782f7","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-27 07:48:12 +0000 UTC FinishedAt: 2026-07-27 07:48:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsw4zg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24f3a09163caad1dde3f801f1bafc69f1991a357","config_name":"upstream-apparmor-kasan.config","enable_configs":["AUDIT","AUDITSYSCALL"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__audit_proctitle_free","__audit_bprm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24f3a09163caad1dde3f801f1bafc69f1991a357","config_name":"upstream-apparmor-kasan.config","enable_configs":["AUDIT","AUDITSYSCALL"],"series_id":"24864c8b-db9e-43cd-a500-df7e1ff782f7","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-27 07:48:12 +0000 UTC FinishedAt: 2026-07-27 07:48:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"24f3a09163caad1dde3f801f1bafc69f1991a357","config_name":"upstream-apparmor-kasan.config","enable_configs":["AUDIT","AUDITSYSCALL"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},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-workflowsw4zg/series-workflowsw4zg-convert-artifact-1055154211/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsw4zg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24f3a09163caad1dde3f801f1bafc69f1991a357","config_name":"upstream-apparmor-kasan.config","enable_configs":["AUDIT","AUDITSYSCALL"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__audit_proctitle_free","__audit_bprm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24f3a09163caad1dde3f801f1bafc69f1991a357","config_name":"upstream-apparmor-kasan.config","enable_configs":["AUDIT","AUDITSYSCALL"],"series_id":"24864c8b-db9e-43cd-a500-df7e1ff782f7","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-27 07:48:48 +0000 UTC FinishedAt: 2026-07-27 08:31:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsw4zg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24f3a09163caad1dde3f801f1bafc69f1991a357","config_name":"upstream-apparmor-kasan.config","enable_configs":["AUDIT","AUDITSYSCALL"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__audit_proctitle_free","__audit_bprm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24f3a09163caad1dde3f801f1bafc69f1991a357","config_name":"upstream-apparmor-kasan.config","enable_configs":["AUDIT","AUDITSYSCALL"],"series_id":"24864c8b-db9e-43cd-a500-df7e1ff782f7","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-27 07:48:48 +0000 UTC FinishedAt: 2026-07-27 08:31:13 +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:*8558fc36-6511-4647-a00d-ec2ce497786e,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-workflowsw4zg/series-workflowsw4zg-convert-artifact-1055154211/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": "a625d14b-caa5-47f6-8000-129776f07070", "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-workflowsw4zg/series-workflowsw4zg-build-action-3734951057/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsw4zg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24f3a09163caad1dde3f801f1bafc69f1991a357","config_name":"upstream-apparmor-kasan.config","enable_configs":["AUDIT","AUDITSYSCALL"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__audit_proctitle_free","__audit_bprm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24f3a09163caad1dde3f801f1bafc69f1991a357","config_name":"upstream-apparmor-kasan.config","enable_configs":["AUDIT","AUDITSYSCALL"],"series_id":"24864c8b-db9e-43cd-a500-df7e1ff782f7","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-27 07:48:48 +0000 UTC FinishedAt: 2026-07-27 08:31:03 +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:*8558fc36-6511-4647-a00d-ec2ce497786e,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-workflowsw4zg/series-workflowsw4zg-convert-artifact-1055154211/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": "a625d14b-caa5-47f6-8000-129776f07070", "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-workflowsw4zg/series-workflowsw4zg-build-action-3734951057/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsw4zg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24f3a09163caad1dde3f801f1bafc69f1991a357","config_name":"upstream-apparmor-kasan.config","enable_configs":["AUDIT","AUDITSYSCALL"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__audit_proctitle_free","__audit_bprm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24f3a09163caad1dde3f801f1bafc69f1991a357","config_name":"upstream-apparmor-kasan.config","enable_configs":["AUDIT","AUDITSYSCALL"],"series_id":"24864c8b-db9e-43cd-a500-df7e1ff782f7","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-27 08:31:13 +0000 UTC FinishedAt: 2026-07-27 08:31:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsw4zg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24f3a09163caad1dde3f801f1bafc69f1991a357","config_name":"upstream-apparmor-kasan.config","enable_configs":["AUDIT","AUDITSYSCALL"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__audit_proctitle_free","__audit_bprm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24f3a09163caad1dde3f801f1bafc69f1991a357","config_name":"upstream-apparmor-kasan.config","enable_configs":["AUDIT","AUDITSYSCALL"],"series_id":"24864c8b-db9e-43cd-a500-df7e1ff782f7","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-27 08:31:13 +0000 UTC FinishedAt: 2026-07-27 08:31:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsw4zg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24f3a09163caad1dde3f801f1bafc69f1991a357","config_name":"upstream-apparmor-kasan.config","enable_configs":["AUDIT","AUDITSYSCALL"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__audit_proctitle_free","__audit_bprm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24f3a09163caad1dde3f801f1bafc69f1991a357","config_name":"upstream-apparmor-kasan.config","enable_configs":["AUDIT","AUDITSYSCALL"],"series_id":"24864c8b-db9e-43cd-a500-df7e1ff782f7","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-27 08:31:13 +0000 UTC FinishedAt: 2026-07-27 08:31:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsw4zg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24f3a09163caad1dde3f801f1bafc69f1991a357","config_name":"upstream-apparmor-kasan.config","enable_configs":["AUDIT","AUDITSYSCALL"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__audit_proctitle_free","__audit_bprm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24f3a09163caad1dde3f801f1bafc69f1991a357","config_name":"upstream-apparmor-kasan.config","enable_configs":["AUDIT","AUDITSYSCALL"],"series_id":"24864c8b-db9e-43cd-a500-df7e1ff782f7","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-27 08:31:13 +0000 UTC FinishedAt: 2026-07-27 08:31:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"24f3a09163caad1dde3f801f1bafc69f1991a357","config_name":"upstream-apparmor-kasan.config","enable_configs":["AUDIT","AUDITSYSCALL"],"series_id":"24864c8b-db9e-43cd-a500-df7e1ff782f7","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},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-workflowsw4zg/series-workflowsw4zg-convert-artifact-70647386/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsw4zg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24f3a09163caad1dde3f801f1bafc69f1991a357","config_name":"upstream-apparmor-kasan.config","enable_configs":["AUDIT","AUDITSYSCALL"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__audit_proctitle_free","__audit_bprm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24f3a09163caad1dde3f801f1bafc69f1991a357","config_name":"upstream-apparmor-kasan.config","enable_configs":["AUDIT","AUDITSYSCALL"],"series_id":"24864c8b-db9e-43cd-a500-df7e1ff782f7","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-27 08:31:24 +0000 UTC FinishedAt: 2026-07-27 08:33:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsw4zg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24f3a09163caad1dde3f801f1bafc69f1991a357","config_name":"upstream-apparmor-kasan.config","enable_configs":["AUDIT","AUDITSYSCALL"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__audit_proctitle_free","__audit_bprm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24f3a09163caad1dde3f801f1bafc69f1991a357","config_name":"upstream-apparmor-kasan.config","enable_configs":["AUDIT","AUDITSYSCALL"],"series_id":"24864c8b-db9e-43cd-a500-df7e1ff782f7","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-27 08:31:24 +0000 UTC FinishedAt: 2026-07-27 08:33:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*a625d14b-caa5-47f6-8000-129776f07070,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-workflowsw4zg/series-workflowsw4zg-build-action-3734951057/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-workflowsw4zg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24f3a09163caad1dde3f801f1bafc69f1991a357","config_name":"upstream-apparmor-kasan.config","enable_configs":["AUDIT","AUDITSYSCALL"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__audit_proctitle_free","__audit_bprm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24f3a09163caad1dde3f801f1bafc69f1991a357","config_name":"upstream-apparmor-kasan.config","enable_configs":["AUDIT","AUDITSYSCALL"],"series_id":"24864c8b-db9e-43cd-a500-df7e1ff782f7","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-27 08:33:59 +0000 UTC FinishedAt: 2026-07-27 08:33:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsw4zg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24f3a09163caad1dde3f801f1bafc69f1991a357","config_name":"upstream-apparmor-kasan.config","enable_configs":["AUDIT","AUDITSYSCALL"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__audit_proctitle_free","__audit_bprm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24f3a09163caad1dde3f801f1bafc69f1991a357","config_name":"upstream-apparmor-kasan.config","enable_configs":["AUDIT","AUDITSYSCALL"],"series_id":"24864c8b-db9e-43cd-a500-df7e1ff782f7","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-27 08:33:59 +0000 UTC FinishedAt: 2026-07-27 08:33:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsw4zg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24f3a09163caad1dde3f801f1bafc69f1991a357","config_name":"upstream-apparmor-kasan.config","enable_configs":["AUDIT","AUDITSYSCALL"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__audit_proctitle_free","__audit_bprm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24f3a09163caad1dde3f801f1bafc69f1991a357","config_name":"upstream-apparmor-kasan.config","enable_configs":["AUDIT","AUDITSYSCALL"],"series_id":"24864c8b-db9e-43cd-a500-df7e1ff782f7","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-27 08:33:59 +0000 UTC FinishedAt: 2026-07-27 09:15:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsw4zg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24f3a09163caad1dde3f801f1bafc69f1991a357","config_name":"upstream-apparmor-kasan.config","enable_configs":["AUDIT","AUDITSYSCALL"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__audit_proctitle_free","__audit_bprm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24f3a09163caad1dde3f801f1bafc69f1991a357","config_name":"upstream-apparmor-kasan.config","enable_configs":["AUDIT","AUDITSYSCALL"],"series_id":"24864c8b-db9e-43cd-a500-df7e1ff782f7","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-27 08:33:59 +0000 UTC FinishedAt: 2026-07-27 09:15:41 +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:*8558fc36-6511-4647-a00d-ec2ce497786e,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-workflowsw4zg/series-workflowsw4zg-convert-artifact-70647386/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": "7b3148fd-d69b-4500-9ddf-0207e495c4db", "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-workflowsw4zg/series-workflowsw4zg-build-action-2039040830/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsw4zg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24f3a09163caad1dde3f801f1bafc69f1991a357","config_name":"upstream-apparmor-kasan.config","enable_configs":["AUDIT","AUDITSYSCALL"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__audit_proctitle_free","__audit_bprm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24f3a09163caad1dde3f801f1bafc69f1991a357","config_name":"upstream-apparmor-kasan.config","enable_configs":["AUDIT","AUDITSYSCALL"],"series_id":"24864c8b-db9e-43cd-a500-df7e1ff782f7","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-27 08:33:59 +0000 UTC FinishedAt: 2026-07-27 09:15:31 +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:*8558fc36-6511-4647-a00d-ec2ce497786e,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-workflowsw4zg/series-workflowsw4zg-convert-artifact-70647386/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": "7b3148fd-d69b-4500-9ddf-0207e495c4db", "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-workflowsw4zg/series-workflowsw4zg-build-action-2039040830/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsw4zg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24f3a09163caad1dde3f801f1bafc69f1991a357","config_name":"upstream-apparmor-kasan.config","enable_configs":["AUDIT","AUDITSYSCALL"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__audit_proctitle_free","__audit_bprm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24f3a09163caad1dde3f801f1bafc69f1991a357","config_name":"upstream-apparmor-kasan.config","enable_configs":["AUDIT","AUDITSYSCALL"],"series_id":"24864c8b-db9e-43cd-a500-df7e1ff782f7","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-27 09:15:41 +0000 UTC FinishedAt: 2026-07-27 09:15:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsw4zg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24f3a09163caad1dde3f801f1bafc69f1991a357","config_name":"upstream-apparmor-kasan.config","enable_configs":["AUDIT","AUDITSYSCALL"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__audit_proctitle_free","__audit_bprm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24f3a09163caad1dde3f801f1bafc69f1991a357","config_name":"upstream-apparmor-kasan.config","enable_configs":["AUDIT","AUDITSYSCALL"],"series_id":"24864c8b-db9e-43cd-a500-df7e1ff782f7","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-27 09:15:41 +0000 UTC FinishedAt: 2026-07-27 09:15:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsw4zg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24f3a09163caad1dde3f801f1bafc69f1991a357","config_name":"upstream-apparmor-kasan.config","enable_configs":["AUDIT","AUDITSYSCALL"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__audit_proctitle_free","__audit_bprm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24f3a09163caad1dde3f801f1bafc69f1991a357","config_name":"upstream-apparmor-kasan.config","enable_configs":["AUDIT","AUDITSYSCALL"],"series_id":"24864c8b-db9e-43cd-a500-df7e1ff782f7","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-27 09:15:41 +0000 UTC FinishedAt: 2026-07-27 09:17:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsw4zg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24f3a09163caad1dde3f801f1bafc69f1991a357","config_name":"upstream-apparmor-kasan.config","enable_configs":["AUDIT","AUDITSYSCALL"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__audit_proctitle_free","__audit_bprm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24f3a09163caad1dde3f801f1bafc69f1991a357","config_name":"upstream-apparmor-kasan.config","enable_configs":["AUDIT","AUDITSYSCALL"],"series_id":"24864c8b-db9e-43cd-a500-df7e1ff782f7","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-27 09:15:41 +0000 UTC FinishedAt: 2026-07-27 09:17:35 +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:*7b3148fd-d69b-4500-9ddf-0207e495c4db,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-workflowsw4zg/series-workflowsw4zg-build-action-2039040830/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-workflowsw4zg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24f3a09163caad1dde3f801f1bafc69f1991a357","config_name":"upstream-apparmor-kasan.config","enable_configs":["AUDIT","AUDITSYSCALL"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__audit_proctitle_free","__audit_bprm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24f3a09163caad1dde3f801f1bafc69f1991a357","config_name":"upstream-apparmor-kasan.config","enable_configs":["AUDIT","AUDITSYSCALL"],"series_id":"24864c8b-db9e-43cd-a500-df7e1ff782f7","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-27 09:17:45 +0000 UTC FinishedAt: 2026-07-27 12:22:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsw4zg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24f3a09163caad1dde3f801f1bafc69f1991a357","config_name":"upstream-apparmor-kasan.config","enable_configs":["AUDIT","AUDITSYSCALL"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__audit_proctitle_free","__audit_bprm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24f3a09163caad1dde3f801f1bafc69f1991a357","config_name":"upstream-apparmor-kasan.config","enable_configs":["AUDIT","AUDITSYSCALL"],"series_id":"24864c8b-db9e-43cd-a500-df7e1ff782f7","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-27 09:17:45 +0000 UTC FinishedAt: 2026-07-27 12:22:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__audit_proctitle_free","__audit_bprm"],"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:*a625d14b-caa5-47f6-8000-129776f07070,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*7b3148fd-d69b-4500-9ddf-0207e495c4db,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-workflowsw4zg/series-workflowsw4zg-build-action-3734951057/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-workflowsw4zg/series-workflowsw4zg-build-action-2039040830/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowsw4zg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24f3a09163caad1dde3f801f1bafc69f1991a357","config_name":"upstream-apparmor-kasan.config","enable_configs":["AUDIT","AUDITSYSCALL"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__audit_proctitle_free","__audit_bprm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24f3a09163caad1dde3f801f1bafc69f1991a357","config_name":"upstream-apparmor-kasan.config","enable_configs":["AUDIT","AUDITSYSCALL"],"series_id":"24864c8b-db9e-43cd-a500-df7e1ff782f7","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-27 09:17:45 +0000 UTC FinishedAt: 2026-07-27 09:17:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsw4zg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24f3a09163caad1dde3f801f1bafc69f1991a357","config_name":"upstream-apparmor-kasan.config","enable_configs":["AUDIT","AUDITSYSCALL"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__audit_proctitle_free","__audit_bprm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24f3a09163caad1dde3f801f1bafc69f1991a357","config_name":"upstream-apparmor-kasan.config","enable_configs":["AUDIT","AUDITSYSCALL"],"series_id":"24864c8b-db9e-43cd-a500-df7e1ff782f7","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-27 09:17:45 +0000 UTC FinishedAt: 2026-07-27 09:17:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__audit_proctitle_free","__audit_bprm"],"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-workflowsw4zg/series-workflowsw4zg-convert-artifact-3015934223/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsw4zg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24f3a09163caad1dde3f801f1bafc69f1991a357","config_name":"upstream-apparmor-kasan.config","enable_configs":["AUDIT","AUDITSYSCALL"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__audit_proctitle_free","__audit_bprm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24f3a09163caad1dde3f801f1bafc69f1991a357","config_name":"upstream-apparmor-kasan.config","enable_configs":["AUDIT","AUDITSYSCALL"],"series_id":"24864c8b-db9e-43cd-a500-df7e1ff782f7","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-27 09:17:45 +0000 UTC FinishedAt: 2026-07-27 09:17:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsw4zg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24f3a09163caad1dde3f801f1bafc69f1991a357","config_name":"upstream-apparmor-kasan.config","enable_configs":["AUDIT","AUDITSYSCALL"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__audit_proctitle_free","__audit_bprm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24f3a09163caad1dde3f801f1bafc69f1991a357","config_name":"upstream-apparmor-kasan.config","enable_configs":["AUDIT","AUDITSYSCALL"],"series_id":"24864c8b-db9e-43cd-a500-df7e1ff782f7","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-27 09:17:45 +0000 UTC FinishedAt: 2026-07-27 09:17:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsw4zg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24f3a09163caad1dde3f801f1bafc69f1991a357","config_name":"upstream-apparmor-kasan.config","enable_configs":["AUDIT","AUDITSYSCALL"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__audit_proctitle_free","__audit_bprm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24f3a09163caad1dde3f801f1bafc69f1991a357","config_name":"upstream-apparmor-kasan.config","enable_configs":["AUDIT","AUDITSYSCALL"],"series_id":"24864c8b-db9e-43cd-a500-df7e1ff782f7","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-27 09:17:45 +0000 UTC FinishedAt: 2026-07-27 09:17:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsw4zg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24f3a09163caad1dde3f801f1bafc69f1991a357","config_name":"upstream-apparmor-kasan.config","enable_configs":["AUDIT","AUDITSYSCALL"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__audit_proctitle_free","__audit_bprm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24f3a09163caad1dde3f801f1bafc69f1991a357","config_name":"upstream-apparmor-kasan.config","enable_configs":["AUDIT","AUDITSYSCALL"],"series_id":"24864c8b-db9e-43cd-a500-df7e1ff782f7","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-27 09:17:55 +0000 UTC FinishedAt: 2026-07-27 12:22:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsw4zg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24f3a09163caad1dde3f801f1bafc69f1991a357","config_name":"upstream-apparmor-kasan.config","enable_configs":["AUDIT","AUDITSYSCALL"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__audit_proctitle_free","__audit_bprm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24f3a09163caad1dde3f801f1bafc69f1991a357","config_name":"upstream-apparmor-kasan.config","enable_configs":["AUDIT","AUDITSYSCALL"],"series_id":"24864c8b-db9e-43cd-a500-df7e1ff782f7","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-27 09:17:55 +0000 UTC FinishedAt: 2026-07-27 12:21:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*a625d14b-caa5-47f6-8000-129776f07070,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*7b3148fd-d69b-4500-9ddf-0207e495c4db,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-workflowsw4zg/series-workflowsw4zg-build-action-3734951057/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-workflowsw4zg/series-workflowsw4zg-build-action-2039040830/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-workflowsw4zg/series-workflowsw4zg-convert-artifact-3015934223/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,}