Name: series-workflowpkgbc Phase: Succeeded StartedAt: 2026-06-23 06:42:27 +0000 UTC FinishedAt: 2026-06-23 07:47:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpkgbc[0] Phase: Succeeded StartedAt: 2026-06-23 06:42:27 +0000 UTC FinishedAt: 2026-06-23 06:52:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpkgbc[0].run-triage Phase: Succeeded StartedAt: 2026-06-23 06:42:27 +0000 UTC FinishedAt: 2026-06-23 06:52:24 +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": "a975094bf98ca97be9146f9d3b5681a6f9cf5ce3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "HID_BPF" ], "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": "a975094bf98ca97be9146f9d3b5681a6f9cf5ce3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "HID_BPF" ], "series_id": "a1fb4ad0-6efb-4212-8a11-d2f82cedf423" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "hid_bpf_get_data" ], "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+CgkJCTx0ZD4yMDI2LzA2LzIzIDA2OjUxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0hJRF9CUEYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtoaWRfYnBmX2dldF9kYXRhJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIGludGVnZXIgb3ZlcmZsb3cgaW4gdGhlIGhpZF9icGZfZ2V0X2RhdGEgQlBGIGtmdW5jLCB3aGljaCBpcyBleHBvc2VkIHRvIEhJRCBCUEYgcHJvZ3JhbXMuIEZ1enppbmcgdGhpcyBmdW5jdGlvbiBlbnN1cmVzIHRoZSBvdmVyZmxvdyBjaGVjayBjb3JyZWN0bHkgcHJldmVudHMgb3V0LW9mLWJvdW5kcyBhY2Nlc3MuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMDY6NTE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBjODg1YTVlZTBlMWM3MTljMTliZjdmNWM2NDNlNmQ4MGQxODA0ODAxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdW4gMjMgMDY6NTE6NDMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfZGlzcGF0Y2guYyBiL2RyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX2Rpc3BhdGNoLmNcbmluZGV4IGQwMTMwNjU4MDkxYjAyLi41MzZmNmQwMWZkMTRjNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX2Rpc3BhdGNoLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX2Rpc3BhdGNoLmNcbkBAIC0xNyw2ICYjNDM7MTcsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2tmaWZvLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9taW5tYXguaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21vZHVsZS5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L292ZXJmbG93LmhcdTAwM2VcbiAjaW5jbHVkZSBcJiMzNDtoaWRfYnBmX2Rpc3BhdGNoLmhcJiMzNDtcbiBcbiBjb25zdCBzdHJ1Y3QgaGlkX29wcyAqaGlkX29wcztcbkBAIC0yOTYsMTAgJiM0MzsyOTcsMTIgQEAgX19icGZfa2Z1bmMgX191OCAqXG4gaGlkX2JwZl9nZXRfZGF0YShzdHJ1Y3QgaGlkX2JwZl9jdHggKmN0eCwgdW5zaWduZWQgaW50IG9mZnNldCwgY29uc3Qgc2l6ZV90IHJkd3JfYnVmX3NpemUpXG4ge1xuIFx0c3RydWN0IGhpZF9icGZfY3R4X2tlcm4gKmN0eF9rZXJuO1xuJiM0MztcdHNpemVfdCBlbmQ7XG4gXG4gXHRjdHhfa2VybiA9IGNvbnRhaW5lcl9vZihjdHgsIHN0cnVjdCBoaWRfYnBmX2N0eF9rZXJuLCBjdHgpO1xuIFxuLVx0aWYgKHJkd3JfYnVmX3NpemUgJiM0Mzsgb2Zmc2V0IFx1MDAzZSBjdHgtXHUwMDNlYWxsb2NhdGVkX3NpemUpXG4mIzQzO1x0aWYgKGNoZWNrX2FkZF9vdmVyZmxvdyhyZHdyX2J1Zl9zaXplLCBvZmZzZXQsIFx1MDAyNmVuZCkgfHxcbiYjNDM7XHQgICAgZW5kIFx1MDAzZSBjdHgtXHUwMDNlYWxsb2NhdGVkX3NpemUpXG4gXHRcdHJldHVybiBOVUxMO1xuIFxuIFx0cmV0dXJuIGN0eF9rZXJuLVx1MDAzZWRhdGEgJiM0Mzsgb2Zmc2V0O1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9NYWtlZmlsZSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9NYWtlZmlsZVxuaW5kZXggOTYwNzFiNDgwMGU4MmEuLjJmNDIzZGU4MzE0NzNhIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL01ha2VmaWxlXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvTWFrZWZpbGVcbkBAIC0yNCw3ICYjNDM7MjQsNyBAQCBDWFggPz0gJChDUk9TU19DT01QSUxFKWcmIzQzOyYjNDM7XG4gXG4gSE9TVFBLR19DT05GSUcgOj0gcGtnLWNvbmZpZ1xuIFxuLUNGTEFHUyAmIzQzOz0gLWcgLU8wIC1yZHluYW1pYyAtV2FsbCAtV2Vycm9yIC1JJChPVVRQVVQpXG4mIzQzO0NGTEFHUyAmIzQzOz0gLWcgLU8wIC1yZHluYW1pYyAtV2FsbCAtV2Vycm9yIC1JJChPVVRQVVQpICQoS0hEUl9JTkNMVURFUylcbiBDRkxBR1MgJiM0Mzs9IC1JJChPVVRQVVQpL3Rvb2xzL2luY2x1ZGVcbiBcbiBMRExJQlMgJiM0Mzs9IC1sZWxmIC1seiAtbHJ0IC1scHRocmVhZFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9oaWRfYnBmLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvaGlkX2JwZi5jXG5pbmRleCAxZTk3OWZiMzU0MmJhYi4uYjg1MTMzOTMwOGMyMTQgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvaGlkX2JwZi5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvaGlkX2JwZi5jXG5AQCAtODYsNiAmIzQzOzg2LDIwIEBAIHN0YXRpYyB2b2lkIGxvYWRfcHJvZ3JhbXMoY29uc3Qgc3RydWN0IHRlc3RfcHJvZ3JhbSBwcm9ncmFtc1tdLFxuIFx0c2VsZi1cdTAwM2Vza2VsID0gaGlkX19vcGVuKCk7XG4gXHRBU1NFUlRfT0tfUFRSKHNlbGYtXHUwMDNlc2tlbCkgVEVBUkRPV05fTE9HKFwmIzM0O0Vycm9yIHdoaWxlIGNhbGxpbmcgaGlkX19vcGVuXCYjMzQ7KTtcbiBcbiYjNDM7XHQvKlxuJiM0MztcdCAqIERpc2FibGUgYWxsIHN0cnVjdF9vcHMgbWFwcyBieSBkZWZhdWx0IHNvIGxpYmJwZiBkb2VzIG5vdCBhdXRvbG9hZFxuJiM0MztcdCAqIHByb2dyYW1zIHJlZmVyZW5jZWQgYnkgbWFwcyB0aGF0IGFyZSB1bnJlbGF0ZWQgdG8gdGhlIGN1cnJlbnQgdGVzdC5cbiYjNDM7XHQgKi9cbiYjNDM7XHRicGZfb2JqZWN0X19mb3JfZWFjaF9tYXAoaXRlcl9tYXAsICpzZWxmLVx1MDAzZXNrZWwtXHUwMDNlc2tlbGV0b24tXHUwMDNlb2JqKSB7XG4mIzQzO1x0XHRpZiAoYnBmX21hcF9fdHlwZShpdGVyX21hcCkgPT0gQlBGX01BUF9UWVBFX1NUUlVDVF9PUFMpIHtcbiYjNDM7XHRcdFx0ZXJyID0gYnBmX21hcF9fc2V0X2F1dG9jcmVhdGUoaXRlcl9tYXAsIGZhbHNlKTtcbiYjNDM7XHRcdFx0QVNTRVJUX09LKGVycikgVEhfTE9HKFwmIzM0O2NhbiBub3QgZGlzYWJsZSBzdHJ1Y3Rfb3BzIG1hcCAmIzM5OyVzJiMzOTtcJiMzNDssXG4mIzQzO1x0XHRcdFx0XHQgICAgICBicGZfbWFwX19uYW1lKGl0ZXJfbWFwKSk7XG4mIzQzO1x0XHR9XG4mIzQzO1xuJiM0MztcdFx0YnBmX21hcF9fc2V0X2F1dG9hdHRhY2goaXRlcl9tYXAsIGZhbHNlKTtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0Zm9yIChpbnQgaSA9IDA7IGkgXHUwMDNjIHByb2dzX2NvdW50OyBpJiM0MzsmIzQzOykge1xuIFx0XHRzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2c7XG4gXHRcdHN0cnVjdCBicGZfbWFwICptYXA7XG5AQCAtMTAyLDYgJiM0MzsxMTYsMTAgQEAgc3RhdGljIHZvaWQgbG9hZF9wcm9ncmFtcyhjb25zdCBzdHJ1Y3QgdGVzdF9wcm9ncmFtIHByb2dyYW1zW10sXG4gXHRcdEFTU0VSVF9PS19QVFIobWFwKSBUSF9MT0coXCYjMzQ7Y2FuIG5vdCBmaW5kIHN0cnVjdF9vcHMgYnkgbmFtZSAmIzM5OyVzJiMzOTtcJiMzNDssXG4gXHRcdFx0XHRcdCAgcHJvZ3JhbXNbaV0ubmFtZSAmIzQzOyA0KTtcbiBcbiYjNDM7XHRcdGVyciA9IGJwZl9tYXBfX3NldF9hdXRvY3JlYXRlKG1hcCwgdHJ1ZSk7XG4mIzQzO1x0XHRBU1NFUlRfT0soZXJyKSBUSF9MT0coXCYjMzQ7Y2FuIG5vdCBlbmFibGUgc3RydWN0X29wcyBtYXAgJiMzOTslcyYjMzk7XCYjMzQ7LFxuJiM0MztcdFx0XHRcdCAgICAgIHByb2dyYW1zW2ldLm5hbWUgJiM0MzsgNCk7XG4mIzQzO1xuIFx0XHQvKiBoaWRfaWQgaXMgdGhlIGZpcnN0IGZpZWxkIG9mIHN0cnVjdCBoaWRfYnBmX29wcyAqL1xuIFx0XHRvcHNfaGlkX2lkID0gYnBmX21hcF9faW5pdGlhbF92YWx1ZShtYXAsIE5VTEwpO1xuIFx0XHRBU1NFUlRfT0tfUFRSKG9wc19oaWRfaWQpIFRIX0xPRyhcJiMzNDt1bmFibGUgdG8gcmV0cmlldmUgc3RydWN0X29wcyBkYXRhXCYjMzQ7KTtcbkBAIC0xMDksMTMgJiM0MzsxMjcsNiBAQCBzdGF0aWMgdm9pZCBsb2FkX3Byb2dyYW1zKGNvbnN0IHN0cnVjdCB0ZXN0X3Byb2dyYW0gcHJvZ3JhbXNbXSxcbiBcdFx0Km9wc19oaWRfaWQgPSBzZWxmLVx1MDAzZWhpZC5oaWRfaWQ7XG4gXHR9XG4gXG4tXHQvKiB3ZSBkaXNhYmxlIHRoZSBhdXRvLWF0dGFjaCBmZWF0dXJlIG9mIGFsbCBtYXBzIGJlY2F1c2Ugd2Vcbi1cdCAqIG9ubHkgd2FudCB0aGUgdGVzdGVkIG9uZSB0byBiZSBtYW51YWxseSBhdHRhY2hlZCBpbiB0aGUgbmV4dFxuLVx0ICogY2FsbCB0byBicGZfbWFwX19hdHRhY2hfc3RydWN0X29wcygpXG4tXHQgKi9cbi1cdGJwZl9vYmplY3RfX2Zvcl9lYWNoX21hcChpdGVyX21hcCwgKnNlbGYtXHUwMDNlc2tlbC1cdTAwM2Vza2VsZXRvbi1cdTAwM2VvYmopXG4tXHRcdGJwZl9tYXBfX3NldF9hdXRvYXR0YWNoKGl0ZXJfbWFwLCBmYWxzZSk7XG4tXG4gXHRlcnIgPSBoaWRfX2xvYWQoc2VsZi1cdTAwM2Vza2VsKTtcbiBcdEFTU0VSVF9PSyhlcnIpIFRIX0xPRyhcJiMzNDtoaWRfc2tlbF9sb2FkIGZhaWxlZDogJWRcJiMzNDssIGVycik7XG4gXG5AQCAtODg3LDYgJiM0Mzs4OTgsMTcgQEAgVEVTVF9GKGhpZF9icGYsIHRlc3RfcmRlc2NfZml4dXApXG4gXHRBU1NFUlRfRVEocnB0X2Rlc2MudmFsdWVbNF0sIDB4NDIpO1xuIH1cbiBcbiYjNDM7VEVTVF9GKGhpZF9icGYsIHRlc3RfcmRlc2NfZml4dXBfZ2V0X2RhdGFfb3ZlcmZsb3cpXG4mIzQzO3tcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgdGVzdF9wcm9ncmFtIHByb2dzW10gPSB7XG4mIzQzO1x0XHR7IC5uYW1lID0gXCYjMzQ7aGlkX3JkZXNjX2ZpeHVwX2dldF9kYXRhX292ZXJmbG93XCYjMzQ7IH0sXG4mIzQzO1x0fTtcbiYjNDM7XG4mIzQzO1x0TE9BRF9QUk9HUkFNUyhwcm9ncyk7XG4mIzQzO1xuJiM0MztcdEFTU0VSVF9FUShzZWxmLVx1MDAzZXNrZWwtXHUwMDNlYnNzLVx1MDAzZWdldF9kYXRhX292ZXJmbG93X2NoZWNrLCAxKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW50IGxpYmJwZl9wcmludF9mbihlbnVtIGxpYmJwZl9wcmludF9sZXZlbCBsZXZlbCxcbiBcdFx0XHQgICBjb25zdCBjaGFyICpmb3JtYXQsIHZhX2xpc3QgYXJncylcbiB7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jXG5pbmRleCA1ZWNjODQ1ZWY3OTIxNi4uYjIxZmJiMTNjOTI2ZjggMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuY1xuQEAgLTEzLDYgJiM0MzsxMyw3IEBAIHN0cnVjdCBhdHRhY2hfcHJvZ19hcmdzIHtcbiBcbiBfX3U2NCBjYWxsYmFja19jaGVjayA9IDUyO1xuIF9fdTY0IGNhbGxiYWNrMl9jaGVjayA9IDUyO1xuJiM0MztfX3U2NCBnZXRfZGF0YV9vdmVyZmxvd19jaGVjaztcbiBcbiBTRUMoXCYjMzQ7P3N0cnVjdF9vcHMvaGlkX2RldmljZV9ldmVudFwmIzM0OylcbiBpbnQgQlBGX1BST0coaGlkX2ZpcnN0X2V2ZW50LCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhpZF9jdHgsIGVudW0gaGlkX3JlcG9ydF90eXBlIHR5cGUpXG5AQCAtMjQwLDYgJiM0MzsyNDEsMjAgQEAgc3RydWN0IGhpZF9icGZfb3BzIHJkZXNjX2ZpeHVwID0ge1xuIFx0LmhpZF9yZGVzY19maXh1cCA9ICh2b2lkICopaGlkX3JkZXNjX2ZpeHVwLFxuIH07XG4gXG4mIzQzO1NFQyhcJiMzNDs/c3RydWN0X29wcy5zL2hpZF9yZGVzY19maXh1cFwmIzM0OylcbiYjNDM7aW50IEJQRl9QUk9HKGhpZF9yZGVzY19maXh1cF9nZXRfZGF0YV9vdmVyZmxvdywgc3RydWN0IGhpZF9icGZfY3R4ICpoaWRfY3R4KVxuJiM0Mzt7XG4mIzQzO1x0aWYgKCFoaWRfYnBmX2dldF9kYXRhKGhpZF9jdHgsIDIgLyogb2Zmc2V0ICovLCB+MFVMTCAvKiBzaXplICovKSlcbiYjNDM7XHRcdGdldF9kYXRhX292ZXJmbG93X2NoZWNrID0gMTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO1NFQyhcJiMzNDsuc3RydWN0X29wcy5saW5rXCYjMzQ7KVxuJiM0MztzdHJ1Y3QgaGlkX2JwZl9vcHMgcmRlc2NfZml4dXBfZ2V0X2RhdGFfb3ZlcmZsb3cgPSB7XG4mIzQzO1x0LmhpZF9yZGVzY19maXh1cCA9ICh2b2lkICopaGlkX3JkZXNjX2ZpeHVwX2dldF9kYXRhX292ZXJmbG93LFxuJiM0Mzt9O1xuJiM0MztcbiBTRUMoXCYjMzQ7P3N0cnVjdF9vcHMvaGlkX2RldmljZV9ldmVudFwmIzM0OylcbiBpbnQgQlBGX1BST0coaGlkX3Rlc3RfaW5zZXJ0MSwgc3RydWN0IGhpZF9icGZfY3R4ICpoaWRfY3R4LCBlbnVtIGhpZF9yZXBvcnRfdHlwZSB0eXBlKVxuIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAwNjo1MTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtISURfQlBGJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aGlkX2JwZl9nZXRfZGF0YSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBpbnRlZ2VyIG92ZXJmbG93IGluIHRoZSBoaWRfYnBmX2dldF9kYXRhIEJQRiBrZnVuYywgd2hpY2ggaXMgZXhwb3NlZCB0byBISUQgQlBGIHByb2dyYW1zLiBGdXp6aW5nIHRoaXMgZnVuY3Rpb24gZW5zdXJlcyB0aGUgb3ZlcmZsb3cgY2hlY2sgY29ycmVjdGx5IHByZXZlbnRzIG91dC1vZi1ib3VuZHMgYWNjZXNzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBjODg1YTVlZTBlMWM3MTljMTliZjdmNWM2NDNlNmQ4MGQxODA0ODAxCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBKdW4gMjMgMDY6NTE6NDMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9kaXNwYXRjaC5jIGIvZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfZGlzcGF0Y2guYwppbmRleCBkMDEzMDY1ODA5MWIwMi4uNTM2ZjZkMDFmZDE0YzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX2Rpc3BhdGNoLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfZGlzcGF0Y2guYwpAQCAtMTcsNiAmIzQzOzE3LDcgQEAKICNpbmNsdWRlICZsdDtsaW51eC9rZmlmby5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L21pbm1heC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L21vZHVsZS5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9vdmVyZmxvdy5oJmd0OwogI2luY2x1ZGUgJiMzNDtoaWRfYnBmX2Rpc3BhdGNoLmgmIzM0OwogCiBjb25zdCBzdHJ1Y3QgaGlkX29wcyAqaGlkX29wczsKQEAgLTI5NiwxMCAmIzQzOzI5NywxMiBAQCBfX2JwZl9rZnVuYyBfX3U4ICoKIGhpZF9icGZfZ2V0X2RhdGEoc3RydWN0IGhpZF9icGZfY3R4ICpjdHgsIHVuc2lnbmVkIGludCBvZmZzZXQsIGNvbnN0IHNpemVfdCByZHdyX2J1Zl9zaXplKQogewogCXN0cnVjdCBoaWRfYnBmX2N0eF9rZXJuICpjdHhfa2VybjsKJiM0MzsJc2l6ZV90IGVuZDsKIAogCWN0eF9rZXJuID0gY29udGFpbmVyX29mKGN0eCwgc3RydWN0IGhpZF9icGZfY3R4X2tlcm4sIGN0eCk7CiAKLQlpZiAocmR3cl9idWZfc2l6ZSAmIzQzOyBvZmZzZXQgJmd0OyBjdHgtJmd0O2FsbG9jYXRlZF9zaXplKQomIzQzOwlpZiAoY2hlY2tfYWRkX292ZXJmbG93KHJkd3JfYnVmX3NpemUsIG9mZnNldCwgJmFtcDtlbmQpIHx8CiYjNDM7CSAgICBlbmQgJmd0OyBjdHgtJmd0O2FsbG9jYXRlZF9zaXplKQogCQlyZXR1cm4gTlVMTDsKIAogCXJldHVybiBjdHhfa2Vybi0mZ3Q7ZGF0YSAmIzQzOyBvZmZzZXQ7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvTWFrZWZpbGUgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvTWFrZWZpbGUKaW5kZXggOTYwNzFiNDgwMGU4MmEuLjJmNDIzZGU4MzE0NzNhIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvTWFrZWZpbGUKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL01ha2VmaWxlCkBAIC0yNCw3ICYjNDM7MjQsNyBAQCBDWFggPz0gJChDUk9TU19DT01QSUxFKWcmIzQzOyYjNDM7CiAKIEhPU1RQS0dfQ09ORklHIDo9IHBrZy1jb25maWcKIAotQ0ZMQUdTICYjNDM7PSAtZyAtTzAgLXJkeW5hbWljIC1XYWxsIC1XZXJyb3IgLUkkKE9VVFBVVCkKJiM0MztDRkxBR1MgJiM0Mzs9IC1nIC1PMCAtcmR5bmFtaWMgLVdhbGwgLVdlcnJvciAtSSQoT1VUUFVUKSAkKEtIRFJfSU5DTFVERVMpCiBDRkxBR1MgJiM0Mzs9IC1JJChPVVRQVVQpL3Rvb2xzL2luY2x1ZGUKIAogTERMSUJTICYjNDM7PSAtbGVsZiAtbHogLWxydCAtbHB0aHJlYWQKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9oaWRfYnBmLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvaGlkX2JwZi5jCmluZGV4IDFlOTc5ZmIzNTQyYmFiLi5iODUxMzM5MzA4YzIxNCAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL2hpZF9icGYuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvaGlkX2JwZi5jCkBAIC04Niw2ICYjNDM7ODYsMjAgQEAgc3RhdGljIHZvaWQgbG9hZF9wcm9ncmFtcyhjb25zdCBzdHJ1Y3QgdGVzdF9wcm9ncmFtIHByb2dyYW1zW10sCiAJc2VsZi0mZ3Q7c2tlbCA9IGhpZF9fb3BlbigpOwogCUFTU0VSVF9PS19QVFIoc2VsZi0mZ3Q7c2tlbCkgVEVBUkRPV05fTE9HKCYjMzQ7RXJyb3Igd2hpbGUgY2FsbGluZyBoaWRfX29wZW4mIzM0Oyk7CiAKJiM0MzsJLyoKJiM0MzsJICogRGlzYWJsZSBhbGwgc3RydWN0X29wcyBtYXBzIGJ5IGRlZmF1bHQgc28gbGliYnBmIGRvZXMgbm90IGF1dG9sb2FkCiYjNDM7CSAqIHByb2dyYW1zIHJlZmVyZW5jZWQgYnkgbWFwcyB0aGF0IGFyZSB1bnJlbGF0ZWQgdG8gdGhlIGN1cnJlbnQgdGVzdC4KJiM0MzsJICovCiYjNDM7CWJwZl9vYmplY3RfX2Zvcl9lYWNoX21hcChpdGVyX21hcCwgKnNlbGYtJmd0O3NrZWwtJmd0O3NrZWxldG9uLSZndDtvYmopIHsKJiM0MzsJCWlmIChicGZfbWFwX190eXBlKGl0ZXJfbWFwKSA9PSBCUEZfTUFQX1RZUEVfU1RSVUNUX09QUykgewomIzQzOwkJCWVyciA9IGJwZl9tYXBfX3NldF9hdXRvY3JlYXRlKGl0ZXJfbWFwLCBmYWxzZSk7CiYjNDM7CQkJQVNTRVJUX09LKGVycikgVEhfTE9HKCYjMzQ7Y2FuIG5vdCBkaXNhYmxlIHN0cnVjdF9vcHMgbWFwICYjMzk7JXMmIzM5OyYjMzQ7LAomIzQzOwkJCQkJICAgICAgYnBmX21hcF9fbmFtZShpdGVyX21hcCkpOwomIzQzOwkJfQomIzQzOwomIzQzOwkJYnBmX21hcF9fc2V0X2F1dG9hdHRhY2goaXRlcl9tYXAsIGZhbHNlKTsKJiM0MzsJfQomIzQzOwogCWZvciAoaW50IGkgPSAwOyBpICZsdDsgcHJvZ3NfY291bnQ7IGkmIzQzOyYjNDM7KSB7CiAJCXN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZzsKIAkJc3RydWN0IGJwZl9tYXAgKm1hcDsKQEAgLTEwMiw2ICYjNDM7MTE2LDEwIEBAIHN0YXRpYyB2b2lkIGxvYWRfcHJvZ3JhbXMoY29uc3Qgc3RydWN0IHRlc3RfcHJvZ3JhbSBwcm9ncmFtc1tdLAogCQlBU1NFUlRfT0tfUFRSKG1hcCkgVEhfTE9HKCYjMzQ7Y2FuIG5vdCBmaW5kIHN0cnVjdF9vcHMgYnkgbmFtZSAmIzM5OyVzJiMzOTsmIzM0OywKIAkJCQkJICBwcm9ncmFtc1tpXS5uYW1lICYjNDM7IDQpOwogCiYjNDM7CQllcnIgPSBicGZfbWFwX19zZXRfYXV0b2NyZWF0ZShtYXAsIHRydWUpOwomIzQzOwkJQVNTRVJUX09LKGVycikgVEhfTE9HKCYjMzQ7Y2FuIG5vdCBlbmFibGUgc3RydWN0X29wcyBtYXAgJiMzOTslcyYjMzk7JiMzNDssCiYjNDM7CQkJCSAgICAgIHByb2dyYW1zW2ldLm5hbWUgJiM0MzsgNCk7CiYjNDM7CiAJCS8qIGhpZF9pZCBpcyB0aGUgZmlyc3QgZmllbGQgb2Ygc3RydWN0IGhpZF9icGZfb3BzICovCiAJCW9wc19oaWRfaWQgPSBicGZfbWFwX19pbml0aWFsX3ZhbHVlKG1hcCwgTlVMTCk7CiAJCUFTU0VSVF9PS19QVFIob3BzX2hpZF9pZCkgVEhfTE9HKCYjMzQ7dW5hYmxlIHRvIHJldHJpZXZlIHN0cnVjdF9vcHMgZGF0YSYjMzQ7KTsKQEAgLTEwOSwxMyAmIzQzOzEyNyw2IEBAIHN0YXRpYyB2b2lkIGxvYWRfcHJvZ3JhbXMoY29uc3Qgc3RydWN0IHRlc3RfcHJvZ3JhbSBwcm9ncmFtc1tdLAogCQkqb3BzX2hpZF9pZCA9IHNlbGYtJmd0O2hpZC5oaWRfaWQ7CiAJfQogCi0JLyogd2UgZGlzYWJsZSB0aGUgYXV0by1hdHRhY2ggZmVhdHVyZSBvZiBhbGwgbWFwcyBiZWNhdXNlIHdlCi0JICogb25seSB3YW50IHRoZSB0ZXN0ZWQgb25lIHRvIGJlIG1hbnVhbGx5IGF0dGFjaGVkIGluIHRoZSBuZXh0Ci0JICogY2FsbCB0byBicGZfbWFwX19hdHRhY2hfc3RydWN0X29wcygpCi0JICovCi0JYnBmX29iamVjdF9fZm9yX2VhY2hfbWFwKGl0ZXJfbWFwLCAqc2VsZi0mZ3Q7c2tlbC0mZ3Q7c2tlbGV0b24tJmd0O29iaikKLQkJYnBmX21hcF9fc2V0X2F1dG9hdHRhY2goaXRlcl9tYXAsIGZhbHNlKTsKLQogCWVyciA9IGhpZF9fbG9hZChzZWxmLSZndDtza2VsKTsKIAlBU1NFUlRfT0soZXJyKSBUSF9MT0coJiMzNDtoaWRfc2tlbF9sb2FkIGZhaWxlZDogJWQmIzM0OywgZXJyKTsKIApAQCAtODg3LDYgJiM0Mzs4OTgsMTcgQEAgVEVTVF9GKGhpZF9icGYsIHRlc3RfcmRlc2NfZml4dXApCiAJQVNTRVJUX0VRKHJwdF9kZXNjLnZhbHVlWzRdLCAweDQyKTsKIH0KIAomIzQzO1RFU1RfRihoaWRfYnBmLCB0ZXN0X3JkZXNjX2ZpeHVwX2dldF9kYXRhX292ZXJmbG93KQomIzQzO3sKJiM0MzsJY29uc3Qgc3RydWN0IHRlc3RfcHJvZ3JhbSBwcm9nc1tdID0gewomIzQzOwkJeyAubmFtZSA9ICYjMzQ7aGlkX3JkZXNjX2ZpeHVwX2dldF9kYXRhX292ZXJmbG93JiMzNDsgfSwKJiM0MzsJfTsKJiM0MzsKJiM0MzsJTE9BRF9QUk9HUkFNUyhwcm9ncyk7CiYjNDM7CiYjNDM7CUFTU0VSVF9FUShzZWxmLSZndDtza2VsLSZndDtic3MtJmd0O2dldF9kYXRhX292ZXJmbG93X2NoZWNrLCAxKTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW50IGxpYmJwZl9wcmludF9mbihlbnVtIGxpYmJwZl9wcmludF9sZXZlbCBsZXZlbCwKIAkJCSAgIGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCBhcmdzKQogewpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jCmluZGV4IDVlY2M4NDVlZjc5MjE2Li5iMjFmYmIxM2M5MjZmOCAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYwpAQCAtMTMsNiAmIzQzOzEzLDcgQEAgc3RydWN0IGF0dGFjaF9wcm9nX2FyZ3MgewogCiBfX3U2NCBjYWxsYmFja19jaGVjayA9IDUyOwogX191NjQgY2FsbGJhY2syX2NoZWNrID0gNTI7CiYjNDM7X191NjQgZ2V0X2RhdGFfb3ZlcmZsb3dfY2hlY2s7CiAKIFNFQygmIzM0Oz9zdHJ1Y3Rfb3BzL2hpZF9kZXZpY2VfZXZlbnQmIzM0OykKIGludCBCUEZfUFJPRyhoaWRfZmlyc3RfZXZlbnQsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGlkX2N0eCwgZW51bSBoaWRfcmVwb3J0X3R5cGUgdHlwZSkKQEAgLTI0MCw2ICYjNDM7MjQxLDIwIEBAIHN0cnVjdCBoaWRfYnBmX29wcyByZGVzY19maXh1cCA9IHsKIAkuaGlkX3JkZXNjX2ZpeHVwID0gKHZvaWQgKiloaWRfcmRlc2NfZml4dXAsCiB9OwogCiYjNDM7U0VDKCYjMzQ7P3N0cnVjdF9vcHMucy9oaWRfcmRlc2NfZml4dXAmIzM0OykKJiM0MztpbnQgQlBGX1BST0coaGlkX3JkZXNjX2ZpeHVwX2dldF9kYXRhX292ZXJmbG93LCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhpZF9jdHgpCiYjNDM7ewomIzQzOwlpZiAoIWhpZF9icGZfZ2V0X2RhdGEoaGlkX2N0eCwgMiAvKiBvZmZzZXQgKi8sIH4wVUxMIC8qIHNpemUgKi8pKQomIzQzOwkJZ2V0X2RhdGFfb3ZlcmZsb3dfY2hlY2sgPSAxOwomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7U0VDKCYjMzQ7LnN0cnVjdF9vcHMubGluayYjMzQ7KQomIzQzO3N0cnVjdCBoaWRfYnBmX29wcyByZGVzY19maXh1cF9nZXRfZGF0YV9vdmVyZmxvdyA9IHsKJiM0MzsJLmhpZF9yZGVzY19maXh1cCA9ICh2b2lkICopaGlkX3JkZXNjX2ZpeHVwX2dldF9kYXRhX292ZXJmbG93LAomIzQzO307CiYjNDM7CiBTRUMoJiMzNDs/c3RydWN0X29wcy9oaWRfZGV2aWNlX2V2ZW50JiMzNDspCiBpbnQgQlBGX1BST0coaGlkX3Rlc3RfaW5zZXJ0MSwgc3RydWN0IGhpZF9icGZfY3R4ICpoaWRfY3R4LCBlbnVtIGhpZF9yZXBvcnRfdHlwZSB0eXBlKQogewo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAwNjo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzY0CgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMzU5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEtlcm5lbCBQYXRjaDogT3ZlcmZsb3cgQ2hlY2tzIGluIEhJRCBCUEYgRGF0YSBBY2Nlc3MqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggaGVyZS4gSXQmIzM5O3MgdG91Y2hpbmcgYGRyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX2Rpc3BhdGNoLmNgIGFuZCBpbmNsdWRlcyBzb21lIHNlbGZ0ZXN0cyBpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkYC4gVGhlIG1lYXQgb2YgdGhlIGNoYW5nZSBpcyBpbiB0aGF0IGBoaWRfYnBmX2Rpc3BhdGNoLmNgIGZpbGUuIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgYWRkaW5nIGFuIG92ZXJmbG93IGNoZWNrIHdpdGhpbiB0aGUgYGhpZF9icGZfZ2V0X2RhdGFgIGZ1bmN0aW9uLiBXZSYjMzk7cmUgdGFsa2luZyBhYm91dCBhIGZ1bmN0aW9uYWwgbW9kaWZpY2F0aW9uIHRvIHRoZSBrZXJuZWwgaGVyZSwgc28gd2UgbmVlZCB0byBiZSB2ZXJ5IHByZWNpc2UuCgpFc3NlbnRpYWxseSwgdGhleSBhcmUgYWRkaW5nIGEgY2hlY2sgd2l0aGluIHRoZSBgaGlkX2JwZl9nZXRfZGF0YWAgZnVuY3Rpb24gdG8gcHJldmVudCBwb3RlbnRpYWwgaW50ZWdlciBvdmVyZmxvd3Mgd2hlbiBjYWxjdWxhdGluZyB0aGUgZW5kIGFkZHJlc3Mgb2YgYSBkYXRhIGJ1ZmZlci4gVGhpcyBpcyBhIGdvb2QgcHJhY3RpY2UsIGFuZCBpdCYjMzk7cyBhIGNyaXRpY2FsIHNhZmV0eSBmZWF0dXJlIHdoZW4gZGVhbGluZyB3aXRoIG1lbW9yeSBhY2Nlc3Mgd2l0aGluIHRoZSBrZXJuZWwsIGVzcGVjaWFsbHkgd2l0aGluIEJQRiBwcm9ncmFtcy4KClRoZSBxdWVzdGlvbiBub3cgaXMsIGlzIHRoaXMgY29kZSBwYXRoIGFjdHVhbGx5ICpyZWFjaGFibGUqPyBJcyB0aGlzIGNoYW5nZSBwb3RlbnRpYWxseSBpbXBhY3RmdWw/IEFic29sdXRlbHksIHllcywgaXQgaXMuIFRoZSBgaGlkX2JwZl9nZXRfZGF0YWAgZnVuY3Rpb24gaXMgYSBCUEYga2Z1bmMuIEdpdmVuIHRoZSBwcm9taW5lbmNlIG9mIEJQRiBpbiB0aGVzZSBtb2Rlcm4ga2VybmVscywgaXQmIzM5O3MgYSBoZWF2aWx5IHVzZWQgZnVuY3Rpb24uIFRoaXMgdGVsbHMgdXMgdGhpcyBjaGVjayBjb3VsZCBiZSB2ZXJ5IGltcG9ydGFudC4KCkFscmlnaHQsIHNvIGxldCYjMzk7cyB2ZXJpZnkgdGhhdCB0aGUgY29kZSAqaXMqIGJ1aWx0LiBgZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfZGlzcGF0Y2guY2Agd2lsbCBiZSBjb21waWxlZCBpZiBgQ09ORklHX0hJRF9CUEZgIGlzIGVuYWJsZWQuIFRoYXQmIzM5O3MgdGhlIGdhdGVrZWVwZXIuIFdlJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCB0aGlzIGNvbmZpZyBpcywgaW4gZmFjdCwgZW5hYmxlZCBpbiB0aGUgdGFyZ2V0IGVudmlyb25tZW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAwNjo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtoaWRfYnBmX2Rpc3BhdGNoLm8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9oaWQvYnBmL01ha2VmaWxlPTg9b2JqLSQoQ09ORklHX0hJRF9CUEYpICYjNDM7PSBoaWRfYnBmLm9cbmRyaXZlcnMvaGlkL2JwZi9NYWtlZmlsZTo5OkNGTEFHU19oaWRfYnBmX2Rpc3BhdGNoLm8gJiM0Mzs9IC1JJChMSUJCUEZfSU5DTFVERSlcbmRyaXZlcnMvaGlkL2JwZi9NYWtlZmlsZS0xMC1DRkxBR1NfaGlkX2JwZl9qbXBfdGFibGUubyAmIzQzOz0gLUkkKExJQkJQRl9JTkNMVURFKVxuZHJpdmVycy9oaWQvYnBmL01ha2VmaWxlOjExOmhpZF9icGYtb2JqcyAmIzQzOz0gaGlkX2JwZl9kaXNwYXRjaC5vIGhpZF9icGZfc3RydWN0X29wcy5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMDY6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDYzOQoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDY5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKktlcm5lbCBDb25maWd1cmF0aW9uIERlZXAgRGl2ZSoqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMga2VybmVsIGNvbmZpZ3VyYXRpb24gc3BhY2UsIGFuZCBpdCBsb29rcyBsaWtlIGBDT05GSUdfSElEX0JQRmAgaXMgYSBrZXkgcGllY2Ugb2YgdGhlIHB1enpsZSBoZXJlLiBJIGtub3cgdGhhdCBCUEYga2Z1bmNzLCBpbiBnZW5lcmFsLCB1c3VhbGx5IHJlcXVpcmUgYENPTkZJR19CUEZfU1lTQ0FMTGAgYW5kIGBDT05GSUdfQlBGX0pJVGAgdG8gYmUgZW5hYmxlZC4gSSYjMzk7bSByZWFzb25hYmx5IHN1cmUgYEhJRF9CUEZgIGxpa2VseSBkZXBlbmRzIG9uIHRoZXNlIGFzIHdlbGwuIEkgbmVlZCB0byBjb25maXJtIHRoaXMgZGVwZW5kZW5jeSB0byBiZSBjZXJ0YWluIG9mIHRoZSBjb3JyZWN0IGNvbmZpZ3VyYXRpb24uIFRoZXJlZm9yZSwgbXkgbmV4dCBzdGVwIGlzIHRvIGNhcmVmdWxseSBjaGVjayB0aGUgZGVwZW5kZW5jaWVzIG9mIGBDT05GSUdfSElEX0JQRmAgYW5kIGJ1aWxkIGEgc3VpdGFibGUgY29uZmlndXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAwNjo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSElEX0JQRiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2hpZC9icGYvS2NvbmZpZz0yPW1lbnUgXCYjMzQ7SElELUJQRiBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL2hpZC9icGYvS2NvbmZpZy0zLVxuZHJpdmVycy9oaWQvYnBmL0tjb25maWc6NDpjb25maWcgSElEX0JQRlxuZHJpdmVycy9oaWQvYnBmL0tjb25maWctNS1cdGJvb2wgXCYjMzQ7SElELUJQRiBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMDY6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDk1MAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgYXMgaWYgdGhleSYjMzk7cmUgbXkgb3duOgoKKipBbmFseXppbmcgdGhlIEhJRCBCUEYgQ29uZmlndXJhdGlvbiBPcHRpb25zKioKCkFscmlnaHQsIEkmIzM5O20gZ29pbmcgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIGBkcml2ZXJzL2hpZC9icGYvS2NvbmZpZ2AgZmlsZS4gSSYjMzk7bSBpbW1lZGlhdGVseSBpbnRlcmVzdGVkIGluIHNlZWluZyBob3cgdGhlIEJQRiBmdW5jdGlvbmFsaXR5IGZvciBISUQgZGV2aWNlcyBpcyBjb25maWd1cmVkLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIGEgc2VyaWVzIG9mIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgcHJvYmFibHkgdXNpbmcgdGhlIGBjb25maWdgIGtleXdvcmQsIG5lc3RlZCB3aXRoaW4gcG90ZW50aWFsbHkgY29uZGl0aW9uYWwgYmxvY2tzIGRlZmluZWQgYnkgYGlmYCBzdGF0ZW1lbnRzLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBhbnkgZGVwZW5kZW5jaWVzIOKAkyB3aGF0IG90aGVyIGtlcm5lbCBmZWF0dXJlcyBvciBtb2R1bGVzIG5lZWQgdG8gYmUgZW5hYmxlZCBiZWZvcmUgdGhlIEJQRiBISUQgZnVuY3Rpb25hbGl0eSBjYW4gZXZlbiBiZSBjb25zaWRlcmVkPyBJIHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgbGV2ZWwgb2YgZ3JhbnVsYXJpdHkgYXZhaWxhYmxlOyBhcmUgd2UgdGFsa2luZyBhYm91dCBwZXItZGV2aWNlIG9wdGlvbnMsIG9yIHNvbWV0aGluZyBtb3JlIGdsb2JhbCB0aGF0IGFwcGxpZXMgdG8gYWxsIEhJRCBCUEYgdXNhZ2U/IEFyZSB0aGVyZSBkaWZmZXJlbnQgbGV2ZWxzIG9mIEJQRiBzdXBwb3J0LCBwZXJoYXBzIHdpdGggZGlmZmVyZW50IHBlcmZvcm1hbmNlIG9yIHNlY3VyaXR5IHRyYWRlLW9mZnM/IE15IGZvY3VzIHdpbGwgYmUgb24gdGhlIHN0cnVjdHVyZSwgdGhlIGRlcGVuZGVuY2llcywgYW5kIHRoZSBuYXR1cmUgb2YgdGhlIGNvbmZpZ3VyYXRpb24gY2hvaWNlcyBhdmFpbGFibGUgdG8gdGhlIHVzZXIuIEkmIzM5O2xsIG1lbnRhbGx5IG1hcCBvdXQgdGhlIGltcGxpY2F0aW9ucyBvZiBlYWNoIG9wdGlvbiBhbmQgY29uc2lkZXIgaG93IHRoZXNlIGNob2ljZXMgbWlnaHQgaW1wYWN0IHBlcmZvcm1hbmNlLCBzZWN1cml0eSwgYW5kIG92ZXJhbGwgZmxleGliaWxpdHkgaW4gdXNpbmcgQlBGIHdpdGggSElEIGRldmljZXMuIEVzc2VudGlhbGx5LCBJJiMzOTttIHRyeWluZyB0byBnZXQgYSBmZWVsIGZvciBob3cgdGhlIGtlcm5lbCBleHBvc2VzIHRoaXMgZnVuY3Rpb25hbGl0eSBhbmQgaG93IGEgZGV2ZWxvcGVyIGNhbiBsZXZlcmFnZSBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAwNjo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvaGlkL2JwZi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0bWVudSBcJiMzNDtISUQtQlBGIHN1cHBvcnRcJiMzNDtcbiAgIDM6XHRcbiAgIDQ6XHRjb25maWcgSElEX0JQRlxuICAgNTpcdFx0Ym9vbCBcJiMzNDtISUQtQlBGIHN1cHBvcnRcJiMzNDtcbiAgIDY6XHRcdGRlcGVuZHMgb24gQlBGX0pJVFxuICAgNzpcdFx0ZGVwZW5kcyBvbiBCUEZfU1lTQ0FMTFxuICAgODpcdFx0ZGVwZW5kcyBvbiBEWU5BTUlDX0ZUUkFDRV9XSVRIX0RJUkVDVF9DQUxMU1xuICAgOTpcdFx0aGVscFxuICAxMDpcdFx0VGhpcyBvcHRpb24gYWxsb3dzIHRvIHN1cHBvcnQgZUJQRiBwcm9ncmFtcyBvbiB0aGUgSElEIHN1YnN5c3RlbS5cbiAgMTE6XHRcdGVCUEYgcHJvZ3JhbXMgY2FuIGZpeCBISUQgZGV2aWNlcyBpbiBhIGxpZ2h0ZXIgd2F5IHRoYW4gYSBmdWxsXG4gIDEyOlx0XHRrZXJuZWwgcGF0Y2ggYW5kIGFsbG93IGEgbG90IG1vcmUgZmxleGliaWxpdHkuXG4gIDEzOlx0XG4gIDE0Olx0XHRGb3IgZG9jdW1lbnRhdGlvbiwgc2VlIERvY3VtZW50YXRpb24vaGlkL2hpZC1icGYucnN0XG4gIDE1Olx0XG4gIDE2Olx0ZW5kbWVudVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDA2OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU0OTQKCQkJCQkJCW91dHB1dDogOTUKCQkJCQkJCXRob3VnaHRzOiA0MjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb246IEhJRCBCUEYgRGF0YSBSZXRyaWV2YWwqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IGBISURfQlBGYCBhcyB0aGUgcmVsZXZhbnQgY29uZmlnLCBhbmQgdGhlIHRhcmdldCBmdW5jdGlvbiBpcyBgaGlkX2JwZl9nZXRfZGF0YWAuIEZyb20gdGhlIGxvb2tzIG9mIGl0LCB0aGlzIGlzIGEgZGVmaW5pdGUgJiMzNDt5ZXMmIzM0OyBmb3IgZnV6emluZy4gSXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgc3BlY2lmaWNhbGx5IGFkZHJlc3NpbmcgYW4gaW50ZWdlciBvdmVyZmxvdyBpbiBhIEJQRiBrZnVuYy4gTXkgZm9jdXMgd2lsbCBiZSBzcXVhcmVseSBvbiBgaGlkX2JwZl9nZXRfZGF0YWAuIEkmIzM5O2xsIG5lZWQgdG8gZW5hYmxlIHRoZSBgSElEX0JQRmAgY29uZmlnLCBuYXR1cmFsbHkuCgpOb3csIGxldCYjMzk7cyBqdXN0IGNvbmZpcm0gaWYgdGhpcyBpcyBhIGhvdCBwYXRoLiBJdCYjMzk7cyBjYWxsZWQgZnJvbSBCUEYgcHJvZ3JhbXMgdGhhdCBhcmUgYXR0YWNoZWQgdG8gSElEIGV2ZW50cywgc28gaXQgY291bGQgYmUgY2FsbGVkIHByZXR0eSBmcmVxdWVudGx5IGRlcGVuZGluZyBvbiB0aGUgYWN0aXZpdHkgb2YgdGhlIGRldmljZS4gQnV0IGl0JiMzOTtzIHRoaXMgKnNwZWNpZmljKiBmdW5jdGlvbiB0aGF0IHdhcyBhbHRlcmVkLiBJdCYjMzk7cyBhIGtmdW5jLCBzbyBpdCYjMzk7cyBjYWxsZWQgZGlyZWN0bHkgZnJvbSBCUEYgY29kZSDigJMgd2hpY2ggbWFrZXMgaXQgYSBnb29kIHRhcmdldC4KCkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHJlbGF0ZWQgY29uZmlncywgZXZlbiB0aG91Z2ggSSYjMzk7dmUgYWxyZWFkeSBjb25maXJtZWQgYEhJRF9CUEZgIGlzIHRoZSBtYWluIG9uZS4gT2theSwgYEhJRF9CUEZgIGRlcGVuZHMgb24gYEJQRl9KSVRgLCBgQlBGX1NZU0NBTExgLCBhbmQgYERZTkFNSUNfRlRSQUNFX1dJVEhfRElSRUNUX0NBTExTYC4gQnV0IGZvY3VzaW5nIG9uIGp1c3QgYEhJRF9CUEZgIGlzIGZpbmUgaW4gdGhpcyBjYXNlLgoKTGV0JiMzOTtzIHF1aWNrbHkgdmVyaWZ5IHRoZSB3aG9sZSBsaW5lIG9mIHJlYXNvbmluZy4gVGhlIHBhdGNoIGFkZHJlc3NlcyBhbiBpbnRlZ2VyIG92ZXJmbG93IHdpdGhpbiBgaGlkX2JwZl9nZXRfZGF0YWAuIFRoaXMgaXMgYSBCUEYga2Z1bmMgYWNjZXNzaWJsZSB0byBISUQgQlBGIHByb2dyYW1zLiBGdXp6aW5nICp0aGlzKiBmdW5jdGlvbiBpcyBpbXBvcnRhbnQgYmVjYXVzZSBpdCYjMzk7bGwgZW5zdXJlIHRoZSBvdmVyZmxvdyBjaGVjayBkb2VzIHdoYXQgaXQmIzM5O3Mgc3VwcG9zZWQgdG8gZG8gYW5kIHRoZXJlIGFyZSBubyBvdGhlciB2dWxuZXJhYmlsaXRpZXMgaW4gdGhlIGRhdGEgcmV0cmlldmFsLgoKSSYjMzk7bGwganVzdCBjb25maXJtIGBoaWRfYnBmX2dldF9kYXRhYCBpcyB0aGUgKm9ubHkqIG1vZGlmaWVkIGtlcm5lbCBmdW5jdGlvbi4gWXVwLCBvbmx5IHRoZSBmaWxlIGBoaWRfYnBmX2Rpc3BhdGNoLmNgIHdhcyBtb2RpZmllZCBpbiB0aGUga2VybmVsLCBhbmQgdGhlIHJlc3Qgb2YgdGhlIGNoYW5nZXMgYXJlIHNlbGZ0ZXN0cy4KCmBgYGpzb24KewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWyYjMzQ7aGlkX2JwZl9nZXRfZGF0YSYjMzQ7XSwKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWyYjMzQ7SElEX0JQRiYjMzQ7XSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBpbnRlZ2VyIG92ZXJmbG93IGluIHRoZSBoaWRfYnBmX2dldF9kYXRhIEJQRiBrZnVuYywgd2hpY2ggaXMgZXhwb3NlZCB0byBISUQgQlBGIHByb2dyYW1zLiBGdXp6aW5nIHRoaXMgZnVuY3Rpb24gZW5zdXJlcyB0aGUgb3ZlcmZsb3cgY2hlY2sgY29ycmVjdGx5IHByZXZlbnRzIG91dC1vZi1ib3VuZHMgYWNjZXNzLiYjMzQ7Cn0KYGBgCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDA2OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtISURfQlBGJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aGlkX2JwZl9nZXRfZGF0YSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBpbnRlZ2VyIG92ZXJmbG93IGluIHRoZSBoaWRfYnBmX2dldF9kYXRhIEJQRiBrZnVuYywgd2hpY2ggaXMgZXhwb3NlZCB0byBISUQgQlBGIHByb2dyYW1zLiBGdXp6aW5nIHRoaXMgZnVuY3Rpb24gZW5zdXJlcyB0aGUgb3ZlcmZsb3cgY2hlY2sgY29ycmVjdGx5IHByZXZlbnRzIG91dC1vZi1ib3VuZHMgYWNjZXNzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtISURfQlBGJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aGlkX2JwZl9nZXRfZGF0YSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBpbnRlZ2VyIG92ZXJmbG93IGluIHRoZSBoaWRfYnBmX2dldF9kYXRhIEJQRiBrZnVuYywgd2hpY2ggaXMgZXhwb3NlZCB0byBISUQgQlBGIHByb2dyYW1zLiBGdXp6aW5nIHRoaXMgZnVuY3Rpb24gZW5zdXJlcyB0aGUgb3ZlcmZsb3cgY2hlY2sgY29ycmVjdGx5IHByZXZlbnRzIG91dC1vZi1ib3VuZHMgYWNjZXNzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMjNUMDY6NTE6NDUuMTc2MTg3Mjg5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc4MTMxOTMxMzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSElEX0JQRlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImhpZF9icGZfZ2V0X2RhdGFcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBpbnRlZ2VyIG92ZXJmbG93IGluIHRoZSBoaWRfYnBmX2dldF9kYXRhIEJQRiBrZnVuYywgd2hpY2ggaXMgZXhwb3NlZCB0byBISUQgQlBGIHByb2dyYW1zLiBGdXp6aW5nIHRoaXMgZnVuY3Rpb24gZW5zdXJlcyB0aGUgb3ZlcmZsb3cgY2hlY2sgY29ycmVjdGx5IHByZXZlbnRzIG91dC1vZi1ib3VuZHMgYWNjZXNzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QwNjo1MTo0NS4xNzYxOTM1NDlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYxMjM0NDI4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGM4ODVhNWVlMGUxYzcxOWMxOWJmN2Y1YzY0M2U2ZDgwZDE4MDQ4MDFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBKdW4gMjMgMDY6NTE6NDMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfZGlzcGF0Y2guYyBiL2RyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX2Rpc3BhdGNoLmNcXG5pbmRleCBkMDEzMDY1ODA5MWIwMi4uNTM2ZjZkMDFmZDE0YzYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfZGlzcGF0Y2guY1xcbisrKyBiL2RyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX2Rpc3BhdGNoLmNcXG5AQCAtMTcsNiArMTcsNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgva2ZpZm8uaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L21pbm1heC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvbW9kdWxlLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9vdmVyZmxvdy5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXFwiaGlkX2JwZl9kaXNwYXRjaC5oXFxcIlxcbiBcXG4gY29uc3Qgc3RydWN0IGhpZF9vcHMgKmhpZF9vcHM7XFxuQEAgLTI5NiwxMCArMjk3LDEyIEBAIF9fYnBmX2tmdW5jIF9fdTggKlxcbiBoaWRfYnBmX2dldF9kYXRhKHN0cnVjdCBoaWRfYnBmX2N0eCAqY3R4LCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCBjb25zdCBzaXplX3QgcmR3cl9idWZfc2l6ZSlcXG4ge1xcbiBcXHRzdHJ1Y3QgaGlkX2JwZl9jdHhfa2VybiAqY3R4X2tlcm47XFxuK1xcdHNpemVfdCBlbmQ7XFxuIFxcbiBcXHRjdHhfa2VybiA9IGNvbnRhaW5lcl9vZihjdHgsIHN0cnVjdCBoaWRfYnBmX2N0eF9rZXJuLCBjdHgpO1xcbiBcXG4tXFx0aWYgKHJkd3JfYnVmX3NpemUgKyBvZmZzZXQgXFx1MDAzZSBjdHgtXFx1MDAzZWFsbG9jYXRlZF9zaXplKVxcbitcXHRpZiAoY2hlY2tfYWRkX292ZXJmbG93KHJkd3JfYnVmX3NpemUsIG9mZnNldCwgXFx1MDAyNmVuZCkgfHxcXG4rXFx0ICAgIGVuZCBcXHUwMDNlIGN0eC1cXHUwMDNlYWxsb2NhdGVkX3NpemUpXFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbiBcXG4gXFx0cmV0dXJuIGN0eF9rZXJuLVxcdTAwM2VkYXRhICsgb2Zmc2V0O1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvTWFrZWZpbGUgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvTWFrZWZpbGVcXG5pbmRleCA5NjA3MWI0ODAwZTgyYS4uMmY0MjNkZTgzMTQ3M2EgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL01ha2VmaWxlXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL01ha2VmaWxlXFxuQEAgLTI0LDcgKzI0LDcgQEAgQ1hYID89ICQoQ1JPU1NfQ09NUElMRSlnKytcXG4gXFxuIEhPU1RQS0dfQ09ORklHIDo9IHBrZy1jb25maWdcXG4gXFxuLUNGTEFHUyArPSAtZyAtTzAgLXJkeW5hbWljIC1XYWxsIC1XZXJyb3IgLUkkKE9VVFBVVClcXG4rQ0ZMQUdTICs9IC1nIC1PMCAtcmR5bmFtaWMgLVdhbGwgLVdlcnJvciAtSSQoT1VUUFVUKSAkKEtIRFJfSU5DTFVERVMpXFxuIENGTEFHUyArPSAtSSQoT1VUUFVUKS90b29scy9pbmNsdWRlXFxuIFxcbiBMRExJQlMgKz0gLWxlbGYgLWx6IC1scnQgLWxwdGhyZWFkXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9oaWRfYnBmLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvaGlkX2JwZi5jXFxuaW5kZXggMWU5NzlmYjM1NDJiYWIuLmI4NTEzMzkzMDhjMjE0IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9oaWRfYnBmLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvaGlkX2JwZi5jXFxuQEAgLTg2LDYgKzg2LDIwIEBAIHN0YXRpYyB2b2lkIGxvYWRfcHJvZ3JhbXMoY29uc3Qgc3RydWN0IHRlc3RfcHJvZ3JhbSBwcm9ncmFtc1tdLFxcbiBcXHRzZWxmLVxcdTAwM2Vza2VsID0gaGlkX19vcGVuKCk7XFxuIFxcdEFTU0VSVF9PS19QVFIoc2VsZi1cXHUwMDNlc2tlbCkgVEVBUkRPV05fTE9HKFxcXCJFcnJvciB3aGlsZSBjYWxsaW5nIGhpZF9fb3BlblxcXCIpO1xcbiBcXG4rXFx0LypcXG4rXFx0ICogRGlzYWJsZSBhbGwgc3RydWN0X29wcyBtYXBzIGJ5IGRlZmF1bHQgc28gbGliYnBmIGRvZXMgbm90IGF1dG9sb2FkXFxuK1xcdCAqIHByb2dyYW1zIHJlZmVyZW5jZWQgYnkgbWFwcyB0aGF0IGFyZSB1bnJlbGF0ZWQgdG8gdGhlIGN1cnJlbnQgdGVzdC5cXG4rXFx0ICovXFxuK1xcdGJwZl9vYmplY3RfX2Zvcl9lYWNoX21hcChpdGVyX21hcCwgKnNlbGYtXFx1MDAzZXNrZWwtXFx1MDAzZXNrZWxldG9uLVxcdTAwM2VvYmopIHtcXG4rXFx0XFx0aWYgKGJwZl9tYXBfX3R5cGUoaXRlcl9tYXApID09IEJQRl9NQVBfVFlQRV9TVFJVQ1RfT1BTKSB7XFxuK1xcdFxcdFxcdGVyciA9IGJwZl9tYXBfX3NldF9hdXRvY3JlYXRlKGl0ZXJfbWFwLCBmYWxzZSk7XFxuK1xcdFxcdFxcdEFTU0VSVF9PSyhlcnIpIFRIX0xPRyhcXFwiY2FuIG5vdCBkaXNhYmxlIHN0cnVjdF9vcHMgbWFwICclcydcXFwiLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgICBicGZfbWFwX19uYW1lKGl0ZXJfbWFwKSk7XFxuK1xcdFxcdH1cXG4rXFxuK1xcdFxcdGJwZl9tYXBfX3NldF9hdXRvYXR0YWNoKGl0ZXJfbWFwLCBmYWxzZSk7XFxuK1xcdH1cXG4rXFxuIFxcdGZvciAoaW50IGkgPSAwOyBpIFxcdTAwM2MgcHJvZ3NfY291bnQ7IGkrKykge1xcbiBcXHRcXHRzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2c7XFxuIFxcdFxcdHN0cnVjdCBicGZfbWFwICptYXA7XFxuQEAgLTEwMiw2ICsxMTYsMTAgQEAgc3RhdGljIHZvaWQgbG9hZF9wcm9ncmFtcyhjb25zdCBzdHJ1Y3QgdGVzdF9wcm9ncmFtIHByb2dyYW1zW10sXFxuIFxcdFxcdEFTU0VSVF9PS19QVFIobWFwKSBUSF9MT0coXFxcImNhbiBub3QgZmluZCBzdHJ1Y3Rfb3BzIGJ5IG5hbWUgJyVzJ1xcXCIsXFxuIFxcdFxcdFxcdFxcdFxcdCAgcHJvZ3JhbXNbaV0ubmFtZSArIDQpO1xcbiBcXG4rXFx0XFx0ZXJyID0gYnBmX21hcF9fc2V0X2F1dG9jcmVhdGUobWFwLCB0cnVlKTtcXG4rXFx0XFx0QVNTRVJUX09LKGVycikgVEhfTE9HKFxcXCJjYW4gbm90IGVuYWJsZSBzdHJ1Y3Rfb3BzIG1hcCAnJXMnXFxcIixcXG4rXFx0XFx0XFx0XFx0ICAgICAgcHJvZ3JhbXNbaV0ubmFtZSArIDQpO1xcbitcXG4gXFx0XFx0LyogaGlkX2lkIGlzIHRoZSBmaXJzdCBmaWVsZCBvZiBzdHJ1Y3QgaGlkX2JwZl9vcHMgKi9cXG4gXFx0XFx0b3BzX2hpZF9pZCA9IGJwZl9tYXBfX2luaXRpYWxfdmFsdWUobWFwLCBOVUxMKTtcXG4gXFx0XFx0QVNTRVJUX09LX1BUUihvcHNfaGlkX2lkKSBUSF9MT0coXFxcInVuYWJsZSB0byByZXRyaWV2ZSBzdHJ1Y3Rfb3BzIGRhdGFcXFwiKTtcXG5AQCAtMTA5LDEzICsxMjcsNiBAQCBzdGF0aWMgdm9pZCBsb2FkX3Byb2dyYW1zKGNvbnN0IHN0cnVjdCB0ZXN0X3Byb2dyYW0gcHJvZ3JhbXNbXSxcXG4gXFx0XFx0Km9wc19oaWRfaWQgPSBzZWxmLVxcdTAwM2VoaWQuaGlkX2lkO1xcbiBcXHR9XFxuIFxcbi1cXHQvKiB3ZSBkaXNhYmxlIHRoZSBhdXRvLWF0dGFjaCBmZWF0dXJlIG9mIGFsbCBtYXBzIGJlY2F1c2Ugd2VcXG4tXFx0ICogb25seSB3YW50IHRoZSB0ZXN0ZWQgb25lIHRvIGJlIG1hbnVhbGx5IGF0dGFjaGVkIGluIHRoZSBuZXh0XFxuLVxcdCAqIGNhbGwgdG8gYnBmX21hcF9fYXR0YWNoX3N0cnVjdF9vcHMoKVxcbi1cXHQgKi9cXG4tXFx0YnBmX29iamVjdF9fZm9yX2VhY2hfbWFwKGl0ZXJfbWFwLCAqc2VsZi1cXHUwMDNlc2tlbC1cXHUwMDNlc2tlbGV0b24tXFx1MDAzZW9iailcXG4tXFx0XFx0YnBmX21hcF9fc2V0X2F1dG9hdHRhY2goaXRlcl9tYXAsIGZhbHNlKTtcXG4tXFxuIFxcdGVyciA9IGhpZF9fbG9hZChzZWxmLVxcdTAwM2Vza2VsKTtcXG4gXFx0QVNTRVJUX09LKGVycikgVEhfTE9HKFxcXCJoaWRfc2tlbF9sb2FkIGZhaWxlZDogJWRcXFwiLCBlcnIpO1xcbiBcXG5AQCAtODg3LDYgKzg5OCwxNyBAQCBURVNUX0YoaGlkX2JwZiwgdGVzdF9yZGVzY19maXh1cClcXG4gXFx0QVNTRVJUX0VRKHJwdF9kZXNjLnZhbHVlWzRdLCAweDQyKTtcXG4gfVxcbiBcXG4rVEVTVF9GKGhpZF9icGYsIHRlc3RfcmRlc2NfZml4dXBfZ2V0X2RhdGFfb3ZlcmZsb3cpXFxuK3tcXG4rXFx0Y29uc3Qgc3RydWN0IHRlc3RfcHJvZ3JhbSBwcm9nc1tdID0ge1xcbitcXHRcXHR7IC5uYW1lID0gXFxcImhpZF9yZGVzY19maXh1cF9nZXRfZGF0YV9vdmVyZmxvd1xcXCIgfSxcXG4rXFx0fTtcXG4rXFxuK1xcdExPQURfUFJPR1JBTVMocHJvZ3MpO1xcbitcXG4rXFx0QVNTRVJUX0VRKHNlbGYtXFx1MDAzZXNrZWwtXFx1MDAzZWJzcy1cXHUwMDNlZ2V0X2RhdGFfb3ZlcmZsb3dfY2hlY2ssIDEpO1xcbit9XFxuK1xcbiBzdGF0aWMgaW50IGxpYmJwZl9wcmludF9mbihlbnVtIGxpYmJwZl9wcmludF9sZXZlbCBsZXZlbCxcXG4gXFx0XFx0XFx0ICAgY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpXFxuIHtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jXFxuaW5kZXggNWVjYzg0NWVmNzkyMTYuLmIyMWZiYjEzYzkyNmY4IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuY1xcbkBAIC0xMyw2ICsxMyw3IEBAIHN0cnVjdCBhdHRhY2hfcHJvZ19hcmdzIHtcXG4gXFxuIF9fdTY0IGNhbGxiYWNrX2NoZWNrID0gNTI7XFxuIF9fdTY0IGNhbGxiYWNrMl9jaGVjayA9IDUyO1xcbitfX3U2NCBnZXRfZGF0YV9vdmVyZmxvd19jaGVjaztcXG4gXFxuIFNFQyhcXFwiP3N0cnVjdF9vcHMvaGlkX2RldmljZV9ldmVudFxcXCIpXFxuIGludCBCUEZfUFJPRyhoaWRfZmlyc3RfZXZlbnQsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGlkX2N0eCwgZW51bSBoaWRfcmVwb3J0X3R5cGUgdHlwZSlcXG5AQCAtMjQwLDYgKzI0MSwyMCBAQCBzdHJ1Y3QgaGlkX2JwZl9vcHMgcmRlc2NfZml4dXAgPSB7XFxuIFxcdC5oaWRfcmRlc2NfZml4dXAgPSAodm9pZCAqKWhpZF9yZGVzY19maXh1cCxcXG4gfTtcXG4gXFxuK1NFQyhcXFwiP3N0cnVjdF9vcHMucy9oaWRfcmRlc2NfZml4dXBcXFwiKVxcbitpbnQgQlBGX1BST0coaGlkX3JkZXNjX2ZpeHVwX2dldF9kYXRhX292ZXJmbG93LCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhpZF9jdHgpXFxuK3tcXG4rXFx0aWYgKCFoaWRfYnBmX2dldF9kYXRhKGhpZF9jdHgsIDIgLyogb2Zmc2V0ICovLCB+MFVMTCAvKiBzaXplICovKSlcXG4rXFx0XFx0Z2V0X2RhdGFfb3ZlcmZsb3dfY2hlY2sgPSAxO1xcbitcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK1NFQyhcXFwiLnN0cnVjdF9vcHMubGlua1xcXCIpXFxuK3N0cnVjdCBoaWRfYnBmX29wcyByZGVzY19maXh1cF9nZXRfZGF0YV9vdmVyZmxvdyA9IHtcXG4rXFx0LmhpZF9yZGVzY19maXh1cCA9ICh2b2lkICopaGlkX3JkZXNjX2ZpeHVwX2dldF9kYXRhX292ZXJmbG93LFxcbit9O1xcbitcXG4gU0VDKFxcXCI/c3RydWN0X29wcy9oaWRfZGV2aWNlX2V2ZW50XFxcIilcXG4gaW50IEJQRl9QUk9HKGhpZF90ZXN0X2luc2VydDEsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGlkX2N0eCwgZW51bSBoaWRfcmVwb3J0X3R5cGUgdHlwZSlcXG4ge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QwNjo1MTo0NS43ODkxNDg4MjRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3MjAwMjIzNDkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkhJRF9CUEZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJoaWRfYnBmX2dldF9kYXRhXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gaW50ZWdlciBvdmVyZmxvdyBpbiB0aGUgaGlkX2JwZl9nZXRfZGF0YSBCUEYga2Z1bmMsIHdoaWNoIGlzIGV4cG9zZWQgdG8gSElEIEJQRiBwcm9ncmFtcy4gRnV6emluZyB0aGlzIGZ1bmN0aW9uIGVuc3VyZXMgdGhlIG92ZXJmbG93IGNoZWNrIGNvcnJlY3RseSBwcmV2ZW50cyBvdXQtb2YtYm91bmRzIGFjY2Vzcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBjODg1YTVlZTBlMWM3MTljMTliZjdmNWM2NDNlNmQ4MGQxODA0ODAxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdW4gMjMgMDY6NTE6NDMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9kaXNwYXRjaC5jIGIvZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfZGlzcGF0Y2guY1xuaW5kZXggZDAxMzA2NTgwOTFiMDIuLjUzNmY2ZDAxZmQxNGM2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfZGlzcGF0Y2guY1xuKysrIGIvZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfZGlzcGF0Y2guY1xuQEAgLTE3LDYgKzE3LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9rZmlmby5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbWlubWF4LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tb2R1bGUuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L292ZXJmbG93LmhcdTAwM2VcbiAjaW5jbHVkZSBcImhpZF9icGZfZGlzcGF0Y2guaFwiXG4gXG4gY29uc3Qgc3RydWN0IGhpZF9vcHMgKmhpZF9vcHM7XG5AQCAtMjk2LDEwICsyOTcsMTIgQEAgX19icGZfa2Z1bmMgX191OCAqXG4gaGlkX2JwZl9nZXRfZGF0YShzdHJ1Y3QgaGlkX2JwZl9jdHggKmN0eCwgdW5zaWduZWQgaW50IG9mZnNldCwgY29uc3Qgc2l6ZV90IHJkd3JfYnVmX3NpemUpXG4ge1xuIFx0c3RydWN0IGhpZF9icGZfY3R4X2tlcm4gKmN0eF9rZXJuO1xuK1x0c2l6ZV90IGVuZDtcbiBcbiBcdGN0eF9rZXJuID0gY29udGFpbmVyX29mKGN0eCwgc3RydWN0IGhpZF9icGZfY3R4X2tlcm4sIGN0eCk7XG4gXG4tXHRpZiAocmR3cl9idWZfc2l6ZSArIG9mZnNldCBcdTAwM2UgY3R4LVx1MDAzZWFsbG9jYXRlZF9zaXplKVxuK1x0aWYgKGNoZWNrX2FkZF9vdmVyZmxvdyhyZHdyX2J1Zl9zaXplLCBvZmZzZXQsIFx1MDAyNmVuZCkgfHxcbitcdCAgICBlbmQgXHUwMDNlIGN0eC1cdTAwM2VhbGxvY2F0ZWRfc2l6ZSlcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXG4gXHRyZXR1cm4gY3R4X2tlcm4tXHUwMDNlZGF0YSArIG9mZnNldDtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvTWFrZWZpbGUgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvTWFrZWZpbGVcbmluZGV4IDk2MDcxYjQ4MDBlODJhLi4yZjQyM2RlODMxNDczYSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9NYWtlZmlsZVxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL01ha2VmaWxlXG5AQCAtMjQsNyArMjQsNyBAQCBDWFggPz0gJChDUk9TU19DT01QSUxFKWcrK1xuIFxuIEhPU1RQS0dfQ09ORklHIDo9IHBrZy1jb25maWdcbiBcbi1DRkxBR1MgKz0gLWcgLU8wIC1yZHluYW1pYyAtV2FsbCAtV2Vycm9yIC1JJChPVVRQVVQpXG4rQ0ZMQUdTICs9IC1nIC1PMCAtcmR5bmFtaWMgLVdhbGwgLVdlcnJvciAtSSQoT1VUUFVUKSAkKEtIRFJfSU5DTFVERVMpXG4gQ0ZMQUdTICs9IC1JJChPVVRQVVQpL3Rvb2xzL2luY2x1ZGVcbiBcbiBMRExJQlMgKz0gLWxlbGYgLWx6IC1scnQgLWxwdGhyZWFkXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL2hpZF9icGYuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9oaWRfYnBmLmNcbmluZGV4IDFlOTc5ZmIzNTQyYmFiLi5iODUxMzM5MzA4YzIxNCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9oaWRfYnBmLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9oaWRfYnBmLmNcbkBAIC04Niw2ICs4NiwyMCBAQCBzdGF0aWMgdm9pZCBsb2FkX3Byb2dyYW1zKGNvbnN0IHN0cnVjdCB0ZXN0X3Byb2dyYW0gcHJvZ3JhbXNbXSxcbiBcdHNlbGYtXHUwMDNlc2tlbCA9IGhpZF9fb3BlbigpO1xuIFx0QVNTRVJUX09LX1BUUihzZWxmLVx1MDAzZXNrZWwpIFRFQVJET1dOX0xPRyhcIkVycm9yIHdoaWxlIGNhbGxpbmcgaGlkX19vcGVuXCIpO1xuIFxuK1x0LypcbitcdCAqIERpc2FibGUgYWxsIHN0cnVjdF9vcHMgbWFwcyBieSBkZWZhdWx0IHNvIGxpYmJwZiBkb2VzIG5vdCBhdXRvbG9hZFxuK1x0ICogcHJvZ3JhbXMgcmVmZXJlbmNlZCBieSBtYXBzIHRoYXQgYXJlIHVucmVsYXRlZCB0byB0aGUgY3VycmVudCB0ZXN0LlxuK1x0ICovXG4rXHRicGZfb2JqZWN0X19mb3JfZWFjaF9tYXAoaXRlcl9tYXAsICpzZWxmLVx1MDAzZXNrZWwtXHUwMDNlc2tlbGV0b24tXHUwMDNlb2JqKSB7XG4rXHRcdGlmIChicGZfbWFwX190eXBlKGl0ZXJfbWFwKSA9PSBCUEZfTUFQX1RZUEVfU1RSVUNUX09QUykge1xuK1x0XHRcdGVyciA9IGJwZl9tYXBfX3NldF9hdXRvY3JlYXRlKGl0ZXJfbWFwLCBmYWxzZSk7XG4rXHRcdFx0QVNTRVJUX09LKGVycikgVEhfTE9HKFwiY2FuIG5vdCBkaXNhYmxlIHN0cnVjdF9vcHMgbWFwICclcydcIixcbitcdFx0XHRcdFx0ICAgICAgYnBmX21hcF9fbmFtZShpdGVyX21hcCkpO1xuK1x0XHR9XG4rXG4rXHRcdGJwZl9tYXBfX3NldF9hdXRvYXR0YWNoKGl0ZXJfbWFwLCBmYWxzZSk7XG4rXHR9XG4rXG4gXHRmb3IgKGludCBpID0gMDsgaSBcdTAwM2MgcHJvZ3NfY291bnQ7IGkrKykge1xuIFx0XHRzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2c7XG4gXHRcdHN0cnVjdCBicGZfbWFwICptYXA7XG5AQCAtMTAyLDYgKzExNiwxMCBAQCBzdGF0aWMgdm9pZCBsb2FkX3Byb2dyYW1zKGNvbnN0IHN0cnVjdCB0ZXN0X3Byb2dyYW0gcHJvZ3JhbXNbXSxcbiBcdFx0QVNTRVJUX09LX1BUUihtYXApIFRIX0xPRyhcImNhbiBub3QgZmluZCBzdHJ1Y3Rfb3BzIGJ5IG5hbWUgJyVzJ1wiLFxuIFx0XHRcdFx0XHQgIHByb2dyYW1zW2ldLm5hbWUgKyA0KTtcbiBcbitcdFx0ZXJyID0gYnBmX21hcF9fc2V0X2F1dG9jcmVhdGUobWFwLCB0cnVlKTtcbitcdFx0QVNTRVJUX09LKGVycikgVEhfTE9HKFwiY2FuIG5vdCBlbmFibGUgc3RydWN0X29wcyBtYXAgJyVzJ1wiLFxuK1x0XHRcdFx0ICAgICAgcHJvZ3JhbXNbaV0ubmFtZSArIDQpO1xuK1xuIFx0XHQvKiBoaWRfaWQgaXMgdGhlIGZpcnN0IGZpZWxkIG9mIHN0cnVjdCBoaWRfYnBmX29wcyAqL1xuIFx0XHRvcHNfaGlkX2lkID0gYnBmX21hcF9faW5pdGlhbF92YWx1ZShtYXAsIE5VTEwpO1xuIFx0XHRBU1NFUlRfT0tfUFRSKG9wc19oaWRfaWQpIFRIX0xPRyhcInVuYWJsZSB0byByZXRyaWV2ZSBzdHJ1Y3Rfb3BzIGRhdGFcIik7XG5AQCAtMTA5LDEzICsxMjcsNiBAQCBzdGF0aWMgdm9pZCBsb2FkX3Byb2dyYW1zKGNvbnN0IHN0cnVjdCB0ZXN0X3Byb2dyYW0gcHJvZ3JhbXNbXSxcbiBcdFx0Km9wc19oaWRfaWQgPSBzZWxmLVx1MDAzZWhpZC5oaWRfaWQ7XG4gXHR9XG4gXG4tXHQvKiB3ZSBkaXNhYmxlIHRoZSBhdXRvLWF0dGFjaCBmZWF0dXJlIG9mIGFsbCBtYXBzIGJlY2F1c2Ugd2Vcbi1cdCAqIG9ubHkgd2FudCB0aGUgdGVzdGVkIG9uZSB0byBiZSBtYW51YWxseSBhdHRhY2hlZCBpbiB0aGUgbmV4dFxuLVx0ICogY2FsbCB0byBicGZfbWFwX19hdHRhY2hfc3RydWN0X29wcygpXG4tXHQgKi9cbi1cdGJwZl9vYmplY3RfX2Zvcl9lYWNoX21hcChpdGVyX21hcCwgKnNlbGYtXHUwMDNlc2tlbC1cdTAwM2Vza2VsZXRvbi1cdTAwM2VvYmopXG4tXHRcdGJwZl9tYXBfX3NldF9hdXRvYXR0YWNoKGl0ZXJfbWFwLCBmYWxzZSk7XG4tXG4gXHRlcnIgPSBoaWRfX2xvYWQoc2VsZi1cdTAwM2Vza2VsKTtcbiBcdEFTU0VSVF9PSyhlcnIpIFRIX0xPRyhcImhpZF9za2VsX2xvYWQgZmFpbGVkOiAlZFwiLCBlcnIpO1xuIFxuQEAgLTg4Nyw2ICs4OTgsMTcgQEAgVEVTVF9GKGhpZF9icGYsIHRlc3RfcmRlc2NfZml4dXApXG4gXHRBU1NFUlRfRVEocnB0X2Rlc2MudmFsdWVbNF0sIDB4NDIpO1xuIH1cbiBcbitURVNUX0YoaGlkX2JwZiwgdGVzdF9yZGVzY19maXh1cF9nZXRfZGF0YV9vdmVyZmxvdylcbit7XG4rXHRjb25zdCBzdHJ1Y3QgdGVzdF9wcm9ncmFtIHByb2dzW10gPSB7XG4rXHRcdHsgLm5hbWUgPSBcImhpZF9yZGVzY19maXh1cF9nZXRfZGF0YV9vdmVyZmxvd1wiIH0sXG4rXHR9O1xuK1xuK1x0TE9BRF9QUk9HUkFNUyhwcm9ncyk7XG4rXG4rXHRBU1NFUlRfRVEoc2VsZi1cdTAwM2Vza2VsLVx1MDAzZWJzcy1cdTAwM2VnZXRfZGF0YV9vdmVyZmxvd19jaGVjaywgMSk7XG4rfVxuK1xuIHN0YXRpYyBpbnQgbGliYnBmX3ByaW50X2ZuKGVudW0gbGliYnBmX3ByaW50X2xldmVsIGxldmVsLFxuIFx0XHRcdCAgIGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCBhcmdzKVxuIHtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmNcbmluZGV4IDVlY2M4NDVlZjc5MjE2Li5iMjFmYmIxM2M5MjZmOCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jXG5AQCAtMTMsNiArMTMsNyBAQCBzdHJ1Y3QgYXR0YWNoX3Byb2dfYXJncyB7XG4gXG4gX191NjQgY2FsbGJhY2tfY2hlY2sgPSA1MjtcbiBfX3U2NCBjYWxsYmFjazJfY2hlY2sgPSA1MjtcbitfX3U2NCBnZXRfZGF0YV9vdmVyZmxvd19jaGVjaztcbiBcbiBTRUMoXCI/c3RydWN0X29wcy9oaWRfZGV2aWNlX2V2ZW50XCIpXG4gaW50IEJQRl9QUk9HKGhpZF9maXJzdF9ldmVudCwgc3RydWN0IGhpZF9icGZfY3R4ICpoaWRfY3R4LCBlbnVtIGhpZF9yZXBvcnRfdHlwZSB0eXBlKVxuQEAgLTI0MCw2ICsyNDEsMjAgQEAgc3RydWN0IGhpZF9icGZfb3BzIHJkZXNjX2ZpeHVwID0ge1xuIFx0LmhpZF9yZGVzY19maXh1cCA9ICh2b2lkICopaGlkX3JkZXNjX2ZpeHVwLFxuIH07XG4gXG4rU0VDKFwiP3N0cnVjdF9vcHMucy9oaWRfcmRlc2NfZml4dXBcIilcbitpbnQgQlBGX1BST0coaGlkX3JkZXNjX2ZpeHVwX2dldF9kYXRhX292ZXJmbG93LCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhpZF9jdHgpXG4re1xuK1x0aWYgKCFoaWRfYnBmX2dldF9kYXRhKGhpZF9jdHgsIDIgLyogb2Zmc2V0ICovLCB+MFVMTCAvKiBzaXplICovKSlcbitcdFx0Z2V0X2RhdGFfb3ZlcmZsb3dfY2hlY2sgPSAxO1xuK1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK1NFQyhcIi5zdHJ1Y3Rfb3BzLmxpbmtcIilcbitzdHJ1Y3QgaGlkX2JwZl9vcHMgcmRlc2NfZml4dXBfZ2V0X2RhdGFfb3ZlcmZsb3cgPSB7XG4rXHQuaGlkX3JkZXNjX2ZpeHVwID0gKHZvaWQgKiloaWRfcmRlc2NfZml4dXBfZ2V0X2RhdGFfb3ZlcmZsb3csXG4rfTtcbitcbiBTRUMoXCI/c3RydWN0X29wcy9oaWRfZGV2aWNlX2V2ZW50XCIpXG4gaW50IEJQRl9QUk9HKGhpZF90ZXN0X2luc2VydDEsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGlkX2N0eCwgZW51bSBoaWRfcmVwb3J0X3R5cGUgdHlwZSlcbiB7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QwNjo1MTo0NS43ODkxNTAxODRaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2Mzc1NjgxODQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEtlcm5lbCBQYXRjaDogT3ZlcmZsb3cgQ2hlY2tzIGluIEhJRCBCUEYgRGF0YSBBY2Nlc3MqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIGhlcmUuIEl0J3MgdG91Y2hpbmcgYGRyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX2Rpc3BhdGNoLmNgIGFuZCBpbmNsdWRlcyBzb21lIHNlbGZ0ZXN0cyBpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkYC4gVGhlIG1lYXQgb2YgdGhlIGNoYW5nZSBpcyBpbiB0aGF0IGBoaWRfYnBmX2Rpc3BhdGNoLmNgIGZpbGUuIFNwZWNpZmljYWxseSwgaXQncyBhZGRpbmcgYW4gb3ZlcmZsb3cgY2hlY2sgd2l0aGluIHRoZSBgaGlkX2JwZl9nZXRfZGF0YWAgZnVuY3Rpb24uIFdlJ3JlIHRhbGtpbmcgYWJvdXQgYSBmdW5jdGlvbmFsIG1vZGlmaWNhdGlvbiB0byB0aGUga2VybmVsIGhlcmUsIHNvIHdlIG5lZWQgdG8gYmUgdmVyeSBwcmVjaXNlLlxuXG5Fc3NlbnRpYWxseSwgdGhleSBhcmUgYWRkaW5nIGEgY2hlY2sgd2l0aGluIHRoZSBgaGlkX2JwZl9nZXRfZGF0YWAgZnVuY3Rpb24gdG8gcHJldmVudCBwb3RlbnRpYWwgaW50ZWdlciBvdmVyZmxvd3Mgd2hlbiBjYWxjdWxhdGluZyB0aGUgZW5kIGFkZHJlc3Mgb2YgYSBkYXRhIGJ1ZmZlci4gVGhpcyBpcyBhIGdvb2QgcHJhY3RpY2UsIGFuZCBpdCdzIGEgY3JpdGljYWwgc2FmZXR5IGZlYXR1cmUgd2hlbiBkZWFsaW5nIHdpdGggbWVtb3J5IGFjY2VzcyB3aXRoaW4gdGhlIGtlcm5lbCwgZXNwZWNpYWxseSB3aXRoaW4gQlBGIHByb2dyYW1zLlxuXG5UaGUgcXVlc3Rpb24gbm93IGlzLCBpcyB0aGlzIGNvZGUgcGF0aCBhY3R1YWxseSAqcmVhY2hhYmxlKj8gSXMgdGhpcyBjaGFuZ2UgcG90ZW50aWFsbHkgaW1wYWN0ZnVsPyBBYnNvbHV0ZWx5LCB5ZXMsIGl0IGlzLiBUaGUgYGhpZF9icGZfZ2V0X2RhdGFgIGZ1bmN0aW9uIGlzIGEgQlBGIGtmdW5jLiBHaXZlbiB0aGUgcHJvbWluZW5jZSBvZiBCUEYgaW4gdGhlc2UgbW9kZXJuIGtlcm5lbHMsIGl0J3MgYSBoZWF2aWx5IHVzZWQgZnVuY3Rpb24uIFRoaXMgdGVsbHMgdXMgdGhpcyBjaGVjayBjb3VsZCBiZSB2ZXJ5IGltcG9ydGFudC5cblxuQWxyaWdodCwgc28gbGV0J3MgdmVyaWZ5IHRoYXQgdGhlIGNvZGUgKmlzKiBidWlsdC4gYGRyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX2Rpc3BhdGNoLmNgIHdpbGwgYmUgY29tcGlsZWQgaWYgYENPTkZJR19ISURfQlBGYCBpcyBlbmFibGVkLiBUaGF0J3MgdGhlIGdhdGVrZWVwZXIuIFdlJ2xsIG5lZWQgdG8gY29uZmlybSB0aGF0IHRoaXMgY29uZmlnIGlzLCBpbiBmYWN0LCBlbmFibGVkIGluIHRoZSB0YXJnZXQgZW52aXJvbm1lbnRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzY0LCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzU5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMDY6NTE6NTIuMTY0ODM0Njk0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMxMjk5OTk2MTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaGlkX2JwZl9kaXNwYXRjaC5vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvaGlkL2JwZi9NYWtlZmlsZT04PW9iai0kKENPTkZJR19ISURfQlBGKSArPSBoaWRfYnBmLm9cXG5kcml2ZXJzL2hpZC9icGYvTWFrZWZpbGU6OTpDRkxBR1NfaGlkX2JwZl9kaXNwYXRjaC5vICs9IC1JJChMSUJCUEZfSU5DTFVERSlcXG5kcml2ZXJzL2hpZC9icGYvTWFrZWZpbGUtMTAtQ0ZMQUdTX2hpZF9icGZfam1wX3RhYmxlLm8gKz0gLUkkKExJQkJQRl9JTkNMVURFKVxcbmRyaXZlcnMvaGlkL2JwZi9NYWtlZmlsZToxMTpoaWRfYnBmLW9ianMgKz0gaGlkX2JwZl9kaXNwYXRjaC5vIGhpZF9icGZfc3RydWN0X29wcy5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDA2OjUxOjU1LjI5NDg0MDg5NloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwMzg1MjM5MzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqS2VybmVsIENvbmZpZ3VyYXRpb24gRGVlcCBEaXZlKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMga2VybmVsIGNvbmZpZ3VyYXRpb24gc3BhY2UsIGFuZCBpdCBsb29rcyBsaWtlIGBDT05GSUdfSElEX0JQRmAgaXMgYSBrZXkgcGllY2Ugb2YgdGhlIHB1enpsZSBoZXJlLiBJIGtub3cgdGhhdCBCUEYga2Z1bmNzLCBpbiBnZW5lcmFsLCB1c3VhbGx5IHJlcXVpcmUgYENPTkZJR19CUEZfU1lTQ0FMTGAgYW5kIGBDT05GSUdfQlBGX0pJVGAgdG8gYmUgZW5hYmxlZC4gSSdtIHJlYXNvbmFibHkgc3VyZSBgSElEX0JQRmAgbGlrZWx5IGRlcGVuZHMgb24gdGhlc2UgYXMgd2VsbC4gSSBuZWVkIHRvIGNvbmZpcm0gdGhpcyBkZXBlbmRlbmN5IHRvIGJlIGNlcnRhaW4gb2YgdGhlIGNvcnJlY3QgY29uZmlndXJhdGlvbi4gVGhlcmVmb3JlLCBteSBuZXh0IHN0ZXAgaXMgdG8gY2FyZWZ1bGx5IGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMgb2YgYENPTkZJR19ISURfQlBGYCBhbmQgYnVpbGQgYSBzdWl0YWJsZSBjb25maWd1cmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjM5LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMDY6NTE6NTguMzMzMzY2ODgxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0OTU0OTg0NzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEhJRF9CUEZcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9oaWQvYnBmL0tjb25maWc9Mj1tZW51IFxcXCJISUQtQlBGIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9oaWQvYnBmL0tjb25maWctMy1cXG5kcml2ZXJzL2hpZC9icGYvS2NvbmZpZzo0OmNvbmZpZyBISURfQlBGXFxuZHJpdmVycy9oaWQvYnBmL0tjb25maWctNS1cXHRib29sIFxcXCJISUQtQlBGIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDA2OjUyOjAwLjgyODg3NTc0OVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4NDQ1NDYzNTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgYXMgaWYgdGhleSdyZSBteSBvd246XG5cbioqQW5hbHl6aW5nIHRoZSBISUQgQlBGIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqXG5cbkFscmlnaHQsIEknbSBnb2luZyB0byB0YWtlIGEgbG9vayBhdCB0aGUgYGRyaXZlcnMvaGlkL2JwZi9LY29uZmlnYCBmaWxlLiBJJ20gaW1tZWRpYXRlbHkgaW50ZXJlc3RlZCBpbiBzZWVpbmcgaG93IHRoZSBCUEYgZnVuY3Rpb25hbGl0eSBmb3IgSElEIGRldmljZXMgaXMgY29uZmlndXJlZC4gSSdtIGV4cGVjdGluZyB0byBmaW5kIGEgc2VyaWVzIG9mIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgcHJvYmFibHkgdXNpbmcgdGhlIGBjb25maWdgIGtleXdvcmQsIG5lc3RlZCB3aXRoaW4gcG90ZW50aWFsbHkgY29uZGl0aW9uYWwgYmxvY2tzIGRlZmluZWQgYnkgYGlmYCBzdGF0ZW1lbnRzLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIGFueSBkZXBlbmRlbmNpZXMg4oCTIHdoYXQgb3RoZXIga2VybmVsIGZlYXR1cmVzIG9yIG1vZHVsZXMgbmVlZCB0byBiZSBlbmFibGVkIGJlZm9yZSB0aGUgQlBGIEhJRCBmdW5jdGlvbmFsaXR5IGNhbiBldmVuIGJlIGNvbnNpZGVyZWQ/IEkgd2FudCB0byB1bmRlcnN0YW5kIHRoZSBsZXZlbCBvZiBncmFudWxhcml0eSBhdmFpbGFibGU7IGFyZSB3ZSB0YWxraW5nIGFib3V0IHBlci1kZXZpY2Ugb3B0aW9ucywgb3Igc29tZXRoaW5nIG1vcmUgZ2xvYmFsIHRoYXQgYXBwbGllcyB0byBhbGwgSElEIEJQRiB1c2FnZT8gQXJlIHRoZXJlIGRpZmZlcmVudCBsZXZlbHMgb2YgQlBGIHN1cHBvcnQsIHBlcmhhcHMgd2l0aCBkaWZmZXJlbnQgcGVyZm9ybWFuY2Ugb3Igc2VjdXJpdHkgdHJhZGUtb2Zmcz8gTXkgZm9jdXMgd2lsbCBiZSBvbiB0aGUgc3RydWN0dXJlLCB0aGUgZGVwZW5kZW5jaWVzLCBhbmQgdGhlIG5hdHVyZSBvZiB0aGUgY29uZmlndXJhdGlvbiBjaG9pY2VzIGF2YWlsYWJsZSB0byB0aGUgdXNlci4gSSdsbCBtZW50YWxseSBtYXAgb3V0IHRoZSBpbXBsaWNhdGlvbnMgb2YgZWFjaCBvcHRpb24gYW5kIGNvbnNpZGVyIGhvdyB0aGVzZSBjaG9pY2VzIG1pZ2h0IGltcGFjdCBwZXJmb3JtYW5jZSwgc2VjdXJpdHksIGFuZCBvdmVyYWxsIGZsZXhpYmlsaXR5IGluIHVzaW5nIEJQRiB3aXRoIEhJRCBkZXZpY2VzLiBFc3NlbnRpYWxseSwgSSdtIHRyeWluZyB0byBnZXQgYSBmZWVsIGZvciBob3cgdGhlIGtlcm5lbCBleHBvc2VzIHRoaXMgZnVuY3Rpb25hbGl0eSBhbmQgaG93IGEgZGV2ZWxvcGVyIGNhbiBsZXZlcmFnZSBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDk1MCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDA2OjUyOjA0LjY3MzQyNDIwMloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4MjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvaGlkL2JwZi9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRtZW51IFxcXCJISUQtQlBGIHN1cHBvcnRcXFwiXFxuICAgMzpcXHRcXG4gICA0OlxcdGNvbmZpZyBISURfQlBGXFxuICAgNTpcXHRcXHRib29sIFxcXCJISUQtQlBGIHN1cHBvcnRcXFwiXFxuICAgNjpcXHRcXHRkZXBlbmRzIG9uIEJQRl9KSVRcXG4gICA3OlxcdFxcdGRlcGVuZHMgb24gQlBGX1NZU0NBTExcXG4gICA4OlxcdFxcdGRlcGVuZHMgb24gRFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFNcXG4gICA5OlxcdFxcdGhlbHBcXG4gIDEwOlxcdFxcdFRoaXMgb3B0aW9uIGFsbG93cyB0byBzdXBwb3J0IGVCUEYgcHJvZ3JhbXMgb24gdGhlIEhJRCBzdWJzeXN0ZW0uXFxuICAxMTpcXHRcXHRlQlBGIHByb2dyYW1zIGNhbiBmaXggSElEIGRldmljZXMgaW4gYSBsaWdodGVyIHdheSB0aGFuIGEgZnVsbFxcbiAgMTI6XFx0XFx0a2VybmVsIHBhdGNoIGFuZCBhbGxvdyBhIGxvdCBtb3JlIGZsZXhpYmlsaXR5LlxcbiAgMTM6XFx0XFxuICAxNDpcXHRcXHRGb3IgZG9jdW1lbnRhdGlvbiwgc2VlIERvY3VtZW50YXRpb24vaGlkL2hpZC1icGYucnN0XFxuICAxNTpcXHRcXG4gIDE2OlxcdGVuZG1lbnVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMDY6NTI6MDQuNjczNDgzNjAyWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODE3OTk1MzMzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFRhcmdldCBJZGVudGlmaWNhdGlvbjogSElEIEJQRiBEYXRhIFJldHJpZXZhbCoqXG5cbk9rYXksIHNvIEkndmUgZ290IGBISURfQlBGYCBhcyB0aGUgcmVsZXZhbnQgY29uZmlnLCBhbmQgdGhlIHRhcmdldCBmdW5jdGlvbiBpcyBgaGlkX2JwZl9nZXRfZGF0YWAuIEZyb20gdGhlIGxvb2tzIG9mIGl0LCB0aGlzIGlzIGEgZGVmaW5pdGUgXCJ5ZXNcIiBmb3IgZnV6emluZy4gSXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBzcGVjaWZpY2FsbHkgYWRkcmVzc2luZyBhbiBpbnRlZ2VyIG92ZXJmbG93IGluIGEgQlBGIGtmdW5jLiBNeSBmb2N1cyB3aWxsIGJlIHNxdWFyZWx5IG9uIGBoaWRfYnBmX2dldF9kYXRhYC4gSSdsbCBuZWVkIHRvIGVuYWJsZSB0aGUgYEhJRF9CUEZgIGNvbmZpZywgbmF0dXJhbGx5LlxuXG5Ob3csIGxldCdzIGp1c3QgY29uZmlybSBpZiB0aGlzIGlzIGEgaG90IHBhdGguIEl0J3MgY2FsbGVkIGZyb20gQlBGIHByb2dyYW1zIHRoYXQgYXJlIGF0dGFjaGVkIHRvIEhJRCBldmVudHMsIHNvIGl0IGNvdWxkIGJlIGNhbGxlZCBwcmV0dHkgZnJlcXVlbnRseSBkZXBlbmRpbmcgb24gdGhlIGFjdGl2aXR5IG9mIHRoZSBkZXZpY2UuIEJ1dCBpdCdzIHRoaXMgKnNwZWNpZmljKiBmdW5jdGlvbiB0aGF0IHdhcyBhbHRlcmVkLiBJdCdzIGEga2Z1bmMsIHNvIGl0J3MgY2FsbGVkIGRpcmVjdGx5IGZyb20gQlBGIGNvZGUg4oCTIHdoaWNoIG1ha2VzIGl0IGEgZ29vZCB0YXJnZXQuXG5cbkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHJlbGF0ZWQgY29uZmlncywgZXZlbiB0aG91Z2ggSSd2ZSBhbHJlYWR5IGNvbmZpcm1lZCBgSElEX0JQRmAgaXMgdGhlIG1haW4gb25lLiBPa2F5LCBgSElEX0JQRmAgZGVwZW5kcyBvbiBgQlBGX0pJVGAsIGBCUEZfU1lTQ0FMTGAsIGFuZCBgRFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFNgLiBCdXQgZm9jdXNpbmcgb24ganVzdCBgSElEX0JQRmAgaXMgZmluZSBpbiB0aGlzIGNhc2UuXG5cbkxldCdzIHF1aWNrbHkgdmVyaWZ5IHRoZSB3aG9sZSBsaW5lIG9mIHJlYXNvbmluZy4gVGhlIHBhdGNoIGFkZHJlc3NlcyBhbiBpbnRlZ2VyIG92ZXJmbG93IHdpdGhpbiBgaGlkX2JwZl9nZXRfZGF0YWAuIFRoaXMgaXMgYSBCUEYga2Z1bmMgYWNjZXNzaWJsZSB0byBISUQgQlBGIHByb2dyYW1zLiBGdXp6aW5nICp0aGlzKiBmdW5jdGlvbiBpcyBpbXBvcnRhbnQgYmVjYXVzZSBpdCdsbCBlbnN1cmUgdGhlIG92ZXJmbG93IGNoZWNrIGRvZXMgd2hhdCBpdCdzIHN1cHBvc2VkIHRvIGRvIGFuZCB0aGVyZSBhcmUgbm8gb3RoZXIgdnVsbmVyYWJpbGl0aWVzIGluIHRoZSBkYXRhIHJldHJpZXZhbC5cblxuSSdsbCBqdXN0IGNvbmZpcm0gYGhpZF9icGZfZ2V0X2RhdGFgIGlzIHRoZSAqb25seSogbW9kaWZpZWQga2VybmVsIGZ1bmN0aW9uLiBZdXAsIG9ubHkgdGhlIGZpbGUgYGhpZF9icGZfZGlzcGF0Y2guY2Agd2FzIG1vZGlmaWVkIGluIHRoZSBrZXJuZWwsIGFuZCB0aGUgcmVzdCBvZiB0aGUgY2hhbmdlcyBhcmUgc2VsZnRlc3RzLlxuXG5gYGBqc29uXG57XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWUsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcImhpZF9icGZfZ2V0X2RhdGFcIl0sXG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXCJISURfQlBGXCJdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBpbnRlZ2VyIG92ZXJmbG93IGluIHRoZSBoaWRfYnBmX2dldF9kYXRhIEJQRiBrZnVuYywgd2hpY2ggaXMgZXhwb3NlZCB0byBISUQgQlBGIHByb2dyYW1zLiBGdXp6aW5nIHRoaXMgZnVuY3Rpb24gZW5zdXJlcyB0aGUgb3ZlcmZsb3cgY2hlY2sgY29ycmVjdGx5IHByZXZlbnRzIG91dC1vZi1ib3VuZHMgYWNjZXNzLlwiXG59XG5gYGBcblxuXG4iLCJJbnB1dFRva2VucyI6NTQ5NCwiT3V0cHV0VG9rZW5zIjo5NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyNywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDA2OjUyOjEyLjg1MzQzOTUxOFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNTkyOTUwNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSElEX0JQRlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImhpZF9icGZfZ2V0X2RhdGFcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBpbnRlZ2VyIG92ZXJmbG93IGluIHRoZSBoaWRfYnBmX2dldF9kYXRhIEJQRiBrZnVuYywgd2hpY2ggaXMgZXhwb3NlZCB0byBISUQgQlBGIHByb2dyYW1zLiBGdXp6aW5nIHRoaXMgZnVuY3Rpb24gZW5zdXJlcyB0aGUgb3ZlcmZsb3cgY2hlY2sgY29ycmVjdGx5IHByZXZlbnRzIG91dC1vZi1ib3VuZHMgYWNjZXNzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkhJRF9CUEZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJoaWRfYnBmX2dldF9kYXRhXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gaW50ZWdlciBvdmVyZmxvdyBpbiB0aGUgaGlkX2JwZl9nZXRfZGF0YSBCUEYga2Z1bmMsIHdoaWNoIGlzIGV4cG9zZWQgdG8gSElEIEJQRiBwcm9ncmFtcy4gRnV6emluZyB0aGlzIGZ1bmN0aW9uIGVuc3VyZXMgdGhlIG92ZXJmbG93IGNoZWNrIGNvcnJlY3RseSBwcmV2ZW50cyBvdXQtb2YtYm91bmRzIGFjY2Vzcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowpkgbc[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-23 06:42:27 +0000 UTC FinishedAt: 2026-06-23 06:52:14 +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": "a975094bf98ca97be9146f9d3b5681a6f9cf5ce3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "HID_BPF" ], "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": "a975094bf98ca97be9146f9d3b5681a6f9cf5ce3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "HID_BPF" ], "series_id": "a1fb4ad0-6efb-4212-8a11-d2f82cedf423" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "hid_bpf_get_data" ], "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+CgkJCTx0ZD4yMDI2LzA2LzIzIDA2OjUxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0hJRF9CUEYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtoaWRfYnBmX2dldF9kYXRhJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIGludGVnZXIgb3ZlcmZsb3cgaW4gdGhlIGhpZF9icGZfZ2V0X2RhdGEgQlBGIGtmdW5jLCB3aGljaCBpcyBleHBvc2VkIHRvIEhJRCBCUEYgcHJvZ3JhbXMuIEZ1enppbmcgdGhpcyBmdW5jdGlvbiBlbnN1cmVzIHRoZSBvdmVyZmxvdyBjaGVjayBjb3JyZWN0bHkgcHJldmVudHMgb3V0LW9mLWJvdW5kcyBhY2Nlc3MuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMDY6NTE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBjODg1YTVlZTBlMWM3MTljMTliZjdmNWM2NDNlNmQ4MGQxODA0ODAxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdW4gMjMgMDY6NTE6NDMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfZGlzcGF0Y2guYyBiL2RyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX2Rpc3BhdGNoLmNcbmluZGV4IGQwMTMwNjU4MDkxYjAyLi41MzZmNmQwMWZkMTRjNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX2Rpc3BhdGNoLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX2Rpc3BhdGNoLmNcbkBAIC0xNyw2ICYjNDM7MTcsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2tmaWZvLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9taW5tYXguaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21vZHVsZS5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L292ZXJmbG93LmhcdTAwM2VcbiAjaW5jbHVkZSBcJiMzNDtoaWRfYnBmX2Rpc3BhdGNoLmhcJiMzNDtcbiBcbiBjb25zdCBzdHJ1Y3QgaGlkX29wcyAqaGlkX29wcztcbkBAIC0yOTYsMTAgJiM0MzsyOTcsMTIgQEAgX19icGZfa2Z1bmMgX191OCAqXG4gaGlkX2JwZl9nZXRfZGF0YShzdHJ1Y3QgaGlkX2JwZl9jdHggKmN0eCwgdW5zaWduZWQgaW50IG9mZnNldCwgY29uc3Qgc2l6ZV90IHJkd3JfYnVmX3NpemUpXG4ge1xuIFx0c3RydWN0IGhpZF9icGZfY3R4X2tlcm4gKmN0eF9rZXJuO1xuJiM0MztcdHNpemVfdCBlbmQ7XG4gXG4gXHRjdHhfa2VybiA9IGNvbnRhaW5lcl9vZihjdHgsIHN0cnVjdCBoaWRfYnBmX2N0eF9rZXJuLCBjdHgpO1xuIFxuLVx0aWYgKHJkd3JfYnVmX3NpemUgJiM0Mzsgb2Zmc2V0IFx1MDAzZSBjdHgtXHUwMDNlYWxsb2NhdGVkX3NpemUpXG4mIzQzO1x0aWYgKGNoZWNrX2FkZF9vdmVyZmxvdyhyZHdyX2J1Zl9zaXplLCBvZmZzZXQsIFx1MDAyNmVuZCkgfHxcbiYjNDM7XHQgICAgZW5kIFx1MDAzZSBjdHgtXHUwMDNlYWxsb2NhdGVkX3NpemUpXG4gXHRcdHJldHVybiBOVUxMO1xuIFxuIFx0cmV0dXJuIGN0eF9rZXJuLVx1MDAzZWRhdGEgJiM0Mzsgb2Zmc2V0O1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9NYWtlZmlsZSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9NYWtlZmlsZVxuaW5kZXggOTYwNzFiNDgwMGU4MmEuLjJmNDIzZGU4MzE0NzNhIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL01ha2VmaWxlXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvTWFrZWZpbGVcbkBAIC0yNCw3ICYjNDM7MjQsNyBAQCBDWFggPz0gJChDUk9TU19DT01QSUxFKWcmIzQzOyYjNDM7XG4gXG4gSE9TVFBLR19DT05GSUcgOj0gcGtnLWNvbmZpZ1xuIFxuLUNGTEFHUyAmIzQzOz0gLWcgLU8wIC1yZHluYW1pYyAtV2FsbCAtV2Vycm9yIC1JJChPVVRQVVQpXG4mIzQzO0NGTEFHUyAmIzQzOz0gLWcgLU8wIC1yZHluYW1pYyAtV2FsbCAtV2Vycm9yIC1JJChPVVRQVVQpICQoS0hEUl9JTkNMVURFUylcbiBDRkxBR1MgJiM0Mzs9IC1JJChPVVRQVVQpL3Rvb2xzL2luY2x1ZGVcbiBcbiBMRExJQlMgJiM0Mzs9IC1sZWxmIC1seiAtbHJ0IC1scHRocmVhZFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9oaWRfYnBmLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvaGlkX2JwZi5jXG5pbmRleCAxZTk3OWZiMzU0MmJhYi4uYjg1MTMzOTMwOGMyMTQgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvaGlkX2JwZi5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvaGlkX2JwZi5jXG5AQCAtODYsNiAmIzQzOzg2LDIwIEBAIHN0YXRpYyB2b2lkIGxvYWRfcHJvZ3JhbXMoY29uc3Qgc3RydWN0IHRlc3RfcHJvZ3JhbSBwcm9ncmFtc1tdLFxuIFx0c2VsZi1cdTAwM2Vza2VsID0gaGlkX19vcGVuKCk7XG4gXHRBU1NFUlRfT0tfUFRSKHNlbGYtXHUwMDNlc2tlbCkgVEVBUkRPV05fTE9HKFwmIzM0O0Vycm9yIHdoaWxlIGNhbGxpbmcgaGlkX19vcGVuXCYjMzQ7KTtcbiBcbiYjNDM7XHQvKlxuJiM0MztcdCAqIERpc2FibGUgYWxsIHN0cnVjdF9vcHMgbWFwcyBieSBkZWZhdWx0IHNvIGxpYmJwZiBkb2VzIG5vdCBhdXRvbG9hZFxuJiM0MztcdCAqIHByb2dyYW1zIHJlZmVyZW5jZWQgYnkgbWFwcyB0aGF0IGFyZSB1bnJlbGF0ZWQgdG8gdGhlIGN1cnJlbnQgdGVzdC5cbiYjNDM7XHQgKi9cbiYjNDM7XHRicGZfb2JqZWN0X19mb3JfZWFjaF9tYXAoaXRlcl9tYXAsICpzZWxmLVx1MDAzZXNrZWwtXHUwMDNlc2tlbGV0b24tXHUwMDNlb2JqKSB7XG4mIzQzO1x0XHRpZiAoYnBmX21hcF9fdHlwZShpdGVyX21hcCkgPT0gQlBGX01BUF9UWVBFX1NUUlVDVF9PUFMpIHtcbiYjNDM7XHRcdFx0ZXJyID0gYnBmX21hcF9fc2V0X2F1dG9jcmVhdGUoaXRlcl9tYXAsIGZhbHNlKTtcbiYjNDM7XHRcdFx0QVNTRVJUX09LKGVycikgVEhfTE9HKFwmIzM0O2NhbiBub3QgZGlzYWJsZSBzdHJ1Y3Rfb3BzIG1hcCAmIzM5OyVzJiMzOTtcJiMzNDssXG4mIzQzO1x0XHRcdFx0XHQgICAgICBicGZfbWFwX19uYW1lKGl0ZXJfbWFwKSk7XG4mIzQzO1x0XHR9XG4mIzQzO1xuJiM0MztcdFx0YnBmX21hcF9fc2V0X2F1dG9hdHRhY2goaXRlcl9tYXAsIGZhbHNlKTtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0Zm9yIChpbnQgaSA9IDA7IGkgXHUwMDNjIHByb2dzX2NvdW50OyBpJiM0MzsmIzQzOykge1xuIFx0XHRzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2c7XG4gXHRcdHN0cnVjdCBicGZfbWFwICptYXA7XG5AQCAtMTAyLDYgJiM0MzsxMTYsMTAgQEAgc3RhdGljIHZvaWQgbG9hZF9wcm9ncmFtcyhjb25zdCBzdHJ1Y3QgdGVzdF9wcm9ncmFtIHByb2dyYW1zW10sXG4gXHRcdEFTU0VSVF9PS19QVFIobWFwKSBUSF9MT0coXCYjMzQ7Y2FuIG5vdCBmaW5kIHN0cnVjdF9vcHMgYnkgbmFtZSAmIzM5OyVzJiMzOTtcJiMzNDssXG4gXHRcdFx0XHRcdCAgcHJvZ3JhbXNbaV0ubmFtZSAmIzQzOyA0KTtcbiBcbiYjNDM7XHRcdGVyciA9IGJwZl9tYXBfX3NldF9hdXRvY3JlYXRlKG1hcCwgdHJ1ZSk7XG4mIzQzO1x0XHRBU1NFUlRfT0soZXJyKSBUSF9MT0coXCYjMzQ7Y2FuIG5vdCBlbmFibGUgc3RydWN0X29wcyBtYXAgJiMzOTslcyYjMzk7XCYjMzQ7LFxuJiM0MztcdFx0XHRcdCAgICAgIHByb2dyYW1zW2ldLm5hbWUgJiM0MzsgNCk7XG4mIzQzO1xuIFx0XHQvKiBoaWRfaWQgaXMgdGhlIGZpcnN0IGZpZWxkIG9mIHN0cnVjdCBoaWRfYnBmX29wcyAqL1xuIFx0XHRvcHNfaGlkX2lkID0gYnBmX21hcF9faW5pdGlhbF92YWx1ZShtYXAsIE5VTEwpO1xuIFx0XHRBU1NFUlRfT0tfUFRSKG9wc19oaWRfaWQpIFRIX0xPRyhcJiMzNDt1bmFibGUgdG8gcmV0cmlldmUgc3RydWN0X29wcyBkYXRhXCYjMzQ7KTtcbkBAIC0xMDksMTMgJiM0MzsxMjcsNiBAQCBzdGF0aWMgdm9pZCBsb2FkX3Byb2dyYW1zKGNvbnN0IHN0cnVjdCB0ZXN0X3Byb2dyYW0gcHJvZ3JhbXNbXSxcbiBcdFx0Km9wc19oaWRfaWQgPSBzZWxmLVx1MDAzZWhpZC5oaWRfaWQ7XG4gXHR9XG4gXG4tXHQvKiB3ZSBkaXNhYmxlIHRoZSBhdXRvLWF0dGFjaCBmZWF0dXJlIG9mIGFsbCBtYXBzIGJlY2F1c2Ugd2Vcbi1cdCAqIG9ubHkgd2FudCB0aGUgdGVzdGVkIG9uZSB0byBiZSBtYW51YWxseSBhdHRhY2hlZCBpbiB0aGUgbmV4dFxuLVx0ICogY2FsbCB0byBicGZfbWFwX19hdHRhY2hfc3RydWN0X29wcygpXG4tXHQgKi9cbi1cdGJwZl9vYmplY3RfX2Zvcl9lYWNoX21hcChpdGVyX21hcCwgKnNlbGYtXHUwMDNlc2tlbC1cdTAwM2Vza2VsZXRvbi1cdTAwM2VvYmopXG4tXHRcdGJwZl9tYXBfX3NldF9hdXRvYXR0YWNoKGl0ZXJfbWFwLCBmYWxzZSk7XG4tXG4gXHRlcnIgPSBoaWRfX2xvYWQoc2VsZi1cdTAwM2Vza2VsKTtcbiBcdEFTU0VSVF9PSyhlcnIpIFRIX0xPRyhcJiMzNDtoaWRfc2tlbF9sb2FkIGZhaWxlZDogJWRcJiMzNDssIGVycik7XG4gXG5AQCAtODg3LDYgJiM0Mzs4OTgsMTcgQEAgVEVTVF9GKGhpZF9icGYsIHRlc3RfcmRlc2NfZml4dXApXG4gXHRBU1NFUlRfRVEocnB0X2Rlc2MudmFsdWVbNF0sIDB4NDIpO1xuIH1cbiBcbiYjNDM7VEVTVF9GKGhpZF9icGYsIHRlc3RfcmRlc2NfZml4dXBfZ2V0X2RhdGFfb3ZlcmZsb3cpXG4mIzQzO3tcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgdGVzdF9wcm9ncmFtIHByb2dzW10gPSB7XG4mIzQzO1x0XHR7IC5uYW1lID0gXCYjMzQ7aGlkX3JkZXNjX2ZpeHVwX2dldF9kYXRhX292ZXJmbG93XCYjMzQ7IH0sXG4mIzQzO1x0fTtcbiYjNDM7XG4mIzQzO1x0TE9BRF9QUk9HUkFNUyhwcm9ncyk7XG4mIzQzO1xuJiM0MztcdEFTU0VSVF9FUShzZWxmLVx1MDAzZXNrZWwtXHUwMDNlYnNzLVx1MDAzZWdldF9kYXRhX292ZXJmbG93X2NoZWNrLCAxKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW50IGxpYmJwZl9wcmludF9mbihlbnVtIGxpYmJwZl9wcmludF9sZXZlbCBsZXZlbCxcbiBcdFx0XHQgICBjb25zdCBjaGFyICpmb3JtYXQsIHZhX2xpc3QgYXJncylcbiB7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jXG5pbmRleCA1ZWNjODQ1ZWY3OTIxNi4uYjIxZmJiMTNjOTI2ZjggMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuY1xuQEAgLTEzLDYgJiM0MzsxMyw3IEBAIHN0cnVjdCBhdHRhY2hfcHJvZ19hcmdzIHtcbiBcbiBfX3U2NCBjYWxsYmFja19jaGVjayA9IDUyO1xuIF9fdTY0IGNhbGxiYWNrMl9jaGVjayA9IDUyO1xuJiM0MztfX3U2NCBnZXRfZGF0YV9vdmVyZmxvd19jaGVjaztcbiBcbiBTRUMoXCYjMzQ7P3N0cnVjdF9vcHMvaGlkX2RldmljZV9ldmVudFwmIzM0OylcbiBpbnQgQlBGX1BST0coaGlkX2ZpcnN0X2V2ZW50LCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhpZF9jdHgsIGVudW0gaGlkX3JlcG9ydF90eXBlIHR5cGUpXG5AQCAtMjQwLDYgJiM0MzsyNDEsMjAgQEAgc3RydWN0IGhpZF9icGZfb3BzIHJkZXNjX2ZpeHVwID0ge1xuIFx0LmhpZF9yZGVzY19maXh1cCA9ICh2b2lkICopaGlkX3JkZXNjX2ZpeHVwLFxuIH07XG4gXG4mIzQzO1NFQyhcJiMzNDs/c3RydWN0X29wcy5zL2hpZF9yZGVzY19maXh1cFwmIzM0OylcbiYjNDM7aW50IEJQRl9QUk9HKGhpZF9yZGVzY19maXh1cF9nZXRfZGF0YV9vdmVyZmxvdywgc3RydWN0IGhpZF9icGZfY3R4ICpoaWRfY3R4KVxuJiM0Mzt7XG4mIzQzO1x0aWYgKCFoaWRfYnBmX2dldF9kYXRhKGhpZF9jdHgsIDIgLyogb2Zmc2V0ICovLCB+MFVMTCAvKiBzaXplICovKSlcbiYjNDM7XHRcdGdldF9kYXRhX292ZXJmbG93X2NoZWNrID0gMTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO1NFQyhcJiMzNDsuc3RydWN0X29wcy5saW5rXCYjMzQ7KVxuJiM0MztzdHJ1Y3QgaGlkX2JwZl9vcHMgcmRlc2NfZml4dXBfZ2V0X2RhdGFfb3ZlcmZsb3cgPSB7XG4mIzQzO1x0LmhpZF9yZGVzY19maXh1cCA9ICh2b2lkICopaGlkX3JkZXNjX2ZpeHVwX2dldF9kYXRhX292ZXJmbG93LFxuJiM0Mzt9O1xuJiM0MztcbiBTRUMoXCYjMzQ7P3N0cnVjdF9vcHMvaGlkX2RldmljZV9ldmVudFwmIzM0OylcbiBpbnQgQlBGX1BST0coaGlkX3Rlc3RfaW5zZXJ0MSwgc3RydWN0IGhpZF9icGZfY3R4ICpoaWRfY3R4LCBlbnVtIGhpZF9yZXBvcnRfdHlwZSB0eXBlKVxuIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAwNjo1MTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtISURfQlBGJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aGlkX2JwZl9nZXRfZGF0YSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBpbnRlZ2VyIG92ZXJmbG93IGluIHRoZSBoaWRfYnBmX2dldF9kYXRhIEJQRiBrZnVuYywgd2hpY2ggaXMgZXhwb3NlZCB0byBISUQgQlBGIHByb2dyYW1zLiBGdXp6aW5nIHRoaXMgZnVuY3Rpb24gZW5zdXJlcyB0aGUgb3ZlcmZsb3cgY2hlY2sgY29ycmVjdGx5IHByZXZlbnRzIG91dC1vZi1ib3VuZHMgYWNjZXNzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBjODg1YTVlZTBlMWM3MTljMTliZjdmNWM2NDNlNmQ4MGQxODA0ODAxCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBKdW4gMjMgMDY6NTE6NDMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9kaXNwYXRjaC5jIGIvZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfZGlzcGF0Y2guYwppbmRleCBkMDEzMDY1ODA5MWIwMi4uNTM2ZjZkMDFmZDE0YzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX2Rpc3BhdGNoLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfZGlzcGF0Y2guYwpAQCAtMTcsNiAmIzQzOzE3LDcgQEAKICNpbmNsdWRlICZsdDtsaW51eC9rZmlmby5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L21pbm1heC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L21vZHVsZS5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9vdmVyZmxvdy5oJmd0OwogI2luY2x1ZGUgJiMzNDtoaWRfYnBmX2Rpc3BhdGNoLmgmIzM0OwogCiBjb25zdCBzdHJ1Y3QgaGlkX29wcyAqaGlkX29wczsKQEAgLTI5NiwxMCAmIzQzOzI5NywxMiBAQCBfX2JwZl9rZnVuYyBfX3U4ICoKIGhpZF9icGZfZ2V0X2RhdGEoc3RydWN0IGhpZF9icGZfY3R4ICpjdHgsIHVuc2lnbmVkIGludCBvZmZzZXQsIGNvbnN0IHNpemVfdCByZHdyX2J1Zl9zaXplKQogewogCXN0cnVjdCBoaWRfYnBmX2N0eF9rZXJuICpjdHhfa2VybjsKJiM0MzsJc2l6ZV90IGVuZDsKIAogCWN0eF9rZXJuID0gY29udGFpbmVyX29mKGN0eCwgc3RydWN0IGhpZF9icGZfY3R4X2tlcm4sIGN0eCk7CiAKLQlpZiAocmR3cl9idWZfc2l6ZSAmIzQzOyBvZmZzZXQgJmd0OyBjdHgtJmd0O2FsbG9jYXRlZF9zaXplKQomIzQzOwlpZiAoY2hlY2tfYWRkX292ZXJmbG93KHJkd3JfYnVmX3NpemUsIG9mZnNldCwgJmFtcDtlbmQpIHx8CiYjNDM7CSAgICBlbmQgJmd0OyBjdHgtJmd0O2FsbG9jYXRlZF9zaXplKQogCQlyZXR1cm4gTlVMTDsKIAogCXJldHVybiBjdHhfa2Vybi0mZ3Q7ZGF0YSAmIzQzOyBvZmZzZXQ7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvTWFrZWZpbGUgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvTWFrZWZpbGUKaW5kZXggOTYwNzFiNDgwMGU4MmEuLjJmNDIzZGU4MzE0NzNhIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvTWFrZWZpbGUKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL01ha2VmaWxlCkBAIC0yNCw3ICYjNDM7MjQsNyBAQCBDWFggPz0gJChDUk9TU19DT01QSUxFKWcmIzQzOyYjNDM7CiAKIEhPU1RQS0dfQ09ORklHIDo9IHBrZy1jb25maWcKIAotQ0ZMQUdTICYjNDM7PSAtZyAtTzAgLXJkeW5hbWljIC1XYWxsIC1XZXJyb3IgLUkkKE9VVFBVVCkKJiM0MztDRkxBR1MgJiM0Mzs9IC1nIC1PMCAtcmR5bmFtaWMgLVdhbGwgLVdlcnJvciAtSSQoT1VUUFVUKSAkKEtIRFJfSU5DTFVERVMpCiBDRkxBR1MgJiM0Mzs9IC1JJChPVVRQVVQpL3Rvb2xzL2luY2x1ZGUKIAogTERMSUJTICYjNDM7PSAtbGVsZiAtbHogLWxydCAtbHB0aHJlYWQKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9oaWRfYnBmLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvaGlkX2JwZi5jCmluZGV4IDFlOTc5ZmIzNTQyYmFiLi5iODUxMzM5MzA4YzIxNCAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL2hpZF9icGYuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvaGlkX2JwZi5jCkBAIC04Niw2ICYjNDM7ODYsMjAgQEAgc3RhdGljIHZvaWQgbG9hZF9wcm9ncmFtcyhjb25zdCBzdHJ1Y3QgdGVzdF9wcm9ncmFtIHByb2dyYW1zW10sCiAJc2VsZi0mZ3Q7c2tlbCA9IGhpZF9fb3BlbigpOwogCUFTU0VSVF9PS19QVFIoc2VsZi0mZ3Q7c2tlbCkgVEVBUkRPV05fTE9HKCYjMzQ7RXJyb3Igd2hpbGUgY2FsbGluZyBoaWRfX29wZW4mIzM0Oyk7CiAKJiM0MzsJLyoKJiM0MzsJICogRGlzYWJsZSBhbGwgc3RydWN0X29wcyBtYXBzIGJ5IGRlZmF1bHQgc28gbGliYnBmIGRvZXMgbm90IGF1dG9sb2FkCiYjNDM7CSAqIHByb2dyYW1zIHJlZmVyZW5jZWQgYnkgbWFwcyB0aGF0IGFyZSB1bnJlbGF0ZWQgdG8gdGhlIGN1cnJlbnQgdGVzdC4KJiM0MzsJICovCiYjNDM7CWJwZl9vYmplY3RfX2Zvcl9lYWNoX21hcChpdGVyX21hcCwgKnNlbGYtJmd0O3NrZWwtJmd0O3NrZWxldG9uLSZndDtvYmopIHsKJiM0MzsJCWlmIChicGZfbWFwX190eXBlKGl0ZXJfbWFwKSA9PSBCUEZfTUFQX1RZUEVfU1RSVUNUX09QUykgewomIzQzOwkJCWVyciA9IGJwZl9tYXBfX3NldF9hdXRvY3JlYXRlKGl0ZXJfbWFwLCBmYWxzZSk7CiYjNDM7CQkJQVNTRVJUX09LKGVycikgVEhfTE9HKCYjMzQ7Y2FuIG5vdCBkaXNhYmxlIHN0cnVjdF9vcHMgbWFwICYjMzk7JXMmIzM5OyYjMzQ7LAomIzQzOwkJCQkJICAgICAgYnBmX21hcF9fbmFtZShpdGVyX21hcCkpOwomIzQzOwkJfQomIzQzOwomIzQzOwkJYnBmX21hcF9fc2V0X2F1dG9hdHRhY2goaXRlcl9tYXAsIGZhbHNlKTsKJiM0MzsJfQomIzQzOwogCWZvciAoaW50IGkgPSAwOyBpICZsdDsgcHJvZ3NfY291bnQ7IGkmIzQzOyYjNDM7KSB7CiAJCXN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZzsKIAkJc3RydWN0IGJwZl9tYXAgKm1hcDsKQEAgLTEwMiw2ICYjNDM7MTE2LDEwIEBAIHN0YXRpYyB2b2lkIGxvYWRfcHJvZ3JhbXMoY29uc3Qgc3RydWN0IHRlc3RfcHJvZ3JhbSBwcm9ncmFtc1tdLAogCQlBU1NFUlRfT0tfUFRSKG1hcCkgVEhfTE9HKCYjMzQ7Y2FuIG5vdCBmaW5kIHN0cnVjdF9vcHMgYnkgbmFtZSAmIzM5OyVzJiMzOTsmIzM0OywKIAkJCQkJICBwcm9ncmFtc1tpXS5uYW1lICYjNDM7IDQpOwogCiYjNDM7CQllcnIgPSBicGZfbWFwX19zZXRfYXV0b2NyZWF0ZShtYXAsIHRydWUpOwomIzQzOwkJQVNTRVJUX09LKGVycikgVEhfTE9HKCYjMzQ7Y2FuIG5vdCBlbmFibGUgc3RydWN0X29wcyBtYXAgJiMzOTslcyYjMzk7JiMzNDssCiYjNDM7CQkJCSAgICAgIHByb2dyYW1zW2ldLm5hbWUgJiM0MzsgNCk7CiYjNDM7CiAJCS8qIGhpZF9pZCBpcyB0aGUgZmlyc3QgZmllbGQgb2Ygc3RydWN0IGhpZF9icGZfb3BzICovCiAJCW9wc19oaWRfaWQgPSBicGZfbWFwX19pbml0aWFsX3ZhbHVlKG1hcCwgTlVMTCk7CiAJCUFTU0VSVF9PS19QVFIob3BzX2hpZF9pZCkgVEhfTE9HKCYjMzQ7dW5hYmxlIHRvIHJldHJpZXZlIHN0cnVjdF9vcHMgZGF0YSYjMzQ7KTsKQEAgLTEwOSwxMyAmIzQzOzEyNyw2IEBAIHN0YXRpYyB2b2lkIGxvYWRfcHJvZ3JhbXMoY29uc3Qgc3RydWN0IHRlc3RfcHJvZ3JhbSBwcm9ncmFtc1tdLAogCQkqb3BzX2hpZF9pZCA9IHNlbGYtJmd0O2hpZC5oaWRfaWQ7CiAJfQogCi0JLyogd2UgZGlzYWJsZSB0aGUgYXV0by1hdHRhY2ggZmVhdHVyZSBvZiBhbGwgbWFwcyBiZWNhdXNlIHdlCi0JICogb25seSB3YW50IHRoZSB0ZXN0ZWQgb25lIHRvIGJlIG1hbnVhbGx5IGF0dGFjaGVkIGluIHRoZSBuZXh0Ci0JICogY2FsbCB0byBicGZfbWFwX19hdHRhY2hfc3RydWN0X29wcygpCi0JICovCi0JYnBmX29iamVjdF9fZm9yX2VhY2hfbWFwKGl0ZXJfbWFwLCAqc2VsZi0mZ3Q7c2tlbC0mZ3Q7c2tlbGV0b24tJmd0O29iaikKLQkJYnBmX21hcF9fc2V0X2F1dG9hdHRhY2goaXRlcl9tYXAsIGZhbHNlKTsKLQogCWVyciA9IGhpZF9fbG9hZChzZWxmLSZndDtza2VsKTsKIAlBU1NFUlRfT0soZXJyKSBUSF9MT0coJiMzNDtoaWRfc2tlbF9sb2FkIGZhaWxlZDogJWQmIzM0OywgZXJyKTsKIApAQCAtODg3LDYgJiM0Mzs4OTgsMTcgQEAgVEVTVF9GKGhpZF9icGYsIHRlc3RfcmRlc2NfZml4dXApCiAJQVNTRVJUX0VRKHJwdF9kZXNjLnZhbHVlWzRdLCAweDQyKTsKIH0KIAomIzQzO1RFU1RfRihoaWRfYnBmLCB0ZXN0X3JkZXNjX2ZpeHVwX2dldF9kYXRhX292ZXJmbG93KQomIzQzO3sKJiM0MzsJY29uc3Qgc3RydWN0IHRlc3RfcHJvZ3JhbSBwcm9nc1tdID0gewomIzQzOwkJeyAubmFtZSA9ICYjMzQ7aGlkX3JkZXNjX2ZpeHVwX2dldF9kYXRhX292ZXJmbG93JiMzNDsgfSwKJiM0MzsJfTsKJiM0MzsKJiM0MzsJTE9BRF9QUk9HUkFNUyhwcm9ncyk7CiYjNDM7CiYjNDM7CUFTU0VSVF9FUShzZWxmLSZndDtza2VsLSZndDtic3MtJmd0O2dldF9kYXRhX292ZXJmbG93X2NoZWNrLCAxKTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW50IGxpYmJwZl9wcmludF9mbihlbnVtIGxpYmJwZl9wcmludF9sZXZlbCBsZXZlbCwKIAkJCSAgIGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCBhcmdzKQogewpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jCmluZGV4IDVlY2M4NDVlZjc5MjE2Li5iMjFmYmIxM2M5MjZmOCAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYwpAQCAtMTMsNiAmIzQzOzEzLDcgQEAgc3RydWN0IGF0dGFjaF9wcm9nX2FyZ3MgewogCiBfX3U2NCBjYWxsYmFja19jaGVjayA9IDUyOwogX191NjQgY2FsbGJhY2syX2NoZWNrID0gNTI7CiYjNDM7X191NjQgZ2V0X2RhdGFfb3ZlcmZsb3dfY2hlY2s7CiAKIFNFQygmIzM0Oz9zdHJ1Y3Rfb3BzL2hpZF9kZXZpY2VfZXZlbnQmIzM0OykKIGludCBCUEZfUFJPRyhoaWRfZmlyc3RfZXZlbnQsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGlkX2N0eCwgZW51bSBoaWRfcmVwb3J0X3R5cGUgdHlwZSkKQEAgLTI0MCw2ICYjNDM7MjQxLDIwIEBAIHN0cnVjdCBoaWRfYnBmX29wcyByZGVzY19maXh1cCA9IHsKIAkuaGlkX3JkZXNjX2ZpeHVwID0gKHZvaWQgKiloaWRfcmRlc2NfZml4dXAsCiB9OwogCiYjNDM7U0VDKCYjMzQ7P3N0cnVjdF9vcHMucy9oaWRfcmRlc2NfZml4dXAmIzM0OykKJiM0MztpbnQgQlBGX1BST0coaGlkX3JkZXNjX2ZpeHVwX2dldF9kYXRhX292ZXJmbG93LCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhpZF9jdHgpCiYjNDM7ewomIzQzOwlpZiAoIWhpZF9icGZfZ2V0X2RhdGEoaGlkX2N0eCwgMiAvKiBvZmZzZXQgKi8sIH4wVUxMIC8qIHNpemUgKi8pKQomIzQzOwkJZ2V0X2RhdGFfb3ZlcmZsb3dfY2hlY2sgPSAxOwomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7U0VDKCYjMzQ7LnN0cnVjdF9vcHMubGluayYjMzQ7KQomIzQzO3N0cnVjdCBoaWRfYnBmX29wcyByZGVzY19maXh1cF9nZXRfZGF0YV9vdmVyZmxvdyA9IHsKJiM0MzsJLmhpZF9yZGVzY19maXh1cCA9ICh2b2lkICopaGlkX3JkZXNjX2ZpeHVwX2dldF9kYXRhX292ZXJmbG93LAomIzQzO307CiYjNDM7CiBTRUMoJiMzNDs/c3RydWN0X29wcy9oaWRfZGV2aWNlX2V2ZW50JiMzNDspCiBpbnQgQlBGX1BST0coaGlkX3Rlc3RfaW5zZXJ0MSwgc3RydWN0IGhpZF9icGZfY3R4ICpoaWRfY3R4LCBlbnVtIGhpZF9yZXBvcnRfdHlwZSB0eXBlKQogewo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAwNjo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzY0CgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMzU5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEtlcm5lbCBQYXRjaDogT3ZlcmZsb3cgQ2hlY2tzIGluIEhJRCBCUEYgRGF0YSBBY2Nlc3MqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggaGVyZS4gSXQmIzM5O3MgdG91Y2hpbmcgYGRyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX2Rpc3BhdGNoLmNgIGFuZCBpbmNsdWRlcyBzb21lIHNlbGZ0ZXN0cyBpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkYC4gVGhlIG1lYXQgb2YgdGhlIGNoYW5nZSBpcyBpbiB0aGF0IGBoaWRfYnBmX2Rpc3BhdGNoLmNgIGZpbGUuIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgYWRkaW5nIGFuIG92ZXJmbG93IGNoZWNrIHdpdGhpbiB0aGUgYGhpZF9icGZfZ2V0X2RhdGFgIGZ1bmN0aW9uLiBXZSYjMzk7cmUgdGFsa2luZyBhYm91dCBhIGZ1bmN0aW9uYWwgbW9kaWZpY2F0aW9uIHRvIHRoZSBrZXJuZWwgaGVyZSwgc28gd2UgbmVlZCB0byBiZSB2ZXJ5IHByZWNpc2UuCgpFc3NlbnRpYWxseSwgdGhleSBhcmUgYWRkaW5nIGEgY2hlY2sgd2l0aGluIHRoZSBgaGlkX2JwZl9nZXRfZGF0YWAgZnVuY3Rpb24gdG8gcHJldmVudCBwb3RlbnRpYWwgaW50ZWdlciBvdmVyZmxvd3Mgd2hlbiBjYWxjdWxhdGluZyB0aGUgZW5kIGFkZHJlc3Mgb2YgYSBkYXRhIGJ1ZmZlci4gVGhpcyBpcyBhIGdvb2QgcHJhY3RpY2UsIGFuZCBpdCYjMzk7cyBhIGNyaXRpY2FsIHNhZmV0eSBmZWF0dXJlIHdoZW4gZGVhbGluZyB3aXRoIG1lbW9yeSBhY2Nlc3Mgd2l0aGluIHRoZSBrZXJuZWwsIGVzcGVjaWFsbHkgd2l0aGluIEJQRiBwcm9ncmFtcy4KClRoZSBxdWVzdGlvbiBub3cgaXMsIGlzIHRoaXMgY29kZSBwYXRoIGFjdHVhbGx5ICpyZWFjaGFibGUqPyBJcyB0aGlzIGNoYW5nZSBwb3RlbnRpYWxseSBpbXBhY3RmdWw/IEFic29sdXRlbHksIHllcywgaXQgaXMuIFRoZSBgaGlkX2JwZl9nZXRfZGF0YWAgZnVuY3Rpb24gaXMgYSBCUEYga2Z1bmMuIEdpdmVuIHRoZSBwcm9taW5lbmNlIG9mIEJQRiBpbiB0aGVzZSBtb2Rlcm4ga2VybmVscywgaXQmIzM5O3MgYSBoZWF2aWx5IHVzZWQgZnVuY3Rpb24uIFRoaXMgdGVsbHMgdXMgdGhpcyBjaGVjayBjb3VsZCBiZSB2ZXJ5IGltcG9ydGFudC4KCkFscmlnaHQsIHNvIGxldCYjMzk7cyB2ZXJpZnkgdGhhdCB0aGUgY29kZSAqaXMqIGJ1aWx0LiBgZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfZGlzcGF0Y2guY2Agd2lsbCBiZSBjb21waWxlZCBpZiBgQ09ORklHX0hJRF9CUEZgIGlzIGVuYWJsZWQuIFRoYXQmIzM5O3MgdGhlIGdhdGVrZWVwZXIuIFdlJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCB0aGlzIGNvbmZpZyBpcywgaW4gZmFjdCwgZW5hYmxlZCBpbiB0aGUgdGFyZ2V0IGVudmlyb25tZW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAwNjo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtoaWRfYnBmX2Rpc3BhdGNoLm8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9oaWQvYnBmL01ha2VmaWxlPTg9b2JqLSQoQ09ORklHX0hJRF9CUEYpICYjNDM7PSBoaWRfYnBmLm9cbmRyaXZlcnMvaGlkL2JwZi9NYWtlZmlsZTo5OkNGTEFHU19oaWRfYnBmX2Rpc3BhdGNoLm8gJiM0Mzs9IC1JJChMSUJCUEZfSU5DTFVERSlcbmRyaXZlcnMvaGlkL2JwZi9NYWtlZmlsZS0xMC1DRkxBR1NfaGlkX2JwZl9qbXBfdGFibGUubyAmIzQzOz0gLUkkKExJQkJQRl9JTkNMVURFKVxuZHJpdmVycy9oaWQvYnBmL01ha2VmaWxlOjExOmhpZF9icGYtb2JqcyAmIzQzOz0gaGlkX2JwZl9kaXNwYXRjaC5vIGhpZF9icGZfc3RydWN0X29wcy5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMDY6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDYzOQoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDY5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKktlcm5lbCBDb25maWd1cmF0aW9uIERlZXAgRGl2ZSoqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMga2VybmVsIGNvbmZpZ3VyYXRpb24gc3BhY2UsIGFuZCBpdCBsb29rcyBsaWtlIGBDT05GSUdfSElEX0JQRmAgaXMgYSBrZXkgcGllY2Ugb2YgdGhlIHB1enpsZSBoZXJlLiBJIGtub3cgdGhhdCBCUEYga2Z1bmNzLCBpbiBnZW5lcmFsLCB1c3VhbGx5IHJlcXVpcmUgYENPTkZJR19CUEZfU1lTQ0FMTGAgYW5kIGBDT05GSUdfQlBGX0pJVGAgdG8gYmUgZW5hYmxlZC4gSSYjMzk7bSByZWFzb25hYmx5IHN1cmUgYEhJRF9CUEZgIGxpa2VseSBkZXBlbmRzIG9uIHRoZXNlIGFzIHdlbGwuIEkgbmVlZCB0byBjb25maXJtIHRoaXMgZGVwZW5kZW5jeSB0byBiZSBjZXJ0YWluIG9mIHRoZSBjb3JyZWN0IGNvbmZpZ3VyYXRpb24uIFRoZXJlZm9yZSwgbXkgbmV4dCBzdGVwIGlzIHRvIGNhcmVmdWxseSBjaGVjayB0aGUgZGVwZW5kZW5jaWVzIG9mIGBDT05GSUdfSElEX0JQRmAgYW5kIGJ1aWxkIGEgc3VpdGFibGUgY29uZmlndXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAwNjo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSElEX0JQRiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2hpZC9icGYvS2NvbmZpZz0yPW1lbnUgXCYjMzQ7SElELUJQRiBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL2hpZC9icGYvS2NvbmZpZy0zLVxuZHJpdmVycy9oaWQvYnBmL0tjb25maWc6NDpjb25maWcgSElEX0JQRlxuZHJpdmVycy9oaWQvYnBmL0tjb25maWctNS1cdGJvb2wgXCYjMzQ7SElELUJQRiBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMDY6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDk1MAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgYXMgaWYgdGhleSYjMzk7cmUgbXkgb3duOgoKKipBbmFseXppbmcgdGhlIEhJRCBCUEYgQ29uZmlndXJhdGlvbiBPcHRpb25zKioKCkFscmlnaHQsIEkmIzM5O20gZ29pbmcgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIGBkcml2ZXJzL2hpZC9icGYvS2NvbmZpZ2AgZmlsZS4gSSYjMzk7bSBpbW1lZGlhdGVseSBpbnRlcmVzdGVkIGluIHNlZWluZyBob3cgdGhlIEJQRiBmdW5jdGlvbmFsaXR5IGZvciBISUQgZGV2aWNlcyBpcyBjb25maWd1cmVkLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIGEgc2VyaWVzIG9mIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgcHJvYmFibHkgdXNpbmcgdGhlIGBjb25maWdgIGtleXdvcmQsIG5lc3RlZCB3aXRoaW4gcG90ZW50aWFsbHkgY29uZGl0aW9uYWwgYmxvY2tzIGRlZmluZWQgYnkgYGlmYCBzdGF0ZW1lbnRzLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBhbnkgZGVwZW5kZW5jaWVzIOKAkyB3aGF0IG90aGVyIGtlcm5lbCBmZWF0dXJlcyBvciBtb2R1bGVzIG5lZWQgdG8gYmUgZW5hYmxlZCBiZWZvcmUgdGhlIEJQRiBISUQgZnVuY3Rpb25hbGl0eSBjYW4gZXZlbiBiZSBjb25zaWRlcmVkPyBJIHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgbGV2ZWwgb2YgZ3JhbnVsYXJpdHkgYXZhaWxhYmxlOyBhcmUgd2UgdGFsa2luZyBhYm91dCBwZXItZGV2aWNlIG9wdGlvbnMsIG9yIHNvbWV0aGluZyBtb3JlIGdsb2JhbCB0aGF0IGFwcGxpZXMgdG8gYWxsIEhJRCBCUEYgdXNhZ2U/IEFyZSB0aGVyZSBkaWZmZXJlbnQgbGV2ZWxzIG9mIEJQRiBzdXBwb3J0LCBwZXJoYXBzIHdpdGggZGlmZmVyZW50IHBlcmZvcm1hbmNlIG9yIHNlY3VyaXR5IHRyYWRlLW9mZnM/IE15IGZvY3VzIHdpbGwgYmUgb24gdGhlIHN0cnVjdHVyZSwgdGhlIGRlcGVuZGVuY2llcywgYW5kIHRoZSBuYXR1cmUgb2YgdGhlIGNvbmZpZ3VyYXRpb24gY2hvaWNlcyBhdmFpbGFibGUgdG8gdGhlIHVzZXIuIEkmIzM5O2xsIG1lbnRhbGx5IG1hcCBvdXQgdGhlIGltcGxpY2F0aW9ucyBvZiBlYWNoIG9wdGlvbiBhbmQgY29uc2lkZXIgaG93IHRoZXNlIGNob2ljZXMgbWlnaHQgaW1wYWN0IHBlcmZvcm1hbmNlLCBzZWN1cml0eSwgYW5kIG92ZXJhbGwgZmxleGliaWxpdHkgaW4gdXNpbmcgQlBGIHdpdGggSElEIGRldmljZXMuIEVzc2VudGlhbGx5LCBJJiMzOTttIHRyeWluZyB0byBnZXQgYSBmZWVsIGZvciBob3cgdGhlIGtlcm5lbCBleHBvc2VzIHRoaXMgZnVuY3Rpb25hbGl0eSBhbmQgaG93IGEgZGV2ZWxvcGVyIGNhbiBsZXZlcmFnZSBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAwNjo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvaGlkL2JwZi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0bWVudSBcJiMzNDtISUQtQlBGIHN1cHBvcnRcJiMzNDtcbiAgIDM6XHRcbiAgIDQ6XHRjb25maWcgSElEX0JQRlxuICAgNTpcdFx0Ym9vbCBcJiMzNDtISUQtQlBGIHN1cHBvcnRcJiMzNDtcbiAgIDY6XHRcdGRlcGVuZHMgb24gQlBGX0pJVFxuICAgNzpcdFx0ZGVwZW5kcyBvbiBCUEZfU1lTQ0FMTFxuICAgODpcdFx0ZGVwZW5kcyBvbiBEWU5BTUlDX0ZUUkFDRV9XSVRIX0RJUkVDVF9DQUxMU1xuICAgOTpcdFx0aGVscFxuICAxMDpcdFx0VGhpcyBvcHRpb24gYWxsb3dzIHRvIHN1cHBvcnQgZUJQRiBwcm9ncmFtcyBvbiB0aGUgSElEIHN1YnN5c3RlbS5cbiAgMTE6XHRcdGVCUEYgcHJvZ3JhbXMgY2FuIGZpeCBISUQgZGV2aWNlcyBpbiBhIGxpZ2h0ZXIgd2F5IHRoYW4gYSBmdWxsXG4gIDEyOlx0XHRrZXJuZWwgcGF0Y2ggYW5kIGFsbG93IGEgbG90IG1vcmUgZmxleGliaWxpdHkuXG4gIDEzOlx0XG4gIDE0Olx0XHRGb3IgZG9jdW1lbnRhdGlvbiwgc2VlIERvY3VtZW50YXRpb24vaGlkL2hpZC1icGYucnN0XG4gIDE1Olx0XG4gIDE2Olx0ZW5kbWVudVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDA2OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU0OTQKCQkJCQkJCW91dHB1dDogOTUKCQkJCQkJCXRob3VnaHRzOiA0MjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb246IEhJRCBCUEYgRGF0YSBSZXRyaWV2YWwqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IGBISURfQlBGYCBhcyB0aGUgcmVsZXZhbnQgY29uZmlnLCBhbmQgdGhlIHRhcmdldCBmdW5jdGlvbiBpcyBgaGlkX2JwZl9nZXRfZGF0YWAuIEZyb20gdGhlIGxvb2tzIG9mIGl0LCB0aGlzIGlzIGEgZGVmaW5pdGUgJiMzNDt5ZXMmIzM0OyBmb3IgZnV6emluZy4gSXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgc3BlY2lmaWNhbGx5IGFkZHJlc3NpbmcgYW4gaW50ZWdlciBvdmVyZmxvdyBpbiBhIEJQRiBrZnVuYy4gTXkgZm9jdXMgd2lsbCBiZSBzcXVhcmVseSBvbiBgaGlkX2JwZl9nZXRfZGF0YWAuIEkmIzM5O2xsIG5lZWQgdG8gZW5hYmxlIHRoZSBgSElEX0JQRmAgY29uZmlnLCBuYXR1cmFsbHkuCgpOb3csIGxldCYjMzk7cyBqdXN0IGNvbmZpcm0gaWYgdGhpcyBpcyBhIGhvdCBwYXRoLiBJdCYjMzk7cyBjYWxsZWQgZnJvbSBCUEYgcHJvZ3JhbXMgdGhhdCBhcmUgYXR0YWNoZWQgdG8gSElEIGV2ZW50cywgc28gaXQgY291bGQgYmUgY2FsbGVkIHByZXR0eSBmcmVxdWVudGx5IGRlcGVuZGluZyBvbiB0aGUgYWN0aXZpdHkgb2YgdGhlIGRldmljZS4gQnV0IGl0JiMzOTtzIHRoaXMgKnNwZWNpZmljKiBmdW5jdGlvbiB0aGF0IHdhcyBhbHRlcmVkLiBJdCYjMzk7cyBhIGtmdW5jLCBzbyBpdCYjMzk7cyBjYWxsZWQgZGlyZWN0bHkgZnJvbSBCUEYgY29kZSDigJMgd2hpY2ggbWFrZXMgaXQgYSBnb29kIHRhcmdldC4KCkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHJlbGF0ZWQgY29uZmlncywgZXZlbiB0aG91Z2ggSSYjMzk7dmUgYWxyZWFkeSBjb25maXJtZWQgYEhJRF9CUEZgIGlzIHRoZSBtYWluIG9uZS4gT2theSwgYEhJRF9CUEZgIGRlcGVuZHMgb24gYEJQRl9KSVRgLCBgQlBGX1NZU0NBTExgLCBhbmQgYERZTkFNSUNfRlRSQUNFX1dJVEhfRElSRUNUX0NBTExTYC4gQnV0IGZvY3VzaW5nIG9uIGp1c3QgYEhJRF9CUEZgIGlzIGZpbmUgaW4gdGhpcyBjYXNlLgoKTGV0JiMzOTtzIHF1aWNrbHkgdmVyaWZ5IHRoZSB3aG9sZSBsaW5lIG9mIHJlYXNvbmluZy4gVGhlIHBhdGNoIGFkZHJlc3NlcyBhbiBpbnRlZ2VyIG92ZXJmbG93IHdpdGhpbiBgaGlkX2JwZl9nZXRfZGF0YWAuIFRoaXMgaXMgYSBCUEYga2Z1bmMgYWNjZXNzaWJsZSB0byBISUQgQlBGIHByb2dyYW1zLiBGdXp6aW5nICp0aGlzKiBmdW5jdGlvbiBpcyBpbXBvcnRhbnQgYmVjYXVzZSBpdCYjMzk7bGwgZW5zdXJlIHRoZSBvdmVyZmxvdyBjaGVjayBkb2VzIHdoYXQgaXQmIzM5O3Mgc3VwcG9zZWQgdG8gZG8gYW5kIHRoZXJlIGFyZSBubyBvdGhlciB2dWxuZXJhYmlsaXRpZXMgaW4gdGhlIGRhdGEgcmV0cmlldmFsLgoKSSYjMzk7bGwganVzdCBjb25maXJtIGBoaWRfYnBmX2dldF9kYXRhYCBpcyB0aGUgKm9ubHkqIG1vZGlmaWVkIGtlcm5lbCBmdW5jdGlvbi4gWXVwLCBvbmx5IHRoZSBmaWxlIGBoaWRfYnBmX2Rpc3BhdGNoLmNgIHdhcyBtb2RpZmllZCBpbiB0aGUga2VybmVsLCBhbmQgdGhlIHJlc3Qgb2YgdGhlIGNoYW5nZXMgYXJlIHNlbGZ0ZXN0cy4KCmBgYGpzb24KewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWyYjMzQ7aGlkX2JwZl9nZXRfZGF0YSYjMzQ7XSwKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWyYjMzQ7SElEX0JQRiYjMzQ7XSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBpbnRlZ2VyIG92ZXJmbG93IGluIHRoZSBoaWRfYnBmX2dldF9kYXRhIEJQRiBrZnVuYywgd2hpY2ggaXMgZXhwb3NlZCB0byBISUQgQlBGIHByb2dyYW1zLiBGdXp6aW5nIHRoaXMgZnVuY3Rpb24gZW5zdXJlcyB0aGUgb3ZlcmZsb3cgY2hlY2sgY29ycmVjdGx5IHByZXZlbnRzIG91dC1vZi1ib3VuZHMgYWNjZXNzLiYjMzQ7Cn0KYGBgCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDA2OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtISURfQlBGJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aGlkX2JwZl9nZXRfZGF0YSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBpbnRlZ2VyIG92ZXJmbG93IGluIHRoZSBoaWRfYnBmX2dldF9kYXRhIEJQRiBrZnVuYywgd2hpY2ggaXMgZXhwb3NlZCB0byBISUQgQlBGIHByb2dyYW1zLiBGdXp6aW5nIHRoaXMgZnVuY3Rpb24gZW5zdXJlcyB0aGUgb3ZlcmZsb3cgY2hlY2sgY29ycmVjdGx5IHByZXZlbnRzIG91dC1vZi1ib3VuZHMgYWNjZXNzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtISURfQlBGJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aGlkX2JwZl9nZXRfZGF0YSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBpbnRlZ2VyIG92ZXJmbG93IGluIHRoZSBoaWRfYnBmX2dldF9kYXRhIEJQRiBrZnVuYywgd2hpY2ggaXMgZXhwb3NlZCB0byBISUQgQlBGIHByb2dyYW1zLiBGdXp6aW5nIHRoaXMgZnVuY3Rpb24gZW5zdXJlcyB0aGUgb3ZlcmZsb3cgY2hlY2sgY29ycmVjdGx5IHByZXZlbnRzIG91dC1vZi1ib3VuZHMgYWNjZXNzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMjNUMDY6NTE6NDUuMTc2MTg3Mjg5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc4MTMxOTMxMzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSElEX0JQRlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImhpZF9icGZfZ2V0X2RhdGFcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBpbnRlZ2VyIG92ZXJmbG93IGluIHRoZSBoaWRfYnBmX2dldF9kYXRhIEJQRiBrZnVuYywgd2hpY2ggaXMgZXhwb3NlZCB0byBISUQgQlBGIHByb2dyYW1zLiBGdXp6aW5nIHRoaXMgZnVuY3Rpb24gZW5zdXJlcyB0aGUgb3ZlcmZsb3cgY2hlY2sgY29ycmVjdGx5IHByZXZlbnRzIG91dC1vZi1ib3VuZHMgYWNjZXNzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QwNjo1MTo0NS4xNzYxOTM1NDlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYxMjM0NDI4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGM4ODVhNWVlMGUxYzcxOWMxOWJmN2Y1YzY0M2U2ZDgwZDE4MDQ4MDFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBKdW4gMjMgMDY6NTE6NDMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfZGlzcGF0Y2guYyBiL2RyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX2Rpc3BhdGNoLmNcXG5pbmRleCBkMDEzMDY1ODA5MWIwMi4uNTM2ZjZkMDFmZDE0YzYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfZGlzcGF0Y2guY1xcbisrKyBiL2RyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX2Rpc3BhdGNoLmNcXG5AQCAtMTcsNiArMTcsNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgva2ZpZm8uaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L21pbm1heC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvbW9kdWxlLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9vdmVyZmxvdy5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXFwiaGlkX2JwZl9kaXNwYXRjaC5oXFxcIlxcbiBcXG4gY29uc3Qgc3RydWN0IGhpZF9vcHMgKmhpZF9vcHM7XFxuQEAgLTI5NiwxMCArMjk3LDEyIEBAIF9fYnBmX2tmdW5jIF9fdTggKlxcbiBoaWRfYnBmX2dldF9kYXRhKHN0cnVjdCBoaWRfYnBmX2N0eCAqY3R4LCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCBjb25zdCBzaXplX3QgcmR3cl9idWZfc2l6ZSlcXG4ge1xcbiBcXHRzdHJ1Y3QgaGlkX2JwZl9jdHhfa2VybiAqY3R4X2tlcm47XFxuK1xcdHNpemVfdCBlbmQ7XFxuIFxcbiBcXHRjdHhfa2VybiA9IGNvbnRhaW5lcl9vZihjdHgsIHN0cnVjdCBoaWRfYnBmX2N0eF9rZXJuLCBjdHgpO1xcbiBcXG4tXFx0aWYgKHJkd3JfYnVmX3NpemUgKyBvZmZzZXQgXFx1MDAzZSBjdHgtXFx1MDAzZWFsbG9jYXRlZF9zaXplKVxcbitcXHRpZiAoY2hlY2tfYWRkX292ZXJmbG93KHJkd3JfYnVmX3NpemUsIG9mZnNldCwgXFx1MDAyNmVuZCkgfHxcXG4rXFx0ICAgIGVuZCBcXHUwMDNlIGN0eC1cXHUwMDNlYWxsb2NhdGVkX3NpemUpXFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbiBcXG4gXFx0cmV0dXJuIGN0eF9rZXJuLVxcdTAwM2VkYXRhICsgb2Zmc2V0O1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvTWFrZWZpbGUgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvTWFrZWZpbGVcXG5pbmRleCA5NjA3MWI0ODAwZTgyYS4uMmY0MjNkZTgzMTQ3M2EgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL01ha2VmaWxlXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL01ha2VmaWxlXFxuQEAgLTI0LDcgKzI0LDcgQEAgQ1hYID89ICQoQ1JPU1NfQ09NUElMRSlnKytcXG4gXFxuIEhPU1RQS0dfQ09ORklHIDo9IHBrZy1jb25maWdcXG4gXFxuLUNGTEFHUyArPSAtZyAtTzAgLXJkeW5hbWljIC1XYWxsIC1XZXJyb3IgLUkkKE9VVFBVVClcXG4rQ0ZMQUdTICs9IC1nIC1PMCAtcmR5bmFtaWMgLVdhbGwgLVdlcnJvciAtSSQoT1VUUFVUKSAkKEtIRFJfSU5DTFVERVMpXFxuIENGTEFHUyArPSAtSSQoT1VUUFVUKS90b29scy9pbmNsdWRlXFxuIFxcbiBMRExJQlMgKz0gLWxlbGYgLWx6IC1scnQgLWxwdGhyZWFkXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9oaWRfYnBmLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvaGlkX2JwZi5jXFxuaW5kZXggMWU5NzlmYjM1NDJiYWIuLmI4NTEzMzkzMDhjMjE0IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9oaWRfYnBmLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvaGlkX2JwZi5jXFxuQEAgLTg2LDYgKzg2LDIwIEBAIHN0YXRpYyB2b2lkIGxvYWRfcHJvZ3JhbXMoY29uc3Qgc3RydWN0IHRlc3RfcHJvZ3JhbSBwcm9ncmFtc1tdLFxcbiBcXHRzZWxmLVxcdTAwM2Vza2VsID0gaGlkX19vcGVuKCk7XFxuIFxcdEFTU0VSVF9PS19QVFIoc2VsZi1cXHUwMDNlc2tlbCkgVEVBUkRPV05fTE9HKFxcXCJFcnJvciB3aGlsZSBjYWxsaW5nIGhpZF9fb3BlblxcXCIpO1xcbiBcXG4rXFx0LypcXG4rXFx0ICogRGlzYWJsZSBhbGwgc3RydWN0X29wcyBtYXBzIGJ5IGRlZmF1bHQgc28gbGliYnBmIGRvZXMgbm90IGF1dG9sb2FkXFxuK1xcdCAqIHByb2dyYW1zIHJlZmVyZW5jZWQgYnkgbWFwcyB0aGF0IGFyZSB1bnJlbGF0ZWQgdG8gdGhlIGN1cnJlbnQgdGVzdC5cXG4rXFx0ICovXFxuK1xcdGJwZl9vYmplY3RfX2Zvcl9lYWNoX21hcChpdGVyX21hcCwgKnNlbGYtXFx1MDAzZXNrZWwtXFx1MDAzZXNrZWxldG9uLVxcdTAwM2VvYmopIHtcXG4rXFx0XFx0aWYgKGJwZl9tYXBfX3R5cGUoaXRlcl9tYXApID09IEJQRl9NQVBfVFlQRV9TVFJVQ1RfT1BTKSB7XFxuK1xcdFxcdFxcdGVyciA9IGJwZl9tYXBfX3NldF9hdXRvY3JlYXRlKGl0ZXJfbWFwLCBmYWxzZSk7XFxuK1xcdFxcdFxcdEFTU0VSVF9PSyhlcnIpIFRIX0xPRyhcXFwiY2FuIG5vdCBkaXNhYmxlIHN0cnVjdF9vcHMgbWFwICclcydcXFwiLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgICBicGZfbWFwX19uYW1lKGl0ZXJfbWFwKSk7XFxuK1xcdFxcdH1cXG4rXFxuK1xcdFxcdGJwZl9tYXBfX3NldF9hdXRvYXR0YWNoKGl0ZXJfbWFwLCBmYWxzZSk7XFxuK1xcdH1cXG4rXFxuIFxcdGZvciAoaW50IGkgPSAwOyBpIFxcdTAwM2MgcHJvZ3NfY291bnQ7IGkrKykge1xcbiBcXHRcXHRzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2c7XFxuIFxcdFxcdHN0cnVjdCBicGZfbWFwICptYXA7XFxuQEAgLTEwMiw2ICsxMTYsMTAgQEAgc3RhdGljIHZvaWQgbG9hZF9wcm9ncmFtcyhjb25zdCBzdHJ1Y3QgdGVzdF9wcm9ncmFtIHByb2dyYW1zW10sXFxuIFxcdFxcdEFTU0VSVF9PS19QVFIobWFwKSBUSF9MT0coXFxcImNhbiBub3QgZmluZCBzdHJ1Y3Rfb3BzIGJ5IG5hbWUgJyVzJ1xcXCIsXFxuIFxcdFxcdFxcdFxcdFxcdCAgcHJvZ3JhbXNbaV0ubmFtZSArIDQpO1xcbiBcXG4rXFx0XFx0ZXJyID0gYnBmX21hcF9fc2V0X2F1dG9jcmVhdGUobWFwLCB0cnVlKTtcXG4rXFx0XFx0QVNTRVJUX09LKGVycikgVEhfTE9HKFxcXCJjYW4gbm90IGVuYWJsZSBzdHJ1Y3Rfb3BzIG1hcCAnJXMnXFxcIixcXG4rXFx0XFx0XFx0XFx0ICAgICAgcHJvZ3JhbXNbaV0ubmFtZSArIDQpO1xcbitcXG4gXFx0XFx0LyogaGlkX2lkIGlzIHRoZSBmaXJzdCBmaWVsZCBvZiBzdHJ1Y3QgaGlkX2JwZl9vcHMgKi9cXG4gXFx0XFx0b3BzX2hpZF9pZCA9IGJwZl9tYXBfX2luaXRpYWxfdmFsdWUobWFwLCBOVUxMKTtcXG4gXFx0XFx0QVNTRVJUX09LX1BUUihvcHNfaGlkX2lkKSBUSF9MT0coXFxcInVuYWJsZSB0byByZXRyaWV2ZSBzdHJ1Y3Rfb3BzIGRhdGFcXFwiKTtcXG5AQCAtMTA5LDEzICsxMjcsNiBAQCBzdGF0aWMgdm9pZCBsb2FkX3Byb2dyYW1zKGNvbnN0IHN0cnVjdCB0ZXN0X3Byb2dyYW0gcHJvZ3JhbXNbXSxcXG4gXFx0XFx0Km9wc19oaWRfaWQgPSBzZWxmLVxcdTAwM2VoaWQuaGlkX2lkO1xcbiBcXHR9XFxuIFxcbi1cXHQvKiB3ZSBkaXNhYmxlIHRoZSBhdXRvLWF0dGFjaCBmZWF0dXJlIG9mIGFsbCBtYXBzIGJlY2F1c2Ugd2VcXG4tXFx0ICogb25seSB3YW50IHRoZSB0ZXN0ZWQgb25lIHRvIGJlIG1hbnVhbGx5IGF0dGFjaGVkIGluIHRoZSBuZXh0XFxuLVxcdCAqIGNhbGwgdG8gYnBmX21hcF9fYXR0YWNoX3N0cnVjdF9vcHMoKVxcbi1cXHQgKi9cXG4tXFx0YnBmX29iamVjdF9fZm9yX2VhY2hfbWFwKGl0ZXJfbWFwLCAqc2VsZi1cXHUwMDNlc2tlbC1cXHUwMDNlc2tlbGV0b24tXFx1MDAzZW9iailcXG4tXFx0XFx0YnBmX21hcF9fc2V0X2F1dG9hdHRhY2goaXRlcl9tYXAsIGZhbHNlKTtcXG4tXFxuIFxcdGVyciA9IGhpZF9fbG9hZChzZWxmLVxcdTAwM2Vza2VsKTtcXG4gXFx0QVNTRVJUX09LKGVycikgVEhfTE9HKFxcXCJoaWRfc2tlbF9sb2FkIGZhaWxlZDogJWRcXFwiLCBlcnIpO1xcbiBcXG5AQCAtODg3LDYgKzg5OCwxNyBAQCBURVNUX0YoaGlkX2JwZiwgdGVzdF9yZGVzY19maXh1cClcXG4gXFx0QVNTRVJUX0VRKHJwdF9kZXNjLnZhbHVlWzRdLCAweDQyKTtcXG4gfVxcbiBcXG4rVEVTVF9GKGhpZF9icGYsIHRlc3RfcmRlc2NfZml4dXBfZ2V0X2RhdGFfb3ZlcmZsb3cpXFxuK3tcXG4rXFx0Y29uc3Qgc3RydWN0IHRlc3RfcHJvZ3JhbSBwcm9nc1tdID0ge1xcbitcXHRcXHR7IC5uYW1lID0gXFxcImhpZF9yZGVzY19maXh1cF9nZXRfZGF0YV9vdmVyZmxvd1xcXCIgfSxcXG4rXFx0fTtcXG4rXFxuK1xcdExPQURfUFJPR1JBTVMocHJvZ3MpO1xcbitcXG4rXFx0QVNTRVJUX0VRKHNlbGYtXFx1MDAzZXNrZWwtXFx1MDAzZWJzcy1cXHUwMDNlZ2V0X2RhdGFfb3ZlcmZsb3dfY2hlY2ssIDEpO1xcbit9XFxuK1xcbiBzdGF0aWMgaW50IGxpYmJwZl9wcmludF9mbihlbnVtIGxpYmJwZl9wcmludF9sZXZlbCBsZXZlbCxcXG4gXFx0XFx0XFx0ICAgY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpXFxuIHtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jXFxuaW5kZXggNWVjYzg0NWVmNzkyMTYuLmIyMWZiYjEzYzkyNmY4IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuY1xcbkBAIC0xMyw2ICsxMyw3IEBAIHN0cnVjdCBhdHRhY2hfcHJvZ19hcmdzIHtcXG4gXFxuIF9fdTY0IGNhbGxiYWNrX2NoZWNrID0gNTI7XFxuIF9fdTY0IGNhbGxiYWNrMl9jaGVjayA9IDUyO1xcbitfX3U2NCBnZXRfZGF0YV9vdmVyZmxvd19jaGVjaztcXG4gXFxuIFNFQyhcXFwiP3N0cnVjdF9vcHMvaGlkX2RldmljZV9ldmVudFxcXCIpXFxuIGludCBCUEZfUFJPRyhoaWRfZmlyc3RfZXZlbnQsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGlkX2N0eCwgZW51bSBoaWRfcmVwb3J0X3R5cGUgdHlwZSlcXG5AQCAtMjQwLDYgKzI0MSwyMCBAQCBzdHJ1Y3QgaGlkX2JwZl9vcHMgcmRlc2NfZml4dXAgPSB7XFxuIFxcdC5oaWRfcmRlc2NfZml4dXAgPSAodm9pZCAqKWhpZF9yZGVzY19maXh1cCxcXG4gfTtcXG4gXFxuK1NFQyhcXFwiP3N0cnVjdF9vcHMucy9oaWRfcmRlc2NfZml4dXBcXFwiKVxcbitpbnQgQlBGX1BST0coaGlkX3JkZXNjX2ZpeHVwX2dldF9kYXRhX292ZXJmbG93LCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhpZF9jdHgpXFxuK3tcXG4rXFx0aWYgKCFoaWRfYnBmX2dldF9kYXRhKGhpZF9jdHgsIDIgLyogb2Zmc2V0ICovLCB+MFVMTCAvKiBzaXplICovKSlcXG4rXFx0XFx0Z2V0X2RhdGFfb3ZlcmZsb3dfY2hlY2sgPSAxO1xcbitcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK1NFQyhcXFwiLnN0cnVjdF9vcHMubGlua1xcXCIpXFxuK3N0cnVjdCBoaWRfYnBmX29wcyByZGVzY19maXh1cF9nZXRfZGF0YV9vdmVyZmxvdyA9IHtcXG4rXFx0LmhpZF9yZGVzY19maXh1cCA9ICh2b2lkICopaGlkX3JkZXNjX2ZpeHVwX2dldF9kYXRhX292ZXJmbG93LFxcbit9O1xcbitcXG4gU0VDKFxcXCI/c3RydWN0X29wcy9oaWRfZGV2aWNlX2V2ZW50XFxcIilcXG4gaW50IEJQRl9QUk9HKGhpZF90ZXN0X2luc2VydDEsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGlkX2N0eCwgZW51bSBoaWRfcmVwb3J0X3R5cGUgdHlwZSlcXG4ge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QwNjo1MTo0NS43ODkxNDg4MjRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3MjAwMjIzNDkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkhJRF9CUEZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJoaWRfYnBmX2dldF9kYXRhXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gaW50ZWdlciBvdmVyZmxvdyBpbiB0aGUgaGlkX2JwZl9nZXRfZGF0YSBCUEYga2Z1bmMsIHdoaWNoIGlzIGV4cG9zZWQgdG8gSElEIEJQRiBwcm9ncmFtcy4gRnV6emluZyB0aGlzIGZ1bmN0aW9uIGVuc3VyZXMgdGhlIG92ZXJmbG93IGNoZWNrIGNvcnJlY3RseSBwcmV2ZW50cyBvdXQtb2YtYm91bmRzIGFjY2Vzcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBjODg1YTVlZTBlMWM3MTljMTliZjdmNWM2NDNlNmQ4MGQxODA0ODAxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdW4gMjMgMDY6NTE6NDMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9kaXNwYXRjaC5jIGIvZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfZGlzcGF0Y2guY1xuaW5kZXggZDAxMzA2NTgwOTFiMDIuLjUzNmY2ZDAxZmQxNGM2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfZGlzcGF0Y2guY1xuKysrIGIvZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfZGlzcGF0Y2guY1xuQEAgLTE3LDYgKzE3LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9rZmlmby5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbWlubWF4LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tb2R1bGUuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L292ZXJmbG93LmhcdTAwM2VcbiAjaW5jbHVkZSBcImhpZF9icGZfZGlzcGF0Y2guaFwiXG4gXG4gY29uc3Qgc3RydWN0IGhpZF9vcHMgKmhpZF9vcHM7XG5AQCAtMjk2LDEwICsyOTcsMTIgQEAgX19icGZfa2Z1bmMgX191OCAqXG4gaGlkX2JwZl9nZXRfZGF0YShzdHJ1Y3QgaGlkX2JwZl9jdHggKmN0eCwgdW5zaWduZWQgaW50IG9mZnNldCwgY29uc3Qgc2l6ZV90IHJkd3JfYnVmX3NpemUpXG4ge1xuIFx0c3RydWN0IGhpZF9icGZfY3R4X2tlcm4gKmN0eF9rZXJuO1xuK1x0c2l6ZV90IGVuZDtcbiBcbiBcdGN0eF9rZXJuID0gY29udGFpbmVyX29mKGN0eCwgc3RydWN0IGhpZF9icGZfY3R4X2tlcm4sIGN0eCk7XG4gXG4tXHRpZiAocmR3cl9idWZfc2l6ZSArIG9mZnNldCBcdTAwM2UgY3R4LVx1MDAzZWFsbG9jYXRlZF9zaXplKVxuK1x0aWYgKGNoZWNrX2FkZF9vdmVyZmxvdyhyZHdyX2J1Zl9zaXplLCBvZmZzZXQsIFx1MDAyNmVuZCkgfHxcbitcdCAgICBlbmQgXHUwMDNlIGN0eC1cdTAwM2VhbGxvY2F0ZWRfc2l6ZSlcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXG4gXHRyZXR1cm4gY3R4X2tlcm4tXHUwMDNlZGF0YSArIG9mZnNldDtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvTWFrZWZpbGUgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvTWFrZWZpbGVcbmluZGV4IDk2MDcxYjQ4MDBlODJhLi4yZjQyM2RlODMxNDczYSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9NYWtlZmlsZVxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL01ha2VmaWxlXG5AQCAtMjQsNyArMjQsNyBAQCBDWFggPz0gJChDUk9TU19DT01QSUxFKWcrK1xuIFxuIEhPU1RQS0dfQ09ORklHIDo9IHBrZy1jb25maWdcbiBcbi1DRkxBR1MgKz0gLWcgLU8wIC1yZHluYW1pYyAtV2FsbCAtV2Vycm9yIC1JJChPVVRQVVQpXG4rQ0ZMQUdTICs9IC1nIC1PMCAtcmR5bmFtaWMgLVdhbGwgLVdlcnJvciAtSSQoT1VUUFVUKSAkKEtIRFJfSU5DTFVERVMpXG4gQ0ZMQUdTICs9IC1JJChPVVRQVVQpL3Rvb2xzL2luY2x1ZGVcbiBcbiBMRExJQlMgKz0gLWxlbGYgLWx6IC1scnQgLWxwdGhyZWFkXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL2hpZF9icGYuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9oaWRfYnBmLmNcbmluZGV4IDFlOTc5ZmIzNTQyYmFiLi5iODUxMzM5MzA4YzIxNCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9oaWRfYnBmLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9oaWRfYnBmLmNcbkBAIC04Niw2ICs4NiwyMCBAQCBzdGF0aWMgdm9pZCBsb2FkX3Byb2dyYW1zKGNvbnN0IHN0cnVjdCB0ZXN0X3Byb2dyYW0gcHJvZ3JhbXNbXSxcbiBcdHNlbGYtXHUwMDNlc2tlbCA9IGhpZF9fb3BlbigpO1xuIFx0QVNTRVJUX09LX1BUUihzZWxmLVx1MDAzZXNrZWwpIFRFQVJET1dOX0xPRyhcIkVycm9yIHdoaWxlIGNhbGxpbmcgaGlkX19vcGVuXCIpO1xuIFxuK1x0LypcbitcdCAqIERpc2FibGUgYWxsIHN0cnVjdF9vcHMgbWFwcyBieSBkZWZhdWx0IHNvIGxpYmJwZiBkb2VzIG5vdCBhdXRvbG9hZFxuK1x0ICogcHJvZ3JhbXMgcmVmZXJlbmNlZCBieSBtYXBzIHRoYXQgYXJlIHVucmVsYXRlZCB0byB0aGUgY3VycmVudCB0ZXN0LlxuK1x0ICovXG4rXHRicGZfb2JqZWN0X19mb3JfZWFjaF9tYXAoaXRlcl9tYXAsICpzZWxmLVx1MDAzZXNrZWwtXHUwMDNlc2tlbGV0b24tXHUwMDNlb2JqKSB7XG4rXHRcdGlmIChicGZfbWFwX190eXBlKGl0ZXJfbWFwKSA9PSBCUEZfTUFQX1RZUEVfU1RSVUNUX09QUykge1xuK1x0XHRcdGVyciA9IGJwZl9tYXBfX3NldF9hdXRvY3JlYXRlKGl0ZXJfbWFwLCBmYWxzZSk7XG4rXHRcdFx0QVNTRVJUX09LKGVycikgVEhfTE9HKFwiY2FuIG5vdCBkaXNhYmxlIHN0cnVjdF9vcHMgbWFwICclcydcIixcbitcdFx0XHRcdFx0ICAgICAgYnBmX21hcF9fbmFtZShpdGVyX21hcCkpO1xuK1x0XHR9XG4rXG4rXHRcdGJwZl9tYXBfX3NldF9hdXRvYXR0YWNoKGl0ZXJfbWFwLCBmYWxzZSk7XG4rXHR9XG4rXG4gXHRmb3IgKGludCBpID0gMDsgaSBcdTAwM2MgcHJvZ3NfY291bnQ7IGkrKykge1xuIFx0XHRzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2c7XG4gXHRcdHN0cnVjdCBicGZfbWFwICptYXA7XG5AQCAtMTAyLDYgKzExNiwxMCBAQCBzdGF0aWMgdm9pZCBsb2FkX3Byb2dyYW1zKGNvbnN0IHN0cnVjdCB0ZXN0X3Byb2dyYW0gcHJvZ3JhbXNbXSxcbiBcdFx0QVNTRVJUX09LX1BUUihtYXApIFRIX0xPRyhcImNhbiBub3QgZmluZCBzdHJ1Y3Rfb3BzIGJ5IG5hbWUgJyVzJ1wiLFxuIFx0XHRcdFx0XHQgIHByb2dyYW1zW2ldLm5hbWUgKyA0KTtcbiBcbitcdFx0ZXJyID0gYnBmX21hcF9fc2V0X2F1dG9jcmVhdGUobWFwLCB0cnVlKTtcbitcdFx0QVNTRVJUX09LKGVycikgVEhfTE9HKFwiY2FuIG5vdCBlbmFibGUgc3RydWN0X29wcyBtYXAgJyVzJ1wiLFxuK1x0XHRcdFx0ICAgICAgcHJvZ3JhbXNbaV0ubmFtZSArIDQpO1xuK1xuIFx0XHQvKiBoaWRfaWQgaXMgdGhlIGZpcnN0IGZpZWxkIG9mIHN0cnVjdCBoaWRfYnBmX29wcyAqL1xuIFx0XHRvcHNfaGlkX2lkID0gYnBmX21hcF9faW5pdGlhbF92YWx1ZShtYXAsIE5VTEwpO1xuIFx0XHRBU1NFUlRfT0tfUFRSKG9wc19oaWRfaWQpIFRIX0xPRyhcInVuYWJsZSB0byByZXRyaWV2ZSBzdHJ1Y3Rfb3BzIGRhdGFcIik7XG5AQCAtMTA5LDEzICsxMjcsNiBAQCBzdGF0aWMgdm9pZCBsb2FkX3Byb2dyYW1zKGNvbnN0IHN0cnVjdCB0ZXN0X3Byb2dyYW0gcHJvZ3JhbXNbXSxcbiBcdFx0Km9wc19oaWRfaWQgPSBzZWxmLVx1MDAzZWhpZC5oaWRfaWQ7XG4gXHR9XG4gXG4tXHQvKiB3ZSBkaXNhYmxlIHRoZSBhdXRvLWF0dGFjaCBmZWF0dXJlIG9mIGFsbCBtYXBzIGJlY2F1c2Ugd2Vcbi1cdCAqIG9ubHkgd2FudCB0aGUgdGVzdGVkIG9uZSB0byBiZSBtYW51YWxseSBhdHRhY2hlZCBpbiB0aGUgbmV4dFxuLVx0ICogY2FsbCB0byBicGZfbWFwX19hdHRhY2hfc3RydWN0X29wcygpXG4tXHQgKi9cbi1cdGJwZl9vYmplY3RfX2Zvcl9lYWNoX21hcChpdGVyX21hcCwgKnNlbGYtXHUwMDNlc2tlbC1cdTAwM2Vza2VsZXRvbi1cdTAwM2VvYmopXG4tXHRcdGJwZl9tYXBfX3NldF9hdXRvYXR0YWNoKGl0ZXJfbWFwLCBmYWxzZSk7XG4tXG4gXHRlcnIgPSBoaWRfX2xvYWQoc2VsZi1cdTAwM2Vza2VsKTtcbiBcdEFTU0VSVF9PSyhlcnIpIFRIX0xPRyhcImhpZF9za2VsX2xvYWQgZmFpbGVkOiAlZFwiLCBlcnIpO1xuIFxuQEAgLTg4Nyw2ICs4OTgsMTcgQEAgVEVTVF9GKGhpZF9icGYsIHRlc3RfcmRlc2NfZml4dXApXG4gXHRBU1NFUlRfRVEocnB0X2Rlc2MudmFsdWVbNF0sIDB4NDIpO1xuIH1cbiBcbitURVNUX0YoaGlkX2JwZiwgdGVzdF9yZGVzY19maXh1cF9nZXRfZGF0YV9vdmVyZmxvdylcbit7XG4rXHRjb25zdCBzdHJ1Y3QgdGVzdF9wcm9ncmFtIHByb2dzW10gPSB7XG4rXHRcdHsgLm5hbWUgPSBcImhpZF9yZGVzY19maXh1cF9nZXRfZGF0YV9vdmVyZmxvd1wiIH0sXG4rXHR9O1xuK1xuK1x0TE9BRF9QUk9HUkFNUyhwcm9ncyk7XG4rXG4rXHRBU1NFUlRfRVEoc2VsZi1cdTAwM2Vza2VsLVx1MDAzZWJzcy1cdTAwM2VnZXRfZGF0YV9vdmVyZmxvd19jaGVjaywgMSk7XG4rfVxuK1xuIHN0YXRpYyBpbnQgbGliYnBmX3ByaW50X2ZuKGVudW0gbGliYnBmX3ByaW50X2xldmVsIGxldmVsLFxuIFx0XHRcdCAgIGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCBhcmdzKVxuIHtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmNcbmluZGV4IDVlY2M4NDVlZjc5MjE2Li5iMjFmYmIxM2M5MjZmOCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jXG5AQCAtMTMsNiArMTMsNyBAQCBzdHJ1Y3QgYXR0YWNoX3Byb2dfYXJncyB7XG4gXG4gX191NjQgY2FsbGJhY2tfY2hlY2sgPSA1MjtcbiBfX3U2NCBjYWxsYmFjazJfY2hlY2sgPSA1MjtcbitfX3U2NCBnZXRfZGF0YV9vdmVyZmxvd19jaGVjaztcbiBcbiBTRUMoXCI/c3RydWN0X29wcy9oaWRfZGV2aWNlX2V2ZW50XCIpXG4gaW50IEJQRl9QUk9HKGhpZF9maXJzdF9ldmVudCwgc3RydWN0IGhpZF9icGZfY3R4ICpoaWRfY3R4LCBlbnVtIGhpZF9yZXBvcnRfdHlwZSB0eXBlKVxuQEAgLTI0MCw2ICsyNDEsMjAgQEAgc3RydWN0IGhpZF9icGZfb3BzIHJkZXNjX2ZpeHVwID0ge1xuIFx0LmhpZF9yZGVzY19maXh1cCA9ICh2b2lkICopaGlkX3JkZXNjX2ZpeHVwLFxuIH07XG4gXG4rU0VDKFwiP3N0cnVjdF9vcHMucy9oaWRfcmRlc2NfZml4dXBcIilcbitpbnQgQlBGX1BST0coaGlkX3JkZXNjX2ZpeHVwX2dldF9kYXRhX292ZXJmbG93LCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhpZF9jdHgpXG4re1xuK1x0aWYgKCFoaWRfYnBmX2dldF9kYXRhKGhpZF9jdHgsIDIgLyogb2Zmc2V0ICovLCB+MFVMTCAvKiBzaXplICovKSlcbitcdFx0Z2V0X2RhdGFfb3ZlcmZsb3dfY2hlY2sgPSAxO1xuK1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK1NFQyhcIi5zdHJ1Y3Rfb3BzLmxpbmtcIilcbitzdHJ1Y3QgaGlkX2JwZl9vcHMgcmRlc2NfZml4dXBfZ2V0X2RhdGFfb3ZlcmZsb3cgPSB7XG4rXHQuaGlkX3JkZXNjX2ZpeHVwID0gKHZvaWQgKiloaWRfcmRlc2NfZml4dXBfZ2V0X2RhdGFfb3ZlcmZsb3csXG4rfTtcbitcbiBTRUMoXCI/c3RydWN0X29wcy9oaWRfZGV2aWNlX2V2ZW50XCIpXG4gaW50IEJQRl9QUk9HKGhpZF90ZXN0X2luc2VydDEsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGlkX2N0eCwgZW51bSBoaWRfcmVwb3J0X3R5cGUgdHlwZSlcbiB7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QwNjo1MTo0NS43ODkxNTAxODRaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2Mzc1NjgxODQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEtlcm5lbCBQYXRjaDogT3ZlcmZsb3cgQ2hlY2tzIGluIEhJRCBCUEYgRGF0YSBBY2Nlc3MqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIGhlcmUuIEl0J3MgdG91Y2hpbmcgYGRyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX2Rpc3BhdGNoLmNgIGFuZCBpbmNsdWRlcyBzb21lIHNlbGZ0ZXN0cyBpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkYC4gVGhlIG1lYXQgb2YgdGhlIGNoYW5nZSBpcyBpbiB0aGF0IGBoaWRfYnBmX2Rpc3BhdGNoLmNgIGZpbGUuIFNwZWNpZmljYWxseSwgaXQncyBhZGRpbmcgYW4gb3ZlcmZsb3cgY2hlY2sgd2l0aGluIHRoZSBgaGlkX2JwZl9nZXRfZGF0YWAgZnVuY3Rpb24uIFdlJ3JlIHRhbGtpbmcgYWJvdXQgYSBmdW5jdGlvbmFsIG1vZGlmaWNhdGlvbiB0byB0aGUga2VybmVsIGhlcmUsIHNvIHdlIG5lZWQgdG8gYmUgdmVyeSBwcmVjaXNlLlxuXG5Fc3NlbnRpYWxseSwgdGhleSBhcmUgYWRkaW5nIGEgY2hlY2sgd2l0aGluIHRoZSBgaGlkX2JwZl9nZXRfZGF0YWAgZnVuY3Rpb24gdG8gcHJldmVudCBwb3RlbnRpYWwgaW50ZWdlciBvdmVyZmxvd3Mgd2hlbiBjYWxjdWxhdGluZyB0aGUgZW5kIGFkZHJlc3Mgb2YgYSBkYXRhIGJ1ZmZlci4gVGhpcyBpcyBhIGdvb2QgcHJhY3RpY2UsIGFuZCBpdCdzIGEgY3JpdGljYWwgc2FmZXR5IGZlYXR1cmUgd2hlbiBkZWFsaW5nIHdpdGggbWVtb3J5IGFjY2VzcyB3aXRoaW4gdGhlIGtlcm5lbCwgZXNwZWNpYWxseSB3aXRoaW4gQlBGIHByb2dyYW1zLlxuXG5UaGUgcXVlc3Rpb24gbm93IGlzLCBpcyB0aGlzIGNvZGUgcGF0aCBhY3R1YWxseSAqcmVhY2hhYmxlKj8gSXMgdGhpcyBjaGFuZ2UgcG90ZW50aWFsbHkgaW1wYWN0ZnVsPyBBYnNvbHV0ZWx5LCB5ZXMsIGl0IGlzLiBUaGUgYGhpZF9icGZfZ2V0X2RhdGFgIGZ1bmN0aW9uIGlzIGEgQlBGIGtmdW5jLiBHaXZlbiB0aGUgcHJvbWluZW5jZSBvZiBCUEYgaW4gdGhlc2UgbW9kZXJuIGtlcm5lbHMsIGl0J3MgYSBoZWF2aWx5IHVzZWQgZnVuY3Rpb24uIFRoaXMgdGVsbHMgdXMgdGhpcyBjaGVjayBjb3VsZCBiZSB2ZXJ5IGltcG9ydGFudC5cblxuQWxyaWdodCwgc28gbGV0J3MgdmVyaWZ5IHRoYXQgdGhlIGNvZGUgKmlzKiBidWlsdC4gYGRyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX2Rpc3BhdGNoLmNgIHdpbGwgYmUgY29tcGlsZWQgaWYgYENPTkZJR19ISURfQlBGYCBpcyBlbmFibGVkLiBUaGF0J3MgdGhlIGdhdGVrZWVwZXIuIFdlJ2xsIG5lZWQgdG8gY29uZmlybSB0aGF0IHRoaXMgY29uZmlnIGlzLCBpbiBmYWN0LCBlbmFibGVkIGluIHRoZSB0YXJnZXQgZW52aXJvbm1lbnRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzY0LCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzU5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMDY6NTE6NTIuMTY0ODM0Njk0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMxMjk5OTk2MTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaGlkX2JwZl9kaXNwYXRjaC5vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvaGlkL2JwZi9NYWtlZmlsZT04PW9iai0kKENPTkZJR19ISURfQlBGKSArPSBoaWRfYnBmLm9cXG5kcml2ZXJzL2hpZC9icGYvTWFrZWZpbGU6OTpDRkxBR1NfaGlkX2JwZl9kaXNwYXRjaC5vICs9IC1JJChMSUJCUEZfSU5DTFVERSlcXG5kcml2ZXJzL2hpZC9icGYvTWFrZWZpbGUtMTAtQ0ZMQUdTX2hpZF9icGZfam1wX3RhYmxlLm8gKz0gLUkkKExJQkJQRl9JTkNMVURFKVxcbmRyaXZlcnMvaGlkL2JwZi9NYWtlZmlsZToxMTpoaWRfYnBmLW9ianMgKz0gaGlkX2JwZl9kaXNwYXRjaC5vIGhpZF9icGZfc3RydWN0X29wcy5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDA2OjUxOjU1LjI5NDg0MDg5NloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwMzg1MjM5MzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqS2VybmVsIENvbmZpZ3VyYXRpb24gRGVlcCBEaXZlKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMga2VybmVsIGNvbmZpZ3VyYXRpb24gc3BhY2UsIGFuZCBpdCBsb29rcyBsaWtlIGBDT05GSUdfSElEX0JQRmAgaXMgYSBrZXkgcGllY2Ugb2YgdGhlIHB1enpsZSBoZXJlLiBJIGtub3cgdGhhdCBCUEYga2Z1bmNzLCBpbiBnZW5lcmFsLCB1c3VhbGx5IHJlcXVpcmUgYENPTkZJR19CUEZfU1lTQ0FMTGAgYW5kIGBDT05GSUdfQlBGX0pJVGAgdG8gYmUgZW5hYmxlZC4gSSdtIHJlYXNvbmFibHkgc3VyZSBgSElEX0JQRmAgbGlrZWx5IGRlcGVuZHMgb24gdGhlc2UgYXMgd2VsbC4gSSBuZWVkIHRvIGNvbmZpcm0gdGhpcyBkZXBlbmRlbmN5IHRvIGJlIGNlcnRhaW4gb2YgdGhlIGNvcnJlY3QgY29uZmlndXJhdGlvbi4gVGhlcmVmb3JlLCBteSBuZXh0IHN0ZXAgaXMgdG8gY2FyZWZ1bGx5IGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMgb2YgYENPTkZJR19ISURfQlBGYCBhbmQgYnVpbGQgYSBzdWl0YWJsZSBjb25maWd1cmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjM5LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMDY6NTE6NTguMzMzMzY2ODgxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0OTU0OTg0NzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEhJRF9CUEZcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9oaWQvYnBmL0tjb25maWc9Mj1tZW51IFxcXCJISUQtQlBGIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9oaWQvYnBmL0tjb25maWctMy1cXG5kcml2ZXJzL2hpZC9icGYvS2NvbmZpZzo0OmNvbmZpZyBISURfQlBGXFxuZHJpdmVycy9oaWQvYnBmL0tjb25maWctNS1cXHRib29sIFxcXCJISUQtQlBGIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDA2OjUyOjAwLjgyODg3NTc0OVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4NDQ1NDYzNTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgYXMgaWYgdGhleSdyZSBteSBvd246XG5cbioqQW5hbHl6aW5nIHRoZSBISUQgQlBGIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqXG5cbkFscmlnaHQsIEknbSBnb2luZyB0byB0YWtlIGEgbG9vayBhdCB0aGUgYGRyaXZlcnMvaGlkL2JwZi9LY29uZmlnYCBmaWxlLiBJJ20gaW1tZWRpYXRlbHkgaW50ZXJlc3RlZCBpbiBzZWVpbmcgaG93IHRoZSBCUEYgZnVuY3Rpb25hbGl0eSBmb3IgSElEIGRldmljZXMgaXMgY29uZmlndXJlZC4gSSdtIGV4cGVjdGluZyB0byBmaW5kIGEgc2VyaWVzIG9mIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgcHJvYmFibHkgdXNpbmcgdGhlIGBjb25maWdgIGtleXdvcmQsIG5lc3RlZCB3aXRoaW4gcG90ZW50aWFsbHkgY29uZGl0aW9uYWwgYmxvY2tzIGRlZmluZWQgYnkgYGlmYCBzdGF0ZW1lbnRzLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIGFueSBkZXBlbmRlbmNpZXMg4oCTIHdoYXQgb3RoZXIga2VybmVsIGZlYXR1cmVzIG9yIG1vZHVsZXMgbmVlZCB0byBiZSBlbmFibGVkIGJlZm9yZSB0aGUgQlBGIEhJRCBmdW5jdGlvbmFsaXR5IGNhbiBldmVuIGJlIGNvbnNpZGVyZWQ/IEkgd2FudCB0byB1bmRlcnN0YW5kIHRoZSBsZXZlbCBvZiBncmFudWxhcml0eSBhdmFpbGFibGU7IGFyZSB3ZSB0YWxraW5nIGFib3V0IHBlci1kZXZpY2Ugb3B0aW9ucywgb3Igc29tZXRoaW5nIG1vcmUgZ2xvYmFsIHRoYXQgYXBwbGllcyB0byBhbGwgSElEIEJQRiB1c2FnZT8gQXJlIHRoZXJlIGRpZmZlcmVudCBsZXZlbHMgb2YgQlBGIHN1cHBvcnQsIHBlcmhhcHMgd2l0aCBkaWZmZXJlbnQgcGVyZm9ybWFuY2Ugb3Igc2VjdXJpdHkgdHJhZGUtb2Zmcz8gTXkgZm9jdXMgd2lsbCBiZSBvbiB0aGUgc3RydWN0dXJlLCB0aGUgZGVwZW5kZW5jaWVzLCBhbmQgdGhlIG5hdHVyZSBvZiB0aGUgY29uZmlndXJhdGlvbiBjaG9pY2VzIGF2YWlsYWJsZSB0byB0aGUgdXNlci4gSSdsbCBtZW50YWxseSBtYXAgb3V0IHRoZSBpbXBsaWNhdGlvbnMgb2YgZWFjaCBvcHRpb24gYW5kIGNvbnNpZGVyIGhvdyB0aGVzZSBjaG9pY2VzIG1pZ2h0IGltcGFjdCBwZXJmb3JtYW5jZSwgc2VjdXJpdHksIGFuZCBvdmVyYWxsIGZsZXhpYmlsaXR5IGluIHVzaW5nIEJQRiB3aXRoIEhJRCBkZXZpY2VzLiBFc3NlbnRpYWxseSwgSSdtIHRyeWluZyB0byBnZXQgYSBmZWVsIGZvciBob3cgdGhlIGtlcm5lbCBleHBvc2VzIHRoaXMgZnVuY3Rpb25hbGl0eSBhbmQgaG93IGEgZGV2ZWxvcGVyIGNhbiBsZXZlcmFnZSBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDk1MCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDA2OjUyOjA0LjY3MzQyNDIwMloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4MjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvaGlkL2JwZi9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRtZW51IFxcXCJISUQtQlBGIHN1cHBvcnRcXFwiXFxuICAgMzpcXHRcXG4gICA0OlxcdGNvbmZpZyBISURfQlBGXFxuICAgNTpcXHRcXHRib29sIFxcXCJISUQtQlBGIHN1cHBvcnRcXFwiXFxuICAgNjpcXHRcXHRkZXBlbmRzIG9uIEJQRl9KSVRcXG4gICA3OlxcdFxcdGRlcGVuZHMgb24gQlBGX1NZU0NBTExcXG4gICA4OlxcdFxcdGRlcGVuZHMgb24gRFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFNcXG4gICA5OlxcdFxcdGhlbHBcXG4gIDEwOlxcdFxcdFRoaXMgb3B0aW9uIGFsbG93cyB0byBzdXBwb3J0IGVCUEYgcHJvZ3JhbXMgb24gdGhlIEhJRCBzdWJzeXN0ZW0uXFxuICAxMTpcXHRcXHRlQlBGIHByb2dyYW1zIGNhbiBmaXggSElEIGRldmljZXMgaW4gYSBsaWdodGVyIHdheSB0aGFuIGEgZnVsbFxcbiAgMTI6XFx0XFx0a2VybmVsIHBhdGNoIGFuZCBhbGxvdyBhIGxvdCBtb3JlIGZsZXhpYmlsaXR5LlxcbiAgMTM6XFx0XFxuICAxNDpcXHRcXHRGb3IgZG9jdW1lbnRhdGlvbiwgc2VlIERvY3VtZW50YXRpb24vaGlkL2hpZC1icGYucnN0XFxuICAxNTpcXHRcXG4gIDE2OlxcdGVuZG1lbnVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMDY6NTI6MDQuNjczNDgzNjAyWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODE3OTk1MzMzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFRhcmdldCBJZGVudGlmaWNhdGlvbjogSElEIEJQRiBEYXRhIFJldHJpZXZhbCoqXG5cbk9rYXksIHNvIEkndmUgZ290IGBISURfQlBGYCBhcyB0aGUgcmVsZXZhbnQgY29uZmlnLCBhbmQgdGhlIHRhcmdldCBmdW5jdGlvbiBpcyBgaGlkX2JwZl9nZXRfZGF0YWAuIEZyb20gdGhlIGxvb2tzIG9mIGl0LCB0aGlzIGlzIGEgZGVmaW5pdGUgXCJ5ZXNcIiBmb3IgZnV6emluZy4gSXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBzcGVjaWZpY2FsbHkgYWRkcmVzc2luZyBhbiBpbnRlZ2VyIG92ZXJmbG93IGluIGEgQlBGIGtmdW5jLiBNeSBmb2N1cyB3aWxsIGJlIHNxdWFyZWx5IG9uIGBoaWRfYnBmX2dldF9kYXRhYC4gSSdsbCBuZWVkIHRvIGVuYWJsZSB0aGUgYEhJRF9CUEZgIGNvbmZpZywgbmF0dXJhbGx5LlxuXG5Ob3csIGxldCdzIGp1c3QgY29uZmlybSBpZiB0aGlzIGlzIGEgaG90IHBhdGguIEl0J3MgY2FsbGVkIGZyb20gQlBGIHByb2dyYW1zIHRoYXQgYXJlIGF0dGFjaGVkIHRvIEhJRCBldmVudHMsIHNvIGl0IGNvdWxkIGJlIGNhbGxlZCBwcmV0dHkgZnJlcXVlbnRseSBkZXBlbmRpbmcgb24gdGhlIGFjdGl2aXR5IG9mIHRoZSBkZXZpY2UuIEJ1dCBpdCdzIHRoaXMgKnNwZWNpZmljKiBmdW5jdGlvbiB0aGF0IHdhcyBhbHRlcmVkLiBJdCdzIGEga2Z1bmMsIHNvIGl0J3MgY2FsbGVkIGRpcmVjdGx5IGZyb20gQlBGIGNvZGUg4oCTIHdoaWNoIG1ha2VzIGl0IGEgZ29vZCB0YXJnZXQuXG5cbkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHJlbGF0ZWQgY29uZmlncywgZXZlbiB0aG91Z2ggSSd2ZSBhbHJlYWR5IGNvbmZpcm1lZCBgSElEX0JQRmAgaXMgdGhlIG1haW4gb25lLiBPa2F5LCBgSElEX0JQRmAgZGVwZW5kcyBvbiBgQlBGX0pJVGAsIGBCUEZfU1lTQ0FMTGAsIGFuZCBgRFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFNgLiBCdXQgZm9jdXNpbmcgb24ganVzdCBgSElEX0JQRmAgaXMgZmluZSBpbiB0aGlzIGNhc2UuXG5cbkxldCdzIHF1aWNrbHkgdmVyaWZ5IHRoZSB3aG9sZSBsaW5lIG9mIHJlYXNvbmluZy4gVGhlIHBhdGNoIGFkZHJlc3NlcyBhbiBpbnRlZ2VyIG92ZXJmbG93IHdpdGhpbiBgaGlkX2JwZl9nZXRfZGF0YWAuIFRoaXMgaXMgYSBCUEYga2Z1bmMgYWNjZXNzaWJsZSB0byBISUQgQlBGIHByb2dyYW1zLiBGdXp6aW5nICp0aGlzKiBmdW5jdGlvbiBpcyBpbXBvcnRhbnQgYmVjYXVzZSBpdCdsbCBlbnN1cmUgdGhlIG92ZXJmbG93IGNoZWNrIGRvZXMgd2hhdCBpdCdzIHN1cHBvc2VkIHRvIGRvIGFuZCB0aGVyZSBhcmUgbm8gb3RoZXIgdnVsbmVyYWJpbGl0aWVzIGluIHRoZSBkYXRhIHJldHJpZXZhbC5cblxuSSdsbCBqdXN0IGNvbmZpcm0gYGhpZF9icGZfZ2V0X2RhdGFgIGlzIHRoZSAqb25seSogbW9kaWZpZWQga2VybmVsIGZ1bmN0aW9uLiBZdXAsIG9ubHkgdGhlIGZpbGUgYGhpZF9icGZfZGlzcGF0Y2guY2Agd2FzIG1vZGlmaWVkIGluIHRoZSBrZXJuZWwsIGFuZCB0aGUgcmVzdCBvZiB0aGUgY2hhbmdlcyBhcmUgc2VsZnRlc3RzLlxuXG5gYGBqc29uXG57XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWUsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcImhpZF9icGZfZ2V0X2RhdGFcIl0sXG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXCJISURfQlBGXCJdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBpbnRlZ2VyIG92ZXJmbG93IGluIHRoZSBoaWRfYnBmX2dldF9kYXRhIEJQRiBrZnVuYywgd2hpY2ggaXMgZXhwb3NlZCB0byBISUQgQlBGIHByb2dyYW1zLiBGdXp6aW5nIHRoaXMgZnVuY3Rpb24gZW5zdXJlcyB0aGUgb3ZlcmZsb3cgY2hlY2sgY29ycmVjdGx5IHByZXZlbnRzIG91dC1vZi1ib3VuZHMgYWNjZXNzLlwiXG59XG5gYGBcblxuXG4iLCJJbnB1dFRva2VucyI6NTQ5NCwiT3V0cHV0VG9rZW5zIjo5NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyNywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDA2OjUyOjEyLjg1MzQzOTUxOFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNTkyOTUwNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSElEX0JQRlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImhpZF9icGZfZ2V0X2RhdGFcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBpbnRlZ2VyIG92ZXJmbG93IGluIHRoZSBoaWRfYnBmX2dldF9kYXRhIEJQRiBrZnVuYywgd2hpY2ggaXMgZXhwb3NlZCB0byBISUQgQlBGIHByb2dyYW1zLiBGdXp6aW5nIHRoaXMgZnVuY3Rpb24gZW5zdXJlcyB0aGUgb3ZlcmZsb3cgY2hlY2sgY29ycmVjdGx5IHByZXZlbnRzIG91dC1vZi1ib3VuZHMgYWNjZXNzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkhJRF9CUEZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJoaWRfYnBmX2dldF9kYXRhXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gaW50ZWdlciBvdmVyZmxvdyBpbiB0aGUgaGlkX2JwZl9nZXRfZGF0YSBCUEYga2Z1bmMsIHdoaWNoIGlzIGV4cG9zZWQgdG8gSElEIEJQRiBwcm9ncmFtcy4gRnV6emluZyB0aGlzIGZ1bmN0aW9uIGVuc3VyZXMgdGhlIG92ZXJmbG93IGNoZWNrIGNvcnJlY3RseSBwcmV2ZW50cyBvdXQtb2YtYm91bmRzIGFjY2Vzcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowpkgbc[1] Phase: Succeeded StartedAt: 2026-06-23 06:52:24 +0000 UTC FinishedAt: 2026-06-23 06:52:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpkgbc[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-23 06:52:24 +0000 UTC FinishedAt: 2026-06-23 06:52:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpkgbc[2] Phase: Succeeded StartedAt: 2026-06-23 06:52:24 +0000 UTC FinishedAt: 2026-06-23 07:47:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpkgbc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"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":["hid_bpf_get_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"a1fb4ad0-6efb-4212-8a11-d2f82cedf423","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-06-23 06:52:24 +0000 UTC FinishedAt: 2026-06-23 07:47:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"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":["hid_bpf_get_data"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"a1fb4ad0-6efb-4212-8a11-d2f82cedf423","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-workflowpkgbc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"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":["hid_bpf_get_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"a1fb4ad0-6efb-4212-8a11-d2f82cedf423","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-06-23 06:52:24 +0000 UTC FinishedAt: 2026-06-23 06:52:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpkgbc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"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":["hid_bpf_get_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"a1fb4ad0-6efb-4212-8a11-d2f82cedf423","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-06-23 06:52:24 +0000 UTC FinishedAt: 2026-06-23 06:52:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"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-workflowpkgbc/series-workflowpkgbc-convert-artifact-1930485123/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpkgbc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"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":["hid_bpf_get_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"a1fb4ad0-6efb-4212-8a11-d2f82cedf423","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-06-23 06:52:44 +0000 UTC FinishedAt: 2026-06-23 07:19:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpkgbc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"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":["hid_bpf_get_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"a1fb4ad0-6efb-4212-8a11-d2f82cedf423","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-06-23 06:52:44 +0000 UTC FinishedAt: 2026-06-23 07:19: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:*cf7f4a0f-32c2-425e-95c2-aa234258b462,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-workflowpkgbc/series-workflowpkgbc-convert-artifact-1930485123/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": "69ed0ac3-1c11-4498-b8b7-852a3e2ef348", "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-workflowpkgbc/series-workflowpkgbc-build-action-21204465/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpkgbc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"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":["hid_bpf_get_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"a1fb4ad0-6efb-4212-8a11-d2f82cedf423","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-06-23 06:52:44 +0000 UTC FinishedAt: 2026-06-23 07:18:53 +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:*cf7f4a0f-32c2-425e-95c2-aa234258b462,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-workflowpkgbc/series-workflowpkgbc-convert-artifact-1930485123/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": "69ed0ac3-1c11-4498-b8b7-852a3e2ef348", "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-workflowpkgbc/series-workflowpkgbc-build-action-21204465/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpkgbc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"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":["hid_bpf_get_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"a1fb4ad0-6efb-4212-8a11-d2f82cedf423","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-06-23 07:19:03 +0000 UTC FinishedAt: 2026-06-23 07:19:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpkgbc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"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":["hid_bpf_get_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"a1fb4ad0-6efb-4212-8a11-d2f82cedf423","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-06-23 07:19:03 +0000 UTC FinishedAt: 2026-06-23 07:19:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpkgbc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"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":["hid_bpf_get_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"a1fb4ad0-6efb-4212-8a11-d2f82cedf423","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-06-23 07:19:03 +0000 UTC FinishedAt: 2026-06-23 07:19:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpkgbc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"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":["hid_bpf_get_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"a1fb4ad0-6efb-4212-8a11-d2f82cedf423","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-06-23 07:19:03 +0000 UTC FinishedAt: 2026-06-23 07:19:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"a1fb4ad0-6efb-4212-8a11-d2f82cedf423","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-workflowpkgbc/series-workflowpkgbc-convert-artifact-3741134650/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpkgbc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"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":["hid_bpf_get_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"a1fb4ad0-6efb-4212-8a11-d2f82cedf423","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-06-23 07:19:36 +0000 UTC FinishedAt: 2026-06-23 07:21:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpkgbc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"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":["hid_bpf_get_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"a1fb4ad0-6efb-4212-8a11-d2f82cedf423","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-06-23 07:19:36 +0000 UTC FinishedAt: 2026-06-23 07:20:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*69ed0ac3-1c11-4498-b8b7-852a3e2ef348,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-workflowpkgbc/series-workflowpkgbc-build-action-21204465/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-workflowpkgbc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"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":["hid_bpf_get_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"a1fb4ad0-6efb-4212-8a11-d2f82cedf423","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-06-23 07:21:09 +0000 UTC FinishedAt: 2026-06-23 07:21:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpkgbc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"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":["hid_bpf_get_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"a1fb4ad0-6efb-4212-8a11-d2f82cedf423","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-06-23 07:21:09 +0000 UTC FinishedAt: 2026-06-23 07:21:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpkgbc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"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":["hid_bpf_get_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"a1fb4ad0-6efb-4212-8a11-d2f82cedf423","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-06-23 07:21:09 +0000 UTC FinishedAt: 2026-06-23 07:43:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpkgbc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"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":["hid_bpf_get_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"a1fb4ad0-6efb-4212-8a11-d2f82cedf423","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-06-23 07:21:09 +0000 UTC FinishedAt: 2026-06-23 07:43:25 +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:*cf7f4a0f-32c2-425e-95c2-aa234258b462,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-workflowpkgbc/series-workflowpkgbc-convert-artifact-3741134650/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": "1c77f69b-856a-4745-a5d2-f39d81832a78", "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-workflowpkgbc/series-workflowpkgbc-build-action-1915477406/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpkgbc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"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":["hid_bpf_get_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"a1fb4ad0-6efb-4212-8a11-d2f82cedf423","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-06-23 07:21:09 +0000 UTC FinishedAt: 2026-06-23 07:43:15 +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:*cf7f4a0f-32c2-425e-95c2-aa234258b462,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-workflowpkgbc/series-workflowpkgbc-convert-artifact-3741134650/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": "1c77f69b-856a-4745-a5d2-f39d81832a78", "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-workflowpkgbc/series-workflowpkgbc-build-action-1915477406/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpkgbc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"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":["hid_bpf_get_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"a1fb4ad0-6efb-4212-8a11-d2f82cedf423","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-06-23 07:43:25 +0000 UTC FinishedAt: 2026-06-23 07:43:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpkgbc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"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":["hid_bpf_get_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"a1fb4ad0-6efb-4212-8a11-d2f82cedf423","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-06-23 07:43:25 +0000 UTC FinishedAt: 2026-06-23 07:43:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpkgbc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"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":["hid_bpf_get_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"a1fb4ad0-6efb-4212-8a11-d2f82cedf423","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-06-23 07:43:25 +0000 UTC FinishedAt: 2026-06-23 07:45:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpkgbc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"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":["hid_bpf_get_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"a1fb4ad0-6efb-4212-8a11-d2f82cedf423","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-06-23 07:43:25 +0000 UTC FinishedAt: 2026-06-23 07:45:07 +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:*1c77f69b-856a-4745-a5d2-f39d81832a78,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-workflowpkgbc/series-workflowpkgbc-build-action-1915477406/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-workflowpkgbc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"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":["hid_bpf_get_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"a1fb4ad0-6efb-4212-8a11-d2f82cedf423","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-06-23 07:45:17 +0000 UTC FinishedAt: 2026-06-23 07:47:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpkgbc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"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":["hid_bpf_get_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"a1fb4ad0-6efb-4212-8a11-d2f82cedf423","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-06-23 07:45:17 +0000 UTC FinishedAt: 2026-06-23 07:47:52 +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":["hid_bpf_get_data"],"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:*69ed0ac3-1c11-4498-b8b7-852a3e2ef348,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*1c77f69b-856a-4745-a5d2-f39d81832a78,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-workflowpkgbc/series-workflowpkgbc-build-action-21204465/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-workflowpkgbc/series-workflowpkgbc-build-action-1915477406/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowpkgbc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"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":["hid_bpf_get_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"a1fb4ad0-6efb-4212-8a11-d2f82cedf423","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-06-23 07:45:17 +0000 UTC FinishedAt: 2026-06-23 07:45:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpkgbc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"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":["hid_bpf_get_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"a1fb4ad0-6efb-4212-8a11-d2f82cedf423","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-06-23 07:45:17 +0000 UTC FinishedAt: 2026-06-23 07:45:23 +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":["hid_bpf_get_data"],"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-workflowpkgbc/series-workflowpkgbc-convert-artifact-2212400751/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpkgbc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"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":["hid_bpf_get_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"a1fb4ad0-6efb-4212-8a11-d2f82cedf423","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-06-23 07:45:17 +0000 UTC FinishedAt: 2026-06-23 07:45:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpkgbc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"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":["hid_bpf_get_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"a1fb4ad0-6efb-4212-8a11-d2f82cedf423","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-06-23 07:45:17 +0000 UTC FinishedAt: 2026-06-23 07:45:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpkgbc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"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":["hid_bpf_get_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"a1fb4ad0-6efb-4212-8a11-d2f82cedf423","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-06-23 07:45:17 +0000 UTC FinishedAt: 2026-06-23 07:45:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpkgbc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"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":["hid_bpf_get_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"a1fb4ad0-6efb-4212-8a11-d2f82cedf423","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-06-23 07:45:27 +0000 UTC FinishedAt: 2026-06-23 07:47:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpkgbc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"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":["hid_bpf_get_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"a1fb4ad0-6efb-4212-8a11-d2f82cedf423","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-06-23 07:45:27 +0000 UTC FinishedAt: 2026-06-23 07:47:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*69ed0ac3-1c11-4498-b8b7-852a3e2ef348,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*1c77f69b-856a-4745-a5d2-f39d81832a78,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-workflowpkgbc/series-workflowpkgbc-build-action-21204465/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-workflowpkgbc/series-workflowpkgbc-build-action-1915477406/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-workflowpkgbc/series-workflowpkgbc-convert-artifact-2212400751/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,}