Name: series-workflowh7qn2 Phase: Succeeded StartedAt: 2026-07-01 17:47:41 +0000 UTC FinishedAt: 2026-07-01 22:00:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh7qn2[0] Phase: Succeeded StartedAt: 2026-07-01 17:47:41 +0000 UTC FinishedAt: 2026-07-01 17:58:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh7qn2[0].run-triage Phase: Succeeded StartedAt: 2026-07-01 17:47:41 +0000 UTC FinishedAt: 2026-07-01 17:58:03 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "bd759e46b2ff02036fb80f389f78eedb43445357", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DAMON_SYSFS", "DAMON_VADDR", "TRANSPARENT_HUGEPAGE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "bd759e46b2ff02036fb80f389f78eedb43445357", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DAMON_SYSFS", "DAMON_VADDR", "TRANSPARENT_HUGEPAGE" ], "series_id": "e3624b91-ac55-4a84-bacb-e20f896e2b09" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "damos_va_collapse", "damos_va_split", "damon_collapse_folio_range", "target_order_store" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDE3OjU3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RBTU9OX1NZU0ZTJiMzNDssCiAgICAmIzM0O0RBTU9OX1ZBRERSJiMzNDssCiAgICAmIzM0O1RSQU5TUEFSRU5UX0hVR0VQQUdFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZGFtb3NfdmFfY29sbGFwc2UmIzM0OywKICAgICYjMzQ7ZGFtb3NfdmFfc3BsaXQmIzM0OywKICAgICYjMzQ7ZGFtb25fY29sbGFwc2VfZm9saW9fcmFuZ2UmIzM0OywKICAgICYjMzQ7dGFyZ2V0X29yZGVyX3N0b3JlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBEQU1PTiBzdWJzeXN0ZW0gYnkgYWRkaW5nIGEgbmV3IERBTU9TX1NQTElUIGFjdGlvbiBhbmQgZXh0ZW5kaW5nIERBTU9TX0NPTExBUFNFIHdpdGggYSB0YXJnZXRfb3JkZXIgcGFyYW1ldGVyLiBJdCBtb2RpZmllcyBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIHRvIHNwbGl0IGFuZCBjb2xsYXBzZSBmb2xpb3MgYmFzZWQgb24gREFNT04gc2NoZW1lcy4gVGhlc2UgZmVhdHVyZXMgYXJlIGV4cG9zZWQgdG8gdXNlcnNwYWNlIHZpYSB0aGUgREFNT04gc3lzZnMgaW50ZXJmYWNlLCBtYWtpbmcgdGhlbSByZWFjaGFibGUgYW5kIHRlc3RhYmxlIGJ5IGEgZnV6emVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDE3OjU3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYjE3MmIwZGVkYjU0MzJhNWUyMDA5ODVkZDQxYWUzMGFkYTg4NTNkNlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDEgMTc6NTY6NTkgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9kYW1vbi5oIGIvaW5jbHVkZS9saW51eC9kYW1vbi5oXG5pbmRleCA2ZjdlZGIzNTkwZWY5Ny4uMzBjZjRhZmIyMTJjZmIgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2RhbW9uLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvZGFtb24uaFxuQEAgLTEyMSw2ICYjNDM7MTIxLDcgQEAgc3RydWN0IGRhbW9uX3RhcmdldCB7XG4gICogQERBTU9TX0hVR0VQQUdFOlx0Q2FsbCBgYG1hZHZpc2UoKWBgIGZvciB0aGUgcmVnaW9uIHdpdGggTUFEVl9IVUdFUEFHRS5cbiAgKiBAREFNT1NfTk9IVUdFUEFHRTpcdENhbGwgYGBtYWR2aXNlKClgYCBmb3IgdGhlIHJlZ2lvbiB3aXRoIE1BRFZfTk9IVUdFUEFHRS5cbiAgKiBAREFNT1NfQ09MTEFQU0U6XHRDYWxsIGBgbWFkdmlzZSgpYGAgZm9yIHRoZSByZWdpb24gd2l0aCBNQURWX0NPTExBUFNFLlxuJiM0MzsgKiBAREFNT1NfU1BMSVQ6XHRTcGxpdCBsYXJnZSBmb2xpb3MgdG8gdGhlIHRhcmdldCBtVEhQIG9yZGVyLlxuICAqIEBEQU1PU19MUlVfUFJJTzpcdFByaW9yaXRpemUgdGhlIHJlZ2lvbiBvbiBpdHMgTFJVIGxpc3RzLlxuICAqIEBEQU1PU19MUlVfREVQUklPOlx0RGVwcmlvcml0aXplIHRoZSByZWdpb24gb24gaXRzIExSVSBsaXN0cy5cbiAgKiBAREFNT1NfTUlHUkFURV9IT1Q6ICBNaWdyYXRlIHRoZSByZWdpb25zIHByaW9yaXRpemluZyB3YXJtZXIgcmVnaW9ucy5cbkBAIC0xNDEsNiAmIzQzOzE0Miw3IEBAIGVudW0gZGFtb3NfYWN0aW9uIHtcbiBcdERBTU9TX0hVR0VQQUdFLFxuIFx0REFNT1NfTk9IVUdFUEFHRSxcbiBcdERBTU9TX0NPTExBUFNFLFxuJiM0MztcdERBTU9TX1NQTElULFxuIFx0REFNT1NfTFJVX1BSSU8sXG4gXHREQU1PU19MUlVfREVQUklPLFxuIFx0REFNT1NfTUlHUkFURV9IT1QsXG5AQCAtNTcyLDYgJiM0Mzs1NzQsMTQgQEAgc3RydWN0IGRhbW9zX21pZ3JhdGVfZGVzdHMge1xuIHN0cnVjdCBkYW1vcyB7XG4gXHRzdHJ1Y3QgZGFtb3NfYWNjZXNzX3BhdHRlcm4gcGF0dGVybjtcbiBcdGVudW0gZGFtb3NfYWN0aW9uIGFjdGlvbjtcbiYjNDM7XHQvKlxuJiM0MztcdCAqIEB0YXJnZXRfb3JkZXI6IHRhcmdldCBtVEhQIG9yZGVyIGZvciBEQU1PU19DT0xMQVBTRSBhbmRcbiYjNDM7XHQgKiBEQU1PU19TUExJVC4gIEZvciBDT0xMQVBTRSwgMCBtZWFucyBQTUQgb3JkZXIgZGVmYXVsdCxcbiYjNDM7XHQgKiB2YWxpZCB2YWx1ZXM6IDAsIDIuLkhQQUdFX1BNRF9PUkRFUi4gIEZvciBTUExJVCxcbiYjNDM7XHQgKiB2YWxpZCB2YWx1ZXM6IDIuLkhQQUdFX1BNRF9PUkRFUi0xOyAwIGFuZCBIUEFHRV9QTURfT1JERVJcbiYjNDM7XHQgKiBhcmUgcmVqZWN0ZWQgYXQgc2NoZW1lIGNyZWF0aW9uIHRpbWUgKGRlZmF1bHRpbmcgdG8gMikuXG4mIzQzO1x0ICovXG4mIzQzO1x0dW5zaWduZWQgaW50IHRhcmdldF9vcmRlcjtcbiBcdHVuc2lnbmVkIGxvbmcgYXBwbHlfaW50ZXJ2YWxfdXM7XG4gLyogcHJpdmF0ZTogaW50ZXJuYWwgdXNlIG9ubHkgKi9cbiBcdC8qXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9raHVnZXBhZ2VkLmggYi9pbmNsdWRlL2xpbnV4L2todWdlcGFnZWQuaFxuaW5kZXggZDdhOTA1M2ZmNGZlZDEuLjZmYjhhNjg1Nzc5MDNhIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9raHVnZXBhZ2VkLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgva2h1Z2VwYWdlZC5oXG5AQCAtMjAsNiAmIzQzOzIwLDkgQEAgZXh0ZXJuIGJvb2wgY3VycmVudF9pc19raHVnZXBhZ2VkKHZvaWQpO1xuIHZvaWQgY29sbGFwc2VfcHRlX21hcHBlZF90aHAoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgYWRkcixcbiBcdFx0Ym9vbCBpbnN0YWxsX3BtZCk7XG4gXG4mIzQzO2ludCBkYW1vbl9jb2xsYXBzZV9mb2xpb19yYW5nZShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBzdGFydF9hZGRyLFxuJiM0MztcdFx0XHQgICAgICAgdW5zaWduZWQgaW50IHRhcmdldF9vcmRlcik7XG4mIzQzO1xuIHN0YXRpYyBpbmxpbmUgdm9pZCBraHVnZXBhZ2VkX2Zvcmsoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHN0cnVjdCBtbV9zdHJ1Y3QgKm9sZG1tKVxuIHtcbiBcdGlmIChtbV9mbGFnc190ZXN0KE1NRl9WTV9IVUdFUEFHRSwgb2xkbW0pKVxuZGlmZiAtLWdpdCBhL21tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYyBiL21tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuY1xuaW5kZXggMzI5Y2ZkMGJiZTlmMzIuLjU0NzI1MmZjOGEyMGFkIDEwMDY0NFxuLS0tIGEvbW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmNcbkBAIC02LDcgJiM0Mzs2LDkgQEBcbiAgKi9cbiBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9zbGFiLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvbW0uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L251bWEuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9odWdlX21tLmhcdTAwM2VcbiBcbiAjaW5jbHVkZSBcJiMzNDtzeXNmcy1jb21tb24uaFwmIzM0O1xuIFxuQEAgLTIyNTcsNiAmIzQzOzIyNTksNyBAQCBzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lIHtcbiBcdHN0cnVjdCBkYW1vbl9zeXNmc19zdGF0cyAqc3RhdHM7XG4gXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbnMgKnRyaWVkX3JlZ2lvbnM7XG4gXHRpbnQgdGFyZ2V0X25pZDtcbiYjNDM7XHR1bnNpZ25lZCBpbnQgdGFyZ2V0X29yZGVyO1xuIFx0c3RydWN0IGRhbW9zX3N5c2ZzX2Rlc3RzICpkZXN0cztcbiB9O1xuIFxuQEAgLTIyOTAsNiAmIzQzOzIyOTMsMTAgQEAgc3RhdGljIHN0cnVjdCBkYW1vc19zeXNmc19hY3Rpb25fbmFtZSBkYW1vc19zeXNmc19hY3Rpb25fbmFtZXNbXSA9IHtcbiBcdFx0LmFjdGlvbiA9IERBTU9TX0NPTExBUFNFLFxuIFx0XHQubmFtZSA9IFwmIzM0O2NvbGxhcHNlXCYjMzQ7LFxuIFx0fSxcbiYjNDM7XHR7XG4mIzQzO1x0XHQuYWN0aW9uID0gREFNT1NfU1BMSVQsXG4mIzQzO1x0XHQubmFtZSA9IFwmIzM0O3NwbGl0XCYjMzQ7LFxuJiM0MztcdH0sXG4gXHR7XG4gXHRcdC5hY3Rpb24gPSBEQU1PU19MUlVfUFJJTyxcbiBcdFx0Lm5hbWUgPSBcJiMzNDtscnVfcHJpb1wmIzM0OyxcbkBAIC0yNjQyLDYgJiM0MzsyNjQ5LDM0IEBAIHN0YXRpYyBzc2l6ZV90IHRhcmdldF9uaWRfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosXG4gXHRyZXR1cm4gZXJyID8gZXJyIDogY291bnQ7XG4gfVxuIFxuJiM0MztzdGF0aWMgc3NpemVfdCB0YXJnZXRfb3JkZXJfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcbiYjNDM7XHRcdHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZSAqc2NoZW1lID0gY29udGFpbmVyX29mKGtvYmosXG4mIzQzO1x0XHRcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWUsIGtvYmopO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIFwmIzM0OyV1XFxuXCYjMzQ7LCBzY2hlbWUtXHUwMDNldGFyZ2V0X29yZGVyKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHNzaXplX3QgdGFyZ2V0X29yZGVyX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuJiM0MztcdFx0c3RydWN0IGtvYmpfYXR0cmlidXRlICphdHRyLCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWUgKnNjaGVtZSA9IGNvbnRhaW5lcl9vZihrb2JqLFxuJiM0MztcdFx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lLCBrb2JqKTtcbiYjNDM7XHR1bnNpZ25lZCBpbnQgdmFsO1xuJiM0MztcdGludCBlcnI7XG4mIzQzO1xuJiM0MztcdGVyciA9IGtzdHJ0b3VpbnQoYnVmLCAwLCBcdTAwMjZ2YWwpO1xuJiM0MztcdGlmIChlcnIpXG4mIzQzO1x0XHRyZXR1cm4gZXJyO1xuJiM0MztcbiYjNDM7XHRpZiAodmFsICE9IDAgXHUwMDI2XHUwMDI2ICh2YWwgXHUwMDNjIDIgfHwgdmFsIFx1MDAzZSBIUEFHRV9QTURfT1JERVIpKVxuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1xuJiM0MztcdHNjaGVtZS1cdTAwM2V0YXJnZXRfb3JkZXIgPSB2YWw7XG4mIzQzO1x0cmV0dXJuIGNvdW50O1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyB2b2lkIGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWxlYXNlKHN0cnVjdCBrb2JqZWN0ICprb2JqKVxuIHtcbiBcdGtmcmVlKGNvbnRhaW5lcl9vZihrb2JqLCBzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lLCBrb2JqKSk7XG5AQCAtMjY1NiwxMCAmIzQzOzI2OTEsMTQgQEAgc3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vbl9zeXNmc19zY2hlbWVfYXBwbHlfaW50ZXJ2YWxfdXNfYXR0ciA9XG4gc3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vbl9zeXNmc19zY2hlbWVfdGFyZ2V0X25pZF9hdHRyID1cbiBcdFx0X19BVFRSX1JXX01PREUodGFyZ2V0X25pZCwgMDYwMCk7XG4gXG4mIzQzO3N0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgZGFtb25fc3lzZnNfc2NoZW1lX3RhcmdldF9vcmRlcl9hdHRyID1cbiYjNDM7XHRcdF9fQVRUUl9SV19NT0RFKHRhcmdldF9vcmRlciwgMDYwMCk7XG4mIzQzO1xuIHN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICpkYW1vbl9zeXNmc19zY2hlbWVfYXR0cnNbXSA9IHtcbiBcdFx1MDAyNmRhbW9uX3N5c2ZzX3NjaGVtZV9hY3Rpb25fYXR0ci5hdHRyLFxuIFx0XHUwMDI2ZGFtb25fc3lzZnNfc2NoZW1lX2FwcGx5X2ludGVydmFsX3VzX2F0dHIuYXR0cixcbiBcdFx1MDAyNmRhbW9uX3N5c2ZzX3NjaGVtZV90YXJnZXRfbmlkX2F0dHIuYXR0cixcbiYjNDM7XHRcdTAwMjZkYW1vbl9zeXNmc19zY2hlbWVfdGFyZ2V0X29yZGVyX2F0dHIuYXR0cixcbiBcdE5VTEwsXG4gfTtcbiBBVFRSSUJVVEVfR1JPVVBTKGRhbW9uX3N5c2ZzX3NjaGVtZSk7XG5AQCAtMzAwNSw2ICYjNDM7MzA0NCwyNCBAQCBzdGF0aWMgc3RydWN0IGRhbW9zICpkYW1vbl9zeXNmc19ta19zY2hlbWUoXG4gXHRpZiAoIXNjaGVtZSlcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXG4mIzQzO1x0aWYgKHN5c2ZzX3NjaGVtZS1cdTAwM2VhY3Rpb24gPT0gREFNT1NfQ09MTEFQU0UgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgIHN5c2ZzX3NjaGVtZS1cdTAwM2V0YXJnZXRfb3JkZXIgIT0gMCBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgc3lzZnNfc2NoZW1lLVx1MDAzZXRhcmdldF9vcmRlciAhPSBIUEFHRV9QTURfT1JERVIpIHtcbiYjNDM7XHRcdHByX3dhcm4oXCYjMzQ7REFNT04gY29sbGFwc2U6IHRhcmdldF9vcmRlciAldSBub3Qgc3VwcG9ydGVkLCBvbmx5IFBNRCBvcmRlciAoJXUpIGlzIGF2YWlsYWJsZS4gVXNlIDAgb3IgJXUuXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRzeXNmc19zY2hlbWUtXHUwMDNldGFyZ2V0X29yZGVyLFxuJiM0MztcdFx0XHRIUEFHRV9QTURfT1JERVIsIEhQQUdFX1BNRF9PUkRFUik7XG4mIzQzO1x0XHRzeXNmc19zY2hlbWUtXHUwMDNldGFyZ2V0X29yZGVyID0gMDtcbiYjNDM7XHR9XG4mIzQzO1x0aWYgKHN5c2ZzX3NjaGVtZS1cdTAwM2VhY3Rpb24gPT0gREFNT1NfU1BMSVQgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgIChzeXNmc19zY2hlbWUtXHUwMDNldGFyZ2V0X29yZGVyID09IDAgfHxcbiYjNDM7XHQgICAgIHN5c2ZzX3NjaGVtZS1cdTAwM2V0YXJnZXRfb3JkZXIgXHUwMDNlPSBIUEFHRV9QTURfT1JERVIpKSB7XG4mIzQzO1x0XHRwcl93YXJuKFwmIzM0O0RBTU9OIHNwbGl0OiB0YXJnZXRfb3JkZXIgJXUgaW52YWxpZCwgbmVlZCAyLi4ldS4gRGVmYXVsdGluZyB0byAyLlxcblwmIzM0OyxcbiYjNDM7XHRcdFx0c3lzZnNfc2NoZW1lLVx1MDAzZXRhcmdldF9vcmRlcixcbiYjNDM7XHRcdFx0SFBBR0VfUE1EX09SREVSIC0gMSk7XG4mIzQzO1x0XHRzeXNmc19zY2hlbWUtXHUwMDNldGFyZ2V0X29yZGVyID0gMjtcbiYjNDM7XHR9XG4mIzQzO1x0c2NoZW1lLVx1MDAzZXRhcmdldF9vcmRlciA9IHN5c2ZzX3NjaGVtZS1cdTAwM2V0YXJnZXRfb3JkZXI7XG4mIzQzO1xuIFx0ZXJyID0gZGFtb3Nfc3lzZnNfYWRkX3F1b3RhX3Njb3JlKHN5c2ZzX3F1b3Rhcy1cdTAwM2Vnb2FscywgXHUwMDI2c2NoZW1lLVx1MDAzZXF1b3RhKTtcbiBcdGlmIChlcnIpIHtcbiBcdFx0ZGFtb25fZGVzdHJveV9zY2hlbWUoc2NoZW1lKTtcbmRpZmYgLS1naXQgYS9tbS9kYW1vbi92YWRkci5jIGIvbW0vZGFtb24vdmFkZHIuY1xuaW5kZXggZDI3MTQ3NjAzNTY0MWIuLjNmMjA2MWIyOWVkODQyIDEwMDY0NFxuLS0tIGEvbW0vZGFtb24vdmFkZHIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vZGFtb24vdmFkZHIuY1xuQEAgLTE0LDYgJiM0MzsxNCw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcGFnZV9pZGxlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wYWdld2Fsay5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc2NoZWQvbW0uaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9raHVnZXBhZ2VkLmhcdTAwM2VcbiBcbiAjaW5jbHVkZSBcJiMzNDsuLi9pbnRlcm5hbC5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7b3BzLWNvbW1vbi5oXCYjMzQ7XG5AQCAtODk5LDYgJiM0Mzs5MDAsMTA1IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9zX3ZhX3N0YXQoc3RydWN0IGRhbW9uX3RhcmdldCAqdGFyZ2V0LFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuJiM0MztzdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vc192YV9jb2xsYXBzZShzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0YXJnZXQsXG4mIzQzO1x0XHRzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLCBzdHJ1Y3QgZGFtb3MgKnMsXG4mIzQzO1x0XHR1bnNpZ25lZCBsb25nICpzel9maWx0ZXJfcGFzc2VkKVxuJiM0Mzt7XG4mIzQzO1x0dW5zaWduZWQgbG9uZyBhZGRyLCBlbmQsIGNodW5rX3N6O1xuJiM0MztcdHVuc2lnbmVkIGludCB0YXJnZXRfb3JkZXIgPSBzLVx1MDAzZXRhcmdldF9vcmRlcjtcbiYjNDM7XHR1bnNpZ25lZCBsb25nIGFwcGxpZWQgPSAwO1xuJiM0MztcdHN0cnVjdCBtbV9zdHJ1Y3QgKm1tO1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdGlmICh0YXJnZXRfb3JkZXIgXHUwMDNjIDIgfHwgdGFyZ2V0X29yZGVyIFx1MDAzZSBIUEFHRV9QTURfT1JERVIpXG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XG4mIzQzO1x0Y2h1bmtfc3ogPSBQQUdFX1NJWkUgXHUwMDNjXHUwMDNjIHRhcmdldF9vcmRlcjtcbiYjNDM7XHRhZGRyID0gQUxJR05fRE9XTihyLVx1MDAzZWFyLnN0YXJ0LCBjaHVua19zeik7XG4mIzQzO1x0ZW5kID0gQUxJR04oci1cdTAwM2Vhci5lbmQsIGNodW5rX3N6KTtcbiYjNDM7XG4mIzQzO1x0bW0gPSBkYW1vbl9nZXRfbW0odGFyZ2V0KTtcbiYjNDM7XHRpZiAoIW1tKVxuJiM0MztcdFx0cmV0dXJuIDA7XG4mIzQzO1xuJiM0MztcdHdoaWxlIChhZGRyIFx1MDAzYyBlbmQpIHtcbiYjNDM7XHRcdHJldCA9IGRhbW9uX2NvbGxhcHNlX2ZvbGlvX3JhbmdlKG1tLCBhZGRyLCB0YXJnZXRfb3JkZXIpO1xuJiM0MztcdFx0aWYgKCFyZXQpXG4mIzQzO1x0XHRcdGFwcGxpZWQgJiM0Mzs9IGNodW5rX3N6O1xuJiM0MztcdFx0KnN6X2ZpbHRlcl9wYXNzZWQgJiM0Mzs9IGNodW5rX3N6O1xuJiM0MztcdFx0YWRkciAmIzQzOz0gY2h1bmtfc3o7XG4mIzQzO1x0XHRjb25kX3Jlc2NoZWQoKTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdG1tcHV0KG1tKTtcbiYjNDM7XHRyZXR1cm4gYXBwbGllZDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb3NfdmFfc3BsaXQoc3RydWN0IGRhbW9uX3RhcmdldCAqdGFyZ2V0LFxuJiM0MztcdFx0c3RydWN0IGRhbW9uX3JlZ2lvbiAqciwgc3RydWN0IGRhbW9zICpzLFxuJiM0MztcdFx0dW5zaWduZWQgbG9uZyAqc3pfZmlsdGVyX3Bhc3NlZClcbiYjNDM7e1xuJiM0MztcdHVuc2lnbmVkIGxvbmcgYWRkciwgZW5kLCBjaHVua19zejtcbiYjNDM7XHR1bnNpZ25lZCBpbnQgdGFyZ2V0X29yZGVyID0gcy1cdTAwM2V0YXJnZXRfb3JkZXI7XG4mIzQzO1x0dW5zaWduZWQgbG9uZyBhcHBsaWVkID0gMDtcbiYjNDM7XHRzdHJ1Y3QgbW1fc3RydWN0ICptbTtcbiYjNDM7XHRzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYTtcbiYjNDM7XHRzdHJ1Y3QgZm9saW8gKmZvbGlvO1xuJiM0MztcdHN0cnVjdCBmb2xpb193YWxrIGZ3O1xuJiM0MztcbiYjNDM7XHRtbSA9IGRhbW9uX2dldF9tbSh0YXJnZXQpO1xuJiM0MztcdGlmICghbW0pXG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XG4mIzQzO1x0Y2h1bmtfc3ogPSBQQUdFX1NJWkUgXHUwMDNjXHUwMDNjIEhQQUdFX1BNRF9PUkRFUjtcbiYjNDM7XHRhZGRyID0gQUxJR05fRE9XTihyLVx1MDAzZWFyLnN0YXJ0LCBjaHVua19zeik7XG4mIzQzO1x0ZW5kID0gQUxJR04oci1cdTAwM2Vhci5lbmQsIGNodW5rX3N6KTtcbiYjNDM7XG4mIzQzO1x0d2hpbGUgKGFkZHIgXHUwMDNjIGVuZCkge1xuJiM0MztcdFx0bW1hcF9yZWFkX2xvY2sobW0pO1xuJiM0MztcdFx0dm1hID0gZmluZF92bWEobW0sIGFkZHIpO1xuJiM0MztcdFx0LypcbiYjNDM7XHRcdCAqIHNwbGl0X2ZvbGlvX3RvX29yZGVyKCkgc3VwcG9ydHMgYm90aCBhbm9uIGFuZCBzaG1lbVxuJiM0MztcdFx0ICogZm9saW9zLCBzbyB3ZSBhY2NlcHQgYW55IFZNQSB0aGF0IGhhcyBhIGZvbGlvIGF0IEBhZGRyLlxuJiM0MztcdFx0ICogVGhpcyBjb3ZlcnMgaW1wb3J0YW50IHVzZSBjYXNlcyBsaWtlIHRtcGZzIFRIUC1iYWNrZWRcbiYjNDM7XHRcdCAqIEtWTSBndWVzdCBtZW1vcnkgd2hlcmUgY29sZCBhbmQgaG90IHBhZ2VzIGFyZSBidW5kbGVkXG4mIzQzO1x0XHQgKiB0b2dldGhlciBpbiBhIHNpbmdsZSBQTUQgVEhQLlxuJiM0MztcdFx0ICovXG4mIzQzO1x0XHRpZiAoIXZtYSB8fCBhZGRyIFx1MDAzYyB2bWEtXHUwMDNldm1fc3RhcnQpXG4mIzQzO1x0XHRcdGdvdG8gdW5sb2NrO1xuJiM0MztcbiYjNDM7XHRcdGZvbGlvID0gZm9saW9fd2Fsa19zdGFydChcdTAwMjZmdywgdm1hLCBhZGRyLCAwKTtcbiYjNDM7XHRcdGlmICghZm9saW8pXG4mIzQzO1x0XHRcdGdvdG8gdW5sb2NrO1xuJiM0MztcbiYjNDM7XHRcdGlmIChmb2xpb19vcmRlcihmb2xpbykgXHUwMDNlIHRhcmdldF9vcmRlcikge1xuJiM0MztcdFx0XHRpZiAoIWZvbGlvX3RyeWxvY2soZm9saW8pKSB7XG4mIzQzO1x0XHRcdFx0Zm9saW9fd2Fsa19lbmQoXHUwMDI2ZncsIHZtYSk7XG4mIzQzO1x0XHRcdFx0Z290byB1bmxvY2s7XG4mIzQzO1x0XHRcdH1cbiYjNDM7XHRcdFx0Zm9saW9fZ2V0KGZvbGlvKTtcbiYjNDM7XHRcdFx0Zm9saW9fd2Fsa19lbmQoXHUwMDI2ZncsIHZtYSk7XG4mIzQzO1xuJiM0MztcdFx0XHRpZiAoIXNwbGl0X2ZvbGlvX3RvX29yZGVyKGZvbGlvLCB0YXJnZXRfb3JkZXIpKVxuJiM0MztcdFx0XHRcdGFwcGxpZWQgJiM0Mzs9IGNodW5rX3N6O1xuJiM0MztcbiYjNDM7XHRcdFx0Zm9saW9fdW5sb2NrKGZvbGlvKTtcbiYjNDM7XHRcdFx0Zm9saW9fcHV0KGZvbGlvKTtcbiYjNDM7XHRcdH0gZWxzZSB7XG4mIzQzO1x0XHRcdGZvbGlvX3dhbGtfZW5kKFx1MDAyNmZ3LCB2bWEpO1xuJiM0MztcdFx0fVxuJiM0MztcbiYjNDM7dW5sb2NrOlxuJiM0MztcdFx0KnN6X2ZpbHRlcl9wYXNzZWQgJiM0Mzs9IGNodW5rX3N6O1xuJiM0MztcdFx0YWRkciAmIzQzOz0gY2h1bmtfc3o7XG4mIzQzO1x0XHRtbWFwX3JlYWRfdW5sb2NrKG1tKTtcbiYjNDM7XHRcdGNvbmRfcmVzY2hlZCgpO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0bW1wdXQobW0pO1xuJiM0MztcdHJldHVybiBhcHBsaWVkO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9uX3ZhX2FwcGx5X3NjaGVtZShzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsXG4gXHRcdHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsIHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXG4gXHRcdHN0cnVjdCBkYW1vcyAqc2NoZW1lLCB1bnNpZ25lZCBsb25nICpzel9maWx0ZXJfcGFzc2VkKVxuQEAgLTkyMiw2ICYjNDM7MTAyMiw5IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9uX3ZhX2FwcGx5X3NjaGVtZShzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsXG4gXHRcdG1hZHZfYWN0aW9uID0gTUFEVl9OT0hVR0VQQUdFO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgREFNT1NfQ09MTEFQU0U6XG4mIzQzO1x0XHRpZiAoc2NoZW1lLVx1MDAzZXRhcmdldF9vcmRlcilcbiYjNDM7XHRcdFx0cmV0dXJuIGRhbW9zX3ZhX2NvbGxhcHNlKHQsIHIsIHNjaGVtZSxcbiYjNDM7XHRcdFx0XHRcdFx0IHN6X2ZpbHRlcl9wYXNzZWQpO1xuIFx0XHRtYWR2X2FjdGlvbiA9IE1BRFZfQ09MTEFQU0U7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBEQU1PU19NSUdSQVRFX0hPVDpcbkBAIC05MjksNiAmIzQzOzEwMzIsOSBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vbl92YV9hcHBseV9zY2hlbWUoc3RydWN0IGRhbW9uX2N0eCAqY3R4LFxuIFx0XHRyZXR1cm4gZGFtb3NfdmFfbWlncmF0ZSh0LCByLCBzY2hlbWUsIHN6X2ZpbHRlcl9wYXNzZWQpO1xuIFx0Y2FzZSBEQU1PU19TVEFUOlxuIFx0XHRyZXR1cm4gZGFtb3NfdmFfc3RhdCh0LCByLCBzY2hlbWUsIHN6X2ZpbHRlcl9wYXNzZWQpO1xuJiM0MztcdGNhc2UgREFNT1NfU1BMSVQ6XG4mIzQzO1x0XHRyZXR1cm4gZGFtb3NfdmFfc3BsaXQodCwgciwgc2NoZW1lLFxuJiM0MztcdFx0XHRcdFx0ICBzel9maWx0ZXJfcGFzc2VkKTtcbiBcdGRlZmF1bHQ6XG4gXHRcdC8qXG4gXHRcdCAqIERBTU9TIGFjdGlvbnMgdGhhdCBhcmUgbm90IHlldCBzdXBwb3J0ZWQgYnkgJiMzOTt2YWRkciYjMzk7LlxuZGlmZiAtLWdpdCBhL21tL2todWdlcGFnZWQuYyBiL21tL2todWdlcGFnZWQuY1xuaW5kZXggNjE3YmNhNzZkYjQ5YjYuLjAzODc4NDFiYTJlN2Q4IDEwMDY0NFxuLS0tIGEvbW0va2h1Z2VwYWdlZC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9raHVnZXBhZ2VkLmNcbkBAIC0zMjcyLDMgJiM0MzszMjcyLDQyIEBAIGludCBtYWR2aXNlX2NvbGxhcHNlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIHN0YXJ0LFxuIFx0cmV0dXJuIHRocHMgPT0gKChoZW5kIC0gaHN0YXJ0KSBcdTAwM2VcdTAwM2UgSFBBR0VfUE1EX1NISUZUKSA/IDBcbiBcdFx0XHQ6IG1hZHZpc2VfY29sbGFwc2VfZXJybm8obGFzdF9mYWlsKTtcbiB9XG4mIzQzO1xuJiM0MzsvKipcbiYjNDM7ICogZGFtb25fY29sbGFwc2VfZm9saW9fcmFuZ2UoKSAtIENvbGxhcHNlIGJhc2UgcGFnZXMgaW4gcmFuZ2UgaW50byBhIFRIUFxuJiM0MzsgKiBAbW06ICAgICAgICAgbW1fc3RydWN0IG9mIHRoZSB0YXJnZXQgcHJvY2Vzc1xuJiM0MzsgKiBAc3RhcnRfYWRkcjogc3RhcnQgYWRkcmVzcyAobXVzdCBiZSBvcmRlci1hbGlnbmVkKVxuJiM0MzsgKiBAdGFyZ2V0X29yZGVyOiBwYWdlIG9yZGVyIG9mIHRoZSBjb2xsYXBzZSByZXN1bHQgKGN1cnJlbnRseSBvbmx5XG4mIzQzOyAqICAgICAgICAgICAgICAgIEhQQUdFX1BNRF9PUkRFUiBpcyBzdXBwb3J0ZWQpXG4mIzQzOyAqXG4mIzQzOyAqIFRoaW4gd3JhcHBlciBhcm91bmQgY29sbGFwc2VfaHVnZV9wYWdlKCkgZm9yIGV4dGVybmFsIGNhbGxlcnMgc3VjaCBhc1xuJiM0MzsgKiBEQU1PTi4gIFRoZSBjYWxsZXIgbXVzdCBob2xkIGEgcmVmZXJlbmNlIHRvIEBtbS4gIERvIG5vdCBob2xkIG1tYXBcbiYjNDM7ICogbG9jazogY29sbGFwc2VfaHVnZV9wYWdlKCkgYWNxdWlyZXMgbW1hcF9yZWFkX2xvY2sgZm9yIHZhbGlkYXRpb24sXG4mIzQzOyAqIHJlbGVhc2VzIGl0LCB0aGVuIGFjcXVpcmVzIG1tYXBfd3JpdGVfbG9jayBmb3IgdGhlIGNvbGxhcHNlLiAgSG9sZGluZ1xuJiM0MzsgKiBhbiBvdXRlciBtbWFwX3JlYWRfbG9jayB3b3VsZCBzZWxmLWRlYWRsb2NrLlxuJiM0MzsgKlxuJiM0MzsgKiBSZXR1cm46IDAgb24gc3VjY2VzcywgLUVJTlZBTCBvbiBiYWQgYXJndW1lbnRzLCBuZWdhdGl2ZSBlcnJvciBmcm9tXG4mIzQzOyAqICAgICAgICAgbWFkdmlzZV9jb2xsYXBzZV9lcnJubygpIG90aGVyd2lzZS5cbiYjNDM7ICovXG4mIzQzO2ludCBkYW1vbl9jb2xsYXBzZV9mb2xpb19yYW5nZShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBzdGFydF9hZGRyLFxuJiM0MztcdFx0XHQgICAgICAgdW5zaWduZWQgaW50IHRhcmdldF9vcmRlcilcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBjb2xsYXBzZV9jb250cm9sIGNjID0ge1xuJiM0MztcdFx0LmlzX2todWdlcGFnZWQgPSBmYWxzZSxcbiYjNDM7XHR9O1xuJiM0MztcdGVudW0gc2Nhbl9yZXN1bHQgcmVzdWx0O1xuJiM0MztcbiYjNDM7XHRpZiAodGFyZ2V0X29yZGVyICE9IEhQQUdFX1BNRF9PUkRFUikge1xuJiM0MztcdFx0cHJfd2Fybl9vbmNlKFwmIzM0OyVzOiBvbmx5IFBNRCBvcmRlciAoJXUpIGlzIHN1cHBvcnRlZCwgZ290ICV1XFxuXCYjMzQ7LFxuJiM0MztcdFx0XHQgICAgIF9fZnVuY19fLCBIUEFHRV9QTURfT1JERVIsIHRhcmdldF9vcmRlcik7XG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHR9XG4mIzQzO1x0aWYgKHN0YXJ0X2FkZHIgXHUwMDI2ICgoUEFHRV9TSVpFIFx1MDAzY1x1MDAzYyB0YXJnZXRfb3JkZXIpIC0gMSkpXG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XG4mIzQzO1x0cmVzdWx0ID0gY29sbGFwc2VfaHVnZV9wYWdlKG1tLCBzdGFydF9hZGRyLCAxLCAwLCBcdTAwMjZjYywgdGFyZ2V0X29yZGVyKTtcbiYjNDM7XHRpZiAocmVzdWx0ID09IFNDQU5fU1VDQ0VFRClcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcdHJldHVybiBtYWR2aXNlX2NvbGxhcHNlX2Vycm5vKHJlc3VsdCk7XG4mIzQzO31cbiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwoZGFtb25fY29sbGFwc2VfZm9saW9fcmFuZ2UpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDE3OjU3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RBTU9OX1NZU0ZTJiMzNDssCiAgICAmIzM0O0RBTU9OX1ZBRERSJiMzNDssCiAgICAmIzM0O1RSQU5TUEFSRU5UX0hVR0VQQUdFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZGFtb3NfdmFfY29sbGFwc2UmIzM0OywKICAgICYjMzQ7ZGFtb3NfdmFfc3BsaXQmIzM0OywKICAgICYjMzQ7ZGFtb25fY29sbGFwc2VfZm9saW9fcmFuZ2UmIzM0OywKICAgICYjMzQ7dGFyZ2V0X29yZGVyX3N0b3JlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBEQU1PTiBzdWJzeXN0ZW0gYnkgYWRkaW5nIGEgbmV3IERBTU9TX1NQTElUIGFjdGlvbiBhbmQgZXh0ZW5kaW5nIERBTU9TX0NPTExBUFNFIHdpdGggYSB0YXJnZXRfb3JkZXIgcGFyYW1ldGVyLiBJdCBtb2RpZmllcyBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIHRvIHNwbGl0IGFuZCBjb2xsYXBzZSBmb2xpb3MgYmFzZWQgb24gREFNT04gc2NoZW1lcy4gVGhlc2UgZmVhdHVyZXMgYXJlIGV4cG9zZWQgdG8gdXNlcnNwYWNlIHZpYSB0aGUgREFNT04gc3lzZnMgaW50ZXJmYWNlLCBtYWtpbmcgdGhlbSByZWFjaGFibGUgYW5kIHRlc3RhYmxlIGJ5IGEgZnV6emVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBiMTcyYjBkZWRiNTQzMmE1ZTIwMDk4NWRkNDFhZTMwYWRhODg1M2Q2CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdWwgMSAxNzo1Njo1OSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZGFtb24uaCBiL2luY2x1ZGUvbGludXgvZGFtb24uaAppbmRleCA2ZjdlZGIzNTkwZWY5Ny4uMzBjZjRhZmIyMTJjZmIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvZGFtb24uaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2RhbW9uLmgKQEAgLTEyMSw2ICYjNDM7MTIxLDcgQEAgc3RydWN0IGRhbW9uX3RhcmdldCB7CiAgKiBAREFNT1NfSFVHRVBBR0U6CUNhbGwgYGBtYWR2aXNlKClgYCBmb3IgdGhlIHJlZ2lvbiB3aXRoIE1BRFZfSFVHRVBBR0UuCiAgKiBAREFNT1NfTk9IVUdFUEFHRToJQ2FsbCBgYG1hZHZpc2UoKWBgIGZvciB0aGUgcmVnaW9uIHdpdGggTUFEVl9OT0hVR0VQQUdFLgogICogQERBTU9TX0NPTExBUFNFOglDYWxsIGBgbWFkdmlzZSgpYGAgZm9yIHRoZSByZWdpb24gd2l0aCBNQURWX0NPTExBUFNFLgomIzQzOyAqIEBEQU1PU19TUExJVDoJU3BsaXQgbGFyZ2UgZm9saW9zIHRvIHRoZSB0YXJnZXQgbVRIUCBvcmRlci4KICAqIEBEQU1PU19MUlVfUFJJTzoJUHJpb3JpdGl6ZSB0aGUgcmVnaW9uIG9uIGl0cyBMUlUgbGlzdHMuCiAgKiBAREFNT1NfTFJVX0RFUFJJTzoJRGVwcmlvcml0aXplIHRoZSByZWdpb24gb24gaXRzIExSVSBsaXN0cy4KICAqIEBEQU1PU19NSUdSQVRFX0hPVDogIE1pZ3JhdGUgdGhlIHJlZ2lvbnMgcHJpb3JpdGl6aW5nIHdhcm1lciByZWdpb25zLgpAQCAtMTQxLDYgJiM0MzsxNDIsNyBAQCBlbnVtIGRhbW9zX2FjdGlvbiB7CiAJREFNT1NfSFVHRVBBR0UsCiAJREFNT1NfTk9IVUdFUEFHRSwKIAlEQU1PU19DT0xMQVBTRSwKJiM0MzsJREFNT1NfU1BMSVQsCiAJREFNT1NfTFJVX1BSSU8sCiAJREFNT1NfTFJVX0RFUFJJTywKIAlEQU1PU19NSUdSQVRFX0hPVCwKQEAgLTU3Miw2ICYjNDM7NTc0LDE0IEBAIHN0cnVjdCBkYW1vc19taWdyYXRlX2Rlc3RzIHsKIHN0cnVjdCBkYW1vcyB7CiAJc3RydWN0IGRhbW9zX2FjY2Vzc19wYXR0ZXJuIHBhdHRlcm47CiAJZW51bSBkYW1vc19hY3Rpb24gYWN0aW9uOwomIzQzOwkvKgomIzQzOwkgKiBAdGFyZ2V0X29yZGVyOiB0YXJnZXQgbVRIUCBvcmRlciBmb3IgREFNT1NfQ09MTEFQU0UgYW5kCiYjNDM7CSAqIERBTU9TX1NQTElULiAgRm9yIENPTExBUFNFLCAwIG1lYW5zIFBNRCBvcmRlciBkZWZhdWx0LAomIzQzOwkgKiB2YWxpZCB2YWx1ZXM6IDAsIDIuLkhQQUdFX1BNRF9PUkRFUi4gIEZvciBTUExJVCwKJiM0MzsJICogdmFsaWQgdmFsdWVzOiAyLi5IUEFHRV9QTURfT1JERVItMTsgMCBhbmQgSFBBR0VfUE1EX09SREVSCiYjNDM7CSAqIGFyZSByZWplY3RlZCBhdCBzY2hlbWUgY3JlYXRpb24gdGltZSAoZGVmYXVsdGluZyB0byAyKS4KJiM0MzsJICovCiYjNDM7CXVuc2lnbmVkIGludCB0YXJnZXRfb3JkZXI7CiAJdW5zaWduZWQgbG9uZyBhcHBseV9pbnRlcnZhbF91czsKIC8qIHByaXZhdGU6IGludGVybmFsIHVzZSBvbmx5ICovCiAJLyoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgva2h1Z2VwYWdlZC5oIGIvaW5jbHVkZS9saW51eC9raHVnZXBhZ2VkLmgKaW5kZXggZDdhOTA1M2ZmNGZlZDEuLjZmYjhhNjg1Nzc5MDNhIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2todWdlcGFnZWQuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2todWdlcGFnZWQuaApAQCAtMjAsNiAmIzQzOzIwLDkgQEAgZXh0ZXJuIGJvb2wgY3VycmVudF9pc19raHVnZXBhZ2VkKHZvaWQpOwogdm9pZCBjb2xsYXBzZV9wdGVfbWFwcGVkX3RocChzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBhZGRyLAogCQlib29sIGluc3RhbGxfcG1kKTsKIAomIzQzO2ludCBkYW1vbl9jb2xsYXBzZV9mb2xpb19yYW5nZShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBzdGFydF9hZGRyLAomIzQzOwkJCSAgICAgICB1bnNpZ25lZCBpbnQgdGFyZ2V0X29yZGVyKTsKJiM0MzsKIHN0YXRpYyBpbmxpbmUgdm9pZCBraHVnZXBhZ2VkX2Zvcmsoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHN0cnVjdCBtbV9zdHJ1Y3QgKm9sZG1tKQogewogCWlmIChtbV9mbGFnc190ZXN0KE1NRl9WTV9IVUdFUEFHRSwgb2xkbW0pKQpkaWZmIC0tZ2l0IGEvbW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jIGIvbW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jCmluZGV4IDMyOWNmZDBiYmU5ZjMyLi41NDcyNTJmYzhhMjBhZCAxMDA2NDQKLS0tIGEvbW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYwpAQCAtNiw3ICYjNDM7Niw5IEBACiAgKi8KIAogI2luY2x1ZGUgJmx0O2xpbnV4L3NsYWIuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvbW0uaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9udW1hLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2h1Z2VfbW0uaCZndDsKIAogI2luY2x1ZGUgJiMzNDtzeXNmcy1jb21tb24uaCYjMzQ7CiAKQEAgLTIyNTcsNiAmIzQzOzIyNTksNyBAQCBzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lIHsKIAlzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMgKnN0YXRzOwogCXN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9ucyAqdHJpZWRfcmVnaW9uczsKIAlpbnQgdGFyZ2V0X25pZDsKJiM0MzsJdW5zaWduZWQgaW50IHRhcmdldF9vcmRlcjsKIAlzdHJ1Y3QgZGFtb3Nfc3lzZnNfZGVzdHMgKmRlc3RzOwogfTsKIApAQCAtMjI5MCw2ICYjNDM7MjI5MywxMCBAQCBzdGF0aWMgc3RydWN0IGRhbW9zX3N5c2ZzX2FjdGlvbl9uYW1lIGRhbW9zX3N5c2ZzX2FjdGlvbl9uYW1lc1tdID0gewogCQkuYWN0aW9uID0gREFNT1NfQ09MTEFQU0UsCiAJCS5uYW1lID0gJiMzNDtjb2xsYXBzZSYjMzQ7LAogCX0sCiYjNDM7CXsKJiM0MzsJCS5hY3Rpb24gPSBEQU1PU19TUExJVCwKJiM0MzsJCS5uYW1lID0gJiMzNDtzcGxpdCYjMzQ7LAomIzQzOwl9LAogCXsKIAkJLmFjdGlvbiA9IERBTU9TX0xSVV9QUklPLAogCQkubmFtZSA9ICYjMzQ7bHJ1X3ByaW8mIzM0OywKQEAgLTI2NDIsNiAmIzQzOzI2NDksMzQgQEAgc3RhdGljIHNzaXplX3QgdGFyZ2V0X25pZF9zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaiwKIAlyZXR1cm4gZXJyID8gZXJyIDogY291bnQ7CiB9CiAKJiM0MztzdGF0aWMgc3NpemVfdCB0YXJnZXRfb3JkZXJfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaiwKJiM0MzsJCXN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQomIzQzO3sKJiM0MzsJc3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZSAqc2NoZW1lID0gY29udGFpbmVyX29mKGtvYmosCiYjNDM7CQkJc3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZSwga29iaik7CiYjNDM7CiYjNDM7CXJldHVybiBzeXNmc19lbWl0KGJ1ZiwgJiMzNDsldVxuJiMzNDssIHNjaGVtZS0mZ3Q7dGFyZ2V0X29yZGVyKTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHNzaXplX3QgdGFyZ2V0X29yZGVyX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLAomIzQzOwkJc3RydWN0IGtvYmpfYXR0cmlidXRlICphdHRyLCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWUgKnNjaGVtZSA9IGNvbnRhaW5lcl9vZihrb2JqLAomIzQzOwkJCXN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWUsIGtvYmopOwomIzQzOwl1bnNpZ25lZCBpbnQgdmFsOwomIzQzOwlpbnQgZXJyOwomIzQzOwomIzQzOwllcnIgPSBrc3RydG91aW50KGJ1ZiwgMCwgJmFtcDt2YWwpOwomIzQzOwlpZiAoZXJyKQomIzQzOwkJcmV0dXJuIGVycjsKJiM0MzsKJiM0MzsJaWYgKHZhbCAhPSAwICZhbXA7JmFtcDsgKHZhbCAmbHQ7IDIgfHwgdmFsICZndDsgSFBBR0VfUE1EX09SREVSKSkKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwomIzQzOwlzY2hlbWUtJmd0O3RhcmdldF9vcmRlciA9IHZhbDsKJiM0MzsJcmV0dXJuIGNvdW50OwomIzQzO30KJiM0MzsKIHN0YXRpYyB2b2lkIGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWxlYXNlKHN0cnVjdCBrb2JqZWN0ICprb2JqKQogewogCWtmcmVlKGNvbnRhaW5lcl9vZihrb2JqLCBzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lLCBrb2JqKSk7CkBAIC0yNjU2LDEwICYjNDM7MjY5MSwxNCBAQCBzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3NjaGVtZV9hcHBseV9pbnRlcnZhbF91c19hdHRyID0KIHN0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgZGFtb25fc3lzZnNfc2NoZW1lX3RhcmdldF9uaWRfYXR0ciA9CiAJCV9fQVRUUl9SV19NT0RFKHRhcmdldF9uaWQsIDA2MDApOwogCiYjNDM7c3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vbl9zeXNmc19zY2hlbWVfdGFyZ2V0X29yZGVyX2F0dHIgPQomIzQzOwkJX19BVFRSX1JXX01PREUodGFyZ2V0X29yZGVyLCAwNjAwKTsKJiM0MzsKIHN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICpkYW1vbl9zeXNmc19zY2hlbWVfYXR0cnNbXSA9IHsKIAkmYW1wO2RhbW9uX3N5c2ZzX3NjaGVtZV9hY3Rpb25fYXR0ci5hdHRyLAogCSZhbXA7ZGFtb25fc3lzZnNfc2NoZW1lX2FwcGx5X2ludGVydmFsX3VzX2F0dHIuYXR0ciwKIAkmYW1wO2RhbW9uX3N5c2ZzX3NjaGVtZV90YXJnZXRfbmlkX2F0dHIuYXR0ciwKJiM0MzsJJmFtcDtkYW1vbl9zeXNmc19zY2hlbWVfdGFyZ2V0X29yZGVyX2F0dHIuYXR0ciwKIAlOVUxMLAogfTsKIEFUVFJJQlVURV9HUk9VUFMoZGFtb25fc3lzZnNfc2NoZW1lKTsKQEAgLTMwMDUsNiAmIzQzOzMwNDQsMjQgQEAgc3RhdGljIHN0cnVjdCBkYW1vcyAqZGFtb25fc3lzZnNfbWtfc2NoZW1lKAogCWlmICghc2NoZW1lKQogCQlyZXR1cm4gTlVMTDsKIAomIzQzOwlpZiAoc3lzZnNfc2NoZW1lLSZndDthY3Rpb24gPT0gREFNT1NfQ09MTEFQU0UgJmFtcDsmYW1wOwomIzQzOwkgICAgc3lzZnNfc2NoZW1lLSZndDt0YXJnZXRfb3JkZXIgIT0gMCAmYW1wOyZhbXA7CiYjNDM7CSAgICBzeXNmc19zY2hlbWUtJmd0O3RhcmdldF9vcmRlciAhPSBIUEFHRV9QTURfT1JERVIpIHsKJiM0MzsJCXByX3dhcm4oJiMzNDtEQU1PTiBjb2xsYXBzZTogdGFyZ2V0X29yZGVyICV1IG5vdCBzdXBwb3J0ZWQsIG9ubHkgUE1EIG9yZGVyICgldSkgaXMgYXZhaWxhYmxlLiBVc2UgMCBvciAldS5cbiYjMzQ7LAomIzQzOwkJCXN5c2ZzX3NjaGVtZS0mZ3Q7dGFyZ2V0X29yZGVyLAomIzQzOwkJCUhQQUdFX1BNRF9PUkRFUiwgSFBBR0VfUE1EX09SREVSKTsKJiM0MzsJCXN5c2ZzX3NjaGVtZS0mZ3Q7dGFyZ2V0X29yZGVyID0gMDsKJiM0MzsJfQomIzQzOwlpZiAoc3lzZnNfc2NoZW1lLSZndDthY3Rpb24gPT0gREFNT1NfU1BMSVQgJmFtcDsmYW1wOwomIzQzOwkgICAgKHN5c2ZzX3NjaGVtZS0mZ3Q7dGFyZ2V0X29yZGVyID09IDAgfHwKJiM0MzsJICAgICBzeXNmc19zY2hlbWUtJmd0O3RhcmdldF9vcmRlciAmZ3Q7PSBIUEFHRV9QTURfT1JERVIpKSB7CiYjNDM7CQlwcl93YXJuKCYjMzQ7REFNT04gc3BsaXQ6IHRhcmdldF9vcmRlciAldSBpbnZhbGlkLCBuZWVkIDIuLiV1LiBEZWZhdWx0aW5nIHRvIDIuXG4mIzM0OywKJiM0MzsJCQlzeXNmc19zY2hlbWUtJmd0O3RhcmdldF9vcmRlciwKJiM0MzsJCQlIUEFHRV9QTURfT1JERVIgLSAxKTsKJiM0MzsJCXN5c2ZzX3NjaGVtZS0mZ3Q7dGFyZ2V0X29yZGVyID0gMjsKJiM0MzsJfQomIzQzOwlzY2hlbWUtJmd0O3RhcmdldF9vcmRlciA9IHN5c2ZzX3NjaGVtZS0mZ3Q7dGFyZ2V0X29yZGVyOwomIzQzOwogCWVyciA9IGRhbW9zX3N5c2ZzX2FkZF9xdW90YV9zY29yZShzeXNmc19xdW90YXMtJmd0O2dvYWxzLCAmYW1wO3NjaGVtZS0mZ3Q7cXVvdGEpOwogCWlmIChlcnIpIHsKIAkJZGFtb25fZGVzdHJveV9zY2hlbWUoc2NoZW1lKTsKZGlmZiAtLWdpdCBhL21tL2RhbW9uL3ZhZGRyLmMgYi9tbS9kYW1vbi92YWRkci5jCmluZGV4IGQyNzE0NzYwMzU2NDFiLi4zZjIwNjFiMjllZDg0MiAxMDA2NDQKLS0tIGEvbW0vZGFtb24vdmFkZHIuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9kYW1vbi92YWRkci5jCkBAIC0xNCw2ICYjNDM7MTQsNyBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L3BhZ2VfaWRsZS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3BhZ2V3YWxrLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvc2NoZWQvbW0uaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgva2h1Z2VwYWdlZC5oJmd0OwogCiAjaW5jbHVkZSAmIzM0Oy4uL2ludGVybmFsLmgmIzM0OwogI2luY2x1ZGUgJiMzNDtvcHMtY29tbW9uLmgmIzM0OwpAQCAtODk5LDYgJiM0Mzs5MDAsMTA1IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9zX3ZhX3N0YXQoc3RydWN0IGRhbW9uX3RhcmdldCAqdGFyZ2V0LAogCXJldHVybiAwOwogfQogCiYjNDM7c3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb3NfdmFfY29sbGFwc2Uoc3RydWN0IGRhbW9uX3RhcmdldCAqdGFyZ2V0LAomIzQzOwkJc3RydWN0IGRhbW9uX3JlZ2lvbiAqciwgc3RydWN0IGRhbW9zICpzLAomIzQzOwkJdW5zaWduZWQgbG9uZyAqc3pfZmlsdGVyX3Bhc3NlZCkKJiM0Mzt7CiYjNDM7CXVuc2lnbmVkIGxvbmcgYWRkciwgZW5kLCBjaHVua19zejsKJiM0MzsJdW5zaWduZWQgaW50IHRhcmdldF9vcmRlciA9IHMtJmd0O3RhcmdldF9vcmRlcjsKJiM0MzsJdW5zaWduZWQgbG9uZyBhcHBsaWVkID0gMDsKJiM0MzsJc3RydWN0IG1tX3N0cnVjdCAqbW07CiYjNDM7CWludCByZXQ7CiYjNDM7CiYjNDM7CWlmICh0YXJnZXRfb3JkZXIgJmx0OyAyIHx8IHRhcmdldF9vcmRlciAmZ3Q7IEhQQUdFX1BNRF9PUkRFUikKJiM0MzsJCXJldHVybiAwOwomIzQzOwomIzQzOwljaHVua19zeiA9IFBBR0VfU0laRSAmbHQ7Jmx0OyB0YXJnZXRfb3JkZXI7CiYjNDM7CWFkZHIgPSBBTElHTl9ET1dOKHItJmd0O2FyLnN0YXJ0LCBjaHVua19zeik7CiYjNDM7CWVuZCA9IEFMSUdOKHItJmd0O2FyLmVuZCwgY2h1bmtfc3opOwomIzQzOwomIzQzOwltbSA9IGRhbW9uX2dldF9tbSh0YXJnZXQpOwomIzQzOwlpZiAoIW1tKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CiYjNDM7CXdoaWxlIChhZGRyICZsdDsgZW5kKSB7CiYjNDM7CQlyZXQgPSBkYW1vbl9jb2xsYXBzZV9mb2xpb19yYW5nZShtbSwgYWRkciwgdGFyZ2V0X29yZGVyKTsKJiM0MzsJCWlmICghcmV0KQomIzQzOwkJCWFwcGxpZWQgJiM0Mzs9IGNodW5rX3N6OwomIzQzOwkJKnN6X2ZpbHRlcl9wYXNzZWQgJiM0Mzs9IGNodW5rX3N6OwomIzQzOwkJYWRkciAmIzQzOz0gY2h1bmtfc3o7CiYjNDM7CQljb25kX3Jlc2NoZWQoKTsKJiM0MzsJfQomIzQzOwomIzQzOwltbXB1dChtbSk7CiYjNDM7CXJldHVybiBhcHBsaWVkOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vc192YV9zcGxpdChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0YXJnZXQsCiYjNDM7CQlzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLCBzdHJ1Y3QgZGFtb3MgKnMsCiYjNDM7CQl1bnNpZ25lZCBsb25nICpzel9maWx0ZXJfcGFzc2VkKQomIzQzO3sKJiM0MzsJdW5zaWduZWQgbG9uZyBhZGRyLCBlbmQsIGNodW5rX3N6OwomIzQzOwl1bnNpZ25lZCBpbnQgdGFyZ2V0X29yZGVyID0gcy0mZ3Q7dGFyZ2V0X29yZGVyOwomIzQzOwl1bnNpZ25lZCBsb25nIGFwcGxpZWQgPSAwOwomIzQzOwlzdHJ1Y3QgbW1fc3RydWN0ICptbTsKJiM0MzsJc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWE7CiYjNDM7CXN0cnVjdCBmb2xpbyAqZm9saW87CiYjNDM7CXN0cnVjdCBmb2xpb193YWxrIGZ3OwomIzQzOwomIzQzOwltbSA9IGRhbW9uX2dldF9tbSh0YXJnZXQpOwomIzQzOwlpZiAoIW1tKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CiYjNDM7CWNodW5rX3N6ID0gUEFHRV9TSVpFICZsdDsmbHQ7IEhQQUdFX1BNRF9PUkRFUjsKJiM0MzsJYWRkciA9IEFMSUdOX0RPV04oci0mZ3Q7YXIuc3RhcnQsIGNodW5rX3N6KTsKJiM0MzsJZW5kID0gQUxJR04oci0mZ3Q7YXIuZW5kLCBjaHVua19zeik7CiYjNDM7CiYjNDM7CXdoaWxlIChhZGRyICZsdDsgZW5kKSB7CiYjNDM7CQltbWFwX3JlYWRfbG9jayhtbSk7CiYjNDM7CQl2bWEgPSBmaW5kX3ZtYShtbSwgYWRkcik7CiYjNDM7CQkvKgomIzQzOwkJICogc3BsaXRfZm9saW9fdG9fb3JkZXIoKSBzdXBwb3J0cyBib3RoIGFub24gYW5kIHNobWVtCiYjNDM7CQkgKiBmb2xpb3MsIHNvIHdlIGFjY2VwdCBhbnkgVk1BIHRoYXQgaGFzIGEgZm9saW8gYXQgQGFkZHIuCiYjNDM7CQkgKiBUaGlzIGNvdmVycyBpbXBvcnRhbnQgdXNlIGNhc2VzIGxpa2UgdG1wZnMgVEhQLWJhY2tlZAomIzQzOwkJICogS1ZNIGd1ZXN0IG1lbW9yeSB3aGVyZSBjb2xkIGFuZCBob3QgcGFnZXMgYXJlIGJ1bmRsZWQKJiM0MzsJCSAqIHRvZ2V0aGVyIGluIGEgc2luZ2xlIFBNRCBUSFAuCiYjNDM7CQkgKi8KJiM0MzsJCWlmICghdm1hIHx8IGFkZHIgJmx0OyB2bWEtJmd0O3ZtX3N0YXJ0KQomIzQzOwkJCWdvdG8gdW5sb2NrOwomIzQzOwomIzQzOwkJZm9saW8gPSBmb2xpb193YWxrX3N0YXJ0KCZhbXA7ZncsIHZtYSwgYWRkciwgMCk7CiYjNDM7CQlpZiAoIWZvbGlvKQomIzQzOwkJCWdvdG8gdW5sb2NrOwomIzQzOwomIzQzOwkJaWYgKGZvbGlvX29yZGVyKGZvbGlvKSAmZ3Q7IHRhcmdldF9vcmRlcikgewomIzQzOwkJCWlmICghZm9saW9fdHJ5bG9jayhmb2xpbykpIHsKJiM0MzsJCQkJZm9saW9fd2Fsa19lbmQoJmFtcDtmdywgdm1hKTsKJiM0MzsJCQkJZ290byB1bmxvY2s7CiYjNDM7CQkJfQomIzQzOwkJCWZvbGlvX2dldChmb2xpbyk7CiYjNDM7CQkJZm9saW9fd2Fsa19lbmQoJmFtcDtmdywgdm1hKTsKJiM0MzsKJiM0MzsJCQlpZiAoIXNwbGl0X2ZvbGlvX3RvX29yZGVyKGZvbGlvLCB0YXJnZXRfb3JkZXIpKQomIzQzOwkJCQlhcHBsaWVkICYjNDM7PSBjaHVua19zejsKJiM0MzsKJiM0MzsJCQlmb2xpb191bmxvY2soZm9saW8pOwomIzQzOwkJCWZvbGlvX3B1dChmb2xpbyk7CiYjNDM7CQl9IGVsc2UgewomIzQzOwkJCWZvbGlvX3dhbGtfZW5kKCZhbXA7ZncsIHZtYSk7CiYjNDM7CQl9CiYjNDM7CiYjNDM7dW5sb2NrOgomIzQzOwkJKnN6X2ZpbHRlcl9wYXNzZWQgJiM0Mzs9IGNodW5rX3N6OwomIzQzOwkJYWRkciAmIzQzOz0gY2h1bmtfc3o7CiYjNDM7CQltbWFwX3JlYWRfdW5sb2NrKG1tKTsKJiM0MzsJCWNvbmRfcmVzY2hlZCgpOwomIzQzOwl9CiYjNDM7CiYjNDM7CW1tcHV0KG1tKTsKJiM0MzsJcmV0dXJuIGFwcGxpZWQ7CiYjNDM7fQomIzQzOwogc3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb25fdmFfYXBwbHlfc2NoZW1lKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwKIAkJc3RydWN0IGRhbW9uX3RhcmdldCAqdCwgc3RydWN0IGRhbW9uX3JlZ2lvbiAqciwKIAkJc3RydWN0IGRhbW9zICpzY2hlbWUsIHVuc2lnbmVkIGxvbmcgKnN6X2ZpbHRlcl9wYXNzZWQpCkBAIC05MjIsNiAmIzQzOzEwMjIsOSBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vbl92YV9hcHBseV9zY2hlbWUoc3RydWN0IGRhbW9uX2N0eCAqY3R4LAogCQltYWR2X2FjdGlvbiA9IE1BRFZfTk9IVUdFUEFHRTsKIAkJYnJlYWs7CiAJY2FzZSBEQU1PU19DT0xMQVBTRToKJiM0MzsJCWlmIChzY2hlbWUtJmd0O3RhcmdldF9vcmRlcikKJiM0MzsJCQlyZXR1cm4gZGFtb3NfdmFfY29sbGFwc2UodCwgciwgc2NoZW1lLAomIzQzOwkJCQkJCSBzel9maWx0ZXJfcGFzc2VkKTsKIAkJbWFkdl9hY3Rpb24gPSBNQURWX0NPTExBUFNFOwogCQlicmVhazsKIAljYXNlIERBTU9TX01JR1JBVEVfSE9UOgpAQCAtOTI5LDYgJiM0MzsxMDMyLDkgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb25fdmFfYXBwbHlfc2NoZW1lKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwKIAkJcmV0dXJuIGRhbW9zX3ZhX21pZ3JhdGUodCwgciwgc2NoZW1lLCBzel9maWx0ZXJfcGFzc2VkKTsKIAljYXNlIERBTU9TX1NUQVQ6CiAJCXJldHVybiBkYW1vc192YV9zdGF0KHQsIHIsIHNjaGVtZSwgc3pfZmlsdGVyX3Bhc3NlZCk7CiYjNDM7CWNhc2UgREFNT1NfU1BMSVQ6CiYjNDM7CQlyZXR1cm4gZGFtb3NfdmFfc3BsaXQodCwgciwgc2NoZW1lLAomIzQzOwkJCQkJICBzel9maWx0ZXJfcGFzc2VkKTsKIAlkZWZhdWx0OgogCQkvKgogCQkgKiBEQU1PUyBhY3Rpb25zIHRoYXQgYXJlIG5vdCB5ZXQgc3VwcG9ydGVkIGJ5ICYjMzk7dmFkZHImIzM5Oy4KZGlmZiAtLWdpdCBhL21tL2todWdlcGFnZWQuYyBiL21tL2todWdlcGFnZWQuYwppbmRleCA2MTdiY2E3NmRiNDliNi4uMDM4Nzg0MWJhMmU3ZDggMTAwNjQ0Ci0tLSBhL21tL2todWdlcGFnZWQuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9raHVnZXBhZ2VkLmMKQEAgLTMyNzIsMyAmIzQzOzMyNzIsNDIgQEAgaW50IG1hZHZpc2VfY29sbGFwc2Uoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgc3RhcnQsCiAJcmV0dXJuIHRocHMgPT0gKChoZW5kIC0gaHN0YXJ0KSAmZ3Q7Jmd0OyBIUEFHRV9QTURfU0hJRlQpID8gMAogCQkJOiBtYWR2aXNlX2NvbGxhcHNlX2Vycm5vKGxhc3RfZmFpbCk7CiB9CiYjNDM7CiYjNDM7LyoqCiYjNDM7ICogZGFtb25fY29sbGFwc2VfZm9saW9fcmFuZ2UoKSAtIENvbGxhcHNlIGJhc2UgcGFnZXMgaW4gcmFuZ2UgaW50byBhIFRIUAomIzQzOyAqIEBtbTogICAgICAgICBtbV9zdHJ1Y3Qgb2YgdGhlIHRhcmdldCBwcm9jZXNzCiYjNDM7ICogQHN0YXJ0X2FkZHI6IHN0YXJ0IGFkZHJlc3MgKG11c3QgYmUgb3JkZXItYWxpZ25lZCkKJiM0MzsgKiBAdGFyZ2V0X29yZGVyOiBwYWdlIG9yZGVyIG9mIHRoZSBjb2xsYXBzZSByZXN1bHQgKGN1cnJlbnRseSBvbmx5CiYjNDM7ICogICAgICAgICAgICAgICAgSFBBR0VfUE1EX09SREVSIGlzIHN1cHBvcnRlZCkKJiM0MzsgKgomIzQzOyAqIFRoaW4gd3JhcHBlciBhcm91bmQgY29sbGFwc2VfaHVnZV9wYWdlKCkgZm9yIGV4dGVybmFsIGNhbGxlcnMgc3VjaCBhcwomIzQzOyAqIERBTU9OLiAgVGhlIGNhbGxlciBtdXN0IGhvbGQgYSByZWZlcmVuY2UgdG8gQG1tLiAgRG8gbm90IGhvbGQgbW1hcAomIzQzOyAqIGxvY2s6IGNvbGxhcHNlX2h1Z2VfcGFnZSgpIGFjcXVpcmVzIG1tYXBfcmVhZF9sb2NrIGZvciB2YWxpZGF0aW9uLAomIzQzOyAqIHJlbGVhc2VzIGl0LCB0aGVuIGFjcXVpcmVzIG1tYXBfd3JpdGVfbG9jayBmb3IgdGhlIGNvbGxhcHNlLiAgSG9sZGluZwomIzQzOyAqIGFuIG91dGVyIG1tYXBfcmVhZF9sb2NrIHdvdWxkIHNlbGYtZGVhZGxvY2suCiYjNDM7ICoKJiM0MzsgKiBSZXR1cm46IDAgb24gc3VjY2VzcywgLUVJTlZBTCBvbiBiYWQgYXJndW1lbnRzLCBuZWdhdGl2ZSBlcnJvciBmcm9tCiYjNDM7ICogICAgICAgICBtYWR2aXNlX2NvbGxhcHNlX2Vycm5vKCkgb3RoZXJ3aXNlLgomIzQzOyAqLwomIzQzO2ludCBkYW1vbl9jb2xsYXBzZV9mb2xpb19yYW5nZShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBzdGFydF9hZGRyLAomIzQzOwkJCSAgICAgICB1bnNpZ25lZCBpbnQgdGFyZ2V0X29yZGVyKQomIzQzO3sKJiM0MzsJc3RydWN0IGNvbGxhcHNlX2NvbnRyb2wgY2MgPSB7CiYjNDM7CQkuaXNfa2h1Z2VwYWdlZCA9IGZhbHNlLAomIzQzOwl9OwomIzQzOwllbnVtIHNjYW5fcmVzdWx0IHJlc3VsdDsKJiM0MzsKJiM0MzsJaWYgKHRhcmdldF9vcmRlciAhPSBIUEFHRV9QTURfT1JERVIpIHsKJiM0MzsJCXByX3dhcm5fb25jZSgmIzM0OyVzOiBvbmx5IFBNRCBvcmRlciAoJXUpIGlzIHN1cHBvcnRlZCwgZ290ICV1XG4mIzM0OywKJiM0MzsJCQkgICAgIF9fZnVuY19fLCBIUEFHRV9QTURfT1JERVIsIHRhcmdldF9vcmRlcik7CiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJfQomIzQzOwlpZiAoc3RhcnRfYWRkciAmYW1wOyAoKFBBR0VfU0laRSAmbHQ7Jmx0OyB0YXJnZXRfb3JkZXIpIC0gMSkpCiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsKJiM0MzsJcmVzdWx0ID0gY29sbGFwc2VfaHVnZV9wYWdlKG1tLCBzdGFydF9hZGRyLCAxLCAwLCAmYW1wO2NjLCB0YXJnZXRfb3JkZXIpOwomIzQzOwlpZiAocmVzdWx0ID09IFNDQU5fU1VDQ0VFRCkKJiM0MzsJCXJldHVybiAwOwomIzQzOwlyZXR1cm4gbWFkdmlzZV9jb2xsYXBzZV9lcnJubyhyZXN1bHQpOwomIzQzO30KJiM0MztFWFBPUlRfU1lNQk9MX0dQTChkYW1vbl9jb2xsYXBzZV9mb2xpb19yYW5nZSk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDE3OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYwNDYKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAyNDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgREFNT04gUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF0JiMzOTtzIGludHJvZHVjaW5nIGBEQU1PU19TUExJVGAgaW50byBEQU1PTiwgYW5kIGV4cGFuZGluZyB0aGUgY2FwYWJpbGl0aWVzIG9mIGBEQU1PU19DT0xMQVBTRWAgdG8gaGFuZGxlIGEgc3BlY2lmaWVkIGB0YXJnZXRfb3JkZXJgLiBTdHJhaWdodCBhd2F5LCBJIHJlY29nbml6ZSB0aGlzIGFzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQsIHNwZWNpZmljYWxseSB3aXRoaW4gREFNT04gYW5kIGtodWdlcGFnZWQuIFdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGFsbG93aW5nIERBTU9OIHRvIHNwbGl0IGxhcmdlIGZvbGlvcyB0byBhIHBhcnRpY3VsYXIgbVRIUCBvcmRlciBhbmQgZW5hYmxpbmcgZm9saW8gY29sbGFwc2UuCgpCZWZvcmUgSSBkZWx2ZSBkZWVwZXIgaW50byB0aGUgY29kZSBtb2RpZmljYXRpb25zIHdpdGhpbiBgaW5jbHVkZS9saW51eC9kYW1vbi5oYCwgYGluY2x1ZGUvbGludXgva2h1Z2VwYWdlZC5oYCwgYG1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuY2AsIGBtbS9kYW1vbi92YWRkci5jYCwgYW5kIGBtbS9raHVnZXBhZ2VkLmNgLCBJIG5lZWQgdG8gcXVpY2tseSBlc3RhYmxpc2ggdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBJJiMzOTttIGdvaW5nIHRvIGNoZWNrIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXNzb2NpYXRlZCB3aXRoIERBTU9OIGFuZCBraHVnZXBhZ2VkLiBMb29rcyBsaWtlIHdlIGhhdmUgYENPTkZJR19EQU1PTmAsIGBDT05GSUdfREFNT05fU1lTRlNgLCBhbmQgYENPTkZJR19EQU1PTl9WQUREUmAgZm9yIERBTU9OLCBhbmQgYENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRWAgZm9yIGtodWdlcGFnZWQuCgpOb3csIEkmIzM5O2xsIGRvIGEgcXVpY2sgZ3JlcCBzZWFyY2ggZm9yIGBDT05GSUdfREFNT05gIGFuZCBgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFYCB3aXRoaW4gdGhlIGNvbmZpZyBmaWxlcyB0byBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgdGhlaXIgcmVsYXRpb25zaGlwcyBhbmQgYW55IHBvdGVudGlhbCByZXF1aXJlbWVudHMgb3IgY29uZmxpY3RzIHRoYXQgbmVlZCBhdHRlbnRpb24uIFRoaXMgd2lsbCBoZWxwIG1lIGFzc2VzcyB0aGUgcGF0Y2gmIzM5O3MgaW1wYWN0IGFuZCBpdHMgaW50ZWdyYXRpb24gd2l0aGluIHRoZSBleGlzdGluZyBjb25maWd1cmF0aW9uIGxhbmRzY2FwZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGRvZXNuJiMzOTt0IGludHJvZHVjZSB1bmludGVuZGVkIGRlcGVuZGVuY2llcyBvciBicmVhayBleGlzdGluZyBzZXR1cHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTc6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7REFNT05fU1lTRlMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9kYW1vbi9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2RhbW9uL0tjb25maWc9NTY9Y29uZmlnIERBTU9OX1ZBRERSX0tVTklUX1RFU1Rcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTY3LVxubW0vZGFtb24vS2NvbmZpZzo2ODpjb25maWcgREFNT05fU1lTRlNcbm1tL2RhbW9uL0tjb25maWctNjktXHRib29sIFwmIzM0O0RBTU9OIHN5c2ZzIGludGVyZmFjZVwmIzM0O1xuLS1cbm1tL2RhbW9uL0tjb25maWctNzUtXG5tbS9kYW1vbi9LY29uZmlnOjc2OmNvbmZpZyBEQU1PTl9TWVNGU19LVU5JVF9URVNUXG5tbS9kYW1vbi9LY29uZmlnLTc3LVx0Ym9vbCBcJiMzNDtUZXN0IGZvciBkYW1vbiBzeXNmcyBpbnRlcmZhY2VcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xubW0vZGFtb24vS2NvbmZpZzo3ODpcdGRlcGVuZHMgb24gREFNT05fU1lTRlMgXHUwMDI2XHUwMDI2IEtVTklUPXlcbm1tL2RhbW9uL0tjb25maWctNzktXHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDE3OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY4NzMKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqS2NvbmZpZyBEaXZlIGZvciBEQU1PTl9WQUREUioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmluZCB3aGVyZSBgREFNT05fVkFERFJgIGlzIGRlZmluZWQgYW5kIGNvbmZpZ3VyZWQuIFRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgaXMsIG9mIGNvdXJzZSwgdGhlIGBLY29uZmlnYCBmaWxlcy4gR2l2ZW4gdGhhdCB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIERBTU9OIChEeW5hbWljIEFkZHJlc3MgTW9uaXRvcmluZyksIGl0JiMzOTtzIGhpZ2hseSBsaWtlbHkgdGhhdCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBpbiB0aGUgYG1tL2RhbW9uYCBkaXJlY3RvcnkuIFRoZXJlZm9yZSwgSSBzaG91bGQgY2hlY2sgdGhlIGBtbS9kYW1vbi9LY29uZmlnYCBmaWxlIGZpcnN0LiBUaGF0JiMzOTtzIHRoZSBnby10byBwbGFjZSBmb3IgdW5kZXJzdGFuZGluZyBEQU1PTiYjMzk7cyBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgYW5kIHRoZWlyIGRlcGVuZGVuY2llcy4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGNhbiBmaW5kIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDE3OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0RBTU9OX1ZBRERSJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9LY29uZmlnPTI2PWNvbmZpZyBEQU1PTl9LVU5JVF9URVNUXG4tLVxubW0vZGFtb24vS2NvbmZpZy0zNy1cbm1tL2RhbW9uL0tjb25maWc6Mzg6Y29uZmlnIERBTU9OX1ZBRERSXG5tbS9kYW1vbi9LY29uZmlnLTM5LVx0Ym9vbCBcJiMzNDtEYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIHZpcnR1YWwgYWRkcmVzcyBzcGFjZXNcJiMzNDtcbi0tXG5tbS9kYW1vbi9LY29uZmlnPTQ3PWNvbmZpZyBEQU1PTl9QQUREUlxuLS1cbm1tL2RhbW9uL0tjb25maWctNTUtXG5tbS9kYW1vbi9LY29uZmlnOjU2OmNvbmZpZyBEQU1PTl9WQUREUl9LVU5JVF9URVNUXG5tbS9kYW1vbi9LY29uZmlnLTU3LVx0Ym9vbCBcJiMzNDtUZXN0IGZvciBEQU1PTiBvcGVyYXRpb25zXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbm1tL2RhbW9uL0tjb25maWc6NTg6XHRkZXBlbmRzIG9uIERBTU9OX1ZBRERSIFx1MDAyNlx1MDAyNiBLVU5JVD15XG5tbS9kYW1vbi9LY29uZmlnLTU5LVx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxNzo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3Mjk3CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUuLi4KCioqQ2hlY2tpbmcgdGhlIEtjb25maWcgZm9yIFRyYW5zcGFyZW50IEh1Z2VwYWdlcyoqCgpSaWdodCwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGBUUkFOU1BBUkVOVF9IVUdFUEFHRWAgaXMgY29uZmlndXJlZCBpbiB0aGlzIHBhcnRpY3VsYXIgZW52aXJvbm1lbnQuIEEgZ29vZCBmaXJzdCBzdGVwIGlzIGFsd2F5cyB0byBnbyBzdHJhaWdodCB0byB0aGUgc291cmNlLCB0aGUgYG1tL0tjb25maWdgIGZpbGUuIEkmIzM5O20gZmFtaWxpYXIgd2l0aCB0aGlzIGFyZWEsIG9idmlvdXNseSwgYW5kIGtub3cgZXhhY3RseSB3aGF0IHRvIGxvb2sgZm9yIHRoZXJlLiBUaGF0JiMzOTtzIHdoZXJlIGFsbCB0aGUgZnVuZGFtZW50YWwgbWVtb3J5IG1hbmFnZW1lbnQgb3B0aW9ucyBhcmUgZGVjbGFyZWQgYW5kIGRlZmluZWQsIHdoaWNoIHdvdWxkIGxvZ2ljYWxseSBpbmNsdWRlIGFueXRoaW5nIHJlbGF0ZWQgdG8gdHJhbnNwYXJlbnQgaHVnZXBhZ2VzLiBJdCYjMzk7bGwgZ2l2ZSBtZSB0aGUgZGVmaW5pdGlvbnMgYW5kIHRoZSBkZXBlbmRlbmNpZXMuIEhvcGVmdWxseSwgaXTigJlzIG5vdCB0b28gZGVlcGx5IG5lc3RlZCwgSSBuZWVkIHRvIGdldCBhbiBpbml0aWFsIG92ZXJ2aWV3IGFzIHF1aWNrbHkgYXMgcG9zc2libGUuIFRpbWUgdG8gZGl2ZSBpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxNzo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtUUkFOU1BBUkVOVF9IVUdFUEFHRSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vS2NvbmZpZz04Mjc9Y29uZmlnIFBFUlNJU1RFTlRfSFVHRV9aRVJPX0ZPTElPXG5tbS9LY29uZmlnLTgyOC1cdGJvb2wgXCYjMzQ7QWxsb2NhdGUgYSBQTUQgc2l6ZWQgZm9saW8gZm9yIHplcm9pbmdcJiMzNDtcbm1tL0tjb25maWc6ODI5Olx0ZGVwZW5kcyBvbiBUUkFOU1BBUkVOVF9IVUdFUEFHRVxubW0vS2NvbmZpZy04MzAtXHRoZWxwXG4tLVxubW0vS2NvbmZpZz04NDM9Y29uZmlnIE1NX0lEXG4tLVxubW0vS2NvbmZpZy04NDUtXG5tbS9LY29uZmlnOjg0NjptZW51Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFXG5tbS9LY29uZmlnLTg0Ny1cdGJvb2wgXCYjMzQ7VHJhbnNwYXJlbnQgSHVnZXBhZ2UgU3VwcG9ydFwmIzM0O1xubW0vS2NvbmZpZzo4NDg6XHRkZXBlbmRzIG9uIEhBVkVfQVJDSF9UUkFOU1BBUkVOVF9IVUdFUEFHRSBcdTAwMjZcdTAwMjYgIVBSRUVNUFRfUlRcbm1tL0tjb25maWctODQ5LVx0c2VsZWN0IENPTVBBQ1RJT05cbi0tXG5tbS9LY29uZmlnLTg2MS1cbm1tL0tjb25maWc6ODYyOmlmIFRSQU5TUEFSRU5UX0hVR0VQQUdFXG5tbS9LY29uZmlnLTg2My1cbm1tL0tjb25maWc9ODY0PWNob2ljZVxubW0vS2NvbmZpZy04NjUtXHRwcm9tcHQgXCYjMzQ7VHJhbnNwYXJlbnQgSHVnZXBhZ2UgU3VwcG9ydCBzeXNmcyBkZWZhdWx0c1wmIzM0O1xubW0vS2NvbmZpZzo4NjY6XHRkZWZhdWx0IFRSQU5TUEFSRU5UX0hVR0VQQUdFX0FMV0FZU1xubW0vS2NvbmZpZy04NjctXHRoZWxwXG4tLVxubW0vS2NvbmZpZy04NjktXG5tbS9LY29uZmlnOjg3MDpcdGNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRV9BTFdBWVNcbm1tL0tjb25maWctODcxLVx0XHRib29sIFwmIzM0O2Fsd2F5c1wmIzM0O1xuLS1cbm1tL0tjb25maWctODc2LVxubW0vS2NvbmZpZzo4Nzc6XHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfTUFEVklTRVxubW0vS2NvbmZpZy04NzgtXHRcdGJvb2wgXCYjMzQ7bWFkdmlzZVwmIzM0O1xuLS1cbm1tL0tjb25maWctODg1LVxubW0vS2NvbmZpZzo4ODY6XHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfTkVWRVJcbm1tL0tjb25maWctODg3LVx0XHRib29sIFwmIzM0O25ldmVyXCYjMzQ7XG4tLVxubW0vS2NvbmZpZz04OTM9Y2hvaWNlXG5tbS9LY29uZmlnLTg5NC1cdHByb21wdCBcJiMzNDtTaG1lbSBodWdlcGFnZSBhbGxvY2F0aW9uIGRlZmF1bHRzXCYjMzQ7XG5tbS9LY29uZmlnOjg5NTpcdGRlZmF1bHQgVFJBTlNQQVJFTlRfSFVHRVBBR0VfU0hNRU1fSFVHRV9ORVZFUlxubW0vS2NvbmZpZy04OTYtXHRoZWxwXG4tLVxubW0vS2NvbmZpZy05MDItXG5tbS9LY29uZmlnOjkwMzpcdGNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRV9TSE1FTV9IVUdFX05FVkVSXG5tbS9LY29uZmlnLTkwNC1cdFx0Ym9vbCBcJiMzNDtuZXZlclwmIzM0O1xuLS1cbm1tL0tjb25maWctOTEyLVxubW0vS2NvbmZpZzo5MTM6XHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfU0hNRU1fSFVHRV9BTFdBWVNcbm1tL0tjb25maWctOTE0LVx0XHRib29sIFwmIzM0O2Fsd2F5c1wmIzM0O1xuLS1cbm1tL0tjb25maWctOTIwLVxubW0vS2NvbmZpZzo5MjE6XHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfU0hNRU1fSFVHRV9XSVRISU5fU0laRVxubW0vS2NvbmZpZy05MjItXHRcdGJvb2wgXCYjMzQ7d2l0aGluX3NpemVcJiMzNDtcbi0tXG5tbS9LY29uZmlnLTkyOC1cbm1tL0tjb25maWc6OTI5Olx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX1NITUVNX0hVR0VfQURWSVNFXG5tbS9LY29uZmlnLTkzMC1cdFx0Ym9vbCBcJiMzNDthZHZpc2VcJiMzNDtcbi0tXG5tbS9LY29uZmlnPTkzOD1jaG9pY2Vcbm1tL0tjb25maWctOTM5LVx0cHJvbXB0IFwmIzM0O1RtcGZzIGh1Z2VwYWdlIGFsbG9jYXRpb24gZGVmYXVsdHNcJiMzNDtcbm1tL0tjb25maWc6OTQwOlx0ZGVmYXVsdCBUUkFOU1BBUkVOVF9IVUdFUEFHRV9UTVBGU19IVUdFX05FVkVSXG5tbS9LY29uZmlnLTk0MS1cdGhlbHBcbi0tXG5tbS9LY29uZmlnLTk0Ny1cbm1tL0tjb25maWc6OTQ4Olx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX1RNUEZTX0hVR0VfTkVWRVJcbm1tL0tjb25maWctOTQ5LVx0XHRib29sIFwmIzM0O25ldmVyXCYjMzQ7XG4tLVxubW0vS2NvbmZpZy05NTYtXG5tbS9LY29uZmlnOjk1NzpcdGNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRV9UTVBGU19IVUdFX0FMV0FZU1xubW0vS2NvbmZpZy05NTgtXHRcdGJvb2wgXCYjMzQ7YWx3YXlzXCYjMzQ7XG4tLVxubW0vS2NvbmZpZy05NjQtXG5tbS9LY29uZmlnOjk2NTpcdGNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRV9UTVBGU19IVUdFX1dJVEhJTl9TSVpFXG5tbS9LY29uZmlnLTk2Ni1cdFx0Ym9vbCBcJiMzNDt3aXRoaW5fc2l6ZVwmIzM0O1xuLS1cbm1tL0tjb25maWctOTcyLVxubW0vS2NvbmZpZzo5NzM6XHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfVE1QRlNfSFVHRV9BRFZJU0Vcbm1tL0tjb25maWctOTc0LVx0XHRib29sIFwmIzM0O2FkdmlzZVwmIzM0O1xuLS1cbm1tL0tjb25maWc9OTkyPWNvbmZpZyBOT19QQUdFX01BUENPVU5UXG4tLVxubW0vS2NvbmZpZy0xMDA0LVxubW0vS2NvbmZpZzoxMDA1OmVuZGlmICMgVFJBTlNQQVJFTlRfSFVHRVBBR0Vcbm1tL0tjb25maWctMTAwNi1cbi0tXG5tbS9LY29uZmlnPTEwMTQ9Y29uZmlnIFBHVEFCTEVfSEFTX0hVR0VfTEVBVkVTXG5tbS9LY29uZmlnOjEwMTU6XHRkZWZfYm9vbCBUUkFOU1BBUkVOVF9IVUdFUEFHRSB8fCBIVUdFVExCX1BBR0Vcbm1tL0tjb25maWctMTAxNi1cbi0tXG5tbS9LY29uZmlnPTEwMjA9Y29uZmlnIEhBVkVfR0lHQU5USUNfRk9MSU9TXG5tbS9LY29uZmlnLTEwMjEtXHRkZWZfYm9vbCAoSFVHRVRMQl9QQUdFIFx1MDAyNlx1MDAyNiBBUkNIX0hBU19HSUdBTlRJQ19QQUdFKSB8fCBcXFxubW0vS2NvbmZpZzoxMDIyOlx0XHQgKFpPTkVfREVWSUNFIFx1MDAyNlx1MDAyNiBIQVZFX0FSQ0hfVFJBTlNQQVJFTlRfSFVHRVBBR0VfUFVEKVxubW0vS2NvbmZpZy0xMDIzLVxuLS1cbm1tL0tjb25maWc9MTAyOD1jb25maWcgQVJDSF9TVVBQT1JUU19IVUdFX1BGTk1BUFxubW0vS2NvbmZpZy0xMDI5LVx0ZGVmX2Jvb2wgblxubW0vS2NvbmZpZzoxMDMwOlx0ZGVwZW5kcyBvbiBUUkFOU1BBUkVOVF9IVUdFUEFHRVxubW0vS2NvbmZpZy0xMDMxLVxubW0vS2NvbmZpZz0xMDMyPWNvbmZpZyBBUkNIX1NVUFBPUlRTX1BNRF9QRk5NQVBcbm1tL0tjb25maWctMTAzMy1cdGRlZl9ib29sIHlcbm1tL0tjb25maWc6MTAzNDpcdGRlcGVuZHMgb24gQVJDSF9TVVBQT1JUU19IVUdFX1BGTk1BUCBcdTAwMjZcdTAwMjYgSEFWRV9BUkNIX1RSQU5TUEFSRU5UX0hVR0VQQUdFXG5tbS9LY29uZmlnLTEwMzUtXG5tbS9LY29uZmlnPTEwMzY9Y29uZmlnIEFSQ0hfU1VQUE9SVFNfUFVEX1BGTk1BUFxubW0vS2NvbmZpZy0xMDM3LVx0ZGVmX2Jvb2wgeVxubW0vS2NvbmZpZzoxMDM4Olx0ZGVwZW5kcyBvbiBBUkNIX1NVUFBPUlRTX0hVR0VfUEZOTUFQIFx1MDAyNlx1MDAyNiBIQVZFX0FSQ0hfVFJBTlNQQVJFTlRfSFVHRVBBR0VfUFVEXG5tbS9LY29uZmlnLTEwMzktXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTc6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTAyOAoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDUzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgREFNT04gUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB3aGF0IEkgY2FuIHNlZSwgdGhpcyBwYXRjaCBpcyBhZGRpbmcgZnVuY3Rpb25hbGl0eSB0byBEQU1PTiwgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gZm9saW8gbWFuaXB1bGF0aW9uLCBsaWtlbHkgZm9yIG1lbW9yeSBtYW5hZ2VtZW50IG9wdGltaXphdGlvbiBvciBwZXJoYXBzIGZvciBtb3JlIGdyYW51bGFyIG1vbml0b3JpbmcuCgpUaGUgY29yZSBvZiB0aGUgbmV3IGNvZGUgc2VlbXMgdG8gcmV2b2x2ZSBhcm91bmQgYGRhbW9uX2NvbGxhcHNlX2ZvbGlvX3JhbmdlYCwgYGRhbW9zX3ZhX2NvbGxhcHNlYCwgYW5kIGBkYW1vc192YV9zcGxpdGAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3csIHNvIEkmIzM5O3ZlIHRyYWNlZCBpdDogYGRhbW9uX2NvbGxhcHNlX2ZvbGlvX3JhbmdlYCBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZTsgaXQmIzM5O3MgY2FsbGVkIGJ5IGBkYW1vc192YV9jb2xsYXBzZWAuIEFuZCBib3RoIGBkYW1vc192YV9jb2xsYXBzZWAgYW5kIGBkYW1vc192YV9zcGxpdGAgYXJlIGNhbGxlZCB3aXRoaW4gYGRhbW9uX3ZhX2FwcGx5X3NjaGVtZWAsIHdoaWNoLCBhcyBJIGtub3csIGlzIGEgZnVuY3Rpb24gY2FsbGVkIGJ5IHRoZSBEQU1PTiBjb3JlLiBDcnVjaWFsbHksIHRoZSBwYXRjaCBhbHNvIGludHJvZHVjZXMgdGhlICYjMzQ7U1BMSVQmIzM0OyBhY3Rpb24gdmlhIGBEQU1PU19TUExJVGAgaW4gYGRhbW9zX3N5c2ZzX2FjdGlvbl9uYW1lc2AuIFRoaXMgaXMga2V5IGJlY2F1c2UgdGhhdCYjMzk7cyBob3cgc3l6a2FsbGVyLCB0aGUgZnV6emVyLCBpbnRlcmFjdHMgd2l0aCBEQU1PTiB2aWEgdGhlIHN5c2ZzIGludGVyZmFjZS4gVGhpcyBtZWFucyBzeXprYWxsZXIgY2FuIG5vdyBjcmVhdGUgREFNT04gc2NoZW1lcyB1c2luZyAmIzM0O3NwbGl0JiMzNDsgYW5kICYjMzQ7Y29sbGFwc2UmIzM0OyB3aXRoIHRoZSBgdGFyZ2V0X29yZGVyYCBwYXJhbWV0ZXJzLiBJdCBsb29rcyBsaWtlIHRoZSB0YXJnZXQgaGVyZSBpcyB0byBhbGxvdyBmdXp6aW5nIHRoZSBzcGxpdHRpbmcgYW5kIGNvbGxhcHNpbmcgZnVuY3Rpb25hbGl0eSB3aXRoaW4gREFNT04uCgpJIG5lZWQgdG8gbmFpbCBkb3duIHRoZSBzeW1ib2xzIG9mIGltcG9ydGFuY2U6IHRoZSBmdW5jdGlvbnMgSSBtZW50aW9uZWQgYWJvdmUsIHNwZWNpZmljYWxseSBgZGFtb3NfdmFfY29sbGFwc2VgLCBgZGFtb3NfdmFfc3BsaXRgLCBhbmQgYGRhbW9uX2NvbGxhcHNlX2ZvbGlvX3JhbmdlYC4gSSYjMzk7bGwgYWRkIHRob3NlIHRvIG15IGZvY3VzIGxpc3QuCgpJIHNob3VsZCBhbHNvIGNoZWNrIGZvciBhbnkgb3RoZXIgYWRkZWQgb3IgbW9kaWZpZWQgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gdGhpcyBuZXcgZnVuY3Rpb25hbGl0eTogSSYjMzk7bSBzZWVpbmcgYHRhcmdldF9vcmRlcl9zaG93YCwgYHRhcmdldF9vcmRlcl9zdG9yZWAsIGBkYW1vbl9zeXNmc19ta19zY2hlbWVgLCBhbmQgYGRhbW9uX3ZhX2FwcGx5X3NjaGVtZWAuIEkmIzM5O2xsIG5lZWQgdG8ga2VlcCB0aG9zZSBpbiBtaW5kIGFzIHBvdGVudGlhbGx5IHJlbGF0ZWQgc3ltYm9scy4KCk5vdywgbGV0JiMzOTtzIG1ha2Ugc3VyZSB0aGUgZGVwZW5kZW5jaWVzIGFyZSBhcyBJIHVuZGVyc3RhbmQgdGhlbS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBgVFJBTlNQQVJFTlRfSFVHRVBBR0VgIGlzIGVuYWJsZWQgZm9yIGZ1bmN0aW9ucyBzdWNoIGFzIGBzcGxpdF9mb2xpb190b19vcmRlcmAgYW5kIGBjb2xsYXBzZV9odWdlX3BhZ2VgLiBgc3BsaXRfZm9saW9fdG9fb3JkZXJgIGlzIGluIGBtbS9odWdlX21lbW9yeS5jYCBhbmQgaXMgY29uZGl0aW9uYWwgb24gYENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRWAsIGFuZCBgY29sbGFwc2VfaHVnZV9wYWdlYCBpcyBpbiBgbW0va2h1Z2VwYWdlZC5jYCBhbHNvIGNvbmRpdGlvbmFsIG9uIGBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VgLiBTbywgdG8gYmUgY2xlYXIsIGJvdGggcmVxdWlyZSB0aGF0IGNvbmZpZyB0byBiZSBlbmFibGVkLiBJIGFtIGdvaW5nIHRvIG5lZWQgdG8ga2VlcCB0aGUgZm9sbG93aW5nIGNvbmZpZ3MgaW4gbWluZDogYERBTU9OX1NZU0ZTYCwgYERBTU9OX1ZBRERSYCwgYW5kIGBUUkFOU1BBUkVOVF9IVUdFUEFHRWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDE3OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2todWdlcGFnZWQubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL01ha2VmaWxlPTEwMD1vYmotJChDT05GSUdfREVWSUNFX01JR1JBVElPTikgJiM0Mzs9IG1pZ3JhdGVfZGV2aWNlLm9cbm1tL01ha2VmaWxlOjEwMTpvYmotJChDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UpICYjNDM7PSBodWdlX21lbW9yeS5vIGtodWdlcGFnZWQub1xubW0vTWFrZWZpbGUtMTAyLW9iai0kKENPTkZJR19QQUdFX0NPVU5URVIpICYjNDM7PSBwYWdlX2NvdW50ZXIub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxNzo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDI4MQoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDcxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIEtlcm5lbCBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJJiMzOTttIGNvbmZpcm1pbmcgdGhhdCB0aGUgYGtodWdlcGFnZWQub2AgbW9kdWxlIGlzIGRlZmluaXRlbHkgY29tcGlsZWQgYW5kIGluY2x1ZGVkIHdoZW4gYENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRWAgaXMgZW5hYmxlZC4gVGhhdCYjMzk7cyBhIGdpdmVuOyBpdCYjMzk7cyB0aGUgY29yZSBvZiBob3cgdHJhbnNwYXJlbnQgaHVnZXBhZ2VzIGZ1bmN0aW9uIGluIHRoZSBrZXJuZWwuIFNvLCBjbGVhcmx5LCBgVFJBTlNQQVJFTlRfSFVHRVBBR0VgIGlzIGEgaGFyZCByZXF1aXJlbWVudCBpbiB0aGlzIGNvbnRleHQuIEl0JiMzOTtzIGEgZnVuZGFtZW50YWwgYnVpbGRpbmcgYmxvY2suCgpOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgZm9yIGBtbS9kYW1vbi92YWRkci5jYC4gTXkgbmV4dCBzdGVwIGlzIHRvIGRyaWxsIGRvd24gYW5kIHNlZSBpZiB0aGUgYERBTU9OX1ZBRERSYCBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyBhbHNvIGEgbmVjZXNzYXJ5IHByZXJlcXVpc2l0ZSBmb3IgdGhhdCBzcGVjaWZpYyBmaWxlLiBMZXQgbWUgdmVyaWZ5IHRoYXQgYW5kIG1ha2Ugc3VyZSBhbGwgb3VyIGR1Y2tzIGFyZSBpbiBhIHJvdyByZWdhcmRpbmcgaG93IHRoZXNlIHBhcnRzIG9mIHRoZSBrZXJuZWwgYXJlIGJ1aWx0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxNzo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2YWRkci5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vZGFtb24vTWFrZWZpbGU9Mz1vYmoteVx0XHRcdFx0Oj0gY29yZS5vXG5tbS9kYW1vbi9NYWtlZmlsZTo0Om9iai0kKENPTkZJR19EQU1PTl9WQUREUilcdCYjNDM7PSBvcHMtY29tbW9uLm8gdmFkZHIub1xubW0vZGFtb24vTWFrZWZpbGUtNS1vYmotJChDT05GSUdfREFNT05fUEFERFIpXHQmIzQzOz0gb3BzLWNvbW1vbi5vIHBhZGRyLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTc6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA2NTEKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqRGVwZW5kZW5jaWVzIGFuZCB0aGUgREFNT04gTGFuZHNjYXBlKioKClJpZ2h0LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IERBTU9OLiBJIHNlZSB0aG9zZSBjb25zdGFudHM6IGBEQU1PTl9WQUREUmAuIFllcywgYWJzb2x1dGVseSBuZWNlc3NhcnkuIE5vIHF1ZXN0aW9uLiBUaGUgdmlydHVhbCBhZGRyZXNzIHJlcXVpcmVtZW50IGlzIGZ1bmRhbWVudGFsIHRvIGhvdyBpdCBvcGVyYXRlcywgaG93IGl0IHRyYWNrcyBtZW1vcnkuIE1ha2VzIHBlcmZlY3Qgc2Vuc2UuCgpBbmQgdGhlbiwgbG9va2luZyBhdCBgc3lzZnMtc2NoZW1lcy5jYCwgdGhlIGNvbm5lY3Rpb24gYmVjb21lcyBldmVuIGNsZWFyZXIuIFdlJiMzOTtyZSB0YWxraW5nIGFib3V0IHBva2luZyBhcm91bmQgaW4gdGhlIGtlcm5lbCYjMzk7cyBmaWxlIHN5c3RlbSwgc28gYERBTU9OX1NZU0ZTYCBpcywgbmF0dXJhbGx5LCBhbm90aGVyIGNydWNpYWwgcGllY2Ugb2YgdGhlIHB1enpsZS4gV2l0aG91dCB0aGF0IGFjY2Vzcywgd2l0aG91dCB0aGF0IGludGVyZmFjZSwgdGhlcmUmIzM5O3Mgbm8gd2F5IHRvIGNvbmZpZ3VyZSBhbmQgY29udHJvbCB0aGUgbW9uaXRvcmluZyBzY2hlbWVzIHRoYXQgdW5kZXJwaW4gZXZlcnl0aGluZyB3ZSYjMzk7cmUgdHJ5aW5nIHRvIGFjaGlldmUgd2l0aCBEQU1PTi4gR290dGEgaGF2ZSBib3RoLCBhbmQgdW5kZXJzdGFuZGluZyB3aHkgaXMga2V5IHRvIGVmZmVjdGl2ZSBkZXZlbG9wbWVudCBhbmQgdXNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxNzo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzeXNmcy1zY2hlbWVzLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9kYW1vbi9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9NYWtlZmlsZT01PW9iai0kKENPTkZJR19EQU1PTl9QQUREUilcdCYjNDM7PSBvcHMtY29tbW9uLm8gcGFkZHIub1xubW0vZGFtb24vTWFrZWZpbGU6NjpvYmotJChDT05GSUdfREFNT05fU1lTRlMpXHQmIzQzOz0gc3lzZnMtY29tbW9uLm8gc3lzZnMtc2NoZW1lcy5vIHN5c2ZzLm9cbm1tL2RhbW9uL01ha2VmaWxlLTctb2JqLSQoQ09ORklHX0RBTU9OX1JFQ0xBSU0pXHQmIzQzOz0gbW9kdWxlcy1jb21tb24ubyByZWNsYWltLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTc6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEwMTcKCQkJCQkJCW91dHB1dDogMTczCgkJCQkJCQl0aG91Z2h0czogMzA4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBEQU1PTiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBjb25maXJtZWQgdGhhdCBgREFNT05fU1lTRlNgIGlzIGEgY3JpdGljYWwgcmVxdWlyZW1lbnQgZm9yIHRoaXMgcGF0Y2gg4oCTIG5vIHN1cnByaXNlcyB0aGVyZS4gVGhlIGNvcmUgY29uZmlncyBJJiMzOTttIHNlZWluZyB0aGF0IGFyZSByZWxldmFudCBhcmUgYERBTU9OX1NZU0ZTYCwgYERBTU9OX1ZBRERSYCwgYW5kIGBUUkFOU1BBUkVOVF9IVUdFUEFHRWAuIEkmIzM5O20gc3RhcnRpbmcgdG8gYnVpbGQgYSBwaWN0dXJlIG9mIGhvdyB0aGlzIHBhdGNoIGZpdHMgaW50byB0aGUgYmlnZ2VyIG1lbW9yeSBtYW5hZ2VtZW50IGxhbmRzY2FwZS4KCkkmIzM5O20gemVyb2luZyBpbiBvbiBhIGZldyBrZXkgc3ltYm9scyB0byBndWlkZSBteSBhbmFseXNpcy4gSSYjMzk7bGwgbmVlZCB0byB1bmRlcnN0YW5kIGBkYW1vc192YV9jb2xsYXBzZWAsIGBkYW1vc192YV9zcGxpdGAsIGBkYW1vbl9jb2xsYXBzZV9mb2xpb19yYW5nZWAsIGFuZCBgdGFyZ2V0X29yZGVyX3N0b3JlYC4gTGV0IG1lIGp1c3QgY29uZmlybSBpZiB0aGV5JiMzOTtyZSBpbnRlcm5hbCBvciBleHBvcnRlZC4gQWgsIGdvb2QuIGBkYW1vc192YV9jb2xsYXBzZWAgYW5kIGBkYW1vc192YV9zcGxpdGAgYXJlIGluZGVlZCBzdGF0aWMsIGJvdGggZm91bmQgd2l0aGluIGBtbS9kYW1vbi92YWRkci5jYC4gYGRhbW9uX2NvbGxhcHNlX2ZvbGlvX3JhbmdlYCBpcyBleHBvcnRlZCwgbG9jYXRlZCBpbiBgbW0va2h1Z2VwYWdlZC5jYC4gQW5kIGB0YXJnZXRfb3JkZXJfc3RvcmVgIGlzIGFsc28gc3RhdGljLCB3aXRoaW4gYG1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuY2AuIEkgd2lsbCBiZSBpbmNsdWRpbmcgdGhlc2UgaW4gbXkgbGlzdCBvZiBmb2N1cyBzeW1ib2xzLgoKTm93LCBsZXQmIzM5O3Mgc3RlcCBiYWNrIGFuZCBjb25zaWRlciB0aGUgKndoeSouIFRoaXMgcGF0Y2ggc2VlbXMgdG8gYmUgaW50cm9kdWNpbmcgYSBgREFNT1NfU1BMSVRgIGFjdGlvbiBhbmQgZW5oYW5jaW5nIGBEQU1PU19DT0xMQVBTRWAgd2l0aCBhIGB0YXJnZXRfb3JkZXJgIHBhcmFtZXRlci4gVGhhdCYjMzk7cyBhIGRlZmluaXRlIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBEQU1PTiBzdWJzeXN0ZW0uIENydWNpYWxseSwgaXQmIzM5O3MgbW9kaWZ5aW5nIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIGl0c2VsZiB0byBhbGxvdyBmb3IgZm9saW8gc3BsaXR0aW5nIGFuZCBjb2xsYXBzaW5nIGFjY29yZGluZyB0byBEQU1PTiBzY2hlbWVzLiBUaGlzIGRpcmVjdGx5IGltcGFjdHMgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gREFNT04gYW5kIHRoZSBrZXJuZWwmIzM5O3MgbWVtb3J5IG1hbmFnZW1lbnQuIFRoZSBrZXkgaXMgdGhhdCB0aGVzZSBuZXcgZmVhdHVyZXMgYXJlIGFjY2Vzc2libGUgdmlhIHRoZSBEQU1PTiBzeXNmcyBpbnRlcmZhY2UsIG1ha2luZyB0aGVtIHJlYWNoYWJsZSBhbmQgdGVzdGFibGUuCgpBbmQgeWVzLCB0aGUgcGF0Y2ggaXMgbWFya2VkIGFzIGBXb3J0aEZ1enppbmdgLiBUaGUgZmFjdCB0aGF0IGl0JiMzOTtzIGFsdGVyaW5nIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgYW5kIGV4cG9zaW5nIHRob3NlIGNoYW5nZXMgdmlhIHN5c2ZzIGlzIHRoZSBjcml0aWNhbCBmYWN0b3IuIFRoaXMgaXMgYW4gZXhjZWxsZW50IGNhbmRpZGF0ZSBmb3IgZnV6emluZyB0byB1bmNvdmVyIHBvdGVudGlhbCBpc3N1ZXMsIGFuZCBJIG5lZWQgdG8gZm9ybXVsYXRlIGEgZnV6emluZyBzdHJhdGVneS4gT2theSwgSSYjMzk7bSByZWFkeSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDE3OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtEQU1PTl9TWVNGUyYjMzQ7LAogICAgJiMzNDtEQU1PTl9WQUREUiYjMzQ7LAogICAgJiMzNDtUUkFOU1BBUkVOVF9IVUdFUEFHRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RhbW9zX3ZhX2NvbGxhcHNlJiMzNDssCiAgICAmIzM0O2RhbW9zX3ZhX3NwbGl0JiMzNDssCiAgICAmIzM0O2RhbW9uX2NvbGxhcHNlX2ZvbGlvX3JhbmdlJiMzNDssCiAgICAmIzM0O3RhcmdldF9vcmRlcl9zdG9yZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgREFNT04gc3Vic3lzdGVtIGJ5IGFkZGluZyBhIG5ldyBEQU1PU19TUExJVCBhY3Rpb24gYW5kIGV4dGVuZGluZyBEQU1PU19DT0xMQVBTRSB3aXRoIGEgdGFyZ2V0X29yZGVyIHBhcmFtZXRlci4gSXQgbW9kaWZpZXMgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyB0byBzcGxpdCBhbmQgY29sbGFwc2UgZm9saW9zIGJhc2VkIG9uIERBTU9OIHNjaGVtZXMuIFRoZXNlIGZlYXR1cmVzIGFyZSBleHBvc2VkIHRvIHVzZXJzcGFjZSB2aWEgdGhlIERBTU9OIHN5c2ZzIGludGVyZmFjZSwgbWFraW5nIHRoZW0gcmVhY2hhYmxlIGFuZCB0ZXN0YWJsZSBieSBhIGZ1enplci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7REFNT05fU1lTRlMmIzM0OywKICAgICYjMzQ7REFNT05fVkFERFImIzM0OywKICAgICYjMzQ7VFJBTlNQQVJFTlRfSFVHRVBBR0UmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkYW1vc192YV9jb2xsYXBzZSYjMzQ7LAogICAgJiMzNDtkYW1vc192YV9zcGxpdCYjMzQ7LAogICAgJiMzNDtkYW1vbl9jb2xsYXBzZV9mb2xpb19yYW5nZSYjMzQ7LAogICAgJiMzNDt0YXJnZXRfb3JkZXJfc3RvcmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIERBTU9OIHN1YnN5c3RlbSBieSBhZGRpbmcgYSBuZXcgREFNT1NfU1BMSVQgYWN0aW9uIGFuZCBleHRlbmRpbmcgREFNT1NfQ09MTEFQU0Ugd2l0aCBhIHRhcmdldF9vcmRlciBwYXJhbWV0ZXIuIEl0IG1vZGlmaWVzIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgdG8gc3BsaXQgYW5kIGNvbGxhcHNlIGZvbGlvcyBiYXNlZCBvbiBEQU1PTiBzY2hlbWVzLiBUaGVzZSBmZWF0dXJlcyBhcmUgZXhwb3NlZCB0byB1c2Vyc3BhY2UgdmlhIHRoZSBEQU1PTiBzeXNmcyBpbnRlcmZhY2UsIG1ha2luZyB0aGVtIHJlYWNoYWJsZSBhbmQgdGVzdGFibGUgYnkgYSBmdXp6ZXIuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxNzo1NzowMC4zMjk4OTIwNTdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDYzODM3MDAxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEQU1PTl9TWVNGU1wiLFxuICAgIFwiREFNT05fVkFERFJcIixcbiAgICBcIlRSQU5TUEFSRU5UX0hVR0VQQUdFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZGFtb3NfdmFfY29sbGFwc2VcIixcbiAgICBcImRhbW9zX3ZhX3NwbGl0XCIsXG4gICAgXCJkYW1vbl9jb2xsYXBzZV9mb2xpb19yYW5nZVwiLFxuICAgIFwidGFyZ2V0X29yZGVyX3N0b3JlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIERBTU9OIHN1YnN5c3RlbSBieSBhZGRpbmcgYSBuZXcgREFNT1NfU1BMSVQgYWN0aW9uIGFuZCBleHRlbmRpbmcgREFNT1NfQ09MTEFQU0Ugd2l0aCBhIHRhcmdldF9vcmRlciBwYXJhbWV0ZXIuIEl0IG1vZGlmaWVzIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgdG8gc3BsaXQgYW5kIGNvbGxhcHNlIGZvbGlvcyBiYXNlZCBvbiBEQU1PTiBzY2hlbWVzLiBUaGVzZSBmZWF0dXJlcyBhcmUgZXhwb3NlZCB0byB1c2Vyc3BhY2UgdmlhIHRoZSBEQU1PTiBzeXNmcyBpbnRlcmZhY2UsIG1ha2luZyB0aGVtIHJlYWNoYWJsZSBhbmQgdGVzdGFibGUgYnkgYSBmdXp6ZXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDE3OjU3OjAwLjMyOTg5ODA2N1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY1MTA1MDk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYjE3MmIwZGVkYjU0MzJhNWUyMDA5ODVkZDQxYWUzMGFkYTg4NTNkNlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEp1bCAxIDE3OjU2OjU5IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZGFtb24uaCBiL2luY2x1ZGUvbGludXgvZGFtb24uaFxcbmluZGV4IDZmN2VkYjM1OTBlZjk3Li4zMGNmNGFmYjIxMmNmYiAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L2RhbW9uLmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L2RhbW9uLmhcXG5AQCAtMTIxLDYgKzEyMSw3IEBAIHN0cnVjdCBkYW1vbl90YXJnZXQge1xcbiAgKiBAREFNT1NfSFVHRVBBR0U6XFx0Q2FsbCBgYG1hZHZpc2UoKWBgIGZvciB0aGUgcmVnaW9uIHdpdGggTUFEVl9IVUdFUEFHRS5cXG4gICogQERBTU9TX05PSFVHRVBBR0U6XFx0Q2FsbCBgYG1hZHZpc2UoKWBgIGZvciB0aGUgcmVnaW9uIHdpdGggTUFEVl9OT0hVR0VQQUdFLlxcbiAgKiBAREFNT1NfQ09MTEFQU0U6XFx0Q2FsbCBgYG1hZHZpc2UoKWBgIGZvciB0aGUgcmVnaW9uIHdpdGggTUFEVl9DT0xMQVBTRS5cXG4rICogQERBTU9TX1NQTElUOlxcdFNwbGl0IGxhcmdlIGZvbGlvcyB0byB0aGUgdGFyZ2V0IG1USFAgb3JkZXIuXFxuICAqIEBEQU1PU19MUlVfUFJJTzpcXHRQcmlvcml0aXplIHRoZSByZWdpb24gb24gaXRzIExSVSBsaXN0cy5cXG4gICogQERBTU9TX0xSVV9ERVBSSU86XFx0RGVwcmlvcml0aXplIHRoZSByZWdpb24gb24gaXRzIExSVSBsaXN0cy5cXG4gICogQERBTU9TX01JR1JBVEVfSE9UOiAgTWlncmF0ZSB0aGUgcmVnaW9ucyBwcmlvcml0aXppbmcgd2FybWVyIHJlZ2lvbnMuXFxuQEAgLTE0MSw2ICsxNDIsNyBAQCBlbnVtIGRhbW9zX2FjdGlvbiB7XFxuIFxcdERBTU9TX0hVR0VQQUdFLFxcbiBcXHREQU1PU19OT0hVR0VQQUdFLFxcbiBcXHREQU1PU19DT0xMQVBTRSxcXG4rXFx0REFNT1NfU1BMSVQsXFxuIFxcdERBTU9TX0xSVV9QUklPLFxcbiBcXHREQU1PU19MUlVfREVQUklPLFxcbiBcXHREQU1PU19NSUdSQVRFX0hPVCxcXG5AQCAtNTcyLDYgKzU3NCwxNCBAQCBzdHJ1Y3QgZGFtb3NfbWlncmF0ZV9kZXN0cyB7XFxuIHN0cnVjdCBkYW1vcyB7XFxuIFxcdHN0cnVjdCBkYW1vc19hY2Nlc3NfcGF0dGVybiBwYXR0ZXJuO1xcbiBcXHRlbnVtIGRhbW9zX2FjdGlvbiBhY3Rpb247XFxuK1xcdC8qXFxuK1xcdCAqIEB0YXJnZXRfb3JkZXI6IHRhcmdldCBtVEhQIG9yZGVyIGZvciBEQU1PU19DT0xMQVBTRSBhbmRcXG4rXFx0ICogREFNT1NfU1BMSVQuICBGb3IgQ09MTEFQU0UsIDAgbWVhbnMgUE1EIG9yZGVyIGRlZmF1bHQsXFxuK1xcdCAqIHZhbGlkIHZhbHVlczogMCwgMi4uSFBBR0VfUE1EX09SREVSLiAgRm9yIFNQTElULFxcbitcXHQgKiB2YWxpZCB2YWx1ZXM6IDIuLkhQQUdFX1BNRF9PUkRFUi0xOyAwIGFuZCBIUEFHRV9QTURfT1JERVJcXG4rXFx0ICogYXJlIHJlamVjdGVkIGF0IHNjaGVtZSBjcmVhdGlvbiB0aW1lIChkZWZhdWx0aW5nIHRvIDIpLlxcbitcXHQgKi9cXG4rXFx0dW5zaWduZWQgaW50IHRhcmdldF9vcmRlcjtcXG4gXFx0dW5zaWduZWQgbG9uZyBhcHBseV9pbnRlcnZhbF91cztcXG4gLyogcHJpdmF0ZTogaW50ZXJuYWwgdXNlIG9ubHkgKi9cXG4gXFx0LypcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9raHVnZXBhZ2VkLmggYi9pbmNsdWRlL2xpbnV4L2todWdlcGFnZWQuaFxcbmluZGV4IGQ3YTkwNTNmZjRmZWQxLi42ZmI4YTY4NTc3OTAzYSAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L2todWdlcGFnZWQuaFxcbisrKyBiL2luY2x1ZGUvbGludXgva2h1Z2VwYWdlZC5oXFxuQEAgLTIwLDYgKzIwLDkgQEAgZXh0ZXJuIGJvb2wgY3VycmVudF9pc19raHVnZXBhZ2VkKHZvaWQpO1xcbiB2b2lkIGNvbGxhcHNlX3B0ZV9tYXBwZWRfdGhwKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIGFkZHIsXFxuIFxcdFxcdGJvb2wgaW5zdGFsbF9wbWQpO1xcbiBcXG4raW50IGRhbW9uX2NvbGxhcHNlX2ZvbGlvX3JhbmdlKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIHN0YXJ0X2FkZHIsXFxuK1xcdFxcdFxcdCAgICAgICB1bnNpZ25lZCBpbnQgdGFyZ2V0X29yZGVyKTtcXG4rXFxuIHN0YXRpYyBpbmxpbmUgdm9pZCBraHVnZXBhZ2VkX2Zvcmsoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHN0cnVjdCBtbV9zdHJ1Y3QgKm9sZG1tKVxcbiB7XFxuIFxcdGlmIChtbV9mbGFnc190ZXN0KE1NRl9WTV9IVUdFUEFHRSwgb2xkbW0pKVxcbmRpZmYgLS1naXQgYS9tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMgYi9tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmNcXG5pbmRleCAzMjljZmQwYmJlOWYzMi4uNTQ3MjUyZmM4YTIwYWQgMTAwNjQ0XFxuLS0tIGEvbW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jXFxuKysrIGIvbW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jXFxuQEAgLTYsNyArNiw5IEBAXFxuICAqL1xcbiBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NsYWIuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L21tLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9udW1hLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9odWdlX21tLmhcXHUwMDNlXFxuIFxcbiAjaW5jbHVkZSBcXFwic3lzZnMtY29tbW9uLmhcXFwiXFxuIFxcbkBAIC0yMjU3LDYgKzIyNTksNyBAQCBzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lIHtcXG4gXFx0c3RydWN0IGRhbW9uX3N5c2ZzX3N0YXRzICpzdGF0cztcXG4gXFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25zICp0cmllZF9yZWdpb25zO1xcbiBcXHRpbnQgdGFyZ2V0X25pZDtcXG4rXFx0dW5zaWduZWQgaW50IHRhcmdldF9vcmRlcjtcXG4gXFx0c3RydWN0IGRhbW9zX3N5c2ZzX2Rlc3RzICpkZXN0cztcXG4gfTtcXG4gXFxuQEAgLTIyOTAsNiArMjI5MywxMCBAQCBzdGF0aWMgc3RydWN0IGRhbW9zX3N5c2ZzX2FjdGlvbl9uYW1lIGRhbW9zX3N5c2ZzX2FjdGlvbl9uYW1lc1tdID0ge1xcbiBcXHRcXHQuYWN0aW9uID0gREFNT1NfQ09MTEFQU0UsXFxuIFxcdFxcdC5uYW1lID0gXFxcImNvbGxhcHNlXFxcIixcXG4gXFx0fSxcXG4rXFx0e1xcbitcXHRcXHQuYWN0aW9uID0gREFNT1NfU1BMSVQsXFxuK1xcdFxcdC5uYW1lID0gXFxcInNwbGl0XFxcIixcXG4rXFx0fSxcXG4gXFx0e1xcbiBcXHRcXHQuYWN0aW9uID0gREFNT1NfTFJVX1BSSU8sXFxuIFxcdFxcdC5uYW1lID0gXFxcImxydV9wcmlvXFxcIixcXG5AQCAtMjY0Miw2ICsyNjQ5LDM0IEBAIHN0YXRpYyBzc2l6ZV90IHRhcmdldF9uaWRfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosXFxuIFxcdHJldHVybiBlcnIgPyBlcnIgOiBjb3VudDtcXG4gfVxcbiBcXG4rc3RhdGljIHNzaXplX3QgdGFyZ2V0X29yZGVyX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosXFxuK1xcdFxcdHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKVxcbit7XFxuK1xcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWUgKnNjaGVtZSA9IGNvbnRhaW5lcl9vZihrb2JqLFxcbitcXHRcXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lLCBrb2JqKTtcXG4rXFxuK1xcdHJldHVybiBzeXNmc19lbWl0KGJ1ZiwgXFxcIiV1XFxcXG5cXFwiLCBzY2hlbWUtXFx1MDAzZXRhcmdldF9vcmRlcik7XFxuK31cXG4rXFxuK3N0YXRpYyBzc2l6ZV90IHRhcmdldF9vcmRlcl9zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4rXFx0XFx0c3RydWN0IGtvYmpfYXR0cmlidXRlICphdHRyLCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudClcXG4re1xcbitcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lICpzY2hlbWUgPSBjb250YWluZXJfb2Yoa29iaixcXG4rXFx0XFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZSwga29iaik7XFxuK1xcdHVuc2lnbmVkIGludCB2YWw7XFxuK1xcdGludCBlcnI7XFxuK1xcbitcXHRlcnIgPSBrc3RydG91aW50KGJ1ZiwgMCwgXFx1MDAyNnZhbCk7XFxuK1xcdGlmIChlcnIpXFxuK1xcdFxcdHJldHVybiBlcnI7XFxuK1xcbitcXHRpZiAodmFsICE9IDAgXFx1MDAyNlxcdTAwMjYgKHZhbCBcXHUwMDNjIDIgfHwgdmFsIFxcdTAwM2UgSFBBR0VfUE1EX09SREVSKSlcXG4rXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcbitcXHRzY2hlbWUtXFx1MDAzZXRhcmdldF9vcmRlciA9IHZhbDtcXG4rXFx0cmV0dXJuIGNvdW50O1xcbit9XFxuK1xcbiBzdGF0aWMgdm9pZCBkYW1vbl9zeXNmc19zY2hlbWVfcmVsZWFzZShzdHJ1Y3Qga29iamVjdCAqa29iailcXG4ge1xcbiBcXHRrZnJlZShjb250YWluZXJfb2Yoa29iaiwgc3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZSwga29iaikpO1xcbkBAIC0yNjU2LDEwICsyNjkxLDE0IEBAIHN0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgZGFtb25fc3lzZnNfc2NoZW1lX2FwcGx5X2ludGVydmFsX3VzX2F0dHIgPVxcbiBzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3NjaGVtZV90YXJnZXRfbmlkX2F0dHIgPVxcbiBcXHRcXHRfX0FUVFJfUldfTU9ERSh0YXJnZXRfbmlkLCAwNjAwKTtcXG4gXFxuK3N0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgZGFtb25fc3lzZnNfc2NoZW1lX3RhcmdldF9vcmRlcl9hdHRyID1cXG4rXFx0XFx0X19BVFRSX1JXX01PREUodGFyZ2V0X29yZGVyLCAwNjAwKTtcXG4rXFxuIHN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICpkYW1vbl9zeXNmc19zY2hlbWVfYXR0cnNbXSA9IHtcXG4gXFx0XFx1MDAyNmRhbW9uX3N5c2ZzX3NjaGVtZV9hY3Rpb25fYXR0ci5hdHRyLFxcbiBcXHRcXHUwMDI2ZGFtb25fc3lzZnNfc2NoZW1lX2FwcGx5X2ludGVydmFsX3VzX2F0dHIuYXR0cixcXG4gXFx0XFx1MDAyNmRhbW9uX3N5c2ZzX3NjaGVtZV90YXJnZXRfbmlkX2F0dHIuYXR0cixcXG4rXFx0XFx1MDAyNmRhbW9uX3N5c2ZzX3NjaGVtZV90YXJnZXRfb3JkZXJfYXR0ci5hdHRyLFxcbiBcXHROVUxMLFxcbiB9O1xcbiBBVFRSSUJVVEVfR1JPVVBTKGRhbW9uX3N5c2ZzX3NjaGVtZSk7XFxuQEAgLTMwMDUsNiArMzA0NCwyNCBAQCBzdGF0aWMgc3RydWN0IGRhbW9zICpkYW1vbl9zeXNmc19ta19zY2hlbWUoXFxuIFxcdGlmICghc2NoZW1lKVxcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4gXFxuK1xcdGlmIChzeXNmc19zY2hlbWUtXFx1MDAzZWFjdGlvbiA9PSBEQU1PU19DT0xMQVBTRSBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgc3lzZnNfc2NoZW1lLVxcdTAwM2V0YXJnZXRfb3JkZXIgIT0gMCBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgc3lzZnNfc2NoZW1lLVxcdTAwM2V0YXJnZXRfb3JkZXIgIT0gSFBBR0VfUE1EX09SREVSKSB7XFxuK1xcdFxcdHByX3dhcm4oXFxcIkRBTU9OIGNvbGxhcHNlOiB0YXJnZXRfb3JkZXIgJXUgbm90IHN1cHBvcnRlZCwgb25seSBQTUQgb3JkZXIgKCV1KSBpcyBhdmFpbGFibGUuIFVzZSAwIG9yICV1LlxcXFxuXFxcIixcXG4rXFx0XFx0XFx0c3lzZnNfc2NoZW1lLVxcdTAwM2V0YXJnZXRfb3JkZXIsXFxuK1xcdFxcdFxcdEhQQUdFX1BNRF9PUkRFUiwgSFBBR0VfUE1EX09SREVSKTtcXG4rXFx0XFx0c3lzZnNfc2NoZW1lLVxcdTAwM2V0YXJnZXRfb3JkZXIgPSAwO1xcbitcXHR9XFxuK1xcdGlmIChzeXNmc19zY2hlbWUtXFx1MDAzZWFjdGlvbiA9PSBEQU1PU19TUExJVCBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgKHN5c2ZzX3NjaGVtZS1cXHUwMDNldGFyZ2V0X29yZGVyID09IDAgfHxcXG4rXFx0ICAgICBzeXNmc19zY2hlbWUtXFx1MDAzZXRhcmdldF9vcmRlciBcXHUwMDNlPSBIUEFHRV9QTURfT1JERVIpKSB7XFxuK1xcdFxcdHByX3dhcm4oXFxcIkRBTU9OIHNwbGl0OiB0YXJnZXRfb3JkZXIgJXUgaW52YWxpZCwgbmVlZCAyLi4ldS4gRGVmYXVsdGluZyB0byAyLlxcXFxuXFxcIixcXG4rXFx0XFx0XFx0c3lzZnNfc2NoZW1lLVxcdTAwM2V0YXJnZXRfb3JkZXIsXFxuK1xcdFxcdFxcdEhQQUdFX1BNRF9PUkRFUiAtIDEpO1xcbitcXHRcXHRzeXNmc19zY2hlbWUtXFx1MDAzZXRhcmdldF9vcmRlciA9IDI7XFxuK1xcdH1cXG4rXFx0c2NoZW1lLVxcdTAwM2V0YXJnZXRfb3JkZXIgPSBzeXNmc19zY2hlbWUtXFx1MDAzZXRhcmdldF9vcmRlcjtcXG4rXFxuIFxcdGVyciA9IGRhbW9zX3N5c2ZzX2FkZF9xdW90YV9zY29yZShzeXNmc19xdW90YXMtXFx1MDAzZWdvYWxzLCBcXHUwMDI2c2NoZW1lLVxcdTAwM2VxdW90YSk7XFxuIFxcdGlmIChlcnIpIHtcXG4gXFx0XFx0ZGFtb25fZGVzdHJveV9zY2hlbWUoc2NoZW1lKTtcXG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vdmFkZHIuYyBiL21tL2RhbW9uL3ZhZGRyLmNcXG5pbmRleCBkMjcxNDc2MDM1NjQxYi4uM2YyMDYxYjI5ZWQ4NDIgMTAwNjQ0XFxuLS0tIGEvbW0vZGFtb24vdmFkZHIuY1xcbisrKyBiL21tL2RhbW9uL3ZhZGRyLmNcXG5AQCAtMTQsNiArMTQsNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvcGFnZV9pZGxlLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9wYWdld2Fsay5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvc2NoZWQvbW0uaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2todWdlcGFnZWQuaFxcdTAwM2VcXG4gXFxuICNpbmNsdWRlIFxcXCIuLi9pbnRlcm5hbC5oXFxcIlxcbiAjaW5jbHVkZSBcXFwib3BzLWNvbW1vbi5oXFxcIlxcbkBAIC04OTksNiArOTAwLDEwNSBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vc192YV9zdGF0KHN0cnVjdCBkYW1vbl90YXJnZXQgKnRhcmdldCxcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuK3N0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9zX3ZhX2NvbGxhcHNlKHN0cnVjdCBkYW1vbl90YXJnZXQgKnRhcmdldCxcXG4rXFx0XFx0c3RydWN0IGRhbW9uX3JlZ2lvbiAqciwgc3RydWN0IGRhbW9zICpzLFxcbitcXHRcXHR1bnNpZ25lZCBsb25nICpzel9maWx0ZXJfcGFzc2VkKVxcbit7XFxuK1xcdHVuc2lnbmVkIGxvbmcgYWRkciwgZW5kLCBjaHVua19zejtcXG4rXFx0dW5zaWduZWQgaW50IHRhcmdldF9vcmRlciA9IHMtXFx1MDAzZXRhcmdldF9vcmRlcjtcXG4rXFx0dW5zaWduZWQgbG9uZyBhcHBsaWVkID0gMDtcXG4rXFx0c3RydWN0IG1tX3N0cnVjdCAqbW07XFxuK1xcdGludCByZXQ7XFxuK1xcbitcXHRpZiAodGFyZ2V0X29yZGVyIFxcdTAwM2MgMiB8fCB0YXJnZXRfb3JkZXIgXFx1MDAzZSBIUEFHRV9QTURfT1JERVIpXFxuK1xcdFxcdHJldHVybiAwO1xcbitcXG4rXFx0Y2h1bmtfc3ogPSBQQUdFX1NJWkUgXFx1MDAzY1xcdTAwM2MgdGFyZ2V0X29yZGVyO1xcbitcXHRhZGRyID0gQUxJR05fRE9XTihyLVxcdTAwM2Vhci5zdGFydCwgY2h1bmtfc3opO1xcbitcXHRlbmQgPSBBTElHTihyLVxcdTAwM2Vhci5lbmQsIGNodW5rX3N6KTtcXG4rXFxuK1xcdG1tID0gZGFtb25fZ2V0X21tKHRhcmdldCk7XFxuK1xcdGlmICghbW0pXFxuK1xcdFxcdHJldHVybiAwO1xcbitcXG4rXFx0d2hpbGUgKGFkZHIgXFx1MDAzYyBlbmQpIHtcXG4rXFx0XFx0cmV0ID0gZGFtb25fY29sbGFwc2VfZm9saW9fcmFuZ2UobW0sIGFkZHIsIHRhcmdldF9vcmRlcik7XFxuK1xcdFxcdGlmICghcmV0KVxcbitcXHRcXHRcXHRhcHBsaWVkICs9IGNodW5rX3N6O1xcbitcXHRcXHQqc3pfZmlsdGVyX3Bhc3NlZCArPSBjaHVua19zejtcXG4rXFx0XFx0YWRkciArPSBjaHVua19zejtcXG4rXFx0XFx0Y29uZF9yZXNjaGVkKCk7XFxuK1xcdH1cXG4rXFxuK1xcdG1tcHV0KG1tKTtcXG4rXFx0cmV0dXJuIGFwcGxpZWQ7XFxuK31cXG4rXFxuK3N0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9zX3ZhX3NwbGl0KHN0cnVjdCBkYW1vbl90YXJnZXQgKnRhcmdldCxcXG4rXFx0XFx0c3RydWN0IGRhbW9uX3JlZ2lvbiAqciwgc3RydWN0IGRhbW9zICpzLFxcbitcXHRcXHR1bnNpZ25lZCBsb25nICpzel9maWx0ZXJfcGFzc2VkKVxcbit7XFxuK1xcdHVuc2lnbmVkIGxvbmcgYWRkciwgZW5kLCBjaHVua19zejtcXG4rXFx0dW5zaWduZWQgaW50IHRhcmdldF9vcmRlciA9IHMtXFx1MDAzZXRhcmdldF9vcmRlcjtcXG4rXFx0dW5zaWduZWQgbG9uZyBhcHBsaWVkID0gMDtcXG4rXFx0c3RydWN0IG1tX3N0cnVjdCAqbW07XFxuK1xcdHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hO1xcbitcXHRzdHJ1Y3QgZm9saW8gKmZvbGlvO1xcbitcXHRzdHJ1Y3QgZm9saW9fd2FsayBmdztcXG4rXFxuK1xcdG1tID0gZGFtb25fZ2V0X21tKHRhcmdldCk7XFxuK1xcdGlmICghbW0pXFxuK1xcdFxcdHJldHVybiAwO1xcbitcXG4rXFx0Y2h1bmtfc3ogPSBQQUdFX1NJWkUgXFx1MDAzY1xcdTAwM2MgSFBBR0VfUE1EX09SREVSO1xcbitcXHRhZGRyID0gQUxJR05fRE9XTihyLVxcdTAwM2Vhci5zdGFydCwgY2h1bmtfc3opO1xcbitcXHRlbmQgPSBBTElHTihyLVxcdTAwM2Vhci5lbmQsIGNodW5rX3N6KTtcXG4rXFxuK1xcdHdoaWxlIChhZGRyIFxcdTAwM2MgZW5kKSB7XFxuK1xcdFxcdG1tYXBfcmVhZF9sb2NrKG1tKTtcXG4rXFx0XFx0dm1hID0gZmluZF92bWEobW0sIGFkZHIpO1xcbitcXHRcXHQvKlxcbitcXHRcXHQgKiBzcGxpdF9mb2xpb190b19vcmRlcigpIHN1cHBvcnRzIGJvdGggYW5vbiBhbmQgc2htZW1cXG4rXFx0XFx0ICogZm9saW9zLCBzbyB3ZSBhY2NlcHQgYW55IFZNQSB0aGF0IGhhcyBhIGZvbGlvIGF0IEBhZGRyLlxcbitcXHRcXHQgKiBUaGlzIGNvdmVycyBpbXBvcnRhbnQgdXNlIGNhc2VzIGxpa2UgdG1wZnMgVEhQLWJhY2tlZFxcbitcXHRcXHQgKiBLVk0gZ3Vlc3QgbWVtb3J5IHdoZXJlIGNvbGQgYW5kIGhvdCBwYWdlcyBhcmUgYnVuZGxlZFxcbitcXHRcXHQgKiB0b2dldGhlciBpbiBhIHNpbmdsZSBQTUQgVEhQLlxcbitcXHRcXHQgKi9cXG4rXFx0XFx0aWYgKCF2bWEgfHwgYWRkciBcXHUwMDNjIHZtYS1cXHUwMDNldm1fc3RhcnQpXFxuK1xcdFxcdFxcdGdvdG8gdW5sb2NrO1xcbitcXG4rXFx0XFx0Zm9saW8gPSBmb2xpb193YWxrX3N0YXJ0KFxcdTAwMjZmdywgdm1hLCBhZGRyLCAwKTtcXG4rXFx0XFx0aWYgKCFmb2xpbylcXG4rXFx0XFx0XFx0Z290byB1bmxvY2s7XFxuK1xcbitcXHRcXHRpZiAoZm9saW9fb3JkZXIoZm9saW8pIFxcdTAwM2UgdGFyZ2V0X29yZGVyKSB7XFxuK1xcdFxcdFxcdGlmICghZm9saW9fdHJ5bG9jayhmb2xpbykpIHtcXG4rXFx0XFx0XFx0XFx0Zm9saW9fd2Fsa19lbmQoXFx1MDAyNmZ3LCB2bWEpO1xcbitcXHRcXHRcXHRcXHRnb3RvIHVubG9jaztcXG4rXFx0XFx0XFx0fVxcbitcXHRcXHRcXHRmb2xpb19nZXQoZm9saW8pO1xcbitcXHRcXHRcXHRmb2xpb193YWxrX2VuZChcXHUwMDI2ZncsIHZtYSk7XFxuK1xcbitcXHRcXHRcXHRpZiAoIXNwbGl0X2ZvbGlvX3RvX29yZGVyKGZvbGlvLCB0YXJnZXRfb3JkZXIpKVxcbitcXHRcXHRcXHRcXHRhcHBsaWVkICs9IGNodW5rX3N6O1xcbitcXG4rXFx0XFx0XFx0Zm9saW9fdW5sb2NrKGZvbGlvKTtcXG4rXFx0XFx0XFx0Zm9saW9fcHV0KGZvbGlvKTtcXG4rXFx0XFx0fSBlbHNlIHtcXG4rXFx0XFx0XFx0Zm9saW9fd2Fsa19lbmQoXFx1MDAyNmZ3LCB2bWEpO1xcbitcXHRcXHR9XFxuK1xcbit1bmxvY2s6XFxuK1xcdFxcdCpzel9maWx0ZXJfcGFzc2VkICs9IGNodW5rX3N6O1xcbitcXHRcXHRhZGRyICs9IGNodW5rX3N6O1xcbitcXHRcXHRtbWFwX3JlYWRfdW5sb2NrKG1tKTtcXG4rXFx0XFx0Y29uZF9yZXNjaGVkKCk7XFxuK1xcdH1cXG4rXFxuK1xcdG1tcHV0KG1tKTtcXG4rXFx0cmV0dXJuIGFwcGxpZWQ7XFxuK31cXG4rXFxuIHN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9uX3ZhX2FwcGx5X3NjaGVtZShzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsXFxuIFxcdFxcdHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsIHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXFxuIFxcdFxcdHN0cnVjdCBkYW1vcyAqc2NoZW1lLCB1bnNpZ25lZCBsb25nICpzel9maWx0ZXJfcGFzc2VkKVxcbkBAIC05MjIsNiArMTAyMiw5IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9uX3ZhX2FwcGx5X3NjaGVtZShzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsXFxuIFxcdFxcdG1hZHZfYWN0aW9uID0gTUFEVl9OT0hVR0VQQUdFO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBEQU1PU19DT0xMQVBTRTpcXG4rXFx0XFx0aWYgKHNjaGVtZS1cXHUwMDNldGFyZ2V0X29yZGVyKVxcbitcXHRcXHRcXHRyZXR1cm4gZGFtb3NfdmFfY29sbGFwc2UodCwgciwgc2NoZW1lLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgc3pfZmlsdGVyX3Bhc3NlZCk7XFxuIFxcdFxcdG1hZHZfYWN0aW9uID0gTUFEVl9DT0xMQVBTRTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgREFNT1NfTUlHUkFURV9IT1Q6XFxuQEAgLTkyOSw2ICsxMDMyLDkgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb25fdmFfYXBwbHlfc2NoZW1lKHN0cnVjdCBkYW1vbl9jdHggKmN0eCxcXG4gXFx0XFx0cmV0dXJuIGRhbW9zX3ZhX21pZ3JhdGUodCwgciwgc2NoZW1lLCBzel9maWx0ZXJfcGFzc2VkKTtcXG4gXFx0Y2FzZSBEQU1PU19TVEFUOlxcbiBcXHRcXHRyZXR1cm4gZGFtb3NfdmFfc3RhdCh0LCByLCBzY2hlbWUsIHN6X2ZpbHRlcl9wYXNzZWQpO1xcbitcXHRjYXNlIERBTU9TX1NQTElUOlxcbitcXHRcXHRyZXR1cm4gZGFtb3NfdmFfc3BsaXQodCwgciwgc2NoZW1lLFxcbitcXHRcXHRcXHRcXHRcXHQgIHN6X2ZpbHRlcl9wYXNzZWQpO1xcbiBcXHRkZWZhdWx0OlxcbiBcXHRcXHQvKlxcbiBcXHRcXHQgKiBEQU1PUyBhY3Rpb25zIHRoYXQgYXJlIG5vdCB5ZXQgc3VwcG9ydGVkIGJ5ICd2YWRkcicuXFxuZGlmZiAtLWdpdCBhL21tL2todWdlcGFnZWQuYyBiL21tL2todWdlcGFnZWQuY1xcbmluZGV4IDYxN2JjYTc2ZGI0OWI2Li4wMzg3ODQxYmEyZTdkOCAxMDA2NDRcXG4tLS0gYS9tbS9raHVnZXBhZ2VkLmNcXG4rKysgYi9tbS9raHVnZXBhZ2VkLmNcXG5AQCAtMzI3MiwzICszMjcyLDQyIEBAIGludCBtYWR2aXNlX2NvbGxhcHNlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIHN0YXJ0LFxcbiBcXHRyZXR1cm4gdGhwcyA9PSAoKGhlbmQgLSBoc3RhcnQpIFxcdTAwM2VcXHUwMDNlIEhQQUdFX1BNRF9TSElGVCkgPyAwXFxuIFxcdFxcdFxcdDogbWFkdmlzZV9jb2xsYXBzZV9lcnJubyhsYXN0X2ZhaWwpO1xcbiB9XFxuK1xcbisvKipcXG4rICogZGFtb25fY29sbGFwc2VfZm9saW9fcmFuZ2UoKSAtIENvbGxhcHNlIGJhc2UgcGFnZXMgaW4gcmFuZ2UgaW50byBhIFRIUFxcbisgKiBAbW06ICAgICAgICAgbW1fc3RydWN0IG9mIHRoZSB0YXJnZXQgcHJvY2Vzc1xcbisgKiBAc3RhcnRfYWRkcjogc3RhcnQgYWRkcmVzcyAobXVzdCBiZSBvcmRlci1hbGlnbmVkKVxcbisgKiBAdGFyZ2V0X29yZGVyOiBwYWdlIG9yZGVyIG9mIHRoZSBjb2xsYXBzZSByZXN1bHQgKGN1cnJlbnRseSBvbmx5XFxuKyAqICAgICAgICAgICAgICAgIEhQQUdFX1BNRF9PUkRFUiBpcyBzdXBwb3J0ZWQpXFxuKyAqXFxuKyAqIFRoaW4gd3JhcHBlciBhcm91bmQgY29sbGFwc2VfaHVnZV9wYWdlKCkgZm9yIGV4dGVybmFsIGNhbGxlcnMgc3VjaCBhc1xcbisgKiBEQU1PTi4gIFRoZSBjYWxsZXIgbXVzdCBob2xkIGEgcmVmZXJlbmNlIHRvIEBtbS4gIERvIG5vdCBob2xkIG1tYXBcXG4rICogbG9jazogY29sbGFwc2VfaHVnZV9wYWdlKCkgYWNxdWlyZXMgbW1hcF9yZWFkX2xvY2sgZm9yIHZhbGlkYXRpb24sXFxuKyAqIHJlbGVhc2VzIGl0LCB0aGVuIGFjcXVpcmVzIG1tYXBfd3JpdGVfbG9jayBmb3IgdGhlIGNvbGxhcHNlLiAgSG9sZGluZ1xcbisgKiBhbiBvdXRlciBtbWFwX3JlYWRfbG9jayB3b3VsZCBzZWxmLWRlYWRsb2NrLlxcbisgKlxcbisgKiBSZXR1cm46IDAgb24gc3VjY2VzcywgLUVJTlZBTCBvbiBiYWQgYXJndW1lbnRzLCBuZWdhdGl2ZSBlcnJvciBmcm9tXFxuKyAqICAgICAgICAgbWFkdmlzZV9jb2xsYXBzZV9lcnJubygpIG90aGVyd2lzZS5cXG4rICovXFxuK2ludCBkYW1vbl9jb2xsYXBzZV9mb2xpb19yYW5nZShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBzdGFydF9hZGRyLFxcbitcXHRcXHRcXHQgICAgICAgdW5zaWduZWQgaW50IHRhcmdldF9vcmRlcilcXG4re1xcbitcXHRzdHJ1Y3QgY29sbGFwc2VfY29udHJvbCBjYyA9IHtcXG4rXFx0XFx0LmlzX2todWdlcGFnZWQgPSBmYWxzZSxcXG4rXFx0fTtcXG4rXFx0ZW51bSBzY2FuX3Jlc3VsdCByZXN1bHQ7XFxuK1xcbitcXHRpZiAodGFyZ2V0X29yZGVyICE9IEhQQUdFX1BNRF9PUkRFUikge1xcbitcXHRcXHRwcl93YXJuX29uY2UoXFxcIiVzOiBvbmx5IFBNRCBvcmRlciAoJXUpIGlzIHN1cHBvcnRlZCwgZ290ICV1XFxcXG5cXFwiLFxcbitcXHRcXHRcXHQgICAgIF9fZnVuY19fLCBIUEFHRV9QTURfT1JERVIsIHRhcmdldF9vcmRlcik7XFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHR9XFxuK1xcdGlmIChzdGFydF9hZGRyIFxcdTAwMjYgKChQQUdFX1NJWkUgXFx1MDAzY1xcdTAwM2MgdGFyZ2V0X29yZGVyKSAtIDEpKVxcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFxuK1xcdHJlc3VsdCA9IGNvbGxhcHNlX2h1Z2VfcGFnZShtbSwgc3RhcnRfYWRkciwgMSwgMCwgXFx1MDAyNmNjLCB0YXJnZXRfb3JkZXIpO1xcbitcXHRpZiAocmVzdWx0ID09IFNDQU5fU1VDQ0VFRClcXG4rXFx0XFx0cmV0dXJuIDA7XFxuK1xcdHJldHVybiBtYWR2aXNlX2NvbGxhcHNlX2Vycm5vKHJlc3VsdCk7XFxuK31cXG4rRVhQT1JUX1NZTUJPTF9HUEwoZGFtb25fY29sbGFwc2VfZm9saW9fcmFuZ2UpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxNzo1NzowMC43OTU4Mjk4ODNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwMTcyNDIxMTIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRBTU9OX1NZU0ZTXCIsXG4gICAgXCJEQU1PTl9WQUREUlwiLFxuICAgIFwiVFJBTlNQQVJFTlRfSFVHRVBBR0VcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkYW1vc192YV9jb2xsYXBzZVwiLFxuICAgIFwiZGFtb3NfdmFfc3BsaXRcIixcbiAgICBcImRhbW9uX2NvbGxhcHNlX2ZvbGlvX3JhbmdlXCIsXG4gICAgXCJ0YXJnZXRfb3JkZXJfc3RvcmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgREFNT04gc3Vic3lzdGVtIGJ5IGFkZGluZyBhIG5ldyBEQU1PU19TUExJVCBhY3Rpb24gYW5kIGV4dGVuZGluZyBEQU1PU19DT0xMQVBTRSB3aXRoIGEgdGFyZ2V0X29yZGVyIHBhcmFtZXRlci4gSXQgbW9kaWZpZXMgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyB0byBzcGxpdCBhbmQgY29sbGFwc2UgZm9saW9zIGJhc2VkIG9uIERBTU9OIHNjaGVtZXMuIFRoZXNlIGZlYXR1cmVzIGFyZSBleHBvc2VkIHRvIHVzZXJzcGFjZSB2aWEgdGhlIERBTU9OIHN5c2ZzIGludGVyZmFjZSwgbWFraW5nIHRoZW0gcmVhY2hhYmxlIGFuZCB0ZXN0YWJsZSBieSBhIGZ1enplci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBiMTcyYjBkZWRiNTQzMmE1ZTIwMDk4NWRkNDFhZTMwYWRhODg1M2Q2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMSAxNzo1Njo1OSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZGFtb24uaCBiL2luY2x1ZGUvbGludXgvZGFtb24uaFxuaW5kZXggNmY3ZWRiMzU5MGVmOTcuLjMwY2Y0YWZiMjEyY2ZiIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9kYW1vbi5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L2RhbW9uLmhcbkBAIC0xMjEsNiArMTIxLDcgQEAgc3RydWN0IGRhbW9uX3RhcmdldCB7XG4gICogQERBTU9TX0hVR0VQQUdFOlx0Q2FsbCBgYG1hZHZpc2UoKWBgIGZvciB0aGUgcmVnaW9uIHdpdGggTUFEVl9IVUdFUEFHRS5cbiAgKiBAREFNT1NfTk9IVUdFUEFHRTpcdENhbGwgYGBtYWR2aXNlKClgYCBmb3IgdGhlIHJlZ2lvbiB3aXRoIE1BRFZfTk9IVUdFUEFHRS5cbiAgKiBAREFNT1NfQ09MTEFQU0U6XHRDYWxsIGBgbWFkdmlzZSgpYGAgZm9yIHRoZSByZWdpb24gd2l0aCBNQURWX0NPTExBUFNFLlxuKyAqIEBEQU1PU19TUExJVDpcdFNwbGl0IGxhcmdlIGZvbGlvcyB0byB0aGUgdGFyZ2V0IG1USFAgb3JkZXIuXG4gICogQERBTU9TX0xSVV9QUklPOlx0UHJpb3JpdGl6ZSB0aGUgcmVnaW9uIG9uIGl0cyBMUlUgbGlzdHMuXG4gICogQERBTU9TX0xSVV9ERVBSSU86XHREZXByaW9yaXRpemUgdGhlIHJlZ2lvbiBvbiBpdHMgTFJVIGxpc3RzLlxuICAqIEBEQU1PU19NSUdSQVRFX0hPVDogIE1pZ3JhdGUgdGhlIHJlZ2lvbnMgcHJpb3JpdGl6aW5nIHdhcm1lciByZWdpb25zLlxuQEAgLTE0MSw2ICsxNDIsNyBAQCBlbnVtIGRhbW9zX2FjdGlvbiB7XG4gXHREQU1PU19IVUdFUEFHRSxcbiBcdERBTU9TX05PSFVHRVBBR0UsXG4gXHREQU1PU19DT0xMQVBTRSxcbitcdERBTU9TX1NQTElULFxuIFx0REFNT1NfTFJVX1BSSU8sXG4gXHREQU1PU19MUlVfREVQUklPLFxuIFx0REFNT1NfTUlHUkFURV9IT1QsXG5AQCAtNTcyLDYgKzU3NCwxNCBAQCBzdHJ1Y3QgZGFtb3NfbWlncmF0ZV9kZXN0cyB7XG4gc3RydWN0IGRhbW9zIHtcbiBcdHN0cnVjdCBkYW1vc19hY2Nlc3NfcGF0dGVybiBwYXR0ZXJuO1xuIFx0ZW51bSBkYW1vc19hY3Rpb24gYWN0aW9uO1xuK1x0LypcbitcdCAqIEB0YXJnZXRfb3JkZXI6IHRhcmdldCBtVEhQIG9yZGVyIGZvciBEQU1PU19DT0xMQVBTRSBhbmRcbitcdCAqIERBTU9TX1NQTElULiAgRm9yIENPTExBUFNFLCAwIG1lYW5zIFBNRCBvcmRlciBkZWZhdWx0LFxuK1x0ICogdmFsaWQgdmFsdWVzOiAwLCAyLi5IUEFHRV9QTURfT1JERVIuICBGb3IgU1BMSVQsXG4rXHQgKiB2YWxpZCB2YWx1ZXM6IDIuLkhQQUdFX1BNRF9PUkRFUi0xOyAwIGFuZCBIUEFHRV9QTURfT1JERVJcbitcdCAqIGFyZSByZWplY3RlZCBhdCBzY2hlbWUgY3JlYXRpb24gdGltZSAoZGVmYXVsdGluZyB0byAyKS5cbitcdCAqL1xuK1x0dW5zaWduZWQgaW50IHRhcmdldF9vcmRlcjtcbiBcdHVuc2lnbmVkIGxvbmcgYXBwbHlfaW50ZXJ2YWxfdXM7XG4gLyogcHJpdmF0ZTogaW50ZXJuYWwgdXNlIG9ubHkgKi9cbiBcdC8qXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9raHVnZXBhZ2VkLmggYi9pbmNsdWRlL2xpbnV4L2todWdlcGFnZWQuaFxuaW5kZXggZDdhOTA1M2ZmNGZlZDEuLjZmYjhhNjg1Nzc5MDNhIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9raHVnZXBhZ2VkLmhcbisrKyBiL2luY2x1ZGUvbGludXgva2h1Z2VwYWdlZC5oXG5AQCAtMjAsNiArMjAsOSBAQCBleHRlcm4gYm9vbCBjdXJyZW50X2lzX2todWdlcGFnZWQodm9pZCk7XG4gdm9pZCBjb2xsYXBzZV9wdGVfbWFwcGVkX3RocChzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBhZGRyLFxuIFx0XHRib29sIGluc3RhbGxfcG1kKTtcbiBcbitpbnQgZGFtb25fY29sbGFwc2VfZm9saW9fcmFuZ2Uoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgc3RhcnRfYWRkcixcbitcdFx0XHQgICAgICAgdW5zaWduZWQgaW50IHRhcmdldF9vcmRlcik7XG4rXG4gc3RhdGljIGlubGluZSB2b2lkIGtodWdlcGFnZWRfZm9yayhzdHJ1Y3QgbW1fc3RydWN0ICptbSwgc3RydWN0IG1tX3N0cnVjdCAqb2xkbW0pXG4ge1xuIFx0aWYgKG1tX2ZsYWdzX3Rlc3QoTU1GX1ZNX0hVR0VQQUdFLCBvbGRtbSkpXG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jIGIvbW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jXG5pbmRleCAzMjljZmQwYmJlOWYzMi4uNTQ3MjUyZmM4YTIwYWQgMTAwNjQ0XG4tLS0gYS9tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmNcbisrKyBiL21tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuY1xuQEAgLTYsNyArNiw5IEBAXG4gICovXG4gXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc2xhYi5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvbW0uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L251bWEuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2h1Z2VfbW0uaFx1MDAzZVxuIFxuICNpbmNsdWRlIFwic3lzZnMtY29tbW9uLmhcIlxuIFxuQEAgLTIyNTcsNiArMjI1OSw3IEBAIHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWUge1xuIFx0c3RydWN0IGRhbW9uX3N5c2ZzX3N0YXRzICpzdGF0cztcbiBcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9ucyAqdHJpZWRfcmVnaW9ucztcbiBcdGludCB0YXJnZXRfbmlkO1xuK1x0dW5zaWduZWQgaW50IHRhcmdldF9vcmRlcjtcbiBcdHN0cnVjdCBkYW1vc19zeXNmc19kZXN0cyAqZGVzdHM7XG4gfTtcbiBcbkBAIC0yMjkwLDYgKzIyOTMsMTAgQEAgc3RhdGljIHN0cnVjdCBkYW1vc19zeXNmc19hY3Rpb25fbmFtZSBkYW1vc19zeXNmc19hY3Rpb25fbmFtZXNbXSA9IHtcbiBcdFx0LmFjdGlvbiA9IERBTU9TX0NPTExBUFNFLFxuIFx0XHQubmFtZSA9IFwiY29sbGFwc2VcIixcbiBcdH0sXG4rXHR7XG4rXHRcdC5hY3Rpb24gPSBEQU1PU19TUExJVCxcbitcdFx0Lm5hbWUgPSBcInNwbGl0XCIsXG4rXHR9LFxuIFx0e1xuIFx0XHQuYWN0aW9uID0gREFNT1NfTFJVX1BSSU8sXG4gXHRcdC5uYW1lID0gXCJscnVfcHJpb1wiLFxuQEAgLTI2NDIsNiArMjY0OSwzNCBAQCBzdGF0aWMgc3NpemVfdCB0YXJnZXRfbmlkX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuIFx0cmV0dXJuIGVyciA/IGVyciA6IGNvdW50O1xuIH1cbiBcbitzdGF0aWMgc3NpemVfdCB0YXJnZXRfb3JkZXJfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcbitcdFx0c3RydWN0IGtvYmpfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpXG4re1xuK1x0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZSAqc2NoZW1lID0gY29udGFpbmVyX29mKGtvYmosXG4rXHRcdFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZSwga29iaik7XG4rXG4rXHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIFwiJXVcXG5cIiwgc2NoZW1lLVx1MDAzZXRhcmdldF9vcmRlcik7XG4rfVxuK1xuK3N0YXRpYyBzc2l6ZV90IHRhcmdldF9vcmRlcl9zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaixcbitcdFx0c3RydWN0IGtvYmpfYXR0cmlidXRlICphdHRyLCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudClcbit7XG4rXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lICpzY2hlbWUgPSBjb250YWluZXJfb2Yoa29iaixcbitcdFx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lLCBrb2JqKTtcbitcdHVuc2lnbmVkIGludCB2YWw7XG4rXHRpbnQgZXJyO1xuK1xuK1x0ZXJyID0ga3N0cnRvdWludChidWYsIDAsIFx1MDAyNnZhbCk7XG4rXHRpZiAoZXJyKVxuK1x0XHRyZXR1cm4gZXJyO1xuK1xuK1x0aWYgKHZhbCAhPSAwIFx1MDAyNlx1MDAyNiAodmFsIFx1MDAzYyAyIHx8IHZhbCBcdTAwM2UgSFBBR0VfUE1EX09SREVSKSlcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXG4rXHRzY2hlbWUtXHUwMDNldGFyZ2V0X29yZGVyID0gdmFsO1xuK1x0cmV0dXJuIGNvdW50O1xuK31cbitcbiBzdGF0aWMgdm9pZCBkYW1vbl9zeXNmc19zY2hlbWVfcmVsZWFzZShzdHJ1Y3Qga29iamVjdCAqa29iailcbiB7XG4gXHRrZnJlZShjb250YWluZXJfb2Yoa29iaiwgc3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZSwga29iaikpO1xuQEAgLTI2NTYsMTAgKzI2OTEsMTQgQEAgc3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vbl9zeXNmc19zY2hlbWVfYXBwbHlfaW50ZXJ2YWxfdXNfYXR0ciA9XG4gc3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vbl9zeXNmc19zY2hlbWVfdGFyZ2V0X25pZF9hdHRyID1cbiBcdFx0X19BVFRSX1JXX01PREUodGFyZ2V0X25pZCwgMDYwMCk7XG4gXG4rc3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vbl9zeXNmc19zY2hlbWVfdGFyZ2V0X29yZGVyX2F0dHIgPVxuK1x0XHRfX0FUVFJfUldfTU9ERSh0YXJnZXRfb3JkZXIsIDA2MDApO1xuK1xuIHN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICpkYW1vbl9zeXNmc19zY2hlbWVfYXR0cnNbXSA9IHtcbiBcdFx1MDAyNmRhbW9uX3N5c2ZzX3NjaGVtZV9hY3Rpb25fYXR0ci5hdHRyLFxuIFx0XHUwMDI2ZGFtb25fc3lzZnNfc2NoZW1lX2FwcGx5X2ludGVydmFsX3VzX2F0dHIuYXR0cixcbiBcdFx1MDAyNmRhbW9uX3N5c2ZzX3NjaGVtZV90YXJnZXRfbmlkX2F0dHIuYXR0cixcbitcdFx1MDAyNmRhbW9uX3N5c2ZzX3NjaGVtZV90YXJnZXRfb3JkZXJfYXR0ci5hdHRyLFxuIFx0TlVMTCxcbiB9O1xuIEFUVFJJQlVURV9HUk9VUFMoZGFtb25fc3lzZnNfc2NoZW1lKTtcbkBAIC0zMDA1LDYgKzMwNDQsMjQgQEAgc3RhdGljIHN0cnVjdCBkYW1vcyAqZGFtb25fc3lzZnNfbWtfc2NoZW1lKFxuIFx0aWYgKCFzY2hlbWUpXG4gXHRcdHJldHVybiBOVUxMO1xuIFxuK1x0aWYgKHN5c2ZzX3NjaGVtZS1cdTAwM2VhY3Rpb24gPT0gREFNT1NfQ09MTEFQU0UgXHUwMDI2XHUwMDI2XG4rXHQgICAgc3lzZnNfc2NoZW1lLVx1MDAzZXRhcmdldF9vcmRlciAhPSAwIFx1MDAyNlx1MDAyNlxuK1x0ICAgIHN5c2ZzX3NjaGVtZS1cdTAwM2V0YXJnZXRfb3JkZXIgIT0gSFBBR0VfUE1EX09SREVSKSB7XG4rXHRcdHByX3dhcm4oXCJEQU1PTiBjb2xsYXBzZTogdGFyZ2V0X29yZGVyICV1IG5vdCBzdXBwb3J0ZWQsIG9ubHkgUE1EIG9yZGVyICgldSkgaXMgYXZhaWxhYmxlLiBVc2UgMCBvciAldS5cXG5cIixcbitcdFx0XHRzeXNmc19zY2hlbWUtXHUwMDNldGFyZ2V0X29yZGVyLFxuK1x0XHRcdEhQQUdFX1BNRF9PUkRFUiwgSFBBR0VfUE1EX09SREVSKTtcbitcdFx0c3lzZnNfc2NoZW1lLVx1MDAzZXRhcmdldF9vcmRlciA9IDA7XG4rXHR9XG4rXHRpZiAoc3lzZnNfc2NoZW1lLVx1MDAzZWFjdGlvbiA9PSBEQU1PU19TUExJVCBcdTAwMjZcdTAwMjZcbitcdCAgICAoc3lzZnNfc2NoZW1lLVx1MDAzZXRhcmdldF9vcmRlciA9PSAwIHx8XG4rXHQgICAgIHN5c2ZzX3NjaGVtZS1cdTAwM2V0YXJnZXRfb3JkZXIgXHUwMDNlPSBIUEFHRV9QTURfT1JERVIpKSB7XG4rXHRcdHByX3dhcm4oXCJEQU1PTiBzcGxpdDogdGFyZ2V0X29yZGVyICV1IGludmFsaWQsIG5lZWQgMi4uJXUuIERlZmF1bHRpbmcgdG8gMi5cXG5cIixcbitcdFx0XHRzeXNmc19zY2hlbWUtXHUwMDNldGFyZ2V0X29yZGVyLFxuK1x0XHRcdEhQQUdFX1BNRF9PUkRFUiAtIDEpO1xuK1x0XHRzeXNmc19zY2hlbWUtXHUwMDNldGFyZ2V0X29yZGVyID0gMjtcbitcdH1cbitcdHNjaGVtZS1cdTAwM2V0YXJnZXRfb3JkZXIgPSBzeXNmc19zY2hlbWUtXHUwMDNldGFyZ2V0X29yZGVyO1xuK1xuIFx0ZXJyID0gZGFtb3Nfc3lzZnNfYWRkX3F1b3RhX3Njb3JlKHN5c2ZzX3F1b3Rhcy1cdTAwM2Vnb2FscywgXHUwMDI2c2NoZW1lLVx1MDAzZXF1b3RhKTtcbiBcdGlmIChlcnIpIHtcbiBcdFx0ZGFtb25fZGVzdHJveV9zY2hlbWUoc2NoZW1lKTtcbmRpZmYgLS1naXQgYS9tbS9kYW1vbi92YWRkci5jIGIvbW0vZGFtb24vdmFkZHIuY1xuaW5kZXggZDI3MTQ3NjAzNTY0MWIuLjNmMjA2MWIyOWVkODQyIDEwMDY0NFxuLS0tIGEvbW0vZGFtb24vdmFkZHIuY1xuKysrIGIvbW0vZGFtb24vdmFkZHIuY1xuQEAgLTE0LDYgKzE0LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wYWdlX2lkbGUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BhZ2V3YWxrLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9zY2hlZC9tbS5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgva2h1Z2VwYWdlZC5oXHUwMDNlXG4gXG4gI2luY2x1ZGUgXCIuLi9pbnRlcm5hbC5oXCJcbiAjaW5jbHVkZSBcIm9wcy1jb21tb24uaFwiXG5AQCAtODk5LDYgKzkwMCwxMDUgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb3NfdmFfc3RhdChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0YXJnZXQsXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4rc3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb3NfdmFfY29sbGFwc2Uoc3RydWN0IGRhbW9uX3RhcmdldCAqdGFyZ2V0LFxuK1x0XHRzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLCBzdHJ1Y3QgZGFtb3MgKnMsXG4rXHRcdHVuc2lnbmVkIGxvbmcgKnN6X2ZpbHRlcl9wYXNzZWQpXG4re1xuK1x0dW5zaWduZWQgbG9uZyBhZGRyLCBlbmQsIGNodW5rX3N6O1xuK1x0dW5zaWduZWQgaW50IHRhcmdldF9vcmRlciA9IHMtXHUwMDNldGFyZ2V0X29yZGVyO1xuK1x0dW5zaWduZWQgbG9uZyBhcHBsaWVkID0gMDtcbitcdHN0cnVjdCBtbV9zdHJ1Y3QgKm1tO1xuK1x0aW50IHJldDtcbitcbitcdGlmICh0YXJnZXRfb3JkZXIgXHUwMDNjIDIgfHwgdGFyZ2V0X29yZGVyIFx1MDAzZSBIUEFHRV9QTURfT1JERVIpXG4rXHRcdHJldHVybiAwO1xuK1xuK1x0Y2h1bmtfc3ogPSBQQUdFX1NJWkUgXHUwMDNjXHUwMDNjIHRhcmdldF9vcmRlcjtcbitcdGFkZHIgPSBBTElHTl9ET1dOKHItXHUwMDNlYXIuc3RhcnQsIGNodW5rX3N6KTtcbitcdGVuZCA9IEFMSUdOKHItXHUwMDNlYXIuZW5kLCBjaHVua19zeik7XG4rXG4rXHRtbSA9IGRhbW9uX2dldF9tbSh0YXJnZXQpO1xuK1x0aWYgKCFtbSlcbitcdFx0cmV0dXJuIDA7XG4rXG4rXHR3aGlsZSAoYWRkciBcdTAwM2MgZW5kKSB7XG4rXHRcdHJldCA9IGRhbW9uX2NvbGxhcHNlX2ZvbGlvX3JhbmdlKG1tLCBhZGRyLCB0YXJnZXRfb3JkZXIpO1xuK1x0XHRpZiAoIXJldClcbitcdFx0XHRhcHBsaWVkICs9IGNodW5rX3N6O1xuK1x0XHQqc3pfZmlsdGVyX3Bhc3NlZCArPSBjaHVua19zejtcbitcdFx0YWRkciArPSBjaHVua19zejtcbitcdFx0Y29uZF9yZXNjaGVkKCk7XG4rXHR9XG4rXG4rXHRtbXB1dChtbSk7XG4rXHRyZXR1cm4gYXBwbGllZDtcbit9XG4rXG4rc3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb3NfdmFfc3BsaXQoc3RydWN0IGRhbW9uX3RhcmdldCAqdGFyZ2V0LFxuK1x0XHRzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLCBzdHJ1Y3QgZGFtb3MgKnMsXG4rXHRcdHVuc2lnbmVkIGxvbmcgKnN6X2ZpbHRlcl9wYXNzZWQpXG4re1xuK1x0dW5zaWduZWQgbG9uZyBhZGRyLCBlbmQsIGNodW5rX3N6O1xuK1x0dW5zaWduZWQgaW50IHRhcmdldF9vcmRlciA9IHMtXHUwMDNldGFyZ2V0X29yZGVyO1xuK1x0dW5zaWduZWQgbG9uZyBhcHBsaWVkID0gMDtcbitcdHN0cnVjdCBtbV9zdHJ1Y3QgKm1tO1xuK1x0c3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWE7XG4rXHRzdHJ1Y3QgZm9saW8gKmZvbGlvO1xuK1x0c3RydWN0IGZvbGlvX3dhbGsgZnc7XG4rXG4rXHRtbSA9IGRhbW9uX2dldF9tbSh0YXJnZXQpO1xuK1x0aWYgKCFtbSlcbitcdFx0cmV0dXJuIDA7XG4rXG4rXHRjaHVua19zeiA9IFBBR0VfU0laRSBcdTAwM2NcdTAwM2MgSFBBR0VfUE1EX09SREVSO1xuK1x0YWRkciA9IEFMSUdOX0RPV04oci1cdTAwM2Vhci5zdGFydCwgY2h1bmtfc3opO1xuK1x0ZW5kID0gQUxJR04oci1cdTAwM2Vhci5lbmQsIGNodW5rX3N6KTtcbitcbitcdHdoaWxlIChhZGRyIFx1MDAzYyBlbmQpIHtcbitcdFx0bW1hcF9yZWFkX2xvY2sobW0pO1xuK1x0XHR2bWEgPSBmaW5kX3ZtYShtbSwgYWRkcik7XG4rXHRcdC8qXG4rXHRcdCAqIHNwbGl0X2ZvbGlvX3RvX29yZGVyKCkgc3VwcG9ydHMgYm90aCBhbm9uIGFuZCBzaG1lbVxuK1x0XHQgKiBmb2xpb3MsIHNvIHdlIGFjY2VwdCBhbnkgVk1BIHRoYXQgaGFzIGEgZm9saW8gYXQgQGFkZHIuXG4rXHRcdCAqIFRoaXMgY292ZXJzIGltcG9ydGFudCB1c2UgY2FzZXMgbGlrZSB0bXBmcyBUSFAtYmFja2VkXG4rXHRcdCAqIEtWTSBndWVzdCBtZW1vcnkgd2hlcmUgY29sZCBhbmQgaG90IHBhZ2VzIGFyZSBidW5kbGVkXG4rXHRcdCAqIHRvZ2V0aGVyIGluIGEgc2luZ2xlIFBNRCBUSFAuXG4rXHRcdCAqL1xuK1x0XHRpZiAoIXZtYSB8fCBhZGRyIFx1MDAzYyB2bWEtXHUwMDNldm1fc3RhcnQpXG4rXHRcdFx0Z290byB1bmxvY2s7XG4rXG4rXHRcdGZvbGlvID0gZm9saW9fd2Fsa19zdGFydChcdTAwMjZmdywgdm1hLCBhZGRyLCAwKTtcbitcdFx0aWYgKCFmb2xpbylcbitcdFx0XHRnb3RvIHVubG9jaztcbitcbitcdFx0aWYgKGZvbGlvX29yZGVyKGZvbGlvKSBcdTAwM2UgdGFyZ2V0X29yZGVyKSB7XG4rXHRcdFx0aWYgKCFmb2xpb190cnlsb2NrKGZvbGlvKSkge1xuK1x0XHRcdFx0Zm9saW9fd2Fsa19lbmQoXHUwMDI2ZncsIHZtYSk7XG4rXHRcdFx0XHRnb3RvIHVubG9jaztcbitcdFx0XHR9XG4rXHRcdFx0Zm9saW9fZ2V0KGZvbGlvKTtcbitcdFx0XHRmb2xpb193YWxrX2VuZChcdTAwMjZmdywgdm1hKTtcbitcbitcdFx0XHRpZiAoIXNwbGl0X2ZvbGlvX3RvX29yZGVyKGZvbGlvLCB0YXJnZXRfb3JkZXIpKVxuK1x0XHRcdFx0YXBwbGllZCArPSBjaHVua19zejtcbitcbitcdFx0XHRmb2xpb191bmxvY2soZm9saW8pO1xuK1x0XHRcdGZvbGlvX3B1dChmb2xpbyk7XG4rXHRcdH0gZWxzZSB7XG4rXHRcdFx0Zm9saW9fd2Fsa19lbmQoXHUwMDI2ZncsIHZtYSk7XG4rXHRcdH1cbitcbit1bmxvY2s6XG4rXHRcdCpzel9maWx0ZXJfcGFzc2VkICs9IGNodW5rX3N6O1xuK1x0XHRhZGRyICs9IGNodW5rX3N6O1xuK1x0XHRtbWFwX3JlYWRfdW5sb2NrKG1tKTtcbitcdFx0Y29uZF9yZXNjaGVkKCk7XG4rXHR9XG4rXG4rXHRtbXB1dChtbSk7XG4rXHRyZXR1cm4gYXBwbGllZDtcbit9XG4rXG4gc3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb25fdmFfYXBwbHlfc2NoZW1lKHN0cnVjdCBkYW1vbl9jdHggKmN0eCxcbiBcdFx0c3RydWN0IGRhbW9uX3RhcmdldCAqdCwgc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcbiBcdFx0c3RydWN0IGRhbW9zICpzY2hlbWUsIHVuc2lnbmVkIGxvbmcgKnN6X2ZpbHRlcl9wYXNzZWQpXG5AQCAtOTIyLDYgKzEwMjIsOSBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vbl92YV9hcHBseV9zY2hlbWUoc3RydWN0IGRhbW9uX2N0eCAqY3R4LFxuIFx0XHRtYWR2X2FjdGlvbiA9IE1BRFZfTk9IVUdFUEFHRTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIERBTU9TX0NPTExBUFNFOlxuK1x0XHRpZiAoc2NoZW1lLVx1MDAzZXRhcmdldF9vcmRlcilcbitcdFx0XHRyZXR1cm4gZGFtb3NfdmFfY29sbGFwc2UodCwgciwgc2NoZW1lLFxuK1x0XHRcdFx0XHRcdCBzel9maWx0ZXJfcGFzc2VkKTtcbiBcdFx0bWFkdl9hY3Rpb24gPSBNQURWX0NPTExBUFNFO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgREFNT1NfTUlHUkFURV9IT1Q6XG5AQCAtOTI5LDYgKzEwMzIsOSBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vbl92YV9hcHBseV9zY2hlbWUoc3RydWN0IGRhbW9uX2N0eCAqY3R4LFxuIFx0XHRyZXR1cm4gZGFtb3NfdmFfbWlncmF0ZSh0LCByLCBzY2hlbWUsIHN6X2ZpbHRlcl9wYXNzZWQpO1xuIFx0Y2FzZSBEQU1PU19TVEFUOlxuIFx0XHRyZXR1cm4gZGFtb3NfdmFfc3RhdCh0LCByLCBzY2hlbWUsIHN6X2ZpbHRlcl9wYXNzZWQpO1xuK1x0Y2FzZSBEQU1PU19TUExJVDpcbitcdFx0cmV0dXJuIGRhbW9zX3ZhX3NwbGl0KHQsIHIsIHNjaGVtZSxcbitcdFx0XHRcdFx0ICBzel9maWx0ZXJfcGFzc2VkKTtcbiBcdGRlZmF1bHQ6XG4gXHRcdC8qXG4gXHRcdCAqIERBTU9TIGFjdGlvbnMgdGhhdCBhcmUgbm90IHlldCBzdXBwb3J0ZWQgYnkgJ3ZhZGRyJy5cbmRpZmYgLS1naXQgYS9tbS9raHVnZXBhZ2VkLmMgYi9tbS9raHVnZXBhZ2VkLmNcbmluZGV4IDYxN2JjYTc2ZGI0OWI2Li4wMzg3ODQxYmEyZTdkOCAxMDA2NDRcbi0tLSBhL21tL2todWdlcGFnZWQuY1xuKysrIGIvbW0va2h1Z2VwYWdlZC5jXG5AQCAtMzI3MiwzICszMjcyLDQyIEBAIGludCBtYWR2aXNlX2NvbGxhcHNlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIHN0YXJ0LFxuIFx0cmV0dXJuIHRocHMgPT0gKChoZW5kIC0gaHN0YXJ0KSBcdTAwM2VcdTAwM2UgSFBBR0VfUE1EX1NISUZUKSA/IDBcbiBcdFx0XHQ6IG1hZHZpc2VfY29sbGFwc2VfZXJybm8obGFzdF9mYWlsKTtcbiB9XG4rXG4rLyoqXG4rICogZGFtb25fY29sbGFwc2VfZm9saW9fcmFuZ2UoKSAtIENvbGxhcHNlIGJhc2UgcGFnZXMgaW4gcmFuZ2UgaW50byBhIFRIUFxuKyAqIEBtbTogICAgICAgICBtbV9zdHJ1Y3Qgb2YgdGhlIHRhcmdldCBwcm9jZXNzXG4rICogQHN0YXJ0X2FkZHI6IHN0YXJ0IGFkZHJlc3MgKG11c3QgYmUgb3JkZXItYWxpZ25lZClcbisgKiBAdGFyZ2V0X29yZGVyOiBwYWdlIG9yZGVyIG9mIHRoZSBjb2xsYXBzZSByZXN1bHQgKGN1cnJlbnRseSBvbmx5XG4rICogICAgICAgICAgICAgICAgSFBBR0VfUE1EX09SREVSIGlzIHN1cHBvcnRlZClcbisgKlxuKyAqIFRoaW4gd3JhcHBlciBhcm91bmQgY29sbGFwc2VfaHVnZV9wYWdlKCkgZm9yIGV4dGVybmFsIGNhbGxlcnMgc3VjaCBhc1xuKyAqIERBTU9OLiAgVGhlIGNhbGxlciBtdXN0IGhvbGQgYSByZWZlcmVuY2UgdG8gQG1tLiAgRG8gbm90IGhvbGQgbW1hcFxuKyAqIGxvY2s6IGNvbGxhcHNlX2h1Z2VfcGFnZSgpIGFjcXVpcmVzIG1tYXBfcmVhZF9sb2NrIGZvciB2YWxpZGF0aW9uLFxuKyAqIHJlbGVhc2VzIGl0LCB0aGVuIGFjcXVpcmVzIG1tYXBfd3JpdGVfbG9jayBmb3IgdGhlIGNvbGxhcHNlLiAgSG9sZGluZ1xuKyAqIGFuIG91dGVyIG1tYXBfcmVhZF9sb2NrIHdvdWxkIHNlbGYtZGVhZGxvY2suXG4rICpcbisgKiBSZXR1cm46IDAgb24gc3VjY2VzcywgLUVJTlZBTCBvbiBiYWQgYXJndW1lbnRzLCBuZWdhdGl2ZSBlcnJvciBmcm9tXG4rICogICAgICAgICBtYWR2aXNlX2NvbGxhcHNlX2Vycm5vKCkgb3RoZXJ3aXNlLlxuKyAqL1xuK2ludCBkYW1vbl9jb2xsYXBzZV9mb2xpb19yYW5nZShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBzdGFydF9hZGRyLFxuK1x0XHRcdCAgICAgICB1bnNpZ25lZCBpbnQgdGFyZ2V0X29yZGVyKVxuK3tcbitcdHN0cnVjdCBjb2xsYXBzZV9jb250cm9sIGNjID0ge1xuK1x0XHQuaXNfa2h1Z2VwYWdlZCA9IGZhbHNlLFxuK1x0fTtcbitcdGVudW0gc2Nhbl9yZXN1bHQgcmVzdWx0O1xuK1xuK1x0aWYgKHRhcmdldF9vcmRlciAhPSBIUEFHRV9QTURfT1JERVIpIHtcbitcdFx0cHJfd2Fybl9vbmNlKFwiJXM6IG9ubHkgUE1EIG9yZGVyICgldSkgaXMgc3VwcG9ydGVkLCBnb3QgJXVcXG5cIixcbitcdFx0XHQgICAgIF9fZnVuY19fLCBIUEFHRV9QTURfT1JERVIsIHRhcmdldF9vcmRlcik7XG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1x0fVxuK1x0aWYgKHN0YXJ0X2FkZHIgXHUwMDI2ICgoUEFHRV9TSVpFIFx1MDAzY1x1MDAzYyB0YXJnZXRfb3JkZXIpIC0gMSkpXG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1xuK1x0cmVzdWx0ID0gY29sbGFwc2VfaHVnZV9wYWdlKG1tLCBzdGFydF9hZGRyLCAxLCAwLCBcdTAwMjZjYywgdGFyZ2V0X29yZGVyKTtcbitcdGlmIChyZXN1bHQgPT0gU0NBTl9TVUNDRUVEKVxuK1x0XHRyZXR1cm4gMDtcbitcdHJldHVybiBtYWR2aXNlX2NvbGxhcHNlX2Vycm5vKHJlc3VsdCk7XG4rfVxuK0VYUE9SVF9TWU1CT0xfR1BMKGRhbW9uX2NvbGxhcHNlX2ZvbGlvX3JhbmdlKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDE3OjU3OjAwLjc5NTgzMTI2M1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE4MzIwMzMxMjk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIERBTU9OIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQncyBpbnRyb2R1Y2luZyBgREFNT1NfU1BMSVRgIGludG8gREFNT04sIGFuZCBleHBhbmRpbmcgdGhlIGNhcGFiaWxpdGllcyBvZiBgREFNT1NfQ09MTEFQU0VgIHRvIGhhbmRsZSBhIHNwZWNpZmllZCBgdGFyZ2V0X29yZGVyYC4gU3RyYWlnaHQgYXdheSwgSSByZWNvZ25pemUgdGhpcyBhcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50LCBzcGVjaWZpY2FsbHkgd2l0aGluIERBTU9OIGFuZCBraHVnZXBhZ2VkLiBXZSdyZSB0YWxraW5nIGFib3V0IGFsbG93aW5nIERBTU9OIHRvIHNwbGl0IGxhcmdlIGZvbGlvcyB0byBhIHBhcnRpY3VsYXIgbVRIUCBvcmRlciBhbmQgZW5hYmxpbmcgZm9saW8gY29sbGFwc2UuXG5cbkJlZm9yZSBJIGRlbHZlIGRlZXBlciBpbnRvIHRoZSBjb2RlIG1vZGlmaWNhdGlvbnMgd2l0aGluIGBpbmNsdWRlL2xpbnV4L2RhbW9uLmhgLCBgaW5jbHVkZS9saW51eC9raHVnZXBhZ2VkLmhgLCBgbW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jYCwgYG1tL2RhbW9uL3ZhZGRyLmNgLCBhbmQgYG1tL2todWdlcGFnZWQuY2AsIEkgbmVlZCB0byBxdWlja2x5IGVzdGFibGlzaCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIEknbSBnb2luZyB0byBjaGVjayB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFzc29jaWF0ZWQgd2l0aCBEQU1PTiBhbmQga2h1Z2VwYWdlZC4gTG9va3MgbGlrZSB3ZSBoYXZlIGBDT05GSUdfREFNT05gLCBgQ09ORklHX0RBTU9OX1NZU0ZTYCwgYW5kIGBDT05GSUdfREFNT05fVkFERFJgIGZvciBEQU1PTiwgYW5kIGBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VgIGZvciBraHVnZXBhZ2VkLlxuXG5Ob3csIEknbGwgZG8gYSBxdWljayBncmVwIHNlYXJjaCBmb3IgYENPTkZJR19EQU1PTmAgYW5kIGBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VgIHdpdGhpbiB0aGUgY29uZmlnIGZpbGVzIHRvIGdldCBhIGNsZWFyZXIgcGljdHVyZSBvZiB0aGVpciByZWxhdGlvbnNoaXBzIGFuZCBhbnkgcG90ZW50aWFsIHJlcXVpcmVtZW50cyBvciBjb25mbGljdHMgdGhhdCBuZWVkIGF0dGVudGlvbi4gVGhpcyB3aWxsIGhlbHAgbWUgYXNzZXNzIHRoZSBwYXRjaCdzIGltcGFjdCBhbmQgaXRzIGludGVncmF0aW9uIHdpdGhpbiB0aGUgZXhpc3RpbmcgY29uZmlndXJhdGlvbiBsYW5kc2NhcGUuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBkb2Vzbid0IGludHJvZHVjZSB1bmludGVuZGVkIGRlcGVuZGVuY2llcyBvciBicmVhayBleGlzdGluZyBzZXR1cHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYwNDYsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxNzo1NzoxOS4xMTYxNjQ2NjdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkyMzExNjIxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkRBTU9OX1NZU0ZTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL2RhbW9uL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZGFtb24vS2NvbmZpZz01Nj1jb25maWcgREFNT05fVkFERFJfS1VOSVRfVEVTVFxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy02Ny1cXG5tbS9kYW1vbi9LY29uZmlnOjY4OmNvbmZpZyBEQU1PTl9TWVNGU1xcbm1tL2RhbW9uL0tjb25maWctNjktXFx0Ym9vbCBcXFwiREFNT04gc3lzZnMgaW50ZXJmYWNlXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy03NS1cXG5tbS9kYW1vbi9LY29uZmlnOjc2OmNvbmZpZyBEQU1PTl9TWVNGU19LVU5JVF9URVNUXFxubW0vZGFtb24vS2NvbmZpZy03Ny1cXHRib29sIFxcXCJUZXN0IGZvciBkYW1vbiBzeXNmcyBpbnRlcmZhY2VcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG5tbS9kYW1vbi9LY29uZmlnOjc4OlxcdGRlcGVuZHMgb24gREFNT05fU1lTRlMgXFx1MDAyNlxcdTAwMjYgS1VOSVQ9eVxcbm1tL2RhbW9uL0tjb25maWctNzktXFx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMTc6NTc6MTkuMzA4NDgzNDk4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzExMTk1NzE5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKktjb25maWcgRGl2ZSBmb3IgREFNT05fVkFERFIqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmluZCB3aGVyZSBgREFNT05fVkFERFJgIGlzIGRlZmluZWQgYW5kIGNvbmZpZ3VyZWQuIFRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgaXMsIG9mIGNvdXJzZSwgdGhlIGBLY29uZmlnYCBmaWxlcy4gR2l2ZW4gdGhhdCB3ZSdyZSBkZWFsaW5nIHdpdGggREFNT04gKER5bmFtaWMgQWRkcmVzcyBNb25pdG9yaW5nKSwgaXQncyBoaWdobHkgbGlrZWx5IHRoYXQgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgaW4gdGhlIGBtbS9kYW1vbmAgZGlyZWN0b3J5LiBUaGVyZWZvcmUsIEkgc2hvdWxkIGNoZWNrIHRoZSBgbW0vZGFtb24vS2NvbmZpZ2AgZmlsZSBmaXJzdC4gVGhhdCdzIHRoZSBnby10byBwbGFjZSBmb3IgdW5kZXJzdGFuZGluZyBEQU1PTidzIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyBhbmQgdGhlaXIgZGVwZW5kZW5jaWVzLiBMZXQncyBzZWUgd2hhdCB3ZSBjYW4gZmluZCB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Njg3MywiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDE3OjU3OjIyLjQyMDQ0MjQ1WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNDA1OTQyNjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiREFNT05fVkFERFJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vZGFtb24vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9kYW1vbi9LY29uZmlnPTI2PWNvbmZpZyBEQU1PTl9LVU5JVF9URVNUXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTM3LVxcbm1tL2RhbW9uL0tjb25maWc6Mzg6Y29uZmlnIERBTU9OX1ZBRERSXFxubW0vZGFtb24vS2NvbmZpZy0zOS1cXHRib29sIFxcXCJEYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIHZpcnR1YWwgYWRkcmVzcyBzcGFjZXNcXFwiXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnPTQ3PWNvbmZpZyBEQU1PTl9QQUREUlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy01NS1cXG5tbS9kYW1vbi9LY29uZmlnOjU2OmNvbmZpZyBEQU1PTl9WQUREUl9LVU5JVF9URVNUXFxubW0vZGFtb24vS2NvbmZpZy01Ny1cXHRib29sIFxcXCJUZXN0IGZvciBEQU1PTiBvcGVyYXRpb25zXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxubW0vZGFtb24vS2NvbmZpZzo1ODpcXHRkZXBlbmRzIG9uIERBTU9OX1ZBRERSIFxcdTAwMjZcXHUwMDI2IEtVTklUPXlcXG5tbS9kYW1vbi9LY29uZmlnLTU5LVxcdGRlZmF1bHQgS1VOSVRfQUxMX1RFU1RTXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDE3OjU3OjIzLjU2MTA0NDIwMVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMjIwOTkyMTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZS4uLlxuXG4qKkNoZWNraW5nIHRoZSBLY29uZmlnIGZvciBUcmFuc3BhcmVudCBIdWdlcGFnZXMqKlxuXG5SaWdodCwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGBUUkFOU1BBUkVOVF9IVUdFUEFHRWAgaXMgY29uZmlndXJlZCBpbiB0aGlzIHBhcnRpY3VsYXIgZW52aXJvbm1lbnQuIEEgZ29vZCBmaXJzdCBzdGVwIGlzIGFsd2F5cyB0byBnbyBzdHJhaWdodCB0byB0aGUgc291cmNlLCB0aGUgYG1tL0tjb25maWdgIGZpbGUuIEknbSBmYW1pbGlhciB3aXRoIHRoaXMgYXJlYSwgb2J2aW91c2x5LCBhbmQga25vdyBleGFjdGx5IHdoYXQgdG8gbG9vayBmb3IgdGhlcmUuIFRoYXQncyB3aGVyZSBhbGwgdGhlIGZ1bmRhbWVudGFsIG1lbW9yeSBtYW5hZ2VtZW50IG9wdGlvbnMgYXJlIGRlY2xhcmVkIGFuZCBkZWZpbmVkLCB3aGljaCB3b3VsZCBsb2dpY2FsbHkgaW5jbHVkZSBhbnl0aGluZyByZWxhdGVkIHRvIHRyYW5zcGFyZW50IGh1Z2VwYWdlcy4gSXQnbGwgZ2l2ZSBtZSB0aGUgZGVmaW5pdGlvbnMgYW5kIHRoZSBkZXBlbmRlbmNpZXMuIEhvcGVmdWxseSwgaXTigJlzIG5vdCB0b28gZGVlcGx5IG5lc3RlZCwgSSBuZWVkIHRvIGdldCBhbiBpbml0aWFsIG92ZXJ2aWV3IGFzIHF1aWNrbHkgYXMgcG9zc2libGUuIFRpbWUgdG8gZGl2ZSBpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NzI5NywiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDE3OjU3OjI2Ljc4MzE0NTQ1MloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTkyNDYyODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiVFJBTlNQQVJFTlRfSFVHRVBBR0VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9LY29uZmlnPTgyNz1jb25maWcgUEVSU0lTVEVOVF9IVUdFX1pFUk9fRk9MSU9cXG5tbS9LY29uZmlnLTgyOC1cXHRib29sIFxcXCJBbGxvY2F0ZSBhIFBNRCBzaXplZCBmb2xpbyBmb3IgemVyb2luZ1xcXCJcXG5tbS9LY29uZmlnOjgyOTpcXHRkZXBlbmRzIG9uIFRSQU5TUEFSRU5UX0hVR0VQQUdFXFxubW0vS2NvbmZpZy04MzAtXFx0aGVscFxcbi0tXFxubW0vS2NvbmZpZz04NDM9Y29uZmlnIE1NX0lEXFxuLS1cXG5tbS9LY29uZmlnLTg0NS1cXG5tbS9LY29uZmlnOjg0NjptZW51Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFXFxubW0vS2NvbmZpZy04NDctXFx0Ym9vbCBcXFwiVHJhbnNwYXJlbnQgSHVnZXBhZ2UgU3VwcG9ydFxcXCJcXG5tbS9LY29uZmlnOjg0ODpcXHRkZXBlbmRzIG9uIEhBVkVfQVJDSF9UUkFOU1BBUkVOVF9IVUdFUEFHRSBcXHUwMDI2XFx1MDAyNiAhUFJFRU1QVF9SVFxcbm1tL0tjb25maWctODQ5LVxcdHNlbGVjdCBDT01QQUNUSU9OXFxuLS1cXG5tbS9LY29uZmlnLTg2MS1cXG5tbS9LY29uZmlnOjg2MjppZiBUUkFOU1BBUkVOVF9IVUdFUEFHRVxcbm1tL0tjb25maWctODYzLVxcbm1tL0tjb25maWc9ODY0PWNob2ljZVxcbm1tL0tjb25maWctODY1LVxcdHByb21wdCBcXFwiVHJhbnNwYXJlbnQgSHVnZXBhZ2UgU3VwcG9ydCBzeXNmcyBkZWZhdWx0c1xcXCJcXG5tbS9LY29uZmlnOjg2NjpcXHRkZWZhdWx0IFRSQU5TUEFSRU5UX0hVR0VQQUdFX0FMV0FZU1xcbm1tL0tjb25maWctODY3LVxcdGhlbHBcXG4tLVxcbm1tL0tjb25maWctODY5LVxcbm1tL0tjb25maWc6ODcwOlxcdGNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRV9BTFdBWVNcXG5tbS9LY29uZmlnLTg3MS1cXHRcXHRib29sIFxcXCJhbHdheXNcXFwiXFxuLS1cXG5tbS9LY29uZmlnLTg3Ni1cXG5tbS9LY29uZmlnOjg3NzpcXHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfTUFEVklTRVxcbm1tL0tjb25maWctODc4LVxcdFxcdGJvb2wgXFxcIm1hZHZpc2VcXFwiXFxuLS1cXG5tbS9LY29uZmlnLTg4NS1cXG5tbS9LY29uZmlnOjg4NjpcXHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfTkVWRVJcXG5tbS9LY29uZmlnLTg4Ny1cXHRcXHRib29sIFxcXCJuZXZlclxcXCJcXG4tLVxcbm1tL0tjb25maWc9ODkzPWNob2ljZVxcbm1tL0tjb25maWctODk0LVxcdHByb21wdCBcXFwiU2htZW0gaHVnZXBhZ2UgYWxsb2NhdGlvbiBkZWZhdWx0c1xcXCJcXG5tbS9LY29uZmlnOjg5NTpcXHRkZWZhdWx0IFRSQU5TUEFSRU5UX0hVR0VQQUdFX1NITUVNX0hVR0VfTkVWRVJcXG5tbS9LY29uZmlnLTg5Ni1cXHRoZWxwXFxuLS1cXG5tbS9LY29uZmlnLTkwMi1cXG5tbS9LY29uZmlnOjkwMzpcXHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfU0hNRU1fSFVHRV9ORVZFUlxcbm1tL0tjb25maWctOTA0LVxcdFxcdGJvb2wgXFxcIm5ldmVyXFxcIlxcbi0tXFxubW0vS2NvbmZpZy05MTItXFxubW0vS2NvbmZpZzo5MTM6XFx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX1NITUVNX0hVR0VfQUxXQVlTXFxubW0vS2NvbmZpZy05MTQtXFx0XFx0Ym9vbCBcXFwiYWx3YXlzXFxcIlxcbi0tXFxubW0vS2NvbmZpZy05MjAtXFxubW0vS2NvbmZpZzo5MjE6XFx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX1NITUVNX0hVR0VfV0lUSElOX1NJWkVcXG5tbS9LY29uZmlnLTkyMi1cXHRcXHRib29sIFxcXCJ3aXRoaW5fc2l6ZVxcXCJcXG4tLVxcbm1tL0tjb25maWctOTI4LVxcbm1tL0tjb25maWc6OTI5OlxcdGNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRV9TSE1FTV9IVUdFX0FEVklTRVxcbm1tL0tjb25maWctOTMwLVxcdFxcdGJvb2wgXFxcImFkdmlzZVxcXCJcXG4tLVxcbm1tL0tjb25maWc9OTM4PWNob2ljZVxcbm1tL0tjb25maWctOTM5LVxcdHByb21wdCBcXFwiVG1wZnMgaHVnZXBhZ2UgYWxsb2NhdGlvbiBkZWZhdWx0c1xcXCJcXG5tbS9LY29uZmlnOjk0MDpcXHRkZWZhdWx0IFRSQU5TUEFSRU5UX0hVR0VQQUdFX1RNUEZTX0hVR0VfTkVWRVJcXG5tbS9LY29uZmlnLTk0MS1cXHRoZWxwXFxuLS1cXG5tbS9LY29uZmlnLTk0Ny1cXG5tbS9LY29uZmlnOjk0ODpcXHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfVE1QRlNfSFVHRV9ORVZFUlxcbm1tL0tjb25maWctOTQ5LVxcdFxcdGJvb2wgXFxcIm5ldmVyXFxcIlxcbi0tXFxubW0vS2NvbmZpZy05NTYtXFxubW0vS2NvbmZpZzo5NTc6XFx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX1RNUEZTX0hVR0VfQUxXQVlTXFxubW0vS2NvbmZpZy05NTgtXFx0XFx0Ym9vbCBcXFwiYWx3YXlzXFxcIlxcbi0tXFxubW0vS2NvbmZpZy05NjQtXFxubW0vS2NvbmZpZzo5NjU6XFx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX1RNUEZTX0hVR0VfV0lUSElOX1NJWkVcXG5tbS9LY29uZmlnLTk2Ni1cXHRcXHRib29sIFxcXCJ3aXRoaW5fc2l6ZVxcXCJcXG4tLVxcbm1tL0tjb25maWctOTcyLVxcbm1tL0tjb25maWc6OTczOlxcdGNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRV9UTVBGU19IVUdFX0FEVklTRVxcbm1tL0tjb25maWctOTc0LVxcdFxcdGJvb2wgXFxcImFkdmlzZVxcXCJcXG4tLVxcbm1tL0tjb25maWc9OTkyPWNvbmZpZyBOT19QQUdFX01BUENPVU5UXFxuLS1cXG5tbS9LY29uZmlnLTEwMDQtXFxubW0vS2NvbmZpZzoxMDA1OmVuZGlmICMgVFJBTlNQQVJFTlRfSFVHRVBBR0VcXG5tbS9LY29uZmlnLTEwMDYtXFxuLS1cXG5tbS9LY29uZmlnPTEwMTQ9Y29uZmlnIFBHVEFCTEVfSEFTX0hVR0VfTEVBVkVTXFxubW0vS2NvbmZpZzoxMDE1OlxcdGRlZl9ib29sIFRSQU5TUEFSRU5UX0hVR0VQQUdFIHx8IEhVR0VUTEJfUEFHRVxcbm1tL0tjb25maWctMTAxNi1cXG4tLVxcbm1tL0tjb25maWc9MTAyMD1jb25maWcgSEFWRV9HSUdBTlRJQ19GT0xJT1NcXG5tbS9LY29uZmlnLTEwMjEtXFx0ZGVmX2Jvb2wgKEhVR0VUTEJfUEFHRSBcXHUwMDI2XFx1MDAyNiBBUkNIX0hBU19HSUdBTlRJQ19QQUdFKSB8fCBcXFxcXFxubW0vS2NvbmZpZzoxMDIyOlxcdFxcdCAoWk9ORV9ERVZJQ0UgXFx1MDAyNlxcdTAwMjYgSEFWRV9BUkNIX1RSQU5TUEFSRU5UX0hVR0VQQUdFX1BVRClcXG5tbS9LY29uZmlnLTEwMjMtXFxuLS1cXG5tbS9LY29uZmlnPTEwMjg9Y29uZmlnIEFSQ0hfU1VQUE9SVFNfSFVHRV9QRk5NQVBcXG5tbS9LY29uZmlnLTEwMjktXFx0ZGVmX2Jvb2wgblxcbm1tL0tjb25maWc6MTAzMDpcXHRkZXBlbmRzIG9uIFRSQU5TUEFSRU5UX0hVR0VQQUdFXFxubW0vS2NvbmZpZy0xMDMxLVxcbm1tL0tjb25maWc9MTAzMj1jb25maWcgQVJDSF9TVVBQT1JUU19QTURfUEZOTUFQXFxubW0vS2NvbmZpZy0xMDMzLVxcdGRlZl9ib29sIHlcXG5tbS9LY29uZmlnOjEwMzQ6XFx0ZGVwZW5kcyBvbiBBUkNIX1NVUFBPUlRTX0hVR0VfUEZOTUFQIFxcdTAwMjZcXHUwMDI2IEhBVkVfQVJDSF9UUkFOU1BBUkVOVF9IVUdFUEFHRVxcbm1tL0tjb25maWctMTAzNS1cXG5tbS9LY29uZmlnPTEwMzY9Y29uZmlnIEFSQ0hfU1VQUE9SVFNfUFVEX1BGTk1BUFxcbm1tL0tjb25maWctMTAzNy1cXHRkZWZfYm9vbCB5XFxubW0vS2NvbmZpZzoxMDM4OlxcdGRlcGVuZHMgb24gQVJDSF9TVVBQT1JUU19IVUdFX1BGTk1BUCBcXHUwMDI2XFx1MDAyNiBIQVZFX0FSQ0hfVFJBTlNQQVJFTlRfSFVHRVBBR0VfUFVEXFxubW0vS2NvbmZpZy0xMDM5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxNzo1NzoyNi45MDIzOTgzMDFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NjYzOTE3NDQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBEQU1PTiBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB3aGF0IEkgY2FuIHNlZSwgdGhpcyBwYXRjaCBpcyBhZGRpbmcgZnVuY3Rpb25hbGl0eSB0byBEQU1PTiwgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gZm9saW8gbWFuaXB1bGF0aW9uLCBsaWtlbHkgZm9yIG1lbW9yeSBtYW5hZ2VtZW50IG9wdGltaXphdGlvbiBvciBwZXJoYXBzIGZvciBtb3JlIGdyYW51bGFyIG1vbml0b3JpbmcuXG5cblRoZSBjb3JlIG9mIHRoZSBuZXcgY29kZSBzZWVtcyB0byByZXZvbHZlIGFyb3VuZCBgZGFtb25fY29sbGFwc2VfZm9saW9fcmFuZ2VgLCBgZGFtb3NfdmFfY29sbGFwc2VgLCBhbmQgYGRhbW9zX3ZhX3NwbGl0YC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdywgc28gSSd2ZSB0cmFjZWQgaXQ6IGBkYW1vbl9jb2xsYXBzZV9mb2xpb19yYW5nZWAgaXMgZGVmaW5pdGVseSByZWFjaGFibGU7IGl0J3MgY2FsbGVkIGJ5IGBkYW1vc192YV9jb2xsYXBzZWAuIEFuZCBib3RoIGBkYW1vc192YV9jb2xsYXBzZWAgYW5kIGBkYW1vc192YV9zcGxpdGAgYXJlIGNhbGxlZCB3aXRoaW4gYGRhbW9uX3ZhX2FwcGx5X3NjaGVtZWAsIHdoaWNoLCBhcyBJIGtub3csIGlzIGEgZnVuY3Rpb24gY2FsbGVkIGJ5IHRoZSBEQU1PTiBjb3JlLiBDcnVjaWFsbHksIHRoZSBwYXRjaCBhbHNvIGludHJvZHVjZXMgdGhlIFwiU1BMSVRcIiBhY3Rpb24gdmlhIGBEQU1PU19TUExJVGAgaW4gYGRhbW9zX3N5c2ZzX2FjdGlvbl9uYW1lc2AuIFRoaXMgaXMga2V5IGJlY2F1c2UgdGhhdCdzIGhvdyBzeXprYWxsZXIsIHRoZSBmdXp6ZXIsIGludGVyYWN0cyB3aXRoIERBTU9OIHZpYSB0aGUgc3lzZnMgaW50ZXJmYWNlLiBUaGlzIG1lYW5zIHN5emthbGxlciBjYW4gbm93IGNyZWF0ZSBEQU1PTiBzY2hlbWVzIHVzaW5nIFwic3BsaXRcIiBhbmQgXCJjb2xsYXBzZVwiIHdpdGggdGhlIGB0YXJnZXRfb3JkZXJgIHBhcmFtZXRlcnMuIEl0IGxvb2tzIGxpa2UgdGhlIHRhcmdldCBoZXJlIGlzIHRvIGFsbG93IGZ1enppbmcgdGhlIHNwbGl0dGluZyBhbmQgY29sbGFwc2luZyBmdW5jdGlvbmFsaXR5IHdpdGhpbiBEQU1PTi5cblxuSSBuZWVkIHRvIG5haWwgZG93biB0aGUgc3ltYm9scyBvZiBpbXBvcnRhbmNlOiB0aGUgZnVuY3Rpb25zIEkgbWVudGlvbmVkIGFib3ZlLCBzcGVjaWZpY2FsbHkgYGRhbW9zX3ZhX2NvbGxhcHNlYCwgYGRhbW9zX3ZhX3NwbGl0YCwgYW5kIGBkYW1vbl9jb2xsYXBzZV9mb2xpb19yYW5nZWAuIEknbGwgYWRkIHRob3NlIHRvIG15IGZvY3VzIGxpc3QuXG5cbkkgc2hvdWxkIGFsc28gY2hlY2sgZm9yIGFueSBvdGhlciBhZGRlZCBvciBtb2RpZmllZCBmdW5jdGlvbnMgcmVsYXRlZCB0byB0aGlzIG5ldyBmdW5jdGlvbmFsaXR5OiBJJ20gc2VlaW5nIGB0YXJnZXRfb3JkZXJfc2hvd2AsIGB0YXJnZXRfb3JkZXJfc3RvcmVgLCBgZGFtb25fc3lzZnNfbWtfc2NoZW1lYCwgYW5kIGBkYW1vbl92YV9hcHBseV9zY2hlbWVgLiBJJ2xsIG5lZWQgdG8ga2VlcCB0aG9zZSBpbiBtaW5kIGFzIHBvdGVudGlhbGx5IHJlbGF0ZWQgc3ltYm9scy5cblxuTm93LCBsZXQncyBtYWtlIHN1cmUgdGhlIGRlcGVuZGVuY2llcyBhcmUgYXMgSSB1bmRlcnN0YW5kIHRoZW0uIEkgbmVlZCB0byBtYWtlIHN1cmUgYFRSQU5TUEFSRU5UX0hVR0VQQUdFYCBpcyBlbmFibGVkIGZvciBmdW5jdGlvbnMgc3VjaCBhcyBgc3BsaXRfZm9saW9fdG9fb3JkZXJgIGFuZCBgY29sbGFwc2VfaHVnZV9wYWdlYC4gYHNwbGl0X2ZvbGlvX3RvX29yZGVyYCBpcyBpbiBgbW0vaHVnZV9tZW1vcnkuY2AgYW5kIGlzIGNvbmRpdGlvbmFsIG9uIGBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VgLCBhbmQgYGNvbGxhcHNlX2h1Z2VfcGFnZWAgaXMgaW4gYG1tL2todWdlcGFnZWQuY2AgYWxzbyBjb25kaXRpb25hbCBvbiBgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFYC4gU28sIHRvIGJlIGNsZWFyLCBib3RoIHJlcXVpcmUgdGhhdCBjb25maWcgdG8gYmUgZW5hYmxlZC4gSSBhbSBnb2luZyB0byBuZWVkIHRvIGtlZXAgdGhlIGZvbGxvd2luZyBjb25maWdzIGluIG1pbmQ6IGBEQU1PTl9TWVNGU2AsIGBEQU1PTl9WQUREUmAsIGFuZCBgVFJBTlNQQVJFTlRfSFVHRVBBR0VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MDI4LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDE3OjU3OjM1LjU2NjMxNzk5MVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzE0NDAwNDgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImtodWdlcGFnZWQub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9NYWtlZmlsZT0xMDA9b2JqLSQoQ09ORklHX0RFVklDRV9NSUdSQVRJT04pICs9IG1pZ3JhdGVfZGV2aWNlLm9cXG5tbS9NYWtlZmlsZToxMDE6b2JqLSQoQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFKSArPSBodWdlX21lbW9yeS5vIGtodWdlcGFnZWQub1xcbm1tL01ha2VmaWxlLTEwMi1vYmotJChDT05GSUdfUEFHRV9DT1VOVEVSKSArPSBwYWdlX2NvdW50ZXIub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxNzo1NzozNS44ODA3NzAzNloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTI0OTgyMDkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIEtlcm5lbCBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEknbSBjb25maXJtaW5nIHRoYXQgdGhlIGBraHVnZXBhZ2VkLm9gIG1vZHVsZSBpcyBkZWZpbml0ZWx5IGNvbXBpbGVkIGFuZCBpbmNsdWRlZCB3aGVuIGBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VgIGlzIGVuYWJsZWQuIFRoYXQncyBhIGdpdmVuOyBpdCdzIHRoZSBjb3JlIG9mIGhvdyB0cmFuc3BhcmVudCBodWdlcGFnZXMgZnVuY3Rpb24gaW4gdGhlIGtlcm5lbC4gU28sIGNsZWFybHksIGBUUkFOU1BBUkVOVF9IVUdFUEFHRWAgaXMgYSBoYXJkIHJlcXVpcmVtZW50IGluIHRoaXMgY29udGV4dC4gSXQncyBhIGZ1bmRhbWVudGFsIGJ1aWxkaW5nIGJsb2NrLlxuXG5Ob3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgZm9yIGBtbS9kYW1vbi92YWRkci5jYC4gTXkgbmV4dCBzdGVwIGlzIHRvIGRyaWxsIGRvd24gYW5kIHNlZSBpZiB0aGUgYERBTU9OX1ZBRERSYCBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyBhbHNvIGEgbmVjZXNzYXJ5IHByZXJlcXVpc2l0ZSBmb3IgdGhhdCBzcGVjaWZpYyBmaWxlLiBMZXQgbWUgdmVyaWZ5IHRoYXQgYW5kIG1ha2Ugc3VyZSBhbGwgb3VyIGR1Y2tzIGFyZSBpbiBhIHJvdyByZWdhcmRpbmcgaG93IHRoZXNlIHBhcnRzIG9mIHRoZSBrZXJuZWwgYXJlIGJ1aWx0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDI4MSwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDE3OjU3OjM5LjQwNTc1NDU1MloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjExNzYxNTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmFkZHIub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9kYW1vbi9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9kYW1vbi9NYWtlZmlsZT0zPW9iai15XFx0XFx0XFx0XFx0Oj0gY29yZS5vXFxubW0vZGFtb24vTWFrZWZpbGU6NDpvYmotJChDT05GSUdfREFNT05fVkFERFIpXFx0Kz0gb3BzLWNvbW1vbi5vIHZhZGRyLm9cXG5tbS9kYW1vbi9NYWtlZmlsZS01LW9iai0kKENPTkZJR19EQU1PTl9QQUREUilcXHQrPSBvcHMtY29tbW9uLm8gcGFkZHIub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxNzo1NzozOS40NjY5MzY4MzdaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc5OTg5MjI5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqRGVwZW5kZW5jaWVzIGFuZCB0aGUgREFNT04gTGFuZHNjYXBlKipcblxuUmlnaHQsIHNvIEknbSB0aGlua2luZyBhYm91dCBEQU1PTi4gSSBzZWUgdGhvc2UgY29uc3RhbnRzOiBgREFNT05fVkFERFJgLiBZZXMsIGFic29sdXRlbHkgbmVjZXNzYXJ5LiBObyBxdWVzdGlvbi4gVGhlIHZpcnR1YWwgYWRkcmVzcyByZXF1aXJlbWVudCBpcyBmdW5kYW1lbnRhbCB0byBob3cgaXQgb3BlcmF0ZXMsIGhvdyBpdCB0cmFja3MgbWVtb3J5LiBNYWtlcyBwZXJmZWN0IHNlbnNlLlxuXG5BbmQgdGhlbiwgbG9va2luZyBhdCBgc3lzZnMtc2NoZW1lcy5jYCwgdGhlIGNvbm5lY3Rpb24gYmVjb21lcyBldmVuIGNsZWFyZXIuIFdlJ3JlIHRhbGtpbmcgYWJvdXQgcG9raW5nIGFyb3VuZCBpbiB0aGUga2VybmVsJ3MgZmlsZSBzeXN0ZW0sIHNvIGBEQU1PTl9TWVNGU2AgaXMsIG5hdHVyYWxseSwgYW5vdGhlciBjcnVjaWFsIHBpZWNlIG9mIHRoZSBwdXp6bGUuIFdpdGhvdXQgdGhhdCBhY2Nlc3MsIHdpdGhvdXQgdGhhdCBpbnRlcmZhY2UsIHRoZXJlJ3Mgbm8gd2F5IHRvIGNvbmZpZ3VyZSBhbmQgY29udHJvbCB0aGUgbW9uaXRvcmluZyBzY2hlbWVzIHRoYXQgdW5kZXJwaW4gZXZlcnl0aGluZyB3ZSdyZSB0cnlpbmcgdG8gYWNoaWV2ZSB3aXRoIERBTU9OLiBHb3R0YSBoYXZlIGJvdGgsIGFuZCB1bmRlcnN0YW5kaW5nIHdoeSBpcyBrZXkgdG8gZWZmZWN0aXZlIGRldmVsb3BtZW50IGFuZCB1c2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNjUxLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMTc6NTc6NDMuMjY2ODMxNzUyWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MjY2MDY2NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzeXNmcy1zY2hlbWVzLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vZGFtb24vTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZGFtb24vTWFrZWZpbGU9NT1vYmotJChDT05GSUdfREFNT05fUEFERFIpXFx0Kz0gb3BzLWNvbW1vbi5vIHBhZGRyLm9cXG5tbS9kYW1vbi9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19EQU1PTl9TWVNGUylcXHQrPSBzeXNmcy1jb21tb24ubyBzeXNmcy1zY2hlbWVzLm8gc3lzZnMub1xcbm1tL2RhbW9uL01ha2VmaWxlLTctb2JqLSQoQ09ORklHX0RBTU9OX1JFQ0xBSU0pXFx0Kz0gbW9kdWxlcy1jb21tb24ubyByZWNsYWltLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMTc6NTc6NDMuMzI5NDk4NDk2WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc1NDIxNzQ1MTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIERBTU9OIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBjb25maXJtZWQgdGhhdCBgREFNT05fU1lTRlNgIGlzIGEgY3JpdGljYWwgcmVxdWlyZW1lbnQgZm9yIHRoaXMgcGF0Y2gg4oCTIG5vIHN1cnByaXNlcyB0aGVyZS4gVGhlIGNvcmUgY29uZmlncyBJJ20gc2VlaW5nIHRoYXQgYXJlIHJlbGV2YW50IGFyZSBgREFNT05fU1lTRlNgLCBgREFNT05fVkFERFJgLCBhbmQgYFRSQU5TUEFSRU5UX0hVR0VQQUdFYC4gSSdtIHN0YXJ0aW5nIHRvIGJ1aWxkIGEgcGljdHVyZSBvZiBob3cgdGhpcyBwYXRjaCBmaXRzIGludG8gdGhlIGJpZ2dlciBtZW1vcnkgbWFuYWdlbWVudCBsYW5kc2NhcGUuXG5cbkknbSB6ZXJvaW5nIGluIG9uIGEgZmV3IGtleSBzeW1ib2xzIHRvIGd1aWRlIG15IGFuYWx5c2lzLiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBgZGFtb3NfdmFfY29sbGFwc2VgLCBgZGFtb3NfdmFfc3BsaXRgLCBgZGFtb25fY29sbGFwc2VfZm9saW9fcmFuZ2VgLCBhbmQgYHRhcmdldF9vcmRlcl9zdG9yZWAuIExldCBtZSBqdXN0IGNvbmZpcm0gaWYgdGhleSdyZSBpbnRlcm5hbCBvciBleHBvcnRlZC4gQWgsIGdvb2QuIGBkYW1vc192YV9jb2xsYXBzZWAgYW5kIGBkYW1vc192YV9zcGxpdGAgYXJlIGluZGVlZCBzdGF0aWMsIGJvdGggZm91bmQgd2l0aGluIGBtbS9kYW1vbi92YWRkci5jYC4gYGRhbW9uX2NvbGxhcHNlX2ZvbGlvX3JhbmdlYCBpcyBleHBvcnRlZCwgbG9jYXRlZCBpbiBgbW0va2h1Z2VwYWdlZC5jYC4gQW5kIGB0YXJnZXRfb3JkZXJfc3RvcmVgIGlzIGFsc28gc3RhdGljLCB3aXRoaW4gYG1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuY2AuIEkgd2lsbCBiZSBpbmNsdWRpbmcgdGhlc2UgaW4gbXkgbGlzdCBvZiBmb2N1cyBzeW1ib2xzLlxuXG5Ob3csIGxldCdzIHN0ZXAgYmFjayBhbmQgY29uc2lkZXIgdGhlICp3aHkqLiBUaGlzIHBhdGNoIHNlZW1zIHRvIGJlIGludHJvZHVjaW5nIGEgYERBTU9TX1NQTElUYCBhY3Rpb24gYW5kIGVuaGFuY2luZyBgREFNT1NfQ09MTEFQU0VgIHdpdGggYSBgdGFyZ2V0X29yZGVyYCBwYXJhbWV0ZXIuIFRoYXQncyBhIGRlZmluaXRlIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBEQU1PTiBzdWJzeXN0ZW0uIENydWNpYWxseSwgaXQncyBtb2RpZnlpbmcgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgaXRzZWxmIHRvIGFsbG93IGZvciBmb2xpbyBzcGxpdHRpbmcgYW5kIGNvbGxhcHNpbmcgYWNjb3JkaW5nIHRvIERBTU9OIHNjaGVtZXMuIFRoaXMgZGlyZWN0bHkgaW1wYWN0cyB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiBEQU1PTiBhbmQgdGhlIGtlcm5lbCdzIG1lbW9yeSBtYW5hZ2VtZW50LiBUaGUga2V5IGlzIHRoYXQgdGhlc2UgbmV3IGZlYXR1cmVzIGFyZSBhY2Nlc3NpYmxlIHZpYSB0aGUgREFNT04gc3lzZnMgaW50ZXJmYWNlLCBtYWtpbmcgdGhlbSByZWFjaGFibGUgYW5kIHRlc3RhYmxlLlxuXG5BbmQgeWVzLCB0aGUgcGF0Y2ggaXMgbWFya2VkIGFzIGBXb3J0aEZ1enppbmdgLiBUaGUgZmFjdCB0aGF0IGl0J3MgYWx0ZXJpbmcgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBhbmQgZXhwb3NpbmcgdGhvc2UgY2hhbmdlcyB2aWEgc3lzZnMgaXMgdGhlIGNyaXRpY2FsIGZhY3Rvci4gVGhpcyBpcyBhbiBleGNlbGxlbnQgY2FuZGlkYXRlIGZvciBmdXp6aW5nIHRvIHVuY292ZXIgcG90ZW50aWFsIGlzc3VlcywgYW5kIEkgbmVlZCB0byBmb3JtdWxhdGUgYSBmdXp6aW5nIHN0cmF0ZWd5LiBPa2F5LCBJJ20gcmVhZHkgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTAxNywiT3V0cHV0VG9rZW5zIjoxNzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMDgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMTc6NTc6NTAuODcxNjc2ODU0WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTY1NjkxMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRBTU9OX1NZU0ZTXCIsXG4gICAgXCJEQU1PTl9WQUREUlwiLFxuICAgIFwiVFJBTlNQQVJFTlRfSFVHRVBBR0VcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkYW1vc192YV9jb2xsYXBzZVwiLFxuICAgIFwiZGFtb3NfdmFfc3BsaXRcIixcbiAgICBcImRhbW9uX2NvbGxhcHNlX2ZvbGlvX3JhbmdlXCIsXG4gICAgXCJ0YXJnZXRfb3JkZXJfc3RvcmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgREFNT04gc3Vic3lzdGVtIGJ5IGFkZGluZyBhIG5ldyBEQU1PU19TUExJVCBhY3Rpb24gYW5kIGV4dGVuZGluZyBEQU1PU19DT0xMQVBTRSB3aXRoIGEgdGFyZ2V0X29yZGVyIHBhcmFtZXRlci4gSXQgbW9kaWZpZXMgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyB0byBzcGxpdCBhbmQgY29sbGFwc2UgZm9saW9zIGJhc2VkIG9uIERBTU9OIHNjaGVtZXMuIFRoZXNlIGZlYXR1cmVzIGFyZSBleHBvc2VkIHRvIHVzZXJzcGFjZSB2aWEgdGhlIERBTU9OIHN5c2ZzIGludGVyZmFjZSwgbWFraW5nIHRoZW0gcmVhY2hhYmxlIGFuZCB0ZXN0YWJsZSBieSBhIGZ1enplci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEQU1PTl9TWVNGU1wiLFxuICAgIFwiREFNT05fVkFERFJcIixcbiAgICBcIlRSQU5TUEFSRU5UX0hVR0VQQUdFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZGFtb3NfdmFfY29sbGFwc2VcIixcbiAgICBcImRhbW9zX3ZhX3NwbGl0XCIsXG4gICAgXCJkYW1vbl9jb2xsYXBzZV9mb2xpb19yYW5nZVwiLFxuICAgIFwidGFyZ2V0X29yZGVyX3N0b3JlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIERBTU9OIHN1YnN5c3RlbSBieSBhZGRpbmcgYSBuZXcgREFNT1NfU1BMSVQgYWN0aW9uIGFuZCBleHRlbmRpbmcgREFNT1NfQ09MTEFQU0Ugd2l0aCBhIHRhcmdldF9vcmRlciBwYXJhbWV0ZXIuIEl0IG1vZGlmaWVzIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgdG8gc3BsaXQgYW5kIGNvbGxhcHNlIGZvbGlvcyBiYXNlZCBvbiBEQU1PTiBzY2hlbWVzLiBUaGVzZSBmZWF0dXJlcyBhcmUgZXhwb3NlZCB0byB1c2Vyc3BhY2UgdmlhIHRoZSBEQU1PTiBzeXNmcyBpbnRlcmZhY2UsIG1ha2luZyB0aGVtIHJlYWNoYWJsZSBhbmQgdGVzdGFibGUgYnkgYSBmdXp6ZXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowh7qn2[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-01 17:47:41 +0000 UTC FinishedAt: 2026-07-01 17:57:53 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "bd759e46b2ff02036fb80f389f78eedb43445357", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DAMON_SYSFS", "DAMON_VADDR", "TRANSPARENT_HUGEPAGE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "bd759e46b2ff02036fb80f389f78eedb43445357", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DAMON_SYSFS", "DAMON_VADDR", "TRANSPARENT_HUGEPAGE" ], "series_id": "e3624b91-ac55-4a84-bacb-e20f896e2b09" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "damos_va_collapse", "damos_va_split", "damon_collapse_folio_range", "target_order_store" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDE3OjU3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RBTU9OX1NZU0ZTJiMzNDssCiAgICAmIzM0O0RBTU9OX1ZBRERSJiMzNDssCiAgICAmIzM0O1RSQU5TUEFSRU5UX0hVR0VQQUdFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZGFtb3NfdmFfY29sbGFwc2UmIzM0OywKICAgICYjMzQ7ZGFtb3NfdmFfc3BsaXQmIzM0OywKICAgICYjMzQ7ZGFtb25fY29sbGFwc2VfZm9saW9fcmFuZ2UmIzM0OywKICAgICYjMzQ7dGFyZ2V0X29yZGVyX3N0b3JlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBEQU1PTiBzdWJzeXN0ZW0gYnkgYWRkaW5nIGEgbmV3IERBTU9TX1NQTElUIGFjdGlvbiBhbmQgZXh0ZW5kaW5nIERBTU9TX0NPTExBUFNFIHdpdGggYSB0YXJnZXRfb3JkZXIgcGFyYW1ldGVyLiBJdCBtb2RpZmllcyBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIHRvIHNwbGl0IGFuZCBjb2xsYXBzZSBmb2xpb3MgYmFzZWQgb24gREFNT04gc2NoZW1lcy4gVGhlc2UgZmVhdHVyZXMgYXJlIGV4cG9zZWQgdG8gdXNlcnNwYWNlIHZpYSB0aGUgREFNT04gc3lzZnMgaW50ZXJmYWNlLCBtYWtpbmcgdGhlbSByZWFjaGFibGUgYW5kIHRlc3RhYmxlIGJ5IGEgZnV6emVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDE3OjU3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYjE3MmIwZGVkYjU0MzJhNWUyMDA5ODVkZDQxYWUzMGFkYTg4NTNkNlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDEgMTc6NTY6NTkgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9kYW1vbi5oIGIvaW5jbHVkZS9saW51eC9kYW1vbi5oXG5pbmRleCA2ZjdlZGIzNTkwZWY5Ny4uMzBjZjRhZmIyMTJjZmIgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2RhbW9uLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvZGFtb24uaFxuQEAgLTEyMSw2ICYjNDM7MTIxLDcgQEAgc3RydWN0IGRhbW9uX3RhcmdldCB7XG4gICogQERBTU9TX0hVR0VQQUdFOlx0Q2FsbCBgYG1hZHZpc2UoKWBgIGZvciB0aGUgcmVnaW9uIHdpdGggTUFEVl9IVUdFUEFHRS5cbiAgKiBAREFNT1NfTk9IVUdFUEFHRTpcdENhbGwgYGBtYWR2aXNlKClgYCBmb3IgdGhlIHJlZ2lvbiB3aXRoIE1BRFZfTk9IVUdFUEFHRS5cbiAgKiBAREFNT1NfQ09MTEFQU0U6XHRDYWxsIGBgbWFkdmlzZSgpYGAgZm9yIHRoZSByZWdpb24gd2l0aCBNQURWX0NPTExBUFNFLlxuJiM0MzsgKiBAREFNT1NfU1BMSVQ6XHRTcGxpdCBsYXJnZSBmb2xpb3MgdG8gdGhlIHRhcmdldCBtVEhQIG9yZGVyLlxuICAqIEBEQU1PU19MUlVfUFJJTzpcdFByaW9yaXRpemUgdGhlIHJlZ2lvbiBvbiBpdHMgTFJVIGxpc3RzLlxuICAqIEBEQU1PU19MUlVfREVQUklPOlx0RGVwcmlvcml0aXplIHRoZSByZWdpb24gb24gaXRzIExSVSBsaXN0cy5cbiAgKiBAREFNT1NfTUlHUkFURV9IT1Q6ICBNaWdyYXRlIHRoZSByZWdpb25zIHByaW9yaXRpemluZyB3YXJtZXIgcmVnaW9ucy5cbkBAIC0xNDEsNiAmIzQzOzE0Miw3IEBAIGVudW0gZGFtb3NfYWN0aW9uIHtcbiBcdERBTU9TX0hVR0VQQUdFLFxuIFx0REFNT1NfTk9IVUdFUEFHRSxcbiBcdERBTU9TX0NPTExBUFNFLFxuJiM0MztcdERBTU9TX1NQTElULFxuIFx0REFNT1NfTFJVX1BSSU8sXG4gXHREQU1PU19MUlVfREVQUklPLFxuIFx0REFNT1NfTUlHUkFURV9IT1QsXG5AQCAtNTcyLDYgJiM0Mzs1NzQsMTQgQEAgc3RydWN0IGRhbW9zX21pZ3JhdGVfZGVzdHMge1xuIHN0cnVjdCBkYW1vcyB7XG4gXHRzdHJ1Y3QgZGFtb3NfYWNjZXNzX3BhdHRlcm4gcGF0dGVybjtcbiBcdGVudW0gZGFtb3NfYWN0aW9uIGFjdGlvbjtcbiYjNDM7XHQvKlxuJiM0MztcdCAqIEB0YXJnZXRfb3JkZXI6IHRhcmdldCBtVEhQIG9yZGVyIGZvciBEQU1PU19DT0xMQVBTRSBhbmRcbiYjNDM7XHQgKiBEQU1PU19TUExJVC4gIEZvciBDT0xMQVBTRSwgMCBtZWFucyBQTUQgb3JkZXIgZGVmYXVsdCxcbiYjNDM7XHQgKiB2YWxpZCB2YWx1ZXM6IDAsIDIuLkhQQUdFX1BNRF9PUkRFUi4gIEZvciBTUExJVCxcbiYjNDM7XHQgKiB2YWxpZCB2YWx1ZXM6IDIuLkhQQUdFX1BNRF9PUkRFUi0xOyAwIGFuZCBIUEFHRV9QTURfT1JERVJcbiYjNDM7XHQgKiBhcmUgcmVqZWN0ZWQgYXQgc2NoZW1lIGNyZWF0aW9uIHRpbWUgKGRlZmF1bHRpbmcgdG8gMikuXG4mIzQzO1x0ICovXG4mIzQzO1x0dW5zaWduZWQgaW50IHRhcmdldF9vcmRlcjtcbiBcdHVuc2lnbmVkIGxvbmcgYXBwbHlfaW50ZXJ2YWxfdXM7XG4gLyogcHJpdmF0ZTogaW50ZXJuYWwgdXNlIG9ubHkgKi9cbiBcdC8qXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9raHVnZXBhZ2VkLmggYi9pbmNsdWRlL2xpbnV4L2todWdlcGFnZWQuaFxuaW5kZXggZDdhOTA1M2ZmNGZlZDEuLjZmYjhhNjg1Nzc5MDNhIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9raHVnZXBhZ2VkLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgva2h1Z2VwYWdlZC5oXG5AQCAtMjAsNiAmIzQzOzIwLDkgQEAgZXh0ZXJuIGJvb2wgY3VycmVudF9pc19raHVnZXBhZ2VkKHZvaWQpO1xuIHZvaWQgY29sbGFwc2VfcHRlX21hcHBlZF90aHAoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgYWRkcixcbiBcdFx0Ym9vbCBpbnN0YWxsX3BtZCk7XG4gXG4mIzQzO2ludCBkYW1vbl9jb2xsYXBzZV9mb2xpb19yYW5nZShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBzdGFydF9hZGRyLFxuJiM0MztcdFx0XHQgICAgICAgdW5zaWduZWQgaW50IHRhcmdldF9vcmRlcik7XG4mIzQzO1xuIHN0YXRpYyBpbmxpbmUgdm9pZCBraHVnZXBhZ2VkX2Zvcmsoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHN0cnVjdCBtbV9zdHJ1Y3QgKm9sZG1tKVxuIHtcbiBcdGlmIChtbV9mbGFnc190ZXN0KE1NRl9WTV9IVUdFUEFHRSwgb2xkbW0pKVxuZGlmZiAtLWdpdCBhL21tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYyBiL21tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuY1xuaW5kZXggMzI5Y2ZkMGJiZTlmMzIuLjU0NzI1MmZjOGEyMGFkIDEwMDY0NFxuLS0tIGEvbW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmNcbkBAIC02LDcgJiM0Mzs2LDkgQEBcbiAgKi9cbiBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9zbGFiLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvbW0uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L251bWEuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9odWdlX21tLmhcdTAwM2VcbiBcbiAjaW5jbHVkZSBcJiMzNDtzeXNmcy1jb21tb24uaFwmIzM0O1xuIFxuQEAgLTIyNTcsNiAmIzQzOzIyNTksNyBAQCBzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lIHtcbiBcdHN0cnVjdCBkYW1vbl9zeXNmc19zdGF0cyAqc3RhdHM7XG4gXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbnMgKnRyaWVkX3JlZ2lvbnM7XG4gXHRpbnQgdGFyZ2V0X25pZDtcbiYjNDM7XHR1bnNpZ25lZCBpbnQgdGFyZ2V0X29yZGVyO1xuIFx0c3RydWN0IGRhbW9zX3N5c2ZzX2Rlc3RzICpkZXN0cztcbiB9O1xuIFxuQEAgLTIyOTAsNiAmIzQzOzIyOTMsMTAgQEAgc3RhdGljIHN0cnVjdCBkYW1vc19zeXNmc19hY3Rpb25fbmFtZSBkYW1vc19zeXNmc19hY3Rpb25fbmFtZXNbXSA9IHtcbiBcdFx0LmFjdGlvbiA9IERBTU9TX0NPTExBUFNFLFxuIFx0XHQubmFtZSA9IFwmIzM0O2NvbGxhcHNlXCYjMzQ7LFxuIFx0fSxcbiYjNDM7XHR7XG4mIzQzO1x0XHQuYWN0aW9uID0gREFNT1NfU1BMSVQsXG4mIzQzO1x0XHQubmFtZSA9IFwmIzM0O3NwbGl0XCYjMzQ7LFxuJiM0MztcdH0sXG4gXHR7XG4gXHRcdC5hY3Rpb24gPSBEQU1PU19MUlVfUFJJTyxcbiBcdFx0Lm5hbWUgPSBcJiMzNDtscnVfcHJpb1wmIzM0OyxcbkBAIC0yNjQyLDYgJiM0MzsyNjQ5LDM0IEBAIHN0YXRpYyBzc2l6ZV90IHRhcmdldF9uaWRfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosXG4gXHRyZXR1cm4gZXJyID8gZXJyIDogY291bnQ7XG4gfVxuIFxuJiM0MztzdGF0aWMgc3NpemVfdCB0YXJnZXRfb3JkZXJfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcbiYjNDM7XHRcdHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZSAqc2NoZW1lID0gY29udGFpbmVyX29mKGtvYmosXG4mIzQzO1x0XHRcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWUsIGtvYmopO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIFwmIzM0OyV1XFxuXCYjMzQ7LCBzY2hlbWUtXHUwMDNldGFyZ2V0X29yZGVyKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHNzaXplX3QgdGFyZ2V0X29yZGVyX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuJiM0MztcdFx0c3RydWN0IGtvYmpfYXR0cmlidXRlICphdHRyLCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWUgKnNjaGVtZSA9IGNvbnRhaW5lcl9vZihrb2JqLFxuJiM0MztcdFx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lLCBrb2JqKTtcbiYjNDM7XHR1bnNpZ25lZCBpbnQgdmFsO1xuJiM0MztcdGludCBlcnI7XG4mIzQzO1xuJiM0MztcdGVyciA9IGtzdHJ0b3VpbnQoYnVmLCAwLCBcdTAwMjZ2YWwpO1xuJiM0MztcdGlmIChlcnIpXG4mIzQzO1x0XHRyZXR1cm4gZXJyO1xuJiM0MztcbiYjNDM7XHRpZiAodmFsICE9IDAgXHUwMDI2XHUwMDI2ICh2YWwgXHUwMDNjIDIgfHwgdmFsIFx1MDAzZSBIUEFHRV9QTURfT1JERVIpKVxuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1xuJiM0MztcdHNjaGVtZS1cdTAwM2V0YXJnZXRfb3JkZXIgPSB2YWw7XG4mIzQzO1x0cmV0dXJuIGNvdW50O1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyB2b2lkIGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWxlYXNlKHN0cnVjdCBrb2JqZWN0ICprb2JqKVxuIHtcbiBcdGtmcmVlKGNvbnRhaW5lcl9vZihrb2JqLCBzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lLCBrb2JqKSk7XG5AQCAtMjY1NiwxMCAmIzQzOzI2OTEsMTQgQEAgc3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vbl9zeXNmc19zY2hlbWVfYXBwbHlfaW50ZXJ2YWxfdXNfYXR0ciA9XG4gc3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vbl9zeXNmc19zY2hlbWVfdGFyZ2V0X25pZF9hdHRyID1cbiBcdFx0X19BVFRSX1JXX01PREUodGFyZ2V0X25pZCwgMDYwMCk7XG4gXG4mIzQzO3N0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgZGFtb25fc3lzZnNfc2NoZW1lX3RhcmdldF9vcmRlcl9hdHRyID1cbiYjNDM7XHRcdF9fQVRUUl9SV19NT0RFKHRhcmdldF9vcmRlciwgMDYwMCk7XG4mIzQzO1xuIHN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICpkYW1vbl9zeXNmc19zY2hlbWVfYXR0cnNbXSA9IHtcbiBcdFx1MDAyNmRhbW9uX3N5c2ZzX3NjaGVtZV9hY3Rpb25fYXR0ci5hdHRyLFxuIFx0XHUwMDI2ZGFtb25fc3lzZnNfc2NoZW1lX2FwcGx5X2ludGVydmFsX3VzX2F0dHIuYXR0cixcbiBcdFx1MDAyNmRhbW9uX3N5c2ZzX3NjaGVtZV90YXJnZXRfbmlkX2F0dHIuYXR0cixcbiYjNDM7XHRcdTAwMjZkYW1vbl9zeXNmc19zY2hlbWVfdGFyZ2V0X29yZGVyX2F0dHIuYXR0cixcbiBcdE5VTEwsXG4gfTtcbiBBVFRSSUJVVEVfR1JPVVBTKGRhbW9uX3N5c2ZzX3NjaGVtZSk7XG5AQCAtMzAwNSw2ICYjNDM7MzA0NCwyNCBAQCBzdGF0aWMgc3RydWN0IGRhbW9zICpkYW1vbl9zeXNmc19ta19zY2hlbWUoXG4gXHRpZiAoIXNjaGVtZSlcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXG4mIzQzO1x0aWYgKHN5c2ZzX3NjaGVtZS1cdTAwM2VhY3Rpb24gPT0gREFNT1NfQ09MTEFQU0UgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgIHN5c2ZzX3NjaGVtZS1cdTAwM2V0YXJnZXRfb3JkZXIgIT0gMCBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgc3lzZnNfc2NoZW1lLVx1MDAzZXRhcmdldF9vcmRlciAhPSBIUEFHRV9QTURfT1JERVIpIHtcbiYjNDM7XHRcdHByX3dhcm4oXCYjMzQ7REFNT04gY29sbGFwc2U6IHRhcmdldF9vcmRlciAldSBub3Qgc3VwcG9ydGVkLCBvbmx5IFBNRCBvcmRlciAoJXUpIGlzIGF2YWlsYWJsZS4gVXNlIDAgb3IgJXUuXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRzeXNmc19zY2hlbWUtXHUwMDNldGFyZ2V0X29yZGVyLFxuJiM0MztcdFx0XHRIUEFHRV9QTURfT1JERVIsIEhQQUdFX1BNRF9PUkRFUik7XG4mIzQzO1x0XHRzeXNmc19zY2hlbWUtXHUwMDNldGFyZ2V0X29yZGVyID0gMDtcbiYjNDM7XHR9XG4mIzQzO1x0aWYgKHN5c2ZzX3NjaGVtZS1cdTAwM2VhY3Rpb24gPT0gREFNT1NfU1BMSVQgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgIChzeXNmc19zY2hlbWUtXHUwMDNldGFyZ2V0X29yZGVyID09IDAgfHxcbiYjNDM7XHQgICAgIHN5c2ZzX3NjaGVtZS1cdTAwM2V0YXJnZXRfb3JkZXIgXHUwMDNlPSBIUEFHRV9QTURfT1JERVIpKSB7XG4mIzQzO1x0XHRwcl93YXJuKFwmIzM0O0RBTU9OIHNwbGl0OiB0YXJnZXRfb3JkZXIgJXUgaW52YWxpZCwgbmVlZCAyLi4ldS4gRGVmYXVsdGluZyB0byAyLlxcblwmIzM0OyxcbiYjNDM7XHRcdFx0c3lzZnNfc2NoZW1lLVx1MDAzZXRhcmdldF9vcmRlcixcbiYjNDM7XHRcdFx0SFBBR0VfUE1EX09SREVSIC0gMSk7XG4mIzQzO1x0XHRzeXNmc19zY2hlbWUtXHUwMDNldGFyZ2V0X29yZGVyID0gMjtcbiYjNDM7XHR9XG4mIzQzO1x0c2NoZW1lLVx1MDAzZXRhcmdldF9vcmRlciA9IHN5c2ZzX3NjaGVtZS1cdTAwM2V0YXJnZXRfb3JkZXI7XG4mIzQzO1xuIFx0ZXJyID0gZGFtb3Nfc3lzZnNfYWRkX3F1b3RhX3Njb3JlKHN5c2ZzX3F1b3Rhcy1cdTAwM2Vnb2FscywgXHUwMDI2c2NoZW1lLVx1MDAzZXF1b3RhKTtcbiBcdGlmIChlcnIpIHtcbiBcdFx0ZGFtb25fZGVzdHJveV9zY2hlbWUoc2NoZW1lKTtcbmRpZmYgLS1naXQgYS9tbS9kYW1vbi92YWRkci5jIGIvbW0vZGFtb24vdmFkZHIuY1xuaW5kZXggZDI3MTQ3NjAzNTY0MWIuLjNmMjA2MWIyOWVkODQyIDEwMDY0NFxuLS0tIGEvbW0vZGFtb24vdmFkZHIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vZGFtb24vdmFkZHIuY1xuQEAgLTE0LDYgJiM0MzsxNCw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcGFnZV9pZGxlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wYWdld2Fsay5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc2NoZWQvbW0uaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9raHVnZXBhZ2VkLmhcdTAwM2VcbiBcbiAjaW5jbHVkZSBcJiMzNDsuLi9pbnRlcm5hbC5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7b3BzLWNvbW1vbi5oXCYjMzQ7XG5AQCAtODk5LDYgJiM0Mzs5MDAsMTA1IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9zX3ZhX3N0YXQoc3RydWN0IGRhbW9uX3RhcmdldCAqdGFyZ2V0LFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuJiM0MztzdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vc192YV9jb2xsYXBzZShzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0YXJnZXQsXG4mIzQzO1x0XHRzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLCBzdHJ1Y3QgZGFtb3MgKnMsXG4mIzQzO1x0XHR1bnNpZ25lZCBsb25nICpzel9maWx0ZXJfcGFzc2VkKVxuJiM0Mzt7XG4mIzQzO1x0dW5zaWduZWQgbG9uZyBhZGRyLCBlbmQsIGNodW5rX3N6O1xuJiM0MztcdHVuc2lnbmVkIGludCB0YXJnZXRfb3JkZXIgPSBzLVx1MDAzZXRhcmdldF9vcmRlcjtcbiYjNDM7XHR1bnNpZ25lZCBsb25nIGFwcGxpZWQgPSAwO1xuJiM0MztcdHN0cnVjdCBtbV9zdHJ1Y3QgKm1tO1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdGlmICh0YXJnZXRfb3JkZXIgXHUwMDNjIDIgfHwgdGFyZ2V0X29yZGVyIFx1MDAzZSBIUEFHRV9QTURfT1JERVIpXG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XG4mIzQzO1x0Y2h1bmtfc3ogPSBQQUdFX1NJWkUgXHUwMDNjXHUwMDNjIHRhcmdldF9vcmRlcjtcbiYjNDM7XHRhZGRyID0gQUxJR05fRE9XTihyLVx1MDAzZWFyLnN0YXJ0LCBjaHVua19zeik7XG4mIzQzO1x0ZW5kID0gQUxJR04oci1cdTAwM2Vhci5lbmQsIGNodW5rX3N6KTtcbiYjNDM7XG4mIzQzO1x0bW0gPSBkYW1vbl9nZXRfbW0odGFyZ2V0KTtcbiYjNDM7XHRpZiAoIW1tKVxuJiM0MztcdFx0cmV0dXJuIDA7XG4mIzQzO1xuJiM0MztcdHdoaWxlIChhZGRyIFx1MDAzYyBlbmQpIHtcbiYjNDM7XHRcdHJldCA9IGRhbW9uX2NvbGxhcHNlX2ZvbGlvX3JhbmdlKG1tLCBhZGRyLCB0YXJnZXRfb3JkZXIpO1xuJiM0MztcdFx0aWYgKCFyZXQpXG4mIzQzO1x0XHRcdGFwcGxpZWQgJiM0Mzs9IGNodW5rX3N6O1xuJiM0MztcdFx0KnN6X2ZpbHRlcl9wYXNzZWQgJiM0Mzs9IGNodW5rX3N6O1xuJiM0MztcdFx0YWRkciAmIzQzOz0gY2h1bmtfc3o7XG4mIzQzO1x0XHRjb25kX3Jlc2NoZWQoKTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdG1tcHV0KG1tKTtcbiYjNDM7XHRyZXR1cm4gYXBwbGllZDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb3NfdmFfc3BsaXQoc3RydWN0IGRhbW9uX3RhcmdldCAqdGFyZ2V0LFxuJiM0MztcdFx0c3RydWN0IGRhbW9uX3JlZ2lvbiAqciwgc3RydWN0IGRhbW9zICpzLFxuJiM0MztcdFx0dW5zaWduZWQgbG9uZyAqc3pfZmlsdGVyX3Bhc3NlZClcbiYjNDM7e1xuJiM0MztcdHVuc2lnbmVkIGxvbmcgYWRkciwgZW5kLCBjaHVua19zejtcbiYjNDM7XHR1bnNpZ25lZCBpbnQgdGFyZ2V0X29yZGVyID0gcy1cdTAwM2V0YXJnZXRfb3JkZXI7XG4mIzQzO1x0dW5zaWduZWQgbG9uZyBhcHBsaWVkID0gMDtcbiYjNDM7XHRzdHJ1Y3QgbW1fc3RydWN0ICptbTtcbiYjNDM7XHRzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYTtcbiYjNDM7XHRzdHJ1Y3QgZm9saW8gKmZvbGlvO1xuJiM0MztcdHN0cnVjdCBmb2xpb193YWxrIGZ3O1xuJiM0MztcbiYjNDM7XHRtbSA9IGRhbW9uX2dldF9tbSh0YXJnZXQpO1xuJiM0MztcdGlmICghbW0pXG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XG4mIzQzO1x0Y2h1bmtfc3ogPSBQQUdFX1NJWkUgXHUwMDNjXHUwMDNjIEhQQUdFX1BNRF9PUkRFUjtcbiYjNDM7XHRhZGRyID0gQUxJR05fRE9XTihyLVx1MDAzZWFyLnN0YXJ0LCBjaHVua19zeik7XG4mIzQzO1x0ZW5kID0gQUxJR04oci1cdTAwM2Vhci5lbmQsIGNodW5rX3N6KTtcbiYjNDM7XG4mIzQzO1x0d2hpbGUgKGFkZHIgXHUwMDNjIGVuZCkge1xuJiM0MztcdFx0bW1hcF9yZWFkX2xvY2sobW0pO1xuJiM0MztcdFx0dm1hID0gZmluZF92bWEobW0sIGFkZHIpO1xuJiM0MztcdFx0LypcbiYjNDM7XHRcdCAqIHNwbGl0X2ZvbGlvX3RvX29yZGVyKCkgc3VwcG9ydHMgYm90aCBhbm9uIGFuZCBzaG1lbVxuJiM0MztcdFx0ICogZm9saW9zLCBzbyB3ZSBhY2NlcHQgYW55IFZNQSB0aGF0IGhhcyBhIGZvbGlvIGF0IEBhZGRyLlxuJiM0MztcdFx0ICogVGhpcyBjb3ZlcnMgaW1wb3J0YW50IHVzZSBjYXNlcyBsaWtlIHRtcGZzIFRIUC1iYWNrZWRcbiYjNDM7XHRcdCAqIEtWTSBndWVzdCBtZW1vcnkgd2hlcmUgY29sZCBhbmQgaG90IHBhZ2VzIGFyZSBidW5kbGVkXG4mIzQzO1x0XHQgKiB0b2dldGhlciBpbiBhIHNpbmdsZSBQTUQgVEhQLlxuJiM0MztcdFx0ICovXG4mIzQzO1x0XHRpZiAoIXZtYSB8fCBhZGRyIFx1MDAzYyB2bWEtXHUwMDNldm1fc3RhcnQpXG4mIzQzO1x0XHRcdGdvdG8gdW5sb2NrO1xuJiM0MztcbiYjNDM7XHRcdGZvbGlvID0gZm9saW9fd2Fsa19zdGFydChcdTAwMjZmdywgdm1hLCBhZGRyLCAwKTtcbiYjNDM7XHRcdGlmICghZm9saW8pXG4mIzQzO1x0XHRcdGdvdG8gdW5sb2NrO1xuJiM0MztcbiYjNDM7XHRcdGlmIChmb2xpb19vcmRlcihmb2xpbykgXHUwMDNlIHRhcmdldF9vcmRlcikge1xuJiM0MztcdFx0XHRpZiAoIWZvbGlvX3RyeWxvY2soZm9saW8pKSB7XG4mIzQzO1x0XHRcdFx0Zm9saW9fd2Fsa19lbmQoXHUwMDI2ZncsIHZtYSk7XG4mIzQzO1x0XHRcdFx0Z290byB1bmxvY2s7XG4mIzQzO1x0XHRcdH1cbiYjNDM7XHRcdFx0Zm9saW9fZ2V0KGZvbGlvKTtcbiYjNDM7XHRcdFx0Zm9saW9fd2Fsa19lbmQoXHUwMDI2ZncsIHZtYSk7XG4mIzQzO1xuJiM0MztcdFx0XHRpZiAoIXNwbGl0X2ZvbGlvX3RvX29yZGVyKGZvbGlvLCB0YXJnZXRfb3JkZXIpKVxuJiM0MztcdFx0XHRcdGFwcGxpZWQgJiM0Mzs9IGNodW5rX3N6O1xuJiM0MztcbiYjNDM7XHRcdFx0Zm9saW9fdW5sb2NrKGZvbGlvKTtcbiYjNDM7XHRcdFx0Zm9saW9fcHV0KGZvbGlvKTtcbiYjNDM7XHRcdH0gZWxzZSB7XG4mIzQzO1x0XHRcdGZvbGlvX3dhbGtfZW5kKFx1MDAyNmZ3LCB2bWEpO1xuJiM0MztcdFx0fVxuJiM0MztcbiYjNDM7dW5sb2NrOlxuJiM0MztcdFx0KnN6X2ZpbHRlcl9wYXNzZWQgJiM0Mzs9IGNodW5rX3N6O1xuJiM0MztcdFx0YWRkciAmIzQzOz0gY2h1bmtfc3o7XG4mIzQzO1x0XHRtbWFwX3JlYWRfdW5sb2NrKG1tKTtcbiYjNDM7XHRcdGNvbmRfcmVzY2hlZCgpO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0bW1wdXQobW0pO1xuJiM0MztcdHJldHVybiBhcHBsaWVkO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9uX3ZhX2FwcGx5X3NjaGVtZShzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsXG4gXHRcdHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsIHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXG4gXHRcdHN0cnVjdCBkYW1vcyAqc2NoZW1lLCB1bnNpZ25lZCBsb25nICpzel9maWx0ZXJfcGFzc2VkKVxuQEAgLTkyMiw2ICYjNDM7MTAyMiw5IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9uX3ZhX2FwcGx5X3NjaGVtZShzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsXG4gXHRcdG1hZHZfYWN0aW9uID0gTUFEVl9OT0hVR0VQQUdFO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgREFNT1NfQ09MTEFQU0U6XG4mIzQzO1x0XHRpZiAoc2NoZW1lLVx1MDAzZXRhcmdldF9vcmRlcilcbiYjNDM7XHRcdFx0cmV0dXJuIGRhbW9zX3ZhX2NvbGxhcHNlKHQsIHIsIHNjaGVtZSxcbiYjNDM7XHRcdFx0XHRcdFx0IHN6X2ZpbHRlcl9wYXNzZWQpO1xuIFx0XHRtYWR2X2FjdGlvbiA9IE1BRFZfQ09MTEFQU0U7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBEQU1PU19NSUdSQVRFX0hPVDpcbkBAIC05MjksNiAmIzQzOzEwMzIsOSBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vbl92YV9hcHBseV9zY2hlbWUoc3RydWN0IGRhbW9uX2N0eCAqY3R4LFxuIFx0XHRyZXR1cm4gZGFtb3NfdmFfbWlncmF0ZSh0LCByLCBzY2hlbWUsIHN6X2ZpbHRlcl9wYXNzZWQpO1xuIFx0Y2FzZSBEQU1PU19TVEFUOlxuIFx0XHRyZXR1cm4gZGFtb3NfdmFfc3RhdCh0LCByLCBzY2hlbWUsIHN6X2ZpbHRlcl9wYXNzZWQpO1xuJiM0MztcdGNhc2UgREFNT1NfU1BMSVQ6XG4mIzQzO1x0XHRyZXR1cm4gZGFtb3NfdmFfc3BsaXQodCwgciwgc2NoZW1lLFxuJiM0MztcdFx0XHRcdFx0ICBzel9maWx0ZXJfcGFzc2VkKTtcbiBcdGRlZmF1bHQ6XG4gXHRcdC8qXG4gXHRcdCAqIERBTU9TIGFjdGlvbnMgdGhhdCBhcmUgbm90IHlldCBzdXBwb3J0ZWQgYnkgJiMzOTt2YWRkciYjMzk7LlxuZGlmZiAtLWdpdCBhL21tL2todWdlcGFnZWQuYyBiL21tL2todWdlcGFnZWQuY1xuaW5kZXggNjE3YmNhNzZkYjQ5YjYuLjAzODc4NDFiYTJlN2Q4IDEwMDY0NFxuLS0tIGEvbW0va2h1Z2VwYWdlZC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9raHVnZXBhZ2VkLmNcbkBAIC0zMjcyLDMgJiM0MzszMjcyLDQyIEBAIGludCBtYWR2aXNlX2NvbGxhcHNlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIHN0YXJ0LFxuIFx0cmV0dXJuIHRocHMgPT0gKChoZW5kIC0gaHN0YXJ0KSBcdTAwM2VcdTAwM2UgSFBBR0VfUE1EX1NISUZUKSA/IDBcbiBcdFx0XHQ6IG1hZHZpc2VfY29sbGFwc2VfZXJybm8obGFzdF9mYWlsKTtcbiB9XG4mIzQzO1xuJiM0MzsvKipcbiYjNDM7ICogZGFtb25fY29sbGFwc2VfZm9saW9fcmFuZ2UoKSAtIENvbGxhcHNlIGJhc2UgcGFnZXMgaW4gcmFuZ2UgaW50byBhIFRIUFxuJiM0MzsgKiBAbW06ICAgICAgICAgbW1fc3RydWN0IG9mIHRoZSB0YXJnZXQgcHJvY2Vzc1xuJiM0MzsgKiBAc3RhcnRfYWRkcjogc3RhcnQgYWRkcmVzcyAobXVzdCBiZSBvcmRlci1hbGlnbmVkKVxuJiM0MzsgKiBAdGFyZ2V0X29yZGVyOiBwYWdlIG9yZGVyIG9mIHRoZSBjb2xsYXBzZSByZXN1bHQgKGN1cnJlbnRseSBvbmx5XG4mIzQzOyAqICAgICAgICAgICAgICAgIEhQQUdFX1BNRF9PUkRFUiBpcyBzdXBwb3J0ZWQpXG4mIzQzOyAqXG4mIzQzOyAqIFRoaW4gd3JhcHBlciBhcm91bmQgY29sbGFwc2VfaHVnZV9wYWdlKCkgZm9yIGV4dGVybmFsIGNhbGxlcnMgc3VjaCBhc1xuJiM0MzsgKiBEQU1PTi4gIFRoZSBjYWxsZXIgbXVzdCBob2xkIGEgcmVmZXJlbmNlIHRvIEBtbS4gIERvIG5vdCBob2xkIG1tYXBcbiYjNDM7ICogbG9jazogY29sbGFwc2VfaHVnZV9wYWdlKCkgYWNxdWlyZXMgbW1hcF9yZWFkX2xvY2sgZm9yIHZhbGlkYXRpb24sXG4mIzQzOyAqIHJlbGVhc2VzIGl0LCB0aGVuIGFjcXVpcmVzIG1tYXBfd3JpdGVfbG9jayBmb3IgdGhlIGNvbGxhcHNlLiAgSG9sZGluZ1xuJiM0MzsgKiBhbiBvdXRlciBtbWFwX3JlYWRfbG9jayB3b3VsZCBzZWxmLWRlYWRsb2NrLlxuJiM0MzsgKlxuJiM0MzsgKiBSZXR1cm46IDAgb24gc3VjY2VzcywgLUVJTlZBTCBvbiBiYWQgYXJndW1lbnRzLCBuZWdhdGl2ZSBlcnJvciBmcm9tXG4mIzQzOyAqICAgICAgICAgbWFkdmlzZV9jb2xsYXBzZV9lcnJubygpIG90aGVyd2lzZS5cbiYjNDM7ICovXG4mIzQzO2ludCBkYW1vbl9jb2xsYXBzZV9mb2xpb19yYW5nZShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBzdGFydF9hZGRyLFxuJiM0MztcdFx0XHQgICAgICAgdW5zaWduZWQgaW50IHRhcmdldF9vcmRlcilcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBjb2xsYXBzZV9jb250cm9sIGNjID0ge1xuJiM0MztcdFx0LmlzX2todWdlcGFnZWQgPSBmYWxzZSxcbiYjNDM7XHR9O1xuJiM0MztcdGVudW0gc2Nhbl9yZXN1bHQgcmVzdWx0O1xuJiM0MztcbiYjNDM7XHRpZiAodGFyZ2V0X29yZGVyICE9IEhQQUdFX1BNRF9PUkRFUikge1xuJiM0MztcdFx0cHJfd2Fybl9vbmNlKFwmIzM0OyVzOiBvbmx5IFBNRCBvcmRlciAoJXUpIGlzIHN1cHBvcnRlZCwgZ290ICV1XFxuXCYjMzQ7LFxuJiM0MztcdFx0XHQgICAgIF9fZnVuY19fLCBIUEFHRV9QTURfT1JERVIsIHRhcmdldF9vcmRlcik7XG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHR9XG4mIzQzO1x0aWYgKHN0YXJ0X2FkZHIgXHUwMDI2ICgoUEFHRV9TSVpFIFx1MDAzY1x1MDAzYyB0YXJnZXRfb3JkZXIpIC0gMSkpXG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XG4mIzQzO1x0cmVzdWx0ID0gY29sbGFwc2VfaHVnZV9wYWdlKG1tLCBzdGFydF9hZGRyLCAxLCAwLCBcdTAwMjZjYywgdGFyZ2V0X29yZGVyKTtcbiYjNDM7XHRpZiAocmVzdWx0ID09IFNDQU5fU1VDQ0VFRClcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcdHJldHVybiBtYWR2aXNlX2NvbGxhcHNlX2Vycm5vKHJlc3VsdCk7XG4mIzQzO31cbiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwoZGFtb25fY29sbGFwc2VfZm9saW9fcmFuZ2UpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDE3OjU3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RBTU9OX1NZU0ZTJiMzNDssCiAgICAmIzM0O0RBTU9OX1ZBRERSJiMzNDssCiAgICAmIzM0O1RSQU5TUEFSRU5UX0hVR0VQQUdFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZGFtb3NfdmFfY29sbGFwc2UmIzM0OywKICAgICYjMzQ7ZGFtb3NfdmFfc3BsaXQmIzM0OywKICAgICYjMzQ7ZGFtb25fY29sbGFwc2VfZm9saW9fcmFuZ2UmIzM0OywKICAgICYjMzQ7dGFyZ2V0X29yZGVyX3N0b3JlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBEQU1PTiBzdWJzeXN0ZW0gYnkgYWRkaW5nIGEgbmV3IERBTU9TX1NQTElUIGFjdGlvbiBhbmQgZXh0ZW5kaW5nIERBTU9TX0NPTExBUFNFIHdpdGggYSB0YXJnZXRfb3JkZXIgcGFyYW1ldGVyLiBJdCBtb2RpZmllcyBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIHRvIHNwbGl0IGFuZCBjb2xsYXBzZSBmb2xpb3MgYmFzZWQgb24gREFNT04gc2NoZW1lcy4gVGhlc2UgZmVhdHVyZXMgYXJlIGV4cG9zZWQgdG8gdXNlcnNwYWNlIHZpYSB0aGUgREFNT04gc3lzZnMgaW50ZXJmYWNlLCBtYWtpbmcgdGhlbSByZWFjaGFibGUgYW5kIHRlc3RhYmxlIGJ5IGEgZnV6emVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBiMTcyYjBkZWRiNTQzMmE1ZTIwMDk4NWRkNDFhZTMwYWRhODg1M2Q2CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdWwgMSAxNzo1Njo1OSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZGFtb24uaCBiL2luY2x1ZGUvbGludXgvZGFtb24uaAppbmRleCA2ZjdlZGIzNTkwZWY5Ny4uMzBjZjRhZmIyMTJjZmIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvZGFtb24uaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2RhbW9uLmgKQEAgLTEyMSw2ICYjNDM7MTIxLDcgQEAgc3RydWN0IGRhbW9uX3RhcmdldCB7CiAgKiBAREFNT1NfSFVHRVBBR0U6CUNhbGwgYGBtYWR2aXNlKClgYCBmb3IgdGhlIHJlZ2lvbiB3aXRoIE1BRFZfSFVHRVBBR0UuCiAgKiBAREFNT1NfTk9IVUdFUEFHRToJQ2FsbCBgYG1hZHZpc2UoKWBgIGZvciB0aGUgcmVnaW9uIHdpdGggTUFEVl9OT0hVR0VQQUdFLgogICogQERBTU9TX0NPTExBUFNFOglDYWxsIGBgbWFkdmlzZSgpYGAgZm9yIHRoZSByZWdpb24gd2l0aCBNQURWX0NPTExBUFNFLgomIzQzOyAqIEBEQU1PU19TUExJVDoJU3BsaXQgbGFyZ2UgZm9saW9zIHRvIHRoZSB0YXJnZXQgbVRIUCBvcmRlci4KICAqIEBEQU1PU19MUlVfUFJJTzoJUHJpb3JpdGl6ZSB0aGUgcmVnaW9uIG9uIGl0cyBMUlUgbGlzdHMuCiAgKiBAREFNT1NfTFJVX0RFUFJJTzoJRGVwcmlvcml0aXplIHRoZSByZWdpb24gb24gaXRzIExSVSBsaXN0cy4KICAqIEBEQU1PU19NSUdSQVRFX0hPVDogIE1pZ3JhdGUgdGhlIHJlZ2lvbnMgcHJpb3JpdGl6aW5nIHdhcm1lciByZWdpb25zLgpAQCAtMTQxLDYgJiM0MzsxNDIsNyBAQCBlbnVtIGRhbW9zX2FjdGlvbiB7CiAJREFNT1NfSFVHRVBBR0UsCiAJREFNT1NfTk9IVUdFUEFHRSwKIAlEQU1PU19DT0xMQVBTRSwKJiM0MzsJREFNT1NfU1BMSVQsCiAJREFNT1NfTFJVX1BSSU8sCiAJREFNT1NfTFJVX0RFUFJJTywKIAlEQU1PU19NSUdSQVRFX0hPVCwKQEAgLTU3Miw2ICYjNDM7NTc0LDE0IEBAIHN0cnVjdCBkYW1vc19taWdyYXRlX2Rlc3RzIHsKIHN0cnVjdCBkYW1vcyB7CiAJc3RydWN0IGRhbW9zX2FjY2Vzc19wYXR0ZXJuIHBhdHRlcm47CiAJZW51bSBkYW1vc19hY3Rpb24gYWN0aW9uOwomIzQzOwkvKgomIzQzOwkgKiBAdGFyZ2V0X29yZGVyOiB0YXJnZXQgbVRIUCBvcmRlciBmb3IgREFNT1NfQ09MTEFQU0UgYW5kCiYjNDM7CSAqIERBTU9TX1NQTElULiAgRm9yIENPTExBUFNFLCAwIG1lYW5zIFBNRCBvcmRlciBkZWZhdWx0LAomIzQzOwkgKiB2YWxpZCB2YWx1ZXM6IDAsIDIuLkhQQUdFX1BNRF9PUkRFUi4gIEZvciBTUExJVCwKJiM0MzsJICogdmFsaWQgdmFsdWVzOiAyLi5IUEFHRV9QTURfT1JERVItMTsgMCBhbmQgSFBBR0VfUE1EX09SREVSCiYjNDM7CSAqIGFyZSByZWplY3RlZCBhdCBzY2hlbWUgY3JlYXRpb24gdGltZSAoZGVmYXVsdGluZyB0byAyKS4KJiM0MzsJICovCiYjNDM7CXVuc2lnbmVkIGludCB0YXJnZXRfb3JkZXI7CiAJdW5zaWduZWQgbG9uZyBhcHBseV9pbnRlcnZhbF91czsKIC8qIHByaXZhdGU6IGludGVybmFsIHVzZSBvbmx5ICovCiAJLyoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgva2h1Z2VwYWdlZC5oIGIvaW5jbHVkZS9saW51eC9raHVnZXBhZ2VkLmgKaW5kZXggZDdhOTA1M2ZmNGZlZDEuLjZmYjhhNjg1Nzc5MDNhIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2todWdlcGFnZWQuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2todWdlcGFnZWQuaApAQCAtMjAsNiAmIzQzOzIwLDkgQEAgZXh0ZXJuIGJvb2wgY3VycmVudF9pc19raHVnZXBhZ2VkKHZvaWQpOwogdm9pZCBjb2xsYXBzZV9wdGVfbWFwcGVkX3RocChzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBhZGRyLAogCQlib29sIGluc3RhbGxfcG1kKTsKIAomIzQzO2ludCBkYW1vbl9jb2xsYXBzZV9mb2xpb19yYW5nZShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBzdGFydF9hZGRyLAomIzQzOwkJCSAgICAgICB1bnNpZ25lZCBpbnQgdGFyZ2V0X29yZGVyKTsKJiM0MzsKIHN0YXRpYyBpbmxpbmUgdm9pZCBraHVnZXBhZ2VkX2Zvcmsoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHN0cnVjdCBtbV9zdHJ1Y3QgKm9sZG1tKQogewogCWlmIChtbV9mbGFnc190ZXN0KE1NRl9WTV9IVUdFUEFHRSwgb2xkbW0pKQpkaWZmIC0tZ2l0IGEvbW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jIGIvbW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jCmluZGV4IDMyOWNmZDBiYmU5ZjMyLi41NDcyNTJmYzhhMjBhZCAxMDA2NDQKLS0tIGEvbW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYwpAQCAtNiw3ICYjNDM7Niw5IEBACiAgKi8KIAogI2luY2x1ZGUgJmx0O2xpbnV4L3NsYWIuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvbW0uaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9udW1hLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2h1Z2VfbW0uaCZndDsKIAogI2luY2x1ZGUgJiMzNDtzeXNmcy1jb21tb24uaCYjMzQ7CiAKQEAgLTIyNTcsNiAmIzQzOzIyNTksNyBAQCBzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lIHsKIAlzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMgKnN0YXRzOwogCXN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9ucyAqdHJpZWRfcmVnaW9uczsKIAlpbnQgdGFyZ2V0X25pZDsKJiM0MzsJdW5zaWduZWQgaW50IHRhcmdldF9vcmRlcjsKIAlzdHJ1Y3QgZGFtb3Nfc3lzZnNfZGVzdHMgKmRlc3RzOwogfTsKIApAQCAtMjI5MCw2ICYjNDM7MjI5MywxMCBAQCBzdGF0aWMgc3RydWN0IGRhbW9zX3N5c2ZzX2FjdGlvbl9uYW1lIGRhbW9zX3N5c2ZzX2FjdGlvbl9uYW1lc1tdID0gewogCQkuYWN0aW9uID0gREFNT1NfQ09MTEFQU0UsCiAJCS5uYW1lID0gJiMzNDtjb2xsYXBzZSYjMzQ7LAogCX0sCiYjNDM7CXsKJiM0MzsJCS5hY3Rpb24gPSBEQU1PU19TUExJVCwKJiM0MzsJCS5uYW1lID0gJiMzNDtzcGxpdCYjMzQ7LAomIzQzOwl9LAogCXsKIAkJLmFjdGlvbiA9IERBTU9TX0xSVV9QUklPLAogCQkubmFtZSA9ICYjMzQ7bHJ1X3ByaW8mIzM0OywKQEAgLTI2NDIsNiAmIzQzOzI2NDksMzQgQEAgc3RhdGljIHNzaXplX3QgdGFyZ2V0X25pZF9zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaiwKIAlyZXR1cm4gZXJyID8gZXJyIDogY291bnQ7CiB9CiAKJiM0MztzdGF0aWMgc3NpemVfdCB0YXJnZXRfb3JkZXJfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaiwKJiM0MzsJCXN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQomIzQzO3sKJiM0MzsJc3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZSAqc2NoZW1lID0gY29udGFpbmVyX29mKGtvYmosCiYjNDM7CQkJc3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZSwga29iaik7CiYjNDM7CiYjNDM7CXJldHVybiBzeXNmc19lbWl0KGJ1ZiwgJiMzNDsldVxuJiMzNDssIHNjaGVtZS0mZ3Q7dGFyZ2V0X29yZGVyKTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHNzaXplX3QgdGFyZ2V0X29yZGVyX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLAomIzQzOwkJc3RydWN0IGtvYmpfYXR0cmlidXRlICphdHRyLCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWUgKnNjaGVtZSA9IGNvbnRhaW5lcl9vZihrb2JqLAomIzQzOwkJCXN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWUsIGtvYmopOwomIzQzOwl1bnNpZ25lZCBpbnQgdmFsOwomIzQzOwlpbnQgZXJyOwomIzQzOwomIzQzOwllcnIgPSBrc3RydG91aW50KGJ1ZiwgMCwgJmFtcDt2YWwpOwomIzQzOwlpZiAoZXJyKQomIzQzOwkJcmV0dXJuIGVycjsKJiM0MzsKJiM0MzsJaWYgKHZhbCAhPSAwICZhbXA7JmFtcDsgKHZhbCAmbHQ7IDIgfHwgdmFsICZndDsgSFBBR0VfUE1EX09SREVSKSkKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwomIzQzOwlzY2hlbWUtJmd0O3RhcmdldF9vcmRlciA9IHZhbDsKJiM0MzsJcmV0dXJuIGNvdW50OwomIzQzO30KJiM0MzsKIHN0YXRpYyB2b2lkIGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWxlYXNlKHN0cnVjdCBrb2JqZWN0ICprb2JqKQogewogCWtmcmVlKGNvbnRhaW5lcl9vZihrb2JqLCBzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lLCBrb2JqKSk7CkBAIC0yNjU2LDEwICYjNDM7MjY5MSwxNCBAQCBzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3NjaGVtZV9hcHBseV9pbnRlcnZhbF91c19hdHRyID0KIHN0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgZGFtb25fc3lzZnNfc2NoZW1lX3RhcmdldF9uaWRfYXR0ciA9CiAJCV9fQVRUUl9SV19NT0RFKHRhcmdldF9uaWQsIDA2MDApOwogCiYjNDM7c3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vbl9zeXNmc19zY2hlbWVfdGFyZ2V0X29yZGVyX2F0dHIgPQomIzQzOwkJX19BVFRSX1JXX01PREUodGFyZ2V0X29yZGVyLCAwNjAwKTsKJiM0MzsKIHN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICpkYW1vbl9zeXNmc19zY2hlbWVfYXR0cnNbXSA9IHsKIAkmYW1wO2RhbW9uX3N5c2ZzX3NjaGVtZV9hY3Rpb25fYXR0ci5hdHRyLAogCSZhbXA7ZGFtb25fc3lzZnNfc2NoZW1lX2FwcGx5X2ludGVydmFsX3VzX2F0dHIuYXR0ciwKIAkmYW1wO2RhbW9uX3N5c2ZzX3NjaGVtZV90YXJnZXRfbmlkX2F0dHIuYXR0ciwKJiM0MzsJJmFtcDtkYW1vbl9zeXNmc19zY2hlbWVfdGFyZ2V0X29yZGVyX2F0dHIuYXR0ciwKIAlOVUxMLAogfTsKIEFUVFJJQlVURV9HUk9VUFMoZGFtb25fc3lzZnNfc2NoZW1lKTsKQEAgLTMwMDUsNiAmIzQzOzMwNDQsMjQgQEAgc3RhdGljIHN0cnVjdCBkYW1vcyAqZGFtb25fc3lzZnNfbWtfc2NoZW1lKAogCWlmICghc2NoZW1lKQogCQlyZXR1cm4gTlVMTDsKIAomIzQzOwlpZiAoc3lzZnNfc2NoZW1lLSZndDthY3Rpb24gPT0gREFNT1NfQ09MTEFQU0UgJmFtcDsmYW1wOwomIzQzOwkgICAgc3lzZnNfc2NoZW1lLSZndDt0YXJnZXRfb3JkZXIgIT0gMCAmYW1wOyZhbXA7CiYjNDM7CSAgICBzeXNmc19zY2hlbWUtJmd0O3RhcmdldF9vcmRlciAhPSBIUEFHRV9QTURfT1JERVIpIHsKJiM0MzsJCXByX3dhcm4oJiMzNDtEQU1PTiBjb2xsYXBzZTogdGFyZ2V0X29yZGVyICV1IG5vdCBzdXBwb3J0ZWQsIG9ubHkgUE1EIG9yZGVyICgldSkgaXMgYXZhaWxhYmxlLiBVc2UgMCBvciAldS5cbiYjMzQ7LAomIzQzOwkJCXN5c2ZzX3NjaGVtZS0mZ3Q7dGFyZ2V0X29yZGVyLAomIzQzOwkJCUhQQUdFX1BNRF9PUkRFUiwgSFBBR0VfUE1EX09SREVSKTsKJiM0MzsJCXN5c2ZzX3NjaGVtZS0mZ3Q7dGFyZ2V0X29yZGVyID0gMDsKJiM0MzsJfQomIzQzOwlpZiAoc3lzZnNfc2NoZW1lLSZndDthY3Rpb24gPT0gREFNT1NfU1BMSVQgJmFtcDsmYW1wOwomIzQzOwkgICAgKHN5c2ZzX3NjaGVtZS0mZ3Q7dGFyZ2V0X29yZGVyID09IDAgfHwKJiM0MzsJICAgICBzeXNmc19zY2hlbWUtJmd0O3RhcmdldF9vcmRlciAmZ3Q7PSBIUEFHRV9QTURfT1JERVIpKSB7CiYjNDM7CQlwcl93YXJuKCYjMzQ7REFNT04gc3BsaXQ6IHRhcmdldF9vcmRlciAldSBpbnZhbGlkLCBuZWVkIDIuLiV1LiBEZWZhdWx0aW5nIHRvIDIuXG4mIzM0OywKJiM0MzsJCQlzeXNmc19zY2hlbWUtJmd0O3RhcmdldF9vcmRlciwKJiM0MzsJCQlIUEFHRV9QTURfT1JERVIgLSAxKTsKJiM0MzsJCXN5c2ZzX3NjaGVtZS0mZ3Q7dGFyZ2V0X29yZGVyID0gMjsKJiM0MzsJfQomIzQzOwlzY2hlbWUtJmd0O3RhcmdldF9vcmRlciA9IHN5c2ZzX3NjaGVtZS0mZ3Q7dGFyZ2V0X29yZGVyOwomIzQzOwogCWVyciA9IGRhbW9zX3N5c2ZzX2FkZF9xdW90YV9zY29yZShzeXNmc19xdW90YXMtJmd0O2dvYWxzLCAmYW1wO3NjaGVtZS0mZ3Q7cXVvdGEpOwogCWlmIChlcnIpIHsKIAkJZGFtb25fZGVzdHJveV9zY2hlbWUoc2NoZW1lKTsKZGlmZiAtLWdpdCBhL21tL2RhbW9uL3ZhZGRyLmMgYi9tbS9kYW1vbi92YWRkci5jCmluZGV4IGQyNzE0NzYwMzU2NDFiLi4zZjIwNjFiMjllZDg0MiAxMDA2NDQKLS0tIGEvbW0vZGFtb24vdmFkZHIuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9kYW1vbi92YWRkci5jCkBAIC0xNCw2ICYjNDM7MTQsNyBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L3BhZ2VfaWRsZS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3BhZ2V3YWxrLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvc2NoZWQvbW0uaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgva2h1Z2VwYWdlZC5oJmd0OwogCiAjaW5jbHVkZSAmIzM0Oy4uL2ludGVybmFsLmgmIzM0OwogI2luY2x1ZGUgJiMzNDtvcHMtY29tbW9uLmgmIzM0OwpAQCAtODk5LDYgJiM0Mzs5MDAsMTA1IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9zX3ZhX3N0YXQoc3RydWN0IGRhbW9uX3RhcmdldCAqdGFyZ2V0LAogCXJldHVybiAwOwogfQogCiYjNDM7c3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb3NfdmFfY29sbGFwc2Uoc3RydWN0IGRhbW9uX3RhcmdldCAqdGFyZ2V0LAomIzQzOwkJc3RydWN0IGRhbW9uX3JlZ2lvbiAqciwgc3RydWN0IGRhbW9zICpzLAomIzQzOwkJdW5zaWduZWQgbG9uZyAqc3pfZmlsdGVyX3Bhc3NlZCkKJiM0Mzt7CiYjNDM7CXVuc2lnbmVkIGxvbmcgYWRkciwgZW5kLCBjaHVua19zejsKJiM0MzsJdW5zaWduZWQgaW50IHRhcmdldF9vcmRlciA9IHMtJmd0O3RhcmdldF9vcmRlcjsKJiM0MzsJdW5zaWduZWQgbG9uZyBhcHBsaWVkID0gMDsKJiM0MzsJc3RydWN0IG1tX3N0cnVjdCAqbW07CiYjNDM7CWludCByZXQ7CiYjNDM7CiYjNDM7CWlmICh0YXJnZXRfb3JkZXIgJmx0OyAyIHx8IHRhcmdldF9vcmRlciAmZ3Q7IEhQQUdFX1BNRF9PUkRFUikKJiM0MzsJCXJldHVybiAwOwomIzQzOwomIzQzOwljaHVua19zeiA9IFBBR0VfU0laRSAmbHQ7Jmx0OyB0YXJnZXRfb3JkZXI7CiYjNDM7CWFkZHIgPSBBTElHTl9ET1dOKHItJmd0O2FyLnN0YXJ0LCBjaHVua19zeik7CiYjNDM7CWVuZCA9IEFMSUdOKHItJmd0O2FyLmVuZCwgY2h1bmtfc3opOwomIzQzOwomIzQzOwltbSA9IGRhbW9uX2dldF9tbSh0YXJnZXQpOwomIzQzOwlpZiAoIW1tKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CiYjNDM7CXdoaWxlIChhZGRyICZsdDsgZW5kKSB7CiYjNDM7CQlyZXQgPSBkYW1vbl9jb2xsYXBzZV9mb2xpb19yYW5nZShtbSwgYWRkciwgdGFyZ2V0X29yZGVyKTsKJiM0MzsJCWlmICghcmV0KQomIzQzOwkJCWFwcGxpZWQgJiM0Mzs9IGNodW5rX3N6OwomIzQzOwkJKnN6X2ZpbHRlcl9wYXNzZWQgJiM0Mzs9IGNodW5rX3N6OwomIzQzOwkJYWRkciAmIzQzOz0gY2h1bmtfc3o7CiYjNDM7CQljb25kX3Jlc2NoZWQoKTsKJiM0MzsJfQomIzQzOwomIzQzOwltbXB1dChtbSk7CiYjNDM7CXJldHVybiBhcHBsaWVkOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vc192YV9zcGxpdChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0YXJnZXQsCiYjNDM7CQlzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLCBzdHJ1Y3QgZGFtb3MgKnMsCiYjNDM7CQl1bnNpZ25lZCBsb25nICpzel9maWx0ZXJfcGFzc2VkKQomIzQzO3sKJiM0MzsJdW5zaWduZWQgbG9uZyBhZGRyLCBlbmQsIGNodW5rX3N6OwomIzQzOwl1bnNpZ25lZCBpbnQgdGFyZ2V0X29yZGVyID0gcy0mZ3Q7dGFyZ2V0X29yZGVyOwomIzQzOwl1bnNpZ25lZCBsb25nIGFwcGxpZWQgPSAwOwomIzQzOwlzdHJ1Y3QgbW1fc3RydWN0ICptbTsKJiM0MzsJc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWE7CiYjNDM7CXN0cnVjdCBmb2xpbyAqZm9saW87CiYjNDM7CXN0cnVjdCBmb2xpb193YWxrIGZ3OwomIzQzOwomIzQzOwltbSA9IGRhbW9uX2dldF9tbSh0YXJnZXQpOwomIzQzOwlpZiAoIW1tKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CiYjNDM7CWNodW5rX3N6ID0gUEFHRV9TSVpFICZsdDsmbHQ7IEhQQUdFX1BNRF9PUkRFUjsKJiM0MzsJYWRkciA9IEFMSUdOX0RPV04oci0mZ3Q7YXIuc3RhcnQsIGNodW5rX3N6KTsKJiM0MzsJZW5kID0gQUxJR04oci0mZ3Q7YXIuZW5kLCBjaHVua19zeik7CiYjNDM7CiYjNDM7CXdoaWxlIChhZGRyICZsdDsgZW5kKSB7CiYjNDM7CQltbWFwX3JlYWRfbG9jayhtbSk7CiYjNDM7CQl2bWEgPSBmaW5kX3ZtYShtbSwgYWRkcik7CiYjNDM7CQkvKgomIzQzOwkJICogc3BsaXRfZm9saW9fdG9fb3JkZXIoKSBzdXBwb3J0cyBib3RoIGFub24gYW5kIHNobWVtCiYjNDM7CQkgKiBmb2xpb3MsIHNvIHdlIGFjY2VwdCBhbnkgVk1BIHRoYXQgaGFzIGEgZm9saW8gYXQgQGFkZHIuCiYjNDM7CQkgKiBUaGlzIGNvdmVycyBpbXBvcnRhbnQgdXNlIGNhc2VzIGxpa2UgdG1wZnMgVEhQLWJhY2tlZAomIzQzOwkJICogS1ZNIGd1ZXN0IG1lbW9yeSB3aGVyZSBjb2xkIGFuZCBob3QgcGFnZXMgYXJlIGJ1bmRsZWQKJiM0MzsJCSAqIHRvZ2V0aGVyIGluIGEgc2luZ2xlIFBNRCBUSFAuCiYjNDM7CQkgKi8KJiM0MzsJCWlmICghdm1hIHx8IGFkZHIgJmx0OyB2bWEtJmd0O3ZtX3N0YXJ0KQomIzQzOwkJCWdvdG8gdW5sb2NrOwomIzQzOwomIzQzOwkJZm9saW8gPSBmb2xpb193YWxrX3N0YXJ0KCZhbXA7ZncsIHZtYSwgYWRkciwgMCk7CiYjNDM7CQlpZiAoIWZvbGlvKQomIzQzOwkJCWdvdG8gdW5sb2NrOwomIzQzOwomIzQzOwkJaWYgKGZvbGlvX29yZGVyKGZvbGlvKSAmZ3Q7IHRhcmdldF9vcmRlcikgewomIzQzOwkJCWlmICghZm9saW9fdHJ5bG9jayhmb2xpbykpIHsKJiM0MzsJCQkJZm9saW9fd2Fsa19lbmQoJmFtcDtmdywgdm1hKTsKJiM0MzsJCQkJZ290byB1bmxvY2s7CiYjNDM7CQkJfQomIzQzOwkJCWZvbGlvX2dldChmb2xpbyk7CiYjNDM7CQkJZm9saW9fd2Fsa19lbmQoJmFtcDtmdywgdm1hKTsKJiM0MzsKJiM0MzsJCQlpZiAoIXNwbGl0X2ZvbGlvX3RvX29yZGVyKGZvbGlvLCB0YXJnZXRfb3JkZXIpKQomIzQzOwkJCQlhcHBsaWVkICYjNDM7PSBjaHVua19zejsKJiM0MzsKJiM0MzsJCQlmb2xpb191bmxvY2soZm9saW8pOwomIzQzOwkJCWZvbGlvX3B1dChmb2xpbyk7CiYjNDM7CQl9IGVsc2UgewomIzQzOwkJCWZvbGlvX3dhbGtfZW5kKCZhbXA7ZncsIHZtYSk7CiYjNDM7CQl9CiYjNDM7CiYjNDM7dW5sb2NrOgomIzQzOwkJKnN6X2ZpbHRlcl9wYXNzZWQgJiM0Mzs9IGNodW5rX3N6OwomIzQzOwkJYWRkciAmIzQzOz0gY2h1bmtfc3o7CiYjNDM7CQltbWFwX3JlYWRfdW5sb2NrKG1tKTsKJiM0MzsJCWNvbmRfcmVzY2hlZCgpOwomIzQzOwl9CiYjNDM7CiYjNDM7CW1tcHV0KG1tKTsKJiM0MzsJcmV0dXJuIGFwcGxpZWQ7CiYjNDM7fQomIzQzOwogc3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb25fdmFfYXBwbHlfc2NoZW1lKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwKIAkJc3RydWN0IGRhbW9uX3RhcmdldCAqdCwgc3RydWN0IGRhbW9uX3JlZ2lvbiAqciwKIAkJc3RydWN0IGRhbW9zICpzY2hlbWUsIHVuc2lnbmVkIGxvbmcgKnN6X2ZpbHRlcl9wYXNzZWQpCkBAIC05MjIsNiAmIzQzOzEwMjIsOSBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vbl92YV9hcHBseV9zY2hlbWUoc3RydWN0IGRhbW9uX2N0eCAqY3R4LAogCQltYWR2X2FjdGlvbiA9IE1BRFZfTk9IVUdFUEFHRTsKIAkJYnJlYWs7CiAJY2FzZSBEQU1PU19DT0xMQVBTRToKJiM0MzsJCWlmIChzY2hlbWUtJmd0O3RhcmdldF9vcmRlcikKJiM0MzsJCQlyZXR1cm4gZGFtb3NfdmFfY29sbGFwc2UodCwgciwgc2NoZW1lLAomIzQzOwkJCQkJCSBzel9maWx0ZXJfcGFzc2VkKTsKIAkJbWFkdl9hY3Rpb24gPSBNQURWX0NPTExBUFNFOwogCQlicmVhazsKIAljYXNlIERBTU9TX01JR1JBVEVfSE9UOgpAQCAtOTI5LDYgJiM0MzsxMDMyLDkgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb25fdmFfYXBwbHlfc2NoZW1lKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwKIAkJcmV0dXJuIGRhbW9zX3ZhX21pZ3JhdGUodCwgciwgc2NoZW1lLCBzel9maWx0ZXJfcGFzc2VkKTsKIAljYXNlIERBTU9TX1NUQVQ6CiAJCXJldHVybiBkYW1vc192YV9zdGF0KHQsIHIsIHNjaGVtZSwgc3pfZmlsdGVyX3Bhc3NlZCk7CiYjNDM7CWNhc2UgREFNT1NfU1BMSVQ6CiYjNDM7CQlyZXR1cm4gZGFtb3NfdmFfc3BsaXQodCwgciwgc2NoZW1lLAomIzQzOwkJCQkJICBzel9maWx0ZXJfcGFzc2VkKTsKIAlkZWZhdWx0OgogCQkvKgogCQkgKiBEQU1PUyBhY3Rpb25zIHRoYXQgYXJlIG5vdCB5ZXQgc3VwcG9ydGVkIGJ5ICYjMzk7dmFkZHImIzM5Oy4KZGlmZiAtLWdpdCBhL21tL2todWdlcGFnZWQuYyBiL21tL2todWdlcGFnZWQuYwppbmRleCA2MTdiY2E3NmRiNDliNi4uMDM4Nzg0MWJhMmU3ZDggMTAwNjQ0Ci0tLSBhL21tL2todWdlcGFnZWQuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9raHVnZXBhZ2VkLmMKQEAgLTMyNzIsMyAmIzQzOzMyNzIsNDIgQEAgaW50IG1hZHZpc2VfY29sbGFwc2Uoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgc3RhcnQsCiAJcmV0dXJuIHRocHMgPT0gKChoZW5kIC0gaHN0YXJ0KSAmZ3Q7Jmd0OyBIUEFHRV9QTURfU0hJRlQpID8gMAogCQkJOiBtYWR2aXNlX2NvbGxhcHNlX2Vycm5vKGxhc3RfZmFpbCk7CiB9CiYjNDM7CiYjNDM7LyoqCiYjNDM7ICogZGFtb25fY29sbGFwc2VfZm9saW9fcmFuZ2UoKSAtIENvbGxhcHNlIGJhc2UgcGFnZXMgaW4gcmFuZ2UgaW50byBhIFRIUAomIzQzOyAqIEBtbTogICAgICAgICBtbV9zdHJ1Y3Qgb2YgdGhlIHRhcmdldCBwcm9jZXNzCiYjNDM7ICogQHN0YXJ0X2FkZHI6IHN0YXJ0IGFkZHJlc3MgKG11c3QgYmUgb3JkZXItYWxpZ25lZCkKJiM0MzsgKiBAdGFyZ2V0X29yZGVyOiBwYWdlIG9yZGVyIG9mIHRoZSBjb2xsYXBzZSByZXN1bHQgKGN1cnJlbnRseSBvbmx5CiYjNDM7ICogICAgICAgICAgICAgICAgSFBBR0VfUE1EX09SREVSIGlzIHN1cHBvcnRlZCkKJiM0MzsgKgomIzQzOyAqIFRoaW4gd3JhcHBlciBhcm91bmQgY29sbGFwc2VfaHVnZV9wYWdlKCkgZm9yIGV4dGVybmFsIGNhbGxlcnMgc3VjaCBhcwomIzQzOyAqIERBTU9OLiAgVGhlIGNhbGxlciBtdXN0IGhvbGQgYSByZWZlcmVuY2UgdG8gQG1tLiAgRG8gbm90IGhvbGQgbW1hcAomIzQzOyAqIGxvY2s6IGNvbGxhcHNlX2h1Z2VfcGFnZSgpIGFjcXVpcmVzIG1tYXBfcmVhZF9sb2NrIGZvciB2YWxpZGF0aW9uLAomIzQzOyAqIHJlbGVhc2VzIGl0LCB0aGVuIGFjcXVpcmVzIG1tYXBfd3JpdGVfbG9jayBmb3IgdGhlIGNvbGxhcHNlLiAgSG9sZGluZwomIzQzOyAqIGFuIG91dGVyIG1tYXBfcmVhZF9sb2NrIHdvdWxkIHNlbGYtZGVhZGxvY2suCiYjNDM7ICoKJiM0MzsgKiBSZXR1cm46IDAgb24gc3VjY2VzcywgLUVJTlZBTCBvbiBiYWQgYXJndW1lbnRzLCBuZWdhdGl2ZSBlcnJvciBmcm9tCiYjNDM7ICogICAgICAgICBtYWR2aXNlX2NvbGxhcHNlX2Vycm5vKCkgb3RoZXJ3aXNlLgomIzQzOyAqLwomIzQzO2ludCBkYW1vbl9jb2xsYXBzZV9mb2xpb19yYW5nZShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBzdGFydF9hZGRyLAomIzQzOwkJCSAgICAgICB1bnNpZ25lZCBpbnQgdGFyZ2V0X29yZGVyKQomIzQzO3sKJiM0MzsJc3RydWN0IGNvbGxhcHNlX2NvbnRyb2wgY2MgPSB7CiYjNDM7CQkuaXNfa2h1Z2VwYWdlZCA9IGZhbHNlLAomIzQzOwl9OwomIzQzOwllbnVtIHNjYW5fcmVzdWx0IHJlc3VsdDsKJiM0MzsKJiM0MzsJaWYgKHRhcmdldF9vcmRlciAhPSBIUEFHRV9QTURfT1JERVIpIHsKJiM0MzsJCXByX3dhcm5fb25jZSgmIzM0OyVzOiBvbmx5IFBNRCBvcmRlciAoJXUpIGlzIHN1cHBvcnRlZCwgZ290ICV1XG4mIzM0OywKJiM0MzsJCQkgICAgIF9fZnVuY19fLCBIUEFHRV9QTURfT1JERVIsIHRhcmdldF9vcmRlcik7CiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJfQomIzQzOwlpZiAoc3RhcnRfYWRkciAmYW1wOyAoKFBBR0VfU0laRSAmbHQ7Jmx0OyB0YXJnZXRfb3JkZXIpIC0gMSkpCiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsKJiM0MzsJcmVzdWx0ID0gY29sbGFwc2VfaHVnZV9wYWdlKG1tLCBzdGFydF9hZGRyLCAxLCAwLCAmYW1wO2NjLCB0YXJnZXRfb3JkZXIpOwomIzQzOwlpZiAocmVzdWx0ID09IFNDQU5fU1VDQ0VFRCkKJiM0MzsJCXJldHVybiAwOwomIzQzOwlyZXR1cm4gbWFkdmlzZV9jb2xsYXBzZV9lcnJubyhyZXN1bHQpOwomIzQzO30KJiM0MztFWFBPUlRfU1lNQk9MX0dQTChkYW1vbl9jb2xsYXBzZV9mb2xpb19yYW5nZSk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDE3OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYwNDYKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAyNDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgREFNT04gUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF0JiMzOTtzIGludHJvZHVjaW5nIGBEQU1PU19TUExJVGAgaW50byBEQU1PTiwgYW5kIGV4cGFuZGluZyB0aGUgY2FwYWJpbGl0aWVzIG9mIGBEQU1PU19DT0xMQVBTRWAgdG8gaGFuZGxlIGEgc3BlY2lmaWVkIGB0YXJnZXRfb3JkZXJgLiBTdHJhaWdodCBhd2F5LCBJIHJlY29nbml6ZSB0aGlzIGFzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQsIHNwZWNpZmljYWxseSB3aXRoaW4gREFNT04gYW5kIGtodWdlcGFnZWQuIFdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGFsbG93aW5nIERBTU9OIHRvIHNwbGl0IGxhcmdlIGZvbGlvcyB0byBhIHBhcnRpY3VsYXIgbVRIUCBvcmRlciBhbmQgZW5hYmxpbmcgZm9saW8gY29sbGFwc2UuCgpCZWZvcmUgSSBkZWx2ZSBkZWVwZXIgaW50byB0aGUgY29kZSBtb2RpZmljYXRpb25zIHdpdGhpbiBgaW5jbHVkZS9saW51eC9kYW1vbi5oYCwgYGluY2x1ZGUvbGludXgva2h1Z2VwYWdlZC5oYCwgYG1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuY2AsIGBtbS9kYW1vbi92YWRkci5jYCwgYW5kIGBtbS9raHVnZXBhZ2VkLmNgLCBJIG5lZWQgdG8gcXVpY2tseSBlc3RhYmxpc2ggdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBJJiMzOTttIGdvaW5nIHRvIGNoZWNrIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXNzb2NpYXRlZCB3aXRoIERBTU9OIGFuZCBraHVnZXBhZ2VkLiBMb29rcyBsaWtlIHdlIGhhdmUgYENPTkZJR19EQU1PTmAsIGBDT05GSUdfREFNT05fU1lTRlNgLCBhbmQgYENPTkZJR19EQU1PTl9WQUREUmAgZm9yIERBTU9OLCBhbmQgYENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRWAgZm9yIGtodWdlcGFnZWQuCgpOb3csIEkmIzM5O2xsIGRvIGEgcXVpY2sgZ3JlcCBzZWFyY2ggZm9yIGBDT05GSUdfREFNT05gIGFuZCBgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFYCB3aXRoaW4gdGhlIGNvbmZpZyBmaWxlcyB0byBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgdGhlaXIgcmVsYXRpb25zaGlwcyBhbmQgYW55IHBvdGVudGlhbCByZXF1aXJlbWVudHMgb3IgY29uZmxpY3RzIHRoYXQgbmVlZCBhdHRlbnRpb24uIFRoaXMgd2lsbCBoZWxwIG1lIGFzc2VzcyB0aGUgcGF0Y2gmIzM5O3MgaW1wYWN0IGFuZCBpdHMgaW50ZWdyYXRpb24gd2l0aGluIHRoZSBleGlzdGluZyBjb25maWd1cmF0aW9uIGxhbmRzY2FwZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGRvZXNuJiMzOTt0IGludHJvZHVjZSB1bmludGVuZGVkIGRlcGVuZGVuY2llcyBvciBicmVhayBleGlzdGluZyBzZXR1cHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTc6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7REFNT05fU1lTRlMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9kYW1vbi9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2RhbW9uL0tjb25maWc9NTY9Y29uZmlnIERBTU9OX1ZBRERSX0tVTklUX1RFU1Rcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTY3LVxubW0vZGFtb24vS2NvbmZpZzo2ODpjb25maWcgREFNT05fU1lTRlNcbm1tL2RhbW9uL0tjb25maWctNjktXHRib29sIFwmIzM0O0RBTU9OIHN5c2ZzIGludGVyZmFjZVwmIzM0O1xuLS1cbm1tL2RhbW9uL0tjb25maWctNzUtXG5tbS9kYW1vbi9LY29uZmlnOjc2OmNvbmZpZyBEQU1PTl9TWVNGU19LVU5JVF9URVNUXG5tbS9kYW1vbi9LY29uZmlnLTc3LVx0Ym9vbCBcJiMzNDtUZXN0IGZvciBkYW1vbiBzeXNmcyBpbnRlcmZhY2VcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xubW0vZGFtb24vS2NvbmZpZzo3ODpcdGRlcGVuZHMgb24gREFNT05fU1lTRlMgXHUwMDI2XHUwMDI2IEtVTklUPXlcbm1tL2RhbW9uL0tjb25maWctNzktXHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDE3OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY4NzMKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqS2NvbmZpZyBEaXZlIGZvciBEQU1PTl9WQUREUioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmluZCB3aGVyZSBgREFNT05fVkFERFJgIGlzIGRlZmluZWQgYW5kIGNvbmZpZ3VyZWQuIFRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgaXMsIG9mIGNvdXJzZSwgdGhlIGBLY29uZmlnYCBmaWxlcy4gR2l2ZW4gdGhhdCB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIERBTU9OIChEeW5hbWljIEFkZHJlc3MgTW9uaXRvcmluZyksIGl0JiMzOTtzIGhpZ2hseSBsaWtlbHkgdGhhdCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBpbiB0aGUgYG1tL2RhbW9uYCBkaXJlY3RvcnkuIFRoZXJlZm9yZSwgSSBzaG91bGQgY2hlY2sgdGhlIGBtbS9kYW1vbi9LY29uZmlnYCBmaWxlIGZpcnN0LiBUaGF0JiMzOTtzIHRoZSBnby10byBwbGFjZSBmb3IgdW5kZXJzdGFuZGluZyBEQU1PTiYjMzk7cyBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgYW5kIHRoZWlyIGRlcGVuZGVuY2llcy4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGNhbiBmaW5kIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDE3OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0RBTU9OX1ZBRERSJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9LY29uZmlnPTI2PWNvbmZpZyBEQU1PTl9LVU5JVF9URVNUXG4tLVxubW0vZGFtb24vS2NvbmZpZy0zNy1cbm1tL2RhbW9uL0tjb25maWc6Mzg6Y29uZmlnIERBTU9OX1ZBRERSXG5tbS9kYW1vbi9LY29uZmlnLTM5LVx0Ym9vbCBcJiMzNDtEYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIHZpcnR1YWwgYWRkcmVzcyBzcGFjZXNcJiMzNDtcbi0tXG5tbS9kYW1vbi9LY29uZmlnPTQ3PWNvbmZpZyBEQU1PTl9QQUREUlxuLS1cbm1tL2RhbW9uL0tjb25maWctNTUtXG5tbS9kYW1vbi9LY29uZmlnOjU2OmNvbmZpZyBEQU1PTl9WQUREUl9LVU5JVF9URVNUXG5tbS9kYW1vbi9LY29uZmlnLTU3LVx0Ym9vbCBcJiMzNDtUZXN0IGZvciBEQU1PTiBvcGVyYXRpb25zXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbm1tL2RhbW9uL0tjb25maWc6NTg6XHRkZXBlbmRzIG9uIERBTU9OX1ZBRERSIFx1MDAyNlx1MDAyNiBLVU5JVD15XG5tbS9kYW1vbi9LY29uZmlnLTU5LVx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxNzo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3Mjk3CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUuLi4KCioqQ2hlY2tpbmcgdGhlIEtjb25maWcgZm9yIFRyYW5zcGFyZW50IEh1Z2VwYWdlcyoqCgpSaWdodCwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGBUUkFOU1BBUkVOVF9IVUdFUEFHRWAgaXMgY29uZmlndXJlZCBpbiB0aGlzIHBhcnRpY3VsYXIgZW52aXJvbm1lbnQuIEEgZ29vZCBmaXJzdCBzdGVwIGlzIGFsd2F5cyB0byBnbyBzdHJhaWdodCB0byB0aGUgc291cmNlLCB0aGUgYG1tL0tjb25maWdgIGZpbGUuIEkmIzM5O20gZmFtaWxpYXIgd2l0aCB0aGlzIGFyZWEsIG9idmlvdXNseSwgYW5kIGtub3cgZXhhY3RseSB3aGF0IHRvIGxvb2sgZm9yIHRoZXJlLiBUaGF0JiMzOTtzIHdoZXJlIGFsbCB0aGUgZnVuZGFtZW50YWwgbWVtb3J5IG1hbmFnZW1lbnQgb3B0aW9ucyBhcmUgZGVjbGFyZWQgYW5kIGRlZmluZWQsIHdoaWNoIHdvdWxkIGxvZ2ljYWxseSBpbmNsdWRlIGFueXRoaW5nIHJlbGF0ZWQgdG8gdHJhbnNwYXJlbnQgaHVnZXBhZ2VzLiBJdCYjMzk7bGwgZ2l2ZSBtZSB0aGUgZGVmaW5pdGlvbnMgYW5kIHRoZSBkZXBlbmRlbmNpZXMuIEhvcGVmdWxseSwgaXTigJlzIG5vdCB0b28gZGVlcGx5IG5lc3RlZCwgSSBuZWVkIHRvIGdldCBhbiBpbml0aWFsIG92ZXJ2aWV3IGFzIHF1aWNrbHkgYXMgcG9zc2libGUuIFRpbWUgdG8gZGl2ZSBpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxNzo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtUUkFOU1BBUkVOVF9IVUdFUEFHRSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vS2NvbmZpZz04Mjc9Y29uZmlnIFBFUlNJU1RFTlRfSFVHRV9aRVJPX0ZPTElPXG5tbS9LY29uZmlnLTgyOC1cdGJvb2wgXCYjMzQ7QWxsb2NhdGUgYSBQTUQgc2l6ZWQgZm9saW8gZm9yIHplcm9pbmdcJiMzNDtcbm1tL0tjb25maWc6ODI5Olx0ZGVwZW5kcyBvbiBUUkFOU1BBUkVOVF9IVUdFUEFHRVxubW0vS2NvbmZpZy04MzAtXHRoZWxwXG4tLVxubW0vS2NvbmZpZz04NDM9Y29uZmlnIE1NX0lEXG4tLVxubW0vS2NvbmZpZy04NDUtXG5tbS9LY29uZmlnOjg0NjptZW51Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFXG5tbS9LY29uZmlnLTg0Ny1cdGJvb2wgXCYjMzQ7VHJhbnNwYXJlbnQgSHVnZXBhZ2UgU3VwcG9ydFwmIzM0O1xubW0vS2NvbmZpZzo4NDg6XHRkZXBlbmRzIG9uIEhBVkVfQVJDSF9UUkFOU1BBUkVOVF9IVUdFUEFHRSBcdTAwMjZcdTAwMjYgIVBSRUVNUFRfUlRcbm1tL0tjb25maWctODQ5LVx0c2VsZWN0IENPTVBBQ1RJT05cbi0tXG5tbS9LY29uZmlnLTg2MS1cbm1tL0tjb25maWc6ODYyOmlmIFRSQU5TUEFSRU5UX0hVR0VQQUdFXG5tbS9LY29uZmlnLTg2My1cbm1tL0tjb25maWc9ODY0PWNob2ljZVxubW0vS2NvbmZpZy04NjUtXHRwcm9tcHQgXCYjMzQ7VHJhbnNwYXJlbnQgSHVnZXBhZ2UgU3VwcG9ydCBzeXNmcyBkZWZhdWx0c1wmIzM0O1xubW0vS2NvbmZpZzo4NjY6XHRkZWZhdWx0IFRSQU5TUEFSRU5UX0hVR0VQQUdFX0FMV0FZU1xubW0vS2NvbmZpZy04NjctXHRoZWxwXG4tLVxubW0vS2NvbmZpZy04NjktXG5tbS9LY29uZmlnOjg3MDpcdGNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRV9BTFdBWVNcbm1tL0tjb25maWctODcxLVx0XHRib29sIFwmIzM0O2Fsd2F5c1wmIzM0O1xuLS1cbm1tL0tjb25maWctODc2LVxubW0vS2NvbmZpZzo4Nzc6XHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfTUFEVklTRVxubW0vS2NvbmZpZy04NzgtXHRcdGJvb2wgXCYjMzQ7bWFkdmlzZVwmIzM0O1xuLS1cbm1tL0tjb25maWctODg1LVxubW0vS2NvbmZpZzo4ODY6XHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfTkVWRVJcbm1tL0tjb25maWctODg3LVx0XHRib29sIFwmIzM0O25ldmVyXCYjMzQ7XG4tLVxubW0vS2NvbmZpZz04OTM9Y2hvaWNlXG5tbS9LY29uZmlnLTg5NC1cdHByb21wdCBcJiMzNDtTaG1lbSBodWdlcGFnZSBhbGxvY2F0aW9uIGRlZmF1bHRzXCYjMzQ7XG5tbS9LY29uZmlnOjg5NTpcdGRlZmF1bHQgVFJBTlNQQVJFTlRfSFVHRVBBR0VfU0hNRU1fSFVHRV9ORVZFUlxubW0vS2NvbmZpZy04OTYtXHRoZWxwXG4tLVxubW0vS2NvbmZpZy05MDItXG5tbS9LY29uZmlnOjkwMzpcdGNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRV9TSE1FTV9IVUdFX05FVkVSXG5tbS9LY29uZmlnLTkwNC1cdFx0Ym9vbCBcJiMzNDtuZXZlclwmIzM0O1xuLS1cbm1tL0tjb25maWctOTEyLVxubW0vS2NvbmZpZzo5MTM6XHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfU0hNRU1fSFVHRV9BTFdBWVNcbm1tL0tjb25maWctOTE0LVx0XHRib29sIFwmIzM0O2Fsd2F5c1wmIzM0O1xuLS1cbm1tL0tjb25maWctOTIwLVxubW0vS2NvbmZpZzo5MjE6XHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfU0hNRU1fSFVHRV9XSVRISU5fU0laRVxubW0vS2NvbmZpZy05MjItXHRcdGJvb2wgXCYjMzQ7d2l0aGluX3NpemVcJiMzNDtcbi0tXG5tbS9LY29uZmlnLTkyOC1cbm1tL0tjb25maWc6OTI5Olx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX1NITUVNX0hVR0VfQURWSVNFXG5tbS9LY29uZmlnLTkzMC1cdFx0Ym9vbCBcJiMzNDthZHZpc2VcJiMzNDtcbi0tXG5tbS9LY29uZmlnPTkzOD1jaG9pY2Vcbm1tL0tjb25maWctOTM5LVx0cHJvbXB0IFwmIzM0O1RtcGZzIGh1Z2VwYWdlIGFsbG9jYXRpb24gZGVmYXVsdHNcJiMzNDtcbm1tL0tjb25maWc6OTQwOlx0ZGVmYXVsdCBUUkFOU1BBUkVOVF9IVUdFUEFHRV9UTVBGU19IVUdFX05FVkVSXG5tbS9LY29uZmlnLTk0MS1cdGhlbHBcbi0tXG5tbS9LY29uZmlnLTk0Ny1cbm1tL0tjb25maWc6OTQ4Olx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX1RNUEZTX0hVR0VfTkVWRVJcbm1tL0tjb25maWctOTQ5LVx0XHRib29sIFwmIzM0O25ldmVyXCYjMzQ7XG4tLVxubW0vS2NvbmZpZy05NTYtXG5tbS9LY29uZmlnOjk1NzpcdGNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRV9UTVBGU19IVUdFX0FMV0FZU1xubW0vS2NvbmZpZy05NTgtXHRcdGJvb2wgXCYjMzQ7YWx3YXlzXCYjMzQ7XG4tLVxubW0vS2NvbmZpZy05NjQtXG5tbS9LY29uZmlnOjk2NTpcdGNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRV9UTVBGU19IVUdFX1dJVEhJTl9TSVpFXG5tbS9LY29uZmlnLTk2Ni1cdFx0Ym9vbCBcJiMzNDt3aXRoaW5fc2l6ZVwmIzM0O1xuLS1cbm1tL0tjb25maWctOTcyLVxubW0vS2NvbmZpZzo5NzM6XHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfVE1QRlNfSFVHRV9BRFZJU0Vcbm1tL0tjb25maWctOTc0LVx0XHRib29sIFwmIzM0O2FkdmlzZVwmIzM0O1xuLS1cbm1tL0tjb25maWc9OTkyPWNvbmZpZyBOT19QQUdFX01BUENPVU5UXG4tLVxubW0vS2NvbmZpZy0xMDA0LVxubW0vS2NvbmZpZzoxMDA1OmVuZGlmICMgVFJBTlNQQVJFTlRfSFVHRVBBR0Vcbm1tL0tjb25maWctMTAwNi1cbi0tXG5tbS9LY29uZmlnPTEwMTQ9Y29uZmlnIFBHVEFCTEVfSEFTX0hVR0VfTEVBVkVTXG5tbS9LY29uZmlnOjEwMTU6XHRkZWZfYm9vbCBUUkFOU1BBUkVOVF9IVUdFUEFHRSB8fCBIVUdFVExCX1BBR0Vcbm1tL0tjb25maWctMTAxNi1cbi0tXG5tbS9LY29uZmlnPTEwMjA9Y29uZmlnIEhBVkVfR0lHQU5USUNfRk9MSU9TXG5tbS9LY29uZmlnLTEwMjEtXHRkZWZfYm9vbCAoSFVHRVRMQl9QQUdFIFx1MDAyNlx1MDAyNiBBUkNIX0hBU19HSUdBTlRJQ19QQUdFKSB8fCBcXFxubW0vS2NvbmZpZzoxMDIyOlx0XHQgKFpPTkVfREVWSUNFIFx1MDAyNlx1MDAyNiBIQVZFX0FSQ0hfVFJBTlNQQVJFTlRfSFVHRVBBR0VfUFVEKVxubW0vS2NvbmZpZy0xMDIzLVxuLS1cbm1tL0tjb25maWc9MTAyOD1jb25maWcgQVJDSF9TVVBQT1JUU19IVUdFX1BGTk1BUFxubW0vS2NvbmZpZy0xMDI5LVx0ZGVmX2Jvb2wgblxubW0vS2NvbmZpZzoxMDMwOlx0ZGVwZW5kcyBvbiBUUkFOU1BBUkVOVF9IVUdFUEFHRVxubW0vS2NvbmZpZy0xMDMxLVxubW0vS2NvbmZpZz0xMDMyPWNvbmZpZyBBUkNIX1NVUFBPUlRTX1BNRF9QRk5NQVBcbm1tL0tjb25maWctMTAzMy1cdGRlZl9ib29sIHlcbm1tL0tjb25maWc6MTAzNDpcdGRlcGVuZHMgb24gQVJDSF9TVVBQT1JUU19IVUdFX1BGTk1BUCBcdTAwMjZcdTAwMjYgSEFWRV9BUkNIX1RSQU5TUEFSRU5UX0hVR0VQQUdFXG5tbS9LY29uZmlnLTEwMzUtXG5tbS9LY29uZmlnPTEwMzY9Y29uZmlnIEFSQ0hfU1VQUE9SVFNfUFVEX1BGTk1BUFxubW0vS2NvbmZpZy0xMDM3LVx0ZGVmX2Jvb2wgeVxubW0vS2NvbmZpZzoxMDM4Olx0ZGVwZW5kcyBvbiBBUkNIX1NVUFBPUlRTX0hVR0VfUEZOTUFQIFx1MDAyNlx1MDAyNiBIQVZFX0FSQ0hfVFJBTlNQQVJFTlRfSFVHRVBBR0VfUFVEXG5tbS9LY29uZmlnLTEwMzktXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTc6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTAyOAoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDUzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgREFNT04gUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB3aGF0IEkgY2FuIHNlZSwgdGhpcyBwYXRjaCBpcyBhZGRpbmcgZnVuY3Rpb25hbGl0eSB0byBEQU1PTiwgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gZm9saW8gbWFuaXB1bGF0aW9uLCBsaWtlbHkgZm9yIG1lbW9yeSBtYW5hZ2VtZW50IG9wdGltaXphdGlvbiBvciBwZXJoYXBzIGZvciBtb3JlIGdyYW51bGFyIG1vbml0b3JpbmcuCgpUaGUgY29yZSBvZiB0aGUgbmV3IGNvZGUgc2VlbXMgdG8gcmV2b2x2ZSBhcm91bmQgYGRhbW9uX2NvbGxhcHNlX2ZvbGlvX3JhbmdlYCwgYGRhbW9zX3ZhX2NvbGxhcHNlYCwgYW5kIGBkYW1vc192YV9zcGxpdGAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3csIHNvIEkmIzM5O3ZlIHRyYWNlZCBpdDogYGRhbW9uX2NvbGxhcHNlX2ZvbGlvX3JhbmdlYCBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZTsgaXQmIzM5O3MgY2FsbGVkIGJ5IGBkYW1vc192YV9jb2xsYXBzZWAuIEFuZCBib3RoIGBkYW1vc192YV9jb2xsYXBzZWAgYW5kIGBkYW1vc192YV9zcGxpdGAgYXJlIGNhbGxlZCB3aXRoaW4gYGRhbW9uX3ZhX2FwcGx5X3NjaGVtZWAsIHdoaWNoLCBhcyBJIGtub3csIGlzIGEgZnVuY3Rpb24gY2FsbGVkIGJ5IHRoZSBEQU1PTiBjb3JlLiBDcnVjaWFsbHksIHRoZSBwYXRjaCBhbHNvIGludHJvZHVjZXMgdGhlICYjMzQ7U1BMSVQmIzM0OyBhY3Rpb24gdmlhIGBEQU1PU19TUExJVGAgaW4gYGRhbW9zX3N5c2ZzX2FjdGlvbl9uYW1lc2AuIFRoaXMgaXMga2V5IGJlY2F1c2UgdGhhdCYjMzk7cyBob3cgc3l6a2FsbGVyLCB0aGUgZnV6emVyLCBpbnRlcmFjdHMgd2l0aCBEQU1PTiB2aWEgdGhlIHN5c2ZzIGludGVyZmFjZS4gVGhpcyBtZWFucyBzeXprYWxsZXIgY2FuIG5vdyBjcmVhdGUgREFNT04gc2NoZW1lcyB1c2luZyAmIzM0O3NwbGl0JiMzNDsgYW5kICYjMzQ7Y29sbGFwc2UmIzM0OyB3aXRoIHRoZSBgdGFyZ2V0X29yZGVyYCBwYXJhbWV0ZXJzLiBJdCBsb29rcyBsaWtlIHRoZSB0YXJnZXQgaGVyZSBpcyB0byBhbGxvdyBmdXp6aW5nIHRoZSBzcGxpdHRpbmcgYW5kIGNvbGxhcHNpbmcgZnVuY3Rpb25hbGl0eSB3aXRoaW4gREFNT04uCgpJIG5lZWQgdG8gbmFpbCBkb3duIHRoZSBzeW1ib2xzIG9mIGltcG9ydGFuY2U6IHRoZSBmdW5jdGlvbnMgSSBtZW50aW9uZWQgYWJvdmUsIHNwZWNpZmljYWxseSBgZGFtb3NfdmFfY29sbGFwc2VgLCBgZGFtb3NfdmFfc3BsaXRgLCBhbmQgYGRhbW9uX2NvbGxhcHNlX2ZvbGlvX3JhbmdlYC4gSSYjMzk7bGwgYWRkIHRob3NlIHRvIG15IGZvY3VzIGxpc3QuCgpJIHNob3VsZCBhbHNvIGNoZWNrIGZvciBhbnkgb3RoZXIgYWRkZWQgb3IgbW9kaWZpZWQgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gdGhpcyBuZXcgZnVuY3Rpb25hbGl0eTogSSYjMzk7bSBzZWVpbmcgYHRhcmdldF9vcmRlcl9zaG93YCwgYHRhcmdldF9vcmRlcl9zdG9yZWAsIGBkYW1vbl9zeXNmc19ta19zY2hlbWVgLCBhbmQgYGRhbW9uX3ZhX2FwcGx5X3NjaGVtZWAuIEkmIzM5O2xsIG5lZWQgdG8ga2VlcCB0aG9zZSBpbiBtaW5kIGFzIHBvdGVudGlhbGx5IHJlbGF0ZWQgc3ltYm9scy4KCk5vdywgbGV0JiMzOTtzIG1ha2Ugc3VyZSB0aGUgZGVwZW5kZW5jaWVzIGFyZSBhcyBJIHVuZGVyc3RhbmQgdGhlbS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBgVFJBTlNQQVJFTlRfSFVHRVBBR0VgIGlzIGVuYWJsZWQgZm9yIGZ1bmN0aW9ucyBzdWNoIGFzIGBzcGxpdF9mb2xpb190b19vcmRlcmAgYW5kIGBjb2xsYXBzZV9odWdlX3BhZ2VgLiBgc3BsaXRfZm9saW9fdG9fb3JkZXJgIGlzIGluIGBtbS9odWdlX21lbW9yeS5jYCBhbmQgaXMgY29uZGl0aW9uYWwgb24gYENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRWAsIGFuZCBgY29sbGFwc2VfaHVnZV9wYWdlYCBpcyBpbiBgbW0va2h1Z2VwYWdlZC5jYCBhbHNvIGNvbmRpdGlvbmFsIG9uIGBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VgLiBTbywgdG8gYmUgY2xlYXIsIGJvdGggcmVxdWlyZSB0aGF0IGNvbmZpZyB0byBiZSBlbmFibGVkLiBJIGFtIGdvaW5nIHRvIG5lZWQgdG8ga2VlcCB0aGUgZm9sbG93aW5nIGNvbmZpZ3MgaW4gbWluZDogYERBTU9OX1NZU0ZTYCwgYERBTU9OX1ZBRERSYCwgYW5kIGBUUkFOU1BBUkVOVF9IVUdFUEFHRWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDE3OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2todWdlcGFnZWQubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL01ha2VmaWxlPTEwMD1vYmotJChDT05GSUdfREVWSUNFX01JR1JBVElPTikgJiM0Mzs9IG1pZ3JhdGVfZGV2aWNlLm9cbm1tL01ha2VmaWxlOjEwMTpvYmotJChDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UpICYjNDM7PSBodWdlX21lbW9yeS5vIGtodWdlcGFnZWQub1xubW0vTWFrZWZpbGUtMTAyLW9iai0kKENPTkZJR19QQUdFX0NPVU5URVIpICYjNDM7PSBwYWdlX2NvdW50ZXIub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxNzo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDI4MQoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDcxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIEtlcm5lbCBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJJiMzOTttIGNvbmZpcm1pbmcgdGhhdCB0aGUgYGtodWdlcGFnZWQub2AgbW9kdWxlIGlzIGRlZmluaXRlbHkgY29tcGlsZWQgYW5kIGluY2x1ZGVkIHdoZW4gYENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRWAgaXMgZW5hYmxlZC4gVGhhdCYjMzk7cyBhIGdpdmVuOyBpdCYjMzk7cyB0aGUgY29yZSBvZiBob3cgdHJhbnNwYXJlbnQgaHVnZXBhZ2VzIGZ1bmN0aW9uIGluIHRoZSBrZXJuZWwuIFNvLCBjbGVhcmx5LCBgVFJBTlNQQVJFTlRfSFVHRVBBR0VgIGlzIGEgaGFyZCByZXF1aXJlbWVudCBpbiB0aGlzIGNvbnRleHQuIEl0JiMzOTtzIGEgZnVuZGFtZW50YWwgYnVpbGRpbmcgYmxvY2suCgpOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgZm9yIGBtbS9kYW1vbi92YWRkci5jYC4gTXkgbmV4dCBzdGVwIGlzIHRvIGRyaWxsIGRvd24gYW5kIHNlZSBpZiB0aGUgYERBTU9OX1ZBRERSYCBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyBhbHNvIGEgbmVjZXNzYXJ5IHByZXJlcXVpc2l0ZSBmb3IgdGhhdCBzcGVjaWZpYyBmaWxlLiBMZXQgbWUgdmVyaWZ5IHRoYXQgYW5kIG1ha2Ugc3VyZSBhbGwgb3VyIGR1Y2tzIGFyZSBpbiBhIHJvdyByZWdhcmRpbmcgaG93IHRoZXNlIHBhcnRzIG9mIHRoZSBrZXJuZWwgYXJlIGJ1aWx0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxNzo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2YWRkci5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vZGFtb24vTWFrZWZpbGU9Mz1vYmoteVx0XHRcdFx0Oj0gY29yZS5vXG5tbS9kYW1vbi9NYWtlZmlsZTo0Om9iai0kKENPTkZJR19EQU1PTl9WQUREUilcdCYjNDM7PSBvcHMtY29tbW9uLm8gdmFkZHIub1xubW0vZGFtb24vTWFrZWZpbGUtNS1vYmotJChDT05GSUdfREFNT05fUEFERFIpXHQmIzQzOz0gb3BzLWNvbW1vbi5vIHBhZGRyLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTc6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA2NTEKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqRGVwZW5kZW5jaWVzIGFuZCB0aGUgREFNT04gTGFuZHNjYXBlKioKClJpZ2h0LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IERBTU9OLiBJIHNlZSB0aG9zZSBjb25zdGFudHM6IGBEQU1PTl9WQUREUmAuIFllcywgYWJzb2x1dGVseSBuZWNlc3NhcnkuIE5vIHF1ZXN0aW9uLiBUaGUgdmlydHVhbCBhZGRyZXNzIHJlcXVpcmVtZW50IGlzIGZ1bmRhbWVudGFsIHRvIGhvdyBpdCBvcGVyYXRlcywgaG93IGl0IHRyYWNrcyBtZW1vcnkuIE1ha2VzIHBlcmZlY3Qgc2Vuc2UuCgpBbmQgdGhlbiwgbG9va2luZyBhdCBgc3lzZnMtc2NoZW1lcy5jYCwgdGhlIGNvbm5lY3Rpb24gYmVjb21lcyBldmVuIGNsZWFyZXIuIFdlJiMzOTtyZSB0YWxraW5nIGFib3V0IHBva2luZyBhcm91bmQgaW4gdGhlIGtlcm5lbCYjMzk7cyBmaWxlIHN5c3RlbSwgc28gYERBTU9OX1NZU0ZTYCBpcywgbmF0dXJhbGx5LCBhbm90aGVyIGNydWNpYWwgcGllY2Ugb2YgdGhlIHB1enpsZS4gV2l0aG91dCB0aGF0IGFjY2Vzcywgd2l0aG91dCB0aGF0IGludGVyZmFjZSwgdGhlcmUmIzM5O3Mgbm8gd2F5IHRvIGNvbmZpZ3VyZSBhbmQgY29udHJvbCB0aGUgbW9uaXRvcmluZyBzY2hlbWVzIHRoYXQgdW5kZXJwaW4gZXZlcnl0aGluZyB3ZSYjMzk7cmUgdHJ5aW5nIHRvIGFjaGlldmUgd2l0aCBEQU1PTi4gR290dGEgaGF2ZSBib3RoLCBhbmQgdW5kZXJzdGFuZGluZyB3aHkgaXMga2V5IHRvIGVmZmVjdGl2ZSBkZXZlbG9wbWVudCBhbmQgdXNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxNzo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzeXNmcy1zY2hlbWVzLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9kYW1vbi9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9NYWtlZmlsZT01PW9iai0kKENPTkZJR19EQU1PTl9QQUREUilcdCYjNDM7PSBvcHMtY29tbW9uLm8gcGFkZHIub1xubW0vZGFtb24vTWFrZWZpbGU6NjpvYmotJChDT05GSUdfREFNT05fU1lTRlMpXHQmIzQzOz0gc3lzZnMtY29tbW9uLm8gc3lzZnMtc2NoZW1lcy5vIHN5c2ZzLm9cbm1tL2RhbW9uL01ha2VmaWxlLTctb2JqLSQoQ09ORklHX0RBTU9OX1JFQ0xBSU0pXHQmIzQzOz0gbW9kdWxlcy1jb21tb24ubyByZWNsYWltLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTc6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEwMTcKCQkJCQkJCW91dHB1dDogMTczCgkJCQkJCQl0aG91Z2h0czogMzA4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBEQU1PTiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBjb25maXJtZWQgdGhhdCBgREFNT05fU1lTRlNgIGlzIGEgY3JpdGljYWwgcmVxdWlyZW1lbnQgZm9yIHRoaXMgcGF0Y2gg4oCTIG5vIHN1cnByaXNlcyB0aGVyZS4gVGhlIGNvcmUgY29uZmlncyBJJiMzOTttIHNlZWluZyB0aGF0IGFyZSByZWxldmFudCBhcmUgYERBTU9OX1NZU0ZTYCwgYERBTU9OX1ZBRERSYCwgYW5kIGBUUkFOU1BBUkVOVF9IVUdFUEFHRWAuIEkmIzM5O20gc3RhcnRpbmcgdG8gYnVpbGQgYSBwaWN0dXJlIG9mIGhvdyB0aGlzIHBhdGNoIGZpdHMgaW50byB0aGUgYmlnZ2VyIG1lbW9yeSBtYW5hZ2VtZW50IGxhbmRzY2FwZS4KCkkmIzM5O20gemVyb2luZyBpbiBvbiBhIGZldyBrZXkgc3ltYm9scyB0byBndWlkZSBteSBhbmFseXNpcy4gSSYjMzk7bGwgbmVlZCB0byB1bmRlcnN0YW5kIGBkYW1vc192YV9jb2xsYXBzZWAsIGBkYW1vc192YV9zcGxpdGAsIGBkYW1vbl9jb2xsYXBzZV9mb2xpb19yYW5nZWAsIGFuZCBgdGFyZ2V0X29yZGVyX3N0b3JlYC4gTGV0IG1lIGp1c3QgY29uZmlybSBpZiB0aGV5JiMzOTtyZSBpbnRlcm5hbCBvciBleHBvcnRlZC4gQWgsIGdvb2QuIGBkYW1vc192YV9jb2xsYXBzZWAgYW5kIGBkYW1vc192YV9zcGxpdGAgYXJlIGluZGVlZCBzdGF0aWMsIGJvdGggZm91bmQgd2l0aGluIGBtbS9kYW1vbi92YWRkci5jYC4gYGRhbW9uX2NvbGxhcHNlX2ZvbGlvX3JhbmdlYCBpcyBleHBvcnRlZCwgbG9jYXRlZCBpbiBgbW0va2h1Z2VwYWdlZC5jYC4gQW5kIGB0YXJnZXRfb3JkZXJfc3RvcmVgIGlzIGFsc28gc3RhdGljLCB3aXRoaW4gYG1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuY2AuIEkgd2lsbCBiZSBpbmNsdWRpbmcgdGhlc2UgaW4gbXkgbGlzdCBvZiBmb2N1cyBzeW1ib2xzLgoKTm93LCBsZXQmIzM5O3Mgc3RlcCBiYWNrIGFuZCBjb25zaWRlciB0aGUgKndoeSouIFRoaXMgcGF0Y2ggc2VlbXMgdG8gYmUgaW50cm9kdWNpbmcgYSBgREFNT1NfU1BMSVRgIGFjdGlvbiBhbmQgZW5oYW5jaW5nIGBEQU1PU19DT0xMQVBTRWAgd2l0aCBhIGB0YXJnZXRfb3JkZXJgIHBhcmFtZXRlci4gVGhhdCYjMzk7cyBhIGRlZmluaXRlIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBEQU1PTiBzdWJzeXN0ZW0uIENydWNpYWxseSwgaXQmIzM5O3MgbW9kaWZ5aW5nIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIGl0c2VsZiB0byBhbGxvdyBmb3IgZm9saW8gc3BsaXR0aW5nIGFuZCBjb2xsYXBzaW5nIGFjY29yZGluZyB0byBEQU1PTiBzY2hlbWVzLiBUaGlzIGRpcmVjdGx5IGltcGFjdHMgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gREFNT04gYW5kIHRoZSBrZXJuZWwmIzM5O3MgbWVtb3J5IG1hbmFnZW1lbnQuIFRoZSBrZXkgaXMgdGhhdCB0aGVzZSBuZXcgZmVhdHVyZXMgYXJlIGFjY2Vzc2libGUgdmlhIHRoZSBEQU1PTiBzeXNmcyBpbnRlcmZhY2UsIG1ha2luZyB0aGVtIHJlYWNoYWJsZSBhbmQgdGVzdGFibGUuCgpBbmQgeWVzLCB0aGUgcGF0Y2ggaXMgbWFya2VkIGFzIGBXb3J0aEZ1enppbmdgLiBUaGUgZmFjdCB0aGF0IGl0JiMzOTtzIGFsdGVyaW5nIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgYW5kIGV4cG9zaW5nIHRob3NlIGNoYW5nZXMgdmlhIHN5c2ZzIGlzIHRoZSBjcml0aWNhbCBmYWN0b3IuIFRoaXMgaXMgYW4gZXhjZWxsZW50IGNhbmRpZGF0ZSBmb3IgZnV6emluZyB0byB1bmNvdmVyIHBvdGVudGlhbCBpc3N1ZXMsIGFuZCBJIG5lZWQgdG8gZm9ybXVsYXRlIGEgZnV6emluZyBzdHJhdGVneS4gT2theSwgSSYjMzk7bSByZWFkeSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDE3OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtEQU1PTl9TWVNGUyYjMzQ7LAogICAgJiMzNDtEQU1PTl9WQUREUiYjMzQ7LAogICAgJiMzNDtUUkFOU1BBUkVOVF9IVUdFUEFHRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RhbW9zX3ZhX2NvbGxhcHNlJiMzNDssCiAgICAmIzM0O2RhbW9zX3ZhX3NwbGl0JiMzNDssCiAgICAmIzM0O2RhbW9uX2NvbGxhcHNlX2ZvbGlvX3JhbmdlJiMzNDssCiAgICAmIzM0O3RhcmdldF9vcmRlcl9zdG9yZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgREFNT04gc3Vic3lzdGVtIGJ5IGFkZGluZyBhIG5ldyBEQU1PU19TUExJVCBhY3Rpb24gYW5kIGV4dGVuZGluZyBEQU1PU19DT0xMQVBTRSB3aXRoIGEgdGFyZ2V0X29yZGVyIHBhcmFtZXRlci4gSXQgbW9kaWZpZXMgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyB0byBzcGxpdCBhbmQgY29sbGFwc2UgZm9saW9zIGJhc2VkIG9uIERBTU9OIHNjaGVtZXMuIFRoZXNlIGZlYXR1cmVzIGFyZSBleHBvc2VkIHRvIHVzZXJzcGFjZSB2aWEgdGhlIERBTU9OIHN5c2ZzIGludGVyZmFjZSwgbWFraW5nIHRoZW0gcmVhY2hhYmxlIGFuZCB0ZXN0YWJsZSBieSBhIGZ1enplci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7REFNT05fU1lTRlMmIzM0OywKICAgICYjMzQ7REFNT05fVkFERFImIzM0OywKICAgICYjMzQ7VFJBTlNQQVJFTlRfSFVHRVBBR0UmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkYW1vc192YV9jb2xsYXBzZSYjMzQ7LAogICAgJiMzNDtkYW1vc192YV9zcGxpdCYjMzQ7LAogICAgJiMzNDtkYW1vbl9jb2xsYXBzZV9mb2xpb19yYW5nZSYjMzQ7LAogICAgJiMzNDt0YXJnZXRfb3JkZXJfc3RvcmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIERBTU9OIHN1YnN5c3RlbSBieSBhZGRpbmcgYSBuZXcgREFNT1NfU1BMSVQgYWN0aW9uIGFuZCBleHRlbmRpbmcgREFNT1NfQ09MTEFQU0Ugd2l0aCBhIHRhcmdldF9vcmRlciBwYXJhbWV0ZXIuIEl0IG1vZGlmaWVzIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgdG8gc3BsaXQgYW5kIGNvbGxhcHNlIGZvbGlvcyBiYXNlZCBvbiBEQU1PTiBzY2hlbWVzLiBUaGVzZSBmZWF0dXJlcyBhcmUgZXhwb3NlZCB0byB1c2Vyc3BhY2UgdmlhIHRoZSBEQU1PTiBzeXNmcyBpbnRlcmZhY2UsIG1ha2luZyB0aGVtIHJlYWNoYWJsZSBhbmQgdGVzdGFibGUgYnkgYSBmdXp6ZXIuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxNzo1NzowMC4zMjk4OTIwNTdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDYzODM3MDAxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEQU1PTl9TWVNGU1wiLFxuICAgIFwiREFNT05fVkFERFJcIixcbiAgICBcIlRSQU5TUEFSRU5UX0hVR0VQQUdFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZGFtb3NfdmFfY29sbGFwc2VcIixcbiAgICBcImRhbW9zX3ZhX3NwbGl0XCIsXG4gICAgXCJkYW1vbl9jb2xsYXBzZV9mb2xpb19yYW5nZVwiLFxuICAgIFwidGFyZ2V0X29yZGVyX3N0b3JlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIERBTU9OIHN1YnN5c3RlbSBieSBhZGRpbmcgYSBuZXcgREFNT1NfU1BMSVQgYWN0aW9uIGFuZCBleHRlbmRpbmcgREFNT1NfQ09MTEFQU0Ugd2l0aCBhIHRhcmdldF9vcmRlciBwYXJhbWV0ZXIuIEl0IG1vZGlmaWVzIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgdG8gc3BsaXQgYW5kIGNvbGxhcHNlIGZvbGlvcyBiYXNlZCBvbiBEQU1PTiBzY2hlbWVzLiBUaGVzZSBmZWF0dXJlcyBhcmUgZXhwb3NlZCB0byB1c2Vyc3BhY2UgdmlhIHRoZSBEQU1PTiBzeXNmcyBpbnRlcmZhY2UsIG1ha2luZyB0aGVtIHJlYWNoYWJsZSBhbmQgdGVzdGFibGUgYnkgYSBmdXp6ZXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDE3OjU3OjAwLjMyOTg5ODA2N1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY1MTA1MDk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYjE3MmIwZGVkYjU0MzJhNWUyMDA5ODVkZDQxYWUzMGFkYTg4NTNkNlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEp1bCAxIDE3OjU2OjU5IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZGFtb24uaCBiL2luY2x1ZGUvbGludXgvZGFtb24uaFxcbmluZGV4IDZmN2VkYjM1OTBlZjk3Li4zMGNmNGFmYjIxMmNmYiAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L2RhbW9uLmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L2RhbW9uLmhcXG5AQCAtMTIxLDYgKzEyMSw3IEBAIHN0cnVjdCBkYW1vbl90YXJnZXQge1xcbiAgKiBAREFNT1NfSFVHRVBBR0U6XFx0Q2FsbCBgYG1hZHZpc2UoKWBgIGZvciB0aGUgcmVnaW9uIHdpdGggTUFEVl9IVUdFUEFHRS5cXG4gICogQERBTU9TX05PSFVHRVBBR0U6XFx0Q2FsbCBgYG1hZHZpc2UoKWBgIGZvciB0aGUgcmVnaW9uIHdpdGggTUFEVl9OT0hVR0VQQUdFLlxcbiAgKiBAREFNT1NfQ09MTEFQU0U6XFx0Q2FsbCBgYG1hZHZpc2UoKWBgIGZvciB0aGUgcmVnaW9uIHdpdGggTUFEVl9DT0xMQVBTRS5cXG4rICogQERBTU9TX1NQTElUOlxcdFNwbGl0IGxhcmdlIGZvbGlvcyB0byB0aGUgdGFyZ2V0IG1USFAgb3JkZXIuXFxuICAqIEBEQU1PU19MUlVfUFJJTzpcXHRQcmlvcml0aXplIHRoZSByZWdpb24gb24gaXRzIExSVSBsaXN0cy5cXG4gICogQERBTU9TX0xSVV9ERVBSSU86XFx0RGVwcmlvcml0aXplIHRoZSByZWdpb24gb24gaXRzIExSVSBsaXN0cy5cXG4gICogQERBTU9TX01JR1JBVEVfSE9UOiAgTWlncmF0ZSB0aGUgcmVnaW9ucyBwcmlvcml0aXppbmcgd2FybWVyIHJlZ2lvbnMuXFxuQEAgLTE0MSw2ICsxNDIsNyBAQCBlbnVtIGRhbW9zX2FjdGlvbiB7XFxuIFxcdERBTU9TX0hVR0VQQUdFLFxcbiBcXHREQU1PU19OT0hVR0VQQUdFLFxcbiBcXHREQU1PU19DT0xMQVBTRSxcXG4rXFx0REFNT1NfU1BMSVQsXFxuIFxcdERBTU9TX0xSVV9QUklPLFxcbiBcXHREQU1PU19MUlVfREVQUklPLFxcbiBcXHREQU1PU19NSUdSQVRFX0hPVCxcXG5AQCAtNTcyLDYgKzU3NCwxNCBAQCBzdHJ1Y3QgZGFtb3NfbWlncmF0ZV9kZXN0cyB7XFxuIHN0cnVjdCBkYW1vcyB7XFxuIFxcdHN0cnVjdCBkYW1vc19hY2Nlc3NfcGF0dGVybiBwYXR0ZXJuO1xcbiBcXHRlbnVtIGRhbW9zX2FjdGlvbiBhY3Rpb247XFxuK1xcdC8qXFxuK1xcdCAqIEB0YXJnZXRfb3JkZXI6IHRhcmdldCBtVEhQIG9yZGVyIGZvciBEQU1PU19DT0xMQVBTRSBhbmRcXG4rXFx0ICogREFNT1NfU1BMSVQuICBGb3IgQ09MTEFQU0UsIDAgbWVhbnMgUE1EIG9yZGVyIGRlZmF1bHQsXFxuK1xcdCAqIHZhbGlkIHZhbHVlczogMCwgMi4uSFBBR0VfUE1EX09SREVSLiAgRm9yIFNQTElULFxcbitcXHQgKiB2YWxpZCB2YWx1ZXM6IDIuLkhQQUdFX1BNRF9PUkRFUi0xOyAwIGFuZCBIUEFHRV9QTURfT1JERVJcXG4rXFx0ICogYXJlIHJlamVjdGVkIGF0IHNjaGVtZSBjcmVhdGlvbiB0aW1lIChkZWZhdWx0aW5nIHRvIDIpLlxcbitcXHQgKi9cXG4rXFx0dW5zaWduZWQgaW50IHRhcmdldF9vcmRlcjtcXG4gXFx0dW5zaWduZWQgbG9uZyBhcHBseV9pbnRlcnZhbF91cztcXG4gLyogcHJpdmF0ZTogaW50ZXJuYWwgdXNlIG9ubHkgKi9cXG4gXFx0LypcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9raHVnZXBhZ2VkLmggYi9pbmNsdWRlL2xpbnV4L2todWdlcGFnZWQuaFxcbmluZGV4IGQ3YTkwNTNmZjRmZWQxLi42ZmI4YTY4NTc3OTAzYSAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L2todWdlcGFnZWQuaFxcbisrKyBiL2luY2x1ZGUvbGludXgva2h1Z2VwYWdlZC5oXFxuQEAgLTIwLDYgKzIwLDkgQEAgZXh0ZXJuIGJvb2wgY3VycmVudF9pc19raHVnZXBhZ2VkKHZvaWQpO1xcbiB2b2lkIGNvbGxhcHNlX3B0ZV9tYXBwZWRfdGhwKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIGFkZHIsXFxuIFxcdFxcdGJvb2wgaW5zdGFsbF9wbWQpO1xcbiBcXG4raW50IGRhbW9uX2NvbGxhcHNlX2ZvbGlvX3JhbmdlKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIHN0YXJ0X2FkZHIsXFxuK1xcdFxcdFxcdCAgICAgICB1bnNpZ25lZCBpbnQgdGFyZ2V0X29yZGVyKTtcXG4rXFxuIHN0YXRpYyBpbmxpbmUgdm9pZCBraHVnZXBhZ2VkX2Zvcmsoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHN0cnVjdCBtbV9zdHJ1Y3QgKm9sZG1tKVxcbiB7XFxuIFxcdGlmIChtbV9mbGFnc190ZXN0KE1NRl9WTV9IVUdFUEFHRSwgb2xkbW0pKVxcbmRpZmYgLS1naXQgYS9tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMgYi9tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmNcXG5pbmRleCAzMjljZmQwYmJlOWYzMi4uNTQ3MjUyZmM4YTIwYWQgMTAwNjQ0XFxuLS0tIGEvbW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jXFxuKysrIGIvbW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jXFxuQEAgLTYsNyArNiw5IEBAXFxuICAqL1xcbiBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NsYWIuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L21tLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9udW1hLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9odWdlX21tLmhcXHUwMDNlXFxuIFxcbiAjaW5jbHVkZSBcXFwic3lzZnMtY29tbW9uLmhcXFwiXFxuIFxcbkBAIC0yMjU3LDYgKzIyNTksNyBAQCBzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lIHtcXG4gXFx0c3RydWN0IGRhbW9uX3N5c2ZzX3N0YXRzICpzdGF0cztcXG4gXFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25zICp0cmllZF9yZWdpb25zO1xcbiBcXHRpbnQgdGFyZ2V0X25pZDtcXG4rXFx0dW5zaWduZWQgaW50IHRhcmdldF9vcmRlcjtcXG4gXFx0c3RydWN0IGRhbW9zX3N5c2ZzX2Rlc3RzICpkZXN0cztcXG4gfTtcXG4gXFxuQEAgLTIyOTAsNiArMjI5MywxMCBAQCBzdGF0aWMgc3RydWN0IGRhbW9zX3N5c2ZzX2FjdGlvbl9uYW1lIGRhbW9zX3N5c2ZzX2FjdGlvbl9uYW1lc1tdID0ge1xcbiBcXHRcXHQuYWN0aW9uID0gREFNT1NfQ09MTEFQU0UsXFxuIFxcdFxcdC5uYW1lID0gXFxcImNvbGxhcHNlXFxcIixcXG4gXFx0fSxcXG4rXFx0e1xcbitcXHRcXHQuYWN0aW9uID0gREFNT1NfU1BMSVQsXFxuK1xcdFxcdC5uYW1lID0gXFxcInNwbGl0XFxcIixcXG4rXFx0fSxcXG4gXFx0e1xcbiBcXHRcXHQuYWN0aW9uID0gREFNT1NfTFJVX1BSSU8sXFxuIFxcdFxcdC5uYW1lID0gXFxcImxydV9wcmlvXFxcIixcXG5AQCAtMjY0Miw2ICsyNjQ5LDM0IEBAIHN0YXRpYyBzc2l6ZV90IHRhcmdldF9uaWRfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosXFxuIFxcdHJldHVybiBlcnIgPyBlcnIgOiBjb3VudDtcXG4gfVxcbiBcXG4rc3RhdGljIHNzaXplX3QgdGFyZ2V0X29yZGVyX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosXFxuK1xcdFxcdHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKVxcbit7XFxuK1xcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWUgKnNjaGVtZSA9IGNvbnRhaW5lcl9vZihrb2JqLFxcbitcXHRcXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lLCBrb2JqKTtcXG4rXFxuK1xcdHJldHVybiBzeXNmc19lbWl0KGJ1ZiwgXFxcIiV1XFxcXG5cXFwiLCBzY2hlbWUtXFx1MDAzZXRhcmdldF9vcmRlcik7XFxuK31cXG4rXFxuK3N0YXRpYyBzc2l6ZV90IHRhcmdldF9vcmRlcl9zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4rXFx0XFx0c3RydWN0IGtvYmpfYXR0cmlidXRlICphdHRyLCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudClcXG4re1xcbitcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lICpzY2hlbWUgPSBjb250YWluZXJfb2Yoa29iaixcXG4rXFx0XFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZSwga29iaik7XFxuK1xcdHVuc2lnbmVkIGludCB2YWw7XFxuK1xcdGludCBlcnI7XFxuK1xcbitcXHRlcnIgPSBrc3RydG91aW50KGJ1ZiwgMCwgXFx1MDAyNnZhbCk7XFxuK1xcdGlmIChlcnIpXFxuK1xcdFxcdHJldHVybiBlcnI7XFxuK1xcbitcXHRpZiAodmFsICE9IDAgXFx1MDAyNlxcdTAwMjYgKHZhbCBcXHUwMDNjIDIgfHwgdmFsIFxcdTAwM2UgSFBBR0VfUE1EX09SREVSKSlcXG4rXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcbitcXHRzY2hlbWUtXFx1MDAzZXRhcmdldF9vcmRlciA9IHZhbDtcXG4rXFx0cmV0dXJuIGNvdW50O1xcbit9XFxuK1xcbiBzdGF0aWMgdm9pZCBkYW1vbl9zeXNmc19zY2hlbWVfcmVsZWFzZShzdHJ1Y3Qga29iamVjdCAqa29iailcXG4ge1xcbiBcXHRrZnJlZShjb250YWluZXJfb2Yoa29iaiwgc3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZSwga29iaikpO1xcbkBAIC0yNjU2LDEwICsyNjkxLDE0IEBAIHN0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgZGFtb25fc3lzZnNfc2NoZW1lX2FwcGx5X2ludGVydmFsX3VzX2F0dHIgPVxcbiBzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3NjaGVtZV90YXJnZXRfbmlkX2F0dHIgPVxcbiBcXHRcXHRfX0FUVFJfUldfTU9ERSh0YXJnZXRfbmlkLCAwNjAwKTtcXG4gXFxuK3N0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgZGFtb25fc3lzZnNfc2NoZW1lX3RhcmdldF9vcmRlcl9hdHRyID1cXG4rXFx0XFx0X19BVFRSX1JXX01PREUodGFyZ2V0X29yZGVyLCAwNjAwKTtcXG4rXFxuIHN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICpkYW1vbl9zeXNmc19zY2hlbWVfYXR0cnNbXSA9IHtcXG4gXFx0XFx1MDAyNmRhbW9uX3N5c2ZzX3NjaGVtZV9hY3Rpb25fYXR0ci5hdHRyLFxcbiBcXHRcXHUwMDI2ZGFtb25fc3lzZnNfc2NoZW1lX2FwcGx5X2ludGVydmFsX3VzX2F0dHIuYXR0cixcXG4gXFx0XFx1MDAyNmRhbW9uX3N5c2ZzX3NjaGVtZV90YXJnZXRfbmlkX2F0dHIuYXR0cixcXG4rXFx0XFx1MDAyNmRhbW9uX3N5c2ZzX3NjaGVtZV90YXJnZXRfb3JkZXJfYXR0ci5hdHRyLFxcbiBcXHROVUxMLFxcbiB9O1xcbiBBVFRSSUJVVEVfR1JPVVBTKGRhbW9uX3N5c2ZzX3NjaGVtZSk7XFxuQEAgLTMwMDUsNiArMzA0NCwyNCBAQCBzdGF0aWMgc3RydWN0IGRhbW9zICpkYW1vbl9zeXNmc19ta19zY2hlbWUoXFxuIFxcdGlmICghc2NoZW1lKVxcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4gXFxuK1xcdGlmIChzeXNmc19zY2hlbWUtXFx1MDAzZWFjdGlvbiA9PSBEQU1PU19DT0xMQVBTRSBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgc3lzZnNfc2NoZW1lLVxcdTAwM2V0YXJnZXRfb3JkZXIgIT0gMCBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgc3lzZnNfc2NoZW1lLVxcdTAwM2V0YXJnZXRfb3JkZXIgIT0gSFBBR0VfUE1EX09SREVSKSB7XFxuK1xcdFxcdHByX3dhcm4oXFxcIkRBTU9OIGNvbGxhcHNlOiB0YXJnZXRfb3JkZXIgJXUgbm90IHN1cHBvcnRlZCwgb25seSBQTUQgb3JkZXIgKCV1KSBpcyBhdmFpbGFibGUuIFVzZSAwIG9yICV1LlxcXFxuXFxcIixcXG4rXFx0XFx0XFx0c3lzZnNfc2NoZW1lLVxcdTAwM2V0YXJnZXRfb3JkZXIsXFxuK1xcdFxcdFxcdEhQQUdFX1BNRF9PUkRFUiwgSFBBR0VfUE1EX09SREVSKTtcXG4rXFx0XFx0c3lzZnNfc2NoZW1lLVxcdTAwM2V0YXJnZXRfb3JkZXIgPSAwO1xcbitcXHR9XFxuK1xcdGlmIChzeXNmc19zY2hlbWUtXFx1MDAzZWFjdGlvbiA9PSBEQU1PU19TUExJVCBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgKHN5c2ZzX3NjaGVtZS1cXHUwMDNldGFyZ2V0X29yZGVyID09IDAgfHxcXG4rXFx0ICAgICBzeXNmc19zY2hlbWUtXFx1MDAzZXRhcmdldF9vcmRlciBcXHUwMDNlPSBIUEFHRV9QTURfT1JERVIpKSB7XFxuK1xcdFxcdHByX3dhcm4oXFxcIkRBTU9OIHNwbGl0OiB0YXJnZXRfb3JkZXIgJXUgaW52YWxpZCwgbmVlZCAyLi4ldS4gRGVmYXVsdGluZyB0byAyLlxcXFxuXFxcIixcXG4rXFx0XFx0XFx0c3lzZnNfc2NoZW1lLVxcdTAwM2V0YXJnZXRfb3JkZXIsXFxuK1xcdFxcdFxcdEhQQUdFX1BNRF9PUkRFUiAtIDEpO1xcbitcXHRcXHRzeXNmc19zY2hlbWUtXFx1MDAzZXRhcmdldF9vcmRlciA9IDI7XFxuK1xcdH1cXG4rXFx0c2NoZW1lLVxcdTAwM2V0YXJnZXRfb3JkZXIgPSBzeXNmc19zY2hlbWUtXFx1MDAzZXRhcmdldF9vcmRlcjtcXG4rXFxuIFxcdGVyciA9IGRhbW9zX3N5c2ZzX2FkZF9xdW90YV9zY29yZShzeXNmc19xdW90YXMtXFx1MDAzZWdvYWxzLCBcXHUwMDI2c2NoZW1lLVxcdTAwM2VxdW90YSk7XFxuIFxcdGlmIChlcnIpIHtcXG4gXFx0XFx0ZGFtb25fZGVzdHJveV9zY2hlbWUoc2NoZW1lKTtcXG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vdmFkZHIuYyBiL21tL2RhbW9uL3ZhZGRyLmNcXG5pbmRleCBkMjcxNDc2MDM1NjQxYi4uM2YyMDYxYjI5ZWQ4NDIgMTAwNjQ0XFxuLS0tIGEvbW0vZGFtb24vdmFkZHIuY1xcbisrKyBiL21tL2RhbW9uL3ZhZGRyLmNcXG5AQCAtMTQsNiArMTQsNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvcGFnZV9pZGxlLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9wYWdld2Fsay5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvc2NoZWQvbW0uaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2todWdlcGFnZWQuaFxcdTAwM2VcXG4gXFxuICNpbmNsdWRlIFxcXCIuLi9pbnRlcm5hbC5oXFxcIlxcbiAjaW5jbHVkZSBcXFwib3BzLWNvbW1vbi5oXFxcIlxcbkBAIC04OTksNiArOTAwLDEwNSBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vc192YV9zdGF0KHN0cnVjdCBkYW1vbl90YXJnZXQgKnRhcmdldCxcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuK3N0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9zX3ZhX2NvbGxhcHNlKHN0cnVjdCBkYW1vbl90YXJnZXQgKnRhcmdldCxcXG4rXFx0XFx0c3RydWN0IGRhbW9uX3JlZ2lvbiAqciwgc3RydWN0IGRhbW9zICpzLFxcbitcXHRcXHR1bnNpZ25lZCBsb25nICpzel9maWx0ZXJfcGFzc2VkKVxcbit7XFxuK1xcdHVuc2lnbmVkIGxvbmcgYWRkciwgZW5kLCBjaHVua19zejtcXG4rXFx0dW5zaWduZWQgaW50IHRhcmdldF9vcmRlciA9IHMtXFx1MDAzZXRhcmdldF9vcmRlcjtcXG4rXFx0dW5zaWduZWQgbG9uZyBhcHBsaWVkID0gMDtcXG4rXFx0c3RydWN0IG1tX3N0cnVjdCAqbW07XFxuK1xcdGludCByZXQ7XFxuK1xcbitcXHRpZiAodGFyZ2V0X29yZGVyIFxcdTAwM2MgMiB8fCB0YXJnZXRfb3JkZXIgXFx1MDAzZSBIUEFHRV9QTURfT1JERVIpXFxuK1xcdFxcdHJldHVybiAwO1xcbitcXG4rXFx0Y2h1bmtfc3ogPSBQQUdFX1NJWkUgXFx1MDAzY1xcdTAwM2MgdGFyZ2V0X29yZGVyO1xcbitcXHRhZGRyID0gQUxJR05fRE9XTihyLVxcdTAwM2Vhci5zdGFydCwgY2h1bmtfc3opO1xcbitcXHRlbmQgPSBBTElHTihyLVxcdTAwM2Vhci5lbmQsIGNodW5rX3N6KTtcXG4rXFxuK1xcdG1tID0gZGFtb25fZ2V0X21tKHRhcmdldCk7XFxuK1xcdGlmICghbW0pXFxuK1xcdFxcdHJldHVybiAwO1xcbitcXG4rXFx0d2hpbGUgKGFkZHIgXFx1MDAzYyBlbmQpIHtcXG4rXFx0XFx0cmV0ID0gZGFtb25fY29sbGFwc2VfZm9saW9fcmFuZ2UobW0sIGFkZHIsIHRhcmdldF9vcmRlcik7XFxuK1xcdFxcdGlmICghcmV0KVxcbitcXHRcXHRcXHRhcHBsaWVkICs9IGNodW5rX3N6O1xcbitcXHRcXHQqc3pfZmlsdGVyX3Bhc3NlZCArPSBjaHVua19zejtcXG4rXFx0XFx0YWRkciArPSBjaHVua19zejtcXG4rXFx0XFx0Y29uZF9yZXNjaGVkKCk7XFxuK1xcdH1cXG4rXFxuK1xcdG1tcHV0KG1tKTtcXG4rXFx0cmV0dXJuIGFwcGxpZWQ7XFxuK31cXG4rXFxuK3N0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9zX3ZhX3NwbGl0KHN0cnVjdCBkYW1vbl90YXJnZXQgKnRhcmdldCxcXG4rXFx0XFx0c3RydWN0IGRhbW9uX3JlZ2lvbiAqciwgc3RydWN0IGRhbW9zICpzLFxcbitcXHRcXHR1bnNpZ25lZCBsb25nICpzel9maWx0ZXJfcGFzc2VkKVxcbit7XFxuK1xcdHVuc2lnbmVkIGxvbmcgYWRkciwgZW5kLCBjaHVua19zejtcXG4rXFx0dW5zaWduZWQgaW50IHRhcmdldF9vcmRlciA9IHMtXFx1MDAzZXRhcmdldF9vcmRlcjtcXG4rXFx0dW5zaWduZWQgbG9uZyBhcHBsaWVkID0gMDtcXG4rXFx0c3RydWN0IG1tX3N0cnVjdCAqbW07XFxuK1xcdHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hO1xcbitcXHRzdHJ1Y3QgZm9saW8gKmZvbGlvO1xcbitcXHRzdHJ1Y3QgZm9saW9fd2FsayBmdztcXG4rXFxuK1xcdG1tID0gZGFtb25fZ2V0X21tKHRhcmdldCk7XFxuK1xcdGlmICghbW0pXFxuK1xcdFxcdHJldHVybiAwO1xcbitcXG4rXFx0Y2h1bmtfc3ogPSBQQUdFX1NJWkUgXFx1MDAzY1xcdTAwM2MgSFBBR0VfUE1EX09SREVSO1xcbitcXHRhZGRyID0gQUxJR05fRE9XTihyLVxcdTAwM2Vhci5zdGFydCwgY2h1bmtfc3opO1xcbitcXHRlbmQgPSBBTElHTihyLVxcdTAwM2Vhci5lbmQsIGNodW5rX3N6KTtcXG4rXFxuK1xcdHdoaWxlIChhZGRyIFxcdTAwM2MgZW5kKSB7XFxuK1xcdFxcdG1tYXBfcmVhZF9sb2NrKG1tKTtcXG4rXFx0XFx0dm1hID0gZmluZF92bWEobW0sIGFkZHIpO1xcbitcXHRcXHQvKlxcbitcXHRcXHQgKiBzcGxpdF9mb2xpb190b19vcmRlcigpIHN1cHBvcnRzIGJvdGggYW5vbiBhbmQgc2htZW1cXG4rXFx0XFx0ICogZm9saW9zLCBzbyB3ZSBhY2NlcHQgYW55IFZNQSB0aGF0IGhhcyBhIGZvbGlvIGF0IEBhZGRyLlxcbitcXHRcXHQgKiBUaGlzIGNvdmVycyBpbXBvcnRhbnQgdXNlIGNhc2VzIGxpa2UgdG1wZnMgVEhQLWJhY2tlZFxcbitcXHRcXHQgKiBLVk0gZ3Vlc3QgbWVtb3J5IHdoZXJlIGNvbGQgYW5kIGhvdCBwYWdlcyBhcmUgYnVuZGxlZFxcbitcXHRcXHQgKiB0b2dldGhlciBpbiBhIHNpbmdsZSBQTUQgVEhQLlxcbitcXHRcXHQgKi9cXG4rXFx0XFx0aWYgKCF2bWEgfHwgYWRkciBcXHUwMDNjIHZtYS1cXHUwMDNldm1fc3RhcnQpXFxuK1xcdFxcdFxcdGdvdG8gdW5sb2NrO1xcbitcXG4rXFx0XFx0Zm9saW8gPSBmb2xpb193YWxrX3N0YXJ0KFxcdTAwMjZmdywgdm1hLCBhZGRyLCAwKTtcXG4rXFx0XFx0aWYgKCFmb2xpbylcXG4rXFx0XFx0XFx0Z290byB1bmxvY2s7XFxuK1xcbitcXHRcXHRpZiAoZm9saW9fb3JkZXIoZm9saW8pIFxcdTAwM2UgdGFyZ2V0X29yZGVyKSB7XFxuK1xcdFxcdFxcdGlmICghZm9saW9fdHJ5bG9jayhmb2xpbykpIHtcXG4rXFx0XFx0XFx0XFx0Zm9saW9fd2Fsa19lbmQoXFx1MDAyNmZ3LCB2bWEpO1xcbitcXHRcXHRcXHRcXHRnb3RvIHVubG9jaztcXG4rXFx0XFx0XFx0fVxcbitcXHRcXHRcXHRmb2xpb19nZXQoZm9saW8pO1xcbitcXHRcXHRcXHRmb2xpb193YWxrX2VuZChcXHUwMDI2ZncsIHZtYSk7XFxuK1xcbitcXHRcXHRcXHRpZiAoIXNwbGl0X2ZvbGlvX3RvX29yZGVyKGZvbGlvLCB0YXJnZXRfb3JkZXIpKVxcbitcXHRcXHRcXHRcXHRhcHBsaWVkICs9IGNodW5rX3N6O1xcbitcXG4rXFx0XFx0XFx0Zm9saW9fdW5sb2NrKGZvbGlvKTtcXG4rXFx0XFx0XFx0Zm9saW9fcHV0KGZvbGlvKTtcXG4rXFx0XFx0fSBlbHNlIHtcXG4rXFx0XFx0XFx0Zm9saW9fd2Fsa19lbmQoXFx1MDAyNmZ3LCB2bWEpO1xcbitcXHRcXHR9XFxuK1xcbit1bmxvY2s6XFxuK1xcdFxcdCpzel9maWx0ZXJfcGFzc2VkICs9IGNodW5rX3N6O1xcbitcXHRcXHRhZGRyICs9IGNodW5rX3N6O1xcbitcXHRcXHRtbWFwX3JlYWRfdW5sb2NrKG1tKTtcXG4rXFx0XFx0Y29uZF9yZXNjaGVkKCk7XFxuK1xcdH1cXG4rXFxuK1xcdG1tcHV0KG1tKTtcXG4rXFx0cmV0dXJuIGFwcGxpZWQ7XFxuK31cXG4rXFxuIHN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9uX3ZhX2FwcGx5X3NjaGVtZShzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsXFxuIFxcdFxcdHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsIHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXFxuIFxcdFxcdHN0cnVjdCBkYW1vcyAqc2NoZW1lLCB1bnNpZ25lZCBsb25nICpzel9maWx0ZXJfcGFzc2VkKVxcbkBAIC05MjIsNiArMTAyMiw5IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9uX3ZhX2FwcGx5X3NjaGVtZShzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsXFxuIFxcdFxcdG1hZHZfYWN0aW9uID0gTUFEVl9OT0hVR0VQQUdFO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBEQU1PU19DT0xMQVBTRTpcXG4rXFx0XFx0aWYgKHNjaGVtZS1cXHUwMDNldGFyZ2V0X29yZGVyKVxcbitcXHRcXHRcXHRyZXR1cm4gZGFtb3NfdmFfY29sbGFwc2UodCwgciwgc2NoZW1lLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgc3pfZmlsdGVyX3Bhc3NlZCk7XFxuIFxcdFxcdG1hZHZfYWN0aW9uID0gTUFEVl9DT0xMQVBTRTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgREFNT1NfTUlHUkFURV9IT1Q6XFxuQEAgLTkyOSw2ICsxMDMyLDkgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb25fdmFfYXBwbHlfc2NoZW1lKHN0cnVjdCBkYW1vbl9jdHggKmN0eCxcXG4gXFx0XFx0cmV0dXJuIGRhbW9zX3ZhX21pZ3JhdGUodCwgciwgc2NoZW1lLCBzel9maWx0ZXJfcGFzc2VkKTtcXG4gXFx0Y2FzZSBEQU1PU19TVEFUOlxcbiBcXHRcXHRyZXR1cm4gZGFtb3NfdmFfc3RhdCh0LCByLCBzY2hlbWUsIHN6X2ZpbHRlcl9wYXNzZWQpO1xcbitcXHRjYXNlIERBTU9TX1NQTElUOlxcbitcXHRcXHRyZXR1cm4gZGFtb3NfdmFfc3BsaXQodCwgciwgc2NoZW1lLFxcbitcXHRcXHRcXHRcXHRcXHQgIHN6X2ZpbHRlcl9wYXNzZWQpO1xcbiBcXHRkZWZhdWx0OlxcbiBcXHRcXHQvKlxcbiBcXHRcXHQgKiBEQU1PUyBhY3Rpb25zIHRoYXQgYXJlIG5vdCB5ZXQgc3VwcG9ydGVkIGJ5ICd2YWRkcicuXFxuZGlmZiAtLWdpdCBhL21tL2todWdlcGFnZWQuYyBiL21tL2todWdlcGFnZWQuY1xcbmluZGV4IDYxN2JjYTc2ZGI0OWI2Li4wMzg3ODQxYmEyZTdkOCAxMDA2NDRcXG4tLS0gYS9tbS9raHVnZXBhZ2VkLmNcXG4rKysgYi9tbS9raHVnZXBhZ2VkLmNcXG5AQCAtMzI3MiwzICszMjcyLDQyIEBAIGludCBtYWR2aXNlX2NvbGxhcHNlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIHN0YXJ0LFxcbiBcXHRyZXR1cm4gdGhwcyA9PSAoKGhlbmQgLSBoc3RhcnQpIFxcdTAwM2VcXHUwMDNlIEhQQUdFX1BNRF9TSElGVCkgPyAwXFxuIFxcdFxcdFxcdDogbWFkdmlzZV9jb2xsYXBzZV9lcnJubyhsYXN0X2ZhaWwpO1xcbiB9XFxuK1xcbisvKipcXG4rICogZGFtb25fY29sbGFwc2VfZm9saW9fcmFuZ2UoKSAtIENvbGxhcHNlIGJhc2UgcGFnZXMgaW4gcmFuZ2UgaW50byBhIFRIUFxcbisgKiBAbW06ICAgICAgICAgbW1fc3RydWN0IG9mIHRoZSB0YXJnZXQgcHJvY2Vzc1xcbisgKiBAc3RhcnRfYWRkcjogc3RhcnQgYWRkcmVzcyAobXVzdCBiZSBvcmRlci1hbGlnbmVkKVxcbisgKiBAdGFyZ2V0X29yZGVyOiBwYWdlIG9yZGVyIG9mIHRoZSBjb2xsYXBzZSByZXN1bHQgKGN1cnJlbnRseSBvbmx5XFxuKyAqICAgICAgICAgICAgICAgIEhQQUdFX1BNRF9PUkRFUiBpcyBzdXBwb3J0ZWQpXFxuKyAqXFxuKyAqIFRoaW4gd3JhcHBlciBhcm91bmQgY29sbGFwc2VfaHVnZV9wYWdlKCkgZm9yIGV4dGVybmFsIGNhbGxlcnMgc3VjaCBhc1xcbisgKiBEQU1PTi4gIFRoZSBjYWxsZXIgbXVzdCBob2xkIGEgcmVmZXJlbmNlIHRvIEBtbS4gIERvIG5vdCBob2xkIG1tYXBcXG4rICogbG9jazogY29sbGFwc2VfaHVnZV9wYWdlKCkgYWNxdWlyZXMgbW1hcF9yZWFkX2xvY2sgZm9yIHZhbGlkYXRpb24sXFxuKyAqIHJlbGVhc2VzIGl0LCB0aGVuIGFjcXVpcmVzIG1tYXBfd3JpdGVfbG9jayBmb3IgdGhlIGNvbGxhcHNlLiAgSG9sZGluZ1xcbisgKiBhbiBvdXRlciBtbWFwX3JlYWRfbG9jayB3b3VsZCBzZWxmLWRlYWRsb2NrLlxcbisgKlxcbisgKiBSZXR1cm46IDAgb24gc3VjY2VzcywgLUVJTlZBTCBvbiBiYWQgYXJndW1lbnRzLCBuZWdhdGl2ZSBlcnJvciBmcm9tXFxuKyAqICAgICAgICAgbWFkdmlzZV9jb2xsYXBzZV9lcnJubygpIG90aGVyd2lzZS5cXG4rICovXFxuK2ludCBkYW1vbl9jb2xsYXBzZV9mb2xpb19yYW5nZShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBzdGFydF9hZGRyLFxcbitcXHRcXHRcXHQgICAgICAgdW5zaWduZWQgaW50IHRhcmdldF9vcmRlcilcXG4re1xcbitcXHRzdHJ1Y3QgY29sbGFwc2VfY29udHJvbCBjYyA9IHtcXG4rXFx0XFx0LmlzX2todWdlcGFnZWQgPSBmYWxzZSxcXG4rXFx0fTtcXG4rXFx0ZW51bSBzY2FuX3Jlc3VsdCByZXN1bHQ7XFxuK1xcbitcXHRpZiAodGFyZ2V0X29yZGVyICE9IEhQQUdFX1BNRF9PUkRFUikge1xcbitcXHRcXHRwcl93YXJuX29uY2UoXFxcIiVzOiBvbmx5IFBNRCBvcmRlciAoJXUpIGlzIHN1cHBvcnRlZCwgZ290ICV1XFxcXG5cXFwiLFxcbitcXHRcXHRcXHQgICAgIF9fZnVuY19fLCBIUEFHRV9QTURfT1JERVIsIHRhcmdldF9vcmRlcik7XFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHR9XFxuK1xcdGlmIChzdGFydF9hZGRyIFxcdTAwMjYgKChQQUdFX1NJWkUgXFx1MDAzY1xcdTAwM2MgdGFyZ2V0X29yZGVyKSAtIDEpKVxcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFxuK1xcdHJlc3VsdCA9IGNvbGxhcHNlX2h1Z2VfcGFnZShtbSwgc3RhcnRfYWRkciwgMSwgMCwgXFx1MDAyNmNjLCB0YXJnZXRfb3JkZXIpO1xcbitcXHRpZiAocmVzdWx0ID09IFNDQU5fU1VDQ0VFRClcXG4rXFx0XFx0cmV0dXJuIDA7XFxuK1xcdHJldHVybiBtYWR2aXNlX2NvbGxhcHNlX2Vycm5vKHJlc3VsdCk7XFxuK31cXG4rRVhQT1JUX1NZTUJPTF9HUEwoZGFtb25fY29sbGFwc2VfZm9saW9fcmFuZ2UpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxNzo1NzowMC43OTU4Mjk4ODNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwMTcyNDIxMTIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRBTU9OX1NZU0ZTXCIsXG4gICAgXCJEQU1PTl9WQUREUlwiLFxuICAgIFwiVFJBTlNQQVJFTlRfSFVHRVBBR0VcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkYW1vc192YV9jb2xsYXBzZVwiLFxuICAgIFwiZGFtb3NfdmFfc3BsaXRcIixcbiAgICBcImRhbW9uX2NvbGxhcHNlX2ZvbGlvX3JhbmdlXCIsXG4gICAgXCJ0YXJnZXRfb3JkZXJfc3RvcmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgREFNT04gc3Vic3lzdGVtIGJ5IGFkZGluZyBhIG5ldyBEQU1PU19TUExJVCBhY3Rpb24gYW5kIGV4dGVuZGluZyBEQU1PU19DT0xMQVBTRSB3aXRoIGEgdGFyZ2V0X29yZGVyIHBhcmFtZXRlci4gSXQgbW9kaWZpZXMgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyB0byBzcGxpdCBhbmQgY29sbGFwc2UgZm9saW9zIGJhc2VkIG9uIERBTU9OIHNjaGVtZXMuIFRoZXNlIGZlYXR1cmVzIGFyZSBleHBvc2VkIHRvIHVzZXJzcGFjZSB2aWEgdGhlIERBTU9OIHN5c2ZzIGludGVyZmFjZSwgbWFraW5nIHRoZW0gcmVhY2hhYmxlIGFuZCB0ZXN0YWJsZSBieSBhIGZ1enplci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBiMTcyYjBkZWRiNTQzMmE1ZTIwMDk4NWRkNDFhZTMwYWRhODg1M2Q2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMSAxNzo1Njo1OSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZGFtb24uaCBiL2luY2x1ZGUvbGludXgvZGFtb24uaFxuaW5kZXggNmY3ZWRiMzU5MGVmOTcuLjMwY2Y0YWZiMjEyY2ZiIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9kYW1vbi5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L2RhbW9uLmhcbkBAIC0xMjEsNiArMTIxLDcgQEAgc3RydWN0IGRhbW9uX3RhcmdldCB7XG4gICogQERBTU9TX0hVR0VQQUdFOlx0Q2FsbCBgYG1hZHZpc2UoKWBgIGZvciB0aGUgcmVnaW9uIHdpdGggTUFEVl9IVUdFUEFHRS5cbiAgKiBAREFNT1NfTk9IVUdFUEFHRTpcdENhbGwgYGBtYWR2aXNlKClgYCBmb3IgdGhlIHJlZ2lvbiB3aXRoIE1BRFZfTk9IVUdFUEFHRS5cbiAgKiBAREFNT1NfQ09MTEFQU0U6XHRDYWxsIGBgbWFkdmlzZSgpYGAgZm9yIHRoZSByZWdpb24gd2l0aCBNQURWX0NPTExBUFNFLlxuKyAqIEBEQU1PU19TUExJVDpcdFNwbGl0IGxhcmdlIGZvbGlvcyB0byB0aGUgdGFyZ2V0IG1USFAgb3JkZXIuXG4gICogQERBTU9TX0xSVV9QUklPOlx0UHJpb3JpdGl6ZSB0aGUgcmVnaW9uIG9uIGl0cyBMUlUgbGlzdHMuXG4gICogQERBTU9TX0xSVV9ERVBSSU86XHREZXByaW9yaXRpemUgdGhlIHJlZ2lvbiBvbiBpdHMgTFJVIGxpc3RzLlxuICAqIEBEQU1PU19NSUdSQVRFX0hPVDogIE1pZ3JhdGUgdGhlIHJlZ2lvbnMgcHJpb3JpdGl6aW5nIHdhcm1lciByZWdpb25zLlxuQEAgLTE0MSw2ICsxNDIsNyBAQCBlbnVtIGRhbW9zX2FjdGlvbiB7XG4gXHREQU1PU19IVUdFUEFHRSxcbiBcdERBTU9TX05PSFVHRVBBR0UsXG4gXHREQU1PU19DT0xMQVBTRSxcbitcdERBTU9TX1NQTElULFxuIFx0REFNT1NfTFJVX1BSSU8sXG4gXHREQU1PU19MUlVfREVQUklPLFxuIFx0REFNT1NfTUlHUkFURV9IT1QsXG5AQCAtNTcyLDYgKzU3NCwxNCBAQCBzdHJ1Y3QgZGFtb3NfbWlncmF0ZV9kZXN0cyB7XG4gc3RydWN0IGRhbW9zIHtcbiBcdHN0cnVjdCBkYW1vc19hY2Nlc3NfcGF0dGVybiBwYXR0ZXJuO1xuIFx0ZW51bSBkYW1vc19hY3Rpb24gYWN0aW9uO1xuK1x0LypcbitcdCAqIEB0YXJnZXRfb3JkZXI6IHRhcmdldCBtVEhQIG9yZGVyIGZvciBEQU1PU19DT0xMQVBTRSBhbmRcbitcdCAqIERBTU9TX1NQTElULiAgRm9yIENPTExBUFNFLCAwIG1lYW5zIFBNRCBvcmRlciBkZWZhdWx0LFxuK1x0ICogdmFsaWQgdmFsdWVzOiAwLCAyLi5IUEFHRV9QTURfT1JERVIuICBGb3IgU1BMSVQsXG4rXHQgKiB2YWxpZCB2YWx1ZXM6IDIuLkhQQUdFX1BNRF9PUkRFUi0xOyAwIGFuZCBIUEFHRV9QTURfT1JERVJcbitcdCAqIGFyZSByZWplY3RlZCBhdCBzY2hlbWUgY3JlYXRpb24gdGltZSAoZGVmYXVsdGluZyB0byAyKS5cbitcdCAqL1xuK1x0dW5zaWduZWQgaW50IHRhcmdldF9vcmRlcjtcbiBcdHVuc2lnbmVkIGxvbmcgYXBwbHlfaW50ZXJ2YWxfdXM7XG4gLyogcHJpdmF0ZTogaW50ZXJuYWwgdXNlIG9ubHkgKi9cbiBcdC8qXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9raHVnZXBhZ2VkLmggYi9pbmNsdWRlL2xpbnV4L2todWdlcGFnZWQuaFxuaW5kZXggZDdhOTA1M2ZmNGZlZDEuLjZmYjhhNjg1Nzc5MDNhIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9raHVnZXBhZ2VkLmhcbisrKyBiL2luY2x1ZGUvbGludXgva2h1Z2VwYWdlZC5oXG5AQCAtMjAsNiArMjAsOSBAQCBleHRlcm4gYm9vbCBjdXJyZW50X2lzX2todWdlcGFnZWQodm9pZCk7XG4gdm9pZCBjb2xsYXBzZV9wdGVfbWFwcGVkX3RocChzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBhZGRyLFxuIFx0XHRib29sIGluc3RhbGxfcG1kKTtcbiBcbitpbnQgZGFtb25fY29sbGFwc2VfZm9saW9fcmFuZ2Uoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgc3RhcnRfYWRkcixcbitcdFx0XHQgICAgICAgdW5zaWduZWQgaW50IHRhcmdldF9vcmRlcik7XG4rXG4gc3RhdGljIGlubGluZSB2b2lkIGtodWdlcGFnZWRfZm9yayhzdHJ1Y3QgbW1fc3RydWN0ICptbSwgc3RydWN0IG1tX3N0cnVjdCAqb2xkbW0pXG4ge1xuIFx0aWYgKG1tX2ZsYWdzX3Rlc3QoTU1GX1ZNX0hVR0VQQUdFLCBvbGRtbSkpXG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jIGIvbW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jXG5pbmRleCAzMjljZmQwYmJlOWYzMi4uNTQ3MjUyZmM4YTIwYWQgMTAwNjQ0XG4tLS0gYS9tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmNcbisrKyBiL21tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuY1xuQEAgLTYsNyArNiw5IEBAXG4gICovXG4gXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc2xhYi5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvbW0uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L251bWEuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2h1Z2VfbW0uaFx1MDAzZVxuIFxuICNpbmNsdWRlIFwic3lzZnMtY29tbW9uLmhcIlxuIFxuQEAgLTIyNTcsNiArMjI1OSw3IEBAIHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWUge1xuIFx0c3RydWN0IGRhbW9uX3N5c2ZzX3N0YXRzICpzdGF0cztcbiBcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9ucyAqdHJpZWRfcmVnaW9ucztcbiBcdGludCB0YXJnZXRfbmlkO1xuK1x0dW5zaWduZWQgaW50IHRhcmdldF9vcmRlcjtcbiBcdHN0cnVjdCBkYW1vc19zeXNmc19kZXN0cyAqZGVzdHM7XG4gfTtcbiBcbkBAIC0yMjkwLDYgKzIyOTMsMTAgQEAgc3RhdGljIHN0cnVjdCBkYW1vc19zeXNmc19hY3Rpb25fbmFtZSBkYW1vc19zeXNmc19hY3Rpb25fbmFtZXNbXSA9IHtcbiBcdFx0LmFjdGlvbiA9IERBTU9TX0NPTExBUFNFLFxuIFx0XHQubmFtZSA9IFwiY29sbGFwc2VcIixcbiBcdH0sXG4rXHR7XG4rXHRcdC5hY3Rpb24gPSBEQU1PU19TUExJVCxcbitcdFx0Lm5hbWUgPSBcInNwbGl0XCIsXG4rXHR9LFxuIFx0e1xuIFx0XHQuYWN0aW9uID0gREFNT1NfTFJVX1BSSU8sXG4gXHRcdC5uYW1lID0gXCJscnVfcHJpb1wiLFxuQEAgLTI2NDIsNiArMjY0OSwzNCBAQCBzdGF0aWMgc3NpemVfdCB0YXJnZXRfbmlkX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuIFx0cmV0dXJuIGVyciA/IGVyciA6IGNvdW50O1xuIH1cbiBcbitzdGF0aWMgc3NpemVfdCB0YXJnZXRfb3JkZXJfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcbitcdFx0c3RydWN0IGtvYmpfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpXG4re1xuK1x0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZSAqc2NoZW1lID0gY29udGFpbmVyX29mKGtvYmosXG4rXHRcdFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZSwga29iaik7XG4rXG4rXHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIFwiJXVcXG5cIiwgc2NoZW1lLVx1MDAzZXRhcmdldF9vcmRlcik7XG4rfVxuK1xuK3N0YXRpYyBzc2l6ZV90IHRhcmdldF9vcmRlcl9zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaixcbitcdFx0c3RydWN0IGtvYmpfYXR0cmlidXRlICphdHRyLCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudClcbit7XG4rXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lICpzY2hlbWUgPSBjb250YWluZXJfb2Yoa29iaixcbitcdFx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lLCBrb2JqKTtcbitcdHVuc2lnbmVkIGludCB2YWw7XG4rXHRpbnQgZXJyO1xuK1xuK1x0ZXJyID0ga3N0cnRvdWludChidWYsIDAsIFx1MDAyNnZhbCk7XG4rXHRpZiAoZXJyKVxuK1x0XHRyZXR1cm4gZXJyO1xuK1xuK1x0aWYgKHZhbCAhPSAwIFx1MDAyNlx1MDAyNiAodmFsIFx1MDAzYyAyIHx8IHZhbCBcdTAwM2UgSFBBR0VfUE1EX09SREVSKSlcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXG4rXHRzY2hlbWUtXHUwMDNldGFyZ2V0X29yZGVyID0gdmFsO1xuK1x0cmV0dXJuIGNvdW50O1xuK31cbitcbiBzdGF0aWMgdm9pZCBkYW1vbl9zeXNmc19zY2hlbWVfcmVsZWFzZShzdHJ1Y3Qga29iamVjdCAqa29iailcbiB7XG4gXHRrZnJlZShjb250YWluZXJfb2Yoa29iaiwgc3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZSwga29iaikpO1xuQEAgLTI2NTYsMTAgKzI2OTEsMTQgQEAgc3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vbl9zeXNmc19zY2hlbWVfYXBwbHlfaW50ZXJ2YWxfdXNfYXR0ciA9XG4gc3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vbl9zeXNmc19zY2hlbWVfdGFyZ2V0X25pZF9hdHRyID1cbiBcdFx0X19BVFRSX1JXX01PREUodGFyZ2V0X25pZCwgMDYwMCk7XG4gXG4rc3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vbl9zeXNmc19zY2hlbWVfdGFyZ2V0X29yZGVyX2F0dHIgPVxuK1x0XHRfX0FUVFJfUldfTU9ERSh0YXJnZXRfb3JkZXIsIDA2MDApO1xuK1xuIHN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICpkYW1vbl9zeXNmc19zY2hlbWVfYXR0cnNbXSA9IHtcbiBcdFx1MDAyNmRhbW9uX3N5c2ZzX3NjaGVtZV9hY3Rpb25fYXR0ci5hdHRyLFxuIFx0XHUwMDI2ZGFtb25fc3lzZnNfc2NoZW1lX2FwcGx5X2ludGVydmFsX3VzX2F0dHIuYXR0cixcbiBcdFx1MDAyNmRhbW9uX3N5c2ZzX3NjaGVtZV90YXJnZXRfbmlkX2F0dHIuYXR0cixcbitcdFx1MDAyNmRhbW9uX3N5c2ZzX3NjaGVtZV90YXJnZXRfb3JkZXJfYXR0ci5hdHRyLFxuIFx0TlVMTCxcbiB9O1xuIEFUVFJJQlVURV9HUk9VUFMoZGFtb25fc3lzZnNfc2NoZW1lKTtcbkBAIC0zMDA1LDYgKzMwNDQsMjQgQEAgc3RhdGljIHN0cnVjdCBkYW1vcyAqZGFtb25fc3lzZnNfbWtfc2NoZW1lKFxuIFx0aWYgKCFzY2hlbWUpXG4gXHRcdHJldHVybiBOVUxMO1xuIFxuK1x0aWYgKHN5c2ZzX3NjaGVtZS1cdTAwM2VhY3Rpb24gPT0gREFNT1NfQ09MTEFQU0UgXHUwMDI2XHUwMDI2XG4rXHQgICAgc3lzZnNfc2NoZW1lLVx1MDAzZXRhcmdldF9vcmRlciAhPSAwIFx1MDAyNlx1MDAyNlxuK1x0ICAgIHN5c2ZzX3NjaGVtZS1cdTAwM2V0YXJnZXRfb3JkZXIgIT0gSFBBR0VfUE1EX09SREVSKSB7XG4rXHRcdHByX3dhcm4oXCJEQU1PTiBjb2xsYXBzZTogdGFyZ2V0X29yZGVyICV1IG5vdCBzdXBwb3J0ZWQsIG9ubHkgUE1EIG9yZGVyICgldSkgaXMgYXZhaWxhYmxlLiBVc2UgMCBvciAldS5cXG5cIixcbitcdFx0XHRzeXNmc19zY2hlbWUtXHUwMDNldGFyZ2V0X29yZGVyLFxuK1x0XHRcdEhQQUdFX1BNRF9PUkRFUiwgSFBBR0VfUE1EX09SREVSKTtcbitcdFx0c3lzZnNfc2NoZW1lLVx1MDAzZXRhcmdldF9vcmRlciA9IDA7XG4rXHR9XG4rXHRpZiAoc3lzZnNfc2NoZW1lLVx1MDAzZWFjdGlvbiA9PSBEQU1PU19TUExJVCBcdTAwMjZcdTAwMjZcbitcdCAgICAoc3lzZnNfc2NoZW1lLVx1MDAzZXRhcmdldF9vcmRlciA9PSAwIHx8XG4rXHQgICAgIHN5c2ZzX3NjaGVtZS1cdTAwM2V0YXJnZXRfb3JkZXIgXHUwMDNlPSBIUEFHRV9QTURfT1JERVIpKSB7XG4rXHRcdHByX3dhcm4oXCJEQU1PTiBzcGxpdDogdGFyZ2V0X29yZGVyICV1IGludmFsaWQsIG5lZWQgMi4uJXUuIERlZmF1bHRpbmcgdG8gMi5cXG5cIixcbitcdFx0XHRzeXNmc19zY2hlbWUtXHUwMDNldGFyZ2V0X29yZGVyLFxuK1x0XHRcdEhQQUdFX1BNRF9PUkRFUiAtIDEpO1xuK1x0XHRzeXNmc19zY2hlbWUtXHUwMDNldGFyZ2V0X29yZGVyID0gMjtcbitcdH1cbitcdHNjaGVtZS1cdTAwM2V0YXJnZXRfb3JkZXIgPSBzeXNmc19zY2hlbWUtXHUwMDNldGFyZ2V0X29yZGVyO1xuK1xuIFx0ZXJyID0gZGFtb3Nfc3lzZnNfYWRkX3F1b3RhX3Njb3JlKHN5c2ZzX3F1b3Rhcy1cdTAwM2Vnb2FscywgXHUwMDI2c2NoZW1lLVx1MDAzZXF1b3RhKTtcbiBcdGlmIChlcnIpIHtcbiBcdFx0ZGFtb25fZGVzdHJveV9zY2hlbWUoc2NoZW1lKTtcbmRpZmYgLS1naXQgYS9tbS9kYW1vbi92YWRkci5jIGIvbW0vZGFtb24vdmFkZHIuY1xuaW5kZXggZDI3MTQ3NjAzNTY0MWIuLjNmMjA2MWIyOWVkODQyIDEwMDY0NFxuLS0tIGEvbW0vZGFtb24vdmFkZHIuY1xuKysrIGIvbW0vZGFtb24vdmFkZHIuY1xuQEAgLTE0LDYgKzE0LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wYWdlX2lkbGUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BhZ2V3YWxrLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9zY2hlZC9tbS5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgva2h1Z2VwYWdlZC5oXHUwMDNlXG4gXG4gI2luY2x1ZGUgXCIuLi9pbnRlcm5hbC5oXCJcbiAjaW5jbHVkZSBcIm9wcy1jb21tb24uaFwiXG5AQCAtODk5LDYgKzkwMCwxMDUgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb3NfdmFfc3RhdChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0YXJnZXQsXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4rc3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb3NfdmFfY29sbGFwc2Uoc3RydWN0IGRhbW9uX3RhcmdldCAqdGFyZ2V0LFxuK1x0XHRzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLCBzdHJ1Y3QgZGFtb3MgKnMsXG4rXHRcdHVuc2lnbmVkIGxvbmcgKnN6X2ZpbHRlcl9wYXNzZWQpXG4re1xuK1x0dW5zaWduZWQgbG9uZyBhZGRyLCBlbmQsIGNodW5rX3N6O1xuK1x0dW5zaWduZWQgaW50IHRhcmdldF9vcmRlciA9IHMtXHUwMDNldGFyZ2V0X29yZGVyO1xuK1x0dW5zaWduZWQgbG9uZyBhcHBsaWVkID0gMDtcbitcdHN0cnVjdCBtbV9zdHJ1Y3QgKm1tO1xuK1x0aW50IHJldDtcbitcbitcdGlmICh0YXJnZXRfb3JkZXIgXHUwMDNjIDIgfHwgdGFyZ2V0X29yZGVyIFx1MDAzZSBIUEFHRV9QTURfT1JERVIpXG4rXHRcdHJldHVybiAwO1xuK1xuK1x0Y2h1bmtfc3ogPSBQQUdFX1NJWkUgXHUwMDNjXHUwMDNjIHRhcmdldF9vcmRlcjtcbitcdGFkZHIgPSBBTElHTl9ET1dOKHItXHUwMDNlYXIuc3RhcnQsIGNodW5rX3N6KTtcbitcdGVuZCA9IEFMSUdOKHItXHUwMDNlYXIuZW5kLCBjaHVua19zeik7XG4rXG4rXHRtbSA9IGRhbW9uX2dldF9tbSh0YXJnZXQpO1xuK1x0aWYgKCFtbSlcbitcdFx0cmV0dXJuIDA7XG4rXG4rXHR3aGlsZSAoYWRkciBcdTAwM2MgZW5kKSB7XG4rXHRcdHJldCA9IGRhbW9uX2NvbGxhcHNlX2ZvbGlvX3JhbmdlKG1tLCBhZGRyLCB0YXJnZXRfb3JkZXIpO1xuK1x0XHRpZiAoIXJldClcbitcdFx0XHRhcHBsaWVkICs9IGNodW5rX3N6O1xuK1x0XHQqc3pfZmlsdGVyX3Bhc3NlZCArPSBjaHVua19zejtcbitcdFx0YWRkciArPSBjaHVua19zejtcbitcdFx0Y29uZF9yZXNjaGVkKCk7XG4rXHR9XG4rXG4rXHRtbXB1dChtbSk7XG4rXHRyZXR1cm4gYXBwbGllZDtcbit9XG4rXG4rc3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb3NfdmFfc3BsaXQoc3RydWN0IGRhbW9uX3RhcmdldCAqdGFyZ2V0LFxuK1x0XHRzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLCBzdHJ1Y3QgZGFtb3MgKnMsXG4rXHRcdHVuc2lnbmVkIGxvbmcgKnN6X2ZpbHRlcl9wYXNzZWQpXG4re1xuK1x0dW5zaWduZWQgbG9uZyBhZGRyLCBlbmQsIGNodW5rX3N6O1xuK1x0dW5zaWduZWQgaW50IHRhcmdldF9vcmRlciA9IHMtXHUwMDNldGFyZ2V0X29yZGVyO1xuK1x0dW5zaWduZWQgbG9uZyBhcHBsaWVkID0gMDtcbitcdHN0cnVjdCBtbV9zdHJ1Y3QgKm1tO1xuK1x0c3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWE7XG4rXHRzdHJ1Y3QgZm9saW8gKmZvbGlvO1xuK1x0c3RydWN0IGZvbGlvX3dhbGsgZnc7XG4rXG4rXHRtbSA9IGRhbW9uX2dldF9tbSh0YXJnZXQpO1xuK1x0aWYgKCFtbSlcbitcdFx0cmV0dXJuIDA7XG4rXG4rXHRjaHVua19zeiA9IFBBR0VfU0laRSBcdTAwM2NcdTAwM2MgSFBBR0VfUE1EX09SREVSO1xuK1x0YWRkciA9IEFMSUdOX0RPV04oci1cdTAwM2Vhci5zdGFydCwgY2h1bmtfc3opO1xuK1x0ZW5kID0gQUxJR04oci1cdTAwM2Vhci5lbmQsIGNodW5rX3N6KTtcbitcbitcdHdoaWxlIChhZGRyIFx1MDAzYyBlbmQpIHtcbitcdFx0bW1hcF9yZWFkX2xvY2sobW0pO1xuK1x0XHR2bWEgPSBmaW5kX3ZtYShtbSwgYWRkcik7XG4rXHRcdC8qXG4rXHRcdCAqIHNwbGl0X2ZvbGlvX3RvX29yZGVyKCkgc3VwcG9ydHMgYm90aCBhbm9uIGFuZCBzaG1lbVxuK1x0XHQgKiBmb2xpb3MsIHNvIHdlIGFjY2VwdCBhbnkgVk1BIHRoYXQgaGFzIGEgZm9saW8gYXQgQGFkZHIuXG4rXHRcdCAqIFRoaXMgY292ZXJzIGltcG9ydGFudCB1c2UgY2FzZXMgbGlrZSB0bXBmcyBUSFAtYmFja2VkXG4rXHRcdCAqIEtWTSBndWVzdCBtZW1vcnkgd2hlcmUgY29sZCBhbmQgaG90IHBhZ2VzIGFyZSBidW5kbGVkXG4rXHRcdCAqIHRvZ2V0aGVyIGluIGEgc2luZ2xlIFBNRCBUSFAuXG4rXHRcdCAqL1xuK1x0XHRpZiAoIXZtYSB8fCBhZGRyIFx1MDAzYyB2bWEtXHUwMDNldm1fc3RhcnQpXG4rXHRcdFx0Z290byB1bmxvY2s7XG4rXG4rXHRcdGZvbGlvID0gZm9saW9fd2Fsa19zdGFydChcdTAwMjZmdywgdm1hLCBhZGRyLCAwKTtcbitcdFx0aWYgKCFmb2xpbylcbitcdFx0XHRnb3RvIHVubG9jaztcbitcbitcdFx0aWYgKGZvbGlvX29yZGVyKGZvbGlvKSBcdTAwM2UgdGFyZ2V0X29yZGVyKSB7XG4rXHRcdFx0aWYgKCFmb2xpb190cnlsb2NrKGZvbGlvKSkge1xuK1x0XHRcdFx0Zm9saW9fd2Fsa19lbmQoXHUwMDI2ZncsIHZtYSk7XG4rXHRcdFx0XHRnb3RvIHVubG9jaztcbitcdFx0XHR9XG4rXHRcdFx0Zm9saW9fZ2V0KGZvbGlvKTtcbitcdFx0XHRmb2xpb193YWxrX2VuZChcdTAwMjZmdywgdm1hKTtcbitcbitcdFx0XHRpZiAoIXNwbGl0X2ZvbGlvX3RvX29yZGVyKGZvbGlvLCB0YXJnZXRfb3JkZXIpKVxuK1x0XHRcdFx0YXBwbGllZCArPSBjaHVua19zejtcbitcbitcdFx0XHRmb2xpb191bmxvY2soZm9saW8pO1xuK1x0XHRcdGZvbGlvX3B1dChmb2xpbyk7XG4rXHRcdH0gZWxzZSB7XG4rXHRcdFx0Zm9saW9fd2Fsa19lbmQoXHUwMDI2ZncsIHZtYSk7XG4rXHRcdH1cbitcbit1bmxvY2s6XG4rXHRcdCpzel9maWx0ZXJfcGFzc2VkICs9IGNodW5rX3N6O1xuK1x0XHRhZGRyICs9IGNodW5rX3N6O1xuK1x0XHRtbWFwX3JlYWRfdW5sb2NrKG1tKTtcbitcdFx0Y29uZF9yZXNjaGVkKCk7XG4rXHR9XG4rXG4rXHRtbXB1dChtbSk7XG4rXHRyZXR1cm4gYXBwbGllZDtcbit9XG4rXG4gc3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb25fdmFfYXBwbHlfc2NoZW1lKHN0cnVjdCBkYW1vbl9jdHggKmN0eCxcbiBcdFx0c3RydWN0IGRhbW9uX3RhcmdldCAqdCwgc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcbiBcdFx0c3RydWN0IGRhbW9zICpzY2hlbWUsIHVuc2lnbmVkIGxvbmcgKnN6X2ZpbHRlcl9wYXNzZWQpXG5AQCAtOTIyLDYgKzEwMjIsOSBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vbl92YV9hcHBseV9zY2hlbWUoc3RydWN0IGRhbW9uX2N0eCAqY3R4LFxuIFx0XHRtYWR2X2FjdGlvbiA9IE1BRFZfTk9IVUdFUEFHRTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIERBTU9TX0NPTExBUFNFOlxuK1x0XHRpZiAoc2NoZW1lLVx1MDAzZXRhcmdldF9vcmRlcilcbitcdFx0XHRyZXR1cm4gZGFtb3NfdmFfY29sbGFwc2UodCwgciwgc2NoZW1lLFxuK1x0XHRcdFx0XHRcdCBzel9maWx0ZXJfcGFzc2VkKTtcbiBcdFx0bWFkdl9hY3Rpb24gPSBNQURWX0NPTExBUFNFO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgREFNT1NfTUlHUkFURV9IT1Q6XG5AQCAtOTI5LDYgKzEwMzIsOSBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vbl92YV9hcHBseV9zY2hlbWUoc3RydWN0IGRhbW9uX2N0eCAqY3R4LFxuIFx0XHRyZXR1cm4gZGFtb3NfdmFfbWlncmF0ZSh0LCByLCBzY2hlbWUsIHN6X2ZpbHRlcl9wYXNzZWQpO1xuIFx0Y2FzZSBEQU1PU19TVEFUOlxuIFx0XHRyZXR1cm4gZGFtb3NfdmFfc3RhdCh0LCByLCBzY2hlbWUsIHN6X2ZpbHRlcl9wYXNzZWQpO1xuK1x0Y2FzZSBEQU1PU19TUExJVDpcbitcdFx0cmV0dXJuIGRhbW9zX3ZhX3NwbGl0KHQsIHIsIHNjaGVtZSxcbitcdFx0XHRcdFx0ICBzel9maWx0ZXJfcGFzc2VkKTtcbiBcdGRlZmF1bHQ6XG4gXHRcdC8qXG4gXHRcdCAqIERBTU9TIGFjdGlvbnMgdGhhdCBhcmUgbm90IHlldCBzdXBwb3J0ZWQgYnkgJ3ZhZGRyJy5cbmRpZmYgLS1naXQgYS9tbS9raHVnZXBhZ2VkLmMgYi9tbS9raHVnZXBhZ2VkLmNcbmluZGV4IDYxN2JjYTc2ZGI0OWI2Li4wMzg3ODQxYmEyZTdkOCAxMDA2NDRcbi0tLSBhL21tL2todWdlcGFnZWQuY1xuKysrIGIvbW0va2h1Z2VwYWdlZC5jXG5AQCAtMzI3MiwzICszMjcyLDQyIEBAIGludCBtYWR2aXNlX2NvbGxhcHNlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIHN0YXJ0LFxuIFx0cmV0dXJuIHRocHMgPT0gKChoZW5kIC0gaHN0YXJ0KSBcdTAwM2VcdTAwM2UgSFBBR0VfUE1EX1NISUZUKSA/IDBcbiBcdFx0XHQ6IG1hZHZpc2VfY29sbGFwc2VfZXJybm8obGFzdF9mYWlsKTtcbiB9XG4rXG4rLyoqXG4rICogZGFtb25fY29sbGFwc2VfZm9saW9fcmFuZ2UoKSAtIENvbGxhcHNlIGJhc2UgcGFnZXMgaW4gcmFuZ2UgaW50byBhIFRIUFxuKyAqIEBtbTogICAgICAgICBtbV9zdHJ1Y3Qgb2YgdGhlIHRhcmdldCBwcm9jZXNzXG4rICogQHN0YXJ0X2FkZHI6IHN0YXJ0IGFkZHJlc3MgKG11c3QgYmUgb3JkZXItYWxpZ25lZClcbisgKiBAdGFyZ2V0X29yZGVyOiBwYWdlIG9yZGVyIG9mIHRoZSBjb2xsYXBzZSByZXN1bHQgKGN1cnJlbnRseSBvbmx5XG4rICogICAgICAgICAgICAgICAgSFBBR0VfUE1EX09SREVSIGlzIHN1cHBvcnRlZClcbisgKlxuKyAqIFRoaW4gd3JhcHBlciBhcm91bmQgY29sbGFwc2VfaHVnZV9wYWdlKCkgZm9yIGV4dGVybmFsIGNhbGxlcnMgc3VjaCBhc1xuKyAqIERBTU9OLiAgVGhlIGNhbGxlciBtdXN0IGhvbGQgYSByZWZlcmVuY2UgdG8gQG1tLiAgRG8gbm90IGhvbGQgbW1hcFxuKyAqIGxvY2s6IGNvbGxhcHNlX2h1Z2VfcGFnZSgpIGFjcXVpcmVzIG1tYXBfcmVhZF9sb2NrIGZvciB2YWxpZGF0aW9uLFxuKyAqIHJlbGVhc2VzIGl0LCB0aGVuIGFjcXVpcmVzIG1tYXBfd3JpdGVfbG9jayBmb3IgdGhlIGNvbGxhcHNlLiAgSG9sZGluZ1xuKyAqIGFuIG91dGVyIG1tYXBfcmVhZF9sb2NrIHdvdWxkIHNlbGYtZGVhZGxvY2suXG4rICpcbisgKiBSZXR1cm46IDAgb24gc3VjY2VzcywgLUVJTlZBTCBvbiBiYWQgYXJndW1lbnRzLCBuZWdhdGl2ZSBlcnJvciBmcm9tXG4rICogICAgICAgICBtYWR2aXNlX2NvbGxhcHNlX2Vycm5vKCkgb3RoZXJ3aXNlLlxuKyAqL1xuK2ludCBkYW1vbl9jb2xsYXBzZV9mb2xpb19yYW5nZShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBzdGFydF9hZGRyLFxuK1x0XHRcdCAgICAgICB1bnNpZ25lZCBpbnQgdGFyZ2V0X29yZGVyKVxuK3tcbitcdHN0cnVjdCBjb2xsYXBzZV9jb250cm9sIGNjID0ge1xuK1x0XHQuaXNfa2h1Z2VwYWdlZCA9IGZhbHNlLFxuK1x0fTtcbitcdGVudW0gc2Nhbl9yZXN1bHQgcmVzdWx0O1xuK1xuK1x0aWYgKHRhcmdldF9vcmRlciAhPSBIUEFHRV9QTURfT1JERVIpIHtcbitcdFx0cHJfd2Fybl9vbmNlKFwiJXM6IG9ubHkgUE1EIG9yZGVyICgldSkgaXMgc3VwcG9ydGVkLCBnb3QgJXVcXG5cIixcbitcdFx0XHQgICAgIF9fZnVuY19fLCBIUEFHRV9QTURfT1JERVIsIHRhcmdldF9vcmRlcik7XG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1x0fVxuK1x0aWYgKHN0YXJ0X2FkZHIgXHUwMDI2ICgoUEFHRV9TSVpFIFx1MDAzY1x1MDAzYyB0YXJnZXRfb3JkZXIpIC0gMSkpXG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1xuK1x0cmVzdWx0ID0gY29sbGFwc2VfaHVnZV9wYWdlKG1tLCBzdGFydF9hZGRyLCAxLCAwLCBcdTAwMjZjYywgdGFyZ2V0X29yZGVyKTtcbitcdGlmIChyZXN1bHQgPT0gU0NBTl9TVUNDRUVEKVxuK1x0XHRyZXR1cm4gMDtcbitcdHJldHVybiBtYWR2aXNlX2NvbGxhcHNlX2Vycm5vKHJlc3VsdCk7XG4rfVxuK0VYUE9SVF9TWU1CT0xfR1BMKGRhbW9uX2NvbGxhcHNlX2ZvbGlvX3JhbmdlKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDE3OjU3OjAwLjc5NTgzMTI2M1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE4MzIwMzMxMjk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIERBTU9OIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQncyBpbnRyb2R1Y2luZyBgREFNT1NfU1BMSVRgIGludG8gREFNT04sIGFuZCBleHBhbmRpbmcgdGhlIGNhcGFiaWxpdGllcyBvZiBgREFNT1NfQ09MTEFQU0VgIHRvIGhhbmRsZSBhIHNwZWNpZmllZCBgdGFyZ2V0X29yZGVyYC4gU3RyYWlnaHQgYXdheSwgSSByZWNvZ25pemUgdGhpcyBhcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50LCBzcGVjaWZpY2FsbHkgd2l0aGluIERBTU9OIGFuZCBraHVnZXBhZ2VkLiBXZSdyZSB0YWxraW5nIGFib3V0IGFsbG93aW5nIERBTU9OIHRvIHNwbGl0IGxhcmdlIGZvbGlvcyB0byBhIHBhcnRpY3VsYXIgbVRIUCBvcmRlciBhbmQgZW5hYmxpbmcgZm9saW8gY29sbGFwc2UuXG5cbkJlZm9yZSBJIGRlbHZlIGRlZXBlciBpbnRvIHRoZSBjb2RlIG1vZGlmaWNhdGlvbnMgd2l0aGluIGBpbmNsdWRlL2xpbnV4L2RhbW9uLmhgLCBgaW5jbHVkZS9saW51eC9raHVnZXBhZ2VkLmhgLCBgbW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jYCwgYG1tL2RhbW9uL3ZhZGRyLmNgLCBhbmQgYG1tL2todWdlcGFnZWQuY2AsIEkgbmVlZCB0byBxdWlja2x5IGVzdGFibGlzaCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIEknbSBnb2luZyB0byBjaGVjayB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFzc29jaWF0ZWQgd2l0aCBEQU1PTiBhbmQga2h1Z2VwYWdlZC4gTG9va3MgbGlrZSB3ZSBoYXZlIGBDT05GSUdfREFNT05gLCBgQ09ORklHX0RBTU9OX1NZU0ZTYCwgYW5kIGBDT05GSUdfREFNT05fVkFERFJgIGZvciBEQU1PTiwgYW5kIGBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VgIGZvciBraHVnZXBhZ2VkLlxuXG5Ob3csIEknbGwgZG8gYSBxdWljayBncmVwIHNlYXJjaCBmb3IgYENPTkZJR19EQU1PTmAgYW5kIGBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VgIHdpdGhpbiB0aGUgY29uZmlnIGZpbGVzIHRvIGdldCBhIGNsZWFyZXIgcGljdHVyZSBvZiB0aGVpciByZWxhdGlvbnNoaXBzIGFuZCBhbnkgcG90ZW50aWFsIHJlcXVpcmVtZW50cyBvciBjb25mbGljdHMgdGhhdCBuZWVkIGF0dGVudGlvbi4gVGhpcyB3aWxsIGhlbHAgbWUgYXNzZXNzIHRoZSBwYXRjaCdzIGltcGFjdCBhbmQgaXRzIGludGVncmF0aW9uIHdpdGhpbiB0aGUgZXhpc3RpbmcgY29uZmlndXJhdGlvbiBsYW5kc2NhcGUuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBkb2Vzbid0IGludHJvZHVjZSB1bmludGVuZGVkIGRlcGVuZGVuY2llcyBvciBicmVhayBleGlzdGluZyBzZXR1cHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYwNDYsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxNzo1NzoxOS4xMTYxNjQ2NjdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkyMzExNjIxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkRBTU9OX1NZU0ZTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL2RhbW9uL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZGFtb24vS2NvbmZpZz01Nj1jb25maWcgREFNT05fVkFERFJfS1VOSVRfVEVTVFxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy02Ny1cXG5tbS9kYW1vbi9LY29uZmlnOjY4OmNvbmZpZyBEQU1PTl9TWVNGU1xcbm1tL2RhbW9uL0tjb25maWctNjktXFx0Ym9vbCBcXFwiREFNT04gc3lzZnMgaW50ZXJmYWNlXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy03NS1cXG5tbS9kYW1vbi9LY29uZmlnOjc2OmNvbmZpZyBEQU1PTl9TWVNGU19LVU5JVF9URVNUXFxubW0vZGFtb24vS2NvbmZpZy03Ny1cXHRib29sIFxcXCJUZXN0IGZvciBkYW1vbiBzeXNmcyBpbnRlcmZhY2VcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG5tbS9kYW1vbi9LY29uZmlnOjc4OlxcdGRlcGVuZHMgb24gREFNT05fU1lTRlMgXFx1MDAyNlxcdTAwMjYgS1VOSVQ9eVxcbm1tL2RhbW9uL0tjb25maWctNzktXFx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMTc6NTc6MTkuMzA4NDgzNDk4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzExMTk1NzE5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKktjb25maWcgRGl2ZSBmb3IgREFNT05fVkFERFIqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmluZCB3aGVyZSBgREFNT05fVkFERFJgIGlzIGRlZmluZWQgYW5kIGNvbmZpZ3VyZWQuIFRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgaXMsIG9mIGNvdXJzZSwgdGhlIGBLY29uZmlnYCBmaWxlcy4gR2l2ZW4gdGhhdCB3ZSdyZSBkZWFsaW5nIHdpdGggREFNT04gKER5bmFtaWMgQWRkcmVzcyBNb25pdG9yaW5nKSwgaXQncyBoaWdobHkgbGlrZWx5IHRoYXQgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgaW4gdGhlIGBtbS9kYW1vbmAgZGlyZWN0b3J5LiBUaGVyZWZvcmUsIEkgc2hvdWxkIGNoZWNrIHRoZSBgbW0vZGFtb24vS2NvbmZpZ2AgZmlsZSBmaXJzdC4gVGhhdCdzIHRoZSBnby10byBwbGFjZSBmb3IgdW5kZXJzdGFuZGluZyBEQU1PTidzIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyBhbmQgdGhlaXIgZGVwZW5kZW5jaWVzLiBMZXQncyBzZWUgd2hhdCB3ZSBjYW4gZmluZCB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Njg3MywiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDE3OjU3OjIyLjQyMDQ0MjQ1WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNDA1OTQyNjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiREFNT05fVkFERFJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vZGFtb24vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9kYW1vbi9LY29uZmlnPTI2PWNvbmZpZyBEQU1PTl9LVU5JVF9URVNUXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTM3LVxcbm1tL2RhbW9uL0tjb25maWc6Mzg6Y29uZmlnIERBTU9OX1ZBRERSXFxubW0vZGFtb24vS2NvbmZpZy0zOS1cXHRib29sIFxcXCJEYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIHZpcnR1YWwgYWRkcmVzcyBzcGFjZXNcXFwiXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnPTQ3PWNvbmZpZyBEQU1PTl9QQUREUlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy01NS1cXG5tbS9kYW1vbi9LY29uZmlnOjU2OmNvbmZpZyBEQU1PTl9WQUREUl9LVU5JVF9URVNUXFxubW0vZGFtb24vS2NvbmZpZy01Ny1cXHRib29sIFxcXCJUZXN0IGZvciBEQU1PTiBvcGVyYXRpb25zXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxubW0vZGFtb24vS2NvbmZpZzo1ODpcXHRkZXBlbmRzIG9uIERBTU9OX1ZBRERSIFxcdTAwMjZcXHUwMDI2IEtVTklUPXlcXG5tbS9kYW1vbi9LY29uZmlnLTU5LVxcdGRlZmF1bHQgS1VOSVRfQUxMX1RFU1RTXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDE3OjU3OjIzLjU2MTA0NDIwMVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMjIwOTkyMTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZS4uLlxuXG4qKkNoZWNraW5nIHRoZSBLY29uZmlnIGZvciBUcmFuc3BhcmVudCBIdWdlcGFnZXMqKlxuXG5SaWdodCwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGBUUkFOU1BBUkVOVF9IVUdFUEFHRWAgaXMgY29uZmlndXJlZCBpbiB0aGlzIHBhcnRpY3VsYXIgZW52aXJvbm1lbnQuIEEgZ29vZCBmaXJzdCBzdGVwIGlzIGFsd2F5cyB0byBnbyBzdHJhaWdodCB0byB0aGUgc291cmNlLCB0aGUgYG1tL0tjb25maWdgIGZpbGUuIEknbSBmYW1pbGlhciB3aXRoIHRoaXMgYXJlYSwgb2J2aW91c2x5LCBhbmQga25vdyBleGFjdGx5IHdoYXQgdG8gbG9vayBmb3IgdGhlcmUuIFRoYXQncyB3aGVyZSBhbGwgdGhlIGZ1bmRhbWVudGFsIG1lbW9yeSBtYW5hZ2VtZW50IG9wdGlvbnMgYXJlIGRlY2xhcmVkIGFuZCBkZWZpbmVkLCB3aGljaCB3b3VsZCBsb2dpY2FsbHkgaW5jbHVkZSBhbnl0aGluZyByZWxhdGVkIHRvIHRyYW5zcGFyZW50IGh1Z2VwYWdlcy4gSXQnbGwgZ2l2ZSBtZSB0aGUgZGVmaW5pdGlvbnMgYW5kIHRoZSBkZXBlbmRlbmNpZXMuIEhvcGVmdWxseSwgaXTigJlzIG5vdCB0b28gZGVlcGx5IG5lc3RlZCwgSSBuZWVkIHRvIGdldCBhbiBpbml0aWFsIG92ZXJ2aWV3IGFzIHF1aWNrbHkgYXMgcG9zc2libGUuIFRpbWUgdG8gZGl2ZSBpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NzI5NywiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDE3OjU3OjI2Ljc4MzE0NTQ1MloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTkyNDYyODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiVFJBTlNQQVJFTlRfSFVHRVBBR0VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9LY29uZmlnPTgyNz1jb25maWcgUEVSU0lTVEVOVF9IVUdFX1pFUk9fRk9MSU9cXG5tbS9LY29uZmlnLTgyOC1cXHRib29sIFxcXCJBbGxvY2F0ZSBhIFBNRCBzaXplZCBmb2xpbyBmb3IgemVyb2luZ1xcXCJcXG5tbS9LY29uZmlnOjgyOTpcXHRkZXBlbmRzIG9uIFRSQU5TUEFSRU5UX0hVR0VQQUdFXFxubW0vS2NvbmZpZy04MzAtXFx0aGVscFxcbi0tXFxubW0vS2NvbmZpZz04NDM9Y29uZmlnIE1NX0lEXFxuLS1cXG5tbS9LY29uZmlnLTg0NS1cXG5tbS9LY29uZmlnOjg0NjptZW51Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFXFxubW0vS2NvbmZpZy04NDctXFx0Ym9vbCBcXFwiVHJhbnNwYXJlbnQgSHVnZXBhZ2UgU3VwcG9ydFxcXCJcXG5tbS9LY29uZmlnOjg0ODpcXHRkZXBlbmRzIG9uIEhBVkVfQVJDSF9UUkFOU1BBUkVOVF9IVUdFUEFHRSBcXHUwMDI2XFx1MDAyNiAhUFJFRU1QVF9SVFxcbm1tL0tjb25maWctODQ5LVxcdHNlbGVjdCBDT01QQUNUSU9OXFxuLS1cXG5tbS9LY29uZmlnLTg2MS1cXG5tbS9LY29uZmlnOjg2MjppZiBUUkFOU1BBUkVOVF9IVUdFUEFHRVxcbm1tL0tjb25maWctODYzLVxcbm1tL0tjb25maWc9ODY0PWNob2ljZVxcbm1tL0tjb25maWctODY1LVxcdHByb21wdCBcXFwiVHJhbnNwYXJlbnQgSHVnZXBhZ2UgU3VwcG9ydCBzeXNmcyBkZWZhdWx0c1xcXCJcXG5tbS9LY29uZmlnOjg2NjpcXHRkZWZhdWx0IFRSQU5TUEFSRU5UX0hVR0VQQUdFX0FMV0FZU1xcbm1tL0tjb25maWctODY3LVxcdGhlbHBcXG4tLVxcbm1tL0tjb25maWctODY5LVxcbm1tL0tjb25maWc6ODcwOlxcdGNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRV9BTFdBWVNcXG5tbS9LY29uZmlnLTg3MS1cXHRcXHRib29sIFxcXCJhbHdheXNcXFwiXFxuLS1cXG5tbS9LY29uZmlnLTg3Ni1cXG5tbS9LY29uZmlnOjg3NzpcXHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfTUFEVklTRVxcbm1tL0tjb25maWctODc4LVxcdFxcdGJvb2wgXFxcIm1hZHZpc2VcXFwiXFxuLS1cXG5tbS9LY29uZmlnLTg4NS1cXG5tbS9LY29uZmlnOjg4NjpcXHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfTkVWRVJcXG5tbS9LY29uZmlnLTg4Ny1cXHRcXHRib29sIFxcXCJuZXZlclxcXCJcXG4tLVxcbm1tL0tjb25maWc9ODkzPWNob2ljZVxcbm1tL0tjb25maWctODk0LVxcdHByb21wdCBcXFwiU2htZW0gaHVnZXBhZ2UgYWxsb2NhdGlvbiBkZWZhdWx0c1xcXCJcXG5tbS9LY29uZmlnOjg5NTpcXHRkZWZhdWx0IFRSQU5TUEFSRU5UX0hVR0VQQUdFX1NITUVNX0hVR0VfTkVWRVJcXG5tbS9LY29uZmlnLTg5Ni1cXHRoZWxwXFxuLS1cXG5tbS9LY29uZmlnLTkwMi1cXG5tbS9LY29uZmlnOjkwMzpcXHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfU0hNRU1fSFVHRV9ORVZFUlxcbm1tL0tjb25maWctOTA0LVxcdFxcdGJvb2wgXFxcIm5ldmVyXFxcIlxcbi0tXFxubW0vS2NvbmZpZy05MTItXFxubW0vS2NvbmZpZzo5MTM6XFx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX1NITUVNX0hVR0VfQUxXQVlTXFxubW0vS2NvbmZpZy05MTQtXFx0XFx0Ym9vbCBcXFwiYWx3YXlzXFxcIlxcbi0tXFxubW0vS2NvbmZpZy05MjAtXFxubW0vS2NvbmZpZzo5MjE6XFx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX1NITUVNX0hVR0VfV0lUSElOX1NJWkVcXG5tbS9LY29uZmlnLTkyMi1cXHRcXHRib29sIFxcXCJ3aXRoaW5fc2l6ZVxcXCJcXG4tLVxcbm1tL0tjb25maWctOTI4LVxcbm1tL0tjb25maWc6OTI5OlxcdGNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRV9TSE1FTV9IVUdFX0FEVklTRVxcbm1tL0tjb25maWctOTMwLVxcdFxcdGJvb2wgXFxcImFkdmlzZVxcXCJcXG4tLVxcbm1tL0tjb25maWc9OTM4PWNob2ljZVxcbm1tL0tjb25maWctOTM5LVxcdHByb21wdCBcXFwiVG1wZnMgaHVnZXBhZ2UgYWxsb2NhdGlvbiBkZWZhdWx0c1xcXCJcXG5tbS9LY29uZmlnOjk0MDpcXHRkZWZhdWx0IFRSQU5TUEFSRU5UX0hVR0VQQUdFX1RNUEZTX0hVR0VfTkVWRVJcXG5tbS9LY29uZmlnLTk0MS1cXHRoZWxwXFxuLS1cXG5tbS9LY29uZmlnLTk0Ny1cXG5tbS9LY29uZmlnOjk0ODpcXHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfVE1QRlNfSFVHRV9ORVZFUlxcbm1tL0tjb25maWctOTQ5LVxcdFxcdGJvb2wgXFxcIm5ldmVyXFxcIlxcbi0tXFxubW0vS2NvbmZpZy05NTYtXFxubW0vS2NvbmZpZzo5NTc6XFx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX1RNUEZTX0hVR0VfQUxXQVlTXFxubW0vS2NvbmZpZy05NTgtXFx0XFx0Ym9vbCBcXFwiYWx3YXlzXFxcIlxcbi0tXFxubW0vS2NvbmZpZy05NjQtXFxubW0vS2NvbmZpZzo5NjU6XFx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX1RNUEZTX0hVR0VfV0lUSElOX1NJWkVcXG5tbS9LY29uZmlnLTk2Ni1cXHRcXHRib29sIFxcXCJ3aXRoaW5fc2l6ZVxcXCJcXG4tLVxcbm1tL0tjb25maWctOTcyLVxcbm1tL0tjb25maWc6OTczOlxcdGNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRV9UTVBGU19IVUdFX0FEVklTRVxcbm1tL0tjb25maWctOTc0LVxcdFxcdGJvb2wgXFxcImFkdmlzZVxcXCJcXG4tLVxcbm1tL0tjb25maWc9OTkyPWNvbmZpZyBOT19QQUdFX01BUENPVU5UXFxuLS1cXG5tbS9LY29uZmlnLTEwMDQtXFxubW0vS2NvbmZpZzoxMDA1OmVuZGlmICMgVFJBTlNQQVJFTlRfSFVHRVBBR0VcXG5tbS9LY29uZmlnLTEwMDYtXFxuLS1cXG5tbS9LY29uZmlnPTEwMTQ9Y29uZmlnIFBHVEFCTEVfSEFTX0hVR0VfTEVBVkVTXFxubW0vS2NvbmZpZzoxMDE1OlxcdGRlZl9ib29sIFRSQU5TUEFSRU5UX0hVR0VQQUdFIHx8IEhVR0VUTEJfUEFHRVxcbm1tL0tjb25maWctMTAxNi1cXG4tLVxcbm1tL0tjb25maWc9MTAyMD1jb25maWcgSEFWRV9HSUdBTlRJQ19GT0xJT1NcXG5tbS9LY29uZmlnLTEwMjEtXFx0ZGVmX2Jvb2wgKEhVR0VUTEJfUEFHRSBcXHUwMDI2XFx1MDAyNiBBUkNIX0hBU19HSUdBTlRJQ19QQUdFKSB8fCBcXFxcXFxubW0vS2NvbmZpZzoxMDIyOlxcdFxcdCAoWk9ORV9ERVZJQ0UgXFx1MDAyNlxcdTAwMjYgSEFWRV9BUkNIX1RSQU5TUEFSRU5UX0hVR0VQQUdFX1BVRClcXG5tbS9LY29uZmlnLTEwMjMtXFxuLS1cXG5tbS9LY29uZmlnPTEwMjg9Y29uZmlnIEFSQ0hfU1VQUE9SVFNfSFVHRV9QRk5NQVBcXG5tbS9LY29uZmlnLTEwMjktXFx0ZGVmX2Jvb2wgblxcbm1tL0tjb25maWc6MTAzMDpcXHRkZXBlbmRzIG9uIFRSQU5TUEFSRU5UX0hVR0VQQUdFXFxubW0vS2NvbmZpZy0xMDMxLVxcbm1tL0tjb25maWc9MTAzMj1jb25maWcgQVJDSF9TVVBQT1JUU19QTURfUEZOTUFQXFxubW0vS2NvbmZpZy0xMDMzLVxcdGRlZl9ib29sIHlcXG5tbS9LY29uZmlnOjEwMzQ6XFx0ZGVwZW5kcyBvbiBBUkNIX1NVUFBPUlRTX0hVR0VfUEZOTUFQIFxcdTAwMjZcXHUwMDI2IEhBVkVfQVJDSF9UUkFOU1BBUkVOVF9IVUdFUEFHRVxcbm1tL0tjb25maWctMTAzNS1cXG5tbS9LY29uZmlnPTEwMzY9Y29uZmlnIEFSQ0hfU1VQUE9SVFNfUFVEX1BGTk1BUFxcbm1tL0tjb25maWctMTAzNy1cXHRkZWZfYm9vbCB5XFxubW0vS2NvbmZpZzoxMDM4OlxcdGRlcGVuZHMgb24gQVJDSF9TVVBQT1JUU19IVUdFX1BGTk1BUCBcXHUwMDI2XFx1MDAyNiBIQVZFX0FSQ0hfVFJBTlNQQVJFTlRfSFVHRVBBR0VfUFVEXFxubW0vS2NvbmZpZy0xMDM5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxNzo1NzoyNi45MDIzOTgzMDFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NjYzOTE3NDQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBEQU1PTiBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB3aGF0IEkgY2FuIHNlZSwgdGhpcyBwYXRjaCBpcyBhZGRpbmcgZnVuY3Rpb25hbGl0eSB0byBEQU1PTiwgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gZm9saW8gbWFuaXB1bGF0aW9uLCBsaWtlbHkgZm9yIG1lbW9yeSBtYW5hZ2VtZW50IG9wdGltaXphdGlvbiBvciBwZXJoYXBzIGZvciBtb3JlIGdyYW51bGFyIG1vbml0b3JpbmcuXG5cblRoZSBjb3JlIG9mIHRoZSBuZXcgY29kZSBzZWVtcyB0byByZXZvbHZlIGFyb3VuZCBgZGFtb25fY29sbGFwc2VfZm9saW9fcmFuZ2VgLCBgZGFtb3NfdmFfY29sbGFwc2VgLCBhbmQgYGRhbW9zX3ZhX3NwbGl0YC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdywgc28gSSd2ZSB0cmFjZWQgaXQ6IGBkYW1vbl9jb2xsYXBzZV9mb2xpb19yYW5nZWAgaXMgZGVmaW5pdGVseSByZWFjaGFibGU7IGl0J3MgY2FsbGVkIGJ5IGBkYW1vc192YV9jb2xsYXBzZWAuIEFuZCBib3RoIGBkYW1vc192YV9jb2xsYXBzZWAgYW5kIGBkYW1vc192YV9zcGxpdGAgYXJlIGNhbGxlZCB3aXRoaW4gYGRhbW9uX3ZhX2FwcGx5X3NjaGVtZWAsIHdoaWNoLCBhcyBJIGtub3csIGlzIGEgZnVuY3Rpb24gY2FsbGVkIGJ5IHRoZSBEQU1PTiBjb3JlLiBDcnVjaWFsbHksIHRoZSBwYXRjaCBhbHNvIGludHJvZHVjZXMgdGhlIFwiU1BMSVRcIiBhY3Rpb24gdmlhIGBEQU1PU19TUExJVGAgaW4gYGRhbW9zX3N5c2ZzX2FjdGlvbl9uYW1lc2AuIFRoaXMgaXMga2V5IGJlY2F1c2UgdGhhdCdzIGhvdyBzeXprYWxsZXIsIHRoZSBmdXp6ZXIsIGludGVyYWN0cyB3aXRoIERBTU9OIHZpYSB0aGUgc3lzZnMgaW50ZXJmYWNlLiBUaGlzIG1lYW5zIHN5emthbGxlciBjYW4gbm93IGNyZWF0ZSBEQU1PTiBzY2hlbWVzIHVzaW5nIFwic3BsaXRcIiBhbmQgXCJjb2xsYXBzZVwiIHdpdGggdGhlIGB0YXJnZXRfb3JkZXJgIHBhcmFtZXRlcnMuIEl0IGxvb2tzIGxpa2UgdGhlIHRhcmdldCBoZXJlIGlzIHRvIGFsbG93IGZ1enppbmcgdGhlIHNwbGl0dGluZyBhbmQgY29sbGFwc2luZyBmdW5jdGlvbmFsaXR5IHdpdGhpbiBEQU1PTi5cblxuSSBuZWVkIHRvIG5haWwgZG93biB0aGUgc3ltYm9scyBvZiBpbXBvcnRhbmNlOiB0aGUgZnVuY3Rpb25zIEkgbWVudGlvbmVkIGFib3ZlLCBzcGVjaWZpY2FsbHkgYGRhbW9zX3ZhX2NvbGxhcHNlYCwgYGRhbW9zX3ZhX3NwbGl0YCwgYW5kIGBkYW1vbl9jb2xsYXBzZV9mb2xpb19yYW5nZWAuIEknbGwgYWRkIHRob3NlIHRvIG15IGZvY3VzIGxpc3QuXG5cbkkgc2hvdWxkIGFsc28gY2hlY2sgZm9yIGFueSBvdGhlciBhZGRlZCBvciBtb2RpZmllZCBmdW5jdGlvbnMgcmVsYXRlZCB0byB0aGlzIG5ldyBmdW5jdGlvbmFsaXR5OiBJJ20gc2VlaW5nIGB0YXJnZXRfb3JkZXJfc2hvd2AsIGB0YXJnZXRfb3JkZXJfc3RvcmVgLCBgZGFtb25fc3lzZnNfbWtfc2NoZW1lYCwgYW5kIGBkYW1vbl92YV9hcHBseV9zY2hlbWVgLiBJJ2xsIG5lZWQgdG8ga2VlcCB0aG9zZSBpbiBtaW5kIGFzIHBvdGVudGlhbGx5IHJlbGF0ZWQgc3ltYm9scy5cblxuTm93LCBsZXQncyBtYWtlIHN1cmUgdGhlIGRlcGVuZGVuY2llcyBhcmUgYXMgSSB1bmRlcnN0YW5kIHRoZW0uIEkgbmVlZCB0byBtYWtlIHN1cmUgYFRSQU5TUEFSRU5UX0hVR0VQQUdFYCBpcyBlbmFibGVkIGZvciBmdW5jdGlvbnMgc3VjaCBhcyBgc3BsaXRfZm9saW9fdG9fb3JkZXJgIGFuZCBgY29sbGFwc2VfaHVnZV9wYWdlYC4gYHNwbGl0X2ZvbGlvX3RvX29yZGVyYCBpcyBpbiBgbW0vaHVnZV9tZW1vcnkuY2AgYW5kIGlzIGNvbmRpdGlvbmFsIG9uIGBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VgLCBhbmQgYGNvbGxhcHNlX2h1Z2VfcGFnZWAgaXMgaW4gYG1tL2todWdlcGFnZWQuY2AgYWxzbyBjb25kaXRpb25hbCBvbiBgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFYC4gU28sIHRvIGJlIGNsZWFyLCBib3RoIHJlcXVpcmUgdGhhdCBjb25maWcgdG8gYmUgZW5hYmxlZC4gSSBhbSBnb2luZyB0byBuZWVkIHRvIGtlZXAgdGhlIGZvbGxvd2luZyBjb25maWdzIGluIG1pbmQ6IGBEQU1PTl9TWVNGU2AsIGBEQU1PTl9WQUREUmAsIGFuZCBgVFJBTlNQQVJFTlRfSFVHRVBBR0VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MDI4LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDE3OjU3OjM1LjU2NjMxNzk5MVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzE0NDAwNDgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImtodWdlcGFnZWQub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9NYWtlZmlsZT0xMDA9b2JqLSQoQ09ORklHX0RFVklDRV9NSUdSQVRJT04pICs9IG1pZ3JhdGVfZGV2aWNlLm9cXG5tbS9NYWtlZmlsZToxMDE6b2JqLSQoQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFKSArPSBodWdlX21lbW9yeS5vIGtodWdlcGFnZWQub1xcbm1tL01ha2VmaWxlLTEwMi1vYmotJChDT05GSUdfUEFHRV9DT1VOVEVSKSArPSBwYWdlX2NvdW50ZXIub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxNzo1NzozNS44ODA3NzAzNloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTI0OTgyMDkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIEtlcm5lbCBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEknbSBjb25maXJtaW5nIHRoYXQgdGhlIGBraHVnZXBhZ2VkLm9gIG1vZHVsZSBpcyBkZWZpbml0ZWx5IGNvbXBpbGVkIGFuZCBpbmNsdWRlZCB3aGVuIGBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VgIGlzIGVuYWJsZWQuIFRoYXQncyBhIGdpdmVuOyBpdCdzIHRoZSBjb3JlIG9mIGhvdyB0cmFuc3BhcmVudCBodWdlcGFnZXMgZnVuY3Rpb24gaW4gdGhlIGtlcm5lbC4gU28sIGNsZWFybHksIGBUUkFOU1BBUkVOVF9IVUdFUEFHRWAgaXMgYSBoYXJkIHJlcXVpcmVtZW50IGluIHRoaXMgY29udGV4dC4gSXQncyBhIGZ1bmRhbWVudGFsIGJ1aWxkaW5nIGJsb2NrLlxuXG5Ob3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgZm9yIGBtbS9kYW1vbi92YWRkci5jYC4gTXkgbmV4dCBzdGVwIGlzIHRvIGRyaWxsIGRvd24gYW5kIHNlZSBpZiB0aGUgYERBTU9OX1ZBRERSYCBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyBhbHNvIGEgbmVjZXNzYXJ5IHByZXJlcXVpc2l0ZSBmb3IgdGhhdCBzcGVjaWZpYyBmaWxlLiBMZXQgbWUgdmVyaWZ5IHRoYXQgYW5kIG1ha2Ugc3VyZSBhbGwgb3VyIGR1Y2tzIGFyZSBpbiBhIHJvdyByZWdhcmRpbmcgaG93IHRoZXNlIHBhcnRzIG9mIHRoZSBrZXJuZWwgYXJlIGJ1aWx0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDI4MSwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDE3OjU3OjM5LjQwNTc1NDU1MloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjExNzYxNTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmFkZHIub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9kYW1vbi9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9kYW1vbi9NYWtlZmlsZT0zPW9iai15XFx0XFx0XFx0XFx0Oj0gY29yZS5vXFxubW0vZGFtb24vTWFrZWZpbGU6NDpvYmotJChDT05GSUdfREFNT05fVkFERFIpXFx0Kz0gb3BzLWNvbW1vbi5vIHZhZGRyLm9cXG5tbS9kYW1vbi9NYWtlZmlsZS01LW9iai0kKENPTkZJR19EQU1PTl9QQUREUilcXHQrPSBvcHMtY29tbW9uLm8gcGFkZHIub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxNzo1NzozOS40NjY5MzY4MzdaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc5OTg5MjI5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqRGVwZW5kZW5jaWVzIGFuZCB0aGUgREFNT04gTGFuZHNjYXBlKipcblxuUmlnaHQsIHNvIEknbSB0aGlua2luZyBhYm91dCBEQU1PTi4gSSBzZWUgdGhvc2UgY29uc3RhbnRzOiBgREFNT05fVkFERFJgLiBZZXMsIGFic29sdXRlbHkgbmVjZXNzYXJ5LiBObyBxdWVzdGlvbi4gVGhlIHZpcnR1YWwgYWRkcmVzcyByZXF1aXJlbWVudCBpcyBmdW5kYW1lbnRhbCB0byBob3cgaXQgb3BlcmF0ZXMsIGhvdyBpdCB0cmFja3MgbWVtb3J5LiBNYWtlcyBwZXJmZWN0IHNlbnNlLlxuXG5BbmQgdGhlbiwgbG9va2luZyBhdCBgc3lzZnMtc2NoZW1lcy5jYCwgdGhlIGNvbm5lY3Rpb24gYmVjb21lcyBldmVuIGNsZWFyZXIuIFdlJ3JlIHRhbGtpbmcgYWJvdXQgcG9raW5nIGFyb3VuZCBpbiB0aGUga2VybmVsJ3MgZmlsZSBzeXN0ZW0sIHNvIGBEQU1PTl9TWVNGU2AgaXMsIG5hdHVyYWxseSwgYW5vdGhlciBjcnVjaWFsIHBpZWNlIG9mIHRoZSBwdXp6bGUuIFdpdGhvdXQgdGhhdCBhY2Nlc3MsIHdpdGhvdXQgdGhhdCBpbnRlcmZhY2UsIHRoZXJlJ3Mgbm8gd2F5IHRvIGNvbmZpZ3VyZSBhbmQgY29udHJvbCB0aGUgbW9uaXRvcmluZyBzY2hlbWVzIHRoYXQgdW5kZXJwaW4gZXZlcnl0aGluZyB3ZSdyZSB0cnlpbmcgdG8gYWNoaWV2ZSB3aXRoIERBTU9OLiBHb3R0YSBoYXZlIGJvdGgsIGFuZCB1bmRlcnN0YW5kaW5nIHdoeSBpcyBrZXkgdG8gZWZmZWN0aXZlIGRldmVsb3BtZW50IGFuZCB1c2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNjUxLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMTc6NTc6NDMuMjY2ODMxNzUyWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MjY2MDY2NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzeXNmcy1zY2hlbWVzLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vZGFtb24vTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZGFtb24vTWFrZWZpbGU9NT1vYmotJChDT05GSUdfREFNT05fUEFERFIpXFx0Kz0gb3BzLWNvbW1vbi5vIHBhZGRyLm9cXG5tbS9kYW1vbi9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19EQU1PTl9TWVNGUylcXHQrPSBzeXNmcy1jb21tb24ubyBzeXNmcy1zY2hlbWVzLm8gc3lzZnMub1xcbm1tL2RhbW9uL01ha2VmaWxlLTctb2JqLSQoQ09ORklHX0RBTU9OX1JFQ0xBSU0pXFx0Kz0gbW9kdWxlcy1jb21tb24ubyByZWNsYWltLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMTc6NTc6NDMuMzI5NDk4NDk2WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc1NDIxNzQ1MTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIERBTU9OIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBjb25maXJtZWQgdGhhdCBgREFNT05fU1lTRlNgIGlzIGEgY3JpdGljYWwgcmVxdWlyZW1lbnQgZm9yIHRoaXMgcGF0Y2gg4oCTIG5vIHN1cnByaXNlcyB0aGVyZS4gVGhlIGNvcmUgY29uZmlncyBJJ20gc2VlaW5nIHRoYXQgYXJlIHJlbGV2YW50IGFyZSBgREFNT05fU1lTRlNgLCBgREFNT05fVkFERFJgLCBhbmQgYFRSQU5TUEFSRU5UX0hVR0VQQUdFYC4gSSdtIHN0YXJ0aW5nIHRvIGJ1aWxkIGEgcGljdHVyZSBvZiBob3cgdGhpcyBwYXRjaCBmaXRzIGludG8gdGhlIGJpZ2dlciBtZW1vcnkgbWFuYWdlbWVudCBsYW5kc2NhcGUuXG5cbkknbSB6ZXJvaW5nIGluIG9uIGEgZmV3IGtleSBzeW1ib2xzIHRvIGd1aWRlIG15IGFuYWx5c2lzLiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBgZGFtb3NfdmFfY29sbGFwc2VgLCBgZGFtb3NfdmFfc3BsaXRgLCBgZGFtb25fY29sbGFwc2VfZm9saW9fcmFuZ2VgLCBhbmQgYHRhcmdldF9vcmRlcl9zdG9yZWAuIExldCBtZSBqdXN0IGNvbmZpcm0gaWYgdGhleSdyZSBpbnRlcm5hbCBvciBleHBvcnRlZC4gQWgsIGdvb2QuIGBkYW1vc192YV9jb2xsYXBzZWAgYW5kIGBkYW1vc192YV9zcGxpdGAgYXJlIGluZGVlZCBzdGF0aWMsIGJvdGggZm91bmQgd2l0aGluIGBtbS9kYW1vbi92YWRkci5jYC4gYGRhbW9uX2NvbGxhcHNlX2ZvbGlvX3JhbmdlYCBpcyBleHBvcnRlZCwgbG9jYXRlZCBpbiBgbW0va2h1Z2VwYWdlZC5jYC4gQW5kIGB0YXJnZXRfb3JkZXJfc3RvcmVgIGlzIGFsc28gc3RhdGljLCB3aXRoaW4gYG1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuY2AuIEkgd2lsbCBiZSBpbmNsdWRpbmcgdGhlc2UgaW4gbXkgbGlzdCBvZiBmb2N1cyBzeW1ib2xzLlxuXG5Ob3csIGxldCdzIHN0ZXAgYmFjayBhbmQgY29uc2lkZXIgdGhlICp3aHkqLiBUaGlzIHBhdGNoIHNlZW1zIHRvIGJlIGludHJvZHVjaW5nIGEgYERBTU9TX1NQTElUYCBhY3Rpb24gYW5kIGVuaGFuY2luZyBgREFNT1NfQ09MTEFQU0VgIHdpdGggYSBgdGFyZ2V0X29yZGVyYCBwYXJhbWV0ZXIuIFRoYXQncyBhIGRlZmluaXRlIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBEQU1PTiBzdWJzeXN0ZW0uIENydWNpYWxseSwgaXQncyBtb2RpZnlpbmcgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgaXRzZWxmIHRvIGFsbG93IGZvciBmb2xpbyBzcGxpdHRpbmcgYW5kIGNvbGxhcHNpbmcgYWNjb3JkaW5nIHRvIERBTU9OIHNjaGVtZXMuIFRoaXMgZGlyZWN0bHkgaW1wYWN0cyB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiBEQU1PTiBhbmQgdGhlIGtlcm5lbCdzIG1lbW9yeSBtYW5hZ2VtZW50LiBUaGUga2V5IGlzIHRoYXQgdGhlc2UgbmV3IGZlYXR1cmVzIGFyZSBhY2Nlc3NpYmxlIHZpYSB0aGUgREFNT04gc3lzZnMgaW50ZXJmYWNlLCBtYWtpbmcgdGhlbSByZWFjaGFibGUgYW5kIHRlc3RhYmxlLlxuXG5BbmQgeWVzLCB0aGUgcGF0Y2ggaXMgbWFya2VkIGFzIGBXb3J0aEZ1enppbmdgLiBUaGUgZmFjdCB0aGF0IGl0J3MgYWx0ZXJpbmcgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBhbmQgZXhwb3NpbmcgdGhvc2UgY2hhbmdlcyB2aWEgc3lzZnMgaXMgdGhlIGNyaXRpY2FsIGZhY3Rvci4gVGhpcyBpcyBhbiBleGNlbGxlbnQgY2FuZGlkYXRlIGZvciBmdXp6aW5nIHRvIHVuY292ZXIgcG90ZW50aWFsIGlzc3VlcywgYW5kIEkgbmVlZCB0byBmb3JtdWxhdGUgYSBmdXp6aW5nIHN0cmF0ZWd5LiBPa2F5LCBJJ20gcmVhZHkgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTAxNywiT3V0cHV0VG9rZW5zIjoxNzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMDgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMTc6NTc6NTAuODcxNjc2ODU0WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTY1NjkxMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRBTU9OX1NZU0ZTXCIsXG4gICAgXCJEQU1PTl9WQUREUlwiLFxuICAgIFwiVFJBTlNQQVJFTlRfSFVHRVBBR0VcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkYW1vc192YV9jb2xsYXBzZVwiLFxuICAgIFwiZGFtb3NfdmFfc3BsaXRcIixcbiAgICBcImRhbW9uX2NvbGxhcHNlX2ZvbGlvX3JhbmdlXCIsXG4gICAgXCJ0YXJnZXRfb3JkZXJfc3RvcmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgREFNT04gc3Vic3lzdGVtIGJ5IGFkZGluZyBhIG5ldyBEQU1PU19TUExJVCBhY3Rpb24gYW5kIGV4dGVuZGluZyBEQU1PU19DT0xMQVBTRSB3aXRoIGEgdGFyZ2V0X29yZGVyIHBhcmFtZXRlci4gSXQgbW9kaWZpZXMgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyB0byBzcGxpdCBhbmQgY29sbGFwc2UgZm9saW9zIGJhc2VkIG9uIERBTU9OIHNjaGVtZXMuIFRoZXNlIGZlYXR1cmVzIGFyZSBleHBvc2VkIHRvIHVzZXJzcGFjZSB2aWEgdGhlIERBTU9OIHN5c2ZzIGludGVyZmFjZSwgbWFraW5nIHRoZW0gcmVhY2hhYmxlIGFuZCB0ZXN0YWJsZSBieSBhIGZ1enplci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEQU1PTl9TWVNGU1wiLFxuICAgIFwiREFNT05fVkFERFJcIixcbiAgICBcIlRSQU5TUEFSRU5UX0hVR0VQQUdFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZGFtb3NfdmFfY29sbGFwc2VcIixcbiAgICBcImRhbW9zX3ZhX3NwbGl0XCIsXG4gICAgXCJkYW1vbl9jb2xsYXBzZV9mb2xpb19yYW5nZVwiLFxuICAgIFwidGFyZ2V0X29yZGVyX3N0b3JlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIERBTU9OIHN1YnN5c3RlbSBieSBhZGRpbmcgYSBuZXcgREFNT1NfU1BMSVQgYWN0aW9uIGFuZCBleHRlbmRpbmcgREFNT1NfQ09MTEFQU0Ugd2l0aCBhIHRhcmdldF9vcmRlciBwYXJhbWV0ZXIuIEl0IG1vZGlmaWVzIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgdG8gc3BsaXQgYW5kIGNvbGxhcHNlIGZvbGlvcyBiYXNlZCBvbiBEQU1PTiBzY2hlbWVzLiBUaGVzZSBmZWF0dXJlcyBhcmUgZXhwb3NlZCB0byB1c2Vyc3BhY2UgdmlhIHRoZSBEQU1PTiBzeXNmcyBpbnRlcmZhY2UsIG1ha2luZyB0aGVtIHJlYWNoYWJsZSBhbmQgdGVzdGFibGUgYnkgYSBmdXp6ZXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowh7qn2[1] Phase: Succeeded StartedAt: 2026-07-01 17:58:03 +0000 UTC FinishedAt: 2026-07-01 17:58:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh7qn2[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-01 17:58:03 +0000 UTC FinishedAt: 2026-07-01 17:58:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh7qn2[2] Phase: Succeeded StartedAt: 2026-07-01 17:58:03 +0000 UTC FinishedAt: 2026-07-01 22:00:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh7qn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bd759e46b2ff02036fb80f389f78eedb43445357","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damos_va_collapse","damos_va_split","damon_collapse_folio_range","target_order_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bd759e46b2ff02036fb80f389f78eedb43445357","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"e3624b91-ac55-4a84-bacb-e20f896e2b09","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-01 17:58:03 +0000 UTC FinishedAt: 2026-07-01 22:00:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"bd759e46b2ff02036fb80f389f78eedb43445357","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damos_va_collapse","damos_va_split","damon_collapse_folio_range","target_order_store"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"bd759e46b2ff02036fb80f389f78eedb43445357","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"e3624b91-ac55-4a84-bacb-e20f896e2b09","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowh7qn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bd759e46b2ff02036fb80f389f78eedb43445357","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damos_va_collapse","damos_va_split","damon_collapse_folio_range","target_order_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bd759e46b2ff02036fb80f389f78eedb43445357","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"e3624b91-ac55-4a84-bacb-e20f896e2b09","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-01 17:58:04 +0000 UTC FinishedAt: 2026-07-01 17:58:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh7qn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bd759e46b2ff02036fb80f389f78eedb43445357","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damos_va_collapse","damos_va_split","damon_collapse_folio_range","target_order_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bd759e46b2ff02036fb80f389f78eedb43445357","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"e3624b91-ac55-4a84-bacb-e20f896e2b09","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-01 17:58:04 +0000 UTC FinishedAt: 2026-07-01 17:58:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"bd759e46b2ff02036fb80f389f78eedb43445357","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.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-workflowh7qn2/series-workflowh7qn2-convert-artifact-539011452/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowh7qn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bd759e46b2ff02036fb80f389f78eedb43445357","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damos_va_collapse","damos_va_split","damon_collapse_folio_range","target_order_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bd759e46b2ff02036fb80f389f78eedb43445357","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"e3624b91-ac55-4a84-bacb-e20f896e2b09","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-01 17:58:40 +0000 UTC FinishedAt: 2026-07-01 18:26:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh7qn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bd759e46b2ff02036fb80f389f78eedb43445357","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damos_va_collapse","damos_va_split","damon_collapse_folio_range","target_order_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bd759e46b2ff02036fb80f389f78eedb43445357","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"e3624b91-ac55-4a84-bacb-e20f896e2b09","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-01 17:58:40 +0000 UTC FinishedAt: 2026-07-01 18:26:02 +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:*6e2b97f5-2cdc-4870-9d25-fd9c9c40d436,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-workflowh7qn2/series-workflowh7qn2-convert-artifact-539011452/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": "dc57eb42-cc44-47bd-b644-76a28eef89b0", "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-workflowh7qn2/series-workflowh7qn2-build-action-2731320490/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowh7qn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bd759e46b2ff02036fb80f389f78eedb43445357","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damos_va_collapse","damos_va_split","damon_collapse_folio_range","target_order_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bd759e46b2ff02036fb80f389f78eedb43445357","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"e3624b91-ac55-4a84-bacb-e20f896e2b09","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-01 17:58:40 +0000 UTC FinishedAt: 2026-07-01 18:25:52 +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:*6e2b97f5-2cdc-4870-9d25-fd9c9c40d436,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-workflowh7qn2/series-workflowh7qn2-convert-artifact-539011452/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": "dc57eb42-cc44-47bd-b644-76a28eef89b0", "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-workflowh7qn2/series-workflowh7qn2-build-action-2731320490/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowh7qn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bd759e46b2ff02036fb80f389f78eedb43445357","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damos_va_collapse","damos_va_split","damon_collapse_folio_range","target_order_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bd759e46b2ff02036fb80f389f78eedb43445357","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"e3624b91-ac55-4a84-bacb-e20f896e2b09","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-01 18:26:02 +0000 UTC FinishedAt: 2026-07-01 18:26:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh7qn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bd759e46b2ff02036fb80f389f78eedb43445357","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damos_va_collapse","damos_va_split","damon_collapse_folio_range","target_order_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bd759e46b2ff02036fb80f389f78eedb43445357","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"e3624b91-ac55-4a84-bacb-e20f896e2b09","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-01 18:26:02 +0000 UTC FinishedAt: 2026-07-01 18:26:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh7qn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bd759e46b2ff02036fb80f389f78eedb43445357","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damos_va_collapse","damos_va_split","damon_collapse_folio_range","target_order_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bd759e46b2ff02036fb80f389f78eedb43445357","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"e3624b91-ac55-4a84-bacb-e20f896e2b09","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-01 18:26:02 +0000 UTC FinishedAt: 2026-07-01 18:26:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh7qn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bd759e46b2ff02036fb80f389f78eedb43445357","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damos_va_collapse","damos_va_split","damon_collapse_folio_range","target_order_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bd759e46b2ff02036fb80f389f78eedb43445357","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"e3624b91-ac55-4a84-bacb-e20f896e2b09","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-01 18:26:02 +0000 UTC FinishedAt: 2026-07-01 18:26:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"bd759e46b2ff02036fb80f389f78eedb43445357","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"e3624b91-ac55-4a84-bacb-e20f896e2b09","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.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-workflowh7qn2/series-workflowh7qn2-convert-artifact-1522998715/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowh7qn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bd759e46b2ff02036fb80f389f78eedb43445357","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damos_va_collapse","damos_va_split","damon_collapse_folio_range","target_order_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bd759e46b2ff02036fb80f389f78eedb43445357","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"e3624b91-ac55-4a84-bacb-e20f896e2b09","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-01 18:26:12 +0000 UTC FinishedAt: 2026-07-01 18:28:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh7qn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bd759e46b2ff02036fb80f389f78eedb43445357","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damos_va_collapse","damos_va_split","damon_collapse_folio_range","target_order_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bd759e46b2ff02036fb80f389f78eedb43445357","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"e3624b91-ac55-4a84-bacb-e20f896e2b09","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-01 18:26:12 +0000 UTC FinishedAt: 2026-07-01 18:28:19 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*dc57eb42-cc44-47bd-b644-76a28eef89b0,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-workflowh7qn2/series-workflowh7qn2-build-action-2731320490/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-workflowh7qn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bd759e46b2ff02036fb80f389f78eedb43445357","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damos_va_collapse","damos_va_split","damon_collapse_folio_range","target_order_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bd759e46b2ff02036fb80f389f78eedb43445357","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"e3624b91-ac55-4a84-bacb-e20f896e2b09","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-01 18:28:28 +0000 UTC FinishedAt: 2026-07-01 18:28:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh7qn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bd759e46b2ff02036fb80f389f78eedb43445357","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damos_va_collapse","damos_va_split","damon_collapse_folio_range","target_order_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bd759e46b2ff02036fb80f389f78eedb43445357","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"e3624b91-ac55-4a84-bacb-e20f896e2b09","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-01 18:28:28 +0000 UTC FinishedAt: 2026-07-01 18:28:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh7qn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bd759e46b2ff02036fb80f389f78eedb43445357","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damos_va_collapse","damos_va_split","damon_collapse_folio_range","target_order_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bd759e46b2ff02036fb80f389f78eedb43445357","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"e3624b91-ac55-4a84-bacb-e20f896e2b09","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-01 18:28:28 +0000 UTC FinishedAt: 2026-07-01 18:54:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh7qn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bd759e46b2ff02036fb80f389f78eedb43445357","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damos_va_collapse","damos_va_split","damon_collapse_folio_range","target_order_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bd759e46b2ff02036fb80f389f78eedb43445357","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"e3624b91-ac55-4a84-bacb-e20f896e2b09","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-01 18:28:28 +0000 UTC FinishedAt: 2026-07-01 18:54:53 +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:*6e2b97f5-2cdc-4870-9d25-fd9c9c40d436,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-workflowh7qn2/series-workflowh7qn2-convert-artifact-1522998715/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": "2b7f280d-82c2-4441-b0ab-b08bb7682f16", "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-workflowh7qn2/series-workflowh7qn2-build-action-836737247/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowh7qn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bd759e46b2ff02036fb80f389f78eedb43445357","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damos_va_collapse","damos_va_split","damon_collapse_folio_range","target_order_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bd759e46b2ff02036fb80f389f78eedb43445357","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"e3624b91-ac55-4a84-bacb-e20f896e2b09","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-01 18:28:28 +0000 UTC FinishedAt: 2026-07-01 18:54:49 +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:*6e2b97f5-2cdc-4870-9d25-fd9c9c40d436,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-workflowh7qn2/series-workflowh7qn2-convert-artifact-1522998715/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": "2b7f280d-82c2-4441-b0ab-b08bb7682f16", "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-workflowh7qn2/series-workflowh7qn2-build-action-836737247/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowh7qn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bd759e46b2ff02036fb80f389f78eedb43445357","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damos_va_collapse","damos_va_split","damon_collapse_folio_range","target_order_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bd759e46b2ff02036fb80f389f78eedb43445357","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"e3624b91-ac55-4a84-bacb-e20f896e2b09","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-01 18:54:53 +0000 UTC FinishedAt: 2026-07-01 18:54:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh7qn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bd759e46b2ff02036fb80f389f78eedb43445357","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damos_va_collapse","damos_va_split","damon_collapse_folio_range","target_order_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bd759e46b2ff02036fb80f389f78eedb43445357","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"e3624b91-ac55-4a84-bacb-e20f896e2b09","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-01 18:54:53 +0000 UTC FinishedAt: 2026-07-01 18:54:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh7qn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bd759e46b2ff02036fb80f389f78eedb43445357","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damos_va_collapse","damos_va_split","damon_collapse_folio_range","target_order_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bd759e46b2ff02036fb80f389f78eedb43445357","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"e3624b91-ac55-4a84-bacb-e20f896e2b09","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-01 18:54:53 +0000 UTC FinishedAt: 2026-07-01 18:57:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh7qn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bd759e46b2ff02036fb80f389f78eedb43445357","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damos_va_collapse","damos_va_split","damon_collapse_folio_range","target_order_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bd759e46b2ff02036fb80f389f78eedb43445357","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"e3624b91-ac55-4a84-bacb-e20f896e2b09","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-01 18:54:53 +0000 UTC FinishedAt: 2026-07-01 18:57:06 +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:*2b7f280d-82c2-4441-b0ab-b08bb7682f16,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-workflowh7qn2/series-workflowh7qn2-build-action-836737247/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-workflowh7qn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bd759e46b2ff02036fb80f389f78eedb43445357","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damos_va_collapse","damos_va_split","damon_collapse_folio_range","target_order_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bd759e46b2ff02036fb80f389f78eedb43445357","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"e3624b91-ac55-4a84-bacb-e20f896e2b09","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-01 18:57:15 +0000 UTC FinishedAt: 2026-07-01 22:00:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh7qn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bd759e46b2ff02036fb80f389f78eedb43445357","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damos_va_collapse","damos_va_split","damon_collapse_folio_range","target_order_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bd759e46b2ff02036fb80f389f78eedb43445357","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"e3624b91-ac55-4a84-bacb-e20f896e2b09","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-01 18:57:15 +0000 UTC FinishedAt: 2026-07-01 22:00:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damos_va_collapse","damos_va_split","damon_collapse_folio_range","target_order_store"],"skip_cover_check":true},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:*dc57eb42-cc44-47bd-b644-76a28eef89b0,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*2b7f280d-82c2-4441-b0ab-b08bb7682f16,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-workflowh7qn2/series-workflowh7qn2-build-action-2731320490/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-workflowh7qn2/series-workflowh7qn2-build-action-836737247/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowh7qn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bd759e46b2ff02036fb80f389f78eedb43445357","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damos_va_collapse","damos_va_split","damon_collapse_folio_range","target_order_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bd759e46b2ff02036fb80f389f78eedb43445357","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"e3624b91-ac55-4a84-bacb-e20f896e2b09","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-01 18:57:15 +0000 UTC FinishedAt: 2026-07-01 18:57:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh7qn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bd759e46b2ff02036fb80f389f78eedb43445357","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damos_va_collapse","damos_va_split","damon_collapse_folio_range","target_order_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bd759e46b2ff02036fb80f389f78eedb43445357","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"e3624b91-ac55-4a84-bacb-e20f896e2b09","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-01 18:57:15 +0000 UTC FinishedAt: 2026-07-01 18:57:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damos_va_collapse","damos_va_split","damon_collapse_folio_range","target_order_store"],"skip_cover_check":true},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-workflowh7qn2/series-workflowh7qn2-convert-artifact-1373637812/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowh7qn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bd759e46b2ff02036fb80f389f78eedb43445357","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damos_va_collapse","damos_va_split","damon_collapse_folio_range","target_order_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bd759e46b2ff02036fb80f389f78eedb43445357","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"e3624b91-ac55-4a84-bacb-e20f896e2b09","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-01 18:57:15 +0000 UTC FinishedAt: 2026-07-01 18:57:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh7qn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bd759e46b2ff02036fb80f389f78eedb43445357","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damos_va_collapse","damos_va_split","damon_collapse_folio_range","target_order_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bd759e46b2ff02036fb80f389f78eedb43445357","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"e3624b91-ac55-4a84-bacb-e20f896e2b09","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-01 18:57:15 +0000 UTC FinishedAt: 2026-07-01 18:57:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh7qn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bd759e46b2ff02036fb80f389f78eedb43445357","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damos_va_collapse","damos_va_split","damon_collapse_folio_range","target_order_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bd759e46b2ff02036fb80f389f78eedb43445357","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"e3624b91-ac55-4a84-bacb-e20f896e2b09","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-01 18:57:15 +0000 UTC FinishedAt: 2026-07-01 18:57:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh7qn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bd759e46b2ff02036fb80f389f78eedb43445357","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damos_va_collapse","damos_va_split","damon_collapse_folio_range","target_order_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bd759e46b2ff02036fb80f389f78eedb43445357","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"e3624b91-ac55-4a84-bacb-e20f896e2b09","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-01 18:57:36 +0000 UTC FinishedAt: 2026-07-01 22:00:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh7qn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bd759e46b2ff02036fb80f389f78eedb43445357","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damos_va_collapse","damos_va_split","damon_collapse_folio_range","target_order_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bd759e46b2ff02036fb80f389f78eedb43445357","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"e3624b91-ac55-4a84-bacb-e20f896e2b09","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-01 18:57:36 +0000 UTC FinishedAt: 2026-07-01 22:00:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*dc57eb42-cc44-47bd-b644-76a28eef89b0,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*2b7f280d-82c2-4441-b0ab-b08bb7682f16,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-workflowh7qn2/series-workflowh7qn2-build-action-2731320490/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-workflowh7qn2/series-workflowh7qn2-build-action-836737247/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-workflowh7qn2/series-workflowh7qn2-convert-artifact-1373637812/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,}