Name: series-workflowk7vfn Phase: Succeeded StartedAt: 2026-07-23 15:36:25 +0000 UTC FinishedAt: 2026-07-23 17:19:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk7vfn[0] Phase: Succeeded StartedAt: 2026-07-23 15:36:25 +0000 UTC FinishedAt: 2026-07-23 15:57:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk7vfn[0].run-triage Phase: Succeeded StartedAt: 2026-07-23 15:36:25 +0000 UTC FinishedAt: 2026-07-23 15:57:57 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "e61e6fd4f139f2342a6bc86da602df7456ef87f6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM", "VIRTUALIZATION" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "e61e6fd4f139f2342a6bc86da602df7456ef87f6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM", "VIRTUALIZATION" ], "series_id": "13ef1e79-747c-4abf-b4a3-854c5c75efba" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_loongarch_csr_io" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDE1OjU2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtWSVJUVUFMSVpBVElPTiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9sb29uZ2FyY2hfY3NyX2lvJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhpcyBwYXRjaCBhZGRzIGJ1bGsgQ1NSIGdldC9zZXQgZnVuY3Rpb25hbGl0eSBmb3IgTG9vbmdBcmNoIEtWTSB2aWEgbmV3IGlvY3RscyAoS1ZNX0xPT05HQVJDSF9HRVRfQ1NSIGFuZCBLVk1fTE9PTkdBUkNIX1NFVF9DU1IpLiBUaGVzZSBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBtZW1vcnkgc2FmZXR5IGFuZCBjb3JyZWN0IGJvdW5kcyBjaGVja2luZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAxNTo1NjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGU3MDk5ZTBmNDYyZmFlZGMyYjE1YTc5MzgwOTFkOGQwMTQ2OTgyZmFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAyMyAxNTo1Njo0OSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oIGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxuaW5kZXggMjNjZmJlY2ViYmQ3OWEuLmFhY2Y1ZDg0MjE3ZjI4IDEwMDY0NFxuLS0tIGEvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxuQEAgLTM2Miw3ICYjNDM7MzYyLDcgQEAgZXh0ZXJuIHN0cnVjdCBrdm1fd29ybGRfc3dpdGNoICprdm1fbG9vbmdhcmNoX29wcztcbiAjZGVmaW5lIEhXX0dDU1JcdFx0KDEgXHUwMDNjXHUwMDNjIDEpXG4gI2RlZmluZSBJTlZBTElEX0dDU1JcdCgxIFx1MDAzY1x1MDAzYyAyKVxuIFxuLWludCBnZXRfZ2Nzcl9mbGFnKGludCBjc3IpO1xuJiM0MztpbnQgZ2V0X2djc3JfZmxhZyh1bnNpZ25lZCBpbnQgY3NyKTtcbiB2b2lkIHNldF9od19nY3NyKGludCBjc3JfaWQsIHVuc2lnbmVkIGxvbmcgdmFsKTtcbiBcbiAjZW5kaWYgLyogX19BU01fTE9PTkdBUkNIX0tWTV9IT1NUX0hfXyAqL1xuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvdWFwaS9hc20va3ZtLmggYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oXG5pbmRleCBjZDBiNWMxMWNhOWMyYi4uNTliM2I3ZWZhMDM5N2UgMTAwNjQ0XG4tLS0gYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oXG5AQCAtMTI3LDYgJiM0MzsxMjcsMTkgQEAgc3RydWN0IGt2bV9zeW5jX3JlZ3Mge1xuIHN0cnVjdCBrdm1fc3JlZ3Mge1xuIH07XG4gXG4mIzQzOy8qIGJ1bGsgQ1NSIGVudHJpZXMgZm9yIFZNIG1pZ3JhdGlvbiAqL1xuJiM0MztzdHJ1Y3Qga3ZtX2xvb25nYXJjaF9jc3JfZW50cnkge1xuJiM0MztcdF9fdTMyIGluZGV4O1xuJiM0MztcdF9fdTMyIHJlc2VydmVkO1xuJiM0MztcdF9fdTY0IGRhdGE7XG4mIzQzO307XG4mIzQzO1xuJiM0MztzdHJ1Y3Qga3ZtX2xvb25nYXJjaF9jc3JzIHtcbiYjNDM7XHRfX3UzMiBuY3NycztcdC8qIG51bWJlciBvZiBjc3IgZW50cmllcyAqL1xuJiM0MztcdF9fdTMyIHBhZDtcbiYjNDM7XHRfX0RFQ0xBUkVfRkxFWF9BUlJBWShzdHJ1Y3Qga3ZtX2xvb25nYXJjaF9jc3JfZW50cnksIGVudHJpZXMpO1xuJiM0Mzt9O1xuJiM0MztcbiBzdHJ1Y3Qga3ZtX2lvY3NyX2VudHJ5IHtcbiBcdF9fdTMyIGFkZHI7XG4gXHRfX3UzMiBwYWQ7XG5kaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gva3ZtL21haW4uYyBiL2FyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmNcbmluZGV4IDNlMTAwNTUyNmY0YmQ2Li5kODAyZDM5M2NkNDRkOCAxMDA2NDRcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmNcbkBAIC0xOSw3ICYjNDM7MTksNyBAQCBzdHJ1Y3Qga3ZtX3dvcmxkX3N3aXRjaCAqa3ZtX2xvb25nYXJjaF9vcHM7XG4gc3RhdGljIGludCBnY3NyX2ZsYWdbQ1NSX01BWF9OVU1TXTtcbiBzdGF0aWMgc3RydWN0IGt2bV9jb250ZXh0IF9fcGVyY3B1ICp2bWNzO1xuIFxuLWludCBnZXRfZ2Nzcl9mbGFnKGludCBjc3IpXG4mIzQzO2ludCBnZXRfZ2Nzcl9mbGFnKHVuc2lnbmVkIGludCBjc3IpXG4ge1xuIFx0aWYgKGNzciBcdTAwM2MgQ1NSX01BWF9OVU1TKVxuIFx0XHRyZXR1cm4gZ2Nzcl9mbGFnW2Nzcl07XG5AQCAtMjcsMTMgJiM0MzsyNywxMyBAQCBpbnQgZ2V0X2djc3JfZmxhZyhpbnQgY3NyKVxuIFx0cmV0dXJuIElOVkFMSURfR0NTUjtcbiB9XG4gXG4tc3RhdGljIGlubGluZSB2b2lkIHNldF9nY3NyX3N3X2ZsYWcoaW50IGNzcilcbiYjNDM7c3RhdGljIGlubGluZSB2b2lkIHNldF9nY3NyX3N3X2ZsYWcodW5zaWduZWQgaW50IGNzcilcbiB7XG4gXHRpZiAoY3NyIFx1MDAzYyBDU1JfTUFYX05VTVMpXG4gXHRcdGdjc3JfZmxhZ1tjc3JdIHw9IFNXX0dDU1I7XG4gfVxuIFxuLXN0YXRpYyBpbmxpbmUgdm9pZCBzZXRfZ2Nzcl9od19mbGFnKGludCBjc3IpXG4mIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBzZXRfZ2Nzcl9od19mbGFnKHVuc2lnbmVkIGludCBjc3IpXG4ge1xuIFx0aWYgKGNzciBcdTAwM2MgQ1NSX01BWF9OVU1TKVxuIFx0XHRnY3NyX2ZsYWdbY3NyXSB8PSBIV19HQ1NSO1xuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMgYi9hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jXG5pbmRleCAyMGMyMDdkODBlMzFhZS4uMmJiNmE3ZTBlYTg3NzYgMTAwNjQ0XG4tLS0gYS9hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jXG5AQCAtMTAwOSw2ICYjNDM7MTAwOSw3NyBAQCBpbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVnc1xuIFx0cmV0dXJuIC1FTk9JT0NUTENNRDtcbiB9XG4gXG4mIzQzOy8qIG1heCBDU1IgZW50cmllcyBoYW5kbGVkIHBlciBpb2N0bCAqL1xuJiM0MzsjZGVmaW5lIEtWTV9MT09OR0FSQ0hfTUFYX0NTUl9SRUdTXHQweDQwMFxuJiM0MztcbiYjNDM7LyogQnVsayBnZXQvc2V0IG9mIENTUiBzdGF0ZSBmb3IgVk0gbWlncmF0aW9uLiAqL1xuJiM0MztzdGF0aWMgaW50IGt2bV9sb29uZ2FyY2hfY3NyX2lvKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbiYjNDM7XHRcdFx0XHRzdHJ1Y3Qga3ZtX2xvb25nYXJjaF9jc3JzIF9fdXNlciAqdWNzcnMsXG4mIzQzO1x0XHRcdFx0Ym9vbCB3cml0ZSlcbiYjNDM7e1xuJiM0MztcdGludCBpLCByZXQgPSAwO1xuJiM0MztcdHVuc2lnbmVkIGxvbmcgc2l6ZTtcbiYjNDM7XHRzdHJ1Y3Qga3ZtX2xvb25nYXJjaF9jc3JzIGNzcnM7XG4mIzQzO1x0c3RydWN0IGt2bV9sb29uZ2FyY2hfY3NyX2VudHJ5ICplbnRyaWVzO1xuJiM0MztcdHN0cnVjdCBsb29uZ2FyY2hfY3NycyAqY3NyID0gdmNwdS1cdTAwM2VhcmNoLmNzcjtcbiYjNDM7XG4mIzQzO1x0aWYgKGNvcHlfZnJvbV91c2VyKFx1MDAyNmNzcnMsIHVjc3JzLCBzaXplb2YoY3NycykpKVxuJiM0MztcdFx0cmV0dXJuIC1FRkFVTFQ7XG4mIzQzO1xuJiM0MztcdGlmIChjc3JzLnBhZClcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcbiYjNDM7XHRpZiAoY3Nycy5uY3NycyBcdTAwM2UgS1ZNX0xPT05HQVJDSF9NQVhfQ1NSX1JFR1MpXG4mIzQzO1x0XHRyZXR1cm4gLUUyQklHO1xuJiM0MztcbiYjNDM7XHRzaXplID0gYXJyYXlfc2l6ZShjc3JzLm5jc3JzLCBzaXplb2YoKmVudHJpZXMpKTtcbiYjNDM7XHRlbnRyaWVzID0gbWVtZHVwX3VzZXIodWNzcnMtXHUwMDNlZW50cmllcywgc2l6ZSk7XG4mIzQzO1x0aWYgKElTX0VSUihlbnRyaWVzKSlcbiYjNDM7XHRcdHJldHVybiBQVFJfRVJSKGVudHJpZXMpO1xuJiM0MztcbiYjNDM7XHRpZiAod3JpdGUpIHtcbiYjNDM7XHRcdHZjcHUtXHUwMDNlYXJjaC5hdXhfaW51c2UgXHUwMDI2PSB+S1ZNX0xBUkNIX0hXQ1NSX1VTQUJMRTtcbiYjNDM7XHR9IGVsc2Uge1xuJiM0MztcdFx0cHJlZW1wdF9kaXNhYmxlKCk7XG4mIzQzO1x0XHR2Y3B1X2xvYWQodmNwdSk7XG4mIzQzO1x0XHRrdm1fZGVsaXZlcl9pbnRyKHZjcHUpO1xuJiM0MztcdFx0dmNwdS1cdTAwM2VhcmNoLmF1eF9pbnVzZSBcdTAwMjY9IH5LVk1fTEFSQ0hfU1dDU1JfTEFURVNUO1xuJiM0MztcdFx0dmNwdV9wdXQodmNwdSk7XG4mIzQzO1x0XHRwcmVlbXB0X2VuYWJsZSgpO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgY3Nycy5uY3NyczsgaSYjNDM7JiM0MzspIHtcbiYjNDM7XHRcdHVuc2lnbmVkIGludCBpZCA9IGVudHJpZXNbaV0uaW5kZXg7XG4mIzQzO1xuJiM0MztcdFx0aWYgKGVudHJpZXNbaV0ucmVzZXJ2ZWQgfHwgaWQgXHUwMDNlPSBDU1JfTUFYX05VTVMgfHxcbiYjNDM7XHRcdCAgICAoZ2V0X2djc3JfZmxhZyhpZCkgXHUwMDI2IElOVkFMSURfR0NTUikpIHtcbiYjNDM7XHRcdFx0cmV0ID0gLUVJTlZBTDtcbiYjNDM7XHRcdFx0YnJlYWs7XG4mIzQzO1x0XHR9XG4mIzQzO1xuJiM0MztcdFx0aWYgKHdyaXRlKSB7XG4mIzQzO1x0XHRcdHJldCA9IF9rdm1fc2V0Y3NyKHZjcHUsIGlkLCBlbnRyaWVzW2ldLmRhdGEpO1xuJiM0MztcdFx0XHRpZiAocmV0KVxuJiM0MztcdFx0XHRcdGJyZWFrO1xuJiM0MztcdFx0fSBlbHNlIGlmIChpZCA9PSBMT09OR0FSQ0hfQ1NSX0VTVEFUKSB7XG4mIzQzO1x0XHRcdHVuc2lnbmVkIGxvbmcgZXN0YXQsIGdpbnRjO1xuJiM0MztcbiYjNDM7XHRcdFx0LyogRVNUQVQgSVAwfklQNyBjb21lIGZyb20gR0lOVEMgKi9cbiYjNDM7XHRcdFx0Z2ludGMgPSBrdm1fcmVhZF9zd19nY3NyKGNzciwgTE9PTkdBUkNIX0NTUl9HSU5UQykgXHUwMDI2IEtWTV9HSU5UQ19JUlFfTUFTSztcbiYjNDM7XHRcdFx0ZXN0YXQgPSBrdm1fcmVhZF9zd19nY3NyKGNzciwgTE9PTkdBUkNIX0NTUl9FU1RBVCkgXHUwMDI2IH5LVk1fRVNUQVRfRVhUSV9NQVNLO1xuJiM0MztcdFx0XHRlbnRyaWVzW2ldLmRhdGEgPSBlc3RhdCB8IChnaW50YyBcdTAwM2NcdTAwM2MgVklQX0RFTFRBKTtcbiYjNDM7XHRcdH0gZWxzZSB7XG4mIzQzO1x0XHRcdGVudHJpZXNbaV0uZGF0YSA9IGt2bV9yZWFkX3N3X2djc3IoY3NyLCBpZCk7XG4mIzQzO1x0XHR9XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRpZiAoIXdyaXRlIFx1MDAyNlx1MDAyNiBjb3B5X3RvX3VzZXIodWNzcnMtXHUwMDNlZW50cmllcywgZW50cmllcywgc2l6ZSkpXG4mIzQzO1x0XHRyZXQgPSAtRUZBVUxUO1xuJiM0MztcbiYjNDM7XHRrZnJlZShlbnRyaWVzKTtcbiYjNDM7XHRyZXR1cm4gcmV0O1xuJiM0Mzt9XG4mIzQzO1xuIGludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9yZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9yZWdzICpyZWdzKVxuIHtcbiBcdGludCBpO1xuQEAgLTEyNjYsNiAmIzQzOzEzMzcsMTIgQEAgbG9uZyBrdm1fYXJjaF92Y3B1X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLFxuIFx0XHRcdHIgPSBrdm1fZ2V0X3JlZyh2Y3B1LCBcdTAwMjZyZWcpO1xuIFx0XHRicmVhaztcbiBcdH1cbiYjNDM7XHRjYXNlIEtWTV9MT09OR0FSQ0hfR0VUX0NTUjpcbiYjNDM7XHRcdHIgPSBrdm1fbG9vbmdhcmNoX2Nzcl9pbyh2Y3B1LCBhcmdwLCBmYWxzZSk7XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHRjYXNlIEtWTV9MT09OR0FSQ0hfU0VUX0NTUjpcbiYjNDM7XHRcdHIgPSBrdm1fbG9vbmdhcmNoX2Nzcl9pbyh2Y3B1LCBhcmdwLCB0cnVlKTtcbiYjNDM7XHRcdGJyZWFrO1xuIFx0Y2FzZSBLVk1fRU5BQkxFX0NBUDoge1xuIFx0XHRzdHJ1Y3Qga3ZtX2VuYWJsZV9jYXAgY2FwO1xuIFxuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2t2bS92bS5jIGIvYXJjaC9sb29uZ2FyY2gva3ZtL3ZtLmNcbmluZGV4IDEzMTdjNzE4Zjg5NmFmLi43ODVmMmZhMGQxNjQyZCAxMDA2NDRcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL2t2bS92bS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2xvb25nYXJjaC9rdm0vdm0uY1xuQEAgLTEyMiw2ICYjNDM7MTIyLDcgQEAgaW50IGt2bV92bV9pb2N0bF9jaGVja19leHRlbnNpb24oc3RydWN0IGt2bSAqa3ZtLCBsb25nIGV4dClcbiBcdGNhc2UgS1ZNX0NBUF9JT0VWRU5URkQ6XG4gXHRjYXNlIEtWTV9DQVBfTVBfU1RBVEU6XG4gXHRjYXNlIEtWTV9DQVBfU0VUX0dVRVNUX0RFQlVHOlxuJiM0MztcdGNhc2UgS1ZNX0NBUF9MT09OR0FSQ0hfQ1NSOlxuIFx0XHRyID0gMTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEtWTV9DQVBfTlJfVkNQVVM6XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L2t2bS5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L2t2bS5oXG5pbmRleCA0MTkwMTEwOTdmYThlMi4uNDVkOWViMDZjYjhhYzUgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL3VhcGkvbGludXgva3ZtLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvdWFwaS9saW51eC9rdm0uaFxuQEAgLTk5Nyw2ICYjNDM7OTk3LDcgQEAgc3RydWN0IGt2bV9lbmFibGVfY2FwIHtcbiAjZGVmaW5lIEtWTV9DQVBfUzM5MF9LRVlPUCAyNDdcbiAjZGVmaW5lIEtWTV9DQVBfUzM5MF9WU0lFX0VTQU1PREUgMjQ4XG4gI2RlZmluZSBLVk1fQ0FQX1MzOTBfSFBBR0VfMkcgMjQ5XG4mIzQzOyNkZWZpbmUgS1ZNX0NBUF9MT09OR0FSQ0hfQ1NSXHQyNTBcbiBcbiBzdHJ1Y3Qga3ZtX2lycV9yb3V0aW5nX2lycWNoaXAge1xuIFx0X191MzIgaXJxY2hpcDtcbkBAIC0xNjcwLDQgJiM0MzsxNjcxLDggQEAgc3RydWN0IGt2bV9wcmVfZmF1bHRfbWVtb3J5IHtcbiBcdF9fdTY0IHBhZGRpbmdbNV07XG4gfTtcbiBcbiYjNDM7LyogTG9vbmdBcmNoOiBidWxrIENTUiBnZXQvc2V0IGZvciBtaWdyYXRpb24gKi9cbiYjNDM7I2RlZmluZSBLVk1fTE9PTkdBUkNIX0dFVF9DU1JcdF9JT1dSKEtWTUlPLCAweGQ2LCBzdHJ1Y3Qga3ZtX2xvb25nYXJjaF9jc3JzKVxuJiM0MzsjZGVmaW5lIEtWTV9MT09OR0FSQ0hfU0VUX0NTUlx0X0lPVyhLVk1JTywgIDB4ZDcsIHN0cnVjdCBrdm1fbG9vbmdhcmNoX2NzcnMpXG4mIzQzO1xuICNlbmRpZiAvKiBfX0xJTlVYX0tWTV9IICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMTU6NTY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtWSVJUVUFMSVpBVElPTiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9sb29uZ2FyY2hfY3NyX2lvJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhpcyBwYXRjaCBhZGRzIGJ1bGsgQ1NSIGdldC9zZXQgZnVuY3Rpb25hbGl0eSBmb3IgTG9vbmdBcmNoIEtWTSB2aWEgbmV3IGlvY3RscyAoS1ZNX0xPT05HQVJDSF9HRVRfQ1NSIGFuZCBLVk1fTE9PTkdBUkNIX1NFVF9DU1IpLiBUaGVzZSBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBtZW1vcnkgc2FmZXR5IGFuZCBjb3JyZWN0IGJvdW5kcyBjaGVja2luZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZTcwOTllMGY0NjJmYWVkYzJiMTVhNzkzODA5MWQ4ZDAxNDY5ODJmYQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgSnVsIDIzIDE1OjU2OjQ5IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2hvc3QuaCBiL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgKaW5kZXggMjNjZmJlY2ViYmQ3OWEuLmFhY2Y1ZDg0MjE3ZjI4IDEwMDY0NAotLS0gYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgKQEAgLTM2Miw3ICYjNDM7MzYyLDcgQEAgZXh0ZXJuIHN0cnVjdCBrdm1fd29ybGRfc3dpdGNoICprdm1fbG9vbmdhcmNoX29wczsKICNkZWZpbmUgSFdfR0NTUgkJKDEgJmx0OyZsdDsgMSkKICNkZWZpbmUgSU5WQUxJRF9HQ1NSCSgxICZsdDsmbHQ7IDIpCiAKLWludCBnZXRfZ2Nzcl9mbGFnKGludCBjc3IpOwomIzQzO2ludCBnZXRfZ2Nzcl9mbGFnKHVuc2lnbmVkIGludCBjc3IpOwogdm9pZCBzZXRfaHdfZ2NzcihpbnQgY3NyX2lkLCB1bnNpZ25lZCBsb25nIHZhbCk7CiAKICNlbmRpZiAvKiBfX0FTTV9MT09OR0FSQ0hfS1ZNX0hPU1RfSF9fICovCmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oIGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS91YXBpL2FzbS9rdm0uaAppbmRleCBjZDBiNWMxMWNhOWMyYi4uNTliM2I3ZWZhMDM5N2UgMTAwNjQ0Ci0tLSBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS91YXBpL2FzbS9rdm0uaApAQCAtMTI3LDYgJiM0MzsxMjcsMTkgQEAgc3RydWN0IGt2bV9zeW5jX3JlZ3Mgewogc3RydWN0IGt2bV9zcmVncyB7CiB9OwogCiYjNDM7LyogYnVsayBDU1IgZW50cmllcyBmb3IgVk0gbWlncmF0aW9uICovCiYjNDM7c3RydWN0IGt2bV9sb29uZ2FyY2hfY3NyX2VudHJ5IHsKJiM0MzsJX191MzIgaW5kZXg7CiYjNDM7CV9fdTMyIHJlc2VydmVkOwomIzQzOwlfX3U2NCBkYXRhOwomIzQzO307CiYjNDM7CiYjNDM7c3RydWN0IGt2bV9sb29uZ2FyY2hfY3NycyB7CiYjNDM7CV9fdTMyIG5jc3JzOwkvKiBudW1iZXIgb2YgY3NyIGVudHJpZXMgKi8KJiM0MzsJX191MzIgcGFkOwomIzQzOwlfX0RFQ0xBUkVfRkxFWF9BUlJBWShzdHJ1Y3Qga3ZtX2xvb25nYXJjaF9jc3JfZW50cnksIGVudHJpZXMpOwomIzQzO307CiYjNDM7CiBzdHJ1Y3Qga3ZtX2lvY3NyX2VudHJ5IHsKIAlfX3UzMiBhZGRyOwogCV9fdTMyIHBhZDsKZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmMgYi9hcmNoL2xvb25nYXJjaC9rdm0vbWFpbi5jCmluZGV4IDNlMTAwNTUyNmY0YmQ2Li5kODAyZDM5M2NkNDRkOCAxMDA2NDQKLS0tIGEvYXJjaC9sb29uZ2FyY2gva3ZtL21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2xvb25nYXJjaC9rdm0vbWFpbi5jCkBAIC0xOSw3ICYjNDM7MTksNyBAQCBzdHJ1Y3Qga3ZtX3dvcmxkX3N3aXRjaCAqa3ZtX2xvb25nYXJjaF9vcHM7CiBzdGF0aWMgaW50IGdjc3JfZmxhZ1tDU1JfTUFYX05VTVNdOwogc3RhdGljIHN0cnVjdCBrdm1fY29udGV4dCBfX3BlcmNwdSAqdm1jczsKIAotaW50IGdldF9nY3NyX2ZsYWcoaW50IGNzcikKJiM0MztpbnQgZ2V0X2djc3JfZmxhZyh1bnNpZ25lZCBpbnQgY3NyKQogewogCWlmIChjc3IgJmx0OyBDU1JfTUFYX05VTVMpCiAJCXJldHVybiBnY3NyX2ZsYWdbY3NyXTsKQEAgLTI3LDEzICYjNDM7MjcsMTMgQEAgaW50IGdldF9nY3NyX2ZsYWcoaW50IGNzcikKIAlyZXR1cm4gSU5WQUxJRF9HQ1NSOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgc2V0X2djc3Jfc3dfZmxhZyhpbnQgY3NyKQomIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBzZXRfZ2Nzcl9zd19mbGFnKHVuc2lnbmVkIGludCBjc3IpCiB7CiAJaWYgKGNzciAmbHQ7IENTUl9NQVhfTlVNUykKIAkJZ2Nzcl9mbGFnW2Nzcl0gfD0gU1dfR0NTUjsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIHNldF9nY3NyX2h3X2ZsYWcoaW50IGNzcikKJiM0MztzdGF0aWMgaW5saW5lIHZvaWQgc2V0X2djc3JfaHdfZmxhZyh1bnNpZ25lZCBpbnQgY3NyKQogewogCWlmIChjc3IgJmx0OyBDU1JfTUFYX05VTVMpCiAJCWdjc3JfZmxhZ1tjc3JdIHw9IEhXX0dDU1I7CmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jIGIvYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYwppbmRleCAyMGMyMDdkODBlMzFhZS4uMmJiNmE3ZTBlYTg3NzYgMTAwNjQ0Ci0tLSBhL2FyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYwpAQCAtMTAwOSw2ICYjNDM7MTAwOSw3NyBAQCBpbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncwogCXJldHVybiAtRU5PSU9DVExDTUQ7CiB9CiAKJiM0MzsvKiBtYXggQ1NSIGVudHJpZXMgaGFuZGxlZCBwZXIgaW9jdGwgKi8KJiM0MzsjZGVmaW5lIEtWTV9MT09OR0FSQ0hfTUFYX0NTUl9SRUdTCTB4NDAwCiYjNDM7CiYjNDM7LyogQnVsayBnZXQvc2V0IG9mIENTUiBzdGF0ZSBmb3IgVk0gbWlncmF0aW9uLiAqLwomIzQzO3N0YXRpYyBpbnQga3ZtX2xvb25nYXJjaF9jc3JfaW8oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LAomIzQzOwkJCQlzdHJ1Y3Qga3ZtX2xvb25nYXJjaF9jc3JzIF9fdXNlciAqdWNzcnMsCiYjNDM7CQkJCWJvb2wgd3JpdGUpCiYjNDM7ewomIzQzOwlpbnQgaSwgcmV0ID0gMDsKJiM0MzsJdW5zaWduZWQgbG9uZyBzaXplOwomIzQzOwlzdHJ1Y3Qga3ZtX2xvb25nYXJjaF9jc3JzIGNzcnM7CiYjNDM7CXN0cnVjdCBrdm1fbG9vbmdhcmNoX2Nzcl9lbnRyeSAqZW50cmllczsKJiM0MzsJc3RydWN0IGxvb25nYXJjaF9jc3JzICpjc3IgPSB2Y3B1LSZndDthcmNoLmNzcjsKJiM0MzsKJiM0MzsJaWYgKGNvcHlfZnJvbV91c2VyKCZhbXA7Y3NycywgdWNzcnMsIHNpemVvZihjc3JzKSkpCiYjNDM7CQlyZXR1cm4gLUVGQVVMVDsKJiM0MzsKJiM0MzsJaWYgKGNzcnMucGFkKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CiYjNDM7CWlmIChjc3JzLm5jc3JzICZndDsgS1ZNX0xPT05HQVJDSF9NQVhfQ1NSX1JFR1MpCiYjNDM7CQlyZXR1cm4gLUUyQklHOwomIzQzOwomIzQzOwlzaXplID0gYXJyYXlfc2l6ZShjc3JzLm5jc3JzLCBzaXplb2YoKmVudHJpZXMpKTsKJiM0MzsJZW50cmllcyA9IG1lbWR1cF91c2VyKHVjc3JzLSZndDtlbnRyaWVzLCBzaXplKTsKJiM0MzsJaWYgKElTX0VSUihlbnRyaWVzKSkKJiM0MzsJCXJldHVybiBQVFJfRVJSKGVudHJpZXMpOwomIzQzOwomIzQzOwlpZiAod3JpdGUpIHsKJiM0MzsJCXZjcHUtJmd0O2FyY2guYXV4X2ludXNlICZhbXA7PSB+S1ZNX0xBUkNIX0hXQ1NSX1VTQUJMRTsKJiM0MzsJfSBlbHNlIHsKJiM0MzsJCXByZWVtcHRfZGlzYWJsZSgpOwomIzQzOwkJdmNwdV9sb2FkKHZjcHUpOwomIzQzOwkJa3ZtX2RlbGl2ZXJfaW50cih2Y3B1KTsKJiM0MzsJCXZjcHUtJmd0O2FyY2guYXV4X2ludXNlICZhbXA7PSB+S1ZNX0xBUkNIX1NXQ1NSX0xBVEVTVDsKJiM0MzsJCXZjcHVfcHV0KHZjcHUpOwomIzQzOwkJcHJlZW1wdF9lbmFibGUoKTsKJiM0MzsJfQomIzQzOwomIzQzOwlmb3IgKGkgPSAwOyBpICZsdDsgY3Nycy5uY3NyczsgaSYjNDM7JiM0MzspIHsKJiM0MzsJCXVuc2lnbmVkIGludCBpZCA9IGVudHJpZXNbaV0uaW5kZXg7CiYjNDM7CiYjNDM7CQlpZiAoZW50cmllc1tpXS5yZXNlcnZlZCB8fCBpZCAmZ3Q7PSBDU1JfTUFYX05VTVMgfHwKJiM0MzsJCSAgICAoZ2V0X2djc3JfZmxhZyhpZCkgJmFtcDsgSU5WQUxJRF9HQ1NSKSkgewomIzQzOwkJCXJldCA9IC1FSU5WQUw7CiYjNDM7CQkJYnJlYWs7CiYjNDM7CQl9CiYjNDM7CiYjNDM7CQlpZiAod3JpdGUpIHsKJiM0MzsJCQlyZXQgPSBfa3ZtX3NldGNzcih2Y3B1LCBpZCwgZW50cmllc1tpXS5kYXRhKTsKJiM0MzsJCQlpZiAocmV0KQomIzQzOwkJCQlicmVhazsKJiM0MzsJCX0gZWxzZSBpZiAoaWQgPT0gTE9PTkdBUkNIX0NTUl9FU1RBVCkgewomIzQzOwkJCXVuc2lnbmVkIGxvbmcgZXN0YXQsIGdpbnRjOwomIzQzOwomIzQzOwkJCS8qIEVTVEFUIElQMH5JUDcgY29tZSBmcm9tIEdJTlRDICovCiYjNDM7CQkJZ2ludGMgPSBrdm1fcmVhZF9zd19nY3NyKGNzciwgTE9PTkdBUkNIX0NTUl9HSU5UQykgJmFtcDsgS1ZNX0dJTlRDX0lSUV9NQVNLOwomIzQzOwkJCWVzdGF0ID0ga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIExPT05HQVJDSF9DU1JfRVNUQVQpICZhbXA7IH5LVk1fRVNUQVRfRVhUSV9NQVNLOwomIzQzOwkJCWVudHJpZXNbaV0uZGF0YSA9IGVzdGF0IHwgKGdpbnRjICZsdDsmbHQ7IFZJUF9ERUxUQSk7CiYjNDM7CQl9IGVsc2UgewomIzQzOwkJCWVudHJpZXNbaV0uZGF0YSA9IGt2bV9yZWFkX3N3X2djc3IoY3NyLCBpZCk7CiYjNDM7CQl9CiYjNDM7CX0KJiM0MzsKJiM0MzsJaWYgKCF3cml0ZSAmYW1wOyZhbXA7IGNvcHlfdG9fdXNlcih1Y3Nycy0mZ3Q7ZW50cmllcywgZW50cmllcywgc2l6ZSkpCiYjNDM7CQlyZXQgPSAtRUZBVUxUOwomIzQzOwomIzQzOwlrZnJlZShlbnRyaWVzKTsKJiM0MzsJcmV0dXJuIHJldDsKJiM0Mzt9CiYjNDM7CiBpbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcmVncyAqcmVncykKIHsKIAlpbnQgaTsKQEAgLTEyNjYsNiAmIzQzOzEzMzcsMTIgQEAgbG9uZyBrdm1fYXJjaF92Y3B1X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLAogCQkJciA9IGt2bV9nZXRfcmVnKHZjcHUsICZhbXA7cmVnKTsKIAkJYnJlYWs7CiAJfQomIzQzOwljYXNlIEtWTV9MT09OR0FSQ0hfR0VUX0NTUjoKJiM0MzsJCXIgPSBrdm1fbG9vbmdhcmNoX2Nzcl9pbyh2Y3B1LCBhcmdwLCBmYWxzZSk7CiYjNDM7CQlicmVhazsKJiM0MzsJY2FzZSBLVk1fTE9PTkdBUkNIX1NFVF9DU1I6CiYjNDM7CQlyID0ga3ZtX2xvb25nYXJjaF9jc3JfaW8odmNwdSwgYXJncCwgdHJ1ZSk7CiYjNDM7CQlicmVhazsKIAljYXNlIEtWTV9FTkFCTEVfQ0FQOiB7CiAJCXN0cnVjdCBrdm1fZW5hYmxlX2NhcCBjYXA7CiAKZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2t2bS92bS5jIGIvYXJjaC9sb29uZ2FyY2gva3ZtL3ZtLmMKaW5kZXggMTMxN2M3MThmODk2YWYuLjc4NWYyZmEwZDE2NDJkIDEwMDY0NAotLS0gYS9hcmNoL2xvb25nYXJjaC9rdm0vdm0uYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2xvb25nYXJjaC9rdm0vdm0uYwpAQCAtMTIyLDYgJiM0MzsxMjIsNyBAQCBpbnQga3ZtX3ZtX2lvY3RsX2NoZWNrX2V4dGVuc2lvbihzdHJ1Y3Qga3ZtICprdm0sIGxvbmcgZXh0KQogCWNhc2UgS1ZNX0NBUF9JT0VWRU5URkQ6CiAJY2FzZSBLVk1fQ0FQX01QX1NUQVRFOgogCWNhc2UgS1ZNX0NBUF9TRVRfR1VFU1RfREVCVUc6CiYjNDM7CWNhc2UgS1ZNX0NBUF9MT09OR0FSQ0hfQ1NSOgogCQlyID0gMTsKIAkJYnJlYWs7CiAJY2FzZSBLVk1fQ0FQX05SX1ZDUFVTOgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L2t2bS5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L2t2bS5oCmluZGV4IDQxOTAxMTA5N2ZhOGUyLi40NWQ5ZWIwNmNiOGFjNSAxMDA2NDQKLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L2t2bS5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvdWFwaS9saW51eC9rdm0uaApAQCAtOTk3LDYgJiM0Mzs5OTcsNyBAQCBzdHJ1Y3Qga3ZtX2VuYWJsZV9jYXAgewogI2RlZmluZSBLVk1fQ0FQX1MzOTBfS0VZT1AgMjQ3CiAjZGVmaW5lIEtWTV9DQVBfUzM5MF9WU0lFX0VTQU1PREUgMjQ4CiAjZGVmaW5lIEtWTV9DQVBfUzM5MF9IUEFHRV8yRyAyNDkKJiM0MzsjZGVmaW5lIEtWTV9DQVBfTE9PTkdBUkNIX0NTUgkyNTAKIAogc3RydWN0IGt2bV9pcnFfcm91dGluZ19pcnFjaGlwIHsKIAlfX3UzMiBpcnFjaGlwOwpAQCAtMTY3MCw0ICYjNDM7MTY3MSw4IEBAIHN0cnVjdCBrdm1fcHJlX2ZhdWx0X21lbW9yeSB7CiAJX191NjQgcGFkZGluZ1s1XTsKIH07CiAKJiM0MzsvKiBMb29uZ0FyY2g6IGJ1bGsgQ1NSIGdldC9zZXQgZm9yIG1pZ3JhdGlvbiAqLwomIzQzOyNkZWZpbmUgS1ZNX0xPT05HQVJDSF9HRVRfQ1NSCV9JT1dSKEtWTUlPLCAweGQ2LCBzdHJ1Y3Qga3ZtX2xvb25nYXJjaF9jc3JzKQomIzQzOyNkZWZpbmUgS1ZNX0xPT05HQVJDSF9TRVRfQ1NSCV9JT1coS1ZNSU8sICAweGQ3LCBzdHJ1Y3Qga3ZtX2xvb25nYXJjaF9jc3JzKQomIzQzOwogI2VuZGlmIC8qIF9fTElOVVhfS1ZNX0ggKi8KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMTU6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQ0NwoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDIyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipMb29uZ0FyY2ggS1ZNIEJ1bGsgQ1NSIEFjY2VzczogSW5pdGlhbCBBc3Nlc3NtZW50KioKCk9rYXksIHNvIHRoZXJlJiMzOTtzIGEgcGF0Y2ggZmxvYXRpbmcgYXJvdW5kLCBhbmQgaXQmIzM5O3MgYWRkaW5nIHNvbWUgbXVjaC1uZWVkZWQgYnVsayBnZXQvc2V0IGZ1bmN0aW9uYWxpdHkgZm9yIENvbnRyb2wgYW5kIFN0YXR1cyBSZWdpc3RlcnMgKENTUnMpIHdpdGhpbiBMb29uZ0FyY2ggS1ZNLiBNeSBpbml0aWFsIHNjYW4gdGVsbHMgbWUgaXQmIzM5O3MgdG91Y2hpbmcgYGFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmNgIHRvIGFkZCBga3ZtX2xvb25nYXJjaF9jc3JfaW9gLCB3aGljaCBpcyB0aGUgbWVhdCBvZiB0aGUgaW9jdGwgaGFuZGxpbmcgZm9yIGBLVk1fTE9PTkdBUkNIX0dFVF9DU1JgIGFuZCBgS1ZNX0xPT05HQVJDSF9TRVRfQ1NSYC4gVGhhdOKAmXMgdGhlIGNvcmUgb2YgdGhlIG5ldyBmdW5jdGlvbmFsaXR5IHJpZ2h0IHRoZXJlLgoKSXQgYWxzbyBtZWFucyBjaGFuZ2VzIGluIGBhcmNoL2xvb25nYXJjaC9rdm0vdm0uY2AgdG8gcmVwb3J0IHRoZSBmZWF0dXJlIHdpdGggdGhlIGBLVk1fQ0FQX0xPT05HQVJDSF9DU1JgIGNhcGFiaWxpdHkg4oCTIG1ha2VzIHNlbnNlLCBnb3R0YSBhZHZlcnRpc2UgdGhlIG5ldyBjYXBhYmlsaXR5LiBBbmQsIGFoLCBhIHBhcmFtZXRlciB0eXBlIGNoYW5nZSBpbiBgYXJjaC9sb29uZ2FyY2gva3ZtL21haW4uY2AsIHNoaWZ0aW5nIGBnZXRfZ2Nzcl9mbGFnYCBmcm9tIGBpbnRgIHRvIGB1bnNpZ25lZCBpbnRgLiBQcm9iYWJseSBqdXN0IGEgdHlwZSBzYWZldHkgdGhpbmcgcmVsYXRlZCB0byBob3cgdGhlIGZsYWdzIGFyZSB1c2VkIG5vdy4KCkZ1bmN0aW9uYWxseSwgdGhpcyBpcyBhIGRlZmluaXRlIGVuaGFuY2VtZW50IHRvIHRoZSBLVk0gaW1wbGVtZW50YXRpb24gb24gTG9vbmdBcmNoLiBJdCBzY3JlYW1zIGZvciBmdXp6aW5nIHRvIGVuc3VyZSByb2J1c3RuZXNzIGFuZCB0aGF0IHRoZXJlIGFyZSBubyBoaWRkZW4gaXNzdWVzLiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIGltcGxpY2F0aW9ucyBvZiB0aGlzLiBMZXQgbWUgdHJhY2sgZG93biB0aGUgcmVsZXZhbnQgS2NvbmZpZyBvcHRpb25zLiBUaGUgY29kZSYjMzk7cyBpbiBgYXJjaC9sb29uZ2FyY2gva3ZtL2AsIHNvIEkmIzM5O2xsIHN0YXJ0IGJ5IGNoZWNraW5nIGBhcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZ2AgYW5kIHRoZW4gbWF5YmUgYGFyY2gvbG9vbmdhcmNoL0tjb25maWdgIGlmIEkgZG9uJiMzOTt0IGZpbmQgaXQgdGhlcmUuIEkgbmVlZCB0byBrbm93IGhvdyB0aGlzIG5ldyBmZWF0dXJlIGlzIGVuYWJsZWQgYW5kIGRpc2FibGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDE1OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBLVk0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL2xvb25nYXJjaC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cbmFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnLTE5LVxuYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTVxuYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWctMjEtXHR0cmlzdGF0ZSBcJiMzNDtLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAxNTo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTc4CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMTQ5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGJyZWFrZG93biBvZiB3aGF0IEkmIzM5O20gbG9va2luZyBhdDoKCioqS1ZNIExvb25nQXJjaCBDb25maWd1cmF0aW9uIEFzc2Vzc21lbnQqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGl0LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGUgcHJpbWFyeSBjb25maWd1cmF0aW9uIG9wdGlvbiB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGhlcmUgaXMgcHJvYmFibHkgYENPTkZJR19LVk1gLiBUaGF0JiMzOTtzIHRoZSBiaWcgb25lLCB0aGUgYmFzZSBLVk0gc3VwcG9ydC4gT2YgY291cnNlLCBnaXZlbiB0aGUgdmlydHVhbGl6YXRpb24gYXNwZWN0LCBJIHNob3VsZCBhbHNvIGRvdWJsZS1jaGVjayBhbmQgY29uc2lkZXIgdGhhdCBgQ09ORklHX1ZJUlRVQUxJWkFUSU9OYCBtaWdodCBiZSBhIG5lY2Vzc2FyeSBwcmVyZXF1aXNpdGUgb3IgY29tcGFuaW9uIHRvIGBDT05GSUdfS1ZNYC4gTmVlZCB0byBrZWVwIHRoYXQgaW4gbWluZC4KCk5vdywgbGV0JiMzOTtzIHBpbnBvaW50IHRoZSBmdW5jdGlvbnMgdGhhdCBhcmUgZ29pbmcgdG8gYmUgbW9zdCByZWxldmFudCBoZXJlLCB0aGUgb25lcyB0aGF0IG5lZWQgdGhlIGNsb3Nlc3Qgc2NydXRpbnkuIEl0IGxvb2tzIGxpa2UgYGt2bV9sb29uZ2FyY2hfY3NyX2lvYCBpcyBhIGtleSBmdW5jdGlvbiB0byBmb2N1cyBvbi4gTG9va3MgcHJldHR5IExvb25nQXJjaC1zcGVjaWZpYywgc28gbGlrZWx5IHRoZSBjb250cm9sIGFuZCBzdGF0dXMgcmVnaXN0ZXIgaW50ZXJhY3Rpb24gZnVuY3Rpb24uIGBrdm1fYXJjaF92Y3B1X2lvY3RsYCBpcyBpbiBwbGF5IHRvbywgYnV0IHRoYXQmIzM5O3MgYSBtb3JlIGdlbmVyaWMgaW9jdGwgaGFuZGxlciwgc28gdGhlIHJlYWwgaGVhdnkgbGlmdGluZyBtaWdodCBiZSBkb25lIGluIGBrdm1fbG9vbmdhcmNoX2Nzcl9pb2AgYW55d2F5LiBJIHNob3VsZCBwcm9iYWJseSBnaXZlIGJvdGggYSBjbG9zZSBsb29rLCBidXQgYGt2bV9sb29uZ2FyY2hfY3NyX2lvYCBzZWVtcyBsaWtlIHRoZSBwcmltYXJ5IHRhcmdldC4KCkkgbmVlZCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBzdXBwb3J0aW5nIGZ1bmN0aW9ucy4gSXQgc2VlbXMgdGhhdCBgZ2V0X2djc3JfZmxhZ2AgaXMgYWxzbyBhIG1vZGlmaWVkIGZ1bmN0aW9uLCBidXQgaXQgbG9va3MgbGlrZSBhIHNtYWxsIGhlbHBlciBmdW5jdGlvbiwgc28gSSYjMzk7bGwga2VlcCBhbiBleWUgb24gaXQgYnV0IHdvbiYjMzk7dCBmb2N1cyBvbiBpdCBpbml0aWFsbHkuCgpUbyBkaWcgaW4sIEkmIzM5O2xsIG5lZWQgdG8gaGVhZCBvdmVyIHRvIGBhcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jYCB0byBzZWUgaG93IGBrdm1fbG9vbmdhcmNoX2Nzcl9pb2AgaXMgYWN0dWFsbHkgaW1wbGVtZW50ZWQgYW5kIGhvdyBpdCBmaXRzIGludG8gdGhlIGJyb2FkZXIgS1ZNIExvb25nQXJjaCBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDE1OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9sb29uZ2FyY2hfY3NyX2lvJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jPTEwMDc9aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMDE1LS8qIEJ1bGsgZ2V0L3NldCBvZiBDU1Igc3RhdGUgZm9yIFZNIG1pZ3JhdGlvbi4gKi9cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6MTAxNjpzdGF0aWMgaW50IGt2bV9sb29uZ2FyY2hfY3NyX2lvKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTAxNy1cdFx0XHRcdHN0cnVjdCBrdm1fbG9vbmdhcmNoX2NzcnMgX191c2VyICp1Y3Nycyxcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jPTEzMDU9bG9uZyBrdm1fYXJjaF92Y3B1X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLFxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTM0MC1cdGNhc2UgS1ZNX0xPT05HQVJDSF9HRVRfQ1NSOlxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzoxMzQxOlx0XHRyID0ga3ZtX2xvb25nYXJjaF9jc3JfaW8odmNwdSwgYXJncCwgZmFsc2UpO1xuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMzQyLVx0XHRicmVhaztcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTM0My1cdGNhc2UgS1ZNX0xPT05HQVJDSF9TRVRfQ1NSOlxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzoxMzQ0Olx0XHRyID0ga3ZtX2xvb25nYXJjaF9jc3JfaW8odmNwdSwgYXJncCwgdHJ1ZSk7XG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEzNDUtXHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDE1OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYxNzEKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxMDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgTG9vbmdBcmNoIENTUiBJL08gSGFuZGxpbmcqKgoKQWxyaWdodCwgc28gdGhlIGNvcmUgb2YgdGhpcyBuZXcgZnVuY3Rpb25hbGl0eSBzZWVtcyB0byBiZSB0aGUgYGt2bV9sb29uZ2FyY2hfY3NyX2lvYCBmdW5jdGlvbi4gVGhhdCYjMzk7cyB0aGUgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nLCBubyBxdWVzdGlvbi4gR2l2ZW4gdGhhdCBpdCYjMzk7cyBMb29uZ0FyY2gtc3BlY2lmaWMsIHRoZSB0ZXN0aW5nIHdpbGwgbmF0dXJhbGx5IGJlIGNvbnN0cmFpbmVkIHRvIExvb25nQXJjaCBwbGF0Zm9ybXMgb3IgY3Jvc3MtY29tcGlsZWQgZW52aXJvbm1lbnRzLiBObyBiaWcgZGVhbCwgd2UgY2FuIGVhc2lseSBwcm92aWRlIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMgYW5kIHN5bWJvbHMgdG8gbWFrZSBzdXJlIHRoZSBmdXp6aW5nIGhhcm5lc3NlcyBmdW5jdGlvbiBjb3JyZWN0bHkuCgpTcGVjaWZpY2FsbHksIHdlJiMzOTtsbCBuZWVkIHRoZSBgS1ZNYCBjb25maWd1cmF0aW9uIHRvIGJlIGVuYWJsZWQuIEkmIzM5O2xsIG5lZWQgdG8gZm9jdXMgdGhlIGZ1enppbmcgb24gdGhlIGBrdm1fbG9vbmdhcmNoX2Nzcl9pb2Agc3ltYm9sLgoKQmVmb3JlIHdlIGNvbW1pdCB0byB0aGF0LCBJJiMzOTtsbCBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGF0IHRoZXJlIGFyZW4mIzM5O3QgYW55IG90aGVyIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMgdGhhdCB3ZSBtaWdodCBoYXZlIG1pc3NlZCwgb3IgYW55IGhpZGRlbiBkZXBlbmRlbmNpZXMuIEl0JiMzOTtzIGFsd2F5cyBnb29kIHRvIGJlIHRob3JvdWdoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDE1OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBLVk0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxuYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWctMTktXG5hcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNXG5hcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZy0yMS1cdHRyaXN0YXRlIFwmIzM0O0tlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDE1OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY1OTcKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQ29uc2lkZXJpbmcgQ29uZmlndXJhdGlvbiBQb3NzaWJpbGl0aWVzKioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUuLi4gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGFydGljdWxhciBzaXR1YXRpb24sIGFuZCBteSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gYXNrOiAqKklzIHRoaXMgdGhlICpvbmx5KiBjb25maWd1cmF0aW9uIHdlIG5lZWQgdG8gYWNjb3VudCBmb3I/KiogQXJlIHRoZXJlIGFueSBvdGhlciBwb3RlbnRpYWwgc2V0dXBzLCBlZGdlIGNhc2VzLCBvciB2YXJpYXRpb25zIGluIHRoZSBwYXJhbWV0ZXJzIHRoYXQgY291bGQgdGhyb3cgYSB3cmVuY2ggaW4gdGhlIHdvcmtzPyBJIG5lZWQgdG8gcXVpY2tseSBlc3RhYmxpc2ggaWYgdGhlIHByZXNlbnRlZCBzY2VuYXJpbyBpcyB0cnVseSByZXByZXNlbnRhdGl2ZSBvZiB0aGUgb3ZlcmFsbCBsYW5kc2NhcGUsIG9yIGlmIGl0JiMzOTtzIGp1c3Qgb25lIGRhdGEgcG9pbnQgaW4gYSBwb3RlbnRpYWxseSBtdWNoIGxhcmdlciwgbW9yZSBjb21wbGV4IGNvbmZpZ3VyYXRpb24gc3BhY2UuIEkmIzM5O20gYWxyZWFkeSBtZW50YWxseSBydW5uaW5nIHRocm91Z2ggdGhlIGNoZWNrbGlzdC4uLiBkaWZmZXJlbnQgaGFyZHdhcmUsIHNvZnR3YXJlIHZlcnNpb25zLCBuZXR3b3JrIHRvcG9sb2dpZXMuLi4gSSBoYXZlIHRvIGVuc3VyZSB0aGF0IEkmIzM5O20gY29uc2lkZXJpbmcgYWxsIHJlbGV2YW50IGZhY3RvcnMgYmVmb3JlIGRyYXdpbmcgYW55IGNvbmNsdXNpb25zLiBUaGUgZGVwdGggb2YgdGhlIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gaXMgYWxzbyBhbiBhcmVhIG9mIGNvbnNpZGVyYXRpb24sIGFzIGl0IGlzIHBvc3NpYmxlIHRoYXQgdGhlcmUgYXJlIG90aGVyIHN1Yi1jb25maWd1cmF0aW9ucyBJIGhhdmUgZmFpbGVkIHRvIHVuZGVyc3RhbmQsIG9yIHRoYXQgaGF2ZW4mIzM5O3QgYmVlbiBzaGFyZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDE1OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7YXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gICAyOlx0I1xuICAgMzpcdCMgS1ZNIGNvbmZpZ3VyYXRpb25cbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0c291cmNlIFwmIzM0O3ZpcnQva3ZtL0tjb25maWdcJiMzNDtcbiAgIDc6XHRcbiAgIDg6XHRtZW51Y29uZmlnIFZJUlRVQUxJWkFUSU9OXG4gICA5Olx0XHRib29sIFwmIzM0O1ZpcnR1YWxpemF0aW9uXCYjMzQ7XG4gIDEwOlx0XHRoZWxwXG4gIDExOlx0XHQgIFNheSBZIGhlcmUgdG8gZ2V0IHRvIHNlZSBvcHRpb25zIGZvciB1c2luZyB5b3VyIExpbnV4IGhvc3QgdG8gcnVuXG4gIDEyOlx0XHQgIG90aGVyIG9wZXJhdGluZyBzeXN0ZW1zIGluc2lkZSB2aXJ0dWFsIG1hY2hpbmVzIChndWVzdHMpLlxuICAxMzpcdFx0ICBUaGlzIG9wdGlvbiBhbG9uZSBkb2VzIG5vdCBhZGQgYW55IGtlcm5lbCBjb2RlLlxuICAxNDpcdFxuICAxNTpcdFx0ICBJZiB5b3Ugc2F5IE4sIGFsbCBvcHRpb25zIGluIHRoaXMgc3VibWVudSB3aWxsIGJlIHNraXBwZWQgYW5kXG4gIDE2Olx0XHQgIGRpc2FibGVkLlxuICAxNzpcdFxuICAxODpcdGlmIFZJUlRVQUxJWkFUSU9OXG4gIDE5Olx0XG4gIDIwOlx0Y29uZmlnIEtWTVxuICAyMTpcdFx0dHJpc3RhdGUgXCYjMzQ7S2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XCYjMzQ7XG4gIDIyOlx0XHRkZXBlbmRzIG9uIEFTX0hBU19MVlpfRVhURU5TSU9OIFx1MDAyNlx1MDAyNiA2NEJJVFxuICAyMzpcdFx0c2VsZWN0IEhBVkVfS1ZNX0RJUlRZX1JJTkdfQUNRX1JFTFxuICAyNDpcdFx0c2VsZWN0IEhBVkVfS1ZNX0lSUV9ST1VUSU5HXG4gIDI1Olx0XHRzZWxlY3QgSEFWRV9LVk1fSVJRQ0hJUFxuICAyNjpcdFx0c2VsZWN0IEhBVkVfS1ZNX01TSVxuICAyNzpcdFx0c2VsZWN0IEhBVkVfS1ZNX1JFQURPTkxZX01FTVxuICAyODpcdFx0c2VsZWN0IEtWTV9DT01NT05cbiAgMjk6XHRcdHNlbGVjdCBLVk1fR0VORVJJQ19ESVJUWUxPR19SRUFEX1BST1RFQ1RcbiAgMzA6XHRcdHNlbGVjdCBLVk1fR0VORVJJQ19IQVJEV0FSRV9FTkFCTElOR1xuICAzMTpcdFx0c2VsZWN0IEtWTV9NTUlPXG4gIDMyOlx0XHRzZWxlY3QgVklSVF9YRkVSX1RPX0dVRVNUX1dPUktcbiAgMzM6XHRcdHNlbGVjdCBTQ0hFRF9JTkZPXG4gIDM0Olx0XHRzZWxlY3QgR1VFU1RfUEVSRl9FVkVOVFMgaWYgUEVSRl9FVkVOVFNcbiAgMzU6XHRcdGhlbHBcbiAgMzY6XHRcdCAgU3VwcG9ydCBob3N0aW5nIHZpcnR1YWxpemVkIGd1ZXN0IG1hY2hpbmVzIHVzaW5nXG4gIDM3Olx0XHQgIGhhcmR3YXJlIHZpcnR1YWxpemF0aW9uIGV4dGVuc2lvbnMuIFlvdSB3aWxsIG5lZWRcbiAgMzg6XHRcdCAgYSBwcm9jZXNzb3IgZXF1aXBwZWQgd2l0aCB2aXJ0dWFsaXphdGlvbiBleHRlbnNpb25zLlxuICAzOTpcdFxuICA0MDpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuICA0MTpcdFxuICA0MjpcdGVuZGlmICMgVklSVFVBTElaQVRJT05cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMTU6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzM5MgoJCQkJCQkJb3V0cHV0OiAxMTgKCQkJCQkJCXRob3VnaHRzOiAxMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgRnV6emluZyBTdHJhdGVneSBmb3IgTG9vbmdBcmNoIEtWTSBDU1IgSU8qKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJJiMzOTttIGZvY3VzaW5nIG9uIGZ1enppbmcgdGhlIG5ldyBMb29uZ0FyY2ggS1ZNIENTUiBnZXQvc2V0IGZ1bmN0aW9uYWxpdHkuIFRoZSBrZXkgaGVyZSBpcyB0aGUgaW50cm9kdWN0aW9uIG9mIHRoZXNlIG5ldyBgaW9jdGxzYCwgYEtWTV9MT09OR0FSQ0hfR0VUX0NTUmAgYW5kIGBLVk1fTE9PTkdBUkNIX1NFVF9DU1JgLiBUaGV5JiMzOTtyZSBleHBvc2VkIHRvIHVzZXJzcGFjZSwgd2hpY2ggaW1tZWRpYXRlbHkgZmxhZ3MgdGhlbSBhcyBoaWdoLXByaW9yaXR5IHRhcmdldHMgZm9yIHZ1bG5lcmFiaWxpdHkgcmVzZWFyY2guIEdpdmVuIHRoYXQsIEkgd2lsbCBjb25maWd1cmUgdGhlIGZ1enplciB0byBob25lIGluIG9uIHRoZW0uCgpJJiMzOTtsbCBzdGFydCBieSBtYWtpbmcgc3VyZSB0aGUgZnV6emluZyBwcm9jZXNzIGlzIGV2ZW4gZW5hYmxlZCBmb3IgdGhpcyBmZWF0dXJlLCBzbyBJIHdpbGwgc2V0IGBXb3J0aEZ1enppbmdgIHRvIGB0cnVlYC4gVGhlbiwgSSBuZWVkIHRvIHRlbGwgdGhlIGZ1enplciBwcmVjaXNlbHkgd2hlcmUgdG8gZGlyZWN0IGl0cyBlZmZvcnRzLiBJJiMzOTtsbCBzZXQgYEZvY3VzU3ltYm9sc2AgdG8gZXhwbGljaXRseSBpbmNsdWRlIGAmIzM0O2t2bV9sb29uZ2FyY2hfY3NyX2lvJiMzNDtgLiBUaGF0IGZ1bmN0aW9uLCBvciBtb3JlIHByZWNpc2VseSB0aGUgZnVuY3Rpb25zIGl0IHdpbGwgY2FsbCwgaXMgd2hlcmUgdGhlIGJ1bGsgb2YgdGhlIGdldC9zZXQgbG9naWMgcmVzaWRlcywgYW5kIHRoYXQmIzM5O3Mgd2hlcmUgSSBuZWVkIHRoZSBmdXp6aW5nIGNhbXBhaWduIHRvIGJlIGNvbmNlbnRyYXRlZC4KCk9mIGNvdXJzZSwgdG8gZXZlbiB0ZXN0IHRoZSByZWxldmFudCBuZXcgZnVuY3Rpb25hbGl0eSwgSSYjMzk7bGwgbmVlZCB0byBlbmFibGUgdGhlIHN1cHBvcnRpbmcgY29uZmlndXJhdGlvbnMuIFRoZSB0YXJnZXQgaGVyZSBpcyBLVk0gb24gTG9vbmdBcmNoLCBzbyBJJiMzOTtsbCBzZXQgdGhlIGBFbmFibGVDb25maWdzYCB0byBpbmNsdWRlIGAmIzM0O0tWTSYjMzQ7YCBhbmQgYCYjMzQ7VklSVFVBTElaQVRJT04mIzM0O2AuCgpNeSByZWFzb25pbmcgaGVyZSBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiB0aGlzIHBhdGNoIGludHJvZHVjZXMgbmV3LCB1c2Vyc3BhY2UtYWNjZXNzaWJsZSBgaW9jdGxzYCBkZXNpZ25lZCBmb3IgYnVsayBDU1IgbWFuaXB1bGF0aW9uIHdpdGhpbiBMb29uZ0FyY2ggS1ZNLiAgR2l2ZW4gdGhlIHBvdGVudGlhbCBmb3IgbWVtb3J5IHNhZmV0eSBpc3N1ZXMgYW5kIHRoZSBhYnNvbHV0ZSBuZWVkIGZvciByb2J1c3QgYm91bmRzIGNoZWNraW5nIHdoZW4gZGVhbGluZyB3aXRoIHByaXZpbGVnZWQgb3BlcmF0aW9ucywgcmlnb3JvdXMgZnV6emluZyBpcyBlc3NlbnRpYWwuIFRoZXNlIGlvY3RscyBhcmUgdGhlIGVudHJ5IHBvaW50cywgYW5kIEkmIzM5O20gc2V0dGluZyB0aGUgZnV6emVyIHRvIGV4cGxvcmUgdGhlbSB0aG9yb3VnaGx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAxNTo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDssCiAgICAmIzM0O1ZJUlRVQUxJWkFUSU9OJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX2xvb25nYXJjaF9jc3JfaW8mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGlzIHBhdGNoIGFkZHMgYnVsayBDU1IgZ2V0L3NldCBmdW5jdGlvbmFsaXR5IGZvciBMb29uZ0FyY2ggS1ZNIHZpYSBuZXcgaW9jdGxzIChLVk1fTE9PTkdBUkNIX0dFVF9DU1IgYW5kIEtWTV9MT09OR0FSQ0hfU0VUX0NTUikuIFRoZXNlIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG1lbW9yeSBzYWZldHkgYW5kIGNvcnJlY3QgYm91bmRzIGNoZWNraW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OywKICAgICYjMzQ7VklSVFVBTElaQVRJT04mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1fbG9vbmdhcmNoX2Nzcl9pbyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoaXMgcGF0Y2ggYWRkcyBidWxrIENTUiBnZXQvc2V0IGZ1bmN0aW9uYWxpdHkgZm9yIExvb25nQXJjaCBLVk0gdmlhIG5ldyBpb2N0bHMgKEtWTV9MT09OR0FSQ0hfR0VUX0NTUiBhbmQgS1ZNX0xPT05HQVJDSF9TRVRfQ1NSKS4gVGhlc2UgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbWVtb3J5IHNhZmV0eSBhbmQgY29ycmVjdCBib3VuZHMgY2hlY2tpbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yM1QxNTo1Njo1MC40OTkzMzc1NjVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzY4NzA0Nzg0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIixcbiAgICBcIlZJUlRVQUxJWkFUSU9OXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX2xvb25nYXJjaF9jc3JfaW9cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoaXMgcGF0Y2ggYWRkcyBidWxrIENTUiBnZXQvc2V0IGZ1bmN0aW9uYWxpdHkgZm9yIExvb25nQXJjaCBLVk0gdmlhIG5ldyBpb2N0bHMgKEtWTV9MT09OR0FSQ0hfR0VUX0NTUiBhbmQgS1ZNX0xPT05HQVJDSF9TRVRfQ1NSKS4gVGhlc2UgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbWVtb3J5IHNhZmV0eSBhbmQgY29ycmVjdCBib3VuZHMgY2hlY2tpbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDE1OjU2OjUwLjQ5OTM0NDMzNVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDI2OTUzODMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZTcwOTllMGY0NjJmYWVkYzJiMTVhNzkzODA5MWQ4ZDAxNDY5ODJmYVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEp1bCAyMyAxNTo1Njo0OSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oIGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxcbmluZGV4IDIzY2ZiZWNlYmJkNzlhLi5hYWNmNWQ4NDIxN2YyOCAxMDA2NDRcXG4tLS0gYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXFxuKysrIGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxcbkBAIC0zNjIsNyArMzYyLDcgQEAgZXh0ZXJuIHN0cnVjdCBrdm1fd29ybGRfc3dpdGNoICprdm1fbG9vbmdhcmNoX29wcztcXG4gI2RlZmluZSBIV19HQ1NSXFx0XFx0KDEgXFx1MDAzY1xcdTAwM2MgMSlcXG4gI2RlZmluZSBJTlZBTElEX0dDU1JcXHQoMSBcXHUwMDNjXFx1MDAzYyAyKVxcbiBcXG4taW50IGdldF9nY3NyX2ZsYWcoaW50IGNzcik7XFxuK2ludCBnZXRfZ2Nzcl9mbGFnKHVuc2lnbmVkIGludCBjc3IpO1xcbiB2b2lkIHNldF9od19nY3NyKGludCBjc3JfaWQsIHVuc2lnbmVkIGxvbmcgdmFsKTtcXG4gXFxuICNlbmRpZiAvKiBfX0FTTV9MT09OR0FSQ0hfS1ZNX0hPU1RfSF9fICovXFxuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvdWFwaS9hc20va3ZtLmggYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oXFxuaW5kZXggY2QwYjVjMTFjYTljMmIuLjU5YjNiN2VmYTAzOTdlIDEwMDY0NFxcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvdWFwaS9hc20va3ZtLmhcXG4rKysgYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oXFxuQEAgLTEyNyw2ICsxMjcsMTkgQEAgc3RydWN0IGt2bV9zeW5jX3JlZ3Mge1xcbiBzdHJ1Y3Qga3ZtX3NyZWdzIHtcXG4gfTtcXG4gXFxuKy8qIGJ1bGsgQ1NSIGVudHJpZXMgZm9yIFZNIG1pZ3JhdGlvbiAqL1xcbitzdHJ1Y3Qga3ZtX2xvb25nYXJjaF9jc3JfZW50cnkge1xcbitcXHRfX3UzMiBpbmRleDtcXG4rXFx0X191MzIgcmVzZXJ2ZWQ7XFxuK1xcdF9fdTY0IGRhdGE7XFxuK307XFxuK1xcbitzdHJ1Y3Qga3ZtX2xvb25nYXJjaF9jc3JzIHtcXG4rXFx0X191MzIgbmNzcnM7XFx0LyogbnVtYmVyIG9mIGNzciBlbnRyaWVzICovXFxuK1xcdF9fdTMyIHBhZDtcXG4rXFx0X19ERUNMQVJFX0ZMRVhfQVJSQVkoc3RydWN0IGt2bV9sb29uZ2FyY2hfY3NyX2VudHJ5LCBlbnRyaWVzKTtcXG4rfTtcXG4rXFxuIHN0cnVjdCBrdm1faW9jc3JfZW50cnkge1xcbiBcXHRfX3UzMiBhZGRyO1xcbiBcXHRfX3UzMiBwYWQ7XFxuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmMgYi9hcmNoL2xvb25nYXJjaC9rdm0vbWFpbi5jXFxuaW5kZXggM2UxMDA1NTI2ZjRiZDYuLmQ4MDJkMzkzY2Q0NGQ4IDEwMDY0NFxcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmNcXG4rKysgYi9hcmNoL2xvb25nYXJjaC9rdm0vbWFpbi5jXFxuQEAgLTE5LDcgKzE5LDcgQEAgc3RydWN0IGt2bV93b3JsZF9zd2l0Y2ggKmt2bV9sb29uZ2FyY2hfb3BzO1xcbiBzdGF0aWMgaW50IGdjc3JfZmxhZ1tDU1JfTUFYX05VTVNdO1xcbiBzdGF0aWMgc3RydWN0IGt2bV9jb250ZXh0IF9fcGVyY3B1ICp2bWNzO1xcbiBcXG4taW50IGdldF9nY3NyX2ZsYWcoaW50IGNzcilcXG4raW50IGdldF9nY3NyX2ZsYWcodW5zaWduZWQgaW50IGNzcilcXG4ge1xcbiBcXHRpZiAoY3NyIFxcdTAwM2MgQ1NSX01BWF9OVU1TKVxcbiBcXHRcXHRyZXR1cm4gZ2Nzcl9mbGFnW2Nzcl07XFxuQEAgLTI3LDEzICsyNywxMyBAQCBpbnQgZ2V0X2djc3JfZmxhZyhpbnQgY3NyKVxcbiBcXHRyZXR1cm4gSU5WQUxJRF9HQ1NSO1xcbiB9XFxuIFxcbi1zdGF0aWMgaW5saW5lIHZvaWQgc2V0X2djc3Jfc3dfZmxhZyhpbnQgY3NyKVxcbitzdGF0aWMgaW5saW5lIHZvaWQgc2V0X2djc3Jfc3dfZmxhZyh1bnNpZ25lZCBpbnQgY3NyKVxcbiB7XFxuIFxcdGlmIChjc3IgXFx1MDAzYyBDU1JfTUFYX05VTVMpXFxuIFxcdFxcdGdjc3JfZmxhZ1tjc3JdIHw9IFNXX0dDU1I7XFxuIH1cXG4gXFxuLXN0YXRpYyBpbmxpbmUgdm9pZCBzZXRfZ2Nzcl9od19mbGFnKGludCBjc3IpXFxuK3N0YXRpYyBpbmxpbmUgdm9pZCBzZXRfZ2Nzcl9od19mbGFnKHVuc2lnbmVkIGludCBjc3IpXFxuIHtcXG4gXFx0aWYgKGNzciBcXHUwMDNjIENTUl9NQVhfTlVNUylcXG4gXFx0XFx0Z2Nzcl9mbGFnW2Nzcl0gfD0gSFdfR0NTUjtcXG5kaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYyBiL2FyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmNcXG5pbmRleCAyMGMyMDdkODBlMzFhZS4uMmJiNmE3ZTBlYTg3NzYgMTAwNjQ0XFxuLS0tIGEvYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuY1xcbisrKyBiL2FyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmNcXG5AQCAtMTAwOSw2ICsxMDA5LDc3IEBAIGludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzXFxuIFxcdHJldHVybiAtRU5PSU9DVExDTUQ7XFxuIH1cXG4gXFxuKy8qIG1heCBDU1IgZW50cmllcyBoYW5kbGVkIHBlciBpb2N0bCAqL1xcbisjZGVmaW5lIEtWTV9MT09OR0FSQ0hfTUFYX0NTUl9SRUdTXFx0MHg0MDBcXG4rXFxuKy8qIEJ1bGsgZ2V0L3NldCBvZiBDU1Igc3RhdGUgZm9yIFZNIG1pZ3JhdGlvbi4gKi9cXG4rc3RhdGljIGludCBrdm1fbG9vbmdhcmNoX2Nzcl9pbyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuK1xcdFxcdFxcdFxcdHN0cnVjdCBrdm1fbG9vbmdhcmNoX2NzcnMgX191c2VyICp1Y3NycyxcXG4rXFx0XFx0XFx0XFx0Ym9vbCB3cml0ZSlcXG4re1xcbitcXHRpbnQgaSwgcmV0ID0gMDtcXG4rXFx0dW5zaWduZWQgbG9uZyBzaXplO1xcbitcXHRzdHJ1Y3Qga3ZtX2xvb25nYXJjaF9jc3JzIGNzcnM7XFxuK1xcdHN0cnVjdCBrdm1fbG9vbmdhcmNoX2Nzcl9lbnRyeSAqZW50cmllcztcXG4rXFx0c3RydWN0IGxvb25nYXJjaF9jc3JzICpjc3IgPSB2Y3B1LVxcdTAwM2VhcmNoLmNzcjtcXG4rXFxuK1xcdGlmIChjb3B5X2Zyb21fdXNlcihcXHUwMDI2Y3NycywgdWNzcnMsIHNpemVvZihjc3JzKSkpXFxuK1xcdFxcdHJldHVybiAtRUZBVUxUO1xcbitcXG4rXFx0aWYgKGNzcnMucGFkKVxcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFxuK1xcdGlmIChjc3JzLm5jc3JzIFxcdTAwM2UgS1ZNX0xPT05HQVJDSF9NQVhfQ1NSX1JFR1MpXFxuK1xcdFxcdHJldHVybiAtRTJCSUc7XFxuK1xcbitcXHRzaXplID0gYXJyYXlfc2l6ZShjc3JzLm5jc3JzLCBzaXplb2YoKmVudHJpZXMpKTtcXG4rXFx0ZW50cmllcyA9IG1lbWR1cF91c2VyKHVjc3JzLVxcdTAwM2VlbnRyaWVzLCBzaXplKTtcXG4rXFx0aWYgKElTX0VSUihlbnRyaWVzKSlcXG4rXFx0XFx0cmV0dXJuIFBUUl9FUlIoZW50cmllcyk7XFxuK1xcbitcXHRpZiAod3JpdGUpIHtcXG4rXFx0XFx0dmNwdS1cXHUwMDNlYXJjaC5hdXhfaW51c2UgXFx1MDAyNj0gfktWTV9MQVJDSF9IV0NTUl9VU0FCTEU7XFxuK1xcdH0gZWxzZSB7XFxuK1xcdFxcdHByZWVtcHRfZGlzYWJsZSgpO1xcbitcXHRcXHR2Y3B1X2xvYWQodmNwdSk7XFxuK1xcdFxcdGt2bV9kZWxpdmVyX2ludHIodmNwdSk7XFxuK1xcdFxcdHZjcHUtXFx1MDAzZWFyY2guYXV4X2ludXNlIFxcdTAwMjY9IH5LVk1fTEFSQ0hfU1dDU1JfTEFURVNUO1xcbitcXHRcXHR2Y3B1X3B1dCh2Y3B1KTtcXG4rXFx0XFx0cHJlZW1wdF9lbmFibGUoKTtcXG4rXFx0fVxcbitcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGNzcnMubmNzcnM7IGkrKykge1xcbitcXHRcXHR1bnNpZ25lZCBpbnQgaWQgPSBlbnRyaWVzW2ldLmluZGV4O1xcbitcXG4rXFx0XFx0aWYgKGVudHJpZXNbaV0ucmVzZXJ2ZWQgfHwgaWQgXFx1MDAzZT0gQ1NSX01BWF9OVU1TIHx8XFxuK1xcdFxcdCAgICAoZ2V0X2djc3JfZmxhZyhpZCkgXFx1MDAyNiBJTlZBTElEX0dDU1IpKSB7XFxuK1xcdFxcdFxcdHJldCA9IC1FSU5WQUw7XFxuK1xcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHR9XFxuK1xcbitcXHRcXHRpZiAod3JpdGUpIHtcXG4rXFx0XFx0XFx0cmV0ID0gX2t2bV9zZXRjc3IodmNwdSwgaWQsIGVudHJpZXNbaV0uZGF0YSk7XFxuK1xcdFxcdFxcdGlmIChyZXQpXFxuK1xcdFxcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHR9IGVsc2UgaWYgKGlkID09IExPT05HQVJDSF9DU1JfRVNUQVQpIHtcXG4rXFx0XFx0XFx0dW5zaWduZWQgbG9uZyBlc3RhdCwgZ2ludGM7XFxuK1xcbitcXHRcXHRcXHQvKiBFU1RBVCBJUDB+SVA3IGNvbWUgZnJvbSBHSU5UQyAqL1xcbitcXHRcXHRcXHRnaW50YyA9IGt2bV9yZWFkX3N3X2djc3IoY3NyLCBMT09OR0FSQ0hfQ1NSX0dJTlRDKSBcXHUwMDI2IEtWTV9HSU5UQ19JUlFfTUFTSztcXG4rXFx0XFx0XFx0ZXN0YXQgPSBrdm1fcmVhZF9zd19nY3NyKGNzciwgTE9PTkdBUkNIX0NTUl9FU1RBVCkgXFx1MDAyNiB+S1ZNX0VTVEFUX0VYVElfTUFTSztcXG4rXFx0XFx0XFx0ZW50cmllc1tpXS5kYXRhID0gZXN0YXQgfCAoZ2ludGMgXFx1MDAzY1xcdTAwM2MgVklQX0RFTFRBKTtcXG4rXFx0XFx0fSBlbHNlIHtcXG4rXFx0XFx0XFx0ZW50cmllc1tpXS5kYXRhID0ga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIGlkKTtcXG4rXFx0XFx0fVxcbitcXHR9XFxuK1xcbitcXHRpZiAoIXdyaXRlIFxcdTAwMjZcXHUwMDI2IGNvcHlfdG9fdXNlcih1Y3Nycy1cXHUwMDNlZW50cmllcywgZW50cmllcywgc2l6ZSkpXFxuK1xcdFxcdHJldCA9IC1FRkFVTFQ7XFxuK1xcbitcXHRrZnJlZShlbnRyaWVzKTtcXG4rXFx0cmV0dXJuIHJldDtcXG4rfVxcbitcXG4gaW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3JlZ3MgKnJlZ3MpXFxuIHtcXG4gXFx0aW50IGk7XFxuQEAgLTEyNjYsNiArMTMzNywxMiBAQCBsb25nIGt2bV9hcmNoX3ZjcHVfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsXFxuIFxcdFxcdFxcdHIgPSBrdm1fZ2V0X3JlZyh2Y3B1LCBcXHUwMDI2cmVnKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdH1cXG4rXFx0Y2FzZSBLVk1fTE9PTkdBUkNIX0dFVF9DU1I6XFxuK1xcdFxcdHIgPSBrdm1fbG9vbmdhcmNoX2Nzcl9pbyh2Y3B1LCBhcmdwLCBmYWxzZSk7XFxuK1xcdFxcdGJyZWFrO1xcbitcXHRjYXNlIEtWTV9MT09OR0FSQ0hfU0VUX0NTUjpcXG4rXFx0XFx0ciA9IGt2bV9sb29uZ2FyY2hfY3NyX2lvKHZjcHUsIGFyZ3AsIHRydWUpO1xcbitcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBLVk1fRU5BQkxFX0NBUDoge1xcbiBcXHRcXHRzdHJ1Y3Qga3ZtX2VuYWJsZV9jYXAgY2FwO1xcbiBcXG5kaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gva3ZtL3ZtLmMgYi9hcmNoL2xvb25nYXJjaC9rdm0vdm0uY1xcbmluZGV4IDEzMTdjNzE4Zjg5NmFmLi43ODVmMmZhMGQxNjQyZCAxMDA2NDRcXG4tLS0gYS9hcmNoL2xvb25nYXJjaC9rdm0vdm0uY1xcbisrKyBiL2FyY2gvbG9vbmdhcmNoL2t2bS92bS5jXFxuQEAgLTEyMiw2ICsxMjIsNyBAQCBpbnQga3ZtX3ZtX2lvY3RsX2NoZWNrX2V4dGVuc2lvbihzdHJ1Y3Qga3ZtICprdm0sIGxvbmcgZXh0KVxcbiBcXHRjYXNlIEtWTV9DQVBfSU9FVkVOVEZEOlxcbiBcXHRjYXNlIEtWTV9DQVBfTVBfU1RBVEU6XFxuIFxcdGNhc2UgS1ZNX0NBUF9TRVRfR1VFU1RfREVCVUc6XFxuK1xcdGNhc2UgS1ZNX0NBUF9MT09OR0FSQ0hfQ1NSOlxcbiBcXHRcXHRyID0gMTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgS1ZNX0NBUF9OUl9WQ1BVUzpcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L2t2bS5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L2t2bS5oXFxuaW5kZXggNDE5MDExMDk3ZmE4ZTIuLjQ1ZDllYjA2Y2I4YWM1IDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9rdm0uaFxcbisrKyBiL2luY2x1ZGUvdWFwaS9saW51eC9rdm0uaFxcbkBAIC05OTcsNiArOTk3LDcgQEAgc3RydWN0IGt2bV9lbmFibGVfY2FwIHtcXG4gI2RlZmluZSBLVk1fQ0FQX1MzOTBfS0VZT1AgMjQ3XFxuICNkZWZpbmUgS1ZNX0NBUF9TMzkwX1ZTSUVfRVNBTU9ERSAyNDhcXG4gI2RlZmluZSBLVk1fQ0FQX1MzOTBfSFBBR0VfMkcgMjQ5XFxuKyNkZWZpbmUgS1ZNX0NBUF9MT09OR0FSQ0hfQ1NSXFx0MjUwXFxuIFxcbiBzdHJ1Y3Qga3ZtX2lycV9yb3V0aW5nX2lycWNoaXAge1xcbiBcXHRfX3UzMiBpcnFjaGlwO1xcbkBAIC0xNjcwLDQgKzE2NzEsOCBAQCBzdHJ1Y3Qga3ZtX3ByZV9mYXVsdF9tZW1vcnkge1xcbiBcXHRfX3U2NCBwYWRkaW5nWzVdO1xcbiB9O1xcbiBcXG4rLyogTG9vbmdBcmNoOiBidWxrIENTUiBnZXQvc2V0IGZvciBtaWdyYXRpb24gKi9cXG4rI2RlZmluZSBLVk1fTE9PTkdBUkNIX0dFVF9DU1JcXHRfSU9XUihLVk1JTywgMHhkNiwgc3RydWN0IGt2bV9sb29uZ2FyY2hfY3NycylcXG4rI2RlZmluZSBLVk1fTE9PTkdBUkNIX1NFVF9DU1JcXHRfSU9XKEtWTUlPLCAgMHhkNywgc3RydWN0IGt2bV9sb29uZ2FyY2hfY3NycylcXG4rXFxuICNlbmRpZiAvKiBfX0xJTlVYX0tWTV9IICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDE1OjU2OjUwLjkyNjk1MDMwN1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjQzMjU5NDI2NDIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiLFxuICAgIFwiVklSVFVBTElaQVRJT05cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrdm1fbG9vbmdhcmNoX2Nzcl9pb1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhpcyBwYXRjaCBhZGRzIGJ1bGsgQ1NSIGdldC9zZXQgZnVuY3Rpb25hbGl0eSBmb3IgTG9vbmdBcmNoIEtWTSB2aWEgbmV3IGlvY3RscyAoS1ZNX0xPT05HQVJDSF9HRVRfQ1NSIGFuZCBLVk1fTE9PTkdBUkNIX1NFVF9DU1IpLiBUaGVzZSBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBtZW1vcnkgc2FmZXR5IGFuZCBjb3JyZWN0IGJvdW5kcyBjaGVja2luZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBlNzA5OWUwZjQ2MmZhZWRjMmIxNWE3OTM4MDkxZDhkMDE0Njk4MmZhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMjMgMTU6NTY6NDkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oIGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxuaW5kZXggMjNjZmJlY2ViYmQ3OWEuLmFhY2Y1ZDg0MjE3ZjI4IDEwMDY0NFxuLS0tIGEvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxuKysrIGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxuQEAgLTM2Miw3ICszNjIsNyBAQCBleHRlcm4gc3RydWN0IGt2bV93b3JsZF9zd2l0Y2ggKmt2bV9sb29uZ2FyY2hfb3BzO1xuICNkZWZpbmUgSFdfR0NTUlx0XHQoMSBcdTAwM2NcdTAwM2MgMSlcbiAjZGVmaW5lIElOVkFMSURfR0NTUlx0KDEgXHUwMDNjXHUwMDNjIDIpXG4gXG4taW50IGdldF9nY3NyX2ZsYWcoaW50IGNzcik7XG4raW50IGdldF9nY3NyX2ZsYWcodW5zaWduZWQgaW50IGNzcik7XG4gdm9pZCBzZXRfaHdfZ2NzcihpbnQgY3NyX2lkLCB1bnNpZ25lZCBsb25nIHZhbCk7XG4gXG4gI2VuZGlmIC8qIF9fQVNNX0xPT05HQVJDSF9LVk1fSE9TVF9IX18gKi9cbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oIGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS91YXBpL2FzbS9rdm0uaFxuaW5kZXggY2QwYjVjMTFjYTljMmIuLjU5YjNiN2VmYTAzOTdlIDEwMDY0NFxuLS0tIGEvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS91YXBpL2FzbS9rdm0uaFxuKysrIGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS91YXBpL2FzbS9rdm0uaFxuQEAgLTEyNyw2ICsxMjcsMTkgQEAgc3RydWN0IGt2bV9zeW5jX3JlZ3Mge1xuIHN0cnVjdCBrdm1fc3JlZ3Mge1xuIH07XG4gXG4rLyogYnVsayBDU1IgZW50cmllcyBmb3IgVk0gbWlncmF0aW9uICovXG4rc3RydWN0IGt2bV9sb29uZ2FyY2hfY3NyX2VudHJ5IHtcbitcdF9fdTMyIGluZGV4O1xuK1x0X191MzIgcmVzZXJ2ZWQ7XG4rXHRfX3U2NCBkYXRhO1xuK307XG4rXG4rc3RydWN0IGt2bV9sb29uZ2FyY2hfY3NycyB7XG4rXHRfX3UzMiBuY3NycztcdC8qIG51bWJlciBvZiBjc3IgZW50cmllcyAqL1xuK1x0X191MzIgcGFkO1xuK1x0X19ERUNMQVJFX0ZMRVhfQVJSQVkoc3RydWN0IGt2bV9sb29uZ2FyY2hfY3NyX2VudHJ5LCBlbnRyaWVzKTtcbit9O1xuK1xuIHN0cnVjdCBrdm1faW9jc3JfZW50cnkge1xuIFx0X191MzIgYWRkcjtcbiBcdF9fdTMyIHBhZDtcbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9rdm0vbWFpbi5jIGIvYXJjaC9sb29uZ2FyY2gva3ZtL21haW4uY1xuaW5kZXggM2UxMDA1NTI2ZjRiZDYuLmQ4MDJkMzkzY2Q0NGQ4IDEwMDY0NFxuLS0tIGEvYXJjaC9sb29uZ2FyY2gva3ZtL21haW4uY1xuKysrIGIvYXJjaC9sb29uZ2FyY2gva3ZtL21haW4uY1xuQEAgLTE5LDcgKzE5LDcgQEAgc3RydWN0IGt2bV93b3JsZF9zd2l0Y2ggKmt2bV9sb29uZ2FyY2hfb3BzO1xuIHN0YXRpYyBpbnQgZ2Nzcl9mbGFnW0NTUl9NQVhfTlVNU107XG4gc3RhdGljIHN0cnVjdCBrdm1fY29udGV4dCBfX3BlcmNwdSAqdm1jcztcbiBcbi1pbnQgZ2V0X2djc3JfZmxhZyhpbnQgY3NyKVxuK2ludCBnZXRfZ2Nzcl9mbGFnKHVuc2lnbmVkIGludCBjc3IpXG4ge1xuIFx0aWYgKGNzciBcdTAwM2MgQ1NSX01BWF9OVU1TKVxuIFx0XHRyZXR1cm4gZ2Nzcl9mbGFnW2Nzcl07XG5AQCAtMjcsMTMgKzI3LDEzIEBAIGludCBnZXRfZ2Nzcl9mbGFnKGludCBjc3IpXG4gXHRyZXR1cm4gSU5WQUxJRF9HQ1NSO1xuIH1cbiBcbi1zdGF0aWMgaW5saW5lIHZvaWQgc2V0X2djc3Jfc3dfZmxhZyhpbnQgY3NyKVxuK3N0YXRpYyBpbmxpbmUgdm9pZCBzZXRfZ2Nzcl9zd19mbGFnKHVuc2lnbmVkIGludCBjc3IpXG4ge1xuIFx0aWYgKGNzciBcdTAwM2MgQ1NSX01BWF9OVU1TKVxuIFx0XHRnY3NyX2ZsYWdbY3NyXSB8PSBTV19HQ1NSO1xuIH1cbiBcbi1zdGF0aWMgaW5saW5lIHZvaWQgc2V0X2djc3JfaHdfZmxhZyhpbnQgY3NyKVxuK3N0YXRpYyBpbmxpbmUgdm9pZCBzZXRfZ2Nzcl9od19mbGFnKHVuc2lnbmVkIGludCBjc3IpXG4ge1xuIFx0aWYgKGNzciBcdTAwM2MgQ1NSX01BWF9OVU1TKVxuIFx0XHRnY3NyX2ZsYWdbY3NyXSB8PSBIV19HQ1NSO1xuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMgYi9hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jXG5pbmRleCAyMGMyMDdkODBlMzFhZS4uMmJiNmE3ZTBlYTg3NzYgMTAwNjQ0XG4tLS0gYS9hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jXG4rKysgYi9hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jXG5AQCAtMTAwOSw2ICsxMDA5LDc3IEBAIGludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzXG4gXHRyZXR1cm4gLUVOT0lPQ1RMQ01EO1xuIH1cbiBcbisvKiBtYXggQ1NSIGVudHJpZXMgaGFuZGxlZCBwZXIgaW9jdGwgKi9cbisjZGVmaW5lIEtWTV9MT09OR0FSQ0hfTUFYX0NTUl9SRUdTXHQweDQwMFxuK1xuKy8qIEJ1bGsgZ2V0L3NldCBvZiBDU1Igc3RhdGUgZm9yIFZNIG1pZ3JhdGlvbi4gKi9cbitzdGF0aWMgaW50IGt2bV9sb29uZ2FyY2hfY3NyX2lvKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbitcdFx0XHRcdHN0cnVjdCBrdm1fbG9vbmdhcmNoX2NzcnMgX191c2VyICp1Y3NycyxcbitcdFx0XHRcdGJvb2wgd3JpdGUpXG4re1xuK1x0aW50IGksIHJldCA9IDA7XG4rXHR1bnNpZ25lZCBsb25nIHNpemU7XG4rXHRzdHJ1Y3Qga3ZtX2xvb25nYXJjaF9jc3JzIGNzcnM7XG4rXHRzdHJ1Y3Qga3ZtX2xvb25nYXJjaF9jc3JfZW50cnkgKmVudHJpZXM7XG4rXHRzdHJ1Y3QgbG9vbmdhcmNoX2NzcnMgKmNzciA9IHZjcHUtXHUwMDNlYXJjaC5jc3I7XG4rXG4rXHRpZiAoY29weV9mcm9tX3VzZXIoXHUwMDI2Y3NycywgdWNzcnMsIHNpemVvZihjc3JzKSkpXG4rXHRcdHJldHVybiAtRUZBVUxUO1xuK1xuK1x0aWYgKGNzcnMucGFkKVxuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcbitcdGlmIChjc3JzLm5jc3JzIFx1MDAzZSBLVk1fTE9PTkdBUkNIX01BWF9DU1JfUkVHUylcbitcdFx0cmV0dXJuIC1FMkJJRztcbitcbitcdHNpemUgPSBhcnJheV9zaXplKGNzcnMubmNzcnMsIHNpemVvZigqZW50cmllcykpO1xuK1x0ZW50cmllcyA9IG1lbWR1cF91c2VyKHVjc3JzLVx1MDAzZWVudHJpZXMsIHNpemUpO1xuK1x0aWYgKElTX0VSUihlbnRyaWVzKSlcbitcdFx0cmV0dXJuIFBUUl9FUlIoZW50cmllcyk7XG4rXG4rXHRpZiAod3JpdGUpIHtcbitcdFx0dmNwdS1cdTAwM2VhcmNoLmF1eF9pbnVzZSBcdTAwMjY9IH5LVk1fTEFSQ0hfSFdDU1JfVVNBQkxFO1xuK1x0fSBlbHNlIHtcbitcdFx0cHJlZW1wdF9kaXNhYmxlKCk7XG4rXHRcdHZjcHVfbG9hZCh2Y3B1KTtcbitcdFx0a3ZtX2RlbGl2ZXJfaW50cih2Y3B1KTtcbitcdFx0dmNwdS1cdTAwM2VhcmNoLmF1eF9pbnVzZSBcdTAwMjY9IH5LVk1fTEFSQ0hfU1dDU1JfTEFURVNUO1xuK1x0XHR2Y3B1X3B1dCh2Y3B1KTtcbitcdFx0cHJlZW1wdF9lbmFibGUoKTtcbitcdH1cbitcbitcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGNzcnMubmNzcnM7IGkrKykge1xuK1x0XHR1bnNpZ25lZCBpbnQgaWQgPSBlbnRyaWVzW2ldLmluZGV4O1xuK1xuK1x0XHRpZiAoZW50cmllc1tpXS5yZXNlcnZlZCB8fCBpZCBcdTAwM2U9IENTUl9NQVhfTlVNUyB8fFxuK1x0XHQgICAgKGdldF9nY3NyX2ZsYWcoaWQpIFx1MDAyNiBJTlZBTElEX0dDU1IpKSB7XG4rXHRcdFx0cmV0ID0gLUVJTlZBTDtcbitcdFx0XHRicmVhaztcbitcdFx0fVxuK1xuK1x0XHRpZiAod3JpdGUpIHtcbitcdFx0XHRyZXQgPSBfa3ZtX3NldGNzcih2Y3B1LCBpZCwgZW50cmllc1tpXS5kYXRhKTtcbitcdFx0XHRpZiAocmV0KVxuK1x0XHRcdFx0YnJlYWs7XG4rXHRcdH0gZWxzZSBpZiAoaWQgPT0gTE9PTkdBUkNIX0NTUl9FU1RBVCkge1xuK1x0XHRcdHVuc2lnbmVkIGxvbmcgZXN0YXQsIGdpbnRjO1xuK1xuK1x0XHRcdC8qIEVTVEFUIElQMH5JUDcgY29tZSBmcm9tIEdJTlRDICovXG4rXHRcdFx0Z2ludGMgPSBrdm1fcmVhZF9zd19nY3NyKGNzciwgTE9PTkdBUkNIX0NTUl9HSU5UQykgXHUwMDI2IEtWTV9HSU5UQ19JUlFfTUFTSztcbitcdFx0XHRlc3RhdCA9IGt2bV9yZWFkX3N3X2djc3IoY3NyLCBMT09OR0FSQ0hfQ1NSX0VTVEFUKSBcdTAwMjYgfktWTV9FU1RBVF9FWFRJX01BU0s7XG4rXHRcdFx0ZW50cmllc1tpXS5kYXRhID0gZXN0YXQgfCAoZ2ludGMgXHUwMDNjXHUwMDNjIFZJUF9ERUxUQSk7XG4rXHRcdH0gZWxzZSB7XG4rXHRcdFx0ZW50cmllc1tpXS5kYXRhID0ga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIGlkKTtcbitcdFx0fVxuK1x0fVxuK1xuK1x0aWYgKCF3cml0ZSBcdTAwMjZcdTAwMjYgY29weV90b191c2VyKHVjc3JzLVx1MDAzZWVudHJpZXMsIGVudHJpZXMsIHNpemUpKVxuK1x0XHRyZXQgPSAtRUZBVUxUO1xuK1xuK1x0a2ZyZWUoZW50cmllcyk7XG4rXHRyZXR1cm4gcmV0O1xuK31cbitcbiBpbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcmVncyAqcmVncylcbiB7XG4gXHRpbnQgaTtcbkBAIC0xMjY2LDYgKzEzMzcsMTIgQEAgbG9uZyBrdm1fYXJjaF92Y3B1X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLFxuIFx0XHRcdHIgPSBrdm1fZ2V0X3JlZyh2Y3B1LCBcdTAwMjZyZWcpO1xuIFx0XHRicmVhaztcbiBcdH1cbitcdGNhc2UgS1ZNX0xPT05HQVJDSF9HRVRfQ1NSOlxuK1x0XHRyID0ga3ZtX2xvb25nYXJjaF9jc3JfaW8odmNwdSwgYXJncCwgZmFsc2UpO1xuK1x0XHRicmVhaztcbitcdGNhc2UgS1ZNX0xPT05HQVJDSF9TRVRfQ1NSOlxuK1x0XHRyID0ga3ZtX2xvb25nYXJjaF9jc3JfaW8odmNwdSwgYXJncCwgdHJ1ZSk7XG4rXHRcdGJyZWFrO1xuIFx0Y2FzZSBLVk1fRU5BQkxFX0NBUDoge1xuIFx0XHRzdHJ1Y3Qga3ZtX2VuYWJsZV9jYXAgY2FwO1xuIFxuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2t2bS92bS5jIGIvYXJjaC9sb29uZ2FyY2gva3ZtL3ZtLmNcbmluZGV4IDEzMTdjNzE4Zjg5NmFmLi43ODVmMmZhMGQxNjQyZCAxMDA2NDRcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL2t2bS92bS5jXG4rKysgYi9hcmNoL2xvb25nYXJjaC9rdm0vdm0uY1xuQEAgLTEyMiw2ICsxMjIsNyBAQCBpbnQga3ZtX3ZtX2lvY3RsX2NoZWNrX2V4dGVuc2lvbihzdHJ1Y3Qga3ZtICprdm0sIGxvbmcgZXh0KVxuIFx0Y2FzZSBLVk1fQ0FQX0lPRVZFTlRGRDpcbiBcdGNhc2UgS1ZNX0NBUF9NUF9TVEFURTpcbiBcdGNhc2UgS1ZNX0NBUF9TRVRfR1VFU1RfREVCVUc6XG4rXHRjYXNlIEtWTV9DQVBfTE9PTkdBUkNIX0NTUjpcbiBcdFx0ciA9IDE7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBLVk1fQ0FQX05SX1ZDUFVTOlxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC9rdm0uaCBiL2luY2x1ZGUvdWFwaS9saW51eC9rdm0uaFxuaW5kZXggNDE5MDExMDk3ZmE4ZTIuLjQ1ZDllYjA2Y2I4YWM1IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L2t2bS5oXG4rKysgYi9pbmNsdWRlL3VhcGkvbGludXgva3ZtLmhcbkBAIC05OTcsNiArOTk3LDcgQEAgc3RydWN0IGt2bV9lbmFibGVfY2FwIHtcbiAjZGVmaW5lIEtWTV9DQVBfUzM5MF9LRVlPUCAyNDdcbiAjZGVmaW5lIEtWTV9DQVBfUzM5MF9WU0lFX0VTQU1PREUgMjQ4XG4gI2RlZmluZSBLVk1fQ0FQX1MzOTBfSFBBR0VfMkcgMjQ5XG4rI2RlZmluZSBLVk1fQ0FQX0xPT05HQVJDSF9DU1JcdDI1MFxuIFxuIHN0cnVjdCBrdm1faXJxX3JvdXRpbmdfaXJxY2hpcCB7XG4gXHRfX3UzMiBpcnFjaGlwO1xuQEAgLTE2NzAsNCArMTY3MSw4IEBAIHN0cnVjdCBrdm1fcHJlX2ZhdWx0X21lbW9yeSB7XG4gXHRfX3U2NCBwYWRkaW5nWzVdO1xuIH07XG4gXG4rLyogTG9vbmdBcmNoOiBidWxrIENTUiBnZXQvc2V0IGZvciBtaWdyYXRpb24gKi9cbisjZGVmaW5lIEtWTV9MT09OR0FSQ0hfR0VUX0NTUlx0X0lPV1IoS1ZNSU8sIDB4ZDYsIHN0cnVjdCBrdm1fbG9vbmdhcmNoX2NzcnMpXG4rI2RlZmluZSBLVk1fTE9PTkdBUkNIX1NFVF9DU1JcdF9JT1coS1ZNSU8sICAweGQ3LCBzdHJ1Y3Qga3ZtX2xvb25nYXJjaF9jc3JzKVxuK1xuICNlbmRpZiAvKiBfX0xJTlVYX0tWTV9IICovXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QxNTo1Njo1MC45MjY5NTE1NTdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNTEwNDUzMDU4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipMb29uZ0FyY2ggS1ZNIEJ1bGsgQ1NSIEFjY2VzczogSW5pdGlhbCBBc3Nlc3NtZW50KipcblxuT2theSwgc28gdGhlcmUncyBhIHBhdGNoIGZsb2F0aW5nIGFyb3VuZCwgYW5kIGl0J3MgYWRkaW5nIHNvbWUgbXVjaC1uZWVkZWQgYnVsayBnZXQvc2V0IGZ1bmN0aW9uYWxpdHkgZm9yIENvbnRyb2wgYW5kIFN0YXR1cyBSZWdpc3RlcnMgKENTUnMpIHdpdGhpbiBMb29uZ0FyY2ggS1ZNLiBNeSBpbml0aWFsIHNjYW4gdGVsbHMgbWUgaXQncyB0b3VjaGluZyBgYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuY2AgdG8gYWRkIGBrdm1fbG9vbmdhcmNoX2Nzcl9pb2AsIHdoaWNoIGlzIHRoZSBtZWF0IG9mIHRoZSBpb2N0bCBoYW5kbGluZyBmb3IgYEtWTV9MT09OR0FSQ0hfR0VUX0NTUmAgYW5kIGBLVk1fTE9PTkdBUkNIX1NFVF9DU1JgLiBUaGF04oCZcyB0aGUgY29yZSBvZiB0aGUgbmV3IGZ1bmN0aW9uYWxpdHkgcmlnaHQgdGhlcmUuXG5cbkl0IGFsc28gbWVhbnMgY2hhbmdlcyBpbiBgYXJjaC9sb29uZ2FyY2gva3ZtL3ZtLmNgIHRvIHJlcG9ydCB0aGUgZmVhdHVyZSB3aXRoIHRoZSBgS1ZNX0NBUF9MT09OR0FSQ0hfQ1NSYCBjYXBhYmlsaXR5IOKAkyBtYWtlcyBzZW5zZSwgZ290dGEgYWR2ZXJ0aXNlIHRoZSBuZXcgY2FwYWJpbGl0eS4gQW5kLCBhaCwgYSBwYXJhbWV0ZXIgdHlwZSBjaGFuZ2UgaW4gYGFyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmNgLCBzaGlmdGluZyBgZ2V0X2djc3JfZmxhZ2AgZnJvbSBgaW50YCB0byBgdW5zaWduZWQgaW50YC4gUHJvYmFibHkganVzdCBhIHR5cGUgc2FmZXR5IHRoaW5nIHJlbGF0ZWQgdG8gaG93IHRoZSBmbGFncyBhcmUgdXNlZCBub3cuXG5cbkZ1bmN0aW9uYWxseSwgdGhpcyBpcyBhIGRlZmluaXRlIGVuaGFuY2VtZW50IHRvIHRoZSBLVk0gaW1wbGVtZW50YXRpb24gb24gTG9vbmdBcmNoLiBJdCBzY3JlYW1zIGZvciBmdXp6aW5nIHRvIGVuc3VyZSByb2J1c3RuZXNzIGFuZCB0aGF0IHRoZXJlIGFyZSBubyBoaWRkZW4gaXNzdWVzLiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIGltcGxpY2F0aW9ucyBvZiB0aGlzLiBMZXQgbWUgdHJhY2sgZG93biB0aGUgcmVsZXZhbnQgS2NvbmZpZyBvcHRpb25zLiBUaGUgY29kZSdzIGluIGBhcmNoL2xvb25nYXJjaC9rdm0vYCwgc28gSSdsbCBzdGFydCBieSBjaGVja2luZyBgYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWdgIGFuZCB0aGVuIG1heWJlIGBhcmNoL2xvb25nYXJjaC9LY29uZmlnYCBpZiBJIGRvbid0IGZpbmQgaXQgdGhlcmUuIEkgbmVlZCB0byBrbm93IGhvdyB0aGlzIG5ldyBmZWF0dXJlIGlzIGVuYWJsZWQgYW5kIGRpc2FibGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDQ3LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjI4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMTU6NTc6MDYuMDMxNDg0MDc4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY3Mzg0MTY4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBLVk1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9sb29uZ2FyY2gvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXFxuYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWctMTktXFxuYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnLTIxLVxcdHRyaXN0YXRlIFxcXCJLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDE1OjU3OjA2LjA5ODg3MjYzNloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYxMzU5NzIwMTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBicmVha2Rvd24gb2Ygd2hhdCBJJ20gbG9va2luZyBhdDpcblxuKipLVk0gTG9vbmdBcmNoIENvbmZpZ3VyYXRpb24gQXNzZXNzbWVudCoqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGl0LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGUgcHJpbWFyeSBjb25maWd1cmF0aW9uIG9wdGlvbiB3ZSdyZSBkZWFsaW5nIHdpdGggaGVyZSBpcyBwcm9iYWJseSBgQ09ORklHX0tWTWAuIFRoYXQncyB0aGUgYmlnIG9uZSwgdGhlIGJhc2UgS1ZNIHN1cHBvcnQuIE9mIGNvdXJzZSwgZ2l2ZW4gdGhlIHZpcnR1YWxpemF0aW9uIGFzcGVjdCwgSSBzaG91bGQgYWxzbyBkb3VibGUtY2hlY2sgYW5kIGNvbnNpZGVyIHRoYXQgYENPTkZJR19WSVJUVUFMSVpBVElPTmAgbWlnaHQgYmUgYSBuZWNlc3NhcnkgcHJlcmVxdWlzaXRlIG9yIGNvbXBhbmlvbiB0byBgQ09ORklHX0tWTWAuIE5lZWQgdG8ga2VlcCB0aGF0IGluIG1pbmQuXG5cbk5vdywgbGV0J3MgcGlucG9pbnQgdGhlIGZ1bmN0aW9ucyB0aGF0IGFyZSBnb2luZyB0byBiZSBtb3N0IHJlbGV2YW50IGhlcmUsIHRoZSBvbmVzIHRoYXQgbmVlZCB0aGUgY2xvc2VzdCBzY3J1dGlueS4gSXQgbG9va3MgbGlrZSBga3ZtX2xvb25nYXJjaF9jc3JfaW9gIGlzIGEga2V5IGZ1bmN0aW9uIHRvIGZvY3VzIG9uLiBMb29rcyBwcmV0dHkgTG9vbmdBcmNoLXNwZWNpZmljLCBzbyBsaWtlbHkgdGhlIGNvbnRyb2wgYW5kIHN0YXR1cyByZWdpc3RlciBpbnRlcmFjdGlvbiBmdW5jdGlvbi4gYGt2bV9hcmNoX3ZjcHVfaW9jdGxgIGlzIGluIHBsYXkgdG9vLCBidXQgdGhhdCdzIGEgbW9yZSBnZW5lcmljIGlvY3RsIGhhbmRsZXIsIHNvIHRoZSByZWFsIGhlYXZ5IGxpZnRpbmcgbWlnaHQgYmUgZG9uZSBpbiBga3ZtX2xvb25nYXJjaF9jc3JfaW9gIGFueXdheS4gSSBzaG91bGQgcHJvYmFibHkgZ2l2ZSBib3RoIGEgY2xvc2UgbG9vaywgYnV0IGBrdm1fbG9vbmdhcmNoX2Nzcl9pb2Agc2VlbXMgbGlrZSB0aGUgcHJpbWFyeSB0YXJnZXQuXG5cbkkgbmVlZCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBzdXBwb3J0aW5nIGZ1bmN0aW9ucy4gSXQgc2VlbXMgdGhhdCBgZ2V0X2djc3JfZmxhZ2AgaXMgYWxzbyBhIG1vZGlmaWVkIGZ1bmN0aW9uLCBidXQgaXQgbG9va3MgbGlrZSBhIHNtYWxsIGhlbHBlciBmdW5jdGlvbiwgc28gSSdsbCBrZWVwIGFuIGV5ZSBvbiBpdCBidXQgd29uJ3QgZm9jdXMgb24gaXQgaW5pdGlhbGx5LlxuXG5UbyBkaWcgaW4sIEknbGwgbmVlZCB0byBoZWFkIG92ZXIgdG8gYGFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmNgIHRvIHNlZSBob3cgYGt2bV9sb29uZ2FyY2hfY3NyX2lvYCBpcyBhY3R1YWxseSBpbXBsZW1lbnRlZCBhbmQgaG93IGl0IGZpdHMgaW50byB0aGUgYnJvYWRlciBLVk0gTG9vbmdBcmNoIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUxNzgsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMTU6NTc6MTIuMjM0ODQ2OTQ5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4Nzg2NDEzNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fbG9vbmdhcmNoX2Nzcl9pb1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM9MTAwNz1pbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTAxNS0vKiBCdWxrIGdldC9zZXQgb2YgQ1NSIHN0YXRlIGZvciBWTSBtaWdyYXRpb24uICovXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzoxMDE2OnN0YXRpYyBpbnQga3ZtX2xvb25nYXJjaF9jc3JfaW8oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTAxNy1cXHRcXHRcXHRcXHRzdHJ1Y3Qga3ZtX2xvb25nYXJjaF9jc3JzIF9fdXNlciAqdWNzcnMsXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jPTEzMDU9bG9uZyBrdm1fYXJjaF92Y3B1X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLFxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMzQwLVxcdGNhc2UgS1ZNX0xPT05HQVJDSF9HRVRfQ1NSOlxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6MTM0MTpcXHRcXHRyID0ga3ZtX2xvb25nYXJjaF9jc3JfaW8odmNwdSwgYXJncCwgZmFsc2UpO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTM0Mi1cXHRcXHRicmVhaztcXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEzNDMtXFx0Y2FzZSBLVk1fTE9PTkdBUkNIX1NFVF9DU1I6XFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzoxMzQ0OlxcdFxcdHIgPSBrdm1fbG9vbmdhcmNoX2Nzcl9pbyh2Y3B1LCBhcmdwLCB0cnVlKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEzNDUtXFx0XFx0YnJlYWs7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDE1OjU3OjEyLjQyMjcxNTgwNVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEzMDQxMDE1NjkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIExvb25nQXJjaCBDU1IgSS9PIEhhbmRsaW5nKipcblxuQWxyaWdodCwgc28gdGhlIGNvcmUgb2YgdGhpcyBuZXcgZnVuY3Rpb25hbGl0eSBzZWVtcyB0byBiZSB0aGUgYGt2bV9sb29uZ2FyY2hfY3NyX2lvYCBmdW5jdGlvbi4gVGhhdCdzIHRoZSBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcsIG5vIHF1ZXN0aW9uLiBHaXZlbiB0aGF0IGl0J3MgTG9vbmdBcmNoLXNwZWNpZmljLCB0aGUgdGVzdGluZyB3aWxsIG5hdHVyYWxseSBiZSBjb25zdHJhaW5lZCB0byBMb29uZ0FyY2ggcGxhdGZvcm1zIG9yIGNyb3NzLWNvbXBpbGVkIGVudmlyb25tZW50cy4gTm8gYmlnIGRlYWwsIHdlIGNhbiBlYXNpbHkgcHJvdmlkZSB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zIGFuZCBzeW1ib2xzIHRvIG1ha2Ugc3VyZSB0aGUgZnV6emluZyBoYXJuZXNzZXMgZnVuY3Rpb24gY29ycmVjdGx5LlxuXG5TcGVjaWZpY2FsbHksIHdlJ2xsIG5lZWQgdGhlIGBLVk1gIGNvbmZpZ3VyYXRpb24gdG8gYmUgZW5hYmxlZC4gSSdsbCBuZWVkIHRvIGZvY3VzIHRoZSBmdXp6aW5nIG9uIHRoZSBga3ZtX2xvb25nYXJjaF9jc3JfaW9gIHN5bWJvbC5cblxuQmVmb3JlIHdlIGNvbW1pdCB0byB0aGF0LCBJJ2xsIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgdGhlcmUgYXJlbid0IGFueSBvdGhlciByZWxhdGVkIGNvbmZpZ3VyYXRpb25zIHRoYXQgd2UgbWlnaHQgaGF2ZSBtaXNzZWQsIG9yIGFueSBoaWRkZW4gZGVwZW5kZW5jaWVzLiBJdCdzIGFsd2F5cyBnb29kIHRvIGJlIHRob3JvdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MTcxLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDE1OjU3OjI1LjQ2MzczMzgwNloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NzAzNDI0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgS1ZNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXFxuYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWctMTktXFxuYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnLTIxLVxcdHRyaXN0YXRlIFxcXCJLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDE1OjU3OjI1LjUzMDc3MTk5NVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyOTA2NDg2OTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQ29uc2lkZXJpbmcgQ29uZmlndXJhdGlvbiBQb3NzaWJpbGl0aWVzKipcblxuQWxyaWdodCwgbGV0J3Mgc2VlLi4uIEknbSBsb29raW5nIGF0IHRoaXMgcGFydGljdWxhciBzaXR1YXRpb24sIGFuZCBteSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gYXNrOiAqKklzIHRoaXMgdGhlICpvbmx5KiBjb25maWd1cmF0aW9uIHdlIG5lZWQgdG8gYWNjb3VudCBmb3I/KiogQXJlIHRoZXJlIGFueSBvdGhlciBwb3RlbnRpYWwgc2V0dXBzLCBlZGdlIGNhc2VzLCBvciB2YXJpYXRpb25zIGluIHRoZSBwYXJhbWV0ZXJzIHRoYXQgY291bGQgdGhyb3cgYSB3cmVuY2ggaW4gdGhlIHdvcmtzPyBJIG5lZWQgdG8gcXVpY2tseSBlc3RhYmxpc2ggaWYgdGhlIHByZXNlbnRlZCBzY2VuYXJpbyBpcyB0cnVseSByZXByZXNlbnRhdGl2ZSBvZiB0aGUgb3ZlcmFsbCBsYW5kc2NhcGUsIG9yIGlmIGl0J3MganVzdCBvbmUgZGF0YSBwb2ludCBpbiBhIHBvdGVudGlhbGx5IG11Y2ggbGFyZ2VyLCBtb3JlIGNvbXBsZXggY29uZmlndXJhdGlvbiBzcGFjZS4gSSdtIGFscmVhZHkgbWVudGFsbHkgcnVubmluZyB0aHJvdWdoIHRoZSBjaGVja2xpc3QuLi4gZGlmZmVyZW50IGhhcmR3YXJlLCBzb2Z0d2FyZSB2ZXJzaW9ucywgbmV0d29yayB0b3BvbG9naWVzLi4uIEkgaGF2ZSB0byBlbnN1cmUgdGhhdCBJJ20gY29uc2lkZXJpbmcgYWxsIHJlbGV2YW50IGZhY3RvcnMgYmVmb3JlIGRyYXdpbmcgYW55IGNvbmNsdXNpb25zLiBUaGUgZGVwdGggb2YgdGhlIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gaXMgYWxzbyBhbiBhcmVhIG9mIGNvbnNpZGVyYXRpb24sIGFzIGl0IGlzIHBvc3NpYmxlIHRoYXQgdGhlcmUgYXJlIG90aGVyIHN1Yi1jb25maWd1cmF0aW9ucyBJIGhhdmUgZmFpbGVkIHRvIHVuZGVyc3RhbmQsIG9yIHRoYXQgaGF2ZW4ndCBiZWVuIHNoYXJlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjU5NywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMTU6NTc6MjguODIxNDIzMzYxWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzOTYxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBLVk0gY29uZmlndXJhdGlvblxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRzb3VyY2UgXFxcInZpcnQva3ZtL0tjb25maWdcXFwiXFxuICAgNzpcXHRcXG4gICA4OlxcdG1lbnVjb25maWcgVklSVFVBTElaQVRJT05cXG4gICA5OlxcdFxcdGJvb2wgXFxcIlZpcnR1YWxpemF0aW9uXFxcIlxcbiAgMTA6XFx0XFx0aGVscFxcbiAgMTE6XFx0XFx0ICBTYXkgWSBoZXJlIHRvIGdldCB0byBzZWUgb3B0aW9ucyBmb3IgdXNpbmcgeW91ciBMaW51eCBob3N0IHRvIHJ1blxcbiAgMTI6XFx0XFx0ICBvdGhlciBvcGVyYXRpbmcgc3lzdGVtcyBpbnNpZGUgdmlydHVhbCBtYWNoaW5lcyAoZ3Vlc3RzKS5cXG4gIDEzOlxcdFxcdCAgVGhpcyBvcHRpb24gYWxvbmUgZG9lcyBub3QgYWRkIGFueSBrZXJuZWwgY29kZS5cXG4gIDE0OlxcdFxcbiAgMTU6XFx0XFx0ICBJZiB5b3Ugc2F5IE4sIGFsbCBvcHRpb25zIGluIHRoaXMgc3VibWVudSB3aWxsIGJlIHNraXBwZWQgYW5kXFxuICAxNjpcXHRcXHQgIGRpc2FibGVkLlxcbiAgMTc6XFx0XFxuICAxODpcXHRpZiBWSVJUVUFMSVpBVElPTlxcbiAgMTk6XFx0XFxuICAyMDpcXHRjb25maWcgS1ZNXFxuICAyMTpcXHRcXHR0cmlzdGF0ZSBcXFwiS2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XFxcIlxcbiAgMjI6XFx0XFx0ZGVwZW5kcyBvbiBBU19IQVNfTFZaX0VYVEVOU0lPTiBcXHUwMDI2XFx1MDAyNiA2NEJJVFxcbiAgMjM6XFx0XFx0c2VsZWN0IEhBVkVfS1ZNX0RJUlRZX1JJTkdfQUNRX1JFTFxcbiAgMjQ6XFx0XFx0c2VsZWN0IEhBVkVfS1ZNX0lSUV9ST1VUSU5HXFxuICAyNTpcXHRcXHRzZWxlY3QgSEFWRV9LVk1fSVJRQ0hJUFxcbiAgMjY6XFx0XFx0c2VsZWN0IEhBVkVfS1ZNX01TSVxcbiAgMjc6XFx0XFx0c2VsZWN0IEhBVkVfS1ZNX1JFQURPTkxZX01FTVxcbiAgMjg6XFx0XFx0c2VsZWN0IEtWTV9DT01NT05cXG4gIDI5OlxcdFxcdHNlbGVjdCBLVk1fR0VORVJJQ19ESVJUWUxPR19SRUFEX1BST1RFQ1RcXG4gIDMwOlxcdFxcdHNlbGVjdCBLVk1fR0VORVJJQ19IQVJEV0FSRV9FTkFCTElOR1xcbiAgMzE6XFx0XFx0c2VsZWN0IEtWTV9NTUlPXFxuICAzMjpcXHRcXHRzZWxlY3QgVklSVF9YRkVSX1RPX0dVRVNUX1dPUktcXG4gIDMzOlxcdFxcdHNlbGVjdCBTQ0hFRF9JTkZPXFxuICAzNDpcXHRcXHRzZWxlY3QgR1VFU1RfUEVSRl9FVkVOVFMgaWYgUEVSRl9FVkVOVFNcXG4gIDM1OlxcdFxcdGhlbHBcXG4gIDM2OlxcdFxcdCAgU3VwcG9ydCBob3N0aW5nIHZpcnR1YWxpemVkIGd1ZXN0IG1hY2hpbmVzIHVzaW5nXFxuICAzNzpcXHRcXHQgIGhhcmR3YXJlIHZpcnR1YWxpemF0aW9uIGV4dGVuc2lvbnMuIFlvdSB3aWxsIG5lZWRcXG4gIDM4OlxcdFxcdCAgYSBwcm9jZXNzb3IgZXF1aXBwZWQgd2l0aCB2aXJ0dWFsaXphdGlvbiBleHRlbnNpb25zLlxcbiAgMzk6XFx0XFxuICA0MDpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuICA0MTpcXHRcXG4gIDQyOlxcdGVuZGlmICMgVklSVFVBTElaQVRJT05cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMTU6NTc6MjguODIxNDkwMTYxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyODk1NjUwMjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgRnV6emluZyBTdHJhdGVneSBmb3IgTG9vbmdBcmNoIEtWTSBDU1IgSU8qKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSdtIGZvY3VzaW5nIG9uIGZ1enppbmcgdGhlIG5ldyBMb29uZ0FyY2ggS1ZNIENTUiBnZXQvc2V0IGZ1bmN0aW9uYWxpdHkuIFRoZSBrZXkgaGVyZSBpcyB0aGUgaW50cm9kdWN0aW9uIG9mIHRoZXNlIG5ldyBgaW9jdGxzYCwgYEtWTV9MT09OR0FSQ0hfR0VUX0NTUmAgYW5kIGBLVk1fTE9PTkdBUkNIX1NFVF9DU1JgLiBUaGV5J3JlIGV4cG9zZWQgdG8gdXNlcnNwYWNlLCB3aGljaCBpbW1lZGlhdGVseSBmbGFncyB0aGVtIGFzIGhpZ2gtcHJpb3JpdHkgdGFyZ2V0cyBmb3IgdnVsbmVyYWJpbGl0eSByZXNlYXJjaC4gR2l2ZW4gdGhhdCwgSSB3aWxsIGNvbmZpZ3VyZSB0aGUgZnV6emVyIHRvIGhvbmUgaW4gb24gdGhlbS5cblxuSSdsbCBzdGFydCBieSBtYWtpbmcgc3VyZSB0aGUgZnV6emluZyBwcm9jZXNzIGlzIGV2ZW4gZW5hYmxlZCBmb3IgdGhpcyBmZWF0dXJlLCBzbyBJIHdpbGwgc2V0IGBXb3J0aEZ1enppbmdgIHRvIGB0cnVlYC4gVGhlbiwgSSBuZWVkIHRvIHRlbGwgdGhlIGZ1enplciBwcmVjaXNlbHkgd2hlcmUgdG8gZGlyZWN0IGl0cyBlZmZvcnRzLiBJJ2xsIHNldCBgRm9jdXNTeW1ib2xzYCB0byBleHBsaWNpdGx5IGluY2x1ZGUgYFwia3ZtX2xvb25nYXJjaF9jc3JfaW9cImAuIFRoYXQgZnVuY3Rpb24sIG9yIG1vcmUgcHJlY2lzZWx5IHRoZSBmdW5jdGlvbnMgaXQgd2lsbCBjYWxsLCBpcyB3aGVyZSB0aGUgYnVsayBvZiB0aGUgZ2V0L3NldCBsb2dpYyByZXNpZGVzLCBhbmQgdGhhdCdzIHdoZXJlIEkgbmVlZCB0aGUgZnV6emluZyBjYW1wYWlnbiB0byBiZSBjb25jZW50cmF0ZWQuXG5cbk9mIGNvdXJzZSwgdG8gZXZlbiB0ZXN0IHRoZSByZWxldmFudCBuZXcgZnVuY3Rpb25hbGl0eSwgSSdsbCBuZWVkIHRvIGVuYWJsZSB0aGUgc3VwcG9ydGluZyBjb25maWd1cmF0aW9ucy4gVGhlIHRhcmdldCBoZXJlIGlzIEtWTSBvbiBMb29uZ0FyY2gsIHNvIEknbGwgc2V0IHRoZSBgRW5hYmxlQ29uZmlnc2AgdG8gaW5jbHVkZSBgXCJLVk1cImAgYW5kIGBcIlZJUlRVQUxJWkFUSU9OXCJgLlxuXG5NeSByZWFzb25pbmcgaGVyZSBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiB0aGlzIHBhdGNoIGludHJvZHVjZXMgbmV3LCB1c2Vyc3BhY2UtYWNjZXNzaWJsZSBgaW9jdGxzYCBkZXNpZ25lZCBmb3IgYnVsayBDU1IgbWFuaXB1bGF0aW9uIHdpdGhpbiBMb29uZ0FyY2ggS1ZNLiAgR2l2ZW4gdGhlIHBvdGVudGlhbCBmb3IgbWVtb3J5IHNhZmV0eSBpc3N1ZXMgYW5kIHRoZSBhYnNvbHV0ZSBuZWVkIGZvciByb2J1c3QgYm91bmRzIGNoZWNraW5nIHdoZW4gZGVhbGluZyB3aXRoIHByaXZpbGVnZWQgb3BlcmF0aW9ucywgcmlnb3JvdXMgZnV6emluZyBpcyBlc3NlbnRpYWwuIFRoZXNlIGlvY3RscyBhcmUgdGhlIGVudHJ5IHBvaW50cywgYW5kIEknbSBzZXR0aW5nIHRoZSBmdXp6ZXIgdG8gZXhwbG9yZSB0aGVtIHRob3JvdWdobHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjczOTIsIk91dHB1dFRva2VucyI6MTE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMTU6NTc6MzQuMTExMDU3MzVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NTMxNzIzOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCIsXG4gICAgXCJWSVJUVUFMSVpBVElPTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9sb29uZ2FyY2hfY3NyX2lvXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGlzIHBhdGNoIGFkZHMgYnVsayBDU1IgZ2V0L3NldCBmdW5jdGlvbmFsaXR5IGZvciBMb29uZ0FyY2ggS1ZNIHZpYSBuZXcgaW9jdGxzIChLVk1fTE9PTkdBUkNIX0dFVF9DU1IgYW5kIEtWTV9MT09OR0FSQ0hfU0VUX0NTUikuIFRoZXNlIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG1lbW9yeSBzYWZldHkgYW5kIGNvcnJlY3QgYm91bmRzIGNoZWNraW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiLFxuICAgIFwiVklSVFVBTElaQVRJT05cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrdm1fbG9vbmdhcmNoX2Nzcl9pb1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhpcyBwYXRjaCBhZGRzIGJ1bGsgQ1NSIGdldC9zZXQgZnVuY3Rpb25hbGl0eSBmb3IgTG9vbmdBcmNoIEtWTSB2aWEgbmV3IGlvY3RscyAoS1ZNX0xPT05HQVJDSF9HRVRfQ1NSIGFuZCBLVk1fTE9PTkdBUkNIX1NFVF9DU1IpLiBUaGVzZSBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBtZW1vcnkgc2FmZXR5IGFuZCBjb3JyZWN0IGJvdW5kcyBjaGVja2luZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowk7vfn[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-23 15:36:25 +0000 UTC FinishedAt: 2026-07-23 15:57:36 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "e61e6fd4f139f2342a6bc86da602df7456ef87f6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM", "VIRTUALIZATION" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "e61e6fd4f139f2342a6bc86da602df7456ef87f6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM", "VIRTUALIZATION" ], "series_id": "13ef1e79-747c-4abf-b4a3-854c5c75efba" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_loongarch_csr_io" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDE1OjU2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtWSVJUVUFMSVpBVElPTiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9sb29uZ2FyY2hfY3NyX2lvJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhpcyBwYXRjaCBhZGRzIGJ1bGsgQ1NSIGdldC9zZXQgZnVuY3Rpb25hbGl0eSBmb3IgTG9vbmdBcmNoIEtWTSB2aWEgbmV3IGlvY3RscyAoS1ZNX0xPT05HQVJDSF9HRVRfQ1NSIGFuZCBLVk1fTE9PTkdBUkNIX1NFVF9DU1IpLiBUaGVzZSBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBtZW1vcnkgc2FmZXR5IGFuZCBjb3JyZWN0IGJvdW5kcyBjaGVja2luZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAxNTo1NjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGU3MDk5ZTBmNDYyZmFlZGMyYjE1YTc5MzgwOTFkOGQwMTQ2OTgyZmFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAyMyAxNTo1Njo0OSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oIGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxuaW5kZXggMjNjZmJlY2ViYmQ3OWEuLmFhY2Y1ZDg0MjE3ZjI4IDEwMDY0NFxuLS0tIGEvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxuQEAgLTM2Miw3ICYjNDM7MzYyLDcgQEAgZXh0ZXJuIHN0cnVjdCBrdm1fd29ybGRfc3dpdGNoICprdm1fbG9vbmdhcmNoX29wcztcbiAjZGVmaW5lIEhXX0dDU1JcdFx0KDEgXHUwMDNjXHUwMDNjIDEpXG4gI2RlZmluZSBJTlZBTElEX0dDU1JcdCgxIFx1MDAzY1x1MDAzYyAyKVxuIFxuLWludCBnZXRfZ2Nzcl9mbGFnKGludCBjc3IpO1xuJiM0MztpbnQgZ2V0X2djc3JfZmxhZyh1bnNpZ25lZCBpbnQgY3NyKTtcbiB2b2lkIHNldF9od19nY3NyKGludCBjc3JfaWQsIHVuc2lnbmVkIGxvbmcgdmFsKTtcbiBcbiAjZW5kaWYgLyogX19BU01fTE9PTkdBUkNIX0tWTV9IT1NUX0hfXyAqL1xuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvdWFwaS9hc20va3ZtLmggYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oXG5pbmRleCBjZDBiNWMxMWNhOWMyYi4uNTliM2I3ZWZhMDM5N2UgMTAwNjQ0XG4tLS0gYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oXG5AQCAtMTI3LDYgJiM0MzsxMjcsMTkgQEAgc3RydWN0IGt2bV9zeW5jX3JlZ3Mge1xuIHN0cnVjdCBrdm1fc3JlZ3Mge1xuIH07XG4gXG4mIzQzOy8qIGJ1bGsgQ1NSIGVudHJpZXMgZm9yIFZNIG1pZ3JhdGlvbiAqL1xuJiM0MztzdHJ1Y3Qga3ZtX2xvb25nYXJjaF9jc3JfZW50cnkge1xuJiM0MztcdF9fdTMyIGluZGV4O1xuJiM0MztcdF9fdTMyIHJlc2VydmVkO1xuJiM0MztcdF9fdTY0IGRhdGE7XG4mIzQzO307XG4mIzQzO1xuJiM0MztzdHJ1Y3Qga3ZtX2xvb25nYXJjaF9jc3JzIHtcbiYjNDM7XHRfX3UzMiBuY3NycztcdC8qIG51bWJlciBvZiBjc3IgZW50cmllcyAqL1xuJiM0MztcdF9fdTMyIHBhZDtcbiYjNDM7XHRfX0RFQ0xBUkVfRkxFWF9BUlJBWShzdHJ1Y3Qga3ZtX2xvb25nYXJjaF9jc3JfZW50cnksIGVudHJpZXMpO1xuJiM0Mzt9O1xuJiM0MztcbiBzdHJ1Y3Qga3ZtX2lvY3NyX2VudHJ5IHtcbiBcdF9fdTMyIGFkZHI7XG4gXHRfX3UzMiBwYWQ7XG5kaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gva3ZtL21haW4uYyBiL2FyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmNcbmluZGV4IDNlMTAwNTUyNmY0YmQ2Li5kODAyZDM5M2NkNDRkOCAxMDA2NDRcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmNcbkBAIC0xOSw3ICYjNDM7MTksNyBAQCBzdHJ1Y3Qga3ZtX3dvcmxkX3N3aXRjaCAqa3ZtX2xvb25nYXJjaF9vcHM7XG4gc3RhdGljIGludCBnY3NyX2ZsYWdbQ1NSX01BWF9OVU1TXTtcbiBzdGF0aWMgc3RydWN0IGt2bV9jb250ZXh0IF9fcGVyY3B1ICp2bWNzO1xuIFxuLWludCBnZXRfZ2Nzcl9mbGFnKGludCBjc3IpXG4mIzQzO2ludCBnZXRfZ2Nzcl9mbGFnKHVuc2lnbmVkIGludCBjc3IpXG4ge1xuIFx0aWYgKGNzciBcdTAwM2MgQ1NSX01BWF9OVU1TKVxuIFx0XHRyZXR1cm4gZ2Nzcl9mbGFnW2Nzcl07XG5AQCAtMjcsMTMgJiM0MzsyNywxMyBAQCBpbnQgZ2V0X2djc3JfZmxhZyhpbnQgY3NyKVxuIFx0cmV0dXJuIElOVkFMSURfR0NTUjtcbiB9XG4gXG4tc3RhdGljIGlubGluZSB2b2lkIHNldF9nY3NyX3N3X2ZsYWcoaW50IGNzcilcbiYjNDM7c3RhdGljIGlubGluZSB2b2lkIHNldF9nY3NyX3N3X2ZsYWcodW5zaWduZWQgaW50IGNzcilcbiB7XG4gXHRpZiAoY3NyIFx1MDAzYyBDU1JfTUFYX05VTVMpXG4gXHRcdGdjc3JfZmxhZ1tjc3JdIHw9IFNXX0dDU1I7XG4gfVxuIFxuLXN0YXRpYyBpbmxpbmUgdm9pZCBzZXRfZ2Nzcl9od19mbGFnKGludCBjc3IpXG4mIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBzZXRfZ2Nzcl9od19mbGFnKHVuc2lnbmVkIGludCBjc3IpXG4ge1xuIFx0aWYgKGNzciBcdTAwM2MgQ1NSX01BWF9OVU1TKVxuIFx0XHRnY3NyX2ZsYWdbY3NyXSB8PSBIV19HQ1NSO1xuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMgYi9hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jXG5pbmRleCAyMGMyMDdkODBlMzFhZS4uMmJiNmE3ZTBlYTg3NzYgMTAwNjQ0XG4tLS0gYS9hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jXG5AQCAtMTAwOSw2ICYjNDM7MTAwOSw3NyBAQCBpbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVnc1xuIFx0cmV0dXJuIC1FTk9JT0NUTENNRDtcbiB9XG4gXG4mIzQzOy8qIG1heCBDU1IgZW50cmllcyBoYW5kbGVkIHBlciBpb2N0bCAqL1xuJiM0MzsjZGVmaW5lIEtWTV9MT09OR0FSQ0hfTUFYX0NTUl9SRUdTXHQweDQwMFxuJiM0MztcbiYjNDM7LyogQnVsayBnZXQvc2V0IG9mIENTUiBzdGF0ZSBmb3IgVk0gbWlncmF0aW9uLiAqL1xuJiM0MztzdGF0aWMgaW50IGt2bV9sb29uZ2FyY2hfY3NyX2lvKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbiYjNDM7XHRcdFx0XHRzdHJ1Y3Qga3ZtX2xvb25nYXJjaF9jc3JzIF9fdXNlciAqdWNzcnMsXG4mIzQzO1x0XHRcdFx0Ym9vbCB3cml0ZSlcbiYjNDM7e1xuJiM0MztcdGludCBpLCByZXQgPSAwO1xuJiM0MztcdHVuc2lnbmVkIGxvbmcgc2l6ZTtcbiYjNDM7XHRzdHJ1Y3Qga3ZtX2xvb25nYXJjaF9jc3JzIGNzcnM7XG4mIzQzO1x0c3RydWN0IGt2bV9sb29uZ2FyY2hfY3NyX2VudHJ5ICplbnRyaWVzO1xuJiM0MztcdHN0cnVjdCBsb29uZ2FyY2hfY3NycyAqY3NyID0gdmNwdS1cdTAwM2VhcmNoLmNzcjtcbiYjNDM7XG4mIzQzO1x0aWYgKGNvcHlfZnJvbV91c2VyKFx1MDAyNmNzcnMsIHVjc3JzLCBzaXplb2YoY3NycykpKVxuJiM0MztcdFx0cmV0dXJuIC1FRkFVTFQ7XG4mIzQzO1xuJiM0MztcdGlmIChjc3JzLnBhZClcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcbiYjNDM7XHRpZiAoY3Nycy5uY3NycyBcdTAwM2UgS1ZNX0xPT05HQVJDSF9NQVhfQ1NSX1JFR1MpXG4mIzQzO1x0XHRyZXR1cm4gLUUyQklHO1xuJiM0MztcbiYjNDM7XHRzaXplID0gYXJyYXlfc2l6ZShjc3JzLm5jc3JzLCBzaXplb2YoKmVudHJpZXMpKTtcbiYjNDM7XHRlbnRyaWVzID0gbWVtZHVwX3VzZXIodWNzcnMtXHUwMDNlZW50cmllcywgc2l6ZSk7XG4mIzQzO1x0aWYgKElTX0VSUihlbnRyaWVzKSlcbiYjNDM7XHRcdHJldHVybiBQVFJfRVJSKGVudHJpZXMpO1xuJiM0MztcbiYjNDM7XHRpZiAod3JpdGUpIHtcbiYjNDM7XHRcdHZjcHUtXHUwMDNlYXJjaC5hdXhfaW51c2UgXHUwMDI2PSB+S1ZNX0xBUkNIX0hXQ1NSX1VTQUJMRTtcbiYjNDM7XHR9IGVsc2Uge1xuJiM0MztcdFx0cHJlZW1wdF9kaXNhYmxlKCk7XG4mIzQzO1x0XHR2Y3B1X2xvYWQodmNwdSk7XG4mIzQzO1x0XHRrdm1fZGVsaXZlcl9pbnRyKHZjcHUpO1xuJiM0MztcdFx0dmNwdS1cdTAwM2VhcmNoLmF1eF9pbnVzZSBcdTAwMjY9IH5LVk1fTEFSQ0hfU1dDU1JfTEFURVNUO1xuJiM0MztcdFx0dmNwdV9wdXQodmNwdSk7XG4mIzQzO1x0XHRwcmVlbXB0X2VuYWJsZSgpO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgY3Nycy5uY3NyczsgaSYjNDM7JiM0MzspIHtcbiYjNDM7XHRcdHVuc2lnbmVkIGludCBpZCA9IGVudHJpZXNbaV0uaW5kZXg7XG4mIzQzO1xuJiM0MztcdFx0aWYgKGVudHJpZXNbaV0ucmVzZXJ2ZWQgfHwgaWQgXHUwMDNlPSBDU1JfTUFYX05VTVMgfHxcbiYjNDM7XHRcdCAgICAoZ2V0X2djc3JfZmxhZyhpZCkgXHUwMDI2IElOVkFMSURfR0NTUikpIHtcbiYjNDM7XHRcdFx0cmV0ID0gLUVJTlZBTDtcbiYjNDM7XHRcdFx0YnJlYWs7XG4mIzQzO1x0XHR9XG4mIzQzO1xuJiM0MztcdFx0aWYgKHdyaXRlKSB7XG4mIzQzO1x0XHRcdHJldCA9IF9rdm1fc2V0Y3NyKHZjcHUsIGlkLCBlbnRyaWVzW2ldLmRhdGEpO1xuJiM0MztcdFx0XHRpZiAocmV0KVxuJiM0MztcdFx0XHRcdGJyZWFrO1xuJiM0MztcdFx0fSBlbHNlIGlmIChpZCA9PSBMT09OR0FSQ0hfQ1NSX0VTVEFUKSB7XG4mIzQzO1x0XHRcdHVuc2lnbmVkIGxvbmcgZXN0YXQsIGdpbnRjO1xuJiM0MztcbiYjNDM7XHRcdFx0LyogRVNUQVQgSVAwfklQNyBjb21lIGZyb20gR0lOVEMgKi9cbiYjNDM7XHRcdFx0Z2ludGMgPSBrdm1fcmVhZF9zd19nY3NyKGNzciwgTE9PTkdBUkNIX0NTUl9HSU5UQykgXHUwMDI2IEtWTV9HSU5UQ19JUlFfTUFTSztcbiYjNDM7XHRcdFx0ZXN0YXQgPSBrdm1fcmVhZF9zd19nY3NyKGNzciwgTE9PTkdBUkNIX0NTUl9FU1RBVCkgXHUwMDI2IH5LVk1fRVNUQVRfRVhUSV9NQVNLO1xuJiM0MztcdFx0XHRlbnRyaWVzW2ldLmRhdGEgPSBlc3RhdCB8IChnaW50YyBcdTAwM2NcdTAwM2MgVklQX0RFTFRBKTtcbiYjNDM7XHRcdH0gZWxzZSB7XG4mIzQzO1x0XHRcdGVudHJpZXNbaV0uZGF0YSA9IGt2bV9yZWFkX3N3X2djc3IoY3NyLCBpZCk7XG4mIzQzO1x0XHR9XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRpZiAoIXdyaXRlIFx1MDAyNlx1MDAyNiBjb3B5X3RvX3VzZXIodWNzcnMtXHUwMDNlZW50cmllcywgZW50cmllcywgc2l6ZSkpXG4mIzQzO1x0XHRyZXQgPSAtRUZBVUxUO1xuJiM0MztcbiYjNDM7XHRrZnJlZShlbnRyaWVzKTtcbiYjNDM7XHRyZXR1cm4gcmV0O1xuJiM0Mzt9XG4mIzQzO1xuIGludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9yZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9yZWdzICpyZWdzKVxuIHtcbiBcdGludCBpO1xuQEAgLTEyNjYsNiAmIzQzOzEzMzcsMTIgQEAgbG9uZyBrdm1fYXJjaF92Y3B1X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLFxuIFx0XHRcdHIgPSBrdm1fZ2V0X3JlZyh2Y3B1LCBcdTAwMjZyZWcpO1xuIFx0XHRicmVhaztcbiBcdH1cbiYjNDM7XHRjYXNlIEtWTV9MT09OR0FSQ0hfR0VUX0NTUjpcbiYjNDM7XHRcdHIgPSBrdm1fbG9vbmdhcmNoX2Nzcl9pbyh2Y3B1LCBhcmdwLCBmYWxzZSk7XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHRjYXNlIEtWTV9MT09OR0FSQ0hfU0VUX0NTUjpcbiYjNDM7XHRcdHIgPSBrdm1fbG9vbmdhcmNoX2Nzcl9pbyh2Y3B1LCBhcmdwLCB0cnVlKTtcbiYjNDM7XHRcdGJyZWFrO1xuIFx0Y2FzZSBLVk1fRU5BQkxFX0NBUDoge1xuIFx0XHRzdHJ1Y3Qga3ZtX2VuYWJsZV9jYXAgY2FwO1xuIFxuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2t2bS92bS5jIGIvYXJjaC9sb29uZ2FyY2gva3ZtL3ZtLmNcbmluZGV4IDEzMTdjNzE4Zjg5NmFmLi43ODVmMmZhMGQxNjQyZCAxMDA2NDRcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL2t2bS92bS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2xvb25nYXJjaC9rdm0vdm0uY1xuQEAgLTEyMiw2ICYjNDM7MTIyLDcgQEAgaW50IGt2bV92bV9pb2N0bF9jaGVja19leHRlbnNpb24oc3RydWN0IGt2bSAqa3ZtLCBsb25nIGV4dClcbiBcdGNhc2UgS1ZNX0NBUF9JT0VWRU5URkQ6XG4gXHRjYXNlIEtWTV9DQVBfTVBfU1RBVEU6XG4gXHRjYXNlIEtWTV9DQVBfU0VUX0dVRVNUX0RFQlVHOlxuJiM0MztcdGNhc2UgS1ZNX0NBUF9MT09OR0FSQ0hfQ1NSOlxuIFx0XHRyID0gMTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEtWTV9DQVBfTlJfVkNQVVM6XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L2t2bS5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L2t2bS5oXG5pbmRleCA0MTkwMTEwOTdmYThlMi4uNDVkOWViMDZjYjhhYzUgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL3VhcGkvbGludXgva3ZtLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvdWFwaS9saW51eC9rdm0uaFxuQEAgLTk5Nyw2ICYjNDM7OTk3LDcgQEAgc3RydWN0IGt2bV9lbmFibGVfY2FwIHtcbiAjZGVmaW5lIEtWTV9DQVBfUzM5MF9LRVlPUCAyNDdcbiAjZGVmaW5lIEtWTV9DQVBfUzM5MF9WU0lFX0VTQU1PREUgMjQ4XG4gI2RlZmluZSBLVk1fQ0FQX1MzOTBfSFBBR0VfMkcgMjQ5XG4mIzQzOyNkZWZpbmUgS1ZNX0NBUF9MT09OR0FSQ0hfQ1NSXHQyNTBcbiBcbiBzdHJ1Y3Qga3ZtX2lycV9yb3V0aW5nX2lycWNoaXAge1xuIFx0X191MzIgaXJxY2hpcDtcbkBAIC0xNjcwLDQgJiM0MzsxNjcxLDggQEAgc3RydWN0IGt2bV9wcmVfZmF1bHRfbWVtb3J5IHtcbiBcdF9fdTY0IHBhZGRpbmdbNV07XG4gfTtcbiBcbiYjNDM7LyogTG9vbmdBcmNoOiBidWxrIENTUiBnZXQvc2V0IGZvciBtaWdyYXRpb24gKi9cbiYjNDM7I2RlZmluZSBLVk1fTE9PTkdBUkNIX0dFVF9DU1JcdF9JT1dSKEtWTUlPLCAweGQ2LCBzdHJ1Y3Qga3ZtX2xvb25nYXJjaF9jc3JzKVxuJiM0MzsjZGVmaW5lIEtWTV9MT09OR0FSQ0hfU0VUX0NTUlx0X0lPVyhLVk1JTywgIDB4ZDcsIHN0cnVjdCBrdm1fbG9vbmdhcmNoX2NzcnMpXG4mIzQzO1xuICNlbmRpZiAvKiBfX0xJTlVYX0tWTV9IICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMTU6NTY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtWSVJUVUFMSVpBVElPTiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9sb29uZ2FyY2hfY3NyX2lvJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhpcyBwYXRjaCBhZGRzIGJ1bGsgQ1NSIGdldC9zZXQgZnVuY3Rpb25hbGl0eSBmb3IgTG9vbmdBcmNoIEtWTSB2aWEgbmV3IGlvY3RscyAoS1ZNX0xPT05HQVJDSF9HRVRfQ1NSIGFuZCBLVk1fTE9PTkdBUkNIX1NFVF9DU1IpLiBUaGVzZSBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBtZW1vcnkgc2FmZXR5IGFuZCBjb3JyZWN0IGJvdW5kcyBjaGVja2luZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZTcwOTllMGY0NjJmYWVkYzJiMTVhNzkzODA5MWQ4ZDAxNDY5ODJmYQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgSnVsIDIzIDE1OjU2OjQ5IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2hvc3QuaCBiL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgKaW5kZXggMjNjZmJlY2ViYmQ3OWEuLmFhY2Y1ZDg0MjE3ZjI4IDEwMDY0NAotLS0gYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgKQEAgLTM2Miw3ICYjNDM7MzYyLDcgQEAgZXh0ZXJuIHN0cnVjdCBrdm1fd29ybGRfc3dpdGNoICprdm1fbG9vbmdhcmNoX29wczsKICNkZWZpbmUgSFdfR0NTUgkJKDEgJmx0OyZsdDsgMSkKICNkZWZpbmUgSU5WQUxJRF9HQ1NSCSgxICZsdDsmbHQ7IDIpCiAKLWludCBnZXRfZ2Nzcl9mbGFnKGludCBjc3IpOwomIzQzO2ludCBnZXRfZ2Nzcl9mbGFnKHVuc2lnbmVkIGludCBjc3IpOwogdm9pZCBzZXRfaHdfZ2NzcihpbnQgY3NyX2lkLCB1bnNpZ25lZCBsb25nIHZhbCk7CiAKICNlbmRpZiAvKiBfX0FTTV9MT09OR0FSQ0hfS1ZNX0hPU1RfSF9fICovCmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oIGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS91YXBpL2FzbS9rdm0uaAppbmRleCBjZDBiNWMxMWNhOWMyYi4uNTliM2I3ZWZhMDM5N2UgMTAwNjQ0Ci0tLSBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvdWFwaS9hc20va3ZtLmgKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS91YXBpL2FzbS9rdm0uaApAQCAtMTI3LDYgJiM0MzsxMjcsMTkgQEAgc3RydWN0IGt2bV9zeW5jX3JlZ3Mgewogc3RydWN0IGt2bV9zcmVncyB7CiB9OwogCiYjNDM7LyogYnVsayBDU1IgZW50cmllcyBmb3IgVk0gbWlncmF0aW9uICovCiYjNDM7c3RydWN0IGt2bV9sb29uZ2FyY2hfY3NyX2VudHJ5IHsKJiM0MzsJX191MzIgaW5kZXg7CiYjNDM7CV9fdTMyIHJlc2VydmVkOwomIzQzOwlfX3U2NCBkYXRhOwomIzQzO307CiYjNDM7CiYjNDM7c3RydWN0IGt2bV9sb29uZ2FyY2hfY3NycyB7CiYjNDM7CV9fdTMyIG5jc3JzOwkvKiBudW1iZXIgb2YgY3NyIGVudHJpZXMgKi8KJiM0MzsJX191MzIgcGFkOwomIzQzOwlfX0RFQ0xBUkVfRkxFWF9BUlJBWShzdHJ1Y3Qga3ZtX2xvb25nYXJjaF9jc3JfZW50cnksIGVudHJpZXMpOwomIzQzO307CiYjNDM7CiBzdHJ1Y3Qga3ZtX2lvY3NyX2VudHJ5IHsKIAlfX3UzMiBhZGRyOwogCV9fdTMyIHBhZDsKZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmMgYi9hcmNoL2xvb25nYXJjaC9rdm0vbWFpbi5jCmluZGV4IDNlMTAwNTUyNmY0YmQ2Li5kODAyZDM5M2NkNDRkOCAxMDA2NDQKLS0tIGEvYXJjaC9sb29uZ2FyY2gva3ZtL21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2xvb25nYXJjaC9rdm0vbWFpbi5jCkBAIC0xOSw3ICYjNDM7MTksNyBAQCBzdHJ1Y3Qga3ZtX3dvcmxkX3N3aXRjaCAqa3ZtX2xvb25nYXJjaF9vcHM7CiBzdGF0aWMgaW50IGdjc3JfZmxhZ1tDU1JfTUFYX05VTVNdOwogc3RhdGljIHN0cnVjdCBrdm1fY29udGV4dCBfX3BlcmNwdSAqdm1jczsKIAotaW50IGdldF9nY3NyX2ZsYWcoaW50IGNzcikKJiM0MztpbnQgZ2V0X2djc3JfZmxhZyh1bnNpZ25lZCBpbnQgY3NyKQogewogCWlmIChjc3IgJmx0OyBDU1JfTUFYX05VTVMpCiAJCXJldHVybiBnY3NyX2ZsYWdbY3NyXTsKQEAgLTI3LDEzICYjNDM7MjcsMTMgQEAgaW50IGdldF9nY3NyX2ZsYWcoaW50IGNzcikKIAlyZXR1cm4gSU5WQUxJRF9HQ1NSOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgc2V0X2djc3Jfc3dfZmxhZyhpbnQgY3NyKQomIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBzZXRfZ2Nzcl9zd19mbGFnKHVuc2lnbmVkIGludCBjc3IpCiB7CiAJaWYgKGNzciAmbHQ7IENTUl9NQVhfTlVNUykKIAkJZ2Nzcl9mbGFnW2Nzcl0gfD0gU1dfR0NTUjsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIHNldF9nY3NyX2h3X2ZsYWcoaW50IGNzcikKJiM0MztzdGF0aWMgaW5saW5lIHZvaWQgc2V0X2djc3JfaHdfZmxhZyh1bnNpZ25lZCBpbnQgY3NyKQogewogCWlmIChjc3IgJmx0OyBDU1JfTUFYX05VTVMpCiAJCWdjc3JfZmxhZ1tjc3JdIHw9IEhXX0dDU1I7CmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jIGIvYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYwppbmRleCAyMGMyMDdkODBlMzFhZS4uMmJiNmE3ZTBlYTg3NzYgMTAwNjQ0Ci0tLSBhL2FyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYwpAQCAtMTAwOSw2ICYjNDM7MTAwOSw3NyBAQCBpbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncwogCXJldHVybiAtRU5PSU9DVExDTUQ7CiB9CiAKJiM0MzsvKiBtYXggQ1NSIGVudHJpZXMgaGFuZGxlZCBwZXIgaW9jdGwgKi8KJiM0MzsjZGVmaW5lIEtWTV9MT09OR0FSQ0hfTUFYX0NTUl9SRUdTCTB4NDAwCiYjNDM7CiYjNDM7LyogQnVsayBnZXQvc2V0IG9mIENTUiBzdGF0ZSBmb3IgVk0gbWlncmF0aW9uLiAqLwomIzQzO3N0YXRpYyBpbnQga3ZtX2xvb25nYXJjaF9jc3JfaW8oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LAomIzQzOwkJCQlzdHJ1Y3Qga3ZtX2xvb25nYXJjaF9jc3JzIF9fdXNlciAqdWNzcnMsCiYjNDM7CQkJCWJvb2wgd3JpdGUpCiYjNDM7ewomIzQzOwlpbnQgaSwgcmV0ID0gMDsKJiM0MzsJdW5zaWduZWQgbG9uZyBzaXplOwomIzQzOwlzdHJ1Y3Qga3ZtX2xvb25nYXJjaF9jc3JzIGNzcnM7CiYjNDM7CXN0cnVjdCBrdm1fbG9vbmdhcmNoX2Nzcl9lbnRyeSAqZW50cmllczsKJiM0MzsJc3RydWN0IGxvb25nYXJjaF9jc3JzICpjc3IgPSB2Y3B1LSZndDthcmNoLmNzcjsKJiM0MzsKJiM0MzsJaWYgKGNvcHlfZnJvbV91c2VyKCZhbXA7Y3NycywgdWNzcnMsIHNpemVvZihjc3JzKSkpCiYjNDM7CQlyZXR1cm4gLUVGQVVMVDsKJiM0MzsKJiM0MzsJaWYgKGNzcnMucGFkKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CiYjNDM7CWlmIChjc3JzLm5jc3JzICZndDsgS1ZNX0xPT05HQVJDSF9NQVhfQ1NSX1JFR1MpCiYjNDM7CQlyZXR1cm4gLUUyQklHOwomIzQzOwomIzQzOwlzaXplID0gYXJyYXlfc2l6ZShjc3JzLm5jc3JzLCBzaXplb2YoKmVudHJpZXMpKTsKJiM0MzsJZW50cmllcyA9IG1lbWR1cF91c2VyKHVjc3JzLSZndDtlbnRyaWVzLCBzaXplKTsKJiM0MzsJaWYgKElTX0VSUihlbnRyaWVzKSkKJiM0MzsJCXJldHVybiBQVFJfRVJSKGVudHJpZXMpOwomIzQzOwomIzQzOwlpZiAod3JpdGUpIHsKJiM0MzsJCXZjcHUtJmd0O2FyY2guYXV4X2ludXNlICZhbXA7PSB+S1ZNX0xBUkNIX0hXQ1NSX1VTQUJMRTsKJiM0MzsJfSBlbHNlIHsKJiM0MzsJCXByZWVtcHRfZGlzYWJsZSgpOwomIzQzOwkJdmNwdV9sb2FkKHZjcHUpOwomIzQzOwkJa3ZtX2RlbGl2ZXJfaW50cih2Y3B1KTsKJiM0MzsJCXZjcHUtJmd0O2FyY2guYXV4X2ludXNlICZhbXA7PSB+S1ZNX0xBUkNIX1NXQ1NSX0xBVEVTVDsKJiM0MzsJCXZjcHVfcHV0KHZjcHUpOwomIzQzOwkJcHJlZW1wdF9lbmFibGUoKTsKJiM0MzsJfQomIzQzOwomIzQzOwlmb3IgKGkgPSAwOyBpICZsdDsgY3Nycy5uY3NyczsgaSYjNDM7JiM0MzspIHsKJiM0MzsJCXVuc2lnbmVkIGludCBpZCA9IGVudHJpZXNbaV0uaW5kZXg7CiYjNDM7CiYjNDM7CQlpZiAoZW50cmllc1tpXS5yZXNlcnZlZCB8fCBpZCAmZ3Q7PSBDU1JfTUFYX05VTVMgfHwKJiM0MzsJCSAgICAoZ2V0X2djc3JfZmxhZyhpZCkgJmFtcDsgSU5WQUxJRF9HQ1NSKSkgewomIzQzOwkJCXJldCA9IC1FSU5WQUw7CiYjNDM7CQkJYnJlYWs7CiYjNDM7CQl9CiYjNDM7CiYjNDM7CQlpZiAod3JpdGUpIHsKJiM0MzsJCQlyZXQgPSBfa3ZtX3NldGNzcih2Y3B1LCBpZCwgZW50cmllc1tpXS5kYXRhKTsKJiM0MzsJCQlpZiAocmV0KQomIzQzOwkJCQlicmVhazsKJiM0MzsJCX0gZWxzZSBpZiAoaWQgPT0gTE9PTkdBUkNIX0NTUl9FU1RBVCkgewomIzQzOwkJCXVuc2lnbmVkIGxvbmcgZXN0YXQsIGdpbnRjOwomIzQzOwomIzQzOwkJCS8qIEVTVEFUIElQMH5JUDcgY29tZSBmcm9tIEdJTlRDICovCiYjNDM7CQkJZ2ludGMgPSBrdm1fcmVhZF9zd19nY3NyKGNzciwgTE9PTkdBUkNIX0NTUl9HSU5UQykgJmFtcDsgS1ZNX0dJTlRDX0lSUV9NQVNLOwomIzQzOwkJCWVzdGF0ID0ga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIExPT05HQVJDSF9DU1JfRVNUQVQpICZhbXA7IH5LVk1fRVNUQVRfRVhUSV9NQVNLOwomIzQzOwkJCWVudHJpZXNbaV0uZGF0YSA9IGVzdGF0IHwgKGdpbnRjICZsdDsmbHQ7IFZJUF9ERUxUQSk7CiYjNDM7CQl9IGVsc2UgewomIzQzOwkJCWVudHJpZXNbaV0uZGF0YSA9IGt2bV9yZWFkX3N3X2djc3IoY3NyLCBpZCk7CiYjNDM7CQl9CiYjNDM7CX0KJiM0MzsKJiM0MzsJaWYgKCF3cml0ZSAmYW1wOyZhbXA7IGNvcHlfdG9fdXNlcih1Y3Nycy0mZ3Q7ZW50cmllcywgZW50cmllcywgc2l6ZSkpCiYjNDM7CQlyZXQgPSAtRUZBVUxUOwomIzQzOwomIzQzOwlrZnJlZShlbnRyaWVzKTsKJiM0MzsJcmV0dXJuIHJldDsKJiM0Mzt9CiYjNDM7CiBpbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcmVncyAqcmVncykKIHsKIAlpbnQgaTsKQEAgLTEyNjYsNiAmIzQzOzEzMzcsMTIgQEAgbG9uZyBrdm1fYXJjaF92Y3B1X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLAogCQkJciA9IGt2bV9nZXRfcmVnKHZjcHUsICZhbXA7cmVnKTsKIAkJYnJlYWs7CiAJfQomIzQzOwljYXNlIEtWTV9MT09OR0FSQ0hfR0VUX0NTUjoKJiM0MzsJCXIgPSBrdm1fbG9vbmdhcmNoX2Nzcl9pbyh2Y3B1LCBhcmdwLCBmYWxzZSk7CiYjNDM7CQlicmVhazsKJiM0MzsJY2FzZSBLVk1fTE9PTkdBUkNIX1NFVF9DU1I6CiYjNDM7CQlyID0ga3ZtX2xvb25nYXJjaF9jc3JfaW8odmNwdSwgYXJncCwgdHJ1ZSk7CiYjNDM7CQlicmVhazsKIAljYXNlIEtWTV9FTkFCTEVfQ0FQOiB7CiAJCXN0cnVjdCBrdm1fZW5hYmxlX2NhcCBjYXA7CiAKZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2t2bS92bS5jIGIvYXJjaC9sb29uZ2FyY2gva3ZtL3ZtLmMKaW5kZXggMTMxN2M3MThmODk2YWYuLjc4NWYyZmEwZDE2NDJkIDEwMDY0NAotLS0gYS9hcmNoL2xvb25nYXJjaC9rdm0vdm0uYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2xvb25nYXJjaC9rdm0vdm0uYwpAQCAtMTIyLDYgJiM0MzsxMjIsNyBAQCBpbnQga3ZtX3ZtX2lvY3RsX2NoZWNrX2V4dGVuc2lvbihzdHJ1Y3Qga3ZtICprdm0sIGxvbmcgZXh0KQogCWNhc2UgS1ZNX0NBUF9JT0VWRU5URkQ6CiAJY2FzZSBLVk1fQ0FQX01QX1NUQVRFOgogCWNhc2UgS1ZNX0NBUF9TRVRfR1VFU1RfREVCVUc6CiYjNDM7CWNhc2UgS1ZNX0NBUF9MT09OR0FSQ0hfQ1NSOgogCQlyID0gMTsKIAkJYnJlYWs7CiAJY2FzZSBLVk1fQ0FQX05SX1ZDUFVTOgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L2t2bS5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L2t2bS5oCmluZGV4IDQxOTAxMTA5N2ZhOGUyLi40NWQ5ZWIwNmNiOGFjNSAxMDA2NDQKLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L2t2bS5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvdWFwaS9saW51eC9rdm0uaApAQCAtOTk3LDYgJiM0Mzs5OTcsNyBAQCBzdHJ1Y3Qga3ZtX2VuYWJsZV9jYXAgewogI2RlZmluZSBLVk1fQ0FQX1MzOTBfS0VZT1AgMjQ3CiAjZGVmaW5lIEtWTV9DQVBfUzM5MF9WU0lFX0VTQU1PREUgMjQ4CiAjZGVmaW5lIEtWTV9DQVBfUzM5MF9IUEFHRV8yRyAyNDkKJiM0MzsjZGVmaW5lIEtWTV9DQVBfTE9PTkdBUkNIX0NTUgkyNTAKIAogc3RydWN0IGt2bV9pcnFfcm91dGluZ19pcnFjaGlwIHsKIAlfX3UzMiBpcnFjaGlwOwpAQCAtMTY3MCw0ICYjNDM7MTY3MSw4IEBAIHN0cnVjdCBrdm1fcHJlX2ZhdWx0X21lbW9yeSB7CiAJX191NjQgcGFkZGluZ1s1XTsKIH07CiAKJiM0MzsvKiBMb29uZ0FyY2g6IGJ1bGsgQ1NSIGdldC9zZXQgZm9yIG1pZ3JhdGlvbiAqLwomIzQzOyNkZWZpbmUgS1ZNX0xPT05HQVJDSF9HRVRfQ1NSCV9JT1dSKEtWTUlPLCAweGQ2LCBzdHJ1Y3Qga3ZtX2xvb25nYXJjaF9jc3JzKQomIzQzOyNkZWZpbmUgS1ZNX0xPT05HQVJDSF9TRVRfQ1NSCV9JT1coS1ZNSU8sICAweGQ3LCBzdHJ1Y3Qga3ZtX2xvb25nYXJjaF9jc3JzKQomIzQzOwogI2VuZGlmIC8qIF9fTElOVVhfS1ZNX0ggKi8KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMTU6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQ0NwoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDIyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipMb29uZ0FyY2ggS1ZNIEJ1bGsgQ1NSIEFjY2VzczogSW5pdGlhbCBBc3Nlc3NtZW50KioKCk9rYXksIHNvIHRoZXJlJiMzOTtzIGEgcGF0Y2ggZmxvYXRpbmcgYXJvdW5kLCBhbmQgaXQmIzM5O3MgYWRkaW5nIHNvbWUgbXVjaC1uZWVkZWQgYnVsayBnZXQvc2V0IGZ1bmN0aW9uYWxpdHkgZm9yIENvbnRyb2wgYW5kIFN0YXR1cyBSZWdpc3RlcnMgKENTUnMpIHdpdGhpbiBMb29uZ0FyY2ggS1ZNLiBNeSBpbml0aWFsIHNjYW4gdGVsbHMgbWUgaXQmIzM5O3MgdG91Y2hpbmcgYGFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmNgIHRvIGFkZCBga3ZtX2xvb25nYXJjaF9jc3JfaW9gLCB3aGljaCBpcyB0aGUgbWVhdCBvZiB0aGUgaW9jdGwgaGFuZGxpbmcgZm9yIGBLVk1fTE9PTkdBUkNIX0dFVF9DU1JgIGFuZCBgS1ZNX0xPT05HQVJDSF9TRVRfQ1NSYC4gVGhhdOKAmXMgdGhlIGNvcmUgb2YgdGhlIG5ldyBmdW5jdGlvbmFsaXR5IHJpZ2h0IHRoZXJlLgoKSXQgYWxzbyBtZWFucyBjaGFuZ2VzIGluIGBhcmNoL2xvb25nYXJjaC9rdm0vdm0uY2AgdG8gcmVwb3J0IHRoZSBmZWF0dXJlIHdpdGggdGhlIGBLVk1fQ0FQX0xPT05HQVJDSF9DU1JgIGNhcGFiaWxpdHkg4oCTIG1ha2VzIHNlbnNlLCBnb3R0YSBhZHZlcnRpc2UgdGhlIG5ldyBjYXBhYmlsaXR5LiBBbmQsIGFoLCBhIHBhcmFtZXRlciB0eXBlIGNoYW5nZSBpbiBgYXJjaC9sb29uZ2FyY2gva3ZtL21haW4uY2AsIHNoaWZ0aW5nIGBnZXRfZ2Nzcl9mbGFnYCBmcm9tIGBpbnRgIHRvIGB1bnNpZ25lZCBpbnRgLiBQcm9iYWJseSBqdXN0IGEgdHlwZSBzYWZldHkgdGhpbmcgcmVsYXRlZCB0byBob3cgdGhlIGZsYWdzIGFyZSB1c2VkIG5vdy4KCkZ1bmN0aW9uYWxseSwgdGhpcyBpcyBhIGRlZmluaXRlIGVuaGFuY2VtZW50IHRvIHRoZSBLVk0gaW1wbGVtZW50YXRpb24gb24gTG9vbmdBcmNoLiBJdCBzY3JlYW1zIGZvciBmdXp6aW5nIHRvIGVuc3VyZSByb2J1c3RuZXNzIGFuZCB0aGF0IHRoZXJlIGFyZSBubyBoaWRkZW4gaXNzdWVzLiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIGltcGxpY2F0aW9ucyBvZiB0aGlzLiBMZXQgbWUgdHJhY2sgZG93biB0aGUgcmVsZXZhbnQgS2NvbmZpZyBvcHRpb25zLiBUaGUgY29kZSYjMzk7cyBpbiBgYXJjaC9sb29uZ2FyY2gva3ZtL2AsIHNvIEkmIzM5O2xsIHN0YXJ0IGJ5IGNoZWNraW5nIGBhcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZ2AgYW5kIHRoZW4gbWF5YmUgYGFyY2gvbG9vbmdhcmNoL0tjb25maWdgIGlmIEkgZG9uJiMzOTt0IGZpbmQgaXQgdGhlcmUuIEkgbmVlZCB0byBrbm93IGhvdyB0aGlzIG5ldyBmZWF0dXJlIGlzIGVuYWJsZWQgYW5kIGRpc2FibGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDE1OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBLVk0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL2xvb25nYXJjaC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cbmFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnLTE5LVxuYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTVxuYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWctMjEtXHR0cmlzdGF0ZSBcJiMzNDtLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAxNTo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTc4CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMTQ5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGJyZWFrZG93biBvZiB3aGF0IEkmIzM5O20gbG9va2luZyBhdDoKCioqS1ZNIExvb25nQXJjaCBDb25maWd1cmF0aW9uIEFzc2Vzc21lbnQqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGl0LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGUgcHJpbWFyeSBjb25maWd1cmF0aW9uIG9wdGlvbiB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGhlcmUgaXMgcHJvYmFibHkgYENPTkZJR19LVk1gLiBUaGF0JiMzOTtzIHRoZSBiaWcgb25lLCB0aGUgYmFzZSBLVk0gc3VwcG9ydC4gT2YgY291cnNlLCBnaXZlbiB0aGUgdmlydHVhbGl6YXRpb24gYXNwZWN0LCBJIHNob3VsZCBhbHNvIGRvdWJsZS1jaGVjayBhbmQgY29uc2lkZXIgdGhhdCBgQ09ORklHX1ZJUlRVQUxJWkFUSU9OYCBtaWdodCBiZSBhIG5lY2Vzc2FyeSBwcmVyZXF1aXNpdGUgb3IgY29tcGFuaW9uIHRvIGBDT05GSUdfS1ZNYC4gTmVlZCB0byBrZWVwIHRoYXQgaW4gbWluZC4KCk5vdywgbGV0JiMzOTtzIHBpbnBvaW50IHRoZSBmdW5jdGlvbnMgdGhhdCBhcmUgZ29pbmcgdG8gYmUgbW9zdCByZWxldmFudCBoZXJlLCB0aGUgb25lcyB0aGF0IG5lZWQgdGhlIGNsb3Nlc3Qgc2NydXRpbnkuIEl0IGxvb2tzIGxpa2UgYGt2bV9sb29uZ2FyY2hfY3NyX2lvYCBpcyBhIGtleSBmdW5jdGlvbiB0byBmb2N1cyBvbi4gTG9va3MgcHJldHR5IExvb25nQXJjaC1zcGVjaWZpYywgc28gbGlrZWx5IHRoZSBjb250cm9sIGFuZCBzdGF0dXMgcmVnaXN0ZXIgaW50ZXJhY3Rpb24gZnVuY3Rpb24uIGBrdm1fYXJjaF92Y3B1X2lvY3RsYCBpcyBpbiBwbGF5IHRvbywgYnV0IHRoYXQmIzM5O3MgYSBtb3JlIGdlbmVyaWMgaW9jdGwgaGFuZGxlciwgc28gdGhlIHJlYWwgaGVhdnkgbGlmdGluZyBtaWdodCBiZSBkb25lIGluIGBrdm1fbG9vbmdhcmNoX2Nzcl9pb2AgYW55d2F5LiBJIHNob3VsZCBwcm9iYWJseSBnaXZlIGJvdGggYSBjbG9zZSBsb29rLCBidXQgYGt2bV9sb29uZ2FyY2hfY3NyX2lvYCBzZWVtcyBsaWtlIHRoZSBwcmltYXJ5IHRhcmdldC4KCkkgbmVlZCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBzdXBwb3J0aW5nIGZ1bmN0aW9ucy4gSXQgc2VlbXMgdGhhdCBgZ2V0X2djc3JfZmxhZ2AgaXMgYWxzbyBhIG1vZGlmaWVkIGZ1bmN0aW9uLCBidXQgaXQgbG9va3MgbGlrZSBhIHNtYWxsIGhlbHBlciBmdW5jdGlvbiwgc28gSSYjMzk7bGwga2VlcCBhbiBleWUgb24gaXQgYnV0IHdvbiYjMzk7dCBmb2N1cyBvbiBpdCBpbml0aWFsbHkuCgpUbyBkaWcgaW4sIEkmIzM5O2xsIG5lZWQgdG8gaGVhZCBvdmVyIHRvIGBhcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jYCB0byBzZWUgaG93IGBrdm1fbG9vbmdhcmNoX2Nzcl9pb2AgaXMgYWN0dWFsbHkgaW1wbGVtZW50ZWQgYW5kIGhvdyBpdCBmaXRzIGludG8gdGhlIGJyb2FkZXIgS1ZNIExvb25nQXJjaCBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDE1OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9sb29uZ2FyY2hfY3NyX2lvJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jPTEwMDc9aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMDE1LS8qIEJ1bGsgZ2V0L3NldCBvZiBDU1Igc3RhdGUgZm9yIFZNIG1pZ3JhdGlvbi4gKi9cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6MTAxNjpzdGF0aWMgaW50IGt2bV9sb29uZ2FyY2hfY3NyX2lvKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTAxNy1cdFx0XHRcdHN0cnVjdCBrdm1fbG9vbmdhcmNoX2NzcnMgX191c2VyICp1Y3Nycyxcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jPTEzMDU9bG9uZyBrdm1fYXJjaF92Y3B1X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLFxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTM0MC1cdGNhc2UgS1ZNX0xPT05HQVJDSF9HRVRfQ1NSOlxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzoxMzQxOlx0XHRyID0ga3ZtX2xvb25nYXJjaF9jc3JfaW8odmNwdSwgYXJncCwgZmFsc2UpO1xuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMzQyLVx0XHRicmVhaztcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTM0My1cdGNhc2UgS1ZNX0xPT05HQVJDSF9TRVRfQ1NSOlxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzoxMzQ0Olx0XHRyID0ga3ZtX2xvb25nYXJjaF9jc3JfaW8odmNwdSwgYXJncCwgdHJ1ZSk7XG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEzNDUtXHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDE1OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYxNzEKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxMDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgTG9vbmdBcmNoIENTUiBJL08gSGFuZGxpbmcqKgoKQWxyaWdodCwgc28gdGhlIGNvcmUgb2YgdGhpcyBuZXcgZnVuY3Rpb25hbGl0eSBzZWVtcyB0byBiZSB0aGUgYGt2bV9sb29uZ2FyY2hfY3NyX2lvYCBmdW5jdGlvbi4gVGhhdCYjMzk7cyB0aGUgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nLCBubyBxdWVzdGlvbi4gR2l2ZW4gdGhhdCBpdCYjMzk7cyBMb29uZ0FyY2gtc3BlY2lmaWMsIHRoZSB0ZXN0aW5nIHdpbGwgbmF0dXJhbGx5IGJlIGNvbnN0cmFpbmVkIHRvIExvb25nQXJjaCBwbGF0Zm9ybXMgb3IgY3Jvc3MtY29tcGlsZWQgZW52aXJvbm1lbnRzLiBObyBiaWcgZGVhbCwgd2UgY2FuIGVhc2lseSBwcm92aWRlIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMgYW5kIHN5bWJvbHMgdG8gbWFrZSBzdXJlIHRoZSBmdXp6aW5nIGhhcm5lc3NlcyBmdW5jdGlvbiBjb3JyZWN0bHkuCgpTcGVjaWZpY2FsbHksIHdlJiMzOTtsbCBuZWVkIHRoZSBgS1ZNYCBjb25maWd1cmF0aW9uIHRvIGJlIGVuYWJsZWQuIEkmIzM5O2xsIG5lZWQgdG8gZm9jdXMgdGhlIGZ1enppbmcgb24gdGhlIGBrdm1fbG9vbmdhcmNoX2Nzcl9pb2Agc3ltYm9sLgoKQmVmb3JlIHdlIGNvbW1pdCB0byB0aGF0LCBJJiMzOTtsbCBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGF0IHRoZXJlIGFyZW4mIzM5O3QgYW55IG90aGVyIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMgdGhhdCB3ZSBtaWdodCBoYXZlIG1pc3NlZCwgb3IgYW55IGhpZGRlbiBkZXBlbmRlbmNpZXMuIEl0JiMzOTtzIGFsd2F5cyBnb29kIHRvIGJlIHRob3JvdWdoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDE1OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBLVk0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxuYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWctMTktXG5hcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNXG5hcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZy0yMS1cdHRyaXN0YXRlIFwmIzM0O0tlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDE1OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY1OTcKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQ29uc2lkZXJpbmcgQ29uZmlndXJhdGlvbiBQb3NzaWJpbGl0aWVzKioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUuLi4gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGFydGljdWxhciBzaXR1YXRpb24sIGFuZCBteSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gYXNrOiAqKklzIHRoaXMgdGhlICpvbmx5KiBjb25maWd1cmF0aW9uIHdlIG5lZWQgdG8gYWNjb3VudCBmb3I/KiogQXJlIHRoZXJlIGFueSBvdGhlciBwb3RlbnRpYWwgc2V0dXBzLCBlZGdlIGNhc2VzLCBvciB2YXJpYXRpb25zIGluIHRoZSBwYXJhbWV0ZXJzIHRoYXQgY291bGQgdGhyb3cgYSB3cmVuY2ggaW4gdGhlIHdvcmtzPyBJIG5lZWQgdG8gcXVpY2tseSBlc3RhYmxpc2ggaWYgdGhlIHByZXNlbnRlZCBzY2VuYXJpbyBpcyB0cnVseSByZXByZXNlbnRhdGl2ZSBvZiB0aGUgb3ZlcmFsbCBsYW5kc2NhcGUsIG9yIGlmIGl0JiMzOTtzIGp1c3Qgb25lIGRhdGEgcG9pbnQgaW4gYSBwb3RlbnRpYWxseSBtdWNoIGxhcmdlciwgbW9yZSBjb21wbGV4IGNvbmZpZ3VyYXRpb24gc3BhY2UuIEkmIzM5O20gYWxyZWFkeSBtZW50YWxseSBydW5uaW5nIHRocm91Z2ggdGhlIGNoZWNrbGlzdC4uLiBkaWZmZXJlbnQgaGFyZHdhcmUsIHNvZnR3YXJlIHZlcnNpb25zLCBuZXR3b3JrIHRvcG9sb2dpZXMuLi4gSSBoYXZlIHRvIGVuc3VyZSB0aGF0IEkmIzM5O20gY29uc2lkZXJpbmcgYWxsIHJlbGV2YW50IGZhY3RvcnMgYmVmb3JlIGRyYXdpbmcgYW55IGNvbmNsdXNpb25zLiBUaGUgZGVwdGggb2YgdGhlIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gaXMgYWxzbyBhbiBhcmVhIG9mIGNvbnNpZGVyYXRpb24sIGFzIGl0IGlzIHBvc3NpYmxlIHRoYXQgdGhlcmUgYXJlIG90aGVyIHN1Yi1jb25maWd1cmF0aW9ucyBJIGhhdmUgZmFpbGVkIHRvIHVuZGVyc3RhbmQsIG9yIHRoYXQgaGF2ZW4mIzM5O3QgYmVlbiBzaGFyZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDE1OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7YXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gICAyOlx0I1xuICAgMzpcdCMgS1ZNIGNvbmZpZ3VyYXRpb25cbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0c291cmNlIFwmIzM0O3ZpcnQva3ZtL0tjb25maWdcJiMzNDtcbiAgIDc6XHRcbiAgIDg6XHRtZW51Y29uZmlnIFZJUlRVQUxJWkFUSU9OXG4gICA5Olx0XHRib29sIFwmIzM0O1ZpcnR1YWxpemF0aW9uXCYjMzQ7XG4gIDEwOlx0XHRoZWxwXG4gIDExOlx0XHQgIFNheSBZIGhlcmUgdG8gZ2V0IHRvIHNlZSBvcHRpb25zIGZvciB1c2luZyB5b3VyIExpbnV4IGhvc3QgdG8gcnVuXG4gIDEyOlx0XHQgIG90aGVyIG9wZXJhdGluZyBzeXN0ZW1zIGluc2lkZSB2aXJ0dWFsIG1hY2hpbmVzIChndWVzdHMpLlxuICAxMzpcdFx0ICBUaGlzIG9wdGlvbiBhbG9uZSBkb2VzIG5vdCBhZGQgYW55IGtlcm5lbCBjb2RlLlxuICAxNDpcdFxuICAxNTpcdFx0ICBJZiB5b3Ugc2F5IE4sIGFsbCBvcHRpb25zIGluIHRoaXMgc3VibWVudSB3aWxsIGJlIHNraXBwZWQgYW5kXG4gIDE2Olx0XHQgIGRpc2FibGVkLlxuICAxNzpcdFxuICAxODpcdGlmIFZJUlRVQUxJWkFUSU9OXG4gIDE5Olx0XG4gIDIwOlx0Y29uZmlnIEtWTVxuICAyMTpcdFx0dHJpc3RhdGUgXCYjMzQ7S2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XCYjMzQ7XG4gIDIyOlx0XHRkZXBlbmRzIG9uIEFTX0hBU19MVlpfRVhURU5TSU9OIFx1MDAyNlx1MDAyNiA2NEJJVFxuICAyMzpcdFx0c2VsZWN0IEhBVkVfS1ZNX0RJUlRZX1JJTkdfQUNRX1JFTFxuICAyNDpcdFx0c2VsZWN0IEhBVkVfS1ZNX0lSUV9ST1VUSU5HXG4gIDI1Olx0XHRzZWxlY3QgSEFWRV9LVk1fSVJRQ0hJUFxuICAyNjpcdFx0c2VsZWN0IEhBVkVfS1ZNX01TSVxuICAyNzpcdFx0c2VsZWN0IEhBVkVfS1ZNX1JFQURPTkxZX01FTVxuICAyODpcdFx0c2VsZWN0IEtWTV9DT01NT05cbiAgMjk6XHRcdHNlbGVjdCBLVk1fR0VORVJJQ19ESVJUWUxPR19SRUFEX1BST1RFQ1RcbiAgMzA6XHRcdHNlbGVjdCBLVk1fR0VORVJJQ19IQVJEV0FSRV9FTkFCTElOR1xuICAzMTpcdFx0c2VsZWN0IEtWTV9NTUlPXG4gIDMyOlx0XHRzZWxlY3QgVklSVF9YRkVSX1RPX0dVRVNUX1dPUktcbiAgMzM6XHRcdHNlbGVjdCBTQ0hFRF9JTkZPXG4gIDM0Olx0XHRzZWxlY3QgR1VFU1RfUEVSRl9FVkVOVFMgaWYgUEVSRl9FVkVOVFNcbiAgMzU6XHRcdGhlbHBcbiAgMzY6XHRcdCAgU3VwcG9ydCBob3N0aW5nIHZpcnR1YWxpemVkIGd1ZXN0IG1hY2hpbmVzIHVzaW5nXG4gIDM3Olx0XHQgIGhhcmR3YXJlIHZpcnR1YWxpemF0aW9uIGV4dGVuc2lvbnMuIFlvdSB3aWxsIG5lZWRcbiAgMzg6XHRcdCAgYSBwcm9jZXNzb3IgZXF1aXBwZWQgd2l0aCB2aXJ0dWFsaXphdGlvbiBleHRlbnNpb25zLlxuICAzOTpcdFxuICA0MDpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuICA0MTpcdFxuICA0MjpcdGVuZGlmICMgVklSVFVBTElaQVRJT05cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMTU6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzM5MgoJCQkJCQkJb3V0cHV0OiAxMTgKCQkJCQkJCXRob3VnaHRzOiAxMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgRnV6emluZyBTdHJhdGVneSBmb3IgTG9vbmdBcmNoIEtWTSBDU1IgSU8qKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJJiMzOTttIGZvY3VzaW5nIG9uIGZ1enppbmcgdGhlIG5ldyBMb29uZ0FyY2ggS1ZNIENTUiBnZXQvc2V0IGZ1bmN0aW9uYWxpdHkuIFRoZSBrZXkgaGVyZSBpcyB0aGUgaW50cm9kdWN0aW9uIG9mIHRoZXNlIG5ldyBgaW9jdGxzYCwgYEtWTV9MT09OR0FSQ0hfR0VUX0NTUmAgYW5kIGBLVk1fTE9PTkdBUkNIX1NFVF9DU1JgLiBUaGV5JiMzOTtyZSBleHBvc2VkIHRvIHVzZXJzcGFjZSwgd2hpY2ggaW1tZWRpYXRlbHkgZmxhZ3MgdGhlbSBhcyBoaWdoLXByaW9yaXR5IHRhcmdldHMgZm9yIHZ1bG5lcmFiaWxpdHkgcmVzZWFyY2guIEdpdmVuIHRoYXQsIEkgd2lsbCBjb25maWd1cmUgdGhlIGZ1enplciB0byBob25lIGluIG9uIHRoZW0uCgpJJiMzOTtsbCBzdGFydCBieSBtYWtpbmcgc3VyZSB0aGUgZnV6emluZyBwcm9jZXNzIGlzIGV2ZW4gZW5hYmxlZCBmb3IgdGhpcyBmZWF0dXJlLCBzbyBJIHdpbGwgc2V0IGBXb3J0aEZ1enppbmdgIHRvIGB0cnVlYC4gVGhlbiwgSSBuZWVkIHRvIHRlbGwgdGhlIGZ1enplciBwcmVjaXNlbHkgd2hlcmUgdG8gZGlyZWN0IGl0cyBlZmZvcnRzLiBJJiMzOTtsbCBzZXQgYEZvY3VzU3ltYm9sc2AgdG8gZXhwbGljaXRseSBpbmNsdWRlIGAmIzM0O2t2bV9sb29uZ2FyY2hfY3NyX2lvJiMzNDtgLiBUaGF0IGZ1bmN0aW9uLCBvciBtb3JlIHByZWNpc2VseSB0aGUgZnVuY3Rpb25zIGl0IHdpbGwgY2FsbCwgaXMgd2hlcmUgdGhlIGJ1bGsgb2YgdGhlIGdldC9zZXQgbG9naWMgcmVzaWRlcywgYW5kIHRoYXQmIzM5O3Mgd2hlcmUgSSBuZWVkIHRoZSBmdXp6aW5nIGNhbXBhaWduIHRvIGJlIGNvbmNlbnRyYXRlZC4KCk9mIGNvdXJzZSwgdG8gZXZlbiB0ZXN0IHRoZSByZWxldmFudCBuZXcgZnVuY3Rpb25hbGl0eSwgSSYjMzk7bGwgbmVlZCB0byBlbmFibGUgdGhlIHN1cHBvcnRpbmcgY29uZmlndXJhdGlvbnMuIFRoZSB0YXJnZXQgaGVyZSBpcyBLVk0gb24gTG9vbmdBcmNoLCBzbyBJJiMzOTtsbCBzZXQgdGhlIGBFbmFibGVDb25maWdzYCB0byBpbmNsdWRlIGAmIzM0O0tWTSYjMzQ7YCBhbmQgYCYjMzQ7VklSVFVBTElaQVRJT04mIzM0O2AuCgpNeSByZWFzb25pbmcgaGVyZSBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiB0aGlzIHBhdGNoIGludHJvZHVjZXMgbmV3LCB1c2Vyc3BhY2UtYWNjZXNzaWJsZSBgaW9jdGxzYCBkZXNpZ25lZCBmb3IgYnVsayBDU1IgbWFuaXB1bGF0aW9uIHdpdGhpbiBMb29uZ0FyY2ggS1ZNLiAgR2l2ZW4gdGhlIHBvdGVudGlhbCBmb3IgbWVtb3J5IHNhZmV0eSBpc3N1ZXMgYW5kIHRoZSBhYnNvbHV0ZSBuZWVkIGZvciByb2J1c3QgYm91bmRzIGNoZWNraW5nIHdoZW4gZGVhbGluZyB3aXRoIHByaXZpbGVnZWQgb3BlcmF0aW9ucywgcmlnb3JvdXMgZnV6emluZyBpcyBlc3NlbnRpYWwuIFRoZXNlIGlvY3RscyBhcmUgdGhlIGVudHJ5IHBvaW50cywgYW5kIEkmIzM5O20gc2V0dGluZyB0aGUgZnV6emVyIHRvIGV4cGxvcmUgdGhlbSB0aG9yb3VnaGx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAxNTo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDssCiAgICAmIzM0O1ZJUlRVQUxJWkFUSU9OJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX2xvb25nYXJjaF9jc3JfaW8mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGlzIHBhdGNoIGFkZHMgYnVsayBDU1IgZ2V0L3NldCBmdW5jdGlvbmFsaXR5IGZvciBMb29uZ0FyY2ggS1ZNIHZpYSBuZXcgaW9jdGxzIChLVk1fTE9PTkdBUkNIX0dFVF9DU1IgYW5kIEtWTV9MT09OR0FSQ0hfU0VUX0NTUikuIFRoZXNlIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG1lbW9yeSBzYWZldHkgYW5kIGNvcnJlY3QgYm91bmRzIGNoZWNraW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OywKICAgICYjMzQ7VklSVFVBTElaQVRJT04mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1fbG9vbmdhcmNoX2Nzcl9pbyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoaXMgcGF0Y2ggYWRkcyBidWxrIENTUiBnZXQvc2V0IGZ1bmN0aW9uYWxpdHkgZm9yIExvb25nQXJjaCBLVk0gdmlhIG5ldyBpb2N0bHMgKEtWTV9MT09OR0FSQ0hfR0VUX0NTUiBhbmQgS1ZNX0xPT05HQVJDSF9TRVRfQ1NSKS4gVGhlc2UgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbWVtb3J5IHNhZmV0eSBhbmQgY29ycmVjdCBib3VuZHMgY2hlY2tpbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yM1QxNTo1Njo1MC40OTkzMzc1NjVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzY4NzA0Nzg0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIixcbiAgICBcIlZJUlRVQUxJWkFUSU9OXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX2xvb25nYXJjaF9jc3JfaW9cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoaXMgcGF0Y2ggYWRkcyBidWxrIENTUiBnZXQvc2V0IGZ1bmN0aW9uYWxpdHkgZm9yIExvb25nQXJjaCBLVk0gdmlhIG5ldyBpb2N0bHMgKEtWTV9MT09OR0FSQ0hfR0VUX0NTUiBhbmQgS1ZNX0xPT05HQVJDSF9TRVRfQ1NSKS4gVGhlc2UgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbWVtb3J5IHNhZmV0eSBhbmQgY29ycmVjdCBib3VuZHMgY2hlY2tpbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDE1OjU2OjUwLjQ5OTM0NDMzNVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDI2OTUzODMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZTcwOTllMGY0NjJmYWVkYzJiMTVhNzkzODA5MWQ4ZDAxNDY5ODJmYVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEp1bCAyMyAxNTo1Njo0OSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oIGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxcbmluZGV4IDIzY2ZiZWNlYmJkNzlhLi5hYWNmNWQ4NDIxN2YyOCAxMDA2NDRcXG4tLS0gYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXFxuKysrIGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxcbkBAIC0zNjIsNyArMzYyLDcgQEAgZXh0ZXJuIHN0cnVjdCBrdm1fd29ybGRfc3dpdGNoICprdm1fbG9vbmdhcmNoX29wcztcXG4gI2RlZmluZSBIV19HQ1NSXFx0XFx0KDEgXFx1MDAzY1xcdTAwM2MgMSlcXG4gI2RlZmluZSBJTlZBTElEX0dDU1JcXHQoMSBcXHUwMDNjXFx1MDAzYyAyKVxcbiBcXG4taW50IGdldF9nY3NyX2ZsYWcoaW50IGNzcik7XFxuK2ludCBnZXRfZ2Nzcl9mbGFnKHVuc2lnbmVkIGludCBjc3IpO1xcbiB2b2lkIHNldF9od19nY3NyKGludCBjc3JfaWQsIHVuc2lnbmVkIGxvbmcgdmFsKTtcXG4gXFxuICNlbmRpZiAvKiBfX0FTTV9MT09OR0FSQ0hfS1ZNX0hPU1RfSF9fICovXFxuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvdWFwaS9hc20va3ZtLmggYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oXFxuaW5kZXggY2QwYjVjMTFjYTljMmIuLjU5YjNiN2VmYTAzOTdlIDEwMDY0NFxcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvdWFwaS9hc20va3ZtLmhcXG4rKysgYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oXFxuQEAgLTEyNyw2ICsxMjcsMTkgQEAgc3RydWN0IGt2bV9zeW5jX3JlZ3Mge1xcbiBzdHJ1Y3Qga3ZtX3NyZWdzIHtcXG4gfTtcXG4gXFxuKy8qIGJ1bGsgQ1NSIGVudHJpZXMgZm9yIFZNIG1pZ3JhdGlvbiAqL1xcbitzdHJ1Y3Qga3ZtX2xvb25nYXJjaF9jc3JfZW50cnkge1xcbitcXHRfX3UzMiBpbmRleDtcXG4rXFx0X191MzIgcmVzZXJ2ZWQ7XFxuK1xcdF9fdTY0IGRhdGE7XFxuK307XFxuK1xcbitzdHJ1Y3Qga3ZtX2xvb25nYXJjaF9jc3JzIHtcXG4rXFx0X191MzIgbmNzcnM7XFx0LyogbnVtYmVyIG9mIGNzciBlbnRyaWVzICovXFxuK1xcdF9fdTMyIHBhZDtcXG4rXFx0X19ERUNMQVJFX0ZMRVhfQVJSQVkoc3RydWN0IGt2bV9sb29uZ2FyY2hfY3NyX2VudHJ5LCBlbnRyaWVzKTtcXG4rfTtcXG4rXFxuIHN0cnVjdCBrdm1faW9jc3JfZW50cnkge1xcbiBcXHRfX3UzMiBhZGRyO1xcbiBcXHRfX3UzMiBwYWQ7XFxuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmMgYi9hcmNoL2xvb25nYXJjaC9rdm0vbWFpbi5jXFxuaW5kZXggM2UxMDA1NTI2ZjRiZDYuLmQ4MDJkMzkzY2Q0NGQ4IDEwMDY0NFxcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmNcXG4rKysgYi9hcmNoL2xvb25nYXJjaC9rdm0vbWFpbi5jXFxuQEAgLTE5LDcgKzE5LDcgQEAgc3RydWN0IGt2bV93b3JsZF9zd2l0Y2ggKmt2bV9sb29uZ2FyY2hfb3BzO1xcbiBzdGF0aWMgaW50IGdjc3JfZmxhZ1tDU1JfTUFYX05VTVNdO1xcbiBzdGF0aWMgc3RydWN0IGt2bV9jb250ZXh0IF9fcGVyY3B1ICp2bWNzO1xcbiBcXG4taW50IGdldF9nY3NyX2ZsYWcoaW50IGNzcilcXG4raW50IGdldF9nY3NyX2ZsYWcodW5zaWduZWQgaW50IGNzcilcXG4ge1xcbiBcXHRpZiAoY3NyIFxcdTAwM2MgQ1NSX01BWF9OVU1TKVxcbiBcXHRcXHRyZXR1cm4gZ2Nzcl9mbGFnW2Nzcl07XFxuQEAgLTI3LDEzICsyNywxMyBAQCBpbnQgZ2V0X2djc3JfZmxhZyhpbnQgY3NyKVxcbiBcXHRyZXR1cm4gSU5WQUxJRF9HQ1NSO1xcbiB9XFxuIFxcbi1zdGF0aWMgaW5saW5lIHZvaWQgc2V0X2djc3Jfc3dfZmxhZyhpbnQgY3NyKVxcbitzdGF0aWMgaW5saW5lIHZvaWQgc2V0X2djc3Jfc3dfZmxhZyh1bnNpZ25lZCBpbnQgY3NyKVxcbiB7XFxuIFxcdGlmIChjc3IgXFx1MDAzYyBDU1JfTUFYX05VTVMpXFxuIFxcdFxcdGdjc3JfZmxhZ1tjc3JdIHw9IFNXX0dDU1I7XFxuIH1cXG4gXFxuLXN0YXRpYyBpbmxpbmUgdm9pZCBzZXRfZ2Nzcl9od19mbGFnKGludCBjc3IpXFxuK3N0YXRpYyBpbmxpbmUgdm9pZCBzZXRfZ2Nzcl9od19mbGFnKHVuc2lnbmVkIGludCBjc3IpXFxuIHtcXG4gXFx0aWYgKGNzciBcXHUwMDNjIENTUl9NQVhfTlVNUylcXG4gXFx0XFx0Z2Nzcl9mbGFnW2Nzcl0gfD0gSFdfR0NTUjtcXG5kaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYyBiL2FyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmNcXG5pbmRleCAyMGMyMDdkODBlMzFhZS4uMmJiNmE3ZTBlYTg3NzYgMTAwNjQ0XFxuLS0tIGEvYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuY1xcbisrKyBiL2FyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmNcXG5AQCAtMTAwOSw2ICsxMDA5LDc3IEBAIGludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzXFxuIFxcdHJldHVybiAtRU5PSU9DVExDTUQ7XFxuIH1cXG4gXFxuKy8qIG1heCBDU1IgZW50cmllcyBoYW5kbGVkIHBlciBpb2N0bCAqL1xcbisjZGVmaW5lIEtWTV9MT09OR0FSQ0hfTUFYX0NTUl9SRUdTXFx0MHg0MDBcXG4rXFxuKy8qIEJ1bGsgZ2V0L3NldCBvZiBDU1Igc3RhdGUgZm9yIFZNIG1pZ3JhdGlvbi4gKi9cXG4rc3RhdGljIGludCBrdm1fbG9vbmdhcmNoX2Nzcl9pbyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuK1xcdFxcdFxcdFxcdHN0cnVjdCBrdm1fbG9vbmdhcmNoX2NzcnMgX191c2VyICp1Y3NycyxcXG4rXFx0XFx0XFx0XFx0Ym9vbCB3cml0ZSlcXG4re1xcbitcXHRpbnQgaSwgcmV0ID0gMDtcXG4rXFx0dW5zaWduZWQgbG9uZyBzaXplO1xcbitcXHRzdHJ1Y3Qga3ZtX2xvb25nYXJjaF9jc3JzIGNzcnM7XFxuK1xcdHN0cnVjdCBrdm1fbG9vbmdhcmNoX2Nzcl9lbnRyeSAqZW50cmllcztcXG4rXFx0c3RydWN0IGxvb25nYXJjaF9jc3JzICpjc3IgPSB2Y3B1LVxcdTAwM2VhcmNoLmNzcjtcXG4rXFxuK1xcdGlmIChjb3B5X2Zyb21fdXNlcihcXHUwMDI2Y3NycywgdWNzcnMsIHNpemVvZihjc3JzKSkpXFxuK1xcdFxcdHJldHVybiAtRUZBVUxUO1xcbitcXG4rXFx0aWYgKGNzcnMucGFkKVxcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFxuK1xcdGlmIChjc3JzLm5jc3JzIFxcdTAwM2UgS1ZNX0xPT05HQVJDSF9NQVhfQ1NSX1JFR1MpXFxuK1xcdFxcdHJldHVybiAtRTJCSUc7XFxuK1xcbitcXHRzaXplID0gYXJyYXlfc2l6ZShjc3JzLm5jc3JzLCBzaXplb2YoKmVudHJpZXMpKTtcXG4rXFx0ZW50cmllcyA9IG1lbWR1cF91c2VyKHVjc3JzLVxcdTAwM2VlbnRyaWVzLCBzaXplKTtcXG4rXFx0aWYgKElTX0VSUihlbnRyaWVzKSlcXG4rXFx0XFx0cmV0dXJuIFBUUl9FUlIoZW50cmllcyk7XFxuK1xcbitcXHRpZiAod3JpdGUpIHtcXG4rXFx0XFx0dmNwdS1cXHUwMDNlYXJjaC5hdXhfaW51c2UgXFx1MDAyNj0gfktWTV9MQVJDSF9IV0NTUl9VU0FCTEU7XFxuK1xcdH0gZWxzZSB7XFxuK1xcdFxcdHByZWVtcHRfZGlzYWJsZSgpO1xcbitcXHRcXHR2Y3B1X2xvYWQodmNwdSk7XFxuK1xcdFxcdGt2bV9kZWxpdmVyX2ludHIodmNwdSk7XFxuK1xcdFxcdHZjcHUtXFx1MDAzZWFyY2guYXV4X2ludXNlIFxcdTAwMjY9IH5LVk1fTEFSQ0hfU1dDU1JfTEFURVNUO1xcbitcXHRcXHR2Y3B1X3B1dCh2Y3B1KTtcXG4rXFx0XFx0cHJlZW1wdF9lbmFibGUoKTtcXG4rXFx0fVxcbitcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGNzcnMubmNzcnM7IGkrKykge1xcbitcXHRcXHR1bnNpZ25lZCBpbnQgaWQgPSBlbnRyaWVzW2ldLmluZGV4O1xcbitcXG4rXFx0XFx0aWYgKGVudHJpZXNbaV0ucmVzZXJ2ZWQgfHwgaWQgXFx1MDAzZT0gQ1NSX01BWF9OVU1TIHx8XFxuK1xcdFxcdCAgICAoZ2V0X2djc3JfZmxhZyhpZCkgXFx1MDAyNiBJTlZBTElEX0dDU1IpKSB7XFxuK1xcdFxcdFxcdHJldCA9IC1FSU5WQUw7XFxuK1xcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHR9XFxuK1xcbitcXHRcXHRpZiAod3JpdGUpIHtcXG4rXFx0XFx0XFx0cmV0ID0gX2t2bV9zZXRjc3IodmNwdSwgaWQsIGVudHJpZXNbaV0uZGF0YSk7XFxuK1xcdFxcdFxcdGlmIChyZXQpXFxuK1xcdFxcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHR9IGVsc2UgaWYgKGlkID09IExPT05HQVJDSF9DU1JfRVNUQVQpIHtcXG4rXFx0XFx0XFx0dW5zaWduZWQgbG9uZyBlc3RhdCwgZ2ludGM7XFxuK1xcbitcXHRcXHRcXHQvKiBFU1RBVCBJUDB+SVA3IGNvbWUgZnJvbSBHSU5UQyAqL1xcbitcXHRcXHRcXHRnaW50YyA9IGt2bV9yZWFkX3N3X2djc3IoY3NyLCBMT09OR0FSQ0hfQ1NSX0dJTlRDKSBcXHUwMDI2IEtWTV9HSU5UQ19JUlFfTUFTSztcXG4rXFx0XFx0XFx0ZXN0YXQgPSBrdm1fcmVhZF9zd19nY3NyKGNzciwgTE9PTkdBUkNIX0NTUl9FU1RBVCkgXFx1MDAyNiB+S1ZNX0VTVEFUX0VYVElfTUFTSztcXG4rXFx0XFx0XFx0ZW50cmllc1tpXS5kYXRhID0gZXN0YXQgfCAoZ2ludGMgXFx1MDAzY1xcdTAwM2MgVklQX0RFTFRBKTtcXG4rXFx0XFx0fSBlbHNlIHtcXG4rXFx0XFx0XFx0ZW50cmllc1tpXS5kYXRhID0ga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIGlkKTtcXG4rXFx0XFx0fVxcbitcXHR9XFxuK1xcbitcXHRpZiAoIXdyaXRlIFxcdTAwMjZcXHUwMDI2IGNvcHlfdG9fdXNlcih1Y3Nycy1cXHUwMDNlZW50cmllcywgZW50cmllcywgc2l6ZSkpXFxuK1xcdFxcdHJldCA9IC1FRkFVTFQ7XFxuK1xcbitcXHRrZnJlZShlbnRyaWVzKTtcXG4rXFx0cmV0dXJuIHJldDtcXG4rfVxcbitcXG4gaW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3JlZ3MgKnJlZ3MpXFxuIHtcXG4gXFx0aW50IGk7XFxuQEAgLTEyNjYsNiArMTMzNywxMiBAQCBsb25nIGt2bV9hcmNoX3ZjcHVfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsXFxuIFxcdFxcdFxcdHIgPSBrdm1fZ2V0X3JlZyh2Y3B1LCBcXHUwMDI2cmVnKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdH1cXG4rXFx0Y2FzZSBLVk1fTE9PTkdBUkNIX0dFVF9DU1I6XFxuK1xcdFxcdHIgPSBrdm1fbG9vbmdhcmNoX2Nzcl9pbyh2Y3B1LCBhcmdwLCBmYWxzZSk7XFxuK1xcdFxcdGJyZWFrO1xcbitcXHRjYXNlIEtWTV9MT09OR0FSQ0hfU0VUX0NTUjpcXG4rXFx0XFx0ciA9IGt2bV9sb29uZ2FyY2hfY3NyX2lvKHZjcHUsIGFyZ3AsIHRydWUpO1xcbitcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBLVk1fRU5BQkxFX0NBUDoge1xcbiBcXHRcXHRzdHJ1Y3Qga3ZtX2VuYWJsZV9jYXAgY2FwO1xcbiBcXG5kaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gva3ZtL3ZtLmMgYi9hcmNoL2xvb25nYXJjaC9rdm0vdm0uY1xcbmluZGV4IDEzMTdjNzE4Zjg5NmFmLi43ODVmMmZhMGQxNjQyZCAxMDA2NDRcXG4tLS0gYS9hcmNoL2xvb25nYXJjaC9rdm0vdm0uY1xcbisrKyBiL2FyY2gvbG9vbmdhcmNoL2t2bS92bS5jXFxuQEAgLTEyMiw2ICsxMjIsNyBAQCBpbnQga3ZtX3ZtX2lvY3RsX2NoZWNrX2V4dGVuc2lvbihzdHJ1Y3Qga3ZtICprdm0sIGxvbmcgZXh0KVxcbiBcXHRjYXNlIEtWTV9DQVBfSU9FVkVOVEZEOlxcbiBcXHRjYXNlIEtWTV9DQVBfTVBfU1RBVEU6XFxuIFxcdGNhc2UgS1ZNX0NBUF9TRVRfR1VFU1RfREVCVUc6XFxuK1xcdGNhc2UgS1ZNX0NBUF9MT09OR0FSQ0hfQ1NSOlxcbiBcXHRcXHRyID0gMTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgS1ZNX0NBUF9OUl9WQ1BVUzpcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L2t2bS5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L2t2bS5oXFxuaW5kZXggNDE5MDExMDk3ZmE4ZTIuLjQ1ZDllYjA2Y2I4YWM1IDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9rdm0uaFxcbisrKyBiL2luY2x1ZGUvdWFwaS9saW51eC9rdm0uaFxcbkBAIC05OTcsNiArOTk3LDcgQEAgc3RydWN0IGt2bV9lbmFibGVfY2FwIHtcXG4gI2RlZmluZSBLVk1fQ0FQX1MzOTBfS0VZT1AgMjQ3XFxuICNkZWZpbmUgS1ZNX0NBUF9TMzkwX1ZTSUVfRVNBTU9ERSAyNDhcXG4gI2RlZmluZSBLVk1fQ0FQX1MzOTBfSFBBR0VfMkcgMjQ5XFxuKyNkZWZpbmUgS1ZNX0NBUF9MT09OR0FSQ0hfQ1NSXFx0MjUwXFxuIFxcbiBzdHJ1Y3Qga3ZtX2lycV9yb3V0aW5nX2lycWNoaXAge1xcbiBcXHRfX3UzMiBpcnFjaGlwO1xcbkBAIC0xNjcwLDQgKzE2NzEsOCBAQCBzdHJ1Y3Qga3ZtX3ByZV9mYXVsdF9tZW1vcnkge1xcbiBcXHRfX3U2NCBwYWRkaW5nWzVdO1xcbiB9O1xcbiBcXG4rLyogTG9vbmdBcmNoOiBidWxrIENTUiBnZXQvc2V0IGZvciBtaWdyYXRpb24gKi9cXG4rI2RlZmluZSBLVk1fTE9PTkdBUkNIX0dFVF9DU1JcXHRfSU9XUihLVk1JTywgMHhkNiwgc3RydWN0IGt2bV9sb29uZ2FyY2hfY3NycylcXG4rI2RlZmluZSBLVk1fTE9PTkdBUkNIX1NFVF9DU1JcXHRfSU9XKEtWTUlPLCAgMHhkNywgc3RydWN0IGt2bV9sb29uZ2FyY2hfY3NycylcXG4rXFxuICNlbmRpZiAvKiBfX0xJTlVYX0tWTV9IICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDE1OjU2OjUwLjkyNjk1MDMwN1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjQzMjU5NDI2NDIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiLFxuICAgIFwiVklSVFVBTElaQVRJT05cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrdm1fbG9vbmdhcmNoX2Nzcl9pb1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhpcyBwYXRjaCBhZGRzIGJ1bGsgQ1NSIGdldC9zZXQgZnVuY3Rpb25hbGl0eSBmb3IgTG9vbmdBcmNoIEtWTSB2aWEgbmV3IGlvY3RscyAoS1ZNX0xPT05HQVJDSF9HRVRfQ1NSIGFuZCBLVk1fTE9PTkdBUkNIX1NFVF9DU1IpLiBUaGVzZSBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBtZW1vcnkgc2FmZXR5IGFuZCBjb3JyZWN0IGJvdW5kcyBjaGVja2luZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBlNzA5OWUwZjQ2MmZhZWRjMmIxNWE3OTM4MDkxZDhkMDE0Njk4MmZhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMjMgMTU6NTY6NDkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oIGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxuaW5kZXggMjNjZmJlY2ViYmQ3OWEuLmFhY2Y1ZDg0MjE3ZjI4IDEwMDY0NFxuLS0tIGEvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxuKysrIGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxuQEAgLTM2Miw3ICszNjIsNyBAQCBleHRlcm4gc3RydWN0IGt2bV93b3JsZF9zd2l0Y2ggKmt2bV9sb29uZ2FyY2hfb3BzO1xuICNkZWZpbmUgSFdfR0NTUlx0XHQoMSBcdTAwM2NcdTAwM2MgMSlcbiAjZGVmaW5lIElOVkFMSURfR0NTUlx0KDEgXHUwMDNjXHUwMDNjIDIpXG4gXG4taW50IGdldF9nY3NyX2ZsYWcoaW50IGNzcik7XG4raW50IGdldF9nY3NyX2ZsYWcodW5zaWduZWQgaW50IGNzcik7XG4gdm9pZCBzZXRfaHdfZ2NzcihpbnQgY3NyX2lkLCB1bnNpZ25lZCBsb25nIHZhbCk7XG4gXG4gI2VuZGlmIC8qIF9fQVNNX0xPT05HQVJDSF9LVk1fSE9TVF9IX18gKi9cbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oIGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS91YXBpL2FzbS9rdm0uaFxuaW5kZXggY2QwYjVjMTFjYTljMmIuLjU5YjNiN2VmYTAzOTdlIDEwMDY0NFxuLS0tIGEvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS91YXBpL2FzbS9rdm0uaFxuKysrIGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS91YXBpL2FzbS9rdm0uaFxuQEAgLTEyNyw2ICsxMjcsMTkgQEAgc3RydWN0IGt2bV9zeW5jX3JlZ3Mge1xuIHN0cnVjdCBrdm1fc3JlZ3Mge1xuIH07XG4gXG4rLyogYnVsayBDU1IgZW50cmllcyBmb3IgVk0gbWlncmF0aW9uICovXG4rc3RydWN0IGt2bV9sb29uZ2FyY2hfY3NyX2VudHJ5IHtcbitcdF9fdTMyIGluZGV4O1xuK1x0X191MzIgcmVzZXJ2ZWQ7XG4rXHRfX3U2NCBkYXRhO1xuK307XG4rXG4rc3RydWN0IGt2bV9sb29uZ2FyY2hfY3NycyB7XG4rXHRfX3UzMiBuY3NycztcdC8qIG51bWJlciBvZiBjc3IgZW50cmllcyAqL1xuK1x0X191MzIgcGFkO1xuK1x0X19ERUNMQVJFX0ZMRVhfQVJSQVkoc3RydWN0IGt2bV9sb29uZ2FyY2hfY3NyX2VudHJ5LCBlbnRyaWVzKTtcbit9O1xuK1xuIHN0cnVjdCBrdm1faW9jc3JfZW50cnkge1xuIFx0X191MzIgYWRkcjtcbiBcdF9fdTMyIHBhZDtcbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9rdm0vbWFpbi5jIGIvYXJjaC9sb29uZ2FyY2gva3ZtL21haW4uY1xuaW5kZXggM2UxMDA1NTI2ZjRiZDYuLmQ4MDJkMzkzY2Q0NGQ4IDEwMDY0NFxuLS0tIGEvYXJjaC9sb29uZ2FyY2gva3ZtL21haW4uY1xuKysrIGIvYXJjaC9sb29uZ2FyY2gva3ZtL21haW4uY1xuQEAgLTE5LDcgKzE5LDcgQEAgc3RydWN0IGt2bV93b3JsZF9zd2l0Y2ggKmt2bV9sb29uZ2FyY2hfb3BzO1xuIHN0YXRpYyBpbnQgZ2Nzcl9mbGFnW0NTUl9NQVhfTlVNU107XG4gc3RhdGljIHN0cnVjdCBrdm1fY29udGV4dCBfX3BlcmNwdSAqdm1jcztcbiBcbi1pbnQgZ2V0X2djc3JfZmxhZyhpbnQgY3NyKVxuK2ludCBnZXRfZ2Nzcl9mbGFnKHVuc2lnbmVkIGludCBjc3IpXG4ge1xuIFx0aWYgKGNzciBcdTAwM2MgQ1NSX01BWF9OVU1TKVxuIFx0XHRyZXR1cm4gZ2Nzcl9mbGFnW2Nzcl07XG5AQCAtMjcsMTMgKzI3LDEzIEBAIGludCBnZXRfZ2Nzcl9mbGFnKGludCBjc3IpXG4gXHRyZXR1cm4gSU5WQUxJRF9HQ1NSO1xuIH1cbiBcbi1zdGF0aWMgaW5saW5lIHZvaWQgc2V0X2djc3Jfc3dfZmxhZyhpbnQgY3NyKVxuK3N0YXRpYyBpbmxpbmUgdm9pZCBzZXRfZ2Nzcl9zd19mbGFnKHVuc2lnbmVkIGludCBjc3IpXG4ge1xuIFx0aWYgKGNzciBcdTAwM2MgQ1NSX01BWF9OVU1TKVxuIFx0XHRnY3NyX2ZsYWdbY3NyXSB8PSBTV19HQ1NSO1xuIH1cbiBcbi1zdGF0aWMgaW5saW5lIHZvaWQgc2V0X2djc3JfaHdfZmxhZyhpbnQgY3NyKVxuK3N0YXRpYyBpbmxpbmUgdm9pZCBzZXRfZ2Nzcl9od19mbGFnKHVuc2lnbmVkIGludCBjc3IpXG4ge1xuIFx0aWYgKGNzciBcdTAwM2MgQ1NSX01BWF9OVU1TKVxuIFx0XHRnY3NyX2ZsYWdbY3NyXSB8PSBIV19HQ1NSO1xuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMgYi9hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jXG5pbmRleCAyMGMyMDdkODBlMzFhZS4uMmJiNmE3ZTBlYTg3NzYgMTAwNjQ0XG4tLS0gYS9hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jXG4rKysgYi9hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jXG5AQCAtMTAwOSw2ICsxMDA5LDc3IEBAIGludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzXG4gXHRyZXR1cm4gLUVOT0lPQ1RMQ01EO1xuIH1cbiBcbisvKiBtYXggQ1NSIGVudHJpZXMgaGFuZGxlZCBwZXIgaW9jdGwgKi9cbisjZGVmaW5lIEtWTV9MT09OR0FSQ0hfTUFYX0NTUl9SRUdTXHQweDQwMFxuK1xuKy8qIEJ1bGsgZ2V0L3NldCBvZiBDU1Igc3RhdGUgZm9yIFZNIG1pZ3JhdGlvbi4gKi9cbitzdGF0aWMgaW50IGt2bV9sb29uZ2FyY2hfY3NyX2lvKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbitcdFx0XHRcdHN0cnVjdCBrdm1fbG9vbmdhcmNoX2NzcnMgX191c2VyICp1Y3NycyxcbitcdFx0XHRcdGJvb2wgd3JpdGUpXG4re1xuK1x0aW50IGksIHJldCA9IDA7XG4rXHR1bnNpZ25lZCBsb25nIHNpemU7XG4rXHRzdHJ1Y3Qga3ZtX2xvb25nYXJjaF9jc3JzIGNzcnM7XG4rXHRzdHJ1Y3Qga3ZtX2xvb25nYXJjaF9jc3JfZW50cnkgKmVudHJpZXM7XG4rXHRzdHJ1Y3QgbG9vbmdhcmNoX2NzcnMgKmNzciA9IHZjcHUtXHUwMDNlYXJjaC5jc3I7XG4rXG4rXHRpZiAoY29weV9mcm9tX3VzZXIoXHUwMDI2Y3NycywgdWNzcnMsIHNpemVvZihjc3JzKSkpXG4rXHRcdHJldHVybiAtRUZBVUxUO1xuK1xuK1x0aWYgKGNzcnMucGFkKVxuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcbitcdGlmIChjc3JzLm5jc3JzIFx1MDAzZSBLVk1fTE9PTkdBUkNIX01BWF9DU1JfUkVHUylcbitcdFx0cmV0dXJuIC1FMkJJRztcbitcbitcdHNpemUgPSBhcnJheV9zaXplKGNzcnMubmNzcnMsIHNpemVvZigqZW50cmllcykpO1xuK1x0ZW50cmllcyA9IG1lbWR1cF91c2VyKHVjc3JzLVx1MDAzZWVudHJpZXMsIHNpemUpO1xuK1x0aWYgKElTX0VSUihlbnRyaWVzKSlcbitcdFx0cmV0dXJuIFBUUl9FUlIoZW50cmllcyk7XG4rXG4rXHRpZiAod3JpdGUpIHtcbitcdFx0dmNwdS1cdTAwM2VhcmNoLmF1eF9pbnVzZSBcdTAwMjY9IH5LVk1fTEFSQ0hfSFdDU1JfVVNBQkxFO1xuK1x0fSBlbHNlIHtcbitcdFx0cHJlZW1wdF9kaXNhYmxlKCk7XG4rXHRcdHZjcHVfbG9hZCh2Y3B1KTtcbitcdFx0a3ZtX2RlbGl2ZXJfaW50cih2Y3B1KTtcbitcdFx0dmNwdS1cdTAwM2VhcmNoLmF1eF9pbnVzZSBcdTAwMjY9IH5LVk1fTEFSQ0hfU1dDU1JfTEFURVNUO1xuK1x0XHR2Y3B1X3B1dCh2Y3B1KTtcbitcdFx0cHJlZW1wdF9lbmFibGUoKTtcbitcdH1cbitcbitcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGNzcnMubmNzcnM7IGkrKykge1xuK1x0XHR1bnNpZ25lZCBpbnQgaWQgPSBlbnRyaWVzW2ldLmluZGV4O1xuK1xuK1x0XHRpZiAoZW50cmllc1tpXS5yZXNlcnZlZCB8fCBpZCBcdTAwM2U9IENTUl9NQVhfTlVNUyB8fFxuK1x0XHQgICAgKGdldF9nY3NyX2ZsYWcoaWQpIFx1MDAyNiBJTlZBTElEX0dDU1IpKSB7XG4rXHRcdFx0cmV0ID0gLUVJTlZBTDtcbitcdFx0XHRicmVhaztcbitcdFx0fVxuK1xuK1x0XHRpZiAod3JpdGUpIHtcbitcdFx0XHRyZXQgPSBfa3ZtX3NldGNzcih2Y3B1LCBpZCwgZW50cmllc1tpXS5kYXRhKTtcbitcdFx0XHRpZiAocmV0KVxuK1x0XHRcdFx0YnJlYWs7XG4rXHRcdH0gZWxzZSBpZiAoaWQgPT0gTE9PTkdBUkNIX0NTUl9FU1RBVCkge1xuK1x0XHRcdHVuc2lnbmVkIGxvbmcgZXN0YXQsIGdpbnRjO1xuK1xuK1x0XHRcdC8qIEVTVEFUIElQMH5JUDcgY29tZSBmcm9tIEdJTlRDICovXG4rXHRcdFx0Z2ludGMgPSBrdm1fcmVhZF9zd19nY3NyKGNzciwgTE9PTkdBUkNIX0NTUl9HSU5UQykgXHUwMDI2IEtWTV9HSU5UQ19JUlFfTUFTSztcbitcdFx0XHRlc3RhdCA9IGt2bV9yZWFkX3N3X2djc3IoY3NyLCBMT09OR0FSQ0hfQ1NSX0VTVEFUKSBcdTAwMjYgfktWTV9FU1RBVF9FWFRJX01BU0s7XG4rXHRcdFx0ZW50cmllc1tpXS5kYXRhID0gZXN0YXQgfCAoZ2ludGMgXHUwMDNjXHUwMDNjIFZJUF9ERUxUQSk7XG4rXHRcdH0gZWxzZSB7XG4rXHRcdFx0ZW50cmllc1tpXS5kYXRhID0ga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIGlkKTtcbitcdFx0fVxuK1x0fVxuK1xuK1x0aWYgKCF3cml0ZSBcdTAwMjZcdTAwMjYgY29weV90b191c2VyKHVjc3JzLVx1MDAzZWVudHJpZXMsIGVudHJpZXMsIHNpemUpKVxuK1x0XHRyZXQgPSAtRUZBVUxUO1xuK1xuK1x0a2ZyZWUoZW50cmllcyk7XG4rXHRyZXR1cm4gcmV0O1xuK31cbitcbiBpbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcmVncyAqcmVncylcbiB7XG4gXHRpbnQgaTtcbkBAIC0xMjY2LDYgKzEzMzcsMTIgQEAgbG9uZyBrdm1fYXJjaF92Y3B1X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLFxuIFx0XHRcdHIgPSBrdm1fZ2V0X3JlZyh2Y3B1LCBcdTAwMjZyZWcpO1xuIFx0XHRicmVhaztcbiBcdH1cbitcdGNhc2UgS1ZNX0xPT05HQVJDSF9HRVRfQ1NSOlxuK1x0XHRyID0ga3ZtX2xvb25nYXJjaF9jc3JfaW8odmNwdSwgYXJncCwgZmFsc2UpO1xuK1x0XHRicmVhaztcbitcdGNhc2UgS1ZNX0xPT05HQVJDSF9TRVRfQ1NSOlxuK1x0XHRyID0ga3ZtX2xvb25nYXJjaF9jc3JfaW8odmNwdSwgYXJncCwgdHJ1ZSk7XG4rXHRcdGJyZWFrO1xuIFx0Y2FzZSBLVk1fRU5BQkxFX0NBUDoge1xuIFx0XHRzdHJ1Y3Qga3ZtX2VuYWJsZV9jYXAgY2FwO1xuIFxuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2t2bS92bS5jIGIvYXJjaC9sb29uZ2FyY2gva3ZtL3ZtLmNcbmluZGV4IDEzMTdjNzE4Zjg5NmFmLi43ODVmMmZhMGQxNjQyZCAxMDA2NDRcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL2t2bS92bS5jXG4rKysgYi9hcmNoL2xvb25nYXJjaC9rdm0vdm0uY1xuQEAgLTEyMiw2ICsxMjIsNyBAQCBpbnQga3ZtX3ZtX2lvY3RsX2NoZWNrX2V4dGVuc2lvbihzdHJ1Y3Qga3ZtICprdm0sIGxvbmcgZXh0KVxuIFx0Y2FzZSBLVk1fQ0FQX0lPRVZFTlRGRDpcbiBcdGNhc2UgS1ZNX0NBUF9NUF9TVEFURTpcbiBcdGNhc2UgS1ZNX0NBUF9TRVRfR1VFU1RfREVCVUc6XG4rXHRjYXNlIEtWTV9DQVBfTE9PTkdBUkNIX0NTUjpcbiBcdFx0ciA9IDE7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBLVk1fQ0FQX05SX1ZDUFVTOlxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC9rdm0uaCBiL2luY2x1ZGUvdWFwaS9saW51eC9rdm0uaFxuaW5kZXggNDE5MDExMDk3ZmE4ZTIuLjQ1ZDllYjA2Y2I4YWM1IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L2t2bS5oXG4rKysgYi9pbmNsdWRlL3VhcGkvbGludXgva3ZtLmhcbkBAIC05OTcsNiArOTk3LDcgQEAgc3RydWN0IGt2bV9lbmFibGVfY2FwIHtcbiAjZGVmaW5lIEtWTV9DQVBfUzM5MF9LRVlPUCAyNDdcbiAjZGVmaW5lIEtWTV9DQVBfUzM5MF9WU0lFX0VTQU1PREUgMjQ4XG4gI2RlZmluZSBLVk1fQ0FQX1MzOTBfSFBBR0VfMkcgMjQ5XG4rI2RlZmluZSBLVk1fQ0FQX0xPT05HQVJDSF9DU1JcdDI1MFxuIFxuIHN0cnVjdCBrdm1faXJxX3JvdXRpbmdfaXJxY2hpcCB7XG4gXHRfX3UzMiBpcnFjaGlwO1xuQEAgLTE2NzAsNCArMTY3MSw4IEBAIHN0cnVjdCBrdm1fcHJlX2ZhdWx0X21lbW9yeSB7XG4gXHRfX3U2NCBwYWRkaW5nWzVdO1xuIH07XG4gXG4rLyogTG9vbmdBcmNoOiBidWxrIENTUiBnZXQvc2V0IGZvciBtaWdyYXRpb24gKi9cbisjZGVmaW5lIEtWTV9MT09OR0FSQ0hfR0VUX0NTUlx0X0lPV1IoS1ZNSU8sIDB4ZDYsIHN0cnVjdCBrdm1fbG9vbmdhcmNoX2NzcnMpXG4rI2RlZmluZSBLVk1fTE9PTkdBUkNIX1NFVF9DU1JcdF9JT1coS1ZNSU8sICAweGQ3LCBzdHJ1Y3Qga3ZtX2xvb25nYXJjaF9jc3JzKVxuK1xuICNlbmRpZiAvKiBfX0xJTlVYX0tWTV9IICovXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QxNTo1Njo1MC45MjY5NTE1NTdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNTEwNDUzMDU4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipMb29uZ0FyY2ggS1ZNIEJ1bGsgQ1NSIEFjY2VzczogSW5pdGlhbCBBc3Nlc3NtZW50KipcblxuT2theSwgc28gdGhlcmUncyBhIHBhdGNoIGZsb2F0aW5nIGFyb3VuZCwgYW5kIGl0J3MgYWRkaW5nIHNvbWUgbXVjaC1uZWVkZWQgYnVsayBnZXQvc2V0IGZ1bmN0aW9uYWxpdHkgZm9yIENvbnRyb2wgYW5kIFN0YXR1cyBSZWdpc3RlcnMgKENTUnMpIHdpdGhpbiBMb29uZ0FyY2ggS1ZNLiBNeSBpbml0aWFsIHNjYW4gdGVsbHMgbWUgaXQncyB0b3VjaGluZyBgYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuY2AgdG8gYWRkIGBrdm1fbG9vbmdhcmNoX2Nzcl9pb2AsIHdoaWNoIGlzIHRoZSBtZWF0IG9mIHRoZSBpb2N0bCBoYW5kbGluZyBmb3IgYEtWTV9MT09OR0FSQ0hfR0VUX0NTUmAgYW5kIGBLVk1fTE9PTkdBUkNIX1NFVF9DU1JgLiBUaGF04oCZcyB0aGUgY29yZSBvZiB0aGUgbmV3IGZ1bmN0aW9uYWxpdHkgcmlnaHQgdGhlcmUuXG5cbkl0IGFsc28gbWVhbnMgY2hhbmdlcyBpbiBgYXJjaC9sb29uZ2FyY2gva3ZtL3ZtLmNgIHRvIHJlcG9ydCB0aGUgZmVhdHVyZSB3aXRoIHRoZSBgS1ZNX0NBUF9MT09OR0FSQ0hfQ1NSYCBjYXBhYmlsaXR5IOKAkyBtYWtlcyBzZW5zZSwgZ290dGEgYWR2ZXJ0aXNlIHRoZSBuZXcgY2FwYWJpbGl0eS4gQW5kLCBhaCwgYSBwYXJhbWV0ZXIgdHlwZSBjaGFuZ2UgaW4gYGFyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmNgLCBzaGlmdGluZyBgZ2V0X2djc3JfZmxhZ2AgZnJvbSBgaW50YCB0byBgdW5zaWduZWQgaW50YC4gUHJvYmFibHkganVzdCBhIHR5cGUgc2FmZXR5IHRoaW5nIHJlbGF0ZWQgdG8gaG93IHRoZSBmbGFncyBhcmUgdXNlZCBub3cuXG5cbkZ1bmN0aW9uYWxseSwgdGhpcyBpcyBhIGRlZmluaXRlIGVuaGFuY2VtZW50IHRvIHRoZSBLVk0gaW1wbGVtZW50YXRpb24gb24gTG9vbmdBcmNoLiBJdCBzY3JlYW1zIGZvciBmdXp6aW5nIHRvIGVuc3VyZSByb2J1c3RuZXNzIGFuZCB0aGF0IHRoZXJlIGFyZSBubyBoaWRkZW4gaXNzdWVzLiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIGltcGxpY2F0aW9ucyBvZiB0aGlzLiBMZXQgbWUgdHJhY2sgZG93biB0aGUgcmVsZXZhbnQgS2NvbmZpZyBvcHRpb25zLiBUaGUgY29kZSdzIGluIGBhcmNoL2xvb25nYXJjaC9rdm0vYCwgc28gSSdsbCBzdGFydCBieSBjaGVja2luZyBgYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWdgIGFuZCB0aGVuIG1heWJlIGBhcmNoL2xvb25nYXJjaC9LY29uZmlnYCBpZiBJIGRvbid0IGZpbmQgaXQgdGhlcmUuIEkgbmVlZCB0byBrbm93IGhvdyB0aGlzIG5ldyBmZWF0dXJlIGlzIGVuYWJsZWQgYW5kIGRpc2FibGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDQ3LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjI4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMTU6NTc6MDYuMDMxNDg0MDc4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY3Mzg0MTY4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBLVk1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9sb29uZ2FyY2gvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXFxuYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWctMTktXFxuYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnLTIxLVxcdHRyaXN0YXRlIFxcXCJLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDE1OjU3OjA2LjA5ODg3MjYzNloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYxMzU5NzIwMTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBicmVha2Rvd24gb2Ygd2hhdCBJJ20gbG9va2luZyBhdDpcblxuKipLVk0gTG9vbmdBcmNoIENvbmZpZ3VyYXRpb24gQXNzZXNzbWVudCoqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGl0LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGUgcHJpbWFyeSBjb25maWd1cmF0aW9uIG9wdGlvbiB3ZSdyZSBkZWFsaW5nIHdpdGggaGVyZSBpcyBwcm9iYWJseSBgQ09ORklHX0tWTWAuIFRoYXQncyB0aGUgYmlnIG9uZSwgdGhlIGJhc2UgS1ZNIHN1cHBvcnQuIE9mIGNvdXJzZSwgZ2l2ZW4gdGhlIHZpcnR1YWxpemF0aW9uIGFzcGVjdCwgSSBzaG91bGQgYWxzbyBkb3VibGUtY2hlY2sgYW5kIGNvbnNpZGVyIHRoYXQgYENPTkZJR19WSVJUVUFMSVpBVElPTmAgbWlnaHQgYmUgYSBuZWNlc3NhcnkgcHJlcmVxdWlzaXRlIG9yIGNvbXBhbmlvbiB0byBgQ09ORklHX0tWTWAuIE5lZWQgdG8ga2VlcCB0aGF0IGluIG1pbmQuXG5cbk5vdywgbGV0J3MgcGlucG9pbnQgdGhlIGZ1bmN0aW9ucyB0aGF0IGFyZSBnb2luZyB0byBiZSBtb3N0IHJlbGV2YW50IGhlcmUsIHRoZSBvbmVzIHRoYXQgbmVlZCB0aGUgY2xvc2VzdCBzY3J1dGlueS4gSXQgbG9va3MgbGlrZSBga3ZtX2xvb25nYXJjaF9jc3JfaW9gIGlzIGEga2V5IGZ1bmN0aW9uIHRvIGZvY3VzIG9uLiBMb29rcyBwcmV0dHkgTG9vbmdBcmNoLXNwZWNpZmljLCBzbyBsaWtlbHkgdGhlIGNvbnRyb2wgYW5kIHN0YXR1cyByZWdpc3RlciBpbnRlcmFjdGlvbiBmdW5jdGlvbi4gYGt2bV9hcmNoX3ZjcHVfaW9jdGxgIGlzIGluIHBsYXkgdG9vLCBidXQgdGhhdCdzIGEgbW9yZSBnZW5lcmljIGlvY3RsIGhhbmRsZXIsIHNvIHRoZSByZWFsIGhlYXZ5IGxpZnRpbmcgbWlnaHQgYmUgZG9uZSBpbiBga3ZtX2xvb25nYXJjaF9jc3JfaW9gIGFueXdheS4gSSBzaG91bGQgcHJvYmFibHkgZ2l2ZSBib3RoIGEgY2xvc2UgbG9vaywgYnV0IGBrdm1fbG9vbmdhcmNoX2Nzcl9pb2Agc2VlbXMgbGlrZSB0aGUgcHJpbWFyeSB0YXJnZXQuXG5cbkkgbmVlZCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBzdXBwb3J0aW5nIGZ1bmN0aW9ucy4gSXQgc2VlbXMgdGhhdCBgZ2V0X2djc3JfZmxhZ2AgaXMgYWxzbyBhIG1vZGlmaWVkIGZ1bmN0aW9uLCBidXQgaXQgbG9va3MgbGlrZSBhIHNtYWxsIGhlbHBlciBmdW5jdGlvbiwgc28gSSdsbCBrZWVwIGFuIGV5ZSBvbiBpdCBidXQgd29uJ3QgZm9jdXMgb24gaXQgaW5pdGlhbGx5LlxuXG5UbyBkaWcgaW4sIEknbGwgbmVlZCB0byBoZWFkIG92ZXIgdG8gYGFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmNgIHRvIHNlZSBob3cgYGt2bV9sb29uZ2FyY2hfY3NyX2lvYCBpcyBhY3R1YWxseSBpbXBsZW1lbnRlZCBhbmQgaG93IGl0IGZpdHMgaW50byB0aGUgYnJvYWRlciBLVk0gTG9vbmdBcmNoIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUxNzgsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMTU6NTc6MTIuMjM0ODQ2OTQ5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4Nzg2NDEzNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fbG9vbmdhcmNoX2Nzcl9pb1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM9MTAwNz1pbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTAxNS0vKiBCdWxrIGdldC9zZXQgb2YgQ1NSIHN0YXRlIGZvciBWTSBtaWdyYXRpb24uICovXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzoxMDE2OnN0YXRpYyBpbnQga3ZtX2xvb25nYXJjaF9jc3JfaW8oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTAxNy1cXHRcXHRcXHRcXHRzdHJ1Y3Qga3ZtX2xvb25nYXJjaF9jc3JzIF9fdXNlciAqdWNzcnMsXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jPTEzMDU9bG9uZyBrdm1fYXJjaF92Y3B1X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLFxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMzQwLVxcdGNhc2UgS1ZNX0xPT05HQVJDSF9HRVRfQ1NSOlxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6MTM0MTpcXHRcXHRyID0ga3ZtX2xvb25nYXJjaF9jc3JfaW8odmNwdSwgYXJncCwgZmFsc2UpO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTM0Mi1cXHRcXHRicmVhaztcXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEzNDMtXFx0Y2FzZSBLVk1fTE9PTkdBUkNIX1NFVF9DU1I6XFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzoxMzQ0OlxcdFxcdHIgPSBrdm1fbG9vbmdhcmNoX2Nzcl9pbyh2Y3B1LCBhcmdwLCB0cnVlKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEzNDUtXFx0XFx0YnJlYWs7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDE1OjU3OjEyLjQyMjcxNTgwNVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEzMDQxMDE1NjkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIExvb25nQXJjaCBDU1IgSS9PIEhhbmRsaW5nKipcblxuQWxyaWdodCwgc28gdGhlIGNvcmUgb2YgdGhpcyBuZXcgZnVuY3Rpb25hbGl0eSBzZWVtcyB0byBiZSB0aGUgYGt2bV9sb29uZ2FyY2hfY3NyX2lvYCBmdW5jdGlvbi4gVGhhdCdzIHRoZSBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcsIG5vIHF1ZXN0aW9uLiBHaXZlbiB0aGF0IGl0J3MgTG9vbmdBcmNoLXNwZWNpZmljLCB0aGUgdGVzdGluZyB3aWxsIG5hdHVyYWxseSBiZSBjb25zdHJhaW5lZCB0byBMb29uZ0FyY2ggcGxhdGZvcm1zIG9yIGNyb3NzLWNvbXBpbGVkIGVudmlyb25tZW50cy4gTm8gYmlnIGRlYWwsIHdlIGNhbiBlYXNpbHkgcHJvdmlkZSB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zIGFuZCBzeW1ib2xzIHRvIG1ha2Ugc3VyZSB0aGUgZnV6emluZyBoYXJuZXNzZXMgZnVuY3Rpb24gY29ycmVjdGx5LlxuXG5TcGVjaWZpY2FsbHksIHdlJ2xsIG5lZWQgdGhlIGBLVk1gIGNvbmZpZ3VyYXRpb24gdG8gYmUgZW5hYmxlZC4gSSdsbCBuZWVkIHRvIGZvY3VzIHRoZSBmdXp6aW5nIG9uIHRoZSBga3ZtX2xvb25nYXJjaF9jc3JfaW9gIHN5bWJvbC5cblxuQmVmb3JlIHdlIGNvbW1pdCB0byB0aGF0LCBJJ2xsIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgdGhlcmUgYXJlbid0IGFueSBvdGhlciByZWxhdGVkIGNvbmZpZ3VyYXRpb25zIHRoYXQgd2UgbWlnaHQgaGF2ZSBtaXNzZWQsIG9yIGFueSBoaWRkZW4gZGVwZW5kZW5jaWVzLiBJdCdzIGFsd2F5cyBnb29kIHRvIGJlIHRob3JvdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MTcxLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDE1OjU3OjI1LjQ2MzczMzgwNloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NzAzNDI0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgS1ZNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXFxuYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWctMTktXFxuYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnLTIxLVxcdHRyaXN0YXRlIFxcXCJLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDE1OjU3OjI1LjUzMDc3MTk5NVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyOTA2NDg2OTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQ29uc2lkZXJpbmcgQ29uZmlndXJhdGlvbiBQb3NzaWJpbGl0aWVzKipcblxuQWxyaWdodCwgbGV0J3Mgc2VlLi4uIEknbSBsb29raW5nIGF0IHRoaXMgcGFydGljdWxhciBzaXR1YXRpb24sIGFuZCBteSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gYXNrOiAqKklzIHRoaXMgdGhlICpvbmx5KiBjb25maWd1cmF0aW9uIHdlIG5lZWQgdG8gYWNjb3VudCBmb3I/KiogQXJlIHRoZXJlIGFueSBvdGhlciBwb3RlbnRpYWwgc2V0dXBzLCBlZGdlIGNhc2VzLCBvciB2YXJpYXRpb25zIGluIHRoZSBwYXJhbWV0ZXJzIHRoYXQgY291bGQgdGhyb3cgYSB3cmVuY2ggaW4gdGhlIHdvcmtzPyBJIG5lZWQgdG8gcXVpY2tseSBlc3RhYmxpc2ggaWYgdGhlIHByZXNlbnRlZCBzY2VuYXJpbyBpcyB0cnVseSByZXByZXNlbnRhdGl2ZSBvZiB0aGUgb3ZlcmFsbCBsYW5kc2NhcGUsIG9yIGlmIGl0J3MganVzdCBvbmUgZGF0YSBwb2ludCBpbiBhIHBvdGVudGlhbGx5IG11Y2ggbGFyZ2VyLCBtb3JlIGNvbXBsZXggY29uZmlndXJhdGlvbiBzcGFjZS4gSSdtIGFscmVhZHkgbWVudGFsbHkgcnVubmluZyB0aHJvdWdoIHRoZSBjaGVja2xpc3QuLi4gZGlmZmVyZW50IGhhcmR3YXJlLCBzb2Z0d2FyZSB2ZXJzaW9ucywgbmV0d29yayB0b3BvbG9naWVzLi4uIEkgaGF2ZSB0byBlbnN1cmUgdGhhdCBJJ20gY29uc2lkZXJpbmcgYWxsIHJlbGV2YW50IGZhY3RvcnMgYmVmb3JlIGRyYXdpbmcgYW55IGNvbmNsdXNpb25zLiBUaGUgZGVwdGggb2YgdGhlIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gaXMgYWxzbyBhbiBhcmVhIG9mIGNvbnNpZGVyYXRpb24sIGFzIGl0IGlzIHBvc3NpYmxlIHRoYXQgdGhlcmUgYXJlIG90aGVyIHN1Yi1jb25maWd1cmF0aW9ucyBJIGhhdmUgZmFpbGVkIHRvIHVuZGVyc3RhbmQsIG9yIHRoYXQgaGF2ZW4ndCBiZWVuIHNoYXJlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjU5NywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMTU6NTc6MjguODIxNDIzMzYxWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzOTYxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBLVk0gY29uZmlndXJhdGlvblxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRzb3VyY2UgXFxcInZpcnQva3ZtL0tjb25maWdcXFwiXFxuICAgNzpcXHRcXG4gICA4OlxcdG1lbnVjb25maWcgVklSVFVBTElaQVRJT05cXG4gICA5OlxcdFxcdGJvb2wgXFxcIlZpcnR1YWxpemF0aW9uXFxcIlxcbiAgMTA6XFx0XFx0aGVscFxcbiAgMTE6XFx0XFx0ICBTYXkgWSBoZXJlIHRvIGdldCB0byBzZWUgb3B0aW9ucyBmb3IgdXNpbmcgeW91ciBMaW51eCBob3N0IHRvIHJ1blxcbiAgMTI6XFx0XFx0ICBvdGhlciBvcGVyYXRpbmcgc3lzdGVtcyBpbnNpZGUgdmlydHVhbCBtYWNoaW5lcyAoZ3Vlc3RzKS5cXG4gIDEzOlxcdFxcdCAgVGhpcyBvcHRpb24gYWxvbmUgZG9lcyBub3QgYWRkIGFueSBrZXJuZWwgY29kZS5cXG4gIDE0OlxcdFxcbiAgMTU6XFx0XFx0ICBJZiB5b3Ugc2F5IE4sIGFsbCBvcHRpb25zIGluIHRoaXMgc3VibWVudSB3aWxsIGJlIHNraXBwZWQgYW5kXFxuICAxNjpcXHRcXHQgIGRpc2FibGVkLlxcbiAgMTc6XFx0XFxuICAxODpcXHRpZiBWSVJUVUFMSVpBVElPTlxcbiAgMTk6XFx0XFxuICAyMDpcXHRjb25maWcgS1ZNXFxuICAyMTpcXHRcXHR0cmlzdGF0ZSBcXFwiS2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XFxcIlxcbiAgMjI6XFx0XFx0ZGVwZW5kcyBvbiBBU19IQVNfTFZaX0VYVEVOU0lPTiBcXHUwMDI2XFx1MDAyNiA2NEJJVFxcbiAgMjM6XFx0XFx0c2VsZWN0IEhBVkVfS1ZNX0RJUlRZX1JJTkdfQUNRX1JFTFxcbiAgMjQ6XFx0XFx0c2VsZWN0IEhBVkVfS1ZNX0lSUV9ST1VUSU5HXFxuICAyNTpcXHRcXHRzZWxlY3QgSEFWRV9LVk1fSVJRQ0hJUFxcbiAgMjY6XFx0XFx0c2VsZWN0IEhBVkVfS1ZNX01TSVxcbiAgMjc6XFx0XFx0c2VsZWN0IEhBVkVfS1ZNX1JFQURPTkxZX01FTVxcbiAgMjg6XFx0XFx0c2VsZWN0IEtWTV9DT01NT05cXG4gIDI5OlxcdFxcdHNlbGVjdCBLVk1fR0VORVJJQ19ESVJUWUxPR19SRUFEX1BST1RFQ1RcXG4gIDMwOlxcdFxcdHNlbGVjdCBLVk1fR0VORVJJQ19IQVJEV0FSRV9FTkFCTElOR1xcbiAgMzE6XFx0XFx0c2VsZWN0IEtWTV9NTUlPXFxuICAzMjpcXHRcXHRzZWxlY3QgVklSVF9YRkVSX1RPX0dVRVNUX1dPUktcXG4gIDMzOlxcdFxcdHNlbGVjdCBTQ0hFRF9JTkZPXFxuICAzNDpcXHRcXHRzZWxlY3QgR1VFU1RfUEVSRl9FVkVOVFMgaWYgUEVSRl9FVkVOVFNcXG4gIDM1OlxcdFxcdGhlbHBcXG4gIDM2OlxcdFxcdCAgU3VwcG9ydCBob3N0aW5nIHZpcnR1YWxpemVkIGd1ZXN0IG1hY2hpbmVzIHVzaW5nXFxuICAzNzpcXHRcXHQgIGhhcmR3YXJlIHZpcnR1YWxpemF0aW9uIGV4dGVuc2lvbnMuIFlvdSB3aWxsIG5lZWRcXG4gIDM4OlxcdFxcdCAgYSBwcm9jZXNzb3IgZXF1aXBwZWQgd2l0aCB2aXJ0dWFsaXphdGlvbiBleHRlbnNpb25zLlxcbiAgMzk6XFx0XFxuICA0MDpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuICA0MTpcXHRcXG4gIDQyOlxcdGVuZGlmICMgVklSVFVBTElaQVRJT05cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMTU6NTc6MjguODIxNDkwMTYxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyODk1NjUwMjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgRnV6emluZyBTdHJhdGVneSBmb3IgTG9vbmdBcmNoIEtWTSBDU1IgSU8qKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSdtIGZvY3VzaW5nIG9uIGZ1enppbmcgdGhlIG5ldyBMb29uZ0FyY2ggS1ZNIENTUiBnZXQvc2V0IGZ1bmN0aW9uYWxpdHkuIFRoZSBrZXkgaGVyZSBpcyB0aGUgaW50cm9kdWN0aW9uIG9mIHRoZXNlIG5ldyBgaW9jdGxzYCwgYEtWTV9MT09OR0FSQ0hfR0VUX0NTUmAgYW5kIGBLVk1fTE9PTkdBUkNIX1NFVF9DU1JgLiBUaGV5J3JlIGV4cG9zZWQgdG8gdXNlcnNwYWNlLCB3aGljaCBpbW1lZGlhdGVseSBmbGFncyB0aGVtIGFzIGhpZ2gtcHJpb3JpdHkgdGFyZ2V0cyBmb3IgdnVsbmVyYWJpbGl0eSByZXNlYXJjaC4gR2l2ZW4gdGhhdCwgSSB3aWxsIGNvbmZpZ3VyZSB0aGUgZnV6emVyIHRvIGhvbmUgaW4gb24gdGhlbS5cblxuSSdsbCBzdGFydCBieSBtYWtpbmcgc3VyZSB0aGUgZnV6emluZyBwcm9jZXNzIGlzIGV2ZW4gZW5hYmxlZCBmb3IgdGhpcyBmZWF0dXJlLCBzbyBJIHdpbGwgc2V0IGBXb3J0aEZ1enppbmdgIHRvIGB0cnVlYC4gVGhlbiwgSSBuZWVkIHRvIHRlbGwgdGhlIGZ1enplciBwcmVjaXNlbHkgd2hlcmUgdG8gZGlyZWN0IGl0cyBlZmZvcnRzLiBJJ2xsIHNldCBgRm9jdXNTeW1ib2xzYCB0byBleHBsaWNpdGx5IGluY2x1ZGUgYFwia3ZtX2xvb25nYXJjaF9jc3JfaW9cImAuIFRoYXQgZnVuY3Rpb24sIG9yIG1vcmUgcHJlY2lzZWx5IHRoZSBmdW5jdGlvbnMgaXQgd2lsbCBjYWxsLCBpcyB3aGVyZSB0aGUgYnVsayBvZiB0aGUgZ2V0L3NldCBsb2dpYyByZXNpZGVzLCBhbmQgdGhhdCdzIHdoZXJlIEkgbmVlZCB0aGUgZnV6emluZyBjYW1wYWlnbiB0byBiZSBjb25jZW50cmF0ZWQuXG5cbk9mIGNvdXJzZSwgdG8gZXZlbiB0ZXN0IHRoZSByZWxldmFudCBuZXcgZnVuY3Rpb25hbGl0eSwgSSdsbCBuZWVkIHRvIGVuYWJsZSB0aGUgc3VwcG9ydGluZyBjb25maWd1cmF0aW9ucy4gVGhlIHRhcmdldCBoZXJlIGlzIEtWTSBvbiBMb29uZ0FyY2gsIHNvIEknbGwgc2V0IHRoZSBgRW5hYmxlQ29uZmlnc2AgdG8gaW5jbHVkZSBgXCJLVk1cImAgYW5kIGBcIlZJUlRVQUxJWkFUSU9OXCJgLlxuXG5NeSByZWFzb25pbmcgaGVyZSBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiB0aGlzIHBhdGNoIGludHJvZHVjZXMgbmV3LCB1c2Vyc3BhY2UtYWNjZXNzaWJsZSBgaW9jdGxzYCBkZXNpZ25lZCBmb3IgYnVsayBDU1IgbWFuaXB1bGF0aW9uIHdpdGhpbiBMb29uZ0FyY2ggS1ZNLiAgR2l2ZW4gdGhlIHBvdGVudGlhbCBmb3IgbWVtb3J5IHNhZmV0eSBpc3N1ZXMgYW5kIHRoZSBhYnNvbHV0ZSBuZWVkIGZvciByb2J1c3QgYm91bmRzIGNoZWNraW5nIHdoZW4gZGVhbGluZyB3aXRoIHByaXZpbGVnZWQgb3BlcmF0aW9ucywgcmlnb3JvdXMgZnV6emluZyBpcyBlc3NlbnRpYWwuIFRoZXNlIGlvY3RscyBhcmUgdGhlIGVudHJ5IHBvaW50cywgYW5kIEknbSBzZXR0aW5nIHRoZSBmdXp6ZXIgdG8gZXhwbG9yZSB0aGVtIHRob3JvdWdobHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjczOTIsIk91dHB1dFRva2VucyI6MTE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMTU6NTc6MzQuMTExMDU3MzVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NTMxNzIzOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCIsXG4gICAgXCJWSVJUVUFMSVpBVElPTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9sb29uZ2FyY2hfY3NyX2lvXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGlzIHBhdGNoIGFkZHMgYnVsayBDU1IgZ2V0L3NldCBmdW5jdGlvbmFsaXR5IGZvciBMb29uZ0FyY2ggS1ZNIHZpYSBuZXcgaW9jdGxzIChLVk1fTE9PTkdBUkNIX0dFVF9DU1IgYW5kIEtWTV9MT09OR0FSQ0hfU0VUX0NTUikuIFRoZXNlIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG1lbW9yeSBzYWZldHkgYW5kIGNvcnJlY3QgYm91bmRzIGNoZWNraW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiLFxuICAgIFwiVklSVFVBTElaQVRJT05cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrdm1fbG9vbmdhcmNoX2Nzcl9pb1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhpcyBwYXRjaCBhZGRzIGJ1bGsgQ1NSIGdldC9zZXQgZnVuY3Rpb25hbGl0eSBmb3IgTG9vbmdBcmNoIEtWTSB2aWEgbmV3IGlvY3RscyAoS1ZNX0xPT05HQVJDSF9HRVRfQ1NSIGFuZCBLVk1fTE9PTkdBUkNIX1NFVF9DU1IpLiBUaGVzZSBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBtZW1vcnkgc2FmZXR5IGFuZCBjb3JyZWN0IGJvdW5kcyBjaGVja2luZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowk7vfn[1] Phase: Succeeded StartedAt: 2026-07-23 15:57:57 +0000 UTC FinishedAt: 2026-07-23 15:57:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk7vfn[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-23 15:57:57 +0000 UTC FinishedAt: 2026-07-23 15:57:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk7vfn[2] Phase: Succeeded StartedAt: 2026-07-23 15:57:57 +0000 UTC FinishedAt: 2026-07-23 17:19:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk7vfn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_loongarch_csr_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"13ef1e79-747c-4abf-b4a3-854c5c75efba","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-23 15:57:57 +0000 UTC FinishedAt: 2026-07-23 17:19:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_loongarch_csr_io"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"13ef1e79-747c-4abf-b4a3-854c5c75efba","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowk7vfn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_loongarch_csr_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"13ef1e79-747c-4abf-b4a3-854c5c75efba","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-23 15:57:57 +0000 UTC FinishedAt: 2026-07-23 15:58:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk7vfn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_loongarch_csr_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"13ef1e79-747c-4abf-b4a3-854c5c75efba","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-23 15:57:57 +0000 UTC FinishedAt: 2026-07-23 15:58:04 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},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-workflowk7vfn/series-workflowk7vfn-convert-artifact-365529156/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowk7vfn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_loongarch_csr_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"13ef1e79-747c-4abf-b4a3-854c5c75efba","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-23 15:58:07 +0000 UTC FinishedAt: 2026-07-23 16:32:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk7vfn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_loongarch_csr_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"13ef1e79-747c-4abf-b4a3-854c5c75efba","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-23 15:58:07 +0000 UTC FinishedAt: 2026-07-23 16:32:55 +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:*c9f1660d-7da2-4556-9a26-9cf08f59e7b7,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-workflowk7vfn/series-workflowk7vfn-convert-artifact-365529156/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": "96e05d55-c6e2-49a1-bbd4-42323915b9c8", "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-workflowk7vfn/series-workflowk7vfn-build-action-18860930/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowk7vfn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_loongarch_csr_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"13ef1e79-747c-4abf-b4a3-854c5c75efba","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-23 15:58:07 +0000 UTC FinishedAt: 2026-07-23 16:32:45 +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:*c9f1660d-7da2-4556-9a26-9cf08f59e7b7,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-workflowk7vfn/series-workflowk7vfn-convert-artifact-365529156/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": "96e05d55-c6e2-49a1-bbd4-42323915b9c8", "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-workflowk7vfn/series-workflowk7vfn-build-action-18860930/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowk7vfn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_loongarch_csr_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"13ef1e79-747c-4abf-b4a3-854c5c75efba","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-23 16:32:55 +0000 UTC FinishedAt: 2026-07-23 16:32:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk7vfn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_loongarch_csr_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"13ef1e79-747c-4abf-b4a3-854c5c75efba","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-23 16:32:55 +0000 UTC FinishedAt: 2026-07-23 16:32:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk7vfn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_loongarch_csr_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"13ef1e79-747c-4abf-b4a3-854c5c75efba","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-23 16:32:55 +0000 UTC FinishedAt: 2026-07-23 16:33:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk7vfn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_loongarch_csr_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"13ef1e79-747c-4abf-b4a3-854c5c75efba","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-23 16:32:55 +0000 UTC FinishedAt: 2026-07-23 16:33:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"13ef1e79-747c-4abf-b4a3-854c5c75efba","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},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-workflowk7vfn/series-workflowk7vfn-convert-artifact-2638958275/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowk7vfn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_loongarch_csr_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"13ef1e79-747c-4abf-b4a3-854c5c75efba","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-23 16:33:05 +0000 UTC FinishedAt: 2026-07-23 16:35:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk7vfn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_loongarch_csr_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"13ef1e79-747c-4abf-b4a3-854c5c75efba","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-23 16:33:05 +0000 UTC FinishedAt: 2026-07-23 16:35:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*96e05d55-c6e2-49a1-bbd4-42323915b9c8,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-workflowk7vfn/series-workflowk7vfn-build-action-18860930/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-workflowk7vfn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_loongarch_csr_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"13ef1e79-747c-4abf-b4a3-854c5c75efba","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-23 16:35:10 +0000 UTC FinishedAt: 2026-07-23 16:35:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk7vfn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_loongarch_csr_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"13ef1e79-747c-4abf-b4a3-854c5c75efba","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-23 16:35:10 +0000 UTC FinishedAt: 2026-07-23 16:35:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk7vfn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_loongarch_csr_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"13ef1e79-747c-4abf-b4a3-854c5c75efba","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-23 16:35:10 +0000 UTC FinishedAt: 2026-07-23 17:15:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk7vfn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_loongarch_csr_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"13ef1e79-747c-4abf-b4a3-854c5c75efba","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-23 16:35:10 +0000 UTC FinishedAt: 2026-07-23 17:15:52 +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:*c9f1660d-7da2-4556-9a26-9cf08f59e7b7,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-workflowk7vfn/series-workflowk7vfn-convert-artifact-2638958275/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": "c6801a7d-a6e1-4c26-bf7b-f9d3e484d181", "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-workflowk7vfn/series-workflowk7vfn-build-action-3993680247/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowk7vfn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_loongarch_csr_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"13ef1e79-747c-4abf-b4a3-854c5c75efba","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-23 16:35:10 +0000 UTC FinishedAt: 2026-07-23 17:15:45 +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:*c9f1660d-7da2-4556-9a26-9cf08f59e7b7,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-workflowk7vfn/series-workflowk7vfn-convert-artifact-2638958275/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": "c6801a7d-a6e1-4c26-bf7b-f9d3e484d181", "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-workflowk7vfn/series-workflowk7vfn-build-action-3993680247/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowk7vfn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_loongarch_csr_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"13ef1e79-747c-4abf-b4a3-854c5c75efba","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-23 17:15:52 +0000 UTC FinishedAt: 2026-07-23 17:15:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk7vfn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_loongarch_csr_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"13ef1e79-747c-4abf-b4a3-854c5c75efba","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-23 17:15:52 +0000 UTC FinishedAt: 2026-07-23 17:15:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk7vfn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_loongarch_csr_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"13ef1e79-747c-4abf-b4a3-854c5c75efba","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-23 17:15:52 +0000 UTC FinishedAt: 2026-07-23 17:17:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk7vfn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_loongarch_csr_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"13ef1e79-747c-4abf-b4a3-854c5c75efba","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-23 17:15:52 +0000 UTC FinishedAt: 2026-07-23 17:17:44 +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:*c6801a7d-a6e1-4c26-bf7b-f9d3e484d181,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-workflowk7vfn/series-workflowk7vfn-build-action-3993680247/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-workflowk7vfn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_loongarch_csr_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"13ef1e79-747c-4abf-b4a3-854c5c75efba","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-23 17:17:57 +0000 UTC FinishedAt: 2026-07-23 17:19:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk7vfn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_loongarch_csr_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"13ef1e79-747c-4abf-b4a3-854c5c75efba","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-23 17:17:57 +0000 UTC FinishedAt: 2026-07-23 17:19:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_loongarch_csr_io"],"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:*96e05d55-c6e2-49a1-bbd4-42323915b9c8,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*c6801a7d-a6e1-4c26-bf7b-f9d3e484d181,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-workflowk7vfn/series-workflowk7vfn-build-action-18860930/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-workflowk7vfn/series-workflowk7vfn-build-action-3993680247/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowk7vfn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_loongarch_csr_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"13ef1e79-747c-4abf-b4a3-854c5c75efba","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-23 17:17:57 +0000 UTC FinishedAt: 2026-07-23 17:18:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk7vfn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_loongarch_csr_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"13ef1e79-747c-4abf-b4a3-854c5c75efba","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-23 17:17:57 +0000 UTC FinishedAt: 2026-07-23 17:18:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_loongarch_csr_io"],"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-workflowk7vfn/series-workflowk7vfn-convert-artifact-1640369116/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowk7vfn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_loongarch_csr_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"13ef1e79-747c-4abf-b4a3-854c5c75efba","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-23 17:17:57 +0000 UTC FinishedAt: 2026-07-23 17:17:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk7vfn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_loongarch_csr_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"13ef1e79-747c-4abf-b4a3-854c5c75efba","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-23 17:17:57 +0000 UTC FinishedAt: 2026-07-23 17:17:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk7vfn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_loongarch_csr_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"13ef1e79-747c-4abf-b4a3-854c5c75efba","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-23 17:17:57 +0000 UTC FinishedAt: 2026-07-23 17:17:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk7vfn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_loongarch_csr_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"13ef1e79-747c-4abf-b4a3-854c5c75efba","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-23 17:18:30 +0000 UTC FinishedAt: 2026-07-23 17:19:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk7vfn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_loongarch_csr_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"13ef1e79-747c-4abf-b4a3-854c5c75efba","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-23 17:18:30 +0000 UTC FinishedAt: 2026-07-23 17:19:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*96e05d55-c6e2-49a1-bbd4-42323915b9c8,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*c6801a7d-a6e1-4c26-bf7b-f9d3e484d181,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-workflowk7vfn/series-workflowk7vfn-build-action-18860930/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-workflowk7vfn/series-workflowk7vfn-build-action-3993680247/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-workflowk7vfn/series-workflowk7vfn-convert-artifact-1640369116/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,}