Name: series-workflowlbz84 Phase: Succeeded StartedAt: 2026-08-01 12:48:37 +0000 UTC FinishedAt: 2026-08-01 13:45:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbz84[0] Phase: Succeeded StartedAt: 2026-08-01 12:48:37 +0000 UTC FinishedAt: 2026-08-01 13:08:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbz84[0].run-triage Phase: Succeeded StartedAt: 2026-08-01 12:48:37 +0000 UTC FinishedAt: 2026-08-01 13:08:11 +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": "85f5913c147076a6f243f90fe4ccfe1c4da9ea20", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ZSWAP", "ZSWAP_DEFAULT_ON" ], "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": "85f5913c147076a6f243f90fe4ccfe1c4da9ea20", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ZSWAP", "ZSWAP_DEFAULT_ON" ], "series_id": "3c2fbb6e-3302-4ca8-add4-d89c4ba4213d" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "zswap_store", "zswap_load", "zswap_invalidate" ], "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+CgkJCTx0ZD4yMDI2LzA4LzAxIDEzOjA3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1pTV0FQJiMzNDssCiAgICAmIzM0O1pTV0FQX0RFRkFVTFRfT04mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt6c3dhcF9zdG9yZSYjMzQ7LAogICAgJiMzNDt6c3dhcF9sb2FkJiMzNDssCiAgICAmIzM0O3pzd2FwX2ludmFsaWRhdGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVmYWN0b3JzIHRoZSB6c3dhcCBMUlUgYWRkL2RlbCBmdW5jdGlvbnMgdG8gZGlyZWN0bHkgdXNlIHRoZSBnbG9iYWwgenN3YXBfbGlzdF9scnUgaW5zdGVhZCBvZiBwYXNzaW5nIGl0IGFzIGFuIGFyZ3VtZW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgenN3YXAgbG9naWMuIFRvIHRlc3QgdGhpcywgd2UgbmVlZCB0byBlbmFibGUgenN3YXAgYW5kIGZvY3VzIG9uIHRoZSBtYWluIHpzd2FwIGVudHJ5IHBvaW50cyAoenN3YXBfc3RvcmUsIHpzd2FwX2xvYWQsIHpzd2FwX2ludmFsaWRhdGUpIHdoaWNoIHRyaWdnZXIgdGhlIG1vZGlmaWVkIExSVSBvcGVyYXRpb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDEzOjA3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZDg0OTE5ZmM3NmZhYmRkN2ExOWQ1MjRhZjY0ZjYzM2NlZmZjMDcxOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDEgMTM6MDc6MDYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0venN3YXAuYyBiL21tL3pzd2FwLmNcbmluZGV4IDc2MWNkNjk5ZTBhM2UuLmE4MTA1MjRjNzYyMTcgMTAwNjQ0XG4tLS0gYS9tbS96c3dhcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS96c3dhcC5jXG5AQCAtNjY1LDcgJiM0Mzs2NjUsNyBAQCBzdGF0aWMgaW5saW5lIGludCBlbnRyeV90b19uaWQoc3RydWN0IHpzd2FwX2VudHJ5ICplbnRyeSlcbiBcdHJldHVybiBwYWdlX3RvX25pZCh2aXJ0X3RvX3BhZ2UoZW50cnkpKTtcbiB9XG4gXG4tc3RhdGljIHZvaWQgenN3YXBfbHJ1X2FkZChzdHJ1Y3QgbGlzdF9scnUgKmxpc3RfbHJ1LCBzdHJ1Y3QgenN3YXBfZW50cnkgKmVudHJ5KVxuJiM0MztzdGF0aWMgdm9pZCB6c3dhcF9scnVfYWRkKHN0cnVjdCB6c3dhcF9lbnRyeSAqZW50cnkpXG4ge1xuIFx0aW50IG5pZCA9IGVudHJ5X3RvX25pZChlbnRyeSk7XG4gXHRzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2c7XG5AQCAtNjg0LDExICYjNDM7Njg0LDExIEBAIHN0YXRpYyB2b2lkIHpzd2FwX2xydV9hZGQoc3RydWN0IGxpc3RfbHJ1ICpsaXN0X2xydSwgc3RydWN0IHpzd2FwX2VudHJ5ICplbnRyeSlcbiBcdHJjdV9yZWFkX2xvY2soKTtcbiBcdG1lbWNnID0gbWVtX2Nncm91cF9mcm9tX2VudHJ5KGVudHJ5KTtcbiBcdC8qIHdpbGwgYWx3YXlzIHN1Y2NlZWQgKi9cbi1cdGxpc3RfbHJ1X2FkZChsaXN0X2xydSwgXHUwMDI2ZW50cnktXHUwMDNlbHJ1LCBuaWQsIG1lbWNnKTtcbiYjNDM7XHRsaXN0X2xydV9hZGQoXHUwMDI2enN3YXBfbGlzdF9scnUsIFx1MDAyNmVudHJ5LVx1MDAzZWxydSwgbmlkLCBtZW1jZyk7XG4gXHRyY3VfcmVhZF91bmxvY2soKTtcbiB9XG4gXG4tc3RhdGljIHZvaWQgenN3YXBfbHJ1X2RlbChzdHJ1Y3QgbGlzdF9scnUgKmxpc3RfbHJ1LCBzdHJ1Y3QgenN3YXBfZW50cnkgKmVudHJ5KVxuJiM0MztzdGF0aWMgdm9pZCB6c3dhcF9scnVfZGVsKHN0cnVjdCB6c3dhcF9lbnRyeSAqZW50cnkpXG4ge1xuIFx0aW50IG5pZCA9IGVudHJ5X3RvX25pZChlbnRyeSk7XG4gXHRzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2c7XG5AQCAtNjk2LDcgJiM0Mzs2OTYsNyBAQCBzdGF0aWMgdm9pZCB6c3dhcF9scnVfZGVsKHN0cnVjdCBsaXN0X2xydSAqbGlzdF9scnUsIHN0cnVjdCB6c3dhcF9lbnRyeSAqZW50cnkpXG4gXHRyY3VfcmVhZF9sb2NrKCk7XG4gXHRtZW1jZyA9IG1lbV9jZ3JvdXBfZnJvbV9lbnRyeShlbnRyeSk7XG4gXHQvKiB3aWxsIGFsd2F5cyBzdWNjZWVkICovXG4tXHRsaXN0X2xydV9kZWwobGlzdF9scnUsIFx1MDAyNmVudHJ5LVx1MDAzZWxydSwgbmlkLCBtZW1jZyk7XG4mIzQzO1x0bGlzdF9scnVfZGVsKFx1MDAyNnpzd2FwX2xpc3RfbHJ1LCBcdTAwMjZlbnRyeS1cdTAwM2VscnUsIG5pZCwgbWVtY2cpO1xuIFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4gfVxuIFxuQEAgLTc2NCw3ICYjNDM7NzY0LDcgQEAgc3RhdGljIHZvaWQgenN3YXBfZW50cnlfY2FjaGVfZnJlZShzdHJ1Y3QgenN3YXBfZW50cnkgKmVudHJ5KVxuICAqL1xuIHN0YXRpYyB2b2lkIHpzd2FwX2VudHJ5X2ZyZWUoc3RydWN0IHpzd2FwX2VudHJ5ICplbnRyeSlcbiB7XG4tXHR6c3dhcF9scnVfZGVsKFx1MDAyNnpzd2FwX2xpc3RfbHJ1LCBlbnRyeSk7XG4mIzQzO1x0enN3YXBfbHJ1X2RlbChlbnRyeSk7XG4gXHR6c19mcmVlKGVudHJ5LVx1MDAzZXBvb2wtXHUwMDNlenNfcG9vbCwgZW50cnktXHUwMDNlaGFuZGxlKTtcbiBcdHpzd2FwX3Bvb2xfcHV0KGVudHJ5LVx1MDAzZXBvb2wpO1xuIFx0aWYgKGVudHJ5LVx1MDAzZW9iamNnKSB7XG5AQCAtMTQ2MSw3ICYjNDM7MTQ2MSw3IEBAIHN0YXRpYyBib29sIHpzd2FwX3N0b3JlX3BhZ2Uoc3RydWN0IHBhZ2UgKnBhZ2UsXG4gXHRlbnRyeS1cdTAwM2VyZWZlcmVuY2VkID0gdHJ1ZTtcbiBcdGlmIChlbnRyeS1cdTAwM2VsZW5ndGgpIHtcbiBcdFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2ZW50cnktXHUwMDNlbHJ1KTtcbi1cdFx0enN3YXBfbHJ1X2FkZChcdTAwMjZ6c3dhcF9saXN0X2xydSwgZW50cnkpO1xuJiM0MztcdFx0enN3YXBfbHJ1X2FkZChlbnRyeSk7XG4gXHR9XG4gXG4gXHRyZXR1cm4gdHJ1ZTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMzowNzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7WlNXQVAmIzM0OywKICAgICYjMzQ7WlNXQVBfREVGQVVMVF9PTiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3pzd2FwX3N0b3JlJiMzNDssCiAgICAmIzM0O3pzd2FwX2xvYWQmIzM0OywKICAgICYjMzQ7enN3YXBfaW52YWxpZGF0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZWZhY3RvcnMgdGhlIHpzd2FwIExSVSBhZGQvZGVsIGZ1bmN0aW9ucyB0byBkaXJlY3RseSB1c2UgdGhlIGdsb2JhbCB6c3dhcF9saXN0X2xydSBpbnN0ZWFkIG9mIHBhc3NpbmcgaXQgYXMgYW4gYXJndW1lbnQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSB6c3dhcCBsb2dpYy4gVG8gdGVzdCB0aGlzLCB3ZSBuZWVkIHRvIGVuYWJsZSB6c3dhcCBhbmQgZm9jdXMgb24gdGhlIG1haW4genN3YXAgZW50cnkgcG9pbnRzICh6c3dhcF9zdG9yZSwgenN3YXBfbG9hZCwgenN3YXBfaW52YWxpZGF0ZSkgd2hpY2ggdHJpZ2dlciB0aGUgbW9kaWZpZWQgTFJVIG9wZXJhdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkODQ5MTlmYzc2ZmFiZGQ3YTE5ZDUyNGFmNjRmNjMzY2VmZmMwNzE5CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBBdWcgMSAxMzowNzowNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL21tL3pzd2FwLmMgYi9tbS96c3dhcC5jCmluZGV4IDc2MWNkNjk5ZTBhM2UuLmE4MTA1MjRjNzYyMTcgMTAwNjQ0Ci0tLSBhL21tL3pzd2FwLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0venN3YXAuYwpAQCAtNjY1LDcgJiM0Mzs2NjUsNyBAQCBzdGF0aWMgaW5saW5lIGludCBlbnRyeV90b19uaWQoc3RydWN0IHpzd2FwX2VudHJ5ICplbnRyeSkKIAlyZXR1cm4gcGFnZV90b19uaWQodmlydF90b19wYWdlKGVudHJ5KSk7CiB9CiAKLXN0YXRpYyB2b2lkIHpzd2FwX2xydV9hZGQoc3RydWN0IGxpc3RfbHJ1ICpsaXN0X2xydSwgc3RydWN0IHpzd2FwX2VudHJ5ICplbnRyeSkKJiM0MztzdGF0aWMgdm9pZCB6c3dhcF9scnVfYWRkKHN0cnVjdCB6c3dhcF9lbnRyeSAqZW50cnkpCiB7CiAJaW50IG5pZCA9IGVudHJ5X3RvX25pZChlbnRyeSk7CiAJc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnOwpAQCAtNjg0LDExICYjNDM7Njg0LDExIEBAIHN0YXRpYyB2b2lkIHpzd2FwX2xydV9hZGQoc3RydWN0IGxpc3RfbHJ1ICpsaXN0X2xydSwgc3RydWN0IHpzd2FwX2VudHJ5ICplbnRyeSkKIAlyY3VfcmVhZF9sb2NrKCk7CiAJbWVtY2cgPSBtZW1fY2dyb3VwX2Zyb21fZW50cnkoZW50cnkpOwogCS8qIHdpbGwgYWx3YXlzIHN1Y2NlZWQgKi8KLQlsaXN0X2xydV9hZGQobGlzdF9scnUsICZhbXA7ZW50cnktJmd0O2xydSwgbmlkLCBtZW1jZyk7CiYjNDM7CWxpc3RfbHJ1X2FkZCgmYW1wO3pzd2FwX2xpc3RfbHJ1LCAmYW1wO2VudHJ5LSZndDtscnUsIG5pZCwgbWVtY2cpOwogCXJjdV9yZWFkX3VubG9jaygpOwogfQogCi1zdGF0aWMgdm9pZCB6c3dhcF9scnVfZGVsKHN0cnVjdCBsaXN0X2xydSAqbGlzdF9scnUsIHN0cnVjdCB6c3dhcF9lbnRyeSAqZW50cnkpCiYjNDM7c3RhdGljIHZvaWQgenN3YXBfbHJ1X2RlbChzdHJ1Y3QgenN3YXBfZW50cnkgKmVudHJ5KQogewogCWludCBuaWQgPSBlbnRyeV90b19uaWQoZW50cnkpOwogCXN0cnVjdCBtZW1fY2dyb3VwICptZW1jZzsKQEAgLTY5Niw3ICYjNDM7Njk2LDcgQEAgc3RhdGljIHZvaWQgenN3YXBfbHJ1X2RlbChzdHJ1Y3QgbGlzdF9scnUgKmxpc3RfbHJ1LCBzdHJ1Y3QgenN3YXBfZW50cnkgKmVudHJ5KQogCXJjdV9yZWFkX2xvY2soKTsKIAltZW1jZyA9IG1lbV9jZ3JvdXBfZnJvbV9lbnRyeShlbnRyeSk7CiAJLyogd2lsbCBhbHdheXMgc3VjY2VlZCAqLwotCWxpc3RfbHJ1X2RlbChsaXN0X2xydSwgJmFtcDtlbnRyeS0mZ3Q7bHJ1LCBuaWQsIG1lbWNnKTsKJiM0MzsJbGlzdF9scnVfZGVsKCZhbXA7enN3YXBfbGlzdF9scnUsICZhbXA7ZW50cnktJmd0O2xydSwgbmlkLCBtZW1jZyk7CiAJcmN1X3JlYWRfdW5sb2NrKCk7CiB9CiAKQEAgLTc2NCw3ICYjNDM7NzY0LDcgQEAgc3RhdGljIHZvaWQgenN3YXBfZW50cnlfY2FjaGVfZnJlZShzdHJ1Y3QgenN3YXBfZW50cnkgKmVudHJ5KQogICovCiBzdGF0aWMgdm9pZCB6c3dhcF9lbnRyeV9mcmVlKHN0cnVjdCB6c3dhcF9lbnRyeSAqZW50cnkpCiB7Ci0JenN3YXBfbHJ1X2RlbCgmYW1wO3pzd2FwX2xpc3RfbHJ1LCBlbnRyeSk7CiYjNDM7CXpzd2FwX2xydV9kZWwoZW50cnkpOwogCXpzX2ZyZWUoZW50cnktJmd0O3Bvb2wtJmd0O3pzX3Bvb2wsIGVudHJ5LSZndDtoYW5kbGUpOwogCXpzd2FwX3Bvb2xfcHV0KGVudHJ5LSZndDtwb29sKTsKIAlpZiAoZW50cnktJmd0O29iamNnKSB7CkBAIC0xNDYxLDcgJiM0MzsxNDYxLDcgQEAgc3RhdGljIGJvb2wgenN3YXBfc3RvcmVfcGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSwKIAllbnRyeS0mZ3Q7cmVmZXJlbmNlZCA9IHRydWU7CiAJaWYgKGVudHJ5LSZndDtsZW5ndGgpIHsKIAkJSU5JVF9MSVNUX0hFQUQoJmFtcDtlbnRyeS0mZ3Q7bHJ1KTsKLQkJenN3YXBfbHJ1X2FkZCgmYW1wO3pzd2FwX2xpc3RfbHJ1LCBlbnRyeSk7CiYjNDM7CQl6c3dhcF9scnVfYWRkKGVudHJ5KTsKIAl9CiAKIAlyZXR1cm4gdHJ1ZTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTM6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjY3MQoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDIwMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Kipac3dhcCBSZWZhY3RvcmluZyBBc3Nlc3NtZW50KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbW0venN3YXAuY2AuIFNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2g6IHRoZXkmIzM5O3ZlIHJlbW92ZWQgdGhlIGBzdHJ1Y3QgbGlzdF9scnUgKmxpc3RfbHJ1YCBhcmd1bWVudCBmcm9tIGB6c3dhcF9scnVfYWRkYCBhbmQgYHpzd2FwX2xydV9kZWxgLCBoYXJkY29kaW5nIHRoZSB1c2Ugb2YgYCZhbXA7enN3YXBfbGlzdF9scnVgIGluc3RlYWQuIFRoaXMgaXMgY2xlYXJseSBhIHJlZmFjdG9yaW5nLCBidXQgaXQgKmlzKiBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIG1vZGlmaWNhdGlvbiB0byB0aGUgY29kZSBpdHNlbGYsIGhvd2V2ZXIgbWluaW1hbC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGFzc2VzcyBpdHMgZnV6emluZyBwb3RlbnRpYWwuIFpzd2FwIGlzLCBvZiBjb3Vyc2UsIHRoZSBjb21wcmVzc2VkIFJBTSBjYWNoZSBmb3Igc3dhcCBwYWdlcy4gQ29yZSBrZXJuZWwgbG9naWMsIHJpZ2h0PyBEZWZpbml0ZWx5IHNvbWV0aGluZyB0byBjb25zaWRlciBmb3IgZnV6emluZy4KCldhaXQsIGxldCBtZSBqdXN0IGRvdWJsZSBjaGVjayB3aGF0IHRoaXMgaXMgZG9pbmcuLi4gYWgsIGl0JiMzOTtzICpqdXN0KiByZW1vdmluZyBhbiBhcmd1bWVudCBhbmQgdXNpbmcgYSBnbG9iYWwgdmFyaWFibGUgZGlyZWN0bHkuIFN0aWxsLCB0aGF0IHRvdWNoZXMgY29yZSBrZXJuZWwgc3R1ZmYsIGFuZCBhbnkgY2hhbmdlIGhhcyB0aGUgcG90ZW50aWFsIHRvIGludHJvZHVjZSBzdWJ0bGUgaXNzdWVzLgoKQWxyaWdodCwgdGhlIG5leHQgc3RlcCBpcyB0byBuYWlsIGRvd24gdGhlIGNvbmZpZ3VyYXRpb24uIExldCBtZSBzZWUuLi4gSSYjMzk7bGwgY2hlY2sgYG1tL0tjb25maWdgIG9yIHBvc3NpYmx5IGV2ZW4gYG1tL3pzd2FwLmNgIGl0c2VsZi4gWWVwLCB0aGUgY29uZmlnIGZvciBac3dhcCBpcyBgQ09ORklHX1pTV0FQYC4gVGhpcyBpcyBhIGdvb2QgcGxhY2UgdG8gc3RhcnQgbXkgaW52ZXN0aWdhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMzowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgWlNXQVAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vS2NvbmZpZz0xMj1tZW51Y29uZmlnIFNXQVBcbi0tXG5tbS9LY29uZmlnLTIxLVxubW0vS2NvbmZpZzoyMjpjb25maWcgWlNXQVBcbm1tL0tjb25maWctMjMtXHRib29sIFwmIzM0O0NvbXByZXNzZWQgY2FjaGUgZm9yIHN3YXAgcGFnZXNcJiMzNDtcbi0tXG5tbS9LY29uZmlnLTM0LVxubW0vS2NvbmZpZzozNTpjb25maWcgWlNXQVBfREVGQVVMVF9PTlxubW0vS2NvbmZpZy0zNi1cdGJvb2wgXCYjMzQ7RW5hYmxlIHRoZSBjb21wcmVzc2VkIGNhY2hlIGZvciBzd2FwIHBhZ2VzIGJ5IGRlZmF1bHRcJiMzNDtcbi0tXG5tbS9LY29uZmlnLTQ0LVxubW0vS2NvbmZpZzo0NTpjb25maWcgWlNXQVBfU0hSSU5LRVJfREVGQVVMVF9PTlxubW0vS2NvbmZpZy00Ni1cdGJvb2wgXCYjMzQ7U2hyaW5rIHRoZSB6c3dhcCBwb29sIG9uIG1lbW9yeSBwcmVzc3VyZVwmIzM0O1xuLS1cbm1tL0tjb25maWc9NTk9Y2hvaWNlXG4tLVxubW0vS2NvbmZpZy03Ni1cbm1tL0tjb25maWc6Nzc6Y29uZmlnIFpTV0FQX0NPTVBSRVNTT1JfREVGQVVMVF9ERUZMQVRFXG5tbS9LY29uZmlnLTc4LVx0Ym9vbCBcJiMzNDtEZWZsYXRlXCYjMzQ7XG4tLVxubW0vS2NvbmZpZy04Mi1cbm1tL0tjb25maWc6ODM6Y29uZmlnIFpTV0FQX0NPTVBSRVNTT1JfREVGQVVMVF9MWk9cbm1tL0tjb25maWctODQtXHRib29sIFwmIzM0O0xaT1wmIzM0O1xuLS1cbm1tL0tjb25maWctODgtXG5tbS9LY29uZmlnOjg5OmNvbmZpZyBaU1dBUF9DT01QUkVTU09SX0RFRkFVTFRfODQyXG5tbS9LY29uZmlnLTkwLVx0Ym9vbCBcJiMzNDs4NDJcJiMzNDtcbi0tXG5tbS9LY29uZmlnLTk0LVxubW0vS2NvbmZpZzo5NTpjb25maWcgWlNXQVBfQ09NUFJFU1NPUl9ERUZBVUxUX0xaNFxubW0vS2NvbmZpZy05Ni1cdGJvb2wgXCYjMzQ7TFo0XCYjMzQ7XG4tLVxubW0vS2NvbmZpZy0xMDAtXG5tbS9LY29uZmlnOjEwMTpjb25maWcgWlNXQVBfQ09NUFJFU1NPUl9ERUZBVUxUX0xaNEhDXG5tbS9LY29uZmlnLTEwMi1cdGJvb2wgXCYjMzQ7TFo0SENcJiMzNDtcbi0tXG5tbS9LY29uZmlnLTEwNi1cbm1tL0tjb25maWc6MTA3OmNvbmZpZyBaU1dBUF9DT01QUkVTU09SX0RFRkFVTFRfWlNURFxubW0vS2NvbmZpZy0xMDgtXHRib29sIFwmIzM0O3pzdGRcJiMzNDtcbi0tXG5tbS9LY29uZmlnPTExMj1lbmRjaG9pY2Vcbm1tL0tjb25maWctMTEzLVxubW0vS2NvbmZpZzoxMTQ6Y29uZmlnIFpTV0FQX0NPTVBSRVNTT1JfREVGQVVMVFxubW0vS2NvbmZpZy0xMTUtICAgICAgIHN0cmluZ1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDEzOjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3MDYKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiA1MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgWlNXQVAgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyB0aGUgYWN0aXZlIGNvbmZpZ3VyYXRpb24gaXMgY3VycmVudGx5IHNldCB0byBgWlNXQVBgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtJcyB0aGlzIHRoZSAqb25seSogY29uZmlndXJhdGlvbiBvcHRpb24sIG9yIGFyZSB0aGVyZSBvdGhlcnMgd2Ugc2hvdWxkIGJlIGF3YXJlIG9mPyYjMzQ7IExldCYjMzk7cyBkaWcgZGVlcGVyLiBUaGUgcG90ZW50aWFsIGZvciBhIHNldHRpbmcgY2FsbGVkIGBaU1dBUF9ERUZBVUxUX09OYCBoYXMgbWUgaW50cmlndWVkLiBFbmFibGluZyBgWlNXQVBgIGJ5IGRlZmF1bHQgd291bGQgc2ltcGxpZnkgdGhpbmdzIGZvciBtYW55IHVzZXJzLCBzbyBJJiMzOTttIGludGVyZXN0ZWQgaW4gdW5kZXJzdGFuZGluZyB0aGUgaW1wbGljYXRpb25zIG9mIHRoYXQuIEJlZm9yZSBJIGNvbW1pdCB0byBhbnkgY2hhbmdlcywgSSBuZWVkIHRvIHRob3JvdWdobHkgdW5kZXJzdGFuZCB0aGlzLiBJdCYjMzk7cyB0aW1lIHRvIGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMgb2YgYFpTV0FQYC4gV2hhdCBvdGhlciBjb21wb25lbnRzIG9yIGZlYXR1cmVzIHJlbHkgb24sIG9yIGFyZSByZWxpZWQgdXBvbiBieSwgdGhpcyBzZXR0aW5nPyBVbmRlcnN0YW5kaW5nIHRoZSBjb21wbGV0ZSBwaWN0dXJlIGlzIGNyaXRpY2FsIGJlZm9yZSBtYWtpbmcgYSBkZWNpc2lvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMzowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgWlNXQVAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL0tjb25maWc9MTI9bWVudWNvbmZpZyBTV0FQXG4tLVxubW0vS2NvbmZpZy0yMS1cbm1tL0tjb25maWc6MjI6Y29uZmlnIFpTV0FQXG5tbS9LY29uZmlnLTIzLVx0Ym9vbCBcJiMzNDtDb21wcmVzc2VkIGNhY2hlIGZvciBzd2FwIHBhZ2VzXCYjMzQ7XG4tLVxubW0vS2NvbmZpZy0zNC1cbm1tL0tjb25maWc6MzU6Y29uZmlnIFpTV0FQX0RFRkFVTFRfT05cbm1tL0tjb25maWctMzYtXHRib29sIFwmIzM0O0VuYWJsZSB0aGUgY29tcHJlc3NlZCBjYWNoZSBmb3Igc3dhcCBwYWdlcyBieSBkZWZhdWx0XCYjMzQ7XG4tLVxubW0vS2NvbmZpZy00NC1cbm1tL0tjb25maWc6NDU6Y29uZmlnIFpTV0FQX1NIUklOS0VSX0RFRkFVTFRfT05cbm1tL0tjb25maWctNDYtXHRib29sIFwmIzM0O1NocmluayB0aGUgenN3YXAgcG9vbCBvbiBtZW1vcnkgcHJlc3N1cmVcJiMzNDtcbi0tXG5tbS9LY29uZmlnPTU5PWNob2ljZVxuLS1cbm1tL0tjb25maWctNzYtXG5tbS9LY29uZmlnOjc3OmNvbmZpZyBaU1dBUF9DT01QUkVTU09SX0RFRkFVTFRfREVGTEFURVxubW0vS2NvbmZpZy03OC1cdGJvb2wgXCYjMzQ7RGVmbGF0ZVwmIzM0O1xuLS1cbm1tL0tjb25maWctODItXG5tbS9LY29uZmlnOjgzOmNvbmZpZyBaU1dBUF9DT01QUkVTU09SX0RFRkFVTFRfTFpPXG5tbS9LY29uZmlnLTg0LVx0Ym9vbCBcJiMzNDtMWk9cJiMzNDtcbi0tXG5tbS9LY29uZmlnLTg4LVxubW0vS2NvbmZpZzo4OTpjb25maWcgWlNXQVBfQ09NUFJFU1NPUl9ERUZBVUxUXzg0MlxubW0vS2NvbmZpZy05MC1cdGJvb2wgXCYjMzQ7ODQyXCYjMzQ7XG4tLVxubW0vS2NvbmZpZy05NC1cbm1tL0tjb25maWc6OTU6Y29uZmlnIFpTV0FQX0NPTVBSRVNTT1JfREVGQVVMVF9MWjRcbm1tL0tjb25maWctOTYtXHRib29sIFwmIzM0O0xaNFwmIzM0O1xuLS1cbm1tL0tjb25maWctMTAwLVxubW0vS2NvbmZpZzoxMDE6Y29uZmlnIFpTV0FQX0NPTVBSRVNTT1JfREVGQVVMVF9MWjRIQ1xubW0vS2NvbmZpZy0xMDItXHRib29sIFwmIzM0O0xaNEhDXCYjMzQ7XG4tLVxubW0vS2NvbmZpZy0xMDYtXG5tbS9LY29uZmlnOjEwNzpjb25maWcgWlNXQVBfQ09NUFJFU1NPUl9ERUZBVUxUX1pTVERcbm1tL0tjb25maWctMTA4LVx0Ym9vbCBcJiMzNDt6c3RkXCYjMzQ7XG4tLVxubW0vS2NvbmZpZz0xMTI9ZW5kY2hvaWNlXG5tbS9LY29uZmlnLTExMy1cbm1tL0tjb25maWc6MTE0OmNvbmZpZyBaU1dBUF9DT01QUkVTU09SX0RFRkFVTFRcbm1tL0tjb25maWctMTE1LSAgICAgICBzdHJpbmdcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMzowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDgxCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgS2VybmVsIENvbmZpZ3VyYXRpb24gTGFuZHNjYXBlKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHNvbWV0aGluZyByZWxhdGVkIHRvIGtlcm5lbCBjb25maWd1cmF0aW9uLiBMZXQmIzM5O3Mgc3RhcnQgZGlnZ2luZyBpbnRvIHRoZSBgbW0vS2NvbmZpZ2AgZmlsZS4gSSYjMzk7bSBnb2luZyB0byBmb2N1cyBteSBpbml0aWFsIGF0dGVudGlvbiBhcm91bmQgbGluZSAyMiDigJMgdGhhdCYjMzk7cyBvZnRlbiBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIGEgaGlnaC1sZXZlbCBvdmVydmlldyBpbiB0aGVzZSBLY29uZmlnIGZpbGVzLiBUaGUgc3RydWN0dXJlJiMzOTtzIHVzdWFsbHkgcHJldHR5IGNvbnNpc3RlbnQsIHNvIEkmIzM5O20gZXhwZWN0aW5nIHRvIGZpbmQgZWl0aGVyIGEgbmV3IG9wdGlvbiBkZWZpbml0aW9uLCBhIG1lbnUgZW50cnksIG9yIHBlcmhhcHMgYSBjb25kaXRpb25hbCBpbmNsdWRlIHRoYXQgc2V0cyB0aGUgc3RhZ2UgZm9yIGEgcmVsYXRlZCBjb25maWd1cmF0aW9uIGZlYXR1cmUuIExpbmUgMjIgc3BlY2lmaWNhbGx5IG1pZ2h0IGJlIHJlbGV2YW50IHRvIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBzdWJzeXN0ZW0gSSYjMzk7bSBmb2N1c2luZyBvbi4gSSYjMzk7bGwgbWVudGFsbHkgbm90ZSB0aGUgY29udGV4dCBhcm91bmQgdGhhdCBsaW5lIOKAkyBhbnkgc3Vycm91bmRpbmcgY29tbWVudHMgb3Igb3RoZXIgS2NvbmZpZyBvcHRpb25zIOKAkyB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZSBhbmQgYW55IGRlcGVuZGVuY2llcy4gRnJvbSB0aGVyZSwgSSBjYW4gZGVjaWRlIGlmIHRoYXQmIzM5O3MgdGhlIGNvcnJlY3QgZmlsZSwgb3IgaWYgSSBzaG91bGQgbW92ZSBvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMzowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O21tL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDE1Olx0XHRkZWZhdWx0IHlcbiAgMTY6XHRcdGhlbHBcbiAgMTc6XHRcdCAgVGhpcyBvcHRpb24gYWxsb3dzIHlvdSB0byBjaG9vc2Ugd2hldGhlciB5b3Ugd2FudCB0byBoYXZlIHN1cHBvcnRcbiAgMTg6XHRcdCAgZm9yIHNvIGNhbGxlZCBzd2FwIGRldmljZXMgb3Igc3dhcCBmaWxlcyBpbiB5b3VyIGtlcm5lbCB0aGF0IGFyZVxuICAxOTpcdFx0ICB1c2VkIHRvIHByb3ZpZGUgbW9yZSB2aXJ0dWFsIG1lbW9yeSB0aGFuIHRoZSBhY3R1YWwgUkFNIHByZXNlbnRcbiAgMjA6XHRcdCAgaW4geW91ciBjb21wdXRlci4gIElmIHVuc3VyZSBzYXkgWS5cbiAgMjE6XHRcbiAgMjI6XHRjb25maWcgWlNXQVBcbiAgMjM6XHRcdGJvb2wgXCYjMzQ7Q29tcHJlc3NlZCBjYWNoZSBmb3Igc3dhcCBwYWdlc1wmIzM0O1xuICAyNDpcdFx0ZGVwZW5kcyBvbiBTV0FQXG4gIDI1Olx0XHRzZWxlY3QgQ1JZUFRPXG4gIDI2Olx0XHRzZWxlY3QgWlNNQUxMT0NcbiAgMjc6XHRcdGhlbHBcbiAgMjg6XHRcdCAgQSBsaWdodHdlaWdodCBjb21wcmVzc2VkIGNhY2hlIGZvciBzd2FwIHBhZ2VzLiAgSXQgdGFrZXNcbiAgMjk6XHRcdCAgcGFnZXMgdGhhdCBhcmUgaW4gdGhlIHByb2Nlc3Mgb2YgYmVpbmcgc3dhcHBlZCBvdXQgYW5kIGF0dGVtcHRzIHRvXG4gIDMwOlx0XHQgIGNvbXByZXNzIHRoZW0gaW50byBhIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCBSQU0tYmFzZWQgbWVtb3J5IHBvb2wuXG4gIDMxOlx0XHQgIFRoaXMgY2FuIHJlc3VsdCBpbiBhIHNpZ25pZmljYW50IEkvTyByZWR1Y3Rpb24gb24gc3dhcCBkZXZpY2UgYW5kLFxuICAzMjpcdFx0ICBpbiB0aGUgY2FzZSB3aGVyZSBkZWNvbXByZXNzaW5nIGZyb20gUkFNIGlzIGZhc3RlciB0aGFuIHN3YXAgZGV2aWNlXG4gIDMzOlx0XHQgIHJlYWRzLCBjYW4gYWxzbyBpbXByb3ZlIHdvcmtsb2FkIHBlcmZvcm1hbmNlLlxuICAzNDpcdFxuICAzNTpcdGNvbmZpZyBaU1dBUF9ERUZBVUxUX09OXG4gIDM2Olx0XHRib29sIFwmIzM0O0VuYWJsZSB0aGUgY29tcHJlc3NlZCBjYWNoZSBmb3Igc3dhcCBwYWdlcyBieSBkZWZhdWx0XCYjMzQ7XG4gIDM3Olx0XHRkZXBlbmRzIG9uIFpTV0FQXG4gIDM4Olx0XHRoZWxwXG4gIDM5Olx0XHQgIElmIHNlbGVjdGVkLCB0aGUgY29tcHJlc3NlZCBjYWNoZSBmb3Igc3dhcCBwYWdlcyB3aWxsIGJlIGVuYWJsZWRcbiAgNDA6XHRcdCAgYXQgYm9vdCwgb3RoZXJ3aXNlIGl0IHdpbGwgYmUgZGlzYWJsZWQuXG4gIDQxOlx0XG4gIDQyOlx0XHQgIFRoZSBzZWxlY3Rpb24gbWFkZSBoZXJlIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHVzaW5nIHRoZSBrZXJuZWxcbiAgNDM6XHRcdCAgY29tbWFuZCBsaW5lICYjMzk7enN3YXAuZW5hYmxlZD0mIzM5OyBvcHRpb24uXG4gIDQ0Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTM6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTE1MAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDE1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFpTV0FQIE1vZHVsZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBaU1dBUCBjb2RlIGFuZCBpbW1lZGlhdGVseSBzZWUgd2UgbmVlZCB0byBjb25zaWRlciBgWlNXQVBgLCBgWlNXQVBfREVGQVVMVF9PTmAsIGFuZCBgU1dBUGAg4oCTIHRob3NlIGFyZSB0aGUga2V5IGNvbnN0YW50cyBvciBkZWZpbml0aW9ucyBpbiBwbGF5LiBUaGUgcGF0Y2ggaXMgdG91Y2hpbmcgYHpzd2FwX2xydV9hZGRgIGFuZCBgenN3YXBfbHJ1X2RlbGAsIHdoaWNoIGFyZSBzdGF0aWMgZnVuY3Rpb25zLiBTdGF0aWMgZnVuY3Rpb25zIGFyZSwgYnkgdGhlaXIgbmF0dXJlLCBsb2NhbGl6ZWQsIG1ha2luZyB0aGVtIGVhc2llciB0byB0cmFjZS4gVGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHBpbnBvaW50IHRoZSBjYWxsZXJzIG9mIHRoZXNlIGZ1bmN0aW9ucy4gS25vd2luZyB0aG9zZSBjYWxsZXJzIGlzIGdvaW5nIHRvIGZvY3VzIG15IGFuYWx5c2lzLCBzaG93IG1lIHdoYXQgdGhlIGFmZmVjdGVkIGNvbnRyb2wgZmxvdyBpcy4KCkFoLCBoZXJlIHdlIGdvLCBgenN3YXBfZW50cnlfZnJlZWAgY2FsbHMgYHpzd2FwX2xydV9kZWxgIGFuZCBgenN3YXBfc3RvcmVfcGFnZWAgY2FsbHMgYHpzd2FwX2xydV9hZGRgLiBXYWl0IGEgbWludXRlLCBJIHRoaW5rIGB6c3dhcF9zdG9yZV9wYWdlYCBpcyBzdGF0aWMsIGlzbiYjMzk7dCBpdD8gQmV0dGVyIGRvdWJsZS1jaGVjayB0aGF0IGJ5IGhlYWRpbmcgb3ZlciB0byBgbW0venN3YXAuY2AgdG8gY29uZmlybSBteSBzdXNwaWNpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDEzOjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3pzd2FwX3N0b3JlX3BhZ2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS96c3dhcC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL3pzd2FwLmM9MTMwNj1zdGF0aWMgdm9pZCBzaHJpbmtfd29ya2VyKHN0cnVjdCB3b3JrX3N0cnVjdCAqdylcbi0tXG5tbS96c3dhcC5jLTEzOTUtXG5tbS96c3dhcC5jOjEzOTY6c3RhdGljIGJvb2wgenN3YXBfc3RvcmVfcGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSxcbm1tL3pzd2FwLmMtMTM5Ny1cdFx0XHQgICAgIHN0cnVjdCBvYmpfY2dyb3VwICpvYmpjZyxcbi0tXG5tbS96c3dhcC5jPTE0NzY9Ym9vbCB6c3dhcF9zdG9yZShzdHJ1Y3QgZm9saW8gKmZvbGlvKVxuLS1cbm1tL3pzd2FwLmMtMTUyMC1cbm1tL3pzd2FwLmM6MTUyMTpcdFx0aWYgKCF6c3dhcF9zdG9yZV9wYWdlKHBhZ2UsIG9iamNnLCBwb29sKSlcbm1tL3pzd2FwLmMtMTUyMi1cdFx0XHRnb3RvIHB1dF9wb29sO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMzowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NzUwCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZyBhcyBhbiBleHBlcnQ6CgoqKkRpdmluZyBpbnRvIHRoZSBac3dhcCBQYWdlIEhhbmRsaW5nKioKClJpZ2h0LCBzbyBgenN3YXBfc3RvcmVgIGlzIGNhbGxpbmcgYHpzd2FwX3N0b3JlX3BhZ2VgLiBNYWtlcyBzZW5zZSwgdGhhdCYjMzk7cyB0aGUgY29yZSBvZiBob3cgdGhlIGRhdGEgZ2V0cyBwdXQgaW50byB0aGUgY29tcHJlc3NlZCBjYWNoZS4gTm90IHN0YXRpYywgaHVoPyBPa2F5LCBJJiMzOTtsbCBrZWVwIHRoYXQgaW4gbWluZC4gVGhhdCBpbXBsaWVzIGl0IG1pZ2h0IGJlIHVzZWQgZnJvbSBhIGZldyBkaWZmZXJlbnQgcGxhY2VzIHdpdGhpbiB0aGUgenN3YXAgYXJjaGl0ZWN0dXJlLiBOb3csIGxldCYjMzk7cyBwaXZvdCBhbmQgdGFrZSBhIGxvb2sgYXQgYHpzd2FwX2VudHJ5X2ZyZWVgLiBVbmRlcnN0YW5kaW5nIGhvdyBlbnRyaWVzIGFyZSBmcmVlZCBpcyBjcml0aWNhbCBmb3IgYSBwZXJmb3JtYW50IGNhY2hlOyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbGlmZWN5Y2xlIG9mIHRoZXNlIGVudHJpZXMgZnJvbSBzdG9yYWdlIHRvIGRlYWxsb2NhdGlvbi4gTGV0JiMzOTtzIHNlZSBob3cgdGhhdCBpbnRlZ3JhdGVzIHdpdGggdGhlIHN0b3JpbmcgcHJvY2Vzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTM6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7enN3YXBfZW50cnlfZnJlZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL3pzd2FwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0venN3YXAuYz03NTY9c3RhdGljIHZvaWQgenN3YXBfZW50cnlfY2FjaGVfZnJlZShzdHJ1Y3QgenN3YXBfZW50cnkgKmVudHJ5KVxuLS1cbm1tL3pzd2FwLmMtNzY0LSAqL1xubW0venN3YXAuYzo3NjU6c3RhdGljIHZvaWQgenN3YXBfZW50cnlfZnJlZShzdHJ1Y3QgenN3YXBfZW50cnkgKmVudHJ5KVxubW0venN3YXAuYy03NjYte1xuLS1cbm1tL3pzd2FwLmM9OTg3PXN0YXRpYyBpbnQgenN3YXBfd3JpdGViYWNrX2VudHJ5KHN0cnVjdCB6c3dhcF9lbnRyeSAqZW50cnksXG4tLVxubW0venN3YXAuYy0xMDQyLVxubW0venN3YXAuYzoxMDQzOlx0enN3YXBfZW50cnlfZnJlZShlbnRyeSk7XG5tbS96c3dhcC5jLTEwNDQtXG4tLVxubW0venN3YXAuYz0xMzk2PXN0YXRpYyBib29sIHpzd2FwX3N0b3JlX3BhZ2Uoc3RydWN0IHBhZ2UgKnBhZ2UsXG4tLVxubW0venN3YXAuYy0xNDI5LVx0aWYgKG9sZClcbm1tL3pzd2FwLmM6MTQzMDpcdFx0enN3YXBfZW50cnlfZnJlZShvbGQpO1xubW0venN3YXAuYy0xNDMxLVxuLS1cbm1tL3pzd2FwLmMtMTQzNS1cdCAqIGNoYXJnZSB6c3dhcCBtZW1vcnksIGFuZCBpbmNyZW1lbnQgenN3YXBfc3RvcmVkX3BhZ2VzLlxubW0venN3YXAuYzoxNDM2Olx0ICogVGhlIG9wcG9zaXRlIGFjdGlvbnMgd2lsbCBiZSBwZXJmb3JtZWQgYnkgenN3YXBfZW50cnlfZnJlZSgpXG5tbS96c3dhcC5jLTE0MzctXHQgKiB3aGVuIHRoZSBlbnRyeSBpcyByZW1vdmVkIGZyb20gdGhlIHRyZWUuXG4tLVxubW0venN3YXAuYz0xNDc2PWJvb2wgenN3YXBfc3RvcmUoc3RydWN0IGZvbGlvICpmb2xpbylcbi0tXG5tbS96c3dhcC5jLTE1NTQtXHRcdFx0aWYgKGVudHJ5KVxubW0venN3YXAuYzoxNTU1Olx0XHRcdFx0enN3YXBfZW50cnlfZnJlZShlbnRyeSk7XG5tbS96c3dhcC5jLTE1NTYtXHRcdH1cbi0tXG5tbS96c3dhcC5jPTE1ODI9aW50IHpzd2FwX2xvYWQoc3RydWN0IGZvbGlvICpmb2xpbylcbi0tXG5tbS96c3dhcC5jLTE2MjgtXHR4YV9lcmFzZSh0cmVlLCBvZmZzZXQpO1xubW0venN3YXAuYzoxNjI5Olx0enN3YXBfZW50cnlfZnJlZShlbnRyeSk7XG5tbS96c3dhcC5jLTE2MzAtXG4tLVxubW0venN3YXAuYz0xNjM1PXZvaWQgenN3YXBfaW52YWxpZGF0ZShzd3BfZW50cnlfdCBzd3ApXG4tLVxubW0venN3YXAuYy0xNjQ1LVx0aWYgKGVudHJ5KVxubW0venN3YXAuYzoxNjQ2Olx0XHR6c3dhcF9lbnRyeV9mcmVlKGVudHJ5KTtcbm1tL3pzd2FwLmMtMTY0Ny19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDEzOjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY1OTQKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIG15IG93biB0aGlua2luZyBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB6c3dhcCBGdW5jdGlvbiBTY29wZSoqCgpSaWdodCwgbGV0JiMzOTtzIHRha2UgYSBsb29rIGF0IHRoZXNlIGB6c3dhcF9zdG9yZWAsIGB6c3dhcF9sb2FkYCwgYW5kIGB6c3dhcF9pbnZhbGlkYXRlYCBmdW5jdGlvbnMuIFRoZSBmYWN0IHRoYXQgdGhleSBhcmVuJiMzOTt0IGRlY2xhcmVkIGFzIGBzdGF0aWNgIGltbWVkaWF0ZWx5IGZsYWdzIHRoZW0gYXMgcG90ZW50aWFsIGNhbmRpZGF0ZXMgZm9yIGJyb2FkZXIgdXNlIGJleW9uZCB0aGVpciBpbW1lZGlhdGUgc291cmNlIGZpbGUuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZXkmIzM5O3JlIGFjdHVhbGx5ICp1c2VkKiBhbmQgaWYgdGhleSYjMzk7cmUgcGFydCBvZiB0aGUgcHVibGljIEFQSSBvciBqdXN0IGludGVybmFsIG1tLyBpbXBsZW1lbnRhdGlvbnMuIFNvLCBJIG5lZWQgdG8gdmVyaWZ5IGlmIHRoZXkgYXJlIGV4cG9ydGVkIHdpdGggdGhlIGBFWFBPUlRfU1lNQk9MYCBtYWNybywgaW5kaWNhdGluZyB0aGF0IG90aGVyIG1vZHVsZXMgb3IgcGFydHMgb2YgdGhlIGtlcm5lbCBjb3VsZCBiZSB1c2luZyB0aGVtLCBvciBpZiB0aGV5JiMzOTtyZSBzY29wZWQgc3RyaWN0bHkgd2l0aGluIHRoZSBgbW0vYCBkaXJlY3RvcnksIHdoaWNoIHdvdWxkIHN1Z2dlc3QgYW4gaW50ZXJuYWwtb25seSBpbXBsZW1lbnRhdGlvbi4gVGltZSB0byBkaWcgaW50byB0aGUgY29kZSBhbmQgc2VlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMzowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt6c3dhcF9zdG9yZXx6c3dhcF9sb2FkfHpzd2FwX2ludmFsaWRhdGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vcGFnZV9pby5jPTI1MT1pbnQgc3dhcF93cml0ZW91dChzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzdHJ1Y3Qgc3dhcF9pb2NiICoqc3dhcF9wbHVnKVxuLS1cbm1tL3BhZ2VfaW8uYy0yODQtXG5tbS9wYWdlX2lvLmM6Mjg1Olx0aWYgKHpzd2FwX3N0b3JlKGZvbGlvKSkge1xubW0vcGFnZV9pby5jLTI4Ni1cdFx0Y291bnRfbXRocF9zdGF0KGZvbGlvX29yZGVyKGZvbGlvKSwgTVRIUF9TVEFUX1pTV1BPVVQpO1xuLS1cbm1tL3BhZ2VfaW8uYz02NjE9dm9pZCBzd2FwX3JlYWRfZm9saW8oc3RydWN0IGZvbGlvICpmb2xpbywgc3RydWN0IHN3YXBfaW9jYiAqKnBsdWcpXG4tLVxubW0vcGFnZV9pby5jLTY4OC1cbm1tL3BhZ2VfaW8uYzo2ODk6XHRpZiAoenN3YXBfbG9hZChmb2xpbykgIT0gLUVOT0VOVClcbm1tL3BhZ2VfaW8uYy02OTAtXHRcdGdvdG8gZmluaXNoO1xuLS1cbm1tL3N3YXBmaWxlLmM9MTMxNj1zdGF0aWMgdm9pZCBzd2FwX3JhbmdlX2ZyZWUoc3RydWN0IHN3YXBfaW5mb19zdHJ1Y3QgKnNpLCB1bnNpZ25lZCBsb25nIG9mZnNldCxcbi0tXG5tbS9zd2FwZmlsZS5jLTEzMjMtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBucl9lbnRyaWVzOyBpJiM0MzsmIzQzOylcbm1tL3N3YXBmaWxlLmM6MTMyNDpcdFx0enN3YXBfaW52YWxpZGF0ZShzd3BfZW50cnkoc2ktXHUwMDNldHlwZSwgb2Zmc2V0ICYjNDM7IGkpKTtcbm1tL3N3YXBmaWxlLmMtMTMyNS1cbi0tXG5tbS96c3dhcC5jLTQ2LS8qIFRoZSBudW1iZXIgb2YgcGFnZXMgY3VycmVudGx5IHN0b3JlZCBpbiB6c3dhcCAqL1xubW0venN3YXAuYzo0NzphdG9taWNfbG9uZ190IHpzd2FwX3N0b3JlZF9wYWdlcyA9IEFUT01JQ19MT05HX0lOSVQoMCk7XG5tbS96c3dhcC5jLTQ4LS8qIFRoZSBudW1iZXIgb2YgaW5jb21wcmVzc2libGUgcGFnZXMgY3VycmVudGx5IHN0b3JlZCBpbiB6c3dhcCAqL1xubW0venN3YXAuYzo0OTpzdGF0aWMgYXRvbWljX2xvbmdfdCB6c3dhcF9zdG9yZWRfaW5jb21wcmVzc2libGVfcGFnZXMgPSBBVE9NSUNfTE9OR19JTklUKDApO1xubW0venN3YXAuYy01MC1cbi0tXG5tbS96c3dhcC5jPTc2NT1zdGF0aWMgdm9pZCB6c3dhcF9lbnRyeV9mcmVlKHN0cnVjdCB6c3dhcF9lbnRyeSAqZW50cnkpXG4tLVxubW0venN3YXAuYy03NzQtXHRpZiAoZW50cnktXHUwMDNlbGVuZ3RoID09IFBBR0VfU0laRSlcbm1tL3pzd2FwLmM6Nzc1Olx0XHRhdG9taWNfbG9uZ19kZWMoXHUwMDI2enN3YXBfc3RvcmVkX2luY29tcHJlc3NpYmxlX3BhZ2VzKTtcbm1tL3pzd2FwLmMtNzc2LVx0enN3YXBfZW50cnlfY2FjaGVfZnJlZShlbnRyeSk7XG5tbS96c3dhcC5jOjc3NzpcdGF0b21pY19sb25nX2RlYyhcdTAwMjZ6c3dhcF9zdG9yZWRfcGFnZXMpO1xubW0venN3YXAuYy03NzgtfVxuLS1cbm1tL3pzd2FwLmM9OTI0PXN0YXRpYyBib29sIHpzd2FwX2RlY29tcHJlc3Moc3RydWN0IHpzd2FwX2VudHJ5ICplbnRyeSwgc3RydWN0IGZvbGlvICpmb2xpbylcbi0tXG5tbS96c3dhcC5jLTk4MS0gKiB0byB0aGUgc3dhcCBkZXZpY2UuICBXZSBhcmUgYmFzaWNhbGx5IHJlc3VtaW5nIHRoZSBzYW1lIHN3YXBcbm1tL3pzd2FwLmM6OTgyOiAqIHdyaXRlYmFjayBwYXRoIHRoYXQgd2FzIGludGVyY2VwdGVkIHdpdGggdGhlIHpzd2FwX3N0b3JlKClcbm1tL3pzd2FwLmMtOTgzLSAqIGluIHRoZSBmaXJzdCBwbGFjZS4gIEFmdGVyIHRoZSBmb2xpbyBoYXMgYmVlbiBkZWNvbXByZXNzZWQgaW50b1xuLS1cbm1tL3pzd2FwLmM9MTE5MD1zdGF0aWMgdW5zaWduZWQgbG9uZyB6c3dhcF9zaHJpbmtlcl9jb3VudChzdHJ1Y3Qgc2hyaW5rZXIgKnNocmlua2VyLFxuLS1cbm1tL3pzd2FwLmMtMTIyNC1cdFx0bnJfYmFja2luZyA9IHpzd2FwX3RvdGFsX3BhZ2VzKCk7XG5tbS96c3dhcC5jOjEyMjU6XHRcdG5yX3N0b3JlZCA9IGF0b21pY19sb25nX3JlYWQoXHUwMDI2enN3YXBfc3RvcmVkX3BhZ2VzKTtcbm1tL3pzd2FwLmMtMTIyNi1cdH1cbi0tXG5tbS96c3dhcC5jPTEzMDY9c3RhdGljIHZvaWQgc2hyaW5rX3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKncpXG4tLVxubW0venN3YXAuYy0xMzk1LVxubW0venN3YXAuYzoxMzk2OnN0YXRpYyBib29sIHpzd2FwX3N0b3JlX3BhZ2Uoc3RydWN0IHBhZ2UgKnBhZ2UsXG5tbS96c3dhcC5jLTEzOTctXHRcdFx0ICAgICBzdHJ1Y3Qgb2JqX2Nncm91cCAqb2JqY2csXG4tLVxubW0venN3YXAuYy0xNDM0LVx0ICogbm8gZnVydGhlciBwb3NzaWJpbGl0eSBvZiBmYWlsdXJlLiBHcmFiIHJlZnMgdG8gdGhlIHBvb2wgYW5kIG9iamNnLFxubW0venN3YXAuYzoxNDM1Olx0ICogY2hhcmdlIHpzd2FwIG1lbW9yeSwgYW5kIGluY3JlbWVudCB6c3dhcF9zdG9yZWRfcGFnZXMuXG5tbS96c3dhcC5jLTE0MzYtXHQgKiBUaGUgb3Bwb3NpdGUgYWN0aW9ucyB3aWxsIGJlIHBlcmZvcm1lZCBieSB6c3dhcF9lbnRyeV9mcmVlKClcbi0tXG5tbS96c3dhcC5jLTE0NDMtXHR9XG5tbS96c3dhcC5jOjE0NDQ6XHRhdG9taWNfbG9uZ19pbmMoXHUwMDI2enN3YXBfc3RvcmVkX3BhZ2VzKTtcbm1tL3pzd2FwLmMtMTQ0NS1cdGlmIChlbnRyeS1cdTAwM2VsZW5ndGggPT0gUEFHRV9TSVpFKVxubW0venN3YXAuYzoxNDQ2Olx0XHRhdG9taWNfbG9uZ19pbmMoXHUwMDI2enN3YXBfc3RvcmVkX2luY29tcHJlc3NpYmxlX3BhZ2VzKTtcbm1tL3pzd2FwLmMtMTQ0Ny1cbi0tXG5tbS96c3dhcC5jLTE0NzUtXG5tbS96c3dhcC5jOjE0NzY6Ym9vbCB6c3dhcF9zdG9yZShzdHJ1Y3QgZm9saW8gKmZvbGlvKVxubW0venN3YXAuYy0xNDc3LXtcbi0tXG5tbS96c3dhcC5jLTE1MjAtXG5tbS96c3dhcC5jOjE1MjE6XHRcdGlmICghenN3YXBfc3RvcmVfcGFnZShwYWdlLCBvYmpjZywgcG9vbCkpXG5tbS96c3dhcC5jLTE1MjItXHRcdFx0Z290byBwdXRfcG9vbDtcbi0tXG5tbS96c3dhcC5jLTE1NjItLyoqXG5tbS96c3dhcC5jOjE1NjM6ICogenN3YXBfbG9hZCgpIC0gbG9hZCBhIGZvbGlvIGZyb20genN3YXBcbm1tL3pzd2FwLmMtMTU2NC0gKiBAZm9saW86IGZvbGlvIHRvIGxvYWRcbi0tXG5tbS96c3dhcC5jLTE1ODEtICovXG5tbS96c3dhcC5jOjE1ODI6aW50IHpzd2FwX2xvYWQoc3RydWN0IGZvbGlvICpmb2xpbylcbm1tL3pzd2FwLmMtMTU4My17XG4tLVxubW0venN3YXAuYy0xNjM0LVxubW0venN3YXAuYzoxNjM1OnZvaWQgenN3YXBfaW52YWxpZGF0ZShzd3BfZW50cnlfdCBzd3ApXG5tbS96c3dhcC5jLTE2MzYte1xuLS1cbm1tL3pzd2FwLmM9MTcwMT1zdGF0aWMgaW50IGRlYnVnZnNfZ2V0X3N0b3JlZF9wYWdlcyh2b2lkICpkYXRhLCB1NjQgKnZhbClcbm1tL3pzd2FwLmMtMTcwMi17XG5tbS96c3dhcC5jOjE3MDM6XHQqdmFsID0gYXRvbWljX2xvbmdfcmVhZChcdTAwMjZ6c3dhcF9zdG9yZWRfcGFnZXMpO1xubW0venN3YXAuYy0xNzA0LVx0cmV0dXJuIDA7XG4tLVxubW0venN3YXAuYz0xNzA4PXN0YXRpYyBpbnQgZGVidWdmc19nZXRfc3RvcmVkX2luY29tcHJlc3NpYmxlX3BhZ2VzKHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxubW0venN3YXAuYy0xNzA5LXtcbm1tL3pzd2FwLmM6MTcxMDpcdCp2YWwgPSBhdG9taWNfbG9uZ19yZWFkKFx1MDAyNnpzd2FwX3N0b3JlZF9pbmNvbXByZXNzaWJsZV9wYWdlcyk7XG5tbS96c3dhcC5jLTE3MTEtXHRyZXR1cm4gMDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTM6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODQ2MgoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDM4NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgWnN3YXAgRW50cnkgUG9pbnRzIGZvciBGdXp6aW5nKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgdG8gZWZmZWN0aXZlbHkgZnV6eiB0aGUgenN3YXAgc3Vic3lzdGVtLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB0YXJnZXQgdGhlIGNvcmUgZW50cnkgcG9pbnRzOiBgenN3YXBfc3RvcmVgLCBgenN3YXBfbG9hZGAsIGFuZCBgenN3YXBfaW52YWxpZGF0ZWAuIFRoZXNlIGFyZSB0aGUgZnVuY3Rpb25zIHRoYXQgaGFuZGxlIHRoZSBmdW5kYW1lbnRhbCBvcGVyYXRpb25zIG9mIHpzd2FwLCBuYW1lbHkgc3RvcmluZywgcmV0cmlldmluZywgYW5kIGludmFsaWRhdGluZyBwYWdlcy4gVGhleSYjMzk7cmUgY2FsbGVkIGZyb20gdGhlIGtleSBzd2FwIG9wZXJhdGlvbnM6IGBzd2FwX3dyaXRlb3V0YCwgYHN3YXBfcmVhZF9mb2xpb2AsIGFuZCBgc3dhcF9yYW5nZV9mcmVlYC4gR2l2ZW4gdGhlIGZvY3VzIG9mIG15IHBhdGNoIG9uIGB6c3dhcF9scnVfYWRkYCBhbmQgYHpzd2FwX2xydV9kZWxgLCB3aGljaCBhcmUgY2FsbGVkIGR1cmluZyBwYWdlIHN0b3JhZ2UgYW5kIGZyZWVpbmcsIHRoaXMgc2VlbXMgbGlrZSB0aGUgbW9zdCBkaXJlY3QgcGF0aC4KCkxldCBtZSBicmVhayB0aGlzIGRvd24gZnVydGhlci4gYHpzd2FwX3N0b3JlYCBpcyB0aGUgb25lIHRoYXQgZGlyZWN0bHkgY2FsbHMgYHpzd2FwX3N0b3JlX3BhZ2VgLCB3aGljaCBpbiB0dXJuIGNhbGxzIGB6c3dhcF9scnVfYWRkYC4gVGhlbiwgYHpzd2FwX2VudHJ5X2ZyZWVgIGNhbGxzIGB6c3dhcF9scnVfZGVsYC4gYHpzd2FwX2VudHJ5X2ZyZWVgIGdldHMgY2FsbGVkIGZyb20gYHpzd2FwX2ludmFsaWRhdGVgLCBgenN3YXBfbG9hZGAgKHdoZW4gYW4gZW50cnkgaXMgcmVtb3ZlZCksIGFuZCBldmVuIGB6c3dhcF9zdG9yZWAgKHdoZW4gcmVwbGFjaW5nIGFuIG9sZCBlbnRyeSkuIFRoaXMgcmUtZW5mb3JjZXMgdGhlIGluaXRpYWwgZm9jdXMuCgpgenN3YXBfc3RvcmVgIHNlZW1zIHBhcnRpY3VsYXJseSBhdHRyYWN0aXZlIGFzIGl0JiMzOTtzIGEgaG90IHBhdGgsIGNhbGxlZCBvbiBldmVyeSBzaW5nbGUgc3dhcC1vdXQgZXZlbnQuIFRoaXMgZGlyZWN0bHkgbWVhbnMgdGFyZ2V0aW5nIHRoZXNlIGZ1bmN0aW9ucyBhcyBGb2N1c1N5bWJvbHMgc2hvdWxkIGRyaXZlIHRoZSBmdXp6ZXIgdG8gaGVhdmlseSBleGVyY2lzZSBzd2FwIG9wZXJhdGlvbnMuIENydWNpYWxseSwgSSBoYXZlIHRvIHJlbWVtYmVyIHRoYXQgdG8gZnV6eiB6c3dhcCBlZmZlY3RpdmVseSwgSSBuZWVkIHN3YXAgZW5hYmxlZCBhbmQgenN3YXAgZW5hYmxlZCwgd2hpY2ggaXMgYSBrZXkgcmVxdWlyZW1lbnQuCgpOb3csIGFtIEkgbWlzc2luZyBhbnl0aGluZz8gSSB0aGluayBJIG5lZWQgdG8gcXVpY2tseSBzY2FuIHRoZSBjb2RlIGZvciBvdGhlciBlbnRyeSBwb2ludHMuIEkgc2hvdWxkIGxvb2sgYXQgYHNocmlua193b3JrZXJgIGluIGB6c3dhcC5jYCwgYnV0IGl0JiMzOTtzIGEgd29ya2VyIGFuZCBub3QgYXMgZGlyZWN0bHkgcmVsYXRlZC4gQWN0dWFsbHksIGB6c3dhcF9zd2Fwb25gIGlzIGNhbGxlZCB3aGVuIHN3YXAgaXMgZW5hYmxlZC4gSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgdGhhdCBvbmUgb3V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMzowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt6c3dhcF9zd2Fwb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vc3dhcGZpbGUuYz0zNjA1PVNZU0NBTExfREVGSU5FMihzd2Fwb24sIGNvbnN0IGNoYXIgX191c2VyICosIHNwZWNpYWxmaWxlLCBpbnQsIHN3YXBfZmxhZ3MpXG4tLVxubW0vc3dhcGZpbGUuYy0zNzU3LVxubW0vc3dhcGZpbGUuYzozNzU4Olx0ZXJyb3IgPSB6c3dhcF9zd2Fwb24oc2ktXHUwMDNldHlwZSwgbWF4cGFnZXMpO1xubW0vc3dhcGZpbGUuYy0zNzU5LVx0aWYgKGVycm9yKVxuLS1cbm1tL3pzd2FwLmM9MTYzNT12b2lkIHpzd2FwX2ludmFsaWRhdGUoc3dwX2VudHJ5X3Qgc3dwKVxuLS1cbm1tL3pzd2FwLmMtMTY0OC1cbm1tL3pzd2FwLmM6MTY0OTppbnQgenN3YXBfc3dhcG9uKGludCB0eXBlLCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzKVxubW0venN3YXAuYy0xNjUwLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTM6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTQ5NgoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDMzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBac3dhcCBUZXN0aW5nIFBsYW4qKgoKT2theSwgc28gYHN5c19zd2Fwb25gIGlzIHRoZSBjcml0aWNhbCBzeXNjYWxsIGhlcmUsIGJlY2F1c2UgdGhhdCYjMzk7cyB3aGVyZSBgenN3YXBfc3dhcG9uYCBnZXRzIGNhbGxlZC4gVGhhdCBtYWtlcyBpdCB0aGUgZW50cnkgcG9pbnQgZm9yIGVuYWJsaW5nIHN3YXAuIFRvIHRlc3QgenN3YXAsIEkmIzM5O2xsIGRlZmluaXRlbHkgbmVlZCBib3RoIGBDT05GSUdfWlNXQVBgIGFuZCwgaWRlYWxseSwgYENPTkZJR19aU1dBUF9ERUZBVUxUX09OYC4gQWx0aG91Z2gsIHdhaXQsIHRoZSBsYXR0ZXIgaXNuJiMzOTt0IHN0cmljdGx5ICpyZXF1aXJlZCogc2luY2UgSSBjYW4gcHJvYmFibHkgdG9nZ2xlIGl0IHRocm91Z2ggc3lzZnMsIGJ1dCBlbmFibGluZyBpdCBieSBkZWZhdWx0IGluIHRoZSBjb25maWcganVzdCBzaW1wbGlmaWVzIHRoaW5ncy4KCkxldCYjMzk7cyBxdWlja2x5IGNvbmZpcm0gaWYgaGF2aW5nIGp1c3QgYENPTkZJR19aU1dBUF9ERUZBVUxUX09OYCBpcyBlbm91Z2ggdG8ga2ljayB0aGluZ3Mgb2ZmLiBZZXAsIHNlZW1zIGxpa2UgaXQgZG9lcyBlbmFibGUgaXQgYnkgZGVmYXVsdCwgc28gdGhhdCYjMzk7cyBnb29kLiBPaCwgYW5kIEkmIzM5O2xsIG5lZWQgYENPTkZJR19TV0FQYCBvZiBjb3Vyc2UsIGJ1dCB0aGF0JiMzOTtzIHByZXR0eSBzdGFuZGFyZCwgc28gaXQmIzM5O3MgcHJvYmFibHkgYWxyZWFkeSBvbiBhbnl3YXkuIEp1c3QgdG8gYmUgc3VyZSwgbGV0IG1lIGRvdWJsZS1jaGVjayBgWlNXQVBfREVGQVVMVF9PTmAgaW4gYG1tL0tjb25maWdgOgoKYGBgCmNvbmZpZyBaU1dBUF9ERUZBVUxUX09OCglib29sICYjMzQ7RW5hYmxlIHRoZSBjb21wcmVzc2VkIGNhY2hlIGZvciBzd2FwIHBhZ2VzIGJ5IGRlZmF1bHQmIzM0OwoJZGVwZW5kcyBvbiBaU1dBUApgYGAKClJpZ2h0LCBzbyB0byBiZSBzYWZlLCBJJiMzOTtsbCBlbmFibGUgKmJvdGgqIGBaU1dBUGAgYW5kIGBaU1dBUF9ERUZBVUxUX09OYC4KCkhvbGQgb24uLi4gSSBuZWVkIHRvIHRoaW5rIGFib3V0IGdvb2QgZm9jdXMgc3ltYm9scyBmb3IgZnV6emluZy4gSSByZW1lbWJlciBgenN3YXBfc3RvcmVgLCBgenN3YXBfbG9hZGAsIGFuZCBgenN3YXBfaW52YWxpZGF0ZWAgYmVpbmcgY29yZSBvcGVyYXRpb25zLiBCdXQgYXJlIHRoZXkgKmhvdCogcGF0aHM/IEhtbSwgdGhleSYjMzk7cmUgaG90ICp3aGVuKiBzd2FwcGluZywgd2hpY2ggaXMgdGhlIGtleS4uLiBzbyB0aGVzZSBzeW1ib2xzIGFyZSBub3QgcGFydCBvZiBhIGdlbmVyaWMgaG90IHBhdGguIE1lbW9yeSBwcmVzc3VyZSBvciBzcGVjaWZpYyB0cmlnZ2VycyBhcmUgbmVlZGVkLCBsaWtlIHVzaW5nIHNvbWV0aGluZyBsaWtlIGBtYWR2aXNlKE1BRFZfUEFHRU9VVClgLiBUaGF0IG1lYW5zIHRoZXNlIGFyZSBncmVhdCBmb2N1cyBzeW1ib2xzLCBndWlkaW5nIHRoZSBmdXp6ZXIgdG93YXJkcyBzd2FwIG9wZXJhdGlvbnMuIFRoZXkgd2lsbCBnZXQgdXMgdGhlcmUuCgpOb3csIGxldCBtZSBqdXN0IG1ha2Ugc3VyZSBgenN3YXBfc3RvcmVgIGlzIGV4cG9ydGVkIGFuZCByZWFkeSB0byBiZSB1c2VkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMzowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYUE9SVF9TWU1CT0wuKnpzd2FwX3N0b3JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTM6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAzMDgKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipac3dhcCBGdW5jdGlvbiBTY29wZTogRGVsdmluZyBEZWVwZXIqKgoKQWxyaWdodCwgc28gdGhlIGB6c3dhcF9mcm9udHN3YXBfc3RvcmVgIGZ1bmN0aW9uIGlzbiYjMzk7dCBtYXJrZWQgYXMgZXhwb3J0ZWQsIHdoaWNoIGlzIGltbWVkaWF0ZWx5IGludGVyZXN0aW5nLiBUaGF0IHVzdWFsbHkgbWVhbnMgaXQmIzM5O3MgaW50ZXJuYWwgdG8gdGhlIG1vZHVsZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGNvbmZpcm0gd2hlcmUgaXQgKmlzKiBkZWNsYXJlZCBhbmQgdXNlZC4gQSBxdWljayBzY2FuIHJldmVhbHMgaXQmIzM5O3MgYSBnbG9iYWwgZnVuY3Rpb24gd2l0aGluIGBtbS96c3dhcC5jYCwgYnV0IHRoZXJlIG11c3QgYmUgYSBkZWNsYXJhdGlvbiBzb21ld2hlcmUgdGhhdCBhbGxvd3MgaXQgdG8gYmUgY2FsbGVkIGZyb20gb3RoZXIgcGFydHMgb2YgdGhlIG1vZHVsZS4KClRoZSBsb2dpY2FsIHBsYWNlIHRvIGZpbmQgdGhhdCBkZWNsYXJhdGlvbiBpcyBpbiBgaW5jbHVkZS9saW51eC96c3dhcC5oYC4gVGltZSB0byBvcGVuIHRoYXQgaGVhZGVyIGZpbGUuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSBjYW4gZGVkdWNlIGFib3V0IGl0cyB2aXNpYmlsaXR5IGFuZCBpbnRlbmRlZCB1c2UgZnJvbSB0aGUgZnVuY3Rpb24mIzM5O3MgcHJvdG90eXBlIGFuZCBhbnkgYWNjb21wYW55aW5nIGNvbW1lbnRzIHRoZXJlLiBLbm93aW5nIHRoZSBpbmNsdWRlIGZpbGUgd2lsbCBjbGFyaWZ5IHRoZSBmdW5jdGlvbiYjMzk7cyBpbnRlbmRlZCBwdXJwb3NlIHdpdGhpbiB0aGUgenN3YXAgc3Vic3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMzowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt6c3dhcF9zdG9yZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvenN3YXAuaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L3pzd2FwLmg9OD1zdHJ1Y3QgbHJ1dmVjO1xuaW5jbHVkZS9saW51eC96c3dhcC5oLTktXG5pbmNsdWRlL2xpbnV4L3pzd2FwLmg6MTA6ZXh0ZXJuIGF0b21pY19sb25nX3QgenN3YXBfc3RvcmVkX3BhZ2VzO1xuaW5jbHVkZS9saW51eC96c3dhcC5oLTExLVxuLS1cbmluY2x1ZGUvbGludXgvenN3YXAuaD0yNz11bnNpZ25lZCBsb25nIHpzd2FwX3RvdGFsX3BhZ2VzKHZvaWQpO1xuaW5jbHVkZS9saW51eC96c3dhcC5oOjI4OmJvb2wgenN3YXBfc3RvcmUoc3RydWN0IGZvbGlvICpmb2xpbyk7XG5pbmNsdWRlL2xpbnV4L3pzd2FwLmgtMjktaW50IHpzd2FwX2xvYWQoc3RydWN0IGZvbGlvICpmb2xpbyk7XG4tLVxuaW5jbHVkZS9saW51eC96c3dhcC5oPTQwPXN0cnVjdCB6c3dhcF9scnV2ZWNfc3RhdGUge307XG5pbmNsdWRlL2xpbnV4L3pzd2FwLmgtNDEtXG5pbmNsdWRlL2xpbnV4L3pzd2FwLmg6NDI6c3RhdGljIGlubGluZSBib29sIHpzd2FwX3N0b3JlKHN0cnVjdCBmb2xpbyAqZm9saW8pXG5pbmNsdWRlL2xpbnV4L3pzd2FwLmgtNDMte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMzowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDgxNAoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDIyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBac3dhcCBSZWZhY3RvcmluZyBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIGlzIGEgZ2xvYmFsIGZ1bmN0aW9uLCB3aGljaCBpcyBnb29kLiBUaGF0IG1lYW5zIGB6c3dhcF9zdG9yZWAsIGB6c3dhcF9sb2FkYCwgYW5kIGB6c3dhcF9pbnZhbGlkYXRlYCBhcmUgaWRlYWwgZm9jdXMgc3ltYm9scyBmb3IgZnV6emluZy4gSG93ZXZlciwgaG9sZCBvbi4uLiBgenN3YXBfbHJ1X2FkZGAgYW5kIGB6c3dhcF9scnVfZGVsYCBhcmUgbWFya2VkIGFzIHN0YXRpYy4gV2Ugc2hvdWxkIGRlZmluaXRlbHkgYXZvaWQgaW5jbHVkaW5nIHRob3NlIGluIG91ciBmb2N1cyBzeW1ib2xzLgoKVGhpcyBsb29rcyBsaWtlIGEgZnVuY3Rpb25hbCBjaGFuZ2Ug4oCTIGEgcmVmYWN0b3Jpbmcg4oCTIGRpcmVjdGx5IGltcGFjdGluZyB0aGUgY29yZSBrZXJuZWwgbG9naWMgd2l0aGluIGBtbS96c3dhcC5jYC4gIEdpdmVuIGl0cyBsb2NhdGlvbiBpbiB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgc3Vic3lzdGVtLCBhIHRob3JvdWdoIGZ1enppbmcgY2FtcGFpZ24gaXMgYWJzb2x1dGVseSB3YXJyYW50ZWQuCgpUbyBlbmFibGUgdGhpcywgSSYjMzk7bGwgbmVlZCB0byBtYWtlIHN1cmUgdGhlIGBaU1dBUGAgYW5kIGBaU1dBUF9ERUZBVUxUX09OYCBjb25maWdzIGFyZSBzZXQuIEkgbmVlZCB0byB0YWtlIGEgc3RlcCBiYWNrIGFuZCBkb3VibGUgY2hlY2sgdGhhdCB0aGVyZSBhcmVuJiMzOTt0IGFueSBvdGhlciBkZXBlbmRlbnQgY29uZmlncyB0aGF0IG1pZ2h0IHRyaXAgdXMgdXAsIHNvIGxldCBtZSBhZGQgYFNXQVBgIGp1c3QgdG8gYmUgc2FmZS4gYFpTV0FQYCBkZXBlbmRzIG9uIGl0LCBhbmQgd2hpbGUgYFNXQVBgIGlzICp1c3VhbGx5KiBlbmFibGVkLCBpdCYjMzk7cyBhbHdheXMgYmV0dGVyIHRvIGJlIGV4cGxpY2l0LiBJdCBhbHNvIHNlbGVjdHMgYENSWVBUT2AgYW5kIGBaU01BTExPQ2Agc28gSSBuZWVkIHRvIGNoZWNrIGBaU01BTExPQ2AgaW4gYG1tL0tjb25maWdgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMzowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgWlNNQUxMT0MmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL0tjb25maWc9MTE0PWNvbmZpZyBaU1dBUF9DT01QUkVTU09SX0RFRkFVTFRcbi0tXG5tbS9LY29uZmlnLTEyNC1cbm1tL0tjb25maWc6MTI1OmNvbmZpZyBaU01BTExPQ1xubW0vS2NvbmZpZy0xMjYtXHR0cmlzdGF0ZVxuLS1cbm1tL0tjb25maWc9MTMzPWNvbW1lbnQgXCYjMzQ7WnNtYWxsb2MgaXMgYSBjb21tb24gYmFja2VuZCBhbGxvY2F0b3IgZm9yIHpzd2FwIFx1MDAyNiB6cmFtXCYjMzQ7XG5tbS9LY29uZmlnLTEzNC1cbm1tL0tjb25maWc6MTM1OmNvbmZpZyBaU01BTExPQ19TVEFUXG5tbS9LY29uZmlnLTEzNi1cdGJvb2wgXCYjMzQ7RXhwb3J0IHpzbWFsbG9jIHN0YXRpc3RpY3NcJiMzNDtcbi0tXG5tbS9LY29uZmlnLTE0My1cbm1tL0tjb25maWc6MTQ0OmNvbmZpZyBaU01BTExPQ19DSEFJTl9TSVpFXG5tbS9LY29uZmlnLTE0NS1cdGludCBcJiMzNDtNYXhpbXVtIG51bWJlciBvZiBwaHlzaWNhbCBwYWdlcyBwZXItenNwYWdlXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDEzOjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNTMzCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTg1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlJlZmxlY3Rpbmcgb24gWlNNQUxMT0MgYW5kIFpTV0FQIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gYFpTTUFMTE9DYCBpcyB0cmlzdGF0ZSwgYnV0IGJlY2F1c2UgaXQmIzM5O3Mgc2VsZWN0ZWQgYnkgYFpTV0FQYCwgaXQmIzM5O3MgZWZmZWN0aXZlbHkgZW5hYmxlZC4gTXkgaW5zdGluY3QgaXMgdGhhdCB3ZSBzaG91bGQganVzdCBmb2N1cyBvbiBzZXR0aW5nIGBaU1dBUGAgYW5kIHRoZW4gcmVseSBvbiBgWlNXQVBfREVGQVVMVF9PTmAgdG8gaGFuZGxlIHRoZSByZXN0LiBTaW1wbGlmeWluZyB0aGUgY29uZmlndXJhdGlvbiBpcyBhbHdheXMgYSBnb29kIHRoaW5nLCBlc3BlY2lhbGx5IHdoZW4gd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBwb3RlbnRpYWxseSBjb21wbGV4IG1lbW9yeSBtYW5hZ2VtZW50IGludGVyYWN0aW9ucy4KCk5vdywgbGV0JiMzOTtzIGJhY2sgdXAgYW5kIHJlYWxseSBjb25zaWRlciB0aGUgaW1wbGljYXRpb25zIGhlcmUuIFRoZSBwYXRjaCBhdCBoYW5kIGludm9sdmVzIHJlZmFjdG9yaW5nIGB6c3dhcF9scnVfYWRkYCBhbmQgYHpzd2FwX2xydV9kZWxgLiBJdCBzb3VuZHMgbGlrZSB0aGV5JiMzOTtyZSBub3cgZGlyZWN0bHkgdXNpbmcgdGhlIGdsb2JhbCBgenN3YXBfbGlzdF9scnVgIGluc3RlYWQgb2YgcmVjZWl2aW5nIGl0IGFzIGFuIGFyZ3VtZW50LiBUaGF0JiMzOTtzIGEgZnVuZGFtZW50YWwgY2hhbmdlIHRvIHRoZSB6c3dhcCBjb3JlLiBUbyByZWFsbHkgdGVzdCB0aGlzIHByb3Blcmx5LCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB6c3dhcCBpcyBhY3RpdmUgYW5kIGZvY3VzIG9uIHRob3NlIGNvcmUgZW50cnkgcG9pbnRz4oCUYHpzd2FwX3N0b3JlYCwgYHpzd2FwX2xvYWRgLCBhbmQgYHpzd2FwX2ludmFsaWRhdGVg4oCUYmVjYXVzZSB0aG9zZSBhcmUgdGhlIG9uZXMgY2FsbGluZyB0aGUgTFJVIG9wZXJhdGlvbnMgd2UmIzM5O3JlIG1vZGlmeWluZy4gV2UgbmVlZCB0byBiZSBzdXJlIHRoZXNlIGFyZSB3ZWxsLWV4ZXJjaXNlZCB0byBlbnN1cmUgdGhpcyBjaGFuZ2UgZG9lc24mIzM5O3QgYnJlYWsgYW55dGhpbmcuCgpXYWl0LCBpcyBgenN3YXBfbGlzdF9scnVgIGEgZ2xvYmFsIHZhcmlhYmxlPyBJIG5lZWQgdG8gcXVpY2tseSBjaGVjayBgbW0venN3YXAuY2AgdG8gY29uZmlybS4gSXQgaXMgaW1wb3J0YW50IHRvIGtub3cgd2hpY2ggc3RhdGUgdGhpcyB2YXJpYWJsZSBpcyBpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTM6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7enN3YXBfbGlzdF9scnUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS96c3dhcC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL3pzd2FwLmM9MTUzPXN0cnVjdCB6c3dhcF9wb29sIHtcbi0tXG5tbS96c3dhcC5jLTE2My0vKiBHbG9iYWwgTFJVIGxpc3RzIHNoYXJlZCBieSBhbGwgenN3YXAgcG9vbHMuICovXG5tbS96c3dhcC5jOjE2NDpzdGF0aWMgc3RydWN0IGxpc3RfbHJ1IHpzd2FwX2xpc3RfbHJ1O1xubW0venN3YXAuYy0xNjUtXG4tLVxubW0venN3YXAuYz02Njg9c3RhdGljIHZvaWQgenN3YXBfbHJ1X2FkZChzdHJ1Y3QgenN3YXBfZW50cnkgKmVudHJ5KVxuLS1cbm1tL3pzd2FwLmMtNjg2LVx0Lyogd2lsbCBhbHdheXMgc3VjY2VlZCAqL1xubW0venN3YXAuYzo2ODc6XHRsaXN0X2xydV9hZGQoXHUwMDI2enN3YXBfbGlzdF9scnUsIFx1MDAyNmVudHJ5LVx1MDAzZWxydSwgbmlkLCBtZW1jZyk7XG5tbS96c3dhcC5jLTY4OC1cdHJjdV9yZWFkX3VubG9jaygpO1xuLS1cbm1tL3pzd2FwLmM9NjkxPXN0YXRpYyB2b2lkIHpzd2FwX2xydV9kZWwoc3RydWN0IHpzd2FwX2VudHJ5ICplbnRyeSlcbi0tXG5tbS96c3dhcC5jLTY5OC1cdC8qIHdpbGwgYWx3YXlzIHN1Y2NlZWQgKi9cbm1tL3pzd2FwLmM6Njk5Olx0bGlzdF9scnVfZGVsKFx1MDAyNnpzd2FwX2xpc3RfbHJ1LCBcdTAwMjZlbnRyeS1cdTAwM2VscnUsIG5pZCwgbWVtY2cpO1xubW0venN3YXAuYy03MDAtXHRyY3VfcmVhZF91bmxvY2soKTtcbi0tXG5tbS96c3dhcC5jPTExNjk9c3RhdGljIHVuc2lnbmVkIGxvbmcgenN3YXBfc2hyaW5rZXJfc2NhbihzdHJ1Y3Qgc2hyaW5rZXIgKnNocmlua2VyLFxuLS1cbm1tL3pzd2FwLmMtMTE4MC1cbm1tL3pzd2FwLmM6MTE4MTpcdHNocmlua19yZXQgPSBsaXN0X2xydV9zaHJpbmtfd2FsayhcdTAwMjZ6c3dhcF9saXN0X2xydSwgc2MsIFx1MDAyNnNocmlua19tZW1jZ19jYixcbm1tL3pzd2FwLmMtMTE4Mi1cdFx0XHUwMDI2ZW5jb3VudGVyZWRfcGFnZV9pbl9zd2FwY2FjaGUpO1xuLS1cbm1tL3pzd2FwLmM9MTE5MD1zdGF0aWMgdW5zaWduZWQgbG9uZyB6c3dhcF9zaHJpbmtlcl9jb3VudChzdHJ1Y3Qgc2hyaW5rZXIgKnNocmlua2VyLFxuLS1cbm1tL3pzd2FwLmMtMTIzMC1cbm1tL3pzd2FwLmM6MTIzMTpcdG5yX2ZyZWVhYmxlID0gbGlzdF9scnVfc2hyaW5rX2NvdW50KFx1MDAyNnpzd2FwX2xpc3RfbHJ1LCBzYyk7XG5tbS96c3dhcC5jLTEyMzItXHRpZiAoIW5yX2ZyZWVhYmxlKVxuLS1cbm1tL3pzd2FwLmM9MTI3OD1zdGF0aWMgaW50IHNocmlua19tZW1jZyhzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2cpXG4tLVxubW0venN3YXAuYy0xMjk0LVxubW0venN3YXAuYzoxMjk1Olx0XHRzaHJ1bmsgJiM0Mzs9IGxpc3RfbHJ1X3dhbGtfb25lKFx1MDAyNnpzd2FwX2xpc3RfbHJ1LCBuaWQsIG1lbWNnLFxubW0venN3YXAuYy0xMjk2LVx0XHRcdFx0XHQgICAgXHUwMDI2c2hyaW5rX21lbWNnX2NiLCBOVUxMLCBcdTAwMjZucl90b193YWxrKTtcbi0tXG5tbS96c3dhcC5jPTE0NzY9Ym9vbCB6c3dhcF9zdG9yZShzdHJ1Y3QgZm9saW8gKmZvbGlvKVxuLS1cbm1tL3pzd2FwLmMtMTUxMC1cdFx0bWVtY2cgPSBnZXRfbWVtX2Nncm91cF9mcm9tX29iamNnKG9iamNnKTtcbm1tL3pzd2FwLmM6MTUxMTpcdFx0aWYgKG1lbWNnX2xpc3RfbHJ1X2FsbG9jKG1lbWNnLCBcdTAwMjZ6c3dhcF9saXN0X2xydSwgR0ZQX0tFUk5FTCkpIHtcbm1tL3pzd2FwLmMtMTUxMi1cdFx0XHRtZW1fY2dyb3VwX3B1dChtZW1jZyk7XG4tLVxubW0venN3YXAuYz0xNzU5PXN0YXRpYyBpbnQgenN3YXBfc2V0dXAodm9pZClcbi0tXG5tbS96c3dhcC5jLTE3ODQtXHRcdGdvdG8gc2hyaW5rZXJfZmFpbDtcbm1tL3pzd2FwLmM6MTc4NTpcdGlmIChsaXN0X2xydV9pbml0X21lbWNnKFx1MDAyNnpzd2FwX2xpc3RfbHJ1LCB6c3dhcF9zaHJpbmtlcikpXG5tbS96c3dhcC5jLTE3ODYtXHRcdGdvdG8gbHJ1X2ZhaWw7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDEzOjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyOTQ3CgkJCQkJCQlvdXRwdXQ6IDE1NAoJCQkJCQkJdGhvdWdodHM6IDYxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFpzd2FwIFJlZmFjdG9yaW5nIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGxvb2tlZCBvdmVyIHRoaXMgcGF0Y2guIEl0JiMzOTtzIHRvdWNoaW5nIGB6c3dhcF9saXN0X2xydWAsIHdoaWNoLCBhcyBJIHJlY2FsbCwgaXMgdGhhdCBzdGF0aWMgZ2xvYmFsIHZhcmlhYmxlIGhhbmdpbmcgb3V0IGluIGBtbS96c3dhcC5jYC4gUmlnaHQsIHRoYXQmIzM5O3MgdGhlIG9uZS4gVGhlIHJlZmFjdG9yaW5nIGl0c2VsZiBsb29rcyBzdHJhaWdodGZvcndhcmQg4oCTIG5vdGhpbmcgZWFydGgtc2hhdHRlcmluZyBpbiB0ZXJtcyBvZiBuZXcgZmVhdHVyZXMuIEhvd2V2ZXIsIGl0ICppcyogY2hhbmdpbmcgY29kZSB0aGF0JiMzOTtzIGZ1bmRhbWVudGFsIHRvIHpzd2FwJiMzOTtzIG9wZXJhdGlvbiwgYW5kIHRoYXQgbWFrZXMgaXQgd29ydGggc2NydXRpbml6aW5nIHRob3JvdWdobHkuIEdpdmVuIGl0cyBpbnRlcmFjdGlvbiB3aXRoIGNvcmUga2VybmVsIGxvZ2ljLCBJIHRoaW5rIHRoaXMgbWVyaXRzIGZ1enppbmcuIExldCYjMzk7cyBzdGFydCBieSBjYWxsaW5nIGBzZXQtcmVzdWx0c2AgdG8gZ2V0IHRoaXMgcHJvY2VzcyByb2xsaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMzowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7WlNXQVAmIzM0OywKICAgICYjMzQ7WlNXQVBfREVGQVVMVF9PTiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3pzd2FwX3N0b3JlJiMzNDssCiAgICAmIzM0O3pzd2FwX2xvYWQmIzM0OywKICAgICYjMzQ7enN3YXBfaW52YWxpZGF0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZWZhY3RvcnMgdGhlIHpzd2FwIExSVSBhZGQvZGVsIGZ1bmN0aW9ucyB0byBkaXJlY3RseSB1c2UgdGhlIGdsb2JhbCB6c3dhcF9saXN0X2xydSBpbnN0ZWFkIG9mIHBhc3NpbmcgaXQgYXMgYW4gYXJndW1lbnQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSB6c3dhcCBsb2dpYy4gVG8gdGVzdCB0aGlzLCB3ZSBuZWVkIHRvIGVuYWJsZSB6c3dhcCBhbmQgZm9jdXMgb24gdGhlIG1haW4genN3YXAgZW50cnkgcG9pbnRzICh6c3dhcF9zdG9yZSwgenN3YXBfbG9hZCwgenN3YXBfaW52YWxpZGF0ZSkgd2hpY2ggdHJpZ2dlciB0aGUgbW9kaWZpZWQgTFJVIG9wZXJhdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1pTV0FQJiMzNDssCiAgICAmIzM0O1pTV0FQX0RFRkFVTFRfT04mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt6c3dhcF9zdG9yZSYjMzQ7LAogICAgJiMzNDt6c3dhcF9sb2FkJiMzNDssCiAgICAmIzM0O3pzd2FwX2ludmFsaWRhdGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVmYWN0b3JzIHRoZSB6c3dhcCBMUlUgYWRkL2RlbCBmdW5jdGlvbnMgdG8gZGlyZWN0bHkgdXNlIHRoZSBnbG9iYWwgenN3YXBfbGlzdF9scnUgaW5zdGVhZCBvZiBwYXNzaW5nIGl0IGFzIGFuIGFyZ3VtZW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgenN3YXAgbG9naWMuIFRvIHRlc3QgdGhpcywgd2UgbmVlZCB0byBlbmFibGUgenN3YXAgYW5kIGZvY3VzIG9uIHRoZSBtYWluIHpzd2FwIGVudHJ5IHBvaW50cyAoenN3YXBfc3RvcmUsIHpzd2FwX2xvYWQsIHpzd2FwX2ludmFsaWRhdGUpIHdoaWNoIHRyaWdnZXIgdGhlIG1vZGlmaWVkIExSVSBvcGVyYXRpb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTM6MDc6MDcuMTk1MjM5ODM2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTI5MjA3MTI2ODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiWlNXQVBcIixcbiAgICBcIlpTV0FQX0RFRkFVTFRfT05cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ6c3dhcF9zdG9yZVwiLFxuICAgIFwienN3YXBfbG9hZFwiLFxuICAgIFwienN3YXBfaW52YWxpZGF0ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlZmFjdG9ycyB0aGUgenN3YXAgTFJVIGFkZC9kZWwgZnVuY3Rpb25zIHRvIGRpcmVjdGx5IHVzZSB0aGUgZ2xvYmFsIHpzd2FwX2xpc3RfbHJ1IGluc3RlYWQgb2YgcGFzc2luZyBpdCBhcyBhbiBhcmd1bWVudC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIHpzd2FwIGxvZ2ljLiBUbyB0ZXN0IHRoaXMsIHdlIG5lZWQgdG8gZW5hYmxlIHpzd2FwIGFuZCBmb2N1cyBvbiB0aGUgbWFpbiB6c3dhcCBlbnRyeSBwb2ludHMgKHpzd2FwX3N0b3JlLCB6c3dhcF9sb2FkLCB6c3dhcF9pbnZhbGlkYXRlKSB3aGljaCB0cmlnZ2VyIHRoZSBtb2RpZmllZCBMUlUgb3BlcmF0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTM6MDc6MDcuMTk1MjQ3MDY1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNzI0NDA4ODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBkODQ5MTlmYzc2ZmFiZGQ3YTE5ZDUyNGFmNjRmNjMzY2VmZmMwNzE5XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgQXVnIDEgMTM6MDc6MDYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbW0venN3YXAuYyBiL21tL3pzd2FwLmNcXG5pbmRleCA3NjFjZDY5OWUwYTNlLi5hODEwNTI0Yzc2MjE3IDEwMDY0NFxcbi0tLSBhL21tL3pzd2FwLmNcXG4rKysgYi9tbS96c3dhcC5jXFxuQEAgLTY2NSw3ICs2NjUsNyBAQCBzdGF0aWMgaW5saW5lIGludCBlbnRyeV90b19uaWQoc3RydWN0IHpzd2FwX2VudHJ5ICplbnRyeSlcXG4gXFx0cmV0dXJuIHBhZ2VfdG9fbmlkKHZpcnRfdG9fcGFnZShlbnRyeSkpO1xcbiB9XFxuIFxcbi1zdGF0aWMgdm9pZCB6c3dhcF9scnVfYWRkKHN0cnVjdCBsaXN0X2xydSAqbGlzdF9scnUsIHN0cnVjdCB6c3dhcF9lbnRyeSAqZW50cnkpXFxuK3N0YXRpYyB2b2lkIHpzd2FwX2xydV9hZGQoc3RydWN0IHpzd2FwX2VudHJ5ICplbnRyeSlcXG4ge1xcbiBcXHRpbnQgbmlkID0gZW50cnlfdG9fbmlkKGVudHJ5KTtcXG4gXFx0c3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnO1xcbkBAIC02ODQsMTEgKzY4NCwxMSBAQCBzdGF0aWMgdm9pZCB6c3dhcF9scnVfYWRkKHN0cnVjdCBsaXN0X2xydSAqbGlzdF9scnUsIHN0cnVjdCB6c3dhcF9lbnRyeSAqZW50cnkpXFxuIFxcdHJjdV9yZWFkX2xvY2soKTtcXG4gXFx0bWVtY2cgPSBtZW1fY2dyb3VwX2Zyb21fZW50cnkoZW50cnkpO1xcbiBcXHQvKiB3aWxsIGFsd2F5cyBzdWNjZWVkICovXFxuLVxcdGxpc3RfbHJ1X2FkZChsaXN0X2xydSwgXFx1MDAyNmVudHJ5LVxcdTAwM2VscnUsIG5pZCwgbWVtY2cpO1xcbitcXHRsaXN0X2xydV9hZGQoXFx1MDAyNnpzd2FwX2xpc3RfbHJ1LCBcXHUwMDI2ZW50cnktXFx1MDAzZWxydSwgbmlkLCBtZW1jZyk7XFxuIFxcdHJjdV9yZWFkX3VubG9jaygpO1xcbiB9XFxuIFxcbi1zdGF0aWMgdm9pZCB6c3dhcF9scnVfZGVsKHN0cnVjdCBsaXN0X2xydSAqbGlzdF9scnUsIHN0cnVjdCB6c3dhcF9lbnRyeSAqZW50cnkpXFxuK3N0YXRpYyB2b2lkIHpzd2FwX2xydV9kZWwoc3RydWN0IHpzd2FwX2VudHJ5ICplbnRyeSlcXG4ge1xcbiBcXHRpbnQgbmlkID0gZW50cnlfdG9fbmlkKGVudHJ5KTtcXG4gXFx0c3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnO1xcbkBAIC02OTYsNyArNjk2LDcgQEAgc3RhdGljIHZvaWQgenN3YXBfbHJ1X2RlbChzdHJ1Y3QgbGlzdF9scnUgKmxpc3RfbHJ1LCBzdHJ1Y3QgenN3YXBfZW50cnkgKmVudHJ5KVxcbiBcXHRyY3VfcmVhZF9sb2NrKCk7XFxuIFxcdG1lbWNnID0gbWVtX2Nncm91cF9mcm9tX2VudHJ5KGVudHJ5KTtcXG4gXFx0Lyogd2lsbCBhbHdheXMgc3VjY2VlZCAqL1xcbi1cXHRsaXN0X2xydV9kZWwobGlzdF9scnUsIFxcdTAwMjZlbnRyeS1cXHUwMDNlbHJ1LCBuaWQsIG1lbWNnKTtcXG4rXFx0bGlzdF9scnVfZGVsKFxcdTAwMjZ6c3dhcF9saXN0X2xydSwgXFx1MDAyNmVudHJ5LVxcdTAwM2VscnUsIG5pZCwgbWVtY2cpO1xcbiBcXHRyY3VfcmVhZF91bmxvY2soKTtcXG4gfVxcbiBcXG5AQCAtNzY0LDcgKzc2NCw3IEBAIHN0YXRpYyB2b2lkIHpzd2FwX2VudHJ5X2NhY2hlX2ZyZWUoc3RydWN0IHpzd2FwX2VudHJ5ICplbnRyeSlcXG4gICovXFxuIHN0YXRpYyB2b2lkIHpzd2FwX2VudHJ5X2ZyZWUoc3RydWN0IHpzd2FwX2VudHJ5ICplbnRyeSlcXG4ge1xcbi1cXHR6c3dhcF9scnVfZGVsKFxcdTAwMjZ6c3dhcF9saXN0X2xydSwgZW50cnkpO1xcbitcXHR6c3dhcF9scnVfZGVsKGVudHJ5KTtcXG4gXFx0enNfZnJlZShlbnRyeS1cXHUwMDNlcG9vbC1cXHUwMDNlenNfcG9vbCwgZW50cnktXFx1MDAzZWhhbmRsZSk7XFxuIFxcdHpzd2FwX3Bvb2xfcHV0KGVudHJ5LVxcdTAwM2Vwb29sKTtcXG4gXFx0aWYgKGVudHJ5LVxcdTAwM2VvYmpjZykge1xcbkBAIC0xNDYxLDcgKzE0NjEsNyBAQCBzdGF0aWMgYm9vbCB6c3dhcF9zdG9yZV9wYWdlKHN0cnVjdCBwYWdlICpwYWdlLFxcbiBcXHRlbnRyeS1cXHUwMDNlcmVmZXJlbmNlZCA9IHRydWU7XFxuIFxcdGlmIChlbnRyeS1cXHUwMDNlbGVuZ3RoKSB7XFxuIFxcdFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZlbnRyeS1cXHUwMDNlbHJ1KTtcXG4tXFx0XFx0enN3YXBfbHJ1X2FkZChcXHUwMDI2enN3YXBfbGlzdF9scnUsIGVudHJ5KTtcXG4rXFx0XFx0enN3YXBfbHJ1X2FkZChlbnRyeSk7XFxuIFxcdH1cXG4gXFxuIFxcdHJldHVybiB0cnVlO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxMzowNzowNy41NjgxOTc5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NTI1NDc3MzE2NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiWlNXQVBcIixcbiAgICBcIlpTV0FQX0RFRkFVTFRfT05cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ6c3dhcF9zdG9yZVwiLFxuICAgIFwienN3YXBfbG9hZFwiLFxuICAgIFwienN3YXBfaW52YWxpZGF0ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlZmFjdG9ycyB0aGUgenN3YXAgTFJVIGFkZC9kZWwgZnVuY3Rpb25zIHRvIGRpcmVjdGx5IHVzZSB0aGUgZ2xvYmFsIHpzd2FwX2xpc3RfbHJ1IGluc3RlYWQgb2YgcGFzc2luZyBpdCBhcyBhbiBhcmd1bWVudC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIHpzd2FwIGxvZ2ljLiBUbyB0ZXN0IHRoaXMsIHdlIG5lZWQgdG8gZW5hYmxlIHpzd2FwIGFuZCBmb2N1cyBvbiB0aGUgbWFpbiB6c3dhcCBlbnRyeSBwb2ludHMgKHpzd2FwX3N0b3JlLCB6c3dhcF9sb2FkLCB6c3dhcF9pbnZhbGlkYXRlKSB3aGljaCB0cmlnZ2VyIHRoZSBtb2RpZmllZCBMUlUgb3BlcmF0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZDg0OTE5ZmM3NmZhYmRkN2ExOWQ1MjRhZjY0ZjYzM2NlZmZjMDcxOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDEgMTM6MDc6MDYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9tbS96c3dhcC5jIGIvbW0venN3YXAuY1xuaW5kZXggNzYxY2Q2OTllMGEzZS4uYTgxMDUyNGM3NjIxNyAxMDA2NDRcbi0tLSBhL21tL3pzd2FwLmNcbisrKyBiL21tL3pzd2FwLmNcbkBAIC02NjUsNyArNjY1LDcgQEAgc3RhdGljIGlubGluZSBpbnQgZW50cnlfdG9fbmlkKHN0cnVjdCB6c3dhcF9lbnRyeSAqZW50cnkpXG4gXHRyZXR1cm4gcGFnZV90b19uaWQodmlydF90b19wYWdlKGVudHJ5KSk7XG4gfVxuIFxuLXN0YXRpYyB2b2lkIHpzd2FwX2xydV9hZGQoc3RydWN0IGxpc3RfbHJ1ICpsaXN0X2xydSwgc3RydWN0IHpzd2FwX2VudHJ5ICplbnRyeSlcbitzdGF0aWMgdm9pZCB6c3dhcF9scnVfYWRkKHN0cnVjdCB6c3dhcF9lbnRyeSAqZW50cnkpXG4ge1xuIFx0aW50IG5pZCA9IGVudHJ5X3RvX25pZChlbnRyeSk7XG4gXHRzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2c7XG5AQCAtNjg0LDExICs2ODQsMTEgQEAgc3RhdGljIHZvaWQgenN3YXBfbHJ1X2FkZChzdHJ1Y3QgbGlzdF9scnUgKmxpc3RfbHJ1LCBzdHJ1Y3QgenN3YXBfZW50cnkgKmVudHJ5KVxuIFx0cmN1X3JlYWRfbG9jaygpO1xuIFx0bWVtY2cgPSBtZW1fY2dyb3VwX2Zyb21fZW50cnkoZW50cnkpO1xuIFx0Lyogd2lsbCBhbHdheXMgc3VjY2VlZCAqL1xuLVx0bGlzdF9scnVfYWRkKGxpc3RfbHJ1LCBcdTAwMjZlbnRyeS1cdTAwM2VscnUsIG5pZCwgbWVtY2cpO1xuK1x0bGlzdF9scnVfYWRkKFx1MDAyNnpzd2FwX2xpc3RfbHJ1LCBcdTAwMjZlbnRyeS1cdTAwM2VscnUsIG5pZCwgbWVtY2cpO1xuIFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4gfVxuIFxuLXN0YXRpYyB2b2lkIHpzd2FwX2xydV9kZWwoc3RydWN0IGxpc3RfbHJ1ICpsaXN0X2xydSwgc3RydWN0IHpzd2FwX2VudHJ5ICplbnRyeSlcbitzdGF0aWMgdm9pZCB6c3dhcF9scnVfZGVsKHN0cnVjdCB6c3dhcF9lbnRyeSAqZW50cnkpXG4ge1xuIFx0aW50IG5pZCA9IGVudHJ5X3RvX25pZChlbnRyeSk7XG4gXHRzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2c7XG5AQCAtNjk2LDcgKzY5Niw3IEBAIHN0YXRpYyB2b2lkIHpzd2FwX2xydV9kZWwoc3RydWN0IGxpc3RfbHJ1ICpsaXN0X2xydSwgc3RydWN0IHpzd2FwX2VudHJ5ICplbnRyeSlcbiBcdHJjdV9yZWFkX2xvY2soKTtcbiBcdG1lbWNnID0gbWVtX2Nncm91cF9mcm9tX2VudHJ5KGVudHJ5KTtcbiBcdC8qIHdpbGwgYWx3YXlzIHN1Y2NlZWQgKi9cbi1cdGxpc3RfbHJ1X2RlbChsaXN0X2xydSwgXHUwMDI2ZW50cnktXHUwMDNlbHJ1LCBuaWQsIG1lbWNnKTtcbitcdGxpc3RfbHJ1X2RlbChcdTAwMjZ6c3dhcF9saXN0X2xydSwgXHUwMDI2ZW50cnktXHUwMDNlbHJ1LCBuaWQsIG1lbWNnKTtcbiBcdHJjdV9yZWFkX3VubG9jaygpO1xuIH1cbiBcbkBAIC03NjQsNyArNzY0LDcgQEAgc3RhdGljIHZvaWQgenN3YXBfZW50cnlfY2FjaGVfZnJlZShzdHJ1Y3QgenN3YXBfZW50cnkgKmVudHJ5KVxuICAqL1xuIHN0YXRpYyB2b2lkIHpzd2FwX2VudHJ5X2ZyZWUoc3RydWN0IHpzd2FwX2VudHJ5ICplbnRyeSlcbiB7XG4tXHR6c3dhcF9scnVfZGVsKFx1MDAyNnpzd2FwX2xpc3RfbHJ1LCBlbnRyeSk7XG4rXHR6c3dhcF9scnVfZGVsKGVudHJ5KTtcbiBcdHpzX2ZyZWUoZW50cnktXHUwMDNlcG9vbC1cdTAwM2V6c19wb29sLCBlbnRyeS1cdTAwM2VoYW5kbGUpO1xuIFx0enN3YXBfcG9vbF9wdXQoZW50cnktXHUwMDNlcG9vbCk7XG4gXHRpZiAoZW50cnktXHUwMDNlb2JqY2cpIHtcbkBAIC0xNDYxLDcgKzE0NjEsNyBAQCBzdGF0aWMgYm9vbCB6c3dhcF9zdG9yZV9wYWdlKHN0cnVjdCBwYWdlICpwYWdlLFxuIFx0ZW50cnktXHUwMDNlcmVmZXJlbmNlZCA9IHRydWU7XG4gXHRpZiAoZW50cnktXHUwMDNlbGVuZ3RoKSB7XG4gXHRcdElOSVRfTElTVF9IRUFEKFx1MDAyNmVudHJ5LVx1MDAzZWxydSk7XG4tXHRcdHpzd2FwX2xydV9hZGQoXHUwMDI2enN3YXBfbGlzdF9scnUsIGVudHJ5KTtcbitcdFx0enN3YXBfbHJ1X2FkZChlbnRyeSk7XG4gXHR9XG4gXG4gXHRyZXR1cm4gdHJ1ZTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEzOjA3OjA3LjU2ODE5ODkzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU1MjY0MTgxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipac3dhcCBSZWZhY3RvcmluZyBBc3Nlc3NtZW50KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYG1tL3pzd2FwLmNgLiBTZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoOiB0aGV5J3ZlIHJlbW92ZWQgdGhlIGBzdHJ1Y3QgbGlzdF9scnUgKmxpc3RfbHJ1YCBhcmd1bWVudCBmcm9tIGB6c3dhcF9scnVfYWRkYCBhbmQgYHpzd2FwX2xydV9kZWxgLCBoYXJkY29kaW5nIHRoZSB1c2Ugb2YgYFx1MDAyNnpzd2FwX2xpc3RfbHJ1YCBpbnN0ZWFkLiBUaGlzIGlzIGNsZWFybHkgYSByZWZhY3RvcmluZywgYnV0IGl0ICppcyogYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSBtb2RpZmljYXRpb24gdG8gdGhlIGNvZGUgaXRzZWxmLCBob3dldmVyIG1pbmltYWwuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBhc3Nlc3MgaXRzIGZ1enppbmcgcG90ZW50aWFsLiBac3dhcCBpcywgb2YgY291cnNlLCB0aGUgY29tcHJlc3NlZCBSQU0gY2FjaGUgZm9yIHN3YXAgcGFnZXMuIENvcmUga2VybmVsIGxvZ2ljLCByaWdodD8gRGVmaW5pdGVseSBzb21ldGhpbmcgdG8gY29uc2lkZXIgZm9yIGZ1enppbmcuXG5cbldhaXQsIGxldCBtZSBqdXN0IGRvdWJsZSBjaGVjayB3aGF0IHRoaXMgaXMgZG9pbmcuLi4gYWgsIGl0J3MgKmp1c3QqIHJlbW92aW5nIGFuIGFyZ3VtZW50IGFuZCB1c2luZyBhIGdsb2JhbCB2YXJpYWJsZSBkaXJlY3RseS4gU3RpbGwsIHRoYXQgdG91Y2hlcyBjb3JlIGtlcm5lbCBzdHVmZiwgYW5kIGFueSBjaGFuZ2UgaGFzIHRoZSBwb3RlbnRpYWwgdG8gaW50cm9kdWNlIHN1YnRsZSBpc3N1ZXMuXG5cbkFscmlnaHQsIHRoZSBuZXh0IHN0ZXAgaXMgdG8gbmFpbCBkb3duIHRoZSBjb25maWd1cmF0aW9uLiBMZXQgbWUgc2VlLi4uIEknbGwgY2hlY2sgYG1tL0tjb25maWdgIG9yIHBvc3NpYmx5IGV2ZW4gYG1tL3pzd2FwLmNgIGl0c2VsZi4gWWVwLCB0aGUgY29uZmlnIGZvciBac3dhcCBpcyBgQ09ORklHX1pTV0FQYC4gVGhpcyBpcyBhIGdvb2QgcGxhY2UgdG8gc3RhcnQgbXkgaW52ZXN0aWdhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY3MSwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwMiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEzOjA3OjEyLjEyMDg0MzQ3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY5NjE1MjM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBaU1dBUFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vS2NvbmZpZz0xMj1tZW51Y29uZmlnIFNXQVBcXG4tLVxcbm1tL0tjb25maWctMjEtXFxubW0vS2NvbmZpZzoyMjpjb25maWcgWlNXQVBcXG5tbS9LY29uZmlnLTIzLVxcdGJvb2wgXFxcIkNvbXByZXNzZWQgY2FjaGUgZm9yIHN3YXAgcGFnZXNcXFwiXFxuLS1cXG5tbS9LY29uZmlnLTM0LVxcbm1tL0tjb25maWc6MzU6Y29uZmlnIFpTV0FQX0RFRkFVTFRfT05cXG5tbS9LY29uZmlnLTM2LVxcdGJvb2wgXFxcIkVuYWJsZSB0aGUgY29tcHJlc3NlZCBjYWNoZSBmb3Igc3dhcCBwYWdlcyBieSBkZWZhdWx0XFxcIlxcbi0tXFxubW0vS2NvbmZpZy00NC1cXG5tbS9LY29uZmlnOjQ1OmNvbmZpZyBaU1dBUF9TSFJJTktFUl9ERUZBVUxUX09OXFxubW0vS2NvbmZpZy00Ni1cXHRib29sIFxcXCJTaHJpbmsgdGhlIHpzd2FwIHBvb2wgb24gbWVtb3J5IHByZXNzdXJlXFxcIlxcbi0tXFxubW0vS2NvbmZpZz01OT1jaG9pY2VcXG4tLVxcbm1tL0tjb25maWctNzYtXFxubW0vS2NvbmZpZzo3Nzpjb25maWcgWlNXQVBfQ09NUFJFU1NPUl9ERUZBVUxUX0RFRkxBVEVcXG5tbS9LY29uZmlnLTc4LVxcdGJvb2wgXFxcIkRlZmxhdGVcXFwiXFxuLS1cXG5tbS9LY29uZmlnLTgyLVxcbm1tL0tjb25maWc6ODM6Y29uZmlnIFpTV0FQX0NPTVBSRVNTT1JfREVGQVVMVF9MWk9cXG5tbS9LY29uZmlnLTg0LVxcdGJvb2wgXFxcIkxaT1xcXCJcXG4tLVxcbm1tL0tjb25maWctODgtXFxubW0vS2NvbmZpZzo4OTpjb25maWcgWlNXQVBfQ09NUFJFU1NPUl9ERUZBVUxUXzg0Mlxcbm1tL0tjb25maWctOTAtXFx0Ym9vbCBcXFwiODQyXFxcIlxcbi0tXFxubW0vS2NvbmZpZy05NC1cXG5tbS9LY29uZmlnOjk1OmNvbmZpZyBaU1dBUF9DT01QUkVTU09SX0RFRkFVTFRfTFo0XFxubW0vS2NvbmZpZy05Ni1cXHRib29sIFxcXCJMWjRcXFwiXFxuLS1cXG5tbS9LY29uZmlnLTEwMC1cXG5tbS9LY29uZmlnOjEwMTpjb25maWcgWlNXQVBfQ09NUFJFU1NPUl9ERUZBVUxUX0xaNEhDXFxubW0vS2NvbmZpZy0xMDItXFx0Ym9vbCBcXFwiTFo0SENcXFwiXFxuLS1cXG5tbS9LY29uZmlnLTEwNi1cXG5tbS9LY29uZmlnOjEwNzpjb25maWcgWlNXQVBfQ09NUFJFU1NPUl9ERUZBVUxUX1pTVERcXG5tbS9LY29uZmlnLTEwOC1cXHRib29sIFxcXCJ6c3RkXFxcIlxcbi0tXFxubW0vS2NvbmZpZz0xMTI9ZW5kY2hvaWNlXFxubW0vS2NvbmZpZy0xMTMtXFxubW0vS2NvbmZpZzoxMTQ6Y29uZmlnIFpTV0FQX0NPTVBSRVNTT1JfREVGQVVMVFxcbm1tL0tjb25maWctMTE1LSAgICAgICBzdHJpbmdcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTM6MDc6MTIuMTkwNDY0Njc5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk5MjY1MzUzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgWlNXQVAgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIHRoZSBhY3RpdmUgY29uZmlndXJhdGlvbiBpcyBjdXJyZW50bHkgc2V0IHRvIGBaU1dBUGAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIklzIHRoaXMgdGhlICpvbmx5KiBjb25maWd1cmF0aW9uIG9wdGlvbiwgb3IgYXJlIHRoZXJlIG90aGVycyB3ZSBzaG91bGQgYmUgYXdhcmUgb2Y/XCIgTGV0J3MgZGlnIGRlZXBlci4gVGhlIHBvdGVudGlhbCBmb3IgYSBzZXR0aW5nIGNhbGxlZCBgWlNXQVBfREVGQVVMVF9PTmAgaGFzIG1lIGludHJpZ3VlZC4gRW5hYmxpbmcgYFpTV0FQYCBieSBkZWZhdWx0IHdvdWxkIHNpbXBsaWZ5IHRoaW5ncyBmb3IgbWFueSB1c2Vycywgc28gSSdtIGludGVyZXN0ZWQgaW4gdW5kZXJzdGFuZGluZyB0aGUgaW1wbGljYXRpb25zIG9mIHRoYXQuIEJlZm9yZSBJIGNvbW1pdCB0byBhbnkgY2hhbmdlcywgSSBuZWVkIHRvIHRob3JvdWdobHkgdW5kZXJzdGFuZCB0aGlzLiBJdCdzIHRpbWUgdG8gY2hlY2sgdGhlIGRlcGVuZGVuY2llcyBvZiBgWlNXQVBgLiBXaGF0IG90aGVyIGNvbXBvbmVudHMgb3IgZmVhdHVyZXMgcmVseSBvbiwgb3IgYXJlIHJlbGllZCB1cG9uIGJ5LCB0aGlzIHNldHRpbmc/IFVuZGVyc3RhbmRpbmcgdGhlIGNvbXBsZXRlIHBpY3R1cmUgaXMgY3JpdGljYWwgYmVmb3JlIG1ha2luZyBhIGRlY2lzaW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzA2LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTM6MDc6MTUuMTgzMTIwMTgyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkyMzg3NjU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBaU1dBUFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL0tjb25maWc9MTI9bWVudWNvbmZpZyBTV0FQXFxuLS1cXG5tbS9LY29uZmlnLTIxLVxcbm1tL0tjb25maWc6MjI6Y29uZmlnIFpTV0FQXFxubW0vS2NvbmZpZy0yMy1cXHRib29sIFxcXCJDb21wcmVzc2VkIGNhY2hlIGZvciBzd2FwIHBhZ2VzXFxcIlxcbi0tXFxubW0vS2NvbmZpZy0zNC1cXG5tbS9LY29uZmlnOjM1OmNvbmZpZyBaU1dBUF9ERUZBVUxUX09OXFxubW0vS2NvbmZpZy0zNi1cXHRib29sIFxcXCJFbmFibGUgdGhlIGNvbXByZXNzZWQgY2FjaGUgZm9yIHN3YXAgcGFnZXMgYnkgZGVmYXVsdFxcXCJcXG4tLVxcbm1tL0tjb25maWctNDQtXFxubW0vS2NvbmZpZzo0NTpjb25maWcgWlNXQVBfU0hSSU5LRVJfREVGQVVMVF9PTlxcbm1tL0tjb25maWctNDYtXFx0Ym9vbCBcXFwiU2hyaW5rIHRoZSB6c3dhcCBwb29sIG9uIG1lbW9yeSBwcmVzc3VyZVxcXCJcXG4tLVxcbm1tL0tjb25maWc9NTk9Y2hvaWNlXFxuLS1cXG5tbS9LY29uZmlnLTc2LVxcbm1tL0tjb25maWc6Nzc6Y29uZmlnIFpTV0FQX0NPTVBSRVNTT1JfREVGQVVMVF9ERUZMQVRFXFxubW0vS2NvbmZpZy03OC1cXHRib29sIFxcXCJEZWZsYXRlXFxcIlxcbi0tXFxubW0vS2NvbmZpZy04Mi1cXG5tbS9LY29uZmlnOjgzOmNvbmZpZyBaU1dBUF9DT01QUkVTU09SX0RFRkFVTFRfTFpPXFxubW0vS2NvbmZpZy04NC1cXHRib29sIFxcXCJMWk9cXFwiXFxuLS1cXG5tbS9LY29uZmlnLTg4LVxcbm1tL0tjb25maWc6ODk6Y29uZmlnIFpTV0FQX0NPTVBSRVNTT1JfREVGQVVMVF84NDJcXG5tbS9LY29uZmlnLTkwLVxcdGJvb2wgXFxcIjg0MlxcXCJcXG4tLVxcbm1tL0tjb25maWctOTQtXFxubW0vS2NvbmZpZzo5NTpjb25maWcgWlNXQVBfQ09NUFJFU1NPUl9ERUZBVUxUX0xaNFxcbm1tL0tjb25maWctOTYtXFx0Ym9vbCBcXFwiTFo0XFxcIlxcbi0tXFxubW0vS2NvbmZpZy0xMDAtXFxubW0vS2NvbmZpZzoxMDE6Y29uZmlnIFpTV0FQX0NPTVBSRVNTT1JfREVGQVVMVF9MWjRIQ1xcbm1tL0tjb25maWctMTAyLVxcdGJvb2wgXFxcIkxaNEhDXFxcIlxcbi0tXFxubW0vS2NvbmZpZy0xMDYtXFxubW0vS2NvbmZpZzoxMDc6Y29uZmlnIFpTV0FQX0NPTVBSRVNTT1JfREVGQVVMVF9aU1REXFxubW0vS2NvbmZpZy0xMDgtXFx0Ym9vbCBcXFwienN0ZFxcXCJcXG4tLVxcbm1tL0tjb25maWc9MTEyPWVuZGNob2ljZVxcbm1tL0tjb25maWctMTEzLVxcbm1tL0tjb25maWc6MTE0OmNvbmZpZyBaU1dBUF9DT01QUkVTU09SX0RFRkFVTFRcXG5tbS9LY29uZmlnLTExNS0gICAgICAgc3RyaW5nXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEzOjA3OjE1LjI3NTUxMzU3MVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwODQ1Mjc3NjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gdGhlIEtlcm5lbCBDb25maWd1cmF0aW9uIExhbmRzY2FwZSoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHNvbWV0aGluZyByZWxhdGVkIHRvIGtlcm5lbCBjb25maWd1cmF0aW9uLiBMZXQncyBzdGFydCBkaWdnaW5nIGludG8gdGhlIGBtbS9LY29uZmlnYCBmaWxlLiBJJ20gZ29pbmcgdG8gZm9jdXMgbXkgaW5pdGlhbCBhdHRlbnRpb24gYXJvdW5kIGxpbmUgMjIg4oCTIHRoYXQncyBvZnRlbiBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIGEgaGlnaC1sZXZlbCBvdmVydmlldyBpbiB0aGVzZSBLY29uZmlnIGZpbGVzLiBUaGUgc3RydWN0dXJlJ3MgdXN1YWxseSBwcmV0dHkgY29uc2lzdGVudCwgc28gSSdtIGV4cGVjdGluZyB0byBmaW5kIGVpdGhlciBhIG5ldyBvcHRpb24gZGVmaW5pdGlvbiwgYSBtZW51IGVudHJ5LCBvciBwZXJoYXBzIGEgY29uZGl0aW9uYWwgaW5jbHVkZSB0aGF0IHNldHMgdGhlIHN0YWdlIGZvciBhIHJlbGF0ZWQgY29uZmlndXJhdGlvbiBmZWF0dXJlLiBMaW5lIDIyIHNwZWNpZmljYWxseSBtaWdodCBiZSByZWxldmFudCB0byB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgc3Vic3lzdGVtIEknbSBmb2N1c2luZyBvbi4gSSdsbCBtZW50YWxseSBub3RlIHRoZSBjb250ZXh0IGFyb3VuZCB0aGF0IGxpbmUg4oCTIGFueSBzdXJyb3VuZGluZyBjb21tZW50cyBvciBvdGhlciBLY29uZmlnIG9wdGlvbnMg4oCTIHRvIGdldCB0aGUgZnVsbCBwaWN0dXJlIGFuZCBhbnkgZGVwZW5kZW5jaWVzLiBGcm9tIHRoZXJlLCBJIGNhbiBkZWNpZGUgaWYgdGhhdCdzIHRoZSBjb3JyZWN0IGZpbGUsIG9yIGlmIEkgc2hvdWxkIG1vdmUgb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0ODEsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxMzowNzoxOC4zNjAwNDQzMTNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NzYyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJtbS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE1LFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDE1OlxcdFxcdGRlZmF1bHQgeVxcbiAgMTY6XFx0XFx0aGVscFxcbiAgMTc6XFx0XFx0ICBUaGlzIG9wdGlvbiBhbGxvd3MgeW91IHRvIGNob29zZSB3aGV0aGVyIHlvdSB3YW50IHRvIGhhdmUgc3VwcG9ydFxcbiAgMTg6XFx0XFx0ICBmb3Igc28gY2FsbGVkIHN3YXAgZGV2aWNlcyBvciBzd2FwIGZpbGVzIGluIHlvdXIga2VybmVsIHRoYXQgYXJlXFxuICAxOTpcXHRcXHQgIHVzZWQgdG8gcHJvdmlkZSBtb3JlIHZpcnR1YWwgbWVtb3J5IHRoYW4gdGhlIGFjdHVhbCBSQU0gcHJlc2VudFxcbiAgMjA6XFx0XFx0ICBpbiB5b3VyIGNvbXB1dGVyLiAgSWYgdW5zdXJlIHNheSBZLlxcbiAgMjE6XFx0XFxuICAyMjpcXHRjb25maWcgWlNXQVBcXG4gIDIzOlxcdFxcdGJvb2wgXFxcIkNvbXByZXNzZWQgY2FjaGUgZm9yIHN3YXAgcGFnZXNcXFwiXFxuICAyNDpcXHRcXHRkZXBlbmRzIG9uIFNXQVBcXG4gIDI1OlxcdFxcdHNlbGVjdCBDUllQVE9cXG4gIDI2OlxcdFxcdHNlbGVjdCBaU01BTExPQ1xcbiAgMjc6XFx0XFx0aGVscFxcbiAgMjg6XFx0XFx0ICBBIGxpZ2h0d2VpZ2h0IGNvbXByZXNzZWQgY2FjaGUgZm9yIHN3YXAgcGFnZXMuICBJdCB0YWtlc1xcbiAgMjk6XFx0XFx0ICBwYWdlcyB0aGF0IGFyZSBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyBzd2FwcGVkIG91dCBhbmQgYXR0ZW1wdHMgdG9cXG4gIDMwOlxcdFxcdCAgY29tcHJlc3MgdGhlbSBpbnRvIGEgZHluYW1pY2FsbHkgYWxsb2NhdGVkIFJBTS1iYXNlZCBtZW1vcnkgcG9vbC5cXG4gIDMxOlxcdFxcdCAgVGhpcyBjYW4gcmVzdWx0IGluIGEgc2lnbmlmaWNhbnQgSS9PIHJlZHVjdGlvbiBvbiBzd2FwIGRldmljZSBhbmQsXFxuICAzMjpcXHRcXHQgIGluIHRoZSBjYXNlIHdoZXJlIGRlY29tcHJlc3NpbmcgZnJvbSBSQU0gaXMgZmFzdGVyIHRoYW4gc3dhcCBkZXZpY2VcXG4gIDMzOlxcdFxcdCAgcmVhZHMsIGNhbiBhbHNvIGltcHJvdmUgd29ya2xvYWQgcGVyZm9ybWFuY2UuXFxuICAzNDpcXHRcXG4gIDM1OlxcdGNvbmZpZyBaU1dBUF9ERUZBVUxUX09OXFxuICAzNjpcXHRcXHRib29sIFxcXCJFbmFibGUgdGhlIGNvbXByZXNzZWQgY2FjaGUgZm9yIHN3YXAgcGFnZXMgYnkgZGVmYXVsdFxcXCJcXG4gIDM3OlxcdFxcdGRlcGVuZHMgb24gWlNXQVBcXG4gIDM4OlxcdFxcdGhlbHBcXG4gIDM5OlxcdFxcdCAgSWYgc2VsZWN0ZWQsIHRoZSBjb21wcmVzc2VkIGNhY2hlIGZvciBzd2FwIHBhZ2VzIHdpbGwgYmUgZW5hYmxlZFxcbiAgNDA6XFx0XFx0ICBhdCBib290LCBvdGhlcndpc2UgaXQgd2lsbCBiZSBkaXNhYmxlZC5cXG4gIDQxOlxcdFxcbiAgNDI6XFx0XFx0ICBUaGUgc2VsZWN0aW9uIG1hZGUgaGVyZSBjYW4gYmUgb3ZlcnJpZGRlbiBieSB1c2luZyB0aGUga2VybmVsXFxuICA0MzpcXHRcXHQgIGNvbW1hbmQgbGluZSAnenN3YXAuZW5hYmxlZD0nIG9wdGlvbi5cXG4gIDQ0OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxMzowNzoxOC4zNjAxNDMwODNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDQzMDA5OTI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgWlNXQVAgTW9kdWxlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBaU1dBUCBjb2RlIGFuZCBpbW1lZGlhdGVseSBzZWUgd2UgbmVlZCB0byBjb25zaWRlciBgWlNXQVBgLCBgWlNXQVBfREVGQVVMVF9PTmAsIGFuZCBgU1dBUGAg4oCTIHRob3NlIGFyZSB0aGUga2V5IGNvbnN0YW50cyBvciBkZWZpbml0aW9ucyBpbiBwbGF5LiBUaGUgcGF0Y2ggaXMgdG91Y2hpbmcgYHpzd2FwX2xydV9hZGRgIGFuZCBgenN3YXBfbHJ1X2RlbGAsIHdoaWNoIGFyZSBzdGF0aWMgZnVuY3Rpb25zLiBTdGF0aWMgZnVuY3Rpb25zIGFyZSwgYnkgdGhlaXIgbmF0dXJlLCBsb2NhbGl6ZWQsIG1ha2luZyB0aGVtIGVhc2llciB0byB0cmFjZS4gVGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHBpbnBvaW50IHRoZSBjYWxsZXJzIG9mIHRoZXNlIGZ1bmN0aW9ucy4gS25vd2luZyB0aG9zZSBjYWxsZXJzIGlzIGdvaW5nIHRvIGZvY3VzIG15IGFuYWx5c2lzLCBzaG93IG1lIHdoYXQgdGhlIGFmZmVjdGVkIGNvbnRyb2wgZmxvdyBpcy5cblxuQWgsIGhlcmUgd2UgZ28sIGB6c3dhcF9lbnRyeV9mcmVlYCBjYWxscyBgenN3YXBfbHJ1X2RlbGAgYW5kIGB6c3dhcF9zdG9yZV9wYWdlYCBjYWxscyBgenN3YXBfbHJ1X2FkZGAuIFdhaXQgYSBtaW51dGUsIEkgdGhpbmsgYHpzd2FwX3N0b3JlX3BhZ2VgIGlzIHN0YXRpYywgaXNuJ3QgaXQ/IEJldHRlciBkb3VibGUtY2hlY2sgdGhhdCBieSBoZWFkaW5nIG92ZXIgdG8gYG1tL3pzd2FwLmNgIHRvIGNvbmZpcm0gbXkgc3VzcGljaW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTUwLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTM6MDc6MjIuNDAzMTU1ODAxWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MjM4NTY4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ6c3dhcF9zdG9yZV9wYWdlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL3pzd2FwLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0venN3YXAuYz0xMzA2PXN0YXRpYyB2b2lkIHNocmlua193b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3KVxcbi0tXFxubW0venN3YXAuYy0xMzk1LVxcbm1tL3pzd2FwLmM6MTM5NjpzdGF0aWMgYm9vbCB6c3dhcF9zdG9yZV9wYWdlKHN0cnVjdCBwYWdlICpwYWdlLFxcbm1tL3pzd2FwLmMtMTM5Ny1cXHRcXHRcXHQgICAgIHN0cnVjdCBvYmpfY2dyb3VwICpvYmpjZyxcXG4tLVxcbm1tL3pzd2FwLmM9MTQ3Nj1ib29sIHpzd2FwX3N0b3JlKHN0cnVjdCBmb2xpbyAqZm9saW8pXFxuLS1cXG5tbS96c3dhcC5jLTE1MjAtXFxubW0venN3YXAuYzoxNTIxOlxcdFxcdGlmICghenN3YXBfc3RvcmVfcGFnZShwYWdlLCBvYmpjZywgcG9vbCkpXFxubW0venN3YXAuYy0xNTIyLVxcdFxcdFxcdGdvdG8gcHV0X3Bvb2w7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEzOjA3OjIyLjQ2NTU0NjA5WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMzg3MTI4MjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nIGFzIGFuIGV4cGVydDpcblxuKipEaXZpbmcgaW50byB0aGUgWnN3YXAgUGFnZSBIYW5kbGluZyoqXG5cblJpZ2h0LCBzbyBgenN3YXBfc3RvcmVgIGlzIGNhbGxpbmcgYHpzd2FwX3N0b3JlX3BhZ2VgLiBNYWtlcyBzZW5zZSwgdGhhdCdzIHRoZSBjb3JlIG9mIGhvdyB0aGUgZGF0YSBnZXRzIHB1dCBpbnRvIHRoZSBjb21wcmVzc2VkIGNhY2hlLiBOb3Qgc3RhdGljLCBodWg/IE9rYXksIEknbGwga2VlcCB0aGF0IGluIG1pbmQuIFRoYXQgaW1wbGllcyBpdCBtaWdodCBiZSB1c2VkIGZyb20gYSBmZXcgZGlmZmVyZW50IHBsYWNlcyB3aXRoaW4gdGhlIHpzd2FwIGFyY2hpdGVjdHVyZS4gTm93LCBsZXQncyBwaXZvdCBhbmQgdGFrZSBhIGxvb2sgYXQgYHpzd2FwX2VudHJ5X2ZyZWVgLiBVbmRlcnN0YW5kaW5nIGhvdyBlbnRyaWVzIGFyZSBmcmVlZCBpcyBjcml0aWNhbCBmb3IgYSBwZXJmb3JtYW50IGNhY2hlOyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbGlmZWN5Y2xlIG9mIHRoZXNlIGVudHJpZXMgZnJvbSBzdG9yYWdlIHRvIGRlYWxsb2NhdGlvbi4gTGV0J3Mgc2VlIGhvdyB0aGF0IGludGVncmF0ZXMgd2l0aCB0aGUgc3RvcmluZyBwcm9jZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NzUwLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTM6MDc6MjUuNjA0MjYyMzQxWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NTc3NzUzOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ6c3dhcF9lbnRyeV9mcmVlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL3pzd2FwLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0venN3YXAuYz03NTY9c3RhdGljIHZvaWQgenN3YXBfZW50cnlfY2FjaGVfZnJlZShzdHJ1Y3QgenN3YXBfZW50cnkgKmVudHJ5KVxcbi0tXFxubW0venN3YXAuYy03NjQtICovXFxubW0venN3YXAuYzo3NjU6c3RhdGljIHZvaWQgenN3YXBfZW50cnlfZnJlZShzdHJ1Y3QgenN3YXBfZW50cnkgKmVudHJ5KVxcbm1tL3pzd2FwLmMtNzY2LXtcXG4tLVxcbm1tL3pzd2FwLmM9OTg3PXN0YXRpYyBpbnQgenN3YXBfd3JpdGViYWNrX2VudHJ5KHN0cnVjdCB6c3dhcF9lbnRyeSAqZW50cnksXFxuLS1cXG5tbS96c3dhcC5jLTEwNDItXFxubW0venN3YXAuYzoxMDQzOlxcdHpzd2FwX2VudHJ5X2ZyZWUoZW50cnkpO1xcbm1tL3pzd2FwLmMtMTA0NC1cXG4tLVxcbm1tL3pzd2FwLmM9MTM5Nj1zdGF0aWMgYm9vbCB6c3dhcF9zdG9yZV9wYWdlKHN0cnVjdCBwYWdlICpwYWdlLFxcbi0tXFxubW0venN3YXAuYy0xNDI5LVxcdGlmIChvbGQpXFxubW0venN3YXAuYzoxNDMwOlxcdFxcdHpzd2FwX2VudHJ5X2ZyZWUob2xkKTtcXG5tbS96c3dhcC5jLTE0MzEtXFxuLS1cXG5tbS96c3dhcC5jLTE0MzUtXFx0ICogY2hhcmdlIHpzd2FwIG1lbW9yeSwgYW5kIGluY3JlbWVudCB6c3dhcF9zdG9yZWRfcGFnZXMuXFxubW0venN3YXAuYzoxNDM2OlxcdCAqIFRoZSBvcHBvc2l0ZSBhY3Rpb25zIHdpbGwgYmUgcGVyZm9ybWVkIGJ5IHpzd2FwX2VudHJ5X2ZyZWUoKVxcbm1tL3pzd2FwLmMtMTQzNy1cXHQgKiB3aGVuIHRoZSBlbnRyeSBpcyByZW1vdmVkIGZyb20gdGhlIHRyZWUuXFxuLS1cXG5tbS96c3dhcC5jPTE0NzY9Ym9vbCB6c3dhcF9zdG9yZShzdHJ1Y3QgZm9saW8gKmZvbGlvKVxcbi0tXFxubW0venN3YXAuYy0xNTU0LVxcdFxcdFxcdGlmIChlbnRyeSlcXG5tbS96c3dhcC5jOjE1NTU6XFx0XFx0XFx0XFx0enN3YXBfZW50cnlfZnJlZShlbnRyeSk7XFxubW0venN3YXAuYy0xNTU2LVxcdFxcdH1cXG4tLVxcbm1tL3pzd2FwLmM9MTU4Mj1pbnQgenN3YXBfbG9hZChzdHJ1Y3QgZm9saW8gKmZvbGlvKVxcbi0tXFxubW0venN3YXAuYy0xNjI4LVxcdHhhX2VyYXNlKHRyZWUsIG9mZnNldCk7XFxubW0venN3YXAuYzoxNjI5OlxcdHpzd2FwX2VudHJ5X2ZyZWUoZW50cnkpO1xcbm1tL3pzd2FwLmMtMTYzMC1cXG4tLVxcbm1tL3pzd2FwLmM9MTYzNT12b2lkIHpzd2FwX2ludmFsaWRhdGUoc3dwX2VudHJ5X3Qgc3dwKVxcbi0tXFxubW0venN3YXAuYy0xNjQ1LVxcdGlmIChlbnRyeSlcXG5tbS96c3dhcC5jOjE2NDY6XFx0XFx0enN3YXBfZW50cnlfZnJlZShlbnRyeSk7XFxubW0venN3YXAuYy0xNjQ3LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTM6MDc6MjUuNjgwMDQ0MDNaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI3MTU4ODEwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgbXkgb3duIHRoaW5raW5nIHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8genN3YXAgRnVuY3Rpb24gU2NvcGUqKlxuXG5SaWdodCwgbGV0J3MgdGFrZSBhIGxvb2sgYXQgdGhlc2UgYHpzd2FwX3N0b3JlYCwgYHpzd2FwX2xvYWRgLCBhbmQgYHpzd2FwX2ludmFsaWRhdGVgIGZ1bmN0aW9ucy4gVGhlIGZhY3QgdGhhdCB0aGV5IGFyZW4ndCBkZWNsYXJlZCBhcyBgc3RhdGljYCBpbW1lZGlhdGVseSBmbGFncyB0aGVtIGFzIHBvdGVudGlhbCBjYW5kaWRhdGVzIGZvciBicm9hZGVyIHVzZSBiZXlvbmQgdGhlaXIgaW1tZWRpYXRlIHNvdXJjZSBmaWxlLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGV5J3JlIGFjdHVhbGx5ICp1c2VkKiBhbmQgaWYgdGhleSdyZSBwYXJ0IG9mIHRoZSBwdWJsaWMgQVBJIG9yIGp1c3QgaW50ZXJuYWwgbW0vIGltcGxlbWVudGF0aW9ucy4gU28sIEkgbmVlZCB0byB2ZXJpZnkgaWYgdGhleSBhcmUgZXhwb3J0ZWQgd2l0aCB0aGUgYEVYUE9SVF9TWU1CT0xgIG1hY3JvLCBpbmRpY2F0aW5nIHRoYXQgb3RoZXIgbW9kdWxlcyBvciBwYXJ0cyBvZiB0aGUga2VybmVsIGNvdWxkIGJlIHVzaW5nIHRoZW0sIG9yIGlmIHRoZXkncmUgc2NvcGVkIHN0cmljdGx5IHdpdGhpbiB0aGUgYG1tL2AgZGlyZWN0b3J5LCB3aGljaCB3b3VsZCBzdWdnZXN0IGFuIGludGVybmFsLW9ubHkgaW1wbGVtZW50YXRpb24uIFRpbWUgdG8gZGlnIGludG8gdGhlIGNvZGUgYW5kIHNlZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjU5NCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEzOjA3OjI4Ljk1MTYzNDY2WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MzYxMjkxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ6c3dhcF9zdG9yZXx6c3dhcF9sb2FkfHpzd2FwX2ludmFsaWRhdGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL3BhZ2VfaW8uYz0yNTE9aW50IHN3YXBfd3JpdGVvdXQoc3RydWN0IGZvbGlvICpmb2xpbywgc3RydWN0IHN3YXBfaW9jYiAqKnN3YXBfcGx1ZylcXG4tLVxcbm1tL3BhZ2VfaW8uYy0yODQtXFxubW0vcGFnZV9pby5jOjI4NTpcXHRpZiAoenN3YXBfc3RvcmUoZm9saW8pKSB7XFxubW0vcGFnZV9pby5jLTI4Ni1cXHRcXHRjb3VudF9tdGhwX3N0YXQoZm9saW9fb3JkZXIoZm9saW8pLCBNVEhQX1NUQVRfWlNXUE9VVCk7XFxuLS1cXG5tbS9wYWdlX2lvLmM9NjYxPXZvaWQgc3dhcF9yZWFkX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8sIHN0cnVjdCBzd2FwX2lvY2IgKipwbHVnKVxcbi0tXFxubW0vcGFnZV9pby5jLTY4OC1cXG5tbS9wYWdlX2lvLmM6Njg5OlxcdGlmICh6c3dhcF9sb2FkKGZvbGlvKSAhPSAtRU5PRU5UKVxcbm1tL3BhZ2VfaW8uYy02OTAtXFx0XFx0Z290byBmaW5pc2g7XFxuLS1cXG5tbS9zd2FwZmlsZS5jPTEzMTY9c3RhdGljIHZvaWQgc3dhcF9yYW5nZV9mcmVlKHN0cnVjdCBzd2FwX2luZm9fc3RydWN0ICpzaSwgdW5zaWduZWQgbG9uZyBvZmZzZXQsXFxuLS1cXG5tbS9zd2FwZmlsZS5jLTEzMjMtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG5yX2VudHJpZXM7IGkrKylcXG5tbS9zd2FwZmlsZS5jOjEzMjQ6XFx0XFx0enN3YXBfaW52YWxpZGF0ZShzd3BfZW50cnkoc2ktXFx1MDAzZXR5cGUsIG9mZnNldCArIGkpKTtcXG5tbS9zd2FwZmlsZS5jLTEzMjUtXFxuLS1cXG5tbS96c3dhcC5jLTQ2LS8qIFRoZSBudW1iZXIgb2YgcGFnZXMgY3VycmVudGx5IHN0b3JlZCBpbiB6c3dhcCAqL1xcbm1tL3pzd2FwLmM6NDc6YXRvbWljX2xvbmdfdCB6c3dhcF9zdG9yZWRfcGFnZXMgPSBBVE9NSUNfTE9OR19JTklUKDApO1xcbm1tL3pzd2FwLmMtNDgtLyogVGhlIG51bWJlciBvZiBpbmNvbXByZXNzaWJsZSBwYWdlcyBjdXJyZW50bHkgc3RvcmVkIGluIHpzd2FwICovXFxubW0venN3YXAuYzo0OTpzdGF0aWMgYXRvbWljX2xvbmdfdCB6c3dhcF9zdG9yZWRfaW5jb21wcmVzc2libGVfcGFnZXMgPSBBVE9NSUNfTE9OR19JTklUKDApO1xcbm1tL3pzd2FwLmMtNTAtXFxuLS1cXG5tbS96c3dhcC5jPTc2NT1zdGF0aWMgdm9pZCB6c3dhcF9lbnRyeV9mcmVlKHN0cnVjdCB6c3dhcF9lbnRyeSAqZW50cnkpXFxuLS1cXG5tbS96c3dhcC5jLTc3NC1cXHRpZiAoZW50cnktXFx1MDAzZWxlbmd0aCA9PSBQQUdFX1NJWkUpXFxubW0venN3YXAuYzo3NzU6XFx0XFx0YXRvbWljX2xvbmdfZGVjKFxcdTAwMjZ6c3dhcF9zdG9yZWRfaW5jb21wcmVzc2libGVfcGFnZXMpO1xcbm1tL3pzd2FwLmMtNzc2LVxcdHpzd2FwX2VudHJ5X2NhY2hlX2ZyZWUoZW50cnkpO1xcbm1tL3pzd2FwLmM6Nzc3OlxcdGF0b21pY19sb25nX2RlYyhcXHUwMDI2enN3YXBfc3RvcmVkX3BhZ2VzKTtcXG5tbS96c3dhcC5jLTc3OC19XFxuLS1cXG5tbS96c3dhcC5jPTkyND1zdGF0aWMgYm9vbCB6c3dhcF9kZWNvbXByZXNzKHN0cnVjdCB6c3dhcF9lbnRyeSAqZW50cnksIHN0cnVjdCBmb2xpbyAqZm9saW8pXFxuLS1cXG5tbS96c3dhcC5jLTk4MS0gKiB0byB0aGUgc3dhcCBkZXZpY2UuICBXZSBhcmUgYmFzaWNhbGx5IHJlc3VtaW5nIHRoZSBzYW1lIHN3YXBcXG5tbS96c3dhcC5jOjk4MjogKiB3cml0ZWJhY2sgcGF0aCB0aGF0IHdhcyBpbnRlcmNlcHRlZCB3aXRoIHRoZSB6c3dhcF9zdG9yZSgpXFxubW0venN3YXAuYy05ODMtICogaW4gdGhlIGZpcnN0IHBsYWNlLiAgQWZ0ZXIgdGhlIGZvbGlvIGhhcyBiZWVuIGRlY29tcHJlc3NlZCBpbnRvXFxuLS1cXG5tbS96c3dhcC5jPTExOTA9c3RhdGljIHVuc2lnbmVkIGxvbmcgenN3YXBfc2hyaW5rZXJfY291bnQoc3RydWN0IHNocmlua2VyICpzaHJpbmtlcixcXG4tLVxcbm1tL3pzd2FwLmMtMTIyNC1cXHRcXHRucl9iYWNraW5nID0genN3YXBfdG90YWxfcGFnZXMoKTtcXG5tbS96c3dhcC5jOjEyMjU6XFx0XFx0bnJfc3RvcmVkID0gYXRvbWljX2xvbmdfcmVhZChcXHUwMDI2enN3YXBfc3RvcmVkX3BhZ2VzKTtcXG5tbS96c3dhcC5jLTEyMjYtXFx0fVxcbi0tXFxubW0venN3YXAuYz0xMzA2PXN0YXRpYyB2b2lkIHNocmlua193b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3KVxcbi0tXFxubW0venN3YXAuYy0xMzk1LVxcbm1tL3pzd2FwLmM6MTM5NjpzdGF0aWMgYm9vbCB6c3dhcF9zdG9yZV9wYWdlKHN0cnVjdCBwYWdlICpwYWdlLFxcbm1tL3pzd2FwLmMtMTM5Ny1cXHRcXHRcXHQgICAgIHN0cnVjdCBvYmpfY2dyb3VwICpvYmpjZyxcXG4tLVxcbm1tL3pzd2FwLmMtMTQzNC1cXHQgKiBubyBmdXJ0aGVyIHBvc3NpYmlsaXR5IG9mIGZhaWx1cmUuIEdyYWIgcmVmcyB0byB0aGUgcG9vbCBhbmQgb2JqY2csXFxubW0venN3YXAuYzoxNDM1OlxcdCAqIGNoYXJnZSB6c3dhcCBtZW1vcnksIGFuZCBpbmNyZW1lbnQgenN3YXBfc3RvcmVkX3BhZ2VzLlxcbm1tL3pzd2FwLmMtMTQzNi1cXHQgKiBUaGUgb3Bwb3NpdGUgYWN0aW9ucyB3aWxsIGJlIHBlcmZvcm1lZCBieSB6c3dhcF9lbnRyeV9mcmVlKClcXG4tLVxcbm1tL3pzd2FwLmMtMTQ0My1cXHR9XFxubW0venN3YXAuYzoxNDQ0OlxcdGF0b21pY19sb25nX2luYyhcXHUwMDI2enN3YXBfc3RvcmVkX3BhZ2VzKTtcXG5tbS96c3dhcC5jLTE0NDUtXFx0aWYgKGVudHJ5LVxcdTAwM2VsZW5ndGggPT0gUEFHRV9TSVpFKVxcbm1tL3pzd2FwLmM6MTQ0NjpcXHRcXHRhdG9taWNfbG9uZ19pbmMoXFx1MDAyNnpzd2FwX3N0b3JlZF9pbmNvbXByZXNzaWJsZV9wYWdlcyk7XFxubW0venN3YXAuYy0xNDQ3LVxcbi0tXFxubW0venN3YXAuYy0xNDc1LVxcbm1tL3pzd2FwLmM6MTQ3Njpib29sIHpzd2FwX3N0b3JlKHN0cnVjdCBmb2xpbyAqZm9saW8pXFxubW0venN3YXAuYy0xNDc3LXtcXG4tLVxcbm1tL3pzd2FwLmMtMTUyMC1cXG5tbS96c3dhcC5jOjE1MjE6XFx0XFx0aWYgKCF6c3dhcF9zdG9yZV9wYWdlKHBhZ2UsIG9iamNnLCBwb29sKSlcXG5tbS96c3dhcC5jLTE1MjItXFx0XFx0XFx0Z290byBwdXRfcG9vbDtcXG4tLVxcbm1tL3pzd2FwLmMtMTU2Mi0vKipcXG5tbS96c3dhcC5jOjE1NjM6ICogenN3YXBfbG9hZCgpIC0gbG9hZCBhIGZvbGlvIGZyb20genN3YXBcXG5tbS96c3dhcC5jLTE1NjQtICogQGZvbGlvOiBmb2xpbyB0byBsb2FkXFxuLS1cXG5tbS96c3dhcC5jLTE1ODEtICovXFxubW0venN3YXAuYzoxNTgyOmludCB6c3dhcF9sb2FkKHN0cnVjdCBmb2xpbyAqZm9saW8pXFxubW0venN3YXAuYy0xNTgzLXtcXG4tLVxcbm1tL3pzd2FwLmMtMTYzNC1cXG5tbS96c3dhcC5jOjE2MzU6dm9pZCB6c3dhcF9pbnZhbGlkYXRlKHN3cF9lbnRyeV90IHN3cClcXG5tbS96c3dhcC5jLTE2MzYte1xcbi0tXFxubW0venN3YXAuYz0xNzAxPXN0YXRpYyBpbnQgZGVidWdmc19nZXRfc3RvcmVkX3BhZ2VzKHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxcbm1tL3pzd2FwLmMtMTcwMi17XFxubW0venN3YXAuYzoxNzAzOlxcdCp2YWwgPSBhdG9taWNfbG9uZ19yZWFkKFxcdTAwMjZ6c3dhcF9zdG9yZWRfcGFnZXMpO1xcbm1tL3pzd2FwLmMtMTcwNC1cXHRyZXR1cm4gMDtcXG4tLVxcbm1tL3pzd2FwLmM9MTcwOD1zdGF0aWMgaW50IGRlYnVnZnNfZ2V0X3N0b3JlZF9pbmNvbXByZXNzaWJsZV9wYWdlcyh2b2lkICpkYXRhLCB1NjQgKnZhbClcXG5tbS96c3dhcC5jLTE3MDkte1xcbm1tL3pzd2FwLmM6MTcxMDpcXHQqdmFsID0gYXRvbWljX2xvbmdfcmVhZChcXHUwMDI2enN3YXBfc3RvcmVkX2luY29tcHJlc3NpYmxlX3BhZ2VzKTtcXG5tbS96c3dhcC5jLTE3MTEtXFx0cmV0dXJuIDA7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEzOjA3OjI5LjAzNTI1MzA4OFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NTMxMzc0NjYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBac3dhcCBFbnRyeSBQb2ludHMgZm9yIEZ1enppbmcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgdG8gZWZmZWN0aXZlbHkgZnV6eiB0aGUgenN3YXAgc3Vic3lzdGVtLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB0YXJnZXQgdGhlIGNvcmUgZW50cnkgcG9pbnRzOiBgenN3YXBfc3RvcmVgLCBgenN3YXBfbG9hZGAsIGFuZCBgenN3YXBfaW52YWxpZGF0ZWAuIFRoZXNlIGFyZSB0aGUgZnVuY3Rpb25zIHRoYXQgaGFuZGxlIHRoZSBmdW5kYW1lbnRhbCBvcGVyYXRpb25zIG9mIHpzd2FwLCBuYW1lbHkgc3RvcmluZywgcmV0cmlldmluZywgYW5kIGludmFsaWRhdGluZyBwYWdlcy4gVGhleSdyZSBjYWxsZWQgZnJvbSB0aGUga2V5IHN3YXAgb3BlcmF0aW9uczogYHN3YXBfd3JpdGVvdXRgLCBgc3dhcF9yZWFkX2ZvbGlvYCwgYW5kIGBzd2FwX3JhbmdlX2ZyZWVgLiBHaXZlbiB0aGUgZm9jdXMgb2YgbXkgcGF0Y2ggb24gYHpzd2FwX2xydV9hZGRgIGFuZCBgenN3YXBfbHJ1X2RlbGAsIHdoaWNoIGFyZSBjYWxsZWQgZHVyaW5nIHBhZ2Ugc3RvcmFnZSBhbmQgZnJlZWluZywgdGhpcyBzZWVtcyBsaWtlIHRoZSBtb3N0IGRpcmVjdCBwYXRoLlxuXG5MZXQgbWUgYnJlYWsgdGhpcyBkb3duIGZ1cnRoZXIuIGB6c3dhcF9zdG9yZWAgaXMgdGhlIG9uZSB0aGF0IGRpcmVjdGx5IGNhbGxzIGB6c3dhcF9zdG9yZV9wYWdlYCwgd2hpY2ggaW4gdHVybiBjYWxscyBgenN3YXBfbHJ1X2FkZGAuIFRoZW4sIGB6c3dhcF9lbnRyeV9mcmVlYCBjYWxscyBgenN3YXBfbHJ1X2RlbGAuIGB6c3dhcF9lbnRyeV9mcmVlYCBnZXRzIGNhbGxlZCBmcm9tIGB6c3dhcF9pbnZhbGlkYXRlYCwgYHpzd2FwX2xvYWRgICh3aGVuIGFuIGVudHJ5IGlzIHJlbW92ZWQpLCBhbmQgZXZlbiBgenN3YXBfc3RvcmVgICh3aGVuIHJlcGxhY2luZyBhbiBvbGQgZW50cnkpLiBUaGlzIHJlLWVuZm9yY2VzIHRoZSBpbml0aWFsIGZvY3VzLlxuXG5genN3YXBfc3RvcmVgIHNlZW1zIHBhcnRpY3VsYXJseSBhdHRyYWN0aXZlIGFzIGl0J3MgYSBob3QgcGF0aCwgY2FsbGVkIG9uIGV2ZXJ5IHNpbmdsZSBzd2FwLW91dCBldmVudC4gVGhpcyBkaXJlY3RseSBtZWFucyB0YXJnZXRpbmcgdGhlc2UgZnVuY3Rpb25zIGFzIEZvY3VzU3ltYm9scyBzaG91bGQgZHJpdmUgdGhlIGZ1enplciB0byBoZWF2aWx5IGV4ZXJjaXNlIHN3YXAgb3BlcmF0aW9ucy4gQ3J1Y2lhbGx5LCBJIGhhdmUgdG8gcmVtZW1iZXIgdGhhdCB0byBmdXp6IHpzd2FwIGVmZmVjdGl2ZWx5LCBJIG5lZWQgc3dhcCBlbmFibGVkIGFuZCB6c3dhcCBlbmFibGVkLCB3aGljaCBpcyBhIGtleSByZXF1aXJlbWVudC5cblxuTm93LCBhbSBJIG1pc3NpbmcgYW55dGhpbmc/IEkgdGhpbmsgSSBuZWVkIHRvIHF1aWNrbHkgc2NhbiB0aGUgY29kZSBmb3Igb3RoZXIgZW50cnkgcG9pbnRzLiBJIHNob3VsZCBsb29rIGF0IGBzaHJpbmtfd29ya2VyYCBpbiBgenN3YXAuY2AsIGJ1dCBpdCdzIGEgd29ya2VyIGFuZCBub3QgYXMgZGlyZWN0bHkgcmVsYXRlZC4gQWN0dWFsbHksIGB6c3dhcF9zd2Fwb25gIGlzIGNhbGxlZCB3aGVuIHN3YXAgaXMgZW5hYmxlZC4gSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgdGhhdCBvbmUgb3V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NDYyLCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzg2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEzOjA3OjM1LjU2NjYyOTU2MVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEyNzAyODQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInpzd2FwX3N3YXBvblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vc3dhcGZpbGUuYz0zNjA1PVNZU0NBTExfREVGSU5FMihzd2Fwb24sIGNvbnN0IGNoYXIgX191c2VyICosIHNwZWNpYWxmaWxlLCBpbnQsIHN3YXBfZmxhZ3MpXFxuLS1cXG5tbS9zd2FwZmlsZS5jLTM3NTctXFxubW0vc3dhcGZpbGUuYzozNzU4OlxcdGVycm9yID0genN3YXBfc3dhcG9uKHNpLVxcdTAwM2V0eXBlLCBtYXhwYWdlcyk7XFxubW0vc3dhcGZpbGUuYy0zNzU5LVxcdGlmIChlcnJvcilcXG4tLVxcbm1tL3pzd2FwLmM9MTYzNT12b2lkIHpzd2FwX2ludmFsaWRhdGUoc3dwX2VudHJ5X3Qgc3dwKVxcbi0tXFxubW0venN3YXAuYy0xNjQ4LVxcbm1tL3pzd2FwLmM6MTY0OTppbnQgenN3YXBfc3dhcG9uKGludCB0eXBlLCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzKVxcbm1tL3pzd2FwLmMtMTY1MC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEzOjA3OjM1LjY3OTM1NjI4OVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NDE0MjgwNjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IFpzd2FwIFRlc3RpbmcgUGxhbioqXG5cbk9rYXksIHNvIGBzeXNfc3dhcG9uYCBpcyB0aGUgY3JpdGljYWwgc3lzY2FsbCBoZXJlLCBiZWNhdXNlIHRoYXQncyB3aGVyZSBgenN3YXBfc3dhcG9uYCBnZXRzIGNhbGxlZC4gVGhhdCBtYWtlcyBpdCB0aGUgZW50cnkgcG9pbnQgZm9yIGVuYWJsaW5nIHN3YXAuIFRvIHRlc3QgenN3YXAsIEknbGwgZGVmaW5pdGVseSBuZWVkIGJvdGggYENPTkZJR19aU1dBUGAgYW5kLCBpZGVhbGx5LCBgQ09ORklHX1pTV0FQX0RFRkFVTFRfT05gLiBBbHRob3VnaCwgd2FpdCwgdGhlIGxhdHRlciBpc24ndCBzdHJpY3RseSAqcmVxdWlyZWQqIHNpbmNlIEkgY2FuIHByb2JhYmx5IHRvZ2dsZSBpdCB0aHJvdWdoIHN5c2ZzLCBidXQgZW5hYmxpbmcgaXQgYnkgZGVmYXVsdCBpbiB0aGUgY29uZmlnIGp1c3Qgc2ltcGxpZmllcyB0aGluZ3MuXG5cbkxldCdzIHF1aWNrbHkgY29uZmlybSBpZiBoYXZpbmcganVzdCBgQ09ORklHX1pTV0FQX0RFRkFVTFRfT05gIGlzIGVub3VnaCB0byBraWNrIHRoaW5ncyBvZmYuIFllcCwgc2VlbXMgbGlrZSBpdCBkb2VzIGVuYWJsZSBpdCBieSBkZWZhdWx0LCBzbyB0aGF0J3MgZ29vZC4gT2gsIGFuZCBJJ2xsIG5lZWQgYENPTkZJR19TV0FQYCBvZiBjb3Vyc2UsIGJ1dCB0aGF0J3MgcHJldHR5IHN0YW5kYXJkLCBzbyBpdCdzIHByb2JhYmx5IGFscmVhZHkgb24gYW55d2F5LiBKdXN0IHRvIGJlIHN1cmUsIGxldCBtZSBkb3VibGUtY2hlY2sgYFpTV0FQX0RFRkFVTFRfT05gIGluIGBtbS9LY29uZmlnYDpcblxuYGBgXG5jb25maWcgWlNXQVBfREVGQVVMVF9PTlxuXHRib29sIFwiRW5hYmxlIHRoZSBjb21wcmVzc2VkIGNhY2hlIGZvciBzd2FwIHBhZ2VzIGJ5IGRlZmF1bHRcIlxuXHRkZXBlbmRzIG9uIFpTV0FQXG5gYGBcblxuUmlnaHQsIHNvIHRvIGJlIHNhZmUsIEknbGwgZW5hYmxlICpib3RoKiBgWlNXQVBgIGFuZCBgWlNXQVBfREVGQVVMVF9PTmAuXG5cbkhvbGQgb24uLi4gSSBuZWVkIHRvIHRoaW5rIGFib3V0IGdvb2QgZm9jdXMgc3ltYm9scyBmb3IgZnV6emluZy4gSSByZW1lbWJlciBgenN3YXBfc3RvcmVgLCBgenN3YXBfbG9hZGAsIGFuZCBgenN3YXBfaW52YWxpZGF0ZWAgYmVpbmcgY29yZSBvcGVyYXRpb25zLiBCdXQgYXJlIHRoZXkgKmhvdCogcGF0aHM/IEhtbSwgdGhleSdyZSBob3QgKndoZW4qIHN3YXBwaW5nLCB3aGljaCBpcyB0aGUga2V5Li4uIHNvIHRoZXNlIHN5bWJvbHMgYXJlIG5vdCBwYXJ0IG9mIGEgZ2VuZXJpYyBob3QgcGF0aC4gTWVtb3J5IHByZXNzdXJlIG9yIHNwZWNpZmljIHRyaWdnZXJzIGFyZSBuZWVkZWQsIGxpa2UgdXNpbmcgc29tZXRoaW5nIGxpa2UgYG1hZHZpc2UoTUFEVl9QQUdFT1VUKWAuIFRoYXQgbWVhbnMgdGhlc2UgYXJlIGdyZWF0IGZvY3VzIHN5bWJvbHMsIGd1aWRpbmcgdGhlIGZ1enplciB0b3dhcmRzIHN3YXAgb3BlcmF0aW9ucy4gVGhleSB3aWxsIGdldCB1cyB0aGVyZS5cblxuTm93LCBsZXQgbWUganVzdCBtYWtlIHN1cmUgYHpzd2FwX3N0b3JlYCBpcyBleHBvcnRlZCBhbmQgcmVhZHkgdG8gYmUgdXNlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTQ5NiwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxMzowNzo0Mi4wOTM2NDAzMDlaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcyODk1NDg5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJFWFBPUlRfU1lNQk9MLip6c3dhcF9zdG9yZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEzOjA3OjQyLjE2NjU0MjUzOFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDE0MzQ1ODQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipac3dhcCBGdW5jdGlvbiBTY29wZTogRGVsdmluZyBEZWVwZXIqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgYHpzd2FwX2Zyb250c3dhcF9zdG9yZWAgZnVuY3Rpb24gaXNuJ3QgbWFya2VkIGFzIGV4cG9ydGVkLCB3aGljaCBpcyBpbW1lZGlhdGVseSBpbnRlcmVzdGluZy4gVGhhdCB1c3VhbGx5IG1lYW5zIGl0J3MgaW50ZXJuYWwgdG8gdGhlIG1vZHVsZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGNvbmZpcm0gd2hlcmUgaXQgKmlzKiBkZWNsYXJlZCBhbmQgdXNlZC4gQSBxdWljayBzY2FuIHJldmVhbHMgaXQncyBhIGdsb2JhbCBmdW5jdGlvbiB3aXRoaW4gYG1tL3pzd2FwLmNgLCBidXQgdGhlcmUgbXVzdCBiZSBhIGRlY2xhcmF0aW9uIHNvbWV3aGVyZSB0aGF0IGFsbG93cyBpdCB0byBiZSBjYWxsZWQgZnJvbSBvdGhlciBwYXJ0cyBvZiB0aGUgbW9kdWxlLlxuXG5UaGUgbG9naWNhbCBwbGFjZSB0byBmaW5kIHRoYXQgZGVjbGFyYXRpb24gaXMgaW4gYGluY2x1ZGUvbGludXgvenN3YXAuaGAuIFRpbWUgdG8gb3BlbiB0aGF0IGhlYWRlciBmaWxlLiBMZXQncyBzZWUgd2hhdCB3ZSBjYW4gZGVkdWNlIGFib3V0IGl0cyB2aXNpYmlsaXR5IGFuZCBpbnRlbmRlZCB1c2UgZnJvbSB0aGUgZnVuY3Rpb24ncyBwcm90b3R5cGUgYW5kIGFueSBhY2NvbXBhbnlpbmcgY29tbWVudHMgdGhlcmUuIEtub3dpbmcgdGhlIGluY2x1ZGUgZmlsZSB3aWxsIGNsYXJpZnkgdGhlIGZ1bmN0aW9uJ3MgaW50ZW5kZWQgcHVycG9zZSB3aXRoaW4gdGhlIHpzd2FwIHN1YnN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAzMDgsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxMzowNzo0NS41ODA4OTA1MzVaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk3MTc0MTA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInpzd2FwX3N0b3JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImluY2x1ZGUvbGludXgvenN3YXAuaFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L3pzd2FwLmg9OD1zdHJ1Y3QgbHJ1dmVjO1xcbmluY2x1ZGUvbGludXgvenN3YXAuaC05LVxcbmluY2x1ZGUvbGludXgvenN3YXAuaDoxMDpleHRlcm4gYXRvbWljX2xvbmdfdCB6c3dhcF9zdG9yZWRfcGFnZXM7XFxuaW5jbHVkZS9saW51eC96c3dhcC5oLTExLVxcbi0tXFxuaW5jbHVkZS9saW51eC96c3dhcC5oPTI3PXVuc2lnbmVkIGxvbmcgenN3YXBfdG90YWxfcGFnZXModm9pZCk7XFxuaW5jbHVkZS9saW51eC96c3dhcC5oOjI4OmJvb2wgenN3YXBfc3RvcmUoc3RydWN0IGZvbGlvICpmb2xpbyk7XFxuaW5jbHVkZS9saW51eC96c3dhcC5oLTI5LWludCB6c3dhcF9sb2FkKHN0cnVjdCBmb2xpbyAqZm9saW8pO1xcbi0tXFxuaW5jbHVkZS9saW51eC96c3dhcC5oPTQwPXN0cnVjdCB6c3dhcF9scnV2ZWNfc3RhdGUge307XFxuaW5jbHVkZS9saW51eC96c3dhcC5oLTQxLVxcbmluY2x1ZGUvbGludXgvenN3YXAuaDo0MjpzdGF0aWMgaW5saW5lIGJvb2wgenN3YXBfc3RvcmUoc3RydWN0IGZvbGlvICpmb2xpbylcXG5pbmNsdWRlL2xpbnV4L3pzd2FwLmgtNDMte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxMzowNzo0NS42NzgwNjkxNjRaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDg4MjYxNTk1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBac3dhcCBSZWZhY3RvcmluZyBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgaXMgYSBnbG9iYWwgZnVuY3Rpb24sIHdoaWNoIGlzIGdvb2QuIFRoYXQgbWVhbnMgYHpzd2FwX3N0b3JlYCwgYHpzd2FwX2xvYWRgLCBhbmQgYHpzd2FwX2ludmFsaWRhdGVgIGFyZSBpZGVhbCBmb2N1cyBzeW1ib2xzIGZvciBmdXp6aW5nLiBIb3dldmVyLCBob2xkIG9uLi4uIGB6c3dhcF9scnVfYWRkYCBhbmQgYHpzd2FwX2xydV9kZWxgIGFyZSBtYXJrZWQgYXMgc3RhdGljLiBXZSBzaG91bGQgZGVmaW5pdGVseSBhdm9pZCBpbmNsdWRpbmcgdGhvc2UgaW4gb3VyIGZvY3VzIHN5bWJvbHMuXG5cblRoaXMgbG9va3MgbGlrZSBhIGZ1bmN0aW9uYWwgY2hhbmdlIOKAkyBhIHJlZmFjdG9yaW5nIOKAkyBkaXJlY3RseSBpbXBhY3RpbmcgdGhlIGNvcmUga2VybmVsIGxvZ2ljIHdpdGhpbiBgbW0venN3YXAuY2AuICBHaXZlbiBpdHMgbG9jYXRpb24gaW4gdGhlIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbSwgYSB0aG9yb3VnaCBmdXp6aW5nIGNhbXBhaWduIGlzIGFic29sdXRlbHkgd2FycmFudGVkLlxuXG5UbyBlbmFibGUgdGhpcywgSSdsbCBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgYFpTV0FQYCBhbmQgYFpTV0FQX0RFRkFVTFRfT05gIGNvbmZpZ3MgYXJlIHNldC4gSSBuZWVkIHRvIHRha2UgYSBzdGVwIGJhY2sgYW5kIGRvdWJsZSBjaGVjayB0aGF0IHRoZXJlIGFyZW4ndCBhbnkgb3RoZXIgZGVwZW5kZW50IGNvbmZpZ3MgdGhhdCBtaWdodCB0cmlwIHVzIHVwLCBzbyBsZXQgbWUgYWRkIGBTV0FQYCBqdXN0IHRvIGJlIHNhZmUuIGBaU1dBUGAgZGVwZW5kcyBvbiBpdCwgYW5kIHdoaWxlIGBTV0FQYCBpcyAqdXN1YWxseSogZW5hYmxlZCwgaXQncyBhbHdheXMgYmV0dGVyIHRvIGJlIGV4cGxpY2l0LiBJdCBhbHNvIHNlbGVjdHMgYENSWVBUT2AgYW5kIGBaU01BTExPQ2Agc28gSSBuZWVkIHRvIGNoZWNrIGBaU01BTExPQ2AgaW4gYG1tL0tjb25maWdgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDgxNCwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxMzowNzo1MC41NjA2ODcwOThaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg5Nzc2MDA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBaU01BTExPQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL0tjb25maWc9MTE0PWNvbmZpZyBaU1dBUF9DT01QUkVTU09SX0RFRkFVTFRcXG4tLVxcbm1tL0tjb25maWctMTI0LVxcbm1tL0tjb25maWc6MTI1OmNvbmZpZyBaU01BTExPQ1xcbm1tL0tjb25maWctMTI2LVxcdHRyaXN0YXRlXFxuLS1cXG5tbS9LY29uZmlnPTEzMz1jb21tZW50IFxcXCJac21hbGxvYyBpcyBhIGNvbW1vbiBiYWNrZW5kIGFsbG9jYXRvciBmb3IgenN3YXAgXFx1MDAyNiB6cmFtXFxcIlxcbm1tL0tjb25maWctMTM0LVxcbm1tL0tjb25maWc6MTM1OmNvbmZpZyBaU01BTExPQ19TVEFUXFxubW0vS2NvbmZpZy0xMzYtXFx0Ym9vbCBcXFwiRXhwb3J0IHpzbWFsbG9jIHN0YXRpc3RpY3NcXFwiXFxuLS1cXG5tbS9LY29uZmlnLTE0My1cXG5tbS9LY29uZmlnOjE0NDpjb25maWcgWlNNQUxMT0NfQ0hBSU5fU0laRVxcbm1tL0tjb25maWctMTQ1LVxcdGludCBcXFwiTWF4aW11bSBudW1iZXIgb2YgcGh5c2ljYWwgcGFnZXMgcGVyLXpzcGFnZVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTM6MDc6NTAuNjUwNDY4Njk2WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUzMjA0Mjg5MDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUmVmbGVjdGluZyBvbiBaU01BTExPQyBhbmQgWlNXQVAgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIGBaU01BTExPQ2AgaXMgdHJpc3RhdGUsIGJ1dCBiZWNhdXNlIGl0J3Mgc2VsZWN0ZWQgYnkgYFpTV0FQYCwgaXQncyBlZmZlY3RpdmVseSBlbmFibGVkLiBNeSBpbnN0aW5jdCBpcyB0aGF0IHdlIHNob3VsZCBqdXN0IGZvY3VzIG9uIHNldHRpbmcgYFpTV0FQYCBhbmQgdGhlbiByZWx5IG9uIGBaU1dBUF9ERUZBVUxUX09OYCB0byBoYW5kbGUgdGhlIHJlc3QuIFNpbXBsaWZ5aW5nIHRoZSBjb25maWd1cmF0aW9uIGlzIGFsd2F5cyBhIGdvb2QgdGhpbmcsIGVzcGVjaWFsbHkgd2hlbiB3ZSdyZSBkZWFsaW5nIHdpdGggcG90ZW50aWFsbHkgY29tcGxleCBtZW1vcnkgbWFuYWdlbWVudCBpbnRlcmFjdGlvbnMuXG5cbk5vdywgbGV0J3MgYmFjayB1cCBhbmQgcmVhbGx5IGNvbnNpZGVyIHRoZSBpbXBsaWNhdGlvbnMgaGVyZS4gVGhlIHBhdGNoIGF0IGhhbmQgaW52b2x2ZXMgcmVmYWN0b3JpbmcgYHpzd2FwX2xydV9hZGRgIGFuZCBgenN3YXBfbHJ1X2RlbGAuIEl0IHNvdW5kcyBsaWtlIHRoZXkncmUgbm93IGRpcmVjdGx5IHVzaW5nIHRoZSBnbG9iYWwgYHpzd2FwX2xpc3RfbHJ1YCBpbnN0ZWFkIG9mIHJlY2VpdmluZyBpdCBhcyBhbiBhcmd1bWVudC4gVGhhdCdzIGEgZnVuZGFtZW50YWwgY2hhbmdlIHRvIHRoZSB6c3dhcCBjb3JlLiBUbyByZWFsbHkgdGVzdCB0aGlzIHByb3Blcmx5LCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB6c3dhcCBpcyBhY3RpdmUgYW5kIGZvY3VzIG9uIHRob3NlIGNvcmUgZW50cnkgcG9pbnRz4oCUYHpzd2FwX3N0b3JlYCwgYHpzd2FwX2xvYWRgLCBhbmQgYHpzd2FwX2ludmFsaWRhdGVg4oCUYmVjYXVzZSB0aG9zZSBhcmUgdGhlIG9uZXMgY2FsbGluZyB0aGUgTFJVIG9wZXJhdGlvbnMgd2UncmUgbW9kaWZ5aW5nLiBXZSBuZWVkIHRvIGJlIHN1cmUgdGhlc2UgYXJlIHdlbGwtZXhlcmNpc2VkIHRvIGVuc3VyZSB0aGlzIGNoYW5nZSBkb2Vzbid0IGJyZWFrIGFueXRoaW5nLlxuXG5XYWl0LCBpcyBgenN3YXBfbGlzdF9scnVgIGEgZ2xvYmFsIHZhcmlhYmxlPyBJIG5lZWQgdG8gcXVpY2tseSBjaGVjayBgbW0venN3YXAuY2AgdG8gY29uZmlybS4gSXQgaXMgaW1wb3J0YW50IHRvIGtub3cgd2hpY2ggc3RhdGUgdGhpcyB2YXJpYWJsZSBpcyBpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE1MzMsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTM6MDc6NTUuOTcwODk5ODA1WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDQwOTQ2ODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwienN3YXBfbGlzdF9scnVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0venN3YXAuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS96c3dhcC5jPTE1Mz1zdHJ1Y3QgenN3YXBfcG9vbCB7XFxuLS1cXG5tbS96c3dhcC5jLTE2My0vKiBHbG9iYWwgTFJVIGxpc3RzIHNoYXJlZCBieSBhbGwgenN3YXAgcG9vbHMuICovXFxubW0venN3YXAuYzoxNjQ6c3RhdGljIHN0cnVjdCBsaXN0X2xydSB6c3dhcF9saXN0X2xydTtcXG5tbS96c3dhcC5jLTE2NS1cXG4tLVxcbm1tL3pzd2FwLmM9NjY4PXN0YXRpYyB2b2lkIHpzd2FwX2xydV9hZGQoc3RydWN0IHpzd2FwX2VudHJ5ICplbnRyeSlcXG4tLVxcbm1tL3pzd2FwLmMtNjg2LVxcdC8qIHdpbGwgYWx3YXlzIHN1Y2NlZWQgKi9cXG5tbS96c3dhcC5jOjY4NzpcXHRsaXN0X2xydV9hZGQoXFx1MDAyNnpzd2FwX2xpc3RfbHJ1LCBcXHUwMDI2ZW50cnktXFx1MDAzZWxydSwgbmlkLCBtZW1jZyk7XFxubW0venN3YXAuYy02ODgtXFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuLS1cXG5tbS96c3dhcC5jPTY5MT1zdGF0aWMgdm9pZCB6c3dhcF9scnVfZGVsKHN0cnVjdCB6c3dhcF9lbnRyeSAqZW50cnkpXFxuLS1cXG5tbS96c3dhcC5jLTY5OC1cXHQvKiB3aWxsIGFsd2F5cyBzdWNjZWVkICovXFxubW0venN3YXAuYzo2OTk6XFx0bGlzdF9scnVfZGVsKFxcdTAwMjZ6c3dhcF9saXN0X2xydSwgXFx1MDAyNmVudHJ5LVxcdTAwM2VscnUsIG5pZCwgbWVtY2cpO1xcbm1tL3pzd2FwLmMtNzAwLVxcdHJjdV9yZWFkX3VubG9jaygpO1xcbi0tXFxubW0venN3YXAuYz0xMTY5PXN0YXRpYyB1bnNpZ25lZCBsb25nIHpzd2FwX3Nocmlua2VyX3NjYW4oc3RydWN0IHNocmlua2VyICpzaHJpbmtlcixcXG4tLVxcbm1tL3pzd2FwLmMtMTE4MC1cXG5tbS96c3dhcC5jOjExODE6XFx0c2hyaW5rX3JldCA9IGxpc3RfbHJ1X3Nocmlua193YWxrKFxcdTAwMjZ6c3dhcF9saXN0X2xydSwgc2MsIFxcdTAwMjZzaHJpbmtfbWVtY2dfY2IsXFxubW0venN3YXAuYy0xMTgyLVxcdFxcdFxcdTAwMjZlbmNvdW50ZXJlZF9wYWdlX2luX3N3YXBjYWNoZSk7XFxuLS1cXG5tbS96c3dhcC5jPTExOTA9c3RhdGljIHVuc2lnbmVkIGxvbmcgenN3YXBfc2hyaW5rZXJfY291bnQoc3RydWN0IHNocmlua2VyICpzaHJpbmtlcixcXG4tLVxcbm1tL3pzd2FwLmMtMTIzMC1cXG5tbS96c3dhcC5jOjEyMzE6XFx0bnJfZnJlZWFibGUgPSBsaXN0X2xydV9zaHJpbmtfY291bnQoXFx1MDAyNnpzd2FwX2xpc3RfbHJ1LCBzYyk7XFxubW0venN3YXAuYy0xMjMyLVxcdGlmICghbnJfZnJlZWFibGUpXFxuLS1cXG5tbS96c3dhcC5jPTEyNzg9c3RhdGljIGludCBzaHJpbmtfbWVtY2coc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnKVxcbi0tXFxubW0venN3YXAuYy0xMjk0LVxcbm1tL3pzd2FwLmM6MTI5NTpcXHRcXHRzaHJ1bmsgKz0gbGlzdF9scnVfd2Fsa19vbmUoXFx1MDAyNnpzd2FwX2xpc3RfbHJ1LCBuaWQsIG1lbWNnLFxcbm1tL3pzd2FwLmMtMTI5Ni1cXHRcXHRcXHRcXHRcXHQgICAgXFx1MDAyNnNocmlua19tZW1jZ19jYiwgTlVMTCwgXFx1MDAyNm5yX3RvX3dhbGspO1xcbi0tXFxubW0venN3YXAuYz0xNDc2PWJvb2wgenN3YXBfc3RvcmUoc3RydWN0IGZvbGlvICpmb2xpbylcXG4tLVxcbm1tL3pzd2FwLmMtMTUxMC1cXHRcXHRtZW1jZyA9IGdldF9tZW1fY2dyb3VwX2Zyb21fb2JqY2cob2JqY2cpO1xcbm1tL3pzd2FwLmM6MTUxMTpcXHRcXHRpZiAobWVtY2dfbGlzdF9scnVfYWxsb2MobWVtY2csIFxcdTAwMjZ6c3dhcF9saXN0X2xydSwgR0ZQX0tFUk5FTCkpIHtcXG5tbS96c3dhcC5jLTE1MTItXFx0XFx0XFx0bWVtX2Nncm91cF9wdXQobWVtY2cpO1xcbi0tXFxubW0venN3YXAuYz0xNzU5PXN0YXRpYyBpbnQgenN3YXBfc2V0dXAodm9pZClcXG4tLVxcbm1tL3pzd2FwLmMtMTc4NC1cXHRcXHRnb3RvIHNocmlua2VyX2ZhaWw7XFxubW0venN3YXAuYzoxNzg1OlxcdGlmIChsaXN0X2xydV9pbml0X21lbWNnKFxcdTAwMjZ6c3dhcF9saXN0X2xydSwgenN3YXBfc2hyaW5rZXIpKVxcbm1tL3pzd2FwLmMtMTc4Ni1cXHRcXHRnb3RvIGxydV9mYWlsO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxMzowNzo1Ni4wNzUwMDA1ODNaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzkxNTU2NDM5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBac3dhcCBSZWZhY3RvcmluZyBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgbG9va2VkIG92ZXIgdGhpcyBwYXRjaC4gSXQncyB0b3VjaGluZyBgenN3YXBfbGlzdF9scnVgLCB3aGljaCwgYXMgSSByZWNhbGwsIGlzIHRoYXQgc3RhdGljIGdsb2JhbCB2YXJpYWJsZSBoYW5naW5nIG91dCBpbiBgbW0venN3YXAuY2AuIFJpZ2h0LCB0aGF0J3MgdGhlIG9uZS4gVGhlIHJlZmFjdG9yaW5nIGl0c2VsZiBsb29rcyBzdHJhaWdodGZvcndhcmQg4oCTIG5vdGhpbmcgZWFydGgtc2hhdHRlcmluZyBpbiB0ZXJtcyBvZiBuZXcgZmVhdHVyZXMuIEhvd2V2ZXIsIGl0ICppcyogY2hhbmdpbmcgY29kZSB0aGF0J3MgZnVuZGFtZW50YWwgdG8genN3YXAncyBvcGVyYXRpb24sIGFuZCB0aGF0IG1ha2VzIGl0IHdvcnRoIHNjcnV0aW5pemluZyB0aG9yb3VnaGx5LiBHaXZlbiBpdHMgaW50ZXJhY3Rpb24gd2l0aCBjb3JlIGtlcm5lbCBsb2dpYywgSSB0aGluayB0aGlzIG1lcml0cyBmdXp6aW5nLiBMZXQncyBzdGFydCBieSBjYWxsaW5nIGBzZXQtcmVzdWx0c2AgdG8gZ2V0IHRoaXMgcHJvY2VzcyByb2xsaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjk0NywiT3V0cHV0VG9rZW5zIjoxNTQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxMzowNzo1OS45OTA1NjgyMDNaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjUzNTY4ODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlpTV0FQXCIsXG4gICAgXCJaU1dBUF9ERUZBVUxUX09OXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwienN3YXBfc3RvcmVcIixcbiAgICBcInpzd2FwX2xvYWRcIixcbiAgICBcInpzd2FwX2ludmFsaWRhdGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZWZhY3RvcnMgdGhlIHpzd2FwIExSVSBhZGQvZGVsIGZ1bmN0aW9ucyB0byBkaXJlY3RseSB1c2UgdGhlIGdsb2JhbCB6c3dhcF9saXN0X2xydSBpbnN0ZWFkIG9mIHBhc3NpbmcgaXQgYXMgYW4gYXJndW1lbnQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSB6c3dhcCBsb2dpYy4gVG8gdGVzdCB0aGlzLCB3ZSBuZWVkIHRvIGVuYWJsZSB6c3dhcCBhbmQgZm9jdXMgb24gdGhlIG1haW4genN3YXAgZW50cnkgcG9pbnRzICh6c3dhcF9zdG9yZSwgenN3YXBfbG9hZCwgenN3YXBfaW52YWxpZGF0ZSkgd2hpY2ggdHJpZ2dlciB0aGUgbW9kaWZpZWQgTFJVIG9wZXJhdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiWlNXQVBcIixcbiAgICBcIlpTV0FQX0RFRkFVTFRfT05cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ6c3dhcF9zdG9yZVwiLFxuICAgIFwienN3YXBfbG9hZFwiLFxuICAgIFwienN3YXBfaW52YWxpZGF0ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlZmFjdG9ycyB0aGUgenN3YXAgTFJVIGFkZC9kZWwgZnVuY3Rpb25zIHRvIGRpcmVjdGx5IHVzZSB0aGUgZ2xvYmFsIHpzd2FwX2xpc3RfbHJ1IGluc3RlYWQgb2YgcGFzc2luZyBpdCBhcyBhbiBhcmd1bWVudC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIHpzd2FwIGxvZ2ljLiBUbyB0ZXN0IHRoaXMsIHdlIG5lZWQgdG8gZW5hYmxlIHpzd2FwIGFuZCBmb2N1cyBvbiB0aGUgbWFpbiB6c3dhcCBlbnRyeSBwb2ludHMgKHpzd2FwX3N0b3JlLCB6c3dhcF9sb2FkLCB6c3dhcF9pbnZhbGlkYXRlKSB3aGljaCB0cmlnZ2VyIHRoZSBtb2RpZmllZCBMUlUgb3BlcmF0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowlbz84[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-01 12:48:37 +0000 UTC FinishedAt: 2026-08-01 13:08:01 +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": "85f5913c147076a6f243f90fe4ccfe1c4da9ea20", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ZSWAP", "ZSWAP_DEFAULT_ON" ], "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": "85f5913c147076a6f243f90fe4ccfe1c4da9ea20", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ZSWAP", "ZSWAP_DEFAULT_ON" ], "series_id": "3c2fbb6e-3302-4ca8-add4-d89c4ba4213d" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "zswap_store", "zswap_load", "zswap_invalidate" ], "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+CgkJCTx0ZD4yMDI2LzA4LzAxIDEzOjA3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1pTV0FQJiMzNDssCiAgICAmIzM0O1pTV0FQX0RFRkFVTFRfT04mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt6c3dhcF9zdG9yZSYjMzQ7LAogICAgJiMzNDt6c3dhcF9sb2FkJiMzNDssCiAgICAmIzM0O3pzd2FwX2ludmFsaWRhdGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVmYWN0b3JzIHRoZSB6c3dhcCBMUlUgYWRkL2RlbCBmdW5jdGlvbnMgdG8gZGlyZWN0bHkgdXNlIHRoZSBnbG9iYWwgenN3YXBfbGlzdF9scnUgaW5zdGVhZCBvZiBwYXNzaW5nIGl0IGFzIGFuIGFyZ3VtZW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgenN3YXAgbG9naWMuIFRvIHRlc3QgdGhpcywgd2UgbmVlZCB0byBlbmFibGUgenN3YXAgYW5kIGZvY3VzIG9uIHRoZSBtYWluIHpzd2FwIGVudHJ5IHBvaW50cyAoenN3YXBfc3RvcmUsIHpzd2FwX2xvYWQsIHpzd2FwX2ludmFsaWRhdGUpIHdoaWNoIHRyaWdnZXIgdGhlIG1vZGlmaWVkIExSVSBvcGVyYXRpb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDEzOjA3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZDg0OTE5ZmM3NmZhYmRkN2ExOWQ1MjRhZjY0ZjYzM2NlZmZjMDcxOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDEgMTM6MDc6MDYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0venN3YXAuYyBiL21tL3pzd2FwLmNcbmluZGV4IDc2MWNkNjk5ZTBhM2UuLmE4MTA1MjRjNzYyMTcgMTAwNjQ0XG4tLS0gYS9tbS96c3dhcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS96c3dhcC5jXG5AQCAtNjY1LDcgJiM0Mzs2NjUsNyBAQCBzdGF0aWMgaW5saW5lIGludCBlbnRyeV90b19uaWQoc3RydWN0IHpzd2FwX2VudHJ5ICplbnRyeSlcbiBcdHJldHVybiBwYWdlX3RvX25pZCh2aXJ0X3RvX3BhZ2UoZW50cnkpKTtcbiB9XG4gXG4tc3RhdGljIHZvaWQgenN3YXBfbHJ1X2FkZChzdHJ1Y3QgbGlzdF9scnUgKmxpc3RfbHJ1LCBzdHJ1Y3QgenN3YXBfZW50cnkgKmVudHJ5KVxuJiM0MztzdGF0aWMgdm9pZCB6c3dhcF9scnVfYWRkKHN0cnVjdCB6c3dhcF9lbnRyeSAqZW50cnkpXG4ge1xuIFx0aW50IG5pZCA9IGVudHJ5X3RvX25pZChlbnRyeSk7XG4gXHRzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2c7XG5AQCAtNjg0LDExICYjNDM7Njg0LDExIEBAIHN0YXRpYyB2b2lkIHpzd2FwX2xydV9hZGQoc3RydWN0IGxpc3RfbHJ1ICpsaXN0X2xydSwgc3RydWN0IHpzd2FwX2VudHJ5ICplbnRyeSlcbiBcdHJjdV9yZWFkX2xvY2soKTtcbiBcdG1lbWNnID0gbWVtX2Nncm91cF9mcm9tX2VudHJ5KGVudHJ5KTtcbiBcdC8qIHdpbGwgYWx3YXlzIHN1Y2NlZWQgKi9cbi1cdGxpc3RfbHJ1X2FkZChsaXN0X2xydSwgXHUwMDI2ZW50cnktXHUwMDNlbHJ1LCBuaWQsIG1lbWNnKTtcbiYjNDM7XHRsaXN0X2xydV9hZGQoXHUwMDI2enN3YXBfbGlzdF9scnUsIFx1MDAyNmVudHJ5LVx1MDAzZWxydSwgbmlkLCBtZW1jZyk7XG4gXHRyY3VfcmVhZF91bmxvY2soKTtcbiB9XG4gXG4tc3RhdGljIHZvaWQgenN3YXBfbHJ1X2RlbChzdHJ1Y3QgbGlzdF9scnUgKmxpc3RfbHJ1LCBzdHJ1Y3QgenN3YXBfZW50cnkgKmVudHJ5KVxuJiM0MztzdGF0aWMgdm9pZCB6c3dhcF9scnVfZGVsKHN0cnVjdCB6c3dhcF9lbnRyeSAqZW50cnkpXG4ge1xuIFx0aW50IG5pZCA9IGVudHJ5X3RvX25pZChlbnRyeSk7XG4gXHRzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2c7XG5AQCAtNjk2LDcgJiM0Mzs2OTYsNyBAQCBzdGF0aWMgdm9pZCB6c3dhcF9scnVfZGVsKHN0cnVjdCBsaXN0X2xydSAqbGlzdF9scnUsIHN0cnVjdCB6c3dhcF9lbnRyeSAqZW50cnkpXG4gXHRyY3VfcmVhZF9sb2NrKCk7XG4gXHRtZW1jZyA9IG1lbV9jZ3JvdXBfZnJvbV9lbnRyeShlbnRyeSk7XG4gXHQvKiB3aWxsIGFsd2F5cyBzdWNjZWVkICovXG4tXHRsaXN0X2xydV9kZWwobGlzdF9scnUsIFx1MDAyNmVudHJ5LVx1MDAzZWxydSwgbmlkLCBtZW1jZyk7XG4mIzQzO1x0bGlzdF9scnVfZGVsKFx1MDAyNnpzd2FwX2xpc3RfbHJ1LCBcdTAwMjZlbnRyeS1cdTAwM2VscnUsIG5pZCwgbWVtY2cpO1xuIFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4gfVxuIFxuQEAgLTc2NCw3ICYjNDM7NzY0LDcgQEAgc3RhdGljIHZvaWQgenN3YXBfZW50cnlfY2FjaGVfZnJlZShzdHJ1Y3QgenN3YXBfZW50cnkgKmVudHJ5KVxuICAqL1xuIHN0YXRpYyB2b2lkIHpzd2FwX2VudHJ5X2ZyZWUoc3RydWN0IHpzd2FwX2VudHJ5ICplbnRyeSlcbiB7XG4tXHR6c3dhcF9scnVfZGVsKFx1MDAyNnpzd2FwX2xpc3RfbHJ1LCBlbnRyeSk7XG4mIzQzO1x0enN3YXBfbHJ1X2RlbChlbnRyeSk7XG4gXHR6c19mcmVlKGVudHJ5LVx1MDAzZXBvb2wtXHUwMDNlenNfcG9vbCwgZW50cnktXHUwMDNlaGFuZGxlKTtcbiBcdHpzd2FwX3Bvb2xfcHV0KGVudHJ5LVx1MDAzZXBvb2wpO1xuIFx0aWYgKGVudHJ5LVx1MDAzZW9iamNnKSB7XG5AQCAtMTQ2MSw3ICYjNDM7MTQ2MSw3IEBAIHN0YXRpYyBib29sIHpzd2FwX3N0b3JlX3BhZ2Uoc3RydWN0IHBhZ2UgKnBhZ2UsXG4gXHRlbnRyeS1cdTAwM2VyZWZlcmVuY2VkID0gdHJ1ZTtcbiBcdGlmIChlbnRyeS1cdTAwM2VsZW5ndGgpIHtcbiBcdFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2ZW50cnktXHUwMDNlbHJ1KTtcbi1cdFx0enN3YXBfbHJ1X2FkZChcdTAwMjZ6c3dhcF9saXN0X2xydSwgZW50cnkpO1xuJiM0MztcdFx0enN3YXBfbHJ1X2FkZChlbnRyeSk7XG4gXHR9XG4gXG4gXHRyZXR1cm4gdHJ1ZTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMzowNzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7WlNXQVAmIzM0OywKICAgICYjMzQ7WlNXQVBfREVGQVVMVF9PTiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3pzd2FwX3N0b3JlJiMzNDssCiAgICAmIzM0O3pzd2FwX2xvYWQmIzM0OywKICAgICYjMzQ7enN3YXBfaW52YWxpZGF0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZWZhY3RvcnMgdGhlIHpzd2FwIExSVSBhZGQvZGVsIGZ1bmN0aW9ucyB0byBkaXJlY3RseSB1c2UgdGhlIGdsb2JhbCB6c3dhcF9saXN0X2xydSBpbnN0ZWFkIG9mIHBhc3NpbmcgaXQgYXMgYW4gYXJndW1lbnQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSB6c3dhcCBsb2dpYy4gVG8gdGVzdCB0aGlzLCB3ZSBuZWVkIHRvIGVuYWJsZSB6c3dhcCBhbmQgZm9jdXMgb24gdGhlIG1haW4genN3YXAgZW50cnkgcG9pbnRzICh6c3dhcF9zdG9yZSwgenN3YXBfbG9hZCwgenN3YXBfaW52YWxpZGF0ZSkgd2hpY2ggdHJpZ2dlciB0aGUgbW9kaWZpZWQgTFJVIG9wZXJhdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkODQ5MTlmYzc2ZmFiZGQ3YTE5ZDUyNGFmNjRmNjMzY2VmZmMwNzE5CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBBdWcgMSAxMzowNzowNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL21tL3pzd2FwLmMgYi9tbS96c3dhcC5jCmluZGV4IDc2MWNkNjk5ZTBhM2UuLmE4MTA1MjRjNzYyMTcgMTAwNjQ0Ci0tLSBhL21tL3pzd2FwLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0venN3YXAuYwpAQCAtNjY1LDcgJiM0Mzs2NjUsNyBAQCBzdGF0aWMgaW5saW5lIGludCBlbnRyeV90b19uaWQoc3RydWN0IHpzd2FwX2VudHJ5ICplbnRyeSkKIAlyZXR1cm4gcGFnZV90b19uaWQodmlydF90b19wYWdlKGVudHJ5KSk7CiB9CiAKLXN0YXRpYyB2b2lkIHpzd2FwX2xydV9hZGQoc3RydWN0IGxpc3RfbHJ1ICpsaXN0X2xydSwgc3RydWN0IHpzd2FwX2VudHJ5ICplbnRyeSkKJiM0MztzdGF0aWMgdm9pZCB6c3dhcF9scnVfYWRkKHN0cnVjdCB6c3dhcF9lbnRyeSAqZW50cnkpCiB7CiAJaW50IG5pZCA9IGVudHJ5X3RvX25pZChlbnRyeSk7CiAJc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnOwpAQCAtNjg0LDExICYjNDM7Njg0LDExIEBAIHN0YXRpYyB2b2lkIHpzd2FwX2xydV9hZGQoc3RydWN0IGxpc3RfbHJ1ICpsaXN0X2xydSwgc3RydWN0IHpzd2FwX2VudHJ5ICplbnRyeSkKIAlyY3VfcmVhZF9sb2NrKCk7CiAJbWVtY2cgPSBtZW1fY2dyb3VwX2Zyb21fZW50cnkoZW50cnkpOwogCS8qIHdpbGwgYWx3YXlzIHN1Y2NlZWQgKi8KLQlsaXN0X2xydV9hZGQobGlzdF9scnUsICZhbXA7ZW50cnktJmd0O2xydSwgbmlkLCBtZW1jZyk7CiYjNDM7CWxpc3RfbHJ1X2FkZCgmYW1wO3pzd2FwX2xpc3RfbHJ1LCAmYW1wO2VudHJ5LSZndDtscnUsIG5pZCwgbWVtY2cpOwogCXJjdV9yZWFkX3VubG9jaygpOwogfQogCi1zdGF0aWMgdm9pZCB6c3dhcF9scnVfZGVsKHN0cnVjdCBsaXN0X2xydSAqbGlzdF9scnUsIHN0cnVjdCB6c3dhcF9lbnRyeSAqZW50cnkpCiYjNDM7c3RhdGljIHZvaWQgenN3YXBfbHJ1X2RlbChzdHJ1Y3QgenN3YXBfZW50cnkgKmVudHJ5KQogewogCWludCBuaWQgPSBlbnRyeV90b19uaWQoZW50cnkpOwogCXN0cnVjdCBtZW1fY2dyb3VwICptZW1jZzsKQEAgLTY5Niw3ICYjNDM7Njk2LDcgQEAgc3RhdGljIHZvaWQgenN3YXBfbHJ1X2RlbChzdHJ1Y3QgbGlzdF9scnUgKmxpc3RfbHJ1LCBzdHJ1Y3QgenN3YXBfZW50cnkgKmVudHJ5KQogCXJjdV9yZWFkX2xvY2soKTsKIAltZW1jZyA9IG1lbV9jZ3JvdXBfZnJvbV9lbnRyeShlbnRyeSk7CiAJLyogd2lsbCBhbHdheXMgc3VjY2VlZCAqLwotCWxpc3RfbHJ1X2RlbChsaXN0X2xydSwgJmFtcDtlbnRyeS0mZ3Q7bHJ1LCBuaWQsIG1lbWNnKTsKJiM0MzsJbGlzdF9scnVfZGVsKCZhbXA7enN3YXBfbGlzdF9scnUsICZhbXA7ZW50cnktJmd0O2xydSwgbmlkLCBtZW1jZyk7CiAJcmN1X3JlYWRfdW5sb2NrKCk7CiB9CiAKQEAgLTc2NCw3ICYjNDM7NzY0LDcgQEAgc3RhdGljIHZvaWQgenN3YXBfZW50cnlfY2FjaGVfZnJlZShzdHJ1Y3QgenN3YXBfZW50cnkgKmVudHJ5KQogICovCiBzdGF0aWMgdm9pZCB6c3dhcF9lbnRyeV9mcmVlKHN0cnVjdCB6c3dhcF9lbnRyeSAqZW50cnkpCiB7Ci0JenN3YXBfbHJ1X2RlbCgmYW1wO3pzd2FwX2xpc3RfbHJ1LCBlbnRyeSk7CiYjNDM7CXpzd2FwX2xydV9kZWwoZW50cnkpOwogCXpzX2ZyZWUoZW50cnktJmd0O3Bvb2wtJmd0O3pzX3Bvb2wsIGVudHJ5LSZndDtoYW5kbGUpOwogCXpzd2FwX3Bvb2xfcHV0KGVudHJ5LSZndDtwb29sKTsKIAlpZiAoZW50cnktJmd0O29iamNnKSB7CkBAIC0xNDYxLDcgJiM0MzsxNDYxLDcgQEAgc3RhdGljIGJvb2wgenN3YXBfc3RvcmVfcGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSwKIAllbnRyeS0mZ3Q7cmVmZXJlbmNlZCA9IHRydWU7CiAJaWYgKGVudHJ5LSZndDtsZW5ndGgpIHsKIAkJSU5JVF9MSVNUX0hFQUQoJmFtcDtlbnRyeS0mZ3Q7bHJ1KTsKLQkJenN3YXBfbHJ1X2FkZCgmYW1wO3pzd2FwX2xpc3RfbHJ1LCBlbnRyeSk7CiYjNDM7CQl6c3dhcF9scnVfYWRkKGVudHJ5KTsKIAl9CiAKIAlyZXR1cm4gdHJ1ZTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTM6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjY3MQoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDIwMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Kipac3dhcCBSZWZhY3RvcmluZyBBc3Nlc3NtZW50KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbW0venN3YXAuY2AuIFNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2g6IHRoZXkmIzM5O3ZlIHJlbW92ZWQgdGhlIGBzdHJ1Y3QgbGlzdF9scnUgKmxpc3RfbHJ1YCBhcmd1bWVudCBmcm9tIGB6c3dhcF9scnVfYWRkYCBhbmQgYHpzd2FwX2xydV9kZWxgLCBoYXJkY29kaW5nIHRoZSB1c2Ugb2YgYCZhbXA7enN3YXBfbGlzdF9scnVgIGluc3RlYWQuIFRoaXMgaXMgY2xlYXJseSBhIHJlZmFjdG9yaW5nLCBidXQgaXQgKmlzKiBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIG1vZGlmaWNhdGlvbiB0byB0aGUgY29kZSBpdHNlbGYsIGhvd2V2ZXIgbWluaW1hbC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGFzc2VzcyBpdHMgZnV6emluZyBwb3RlbnRpYWwuIFpzd2FwIGlzLCBvZiBjb3Vyc2UsIHRoZSBjb21wcmVzc2VkIFJBTSBjYWNoZSBmb3Igc3dhcCBwYWdlcy4gQ29yZSBrZXJuZWwgbG9naWMsIHJpZ2h0PyBEZWZpbml0ZWx5IHNvbWV0aGluZyB0byBjb25zaWRlciBmb3IgZnV6emluZy4KCldhaXQsIGxldCBtZSBqdXN0IGRvdWJsZSBjaGVjayB3aGF0IHRoaXMgaXMgZG9pbmcuLi4gYWgsIGl0JiMzOTtzICpqdXN0KiByZW1vdmluZyBhbiBhcmd1bWVudCBhbmQgdXNpbmcgYSBnbG9iYWwgdmFyaWFibGUgZGlyZWN0bHkuIFN0aWxsLCB0aGF0IHRvdWNoZXMgY29yZSBrZXJuZWwgc3R1ZmYsIGFuZCBhbnkgY2hhbmdlIGhhcyB0aGUgcG90ZW50aWFsIHRvIGludHJvZHVjZSBzdWJ0bGUgaXNzdWVzLgoKQWxyaWdodCwgdGhlIG5leHQgc3RlcCBpcyB0byBuYWlsIGRvd24gdGhlIGNvbmZpZ3VyYXRpb24uIExldCBtZSBzZWUuLi4gSSYjMzk7bGwgY2hlY2sgYG1tL0tjb25maWdgIG9yIHBvc3NpYmx5IGV2ZW4gYG1tL3pzd2FwLmNgIGl0c2VsZi4gWWVwLCB0aGUgY29uZmlnIGZvciBac3dhcCBpcyBgQ09ORklHX1pTV0FQYC4gVGhpcyBpcyBhIGdvb2QgcGxhY2UgdG8gc3RhcnQgbXkgaW52ZXN0aWdhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMzowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgWlNXQVAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vS2NvbmZpZz0xMj1tZW51Y29uZmlnIFNXQVBcbi0tXG5tbS9LY29uZmlnLTIxLVxubW0vS2NvbmZpZzoyMjpjb25maWcgWlNXQVBcbm1tL0tjb25maWctMjMtXHRib29sIFwmIzM0O0NvbXByZXNzZWQgY2FjaGUgZm9yIHN3YXAgcGFnZXNcJiMzNDtcbi0tXG5tbS9LY29uZmlnLTM0LVxubW0vS2NvbmZpZzozNTpjb25maWcgWlNXQVBfREVGQVVMVF9PTlxubW0vS2NvbmZpZy0zNi1cdGJvb2wgXCYjMzQ7RW5hYmxlIHRoZSBjb21wcmVzc2VkIGNhY2hlIGZvciBzd2FwIHBhZ2VzIGJ5IGRlZmF1bHRcJiMzNDtcbi0tXG5tbS9LY29uZmlnLTQ0LVxubW0vS2NvbmZpZzo0NTpjb25maWcgWlNXQVBfU0hSSU5LRVJfREVGQVVMVF9PTlxubW0vS2NvbmZpZy00Ni1cdGJvb2wgXCYjMzQ7U2hyaW5rIHRoZSB6c3dhcCBwb29sIG9uIG1lbW9yeSBwcmVzc3VyZVwmIzM0O1xuLS1cbm1tL0tjb25maWc9NTk9Y2hvaWNlXG4tLVxubW0vS2NvbmZpZy03Ni1cbm1tL0tjb25maWc6Nzc6Y29uZmlnIFpTV0FQX0NPTVBSRVNTT1JfREVGQVVMVF9ERUZMQVRFXG5tbS9LY29uZmlnLTc4LVx0Ym9vbCBcJiMzNDtEZWZsYXRlXCYjMzQ7XG4tLVxubW0vS2NvbmZpZy04Mi1cbm1tL0tjb25maWc6ODM6Y29uZmlnIFpTV0FQX0NPTVBSRVNTT1JfREVGQVVMVF9MWk9cbm1tL0tjb25maWctODQtXHRib29sIFwmIzM0O0xaT1wmIzM0O1xuLS1cbm1tL0tjb25maWctODgtXG5tbS9LY29uZmlnOjg5OmNvbmZpZyBaU1dBUF9DT01QUkVTU09SX0RFRkFVTFRfODQyXG5tbS9LY29uZmlnLTkwLVx0Ym9vbCBcJiMzNDs4NDJcJiMzNDtcbi0tXG5tbS9LY29uZmlnLTk0LVxubW0vS2NvbmZpZzo5NTpjb25maWcgWlNXQVBfQ09NUFJFU1NPUl9ERUZBVUxUX0xaNFxubW0vS2NvbmZpZy05Ni1cdGJvb2wgXCYjMzQ7TFo0XCYjMzQ7XG4tLVxubW0vS2NvbmZpZy0xMDAtXG5tbS9LY29uZmlnOjEwMTpjb25maWcgWlNXQVBfQ09NUFJFU1NPUl9ERUZBVUxUX0xaNEhDXG5tbS9LY29uZmlnLTEwMi1cdGJvb2wgXCYjMzQ7TFo0SENcJiMzNDtcbi0tXG5tbS9LY29uZmlnLTEwNi1cbm1tL0tjb25maWc6MTA3OmNvbmZpZyBaU1dBUF9DT01QUkVTU09SX0RFRkFVTFRfWlNURFxubW0vS2NvbmZpZy0xMDgtXHRib29sIFwmIzM0O3pzdGRcJiMzNDtcbi0tXG5tbS9LY29uZmlnPTExMj1lbmRjaG9pY2Vcbm1tL0tjb25maWctMTEzLVxubW0vS2NvbmZpZzoxMTQ6Y29uZmlnIFpTV0FQX0NPTVBSRVNTT1JfREVGQVVMVFxubW0vS2NvbmZpZy0xMTUtICAgICAgIHN0cmluZ1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDEzOjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3MDYKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiA1MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgWlNXQVAgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyB0aGUgYWN0aXZlIGNvbmZpZ3VyYXRpb24gaXMgY3VycmVudGx5IHNldCB0byBgWlNXQVBgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtJcyB0aGlzIHRoZSAqb25seSogY29uZmlndXJhdGlvbiBvcHRpb24sIG9yIGFyZSB0aGVyZSBvdGhlcnMgd2Ugc2hvdWxkIGJlIGF3YXJlIG9mPyYjMzQ7IExldCYjMzk7cyBkaWcgZGVlcGVyLiBUaGUgcG90ZW50aWFsIGZvciBhIHNldHRpbmcgY2FsbGVkIGBaU1dBUF9ERUZBVUxUX09OYCBoYXMgbWUgaW50cmlndWVkLiBFbmFibGluZyBgWlNXQVBgIGJ5IGRlZmF1bHQgd291bGQgc2ltcGxpZnkgdGhpbmdzIGZvciBtYW55IHVzZXJzLCBzbyBJJiMzOTttIGludGVyZXN0ZWQgaW4gdW5kZXJzdGFuZGluZyB0aGUgaW1wbGljYXRpb25zIG9mIHRoYXQuIEJlZm9yZSBJIGNvbW1pdCB0byBhbnkgY2hhbmdlcywgSSBuZWVkIHRvIHRob3JvdWdobHkgdW5kZXJzdGFuZCB0aGlzLiBJdCYjMzk7cyB0aW1lIHRvIGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMgb2YgYFpTV0FQYC4gV2hhdCBvdGhlciBjb21wb25lbnRzIG9yIGZlYXR1cmVzIHJlbHkgb24sIG9yIGFyZSByZWxpZWQgdXBvbiBieSwgdGhpcyBzZXR0aW5nPyBVbmRlcnN0YW5kaW5nIHRoZSBjb21wbGV0ZSBwaWN0dXJlIGlzIGNyaXRpY2FsIGJlZm9yZSBtYWtpbmcgYSBkZWNpc2lvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMzowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgWlNXQVAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL0tjb25maWc9MTI9bWVudWNvbmZpZyBTV0FQXG4tLVxubW0vS2NvbmZpZy0yMS1cbm1tL0tjb25maWc6MjI6Y29uZmlnIFpTV0FQXG5tbS9LY29uZmlnLTIzLVx0Ym9vbCBcJiMzNDtDb21wcmVzc2VkIGNhY2hlIGZvciBzd2FwIHBhZ2VzXCYjMzQ7XG4tLVxubW0vS2NvbmZpZy0zNC1cbm1tL0tjb25maWc6MzU6Y29uZmlnIFpTV0FQX0RFRkFVTFRfT05cbm1tL0tjb25maWctMzYtXHRib29sIFwmIzM0O0VuYWJsZSB0aGUgY29tcHJlc3NlZCBjYWNoZSBmb3Igc3dhcCBwYWdlcyBieSBkZWZhdWx0XCYjMzQ7XG4tLVxubW0vS2NvbmZpZy00NC1cbm1tL0tjb25maWc6NDU6Y29uZmlnIFpTV0FQX1NIUklOS0VSX0RFRkFVTFRfT05cbm1tL0tjb25maWctNDYtXHRib29sIFwmIzM0O1NocmluayB0aGUgenN3YXAgcG9vbCBvbiBtZW1vcnkgcHJlc3N1cmVcJiMzNDtcbi0tXG5tbS9LY29uZmlnPTU5PWNob2ljZVxuLS1cbm1tL0tjb25maWctNzYtXG5tbS9LY29uZmlnOjc3OmNvbmZpZyBaU1dBUF9DT01QUkVTU09SX0RFRkFVTFRfREVGTEFURVxubW0vS2NvbmZpZy03OC1cdGJvb2wgXCYjMzQ7RGVmbGF0ZVwmIzM0O1xuLS1cbm1tL0tjb25maWctODItXG5tbS9LY29uZmlnOjgzOmNvbmZpZyBaU1dBUF9DT01QUkVTU09SX0RFRkFVTFRfTFpPXG5tbS9LY29uZmlnLTg0LVx0Ym9vbCBcJiMzNDtMWk9cJiMzNDtcbi0tXG5tbS9LY29uZmlnLTg4LVxubW0vS2NvbmZpZzo4OTpjb25maWcgWlNXQVBfQ09NUFJFU1NPUl9ERUZBVUxUXzg0MlxubW0vS2NvbmZpZy05MC1cdGJvb2wgXCYjMzQ7ODQyXCYjMzQ7XG4tLVxubW0vS2NvbmZpZy05NC1cbm1tL0tjb25maWc6OTU6Y29uZmlnIFpTV0FQX0NPTVBSRVNTT1JfREVGQVVMVF9MWjRcbm1tL0tjb25maWctOTYtXHRib29sIFwmIzM0O0xaNFwmIzM0O1xuLS1cbm1tL0tjb25maWctMTAwLVxubW0vS2NvbmZpZzoxMDE6Y29uZmlnIFpTV0FQX0NPTVBSRVNTT1JfREVGQVVMVF9MWjRIQ1xubW0vS2NvbmZpZy0xMDItXHRib29sIFwmIzM0O0xaNEhDXCYjMzQ7XG4tLVxubW0vS2NvbmZpZy0xMDYtXG5tbS9LY29uZmlnOjEwNzpjb25maWcgWlNXQVBfQ09NUFJFU1NPUl9ERUZBVUxUX1pTVERcbm1tL0tjb25maWctMTA4LVx0Ym9vbCBcJiMzNDt6c3RkXCYjMzQ7XG4tLVxubW0vS2NvbmZpZz0xMTI9ZW5kY2hvaWNlXG5tbS9LY29uZmlnLTExMy1cbm1tL0tjb25maWc6MTE0OmNvbmZpZyBaU1dBUF9DT01QUkVTU09SX0RFRkFVTFRcbm1tL0tjb25maWctMTE1LSAgICAgICBzdHJpbmdcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMzowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDgxCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgS2VybmVsIENvbmZpZ3VyYXRpb24gTGFuZHNjYXBlKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHNvbWV0aGluZyByZWxhdGVkIHRvIGtlcm5lbCBjb25maWd1cmF0aW9uLiBMZXQmIzM5O3Mgc3RhcnQgZGlnZ2luZyBpbnRvIHRoZSBgbW0vS2NvbmZpZ2AgZmlsZS4gSSYjMzk7bSBnb2luZyB0byBmb2N1cyBteSBpbml0aWFsIGF0dGVudGlvbiBhcm91bmQgbGluZSAyMiDigJMgdGhhdCYjMzk7cyBvZnRlbiBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIGEgaGlnaC1sZXZlbCBvdmVydmlldyBpbiB0aGVzZSBLY29uZmlnIGZpbGVzLiBUaGUgc3RydWN0dXJlJiMzOTtzIHVzdWFsbHkgcHJldHR5IGNvbnNpc3RlbnQsIHNvIEkmIzM5O20gZXhwZWN0aW5nIHRvIGZpbmQgZWl0aGVyIGEgbmV3IG9wdGlvbiBkZWZpbml0aW9uLCBhIG1lbnUgZW50cnksIG9yIHBlcmhhcHMgYSBjb25kaXRpb25hbCBpbmNsdWRlIHRoYXQgc2V0cyB0aGUgc3RhZ2UgZm9yIGEgcmVsYXRlZCBjb25maWd1cmF0aW9uIGZlYXR1cmUuIExpbmUgMjIgc3BlY2lmaWNhbGx5IG1pZ2h0IGJlIHJlbGV2YW50IHRvIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBzdWJzeXN0ZW0gSSYjMzk7bSBmb2N1c2luZyBvbi4gSSYjMzk7bGwgbWVudGFsbHkgbm90ZSB0aGUgY29udGV4dCBhcm91bmQgdGhhdCBsaW5lIOKAkyBhbnkgc3Vycm91bmRpbmcgY29tbWVudHMgb3Igb3RoZXIgS2NvbmZpZyBvcHRpb25zIOKAkyB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZSBhbmQgYW55IGRlcGVuZGVuY2llcy4gRnJvbSB0aGVyZSwgSSBjYW4gZGVjaWRlIGlmIHRoYXQmIzM5O3MgdGhlIGNvcnJlY3QgZmlsZSwgb3IgaWYgSSBzaG91bGQgbW92ZSBvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMzowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O21tL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDE1Olx0XHRkZWZhdWx0IHlcbiAgMTY6XHRcdGhlbHBcbiAgMTc6XHRcdCAgVGhpcyBvcHRpb24gYWxsb3dzIHlvdSB0byBjaG9vc2Ugd2hldGhlciB5b3Ugd2FudCB0byBoYXZlIHN1cHBvcnRcbiAgMTg6XHRcdCAgZm9yIHNvIGNhbGxlZCBzd2FwIGRldmljZXMgb3Igc3dhcCBmaWxlcyBpbiB5b3VyIGtlcm5lbCB0aGF0IGFyZVxuICAxOTpcdFx0ICB1c2VkIHRvIHByb3ZpZGUgbW9yZSB2aXJ0dWFsIG1lbW9yeSB0aGFuIHRoZSBhY3R1YWwgUkFNIHByZXNlbnRcbiAgMjA6XHRcdCAgaW4geW91ciBjb21wdXRlci4gIElmIHVuc3VyZSBzYXkgWS5cbiAgMjE6XHRcbiAgMjI6XHRjb25maWcgWlNXQVBcbiAgMjM6XHRcdGJvb2wgXCYjMzQ7Q29tcHJlc3NlZCBjYWNoZSBmb3Igc3dhcCBwYWdlc1wmIzM0O1xuICAyNDpcdFx0ZGVwZW5kcyBvbiBTV0FQXG4gIDI1Olx0XHRzZWxlY3QgQ1JZUFRPXG4gIDI2Olx0XHRzZWxlY3QgWlNNQUxMT0NcbiAgMjc6XHRcdGhlbHBcbiAgMjg6XHRcdCAgQSBsaWdodHdlaWdodCBjb21wcmVzc2VkIGNhY2hlIGZvciBzd2FwIHBhZ2VzLiAgSXQgdGFrZXNcbiAgMjk6XHRcdCAgcGFnZXMgdGhhdCBhcmUgaW4gdGhlIHByb2Nlc3Mgb2YgYmVpbmcgc3dhcHBlZCBvdXQgYW5kIGF0dGVtcHRzIHRvXG4gIDMwOlx0XHQgIGNvbXByZXNzIHRoZW0gaW50byBhIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCBSQU0tYmFzZWQgbWVtb3J5IHBvb2wuXG4gIDMxOlx0XHQgIFRoaXMgY2FuIHJlc3VsdCBpbiBhIHNpZ25pZmljYW50IEkvTyByZWR1Y3Rpb24gb24gc3dhcCBkZXZpY2UgYW5kLFxuICAzMjpcdFx0ICBpbiB0aGUgY2FzZSB3aGVyZSBkZWNvbXByZXNzaW5nIGZyb20gUkFNIGlzIGZhc3RlciB0aGFuIHN3YXAgZGV2aWNlXG4gIDMzOlx0XHQgIHJlYWRzLCBjYW4gYWxzbyBpbXByb3ZlIHdvcmtsb2FkIHBlcmZvcm1hbmNlLlxuICAzNDpcdFxuICAzNTpcdGNvbmZpZyBaU1dBUF9ERUZBVUxUX09OXG4gIDM2Olx0XHRib29sIFwmIzM0O0VuYWJsZSB0aGUgY29tcHJlc3NlZCBjYWNoZSBmb3Igc3dhcCBwYWdlcyBieSBkZWZhdWx0XCYjMzQ7XG4gIDM3Olx0XHRkZXBlbmRzIG9uIFpTV0FQXG4gIDM4Olx0XHRoZWxwXG4gIDM5Olx0XHQgIElmIHNlbGVjdGVkLCB0aGUgY29tcHJlc3NlZCBjYWNoZSBmb3Igc3dhcCBwYWdlcyB3aWxsIGJlIGVuYWJsZWRcbiAgNDA6XHRcdCAgYXQgYm9vdCwgb3RoZXJ3aXNlIGl0IHdpbGwgYmUgZGlzYWJsZWQuXG4gIDQxOlx0XG4gIDQyOlx0XHQgIFRoZSBzZWxlY3Rpb24gbWFkZSBoZXJlIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHVzaW5nIHRoZSBrZXJuZWxcbiAgNDM6XHRcdCAgY29tbWFuZCBsaW5lICYjMzk7enN3YXAuZW5hYmxlZD0mIzM5OyBvcHRpb24uXG4gIDQ0Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTM6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTE1MAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDE1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFpTV0FQIE1vZHVsZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBaU1dBUCBjb2RlIGFuZCBpbW1lZGlhdGVseSBzZWUgd2UgbmVlZCB0byBjb25zaWRlciBgWlNXQVBgLCBgWlNXQVBfREVGQVVMVF9PTmAsIGFuZCBgU1dBUGAg4oCTIHRob3NlIGFyZSB0aGUga2V5IGNvbnN0YW50cyBvciBkZWZpbml0aW9ucyBpbiBwbGF5LiBUaGUgcGF0Y2ggaXMgdG91Y2hpbmcgYHpzd2FwX2xydV9hZGRgIGFuZCBgenN3YXBfbHJ1X2RlbGAsIHdoaWNoIGFyZSBzdGF0aWMgZnVuY3Rpb25zLiBTdGF0aWMgZnVuY3Rpb25zIGFyZSwgYnkgdGhlaXIgbmF0dXJlLCBsb2NhbGl6ZWQsIG1ha2luZyB0aGVtIGVhc2llciB0byB0cmFjZS4gVGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHBpbnBvaW50IHRoZSBjYWxsZXJzIG9mIHRoZXNlIGZ1bmN0aW9ucy4gS25vd2luZyB0aG9zZSBjYWxsZXJzIGlzIGdvaW5nIHRvIGZvY3VzIG15IGFuYWx5c2lzLCBzaG93IG1lIHdoYXQgdGhlIGFmZmVjdGVkIGNvbnRyb2wgZmxvdyBpcy4KCkFoLCBoZXJlIHdlIGdvLCBgenN3YXBfZW50cnlfZnJlZWAgY2FsbHMgYHpzd2FwX2xydV9kZWxgIGFuZCBgenN3YXBfc3RvcmVfcGFnZWAgY2FsbHMgYHpzd2FwX2xydV9hZGRgLiBXYWl0IGEgbWludXRlLCBJIHRoaW5rIGB6c3dhcF9zdG9yZV9wYWdlYCBpcyBzdGF0aWMsIGlzbiYjMzk7dCBpdD8gQmV0dGVyIGRvdWJsZS1jaGVjayB0aGF0IGJ5IGhlYWRpbmcgb3ZlciB0byBgbW0venN3YXAuY2AgdG8gY29uZmlybSBteSBzdXNwaWNpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDEzOjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3pzd2FwX3N0b3JlX3BhZ2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS96c3dhcC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL3pzd2FwLmM9MTMwNj1zdGF0aWMgdm9pZCBzaHJpbmtfd29ya2VyKHN0cnVjdCB3b3JrX3N0cnVjdCAqdylcbi0tXG5tbS96c3dhcC5jLTEzOTUtXG5tbS96c3dhcC5jOjEzOTY6c3RhdGljIGJvb2wgenN3YXBfc3RvcmVfcGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSxcbm1tL3pzd2FwLmMtMTM5Ny1cdFx0XHQgICAgIHN0cnVjdCBvYmpfY2dyb3VwICpvYmpjZyxcbi0tXG5tbS96c3dhcC5jPTE0NzY9Ym9vbCB6c3dhcF9zdG9yZShzdHJ1Y3QgZm9saW8gKmZvbGlvKVxuLS1cbm1tL3pzd2FwLmMtMTUyMC1cbm1tL3pzd2FwLmM6MTUyMTpcdFx0aWYgKCF6c3dhcF9zdG9yZV9wYWdlKHBhZ2UsIG9iamNnLCBwb29sKSlcbm1tL3pzd2FwLmMtMTUyMi1cdFx0XHRnb3RvIHB1dF9wb29sO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMzowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NzUwCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZyBhcyBhbiBleHBlcnQ6CgoqKkRpdmluZyBpbnRvIHRoZSBac3dhcCBQYWdlIEhhbmRsaW5nKioKClJpZ2h0LCBzbyBgenN3YXBfc3RvcmVgIGlzIGNhbGxpbmcgYHpzd2FwX3N0b3JlX3BhZ2VgLiBNYWtlcyBzZW5zZSwgdGhhdCYjMzk7cyB0aGUgY29yZSBvZiBob3cgdGhlIGRhdGEgZ2V0cyBwdXQgaW50byB0aGUgY29tcHJlc3NlZCBjYWNoZS4gTm90IHN0YXRpYywgaHVoPyBPa2F5LCBJJiMzOTtsbCBrZWVwIHRoYXQgaW4gbWluZC4gVGhhdCBpbXBsaWVzIGl0IG1pZ2h0IGJlIHVzZWQgZnJvbSBhIGZldyBkaWZmZXJlbnQgcGxhY2VzIHdpdGhpbiB0aGUgenN3YXAgYXJjaGl0ZWN0dXJlLiBOb3csIGxldCYjMzk7cyBwaXZvdCBhbmQgdGFrZSBhIGxvb2sgYXQgYHpzd2FwX2VudHJ5X2ZyZWVgLiBVbmRlcnN0YW5kaW5nIGhvdyBlbnRyaWVzIGFyZSBmcmVlZCBpcyBjcml0aWNhbCBmb3IgYSBwZXJmb3JtYW50IGNhY2hlOyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbGlmZWN5Y2xlIG9mIHRoZXNlIGVudHJpZXMgZnJvbSBzdG9yYWdlIHRvIGRlYWxsb2NhdGlvbi4gTGV0JiMzOTtzIHNlZSBob3cgdGhhdCBpbnRlZ3JhdGVzIHdpdGggdGhlIHN0b3JpbmcgcHJvY2Vzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTM6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7enN3YXBfZW50cnlfZnJlZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL3pzd2FwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0venN3YXAuYz03NTY9c3RhdGljIHZvaWQgenN3YXBfZW50cnlfY2FjaGVfZnJlZShzdHJ1Y3QgenN3YXBfZW50cnkgKmVudHJ5KVxuLS1cbm1tL3pzd2FwLmMtNzY0LSAqL1xubW0venN3YXAuYzo3NjU6c3RhdGljIHZvaWQgenN3YXBfZW50cnlfZnJlZShzdHJ1Y3QgenN3YXBfZW50cnkgKmVudHJ5KVxubW0venN3YXAuYy03NjYte1xuLS1cbm1tL3pzd2FwLmM9OTg3PXN0YXRpYyBpbnQgenN3YXBfd3JpdGViYWNrX2VudHJ5KHN0cnVjdCB6c3dhcF9lbnRyeSAqZW50cnksXG4tLVxubW0venN3YXAuYy0xMDQyLVxubW0venN3YXAuYzoxMDQzOlx0enN3YXBfZW50cnlfZnJlZShlbnRyeSk7XG5tbS96c3dhcC5jLTEwNDQtXG4tLVxubW0venN3YXAuYz0xMzk2PXN0YXRpYyBib29sIHpzd2FwX3N0b3JlX3BhZ2Uoc3RydWN0IHBhZ2UgKnBhZ2UsXG4tLVxubW0venN3YXAuYy0xNDI5LVx0aWYgKG9sZClcbm1tL3pzd2FwLmM6MTQzMDpcdFx0enN3YXBfZW50cnlfZnJlZShvbGQpO1xubW0venN3YXAuYy0xNDMxLVxuLS1cbm1tL3pzd2FwLmMtMTQzNS1cdCAqIGNoYXJnZSB6c3dhcCBtZW1vcnksIGFuZCBpbmNyZW1lbnQgenN3YXBfc3RvcmVkX3BhZ2VzLlxubW0venN3YXAuYzoxNDM2Olx0ICogVGhlIG9wcG9zaXRlIGFjdGlvbnMgd2lsbCBiZSBwZXJmb3JtZWQgYnkgenN3YXBfZW50cnlfZnJlZSgpXG5tbS96c3dhcC5jLTE0MzctXHQgKiB3aGVuIHRoZSBlbnRyeSBpcyByZW1vdmVkIGZyb20gdGhlIHRyZWUuXG4tLVxubW0venN3YXAuYz0xNDc2PWJvb2wgenN3YXBfc3RvcmUoc3RydWN0IGZvbGlvICpmb2xpbylcbi0tXG5tbS96c3dhcC5jLTE1NTQtXHRcdFx0aWYgKGVudHJ5KVxubW0venN3YXAuYzoxNTU1Olx0XHRcdFx0enN3YXBfZW50cnlfZnJlZShlbnRyeSk7XG5tbS96c3dhcC5jLTE1NTYtXHRcdH1cbi0tXG5tbS96c3dhcC5jPTE1ODI9aW50IHpzd2FwX2xvYWQoc3RydWN0IGZvbGlvICpmb2xpbylcbi0tXG5tbS96c3dhcC5jLTE2MjgtXHR4YV9lcmFzZSh0cmVlLCBvZmZzZXQpO1xubW0venN3YXAuYzoxNjI5Olx0enN3YXBfZW50cnlfZnJlZShlbnRyeSk7XG5tbS96c3dhcC5jLTE2MzAtXG4tLVxubW0venN3YXAuYz0xNjM1PXZvaWQgenN3YXBfaW52YWxpZGF0ZShzd3BfZW50cnlfdCBzd3ApXG4tLVxubW0venN3YXAuYy0xNjQ1LVx0aWYgKGVudHJ5KVxubW0venN3YXAuYzoxNjQ2Olx0XHR6c3dhcF9lbnRyeV9mcmVlKGVudHJ5KTtcbm1tL3pzd2FwLmMtMTY0Ny19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDEzOjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY1OTQKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIG15IG93biB0aGlua2luZyBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB6c3dhcCBGdW5jdGlvbiBTY29wZSoqCgpSaWdodCwgbGV0JiMzOTtzIHRha2UgYSBsb29rIGF0IHRoZXNlIGB6c3dhcF9zdG9yZWAsIGB6c3dhcF9sb2FkYCwgYW5kIGB6c3dhcF9pbnZhbGlkYXRlYCBmdW5jdGlvbnMuIFRoZSBmYWN0IHRoYXQgdGhleSBhcmVuJiMzOTt0IGRlY2xhcmVkIGFzIGBzdGF0aWNgIGltbWVkaWF0ZWx5IGZsYWdzIHRoZW0gYXMgcG90ZW50aWFsIGNhbmRpZGF0ZXMgZm9yIGJyb2FkZXIgdXNlIGJleW9uZCB0aGVpciBpbW1lZGlhdGUgc291cmNlIGZpbGUuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZXkmIzM5O3JlIGFjdHVhbGx5ICp1c2VkKiBhbmQgaWYgdGhleSYjMzk7cmUgcGFydCBvZiB0aGUgcHVibGljIEFQSSBvciBqdXN0IGludGVybmFsIG1tLyBpbXBsZW1lbnRhdGlvbnMuIFNvLCBJIG5lZWQgdG8gdmVyaWZ5IGlmIHRoZXkgYXJlIGV4cG9ydGVkIHdpdGggdGhlIGBFWFBPUlRfU1lNQk9MYCBtYWNybywgaW5kaWNhdGluZyB0aGF0IG90aGVyIG1vZHVsZXMgb3IgcGFydHMgb2YgdGhlIGtlcm5lbCBjb3VsZCBiZSB1c2luZyB0aGVtLCBvciBpZiB0aGV5JiMzOTtyZSBzY29wZWQgc3RyaWN0bHkgd2l0aGluIHRoZSBgbW0vYCBkaXJlY3RvcnksIHdoaWNoIHdvdWxkIHN1Z2dlc3QgYW4gaW50ZXJuYWwtb25seSBpbXBsZW1lbnRhdGlvbi4gVGltZSB0byBkaWcgaW50byB0aGUgY29kZSBhbmQgc2VlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMzowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt6c3dhcF9zdG9yZXx6c3dhcF9sb2FkfHpzd2FwX2ludmFsaWRhdGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vcGFnZV9pby5jPTI1MT1pbnQgc3dhcF93cml0ZW91dChzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzdHJ1Y3Qgc3dhcF9pb2NiICoqc3dhcF9wbHVnKVxuLS1cbm1tL3BhZ2VfaW8uYy0yODQtXG5tbS9wYWdlX2lvLmM6Mjg1Olx0aWYgKHpzd2FwX3N0b3JlKGZvbGlvKSkge1xubW0vcGFnZV9pby5jLTI4Ni1cdFx0Y291bnRfbXRocF9zdGF0KGZvbGlvX29yZGVyKGZvbGlvKSwgTVRIUF9TVEFUX1pTV1BPVVQpO1xuLS1cbm1tL3BhZ2VfaW8uYz02NjE9dm9pZCBzd2FwX3JlYWRfZm9saW8oc3RydWN0IGZvbGlvICpmb2xpbywgc3RydWN0IHN3YXBfaW9jYiAqKnBsdWcpXG4tLVxubW0vcGFnZV9pby5jLTY4OC1cbm1tL3BhZ2VfaW8uYzo2ODk6XHRpZiAoenN3YXBfbG9hZChmb2xpbykgIT0gLUVOT0VOVClcbm1tL3BhZ2VfaW8uYy02OTAtXHRcdGdvdG8gZmluaXNoO1xuLS1cbm1tL3N3YXBmaWxlLmM9MTMxNj1zdGF0aWMgdm9pZCBzd2FwX3JhbmdlX2ZyZWUoc3RydWN0IHN3YXBfaW5mb19zdHJ1Y3QgKnNpLCB1bnNpZ25lZCBsb25nIG9mZnNldCxcbi0tXG5tbS9zd2FwZmlsZS5jLTEzMjMtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBucl9lbnRyaWVzOyBpJiM0MzsmIzQzOylcbm1tL3N3YXBmaWxlLmM6MTMyNDpcdFx0enN3YXBfaW52YWxpZGF0ZShzd3BfZW50cnkoc2ktXHUwMDNldHlwZSwgb2Zmc2V0ICYjNDM7IGkpKTtcbm1tL3N3YXBmaWxlLmMtMTMyNS1cbi0tXG5tbS96c3dhcC5jLTQ2LS8qIFRoZSBudW1iZXIgb2YgcGFnZXMgY3VycmVudGx5IHN0b3JlZCBpbiB6c3dhcCAqL1xubW0venN3YXAuYzo0NzphdG9taWNfbG9uZ190IHpzd2FwX3N0b3JlZF9wYWdlcyA9IEFUT01JQ19MT05HX0lOSVQoMCk7XG5tbS96c3dhcC5jLTQ4LS8qIFRoZSBudW1iZXIgb2YgaW5jb21wcmVzc2libGUgcGFnZXMgY3VycmVudGx5IHN0b3JlZCBpbiB6c3dhcCAqL1xubW0venN3YXAuYzo0OTpzdGF0aWMgYXRvbWljX2xvbmdfdCB6c3dhcF9zdG9yZWRfaW5jb21wcmVzc2libGVfcGFnZXMgPSBBVE9NSUNfTE9OR19JTklUKDApO1xubW0venN3YXAuYy01MC1cbi0tXG5tbS96c3dhcC5jPTc2NT1zdGF0aWMgdm9pZCB6c3dhcF9lbnRyeV9mcmVlKHN0cnVjdCB6c3dhcF9lbnRyeSAqZW50cnkpXG4tLVxubW0venN3YXAuYy03NzQtXHRpZiAoZW50cnktXHUwMDNlbGVuZ3RoID09IFBBR0VfU0laRSlcbm1tL3pzd2FwLmM6Nzc1Olx0XHRhdG9taWNfbG9uZ19kZWMoXHUwMDI2enN3YXBfc3RvcmVkX2luY29tcHJlc3NpYmxlX3BhZ2VzKTtcbm1tL3pzd2FwLmMtNzc2LVx0enN3YXBfZW50cnlfY2FjaGVfZnJlZShlbnRyeSk7XG5tbS96c3dhcC5jOjc3NzpcdGF0b21pY19sb25nX2RlYyhcdTAwMjZ6c3dhcF9zdG9yZWRfcGFnZXMpO1xubW0venN3YXAuYy03NzgtfVxuLS1cbm1tL3pzd2FwLmM9OTI0PXN0YXRpYyBib29sIHpzd2FwX2RlY29tcHJlc3Moc3RydWN0IHpzd2FwX2VudHJ5ICplbnRyeSwgc3RydWN0IGZvbGlvICpmb2xpbylcbi0tXG5tbS96c3dhcC5jLTk4MS0gKiB0byB0aGUgc3dhcCBkZXZpY2UuICBXZSBhcmUgYmFzaWNhbGx5IHJlc3VtaW5nIHRoZSBzYW1lIHN3YXBcbm1tL3pzd2FwLmM6OTgyOiAqIHdyaXRlYmFjayBwYXRoIHRoYXQgd2FzIGludGVyY2VwdGVkIHdpdGggdGhlIHpzd2FwX3N0b3JlKClcbm1tL3pzd2FwLmMtOTgzLSAqIGluIHRoZSBmaXJzdCBwbGFjZS4gIEFmdGVyIHRoZSBmb2xpbyBoYXMgYmVlbiBkZWNvbXByZXNzZWQgaW50b1xuLS1cbm1tL3pzd2FwLmM9MTE5MD1zdGF0aWMgdW5zaWduZWQgbG9uZyB6c3dhcF9zaHJpbmtlcl9jb3VudChzdHJ1Y3Qgc2hyaW5rZXIgKnNocmlua2VyLFxuLS1cbm1tL3pzd2FwLmMtMTIyNC1cdFx0bnJfYmFja2luZyA9IHpzd2FwX3RvdGFsX3BhZ2VzKCk7XG5tbS96c3dhcC5jOjEyMjU6XHRcdG5yX3N0b3JlZCA9IGF0b21pY19sb25nX3JlYWQoXHUwMDI2enN3YXBfc3RvcmVkX3BhZ2VzKTtcbm1tL3pzd2FwLmMtMTIyNi1cdH1cbi0tXG5tbS96c3dhcC5jPTEzMDY9c3RhdGljIHZvaWQgc2hyaW5rX3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKncpXG4tLVxubW0venN3YXAuYy0xMzk1LVxubW0venN3YXAuYzoxMzk2OnN0YXRpYyBib29sIHpzd2FwX3N0b3JlX3BhZ2Uoc3RydWN0IHBhZ2UgKnBhZ2UsXG5tbS96c3dhcC5jLTEzOTctXHRcdFx0ICAgICBzdHJ1Y3Qgb2JqX2Nncm91cCAqb2JqY2csXG4tLVxubW0venN3YXAuYy0xNDM0LVx0ICogbm8gZnVydGhlciBwb3NzaWJpbGl0eSBvZiBmYWlsdXJlLiBHcmFiIHJlZnMgdG8gdGhlIHBvb2wgYW5kIG9iamNnLFxubW0venN3YXAuYzoxNDM1Olx0ICogY2hhcmdlIHpzd2FwIG1lbW9yeSwgYW5kIGluY3JlbWVudCB6c3dhcF9zdG9yZWRfcGFnZXMuXG5tbS96c3dhcC5jLTE0MzYtXHQgKiBUaGUgb3Bwb3NpdGUgYWN0aW9ucyB3aWxsIGJlIHBlcmZvcm1lZCBieSB6c3dhcF9lbnRyeV9mcmVlKClcbi0tXG5tbS96c3dhcC5jLTE0NDMtXHR9XG5tbS96c3dhcC5jOjE0NDQ6XHRhdG9taWNfbG9uZ19pbmMoXHUwMDI2enN3YXBfc3RvcmVkX3BhZ2VzKTtcbm1tL3pzd2FwLmMtMTQ0NS1cdGlmIChlbnRyeS1cdTAwM2VsZW5ndGggPT0gUEFHRV9TSVpFKVxubW0venN3YXAuYzoxNDQ2Olx0XHRhdG9taWNfbG9uZ19pbmMoXHUwMDI2enN3YXBfc3RvcmVkX2luY29tcHJlc3NpYmxlX3BhZ2VzKTtcbm1tL3pzd2FwLmMtMTQ0Ny1cbi0tXG5tbS96c3dhcC5jLTE0NzUtXG5tbS96c3dhcC5jOjE0NzY6Ym9vbCB6c3dhcF9zdG9yZShzdHJ1Y3QgZm9saW8gKmZvbGlvKVxubW0venN3YXAuYy0xNDc3LXtcbi0tXG5tbS96c3dhcC5jLTE1MjAtXG5tbS96c3dhcC5jOjE1MjE6XHRcdGlmICghenN3YXBfc3RvcmVfcGFnZShwYWdlLCBvYmpjZywgcG9vbCkpXG5tbS96c3dhcC5jLTE1MjItXHRcdFx0Z290byBwdXRfcG9vbDtcbi0tXG5tbS96c3dhcC5jLTE1NjItLyoqXG5tbS96c3dhcC5jOjE1NjM6ICogenN3YXBfbG9hZCgpIC0gbG9hZCBhIGZvbGlvIGZyb20genN3YXBcbm1tL3pzd2FwLmMtMTU2NC0gKiBAZm9saW86IGZvbGlvIHRvIGxvYWRcbi0tXG5tbS96c3dhcC5jLTE1ODEtICovXG5tbS96c3dhcC5jOjE1ODI6aW50IHpzd2FwX2xvYWQoc3RydWN0IGZvbGlvICpmb2xpbylcbm1tL3pzd2FwLmMtMTU4My17XG4tLVxubW0venN3YXAuYy0xNjM0LVxubW0venN3YXAuYzoxNjM1OnZvaWQgenN3YXBfaW52YWxpZGF0ZShzd3BfZW50cnlfdCBzd3ApXG5tbS96c3dhcC5jLTE2MzYte1xuLS1cbm1tL3pzd2FwLmM9MTcwMT1zdGF0aWMgaW50IGRlYnVnZnNfZ2V0X3N0b3JlZF9wYWdlcyh2b2lkICpkYXRhLCB1NjQgKnZhbClcbm1tL3pzd2FwLmMtMTcwMi17XG5tbS96c3dhcC5jOjE3MDM6XHQqdmFsID0gYXRvbWljX2xvbmdfcmVhZChcdTAwMjZ6c3dhcF9zdG9yZWRfcGFnZXMpO1xubW0venN3YXAuYy0xNzA0LVx0cmV0dXJuIDA7XG4tLVxubW0venN3YXAuYz0xNzA4PXN0YXRpYyBpbnQgZGVidWdmc19nZXRfc3RvcmVkX2luY29tcHJlc3NpYmxlX3BhZ2VzKHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxubW0venN3YXAuYy0xNzA5LXtcbm1tL3pzd2FwLmM6MTcxMDpcdCp2YWwgPSBhdG9taWNfbG9uZ19yZWFkKFx1MDAyNnpzd2FwX3N0b3JlZF9pbmNvbXByZXNzaWJsZV9wYWdlcyk7XG5tbS96c3dhcC5jLTE3MTEtXHRyZXR1cm4gMDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTM6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODQ2MgoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDM4NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgWnN3YXAgRW50cnkgUG9pbnRzIGZvciBGdXp6aW5nKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgdG8gZWZmZWN0aXZlbHkgZnV6eiB0aGUgenN3YXAgc3Vic3lzdGVtLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB0YXJnZXQgdGhlIGNvcmUgZW50cnkgcG9pbnRzOiBgenN3YXBfc3RvcmVgLCBgenN3YXBfbG9hZGAsIGFuZCBgenN3YXBfaW52YWxpZGF0ZWAuIFRoZXNlIGFyZSB0aGUgZnVuY3Rpb25zIHRoYXQgaGFuZGxlIHRoZSBmdW5kYW1lbnRhbCBvcGVyYXRpb25zIG9mIHpzd2FwLCBuYW1lbHkgc3RvcmluZywgcmV0cmlldmluZywgYW5kIGludmFsaWRhdGluZyBwYWdlcy4gVGhleSYjMzk7cmUgY2FsbGVkIGZyb20gdGhlIGtleSBzd2FwIG9wZXJhdGlvbnM6IGBzd2FwX3dyaXRlb3V0YCwgYHN3YXBfcmVhZF9mb2xpb2AsIGFuZCBgc3dhcF9yYW5nZV9mcmVlYC4gR2l2ZW4gdGhlIGZvY3VzIG9mIG15IHBhdGNoIG9uIGB6c3dhcF9scnVfYWRkYCBhbmQgYHpzd2FwX2xydV9kZWxgLCB3aGljaCBhcmUgY2FsbGVkIGR1cmluZyBwYWdlIHN0b3JhZ2UgYW5kIGZyZWVpbmcsIHRoaXMgc2VlbXMgbGlrZSB0aGUgbW9zdCBkaXJlY3QgcGF0aC4KCkxldCBtZSBicmVhayB0aGlzIGRvd24gZnVydGhlci4gYHpzd2FwX3N0b3JlYCBpcyB0aGUgb25lIHRoYXQgZGlyZWN0bHkgY2FsbHMgYHpzd2FwX3N0b3JlX3BhZ2VgLCB3aGljaCBpbiB0dXJuIGNhbGxzIGB6c3dhcF9scnVfYWRkYC4gVGhlbiwgYHpzd2FwX2VudHJ5X2ZyZWVgIGNhbGxzIGB6c3dhcF9scnVfZGVsYC4gYHpzd2FwX2VudHJ5X2ZyZWVgIGdldHMgY2FsbGVkIGZyb20gYHpzd2FwX2ludmFsaWRhdGVgLCBgenN3YXBfbG9hZGAgKHdoZW4gYW4gZW50cnkgaXMgcmVtb3ZlZCksIGFuZCBldmVuIGB6c3dhcF9zdG9yZWAgKHdoZW4gcmVwbGFjaW5nIGFuIG9sZCBlbnRyeSkuIFRoaXMgcmUtZW5mb3JjZXMgdGhlIGluaXRpYWwgZm9jdXMuCgpgenN3YXBfc3RvcmVgIHNlZW1zIHBhcnRpY3VsYXJseSBhdHRyYWN0aXZlIGFzIGl0JiMzOTtzIGEgaG90IHBhdGgsIGNhbGxlZCBvbiBldmVyeSBzaW5nbGUgc3dhcC1vdXQgZXZlbnQuIFRoaXMgZGlyZWN0bHkgbWVhbnMgdGFyZ2V0aW5nIHRoZXNlIGZ1bmN0aW9ucyBhcyBGb2N1c1N5bWJvbHMgc2hvdWxkIGRyaXZlIHRoZSBmdXp6ZXIgdG8gaGVhdmlseSBleGVyY2lzZSBzd2FwIG9wZXJhdGlvbnMuIENydWNpYWxseSwgSSBoYXZlIHRvIHJlbWVtYmVyIHRoYXQgdG8gZnV6eiB6c3dhcCBlZmZlY3RpdmVseSwgSSBuZWVkIHN3YXAgZW5hYmxlZCBhbmQgenN3YXAgZW5hYmxlZCwgd2hpY2ggaXMgYSBrZXkgcmVxdWlyZW1lbnQuCgpOb3csIGFtIEkgbWlzc2luZyBhbnl0aGluZz8gSSB0aGluayBJIG5lZWQgdG8gcXVpY2tseSBzY2FuIHRoZSBjb2RlIGZvciBvdGhlciBlbnRyeSBwb2ludHMuIEkgc2hvdWxkIGxvb2sgYXQgYHNocmlua193b3JrZXJgIGluIGB6c3dhcC5jYCwgYnV0IGl0JiMzOTtzIGEgd29ya2VyIGFuZCBub3QgYXMgZGlyZWN0bHkgcmVsYXRlZC4gQWN0dWFsbHksIGB6c3dhcF9zd2Fwb25gIGlzIGNhbGxlZCB3aGVuIHN3YXAgaXMgZW5hYmxlZC4gSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgdGhhdCBvbmUgb3V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMzowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt6c3dhcF9zd2Fwb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vc3dhcGZpbGUuYz0zNjA1PVNZU0NBTExfREVGSU5FMihzd2Fwb24sIGNvbnN0IGNoYXIgX191c2VyICosIHNwZWNpYWxmaWxlLCBpbnQsIHN3YXBfZmxhZ3MpXG4tLVxubW0vc3dhcGZpbGUuYy0zNzU3LVxubW0vc3dhcGZpbGUuYzozNzU4Olx0ZXJyb3IgPSB6c3dhcF9zd2Fwb24oc2ktXHUwMDNldHlwZSwgbWF4cGFnZXMpO1xubW0vc3dhcGZpbGUuYy0zNzU5LVx0aWYgKGVycm9yKVxuLS1cbm1tL3pzd2FwLmM9MTYzNT12b2lkIHpzd2FwX2ludmFsaWRhdGUoc3dwX2VudHJ5X3Qgc3dwKVxuLS1cbm1tL3pzd2FwLmMtMTY0OC1cbm1tL3pzd2FwLmM6MTY0OTppbnQgenN3YXBfc3dhcG9uKGludCB0eXBlLCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzKVxubW0venN3YXAuYy0xNjUwLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTM6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTQ5NgoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDMzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBac3dhcCBUZXN0aW5nIFBsYW4qKgoKT2theSwgc28gYHN5c19zd2Fwb25gIGlzIHRoZSBjcml0aWNhbCBzeXNjYWxsIGhlcmUsIGJlY2F1c2UgdGhhdCYjMzk7cyB3aGVyZSBgenN3YXBfc3dhcG9uYCBnZXRzIGNhbGxlZC4gVGhhdCBtYWtlcyBpdCB0aGUgZW50cnkgcG9pbnQgZm9yIGVuYWJsaW5nIHN3YXAuIFRvIHRlc3QgenN3YXAsIEkmIzM5O2xsIGRlZmluaXRlbHkgbmVlZCBib3RoIGBDT05GSUdfWlNXQVBgIGFuZCwgaWRlYWxseSwgYENPTkZJR19aU1dBUF9ERUZBVUxUX09OYC4gQWx0aG91Z2gsIHdhaXQsIHRoZSBsYXR0ZXIgaXNuJiMzOTt0IHN0cmljdGx5ICpyZXF1aXJlZCogc2luY2UgSSBjYW4gcHJvYmFibHkgdG9nZ2xlIGl0IHRocm91Z2ggc3lzZnMsIGJ1dCBlbmFibGluZyBpdCBieSBkZWZhdWx0IGluIHRoZSBjb25maWcganVzdCBzaW1wbGlmaWVzIHRoaW5ncy4KCkxldCYjMzk7cyBxdWlja2x5IGNvbmZpcm0gaWYgaGF2aW5nIGp1c3QgYENPTkZJR19aU1dBUF9ERUZBVUxUX09OYCBpcyBlbm91Z2ggdG8ga2ljayB0aGluZ3Mgb2ZmLiBZZXAsIHNlZW1zIGxpa2UgaXQgZG9lcyBlbmFibGUgaXQgYnkgZGVmYXVsdCwgc28gdGhhdCYjMzk7cyBnb29kLiBPaCwgYW5kIEkmIzM5O2xsIG5lZWQgYENPTkZJR19TV0FQYCBvZiBjb3Vyc2UsIGJ1dCB0aGF0JiMzOTtzIHByZXR0eSBzdGFuZGFyZCwgc28gaXQmIzM5O3MgcHJvYmFibHkgYWxyZWFkeSBvbiBhbnl3YXkuIEp1c3QgdG8gYmUgc3VyZSwgbGV0IG1lIGRvdWJsZS1jaGVjayBgWlNXQVBfREVGQVVMVF9PTmAgaW4gYG1tL0tjb25maWdgOgoKYGBgCmNvbmZpZyBaU1dBUF9ERUZBVUxUX09OCglib29sICYjMzQ7RW5hYmxlIHRoZSBjb21wcmVzc2VkIGNhY2hlIGZvciBzd2FwIHBhZ2VzIGJ5IGRlZmF1bHQmIzM0OwoJZGVwZW5kcyBvbiBaU1dBUApgYGAKClJpZ2h0LCBzbyB0byBiZSBzYWZlLCBJJiMzOTtsbCBlbmFibGUgKmJvdGgqIGBaU1dBUGAgYW5kIGBaU1dBUF9ERUZBVUxUX09OYC4KCkhvbGQgb24uLi4gSSBuZWVkIHRvIHRoaW5rIGFib3V0IGdvb2QgZm9jdXMgc3ltYm9scyBmb3IgZnV6emluZy4gSSByZW1lbWJlciBgenN3YXBfc3RvcmVgLCBgenN3YXBfbG9hZGAsIGFuZCBgenN3YXBfaW52YWxpZGF0ZWAgYmVpbmcgY29yZSBvcGVyYXRpb25zLiBCdXQgYXJlIHRoZXkgKmhvdCogcGF0aHM/IEhtbSwgdGhleSYjMzk7cmUgaG90ICp3aGVuKiBzd2FwcGluZywgd2hpY2ggaXMgdGhlIGtleS4uLiBzbyB0aGVzZSBzeW1ib2xzIGFyZSBub3QgcGFydCBvZiBhIGdlbmVyaWMgaG90IHBhdGguIE1lbW9yeSBwcmVzc3VyZSBvciBzcGVjaWZpYyB0cmlnZ2VycyBhcmUgbmVlZGVkLCBsaWtlIHVzaW5nIHNvbWV0aGluZyBsaWtlIGBtYWR2aXNlKE1BRFZfUEFHRU9VVClgLiBUaGF0IG1lYW5zIHRoZXNlIGFyZSBncmVhdCBmb2N1cyBzeW1ib2xzLCBndWlkaW5nIHRoZSBmdXp6ZXIgdG93YXJkcyBzd2FwIG9wZXJhdGlvbnMuIFRoZXkgd2lsbCBnZXQgdXMgdGhlcmUuCgpOb3csIGxldCBtZSBqdXN0IG1ha2Ugc3VyZSBgenN3YXBfc3RvcmVgIGlzIGV4cG9ydGVkIGFuZCByZWFkeSB0byBiZSB1c2VkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMzowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYUE9SVF9TWU1CT0wuKnpzd2FwX3N0b3JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTM6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAzMDgKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipac3dhcCBGdW5jdGlvbiBTY29wZTogRGVsdmluZyBEZWVwZXIqKgoKQWxyaWdodCwgc28gdGhlIGB6c3dhcF9mcm9udHN3YXBfc3RvcmVgIGZ1bmN0aW9uIGlzbiYjMzk7dCBtYXJrZWQgYXMgZXhwb3J0ZWQsIHdoaWNoIGlzIGltbWVkaWF0ZWx5IGludGVyZXN0aW5nLiBUaGF0IHVzdWFsbHkgbWVhbnMgaXQmIzM5O3MgaW50ZXJuYWwgdG8gdGhlIG1vZHVsZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGNvbmZpcm0gd2hlcmUgaXQgKmlzKiBkZWNsYXJlZCBhbmQgdXNlZC4gQSBxdWljayBzY2FuIHJldmVhbHMgaXQmIzM5O3MgYSBnbG9iYWwgZnVuY3Rpb24gd2l0aGluIGBtbS96c3dhcC5jYCwgYnV0IHRoZXJlIG11c3QgYmUgYSBkZWNsYXJhdGlvbiBzb21ld2hlcmUgdGhhdCBhbGxvd3MgaXQgdG8gYmUgY2FsbGVkIGZyb20gb3RoZXIgcGFydHMgb2YgdGhlIG1vZHVsZS4KClRoZSBsb2dpY2FsIHBsYWNlIHRvIGZpbmQgdGhhdCBkZWNsYXJhdGlvbiBpcyBpbiBgaW5jbHVkZS9saW51eC96c3dhcC5oYC4gVGltZSB0byBvcGVuIHRoYXQgaGVhZGVyIGZpbGUuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSBjYW4gZGVkdWNlIGFib3V0IGl0cyB2aXNpYmlsaXR5IGFuZCBpbnRlbmRlZCB1c2UgZnJvbSB0aGUgZnVuY3Rpb24mIzM5O3MgcHJvdG90eXBlIGFuZCBhbnkgYWNjb21wYW55aW5nIGNvbW1lbnRzIHRoZXJlLiBLbm93aW5nIHRoZSBpbmNsdWRlIGZpbGUgd2lsbCBjbGFyaWZ5IHRoZSBmdW5jdGlvbiYjMzk7cyBpbnRlbmRlZCBwdXJwb3NlIHdpdGhpbiB0aGUgenN3YXAgc3Vic3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMzowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt6c3dhcF9zdG9yZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvenN3YXAuaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L3pzd2FwLmg9OD1zdHJ1Y3QgbHJ1dmVjO1xuaW5jbHVkZS9saW51eC96c3dhcC5oLTktXG5pbmNsdWRlL2xpbnV4L3pzd2FwLmg6MTA6ZXh0ZXJuIGF0b21pY19sb25nX3QgenN3YXBfc3RvcmVkX3BhZ2VzO1xuaW5jbHVkZS9saW51eC96c3dhcC5oLTExLVxuLS1cbmluY2x1ZGUvbGludXgvenN3YXAuaD0yNz11bnNpZ25lZCBsb25nIHpzd2FwX3RvdGFsX3BhZ2VzKHZvaWQpO1xuaW5jbHVkZS9saW51eC96c3dhcC5oOjI4OmJvb2wgenN3YXBfc3RvcmUoc3RydWN0IGZvbGlvICpmb2xpbyk7XG5pbmNsdWRlL2xpbnV4L3pzd2FwLmgtMjktaW50IHpzd2FwX2xvYWQoc3RydWN0IGZvbGlvICpmb2xpbyk7XG4tLVxuaW5jbHVkZS9saW51eC96c3dhcC5oPTQwPXN0cnVjdCB6c3dhcF9scnV2ZWNfc3RhdGUge307XG5pbmNsdWRlL2xpbnV4L3pzd2FwLmgtNDEtXG5pbmNsdWRlL2xpbnV4L3pzd2FwLmg6NDI6c3RhdGljIGlubGluZSBib29sIHpzd2FwX3N0b3JlKHN0cnVjdCBmb2xpbyAqZm9saW8pXG5pbmNsdWRlL2xpbnV4L3pzd2FwLmgtNDMte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMzowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDgxNAoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDIyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBac3dhcCBSZWZhY3RvcmluZyBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIGlzIGEgZ2xvYmFsIGZ1bmN0aW9uLCB3aGljaCBpcyBnb29kLiBUaGF0IG1lYW5zIGB6c3dhcF9zdG9yZWAsIGB6c3dhcF9sb2FkYCwgYW5kIGB6c3dhcF9pbnZhbGlkYXRlYCBhcmUgaWRlYWwgZm9jdXMgc3ltYm9scyBmb3IgZnV6emluZy4gSG93ZXZlciwgaG9sZCBvbi4uLiBgenN3YXBfbHJ1X2FkZGAgYW5kIGB6c3dhcF9scnVfZGVsYCBhcmUgbWFya2VkIGFzIHN0YXRpYy4gV2Ugc2hvdWxkIGRlZmluaXRlbHkgYXZvaWQgaW5jbHVkaW5nIHRob3NlIGluIG91ciBmb2N1cyBzeW1ib2xzLgoKVGhpcyBsb29rcyBsaWtlIGEgZnVuY3Rpb25hbCBjaGFuZ2Ug4oCTIGEgcmVmYWN0b3Jpbmcg4oCTIGRpcmVjdGx5IGltcGFjdGluZyB0aGUgY29yZSBrZXJuZWwgbG9naWMgd2l0aGluIGBtbS96c3dhcC5jYC4gIEdpdmVuIGl0cyBsb2NhdGlvbiBpbiB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgc3Vic3lzdGVtLCBhIHRob3JvdWdoIGZ1enppbmcgY2FtcGFpZ24gaXMgYWJzb2x1dGVseSB3YXJyYW50ZWQuCgpUbyBlbmFibGUgdGhpcywgSSYjMzk7bGwgbmVlZCB0byBtYWtlIHN1cmUgdGhlIGBaU1dBUGAgYW5kIGBaU1dBUF9ERUZBVUxUX09OYCBjb25maWdzIGFyZSBzZXQuIEkgbmVlZCB0byB0YWtlIGEgc3RlcCBiYWNrIGFuZCBkb3VibGUgY2hlY2sgdGhhdCB0aGVyZSBhcmVuJiMzOTt0IGFueSBvdGhlciBkZXBlbmRlbnQgY29uZmlncyB0aGF0IG1pZ2h0IHRyaXAgdXMgdXAsIHNvIGxldCBtZSBhZGQgYFNXQVBgIGp1c3QgdG8gYmUgc2FmZS4gYFpTV0FQYCBkZXBlbmRzIG9uIGl0LCBhbmQgd2hpbGUgYFNXQVBgIGlzICp1c3VhbGx5KiBlbmFibGVkLCBpdCYjMzk7cyBhbHdheXMgYmV0dGVyIHRvIGJlIGV4cGxpY2l0LiBJdCBhbHNvIHNlbGVjdHMgYENSWVBUT2AgYW5kIGBaU01BTExPQ2Agc28gSSBuZWVkIHRvIGNoZWNrIGBaU01BTExPQ2AgaW4gYG1tL0tjb25maWdgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMzowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgWlNNQUxMT0MmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL0tjb25maWc9MTE0PWNvbmZpZyBaU1dBUF9DT01QUkVTU09SX0RFRkFVTFRcbi0tXG5tbS9LY29uZmlnLTEyNC1cbm1tL0tjb25maWc6MTI1OmNvbmZpZyBaU01BTExPQ1xubW0vS2NvbmZpZy0xMjYtXHR0cmlzdGF0ZVxuLS1cbm1tL0tjb25maWc9MTMzPWNvbW1lbnQgXCYjMzQ7WnNtYWxsb2MgaXMgYSBjb21tb24gYmFja2VuZCBhbGxvY2F0b3IgZm9yIHpzd2FwIFx1MDAyNiB6cmFtXCYjMzQ7XG5tbS9LY29uZmlnLTEzNC1cbm1tL0tjb25maWc6MTM1OmNvbmZpZyBaU01BTExPQ19TVEFUXG5tbS9LY29uZmlnLTEzNi1cdGJvb2wgXCYjMzQ7RXhwb3J0IHpzbWFsbG9jIHN0YXRpc3RpY3NcJiMzNDtcbi0tXG5tbS9LY29uZmlnLTE0My1cbm1tL0tjb25maWc6MTQ0OmNvbmZpZyBaU01BTExPQ19DSEFJTl9TSVpFXG5tbS9LY29uZmlnLTE0NS1cdGludCBcJiMzNDtNYXhpbXVtIG51bWJlciBvZiBwaHlzaWNhbCBwYWdlcyBwZXItenNwYWdlXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDEzOjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNTMzCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTg1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlJlZmxlY3Rpbmcgb24gWlNNQUxMT0MgYW5kIFpTV0FQIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gYFpTTUFMTE9DYCBpcyB0cmlzdGF0ZSwgYnV0IGJlY2F1c2UgaXQmIzM5O3Mgc2VsZWN0ZWQgYnkgYFpTV0FQYCwgaXQmIzM5O3MgZWZmZWN0aXZlbHkgZW5hYmxlZC4gTXkgaW5zdGluY3QgaXMgdGhhdCB3ZSBzaG91bGQganVzdCBmb2N1cyBvbiBzZXR0aW5nIGBaU1dBUGAgYW5kIHRoZW4gcmVseSBvbiBgWlNXQVBfREVGQVVMVF9PTmAgdG8gaGFuZGxlIHRoZSByZXN0LiBTaW1wbGlmeWluZyB0aGUgY29uZmlndXJhdGlvbiBpcyBhbHdheXMgYSBnb29kIHRoaW5nLCBlc3BlY2lhbGx5IHdoZW4gd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBwb3RlbnRpYWxseSBjb21wbGV4IG1lbW9yeSBtYW5hZ2VtZW50IGludGVyYWN0aW9ucy4KCk5vdywgbGV0JiMzOTtzIGJhY2sgdXAgYW5kIHJlYWxseSBjb25zaWRlciB0aGUgaW1wbGljYXRpb25zIGhlcmUuIFRoZSBwYXRjaCBhdCBoYW5kIGludm9sdmVzIHJlZmFjdG9yaW5nIGB6c3dhcF9scnVfYWRkYCBhbmQgYHpzd2FwX2xydV9kZWxgLiBJdCBzb3VuZHMgbGlrZSB0aGV5JiMzOTtyZSBub3cgZGlyZWN0bHkgdXNpbmcgdGhlIGdsb2JhbCBgenN3YXBfbGlzdF9scnVgIGluc3RlYWQgb2YgcmVjZWl2aW5nIGl0IGFzIGFuIGFyZ3VtZW50LiBUaGF0JiMzOTtzIGEgZnVuZGFtZW50YWwgY2hhbmdlIHRvIHRoZSB6c3dhcCBjb3JlLiBUbyByZWFsbHkgdGVzdCB0aGlzIHByb3Blcmx5LCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB6c3dhcCBpcyBhY3RpdmUgYW5kIGZvY3VzIG9uIHRob3NlIGNvcmUgZW50cnkgcG9pbnRz4oCUYHpzd2FwX3N0b3JlYCwgYHpzd2FwX2xvYWRgLCBhbmQgYHpzd2FwX2ludmFsaWRhdGVg4oCUYmVjYXVzZSB0aG9zZSBhcmUgdGhlIG9uZXMgY2FsbGluZyB0aGUgTFJVIG9wZXJhdGlvbnMgd2UmIzM5O3JlIG1vZGlmeWluZy4gV2UgbmVlZCB0byBiZSBzdXJlIHRoZXNlIGFyZSB3ZWxsLWV4ZXJjaXNlZCB0byBlbnN1cmUgdGhpcyBjaGFuZ2UgZG9lc24mIzM5O3QgYnJlYWsgYW55dGhpbmcuCgpXYWl0LCBpcyBgenN3YXBfbGlzdF9scnVgIGEgZ2xvYmFsIHZhcmlhYmxlPyBJIG5lZWQgdG8gcXVpY2tseSBjaGVjayBgbW0venN3YXAuY2AgdG8gY29uZmlybS4gSXQgaXMgaW1wb3J0YW50IHRvIGtub3cgd2hpY2ggc3RhdGUgdGhpcyB2YXJpYWJsZSBpcyBpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTM6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7enN3YXBfbGlzdF9scnUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS96c3dhcC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL3pzd2FwLmM9MTUzPXN0cnVjdCB6c3dhcF9wb29sIHtcbi0tXG5tbS96c3dhcC5jLTE2My0vKiBHbG9iYWwgTFJVIGxpc3RzIHNoYXJlZCBieSBhbGwgenN3YXAgcG9vbHMuICovXG5tbS96c3dhcC5jOjE2NDpzdGF0aWMgc3RydWN0IGxpc3RfbHJ1IHpzd2FwX2xpc3RfbHJ1O1xubW0venN3YXAuYy0xNjUtXG4tLVxubW0venN3YXAuYz02Njg9c3RhdGljIHZvaWQgenN3YXBfbHJ1X2FkZChzdHJ1Y3QgenN3YXBfZW50cnkgKmVudHJ5KVxuLS1cbm1tL3pzd2FwLmMtNjg2LVx0Lyogd2lsbCBhbHdheXMgc3VjY2VlZCAqL1xubW0venN3YXAuYzo2ODc6XHRsaXN0X2xydV9hZGQoXHUwMDI2enN3YXBfbGlzdF9scnUsIFx1MDAyNmVudHJ5LVx1MDAzZWxydSwgbmlkLCBtZW1jZyk7XG5tbS96c3dhcC5jLTY4OC1cdHJjdV9yZWFkX3VubG9jaygpO1xuLS1cbm1tL3pzd2FwLmM9NjkxPXN0YXRpYyB2b2lkIHpzd2FwX2xydV9kZWwoc3RydWN0IHpzd2FwX2VudHJ5ICplbnRyeSlcbi0tXG5tbS96c3dhcC5jLTY5OC1cdC8qIHdpbGwgYWx3YXlzIHN1Y2NlZWQgKi9cbm1tL3pzd2FwLmM6Njk5Olx0bGlzdF9scnVfZGVsKFx1MDAyNnpzd2FwX2xpc3RfbHJ1LCBcdTAwMjZlbnRyeS1cdTAwM2VscnUsIG5pZCwgbWVtY2cpO1xubW0venN3YXAuYy03MDAtXHRyY3VfcmVhZF91bmxvY2soKTtcbi0tXG5tbS96c3dhcC5jPTExNjk9c3RhdGljIHVuc2lnbmVkIGxvbmcgenN3YXBfc2hyaW5rZXJfc2NhbihzdHJ1Y3Qgc2hyaW5rZXIgKnNocmlua2VyLFxuLS1cbm1tL3pzd2FwLmMtMTE4MC1cbm1tL3pzd2FwLmM6MTE4MTpcdHNocmlua19yZXQgPSBsaXN0X2xydV9zaHJpbmtfd2FsayhcdTAwMjZ6c3dhcF9saXN0X2xydSwgc2MsIFx1MDAyNnNocmlua19tZW1jZ19jYixcbm1tL3pzd2FwLmMtMTE4Mi1cdFx0XHUwMDI2ZW5jb3VudGVyZWRfcGFnZV9pbl9zd2FwY2FjaGUpO1xuLS1cbm1tL3pzd2FwLmM9MTE5MD1zdGF0aWMgdW5zaWduZWQgbG9uZyB6c3dhcF9zaHJpbmtlcl9jb3VudChzdHJ1Y3Qgc2hyaW5rZXIgKnNocmlua2VyLFxuLS1cbm1tL3pzd2FwLmMtMTIzMC1cbm1tL3pzd2FwLmM6MTIzMTpcdG5yX2ZyZWVhYmxlID0gbGlzdF9scnVfc2hyaW5rX2NvdW50KFx1MDAyNnpzd2FwX2xpc3RfbHJ1LCBzYyk7XG5tbS96c3dhcC5jLTEyMzItXHRpZiAoIW5yX2ZyZWVhYmxlKVxuLS1cbm1tL3pzd2FwLmM9MTI3OD1zdGF0aWMgaW50IHNocmlua19tZW1jZyhzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2cpXG4tLVxubW0venN3YXAuYy0xMjk0LVxubW0venN3YXAuYzoxMjk1Olx0XHRzaHJ1bmsgJiM0Mzs9IGxpc3RfbHJ1X3dhbGtfb25lKFx1MDAyNnpzd2FwX2xpc3RfbHJ1LCBuaWQsIG1lbWNnLFxubW0venN3YXAuYy0xMjk2LVx0XHRcdFx0XHQgICAgXHUwMDI2c2hyaW5rX21lbWNnX2NiLCBOVUxMLCBcdTAwMjZucl90b193YWxrKTtcbi0tXG5tbS96c3dhcC5jPTE0NzY9Ym9vbCB6c3dhcF9zdG9yZShzdHJ1Y3QgZm9saW8gKmZvbGlvKVxuLS1cbm1tL3pzd2FwLmMtMTUxMC1cdFx0bWVtY2cgPSBnZXRfbWVtX2Nncm91cF9mcm9tX29iamNnKG9iamNnKTtcbm1tL3pzd2FwLmM6MTUxMTpcdFx0aWYgKG1lbWNnX2xpc3RfbHJ1X2FsbG9jKG1lbWNnLCBcdTAwMjZ6c3dhcF9saXN0X2xydSwgR0ZQX0tFUk5FTCkpIHtcbm1tL3pzd2FwLmMtMTUxMi1cdFx0XHRtZW1fY2dyb3VwX3B1dChtZW1jZyk7XG4tLVxubW0venN3YXAuYz0xNzU5PXN0YXRpYyBpbnQgenN3YXBfc2V0dXAodm9pZClcbi0tXG5tbS96c3dhcC5jLTE3ODQtXHRcdGdvdG8gc2hyaW5rZXJfZmFpbDtcbm1tL3pzd2FwLmM6MTc4NTpcdGlmIChsaXN0X2xydV9pbml0X21lbWNnKFx1MDAyNnpzd2FwX2xpc3RfbHJ1LCB6c3dhcF9zaHJpbmtlcikpXG5tbS96c3dhcC5jLTE3ODYtXHRcdGdvdG8gbHJ1X2ZhaWw7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDEzOjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyOTQ3CgkJCQkJCQlvdXRwdXQ6IDE1NAoJCQkJCQkJdGhvdWdodHM6IDYxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFpzd2FwIFJlZmFjdG9yaW5nIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGxvb2tlZCBvdmVyIHRoaXMgcGF0Y2guIEl0JiMzOTtzIHRvdWNoaW5nIGB6c3dhcF9saXN0X2xydWAsIHdoaWNoLCBhcyBJIHJlY2FsbCwgaXMgdGhhdCBzdGF0aWMgZ2xvYmFsIHZhcmlhYmxlIGhhbmdpbmcgb3V0IGluIGBtbS96c3dhcC5jYC4gUmlnaHQsIHRoYXQmIzM5O3MgdGhlIG9uZS4gVGhlIHJlZmFjdG9yaW5nIGl0c2VsZiBsb29rcyBzdHJhaWdodGZvcndhcmQg4oCTIG5vdGhpbmcgZWFydGgtc2hhdHRlcmluZyBpbiB0ZXJtcyBvZiBuZXcgZmVhdHVyZXMuIEhvd2V2ZXIsIGl0ICppcyogY2hhbmdpbmcgY29kZSB0aGF0JiMzOTtzIGZ1bmRhbWVudGFsIHRvIHpzd2FwJiMzOTtzIG9wZXJhdGlvbiwgYW5kIHRoYXQgbWFrZXMgaXQgd29ydGggc2NydXRpbml6aW5nIHRob3JvdWdobHkuIEdpdmVuIGl0cyBpbnRlcmFjdGlvbiB3aXRoIGNvcmUga2VybmVsIGxvZ2ljLCBJIHRoaW5rIHRoaXMgbWVyaXRzIGZ1enppbmcuIExldCYjMzk7cyBzdGFydCBieSBjYWxsaW5nIGBzZXQtcmVzdWx0c2AgdG8gZ2V0IHRoaXMgcHJvY2VzcyByb2xsaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMzowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7WlNXQVAmIzM0OywKICAgICYjMzQ7WlNXQVBfREVGQVVMVF9PTiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3pzd2FwX3N0b3JlJiMzNDssCiAgICAmIzM0O3pzd2FwX2xvYWQmIzM0OywKICAgICYjMzQ7enN3YXBfaW52YWxpZGF0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZWZhY3RvcnMgdGhlIHpzd2FwIExSVSBhZGQvZGVsIGZ1bmN0aW9ucyB0byBkaXJlY3RseSB1c2UgdGhlIGdsb2JhbCB6c3dhcF9saXN0X2xydSBpbnN0ZWFkIG9mIHBhc3NpbmcgaXQgYXMgYW4gYXJndW1lbnQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSB6c3dhcCBsb2dpYy4gVG8gdGVzdCB0aGlzLCB3ZSBuZWVkIHRvIGVuYWJsZSB6c3dhcCBhbmQgZm9jdXMgb24gdGhlIG1haW4genN3YXAgZW50cnkgcG9pbnRzICh6c3dhcF9zdG9yZSwgenN3YXBfbG9hZCwgenN3YXBfaW52YWxpZGF0ZSkgd2hpY2ggdHJpZ2dlciB0aGUgbW9kaWZpZWQgTFJVIG9wZXJhdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1pTV0FQJiMzNDssCiAgICAmIzM0O1pTV0FQX0RFRkFVTFRfT04mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt6c3dhcF9zdG9yZSYjMzQ7LAogICAgJiMzNDt6c3dhcF9sb2FkJiMzNDssCiAgICAmIzM0O3pzd2FwX2ludmFsaWRhdGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVmYWN0b3JzIHRoZSB6c3dhcCBMUlUgYWRkL2RlbCBmdW5jdGlvbnMgdG8gZGlyZWN0bHkgdXNlIHRoZSBnbG9iYWwgenN3YXBfbGlzdF9scnUgaW5zdGVhZCBvZiBwYXNzaW5nIGl0IGFzIGFuIGFyZ3VtZW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgenN3YXAgbG9naWMuIFRvIHRlc3QgdGhpcywgd2UgbmVlZCB0byBlbmFibGUgenN3YXAgYW5kIGZvY3VzIG9uIHRoZSBtYWluIHpzd2FwIGVudHJ5IHBvaW50cyAoenN3YXBfc3RvcmUsIHpzd2FwX2xvYWQsIHpzd2FwX2ludmFsaWRhdGUpIHdoaWNoIHRyaWdnZXIgdGhlIG1vZGlmaWVkIExSVSBvcGVyYXRpb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTM6MDc6MDcuMTk1MjM5ODM2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTI5MjA3MTI2ODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiWlNXQVBcIixcbiAgICBcIlpTV0FQX0RFRkFVTFRfT05cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ6c3dhcF9zdG9yZVwiLFxuICAgIFwienN3YXBfbG9hZFwiLFxuICAgIFwienN3YXBfaW52YWxpZGF0ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlZmFjdG9ycyB0aGUgenN3YXAgTFJVIGFkZC9kZWwgZnVuY3Rpb25zIHRvIGRpcmVjdGx5IHVzZSB0aGUgZ2xvYmFsIHpzd2FwX2xpc3RfbHJ1IGluc3RlYWQgb2YgcGFzc2luZyBpdCBhcyBhbiBhcmd1bWVudC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIHpzd2FwIGxvZ2ljLiBUbyB0ZXN0IHRoaXMsIHdlIG5lZWQgdG8gZW5hYmxlIHpzd2FwIGFuZCBmb2N1cyBvbiB0aGUgbWFpbiB6c3dhcCBlbnRyeSBwb2ludHMgKHpzd2FwX3N0b3JlLCB6c3dhcF9sb2FkLCB6c3dhcF9pbnZhbGlkYXRlKSB3aGljaCB0cmlnZ2VyIHRoZSBtb2RpZmllZCBMUlUgb3BlcmF0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTM6MDc6MDcuMTk1MjQ3MDY1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNzI0NDA4ODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBkODQ5MTlmYzc2ZmFiZGQ3YTE5ZDUyNGFmNjRmNjMzY2VmZmMwNzE5XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgQXVnIDEgMTM6MDc6MDYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbW0venN3YXAuYyBiL21tL3pzd2FwLmNcXG5pbmRleCA3NjFjZDY5OWUwYTNlLi5hODEwNTI0Yzc2MjE3IDEwMDY0NFxcbi0tLSBhL21tL3pzd2FwLmNcXG4rKysgYi9tbS96c3dhcC5jXFxuQEAgLTY2NSw3ICs2NjUsNyBAQCBzdGF0aWMgaW5saW5lIGludCBlbnRyeV90b19uaWQoc3RydWN0IHpzd2FwX2VudHJ5ICplbnRyeSlcXG4gXFx0cmV0dXJuIHBhZ2VfdG9fbmlkKHZpcnRfdG9fcGFnZShlbnRyeSkpO1xcbiB9XFxuIFxcbi1zdGF0aWMgdm9pZCB6c3dhcF9scnVfYWRkKHN0cnVjdCBsaXN0X2xydSAqbGlzdF9scnUsIHN0cnVjdCB6c3dhcF9lbnRyeSAqZW50cnkpXFxuK3N0YXRpYyB2b2lkIHpzd2FwX2xydV9hZGQoc3RydWN0IHpzd2FwX2VudHJ5ICplbnRyeSlcXG4ge1xcbiBcXHRpbnQgbmlkID0gZW50cnlfdG9fbmlkKGVudHJ5KTtcXG4gXFx0c3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnO1xcbkBAIC02ODQsMTEgKzY4NCwxMSBAQCBzdGF0aWMgdm9pZCB6c3dhcF9scnVfYWRkKHN0cnVjdCBsaXN0X2xydSAqbGlzdF9scnUsIHN0cnVjdCB6c3dhcF9lbnRyeSAqZW50cnkpXFxuIFxcdHJjdV9yZWFkX2xvY2soKTtcXG4gXFx0bWVtY2cgPSBtZW1fY2dyb3VwX2Zyb21fZW50cnkoZW50cnkpO1xcbiBcXHQvKiB3aWxsIGFsd2F5cyBzdWNjZWVkICovXFxuLVxcdGxpc3RfbHJ1X2FkZChsaXN0X2xydSwgXFx1MDAyNmVudHJ5LVxcdTAwM2VscnUsIG5pZCwgbWVtY2cpO1xcbitcXHRsaXN0X2xydV9hZGQoXFx1MDAyNnpzd2FwX2xpc3RfbHJ1LCBcXHUwMDI2ZW50cnktXFx1MDAzZWxydSwgbmlkLCBtZW1jZyk7XFxuIFxcdHJjdV9yZWFkX3VubG9jaygpO1xcbiB9XFxuIFxcbi1zdGF0aWMgdm9pZCB6c3dhcF9scnVfZGVsKHN0cnVjdCBsaXN0X2xydSAqbGlzdF9scnUsIHN0cnVjdCB6c3dhcF9lbnRyeSAqZW50cnkpXFxuK3N0YXRpYyB2b2lkIHpzd2FwX2xydV9kZWwoc3RydWN0IHpzd2FwX2VudHJ5ICplbnRyeSlcXG4ge1xcbiBcXHRpbnQgbmlkID0gZW50cnlfdG9fbmlkKGVudHJ5KTtcXG4gXFx0c3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnO1xcbkBAIC02OTYsNyArNjk2LDcgQEAgc3RhdGljIHZvaWQgenN3YXBfbHJ1X2RlbChzdHJ1Y3QgbGlzdF9scnUgKmxpc3RfbHJ1LCBzdHJ1Y3QgenN3YXBfZW50cnkgKmVudHJ5KVxcbiBcXHRyY3VfcmVhZF9sb2NrKCk7XFxuIFxcdG1lbWNnID0gbWVtX2Nncm91cF9mcm9tX2VudHJ5KGVudHJ5KTtcXG4gXFx0Lyogd2lsbCBhbHdheXMgc3VjY2VlZCAqL1xcbi1cXHRsaXN0X2xydV9kZWwobGlzdF9scnUsIFxcdTAwMjZlbnRyeS1cXHUwMDNlbHJ1LCBuaWQsIG1lbWNnKTtcXG4rXFx0bGlzdF9scnVfZGVsKFxcdTAwMjZ6c3dhcF9saXN0X2xydSwgXFx1MDAyNmVudHJ5LVxcdTAwM2VscnUsIG5pZCwgbWVtY2cpO1xcbiBcXHRyY3VfcmVhZF91bmxvY2soKTtcXG4gfVxcbiBcXG5AQCAtNzY0LDcgKzc2NCw3IEBAIHN0YXRpYyB2b2lkIHpzd2FwX2VudHJ5X2NhY2hlX2ZyZWUoc3RydWN0IHpzd2FwX2VudHJ5ICplbnRyeSlcXG4gICovXFxuIHN0YXRpYyB2b2lkIHpzd2FwX2VudHJ5X2ZyZWUoc3RydWN0IHpzd2FwX2VudHJ5ICplbnRyeSlcXG4ge1xcbi1cXHR6c3dhcF9scnVfZGVsKFxcdTAwMjZ6c3dhcF9saXN0X2xydSwgZW50cnkpO1xcbitcXHR6c3dhcF9scnVfZGVsKGVudHJ5KTtcXG4gXFx0enNfZnJlZShlbnRyeS1cXHUwMDNlcG9vbC1cXHUwMDNlenNfcG9vbCwgZW50cnktXFx1MDAzZWhhbmRsZSk7XFxuIFxcdHpzd2FwX3Bvb2xfcHV0KGVudHJ5LVxcdTAwM2Vwb29sKTtcXG4gXFx0aWYgKGVudHJ5LVxcdTAwM2VvYmpjZykge1xcbkBAIC0xNDYxLDcgKzE0NjEsNyBAQCBzdGF0aWMgYm9vbCB6c3dhcF9zdG9yZV9wYWdlKHN0cnVjdCBwYWdlICpwYWdlLFxcbiBcXHRlbnRyeS1cXHUwMDNlcmVmZXJlbmNlZCA9IHRydWU7XFxuIFxcdGlmIChlbnRyeS1cXHUwMDNlbGVuZ3RoKSB7XFxuIFxcdFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZlbnRyeS1cXHUwMDNlbHJ1KTtcXG4tXFx0XFx0enN3YXBfbHJ1X2FkZChcXHUwMDI2enN3YXBfbGlzdF9scnUsIGVudHJ5KTtcXG4rXFx0XFx0enN3YXBfbHJ1X2FkZChlbnRyeSk7XFxuIFxcdH1cXG4gXFxuIFxcdHJldHVybiB0cnVlO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxMzowNzowNy41NjgxOTc5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NTI1NDc3MzE2NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiWlNXQVBcIixcbiAgICBcIlpTV0FQX0RFRkFVTFRfT05cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ6c3dhcF9zdG9yZVwiLFxuICAgIFwienN3YXBfbG9hZFwiLFxuICAgIFwienN3YXBfaW52YWxpZGF0ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlZmFjdG9ycyB0aGUgenN3YXAgTFJVIGFkZC9kZWwgZnVuY3Rpb25zIHRvIGRpcmVjdGx5IHVzZSB0aGUgZ2xvYmFsIHpzd2FwX2xpc3RfbHJ1IGluc3RlYWQgb2YgcGFzc2luZyBpdCBhcyBhbiBhcmd1bWVudC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIHpzd2FwIGxvZ2ljLiBUbyB0ZXN0IHRoaXMsIHdlIG5lZWQgdG8gZW5hYmxlIHpzd2FwIGFuZCBmb2N1cyBvbiB0aGUgbWFpbiB6c3dhcCBlbnRyeSBwb2ludHMgKHpzd2FwX3N0b3JlLCB6c3dhcF9sb2FkLCB6c3dhcF9pbnZhbGlkYXRlKSB3aGljaCB0cmlnZ2VyIHRoZSBtb2RpZmllZCBMUlUgb3BlcmF0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZDg0OTE5ZmM3NmZhYmRkN2ExOWQ1MjRhZjY0ZjYzM2NlZmZjMDcxOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDEgMTM6MDc6MDYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9tbS96c3dhcC5jIGIvbW0venN3YXAuY1xuaW5kZXggNzYxY2Q2OTllMGEzZS4uYTgxMDUyNGM3NjIxNyAxMDA2NDRcbi0tLSBhL21tL3pzd2FwLmNcbisrKyBiL21tL3pzd2FwLmNcbkBAIC02NjUsNyArNjY1LDcgQEAgc3RhdGljIGlubGluZSBpbnQgZW50cnlfdG9fbmlkKHN0cnVjdCB6c3dhcF9lbnRyeSAqZW50cnkpXG4gXHRyZXR1cm4gcGFnZV90b19uaWQodmlydF90b19wYWdlKGVudHJ5KSk7XG4gfVxuIFxuLXN0YXRpYyB2b2lkIHpzd2FwX2xydV9hZGQoc3RydWN0IGxpc3RfbHJ1ICpsaXN0X2xydSwgc3RydWN0IHpzd2FwX2VudHJ5ICplbnRyeSlcbitzdGF0aWMgdm9pZCB6c3dhcF9scnVfYWRkKHN0cnVjdCB6c3dhcF9lbnRyeSAqZW50cnkpXG4ge1xuIFx0aW50IG5pZCA9IGVudHJ5X3RvX25pZChlbnRyeSk7XG4gXHRzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2c7XG5AQCAtNjg0LDExICs2ODQsMTEgQEAgc3RhdGljIHZvaWQgenN3YXBfbHJ1X2FkZChzdHJ1Y3QgbGlzdF9scnUgKmxpc3RfbHJ1LCBzdHJ1Y3QgenN3YXBfZW50cnkgKmVudHJ5KVxuIFx0cmN1X3JlYWRfbG9jaygpO1xuIFx0bWVtY2cgPSBtZW1fY2dyb3VwX2Zyb21fZW50cnkoZW50cnkpO1xuIFx0Lyogd2lsbCBhbHdheXMgc3VjY2VlZCAqL1xuLVx0bGlzdF9scnVfYWRkKGxpc3RfbHJ1LCBcdTAwMjZlbnRyeS1cdTAwM2VscnUsIG5pZCwgbWVtY2cpO1xuK1x0bGlzdF9scnVfYWRkKFx1MDAyNnpzd2FwX2xpc3RfbHJ1LCBcdTAwMjZlbnRyeS1cdTAwM2VscnUsIG5pZCwgbWVtY2cpO1xuIFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4gfVxuIFxuLXN0YXRpYyB2b2lkIHpzd2FwX2xydV9kZWwoc3RydWN0IGxpc3RfbHJ1ICpsaXN0X2xydSwgc3RydWN0IHpzd2FwX2VudHJ5ICplbnRyeSlcbitzdGF0aWMgdm9pZCB6c3dhcF9scnVfZGVsKHN0cnVjdCB6c3dhcF9lbnRyeSAqZW50cnkpXG4ge1xuIFx0aW50IG5pZCA9IGVudHJ5X3RvX25pZChlbnRyeSk7XG4gXHRzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2c7XG5AQCAtNjk2LDcgKzY5Niw3IEBAIHN0YXRpYyB2b2lkIHpzd2FwX2xydV9kZWwoc3RydWN0IGxpc3RfbHJ1ICpsaXN0X2xydSwgc3RydWN0IHpzd2FwX2VudHJ5ICplbnRyeSlcbiBcdHJjdV9yZWFkX2xvY2soKTtcbiBcdG1lbWNnID0gbWVtX2Nncm91cF9mcm9tX2VudHJ5KGVudHJ5KTtcbiBcdC8qIHdpbGwgYWx3YXlzIHN1Y2NlZWQgKi9cbi1cdGxpc3RfbHJ1X2RlbChsaXN0X2xydSwgXHUwMDI2ZW50cnktXHUwMDNlbHJ1LCBuaWQsIG1lbWNnKTtcbitcdGxpc3RfbHJ1X2RlbChcdTAwMjZ6c3dhcF9saXN0X2xydSwgXHUwMDI2ZW50cnktXHUwMDNlbHJ1LCBuaWQsIG1lbWNnKTtcbiBcdHJjdV9yZWFkX3VubG9jaygpO1xuIH1cbiBcbkBAIC03NjQsNyArNzY0LDcgQEAgc3RhdGljIHZvaWQgenN3YXBfZW50cnlfY2FjaGVfZnJlZShzdHJ1Y3QgenN3YXBfZW50cnkgKmVudHJ5KVxuICAqL1xuIHN0YXRpYyB2b2lkIHpzd2FwX2VudHJ5X2ZyZWUoc3RydWN0IHpzd2FwX2VudHJ5ICplbnRyeSlcbiB7XG4tXHR6c3dhcF9scnVfZGVsKFx1MDAyNnpzd2FwX2xpc3RfbHJ1LCBlbnRyeSk7XG4rXHR6c3dhcF9scnVfZGVsKGVudHJ5KTtcbiBcdHpzX2ZyZWUoZW50cnktXHUwMDNlcG9vbC1cdTAwM2V6c19wb29sLCBlbnRyeS1cdTAwM2VoYW5kbGUpO1xuIFx0enN3YXBfcG9vbF9wdXQoZW50cnktXHUwMDNlcG9vbCk7XG4gXHRpZiAoZW50cnktXHUwMDNlb2JqY2cpIHtcbkBAIC0xNDYxLDcgKzE0NjEsNyBAQCBzdGF0aWMgYm9vbCB6c3dhcF9zdG9yZV9wYWdlKHN0cnVjdCBwYWdlICpwYWdlLFxuIFx0ZW50cnktXHUwMDNlcmVmZXJlbmNlZCA9IHRydWU7XG4gXHRpZiAoZW50cnktXHUwMDNlbGVuZ3RoKSB7XG4gXHRcdElOSVRfTElTVF9IRUFEKFx1MDAyNmVudHJ5LVx1MDAzZWxydSk7XG4tXHRcdHpzd2FwX2xydV9hZGQoXHUwMDI2enN3YXBfbGlzdF9scnUsIGVudHJ5KTtcbitcdFx0enN3YXBfbHJ1X2FkZChlbnRyeSk7XG4gXHR9XG4gXG4gXHRyZXR1cm4gdHJ1ZTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEzOjA3OjA3LjU2ODE5ODkzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU1MjY0MTgxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipac3dhcCBSZWZhY3RvcmluZyBBc3Nlc3NtZW50KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYG1tL3pzd2FwLmNgLiBTZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoOiB0aGV5J3ZlIHJlbW92ZWQgdGhlIGBzdHJ1Y3QgbGlzdF9scnUgKmxpc3RfbHJ1YCBhcmd1bWVudCBmcm9tIGB6c3dhcF9scnVfYWRkYCBhbmQgYHpzd2FwX2xydV9kZWxgLCBoYXJkY29kaW5nIHRoZSB1c2Ugb2YgYFx1MDAyNnpzd2FwX2xpc3RfbHJ1YCBpbnN0ZWFkLiBUaGlzIGlzIGNsZWFybHkgYSByZWZhY3RvcmluZywgYnV0IGl0ICppcyogYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSBtb2RpZmljYXRpb24gdG8gdGhlIGNvZGUgaXRzZWxmLCBob3dldmVyIG1pbmltYWwuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBhc3Nlc3MgaXRzIGZ1enppbmcgcG90ZW50aWFsLiBac3dhcCBpcywgb2YgY291cnNlLCB0aGUgY29tcHJlc3NlZCBSQU0gY2FjaGUgZm9yIHN3YXAgcGFnZXMuIENvcmUga2VybmVsIGxvZ2ljLCByaWdodD8gRGVmaW5pdGVseSBzb21ldGhpbmcgdG8gY29uc2lkZXIgZm9yIGZ1enppbmcuXG5cbldhaXQsIGxldCBtZSBqdXN0IGRvdWJsZSBjaGVjayB3aGF0IHRoaXMgaXMgZG9pbmcuLi4gYWgsIGl0J3MgKmp1c3QqIHJlbW92aW5nIGFuIGFyZ3VtZW50IGFuZCB1c2luZyBhIGdsb2JhbCB2YXJpYWJsZSBkaXJlY3RseS4gU3RpbGwsIHRoYXQgdG91Y2hlcyBjb3JlIGtlcm5lbCBzdHVmZiwgYW5kIGFueSBjaGFuZ2UgaGFzIHRoZSBwb3RlbnRpYWwgdG8gaW50cm9kdWNlIHN1YnRsZSBpc3N1ZXMuXG5cbkFscmlnaHQsIHRoZSBuZXh0IHN0ZXAgaXMgdG8gbmFpbCBkb3duIHRoZSBjb25maWd1cmF0aW9uLiBMZXQgbWUgc2VlLi4uIEknbGwgY2hlY2sgYG1tL0tjb25maWdgIG9yIHBvc3NpYmx5IGV2ZW4gYG1tL3pzd2FwLmNgIGl0c2VsZi4gWWVwLCB0aGUgY29uZmlnIGZvciBac3dhcCBpcyBgQ09ORklHX1pTV0FQYC4gVGhpcyBpcyBhIGdvb2QgcGxhY2UgdG8gc3RhcnQgbXkgaW52ZXN0aWdhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY3MSwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwMiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEzOjA3OjEyLjEyMDg0MzQ3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY5NjE1MjM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBaU1dBUFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vS2NvbmZpZz0xMj1tZW51Y29uZmlnIFNXQVBcXG4tLVxcbm1tL0tjb25maWctMjEtXFxubW0vS2NvbmZpZzoyMjpjb25maWcgWlNXQVBcXG5tbS9LY29uZmlnLTIzLVxcdGJvb2wgXFxcIkNvbXByZXNzZWQgY2FjaGUgZm9yIHN3YXAgcGFnZXNcXFwiXFxuLS1cXG5tbS9LY29uZmlnLTM0LVxcbm1tL0tjb25maWc6MzU6Y29uZmlnIFpTV0FQX0RFRkFVTFRfT05cXG5tbS9LY29uZmlnLTM2LVxcdGJvb2wgXFxcIkVuYWJsZSB0aGUgY29tcHJlc3NlZCBjYWNoZSBmb3Igc3dhcCBwYWdlcyBieSBkZWZhdWx0XFxcIlxcbi0tXFxubW0vS2NvbmZpZy00NC1cXG5tbS9LY29uZmlnOjQ1OmNvbmZpZyBaU1dBUF9TSFJJTktFUl9ERUZBVUxUX09OXFxubW0vS2NvbmZpZy00Ni1cXHRib29sIFxcXCJTaHJpbmsgdGhlIHpzd2FwIHBvb2wgb24gbWVtb3J5IHByZXNzdXJlXFxcIlxcbi0tXFxubW0vS2NvbmZpZz01OT1jaG9pY2VcXG4tLVxcbm1tL0tjb25maWctNzYtXFxubW0vS2NvbmZpZzo3Nzpjb25maWcgWlNXQVBfQ09NUFJFU1NPUl9ERUZBVUxUX0RFRkxBVEVcXG5tbS9LY29uZmlnLTc4LVxcdGJvb2wgXFxcIkRlZmxhdGVcXFwiXFxuLS1cXG5tbS9LY29uZmlnLTgyLVxcbm1tL0tjb25maWc6ODM6Y29uZmlnIFpTV0FQX0NPTVBSRVNTT1JfREVGQVVMVF9MWk9cXG5tbS9LY29uZmlnLTg0LVxcdGJvb2wgXFxcIkxaT1xcXCJcXG4tLVxcbm1tL0tjb25maWctODgtXFxubW0vS2NvbmZpZzo4OTpjb25maWcgWlNXQVBfQ09NUFJFU1NPUl9ERUZBVUxUXzg0Mlxcbm1tL0tjb25maWctOTAtXFx0Ym9vbCBcXFwiODQyXFxcIlxcbi0tXFxubW0vS2NvbmZpZy05NC1cXG5tbS9LY29uZmlnOjk1OmNvbmZpZyBaU1dBUF9DT01QUkVTU09SX0RFRkFVTFRfTFo0XFxubW0vS2NvbmZpZy05Ni1cXHRib29sIFxcXCJMWjRcXFwiXFxuLS1cXG5tbS9LY29uZmlnLTEwMC1cXG5tbS9LY29uZmlnOjEwMTpjb25maWcgWlNXQVBfQ09NUFJFU1NPUl9ERUZBVUxUX0xaNEhDXFxubW0vS2NvbmZpZy0xMDItXFx0Ym9vbCBcXFwiTFo0SENcXFwiXFxuLS1cXG5tbS9LY29uZmlnLTEwNi1cXG5tbS9LY29uZmlnOjEwNzpjb25maWcgWlNXQVBfQ09NUFJFU1NPUl9ERUZBVUxUX1pTVERcXG5tbS9LY29uZmlnLTEwOC1cXHRib29sIFxcXCJ6c3RkXFxcIlxcbi0tXFxubW0vS2NvbmZpZz0xMTI9ZW5kY2hvaWNlXFxubW0vS2NvbmZpZy0xMTMtXFxubW0vS2NvbmZpZzoxMTQ6Y29uZmlnIFpTV0FQX0NPTVBSRVNTT1JfREVGQVVMVFxcbm1tL0tjb25maWctMTE1LSAgICAgICBzdHJpbmdcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTM6MDc6MTIuMTkwNDY0Njc5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk5MjY1MzUzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgWlNXQVAgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIHRoZSBhY3RpdmUgY29uZmlndXJhdGlvbiBpcyBjdXJyZW50bHkgc2V0IHRvIGBaU1dBUGAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIklzIHRoaXMgdGhlICpvbmx5KiBjb25maWd1cmF0aW9uIG9wdGlvbiwgb3IgYXJlIHRoZXJlIG90aGVycyB3ZSBzaG91bGQgYmUgYXdhcmUgb2Y/XCIgTGV0J3MgZGlnIGRlZXBlci4gVGhlIHBvdGVudGlhbCBmb3IgYSBzZXR0aW5nIGNhbGxlZCBgWlNXQVBfREVGQVVMVF9PTmAgaGFzIG1lIGludHJpZ3VlZC4gRW5hYmxpbmcgYFpTV0FQYCBieSBkZWZhdWx0IHdvdWxkIHNpbXBsaWZ5IHRoaW5ncyBmb3IgbWFueSB1c2Vycywgc28gSSdtIGludGVyZXN0ZWQgaW4gdW5kZXJzdGFuZGluZyB0aGUgaW1wbGljYXRpb25zIG9mIHRoYXQuIEJlZm9yZSBJIGNvbW1pdCB0byBhbnkgY2hhbmdlcywgSSBuZWVkIHRvIHRob3JvdWdobHkgdW5kZXJzdGFuZCB0aGlzLiBJdCdzIHRpbWUgdG8gY2hlY2sgdGhlIGRlcGVuZGVuY2llcyBvZiBgWlNXQVBgLiBXaGF0IG90aGVyIGNvbXBvbmVudHMgb3IgZmVhdHVyZXMgcmVseSBvbiwgb3IgYXJlIHJlbGllZCB1cG9uIGJ5LCB0aGlzIHNldHRpbmc/IFVuZGVyc3RhbmRpbmcgdGhlIGNvbXBsZXRlIHBpY3R1cmUgaXMgY3JpdGljYWwgYmVmb3JlIG1ha2luZyBhIGRlY2lzaW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzA2LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTM6MDc6MTUuMTgzMTIwMTgyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkyMzg3NjU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBaU1dBUFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL0tjb25maWc9MTI9bWVudWNvbmZpZyBTV0FQXFxuLS1cXG5tbS9LY29uZmlnLTIxLVxcbm1tL0tjb25maWc6MjI6Y29uZmlnIFpTV0FQXFxubW0vS2NvbmZpZy0yMy1cXHRib29sIFxcXCJDb21wcmVzc2VkIGNhY2hlIGZvciBzd2FwIHBhZ2VzXFxcIlxcbi0tXFxubW0vS2NvbmZpZy0zNC1cXG5tbS9LY29uZmlnOjM1OmNvbmZpZyBaU1dBUF9ERUZBVUxUX09OXFxubW0vS2NvbmZpZy0zNi1cXHRib29sIFxcXCJFbmFibGUgdGhlIGNvbXByZXNzZWQgY2FjaGUgZm9yIHN3YXAgcGFnZXMgYnkgZGVmYXVsdFxcXCJcXG4tLVxcbm1tL0tjb25maWctNDQtXFxubW0vS2NvbmZpZzo0NTpjb25maWcgWlNXQVBfU0hSSU5LRVJfREVGQVVMVF9PTlxcbm1tL0tjb25maWctNDYtXFx0Ym9vbCBcXFwiU2hyaW5rIHRoZSB6c3dhcCBwb29sIG9uIG1lbW9yeSBwcmVzc3VyZVxcXCJcXG4tLVxcbm1tL0tjb25maWc9NTk9Y2hvaWNlXFxuLS1cXG5tbS9LY29uZmlnLTc2LVxcbm1tL0tjb25maWc6Nzc6Y29uZmlnIFpTV0FQX0NPTVBSRVNTT1JfREVGQVVMVF9ERUZMQVRFXFxubW0vS2NvbmZpZy03OC1cXHRib29sIFxcXCJEZWZsYXRlXFxcIlxcbi0tXFxubW0vS2NvbmZpZy04Mi1cXG5tbS9LY29uZmlnOjgzOmNvbmZpZyBaU1dBUF9DT01QUkVTU09SX0RFRkFVTFRfTFpPXFxubW0vS2NvbmZpZy04NC1cXHRib29sIFxcXCJMWk9cXFwiXFxuLS1cXG5tbS9LY29uZmlnLTg4LVxcbm1tL0tjb25maWc6ODk6Y29uZmlnIFpTV0FQX0NPTVBSRVNTT1JfREVGQVVMVF84NDJcXG5tbS9LY29uZmlnLTkwLVxcdGJvb2wgXFxcIjg0MlxcXCJcXG4tLVxcbm1tL0tjb25maWctOTQtXFxubW0vS2NvbmZpZzo5NTpjb25maWcgWlNXQVBfQ09NUFJFU1NPUl9ERUZBVUxUX0xaNFxcbm1tL0tjb25maWctOTYtXFx0Ym9vbCBcXFwiTFo0XFxcIlxcbi0tXFxubW0vS2NvbmZpZy0xMDAtXFxubW0vS2NvbmZpZzoxMDE6Y29uZmlnIFpTV0FQX0NPTVBSRVNTT1JfREVGQVVMVF9MWjRIQ1xcbm1tL0tjb25maWctMTAyLVxcdGJvb2wgXFxcIkxaNEhDXFxcIlxcbi0tXFxubW0vS2NvbmZpZy0xMDYtXFxubW0vS2NvbmZpZzoxMDc6Y29uZmlnIFpTV0FQX0NPTVBSRVNTT1JfREVGQVVMVF9aU1REXFxubW0vS2NvbmZpZy0xMDgtXFx0Ym9vbCBcXFwienN0ZFxcXCJcXG4tLVxcbm1tL0tjb25maWc9MTEyPWVuZGNob2ljZVxcbm1tL0tjb25maWctMTEzLVxcbm1tL0tjb25maWc6MTE0OmNvbmZpZyBaU1dBUF9DT01QUkVTU09SX0RFRkFVTFRcXG5tbS9LY29uZmlnLTExNS0gICAgICAgc3RyaW5nXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEzOjA3OjE1LjI3NTUxMzU3MVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwODQ1Mjc3NjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gdGhlIEtlcm5lbCBDb25maWd1cmF0aW9uIExhbmRzY2FwZSoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHNvbWV0aGluZyByZWxhdGVkIHRvIGtlcm5lbCBjb25maWd1cmF0aW9uLiBMZXQncyBzdGFydCBkaWdnaW5nIGludG8gdGhlIGBtbS9LY29uZmlnYCBmaWxlLiBJJ20gZ29pbmcgdG8gZm9jdXMgbXkgaW5pdGlhbCBhdHRlbnRpb24gYXJvdW5kIGxpbmUgMjIg4oCTIHRoYXQncyBvZnRlbiBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIGEgaGlnaC1sZXZlbCBvdmVydmlldyBpbiB0aGVzZSBLY29uZmlnIGZpbGVzLiBUaGUgc3RydWN0dXJlJ3MgdXN1YWxseSBwcmV0dHkgY29uc2lzdGVudCwgc28gSSdtIGV4cGVjdGluZyB0byBmaW5kIGVpdGhlciBhIG5ldyBvcHRpb24gZGVmaW5pdGlvbiwgYSBtZW51IGVudHJ5LCBvciBwZXJoYXBzIGEgY29uZGl0aW9uYWwgaW5jbHVkZSB0aGF0IHNldHMgdGhlIHN0YWdlIGZvciBhIHJlbGF0ZWQgY29uZmlndXJhdGlvbiBmZWF0dXJlLiBMaW5lIDIyIHNwZWNpZmljYWxseSBtaWdodCBiZSByZWxldmFudCB0byB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgc3Vic3lzdGVtIEknbSBmb2N1c2luZyBvbi4gSSdsbCBtZW50YWxseSBub3RlIHRoZSBjb250ZXh0IGFyb3VuZCB0aGF0IGxpbmUg4oCTIGFueSBzdXJyb3VuZGluZyBjb21tZW50cyBvciBvdGhlciBLY29uZmlnIG9wdGlvbnMg4oCTIHRvIGdldCB0aGUgZnVsbCBwaWN0dXJlIGFuZCBhbnkgZGVwZW5kZW5jaWVzLiBGcm9tIHRoZXJlLCBJIGNhbiBkZWNpZGUgaWYgdGhhdCdzIHRoZSBjb3JyZWN0IGZpbGUsIG9yIGlmIEkgc2hvdWxkIG1vdmUgb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0ODEsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxMzowNzoxOC4zNjAwNDQzMTNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NzYyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJtbS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE1LFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDE1OlxcdFxcdGRlZmF1bHQgeVxcbiAgMTY6XFx0XFx0aGVscFxcbiAgMTc6XFx0XFx0ICBUaGlzIG9wdGlvbiBhbGxvd3MgeW91IHRvIGNob29zZSB3aGV0aGVyIHlvdSB3YW50IHRvIGhhdmUgc3VwcG9ydFxcbiAgMTg6XFx0XFx0ICBmb3Igc28gY2FsbGVkIHN3YXAgZGV2aWNlcyBvciBzd2FwIGZpbGVzIGluIHlvdXIga2VybmVsIHRoYXQgYXJlXFxuICAxOTpcXHRcXHQgIHVzZWQgdG8gcHJvdmlkZSBtb3JlIHZpcnR1YWwgbWVtb3J5IHRoYW4gdGhlIGFjdHVhbCBSQU0gcHJlc2VudFxcbiAgMjA6XFx0XFx0ICBpbiB5b3VyIGNvbXB1dGVyLiAgSWYgdW5zdXJlIHNheSBZLlxcbiAgMjE6XFx0XFxuICAyMjpcXHRjb25maWcgWlNXQVBcXG4gIDIzOlxcdFxcdGJvb2wgXFxcIkNvbXByZXNzZWQgY2FjaGUgZm9yIHN3YXAgcGFnZXNcXFwiXFxuICAyNDpcXHRcXHRkZXBlbmRzIG9uIFNXQVBcXG4gIDI1OlxcdFxcdHNlbGVjdCBDUllQVE9cXG4gIDI2OlxcdFxcdHNlbGVjdCBaU01BTExPQ1xcbiAgMjc6XFx0XFx0aGVscFxcbiAgMjg6XFx0XFx0ICBBIGxpZ2h0d2VpZ2h0IGNvbXByZXNzZWQgY2FjaGUgZm9yIHN3YXAgcGFnZXMuICBJdCB0YWtlc1xcbiAgMjk6XFx0XFx0ICBwYWdlcyB0aGF0IGFyZSBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyBzd2FwcGVkIG91dCBhbmQgYXR0ZW1wdHMgdG9cXG4gIDMwOlxcdFxcdCAgY29tcHJlc3MgdGhlbSBpbnRvIGEgZHluYW1pY2FsbHkgYWxsb2NhdGVkIFJBTS1iYXNlZCBtZW1vcnkgcG9vbC5cXG4gIDMxOlxcdFxcdCAgVGhpcyBjYW4gcmVzdWx0IGluIGEgc2lnbmlmaWNhbnQgSS9PIHJlZHVjdGlvbiBvbiBzd2FwIGRldmljZSBhbmQsXFxuICAzMjpcXHRcXHQgIGluIHRoZSBjYXNlIHdoZXJlIGRlY29tcHJlc3NpbmcgZnJvbSBSQU0gaXMgZmFzdGVyIHRoYW4gc3dhcCBkZXZpY2VcXG4gIDMzOlxcdFxcdCAgcmVhZHMsIGNhbiBhbHNvIGltcHJvdmUgd29ya2xvYWQgcGVyZm9ybWFuY2UuXFxuICAzNDpcXHRcXG4gIDM1OlxcdGNvbmZpZyBaU1dBUF9ERUZBVUxUX09OXFxuICAzNjpcXHRcXHRib29sIFxcXCJFbmFibGUgdGhlIGNvbXByZXNzZWQgY2FjaGUgZm9yIHN3YXAgcGFnZXMgYnkgZGVmYXVsdFxcXCJcXG4gIDM3OlxcdFxcdGRlcGVuZHMgb24gWlNXQVBcXG4gIDM4OlxcdFxcdGhlbHBcXG4gIDM5OlxcdFxcdCAgSWYgc2VsZWN0ZWQsIHRoZSBjb21wcmVzc2VkIGNhY2hlIGZvciBzd2FwIHBhZ2VzIHdpbGwgYmUgZW5hYmxlZFxcbiAgNDA6XFx0XFx0ICBhdCBib290LCBvdGhlcndpc2UgaXQgd2lsbCBiZSBkaXNhYmxlZC5cXG4gIDQxOlxcdFxcbiAgNDI6XFx0XFx0ICBUaGUgc2VsZWN0aW9uIG1hZGUgaGVyZSBjYW4gYmUgb3ZlcnJpZGRlbiBieSB1c2luZyB0aGUga2VybmVsXFxuICA0MzpcXHRcXHQgIGNvbW1hbmQgbGluZSAnenN3YXAuZW5hYmxlZD0nIG9wdGlvbi5cXG4gIDQ0OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxMzowNzoxOC4zNjAxNDMwODNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDQzMDA5OTI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgWlNXQVAgTW9kdWxlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBaU1dBUCBjb2RlIGFuZCBpbW1lZGlhdGVseSBzZWUgd2UgbmVlZCB0byBjb25zaWRlciBgWlNXQVBgLCBgWlNXQVBfREVGQVVMVF9PTmAsIGFuZCBgU1dBUGAg4oCTIHRob3NlIGFyZSB0aGUga2V5IGNvbnN0YW50cyBvciBkZWZpbml0aW9ucyBpbiBwbGF5LiBUaGUgcGF0Y2ggaXMgdG91Y2hpbmcgYHpzd2FwX2xydV9hZGRgIGFuZCBgenN3YXBfbHJ1X2RlbGAsIHdoaWNoIGFyZSBzdGF0aWMgZnVuY3Rpb25zLiBTdGF0aWMgZnVuY3Rpb25zIGFyZSwgYnkgdGhlaXIgbmF0dXJlLCBsb2NhbGl6ZWQsIG1ha2luZyB0aGVtIGVhc2llciB0byB0cmFjZS4gVGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHBpbnBvaW50IHRoZSBjYWxsZXJzIG9mIHRoZXNlIGZ1bmN0aW9ucy4gS25vd2luZyB0aG9zZSBjYWxsZXJzIGlzIGdvaW5nIHRvIGZvY3VzIG15IGFuYWx5c2lzLCBzaG93IG1lIHdoYXQgdGhlIGFmZmVjdGVkIGNvbnRyb2wgZmxvdyBpcy5cblxuQWgsIGhlcmUgd2UgZ28sIGB6c3dhcF9lbnRyeV9mcmVlYCBjYWxscyBgenN3YXBfbHJ1X2RlbGAgYW5kIGB6c3dhcF9zdG9yZV9wYWdlYCBjYWxscyBgenN3YXBfbHJ1X2FkZGAuIFdhaXQgYSBtaW51dGUsIEkgdGhpbmsgYHpzd2FwX3N0b3JlX3BhZ2VgIGlzIHN0YXRpYywgaXNuJ3QgaXQ/IEJldHRlciBkb3VibGUtY2hlY2sgdGhhdCBieSBoZWFkaW5nIG92ZXIgdG8gYG1tL3pzd2FwLmNgIHRvIGNvbmZpcm0gbXkgc3VzcGljaW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTUwLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTM6MDc6MjIuNDAzMTU1ODAxWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MjM4NTY4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ6c3dhcF9zdG9yZV9wYWdlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL3pzd2FwLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0venN3YXAuYz0xMzA2PXN0YXRpYyB2b2lkIHNocmlua193b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3KVxcbi0tXFxubW0venN3YXAuYy0xMzk1LVxcbm1tL3pzd2FwLmM6MTM5NjpzdGF0aWMgYm9vbCB6c3dhcF9zdG9yZV9wYWdlKHN0cnVjdCBwYWdlICpwYWdlLFxcbm1tL3pzd2FwLmMtMTM5Ny1cXHRcXHRcXHQgICAgIHN0cnVjdCBvYmpfY2dyb3VwICpvYmpjZyxcXG4tLVxcbm1tL3pzd2FwLmM9MTQ3Nj1ib29sIHpzd2FwX3N0b3JlKHN0cnVjdCBmb2xpbyAqZm9saW8pXFxuLS1cXG5tbS96c3dhcC5jLTE1MjAtXFxubW0venN3YXAuYzoxNTIxOlxcdFxcdGlmICghenN3YXBfc3RvcmVfcGFnZShwYWdlLCBvYmpjZywgcG9vbCkpXFxubW0venN3YXAuYy0xNTIyLVxcdFxcdFxcdGdvdG8gcHV0X3Bvb2w7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEzOjA3OjIyLjQ2NTU0NjA5WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMzg3MTI4MjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nIGFzIGFuIGV4cGVydDpcblxuKipEaXZpbmcgaW50byB0aGUgWnN3YXAgUGFnZSBIYW5kbGluZyoqXG5cblJpZ2h0LCBzbyBgenN3YXBfc3RvcmVgIGlzIGNhbGxpbmcgYHpzd2FwX3N0b3JlX3BhZ2VgLiBNYWtlcyBzZW5zZSwgdGhhdCdzIHRoZSBjb3JlIG9mIGhvdyB0aGUgZGF0YSBnZXRzIHB1dCBpbnRvIHRoZSBjb21wcmVzc2VkIGNhY2hlLiBOb3Qgc3RhdGljLCBodWg/IE9rYXksIEknbGwga2VlcCB0aGF0IGluIG1pbmQuIFRoYXQgaW1wbGllcyBpdCBtaWdodCBiZSB1c2VkIGZyb20gYSBmZXcgZGlmZmVyZW50IHBsYWNlcyB3aXRoaW4gdGhlIHpzd2FwIGFyY2hpdGVjdHVyZS4gTm93LCBsZXQncyBwaXZvdCBhbmQgdGFrZSBhIGxvb2sgYXQgYHpzd2FwX2VudHJ5X2ZyZWVgLiBVbmRlcnN0YW5kaW5nIGhvdyBlbnRyaWVzIGFyZSBmcmVlZCBpcyBjcml0aWNhbCBmb3IgYSBwZXJmb3JtYW50IGNhY2hlOyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbGlmZWN5Y2xlIG9mIHRoZXNlIGVudHJpZXMgZnJvbSBzdG9yYWdlIHRvIGRlYWxsb2NhdGlvbi4gTGV0J3Mgc2VlIGhvdyB0aGF0IGludGVncmF0ZXMgd2l0aCB0aGUgc3RvcmluZyBwcm9jZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NzUwLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTM6MDc6MjUuNjA0MjYyMzQxWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NTc3NzUzOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ6c3dhcF9lbnRyeV9mcmVlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL3pzd2FwLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0venN3YXAuYz03NTY9c3RhdGljIHZvaWQgenN3YXBfZW50cnlfY2FjaGVfZnJlZShzdHJ1Y3QgenN3YXBfZW50cnkgKmVudHJ5KVxcbi0tXFxubW0venN3YXAuYy03NjQtICovXFxubW0venN3YXAuYzo3NjU6c3RhdGljIHZvaWQgenN3YXBfZW50cnlfZnJlZShzdHJ1Y3QgenN3YXBfZW50cnkgKmVudHJ5KVxcbm1tL3pzd2FwLmMtNzY2LXtcXG4tLVxcbm1tL3pzd2FwLmM9OTg3PXN0YXRpYyBpbnQgenN3YXBfd3JpdGViYWNrX2VudHJ5KHN0cnVjdCB6c3dhcF9lbnRyeSAqZW50cnksXFxuLS1cXG5tbS96c3dhcC5jLTEwNDItXFxubW0venN3YXAuYzoxMDQzOlxcdHpzd2FwX2VudHJ5X2ZyZWUoZW50cnkpO1xcbm1tL3pzd2FwLmMtMTA0NC1cXG4tLVxcbm1tL3pzd2FwLmM9MTM5Nj1zdGF0aWMgYm9vbCB6c3dhcF9zdG9yZV9wYWdlKHN0cnVjdCBwYWdlICpwYWdlLFxcbi0tXFxubW0venN3YXAuYy0xNDI5LVxcdGlmIChvbGQpXFxubW0venN3YXAuYzoxNDMwOlxcdFxcdHpzd2FwX2VudHJ5X2ZyZWUob2xkKTtcXG5tbS96c3dhcC5jLTE0MzEtXFxuLS1cXG5tbS96c3dhcC5jLTE0MzUtXFx0ICogY2hhcmdlIHpzd2FwIG1lbW9yeSwgYW5kIGluY3JlbWVudCB6c3dhcF9zdG9yZWRfcGFnZXMuXFxubW0venN3YXAuYzoxNDM2OlxcdCAqIFRoZSBvcHBvc2l0ZSBhY3Rpb25zIHdpbGwgYmUgcGVyZm9ybWVkIGJ5IHpzd2FwX2VudHJ5X2ZyZWUoKVxcbm1tL3pzd2FwLmMtMTQzNy1cXHQgKiB3aGVuIHRoZSBlbnRyeSBpcyByZW1vdmVkIGZyb20gdGhlIHRyZWUuXFxuLS1cXG5tbS96c3dhcC5jPTE0NzY9Ym9vbCB6c3dhcF9zdG9yZShzdHJ1Y3QgZm9saW8gKmZvbGlvKVxcbi0tXFxubW0venN3YXAuYy0xNTU0LVxcdFxcdFxcdGlmIChlbnRyeSlcXG5tbS96c3dhcC5jOjE1NTU6XFx0XFx0XFx0XFx0enN3YXBfZW50cnlfZnJlZShlbnRyeSk7XFxubW0venN3YXAuYy0xNTU2LVxcdFxcdH1cXG4tLVxcbm1tL3pzd2FwLmM9MTU4Mj1pbnQgenN3YXBfbG9hZChzdHJ1Y3QgZm9saW8gKmZvbGlvKVxcbi0tXFxubW0venN3YXAuYy0xNjI4LVxcdHhhX2VyYXNlKHRyZWUsIG9mZnNldCk7XFxubW0venN3YXAuYzoxNjI5OlxcdHpzd2FwX2VudHJ5X2ZyZWUoZW50cnkpO1xcbm1tL3pzd2FwLmMtMTYzMC1cXG4tLVxcbm1tL3pzd2FwLmM9MTYzNT12b2lkIHpzd2FwX2ludmFsaWRhdGUoc3dwX2VudHJ5X3Qgc3dwKVxcbi0tXFxubW0venN3YXAuYy0xNjQ1LVxcdGlmIChlbnRyeSlcXG5tbS96c3dhcC5jOjE2NDY6XFx0XFx0enN3YXBfZW50cnlfZnJlZShlbnRyeSk7XFxubW0venN3YXAuYy0xNjQ3LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTM6MDc6MjUuNjgwMDQ0MDNaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI3MTU4ODEwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgbXkgb3duIHRoaW5raW5nIHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8genN3YXAgRnVuY3Rpb24gU2NvcGUqKlxuXG5SaWdodCwgbGV0J3MgdGFrZSBhIGxvb2sgYXQgdGhlc2UgYHpzd2FwX3N0b3JlYCwgYHpzd2FwX2xvYWRgLCBhbmQgYHpzd2FwX2ludmFsaWRhdGVgIGZ1bmN0aW9ucy4gVGhlIGZhY3QgdGhhdCB0aGV5IGFyZW4ndCBkZWNsYXJlZCBhcyBgc3RhdGljYCBpbW1lZGlhdGVseSBmbGFncyB0aGVtIGFzIHBvdGVudGlhbCBjYW5kaWRhdGVzIGZvciBicm9hZGVyIHVzZSBiZXlvbmQgdGhlaXIgaW1tZWRpYXRlIHNvdXJjZSBmaWxlLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGV5J3JlIGFjdHVhbGx5ICp1c2VkKiBhbmQgaWYgdGhleSdyZSBwYXJ0IG9mIHRoZSBwdWJsaWMgQVBJIG9yIGp1c3QgaW50ZXJuYWwgbW0vIGltcGxlbWVudGF0aW9ucy4gU28sIEkgbmVlZCB0byB2ZXJpZnkgaWYgdGhleSBhcmUgZXhwb3J0ZWQgd2l0aCB0aGUgYEVYUE9SVF9TWU1CT0xgIG1hY3JvLCBpbmRpY2F0aW5nIHRoYXQgb3RoZXIgbW9kdWxlcyBvciBwYXJ0cyBvZiB0aGUga2VybmVsIGNvdWxkIGJlIHVzaW5nIHRoZW0sIG9yIGlmIHRoZXkncmUgc2NvcGVkIHN0cmljdGx5IHdpdGhpbiB0aGUgYG1tL2AgZGlyZWN0b3J5LCB3aGljaCB3b3VsZCBzdWdnZXN0IGFuIGludGVybmFsLW9ubHkgaW1wbGVtZW50YXRpb24uIFRpbWUgdG8gZGlnIGludG8gdGhlIGNvZGUgYW5kIHNlZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjU5NCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEzOjA3OjI4Ljk1MTYzNDY2WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MzYxMjkxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ6c3dhcF9zdG9yZXx6c3dhcF9sb2FkfHpzd2FwX2ludmFsaWRhdGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL3BhZ2VfaW8uYz0yNTE9aW50IHN3YXBfd3JpdGVvdXQoc3RydWN0IGZvbGlvICpmb2xpbywgc3RydWN0IHN3YXBfaW9jYiAqKnN3YXBfcGx1ZylcXG4tLVxcbm1tL3BhZ2VfaW8uYy0yODQtXFxubW0vcGFnZV9pby5jOjI4NTpcXHRpZiAoenN3YXBfc3RvcmUoZm9saW8pKSB7XFxubW0vcGFnZV9pby5jLTI4Ni1cXHRcXHRjb3VudF9tdGhwX3N0YXQoZm9saW9fb3JkZXIoZm9saW8pLCBNVEhQX1NUQVRfWlNXUE9VVCk7XFxuLS1cXG5tbS9wYWdlX2lvLmM9NjYxPXZvaWQgc3dhcF9yZWFkX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8sIHN0cnVjdCBzd2FwX2lvY2IgKipwbHVnKVxcbi0tXFxubW0vcGFnZV9pby5jLTY4OC1cXG5tbS9wYWdlX2lvLmM6Njg5OlxcdGlmICh6c3dhcF9sb2FkKGZvbGlvKSAhPSAtRU5PRU5UKVxcbm1tL3BhZ2VfaW8uYy02OTAtXFx0XFx0Z290byBmaW5pc2g7XFxuLS1cXG5tbS9zd2FwZmlsZS5jPTEzMTY9c3RhdGljIHZvaWQgc3dhcF9yYW5nZV9mcmVlKHN0cnVjdCBzd2FwX2luZm9fc3RydWN0ICpzaSwgdW5zaWduZWQgbG9uZyBvZmZzZXQsXFxuLS1cXG5tbS9zd2FwZmlsZS5jLTEzMjMtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG5yX2VudHJpZXM7IGkrKylcXG5tbS9zd2FwZmlsZS5jOjEzMjQ6XFx0XFx0enN3YXBfaW52YWxpZGF0ZShzd3BfZW50cnkoc2ktXFx1MDAzZXR5cGUsIG9mZnNldCArIGkpKTtcXG5tbS9zd2FwZmlsZS5jLTEzMjUtXFxuLS1cXG5tbS96c3dhcC5jLTQ2LS8qIFRoZSBudW1iZXIgb2YgcGFnZXMgY3VycmVudGx5IHN0b3JlZCBpbiB6c3dhcCAqL1xcbm1tL3pzd2FwLmM6NDc6YXRvbWljX2xvbmdfdCB6c3dhcF9zdG9yZWRfcGFnZXMgPSBBVE9NSUNfTE9OR19JTklUKDApO1xcbm1tL3pzd2FwLmMtNDgtLyogVGhlIG51bWJlciBvZiBpbmNvbXByZXNzaWJsZSBwYWdlcyBjdXJyZW50bHkgc3RvcmVkIGluIHpzd2FwICovXFxubW0venN3YXAuYzo0OTpzdGF0aWMgYXRvbWljX2xvbmdfdCB6c3dhcF9zdG9yZWRfaW5jb21wcmVzc2libGVfcGFnZXMgPSBBVE9NSUNfTE9OR19JTklUKDApO1xcbm1tL3pzd2FwLmMtNTAtXFxuLS1cXG5tbS96c3dhcC5jPTc2NT1zdGF0aWMgdm9pZCB6c3dhcF9lbnRyeV9mcmVlKHN0cnVjdCB6c3dhcF9lbnRyeSAqZW50cnkpXFxuLS1cXG5tbS96c3dhcC5jLTc3NC1cXHRpZiAoZW50cnktXFx1MDAzZWxlbmd0aCA9PSBQQUdFX1NJWkUpXFxubW0venN3YXAuYzo3NzU6XFx0XFx0YXRvbWljX2xvbmdfZGVjKFxcdTAwMjZ6c3dhcF9zdG9yZWRfaW5jb21wcmVzc2libGVfcGFnZXMpO1xcbm1tL3pzd2FwLmMtNzc2LVxcdHpzd2FwX2VudHJ5X2NhY2hlX2ZyZWUoZW50cnkpO1xcbm1tL3pzd2FwLmM6Nzc3OlxcdGF0b21pY19sb25nX2RlYyhcXHUwMDI2enN3YXBfc3RvcmVkX3BhZ2VzKTtcXG5tbS96c3dhcC5jLTc3OC19XFxuLS1cXG5tbS96c3dhcC5jPTkyND1zdGF0aWMgYm9vbCB6c3dhcF9kZWNvbXByZXNzKHN0cnVjdCB6c3dhcF9lbnRyeSAqZW50cnksIHN0cnVjdCBmb2xpbyAqZm9saW8pXFxuLS1cXG5tbS96c3dhcC5jLTk4MS0gKiB0byB0aGUgc3dhcCBkZXZpY2UuICBXZSBhcmUgYmFzaWNhbGx5IHJlc3VtaW5nIHRoZSBzYW1lIHN3YXBcXG5tbS96c3dhcC5jOjk4MjogKiB3cml0ZWJhY2sgcGF0aCB0aGF0IHdhcyBpbnRlcmNlcHRlZCB3aXRoIHRoZSB6c3dhcF9zdG9yZSgpXFxubW0venN3YXAuYy05ODMtICogaW4gdGhlIGZpcnN0IHBsYWNlLiAgQWZ0ZXIgdGhlIGZvbGlvIGhhcyBiZWVuIGRlY29tcHJlc3NlZCBpbnRvXFxuLS1cXG5tbS96c3dhcC5jPTExOTA9c3RhdGljIHVuc2lnbmVkIGxvbmcgenN3YXBfc2hyaW5rZXJfY291bnQoc3RydWN0IHNocmlua2VyICpzaHJpbmtlcixcXG4tLVxcbm1tL3pzd2FwLmMtMTIyNC1cXHRcXHRucl9iYWNraW5nID0genN3YXBfdG90YWxfcGFnZXMoKTtcXG5tbS96c3dhcC5jOjEyMjU6XFx0XFx0bnJfc3RvcmVkID0gYXRvbWljX2xvbmdfcmVhZChcXHUwMDI2enN3YXBfc3RvcmVkX3BhZ2VzKTtcXG5tbS96c3dhcC5jLTEyMjYtXFx0fVxcbi0tXFxubW0venN3YXAuYz0xMzA2PXN0YXRpYyB2b2lkIHNocmlua193b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3KVxcbi0tXFxubW0venN3YXAuYy0xMzk1LVxcbm1tL3pzd2FwLmM6MTM5NjpzdGF0aWMgYm9vbCB6c3dhcF9zdG9yZV9wYWdlKHN0cnVjdCBwYWdlICpwYWdlLFxcbm1tL3pzd2FwLmMtMTM5Ny1cXHRcXHRcXHQgICAgIHN0cnVjdCBvYmpfY2dyb3VwICpvYmpjZyxcXG4tLVxcbm1tL3pzd2FwLmMtMTQzNC1cXHQgKiBubyBmdXJ0aGVyIHBvc3NpYmlsaXR5IG9mIGZhaWx1cmUuIEdyYWIgcmVmcyB0byB0aGUgcG9vbCBhbmQgb2JqY2csXFxubW0venN3YXAuYzoxNDM1OlxcdCAqIGNoYXJnZSB6c3dhcCBtZW1vcnksIGFuZCBpbmNyZW1lbnQgenN3YXBfc3RvcmVkX3BhZ2VzLlxcbm1tL3pzd2FwLmMtMTQzNi1cXHQgKiBUaGUgb3Bwb3NpdGUgYWN0aW9ucyB3aWxsIGJlIHBlcmZvcm1lZCBieSB6c3dhcF9lbnRyeV9mcmVlKClcXG4tLVxcbm1tL3pzd2FwLmMtMTQ0My1cXHR9XFxubW0venN3YXAuYzoxNDQ0OlxcdGF0b21pY19sb25nX2luYyhcXHUwMDI2enN3YXBfc3RvcmVkX3BhZ2VzKTtcXG5tbS96c3dhcC5jLTE0NDUtXFx0aWYgKGVudHJ5LVxcdTAwM2VsZW5ndGggPT0gUEFHRV9TSVpFKVxcbm1tL3pzd2FwLmM6MTQ0NjpcXHRcXHRhdG9taWNfbG9uZ19pbmMoXFx1MDAyNnpzd2FwX3N0b3JlZF9pbmNvbXByZXNzaWJsZV9wYWdlcyk7XFxubW0venN3YXAuYy0xNDQ3LVxcbi0tXFxubW0venN3YXAuYy0xNDc1LVxcbm1tL3pzd2FwLmM6MTQ3Njpib29sIHpzd2FwX3N0b3JlKHN0cnVjdCBmb2xpbyAqZm9saW8pXFxubW0venN3YXAuYy0xNDc3LXtcXG4tLVxcbm1tL3pzd2FwLmMtMTUyMC1cXG5tbS96c3dhcC5jOjE1MjE6XFx0XFx0aWYgKCF6c3dhcF9zdG9yZV9wYWdlKHBhZ2UsIG9iamNnLCBwb29sKSlcXG5tbS96c3dhcC5jLTE1MjItXFx0XFx0XFx0Z290byBwdXRfcG9vbDtcXG4tLVxcbm1tL3pzd2FwLmMtMTU2Mi0vKipcXG5tbS96c3dhcC5jOjE1NjM6ICogenN3YXBfbG9hZCgpIC0gbG9hZCBhIGZvbGlvIGZyb20genN3YXBcXG5tbS96c3dhcC5jLTE1NjQtICogQGZvbGlvOiBmb2xpbyB0byBsb2FkXFxuLS1cXG5tbS96c3dhcC5jLTE1ODEtICovXFxubW0venN3YXAuYzoxNTgyOmludCB6c3dhcF9sb2FkKHN0cnVjdCBmb2xpbyAqZm9saW8pXFxubW0venN3YXAuYy0xNTgzLXtcXG4tLVxcbm1tL3pzd2FwLmMtMTYzNC1cXG5tbS96c3dhcC5jOjE2MzU6dm9pZCB6c3dhcF9pbnZhbGlkYXRlKHN3cF9lbnRyeV90IHN3cClcXG5tbS96c3dhcC5jLTE2MzYte1xcbi0tXFxubW0venN3YXAuYz0xNzAxPXN0YXRpYyBpbnQgZGVidWdmc19nZXRfc3RvcmVkX3BhZ2VzKHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxcbm1tL3pzd2FwLmMtMTcwMi17XFxubW0venN3YXAuYzoxNzAzOlxcdCp2YWwgPSBhdG9taWNfbG9uZ19yZWFkKFxcdTAwMjZ6c3dhcF9zdG9yZWRfcGFnZXMpO1xcbm1tL3pzd2FwLmMtMTcwNC1cXHRyZXR1cm4gMDtcXG4tLVxcbm1tL3pzd2FwLmM9MTcwOD1zdGF0aWMgaW50IGRlYnVnZnNfZ2V0X3N0b3JlZF9pbmNvbXByZXNzaWJsZV9wYWdlcyh2b2lkICpkYXRhLCB1NjQgKnZhbClcXG5tbS96c3dhcC5jLTE3MDkte1xcbm1tL3pzd2FwLmM6MTcxMDpcXHQqdmFsID0gYXRvbWljX2xvbmdfcmVhZChcXHUwMDI2enN3YXBfc3RvcmVkX2luY29tcHJlc3NpYmxlX3BhZ2VzKTtcXG5tbS96c3dhcC5jLTE3MTEtXFx0cmV0dXJuIDA7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEzOjA3OjI5LjAzNTI1MzA4OFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NTMxMzc0NjYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBac3dhcCBFbnRyeSBQb2ludHMgZm9yIEZ1enppbmcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgdG8gZWZmZWN0aXZlbHkgZnV6eiB0aGUgenN3YXAgc3Vic3lzdGVtLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB0YXJnZXQgdGhlIGNvcmUgZW50cnkgcG9pbnRzOiBgenN3YXBfc3RvcmVgLCBgenN3YXBfbG9hZGAsIGFuZCBgenN3YXBfaW52YWxpZGF0ZWAuIFRoZXNlIGFyZSB0aGUgZnVuY3Rpb25zIHRoYXQgaGFuZGxlIHRoZSBmdW5kYW1lbnRhbCBvcGVyYXRpb25zIG9mIHpzd2FwLCBuYW1lbHkgc3RvcmluZywgcmV0cmlldmluZywgYW5kIGludmFsaWRhdGluZyBwYWdlcy4gVGhleSdyZSBjYWxsZWQgZnJvbSB0aGUga2V5IHN3YXAgb3BlcmF0aW9uczogYHN3YXBfd3JpdGVvdXRgLCBgc3dhcF9yZWFkX2ZvbGlvYCwgYW5kIGBzd2FwX3JhbmdlX2ZyZWVgLiBHaXZlbiB0aGUgZm9jdXMgb2YgbXkgcGF0Y2ggb24gYHpzd2FwX2xydV9hZGRgIGFuZCBgenN3YXBfbHJ1X2RlbGAsIHdoaWNoIGFyZSBjYWxsZWQgZHVyaW5nIHBhZ2Ugc3RvcmFnZSBhbmQgZnJlZWluZywgdGhpcyBzZWVtcyBsaWtlIHRoZSBtb3N0IGRpcmVjdCBwYXRoLlxuXG5MZXQgbWUgYnJlYWsgdGhpcyBkb3duIGZ1cnRoZXIuIGB6c3dhcF9zdG9yZWAgaXMgdGhlIG9uZSB0aGF0IGRpcmVjdGx5IGNhbGxzIGB6c3dhcF9zdG9yZV9wYWdlYCwgd2hpY2ggaW4gdHVybiBjYWxscyBgenN3YXBfbHJ1X2FkZGAuIFRoZW4sIGB6c3dhcF9lbnRyeV9mcmVlYCBjYWxscyBgenN3YXBfbHJ1X2RlbGAuIGB6c3dhcF9lbnRyeV9mcmVlYCBnZXRzIGNhbGxlZCBmcm9tIGB6c3dhcF9pbnZhbGlkYXRlYCwgYHpzd2FwX2xvYWRgICh3aGVuIGFuIGVudHJ5IGlzIHJlbW92ZWQpLCBhbmQgZXZlbiBgenN3YXBfc3RvcmVgICh3aGVuIHJlcGxhY2luZyBhbiBvbGQgZW50cnkpLiBUaGlzIHJlLWVuZm9yY2VzIHRoZSBpbml0aWFsIGZvY3VzLlxuXG5genN3YXBfc3RvcmVgIHNlZW1zIHBhcnRpY3VsYXJseSBhdHRyYWN0aXZlIGFzIGl0J3MgYSBob3QgcGF0aCwgY2FsbGVkIG9uIGV2ZXJ5IHNpbmdsZSBzd2FwLW91dCBldmVudC4gVGhpcyBkaXJlY3RseSBtZWFucyB0YXJnZXRpbmcgdGhlc2UgZnVuY3Rpb25zIGFzIEZvY3VzU3ltYm9scyBzaG91bGQgZHJpdmUgdGhlIGZ1enplciB0byBoZWF2aWx5IGV4ZXJjaXNlIHN3YXAgb3BlcmF0aW9ucy4gQ3J1Y2lhbGx5LCBJIGhhdmUgdG8gcmVtZW1iZXIgdGhhdCB0byBmdXp6IHpzd2FwIGVmZmVjdGl2ZWx5LCBJIG5lZWQgc3dhcCBlbmFibGVkIGFuZCB6c3dhcCBlbmFibGVkLCB3aGljaCBpcyBhIGtleSByZXF1aXJlbWVudC5cblxuTm93LCBhbSBJIG1pc3NpbmcgYW55dGhpbmc/IEkgdGhpbmsgSSBuZWVkIHRvIHF1aWNrbHkgc2NhbiB0aGUgY29kZSBmb3Igb3RoZXIgZW50cnkgcG9pbnRzLiBJIHNob3VsZCBsb29rIGF0IGBzaHJpbmtfd29ya2VyYCBpbiBgenN3YXAuY2AsIGJ1dCBpdCdzIGEgd29ya2VyIGFuZCBub3QgYXMgZGlyZWN0bHkgcmVsYXRlZC4gQWN0dWFsbHksIGB6c3dhcF9zd2Fwb25gIGlzIGNhbGxlZCB3aGVuIHN3YXAgaXMgZW5hYmxlZC4gSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgdGhhdCBvbmUgb3V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NDYyLCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzg2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEzOjA3OjM1LjU2NjYyOTU2MVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEyNzAyODQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInpzd2FwX3N3YXBvblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vc3dhcGZpbGUuYz0zNjA1PVNZU0NBTExfREVGSU5FMihzd2Fwb24sIGNvbnN0IGNoYXIgX191c2VyICosIHNwZWNpYWxmaWxlLCBpbnQsIHN3YXBfZmxhZ3MpXFxuLS1cXG5tbS9zd2FwZmlsZS5jLTM3NTctXFxubW0vc3dhcGZpbGUuYzozNzU4OlxcdGVycm9yID0genN3YXBfc3dhcG9uKHNpLVxcdTAwM2V0eXBlLCBtYXhwYWdlcyk7XFxubW0vc3dhcGZpbGUuYy0zNzU5LVxcdGlmIChlcnJvcilcXG4tLVxcbm1tL3pzd2FwLmM9MTYzNT12b2lkIHpzd2FwX2ludmFsaWRhdGUoc3dwX2VudHJ5X3Qgc3dwKVxcbi0tXFxubW0venN3YXAuYy0xNjQ4LVxcbm1tL3pzd2FwLmM6MTY0OTppbnQgenN3YXBfc3dhcG9uKGludCB0eXBlLCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzKVxcbm1tL3pzd2FwLmMtMTY1MC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEzOjA3OjM1LjY3OTM1NjI4OVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NDE0MjgwNjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IFpzd2FwIFRlc3RpbmcgUGxhbioqXG5cbk9rYXksIHNvIGBzeXNfc3dhcG9uYCBpcyB0aGUgY3JpdGljYWwgc3lzY2FsbCBoZXJlLCBiZWNhdXNlIHRoYXQncyB3aGVyZSBgenN3YXBfc3dhcG9uYCBnZXRzIGNhbGxlZC4gVGhhdCBtYWtlcyBpdCB0aGUgZW50cnkgcG9pbnQgZm9yIGVuYWJsaW5nIHN3YXAuIFRvIHRlc3QgenN3YXAsIEknbGwgZGVmaW5pdGVseSBuZWVkIGJvdGggYENPTkZJR19aU1dBUGAgYW5kLCBpZGVhbGx5LCBgQ09ORklHX1pTV0FQX0RFRkFVTFRfT05gLiBBbHRob3VnaCwgd2FpdCwgdGhlIGxhdHRlciBpc24ndCBzdHJpY3RseSAqcmVxdWlyZWQqIHNpbmNlIEkgY2FuIHByb2JhYmx5IHRvZ2dsZSBpdCB0aHJvdWdoIHN5c2ZzLCBidXQgZW5hYmxpbmcgaXQgYnkgZGVmYXVsdCBpbiB0aGUgY29uZmlnIGp1c3Qgc2ltcGxpZmllcyB0aGluZ3MuXG5cbkxldCdzIHF1aWNrbHkgY29uZmlybSBpZiBoYXZpbmcganVzdCBgQ09ORklHX1pTV0FQX0RFRkFVTFRfT05gIGlzIGVub3VnaCB0byBraWNrIHRoaW5ncyBvZmYuIFllcCwgc2VlbXMgbGlrZSBpdCBkb2VzIGVuYWJsZSBpdCBieSBkZWZhdWx0LCBzbyB0aGF0J3MgZ29vZC4gT2gsIGFuZCBJJ2xsIG5lZWQgYENPTkZJR19TV0FQYCBvZiBjb3Vyc2UsIGJ1dCB0aGF0J3MgcHJldHR5IHN0YW5kYXJkLCBzbyBpdCdzIHByb2JhYmx5IGFscmVhZHkgb24gYW55d2F5LiBKdXN0IHRvIGJlIHN1cmUsIGxldCBtZSBkb3VibGUtY2hlY2sgYFpTV0FQX0RFRkFVTFRfT05gIGluIGBtbS9LY29uZmlnYDpcblxuYGBgXG5jb25maWcgWlNXQVBfREVGQVVMVF9PTlxuXHRib29sIFwiRW5hYmxlIHRoZSBjb21wcmVzc2VkIGNhY2hlIGZvciBzd2FwIHBhZ2VzIGJ5IGRlZmF1bHRcIlxuXHRkZXBlbmRzIG9uIFpTV0FQXG5gYGBcblxuUmlnaHQsIHNvIHRvIGJlIHNhZmUsIEknbGwgZW5hYmxlICpib3RoKiBgWlNXQVBgIGFuZCBgWlNXQVBfREVGQVVMVF9PTmAuXG5cbkhvbGQgb24uLi4gSSBuZWVkIHRvIHRoaW5rIGFib3V0IGdvb2QgZm9jdXMgc3ltYm9scyBmb3IgZnV6emluZy4gSSByZW1lbWJlciBgenN3YXBfc3RvcmVgLCBgenN3YXBfbG9hZGAsIGFuZCBgenN3YXBfaW52YWxpZGF0ZWAgYmVpbmcgY29yZSBvcGVyYXRpb25zLiBCdXQgYXJlIHRoZXkgKmhvdCogcGF0aHM/IEhtbSwgdGhleSdyZSBob3QgKndoZW4qIHN3YXBwaW5nLCB3aGljaCBpcyB0aGUga2V5Li4uIHNvIHRoZXNlIHN5bWJvbHMgYXJlIG5vdCBwYXJ0IG9mIGEgZ2VuZXJpYyBob3QgcGF0aC4gTWVtb3J5IHByZXNzdXJlIG9yIHNwZWNpZmljIHRyaWdnZXJzIGFyZSBuZWVkZWQsIGxpa2UgdXNpbmcgc29tZXRoaW5nIGxpa2UgYG1hZHZpc2UoTUFEVl9QQUdFT1VUKWAuIFRoYXQgbWVhbnMgdGhlc2UgYXJlIGdyZWF0IGZvY3VzIHN5bWJvbHMsIGd1aWRpbmcgdGhlIGZ1enplciB0b3dhcmRzIHN3YXAgb3BlcmF0aW9ucy4gVGhleSB3aWxsIGdldCB1cyB0aGVyZS5cblxuTm93LCBsZXQgbWUganVzdCBtYWtlIHN1cmUgYHpzd2FwX3N0b3JlYCBpcyBleHBvcnRlZCBhbmQgcmVhZHkgdG8gYmUgdXNlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTQ5NiwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxMzowNzo0Mi4wOTM2NDAzMDlaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcyODk1NDg5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJFWFBPUlRfU1lNQk9MLip6c3dhcF9zdG9yZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEzOjA3OjQyLjE2NjU0MjUzOFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDE0MzQ1ODQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipac3dhcCBGdW5jdGlvbiBTY29wZTogRGVsdmluZyBEZWVwZXIqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgYHpzd2FwX2Zyb250c3dhcF9zdG9yZWAgZnVuY3Rpb24gaXNuJ3QgbWFya2VkIGFzIGV4cG9ydGVkLCB3aGljaCBpcyBpbW1lZGlhdGVseSBpbnRlcmVzdGluZy4gVGhhdCB1c3VhbGx5IG1lYW5zIGl0J3MgaW50ZXJuYWwgdG8gdGhlIG1vZHVsZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGNvbmZpcm0gd2hlcmUgaXQgKmlzKiBkZWNsYXJlZCBhbmQgdXNlZC4gQSBxdWljayBzY2FuIHJldmVhbHMgaXQncyBhIGdsb2JhbCBmdW5jdGlvbiB3aXRoaW4gYG1tL3pzd2FwLmNgLCBidXQgdGhlcmUgbXVzdCBiZSBhIGRlY2xhcmF0aW9uIHNvbWV3aGVyZSB0aGF0IGFsbG93cyBpdCB0byBiZSBjYWxsZWQgZnJvbSBvdGhlciBwYXJ0cyBvZiB0aGUgbW9kdWxlLlxuXG5UaGUgbG9naWNhbCBwbGFjZSB0byBmaW5kIHRoYXQgZGVjbGFyYXRpb24gaXMgaW4gYGluY2x1ZGUvbGludXgvenN3YXAuaGAuIFRpbWUgdG8gb3BlbiB0aGF0IGhlYWRlciBmaWxlLiBMZXQncyBzZWUgd2hhdCB3ZSBjYW4gZGVkdWNlIGFib3V0IGl0cyB2aXNpYmlsaXR5IGFuZCBpbnRlbmRlZCB1c2UgZnJvbSB0aGUgZnVuY3Rpb24ncyBwcm90b3R5cGUgYW5kIGFueSBhY2NvbXBhbnlpbmcgY29tbWVudHMgdGhlcmUuIEtub3dpbmcgdGhlIGluY2x1ZGUgZmlsZSB3aWxsIGNsYXJpZnkgdGhlIGZ1bmN0aW9uJ3MgaW50ZW5kZWQgcHVycG9zZSB3aXRoaW4gdGhlIHpzd2FwIHN1YnN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAzMDgsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxMzowNzo0NS41ODA4OTA1MzVaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk3MTc0MTA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInpzd2FwX3N0b3JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImluY2x1ZGUvbGludXgvenN3YXAuaFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L3pzd2FwLmg9OD1zdHJ1Y3QgbHJ1dmVjO1xcbmluY2x1ZGUvbGludXgvenN3YXAuaC05LVxcbmluY2x1ZGUvbGludXgvenN3YXAuaDoxMDpleHRlcm4gYXRvbWljX2xvbmdfdCB6c3dhcF9zdG9yZWRfcGFnZXM7XFxuaW5jbHVkZS9saW51eC96c3dhcC5oLTExLVxcbi0tXFxuaW5jbHVkZS9saW51eC96c3dhcC5oPTI3PXVuc2lnbmVkIGxvbmcgenN3YXBfdG90YWxfcGFnZXModm9pZCk7XFxuaW5jbHVkZS9saW51eC96c3dhcC5oOjI4OmJvb2wgenN3YXBfc3RvcmUoc3RydWN0IGZvbGlvICpmb2xpbyk7XFxuaW5jbHVkZS9saW51eC96c3dhcC5oLTI5LWludCB6c3dhcF9sb2FkKHN0cnVjdCBmb2xpbyAqZm9saW8pO1xcbi0tXFxuaW5jbHVkZS9saW51eC96c3dhcC5oPTQwPXN0cnVjdCB6c3dhcF9scnV2ZWNfc3RhdGUge307XFxuaW5jbHVkZS9saW51eC96c3dhcC5oLTQxLVxcbmluY2x1ZGUvbGludXgvenN3YXAuaDo0MjpzdGF0aWMgaW5saW5lIGJvb2wgenN3YXBfc3RvcmUoc3RydWN0IGZvbGlvICpmb2xpbylcXG5pbmNsdWRlL2xpbnV4L3pzd2FwLmgtNDMte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxMzowNzo0NS42NzgwNjkxNjRaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDg4MjYxNTk1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBac3dhcCBSZWZhY3RvcmluZyBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgaXMgYSBnbG9iYWwgZnVuY3Rpb24sIHdoaWNoIGlzIGdvb2QuIFRoYXQgbWVhbnMgYHpzd2FwX3N0b3JlYCwgYHpzd2FwX2xvYWRgLCBhbmQgYHpzd2FwX2ludmFsaWRhdGVgIGFyZSBpZGVhbCBmb2N1cyBzeW1ib2xzIGZvciBmdXp6aW5nLiBIb3dldmVyLCBob2xkIG9uLi4uIGB6c3dhcF9scnVfYWRkYCBhbmQgYHpzd2FwX2xydV9kZWxgIGFyZSBtYXJrZWQgYXMgc3RhdGljLiBXZSBzaG91bGQgZGVmaW5pdGVseSBhdm9pZCBpbmNsdWRpbmcgdGhvc2UgaW4gb3VyIGZvY3VzIHN5bWJvbHMuXG5cblRoaXMgbG9va3MgbGlrZSBhIGZ1bmN0aW9uYWwgY2hhbmdlIOKAkyBhIHJlZmFjdG9yaW5nIOKAkyBkaXJlY3RseSBpbXBhY3RpbmcgdGhlIGNvcmUga2VybmVsIGxvZ2ljIHdpdGhpbiBgbW0venN3YXAuY2AuICBHaXZlbiBpdHMgbG9jYXRpb24gaW4gdGhlIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbSwgYSB0aG9yb3VnaCBmdXp6aW5nIGNhbXBhaWduIGlzIGFic29sdXRlbHkgd2FycmFudGVkLlxuXG5UbyBlbmFibGUgdGhpcywgSSdsbCBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgYFpTV0FQYCBhbmQgYFpTV0FQX0RFRkFVTFRfT05gIGNvbmZpZ3MgYXJlIHNldC4gSSBuZWVkIHRvIHRha2UgYSBzdGVwIGJhY2sgYW5kIGRvdWJsZSBjaGVjayB0aGF0IHRoZXJlIGFyZW4ndCBhbnkgb3RoZXIgZGVwZW5kZW50IGNvbmZpZ3MgdGhhdCBtaWdodCB0cmlwIHVzIHVwLCBzbyBsZXQgbWUgYWRkIGBTV0FQYCBqdXN0IHRvIGJlIHNhZmUuIGBaU1dBUGAgZGVwZW5kcyBvbiBpdCwgYW5kIHdoaWxlIGBTV0FQYCBpcyAqdXN1YWxseSogZW5hYmxlZCwgaXQncyBhbHdheXMgYmV0dGVyIHRvIGJlIGV4cGxpY2l0LiBJdCBhbHNvIHNlbGVjdHMgYENSWVBUT2AgYW5kIGBaU01BTExPQ2Agc28gSSBuZWVkIHRvIGNoZWNrIGBaU01BTExPQ2AgaW4gYG1tL0tjb25maWdgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDgxNCwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxMzowNzo1MC41NjA2ODcwOThaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg5Nzc2MDA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBaU01BTExPQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL0tjb25maWc9MTE0PWNvbmZpZyBaU1dBUF9DT01QUkVTU09SX0RFRkFVTFRcXG4tLVxcbm1tL0tjb25maWctMTI0LVxcbm1tL0tjb25maWc6MTI1OmNvbmZpZyBaU01BTExPQ1xcbm1tL0tjb25maWctMTI2LVxcdHRyaXN0YXRlXFxuLS1cXG5tbS9LY29uZmlnPTEzMz1jb21tZW50IFxcXCJac21hbGxvYyBpcyBhIGNvbW1vbiBiYWNrZW5kIGFsbG9jYXRvciBmb3IgenN3YXAgXFx1MDAyNiB6cmFtXFxcIlxcbm1tL0tjb25maWctMTM0LVxcbm1tL0tjb25maWc6MTM1OmNvbmZpZyBaU01BTExPQ19TVEFUXFxubW0vS2NvbmZpZy0xMzYtXFx0Ym9vbCBcXFwiRXhwb3J0IHpzbWFsbG9jIHN0YXRpc3RpY3NcXFwiXFxuLS1cXG5tbS9LY29uZmlnLTE0My1cXG5tbS9LY29uZmlnOjE0NDpjb25maWcgWlNNQUxMT0NfQ0hBSU5fU0laRVxcbm1tL0tjb25maWctMTQ1LVxcdGludCBcXFwiTWF4aW11bSBudW1iZXIgb2YgcGh5c2ljYWwgcGFnZXMgcGVyLXpzcGFnZVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTM6MDc6NTAuNjUwNDY4Njk2WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUzMjA0Mjg5MDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUmVmbGVjdGluZyBvbiBaU01BTExPQyBhbmQgWlNXQVAgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIGBaU01BTExPQ2AgaXMgdHJpc3RhdGUsIGJ1dCBiZWNhdXNlIGl0J3Mgc2VsZWN0ZWQgYnkgYFpTV0FQYCwgaXQncyBlZmZlY3RpdmVseSBlbmFibGVkLiBNeSBpbnN0aW5jdCBpcyB0aGF0IHdlIHNob3VsZCBqdXN0IGZvY3VzIG9uIHNldHRpbmcgYFpTV0FQYCBhbmQgdGhlbiByZWx5IG9uIGBaU1dBUF9ERUZBVUxUX09OYCB0byBoYW5kbGUgdGhlIHJlc3QuIFNpbXBsaWZ5aW5nIHRoZSBjb25maWd1cmF0aW9uIGlzIGFsd2F5cyBhIGdvb2QgdGhpbmcsIGVzcGVjaWFsbHkgd2hlbiB3ZSdyZSBkZWFsaW5nIHdpdGggcG90ZW50aWFsbHkgY29tcGxleCBtZW1vcnkgbWFuYWdlbWVudCBpbnRlcmFjdGlvbnMuXG5cbk5vdywgbGV0J3MgYmFjayB1cCBhbmQgcmVhbGx5IGNvbnNpZGVyIHRoZSBpbXBsaWNhdGlvbnMgaGVyZS4gVGhlIHBhdGNoIGF0IGhhbmQgaW52b2x2ZXMgcmVmYWN0b3JpbmcgYHpzd2FwX2xydV9hZGRgIGFuZCBgenN3YXBfbHJ1X2RlbGAuIEl0IHNvdW5kcyBsaWtlIHRoZXkncmUgbm93IGRpcmVjdGx5IHVzaW5nIHRoZSBnbG9iYWwgYHpzd2FwX2xpc3RfbHJ1YCBpbnN0ZWFkIG9mIHJlY2VpdmluZyBpdCBhcyBhbiBhcmd1bWVudC4gVGhhdCdzIGEgZnVuZGFtZW50YWwgY2hhbmdlIHRvIHRoZSB6c3dhcCBjb3JlLiBUbyByZWFsbHkgdGVzdCB0aGlzIHByb3Blcmx5LCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB6c3dhcCBpcyBhY3RpdmUgYW5kIGZvY3VzIG9uIHRob3NlIGNvcmUgZW50cnkgcG9pbnRz4oCUYHpzd2FwX3N0b3JlYCwgYHpzd2FwX2xvYWRgLCBhbmQgYHpzd2FwX2ludmFsaWRhdGVg4oCUYmVjYXVzZSB0aG9zZSBhcmUgdGhlIG9uZXMgY2FsbGluZyB0aGUgTFJVIG9wZXJhdGlvbnMgd2UncmUgbW9kaWZ5aW5nLiBXZSBuZWVkIHRvIGJlIHN1cmUgdGhlc2UgYXJlIHdlbGwtZXhlcmNpc2VkIHRvIGVuc3VyZSB0aGlzIGNoYW5nZSBkb2Vzbid0IGJyZWFrIGFueXRoaW5nLlxuXG5XYWl0LCBpcyBgenN3YXBfbGlzdF9scnVgIGEgZ2xvYmFsIHZhcmlhYmxlPyBJIG5lZWQgdG8gcXVpY2tseSBjaGVjayBgbW0venN3YXAuY2AgdG8gY29uZmlybS4gSXQgaXMgaW1wb3J0YW50IHRvIGtub3cgd2hpY2ggc3RhdGUgdGhpcyB2YXJpYWJsZSBpcyBpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE1MzMsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTM6MDc6NTUuOTcwODk5ODA1WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDQwOTQ2ODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwienN3YXBfbGlzdF9scnVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0venN3YXAuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS96c3dhcC5jPTE1Mz1zdHJ1Y3QgenN3YXBfcG9vbCB7XFxuLS1cXG5tbS96c3dhcC5jLTE2My0vKiBHbG9iYWwgTFJVIGxpc3RzIHNoYXJlZCBieSBhbGwgenN3YXAgcG9vbHMuICovXFxubW0venN3YXAuYzoxNjQ6c3RhdGljIHN0cnVjdCBsaXN0X2xydSB6c3dhcF9saXN0X2xydTtcXG5tbS96c3dhcC5jLTE2NS1cXG4tLVxcbm1tL3pzd2FwLmM9NjY4PXN0YXRpYyB2b2lkIHpzd2FwX2xydV9hZGQoc3RydWN0IHpzd2FwX2VudHJ5ICplbnRyeSlcXG4tLVxcbm1tL3pzd2FwLmMtNjg2LVxcdC8qIHdpbGwgYWx3YXlzIHN1Y2NlZWQgKi9cXG5tbS96c3dhcC5jOjY4NzpcXHRsaXN0X2xydV9hZGQoXFx1MDAyNnpzd2FwX2xpc3RfbHJ1LCBcXHUwMDI2ZW50cnktXFx1MDAzZWxydSwgbmlkLCBtZW1jZyk7XFxubW0venN3YXAuYy02ODgtXFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuLS1cXG5tbS96c3dhcC5jPTY5MT1zdGF0aWMgdm9pZCB6c3dhcF9scnVfZGVsKHN0cnVjdCB6c3dhcF9lbnRyeSAqZW50cnkpXFxuLS1cXG5tbS96c3dhcC5jLTY5OC1cXHQvKiB3aWxsIGFsd2F5cyBzdWNjZWVkICovXFxubW0venN3YXAuYzo2OTk6XFx0bGlzdF9scnVfZGVsKFxcdTAwMjZ6c3dhcF9saXN0X2xydSwgXFx1MDAyNmVudHJ5LVxcdTAwM2VscnUsIG5pZCwgbWVtY2cpO1xcbm1tL3pzd2FwLmMtNzAwLVxcdHJjdV9yZWFkX3VubG9jaygpO1xcbi0tXFxubW0venN3YXAuYz0xMTY5PXN0YXRpYyB1bnNpZ25lZCBsb25nIHpzd2FwX3Nocmlua2VyX3NjYW4oc3RydWN0IHNocmlua2VyICpzaHJpbmtlcixcXG4tLVxcbm1tL3pzd2FwLmMtMTE4MC1cXG5tbS96c3dhcC5jOjExODE6XFx0c2hyaW5rX3JldCA9IGxpc3RfbHJ1X3Nocmlua193YWxrKFxcdTAwMjZ6c3dhcF9saXN0X2xydSwgc2MsIFxcdTAwMjZzaHJpbmtfbWVtY2dfY2IsXFxubW0venN3YXAuYy0xMTgyLVxcdFxcdFxcdTAwMjZlbmNvdW50ZXJlZF9wYWdlX2luX3N3YXBjYWNoZSk7XFxuLS1cXG5tbS96c3dhcC5jPTExOTA9c3RhdGljIHVuc2lnbmVkIGxvbmcgenN3YXBfc2hyaW5rZXJfY291bnQoc3RydWN0IHNocmlua2VyICpzaHJpbmtlcixcXG4tLVxcbm1tL3pzd2FwLmMtMTIzMC1cXG5tbS96c3dhcC5jOjEyMzE6XFx0bnJfZnJlZWFibGUgPSBsaXN0X2xydV9zaHJpbmtfY291bnQoXFx1MDAyNnpzd2FwX2xpc3RfbHJ1LCBzYyk7XFxubW0venN3YXAuYy0xMjMyLVxcdGlmICghbnJfZnJlZWFibGUpXFxuLS1cXG5tbS96c3dhcC5jPTEyNzg9c3RhdGljIGludCBzaHJpbmtfbWVtY2coc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnKVxcbi0tXFxubW0venN3YXAuYy0xMjk0LVxcbm1tL3pzd2FwLmM6MTI5NTpcXHRcXHRzaHJ1bmsgKz0gbGlzdF9scnVfd2Fsa19vbmUoXFx1MDAyNnpzd2FwX2xpc3RfbHJ1LCBuaWQsIG1lbWNnLFxcbm1tL3pzd2FwLmMtMTI5Ni1cXHRcXHRcXHRcXHRcXHQgICAgXFx1MDAyNnNocmlua19tZW1jZ19jYiwgTlVMTCwgXFx1MDAyNm5yX3RvX3dhbGspO1xcbi0tXFxubW0venN3YXAuYz0xNDc2PWJvb2wgenN3YXBfc3RvcmUoc3RydWN0IGZvbGlvICpmb2xpbylcXG4tLVxcbm1tL3pzd2FwLmMtMTUxMC1cXHRcXHRtZW1jZyA9IGdldF9tZW1fY2dyb3VwX2Zyb21fb2JqY2cob2JqY2cpO1xcbm1tL3pzd2FwLmM6MTUxMTpcXHRcXHRpZiAobWVtY2dfbGlzdF9scnVfYWxsb2MobWVtY2csIFxcdTAwMjZ6c3dhcF9saXN0X2xydSwgR0ZQX0tFUk5FTCkpIHtcXG5tbS96c3dhcC5jLTE1MTItXFx0XFx0XFx0bWVtX2Nncm91cF9wdXQobWVtY2cpO1xcbi0tXFxubW0venN3YXAuYz0xNzU5PXN0YXRpYyBpbnQgenN3YXBfc2V0dXAodm9pZClcXG4tLVxcbm1tL3pzd2FwLmMtMTc4NC1cXHRcXHRnb3RvIHNocmlua2VyX2ZhaWw7XFxubW0venN3YXAuYzoxNzg1OlxcdGlmIChsaXN0X2xydV9pbml0X21lbWNnKFxcdTAwMjZ6c3dhcF9saXN0X2xydSwgenN3YXBfc2hyaW5rZXIpKVxcbm1tL3pzd2FwLmMtMTc4Ni1cXHRcXHRnb3RvIGxydV9mYWlsO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxMzowNzo1Ni4wNzUwMDA1ODNaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzkxNTU2NDM5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBac3dhcCBSZWZhY3RvcmluZyBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgbG9va2VkIG92ZXIgdGhpcyBwYXRjaC4gSXQncyB0b3VjaGluZyBgenN3YXBfbGlzdF9scnVgLCB3aGljaCwgYXMgSSByZWNhbGwsIGlzIHRoYXQgc3RhdGljIGdsb2JhbCB2YXJpYWJsZSBoYW5naW5nIG91dCBpbiBgbW0venN3YXAuY2AuIFJpZ2h0LCB0aGF0J3MgdGhlIG9uZS4gVGhlIHJlZmFjdG9yaW5nIGl0c2VsZiBsb29rcyBzdHJhaWdodGZvcndhcmQg4oCTIG5vdGhpbmcgZWFydGgtc2hhdHRlcmluZyBpbiB0ZXJtcyBvZiBuZXcgZmVhdHVyZXMuIEhvd2V2ZXIsIGl0ICppcyogY2hhbmdpbmcgY29kZSB0aGF0J3MgZnVuZGFtZW50YWwgdG8genN3YXAncyBvcGVyYXRpb24sIGFuZCB0aGF0IG1ha2VzIGl0IHdvcnRoIHNjcnV0aW5pemluZyB0aG9yb3VnaGx5LiBHaXZlbiBpdHMgaW50ZXJhY3Rpb24gd2l0aCBjb3JlIGtlcm5lbCBsb2dpYywgSSB0aGluayB0aGlzIG1lcml0cyBmdXp6aW5nLiBMZXQncyBzdGFydCBieSBjYWxsaW5nIGBzZXQtcmVzdWx0c2AgdG8gZ2V0IHRoaXMgcHJvY2VzcyByb2xsaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjk0NywiT3V0cHV0VG9rZW5zIjoxNTQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxMzowNzo1OS45OTA1NjgyMDNaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjUzNTY4ODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlpTV0FQXCIsXG4gICAgXCJaU1dBUF9ERUZBVUxUX09OXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwienN3YXBfc3RvcmVcIixcbiAgICBcInpzd2FwX2xvYWRcIixcbiAgICBcInpzd2FwX2ludmFsaWRhdGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZWZhY3RvcnMgdGhlIHpzd2FwIExSVSBhZGQvZGVsIGZ1bmN0aW9ucyB0byBkaXJlY3RseSB1c2UgdGhlIGdsb2JhbCB6c3dhcF9saXN0X2xydSBpbnN0ZWFkIG9mIHBhc3NpbmcgaXQgYXMgYW4gYXJndW1lbnQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSB6c3dhcCBsb2dpYy4gVG8gdGVzdCB0aGlzLCB3ZSBuZWVkIHRvIGVuYWJsZSB6c3dhcCBhbmQgZm9jdXMgb24gdGhlIG1haW4genN3YXAgZW50cnkgcG9pbnRzICh6c3dhcF9zdG9yZSwgenN3YXBfbG9hZCwgenN3YXBfaW52YWxpZGF0ZSkgd2hpY2ggdHJpZ2dlciB0aGUgbW9kaWZpZWQgTFJVIG9wZXJhdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiWlNXQVBcIixcbiAgICBcIlpTV0FQX0RFRkFVTFRfT05cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ6c3dhcF9zdG9yZVwiLFxuICAgIFwienN3YXBfbG9hZFwiLFxuICAgIFwienN3YXBfaW52YWxpZGF0ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlZmFjdG9ycyB0aGUgenN3YXAgTFJVIGFkZC9kZWwgZnVuY3Rpb25zIHRvIGRpcmVjdGx5IHVzZSB0aGUgZ2xvYmFsIHpzd2FwX2xpc3RfbHJ1IGluc3RlYWQgb2YgcGFzc2luZyBpdCBhcyBhbiBhcmd1bWVudC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIHpzd2FwIGxvZ2ljLiBUbyB0ZXN0IHRoaXMsIHdlIG5lZWQgdG8gZW5hYmxlIHpzd2FwIGFuZCBmb2N1cyBvbiB0aGUgbWFpbiB6c3dhcCBlbnRyeSBwb2ludHMgKHpzd2FwX3N0b3JlLCB6c3dhcF9sb2FkLCB6c3dhcF9pbnZhbGlkYXRlKSB3aGljaCB0cmlnZ2VyIHRoZSBtb2RpZmllZCBMUlUgb3BlcmF0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowlbz84[1] Phase: Succeeded StartedAt: 2026-08-01 13:08:11 +0000 UTC FinishedAt: 2026-08-01 13:08:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbz84[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-01 13:08:11 +0000 UTC FinishedAt: 2026-08-01 13:08:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbz84[2] Phase: Succeeded StartedAt: 2026-08-01 13:08:11 +0000 UTC FinishedAt: 2026-08-01 13:45:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbz84[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"85f5913c147076a6f243f90fe4ccfe1c4da9ea20","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSWAP","ZSWAP_DEFAULT_ON"],"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":["zswap_store","zswap_load","zswap_invalidate"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"85f5913c147076a6f243f90fe4ccfe1c4da9ea20","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSWAP","ZSWAP_DEFAULT_ON"],"series_id":"3c2fbb6e-3302-4ca8-add4-d89c4ba4213d","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-08-01 13:08:11 +0000 UTC FinishedAt: 2026-08-01 13:45:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"85f5913c147076a6f243f90fe4ccfe1c4da9ea20","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSWAP","ZSWAP_DEFAULT_ON"],"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":["zswap_store","zswap_load","zswap_invalidate"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"85f5913c147076a6f243f90fe4ccfe1c4da9ea20","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSWAP","ZSWAP_DEFAULT_ON"],"series_id":"3c2fbb6e-3302-4ca8-add4-d89c4ba4213d","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-workflowlbz84[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"85f5913c147076a6f243f90fe4ccfe1c4da9ea20","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSWAP","ZSWAP_DEFAULT_ON"],"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":["zswap_store","zswap_load","zswap_invalidate"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"85f5913c147076a6f243f90fe4ccfe1c4da9ea20","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSWAP","ZSWAP_DEFAULT_ON"],"series_id":"3c2fbb6e-3302-4ca8-add4-d89c4ba4213d","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-08-01 13:08:11 +0000 UTC FinishedAt: 2026-08-01 13:08:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbz84[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"85f5913c147076a6f243f90fe4ccfe1c4da9ea20","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSWAP","ZSWAP_DEFAULT_ON"],"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":["zswap_store","zswap_load","zswap_invalidate"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"85f5913c147076a6f243f90fe4ccfe1c4da9ea20","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSWAP","ZSWAP_DEFAULT_ON"],"series_id":"3c2fbb6e-3302-4ca8-add4-d89c4ba4213d","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-08-01 13:08:11 +0000 UTC FinishedAt: 2026-08-01 13:08:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"85f5913c147076a6f243f90fe4ccfe1c4da9ea20","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSWAP","ZSWAP_DEFAULT_ON"],"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-workflowlbz84/series-workflowlbz84-convert-artifact-2040351520/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlbz84[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"85f5913c147076a6f243f90fe4ccfe1c4da9ea20","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSWAP","ZSWAP_DEFAULT_ON"],"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":["zswap_store","zswap_load","zswap_invalidate"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"85f5913c147076a6f243f90fe4ccfe1c4da9ea20","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSWAP","ZSWAP_DEFAULT_ON"],"series_id":"3c2fbb6e-3302-4ca8-add4-d89c4ba4213d","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-08-01 13:08:21 +0000 UTC FinishedAt: 2026-08-01 13:24:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbz84[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"85f5913c147076a6f243f90fe4ccfe1c4da9ea20","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSWAP","ZSWAP_DEFAULT_ON"],"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":["zswap_store","zswap_load","zswap_invalidate"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"85f5913c147076a6f243f90fe4ccfe1c4da9ea20","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSWAP","ZSWAP_DEFAULT_ON"],"series_id":"3c2fbb6e-3302-4ca8-add4-d89c4ba4213d","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-08-01 13:08:21 +0000 UTC FinishedAt: 2026-08-01 13:24:32 +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:*03d5f5aa-3a0d-4f49-acf8-b5174ed428fe,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-workflowlbz84/series-workflowlbz84-convert-artifact-2040351520/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": "b3d29d30-43ec-4a76-b7a3-c1b47cd16c28", "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-workflowlbz84/series-workflowlbz84-build-action-2433624550/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlbz84[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"85f5913c147076a6f243f90fe4ccfe1c4da9ea20","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSWAP","ZSWAP_DEFAULT_ON"],"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":["zswap_store","zswap_load","zswap_invalidate"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"85f5913c147076a6f243f90fe4ccfe1c4da9ea20","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSWAP","ZSWAP_DEFAULT_ON"],"series_id":"3c2fbb6e-3302-4ca8-add4-d89c4ba4213d","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-08-01 13:08:21 +0000 UTC FinishedAt: 2026-08-01 13:24:22 +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:*03d5f5aa-3a0d-4f49-acf8-b5174ed428fe,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-workflowlbz84/series-workflowlbz84-convert-artifact-2040351520/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": "b3d29d30-43ec-4a76-b7a3-c1b47cd16c28", "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-workflowlbz84/series-workflowlbz84-build-action-2433624550/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlbz84[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"85f5913c147076a6f243f90fe4ccfe1c4da9ea20","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSWAP","ZSWAP_DEFAULT_ON"],"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":["zswap_store","zswap_load","zswap_invalidate"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"85f5913c147076a6f243f90fe4ccfe1c4da9ea20","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSWAP","ZSWAP_DEFAULT_ON"],"series_id":"3c2fbb6e-3302-4ca8-add4-d89c4ba4213d","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-08-01 13:24:32 +0000 UTC FinishedAt: 2026-08-01 13:24:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbz84[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"85f5913c147076a6f243f90fe4ccfe1c4da9ea20","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSWAP","ZSWAP_DEFAULT_ON"],"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":["zswap_store","zswap_load","zswap_invalidate"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"85f5913c147076a6f243f90fe4ccfe1c4da9ea20","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSWAP","ZSWAP_DEFAULT_ON"],"series_id":"3c2fbb6e-3302-4ca8-add4-d89c4ba4213d","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-08-01 13:24:32 +0000 UTC FinishedAt: 2026-08-01 13:24:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbz84[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"85f5913c147076a6f243f90fe4ccfe1c4da9ea20","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSWAP","ZSWAP_DEFAULT_ON"],"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":["zswap_store","zswap_load","zswap_invalidate"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"85f5913c147076a6f243f90fe4ccfe1c4da9ea20","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSWAP","ZSWAP_DEFAULT_ON"],"series_id":"3c2fbb6e-3302-4ca8-add4-d89c4ba4213d","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-08-01 13:24:32 +0000 UTC FinishedAt: 2026-08-01 13:24:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbz84[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"85f5913c147076a6f243f90fe4ccfe1c4da9ea20","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSWAP","ZSWAP_DEFAULT_ON"],"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":["zswap_store","zswap_load","zswap_invalidate"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"85f5913c147076a6f243f90fe4ccfe1c4da9ea20","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSWAP","ZSWAP_DEFAULT_ON"],"series_id":"3c2fbb6e-3302-4ca8-add4-d89c4ba4213d","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-08-01 13:24:32 +0000 UTC FinishedAt: 2026-08-01 13:24:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"85f5913c147076a6f243f90fe4ccfe1c4da9ea20","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSWAP","ZSWAP_DEFAULT_ON"],"series_id":"3c2fbb6e-3302-4ca8-add4-d89c4ba4213d","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-workflowlbz84/series-workflowlbz84-convert-artifact-2820970823/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlbz84[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"85f5913c147076a6f243f90fe4ccfe1c4da9ea20","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSWAP","ZSWAP_DEFAULT_ON"],"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":["zswap_store","zswap_load","zswap_invalidate"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"85f5913c147076a6f243f90fe4ccfe1c4da9ea20","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSWAP","ZSWAP_DEFAULT_ON"],"series_id":"3c2fbb6e-3302-4ca8-add4-d89c4ba4213d","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-08-01 13:24:42 +0000 UTC FinishedAt: 2026-08-01 13:26:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbz84[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"85f5913c147076a6f243f90fe4ccfe1c4da9ea20","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSWAP","ZSWAP_DEFAULT_ON"],"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":["zswap_store","zswap_load","zswap_invalidate"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"85f5913c147076a6f243f90fe4ccfe1c4da9ea20","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSWAP","ZSWAP_DEFAULT_ON"],"series_id":"3c2fbb6e-3302-4ca8-add4-d89c4ba4213d","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-08-01 13:24:42 +0000 UTC FinishedAt: 2026-08-01 13:26:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*b3d29d30-43ec-4a76-b7a3-c1b47cd16c28,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-workflowlbz84/series-workflowlbz84-build-action-2433624550/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-workflowlbz84[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"85f5913c147076a6f243f90fe4ccfe1c4da9ea20","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSWAP","ZSWAP_DEFAULT_ON"],"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":["zswap_store","zswap_load","zswap_invalidate"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"85f5913c147076a6f243f90fe4ccfe1c4da9ea20","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSWAP","ZSWAP_DEFAULT_ON"],"series_id":"3c2fbb6e-3302-4ca8-add4-d89c4ba4213d","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-08-01 13:26:40 +0000 UTC FinishedAt: 2026-08-01 13:26:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbz84[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"85f5913c147076a6f243f90fe4ccfe1c4da9ea20","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSWAP","ZSWAP_DEFAULT_ON"],"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":["zswap_store","zswap_load","zswap_invalidate"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"85f5913c147076a6f243f90fe4ccfe1c4da9ea20","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSWAP","ZSWAP_DEFAULT_ON"],"series_id":"3c2fbb6e-3302-4ca8-add4-d89c4ba4213d","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-08-01 13:26:40 +0000 UTC FinishedAt: 2026-08-01 13:26:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbz84[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"85f5913c147076a6f243f90fe4ccfe1c4da9ea20","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSWAP","ZSWAP_DEFAULT_ON"],"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":["zswap_store","zswap_load","zswap_invalidate"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"85f5913c147076a6f243f90fe4ccfe1c4da9ea20","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSWAP","ZSWAP_DEFAULT_ON"],"series_id":"3c2fbb6e-3302-4ca8-add4-d89c4ba4213d","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-08-01 13:26:40 +0000 UTC FinishedAt: 2026-08-01 13:42:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbz84[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"85f5913c147076a6f243f90fe4ccfe1c4da9ea20","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSWAP","ZSWAP_DEFAULT_ON"],"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":["zswap_store","zswap_load","zswap_invalidate"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"85f5913c147076a6f243f90fe4ccfe1c4da9ea20","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSWAP","ZSWAP_DEFAULT_ON"],"series_id":"3c2fbb6e-3302-4ca8-add4-d89c4ba4213d","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-08-01 13:26:40 +0000 UTC FinishedAt: 2026-08-01 13:42:29 +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:*03d5f5aa-3a0d-4f49-acf8-b5174ed428fe,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-workflowlbz84/series-workflowlbz84-convert-artifact-2820970823/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": "da87bc65-6f38-40c9-a806-089f195557bf", "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-workflowlbz84/series-workflowlbz84-build-action-2298534091/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlbz84[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"85f5913c147076a6f243f90fe4ccfe1c4da9ea20","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSWAP","ZSWAP_DEFAULT_ON"],"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":["zswap_store","zswap_load","zswap_invalidate"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"85f5913c147076a6f243f90fe4ccfe1c4da9ea20","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSWAP","ZSWAP_DEFAULT_ON"],"series_id":"3c2fbb6e-3302-4ca8-add4-d89c4ba4213d","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-08-01 13:26:40 +0000 UTC FinishedAt: 2026-08-01 13:42:19 +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:*03d5f5aa-3a0d-4f49-acf8-b5174ed428fe,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-workflowlbz84/series-workflowlbz84-convert-artifact-2820970823/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": "da87bc65-6f38-40c9-a806-089f195557bf", "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-workflowlbz84/series-workflowlbz84-build-action-2298534091/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlbz84[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"85f5913c147076a6f243f90fe4ccfe1c4da9ea20","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSWAP","ZSWAP_DEFAULT_ON"],"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":["zswap_store","zswap_load","zswap_invalidate"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"85f5913c147076a6f243f90fe4ccfe1c4da9ea20","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSWAP","ZSWAP_DEFAULT_ON"],"series_id":"3c2fbb6e-3302-4ca8-add4-d89c4ba4213d","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-08-01 13:42:29 +0000 UTC FinishedAt: 2026-08-01 13:42:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbz84[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"85f5913c147076a6f243f90fe4ccfe1c4da9ea20","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSWAP","ZSWAP_DEFAULT_ON"],"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":["zswap_store","zswap_load","zswap_invalidate"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"85f5913c147076a6f243f90fe4ccfe1c4da9ea20","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSWAP","ZSWAP_DEFAULT_ON"],"series_id":"3c2fbb6e-3302-4ca8-add4-d89c4ba4213d","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-08-01 13:42:29 +0000 UTC FinishedAt: 2026-08-01 13:42:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbz84[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"85f5913c147076a6f243f90fe4ccfe1c4da9ea20","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSWAP","ZSWAP_DEFAULT_ON"],"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":["zswap_store","zswap_load","zswap_invalidate"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"85f5913c147076a6f243f90fe4ccfe1c4da9ea20","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSWAP","ZSWAP_DEFAULT_ON"],"series_id":"3c2fbb6e-3302-4ca8-add4-d89c4ba4213d","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-08-01 13:42:29 +0000 UTC FinishedAt: 2026-08-01 13:44:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbz84[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"85f5913c147076a6f243f90fe4ccfe1c4da9ea20","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSWAP","ZSWAP_DEFAULT_ON"],"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":["zswap_store","zswap_load","zswap_invalidate"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"85f5913c147076a6f243f90fe4ccfe1c4da9ea20","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSWAP","ZSWAP_DEFAULT_ON"],"series_id":"3c2fbb6e-3302-4ca8-add4-d89c4ba4213d","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-08-01 13:42:29 +0000 UTC FinishedAt: 2026-08-01 13:44:20 +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:*da87bc65-6f38-40c9-a806-089f195557bf,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-workflowlbz84/series-workflowlbz84-build-action-2298534091/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-workflowlbz84[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"85f5913c147076a6f243f90fe4ccfe1c4da9ea20","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSWAP","ZSWAP_DEFAULT_ON"],"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":["zswap_store","zswap_load","zswap_invalidate"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"85f5913c147076a6f243f90fe4ccfe1c4da9ea20","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSWAP","ZSWAP_DEFAULT_ON"],"series_id":"3c2fbb6e-3302-4ca8-add4-d89c4ba4213d","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-08-01 13:44:30 +0000 UTC FinishedAt: 2026-08-01 13:45:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbz84[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"85f5913c147076a6f243f90fe4ccfe1c4da9ea20","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSWAP","ZSWAP_DEFAULT_ON"],"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":["zswap_store","zswap_load","zswap_invalidate"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"85f5913c147076a6f243f90fe4ccfe1c4da9ea20","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSWAP","ZSWAP_DEFAULT_ON"],"series_id":"3c2fbb6e-3302-4ca8-add4-d89c4ba4213d","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-08-01 13:44:30 +0000 UTC FinishedAt: 2026-08-01 13:45:46 +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":["zswap_store","zswap_load","zswap_invalidate"],"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:*b3d29d30-43ec-4a76-b7a3-c1b47cd16c28,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*da87bc65-6f38-40c9-a806-089f195557bf,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-workflowlbz84/series-workflowlbz84-build-action-2433624550/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-workflowlbz84/series-workflowlbz84-build-action-2298534091/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowlbz84[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"85f5913c147076a6f243f90fe4ccfe1c4da9ea20","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSWAP","ZSWAP_DEFAULT_ON"],"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":["zswap_store","zswap_load","zswap_invalidate"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"85f5913c147076a6f243f90fe4ccfe1c4da9ea20","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSWAP","ZSWAP_DEFAULT_ON"],"series_id":"3c2fbb6e-3302-4ca8-add4-d89c4ba4213d","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-08-01 13:44:30 +0000 UTC FinishedAt: 2026-08-01 13:44:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbz84[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"85f5913c147076a6f243f90fe4ccfe1c4da9ea20","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSWAP","ZSWAP_DEFAULT_ON"],"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":["zswap_store","zswap_load","zswap_invalidate"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"85f5913c147076a6f243f90fe4ccfe1c4da9ea20","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSWAP","ZSWAP_DEFAULT_ON"],"series_id":"3c2fbb6e-3302-4ca8-add4-d89c4ba4213d","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-08-01 13:44:30 +0000 UTC FinishedAt: 2026-08-01 13:44:35 +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":["zswap_store","zswap_load","zswap_invalidate"],"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-workflowlbz84/series-workflowlbz84-convert-artifact-3537834528/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlbz84[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"85f5913c147076a6f243f90fe4ccfe1c4da9ea20","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSWAP","ZSWAP_DEFAULT_ON"],"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":["zswap_store","zswap_load","zswap_invalidate"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"85f5913c147076a6f243f90fe4ccfe1c4da9ea20","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSWAP","ZSWAP_DEFAULT_ON"],"series_id":"3c2fbb6e-3302-4ca8-add4-d89c4ba4213d","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-08-01 13:44:30 +0000 UTC FinishedAt: 2026-08-01 13:44:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbz84[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"85f5913c147076a6f243f90fe4ccfe1c4da9ea20","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSWAP","ZSWAP_DEFAULT_ON"],"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":["zswap_store","zswap_load","zswap_invalidate"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"85f5913c147076a6f243f90fe4ccfe1c4da9ea20","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSWAP","ZSWAP_DEFAULT_ON"],"series_id":"3c2fbb6e-3302-4ca8-add4-d89c4ba4213d","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-08-01 13:44:30 +0000 UTC FinishedAt: 2026-08-01 13:44:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbz84[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"85f5913c147076a6f243f90fe4ccfe1c4da9ea20","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSWAP","ZSWAP_DEFAULT_ON"],"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":["zswap_store","zswap_load","zswap_invalidate"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"85f5913c147076a6f243f90fe4ccfe1c4da9ea20","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSWAP","ZSWAP_DEFAULT_ON"],"series_id":"3c2fbb6e-3302-4ca8-add4-d89c4ba4213d","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-08-01 13:44:30 +0000 UTC FinishedAt: 2026-08-01 13:44:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbz84[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"85f5913c147076a6f243f90fe4ccfe1c4da9ea20","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSWAP","ZSWAP_DEFAULT_ON"],"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":["zswap_store","zswap_load","zswap_invalidate"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"85f5913c147076a6f243f90fe4ccfe1c4da9ea20","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSWAP","ZSWAP_DEFAULT_ON"],"series_id":"3c2fbb6e-3302-4ca8-add4-d89c4ba4213d","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-08-01 13:44:40 +0000 UTC FinishedAt: 2026-08-01 13:45:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbz84[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"85f5913c147076a6f243f90fe4ccfe1c4da9ea20","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSWAP","ZSWAP_DEFAULT_ON"],"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":["zswap_store","zswap_load","zswap_invalidate"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"85f5913c147076a6f243f90fe4ccfe1c4da9ea20","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSWAP","ZSWAP_DEFAULT_ON"],"series_id":"3c2fbb6e-3302-4ca8-add4-d89c4ba4213d","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-08-01 13:44:40 +0000 UTC FinishedAt: 2026-08-01 13:45:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*b3d29d30-43ec-4a76-b7a3-c1b47cd16c28,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*da87bc65-6f38-40c9-a806-089f195557bf,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-workflowlbz84/series-workflowlbz84-build-action-2433624550/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-workflowlbz84/series-workflowlbz84-build-action-2298534091/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-workflowlbz84/series-workflowlbz84-convert-artifact-3537834528/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,}