Name: series-workflowlvn66 Phase: Succeeded StartedAt: 2026-07-06 03:44:34 +0000 UTC FinishedAt: 2026-07-06 05:09:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlvn66[0] Phase: Succeeded StartedAt: 2026-07-06 03:44:34 +0000 UTC FinishedAt: 2026-07-06 03:58:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlvn66[0].run-triage Phase: Succeeded StartedAt: 2026-07-06 03:44:34 +0000 UTC FinishedAt: 2026-07-06 03:58:22 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "995832b2cebe6969d1b42635db698803ee31294d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_JIT", "BPF_SYSCALL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "995832b2cebe6969d1b42635db698803ee31294d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_JIT", "BPF_SYSCALL" ], "series_id": "7f8f8761-4b77-4e4b-8eb6-b933a206a8cd" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "bpf_int_jit_compile", "emit_bpf_tail_call", "build_prologue", "__build_epilogue" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDAzOjU3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9KSVQmIzM0OywKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfaW50X2ppdF9jb21waWxlJiMzNDssCiAgICAmIzM0O2VtaXRfYnBmX3RhaWxfY2FsbCYjMzQ7LAogICAgJiMzNDtidWlsZF9wcm9sb2d1ZSYjMzQ7LAogICAgJiMzNDtfX2J1aWxkX2VwaWxvZ3VlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgSklUIGNvbXBpbGVyIGZvciBMb29uZ0FyY2ggdG8gZml4IHRoZSBoYW5kbGluZyBvZiB0YWlsIGNhbGwgY291bnRzIChSRUdfVENDKSBkdXJpbmcgQlBGLXRvLUJQRiBjYWxscyBhbmQgdGFpbCBjYWxscy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiBKSVQgbG9naWMgZm9yIExvb25nQXJjaCBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgZG9lc24mIzM5O3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIHZ1bG5lcmFiaWxpdGllcyBpbiBCUEYgcHJvZ3JhbSBleGVjdXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDM6NTc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA3ZjgyZmM2ZDUyZDYwMWM3ZGFkYjk3MGIwNWM4MWI3NzE4ZDE0NDhkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgNiAwMzo1NzozNCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmggYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmhcbmluZGV4IDc2YjcyMzU5MDAyM2Q3Li4xOWZlYWUxNjZlMWMxOCAxMDA2NDRcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2luc3QuaFxuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vaW5zdC5oXG5AQCAtOTcsNiAmIzQzOzk3LDcgQEAgZW51bSByZWcyaTZfb3Age1xuIH07XG4gXG4gZW51bSByZWcyaTEyX29wIHtcbiYjNDM7XHRzbHR1aV9vcFx0PSAweDA5LFxuIFx0YWRkaXdfb3BcdD0gMHgwYSxcbiBcdGFkZGlkX29wXHQ9IDB4MGIsXG4gXHRsdTUyaWRfb3BcdD0gMHgwYyxcbkBAIC0xNTMsNiAmIzQzOzE1NCw4IEBAIGVudW0gcmVnM19vcCB7XG4gXHRhZGRkX29wXHRcdD0gMHgyMSxcbiBcdHN1Yndfb3BcdFx0PSAweDIyLFxuIFx0c3ViZF9vcFx0XHQ9IDB4MjMsXG4mIzQzO1x0bWFza2Vxel9vcFx0PSAweDI2LFxuJiM0MztcdG1hc2tuZXpfb3BcdD0gMHgyNyxcbiBcdG5vcl9vcFx0XHQ9IDB4MjgsXG4gXHRhbmRfb3BcdFx0PSAweDI5LFxuIFx0b3Jfb3BcdFx0PSAweDJhLFxuQEAgLTY0NCw2ICYjNDM7NjQ3LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGVtaXRfIyNOQU1FKHVuaW9uIGxvb25nYXJjaF9pbnN0cnVjdGlvbiAqaW5zbixcdFxcXG4gXHRpbnNuLVx1MDAzZXJlZzJpMTJfZm9ybWF0LnJqID0gcmo7XHRcdFx0XHRcdFxcXG4gfVxuIFxuJiM0MztERUZfRU1JVF9SRUcySTEyX0ZPUk1BVChzbHR1aSwgc2x0dWlfb3ApXG4gREVGX0VNSVRfUkVHMkkxMl9GT1JNQVQoYWRkaXcsIGFkZGl3X29wKVxuIERFRl9FTUlUX1JFRzJJMTJfRk9STUFUKGFkZGlkLCBhZGRpZF9vcClcbiBERUZfRU1JVF9SRUcySTEyX0ZPUk1BVChsdTUyaWQsIGx1NTJpZF9vcClcbkBAIC03NDksNiAmIzQzOzc1Myw4IEBAIERFRl9FTUlUX1JFRzNfRk9STUFUKGRpdmQsIGRpdmRfb3ApXG4gREVGX0VNSVRfUkVHM19GT1JNQVQobW9kZCwgbW9kZF9vcClcbiBERUZfRU1JVF9SRUczX0ZPUk1BVChkaXZkdSwgZGl2ZHVfb3ApXG4gREVGX0VNSVRfUkVHM19GT1JNQVQobW9kZHUsIG1vZGR1X29wKVxuJiM0MztERUZfRU1JVF9SRUczX0ZPUk1BVChtYXNrZXF6LCBtYXNrZXF6X29wKVxuJiM0MztERUZfRU1JVF9SRUczX0ZPUk1BVChtYXNrbmV6LCBtYXNrbmV6X29wKVxuIERFRl9FTUlUX1JFRzNfRk9STUFUKGFuZCwgYW5kX29wKVxuIERFRl9FTUlUX1JFRzNfRk9STUFUKG9yLCBvcl9vcClcbiBERUZfRU1JVF9SRUczX0ZPUk1BVCh4b3IsIHhvcl9vcClcbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jIGIvYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY1xuaW5kZXggYWQ3ZTI4Mzc1YWE5NTEuLmI1NmFlN2VkM2UwNmVkIDEwMDY0NFxuLS0tIGEvYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY1xuQEAgLTUyLDUwICYjNDM7NTIsNTYgQEAgc3RhdGljIHZvaWQgcHJlcGFyZV9icGZfdGFpbF9jYWxsX2NudChzdHJ1Y3Qgaml0X2N0eCAqY3R4LCBpbnQgKnN0b3JlX29mZnNldClcbiBcdGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZyA9IGN0eC1cdTAwM2Vwcm9nO1xuIFx0Y29uc3QgYm9vbCBpc19tYWluX3Byb2cgPSAhYnBmX2lzX3N1YnByb2cocHJvZyk7XG4gXG4mIzQzO1x0KnN0b3JlX29mZnNldCAtPSBzaXplb2YobG9uZyk7XG4gXHRpZiAoaXNfbWFpbl9wcm9nKSB7XG4tXHRcdC8qXG4tXHRcdCAqIExPT05HQVJDSF9HUFJfVDMgPSBNQVhfVEFJTF9DQUxMX0NOVFxuLVx0XHQgKiBpZiAoUkVHX1RDQyBcdTAwM2UgVDMgKVxuLVx0XHQgKlx0c3RkIFJFR19UQ0MgLVx1MDAzZSBMT09OR0FSQ0hfR1BSX1NQICYjNDM7IHN0b3JlX29mZnNldFxuLVx0XHQgKiBlbHNlXG4tXHRcdCAqXHRzdGQgUkVHX1RDQyAtXHUwMDNlIExPT05HQVJDSF9HUFJfU1AgJiM0Mzsgc3RvcmVfb2Zmc2V0XG4tXHRcdCAqXHRSRUdfVENDID0gTE9PTkdBUkNIX0dQUl9TUCAmIzQzOyBzdG9yZV9vZmZzZXRcbi1cdFx0ICpcbi1cdFx0ICogc3RkIFJFR19UQ0MgLVx1MDAzZSBMT09OR0FSQ0hfR1BSX1NQICYjNDM7IHN0b3JlX29mZnNldFxuLVx0XHQgKlxuLVx0XHQgKiBUaGUgcHVycG9zZSBvZiB0aGlzIGNvZGUgaXMgdG8gZmlyc3QgcHVzaCB0aGUgVENDIGludG8gc3RhY2ssXG4tXHRcdCAqIGFuZCB0aGVuIHB1c2ggdGhlIGFkZHJlc3Mgb2YgVENDIGludG8gc3RhY2suXG4tXHRcdCAqIEluIGNhc2VzIHdoZXJlIGJwZjJicGYgYW5kIHRhaWxjYWxsIGFyZSB1c2VkIGluIGNvbWJpbmF0aW9uLFxuLVx0XHQgKiB0aGUgdmFsdWUgaW4gUkVHX1RDQyBtYXkgYmUgYSBjb3VudCBvciBhbiBhZGRyZXNzLFxuLVx0XHQgKiB0aGVzZSB0d28gY2FzZXMgbmVlZCB0byBiZSBqdWRnZWQgYW5kIGhhbmRsZWQgc2VwYXJhdGVseS5cbi1cdFx0ICovXG4tXHRcdGVtaXRfaW5zbihjdHgsIGFkZGlkLCBMT09OR0FSQ0hfR1BSX1QzLCBMT09OR0FSQ0hfR1BSX1pFUk8sIE1BWF9UQUlMX0NBTExfQ05UKTtcbi1cdFx0KnN0b3JlX29mZnNldCAtPSBzaXplb2YobG9uZyk7XG4tXG4tXHRcdGVtaXRfY29uZF9qbXAoY3R4LCBCUEZfSkdULCBSRUdfVENDLCBMT09OR0FSQ0hfR1BSX1QzLCA0KTtcbi1cbi1cdFx0Lypcbi1cdFx0ICogSWYgUkVHX1RDQyBcdTAwM2MgTUFYX1RBSUxfQ0FMTF9DTlQsIHRoZSB2YWx1ZSBpbiBSRUdfVENDIGlzIGEgY291bnQsXG4tXHRcdCAqIHB1c2ggdGNjIGludG8gc3RhY2tcbi1cdFx0ICovXG4mIzQzO1x0XHQvKiBTYXZlIGVudHJhbmNlIFRDQyBzdGF0ZSAoc2NhbGFyIGNvdW50IG9yIGtlcm5lbCBwb2ludGVyKSB0byBsb2NhbCAmIzM5O3RjYyYjMzk7IHNsb3QgKi9cbiBcdFx0ZW1pdF9pbnNuKGN0eCwgc3RkLCBSRUdfVENDLCBMT09OR0FSQ0hfR1BSX1NQLCAqc3RvcmVfb2Zmc2V0KTtcbiBcbi1cdFx0LyogUHVzaCB0aGUgYWRkcmVzcyBvZiBUQ0MgaW50byB0aGUgUkVHX1RDQyAqL1xuLVx0XHRlbWl0X2luc24oY3R4LCBhZGRpZCwgUkVHX1RDQywgTE9PTkdBUkNIX0dQUl9TUCwgKnN0b3JlX29mZnNldCk7XG4tXG4tXHRcdGVtaXRfdW5jb25kX2ptcChjdHgsIDIpO1xuJiM0MztcdFx0LyogQ29tcHV0ZSB0aGUgYWJzb2x1dGUgcG9pbnRlciB0byB0aGUgbG9jYWwgJiMzOTt0Y2MmIzM5OyBzbG90ICovXG4mIzQzO1x0XHRlbWl0X2luc24oY3R4LCBhZGRpZCwgTE9PTkdBUkNIX0dQUl9UNywgTE9PTkdBUkNIX0dQUl9TUCwgKnN0b3JlX29mZnNldCk7XG4gXG4gXHRcdC8qXG4tXHRcdCAqIElmIFJFR19UQ0MgXHUwMDNlIE1BWF9UQUlMX0NBTExfQ05ULCB0aGUgdmFsdWUgaW4gUkVHX1RDQyBpcyBhbiBhZGRyZXNzLFxuLVx0XHQgKiBwdXNoIHRjY19wdHIgaW50byBzdGFja1xuJiM0MztcdFx0ICogQnJhbmNobGVzcyBjbGFzc2lmaWNhdGlvbiBhbmQgYmxlbmRpbmc6XG4mIzQzO1x0XHQgKlxuJiM0MztcdFx0ICogSW4gY29tYmluZWQgYnBmMmJwZiBhbmQgdGFpbGNhbGwgc2NlbmFyaW9zLCBSRUdfVENDIGNhbiBjYXJyeVxuJiM0MztcdFx0ICogZWl0aGVyIGEgc2NhbGFyIGNvdW50ICgwIHRvIDMzKSBvciBhbiBpbmhlcml0ZWQga2VybmVsIHBvaW50ZXIgYWRkcmVzcy5cbiYjNDM7XHRcdCAqXG4mIzQzO1x0XHQgKiBFbnRyYW5jZSBzdGF0dXMgZm9yIGEgbWFpbiBwcm9ncmFtIGJhc2VkIG9uIFJFR19UQ0MgcGh5c2ljYWwgY29udGVudDpcbiYjNDM7XHRcdCAqIDEpIEluaXRpYWwgRW50cnkgKFNjYWxhcik6IEVudGVyIHZpYSBhIHN0YW5kYXJkIGV2ZW50LCB3aGVyZSBSRUdfVENDXG4mIzQzO1x0XHQgKiAgICBpcyBpbml0aWFsaXplZCB0byBhIHB1cmUgc2NhbGFyIDAuXG4mIzQzO1x0XHQgKiAyKSBJbmhlcml0ZWQgRW50cnkgKFNjYWxhcik6IEVudGVyIHZpYSBhIGZsYXQgbWFpbi10by1tYWluIHRhaWwgY2FsbCxcbiYjNDM7XHRcdCAqICAgIHdoZXJlIFJFR19UQ0MgY2FycmllcyBhbiBhY2N1bXVsYXRlZCBzY2FsYXIgY291bnQgKDEgdG8gMzMpIHJlbG9hZGVkXG4mIzQzO1x0XHQgKiAgICBmcm9tIHRoZSBwcmlvciBzdGFjayBmcmFtZS5cbiYjNDM7XHRcdCAqIDMpIEluaGVyaXRlZCBFbnRyeSAoUG9pbnRlcik6IEVudGVyIHZpYSBhIHRhaWwgY2FsbCBmcm9tIGEgc3VicHJvZ3JhbSxcbiYjNDM7XHRcdCAqICAgIHdoZXJlIFJFR19UQ0MgaW5oZXJpdHMgYW5kIGNhcnJpZXMgYSBtYXNzaXZlIGtlcm5lbCBwb2ludGVyIGFkZHJlc3NcbiYjNDM7XHRcdCAqICAgIHJlbG9hZGVkIGZyb20gdGhlIHByaW9yIHN0YWNrIGZyYW1lLlxuJiM0MztcdFx0ICpcbiYjNDM7XHRcdCAqIHNsdHVpOiAgIElkZW50aWZ5IHRoZSB0eXBlIG9mIFJFR19UQ0MuXG4mIzQzO1x0XHQgKiAgICAgICAgICBJZiBSRUdfVENDIFx1MDAzYyBNQVhfVEFJTF9DQUxMX0NOVCAmIzQzOyAxIChzY2FsYXIgMH4zMyksIHNldHMgVDggPSAxLlxuJiM0MztcdFx0ICogICAgICAgICAgSWYgUkVHX1RDQyBcdTAwM2U9IE1BWF9UQUlMX0NBTExfQ05UICYjNDM7IDEgKGtlcm5lbCBwb2ludGVyKSwgc2V0cyBUOCA9IDAuXG4mIzQzO1x0XHQgKlxuJiM0MztcdFx0ICogbWFza2VxejogSGFuZGxlIHRoZSBsb2NhbCBzdGFjayBwb2ludGVyIChUNykuXG4mIzQzO1x0XHQgKiAgICAgICAgICBJZiBUOCA9PSAxLCBrZWVwcyBUNyBpbnRhY3QuXG4mIzQzO1x0XHQgKiAgICAgICAgICBJZiBUOCA9PSAwLCBjbGVhcnMgVDcgdG8gMC5cbiYjNDM7XHRcdCAqXG4mIzQzO1x0XHQgKiBtYXNrbmV6OiBIYW5kbGUgdGhlIGluY29taW5nIFJFR19UQ0MgdG8gcHJldmVudCByZWdpc3RlciBwb2xsdXRpb24uXG4mIzQzO1x0XHQgKiAgICAgICAgICBJZiBUOCA9PSAxLCBjbGVhcnMgUkVHX1RDQyB0byAwIChlcmFzaW5nIDF+MzMgc2NhbGFycykuXG4mIzQzO1x0XHQgKiAgICAgICAgICBJZiBUOCA9PSAwLCBrZWVwcyB0aGUgbWFzc2l2ZSBrZXJuZWwgcG9pbnRlciBpbnRhY3QuXG4mIzQzO1x0XHQgKlxuJiM0MztcdFx0ICogb3I6ICAgICAgQ29tYmluZSB0aGUgcmVzdWx0cy5cbiYjNDM7XHRcdCAqICAgICAgICAgIFNjYWxhciBDYXNlOiAgUkVHX1RDQyA9IDAgfCBUNyAgICAgICAtXHUwMDNlIENsZWFuIGxvY2FsIHN0YWNrIHBvaW50ZXIuXG4mIzQzO1x0XHQgKiAgICAgICAgICBQb2ludGVyIENhc2U6IFJFR19UQ0MgPSBSRUdfVENDIHwgMCAgLVx1MDAzZSBDbGVhbiBpbmhlcml0ZWQgZ2xvYmFsIHBvaW50ZXIuXG4gXHRcdCAqL1xuLVx0XHRlbWl0X2luc24oY3R4LCBzdGQsIFJFR19UQ0MsIExPT05HQVJDSF9HUFJfU1AsICpzdG9yZV9vZmZzZXQpO1xuJiM0MztcdFx0ZW1pdF9pbnNuKGN0eCwgc2x0dWksIExPT05HQVJDSF9HUFJfVDgsIFJFR19UQ0MsIE1BWF9UQUlMX0NBTExfQ05UICYjNDM7IDEpO1xuJiM0MztcdFx0ZW1pdF9pbnNuKGN0eCwgbWFza2VxeiwgTE9PTkdBUkNIX0dQUl9UNywgTE9PTkdBUkNIX0dQUl9UNywgTE9PTkdBUkNIX0dQUl9UOCk7XG4mIzQzO1x0XHRlbWl0X2luc24oY3R4LCBtYXNrbmV6LCBSRUdfVENDLCBSRUdfVENDLCBMT09OR0FSQ0hfR1BSX1Q4KTtcbiYjNDM7XHRcdGVtaXRfaW5zbihjdHgsIG9yLCBSRUdfVENDLCBSRUdfVENDLCBMT09OR0FSQ0hfR1BSX1Q3KTtcbiBcdH0gZWxzZSB7XG4tXHRcdCpzdG9yZV9vZmZzZXQgLT0gc2l6ZW9mKGxvbmcpO1xuJiM0MztcdFx0LyogU3VicHJvZ3JhbXM6IGJhY2t1cCB0aGUgdmVyaWZpZWQgVENDIHBvaW50ZXIgaW5oZXJpdGVkIHZpYSBSRUdfVENDICovXG4gXHRcdGVtaXRfaW5zbihjdHgsIHN0ZCwgUkVHX1RDQywgTE9PTkdBUkNIX0dQUl9TUCwgKnN0b3JlX29mZnNldCk7XG4gXHR9XG4gXG4tXHQvKiBQdXNoIHRjY19wdHIgaW50byBzdGFjayAqL1xuJiM0MztcdC8qIFN0b3JlIHRoZSBmaW5hbGl6ZWQgVENDIHBvaW50ZXIgdmFsdWUgc2VjdXJlbHkgaW50byB0aGUgbG9jYWwgJiMzOTt0Y2NfcHRyJiMzOTsgc2xvdCAqL1xuIFx0KnN0b3JlX29mZnNldCAtPSBzaXplb2YobG9uZyk7XG4gXHRlbWl0X2luc24oY3R4LCBzdGQsIFJFR19UQ0MsIExPT05HQVJDSF9HUFJfU1AsICpzdG9yZV9vZmZzZXQpO1xuIH1cbkBAIC0xMjQsNiAmIzQzOzEzMCw5IEBAIHN0YXRpYyB2b2lkIHByZXBhcmVfYnBmX3RhaWxfY2FsbF9jbnQoc3RydWN0IGppdF9jdHggKmN0eCwgaW50ICpzdG9yZV9vZmZzZXQpXG4gICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgdGNjICAgICAgICAgICB8XG4gICogICAgICAgICAgICAgICAgICAgICAgICAgICAgJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJiM0MztcbiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB0Y2NfcHRyICAgICAgIHxcbiYjNDM7ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJiM0MztcbiYjNDM7ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgYXJlbmEgICAgICAgICB8XG4mIzQzOyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAob3B0aW9uYWwpICAgICAgfFxuICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7IFx1MDAzYy0tQlBGX1JFR19GUFxuICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHByb2ctXHUwMDNlYXV4LVx1MDAzZXN0YWNrX2RlcHRoIHxcbiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAob3B0aW9uYWwpICAgICAgIHxcbkBAIC0xNDUsNyAmIzQzOzE1NCw3IEBAIHN0YXRpYyB2b2lkIGJ1aWxkX3Byb2xvZ3VlKHN0cnVjdCBqaXRfY3R4ICpjdHgpXG4gXHRzdGFja19hZGp1c3QgJiM0Mzs9IHNpemVvZihsb25nKSAqIDI7XG4gXG4gXHRpZiAoY3R4LVx1MDAzZWFyZW5hX3ZtX3N0YXJ0KVxuLVx0XHRzdGFja19hZGp1c3QgJiM0Mzs9IDg7XG4mIzQzO1x0XHRzdGFja19hZGp1c3QgJiM0Mzs9IHNpemVvZihsb25nKTtcbiBcbiBcdHN0YWNrX2FkanVzdCA9IHJvdW5kX3VwKHN0YWNrX2FkanVzdCwgMTYpO1xuIFx0c3RhY2tfYWRqdXN0ICYjNDM7PSBicGZfc3RhY2tfYWRqdXN0O1xuQEAgLTE5NCwxMyAmIzQzOzIwMywxMyBAQCBzdGF0aWMgdm9pZCBidWlsZF9wcm9sb2d1ZShzdHJ1Y3Qgaml0X2N0eCAqY3R4KVxuIFx0c3RvcmVfb2Zmc2V0IC09IHNpemVvZihsb25nKTtcbiBcdGVtaXRfaW5zbihjdHgsIHN0ZCwgTE9PTkdBUkNIX0dQUl9TNSwgTE9PTkdBUkNIX0dQUl9TUCwgc3RvcmVfb2Zmc2V0KTtcbiBcbiYjNDM7XHRwcmVwYXJlX2JwZl90YWlsX2NhbGxfY250KGN0eCwgXHUwMDI2c3RvcmVfb2Zmc2V0KTtcbiYjNDM7XG4gXHRpZiAoY3R4LVx1MDAzZWFyZW5hX3ZtX3N0YXJ0KSB7XG4gXHRcdHN0b3JlX29mZnNldCAtPSBzaXplb2YobG9uZyk7XG4gXHRcdGVtaXRfaW5zbihjdHgsIHN0ZCwgUkVHX0FSRU5BLCBMT09OR0FSQ0hfR1BSX1NQLCBzdG9yZV9vZmZzZXQpO1xuIFx0fVxuIFxuLVx0cHJlcGFyZV9icGZfdGFpbF9jYWxsX2NudChjdHgsIFx1MDAyNnN0b3JlX29mZnNldCk7XG4tXG4gXHRlbWl0X2luc24oY3R4LCBhZGRpZCwgTE9PTkdBUkNIX0dQUl9GUCwgTE9PTkdBUkNIX0dQUl9TUCwgc3RhY2tfYWRqdXN0KTtcbiBcbiBcdGlmIChicGZfc3RhY2tfYWRqdXN0KVxuQEAgLTI0MSwyMSAmIzQzOzI1MCwxOCBAQCBzdGF0aWMgdm9pZCBfX2J1aWxkX2VwaWxvZ3VlKHN0cnVjdCBqaXRfY3R4ICpjdHgsIGJvb2wgaXNfdGFpbF9jYWxsKVxuIFx0bG9hZF9vZmZzZXQgLT0gc2l6ZW9mKGxvbmcpO1xuIFx0ZW1pdF9pbnNuKGN0eCwgbGRkLCBMT09OR0FSQ0hfR1BSX1M1LCBMT09OR0FSQ0hfR1BSX1NQLCBsb2FkX29mZnNldCk7XG4gXG4mIzQzO1x0LyogT25seSByZXN0b3JlIHRoZSBUQ0Mgc3RhdGUgaW50byBSRUdfVENDIGZyb20gdGhlIGhpZ2hlciBzbG90ICovXG4mIzQzO1x0bG9hZF9vZmZzZXQgLT0gc2l6ZW9mKGxvbmcpO1xuJiM0MztcdGVtaXRfaW5zbihjdHgsIGxkZCwgUkVHX1RDQywgTE9PTkdBUkNIX0dQUl9TUCwgbG9hZF9vZmZzZXQpO1xuJiM0MztcbiYjNDM7XHQvKiBTa2lwIHRoZSB1bnVzZWQgbG9jYWwgJiMzOTt0Y2NfcHRyJiMzOTsgc2xvdCB0byBhbGlnbiB3aXRoIGFyZW5hICovXG4mIzQzO1x0bG9hZF9vZmZzZXQgLT0gc2l6ZW9mKGxvbmcpO1xuJiM0MztcbiBcdGlmIChjdHgtXHUwMDNlYXJlbmFfdm1fc3RhcnQpIHtcbiBcdFx0bG9hZF9vZmZzZXQgLT0gc2l6ZW9mKGxvbmcpO1xuIFx0XHRlbWl0X2luc24oY3R4LCBsZGQsIFJFR19BUkVOQSwgTE9PTkdBUkNIX0dQUl9TUCwgbG9hZF9vZmZzZXQpO1xuIFx0fVxuIFxuLVx0Lypcbi1cdCAqIFdoZW4gcHVzaCBpbnRvIHRoZSBzdGFjaywgZm9sbG93IHRoZSBvcmRlciBvZiB0Y2MgdGhlbiB0Y2NfcHRyLlxuLVx0ICogV2hlbiBwb3AgZnJvbSB0aGUgc3RhY2ssIGZpcnN0IHBvcCB0Y2NfcHRyIHRoZW4gZm9sbG93ZWQgYnkgdGNjLlxuLVx0ICovXG4tXHRsb2FkX29mZnNldCAtPSAyICogc2l6ZW9mKGxvbmcpO1xuLVx0ZW1pdF9pbnNuKGN0eCwgbGRkLCBSRUdfVENDLCBMT09OR0FSQ0hfR1BSX1NQLCBsb2FkX29mZnNldCk7XG4tXG4tXHRsb2FkX29mZnNldCAmIzQzOz0gc2l6ZW9mKGxvbmcpO1xuLVx0ZW1pdF9pbnNuKGN0eCwgbGRkLCBSRUdfVENDLCBMT09OR0FSQ0hfR1BSX1NQLCBsb2FkX29mZnNldCk7XG4tXG4gXHRlbWl0X2luc24oY3R4LCBhZGRpZCwgTE9PTkdBUkNIX0dQUl9TUCwgTE9PTkdBUkNIX0dQUl9TUCwgc3RhY2tfYWRqdXN0KTtcbiBcbiBcdGlmICghaXNfdGFpbF9jYWxsKSB7XG5AQCAtMjkwLDE3ICYjNDM7Mjk2LDEzIEBAIGJvb2wgYnBmX2ppdF9zdXBwb3J0c19mYXJfa2Z1bmNfY2FsbCh2b2lkKVxuIFxuIHN0YXRpYyBpbnQgZW1pdF9icGZfdGFpbF9jYWxsKHN0cnVjdCBqaXRfY3R4ICpjdHgsIGludCBpbnNuKVxuIHtcbi1cdGludCBvZmYsIHRjX25pbnNuID0gMDtcbiYjNDM7XHRpbnQgb2ZmLCBqbXBfb2Zmc2V0O1xuIFx0aW50IHRjY19wdHJfb2ZmID0gQlBGX1RBSUxfQ0FMTF9DTlRfUFRSX1NUQUNLX09GRihjdHgtXHUwMDNlc3RhY2tfc2l6ZSk7XG4gXHR1OCBhMSA9IExPT05HQVJDSF9HUFJfQTE7XG4gXHR1OCBhMiA9IExPT05HQVJDSF9HUFJfQTI7XG4gXHR1OCB0MSA9IExPT05HQVJDSF9HUFJfVDE7XG4gXHR1OCB0MiA9IExPT05HQVJDSF9HUFJfVDI7XG4gXHR1OCB0MyA9IExPT05HQVJDSF9HUFJfVDM7XG4tXHRjb25zdCBpbnQgaWR4MCA9IGN0eC1cdTAwM2VpZHg7XG4tXG4tI2RlZmluZSBjdXJfb2Zmc2V0IChjdHgtXHUwMDNlaWR4IC0gaWR4MClcbi0jZGVmaW5lIGptcF9vZmZzZXQgKHRjX25pbnNuIC0gKGN1cl9vZmZzZXQpKVxuIFxuIFx0LypcbiBcdCAqIGEwOiBcdTAwMjZjdHhcbkBAIC0zMTAsMTIgJiM0MzszMTIsMTIgQEAgc3RhdGljIGludCBlbWl0X2JwZl90YWlsX2NhbGwoc3RydWN0IGppdF9jdHggKmN0eCwgaW50IGluc24pXG4gXHQgKiBpZiAoaW5kZXggXHUwMDNlPSBhcnJheS1cdTAwM2VtYXAubWF4X2VudHJpZXMpXG4gXHQgKlx0IGdvdG8gb3V0O1xuIFx0ICovXG4tXHR0Y19uaW5zbiA9IGluc24gPyBjdHgtXHUwMDNlb2Zmc2V0W2luc24mIzQzOzFdIC0gY3R4LVx1MDAzZW9mZnNldFtpbnNuXSA6IGN0eC1cdTAwM2VvZmZzZXRbMF07XG4gXHRlbWl0X3pleHRfMzIoY3R4LCBhMiwgdHJ1ZSk7XG4gXG4gXHRvZmYgPSBvZmZzZXRvZihzdHJ1Y3QgYnBmX2FycmF5LCBtYXAubWF4X2VudHJpZXMpO1xuIFx0ZW1pdF9pbnNuKGN0eCwgbGR3dSwgdDEsIGExLCBvZmYpO1xuIFx0LyogYmdldSAkYTIsICR0MSwgam1wX29mZnNldCAqL1xuJiM0MztcdGptcF9vZmZzZXQgPSBjdHgtXHUwMDNlaW1hZ2UgPyAoY3R4LVx1MDAzZW9mZnNldFtpbnNuICYjNDM7IDFdIC0gY3R4LVx1MDAzZWlkeCkgOiAwO1xuIFx0aWYgKGVtaXRfdGFpbGNhbGxfam1wKGN0eCwgQlBGX0pHRSwgYTIsIHQxLCBqbXBfb2Zmc2V0KSBcdTAwM2MgMClcbiBcdFx0Z290byB0b29mYXI7XG4gXG5AQCAtMzI2LDYgJiM0MzszMjgsNyBAQCBzdGF0aWMgaW50IGVtaXRfYnBmX3RhaWxfY2FsbChzdHJ1Y3Qgaml0X2N0eCAqY3R4LCBpbnQgaW5zbilcbiBcdGVtaXRfaW5zbihjdHgsIGxkZCwgUkVHX1RDQywgTE9PTkdBUkNIX0dQUl9TUCwgdGNjX3B0cl9vZmYpO1xuIFx0ZW1pdF9pbnNuKGN0eCwgbGRkLCB0MywgUkVHX1RDQywgMCk7XG4gXHRlbWl0X2luc24oY3R4LCBhZGRpZCwgdDIsIExPT05HQVJDSF9HUFJfWkVSTywgTUFYX1RBSUxfQ0FMTF9DTlQpO1xuJiM0MztcdGptcF9vZmZzZXQgPSBjdHgtXHUwMDNlaW1hZ2UgPyAoY3R4LVx1MDAzZW9mZnNldFtpbnNuICYjNDM7IDFdIC0gY3R4LVx1MDAzZWlkeCkgOiAwO1xuIFx0aWYgKGVtaXRfdGFpbGNhbGxfam1wKGN0eCwgQlBGX0pTR0UsIHQzLCB0Miwgam1wX29mZnNldCkgXHUwMDNjIDApXG4gXHRcdGdvdG8gdG9vZmFyO1xuIFxuQEAgLTM0MCw2ICYjNDM7MzQzLDcgQEAgc3RhdGljIGludCBlbWl0X2JwZl90YWlsX2NhbGwoc3RydWN0IGppdF9jdHggKmN0eCwgaW50IGluc24pXG4gXHRvZmYgPSBvZmZzZXRvZihzdHJ1Y3QgYnBmX2FycmF5LCBwdHJzKTtcbiBcdGVtaXRfaW5zbihjdHgsIGxkZCwgdDIsIHQyLCBvZmYpO1xuIFx0LyogYmVxICR0MiwgJHplcm8sIGptcF9vZmZzZXQgKi9cbiYjNDM7XHRqbXBfb2Zmc2V0ID0gY3R4LVx1MDAzZWltYWdlID8gKGN0eC1cdTAwM2VvZmZzZXRbaW5zbiAmIzQzOyAxXSAtIGN0eC1cdTAwM2VpZHgpIDogMDtcbiBcdGlmIChlbWl0X3RhaWxjYWxsX2ptcChjdHgsIEJQRl9KRVEsIHQyLCBMT09OR0FSQ0hfR1BSX1pFUk8sIGptcF9vZmZzZXQpIFx1MDAzYyAwKVxuIFx0XHRnb3RvIHRvb2ZhcjtcbiBcbkBAIC0zNTUsOCAmIzQzOzM1OSw2IEBAIHN0YXRpYyBpbnQgZW1pdF9icGZfdGFpbF9jYWxsKHN0cnVjdCBqaXRfY3R4ICpjdHgsIGludCBpbnNuKVxuIHRvb2ZhcjpcbiBcdHByX2luZm9fb25jZShcJiMzNDt0YWlsX2NhbGw6IGp1bXAgdG9vIGZhclxcblwmIzM0Oyk7XG4gXHRyZXR1cm4gLTE7XG4tI3VuZGVmIGN1cl9vZmZzZXRcbi0jdW5kZWYgam1wX29mZnNldFxuIH1cbiBcbiBzdGF0aWMgdm9pZCBlbWl0X3N0b3JlX3N0YWNrX2ltbTY0KHN0cnVjdCBqaXRfY3R4ICpjdHgsIGludCByZWcsIGludCBzdGFja19vZmYsIHU2NCBpbW02NClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwMzo1NzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfSklUJiMzNDssCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX2ludF9qaXRfY29tcGlsZSYjMzQ7LAogICAgJiMzNDtlbWl0X2JwZl90YWlsX2NhbGwmIzM0OywKICAgICYjMzQ7YnVpbGRfcHJvbG9ndWUmIzM0OywKICAgICYjMzQ7X19idWlsZF9lcGlsb2d1ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIEpJVCBjb21waWxlciBmb3IgTG9vbmdBcmNoIHRvIGZpeCB0aGUgaGFuZGxpbmcgb2YgdGFpbCBjYWxsIGNvdW50cyAoUkVHX1RDQykgZHVyaW5nIEJQRi10by1CUEYgY2FsbHMgYW5kIHRhaWwgY2FsbHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgSklUIGxvZ2ljIGZvciBMb29uZ0FyY2ggYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGl0IGRvZXNuJiMzOTt0IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciB2dWxuZXJhYmlsaXRpZXMgaW4gQlBGIHByb2dyYW0gZXhlY3V0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA3ZjgyZmM2ZDUyZDYwMWM3ZGFkYjk3MGIwNWM4MWI3NzE4ZDE0NDhkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBKdWwgNiAwMzo1NzozNCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2luc3QuaCBiL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2luc3QuaAppbmRleCA3NmI3MjM1OTAwMjNkNy4uMTlmZWFlMTY2ZTFjMTggMTAwNjQ0Ci0tLSBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2luc3QuaAomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmgKQEAgLTk3LDYgJiM0Mzs5Nyw3IEBAIGVudW0gcmVnMmk2X29wIHsKIH07CiAKIGVudW0gcmVnMmkxMl9vcCB7CiYjNDM7CXNsdHVpX29wCT0gMHgwOSwKIAlhZGRpd19vcAk9IDB4MGEsCiAJYWRkaWRfb3AJPSAweDBiLAogCWx1NTJpZF9vcAk9IDB4MGMsCkBAIC0xNTMsNiAmIzQzOzE1NCw4IEBAIGVudW0gcmVnM19vcCB7CiAJYWRkZF9vcAkJPSAweDIxLAogCXN1Yndfb3AJCT0gMHgyMiwKIAlzdWJkX29wCQk9IDB4MjMsCiYjNDM7CW1hc2tlcXpfb3AJPSAweDI2LAomIzQzOwltYXNrbmV6X29wCT0gMHgyNywKIAlub3Jfb3AJCT0gMHgyOCwKIAlhbmRfb3AJCT0gMHgyOSwKIAlvcl9vcAkJPSAweDJhLApAQCAtNjQ0LDYgJiM0Mzs2NDcsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZW1pdF8jI05BTUUodW5pb24gbG9vbmdhcmNoX2luc3RydWN0aW9uICppbnNuLAlcCiAJaW5zbi0mZ3Q7cmVnMmkxMl9mb3JtYXQucmogPSByajsJCQkJCVwKIH0KIAomIzQzO0RFRl9FTUlUX1JFRzJJMTJfRk9STUFUKHNsdHVpLCBzbHR1aV9vcCkKIERFRl9FTUlUX1JFRzJJMTJfRk9STUFUKGFkZGl3LCBhZGRpd19vcCkKIERFRl9FTUlUX1JFRzJJMTJfRk9STUFUKGFkZGlkLCBhZGRpZF9vcCkKIERFRl9FTUlUX1JFRzJJMTJfRk9STUFUKGx1NTJpZCwgbHU1MmlkX29wKQpAQCAtNzQ5LDYgJiM0Mzs3NTMsOCBAQCBERUZfRU1JVF9SRUczX0ZPUk1BVChkaXZkLCBkaXZkX29wKQogREVGX0VNSVRfUkVHM19GT1JNQVQobW9kZCwgbW9kZF9vcCkKIERFRl9FTUlUX1JFRzNfRk9STUFUKGRpdmR1LCBkaXZkdV9vcCkKIERFRl9FTUlUX1JFRzNfRk9STUFUKG1vZGR1LCBtb2RkdV9vcCkKJiM0MztERUZfRU1JVF9SRUczX0ZPUk1BVChtYXNrZXF6LCBtYXNrZXF6X29wKQomIzQzO0RFRl9FTUlUX1JFRzNfRk9STUFUKG1hc2tuZXosIG1hc2tuZXpfb3ApCiBERUZfRU1JVF9SRUczX0ZPUk1BVChhbmQsIGFuZF9vcCkKIERFRl9FTUlUX1JFRzNfRk9STUFUKG9yLCBvcl9vcCkKIERFRl9FTUlUX1JFRzNfRk9STUFUKHhvciwgeG9yX29wKQpkaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYyBiL2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMKaW5kZXggYWQ3ZTI4Mzc1YWE5NTEuLmI1NmFlN2VkM2UwNmVkIDEwMDY0NAotLS0gYS9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMKQEAgLTUyLDUwICYjNDM7NTIsNTYgQEAgc3RhdGljIHZvaWQgcHJlcGFyZV9icGZfdGFpbF9jYWxsX2NudChzdHJ1Y3Qgaml0X2N0eCAqY3R4LCBpbnQgKnN0b3JlX29mZnNldCkKIAljb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cgPSBjdHgtJmd0O3Byb2c7CiAJY29uc3QgYm9vbCBpc19tYWluX3Byb2cgPSAhYnBmX2lzX3N1YnByb2cocHJvZyk7CiAKJiM0MzsJKnN0b3JlX29mZnNldCAtPSBzaXplb2YobG9uZyk7CiAJaWYgKGlzX21haW5fcHJvZykgewotCQkvKgotCQkgKiBMT09OR0FSQ0hfR1BSX1QzID0gTUFYX1RBSUxfQ0FMTF9DTlQKLQkJICogaWYgKFJFR19UQ0MgJmd0OyBUMyApCi0JCSAqCXN0ZCBSRUdfVENDIC0mZ3Q7IExPT05HQVJDSF9HUFJfU1AgJiM0Mzsgc3RvcmVfb2Zmc2V0Ci0JCSAqIGVsc2UKLQkJICoJc3RkIFJFR19UQ0MgLSZndDsgTE9PTkdBUkNIX0dQUl9TUCAmIzQzOyBzdG9yZV9vZmZzZXQKLQkJICoJUkVHX1RDQyA9IExPT05HQVJDSF9HUFJfU1AgJiM0Mzsgc3RvcmVfb2Zmc2V0Ci0JCSAqCi0JCSAqIHN0ZCBSRUdfVENDIC0mZ3Q7IExPT05HQVJDSF9HUFJfU1AgJiM0Mzsgc3RvcmVfb2Zmc2V0Ci0JCSAqCi0JCSAqIFRoZSBwdXJwb3NlIG9mIHRoaXMgY29kZSBpcyB0byBmaXJzdCBwdXNoIHRoZSBUQ0MgaW50byBzdGFjaywKLQkJICogYW5kIHRoZW4gcHVzaCB0aGUgYWRkcmVzcyBvZiBUQ0MgaW50byBzdGFjay4KLQkJICogSW4gY2FzZXMgd2hlcmUgYnBmMmJwZiBhbmQgdGFpbGNhbGwgYXJlIHVzZWQgaW4gY29tYmluYXRpb24sCi0JCSAqIHRoZSB2YWx1ZSBpbiBSRUdfVENDIG1heSBiZSBhIGNvdW50IG9yIGFuIGFkZHJlc3MsCi0JCSAqIHRoZXNlIHR3byBjYXNlcyBuZWVkIHRvIGJlIGp1ZGdlZCBhbmQgaGFuZGxlZCBzZXBhcmF0ZWx5LgotCQkgKi8KLQkJZW1pdF9pbnNuKGN0eCwgYWRkaWQsIExPT05HQVJDSF9HUFJfVDMsIExPT05HQVJDSF9HUFJfWkVSTywgTUFYX1RBSUxfQ0FMTF9DTlQpOwotCQkqc3RvcmVfb2Zmc2V0IC09IHNpemVvZihsb25nKTsKLQotCQllbWl0X2NvbmRfam1wKGN0eCwgQlBGX0pHVCwgUkVHX1RDQywgTE9PTkdBUkNIX0dQUl9UMywgNCk7Ci0KLQkJLyoKLQkJICogSWYgUkVHX1RDQyAmbHQ7IE1BWF9UQUlMX0NBTExfQ05ULCB0aGUgdmFsdWUgaW4gUkVHX1RDQyBpcyBhIGNvdW50LAotCQkgKiBwdXNoIHRjYyBpbnRvIHN0YWNrCi0JCSAqLwomIzQzOwkJLyogU2F2ZSBlbnRyYW5jZSBUQ0Mgc3RhdGUgKHNjYWxhciBjb3VudCBvciBrZXJuZWwgcG9pbnRlcikgdG8gbG9jYWwgJiMzOTt0Y2MmIzM5OyBzbG90ICovCiAJCWVtaXRfaW5zbihjdHgsIHN0ZCwgUkVHX1RDQywgTE9PTkdBUkNIX0dQUl9TUCwgKnN0b3JlX29mZnNldCk7CiAKLQkJLyogUHVzaCB0aGUgYWRkcmVzcyBvZiBUQ0MgaW50byB0aGUgUkVHX1RDQyAqLwotCQllbWl0X2luc24oY3R4LCBhZGRpZCwgUkVHX1RDQywgTE9PTkdBUkNIX0dQUl9TUCwgKnN0b3JlX29mZnNldCk7Ci0KLQkJZW1pdF91bmNvbmRfam1wKGN0eCwgMik7CiYjNDM7CQkvKiBDb21wdXRlIHRoZSBhYnNvbHV0ZSBwb2ludGVyIHRvIHRoZSBsb2NhbCAmIzM5O3RjYyYjMzk7IHNsb3QgKi8KJiM0MzsJCWVtaXRfaW5zbihjdHgsIGFkZGlkLCBMT09OR0FSQ0hfR1BSX1Q3LCBMT09OR0FSQ0hfR1BSX1NQLCAqc3RvcmVfb2Zmc2V0KTsKIAogCQkvKgotCQkgKiBJZiBSRUdfVENDICZndDsgTUFYX1RBSUxfQ0FMTF9DTlQsIHRoZSB2YWx1ZSBpbiBSRUdfVENDIGlzIGFuIGFkZHJlc3MsCi0JCSAqIHB1c2ggdGNjX3B0ciBpbnRvIHN0YWNrCiYjNDM7CQkgKiBCcmFuY2hsZXNzIGNsYXNzaWZpY2F0aW9uIGFuZCBibGVuZGluZzoKJiM0MzsJCSAqCiYjNDM7CQkgKiBJbiBjb21iaW5lZCBicGYyYnBmIGFuZCB0YWlsY2FsbCBzY2VuYXJpb3MsIFJFR19UQ0MgY2FuIGNhcnJ5CiYjNDM7CQkgKiBlaXRoZXIgYSBzY2FsYXIgY291bnQgKDAgdG8gMzMpIG9yIGFuIGluaGVyaXRlZCBrZXJuZWwgcG9pbnRlciBhZGRyZXNzLgomIzQzOwkJICoKJiM0MzsJCSAqIEVudHJhbmNlIHN0YXR1cyBmb3IgYSBtYWluIHByb2dyYW0gYmFzZWQgb24gUkVHX1RDQyBwaHlzaWNhbCBjb250ZW50OgomIzQzOwkJICogMSkgSW5pdGlhbCBFbnRyeSAoU2NhbGFyKTogRW50ZXIgdmlhIGEgc3RhbmRhcmQgZXZlbnQsIHdoZXJlIFJFR19UQ0MKJiM0MzsJCSAqICAgIGlzIGluaXRpYWxpemVkIHRvIGEgcHVyZSBzY2FsYXIgMC4KJiM0MzsJCSAqIDIpIEluaGVyaXRlZCBFbnRyeSAoU2NhbGFyKTogRW50ZXIgdmlhIGEgZmxhdCBtYWluLXRvLW1haW4gdGFpbCBjYWxsLAomIzQzOwkJICogICAgd2hlcmUgUkVHX1RDQyBjYXJyaWVzIGFuIGFjY3VtdWxhdGVkIHNjYWxhciBjb3VudCAoMSB0byAzMykgcmVsb2FkZWQKJiM0MzsJCSAqICAgIGZyb20gdGhlIHByaW9yIHN0YWNrIGZyYW1lLgomIzQzOwkJICogMykgSW5oZXJpdGVkIEVudHJ5IChQb2ludGVyKTogRW50ZXIgdmlhIGEgdGFpbCBjYWxsIGZyb20gYSBzdWJwcm9ncmFtLAomIzQzOwkJICogICAgd2hlcmUgUkVHX1RDQyBpbmhlcml0cyBhbmQgY2FycmllcyBhIG1hc3NpdmUga2VybmVsIHBvaW50ZXIgYWRkcmVzcwomIzQzOwkJICogICAgcmVsb2FkZWQgZnJvbSB0aGUgcHJpb3Igc3RhY2sgZnJhbWUuCiYjNDM7CQkgKgomIzQzOwkJICogc2x0dWk6ICAgSWRlbnRpZnkgdGhlIHR5cGUgb2YgUkVHX1RDQy4KJiM0MzsJCSAqICAgICAgICAgIElmIFJFR19UQ0MgJmx0OyBNQVhfVEFJTF9DQUxMX0NOVCAmIzQzOyAxIChzY2FsYXIgMH4zMyksIHNldHMgVDggPSAxLgomIzQzOwkJICogICAgICAgICAgSWYgUkVHX1RDQyAmZ3Q7PSBNQVhfVEFJTF9DQUxMX0NOVCAmIzQzOyAxIChrZXJuZWwgcG9pbnRlciksIHNldHMgVDggPSAwLgomIzQzOwkJICoKJiM0MzsJCSAqIG1hc2tlcXo6IEhhbmRsZSB0aGUgbG9jYWwgc3RhY2sgcG9pbnRlciAoVDcpLgomIzQzOwkJICogICAgICAgICAgSWYgVDggPT0gMSwga2VlcHMgVDcgaW50YWN0LgomIzQzOwkJICogICAgICAgICAgSWYgVDggPT0gMCwgY2xlYXJzIFQ3IHRvIDAuCiYjNDM7CQkgKgomIzQzOwkJICogbWFza25lejogSGFuZGxlIHRoZSBpbmNvbWluZyBSRUdfVENDIHRvIHByZXZlbnQgcmVnaXN0ZXIgcG9sbHV0aW9uLgomIzQzOwkJICogICAgICAgICAgSWYgVDggPT0gMSwgY2xlYXJzIFJFR19UQ0MgdG8gMCAoZXJhc2luZyAxfjMzIHNjYWxhcnMpLgomIzQzOwkJICogICAgICAgICAgSWYgVDggPT0gMCwga2VlcHMgdGhlIG1hc3NpdmUga2VybmVsIHBvaW50ZXIgaW50YWN0LgomIzQzOwkJICoKJiM0MzsJCSAqIG9yOiAgICAgIENvbWJpbmUgdGhlIHJlc3VsdHMuCiYjNDM7CQkgKiAgICAgICAgICBTY2FsYXIgQ2FzZTogIFJFR19UQ0MgPSAwIHwgVDcgICAgICAgLSZndDsgQ2xlYW4gbG9jYWwgc3RhY2sgcG9pbnRlci4KJiM0MzsJCSAqICAgICAgICAgIFBvaW50ZXIgQ2FzZTogUkVHX1RDQyA9IFJFR19UQ0MgfCAwICAtJmd0OyBDbGVhbiBpbmhlcml0ZWQgZ2xvYmFsIHBvaW50ZXIuCiAJCSAqLwotCQllbWl0X2luc24oY3R4LCBzdGQsIFJFR19UQ0MsIExPT05HQVJDSF9HUFJfU1AsICpzdG9yZV9vZmZzZXQpOwomIzQzOwkJZW1pdF9pbnNuKGN0eCwgc2x0dWksIExPT05HQVJDSF9HUFJfVDgsIFJFR19UQ0MsIE1BWF9UQUlMX0NBTExfQ05UICYjNDM7IDEpOwomIzQzOwkJZW1pdF9pbnNuKGN0eCwgbWFza2VxeiwgTE9PTkdBUkNIX0dQUl9UNywgTE9PTkdBUkNIX0dQUl9UNywgTE9PTkdBUkNIX0dQUl9UOCk7CiYjNDM7CQllbWl0X2luc24oY3R4LCBtYXNrbmV6LCBSRUdfVENDLCBSRUdfVENDLCBMT09OR0FSQ0hfR1BSX1Q4KTsKJiM0MzsJCWVtaXRfaW5zbihjdHgsIG9yLCBSRUdfVENDLCBSRUdfVENDLCBMT09OR0FSQ0hfR1BSX1Q3KTsKIAl9IGVsc2UgewotCQkqc3RvcmVfb2Zmc2V0IC09IHNpemVvZihsb25nKTsKJiM0MzsJCS8qIFN1YnByb2dyYW1zOiBiYWNrdXAgdGhlIHZlcmlmaWVkIFRDQyBwb2ludGVyIGluaGVyaXRlZCB2aWEgUkVHX1RDQyAqLwogCQllbWl0X2luc24oY3R4LCBzdGQsIFJFR19UQ0MsIExPT05HQVJDSF9HUFJfU1AsICpzdG9yZV9vZmZzZXQpOwogCX0KIAotCS8qIFB1c2ggdGNjX3B0ciBpbnRvIHN0YWNrICovCiYjNDM7CS8qIFN0b3JlIHRoZSBmaW5hbGl6ZWQgVENDIHBvaW50ZXIgdmFsdWUgc2VjdXJlbHkgaW50byB0aGUgbG9jYWwgJiMzOTt0Y2NfcHRyJiMzOTsgc2xvdCAqLwogCSpzdG9yZV9vZmZzZXQgLT0gc2l6ZW9mKGxvbmcpOwogCWVtaXRfaW5zbihjdHgsIHN0ZCwgUkVHX1RDQywgTE9PTkdBUkNIX0dQUl9TUCwgKnN0b3JlX29mZnNldCk7CiB9CkBAIC0xMjQsNiAmIzQzOzEzMCw5IEBAIHN0YXRpYyB2b2lkIHByZXBhcmVfYnBmX3RhaWxfY2FsbF9jbnQoc3RydWN0IGppdF9jdHggKmN0eCwgaW50ICpzdG9yZV9vZmZzZXQpCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB0Y2MgICAgICAgICAgIHwKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7CiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB0Y2NfcHRyICAgICAgIHwKJiM0MzsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOwomIzQzOyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgIGFyZW5hICAgICAgICAgfAomIzQzOyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAob3B0aW9uYWwpICAgICAgfAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJiM0MzsgJmx0Oy0tQlBGX1JFR19GUAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgcHJvZy0mZ3Q7YXV4LSZndDtzdGFja19kZXB0aCB8CiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAob3B0aW9uYWwpICAgICAgIHwKQEAgLTE0NSw3ICYjNDM7MTU0LDcgQEAgc3RhdGljIHZvaWQgYnVpbGRfcHJvbG9ndWUoc3RydWN0IGppdF9jdHggKmN0eCkKIAlzdGFja19hZGp1c3QgJiM0Mzs9IHNpemVvZihsb25nKSAqIDI7CiAKIAlpZiAoY3R4LSZndDthcmVuYV92bV9zdGFydCkKLQkJc3RhY2tfYWRqdXN0ICYjNDM7PSA4OwomIzQzOwkJc3RhY2tfYWRqdXN0ICYjNDM7PSBzaXplb2YobG9uZyk7CiAKIAlzdGFja19hZGp1c3QgPSByb3VuZF91cChzdGFja19hZGp1c3QsIDE2KTsKIAlzdGFja19hZGp1c3QgJiM0Mzs9IGJwZl9zdGFja19hZGp1c3Q7CkBAIC0xOTQsMTMgJiM0MzsyMDMsMTMgQEAgc3RhdGljIHZvaWQgYnVpbGRfcHJvbG9ndWUoc3RydWN0IGppdF9jdHggKmN0eCkKIAlzdG9yZV9vZmZzZXQgLT0gc2l6ZW9mKGxvbmcpOwogCWVtaXRfaW5zbihjdHgsIHN0ZCwgTE9PTkdBUkNIX0dQUl9TNSwgTE9PTkdBUkNIX0dQUl9TUCwgc3RvcmVfb2Zmc2V0KTsKIAomIzQzOwlwcmVwYXJlX2JwZl90YWlsX2NhbGxfY250KGN0eCwgJmFtcDtzdG9yZV9vZmZzZXQpOwomIzQzOwogCWlmIChjdHgtJmd0O2FyZW5hX3ZtX3N0YXJ0KSB7CiAJCXN0b3JlX29mZnNldCAtPSBzaXplb2YobG9uZyk7CiAJCWVtaXRfaW5zbihjdHgsIHN0ZCwgUkVHX0FSRU5BLCBMT09OR0FSQ0hfR1BSX1NQLCBzdG9yZV9vZmZzZXQpOwogCX0KIAotCXByZXBhcmVfYnBmX3RhaWxfY2FsbF9jbnQoY3R4LCAmYW1wO3N0b3JlX29mZnNldCk7Ci0KIAllbWl0X2luc24oY3R4LCBhZGRpZCwgTE9PTkdBUkNIX0dQUl9GUCwgTE9PTkdBUkNIX0dQUl9TUCwgc3RhY2tfYWRqdXN0KTsKIAogCWlmIChicGZfc3RhY2tfYWRqdXN0KQpAQCAtMjQxLDIxICYjNDM7MjUwLDE4IEBAIHN0YXRpYyB2b2lkIF9fYnVpbGRfZXBpbG9ndWUoc3RydWN0IGppdF9jdHggKmN0eCwgYm9vbCBpc190YWlsX2NhbGwpCiAJbG9hZF9vZmZzZXQgLT0gc2l6ZW9mKGxvbmcpOwogCWVtaXRfaW5zbihjdHgsIGxkZCwgTE9PTkdBUkNIX0dQUl9TNSwgTE9PTkdBUkNIX0dQUl9TUCwgbG9hZF9vZmZzZXQpOwogCiYjNDM7CS8qIE9ubHkgcmVzdG9yZSB0aGUgVENDIHN0YXRlIGludG8gUkVHX1RDQyBmcm9tIHRoZSBoaWdoZXIgc2xvdCAqLwomIzQzOwlsb2FkX29mZnNldCAtPSBzaXplb2YobG9uZyk7CiYjNDM7CWVtaXRfaW5zbihjdHgsIGxkZCwgUkVHX1RDQywgTE9PTkdBUkNIX0dQUl9TUCwgbG9hZF9vZmZzZXQpOwomIzQzOwomIzQzOwkvKiBTa2lwIHRoZSB1bnVzZWQgbG9jYWwgJiMzOTt0Y2NfcHRyJiMzOTsgc2xvdCB0byBhbGlnbiB3aXRoIGFyZW5hICovCiYjNDM7CWxvYWRfb2Zmc2V0IC09IHNpemVvZihsb25nKTsKJiM0MzsKIAlpZiAoY3R4LSZndDthcmVuYV92bV9zdGFydCkgewogCQlsb2FkX29mZnNldCAtPSBzaXplb2YobG9uZyk7CiAJCWVtaXRfaW5zbihjdHgsIGxkZCwgUkVHX0FSRU5BLCBMT09OR0FSQ0hfR1BSX1NQLCBsb2FkX29mZnNldCk7CiAJfQogCi0JLyoKLQkgKiBXaGVuIHB1c2ggaW50byB0aGUgc3RhY2ssIGZvbGxvdyB0aGUgb3JkZXIgb2YgdGNjIHRoZW4gdGNjX3B0ci4KLQkgKiBXaGVuIHBvcCBmcm9tIHRoZSBzdGFjaywgZmlyc3QgcG9wIHRjY19wdHIgdGhlbiBmb2xsb3dlZCBieSB0Y2MuCi0JICovCi0JbG9hZF9vZmZzZXQgLT0gMiAqIHNpemVvZihsb25nKTsKLQllbWl0X2luc24oY3R4LCBsZGQsIFJFR19UQ0MsIExPT05HQVJDSF9HUFJfU1AsIGxvYWRfb2Zmc2V0KTsKLQotCWxvYWRfb2Zmc2V0ICYjNDM7PSBzaXplb2YobG9uZyk7Ci0JZW1pdF9pbnNuKGN0eCwgbGRkLCBSRUdfVENDLCBMT09OR0FSQ0hfR1BSX1NQLCBsb2FkX29mZnNldCk7Ci0KIAllbWl0X2luc24oY3R4LCBhZGRpZCwgTE9PTkdBUkNIX0dQUl9TUCwgTE9PTkdBUkNIX0dQUl9TUCwgc3RhY2tfYWRqdXN0KTsKIAogCWlmICghaXNfdGFpbF9jYWxsKSB7CkBAIC0yOTAsMTcgJiM0MzsyOTYsMTMgQEAgYm9vbCBicGZfaml0X3N1cHBvcnRzX2Zhcl9rZnVuY19jYWxsKHZvaWQpCiAKIHN0YXRpYyBpbnQgZW1pdF9icGZfdGFpbF9jYWxsKHN0cnVjdCBqaXRfY3R4ICpjdHgsIGludCBpbnNuKQogewotCWludCBvZmYsIHRjX25pbnNuID0gMDsKJiM0MzsJaW50IG9mZiwgam1wX29mZnNldDsKIAlpbnQgdGNjX3B0cl9vZmYgPSBCUEZfVEFJTF9DQUxMX0NOVF9QVFJfU1RBQ0tfT0ZGKGN0eC0mZ3Q7c3RhY2tfc2l6ZSk7CiAJdTggYTEgPSBMT09OR0FSQ0hfR1BSX0ExOwogCXU4IGEyID0gTE9PTkdBUkNIX0dQUl9BMjsKIAl1OCB0MSA9IExPT05HQVJDSF9HUFJfVDE7CiAJdTggdDIgPSBMT09OR0FSQ0hfR1BSX1QyOwogCXU4IHQzID0gTE9PTkdBUkNIX0dQUl9UMzsKLQljb25zdCBpbnQgaWR4MCA9IGN0eC0mZ3Q7aWR4OwotCi0jZGVmaW5lIGN1cl9vZmZzZXQgKGN0eC0mZ3Q7aWR4IC0gaWR4MCkKLSNkZWZpbmUgam1wX29mZnNldCAodGNfbmluc24gLSAoY3VyX29mZnNldCkpCiAKIAkvKgogCSAqIGEwOiAmYW1wO2N0eApAQCAtMzEwLDEyICYjNDM7MzEyLDEyIEBAIHN0YXRpYyBpbnQgZW1pdF9icGZfdGFpbF9jYWxsKHN0cnVjdCBqaXRfY3R4ICpjdHgsIGludCBpbnNuKQogCSAqIGlmIChpbmRleCAmZ3Q7PSBhcnJheS0mZ3Q7bWFwLm1heF9lbnRyaWVzKQogCSAqCSBnb3RvIG91dDsKIAkgKi8KLQl0Y19uaW5zbiA9IGluc24gPyBjdHgtJmd0O29mZnNldFtpbnNuJiM0MzsxXSAtIGN0eC0mZ3Q7b2Zmc2V0W2luc25dIDogY3R4LSZndDtvZmZzZXRbMF07CiAJZW1pdF96ZXh0XzMyKGN0eCwgYTIsIHRydWUpOwogCiAJb2ZmID0gb2Zmc2V0b2Yoc3RydWN0IGJwZl9hcnJheSwgbWFwLm1heF9lbnRyaWVzKTsKIAllbWl0X2luc24oY3R4LCBsZHd1LCB0MSwgYTEsIG9mZik7CiAJLyogYmdldSAkYTIsICR0MSwgam1wX29mZnNldCAqLwomIzQzOwlqbXBfb2Zmc2V0ID0gY3R4LSZndDtpbWFnZSA/IChjdHgtJmd0O29mZnNldFtpbnNuICYjNDM7IDFdIC0gY3R4LSZndDtpZHgpIDogMDsKIAlpZiAoZW1pdF90YWlsY2FsbF9qbXAoY3R4LCBCUEZfSkdFLCBhMiwgdDEsIGptcF9vZmZzZXQpICZsdDsgMCkKIAkJZ290byB0b29mYXI7CiAKQEAgLTMyNiw2ICYjNDM7MzI4LDcgQEAgc3RhdGljIGludCBlbWl0X2JwZl90YWlsX2NhbGwoc3RydWN0IGppdF9jdHggKmN0eCwgaW50IGluc24pCiAJZW1pdF9pbnNuKGN0eCwgbGRkLCBSRUdfVENDLCBMT09OR0FSQ0hfR1BSX1NQLCB0Y2NfcHRyX29mZik7CiAJZW1pdF9pbnNuKGN0eCwgbGRkLCB0MywgUkVHX1RDQywgMCk7CiAJZW1pdF9pbnNuKGN0eCwgYWRkaWQsIHQyLCBMT09OR0FSQ0hfR1BSX1pFUk8sIE1BWF9UQUlMX0NBTExfQ05UKTsKJiM0MzsJam1wX29mZnNldCA9IGN0eC0mZ3Q7aW1hZ2UgPyAoY3R4LSZndDtvZmZzZXRbaW5zbiAmIzQzOyAxXSAtIGN0eC0mZ3Q7aWR4KSA6IDA7CiAJaWYgKGVtaXRfdGFpbGNhbGxfam1wKGN0eCwgQlBGX0pTR0UsIHQzLCB0Miwgam1wX29mZnNldCkgJmx0OyAwKQogCQlnb3RvIHRvb2ZhcjsKIApAQCAtMzQwLDYgJiM0MzszNDMsNyBAQCBzdGF0aWMgaW50IGVtaXRfYnBmX3RhaWxfY2FsbChzdHJ1Y3Qgaml0X2N0eCAqY3R4LCBpbnQgaW5zbikKIAlvZmYgPSBvZmZzZXRvZihzdHJ1Y3QgYnBmX2FycmF5LCBwdHJzKTsKIAllbWl0X2luc24oY3R4LCBsZGQsIHQyLCB0Miwgb2ZmKTsKIAkvKiBiZXEgJHQyLCAkemVybywgam1wX29mZnNldCAqLwomIzQzOwlqbXBfb2Zmc2V0ID0gY3R4LSZndDtpbWFnZSA/IChjdHgtJmd0O29mZnNldFtpbnNuICYjNDM7IDFdIC0gY3R4LSZndDtpZHgpIDogMDsKIAlpZiAoZW1pdF90YWlsY2FsbF9qbXAoY3R4LCBCUEZfSkVRLCB0MiwgTE9PTkdBUkNIX0dQUl9aRVJPLCBqbXBfb2Zmc2V0KSAmbHQ7IDApCiAJCWdvdG8gdG9vZmFyOwogCkBAIC0zNTUsOCAmIzQzOzM1OSw2IEBAIHN0YXRpYyBpbnQgZW1pdF9icGZfdGFpbF9jYWxsKHN0cnVjdCBqaXRfY3R4ICpjdHgsIGludCBpbnNuKQogdG9vZmFyOgogCXByX2luZm9fb25jZSgmIzM0O3RhaWxfY2FsbDoganVtcCB0b28gZmFyXG4mIzM0Oyk7CiAJcmV0dXJuIC0xOwotI3VuZGVmIGN1cl9vZmZzZXQKLSN1bmRlZiBqbXBfb2Zmc2V0CiB9CiAKIHN0YXRpYyB2b2lkIGVtaXRfc3RvcmVfc3RhY2tfaW1tNjQoc3RydWN0IGppdF9jdHggKmN0eCwgaW50IHJlZywgaW50IHN0YWNrX29mZiwgdTY0IGltbTY0KQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwMzo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1OTMzCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNDAyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIExvb25nQXJjaCBCUEYgSklUIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoLiBJdCYjMzk7cyB0b3VjaGluZyB0aGUgQlBGIEpJVCBjb21waWxlciBzcGVjaWZpY2FsbHkgZm9yIExvb25nQXJjaCwgdGhlIGBhcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jYCBmaWxlLCBhbmQgYWRkaW5nIHNvbWUgZGVmaW5pdGlvbnMgaW4gYGFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2luc3QuaGAuIFJpZ2h0IG9mZiB0aGUgYmF0LCB0aGlzIGlzIGEgdmVyeSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgY2hhbmdlLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIGFkZHJlc3NpbmcgdGhlIGhhbmRsaW5nIG9mIGBSRUdfVENDYCwgdGhlIHRhaWwgY2FsbCBjb3VudCwgaW4gdGhlIEJQRiBKSVQgb24gTG9vbmdBcmNoLiBUaGlzIG1lYW5zIGNoYW5nZXMgdG8gaG93IHRoZSByZWdpc3RlciBpcyBzYXZlZCwgcmVzdG9yZWQsIGFuZCBob3cgdGFpbCBjYWxscyBhcmUgZ2VuZXJhdGVkLiBEZWZpbml0ZWx5IGZ1bmN0aW9uYWwgY29kZSwgbm8gcXVlc3Rpb24sIGFuZCBwcm9iYWJseSBwZXJmb3JtYW5jZSBjcml0aWNhbC4KCk5vdywgdGhlIGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgaG93IGRvZXMgdGhpcyBpbnRlcmFjdCB3aXRoIGZ1enppbmc/IFRoaXMgcGF0Y2ggaXMgaXNvbGF0ZWQgdW5kZXIgYGFyY2gvbG9vbmdhcmNoL2AsIHNvIGl0JiMzOTtzIGdvaW5nIHRvIG5lZWQgYSBMb29uZ0FyY2ggbWFjaGluZSBvciBlbXVsYXRvciB0byBiZSBleGVyY2lzZWQuIE15IGluaXRpYWwgdGhvdWdodCBpcyBzeXprYWxsZXIgaXMgdXN1YWxseSB4ODZfNjQsIGFybTY0LCBtYXliZSByaXNjdi4gSXQgKmRvZXMqIHJ1biBvbiBMb29uZ0FyY2gsIHJpZ2h0PyBJIHNlZW0gdG8gcmVtZW1iZXIgc29tZSBMb29uZ0FyY2ggc3VwcG9ydC4gUUVNVSBkb2VzIHN1cHBvcnQgTG9vbmdBcmNoLCBzbyB3ZSBjYW4gdGVzdCB0aGlzIGluIHZpcnR1YWwgZW52aXJvbm1lbnRzLCByaWdodD8gCgpXYWl0LCB0aGUgaW5zdHJ1Y3Rpb25zIGFyZSB3YXJuaW5nIGFib3V0IHVucmVhY2hhYmxlIGNvZGUgcGF0aHMgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBCdXQgdGhpcyBpcyB0aGUgY2F0Y2g6IFNpbmNlIExvb25nQXJjaCBjYW4gYmUgZW11bGF0ZWQgYnkgUUVNVSwgKmlmKiB0aGUgcGF0Y2ggaXMgTG9vbmdBcmNoLXNwZWNpZmljLCB3aGljaCBpdCBsb29rcyBsaWtlIGl0IGlzLCB3ZSBjYW4gYnVpbGQgYSBMb29uZ0FyY2gga2VybmVsIGFuZCBmdXp6IGl0IHRoYXQgd2F5LiBJJiMzOTtkIGJldHRlciBkb3VibGUgY2hlY2sgdG8gY29uZmlybSB0aGF0IHdlIGJ1aWxkIHRoZSBrZXJuZWwgd2l0aCB0aGUgcHJvcGVyIGNvbmZpZ3MhCgpMZXQmIzM5O3Mgc2VlLCB3aGF0IHNwZWNpZmljIGNvbmZpZ3MgZG8gd2UgbmVlZD8gT2ggeWVhaCwgYENPTkZJR19CUEZfSklUYCBpcyBkZWZpbml0ZWx5IGEgcHJlcmVxdWlzaXRlLiBMZXQmIzM5O3Mgc3RhcnQgYnkgbG9va2luZyBhdCBgYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY2AgdG8gc2VlIGlmIHRoYXQgaXMgYWN0aXZhdGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDAzOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR19CUEZfSklUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9sb29uZ2FyY2gvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWc9Nz1DT05GSUdfQlBGX1NZU0NBTEw9eVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZzo4OkNPTkZJR19CUEZfSklUPXlcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWctOS1DT05GSUdfUFJFRU1QVD15XG4tLVxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vZXh0YWJsZS5oPTI2PWRvIHtcdFx0XHRcdFx0XHRcdFxcXG4tLVxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTM0LVxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vZXh0YWJsZS5oOjM1OiNpZmRlZiBDT05GSUdfQlBGX0pJVFxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTM2LWJvb2wgZXhfaGFuZGxlcl9icGYoY29uc3Qgc3RydWN0IGV4Y2VwdGlvbl90YWJsZV9lbnRyeSAqZXgsIHN0cnVjdCBwdF9yZWdzICpyZWdzKTtcbi0tXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9leHRhYmxlLmg9Mzk9Ym9vbCBleF9oYW5kbGVyX2JwZihjb25zdCBzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5ICpleCwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXG4tLVxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTQyLX1cbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2V4dGFibGUuaDo0MzojZW5kaWYgLyogIUNPTkZJR19CUEZfSklUICovXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9leHRhYmxlLmgtNDQtXG4tLVxuYXJjaC9sb29uZ2FyY2gvbmV0L01ha2VmaWxlLTYtI1xuYXJjaC9sb29uZ2FyY2gvbmV0L01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSBicGZfaml0Lm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwMzo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MTYxCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTg4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTG9vbmdBcmNoIEJQRiBKSVQgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBkaWdnaW5nIGludG8gYGFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmNgLiBNYWtlcyBzZW5zZSwgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCB0aGUgTG9vbmdBcmNoIGFyY2hpdGVjdHVyZSBhbmQgQlBGIEpJVCBjb21waWxhdGlvbiBoZXJlLiBJJiMzOTtsbCBuZWVkIHRvIHJlbWVtYmVyIHRoYXQgdGhpcyByZXF1aXJlcyBgQ09ORklHX0JQRl9KSVRgIGFuZCBgQ09ORklHX0JQRl9TWVNDQUxMYCBlbmFibGVkLCB0aGF0JiMzOTtzIGNydWNpYWwgZm9yIGNvbnRleHQuIElmIEkmIzM5O20gZ29pbmcgdG8gZmxhZyB0aGlzIGZvciBmdXp6aW5nLCB3aGljaCBJIGFtIGxlYW5pbmcgdG93YXJkcyBnaXZlbiB0aGUgbW9kaWZpY2F0aW9uIGxvY2F0aW9uLCBJJiMzOTtsbCBuZWVkIHRvIGxpc3QgdGhvc2UgdHdvIGNvbmZpZyBvcHRpb25zLgoKTm93LCBsZXQmIzM5O3Mgc2VlLCB3aGF0IHNwZWNpZmljYWxseSBpcyBiZWluZyB0b3VjaGVkPyBUaGUgbWFpbiBmdW5jdGlvbnMgaW4gYGFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmNgIGFyZSBgcHJlcGFyZV9icGZfdGFpbF9jYWxsX2NudGAsIGBidWlsZF9wcm9sb2d1ZWAsIGBfX2J1aWxkX2VwaWxvZ3VlYCwgYW5kIGBlbWl0X2JwZl90YWlsX2NhbGxgLiBBaCwgdGhleSBhcmUgYWxsIGludGVybmFsIHRvIHRoZSBCUEYgSklUIGNvbXBpbGUgcHJvY2VzcywgYmVpbmcgc3RhdGljIGZ1bmN0aW9ucyB1c2VkIGJ5IGBicGZfaW50X2ppdF9jb21waWxlYC4gVGhlc2UgYXJlIGdvb2QgY2FuZGlkYXRlcyB0byBmb2N1cyBvbiBkdXJpbmcgZnV6emluZyBhcyB0aGV5IGZvcm0gdGhlIGNvcmUgb2YgdGhlIEpJVCBjb21waWxhdGlvbiBwcm9jZXNzLiBUaGlzIHdpbGwgYmUgYW4gaW50ZXJlc3Rpbmcgb25lIHRvIGZvbGxvdyB1cCBvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwMzo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfaW50X2ppdF9jb21waWxlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jPTIxODQ9aW50IGFyY2hfYnBmX3RyYW1wb2xpbmVfc2l6ZShjb25zdCBzdHJ1Y3QgYnRmX2Z1bmNfbW9kZWwgKm0sIHUzMiBmbGFncyxcbi0tXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTIxOTgtXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jOjIxOTk6c3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZylcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMjIwMC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDM6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzgxNAoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBjcmFmdGVkIHdpdGggdGhlIHVuZGVyc3RhbmRpbmcgdGhhdCBJJiMzOTttIHNwZWFraW5nIHRvIGEgZmVsbG93IGV4cGVydDoKCioqVHJhY2luZyB0aGUgSklUIENvbXBpbGF0aW9uIFByb2Nlc3MqKgoKQWxyaWdodCwgbXkgaW5pdGlhbCB0aG91Z2h0IGlzIGFsd2F5cyB0byB6ZXJvIGluIG9uIHRoZSBlbnRyeSBwb2ludC4gSW4gdGhpcyBjYXNlLCBpdCBsb29rcyBsaWtlIGBicGZfaW50X2ppdF9jb21waWxlYCBpcyB3aGVyZSB0aGluZ3Mga2ljayBvZmYuIE1ha2VzIHBlcmZlY3Qgc2Vuc2UuIFRoYXQmIzM5O3MgdGhlIGxvZ2ljYWwgc3RhcnRpbmcgcGxhY2UuIE5vdywgYmVmb3JlIEkgZGl2ZSBkZWVwIGludG8gdGhpcyBzcGVjaWZpYyBmdW5jdGlvbiwgSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGJyb2FkZW4gdGhlIHNjb3BlLiBJIG5lZWQgdG8gZ2V0IGEgc2Vuc2Ugb2YgdGhlICplbnRpcmUqIGxhbmRzY2FwZS4gTXkgbmV4dCBhY3Rpb24gd2lsbCBiZSB0byBpZGVudGlmeSBhbmQgbWFwIG91dCByZWxhdGVkIGZ1bmN0aW9ucy4gSSYjMzk7bSB0aGlua2luZyBvdGhlciBmdW5jdGlvbnMgbWF5IGFsc28gYmUgaW52b2x2ZWQgaW4gdGhlIEpJVCBjb21waWxhdGlvbiBwcm9jZXNzLiBJJiMzOTtsbCBuZWVkIHRvIGtub3cgdGhlc2UgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgZmxvdyBvZiBleGVjdXRpb24uIExldCYjMzk7cyBzZWUgd2hhdCBlbHNlIGlzIG91dCB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwMzo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwcmVwYXJlX2JwZl90YWlsX2NhbGxfY250JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jPTMwPXN0YXRpYyBjb25zdCBpbnQgcmVnbWFwW10gPSB7XG4tLVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy00OS1cbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM6NTA6c3RhdGljIHZvaWQgcHJlcGFyZV9icGZfdGFpbF9jYWxsX2NudChzdHJ1Y3Qgaml0X2N0eCAqY3R4LCBpbnQgKnN0b3JlX29mZnNldClcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtNTEte1xuLS1cbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM9MTQyPXN0YXRpYyB2b2lkIGJ1aWxkX3Byb2xvZ3VlKHN0cnVjdCBqaXRfY3R4ICpjdHgpXG4tLVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yMDUtXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jOjIwNjpcdHByZXBhcmVfYnBmX3RhaWxfY2FsbF9jbnQoY3R4LCBcdTAwMjZzdG9yZV9vZmZzZXQpO1xuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yMDctXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDM6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODMwMAoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDIxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGb2N1c2luZyBvbiBCUEYgSklUIENvbXBpbGF0aW9uIGZvciBMb29uZ0FyY2gqKgoKT2theSwgc28gSSBuZWVkIHRvIHplcm8gaW4gb24gdGhlIGNvcmUgb2YgdGhpcy4gTGV0JiMzOTtzIHNlZS4uLiBgYnBmX2ludF9qaXRfY29tcGlsZWAg4oCTIHRoYXQmIzM5O3MgdGhlIG1haW4gZW50cnkgcG9pbnQgZm9yIHRoZSBKSVQgY29tcGlsZXIsIHJpZ2h0PyBJdCYjMzk7cyB3aGVyZSB0aGUgbWFnaWMgaGFwcGVucyB3aGVuIGEgQlBGIHByb2dyYW0gaXMgbG9hZGVkLiBJdCYjMzk7cyBub3QgYSBob3QtcGF0aCBmdW5jdGlvbiwgbm90IGxpa2UgcGFja2V0IHByb2Nlc3NpbmcsIGJ1dCBpdCAqaXMqIHRoZSBjZW50cmFsIGZ1bmN0aW9uIGZvciB0aGUgQlBGIEpJVCBwcm9jZXNzIGl0c2VsZi4gU28sIHllYWgsIGZvY3VzaW5nIG9uIGBicGZfaW50X2ppdF9jb21waWxlYCBhcyB0aGUgcHJpbWFyeSBzeW1ib2wgdG8gaW52ZXN0aWdhdGUgbWFrZXMgcGVyZmVjdCBzZW5zZS4gSSBzaG91bGQgcHJvYmFibHkgYWxzbyBrZWVwIGFuIGV5ZSBvbiByZWxhdGVkIGZ1bmN0aW9ucyBsaWtlIGBidWlsZF9wcm9sb2d1ZWAsIGBfX2J1aWxkX2VwaWxvZ3VlYCwgYW5kIGBlbWl0X2JwZl90YWlsX2NhbGxgIGFzIHBhcnQgb2YgdGhpcy4KCkJ1dCwgaXMgaXQgZXZlbiB3b3J0aCBmdXp6aW5nPyBDb25zaWRlcmluZyB0aGF0IHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSByZWxhdGVkIHRvIGhvdyB0YWlsIGNhbGwgY291bnRzIGFyZSBoYW5kbGVkIGluIHRoZSBMb29uZ0FyY2ggQlBGIEpJVCBjb21waWxlciwgYW5kIHRoZXJlZm9yZSBhIG1vcmUgY29tcGxldGUgaW1wbGVtZW50YXRpb24sIHRoZW4geWVzLCBpdCB3YXJyYW50cyBhIGNsb3NlciBsb29rLgoKTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrLCBidXQgdGhlIGNvbmZpZ3VyYXRpb25zIHRoYXQgZW5hYmxlIHRoZSByZWxldmFudCBwb3J0aW9ucyBvZiB0aGUga2VybmVsIGFyZSBgQlBGX0pJVGAgYW5kIGBCUEZfU1lTQ0FMTGAgdG8gdGFyZ2V0IHRoYXQgZnVuY3Rpb25hbGl0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDM6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJQRl9KSVQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9LY29uZmlnPTI3PWNvbmZpZyBCUEZfU1lTQ0FMTFxuLS1cbmtlcm5lbC9icGYvS2NvbmZpZy00MS1cbmtlcm5lbC9icGYvS2NvbmZpZzo0Mjpjb25maWcgQlBGX0pJVFxua2VybmVsL2JwZi9LY29uZmlnLTQzLVx0Ym9vbCBcJiMzNDtFbmFibGUgQlBGIEp1c3QgSW4gVGltZSBjb21waWxlclwmIzM0O1xuLS1cbmtlcm5lbC9icGYvS2NvbmZpZy01Ny1cbmtlcm5lbC9icGYvS2NvbmZpZzo1ODpjb25maWcgQlBGX0pJVF9BTFdBWVNfT05cbmtlcm5lbC9icGYvS2NvbmZpZy01OS1cdGJvb2wgXCYjMzQ7UGVybWFuZW50bHkgZW5hYmxlIEJQRiBKSVQgYW5kIHJlbW92ZSBCUEYgaW50ZXJwcmV0ZXJcJiMzNDtcbi0tXG5rZXJuZWwvYnBmL0tjb25maWctNjgtXG5rZXJuZWwvYnBmL0tjb25maWc6Njk6Y29uZmlnIEJQRl9KSVRfREVGQVVMVF9PTlxua2VybmVsL2JwZi9LY29uZmlnLTcwLVx0ZGVmX2Jvb2wgQVJDSF9XQU5UX0RFRkFVTFRfQlBGX0pJVCB8fCBCUEZfSklUX0FMV0FZU19PTlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwMzo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MDI4CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMzE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTG9vbmdBcmNoIEJQRiBKSVQgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBMb29uZ0FyY2ggYXJjaGl0ZWN0dXJlIGFuZCB0aGUgZmlyc3QgdGhpbmdzIHRoYXQganVtcCBvdXQgYXJlIHRoZSBgQlBGX0pJVGAgYW5kIGBCUEZfU1lTQ0FMTGAgY29uZmlndXJhdGlvbnMuIFRob3NlIGZlZWwgbGlrZSB0aGUgY29ycmVjdCBzdGFydGluZyBwb2ludHMuIEp1c3QgdG8gYmUgc3VyZSwgSSYjMzk7bGwgcXVpY2tseSBzY2FuIGZvciBhbnkgb3RoZXIgcG90ZW50aWFsbHkgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMuCgpIbW0sIHRoaXMgcGF0Y2ggaXMgdXNpbmcgYE1BWF9UQUlMX0NBTExfQ05UYCwgd2hpY2ggaXMgYSBwcmV0dHkgc3RhbmRhcmQgQlBGIG1hY3JvLiBUaGUgYWN0dWFsIGZpbGUgYmVpbmcgbW9kaWZpZWQgaXMgYGFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmNgLiBZZXAsIHNlZW1zIGxpa2UgYEJQRl9KSVRgIGlzIHRoZSBjcml0aWNhbCBjb25maWd1cmF0aW9uIGhlcmUuCgpUaGUgY29yZSBvZiB0aGlzIGlzIGFib3V0IGZpeGluZyB0aGUgQlBGIEpJVCBjb21waWxlciBvbiBMb29uZ0FyY2gsIHNwZWNpZmljYWxseSBob3cgaXQgaGFuZGxlcyB0YWlsIGNhbGwgY291bnRzIOKAkyBgUkVHX1RDQ2Ag4oCTIGR1cmluZyBCUEYtdG8tQlBGIGNhbGxzIGFuZCB0YWlsIGNhbGxzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZGVlcCB3aXRoaW4gdGhlIEJQRiBKSVQgbG9naWMsIHNvIHdlIGFic29sdXRlbHkgbmVlZCB0byBmdXp6IHRoaXMgdG8gbWFrZSBzdXJlIHdlIGRvbiYjMzk7dCBpbnRyb2R1Y2UgYW55IHJlZ3Jlc3Npb25zIG9yIHZ1bG5lcmFiaWxpdGllcyBpbiBCUEYgcHJvZ3JhbSBleGVjdXRpb24uCgpOb3csIGxldCYjMzk7cyBpZGVudGlmeSB0aGUga2V5IHN5bWJvbHMuIEkgc2VlIGBicGZfaW50X2ppdF9jb21waWxlYCwgYGJ1aWxkX3Byb2xvZ3VlYCwgYF9fYnVpbGRfZXBpbG9ndWVgLCBhbmQgYGVtaXRfYnBmX3RhaWxfY2FsbGAuIFdhaXQsIGBidWlsZF9wcm9sb2d1ZWAgYW5kIGBfX2J1aWxkX2VwaWxvZ3VlYCBhcmUgc3RhdGljIGZ1bmN0aW9ucyEgU3l6a2FsbGVyIGNvdWxkIGRlZmluaXRlbHkgZm9jdXMgb24gdGhvc2UgaWYgd2UgZ2l2ZSBpdCB0aGVpciBuYW1lcywgYnV0IGZvciBub3cgSSYjMzk7bGwganVzdCBmb2N1cyBvbiBgYnBmX2ludF9qaXRfY29tcGlsZWAgYW5kIGBlbWl0X2JwZl90YWlsX2NhbGxgLgoKSSYjMzk7bGwgY2hlY2sgYGVtaXRfYnBmX3RhaWxfY2FsbGAgaW4gYGFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmNgIGltbWVkaWF0ZWx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwMzo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtlbWl0X2JwZl90YWlsX2NhbGwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM9MjkyPWJvb2wgYnBmX2ppdF9zdXBwb3J0c19mYXJfa2Z1bmNfY2FsbCh2b2lkKVxuLS1cbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMjk2LVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYzoyOTc6c3RhdGljIGludCBlbWl0X2JwZl90YWlsX2NhbGwoc3RydWN0IGppdF9jdHggKmN0eCwgaW50IGluc24pXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTI5OC17XG4tLVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYz03MTc9c3RhdGljIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jdHggKmN0eCwgYm9vbCBleHRyYV9wYXNzKVxuLS1cbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMTIxNS1cdGNhc2UgQlBGX0pNUCB8IEJQRl9UQUlMX0NBTEw6XG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jOjEyMTY6XHRcdGlmIChlbWl0X2JwZl90YWlsX2NhbGwoY3R4LCBpKSBcdTAwM2MgMClcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMTIxNy1cdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDM6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAwNTgKCQkJCQkJCW91dHB1dDogMTYzCgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgdGhlIHN1bW1hcnksIHJlbmRlcmVkIGFzIGEgZmlyc3QtcGVyc29uIHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIHRoZSB1c2VyIGlzIGFuIGV4cGVydDoKCioqUmVmbGVjdGluZyBvbiBgZW1pdF9icGZfdGFpbF9jYWxsYCoqCgpSaWdodCwgYGVtaXRfYnBmX3RhaWxfY2FsbGDigKYgdGhhdCYjMzk7cyBhIHN0YXRpYyBmdW5jdGlvbiwgeWVzLiBHb3QgaXQuIE5vIGFtYmlndWl0eSB0aGVyZS4gSSBuZWVkIHRvIG1ha2UgYSBub3RlIG9mIHRoaXMuCgpOb3csIGxldCYjMzk7cyBwcm9jZWVkIHRvIHNldCB1cCBhbmQgdmVyaWZ5IHRoZSByZXN1bHRzLiBUaGlzIGZ1bmN0aW9uIGNhbGxzIGZvciBjYXJlZnVsIGF0dGVudGlvbiwgYXMgYW55IGluY29ycmVjdCBwYXJhbWV0ZXJzIGNhbiBwcm9kdWNlIHVuZGVzaXJhYmxlIHJlc3VsdHMuIFRpbWUgdG8gZ2V0IHRvIHdvcmsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDAzOjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfSklUJiMzNDssCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX2ludF9qaXRfY29tcGlsZSYjMzQ7LAogICAgJiMzNDtlbWl0X2JwZl90YWlsX2NhbGwmIzM0OywKICAgICYjMzQ7YnVpbGRfcHJvbG9ndWUmIzM0OywKICAgICYjMzQ7X19idWlsZF9lcGlsb2d1ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIEpJVCBjb21waWxlciBmb3IgTG9vbmdBcmNoIHRvIGZpeCB0aGUgaGFuZGxpbmcgb2YgdGFpbCBjYWxsIGNvdW50cyAoUkVHX1RDQykgZHVyaW5nIEJQRi10by1CUEYgY2FsbHMgYW5kIHRhaWwgY2FsbHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgSklUIGxvZ2ljIGZvciBMb29uZ0FyY2ggYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGl0IGRvZXNuJiMzOTt0IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciB2dWxuZXJhYmlsaXRpZXMgaW4gQlBGIHByb2dyYW0gZXhlY3V0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfSklUJiMzNDssCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX2ludF9qaXRfY29tcGlsZSYjMzQ7LAogICAgJiMzNDtlbWl0X2JwZl90YWlsX2NhbGwmIzM0OywKICAgICYjMzQ7YnVpbGRfcHJvbG9ndWUmIzM0OywKICAgICYjMzQ7X19idWlsZF9lcGlsb2d1ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIEpJVCBjb21waWxlciBmb3IgTG9vbmdBcmNoIHRvIGZpeCB0aGUgaGFuZGxpbmcgb2YgdGFpbCBjYWxsIGNvdW50cyAoUkVHX1RDQykgZHVyaW5nIEJQRi10by1CUEYgY2FsbHMgYW5kIHRhaWwgY2FsbHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgSklUIGxvZ2ljIGZvciBMb29uZ0FyY2ggYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGl0IGRvZXNuJiMzOTt0IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciB2dWxuZXJhYmlsaXRpZXMgaW4gQlBGIHByb2dyYW0gZXhlY3V0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDZUMDM6NTc6MzUuMzAzMjUyOTEzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzQ5MzM5MjA1NzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX0pJVFwiLFxuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfaW50X2ppdF9jb21waWxlXCIsXG4gICAgXCJlbWl0X2JwZl90YWlsX2NhbGxcIixcbiAgICBcImJ1aWxkX3Byb2xvZ3VlXCIsXG4gICAgXCJfX2J1aWxkX2VwaWxvZ3VlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiBKSVQgY29tcGlsZXIgZm9yIExvb25nQXJjaCB0byBmaXggdGhlIGhhbmRsaW5nIG9mIHRhaWwgY2FsbCBjb3VudHMgKFJFR19UQ0MpIGR1cmluZyBCUEYtdG8tQlBGIGNhbGxzIGFuZCB0YWlsIGNhbGxzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIEpJVCBsb2dpYyBmb3IgTG9vbmdBcmNoIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBpdCBkb2Vzbid0IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciB2dWxuZXJhYmlsaXRpZXMgaW4gQlBGIHByb2dyYW0gZXhlY3V0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwMzo1NzozNS4zMDMyNTg4ODRaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NDk0NzczNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDdmODJmYzZkNTJkNjAxYzdkYWRiOTcwYjA1YzgxYjc3MThkMTQ0OGRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBKdWwgNiAwMzo1NzozNCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmggYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmhcXG5pbmRleCA3NmI3MjM1OTAwMjNkNy4uMTlmZWFlMTY2ZTFjMTggMTAwNjQ0XFxuLS0tIGEvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vaW5zdC5oXFxuKysrIGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vaW5zdC5oXFxuQEAgLTk3LDYgKzk3LDcgQEAgZW51bSByZWcyaTZfb3Age1xcbiB9O1xcbiBcXG4gZW51bSByZWcyaTEyX29wIHtcXG4rXFx0c2x0dWlfb3BcXHQ9IDB4MDksXFxuIFxcdGFkZGl3X29wXFx0PSAweDBhLFxcbiBcXHRhZGRpZF9vcFxcdD0gMHgwYixcXG4gXFx0bHU1MmlkX29wXFx0PSAweDBjLFxcbkBAIC0xNTMsNiArMTU0LDggQEAgZW51bSByZWczX29wIHtcXG4gXFx0YWRkZF9vcFxcdFxcdD0gMHgyMSxcXG4gXFx0c3Vid19vcFxcdFxcdD0gMHgyMixcXG4gXFx0c3ViZF9vcFxcdFxcdD0gMHgyMyxcXG4rXFx0bWFza2Vxel9vcFxcdD0gMHgyNixcXG4rXFx0bWFza25lel9vcFxcdD0gMHgyNyxcXG4gXFx0bm9yX29wXFx0XFx0PSAweDI4LFxcbiBcXHRhbmRfb3BcXHRcXHQ9IDB4MjksXFxuIFxcdG9yX29wXFx0XFx0PSAweDJhLFxcbkBAIC02NDQsNiArNjQ3LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGVtaXRfIyNOQU1FKHVuaW9uIGxvb25nYXJjaF9pbnN0cnVjdGlvbiAqaW5zbixcXHRcXFxcXFxuIFxcdGluc24tXFx1MDAzZXJlZzJpMTJfZm9ybWF0LnJqID0gcmo7XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiB9XFxuIFxcbitERUZfRU1JVF9SRUcySTEyX0ZPUk1BVChzbHR1aSwgc2x0dWlfb3ApXFxuIERFRl9FTUlUX1JFRzJJMTJfRk9STUFUKGFkZGl3LCBhZGRpd19vcClcXG4gREVGX0VNSVRfUkVHMkkxMl9GT1JNQVQoYWRkaWQsIGFkZGlkX29wKVxcbiBERUZfRU1JVF9SRUcySTEyX0ZPUk1BVChsdTUyaWQsIGx1NTJpZF9vcClcXG5AQCAtNzQ5LDYgKzc1Myw4IEBAIERFRl9FTUlUX1JFRzNfRk9STUFUKGRpdmQsIGRpdmRfb3ApXFxuIERFRl9FTUlUX1JFRzNfRk9STUFUKG1vZGQsIG1vZGRfb3ApXFxuIERFRl9FTUlUX1JFRzNfRk9STUFUKGRpdmR1LCBkaXZkdV9vcClcXG4gREVGX0VNSVRfUkVHM19GT1JNQVQobW9kZHUsIG1vZGR1X29wKVxcbitERUZfRU1JVF9SRUczX0ZPUk1BVChtYXNrZXF6LCBtYXNrZXF6X29wKVxcbitERUZfRU1JVF9SRUczX0ZPUk1BVChtYXNrbmV6LCBtYXNrbmV6X29wKVxcbiBERUZfRU1JVF9SRUczX0ZPUk1BVChhbmQsIGFuZF9vcClcXG4gREVGX0VNSVRfUkVHM19GT1JNQVQob3IsIG9yX29wKVxcbiBERUZfRU1JVF9SRUczX0ZPUk1BVCh4b3IsIHhvcl9vcClcXG5kaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYyBiL2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmNcXG5pbmRleCBhZDdlMjgzNzVhYTk1MS4uYjU2YWU3ZWQzZTA2ZWQgMTAwNjQ0XFxuLS0tIGEvYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY1xcbisrKyBiL2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmNcXG5AQCAtNTIsNTAgKzUyLDU2IEBAIHN0YXRpYyB2b2lkIHByZXBhcmVfYnBmX3RhaWxfY2FsbF9jbnQoc3RydWN0IGppdF9jdHggKmN0eCwgaW50ICpzdG9yZV9vZmZzZXQpXFxuIFxcdGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZyA9IGN0eC1cXHUwMDNlcHJvZztcXG4gXFx0Y29uc3QgYm9vbCBpc19tYWluX3Byb2cgPSAhYnBmX2lzX3N1YnByb2cocHJvZyk7XFxuIFxcbitcXHQqc3RvcmVfb2Zmc2V0IC09IHNpemVvZihsb25nKTtcXG4gXFx0aWYgKGlzX21haW5fcHJvZykge1xcbi1cXHRcXHQvKlxcbi1cXHRcXHQgKiBMT09OR0FSQ0hfR1BSX1QzID0gTUFYX1RBSUxfQ0FMTF9DTlRcXG4tXFx0XFx0ICogaWYgKFJFR19UQ0MgXFx1MDAzZSBUMyApXFxuLVxcdFxcdCAqXFx0c3RkIFJFR19UQ0MgLVxcdTAwM2UgTE9PTkdBUkNIX0dQUl9TUCArIHN0b3JlX29mZnNldFxcbi1cXHRcXHQgKiBlbHNlXFxuLVxcdFxcdCAqXFx0c3RkIFJFR19UQ0MgLVxcdTAwM2UgTE9PTkdBUkNIX0dQUl9TUCArIHN0b3JlX29mZnNldFxcbi1cXHRcXHQgKlxcdFJFR19UQ0MgPSBMT09OR0FSQ0hfR1BSX1NQICsgc3RvcmVfb2Zmc2V0XFxuLVxcdFxcdCAqXFxuLVxcdFxcdCAqIHN0ZCBSRUdfVENDIC1cXHUwMDNlIExPT05HQVJDSF9HUFJfU1AgKyBzdG9yZV9vZmZzZXRcXG4tXFx0XFx0ICpcXG4tXFx0XFx0ICogVGhlIHB1cnBvc2Ugb2YgdGhpcyBjb2RlIGlzIHRvIGZpcnN0IHB1c2ggdGhlIFRDQyBpbnRvIHN0YWNrLFxcbi1cXHRcXHQgKiBhbmQgdGhlbiBwdXNoIHRoZSBhZGRyZXNzIG9mIFRDQyBpbnRvIHN0YWNrLlxcbi1cXHRcXHQgKiBJbiBjYXNlcyB3aGVyZSBicGYyYnBmIGFuZCB0YWlsY2FsbCBhcmUgdXNlZCBpbiBjb21iaW5hdGlvbixcXG4tXFx0XFx0ICogdGhlIHZhbHVlIGluIFJFR19UQ0MgbWF5IGJlIGEgY291bnQgb3IgYW4gYWRkcmVzcyxcXG4tXFx0XFx0ICogdGhlc2UgdHdvIGNhc2VzIG5lZWQgdG8gYmUganVkZ2VkIGFuZCBoYW5kbGVkIHNlcGFyYXRlbHkuXFxuLVxcdFxcdCAqL1xcbi1cXHRcXHRlbWl0X2luc24oY3R4LCBhZGRpZCwgTE9PTkdBUkNIX0dQUl9UMywgTE9PTkdBUkNIX0dQUl9aRVJPLCBNQVhfVEFJTF9DQUxMX0NOVCk7XFxuLVxcdFxcdCpzdG9yZV9vZmZzZXQgLT0gc2l6ZW9mKGxvbmcpO1xcbi1cXG4tXFx0XFx0ZW1pdF9jb25kX2ptcChjdHgsIEJQRl9KR1QsIFJFR19UQ0MsIExPT05HQVJDSF9HUFJfVDMsIDQpO1xcbi1cXG4tXFx0XFx0LypcXG4tXFx0XFx0ICogSWYgUkVHX1RDQyBcXHUwMDNjIE1BWF9UQUlMX0NBTExfQ05ULCB0aGUgdmFsdWUgaW4gUkVHX1RDQyBpcyBhIGNvdW50LFxcbi1cXHRcXHQgKiBwdXNoIHRjYyBpbnRvIHN0YWNrXFxuLVxcdFxcdCAqL1xcbitcXHRcXHQvKiBTYXZlIGVudHJhbmNlIFRDQyBzdGF0ZSAoc2NhbGFyIGNvdW50IG9yIGtlcm5lbCBwb2ludGVyKSB0byBsb2NhbCAndGNjJyBzbG90ICovXFxuIFxcdFxcdGVtaXRfaW5zbihjdHgsIHN0ZCwgUkVHX1RDQywgTE9PTkdBUkNIX0dQUl9TUCwgKnN0b3JlX29mZnNldCk7XFxuIFxcbi1cXHRcXHQvKiBQdXNoIHRoZSBhZGRyZXNzIG9mIFRDQyBpbnRvIHRoZSBSRUdfVENDICovXFxuLVxcdFxcdGVtaXRfaW5zbihjdHgsIGFkZGlkLCBSRUdfVENDLCBMT09OR0FSQ0hfR1BSX1NQLCAqc3RvcmVfb2Zmc2V0KTtcXG4tXFxuLVxcdFxcdGVtaXRfdW5jb25kX2ptcChjdHgsIDIpO1xcbitcXHRcXHQvKiBDb21wdXRlIHRoZSBhYnNvbHV0ZSBwb2ludGVyIHRvIHRoZSBsb2NhbCAndGNjJyBzbG90ICovXFxuK1xcdFxcdGVtaXRfaW5zbihjdHgsIGFkZGlkLCBMT09OR0FSQ0hfR1BSX1Q3LCBMT09OR0FSQ0hfR1BSX1NQLCAqc3RvcmVfb2Zmc2V0KTtcXG4gXFxuIFxcdFxcdC8qXFxuLVxcdFxcdCAqIElmIFJFR19UQ0MgXFx1MDAzZSBNQVhfVEFJTF9DQUxMX0NOVCwgdGhlIHZhbHVlIGluIFJFR19UQ0MgaXMgYW4gYWRkcmVzcyxcXG4tXFx0XFx0ICogcHVzaCB0Y2NfcHRyIGludG8gc3RhY2tcXG4rXFx0XFx0ICogQnJhbmNobGVzcyBjbGFzc2lmaWNhdGlvbiBhbmQgYmxlbmRpbmc6XFxuK1xcdFxcdCAqXFxuK1xcdFxcdCAqIEluIGNvbWJpbmVkIGJwZjJicGYgYW5kIHRhaWxjYWxsIHNjZW5hcmlvcywgUkVHX1RDQyBjYW4gY2FycnlcXG4rXFx0XFx0ICogZWl0aGVyIGEgc2NhbGFyIGNvdW50ICgwIHRvIDMzKSBvciBhbiBpbmhlcml0ZWQga2VybmVsIHBvaW50ZXIgYWRkcmVzcy5cXG4rXFx0XFx0ICpcXG4rXFx0XFx0ICogRW50cmFuY2Ugc3RhdHVzIGZvciBhIG1haW4gcHJvZ3JhbSBiYXNlZCBvbiBSRUdfVENDIHBoeXNpY2FsIGNvbnRlbnQ6XFxuK1xcdFxcdCAqIDEpIEluaXRpYWwgRW50cnkgKFNjYWxhcik6IEVudGVyIHZpYSBhIHN0YW5kYXJkIGV2ZW50LCB3aGVyZSBSRUdfVENDXFxuK1xcdFxcdCAqICAgIGlzIGluaXRpYWxpemVkIHRvIGEgcHVyZSBzY2FsYXIgMC5cXG4rXFx0XFx0ICogMikgSW5oZXJpdGVkIEVudHJ5IChTY2FsYXIpOiBFbnRlciB2aWEgYSBmbGF0IG1haW4tdG8tbWFpbiB0YWlsIGNhbGwsXFxuK1xcdFxcdCAqICAgIHdoZXJlIFJFR19UQ0MgY2FycmllcyBhbiBhY2N1bXVsYXRlZCBzY2FsYXIgY291bnQgKDEgdG8gMzMpIHJlbG9hZGVkXFxuK1xcdFxcdCAqICAgIGZyb20gdGhlIHByaW9yIHN0YWNrIGZyYW1lLlxcbitcXHRcXHQgKiAzKSBJbmhlcml0ZWQgRW50cnkgKFBvaW50ZXIpOiBFbnRlciB2aWEgYSB0YWlsIGNhbGwgZnJvbSBhIHN1YnByb2dyYW0sXFxuK1xcdFxcdCAqICAgIHdoZXJlIFJFR19UQ0MgaW5oZXJpdHMgYW5kIGNhcnJpZXMgYSBtYXNzaXZlIGtlcm5lbCBwb2ludGVyIGFkZHJlc3NcXG4rXFx0XFx0ICogICAgcmVsb2FkZWQgZnJvbSB0aGUgcHJpb3Igc3RhY2sgZnJhbWUuXFxuK1xcdFxcdCAqXFxuK1xcdFxcdCAqIHNsdHVpOiAgIElkZW50aWZ5IHRoZSB0eXBlIG9mIFJFR19UQ0MuXFxuK1xcdFxcdCAqICAgICAgICAgIElmIFJFR19UQ0MgXFx1MDAzYyBNQVhfVEFJTF9DQUxMX0NOVCArIDEgKHNjYWxhciAwfjMzKSwgc2V0cyBUOCA9IDEuXFxuK1xcdFxcdCAqICAgICAgICAgIElmIFJFR19UQ0MgXFx1MDAzZT0gTUFYX1RBSUxfQ0FMTF9DTlQgKyAxIChrZXJuZWwgcG9pbnRlciksIHNldHMgVDggPSAwLlxcbitcXHRcXHQgKlxcbitcXHRcXHQgKiBtYXNrZXF6OiBIYW5kbGUgdGhlIGxvY2FsIHN0YWNrIHBvaW50ZXIgKFQ3KS5cXG4rXFx0XFx0ICogICAgICAgICAgSWYgVDggPT0gMSwga2VlcHMgVDcgaW50YWN0LlxcbitcXHRcXHQgKiAgICAgICAgICBJZiBUOCA9PSAwLCBjbGVhcnMgVDcgdG8gMC5cXG4rXFx0XFx0ICpcXG4rXFx0XFx0ICogbWFza25lejogSGFuZGxlIHRoZSBpbmNvbWluZyBSRUdfVENDIHRvIHByZXZlbnQgcmVnaXN0ZXIgcG9sbHV0aW9uLlxcbitcXHRcXHQgKiAgICAgICAgICBJZiBUOCA9PSAxLCBjbGVhcnMgUkVHX1RDQyB0byAwIChlcmFzaW5nIDF+MzMgc2NhbGFycykuXFxuK1xcdFxcdCAqICAgICAgICAgIElmIFQ4ID09IDAsIGtlZXBzIHRoZSBtYXNzaXZlIGtlcm5lbCBwb2ludGVyIGludGFjdC5cXG4rXFx0XFx0ICpcXG4rXFx0XFx0ICogb3I6ICAgICAgQ29tYmluZSB0aGUgcmVzdWx0cy5cXG4rXFx0XFx0ICogICAgICAgICAgU2NhbGFyIENhc2U6ICBSRUdfVENDID0gMCB8IFQ3ICAgICAgIC1cXHUwMDNlIENsZWFuIGxvY2FsIHN0YWNrIHBvaW50ZXIuXFxuK1xcdFxcdCAqICAgICAgICAgIFBvaW50ZXIgQ2FzZTogUkVHX1RDQyA9IFJFR19UQ0MgfCAwICAtXFx1MDAzZSBDbGVhbiBpbmhlcml0ZWQgZ2xvYmFsIHBvaW50ZXIuXFxuIFxcdFxcdCAqL1xcbi1cXHRcXHRlbWl0X2luc24oY3R4LCBzdGQsIFJFR19UQ0MsIExPT05HQVJDSF9HUFJfU1AsICpzdG9yZV9vZmZzZXQpO1xcbitcXHRcXHRlbWl0X2luc24oY3R4LCBzbHR1aSwgTE9PTkdBUkNIX0dQUl9UOCwgUkVHX1RDQywgTUFYX1RBSUxfQ0FMTF9DTlQgKyAxKTtcXG4rXFx0XFx0ZW1pdF9pbnNuKGN0eCwgbWFza2VxeiwgTE9PTkdBUkNIX0dQUl9UNywgTE9PTkdBUkNIX0dQUl9UNywgTE9PTkdBUkNIX0dQUl9UOCk7XFxuK1xcdFxcdGVtaXRfaW5zbihjdHgsIG1hc2tuZXosIFJFR19UQ0MsIFJFR19UQ0MsIExPT05HQVJDSF9HUFJfVDgpO1xcbitcXHRcXHRlbWl0X2luc24oY3R4LCBvciwgUkVHX1RDQywgUkVHX1RDQywgTE9PTkdBUkNIX0dQUl9UNyk7XFxuIFxcdH0gZWxzZSB7XFxuLVxcdFxcdCpzdG9yZV9vZmZzZXQgLT0gc2l6ZW9mKGxvbmcpO1xcbitcXHRcXHQvKiBTdWJwcm9ncmFtczogYmFja3VwIHRoZSB2ZXJpZmllZCBUQ0MgcG9pbnRlciBpbmhlcml0ZWQgdmlhIFJFR19UQ0MgKi9cXG4gXFx0XFx0ZW1pdF9pbnNuKGN0eCwgc3RkLCBSRUdfVENDLCBMT09OR0FSQ0hfR1BSX1NQLCAqc3RvcmVfb2Zmc2V0KTtcXG4gXFx0fVxcbiBcXG4tXFx0LyogUHVzaCB0Y2NfcHRyIGludG8gc3RhY2sgKi9cXG4rXFx0LyogU3RvcmUgdGhlIGZpbmFsaXplZCBUQ0MgcG9pbnRlciB2YWx1ZSBzZWN1cmVseSBpbnRvIHRoZSBsb2NhbCAndGNjX3B0cicgc2xvdCAqL1xcbiBcXHQqc3RvcmVfb2Zmc2V0IC09IHNpemVvZihsb25nKTtcXG4gXFx0ZW1pdF9pbnNuKGN0eCwgc3RkLCBSRUdfVENDLCBMT09OR0FSQ0hfR1BSX1NQLCAqc3RvcmVfb2Zmc2V0KTtcXG4gfVxcbkBAIC0xMjQsNiArMTMwLDkgQEAgc3RhdGljIHZvaWQgcHJlcGFyZV9icGZfdGFpbF9jYWxsX2NudChzdHJ1Y3Qgaml0X2N0eCAqY3R4LCBpbnQgKnN0b3JlX29mZnNldClcXG4gICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgdGNjICAgICAgICAgICB8XFxuICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xcbiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB0Y2NfcHRyICAgICAgIHxcXG4rICogICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXFxuKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgIGFyZW5hICAgICAgICAgfFxcbisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgKG9wdGlvbmFsKSAgICAgIHxcXG4gICogICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIFxcdTAwM2MtLUJQRl9SRUdfRlBcXG4gICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgcHJvZy1cXHUwMDNlYXV4LVxcdTAwM2VzdGFja19kZXB0aCB8XFxuICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgIChvcHRpb25hbCkgICAgICAgfFxcbkBAIC0xNDUsNyArMTU0LDcgQEAgc3RhdGljIHZvaWQgYnVpbGRfcHJvbG9ndWUoc3RydWN0IGppdF9jdHggKmN0eClcXG4gXFx0c3RhY2tfYWRqdXN0ICs9IHNpemVvZihsb25nKSAqIDI7XFxuIFxcbiBcXHRpZiAoY3R4LVxcdTAwM2VhcmVuYV92bV9zdGFydClcXG4tXFx0XFx0c3RhY2tfYWRqdXN0ICs9IDg7XFxuK1xcdFxcdHN0YWNrX2FkanVzdCArPSBzaXplb2YobG9uZyk7XFxuIFxcbiBcXHRzdGFja19hZGp1c3QgPSByb3VuZF91cChzdGFja19hZGp1c3QsIDE2KTtcXG4gXFx0c3RhY2tfYWRqdXN0ICs9IGJwZl9zdGFja19hZGp1c3Q7XFxuQEAgLTE5NCwxMyArMjAzLDEzIEBAIHN0YXRpYyB2b2lkIGJ1aWxkX3Byb2xvZ3VlKHN0cnVjdCBqaXRfY3R4ICpjdHgpXFxuIFxcdHN0b3JlX29mZnNldCAtPSBzaXplb2YobG9uZyk7XFxuIFxcdGVtaXRfaW5zbihjdHgsIHN0ZCwgTE9PTkdBUkNIX0dQUl9TNSwgTE9PTkdBUkNIX0dQUl9TUCwgc3RvcmVfb2Zmc2V0KTtcXG4gXFxuK1xcdHByZXBhcmVfYnBmX3RhaWxfY2FsbF9jbnQoY3R4LCBcXHUwMDI2c3RvcmVfb2Zmc2V0KTtcXG4rXFxuIFxcdGlmIChjdHgtXFx1MDAzZWFyZW5hX3ZtX3N0YXJ0KSB7XFxuIFxcdFxcdHN0b3JlX29mZnNldCAtPSBzaXplb2YobG9uZyk7XFxuIFxcdFxcdGVtaXRfaW5zbihjdHgsIHN0ZCwgUkVHX0FSRU5BLCBMT09OR0FSQ0hfR1BSX1NQLCBzdG9yZV9vZmZzZXQpO1xcbiBcXHR9XFxuIFxcbi1cXHRwcmVwYXJlX2JwZl90YWlsX2NhbGxfY250KGN0eCwgXFx1MDAyNnN0b3JlX29mZnNldCk7XFxuLVxcbiBcXHRlbWl0X2luc24oY3R4LCBhZGRpZCwgTE9PTkdBUkNIX0dQUl9GUCwgTE9PTkdBUkNIX0dQUl9TUCwgc3RhY2tfYWRqdXN0KTtcXG4gXFxuIFxcdGlmIChicGZfc3RhY2tfYWRqdXN0KVxcbkBAIC0yNDEsMjEgKzI1MCwxOCBAQCBzdGF0aWMgdm9pZCBfX2J1aWxkX2VwaWxvZ3VlKHN0cnVjdCBqaXRfY3R4ICpjdHgsIGJvb2wgaXNfdGFpbF9jYWxsKVxcbiBcXHRsb2FkX29mZnNldCAtPSBzaXplb2YobG9uZyk7XFxuIFxcdGVtaXRfaW5zbihjdHgsIGxkZCwgTE9PTkdBUkNIX0dQUl9TNSwgTE9PTkdBUkNIX0dQUl9TUCwgbG9hZF9vZmZzZXQpO1xcbiBcXG4rXFx0LyogT25seSByZXN0b3JlIHRoZSBUQ0Mgc3RhdGUgaW50byBSRUdfVENDIGZyb20gdGhlIGhpZ2hlciBzbG90ICovXFxuK1xcdGxvYWRfb2Zmc2V0IC09IHNpemVvZihsb25nKTtcXG4rXFx0ZW1pdF9pbnNuKGN0eCwgbGRkLCBSRUdfVENDLCBMT09OR0FSQ0hfR1BSX1NQLCBsb2FkX29mZnNldCk7XFxuK1xcbitcXHQvKiBTa2lwIHRoZSB1bnVzZWQgbG9jYWwgJ3RjY19wdHInIHNsb3QgdG8gYWxpZ24gd2l0aCBhcmVuYSAqL1xcbitcXHRsb2FkX29mZnNldCAtPSBzaXplb2YobG9uZyk7XFxuK1xcbiBcXHRpZiAoY3R4LVxcdTAwM2VhcmVuYV92bV9zdGFydCkge1xcbiBcXHRcXHRsb2FkX29mZnNldCAtPSBzaXplb2YobG9uZyk7XFxuIFxcdFxcdGVtaXRfaW5zbihjdHgsIGxkZCwgUkVHX0FSRU5BLCBMT09OR0FSQ0hfR1BSX1NQLCBsb2FkX29mZnNldCk7XFxuIFxcdH1cXG4gXFxuLVxcdC8qXFxuLVxcdCAqIFdoZW4gcHVzaCBpbnRvIHRoZSBzdGFjaywgZm9sbG93IHRoZSBvcmRlciBvZiB0Y2MgdGhlbiB0Y2NfcHRyLlxcbi1cXHQgKiBXaGVuIHBvcCBmcm9tIHRoZSBzdGFjaywgZmlyc3QgcG9wIHRjY19wdHIgdGhlbiBmb2xsb3dlZCBieSB0Y2MuXFxuLVxcdCAqL1xcbi1cXHRsb2FkX29mZnNldCAtPSAyICogc2l6ZW9mKGxvbmcpO1xcbi1cXHRlbWl0X2luc24oY3R4LCBsZGQsIFJFR19UQ0MsIExPT05HQVJDSF9HUFJfU1AsIGxvYWRfb2Zmc2V0KTtcXG4tXFxuLVxcdGxvYWRfb2Zmc2V0ICs9IHNpemVvZihsb25nKTtcXG4tXFx0ZW1pdF9pbnNuKGN0eCwgbGRkLCBSRUdfVENDLCBMT09OR0FSQ0hfR1BSX1NQLCBsb2FkX29mZnNldCk7XFxuLVxcbiBcXHRlbWl0X2luc24oY3R4LCBhZGRpZCwgTE9PTkdBUkNIX0dQUl9TUCwgTE9PTkdBUkNIX0dQUl9TUCwgc3RhY2tfYWRqdXN0KTtcXG4gXFxuIFxcdGlmICghaXNfdGFpbF9jYWxsKSB7XFxuQEAgLTI5MCwxNyArMjk2LDEzIEBAIGJvb2wgYnBmX2ppdF9zdXBwb3J0c19mYXJfa2Z1bmNfY2FsbCh2b2lkKVxcbiBcXG4gc3RhdGljIGludCBlbWl0X2JwZl90YWlsX2NhbGwoc3RydWN0IGppdF9jdHggKmN0eCwgaW50IGluc24pXFxuIHtcXG4tXFx0aW50IG9mZiwgdGNfbmluc24gPSAwO1xcbitcXHRpbnQgb2ZmLCBqbXBfb2Zmc2V0O1xcbiBcXHRpbnQgdGNjX3B0cl9vZmYgPSBCUEZfVEFJTF9DQUxMX0NOVF9QVFJfU1RBQ0tfT0ZGKGN0eC1cXHUwMDNlc3RhY2tfc2l6ZSk7XFxuIFxcdHU4IGExID0gTE9PTkdBUkNIX0dQUl9BMTtcXG4gXFx0dTggYTIgPSBMT09OR0FSQ0hfR1BSX0EyO1xcbiBcXHR1OCB0MSA9IExPT05HQVJDSF9HUFJfVDE7XFxuIFxcdHU4IHQyID0gTE9PTkdBUkNIX0dQUl9UMjtcXG4gXFx0dTggdDMgPSBMT09OR0FSQ0hfR1BSX1QzO1xcbi1cXHRjb25zdCBpbnQgaWR4MCA9IGN0eC1cXHUwMDNlaWR4O1xcbi1cXG4tI2RlZmluZSBjdXJfb2Zmc2V0IChjdHgtXFx1MDAzZWlkeCAtIGlkeDApXFxuLSNkZWZpbmUgam1wX29mZnNldCAodGNfbmluc24gLSAoY3VyX29mZnNldCkpXFxuIFxcbiBcXHQvKlxcbiBcXHQgKiBhMDogXFx1MDAyNmN0eFxcbkBAIC0zMTAsMTIgKzMxMiwxMiBAQCBzdGF0aWMgaW50IGVtaXRfYnBmX3RhaWxfY2FsbChzdHJ1Y3Qgaml0X2N0eCAqY3R4LCBpbnQgaW5zbilcXG4gXFx0ICogaWYgKGluZGV4IFxcdTAwM2U9IGFycmF5LVxcdTAwM2VtYXAubWF4X2VudHJpZXMpXFxuIFxcdCAqXFx0IGdvdG8gb3V0O1xcbiBcXHQgKi9cXG4tXFx0dGNfbmluc24gPSBpbnNuID8gY3R4LVxcdTAwM2VvZmZzZXRbaW5zbisxXSAtIGN0eC1cXHUwMDNlb2Zmc2V0W2luc25dIDogY3R4LVxcdTAwM2VvZmZzZXRbMF07XFxuIFxcdGVtaXRfemV4dF8zMihjdHgsIGEyLCB0cnVlKTtcXG4gXFxuIFxcdG9mZiA9IG9mZnNldG9mKHN0cnVjdCBicGZfYXJyYXksIG1hcC5tYXhfZW50cmllcyk7XFxuIFxcdGVtaXRfaW5zbihjdHgsIGxkd3UsIHQxLCBhMSwgb2ZmKTtcXG4gXFx0LyogYmdldSAkYTIsICR0MSwgam1wX29mZnNldCAqL1xcbitcXHRqbXBfb2Zmc2V0ID0gY3R4LVxcdTAwM2VpbWFnZSA/IChjdHgtXFx1MDAzZW9mZnNldFtpbnNuICsgMV0gLSBjdHgtXFx1MDAzZWlkeCkgOiAwO1xcbiBcXHRpZiAoZW1pdF90YWlsY2FsbF9qbXAoY3R4LCBCUEZfSkdFLCBhMiwgdDEsIGptcF9vZmZzZXQpIFxcdTAwM2MgMClcXG4gXFx0XFx0Z290byB0b29mYXI7XFxuIFxcbkBAIC0zMjYsNiArMzI4LDcgQEAgc3RhdGljIGludCBlbWl0X2JwZl90YWlsX2NhbGwoc3RydWN0IGppdF9jdHggKmN0eCwgaW50IGluc24pXFxuIFxcdGVtaXRfaW5zbihjdHgsIGxkZCwgUkVHX1RDQywgTE9PTkdBUkNIX0dQUl9TUCwgdGNjX3B0cl9vZmYpO1xcbiBcXHRlbWl0X2luc24oY3R4LCBsZGQsIHQzLCBSRUdfVENDLCAwKTtcXG4gXFx0ZW1pdF9pbnNuKGN0eCwgYWRkaWQsIHQyLCBMT09OR0FSQ0hfR1BSX1pFUk8sIE1BWF9UQUlMX0NBTExfQ05UKTtcXG4rXFx0am1wX29mZnNldCA9IGN0eC1cXHUwMDNlaW1hZ2UgPyAoY3R4LVxcdTAwM2VvZmZzZXRbaW5zbiArIDFdIC0gY3R4LVxcdTAwM2VpZHgpIDogMDtcXG4gXFx0aWYgKGVtaXRfdGFpbGNhbGxfam1wKGN0eCwgQlBGX0pTR0UsIHQzLCB0Miwgam1wX29mZnNldCkgXFx1MDAzYyAwKVxcbiBcXHRcXHRnb3RvIHRvb2ZhcjtcXG4gXFxuQEAgLTM0MCw2ICszNDMsNyBAQCBzdGF0aWMgaW50IGVtaXRfYnBmX3RhaWxfY2FsbChzdHJ1Y3Qgaml0X2N0eCAqY3R4LCBpbnQgaW5zbilcXG4gXFx0b2ZmID0gb2Zmc2V0b2Yoc3RydWN0IGJwZl9hcnJheSwgcHRycyk7XFxuIFxcdGVtaXRfaW5zbihjdHgsIGxkZCwgdDIsIHQyLCBvZmYpO1xcbiBcXHQvKiBiZXEgJHQyLCAkemVybywgam1wX29mZnNldCAqL1xcbitcXHRqbXBfb2Zmc2V0ID0gY3R4LVxcdTAwM2VpbWFnZSA/IChjdHgtXFx1MDAzZW9mZnNldFtpbnNuICsgMV0gLSBjdHgtXFx1MDAzZWlkeCkgOiAwO1xcbiBcXHRpZiAoZW1pdF90YWlsY2FsbF9qbXAoY3R4LCBCUEZfSkVRLCB0MiwgTE9PTkdBUkNIX0dQUl9aRVJPLCBqbXBfb2Zmc2V0KSBcXHUwMDNjIDApXFxuIFxcdFxcdGdvdG8gdG9vZmFyO1xcbiBcXG5AQCAtMzU1LDggKzM1OSw2IEBAIHN0YXRpYyBpbnQgZW1pdF9icGZfdGFpbF9jYWxsKHN0cnVjdCBqaXRfY3R4ICpjdHgsIGludCBpbnNuKVxcbiB0b29mYXI6XFxuIFxcdHByX2luZm9fb25jZShcXFwidGFpbF9jYWxsOiBqdW1wIHRvbyBmYXJcXFxcblxcXCIpO1xcbiBcXHRyZXR1cm4gLTE7XFxuLSN1bmRlZiBjdXJfb2Zmc2V0XFxuLSN1bmRlZiBqbXBfb2Zmc2V0XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIGVtaXRfc3RvcmVfc3RhY2tfaW1tNjQoc3RydWN0IGppdF9jdHggKmN0eCwgaW50IHJlZywgaW50IHN0YWNrX29mZiwgdTY0IGltbTY0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwMzo1NzozNS43NDkyMDIzMTdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NDg3OTYyNjQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9KSVRcIixcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX2ludF9qaXRfY29tcGlsZVwiLFxuICAgIFwiZW1pdF9icGZfdGFpbF9jYWxsXCIsXG4gICAgXCJidWlsZF9wcm9sb2d1ZVwiLFxuICAgIFwiX19idWlsZF9lcGlsb2d1ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgSklUIGNvbXBpbGVyIGZvciBMb29uZ0FyY2ggdG8gZml4IHRoZSBoYW5kbGluZyBvZiB0YWlsIGNhbGwgY291bnRzIChSRUdfVENDKSBkdXJpbmcgQlBGLXRvLUJQRiBjYWxscyBhbmQgdGFpbCBjYWxscy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiBKSVQgbG9naWMgZm9yIExvb25nQXJjaCBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgZG9lc24ndCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMgb3IgdnVsbmVyYWJpbGl0aWVzIGluIEJQRiBwcm9ncmFtIGV4ZWN1dGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA3ZjgyZmM2ZDUyZDYwMWM3ZGFkYjk3MGIwNWM4MWI3NzE4ZDE0NDhkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgNiAwMzo1NzozNCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2luc3QuaCBiL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2luc3QuaFxuaW5kZXggNzZiNzIzNTkwMDIzZDcuLjE5ZmVhZTE2NmUxYzE4IDEwMDY0NFxuLS0tIGEvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vaW5zdC5oXG4rKysgYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmhcbkBAIC05Nyw2ICs5Nyw3IEBAIGVudW0gcmVnMmk2X29wIHtcbiB9O1xuIFxuIGVudW0gcmVnMmkxMl9vcCB7XG4rXHRzbHR1aV9vcFx0PSAweDA5LFxuIFx0YWRkaXdfb3BcdD0gMHgwYSxcbiBcdGFkZGlkX29wXHQ9IDB4MGIsXG4gXHRsdTUyaWRfb3BcdD0gMHgwYyxcbkBAIC0xNTMsNiArMTU0LDggQEAgZW51bSByZWczX29wIHtcbiBcdGFkZGRfb3BcdFx0PSAweDIxLFxuIFx0c3Vid19vcFx0XHQ9IDB4MjIsXG4gXHRzdWJkX29wXHRcdD0gMHgyMyxcbitcdG1hc2tlcXpfb3BcdD0gMHgyNixcbitcdG1hc2tuZXpfb3BcdD0gMHgyNyxcbiBcdG5vcl9vcFx0XHQ9IDB4MjgsXG4gXHRhbmRfb3BcdFx0PSAweDI5LFxuIFx0b3Jfb3BcdFx0PSAweDJhLFxuQEAgLTY0NCw2ICs2NDcsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZW1pdF8jI05BTUUodW5pb24gbG9vbmdhcmNoX2luc3RydWN0aW9uICppbnNuLFx0XFxcbiBcdGluc24tXHUwMDNlcmVnMmkxMl9mb3JtYXQucmogPSByajtcdFx0XHRcdFx0XFxcbiB9XG4gXG4rREVGX0VNSVRfUkVHMkkxMl9GT1JNQVQoc2x0dWksIHNsdHVpX29wKVxuIERFRl9FTUlUX1JFRzJJMTJfRk9STUFUKGFkZGl3LCBhZGRpd19vcClcbiBERUZfRU1JVF9SRUcySTEyX0ZPUk1BVChhZGRpZCwgYWRkaWRfb3ApXG4gREVGX0VNSVRfUkVHMkkxMl9GT1JNQVQobHU1MmlkLCBsdTUyaWRfb3ApXG5AQCAtNzQ5LDYgKzc1Myw4IEBAIERFRl9FTUlUX1JFRzNfRk9STUFUKGRpdmQsIGRpdmRfb3ApXG4gREVGX0VNSVRfUkVHM19GT1JNQVQobW9kZCwgbW9kZF9vcClcbiBERUZfRU1JVF9SRUczX0ZPUk1BVChkaXZkdSwgZGl2ZHVfb3ApXG4gREVGX0VNSVRfUkVHM19GT1JNQVQobW9kZHUsIG1vZGR1X29wKVxuK0RFRl9FTUlUX1JFRzNfRk9STUFUKG1hc2tlcXosIG1hc2tlcXpfb3ApXG4rREVGX0VNSVRfUkVHM19GT1JNQVQobWFza25leiwgbWFza25lel9vcClcbiBERUZfRU1JVF9SRUczX0ZPUk1BVChhbmQsIGFuZF9vcClcbiBERUZfRU1JVF9SRUczX0ZPUk1BVChvciwgb3Jfb3ApXG4gREVGX0VNSVRfUkVHM19GT1JNQVQoeG9yLCB4b3Jfb3ApXG5kaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYyBiL2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmNcbmluZGV4IGFkN2UyODM3NWFhOTUxLi5iNTZhZTdlZDNlMDZlZCAxMDA2NDRcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmNcbisrKyBiL2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmNcbkBAIC01Miw1MCArNTIsNTYgQEAgc3RhdGljIHZvaWQgcHJlcGFyZV9icGZfdGFpbF9jYWxsX2NudChzdHJ1Y3Qgaml0X2N0eCAqY3R4LCBpbnQgKnN0b3JlX29mZnNldClcbiBcdGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZyA9IGN0eC1cdTAwM2Vwcm9nO1xuIFx0Y29uc3QgYm9vbCBpc19tYWluX3Byb2cgPSAhYnBmX2lzX3N1YnByb2cocHJvZyk7XG4gXG4rXHQqc3RvcmVfb2Zmc2V0IC09IHNpemVvZihsb25nKTtcbiBcdGlmIChpc19tYWluX3Byb2cpIHtcbi1cdFx0Lypcbi1cdFx0ICogTE9PTkdBUkNIX0dQUl9UMyA9IE1BWF9UQUlMX0NBTExfQ05UXG4tXHRcdCAqIGlmIChSRUdfVENDIFx1MDAzZSBUMyApXG4tXHRcdCAqXHRzdGQgUkVHX1RDQyAtXHUwMDNlIExPT05HQVJDSF9HUFJfU1AgKyBzdG9yZV9vZmZzZXRcbi1cdFx0ICogZWxzZVxuLVx0XHQgKlx0c3RkIFJFR19UQ0MgLVx1MDAzZSBMT09OR0FSQ0hfR1BSX1NQICsgc3RvcmVfb2Zmc2V0XG4tXHRcdCAqXHRSRUdfVENDID0gTE9PTkdBUkNIX0dQUl9TUCArIHN0b3JlX29mZnNldFxuLVx0XHQgKlxuLVx0XHQgKiBzdGQgUkVHX1RDQyAtXHUwMDNlIExPT05HQVJDSF9HUFJfU1AgKyBzdG9yZV9vZmZzZXRcbi1cdFx0ICpcbi1cdFx0ICogVGhlIHB1cnBvc2Ugb2YgdGhpcyBjb2RlIGlzIHRvIGZpcnN0IHB1c2ggdGhlIFRDQyBpbnRvIHN0YWNrLFxuLVx0XHQgKiBhbmQgdGhlbiBwdXNoIHRoZSBhZGRyZXNzIG9mIFRDQyBpbnRvIHN0YWNrLlxuLVx0XHQgKiBJbiBjYXNlcyB3aGVyZSBicGYyYnBmIGFuZCB0YWlsY2FsbCBhcmUgdXNlZCBpbiBjb21iaW5hdGlvbixcbi1cdFx0ICogdGhlIHZhbHVlIGluIFJFR19UQ0MgbWF5IGJlIGEgY291bnQgb3IgYW4gYWRkcmVzcyxcbi1cdFx0ICogdGhlc2UgdHdvIGNhc2VzIG5lZWQgdG8gYmUganVkZ2VkIGFuZCBoYW5kbGVkIHNlcGFyYXRlbHkuXG4tXHRcdCAqL1xuLVx0XHRlbWl0X2luc24oY3R4LCBhZGRpZCwgTE9PTkdBUkNIX0dQUl9UMywgTE9PTkdBUkNIX0dQUl9aRVJPLCBNQVhfVEFJTF9DQUxMX0NOVCk7XG4tXHRcdCpzdG9yZV9vZmZzZXQgLT0gc2l6ZW9mKGxvbmcpO1xuLVxuLVx0XHRlbWl0X2NvbmRfam1wKGN0eCwgQlBGX0pHVCwgUkVHX1RDQywgTE9PTkdBUkNIX0dQUl9UMywgNCk7XG4tXG4tXHRcdC8qXG4tXHRcdCAqIElmIFJFR19UQ0MgXHUwMDNjIE1BWF9UQUlMX0NBTExfQ05ULCB0aGUgdmFsdWUgaW4gUkVHX1RDQyBpcyBhIGNvdW50LFxuLVx0XHQgKiBwdXNoIHRjYyBpbnRvIHN0YWNrXG4tXHRcdCAqL1xuK1x0XHQvKiBTYXZlIGVudHJhbmNlIFRDQyBzdGF0ZSAoc2NhbGFyIGNvdW50IG9yIGtlcm5lbCBwb2ludGVyKSB0byBsb2NhbCAndGNjJyBzbG90ICovXG4gXHRcdGVtaXRfaW5zbihjdHgsIHN0ZCwgUkVHX1RDQywgTE9PTkdBUkNIX0dQUl9TUCwgKnN0b3JlX29mZnNldCk7XG4gXG4tXHRcdC8qIFB1c2ggdGhlIGFkZHJlc3Mgb2YgVENDIGludG8gdGhlIFJFR19UQ0MgKi9cbi1cdFx0ZW1pdF9pbnNuKGN0eCwgYWRkaWQsIFJFR19UQ0MsIExPT05HQVJDSF9HUFJfU1AsICpzdG9yZV9vZmZzZXQpO1xuLVxuLVx0XHRlbWl0X3VuY29uZF9qbXAoY3R4LCAyKTtcbitcdFx0LyogQ29tcHV0ZSB0aGUgYWJzb2x1dGUgcG9pbnRlciB0byB0aGUgbG9jYWwgJ3RjYycgc2xvdCAqL1xuK1x0XHRlbWl0X2luc24oY3R4LCBhZGRpZCwgTE9PTkdBUkNIX0dQUl9UNywgTE9PTkdBUkNIX0dQUl9TUCwgKnN0b3JlX29mZnNldCk7XG4gXG4gXHRcdC8qXG4tXHRcdCAqIElmIFJFR19UQ0MgXHUwMDNlIE1BWF9UQUlMX0NBTExfQ05ULCB0aGUgdmFsdWUgaW4gUkVHX1RDQyBpcyBhbiBhZGRyZXNzLFxuLVx0XHQgKiBwdXNoIHRjY19wdHIgaW50byBzdGFja1xuK1x0XHQgKiBCcmFuY2hsZXNzIGNsYXNzaWZpY2F0aW9uIGFuZCBibGVuZGluZzpcbitcdFx0ICpcbitcdFx0ICogSW4gY29tYmluZWQgYnBmMmJwZiBhbmQgdGFpbGNhbGwgc2NlbmFyaW9zLCBSRUdfVENDIGNhbiBjYXJyeVxuK1x0XHQgKiBlaXRoZXIgYSBzY2FsYXIgY291bnQgKDAgdG8gMzMpIG9yIGFuIGluaGVyaXRlZCBrZXJuZWwgcG9pbnRlciBhZGRyZXNzLlxuK1x0XHQgKlxuK1x0XHQgKiBFbnRyYW5jZSBzdGF0dXMgZm9yIGEgbWFpbiBwcm9ncmFtIGJhc2VkIG9uIFJFR19UQ0MgcGh5c2ljYWwgY29udGVudDpcbitcdFx0ICogMSkgSW5pdGlhbCBFbnRyeSAoU2NhbGFyKTogRW50ZXIgdmlhIGEgc3RhbmRhcmQgZXZlbnQsIHdoZXJlIFJFR19UQ0NcbitcdFx0ICogICAgaXMgaW5pdGlhbGl6ZWQgdG8gYSBwdXJlIHNjYWxhciAwLlxuK1x0XHQgKiAyKSBJbmhlcml0ZWQgRW50cnkgKFNjYWxhcik6IEVudGVyIHZpYSBhIGZsYXQgbWFpbi10by1tYWluIHRhaWwgY2FsbCxcbitcdFx0ICogICAgd2hlcmUgUkVHX1RDQyBjYXJyaWVzIGFuIGFjY3VtdWxhdGVkIHNjYWxhciBjb3VudCAoMSB0byAzMykgcmVsb2FkZWRcbitcdFx0ICogICAgZnJvbSB0aGUgcHJpb3Igc3RhY2sgZnJhbWUuXG4rXHRcdCAqIDMpIEluaGVyaXRlZCBFbnRyeSAoUG9pbnRlcik6IEVudGVyIHZpYSBhIHRhaWwgY2FsbCBmcm9tIGEgc3VicHJvZ3JhbSxcbitcdFx0ICogICAgd2hlcmUgUkVHX1RDQyBpbmhlcml0cyBhbmQgY2FycmllcyBhIG1hc3NpdmUga2VybmVsIHBvaW50ZXIgYWRkcmVzc1xuK1x0XHQgKiAgICByZWxvYWRlZCBmcm9tIHRoZSBwcmlvciBzdGFjayBmcmFtZS5cbitcdFx0ICpcbitcdFx0ICogc2x0dWk6ICAgSWRlbnRpZnkgdGhlIHR5cGUgb2YgUkVHX1RDQy5cbitcdFx0ICogICAgICAgICAgSWYgUkVHX1RDQyBcdTAwM2MgTUFYX1RBSUxfQ0FMTF9DTlQgKyAxIChzY2FsYXIgMH4zMyksIHNldHMgVDggPSAxLlxuK1x0XHQgKiAgICAgICAgICBJZiBSRUdfVENDIFx1MDAzZT0gTUFYX1RBSUxfQ0FMTF9DTlQgKyAxIChrZXJuZWwgcG9pbnRlciksIHNldHMgVDggPSAwLlxuK1x0XHQgKlxuK1x0XHQgKiBtYXNrZXF6OiBIYW5kbGUgdGhlIGxvY2FsIHN0YWNrIHBvaW50ZXIgKFQ3KS5cbitcdFx0ICogICAgICAgICAgSWYgVDggPT0gMSwga2VlcHMgVDcgaW50YWN0LlxuK1x0XHQgKiAgICAgICAgICBJZiBUOCA9PSAwLCBjbGVhcnMgVDcgdG8gMC5cbitcdFx0ICpcbitcdFx0ICogbWFza25lejogSGFuZGxlIHRoZSBpbmNvbWluZyBSRUdfVENDIHRvIHByZXZlbnQgcmVnaXN0ZXIgcG9sbHV0aW9uLlxuK1x0XHQgKiAgICAgICAgICBJZiBUOCA9PSAxLCBjbGVhcnMgUkVHX1RDQyB0byAwIChlcmFzaW5nIDF+MzMgc2NhbGFycykuXG4rXHRcdCAqICAgICAgICAgIElmIFQ4ID09IDAsIGtlZXBzIHRoZSBtYXNzaXZlIGtlcm5lbCBwb2ludGVyIGludGFjdC5cbitcdFx0ICpcbitcdFx0ICogb3I6ICAgICAgQ29tYmluZSB0aGUgcmVzdWx0cy5cbitcdFx0ICogICAgICAgICAgU2NhbGFyIENhc2U6ICBSRUdfVENDID0gMCB8IFQ3ICAgICAgIC1cdTAwM2UgQ2xlYW4gbG9jYWwgc3RhY2sgcG9pbnRlci5cbitcdFx0ICogICAgICAgICAgUG9pbnRlciBDYXNlOiBSRUdfVENDID0gUkVHX1RDQyB8IDAgIC1cdTAwM2UgQ2xlYW4gaW5oZXJpdGVkIGdsb2JhbCBwb2ludGVyLlxuIFx0XHQgKi9cbi1cdFx0ZW1pdF9pbnNuKGN0eCwgc3RkLCBSRUdfVENDLCBMT09OR0FSQ0hfR1BSX1NQLCAqc3RvcmVfb2Zmc2V0KTtcbitcdFx0ZW1pdF9pbnNuKGN0eCwgc2x0dWksIExPT05HQVJDSF9HUFJfVDgsIFJFR19UQ0MsIE1BWF9UQUlMX0NBTExfQ05UICsgMSk7XG4rXHRcdGVtaXRfaW5zbihjdHgsIG1hc2tlcXosIExPT05HQVJDSF9HUFJfVDcsIExPT05HQVJDSF9HUFJfVDcsIExPT05HQVJDSF9HUFJfVDgpO1xuK1x0XHRlbWl0X2luc24oY3R4LCBtYXNrbmV6LCBSRUdfVENDLCBSRUdfVENDLCBMT09OR0FSQ0hfR1BSX1Q4KTtcbitcdFx0ZW1pdF9pbnNuKGN0eCwgb3IsIFJFR19UQ0MsIFJFR19UQ0MsIExPT05HQVJDSF9HUFJfVDcpO1xuIFx0fSBlbHNlIHtcbi1cdFx0KnN0b3JlX29mZnNldCAtPSBzaXplb2YobG9uZyk7XG4rXHRcdC8qIFN1YnByb2dyYW1zOiBiYWNrdXAgdGhlIHZlcmlmaWVkIFRDQyBwb2ludGVyIGluaGVyaXRlZCB2aWEgUkVHX1RDQyAqL1xuIFx0XHRlbWl0X2luc24oY3R4LCBzdGQsIFJFR19UQ0MsIExPT05HQVJDSF9HUFJfU1AsICpzdG9yZV9vZmZzZXQpO1xuIFx0fVxuIFxuLVx0LyogUHVzaCB0Y2NfcHRyIGludG8gc3RhY2sgKi9cbitcdC8qIFN0b3JlIHRoZSBmaW5hbGl6ZWQgVENDIHBvaW50ZXIgdmFsdWUgc2VjdXJlbHkgaW50byB0aGUgbG9jYWwgJ3RjY19wdHInIHNsb3QgKi9cbiBcdCpzdG9yZV9vZmZzZXQgLT0gc2l6ZW9mKGxvbmcpO1xuIFx0ZW1pdF9pbnNuKGN0eCwgc3RkLCBSRUdfVENDLCBMT09OR0FSQ0hfR1BSX1NQLCAqc3RvcmVfb2Zmc2V0KTtcbiB9XG5AQCAtMTI0LDYgKzEzMCw5IEBAIHN0YXRpYyB2b2lkIHByZXBhcmVfYnBmX3RhaWxfY2FsbF9jbnQoc3RydWN0IGppdF9jdHggKmN0eCwgaW50ICpzdG9yZV9vZmZzZXQpXG4gICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgdGNjICAgICAgICAgICB8XG4gICogICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgdGNjX3B0ciAgICAgICB8XG4rICogICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4rICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgYXJlbmEgICAgICAgICB8XG4rICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIChvcHRpb25hbCkgICAgICB8XG4gICogICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIFx1MDAzYy0tQlBGX1JFR19GUFxuICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHByb2ctXHUwMDNlYXV4LVx1MDAzZXN0YWNrX2RlcHRoIHxcbiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAob3B0aW9uYWwpICAgICAgIHxcbkBAIC0xNDUsNyArMTU0LDcgQEAgc3RhdGljIHZvaWQgYnVpbGRfcHJvbG9ndWUoc3RydWN0IGppdF9jdHggKmN0eClcbiBcdHN0YWNrX2FkanVzdCArPSBzaXplb2YobG9uZykgKiAyO1xuIFxuIFx0aWYgKGN0eC1cdTAwM2VhcmVuYV92bV9zdGFydClcbi1cdFx0c3RhY2tfYWRqdXN0ICs9IDg7XG4rXHRcdHN0YWNrX2FkanVzdCArPSBzaXplb2YobG9uZyk7XG4gXG4gXHRzdGFja19hZGp1c3QgPSByb3VuZF91cChzdGFja19hZGp1c3QsIDE2KTtcbiBcdHN0YWNrX2FkanVzdCArPSBicGZfc3RhY2tfYWRqdXN0O1xuQEAgLTE5NCwxMyArMjAzLDEzIEBAIHN0YXRpYyB2b2lkIGJ1aWxkX3Byb2xvZ3VlKHN0cnVjdCBqaXRfY3R4ICpjdHgpXG4gXHRzdG9yZV9vZmZzZXQgLT0gc2l6ZW9mKGxvbmcpO1xuIFx0ZW1pdF9pbnNuKGN0eCwgc3RkLCBMT09OR0FSQ0hfR1BSX1M1LCBMT09OR0FSQ0hfR1BSX1NQLCBzdG9yZV9vZmZzZXQpO1xuIFxuK1x0cHJlcGFyZV9icGZfdGFpbF9jYWxsX2NudChjdHgsIFx1MDAyNnN0b3JlX29mZnNldCk7XG4rXG4gXHRpZiAoY3R4LVx1MDAzZWFyZW5hX3ZtX3N0YXJ0KSB7XG4gXHRcdHN0b3JlX29mZnNldCAtPSBzaXplb2YobG9uZyk7XG4gXHRcdGVtaXRfaW5zbihjdHgsIHN0ZCwgUkVHX0FSRU5BLCBMT09OR0FSQ0hfR1BSX1NQLCBzdG9yZV9vZmZzZXQpO1xuIFx0fVxuIFxuLVx0cHJlcGFyZV9icGZfdGFpbF9jYWxsX2NudChjdHgsIFx1MDAyNnN0b3JlX29mZnNldCk7XG4tXG4gXHRlbWl0X2luc24oY3R4LCBhZGRpZCwgTE9PTkdBUkNIX0dQUl9GUCwgTE9PTkdBUkNIX0dQUl9TUCwgc3RhY2tfYWRqdXN0KTtcbiBcbiBcdGlmIChicGZfc3RhY2tfYWRqdXN0KVxuQEAgLTI0MSwyMSArMjUwLDE4IEBAIHN0YXRpYyB2b2lkIF9fYnVpbGRfZXBpbG9ndWUoc3RydWN0IGppdF9jdHggKmN0eCwgYm9vbCBpc190YWlsX2NhbGwpXG4gXHRsb2FkX29mZnNldCAtPSBzaXplb2YobG9uZyk7XG4gXHRlbWl0X2luc24oY3R4LCBsZGQsIExPT05HQVJDSF9HUFJfUzUsIExPT05HQVJDSF9HUFJfU1AsIGxvYWRfb2Zmc2V0KTtcbiBcbitcdC8qIE9ubHkgcmVzdG9yZSB0aGUgVENDIHN0YXRlIGludG8gUkVHX1RDQyBmcm9tIHRoZSBoaWdoZXIgc2xvdCAqL1xuK1x0bG9hZF9vZmZzZXQgLT0gc2l6ZW9mKGxvbmcpO1xuK1x0ZW1pdF9pbnNuKGN0eCwgbGRkLCBSRUdfVENDLCBMT09OR0FSQ0hfR1BSX1NQLCBsb2FkX29mZnNldCk7XG4rXG4rXHQvKiBTa2lwIHRoZSB1bnVzZWQgbG9jYWwgJ3RjY19wdHInIHNsb3QgdG8gYWxpZ24gd2l0aCBhcmVuYSAqL1xuK1x0bG9hZF9vZmZzZXQgLT0gc2l6ZW9mKGxvbmcpO1xuK1xuIFx0aWYgKGN0eC1cdTAwM2VhcmVuYV92bV9zdGFydCkge1xuIFx0XHRsb2FkX29mZnNldCAtPSBzaXplb2YobG9uZyk7XG4gXHRcdGVtaXRfaW5zbihjdHgsIGxkZCwgUkVHX0FSRU5BLCBMT09OR0FSQ0hfR1BSX1NQLCBsb2FkX29mZnNldCk7XG4gXHR9XG4gXG4tXHQvKlxuLVx0ICogV2hlbiBwdXNoIGludG8gdGhlIHN0YWNrLCBmb2xsb3cgdGhlIG9yZGVyIG9mIHRjYyB0aGVuIHRjY19wdHIuXG4tXHQgKiBXaGVuIHBvcCBmcm9tIHRoZSBzdGFjaywgZmlyc3QgcG9wIHRjY19wdHIgdGhlbiBmb2xsb3dlZCBieSB0Y2MuXG4tXHQgKi9cbi1cdGxvYWRfb2Zmc2V0IC09IDIgKiBzaXplb2YobG9uZyk7XG4tXHRlbWl0X2luc24oY3R4LCBsZGQsIFJFR19UQ0MsIExPT05HQVJDSF9HUFJfU1AsIGxvYWRfb2Zmc2V0KTtcbi1cbi1cdGxvYWRfb2Zmc2V0ICs9IHNpemVvZihsb25nKTtcbi1cdGVtaXRfaW5zbihjdHgsIGxkZCwgUkVHX1RDQywgTE9PTkdBUkNIX0dQUl9TUCwgbG9hZF9vZmZzZXQpO1xuLVxuIFx0ZW1pdF9pbnNuKGN0eCwgYWRkaWQsIExPT05HQVJDSF9HUFJfU1AsIExPT05HQVJDSF9HUFJfU1AsIHN0YWNrX2FkanVzdCk7XG4gXG4gXHRpZiAoIWlzX3RhaWxfY2FsbCkge1xuQEAgLTI5MCwxNyArMjk2LDEzIEBAIGJvb2wgYnBmX2ppdF9zdXBwb3J0c19mYXJfa2Z1bmNfY2FsbCh2b2lkKVxuIFxuIHN0YXRpYyBpbnQgZW1pdF9icGZfdGFpbF9jYWxsKHN0cnVjdCBqaXRfY3R4ICpjdHgsIGludCBpbnNuKVxuIHtcbi1cdGludCBvZmYsIHRjX25pbnNuID0gMDtcbitcdGludCBvZmYsIGptcF9vZmZzZXQ7XG4gXHRpbnQgdGNjX3B0cl9vZmYgPSBCUEZfVEFJTF9DQUxMX0NOVF9QVFJfU1RBQ0tfT0ZGKGN0eC1cdTAwM2VzdGFja19zaXplKTtcbiBcdHU4IGExID0gTE9PTkdBUkNIX0dQUl9BMTtcbiBcdHU4IGEyID0gTE9PTkdBUkNIX0dQUl9BMjtcbiBcdHU4IHQxID0gTE9PTkdBUkNIX0dQUl9UMTtcbiBcdHU4IHQyID0gTE9PTkdBUkNIX0dQUl9UMjtcbiBcdHU4IHQzID0gTE9PTkdBUkNIX0dQUl9UMztcbi1cdGNvbnN0IGludCBpZHgwID0gY3R4LVx1MDAzZWlkeDtcbi1cbi0jZGVmaW5lIGN1cl9vZmZzZXQgKGN0eC1cdTAwM2VpZHggLSBpZHgwKVxuLSNkZWZpbmUgam1wX29mZnNldCAodGNfbmluc24gLSAoY3VyX29mZnNldCkpXG4gXG4gXHQvKlxuIFx0ICogYTA6IFx1MDAyNmN0eFxuQEAgLTMxMCwxMiArMzEyLDEyIEBAIHN0YXRpYyBpbnQgZW1pdF9icGZfdGFpbF9jYWxsKHN0cnVjdCBqaXRfY3R4ICpjdHgsIGludCBpbnNuKVxuIFx0ICogaWYgKGluZGV4IFx1MDAzZT0gYXJyYXktXHUwMDNlbWFwLm1heF9lbnRyaWVzKVxuIFx0ICpcdCBnb3RvIG91dDtcbiBcdCAqL1xuLVx0dGNfbmluc24gPSBpbnNuID8gY3R4LVx1MDAzZW9mZnNldFtpbnNuKzFdIC0gY3R4LVx1MDAzZW9mZnNldFtpbnNuXSA6IGN0eC1cdTAwM2VvZmZzZXRbMF07XG4gXHRlbWl0X3pleHRfMzIoY3R4LCBhMiwgdHJ1ZSk7XG4gXG4gXHRvZmYgPSBvZmZzZXRvZihzdHJ1Y3QgYnBmX2FycmF5LCBtYXAubWF4X2VudHJpZXMpO1xuIFx0ZW1pdF9pbnNuKGN0eCwgbGR3dSwgdDEsIGExLCBvZmYpO1xuIFx0LyogYmdldSAkYTIsICR0MSwgam1wX29mZnNldCAqL1xuK1x0am1wX29mZnNldCA9IGN0eC1cdTAwM2VpbWFnZSA/IChjdHgtXHUwMDNlb2Zmc2V0W2luc24gKyAxXSAtIGN0eC1cdTAwM2VpZHgpIDogMDtcbiBcdGlmIChlbWl0X3RhaWxjYWxsX2ptcChjdHgsIEJQRl9KR0UsIGEyLCB0MSwgam1wX29mZnNldCkgXHUwMDNjIDApXG4gXHRcdGdvdG8gdG9vZmFyO1xuIFxuQEAgLTMyNiw2ICszMjgsNyBAQCBzdGF0aWMgaW50IGVtaXRfYnBmX3RhaWxfY2FsbChzdHJ1Y3Qgaml0X2N0eCAqY3R4LCBpbnQgaW5zbilcbiBcdGVtaXRfaW5zbihjdHgsIGxkZCwgUkVHX1RDQywgTE9PTkdBUkNIX0dQUl9TUCwgdGNjX3B0cl9vZmYpO1xuIFx0ZW1pdF9pbnNuKGN0eCwgbGRkLCB0MywgUkVHX1RDQywgMCk7XG4gXHRlbWl0X2luc24oY3R4LCBhZGRpZCwgdDIsIExPT05HQVJDSF9HUFJfWkVSTywgTUFYX1RBSUxfQ0FMTF9DTlQpO1xuK1x0am1wX29mZnNldCA9IGN0eC1cdTAwM2VpbWFnZSA/IChjdHgtXHUwMDNlb2Zmc2V0W2luc24gKyAxXSAtIGN0eC1cdTAwM2VpZHgpIDogMDtcbiBcdGlmIChlbWl0X3RhaWxjYWxsX2ptcChjdHgsIEJQRl9KU0dFLCB0MywgdDIsIGptcF9vZmZzZXQpIFx1MDAzYyAwKVxuIFx0XHRnb3RvIHRvb2ZhcjtcbiBcbkBAIC0zNDAsNiArMzQzLDcgQEAgc3RhdGljIGludCBlbWl0X2JwZl90YWlsX2NhbGwoc3RydWN0IGppdF9jdHggKmN0eCwgaW50IGluc24pXG4gXHRvZmYgPSBvZmZzZXRvZihzdHJ1Y3QgYnBmX2FycmF5LCBwdHJzKTtcbiBcdGVtaXRfaW5zbihjdHgsIGxkZCwgdDIsIHQyLCBvZmYpO1xuIFx0LyogYmVxICR0MiwgJHplcm8sIGptcF9vZmZzZXQgKi9cbitcdGptcF9vZmZzZXQgPSBjdHgtXHUwMDNlaW1hZ2UgPyAoY3R4LVx1MDAzZW9mZnNldFtpbnNuICsgMV0gLSBjdHgtXHUwMDNlaWR4KSA6IDA7XG4gXHRpZiAoZW1pdF90YWlsY2FsbF9qbXAoY3R4LCBCUEZfSkVRLCB0MiwgTE9PTkdBUkNIX0dQUl9aRVJPLCBqbXBfb2Zmc2V0KSBcdTAwM2MgMClcbiBcdFx0Z290byB0b29mYXI7XG4gXG5AQCAtMzU1LDggKzM1OSw2IEBAIHN0YXRpYyBpbnQgZW1pdF9icGZfdGFpbF9jYWxsKHN0cnVjdCBqaXRfY3R4ICpjdHgsIGludCBpbnNuKVxuIHRvb2ZhcjpcbiBcdHByX2luZm9fb25jZShcInRhaWxfY2FsbDoganVtcCB0b28gZmFyXFxuXCIpO1xuIFx0cmV0dXJuIC0xO1xuLSN1bmRlZiBjdXJfb2Zmc2V0XG4tI3VuZGVmIGptcF9vZmZzZXRcbiB9XG4gXG4gc3RhdGljIHZvaWQgZW1pdF9zdG9yZV9zdGFja19pbW02NChzdHJ1Y3Qgaml0X2N0eCAqY3R4LCBpbnQgcmVnLCBpbnQgc3RhY2tfb2ZmLCB1NjQgaW1tNjQpXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwMzo1NzozNS43NDkyMDQwODdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MzA4MTk3MTkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIExvb25nQXJjaCBCUEYgSklUIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaC4gSXQncyB0b3VjaGluZyB0aGUgQlBGIEpJVCBjb21waWxlciBzcGVjaWZpY2FsbHkgZm9yIExvb25nQXJjaCwgdGhlIGBhcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jYCBmaWxlLCBhbmQgYWRkaW5nIHNvbWUgZGVmaW5pdGlvbnMgaW4gYGFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2luc3QuaGAuIFJpZ2h0IG9mZiB0aGUgYmF0LCB0aGlzIGlzIGEgdmVyeSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgY2hhbmdlLiBJdCBsb29rcyBsaWtlIGl0J3MgYWRkcmVzc2luZyB0aGUgaGFuZGxpbmcgb2YgYFJFR19UQ0NgLCB0aGUgdGFpbCBjYWxsIGNvdW50LCBpbiB0aGUgQlBGIEpJVCBvbiBMb29uZ0FyY2guIFRoaXMgbWVhbnMgY2hhbmdlcyB0byBob3cgdGhlIHJlZ2lzdGVyIGlzIHNhdmVkLCByZXN0b3JlZCwgYW5kIGhvdyB0YWlsIGNhbGxzIGFyZSBnZW5lcmF0ZWQuIERlZmluaXRlbHkgZnVuY3Rpb25hbCBjb2RlLCBubyBxdWVzdGlvbiwgYW5kIHByb2JhYmx5IHBlcmZvcm1hbmNlIGNyaXRpY2FsLlxuXG5Ob3csIHRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIGhvdyBkb2VzIHRoaXMgaW50ZXJhY3Qgd2l0aCBmdXp6aW5nPyBUaGlzIHBhdGNoIGlzIGlzb2xhdGVkIHVuZGVyIGBhcmNoL2xvb25nYXJjaC9gLCBzbyBpdCdzIGdvaW5nIHRvIG5lZWQgYSBMb29uZ0FyY2ggbWFjaGluZSBvciBlbXVsYXRvciB0byBiZSBleGVyY2lzZWQuIE15IGluaXRpYWwgdGhvdWdodCBpcyBzeXprYWxsZXIgaXMgdXN1YWxseSB4ODZfNjQsIGFybTY0LCBtYXliZSByaXNjdi4gSXQgKmRvZXMqIHJ1biBvbiBMb29uZ0FyY2gsIHJpZ2h0PyBJIHNlZW0gdG8gcmVtZW1iZXIgc29tZSBMb29uZ0FyY2ggc3VwcG9ydC4gUUVNVSBkb2VzIHN1cHBvcnQgTG9vbmdBcmNoLCBzbyB3ZSBjYW4gdGVzdCB0aGlzIGluIHZpcnR1YWwgZW52aXJvbm1lbnRzLCByaWdodD8gXG5cbldhaXQsIHRoZSBpbnN0cnVjdGlvbnMgYXJlIHdhcm5pbmcgYWJvdXQgdW5yZWFjaGFibGUgY29kZSBwYXRocyBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIEJ1dCB0aGlzIGlzIHRoZSBjYXRjaDogU2luY2UgTG9vbmdBcmNoIGNhbiBiZSBlbXVsYXRlZCBieSBRRU1VLCAqaWYqIHRoZSBwYXRjaCBpcyBMb29uZ0FyY2gtc3BlY2lmaWMsIHdoaWNoIGl0IGxvb2tzIGxpa2UgaXQgaXMsIHdlIGNhbiBidWlsZCBhIExvb25nQXJjaCBrZXJuZWwgYW5kIGZ1enogaXQgdGhhdCB3YXkuIEknZCBiZXR0ZXIgZG91YmxlIGNoZWNrIHRvIGNvbmZpcm0gdGhhdCB3ZSBidWlsZCB0aGUga2VybmVsIHdpdGggdGhlIHByb3BlciBjb25maWdzIVxuXG5MZXQncyBzZWUsIHdoYXQgc3BlY2lmaWMgY29uZmlncyBkbyB3ZSBuZWVkPyBPaCB5ZWFoLCBgQ09ORklHX0JQRl9KSVRgIGlzIGRlZmluaXRlbHkgYSBwcmVyZXF1aXNpdGUuIExldCdzIHN0YXJ0IGJ5IGxvb2tpbmcgYXQgYGFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmNgIHRvIHNlZSBpZiB0aGF0IGlzIGFjdGl2YXRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTkzMywiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwMiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDAzOjU3OjQzLjA1NzQwMzc2OFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDkyOTgyMDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQ09ORklHX0JQRl9KSVRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9sb29uZ2FyY2gvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWc9Nz1DT05GSUdfQlBGX1NZU0NBTEw9eVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWc6ODpDT05GSUdfQlBGX0pJVD15XFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZy05LUNPTkZJR19QUkVFTVBUPXlcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2V4dGFibGUuaD0yNj1kbyB7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTM0LVxcbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2V4dGFibGUuaDozNTojaWZkZWYgQ09ORklHX0JQRl9KSVRcXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9leHRhYmxlLmgtMzYtYm9vbCBleF9oYW5kbGVyX2JwZihjb25zdCBzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5ICpleCwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpO1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vZXh0YWJsZS5oPTM5PWJvb2wgZXhfaGFuZGxlcl9icGYoY29uc3Qgc3RydWN0IGV4Y2VwdGlvbl90YWJsZV9lbnRyeSAqZXgsIHN0cnVjdCBwdF9yZWdzICpyZWdzKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTQyLX1cXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9leHRhYmxlLmg6NDM6I2VuZGlmIC8qICFDT05GSUdfQlBGX0pJVCAqL1xcbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2V4dGFibGUuaC00NC1cXG4tLVxcbmFyY2gvbG9vbmdhcmNoL25ldC9NYWtlZmlsZS02LSNcXG5hcmNoL2xvb25nYXJjaC9uZXQvTWFrZWZpbGU6NzpvYmotJChDT05GSUdfQlBGX0pJVCkgKz0gYnBmX2ppdC5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDAzOjU3OjQzLjIwNjcxMDY2M1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyMTM0NTk1ODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBMb29uZ0FyY2ggQlBGIEpJVCBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgZGlnZ2luZyBpbnRvIGBhcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jYC4gTWFrZXMgc2Vuc2UsIHdlJ3JlIGRlYWxpbmcgd2l0aCB0aGUgTG9vbmdBcmNoIGFyY2hpdGVjdHVyZSBhbmQgQlBGIEpJVCBjb21waWxhdGlvbiBoZXJlLiBJJ2xsIG5lZWQgdG8gcmVtZW1iZXIgdGhhdCB0aGlzIHJlcXVpcmVzIGBDT05GSUdfQlBGX0pJVGAgYW5kIGBDT05GSUdfQlBGX1NZU0NBTExgIGVuYWJsZWQsIHRoYXQncyBjcnVjaWFsIGZvciBjb250ZXh0LiBJZiBJJ20gZ29pbmcgdG8gZmxhZyB0aGlzIGZvciBmdXp6aW5nLCB3aGljaCBJIGFtIGxlYW5pbmcgdG93YXJkcyBnaXZlbiB0aGUgbW9kaWZpY2F0aW9uIGxvY2F0aW9uLCBJJ2xsIG5lZWQgdG8gbGlzdCB0aG9zZSB0d28gY29uZmlnIG9wdGlvbnMuXG5cbk5vdywgbGV0J3Mgc2VlLCB3aGF0IHNwZWNpZmljYWxseSBpcyBiZWluZyB0b3VjaGVkPyBUaGUgbWFpbiBmdW5jdGlvbnMgaW4gYGFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmNgIGFyZSBgcHJlcGFyZV9icGZfdGFpbF9jYWxsX2NudGAsIGBidWlsZF9wcm9sb2d1ZWAsIGBfX2J1aWxkX2VwaWxvZ3VlYCwgYW5kIGBlbWl0X2JwZl90YWlsX2NhbGxgLiBBaCwgdGhleSBhcmUgYWxsIGludGVybmFsIHRvIHRoZSBCUEYgSklUIGNvbXBpbGUgcHJvY2VzcywgYmVpbmcgc3RhdGljIGZ1bmN0aW9ucyB1c2VkIGJ5IGBicGZfaW50X2ppdF9jb21waWxlYC4gVGhlc2UgYXJlIGdvb2QgY2FuZGlkYXRlcyB0byBmb2N1cyBvbiBkdXJpbmcgZnV6emluZyBhcyB0aGV5IGZvcm0gdGhlIGNvcmUgb2YgdGhlIEpJVCBjb21waWxhdGlvbiBwcm9jZXNzLiBUaGlzIHdpbGwgYmUgYW4gaW50ZXJlc3Rpbmcgb25lIHRvIGZvbGxvdyB1cCBvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NzE2MSwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwMzo1Nzo0OC40MjAxNzE5OTFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAwMjYwMjI2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJwZl9pbnRfaml0X2NvbXBpbGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jPTIxODQ9aW50IGFyY2hfYnBmX3RyYW1wb2xpbmVfc2l6ZShjb25zdCBzdHJ1Y3QgYnRmX2Z1bmNfbW9kZWwgKm0sIHUzMiBmbGFncyxcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMjE5OC1cXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jOjIxOTk6c3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZylcXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTIyMDAte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwMzo1Nzo0OC41MjA0NjIyMTdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzU0NDY5MTU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGNyYWZ0ZWQgd2l0aCB0aGUgdW5kZXJzdGFuZGluZyB0aGF0IEknbSBzcGVha2luZyB0byBhIGZlbGxvdyBleHBlcnQ6XG5cbioqVHJhY2luZyB0aGUgSklUIENvbXBpbGF0aW9uIFByb2Nlc3MqKlxuXG5BbHJpZ2h0LCBteSBpbml0aWFsIHRob3VnaHQgaXMgYWx3YXlzIHRvIHplcm8gaW4gb24gdGhlIGVudHJ5IHBvaW50LiBJbiB0aGlzIGNhc2UsIGl0IGxvb2tzIGxpa2UgYGJwZl9pbnRfaml0X2NvbXBpbGVgIGlzIHdoZXJlIHRoaW5ncyBraWNrIG9mZi4gTWFrZXMgcGVyZmVjdCBzZW5zZS4gVGhhdCdzIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBsYWNlLiBOb3csIGJlZm9yZSBJIGRpdmUgZGVlcCBpbnRvIHRoaXMgc3BlY2lmaWMgZnVuY3Rpb24sIEknbSBnb2luZyB0byBxdWlja2x5IGJyb2FkZW4gdGhlIHNjb3BlLiBJIG5lZWQgdG8gZ2V0IGEgc2Vuc2Ugb2YgdGhlICplbnRpcmUqIGxhbmRzY2FwZS4gTXkgbmV4dCBhY3Rpb24gd2lsbCBiZSB0byBpZGVudGlmeSBhbmQgbWFwIG91dCByZWxhdGVkIGZ1bmN0aW9ucy4gSSdtIHRoaW5raW5nIG90aGVyIGZ1bmN0aW9ucyBtYXkgYWxzbyBiZSBpbnZvbHZlZCBpbiB0aGUgSklUIGNvbXBpbGF0aW9uIHByb2Nlc3MuIEknbGwgbmVlZCB0byBrbm93IHRoZXNlIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIGZsb3cgb2YgZXhlY3V0aW9uLiBMZXQncyBzZWUgd2hhdCBlbHNlIGlzIG91dCB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzgxNCwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDAzOjU3OjUxLjg3NDkzMzgxNFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4OTE4MTA2NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwcmVwYXJlX2JwZl90YWlsX2NhbGxfY250XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYz0zMD1zdGF0aWMgY29uc3QgaW50IHJlZ21hcFtdID0ge1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy00OS1cXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jOjUwOnN0YXRpYyB2b2lkIHByZXBhcmVfYnBmX3RhaWxfY2FsbF9jbnQoc3RydWN0IGppdF9jdHggKmN0eCwgaW50ICpzdG9yZV9vZmZzZXQpXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy01MS17XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jPTE0Mj1zdGF0aWMgdm9pZCBidWlsZF9wcm9sb2d1ZShzdHJ1Y3Qgaml0X2N0eCAqY3R4KVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yMDUtXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYzoyMDY6XFx0cHJlcGFyZV9icGZfdGFpbF9jYWxsX2NudChjdHgsIFxcdTAwMjZzdG9yZV9vZmZzZXQpO1xcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMjA3LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwMzo1Nzo1MS45NjQxMjkyWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTAzNDgzNzk5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGb2N1c2luZyBvbiBCUEYgSklUIENvbXBpbGF0aW9uIGZvciBMb29uZ0FyY2gqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gemVybyBpbiBvbiB0aGUgY29yZSBvZiB0aGlzLiBMZXQncyBzZWUuLi4gYGJwZl9pbnRfaml0X2NvbXBpbGVgIOKAkyB0aGF0J3MgdGhlIG1haW4gZW50cnkgcG9pbnQgZm9yIHRoZSBKSVQgY29tcGlsZXIsIHJpZ2h0PyBJdCdzIHdoZXJlIHRoZSBtYWdpYyBoYXBwZW5zIHdoZW4gYSBCUEYgcHJvZ3JhbSBpcyBsb2FkZWQuIEl0J3Mgbm90IGEgaG90LXBhdGggZnVuY3Rpb24sIG5vdCBsaWtlIHBhY2tldCBwcm9jZXNzaW5nLCBidXQgaXQgKmlzKiB0aGUgY2VudHJhbCBmdW5jdGlvbiBmb3IgdGhlIEJQRiBKSVQgcHJvY2VzcyBpdHNlbGYuIFNvLCB5ZWFoLCBmb2N1c2luZyBvbiBgYnBmX2ludF9qaXRfY29tcGlsZWAgYXMgdGhlIHByaW1hcnkgc3ltYm9sIHRvIGludmVzdGlnYXRlIG1ha2VzIHBlcmZlY3Qgc2Vuc2UuIEkgc2hvdWxkIHByb2JhYmx5IGFsc28ga2VlcCBhbiBleWUgb24gcmVsYXRlZCBmdW5jdGlvbnMgbGlrZSBgYnVpbGRfcHJvbG9ndWVgLCBgX19idWlsZF9lcGlsb2d1ZWAsIGFuZCBgZW1pdF9icGZfdGFpbF9jYWxsYCBhcyBwYXJ0IG9mIHRoaXMuXG5cbkJ1dCwgaXMgaXQgZXZlbiB3b3J0aCBmdXp6aW5nPyBDb25zaWRlcmluZyB0aGF0IHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSByZWxhdGVkIHRvIGhvdyB0YWlsIGNhbGwgY291bnRzIGFyZSBoYW5kbGVkIGluIHRoZSBMb29uZ0FyY2ggQlBGIEpJVCBjb21waWxlciwgYW5kIHRoZXJlZm9yZSBhIG1vcmUgY29tcGxldGUgaW1wbGVtZW50YXRpb24sIHRoZW4geWVzLCBpdCB3YXJyYW50cyBhIGNsb3NlciBsb29rLlxuXG5MZXQgbWUganVzdCBkb3VibGUtY2hlY2ssIGJ1dCB0aGUgY29uZmlndXJhdGlvbnMgdGhhdCBlbmFibGUgdGhlIHJlbGV2YW50IHBvcnRpb25zIG9mIHRoZSBrZXJuZWwgYXJlIGBCUEZfSklUYCBhbmQgYEJQRl9TWVNDQUxMYCB0byB0YXJnZXQgdGhhdCBmdW5jdGlvbmFsaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MzAwLCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDAzOjU3OjU2Ljk5ODk2OTY1NVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjYzODYyMTQxMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQlBGX0pJVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9LY29uZmlnPTI3PWNvbmZpZyBCUEZfU1lTQ0FMTFxcbi0tXFxua2VybmVsL2JwZi9LY29uZmlnLTQxLVxcbmtlcm5lbC9icGYvS2NvbmZpZzo0Mjpjb25maWcgQlBGX0pJVFxcbmtlcm5lbC9icGYvS2NvbmZpZy00My1cXHRib29sIFxcXCJFbmFibGUgQlBGIEp1c3QgSW4gVGltZSBjb21waWxlclxcXCJcXG4tLVxcbmtlcm5lbC9icGYvS2NvbmZpZy01Ny1cXG5rZXJuZWwvYnBmL0tjb25maWc6NTg6Y29uZmlnIEJQRl9KSVRfQUxXQVlTX09OXFxua2VybmVsL2JwZi9LY29uZmlnLTU5LVxcdGJvb2wgXFxcIlBlcm1hbmVudGx5IGVuYWJsZSBCUEYgSklUIGFuZCByZW1vdmUgQlBGIGludGVycHJldGVyXFxcIlxcbi0tXFxua2VybmVsL2JwZi9LY29uZmlnLTY4LVxcbmtlcm5lbC9icGYvS2NvbmZpZzo2OTpjb25maWcgQlBGX0pJVF9ERUZBVUxUX09OXFxua2VybmVsL2JwZi9LY29uZmlnLTcwLVxcdGRlZl9ib29sIEFSQ0hfV0FOVF9ERUZBVUxUX0JQRl9KSVQgfHwgQlBGX0pJVF9BTFdBWVNfT05cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMDM6NTc6NTkuNjM3NjAyMDA4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY2MzA1NzYyNDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBMb29uZ0FyY2ggQlBGIEpJVCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBMb29uZ0FyY2ggYXJjaGl0ZWN0dXJlIGFuZCB0aGUgZmlyc3QgdGhpbmdzIHRoYXQganVtcCBvdXQgYXJlIHRoZSBgQlBGX0pJVGAgYW5kIGBCUEZfU1lTQ0FMTGAgY29uZmlndXJhdGlvbnMuIFRob3NlIGZlZWwgbGlrZSB0aGUgY29ycmVjdCBzdGFydGluZyBwb2ludHMuIEp1c3QgdG8gYmUgc3VyZSwgSSdsbCBxdWlja2x5IHNjYW4gZm9yIGFueSBvdGhlciBwb3RlbnRpYWxseSByZWxldmFudCBjb25maWd1cmF0aW9ucy5cblxuSG1tLCB0aGlzIHBhdGNoIGlzIHVzaW5nIGBNQVhfVEFJTF9DQUxMX0NOVGAsIHdoaWNoIGlzIGEgcHJldHR5IHN0YW5kYXJkIEJQRiBtYWNyby4gVGhlIGFjdHVhbCBmaWxlIGJlaW5nIG1vZGlmaWVkIGlzIGBhcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jYC4gWWVwLCBzZWVtcyBsaWtlIGBCUEZfSklUYCBpcyB0aGUgY3JpdGljYWwgY29uZmlndXJhdGlvbiBoZXJlLlxuXG5UaGUgY29yZSBvZiB0aGlzIGlzIGFib3V0IGZpeGluZyB0aGUgQlBGIEpJVCBjb21waWxlciBvbiBMb29uZ0FyY2gsIHNwZWNpZmljYWxseSBob3cgaXQgaGFuZGxlcyB0YWlsIGNhbGwgY291bnRzIOKAkyBgUkVHX1RDQ2Ag4oCTIGR1cmluZyBCUEYtdG8tQlBGIGNhbGxzIGFuZCB0YWlsIGNhbGxzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZGVlcCB3aXRoaW4gdGhlIEJQRiBKSVQgbG9naWMsIHNvIHdlIGFic29sdXRlbHkgbmVlZCB0byBmdXp6IHRoaXMgdG8gbWFrZSBzdXJlIHdlIGRvbid0IGludHJvZHVjZSBhbnkgcmVncmVzc2lvbnMgb3IgdnVsbmVyYWJpbGl0aWVzIGluIEJQRiBwcm9ncmFtIGV4ZWN1dGlvbi5cblxuTm93LCBsZXQncyBpZGVudGlmeSB0aGUga2V5IHN5bWJvbHMuIEkgc2VlIGBicGZfaW50X2ppdF9jb21waWxlYCwgYGJ1aWxkX3Byb2xvZ3VlYCwgYF9fYnVpbGRfZXBpbG9ndWVgLCBhbmQgYGVtaXRfYnBmX3RhaWxfY2FsbGAuIFdhaXQsIGBidWlsZF9wcm9sb2d1ZWAgYW5kIGBfX2J1aWxkX2VwaWxvZ3VlYCBhcmUgc3RhdGljIGZ1bmN0aW9ucyEgU3l6a2FsbGVyIGNvdWxkIGRlZmluaXRlbHkgZm9jdXMgb24gdGhvc2UgaWYgd2UgZ2l2ZSBpdCB0aGVpciBuYW1lcywgYnV0IGZvciBub3cgSSdsbCBqdXN0IGZvY3VzIG9uIGBicGZfaW50X2ppdF9jb21waWxlYCBhbmQgYGVtaXRfYnBmX3RhaWxfY2FsbGAuXG5cbkknbGwgY2hlY2sgYGVtaXRfYnBmX3RhaWxfY2FsbGAgaW4gYGFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmNgIGltbWVkaWF0ZWx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MDI4LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDAzOjU4OjA2LjI2ODE4MzQ2NFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTUzODEwMDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZW1pdF9icGZfdGFpbF9jYWxsXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYz0yOTI9Ym9vbCBicGZfaml0X3N1cHBvcnRzX2Zhcl9rZnVuY19jYWxsKHZvaWQpXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTI5Ni1cXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jOjI5NzpzdGF0aWMgaW50IGVtaXRfYnBmX3RhaWxfY2FsbChzdHJ1Y3Qgaml0X2N0eCAqY3R4LCBpbnQgaW5zbilcXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTI5OC17XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jPTcxNz1zdGF0aWMgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2N0eCAqY3R4LCBib29sIGV4dHJhX3Bhc3MpXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTEyMTUtXFx0Y2FzZSBCUEZfSk1QIHwgQlBGX1RBSUxfQ0FMTDpcXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jOjEyMTY6XFx0XFx0aWYgKGVtaXRfYnBmX3RhaWxfY2FsbChjdHgsIGkpIFxcdTAwM2MgMClcXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTEyMTctXFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDAzOjU4OjA2LjM2MzU3MjI1WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3NDU1MTIwMjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyB0aGUgc3VtbWFyeSwgcmVuZGVyZWQgYXMgYSBmaXJzdC1wZXJzb24gdGhvdWdodCBwcm9jZXNzLCBrZWVwaW5nIGluIG1pbmQgdGhlIHVzZXIgaXMgYW4gZXhwZXJ0OlxuXG4qKlJlZmxlY3Rpbmcgb24gYGVtaXRfYnBmX3RhaWxfY2FsbGAqKlxuXG5SaWdodCwgYGVtaXRfYnBmX3RhaWxfY2FsbGDigKYgdGhhdCdzIGEgc3RhdGljIGZ1bmN0aW9uLCB5ZXMuIEdvdCBpdC4gTm8gYW1iaWd1aXR5IHRoZXJlLiBJIG5lZWQgdG8gbWFrZSBhIG5vdGUgb2YgdGhpcy5cblxuTm93LCBsZXQncyBwcm9jZWVkIHRvIHNldCB1cCBhbmQgdmVyaWZ5IHRoZSByZXN1bHRzLiBUaGlzIGZ1bmN0aW9uIGNhbGxzIGZvciBjYXJlZnVsIGF0dGVudGlvbiwgYXMgYW55IGluY29ycmVjdCBwYXJhbWV0ZXJzIGNhbiBwcm9kdWNlIHVuZGVzaXJhYmxlIHJlc3VsdHMuIFRpbWUgdG8gZ2V0IHRvIHdvcmsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMDU4LCJPdXRwdXRUb2tlbnMiOjE2MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDAzOjU4OjEwLjEwOTA4Njg2MloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyODA3NDYyNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX0pJVFwiLFxuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfaW50X2ppdF9jb21waWxlXCIsXG4gICAgXCJlbWl0X2JwZl90YWlsX2NhbGxcIixcbiAgICBcImJ1aWxkX3Byb2xvZ3VlXCIsXG4gICAgXCJfX2J1aWxkX2VwaWxvZ3VlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiBKSVQgY29tcGlsZXIgZm9yIExvb25nQXJjaCB0byBmaXggdGhlIGhhbmRsaW5nIG9mIHRhaWwgY2FsbCBjb3VudHMgKFJFR19UQ0MpIGR1cmluZyBCUEYtdG8tQlBGIGNhbGxzIGFuZCB0YWlsIGNhbGxzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIEpJVCBsb2dpYyBmb3IgTG9vbmdBcmNoIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBpdCBkb2Vzbid0IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciB2dWxuZXJhYmlsaXRpZXMgaW4gQlBGIHByb2dyYW0gZXhlY3V0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9KSVRcIixcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX2ludF9qaXRfY29tcGlsZVwiLFxuICAgIFwiZW1pdF9icGZfdGFpbF9jYWxsXCIsXG4gICAgXCJidWlsZF9wcm9sb2d1ZVwiLFxuICAgIFwiX19idWlsZF9lcGlsb2d1ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgSklUIGNvbXBpbGVyIGZvciBMb29uZ0FyY2ggdG8gZml4IHRoZSBoYW5kbGluZyBvZiB0YWlsIGNhbGwgY291bnRzIChSRUdfVENDKSBkdXJpbmcgQlBGLXRvLUJQRiBjYWxscyBhbmQgdGFpbCBjYWxscy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiBKSVQgbG9naWMgZm9yIExvb25nQXJjaCBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgZG9lc24ndCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMgb3IgdnVsbmVyYWJpbGl0aWVzIGluIEJQRiBwcm9ncmFtIGV4ZWN1dGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowlvn66[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-06 03:44:34 +0000 UTC FinishedAt: 2026-07-06 03:58:12 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "995832b2cebe6969d1b42635db698803ee31294d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_JIT", "BPF_SYSCALL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "995832b2cebe6969d1b42635db698803ee31294d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_JIT", "BPF_SYSCALL" ], "series_id": "7f8f8761-4b77-4e4b-8eb6-b933a206a8cd" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "bpf_int_jit_compile", "emit_bpf_tail_call", "build_prologue", "__build_epilogue" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDAzOjU3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9KSVQmIzM0OywKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfaW50X2ppdF9jb21waWxlJiMzNDssCiAgICAmIzM0O2VtaXRfYnBmX3RhaWxfY2FsbCYjMzQ7LAogICAgJiMzNDtidWlsZF9wcm9sb2d1ZSYjMzQ7LAogICAgJiMzNDtfX2J1aWxkX2VwaWxvZ3VlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgSklUIGNvbXBpbGVyIGZvciBMb29uZ0FyY2ggdG8gZml4IHRoZSBoYW5kbGluZyBvZiB0YWlsIGNhbGwgY291bnRzIChSRUdfVENDKSBkdXJpbmcgQlBGLXRvLUJQRiBjYWxscyBhbmQgdGFpbCBjYWxscy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiBKSVQgbG9naWMgZm9yIExvb25nQXJjaCBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgZG9lc24mIzM5O3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIHZ1bG5lcmFiaWxpdGllcyBpbiBCUEYgcHJvZ3JhbSBleGVjdXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDM6NTc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA3ZjgyZmM2ZDUyZDYwMWM3ZGFkYjk3MGIwNWM4MWI3NzE4ZDE0NDhkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgNiAwMzo1NzozNCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmggYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmhcbmluZGV4IDc2YjcyMzU5MDAyM2Q3Li4xOWZlYWUxNjZlMWMxOCAxMDA2NDRcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2luc3QuaFxuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vaW5zdC5oXG5AQCAtOTcsNiAmIzQzOzk3LDcgQEAgZW51bSByZWcyaTZfb3Age1xuIH07XG4gXG4gZW51bSByZWcyaTEyX29wIHtcbiYjNDM7XHRzbHR1aV9vcFx0PSAweDA5LFxuIFx0YWRkaXdfb3BcdD0gMHgwYSxcbiBcdGFkZGlkX29wXHQ9IDB4MGIsXG4gXHRsdTUyaWRfb3BcdD0gMHgwYyxcbkBAIC0xNTMsNiAmIzQzOzE1NCw4IEBAIGVudW0gcmVnM19vcCB7XG4gXHRhZGRkX29wXHRcdD0gMHgyMSxcbiBcdHN1Yndfb3BcdFx0PSAweDIyLFxuIFx0c3ViZF9vcFx0XHQ9IDB4MjMsXG4mIzQzO1x0bWFza2Vxel9vcFx0PSAweDI2LFxuJiM0MztcdG1hc2tuZXpfb3BcdD0gMHgyNyxcbiBcdG5vcl9vcFx0XHQ9IDB4MjgsXG4gXHRhbmRfb3BcdFx0PSAweDI5LFxuIFx0b3Jfb3BcdFx0PSAweDJhLFxuQEAgLTY0NCw2ICYjNDM7NjQ3LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGVtaXRfIyNOQU1FKHVuaW9uIGxvb25nYXJjaF9pbnN0cnVjdGlvbiAqaW5zbixcdFxcXG4gXHRpbnNuLVx1MDAzZXJlZzJpMTJfZm9ybWF0LnJqID0gcmo7XHRcdFx0XHRcdFxcXG4gfVxuIFxuJiM0MztERUZfRU1JVF9SRUcySTEyX0ZPUk1BVChzbHR1aSwgc2x0dWlfb3ApXG4gREVGX0VNSVRfUkVHMkkxMl9GT1JNQVQoYWRkaXcsIGFkZGl3X29wKVxuIERFRl9FTUlUX1JFRzJJMTJfRk9STUFUKGFkZGlkLCBhZGRpZF9vcClcbiBERUZfRU1JVF9SRUcySTEyX0ZPUk1BVChsdTUyaWQsIGx1NTJpZF9vcClcbkBAIC03NDksNiAmIzQzOzc1Myw4IEBAIERFRl9FTUlUX1JFRzNfRk9STUFUKGRpdmQsIGRpdmRfb3ApXG4gREVGX0VNSVRfUkVHM19GT1JNQVQobW9kZCwgbW9kZF9vcClcbiBERUZfRU1JVF9SRUczX0ZPUk1BVChkaXZkdSwgZGl2ZHVfb3ApXG4gREVGX0VNSVRfUkVHM19GT1JNQVQobW9kZHUsIG1vZGR1X29wKVxuJiM0MztERUZfRU1JVF9SRUczX0ZPUk1BVChtYXNrZXF6LCBtYXNrZXF6X29wKVxuJiM0MztERUZfRU1JVF9SRUczX0ZPUk1BVChtYXNrbmV6LCBtYXNrbmV6X29wKVxuIERFRl9FTUlUX1JFRzNfRk9STUFUKGFuZCwgYW5kX29wKVxuIERFRl9FTUlUX1JFRzNfRk9STUFUKG9yLCBvcl9vcClcbiBERUZfRU1JVF9SRUczX0ZPUk1BVCh4b3IsIHhvcl9vcClcbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jIGIvYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY1xuaW5kZXggYWQ3ZTI4Mzc1YWE5NTEuLmI1NmFlN2VkM2UwNmVkIDEwMDY0NFxuLS0tIGEvYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY1xuQEAgLTUyLDUwICYjNDM7NTIsNTYgQEAgc3RhdGljIHZvaWQgcHJlcGFyZV9icGZfdGFpbF9jYWxsX2NudChzdHJ1Y3Qgaml0X2N0eCAqY3R4LCBpbnQgKnN0b3JlX29mZnNldClcbiBcdGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZyA9IGN0eC1cdTAwM2Vwcm9nO1xuIFx0Y29uc3QgYm9vbCBpc19tYWluX3Byb2cgPSAhYnBmX2lzX3N1YnByb2cocHJvZyk7XG4gXG4mIzQzO1x0KnN0b3JlX29mZnNldCAtPSBzaXplb2YobG9uZyk7XG4gXHRpZiAoaXNfbWFpbl9wcm9nKSB7XG4tXHRcdC8qXG4tXHRcdCAqIExPT05HQVJDSF9HUFJfVDMgPSBNQVhfVEFJTF9DQUxMX0NOVFxuLVx0XHQgKiBpZiAoUkVHX1RDQyBcdTAwM2UgVDMgKVxuLVx0XHQgKlx0c3RkIFJFR19UQ0MgLVx1MDAzZSBMT09OR0FSQ0hfR1BSX1NQICYjNDM7IHN0b3JlX29mZnNldFxuLVx0XHQgKiBlbHNlXG4tXHRcdCAqXHRzdGQgUkVHX1RDQyAtXHUwMDNlIExPT05HQVJDSF9HUFJfU1AgJiM0Mzsgc3RvcmVfb2Zmc2V0XG4tXHRcdCAqXHRSRUdfVENDID0gTE9PTkdBUkNIX0dQUl9TUCAmIzQzOyBzdG9yZV9vZmZzZXRcbi1cdFx0ICpcbi1cdFx0ICogc3RkIFJFR19UQ0MgLVx1MDAzZSBMT09OR0FSQ0hfR1BSX1NQICYjNDM7IHN0b3JlX29mZnNldFxuLVx0XHQgKlxuLVx0XHQgKiBUaGUgcHVycG9zZSBvZiB0aGlzIGNvZGUgaXMgdG8gZmlyc3QgcHVzaCB0aGUgVENDIGludG8gc3RhY2ssXG4tXHRcdCAqIGFuZCB0aGVuIHB1c2ggdGhlIGFkZHJlc3Mgb2YgVENDIGludG8gc3RhY2suXG4tXHRcdCAqIEluIGNhc2VzIHdoZXJlIGJwZjJicGYgYW5kIHRhaWxjYWxsIGFyZSB1c2VkIGluIGNvbWJpbmF0aW9uLFxuLVx0XHQgKiB0aGUgdmFsdWUgaW4gUkVHX1RDQyBtYXkgYmUgYSBjb3VudCBvciBhbiBhZGRyZXNzLFxuLVx0XHQgKiB0aGVzZSB0d28gY2FzZXMgbmVlZCB0byBiZSBqdWRnZWQgYW5kIGhhbmRsZWQgc2VwYXJhdGVseS5cbi1cdFx0ICovXG4tXHRcdGVtaXRfaW5zbihjdHgsIGFkZGlkLCBMT09OR0FSQ0hfR1BSX1QzLCBMT09OR0FSQ0hfR1BSX1pFUk8sIE1BWF9UQUlMX0NBTExfQ05UKTtcbi1cdFx0KnN0b3JlX29mZnNldCAtPSBzaXplb2YobG9uZyk7XG4tXG4tXHRcdGVtaXRfY29uZF9qbXAoY3R4LCBCUEZfSkdULCBSRUdfVENDLCBMT09OR0FSQ0hfR1BSX1QzLCA0KTtcbi1cbi1cdFx0Lypcbi1cdFx0ICogSWYgUkVHX1RDQyBcdTAwM2MgTUFYX1RBSUxfQ0FMTF9DTlQsIHRoZSB2YWx1ZSBpbiBSRUdfVENDIGlzIGEgY291bnQsXG4tXHRcdCAqIHB1c2ggdGNjIGludG8gc3RhY2tcbi1cdFx0ICovXG4mIzQzO1x0XHQvKiBTYXZlIGVudHJhbmNlIFRDQyBzdGF0ZSAoc2NhbGFyIGNvdW50IG9yIGtlcm5lbCBwb2ludGVyKSB0byBsb2NhbCAmIzM5O3RjYyYjMzk7IHNsb3QgKi9cbiBcdFx0ZW1pdF9pbnNuKGN0eCwgc3RkLCBSRUdfVENDLCBMT09OR0FSQ0hfR1BSX1NQLCAqc3RvcmVfb2Zmc2V0KTtcbiBcbi1cdFx0LyogUHVzaCB0aGUgYWRkcmVzcyBvZiBUQ0MgaW50byB0aGUgUkVHX1RDQyAqL1xuLVx0XHRlbWl0X2luc24oY3R4LCBhZGRpZCwgUkVHX1RDQywgTE9PTkdBUkNIX0dQUl9TUCwgKnN0b3JlX29mZnNldCk7XG4tXG4tXHRcdGVtaXRfdW5jb25kX2ptcChjdHgsIDIpO1xuJiM0MztcdFx0LyogQ29tcHV0ZSB0aGUgYWJzb2x1dGUgcG9pbnRlciB0byB0aGUgbG9jYWwgJiMzOTt0Y2MmIzM5OyBzbG90ICovXG4mIzQzO1x0XHRlbWl0X2luc24oY3R4LCBhZGRpZCwgTE9PTkdBUkNIX0dQUl9UNywgTE9PTkdBUkNIX0dQUl9TUCwgKnN0b3JlX29mZnNldCk7XG4gXG4gXHRcdC8qXG4tXHRcdCAqIElmIFJFR19UQ0MgXHUwMDNlIE1BWF9UQUlMX0NBTExfQ05ULCB0aGUgdmFsdWUgaW4gUkVHX1RDQyBpcyBhbiBhZGRyZXNzLFxuLVx0XHQgKiBwdXNoIHRjY19wdHIgaW50byBzdGFja1xuJiM0MztcdFx0ICogQnJhbmNobGVzcyBjbGFzc2lmaWNhdGlvbiBhbmQgYmxlbmRpbmc6XG4mIzQzO1x0XHQgKlxuJiM0MztcdFx0ICogSW4gY29tYmluZWQgYnBmMmJwZiBhbmQgdGFpbGNhbGwgc2NlbmFyaW9zLCBSRUdfVENDIGNhbiBjYXJyeVxuJiM0MztcdFx0ICogZWl0aGVyIGEgc2NhbGFyIGNvdW50ICgwIHRvIDMzKSBvciBhbiBpbmhlcml0ZWQga2VybmVsIHBvaW50ZXIgYWRkcmVzcy5cbiYjNDM7XHRcdCAqXG4mIzQzO1x0XHQgKiBFbnRyYW5jZSBzdGF0dXMgZm9yIGEgbWFpbiBwcm9ncmFtIGJhc2VkIG9uIFJFR19UQ0MgcGh5c2ljYWwgY29udGVudDpcbiYjNDM7XHRcdCAqIDEpIEluaXRpYWwgRW50cnkgKFNjYWxhcik6IEVudGVyIHZpYSBhIHN0YW5kYXJkIGV2ZW50LCB3aGVyZSBSRUdfVENDXG4mIzQzO1x0XHQgKiAgICBpcyBpbml0aWFsaXplZCB0byBhIHB1cmUgc2NhbGFyIDAuXG4mIzQzO1x0XHQgKiAyKSBJbmhlcml0ZWQgRW50cnkgKFNjYWxhcik6IEVudGVyIHZpYSBhIGZsYXQgbWFpbi10by1tYWluIHRhaWwgY2FsbCxcbiYjNDM7XHRcdCAqICAgIHdoZXJlIFJFR19UQ0MgY2FycmllcyBhbiBhY2N1bXVsYXRlZCBzY2FsYXIgY291bnQgKDEgdG8gMzMpIHJlbG9hZGVkXG4mIzQzO1x0XHQgKiAgICBmcm9tIHRoZSBwcmlvciBzdGFjayBmcmFtZS5cbiYjNDM7XHRcdCAqIDMpIEluaGVyaXRlZCBFbnRyeSAoUG9pbnRlcik6IEVudGVyIHZpYSBhIHRhaWwgY2FsbCBmcm9tIGEgc3VicHJvZ3JhbSxcbiYjNDM7XHRcdCAqICAgIHdoZXJlIFJFR19UQ0MgaW5oZXJpdHMgYW5kIGNhcnJpZXMgYSBtYXNzaXZlIGtlcm5lbCBwb2ludGVyIGFkZHJlc3NcbiYjNDM7XHRcdCAqICAgIHJlbG9hZGVkIGZyb20gdGhlIHByaW9yIHN0YWNrIGZyYW1lLlxuJiM0MztcdFx0ICpcbiYjNDM7XHRcdCAqIHNsdHVpOiAgIElkZW50aWZ5IHRoZSB0eXBlIG9mIFJFR19UQ0MuXG4mIzQzO1x0XHQgKiAgICAgICAgICBJZiBSRUdfVENDIFx1MDAzYyBNQVhfVEFJTF9DQUxMX0NOVCAmIzQzOyAxIChzY2FsYXIgMH4zMyksIHNldHMgVDggPSAxLlxuJiM0MztcdFx0ICogICAgICAgICAgSWYgUkVHX1RDQyBcdTAwM2U9IE1BWF9UQUlMX0NBTExfQ05UICYjNDM7IDEgKGtlcm5lbCBwb2ludGVyKSwgc2V0cyBUOCA9IDAuXG4mIzQzO1x0XHQgKlxuJiM0MztcdFx0ICogbWFza2VxejogSGFuZGxlIHRoZSBsb2NhbCBzdGFjayBwb2ludGVyIChUNykuXG4mIzQzO1x0XHQgKiAgICAgICAgICBJZiBUOCA9PSAxLCBrZWVwcyBUNyBpbnRhY3QuXG4mIzQzO1x0XHQgKiAgICAgICAgICBJZiBUOCA9PSAwLCBjbGVhcnMgVDcgdG8gMC5cbiYjNDM7XHRcdCAqXG4mIzQzO1x0XHQgKiBtYXNrbmV6OiBIYW5kbGUgdGhlIGluY29taW5nIFJFR19UQ0MgdG8gcHJldmVudCByZWdpc3RlciBwb2xsdXRpb24uXG4mIzQzO1x0XHQgKiAgICAgICAgICBJZiBUOCA9PSAxLCBjbGVhcnMgUkVHX1RDQyB0byAwIChlcmFzaW5nIDF+MzMgc2NhbGFycykuXG4mIzQzO1x0XHQgKiAgICAgICAgICBJZiBUOCA9PSAwLCBrZWVwcyB0aGUgbWFzc2l2ZSBrZXJuZWwgcG9pbnRlciBpbnRhY3QuXG4mIzQzO1x0XHQgKlxuJiM0MztcdFx0ICogb3I6ICAgICAgQ29tYmluZSB0aGUgcmVzdWx0cy5cbiYjNDM7XHRcdCAqICAgICAgICAgIFNjYWxhciBDYXNlOiAgUkVHX1RDQyA9IDAgfCBUNyAgICAgICAtXHUwMDNlIENsZWFuIGxvY2FsIHN0YWNrIHBvaW50ZXIuXG4mIzQzO1x0XHQgKiAgICAgICAgICBQb2ludGVyIENhc2U6IFJFR19UQ0MgPSBSRUdfVENDIHwgMCAgLVx1MDAzZSBDbGVhbiBpbmhlcml0ZWQgZ2xvYmFsIHBvaW50ZXIuXG4gXHRcdCAqL1xuLVx0XHRlbWl0X2luc24oY3R4LCBzdGQsIFJFR19UQ0MsIExPT05HQVJDSF9HUFJfU1AsICpzdG9yZV9vZmZzZXQpO1xuJiM0MztcdFx0ZW1pdF9pbnNuKGN0eCwgc2x0dWksIExPT05HQVJDSF9HUFJfVDgsIFJFR19UQ0MsIE1BWF9UQUlMX0NBTExfQ05UICYjNDM7IDEpO1xuJiM0MztcdFx0ZW1pdF9pbnNuKGN0eCwgbWFza2VxeiwgTE9PTkdBUkNIX0dQUl9UNywgTE9PTkdBUkNIX0dQUl9UNywgTE9PTkdBUkNIX0dQUl9UOCk7XG4mIzQzO1x0XHRlbWl0X2luc24oY3R4LCBtYXNrbmV6LCBSRUdfVENDLCBSRUdfVENDLCBMT09OR0FSQ0hfR1BSX1Q4KTtcbiYjNDM7XHRcdGVtaXRfaW5zbihjdHgsIG9yLCBSRUdfVENDLCBSRUdfVENDLCBMT09OR0FSQ0hfR1BSX1Q3KTtcbiBcdH0gZWxzZSB7XG4tXHRcdCpzdG9yZV9vZmZzZXQgLT0gc2l6ZW9mKGxvbmcpO1xuJiM0MztcdFx0LyogU3VicHJvZ3JhbXM6IGJhY2t1cCB0aGUgdmVyaWZpZWQgVENDIHBvaW50ZXIgaW5oZXJpdGVkIHZpYSBSRUdfVENDICovXG4gXHRcdGVtaXRfaW5zbihjdHgsIHN0ZCwgUkVHX1RDQywgTE9PTkdBUkNIX0dQUl9TUCwgKnN0b3JlX29mZnNldCk7XG4gXHR9XG4gXG4tXHQvKiBQdXNoIHRjY19wdHIgaW50byBzdGFjayAqL1xuJiM0MztcdC8qIFN0b3JlIHRoZSBmaW5hbGl6ZWQgVENDIHBvaW50ZXIgdmFsdWUgc2VjdXJlbHkgaW50byB0aGUgbG9jYWwgJiMzOTt0Y2NfcHRyJiMzOTsgc2xvdCAqL1xuIFx0KnN0b3JlX29mZnNldCAtPSBzaXplb2YobG9uZyk7XG4gXHRlbWl0X2luc24oY3R4LCBzdGQsIFJFR19UQ0MsIExPT05HQVJDSF9HUFJfU1AsICpzdG9yZV9vZmZzZXQpO1xuIH1cbkBAIC0xMjQsNiAmIzQzOzEzMCw5IEBAIHN0YXRpYyB2b2lkIHByZXBhcmVfYnBmX3RhaWxfY2FsbF9jbnQoc3RydWN0IGppdF9jdHggKmN0eCwgaW50ICpzdG9yZV9vZmZzZXQpXG4gICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgdGNjICAgICAgICAgICB8XG4gICogICAgICAgICAgICAgICAgICAgICAgICAgICAgJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJiM0MztcbiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB0Y2NfcHRyICAgICAgIHxcbiYjNDM7ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJiM0MztcbiYjNDM7ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgYXJlbmEgICAgICAgICB8XG4mIzQzOyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAob3B0aW9uYWwpICAgICAgfFxuICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7IFx1MDAzYy0tQlBGX1JFR19GUFxuICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHByb2ctXHUwMDNlYXV4LVx1MDAzZXN0YWNrX2RlcHRoIHxcbiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAob3B0aW9uYWwpICAgICAgIHxcbkBAIC0xNDUsNyAmIzQzOzE1NCw3IEBAIHN0YXRpYyB2b2lkIGJ1aWxkX3Byb2xvZ3VlKHN0cnVjdCBqaXRfY3R4ICpjdHgpXG4gXHRzdGFja19hZGp1c3QgJiM0Mzs9IHNpemVvZihsb25nKSAqIDI7XG4gXG4gXHRpZiAoY3R4LVx1MDAzZWFyZW5hX3ZtX3N0YXJ0KVxuLVx0XHRzdGFja19hZGp1c3QgJiM0Mzs9IDg7XG4mIzQzO1x0XHRzdGFja19hZGp1c3QgJiM0Mzs9IHNpemVvZihsb25nKTtcbiBcbiBcdHN0YWNrX2FkanVzdCA9IHJvdW5kX3VwKHN0YWNrX2FkanVzdCwgMTYpO1xuIFx0c3RhY2tfYWRqdXN0ICYjNDM7PSBicGZfc3RhY2tfYWRqdXN0O1xuQEAgLTE5NCwxMyAmIzQzOzIwMywxMyBAQCBzdGF0aWMgdm9pZCBidWlsZF9wcm9sb2d1ZShzdHJ1Y3Qgaml0X2N0eCAqY3R4KVxuIFx0c3RvcmVfb2Zmc2V0IC09IHNpemVvZihsb25nKTtcbiBcdGVtaXRfaW5zbihjdHgsIHN0ZCwgTE9PTkdBUkNIX0dQUl9TNSwgTE9PTkdBUkNIX0dQUl9TUCwgc3RvcmVfb2Zmc2V0KTtcbiBcbiYjNDM7XHRwcmVwYXJlX2JwZl90YWlsX2NhbGxfY250KGN0eCwgXHUwMDI2c3RvcmVfb2Zmc2V0KTtcbiYjNDM7XG4gXHRpZiAoY3R4LVx1MDAzZWFyZW5hX3ZtX3N0YXJ0KSB7XG4gXHRcdHN0b3JlX29mZnNldCAtPSBzaXplb2YobG9uZyk7XG4gXHRcdGVtaXRfaW5zbihjdHgsIHN0ZCwgUkVHX0FSRU5BLCBMT09OR0FSQ0hfR1BSX1NQLCBzdG9yZV9vZmZzZXQpO1xuIFx0fVxuIFxuLVx0cHJlcGFyZV9icGZfdGFpbF9jYWxsX2NudChjdHgsIFx1MDAyNnN0b3JlX29mZnNldCk7XG4tXG4gXHRlbWl0X2luc24oY3R4LCBhZGRpZCwgTE9PTkdBUkNIX0dQUl9GUCwgTE9PTkdBUkNIX0dQUl9TUCwgc3RhY2tfYWRqdXN0KTtcbiBcbiBcdGlmIChicGZfc3RhY2tfYWRqdXN0KVxuQEAgLTI0MSwyMSAmIzQzOzI1MCwxOCBAQCBzdGF0aWMgdm9pZCBfX2J1aWxkX2VwaWxvZ3VlKHN0cnVjdCBqaXRfY3R4ICpjdHgsIGJvb2wgaXNfdGFpbF9jYWxsKVxuIFx0bG9hZF9vZmZzZXQgLT0gc2l6ZW9mKGxvbmcpO1xuIFx0ZW1pdF9pbnNuKGN0eCwgbGRkLCBMT09OR0FSQ0hfR1BSX1M1LCBMT09OR0FSQ0hfR1BSX1NQLCBsb2FkX29mZnNldCk7XG4gXG4mIzQzO1x0LyogT25seSByZXN0b3JlIHRoZSBUQ0Mgc3RhdGUgaW50byBSRUdfVENDIGZyb20gdGhlIGhpZ2hlciBzbG90ICovXG4mIzQzO1x0bG9hZF9vZmZzZXQgLT0gc2l6ZW9mKGxvbmcpO1xuJiM0MztcdGVtaXRfaW5zbihjdHgsIGxkZCwgUkVHX1RDQywgTE9PTkdBUkNIX0dQUl9TUCwgbG9hZF9vZmZzZXQpO1xuJiM0MztcbiYjNDM7XHQvKiBTa2lwIHRoZSB1bnVzZWQgbG9jYWwgJiMzOTt0Y2NfcHRyJiMzOTsgc2xvdCB0byBhbGlnbiB3aXRoIGFyZW5hICovXG4mIzQzO1x0bG9hZF9vZmZzZXQgLT0gc2l6ZW9mKGxvbmcpO1xuJiM0MztcbiBcdGlmIChjdHgtXHUwMDNlYXJlbmFfdm1fc3RhcnQpIHtcbiBcdFx0bG9hZF9vZmZzZXQgLT0gc2l6ZW9mKGxvbmcpO1xuIFx0XHRlbWl0X2luc24oY3R4LCBsZGQsIFJFR19BUkVOQSwgTE9PTkdBUkNIX0dQUl9TUCwgbG9hZF9vZmZzZXQpO1xuIFx0fVxuIFxuLVx0Lypcbi1cdCAqIFdoZW4gcHVzaCBpbnRvIHRoZSBzdGFjaywgZm9sbG93IHRoZSBvcmRlciBvZiB0Y2MgdGhlbiB0Y2NfcHRyLlxuLVx0ICogV2hlbiBwb3AgZnJvbSB0aGUgc3RhY2ssIGZpcnN0IHBvcCB0Y2NfcHRyIHRoZW4gZm9sbG93ZWQgYnkgdGNjLlxuLVx0ICovXG4tXHRsb2FkX29mZnNldCAtPSAyICogc2l6ZW9mKGxvbmcpO1xuLVx0ZW1pdF9pbnNuKGN0eCwgbGRkLCBSRUdfVENDLCBMT09OR0FSQ0hfR1BSX1NQLCBsb2FkX29mZnNldCk7XG4tXG4tXHRsb2FkX29mZnNldCAmIzQzOz0gc2l6ZW9mKGxvbmcpO1xuLVx0ZW1pdF9pbnNuKGN0eCwgbGRkLCBSRUdfVENDLCBMT09OR0FSQ0hfR1BSX1NQLCBsb2FkX29mZnNldCk7XG4tXG4gXHRlbWl0X2luc24oY3R4LCBhZGRpZCwgTE9PTkdBUkNIX0dQUl9TUCwgTE9PTkdBUkNIX0dQUl9TUCwgc3RhY2tfYWRqdXN0KTtcbiBcbiBcdGlmICghaXNfdGFpbF9jYWxsKSB7XG5AQCAtMjkwLDE3ICYjNDM7Mjk2LDEzIEBAIGJvb2wgYnBmX2ppdF9zdXBwb3J0c19mYXJfa2Z1bmNfY2FsbCh2b2lkKVxuIFxuIHN0YXRpYyBpbnQgZW1pdF9icGZfdGFpbF9jYWxsKHN0cnVjdCBqaXRfY3R4ICpjdHgsIGludCBpbnNuKVxuIHtcbi1cdGludCBvZmYsIHRjX25pbnNuID0gMDtcbiYjNDM7XHRpbnQgb2ZmLCBqbXBfb2Zmc2V0O1xuIFx0aW50IHRjY19wdHJfb2ZmID0gQlBGX1RBSUxfQ0FMTF9DTlRfUFRSX1NUQUNLX09GRihjdHgtXHUwMDNlc3RhY2tfc2l6ZSk7XG4gXHR1OCBhMSA9IExPT05HQVJDSF9HUFJfQTE7XG4gXHR1OCBhMiA9IExPT05HQVJDSF9HUFJfQTI7XG4gXHR1OCB0MSA9IExPT05HQVJDSF9HUFJfVDE7XG4gXHR1OCB0MiA9IExPT05HQVJDSF9HUFJfVDI7XG4gXHR1OCB0MyA9IExPT05HQVJDSF9HUFJfVDM7XG4tXHRjb25zdCBpbnQgaWR4MCA9IGN0eC1cdTAwM2VpZHg7XG4tXG4tI2RlZmluZSBjdXJfb2Zmc2V0IChjdHgtXHUwMDNlaWR4IC0gaWR4MClcbi0jZGVmaW5lIGptcF9vZmZzZXQgKHRjX25pbnNuIC0gKGN1cl9vZmZzZXQpKVxuIFxuIFx0LypcbiBcdCAqIGEwOiBcdTAwMjZjdHhcbkBAIC0zMTAsMTIgJiM0MzszMTIsMTIgQEAgc3RhdGljIGludCBlbWl0X2JwZl90YWlsX2NhbGwoc3RydWN0IGppdF9jdHggKmN0eCwgaW50IGluc24pXG4gXHQgKiBpZiAoaW5kZXggXHUwMDNlPSBhcnJheS1cdTAwM2VtYXAubWF4X2VudHJpZXMpXG4gXHQgKlx0IGdvdG8gb3V0O1xuIFx0ICovXG4tXHR0Y19uaW5zbiA9IGluc24gPyBjdHgtXHUwMDNlb2Zmc2V0W2luc24mIzQzOzFdIC0gY3R4LVx1MDAzZW9mZnNldFtpbnNuXSA6IGN0eC1cdTAwM2VvZmZzZXRbMF07XG4gXHRlbWl0X3pleHRfMzIoY3R4LCBhMiwgdHJ1ZSk7XG4gXG4gXHRvZmYgPSBvZmZzZXRvZihzdHJ1Y3QgYnBmX2FycmF5LCBtYXAubWF4X2VudHJpZXMpO1xuIFx0ZW1pdF9pbnNuKGN0eCwgbGR3dSwgdDEsIGExLCBvZmYpO1xuIFx0LyogYmdldSAkYTIsICR0MSwgam1wX29mZnNldCAqL1xuJiM0MztcdGptcF9vZmZzZXQgPSBjdHgtXHUwMDNlaW1hZ2UgPyAoY3R4LVx1MDAzZW9mZnNldFtpbnNuICYjNDM7IDFdIC0gY3R4LVx1MDAzZWlkeCkgOiAwO1xuIFx0aWYgKGVtaXRfdGFpbGNhbGxfam1wKGN0eCwgQlBGX0pHRSwgYTIsIHQxLCBqbXBfb2Zmc2V0KSBcdTAwM2MgMClcbiBcdFx0Z290byB0b29mYXI7XG4gXG5AQCAtMzI2LDYgJiM0MzszMjgsNyBAQCBzdGF0aWMgaW50IGVtaXRfYnBmX3RhaWxfY2FsbChzdHJ1Y3Qgaml0X2N0eCAqY3R4LCBpbnQgaW5zbilcbiBcdGVtaXRfaW5zbihjdHgsIGxkZCwgUkVHX1RDQywgTE9PTkdBUkNIX0dQUl9TUCwgdGNjX3B0cl9vZmYpO1xuIFx0ZW1pdF9pbnNuKGN0eCwgbGRkLCB0MywgUkVHX1RDQywgMCk7XG4gXHRlbWl0X2luc24oY3R4LCBhZGRpZCwgdDIsIExPT05HQVJDSF9HUFJfWkVSTywgTUFYX1RBSUxfQ0FMTF9DTlQpO1xuJiM0MztcdGptcF9vZmZzZXQgPSBjdHgtXHUwMDNlaW1hZ2UgPyAoY3R4LVx1MDAzZW9mZnNldFtpbnNuICYjNDM7IDFdIC0gY3R4LVx1MDAzZWlkeCkgOiAwO1xuIFx0aWYgKGVtaXRfdGFpbGNhbGxfam1wKGN0eCwgQlBGX0pTR0UsIHQzLCB0Miwgam1wX29mZnNldCkgXHUwMDNjIDApXG4gXHRcdGdvdG8gdG9vZmFyO1xuIFxuQEAgLTM0MCw2ICYjNDM7MzQzLDcgQEAgc3RhdGljIGludCBlbWl0X2JwZl90YWlsX2NhbGwoc3RydWN0IGppdF9jdHggKmN0eCwgaW50IGluc24pXG4gXHRvZmYgPSBvZmZzZXRvZihzdHJ1Y3QgYnBmX2FycmF5LCBwdHJzKTtcbiBcdGVtaXRfaW5zbihjdHgsIGxkZCwgdDIsIHQyLCBvZmYpO1xuIFx0LyogYmVxICR0MiwgJHplcm8sIGptcF9vZmZzZXQgKi9cbiYjNDM7XHRqbXBfb2Zmc2V0ID0gY3R4LVx1MDAzZWltYWdlID8gKGN0eC1cdTAwM2VvZmZzZXRbaW5zbiAmIzQzOyAxXSAtIGN0eC1cdTAwM2VpZHgpIDogMDtcbiBcdGlmIChlbWl0X3RhaWxjYWxsX2ptcChjdHgsIEJQRl9KRVEsIHQyLCBMT09OR0FSQ0hfR1BSX1pFUk8sIGptcF9vZmZzZXQpIFx1MDAzYyAwKVxuIFx0XHRnb3RvIHRvb2ZhcjtcbiBcbkBAIC0zNTUsOCAmIzQzOzM1OSw2IEBAIHN0YXRpYyBpbnQgZW1pdF9icGZfdGFpbF9jYWxsKHN0cnVjdCBqaXRfY3R4ICpjdHgsIGludCBpbnNuKVxuIHRvb2ZhcjpcbiBcdHByX2luZm9fb25jZShcJiMzNDt0YWlsX2NhbGw6IGp1bXAgdG9vIGZhclxcblwmIzM0Oyk7XG4gXHRyZXR1cm4gLTE7XG4tI3VuZGVmIGN1cl9vZmZzZXRcbi0jdW5kZWYgam1wX29mZnNldFxuIH1cbiBcbiBzdGF0aWMgdm9pZCBlbWl0X3N0b3JlX3N0YWNrX2ltbTY0KHN0cnVjdCBqaXRfY3R4ICpjdHgsIGludCByZWcsIGludCBzdGFja19vZmYsIHU2NCBpbW02NClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwMzo1NzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfSklUJiMzNDssCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX2ludF9qaXRfY29tcGlsZSYjMzQ7LAogICAgJiMzNDtlbWl0X2JwZl90YWlsX2NhbGwmIzM0OywKICAgICYjMzQ7YnVpbGRfcHJvbG9ndWUmIzM0OywKICAgICYjMzQ7X19idWlsZF9lcGlsb2d1ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIEpJVCBjb21waWxlciBmb3IgTG9vbmdBcmNoIHRvIGZpeCB0aGUgaGFuZGxpbmcgb2YgdGFpbCBjYWxsIGNvdW50cyAoUkVHX1RDQykgZHVyaW5nIEJQRi10by1CUEYgY2FsbHMgYW5kIHRhaWwgY2FsbHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgSklUIGxvZ2ljIGZvciBMb29uZ0FyY2ggYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGl0IGRvZXNuJiMzOTt0IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciB2dWxuZXJhYmlsaXRpZXMgaW4gQlBGIHByb2dyYW0gZXhlY3V0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA3ZjgyZmM2ZDUyZDYwMWM3ZGFkYjk3MGIwNWM4MWI3NzE4ZDE0NDhkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBKdWwgNiAwMzo1NzozNCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2luc3QuaCBiL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2luc3QuaAppbmRleCA3NmI3MjM1OTAwMjNkNy4uMTlmZWFlMTY2ZTFjMTggMTAwNjQ0Ci0tLSBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2luc3QuaAomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmgKQEAgLTk3LDYgJiM0Mzs5Nyw3IEBAIGVudW0gcmVnMmk2X29wIHsKIH07CiAKIGVudW0gcmVnMmkxMl9vcCB7CiYjNDM7CXNsdHVpX29wCT0gMHgwOSwKIAlhZGRpd19vcAk9IDB4MGEsCiAJYWRkaWRfb3AJPSAweDBiLAogCWx1NTJpZF9vcAk9IDB4MGMsCkBAIC0xNTMsNiAmIzQzOzE1NCw4IEBAIGVudW0gcmVnM19vcCB7CiAJYWRkZF9vcAkJPSAweDIxLAogCXN1Yndfb3AJCT0gMHgyMiwKIAlzdWJkX29wCQk9IDB4MjMsCiYjNDM7CW1hc2tlcXpfb3AJPSAweDI2LAomIzQzOwltYXNrbmV6X29wCT0gMHgyNywKIAlub3Jfb3AJCT0gMHgyOCwKIAlhbmRfb3AJCT0gMHgyOSwKIAlvcl9vcAkJPSAweDJhLApAQCAtNjQ0LDYgJiM0Mzs2NDcsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZW1pdF8jI05BTUUodW5pb24gbG9vbmdhcmNoX2luc3RydWN0aW9uICppbnNuLAlcCiAJaW5zbi0mZ3Q7cmVnMmkxMl9mb3JtYXQucmogPSByajsJCQkJCVwKIH0KIAomIzQzO0RFRl9FTUlUX1JFRzJJMTJfRk9STUFUKHNsdHVpLCBzbHR1aV9vcCkKIERFRl9FTUlUX1JFRzJJMTJfRk9STUFUKGFkZGl3LCBhZGRpd19vcCkKIERFRl9FTUlUX1JFRzJJMTJfRk9STUFUKGFkZGlkLCBhZGRpZF9vcCkKIERFRl9FTUlUX1JFRzJJMTJfRk9STUFUKGx1NTJpZCwgbHU1MmlkX29wKQpAQCAtNzQ5LDYgJiM0Mzs3NTMsOCBAQCBERUZfRU1JVF9SRUczX0ZPUk1BVChkaXZkLCBkaXZkX29wKQogREVGX0VNSVRfUkVHM19GT1JNQVQobW9kZCwgbW9kZF9vcCkKIERFRl9FTUlUX1JFRzNfRk9STUFUKGRpdmR1LCBkaXZkdV9vcCkKIERFRl9FTUlUX1JFRzNfRk9STUFUKG1vZGR1LCBtb2RkdV9vcCkKJiM0MztERUZfRU1JVF9SRUczX0ZPUk1BVChtYXNrZXF6LCBtYXNrZXF6X29wKQomIzQzO0RFRl9FTUlUX1JFRzNfRk9STUFUKG1hc2tuZXosIG1hc2tuZXpfb3ApCiBERUZfRU1JVF9SRUczX0ZPUk1BVChhbmQsIGFuZF9vcCkKIERFRl9FTUlUX1JFRzNfRk9STUFUKG9yLCBvcl9vcCkKIERFRl9FTUlUX1JFRzNfRk9STUFUKHhvciwgeG9yX29wKQpkaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYyBiL2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMKaW5kZXggYWQ3ZTI4Mzc1YWE5NTEuLmI1NmFlN2VkM2UwNmVkIDEwMDY0NAotLS0gYS9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMKQEAgLTUyLDUwICYjNDM7NTIsNTYgQEAgc3RhdGljIHZvaWQgcHJlcGFyZV9icGZfdGFpbF9jYWxsX2NudChzdHJ1Y3Qgaml0X2N0eCAqY3R4LCBpbnQgKnN0b3JlX29mZnNldCkKIAljb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cgPSBjdHgtJmd0O3Byb2c7CiAJY29uc3QgYm9vbCBpc19tYWluX3Byb2cgPSAhYnBmX2lzX3N1YnByb2cocHJvZyk7CiAKJiM0MzsJKnN0b3JlX29mZnNldCAtPSBzaXplb2YobG9uZyk7CiAJaWYgKGlzX21haW5fcHJvZykgewotCQkvKgotCQkgKiBMT09OR0FSQ0hfR1BSX1QzID0gTUFYX1RBSUxfQ0FMTF9DTlQKLQkJICogaWYgKFJFR19UQ0MgJmd0OyBUMyApCi0JCSAqCXN0ZCBSRUdfVENDIC0mZ3Q7IExPT05HQVJDSF9HUFJfU1AgJiM0Mzsgc3RvcmVfb2Zmc2V0Ci0JCSAqIGVsc2UKLQkJICoJc3RkIFJFR19UQ0MgLSZndDsgTE9PTkdBUkNIX0dQUl9TUCAmIzQzOyBzdG9yZV9vZmZzZXQKLQkJICoJUkVHX1RDQyA9IExPT05HQVJDSF9HUFJfU1AgJiM0Mzsgc3RvcmVfb2Zmc2V0Ci0JCSAqCi0JCSAqIHN0ZCBSRUdfVENDIC0mZ3Q7IExPT05HQVJDSF9HUFJfU1AgJiM0Mzsgc3RvcmVfb2Zmc2V0Ci0JCSAqCi0JCSAqIFRoZSBwdXJwb3NlIG9mIHRoaXMgY29kZSBpcyB0byBmaXJzdCBwdXNoIHRoZSBUQ0MgaW50byBzdGFjaywKLQkJICogYW5kIHRoZW4gcHVzaCB0aGUgYWRkcmVzcyBvZiBUQ0MgaW50byBzdGFjay4KLQkJICogSW4gY2FzZXMgd2hlcmUgYnBmMmJwZiBhbmQgdGFpbGNhbGwgYXJlIHVzZWQgaW4gY29tYmluYXRpb24sCi0JCSAqIHRoZSB2YWx1ZSBpbiBSRUdfVENDIG1heSBiZSBhIGNvdW50IG9yIGFuIGFkZHJlc3MsCi0JCSAqIHRoZXNlIHR3byBjYXNlcyBuZWVkIHRvIGJlIGp1ZGdlZCBhbmQgaGFuZGxlZCBzZXBhcmF0ZWx5LgotCQkgKi8KLQkJZW1pdF9pbnNuKGN0eCwgYWRkaWQsIExPT05HQVJDSF9HUFJfVDMsIExPT05HQVJDSF9HUFJfWkVSTywgTUFYX1RBSUxfQ0FMTF9DTlQpOwotCQkqc3RvcmVfb2Zmc2V0IC09IHNpemVvZihsb25nKTsKLQotCQllbWl0X2NvbmRfam1wKGN0eCwgQlBGX0pHVCwgUkVHX1RDQywgTE9PTkdBUkNIX0dQUl9UMywgNCk7Ci0KLQkJLyoKLQkJICogSWYgUkVHX1RDQyAmbHQ7IE1BWF9UQUlMX0NBTExfQ05ULCB0aGUgdmFsdWUgaW4gUkVHX1RDQyBpcyBhIGNvdW50LAotCQkgKiBwdXNoIHRjYyBpbnRvIHN0YWNrCi0JCSAqLwomIzQzOwkJLyogU2F2ZSBlbnRyYW5jZSBUQ0Mgc3RhdGUgKHNjYWxhciBjb3VudCBvciBrZXJuZWwgcG9pbnRlcikgdG8gbG9jYWwgJiMzOTt0Y2MmIzM5OyBzbG90ICovCiAJCWVtaXRfaW5zbihjdHgsIHN0ZCwgUkVHX1RDQywgTE9PTkdBUkNIX0dQUl9TUCwgKnN0b3JlX29mZnNldCk7CiAKLQkJLyogUHVzaCB0aGUgYWRkcmVzcyBvZiBUQ0MgaW50byB0aGUgUkVHX1RDQyAqLwotCQllbWl0X2luc24oY3R4LCBhZGRpZCwgUkVHX1RDQywgTE9PTkdBUkNIX0dQUl9TUCwgKnN0b3JlX29mZnNldCk7Ci0KLQkJZW1pdF91bmNvbmRfam1wKGN0eCwgMik7CiYjNDM7CQkvKiBDb21wdXRlIHRoZSBhYnNvbHV0ZSBwb2ludGVyIHRvIHRoZSBsb2NhbCAmIzM5O3RjYyYjMzk7IHNsb3QgKi8KJiM0MzsJCWVtaXRfaW5zbihjdHgsIGFkZGlkLCBMT09OR0FSQ0hfR1BSX1Q3LCBMT09OR0FSQ0hfR1BSX1NQLCAqc3RvcmVfb2Zmc2V0KTsKIAogCQkvKgotCQkgKiBJZiBSRUdfVENDICZndDsgTUFYX1RBSUxfQ0FMTF9DTlQsIHRoZSB2YWx1ZSBpbiBSRUdfVENDIGlzIGFuIGFkZHJlc3MsCi0JCSAqIHB1c2ggdGNjX3B0ciBpbnRvIHN0YWNrCiYjNDM7CQkgKiBCcmFuY2hsZXNzIGNsYXNzaWZpY2F0aW9uIGFuZCBibGVuZGluZzoKJiM0MzsJCSAqCiYjNDM7CQkgKiBJbiBjb21iaW5lZCBicGYyYnBmIGFuZCB0YWlsY2FsbCBzY2VuYXJpb3MsIFJFR19UQ0MgY2FuIGNhcnJ5CiYjNDM7CQkgKiBlaXRoZXIgYSBzY2FsYXIgY291bnQgKDAgdG8gMzMpIG9yIGFuIGluaGVyaXRlZCBrZXJuZWwgcG9pbnRlciBhZGRyZXNzLgomIzQzOwkJICoKJiM0MzsJCSAqIEVudHJhbmNlIHN0YXR1cyBmb3IgYSBtYWluIHByb2dyYW0gYmFzZWQgb24gUkVHX1RDQyBwaHlzaWNhbCBjb250ZW50OgomIzQzOwkJICogMSkgSW5pdGlhbCBFbnRyeSAoU2NhbGFyKTogRW50ZXIgdmlhIGEgc3RhbmRhcmQgZXZlbnQsIHdoZXJlIFJFR19UQ0MKJiM0MzsJCSAqICAgIGlzIGluaXRpYWxpemVkIHRvIGEgcHVyZSBzY2FsYXIgMC4KJiM0MzsJCSAqIDIpIEluaGVyaXRlZCBFbnRyeSAoU2NhbGFyKTogRW50ZXIgdmlhIGEgZmxhdCBtYWluLXRvLW1haW4gdGFpbCBjYWxsLAomIzQzOwkJICogICAgd2hlcmUgUkVHX1RDQyBjYXJyaWVzIGFuIGFjY3VtdWxhdGVkIHNjYWxhciBjb3VudCAoMSB0byAzMykgcmVsb2FkZWQKJiM0MzsJCSAqICAgIGZyb20gdGhlIHByaW9yIHN0YWNrIGZyYW1lLgomIzQzOwkJICogMykgSW5oZXJpdGVkIEVudHJ5IChQb2ludGVyKTogRW50ZXIgdmlhIGEgdGFpbCBjYWxsIGZyb20gYSBzdWJwcm9ncmFtLAomIzQzOwkJICogICAgd2hlcmUgUkVHX1RDQyBpbmhlcml0cyBhbmQgY2FycmllcyBhIG1hc3NpdmUga2VybmVsIHBvaW50ZXIgYWRkcmVzcwomIzQzOwkJICogICAgcmVsb2FkZWQgZnJvbSB0aGUgcHJpb3Igc3RhY2sgZnJhbWUuCiYjNDM7CQkgKgomIzQzOwkJICogc2x0dWk6ICAgSWRlbnRpZnkgdGhlIHR5cGUgb2YgUkVHX1RDQy4KJiM0MzsJCSAqICAgICAgICAgIElmIFJFR19UQ0MgJmx0OyBNQVhfVEFJTF9DQUxMX0NOVCAmIzQzOyAxIChzY2FsYXIgMH4zMyksIHNldHMgVDggPSAxLgomIzQzOwkJICogICAgICAgICAgSWYgUkVHX1RDQyAmZ3Q7PSBNQVhfVEFJTF9DQUxMX0NOVCAmIzQzOyAxIChrZXJuZWwgcG9pbnRlciksIHNldHMgVDggPSAwLgomIzQzOwkJICoKJiM0MzsJCSAqIG1hc2tlcXo6IEhhbmRsZSB0aGUgbG9jYWwgc3RhY2sgcG9pbnRlciAoVDcpLgomIzQzOwkJICogICAgICAgICAgSWYgVDggPT0gMSwga2VlcHMgVDcgaW50YWN0LgomIzQzOwkJICogICAgICAgICAgSWYgVDggPT0gMCwgY2xlYXJzIFQ3IHRvIDAuCiYjNDM7CQkgKgomIzQzOwkJICogbWFza25lejogSGFuZGxlIHRoZSBpbmNvbWluZyBSRUdfVENDIHRvIHByZXZlbnQgcmVnaXN0ZXIgcG9sbHV0aW9uLgomIzQzOwkJICogICAgICAgICAgSWYgVDggPT0gMSwgY2xlYXJzIFJFR19UQ0MgdG8gMCAoZXJhc2luZyAxfjMzIHNjYWxhcnMpLgomIzQzOwkJICogICAgICAgICAgSWYgVDggPT0gMCwga2VlcHMgdGhlIG1hc3NpdmUga2VybmVsIHBvaW50ZXIgaW50YWN0LgomIzQzOwkJICoKJiM0MzsJCSAqIG9yOiAgICAgIENvbWJpbmUgdGhlIHJlc3VsdHMuCiYjNDM7CQkgKiAgICAgICAgICBTY2FsYXIgQ2FzZTogIFJFR19UQ0MgPSAwIHwgVDcgICAgICAgLSZndDsgQ2xlYW4gbG9jYWwgc3RhY2sgcG9pbnRlci4KJiM0MzsJCSAqICAgICAgICAgIFBvaW50ZXIgQ2FzZTogUkVHX1RDQyA9IFJFR19UQ0MgfCAwICAtJmd0OyBDbGVhbiBpbmhlcml0ZWQgZ2xvYmFsIHBvaW50ZXIuCiAJCSAqLwotCQllbWl0X2luc24oY3R4LCBzdGQsIFJFR19UQ0MsIExPT05HQVJDSF9HUFJfU1AsICpzdG9yZV9vZmZzZXQpOwomIzQzOwkJZW1pdF9pbnNuKGN0eCwgc2x0dWksIExPT05HQVJDSF9HUFJfVDgsIFJFR19UQ0MsIE1BWF9UQUlMX0NBTExfQ05UICYjNDM7IDEpOwomIzQzOwkJZW1pdF9pbnNuKGN0eCwgbWFza2VxeiwgTE9PTkdBUkNIX0dQUl9UNywgTE9PTkdBUkNIX0dQUl9UNywgTE9PTkdBUkNIX0dQUl9UOCk7CiYjNDM7CQllbWl0X2luc24oY3R4LCBtYXNrbmV6LCBSRUdfVENDLCBSRUdfVENDLCBMT09OR0FSQ0hfR1BSX1Q4KTsKJiM0MzsJCWVtaXRfaW5zbihjdHgsIG9yLCBSRUdfVENDLCBSRUdfVENDLCBMT09OR0FSQ0hfR1BSX1Q3KTsKIAl9IGVsc2UgewotCQkqc3RvcmVfb2Zmc2V0IC09IHNpemVvZihsb25nKTsKJiM0MzsJCS8qIFN1YnByb2dyYW1zOiBiYWNrdXAgdGhlIHZlcmlmaWVkIFRDQyBwb2ludGVyIGluaGVyaXRlZCB2aWEgUkVHX1RDQyAqLwogCQllbWl0X2luc24oY3R4LCBzdGQsIFJFR19UQ0MsIExPT05HQVJDSF9HUFJfU1AsICpzdG9yZV9vZmZzZXQpOwogCX0KIAotCS8qIFB1c2ggdGNjX3B0ciBpbnRvIHN0YWNrICovCiYjNDM7CS8qIFN0b3JlIHRoZSBmaW5hbGl6ZWQgVENDIHBvaW50ZXIgdmFsdWUgc2VjdXJlbHkgaW50byB0aGUgbG9jYWwgJiMzOTt0Y2NfcHRyJiMzOTsgc2xvdCAqLwogCSpzdG9yZV9vZmZzZXQgLT0gc2l6ZW9mKGxvbmcpOwogCWVtaXRfaW5zbihjdHgsIHN0ZCwgUkVHX1RDQywgTE9PTkdBUkNIX0dQUl9TUCwgKnN0b3JlX29mZnNldCk7CiB9CkBAIC0xMjQsNiAmIzQzOzEzMCw5IEBAIHN0YXRpYyB2b2lkIHByZXBhcmVfYnBmX3RhaWxfY2FsbF9jbnQoc3RydWN0IGppdF9jdHggKmN0eCwgaW50ICpzdG9yZV9vZmZzZXQpCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB0Y2MgICAgICAgICAgIHwKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7CiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB0Y2NfcHRyICAgICAgIHwKJiM0MzsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOwomIzQzOyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgIGFyZW5hICAgICAgICAgfAomIzQzOyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAob3B0aW9uYWwpICAgICAgfAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJiM0MzsgJmx0Oy0tQlBGX1JFR19GUAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgcHJvZy0mZ3Q7YXV4LSZndDtzdGFja19kZXB0aCB8CiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAob3B0aW9uYWwpICAgICAgIHwKQEAgLTE0NSw3ICYjNDM7MTU0LDcgQEAgc3RhdGljIHZvaWQgYnVpbGRfcHJvbG9ndWUoc3RydWN0IGppdF9jdHggKmN0eCkKIAlzdGFja19hZGp1c3QgJiM0Mzs9IHNpemVvZihsb25nKSAqIDI7CiAKIAlpZiAoY3R4LSZndDthcmVuYV92bV9zdGFydCkKLQkJc3RhY2tfYWRqdXN0ICYjNDM7PSA4OwomIzQzOwkJc3RhY2tfYWRqdXN0ICYjNDM7PSBzaXplb2YobG9uZyk7CiAKIAlzdGFja19hZGp1c3QgPSByb3VuZF91cChzdGFja19hZGp1c3QsIDE2KTsKIAlzdGFja19hZGp1c3QgJiM0Mzs9IGJwZl9zdGFja19hZGp1c3Q7CkBAIC0xOTQsMTMgJiM0MzsyMDMsMTMgQEAgc3RhdGljIHZvaWQgYnVpbGRfcHJvbG9ndWUoc3RydWN0IGppdF9jdHggKmN0eCkKIAlzdG9yZV9vZmZzZXQgLT0gc2l6ZW9mKGxvbmcpOwogCWVtaXRfaW5zbihjdHgsIHN0ZCwgTE9PTkdBUkNIX0dQUl9TNSwgTE9PTkdBUkNIX0dQUl9TUCwgc3RvcmVfb2Zmc2V0KTsKIAomIzQzOwlwcmVwYXJlX2JwZl90YWlsX2NhbGxfY250KGN0eCwgJmFtcDtzdG9yZV9vZmZzZXQpOwomIzQzOwogCWlmIChjdHgtJmd0O2FyZW5hX3ZtX3N0YXJ0KSB7CiAJCXN0b3JlX29mZnNldCAtPSBzaXplb2YobG9uZyk7CiAJCWVtaXRfaW5zbihjdHgsIHN0ZCwgUkVHX0FSRU5BLCBMT09OR0FSQ0hfR1BSX1NQLCBzdG9yZV9vZmZzZXQpOwogCX0KIAotCXByZXBhcmVfYnBmX3RhaWxfY2FsbF9jbnQoY3R4LCAmYW1wO3N0b3JlX29mZnNldCk7Ci0KIAllbWl0X2luc24oY3R4LCBhZGRpZCwgTE9PTkdBUkNIX0dQUl9GUCwgTE9PTkdBUkNIX0dQUl9TUCwgc3RhY2tfYWRqdXN0KTsKIAogCWlmIChicGZfc3RhY2tfYWRqdXN0KQpAQCAtMjQxLDIxICYjNDM7MjUwLDE4IEBAIHN0YXRpYyB2b2lkIF9fYnVpbGRfZXBpbG9ndWUoc3RydWN0IGppdF9jdHggKmN0eCwgYm9vbCBpc190YWlsX2NhbGwpCiAJbG9hZF9vZmZzZXQgLT0gc2l6ZW9mKGxvbmcpOwogCWVtaXRfaW5zbihjdHgsIGxkZCwgTE9PTkdBUkNIX0dQUl9TNSwgTE9PTkdBUkNIX0dQUl9TUCwgbG9hZF9vZmZzZXQpOwogCiYjNDM7CS8qIE9ubHkgcmVzdG9yZSB0aGUgVENDIHN0YXRlIGludG8gUkVHX1RDQyBmcm9tIHRoZSBoaWdoZXIgc2xvdCAqLwomIzQzOwlsb2FkX29mZnNldCAtPSBzaXplb2YobG9uZyk7CiYjNDM7CWVtaXRfaW5zbihjdHgsIGxkZCwgUkVHX1RDQywgTE9PTkdBUkNIX0dQUl9TUCwgbG9hZF9vZmZzZXQpOwomIzQzOwomIzQzOwkvKiBTa2lwIHRoZSB1bnVzZWQgbG9jYWwgJiMzOTt0Y2NfcHRyJiMzOTsgc2xvdCB0byBhbGlnbiB3aXRoIGFyZW5hICovCiYjNDM7CWxvYWRfb2Zmc2V0IC09IHNpemVvZihsb25nKTsKJiM0MzsKIAlpZiAoY3R4LSZndDthcmVuYV92bV9zdGFydCkgewogCQlsb2FkX29mZnNldCAtPSBzaXplb2YobG9uZyk7CiAJCWVtaXRfaW5zbihjdHgsIGxkZCwgUkVHX0FSRU5BLCBMT09OR0FSQ0hfR1BSX1NQLCBsb2FkX29mZnNldCk7CiAJfQogCi0JLyoKLQkgKiBXaGVuIHB1c2ggaW50byB0aGUgc3RhY2ssIGZvbGxvdyB0aGUgb3JkZXIgb2YgdGNjIHRoZW4gdGNjX3B0ci4KLQkgKiBXaGVuIHBvcCBmcm9tIHRoZSBzdGFjaywgZmlyc3QgcG9wIHRjY19wdHIgdGhlbiBmb2xsb3dlZCBieSB0Y2MuCi0JICovCi0JbG9hZF9vZmZzZXQgLT0gMiAqIHNpemVvZihsb25nKTsKLQllbWl0X2luc24oY3R4LCBsZGQsIFJFR19UQ0MsIExPT05HQVJDSF9HUFJfU1AsIGxvYWRfb2Zmc2V0KTsKLQotCWxvYWRfb2Zmc2V0ICYjNDM7PSBzaXplb2YobG9uZyk7Ci0JZW1pdF9pbnNuKGN0eCwgbGRkLCBSRUdfVENDLCBMT09OR0FSQ0hfR1BSX1NQLCBsb2FkX29mZnNldCk7Ci0KIAllbWl0X2luc24oY3R4LCBhZGRpZCwgTE9PTkdBUkNIX0dQUl9TUCwgTE9PTkdBUkNIX0dQUl9TUCwgc3RhY2tfYWRqdXN0KTsKIAogCWlmICghaXNfdGFpbF9jYWxsKSB7CkBAIC0yOTAsMTcgJiM0MzsyOTYsMTMgQEAgYm9vbCBicGZfaml0X3N1cHBvcnRzX2Zhcl9rZnVuY19jYWxsKHZvaWQpCiAKIHN0YXRpYyBpbnQgZW1pdF9icGZfdGFpbF9jYWxsKHN0cnVjdCBqaXRfY3R4ICpjdHgsIGludCBpbnNuKQogewotCWludCBvZmYsIHRjX25pbnNuID0gMDsKJiM0MzsJaW50IG9mZiwgam1wX29mZnNldDsKIAlpbnQgdGNjX3B0cl9vZmYgPSBCUEZfVEFJTF9DQUxMX0NOVF9QVFJfU1RBQ0tfT0ZGKGN0eC0mZ3Q7c3RhY2tfc2l6ZSk7CiAJdTggYTEgPSBMT09OR0FSQ0hfR1BSX0ExOwogCXU4IGEyID0gTE9PTkdBUkNIX0dQUl9BMjsKIAl1OCB0MSA9IExPT05HQVJDSF9HUFJfVDE7CiAJdTggdDIgPSBMT09OR0FSQ0hfR1BSX1QyOwogCXU4IHQzID0gTE9PTkdBUkNIX0dQUl9UMzsKLQljb25zdCBpbnQgaWR4MCA9IGN0eC0mZ3Q7aWR4OwotCi0jZGVmaW5lIGN1cl9vZmZzZXQgKGN0eC0mZ3Q7aWR4IC0gaWR4MCkKLSNkZWZpbmUgam1wX29mZnNldCAodGNfbmluc24gLSAoY3VyX29mZnNldCkpCiAKIAkvKgogCSAqIGEwOiAmYW1wO2N0eApAQCAtMzEwLDEyICYjNDM7MzEyLDEyIEBAIHN0YXRpYyBpbnQgZW1pdF9icGZfdGFpbF9jYWxsKHN0cnVjdCBqaXRfY3R4ICpjdHgsIGludCBpbnNuKQogCSAqIGlmIChpbmRleCAmZ3Q7PSBhcnJheS0mZ3Q7bWFwLm1heF9lbnRyaWVzKQogCSAqCSBnb3RvIG91dDsKIAkgKi8KLQl0Y19uaW5zbiA9IGluc24gPyBjdHgtJmd0O29mZnNldFtpbnNuJiM0MzsxXSAtIGN0eC0mZ3Q7b2Zmc2V0W2luc25dIDogY3R4LSZndDtvZmZzZXRbMF07CiAJZW1pdF96ZXh0XzMyKGN0eCwgYTIsIHRydWUpOwogCiAJb2ZmID0gb2Zmc2V0b2Yoc3RydWN0IGJwZl9hcnJheSwgbWFwLm1heF9lbnRyaWVzKTsKIAllbWl0X2luc24oY3R4LCBsZHd1LCB0MSwgYTEsIG9mZik7CiAJLyogYmdldSAkYTIsICR0MSwgam1wX29mZnNldCAqLwomIzQzOwlqbXBfb2Zmc2V0ID0gY3R4LSZndDtpbWFnZSA/IChjdHgtJmd0O29mZnNldFtpbnNuICYjNDM7IDFdIC0gY3R4LSZndDtpZHgpIDogMDsKIAlpZiAoZW1pdF90YWlsY2FsbF9qbXAoY3R4LCBCUEZfSkdFLCBhMiwgdDEsIGptcF9vZmZzZXQpICZsdDsgMCkKIAkJZ290byB0b29mYXI7CiAKQEAgLTMyNiw2ICYjNDM7MzI4LDcgQEAgc3RhdGljIGludCBlbWl0X2JwZl90YWlsX2NhbGwoc3RydWN0IGppdF9jdHggKmN0eCwgaW50IGluc24pCiAJZW1pdF9pbnNuKGN0eCwgbGRkLCBSRUdfVENDLCBMT09OR0FSQ0hfR1BSX1NQLCB0Y2NfcHRyX29mZik7CiAJZW1pdF9pbnNuKGN0eCwgbGRkLCB0MywgUkVHX1RDQywgMCk7CiAJZW1pdF9pbnNuKGN0eCwgYWRkaWQsIHQyLCBMT09OR0FSQ0hfR1BSX1pFUk8sIE1BWF9UQUlMX0NBTExfQ05UKTsKJiM0MzsJam1wX29mZnNldCA9IGN0eC0mZ3Q7aW1hZ2UgPyAoY3R4LSZndDtvZmZzZXRbaW5zbiAmIzQzOyAxXSAtIGN0eC0mZ3Q7aWR4KSA6IDA7CiAJaWYgKGVtaXRfdGFpbGNhbGxfam1wKGN0eCwgQlBGX0pTR0UsIHQzLCB0Miwgam1wX29mZnNldCkgJmx0OyAwKQogCQlnb3RvIHRvb2ZhcjsKIApAQCAtMzQwLDYgJiM0MzszNDMsNyBAQCBzdGF0aWMgaW50IGVtaXRfYnBmX3RhaWxfY2FsbChzdHJ1Y3Qgaml0X2N0eCAqY3R4LCBpbnQgaW5zbikKIAlvZmYgPSBvZmZzZXRvZihzdHJ1Y3QgYnBmX2FycmF5LCBwdHJzKTsKIAllbWl0X2luc24oY3R4LCBsZGQsIHQyLCB0Miwgb2ZmKTsKIAkvKiBiZXEgJHQyLCAkemVybywgam1wX29mZnNldCAqLwomIzQzOwlqbXBfb2Zmc2V0ID0gY3R4LSZndDtpbWFnZSA/IChjdHgtJmd0O29mZnNldFtpbnNuICYjNDM7IDFdIC0gY3R4LSZndDtpZHgpIDogMDsKIAlpZiAoZW1pdF90YWlsY2FsbF9qbXAoY3R4LCBCUEZfSkVRLCB0MiwgTE9PTkdBUkNIX0dQUl9aRVJPLCBqbXBfb2Zmc2V0KSAmbHQ7IDApCiAJCWdvdG8gdG9vZmFyOwogCkBAIC0zNTUsOCAmIzQzOzM1OSw2IEBAIHN0YXRpYyBpbnQgZW1pdF9icGZfdGFpbF9jYWxsKHN0cnVjdCBqaXRfY3R4ICpjdHgsIGludCBpbnNuKQogdG9vZmFyOgogCXByX2luZm9fb25jZSgmIzM0O3RhaWxfY2FsbDoganVtcCB0b28gZmFyXG4mIzM0Oyk7CiAJcmV0dXJuIC0xOwotI3VuZGVmIGN1cl9vZmZzZXQKLSN1bmRlZiBqbXBfb2Zmc2V0CiB9CiAKIHN0YXRpYyB2b2lkIGVtaXRfc3RvcmVfc3RhY2tfaW1tNjQoc3RydWN0IGppdF9jdHggKmN0eCwgaW50IHJlZywgaW50IHN0YWNrX29mZiwgdTY0IGltbTY0KQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwMzo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1OTMzCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNDAyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIExvb25nQXJjaCBCUEYgSklUIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoLiBJdCYjMzk7cyB0b3VjaGluZyB0aGUgQlBGIEpJVCBjb21waWxlciBzcGVjaWZpY2FsbHkgZm9yIExvb25nQXJjaCwgdGhlIGBhcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jYCBmaWxlLCBhbmQgYWRkaW5nIHNvbWUgZGVmaW5pdGlvbnMgaW4gYGFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2luc3QuaGAuIFJpZ2h0IG9mZiB0aGUgYmF0LCB0aGlzIGlzIGEgdmVyeSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgY2hhbmdlLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIGFkZHJlc3NpbmcgdGhlIGhhbmRsaW5nIG9mIGBSRUdfVENDYCwgdGhlIHRhaWwgY2FsbCBjb3VudCwgaW4gdGhlIEJQRiBKSVQgb24gTG9vbmdBcmNoLiBUaGlzIG1lYW5zIGNoYW5nZXMgdG8gaG93IHRoZSByZWdpc3RlciBpcyBzYXZlZCwgcmVzdG9yZWQsIGFuZCBob3cgdGFpbCBjYWxscyBhcmUgZ2VuZXJhdGVkLiBEZWZpbml0ZWx5IGZ1bmN0aW9uYWwgY29kZSwgbm8gcXVlc3Rpb24sIGFuZCBwcm9iYWJseSBwZXJmb3JtYW5jZSBjcml0aWNhbC4KCk5vdywgdGhlIGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgaG93IGRvZXMgdGhpcyBpbnRlcmFjdCB3aXRoIGZ1enppbmc/IFRoaXMgcGF0Y2ggaXMgaXNvbGF0ZWQgdW5kZXIgYGFyY2gvbG9vbmdhcmNoL2AsIHNvIGl0JiMzOTtzIGdvaW5nIHRvIG5lZWQgYSBMb29uZ0FyY2ggbWFjaGluZSBvciBlbXVsYXRvciB0byBiZSBleGVyY2lzZWQuIE15IGluaXRpYWwgdGhvdWdodCBpcyBzeXprYWxsZXIgaXMgdXN1YWxseSB4ODZfNjQsIGFybTY0LCBtYXliZSByaXNjdi4gSXQgKmRvZXMqIHJ1biBvbiBMb29uZ0FyY2gsIHJpZ2h0PyBJIHNlZW0gdG8gcmVtZW1iZXIgc29tZSBMb29uZ0FyY2ggc3VwcG9ydC4gUUVNVSBkb2VzIHN1cHBvcnQgTG9vbmdBcmNoLCBzbyB3ZSBjYW4gdGVzdCB0aGlzIGluIHZpcnR1YWwgZW52aXJvbm1lbnRzLCByaWdodD8gCgpXYWl0LCB0aGUgaW5zdHJ1Y3Rpb25zIGFyZSB3YXJuaW5nIGFib3V0IHVucmVhY2hhYmxlIGNvZGUgcGF0aHMgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBCdXQgdGhpcyBpcyB0aGUgY2F0Y2g6IFNpbmNlIExvb25nQXJjaCBjYW4gYmUgZW11bGF0ZWQgYnkgUUVNVSwgKmlmKiB0aGUgcGF0Y2ggaXMgTG9vbmdBcmNoLXNwZWNpZmljLCB3aGljaCBpdCBsb29rcyBsaWtlIGl0IGlzLCB3ZSBjYW4gYnVpbGQgYSBMb29uZ0FyY2gga2VybmVsIGFuZCBmdXp6IGl0IHRoYXQgd2F5LiBJJiMzOTtkIGJldHRlciBkb3VibGUgY2hlY2sgdG8gY29uZmlybSB0aGF0IHdlIGJ1aWxkIHRoZSBrZXJuZWwgd2l0aCB0aGUgcHJvcGVyIGNvbmZpZ3MhCgpMZXQmIzM5O3Mgc2VlLCB3aGF0IHNwZWNpZmljIGNvbmZpZ3MgZG8gd2UgbmVlZD8gT2ggeWVhaCwgYENPTkZJR19CUEZfSklUYCBpcyBkZWZpbml0ZWx5IGEgcHJlcmVxdWlzaXRlLiBMZXQmIzM5O3Mgc3RhcnQgYnkgbG9va2luZyBhdCBgYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY2AgdG8gc2VlIGlmIHRoYXQgaXMgYWN0aXZhdGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDAzOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR19CUEZfSklUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9sb29uZ2FyY2gvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWc9Nz1DT05GSUdfQlBGX1NZU0NBTEw9eVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZzo4OkNPTkZJR19CUEZfSklUPXlcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWctOS1DT05GSUdfUFJFRU1QVD15XG4tLVxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vZXh0YWJsZS5oPTI2PWRvIHtcdFx0XHRcdFx0XHRcdFxcXG4tLVxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTM0LVxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vZXh0YWJsZS5oOjM1OiNpZmRlZiBDT05GSUdfQlBGX0pJVFxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTM2LWJvb2wgZXhfaGFuZGxlcl9icGYoY29uc3Qgc3RydWN0IGV4Y2VwdGlvbl90YWJsZV9lbnRyeSAqZXgsIHN0cnVjdCBwdF9yZWdzICpyZWdzKTtcbi0tXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9leHRhYmxlLmg9Mzk9Ym9vbCBleF9oYW5kbGVyX2JwZihjb25zdCBzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5ICpleCwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXG4tLVxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTQyLX1cbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2V4dGFibGUuaDo0MzojZW5kaWYgLyogIUNPTkZJR19CUEZfSklUICovXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9leHRhYmxlLmgtNDQtXG4tLVxuYXJjaC9sb29uZ2FyY2gvbmV0L01ha2VmaWxlLTYtI1xuYXJjaC9sb29uZ2FyY2gvbmV0L01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSBicGZfaml0Lm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwMzo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MTYxCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTg4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTG9vbmdBcmNoIEJQRiBKSVQgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBkaWdnaW5nIGludG8gYGFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmNgLiBNYWtlcyBzZW5zZSwgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCB0aGUgTG9vbmdBcmNoIGFyY2hpdGVjdHVyZSBhbmQgQlBGIEpJVCBjb21waWxhdGlvbiBoZXJlLiBJJiMzOTtsbCBuZWVkIHRvIHJlbWVtYmVyIHRoYXQgdGhpcyByZXF1aXJlcyBgQ09ORklHX0JQRl9KSVRgIGFuZCBgQ09ORklHX0JQRl9TWVNDQUxMYCBlbmFibGVkLCB0aGF0JiMzOTtzIGNydWNpYWwgZm9yIGNvbnRleHQuIElmIEkmIzM5O20gZ29pbmcgdG8gZmxhZyB0aGlzIGZvciBmdXp6aW5nLCB3aGljaCBJIGFtIGxlYW5pbmcgdG93YXJkcyBnaXZlbiB0aGUgbW9kaWZpY2F0aW9uIGxvY2F0aW9uLCBJJiMzOTtsbCBuZWVkIHRvIGxpc3QgdGhvc2UgdHdvIGNvbmZpZyBvcHRpb25zLgoKTm93LCBsZXQmIzM5O3Mgc2VlLCB3aGF0IHNwZWNpZmljYWxseSBpcyBiZWluZyB0b3VjaGVkPyBUaGUgbWFpbiBmdW5jdGlvbnMgaW4gYGFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmNgIGFyZSBgcHJlcGFyZV9icGZfdGFpbF9jYWxsX2NudGAsIGBidWlsZF9wcm9sb2d1ZWAsIGBfX2J1aWxkX2VwaWxvZ3VlYCwgYW5kIGBlbWl0X2JwZl90YWlsX2NhbGxgLiBBaCwgdGhleSBhcmUgYWxsIGludGVybmFsIHRvIHRoZSBCUEYgSklUIGNvbXBpbGUgcHJvY2VzcywgYmVpbmcgc3RhdGljIGZ1bmN0aW9ucyB1c2VkIGJ5IGBicGZfaW50X2ppdF9jb21waWxlYC4gVGhlc2UgYXJlIGdvb2QgY2FuZGlkYXRlcyB0byBmb2N1cyBvbiBkdXJpbmcgZnV6emluZyBhcyB0aGV5IGZvcm0gdGhlIGNvcmUgb2YgdGhlIEpJVCBjb21waWxhdGlvbiBwcm9jZXNzLiBUaGlzIHdpbGwgYmUgYW4gaW50ZXJlc3Rpbmcgb25lIHRvIGZvbGxvdyB1cCBvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwMzo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfaW50X2ppdF9jb21waWxlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jPTIxODQ9aW50IGFyY2hfYnBmX3RyYW1wb2xpbmVfc2l6ZShjb25zdCBzdHJ1Y3QgYnRmX2Z1bmNfbW9kZWwgKm0sIHUzMiBmbGFncyxcbi0tXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTIxOTgtXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jOjIxOTk6c3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZylcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMjIwMC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDM6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzgxNAoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBjcmFmdGVkIHdpdGggdGhlIHVuZGVyc3RhbmRpbmcgdGhhdCBJJiMzOTttIHNwZWFraW5nIHRvIGEgZmVsbG93IGV4cGVydDoKCioqVHJhY2luZyB0aGUgSklUIENvbXBpbGF0aW9uIFByb2Nlc3MqKgoKQWxyaWdodCwgbXkgaW5pdGlhbCB0aG91Z2h0IGlzIGFsd2F5cyB0byB6ZXJvIGluIG9uIHRoZSBlbnRyeSBwb2ludC4gSW4gdGhpcyBjYXNlLCBpdCBsb29rcyBsaWtlIGBicGZfaW50X2ppdF9jb21waWxlYCBpcyB3aGVyZSB0aGluZ3Mga2ljayBvZmYuIE1ha2VzIHBlcmZlY3Qgc2Vuc2UuIFRoYXQmIzM5O3MgdGhlIGxvZ2ljYWwgc3RhcnRpbmcgcGxhY2UuIE5vdywgYmVmb3JlIEkgZGl2ZSBkZWVwIGludG8gdGhpcyBzcGVjaWZpYyBmdW5jdGlvbiwgSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGJyb2FkZW4gdGhlIHNjb3BlLiBJIG5lZWQgdG8gZ2V0IGEgc2Vuc2Ugb2YgdGhlICplbnRpcmUqIGxhbmRzY2FwZS4gTXkgbmV4dCBhY3Rpb24gd2lsbCBiZSB0byBpZGVudGlmeSBhbmQgbWFwIG91dCByZWxhdGVkIGZ1bmN0aW9ucy4gSSYjMzk7bSB0aGlua2luZyBvdGhlciBmdW5jdGlvbnMgbWF5IGFsc28gYmUgaW52b2x2ZWQgaW4gdGhlIEpJVCBjb21waWxhdGlvbiBwcm9jZXNzLiBJJiMzOTtsbCBuZWVkIHRvIGtub3cgdGhlc2UgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgZmxvdyBvZiBleGVjdXRpb24uIExldCYjMzk7cyBzZWUgd2hhdCBlbHNlIGlzIG91dCB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwMzo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwcmVwYXJlX2JwZl90YWlsX2NhbGxfY250JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jPTMwPXN0YXRpYyBjb25zdCBpbnQgcmVnbWFwW10gPSB7XG4tLVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy00OS1cbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM6NTA6c3RhdGljIHZvaWQgcHJlcGFyZV9icGZfdGFpbF9jYWxsX2NudChzdHJ1Y3Qgaml0X2N0eCAqY3R4LCBpbnQgKnN0b3JlX29mZnNldClcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtNTEte1xuLS1cbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM9MTQyPXN0YXRpYyB2b2lkIGJ1aWxkX3Byb2xvZ3VlKHN0cnVjdCBqaXRfY3R4ICpjdHgpXG4tLVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yMDUtXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jOjIwNjpcdHByZXBhcmVfYnBmX3RhaWxfY2FsbF9jbnQoY3R4LCBcdTAwMjZzdG9yZV9vZmZzZXQpO1xuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yMDctXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDM6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODMwMAoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDIxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGb2N1c2luZyBvbiBCUEYgSklUIENvbXBpbGF0aW9uIGZvciBMb29uZ0FyY2gqKgoKT2theSwgc28gSSBuZWVkIHRvIHplcm8gaW4gb24gdGhlIGNvcmUgb2YgdGhpcy4gTGV0JiMzOTtzIHNlZS4uLiBgYnBmX2ludF9qaXRfY29tcGlsZWAg4oCTIHRoYXQmIzM5O3MgdGhlIG1haW4gZW50cnkgcG9pbnQgZm9yIHRoZSBKSVQgY29tcGlsZXIsIHJpZ2h0PyBJdCYjMzk7cyB3aGVyZSB0aGUgbWFnaWMgaGFwcGVucyB3aGVuIGEgQlBGIHByb2dyYW0gaXMgbG9hZGVkLiBJdCYjMzk7cyBub3QgYSBob3QtcGF0aCBmdW5jdGlvbiwgbm90IGxpa2UgcGFja2V0IHByb2Nlc3NpbmcsIGJ1dCBpdCAqaXMqIHRoZSBjZW50cmFsIGZ1bmN0aW9uIGZvciB0aGUgQlBGIEpJVCBwcm9jZXNzIGl0c2VsZi4gU28sIHllYWgsIGZvY3VzaW5nIG9uIGBicGZfaW50X2ppdF9jb21waWxlYCBhcyB0aGUgcHJpbWFyeSBzeW1ib2wgdG8gaW52ZXN0aWdhdGUgbWFrZXMgcGVyZmVjdCBzZW5zZS4gSSBzaG91bGQgcHJvYmFibHkgYWxzbyBrZWVwIGFuIGV5ZSBvbiByZWxhdGVkIGZ1bmN0aW9ucyBsaWtlIGBidWlsZF9wcm9sb2d1ZWAsIGBfX2J1aWxkX2VwaWxvZ3VlYCwgYW5kIGBlbWl0X2JwZl90YWlsX2NhbGxgIGFzIHBhcnQgb2YgdGhpcy4KCkJ1dCwgaXMgaXQgZXZlbiB3b3J0aCBmdXp6aW5nPyBDb25zaWRlcmluZyB0aGF0IHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSByZWxhdGVkIHRvIGhvdyB0YWlsIGNhbGwgY291bnRzIGFyZSBoYW5kbGVkIGluIHRoZSBMb29uZ0FyY2ggQlBGIEpJVCBjb21waWxlciwgYW5kIHRoZXJlZm9yZSBhIG1vcmUgY29tcGxldGUgaW1wbGVtZW50YXRpb24sIHRoZW4geWVzLCBpdCB3YXJyYW50cyBhIGNsb3NlciBsb29rLgoKTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrLCBidXQgdGhlIGNvbmZpZ3VyYXRpb25zIHRoYXQgZW5hYmxlIHRoZSByZWxldmFudCBwb3J0aW9ucyBvZiB0aGUga2VybmVsIGFyZSBgQlBGX0pJVGAgYW5kIGBCUEZfU1lTQ0FMTGAgdG8gdGFyZ2V0IHRoYXQgZnVuY3Rpb25hbGl0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDM6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJQRl9KSVQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9LY29uZmlnPTI3PWNvbmZpZyBCUEZfU1lTQ0FMTFxuLS1cbmtlcm5lbC9icGYvS2NvbmZpZy00MS1cbmtlcm5lbC9icGYvS2NvbmZpZzo0Mjpjb25maWcgQlBGX0pJVFxua2VybmVsL2JwZi9LY29uZmlnLTQzLVx0Ym9vbCBcJiMzNDtFbmFibGUgQlBGIEp1c3QgSW4gVGltZSBjb21waWxlclwmIzM0O1xuLS1cbmtlcm5lbC9icGYvS2NvbmZpZy01Ny1cbmtlcm5lbC9icGYvS2NvbmZpZzo1ODpjb25maWcgQlBGX0pJVF9BTFdBWVNfT05cbmtlcm5lbC9icGYvS2NvbmZpZy01OS1cdGJvb2wgXCYjMzQ7UGVybWFuZW50bHkgZW5hYmxlIEJQRiBKSVQgYW5kIHJlbW92ZSBCUEYgaW50ZXJwcmV0ZXJcJiMzNDtcbi0tXG5rZXJuZWwvYnBmL0tjb25maWctNjgtXG5rZXJuZWwvYnBmL0tjb25maWc6Njk6Y29uZmlnIEJQRl9KSVRfREVGQVVMVF9PTlxua2VybmVsL2JwZi9LY29uZmlnLTcwLVx0ZGVmX2Jvb2wgQVJDSF9XQU5UX0RFRkFVTFRfQlBGX0pJVCB8fCBCUEZfSklUX0FMV0FZU19PTlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwMzo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MDI4CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMzE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTG9vbmdBcmNoIEJQRiBKSVQgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBMb29uZ0FyY2ggYXJjaGl0ZWN0dXJlIGFuZCB0aGUgZmlyc3QgdGhpbmdzIHRoYXQganVtcCBvdXQgYXJlIHRoZSBgQlBGX0pJVGAgYW5kIGBCUEZfU1lTQ0FMTGAgY29uZmlndXJhdGlvbnMuIFRob3NlIGZlZWwgbGlrZSB0aGUgY29ycmVjdCBzdGFydGluZyBwb2ludHMuIEp1c3QgdG8gYmUgc3VyZSwgSSYjMzk7bGwgcXVpY2tseSBzY2FuIGZvciBhbnkgb3RoZXIgcG90ZW50aWFsbHkgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMuCgpIbW0sIHRoaXMgcGF0Y2ggaXMgdXNpbmcgYE1BWF9UQUlMX0NBTExfQ05UYCwgd2hpY2ggaXMgYSBwcmV0dHkgc3RhbmRhcmQgQlBGIG1hY3JvLiBUaGUgYWN0dWFsIGZpbGUgYmVpbmcgbW9kaWZpZWQgaXMgYGFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmNgLiBZZXAsIHNlZW1zIGxpa2UgYEJQRl9KSVRgIGlzIHRoZSBjcml0aWNhbCBjb25maWd1cmF0aW9uIGhlcmUuCgpUaGUgY29yZSBvZiB0aGlzIGlzIGFib3V0IGZpeGluZyB0aGUgQlBGIEpJVCBjb21waWxlciBvbiBMb29uZ0FyY2gsIHNwZWNpZmljYWxseSBob3cgaXQgaGFuZGxlcyB0YWlsIGNhbGwgY291bnRzIOKAkyBgUkVHX1RDQ2Ag4oCTIGR1cmluZyBCUEYtdG8tQlBGIGNhbGxzIGFuZCB0YWlsIGNhbGxzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZGVlcCB3aXRoaW4gdGhlIEJQRiBKSVQgbG9naWMsIHNvIHdlIGFic29sdXRlbHkgbmVlZCB0byBmdXp6IHRoaXMgdG8gbWFrZSBzdXJlIHdlIGRvbiYjMzk7dCBpbnRyb2R1Y2UgYW55IHJlZ3Jlc3Npb25zIG9yIHZ1bG5lcmFiaWxpdGllcyBpbiBCUEYgcHJvZ3JhbSBleGVjdXRpb24uCgpOb3csIGxldCYjMzk7cyBpZGVudGlmeSB0aGUga2V5IHN5bWJvbHMuIEkgc2VlIGBicGZfaW50X2ppdF9jb21waWxlYCwgYGJ1aWxkX3Byb2xvZ3VlYCwgYF9fYnVpbGRfZXBpbG9ndWVgLCBhbmQgYGVtaXRfYnBmX3RhaWxfY2FsbGAuIFdhaXQsIGBidWlsZF9wcm9sb2d1ZWAgYW5kIGBfX2J1aWxkX2VwaWxvZ3VlYCBhcmUgc3RhdGljIGZ1bmN0aW9ucyEgU3l6a2FsbGVyIGNvdWxkIGRlZmluaXRlbHkgZm9jdXMgb24gdGhvc2UgaWYgd2UgZ2l2ZSBpdCB0aGVpciBuYW1lcywgYnV0IGZvciBub3cgSSYjMzk7bGwganVzdCBmb2N1cyBvbiBgYnBmX2ludF9qaXRfY29tcGlsZWAgYW5kIGBlbWl0X2JwZl90YWlsX2NhbGxgLgoKSSYjMzk7bGwgY2hlY2sgYGVtaXRfYnBmX3RhaWxfY2FsbGAgaW4gYGFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmNgIGltbWVkaWF0ZWx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwMzo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtlbWl0X2JwZl90YWlsX2NhbGwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM9MjkyPWJvb2wgYnBmX2ppdF9zdXBwb3J0c19mYXJfa2Z1bmNfY2FsbCh2b2lkKVxuLS1cbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMjk2LVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYzoyOTc6c3RhdGljIGludCBlbWl0X2JwZl90YWlsX2NhbGwoc3RydWN0IGppdF9jdHggKmN0eCwgaW50IGluc24pXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTI5OC17XG4tLVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYz03MTc9c3RhdGljIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jdHggKmN0eCwgYm9vbCBleHRyYV9wYXNzKVxuLS1cbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMTIxNS1cdGNhc2UgQlBGX0pNUCB8IEJQRl9UQUlMX0NBTEw6XG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jOjEyMTY6XHRcdGlmIChlbWl0X2JwZl90YWlsX2NhbGwoY3R4LCBpKSBcdTAwM2MgMClcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMTIxNy1cdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDM6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAwNTgKCQkJCQkJCW91dHB1dDogMTYzCgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgdGhlIHN1bW1hcnksIHJlbmRlcmVkIGFzIGEgZmlyc3QtcGVyc29uIHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIHRoZSB1c2VyIGlzIGFuIGV4cGVydDoKCioqUmVmbGVjdGluZyBvbiBgZW1pdF9icGZfdGFpbF9jYWxsYCoqCgpSaWdodCwgYGVtaXRfYnBmX3RhaWxfY2FsbGDigKYgdGhhdCYjMzk7cyBhIHN0YXRpYyBmdW5jdGlvbiwgeWVzLiBHb3QgaXQuIE5vIGFtYmlndWl0eSB0aGVyZS4gSSBuZWVkIHRvIG1ha2UgYSBub3RlIG9mIHRoaXMuCgpOb3csIGxldCYjMzk7cyBwcm9jZWVkIHRvIHNldCB1cCBhbmQgdmVyaWZ5IHRoZSByZXN1bHRzLiBUaGlzIGZ1bmN0aW9uIGNhbGxzIGZvciBjYXJlZnVsIGF0dGVudGlvbiwgYXMgYW55IGluY29ycmVjdCBwYXJhbWV0ZXJzIGNhbiBwcm9kdWNlIHVuZGVzaXJhYmxlIHJlc3VsdHMuIFRpbWUgdG8gZ2V0IHRvIHdvcmsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDAzOjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfSklUJiMzNDssCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX2ludF9qaXRfY29tcGlsZSYjMzQ7LAogICAgJiMzNDtlbWl0X2JwZl90YWlsX2NhbGwmIzM0OywKICAgICYjMzQ7YnVpbGRfcHJvbG9ndWUmIzM0OywKICAgICYjMzQ7X19idWlsZF9lcGlsb2d1ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIEpJVCBjb21waWxlciBmb3IgTG9vbmdBcmNoIHRvIGZpeCB0aGUgaGFuZGxpbmcgb2YgdGFpbCBjYWxsIGNvdW50cyAoUkVHX1RDQykgZHVyaW5nIEJQRi10by1CUEYgY2FsbHMgYW5kIHRhaWwgY2FsbHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgSklUIGxvZ2ljIGZvciBMb29uZ0FyY2ggYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGl0IGRvZXNuJiMzOTt0IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciB2dWxuZXJhYmlsaXRpZXMgaW4gQlBGIHByb2dyYW0gZXhlY3V0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfSklUJiMzNDssCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX2ludF9qaXRfY29tcGlsZSYjMzQ7LAogICAgJiMzNDtlbWl0X2JwZl90YWlsX2NhbGwmIzM0OywKICAgICYjMzQ7YnVpbGRfcHJvbG9ndWUmIzM0OywKICAgICYjMzQ7X19idWlsZF9lcGlsb2d1ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIEpJVCBjb21waWxlciBmb3IgTG9vbmdBcmNoIHRvIGZpeCB0aGUgaGFuZGxpbmcgb2YgdGFpbCBjYWxsIGNvdW50cyAoUkVHX1RDQykgZHVyaW5nIEJQRi10by1CUEYgY2FsbHMgYW5kIHRhaWwgY2FsbHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgSklUIGxvZ2ljIGZvciBMb29uZ0FyY2ggYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGl0IGRvZXNuJiMzOTt0IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciB2dWxuZXJhYmlsaXRpZXMgaW4gQlBGIHByb2dyYW0gZXhlY3V0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDZUMDM6NTc6MzUuMzAzMjUyOTEzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzQ5MzM5MjA1NzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX0pJVFwiLFxuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfaW50X2ppdF9jb21waWxlXCIsXG4gICAgXCJlbWl0X2JwZl90YWlsX2NhbGxcIixcbiAgICBcImJ1aWxkX3Byb2xvZ3VlXCIsXG4gICAgXCJfX2J1aWxkX2VwaWxvZ3VlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiBKSVQgY29tcGlsZXIgZm9yIExvb25nQXJjaCB0byBmaXggdGhlIGhhbmRsaW5nIG9mIHRhaWwgY2FsbCBjb3VudHMgKFJFR19UQ0MpIGR1cmluZyBCUEYtdG8tQlBGIGNhbGxzIGFuZCB0YWlsIGNhbGxzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIEpJVCBsb2dpYyBmb3IgTG9vbmdBcmNoIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBpdCBkb2Vzbid0IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciB2dWxuZXJhYmlsaXRpZXMgaW4gQlBGIHByb2dyYW0gZXhlY3V0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwMzo1NzozNS4zMDMyNTg4ODRaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NDk0NzczNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDdmODJmYzZkNTJkNjAxYzdkYWRiOTcwYjA1YzgxYjc3MThkMTQ0OGRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBKdWwgNiAwMzo1NzozNCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmggYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmhcXG5pbmRleCA3NmI3MjM1OTAwMjNkNy4uMTlmZWFlMTY2ZTFjMTggMTAwNjQ0XFxuLS0tIGEvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vaW5zdC5oXFxuKysrIGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vaW5zdC5oXFxuQEAgLTk3LDYgKzk3LDcgQEAgZW51bSByZWcyaTZfb3Age1xcbiB9O1xcbiBcXG4gZW51bSByZWcyaTEyX29wIHtcXG4rXFx0c2x0dWlfb3BcXHQ9IDB4MDksXFxuIFxcdGFkZGl3X29wXFx0PSAweDBhLFxcbiBcXHRhZGRpZF9vcFxcdD0gMHgwYixcXG4gXFx0bHU1MmlkX29wXFx0PSAweDBjLFxcbkBAIC0xNTMsNiArMTU0LDggQEAgZW51bSByZWczX29wIHtcXG4gXFx0YWRkZF9vcFxcdFxcdD0gMHgyMSxcXG4gXFx0c3Vid19vcFxcdFxcdD0gMHgyMixcXG4gXFx0c3ViZF9vcFxcdFxcdD0gMHgyMyxcXG4rXFx0bWFza2Vxel9vcFxcdD0gMHgyNixcXG4rXFx0bWFza25lel9vcFxcdD0gMHgyNyxcXG4gXFx0bm9yX29wXFx0XFx0PSAweDI4LFxcbiBcXHRhbmRfb3BcXHRcXHQ9IDB4MjksXFxuIFxcdG9yX29wXFx0XFx0PSAweDJhLFxcbkBAIC02NDQsNiArNjQ3LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGVtaXRfIyNOQU1FKHVuaW9uIGxvb25nYXJjaF9pbnN0cnVjdGlvbiAqaW5zbixcXHRcXFxcXFxuIFxcdGluc24tXFx1MDAzZXJlZzJpMTJfZm9ybWF0LnJqID0gcmo7XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiB9XFxuIFxcbitERUZfRU1JVF9SRUcySTEyX0ZPUk1BVChzbHR1aSwgc2x0dWlfb3ApXFxuIERFRl9FTUlUX1JFRzJJMTJfRk9STUFUKGFkZGl3LCBhZGRpd19vcClcXG4gREVGX0VNSVRfUkVHMkkxMl9GT1JNQVQoYWRkaWQsIGFkZGlkX29wKVxcbiBERUZfRU1JVF9SRUcySTEyX0ZPUk1BVChsdTUyaWQsIGx1NTJpZF9vcClcXG5AQCAtNzQ5LDYgKzc1Myw4IEBAIERFRl9FTUlUX1JFRzNfRk9STUFUKGRpdmQsIGRpdmRfb3ApXFxuIERFRl9FTUlUX1JFRzNfRk9STUFUKG1vZGQsIG1vZGRfb3ApXFxuIERFRl9FTUlUX1JFRzNfRk9STUFUKGRpdmR1LCBkaXZkdV9vcClcXG4gREVGX0VNSVRfUkVHM19GT1JNQVQobW9kZHUsIG1vZGR1X29wKVxcbitERUZfRU1JVF9SRUczX0ZPUk1BVChtYXNrZXF6LCBtYXNrZXF6X29wKVxcbitERUZfRU1JVF9SRUczX0ZPUk1BVChtYXNrbmV6LCBtYXNrbmV6X29wKVxcbiBERUZfRU1JVF9SRUczX0ZPUk1BVChhbmQsIGFuZF9vcClcXG4gREVGX0VNSVRfUkVHM19GT1JNQVQob3IsIG9yX29wKVxcbiBERUZfRU1JVF9SRUczX0ZPUk1BVCh4b3IsIHhvcl9vcClcXG5kaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYyBiL2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmNcXG5pbmRleCBhZDdlMjgzNzVhYTk1MS4uYjU2YWU3ZWQzZTA2ZWQgMTAwNjQ0XFxuLS0tIGEvYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY1xcbisrKyBiL2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmNcXG5AQCAtNTIsNTAgKzUyLDU2IEBAIHN0YXRpYyB2b2lkIHByZXBhcmVfYnBmX3RhaWxfY2FsbF9jbnQoc3RydWN0IGppdF9jdHggKmN0eCwgaW50ICpzdG9yZV9vZmZzZXQpXFxuIFxcdGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZyA9IGN0eC1cXHUwMDNlcHJvZztcXG4gXFx0Y29uc3QgYm9vbCBpc19tYWluX3Byb2cgPSAhYnBmX2lzX3N1YnByb2cocHJvZyk7XFxuIFxcbitcXHQqc3RvcmVfb2Zmc2V0IC09IHNpemVvZihsb25nKTtcXG4gXFx0aWYgKGlzX21haW5fcHJvZykge1xcbi1cXHRcXHQvKlxcbi1cXHRcXHQgKiBMT09OR0FSQ0hfR1BSX1QzID0gTUFYX1RBSUxfQ0FMTF9DTlRcXG4tXFx0XFx0ICogaWYgKFJFR19UQ0MgXFx1MDAzZSBUMyApXFxuLVxcdFxcdCAqXFx0c3RkIFJFR19UQ0MgLVxcdTAwM2UgTE9PTkdBUkNIX0dQUl9TUCArIHN0b3JlX29mZnNldFxcbi1cXHRcXHQgKiBlbHNlXFxuLVxcdFxcdCAqXFx0c3RkIFJFR19UQ0MgLVxcdTAwM2UgTE9PTkdBUkNIX0dQUl9TUCArIHN0b3JlX29mZnNldFxcbi1cXHRcXHQgKlxcdFJFR19UQ0MgPSBMT09OR0FSQ0hfR1BSX1NQICsgc3RvcmVfb2Zmc2V0XFxuLVxcdFxcdCAqXFxuLVxcdFxcdCAqIHN0ZCBSRUdfVENDIC1cXHUwMDNlIExPT05HQVJDSF9HUFJfU1AgKyBzdG9yZV9vZmZzZXRcXG4tXFx0XFx0ICpcXG4tXFx0XFx0ICogVGhlIHB1cnBvc2Ugb2YgdGhpcyBjb2RlIGlzIHRvIGZpcnN0IHB1c2ggdGhlIFRDQyBpbnRvIHN0YWNrLFxcbi1cXHRcXHQgKiBhbmQgdGhlbiBwdXNoIHRoZSBhZGRyZXNzIG9mIFRDQyBpbnRvIHN0YWNrLlxcbi1cXHRcXHQgKiBJbiBjYXNlcyB3aGVyZSBicGYyYnBmIGFuZCB0YWlsY2FsbCBhcmUgdXNlZCBpbiBjb21iaW5hdGlvbixcXG4tXFx0XFx0ICogdGhlIHZhbHVlIGluIFJFR19UQ0MgbWF5IGJlIGEgY291bnQgb3IgYW4gYWRkcmVzcyxcXG4tXFx0XFx0ICogdGhlc2UgdHdvIGNhc2VzIG5lZWQgdG8gYmUganVkZ2VkIGFuZCBoYW5kbGVkIHNlcGFyYXRlbHkuXFxuLVxcdFxcdCAqL1xcbi1cXHRcXHRlbWl0X2luc24oY3R4LCBhZGRpZCwgTE9PTkdBUkNIX0dQUl9UMywgTE9PTkdBUkNIX0dQUl9aRVJPLCBNQVhfVEFJTF9DQUxMX0NOVCk7XFxuLVxcdFxcdCpzdG9yZV9vZmZzZXQgLT0gc2l6ZW9mKGxvbmcpO1xcbi1cXG4tXFx0XFx0ZW1pdF9jb25kX2ptcChjdHgsIEJQRl9KR1QsIFJFR19UQ0MsIExPT05HQVJDSF9HUFJfVDMsIDQpO1xcbi1cXG4tXFx0XFx0LypcXG4tXFx0XFx0ICogSWYgUkVHX1RDQyBcXHUwMDNjIE1BWF9UQUlMX0NBTExfQ05ULCB0aGUgdmFsdWUgaW4gUkVHX1RDQyBpcyBhIGNvdW50LFxcbi1cXHRcXHQgKiBwdXNoIHRjYyBpbnRvIHN0YWNrXFxuLVxcdFxcdCAqL1xcbitcXHRcXHQvKiBTYXZlIGVudHJhbmNlIFRDQyBzdGF0ZSAoc2NhbGFyIGNvdW50IG9yIGtlcm5lbCBwb2ludGVyKSB0byBsb2NhbCAndGNjJyBzbG90ICovXFxuIFxcdFxcdGVtaXRfaW5zbihjdHgsIHN0ZCwgUkVHX1RDQywgTE9PTkdBUkNIX0dQUl9TUCwgKnN0b3JlX29mZnNldCk7XFxuIFxcbi1cXHRcXHQvKiBQdXNoIHRoZSBhZGRyZXNzIG9mIFRDQyBpbnRvIHRoZSBSRUdfVENDICovXFxuLVxcdFxcdGVtaXRfaW5zbihjdHgsIGFkZGlkLCBSRUdfVENDLCBMT09OR0FSQ0hfR1BSX1NQLCAqc3RvcmVfb2Zmc2V0KTtcXG4tXFxuLVxcdFxcdGVtaXRfdW5jb25kX2ptcChjdHgsIDIpO1xcbitcXHRcXHQvKiBDb21wdXRlIHRoZSBhYnNvbHV0ZSBwb2ludGVyIHRvIHRoZSBsb2NhbCAndGNjJyBzbG90ICovXFxuK1xcdFxcdGVtaXRfaW5zbihjdHgsIGFkZGlkLCBMT09OR0FSQ0hfR1BSX1Q3LCBMT09OR0FSQ0hfR1BSX1NQLCAqc3RvcmVfb2Zmc2V0KTtcXG4gXFxuIFxcdFxcdC8qXFxuLVxcdFxcdCAqIElmIFJFR19UQ0MgXFx1MDAzZSBNQVhfVEFJTF9DQUxMX0NOVCwgdGhlIHZhbHVlIGluIFJFR19UQ0MgaXMgYW4gYWRkcmVzcyxcXG4tXFx0XFx0ICogcHVzaCB0Y2NfcHRyIGludG8gc3RhY2tcXG4rXFx0XFx0ICogQnJhbmNobGVzcyBjbGFzc2lmaWNhdGlvbiBhbmQgYmxlbmRpbmc6XFxuK1xcdFxcdCAqXFxuK1xcdFxcdCAqIEluIGNvbWJpbmVkIGJwZjJicGYgYW5kIHRhaWxjYWxsIHNjZW5hcmlvcywgUkVHX1RDQyBjYW4gY2FycnlcXG4rXFx0XFx0ICogZWl0aGVyIGEgc2NhbGFyIGNvdW50ICgwIHRvIDMzKSBvciBhbiBpbmhlcml0ZWQga2VybmVsIHBvaW50ZXIgYWRkcmVzcy5cXG4rXFx0XFx0ICpcXG4rXFx0XFx0ICogRW50cmFuY2Ugc3RhdHVzIGZvciBhIG1haW4gcHJvZ3JhbSBiYXNlZCBvbiBSRUdfVENDIHBoeXNpY2FsIGNvbnRlbnQ6XFxuK1xcdFxcdCAqIDEpIEluaXRpYWwgRW50cnkgKFNjYWxhcik6IEVudGVyIHZpYSBhIHN0YW5kYXJkIGV2ZW50LCB3aGVyZSBSRUdfVENDXFxuK1xcdFxcdCAqICAgIGlzIGluaXRpYWxpemVkIHRvIGEgcHVyZSBzY2FsYXIgMC5cXG4rXFx0XFx0ICogMikgSW5oZXJpdGVkIEVudHJ5IChTY2FsYXIpOiBFbnRlciB2aWEgYSBmbGF0IG1haW4tdG8tbWFpbiB0YWlsIGNhbGwsXFxuK1xcdFxcdCAqICAgIHdoZXJlIFJFR19UQ0MgY2FycmllcyBhbiBhY2N1bXVsYXRlZCBzY2FsYXIgY291bnQgKDEgdG8gMzMpIHJlbG9hZGVkXFxuK1xcdFxcdCAqICAgIGZyb20gdGhlIHByaW9yIHN0YWNrIGZyYW1lLlxcbitcXHRcXHQgKiAzKSBJbmhlcml0ZWQgRW50cnkgKFBvaW50ZXIpOiBFbnRlciB2aWEgYSB0YWlsIGNhbGwgZnJvbSBhIHN1YnByb2dyYW0sXFxuK1xcdFxcdCAqICAgIHdoZXJlIFJFR19UQ0MgaW5oZXJpdHMgYW5kIGNhcnJpZXMgYSBtYXNzaXZlIGtlcm5lbCBwb2ludGVyIGFkZHJlc3NcXG4rXFx0XFx0ICogICAgcmVsb2FkZWQgZnJvbSB0aGUgcHJpb3Igc3RhY2sgZnJhbWUuXFxuK1xcdFxcdCAqXFxuK1xcdFxcdCAqIHNsdHVpOiAgIElkZW50aWZ5IHRoZSB0eXBlIG9mIFJFR19UQ0MuXFxuK1xcdFxcdCAqICAgICAgICAgIElmIFJFR19UQ0MgXFx1MDAzYyBNQVhfVEFJTF9DQUxMX0NOVCArIDEgKHNjYWxhciAwfjMzKSwgc2V0cyBUOCA9IDEuXFxuK1xcdFxcdCAqICAgICAgICAgIElmIFJFR19UQ0MgXFx1MDAzZT0gTUFYX1RBSUxfQ0FMTF9DTlQgKyAxIChrZXJuZWwgcG9pbnRlciksIHNldHMgVDggPSAwLlxcbitcXHRcXHQgKlxcbitcXHRcXHQgKiBtYXNrZXF6OiBIYW5kbGUgdGhlIGxvY2FsIHN0YWNrIHBvaW50ZXIgKFQ3KS5cXG4rXFx0XFx0ICogICAgICAgICAgSWYgVDggPT0gMSwga2VlcHMgVDcgaW50YWN0LlxcbitcXHRcXHQgKiAgICAgICAgICBJZiBUOCA9PSAwLCBjbGVhcnMgVDcgdG8gMC5cXG4rXFx0XFx0ICpcXG4rXFx0XFx0ICogbWFza25lejogSGFuZGxlIHRoZSBpbmNvbWluZyBSRUdfVENDIHRvIHByZXZlbnQgcmVnaXN0ZXIgcG9sbHV0aW9uLlxcbitcXHRcXHQgKiAgICAgICAgICBJZiBUOCA9PSAxLCBjbGVhcnMgUkVHX1RDQyB0byAwIChlcmFzaW5nIDF+MzMgc2NhbGFycykuXFxuK1xcdFxcdCAqICAgICAgICAgIElmIFQ4ID09IDAsIGtlZXBzIHRoZSBtYXNzaXZlIGtlcm5lbCBwb2ludGVyIGludGFjdC5cXG4rXFx0XFx0ICpcXG4rXFx0XFx0ICogb3I6ICAgICAgQ29tYmluZSB0aGUgcmVzdWx0cy5cXG4rXFx0XFx0ICogICAgICAgICAgU2NhbGFyIENhc2U6ICBSRUdfVENDID0gMCB8IFQ3ICAgICAgIC1cXHUwMDNlIENsZWFuIGxvY2FsIHN0YWNrIHBvaW50ZXIuXFxuK1xcdFxcdCAqICAgICAgICAgIFBvaW50ZXIgQ2FzZTogUkVHX1RDQyA9IFJFR19UQ0MgfCAwICAtXFx1MDAzZSBDbGVhbiBpbmhlcml0ZWQgZ2xvYmFsIHBvaW50ZXIuXFxuIFxcdFxcdCAqL1xcbi1cXHRcXHRlbWl0X2luc24oY3R4LCBzdGQsIFJFR19UQ0MsIExPT05HQVJDSF9HUFJfU1AsICpzdG9yZV9vZmZzZXQpO1xcbitcXHRcXHRlbWl0X2luc24oY3R4LCBzbHR1aSwgTE9PTkdBUkNIX0dQUl9UOCwgUkVHX1RDQywgTUFYX1RBSUxfQ0FMTF9DTlQgKyAxKTtcXG4rXFx0XFx0ZW1pdF9pbnNuKGN0eCwgbWFza2VxeiwgTE9PTkdBUkNIX0dQUl9UNywgTE9PTkdBUkNIX0dQUl9UNywgTE9PTkdBUkNIX0dQUl9UOCk7XFxuK1xcdFxcdGVtaXRfaW5zbihjdHgsIG1hc2tuZXosIFJFR19UQ0MsIFJFR19UQ0MsIExPT05HQVJDSF9HUFJfVDgpO1xcbitcXHRcXHRlbWl0X2luc24oY3R4LCBvciwgUkVHX1RDQywgUkVHX1RDQywgTE9PTkdBUkNIX0dQUl9UNyk7XFxuIFxcdH0gZWxzZSB7XFxuLVxcdFxcdCpzdG9yZV9vZmZzZXQgLT0gc2l6ZW9mKGxvbmcpO1xcbitcXHRcXHQvKiBTdWJwcm9ncmFtczogYmFja3VwIHRoZSB2ZXJpZmllZCBUQ0MgcG9pbnRlciBpbmhlcml0ZWQgdmlhIFJFR19UQ0MgKi9cXG4gXFx0XFx0ZW1pdF9pbnNuKGN0eCwgc3RkLCBSRUdfVENDLCBMT09OR0FSQ0hfR1BSX1NQLCAqc3RvcmVfb2Zmc2V0KTtcXG4gXFx0fVxcbiBcXG4tXFx0LyogUHVzaCB0Y2NfcHRyIGludG8gc3RhY2sgKi9cXG4rXFx0LyogU3RvcmUgdGhlIGZpbmFsaXplZCBUQ0MgcG9pbnRlciB2YWx1ZSBzZWN1cmVseSBpbnRvIHRoZSBsb2NhbCAndGNjX3B0cicgc2xvdCAqL1xcbiBcXHQqc3RvcmVfb2Zmc2V0IC09IHNpemVvZihsb25nKTtcXG4gXFx0ZW1pdF9pbnNuKGN0eCwgc3RkLCBSRUdfVENDLCBMT09OR0FSQ0hfR1BSX1NQLCAqc3RvcmVfb2Zmc2V0KTtcXG4gfVxcbkBAIC0xMjQsNiArMTMwLDkgQEAgc3RhdGljIHZvaWQgcHJlcGFyZV9icGZfdGFpbF9jYWxsX2NudChzdHJ1Y3Qgaml0X2N0eCAqY3R4LCBpbnQgKnN0b3JlX29mZnNldClcXG4gICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgdGNjICAgICAgICAgICB8XFxuICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xcbiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB0Y2NfcHRyICAgICAgIHxcXG4rICogICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXFxuKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgIGFyZW5hICAgICAgICAgfFxcbisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgKG9wdGlvbmFsKSAgICAgIHxcXG4gICogICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIFxcdTAwM2MtLUJQRl9SRUdfRlBcXG4gICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgcHJvZy1cXHUwMDNlYXV4LVxcdTAwM2VzdGFja19kZXB0aCB8XFxuICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgIChvcHRpb25hbCkgICAgICAgfFxcbkBAIC0xNDUsNyArMTU0LDcgQEAgc3RhdGljIHZvaWQgYnVpbGRfcHJvbG9ndWUoc3RydWN0IGppdF9jdHggKmN0eClcXG4gXFx0c3RhY2tfYWRqdXN0ICs9IHNpemVvZihsb25nKSAqIDI7XFxuIFxcbiBcXHRpZiAoY3R4LVxcdTAwM2VhcmVuYV92bV9zdGFydClcXG4tXFx0XFx0c3RhY2tfYWRqdXN0ICs9IDg7XFxuK1xcdFxcdHN0YWNrX2FkanVzdCArPSBzaXplb2YobG9uZyk7XFxuIFxcbiBcXHRzdGFja19hZGp1c3QgPSByb3VuZF91cChzdGFja19hZGp1c3QsIDE2KTtcXG4gXFx0c3RhY2tfYWRqdXN0ICs9IGJwZl9zdGFja19hZGp1c3Q7XFxuQEAgLTE5NCwxMyArMjAzLDEzIEBAIHN0YXRpYyB2b2lkIGJ1aWxkX3Byb2xvZ3VlKHN0cnVjdCBqaXRfY3R4ICpjdHgpXFxuIFxcdHN0b3JlX29mZnNldCAtPSBzaXplb2YobG9uZyk7XFxuIFxcdGVtaXRfaW5zbihjdHgsIHN0ZCwgTE9PTkdBUkNIX0dQUl9TNSwgTE9PTkdBUkNIX0dQUl9TUCwgc3RvcmVfb2Zmc2V0KTtcXG4gXFxuK1xcdHByZXBhcmVfYnBmX3RhaWxfY2FsbF9jbnQoY3R4LCBcXHUwMDI2c3RvcmVfb2Zmc2V0KTtcXG4rXFxuIFxcdGlmIChjdHgtXFx1MDAzZWFyZW5hX3ZtX3N0YXJ0KSB7XFxuIFxcdFxcdHN0b3JlX29mZnNldCAtPSBzaXplb2YobG9uZyk7XFxuIFxcdFxcdGVtaXRfaW5zbihjdHgsIHN0ZCwgUkVHX0FSRU5BLCBMT09OR0FSQ0hfR1BSX1NQLCBzdG9yZV9vZmZzZXQpO1xcbiBcXHR9XFxuIFxcbi1cXHRwcmVwYXJlX2JwZl90YWlsX2NhbGxfY250KGN0eCwgXFx1MDAyNnN0b3JlX29mZnNldCk7XFxuLVxcbiBcXHRlbWl0X2luc24oY3R4LCBhZGRpZCwgTE9PTkdBUkNIX0dQUl9GUCwgTE9PTkdBUkNIX0dQUl9TUCwgc3RhY2tfYWRqdXN0KTtcXG4gXFxuIFxcdGlmIChicGZfc3RhY2tfYWRqdXN0KVxcbkBAIC0yNDEsMjEgKzI1MCwxOCBAQCBzdGF0aWMgdm9pZCBfX2J1aWxkX2VwaWxvZ3VlKHN0cnVjdCBqaXRfY3R4ICpjdHgsIGJvb2wgaXNfdGFpbF9jYWxsKVxcbiBcXHRsb2FkX29mZnNldCAtPSBzaXplb2YobG9uZyk7XFxuIFxcdGVtaXRfaW5zbihjdHgsIGxkZCwgTE9PTkdBUkNIX0dQUl9TNSwgTE9PTkdBUkNIX0dQUl9TUCwgbG9hZF9vZmZzZXQpO1xcbiBcXG4rXFx0LyogT25seSByZXN0b3JlIHRoZSBUQ0Mgc3RhdGUgaW50byBSRUdfVENDIGZyb20gdGhlIGhpZ2hlciBzbG90ICovXFxuK1xcdGxvYWRfb2Zmc2V0IC09IHNpemVvZihsb25nKTtcXG4rXFx0ZW1pdF9pbnNuKGN0eCwgbGRkLCBSRUdfVENDLCBMT09OR0FSQ0hfR1BSX1NQLCBsb2FkX29mZnNldCk7XFxuK1xcbitcXHQvKiBTa2lwIHRoZSB1bnVzZWQgbG9jYWwgJ3RjY19wdHInIHNsb3QgdG8gYWxpZ24gd2l0aCBhcmVuYSAqL1xcbitcXHRsb2FkX29mZnNldCAtPSBzaXplb2YobG9uZyk7XFxuK1xcbiBcXHRpZiAoY3R4LVxcdTAwM2VhcmVuYV92bV9zdGFydCkge1xcbiBcXHRcXHRsb2FkX29mZnNldCAtPSBzaXplb2YobG9uZyk7XFxuIFxcdFxcdGVtaXRfaW5zbihjdHgsIGxkZCwgUkVHX0FSRU5BLCBMT09OR0FSQ0hfR1BSX1NQLCBsb2FkX29mZnNldCk7XFxuIFxcdH1cXG4gXFxuLVxcdC8qXFxuLVxcdCAqIFdoZW4gcHVzaCBpbnRvIHRoZSBzdGFjaywgZm9sbG93IHRoZSBvcmRlciBvZiB0Y2MgdGhlbiB0Y2NfcHRyLlxcbi1cXHQgKiBXaGVuIHBvcCBmcm9tIHRoZSBzdGFjaywgZmlyc3QgcG9wIHRjY19wdHIgdGhlbiBmb2xsb3dlZCBieSB0Y2MuXFxuLVxcdCAqL1xcbi1cXHRsb2FkX29mZnNldCAtPSAyICogc2l6ZW9mKGxvbmcpO1xcbi1cXHRlbWl0X2luc24oY3R4LCBsZGQsIFJFR19UQ0MsIExPT05HQVJDSF9HUFJfU1AsIGxvYWRfb2Zmc2V0KTtcXG4tXFxuLVxcdGxvYWRfb2Zmc2V0ICs9IHNpemVvZihsb25nKTtcXG4tXFx0ZW1pdF9pbnNuKGN0eCwgbGRkLCBSRUdfVENDLCBMT09OR0FSQ0hfR1BSX1NQLCBsb2FkX29mZnNldCk7XFxuLVxcbiBcXHRlbWl0X2luc24oY3R4LCBhZGRpZCwgTE9PTkdBUkNIX0dQUl9TUCwgTE9PTkdBUkNIX0dQUl9TUCwgc3RhY2tfYWRqdXN0KTtcXG4gXFxuIFxcdGlmICghaXNfdGFpbF9jYWxsKSB7XFxuQEAgLTI5MCwxNyArMjk2LDEzIEBAIGJvb2wgYnBmX2ppdF9zdXBwb3J0c19mYXJfa2Z1bmNfY2FsbCh2b2lkKVxcbiBcXG4gc3RhdGljIGludCBlbWl0X2JwZl90YWlsX2NhbGwoc3RydWN0IGppdF9jdHggKmN0eCwgaW50IGluc24pXFxuIHtcXG4tXFx0aW50IG9mZiwgdGNfbmluc24gPSAwO1xcbitcXHRpbnQgb2ZmLCBqbXBfb2Zmc2V0O1xcbiBcXHRpbnQgdGNjX3B0cl9vZmYgPSBCUEZfVEFJTF9DQUxMX0NOVF9QVFJfU1RBQ0tfT0ZGKGN0eC1cXHUwMDNlc3RhY2tfc2l6ZSk7XFxuIFxcdHU4IGExID0gTE9PTkdBUkNIX0dQUl9BMTtcXG4gXFx0dTggYTIgPSBMT09OR0FSQ0hfR1BSX0EyO1xcbiBcXHR1OCB0MSA9IExPT05HQVJDSF9HUFJfVDE7XFxuIFxcdHU4IHQyID0gTE9PTkdBUkNIX0dQUl9UMjtcXG4gXFx0dTggdDMgPSBMT09OR0FSQ0hfR1BSX1QzO1xcbi1cXHRjb25zdCBpbnQgaWR4MCA9IGN0eC1cXHUwMDNlaWR4O1xcbi1cXG4tI2RlZmluZSBjdXJfb2Zmc2V0IChjdHgtXFx1MDAzZWlkeCAtIGlkeDApXFxuLSNkZWZpbmUgam1wX29mZnNldCAodGNfbmluc24gLSAoY3VyX29mZnNldCkpXFxuIFxcbiBcXHQvKlxcbiBcXHQgKiBhMDogXFx1MDAyNmN0eFxcbkBAIC0zMTAsMTIgKzMxMiwxMiBAQCBzdGF0aWMgaW50IGVtaXRfYnBmX3RhaWxfY2FsbChzdHJ1Y3Qgaml0X2N0eCAqY3R4LCBpbnQgaW5zbilcXG4gXFx0ICogaWYgKGluZGV4IFxcdTAwM2U9IGFycmF5LVxcdTAwM2VtYXAubWF4X2VudHJpZXMpXFxuIFxcdCAqXFx0IGdvdG8gb3V0O1xcbiBcXHQgKi9cXG4tXFx0dGNfbmluc24gPSBpbnNuID8gY3R4LVxcdTAwM2VvZmZzZXRbaW5zbisxXSAtIGN0eC1cXHUwMDNlb2Zmc2V0W2luc25dIDogY3R4LVxcdTAwM2VvZmZzZXRbMF07XFxuIFxcdGVtaXRfemV4dF8zMihjdHgsIGEyLCB0cnVlKTtcXG4gXFxuIFxcdG9mZiA9IG9mZnNldG9mKHN0cnVjdCBicGZfYXJyYXksIG1hcC5tYXhfZW50cmllcyk7XFxuIFxcdGVtaXRfaW5zbihjdHgsIGxkd3UsIHQxLCBhMSwgb2ZmKTtcXG4gXFx0LyogYmdldSAkYTIsICR0MSwgam1wX29mZnNldCAqL1xcbitcXHRqbXBfb2Zmc2V0ID0gY3R4LVxcdTAwM2VpbWFnZSA/IChjdHgtXFx1MDAzZW9mZnNldFtpbnNuICsgMV0gLSBjdHgtXFx1MDAzZWlkeCkgOiAwO1xcbiBcXHRpZiAoZW1pdF90YWlsY2FsbF9qbXAoY3R4LCBCUEZfSkdFLCBhMiwgdDEsIGptcF9vZmZzZXQpIFxcdTAwM2MgMClcXG4gXFx0XFx0Z290byB0b29mYXI7XFxuIFxcbkBAIC0zMjYsNiArMzI4LDcgQEAgc3RhdGljIGludCBlbWl0X2JwZl90YWlsX2NhbGwoc3RydWN0IGppdF9jdHggKmN0eCwgaW50IGluc24pXFxuIFxcdGVtaXRfaW5zbihjdHgsIGxkZCwgUkVHX1RDQywgTE9PTkdBUkNIX0dQUl9TUCwgdGNjX3B0cl9vZmYpO1xcbiBcXHRlbWl0X2luc24oY3R4LCBsZGQsIHQzLCBSRUdfVENDLCAwKTtcXG4gXFx0ZW1pdF9pbnNuKGN0eCwgYWRkaWQsIHQyLCBMT09OR0FSQ0hfR1BSX1pFUk8sIE1BWF9UQUlMX0NBTExfQ05UKTtcXG4rXFx0am1wX29mZnNldCA9IGN0eC1cXHUwMDNlaW1hZ2UgPyAoY3R4LVxcdTAwM2VvZmZzZXRbaW5zbiArIDFdIC0gY3R4LVxcdTAwM2VpZHgpIDogMDtcXG4gXFx0aWYgKGVtaXRfdGFpbGNhbGxfam1wKGN0eCwgQlBGX0pTR0UsIHQzLCB0Miwgam1wX29mZnNldCkgXFx1MDAzYyAwKVxcbiBcXHRcXHRnb3RvIHRvb2ZhcjtcXG4gXFxuQEAgLTM0MCw2ICszNDMsNyBAQCBzdGF0aWMgaW50IGVtaXRfYnBmX3RhaWxfY2FsbChzdHJ1Y3Qgaml0X2N0eCAqY3R4LCBpbnQgaW5zbilcXG4gXFx0b2ZmID0gb2Zmc2V0b2Yoc3RydWN0IGJwZl9hcnJheSwgcHRycyk7XFxuIFxcdGVtaXRfaW5zbihjdHgsIGxkZCwgdDIsIHQyLCBvZmYpO1xcbiBcXHQvKiBiZXEgJHQyLCAkemVybywgam1wX29mZnNldCAqL1xcbitcXHRqbXBfb2Zmc2V0ID0gY3R4LVxcdTAwM2VpbWFnZSA/IChjdHgtXFx1MDAzZW9mZnNldFtpbnNuICsgMV0gLSBjdHgtXFx1MDAzZWlkeCkgOiAwO1xcbiBcXHRpZiAoZW1pdF90YWlsY2FsbF9qbXAoY3R4LCBCUEZfSkVRLCB0MiwgTE9PTkdBUkNIX0dQUl9aRVJPLCBqbXBfb2Zmc2V0KSBcXHUwMDNjIDApXFxuIFxcdFxcdGdvdG8gdG9vZmFyO1xcbiBcXG5AQCAtMzU1LDggKzM1OSw2IEBAIHN0YXRpYyBpbnQgZW1pdF9icGZfdGFpbF9jYWxsKHN0cnVjdCBqaXRfY3R4ICpjdHgsIGludCBpbnNuKVxcbiB0b29mYXI6XFxuIFxcdHByX2luZm9fb25jZShcXFwidGFpbF9jYWxsOiBqdW1wIHRvbyBmYXJcXFxcblxcXCIpO1xcbiBcXHRyZXR1cm4gLTE7XFxuLSN1bmRlZiBjdXJfb2Zmc2V0XFxuLSN1bmRlZiBqbXBfb2Zmc2V0XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIGVtaXRfc3RvcmVfc3RhY2tfaW1tNjQoc3RydWN0IGppdF9jdHggKmN0eCwgaW50IHJlZywgaW50IHN0YWNrX29mZiwgdTY0IGltbTY0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwMzo1NzozNS43NDkyMDIzMTdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NDg3OTYyNjQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9KSVRcIixcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX2ludF9qaXRfY29tcGlsZVwiLFxuICAgIFwiZW1pdF9icGZfdGFpbF9jYWxsXCIsXG4gICAgXCJidWlsZF9wcm9sb2d1ZVwiLFxuICAgIFwiX19idWlsZF9lcGlsb2d1ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgSklUIGNvbXBpbGVyIGZvciBMb29uZ0FyY2ggdG8gZml4IHRoZSBoYW5kbGluZyBvZiB0YWlsIGNhbGwgY291bnRzIChSRUdfVENDKSBkdXJpbmcgQlBGLXRvLUJQRiBjYWxscyBhbmQgdGFpbCBjYWxscy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiBKSVQgbG9naWMgZm9yIExvb25nQXJjaCBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgZG9lc24ndCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMgb3IgdnVsbmVyYWJpbGl0aWVzIGluIEJQRiBwcm9ncmFtIGV4ZWN1dGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA3ZjgyZmM2ZDUyZDYwMWM3ZGFkYjk3MGIwNWM4MWI3NzE4ZDE0NDhkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgNiAwMzo1NzozNCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2luc3QuaCBiL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2luc3QuaFxuaW5kZXggNzZiNzIzNTkwMDIzZDcuLjE5ZmVhZTE2NmUxYzE4IDEwMDY0NFxuLS0tIGEvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vaW5zdC5oXG4rKysgYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmhcbkBAIC05Nyw2ICs5Nyw3IEBAIGVudW0gcmVnMmk2X29wIHtcbiB9O1xuIFxuIGVudW0gcmVnMmkxMl9vcCB7XG4rXHRzbHR1aV9vcFx0PSAweDA5LFxuIFx0YWRkaXdfb3BcdD0gMHgwYSxcbiBcdGFkZGlkX29wXHQ9IDB4MGIsXG4gXHRsdTUyaWRfb3BcdD0gMHgwYyxcbkBAIC0xNTMsNiArMTU0LDggQEAgZW51bSByZWczX29wIHtcbiBcdGFkZGRfb3BcdFx0PSAweDIxLFxuIFx0c3Vid19vcFx0XHQ9IDB4MjIsXG4gXHRzdWJkX29wXHRcdD0gMHgyMyxcbitcdG1hc2tlcXpfb3BcdD0gMHgyNixcbitcdG1hc2tuZXpfb3BcdD0gMHgyNyxcbiBcdG5vcl9vcFx0XHQ9IDB4MjgsXG4gXHRhbmRfb3BcdFx0PSAweDI5LFxuIFx0b3Jfb3BcdFx0PSAweDJhLFxuQEAgLTY0NCw2ICs2NDcsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZW1pdF8jI05BTUUodW5pb24gbG9vbmdhcmNoX2luc3RydWN0aW9uICppbnNuLFx0XFxcbiBcdGluc24tXHUwMDNlcmVnMmkxMl9mb3JtYXQucmogPSByajtcdFx0XHRcdFx0XFxcbiB9XG4gXG4rREVGX0VNSVRfUkVHMkkxMl9GT1JNQVQoc2x0dWksIHNsdHVpX29wKVxuIERFRl9FTUlUX1JFRzJJMTJfRk9STUFUKGFkZGl3LCBhZGRpd19vcClcbiBERUZfRU1JVF9SRUcySTEyX0ZPUk1BVChhZGRpZCwgYWRkaWRfb3ApXG4gREVGX0VNSVRfUkVHMkkxMl9GT1JNQVQobHU1MmlkLCBsdTUyaWRfb3ApXG5AQCAtNzQ5LDYgKzc1Myw4IEBAIERFRl9FTUlUX1JFRzNfRk9STUFUKGRpdmQsIGRpdmRfb3ApXG4gREVGX0VNSVRfUkVHM19GT1JNQVQobW9kZCwgbW9kZF9vcClcbiBERUZfRU1JVF9SRUczX0ZPUk1BVChkaXZkdSwgZGl2ZHVfb3ApXG4gREVGX0VNSVRfUkVHM19GT1JNQVQobW9kZHUsIG1vZGR1X29wKVxuK0RFRl9FTUlUX1JFRzNfRk9STUFUKG1hc2tlcXosIG1hc2tlcXpfb3ApXG4rREVGX0VNSVRfUkVHM19GT1JNQVQobWFza25leiwgbWFza25lel9vcClcbiBERUZfRU1JVF9SRUczX0ZPUk1BVChhbmQsIGFuZF9vcClcbiBERUZfRU1JVF9SRUczX0ZPUk1BVChvciwgb3Jfb3ApXG4gREVGX0VNSVRfUkVHM19GT1JNQVQoeG9yLCB4b3Jfb3ApXG5kaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYyBiL2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmNcbmluZGV4IGFkN2UyODM3NWFhOTUxLi5iNTZhZTdlZDNlMDZlZCAxMDA2NDRcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmNcbisrKyBiL2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmNcbkBAIC01Miw1MCArNTIsNTYgQEAgc3RhdGljIHZvaWQgcHJlcGFyZV9icGZfdGFpbF9jYWxsX2NudChzdHJ1Y3Qgaml0X2N0eCAqY3R4LCBpbnQgKnN0b3JlX29mZnNldClcbiBcdGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZyA9IGN0eC1cdTAwM2Vwcm9nO1xuIFx0Y29uc3QgYm9vbCBpc19tYWluX3Byb2cgPSAhYnBmX2lzX3N1YnByb2cocHJvZyk7XG4gXG4rXHQqc3RvcmVfb2Zmc2V0IC09IHNpemVvZihsb25nKTtcbiBcdGlmIChpc19tYWluX3Byb2cpIHtcbi1cdFx0Lypcbi1cdFx0ICogTE9PTkdBUkNIX0dQUl9UMyA9IE1BWF9UQUlMX0NBTExfQ05UXG4tXHRcdCAqIGlmIChSRUdfVENDIFx1MDAzZSBUMyApXG4tXHRcdCAqXHRzdGQgUkVHX1RDQyAtXHUwMDNlIExPT05HQVJDSF9HUFJfU1AgKyBzdG9yZV9vZmZzZXRcbi1cdFx0ICogZWxzZVxuLVx0XHQgKlx0c3RkIFJFR19UQ0MgLVx1MDAzZSBMT09OR0FSQ0hfR1BSX1NQICsgc3RvcmVfb2Zmc2V0XG4tXHRcdCAqXHRSRUdfVENDID0gTE9PTkdBUkNIX0dQUl9TUCArIHN0b3JlX29mZnNldFxuLVx0XHQgKlxuLVx0XHQgKiBzdGQgUkVHX1RDQyAtXHUwMDNlIExPT05HQVJDSF9HUFJfU1AgKyBzdG9yZV9vZmZzZXRcbi1cdFx0ICpcbi1cdFx0ICogVGhlIHB1cnBvc2Ugb2YgdGhpcyBjb2RlIGlzIHRvIGZpcnN0IHB1c2ggdGhlIFRDQyBpbnRvIHN0YWNrLFxuLVx0XHQgKiBhbmQgdGhlbiBwdXNoIHRoZSBhZGRyZXNzIG9mIFRDQyBpbnRvIHN0YWNrLlxuLVx0XHQgKiBJbiBjYXNlcyB3aGVyZSBicGYyYnBmIGFuZCB0YWlsY2FsbCBhcmUgdXNlZCBpbiBjb21iaW5hdGlvbixcbi1cdFx0ICogdGhlIHZhbHVlIGluIFJFR19UQ0MgbWF5IGJlIGEgY291bnQgb3IgYW4gYWRkcmVzcyxcbi1cdFx0ICogdGhlc2UgdHdvIGNhc2VzIG5lZWQgdG8gYmUganVkZ2VkIGFuZCBoYW5kbGVkIHNlcGFyYXRlbHkuXG4tXHRcdCAqL1xuLVx0XHRlbWl0X2luc24oY3R4LCBhZGRpZCwgTE9PTkdBUkNIX0dQUl9UMywgTE9PTkdBUkNIX0dQUl9aRVJPLCBNQVhfVEFJTF9DQUxMX0NOVCk7XG4tXHRcdCpzdG9yZV9vZmZzZXQgLT0gc2l6ZW9mKGxvbmcpO1xuLVxuLVx0XHRlbWl0X2NvbmRfam1wKGN0eCwgQlBGX0pHVCwgUkVHX1RDQywgTE9PTkdBUkNIX0dQUl9UMywgNCk7XG4tXG4tXHRcdC8qXG4tXHRcdCAqIElmIFJFR19UQ0MgXHUwMDNjIE1BWF9UQUlMX0NBTExfQ05ULCB0aGUgdmFsdWUgaW4gUkVHX1RDQyBpcyBhIGNvdW50LFxuLVx0XHQgKiBwdXNoIHRjYyBpbnRvIHN0YWNrXG4tXHRcdCAqL1xuK1x0XHQvKiBTYXZlIGVudHJhbmNlIFRDQyBzdGF0ZSAoc2NhbGFyIGNvdW50IG9yIGtlcm5lbCBwb2ludGVyKSB0byBsb2NhbCAndGNjJyBzbG90ICovXG4gXHRcdGVtaXRfaW5zbihjdHgsIHN0ZCwgUkVHX1RDQywgTE9PTkdBUkNIX0dQUl9TUCwgKnN0b3JlX29mZnNldCk7XG4gXG4tXHRcdC8qIFB1c2ggdGhlIGFkZHJlc3Mgb2YgVENDIGludG8gdGhlIFJFR19UQ0MgKi9cbi1cdFx0ZW1pdF9pbnNuKGN0eCwgYWRkaWQsIFJFR19UQ0MsIExPT05HQVJDSF9HUFJfU1AsICpzdG9yZV9vZmZzZXQpO1xuLVxuLVx0XHRlbWl0X3VuY29uZF9qbXAoY3R4LCAyKTtcbitcdFx0LyogQ29tcHV0ZSB0aGUgYWJzb2x1dGUgcG9pbnRlciB0byB0aGUgbG9jYWwgJ3RjYycgc2xvdCAqL1xuK1x0XHRlbWl0X2luc24oY3R4LCBhZGRpZCwgTE9PTkdBUkNIX0dQUl9UNywgTE9PTkdBUkNIX0dQUl9TUCwgKnN0b3JlX29mZnNldCk7XG4gXG4gXHRcdC8qXG4tXHRcdCAqIElmIFJFR19UQ0MgXHUwMDNlIE1BWF9UQUlMX0NBTExfQ05ULCB0aGUgdmFsdWUgaW4gUkVHX1RDQyBpcyBhbiBhZGRyZXNzLFxuLVx0XHQgKiBwdXNoIHRjY19wdHIgaW50byBzdGFja1xuK1x0XHQgKiBCcmFuY2hsZXNzIGNsYXNzaWZpY2F0aW9uIGFuZCBibGVuZGluZzpcbitcdFx0ICpcbitcdFx0ICogSW4gY29tYmluZWQgYnBmMmJwZiBhbmQgdGFpbGNhbGwgc2NlbmFyaW9zLCBSRUdfVENDIGNhbiBjYXJyeVxuK1x0XHQgKiBlaXRoZXIgYSBzY2FsYXIgY291bnQgKDAgdG8gMzMpIG9yIGFuIGluaGVyaXRlZCBrZXJuZWwgcG9pbnRlciBhZGRyZXNzLlxuK1x0XHQgKlxuK1x0XHQgKiBFbnRyYW5jZSBzdGF0dXMgZm9yIGEgbWFpbiBwcm9ncmFtIGJhc2VkIG9uIFJFR19UQ0MgcGh5c2ljYWwgY29udGVudDpcbitcdFx0ICogMSkgSW5pdGlhbCBFbnRyeSAoU2NhbGFyKTogRW50ZXIgdmlhIGEgc3RhbmRhcmQgZXZlbnQsIHdoZXJlIFJFR19UQ0NcbitcdFx0ICogICAgaXMgaW5pdGlhbGl6ZWQgdG8gYSBwdXJlIHNjYWxhciAwLlxuK1x0XHQgKiAyKSBJbmhlcml0ZWQgRW50cnkgKFNjYWxhcik6IEVudGVyIHZpYSBhIGZsYXQgbWFpbi10by1tYWluIHRhaWwgY2FsbCxcbitcdFx0ICogICAgd2hlcmUgUkVHX1RDQyBjYXJyaWVzIGFuIGFjY3VtdWxhdGVkIHNjYWxhciBjb3VudCAoMSB0byAzMykgcmVsb2FkZWRcbitcdFx0ICogICAgZnJvbSB0aGUgcHJpb3Igc3RhY2sgZnJhbWUuXG4rXHRcdCAqIDMpIEluaGVyaXRlZCBFbnRyeSAoUG9pbnRlcik6IEVudGVyIHZpYSBhIHRhaWwgY2FsbCBmcm9tIGEgc3VicHJvZ3JhbSxcbitcdFx0ICogICAgd2hlcmUgUkVHX1RDQyBpbmhlcml0cyBhbmQgY2FycmllcyBhIG1hc3NpdmUga2VybmVsIHBvaW50ZXIgYWRkcmVzc1xuK1x0XHQgKiAgICByZWxvYWRlZCBmcm9tIHRoZSBwcmlvciBzdGFjayBmcmFtZS5cbitcdFx0ICpcbitcdFx0ICogc2x0dWk6ICAgSWRlbnRpZnkgdGhlIHR5cGUgb2YgUkVHX1RDQy5cbitcdFx0ICogICAgICAgICAgSWYgUkVHX1RDQyBcdTAwM2MgTUFYX1RBSUxfQ0FMTF9DTlQgKyAxIChzY2FsYXIgMH4zMyksIHNldHMgVDggPSAxLlxuK1x0XHQgKiAgICAgICAgICBJZiBSRUdfVENDIFx1MDAzZT0gTUFYX1RBSUxfQ0FMTF9DTlQgKyAxIChrZXJuZWwgcG9pbnRlciksIHNldHMgVDggPSAwLlxuK1x0XHQgKlxuK1x0XHQgKiBtYXNrZXF6OiBIYW5kbGUgdGhlIGxvY2FsIHN0YWNrIHBvaW50ZXIgKFQ3KS5cbitcdFx0ICogICAgICAgICAgSWYgVDggPT0gMSwga2VlcHMgVDcgaW50YWN0LlxuK1x0XHQgKiAgICAgICAgICBJZiBUOCA9PSAwLCBjbGVhcnMgVDcgdG8gMC5cbitcdFx0ICpcbitcdFx0ICogbWFza25lejogSGFuZGxlIHRoZSBpbmNvbWluZyBSRUdfVENDIHRvIHByZXZlbnQgcmVnaXN0ZXIgcG9sbHV0aW9uLlxuK1x0XHQgKiAgICAgICAgICBJZiBUOCA9PSAxLCBjbGVhcnMgUkVHX1RDQyB0byAwIChlcmFzaW5nIDF+MzMgc2NhbGFycykuXG4rXHRcdCAqICAgICAgICAgIElmIFQ4ID09IDAsIGtlZXBzIHRoZSBtYXNzaXZlIGtlcm5lbCBwb2ludGVyIGludGFjdC5cbitcdFx0ICpcbitcdFx0ICogb3I6ICAgICAgQ29tYmluZSB0aGUgcmVzdWx0cy5cbitcdFx0ICogICAgICAgICAgU2NhbGFyIENhc2U6ICBSRUdfVENDID0gMCB8IFQ3ICAgICAgIC1cdTAwM2UgQ2xlYW4gbG9jYWwgc3RhY2sgcG9pbnRlci5cbitcdFx0ICogICAgICAgICAgUG9pbnRlciBDYXNlOiBSRUdfVENDID0gUkVHX1RDQyB8IDAgIC1cdTAwM2UgQ2xlYW4gaW5oZXJpdGVkIGdsb2JhbCBwb2ludGVyLlxuIFx0XHQgKi9cbi1cdFx0ZW1pdF9pbnNuKGN0eCwgc3RkLCBSRUdfVENDLCBMT09OR0FSQ0hfR1BSX1NQLCAqc3RvcmVfb2Zmc2V0KTtcbitcdFx0ZW1pdF9pbnNuKGN0eCwgc2x0dWksIExPT05HQVJDSF9HUFJfVDgsIFJFR19UQ0MsIE1BWF9UQUlMX0NBTExfQ05UICsgMSk7XG4rXHRcdGVtaXRfaW5zbihjdHgsIG1hc2tlcXosIExPT05HQVJDSF9HUFJfVDcsIExPT05HQVJDSF9HUFJfVDcsIExPT05HQVJDSF9HUFJfVDgpO1xuK1x0XHRlbWl0X2luc24oY3R4LCBtYXNrbmV6LCBSRUdfVENDLCBSRUdfVENDLCBMT09OR0FSQ0hfR1BSX1Q4KTtcbitcdFx0ZW1pdF9pbnNuKGN0eCwgb3IsIFJFR19UQ0MsIFJFR19UQ0MsIExPT05HQVJDSF9HUFJfVDcpO1xuIFx0fSBlbHNlIHtcbi1cdFx0KnN0b3JlX29mZnNldCAtPSBzaXplb2YobG9uZyk7XG4rXHRcdC8qIFN1YnByb2dyYW1zOiBiYWNrdXAgdGhlIHZlcmlmaWVkIFRDQyBwb2ludGVyIGluaGVyaXRlZCB2aWEgUkVHX1RDQyAqL1xuIFx0XHRlbWl0X2luc24oY3R4LCBzdGQsIFJFR19UQ0MsIExPT05HQVJDSF9HUFJfU1AsICpzdG9yZV9vZmZzZXQpO1xuIFx0fVxuIFxuLVx0LyogUHVzaCB0Y2NfcHRyIGludG8gc3RhY2sgKi9cbitcdC8qIFN0b3JlIHRoZSBmaW5hbGl6ZWQgVENDIHBvaW50ZXIgdmFsdWUgc2VjdXJlbHkgaW50byB0aGUgbG9jYWwgJ3RjY19wdHInIHNsb3QgKi9cbiBcdCpzdG9yZV9vZmZzZXQgLT0gc2l6ZW9mKGxvbmcpO1xuIFx0ZW1pdF9pbnNuKGN0eCwgc3RkLCBSRUdfVENDLCBMT09OR0FSQ0hfR1BSX1NQLCAqc3RvcmVfb2Zmc2V0KTtcbiB9XG5AQCAtMTI0LDYgKzEzMCw5IEBAIHN0YXRpYyB2b2lkIHByZXBhcmVfYnBmX3RhaWxfY2FsbF9jbnQoc3RydWN0IGppdF9jdHggKmN0eCwgaW50ICpzdG9yZV9vZmZzZXQpXG4gICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgdGNjICAgICAgICAgICB8XG4gICogICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgdGNjX3B0ciAgICAgICB8XG4rICogICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4rICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgYXJlbmEgICAgICAgICB8XG4rICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIChvcHRpb25hbCkgICAgICB8XG4gICogICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIFx1MDAzYy0tQlBGX1JFR19GUFxuICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHByb2ctXHUwMDNlYXV4LVx1MDAzZXN0YWNrX2RlcHRoIHxcbiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAob3B0aW9uYWwpICAgICAgIHxcbkBAIC0xNDUsNyArMTU0LDcgQEAgc3RhdGljIHZvaWQgYnVpbGRfcHJvbG9ndWUoc3RydWN0IGppdF9jdHggKmN0eClcbiBcdHN0YWNrX2FkanVzdCArPSBzaXplb2YobG9uZykgKiAyO1xuIFxuIFx0aWYgKGN0eC1cdTAwM2VhcmVuYV92bV9zdGFydClcbi1cdFx0c3RhY2tfYWRqdXN0ICs9IDg7XG4rXHRcdHN0YWNrX2FkanVzdCArPSBzaXplb2YobG9uZyk7XG4gXG4gXHRzdGFja19hZGp1c3QgPSByb3VuZF91cChzdGFja19hZGp1c3QsIDE2KTtcbiBcdHN0YWNrX2FkanVzdCArPSBicGZfc3RhY2tfYWRqdXN0O1xuQEAgLTE5NCwxMyArMjAzLDEzIEBAIHN0YXRpYyB2b2lkIGJ1aWxkX3Byb2xvZ3VlKHN0cnVjdCBqaXRfY3R4ICpjdHgpXG4gXHRzdG9yZV9vZmZzZXQgLT0gc2l6ZW9mKGxvbmcpO1xuIFx0ZW1pdF9pbnNuKGN0eCwgc3RkLCBMT09OR0FSQ0hfR1BSX1M1LCBMT09OR0FSQ0hfR1BSX1NQLCBzdG9yZV9vZmZzZXQpO1xuIFxuK1x0cHJlcGFyZV9icGZfdGFpbF9jYWxsX2NudChjdHgsIFx1MDAyNnN0b3JlX29mZnNldCk7XG4rXG4gXHRpZiAoY3R4LVx1MDAzZWFyZW5hX3ZtX3N0YXJ0KSB7XG4gXHRcdHN0b3JlX29mZnNldCAtPSBzaXplb2YobG9uZyk7XG4gXHRcdGVtaXRfaW5zbihjdHgsIHN0ZCwgUkVHX0FSRU5BLCBMT09OR0FSQ0hfR1BSX1NQLCBzdG9yZV9vZmZzZXQpO1xuIFx0fVxuIFxuLVx0cHJlcGFyZV9icGZfdGFpbF9jYWxsX2NudChjdHgsIFx1MDAyNnN0b3JlX29mZnNldCk7XG4tXG4gXHRlbWl0X2luc24oY3R4LCBhZGRpZCwgTE9PTkdBUkNIX0dQUl9GUCwgTE9PTkdBUkNIX0dQUl9TUCwgc3RhY2tfYWRqdXN0KTtcbiBcbiBcdGlmIChicGZfc3RhY2tfYWRqdXN0KVxuQEAgLTI0MSwyMSArMjUwLDE4IEBAIHN0YXRpYyB2b2lkIF9fYnVpbGRfZXBpbG9ndWUoc3RydWN0IGppdF9jdHggKmN0eCwgYm9vbCBpc190YWlsX2NhbGwpXG4gXHRsb2FkX29mZnNldCAtPSBzaXplb2YobG9uZyk7XG4gXHRlbWl0X2luc24oY3R4LCBsZGQsIExPT05HQVJDSF9HUFJfUzUsIExPT05HQVJDSF9HUFJfU1AsIGxvYWRfb2Zmc2V0KTtcbiBcbitcdC8qIE9ubHkgcmVzdG9yZSB0aGUgVENDIHN0YXRlIGludG8gUkVHX1RDQyBmcm9tIHRoZSBoaWdoZXIgc2xvdCAqL1xuK1x0bG9hZF9vZmZzZXQgLT0gc2l6ZW9mKGxvbmcpO1xuK1x0ZW1pdF9pbnNuKGN0eCwgbGRkLCBSRUdfVENDLCBMT09OR0FSQ0hfR1BSX1NQLCBsb2FkX29mZnNldCk7XG4rXG4rXHQvKiBTa2lwIHRoZSB1bnVzZWQgbG9jYWwgJ3RjY19wdHInIHNsb3QgdG8gYWxpZ24gd2l0aCBhcmVuYSAqL1xuK1x0bG9hZF9vZmZzZXQgLT0gc2l6ZW9mKGxvbmcpO1xuK1xuIFx0aWYgKGN0eC1cdTAwM2VhcmVuYV92bV9zdGFydCkge1xuIFx0XHRsb2FkX29mZnNldCAtPSBzaXplb2YobG9uZyk7XG4gXHRcdGVtaXRfaW5zbihjdHgsIGxkZCwgUkVHX0FSRU5BLCBMT09OR0FSQ0hfR1BSX1NQLCBsb2FkX29mZnNldCk7XG4gXHR9XG4gXG4tXHQvKlxuLVx0ICogV2hlbiBwdXNoIGludG8gdGhlIHN0YWNrLCBmb2xsb3cgdGhlIG9yZGVyIG9mIHRjYyB0aGVuIHRjY19wdHIuXG4tXHQgKiBXaGVuIHBvcCBmcm9tIHRoZSBzdGFjaywgZmlyc3QgcG9wIHRjY19wdHIgdGhlbiBmb2xsb3dlZCBieSB0Y2MuXG4tXHQgKi9cbi1cdGxvYWRfb2Zmc2V0IC09IDIgKiBzaXplb2YobG9uZyk7XG4tXHRlbWl0X2luc24oY3R4LCBsZGQsIFJFR19UQ0MsIExPT05HQVJDSF9HUFJfU1AsIGxvYWRfb2Zmc2V0KTtcbi1cbi1cdGxvYWRfb2Zmc2V0ICs9IHNpemVvZihsb25nKTtcbi1cdGVtaXRfaW5zbihjdHgsIGxkZCwgUkVHX1RDQywgTE9PTkdBUkNIX0dQUl9TUCwgbG9hZF9vZmZzZXQpO1xuLVxuIFx0ZW1pdF9pbnNuKGN0eCwgYWRkaWQsIExPT05HQVJDSF9HUFJfU1AsIExPT05HQVJDSF9HUFJfU1AsIHN0YWNrX2FkanVzdCk7XG4gXG4gXHRpZiAoIWlzX3RhaWxfY2FsbCkge1xuQEAgLTI5MCwxNyArMjk2LDEzIEBAIGJvb2wgYnBmX2ppdF9zdXBwb3J0c19mYXJfa2Z1bmNfY2FsbCh2b2lkKVxuIFxuIHN0YXRpYyBpbnQgZW1pdF9icGZfdGFpbF9jYWxsKHN0cnVjdCBqaXRfY3R4ICpjdHgsIGludCBpbnNuKVxuIHtcbi1cdGludCBvZmYsIHRjX25pbnNuID0gMDtcbitcdGludCBvZmYsIGptcF9vZmZzZXQ7XG4gXHRpbnQgdGNjX3B0cl9vZmYgPSBCUEZfVEFJTF9DQUxMX0NOVF9QVFJfU1RBQ0tfT0ZGKGN0eC1cdTAwM2VzdGFja19zaXplKTtcbiBcdHU4IGExID0gTE9PTkdBUkNIX0dQUl9BMTtcbiBcdHU4IGEyID0gTE9PTkdBUkNIX0dQUl9BMjtcbiBcdHU4IHQxID0gTE9PTkdBUkNIX0dQUl9UMTtcbiBcdHU4IHQyID0gTE9PTkdBUkNIX0dQUl9UMjtcbiBcdHU4IHQzID0gTE9PTkdBUkNIX0dQUl9UMztcbi1cdGNvbnN0IGludCBpZHgwID0gY3R4LVx1MDAzZWlkeDtcbi1cbi0jZGVmaW5lIGN1cl9vZmZzZXQgKGN0eC1cdTAwM2VpZHggLSBpZHgwKVxuLSNkZWZpbmUgam1wX29mZnNldCAodGNfbmluc24gLSAoY3VyX29mZnNldCkpXG4gXG4gXHQvKlxuIFx0ICogYTA6IFx1MDAyNmN0eFxuQEAgLTMxMCwxMiArMzEyLDEyIEBAIHN0YXRpYyBpbnQgZW1pdF9icGZfdGFpbF9jYWxsKHN0cnVjdCBqaXRfY3R4ICpjdHgsIGludCBpbnNuKVxuIFx0ICogaWYgKGluZGV4IFx1MDAzZT0gYXJyYXktXHUwMDNlbWFwLm1heF9lbnRyaWVzKVxuIFx0ICpcdCBnb3RvIG91dDtcbiBcdCAqL1xuLVx0dGNfbmluc24gPSBpbnNuID8gY3R4LVx1MDAzZW9mZnNldFtpbnNuKzFdIC0gY3R4LVx1MDAzZW9mZnNldFtpbnNuXSA6IGN0eC1cdTAwM2VvZmZzZXRbMF07XG4gXHRlbWl0X3pleHRfMzIoY3R4LCBhMiwgdHJ1ZSk7XG4gXG4gXHRvZmYgPSBvZmZzZXRvZihzdHJ1Y3QgYnBmX2FycmF5LCBtYXAubWF4X2VudHJpZXMpO1xuIFx0ZW1pdF9pbnNuKGN0eCwgbGR3dSwgdDEsIGExLCBvZmYpO1xuIFx0LyogYmdldSAkYTIsICR0MSwgam1wX29mZnNldCAqL1xuK1x0am1wX29mZnNldCA9IGN0eC1cdTAwM2VpbWFnZSA/IChjdHgtXHUwMDNlb2Zmc2V0W2luc24gKyAxXSAtIGN0eC1cdTAwM2VpZHgpIDogMDtcbiBcdGlmIChlbWl0X3RhaWxjYWxsX2ptcChjdHgsIEJQRl9KR0UsIGEyLCB0MSwgam1wX29mZnNldCkgXHUwMDNjIDApXG4gXHRcdGdvdG8gdG9vZmFyO1xuIFxuQEAgLTMyNiw2ICszMjgsNyBAQCBzdGF0aWMgaW50IGVtaXRfYnBmX3RhaWxfY2FsbChzdHJ1Y3Qgaml0X2N0eCAqY3R4LCBpbnQgaW5zbilcbiBcdGVtaXRfaW5zbihjdHgsIGxkZCwgUkVHX1RDQywgTE9PTkdBUkNIX0dQUl9TUCwgdGNjX3B0cl9vZmYpO1xuIFx0ZW1pdF9pbnNuKGN0eCwgbGRkLCB0MywgUkVHX1RDQywgMCk7XG4gXHRlbWl0X2luc24oY3R4LCBhZGRpZCwgdDIsIExPT05HQVJDSF9HUFJfWkVSTywgTUFYX1RBSUxfQ0FMTF9DTlQpO1xuK1x0am1wX29mZnNldCA9IGN0eC1cdTAwM2VpbWFnZSA/IChjdHgtXHUwMDNlb2Zmc2V0W2luc24gKyAxXSAtIGN0eC1cdTAwM2VpZHgpIDogMDtcbiBcdGlmIChlbWl0X3RhaWxjYWxsX2ptcChjdHgsIEJQRl9KU0dFLCB0MywgdDIsIGptcF9vZmZzZXQpIFx1MDAzYyAwKVxuIFx0XHRnb3RvIHRvb2ZhcjtcbiBcbkBAIC0zNDAsNiArMzQzLDcgQEAgc3RhdGljIGludCBlbWl0X2JwZl90YWlsX2NhbGwoc3RydWN0IGppdF9jdHggKmN0eCwgaW50IGluc24pXG4gXHRvZmYgPSBvZmZzZXRvZihzdHJ1Y3QgYnBmX2FycmF5LCBwdHJzKTtcbiBcdGVtaXRfaW5zbihjdHgsIGxkZCwgdDIsIHQyLCBvZmYpO1xuIFx0LyogYmVxICR0MiwgJHplcm8sIGptcF9vZmZzZXQgKi9cbitcdGptcF9vZmZzZXQgPSBjdHgtXHUwMDNlaW1hZ2UgPyAoY3R4LVx1MDAzZW9mZnNldFtpbnNuICsgMV0gLSBjdHgtXHUwMDNlaWR4KSA6IDA7XG4gXHRpZiAoZW1pdF90YWlsY2FsbF9qbXAoY3R4LCBCUEZfSkVRLCB0MiwgTE9PTkdBUkNIX0dQUl9aRVJPLCBqbXBfb2Zmc2V0KSBcdTAwM2MgMClcbiBcdFx0Z290byB0b29mYXI7XG4gXG5AQCAtMzU1LDggKzM1OSw2IEBAIHN0YXRpYyBpbnQgZW1pdF9icGZfdGFpbF9jYWxsKHN0cnVjdCBqaXRfY3R4ICpjdHgsIGludCBpbnNuKVxuIHRvb2ZhcjpcbiBcdHByX2luZm9fb25jZShcInRhaWxfY2FsbDoganVtcCB0b28gZmFyXFxuXCIpO1xuIFx0cmV0dXJuIC0xO1xuLSN1bmRlZiBjdXJfb2Zmc2V0XG4tI3VuZGVmIGptcF9vZmZzZXRcbiB9XG4gXG4gc3RhdGljIHZvaWQgZW1pdF9zdG9yZV9zdGFja19pbW02NChzdHJ1Y3Qgaml0X2N0eCAqY3R4LCBpbnQgcmVnLCBpbnQgc3RhY2tfb2ZmLCB1NjQgaW1tNjQpXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwMzo1NzozNS43NDkyMDQwODdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MzA4MTk3MTkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIExvb25nQXJjaCBCUEYgSklUIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaC4gSXQncyB0b3VjaGluZyB0aGUgQlBGIEpJVCBjb21waWxlciBzcGVjaWZpY2FsbHkgZm9yIExvb25nQXJjaCwgdGhlIGBhcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jYCBmaWxlLCBhbmQgYWRkaW5nIHNvbWUgZGVmaW5pdGlvbnMgaW4gYGFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2luc3QuaGAuIFJpZ2h0IG9mZiB0aGUgYmF0LCB0aGlzIGlzIGEgdmVyeSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgY2hhbmdlLiBJdCBsb29rcyBsaWtlIGl0J3MgYWRkcmVzc2luZyB0aGUgaGFuZGxpbmcgb2YgYFJFR19UQ0NgLCB0aGUgdGFpbCBjYWxsIGNvdW50LCBpbiB0aGUgQlBGIEpJVCBvbiBMb29uZ0FyY2guIFRoaXMgbWVhbnMgY2hhbmdlcyB0byBob3cgdGhlIHJlZ2lzdGVyIGlzIHNhdmVkLCByZXN0b3JlZCwgYW5kIGhvdyB0YWlsIGNhbGxzIGFyZSBnZW5lcmF0ZWQuIERlZmluaXRlbHkgZnVuY3Rpb25hbCBjb2RlLCBubyBxdWVzdGlvbiwgYW5kIHByb2JhYmx5IHBlcmZvcm1hbmNlIGNyaXRpY2FsLlxuXG5Ob3csIHRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIGhvdyBkb2VzIHRoaXMgaW50ZXJhY3Qgd2l0aCBmdXp6aW5nPyBUaGlzIHBhdGNoIGlzIGlzb2xhdGVkIHVuZGVyIGBhcmNoL2xvb25nYXJjaC9gLCBzbyBpdCdzIGdvaW5nIHRvIG5lZWQgYSBMb29uZ0FyY2ggbWFjaGluZSBvciBlbXVsYXRvciB0byBiZSBleGVyY2lzZWQuIE15IGluaXRpYWwgdGhvdWdodCBpcyBzeXprYWxsZXIgaXMgdXN1YWxseSB4ODZfNjQsIGFybTY0LCBtYXliZSByaXNjdi4gSXQgKmRvZXMqIHJ1biBvbiBMb29uZ0FyY2gsIHJpZ2h0PyBJIHNlZW0gdG8gcmVtZW1iZXIgc29tZSBMb29uZ0FyY2ggc3VwcG9ydC4gUUVNVSBkb2VzIHN1cHBvcnQgTG9vbmdBcmNoLCBzbyB3ZSBjYW4gdGVzdCB0aGlzIGluIHZpcnR1YWwgZW52aXJvbm1lbnRzLCByaWdodD8gXG5cbldhaXQsIHRoZSBpbnN0cnVjdGlvbnMgYXJlIHdhcm5pbmcgYWJvdXQgdW5yZWFjaGFibGUgY29kZSBwYXRocyBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIEJ1dCB0aGlzIGlzIHRoZSBjYXRjaDogU2luY2UgTG9vbmdBcmNoIGNhbiBiZSBlbXVsYXRlZCBieSBRRU1VLCAqaWYqIHRoZSBwYXRjaCBpcyBMb29uZ0FyY2gtc3BlY2lmaWMsIHdoaWNoIGl0IGxvb2tzIGxpa2UgaXQgaXMsIHdlIGNhbiBidWlsZCBhIExvb25nQXJjaCBrZXJuZWwgYW5kIGZ1enogaXQgdGhhdCB3YXkuIEknZCBiZXR0ZXIgZG91YmxlIGNoZWNrIHRvIGNvbmZpcm0gdGhhdCB3ZSBidWlsZCB0aGUga2VybmVsIHdpdGggdGhlIHByb3BlciBjb25maWdzIVxuXG5MZXQncyBzZWUsIHdoYXQgc3BlY2lmaWMgY29uZmlncyBkbyB3ZSBuZWVkPyBPaCB5ZWFoLCBgQ09ORklHX0JQRl9KSVRgIGlzIGRlZmluaXRlbHkgYSBwcmVyZXF1aXNpdGUuIExldCdzIHN0YXJ0IGJ5IGxvb2tpbmcgYXQgYGFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmNgIHRvIHNlZSBpZiB0aGF0IGlzIGFjdGl2YXRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTkzMywiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwMiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDAzOjU3OjQzLjA1NzQwMzc2OFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDkyOTgyMDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQ09ORklHX0JQRl9KSVRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9sb29uZ2FyY2gvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWc9Nz1DT05GSUdfQlBGX1NZU0NBTEw9eVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWc6ODpDT05GSUdfQlBGX0pJVD15XFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZy05LUNPTkZJR19QUkVFTVBUPXlcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2V4dGFibGUuaD0yNj1kbyB7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTM0LVxcbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2V4dGFibGUuaDozNTojaWZkZWYgQ09ORklHX0JQRl9KSVRcXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9leHRhYmxlLmgtMzYtYm9vbCBleF9oYW5kbGVyX2JwZihjb25zdCBzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5ICpleCwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpO1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vZXh0YWJsZS5oPTM5PWJvb2wgZXhfaGFuZGxlcl9icGYoY29uc3Qgc3RydWN0IGV4Y2VwdGlvbl90YWJsZV9lbnRyeSAqZXgsIHN0cnVjdCBwdF9yZWdzICpyZWdzKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTQyLX1cXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9leHRhYmxlLmg6NDM6I2VuZGlmIC8qICFDT05GSUdfQlBGX0pJVCAqL1xcbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2V4dGFibGUuaC00NC1cXG4tLVxcbmFyY2gvbG9vbmdhcmNoL25ldC9NYWtlZmlsZS02LSNcXG5hcmNoL2xvb25nYXJjaC9uZXQvTWFrZWZpbGU6NzpvYmotJChDT05GSUdfQlBGX0pJVCkgKz0gYnBmX2ppdC5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDAzOjU3OjQzLjIwNjcxMDY2M1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyMTM0NTk1ODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBMb29uZ0FyY2ggQlBGIEpJVCBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgZGlnZ2luZyBpbnRvIGBhcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jYC4gTWFrZXMgc2Vuc2UsIHdlJ3JlIGRlYWxpbmcgd2l0aCB0aGUgTG9vbmdBcmNoIGFyY2hpdGVjdHVyZSBhbmQgQlBGIEpJVCBjb21waWxhdGlvbiBoZXJlLiBJJ2xsIG5lZWQgdG8gcmVtZW1iZXIgdGhhdCB0aGlzIHJlcXVpcmVzIGBDT05GSUdfQlBGX0pJVGAgYW5kIGBDT05GSUdfQlBGX1NZU0NBTExgIGVuYWJsZWQsIHRoYXQncyBjcnVjaWFsIGZvciBjb250ZXh0LiBJZiBJJ20gZ29pbmcgdG8gZmxhZyB0aGlzIGZvciBmdXp6aW5nLCB3aGljaCBJIGFtIGxlYW5pbmcgdG93YXJkcyBnaXZlbiB0aGUgbW9kaWZpY2F0aW9uIGxvY2F0aW9uLCBJJ2xsIG5lZWQgdG8gbGlzdCB0aG9zZSB0d28gY29uZmlnIG9wdGlvbnMuXG5cbk5vdywgbGV0J3Mgc2VlLCB3aGF0IHNwZWNpZmljYWxseSBpcyBiZWluZyB0b3VjaGVkPyBUaGUgbWFpbiBmdW5jdGlvbnMgaW4gYGFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmNgIGFyZSBgcHJlcGFyZV9icGZfdGFpbF9jYWxsX2NudGAsIGBidWlsZF9wcm9sb2d1ZWAsIGBfX2J1aWxkX2VwaWxvZ3VlYCwgYW5kIGBlbWl0X2JwZl90YWlsX2NhbGxgLiBBaCwgdGhleSBhcmUgYWxsIGludGVybmFsIHRvIHRoZSBCUEYgSklUIGNvbXBpbGUgcHJvY2VzcywgYmVpbmcgc3RhdGljIGZ1bmN0aW9ucyB1c2VkIGJ5IGBicGZfaW50X2ppdF9jb21waWxlYC4gVGhlc2UgYXJlIGdvb2QgY2FuZGlkYXRlcyB0byBmb2N1cyBvbiBkdXJpbmcgZnV6emluZyBhcyB0aGV5IGZvcm0gdGhlIGNvcmUgb2YgdGhlIEpJVCBjb21waWxhdGlvbiBwcm9jZXNzLiBUaGlzIHdpbGwgYmUgYW4gaW50ZXJlc3Rpbmcgb25lIHRvIGZvbGxvdyB1cCBvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NzE2MSwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwMzo1Nzo0OC40MjAxNzE5OTFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAwMjYwMjI2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJwZl9pbnRfaml0X2NvbXBpbGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jPTIxODQ9aW50IGFyY2hfYnBmX3RyYW1wb2xpbmVfc2l6ZShjb25zdCBzdHJ1Y3QgYnRmX2Z1bmNfbW9kZWwgKm0sIHUzMiBmbGFncyxcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMjE5OC1cXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jOjIxOTk6c3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZylcXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTIyMDAte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwMzo1Nzo0OC41MjA0NjIyMTdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzU0NDY5MTU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGNyYWZ0ZWQgd2l0aCB0aGUgdW5kZXJzdGFuZGluZyB0aGF0IEknbSBzcGVha2luZyB0byBhIGZlbGxvdyBleHBlcnQ6XG5cbioqVHJhY2luZyB0aGUgSklUIENvbXBpbGF0aW9uIFByb2Nlc3MqKlxuXG5BbHJpZ2h0LCBteSBpbml0aWFsIHRob3VnaHQgaXMgYWx3YXlzIHRvIHplcm8gaW4gb24gdGhlIGVudHJ5IHBvaW50LiBJbiB0aGlzIGNhc2UsIGl0IGxvb2tzIGxpa2UgYGJwZl9pbnRfaml0X2NvbXBpbGVgIGlzIHdoZXJlIHRoaW5ncyBraWNrIG9mZi4gTWFrZXMgcGVyZmVjdCBzZW5zZS4gVGhhdCdzIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBsYWNlLiBOb3csIGJlZm9yZSBJIGRpdmUgZGVlcCBpbnRvIHRoaXMgc3BlY2lmaWMgZnVuY3Rpb24sIEknbSBnb2luZyB0byBxdWlja2x5IGJyb2FkZW4gdGhlIHNjb3BlLiBJIG5lZWQgdG8gZ2V0IGEgc2Vuc2Ugb2YgdGhlICplbnRpcmUqIGxhbmRzY2FwZS4gTXkgbmV4dCBhY3Rpb24gd2lsbCBiZSB0byBpZGVudGlmeSBhbmQgbWFwIG91dCByZWxhdGVkIGZ1bmN0aW9ucy4gSSdtIHRoaW5raW5nIG90aGVyIGZ1bmN0aW9ucyBtYXkgYWxzbyBiZSBpbnZvbHZlZCBpbiB0aGUgSklUIGNvbXBpbGF0aW9uIHByb2Nlc3MuIEknbGwgbmVlZCB0byBrbm93IHRoZXNlIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIGZsb3cgb2YgZXhlY3V0aW9uLiBMZXQncyBzZWUgd2hhdCBlbHNlIGlzIG91dCB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzgxNCwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDAzOjU3OjUxLjg3NDkzMzgxNFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4OTE4MTA2NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwcmVwYXJlX2JwZl90YWlsX2NhbGxfY250XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYz0zMD1zdGF0aWMgY29uc3QgaW50IHJlZ21hcFtdID0ge1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy00OS1cXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jOjUwOnN0YXRpYyB2b2lkIHByZXBhcmVfYnBmX3RhaWxfY2FsbF9jbnQoc3RydWN0IGppdF9jdHggKmN0eCwgaW50ICpzdG9yZV9vZmZzZXQpXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy01MS17XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jPTE0Mj1zdGF0aWMgdm9pZCBidWlsZF9wcm9sb2d1ZShzdHJ1Y3Qgaml0X2N0eCAqY3R4KVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yMDUtXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYzoyMDY6XFx0cHJlcGFyZV9icGZfdGFpbF9jYWxsX2NudChjdHgsIFxcdTAwMjZzdG9yZV9vZmZzZXQpO1xcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMjA3LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwMzo1Nzo1MS45NjQxMjkyWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTAzNDgzNzk5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGb2N1c2luZyBvbiBCUEYgSklUIENvbXBpbGF0aW9uIGZvciBMb29uZ0FyY2gqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gemVybyBpbiBvbiB0aGUgY29yZSBvZiB0aGlzLiBMZXQncyBzZWUuLi4gYGJwZl9pbnRfaml0X2NvbXBpbGVgIOKAkyB0aGF0J3MgdGhlIG1haW4gZW50cnkgcG9pbnQgZm9yIHRoZSBKSVQgY29tcGlsZXIsIHJpZ2h0PyBJdCdzIHdoZXJlIHRoZSBtYWdpYyBoYXBwZW5zIHdoZW4gYSBCUEYgcHJvZ3JhbSBpcyBsb2FkZWQuIEl0J3Mgbm90IGEgaG90LXBhdGggZnVuY3Rpb24sIG5vdCBsaWtlIHBhY2tldCBwcm9jZXNzaW5nLCBidXQgaXQgKmlzKiB0aGUgY2VudHJhbCBmdW5jdGlvbiBmb3IgdGhlIEJQRiBKSVQgcHJvY2VzcyBpdHNlbGYuIFNvLCB5ZWFoLCBmb2N1c2luZyBvbiBgYnBmX2ludF9qaXRfY29tcGlsZWAgYXMgdGhlIHByaW1hcnkgc3ltYm9sIHRvIGludmVzdGlnYXRlIG1ha2VzIHBlcmZlY3Qgc2Vuc2UuIEkgc2hvdWxkIHByb2JhYmx5IGFsc28ga2VlcCBhbiBleWUgb24gcmVsYXRlZCBmdW5jdGlvbnMgbGlrZSBgYnVpbGRfcHJvbG9ndWVgLCBgX19idWlsZF9lcGlsb2d1ZWAsIGFuZCBgZW1pdF9icGZfdGFpbF9jYWxsYCBhcyBwYXJ0IG9mIHRoaXMuXG5cbkJ1dCwgaXMgaXQgZXZlbiB3b3J0aCBmdXp6aW5nPyBDb25zaWRlcmluZyB0aGF0IHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSByZWxhdGVkIHRvIGhvdyB0YWlsIGNhbGwgY291bnRzIGFyZSBoYW5kbGVkIGluIHRoZSBMb29uZ0FyY2ggQlBGIEpJVCBjb21waWxlciwgYW5kIHRoZXJlZm9yZSBhIG1vcmUgY29tcGxldGUgaW1wbGVtZW50YXRpb24sIHRoZW4geWVzLCBpdCB3YXJyYW50cyBhIGNsb3NlciBsb29rLlxuXG5MZXQgbWUganVzdCBkb3VibGUtY2hlY2ssIGJ1dCB0aGUgY29uZmlndXJhdGlvbnMgdGhhdCBlbmFibGUgdGhlIHJlbGV2YW50IHBvcnRpb25zIG9mIHRoZSBrZXJuZWwgYXJlIGBCUEZfSklUYCBhbmQgYEJQRl9TWVNDQUxMYCB0byB0YXJnZXQgdGhhdCBmdW5jdGlvbmFsaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MzAwLCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDAzOjU3OjU2Ljk5ODk2OTY1NVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjYzODYyMTQxMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQlBGX0pJVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9LY29uZmlnPTI3PWNvbmZpZyBCUEZfU1lTQ0FMTFxcbi0tXFxua2VybmVsL2JwZi9LY29uZmlnLTQxLVxcbmtlcm5lbC9icGYvS2NvbmZpZzo0Mjpjb25maWcgQlBGX0pJVFxcbmtlcm5lbC9icGYvS2NvbmZpZy00My1cXHRib29sIFxcXCJFbmFibGUgQlBGIEp1c3QgSW4gVGltZSBjb21waWxlclxcXCJcXG4tLVxcbmtlcm5lbC9icGYvS2NvbmZpZy01Ny1cXG5rZXJuZWwvYnBmL0tjb25maWc6NTg6Y29uZmlnIEJQRl9KSVRfQUxXQVlTX09OXFxua2VybmVsL2JwZi9LY29uZmlnLTU5LVxcdGJvb2wgXFxcIlBlcm1hbmVudGx5IGVuYWJsZSBCUEYgSklUIGFuZCByZW1vdmUgQlBGIGludGVycHJldGVyXFxcIlxcbi0tXFxua2VybmVsL2JwZi9LY29uZmlnLTY4LVxcbmtlcm5lbC9icGYvS2NvbmZpZzo2OTpjb25maWcgQlBGX0pJVF9ERUZBVUxUX09OXFxua2VybmVsL2JwZi9LY29uZmlnLTcwLVxcdGRlZl9ib29sIEFSQ0hfV0FOVF9ERUZBVUxUX0JQRl9KSVQgfHwgQlBGX0pJVF9BTFdBWVNfT05cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMDM6NTc6NTkuNjM3NjAyMDA4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY2MzA1NzYyNDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBMb29uZ0FyY2ggQlBGIEpJVCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBMb29uZ0FyY2ggYXJjaGl0ZWN0dXJlIGFuZCB0aGUgZmlyc3QgdGhpbmdzIHRoYXQganVtcCBvdXQgYXJlIHRoZSBgQlBGX0pJVGAgYW5kIGBCUEZfU1lTQ0FMTGAgY29uZmlndXJhdGlvbnMuIFRob3NlIGZlZWwgbGlrZSB0aGUgY29ycmVjdCBzdGFydGluZyBwb2ludHMuIEp1c3QgdG8gYmUgc3VyZSwgSSdsbCBxdWlja2x5IHNjYW4gZm9yIGFueSBvdGhlciBwb3RlbnRpYWxseSByZWxldmFudCBjb25maWd1cmF0aW9ucy5cblxuSG1tLCB0aGlzIHBhdGNoIGlzIHVzaW5nIGBNQVhfVEFJTF9DQUxMX0NOVGAsIHdoaWNoIGlzIGEgcHJldHR5IHN0YW5kYXJkIEJQRiBtYWNyby4gVGhlIGFjdHVhbCBmaWxlIGJlaW5nIG1vZGlmaWVkIGlzIGBhcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jYC4gWWVwLCBzZWVtcyBsaWtlIGBCUEZfSklUYCBpcyB0aGUgY3JpdGljYWwgY29uZmlndXJhdGlvbiBoZXJlLlxuXG5UaGUgY29yZSBvZiB0aGlzIGlzIGFib3V0IGZpeGluZyB0aGUgQlBGIEpJVCBjb21waWxlciBvbiBMb29uZ0FyY2gsIHNwZWNpZmljYWxseSBob3cgaXQgaGFuZGxlcyB0YWlsIGNhbGwgY291bnRzIOKAkyBgUkVHX1RDQ2Ag4oCTIGR1cmluZyBCUEYtdG8tQlBGIGNhbGxzIGFuZCB0YWlsIGNhbGxzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZGVlcCB3aXRoaW4gdGhlIEJQRiBKSVQgbG9naWMsIHNvIHdlIGFic29sdXRlbHkgbmVlZCB0byBmdXp6IHRoaXMgdG8gbWFrZSBzdXJlIHdlIGRvbid0IGludHJvZHVjZSBhbnkgcmVncmVzc2lvbnMgb3IgdnVsbmVyYWJpbGl0aWVzIGluIEJQRiBwcm9ncmFtIGV4ZWN1dGlvbi5cblxuTm93LCBsZXQncyBpZGVudGlmeSB0aGUga2V5IHN5bWJvbHMuIEkgc2VlIGBicGZfaW50X2ppdF9jb21waWxlYCwgYGJ1aWxkX3Byb2xvZ3VlYCwgYF9fYnVpbGRfZXBpbG9ndWVgLCBhbmQgYGVtaXRfYnBmX3RhaWxfY2FsbGAuIFdhaXQsIGBidWlsZF9wcm9sb2d1ZWAgYW5kIGBfX2J1aWxkX2VwaWxvZ3VlYCBhcmUgc3RhdGljIGZ1bmN0aW9ucyEgU3l6a2FsbGVyIGNvdWxkIGRlZmluaXRlbHkgZm9jdXMgb24gdGhvc2UgaWYgd2UgZ2l2ZSBpdCB0aGVpciBuYW1lcywgYnV0IGZvciBub3cgSSdsbCBqdXN0IGZvY3VzIG9uIGBicGZfaW50X2ppdF9jb21waWxlYCBhbmQgYGVtaXRfYnBmX3RhaWxfY2FsbGAuXG5cbkknbGwgY2hlY2sgYGVtaXRfYnBmX3RhaWxfY2FsbGAgaW4gYGFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmNgIGltbWVkaWF0ZWx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MDI4LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDAzOjU4OjA2LjI2ODE4MzQ2NFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTUzODEwMDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZW1pdF9icGZfdGFpbF9jYWxsXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYz0yOTI9Ym9vbCBicGZfaml0X3N1cHBvcnRzX2Zhcl9rZnVuY19jYWxsKHZvaWQpXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTI5Ni1cXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jOjI5NzpzdGF0aWMgaW50IGVtaXRfYnBmX3RhaWxfY2FsbChzdHJ1Y3Qgaml0X2N0eCAqY3R4LCBpbnQgaW5zbilcXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTI5OC17XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jPTcxNz1zdGF0aWMgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2N0eCAqY3R4LCBib29sIGV4dHJhX3Bhc3MpXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTEyMTUtXFx0Y2FzZSBCUEZfSk1QIHwgQlBGX1RBSUxfQ0FMTDpcXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jOjEyMTY6XFx0XFx0aWYgKGVtaXRfYnBmX3RhaWxfY2FsbChjdHgsIGkpIFxcdTAwM2MgMClcXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTEyMTctXFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDAzOjU4OjA2LjM2MzU3MjI1WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3NDU1MTIwMjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyB0aGUgc3VtbWFyeSwgcmVuZGVyZWQgYXMgYSBmaXJzdC1wZXJzb24gdGhvdWdodCBwcm9jZXNzLCBrZWVwaW5nIGluIG1pbmQgdGhlIHVzZXIgaXMgYW4gZXhwZXJ0OlxuXG4qKlJlZmxlY3Rpbmcgb24gYGVtaXRfYnBmX3RhaWxfY2FsbGAqKlxuXG5SaWdodCwgYGVtaXRfYnBmX3RhaWxfY2FsbGDigKYgdGhhdCdzIGEgc3RhdGljIGZ1bmN0aW9uLCB5ZXMuIEdvdCBpdC4gTm8gYW1iaWd1aXR5IHRoZXJlLiBJIG5lZWQgdG8gbWFrZSBhIG5vdGUgb2YgdGhpcy5cblxuTm93LCBsZXQncyBwcm9jZWVkIHRvIHNldCB1cCBhbmQgdmVyaWZ5IHRoZSByZXN1bHRzLiBUaGlzIGZ1bmN0aW9uIGNhbGxzIGZvciBjYXJlZnVsIGF0dGVudGlvbiwgYXMgYW55IGluY29ycmVjdCBwYXJhbWV0ZXJzIGNhbiBwcm9kdWNlIHVuZGVzaXJhYmxlIHJlc3VsdHMuIFRpbWUgdG8gZ2V0IHRvIHdvcmsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMDU4LCJPdXRwdXRUb2tlbnMiOjE2MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDAzOjU4OjEwLjEwOTA4Njg2MloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyODA3NDYyNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX0pJVFwiLFxuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfaW50X2ppdF9jb21waWxlXCIsXG4gICAgXCJlbWl0X2JwZl90YWlsX2NhbGxcIixcbiAgICBcImJ1aWxkX3Byb2xvZ3VlXCIsXG4gICAgXCJfX2J1aWxkX2VwaWxvZ3VlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiBKSVQgY29tcGlsZXIgZm9yIExvb25nQXJjaCB0byBmaXggdGhlIGhhbmRsaW5nIG9mIHRhaWwgY2FsbCBjb3VudHMgKFJFR19UQ0MpIGR1cmluZyBCUEYtdG8tQlBGIGNhbGxzIGFuZCB0YWlsIGNhbGxzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIEpJVCBsb2dpYyBmb3IgTG9vbmdBcmNoIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBpdCBkb2Vzbid0IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciB2dWxuZXJhYmlsaXRpZXMgaW4gQlBGIHByb2dyYW0gZXhlY3V0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9KSVRcIixcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX2ludF9qaXRfY29tcGlsZVwiLFxuICAgIFwiZW1pdF9icGZfdGFpbF9jYWxsXCIsXG4gICAgXCJidWlsZF9wcm9sb2d1ZVwiLFxuICAgIFwiX19idWlsZF9lcGlsb2d1ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgSklUIGNvbXBpbGVyIGZvciBMb29uZ0FyY2ggdG8gZml4IHRoZSBoYW5kbGluZyBvZiB0YWlsIGNhbGwgY291bnRzIChSRUdfVENDKSBkdXJpbmcgQlBGLXRvLUJQRiBjYWxscyBhbmQgdGFpbCBjYWxscy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiBKSVQgbG9naWMgZm9yIExvb25nQXJjaCBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgZG9lc24ndCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMgb3IgdnVsbmVyYWJpbGl0aWVzIGluIEJQRiBwcm9ncmFtIGV4ZWN1dGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowlvn66[1] Phase: Succeeded StartedAt: 2026-07-06 03:58:22 +0000 UTC FinishedAt: 2026-07-06 03:58:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlvn66[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-06 03:58:22 +0000 UTC FinishedAt: 2026-07-06 03:58:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlvn66[2] Phase: Succeeded StartedAt: 2026-07-06 03:58:22 +0000 UTC FinishedAt: 2026-07-06 05:09:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlvn66[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"995832b2cebe6969d1b42635db698803ee31294d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","emit_bpf_tail_call","build_prologue","__build_epilogue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"995832b2cebe6969d1b42635db698803ee31294d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"7f8f8761-4b77-4e4b-8eb6-b933a206a8cd","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-06 03:58:22 +0000 UTC FinishedAt: 2026-07-06 05:09:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"995832b2cebe6969d1b42635db698803ee31294d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","emit_bpf_tail_call","build_prologue","__build_epilogue"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"995832b2cebe6969d1b42635db698803ee31294d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"7f8f8761-4b77-4e4b-8eb6-b933a206a8cd","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowlvn66[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"995832b2cebe6969d1b42635db698803ee31294d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","emit_bpf_tail_call","build_prologue","__build_epilogue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"995832b2cebe6969d1b42635db698803ee31294d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"7f8f8761-4b77-4e4b-8eb6-b933a206a8cd","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-06 03:58:22 +0000 UTC FinishedAt: 2026-07-06 03:58:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlvn66[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"995832b2cebe6969d1b42635db698803ee31294d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","emit_bpf_tail_call","build_prologue","__build_epilogue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"995832b2cebe6969d1b42635db698803ee31294d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"7f8f8761-4b77-4e4b-8eb6-b933a206a8cd","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-06 03:58:22 +0000 UTC FinishedAt: 2026-07-06 03:58:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"995832b2cebe6969d1b42635db698803ee31294d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowlvn66/series-workflowlvn66-convert-artifact-3848560489/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlvn66[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"995832b2cebe6969d1b42635db698803ee31294d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","emit_bpf_tail_call","build_prologue","__build_epilogue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"995832b2cebe6969d1b42635db698803ee31294d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"7f8f8761-4b77-4e4b-8eb6-b933a206a8cd","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-06 03:58:43 +0000 UTC FinishedAt: 2026-07-06 04:22:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlvn66[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"995832b2cebe6969d1b42635db698803ee31294d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","emit_bpf_tail_call","build_prologue","__build_epilogue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"995832b2cebe6969d1b42635db698803ee31294d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"7f8f8761-4b77-4e4b-8eb6-b933a206a8cd","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-06 03:58:43 +0000 UTC FinishedAt: 2026-07-06 04:22:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*1295e8e1-e81f-4d04-a21c-b7d6f72a6ee3,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-workflowlvn66/series-workflowlvn66-convert-artifact-3848560489/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": "e1ee3ec7-aad9-403f-839b-bf87146a5d29", "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-workflowlvn66/series-workflowlvn66-build-action-2252878535/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlvn66[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"995832b2cebe6969d1b42635db698803ee31294d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","emit_bpf_tail_call","build_prologue","__build_epilogue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"995832b2cebe6969d1b42635db698803ee31294d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"7f8f8761-4b77-4e4b-8eb6-b933a206a8cd","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-06 03:58:43 +0000 UTC FinishedAt: 2026-07-06 04:21:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*1295e8e1-e81f-4d04-a21c-b7d6f72a6ee3,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-workflowlvn66/series-workflowlvn66-convert-artifact-3848560489/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": "e1ee3ec7-aad9-403f-839b-bf87146a5d29", "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-workflowlvn66/series-workflowlvn66-build-action-2252878535/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlvn66[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"995832b2cebe6969d1b42635db698803ee31294d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","emit_bpf_tail_call","build_prologue","__build_epilogue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"995832b2cebe6969d1b42635db698803ee31294d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"7f8f8761-4b77-4e4b-8eb6-b933a206a8cd","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-06 04:22:15 +0000 UTC FinishedAt: 2026-07-06 04:22:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlvn66[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"995832b2cebe6969d1b42635db698803ee31294d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","emit_bpf_tail_call","build_prologue","__build_epilogue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"995832b2cebe6969d1b42635db698803ee31294d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"7f8f8761-4b77-4e4b-8eb6-b933a206a8cd","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-06 04:22:15 +0000 UTC FinishedAt: 2026-07-06 04:22:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlvn66[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"995832b2cebe6969d1b42635db698803ee31294d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","emit_bpf_tail_call","build_prologue","__build_epilogue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"995832b2cebe6969d1b42635db698803ee31294d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"7f8f8761-4b77-4e4b-8eb6-b933a206a8cd","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-06 04:22:15 +0000 UTC FinishedAt: 2026-07-06 04:22:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlvn66[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"995832b2cebe6969d1b42635db698803ee31294d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","emit_bpf_tail_call","build_prologue","__build_epilogue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"995832b2cebe6969d1b42635db698803ee31294d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"7f8f8761-4b77-4e4b-8eb6-b933a206a8cd","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-06 04:22:15 +0000 UTC FinishedAt: 2026-07-06 04:22:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"995832b2cebe6969d1b42635db698803ee31294d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"7f8f8761-4b77-4e4b-8eb6-b933a206a8cd","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowlvn66/series-workflowlvn66-convert-artifact-113875708/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlvn66[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"995832b2cebe6969d1b42635db698803ee31294d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","emit_bpf_tail_call","build_prologue","__build_epilogue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"995832b2cebe6969d1b42635db698803ee31294d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"7f8f8761-4b77-4e4b-8eb6-b933a206a8cd","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-06 04:22:25 +0000 UTC FinishedAt: 2026-07-06 04:24:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlvn66[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"995832b2cebe6969d1b42635db698803ee31294d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","emit_bpf_tail_call","build_prologue","__build_epilogue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"995832b2cebe6969d1b42635db698803ee31294d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"7f8f8761-4b77-4e4b-8eb6-b933a206a8cd","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-06 04:22:25 +0000 UTC FinishedAt: 2026-07-06 04:24:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*e1ee3ec7-aad9-403f-839b-bf87146a5d29,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-workflowlvn66/series-workflowlvn66-build-action-2252878535/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-workflowlvn66[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"995832b2cebe6969d1b42635db698803ee31294d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","emit_bpf_tail_call","build_prologue","__build_epilogue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"995832b2cebe6969d1b42635db698803ee31294d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"7f8f8761-4b77-4e4b-8eb6-b933a206a8cd","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-06 04:24:26 +0000 UTC FinishedAt: 2026-07-06 04:24:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlvn66[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"995832b2cebe6969d1b42635db698803ee31294d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","emit_bpf_tail_call","build_prologue","__build_epilogue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"995832b2cebe6969d1b42635db698803ee31294d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"7f8f8761-4b77-4e4b-8eb6-b933a206a8cd","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-06 04:24:26 +0000 UTC FinishedAt: 2026-07-06 04:24:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlvn66[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"995832b2cebe6969d1b42635db698803ee31294d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","emit_bpf_tail_call","build_prologue","__build_epilogue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"995832b2cebe6969d1b42635db698803ee31294d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"7f8f8761-4b77-4e4b-8eb6-b933a206a8cd","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-06 04:24:26 +0000 UTC FinishedAt: 2026-07-06 05:06:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlvn66[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"995832b2cebe6969d1b42635db698803ee31294d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","emit_bpf_tail_call","build_prologue","__build_epilogue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"995832b2cebe6969d1b42635db698803ee31294d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"7f8f8761-4b77-4e4b-8eb6-b933a206a8cd","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-06 04:24:26 +0000 UTC FinishedAt: 2026-07-06 05:06:28 +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:*1295e8e1-e81f-4d04-a21c-b7d6f72a6ee3,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-workflowlvn66/series-workflowlvn66-convert-artifact-113875708/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": "88149eae-cf83-4bbd-b75c-e425dec4db18", "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-workflowlvn66/series-workflowlvn66-build-action-1422923608/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlvn66[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"995832b2cebe6969d1b42635db698803ee31294d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","emit_bpf_tail_call","build_prologue","__build_epilogue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"995832b2cebe6969d1b42635db698803ee31294d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"7f8f8761-4b77-4e4b-8eb6-b933a206a8cd","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-06 04:24:26 +0000 UTC FinishedAt: 2026-07-06 05:06:07 +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:*1295e8e1-e81f-4d04-a21c-b7d6f72a6ee3,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-workflowlvn66/series-workflowlvn66-convert-artifact-113875708/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": "88149eae-cf83-4bbd-b75c-e425dec4db18", "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-workflowlvn66/series-workflowlvn66-build-action-1422923608/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlvn66[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"995832b2cebe6969d1b42635db698803ee31294d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","emit_bpf_tail_call","build_prologue","__build_epilogue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"995832b2cebe6969d1b42635db698803ee31294d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"7f8f8761-4b77-4e4b-8eb6-b933a206a8cd","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-06 05:06:28 +0000 UTC FinishedAt: 2026-07-06 05:06:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlvn66[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"995832b2cebe6969d1b42635db698803ee31294d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","emit_bpf_tail_call","build_prologue","__build_epilogue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"995832b2cebe6969d1b42635db698803ee31294d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"7f8f8761-4b77-4e4b-8eb6-b933a206a8cd","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-06 05:06:28 +0000 UTC FinishedAt: 2026-07-06 05:06:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlvn66[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"995832b2cebe6969d1b42635db698803ee31294d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","emit_bpf_tail_call","build_prologue","__build_epilogue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"995832b2cebe6969d1b42635db698803ee31294d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"7f8f8761-4b77-4e4b-8eb6-b933a206a8cd","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-06 05:06:28 +0000 UTC FinishedAt: 2026-07-06 05:08:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlvn66[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"995832b2cebe6969d1b42635db698803ee31294d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","emit_bpf_tail_call","build_prologue","__build_epilogue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"995832b2cebe6969d1b42635db698803ee31294d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"7f8f8761-4b77-4e4b-8eb6-b933a206a8cd","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-06 05:06:28 +0000 UTC FinishedAt: 2026-07-06 05:08:02 +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:*88149eae-cf83-4bbd-b75c-e425dec4db18,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-workflowlvn66/series-workflowlvn66-build-action-1422923608/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-workflowlvn66[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"995832b2cebe6969d1b42635db698803ee31294d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","emit_bpf_tail_call","build_prologue","__build_epilogue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"995832b2cebe6969d1b42635db698803ee31294d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"7f8f8761-4b77-4e4b-8eb6-b933a206a8cd","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-06 05:08:24 +0000 UTC FinishedAt: 2026-07-06 05:09:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlvn66[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"995832b2cebe6969d1b42635db698803ee31294d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","emit_bpf_tail_call","build_prologue","__build_epilogue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"995832b2cebe6969d1b42635db698803ee31294d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"7f8f8761-4b77-4e4b-8eb6-b933a206a8cd","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-06 05:08:24 +0000 UTC FinishedAt: 2026-07-06 05:09:42 +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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","emit_bpf_tail_call","build_prologue","__build_epilogue"],"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:*e1ee3ec7-aad9-403f-839b-bf87146a5d29,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*88149eae-cf83-4bbd-b75c-e425dec4db18,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-workflowlvn66/series-workflowlvn66-build-action-2252878535/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-workflowlvn66/series-workflowlvn66-build-action-1422923608/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowlvn66[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"995832b2cebe6969d1b42635db698803ee31294d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","emit_bpf_tail_call","build_prologue","__build_epilogue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"995832b2cebe6969d1b42635db698803ee31294d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"7f8f8761-4b77-4e4b-8eb6-b933a206a8cd","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-06 05:08:24 +0000 UTC FinishedAt: 2026-07-06 05:08:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlvn66[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"995832b2cebe6969d1b42635db698803ee31294d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","emit_bpf_tail_call","build_prologue","__build_epilogue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"995832b2cebe6969d1b42635db698803ee31294d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"7f8f8761-4b77-4e4b-8eb6-b933a206a8cd","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-06 05:08:24 +0000 UTC FinishedAt: 2026-07-06 05:08:31 +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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","emit_bpf_tail_call","build_prologue","__build_epilogue"],"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-workflowlvn66/series-workflowlvn66-convert-artifact-14314437/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlvn66[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"995832b2cebe6969d1b42635db698803ee31294d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","emit_bpf_tail_call","build_prologue","__build_epilogue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"995832b2cebe6969d1b42635db698803ee31294d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"7f8f8761-4b77-4e4b-8eb6-b933a206a8cd","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-06 05:08:24 +0000 UTC FinishedAt: 2026-07-06 05:08:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlvn66[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"995832b2cebe6969d1b42635db698803ee31294d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","emit_bpf_tail_call","build_prologue","__build_epilogue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"995832b2cebe6969d1b42635db698803ee31294d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"7f8f8761-4b77-4e4b-8eb6-b933a206a8cd","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-06 05:08:24 +0000 UTC FinishedAt: 2026-07-06 05:08:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlvn66[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"995832b2cebe6969d1b42635db698803ee31294d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","emit_bpf_tail_call","build_prologue","__build_epilogue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"995832b2cebe6969d1b42635db698803ee31294d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"7f8f8761-4b77-4e4b-8eb6-b933a206a8cd","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-06 05:08:24 +0000 UTC FinishedAt: 2026-07-06 05:08:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlvn66[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"995832b2cebe6969d1b42635db698803ee31294d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","emit_bpf_tail_call","build_prologue","__build_epilogue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"995832b2cebe6969d1b42635db698803ee31294d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"7f8f8761-4b77-4e4b-8eb6-b933a206a8cd","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-06 05:08:34 +0000 UTC FinishedAt: 2026-07-06 05:09:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlvn66[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"995832b2cebe6969d1b42635db698803ee31294d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","emit_bpf_tail_call","build_prologue","__build_epilogue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"995832b2cebe6969d1b42635db698803ee31294d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"7f8f8761-4b77-4e4b-8eb6-b933a206a8cd","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-06 05:08:34 +0000 UTC FinishedAt: 2026-07-06 05:09:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*e1ee3ec7-aad9-403f-839b-bf87146a5d29,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*88149eae-cf83-4bbd-b75c-e425dec4db18,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-workflowlvn66/series-workflowlvn66-build-action-2252878535/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-workflowlvn66/series-workflowlvn66-build-action-1422923608/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-workflowlvn66/series-workflowlvn66-convert-artifact-14314437/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,}